<?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>205151</bug_id>
          
          <creation_ts>2019-12-11 18:45:04 -0800</creation_ts>
          <short_desc>Refactor ScriptController&apos;s proliferation of ExceptionDetails*</short_desc>
          <delta_ts>2019-12-13 19:13:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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>berto</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1597911</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-11 18:45:04 -0800</bug_when>
    <thetext>Refactor ScriptController&apos;s proliferation of ExceptionDetails

It&apos;s nonsensically everywhere and is getting in the way of upcoming feature work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597936</commentid>
    <comment_count>1</comment_count>
      <attachid>385479</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-11 22:09:58 -0800</bug_when>
    <thetext>Created attachment 385479
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597940</commentid>
    <comment_count>2</comment_count>
      <attachid>385480</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-11 22:32:15 -0800</bug_when>
    <thetext>Created attachment 385480
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598037</commentid>
    <comment_count>3</comment_count>
      <attachid>385507</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-12 09:58:49 -0800</bug_when>
    <thetext>Created attachment 385507
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598051</commentid>
    <comment_count>4</comment_count>
      <attachid>385510</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-12 10:22:57 -0800</bug_when>
    <thetext>Created attachment 385510
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598072</commentid>
    <comment_count>5</comment_count>
      <attachid>385510</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-12-12 10:58:53 -0800</bug_when>
    <thetext>Comment on attachment 385510
Patch

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

&gt; Source/WebCore/bindings/js/ScriptController.cpp:115
&gt; +ValueAndException ScriptController::evaluateInWorld(const ScriptSourceCode&amp; sourceCode, DOMWrapperWorld&amp; world)

It feels like this should return something called ValueOrException (which makes me wonder if the existing ExceptionOr&lt;&gt; class could be used here), since it looks like when an exception is thrown, the value is set to { }. If ExceptionOr&lt;&gt; isn&apos;t quite right, adding an ExceptionDetailsOr&lt;&gt; seems ok, or just using Expected&lt;JSC::JSValue, ExceptionDetails&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598084</commentid>
    <comment_count>6</comment_count>
      <attachid>385519</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-12 11:47:03 -0800</bug_when>
    <thetext>Created attachment 385519
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598085</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-12-12 11:47:54 -0800</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>1598090</commentid>
    <comment_count>8</comment_count>
      <attachid>385522</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-12 11:57:18 -0800</bug_when>
    <thetext>Created attachment 385522
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598094</commentid>
    <comment_count>9</comment_count>
      <attachid>385523</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-12 12:12:41 -0800</bug_when>
    <thetext>Created attachment 385523
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598095</commentid>
    <comment_count>10</comment_count>
      <attachid>385524</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-12 12:20:44 -0800</bug_when>
    <thetext>Created attachment 385524
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598096</commentid>
    <comment_count>11</comment_count>
      <attachid>385525</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-12 12:25:02 -0800</bug_when>
    <thetext>Created attachment 385525
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598109</commentid>
    <comment_count>12</comment_count>
      <attachid>385533</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-12 12:51:32 -0800</bug_when>
    <thetext>Created attachment 385533
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598119</commentid>
    <comment_count>13</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-12 13:31:57 -0800</bug_when>
    <thetext>Finally got past other platform build errors. Now uploading with refreshed changelogs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598121</commentid>
    <comment_count>14</comment_count>
      <attachid>385541</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-12 13:32:23 -0800</bug_when>
    <thetext>Created attachment 385541
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598239</commentid>
    <comment_count>15</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-12 19:40:58 -0800</bug_when>
    <thetext>I don&apos;t think this caused API tests QuotaDelegateReload and MediaCache to fail.

I also can&apos;t identify how this patch would&apos;ve cause the layout test changes the bot is still seeing.

Keeping an eye on it...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598262</commentid>
    <comment_count>16</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-12 22:28:55 -0800</bug_when>
    <thetext>(In reply to Sam Weinig from comment #5)
&gt; Comment on attachment 385510 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=385510&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/ScriptController.cpp:115
&gt; &gt; +ValueAndException ScriptController::evaluateInWorld(const ScriptSourceCode&amp; sourceCode, DOMWrapperWorld&amp; world)
&gt; 
&gt; It feels like this should return something called ValueOrException (which
&gt; makes me wonder if the existing ExceptionOr&lt;&gt; class could be used here),
&gt; since it looks like when an exception is thrown, the value is set to { }.

Sorry I missed this earlier.

The context missing from this standalone is that this is a precursor to a much larger patch that engrains ValueAndException(Details) in a callback.

&gt; ...or just using Expected&lt;JSC::JSValue, ExceptionDetails&gt;

What is this even.

Looking it up now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598266</commentid>
    <comment_count>17</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-12 22:39:02 -0800</bug_when>
    <thetext>(In reply to Brady Eidson from comment #16)
&gt; (In reply to Sam Weinig from comment #5)
&gt; 
&gt; &gt; ...or just using Expected&lt;JSC::JSValue, ExceptionDetails&gt;
&gt; 
&gt; What is this even.
&gt; 
&gt; Looking it up now.

Never seen it before. Can use. 👍</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598276</commentid>
    <comment_count>18</comment_count>
      <attachid>385583</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-12 23:59:41 -0800</bug_when>
    <thetext>Created attachment 385583
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598528</commentid>
    <comment_count>19</comment_count>
      <attachid>385648</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-13 15:28:40 -0800</bug_when>
    <thetext>Created attachment 385648
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598545</commentid>
    <comment_count>20</comment_count>
      <attachid>385653</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-13 16:15:05 -0800</bug_when>
    <thetext>Created attachment 385653
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598595</commentid>
    <comment_count>21</comment_count>
      <attachid>385653</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-13 19:12:19 -0800</bug_when>
    <thetext>Comment on attachment 385653
Patch

Clearing flags on attachment: 385653

Committed r253519: &lt;https://trac.webkit.org/changeset/253519&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598596</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-13 19:12:21 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598598</commentid>
    <comment_count>23</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-13 19:13:24 -0800</bug_when>
    <thetext>&lt;rdar://problem/57933050&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385479</attachid>
            <date>2019-12-11 22:09:58 -0800</date>
            <delta_ts>2019-12-11 22:32:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205151-20191211220958.patch</filename>
            <type>text/plain</type>
            <size>32253</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjU5MGYyYWFjZjNmZTJj
NWE4ZDlkYWUwZjFmOGM4NDY0YTY1MGE3YS4uOWVlZjdkMTFlMzM3NTYzYjA0ODQ2Mjc5Zjk4NGIz
ZjNmMDhmZTRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE5LTEyLTExICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRD
b250cm9sbGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoUmVm
YWN0b3IsIG5vIGJlaGF2aW9yIGNoYW5nZSkuCisgICAgICAgIAorICAgICAgICBUaGVyZSdzIHNv
IG1hbnkgRXhjZXB0aW9uRGV0YWlscyogbnVsbCBwb2ludGVycyBiZWluZyBwYXNzZWQgYXJvdW5k
IGluIHRoZSBTY3JpcHRDb250cm9sbGVyCisgICAgICAgIGZhbWlseSBvZiBmdW5jdGlvbnMuCisg
ICAgICAgIAorICAgICAgICBMZXQncyBtYWtlIGl0IGEgbGl0dGxlIG1vcmUgZXhwbGljaXQgd2hp
Y2ggY2FsbGVycyBnZXQgZXhjZXB0aW9ucyBhbmQgd2hpY2ggZG9uJ3QuCisKKyAgICAgICAgKiBN
b2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW06CisgICAgICAgIChX
ZWJDb3JlOjpRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6ZW5zdXJlUmVwbGFjZW1lbnRTY3Jp
cHRJbmplY3RlZCk6CisgICAgICAgIAorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUpOgor
ICAgICAgICAKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZElnbm9yaW5n
RXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRl
SW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUln
bm9yaW5nRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4
ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhj
ZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJZkph
dmFTY3JpcHRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVh
dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0
ZVNjcmlwdCk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5oOgorICAgICAgICAKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5z
aW9uc0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNv
bnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0NvbnRlbnRSdWxlTGlzdHNGb3JMb2FkKToK
KyAgICAgICAgCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjplbnN1cmVQbHVnSW5zSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAKKyAgICAg
ICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVt
ZW50OjpleGVjdXRlQ2xhc3NpY1NjcmlwdCk6CisgICAgICAgIAorICAgICAgICAqIGh0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpl
bnN1cmVNZWRpYUNvbnRyb2xzSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpldmFsdWF0ZUFzQm9vbGVhbik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpldmFsdWF0ZU9u
TG9hZCk6CisgICAgICAgIAorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkQ2xl
YXJXaW5kb3dPYmplY3RJbldvcmxkKToKKyAgICAgICAgCisgICAgICAgICogbG9hZGVyL0NvbnRl
bnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGlkRGVjaWRl
KToKKyAgICAgICAgCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZTo6aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KToKKyAgICAgICAgCisgICAgICAg
ICogeG1sL1hNTFRyZWVWaWV3ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MVHJlZVZpZXdl
cjo6dHJhbnNmb3JtRG9jdW1lbnRUb1RyZWVWaWV3KToKKwogMjAxOS0xMi0xMSAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFRyeWluZyB0byBzZXQgdG9TdHJpbmcg
LyB2YWx1ZU9mIG9uIGEgY3Jvc3Mtb3JpZ2luIExvY2F0aW9uIG9iamVjdCBzaG91bGQgdGhyb3cg
YSBTZWN1cml0eUVycm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhkNzYyYWQ5YTM4NjgzNDkyNThjMDJjOTYyZjk1
ZmY5M2FmMjU3MzcuLjE0MWU4OGJmZDhkMzEzMjNiYWFjMjQ5MDgxYTQ2NzNjNmI0NTczN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTktMTItMTEgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIFNjcmlwdENvbnRyb2xsZXIncyBwcm9s
aWZlcmF0aW9uIG9mIEV4Y2VwdGlvbkRldGFpbHMqLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MTUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBlcmZvcm1KYXZhU2NyaXB0VVJMUmVx
dWVzdCk6CisgICAgICAgIAorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OmV2YWx1YXRlT3JRdWV1ZUV4cHJlc3Npb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OmV2YWx1YXRl
UXVldWVkRXhwcmVzc2lvbnMpOgorICAgICAgICAKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHQp
OgorCiAyMDE5LTEyLTExICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgYSBuaXQgYWZ0ZXIgcjI1MzM2NgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCmluZGV4IGI5ZGFlMmNlMTBlMDg3MmQzNTMwOGM4YzhjYzYwZGUyMGYyNWY3NzUuLjlj
OGMyNDE3NWEwZTgzNWJhYWEyMmFjOWE4NWQzM2IxZGY4OWNjMWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxOS0xMi0xMSAgQnJhZHkgRWlkc29uICA8
YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgU2NyaXB0Q29udHJvbGxlcidz
IHByb2xpZmVyYXRpb24gb2YgRXhjZXB0aW9uRGV0YWlscyouCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUxNTEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5tbToKKyAgICAgICAgKFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKToK
KyAgICAgICAgKFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphcHBlbmQpOgorICAgICAgICAK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6Zm9yY2VVc2VyR2VzdHVyZTpdKToK
KyAgICAgICAgKC1bV2ViRnJhbWUgX3N0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3Ry
aW5nOndpdGhHbG9iYWxPYmplY3Q6aW5TY3JpcHRXb3JsZDpdKToKKworICAgICAgICAqIFdlYlZp
ZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBhZURlc2NCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0RnJvbVN0cmluZzpdKToKKwogMjAxOS0xMi0wOSAgRXJpYyBDYXJsc29uICA8ZXJpYy5j
YXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgbWVkaWEgaW4gdGhlIEdQVSBwcm9j
ZXNzIHByZWZlcmVuY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lu
cy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQppbmRleCA5ODEyNmUwM2YzZTMy
MTQ3NWY3NTExNDY0MmFkOGQwYjI0OGJhZDIzLi4wM2QyMWRlN2Q1YWMwNjliMmNhYTNkOTYxMWI5
OGY4NGEzNTE3ZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMv
UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCkBAIC0xNTgsNyArMTU4LDcg
QEAgYm9vbCBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6ZW5zdXJlUmVwbGFjZW1lbnRTY3Jp
cHRJbmplY3RlZCgpCiAgICAgaWYgKHJlcGxhY2VtZW50RnVuY3Rpb24uaXNGdW5jdGlvbih2bSkp
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAotICAgIHNjcmlwdENvbnRyb2xsZXIuZXZhbHVh
dGVJbldvcmxkKFNjcmlwdFNvdXJjZUNvZGUocXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRTY3Jp
cHQoKSksIHdvcmxkKTsKKyAgICBzY3JpcHRDb250cm9sbGVyLmV2YWx1YXRlSW5Xb3JsZElnbm9y
aW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUocXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRT
Y3JpcHQoKSksIHdvcmxkKTsKICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7
CiAgICAgICAgIExPRyhQbHVnaW5zLCAiJXAgLSBFeGNlcHRpb24gd2hlbiBldmFsdWF0aW5nIFF1
aWNrVGltZSBwbHVnaW4gcmVwbGFjZW1lbnQgc2NyaXB0IiwgdGhpcyk7CiAgICAgICAgIHNjb3Bl
LmNsZWFyRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY2hlZHVsZWRBY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1
bGVkQWN0aW9uLmNwcAppbmRleCAyOGNmNTY0NjZiY2EzYzljMmQyMDg4OTUxYzk4MDgyZmRiNTFh
ODU2Li44ZTRjN2IzODEyNDRlNzc2YmRkNTgzNGFlNDE5MzZkN2RjYzYyMjhmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKQEAgLTEzNiw3ICsx
MzYsNyBAQCB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZShEb2N1bWVudCYgZG9jdW1lbnQp
CiAgICAgaWYgKG1fZnVuY3Rpb24pCiAgICAgICAgIGV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dCh3
aW5kb3csIHdpbmRvdy0+cHJveHkoKSwgZG9jdW1lbnQpOwogICAgIGVsc2UKLSAgICAgICAgZnJh
bWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJbldvcmxkKG1faXNvbGF0ZWRXb3JsZCwgbV9jb2Rl
KTsKKyAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdF
eGNlcHRpb24obV9pc29sYXRlZFdvcmxkLCBtX2NvZGUpOwogfQogCiB2b2lkIFNjaGVkdWxlZEFj
dGlvbjo6ZXhlY3V0ZShXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGIx
ZmRlODUwMmU0ZGEwYjBmNjlmNDgxNmQ0YTQxMmVjNGVlNGM3M2YuLjkyYTJmYzdkYzMzM2NiY2I1
ZTdjYzc3NDM1MzYwNGVkMzc5YmE4YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0xMDcsNyArMTA3LDEyIEBAIFNjcmlwdENvbnRy
b2xsZXI6On5TY3JpcHRDb250cm9sbGVyKCkKICAgICB9CiB9CiAKLUpTVmFsdWUgU2NyaXB0Q29u
dHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNv
ZGUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIEV4Y2VwdGlvbkRldGFpbHMqIGV4Y2VwdGlvbkRl
dGFpbHMpCitKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkSWdu
b3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRE9NV3Jh
cHBlcldvcmxkJiB3b3JsZCkKK3sKKyAgICByZXR1cm4gZXZhbHVhdGVJbldvcmxkKHNvdXJjZUNv
ZGUsIHdvcmxkKS5maXJzdDsKK30KKworVmFsdWVBbmRFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxl
cjo6ZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERP
TVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0o
KSk7CiAKQEAgLTEzNSwxOSArMTQwLDE5IEBAIEpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZh
bHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPCiAKICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUpOwog
CisgICAgRXhjZXB0aW9uRGV0YWlscyBkZXRhaWxzOwogICAgIGlmIChldmFsdWF0aW9uRXhjZXB0
aW9uKSB7Ci0gICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmZ2xvYmFsT2JqZWN0LCBldmFsdWF0aW9u
RXhjZXB0aW9uLCBzb3VyY2VDb2RlLmNhY2hlZFNjcmlwdCgpLCBleGNlcHRpb25EZXRhaWxzKTsK
LSAgICAgICAgbV9zb3VyY2VVUkwgPSBzYXZlZFNvdXJjZVVSTDsKLSAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZnbG9iYWxPYmplY3QsIGV2YWx1YXRpb25FeGNl
cHRpb24sIHNvdXJjZUNvZGUuY2FjaGVkU2NyaXB0KCksICZkZXRhaWxzKTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSB7IH07CiAgICAgfQogCiAgICAgbV9zb3VyY2VVUkwgPSBzYXZlZFNvdXJjZVVS
TDsKLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgcmV0dXJuIHsgcmV0dXJuVmFsdWUsIGV2
YWx1YXRpb25FeGNlcHRpb24gPyBkZXRhaWxzIDogV1RGOjpudWxsb3B0IH07CiB9CiAKLUpTVmFs
dWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291
cmNlQ29kZSwgRXhjZXB0aW9uRGV0YWlscyogZXhjZXB0aW9uRGV0YWlscykKK0pTQzo6SlNWYWx1
ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlw
dFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCiB7Ci0gICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChz
b3VyY2VDb2RlLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgZXhjZXB0aW9uRGV0YWlscyk7Cisg
ICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKHNvdXJjZUNvZGUsIG1h
aW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKIH0KIAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjpsb2Fk
TW9kdWxlU2NyaXB0SW5Xb3JsZChMb2FkYWJsZU1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0LCBj
b25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYgdG9w
TGV2ZWxGZXRjaFBhcmFtZXRlcnMsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCkBAIC01NDgsNyAr
NTUzLDEyIEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJTY3JpcHRPYmplY3RzKCkKICNl
bmRpZgogfQogCi1KU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxk
KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNl
VXNlckdlc3R1cmUsIEV4Y2VwdGlvbkRldGFpbHMqIGV4Y2VwdGlvbkRldGFpbHMpCitKU0M6OkpT
VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2Vw
dGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBm
b3JjZVVzZXJHZXN0dXJlKQoreworICAgIHJldHVybiBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3Js
ZCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlKS5maXJzdDsKK30KKworVmFsdWVBbmRFeGNlcHRp
b24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxk
JiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKIHsK
ICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGZvcmNlVXNlckdlc3R1
cmUgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlKSA6IFdURjo6bnVsbG9wdCk7CiAgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2Rl
KHNjcmlwdCwgVVJMKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpLCBUZXh0UG9zaXRpb24oKSwg
SlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIENhY2hlZFNjcmlwdEZldGNo
ZXI6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmNoYXJzZXQoKSkpOwpAQCAtNTU2LDE3ICs1
NjYsMTcgQEAgSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChE
T01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHIKICAgICBpZiAoIWNhbkV4ZWN1dGVTY3Jp
cHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNlZCgpKQogICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3b3JsZCwgZXhj
ZXB0aW9uRGV0YWlscyk7CisgICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3
b3JsZCk7CiB9CiAKLUpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNj
cmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQs
IGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgRXhjZXB0aW9uRGV0YWlscyogZXhjZXB0aW9uRGV0YWls
cykKK1ZhbHVlQW5kRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRT
Y3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0
LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiB7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqbV9mcmFt
ZS5kb2N1bWVudCgpOwogICAgIGlmICghc2hvdWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRzKGRvY3Vt
ZW50KSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGRvY3VtZW50LnNldEhhc0V2YWx1YXRl
ZFVzZXJBZ2VudFNjcmlwdHMoKTsKLSAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdEluV29ybGQod29y
bGQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgZXhjZXB0aW9uRGV0YWlscyk7CisgICAgcmV0
dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUp
OwogfQogCiBib29sIFNjcmlwdENvbnRyb2xsZXI6OnNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0
cyhEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CkBAIC01OTgsMTQgKzYwOCwxMCBAQCBib29sIFNj
cmlwdENvbnRyb2xsZXI6OmNhbkV4ZWN1dGVTY3JpcHRzKFJlYXNvbkZvckNhbGxpbmdDYW5FeGVj
dXRlU2NyaXB0cyByZWFzbwogICAgIHJldHVybiBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmFs
bG93U2NyaXB0KG1fZnJhbWUuc2V0dGluZ3MoKS5pc1NjcmlwdEVuYWJsZWQoKSk7CiB9CiAKLUpT
VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlw
dCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBFeGNlcHRpb25EZXRhaWxzKiBleGNlcHRpb25EZXRh
aWxzKQorSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJZ25vcmlu
Z0V4Y2VwdGlvbihjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQog
ewogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoZm9yY2VVc2VyR2Vz
dHVyZSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNl
ckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KTsKLSAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdChTY3Jp
cHRTb3VyY2VDb2RlKHNjcmlwdCwgVVJMKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpLCBUZXh0
UG9zaXRpb24oKSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIENhY2hl
ZFNjcmlwdEZldGNoZXI6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmNoYXJzZXQoKSkpLCBl
eGNlcHRpb25EZXRhaWxzKTsKLX0KIAotSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRl
U2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIEV4Y2VwdGlvbkRldGFp
bHMqIGV4Y2VwdGlvbkRldGFpbHMpCi17CiAgICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0cyhBYm91
dFRvRXhlY3V0ZVNjcmlwdCkgfHwgaXNQYXVzZWQoKSkKICAgICAgICAgcmV0dXJuIHsgfTsgLy8g
RklYTUU6IFdvdWxkIGpzTnVsbCBiZSBiZXR0ZXI/CiAKQEAgLTYxMyw3ICs2MTksNyBAQCBKU1Zh
bHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYgc291cmNlQ29kZSwgRXhjZQogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjQ3NjMKICAgICBSZWY8RnJhbWU+IHByb3RlY3RvcihtX2ZyYW1lKTsgLy8g
U2NyaXB0IGV4ZWN1dGlvbiBjYW4gZGVzdHJveSB0aGUgZnJhbWUsIGFuZCB0aHVzIHRoZSBTY3Jp
cHRDb250cm9sbGVyLgogCi0gICAgcmV0dXJuIGV2YWx1YXRlKHNvdXJjZUNvZGUsIGV4Y2VwdGlv
bkRldGFpbHMpOworICAgIHJldHVybiBldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNv
dXJjZUNvZGUoc2NyaXB0LCBVUkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSksIFRleHRQb3Np
dGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgQ2FjaGVkU2Ny
aXB0RmV0Y2hlcjo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2hhcnNldCgpKSkpOwogfQog
CiBib29sIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29uc3QgVVJM
JiB1cmwsIFNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCBzaG91bGRSZXBsYWNl
RG9jdW1lbnRJZkphdmFTY3JpcHRVUkwpCkBAIC02MzIsNyArNjM4LDcgQEAgYm9vbCBTY3JpcHRD
b250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYgdXJsLCBTaG91bGRS
ZXBsYWNlRG9jdW0KICAgICBjb25zdCBpbnQgamF2YXNjcmlwdFNjaGVtZUxlbmd0aCA9IHNpemVv
ZigiamF2YXNjcmlwdDoiKSAtIDE7CiAKICAgICBTdHJpbmcgZGVjb2RlZFVSTCA9IGRlY29kZVVS
TEVzY2FwZVNlcXVlbmNlcyh1cmwuc3RyaW5nKCkpOwotICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0
ZVNjcmlwdChkZWNvZGVkVVJMLnN1YnN0cmluZyhqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoKSk7Cisg
ICAgYXV0byByZXN1bHQgPSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oZGVjb2RlZFVS
TC5zdWJzdHJpbmcoamF2YXNjcmlwdFNjaGVtZUxlbmd0aCkpOwogCiAgICAgLy8gSWYgZXhlY3V0
aW5nIHNjcmlwdCBjYXVzZWQgdGhpcyBmcmFtZSB0byBiZSByZW1vdmVkIGZyb20gdGhlIHBhZ2Us
IHdlCiAgICAgLy8gZG9uJ3Qgd2FudCB0byB0cnkgdG8gcmVwbGFjZSBpdHMgZG9jdW1lbnQhCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggMTMy
NzRhNWQxY2Y2ZDUyYjRhMjZlYzQ4ZGI1MDBhYmZmZTMzZWQ2Yi4uYjhiMjliMTg4YzhiOTIwOTk1
ZmFjNzFkYjFlODQwOTUyODYyODMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuaApAQCAtNzAsNiArNzAsOCBAQCBlbnVtIFJlYXNvbkZvckNhbGxp
bmdDYW5FeGVjdXRlU2NyaXB0cyB7CiAgICAgTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQKIH07CiAK
K3VzaW5nIFZhbHVlQW5kRXhjZXB0aW9uID0gc3RkOjpwYWlyPEpTQzo6SlNWYWx1ZSwgV1RGOjpP
cHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPj47CisKIGNsYXNzIFNjcmlwdENvbnRyb2xsZXIgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8U2NyaXB0Q29udHJvbGxlcj4gewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogCkBAIC04OCwxMCArOTAsMTAgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IHZvaWQgZ2V0QWxsV29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4mKTsKIAotICAg
IEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBFeGNl
cHRpb25EZXRhaWxzKiA9IG51bGxwdHIpOwotICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1
ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1
cmUgPSBmYWxzZSwgRXhjZXB0aW9uRGV0YWlscyogPSBudWxscHRyKTsKLSAgICBKU0M6OkpTVmFs
dWUgZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBz
Y3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlLCBFeGNlcHRpb25EZXRhaWxzKiA9
IG51bGxwdHIpOwotICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlVXNlckFn
ZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlLCBFeGNlcHRpb25EZXRhaWxzKiA9IG51bGxwdHIpOworICAg
IFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRp
b24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsK
KyAgICBKU0M6OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihE
T01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0
dXJlID0gZmFsc2UpOworICAgIFZhbHVlQW5kRXhjZXB0aW9uIGV4ZWN1dGVTY3JpcHRJbldvcmxk
KERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdl
c3R1cmUgPSBmYWxzZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgVmFsdWVBbmRFeGNlcHRpb24gZXhl
Y3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5n
JiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSk7CiAKICAgICBib29sIHNob3VsZEFsbG93
VXNlckFnZW50U2NyaXB0cyhEb2N1bWVudCYpIGNvbnN0OwogCkBAIC0xMDIsOCArMTA0LDkgQEAg
cHVibGljOgogICAgIC8vIERhcndpbiBpcyBhbiBleGNlcHRpb24gdG8gdGhpcyBydWxlOiBpdCBp
cyBPSyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSBhbnkgdGhyZWFkLCBldmVuIHJlZW50cmFu
dGx5LgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAotICAgIEpTQzo6
SlNWYWx1ZSBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRXhjZXB0aW9uRGV0YWls
cyogPSBudWxscHRyKTsKLSAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNj
cmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmLCBFeGNlcHRpb25EZXRhaWxzKiA9IG51
bGxwdHIpOworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKGNvbnN0
IFNjcmlwdFNvdXJjZUNvZGUmKTsKKyAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJbldvcmxkSWdu
b3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYp
OworICAgIFZhbHVlQW5kRXhjZXB0aW9uIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3Vy
Y2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7CiAKICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJ
bldvcmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBS
ZWY8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiYmLCBET01XcmFwcGVyV29ybGQmKTsKICAgICB2b2lk
IGxvYWRNb2R1bGVTY3JpcHQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcmIG1v
ZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFj
a2VuZC5jcHAKaW5kZXggYTc1NWZjYjkzY2ExMjIyMjhlNzJhNDU5NDhlZmI0MTA0MmNmMTVkNy4u
NTJmMzE5MmM1YjIwMDJmNTE4MzhhNzQ0OTI4N2I2ZWU4MGEzNTczZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgQ29udGVudFJ1bGVMaXN0UmVzdWx0cyBD
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50UnVsZUxpc3RzRm9yTG9hZCgK
ICAgICAgICAgICAgICAgICAmJiAoKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHVybC5o
b3N0KCksICJ3d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20iKSAmJiBlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZSh1cmwucGF0aCgpLCAiL2FuYWx5dGljcy5qcyIpKQogICAgICAgICAgICAgICAg
ICAgICB8fCAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodXJsLmhvc3QoKSwgInd3dy5n
b29nbGV0YWdtYW5hZ2VyLmNvbSIpICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHVy
bC5wYXRoKCksICIvZ3RtLmpzIikpKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBmcmFt
ZSA9IGN1cnJlbnREb2N1bWVudC0+ZnJhbWUoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUt
PnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUgeyAidHJ5IHsgd2luZG93LmRhdGFM
YXllci5oaWRlLmVuZCgpOyBjb25zb2xlLmxvZygnQ2FsbGVkIHdpbmRvdy5kYXRhTGF5ZXIuaGlk
ZS5lbmQoKSBpbiBmcmFtZSAnICsgZG9jdW1lbnQuVVJMICsgJyBiZWNhdXNlIHRoZSBjb250ZW50
IGJsb2NrZXIgYmxvY2tlZCB0aGUgbG9hZCBvZiB0aGUgaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5
dGljcy5jb20vYW5hbHl0aWNzLmpzIHNjcmlwdCcpOyB9IGNhdGNoIChlKSB7IH0iX3MgfSk7Cisg
ICAgICAgICAgICAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZUlnbm9yaW5nRXhjZXB0
aW9uKFNjcmlwdFNvdXJjZUNvZGUgeyAidHJ5IHsgd2luZG93LmRhdGFMYXllci5oaWRlLmVuZCgp
OyBjb25zb2xlLmxvZygnQ2FsbGVkIHdpbmRvdy5kYXRhTGF5ZXIuaGlkZS5lbmQoKSBpbiBmcmFt
ZSAnICsgZG9jdW1lbnQuVVJMICsgJyBiZWNhdXNlIHRoZSBjb250ZW50IGJsb2NrZXIgYmxvY2tl
ZCB0aGUgbG9hZCBvZiB0aGUgaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0
aWNzLmpzIHNjcmlwdCcpOyB9IGNhdGNoIChlKSB7IH0iX3MgfSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBmM2Y3ZjAzMmYyMGUx
YTVhM2YzYzhmMTNkMjI3MDk5ZjViODJiMWU5Li4xN2VkYzhiYzU4MmYzNjc0N2M3YmM0NGFiZTlk
ZDVhNGJmMGNiZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTcyMDEsNyArNzIwMSw3
IEBAIHZvaWQgRG9jdW1lbnQ6OmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdChET01XcmFwcGVy
V29ybGQmIHdvcmxkKQogICAgICAgICBqc1N0cmluZyA9IFN0cmluZyhwbHVnSW5zSmF2YVNjcmlw
dCwgc2l6ZW9mKHBsdWdJbnNKYXZhU2NyaXB0KSk7CiAKICAgICBzZXRIYXNFdmFsdWF0ZWRVc2Vy
QWdlbnRTY3JpcHRzKCk7Ci0gICAgc2NyaXB0Q29udHJvbGxlci5ldmFsdWF0ZUluV29ybGQoU2Ny
aXB0U291cmNlQ29kZShqc1N0cmluZyksIHdvcmxkKTsKKyAgICBzY3JpcHRDb250cm9sbGVyLmV2
YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUoanNTdHJpbmcp
LCB3b3JsZCk7CiAKICAgICBtX2hhc0luamVjdGVkUGx1Z0luc1NjcmlwdCA9IHRydWU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggZTBkOTY3YjQ1NzRiYjM1MzA4NWZi
Mzc3NjUwOTRjYzJmOGEzNTM4NS4uMTUxMTc1MTllZjkxMzQ2NzY3N2QyNTg2NTNjZDI3MjAxNzdl
ODA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMzg3LDcgKzM4Nyw3
IEBAIHZvaWQgU2NyaXB0RWxlbWVudDo6ZXhlY3V0ZUNsYXNzaWNTY3JpcHQoY29uc3QgU2NyaXB0
U291cmNlQ29kZSYgc291cmNlQ29kZSkKICAgICBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJ
bmNyZW1lbnRlciBpZ25vcmVEZXNjdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIobV9pc0V4
dGVybmFsU2NyaXB0ID8gJmRvY3VtZW50IDogbnVsbHB0cik7CiAgICAgQ3VycmVudFNjcmlwdElu
Y3JlbWVudGVyIGN1cnJlbnRTY3JpcHRJbmNyZW1lbnRlcihkb2N1bWVudCwgbV9lbGVtZW50KTsK
IAotICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZShzb3VyY2VDb2RlKTsKKyAgICBmcmFtZS0+
c2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihzb3VyY2VDb2RlKTsKIH0KIAogdm9p
ZCBTY3JpcHRFbGVtZW50OjpleGVjdXRlTW9kdWxlU2NyaXB0KExvYWRhYmxlTW9kdWxlU2NyaXB0
JiBsb2FkYWJsZU1vZHVsZVNjcmlwdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCmluZGV4IGViNWZmNTY3ZWQ4MTBkZmMxODUxMDY4MDMyOTNhMmQ1NjRjZTIzNDkuLjcz
MGI0ZTM4OWU3ODNmZTU2Njc1NWI4YWMzNjg4MTE5ZjA5NjkxNjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNzMxNyw3ICs3MzE3LDcgQEAgYm9vbCBIVE1M
TWVkaWFFbGVtZW50OjplbnN1cmVNZWRpYUNvbnRyb2xzSW5qZWN0ZWRTY3JpcHQoKQogI2Vsc2UK
ICAgICAgICAgVVJMIHNjcmlwdFVSTDsKICNlbmRpZgotICAgICAgICBzY3JpcHRDb250cm9sbGVy
LmV2YWx1YXRlSW5Xb3JsZChTY3JpcHRTb3VyY2VDb2RlKG1lZGlhQ29udHJvbHNTY3JpcHQsIFdU
Rk1vdmUoc2NyaXB0VVJMKSksIHdvcmxkKTsKKyAgICAgICAgc2NyaXB0Q29udHJvbGxlci5ldmFs
dWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKG1lZGlhQ29udHJv
bHNTY3JpcHQsIFdURk1vdmUoc2NyaXB0VVJMKSksIHdvcmxkKTsKICAgICAgICAgaWYgKFVOTElL
RUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRp
b24oKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAppbmRleCAx
YjNjODg3NmNjNjg3MzFiNWQ2MjhkZDJkZTJiOWQ2MDRmMmE0NWZiLi4wZDgzMTkyNTI3ODJkYTk1
YTcyZWQzNmNhNWYwNDhjN2NkOGM4NDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC00MjAsNyAr
NDIwLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpkaXNwYXRjaE1lc3Nh
Z2VBc3luYyhjb25zdCBTdHJpbmcmIG1lc3NhZ2VPYmoKIGJvb2wgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbDo6ZXZhbHVhdGVBc0Jvb2xlYW4oY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQog
ewogICAgIGF1dG8mIHN0YXRlID0gKm1haW5Xb3JsZEV4ZWNTdGF0ZSgmbV9mcm9udGVuZFBhZ2Ut
Pm1haW5GcmFtZSgpKTsKLSAgICByZXR1cm4gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnNj
cmlwdCgpLmV4ZWN1dGVTY3JpcHQoZXhwcmVzc2lvbikudG9XVEZTdHJpbmcoJnN0YXRlKSA9PSAi
dHJ1ZSI7CisgICAgcmV0dXJuIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5l
eGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oZXhwcmVzc2lvbikudG9XVEZTdHJpbmcoJnN0
YXRlKSA9PSAidHJ1ZSI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6
ZXZhbHVhdGVPbkxvYWQoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQpAQCAtNDMxLDcgKzQzMSw3
IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVhdGVPbkxvYWQoY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uKQogICAgIH0KIAogICAgIEpTQzo6U3VzcGVuZEV4Y2VwdGlv
blNjb3BlIHNjb3BlKCZtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnZtKCkp
OwotICAgIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5ldmFsdWF0ZShTY3Jp
cHRTb3VyY2VDb2RlKGV4cHJlc3Npb24pKTsKKyAgICBtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1l
KCkuc2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKGV4
cHJlc3Npb24pKTsKIH0KIAogUGFnZSogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6aW5z
cGVjdGVkUGFnZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggMDFlZGQwMDYwZGUzNjJjMWFiN2I3
MDI0NzVhZTgzODIyMjc5YTgwMC4uY2Y4OWY5ZWI1MDUyMzI2ZmNmOGNiZDI2ZDg1OTZjZjQ3MjRj
MjM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcApAQCAtNzczLDcgKzc3Myw3IEBAIHZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUmIGZyYW1lKQogICAgIGlm
IChtX2Jvb3RzdHJhcFNjcmlwdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZy
YW1lLnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUobV9ib290c3RyYXBTY3JpcHQs
IFVSTCB7IFVSTCgpLCAid2ViLWluc3BlY3RvcjovL2Jvb3RzdHJhcC5qcyJfcyB9KSk7CisgICAg
ZnJhbWUuc2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2Rl
KG1fYm9vdHN0cmFwU2NyaXB0LCBVUkwgeyBVUkwoKSwgIndlYi1pbnNwZWN0b3I6Ly9ib290c3Ry
YXAuanMiX3MgfSkpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkUGFpbnQoUmVu
ZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCBiNDk4YTIyNGIxOTBjNmNlODQ0ZWI5ZGQ3
ZWI5YjdhMTA1ZDc2ZGM1Li42ZWFmY2EzNGU4MWEzOTkyZGQxZmI4MGY5MDMyZWI5NmM4YjliNzc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMz
LDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUgc3RhdGUpCiAgICAgaWYg
KCF1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUpIHsKICAgICAg
ICAgdW5ibG9ja0hhbmRsZXIud3JhcFdpdGhEZWNpc2lvbkhhbmRsZXIoW3NjcmlwdENvbnRyb2xs
ZXIgPSBtYWtlV2Vha1B0cihmcmFtZS0+c2NyaXB0KCkpLCBzY3JpcHQgPSB1bmJsb2NrUmVxdWVz
dERlbmllZFNjcmlwdC5pc29sYXRlZENvcHkoKV0oYm9vbCB1bmJsb2NrZWQpIHsKICAgICAgICAg
ICAgIGlmICghdW5ibG9ja2VkICYmIHNjcmlwdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAg
c2NyaXB0Q29udHJvbGxlci0+ZXhlY3V0ZVNjcmlwdChzY3JpcHQpOworICAgICAgICAgICAgICAg
IHNjcmlwdENvbnRyb2xsZXItPmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihzY3JpcHQp
OwogICAgICAgICB9KTsKICAgICB9CiAgICAgbV9kb2N1bWVudExvYWRlci5mcmFtZUxvYWRlcigp
LT5jbGllbnQoKS5jb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdURk1vdmUodW5ibG9ja0hhbmRs
ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggMjJjYzFmZDE1YmMxN2NmZDg1NmU5MTRjMzhh
ODZiMGM0MmFjNzRiYy4uZTA4MzNkYzA4MzNmNTlhOWViMjYzNTA2MTMxY2RiYjk3YzlmOTIxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTYzNCw3ICs2MzQsNyBAQCB2b2lkIEZyYW1lOjppbmpl
Y3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgVXNl
clNjcmlwdAogCiAgICAgZG9jdW1lbnQtPnNldEFzUnVubmluZ1VzZXJTY3JpcHRzKCk7CiAgICAg
bG9hZGVyKCkuY2xpZW50KCkud2lsbEluamVjdFVzZXJTY3JpcHQod29ybGQpOwotICAgIG1fc2Ny
aXB0LT5ldmFsdWF0ZUluV29ybGQoU2NyaXB0U291cmNlQ29kZShzY3JpcHQuc291cmNlKCksIFVS
TChzY3JpcHQudXJsKCkpKSwgd29ybGQpOworICAgIG1fc2NyaXB0LT5ldmFsdWF0ZUluV29ybGRJ
Z25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdC5zb3VyY2UoKSwgVVJMKHNj
cmlwdC51cmwoKSkpLCB3b3JsZCk7CiB9CiAKIFJlbmRlclZpZXcqIEZyYW1lOjpjb250ZW50UmVu
ZGVyZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCmluZGV4IGZlMDFj
YzFmZjQ5MWMzNjdmY2FkOTdiZmQ0ZDZjNGU3MzBmNmJkYTguLmY5MGU0NDUyNGQ1ZGEzNzY2MmNj
MmRkNTVmNDIxZjI4OTc3YjQyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxU
cmVlVmlld2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAK
QEAgLTU2LDggKzU2LDggQEAgdm9pZCBYTUxUcmVlVmlld2VyOjp0cmFuc2Zvcm1Eb2N1bWVudFRv
VHJlZVZpZXcoKQogICAgIG1fZG9jdW1lbnQuc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJp
dHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpKTsK
IAogICAgIFN0cmluZyBzY3JpcHRTdHJpbmcgPSBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29w
eWluZyhYTUxWaWV3ZXJfanMsIHNpemVvZihYTUxWaWV3ZXJfanMpKTsKLSAgICBtX2RvY3VtZW50
LmZyYW1lKCktPnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0U3RyaW5n
KSk7Ci0gICAgbV9kb2N1bWVudC5mcmFtZSgpLT5zY3JpcHQoKS5ldmFsdWF0ZShTY3JpcHRTb3Vy
Y2VDb2RlKEF0b21TdHJpbmcoInByZXBhcmVXZWJLaXRYTUxWaWV3ZXIoJ1RoaXMgWE1MIGZpbGUg
ZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUgYW55IHN0eWxlIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQg
d2l0aCBpdC4gVGhlIGRvY3VtZW50IHRyZWUgaXMgc2hvd24gYmVsb3cuJyk7IikpKTsKKyAgICBt
X2RvY3VtZW50LmZyYW1lKCktPnNjcmlwdCgpLmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2Ny
aXB0U291cmNlQ29kZShzY3JpcHRTdHJpbmcpKTsKKyAgICBtX2RvY3VtZW50LmZyYW1lKCktPnNj
cmlwdCgpLmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29kZShBdG9tU3Ry
aW5nKCJwcmVwYXJlV2ViS2l0WE1MVmlld2VyKCdUaGlzIFhNTCBmaWxlIGRvZXMgbm90IGFwcGVh
ciB0byBoYXZlIGFueSBzdHlsZSBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggaXQuIFRoZSBk
b2N1bWVudCB0cmVlIGlzIHNob3duIGJlbG93LicpOyIpKSk7CiAKICAgICBTdHJpbmcgY3NzU3Ry
aW5nID0gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoWE1MVmlld2VyX2Nzcywgc2l6
ZW9mKFhNTFZpZXdlcl9jc3MpKTsKICAgICBhdXRvIHRleHQgPSBtX2RvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKGNzc1N0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCmluZGV4IDg4ZTEzYWQ4MmFkY2VjNGZiZWU2ODVmMmM3YmU0NTk4Zjhk
NGNiYmYuLjNlYTAwNmIzY2UzOGUzODk0MWZkYmQ1ODY3M2NkODFhNjgyYzI1MzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xMjUz
LDcgKzEyNTMsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1KYXZhU2NyaXB0VVJMUmVxdWVz
dChVUkxSZXF1ZXN0KiByZXF1ZXN0KQogICAgIC8vIEV2YWx1YXRlIHRoZSBKYXZhU2NyaXB0IGNv
ZGUuIE5vdGUgdGhhdCBydW5uaW5nIEphdmFTY3JpcHQgaGVyZSBjb3VsZCBjYXVzZSB0aGUgcGx1
Zy1pbiB0byBiZSBkZXN0cm95ZWQsIHNvIHdlCiAgICAgLy8gZ3JhYiByZWZlcmVuY2VzIHRvIHRo
ZSBwbHVnLWluIGhlcmUuCiAgICAgUmVmUHRyPFBsdWdpbj4gcGx1Z2luID0gbV9wbHVnaW47Ci0g
ICAgYXV0byByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChqc1N0cmluZywg
cmVxdWVzdC0+YWxsb3dQb3B1cHMoKSk7CisgICAgYXV0byByZXN1bHQgPSBmcmFtZS0+c2NyaXB0
KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGpzU3RyaW5nLCByZXF1ZXN0LT5hbGxv
d1BvcHVwcygpKTsKIAogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JGcm9udGVu
ZEFQSURpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcAppbmRleCA5MDhlMzlhZmRiMGM4ODlj
ZmU1NjUyYjM5YWRjNDcwYzNhMDlhOWEyLi5jMTg5ZTk4MjVhZDQ5NDcwZWQ2MjQzNWU4NmQ1OWRm
NjBmMzhhZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAK
QEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6
OmV2YWx1YXRlT3JRdWV1ZUV4cHJlc3Npb24oY29uc3QgU3RyaW5nJgogCiAgICAgQVNTRVJUKG1f
cXVldWUuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQoIW1fcGFnZS5jb3JlUGFnZSgpLT5tYWluRnJh
bWUoKS5zY3JpcHQoKS5pc1BhdXNlZCgpKTsKLSAgICBtX3BhZ2UuY29yZVBhZ2UoKS0+bWFpbkZy
YW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChleHByZXNzaW9uKTsKKyAgICBtX3BhZ2UuY29y
ZVBhZ2UoKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0
aW9uKGV4cHJlc3Npb24pOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0
Y2hlcjo6ZXZhbHVhdGVRdWV1ZWRFeHByZXNzaW9ucygpCkBAIC0xMDksNyArMTA5LDcgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OmV2YWx1YXRlUXVldWVkRXhwcmVz
c2lvbnMoKQogCiAgICAgZm9yIChjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24gOiBtX3F1ZXVlKSB7
CiAgICAgICAgIEFTU0VSVCghbV9wYWdlLmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnNjcmlwdCgp
LmlzUGF1c2VkKCkpOwotICAgICAgICBtX3BhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuc2Ny
aXB0KCkuZXhlY3V0ZVNjcmlwdChleHByZXNzaW9uKTsKKyAgICAgICAgbV9wYWdlLmNvcmVQYWdl
KCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihl
eHByZXNzaW9uKTsKICAgICB9CiAKICAgICBtX3F1ZXVlLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDczNWZlYTRlZTEzYmU0MjVj
MjM0YmU5MjEyMGZlOWU3YmNhMmQ1YzcuLmIwNWVhNjI3NmQ4MzcwMDgyMjZiOWVjYzJiYjNlNjQw
MTkxNGQ0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC0zMzU1LDIxICszMzU1LDIyIEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChX
ZWJGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlCiAKICAg
ICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkUmVzdWx0VmFsdWU7CiAg
ICAgSlNMb2NrSG9sZGVyIGxvY2soY29tbW9uVk0oKSk7Ci0gICAgYm9vbCBoYWRFeGNlcHRpb24g
PSB0cnVlOwotICAgIEV4Y2VwdGlvbkRldGFpbHMgZGV0YWlsczsKKyAgICBWYWx1ZUFuZEV4Y2Vw
dGlvbiByZXN1bHQ7CisKICAgICBhdXRvKiB3b3JsZCA9IHdvcmxkTmFtZSA/IEluamVjdGVkQnVu
ZGxlU2NyaXB0V29ybGQ6OmZpbmQod29ybGROYW1lLnZhbHVlKCkpIDogJkluamVjdGVkQnVuZGxl
U2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCk7CiAgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5jb3Jl
RnJhbWUoKSAmJiB3b3JsZCkgewotICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHRWYWx1ZSA9IGZy
YW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQo
d29ybGQtPmNvcmVXb3JsZCgpLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsICZkZXRhaWxzKSkg
ewotICAgICAgICAgICAgaGFkRXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIHJlc3VsdCA9IGZy
YW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQo
d29ybGQtPmNvcmVXb3JsZCgpLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUpOworICAgICAgICBp
ZiAocmVzdWx0LmZpcnN0KSB7CisgICAgICAgICAgICBBU1NFUlQoIXJlc3VsdC5zZWNvbmQpOwog
ICAgICAgICAgICAgc2VyaWFsaXplZFJlc3VsdFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpjcmVhdGUoZnJhbWUtPmpzQ29udGV4dEZvcldvcmxkKHdvcmxkKSwKLSAgICAgICAgICAgICAg
ICB0b1JlZihmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3b3JsZC0+
Y29yZVdvcmxkKCkpLCByZXN1bHRWYWx1ZSksIG51bGxwdHIpOworICAgICAgICAgICAgICAgIHRv
UmVmKGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkLT5jb3Jl
V29ybGQoKSksIHJlc3VsdC5maXJzdCksIG51bGxwdHIpOwogICAgICAgICB9CiAgICAgfQogCiAg
ICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CiAgICAgaWYgKHNlcmlhbGl6ZWRS
ZXN1bHRWYWx1ZSkKICAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHNlcmlhbGl6ZWRSZXN1bHRWYWx1
ZS0+ZGF0YSgpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVD
YWxsYmFjayhkYXRhUmVmZXJlbmNlLCBoYWRFeGNlcHRpb24sIGRldGFpbHMsIGNhbGxiYWNrSUQp
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2so
ZGF0YVJlZmVyZW5jZSwgKGJvb2wpcmVzdWx0LnNlY29uZCwgKihyZXN1bHQuc2Vjb25kKSwgY2Fs
bGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNj
cmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIGNv
bnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tCmluZGV4IDk0N2JmYzUzNDJjYmNhYzA5YWFhZjUxMmNjZGI2
ZGZlOWNiMWNhNDEuLmVhNTA3OGVkMThmNTUwNTJkZjJlNDI4MTNlMmE2ZjcwODU1Y2U3Y2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTM3OSw3ICszNzksNyBAQCB2b2lkIFdlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25z
dCBTdHJpbmcmCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgW2NvbnRlbnRDb3B5IHdyaXRl
VG9VUkw6YWN0dWFsVVJMIGF0b21pY2FsbHk6WUVTIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29k
aW5nIGVycm9yOk5VTExdOwogCi0gICAgICAgIGNvcmUoW21fZnJvbnRlbmRXaW5kb3dDb250cm9s
bGVyIGZyb250ZW5kV2ViVmlld10pLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0
KFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuc2F2ZWRV
UkwoXCIlQFwiKSIsIGFjdHVhbFVSTC5hYnNvbHV0ZVN0cmluZ10pOworICAgICAgICBjb3JlKFtt
X2Zyb250ZW5kV2luZG93Q29udHJvbGxlciBmcm9udGVuZFdlYlZpZXddKS0+bWFpbkZyYW1lKCku
c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuc2F2ZWRVUkwoXCIlQFwiKSIsIGFjdHVh
bFVSTC5hYnNvbHV0ZVN0cmluZ10pOwogICAgIH07CiAKICAgICBpZiAoIWZvcmNlU2F2ZURpYWxv
ZykgewpAQCAtNDI1LDcgKzQyNSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6
OmFwcGVuZChjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nCiAgICAgW2hh
bmRsZSB3cml0ZURhdGE6W2NvbnRlbnQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddXTsKICAgICBbaGFuZGxlIGNsb3NlRmlsZV07CiAKLSAgICBjb3JlKFttX2Zyb250ZW5k
V2luZG93Q29udHJvbGxlciBmcm9udGVuZFdlYlZpZXddKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCku
ZXhlY3V0ZVNjcmlwdChbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3BlY3RvckZyb250
ZW5kQVBJLmFwcGVuZGVkVG9VUkwoXCIlQFwiKSIsIFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmdd
XSk7CisgICAgY29yZShbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIgZnJvbnRlbmRXZWJWaWV3
XSktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3BlY3RvckZyb250ZW5kQVBJLmFwcGVuZGVk
VG9VUkwoXCIlQFwiKSIsIFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddXSk7CiB9CiAKIC8vIE1B
Uks6IC0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4
IDE4ZDNkOWVjMTRkOGM2OTVkMDNmOTNjM2RkMjAxNmFkNDA5NGE0NTguLjA1YjU2OTMwNDM2NGI0
OTY5NzFkODlkZDk3ZmY4ZGUyY2Y0NTY3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtNzAwLDcgKzcwMCw3IEBAIC0gKE5TU3RyaW5nICopX3N0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBm
b3JjZVVzCiAgICAgSlNDOjpKU0xvY2tIb2xkZXIganNjTG9jayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICNlbmRpZgogCi0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IF9wcml2YXRlLT5jb3JlRnJh
bWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoc3RyaW5nLCBmb3JjZVVzZXJHZXN0dXJlKTsKKyAg
ICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2NyaXB0KCkuZXhl
Y3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKHN0cmluZywgZm9yY2VVc2VyR2VzdHVyZSk7CiAK
ICAgICBpZiAoIV9wcml2YXRlLT5jb3JlRnJhbWUpIC8vIEluIGNhc2UgdGhlIHNjcmlwdCByZW1v
dmVkIG91ciBmcmFtZSBmcm9tIHRoZSBwYWdlLgogICAgICAgICByZXR1cm4gQCIiOwpAQCAtMjA5
Niw3ICsyMDk2LDcgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dEZyb21TdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHdpdGhHbG8KICAgICBBU1NFUlQoZnJhbWUt
PmRvY3VtZW50KCkpOwogICAgIFJldGFpblB0cjxXZWJGcmFtZT4gd2ViRnJhbWUoa2l0KGZyYW1l
KSk7IC8vIFJ1bm5pbmcgYXJiaXRyYXJ5IEphdmFTY3JpcHQgY2FuIGRlc3Ryb3kgdGhlIGZyYW1l
LgogCi0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlVXNl
ckFnZW50U2NyaXB0SW5Xb3JsZCgqY29yZSh3b3JsZCksIHN0cmluZywgdHJ1ZSk7CisgICAgSlND
OjpKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlVXNlckFnZW50U2NyaXB0
SW5Xb3JsZCgqY29yZSh3b3JsZCksIHN0cmluZywgdHJ1ZSkuZmlyc3Q7CiAKICAgICBpZiAoIXdl
YkZyYW1lLT5fcHJpdmF0ZS0+Y29yZUZyYW1lKSAvLyBJbiBjYXNlIHRoZSBzY3JpcHQgcmVtb3Zl
ZCBvdXIgZnJhbWUgZnJvbSB0aGUgcGFnZS4KICAgICAgICAgcmV0dXJuIEAiIjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA0N2FhZTMyOGRiYzZhY2Zi
ZWFiYjNhZWM2ZDI3ODNjYjRmNTlmMDcxLi45NjFlMDVjZjFjMjI5ZGUxMTA0NmI3YzRmYjgzNGY1
MzM5YmI4MjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CkBAIC03OTA4LDcgKzc5MDgsNyBAQCAtIChOU0FwcGxlRXZlbnREZXNjcmlwdG9yICopYWVEZXNj
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6KE5TU3RyaW5nICopcwogICAgICAgICBy
ZXR1cm4gbmlsOwogICAgIGlmICghY29yZUZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICByZXR1
cm4gbmlsOwotICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBjb3JlRnJhbWUtPnNjcmlwdCgpLmV4
ZWN1dGVTY3JpcHQoc2NyaXB0LCB0cnVlKTsKKyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gY29y
ZUZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oc2NyaXB0LCB0
cnVlKTsKICAgICBpZiAoIXJlc3VsdCkgLy8gRklYTUU6IHBhc3MgZXJyb3JzCiAgICAgICAgIHJl
dHVybiAwOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soY29yZUZyYW1lLT5zY3JpcHQoKS5n
bG9iYWxPYmplY3QoV2ViQ29yZTo6bWFpblRocmVhZE5vcm1hbFdvcmxkKCkpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385480</attachid>
            <date>2019-12-11 22:32:15 -0800</date>
            <delta_ts>2019-12-12 09:58:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205151-20191211223214.patch</filename>
            <type>text/plain</type>
            <size>32322</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjU5MGYyYWFjZjNmZTJj
NWE4ZDlkYWUwZjFmOGM4NDY0YTY1MGE3YS4uOWVlZjdkMTFlMzM3NTYzYjA0ODQ2Mjc5Zjk4NGIz
ZjNmMDhmZTRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE5LTEyLTExICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRD
b250cm9sbGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoUmVm
YWN0b3IsIG5vIGJlaGF2aW9yIGNoYW5nZSkuCisgICAgICAgIAorICAgICAgICBUaGVyZSdzIHNv
IG1hbnkgRXhjZXB0aW9uRGV0YWlscyogbnVsbCBwb2ludGVycyBiZWluZyBwYXNzZWQgYXJvdW5k
IGluIHRoZSBTY3JpcHRDb250cm9sbGVyCisgICAgICAgIGZhbWlseSBvZiBmdW5jdGlvbnMuCisg
ICAgICAgIAorICAgICAgICBMZXQncyBtYWtlIGl0IGEgbGl0dGxlIG1vcmUgZXhwbGljaXQgd2hp
Y2ggY2FsbGVycyBnZXQgZXhjZXB0aW9ucyBhbmQgd2hpY2ggZG9uJ3QuCisKKyAgICAgICAgKiBN
b2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW06CisgICAgICAgIChX
ZWJDb3JlOjpRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6ZW5zdXJlUmVwbGFjZW1lbnRTY3Jp
cHRJbmplY3RlZCk6CisgICAgICAgIAorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUpOgor
ICAgICAgICAKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZElnbm9yaW5n
RXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRl
SW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUln
bm9yaW5nRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4
ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhj
ZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJZkph
dmFTY3JpcHRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVh
dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0
ZVNjcmlwdCk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5oOgorICAgICAgICAKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5z
aW9uc0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNv
bnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0NvbnRlbnRSdWxlTGlzdHNGb3JMb2FkKToK
KyAgICAgICAgCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjplbnN1cmVQbHVnSW5zSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAKKyAgICAg
ICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVt
ZW50OjpleGVjdXRlQ2xhc3NpY1NjcmlwdCk6CisgICAgICAgIAorICAgICAgICAqIGh0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpl
bnN1cmVNZWRpYUNvbnRyb2xzSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpldmFsdWF0ZUFzQm9vbGVhbik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpldmFsdWF0ZU9u
TG9hZCk6CisgICAgICAgIAorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkQ2xl
YXJXaW5kb3dPYmplY3RJbldvcmxkKToKKyAgICAgICAgCisgICAgICAgICogbG9hZGVyL0NvbnRl
bnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGlkRGVjaWRl
KToKKyAgICAgICAgCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZTo6aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KToKKyAgICAgICAgCisgICAgICAg
ICogeG1sL1hNTFRyZWVWaWV3ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MVHJlZVZpZXdl
cjo6dHJhbnNmb3JtRG9jdW1lbnRUb1RyZWVWaWV3KToKKwogMjAxOS0xMi0xMSAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFRyeWluZyB0byBzZXQgdG9TdHJpbmcg
LyB2YWx1ZU9mIG9uIGEgY3Jvc3Mtb3JpZ2luIExvY2F0aW9uIG9iamVjdCBzaG91bGQgdGhyb3cg
YSBTZWN1cml0eUVycm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhkNzYyYWQ5YTM4NjgzNDkyNThjMDJjOTYyZjk1
ZmY5M2FmMjU3MzcuLjE0MWU4OGJmZDhkMzEzMjNiYWFjMjQ5MDgxYTQ2NzNjNmI0NTczN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTktMTItMTEgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIFNjcmlwdENvbnRyb2xsZXIncyBwcm9s
aWZlcmF0aW9uIG9mIEV4Y2VwdGlvbkRldGFpbHMqLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MTUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBlcmZvcm1KYXZhU2NyaXB0VVJMUmVx
dWVzdCk6CisgICAgICAgIAorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OmV2YWx1YXRlT3JRdWV1ZUV4cHJlc3Npb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OmV2YWx1YXRl
UXVldWVkRXhwcmVzc2lvbnMpOgorICAgICAgICAKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHQp
OgorCiAyMDE5LTEyLTExICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgYSBuaXQgYWZ0ZXIgcjI1MzM2NgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCmluZGV4IGI5ZGFlMmNlMTBlMDg3MmQzNTMwOGM4YzhjYzYwZGUyMGYyNWY3NzUuLjlj
OGMyNDE3NWEwZTgzNWJhYWEyMmFjOWE4NWQzM2IxZGY4OWNjMWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxOS0xMi0xMSAgQnJhZHkgRWlkc29uICA8
YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgU2NyaXB0Q29udHJvbGxlcidz
IHByb2xpZmVyYXRpb24gb2YgRXhjZXB0aW9uRGV0YWlscyouCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUxNTEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5tbToKKyAgICAgICAgKFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKToK
KyAgICAgICAgKFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphcHBlbmQpOgorICAgICAgICAK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6Zm9yY2VVc2VyR2VzdHVyZTpdKToK
KyAgICAgICAgKC1bV2ViRnJhbWUgX3N0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3Ry
aW5nOndpdGhHbG9iYWxPYmplY3Q6aW5TY3JpcHRXb3JsZDpdKToKKworICAgICAgICAqIFdlYlZp
ZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBhZURlc2NCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0RnJvbVN0cmluZzpdKToKKwogMjAxOS0xMi0wOSAgRXJpYyBDYXJsc29uICA8ZXJpYy5j
YXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgbWVkaWEgaW4gdGhlIEdQVSBwcm9j
ZXNzIHByZWZlcmVuY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lu
cy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQppbmRleCA5ODEyNmUwM2YzZTMy
MTQ3NWY3NTExNDY0MmFkOGQwYjI0OGJhZDIzLi4wM2QyMWRlN2Q1YWMwNjliMmNhYTNkOTYxMWI5
OGY4NGEzNTE3ZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMv
UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCkBAIC0xNTgsNyArMTU4LDcg
QEAgYm9vbCBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6ZW5zdXJlUmVwbGFjZW1lbnRTY3Jp
cHRJbmplY3RlZCgpCiAgICAgaWYgKHJlcGxhY2VtZW50RnVuY3Rpb24uaXNGdW5jdGlvbih2bSkp
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAotICAgIHNjcmlwdENvbnRyb2xsZXIuZXZhbHVh
dGVJbldvcmxkKFNjcmlwdFNvdXJjZUNvZGUocXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRTY3Jp
cHQoKSksIHdvcmxkKTsKKyAgICBzY3JpcHRDb250cm9sbGVyLmV2YWx1YXRlSW5Xb3JsZElnbm9y
aW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUocXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRT
Y3JpcHQoKSksIHdvcmxkKTsKICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7
CiAgICAgICAgIExPRyhQbHVnaW5zLCAiJXAgLSBFeGNlcHRpb24gd2hlbiBldmFsdWF0aW5nIFF1
aWNrVGltZSBwbHVnaW4gcmVwbGFjZW1lbnQgc2NyaXB0IiwgdGhpcyk7CiAgICAgICAgIHNjb3Bl
LmNsZWFyRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY2hlZHVsZWRBY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1
bGVkQWN0aW9uLmNwcAppbmRleCAyOGNmNTY0NjZiY2EzYzljMmQyMDg4OTUxYzk4MDgyZmRiNTFh
ODU2Li44ZTRjN2IzODEyNDRlNzc2YmRkNTgzNGFlNDE5MzZkN2RjYzYyMjhmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKQEAgLTEzNiw3ICsx
MzYsNyBAQCB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZShEb2N1bWVudCYgZG9jdW1lbnQp
CiAgICAgaWYgKG1fZnVuY3Rpb24pCiAgICAgICAgIGV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dCh3
aW5kb3csIHdpbmRvdy0+cHJveHkoKSwgZG9jdW1lbnQpOwogICAgIGVsc2UKLSAgICAgICAgZnJh
bWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJbldvcmxkKG1faXNvbGF0ZWRXb3JsZCwgbV9jb2Rl
KTsKKyAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdF
eGNlcHRpb24obV9pc29sYXRlZFdvcmxkLCBtX2NvZGUpOwogfQogCiB2b2lkIFNjaGVkdWxlZEFj
dGlvbjo6ZXhlY3V0ZShXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGIx
ZmRlODUwMmU0ZGEwYjBmNjlmNDgxNmQ0YTQxMmVjNGVlNGM3M2YuLjRjZWQ0YzNjMjRlYjA2MGEy
NjY1NTkwNjg5ODJmNDMxYzY2MTk4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0xMDcsNyArMTA3LDEyIEBAIFNjcmlwdENvbnRy
b2xsZXI6On5TY3JpcHRDb250cm9sbGVyKCkKICAgICB9CiB9CiAKLUpTVmFsdWUgU2NyaXB0Q29u
dHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNv
ZGUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIEV4Y2VwdGlvbkRldGFpbHMqIGV4Y2VwdGlvbkRl
dGFpbHMpCitKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkSWdu
b3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRE9NV3Jh
cHBlcldvcmxkJiB3b3JsZCkKK3sKKyAgICByZXR1cm4gZXZhbHVhdGVJbldvcmxkKHNvdXJjZUNv
ZGUsIHdvcmxkKS5maXJzdDsKK30KKworVmFsdWVBbmRFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxl
cjo6ZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERP
TVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0o
KSk7CiAKQEAgLTEzNSwxOSArMTQwLDIxIEBAIEpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZh
bHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPCiAKICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUpOwog
CisgICAgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gb3B0aW9uYWxEZXRhaWxzOwogICAgIGlm
IChldmFsdWF0aW9uRXhjZXB0aW9uKSB7Ci0gICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmZ2xvYmFs
T2JqZWN0LCBldmFsdWF0aW9uRXhjZXB0aW9uLCBzb3VyY2VDb2RlLmNhY2hlZFNjcmlwdCgpLCBl
eGNlcHRpb25EZXRhaWxzKTsKLSAgICAgICAgbV9zb3VyY2VVUkwgPSBzYXZlZFNvdXJjZVVSTDsK
LSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBkZXRhaWxzOwor
ICAgICAgICByZXBvcnRFeGNlcHRpb24oJmdsb2JhbE9iamVjdCwgZXZhbHVhdGlvbkV4Y2VwdGlv
biwgc291cmNlQ29kZS5jYWNoZWRTY3JpcHQoKSwgJmRldGFpbHMpOworICAgICAgICBvcHRpb25h
bERldGFpbHMgPSBXVEZNb3ZlKGRldGFpbHMpOworICAgICAgICByZXR1cm5WYWx1ZSA9IHsgfTsK
ICAgICB9CiAKICAgICBtX3NvdXJjZVVSTCA9IHNhdmVkU291cmNlVVJMOwotICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKKyAgICByZXR1cm4geyByZXR1cm5WYWx1ZSwgb3B0aW9uYWxEZXRhaWxzIH07
CiB9CiAKLUpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291
cmNlQ29kZSYgc291cmNlQ29kZSwgRXhjZXB0aW9uRGV0YWlscyogZXhjZXB0aW9uRGV0YWlscykK
K0pTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9u
KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCiB7Ci0gICAgcmV0dXJuIGV2YWx1
YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgZXhjZXB0aW9u
RGV0YWlscyk7CisgICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKHNv
dXJjZUNvZGUsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKIH0KIAogdm9pZCBTY3JpcHRDb250
cm9sbGVyOjpsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChMb2FkYWJsZU1vZHVsZVNjcmlwdCYgbW9k
dWxlU2NyaXB0LCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFt
ZXRlcnM+JiYgdG9wTGV2ZWxGZXRjaFBhcmFtZXRlcnMsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQp
CkBAIC01NDgsNyArNTU1LDEyIEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJTY3JpcHRP
YmplY3RzKCkKICNlbmRpZgogfQogCi1KU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVT
Y3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0
LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIEV4Y2VwdGlvbkRldGFpbHMqIGV4Y2VwdGlvbkRldGFp
bHMpCitKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGRJ
Z25vcmluZ0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNj
cmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQoreworICAgIHJldHVybiBleGVjdXRlU2NyaXB0
SW5Xb3JsZCh3b3JsZCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlKS5maXJzdDsKK30KKworVmFs
dWVBbmRFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2Vy
R2VzdHVyZSkKIHsKICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGZv
cmNlVXNlckdlc3R1cmUgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKSA6IFdURjo6bnVsbG9wdCk7CiAgICAgU2NyaXB0U291cmNlQ29k
ZSBzb3VyY2VDb2RlKHNjcmlwdCwgVVJMKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpLCBUZXh0
UG9zaXRpb24oKSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIENhY2hl
ZFNjcmlwdEZldGNoZXI6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmNoYXJzZXQoKSkpOwpA
QCAtNTU2LDE3ICs1NjgsMTcgQEAgSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2Ny
aXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHIKICAgICBpZiAoIWNh
bkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNlZCgpKQogICAg
ICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2Rl
LCB3b3JsZCwgZXhjZXB0aW9uRGV0YWlscyk7CisgICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChz
b3VyY2VDb2RlLCB3b3JsZCk7CiB9CiAKLUpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0
ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3Ry
aW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgRXhjZXB0aW9uRGV0YWlscyogZXhj
ZXB0aW9uRGV0YWlscykKK1ZhbHVlQW5kRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1
dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiB7CiAgICAgYXV0byYgZG9jdW1l
bnQgPSAqbV9mcmFtZS5kb2N1bWVudCgpOwogICAgIGlmICghc2hvdWxkQWxsb3dVc2VyQWdlbnRT
Y3JpcHRzKGRvY3VtZW50KSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGRvY3VtZW50LnNl
dEhhc0V2YWx1YXRlZFVzZXJBZ2VudFNjcmlwdHMoKTsKLSAgICByZXR1cm4gZXhlY3V0ZVNjcmlw
dEluV29ybGQod29ybGQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgZXhjZXB0aW9uRGV0YWls
cyk7CisgICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLCBzY3JpcHQsIGZvcmNl
VXNlckdlc3R1cmUpOwogfQogCiBib29sIFNjcmlwdENvbnRyb2xsZXI6OnNob3VsZEFsbG93VXNl
ckFnZW50U2NyaXB0cyhEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CkBAIC01OTgsMTQgKzYxMCwx
MCBAQCBib29sIFNjcmlwdENvbnRyb2xsZXI6OmNhbkV4ZWN1dGVTY3JpcHRzKFJlYXNvbkZvckNh
bGxpbmdDYW5FeGVjdXRlU2NyaXB0cyByZWFzbwogICAgIHJldHVybiBtX2ZyYW1lLmxvYWRlcigp
LmNsaWVudCgpLmFsbG93U2NyaXB0KG1fZnJhbWUuc2V0dGluZ3MoKS5pc1NjcmlwdEVuYWJsZWQo
KSk7CiB9CiAKLUpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBT
dHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBFeGNlcHRpb25EZXRhaWxzKiBl
eGNlcHRpb25EZXRhaWxzKQorSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVT
Y3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVz
ZXJHZXN0dXJlKQogewogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3Io
Zm9yY2VVc2VyR2VzdHVyZSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQ
cm9jZXNzaW5nVXNlckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KTsKLSAgICByZXR1cm4gZXhlY3V0
ZVNjcmlwdChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdCwgVVJMKG1fZnJhbWUuZG9jdW1lbnQoKS0+
dXJsKCkpLCBUZXh0UG9zaXRpb24oKSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlBy
b2dyYW0sIENhY2hlZFNjcmlwdEZldGNoZXI6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmNo
YXJzZXQoKSkpLCBleGNlcHRpb25EZXRhaWxzKTsKLX0KIAotSlNWYWx1ZSBTY3JpcHRDb250cm9s
bGVyOjpleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIEV4
Y2VwdGlvbkRldGFpbHMqIGV4Y2VwdGlvbkRldGFpbHMpCi17CiAgICAgaWYgKCFjYW5FeGVjdXRl
U2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkgfHwgaXNQYXVzZWQoKSkKICAgICAgICAgcmV0
dXJuIHsgfTsgLy8gRklYTUU6IFdvdWxkIGpzTnVsbCBiZSBiZXR0ZXI/CiAKQEAgLTYxMyw3ICs2
MjEsNyBAQCBKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU2Ny
aXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRXhjZQogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ3NjMKICAgICBSZWY8RnJhbWU+IHByb3RlY3Rvciht
X2ZyYW1lKTsgLy8gU2NyaXB0IGV4ZWN1dGlvbiBjYW4gZGVzdHJveSB0aGUgZnJhbWUsIGFuZCB0
aHVzIHRoZSBTY3JpcHRDb250cm9sbGVyLgogCi0gICAgcmV0dXJuIGV2YWx1YXRlKHNvdXJjZUNv
ZGUsIGV4Y2VwdGlvbkRldGFpbHMpOworICAgIHJldHVybiBldmFsdWF0ZUlnbm9yaW5nRXhjZXB0
aW9uKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0LCBVUkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwo
KSksIFRleHRQb3NpdGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3Jh
bSwgQ2FjaGVkU2NyaXB0RmV0Y2hlcjo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2hhcnNl
dCgpKSkpOwogfQogCiBib29sIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRV
UkwoY29uc3QgVVJMJiB1cmwsIFNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCBz
aG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwpCkBAIC02MzIsNyArNjQwLDcgQEAg
Ym9vbCBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYg
dXJsLCBTaG91bGRSZXBsYWNlRG9jdW0KICAgICBjb25zdCBpbnQgamF2YXNjcmlwdFNjaGVtZUxl
bmd0aCA9IHNpemVvZigiamF2YXNjcmlwdDoiKSAtIDE7CiAKICAgICBTdHJpbmcgZGVjb2RlZFVS
TCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwuc3RyaW5nKCkpOwotICAgIGF1dG8gcmVz
dWx0ID0gZXhlY3V0ZVNjcmlwdChkZWNvZGVkVVJMLnN1YnN0cmluZyhqYXZhc2NyaXB0U2NoZW1l
TGVuZ3RoKSk7CisgICAgYXV0byByZXN1bHQgPSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRp
b24oZGVjb2RlZFVSTC5zdWJzdHJpbmcoamF2YXNjcmlwdFNjaGVtZUxlbmd0aCkpOwogCiAgICAg
Ly8gSWYgZXhlY3V0aW5nIHNjcmlwdCBjYXVzZWQgdGhpcyBmcmFtZSB0byBiZSByZW1vdmVkIGZy
b20gdGhlIHBhZ2UsIHdlCiAgICAgLy8gZG9uJ3Qgd2FudCB0byB0cnkgdG8gcmVwbGFjZSBpdHMg
ZG9jdW1lbnQhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmgKaW5kZXggMTMyNzRhNWQxY2Y2ZDUyYjRhMjZlYzQ4ZGI1MDBhYmZmZTMzZWQ2Yi4uYjhiMjli
MTg4YzhiOTIwOTk1ZmFjNzFkYjFlODQwOTUyODYyODMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAtNzAsNiArNzAsOCBAQCBlbnVtIFJl
YXNvbkZvckNhbGxpbmdDYW5FeGVjdXRlU2NyaXB0cyB7CiAgICAgTm90QWJvdXRUb0V4ZWN1dGVT
Y3JpcHQKIH07CiAKK3VzaW5nIFZhbHVlQW5kRXhjZXB0aW9uID0gc3RkOjpwYWlyPEpTQzo6SlNW
YWx1ZSwgV1RGOjpPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPj47CisKIGNsYXNzIFNjcmlwdENv
bnRyb2xsZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U2NyaXB0Q29udHJvbGxlcj4gewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCkBAIC04OCwxMCArOTAsMTAgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIHZvaWQgZ2V0QWxsV29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxk
Pj4mKTsKIAotICAgIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJj
ZUNvZGUmLCBFeGNlcHRpb25EZXRhaWxzKiA9IG51bGxwdHIpOwotICAgIFdFQkNPUkVfRVhQT1JU
IEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZv
cmNlVXNlckdlc3R1cmUgPSBmYWxzZSwgRXhjZXB0aW9uRGV0YWlscyogPSBudWxscHRyKTsKLSAg
ICBKU0M6OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29u
c3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlLCBFeGNlcHRp
b25EZXRhaWxzKiA9IG51bGxwdHIpOwotICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBl
eGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJp
bmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBFeGNlcHRpb25EZXRhaWxzKiA9IG51
bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SWdu
b3JpbmdFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVy
ZSA9IGZhbHNlKTsKKyAgICBKU0M6OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmlu
Z0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBm
b3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOworICAgIFZhbHVlQW5kRXhjZXB0aW9uIGV4ZWN1dGVT
Y3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29s
IGZvcmNlVXNlckdlc3R1cmUgPSBmYWxzZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgVmFsdWVBbmRF
eGNlcHRpb24gZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwg
Y29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSk7CiAKICAgICBib29s
IHNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0cyhEb2N1bWVudCYpIGNvbnN0OwogCkBAIC0xMDIs
OCArMTA0LDkgQEAgcHVibGljOgogICAgIC8vIERhcndpbiBpcyBhbiBleGNlcHRpb24gdG8gdGhp
cyBydWxlOiBpdCBpcyBPSyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSBhbnkgdGhyZWFkLCBl
dmVuIHJlZW50cmFudGx5LgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsK
IAotICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRXhj
ZXB0aW9uRGV0YWlscyogPSBudWxscHRyKTsKLSAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJbldv
cmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmLCBFeGNlcHRpb25E
ZXRhaWxzKiA9IG51bGxwdHIpOworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUlnbm9yaW5nRXhj
ZXB0aW9uKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKKyAgICBKU0M6OkpTVmFsdWUgZXZhbHVh
dGVJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdy
YXBwZXJXb3JsZCYpOworICAgIFZhbHVlQW5kRXhjZXB0aW9uIGV2YWx1YXRlSW5Xb3JsZChjb25z
dCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7CiAKICAgICB2b2lkIGxvYWRN
b2R1bGVTY3JpcHRJbldvcmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBt
b2R1bGVOYW1lLCBSZWY8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiYmLCBET01XcmFwcGVyV29ybGQm
KTsKICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25z
dCBTdHJpbmcmIG1vZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
bnNCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25zQmFja2VuZC5jcHAKaW5kZXggYTc1NWZjYjkzY2ExMjIyMjhlNzJhNDU5NDhlZmI0
MTA0MmNmMTVkNy4uNTJmMzE5MmM1YjIwMDJmNTE4MzhhNzQ0OTI4N2I2ZWU4MGEzNTczZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
bnNCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgQ29udGVudFJ1bGVM
aXN0UmVzdWx0cyBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50UnVsZUxp
c3RzRm9yTG9hZCgKICAgICAgICAgICAgICAgICAmJiAoKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHVybC5ob3N0KCksICJ3d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20iKSAmJiBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh1cmwucGF0aCgpLCAiL2FuYWx5dGljcy5qcyIpKQogICAg
ICAgICAgICAgICAgICAgICB8fCAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodXJsLmhv
c3QoKSwgInd3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbSIpICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKHVybC5wYXRoKCksICIvZ3RtLmpzIikpKSkgewogICAgICAgICAgICAgICAgIGlm
IChhdXRvKiBmcmFtZSA9IGN1cnJlbnREb2N1bWVudC0+ZnJhbWUoKSkKLSAgICAgICAgICAgICAg
ICAgICAgZnJhbWUtPnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUgeyAidHJ5IHsg
d2luZG93LmRhdGFMYXllci5oaWRlLmVuZCgpOyBjb25zb2xlLmxvZygnQ2FsbGVkIHdpbmRvdy5k
YXRhTGF5ZXIuaGlkZS5lbmQoKSBpbiBmcmFtZSAnICsgZG9jdW1lbnQuVVJMICsgJyBiZWNhdXNl
IHRoZSBjb250ZW50IGJsb2NrZXIgYmxvY2tlZCB0aGUgbG9hZCBvZiB0aGUgaHR0cHM6Ly93d3cu
Z29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0aWNzLmpzIHNjcmlwdCcpOyB9IGNhdGNoIChlKSB7
IH0iX3MgfSk7CisgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZUln
bm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUgeyAidHJ5IHsgd2luZG93LmRhdGFMYXll
ci5oaWRlLmVuZCgpOyBjb25zb2xlLmxvZygnQ2FsbGVkIHdpbmRvdy5kYXRhTGF5ZXIuaGlkZS5l
bmQoKSBpbiBmcmFtZSAnICsgZG9jdW1lbnQuVVJMICsgJyBiZWNhdXNlIHRoZSBjb250ZW50IGJs
b2NrZXIgYmxvY2tlZCB0aGUgbG9hZCBvZiB0aGUgaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGlj
cy5jb20vYW5hbHl0aWNzLmpzIHNjcmlwdCcpOyB9IGNhdGNoIChlKSB7IH0iX3MgfSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBm
M2Y3ZjAzMmYyMGUxYTVhM2YzYzhmMTNkMjI3MDk5ZjViODJiMWU5Li4xN2VkYzhiYzU4MmYzNjc0
N2M3YmM0NGFiZTlkZDVhNGJmMGNiZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTcy
MDEsNyArNzIwMSw3IEBAIHZvaWQgRG9jdW1lbnQ6OmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlw
dChET01XcmFwcGVyV29ybGQmIHdvcmxkKQogICAgICAgICBqc1N0cmluZyA9IFN0cmluZyhwbHVn
SW5zSmF2YVNjcmlwdCwgc2l6ZW9mKHBsdWdJbnNKYXZhU2NyaXB0KSk7CiAKICAgICBzZXRIYXNF
dmFsdWF0ZWRVc2VyQWdlbnRTY3JpcHRzKCk7Ci0gICAgc2NyaXB0Q29udHJvbGxlci5ldmFsdWF0
ZUluV29ybGQoU2NyaXB0U291cmNlQ29kZShqc1N0cmluZyksIHdvcmxkKTsKKyAgICBzY3JpcHRD
b250cm9sbGVyLmV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNv
ZGUoanNTdHJpbmcpLCB3b3JsZCk7CiAKICAgICBtX2hhc0luamVjdGVkUGx1Z0luc1NjcmlwdCA9
IHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggZTBkOTY3YjQ1
NzRiYjM1MzA4NWZiMzc3NjUwOTRjYzJmOGEzNTM4NS4uMTUxMTc1MTllZjkxMzQ2NzY3N2QyNTg2
NTNjZDI3MjAxNzdlODA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAt
Mzg3LDcgKzM4Nyw3IEBAIHZvaWQgU2NyaXB0RWxlbWVudDo6ZXhlY3V0ZUNsYXNzaWNTY3JpcHQo
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKICAgICBJZ25vcmVEZXN0cnVjdGl2
ZVdyaXRlQ291bnRJbmNyZW1lbnRlciBpZ25vcmVEZXNjdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVt
ZW50ZXIobV9pc0V4dGVybmFsU2NyaXB0ID8gJmRvY3VtZW50IDogbnVsbHB0cik7CiAgICAgQ3Vy
cmVudFNjcmlwdEluY3JlbWVudGVyIGN1cnJlbnRTY3JpcHRJbmNyZW1lbnRlcihkb2N1bWVudCwg
bV9lbGVtZW50KTsKIAotICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZShzb3VyY2VDb2RlKTsK
KyAgICBmcmFtZS0+c2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihzb3VyY2VDb2Rl
KTsKIH0KIAogdm9pZCBTY3JpcHRFbGVtZW50OjpleGVjdXRlTW9kdWxlU2NyaXB0KExvYWRhYmxl
TW9kdWxlU2NyaXB0JiBsb2FkYWJsZU1vZHVsZVNjcmlwdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGViNWZmNTY3ZWQ4MTBkZmMxODUxMDY4MDMyOTNhMmQ1
NjRjZTIzNDkuLjczMGI0ZTM4OWU3ODNmZTU2Njc1NWI4YWMzNjg4MTE5ZjA5NjkxNjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNzMxNyw3ICs3MzE3LDcg
QEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjplbnN1cmVNZWRpYUNvbnRyb2xzSW5qZWN0ZWRTY3Jp
cHQoKQogI2Vsc2UKICAgICAgICAgVVJMIHNjcmlwdFVSTDsKICNlbmRpZgotICAgICAgICBzY3Jp
cHRDb250cm9sbGVyLmV2YWx1YXRlSW5Xb3JsZChTY3JpcHRTb3VyY2VDb2RlKG1lZGlhQ29udHJv
bHNTY3JpcHQsIFdURk1vdmUoc2NyaXB0VVJMKSksIHdvcmxkKTsKKyAgICAgICAgc2NyaXB0Q29u
dHJvbGxlci5ldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2Rl
KG1lZGlhQ29udHJvbHNTY3JpcHQsIFdURk1vdmUoc2NyaXB0VVJMKSksIHdvcmxkKTsKICAgICAg
ICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICAgICAgc2NvcGUu
Y2xlYXJFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
LmNwcAppbmRleCAxYjNjODg3NmNjNjg3MzFiNWQ2MjhkZDJkZTJiOWQ2MDRmMmE0NWZiLi4wZDgz
MTkyNTI3ODJkYTk1YTcyZWQzNmNhNWYwNDhjN2NkOGM4NDYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3Bw
CkBAIC00MjAsNyArNDIwLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpk
aXNwYXRjaE1lc3NhZ2VBc3luYyhjb25zdCBTdHJpbmcmIG1lc3NhZ2VPYmoKIGJvb2wgSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVhdGVBc0Jvb2xlYW4oY29uc3QgU3RyaW5nJiBl
eHByZXNzaW9uKQogewogICAgIGF1dG8mIHN0YXRlID0gKm1haW5Xb3JsZEV4ZWNTdGF0ZSgmbV9m
cm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpKTsKLSAgICByZXR1cm4gbV9mcm9udGVuZFBhZ2UtPm1h
aW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoZXhwcmVzc2lvbikudG9XVEZTdHJpbmco
JnN0YXRlKSA9PSAidHJ1ZSI7CisgICAgcmV0dXJuIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUo
KS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oZXhwcmVzc2lvbikudG9X
VEZTdHJpbmcoJnN0YXRlKSA9PSAidHJ1ZSI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbDo6ZXZhbHVhdGVPbkxvYWQoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQpAQCAt
NDMxLDcgKzQzMSw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVh
dGVPbkxvYWQoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQogICAgIH0KIAogICAgIEpTQzo6U3Vz
cGVuZEV4Y2VwdGlvblNjb3BlIHNjb3BlKCZtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLnZtKCkpOwotICAgIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5l
dmFsdWF0ZShTY3JpcHRTb3VyY2VDb2RlKGV4cHJlc3Npb24pKTsKKyAgICBtX2Zyb250ZW5kUGFn
ZS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRT
b3VyY2VDb2RlKGV4cHJlc3Npb24pKTsKIH0KIAogUGFnZSogSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbDo6aW5zcGVjdGVkUGFnZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggMDFlZGQwMDYw
ZGUzNjJjMWFiN2I3MDI0NzVhZTgzODIyMjc5YTgwMC4uY2Y4OWY5ZWI1MDUyMzI2ZmNmOGNiZDI2
ZDg1OTZjZjQ3MjRjMjM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtNzczLDcgKzc3Myw3IEBAIHZvaWQg
SW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUmIGZy
YW1lKQogICAgIGlmIChtX2Jvb3RzdHJhcFNjcmlwdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGZyYW1lLnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUobV9ib290
c3RyYXBTY3JpcHQsIFVSTCB7IFVSTCgpLCAid2ViLWluc3BlY3RvcjovL2Jvb3RzdHJhcC5qcyJf
cyB9KSk7CisgICAgZnJhbWUuc2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3Jp
cHRTb3VyY2VDb2RlKG1fYm9vdHN0cmFwU2NyaXB0LCBVUkwgeyBVUkwoKSwgIndlYi1pbnNwZWN0
b3I6Ly9ib290c3RyYXAuanMiX3MgfSkpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6
ZGlkUGFpbnQoUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCBiNDk4YTIyNGIxOTBj
NmNlODQ0ZWI5ZGQ3ZWI5YjdhMTA1ZDc2ZGM1Li42ZWFmY2EzNGU4MWEzOTkyZGQxZmI4MGY5MDMy
ZWI5NmM4YjliNzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZp
bHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBA
IC0yMzMsNyArMjMzLDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUgc3Rh
dGUpCiAgICAgaWYgKCF1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc0VtcHR5KCkgJiYgZnJh
bWUpIHsKICAgICAgICAgdW5ibG9ja0hhbmRsZXIud3JhcFdpdGhEZWNpc2lvbkhhbmRsZXIoW3Nj
cmlwdENvbnRyb2xsZXIgPSBtYWtlV2Vha1B0cihmcmFtZS0+c2NyaXB0KCkpLCBzY3JpcHQgPSB1
bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc29sYXRlZENvcHkoKV0oYm9vbCB1bmJsb2NrZWQp
IHsKICAgICAgICAgICAgIGlmICghdW5ibG9ja2VkICYmIHNjcmlwdENvbnRyb2xsZXIpCi0gICAg
ICAgICAgICAgICAgc2NyaXB0Q29udHJvbGxlci0+ZXhlY3V0ZVNjcmlwdChzY3JpcHQpOworICAg
ICAgICAgICAgICAgIHNjcmlwdENvbnRyb2xsZXItPmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2Vw
dGlvbihzY3JpcHQpOwogICAgICAgICB9KTsKICAgICB9CiAgICAgbV9kb2N1bWVudExvYWRlci5m
cmFtZUxvYWRlcigpLT5jbGllbnQoKS5jb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdURk1vdmUo
dW5ibG9ja0hhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggMjJjYzFmZDE1YmMxN2Nm
ZDg1NmU5MTRjMzhhODZiMGM0MmFjNzRiYy4uZTA4MzNkYzA4MzNmNTlhOWViMjYzNTA2MTMxY2Ri
Yjk3YzlmOTIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTYzNCw3ICs2MzQsNyBAQCB2b2lk
IEZyYW1lOjppbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkoRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCwgY29uc3QgVXNlclNjcmlwdAogCiAgICAgZG9jdW1lbnQtPnNldEFzUnVubmluZ1VzZXJTY3Jp
cHRzKCk7CiAgICAgbG9hZGVyKCkuY2xpZW50KCkud2lsbEluamVjdFVzZXJTY3JpcHQod29ybGQp
OwotICAgIG1fc2NyaXB0LT5ldmFsdWF0ZUluV29ybGQoU2NyaXB0U291cmNlQ29kZShzY3JpcHQu
c291cmNlKCksIFVSTChzY3JpcHQudXJsKCkpKSwgd29ybGQpOworICAgIG1fc2NyaXB0LT5ldmFs
dWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdC5zb3Vy
Y2UoKSwgVVJMKHNjcmlwdC51cmwoKSkpLCB3b3JsZCk7CiB9CiAKIFJlbmRlclZpZXcqIEZyYW1l
Ojpjb250ZW50UmVuZGVyZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L1hNTFRyZWVWaWV3ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3Bw
CmluZGV4IGZlMDFjYzFmZjQ5MWMzNjdmY2FkOTdiZmQ0ZDZjNGU3MzBmNmJkYTguLmY5MGU0NDUy
NGQ1ZGEzNzY2MmNjMmRkNTVmNDIxZjI4OTc3YjQyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxUcmVlVmlld2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MVHJl
ZVZpZXdlci5jcHAKQEAgLTU2LDggKzU2LDggQEAgdm9pZCBYTUxUcmVlVmlld2VyOjp0cmFuc2Zv
cm1Eb2N1bWVudFRvVHJlZVZpZXcoKQogICAgIG1fZG9jdW1lbnQuc2V0U2VjdXJpdHlPcmlnaW5Q
b2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
VW5pcXVlKCkpKTsKIAogICAgIFN0cmluZyBzY3JpcHRTdHJpbmcgPSBTdHJpbmdJbXBsOjpjcmVh
dGVXaXRob3V0Q29weWluZyhYTUxWaWV3ZXJfanMsIHNpemVvZihYTUxWaWV3ZXJfanMpKTsKLSAg
ICBtX2RvY3VtZW50LmZyYW1lKCktPnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUo
c2NyaXB0U3RyaW5nKSk7Ci0gICAgbV9kb2N1bWVudC5mcmFtZSgpLT5zY3JpcHQoKS5ldmFsdWF0
ZShTY3JpcHRTb3VyY2VDb2RlKEF0b21TdHJpbmcoInByZXBhcmVXZWJLaXRYTUxWaWV3ZXIoJ1Ro
aXMgWE1MIGZpbGUgZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUgYW55IHN0eWxlIGluZm9ybWF0aW9u
IGFzc29jaWF0ZWQgd2l0aCBpdC4gVGhlIGRvY3VtZW50IHRyZWUgaXMgc2hvd24gYmVsb3cuJyk7
IikpKTsKKyAgICBtX2RvY3VtZW50LmZyYW1lKCktPnNjcmlwdCgpLmV2YWx1YXRlSWdub3JpbmdF
eGNlcHRpb24oU2NyaXB0U291cmNlQ29kZShzY3JpcHRTdHJpbmcpKTsKKyAgICBtX2RvY3VtZW50
LmZyYW1lKCktPnNjcmlwdCgpLmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNl
Q29kZShBdG9tU3RyaW5nKCJwcmVwYXJlV2ViS2l0WE1MVmlld2VyKCdUaGlzIFhNTCBmaWxlIGRv
ZXMgbm90IGFwcGVhciB0byBoYXZlIGFueSBzdHlsZSBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdp
dGggaXQuIFRoZSBkb2N1bWVudCB0cmVlIGlzIHNob3duIGJlbG93LicpOyIpKSk7CiAKICAgICBT
dHJpbmcgY3NzU3RyaW5nID0gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoWE1MVmll
d2VyX2Nzcywgc2l6ZW9mKFhNTFZpZXdlcl9jc3MpKTsKICAgICBhdXRvIHRleHQgPSBtX2RvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKGNzc1N0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDg4ZTEzYWQ4MmFkY2VjNGZiZWU2ODVm
MmM3YmU0NTk4ZjhkNGNiYmYuLjNlYTAwNmIzY2UzOGUzODk0MWZkYmQ1ODY3M2NkODFhNjgyYzI1
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCkBAIC0xMjUzLDcgKzEyNTMsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1KYXZhU2Ny
aXB0VVJMUmVxdWVzdChVUkxSZXF1ZXN0KiByZXF1ZXN0KQogICAgIC8vIEV2YWx1YXRlIHRoZSBK
YXZhU2NyaXB0IGNvZGUuIE5vdGUgdGhhdCBydW5uaW5nIEphdmFTY3JpcHQgaGVyZSBjb3VsZCBj
YXVzZSB0aGUgcGx1Zy1pbiB0byBiZSBkZXN0cm95ZWQsIHNvIHdlCiAgICAgLy8gZ3JhYiByZWZl
cmVuY2VzIHRvIHRoZSBwbHVnLWluIGhlcmUuCiAgICAgUmVmUHRyPFBsdWdpbj4gcGx1Z2luID0g
bV9wbHVnaW47Ci0gICAgYXV0byByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlw
dChqc1N0cmluZywgcmVxdWVzdC0+YWxsb3dQb3B1cHMoKSk7CisgICAgYXV0byByZXN1bHQgPSBm
cmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGpzU3RyaW5nLCBy
ZXF1ZXN0LT5hbGxvd1BvcHVwcygpKTsKIAogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcAppbmRleCA5MDhl
MzlhZmRiMGM4ODljZmU1NjUyYjM5YWRjNDcwYzNhMDlhOWEyLi5jMTg5ZTk4MjVhZDQ5NDcwZWQ2
MjQzNWU4NmQ1OWRmNjBmMzhhZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvckZyb250ZW5kQVBJRGlz
cGF0Y2hlci5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZEFQ
SURpc3BhdGNoZXI6OmV2YWx1YXRlT3JRdWV1ZUV4cHJlc3Npb24oY29uc3QgU3RyaW5nJgogCiAg
ICAgQVNTRVJUKG1fcXVldWUuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQoIW1fcGFnZS5jb3JlUGFn
ZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5pc1BhdXNlZCgpKTsKLSAgICBtX3BhZ2UuY29yZVBh
Z2UoKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChleHByZXNzaW9uKTsKKyAg
ICBtX3BhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdEln
bm9yaW5nRXhjZXB0aW9uKGV4cHJlc3Npb24pOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckZyb250
ZW5kQVBJRGlzcGF0Y2hlcjo6ZXZhbHVhdGVRdWV1ZWRFeHByZXNzaW9ucygpCkBAIC0xMDksNyAr
MTA5LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OmV2YWx1YXRl
UXVldWVkRXhwcmVzc2lvbnMoKQogCiAgICAgZm9yIChjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24g
OiBtX3F1ZXVlKSB7CiAgICAgICAgIEFTU0VSVCghbV9wYWdlLmNvcmVQYWdlKCktPm1haW5GcmFt
ZSgpLnNjcmlwdCgpLmlzUGF1c2VkKCkpOwotICAgICAgICBtX3BhZ2UuY29yZVBhZ2UoKS0+bWFp
bkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChleHByZXNzaW9uKTsKKyAgICAgICAgbV9w
YWdlLmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmlu
Z0V4Y2VwdGlvbihleHByZXNzaW9uKTsKICAgICB9CiAKICAgICBtX3F1ZXVlLmNsZWFyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDczNWZl
YTRlZTEzYmU0MjVjMjM0YmU5MjEyMGZlOWU3YmNhMmQ1YzcuLmIwNWVhNjI3NmQ4MzcwMDgyMjZi
OWVjYzJiYjNlNjQwMTkxNGQ0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC0zMzU1LDIxICszMzU1LDIyIEBAIHZvaWQgV2ViUGFnZTo6cnVu
SmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZv
cmNlVXNlCiAKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkUmVz
dWx0VmFsdWU7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soY29tbW9uVk0oKSk7Ci0gICAgYm9vbCBo
YWRFeGNlcHRpb24gPSB0cnVlOwotICAgIEV4Y2VwdGlvbkRldGFpbHMgZGV0YWlsczsKKyAgICBW
YWx1ZUFuZEV4Y2VwdGlvbiByZXN1bHQ7CisKICAgICBhdXRvKiB3b3JsZCA9IHdvcmxkTmFtZSA/
IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmZpbmQod29ybGROYW1lLnZhbHVlKCkpIDogJklu
amVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCk7CiAgICAgaWYgKGZyYW1lICYm
IGZyYW1lLT5jb3JlRnJhbWUoKSAmJiB3b3JsZCkgewotICAgICAgICBpZiAoSlNWYWx1ZSByZXN1
bHRWYWx1ZSA9IGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZXhlY3V0ZVVzZXJBZ2VudFNj
cmlwdEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgpLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUs
ICZkZXRhaWxzKSkgewotICAgICAgICAgICAgaGFkRXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAg
IHJlc3VsdCA9IGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZXhlY3V0ZVVzZXJBZ2VudFNj
cmlwdEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgpLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUp
OworICAgICAgICBpZiAocmVzdWx0LmZpcnN0KSB7CisgICAgICAgICAgICBBU1NFUlQoIXJlc3Vs
dC5zZWNvbmQpOwogICAgICAgICAgICAgc2VyaWFsaXplZFJlc3VsdFZhbHVlID0gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUoZnJhbWUtPmpzQ29udGV4dEZvcldvcmxkKHdvcmxkKSwKLSAg
ICAgICAgICAgICAgICB0b1JlZihmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmdsb2JhbE9i
amVjdCh3b3JsZC0+Y29yZVdvcmxkKCkpLCByZXN1bHRWYWx1ZSksIG51bGxwdHIpOworICAgICAg
ICAgICAgICAgIHRvUmVmKGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0
KHdvcmxkLT5jb3JlV29ybGQoKSksIHJlc3VsdC5maXJzdCksIG51bGxwdHIpOwogICAgICAgICB9
CiAgICAgfQogCiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CiAgICAgaWYg
KHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSkKICAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHNlcmlhbGl6
ZWRSZXN1bHRWYWx1ZS0+ZGF0YSgpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
U2NyaXB0VmFsdWVDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBoYWRFeGNlcHRpb24sIGRldGFpbHMs
IGNhbGxiYWNrSUQpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZh
bHVlQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgKGJvb2wpcmVzdWx0LnNlY29uZCwgKihyZXN1bHQu
c2Vjb25kKSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJ
bk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNl
ckdlc3R1cmUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCmluZGV4IDk0N2JmYzUzNDJjYmNhYzA5
YWFhZjUxMmNjZGI2ZGZlOWNiMWNhNDEuLmVhNTA3OGVkMThmNTUwNTJkZjJlNDI4MTNlMmE2Zjcw
ODU1Y2U3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTM3OSw3ICszNzksNyBAQCB2
b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKGNvbnN0IFN0cmluZyYgc3VnZ2Vz
dGVkVVJMLCBjb25zdCBTdHJpbmcmCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgW2NvbnRl
bnRDb3B5IHdyaXRlVG9VUkw6YWN0dWFsVVJMIGF0b21pY2FsbHk6WUVTIGVuY29kaW5nOk5TVVRG
OFN0cmluZ0VuY29kaW5nIGVycm9yOk5VTExdOwogCi0gICAgICAgIGNvcmUoW21fZnJvbnRlbmRX
aW5kb3dDb250cm9sbGVyIGZyb250ZW5kV2ViVmlld10pLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5l
eGVjdXRlU2NyaXB0KFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRl
bmRBUEkuc2F2ZWRVUkwoXCIlQFwiKSIsIGFjdHVhbFVSTC5hYnNvbHV0ZVN0cmluZ10pOworICAg
ICAgICBjb3JlKFttX2Zyb250ZW5kV2luZG93Q29udHJvbGxlciBmcm9udGVuZFdlYlZpZXddKS0+
bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuc2F2ZWRVUkwoXCIl
QFwiKSIsIGFjdHVhbFVSTC5hYnNvbHV0ZVN0cmluZ10pOwogICAgIH07CiAKICAgICBpZiAoIWZv
cmNlU2F2ZURpYWxvZykgewpAQCAtNDI1LDcgKzQyNSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ6OmFwcGVuZChjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3Ry
aW5nCiAgICAgW2hhbmRsZSB3cml0ZURhdGE6W2NvbnRlbnQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmddXTsKICAgICBbaGFuZGxlIGNsb3NlRmlsZV07CiAKLSAgICBjb3Jl
KFttX2Zyb250ZW5kV2luZG93Q29udHJvbGxlciBmcm9udGVuZFdlYlZpZXddKS0+bWFpbkZyYW1l
KCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIklu
c3BlY3RvckZyb250ZW5kQVBJLmFwcGVuZGVkVG9VUkwoXCIlQFwiKSIsIFthY3R1YWxVUkwgYWJz
b2x1dGVTdHJpbmddXSk7CisgICAgY29yZShbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIgZnJv
bnRlbmRXZWJWaWV3XSktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmlu
Z0V4Y2VwdGlvbihbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3BlY3RvckZyb250ZW5k
QVBJLmFwcGVuZGVkVG9VUkwoXCIlQFwiKSIsIFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddXSk7
CiB9CiAKIC8vIE1BUks6IC0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tCmluZGV4IDE4ZDNkOWVjMTRkOGM2OTVkMDNmOTNjM2RkMjAxNmFkNDA5NGE0NTguLjA1
YjU2OTMwNDM2NGI0OTY5NzFkODlkZDk3ZmY4ZGUyY2Y0NTY3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtNzAwLDcgKzcwMCw3IEBAIC0gKE5T
U3RyaW5nICopX3N0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOihOU1N0cmlu
ZyAqKXN0cmluZyBmb3JjZVVzCiAgICAgSlNDOjpKU0xvY2tIb2xkZXIganNjTG9jayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICNlbmRpZgogCi0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IF9wcml2
YXRlLT5jb3JlRnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoc3RyaW5nLCBmb3JjZVVzZXJH
ZXN0dXJlKTsKKyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+
c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKHN0cmluZywgZm9yY2VVc2Vy
R2VzdHVyZSk7CiAKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlRnJhbWUpIC8vIEluIGNhc2UgdGhl
IHNjcmlwdCByZW1vdmVkIG91ciBmcmFtZSBmcm9tIHRoZSBwYWdlLgogICAgICAgICByZXR1cm4g
QCIiOwpAQCAtMjA5Niw3ICsyMDk2LDcgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHdpdGhHbG8KICAgICBB
U1NFUlQoZnJhbWUtPmRvY3VtZW50KCkpOwogICAgIFJldGFpblB0cjxXZWJGcmFtZT4gd2ViRnJh
bWUoa2l0KGZyYW1lKSk7IC8vIFJ1bm5pbmcgYXJiaXRyYXJ5IEphdmFTY3JpcHQgY2FuIGRlc3Ry
b3kgdGhlIGZyYW1lLgogCi0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQo
KS5leGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZCgqY29yZSh3b3JsZCksIHN0cmluZywgdHJ1
ZSk7CisgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlVXNl
ckFnZW50U2NyaXB0SW5Xb3JsZCgqY29yZSh3b3JsZCksIHN0cmluZywgdHJ1ZSkuZmlyc3Q7CiAK
ICAgICBpZiAoIXdlYkZyYW1lLT5fcHJpdmF0ZS0+Y29yZUZyYW1lKSAvLyBJbiBjYXNlIHRoZSBz
Y3JpcHQgcmVtb3ZlZCBvdXIgZnJhbWUgZnJvbSB0aGUgcGFnZS4KICAgICAgICAgcmV0dXJuIEAi
IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA0N2Fh
ZTMyOGRiYzZhY2ZiZWFiYjNhZWM2ZDI3ODNjYjRmNTlmMDcxLi45NjFlMDVjZjFjMjI5ZGUxMTA0
NmI3YzRmYjgzNGY1MzM5YmI4MjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCkBAIC03OTA4LDcgKzc5MDgsNyBAQCAtIChOU0FwcGxlRXZlbnREZXNjcmlw
dG9yICopYWVEZXNjQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6KE5TU3RyaW5nICop
cwogICAgICAgICByZXR1cm4gbmlsOwogICAgIGlmICghY29yZUZyYW1lLT5kb2N1bWVudCgpKQog
ICAgICAgICByZXR1cm4gbmlsOwotICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBjb3JlRnJhbWUt
PnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoc2NyaXB0LCB0cnVlKTsKKyAgICBKU0M6OkpTVmFsdWUg
cmVzdWx0ID0gY29yZUZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRp
b24oc2NyaXB0LCB0cnVlKTsKICAgICBpZiAoIXJlc3VsdCkgLy8gRklYTUU6IHBhc3MgZXJyb3Jz
CiAgICAgICAgIHJldHVybiAwOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soY29yZUZyYW1l
LT5zY3JpcHQoKS5nbG9iYWxPYmplY3QoV2ViQ29yZTo6bWFpblRocmVhZE5vcm1hbFdvcmxkKCkp
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385507</attachid>
            <date>2019-12-12 09:58:49 -0800</date>
            <delta_ts>2019-12-12 10:22:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205151-20191212095847.patch</filename>
            <type>text/plain</type>
            <size>47527</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjU5MGYyYWFjZjNmZTJj
NWE4ZDlkYWUwZjFmOGM4NDY0YTY1MGE3YS4uMzgzYTYzMGViMmM5YmNmOTI2NTBiNDgyZDM2Mzg3
NGFiY2RiN2ZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE5LTEyLTEyICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRD
b250cm9sbGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoUmVm
YWN0b3IsIG5vIGJlaGF2aW9yIGNoYW5nZSkuCisKKyAgICAgICAgVGhlcmUncyBzbyBtYW55IEV4
Y2VwdGlvbkRldGFpbHMqIG51bGwgcG9pbnRlcnMgYmVpbmcgcGFzc2VkIGFyb3VuZCBpbiB0aGUg
U2NyaXB0Q29udHJvbGxlcgorICAgICAgICBmYW1pbHkgb2YgZnVuY3Rpb25zLgorCisgICAgICAg
IExldCdzIG1ha2UgaXQgYSBsaXR0bGUgbW9yZSBleHBsaWNpdCB3aGljaCBjYWxsZXJzIGdldCBl
eGNlcHRpb25zIGFuZCB3aGljaCBkb24ndC4KKworICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9R
dWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlF1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50OjplbnN1cmVSZXBsYWNlbWVudFNjcmlwdEluamVjdGVkKToKKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUpOgorCisgICAgICAgICogYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVy
OjpldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJ
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2Vy
QWdlbnRTY3JpcHRJbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6
OmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQpOiBEZWxldGVkLgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKworICAgICAgICAqIGNvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9jZXNzQ29udGVudFJ1
bGVMaXN0c0ZvckxvYWQpOgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjplbnN1cmVQbHVnSW5zSW5qZWN0ZWRTY3JpcHQpOgorCisgICAg
ICAgICogZG9tL1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxl
bWVudDo6ZXhlY3V0ZUNsYXNzaWNTY3JpcHQpOgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZU1l
ZGlhQ29udHJvbHNJbmplY3RlZFNjcmlwdCk6CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsOjpldmFsdWF0ZUFzQm9vbGVhbik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpldmFsdWF0ZU9uTG9hZCk6CisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZCk6
CisKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RmlsdGVyOjpkaWREZWNpZGUpOgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KToK
KworICAgICAgICAqIHhtbC9YTUxUcmVlVmlld2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TFRyZWVWaWV3ZXI6OnRyYW5zZm9ybURvY3VtZW50VG9UcmVlVmlldyk6CisKIDIwMTktMTItMTEg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBUcnlpbmcgdG8gc2V0
IHRvU3RyaW5nIC8gdmFsdWVPZiBvbiBhIGNyb3NzLW9yaWdpbiBMb2NhdGlvbiBvYmplY3Qgc2hv
dWxkIHRocm93IGEgU2VjdXJpdHlFcnJvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4ZDc2MmFkOWEzODY4MzQ5MjU4
YzAyYzk2MmY5NWZmOTNhZjI1NzM3Li5lNzIwYmY3ODUzMzI0MzJmY2U5ZjNkMjQ1YjkxNjZiMTNk
NzFlYjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE5LTEyLTEyICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRDb250cm9s
bGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHA6CisgICAgICAgIChXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2Vi
VmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmZvcmNlVXNlckdlc3R1cmU6Y29tcGxldGlvbkhhbmRs
ZXI6XSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdv
cmxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFt
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBlcmZv
cm1KYXZhU2NyaXB0VVJMUmVxdWVzdCk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpldmFsdWF0ZU9yUXVldWVFeHByZXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVy
OjpldmFsdWF0ZVF1ZXVlZEV4cHJlc3Npb25zKToKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cnVuSmF2YVNjcmlw
dCk6CisKIDIwMTktMTItMTEgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCBhIG5pdCBhZnRlciByMjUzMzY2CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKaW5kZXggYjlkYWUyY2UxMGUwODcyZDM1MzA4YzhjOGNjNjBkZTIwZjI1Zjc3NS4u
ZTFmNzFhNWQ1NjkwYzM0NTI0ZGI2ODYyOWI4NDkwOTE1M2RlNzA3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTEyLTEyICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRDb250cm9sbGVy
J3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZCk6CisgICAgICAg
IAorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9z
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpmb3JjZVVzZXJHZXN0dXJlOl0p
OgorICAgICAgICAoLVtXZWJGcmFtZSBfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21T
dHJpbmc6d2l0aEdsb2JhbE9iamVjdDppblNjcmlwdFdvcmxkOl0pOgorCisgICAgICAgICogV2Vi
Vmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IGFlRGVzY0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHRGcm9tU3RyaW5nOl0pOgorCiAyMDE5LTEyLTA5ICBFcmljIENhcmxzb24gIDxlcmlj
LmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBtZWRpYSBpbiB0aGUgR1BVIHBy
b2Nlc3MgcHJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDQyMDE0ZDk5
ZDUwMjE2ZmE5MmQ0OWE1OTJhMDA2NzgxOTJkNjRkNDEuLjdkNzk1ODk4MzA3ZmI2NTQ0MmJhODYw
NTkzZTRjNzgzNTA0NWY4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxOS0xMi0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVmYWN0b3IgU2NyaXB0Q29udHJvbGxlcidzIHByb2xpZmVyYXRpb24gb2YgRXhj
ZXB0aW9uRGV0YWlscyouCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDUxNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0SW5TY3JpcHRXb3JsZCk6CisKIDIwMTktMTItMDUgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBQYWdlQ29uZmlndXJhdGlvbjo6ZHJhZ0Ns
aWVudCBzaG91bGQgdXNlIGEgc21hcnQgcG9pbnRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCmlu
ZGV4IDk4MTI2ZTAzZjNlMzIxNDc1Zjc1MTE0NjQyYWQ4ZDBiMjQ4YmFkMjMuLjAzZDIxZGU3ZDVh
YzA2OWIyY2FhM2Q5NjExYjk4Zjg0YTM1MTdmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0K
QEAgLTE1OCw3ICsxNTgsNyBAQCBib29sIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjplbnN1
cmVSZXBsYWNlbWVudFNjcmlwdEluamVjdGVkKCkKICAgICBpZiAocmVwbGFjZW1lbnRGdW5jdGlv
bi5pc0Z1bmN0aW9uKHZtKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCi0gICAgc2NyaXB0
Q29udHJvbGxlci5ldmFsdWF0ZUluV29ybGQoU2NyaXB0U291cmNlQ29kZShxdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudFNjcmlwdCgpKSwgd29ybGQpOworICAgIHNjcmlwdENvbnRyb2xsZXIuZXZh
bHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29kZShxdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudFNjcmlwdCgpKSwgd29ybGQpOwogICAgIGlmIChVTkxJS0VMWShzY29w
ZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAgTE9HKFBsdWdpbnMsICIlcCAtIEV4Y2VwdGlvbiB3
aGVuIGV2YWx1YXRpbmcgUXVpY2tUaW1lIHBsdWdpbiByZXBsYWNlbWVudCBzY3JpcHQiLCB0aGlz
KTsKICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCmluZGV4IDI4Y2Y1NjQ2NmJjYTNjOWMyZDIw
ODg5NTFjOTgwODJmZGI1MWE4NTYuLjhlNGM3YjM4MTI0NGU3NzZiZGQ1ODM0YWU0MTkzNmQ3ZGNj
NjIyOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9u
LmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKERv
Y3VtZW50JiBkb2N1bWVudCkKICAgICBpZiAobV9mdW5jdGlvbikKICAgICAgICAgZXhlY3V0ZUZ1
bmN0aW9uSW5Db250ZXh0KHdpbmRvdywgd2luZG93LT5wcm94eSgpLCBkb2N1bWVudCk7CiAgICAg
ZWxzZQotICAgICAgICBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdEluV29ybGQobV9pc29s
YXRlZFdvcmxkLCBtX2NvZGUpOworICAgICAgICBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlw
dEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihtX2lzb2xhdGVkV29ybGQsIG1fY29kZSk7CiB9CiAK
IHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJH
bG9iYWxTY29wZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5jcHAKaW5kZXggYjFmZGU4NTAyZTRkYTBiMGY2OWY0ODE2ZDRhNDEyZWM0ZWU0YzczZi4u
NGNlZDRjM2MyNGViMDYwYTI2NjU1OTA2ODk4MmY0MzFjNjYxOTg0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTEwNyw3ICsxMDcs
MTIgQEAgU2NyaXB0Q29udHJvbGxlcjo6flNjcmlwdENvbnRyb2xsZXIoKQogICAgIH0KIH0KIAot
SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291
cmNlQ29kZSYgc291cmNlQ29kZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgRXhjZXB0aW9uRGV0
YWlscyogZXhjZXB0aW9uRGV0YWlscykKK0pTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpl
dmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBz
b3VyY2VDb2RlLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQoreworICAgIHJldHVybiBldmFsdWF0
ZUluV29ybGQoc291cmNlQ29kZSwgd29ybGQpLmZpcnN0OworfQorCitWYWx1ZUFuZEV4Y2VwdGlv
biBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYgc291cmNlQ29kZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKICAgICBKU0xvY2tIb2xk
ZXIgbG9jayh3b3JsZC52bSgpKTsKIApAQCAtMTM1LDE5ICsxNDAsMjEgQEAgSlNWYWx1ZSBTY3Jp
cHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291
cmNlQ29kZSwgRE8KIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRXZhbHVhdGVT
Y3JpcHQobV9mcmFtZSk7CiAKKyAgICBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBvcHRpb25h
bERldGFpbHM7CiAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pIHsKLSAgICAgICAgcmVwb3J0
RXhjZXB0aW9uKCZnbG9iYWxPYmplY3QsIGV2YWx1YXRpb25FeGNlcHRpb24sIHNvdXJjZUNvZGUu
Y2FjaGVkU2NyaXB0KCksIGV4Y2VwdGlvbkRldGFpbHMpOwotICAgICAgICBtX3NvdXJjZVVSTCA9
IHNhdmVkU291cmNlVVJMOwotICAgICAgICByZXR1cm4geyB9OworICAgICAgICBFeGNlcHRpb25E
ZXRhaWxzIGRldGFpbHM7CisgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmZ2xvYmFsT2JqZWN0LCBl
dmFsdWF0aW9uRXhjZXB0aW9uLCBzb3VyY2VDb2RlLmNhY2hlZFNjcmlwdCgpLCAmZGV0YWlscyk7
CisgICAgICAgIG9wdGlvbmFsRGV0YWlscyA9IFdURk1vdmUoZGV0YWlscyk7CisgICAgICAgIHJl
dHVyblZhbHVlID0geyB9OwogICAgIH0KIAogICAgIG1fc291cmNlVVJMID0gc2F2ZWRTb3VyY2VV
Ukw7Ci0gICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIHJldHVybiB7IHJldHVyblZhbHVlLCBv
cHRpb25hbERldGFpbHMgfTsKIH0KIAotSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0
ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBFeGNlcHRpb25EZXRhaWxzKiBl
eGNlcHRpb25EZXRhaWxzKQorSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRl
SWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKIHsK
LSAgICByZXR1cm4gZXZhbHVhdGVJbldvcmxkKHNvdXJjZUNvZGUsIG1haW5UaHJlYWROb3JtYWxX
b3JsZCgpLCBleGNlcHRpb25EZXRhaWxzKTsKKyAgICByZXR1cm4gZXZhbHVhdGVJbldvcmxkSWdu
b3JpbmdFeGNlcHRpb24oc291cmNlQ29kZSwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwogfQog
CiB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKExvYWRhYmxl
TW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgUmVm
PE1vZHVsZUZldGNoUGFyYW1ldGVycz4mJiB0b3BMZXZlbEZldGNoUGFyYW1ldGVycywgRE9NV3Jh
cHBlcldvcmxkJiB3b3JsZCkKQEAgLTU0OCw3ICs1NTUsMTIgQEAgdm9pZCBTY3JpcHRDb250cm9s
bGVyOjpjbGVhclNjcmlwdE9iamVjdHMoKQogI2VuZGlmCiB9CiAKLUpTVmFsdWUgU2NyaXB0Q29u
dHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29u
c3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgRXhjZXB0aW9uRGV0YWls
cyogZXhjZXB0aW9uRGV0YWlscykKK0pTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVj
dXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYgd29ybGQs
IGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCit7CisgICAgcmV0
dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUp
LmZpcnN0OworfQorCitWYWx1ZUFuZEV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRl
U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlw
dCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQogewogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdl
c3R1cmVJbmRpY2F0b3IoZm9yY2VVc2VyR2VzdHVyZSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2Vy
R2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KTsKICAg
ICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUoc2NyaXB0LCBVUkwobV9mcmFtZS5kb2N1bWVu
dCgpLT51cmwoKSksIFRleHRQb3NpdGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlw
ZTo6UHJvZ3JhbSwgQ2FjaGVkU2NyaXB0RmV0Y2hlcjo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQo
KS0+Y2hhcnNldCgpKSk7CkBAIC01NTYsMTcgKzU2OCwxNyBAQCBKU1ZhbHVlIFNjcmlwdENvbnRy
b2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0
IFN0cgogICAgIGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpIHx8
IGlzUGF1c2VkKCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4gZXZhbHVhdGVJ
bldvcmxkKHNvdXJjZUNvZGUsIHdvcmxkLCBleGNlcHRpb25EZXRhaWxzKTsKKyAgICByZXR1cm4g
ZXZhbHVhdGVJbldvcmxkKHNvdXJjZUNvZGUsIHdvcmxkKTsKIH0KIAotSlNWYWx1ZSBTY3JpcHRD
b250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQm
IHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBFeGNl
cHRpb25EZXRhaWxzKiBleGNlcHRpb25EZXRhaWxzKQorVmFsdWVBbmRFeGNlcHRpb24gU2NyaXB0
Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxk
JiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKIHsK
ICAgICBhdXRvJiBkb2N1bWVudCA9ICptX2ZyYW1lLmRvY3VtZW50KCk7CiAgICAgaWYgKCFzaG91
bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoZG9jdW1lbnQpKQogICAgICAgICByZXR1cm4geyB9Owog
CiAgICAgZG9jdW1lbnQuc2V0SGFzRXZhbHVhdGVkVXNlckFnZW50U2NyaXB0cygpOwotICAgIHJl
dHVybiBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3JsZCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJl
LCBleGNlcHRpb25EZXRhaWxzKTsKKyAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdEluV29ybGQod29y
bGQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7CiB9CiAKIGJvb2wgU2NyaXB0Q29udHJvbGxl
cjo6c2hvdWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRzKERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QK
QEAgLTU5OCwxNCArNjEwLDEwIEBAIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6Y2FuRXhlY3V0ZVNj
cmlwdHMoUmVhc29uRm9yQ2FsbGluZ0NhbkV4ZWN1dGVTY3JpcHRzIHJlYXNvCiAgICAgcmV0dXJu
IG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuYWxsb3dTY3JpcHQobV9mcmFtZS5zZXR0aW5ncygp
LmlzU2NyaXB0RW5hYmxlZCgpKTsKIH0KIAotSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVj
dXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIEV4
Y2VwdGlvbkRldGFpbHMqIGV4Y2VwdGlvbkRldGFpbHMpCitKU0M6OkpTVmFsdWUgU2NyaXB0Q29u
dHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgc2Ny
aXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiB7CiAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3Ig
Z2VzdHVyZUluZGljYXRvcihmb3JjZVVzZXJHZXN0dXJlID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBXVEY6Om51bGxvcHQpOwot
ICAgIHJldHVybiBleGVjdXRlU2NyaXB0KFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0LCBVUkwobV9m
cmFtZS5kb2N1bWVudCgpLT51cmwoKSksIFRleHRQb3NpdGlvbigpLCBKU0M6OlNvdXJjZVByb3Zp
ZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgQ2FjaGVkU2NyaXB0RmV0Y2hlcjo6Y3JlYXRlKG1fZnJh
bWUuZG9jdW1lbnQoKS0+Y2hhcnNldCgpKSksIGV4Y2VwdGlvbkRldGFpbHMpOwotfQogCi1KU1Zh
bHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYgc291cmNlQ29kZSwgRXhjZXB0aW9uRGV0YWlscyogZXhjZXB0aW9uRGV0YWlscykKLXsKICAg
ICBpZiAoIWNhbkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNl
ZCgpKQogICAgICAgICByZXR1cm4geyB9OyAvLyBGSVhNRTogV291bGQganNOdWxsIGJlIGJldHRl
cj8KIApAQCAtNjEzLDcgKzYyMSw3IEBAIEpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0
ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBFeGNlCiAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDc2MwogICAgIFJlZjxG
cmFtZT4gcHJvdGVjdG9yKG1fZnJhbWUpOyAvLyBTY3JpcHQgZXhlY3V0aW9uIGNhbiBkZXN0cm95
IHRoZSBmcmFtZSwgYW5kIHRodXMgdGhlIFNjcmlwdENvbnRyb2xsZXIuCiAKLSAgICByZXR1cm4g
ZXZhbHVhdGUoc291cmNlQ29kZSwgZXhjZXB0aW9uRGV0YWlscyk7CisgICAgcmV0dXJuIGV2YWx1
YXRlSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29kZShzY3JpcHQsIFVSTChtX2ZyYW1l
LmRvY3VtZW50KCktPnVybCgpKSwgVGV4dFBvc2l0aW9uKCksIEpTQzo6U291cmNlUHJvdmlkZXJT
b3VyY2VUeXBlOjpQcm9ncmFtLCBDYWNoZWRTY3JpcHRGZXRjaGVyOjpjcmVhdGUobV9mcmFtZS5k
b2N1bWVudCgpLT5jaGFyc2V0KCkpKSk7CiB9CiAKIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6ZXhl
Y3V0ZUlmSmF2YVNjcmlwdFVSTChjb25zdCBVUkwmIHVybCwgU2hvdWxkUmVwbGFjZURvY3VtZW50
SWZKYXZhU2NyaXB0VVJMIHNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCkKQEAg
LTYzMiw3ICs2NDAsNyBAQCBib29sIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3Jp
cHRVUkwoY29uc3QgVVJMJiB1cmwsIFNob3VsZFJlcGxhY2VEb2N1bQogICAgIGNvbnN0IGludCBq
YXZhc2NyaXB0U2NoZW1lTGVuZ3RoID0gc2l6ZW9mKCJqYXZhc2NyaXB0OiIpIC0gMTsKIAogICAg
IFN0cmluZyBkZWNvZGVkVVJMID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHVybC5zdHJpbmco
KSk7Ci0gICAgYXV0byByZXN1bHQgPSBleGVjdXRlU2NyaXB0KGRlY29kZWRVUkwuc3Vic3RyaW5n
KGphdmFzY3JpcHRTY2hlbWVMZW5ndGgpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGV4ZWN1dGVTY3Jp
cHRJZ25vcmluZ0V4Y2VwdGlvbihkZWNvZGVkVVJMLnN1YnN0cmluZyhqYXZhc2NyaXB0U2NoZW1l
TGVuZ3RoKSk7CiAKICAgICAvLyBJZiBleGVjdXRpbmcgc2NyaXB0IGNhdXNlZCB0aGlzIGZyYW1l
IHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgcGFnZSwgd2UKICAgICAvLyBkb24ndCB3YW50IHRvIHRy
eSB0byByZXBsYWNlIGl0cyBkb2N1bWVudCEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCAxMzI3NGE1ZDFjZjZkNTJiNGEyNmVjNDhkYjUwMGFi
ZmZlMzNlZDZiLi5iOGIyOWIxODhjOGI5MjA5OTVmYWM3MWRiMWU4NDA5NTI4NjI4MzNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCkBAIC03MCw2
ICs3MCw4IEBAIGVudW0gUmVhc29uRm9yQ2FsbGluZ0NhbkV4ZWN1dGVTY3JpcHRzIHsKICAgICBO
b3RBYm91dFRvRXhlY3V0ZVNjcmlwdAogfTsKIAordXNpbmcgVmFsdWVBbmRFeGNlcHRpb24gPSBz
dGQ6OnBhaXI8SlNDOjpKU1ZhbHVlLCBXVEY6Ok9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+PjsK
KwogY2xhc3MgU2NyaXB0Q29udHJvbGxlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTY3JpcHRD
b250cm9sbGVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKQEAgLTg4LDEwICs5
MCwxMCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBnZXRBbGxXb3JsZHMoVmVjdG9yPFJl
ZjxET01XcmFwcGVyV29ybGQ+PiYpOwogCi0gICAgSlNDOjpKU1ZhbHVlIGV4ZWN1dGVTY3JpcHQo
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYsIEV4Y2VwdGlvbkRldGFpbHMqID0gbnVsbHB0cik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIGV4ZWN1dGVTY3JpcHQoY29uc3QgU3RyaW5n
JiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlLCBFeGNlcHRpb25EZXRhaWxz
KiA9IG51bGxwdHIpOwotICAgIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SW5Xb3JsZChET01X
cmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJl
ID0gZmFsc2UsIEV4Y2VwdGlvbkRldGFpbHMqID0gbnVsbHB0cik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgSlNDOjpKU1ZhbHVlIGV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJX
b3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIEV4Y2Vw
dGlvbkRldGFpbHMqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVl
IGV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9v
bCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOworICAgIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2Ny
aXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUgPSBmYWxzZSk7CisgICAgVmFsdWVBbmRF
eGNlcHRpb24gZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3Ry
aW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBWYWx1ZUFuZEV4Y2VwdGlvbiBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZChE
T01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0
dXJlKTsKIAogICAgIGJvb2wgc2hvdWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRzKERvY3VtZW50Jikg
Y29uc3Q7CiAKQEAgLTEwMiw4ICsxMDQsOSBAQCBwdWJsaWM6CiAgICAgLy8gRGFyd2luIGlzIGFu
IGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGU6IGl0IGlzIE9LIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBm
cm9tIGFueSB0aHJlYWQsIGV2ZW4gcmVlbnRyYW50bHkuCiAgICAgc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZVRocmVhZGluZygpOwogCi0gICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlKGNvbnN0IFNjcmlw
dFNvdXJjZUNvZGUmLCBFeGNlcHRpb25EZXRhaWxzKiA9IG51bGxwdHIpOwotICAgIEpTQzo6SlNW
YWx1ZSBldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJX
b3JsZCYsIEV4Y2VwdGlvbkRldGFpbHMqID0gbnVsbHB0cik7CisgICAgSlNDOjpKU1ZhbHVlIGV2
YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOworICAgIEpT
Qzo6SlNWYWx1ZSBldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTY3JpcHRT
b3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7CisgICAgVmFsdWVBbmRFeGNlcHRpb24gZXZh
bHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmKTsK
IAogICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlwdEluV29ybGQoTG9hZGFibGVNb2R1bGVTY3JpcHQm
LCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYs
IERPTVdyYXBwZXJXb3JsZCYpOwogICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlwdChMb2FkYWJsZU1v
ZHVsZVNjcmlwdCYsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgUmVmPE1vZHVsZUZldGNoUGFy
YW1ldGVycz4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcAppbmRleCBhNzU1ZmNiOTNjYTEy
MjIyOGU3MmE0NTk0OGVmYjQxMDQyY2YxNWQ3Li41MmYzMTkyYzViMjAwMmY1MTgzOGE3NDQ5Mjg3
YjZlZTgwYTM1NzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAKQEAgLTI0MSw3ICsyNDEs
NyBAQCBDb250ZW50UnVsZUxpc3RSZXN1bHRzIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJv
Y2Vzc0NvbnRlbnRSdWxlTGlzdHNGb3JMb2FkKAogICAgICAgICAgICAgICAgICYmICgoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodXJsLmhvc3QoKSwgInd3dy5nb29nbGUtYW5hbHl0aWNz
LmNvbSIpICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHVybC5wYXRoKCksICIvYW5h
bHl0aWNzLmpzIikpCiAgICAgICAgICAgICAgICAgICAgIHx8IChlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZSh1cmwuaG9zdCgpLCAid3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tIikgJiYgZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodXJsLnBhdGgoKSwgIi9ndG0uanMiKSkpKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0gY3VycmVudERvY3VtZW50LT5mcmFtZSgp
KQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+c2NyaXB0KCkuZXZhbHVhdGUoU2NyaXB0U291
cmNlQ29kZSB7ICJ0cnkgeyB3aW5kb3cuZGF0YUxheWVyLmhpZGUuZW5kKCk7IGNvbnNvbGUubG9n
KCdDYWxsZWQgd2luZG93LmRhdGFMYXllci5oaWRlLmVuZCgpIGluIGZyYW1lICcgKyBkb2N1bWVu
dC5VUkwgKyAnIGJlY2F1c2UgdGhlIGNvbnRlbnQgYmxvY2tlciBibG9ja2VkIHRoZSBsb2FkIG9m
IHRoZSBodHRwczovL3d3dy5nb29nbGUtYW5hbHl0aWNzLmNvbS9hbmFseXRpY3MuanMgc2NyaXB0
Jyk7IH0gY2F0Y2ggKGUpIHsgfSJfcyB9KTsKKyAgICAgICAgICAgICAgICAgICAgZnJhbWUtPnNj
cmlwdCgpLmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29kZSB7ICJ0cnkg
eyB3aW5kb3cuZGF0YUxheWVyLmhpZGUuZW5kKCk7IGNvbnNvbGUubG9nKCdDYWxsZWQgd2luZG93
LmRhdGFMYXllci5oaWRlLmVuZCgpIGluIGZyYW1lICcgKyBkb2N1bWVudC5VUkwgKyAnIGJlY2F1
c2UgdGhlIGNvbnRlbnQgYmxvY2tlciBibG9ja2VkIHRoZSBsb2FkIG9mIHRoZSBodHRwczovL3d3
dy5nb29nbGUtYW5hbHl0aWNzLmNvbS9hbmFseXRpY3MuanMgc2NyaXB0Jyk7IH0gY2F0Y2ggKGUp
IHsgfSJfcyB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCmluZGV4IGYzZjdmMDMyZjIwZTFhNWEzZjNjOGYxM2QyMjcwOTlmNWI4MmIxZTku
LjE3ZWRjOGJjNTgyZjM2NzQ3YzdiYzQ0YWJlOWRkNWE0YmYwY2JkYjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcApAQCAtNzIwMSw3ICs3MjAxLDcgQEAgdm9pZCBEb2N1bWVudDo6ZW5zdXJlUGx1
Z0luc0luamVjdGVkU2NyaXB0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiAgICAgICAgIGpzU3Ry
aW5nID0gU3RyaW5nKHBsdWdJbnNKYXZhU2NyaXB0LCBzaXplb2YocGx1Z0luc0phdmFTY3JpcHQp
KTsKIAogICAgIHNldEhhc0V2YWx1YXRlZFVzZXJBZ2VudFNjcmlwdHMoKTsKLSAgICBzY3JpcHRD
b250cm9sbGVyLmV2YWx1YXRlSW5Xb3JsZChTY3JpcHRTb3VyY2VDb2RlKGpzU3RyaW5nKSwgd29y
bGQpOworICAgIHNjcmlwdENvbnRyb2xsZXIuZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRp
b24oU2NyaXB0U291cmNlQ29kZShqc1N0cmluZyksIHdvcmxkKTsKIAogICAgIG1faGFzSW5qZWN0
ZWRQbHVnSW5zU2NyaXB0ID0gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNw
cAppbmRleCBlMGQ5NjdiNDU3NGJiMzUzMDg1ZmIzNzc2NTA5NGNjMmY4YTM1Mzg1Li4xNTExNzUx
OWVmOTEzNDY3Njc3ZDI1ODY1M2NkMjcyMDE3N2U4MDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEVsZW1lbnQuY3BwCkBAIC0zODcsNyArMzg3LDcgQEAgdm9pZCBTY3JpcHRFbGVtZW50OjpleGVj
dXRlQ2xhc3NpY1NjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQogICAg
IElnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyIGlnbm9yZURlc2N0cnVjdGl2
ZVdyaXRlQ291bnRJbmNyZW1lbnRlcihtX2lzRXh0ZXJuYWxTY3JpcHQgPyAmZG9jdW1lbnQgOiBu
dWxscHRyKTsKICAgICBDdXJyZW50U2NyaXB0SW5jcmVtZW50ZXIgY3VycmVudFNjcmlwdEluY3Jl
bWVudGVyKGRvY3VtZW50LCBtX2VsZW1lbnQpOwogCi0gICAgZnJhbWUtPnNjcmlwdCgpLmV2YWx1
YXRlKHNvdXJjZUNvZGUpOworICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZUlnbm9yaW5nRXhj
ZXB0aW9uKHNvdXJjZUNvZGUpOwogfQogCiB2b2lkIFNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVNb2R1
bGVTY3JpcHQoTG9hZGFibGVNb2R1bGVTY3JpcHQmIGxvYWRhYmxlTW9kdWxlU2NyaXB0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZWI1ZmY1NjdlZDgxMGRm
YzE4NTEwNjgwMzI5M2EyZDU2NGNlMjM0OS4uNzMwYjRlMzg5ZTc4M2ZlNTY2NzU1YjhhYzM2ODgx
MTlmMDk2OTE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBA
IC03MzE3LDcgKzczMTcsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZU1lZGlhQ29u
dHJvbHNJbmplY3RlZFNjcmlwdCgpCiAjZWxzZQogICAgICAgICBVUkwgc2NyaXB0VVJMOwogI2Vu
ZGlmCi0gICAgICAgIHNjcmlwdENvbnRyb2xsZXIuZXZhbHVhdGVJbldvcmxkKFNjcmlwdFNvdXJj
ZUNvZGUobWVkaWFDb250cm9sc1NjcmlwdCwgV1RGTW92ZShzY3JpcHRVUkwpKSwgd29ybGQpOwor
ICAgICAgICBzY3JpcHRDb250cm9sbGVyLmV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9u
KFNjcmlwdFNvdXJjZUNvZGUobWVkaWFDb250cm9sc1NjcmlwdCwgV1RGTW92ZShzY3JpcHRVUkwp
KSwgd29ybGQpOwogICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAg
ICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWwuY3BwCmluZGV4IDFiM2M4ODc2Y2M2ODczMWI1ZDYyOGRkMmRlMmI5
ZDYwNGYyYTQ1ZmIuLjBkODMxOTI1Mjc4MmRhOTVhNzJlZDM2Y2E1ZjA0OGM3Y2Q4Yzg0NjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbC5jcHAKQEAgLTQyMCw3ICs0MjAsNyBAQCB2b2lkIEluc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWw6OmRpc3BhdGNoTWVzc2FnZUFzeW5jKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZU9iagogYm9vbCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpldmFsdWF0ZUFzQm9vbGVh
bihjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24pCiB7CiAgICAgYXV0byYgc3RhdGUgPSAqbWFpbldv
cmxkRXhlY1N0YXRlKCZtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkpOwotICAgIHJldHVybiBt
X2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChleHByZXNz
aW9uKS50b1dURlN0cmluZygmc3RhdGUpID09ICJ0cnVlIjsKKyAgICByZXR1cm4gbV9mcm9udGVu
ZFBhZ2UtPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlv
bihleHByZXNzaW9uKS50b1dURlN0cmluZygmc3RhdGUpID09ICJ0cnVlIjsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpldmFsdWF0ZU9uTG9hZChjb25zdCBTdHJpbmcm
IGV4cHJlc3Npb24pCkBAIC00MzEsNyArNDMxLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsOjpldmFsdWF0ZU9uTG9hZChjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24pCiAgICAg
fQogCiAgICAgSlNDOjpTdXNwZW5kRXhjZXB0aW9uU2NvcGUgc2NvcGUoJm1fZnJvbnRlbmRQYWdl
LT5pbnNwZWN0b3JDb250cm9sbGVyKCkudm0oKSk7Ci0gICAgbV9mcm9udGVuZFBhZ2UtPm1haW5G
cmFtZSgpLnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUoZXhwcmVzc2lvbikpOwor
ICAgIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5ldmFsdWF0ZUlnbm9yaW5n
RXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUoZXhwcmVzc2lvbikpOwogfQogCiBQYWdlKiBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjppbnNwZWN0ZWRQYWdlKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cAppbmRleCAwMWVkZDAwNjBkZTM2MmMxYWI3YjcwMjQ3NWFlODM4MjIyNzlhODAwLi5jZjg5Zjll
YjUwNTIzMjZmY2Y4Y2JkMjZkODU5NmNmNDcyNGMyMzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC03NzMs
NyArNzczLDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0
SW5Xb3JsZChGcmFtZSYgZnJhbWUpCiAgICAgaWYgKG1fYm9vdHN0cmFwU2NyaXB0LmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZnJhbWUuc2NyaXB0KCkuZXZhbHVhdGUoU2NyaXB0
U291cmNlQ29kZShtX2Jvb3RzdHJhcFNjcmlwdCwgVVJMIHsgVVJMKCksICJ3ZWItaW5zcGVjdG9y
Oi8vYm9vdHN0cmFwLmpzIl9zIH0pKTsKKyAgICBmcmFtZS5zY3JpcHQoKS5ldmFsdWF0ZUlnbm9y
aW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUobV9ib290c3RyYXBTY3JpcHQsIFVSTCB7IFVS
TCgpLCAid2ViLWluc3BlY3RvcjovL2Jvb3RzdHJhcC5qcyJfcyB9KSk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yUGFnZUFnZW50OjpkaWRQYWludChSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBM
YXlvdXRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRl
bnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmlu
ZGV4IGI0OThhMjI0YjE5MGM2Y2U4NDRlYjlkZDdlYjliN2ExMDVkNzZkYzUuLjZlYWZjYTM0ZTgx
YTM5OTJkZDFmYjgwZjkwMzJlYjk2YzhiOWI3NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlci5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRp
ZERlY2lkZShTdGF0ZSBzdGF0ZSkKICAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0
LmlzRW1wdHkoKSAmJiBmcmFtZSkgewogICAgICAgICB1bmJsb2NrSGFuZGxlci53cmFwV2l0aERl
Y2lzaW9uSGFuZGxlcihbc2NyaXB0Q29udHJvbGxlciA9IG1ha2VXZWFrUHRyKGZyYW1lLT5zY3Jp
cHQoKSksIHNjcmlwdCA9IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0Lmlzb2xhdGVkQ29weSgp
XShib29sIHVuYmxvY2tlZCkgewogICAgICAgICAgICAgaWYgKCF1bmJsb2NrZWQgJiYgc2NyaXB0
Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBzY3JpcHRDb250cm9sbGVyLT5leGVjdXRlU2Ny
aXB0KHNjcmlwdCk7CisgICAgICAgICAgICAgICAgc2NyaXB0Q29udHJvbGxlci0+ZXhlY3V0ZVNj
cmlwdElnbm9yaW5nRXhjZXB0aW9uKHNjcmlwdCk7CiAgICAgICAgIH0pOwogICAgIH0KICAgICBt
X2RvY3VtZW50TG9hZGVyLmZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmNvbnRlbnRGaWx0ZXJEaWRC
bG9ja0xvYWQoV1RGTW92ZSh1bmJsb2NrSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRl
eCAyMmNjMWZkMTViYzE3Y2ZkODU2ZTkxNGMzOGE4NmIwYzQyYWM3NGJjLi5lMDgzM2RjMDgzM2Y1
OWE5ZWIyNjM1MDYxMzFjZGJiOTdjOWY5MjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtNjM0
LDcgKzYzNCw3IEBAIHZvaWQgRnJhbWU6OmluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseShET01X
cmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBVc2VyU2NyaXB0CiAKICAgICBkb2N1bWVudC0+c2V0
QXNSdW5uaW5nVXNlclNjcmlwdHMoKTsKICAgICBsb2FkZXIoKS5jbGllbnQoKS53aWxsSW5qZWN0
VXNlclNjcmlwdCh3b3JsZCk7Ci0gICAgbV9zY3JpcHQtPmV2YWx1YXRlSW5Xb3JsZChTY3JpcHRT
b3VyY2VDb2RlKHNjcmlwdC5zb3VyY2UoKSwgVVJMKHNjcmlwdC51cmwoKSkpLCB3b3JsZCk7Cisg
ICAgbV9zY3JpcHQtPmV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJj
ZUNvZGUoc2NyaXB0LnNvdXJjZSgpLCBVUkwoc2NyaXB0LnVybCgpKSksIHdvcmxkKTsKIH0KIAog
UmVuZGVyVmlldyogRnJhbWU6OmNvbnRlbnRSZW5kZXJlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MVHJlZVZpZXdlci5jcHAKaW5kZXggZmUwMWNjMWZmNDkxYzM2N2ZjYWQ5N2JmZDRkNmM0ZTcz
MGY2YmRhOC4uZjkwZTQ0NTI0ZDVkYTM3NjYyY2MyZGQ1NWY0MjFmMjg5NzdiNDI2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxUcmVlVmlld2VyLmNwcApAQCAtNTYsOCArNTYsOCBAQCB2b2lkIFhNTFRy
ZWVWaWV3ZXI6OnRyYW5zZm9ybURvY3VtZW50VG9UcmVlVmlldygpCiAgICAgbV9kb2N1bWVudC5z
ZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSkpOwogCiAgICAgU3RyaW5nIHNjcmlwdFN0cmluZyA9
IFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKFhNTFZpZXdlcl9qcywgc2l6ZW9mKFhN
TFZpZXdlcl9qcykpOwotICAgIG1fZG9jdW1lbnQuZnJhbWUoKS0+c2NyaXB0KCkuZXZhbHVhdGUo
U2NyaXB0U291cmNlQ29kZShzY3JpcHRTdHJpbmcpKTsKLSAgICBtX2RvY3VtZW50LmZyYW1lKCkt
PnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUoQXRvbVN0cmluZygicHJlcGFyZVdl
YktpdFhNTFZpZXdlcignVGhpcyBYTUwgZmlsZSBkb2VzIG5vdCBhcHBlYXIgdG8gaGF2ZSBhbnkg
c3R5bGUgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIGl0LiBUaGUgZG9jdW1lbnQgdHJlZSBp
cyBzaG93biBiZWxvdy4nKTsiKSkpOworICAgIG1fZG9jdW1lbnQuZnJhbWUoKS0+c2NyaXB0KCku
ZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdFN0cmluZykp
OworICAgIG1fZG9jdW1lbnQuZnJhbWUoKS0+c2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2Vw
dGlvbihTY3JpcHRTb3VyY2VDb2RlKEF0b21TdHJpbmcoInByZXBhcmVXZWJLaXRYTUxWaWV3ZXIo
J1RoaXMgWE1MIGZpbGUgZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUgYW55IHN0eWxlIGluZm9ybWF0
aW9uIGFzc29jaWF0ZWQgd2l0aCBpdC4gVGhlIGRvY3VtZW50IHRyZWUgaXMgc2hvd24gYmVsb3cu
Jyk7IikpKTsKIAogICAgIFN0cmluZyBjc3NTdHJpbmcgPSBTdHJpbmdJbXBsOjpjcmVhdGVXaXRo
b3V0Q29weWluZyhYTUxWaWV3ZXJfY3NzLCBzaXplb2YoWE1MVmlld2VyX2NzcykpOwogICAgIGF1
dG8gdGV4dCA9IG1fZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzU3RyaW5nKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IDcwZWZiZmEzZTg3YTJhYmFjYzQ1
MTQ2NDBmZGEzZjc3ZWI2ODBlNWYuLjBjMTVmOGI5M2M3ODA3ZWZkNzRiYmU0MDA4Mjg0NDQxYzU2
ZmFkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMjQ3
Miw3ICsyNDcyLDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlU3RhdGVDbGllbnQoV0tQYWdlUmVmIHBh
Z2UsIFdLUGFnZVN0YXRlQ2xpZW50QmFzZSogY2xpZW50KQogCiB2b2lkIFdLUGFnZVJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgc2NyaXB0UmVm
LCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VSdW5KYXZhU2NyaXB0RnVuY3Rpb24gY2FsbGJhY2spCiB7
Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUodG9JbXBsKHNj
cmlwdFJlZiktPnN0cmluZygpLCB0cnVlLCBbY29udGV4dCwgY2FsbGJhY2tdKEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlKiByZXR1cm5WYWx1ZSwgYm9vbCwgY29uc3QgV2ViQ29yZTo6RXhjZXB0
aW9uRGV0YWlscyYsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICB0b0ltcGwocGFn
ZVJlZiktPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh0b0ltcGwoc2NyaXB0UmVmKS0+c3RyaW5n
KCksIHRydWUsIFtjb250ZXh0LCBjYWxsYmFja10oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUq
IHJldHVyblZhbHVlLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICBjYWxsYmFjayh0b0FQSShyZXR1cm5WYWx1
ZSksIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKSA/IHRvQVBJKEFQSTo6RXJy
b3I6OmNyZWF0ZSgpLnB0cigpKSA6IDAsIGNvbnRleHQpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMzM1NGFjNmVl
Y2I1YThkNzE5OGFlOGE1OGNhMjk5NDRjODMwZTUxMC4uMTk0MmIwMjU2MWRmMTU5ODJjYTBhMTFk
MTAwYzM5M2NiOGJhMDRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCkBAIC0xMTIyLDcgKzExMjIsNyBAQCAtICh2b2lkKV9ldmFsdWF0ZUph
dmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBmb3JjZVVzZXJHZXN0dXJlOihC
T09MKQogewogICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNv
cHldKTsKIAotICAgIF9wYWdlLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoamF2YVNjcmlwdFN0
cmluZywgZm9yY2VVc2VyR2VzdHVyZSwgW2hhbmRsZXJdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBXZWJD
b3JlOjpFeGNlcHRpb25EZXRhaWxzJiBkZXRhaWxzLCBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJh
Y2s6OkVycm9yIGVycm9yQ29kZSkgeworICAgIF9wYWdlLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWUoamF2YVNjcmlwdFN0cmluZywgZm9yY2VVc2VyR2VzdHVyZSwgW2hhbmRsZXJdKEFQSTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPFdlYkNv
cmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6U2NyaXB0VmFsdWVDYWxsYmFj
azo6RXJyb3IgZXJyb3JDb2RlKSB7CiAgICAgICAgIGlmICghaGFuZGxlcikKICAgICAgICAgICAg
IHJldHVybjsKIApAQCAtMTE0NSwxOCArMTE0NSwxOCBAQCAtICh2b2lkKV9ldmFsdWF0ZUphdmFT
Y3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBmb3JjZVVzZXJHZXN0dXJlOihCT09M
KQogICAgICAgICB9CiAKICAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKGlkLCBO
U0Vycm9yICopKWhhbmRsZXIuZ2V0KCk7Ci0gICAgICAgIGlmIChoYWRFeGNlcHRpb24pIHsKKyAg
ICAgICAgaWYgKGRldGFpbHMpIHsKICAgICAgICAgICAgIEFTU0VSVCghc2VyaWFsaXplZFNjcmlw
dFZhbHVlKTsKIAogICAgICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IHVz
ZXJJbmZvID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKIAog
ICAgICAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpsb2NhbGl6ZWREZXNjcmlwdGlvbkZvckVy
cm9yQ29kZShXS0Vycm9ySmF2YVNjcmlwdEV4Y2VwdGlvbk9jY3VycmVkKSBmb3JLZXk6TlNMb2Nh
bGl6ZWREZXNjcmlwdGlvbktleV07Ci0gICAgICAgICAgICBbdXNlckluZm8gc2V0T2JqZWN0OnN0
YXRpY19jYXN0PE5TU3RyaW5nICo+KGRldGFpbHMubWVzc2FnZSkgZm9yS2V5Ol9XS0phdmFTY3Jp
cHRFeGNlcHRpb25NZXNzYWdlRXJyb3JLZXldOwotICAgICAgICAgICAgW3VzZXJJbmZvIHNldE9i
amVjdDpAKGRldGFpbHMubGluZU51bWJlcikgZm9yS2V5Ol9XS0phdmFTY3JpcHRFeGNlcHRpb25M
aW5lTnVtYmVyRXJyb3JLZXldOwotICAgICAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpAKGRl
dGFpbHMuY29sdW1uTnVtYmVyKSBmb3JLZXk6X1dLSmF2YVNjcmlwdEV4Y2VwdGlvbkNvbHVtbk51
bWJlckVycm9yS2V5XTsKKyAgICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6c3RhdGljX2Nh
c3Q8TlNTdHJpbmcgKj4oZGV0YWlscy0+bWVzc2FnZSkgZm9yS2V5Ol9XS0phdmFTY3JpcHRFeGNl
cHRpb25NZXNzYWdlRXJyb3JLZXldOworICAgICAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpA
KGRldGFpbHMtPmxpbmVOdW1iZXIpIGZvcktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTGluZU51
bWJlckVycm9yS2V5XTsKKyAgICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QChkZXRhaWxz
LT5jb2x1bW5OdW1iZXIpIGZvcktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uQ29sdW1uTnVtYmVy
RXJyb3JLZXldOwogCi0gICAgICAgICAgICBpZiAoIWRldGFpbHMuc291cmNlVVJMLmlzRW1wdHko
KSkKLSAgICAgICAgICAgICAgICBbdXNlckluZm8gc2V0T2JqZWN0OltOU1VSTCBfd2ViX1VSTFdp
dGhXVEZTdHJpbmc6ZGV0YWlscy5zb3VyY2VVUkxdIGZvcktleTpfV0tKYXZhU2NyaXB0RXhjZXB0
aW9uU291cmNlVVJMRXJyb3JLZXldOworICAgICAgICAgICAgaWYgKCFkZXRhaWxzLT5zb3VyY2VV
UkwuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6W05TVVJM
IF93ZWJfVVJMV2l0aFdURlN0cmluZzpkZXRhaWxzLT5zb3VyY2VVUkxdIGZvcktleTpfV0tKYXZh
U2NyaXB0RXhjZXB0aW9uU291cmNlVVJMRXJyb3JLZXldOwogCiAgICAgICAgICAgICByYXdIYW5k
bGVyKG5pbCwgYWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOldLRXJyb3JE
b21haW4gY29kZTpXS0Vycm9ySmF2YVNjcmlwdEV4Y2VwdGlvbk9jY3VycmVkIHVzZXJJbmZvOnVz
ZXJJbmZvLmdldCgpXSkuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZTNiNDUyMzk5NzkzYTZiMWQ2NzQ2Y2Y5
YmY0NDg4MzQ1OGZlYWI3Zi4uMmEzZjE5NjYzNTgxODExOWI1MzMxMWMwYzgzNzVlZTE4YzQxYzI3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zODQ1LDE4
ICszODQ1LDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVj
ZXNzYXJ5KCkKICAgICAgICAgbGF1bmNoUHJvY2Vzcyh7IH0sIFByb2Nlc3NMYXVuY2hSZWFzb246
OkluaXRpYWxQcm9jZXNzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJ
bk1haW5GcmFtZShjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgYm9vbCBoYWRF
eGNlcHRpb24sIGNvbnN0IEV4Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
JiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZShjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6
OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2Vi
Q29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCiB7CiAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoc2Ny
aXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6Om51bGxvcHQsIFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
U2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwg
Y29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJ
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBib29sIGhhZEV4Y2VwdGlvbiwgY29uc3QgRXhjZXB0
aW9uRGV0YWlscyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2
b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29u
c3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8
U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICAvLyBGb3IgYmFja3dhcmQtY29tcGF0aWJp
bGl0eSBzdXBwb3J0IHJ1bm5pbmcgc2NyaXB0IGluIGEgV2ViVmlldyB3aGljaCBoYXMgbm90IGRv
bmUgYW55IGxvYWRzIHlldHMuCiAgICAgbGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgp
OwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVu
Y3Rpb24obnVsbHB0ciwgZmFsc2UsIHsgfSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7
CisgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0ciwgeyB9LCBDYWxsYmFja0Jhc2U6OkVy
cm9yOjpVbmtub3duKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzg2NCw3ICszODY0
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdv
cmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib28KICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzY3JpcHQsIGZvcmNlVXNlckdl
c3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
cnVuSmF2YVNjcmlwdEluRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBFeGNlcHRp
b25EZXRhaWxzJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3Zv
aWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpG
dW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8RXhjZXB0
aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7
CiAgICAgQVNTRVJUKG1haW5GcmFtZSgpLT5mcmFtZUlEKCkgIT0gZnJhbWVJRCk7CiAgICAgYXV0
byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6
OnJ1bkphdmFTY3JpcHRJbkZyYW1lIl9zKSk7CkBAIC02Nzg3LDcgKzY3ODcsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6aW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
c2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVu
Y2UsIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBFeGNlcHRpb25EZXRhaWxzJiBkZXRhaWxzLCBD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2NyaXB0VmFsdWVDYWxs
YmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIE9wdGlvbmFsPEV4
Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBh
dXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxTY3JpcHRWYWx1ZUNhbGxiYWNrPihjYWxs
YmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKSB7CkBAIC02Nzk2LDcgKzY3OTYsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGRhdGFSZWZlcmVuY2UsCiAgICAgfQogCiAgICAgaWYgKGRhdGFSZWZlcmVuY2UuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUo
bnVsbHB0ciwgaGFkRXhjZXB0aW9uLCBkZXRhaWxzKTsKKyAgICAgICAgY2FsbGJhY2stPnBlcmZv
cm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShudWxscHRyLCBkZXRhaWxzKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtNjgwNCw3ICs2ODA0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNj
cmlwdFZhbHVlQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNl
LAogICAgIGRhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkYXRhUmVmZXJlbmNlLnNpemUoKSk7
CiAgICAgZGF0YS5hcHBlbmQoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6
ZSgpKTsKIAotICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJ
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KFdURk1vdmUoZGF0YSkpLnB0cigpLCBoYWRF
eGNlcHRpb24sIGRldGFpbHMpOworICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0
dXJuVmFsdWUoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KFdURk1vdmUoZGF0YSkp
LnB0cigpLCBkZXRhaWxzKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVkUGFnZXND
YWxsYmFjayhjb25zdCBWZWN0b3I8SW50UmVjdD4mIHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2Nh
bGVGYWN0b3JGb3JQcmludGluZywgY29uc3QgRmxvYXRCb3hFeHRlbnQmIGNvbXB1dGVkUGFnZU1h
cmdpbiwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCBhZTM4NTIyMjFkNGE1MjQzNTUyYmEwMjNmMmY0OGI5NGVmN2I5OGFkLi4w
Mjc0ZDdjZTJmNDM2ODE1NGNjYjY3OTI1Y2QwZjlkYTQzYzI5Y2Q1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNzUsNiArNzUsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdBY3Rp
b25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVudFRyYWNraW5nUmVnaW9ucy5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvRXhjZXB0aW9uRGV0YWlscy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udEF0
dHJpYnV0ZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPiAvLyBGSVhNRTogTW92ZSBMYXlvdXRWaWV3cG9ydENv
bnN0cmFpbnQgdG8gaXRzIG93biBmaWxlIGFuZCBzdG9wIGluY2x1ZGluZyB0aGlzLgpAQCAtMzM1
LDcgKzMzNiw3IEBAIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6RGF0YSo+IERhdGFDYWxs
YmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPHVpbnQ2NF90PiBVbnNpZ25lZENhbGxiYWNr
OwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8RWRpdGluZ1JhbmdlPiBFZGl0aW5nUmFuZ2VDYWxs
YmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFN0cmluZyY+IFN0cmluZ0NhbGxi
YWNrOwotdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUq
LCBib29sLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJj4gU2NyaXB0VmFsdWVDYWxs
YmFjazsKK3R5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
KiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4+IFNjcmlwdFZhbHVlQ2FsbGJh
Y2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBXZWJDb3JlOjpGb250QXR0cmlidXRl
cyY+IEZvbnRBdHRyaWJ1dGVzQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmPiBTZWxlY3Rpb25Db250ZXh0
Q2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxib29sPiBCb29sQ2FsbGJhY2s7CkBA
IC0xMDYwLDEwICsxMDYxLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFNlbGVjdGlvbkFzV2Vi
QXJjaGl2ZURhdGEoRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYpOwogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSosIFdURjo6
RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwog
ICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQcm94eSosIEZ1bmN0aW9uPHZv
aWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKLSAgICB2b2lkIHJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmLCBib29sLCBXVEY6OkZ1bmN0aW9uPHZv
aWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0
IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxs
YmFja0Z1bmN0aW9uKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdv
cmxkKGNvbnN0IFN0cmluZyYsIGJvb2wsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFt
ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgYm9vbCBo
YWRFeGNlcHRpb24sIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJ
bk1haW5GcmFtZShjb25zdCBTdHJpbmcmLCBib29sLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWls
cz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pOworICAgIHZvaWQg
cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiwgYm9vbCwg
Y29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJ
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRh
aWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7CiAgICAgLy8g
Rm9yIHN1YiBmcmFtZXMuCi0gICAgdm9pZCBydW5KYXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1
cmUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wg
aGFkRXhjZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0
SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBi
b29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKICAgICB2b2lkIGZvcmNlUmVwYWlu
dChSZWZQdHI8Vm9pZENhbGxiYWNrPiYmKTsKIAogICAgIGZsb2F0IGhlYWRlckhlaWdodChXZWJG
cmFtZVByb3h5Jik7CkBAIC0xOTQzLDcgKzE5NDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYm9v
bENhbGxiYWNrKGJvb2wgcmVzdWx0LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHN0cmluZ0NhbGxi
YWNrKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgaW52YWxpZGF0ZVN0cmlu
Z0NhbGxiYWNrKENhbGxiYWNrSUQpOwotICAgIHZvaWQgc2NyaXB0VmFsdWVDYWxsYmFjayhjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBib29sIGhhZEV4Y2VwdGlvbiwgY29uc3QgV2ViQ29yZTo6
RXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNrSUQpOworICAgIHZvaWQgc2NyaXB0VmFsdWVDYWxs
YmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRp
b25EZXRhaWxzPiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBjb21wdXRlZFBhZ2VzQ2FsbGJhY2so
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiwgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JG
b3JQcmludGluZywgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIGNvbXB1dGVkUGFnZU1h
cmdpbiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCB2YWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhjb25z
dCBTdHJpbmcmLCBib29sLCBpbnQsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgdW5zaWduZWRDYWxs
YmFjayh1aW50NjRfdCwgQ2FsbGJhY2tJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMGM2NTFlNjg1YjI5NzlmNGUzNmU5Yzhh
NTg2NDE2ZDY3MWJkZmZmNS4uNGRlZjVkYzAxZGI0ZDQyOWZiYjdkNzE2OTM4YTExMTcwZDllYTIz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgpAQCAtMTY5LDcgKzE2OSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAg
U3RyaW5nQ2FsbGJhY2soU3RyaW5nIHJlc3VsdFN0cmluZywgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCiAgICAgQm9vbENhbGxiYWNrKGJvb2wgcmVzdWx0LCBXZWJLaXQ6OkNhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKICAgICBJbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2soV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCi0gICAgU2NyaXB0VmFsdWVDYWxsYmFjayhJUEM6OkRhdGFSZWZl
cmVuY2UgcmVzdWx0RGF0YSwgYm9vbCBoYWRFeGNlcHRpb24sIHN0cnVjdCBXZWJDb3JlOjpFeGNl
cHRpb25EZXRhaWxzIGRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAg
IFNjcmlwdFZhbHVlQ2FsbGJhY2soSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIE9wdGlv
bmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogICAgIENvbXB1dGVkUGFnZXNDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6
SW50UmVjdD4gcGFnZVJlY3RzLCBkb3VibGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBX
ZWJDb3JlOjpSZWN0RWRnZXM8ZmxvYXQ+IGNvbXB1dGVkUGFnZU1hcmdpbiwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiAgICAgVmFsaWRhdGVDb21tYW5kQ2FsbGJhY2soU3RyaW5nIGNv
bW1hbmQsIGJvb2wgaXNFbmFibGVkLCBpbnQzMl90IHN0YXRlLCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKICAgICBFZGl0aW5nUmFuZ2VDYWxsYmFjayhzdHJ1Y3QgV2ViS2l0OjpFZGl0
aW5nUmFuZ2UgcmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA4OGUxM2Fk
ODJhZGNlYzRmYmVlNjg1ZjJjN2JlNDU5OGY4ZDRjYmJmLi4zZWEwMDZiM2NlMzhlMzg5NDFmZGJk
NTg2NzNjZDgxYTY4MmMyNTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTI1Myw3ICsxMjUzLDcgQEAgdm9pZCBQbHVnaW5WaWV3
OjpwZXJmb3JtSmF2YVNjcmlwdFVSTFJlcXVlc3QoVVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICAv
LyBFdmFsdWF0ZSB0aGUgSmF2YVNjcmlwdCBjb2RlLiBOb3RlIHRoYXQgcnVubmluZyBKYXZhU2Ny
aXB0IGhlcmUgY291bGQgY2F1c2UgdGhlIHBsdWctaW4gdG8gYmUgZGVzdHJveWVkLCBzbyB3ZQog
ICAgIC8vIGdyYWIgcmVmZXJlbmNlcyB0byB0aGUgcGx1Zy1pbiBoZXJlLgogICAgIFJlZlB0cjxQ
bHVnaW4+IHBsdWdpbiA9IG1fcGx1Z2luOwotICAgIGF1dG8gcmVzdWx0ID0gZnJhbWUtPnNjcmlw
dCgpLmV4ZWN1dGVTY3JpcHQoanNTdHJpbmcsIHJlcXVlc3QtPmFsbG93UG9wdXBzKCkpOworICAg
IGF1dG8gcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2Vw
dGlvbihqc1N0cmluZywgcmVxdWVzdC0+YWxsb3dQb3B1cHMoKSk7CiAKICAgICBpZiAoIXJlc3Vs
dCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hl
ci5jcHAKaW5kZXggOTA4ZTM5YWZkYjBjODg5Y2ZlNTY1MmIzOWFkYzQ3MGMzYTA5YTlhMi4uYzE4
OWU5ODI1YWQ0OTQ3MGVkNjI0MzVlODZkNTlkZjYwZjM4YWU4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRj
aGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgV2ViSW5z
cGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpldmFsdWF0ZU9yUXVldWVFeHByZXNzaW9uKGNv
bnN0IFN0cmluZyYKIAogICAgIEFTU0VSVChtX3F1ZXVlLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJU
KCFtX3BhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuaXNQYXVzZWQoKSk7Ci0g
ICAgbV9wYWdlLmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQo
ZXhwcmVzc2lvbik7CisgICAgbV9wYWdlLmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnNjcmlwdCgp
LmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihleHByZXNzaW9uKTsKIH0KIAogdm9pZCBX
ZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OmV2YWx1YXRlUXVldWVkRXhwcmVzc2lv
bnMoKQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNw
YXRjaGVyOjpldmFsdWF0ZVF1ZXVlZEV4cHJlc3Npb25zKCkKIAogICAgIGZvciAoY29uc3QgU3Ry
aW5nJiBleHByZXNzaW9uIDogbV9xdWV1ZSkgewogICAgICAgICBBU1NFUlQoIW1fcGFnZS5jb3Jl
UGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5pc1BhdXNlZCgpKTsKLSAgICAgICAgbV9wYWdl
LmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoZXhwcmVzc2lv
bik7CisgICAgICAgIG1fcGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVj
dXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oZXhwcmVzc2lvbik7CiAgICAgfQogCiAgICAgbV9x
dWV1ZS5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAppbmRleCA3MzVmZWE0ZWUxM2JlNDI1YzIzNGJlOTIxMjBmZTllN2JjYTJkNWM3Li4xMjQ3
MDJjZTVlODkzMDNiY2I2MzExZWExNWNmNDdkMDEyZTM3ODEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzM1MywyMyArMzM1MywyNSBAQCB2
b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcm
IHNjcmlwdCwgYm9vbCBmb3JjZVVzZQogICAgIC8vIE5PVEU6IFdlIG5lZWQgdG8gYmUgY2FyZWZ1
bCB3aGVuIHJ1bm5pbmcgc2NyaXB0cyB0aGF0IHRoZSBvYmplY3RzIHdlIGRlcGVuZCBvbiBkb24n
dAogICAgIC8vIGRpc2FwcGVhciBkdXJpbmcgc2NyaXB0IGV4ZWN1dGlvbi4KIAotICAgIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZTsKICAgICBKU0xv
Y2tIb2xkZXIgbG9jayhjb21tb25WTSgpKTsKLSAgICBib29sIGhhZEV4Y2VwdGlvbiA9IHRydWU7
Ci0gICAgRXhjZXB0aW9uRGV0YWlscyBkZXRhaWxzOworICAgIFZhbHVlQW5kRXhjZXB0aW9uIHJl
c3VsdDsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkUmVzdWx0
VmFsdWU7CisKICAgICBhdXRvKiB3b3JsZCA9IHdvcmxkTmFtZSA/IEluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQ6OmZpbmQod29ybGROYW1lLnZhbHVlKCkpIDogJkluamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQ6Om5vcm1hbFdvcmxkKCk7CiAgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5jb3JlRnJhbWUo
KSAmJiB3b3JsZCkgewotICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHRWYWx1ZSA9IGZyYW1lLT5j
b3JlRnJhbWUoKS0+c2NyaXB0KCkuZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQt
PmNvcmVXb3JsZCgpLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsICZkZXRhaWxzKSkgewotICAg
ICAgICAgICAgaGFkRXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIHJlc3VsdCA9IGZyYW1lLT5j
b3JlRnJhbWUoKS0+c2NyaXB0KCkuZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQt
PmNvcmVXb3JsZCgpLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUpOworICAgICAgICBpZiAocmVz
dWx0LmZpcnN0KSB7CisgICAgICAgICAgICBBU1NFUlQoIXJlc3VsdC5zZWNvbmQpOwogICAgICAg
ICAgICAgc2VyaWFsaXplZFJlc3VsdFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUoZnJhbWUtPmpzQ29udGV4dEZvcldvcmxkKHdvcmxkKSwKLSAgICAgICAgICAgICAgICB0b1Jl
ZihmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3b3JsZC0+Y29yZVdv
cmxkKCkpLCByZXN1bHRWYWx1ZSksIG51bGxwdHIpOworICAgICAgICAgICAgICAgIHRvUmVmKGZy
YW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkLT5jb3JlV29ybGQo
KSksIHJlc3VsdC5maXJzdCksIG51bGxwdHIpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgSVBD
OjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CiAgICAgaWYgKHNlcmlhbGl6ZWRSZXN1bHRW
YWx1ZSkKICAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0
YSgpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFj
ayhkYXRhUmVmZXJlbmNlLCBoYWRFeGNlcHRpb24sIGRldGFpbHMsIGNhbGxiYWNrSUQpKTsKKwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayhkYXRh
UmVmZXJlbmNlLCByZXN1bHQuc2Vjb25kLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFn
ZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3Jp
cHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGRO
YW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KaW5kZXgg
OTQ3YmZjNTM0MmNiY2FjMDlhYWFmNTEyY2NkYjZkZmU5Y2IxY2E0MS4uZWE1MDc4ZWQxOGY1NTA1
MmRmMmU0MjgxM2UyYTZmNzA4NTVjZTdjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpAQCAt
Mzc5LDcgKzM3OSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUoY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICBbY29udGVudENvcHkgd3JpdGVUb1VSTDphY3R1YWxVUkwgYXRvbWljYWxseTpZ
RVMgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6TlVMTF07CiAKLSAgICAgICAg
Y29yZShbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIgZnJvbnRlbmRXZWJWaWV3XSktPm1haW5G
cmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCJJbnNwZWN0b3JGcm9udGVuZEFQSS5zYXZlZFVSTChcIiVAXCIpIiwgYWN0dWFsVVJMLmFic29s
dXRlU3RyaW5nXSk7CisgICAgICAgIGNvcmUoW21fZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyIGZy
b250ZW5kV2ViVmlld10pLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3Jp
bmdFeGNlcHRpb24oW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJbnNwZWN0b3JGcm9udGVu
ZEFQSS5zYXZlZFVSTChcIiVAXCIpIiwgYWN0dWFsVVJMLmFic29sdXRlU3RyaW5nXSk7CiAgICAg
fTsKIAogICAgIGlmICghZm9yY2VTYXZlRGlhbG9nKSB7CkBAIC00MjUsNyArNDI1LDcgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3VnZ2Vz
dGVkVVJMLCBjb25zdCBTdHJpbmcKICAgICBbaGFuZGxlIHdyaXRlRGF0YTpbY29udGVudCBkYXRh
VXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOwogICAgIFtoYW5kbGUgY2xvc2VG
aWxlXTsKIAotICAgIGNvcmUoW21fZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyIGZyb250ZW5kV2Vi
Vmlld10pLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KFtOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuYXBwZW5kZWRUb1VSTChcIiVAXCIp
IiwgW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ11dKTsKKyAgICBjb3JlKFttX2Zyb250ZW5kV2lu
ZG93Q29udHJvbGxlciBmcm9udGVuZFdlYlZpZXddKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhl
Y3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAi
SW5zcGVjdG9yRnJvbnRlbmRBUEkuYXBwZW5kZWRUb1VSTChcIiVAXCIpIiwgW2FjdHVhbFVSTCBh
YnNvbHV0ZVN0cmluZ11dKTsKIH0KIAogLy8gTUFSSzogLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggMThkM2Q5ZWMxNGQ4YzY5NWQwM2Y5M2MzZGQy
MDE2YWQ0MDk0YTQ1OC4uMDViNTY5MzA0MzY0YjQ5Njk3MWQ4OWRkOTdmZjhkZTJjZjQ1NjcwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC03MDAs
NyArNzAwLDcgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZy
b21TdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGZvcmNlVXMKICAgICBKU0M6OkpTTG9ja0hvbGRl
ciBqc2NMb2NrKGxleGljYWxHbG9iYWxPYmplY3QpOwogI2VuZGlmCiAKLSAgICBKU0M6OkpTVmFs
dWUgcmVzdWx0ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChz
dHJpbmcsIGZvcmNlVXNlckdlc3R1cmUpOworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBfcHJp
dmF0ZS0+Y29yZUZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24o
c3RyaW5nLCBmb3JjZVVzZXJHZXN0dXJlKTsKIAogICAgIGlmICghX3ByaXZhdGUtPmNvcmVGcmFt
ZSkgLy8gSW4gY2FzZSB0aGUgc2NyaXB0IHJlbW92ZWQgb3VyIGZyYW1lIGZyb20gdGhlIHBhZ2Uu
CiAgICAgICAgIHJldHVybiBAIiI7CkBAIC0yMDk2LDcgKzIwOTYsNyBAQCAtIChOU1N0cmluZyAq
KV9zdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzooTlNTdHJpbmcgKilzdHJp
bmcgd2l0aEdsbwogICAgIEFTU0VSVChmcmFtZS0+ZG9jdW1lbnQoKSk7CiAgICAgUmV0YWluUHRy
PFdlYkZyYW1lPiB3ZWJGcmFtZShraXQoZnJhbWUpKTsgLy8gUnVubmluZyBhcmJpdHJhcnkgSmF2
YVNjcmlwdCBjYW4gZGVzdHJveSB0aGUgZnJhbWUuCiAKLSAgICBKU0M6OkpTVmFsdWUgcmVzdWx0
ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKCpjb3JlKHdv
cmxkKSwgc3RyaW5nLCB0cnVlKTsKKyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gZnJhbWUtPnNj
cmlwdCgpLmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKCpjb3JlKHdvcmxkKSwgc3RyaW5n
LCB0cnVlKS5maXJzdDsKIAogICAgIGlmICghd2ViRnJhbWUtPl9wcml2YXRlLT5jb3JlRnJhbWUp
IC8vIEluIGNhc2UgdGhlIHNjcmlwdCByZW1vdmVkIG91ciBmcmFtZSBmcm9tIHRoZSBwYWdlLgog
ICAgICAgICByZXR1cm4gQCIiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCmluZGV4IDQ3YWFlMzI4ZGJjNmFjZmJlYWJiM2FlYzZkMjc4M2NiNGY1OWYwNzEuLjk2
MWUwNWNmMWMyMjlkZTExMDQ2YjdjNGZiODM0ZjUzMzliYjgyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTc5MDgsNyArNzkwOCw3IEBAIC0gKE5T
QXBwbGVFdmVudERlc2NyaXB0b3IgKilhZURlc2NCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0
cmluZzooTlNTdHJpbmcgKilzCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgaWYgKCFjb3JlRnJh
bWUtPmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgSlNDOjpKU1ZhbHVlIHJl
c3VsdCA9IGNvcmVGcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChzY3JpcHQsIHRydWUpOwor
ICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBjb3JlRnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3Jp
cHRJZ25vcmluZ0V4Y2VwdGlvbihzY3JpcHQsIHRydWUpOwogICAgIGlmICghcmVzdWx0KSAvLyBG
SVhNRTogcGFzcyBlcnJvcnMKICAgICAgICAgcmV0dXJuIDA7CiAgICAgSlNDOjpKU0xvY2tIb2xk
ZXIgbG9jayhjb3JlRnJhbWUtPnNjcmlwdCgpLmdsb2JhbE9iamVjdChXZWJDb3JlOjptYWluVGhy
ZWFkTm9ybWFsV29ybGQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4
IDZlZmFlOGY2MjI5ODQ5Y2ExZjU5NmI3MzU1Y2VlZjQzY2ZkNjkwYTguLmM3NzhlMjJiNzBkY2Yx
ODU1MjJjYTZlMjA5Yjg3MDkxOTViNTE0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFt
ZS5jcHAKQEAgLTIwNTUsNyArMjA1NSw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OnN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHRJblNjcmlwdFdvcmxkKElXZWJTY3JpcHRXb3JsZCogaVdvCiAgICAg
Ly8gR2V0IHRoZSBmcmFtZSBmcm9tZSB0aGUgZ2xvYmFsIG9iamVjdCB3ZSd2ZSBzZXR0bGVkIG9u
LgogICAgIEZyYW1lKiBmcmFtZSA9IGFueVdvcmxkR2xvYmFsT2JqZWN0LT53cmFwcGVkKCkuZnJh
bWUoKTsKICAgICBBU1NFUlQoZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIEpTVmFsdWUgcmVzdWx0
ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLT53b3JsZCgpLCBz
dHJpbmcsIHRydWUpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1
dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24od29ybGQtPndvcmxkKCksIHN0cmluZywg
dHJ1ZSk7CiAKICAgICBpZiAoIWZyYW1lKSAvLyBJbiBjYXNlIHRoZSBzY3JpcHQgcmVtb3ZlZCBv
dXIgZnJhbWUgZnJvbSB0aGUgcGFnZS4KICAgICAgICAgcmV0dXJuIFNfT0s7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385510</attachid>
            <date>2019-12-12 10:22:57 -0800</date>
            <delta_ts>2019-12-12 11:47:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205151-20191212102256.patch</filename>
            <type>text/plain</type>
            <size>48421</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjU5MGYyYWFjZjNmZTJj
NWE4ZDlkYWUwZjFmOGM4NDY0YTY1MGE3YS4uMzgzYTYzMGViMmM5YmNmOTI2NTBiNDgyZDM2Mzg3
NGFiY2RiN2ZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE5LTEyLTEyICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRD
b250cm9sbGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoUmVm
YWN0b3IsIG5vIGJlaGF2aW9yIGNoYW5nZSkuCisKKyAgICAgICAgVGhlcmUncyBzbyBtYW55IEV4
Y2VwdGlvbkRldGFpbHMqIG51bGwgcG9pbnRlcnMgYmVpbmcgcGFzc2VkIGFyb3VuZCBpbiB0aGUg
U2NyaXB0Q29udHJvbGxlcgorICAgICAgICBmYW1pbHkgb2YgZnVuY3Rpb25zLgorCisgICAgICAg
IExldCdzIG1ha2UgaXQgYSBsaXR0bGUgbW9yZSBleHBsaWNpdCB3aGljaCBjYWxsZXJzIGdldCBl
eGNlcHRpb25zIGFuZCB3aGljaCBkb24ndC4KKworICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9R
dWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlF1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50OjplbnN1cmVSZXBsYWNlbWVudFNjcmlwdEluamVjdGVkKToKKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUpOgorCisgICAgICAgICogYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVy
OjpldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJ
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2Vy
QWdlbnRTY3JpcHRJbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6
OmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQpOiBEZWxldGVkLgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKworICAgICAgICAqIGNvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9jZXNzQ29udGVudFJ1
bGVMaXN0c0ZvckxvYWQpOgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjplbnN1cmVQbHVnSW5zSW5qZWN0ZWRTY3JpcHQpOgorCisgICAg
ICAgICogZG9tL1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxl
bWVudDo6ZXhlY3V0ZUNsYXNzaWNTY3JpcHQpOgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZU1l
ZGlhQ29udHJvbHNJbmplY3RlZFNjcmlwdCk6CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsOjpldmFsdWF0ZUFzQm9vbGVhbik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpldmFsdWF0ZU9uTG9hZCk6CisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZCk6
CisKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RmlsdGVyOjpkaWREZWNpZGUpOgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KToK
KworICAgICAgICAqIHhtbC9YTUxUcmVlVmlld2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TFRyZWVWaWV3ZXI6OnRyYW5zZm9ybURvY3VtZW50VG9UcmVlVmlldyk6CisKIDIwMTktMTItMTEg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBUcnlpbmcgdG8gc2V0
IHRvU3RyaW5nIC8gdmFsdWVPZiBvbiBhIGNyb3NzLW9yaWdpbiBMb2NhdGlvbiBvYmplY3Qgc2hv
dWxkIHRocm93IGEgU2VjdXJpdHlFcnJvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4ZDc2MmFkOWEzODY4MzQ5MjU4
YzAyYzk2MmY5NWZmOTNhZjI1NzM3Li5lNzIwYmY3ODUzMzI0MzJmY2U5ZjNkMjQ1YjkxNjZiMTNk
NzFlYjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE5LTEyLTEyICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRDb250cm9s
bGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHA6CisgICAgICAgIChXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2Vi
VmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmZvcmNlVXNlckdlc3R1cmU6Y29tcGxldGlvbkhhbmRs
ZXI6XSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdv
cmxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFt
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBlcmZv
cm1KYXZhU2NyaXB0VVJMUmVxdWVzdCk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpldmFsdWF0ZU9yUXVldWVFeHByZXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVy
OjpldmFsdWF0ZVF1ZXVlZEV4cHJlc3Npb25zKToKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cnVuSmF2YVNjcmlw
dCk6CisKIDIwMTktMTItMTEgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCBhIG5pdCBhZnRlciByMjUzMzY2CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKaW5kZXggYjlkYWUyY2UxMGUwODcyZDM1MzA4YzhjOGNjNjBkZTIwZjI1Zjc3NS4u
ZTFmNzFhNWQ1NjkwYzM0NTI0ZGI2ODYyOWI4NDkwOTE1M2RlNzA3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTEyLTEyICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRDb250cm9sbGVy
J3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZCk6CisgICAgICAg
IAorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9z
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpmb3JjZVVzZXJHZXN0dXJlOl0p
OgorICAgICAgICAoLVtXZWJGcmFtZSBfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21T
dHJpbmc6d2l0aEdsb2JhbE9iamVjdDppblNjcmlwdFdvcmxkOl0pOgorCisgICAgICAgICogV2Vi
Vmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IGFlRGVzY0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHRGcm9tU3RyaW5nOl0pOgorCiAyMDE5LTEyLTA5ICBFcmljIENhcmxzb24gIDxlcmlj
LmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBtZWRpYSBpbiB0aGUgR1BVIHBy
b2Nlc3MgcHJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDQyMDE0ZDk5
ZDUwMjE2ZmE5MmQ0OWE1OTJhMDA2NzgxOTJkNjRkNDEuLjE0MWNjMzk0YWM4ZWIzZDQ2MDQ1NmM5
OWNiNmI5YzM0NmE3MjBjZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxOS0xMi0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVmYWN0b3IgU2NyaXB0Q29udHJvbGxlcidzIHByb2xpZmVyYXRpb24gb2YgRXhj
ZXB0aW9uRGV0YWlscyouCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDUxNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVn
aW5WaWV3OjpwZXJmb3JtUmVxdWVzdCk6CisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAg
ICAgIChXZWJGcmFtZTo6c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEluU2NyaXB0V29ybGQp
OgorCiAyMDE5LTEyLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgUGFnZUNvbmZpZ3VyYXRpb246OmRyYWdDbGllbnQgc2hvdWxkIHVzZSBhIHNtYXJ0IHBvaW50
ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQppbmRleCA5ODEyNmUwM2YzZTMyMTQ3NWY3NTExNDY0
MmFkOGQwYjI0OGJhZDIzLi4wM2QyMWRlN2Q1YWMwNjliMmNhYTNkOTYxMWI5OGY4NGEzNTE3ZjRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1
aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCkBAIC0xNTgsNyArMTU4LDcgQEAgYm9vbCBRdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6ZW5zdXJlUmVwbGFjZW1lbnRTY3JpcHRJbmplY3RlZCgp
CiAgICAgaWYgKHJlcGxhY2VtZW50RnVuY3Rpb24uaXNGdW5jdGlvbih2bSkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIAotICAgIHNjcmlwdENvbnRyb2xsZXIuZXZhbHVhdGVJbldvcmxkKFNj
cmlwdFNvdXJjZUNvZGUocXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRTY3JpcHQoKSksIHdvcmxk
KTsKKyAgICBzY3JpcHRDb250cm9sbGVyLmV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9u
KFNjcmlwdFNvdXJjZUNvZGUocXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRTY3JpcHQoKSksIHdv
cmxkKTsKICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAgICAgIExP
RyhQbHVnaW5zLCAiJXAgLSBFeGNlcHRpb24gd2hlbiBldmFsdWF0aW5nIFF1aWNrVGltZSBwbHVn
aW4gcmVwbGFjZW1lbnQgc2NyaXB0IiwgdGhpcyk7CiAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0
aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRB
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNw
cAppbmRleCAyOGNmNTY0NjZiY2EzYzljMmQyMDg4OTUxYzk4MDgyZmRiNTFhODU2Li44ZTRjN2Iz
ODEyNDRlNzc2YmRkNTgzNGFlNDE5MzZkN2RjYzYyMjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lk
IFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgaWYgKG1f
ZnVuY3Rpb24pCiAgICAgICAgIGV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dCh3aW5kb3csIHdpbmRv
dy0+cHJveHkoKSwgZG9jdW1lbnQpOwogICAgIGVsc2UKLSAgICAgICAgZnJhbWUtPnNjcmlwdCgp
LmV4ZWN1dGVTY3JpcHRJbldvcmxkKG1faXNvbGF0ZWRXb3JsZCwgbV9jb2RlKTsKKyAgICAgICAg
ZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24obV9p
c29sYXRlZFdvcmxkLCBtX2NvZGUpOwogfQogCiB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0
ZShXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGIxZmRlODUwMmU0ZGEw
YjBmNjlmNDgxNmQ0YTQxMmVjNGVlNGM3M2YuLjRjZWQ0YzNjMjRlYjA2MGEyNjY1NTkwNjg5ODJm
NDMxYzY2MTk4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuY3BwCkBAIC0xMDcsNyArMTA3LDEyIEBAIFNjcmlwdENvbnRyb2xsZXI6On5TY3Jp
cHRDb250cm9sbGVyKCkKICAgICB9CiB9CiAKLUpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZh
bHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQsIEV4Y2VwdGlvbkRldGFpbHMqIGV4Y2VwdGlvbkRldGFpbHMpCitKU0M6
OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRp
b24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCkKK3sKKyAgICByZXR1cm4gZXZhbHVhdGVJbldvcmxkKHNvdXJjZUNvZGUsIHdvcmxkKS5m
aXJzdDsKK30KKworVmFsdWVBbmRFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJ
bldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CiAKQEAgLTEz
NSwxOSArMTQwLDIxIEBAIEpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxk
KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPCiAKICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUpOwogCisgICAgT3B0aW9u
YWw8RXhjZXB0aW9uRGV0YWlscz4gb3B0aW9uYWxEZXRhaWxzOwogICAgIGlmIChldmFsdWF0aW9u
RXhjZXB0aW9uKSB7Ci0gICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmZ2xvYmFsT2JqZWN0LCBldmFs
dWF0aW9uRXhjZXB0aW9uLCBzb3VyY2VDb2RlLmNhY2hlZFNjcmlwdCgpLCBleGNlcHRpb25EZXRh
aWxzKTsKLSAgICAgICAgbV9zb3VyY2VVUkwgPSBzYXZlZFNvdXJjZVVSTDsKLSAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBkZXRhaWxzOworICAgICAgICByZXBv
cnRFeGNlcHRpb24oJmdsb2JhbE9iamVjdCwgZXZhbHVhdGlvbkV4Y2VwdGlvbiwgc291cmNlQ29k
ZS5jYWNoZWRTY3JpcHQoKSwgJmRldGFpbHMpOworICAgICAgICBvcHRpb25hbERldGFpbHMgPSBX
VEZNb3ZlKGRldGFpbHMpOworICAgICAgICByZXR1cm5WYWx1ZSA9IHsgfTsKICAgICB9CiAKICAg
ICBtX3NvdXJjZVVSTCA9IHNhdmVkU291cmNlVVJMOwotICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
KyAgICByZXR1cm4geyByZXR1cm5WYWx1ZSwgb3B0aW9uYWxEZXRhaWxzIH07CiB9CiAKLUpTVmFs
dWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291
cmNlQ29kZSwgRXhjZXB0aW9uRGV0YWlscyogZXhjZXB0aW9uRGV0YWlscykKK0pTQzo6SlNWYWx1
ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlw
dFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCiB7Ci0gICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChz
b3VyY2VDb2RlLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgZXhjZXB0aW9uRGV0YWlscyk7Cisg
ICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKHNvdXJjZUNvZGUsIG1h
aW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKIH0KIAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjpsb2Fk
TW9kdWxlU2NyaXB0SW5Xb3JsZChMb2FkYWJsZU1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0LCBj
b25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYgdG9w
TGV2ZWxGZXRjaFBhcmFtZXRlcnMsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCkBAIC01NDgsNyAr
NTU1LDEyIEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJTY3JpcHRPYmplY3RzKCkKICNl
bmRpZgogfQogCi1KU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxk
KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNl
VXNlckdlc3R1cmUsIEV4Y2VwdGlvbkRldGFpbHMqIGV4Y2VwdGlvbkRldGFpbHMpCitKU0M6OkpT
VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2Vw
dGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBm
b3JjZVVzZXJHZXN0dXJlKQoreworICAgIHJldHVybiBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3Js
ZCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlKS5maXJzdDsKK30KKworVmFsdWVBbmRFeGNlcHRp
b24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxk
JiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKIHsK
ICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGZvcmNlVXNlckdlc3R1
cmUgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlKSA6IFdURjo6bnVsbG9wdCk7CiAgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2Rl
KHNjcmlwdCwgVVJMKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpLCBUZXh0UG9zaXRpb24oKSwg
SlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIENhY2hlZFNjcmlwdEZldGNo
ZXI6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmNoYXJzZXQoKSkpOwpAQCAtNTU2LDE3ICs1
NjgsMTcgQEAgSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChE
T01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHIKICAgICBpZiAoIWNhbkV4ZWN1dGVTY3Jp
cHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNlZCgpKQogICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3b3JsZCwgZXhj
ZXB0aW9uRGV0YWlscyk7CisgICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3
b3JsZCk7CiB9CiAKLUpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNj
cmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQs
IGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgRXhjZXB0aW9uRGV0YWlscyogZXhjZXB0aW9uRGV0YWls
cykKK1ZhbHVlQW5kRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRT
Y3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0
LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiB7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqbV9mcmFt
ZS5kb2N1bWVudCgpOwogICAgIGlmICghc2hvdWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRzKGRvY3Vt
ZW50KSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGRvY3VtZW50LnNldEhhc0V2YWx1YXRl
ZFVzZXJBZ2VudFNjcmlwdHMoKTsKLSAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdEluV29ybGQod29y
bGQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgZXhjZXB0aW9uRGV0YWlscyk7CisgICAgcmV0
dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUp
OwogfQogCiBib29sIFNjcmlwdENvbnRyb2xsZXI6OnNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0
cyhEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CkBAIC01OTgsMTQgKzYxMCwxMCBAQCBib29sIFNj
cmlwdENvbnRyb2xsZXI6OmNhbkV4ZWN1dGVTY3JpcHRzKFJlYXNvbkZvckNhbGxpbmdDYW5FeGVj
dXRlU2NyaXB0cyByZWFzbwogICAgIHJldHVybiBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmFs
bG93U2NyaXB0KG1fZnJhbWUuc2V0dGluZ3MoKS5pc1NjcmlwdEVuYWJsZWQoKSk7CiB9CiAKLUpT
VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlw
dCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBFeGNlcHRpb25EZXRhaWxzKiBleGNlcHRpb25EZXRh
aWxzKQorSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJZ25vcmlu
Z0V4Y2VwdGlvbihjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQog
ewogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoZm9yY2VVc2VyR2Vz
dHVyZSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNl
ckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KTsKLSAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdChTY3Jp
cHRTb3VyY2VDb2RlKHNjcmlwdCwgVVJMKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpLCBUZXh0
UG9zaXRpb24oKSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIENhY2hl
ZFNjcmlwdEZldGNoZXI6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmNoYXJzZXQoKSkpLCBl
eGNlcHRpb25EZXRhaWxzKTsKLX0KIAotSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRl
U2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIEV4Y2VwdGlvbkRldGFp
bHMqIGV4Y2VwdGlvbkRldGFpbHMpCi17CiAgICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0cyhBYm91
dFRvRXhlY3V0ZVNjcmlwdCkgfHwgaXNQYXVzZWQoKSkKICAgICAgICAgcmV0dXJuIHsgfTsgLy8g
RklYTUU6IFdvdWxkIGpzTnVsbCBiZSBiZXR0ZXI/CiAKQEAgLTYxMyw3ICs2MjEsNyBAQCBKU1Zh
bHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYgc291cmNlQ29kZSwgRXhjZQogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjQ3NjMKICAgICBSZWY8RnJhbWU+IHByb3RlY3RvcihtX2ZyYW1lKTsgLy8g
U2NyaXB0IGV4ZWN1dGlvbiBjYW4gZGVzdHJveSB0aGUgZnJhbWUsIGFuZCB0aHVzIHRoZSBTY3Jp
cHRDb250cm9sbGVyLgogCi0gICAgcmV0dXJuIGV2YWx1YXRlKHNvdXJjZUNvZGUsIGV4Y2VwdGlv
bkRldGFpbHMpOworICAgIHJldHVybiBldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNv
dXJjZUNvZGUoc2NyaXB0LCBVUkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSksIFRleHRQb3Np
dGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgQ2FjaGVkU2Ny
aXB0RmV0Y2hlcjo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2hhcnNldCgpKSkpOwogfQog
CiBib29sIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29uc3QgVVJM
JiB1cmwsIFNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCBzaG91bGRSZXBsYWNl
RG9jdW1lbnRJZkphdmFTY3JpcHRVUkwpCkBAIC02MzIsNyArNjQwLDcgQEAgYm9vbCBTY3JpcHRD
b250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYgdXJsLCBTaG91bGRS
ZXBsYWNlRG9jdW0KICAgICBjb25zdCBpbnQgamF2YXNjcmlwdFNjaGVtZUxlbmd0aCA9IHNpemVv
ZigiamF2YXNjcmlwdDoiKSAtIDE7CiAKICAgICBTdHJpbmcgZGVjb2RlZFVSTCA9IGRlY29kZVVS
TEVzY2FwZVNlcXVlbmNlcyh1cmwuc3RyaW5nKCkpOwotICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0
ZVNjcmlwdChkZWNvZGVkVVJMLnN1YnN0cmluZyhqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoKSk7Cisg
ICAgYXV0byByZXN1bHQgPSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oZGVjb2RlZFVS
TC5zdWJzdHJpbmcoamF2YXNjcmlwdFNjaGVtZUxlbmd0aCkpOwogCiAgICAgLy8gSWYgZXhlY3V0
aW5nIHNjcmlwdCBjYXVzZWQgdGhpcyBmcmFtZSB0byBiZSByZW1vdmVkIGZyb20gdGhlIHBhZ2Us
IHdlCiAgICAgLy8gZG9uJ3Qgd2FudCB0byB0cnkgdG8gcmVwbGFjZSBpdHMgZG9jdW1lbnQhCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggMTMy
NzRhNWQxY2Y2ZDUyYjRhMjZlYzQ4ZGI1MDBhYmZmZTMzZWQ2Yi4uYjhiMjliMTg4YzhiOTIwOTk1
ZmFjNzFkYjFlODQwOTUyODYyODMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuaApAQCAtNzAsNiArNzAsOCBAQCBlbnVtIFJlYXNvbkZvckNhbGxp
bmdDYW5FeGVjdXRlU2NyaXB0cyB7CiAgICAgTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQKIH07CiAK
K3VzaW5nIFZhbHVlQW5kRXhjZXB0aW9uID0gc3RkOjpwYWlyPEpTQzo6SlNWYWx1ZSwgV1RGOjpP
cHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPj47CisKIGNsYXNzIFNjcmlwdENvbnRyb2xsZXIgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8U2NyaXB0Q29udHJvbGxlcj4gewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogCkBAIC04OCwxMCArOTAsMTAgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IHZvaWQgZ2V0QWxsV29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4mKTsKIAotICAg
IEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBFeGNl
cHRpb25EZXRhaWxzKiA9IG51bGxwdHIpOwotICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1
ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1
cmUgPSBmYWxzZSwgRXhjZXB0aW9uRGV0YWlscyogPSBudWxscHRyKTsKLSAgICBKU0M6OkpTVmFs
dWUgZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBz
Y3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlLCBFeGNlcHRpb25EZXRhaWxzKiA9
IG51bGxwdHIpOwotICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlVXNlckFn
ZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlLCBFeGNlcHRpb25EZXRhaWxzKiA9IG51bGxwdHIpOworICAg
IFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRp
b24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsK
KyAgICBKU0M6OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihE
T01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0
dXJlID0gZmFsc2UpOworICAgIFZhbHVlQW5kRXhjZXB0aW9uIGV4ZWN1dGVTY3JpcHRJbldvcmxk
KERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdl
c3R1cmUgPSBmYWxzZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgVmFsdWVBbmRFeGNlcHRpb24gZXhl
Y3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5n
JiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSk7CiAKICAgICBib29sIHNob3VsZEFsbG93
VXNlckFnZW50U2NyaXB0cyhEb2N1bWVudCYpIGNvbnN0OwogCkBAIC0xMDIsOCArMTA0LDkgQEAg
cHVibGljOgogICAgIC8vIERhcndpbiBpcyBhbiBleGNlcHRpb24gdG8gdGhpcyBydWxlOiBpdCBp
cyBPSyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSBhbnkgdGhyZWFkLCBldmVuIHJlZW50cmFu
dGx5LgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAotICAgIEpTQzo6
SlNWYWx1ZSBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRXhjZXB0aW9uRGV0YWls
cyogPSBudWxscHRyKTsKLSAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNj
cmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmLCBFeGNlcHRpb25EZXRhaWxzKiA9IG51
bGxwdHIpOworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKGNvbnN0
IFNjcmlwdFNvdXJjZUNvZGUmKTsKKyAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJbldvcmxkSWdu
b3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYp
OworICAgIFZhbHVlQW5kRXhjZXB0aW9uIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3Vy
Y2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7CiAKICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJ
bldvcmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBS
ZWY8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiYmLCBET01XcmFwcGVyV29ybGQmKTsKICAgICB2b2lk
IGxvYWRNb2R1bGVTY3JpcHQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcmIG1v
ZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFj
a2VuZC5jcHAKaW5kZXggYTc1NWZjYjkzY2ExMjIyMjhlNzJhNDU5NDhlZmI0MTA0MmNmMTVkNy4u
NTJmMzE5MmM1YjIwMDJmNTE4MzhhNzQ0OTI4N2I2ZWU4MGEzNTczZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgQ29udGVudFJ1bGVMaXN0UmVzdWx0cyBD
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50UnVsZUxpc3RzRm9yTG9hZCgK
ICAgICAgICAgICAgICAgICAmJiAoKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHVybC5o
b3N0KCksICJ3d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20iKSAmJiBlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZSh1cmwucGF0aCgpLCAiL2FuYWx5dGljcy5qcyIpKQogICAgICAgICAgICAgICAg
ICAgICB8fCAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodXJsLmhvc3QoKSwgInd3dy5n
b29nbGV0YWdtYW5hZ2VyLmNvbSIpICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHVy
bC5wYXRoKCksICIvZ3RtLmpzIikpKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBmcmFt
ZSA9IGN1cnJlbnREb2N1bWVudC0+ZnJhbWUoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUt
PnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUgeyAidHJ5IHsgd2luZG93LmRhdGFM
YXllci5oaWRlLmVuZCgpOyBjb25zb2xlLmxvZygnQ2FsbGVkIHdpbmRvdy5kYXRhTGF5ZXIuaGlk
ZS5lbmQoKSBpbiBmcmFtZSAnICsgZG9jdW1lbnQuVVJMICsgJyBiZWNhdXNlIHRoZSBjb250ZW50
IGJsb2NrZXIgYmxvY2tlZCB0aGUgbG9hZCBvZiB0aGUgaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5
dGljcy5jb20vYW5hbHl0aWNzLmpzIHNjcmlwdCcpOyB9IGNhdGNoIChlKSB7IH0iX3MgfSk7Cisg
ICAgICAgICAgICAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZUlnbm9yaW5nRXhjZXB0
aW9uKFNjcmlwdFNvdXJjZUNvZGUgeyAidHJ5IHsgd2luZG93LmRhdGFMYXllci5oaWRlLmVuZCgp
OyBjb25zb2xlLmxvZygnQ2FsbGVkIHdpbmRvdy5kYXRhTGF5ZXIuaGlkZS5lbmQoKSBpbiBmcmFt
ZSAnICsgZG9jdW1lbnQuVVJMICsgJyBiZWNhdXNlIHRoZSBjb250ZW50IGJsb2NrZXIgYmxvY2tl
ZCB0aGUgbG9hZCBvZiB0aGUgaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0
aWNzLmpzIHNjcmlwdCcpOyB9IGNhdGNoIChlKSB7IH0iX3MgfSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBmM2Y3ZjAzMmYyMGUx
YTVhM2YzYzhmMTNkMjI3MDk5ZjViODJiMWU5Li4xN2VkYzhiYzU4MmYzNjc0N2M3YmM0NGFiZTlk
ZDVhNGJmMGNiZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTcyMDEsNyArNzIwMSw3
IEBAIHZvaWQgRG9jdW1lbnQ6OmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdChET01XcmFwcGVy
V29ybGQmIHdvcmxkKQogICAgICAgICBqc1N0cmluZyA9IFN0cmluZyhwbHVnSW5zSmF2YVNjcmlw
dCwgc2l6ZW9mKHBsdWdJbnNKYXZhU2NyaXB0KSk7CiAKICAgICBzZXRIYXNFdmFsdWF0ZWRVc2Vy
QWdlbnRTY3JpcHRzKCk7Ci0gICAgc2NyaXB0Q29udHJvbGxlci5ldmFsdWF0ZUluV29ybGQoU2Ny
aXB0U291cmNlQ29kZShqc1N0cmluZyksIHdvcmxkKTsKKyAgICBzY3JpcHRDb250cm9sbGVyLmV2
YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUoanNTdHJpbmcp
LCB3b3JsZCk7CiAKICAgICBtX2hhc0luamVjdGVkUGx1Z0luc1NjcmlwdCA9IHRydWU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggZTBkOTY3YjQ1NzRiYjM1MzA4NWZi
Mzc3NjUwOTRjYzJmOGEzNTM4NS4uMTUxMTc1MTllZjkxMzQ2NzY3N2QyNTg2NTNjZDI3MjAxNzdl
ODA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMzg3LDcgKzM4Nyw3
IEBAIHZvaWQgU2NyaXB0RWxlbWVudDo6ZXhlY3V0ZUNsYXNzaWNTY3JpcHQoY29uc3QgU2NyaXB0
U291cmNlQ29kZSYgc291cmNlQ29kZSkKICAgICBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJ
bmNyZW1lbnRlciBpZ25vcmVEZXNjdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIobV9pc0V4
dGVybmFsU2NyaXB0ID8gJmRvY3VtZW50IDogbnVsbHB0cik7CiAgICAgQ3VycmVudFNjcmlwdElu
Y3JlbWVudGVyIGN1cnJlbnRTY3JpcHRJbmNyZW1lbnRlcihkb2N1bWVudCwgbV9lbGVtZW50KTsK
IAotICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZShzb3VyY2VDb2RlKTsKKyAgICBmcmFtZS0+
c2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihzb3VyY2VDb2RlKTsKIH0KIAogdm9p
ZCBTY3JpcHRFbGVtZW50OjpleGVjdXRlTW9kdWxlU2NyaXB0KExvYWRhYmxlTW9kdWxlU2NyaXB0
JiBsb2FkYWJsZU1vZHVsZVNjcmlwdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCmluZGV4IGViNWZmNTY3ZWQ4MTBkZmMxODUxMDY4MDMyOTNhMmQ1NjRjZTIzNDkuLjcz
MGI0ZTM4OWU3ODNmZTU2Njc1NWI4YWMzNjg4MTE5ZjA5NjkxNjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNzMxNyw3ICs3MzE3LDcgQEAgYm9vbCBIVE1M
TWVkaWFFbGVtZW50OjplbnN1cmVNZWRpYUNvbnRyb2xzSW5qZWN0ZWRTY3JpcHQoKQogI2Vsc2UK
ICAgICAgICAgVVJMIHNjcmlwdFVSTDsKICNlbmRpZgotICAgICAgICBzY3JpcHRDb250cm9sbGVy
LmV2YWx1YXRlSW5Xb3JsZChTY3JpcHRTb3VyY2VDb2RlKG1lZGlhQ29udHJvbHNTY3JpcHQsIFdU
Rk1vdmUoc2NyaXB0VVJMKSksIHdvcmxkKTsKKyAgICAgICAgc2NyaXB0Q29udHJvbGxlci5ldmFs
dWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKG1lZGlhQ29udHJv
bHNTY3JpcHQsIFdURk1vdmUoc2NyaXB0VVJMKSksIHdvcmxkKTsKICAgICAgICAgaWYgKFVOTElL
RUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRp
b24oKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAppbmRleCAx
YjNjODg3NmNjNjg3MzFiNWQ2MjhkZDJkZTJiOWQ2MDRmMmE0NWZiLi4wZDgzMTkyNTI3ODJkYTk1
YTcyZWQzNmNhNWYwNDhjN2NkOGM4NDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC00MjAsNyAr
NDIwLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpkaXNwYXRjaE1lc3Nh
Z2VBc3luYyhjb25zdCBTdHJpbmcmIG1lc3NhZ2VPYmoKIGJvb2wgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbDo6ZXZhbHVhdGVBc0Jvb2xlYW4oY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQog
ewogICAgIGF1dG8mIHN0YXRlID0gKm1haW5Xb3JsZEV4ZWNTdGF0ZSgmbV9mcm9udGVuZFBhZ2Ut
Pm1haW5GcmFtZSgpKTsKLSAgICByZXR1cm4gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnNj
cmlwdCgpLmV4ZWN1dGVTY3JpcHQoZXhwcmVzc2lvbikudG9XVEZTdHJpbmcoJnN0YXRlKSA9PSAi
dHJ1ZSI7CisgICAgcmV0dXJuIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5l
eGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oZXhwcmVzc2lvbikudG9XVEZTdHJpbmcoJnN0
YXRlKSA9PSAidHJ1ZSI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6
ZXZhbHVhdGVPbkxvYWQoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQpAQCAtNDMxLDcgKzQzMSw3
IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVhdGVPbkxvYWQoY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uKQogICAgIH0KIAogICAgIEpTQzo6U3VzcGVuZEV4Y2VwdGlv
blNjb3BlIHNjb3BlKCZtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnZtKCkp
OwotICAgIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5ldmFsdWF0ZShTY3Jp
cHRTb3VyY2VDb2RlKGV4cHJlc3Npb24pKTsKKyAgICBtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1l
KCkuc2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKGV4
cHJlc3Npb24pKTsKIH0KIAogUGFnZSogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6aW5z
cGVjdGVkUGFnZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggMDFlZGQwMDYwZGUzNjJjMWFiN2I3
MDI0NzVhZTgzODIyMjc5YTgwMC4uY2Y4OWY5ZWI1MDUyMzI2ZmNmOGNiZDI2ZDg1OTZjZjQ3MjRj
MjM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcApAQCAtNzczLDcgKzc3Myw3IEBAIHZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUmIGZyYW1lKQogICAgIGlm
IChtX2Jvb3RzdHJhcFNjcmlwdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZy
YW1lLnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUobV9ib290c3RyYXBTY3JpcHQs
IFVSTCB7IFVSTCgpLCAid2ViLWluc3BlY3RvcjovL2Jvb3RzdHJhcC5qcyJfcyB9KSk7CisgICAg
ZnJhbWUuc2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2Rl
KG1fYm9vdHN0cmFwU2NyaXB0LCBVUkwgeyBVUkwoKSwgIndlYi1pbnNwZWN0b3I6Ly9ib290c3Ry
YXAuanMiX3MgfSkpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkUGFpbnQoUmVu
ZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCBiNDk4YTIyNGIxOTBjNmNlODQ0ZWI5ZGQ3
ZWI5YjdhMTA1ZDc2ZGM1Li42ZWFmY2EzNGU4MWEzOTkyZGQxZmI4MGY5MDMyZWI5NmM4YjliNzc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMz
LDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUgc3RhdGUpCiAgICAgaWYg
KCF1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUpIHsKICAgICAg
ICAgdW5ibG9ja0hhbmRsZXIud3JhcFdpdGhEZWNpc2lvbkhhbmRsZXIoW3NjcmlwdENvbnRyb2xs
ZXIgPSBtYWtlV2Vha1B0cihmcmFtZS0+c2NyaXB0KCkpLCBzY3JpcHQgPSB1bmJsb2NrUmVxdWVz
dERlbmllZFNjcmlwdC5pc29sYXRlZENvcHkoKV0oYm9vbCB1bmJsb2NrZWQpIHsKICAgICAgICAg
ICAgIGlmICghdW5ibG9ja2VkICYmIHNjcmlwdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAg
c2NyaXB0Q29udHJvbGxlci0+ZXhlY3V0ZVNjcmlwdChzY3JpcHQpOworICAgICAgICAgICAgICAg
IHNjcmlwdENvbnRyb2xsZXItPmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihzY3JpcHQp
OwogICAgICAgICB9KTsKICAgICB9CiAgICAgbV9kb2N1bWVudExvYWRlci5mcmFtZUxvYWRlcigp
LT5jbGllbnQoKS5jb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdURk1vdmUodW5ibG9ja0hhbmRs
ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggMjJjYzFmZDE1YmMxN2NmZDg1NmU5MTRjMzhh
ODZiMGM0MmFjNzRiYy4uZTA4MzNkYzA4MzNmNTlhOWViMjYzNTA2MTMxY2RiYjk3YzlmOTIxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTYzNCw3ICs2MzQsNyBAQCB2b2lkIEZyYW1lOjppbmpl
Y3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgVXNl
clNjcmlwdAogCiAgICAgZG9jdW1lbnQtPnNldEFzUnVubmluZ1VzZXJTY3JpcHRzKCk7CiAgICAg
bG9hZGVyKCkuY2xpZW50KCkud2lsbEluamVjdFVzZXJTY3JpcHQod29ybGQpOwotICAgIG1fc2Ny
aXB0LT5ldmFsdWF0ZUluV29ybGQoU2NyaXB0U291cmNlQ29kZShzY3JpcHQuc291cmNlKCksIFVS
TChzY3JpcHQudXJsKCkpKSwgd29ybGQpOworICAgIG1fc2NyaXB0LT5ldmFsdWF0ZUluV29ybGRJ
Z25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdC5zb3VyY2UoKSwgVVJMKHNj
cmlwdC51cmwoKSkpLCB3b3JsZCk7CiB9CiAKIFJlbmRlclZpZXcqIEZyYW1lOjpjb250ZW50UmVu
ZGVyZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCmluZGV4IGZlMDFj
YzFmZjQ5MWMzNjdmY2FkOTdiZmQ0ZDZjNGU3MzBmNmJkYTguLmY5MGU0NDUyNGQ1ZGEzNzY2MmNj
MmRkNTVmNDIxZjI4OTc3YjQyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxU
cmVlVmlld2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAK
QEAgLTU2LDggKzU2LDggQEAgdm9pZCBYTUxUcmVlVmlld2VyOjp0cmFuc2Zvcm1Eb2N1bWVudFRv
VHJlZVZpZXcoKQogICAgIG1fZG9jdW1lbnQuc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJp
dHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpKTsK
IAogICAgIFN0cmluZyBzY3JpcHRTdHJpbmcgPSBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29w
eWluZyhYTUxWaWV3ZXJfanMsIHNpemVvZihYTUxWaWV3ZXJfanMpKTsKLSAgICBtX2RvY3VtZW50
LmZyYW1lKCktPnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0U3RyaW5n
KSk7Ci0gICAgbV9kb2N1bWVudC5mcmFtZSgpLT5zY3JpcHQoKS5ldmFsdWF0ZShTY3JpcHRTb3Vy
Y2VDb2RlKEF0b21TdHJpbmcoInByZXBhcmVXZWJLaXRYTUxWaWV3ZXIoJ1RoaXMgWE1MIGZpbGUg
ZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUgYW55IHN0eWxlIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQg
d2l0aCBpdC4gVGhlIGRvY3VtZW50IHRyZWUgaXMgc2hvd24gYmVsb3cuJyk7IikpKTsKKyAgICBt
X2RvY3VtZW50LmZyYW1lKCktPnNjcmlwdCgpLmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2Ny
aXB0U291cmNlQ29kZShzY3JpcHRTdHJpbmcpKTsKKyAgICBtX2RvY3VtZW50LmZyYW1lKCktPnNj
cmlwdCgpLmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29kZShBdG9tU3Ry
aW5nKCJwcmVwYXJlV2ViS2l0WE1MVmlld2VyKCdUaGlzIFhNTCBmaWxlIGRvZXMgbm90IGFwcGVh
ciB0byBoYXZlIGFueSBzdHlsZSBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggaXQuIFRoZSBk
b2N1bWVudCB0cmVlIGlzIHNob3duIGJlbG93LicpOyIpKSk7CiAKICAgICBTdHJpbmcgY3NzU3Ry
aW5nID0gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoWE1MVmlld2VyX2Nzcywgc2l6
ZW9mKFhNTFZpZXdlcl9jc3MpKTsKICAgICBhdXRvIHRleHQgPSBtX2RvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKGNzc1N0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cAppbmRleCA3MGVmYmZhM2U4N2EyYWJhY2M0NTE0NjQwZmRhM2Y3N2ViNjgwZTVmLi4wYzE1Zjhi
OTNjNzgwN2VmZDc0YmJlNDAwODI4NDQ0MWM1NmZhZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI0NzIsNyArMjQ3Miw3IEBAIHZvaWQgV0tQYWdlU2V0
UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNs
aWVudCkKIAogdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQYWdlUmVmIHBh
Z2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlUnVuSmF2
YVNjcmlwdEZ1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+cnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lKHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgdHJ1ZSwgW2Nv
bnRleHQsIGNhbGxiYWNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmV0dXJuVmFsdWUs
IGJvb2wsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVy
cm9yIGVycm9yKSB7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWUodG9JbXBsKHNjcmlwdFJlZiktPnN0cmluZygpLCB0cnVlLCBbY29udGV4dCwgY2FsbGJhY2td
KEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiByZXR1cm5WYWx1ZSwgT3B0aW9uYWw8V2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAg
ICAgY2FsbGJhY2sodG9BUEkocmV0dXJuVmFsdWUpLCAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpF
cnJvcjo6Tm9uZSkgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5wdHIoKSkgOiAwLCBjb250
ZXh0KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCmluZGV4IDMzNTRhYzZlZWNiNWE4ZDcxOThhZThhNThjYTI5OTQ0YzgzMGU1
MTAuLjE5NDJiMDI1NjFkZjE1OTgyY2EwYTExZDEwMGMzOTNjYjhiYTA0YmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTEyMiw3ICsx
MTIyLDcgQEAgLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3Jp
cHRTdHJpbmcgZm9yY2VVc2VyR2VzdHVyZTooQk9PTCkKIHsKICAgICBhdXRvIGhhbmRsZXIgPSBh
ZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSk7CiAKLSAgICBfcGFnZS0+cnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKGphdmFTY3JpcHRTdHJpbmcsIGZvcmNlVXNlckdlc3R1cmUsIFtoYW5k
bGVyXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBi
b29sIGhhZEV4Y2VwdGlvbiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyYgZGV0YWls
cywgV2ViS2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvciBlcnJvckNvZGUpIHsKKyAgICBf
cGFnZS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGphdmFTY3JpcHRTdHJpbmcsIGZvcmNlVXNl
ckdlc3R1cmUsIFtoYW5kbGVyXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxz
LCBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJhY2s6OkVycm9yIGVycm9yQ29kZSkgewogICAgICAg
ICBpZiAoIWhhbmRsZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTExNDUsMTggKzExNDUs
MTggQEAgLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRT
dHJpbmcgZm9yY2VVc2VyR2VzdHVyZTooQk9PTCkKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8g
cmF3SGFuZGxlciA9ICh2b2lkICheKShpZCwgTlNFcnJvciAqKSloYW5kbGVyLmdldCgpOwotICAg
ICAgICBpZiAoaGFkRXhjZXB0aW9uKSB7CisgICAgICAgIGlmIChkZXRhaWxzKSB7CiAgICAgICAg
ICAgICBBU1NFUlQoIXNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CiAKICAgICAgICAgICAgIFJldGFp
blB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiB1c2VySW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAKICAgICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmpl
Y3Q6bG9jYWxpemVkRGVzY3JpcHRpb25Gb3JFcnJvckNvZGUoV0tFcnJvckphdmFTY3JpcHRFeGNl
cHRpb25PY2N1cnJlZCkgZm9yS2V5Ok5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXldOwotICAgICAg
ICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihkZXRhaWxz
Lm1lc3NhZ2UpIGZvcktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTWVzc2FnZUVycm9yS2V5XTsK
LSAgICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QChkZXRhaWxzLmxpbmVOdW1iZXIpIGZv
cktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTGluZU51bWJlckVycm9yS2V5XTsKLSAgICAgICAg
ICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QChkZXRhaWxzLmNvbHVtbk51bWJlcikgZm9yS2V5Ol9X
S0phdmFTY3JpcHRFeGNlcHRpb25Db2x1bW5OdW1iZXJFcnJvcktleV07CisgICAgICAgICAgICBb
dXNlckluZm8gc2V0T2JqZWN0OnN0YXRpY19jYXN0PE5TU3RyaW5nICo+KGRldGFpbHMtPm1lc3Nh
Z2UpIGZvcktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTWVzc2FnZUVycm9yS2V5XTsKKyAgICAg
ICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QChkZXRhaWxzLT5saW5lTnVtYmVyKSBmb3JLZXk6
X1dLSmF2YVNjcmlwdEV4Y2VwdGlvbkxpbmVOdW1iZXJFcnJvcktleV07CisgICAgICAgICAgICBb
dXNlckluZm8gc2V0T2JqZWN0OkAoZGV0YWlscy0+Y29sdW1uTnVtYmVyKSBmb3JLZXk6X1dLSmF2
YVNjcmlwdEV4Y2VwdGlvbkNvbHVtbk51bWJlckVycm9yS2V5XTsKIAotICAgICAgICAgICAgaWYg
KCFkZXRhaWxzLnNvdXJjZVVSTC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgW3VzZXJJbmZv
IHNldE9iamVjdDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOmRldGFpbHMuc291cmNlVVJM
XSBmb3JLZXk6X1dLSmF2YVNjcmlwdEV4Y2VwdGlvblNvdXJjZVVSTEVycm9yS2V5XTsKKyAgICAg
ICAgICAgIGlmICghZGV0YWlscy0+c291cmNlVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAg
ICBbdXNlckluZm8gc2V0T2JqZWN0OltOU1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJpbmc6ZGV0YWls
cy0+c291cmNlVVJMXSBmb3JLZXk6X1dLSmF2YVNjcmlwdEV4Y2VwdGlvblNvdXJjZVVSTEVycm9y
S2V5XTsKIAogICAgICAgICAgICAgcmF3SGFuZGxlcihuaWwsIGFkb3B0TlMoW1tOU0Vycm9yIGFs
bG9jXSBpbml0V2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvckphdmFTY3JpcHRF
eGNlcHRpb25PY2N1cnJlZCB1c2VySW5mbzp1c2VySW5mby5nZXQoKV0pLmdldCgpKTsKICAgICAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmlu
ZGV4IGUzYjQ1MjM5OTc5M2E2YjFkNjc0NmNmOWJmNDQ4ODM0NThmZWFiN2YuLjJhM2YxOTY2MzU4
MTgxMTliNTMzMTFjMGM4Mzc1ZWUxOGM0MWMyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcApAQCAtMzg0NSwxOCArMzg0NSwxOCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6bGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpCiAgICAgICAgIGxhdW5jaFByb2Nl
c3MoeyB9LCBQcm9jZXNzTGF1bmNoUmVhc29uOjpJbml0aWFsUHJvY2Vzcyk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBzY3Jp
cHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBFeGNlcHRpb25EZXRh
aWxzJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBzY3JpcHQs
IGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIHJ1bkphdmFTY3Jp
cHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpu
dWxsb3B0LCBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJv
eHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2Ny
aXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxk
TmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgYm9v
bCBoYWRFeGNlcHRpb24sIGNvbnN0IEV4Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3Jp
cHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNl
VXNlckdlc3R1cmUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5j
dGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8RXhjZXB0aW9u
RGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAg
ICAgLy8gRm9yIGJhY2t3YXJkLWNvbXBhdGliaWxpdHkgc3VwcG9ydCBydW5uaW5nIHNjcmlwdCBp
biBhIFdlYlZpZXcgd2hpY2ggaGFzIG5vdCBkb25lIGFueSBsb2FkcyB5ZXRzLgogICAgIGxhdW5j
aEluaXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKG51bGxwdHIsIGZhbHNlLCB7IH0sIENh
bGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOworICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKG51
bGxwdHIsIHsgfSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTM4NjQsNyArMzg2NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5K
YXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9v
CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2Ny
aXB0V29ybGQoc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCB3b3JsZE5hbWUsIGNhbGxiYWNrSUQp
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0
dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBib29s
IGhhZEV4Y2VwdGlvbiwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlw
dEluRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBi
b29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSosIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIEFTU0VSVChtYWluRnJhbWUoKS0+ZnJh
bWVJRCgpICE9IGZyYW1lSUQpOwogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZSJfcykpOwpA
QCAtNjc4Nyw3ICs2Nzg3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmludmFsaWRhdGVTdHJpbmdD
YWxsYmFjayhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgY2FsbGJhY2stPmludmFsaWRhdGUo
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNjcmlwdFZhbHVlQ2FsbGJhY2soY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBib29sIGhhZEV4Y2VwdGlvbiwgY29uc3Qg
RXhjZXB0aW9uRGV0YWlscyYgZGV0YWlscywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBX
ZWJQYWdlUHJveHk6OnNjcmlwdFZhbHVlQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhUmVmZXJlbmNlLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRh
a2U8U2NyaXB0VmFsdWVDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykg
ewpAQCAtNjc5Niw3ICs2Nzk2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNjcmlwdFZhbHVlQ2Fs
bGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLAogICAgIH0KIAog
ICAgIGlmIChkYXRhUmVmZXJlbmNlLmlzRW1wdHkoKSkgewotICAgICAgICBjYWxsYmFjay0+cGVy
Zm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKG51bGxwdHIsIGhhZEV4Y2VwdGlvbiwgZGV0YWls
cyk7CisgICAgICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUobnVs
bHB0ciwgZGV0YWlscyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY4MDQsNyArNjgw
NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwKICAgICBkYXRhLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoZGF0YVJlZmVyZW5jZS5zaXplKCkpOwogICAgIGRhdGEuYXBwZW5kKGRhdGFSZWZlcmVu
Y2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7CiAKLSAgICBjYWxsYmFjay0+cGVyZm9y
bUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9w
dChXVEZNb3ZlKGRhdGEpKS5wdHIoKSwgaGFkRXhjZXB0aW9uLCBkZXRhaWxzKTsKKyAgICBjYWxs
YmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKEFQSTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlOjphZG9wdChXVEZNb3ZlKGRhdGEpKS5wdHIoKSwgZGV0YWlscyk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5Ojpjb21wdXRlZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVjdG9yPEludFJlY3Q+
JiBwYWdlUmVjdHMsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIGNvbnN0IEZs
b2F0Qm94RXh0ZW50JiBjb21wdXRlZFBhZ2VNYXJnaW4sIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYWUzODUyMjIxZDRhNTI0
MzU1MmJhMDIzZjJmNDhiOTRlZjdiOThhZC4uMDI3NGQ3Y2UyZjQzNjgxNTRjY2I2NzkyNWNkMGY5
ZGE0M2MyOWNkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTc1
LDYgKzc1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRXZl
bnRUcmFja2luZ1JlZ2lvbnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkRldGFpbHMu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnRBdHRyaWJ1dGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4gLy8g
RklYTUU6IE1vdmUgTGF5b3V0Vmlld3BvcnRDb25zdHJhaW50IHRvIGl0cyBvd24gZmlsZSBhbmQg
c3RvcCBpbmNsdWRpbmcgdGhpcy4KQEAgLTMzNSw3ICszMzYsNyBAQCB0eXBlZGVmIEdlbmVyaWND
YWxsYmFjazxBUEk6OkRhdGEqPiBEYXRhQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFj
azx1aW50NjRfdD4gVW5zaWduZWRDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEVk
aXRpbmdSYW5nZT4gRWRpdGluZ1JhbmdlQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFj
azxjb25zdCBTdHJpbmcmPiBTdHJpbmdDYWxsYmFjazsKLXR5cGVkZWYgR2VuZXJpY0NhbGxiYWNr
PEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgYm9vbCwgY29uc3QgV2ViQ29yZTo6RXhjZXB0
aW9uRGV0YWlscyY+IFNjcmlwdFZhbHVlQ2FsbGJhY2s7Cit0eXBlZGVmIEdlbmVyaWNDYWxsYmFj
azxBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlv
bkRldGFpbHM+PiBTY3JpcHRWYWx1ZUNhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8
Y29uc3QgV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXMmPiBGb250QXR0cmlidXRlc0NhbGxiYWNrOwog
dHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJj4gU2VsZWN0aW9uQ29udGV4dENhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2Fs
bGJhY2s8Ym9vbD4gQm9vbENhbGxiYWNrOwpAQCAtMTA2MCwxMCArMTA2MSwxMCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQ
STo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGdldFNvdXJjZUZv
ckZyYW1lKFdlYkZyYW1lUHJveHkqLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYs
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1l
KFdlYkZyYW1lUHJveHkqLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJik7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3Ry
aW5nJiwgYm9vbCwgV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSosIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7Ci0gICAgdm9pZCBydW5K
YXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcmLCBib29sLCBjb25z
dCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpF
eGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlv
bik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiwgYm9v
bCwgV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlv
bmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlw
dFdvcmxkKGNvbnN0IFN0cmluZyYsIGJvb2wsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxk
TmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pOwogICAgIC8vIEZvciBzdWIgZnJhbWVzLgotICAgIHZvaWQgcnVu
SmF2YVNjcmlwdEluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBib29sIGhhZEV4Y2VwdGlvbiwgY29uc3QgV2ViQ29yZTo6
RXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rp
b24pOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3Jl
OjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5j
dGlvbik7CiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoUmVmUHRyPFZvaWRDYWxsYmFjaz4mJik7CiAK
ICAgICBmbG9hdCBoZWFkZXJIZWlnaHQoV2ViRnJhbWVQcm94eSYpOwpAQCAtMTk0Myw3ICsxOTQ0
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGJvb2xDYWxsYmFjayhib29sIHJlc3VsdCwgQ2FsbGJh
Y2tJRCk7CiAgICAgdm9pZCBzdHJpbmdDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBDYWxsYmFja0lE
KTsKICAgICB2b2lkIGludmFsaWRhdGVTdHJpbmdDYWxsYmFjayhDYWxsYmFja0lEKTsKLSAgICB2
b2lkIHNjcmlwdFZhbHVlQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgYm9vbCBo
YWRFeGNlcHRpb24sIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0lE
KTsKKyAgICB2b2lkIHNjcmlwdFZhbHVlQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrSUQpOwogICAg
IHZvaWQgY29tcHV0ZWRQYWdlc0NhbGxiYWNrKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0
PiYsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0Qm94RXh0ZW50JiBjb21wdXRlZFBhZ2VNYXJnaW4sIENhbGxiYWNrSUQpOwogICAgIHZvaWQg
dmFsaWRhdGVDb21tYW5kQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50LCBDYWxsYmFj
a0lEKTsKICAgICB2b2lkIHVuc2lnbmVkQ2FsbGJhY2sodWludDY0X3QsIENhbGxiYWNrSUQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmlu
ZGV4IDBjNjUxZTY4NWIyOTc5ZjRlMzZlOWM4YTU4NjQxNmQ2NzFiZGZmZjUuLjRkZWY1ZGMwMWRi
NGQ0MjlmYmI3ZDcxNjkzOGExMTE3MGQ5ZWEyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTE2OSw3ICsxNjksNyBAQCBtZXNz
YWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIFN0cmluZ0NhbGxiYWNrKFN0cmluZyByZXN1bHRT
dHJpbmcsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEJvb2xDYWxsYmFjayhi
b29sIHJlc3VsdCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgSW52YWxpZGF0
ZVN0cmluZ0NhbGxiYWNrKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIFNjcmlw
dFZhbHVlQ2FsbGJhY2soSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIGJvb2wgaGFkRXhj
ZXB0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyBkZXRhaWxzLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBTY3JpcHRWYWx1ZUNhbGxiYWNrKElQQzo6RGF0
YVJlZmVyZW5jZSByZXN1bHREYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxz
PiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBDb21wdXRlZFBh
Z2VzQ2FsbGJhY2soVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IHBhZ2VSZWN0cywgZG91YmxlIHRv
dGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgV2ViQ29yZTo6UmVjdEVkZ2VzPGZsb2F0PiBjb21w
dXRlZFBhZ2VNYXJnaW4sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFZhbGlk
YXRlQ29tbWFuZENhbGxiYWNrKFN0cmluZyBjb21tYW5kLCBib29sIGlzRW5hYmxlZCwgaW50MzJf
dCBzdGF0ZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgRWRpdGluZ1Jhbmdl
Q2FsbGJhY2soc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJhbmdlLCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAKaW5kZXggODhlMTNhZDgyYWRjZWM0ZmJlZTY4NWYyYzdiZTQ1OThmOGQ0
Y2JiZi4uM2VhMDA2YjNjZTM4ZTM4OTQxZmRiZDU4NjczY2Q4MWE2ODJjMjUzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTEyNTMs
NyArMTI1Myw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybUphdmFTY3JpcHRVUkxSZXF1ZXN0
KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiAgICAgLy8gRXZhbHVhdGUgdGhlIEphdmFTY3JpcHQgY29k
ZS4gTm90ZSB0aGF0IHJ1bm5pbmcgSmF2YVNjcmlwdCBoZXJlIGNvdWxkIGNhdXNlIHRoZSBwbHVn
LWluIHRvIGJlIGRlc3Ryb3llZCwgc28gd2UKICAgICAvLyBncmFiIHJlZmVyZW5jZXMgdG8gdGhl
IHBsdWctaW4gaGVyZS4KICAgICBSZWZQdHI8UGx1Z2luPiBwbHVnaW4gPSBtX3BsdWdpbjsKLSAg
ICBhdXRvIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGpzU3RyaW5nLCBy
ZXF1ZXN0LT5hbGxvd1BvcHVwcygpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQo
KS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oanNTdHJpbmcsIHJlcXVlc3QtPmFsbG93
UG9wdXBzKCkpOwogCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvckZyb250ZW5k
QVBJRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJ
bnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwCmluZGV4IDkwOGUzOWFmZGIwYzg4OWNm
ZTU2NTJiMzlhZGM0NzBjM2EwOWE5YTIuLmMxODllOTgyNWFkNDk0NzBlZDYyNDM1ZTg2ZDU5ZGY2
MGYzOGFlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Ykluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcApA
QCAtOTksNyArOTksNyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6
ZXZhbHVhdGVPclF1ZXVlRXhwcmVzc2lvbihjb25zdCBTdHJpbmcmCiAKICAgICBBU1NFUlQobV9x
dWV1ZS5pc0VtcHR5KCkpOwogICAgIEFTU0VSVCghbV9wYWdlLmNvcmVQYWdlKCktPm1haW5GcmFt
ZSgpLnNjcmlwdCgpLmlzUGF1c2VkKCkpOwotICAgIG1fcGFnZS5jb3JlUGFnZSgpLT5tYWluRnJh
bWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGV4cHJlc3Npb24pOworICAgIG1fcGFnZS5jb3Jl
UGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRp
b24oZXhwcmVzc2lvbik7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRj
aGVyOjpldmFsdWF0ZVF1ZXVlZEV4cHJlc3Npb25zKCkKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lk
IFdlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6ZXZhbHVhdGVRdWV1ZWRFeHByZXNz
aW9ucygpCiAKICAgICBmb3IgKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiA6IG1fcXVldWUpIHsK
ICAgICAgICAgQVNTRVJUKCFtX3BhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCku
aXNQYXVzZWQoKSk7Ci0gICAgICAgIG1fcGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5zY3Jp
cHQoKS5leGVjdXRlU2NyaXB0KGV4cHJlc3Npb24pOworICAgICAgICBtX3BhZ2UuY29yZVBhZ2Uo
KS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGV4
cHJlc3Npb24pOwogICAgIH0KIAogICAgIG1fcXVldWUuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNzM1ZmVhNGVlMTNiZTQyNWMy
MzRiZTkyMTIwZmU5ZTdiY2EyZDVjNy4uMTI0NzAyY2U1ZTg5MzAzYmNiNjMxMWVhMTVjZjQ3ZDAx
MmUzNzgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKQEAgLTMzNTMsMjMgKzMzNTMsMjUgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdl
YkZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2UKICAgICAv
LyBOT1RFOiBXZSBuZWVkIHRvIGJlIGNhcmVmdWwgd2hlbiBydW5uaW5nIHNjcmlwdHMgdGhhdCB0
aGUgb2JqZWN0cyB3ZSBkZXBlbmQgb24gZG9uJ3QKICAgICAvLyBkaXNhcHBlYXIgZHVyaW5nIHNj
cmlwdCBleGVjdXRpb24uCiAKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJp
YWxpemVkUmVzdWx0VmFsdWU7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soY29tbW9uVk0oKSk7Ci0g
ICAgYm9vbCBoYWRFeGNlcHRpb24gPSB0cnVlOwotICAgIEV4Y2VwdGlvbkRldGFpbHMgZGV0YWls
czsKKyAgICBWYWx1ZUFuZEV4Y2VwdGlvbiByZXN1bHQ7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gc2VyaWFsaXplZFJlc3VsdFZhbHVlOworCiAgICAgYXV0byogd29ybGQgPSB3
b3JsZE5hbWUgPyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpmaW5kKHdvcmxkTmFtZS52YWx1
ZSgpKSA6ICZJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpOwogICAgIGlm
IChmcmFtZSAmJiBmcmFtZS0+Y29yZUZyYW1lKCkgJiYgd29ybGQpIHsKLSAgICAgICAgaWYgKEpT
VmFsdWUgcmVzdWx0VmFsdWUgPSBmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmV4ZWN1dGVV
c2VyQWdlbnRTY3JpcHRJbldvcmxkKHdvcmxkLT5jb3JlV29ybGQoKSwgc2NyaXB0LCBmb3JjZVVz
ZXJHZXN0dXJlLCAmZGV0YWlscykpIHsKLSAgICAgICAgICAgIGhhZEV4Y2VwdGlvbiA9IGZhbHNl
OworICAgICAgICByZXN1bHQgPSBmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmV4ZWN1dGVV
c2VyQWdlbnRTY3JpcHRJbldvcmxkKHdvcmxkLT5jb3JlV29ybGQoKSwgc2NyaXB0LCBmb3JjZVVz
ZXJHZXN0dXJlKTsKKyAgICAgICAgaWYgKHJlc3VsdC5maXJzdCkgeworICAgICAgICAgICAgQVNT
RVJUKCFyZXN1bHQuc2Vjb25kKTsKICAgICAgICAgICAgIHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSA9
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGZyYW1lLT5qc0NvbnRleHRGb3JXb3JsZCh3
b3JsZCksCi0gICAgICAgICAgICAgICAgdG9SZWYoZnJhbWUtPmNvcmVGcmFtZSgpLT5zY3JpcHQo
KS5nbG9iYWxPYmplY3Qod29ybGQtPmNvcmVXb3JsZCgpKSwgcmVzdWx0VmFsdWUpLCBudWxscHRy
KTsKKyAgICAgICAgICAgICAgICB0b1JlZihmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmds
b2JhbE9iamVjdCh3b3JsZC0+Y29yZVdvcmxkKCkpLCByZXN1bHQuZmlyc3QpLCBudWxscHRyKTsK
ICAgICAgICAgfQogICAgIH0KIAogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNl
OwogICAgIGlmIChzZXJpYWxpemVkUmVzdWx0VmFsdWUpCiAgICAgICAgIGRhdGFSZWZlcmVuY2Ug
PSBzZXJpYWxpemVkUmVzdWx0VmFsdWUtPmRhdGEoKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgaGFkRXhjZXB0aW9u
LCBkZXRhaWxzLCBjYWxsYmFja0lEKSk7CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgcmVzdWx0LnNlY29uZCwgY2Fs
bGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNj
cmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIGNv
bnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tCmluZGV4IDk0N2JmYzUzNDJjYmNhYzA5YWFhZjUxMmNjZGI2
ZGZlOWNiMWNhNDEuLmVhNTA3OGVkMThmNTUwNTJkZjJlNDI4MTNlMmE2ZjcwODU1Y2U3Y2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTM3OSw3ICszNzksNyBAQCB2b2lkIFdlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25z
dCBTdHJpbmcmCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgW2NvbnRlbnRDb3B5IHdyaXRl
VG9VUkw6YWN0dWFsVVJMIGF0b21pY2FsbHk6WUVTIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29k
aW5nIGVycm9yOk5VTExdOwogCi0gICAgICAgIGNvcmUoW21fZnJvbnRlbmRXaW5kb3dDb250cm9s
bGVyIGZyb250ZW5kV2ViVmlld10pLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0
KFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuc2F2ZWRV
UkwoXCIlQFwiKSIsIGFjdHVhbFVSTC5hYnNvbHV0ZVN0cmluZ10pOworICAgICAgICBjb3JlKFtt
X2Zyb250ZW5kV2luZG93Q29udHJvbGxlciBmcm9udGVuZFdlYlZpZXddKS0+bWFpbkZyYW1lKCku
c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuc2F2ZWRVUkwoXCIlQFwiKSIsIGFjdHVh
bFVSTC5hYnNvbHV0ZVN0cmluZ10pOwogICAgIH07CiAKICAgICBpZiAoIWZvcmNlU2F2ZURpYWxv
ZykgewpAQCAtNDI1LDcgKzQyNSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6
OmFwcGVuZChjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nCiAgICAgW2hh
bmRsZSB3cml0ZURhdGE6W2NvbnRlbnQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddXTsKICAgICBbaGFuZGxlIGNsb3NlRmlsZV07CiAKLSAgICBjb3JlKFttX2Zyb250ZW5k
V2luZG93Q29udHJvbGxlciBmcm9udGVuZFdlYlZpZXddKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCku
ZXhlY3V0ZVNjcmlwdChbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3BlY3RvckZyb250
ZW5kQVBJLmFwcGVuZGVkVG9VUkwoXCIlQFwiKSIsIFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmdd
XSk7CisgICAgY29yZShbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIgZnJvbnRlbmRXZWJWaWV3
XSktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3BlY3RvckZyb250ZW5kQVBJLmFwcGVuZGVk
VG9VUkwoXCIlQFwiKSIsIFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddXSk7CiB9CiAKIC8vIE1B
Uks6IC0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4
IDE4ZDNkOWVjMTRkOGM2OTVkMDNmOTNjM2RkMjAxNmFkNDA5NGE0NTguLjA1YjU2OTMwNDM2NGI0
OTY5NzFkODlkZDk3ZmY4ZGUyY2Y0NTY3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtNzAwLDcgKzcwMCw3IEBAIC0gKE5TU3RyaW5nICopX3N0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBm
b3JjZVVzCiAgICAgSlNDOjpKU0xvY2tIb2xkZXIganNjTG9jayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICNlbmRpZgogCi0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IF9wcml2YXRlLT5jb3JlRnJh
bWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoc3RyaW5nLCBmb3JjZVVzZXJHZXN0dXJlKTsKKyAg
ICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2NyaXB0KCkuZXhl
Y3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKHN0cmluZywgZm9yY2VVc2VyR2VzdHVyZSk7CiAK
ICAgICBpZiAoIV9wcml2YXRlLT5jb3JlRnJhbWUpIC8vIEluIGNhc2UgdGhlIHNjcmlwdCByZW1v
dmVkIG91ciBmcmFtZSBmcm9tIHRoZSBwYWdlLgogICAgICAgICByZXR1cm4gQCIiOwpAQCAtMjA5
Niw3ICsyMDk2LDcgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dEZyb21TdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHdpdGhHbG8KICAgICBBU1NFUlQoZnJhbWUt
PmRvY3VtZW50KCkpOwogICAgIFJldGFpblB0cjxXZWJGcmFtZT4gd2ViRnJhbWUoa2l0KGZyYW1l
KSk7IC8vIFJ1bm5pbmcgYXJiaXRyYXJ5IEphdmFTY3JpcHQgY2FuIGRlc3Ryb3kgdGhlIGZyYW1l
LgogCi0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlVXNl
ckFnZW50U2NyaXB0SW5Xb3JsZCgqY29yZSh3b3JsZCksIHN0cmluZywgdHJ1ZSk7CisgICAgSlND
OjpKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlVXNlckFnZW50U2NyaXB0
SW5Xb3JsZCgqY29yZSh3b3JsZCksIHN0cmluZywgdHJ1ZSkuZmlyc3Q7CiAKICAgICBpZiAoIXdl
YkZyYW1lLT5fcHJpdmF0ZS0+Y29yZUZyYW1lKSAvLyBJbiBjYXNlIHRoZSBzY3JpcHQgcmVtb3Zl
ZCBvdXIgZnJhbWUgZnJvbSB0aGUgcGFnZS4KICAgICAgICAgcmV0dXJuIEAiIjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA0N2FhZTMyOGRiYzZhY2Zi
ZWFiYjNhZWM2ZDI3ODNjYjRmNTlmMDcxLi45NjFlMDVjZjFjMjI5ZGUxMTA0NmI3YzRmYjgzNGY1
MzM5YmI4MjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CkBAIC03OTA4LDcgKzc5MDgsNyBAQCAtIChOU0FwcGxlRXZlbnREZXNjcmlwdG9yICopYWVEZXNj
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6KE5TU3RyaW5nICopcwogICAgICAgICBy
ZXR1cm4gbmlsOwogICAgIGlmICghY29yZUZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICByZXR1
cm4gbmlsOwotICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBjb3JlRnJhbWUtPnNjcmlwdCgpLmV4
ZWN1dGVTY3JpcHQoc2NyaXB0LCB0cnVlKTsKKyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gY29y
ZUZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oc2NyaXB0LCB0
cnVlKTsKICAgICBpZiAoIXJlc3VsdCkgLy8gRklYTUU6IHBhc3MgZXJyb3JzCiAgICAgICAgIHJl
dHVybiAwOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soY29yZUZyYW1lLT5zY3JpcHQoKS5n
bG9iYWxPYmplY3QoV2ViQ29yZTo6bWFpblRocmVhZE5vcm1hbFdvcmxkKCkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGU1ZWY2M2I0
Y2Q4NjcxN2IzNjBiMDk5Yzg2MmUyN2E2MzUxMTUwNDMuLjgxNjBkYTE0YWMwMDkzOTY4MGMyMmRl
ZGMyYTI1ZDNjM2E2ZTMwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcApAQCAtNDM5LDcgKzQzOSw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVy
Zm9ybVJlcXVlc3QoUGx1Z2luUmVxdWVzdCogcmVxdWVzdCkKICAgICAKICAgICAvLyBFeGVjdXRp
bmcgYSBzY3JpcHQgY2FuIGNhdXNlIHRoZSBwbHVnaW4gdmlldyB0byBiZSBkZXN0cm95ZWQsIHNv
IHdlIGtlZXAgYSByZWZlcmVuY2UgdG8gaXQuCiAgICAgUmVmUHRyPFBsdWdpblZpZXc+IHByb3Rl
Y3Rvcih0aGlzKTsKLSAgICBhdXRvIHJlc3VsdCA9IG1fcGFyZW50RnJhbWUtPnNjcmlwdCgpLmV4
ZWN1dGVTY3JpcHQoanNTdHJpbmcsIHJlcXVlc3QtPnNob3VsZEFsbG93UG9wdXBzKCkpOworICAg
IGF1dG8gcmVzdWx0ID0gbV9wYXJlbnRGcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9y
aW5nRXhjZXB0aW9uKGpzU3RyaW5nLCByZXF1ZXN0LT5zaG91bGRBbGxvd1BvcHVwcygpKTsKIAog
ICAgIGlmICh0YXJnZXRGcmFtZU5hbWUuaXNOdWxsKCkpIHsKICAgICAgICAgQ1N0cmluZyBjc3Ry
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDZlZmFlOGY2MjI5ODQ5Y2Ex
ZjU5NmI3MzU1Y2VlZjQzY2ZkNjkwYTguLmM3NzhlMjJiNzBkY2YxODU1MjJjYTZlMjA5Yjg3MDkx
OTViNTE0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTIwNTUsNyAr
MjA1NSw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OnN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRJ
blNjcmlwdFdvcmxkKElXZWJTY3JpcHRXb3JsZCogaVdvCiAgICAgLy8gR2V0IHRoZSBmcmFtZSBm
cm9tZSB0aGUgZ2xvYmFsIG9iamVjdCB3ZSd2ZSBzZXR0bGVkIG9uLgogICAgIEZyYW1lKiBmcmFt
ZSA9IGFueVdvcmxkR2xvYmFsT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKTsKICAgICBBU1NFUlQo
ZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgp
LmV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLT53b3JsZCgpLCBzdHJpbmcsIHRydWUpOworICAg
IEpTVmFsdWUgcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJbldvcmxkSWdu
b3JpbmdFeGNlcHRpb24od29ybGQtPndvcmxkKCksIHN0cmluZywgdHJ1ZSk7CiAKICAgICBpZiAo
IWZyYW1lKSAvLyBJbiBjYXNlIHRoZSBzY3JpcHQgcmVtb3ZlZCBvdXIgZnJhbWUgZnJvbSB0aGUg
cGFnZS4KICAgICAgICAgcmV0dXJuIFNfT0s7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385519</attachid>
            <date>2019-12-12 11:47:03 -0800</date>
            <delta_ts>2019-12-12 11:57:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205151-20191212114702.patch</filename>
            <type>text/plain</type>
            <size>50657</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjU5MGYyYWFjZjNmZTJj
NWE4ZDlkYWUwZjFmOGM4NDY0YTY1MGE3YS4uMzgzYTYzMGViMmM5YmNmOTI2NTBiNDgyZDM2Mzg3
NGFiY2RiN2ZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE5LTEyLTEyICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRD
b250cm9sbGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoUmVm
YWN0b3IsIG5vIGJlaGF2aW9yIGNoYW5nZSkuCisKKyAgICAgICAgVGhlcmUncyBzbyBtYW55IEV4
Y2VwdGlvbkRldGFpbHMqIG51bGwgcG9pbnRlcnMgYmVpbmcgcGFzc2VkIGFyb3VuZCBpbiB0aGUg
U2NyaXB0Q29udHJvbGxlcgorICAgICAgICBmYW1pbHkgb2YgZnVuY3Rpb25zLgorCisgICAgICAg
IExldCdzIG1ha2UgaXQgYSBsaXR0bGUgbW9yZSBleHBsaWNpdCB3aGljaCBjYWxsZXJzIGdldCBl
eGNlcHRpb25zIGFuZCB3aGljaCBkb24ndC4KKworICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9R
dWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlF1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50OjplbnN1cmVSZXBsYWNlbWVudFNjcmlwdEluamVjdGVkKToKKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUpOgorCisgICAgICAgICogYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVy
OjpldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJ
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2Vy
QWdlbnRTY3JpcHRJbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6
OmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQpOiBEZWxldGVkLgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKworICAgICAgICAqIGNvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9jZXNzQ29udGVudFJ1
bGVMaXN0c0ZvckxvYWQpOgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjplbnN1cmVQbHVnSW5zSW5qZWN0ZWRTY3JpcHQpOgorCisgICAg
ICAgICogZG9tL1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxl
bWVudDo6ZXhlY3V0ZUNsYXNzaWNTY3JpcHQpOgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZU1l
ZGlhQ29udHJvbHNJbmplY3RlZFNjcmlwdCk6CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsOjpldmFsdWF0ZUFzQm9vbGVhbik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpldmFsdWF0ZU9uTG9hZCk6CisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZCk6
CisKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RmlsdGVyOjpkaWREZWNpZGUpOgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KToK
KworICAgICAgICAqIHhtbC9YTUxUcmVlVmlld2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TFRyZWVWaWV3ZXI6OnRyYW5zZm9ybURvY3VtZW50VG9UcmVlVmlldyk6CisKIDIwMTktMTItMTEg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBUcnlpbmcgdG8gc2V0
IHRvU3RyaW5nIC8gdmFsdWVPZiBvbiBhIGNyb3NzLW9yaWdpbiBMb2NhdGlvbiBvYmplY3Qgc2hv
dWxkIHRocm93IGEgU2VjdXJpdHlFcnJvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4ZDc2MmFkOWEzODY4MzQ5MjU4
YzAyYzk2MmY5NWZmOTNhZjI1NzM3Li5lNzIwYmY3ODUzMzI0MzJmY2U5ZjNkMjQ1YjkxNjZiMTNk
NzFlYjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE5LTEyLTEyICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRDb250cm9s
bGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHA6CisgICAgICAgIChXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2Vi
VmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmZvcmNlVXNlckdlc3R1cmU6Y29tcGxldGlvbkhhbmRs
ZXI6XSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdv
cmxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFt
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBlcmZv
cm1KYXZhU2NyaXB0VVJMUmVxdWVzdCk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpldmFsdWF0ZU9yUXVldWVFeHByZXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVy
OjpldmFsdWF0ZVF1ZXVlZEV4cHJlc3Npb25zKToKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cnVuSmF2YVNjcmlw
dCk6CisKIDIwMTktMTItMTEgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCBhIG5pdCBhZnRlciByMjUzMzY2CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKaW5kZXggYjlkYWUyY2UxMGUwODcyZDM1MzA4YzhjOGNjNjBkZTIwZjI1Zjc3NS4u
ZTFmNzFhNWQ1NjkwYzM0NTI0ZGI2ODYyOWI4NDkwOTE1M2RlNzA3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTEyLTEyICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRDb250cm9sbGVy
J3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZCk6CisgICAgICAg
IAorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9z
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpmb3JjZVVzZXJHZXN0dXJlOl0p
OgorICAgICAgICAoLVtXZWJGcmFtZSBfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21T
dHJpbmc6d2l0aEdsb2JhbE9iamVjdDppblNjcmlwdFdvcmxkOl0pOgorCisgICAgICAgICogV2Vi
Vmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IGFlRGVzY0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHRGcm9tU3RyaW5nOl0pOgorCiAyMDE5LTEyLTA5ICBFcmljIENhcmxzb24gIDxlcmlj
LmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBtZWRpYSBpbiB0aGUgR1BVIHBy
b2Nlc3MgcHJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDQyMDE0ZDk5
ZDUwMjE2ZmE5MmQ0OWE1OTJhMDA2NzgxOTJkNjRkNDEuLjE0MWNjMzk0YWM4ZWIzZDQ2MDQ1NmM5
OWNiNmI5YzM0NmE3MjBjZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxOS0xMi0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVmYWN0b3IgU2NyaXB0Q29udHJvbGxlcidzIHByb2xpZmVyYXRpb24gb2YgRXhj
ZXB0aW9uRGV0YWlscyouCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDUxNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVn
aW5WaWV3OjpwZXJmb3JtUmVxdWVzdCk6CisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAg
ICAgIChXZWJGcmFtZTo6c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEluU2NyaXB0V29ybGQp
OgorCiAyMDE5LTEyLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgUGFnZUNvbmZpZ3VyYXRpb246OmRyYWdDbGllbnQgc2hvdWxkIHVzZSBhIHNtYXJ0IHBvaW50
ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQppbmRleCA5ODEyNmUwM2YzZTMyMTQ3NWY3NTExNDY0
MmFkOGQwYjI0OGJhZDIzLi4wM2QyMWRlN2Q1YWMwNjliMmNhYTNkOTYxMWI5OGY4NGEzNTE3ZjRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1
aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCkBAIC0xNTgsNyArMTU4LDcgQEAgYm9vbCBRdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6ZW5zdXJlUmVwbGFjZW1lbnRTY3JpcHRJbmplY3RlZCgp
CiAgICAgaWYgKHJlcGxhY2VtZW50RnVuY3Rpb24uaXNGdW5jdGlvbih2bSkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIAotICAgIHNjcmlwdENvbnRyb2xsZXIuZXZhbHVhdGVJbldvcmxkKFNj
cmlwdFNvdXJjZUNvZGUocXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRTY3JpcHQoKSksIHdvcmxk
KTsKKyAgICBzY3JpcHRDb250cm9sbGVyLmV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9u
KFNjcmlwdFNvdXJjZUNvZGUocXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRTY3JpcHQoKSksIHdv
cmxkKTsKICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAgICAgIExP
RyhQbHVnaW5zLCAiJXAgLSBFeGNlcHRpb24gd2hlbiBldmFsdWF0aW5nIFF1aWNrVGltZSBwbHVn
aW4gcmVwbGFjZW1lbnQgc2NyaXB0IiwgdGhpcyk7CiAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0
aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRB
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNw
cAppbmRleCAyOGNmNTY0NjZiY2EzYzljMmQyMDg4OTUxYzk4MDgyZmRiNTFhODU2Li44ZTRjN2Iz
ODEyNDRlNzc2YmRkNTgzNGFlNDE5MzZkN2RjYzYyMjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lk
IFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgaWYgKG1f
ZnVuY3Rpb24pCiAgICAgICAgIGV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dCh3aW5kb3csIHdpbmRv
dy0+cHJveHkoKSwgZG9jdW1lbnQpOwogICAgIGVsc2UKLSAgICAgICAgZnJhbWUtPnNjcmlwdCgp
LmV4ZWN1dGVTY3JpcHRJbldvcmxkKG1faXNvbGF0ZWRXb3JsZCwgbV9jb2RlKTsKKyAgICAgICAg
ZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24obV9p
c29sYXRlZFdvcmxkLCBtX2NvZGUpOwogfQogCiB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0
ZShXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGIxZmRlODUwMmU0ZGEw
YjBmNjlmNDgxNmQ0YTQxMmVjNGVlNGM3M2YuLjRjZWQ0YzNjMjRlYjA2MGEyNjY1NTkwNjg5ODJm
NDMxYzY2MTk4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuY3BwCkBAIC0xMDcsNyArMTA3LDEyIEBAIFNjcmlwdENvbnRyb2xsZXI6On5TY3Jp
cHRDb250cm9sbGVyKCkKICAgICB9CiB9CiAKLUpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZh
bHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQsIEV4Y2VwdGlvbkRldGFpbHMqIGV4Y2VwdGlvbkRldGFpbHMpCitKU0M6
OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRp
b24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCkKK3sKKyAgICByZXR1cm4gZXZhbHVhdGVJbldvcmxkKHNvdXJjZUNvZGUsIHdvcmxkKS5m
aXJzdDsKK30KKworVmFsdWVBbmRFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJ
bldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CiAKQEAgLTEz
NSwxOSArMTQwLDIxIEBAIEpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxk
KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPCiAKICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUpOwogCisgICAgT3B0aW9u
YWw8RXhjZXB0aW9uRGV0YWlscz4gb3B0aW9uYWxEZXRhaWxzOwogICAgIGlmIChldmFsdWF0aW9u
RXhjZXB0aW9uKSB7Ci0gICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmZ2xvYmFsT2JqZWN0LCBldmFs
dWF0aW9uRXhjZXB0aW9uLCBzb3VyY2VDb2RlLmNhY2hlZFNjcmlwdCgpLCBleGNlcHRpb25EZXRh
aWxzKTsKLSAgICAgICAgbV9zb3VyY2VVUkwgPSBzYXZlZFNvdXJjZVVSTDsKLSAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBkZXRhaWxzOworICAgICAgICByZXBv
cnRFeGNlcHRpb24oJmdsb2JhbE9iamVjdCwgZXZhbHVhdGlvbkV4Y2VwdGlvbiwgc291cmNlQ29k
ZS5jYWNoZWRTY3JpcHQoKSwgJmRldGFpbHMpOworICAgICAgICBvcHRpb25hbERldGFpbHMgPSBX
VEZNb3ZlKGRldGFpbHMpOworICAgICAgICByZXR1cm5WYWx1ZSA9IHsgfTsKICAgICB9CiAKICAg
ICBtX3NvdXJjZVVSTCA9IHNhdmVkU291cmNlVVJMOwotICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
KyAgICByZXR1cm4geyByZXR1cm5WYWx1ZSwgb3B0aW9uYWxEZXRhaWxzIH07CiB9CiAKLUpTVmFs
dWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291
cmNlQ29kZSwgRXhjZXB0aW9uRGV0YWlscyogZXhjZXB0aW9uRGV0YWlscykKK0pTQzo6SlNWYWx1
ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlw
dFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCiB7Ci0gICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChz
b3VyY2VDb2RlLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgZXhjZXB0aW9uRGV0YWlscyk7Cisg
ICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKHNvdXJjZUNvZGUsIG1h
aW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKIH0KIAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjpsb2Fk
TW9kdWxlU2NyaXB0SW5Xb3JsZChMb2FkYWJsZU1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0LCBj
b25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYgdG9w
TGV2ZWxGZXRjaFBhcmFtZXRlcnMsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCkBAIC01NDgsNyAr
NTU1LDEyIEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJTY3JpcHRPYmplY3RzKCkKICNl
bmRpZgogfQogCi1KU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxk
KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNl
VXNlckdlc3R1cmUsIEV4Y2VwdGlvbkRldGFpbHMqIGV4Y2VwdGlvbkRldGFpbHMpCitKU0M6OkpT
VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2Vw
dGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBm
b3JjZVVzZXJHZXN0dXJlKQoreworICAgIHJldHVybiBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3Js
ZCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlKS5maXJzdDsKK30KKworVmFsdWVBbmRFeGNlcHRp
b24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxk
JiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKIHsK
ICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGZvcmNlVXNlckdlc3R1
cmUgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlKSA6IFdURjo6bnVsbG9wdCk7CiAgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2Rl
KHNjcmlwdCwgVVJMKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpLCBUZXh0UG9zaXRpb24oKSwg
SlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIENhY2hlZFNjcmlwdEZldGNo
ZXI6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmNoYXJzZXQoKSkpOwpAQCAtNTU2LDE3ICs1
NjgsMTcgQEAgSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChE
T01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHIKICAgICBpZiAoIWNhbkV4ZWN1dGVTY3Jp
cHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNlZCgpKQogICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3b3JsZCwgZXhj
ZXB0aW9uRGV0YWlscyk7CisgICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3
b3JsZCk7CiB9CiAKLUpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNj
cmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQs
IGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgRXhjZXB0aW9uRGV0YWlscyogZXhjZXB0aW9uRGV0YWls
cykKK1ZhbHVlQW5kRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRT
Y3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0
LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiB7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqbV9mcmFt
ZS5kb2N1bWVudCgpOwogICAgIGlmICghc2hvdWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRzKGRvY3Vt
ZW50KSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGRvY3VtZW50LnNldEhhc0V2YWx1YXRl
ZFVzZXJBZ2VudFNjcmlwdHMoKTsKLSAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdEluV29ybGQod29y
bGQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgZXhjZXB0aW9uRGV0YWlscyk7CisgICAgcmV0
dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUp
OwogfQogCiBib29sIFNjcmlwdENvbnRyb2xsZXI6OnNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0
cyhEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CkBAIC01OTgsMTQgKzYxMCwxMCBAQCBib29sIFNj
cmlwdENvbnRyb2xsZXI6OmNhbkV4ZWN1dGVTY3JpcHRzKFJlYXNvbkZvckNhbGxpbmdDYW5FeGVj
dXRlU2NyaXB0cyByZWFzbwogICAgIHJldHVybiBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmFs
bG93U2NyaXB0KG1fZnJhbWUuc2V0dGluZ3MoKS5pc1NjcmlwdEVuYWJsZWQoKSk7CiB9CiAKLUpT
VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlw
dCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBFeGNlcHRpb25EZXRhaWxzKiBleGNlcHRpb25EZXRh
aWxzKQorSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJZ25vcmlu
Z0V4Y2VwdGlvbihjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQog
ewogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoZm9yY2VVc2VyR2Vz
dHVyZSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNl
ckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KTsKLSAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdChTY3Jp
cHRTb3VyY2VDb2RlKHNjcmlwdCwgVVJMKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpLCBUZXh0
UG9zaXRpb24oKSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIENhY2hl
ZFNjcmlwdEZldGNoZXI6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmNoYXJzZXQoKSkpLCBl
eGNlcHRpb25EZXRhaWxzKTsKLX0KIAotSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRl
U2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIEV4Y2VwdGlvbkRldGFp
bHMqIGV4Y2VwdGlvbkRldGFpbHMpCi17CiAgICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0cyhBYm91
dFRvRXhlY3V0ZVNjcmlwdCkgfHwgaXNQYXVzZWQoKSkKICAgICAgICAgcmV0dXJuIHsgfTsgLy8g
RklYTUU6IFdvdWxkIGpzTnVsbCBiZSBiZXR0ZXI/CiAKQEAgLTYxMyw3ICs2MjEsNyBAQCBKU1Zh
bHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYgc291cmNlQ29kZSwgRXhjZQogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjQ3NjMKICAgICBSZWY8RnJhbWU+IHByb3RlY3RvcihtX2ZyYW1lKTsgLy8g
U2NyaXB0IGV4ZWN1dGlvbiBjYW4gZGVzdHJveSB0aGUgZnJhbWUsIGFuZCB0aHVzIHRoZSBTY3Jp
cHRDb250cm9sbGVyLgogCi0gICAgcmV0dXJuIGV2YWx1YXRlKHNvdXJjZUNvZGUsIGV4Y2VwdGlv
bkRldGFpbHMpOworICAgIHJldHVybiBldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNv
dXJjZUNvZGUoc2NyaXB0LCBVUkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSksIFRleHRQb3Np
dGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgQ2FjaGVkU2Ny
aXB0RmV0Y2hlcjo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2hhcnNldCgpKSkpOwogfQog
CiBib29sIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29uc3QgVVJM
JiB1cmwsIFNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCBzaG91bGRSZXBsYWNl
RG9jdW1lbnRJZkphdmFTY3JpcHRVUkwpCkBAIC02MzIsNyArNjQwLDcgQEAgYm9vbCBTY3JpcHRD
b250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYgdXJsLCBTaG91bGRS
ZXBsYWNlRG9jdW0KICAgICBjb25zdCBpbnQgamF2YXNjcmlwdFNjaGVtZUxlbmd0aCA9IHNpemVv
ZigiamF2YXNjcmlwdDoiKSAtIDE7CiAKICAgICBTdHJpbmcgZGVjb2RlZFVSTCA9IGRlY29kZVVS
TEVzY2FwZVNlcXVlbmNlcyh1cmwuc3RyaW5nKCkpOwotICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0
ZVNjcmlwdChkZWNvZGVkVVJMLnN1YnN0cmluZyhqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoKSk7Cisg
ICAgYXV0byByZXN1bHQgPSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oZGVjb2RlZFVS
TC5zdWJzdHJpbmcoamF2YXNjcmlwdFNjaGVtZUxlbmd0aCkpOwogCiAgICAgLy8gSWYgZXhlY3V0
aW5nIHNjcmlwdCBjYXVzZWQgdGhpcyBmcmFtZSB0byBiZSByZW1vdmVkIGZyb20gdGhlIHBhZ2Us
IHdlCiAgICAgLy8gZG9uJ3Qgd2FudCB0byB0cnkgdG8gcmVwbGFjZSBpdHMgZG9jdW1lbnQhCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggMTMy
NzRhNWQxY2Y2ZDUyYjRhMjZlYzQ4ZGI1MDBhYmZmZTMzZWQ2Yi4uYjhiMjliMTg4YzhiOTIwOTk1
ZmFjNzFkYjFlODQwOTUyODYyODMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuaApAQCAtNzAsNiArNzAsOCBAQCBlbnVtIFJlYXNvbkZvckNhbGxp
bmdDYW5FeGVjdXRlU2NyaXB0cyB7CiAgICAgTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQKIH07CiAK
K3VzaW5nIFZhbHVlQW5kRXhjZXB0aW9uID0gc3RkOjpwYWlyPEpTQzo6SlNWYWx1ZSwgV1RGOjpP
cHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPj47CisKIGNsYXNzIFNjcmlwdENvbnRyb2xsZXIgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8U2NyaXB0Q29udHJvbGxlcj4gewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogCkBAIC04OCwxMCArOTAsMTAgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IHZvaWQgZ2V0QWxsV29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4mKTsKIAotICAg
IEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBFeGNl
cHRpb25EZXRhaWxzKiA9IG51bGxwdHIpOwotICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1
ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1
cmUgPSBmYWxzZSwgRXhjZXB0aW9uRGV0YWlscyogPSBudWxscHRyKTsKLSAgICBKU0M6OkpTVmFs
dWUgZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBz
Y3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlLCBFeGNlcHRpb25EZXRhaWxzKiA9
IG51bGxwdHIpOwotICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlVXNlckFn
ZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlLCBFeGNlcHRpb25EZXRhaWxzKiA9IG51bGxwdHIpOworICAg
IFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRp
b24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsK
KyAgICBKU0M6OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihE
T01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0
dXJlID0gZmFsc2UpOworICAgIFZhbHVlQW5kRXhjZXB0aW9uIGV4ZWN1dGVTY3JpcHRJbldvcmxk
KERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdl
c3R1cmUgPSBmYWxzZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgVmFsdWVBbmRFeGNlcHRpb24gZXhl
Y3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5n
JiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSk7CiAKICAgICBib29sIHNob3VsZEFsbG93
VXNlckFnZW50U2NyaXB0cyhEb2N1bWVudCYpIGNvbnN0OwogCkBAIC0xMDIsOCArMTA0LDkgQEAg
cHVibGljOgogICAgIC8vIERhcndpbiBpcyBhbiBleGNlcHRpb24gdG8gdGhpcyBydWxlOiBpdCBp
cyBPSyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSBhbnkgdGhyZWFkLCBldmVuIHJlZW50cmFu
dGx5LgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAotICAgIEpTQzo6
SlNWYWx1ZSBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRXhjZXB0aW9uRGV0YWls
cyogPSBudWxscHRyKTsKLSAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNj
cmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmLCBFeGNlcHRpb25EZXRhaWxzKiA9IG51
bGxwdHIpOworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKGNvbnN0
IFNjcmlwdFNvdXJjZUNvZGUmKTsKKyAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJbldvcmxkSWdu
b3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYp
OworICAgIFZhbHVlQW5kRXhjZXB0aW9uIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3Vy
Y2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7CiAKICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJ
bldvcmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBS
ZWY8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiYmLCBET01XcmFwcGVyV29ybGQmKTsKICAgICB2b2lk
IGxvYWRNb2R1bGVTY3JpcHQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcmIG1v
ZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFj
a2VuZC5jcHAKaW5kZXggYTc1NWZjYjkzY2ExMjIyMjhlNzJhNDU5NDhlZmI0MTA0MmNmMTVkNy4u
NTJmMzE5MmM1YjIwMDJmNTE4MzhhNzQ0OTI4N2I2ZWU4MGEzNTczZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgQ29udGVudFJ1bGVMaXN0UmVzdWx0cyBD
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50UnVsZUxpc3RzRm9yTG9hZCgK
ICAgICAgICAgICAgICAgICAmJiAoKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHVybC5o
b3N0KCksICJ3d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20iKSAmJiBlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZSh1cmwucGF0aCgpLCAiL2FuYWx5dGljcy5qcyIpKQogICAgICAgICAgICAgICAg
ICAgICB8fCAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodXJsLmhvc3QoKSwgInd3dy5n
b29nbGV0YWdtYW5hZ2VyLmNvbSIpICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHVy
bC5wYXRoKCksICIvZ3RtLmpzIikpKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBmcmFt
ZSA9IGN1cnJlbnREb2N1bWVudC0+ZnJhbWUoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUt
PnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUgeyAidHJ5IHsgd2luZG93LmRhdGFM
YXllci5oaWRlLmVuZCgpOyBjb25zb2xlLmxvZygnQ2FsbGVkIHdpbmRvdy5kYXRhTGF5ZXIuaGlk
ZS5lbmQoKSBpbiBmcmFtZSAnICsgZG9jdW1lbnQuVVJMICsgJyBiZWNhdXNlIHRoZSBjb250ZW50
IGJsb2NrZXIgYmxvY2tlZCB0aGUgbG9hZCBvZiB0aGUgaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5
dGljcy5jb20vYW5hbHl0aWNzLmpzIHNjcmlwdCcpOyB9IGNhdGNoIChlKSB7IH0iX3MgfSk7Cisg
ICAgICAgICAgICAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZUlnbm9yaW5nRXhjZXB0
aW9uKFNjcmlwdFNvdXJjZUNvZGUgeyAidHJ5IHsgd2luZG93LmRhdGFMYXllci5oaWRlLmVuZCgp
OyBjb25zb2xlLmxvZygnQ2FsbGVkIHdpbmRvdy5kYXRhTGF5ZXIuaGlkZS5lbmQoKSBpbiBmcmFt
ZSAnICsgZG9jdW1lbnQuVVJMICsgJyBiZWNhdXNlIHRoZSBjb250ZW50IGJsb2NrZXIgYmxvY2tl
ZCB0aGUgbG9hZCBvZiB0aGUgaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0
aWNzLmpzIHNjcmlwdCcpOyB9IGNhdGNoIChlKSB7IH0iX3MgfSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBmM2Y3ZjAzMmYyMGUx
YTVhM2YzYzhmMTNkMjI3MDk5ZjViODJiMWU5Li4xN2VkYzhiYzU4MmYzNjc0N2M3YmM0NGFiZTlk
ZDVhNGJmMGNiZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTcyMDEsNyArNzIwMSw3
IEBAIHZvaWQgRG9jdW1lbnQ6OmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdChET01XcmFwcGVy
V29ybGQmIHdvcmxkKQogICAgICAgICBqc1N0cmluZyA9IFN0cmluZyhwbHVnSW5zSmF2YVNjcmlw
dCwgc2l6ZW9mKHBsdWdJbnNKYXZhU2NyaXB0KSk7CiAKICAgICBzZXRIYXNFdmFsdWF0ZWRVc2Vy
QWdlbnRTY3JpcHRzKCk7Ci0gICAgc2NyaXB0Q29udHJvbGxlci5ldmFsdWF0ZUluV29ybGQoU2Ny
aXB0U291cmNlQ29kZShqc1N0cmluZyksIHdvcmxkKTsKKyAgICBzY3JpcHRDb250cm9sbGVyLmV2
YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUoanNTdHJpbmcp
LCB3b3JsZCk7CiAKICAgICBtX2hhc0luamVjdGVkUGx1Z0luc1NjcmlwdCA9IHRydWU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggZTBkOTY3YjQ1NzRiYjM1MzA4NWZi
Mzc3NjUwOTRjYzJmOGEzNTM4NS4uMTUxMTc1MTllZjkxMzQ2NzY3N2QyNTg2NTNjZDI3MjAxNzdl
ODA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMzg3LDcgKzM4Nyw3
IEBAIHZvaWQgU2NyaXB0RWxlbWVudDo6ZXhlY3V0ZUNsYXNzaWNTY3JpcHQoY29uc3QgU2NyaXB0
U291cmNlQ29kZSYgc291cmNlQ29kZSkKICAgICBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJ
bmNyZW1lbnRlciBpZ25vcmVEZXNjdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIobV9pc0V4
dGVybmFsU2NyaXB0ID8gJmRvY3VtZW50IDogbnVsbHB0cik7CiAgICAgQ3VycmVudFNjcmlwdElu
Y3JlbWVudGVyIGN1cnJlbnRTY3JpcHRJbmNyZW1lbnRlcihkb2N1bWVudCwgbV9lbGVtZW50KTsK
IAotICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZShzb3VyY2VDb2RlKTsKKyAgICBmcmFtZS0+
c2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihzb3VyY2VDb2RlKTsKIH0KIAogdm9p
ZCBTY3JpcHRFbGVtZW50OjpleGVjdXRlTW9kdWxlU2NyaXB0KExvYWRhYmxlTW9kdWxlU2NyaXB0
JiBsb2FkYWJsZU1vZHVsZVNjcmlwdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCmluZGV4IGViNWZmNTY3ZWQ4MTBkZmMxODUxMDY4MDMyOTNhMmQ1NjRjZTIzNDkuLjcz
MGI0ZTM4OWU3ODNmZTU2Njc1NWI4YWMzNjg4MTE5ZjA5NjkxNjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNzMxNyw3ICs3MzE3LDcgQEAgYm9vbCBIVE1M
TWVkaWFFbGVtZW50OjplbnN1cmVNZWRpYUNvbnRyb2xzSW5qZWN0ZWRTY3JpcHQoKQogI2Vsc2UK
ICAgICAgICAgVVJMIHNjcmlwdFVSTDsKICNlbmRpZgotICAgICAgICBzY3JpcHRDb250cm9sbGVy
LmV2YWx1YXRlSW5Xb3JsZChTY3JpcHRTb3VyY2VDb2RlKG1lZGlhQ29udHJvbHNTY3JpcHQsIFdU
Rk1vdmUoc2NyaXB0VVJMKSksIHdvcmxkKTsKKyAgICAgICAgc2NyaXB0Q29udHJvbGxlci5ldmFs
dWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKG1lZGlhQ29udHJv
bHNTY3JpcHQsIFdURk1vdmUoc2NyaXB0VVJMKSksIHdvcmxkKTsKICAgICAgICAgaWYgKFVOTElL
RUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRp
b24oKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAppbmRleCAx
YjNjODg3NmNjNjg3MzFiNWQ2MjhkZDJkZTJiOWQ2MDRmMmE0NWZiLi4wZDgzMTkyNTI3ODJkYTk1
YTcyZWQzNmNhNWYwNDhjN2NkOGM4NDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC00MjAsNyAr
NDIwLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpkaXNwYXRjaE1lc3Nh
Z2VBc3luYyhjb25zdCBTdHJpbmcmIG1lc3NhZ2VPYmoKIGJvb2wgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbDo6ZXZhbHVhdGVBc0Jvb2xlYW4oY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQog
ewogICAgIGF1dG8mIHN0YXRlID0gKm1haW5Xb3JsZEV4ZWNTdGF0ZSgmbV9mcm9udGVuZFBhZ2Ut
Pm1haW5GcmFtZSgpKTsKLSAgICByZXR1cm4gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnNj
cmlwdCgpLmV4ZWN1dGVTY3JpcHQoZXhwcmVzc2lvbikudG9XVEZTdHJpbmcoJnN0YXRlKSA9PSAi
dHJ1ZSI7CisgICAgcmV0dXJuIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5l
eGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oZXhwcmVzc2lvbikudG9XVEZTdHJpbmcoJnN0
YXRlKSA9PSAidHJ1ZSI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6
ZXZhbHVhdGVPbkxvYWQoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQpAQCAtNDMxLDcgKzQzMSw3
IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVhdGVPbkxvYWQoY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uKQogICAgIH0KIAogICAgIEpTQzo6U3VzcGVuZEV4Y2VwdGlv
blNjb3BlIHNjb3BlKCZtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnZtKCkp
OwotICAgIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5ldmFsdWF0ZShTY3Jp
cHRTb3VyY2VDb2RlKGV4cHJlc3Npb24pKTsKKyAgICBtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1l
KCkuc2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKGV4
cHJlc3Npb24pKTsKIH0KIAogUGFnZSogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6aW5z
cGVjdGVkUGFnZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggMDFlZGQwMDYwZGUzNjJjMWFiN2I3
MDI0NzVhZTgzODIyMjc5YTgwMC4uY2Y4OWY5ZWI1MDUyMzI2ZmNmOGNiZDI2ZDg1OTZjZjQ3MjRj
MjM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcApAQCAtNzczLDcgKzc3Myw3IEBAIHZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUmIGZyYW1lKQogICAgIGlm
IChtX2Jvb3RzdHJhcFNjcmlwdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZy
YW1lLnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUobV9ib290c3RyYXBTY3JpcHQs
IFVSTCB7IFVSTCgpLCAid2ViLWluc3BlY3RvcjovL2Jvb3RzdHJhcC5qcyJfcyB9KSk7CisgICAg
ZnJhbWUuc2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2Rl
KG1fYm9vdHN0cmFwU2NyaXB0LCBVUkwgeyBVUkwoKSwgIndlYi1pbnNwZWN0b3I6Ly9ib290c3Ry
YXAuanMiX3MgfSkpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkUGFpbnQoUmVu
ZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCBiNDk4YTIyNGIxOTBjNmNlODQ0ZWI5ZGQ3
ZWI5YjdhMTA1ZDc2ZGM1Li42ZWFmY2EzNGU4MWEzOTkyZGQxZmI4MGY5MDMyZWI5NmM4YjliNzc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMz
LDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUgc3RhdGUpCiAgICAgaWYg
KCF1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUpIHsKICAgICAg
ICAgdW5ibG9ja0hhbmRsZXIud3JhcFdpdGhEZWNpc2lvbkhhbmRsZXIoW3NjcmlwdENvbnRyb2xs
ZXIgPSBtYWtlV2Vha1B0cihmcmFtZS0+c2NyaXB0KCkpLCBzY3JpcHQgPSB1bmJsb2NrUmVxdWVz
dERlbmllZFNjcmlwdC5pc29sYXRlZENvcHkoKV0oYm9vbCB1bmJsb2NrZWQpIHsKICAgICAgICAg
ICAgIGlmICghdW5ibG9ja2VkICYmIHNjcmlwdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAg
c2NyaXB0Q29udHJvbGxlci0+ZXhlY3V0ZVNjcmlwdChzY3JpcHQpOworICAgICAgICAgICAgICAg
IHNjcmlwdENvbnRyb2xsZXItPmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihzY3JpcHQp
OwogICAgICAgICB9KTsKICAgICB9CiAgICAgbV9kb2N1bWVudExvYWRlci5mcmFtZUxvYWRlcigp
LT5jbGllbnQoKS5jb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdURk1vdmUodW5ibG9ja0hhbmRs
ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggMjJjYzFmZDE1YmMxN2NmZDg1NmU5MTRjMzhh
ODZiMGM0MmFjNzRiYy4uZTA4MzNkYzA4MzNmNTlhOWViMjYzNTA2MTMxY2RiYjk3YzlmOTIxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTYzNCw3ICs2MzQsNyBAQCB2b2lkIEZyYW1lOjppbmpl
Y3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgVXNl
clNjcmlwdAogCiAgICAgZG9jdW1lbnQtPnNldEFzUnVubmluZ1VzZXJTY3JpcHRzKCk7CiAgICAg
bG9hZGVyKCkuY2xpZW50KCkud2lsbEluamVjdFVzZXJTY3JpcHQod29ybGQpOwotICAgIG1fc2Ny
aXB0LT5ldmFsdWF0ZUluV29ybGQoU2NyaXB0U291cmNlQ29kZShzY3JpcHQuc291cmNlKCksIFVS
TChzY3JpcHQudXJsKCkpKSwgd29ybGQpOworICAgIG1fc2NyaXB0LT5ldmFsdWF0ZUluV29ybGRJ
Z25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdC5zb3VyY2UoKSwgVVJMKHNj
cmlwdC51cmwoKSkpLCB3b3JsZCk7CiB9CiAKIFJlbmRlclZpZXcqIEZyYW1lOjpjb250ZW50UmVu
ZGVyZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCmluZGV4IGZlMDFj
YzFmZjQ5MWMzNjdmY2FkOTdiZmQ0ZDZjNGU3MzBmNmJkYTguLmY5MGU0NDUyNGQ1ZGEzNzY2MmNj
MmRkNTVmNDIxZjI4OTc3YjQyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxU
cmVlVmlld2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAK
QEAgLTU2LDggKzU2LDggQEAgdm9pZCBYTUxUcmVlVmlld2VyOjp0cmFuc2Zvcm1Eb2N1bWVudFRv
VHJlZVZpZXcoKQogICAgIG1fZG9jdW1lbnQuc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJp
dHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpKTsK
IAogICAgIFN0cmluZyBzY3JpcHRTdHJpbmcgPSBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29w
eWluZyhYTUxWaWV3ZXJfanMsIHNpemVvZihYTUxWaWV3ZXJfanMpKTsKLSAgICBtX2RvY3VtZW50
LmZyYW1lKCktPnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0U3RyaW5n
KSk7Ci0gICAgbV9kb2N1bWVudC5mcmFtZSgpLT5zY3JpcHQoKS5ldmFsdWF0ZShTY3JpcHRTb3Vy
Y2VDb2RlKEF0b21TdHJpbmcoInByZXBhcmVXZWJLaXRYTUxWaWV3ZXIoJ1RoaXMgWE1MIGZpbGUg
ZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUgYW55IHN0eWxlIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQg
d2l0aCBpdC4gVGhlIGRvY3VtZW50IHRyZWUgaXMgc2hvd24gYmVsb3cuJyk7IikpKTsKKyAgICBt
X2RvY3VtZW50LmZyYW1lKCktPnNjcmlwdCgpLmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2Ny
aXB0U291cmNlQ29kZShzY3JpcHRTdHJpbmcpKTsKKyAgICBtX2RvY3VtZW50LmZyYW1lKCktPnNj
cmlwdCgpLmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29kZShBdG9tU3Ry
aW5nKCJwcmVwYXJlV2ViS2l0WE1MVmlld2VyKCdUaGlzIFhNTCBmaWxlIGRvZXMgbm90IGFwcGVh
ciB0byBoYXZlIGFueSBzdHlsZSBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggaXQuIFRoZSBk
b2N1bWVudCB0cmVlIGlzIHNob3duIGJlbG93LicpOyIpKSk7CiAKICAgICBTdHJpbmcgY3NzU3Ry
aW5nID0gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoWE1MVmlld2VyX2Nzcywgc2l6
ZW9mKFhNTFZpZXdlcl9jc3MpKTsKICAgICBhdXRvIHRleHQgPSBtX2RvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKGNzc1N0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cAppbmRleCA3MGVmYmZhM2U4N2EyYWJhY2M0NTE0NjQwZmRhM2Y3N2ViNjgwZTVmLi4wYzE1Zjhi
OTNjNzgwN2VmZDc0YmJlNDAwODI4NDQ0MWM1NmZhZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI0NzIsNyArMjQ3Miw3IEBAIHZvaWQgV0tQYWdlU2V0
UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNs
aWVudCkKIAogdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQYWdlUmVmIHBh
Z2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlUnVuSmF2
YVNjcmlwdEZ1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+cnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lKHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgdHJ1ZSwgW2Nv
bnRleHQsIGNhbGxiYWNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmV0dXJuVmFsdWUs
IGJvb2wsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVy
cm9yIGVycm9yKSB7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWUodG9JbXBsKHNjcmlwdFJlZiktPnN0cmluZygpLCB0cnVlLCBbY29udGV4dCwgY2FsbGJhY2td
KEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiByZXR1cm5WYWx1ZSwgT3B0aW9uYWw8V2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAg
ICAgY2FsbGJhY2sodG9BUEkocmV0dXJuVmFsdWUpLCAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpF
cnJvcjo6Tm9uZSkgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5wdHIoKSkgOiAwLCBjb250
ZXh0KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCmluZGV4IDMzNTRhYzZlZWNiNWE4ZDcxOThhZThhNThjYTI5OTQ0YzgzMGU1
MTAuLjE5NDJiMDI1NjFkZjE1OTgyY2EwYTExZDEwMGMzOTNjYjhiYTA0YmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTEyMiw3ICsx
MTIyLDcgQEAgLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3Jp
cHRTdHJpbmcgZm9yY2VVc2VyR2VzdHVyZTooQk9PTCkKIHsKICAgICBhdXRvIGhhbmRsZXIgPSBh
ZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSk7CiAKLSAgICBfcGFnZS0+cnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKGphdmFTY3JpcHRTdHJpbmcsIGZvcmNlVXNlckdlc3R1cmUsIFtoYW5k
bGVyXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBi
b29sIGhhZEV4Y2VwdGlvbiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyYgZGV0YWls
cywgV2ViS2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvciBlcnJvckNvZGUpIHsKKyAgICBf
cGFnZS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGphdmFTY3JpcHRTdHJpbmcsIGZvcmNlVXNl
ckdlc3R1cmUsIFtoYW5kbGVyXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxz
LCBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJhY2s6OkVycm9yIGVycm9yQ29kZSkgewogICAgICAg
ICBpZiAoIWhhbmRsZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTExNDUsMTggKzExNDUs
MTggQEAgLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRT
dHJpbmcgZm9yY2VVc2VyR2VzdHVyZTooQk9PTCkKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8g
cmF3SGFuZGxlciA9ICh2b2lkICheKShpZCwgTlNFcnJvciAqKSloYW5kbGVyLmdldCgpOwotICAg
ICAgICBpZiAoaGFkRXhjZXB0aW9uKSB7CisgICAgICAgIGlmIChkZXRhaWxzKSB7CiAgICAgICAg
ICAgICBBU1NFUlQoIXNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CiAKICAgICAgICAgICAgIFJldGFp
blB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiB1c2VySW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAKICAgICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmpl
Y3Q6bG9jYWxpemVkRGVzY3JpcHRpb25Gb3JFcnJvckNvZGUoV0tFcnJvckphdmFTY3JpcHRFeGNl
cHRpb25PY2N1cnJlZCkgZm9yS2V5Ok5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXldOwotICAgICAg
ICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihkZXRhaWxz
Lm1lc3NhZ2UpIGZvcktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTWVzc2FnZUVycm9yS2V5XTsK
LSAgICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QChkZXRhaWxzLmxpbmVOdW1iZXIpIGZv
cktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTGluZU51bWJlckVycm9yS2V5XTsKLSAgICAgICAg
ICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QChkZXRhaWxzLmNvbHVtbk51bWJlcikgZm9yS2V5Ol9X
S0phdmFTY3JpcHRFeGNlcHRpb25Db2x1bW5OdW1iZXJFcnJvcktleV07CisgICAgICAgICAgICBb
dXNlckluZm8gc2V0T2JqZWN0OnN0YXRpY19jYXN0PE5TU3RyaW5nICo+KGRldGFpbHMtPm1lc3Nh
Z2UpIGZvcktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTWVzc2FnZUVycm9yS2V5XTsKKyAgICAg
ICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QChkZXRhaWxzLT5saW5lTnVtYmVyKSBmb3JLZXk6
X1dLSmF2YVNjcmlwdEV4Y2VwdGlvbkxpbmVOdW1iZXJFcnJvcktleV07CisgICAgICAgICAgICBb
dXNlckluZm8gc2V0T2JqZWN0OkAoZGV0YWlscy0+Y29sdW1uTnVtYmVyKSBmb3JLZXk6X1dLSmF2
YVNjcmlwdEV4Y2VwdGlvbkNvbHVtbk51bWJlckVycm9yS2V5XTsKIAotICAgICAgICAgICAgaWYg
KCFkZXRhaWxzLnNvdXJjZVVSTC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgW3VzZXJJbmZv
IHNldE9iamVjdDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOmRldGFpbHMuc291cmNlVVJM
XSBmb3JLZXk6X1dLSmF2YVNjcmlwdEV4Y2VwdGlvblNvdXJjZVVSTEVycm9yS2V5XTsKKyAgICAg
ICAgICAgIGlmICghZGV0YWlscy0+c291cmNlVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAg
ICBbdXNlckluZm8gc2V0T2JqZWN0OltOU1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJpbmc6ZGV0YWls
cy0+c291cmNlVVJMXSBmb3JLZXk6X1dLSmF2YVNjcmlwdEV4Y2VwdGlvblNvdXJjZVVSTEVycm9y
S2V5XTsKIAogICAgICAgICAgICAgcmF3SGFuZGxlcihuaWwsIGFkb3B0TlMoW1tOU0Vycm9yIGFs
bG9jXSBpbml0V2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvckphdmFTY3JpcHRF
eGNlcHRpb25PY2N1cnJlZCB1c2VySW5mbzp1c2VySW5mby5nZXQoKV0pLmdldCgpKTsKICAgICAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggZDIxYzc4MmVkZWQxMjEzYzY5MTMxMWNkMmRjOTViZmJj
NGQ4NzZlYS4uZGQzN2M1MjAzYmExN2RlM2I4YmQxNTdlMWJlYTIwYjRiMWVhOGM3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAK
QEAgLTM3MDQsNyArMzcwNCwxMCBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlw
dF9pbl93b3JsZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhcgogICAgIGdfcmV0
dXJuX2lmX2ZhaWwod29ybGROYW1lKTsKIAogICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9w
dEdSZWYoZ190YXNrX25ldyh3ZWJWaWV3LCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRh
KSk7Ci0gICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRX
b3JsZChTdHJpbmc6OmZyb21VVEY4KHNjcmlwdCksIHRydWUsIFN0cmluZzo6ZnJvbVVURjgod29y
bGROYW1lKSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBib29sLCBjb25zdCBFeGNlcHRpb25EZXRhaWxzJiBl
eGNlcHRpb25EZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICBnZXRQ
YWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFN0cmluZzo6
ZnJvbVVURjgoc2NyaXB0KSwgdHJ1ZSwgU3RyaW5nOjpmcm9tVVRGOCh3b3JsZE5hbWUpLCBbdGFz
ayA9IFdURk1vdmUodGFzayldKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVk
U2NyaXB0VmFsdWUsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+ZSBkZXRhaWxzLCBXZWJLaXQ6
OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBleGNlcHRp
b25EZXRhaWxzOworICAgICAgICBpZiAoZGV0YWlscykKKyAgICAgICAgICAgIGV4Y2VwdGlvbkRl
dGFpbHMgPSAqZGV0YWlsczsKICAgICAgICAgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRDYWxs
YmFjayhzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGV4Y2VwdGlvbkRldGFpbHMsIHRhc2suZ2V0KCkp
OwogICAgIH0pOwogfQpAQCAtMzc0NCw3ICszNzQ3LDEwIEBAIHN0YXRpYyB2b2lkIHJlc291cmNl
c1N0cmVhbVJlYWRDYWxsYmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0
LCBnCiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhnX3Rhc2tf
Z2V0X3NvdXJjZV9vYmplY3QodGFzay5nZXQoKSkpOwogICAgIGdwb2ludGVyIG91dHB1dFN0cmVh
bURhdGEgPSBnX21lbW9yeV9vdXRwdXRfc3RyZWFtX2dldF9kYXRhKEdfTUVNT1JZX09VVFBVVF9T
VFJFQU0ob2JqZWN0KSk7CiAgICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWlu
RnJhbWUoU3RyaW5nOjpmcm9tVVRGOChyZWludGVycHJldF9jYXN0PGNvbnN0IGdjaGFyKj4ob3V0
cHV0U3RyZWFtRGF0YSkpLCB0cnVlLAotICAgICAgICBbdGFza10oQVBJOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgYm9vbCwgY29uc3QgRXhjZXB0aW9uRGV0
YWlscyYgZXhjZXB0aW9uRGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7Cisg
ICAgICAgIFt0YXNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlw
dFZhbHVlLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxi
YWNrQmFzZTo6RXJyb3IpIHsKKyAgICAgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZXhjZXB0aW9u
RGV0YWlsczsKKyAgICAgICAgICAgIGlmIChkZXRhaWxzKQorICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbkRldGFpbHMgPSAqZGV0YWlsczsKICAgICAgICAgICAgIHdlYmtpdFdlYlZpZXdSdW5KYXZh
U2NyaXB0Q2FsbGJhY2soc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBleGNlcHRpb25EZXRhaWxzLCB0
YXNrLmdldCgpKTsKICAgICAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAppbmRleCBlM2I0NTIzOTk3OTNhNmIxZDY3NDZjZjliZjQ0ODgzNDU4ZmVhYjdm
Li4yYTNmMTk2NjM1ODE4MTE5YjUzMzExYzBjODM3NWVlMThjNDFjMjc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM4NDUsMTggKzM4NDUsMTggQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmxhdW5jaEluaXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKQogICAgICAg
ICBsYXVuY2hQcm9jZXNzKHsgfSwgUHJvY2Vzc0xhdW5jaFJlYXNvbjo6SW5pdGlhbFByb2Nlc3Mp
OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0
IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9p
ZCAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBib29sIGhhZEV4Y2VwdGlvbiwgY29uc3Qg
RXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rp
b24pCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZCAo
QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25E
ZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAg
ICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzY3JpcHQsIGZvcmNlVXNlckdl
c3R1cmUsIFdURjo6bnVsbG9wdCwgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25z
dCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxT
dHJpbmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSosIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBFeGNlcHRpb25EZXRhaWxzJiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5
OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcmIHNjcmlw
dCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5h
bWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlv
bmFsPEV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1
bmN0aW9uKQogewogICAgIC8vIEZvciBiYWNrd2FyZC1jb21wYXRpYmlsaXR5IHN1cHBvcnQgcnVu
bmluZyBzY3JpcHQgaW4gYSBXZWJWaWV3IHdoaWNoIGhhcyBub3QgZG9uZSBhbnkgbG9hZHMgeWV0
cy4KICAgICBsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCk7CiAKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihudWxscHRyLCBm
YWxzZSwgeyB9LCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKKyAgICAgICAgY2FsbGJh
Y2tGdW5jdGlvbihudWxscHRyLCB7IH0sIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zODY0LDcgKzM4NjQsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5n
JiBzY3JpcHQsIGJvbwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRJ
bk1haW5GcmFtZVNjcmlwdFdvcmxkKHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgd29ybGROYW1l
LCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5G
cmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wg
Zm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IEV4Y2VwdGlvbkRldGFpbHMmLCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6
OnJ1bkphdmFTY3JpcHRJbkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJp
bmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJ
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBBU1NFUlQobWFp
bkZyYW1lKCktPmZyYW1lSUQoKSAhPSBmcmFtZUlEKTsKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdElu
RnJhbWUiX3MpKTsKQEAgLTY3ODcsNyArNjc4Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnZh
bGlkYXRlU3RyaW5nQ2FsbGJhY2soQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIGNhbGxiYWNr
LT5pbnZhbGlkYXRlKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzY3JpcHRWYWx1ZUNhbGxi
YWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwgYm9vbCBoYWRFeGNl
cHRpb24sIGNvbnN0IEV4Y2VwdGlvbkRldGFpbHMmIGRldGFpbHMsIENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4g
ZGV0YWlscywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBt
X2NhbGxiYWNrcy50YWtlPFNjcmlwdFZhbHVlQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlm
ICghY2FsbGJhY2spIHsKQEAgLTY3OTYsNyArNjc5Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
Y3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5j
ZSwKICAgICB9CiAKICAgICBpZiAoZGF0YVJlZmVyZW5jZS5pc0VtcHR5KCkpIHsKLSAgICAgICAg
Y2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShudWxscHRyLCBoYWRFeGNl
cHRpb24sIGRldGFpbHMpOworICAgICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJl
dHVyblZhbHVlKG51bGxwdHIsIGRldGFpbHMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC02ODA0LDcgKzY4MDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2NyaXB0VmFsdWVDYWxsYmFj
ayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsCiAgICAgZGF0YS5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKICAgICBkYXRhLmFwcGVu
ZChkYXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpOwogCi0gICAgY2Fs
bGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShBUEk6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6YWRvcHQoV1RGTW92ZShkYXRhKSkucHRyKCksIGhhZEV4Y2VwdGlvbiwgZGV0YWls
cyk7CisgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoV1RGTW92ZShkYXRhKSkucHRyKCksIGRldGFpbHMp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tcHV0ZWRQYWdlc0NhbGxiYWNrKGNvbnN0IFZl
Y3RvcjxJbnRSZWN0PiYgcGFnZVJlY3RzLCBkb3VibGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50
aW5nLCBjb25zdCBGbG9hdEJveEV4dGVudCYgY29tcHV0ZWRQYWdlTWFyZ2luLCBDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGFl
Mzg1MjIyMWQ0YTUyNDM1NTJiYTAyM2YyZjQ4Yjk0ZWY3Yjk4YWQuLjAyNzRkN2NlMmY0MzY4MTU0
Y2NiNjc5MjVjZDBmOWRhNDNjMjljZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCkBAIC03NSw2ICs3NSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9n
Z2luZ0NsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0V2ZW50VHJhY2tpbmdSZWdpb25zLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9FeGNl
cHRpb25EZXRhaWxzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250QXR0cmlidXRlcy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJh
bWVWaWV3Lmg+IC8vIEZJWE1FOiBNb3ZlIExheW91dFZpZXdwb3J0Q29uc3RyYWludCB0byBpdHMg
b3duIGZpbGUgYW5kIHN0b3AgaW5jbHVkaW5nIHRoaXMuCkBAIC0zMzUsNyArMzM2LDcgQEAgdHlw
ZWRlZiBHZW5lcmljQ2FsbGJhY2s8QVBJOjpEYXRhKj4gRGF0YUNhbGxiYWNrOwogdHlwZWRlZiBH
ZW5lcmljQ2FsbGJhY2s8dWludDY0X3Q+IFVuc2lnbmVkQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVy
aWNDYWxsYmFjazxFZGl0aW5nUmFuZ2U+IEVkaXRpbmdSYW5nZUNhbGxiYWNrOwogdHlwZWRlZiBH
ZW5lcmljQ2FsbGJhY2s8Y29uc3QgU3RyaW5nJj4gU3RyaW5nQ2FsbGJhY2s7Ci10eXBlZGVmIEdl
bmVyaWNDYWxsYmFjazxBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wsIGNvbnN0IFdl
YkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmPiBTY3JpcHRWYWx1ZUNhbGxiYWNrOwordHlwZWRlZiBH
ZW5lcmljQ2FsbGJhY2s8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJD
b3JlOjpFeGNlcHRpb25EZXRhaWxzPj4gU2NyaXB0VmFsdWVDYWxsYmFjazsKIHR5cGVkZWYgR2Vu
ZXJpY0NhbGxiYWNrPGNvbnN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzJj4gRm9udEF0dHJpYnV0
ZXNDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyY+IFNlbGVjdGlvbkNvbnRleHRDYWxsYmFjazsKIHR5cGVk
ZWYgR2VuZXJpY0NhbGxiYWNrPGJvb2w+IEJvb2xDYWxsYmFjazsKQEAgLTEwNjAsMTAgKzEwNjEs
MTAgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShGdW5j
dGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9p
ZCBnZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiwgV1RGOjpGdW5jdGlvbjx2b2lkIChj
b25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRXZWJB
cmNoaXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lKGNvbnN0IFN0cmluZyYsIGJvb2wsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWUqLCBib29sIGhhZEV4Y2VwdGlvbiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0
aW9uRGV0YWlscyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pOwot
ICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5n
JiwgYm9vbCwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBib29sIGhhZEV4Y2VwdGlvbiwgY29u
c3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrRnVuY3Rpb24pOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0
IFN0cmluZyYsIGJvb2wsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5N
YWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcmLCBib29sLCBjb25zdCBPcHRpb25hbDxT
dHJpbmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKICAgICAvLyBGb3Igc3ViIGZyYW1lcy4K
LSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlv
bjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24sIGNv
bnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2Vz
dHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pOwogICAgIHZvaWQgZm9yY2VSZXBhaW50KFJlZlB0cjxWb2lkQ2Fs
bGJhY2s+JiYpOwogCiAgICAgZmxvYXQgaGVhZGVySGVpZ2h0KFdlYkZyYW1lUHJveHkmKTsKQEAg
LTE5NDMsNyArMTk0NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBib29sQ2FsbGJhY2soYm9vbCBy
ZXN1bHQsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgc3RyaW5nQ2FsbGJhY2soY29uc3QgU3RyaW5n
JiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2soQ2FsbGJh
Y2tJRCk7Ci0gICAgdm9pZCBzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYsIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxz
JiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxs
YmFja0lEKTsKICAgICB2b2lkIGNvbXB1dGVkUGFnZXNDYWxsYmFjayhjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6SW50UmVjdD4mLCBkb3VibGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBjb25z
dCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYgY29tcHV0ZWRQYWdlTWFyZ2luLCBDYWxsYmFja0lE
KTsKICAgICB2b2lkIHZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0IFN0cmluZyYsIGJvb2ws
IGludCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCB1bnNpZ25lZENhbGxiYWNrKHVpbnQ2NF90LCBD
YWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgppbmRleCAwYzY1MWU2ODViMjk3OWY0ZTM2ZTljOGE1ODY0MTZkNjcxYmRmZmY1
Li40ZGVmNWRjMDFkYjRkNDI5ZmJiN2Q3MTY5MzhhMTExNzBkOWVhMjM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xNjksNyAr
MTY5LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBTdHJpbmdDYWxsYmFjayhT
dHJpbmcgcmVzdWx0U3RyaW5nLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBC
b29sQ2FsbGJhY2soYm9vbCByZXN1bHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
ICAgIEludmFsaWRhdGVTdHJpbmdDYWxsYmFjayhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKLSAgICBTY3JpcHRWYWx1ZUNhbGxiYWNrKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRh
LCBib29sIGhhZEV4Y2VwdGlvbiwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMgZGV0
YWlscywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgU2NyaXB0VmFsdWVDYWxs
YmFjayhJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhj
ZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAg
ICAgQ29tcHV0ZWRQYWdlc0NhbGxiYWNrKFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiBwYWdlUmVj
dHMsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIFdlYkNvcmU6OlJlY3RFZGdl
czxmbG9hdD4gY29tcHV0ZWRQYWdlTWFyZ2luLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKICAgICBWYWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhTdHJpbmcgY29tbWFuZCwgYm9vbCBpc0Vu
YWJsZWQsIGludDMyX3Qgc3RhdGUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAg
IEVkaXRpbmdSYW5nZUNhbGxiYWNrKHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSByYW5nZSwg
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDg4ZTEzYWQ4MmFkY2VjNGZiZWU2ODVm
MmM3YmU0NTk4ZjhkNGNiYmYuLjNlYTAwNmIzY2UzOGUzODk0MWZkYmQ1ODY3M2NkODFhNjgyYzI1
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCkBAIC0xMjUzLDcgKzEyNTMsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1KYXZhU2Ny
aXB0VVJMUmVxdWVzdChVUkxSZXF1ZXN0KiByZXF1ZXN0KQogICAgIC8vIEV2YWx1YXRlIHRoZSBK
YXZhU2NyaXB0IGNvZGUuIE5vdGUgdGhhdCBydW5uaW5nIEphdmFTY3JpcHQgaGVyZSBjb3VsZCBj
YXVzZSB0aGUgcGx1Zy1pbiB0byBiZSBkZXN0cm95ZWQsIHNvIHdlCiAgICAgLy8gZ3JhYiByZWZl
cmVuY2VzIHRvIHRoZSBwbHVnLWluIGhlcmUuCiAgICAgUmVmUHRyPFBsdWdpbj4gcGx1Z2luID0g
bV9wbHVnaW47Ci0gICAgYXV0byByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlw
dChqc1N0cmluZywgcmVxdWVzdC0+YWxsb3dQb3B1cHMoKSk7CisgICAgYXV0byByZXN1bHQgPSBm
cmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGpzU3RyaW5nLCBy
ZXF1ZXN0LT5hbGxvd1BvcHVwcygpKTsKIAogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcAppbmRleCA5MDhl
MzlhZmRiMGM4ODljZmU1NjUyYjM5YWRjNDcwYzNhMDlhOWEyLi5jMTg5ZTk4MjVhZDQ5NDcwZWQ2
MjQzNWU4NmQ1OWRmNjBmMzhhZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvckZyb250ZW5kQVBJRGlz
cGF0Y2hlci5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZEFQ
SURpc3BhdGNoZXI6OmV2YWx1YXRlT3JRdWV1ZUV4cHJlc3Npb24oY29uc3QgU3RyaW5nJgogCiAg
ICAgQVNTRVJUKG1fcXVldWUuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQoIW1fcGFnZS5jb3JlUGFn
ZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5pc1BhdXNlZCgpKTsKLSAgICBtX3BhZ2UuY29yZVBh
Z2UoKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChleHByZXNzaW9uKTsKKyAg
ICBtX3BhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdEln
bm9yaW5nRXhjZXB0aW9uKGV4cHJlc3Npb24pOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckZyb250
ZW5kQVBJRGlzcGF0Y2hlcjo6ZXZhbHVhdGVRdWV1ZWRFeHByZXNzaW9ucygpCkBAIC0xMDksNyAr
MTA5LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OmV2YWx1YXRl
UXVldWVkRXhwcmVzc2lvbnMoKQogCiAgICAgZm9yIChjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24g
OiBtX3F1ZXVlKSB7CiAgICAgICAgIEFTU0VSVCghbV9wYWdlLmNvcmVQYWdlKCktPm1haW5GcmFt
ZSgpLnNjcmlwdCgpLmlzUGF1c2VkKCkpOwotICAgICAgICBtX3BhZ2UuY29yZVBhZ2UoKS0+bWFp
bkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChleHByZXNzaW9uKTsKKyAgICAgICAgbV9w
YWdlLmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmlu
Z0V4Y2VwdGlvbihleHByZXNzaW9uKTsKICAgICB9CiAKICAgICBtX3F1ZXVlLmNsZWFyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDczNWZl
YTRlZTEzYmU0MjVjMjM0YmU5MjEyMGZlOWU3YmNhMmQ1YzcuLjEyNDcwMmNlNWU4OTMwM2JjYjYz
MTFlYTE1Y2Y0N2QwMTJlMzc4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC0zMzUzLDIzICszMzUzLDI1IEBAIHZvaWQgV2ViUGFnZTo6cnVu
SmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZv
cmNlVXNlCiAgICAgLy8gTk9URTogV2UgbmVlZCB0byBiZSBjYXJlZnVsIHdoZW4gcnVubmluZyBz
Y3JpcHRzIHRoYXQgdGhlIG9iamVjdHMgd2UgZGVwZW5kIG9uIGRvbid0CiAgICAgLy8gZGlzYXBw
ZWFyIGR1cmluZyBzY3JpcHQgZXhlY3V0aW9uLgogCi0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gc2VyaWFsaXplZFJlc3VsdFZhbHVlOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKGNv
bW1vblZNKCkpOwotICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gdHJ1ZTsKLSAgICBFeGNlcHRpb25E
ZXRhaWxzIGRldGFpbHM7CisgICAgVmFsdWVBbmRFeGNlcHRpb24gcmVzdWx0OworICAgIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZTsKKwogICAgIGF1
dG8qIHdvcmxkID0gd29ybGROYW1lID8gSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6ZmluZCh3
b3JsZE5hbWUudmFsdWUoKSkgOiAmSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6bm9ybWFsV29y
bGQoKTsKICAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPmNvcmVGcmFtZSgpICYmIHdvcmxkKSB7Ci0g
ICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdFZhbHVlID0gZnJhbWUtPmNvcmVGcmFtZSgpLT5zY3Jp
cHQoKS5leGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZCh3b3JsZC0+Y29yZVdvcmxkKCksIHNj
cmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgJmRldGFpbHMpKSB7Ci0gICAgICAgICAgICBoYWRFeGNl
cHRpb24gPSBmYWxzZTsKKyAgICAgICAgcmVzdWx0ID0gZnJhbWUtPmNvcmVGcmFtZSgpLT5zY3Jp
cHQoKS5leGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZCh3b3JsZC0+Y29yZVdvcmxkKCksIHNj
cmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7CisgICAgICAgIGlmIChyZXN1bHQuZmlyc3QpIHsKKyAg
ICAgICAgICAgIEFTU0VSVCghcmVzdWx0LnNlY29uZCk7CiAgICAgICAgICAgICBzZXJpYWxpemVk
UmVzdWx0VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShmcmFtZS0+anNDb250
ZXh0Rm9yV29ybGQod29ybGQpLAotICAgICAgICAgICAgICAgIHRvUmVmKGZyYW1lLT5jb3JlRnJh
bWUoKS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkLT5jb3JlV29ybGQoKSksIHJlc3VsdFZh
bHVlKSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgdG9SZWYoZnJhbWUtPmNvcmVGcmFtZSgp
LT5zY3JpcHQoKS5nbG9iYWxPYmplY3Qod29ybGQtPmNvcmVXb3JsZCgpKSwgcmVzdWx0LmZpcnN0
KSwgbnVsbHB0cik7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBJUEM6OkRhdGFSZWZlcmVuY2Ug
ZGF0YVJlZmVyZW5jZTsKICAgICBpZiAoc2VyaWFsaXplZFJlc3VsdFZhbHVlKQogICAgICAgICBk
YXRhUmVmZXJlbmNlID0gc2VyaWFsaXplZFJlc3VsdFZhbHVlLT5kYXRhKCk7Ci0gICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxiYWNrKGRhdGFSZWZlcmVuY2Us
IGhhZEV4Y2VwdGlvbiwgZGV0YWlscywgY2FsbGJhY2tJRCkpOworCisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIHJlc3Vs
dC5zZWNvbmQsIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0
SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVz
ZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQppbmRleCA5NDdiZmM1MzQyY2JjYWMw
OWFhYWY1MTJjY2RiNmRmZTljYjFjYTQxLi5lYTUwNzhlZDE4ZjU1MDUyZGYyZTQyODEzZTJhNmY3
MDg1NWNlN2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC0zNzksNyArMzc5LDcgQEAg
dm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dl
c3RlZFVSTCwgY29uc3QgU3RyaW5nJgogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIFtjb250
ZW50Q29weSB3cml0ZVRvVVJMOmFjdHVhbFVSTCBhdG9taWNhbGx5OllFUyBlbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZyBlcnJvcjpOVUxMXTsKIAotICAgICAgICBjb3JlKFttX2Zyb250ZW5k
V2luZG93Q29udHJvbGxlciBmcm9udGVuZFdlYlZpZXddKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCku
ZXhlY3V0ZVNjcmlwdChbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3BlY3RvckZyb250
ZW5kQVBJLnNhdmVkVVJMKFwiJUBcIikiLCBhY3R1YWxVUkwuYWJzb2x1dGVTdHJpbmddKTsKKyAg
ICAgICAgY29yZShbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIgZnJvbnRlbmRXZWJWaWV3XSkt
Pm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3BlY3RvckZyb250ZW5kQVBJLnNhdmVkVVJMKFwi
JUBcIikiLCBhY3R1YWxVUkwuYWJzb2x1dGVTdHJpbmddKTsKICAgICB9OwogCiAgICAgaWYgKCFm
b3JjZVNhdmVEaWFsb2cpIHsKQEAgLTQyNSw3ICs0MjUsNyBAQCB2b2lkIFdlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50OjphcHBlbmQoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0
cmluZwogICAgIFtoYW5kbGUgd3JpdGVEYXRhOltjb250ZW50IGRhdGFVc2luZ0VuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nXV07CiAgICAgW2hhbmRsZSBjbG9zZUZpbGVdOwogCi0gICAgY29y
ZShbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIgZnJvbnRlbmRXZWJWaWV3XSktPm1haW5GcmFt
ZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJ
bnNwZWN0b3JGcm9udGVuZEFQSS5hcHBlbmRlZFRvVVJMKFwiJUBcIikiLCBbYWN0dWFsVVJMIGFi
c29sdXRlU3RyaW5nXV0pOworICAgIGNvcmUoW21fZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyIGZy
b250ZW5kV2ViVmlld10pLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3Jp
bmdFeGNlcHRpb24oW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJbnNwZWN0b3JGcm9udGVu
ZEFQSS5hcHBlbmRlZFRvVVJMKFwiJUBcIikiLCBbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXV0p
OwogfQogCiAvLyBNQVJLOiAtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbQppbmRleCAxOGQzZDllYzE0ZDhjNjk1ZDAzZjkzYzNkZDIwMTZhZDQwOTRhNDU4Li4w
NWI1NjkzMDQzNjRiNDk2OTcxZDg5ZGQ5N2ZmOGRlMmNmNDU2NzBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTcwMCw3ICs3MDAsNyBAQCAtIChO
U1N0cmluZyAqKV9zdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzooTlNTdHJp
bmcgKilzdHJpbmcgZm9yY2VVcwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGpzY0xvY2sobGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAjZW5kaWYKIAotICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBfcHJp
dmF0ZS0+Y29yZUZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KHN0cmluZywgZm9yY2VVc2Vy
R2VzdHVyZSk7CisgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IF9wcml2YXRlLT5jb3JlRnJhbWUt
PnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihzdHJpbmcsIGZvcmNlVXNl
ckdlc3R1cmUpOwogCiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZUZyYW1lKSAvLyBJbiBjYXNlIHRo
ZSBzY3JpcHQgcmVtb3ZlZCBvdXIgZnJhbWUgZnJvbSB0aGUgcGFnZS4KICAgICAgICAgcmV0dXJu
IEAiIjsKQEAgLTIwOTYsNyArMjA5Niw3IEBAIC0gKE5TU3RyaW5nICopX3N0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyB3aXRoR2xvCiAgICAg
QVNTRVJUKGZyYW1lLT5kb2N1bWVudCgpKTsKICAgICBSZXRhaW5QdHI8V2ViRnJhbWU+IHdlYkZy
YW1lKGtpdChmcmFtZSkpOyAvLyBSdW5uaW5nIGFyYml0cmFyeSBKYXZhU2NyaXB0IGNhbiBkZXN0
cm95IHRoZSBmcmFtZS4KIAotICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBmcmFtZS0+c2NyaXB0
KCkuZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQoKmNvcmUod29ybGQpLCBzdHJpbmcsIHRy
dWUpOworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVVz
ZXJBZ2VudFNjcmlwdEluV29ybGQoKmNvcmUod29ybGQpLCBzdHJpbmcsIHRydWUpLmZpcnN0Owog
CiAgICAgaWYgKCF3ZWJGcmFtZS0+X3ByaXZhdGUtPmNvcmVGcmFtZSkgLy8gSW4gY2FzZSB0aGUg
c2NyaXB0IHJlbW92ZWQgb3VyIGZyYW1lIGZyb20gdGhlIHBhZ2UuCiAgICAgICAgIHJldHVybiBA
IiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNDdh
YWUzMjhkYmM2YWNmYmVhYmIzYWVjNmQyNzgzY2I0ZjU5ZjA3MS4uOTYxZTA1Y2YxYzIyOWRlMTEw
NDZiN2M0ZmI4MzRmNTMzOWJiODIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQpAQCAtNzkwOCw3ICs3OTA4LDcgQEAgLSAoTlNBcHBsZUV2ZW50RGVzY3Jp
cHRvciAqKWFlRGVzY0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOihOU1N0cmluZyAq
KXMKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAoIWNvcmVGcmFtZS0+ZG9jdW1lbnQoKSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gY29yZUZyYW1l
LT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KHNjcmlwdCwgdHJ1ZSk7CisgICAgSlNDOjpKU1ZhbHVl
IHJlc3VsdCA9IGNvcmVGcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0
aW9uKHNjcmlwdCwgdHJ1ZSk7CiAgICAgaWYgKCFyZXN1bHQpIC8vIEZJWE1FOiBwYXNzIGVycm9y
cwogICAgICAgICByZXR1cm4gMDsKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGNvcmVGcmFt
ZS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KFdlYkNvcmU6Om1haW5UaHJlYWROb3JtYWxXb3JsZCgp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApp
bmRleCBlNWVmNjNiNGNkODY3MTdiMzYwYjA5OWM4NjJlMjdhNjM1MTE1MDQzLi44MTYwZGExNGFj
MDA5Mzk2ODBjMjJkZWRjMmEyNWQzYzNhNmUzMGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTQzOSw3ICs0MzksNyBAQCB2b2lkIFBs
dWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KFBsdWdpblJlcXVlc3QqIHJlcXVlc3QpCiAgICAgCiAg
ICAgLy8gRXhlY3V0aW5nIGEgc2NyaXB0IGNhbiBjYXVzZSB0aGUgcGx1Z2luIHZpZXcgdG8gYmUg
ZGVzdHJveWVkLCBzbyB3ZSBrZWVwIGEgcmVmZXJlbmNlIHRvIGl0LgogICAgIFJlZlB0cjxQbHVn
aW5WaWV3PiBwcm90ZWN0b3IodGhpcyk7Ci0gICAgYXV0byByZXN1bHQgPSBtX3BhcmVudEZyYW1l
LT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGpzU3RyaW5nLCByZXF1ZXN0LT5zaG91bGRBbGxvd1Bv
cHVwcygpKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fcGFyZW50RnJhbWUtPnNjcmlwdCgpLmV4ZWN1
dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihqc1N0cmluZywgcmVxdWVzdC0+c2hvdWxkQWxsb3dQ
b3B1cHMoKSk7CiAKICAgICBpZiAodGFyZ2V0RnJhbWVOYW1lLmlzTnVsbCgpKSB7CiAgICAgICAg
IENTdHJpbmcgY3N0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZy
YW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAppbmRleCA2ZWZh
ZThmNjIyOTg0OWNhMWY1OTZiNzM1NWNlZWY0M2NmZDY5MGE4Li5jNzc4ZTIyYjcwZGNmMTg1NTIy
Y2E2ZTIwOWI4NzA5MTk1YjUxNDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3Bw
CkBAIC0yMDU1LDcgKzIwNTUsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0SW5TY3JpcHRXb3JsZChJV2ViU2NyaXB0V29ybGQqIGlXbwogICAgIC8vIEdl
dCB0aGUgZnJhbWUgZnJvbWUgdGhlIGdsb2JhbCBvYmplY3Qgd2UndmUgc2V0dGxlZCBvbi4KICAg
ICBGcmFtZSogZnJhbWUgPSBhbnlXb3JsZEdsb2JhbE9iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCk7
CiAgICAgQVNTRVJUKGZyYW1lLT5kb2N1bWVudCgpKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGZy
YW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3JsZC0+d29ybGQoKSwgc3RyaW5n
LCB0cnVlKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2Ny
aXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKHdvcmxkLT53b3JsZCgpLCBzdHJpbmcsIHRydWUp
OwogCiAgICAgaWYgKCFmcmFtZSkgLy8gSW4gY2FzZSB0aGUgc2NyaXB0IHJlbW92ZWQgb3VyIGZy
YW1lIGZyb20gdGhlIHBhZ2UuCiAgICAgICAgIHJldHVybiBTX09LOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385522</attachid>
            <date>2019-12-12 11:57:18 -0800</date>
            <delta_ts>2019-12-12 12:12:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205151-20191212115717.patch</filename>
            <type>text/plain</type>
            <size>51395</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjU5MGYyYWFjZjNmZTJj
NWE4ZDlkYWUwZjFmOGM4NDY0YTY1MGE3YS4uMzgzYTYzMGViMmM5YmNmOTI2NTBiNDgyZDM2Mzg3
NGFiY2RiN2ZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE5LTEyLTEyICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRD
b250cm9sbGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoUmVm
YWN0b3IsIG5vIGJlaGF2aW9yIGNoYW5nZSkuCisKKyAgICAgICAgVGhlcmUncyBzbyBtYW55IEV4
Y2VwdGlvbkRldGFpbHMqIG51bGwgcG9pbnRlcnMgYmVpbmcgcGFzc2VkIGFyb3VuZCBpbiB0aGUg
U2NyaXB0Q29udHJvbGxlcgorICAgICAgICBmYW1pbHkgb2YgZnVuY3Rpb25zLgorCisgICAgICAg
IExldCdzIG1ha2UgaXQgYSBsaXR0bGUgbW9yZSBleHBsaWNpdCB3aGljaCBjYWxsZXJzIGdldCBl
eGNlcHRpb25zIGFuZCB3aGljaCBkb24ndC4KKworICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9R
dWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlF1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50OjplbnN1cmVSZXBsYWNlbWVudFNjcmlwdEluamVjdGVkKToKKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUpOgorCisgICAgICAgICogYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVy
OjpldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJ
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2Vy
QWdlbnRTY3JpcHRJbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6
OmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQpOiBEZWxldGVkLgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKworICAgICAgICAqIGNvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9jZXNzQ29udGVudFJ1
bGVMaXN0c0ZvckxvYWQpOgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjplbnN1cmVQbHVnSW5zSW5qZWN0ZWRTY3JpcHQpOgorCisgICAg
ICAgICogZG9tL1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxl
bWVudDo6ZXhlY3V0ZUNsYXNzaWNTY3JpcHQpOgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZU1l
ZGlhQ29udHJvbHNJbmplY3RlZFNjcmlwdCk6CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsOjpldmFsdWF0ZUFzQm9vbGVhbik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpldmFsdWF0ZU9uTG9hZCk6CisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZCk6
CisKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RmlsdGVyOjpkaWREZWNpZGUpOgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KToK
KworICAgICAgICAqIHhtbC9YTUxUcmVlVmlld2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TFRyZWVWaWV3ZXI6OnRyYW5zZm9ybURvY3VtZW50VG9UcmVlVmlldyk6CisKIDIwMTktMTItMTEg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBUcnlpbmcgdG8gc2V0
IHRvU3RyaW5nIC8gdmFsdWVPZiBvbiBhIGNyb3NzLW9yaWdpbiBMb2NhdGlvbiBvYmplY3Qgc2hv
dWxkIHRocm93IGEgU2VjdXJpdHlFcnJvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4ZDc2MmFkOWEzODY4MzQ5MjU4
YzAyYzk2MmY5NWZmOTNhZjI1NzM3Li5lNzIwYmY3ODUzMzI0MzJmY2U5ZjNkMjQ1YjkxNjZiMTNk
NzFlYjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE5LTEyLTEyICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRDb250cm9s
bGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHA6CisgICAgICAgIChXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2Vi
VmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmZvcmNlVXNlckdlc3R1cmU6Y29tcGxldGlvbkhhbmRs
ZXI6XSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdv
cmxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFt
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBlcmZv
cm1KYXZhU2NyaXB0VVJMUmVxdWVzdCk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpldmFsdWF0ZU9yUXVldWVFeHByZXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVy
OjpldmFsdWF0ZVF1ZXVlZEV4cHJlc3Npb25zKToKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cnVuSmF2YVNjcmlw
dCk6CisKIDIwMTktMTItMTEgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCBhIG5pdCBhZnRlciByMjUzMzY2CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKaW5kZXggYjlkYWUyY2UxMGUwODcyZDM1MzA4YzhjOGNjNjBkZTIwZjI1Zjc3NS4u
ZTFmNzFhNWQ1NjkwYzM0NTI0ZGI2ODYyOWI4NDkwOTE1M2RlNzA3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTEyLTEyICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRDb250cm9sbGVy
J3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZCk6CisgICAgICAg
IAorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9z
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpmb3JjZVVzZXJHZXN0dXJlOl0p
OgorICAgICAgICAoLVtXZWJGcmFtZSBfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21T
dHJpbmc6d2l0aEdsb2JhbE9iamVjdDppblNjcmlwdFdvcmxkOl0pOgorCisgICAgICAgICogV2Vi
Vmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IGFlRGVzY0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHRGcm9tU3RyaW5nOl0pOgorCiAyMDE5LTEyLTA5ICBFcmljIENhcmxzb24gIDxlcmlj
LmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBtZWRpYSBpbiB0aGUgR1BVIHBy
b2Nlc3MgcHJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDQyMDE0ZDk5
ZDUwMjE2ZmE5MmQ0OWE1OTJhMDA2NzgxOTJkNjRkNDEuLjE0MWNjMzk0YWM4ZWIzZDQ2MDQ1NmM5
OWNiNmI5YzM0NmE3MjBjZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxOS0xMi0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVmYWN0b3IgU2NyaXB0Q29udHJvbGxlcidzIHByb2xpZmVyYXRpb24gb2YgRXhj
ZXB0aW9uRGV0YWlscyouCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDUxNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVn
aW5WaWV3OjpwZXJmb3JtUmVxdWVzdCk6CisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAg
ICAgIChXZWJGcmFtZTo6c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEluU2NyaXB0V29ybGQp
OgorCiAyMDE5LTEyLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgUGFnZUNvbmZpZ3VyYXRpb246OmRyYWdDbGllbnQgc2hvdWxkIHVzZSBhIHNtYXJ0IHBvaW50
ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQppbmRleCA5ODEyNmUwM2YzZTMyMTQ3NWY3NTExNDY0
MmFkOGQwYjI0OGJhZDIzLi4wM2QyMWRlN2Q1YWMwNjliMmNhYTNkOTYxMWI5OGY4NGEzNTE3ZjRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1
aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCkBAIC0xNTgsNyArMTU4LDcgQEAgYm9vbCBRdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6ZW5zdXJlUmVwbGFjZW1lbnRTY3JpcHRJbmplY3RlZCgp
CiAgICAgaWYgKHJlcGxhY2VtZW50RnVuY3Rpb24uaXNGdW5jdGlvbih2bSkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIAotICAgIHNjcmlwdENvbnRyb2xsZXIuZXZhbHVhdGVJbldvcmxkKFNj
cmlwdFNvdXJjZUNvZGUocXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRTY3JpcHQoKSksIHdvcmxk
KTsKKyAgICBzY3JpcHRDb250cm9sbGVyLmV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9u
KFNjcmlwdFNvdXJjZUNvZGUocXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRTY3JpcHQoKSksIHdv
cmxkKTsKICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAgICAgIExP
RyhQbHVnaW5zLCAiJXAgLSBFeGNlcHRpb24gd2hlbiBldmFsdWF0aW5nIFF1aWNrVGltZSBwbHVn
aW4gcmVwbGFjZW1lbnQgc2NyaXB0IiwgdGhpcyk7CiAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0
aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRB
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNw
cAppbmRleCAyOGNmNTY0NjZiY2EzYzljMmQyMDg4OTUxYzk4MDgyZmRiNTFhODU2Li44ZTRjN2Iz
ODEyNDRlNzc2YmRkNTgzNGFlNDE5MzZkN2RjYzYyMjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lk
IFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgaWYgKG1f
ZnVuY3Rpb24pCiAgICAgICAgIGV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dCh3aW5kb3csIHdpbmRv
dy0+cHJveHkoKSwgZG9jdW1lbnQpOwogICAgIGVsc2UKLSAgICAgICAgZnJhbWUtPnNjcmlwdCgp
LmV4ZWN1dGVTY3JpcHRJbldvcmxkKG1faXNvbGF0ZWRXb3JsZCwgbV9jb2RlKTsKKyAgICAgICAg
ZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24obV9p
c29sYXRlZFdvcmxkLCBtX2NvZGUpOwogfQogCiB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0
ZShXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGIxZmRlODUwMmU0ZGEw
YjBmNjlmNDgxNmQ0YTQxMmVjNGVlNGM3M2YuLjRjZWQ0YzNjMjRlYjA2MGEyNjY1NTkwNjg5ODJm
NDMxYzY2MTk4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuY3BwCkBAIC0xMDcsNyArMTA3LDEyIEBAIFNjcmlwdENvbnRyb2xsZXI6On5TY3Jp
cHRDb250cm9sbGVyKCkKICAgICB9CiB9CiAKLUpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZh
bHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQsIEV4Y2VwdGlvbkRldGFpbHMqIGV4Y2VwdGlvbkRldGFpbHMpCitKU0M6
OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRp
b24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCkKK3sKKyAgICByZXR1cm4gZXZhbHVhdGVJbldvcmxkKHNvdXJjZUNvZGUsIHdvcmxkKS5m
aXJzdDsKK30KKworVmFsdWVBbmRFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJ
bldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CiAKQEAgLTEz
NSwxOSArMTQwLDIxIEBAIEpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxk
KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPCiAKICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUpOwogCisgICAgT3B0aW9u
YWw8RXhjZXB0aW9uRGV0YWlscz4gb3B0aW9uYWxEZXRhaWxzOwogICAgIGlmIChldmFsdWF0aW9u
RXhjZXB0aW9uKSB7Ci0gICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmZ2xvYmFsT2JqZWN0LCBldmFs
dWF0aW9uRXhjZXB0aW9uLCBzb3VyY2VDb2RlLmNhY2hlZFNjcmlwdCgpLCBleGNlcHRpb25EZXRh
aWxzKTsKLSAgICAgICAgbV9zb3VyY2VVUkwgPSBzYXZlZFNvdXJjZVVSTDsKLSAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBkZXRhaWxzOworICAgICAgICByZXBv
cnRFeGNlcHRpb24oJmdsb2JhbE9iamVjdCwgZXZhbHVhdGlvbkV4Y2VwdGlvbiwgc291cmNlQ29k
ZS5jYWNoZWRTY3JpcHQoKSwgJmRldGFpbHMpOworICAgICAgICBvcHRpb25hbERldGFpbHMgPSBX
VEZNb3ZlKGRldGFpbHMpOworICAgICAgICByZXR1cm5WYWx1ZSA9IHsgfTsKICAgICB9CiAKICAg
ICBtX3NvdXJjZVVSTCA9IHNhdmVkU291cmNlVVJMOwotICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
KyAgICByZXR1cm4geyByZXR1cm5WYWx1ZSwgb3B0aW9uYWxEZXRhaWxzIH07CiB9CiAKLUpTVmFs
dWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291
cmNlQ29kZSwgRXhjZXB0aW9uRGV0YWlscyogZXhjZXB0aW9uRGV0YWlscykKK0pTQzo6SlNWYWx1
ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlw
dFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCiB7Ci0gICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChz
b3VyY2VDb2RlLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgZXhjZXB0aW9uRGV0YWlscyk7Cisg
ICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKHNvdXJjZUNvZGUsIG1h
aW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKIH0KIAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjpsb2Fk
TW9kdWxlU2NyaXB0SW5Xb3JsZChMb2FkYWJsZU1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0LCBj
b25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYgdG9w
TGV2ZWxGZXRjaFBhcmFtZXRlcnMsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCkBAIC01NDgsNyAr
NTU1LDEyIEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJTY3JpcHRPYmplY3RzKCkKICNl
bmRpZgogfQogCi1KU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxk
KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNl
VXNlckdlc3R1cmUsIEV4Y2VwdGlvbkRldGFpbHMqIGV4Y2VwdGlvbkRldGFpbHMpCitKU0M6OkpT
VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2Vw
dGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBm
b3JjZVVzZXJHZXN0dXJlKQoreworICAgIHJldHVybiBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3Js
ZCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlKS5maXJzdDsKK30KKworVmFsdWVBbmRFeGNlcHRp
b24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxk
JiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKIHsK
ICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGZvcmNlVXNlckdlc3R1
cmUgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlKSA6IFdURjo6bnVsbG9wdCk7CiAgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2Rl
KHNjcmlwdCwgVVJMKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpLCBUZXh0UG9zaXRpb24oKSwg
SlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIENhY2hlZFNjcmlwdEZldGNo
ZXI6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmNoYXJzZXQoKSkpOwpAQCAtNTU2LDE3ICs1
NjgsMTcgQEAgSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChE
T01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHIKICAgICBpZiAoIWNhbkV4ZWN1dGVTY3Jp
cHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNlZCgpKQogICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3b3JsZCwgZXhj
ZXB0aW9uRGV0YWlscyk7CisgICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3
b3JsZCk7CiB9CiAKLUpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNj
cmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQs
IGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgRXhjZXB0aW9uRGV0YWlscyogZXhjZXB0aW9uRGV0YWls
cykKK1ZhbHVlQW5kRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRT
Y3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0
LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiB7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqbV9mcmFt
ZS5kb2N1bWVudCgpOwogICAgIGlmICghc2hvdWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRzKGRvY3Vt
ZW50KSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGRvY3VtZW50LnNldEhhc0V2YWx1YXRl
ZFVzZXJBZ2VudFNjcmlwdHMoKTsKLSAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdEluV29ybGQod29y
bGQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgZXhjZXB0aW9uRGV0YWlscyk7CisgICAgcmV0
dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUp
OwogfQogCiBib29sIFNjcmlwdENvbnRyb2xsZXI6OnNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0
cyhEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CkBAIC01OTgsMTQgKzYxMCwxMCBAQCBib29sIFNj
cmlwdENvbnRyb2xsZXI6OmNhbkV4ZWN1dGVTY3JpcHRzKFJlYXNvbkZvckNhbGxpbmdDYW5FeGVj
dXRlU2NyaXB0cyByZWFzbwogICAgIHJldHVybiBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmFs
bG93U2NyaXB0KG1fZnJhbWUuc2V0dGluZ3MoKS5pc1NjcmlwdEVuYWJsZWQoKSk7CiB9CiAKLUpT
VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlw
dCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBFeGNlcHRpb25EZXRhaWxzKiBleGNlcHRpb25EZXRh
aWxzKQorSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJZ25vcmlu
Z0V4Y2VwdGlvbihjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQog
ewogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoZm9yY2VVc2VyR2Vz
dHVyZSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNl
ckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KTsKLSAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdChTY3Jp
cHRTb3VyY2VDb2RlKHNjcmlwdCwgVVJMKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpLCBUZXh0
UG9zaXRpb24oKSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIENhY2hl
ZFNjcmlwdEZldGNoZXI6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmNoYXJzZXQoKSkpLCBl
eGNlcHRpb25EZXRhaWxzKTsKLX0KIAotSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRl
U2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIEV4Y2VwdGlvbkRldGFp
bHMqIGV4Y2VwdGlvbkRldGFpbHMpCi17CiAgICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0cyhBYm91
dFRvRXhlY3V0ZVNjcmlwdCkgfHwgaXNQYXVzZWQoKSkKICAgICAgICAgcmV0dXJuIHsgfTsgLy8g
RklYTUU6IFdvdWxkIGpzTnVsbCBiZSBiZXR0ZXI/CiAKQEAgLTYxMyw3ICs2MjEsNyBAQCBKU1Zh
bHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYgc291cmNlQ29kZSwgRXhjZQogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjQ3NjMKICAgICBSZWY8RnJhbWU+IHByb3RlY3RvcihtX2ZyYW1lKTsgLy8g
U2NyaXB0IGV4ZWN1dGlvbiBjYW4gZGVzdHJveSB0aGUgZnJhbWUsIGFuZCB0aHVzIHRoZSBTY3Jp
cHRDb250cm9sbGVyLgogCi0gICAgcmV0dXJuIGV2YWx1YXRlKHNvdXJjZUNvZGUsIGV4Y2VwdGlv
bkRldGFpbHMpOworICAgIHJldHVybiBldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNv
dXJjZUNvZGUoc2NyaXB0LCBVUkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSksIFRleHRQb3Np
dGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgQ2FjaGVkU2Ny
aXB0RmV0Y2hlcjo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2hhcnNldCgpKSkpOwogfQog
CiBib29sIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29uc3QgVVJM
JiB1cmwsIFNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCBzaG91bGRSZXBsYWNl
RG9jdW1lbnRJZkphdmFTY3JpcHRVUkwpCkBAIC02MzIsNyArNjQwLDcgQEAgYm9vbCBTY3JpcHRD
b250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYgdXJsLCBTaG91bGRS
ZXBsYWNlRG9jdW0KICAgICBjb25zdCBpbnQgamF2YXNjcmlwdFNjaGVtZUxlbmd0aCA9IHNpemVv
ZigiamF2YXNjcmlwdDoiKSAtIDE7CiAKICAgICBTdHJpbmcgZGVjb2RlZFVSTCA9IGRlY29kZVVS
TEVzY2FwZVNlcXVlbmNlcyh1cmwuc3RyaW5nKCkpOwotICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0
ZVNjcmlwdChkZWNvZGVkVVJMLnN1YnN0cmluZyhqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoKSk7Cisg
ICAgYXV0byByZXN1bHQgPSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oZGVjb2RlZFVS
TC5zdWJzdHJpbmcoamF2YXNjcmlwdFNjaGVtZUxlbmd0aCkpOwogCiAgICAgLy8gSWYgZXhlY3V0
aW5nIHNjcmlwdCBjYXVzZWQgdGhpcyBmcmFtZSB0byBiZSByZW1vdmVkIGZyb20gdGhlIHBhZ2Us
IHdlCiAgICAgLy8gZG9uJ3Qgd2FudCB0byB0cnkgdG8gcmVwbGFjZSBpdHMgZG9jdW1lbnQhCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggMTMy
NzRhNWQxY2Y2ZDUyYjRhMjZlYzQ4ZGI1MDBhYmZmZTMzZWQ2Yi4uYjhiMjliMTg4YzhiOTIwOTk1
ZmFjNzFkYjFlODQwOTUyODYyODMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuaApAQCAtNzAsNiArNzAsOCBAQCBlbnVtIFJlYXNvbkZvckNhbGxp
bmdDYW5FeGVjdXRlU2NyaXB0cyB7CiAgICAgTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQKIH07CiAK
K3VzaW5nIFZhbHVlQW5kRXhjZXB0aW9uID0gc3RkOjpwYWlyPEpTQzo6SlNWYWx1ZSwgV1RGOjpP
cHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPj47CisKIGNsYXNzIFNjcmlwdENvbnRyb2xsZXIgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8U2NyaXB0Q29udHJvbGxlcj4gewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogCkBAIC04OCwxMCArOTAsMTAgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IHZvaWQgZ2V0QWxsV29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4mKTsKIAotICAg
IEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBFeGNl
cHRpb25EZXRhaWxzKiA9IG51bGxwdHIpOwotICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1
ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1
cmUgPSBmYWxzZSwgRXhjZXB0aW9uRGV0YWlscyogPSBudWxscHRyKTsKLSAgICBKU0M6OkpTVmFs
dWUgZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBz
Y3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlLCBFeGNlcHRpb25EZXRhaWxzKiA9
IG51bGxwdHIpOwotICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlVXNlckFn
ZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlLCBFeGNlcHRpb25EZXRhaWxzKiA9IG51bGxwdHIpOworICAg
IFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRp
b24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsK
KyAgICBKU0M6OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihE
T01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0
dXJlID0gZmFsc2UpOworICAgIFZhbHVlQW5kRXhjZXB0aW9uIGV4ZWN1dGVTY3JpcHRJbldvcmxk
KERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdl
c3R1cmUgPSBmYWxzZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgVmFsdWVBbmRFeGNlcHRpb24gZXhl
Y3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5n
JiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSk7CiAKICAgICBib29sIHNob3VsZEFsbG93
VXNlckFnZW50U2NyaXB0cyhEb2N1bWVudCYpIGNvbnN0OwogCkBAIC0xMDIsOCArMTA0LDkgQEAg
cHVibGljOgogICAgIC8vIERhcndpbiBpcyBhbiBleGNlcHRpb24gdG8gdGhpcyBydWxlOiBpdCBp
cyBPSyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSBhbnkgdGhyZWFkLCBldmVuIHJlZW50cmFu
dGx5LgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAotICAgIEpTQzo6
SlNWYWx1ZSBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRXhjZXB0aW9uRGV0YWls
cyogPSBudWxscHRyKTsKLSAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNj
cmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmLCBFeGNlcHRpb25EZXRhaWxzKiA9IG51
bGxwdHIpOworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKGNvbnN0
IFNjcmlwdFNvdXJjZUNvZGUmKTsKKyAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJbldvcmxkSWdu
b3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYp
OworICAgIFZhbHVlQW5kRXhjZXB0aW9uIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3Vy
Y2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7CiAKICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJ
bldvcmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBS
ZWY8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiYmLCBET01XcmFwcGVyV29ybGQmKTsKICAgICB2b2lk
IGxvYWRNb2R1bGVTY3JpcHQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcmIG1v
ZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFj
a2VuZC5jcHAKaW5kZXggYTc1NWZjYjkzY2ExMjIyMjhlNzJhNDU5NDhlZmI0MTA0MmNmMTVkNy4u
NTJmMzE5MmM1YjIwMDJmNTE4MzhhNzQ0OTI4N2I2ZWU4MGEzNTczZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgQ29udGVudFJ1bGVMaXN0UmVzdWx0cyBD
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50UnVsZUxpc3RzRm9yTG9hZCgK
ICAgICAgICAgICAgICAgICAmJiAoKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHVybC5o
b3N0KCksICJ3d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20iKSAmJiBlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZSh1cmwucGF0aCgpLCAiL2FuYWx5dGljcy5qcyIpKQogICAgICAgICAgICAgICAg
ICAgICB8fCAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodXJsLmhvc3QoKSwgInd3dy5n
b29nbGV0YWdtYW5hZ2VyLmNvbSIpICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHVy
bC5wYXRoKCksICIvZ3RtLmpzIikpKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBmcmFt
ZSA9IGN1cnJlbnREb2N1bWVudC0+ZnJhbWUoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUt
PnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUgeyAidHJ5IHsgd2luZG93LmRhdGFM
YXllci5oaWRlLmVuZCgpOyBjb25zb2xlLmxvZygnQ2FsbGVkIHdpbmRvdy5kYXRhTGF5ZXIuaGlk
ZS5lbmQoKSBpbiBmcmFtZSAnICsgZG9jdW1lbnQuVVJMICsgJyBiZWNhdXNlIHRoZSBjb250ZW50
IGJsb2NrZXIgYmxvY2tlZCB0aGUgbG9hZCBvZiB0aGUgaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5
dGljcy5jb20vYW5hbHl0aWNzLmpzIHNjcmlwdCcpOyB9IGNhdGNoIChlKSB7IH0iX3MgfSk7Cisg
ICAgICAgICAgICAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZUlnbm9yaW5nRXhjZXB0
aW9uKFNjcmlwdFNvdXJjZUNvZGUgeyAidHJ5IHsgd2luZG93LmRhdGFMYXllci5oaWRlLmVuZCgp
OyBjb25zb2xlLmxvZygnQ2FsbGVkIHdpbmRvdy5kYXRhTGF5ZXIuaGlkZS5lbmQoKSBpbiBmcmFt
ZSAnICsgZG9jdW1lbnQuVVJMICsgJyBiZWNhdXNlIHRoZSBjb250ZW50IGJsb2NrZXIgYmxvY2tl
ZCB0aGUgbG9hZCBvZiB0aGUgaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0
aWNzLmpzIHNjcmlwdCcpOyB9IGNhdGNoIChlKSB7IH0iX3MgfSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBmM2Y3ZjAzMmYyMGUx
YTVhM2YzYzhmMTNkMjI3MDk5ZjViODJiMWU5Li4xN2VkYzhiYzU4MmYzNjc0N2M3YmM0NGFiZTlk
ZDVhNGJmMGNiZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTcyMDEsNyArNzIwMSw3
IEBAIHZvaWQgRG9jdW1lbnQ6OmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdChET01XcmFwcGVy
V29ybGQmIHdvcmxkKQogICAgICAgICBqc1N0cmluZyA9IFN0cmluZyhwbHVnSW5zSmF2YVNjcmlw
dCwgc2l6ZW9mKHBsdWdJbnNKYXZhU2NyaXB0KSk7CiAKICAgICBzZXRIYXNFdmFsdWF0ZWRVc2Vy
QWdlbnRTY3JpcHRzKCk7Ci0gICAgc2NyaXB0Q29udHJvbGxlci5ldmFsdWF0ZUluV29ybGQoU2Ny
aXB0U291cmNlQ29kZShqc1N0cmluZyksIHdvcmxkKTsKKyAgICBzY3JpcHRDb250cm9sbGVyLmV2
YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUoanNTdHJpbmcp
LCB3b3JsZCk7CiAKICAgICBtX2hhc0luamVjdGVkUGx1Z0luc1NjcmlwdCA9IHRydWU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggZTBkOTY3YjQ1NzRiYjM1MzA4NWZi
Mzc3NjUwOTRjYzJmOGEzNTM4NS4uMTUxMTc1MTllZjkxMzQ2NzY3N2QyNTg2NTNjZDI3MjAxNzdl
ODA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMzg3LDcgKzM4Nyw3
IEBAIHZvaWQgU2NyaXB0RWxlbWVudDo6ZXhlY3V0ZUNsYXNzaWNTY3JpcHQoY29uc3QgU2NyaXB0
U291cmNlQ29kZSYgc291cmNlQ29kZSkKICAgICBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJ
bmNyZW1lbnRlciBpZ25vcmVEZXNjdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIobV9pc0V4
dGVybmFsU2NyaXB0ID8gJmRvY3VtZW50IDogbnVsbHB0cik7CiAgICAgQ3VycmVudFNjcmlwdElu
Y3JlbWVudGVyIGN1cnJlbnRTY3JpcHRJbmNyZW1lbnRlcihkb2N1bWVudCwgbV9lbGVtZW50KTsK
IAotICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZShzb3VyY2VDb2RlKTsKKyAgICBmcmFtZS0+
c2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihzb3VyY2VDb2RlKTsKIH0KIAogdm9p
ZCBTY3JpcHRFbGVtZW50OjpleGVjdXRlTW9kdWxlU2NyaXB0KExvYWRhYmxlTW9kdWxlU2NyaXB0
JiBsb2FkYWJsZU1vZHVsZVNjcmlwdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCmluZGV4IGViNWZmNTY3ZWQ4MTBkZmMxODUxMDY4MDMyOTNhMmQ1NjRjZTIzNDkuLjcz
MGI0ZTM4OWU3ODNmZTU2Njc1NWI4YWMzNjg4MTE5ZjA5NjkxNjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNzMxNyw3ICs3MzE3LDcgQEAgYm9vbCBIVE1M
TWVkaWFFbGVtZW50OjplbnN1cmVNZWRpYUNvbnRyb2xzSW5qZWN0ZWRTY3JpcHQoKQogI2Vsc2UK
ICAgICAgICAgVVJMIHNjcmlwdFVSTDsKICNlbmRpZgotICAgICAgICBzY3JpcHRDb250cm9sbGVy
LmV2YWx1YXRlSW5Xb3JsZChTY3JpcHRTb3VyY2VDb2RlKG1lZGlhQ29udHJvbHNTY3JpcHQsIFdU
Rk1vdmUoc2NyaXB0VVJMKSksIHdvcmxkKTsKKyAgICAgICAgc2NyaXB0Q29udHJvbGxlci5ldmFs
dWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKG1lZGlhQ29udHJv
bHNTY3JpcHQsIFdURk1vdmUoc2NyaXB0VVJMKSksIHdvcmxkKTsKICAgICAgICAgaWYgKFVOTElL
RUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRp
b24oKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAppbmRleCAx
YjNjODg3NmNjNjg3MzFiNWQ2MjhkZDJkZTJiOWQ2MDRmMmE0NWZiLi4wZDgzMTkyNTI3ODJkYTk1
YTcyZWQzNmNhNWYwNDhjN2NkOGM4NDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC00MjAsNyAr
NDIwLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpkaXNwYXRjaE1lc3Nh
Z2VBc3luYyhjb25zdCBTdHJpbmcmIG1lc3NhZ2VPYmoKIGJvb2wgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbDo6ZXZhbHVhdGVBc0Jvb2xlYW4oY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQog
ewogICAgIGF1dG8mIHN0YXRlID0gKm1haW5Xb3JsZEV4ZWNTdGF0ZSgmbV9mcm9udGVuZFBhZ2Ut
Pm1haW5GcmFtZSgpKTsKLSAgICByZXR1cm4gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnNj
cmlwdCgpLmV4ZWN1dGVTY3JpcHQoZXhwcmVzc2lvbikudG9XVEZTdHJpbmcoJnN0YXRlKSA9PSAi
dHJ1ZSI7CisgICAgcmV0dXJuIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5l
eGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oZXhwcmVzc2lvbikudG9XVEZTdHJpbmcoJnN0
YXRlKSA9PSAidHJ1ZSI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6
ZXZhbHVhdGVPbkxvYWQoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQpAQCAtNDMxLDcgKzQzMSw3
IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVhdGVPbkxvYWQoY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uKQogICAgIH0KIAogICAgIEpTQzo6U3VzcGVuZEV4Y2VwdGlv
blNjb3BlIHNjb3BlKCZtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnZtKCkp
OwotICAgIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5ldmFsdWF0ZShTY3Jp
cHRTb3VyY2VDb2RlKGV4cHJlc3Npb24pKTsKKyAgICBtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1l
KCkuc2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKGV4
cHJlc3Npb24pKTsKIH0KIAogUGFnZSogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6aW5z
cGVjdGVkUGFnZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggMDFlZGQwMDYwZGUzNjJjMWFiN2I3
MDI0NzVhZTgzODIyMjc5YTgwMC4uY2Y4OWY5ZWI1MDUyMzI2ZmNmOGNiZDI2ZDg1OTZjZjQ3MjRj
MjM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcApAQCAtNzczLDcgKzc3Myw3IEBAIHZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUmIGZyYW1lKQogICAgIGlm
IChtX2Jvb3RzdHJhcFNjcmlwdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZy
YW1lLnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUobV9ib290c3RyYXBTY3JpcHQs
IFVSTCB7IFVSTCgpLCAid2ViLWluc3BlY3RvcjovL2Jvb3RzdHJhcC5qcyJfcyB9KSk7CisgICAg
ZnJhbWUuc2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2Rl
KG1fYm9vdHN0cmFwU2NyaXB0LCBVUkwgeyBVUkwoKSwgIndlYi1pbnNwZWN0b3I6Ly9ib290c3Ry
YXAuanMiX3MgfSkpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkUGFpbnQoUmVu
ZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCBiNDk4YTIyNGIxOTBjNmNlODQ0ZWI5ZGQ3
ZWI5YjdhMTA1ZDc2ZGM1Li42ZWFmY2EzNGU4MWEzOTkyZGQxZmI4MGY5MDMyZWI5NmM4YjliNzc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMz
LDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUgc3RhdGUpCiAgICAgaWYg
KCF1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUpIHsKICAgICAg
ICAgdW5ibG9ja0hhbmRsZXIud3JhcFdpdGhEZWNpc2lvbkhhbmRsZXIoW3NjcmlwdENvbnRyb2xs
ZXIgPSBtYWtlV2Vha1B0cihmcmFtZS0+c2NyaXB0KCkpLCBzY3JpcHQgPSB1bmJsb2NrUmVxdWVz
dERlbmllZFNjcmlwdC5pc29sYXRlZENvcHkoKV0oYm9vbCB1bmJsb2NrZWQpIHsKICAgICAgICAg
ICAgIGlmICghdW5ibG9ja2VkICYmIHNjcmlwdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAg
c2NyaXB0Q29udHJvbGxlci0+ZXhlY3V0ZVNjcmlwdChzY3JpcHQpOworICAgICAgICAgICAgICAg
IHNjcmlwdENvbnRyb2xsZXItPmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihzY3JpcHQp
OwogICAgICAgICB9KTsKICAgICB9CiAgICAgbV9kb2N1bWVudExvYWRlci5mcmFtZUxvYWRlcigp
LT5jbGllbnQoKS5jb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdURk1vdmUodW5ibG9ja0hhbmRs
ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggMjJjYzFmZDE1YmMxN2NmZDg1NmU5MTRjMzhh
ODZiMGM0MmFjNzRiYy4uZTA4MzNkYzA4MzNmNTlhOWViMjYzNTA2MTMxY2RiYjk3YzlmOTIxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTYzNCw3ICs2MzQsNyBAQCB2b2lkIEZyYW1lOjppbmpl
Y3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgVXNl
clNjcmlwdAogCiAgICAgZG9jdW1lbnQtPnNldEFzUnVubmluZ1VzZXJTY3JpcHRzKCk7CiAgICAg
bG9hZGVyKCkuY2xpZW50KCkud2lsbEluamVjdFVzZXJTY3JpcHQod29ybGQpOwotICAgIG1fc2Ny
aXB0LT5ldmFsdWF0ZUluV29ybGQoU2NyaXB0U291cmNlQ29kZShzY3JpcHQuc291cmNlKCksIFVS
TChzY3JpcHQudXJsKCkpKSwgd29ybGQpOworICAgIG1fc2NyaXB0LT5ldmFsdWF0ZUluV29ybGRJ
Z25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdC5zb3VyY2UoKSwgVVJMKHNj
cmlwdC51cmwoKSkpLCB3b3JsZCk7CiB9CiAKIFJlbmRlclZpZXcqIEZyYW1lOjpjb250ZW50UmVu
ZGVyZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCmluZGV4IGZlMDFj
YzFmZjQ5MWMzNjdmY2FkOTdiZmQ0ZDZjNGU3MzBmNmJkYTguLmY5MGU0NDUyNGQ1ZGEzNzY2MmNj
MmRkNTVmNDIxZjI4OTc3YjQyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxU
cmVlVmlld2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAK
QEAgLTU2LDggKzU2LDggQEAgdm9pZCBYTUxUcmVlVmlld2VyOjp0cmFuc2Zvcm1Eb2N1bWVudFRv
VHJlZVZpZXcoKQogICAgIG1fZG9jdW1lbnQuc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJp
dHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpKTsK
IAogICAgIFN0cmluZyBzY3JpcHRTdHJpbmcgPSBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29w
eWluZyhYTUxWaWV3ZXJfanMsIHNpemVvZihYTUxWaWV3ZXJfanMpKTsKLSAgICBtX2RvY3VtZW50
LmZyYW1lKCktPnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0U3RyaW5n
KSk7Ci0gICAgbV9kb2N1bWVudC5mcmFtZSgpLT5zY3JpcHQoKS5ldmFsdWF0ZShTY3JpcHRTb3Vy
Y2VDb2RlKEF0b21TdHJpbmcoInByZXBhcmVXZWJLaXRYTUxWaWV3ZXIoJ1RoaXMgWE1MIGZpbGUg
ZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUgYW55IHN0eWxlIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQg
d2l0aCBpdC4gVGhlIGRvY3VtZW50IHRyZWUgaXMgc2hvd24gYmVsb3cuJyk7IikpKTsKKyAgICBt
X2RvY3VtZW50LmZyYW1lKCktPnNjcmlwdCgpLmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2Ny
aXB0U291cmNlQ29kZShzY3JpcHRTdHJpbmcpKTsKKyAgICBtX2RvY3VtZW50LmZyYW1lKCktPnNj
cmlwdCgpLmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29kZShBdG9tU3Ry
aW5nKCJwcmVwYXJlV2ViS2l0WE1MVmlld2VyKCdUaGlzIFhNTCBmaWxlIGRvZXMgbm90IGFwcGVh
ciB0byBoYXZlIGFueSBzdHlsZSBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggaXQuIFRoZSBk
b2N1bWVudCB0cmVlIGlzIHNob3duIGJlbG93LicpOyIpKSk7CiAKICAgICBTdHJpbmcgY3NzU3Ry
aW5nID0gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoWE1MVmlld2VyX2Nzcywgc2l6
ZW9mKFhNTFZpZXdlcl9jc3MpKTsKICAgICBhdXRvIHRleHQgPSBtX2RvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKGNzc1N0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cAppbmRleCA3MGVmYmZhM2U4N2EyYWJhY2M0NTE0NjQwZmRhM2Y3N2ViNjgwZTVmLi4wYzE1Zjhi
OTNjNzgwN2VmZDc0YmJlNDAwODI4NDQ0MWM1NmZhZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI0NzIsNyArMjQ3Miw3IEBAIHZvaWQgV0tQYWdlU2V0
UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNs
aWVudCkKIAogdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQYWdlUmVmIHBh
Z2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlUnVuSmF2
YVNjcmlwdEZ1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+cnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lKHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgdHJ1ZSwgW2Nv
bnRleHQsIGNhbGxiYWNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmV0dXJuVmFsdWUs
IGJvb2wsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVy
cm9yIGVycm9yKSB7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWUodG9JbXBsKHNjcmlwdFJlZiktPnN0cmluZygpLCB0cnVlLCBbY29udGV4dCwgY2FsbGJhY2td
KEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiByZXR1cm5WYWx1ZSwgT3B0aW9uYWw8V2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAg
ICAgY2FsbGJhY2sodG9BUEkocmV0dXJuVmFsdWUpLCAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpF
cnJvcjo6Tm9uZSkgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5wdHIoKSkgOiAwLCBjb250
ZXh0KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCmluZGV4IDMzNTRhYzZlZWNiNWE4ZDcxOThhZThhNThjYTI5OTQ0YzgzMGU1
MTAuLjE5NDJiMDI1NjFkZjE1OTgyY2EwYTExZDEwMGMzOTNjYjhiYTA0YmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTEyMiw3ICsx
MTIyLDcgQEAgLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3Jp
cHRTdHJpbmcgZm9yY2VVc2VyR2VzdHVyZTooQk9PTCkKIHsKICAgICBhdXRvIGhhbmRsZXIgPSBh
ZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSk7CiAKLSAgICBfcGFnZS0+cnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKGphdmFTY3JpcHRTdHJpbmcsIGZvcmNlVXNlckdlc3R1cmUsIFtoYW5k
bGVyXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBi
b29sIGhhZEV4Y2VwdGlvbiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyYgZGV0YWls
cywgV2ViS2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvciBlcnJvckNvZGUpIHsKKyAgICBf
cGFnZS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGphdmFTY3JpcHRTdHJpbmcsIGZvcmNlVXNl
ckdlc3R1cmUsIFtoYW5kbGVyXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxz
LCBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJhY2s6OkVycm9yIGVycm9yQ29kZSkgewogICAgICAg
ICBpZiAoIWhhbmRsZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTExNDUsMTggKzExNDUs
MTggQEAgLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRT
dHJpbmcgZm9yY2VVc2VyR2VzdHVyZTooQk9PTCkKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8g
cmF3SGFuZGxlciA9ICh2b2lkICheKShpZCwgTlNFcnJvciAqKSloYW5kbGVyLmdldCgpOwotICAg
ICAgICBpZiAoaGFkRXhjZXB0aW9uKSB7CisgICAgICAgIGlmIChkZXRhaWxzKSB7CiAgICAgICAg
ICAgICBBU1NFUlQoIXNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CiAKICAgICAgICAgICAgIFJldGFp
blB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiB1c2VySW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAKICAgICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmpl
Y3Q6bG9jYWxpemVkRGVzY3JpcHRpb25Gb3JFcnJvckNvZGUoV0tFcnJvckphdmFTY3JpcHRFeGNl
cHRpb25PY2N1cnJlZCkgZm9yS2V5Ok5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXldOwotICAgICAg
ICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihkZXRhaWxz
Lm1lc3NhZ2UpIGZvcktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTWVzc2FnZUVycm9yS2V5XTsK
LSAgICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QChkZXRhaWxzLmxpbmVOdW1iZXIpIGZv
cktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTGluZU51bWJlckVycm9yS2V5XTsKLSAgICAgICAg
ICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QChkZXRhaWxzLmNvbHVtbk51bWJlcikgZm9yS2V5Ol9X
S0phdmFTY3JpcHRFeGNlcHRpb25Db2x1bW5OdW1iZXJFcnJvcktleV07CisgICAgICAgICAgICBb
dXNlckluZm8gc2V0T2JqZWN0OnN0YXRpY19jYXN0PE5TU3RyaW5nICo+KGRldGFpbHMtPm1lc3Nh
Z2UpIGZvcktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTWVzc2FnZUVycm9yS2V5XTsKKyAgICAg
ICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QChkZXRhaWxzLT5saW5lTnVtYmVyKSBmb3JLZXk6
X1dLSmF2YVNjcmlwdEV4Y2VwdGlvbkxpbmVOdW1iZXJFcnJvcktleV07CisgICAgICAgICAgICBb
dXNlckluZm8gc2V0T2JqZWN0OkAoZGV0YWlscy0+Y29sdW1uTnVtYmVyKSBmb3JLZXk6X1dLSmF2
YVNjcmlwdEV4Y2VwdGlvbkNvbHVtbk51bWJlckVycm9yS2V5XTsKIAotICAgICAgICAgICAgaWYg
KCFkZXRhaWxzLnNvdXJjZVVSTC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgW3VzZXJJbmZv
IHNldE9iamVjdDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOmRldGFpbHMuc291cmNlVVJM
XSBmb3JLZXk6X1dLSmF2YVNjcmlwdEV4Y2VwdGlvblNvdXJjZVVSTEVycm9yS2V5XTsKKyAgICAg
ICAgICAgIGlmICghZGV0YWlscy0+c291cmNlVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAg
ICBbdXNlckluZm8gc2V0T2JqZWN0OltOU1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJpbmc6ZGV0YWls
cy0+c291cmNlVVJMXSBmb3JLZXk6X1dLSmF2YVNjcmlwdEV4Y2VwdGlvblNvdXJjZVVSTEVycm9y
S2V5XTsKIAogICAgICAgICAgICAgcmF3SGFuZGxlcihuaWwsIGFkb3B0TlMoW1tOU0Vycm9yIGFs
bG9jXSBpbml0V2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvckphdmFTY3JpcHRF
eGNlcHRpb25PY2N1cnJlZCB1c2VySW5mbzp1c2VySW5mby5nZXQoKV0pLmdldCgpKTsKICAgICAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggZDIxYzc4MmVkZWQxMjEzYzY5MTMxMWNkMmRjOTViZmJj
NGQ4NzZlYS4uYzA1YWU4MTZhODJhZTViNmRmYTcxNDQ2YWNjMTY3MDI0ZGY0ODM1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAK
QEAgLTM3MDQsNyArMzcwNCwxMCBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlw
dF9pbl93b3JsZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhcgogICAgIGdfcmV0
dXJuX2lmX2ZhaWwod29ybGROYW1lKTsKIAogICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9w
dEdSZWYoZ190YXNrX25ldyh3ZWJWaWV3LCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRh
KSk7Ci0gICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRX
b3JsZChTdHJpbmc6OmZyb21VVEY4KHNjcmlwdCksIHRydWUsIFN0cmluZzo6ZnJvbVVURjgod29y
bGROYW1lKSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBib29sLCBjb25zdCBFeGNlcHRpb25EZXRhaWxzJiBl
eGNlcHRpb25EZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICBnZXRQ
YWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFN0cmluZzo6
ZnJvbVVURjgoc2NyaXB0KSwgdHJ1ZSwgU3RyaW5nOjpmcm9tVVRGOCh3b3JsZE5hbWUpLCBbdGFz
ayA9IFdURk1vdmUodGFzayldKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVk
U2NyaXB0VmFsdWUsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6
Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGV4Y2VwdGlv
bkRldGFpbHM7CisgICAgICAgIGlmIChkZXRhaWxzKQorICAgICAgICAgICAgZXhjZXB0aW9uRGV0
YWlscyA9ICpkZXRhaWxzOwogICAgICAgICB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdENhbGxi
YWNrKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgZXhjZXB0aW9uRGV0YWlscywgdGFzay5nZXQoKSk7
CiAgICAgfSk7CiB9CkBAIC0zNzQ0LDcgKzM3NDcsMTAgQEAgc3RhdGljIHZvaWQgcmVzb3VyY2Vz
U3RyZWFtUmVhZENhbGxiYWNrKEdPYmplY3QqIG9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXN1bHQs
IGcKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKGdfdGFza19n
ZXRfc291cmNlX29iamVjdCh0YXNrLmdldCgpKSk7CiAgICAgZ3BvaW50ZXIgb3V0cHV0U3RyZWFt
RGF0YSA9IGdfbWVtb3J5X291dHB1dF9zdHJlYW1fZ2V0X2RhdGEoR19NRU1PUllfT1VUUFVUX1NU
UkVBTShvYmplY3QpKTsKICAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZShTdHJpbmc6OmZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ2NoYXIqPihvdXRw
dXRTdHJlYW1EYXRhKSksIHRydWUsCi0gICAgICAgIFt0YXNrXShBUEk6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBib29sLCBjb25zdCBFeGNlcHRpb25EZXRh
aWxzJiBleGNlcHRpb25EZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAg
ICAgICAgW3Rhc2tdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0
VmFsdWUsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6Q2FsbGJh
Y2tCYXNlOjpFcnJvcikgeworICAgICAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBleGNlcHRpb25E
ZXRhaWxzOworICAgICAgICAgICAgaWYgKGRldGFpbHMpCisgICAgICAgICAgICAgICAgZXhjZXB0
aW9uRGV0YWlscyA9ICpkZXRhaWxzOwogICAgICAgICAgICAgd2Via2l0V2ViVmlld1J1bkphdmFT
Y3JpcHRDYWxsYmFjayhzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGV4Y2VwdGlvbkRldGFpbHMsIHRh
c2suZ2V0KCkpOwogICAgICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCmluZGV4IGUzYjQ1MjM5OTc5M2E2YjFkNjc0NmNmOWJmNDQ4ODM0NThmZWFiN2Yu
LjJhM2YxOTY2MzU4MTgxMTliNTMzMTFjMGM4Mzc1ZWUxOGM0MWMyNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzg0NSwxOCArMzg0NSwxOCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6bGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpCiAgICAgICAg
IGxhdW5jaFByb2Nlc3MoeyB9LCBQcm9jZXNzTGF1bmNoUmVhc29uOjpJbml0aWFsUHJvY2Vzcyk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3Qg
U3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lk
IChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBF
eGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlv
bikKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3Ry
aW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChB
UEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRl
dGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAg
IHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHNjcmlwdCwgZm9yY2VVc2VyR2Vz
dHVyZSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0
IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIGNvbnN0IE9wdGlvbmFsPFN0
cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IEV4Y2VwdGlvbkRldGFpbHMmLCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6
OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0
LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFt
ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9u
YWw8RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVu
Y3Rpb24pCiB7CiAgICAgLy8gRm9yIGJhY2t3YXJkLWNvbXBhdGliaWxpdHkgc3VwcG9ydCBydW5u
aW5nIHNjcmlwdCBpbiBhIFdlYlZpZXcgd2hpY2ggaGFzIG5vdCBkb25lIGFueSBsb2FkcyB5ZXRz
LgogICAgIGxhdW5jaEluaXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKTsKIAogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKG51bGxwdHIsIGZh
bHNlLCB7IH0sIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOworICAgICAgICBjYWxsYmFj
a0Z1bmN0aW9uKG51bGxwdHIsIHsgfSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM4NjQsNyArMzg2NCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcm
IHNjcmlwdCwgYm9vCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lU2NyaXB0V29ybGQoc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCB3b3JsZE5hbWUs
IGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZy
YW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBm
b3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUqLCBib29sIGhhZEV4Y2VwdGlvbiwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYsIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6
cnVuSmF2YVNjcmlwdEluRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+LCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIEFTU0VSVChtYWlu
RnJhbWUoKS0+ZnJhbWVJRCgpICE9IGZyYW1lSUQpOwogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5G
cmFtZSJfcykpOwpAQCAtNjc4Nyw3ICs2Nzg3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmludmFs
aWRhdGVTdHJpbmdDYWxsYmFjayhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgY2FsbGJhY2st
PmludmFsaWRhdGUoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNjcmlwdFZhbHVlQ2FsbGJh
Y2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBib29sIGhhZEV4Y2Vw
dGlvbiwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYgZGV0YWlscywgQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnNjcmlwdFZhbHVlQ2FsbGJhY2soY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBk
ZXRhaWxzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1f
Y2FsbGJhY2tzLnRha2U8U2NyaXB0VmFsdWVDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYg
KCFjYWxsYmFjaykgewpAQCAtNjc5Niw3ICs2Nzk2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNj
cmlwdFZhbHVlQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNl
LAogICAgIH0KIAogICAgIGlmIChkYXRhUmVmZXJlbmNlLmlzRW1wdHkoKSkgewotICAgICAgICBj
YWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKG51bGxwdHIsIGhhZEV4Y2Vw
dGlvbiwgZGV0YWlscyk7CisgICAgICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0
dXJuVmFsdWUobnVsbHB0ciwgZGV0YWlscyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTY4MDQsNyArNjgwNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzY3JpcHRWYWx1ZUNhbGxiYWNr
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwKICAgICBkYXRhLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoZGF0YVJlZmVyZW5jZS5zaXplKCkpOwogICAgIGRhdGEuYXBwZW5k
KGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7CiAKLSAgICBjYWxs
YmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKEFQSTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlOjphZG9wdChXVEZNb3ZlKGRhdGEpKS5wdHIoKSwgaGFkRXhjZXB0aW9uLCBkZXRhaWxz
KTsKKyAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKEFQSTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChXVEZNb3ZlKGRhdGEpKS5wdHIoKSwgZGV0YWlscyk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21wdXRlZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVj
dG9yPEludFJlY3Q+JiBwYWdlUmVjdHMsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRp
bmcsIGNvbnN0IEZsb2F0Qm94RXh0ZW50JiBjb21wdXRlZFBhZ2VNYXJnaW4sIENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYWUz
ODUyMjIxZDRhNTI0MzU1MmJhMDIzZjJmNDhiOTRlZjdiOThhZC4uMDI3NGQ3Y2UyZjQzNjgxNTRj
Y2I2NzkyNWNkMGY5ZGE0M2MyOWNkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKQEAgLTc1LDYgKzc1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dn
aW5nQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRXZlbnRUcmFja2luZ1JlZ2lvbnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0V4Y2Vw
dGlvbkRldGFpbHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnRBdHRyaWJ1dGVzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFt
ZVZpZXcuaD4gLy8gRklYTUU6IE1vdmUgTGF5b3V0Vmlld3BvcnRDb25zdHJhaW50IHRvIGl0cyBv
d24gZmlsZSBhbmQgc3RvcCBpbmNsdWRpbmcgdGhpcy4KQEAgLTMzNSw3ICszMzYsNyBAQCB0eXBl
ZGVmIEdlbmVyaWNDYWxsYmFjazxBUEk6OkRhdGEqPiBEYXRhQ2FsbGJhY2s7CiB0eXBlZGVmIEdl
bmVyaWNDYWxsYmFjazx1aW50NjRfdD4gVW5zaWduZWRDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJp
Y0NhbGxiYWNrPEVkaXRpbmdSYW5nZT4gRWRpdGluZ1JhbmdlQ2FsbGJhY2s7CiB0eXBlZGVmIEdl
bmVyaWNDYWxsYmFjazxjb25zdCBTdHJpbmcmPiBTdHJpbmdDYWxsYmFjazsKLXR5cGVkZWYgR2Vu
ZXJpY0NhbGxiYWNrPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgYm9vbCwgY29uc3QgV2Vi
Q29yZTo6RXhjZXB0aW9uRGV0YWlscyY+IFNjcmlwdFZhbHVlQ2FsbGJhY2s7Cit0eXBlZGVmIEdl
bmVyaWNDYWxsYmFjazxBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNv
cmU6OkV4Y2VwdGlvbkRldGFpbHM+PiBTY3JpcHRWYWx1ZUNhbGxiYWNrOwogdHlwZWRlZiBHZW5l
cmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXMmPiBGb250QXR0cmlidXRl
c0NhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJj4gU2VsZWN0aW9uQ29udGV4dENhbGxiYWNrOwogdHlwZWRl
ZiBHZW5lcmljQ2FsbGJhY2s8Ym9vbD4gQm9vbENhbGxiYWNrOwpAQCAtMTA2MCwxMCArMTA2MSwx
MCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKEZ1bmN0
aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lk
IGdldFNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGdldFdlYkFy
Y2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJveHkqLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWUoY29uc3QgU3RyaW5nJiwgYm9vbCwgV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSosIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRp
b25EZXRhaWxzJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7Ci0g
ICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcm
LCBib29sLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248
dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25z
dCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2Fs
bGJhY2tGdW5jdGlvbik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3Qg
U3RyaW5nJiwgYm9vbCwgV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYsIGJvb2wsIGNvbnN0IE9wdGlvbmFsPFN0
cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pOwogICAgIC8vIEZvciBzdWIgZnJhbWVzLgot
ICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBib29sIGhhZEV4Y2VwdGlvbiwgY29u
c3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrRnVuY3Rpb24pOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWUoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0
dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRp
b25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYg
Y2FsbGJhY2tGdW5jdGlvbik7CiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoUmVmUHRyPFZvaWRDYWxs
YmFjaz4mJik7CiAKICAgICBmbG9hdCBoZWFkZXJIZWlnaHQoV2ViRnJhbWVQcm94eSYpOwpAQCAt
MTk0Myw3ICsxOTQ0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGJvb2xDYWxsYmFjayhib29sIHJl
c3VsdCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzdHJpbmdDYWxsYmFjayhjb25zdCBTdHJpbmcm
LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGludmFsaWRhdGVTdHJpbmdDYWxsYmFjayhDYWxsYmFj
a0lEKTsKLSAgICB2b2lkIHNjcmlwdFZhbHVlQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMm
LCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHNjcmlwdFZhbHVlQ2FsbGJhY2soY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxi
YWNrSUQpOwogICAgIHZvaWQgY29tcHV0ZWRQYWdlc0NhbGxiYWNrKGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpJbnRSZWN0PiYsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50JiBjb21wdXRlZFBhZ2VNYXJnaW4sIENhbGxiYWNrSUQp
OwogICAgIHZvaWQgdmFsaWRhdGVDb21tYW5kQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwgYm9vbCwg
aW50LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHVuc2lnbmVkQ2FsbGJhY2sodWludDY0X3QsIENh
bGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCmluZGV4IDBjNjUxZTY4NWIyOTc5ZjRlMzZlOWM4YTU4NjQxNmQ2NzFiZGZmZjUu
LjRkZWY1ZGMwMWRiNGQ0MjlmYmI3ZDcxNjkzOGExMTE3MGQ5ZWEyMzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTE2OSw3ICsx
NjksNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIFN0cmluZ0NhbGxiYWNrKFN0
cmluZyByZXN1bHRTdHJpbmcsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEJv
b2xDYWxsYmFjayhib29sIHJlc3VsdCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAg
ICAgSW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQotICAgIFNjcmlwdFZhbHVlQ2FsbGJhY2soSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEs
IGJvb2wgaGFkRXhjZXB0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyBkZXRh
aWxzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBTY3JpcHRWYWx1ZUNhbGxi
YWNrKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNl
cHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAg
ICBDb21wdXRlZFBhZ2VzQ2FsbGJhY2soVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IHBhZ2VSZWN0
cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgV2ViQ29yZTo6UmVjdEVkZ2Vz
PGZsb2F0PiBjb21wdXRlZFBhZ2VNYXJnaW4sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogICAgIFZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKFN0cmluZyBjb21tYW5kLCBib29sIGlzRW5h
YmxlZCwgaW50MzJfdCBzdGF0ZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAg
RWRpdGluZ1JhbmdlQ2FsbGJhY2soc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJhbmdlLCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggODhlMTNhZDgyYWRjZWM0ZmJlZTY4NWYy
YzdiZTQ1OThmOGQ0Y2JiZi4uM2VhMDA2YjNjZTM4ZTM4OTQxZmRiZDU4NjczY2Q4MWE2ODJjMjUz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAKQEAgLTEyNTMsNyArMTI1Myw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybUphdmFTY3Jp
cHRVUkxSZXF1ZXN0KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiAgICAgLy8gRXZhbHVhdGUgdGhlIEph
dmFTY3JpcHQgY29kZS4gTm90ZSB0aGF0IHJ1bm5pbmcgSmF2YVNjcmlwdCBoZXJlIGNvdWxkIGNh
dXNlIHRoZSBwbHVnLWluIHRvIGJlIGRlc3Ryb3llZCwgc28gd2UKICAgICAvLyBncmFiIHJlZmVy
ZW5jZXMgdG8gdGhlIHBsdWctaW4gaGVyZS4KICAgICBSZWZQdHI8UGx1Z2luPiBwbHVnaW4gPSBt
X3BsdWdpbjsKLSAgICBhdXRvIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0
KGpzU3RyaW5nLCByZXF1ZXN0LT5hbGxvd1BvcHVwcygpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGZy
YW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oanNTdHJpbmcsIHJl
cXVlc3QtPmFsbG93UG9wdXBzKCkpOwogCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3Bl
Y3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwCmluZGV4IDkwOGUz
OWFmZGIwYzg4OWNmZTU2NTJiMzlhZGM0NzBjM2EwOWE5YTIuLmMxODllOTgyNWFkNDk0NzBlZDYy
NDM1ZTg2ZDU5ZGY2MGYzOGFlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNw
YXRjaGVyLmNwcApAQCAtOTksNyArOTksNyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQVBJ
RGlzcGF0Y2hlcjo6ZXZhbHVhdGVPclF1ZXVlRXhwcmVzc2lvbihjb25zdCBTdHJpbmcmCiAKICAg
ICBBU1NFUlQobV9xdWV1ZS5pc0VtcHR5KCkpOwogICAgIEFTU0VSVCghbV9wYWdlLmNvcmVQYWdl
KCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmlzUGF1c2VkKCkpOwotICAgIG1fcGFnZS5jb3JlUGFn
ZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGV4cHJlc3Npb24pOworICAg
IG1fcGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdu
b3JpbmdFeGNlcHRpb24oZXhwcmVzc2lvbik7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRl
bmRBUElEaXNwYXRjaGVyOjpldmFsdWF0ZVF1ZXVlZEV4cHJlc3Npb25zKCkKQEAgLTEwOSw3ICsx
MDksNyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6ZXZhbHVhdGVR
dWV1ZWRFeHByZXNzaW9ucygpCiAKICAgICBmb3IgKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiA6
IG1fcXVldWUpIHsKICAgICAgICAgQVNTRVJUKCFtX3BhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1l
KCkuc2NyaXB0KCkuaXNQYXVzZWQoKSk7Ci0gICAgICAgIG1fcGFnZS5jb3JlUGFnZSgpLT5tYWlu
RnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGV4cHJlc3Npb24pOworICAgICAgICBtX3Bh
Z2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5n
RXhjZXB0aW9uKGV4cHJlc3Npb24pOwogICAgIH0KIAogICAgIG1fcXVldWUuY2xlYXIoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNzM1ZmVh
NGVlMTNiZTQyNWMyMzRiZTkyMTIwZmU5ZTdiY2EyZDVjNy4uMTI0NzAyY2U1ZTg5MzAzYmNiNjMx
MWVhMTVjZjQ3ZDAxMmUzNzgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTMzNTMsMjMgKzMzNTMsMjUgQEAgdm9pZCBXZWJQYWdlOjpydW5K
YXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9y
Y2VVc2UKICAgICAvLyBOT1RFOiBXZSBuZWVkIHRvIGJlIGNhcmVmdWwgd2hlbiBydW5uaW5nIHNj
cmlwdHMgdGhhdCB0aGUgb2JqZWN0cyB3ZSBkZXBlbmQgb24gZG9uJ3QKICAgICAvLyBkaXNhcHBl
YXIgZHVyaW5nIHNjcmlwdCBleGVjdXRpb24uCiAKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBzZXJpYWxpemVkUmVzdWx0VmFsdWU7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soY29t
bW9uVk0oKSk7Ci0gICAgYm9vbCBoYWRFeGNlcHRpb24gPSB0cnVlOwotICAgIEV4Y2VwdGlvbkRl
dGFpbHMgZGV0YWlsczsKKyAgICBWYWx1ZUFuZEV4Y2VwdGlvbiByZXN1bHQ7CisgICAgUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFJlc3VsdFZhbHVlOworCiAgICAgYXV0
byogd29ybGQgPSB3b3JsZE5hbWUgPyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpmaW5kKHdv
cmxkTmFtZS52YWx1ZSgpKSA6ICZJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3Js
ZCgpOwogICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+Y29yZUZyYW1lKCkgJiYgd29ybGQpIHsKLSAg
ICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0VmFsdWUgPSBmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlw
dCgpLmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKHdvcmxkLT5jb3JlV29ybGQoKSwgc2Ny
aXB0LCBmb3JjZVVzZXJHZXN0dXJlLCAmZGV0YWlscykpIHsKLSAgICAgICAgICAgIGhhZEV4Y2Vw
dGlvbiA9IGZhbHNlOworICAgICAgICByZXN1bHQgPSBmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlw
dCgpLmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKHdvcmxkLT5jb3JlV29ybGQoKSwgc2Ny
aXB0LCBmb3JjZVVzZXJHZXN0dXJlKTsKKyAgICAgICAgaWYgKHJlc3VsdC5maXJzdCkgeworICAg
ICAgICAgICAgQVNTRVJUKCFyZXN1bHQuc2Vjb25kKTsKICAgICAgICAgICAgIHNlcmlhbGl6ZWRS
ZXN1bHRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGZyYW1lLT5qc0NvbnRl
eHRGb3JXb3JsZCh3b3JsZCksCi0gICAgICAgICAgICAgICAgdG9SZWYoZnJhbWUtPmNvcmVGcmFt
ZSgpLT5zY3JpcHQoKS5nbG9iYWxPYmplY3Qod29ybGQtPmNvcmVXb3JsZCgpKSwgcmVzdWx0VmFs
dWUpLCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICB0b1JlZihmcmFtZS0+Y29yZUZyYW1lKCkt
PnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3b3JsZC0+Y29yZVdvcmxkKCkpLCByZXN1bHQuZmlyc3Qp
LCBudWxscHRyKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBk
YXRhUmVmZXJlbmNlOwogICAgIGlmIChzZXJpYWxpemVkUmVzdWx0VmFsdWUpCiAgICAgICAgIGRh
dGFSZWZlcmVuY2UgPSBzZXJpYWxpemVkUmVzdWx0VmFsdWUtPmRhdGEoKTsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwg
aGFkRXhjZXB0aW9uLCBkZXRhaWxzLCBjYWxsYmFja0lEKSk7CisKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgcmVzdWx0
LnNlY29uZCwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJ
bk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNl
ckdlc3R1cmUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCmluZGV4IDk0N2JmYzUzNDJjYmNhYzA5
YWFhZjUxMmNjZGI2ZGZlOWNiMWNhNDEuLmVhNTA3OGVkMThmNTUwNTJkZjJlNDI4MTNlMmE2Zjcw
ODU1Y2U3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTM3OSw3ICszNzksNyBAQCB2
b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKGNvbnN0IFN0cmluZyYgc3VnZ2Vz
dGVkVVJMLCBjb25zdCBTdHJpbmcmCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgW2NvbnRl
bnRDb3B5IHdyaXRlVG9VUkw6YWN0dWFsVVJMIGF0b21pY2FsbHk6WUVTIGVuY29kaW5nOk5TVVRG
OFN0cmluZ0VuY29kaW5nIGVycm9yOk5VTExdOwogCi0gICAgICAgIGNvcmUoW21fZnJvbnRlbmRX
aW5kb3dDb250cm9sbGVyIGZyb250ZW5kV2ViVmlld10pLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5l
eGVjdXRlU2NyaXB0KFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRl
bmRBUEkuc2F2ZWRVUkwoXCIlQFwiKSIsIGFjdHVhbFVSTC5hYnNvbHV0ZVN0cmluZ10pOworICAg
ICAgICBjb3JlKFttX2Zyb250ZW5kV2luZG93Q29udHJvbGxlciBmcm9udGVuZFdlYlZpZXddKS0+
bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuc2F2ZWRVUkwoXCIl
QFwiKSIsIGFjdHVhbFVSTC5hYnNvbHV0ZVN0cmluZ10pOwogICAgIH07CiAKICAgICBpZiAoIWZv
cmNlU2F2ZURpYWxvZykgewpAQCAtNDI1LDcgKzQyNSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ6OmFwcGVuZChjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3Ry
aW5nCiAgICAgW2hhbmRsZSB3cml0ZURhdGE6W2NvbnRlbnQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmddXTsKICAgICBbaGFuZGxlIGNsb3NlRmlsZV07CiAKLSAgICBjb3Jl
KFttX2Zyb250ZW5kV2luZG93Q29udHJvbGxlciBmcm9udGVuZFdlYlZpZXddKS0+bWFpbkZyYW1l
KCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIklu
c3BlY3RvckZyb250ZW5kQVBJLmFwcGVuZGVkVG9VUkwoXCIlQFwiKSIsIFthY3R1YWxVUkwgYWJz
b2x1dGVTdHJpbmddXSk7CisgICAgY29yZShbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIgZnJv
bnRlbmRXZWJWaWV3XSktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmlu
Z0V4Y2VwdGlvbihbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3BlY3RvckZyb250ZW5k
QVBJLmFwcGVuZGVkVG9VUkwoXCIlQFwiKSIsIFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddXSk7
CiB9CiAKIC8vIE1BUks6IC0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tCmluZGV4IDE4ZDNkOWVjMTRkOGM2OTVkMDNmOTNjM2RkMjAxNmFkNDA5NGE0NTguLjA1
YjU2OTMwNDM2NGI0OTY5NzFkODlkZDk3ZmY4ZGUyY2Y0NTY3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtNzAwLDcgKzcwMCw3IEBAIC0gKE5T
U3RyaW5nICopX3N0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOihOU1N0cmlu
ZyAqKXN0cmluZyBmb3JjZVVzCiAgICAgSlNDOjpKU0xvY2tIb2xkZXIganNjTG9jayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICNlbmRpZgogCi0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IF9wcml2
YXRlLT5jb3JlRnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoc3RyaW5nLCBmb3JjZVVzZXJH
ZXN0dXJlKTsKKyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+
c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKHN0cmluZywgZm9yY2VVc2Vy
R2VzdHVyZSk7CiAKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlRnJhbWUpIC8vIEluIGNhc2UgdGhl
IHNjcmlwdCByZW1vdmVkIG91ciBmcmFtZSBmcm9tIHRoZSBwYWdlLgogICAgICAgICByZXR1cm4g
QCIiOwpAQCAtMjA5Niw3ICsyMDk2LDcgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHdpdGhHbG8KICAgICBB
U1NFUlQoZnJhbWUtPmRvY3VtZW50KCkpOwogICAgIFJldGFpblB0cjxXZWJGcmFtZT4gd2ViRnJh
bWUoa2l0KGZyYW1lKSk7IC8vIFJ1bm5pbmcgYXJiaXRyYXJ5IEphdmFTY3JpcHQgY2FuIGRlc3Ry
b3kgdGhlIGZyYW1lLgogCi0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQo
KS5leGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZCgqY29yZSh3b3JsZCksIHN0cmluZywgdHJ1
ZSk7CisgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlVXNl
ckFnZW50U2NyaXB0SW5Xb3JsZCgqY29yZSh3b3JsZCksIHN0cmluZywgdHJ1ZSkuZmlyc3Q7CiAK
ICAgICBpZiAoIXdlYkZyYW1lLT5fcHJpdmF0ZS0+Y29yZUZyYW1lKSAvLyBJbiBjYXNlIHRoZSBz
Y3JpcHQgcmVtb3ZlZCBvdXIgZnJhbWUgZnJvbSB0aGUgcGFnZS4KICAgICAgICAgcmV0dXJuIEAi
IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA0N2Fh
ZTMyOGRiYzZhY2ZiZWFiYjNhZWM2ZDI3ODNjYjRmNTlmMDcxLi45NjFlMDVjZjFjMjI5ZGUxMTA0
NmI3YzRmYjgzNGY1MzM5YmI4MjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCkBAIC03OTA4LDcgKzc5MDgsNyBAQCAtIChOU0FwcGxlRXZlbnREZXNjcmlw
dG9yICopYWVEZXNjQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6KE5TU3RyaW5nICop
cwogICAgICAgICByZXR1cm4gbmlsOwogICAgIGlmICghY29yZUZyYW1lLT5kb2N1bWVudCgpKQog
ICAgICAgICByZXR1cm4gbmlsOwotICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBjb3JlRnJhbWUt
PnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoc2NyaXB0LCB0cnVlKTsKKyAgICBKU0M6OkpTVmFsdWUg
cmVzdWx0ID0gY29yZUZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRp
b24oc2NyaXB0LCB0cnVlKTsKICAgICBpZiAoIXJlc3VsdCkgLy8gRklYTUU6IHBhc3MgZXJyb3Jz
CiAgICAgICAgIHJldHVybiAwOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soY29yZUZyYW1l
LT5zY3JpcHQoKS5nbG9iYWxPYmplY3QoV2ViQ29yZTo6bWFpblRocmVhZE5vcm1hbFdvcmxkKCkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmlu
ZGV4IGU1ZWY2M2I0Y2Q4NjcxN2IzNjBiMDk5Yzg2MmUyN2E2MzUxMTUwNDMuLjgxNjBkYTE0YWMw
MDkzOTY4MGMyMmRlZGMyYTI1ZDNjM2E2ZTMwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNDM5LDcgKzQzOSw3IEBAIHZvaWQgUGx1
Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QoUGx1Z2luUmVxdWVzdCogcmVxdWVzdCkKICAgICAKICAg
ICAvLyBFeGVjdXRpbmcgYSBzY3JpcHQgY2FuIGNhdXNlIHRoZSBwbHVnaW4gdmlldyB0byBiZSBk
ZXN0cm95ZWQsIHNvIHdlIGtlZXAgYSByZWZlcmVuY2UgdG8gaXQuCiAgICAgUmVmUHRyPFBsdWdp
blZpZXc+IHByb3RlY3Rvcih0aGlzKTsKLSAgICBhdXRvIHJlc3VsdCA9IG1fcGFyZW50RnJhbWUt
PnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoanNTdHJpbmcsIHJlcXVlc3QtPnNob3VsZEFsbG93UG9w
dXBzKCkpOworICAgIGF1dG8gcmVzdWx0ID0gbV9wYXJlbnRGcmFtZS0+c2NyaXB0KCkuZXhlY3V0
ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGpzU3RyaW5nLCByZXF1ZXN0LT5zaG91bGRBbGxvd1Bv
cHVwcygpKTsKIAogICAgIGlmICh0YXJnZXRGcmFtZU5hbWUuaXNOdWxsKCkpIHsKICAgICAgICAg
Q1N0cmluZyBjc3RyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJh
bWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDZlZmFl
OGY2MjI5ODQ5Y2ExZjU5NmI3MzU1Y2VlZjQzY2ZkNjkwYTguLmM3NzhlMjJiNzBkY2YxODU1MjJj
YTZlMjA5Yjg3MDkxOTViNTE0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAK
QEAgLTIwNTUsNyArMjA1NSw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OnN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHRJblNjcmlwdFdvcmxkKElXZWJTY3JpcHRXb3JsZCogaVdvCiAgICAgLy8gR2V0
IHRoZSBmcmFtZSBmcm9tZSB0aGUgZ2xvYmFsIG9iamVjdCB3ZSd2ZSBzZXR0bGVkIG9uLgogICAg
IEZyYW1lKiBmcmFtZSA9IGFueVdvcmxkR2xvYmFsT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKTsK
ICAgICBBU1NFUlQoZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gZnJh
bWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLT53b3JsZCgpLCBzdHJpbmcs
IHRydWUpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3Jp
cHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24od29ybGQtPndvcmxkKCksIHN0cmluZywgdHJ1ZSk7
CiAKICAgICBpZiAoIWZyYW1lKSAvLyBJbiBjYXNlIHRoZSBzY3JpcHQgcmVtb3ZlZCBvdXIgZnJh
bWUgZnJvbSB0aGUgcGFnZS4KICAgICAgICAgcmV0dXJuIFNfT0s7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlZpZXcuY3BwCmluZGV4IGEwNDQ4YmIwMTNlZGZiNDMzNWZiYzlhYmM4YTdlMzA4MDc3ZjAw
NDMuLmU3MmVhNDNlZGI3OWM4YTAyMWNjNmRmYzE4YTk5ZDViYzA4ZTNmYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC0zNjYzLDcgKzM2NjMsNyBAQCBIUkVTVUxUIFdlYlZp
ZXc6OnN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nKF9Jbl8gQlNUUiBzY3Jp
cHQsIC8vIGFzcwogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gRV9VTkVYUEVD
VEVEOwogCi0gICAgYXV0byBzY3JpcHRFeGVjdXRpb25SZXN1bHQgPSBjb3JlRnJhbWUtPnNjcmlw
dCgpLmV4ZWN1dGVTY3JpcHQoV1RGOjpTdHJpbmcoc2NyaXB0KSwgdHJ1ZSk7CisgICAgYXV0byBz
Y3JpcHRFeGVjdXRpb25SZXN1bHQgPSBjb3JlRnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJ
Z25vcmluZ0V4Y2VwdGlvbihXVEY6OlN0cmluZyhzY3JpcHQpLCB0cnVlKTsKICAgICBpZiAoIXNj
cmlwdEV4ZWN1dGlvblJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKICAgICBlbHNlIGlm
IChzY3JpcHRFeGVjdXRpb25SZXN1bHQuaXNTdHJpbmcoKSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385523</attachid>
            <date>2019-12-12 12:12:41 -0800</date>
            <delta_ts>2019-12-12 12:20:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205151-20191212121241.patch</filename>
            <type>text/plain</type>
            <size>52294</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjU5MGYyYWFjZjNmZTJj
NWE4ZDlkYWUwZjFmOGM4NDY0YTY1MGE3YS4uMzgzYTYzMGViMmM5YmNmOTI2NTBiNDgyZDM2Mzg3
NGFiY2RiN2ZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE5LTEyLTEyICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRD
b250cm9sbGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoUmVm
YWN0b3IsIG5vIGJlaGF2aW9yIGNoYW5nZSkuCisKKyAgICAgICAgVGhlcmUncyBzbyBtYW55IEV4
Y2VwdGlvbkRldGFpbHMqIG51bGwgcG9pbnRlcnMgYmVpbmcgcGFzc2VkIGFyb3VuZCBpbiB0aGUg
U2NyaXB0Q29udHJvbGxlcgorICAgICAgICBmYW1pbHkgb2YgZnVuY3Rpb25zLgorCisgICAgICAg
IExldCdzIG1ha2UgaXQgYSBsaXR0bGUgbW9yZSBleHBsaWNpdCB3aGljaCBjYWxsZXJzIGdldCBl
eGNlcHRpb25zIGFuZCB3aGljaCBkb24ndC4KKworICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9R
dWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlF1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50OjplbnN1cmVSZXBsYWNlbWVudFNjcmlwdEluamVjdGVkKToKKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUpOgorCisgICAgICAgICogYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVy
OjpldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJ
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2Vy
QWdlbnRTY3JpcHRJbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6
OmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQpOiBEZWxldGVkLgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKworICAgICAgICAqIGNvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9jZXNzQ29udGVudFJ1
bGVMaXN0c0ZvckxvYWQpOgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjplbnN1cmVQbHVnSW5zSW5qZWN0ZWRTY3JpcHQpOgorCisgICAg
ICAgICogZG9tL1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxl
bWVudDo6ZXhlY3V0ZUNsYXNzaWNTY3JpcHQpOgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZU1l
ZGlhQ29udHJvbHNJbmplY3RlZFNjcmlwdCk6CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsOjpldmFsdWF0ZUFzQm9vbGVhbik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpldmFsdWF0ZU9uTG9hZCk6CisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZCk6
CisKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RmlsdGVyOjpkaWREZWNpZGUpOgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KToK
KworICAgICAgICAqIHhtbC9YTUxUcmVlVmlld2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TFRyZWVWaWV3ZXI6OnRyYW5zZm9ybURvY3VtZW50VG9UcmVlVmlldyk6CisKIDIwMTktMTItMTEg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBUcnlpbmcgdG8gc2V0
IHRvU3RyaW5nIC8gdmFsdWVPZiBvbiBhIGNyb3NzLW9yaWdpbiBMb2NhdGlvbiBvYmplY3Qgc2hv
dWxkIHRocm93IGEgU2VjdXJpdHlFcnJvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4ZDc2MmFkOWEzODY4MzQ5MjU4
YzAyYzk2MmY5NWZmOTNhZjI1NzM3Li5lNzIwYmY3ODUzMzI0MzJmY2U5ZjNkMjQ1YjkxNjZiMTNk
NzFlYjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE5LTEyLTEyICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRDb250cm9s
bGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHA6CisgICAgICAgIChXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2Vi
VmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmZvcmNlVXNlckdlc3R1cmU6Y29tcGxldGlvbkhhbmRs
ZXI6XSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdv
cmxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFt
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBlcmZv
cm1KYXZhU2NyaXB0VVJMUmVxdWVzdCk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpldmFsdWF0ZU9yUXVldWVFeHByZXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVy
OjpldmFsdWF0ZVF1ZXVlZEV4cHJlc3Npb25zKToKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cnVuSmF2YVNjcmlw
dCk6CisKIDIwMTktMTItMTEgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCBhIG5pdCBhZnRlciByMjUzMzY2CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKaW5kZXggYjlkYWUyY2UxMGUwODcyZDM1MzA4YzhjOGNjNjBkZTIwZjI1Zjc3NS4u
ZTFmNzFhNWQ1NjkwYzM0NTI0ZGI2ODYyOWI4NDkwOTE1M2RlNzA3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTEyLTEyICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRDb250cm9sbGVy
J3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZCk6CisgICAgICAg
IAorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9z
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpmb3JjZVVzZXJHZXN0dXJlOl0p
OgorICAgICAgICAoLVtXZWJGcmFtZSBfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21T
dHJpbmc6d2l0aEdsb2JhbE9iamVjdDppblNjcmlwdFdvcmxkOl0pOgorCisgICAgICAgICogV2Vi
Vmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IGFlRGVzY0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHRGcm9tU3RyaW5nOl0pOgorCiAyMDE5LTEyLTA5ICBFcmljIENhcmxzb24gIDxlcmlj
LmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBtZWRpYSBpbiB0aGUgR1BVIHBy
b2Nlc3MgcHJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDQyMDE0ZDk5
ZDUwMjE2ZmE5MmQ0OWE1OTJhMDA2NzgxOTJkNjRkNDEuLjE0MWNjMzk0YWM4ZWIzZDQ2MDQ1NmM5
OWNiNmI5YzM0NmE3MjBjZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxOS0xMi0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVmYWN0b3IgU2NyaXB0Q29udHJvbGxlcidzIHByb2xpZmVyYXRpb24gb2YgRXhj
ZXB0aW9uRGV0YWlscyouCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDUxNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVn
aW5WaWV3OjpwZXJmb3JtUmVxdWVzdCk6CisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAg
ICAgIChXZWJGcmFtZTo6c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEluU2NyaXB0V29ybGQp
OgorCiAyMDE5LTEyLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgUGFnZUNvbmZpZ3VyYXRpb246OmRyYWdDbGllbnQgc2hvdWxkIHVzZSBhIHNtYXJ0IHBvaW50
ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQppbmRleCA5ODEyNmUwM2YzZTMyMTQ3NWY3NTExNDY0
MmFkOGQwYjI0OGJhZDIzLi4wM2QyMWRlN2Q1YWMwNjliMmNhYTNkOTYxMWI5OGY4NGEzNTE3ZjRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1
aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCkBAIC0xNTgsNyArMTU4LDcgQEAgYm9vbCBRdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6ZW5zdXJlUmVwbGFjZW1lbnRTY3JpcHRJbmplY3RlZCgp
CiAgICAgaWYgKHJlcGxhY2VtZW50RnVuY3Rpb24uaXNGdW5jdGlvbih2bSkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIAotICAgIHNjcmlwdENvbnRyb2xsZXIuZXZhbHVhdGVJbldvcmxkKFNj
cmlwdFNvdXJjZUNvZGUocXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRTY3JpcHQoKSksIHdvcmxk
KTsKKyAgICBzY3JpcHRDb250cm9sbGVyLmV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9u
KFNjcmlwdFNvdXJjZUNvZGUocXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRTY3JpcHQoKSksIHdv
cmxkKTsKICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAgICAgIExP
RyhQbHVnaW5zLCAiJXAgLSBFeGNlcHRpb24gd2hlbiBldmFsdWF0aW5nIFF1aWNrVGltZSBwbHVn
aW4gcmVwbGFjZW1lbnQgc2NyaXB0IiwgdGhpcyk7CiAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0
aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRB
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNw
cAppbmRleCAyOGNmNTY0NjZiY2EzYzljMmQyMDg4OTUxYzk4MDgyZmRiNTFhODU2Li44ZTRjN2Iz
ODEyNDRlNzc2YmRkNTgzNGFlNDE5MzZkN2RjYzYyMjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lk
IFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgaWYgKG1f
ZnVuY3Rpb24pCiAgICAgICAgIGV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dCh3aW5kb3csIHdpbmRv
dy0+cHJveHkoKSwgZG9jdW1lbnQpOwogICAgIGVsc2UKLSAgICAgICAgZnJhbWUtPnNjcmlwdCgp
LmV4ZWN1dGVTY3JpcHRJbldvcmxkKG1faXNvbGF0ZWRXb3JsZCwgbV9jb2RlKTsKKyAgICAgICAg
ZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24obV9p
c29sYXRlZFdvcmxkLCBtX2NvZGUpOwogfQogCiB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0
ZShXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGIxZmRlODUwMmU0ZGEw
YjBmNjlmNDgxNmQ0YTQxMmVjNGVlNGM3M2YuLjRjZWQ0YzNjMjRlYjA2MGEyNjY1NTkwNjg5ODJm
NDMxYzY2MTk4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuY3BwCkBAIC0xMDcsNyArMTA3LDEyIEBAIFNjcmlwdENvbnRyb2xsZXI6On5TY3Jp
cHRDb250cm9sbGVyKCkKICAgICB9CiB9CiAKLUpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZh
bHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQsIEV4Y2VwdGlvbkRldGFpbHMqIGV4Y2VwdGlvbkRldGFpbHMpCitKU0M6
OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRp
b24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCkKK3sKKyAgICByZXR1cm4gZXZhbHVhdGVJbldvcmxkKHNvdXJjZUNvZGUsIHdvcmxkKS5m
aXJzdDsKK30KKworVmFsdWVBbmRFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJ
bldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CiAKQEAgLTEz
NSwxOSArMTQwLDIxIEBAIEpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxk
KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPCiAKICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUpOwogCisgICAgT3B0aW9u
YWw8RXhjZXB0aW9uRGV0YWlscz4gb3B0aW9uYWxEZXRhaWxzOwogICAgIGlmIChldmFsdWF0aW9u
RXhjZXB0aW9uKSB7Ci0gICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmZ2xvYmFsT2JqZWN0LCBldmFs
dWF0aW9uRXhjZXB0aW9uLCBzb3VyY2VDb2RlLmNhY2hlZFNjcmlwdCgpLCBleGNlcHRpb25EZXRh
aWxzKTsKLSAgICAgICAgbV9zb3VyY2VVUkwgPSBzYXZlZFNvdXJjZVVSTDsKLSAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBkZXRhaWxzOworICAgICAgICByZXBv
cnRFeGNlcHRpb24oJmdsb2JhbE9iamVjdCwgZXZhbHVhdGlvbkV4Y2VwdGlvbiwgc291cmNlQ29k
ZS5jYWNoZWRTY3JpcHQoKSwgJmRldGFpbHMpOworICAgICAgICBvcHRpb25hbERldGFpbHMgPSBX
VEZNb3ZlKGRldGFpbHMpOworICAgICAgICByZXR1cm5WYWx1ZSA9IHsgfTsKICAgICB9CiAKICAg
ICBtX3NvdXJjZVVSTCA9IHNhdmVkU291cmNlVVJMOwotICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
KyAgICByZXR1cm4geyByZXR1cm5WYWx1ZSwgb3B0aW9uYWxEZXRhaWxzIH07CiB9CiAKLUpTVmFs
dWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291
cmNlQ29kZSwgRXhjZXB0aW9uRGV0YWlscyogZXhjZXB0aW9uRGV0YWlscykKK0pTQzo6SlNWYWx1
ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlw
dFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCiB7Ci0gICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChz
b3VyY2VDb2RlLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgZXhjZXB0aW9uRGV0YWlscyk7Cisg
ICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKHNvdXJjZUNvZGUsIG1h
aW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKIH0KIAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjpsb2Fk
TW9kdWxlU2NyaXB0SW5Xb3JsZChMb2FkYWJsZU1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0LCBj
b25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYgdG9w
TGV2ZWxGZXRjaFBhcmFtZXRlcnMsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCkBAIC01NDgsNyAr
NTU1LDEyIEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJTY3JpcHRPYmplY3RzKCkKICNl
bmRpZgogfQogCi1KU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxk
KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNl
VXNlckdlc3R1cmUsIEV4Y2VwdGlvbkRldGFpbHMqIGV4Y2VwdGlvbkRldGFpbHMpCitKU0M6OkpT
VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2Vw
dGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBm
b3JjZVVzZXJHZXN0dXJlKQoreworICAgIHJldHVybiBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3Js
ZCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlKS5maXJzdDsKK30KKworVmFsdWVBbmRFeGNlcHRp
b24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxk
JiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKIHsK
ICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGZvcmNlVXNlckdlc3R1
cmUgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlKSA6IFdURjo6bnVsbG9wdCk7CiAgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2Rl
KHNjcmlwdCwgVVJMKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpLCBUZXh0UG9zaXRpb24oKSwg
SlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIENhY2hlZFNjcmlwdEZldGNo
ZXI6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmNoYXJzZXQoKSkpOwpAQCAtNTU2LDE3ICs1
NjgsMTcgQEAgSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChE
T01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHIKICAgICBpZiAoIWNhbkV4ZWN1dGVTY3Jp
cHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNlZCgpKQogICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3b3JsZCwgZXhj
ZXB0aW9uRGV0YWlscyk7CisgICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3
b3JsZCk7CiB9CiAKLUpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNj
cmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQs
IGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgRXhjZXB0aW9uRGV0YWlscyogZXhjZXB0aW9uRGV0YWls
cykKK1ZhbHVlQW5kRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRT
Y3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0
LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiB7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqbV9mcmFt
ZS5kb2N1bWVudCgpOwogICAgIGlmICghc2hvdWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRzKGRvY3Vt
ZW50KSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGRvY3VtZW50LnNldEhhc0V2YWx1YXRl
ZFVzZXJBZ2VudFNjcmlwdHMoKTsKLSAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdEluV29ybGQod29y
bGQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgZXhjZXB0aW9uRGV0YWlscyk7CisgICAgcmV0
dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUp
OwogfQogCiBib29sIFNjcmlwdENvbnRyb2xsZXI6OnNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0
cyhEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CkBAIC01OTgsMTQgKzYxMCwxMCBAQCBib29sIFNj
cmlwdENvbnRyb2xsZXI6OmNhbkV4ZWN1dGVTY3JpcHRzKFJlYXNvbkZvckNhbGxpbmdDYW5FeGVj
dXRlU2NyaXB0cyByZWFzbwogICAgIHJldHVybiBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmFs
bG93U2NyaXB0KG1fZnJhbWUuc2V0dGluZ3MoKS5pc1NjcmlwdEVuYWJsZWQoKSk7CiB9CiAKLUpT
VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlw
dCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBFeGNlcHRpb25EZXRhaWxzKiBleGNlcHRpb25EZXRh
aWxzKQorSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJZ25vcmlu
Z0V4Y2VwdGlvbihjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQog
ewogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoZm9yY2VVc2VyR2Vz
dHVyZSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNl
ckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KTsKLSAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdChTY3Jp
cHRTb3VyY2VDb2RlKHNjcmlwdCwgVVJMKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpLCBUZXh0
UG9zaXRpb24oKSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIENhY2hl
ZFNjcmlwdEZldGNoZXI6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmNoYXJzZXQoKSkpLCBl
eGNlcHRpb25EZXRhaWxzKTsKLX0KIAotSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRl
U2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIEV4Y2VwdGlvbkRldGFp
bHMqIGV4Y2VwdGlvbkRldGFpbHMpCi17CiAgICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0cyhBYm91
dFRvRXhlY3V0ZVNjcmlwdCkgfHwgaXNQYXVzZWQoKSkKICAgICAgICAgcmV0dXJuIHsgfTsgLy8g
RklYTUU6IFdvdWxkIGpzTnVsbCBiZSBiZXR0ZXI/CiAKQEAgLTYxMyw3ICs2MjEsNyBAQCBKU1Zh
bHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYgc291cmNlQ29kZSwgRXhjZQogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjQ3NjMKICAgICBSZWY8RnJhbWU+IHByb3RlY3RvcihtX2ZyYW1lKTsgLy8g
U2NyaXB0IGV4ZWN1dGlvbiBjYW4gZGVzdHJveSB0aGUgZnJhbWUsIGFuZCB0aHVzIHRoZSBTY3Jp
cHRDb250cm9sbGVyLgogCi0gICAgcmV0dXJuIGV2YWx1YXRlKHNvdXJjZUNvZGUsIGV4Y2VwdGlv
bkRldGFpbHMpOworICAgIHJldHVybiBldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNv
dXJjZUNvZGUoc2NyaXB0LCBVUkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSksIFRleHRQb3Np
dGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgQ2FjaGVkU2Ny
aXB0RmV0Y2hlcjo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2hhcnNldCgpKSkpOwogfQog
CiBib29sIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29uc3QgVVJM
JiB1cmwsIFNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCBzaG91bGRSZXBsYWNl
RG9jdW1lbnRJZkphdmFTY3JpcHRVUkwpCkBAIC02MzIsNyArNjQwLDcgQEAgYm9vbCBTY3JpcHRD
b250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYgdXJsLCBTaG91bGRS
ZXBsYWNlRG9jdW0KICAgICBjb25zdCBpbnQgamF2YXNjcmlwdFNjaGVtZUxlbmd0aCA9IHNpemVv
ZigiamF2YXNjcmlwdDoiKSAtIDE7CiAKICAgICBTdHJpbmcgZGVjb2RlZFVSTCA9IGRlY29kZVVS
TEVzY2FwZVNlcXVlbmNlcyh1cmwuc3RyaW5nKCkpOwotICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0
ZVNjcmlwdChkZWNvZGVkVVJMLnN1YnN0cmluZyhqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoKSk7Cisg
ICAgYXV0byByZXN1bHQgPSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oZGVjb2RlZFVS
TC5zdWJzdHJpbmcoamF2YXNjcmlwdFNjaGVtZUxlbmd0aCkpOwogCiAgICAgLy8gSWYgZXhlY3V0
aW5nIHNjcmlwdCBjYXVzZWQgdGhpcyBmcmFtZSB0byBiZSByZW1vdmVkIGZyb20gdGhlIHBhZ2Us
IHdlCiAgICAgLy8gZG9uJ3Qgd2FudCB0byB0cnkgdG8gcmVwbGFjZSBpdHMgZG9jdW1lbnQhCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggMTMy
NzRhNWQxY2Y2ZDUyYjRhMjZlYzQ4ZGI1MDBhYmZmZTMzZWQ2Yi4uYjhiMjliMTg4YzhiOTIwOTk1
ZmFjNzFkYjFlODQwOTUyODYyODMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuaApAQCAtNzAsNiArNzAsOCBAQCBlbnVtIFJlYXNvbkZvckNhbGxp
bmdDYW5FeGVjdXRlU2NyaXB0cyB7CiAgICAgTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQKIH07CiAK
K3VzaW5nIFZhbHVlQW5kRXhjZXB0aW9uID0gc3RkOjpwYWlyPEpTQzo6SlNWYWx1ZSwgV1RGOjpP
cHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPj47CisKIGNsYXNzIFNjcmlwdENvbnRyb2xsZXIgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8U2NyaXB0Q29udHJvbGxlcj4gewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogCkBAIC04OCwxMCArOTAsMTAgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IHZvaWQgZ2V0QWxsV29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4mKTsKIAotICAg
IEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBFeGNl
cHRpb25EZXRhaWxzKiA9IG51bGxwdHIpOwotICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1
ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1
cmUgPSBmYWxzZSwgRXhjZXB0aW9uRGV0YWlscyogPSBudWxscHRyKTsKLSAgICBKU0M6OkpTVmFs
dWUgZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBz
Y3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlLCBFeGNlcHRpb25EZXRhaWxzKiA9
IG51bGxwdHIpOwotICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlVXNlckFn
ZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlLCBFeGNlcHRpb25EZXRhaWxzKiA9IG51bGxwdHIpOworICAg
IFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRp
b24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsK
KyAgICBKU0M6OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihE
T01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0
dXJlID0gZmFsc2UpOworICAgIFZhbHVlQW5kRXhjZXB0aW9uIGV4ZWN1dGVTY3JpcHRJbldvcmxk
KERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdl
c3R1cmUgPSBmYWxzZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgVmFsdWVBbmRFeGNlcHRpb24gZXhl
Y3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5n
JiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSk7CiAKICAgICBib29sIHNob3VsZEFsbG93
VXNlckFnZW50U2NyaXB0cyhEb2N1bWVudCYpIGNvbnN0OwogCkBAIC0xMDIsOCArMTA0LDkgQEAg
cHVibGljOgogICAgIC8vIERhcndpbiBpcyBhbiBleGNlcHRpb24gdG8gdGhpcyBydWxlOiBpdCBp
cyBPSyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSBhbnkgdGhyZWFkLCBldmVuIHJlZW50cmFu
dGx5LgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAotICAgIEpTQzo6
SlNWYWx1ZSBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRXhjZXB0aW9uRGV0YWls
cyogPSBudWxscHRyKTsKLSAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNj
cmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmLCBFeGNlcHRpb25EZXRhaWxzKiA9IG51
bGxwdHIpOworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKGNvbnN0
IFNjcmlwdFNvdXJjZUNvZGUmKTsKKyAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJbldvcmxkSWdu
b3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYp
OworICAgIFZhbHVlQW5kRXhjZXB0aW9uIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3Vy
Y2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7CiAKICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJ
bldvcmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBS
ZWY8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiYmLCBET01XcmFwcGVyV29ybGQmKTsKICAgICB2b2lk
IGxvYWRNb2R1bGVTY3JpcHQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcmIG1v
ZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFj
a2VuZC5jcHAKaW5kZXggYTc1NWZjYjkzY2ExMjIyMjhlNzJhNDU5NDhlZmI0MTA0MmNmMTVkNy4u
NTJmMzE5MmM1YjIwMDJmNTE4MzhhNzQ0OTI4N2I2ZWU4MGEzNTczZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgQ29udGVudFJ1bGVMaXN0UmVzdWx0cyBD
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50UnVsZUxpc3RzRm9yTG9hZCgK
ICAgICAgICAgICAgICAgICAmJiAoKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHVybC5o
b3N0KCksICJ3d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20iKSAmJiBlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZSh1cmwucGF0aCgpLCAiL2FuYWx5dGljcy5qcyIpKQogICAgICAgICAgICAgICAg
ICAgICB8fCAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodXJsLmhvc3QoKSwgInd3dy5n
b29nbGV0YWdtYW5hZ2VyLmNvbSIpICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHVy
bC5wYXRoKCksICIvZ3RtLmpzIikpKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBmcmFt
ZSA9IGN1cnJlbnREb2N1bWVudC0+ZnJhbWUoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUt
PnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUgeyAidHJ5IHsgd2luZG93LmRhdGFM
YXllci5oaWRlLmVuZCgpOyBjb25zb2xlLmxvZygnQ2FsbGVkIHdpbmRvdy5kYXRhTGF5ZXIuaGlk
ZS5lbmQoKSBpbiBmcmFtZSAnICsgZG9jdW1lbnQuVVJMICsgJyBiZWNhdXNlIHRoZSBjb250ZW50
IGJsb2NrZXIgYmxvY2tlZCB0aGUgbG9hZCBvZiB0aGUgaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5
dGljcy5jb20vYW5hbHl0aWNzLmpzIHNjcmlwdCcpOyB9IGNhdGNoIChlKSB7IH0iX3MgfSk7Cisg
ICAgICAgICAgICAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZUlnbm9yaW5nRXhjZXB0
aW9uKFNjcmlwdFNvdXJjZUNvZGUgeyAidHJ5IHsgd2luZG93LmRhdGFMYXllci5oaWRlLmVuZCgp
OyBjb25zb2xlLmxvZygnQ2FsbGVkIHdpbmRvdy5kYXRhTGF5ZXIuaGlkZS5lbmQoKSBpbiBmcmFt
ZSAnICsgZG9jdW1lbnQuVVJMICsgJyBiZWNhdXNlIHRoZSBjb250ZW50IGJsb2NrZXIgYmxvY2tl
ZCB0aGUgbG9hZCBvZiB0aGUgaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0
aWNzLmpzIHNjcmlwdCcpOyB9IGNhdGNoIChlKSB7IH0iX3MgfSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBmM2Y3ZjAzMmYyMGUx
YTVhM2YzYzhmMTNkMjI3MDk5ZjViODJiMWU5Li4xN2VkYzhiYzU4MmYzNjc0N2M3YmM0NGFiZTlk
ZDVhNGJmMGNiZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTcyMDEsNyArNzIwMSw3
IEBAIHZvaWQgRG9jdW1lbnQ6OmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdChET01XcmFwcGVy
V29ybGQmIHdvcmxkKQogICAgICAgICBqc1N0cmluZyA9IFN0cmluZyhwbHVnSW5zSmF2YVNjcmlw
dCwgc2l6ZW9mKHBsdWdJbnNKYXZhU2NyaXB0KSk7CiAKICAgICBzZXRIYXNFdmFsdWF0ZWRVc2Vy
QWdlbnRTY3JpcHRzKCk7Ci0gICAgc2NyaXB0Q29udHJvbGxlci5ldmFsdWF0ZUluV29ybGQoU2Ny
aXB0U291cmNlQ29kZShqc1N0cmluZyksIHdvcmxkKTsKKyAgICBzY3JpcHRDb250cm9sbGVyLmV2
YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUoanNTdHJpbmcp
LCB3b3JsZCk7CiAKICAgICBtX2hhc0luamVjdGVkUGx1Z0luc1NjcmlwdCA9IHRydWU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggZTBkOTY3YjQ1NzRiYjM1MzA4NWZi
Mzc3NjUwOTRjYzJmOGEzNTM4NS4uMTUxMTc1MTllZjkxMzQ2NzY3N2QyNTg2NTNjZDI3MjAxNzdl
ODA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMzg3LDcgKzM4Nyw3
IEBAIHZvaWQgU2NyaXB0RWxlbWVudDo6ZXhlY3V0ZUNsYXNzaWNTY3JpcHQoY29uc3QgU2NyaXB0
U291cmNlQ29kZSYgc291cmNlQ29kZSkKICAgICBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJ
bmNyZW1lbnRlciBpZ25vcmVEZXNjdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIobV9pc0V4
dGVybmFsU2NyaXB0ID8gJmRvY3VtZW50IDogbnVsbHB0cik7CiAgICAgQ3VycmVudFNjcmlwdElu
Y3JlbWVudGVyIGN1cnJlbnRTY3JpcHRJbmNyZW1lbnRlcihkb2N1bWVudCwgbV9lbGVtZW50KTsK
IAotICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZShzb3VyY2VDb2RlKTsKKyAgICBmcmFtZS0+
c2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihzb3VyY2VDb2RlKTsKIH0KIAogdm9p
ZCBTY3JpcHRFbGVtZW50OjpleGVjdXRlTW9kdWxlU2NyaXB0KExvYWRhYmxlTW9kdWxlU2NyaXB0
JiBsb2FkYWJsZU1vZHVsZVNjcmlwdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCmluZGV4IGViNWZmNTY3ZWQ4MTBkZmMxODUxMDY4MDMyOTNhMmQ1NjRjZTIzNDkuLjcz
MGI0ZTM4OWU3ODNmZTU2Njc1NWI4YWMzNjg4MTE5ZjA5NjkxNjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNzMxNyw3ICs3MzE3LDcgQEAgYm9vbCBIVE1M
TWVkaWFFbGVtZW50OjplbnN1cmVNZWRpYUNvbnRyb2xzSW5qZWN0ZWRTY3JpcHQoKQogI2Vsc2UK
ICAgICAgICAgVVJMIHNjcmlwdFVSTDsKICNlbmRpZgotICAgICAgICBzY3JpcHRDb250cm9sbGVy
LmV2YWx1YXRlSW5Xb3JsZChTY3JpcHRTb3VyY2VDb2RlKG1lZGlhQ29udHJvbHNTY3JpcHQsIFdU
Rk1vdmUoc2NyaXB0VVJMKSksIHdvcmxkKTsKKyAgICAgICAgc2NyaXB0Q29udHJvbGxlci5ldmFs
dWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKG1lZGlhQ29udHJv
bHNTY3JpcHQsIFdURk1vdmUoc2NyaXB0VVJMKSksIHdvcmxkKTsKICAgICAgICAgaWYgKFVOTElL
RUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRp
b24oKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAppbmRleCAx
YjNjODg3NmNjNjg3MzFiNWQ2MjhkZDJkZTJiOWQ2MDRmMmE0NWZiLi4wZDgzMTkyNTI3ODJkYTk1
YTcyZWQzNmNhNWYwNDhjN2NkOGM4NDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC00MjAsNyAr
NDIwLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpkaXNwYXRjaE1lc3Nh
Z2VBc3luYyhjb25zdCBTdHJpbmcmIG1lc3NhZ2VPYmoKIGJvb2wgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbDo6ZXZhbHVhdGVBc0Jvb2xlYW4oY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQog
ewogICAgIGF1dG8mIHN0YXRlID0gKm1haW5Xb3JsZEV4ZWNTdGF0ZSgmbV9mcm9udGVuZFBhZ2Ut
Pm1haW5GcmFtZSgpKTsKLSAgICByZXR1cm4gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnNj
cmlwdCgpLmV4ZWN1dGVTY3JpcHQoZXhwcmVzc2lvbikudG9XVEZTdHJpbmcoJnN0YXRlKSA9PSAi
dHJ1ZSI7CisgICAgcmV0dXJuIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5l
eGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oZXhwcmVzc2lvbikudG9XVEZTdHJpbmcoJnN0
YXRlKSA9PSAidHJ1ZSI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6
ZXZhbHVhdGVPbkxvYWQoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQpAQCAtNDMxLDcgKzQzMSw3
IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVhdGVPbkxvYWQoY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uKQogICAgIH0KIAogICAgIEpTQzo6U3VzcGVuZEV4Y2VwdGlv
blNjb3BlIHNjb3BlKCZtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnZtKCkp
OwotICAgIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5ldmFsdWF0ZShTY3Jp
cHRTb3VyY2VDb2RlKGV4cHJlc3Npb24pKTsKKyAgICBtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1l
KCkuc2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKGV4
cHJlc3Npb24pKTsKIH0KIAogUGFnZSogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6aW5z
cGVjdGVkUGFnZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggMDFlZGQwMDYwZGUzNjJjMWFiN2I3
MDI0NzVhZTgzODIyMjc5YTgwMC4uY2Y4OWY5ZWI1MDUyMzI2ZmNmOGNiZDI2ZDg1OTZjZjQ3MjRj
MjM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcApAQCAtNzczLDcgKzc3Myw3IEBAIHZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUmIGZyYW1lKQogICAgIGlm
IChtX2Jvb3RzdHJhcFNjcmlwdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZy
YW1lLnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUobV9ib290c3RyYXBTY3JpcHQs
IFVSTCB7IFVSTCgpLCAid2ViLWluc3BlY3RvcjovL2Jvb3RzdHJhcC5qcyJfcyB9KSk7CisgICAg
ZnJhbWUuc2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2Rl
KG1fYm9vdHN0cmFwU2NyaXB0LCBVUkwgeyBVUkwoKSwgIndlYi1pbnNwZWN0b3I6Ly9ib290c3Ry
YXAuanMiX3MgfSkpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkUGFpbnQoUmVu
ZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCBiNDk4YTIyNGIxOTBjNmNlODQ0ZWI5ZGQ3
ZWI5YjdhMTA1ZDc2ZGM1Li42ZWFmY2EzNGU4MWEzOTkyZGQxZmI4MGY5MDMyZWI5NmM4YjliNzc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMz
LDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUgc3RhdGUpCiAgICAgaWYg
KCF1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUpIHsKICAgICAg
ICAgdW5ibG9ja0hhbmRsZXIud3JhcFdpdGhEZWNpc2lvbkhhbmRsZXIoW3NjcmlwdENvbnRyb2xs
ZXIgPSBtYWtlV2Vha1B0cihmcmFtZS0+c2NyaXB0KCkpLCBzY3JpcHQgPSB1bmJsb2NrUmVxdWVz
dERlbmllZFNjcmlwdC5pc29sYXRlZENvcHkoKV0oYm9vbCB1bmJsb2NrZWQpIHsKICAgICAgICAg
ICAgIGlmICghdW5ibG9ja2VkICYmIHNjcmlwdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAg
c2NyaXB0Q29udHJvbGxlci0+ZXhlY3V0ZVNjcmlwdChzY3JpcHQpOworICAgICAgICAgICAgICAg
IHNjcmlwdENvbnRyb2xsZXItPmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihzY3JpcHQp
OwogICAgICAgICB9KTsKICAgICB9CiAgICAgbV9kb2N1bWVudExvYWRlci5mcmFtZUxvYWRlcigp
LT5jbGllbnQoKS5jb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdURk1vdmUodW5ibG9ja0hhbmRs
ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggMjJjYzFmZDE1YmMxN2NmZDg1NmU5MTRjMzhh
ODZiMGM0MmFjNzRiYy4uZTA4MzNkYzA4MzNmNTlhOWViMjYzNTA2MTMxY2RiYjk3YzlmOTIxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTYzNCw3ICs2MzQsNyBAQCB2b2lkIEZyYW1lOjppbmpl
Y3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgVXNl
clNjcmlwdAogCiAgICAgZG9jdW1lbnQtPnNldEFzUnVubmluZ1VzZXJTY3JpcHRzKCk7CiAgICAg
bG9hZGVyKCkuY2xpZW50KCkud2lsbEluamVjdFVzZXJTY3JpcHQod29ybGQpOwotICAgIG1fc2Ny
aXB0LT5ldmFsdWF0ZUluV29ybGQoU2NyaXB0U291cmNlQ29kZShzY3JpcHQuc291cmNlKCksIFVS
TChzY3JpcHQudXJsKCkpKSwgd29ybGQpOworICAgIG1fc2NyaXB0LT5ldmFsdWF0ZUluV29ybGRJ
Z25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdC5zb3VyY2UoKSwgVVJMKHNj
cmlwdC51cmwoKSkpLCB3b3JsZCk7CiB9CiAKIFJlbmRlclZpZXcqIEZyYW1lOjpjb250ZW50UmVu
ZGVyZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCmluZGV4IGZlMDFj
YzFmZjQ5MWMzNjdmY2FkOTdiZmQ0ZDZjNGU3MzBmNmJkYTguLmY5MGU0NDUyNGQ1ZGEzNzY2MmNj
MmRkNTVmNDIxZjI4OTc3YjQyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxU
cmVlVmlld2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAK
QEAgLTU2LDggKzU2LDggQEAgdm9pZCBYTUxUcmVlVmlld2VyOjp0cmFuc2Zvcm1Eb2N1bWVudFRv
VHJlZVZpZXcoKQogICAgIG1fZG9jdW1lbnQuc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJp
dHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpKTsK
IAogICAgIFN0cmluZyBzY3JpcHRTdHJpbmcgPSBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29w
eWluZyhYTUxWaWV3ZXJfanMsIHNpemVvZihYTUxWaWV3ZXJfanMpKTsKLSAgICBtX2RvY3VtZW50
LmZyYW1lKCktPnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0U3RyaW5n
KSk7Ci0gICAgbV9kb2N1bWVudC5mcmFtZSgpLT5zY3JpcHQoKS5ldmFsdWF0ZShTY3JpcHRTb3Vy
Y2VDb2RlKEF0b21TdHJpbmcoInByZXBhcmVXZWJLaXRYTUxWaWV3ZXIoJ1RoaXMgWE1MIGZpbGUg
ZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUgYW55IHN0eWxlIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQg
d2l0aCBpdC4gVGhlIGRvY3VtZW50IHRyZWUgaXMgc2hvd24gYmVsb3cuJyk7IikpKTsKKyAgICBt
X2RvY3VtZW50LmZyYW1lKCktPnNjcmlwdCgpLmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2Ny
aXB0U291cmNlQ29kZShzY3JpcHRTdHJpbmcpKTsKKyAgICBtX2RvY3VtZW50LmZyYW1lKCktPnNj
cmlwdCgpLmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29kZShBdG9tU3Ry
aW5nKCJwcmVwYXJlV2ViS2l0WE1MVmlld2VyKCdUaGlzIFhNTCBmaWxlIGRvZXMgbm90IGFwcGVh
ciB0byBoYXZlIGFueSBzdHlsZSBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggaXQuIFRoZSBk
b2N1bWVudCB0cmVlIGlzIHNob3duIGJlbG93LicpOyIpKSk7CiAKICAgICBTdHJpbmcgY3NzU3Ry
aW5nID0gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoWE1MVmlld2VyX2Nzcywgc2l6
ZW9mKFhNTFZpZXdlcl9jc3MpKTsKICAgICBhdXRvIHRleHQgPSBtX2RvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKGNzc1N0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cAppbmRleCA3MGVmYmZhM2U4N2EyYWJhY2M0NTE0NjQwZmRhM2Y3N2ViNjgwZTVmLi4wYzE1Zjhi
OTNjNzgwN2VmZDc0YmJlNDAwODI4NDQ0MWM1NmZhZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI0NzIsNyArMjQ3Miw3IEBAIHZvaWQgV0tQYWdlU2V0
UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNs
aWVudCkKIAogdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQYWdlUmVmIHBh
Z2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlUnVuSmF2
YVNjcmlwdEZ1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+cnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lKHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgdHJ1ZSwgW2Nv
bnRleHQsIGNhbGxiYWNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmV0dXJuVmFsdWUs
IGJvb2wsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVy
cm9yIGVycm9yKSB7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWUodG9JbXBsKHNjcmlwdFJlZiktPnN0cmluZygpLCB0cnVlLCBbY29udGV4dCwgY2FsbGJhY2td
KEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiByZXR1cm5WYWx1ZSwgT3B0aW9uYWw8V2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAg
ICAgY2FsbGJhY2sodG9BUEkocmV0dXJuVmFsdWUpLCAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpF
cnJvcjo6Tm9uZSkgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5wdHIoKSkgOiAwLCBjb250
ZXh0KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCmluZGV4IDMzNTRhYzZlZWNiNWE4ZDcxOThhZThhNThjYTI5OTQ0YzgzMGU1
MTAuLjE5NDJiMDI1NjFkZjE1OTgyY2EwYTExZDEwMGMzOTNjYjhiYTA0YmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTEyMiw3ICsx
MTIyLDcgQEAgLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3Jp
cHRTdHJpbmcgZm9yY2VVc2VyR2VzdHVyZTooQk9PTCkKIHsKICAgICBhdXRvIGhhbmRsZXIgPSBh
ZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSk7CiAKLSAgICBfcGFnZS0+cnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKGphdmFTY3JpcHRTdHJpbmcsIGZvcmNlVXNlckdlc3R1cmUsIFtoYW5k
bGVyXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBi
b29sIGhhZEV4Y2VwdGlvbiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyYgZGV0YWls
cywgV2ViS2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvciBlcnJvckNvZGUpIHsKKyAgICBf
cGFnZS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGphdmFTY3JpcHRTdHJpbmcsIGZvcmNlVXNl
ckdlc3R1cmUsIFtoYW5kbGVyXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxz
LCBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJhY2s6OkVycm9yIGVycm9yQ29kZSkgewogICAgICAg
ICBpZiAoIWhhbmRsZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTExNDUsMTggKzExNDUs
MTggQEAgLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRT
dHJpbmcgZm9yY2VVc2VyR2VzdHVyZTooQk9PTCkKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8g
cmF3SGFuZGxlciA9ICh2b2lkICheKShpZCwgTlNFcnJvciAqKSloYW5kbGVyLmdldCgpOwotICAg
ICAgICBpZiAoaGFkRXhjZXB0aW9uKSB7CisgICAgICAgIGlmIChkZXRhaWxzKSB7CiAgICAgICAg
ICAgICBBU1NFUlQoIXNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CiAKICAgICAgICAgICAgIFJldGFp
blB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiB1c2VySW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAKICAgICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmpl
Y3Q6bG9jYWxpemVkRGVzY3JpcHRpb25Gb3JFcnJvckNvZGUoV0tFcnJvckphdmFTY3JpcHRFeGNl
cHRpb25PY2N1cnJlZCkgZm9yS2V5Ok5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXldOwotICAgICAg
ICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihkZXRhaWxz
Lm1lc3NhZ2UpIGZvcktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTWVzc2FnZUVycm9yS2V5XTsK
LSAgICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QChkZXRhaWxzLmxpbmVOdW1iZXIpIGZv
cktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTGluZU51bWJlckVycm9yS2V5XTsKLSAgICAgICAg
ICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QChkZXRhaWxzLmNvbHVtbk51bWJlcikgZm9yS2V5Ol9X
S0phdmFTY3JpcHRFeGNlcHRpb25Db2x1bW5OdW1iZXJFcnJvcktleV07CisgICAgICAgICAgICBb
dXNlckluZm8gc2V0T2JqZWN0OnN0YXRpY19jYXN0PE5TU3RyaW5nICo+KGRldGFpbHMtPm1lc3Nh
Z2UpIGZvcktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTWVzc2FnZUVycm9yS2V5XTsKKyAgICAg
ICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QChkZXRhaWxzLT5saW5lTnVtYmVyKSBmb3JLZXk6
X1dLSmF2YVNjcmlwdEV4Y2VwdGlvbkxpbmVOdW1iZXJFcnJvcktleV07CisgICAgICAgICAgICBb
dXNlckluZm8gc2V0T2JqZWN0OkAoZGV0YWlscy0+Y29sdW1uTnVtYmVyKSBmb3JLZXk6X1dLSmF2
YVNjcmlwdEV4Y2VwdGlvbkNvbHVtbk51bWJlckVycm9yS2V5XTsKIAotICAgICAgICAgICAgaWYg
KCFkZXRhaWxzLnNvdXJjZVVSTC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgW3VzZXJJbmZv
IHNldE9iamVjdDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOmRldGFpbHMuc291cmNlVVJM
XSBmb3JLZXk6X1dLSmF2YVNjcmlwdEV4Y2VwdGlvblNvdXJjZVVSTEVycm9yS2V5XTsKKyAgICAg
ICAgICAgIGlmICghZGV0YWlscy0+c291cmNlVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAg
ICBbdXNlckluZm8gc2V0T2JqZWN0OltOU1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJpbmc6ZGV0YWls
cy0+c291cmNlVVJMXSBmb3JLZXk6X1dLSmF2YVNjcmlwdEV4Y2VwdGlvblNvdXJjZVVSTEVycm9y
S2V5XTsKIAogICAgICAgICAgICAgcmF3SGFuZGxlcihuaWwsIGFkb3B0TlMoW1tOU0Vycm9yIGFs
bG9jXSBpbml0V2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvckphdmFTY3JpcHRF
eGNlcHRpb25PY2N1cnJlZCB1c2VySW5mbzp1c2VySW5mby5nZXQoKV0pLmdldCgpKTsKICAgICAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggZDIxYzc4MmVkZWQxMjEzYzY5MTMxMWNkMmRjOTViZmJj
NGQ4NzZlYS4uNDdkNjJkNzEzNDkzODc2MTg4MmFmMzdiMDkwNTk2YmE4YjFlNGQxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAK
QEAgLTM2MDYsNyArMzYwNiwxMCBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlw
dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogc2NyaXB0LAogICAgIGdfcmV0
dXJuX2lmX2ZhaWwoc2NyaXB0KTsKIAogICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdS
ZWYoZ190YXNrX25ldyh3ZWJWaWV3LCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKSk7
Ci0gICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoU3RyaW5nOjpm
cm9tVVRGOChzY3JpcHQpLCB0cnVlLCBbdGFzayA9IFdURk1vdmUodGFzayldKEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGJvb2wsIGNvbnN0IEV4Y2Vw
dGlvbkRldGFpbHMmIGV4Y2VwdGlvbkRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJv
cikgeworICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFN0cmlu
Zzo6ZnJvbVVURjgoc2NyaXB0KSwgdHJ1ZSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxFeGNl
cHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAg
ICAgICAgRXhjZXB0aW9uRGV0YWlscyBFeGNlcHRpb25EZXRhaWxzOworICAgICAgICBpZiAoZGV0
YWlscykKKyAgICAgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgPSAqZGV0YWlsczsKICAgICAgICAg
d2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRDYWxsYmFjayhzZXJpYWxpemVkU2NyaXB0VmFsdWUs
IGV4Y2VwdGlvbkRldGFpbHMsIHRhc2suZ2V0KCkpOwogICAgIH0pOwogfQpAQCAtMzcwNCw3ICsz
NzA3LDEwIEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0X2luX3dvcmxkKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyCiAgICAgZ19yZXR1cm5faWZfZmFpbCh3
b3JsZE5hbWUpOwogCiAgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0R1JlZihnX3Rhc2tf
bmV3KHdlYlZpZXcsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpKTsKLSAgICBnZXRQ
YWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFN0cmluZzo6
ZnJvbVVURjgoc2NyaXB0KSwgdHJ1ZSwgU3RyaW5nOjpmcm9tVVRGOCh3b3JsZE5hbWUpLCBbdGFz
ayA9IFdURk1vdmUodGFzayldKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVk
U2NyaXB0VmFsdWUsIGJvb2wsIGNvbnN0IEV4Y2VwdGlvbkRldGFpbHMmIGV4Y2VwdGlvbkRldGFp
bHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgIGdldFBhZ2Uod2ViVmlldyku
cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoU3RyaW5nOjpmcm9tVVRGOChzY3Jp
cHQpLCB0cnVlLCBTdHJpbmc6OmZyb21VVEY4KHdvcmxkTmFtZSksIFt0YXNrID0gV1RGTW92ZSh0
YXNrKV0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwg
T3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6
OkVycm9yKSB7CisgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZXhjZXB0aW9uRGV0YWlsczsKKyAg
ICAgICAgaWYgKGRldGFpbHMpCisgICAgICAgICAgICBleGNlcHRpb25EZXRhaWxzID0gKmRldGFp
bHM7CiAgICAgICAgIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2soc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLCBleGNlcHRpb25EZXRhaWxzLCB0YXNrLmdldCgpKTsKICAgICB9KTsKIH0K
QEAgLTM3NDQsNyArMzc1MCwxMCBAQCBzdGF0aWMgdm9pZCByZXNvdXJjZXNTdHJlYW1SZWFkQ2Fs
bGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZwogICAgIFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ190YXNrX2dldF9zb3VyY2Vfb2Jq
ZWN0KHRhc2suZ2V0KCkpKTsKICAgICBncG9pbnRlciBvdXRwdXRTdHJlYW1EYXRhID0gZ19tZW1v
cnlfb3V0cHV0X3N0cmVhbV9nZXRfZGF0YShHX01FTU9SWV9PVVRQVVRfU1RSRUFNKG9iamVjdCkp
OwogICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFN0cmluZzo6
ZnJvbVVURjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBnY2hhcio+KG91dHB1dFN0cmVhbURhdGEp
KSwgdHJ1ZSwKLSAgICAgICAgW3Rhc2tdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJp
YWxpemVkU2NyaXB0VmFsdWUsIGJvb2wsIGNvbnN0IEV4Y2VwdGlvbkRldGFpbHMmIGV4Y2VwdGlv
bkRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgICAgICBbdGFza10o
QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9u
YWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9y
KSB7CisgICAgICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGV4Y2VwdGlvbkRldGFpbHM7CisgICAg
ICAgICAgICBpZiAoZGV0YWlscykKKyAgICAgICAgICAgICAgICBleGNlcHRpb25EZXRhaWxzID0g
KmRldGFpbHM7CiAgICAgICAgICAgICB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdENhbGxiYWNr
KHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgZXhjZXB0aW9uRGV0YWlscywgdGFzay5nZXQoKSk7CiAg
ICAgICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggZTNiNDUyMzk5NzkzYTZiMWQ2NzQ2Y2Y5YmY0NDg4MzQ1OGZlYWI3Zi4uMmEzZjE5NjYzNTgx
ODExOWI1MzMxMWMwYzgzNzVlZTE4YzQxYzI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC0zODQ1LDE4ICszODQ1LDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCkKICAgICAgICAgbGF1bmNoUHJvY2Vz
cyh7IH0sIFByb2Nlc3NMYXVuY2hSZWFzb246OkluaXRpYWxQcm9jZXNzKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIHNjcmlw
dCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IEV4Y2VwdGlvbkRldGFp
bHMmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQ
YWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgcnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lU2NyaXB0V29ybGQoc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6Om51
bGxvcHQsIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3Jp
cHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGRO
YW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBib29s
IGhhZEV4Y2VwdGlvbiwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VV
c2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25E
ZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAg
ICAvLyBGb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0eSBzdXBwb3J0IHJ1bm5pbmcgc2NyaXB0IGlu
IGEgV2ViVmlldyB3aGljaCBoYXMgbm90IGRvbmUgYW55IGxvYWRzIHlldHMuCiAgICAgbGF1bmNo
SW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0ciwgZmFsc2UsIHsgfSwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CisgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24obnVs
bHB0ciwgeyB9LCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMzg2NCw3ICszODY0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib28K
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3Jp
cHRXb3JsZChzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCkp
OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWUoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1
cmUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wg
aGFkRXhjZXB0aW9uLCBjb25zdCBFeGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0
SW5GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJv
b2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlKiwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKG1haW5GcmFtZSgpLT5mcmFt
ZUlEKCkgIT0gZnJhbWVJRCk7CiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lIl9zKSk7CkBA
IC02Nzg3LDcgKzY3ODcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW52YWxpZGF0ZVN0cmluZ0Nh
bGxiYWNrKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgp
OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBF
eGNlcHRpb25EZXRhaWxzJiBkZXRhaWxzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdl
YlBhZ2VQcm94eTo6c2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IGRhdGFSZWZlcmVuY2UsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFr
ZTxTY3JpcHRWYWx1ZUNhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKSB7
CkBAIC02Nzk2LDcgKzY3OTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2NyaXB0VmFsdWVDYWxs
YmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsCiAgICAgfQogCiAg
ICAgaWYgKGRhdGFSZWZlcmVuY2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNhbGxiYWNrLT5wZXJm
b3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUobnVsbHB0ciwgaGFkRXhjZXB0aW9uLCBkZXRhaWxz
KTsKKyAgICAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShudWxs
cHRyLCBkZXRhaWxzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjgwNCw3ICs2ODA0
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNjcmlwdFZhbHVlQ2FsbGJhY2soY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLAogICAgIGRhdGEucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShkYXRhUmVmZXJlbmNlLnNpemUoKSk7CiAgICAgZGF0YS5hcHBlbmQoZGF0YVJlZmVyZW5j
ZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKIAotICAgIGNhbGxiYWNrLT5wZXJmb3Jt
Q2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0
KFdURk1vdmUoZGF0YSkpLnB0cigpLCBoYWRFeGNlcHRpb24sIGRldGFpbHMpOworICAgIGNhbGxi
YWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmFkb3B0KFdURk1vdmUoZGF0YSkpLnB0cigpLCBkZXRhaWxzKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmNvbXB1dGVkUGFnZXNDYWxsYmFjayhjb25zdCBWZWN0b3I8SW50UmVjdD4m
IHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgY29uc3QgRmxv
YXRCb3hFeHRlbnQmIGNvbXB1dGVkUGFnZU1hcmdpbiwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBhZTM4NTIyMjFkNGE1MjQz
NTUyYmEwMjNmMmY0OGI5NGVmN2I5OGFkLi4wMjc0ZDdjZTJmNDM2ODE1NGNjYjY3OTI1Y2QwZjlk
YTQzYzI5Y2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNzUs
NiArNzUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVu
dFRyYWNraW5nUmVnaW9ucy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uRGV0YWlscy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udEF0dHJpYnV0ZXMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ZyYW1lTG9hZGVyVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPiAvLyBG
SVhNRTogTW92ZSBMYXlvdXRWaWV3cG9ydENvbnN0cmFpbnQgdG8gaXRzIG93biBmaWxlIGFuZCBz
dG9wIGluY2x1ZGluZyB0aGlzLgpAQCAtMzM1LDcgKzMzNiw3IEBAIHR5cGVkZWYgR2VuZXJpY0Nh
bGxiYWNrPEFQSTo6RGF0YSo+IERhdGFDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNr
PHVpbnQ2NF90PiBVbnNpZ25lZENhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8RWRp
dGluZ1JhbmdlPiBFZGl0aW5nUmFuZ2VDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNr
PGNvbnN0IFN0cmluZyY+IFN0cmluZ0NhbGxiYWNrOwotdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8
QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBib29sLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRp
b25EZXRhaWxzJj4gU2NyaXB0VmFsdWVDYWxsYmFjazsKK3R5cGVkZWYgR2VuZXJpY0NhbGxiYWNr
PEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9u
RGV0YWlscz4+IFNjcmlwdFZhbHVlQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxj
b25zdCBXZWJDb3JlOjpGb250QXR0cmlidXRlcyY+IEZvbnRBdHRyaWJ1dGVzQ2FsbGJhY2s7CiB0
eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmPiBTZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxs
YmFjazxib29sPiBCb29sQ2FsbGJhY2s7CkBAIC0xMDYwLDEwICsxMDYxLDEwIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoRnVuY3Rpb248dm9pZCAoQVBJ
OjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0U291cmNlRm9y
RnJhbWUoV2ViRnJhbWVQcm94eSosIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUo
V2ViRnJhbWVQcm94eSosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJp
bmcmLCBib29sLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
KiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKLSAgICB2b2lkIHJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYsIGJvb2wsIGNvbnN0
IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IFdlYkNvcmU6OkV4
Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9u
KTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmLCBib29s
LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9u
YWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrRnVuY3Rpb24pOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0
V29ybGQoY29uc3QgU3RyaW5nJiwgYm9vbCwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGRO
YW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRp
b25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYg
Y2FsbGJhY2tGdW5jdGlvbik7CiAgICAgLy8gRm9yIHN1YiBmcmFtZXMuCi0gICAgdm9pZCBydW5K
YXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
c2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpF
eGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlv
bik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVu
Y3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6
OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKTsKICAgICB2b2lkIGZvcmNlUmVwYWludChSZWZQdHI8Vm9pZENhbGxiYWNrPiYmKTsKIAog
ICAgIGZsb2F0IGhlYWRlckhlaWdodChXZWJGcmFtZVByb3h5Jik7CkBAIC0xOTQzLDcgKzE5NDQs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgYm9vbENhbGxiYWNrKGJvb2wgcmVzdWx0LCBDYWxsYmFj
a0lEKTsKICAgICB2b2lkIHN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQp
OwogICAgIHZvaWQgaW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKENhbGxiYWNrSUQpOwotICAgIHZv
aWQgc2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBib29sIGhh
ZEV4Y2VwdGlvbiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNrSUQp
OworICAgIHZvaWQgc2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
LCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tJRCk7CiAgICAg
dm9pZCBjb21wdXRlZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+
JiwgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgY29uc3QgV2ViQ29yZTo6Rmxv
YXRCb3hFeHRlbnQmIGNvbXB1dGVkUGFnZU1hcmdpbiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCB2
YWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBib29sLCBpbnQsIENhbGxiYWNr
SUQpOwogICAgIHZvaWQgdW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCwgQ2FsbGJhY2tJRCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5k
ZXggMGM2NTFlNjg1YjI5NzlmNGUzNmU5YzhhNTg2NDE2ZDY3MWJkZmZmNS4uNGRlZjVkYzAxZGI0
ZDQyOWZiYjdkNzE2OTM4YTExMTcwZDllYTIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTY5LDcgKzE2OSw3IEBAIG1lc3Nh
Z2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgU3RyaW5nQ2FsbGJhY2soU3RyaW5nIHJlc3VsdFN0
cmluZywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgQm9vbENhbGxiYWNrKGJv
b2wgcmVzdWx0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBJbnZhbGlkYXRl
U3RyaW5nQ2FsbGJhY2soV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgU2NyaXB0
VmFsdWVDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwgYm9vbCBoYWRFeGNl
cHRpb24sIHN0cnVjdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzIGRldGFpbHMsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFNjcmlwdFZhbHVlQ2FsbGJhY2soSVBDOjpEYXRh
UmVmZXJlbmNlIHJlc3VsdERhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+
IGRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIENvbXB1dGVkUGFn
ZXNDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gcGFnZVJlY3RzLCBkb3VibGUgdG90
YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBXZWJDb3JlOjpSZWN0RWRnZXM8ZmxvYXQ+IGNvbXB1
dGVkUGFnZU1hcmdpbiwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgVmFsaWRh
dGVDb21tYW5kQ2FsbGJhY2soU3RyaW5nIGNvbW1hbmQsIGJvb2wgaXNFbmFibGVkLCBpbnQzMl90
IHN0YXRlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBFZGl0aW5nUmFuZ2VD
YWxsYmFjayhzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcAppbmRleCA4OGUxM2FkODJhZGNlYzRmYmVlNjg1ZjJjN2JlNDU5OGY4ZDRj
YmJmLi4zZWEwMDZiM2NlMzhlMzg5NDFmZGJkNTg2NzNjZDgxYTY4MmMyNTMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTI1Myw3
ICsxMjUzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtSmF2YVNjcmlwdFVSTFJlcXVlc3Qo
VVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICAvLyBFdmFsdWF0ZSB0aGUgSmF2YVNjcmlwdCBjb2Rl
LiBOb3RlIHRoYXQgcnVubmluZyBKYXZhU2NyaXB0IGhlcmUgY291bGQgY2F1c2UgdGhlIHBsdWct
aW4gdG8gYmUgZGVzdHJveWVkLCBzbyB3ZQogICAgIC8vIGdyYWIgcmVmZXJlbmNlcyB0byB0aGUg
cGx1Zy1pbiBoZXJlLgogICAgIFJlZlB0cjxQbHVnaW4+IHBsdWdpbiA9IG1fcGx1Z2luOwotICAg
IGF1dG8gcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoanNTdHJpbmcsIHJl
cXVlc3QtPmFsbG93UG9wdXBzKCkpOworICAgIGF1dG8gcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgp
LmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihqc1N0cmluZywgcmVxdWVzdC0+YWxsb3dQ
b3B1cHMoKSk7CiAKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yRnJvbnRlbmRB
UElEaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAKaW5kZXggOTA4ZTM5YWZkYjBjODg5Y2Zl
NTY1MmIzOWFkYzQ3MGMzYTA5YTlhMi4uYzE4OWU5ODI1YWQ0OTQ3MGVkNjI0MzVlODZkNTlkZjYw
ZjM4YWU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwCkBA
IC05OSw3ICs5OSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpl
dmFsdWF0ZU9yUXVldWVFeHByZXNzaW9uKGNvbnN0IFN0cmluZyYKIAogICAgIEFTU0VSVChtX3F1
ZXVlLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKCFtX3BhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1l
KCkuc2NyaXB0KCkuaXNQYXVzZWQoKSk7Ci0gICAgbV9wYWdlLmNvcmVQYWdlKCktPm1haW5GcmFt
ZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoZXhwcmVzc2lvbik7CisgICAgbV9wYWdlLmNvcmVQ
YWdlKCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlv
bihleHByZXNzaW9uKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNo
ZXI6OmV2YWx1YXRlUXVldWVkRXhwcmVzc2lvbnMoKQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQg
V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpldmFsdWF0ZVF1ZXVlZEV4cHJlc3Np
b25zKCkKIAogICAgIGZvciAoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uIDogbV9xdWV1ZSkgewog
ICAgICAgICBBU1NFUlQoIW1fcGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5p
c1BhdXNlZCgpKTsKLSAgICAgICAgbV9wYWdlLmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnNjcmlw
dCgpLmV4ZWN1dGVTY3JpcHQoZXhwcmVzc2lvbik7CisgICAgICAgIG1fcGFnZS5jb3JlUGFnZSgp
LT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oZXhw
cmVzc2lvbik7CiAgICAgfQogCiAgICAgbV9xdWV1ZS5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA3MzVmZWE0ZWUxM2JlNDI1YzIz
NGJlOTIxMjBmZTllN2JjYTJkNWM3Li4xMjQ3MDJjZTVlODkzMDNiY2I2MzExZWExNWNmNDdkMDEy
ZTM3ODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtMzM1MywyMyArMzM1MywyNSBAQCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2Vi
RnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZQogICAgIC8v
IE5PVEU6IFdlIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aGVuIHJ1bm5pbmcgc2NyaXB0cyB0aGF0IHRo
ZSBvYmplY3RzIHdlIGRlcGVuZCBvbiBkb24ndAogICAgIC8vIGRpc2FwcGVhciBkdXJpbmcgc2Ny
aXB0IGV4ZWN1dGlvbi4KIAotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlh
bGl6ZWRSZXN1bHRWYWx1ZTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhjb21tb25WTSgpKTsKLSAg
ICBib29sIGhhZEV4Y2VwdGlvbiA9IHRydWU7Ci0gICAgRXhjZXB0aW9uRGV0YWlscyBkZXRhaWxz
OworICAgIFZhbHVlQW5kRXhjZXB0aW9uIHJlc3VsdDsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBzZXJpYWxpemVkUmVzdWx0VmFsdWU7CisKICAgICBhdXRvKiB3b3JsZCA9IHdv
cmxkTmFtZSA/IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmZpbmQod29ybGROYW1lLnZhbHVl
KCkpIDogJkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCk7CiAgICAgaWYg
KGZyYW1lICYmIGZyYW1lLT5jb3JlRnJhbWUoKSAmJiB3b3JsZCkgewotICAgICAgICBpZiAoSlNW
YWx1ZSByZXN1bHRWYWx1ZSA9IGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZXhlY3V0ZVVz
ZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgpLCBzY3JpcHQsIGZvcmNlVXNl
ckdlc3R1cmUsICZkZXRhaWxzKSkgewotICAgICAgICAgICAgaGFkRXhjZXB0aW9uID0gZmFsc2U7
CisgICAgICAgIHJlc3VsdCA9IGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZXhlY3V0ZVVz
ZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgpLCBzY3JpcHQsIGZvcmNlVXNl
ckdlc3R1cmUpOworICAgICAgICBpZiAocmVzdWx0LmZpcnN0KSB7CisgICAgICAgICAgICBBU1NF
UlQoIXJlc3VsdC5zZWNvbmQpOwogICAgICAgICAgICAgc2VyaWFsaXplZFJlc3VsdFZhbHVlID0g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZnJhbWUtPmpzQ29udGV4dEZvcldvcmxkKHdv
cmxkKSwKLSAgICAgICAgICAgICAgICB0b1JlZihmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgp
Lmdsb2JhbE9iamVjdCh3b3JsZC0+Y29yZVdvcmxkKCkpLCByZXN1bHRWYWx1ZSksIG51bGxwdHIp
OworICAgICAgICAgICAgICAgIHRvUmVmKGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZ2xv
YmFsT2JqZWN0KHdvcmxkLT5jb3JlV29ybGQoKSksIHJlc3VsdC5maXJzdCksIG51bGxwdHIpOwog
ICAgICAgICB9CiAgICAgfQogCiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7
CiAgICAgaWYgKHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSkKICAgICAgICAgZGF0YVJlZmVyZW5jZSA9
IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0YSgpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBoYWRFeGNlcHRpb24s
IGRldGFpbHMsIGNhbGxiYWNrSUQpKTsKKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6U2NyaXB0VmFsdWVDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCByZXN1bHQuc2Vjb25kLCBjYWxs
YmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2Ny
aXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29u
c3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQubW0KaW5kZXggOTQ3YmZjNTM0MmNiY2FjMDlhYWFmNTEyY2NkYjZk
ZmU5Y2IxY2E0MS4uZWE1MDc4ZWQxOGY1NTA1MmRmMmU0MjgxM2UyYTZmNzA4NTVjZTdjYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5tbQpAQCAtMzc5LDcgKzM3OSw3IEBAIHZvaWQgV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0
IFN0cmluZyYKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBbY29udGVudENvcHkgd3JpdGVU
b1VSTDphY3R1YWxVUkwgYXRvbWljYWxseTpZRVMgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmcgZXJyb3I6TlVMTF07CiAKLSAgICAgICAgY29yZShbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xs
ZXIgZnJvbnRlbmRXZWJWaWV3XSktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQo
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJbnNwZWN0b3JGcm9udGVuZEFQSS5zYXZlZFVS
TChcIiVAXCIpIiwgYWN0dWFsVVJMLmFic29sdXRlU3RyaW5nXSk7CisgICAgICAgIGNvcmUoW21f
ZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyIGZyb250ZW5kV2ViVmlld10pLT5tYWluRnJhbWUoKS5z
Y3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oW05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCJJbnNwZWN0b3JGcm9udGVuZEFQSS5zYXZlZFVSTChcIiVAXCIpIiwgYWN0dWFs
VVJMLmFic29sdXRlU3RyaW5nXSk7CiAgICAgfTsKIAogICAgIGlmICghZm9yY2VTYXZlRGlhbG9n
KSB7CkBAIC00MjUsNyArNDI1LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
YXBwZW5kKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcKICAgICBbaGFu
ZGxlIHdyaXRlRGF0YTpbY29udGVudCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNv
ZGluZ11dOwogICAgIFtoYW5kbGUgY2xvc2VGaWxlXTsKIAotICAgIGNvcmUoW21fZnJvbnRlbmRX
aW5kb3dDb250cm9sbGVyIGZyb250ZW5kV2ViVmlld10pLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5l
eGVjdXRlU2NyaXB0KFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRl
bmRBUEkuYXBwZW5kZWRUb1VSTChcIiVAXCIpIiwgW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ11d
KTsKKyAgICBjb3JlKFttX2Zyb250ZW5kV2luZG93Q29udHJvbGxlciBmcm9udGVuZFdlYlZpZXdd
KS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKFtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuYXBwZW5kZWRU
b1VSTChcIiVAXCIpIiwgW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ11dKTsKIH0KIAogLy8gTUFS
SzogLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXgg
MThkM2Q5ZWMxNGQ4YzY5NWQwM2Y5M2MzZGQyMDE2YWQ0MDk0YTQ1OC4uMDViNTY5MzA0MzY0YjQ5
Njk3MWQ4OWRkOTdmZjhkZTJjZjQ1NjcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC03MDAsNyArNzAwLDcgQEAgLSAoTlNTdHJpbmcgKilfc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGZv
cmNlVXMKICAgICBKU0M6OkpTTG9ja0hvbGRlciBqc2NMb2NrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogI2VuZGlmCiAKLSAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gX3ByaXZhdGUtPmNvcmVGcmFt
ZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChzdHJpbmcsIGZvcmNlVXNlckdlc3R1cmUpOworICAg
IEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zY3JpcHQoKS5leGVj
dXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oc3RyaW5nLCBmb3JjZVVzZXJHZXN0dXJlKTsKIAog
ICAgIGlmICghX3ByaXZhdGUtPmNvcmVGcmFtZSkgLy8gSW4gY2FzZSB0aGUgc2NyaXB0IHJlbW92
ZWQgb3VyIGZyYW1lIGZyb20gdGhlIHBhZ2UuCiAgICAgICAgIHJldHVybiBAIiI7CkBAIC0yMDk2
LDcgKzIwOTYsNyBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
RnJvbVN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgd2l0aEdsbwogICAgIEFTU0VSVChmcmFtZS0+
ZG9jdW1lbnQoKSk7CiAgICAgUmV0YWluUHRyPFdlYkZyYW1lPiB3ZWJGcmFtZShraXQoZnJhbWUp
KTsgLy8gUnVubmluZyBhcmJpdHJhcnkgSmF2YVNjcmlwdCBjYW4gZGVzdHJveSB0aGUgZnJhbWUu
CiAKLSAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVVc2Vy
QWdlbnRTY3JpcHRJbldvcmxkKCpjb3JlKHdvcmxkKSwgc3RyaW5nLCB0cnVlKTsKKyAgICBKU0M6
OkpTVmFsdWUgcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJ
bldvcmxkKCpjb3JlKHdvcmxkKSwgc3RyaW5nLCB0cnVlKS5maXJzdDsKIAogICAgIGlmICghd2Vi
RnJhbWUtPl9wcml2YXRlLT5jb3JlRnJhbWUpIC8vIEluIGNhc2UgdGhlIHNjcmlwdCByZW1vdmVk
IG91ciBmcmFtZSBmcm9tIHRoZSBwYWdlLgogICAgICAgICByZXR1cm4gQCIiOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDQ3YWFlMzI4ZGJjNmFjZmJl
YWJiM2FlYzZkMjc4M2NiNGY1OWYwNzEuLjk2MWUwNWNmMWMyMjlkZTExMDQ2YjdjNGZiODM0ZjUz
MzliYjgyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
QEAgLTc5MDgsNyArNzkwOCw3IEBAIC0gKE5TQXBwbGVFdmVudERlc2NyaXB0b3IgKilhZURlc2NC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzooTlNTdHJpbmcgKilzCiAgICAgICAgIHJl
dHVybiBuaWw7CiAgICAgaWYgKCFjb3JlRnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVy
biBuaWw7Ci0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGNvcmVGcmFtZS0+c2NyaXB0KCkuZXhl
Y3V0ZVNjcmlwdChzY3JpcHQsIHRydWUpOworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBjb3Jl
RnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihzY3JpcHQsIHRy
dWUpOwogICAgIGlmICghcmVzdWx0KSAvLyBGSVhNRTogcGFzcyBlcnJvcnMKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhjb3JlRnJhbWUtPnNjcmlwdCgpLmds
b2JhbE9iamVjdChXZWJDb3JlOjptYWluVGhyZWFkTm9ybWFsV29ybGQoKSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZTVlZjYzYjRj
ZDg2NzE3YjM2MGIwOTljODYyZTI3YTYzNTExNTA0My4uODE2MGRhMTRhYzAwOTM5NjgwYzIyZGVk
YzJhMjVkM2MzYTZlMzBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCkBAIC00MzksNyArNDM5LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJm
b3JtUmVxdWVzdChQbHVnaW5SZXF1ZXN0KiByZXF1ZXN0KQogICAgIAogICAgIC8vIEV4ZWN1dGlu
ZyBhIHNjcmlwdCBjYW4gY2F1c2UgdGhlIHBsdWdpbiB2aWV3IHRvIGJlIGRlc3Ryb3llZCwgc28g
d2Uga2VlcCBhIHJlZmVyZW5jZSB0byBpdC4KICAgICBSZWZQdHI8UGx1Z2luVmlldz4gcHJvdGVj
dG9yKHRoaXMpOwotICAgIGF1dG8gcmVzdWx0ID0gbV9wYXJlbnRGcmFtZS0+c2NyaXB0KCkuZXhl
Y3V0ZVNjcmlwdChqc1N0cmluZywgcmVxdWVzdC0+c2hvdWxkQWxsb3dQb3B1cHMoKSk7CisgICAg
YXV0byByZXN1bHQgPSBtX3BhcmVudEZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3Jp
bmdFeGNlcHRpb24oanNTdHJpbmcsIHJlcXVlc3QtPnNob3VsZEFsbG93UG9wdXBzKCkpOwogCiAg
ICAgaWYgKHRhcmdldEZyYW1lTmFtZS5pc051bGwoKSkgewogICAgICAgICBDU3RyaW5nIGNzdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggNmVmYWU4ZjYyMjk4NDljYTFm
NTk2YjczNTVjZWVmNDNjZmQ2OTBhOC4uYzc3OGUyMmI3MGRjZjE4NTUyMmNhNmUyMDliODcwOTE5
NWI1MTQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAtMjA1NSw3ICsy
MDU1LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdElu
U2NyaXB0V29ybGQoSVdlYlNjcmlwdFdvcmxkKiBpV28KICAgICAvLyBHZXQgdGhlIGZyYW1lIGZy
b21lIHRoZSBnbG9iYWwgb2JqZWN0IHdlJ3ZlIHNldHRsZWQgb24uCiAgICAgRnJhbWUqIGZyYW1l
ID0gYW55V29ybGRHbG9iYWxPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpOwogICAgIEFTU0VSVChm
cmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCku
ZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQtPndvcmxkKCksIHN0cmluZywgdHJ1ZSk7CisgICAg
SlNWYWx1ZSByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25v
cmluZ0V4Y2VwdGlvbih3b3JsZC0+d29ybGQoKSwgc3RyaW5nLCB0cnVlKTsKIAogICAgIGlmICgh
ZnJhbWUpIC8vIEluIGNhc2UgdGhlIHNjcmlwdCByZW1vdmVkIG91ciBmcmFtZSBmcm9tIHRoZSBw
YWdlLgogICAgICAgICByZXR1cm4gU19PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAK
aW5kZXggYTA0NDhiYjAxM2VkZmI0MzM1ZmJjOWFiYzhhN2UzMDgwNzdmMDA0My4uZTcyZWE0M2Vk
Yjc5YzhhMDIxY2M2ZGZjMThhOTlkNWJjMDhlM2ZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Vmlldy5jcHAKQEAgLTM2NjMsNyArMzY2Myw3IEBAIEhSRVNVTFQgV2ViVmlldzo6c3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmcoX0luXyBCU1RSIHNjcmlwdCwgLy8gYXNzCiAg
ICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKLSAgICBh
dXRvIHNjcmlwdEV4ZWN1dGlvblJlc3VsdCA9IGNvcmVGcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNj
cmlwdChXVEY6OlN0cmluZyhzY3JpcHQpLCB0cnVlKTsKKyAgICBhdXRvIHNjcmlwdEV4ZWN1dGlv
blJlc3VsdCA9IGNvcmVGcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0
aW9uKFdURjo6U3RyaW5nKHNjcmlwdCksIHRydWUpOwogICAgIGlmICghc2NyaXB0RXhlY3V0aW9u
UmVzdWx0KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogICAgIGVsc2UgaWYgKHNjcmlwdEV4ZWN1
dGlvblJlc3VsdC5pc1N0cmluZygpKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385524</attachid>
            <date>2019-12-12 12:20:44 -0800</date>
            <delta_ts>2019-12-12 12:25:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205151-20191212122043.patch</filename>
            <type>text/plain</type>
            <size>52294</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjU5MGYyYWFjZjNmZTJj
NWE4ZDlkYWUwZjFmOGM4NDY0YTY1MGE3YS4uMzgzYTYzMGViMmM5YmNmOTI2NTBiNDgyZDM2Mzg3
NGFiY2RiN2ZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE5LTEyLTEyICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRD
b250cm9sbGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoUmVm
YWN0b3IsIG5vIGJlaGF2aW9yIGNoYW5nZSkuCisKKyAgICAgICAgVGhlcmUncyBzbyBtYW55IEV4
Y2VwdGlvbkRldGFpbHMqIG51bGwgcG9pbnRlcnMgYmVpbmcgcGFzc2VkIGFyb3VuZCBpbiB0aGUg
U2NyaXB0Q29udHJvbGxlcgorICAgICAgICBmYW1pbHkgb2YgZnVuY3Rpb25zLgorCisgICAgICAg
IExldCdzIG1ha2UgaXQgYSBsaXR0bGUgbW9yZSBleHBsaWNpdCB3aGljaCBjYWxsZXJzIGdldCBl
eGNlcHRpb25zIGFuZCB3aGljaCBkb24ndC4KKworICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9R
dWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlF1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50OjplbnN1cmVSZXBsYWNlbWVudFNjcmlwdEluamVjdGVkKToKKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUpOgorCisgICAgICAgICogYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVy
OjpldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJ
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2Vy
QWdlbnRTY3JpcHRJbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6
OmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQpOiBEZWxldGVkLgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKworICAgICAgICAqIGNvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9jZXNzQ29udGVudFJ1
bGVMaXN0c0ZvckxvYWQpOgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjplbnN1cmVQbHVnSW5zSW5qZWN0ZWRTY3JpcHQpOgorCisgICAg
ICAgICogZG9tL1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxl
bWVudDo6ZXhlY3V0ZUNsYXNzaWNTY3JpcHQpOgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZU1l
ZGlhQ29udHJvbHNJbmplY3RlZFNjcmlwdCk6CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsOjpldmFsdWF0ZUFzQm9vbGVhbik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpldmFsdWF0ZU9uTG9hZCk6CisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZCk6
CisKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RmlsdGVyOjpkaWREZWNpZGUpOgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KToK
KworICAgICAgICAqIHhtbC9YTUxUcmVlVmlld2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TFRyZWVWaWV3ZXI6OnRyYW5zZm9ybURvY3VtZW50VG9UcmVlVmlldyk6CisKIDIwMTktMTItMTEg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBUcnlpbmcgdG8gc2V0
IHRvU3RyaW5nIC8gdmFsdWVPZiBvbiBhIGNyb3NzLW9yaWdpbiBMb2NhdGlvbiBvYmplY3Qgc2hv
dWxkIHRocm93IGEgU2VjdXJpdHlFcnJvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4ZDc2MmFkOWEzODY4MzQ5MjU4
YzAyYzk2MmY5NWZmOTNhZjI1NzM3Li5lNzIwYmY3ODUzMzI0MzJmY2U5ZjNkMjQ1YjkxNjZiMTNk
NzFlYjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE5LTEyLTEyICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRDb250cm9s
bGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHA6CisgICAgICAgIChXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2Vi
VmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmZvcmNlVXNlckdlc3R1cmU6Y29tcGxldGlvbkhhbmRs
ZXI6XSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdv
cmxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFt
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBlcmZv
cm1KYXZhU2NyaXB0VVJMUmVxdWVzdCk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpldmFsdWF0ZU9yUXVldWVFeHByZXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVy
OjpldmFsdWF0ZVF1ZXVlZEV4cHJlc3Npb25zKToKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cnVuSmF2YVNjcmlw
dCk6CisKIDIwMTktMTItMTEgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCBhIG5pdCBhZnRlciByMjUzMzY2CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKaW5kZXggYjlkYWUyY2UxMGUwODcyZDM1MzA4YzhjOGNjNjBkZTIwZjI1Zjc3NS4u
ZTFmNzFhNWQ1NjkwYzM0NTI0ZGI2ODYyOWI4NDkwOTE1M2RlNzA3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTEyLTEyICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRDb250cm9sbGVy
J3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZCk6CisgICAgICAg
IAorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9z
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpmb3JjZVVzZXJHZXN0dXJlOl0p
OgorICAgICAgICAoLVtXZWJGcmFtZSBfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21T
dHJpbmc6d2l0aEdsb2JhbE9iamVjdDppblNjcmlwdFdvcmxkOl0pOgorCisgICAgICAgICogV2Vi
Vmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IGFlRGVzY0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHRGcm9tU3RyaW5nOl0pOgorCiAyMDE5LTEyLTA5ICBFcmljIENhcmxzb24gIDxlcmlj
LmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBtZWRpYSBpbiB0aGUgR1BVIHBy
b2Nlc3MgcHJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDQyMDE0ZDk5
ZDUwMjE2ZmE5MmQ0OWE1OTJhMDA2NzgxOTJkNjRkNDEuLjE0MWNjMzk0YWM4ZWIzZDQ2MDQ1NmM5
OWNiNmI5YzM0NmE3MjBjZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxOS0xMi0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVmYWN0b3IgU2NyaXB0Q29udHJvbGxlcidzIHByb2xpZmVyYXRpb24gb2YgRXhj
ZXB0aW9uRGV0YWlscyouCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDUxNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVn
aW5WaWV3OjpwZXJmb3JtUmVxdWVzdCk6CisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAg
ICAgIChXZWJGcmFtZTo6c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEluU2NyaXB0V29ybGQp
OgorCiAyMDE5LTEyLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgUGFnZUNvbmZpZ3VyYXRpb246OmRyYWdDbGllbnQgc2hvdWxkIHVzZSBhIHNtYXJ0IHBvaW50
ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQppbmRleCA5ODEyNmUwM2YzZTMyMTQ3NWY3NTExNDY0
MmFkOGQwYjI0OGJhZDIzLi4wM2QyMWRlN2Q1YWMwNjliMmNhYTNkOTYxMWI5OGY4NGEzNTE3ZjRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1
aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCkBAIC0xNTgsNyArMTU4LDcgQEAgYm9vbCBRdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6ZW5zdXJlUmVwbGFjZW1lbnRTY3JpcHRJbmplY3RlZCgp
CiAgICAgaWYgKHJlcGxhY2VtZW50RnVuY3Rpb24uaXNGdW5jdGlvbih2bSkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIAotICAgIHNjcmlwdENvbnRyb2xsZXIuZXZhbHVhdGVJbldvcmxkKFNj
cmlwdFNvdXJjZUNvZGUocXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRTY3JpcHQoKSksIHdvcmxk
KTsKKyAgICBzY3JpcHRDb250cm9sbGVyLmV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9u
KFNjcmlwdFNvdXJjZUNvZGUocXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRTY3JpcHQoKSksIHdv
cmxkKTsKICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAgICAgIExP
RyhQbHVnaW5zLCAiJXAgLSBFeGNlcHRpb24gd2hlbiBldmFsdWF0aW5nIFF1aWNrVGltZSBwbHVn
aW4gcmVwbGFjZW1lbnQgc2NyaXB0IiwgdGhpcyk7CiAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0
aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRB
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNw
cAppbmRleCAyOGNmNTY0NjZiY2EzYzljMmQyMDg4OTUxYzk4MDgyZmRiNTFhODU2Li44ZTRjN2Iz
ODEyNDRlNzc2YmRkNTgzNGFlNDE5MzZkN2RjYzYyMjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lk
IFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgaWYgKG1f
ZnVuY3Rpb24pCiAgICAgICAgIGV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dCh3aW5kb3csIHdpbmRv
dy0+cHJveHkoKSwgZG9jdW1lbnQpOwogICAgIGVsc2UKLSAgICAgICAgZnJhbWUtPnNjcmlwdCgp
LmV4ZWN1dGVTY3JpcHRJbldvcmxkKG1faXNvbGF0ZWRXb3JsZCwgbV9jb2RlKTsKKyAgICAgICAg
ZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24obV9p
c29sYXRlZFdvcmxkLCBtX2NvZGUpOwogfQogCiB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0
ZShXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGIxZmRlODUwMmU0ZGEw
YjBmNjlmNDgxNmQ0YTQxMmVjNGVlNGM3M2YuLjRjZWQ0YzNjMjRlYjA2MGEyNjY1NTkwNjg5ODJm
NDMxYzY2MTk4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuY3BwCkBAIC0xMDcsNyArMTA3LDEyIEBAIFNjcmlwdENvbnRyb2xsZXI6On5TY3Jp
cHRDb250cm9sbGVyKCkKICAgICB9CiB9CiAKLUpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZh
bHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQsIEV4Y2VwdGlvbkRldGFpbHMqIGV4Y2VwdGlvbkRldGFpbHMpCitKU0M6
OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRp
b24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCkKK3sKKyAgICByZXR1cm4gZXZhbHVhdGVJbldvcmxkKHNvdXJjZUNvZGUsIHdvcmxkKS5m
aXJzdDsKK30KKworVmFsdWVBbmRFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJ
bldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CiAKQEAgLTEz
NSwxOSArMTQwLDIxIEBAIEpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxk
KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPCiAKICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUpOwogCisgICAgT3B0aW9u
YWw8RXhjZXB0aW9uRGV0YWlscz4gb3B0aW9uYWxEZXRhaWxzOwogICAgIGlmIChldmFsdWF0aW9u
RXhjZXB0aW9uKSB7Ci0gICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmZ2xvYmFsT2JqZWN0LCBldmFs
dWF0aW9uRXhjZXB0aW9uLCBzb3VyY2VDb2RlLmNhY2hlZFNjcmlwdCgpLCBleGNlcHRpb25EZXRh
aWxzKTsKLSAgICAgICAgbV9zb3VyY2VVUkwgPSBzYXZlZFNvdXJjZVVSTDsKLSAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBkZXRhaWxzOworICAgICAgICByZXBv
cnRFeGNlcHRpb24oJmdsb2JhbE9iamVjdCwgZXZhbHVhdGlvbkV4Y2VwdGlvbiwgc291cmNlQ29k
ZS5jYWNoZWRTY3JpcHQoKSwgJmRldGFpbHMpOworICAgICAgICBvcHRpb25hbERldGFpbHMgPSBX
VEZNb3ZlKGRldGFpbHMpOworICAgICAgICByZXR1cm5WYWx1ZSA9IHsgfTsKICAgICB9CiAKICAg
ICBtX3NvdXJjZVVSTCA9IHNhdmVkU291cmNlVVJMOwotICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
KyAgICByZXR1cm4geyByZXR1cm5WYWx1ZSwgb3B0aW9uYWxEZXRhaWxzIH07CiB9CiAKLUpTVmFs
dWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291
cmNlQ29kZSwgRXhjZXB0aW9uRGV0YWlscyogZXhjZXB0aW9uRGV0YWlscykKK0pTQzo6SlNWYWx1
ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlw
dFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCiB7Ci0gICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChz
b3VyY2VDb2RlLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgZXhjZXB0aW9uRGV0YWlscyk7Cisg
ICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKHNvdXJjZUNvZGUsIG1h
aW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKIH0KIAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjpsb2Fk
TW9kdWxlU2NyaXB0SW5Xb3JsZChMb2FkYWJsZU1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0LCBj
b25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYgdG9w
TGV2ZWxGZXRjaFBhcmFtZXRlcnMsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCkBAIC01NDgsNyAr
NTU1LDEyIEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJTY3JpcHRPYmplY3RzKCkKICNl
bmRpZgogfQogCi1KU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxk
KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNl
VXNlckdlc3R1cmUsIEV4Y2VwdGlvbkRldGFpbHMqIGV4Y2VwdGlvbkRldGFpbHMpCitKU0M6OkpT
VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2Vw
dGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBm
b3JjZVVzZXJHZXN0dXJlKQoreworICAgIHJldHVybiBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3Js
ZCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlKS5maXJzdDsKK30KKworVmFsdWVBbmRFeGNlcHRp
b24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxk
JiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKIHsK
ICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGZvcmNlVXNlckdlc3R1
cmUgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlKSA6IFdURjo6bnVsbG9wdCk7CiAgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2Rl
KHNjcmlwdCwgVVJMKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpLCBUZXh0UG9zaXRpb24oKSwg
SlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIENhY2hlZFNjcmlwdEZldGNo
ZXI6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmNoYXJzZXQoKSkpOwpAQCAtNTU2LDE3ICs1
NjgsMTcgQEAgSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChE
T01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHIKICAgICBpZiAoIWNhbkV4ZWN1dGVTY3Jp
cHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNlZCgpKQogICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3b3JsZCwgZXhj
ZXB0aW9uRGV0YWlscyk7CisgICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3
b3JsZCk7CiB9CiAKLUpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNj
cmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQs
IGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgRXhjZXB0aW9uRGV0YWlscyogZXhjZXB0aW9uRGV0YWls
cykKK1ZhbHVlQW5kRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRT
Y3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0
LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiB7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqbV9mcmFt
ZS5kb2N1bWVudCgpOwogICAgIGlmICghc2hvdWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRzKGRvY3Vt
ZW50KSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGRvY3VtZW50LnNldEhhc0V2YWx1YXRl
ZFVzZXJBZ2VudFNjcmlwdHMoKTsKLSAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdEluV29ybGQod29y
bGQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgZXhjZXB0aW9uRGV0YWlscyk7CisgICAgcmV0
dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUp
OwogfQogCiBib29sIFNjcmlwdENvbnRyb2xsZXI6OnNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0
cyhEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CkBAIC01OTgsMTQgKzYxMCwxMCBAQCBib29sIFNj
cmlwdENvbnRyb2xsZXI6OmNhbkV4ZWN1dGVTY3JpcHRzKFJlYXNvbkZvckNhbGxpbmdDYW5FeGVj
dXRlU2NyaXB0cyByZWFzbwogICAgIHJldHVybiBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmFs
bG93U2NyaXB0KG1fZnJhbWUuc2V0dGluZ3MoKS5pc1NjcmlwdEVuYWJsZWQoKSk7CiB9CiAKLUpT
VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlw
dCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBFeGNlcHRpb25EZXRhaWxzKiBleGNlcHRpb25EZXRh
aWxzKQorSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJZ25vcmlu
Z0V4Y2VwdGlvbihjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQog
ewogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoZm9yY2VVc2VyR2Vz
dHVyZSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNl
ckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KTsKLSAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdChTY3Jp
cHRTb3VyY2VDb2RlKHNjcmlwdCwgVVJMKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpLCBUZXh0
UG9zaXRpb24oKSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIENhY2hl
ZFNjcmlwdEZldGNoZXI6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmNoYXJzZXQoKSkpLCBl
eGNlcHRpb25EZXRhaWxzKTsKLX0KIAotSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRl
U2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIEV4Y2VwdGlvbkRldGFp
bHMqIGV4Y2VwdGlvbkRldGFpbHMpCi17CiAgICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0cyhBYm91
dFRvRXhlY3V0ZVNjcmlwdCkgfHwgaXNQYXVzZWQoKSkKICAgICAgICAgcmV0dXJuIHsgfTsgLy8g
RklYTUU6IFdvdWxkIGpzTnVsbCBiZSBiZXR0ZXI/CiAKQEAgLTYxMyw3ICs2MjEsNyBAQCBKU1Zh
bHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYgc291cmNlQ29kZSwgRXhjZQogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjQ3NjMKICAgICBSZWY8RnJhbWU+IHByb3RlY3RvcihtX2ZyYW1lKTsgLy8g
U2NyaXB0IGV4ZWN1dGlvbiBjYW4gZGVzdHJveSB0aGUgZnJhbWUsIGFuZCB0aHVzIHRoZSBTY3Jp
cHRDb250cm9sbGVyLgogCi0gICAgcmV0dXJuIGV2YWx1YXRlKHNvdXJjZUNvZGUsIGV4Y2VwdGlv
bkRldGFpbHMpOworICAgIHJldHVybiBldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNv
dXJjZUNvZGUoc2NyaXB0LCBVUkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSksIFRleHRQb3Np
dGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgQ2FjaGVkU2Ny
aXB0RmV0Y2hlcjo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2hhcnNldCgpKSkpOwogfQog
CiBib29sIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29uc3QgVVJM
JiB1cmwsIFNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCBzaG91bGRSZXBsYWNl
RG9jdW1lbnRJZkphdmFTY3JpcHRVUkwpCkBAIC02MzIsNyArNjQwLDcgQEAgYm9vbCBTY3JpcHRD
b250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYgdXJsLCBTaG91bGRS
ZXBsYWNlRG9jdW0KICAgICBjb25zdCBpbnQgamF2YXNjcmlwdFNjaGVtZUxlbmd0aCA9IHNpemVv
ZigiamF2YXNjcmlwdDoiKSAtIDE7CiAKICAgICBTdHJpbmcgZGVjb2RlZFVSTCA9IGRlY29kZVVS
TEVzY2FwZVNlcXVlbmNlcyh1cmwuc3RyaW5nKCkpOwotICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0
ZVNjcmlwdChkZWNvZGVkVVJMLnN1YnN0cmluZyhqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoKSk7Cisg
ICAgYXV0byByZXN1bHQgPSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oZGVjb2RlZFVS
TC5zdWJzdHJpbmcoamF2YXNjcmlwdFNjaGVtZUxlbmd0aCkpOwogCiAgICAgLy8gSWYgZXhlY3V0
aW5nIHNjcmlwdCBjYXVzZWQgdGhpcyBmcmFtZSB0byBiZSByZW1vdmVkIGZyb20gdGhlIHBhZ2Us
IHdlCiAgICAgLy8gZG9uJ3Qgd2FudCB0byB0cnkgdG8gcmVwbGFjZSBpdHMgZG9jdW1lbnQhCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggMTMy
NzRhNWQxY2Y2ZDUyYjRhMjZlYzQ4ZGI1MDBhYmZmZTMzZWQ2Yi4uYjhiMjliMTg4YzhiOTIwOTk1
ZmFjNzFkYjFlODQwOTUyODYyODMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuaApAQCAtNzAsNiArNzAsOCBAQCBlbnVtIFJlYXNvbkZvckNhbGxp
bmdDYW5FeGVjdXRlU2NyaXB0cyB7CiAgICAgTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQKIH07CiAK
K3VzaW5nIFZhbHVlQW5kRXhjZXB0aW9uID0gc3RkOjpwYWlyPEpTQzo6SlNWYWx1ZSwgV1RGOjpP
cHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPj47CisKIGNsYXNzIFNjcmlwdENvbnRyb2xsZXIgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8U2NyaXB0Q29udHJvbGxlcj4gewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogCkBAIC04OCwxMCArOTAsMTAgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IHZvaWQgZ2V0QWxsV29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4mKTsKIAotICAg
IEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBFeGNl
cHRpb25EZXRhaWxzKiA9IG51bGxwdHIpOwotICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1
ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1
cmUgPSBmYWxzZSwgRXhjZXB0aW9uRGV0YWlscyogPSBudWxscHRyKTsKLSAgICBKU0M6OkpTVmFs
dWUgZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBz
Y3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlLCBFeGNlcHRpb25EZXRhaWxzKiA9
IG51bGxwdHIpOwotICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlVXNlckFn
ZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlLCBFeGNlcHRpb25EZXRhaWxzKiA9IG51bGxwdHIpOworICAg
IFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRp
b24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsK
KyAgICBKU0M6OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihE
T01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0
dXJlID0gZmFsc2UpOworICAgIFZhbHVlQW5kRXhjZXB0aW9uIGV4ZWN1dGVTY3JpcHRJbldvcmxk
KERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdl
c3R1cmUgPSBmYWxzZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgVmFsdWVBbmRFeGNlcHRpb24gZXhl
Y3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5n
JiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSk7CiAKICAgICBib29sIHNob3VsZEFsbG93
VXNlckFnZW50U2NyaXB0cyhEb2N1bWVudCYpIGNvbnN0OwogCkBAIC0xMDIsOCArMTA0LDkgQEAg
cHVibGljOgogICAgIC8vIERhcndpbiBpcyBhbiBleGNlcHRpb24gdG8gdGhpcyBydWxlOiBpdCBp
cyBPSyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSBhbnkgdGhyZWFkLCBldmVuIHJlZW50cmFu
dGx5LgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAotICAgIEpTQzo6
SlNWYWx1ZSBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRXhjZXB0aW9uRGV0YWls
cyogPSBudWxscHRyKTsKLSAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNj
cmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmLCBFeGNlcHRpb25EZXRhaWxzKiA9IG51
bGxwdHIpOworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKGNvbnN0
IFNjcmlwdFNvdXJjZUNvZGUmKTsKKyAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJbldvcmxkSWdu
b3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYp
OworICAgIFZhbHVlQW5kRXhjZXB0aW9uIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3Vy
Y2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7CiAKICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJ
bldvcmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBS
ZWY8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiYmLCBET01XcmFwcGVyV29ybGQmKTsKICAgICB2b2lk
IGxvYWRNb2R1bGVTY3JpcHQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcmIG1v
ZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFj
a2VuZC5jcHAKaW5kZXggYTc1NWZjYjkzY2ExMjIyMjhlNzJhNDU5NDhlZmI0MTA0MmNmMTVkNy4u
NTJmMzE5MmM1YjIwMDJmNTE4MzhhNzQ0OTI4N2I2ZWU4MGEzNTczZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgQ29udGVudFJ1bGVMaXN0UmVzdWx0cyBD
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50UnVsZUxpc3RzRm9yTG9hZCgK
ICAgICAgICAgICAgICAgICAmJiAoKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHVybC5o
b3N0KCksICJ3d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20iKSAmJiBlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZSh1cmwucGF0aCgpLCAiL2FuYWx5dGljcy5qcyIpKQogICAgICAgICAgICAgICAg
ICAgICB8fCAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodXJsLmhvc3QoKSwgInd3dy5n
b29nbGV0YWdtYW5hZ2VyLmNvbSIpICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHVy
bC5wYXRoKCksICIvZ3RtLmpzIikpKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBmcmFt
ZSA9IGN1cnJlbnREb2N1bWVudC0+ZnJhbWUoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUt
PnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUgeyAidHJ5IHsgd2luZG93LmRhdGFM
YXllci5oaWRlLmVuZCgpOyBjb25zb2xlLmxvZygnQ2FsbGVkIHdpbmRvdy5kYXRhTGF5ZXIuaGlk
ZS5lbmQoKSBpbiBmcmFtZSAnICsgZG9jdW1lbnQuVVJMICsgJyBiZWNhdXNlIHRoZSBjb250ZW50
IGJsb2NrZXIgYmxvY2tlZCB0aGUgbG9hZCBvZiB0aGUgaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5
dGljcy5jb20vYW5hbHl0aWNzLmpzIHNjcmlwdCcpOyB9IGNhdGNoIChlKSB7IH0iX3MgfSk7Cisg
ICAgICAgICAgICAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZUlnbm9yaW5nRXhjZXB0
aW9uKFNjcmlwdFNvdXJjZUNvZGUgeyAidHJ5IHsgd2luZG93LmRhdGFMYXllci5oaWRlLmVuZCgp
OyBjb25zb2xlLmxvZygnQ2FsbGVkIHdpbmRvdy5kYXRhTGF5ZXIuaGlkZS5lbmQoKSBpbiBmcmFt
ZSAnICsgZG9jdW1lbnQuVVJMICsgJyBiZWNhdXNlIHRoZSBjb250ZW50IGJsb2NrZXIgYmxvY2tl
ZCB0aGUgbG9hZCBvZiB0aGUgaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0
aWNzLmpzIHNjcmlwdCcpOyB9IGNhdGNoIChlKSB7IH0iX3MgfSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBmM2Y3ZjAzMmYyMGUx
YTVhM2YzYzhmMTNkMjI3MDk5ZjViODJiMWU5Li4xN2VkYzhiYzU4MmYzNjc0N2M3YmM0NGFiZTlk
ZDVhNGJmMGNiZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTcyMDEsNyArNzIwMSw3
IEBAIHZvaWQgRG9jdW1lbnQ6OmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdChET01XcmFwcGVy
V29ybGQmIHdvcmxkKQogICAgICAgICBqc1N0cmluZyA9IFN0cmluZyhwbHVnSW5zSmF2YVNjcmlw
dCwgc2l6ZW9mKHBsdWdJbnNKYXZhU2NyaXB0KSk7CiAKICAgICBzZXRIYXNFdmFsdWF0ZWRVc2Vy
QWdlbnRTY3JpcHRzKCk7Ci0gICAgc2NyaXB0Q29udHJvbGxlci5ldmFsdWF0ZUluV29ybGQoU2Ny
aXB0U291cmNlQ29kZShqc1N0cmluZyksIHdvcmxkKTsKKyAgICBzY3JpcHRDb250cm9sbGVyLmV2
YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUoanNTdHJpbmcp
LCB3b3JsZCk7CiAKICAgICBtX2hhc0luamVjdGVkUGx1Z0luc1NjcmlwdCA9IHRydWU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggZTBkOTY3YjQ1NzRiYjM1MzA4NWZi
Mzc3NjUwOTRjYzJmOGEzNTM4NS4uMTUxMTc1MTllZjkxMzQ2NzY3N2QyNTg2NTNjZDI3MjAxNzdl
ODA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMzg3LDcgKzM4Nyw3
IEBAIHZvaWQgU2NyaXB0RWxlbWVudDo6ZXhlY3V0ZUNsYXNzaWNTY3JpcHQoY29uc3QgU2NyaXB0
U291cmNlQ29kZSYgc291cmNlQ29kZSkKICAgICBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJ
bmNyZW1lbnRlciBpZ25vcmVEZXNjdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIobV9pc0V4
dGVybmFsU2NyaXB0ID8gJmRvY3VtZW50IDogbnVsbHB0cik7CiAgICAgQ3VycmVudFNjcmlwdElu
Y3JlbWVudGVyIGN1cnJlbnRTY3JpcHRJbmNyZW1lbnRlcihkb2N1bWVudCwgbV9lbGVtZW50KTsK
IAotICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZShzb3VyY2VDb2RlKTsKKyAgICBmcmFtZS0+
c2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihzb3VyY2VDb2RlKTsKIH0KIAogdm9p
ZCBTY3JpcHRFbGVtZW50OjpleGVjdXRlTW9kdWxlU2NyaXB0KExvYWRhYmxlTW9kdWxlU2NyaXB0
JiBsb2FkYWJsZU1vZHVsZVNjcmlwdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCmluZGV4IGViNWZmNTY3ZWQ4MTBkZmMxODUxMDY4MDMyOTNhMmQ1NjRjZTIzNDkuLjcz
MGI0ZTM4OWU3ODNmZTU2Njc1NWI4YWMzNjg4MTE5ZjA5NjkxNjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNzMxNyw3ICs3MzE3LDcgQEAgYm9vbCBIVE1M
TWVkaWFFbGVtZW50OjplbnN1cmVNZWRpYUNvbnRyb2xzSW5qZWN0ZWRTY3JpcHQoKQogI2Vsc2UK
ICAgICAgICAgVVJMIHNjcmlwdFVSTDsKICNlbmRpZgotICAgICAgICBzY3JpcHRDb250cm9sbGVy
LmV2YWx1YXRlSW5Xb3JsZChTY3JpcHRTb3VyY2VDb2RlKG1lZGlhQ29udHJvbHNTY3JpcHQsIFdU
Rk1vdmUoc2NyaXB0VVJMKSksIHdvcmxkKTsKKyAgICAgICAgc2NyaXB0Q29udHJvbGxlci5ldmFs
dWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKG1lZGlhQ29udHJv
bHNTY3JpcHQsIFdURk1vdmUoc2NyaXB0VVJMKSksIHdvcmxkKTsKICAgICAgICAgaWYgKFVOTElL
RUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRp
b24oKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAppbmRleCAx
YjNjODg3NmNjNjg3MzFiNWQ2MjhkZDJkZTJiOWQ2MDRmMmE0NWZiLi4wZDgzMTkyNTI3ODJkYTk1
YTcyZWQzNmNhNWYwNDhjN2NkOGM4NDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC00MjAsNyAr
NDIwLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpkaXNwYXRjaE1lc3Nh
Z2VBc3luYyhjb25zdCBTdHJpbmcmIG1lc3NhZ2VPYmoKIGJvb2wgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbDo6ZXZhbHVhdGVBc0Jvb2xlYW4oY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQog
ewogICAgIGF1dG8mIHN0YXRlID0gKm1haW5Xb3JsZEV4ZWNTdGF0ZSgmbV9mcm9udGVuZFBhZ2Ut
Pm1haW5GcmFtZSgpKTsKLSAgICByZXR1cm4gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnNj
cmlwdCgpLmV4ZWN1dGVTY3JpcHQoZXhwcmVzc2lvbikudG9XVEZTdHJpbmcoJnN0YXRlKSA9PSAi
dHJ1ZSI7CisgICAgcmV0dXJuIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5l
eGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oZXhwcmVzc2lvbikudG9XVEZTdHJpbmcoJnN0
YXRlKSA9PSAidHJ1ZSI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6
ZXZhbHVhdGVPbkxvYWQoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQpAQCAtNDMxLDcgKzQzMSw3
IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVhdGVPbkxvYWQoY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uKQogICAgIH0KIAogICAgIEpTQzo6U3VzcGVuZEV4Y2VwdGlv
blNjb3BlIHNjb3BlKCZtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnZtKCkp
OwotICAgIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5ldmFsdWF0ZShTY3Jp
cHRTb3VyY2VDb2RlKGV4cHJlc3Npb24pKTsKKyAgICBtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1l
KCkuc2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKGV4
cHJlc3Npb24pKTsKIH0KIAogUGFnZSogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6aW5z
cGVjdGVkUGFnZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggMDFlZGQwMDYwZGUzNjJjMWFiN2I3
MDI0NzVhZTgzODIyMjc5YTgwMC4uY2Y4OWY5ZWI1MDUyMzI2ZmNmOGNiZDI2ZDg1OTZjZjQ3MjRj
MjM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcApAQCAtNzczLDcgKzc3Myw3IEBAIHZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUmIGZyYW1lKQogICAgIGlm
IChtX2Jvb3RzdHJhcFNjcmlwdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZy
YW1lLnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUobV9ib290c3RyYXBTY3JpcHQs
IFVSTCB7IFVSTCgpLCAid2ViLWluc3BlY3RvcjovL2Jvb3RzdHJhcC5qcyJfcyB9KSk7CisgICAg
ZnJhbWUuc2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2Rl
KG1fYm9vdHN0cmFwU2NyaXB0LCBVUkwgeyBVUkwoKSwgIndlYi1pbnNwZWN0b3I6Ly9ib290c3Ry
YXAuanMiX3MgfSkpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkUGFpbnQoUmVu
ZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCBiNDk4YTIyNGIxOTBjNmNlODQ0ZWI5ZGQ3
ZWI5YjdhMTA1ZDc2ZGM1Li42ZWFmY2EzNGU4MWEzOTkyZGQxZmI4MGY5MDMyZWI5NmM4YjliNzc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMz
LDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUgc3RhdGUpCiAgICAgaWYg
KCF1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUpIHsKICAgICAg
ICAgdW5ibG9ja0hhbmRsZXIud3JhcFdpdGhEZWNpc2lvbkhhbmRsZXIoW3NjcmlwdENvbnRyb2xs
ZXIgPSBtYWtlV2Vha1B0cihmcmFtZS0+c2NyaXB0KCkpLCBzY3JpcHQgPSB1bmJsb2NrUmVxdWVz
dERlbmllZFNjcmlwdC5pc29sYXRlZENvcHkoKV0oYm9vbCB1bmJsb2NrZWQpIHsKICAgICAgICAg
ICAgIGlmICghdW5ibG9ja2VkICYmIHNjcmlwdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAg
c2NyaXB0Q29udHJvbGxlci0+ZXhlY3V0ZVNjcmlwdChzY3JpcHQpOworICAgICAgICAgICAgICAg
IHNjcmlwdENvbnRyb2xsZXItPmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihzY3JpcHQp
OwogICAgICAgICB9KTsKICAgICB9CiAgICAgbV9kb2N1bWVudExvYWRlci5mcmFtZUxvYWRlcigp
LT5jbGllbnQoKS5jb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdURk1vdmUodW5ibG9ja0hhbmRs
ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggMjJjYzFmZDE1YmMxN2NmZDg1NmU5MTRjMzhh
ODZiMGM0MmFjNzRiYy4uZTA4MzNkYzA4MzNmNTlhOWViMjYzNTA2MTMxY2RiYjk3YzlmOTIxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTYzNCw3ICs2MzQsNyBAQCB2b2lkIEZyYW1lOjppbmpl
Y3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgVXNl
clNjcmlwdAogCiAgICAgZG9jdW1lbnQtPnNldEFzUnVubmluZ1VzZXJTY3JpcHRzKCk7CiAgICAg
bG9hZGVyKCkuY2xpZW50KCkud2lsbEluamVjdFVzZXJTY3JpcHQod29ybGQpOwotICAgIG1fc2Ny
aXB0LT5ldmFsdWF0ZUluV29ybGQoU2NyaXB0U291cmNlQ29kZShzY3JpcHQuc291cmNlKCksIFVS
TChzY3JpcHQudXJsKCkpKSwgd29ybGQpOworICAgIG1fc2NyaXB0LT5ldmFsdWF0ZUluV29ybGRJ
Z25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdC5zb3VyY2UoKSwgVVJMKHNj
cmlwdC51cmwoKSkpLCB3b3JsZCk7CiB9CiAKIFJlbmRlclZpZXcqIEZyYW1lOjpjb250ZW50UmVu
ZGVyZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCmluZGV4IGZlMDFj
YzFmZjQ5MWMzNjdmY2FkOTdiZmQ0ZDZjNGU3MzBmNmJkYTguLmY5MGU0NDUyNGQ1ZGEzNzY2MmNj
MmRkNTVmNDIxZjI4OTc3YjQyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxU
cmVlVmlld2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAK
QEAgLTU2LDggKzU2LDggQEAgdm9pZCBYTUxUcmVlVmlld2VyOjp0cmFuc2Zvcm1Eb2N1bWVudFRv
VHJlZVZpZXcoKQogICAgIG1fZG9jdW1lbnQuc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJp
dHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpKTsK
IAogICAgIFN0cmluZyBzY3JpcHRTdHJpbmcgPSBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29w
eWluZyhYTUxWaWV3ZXJfanMsIHNpemVvZihYTUxWaWV3ZXJfanMpKTsKLSAgICBtX2RvY3VtZW50
LmZyYW1lKCktPnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0U3RyaW5n
KSk7Ci0gICAgbV9kb2N1bWVudC5mcmFtZSgpLT5zY3JpcHQoKS5ldmFsdWF0ZShTY3JpcHRTb3Vy
Y2VDb2RlKEF0b21TdHJpbmcoInByZXBhcmVXZWJLaXRYTUxWaWV3ZXIoJ1RoaXMgWE1MIGZpbGUg
ZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUgYW55IHN0eWxlIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQg
d2l0aCBpdC4gVGhlIGRvY3VtZW50IHRyZWUgaXMgc2hvd24gYmVsb3cuJyk7IikpKTsKKyAgICBt
X2RvY3VtZW50LmZyYW1lKCktPnNjcmlwdCgpLmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2Ny
aXB0U291cmNlQ29kZShzY3JpcHRTdHJpbmcpKTsKKyAgICBtX2RvY3VtZW50LmZyYW1lKCktPnNj
cmlwdCgpLmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29kZShBdG9tU3Ry
aW5nKCJwcmVwYXJlV2ViS2l0WE1MVmlld2VyKCdUaGlzIFhNTCBmaWxlIGRvZXMgbm90IGFwcGVh
ciB0byBoYXZlIGFueSBzdHlsZSBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggaXQuIFRoZSBk
b2N1bWVudCB0cmVlIGlzIHNob3duIGJlbG93LicpOyIpKSk7CiAKICAgICBTdHJpbmcgY3NzU3Ry
aW5nID0gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoWE1MVmlld2VyX2Nzcywgc2l6
ZW9mKFhNTFZpZXdlcl9jc3MpKTsKICAgICBhdXRvIHRleHQgPSBtX2RvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKGNzc1N0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cAppbmRleCA3MGVmYmZhM2U4N2EyYWJhY2M0NTE0NjQwZmRhM2Y3N2ViNjgwZTVmLi4wYzE1Zjhi
OTNjNzgwN2VmZDc0YmJlNDAwODI4NDQ0MWM1NmZhZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI0NzIsNyArMjQ3Miw3IEBAIHZvaWQgV0tQYWdlU2V0
UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNs
aWVudCkKIAogdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQYWdlUmVmIHBh
Z2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlUnVuSmF2
YVNjcmlwdEZ1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+cnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lKHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgdHJ1ZSwgW2Nv
bnRleHQsIGNhbGxiYWNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmV0dXJuVmFsdWUs
IGJvb2wsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVy
cm9yIGVycm9yKSB7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWUodG9JbXBsKHNjcmlwdFJlZiktPnN0cmluZygpLCB0cnVlLCBbY29udGV4dCwgY2FsbGJhY2td
KEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiByZXR1cm5WYWx1ZSwgT3B0aW9uYWw8V2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAg
ICAgY2FsbGJhY2sodG9BUEkocmV0dXJuVmFsdWUpLCAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpF
cnJvcjo6Tm9uZSkgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5wdHIoKSkgOiAwLCBjb250
ZXh0KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCmluZGV4IDMzNTRhYzZlZWNiNWE4ZDcxOThhZThhNThjYTI5OTQ0YzgzMGU1
MTAuLjE5NDJiMDI1NjFkZjE1OTgyY2EwYTExZDEwMGMzOTNjYjhiYTA0YmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTEyMiw3ICsx
MTIyLDcgQEAgLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3Jp
cHRTdHJpbmcgZm9yY2VVc2VyR2VzdHVyZTooQk9PTCkKIHsKICAgICBhdXRvIGhhbmRsZXIgPSBh
ZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSk7CiAKLSAgICBfcGFnZS0+cnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKGphdmFTY3JpcHRTdHJpbmcsIGZvcmNlVXNlckdlc3R1cmUsIFtoYW5k
bGVyXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBi
b29sIGhhZEV4Y2VwdGlvbiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyYgZGV0YWls
cywgV2ViS2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvciBlcnJvckNvZGUpIHsKKyAgICBf
cGFnZS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGphdmFTY3JpcHRTdHJpbmcsIGZvcmNlVXNl
ckdlc3R1cmUsIFtoYW5kbGVyXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxz
LCBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJhY2s6OkVycm9yIGVycm9yQ29kZSkgewogICAgICAg
ICBpZiAoIWhhbmRsZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTExNDUsMTggKzExNDUs
MTggQEAgLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRT
dHJpbmcgZm9yY2VVc2VyR2VzdHVyZTooQk9PTCkKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8g
cmF3SGFuZGxlciA9ICh2b2lkICheKShpZCwgTlNFcnJvciAqKSloYW5kbGVyLmdldCgpOwotICAg
ICAgICBpZiAoaGFkRXhjZXB0aW9uKSB7CisgICAgICAgIGlmIChkZXRhaWxzKSB7CiAgICAgICAg
ICAgICBBU1NFUlQoIXNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CiAKICAgICAgICAgICAgIFJldGFp
blB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiB1c2VySW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAKICAgICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmpl
Y3Q6bG9jYWxpemVkRGVzY3JpcHRpb25Gb3JFcnJvckNvZGUoV0tFcnJvckphdmFTY3JpcHRFeGNl
cHRpb25PY2N1cnJlZCkgZm9yS2V5Ok5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXldOwotICAgICAg
ICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihkZXRhaWxz
Lm1lc3NhZ2UpIGZvcktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTWVzc2FnZUVycm9yS2V5XTsK
LSAgICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QChkZXRhaWxzLmxpbmVOdW1iZXIpIGZv
cktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTGluZU51bWJlckVycm9yS2V5XTsKLSAgICAgICAg
ICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QChkZXRhaWxzLmNvbHVtbk51bWJlcikgZm9yS2V5Ol9X
S0phdmFTY3JpcHRFeGNlcHRpb25Db2x1bW5OdW1iZXJFcnJvcktleV07CisgICAgICAgICAgICBb
dXNlckluZm8gc2V0T2JqZWN0OnN0YXRpY19jYXN0PE5TU3RyaW5nICo+KGRldGFpbHMtPm1lc3Nh
Z2UpIGZvcktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTWVzc2FnZUVycm9yS2V5XTsKKyAgICAg
ICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QChkZXRhaWxzLT5saW5lTnVtYmVyKSBmb3JLZXk6
X1dLSmF2YVNjcmlwdEV4Y2VwdGlvbkxpbmVOdW1iZXJFcnJvcktleV07CisgICAgICAgICAgICBb
dXNlckluZm8gc2V0T2JqZWN0OkAoZGV0YWlscy0+Y29sdW1uTnVtYmVyKSBmb3JLZXk6X1dLSmF2
YVNjcmlwdEV4Y2VwdGlvbkNvbHVtbk51bWJlckVycm9yS2V5XTsKIAotICAgICAgICAgICAgaWYg
KCFkZXRhaWxzLnNvdXJjZVVSTC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgW3VzZXJJbmZv
IHNldE9iamVjdDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOmRldGFpbHMuc291cmNlVVJM
XSBmb3JLZXk6X1dLSmF2YVNjcmlwdEV4Y2VwdGlvblNvdXJjZVVSTEVycm9yS2V5XTsKKyAgICAg
ICAgICAgIGlmICghZGV0YWlscy0+c291cmNlVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAg
ICBbdXNlckluZm8gc2V0T2JqZWN0OltOU1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJpbmc6ZGV0YWls
cy0+c291cmNlVVJMXSBmb3JLZXk6X1dLSmF2YVNjcmlwdEV4Y2VwdGlvblNvdXJjZVVSTEVycm9y
S2V5XTsKIAogICAgICAgICAgICAgcmF3SGFuZGxlcihuaWwsIGFkb3B0TlMoW1tOU0Vycm9yIGFs
bG9jXSBpbml0V2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvckphdmFTY3JpcHRF
eGNlcHRpb25PY2N1cnJlZCB1c2VySW5mbzp1c2VySW5mby5nZXQoKV0pLmdldCgpKTsKICAgICAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggZDIxYzc4MmVkZWQxMjEzYzY5MTMxMWNkMmRjOTViZmJj
NGQ4NzZlYS4uMjcxZGM5Y2YyN2QyNjVhNDg2YmM0NDYwOGJiZmJlNzhlMDE2NzIxOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAK
QEAgLTM2MDYsNyArMzYwNiwxMCBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlw
dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogc2NyaXB0LAogICAgIGdfcmV0
dXJuX2lmX2ZhaWwoc2NyaXB0KTsKIAogICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdS
ZWYoZ190YXNrX25ldyh3ZWJWaWV3LCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKSk7
Ci0gICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoU3RyaW5nOjpm
cm9tVVRGOChzY3JpcHQpLCB0cnVlLCBbdGFzayA9IFdURk1vdmUodGFzayldKEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGJvb2wsIGNvbnN0IEV4Y2Vw
dGlvbkRldGFpbHMmIGV4Y2VwdGlvbkRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJv
cikgeworICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFN0cmlu
Zzo6ZnJvbVVURjgoc2NyaXB0KSwgdHJ1ZSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxFeGNl
cHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAg
ICAgICAgRXhjZXB0aW9uRGV0YWlscyBleGNlcHRpb25EZXRhaWxzOworICAgICAgICBpZiAoZGV0
YWlscykKKyAgICAgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgPSAqZGV0YWlsczsKICAgICAgICAg
d2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRDYWxsYmFjayhzZXJpYWxpemVkU2NyaXB0VmFsdWUs
IGV4Y2VwdGlvbkRldGFpbHMsIHRhc2suZ2V0KCkpOwogICAgIH0pOwogfQpAQCAtMzcwNCw3ICsz
NzA3LDEwIEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0X2luX3dvcmxkKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyCiAgICAgZ19yZXR1cm5faWZfZmFpbCh3
b3JsZE5hbWUpOwogCiAgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0R1JlZihnX3Rhc2tf
bmV3KHdlYlZpZXcsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpKTsKLSAgICBnZXRQ
YWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFN0cmluZzo6
ZnJvbVVURjgoc2NyaXB0KSwgdHJ1ZSwgU3RyaW5nOjpmcm9tVVRGOCh3b3JsZE5hbWUpLCBbdGFz
ayA9IFdURk1vdmUodGFzayldKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVk
U2NyaXB0VmFsdWUsIGJvb2wsIGNvbnN0IEV4Y2VwdGlvbkRldGFpbHMmIGV4Y2VwdGlvbkRldGFp
bHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgIGdldFBhZ2Uod2ViVmlldyku
cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoU3RyaW5nOjpmcm9tVVRGOChzY3Jp
cHQpLCB0cnVlLCBTdHJpbmc6OmZyb21VVEY4KHdvcmxkTmFtZSksIFt0YXNrID0gV1RGTW92ZSh0
YXNrKV0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwg
T3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6
OkVycm9yKSB7CisgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZXhjZXB0aW9uRGV0YWlsczsKKyAg
ICAgICAgaWYgKGRldGFpbHMpCisgICAgICAgICAgICBleGNlcHRpb25EZXRhaWxzID0gKmRldGFp
bHM7CiAgICAgICAgIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2soc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLCBleGNlcHRpb25EZXRhaWxzLCB0YXNrLmdldCgpKTsKICAgICB9KTsKIH0K
QEAgLTM3NDQsNyArMzc1MCwxMCBAQCBzdGF0aWMgdm9pZCByZXNvdXJjZXNTdHJlYW1SZWFkQ2Fs
bGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZwogICAgIFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ190YXNrX2dldF9zb3VyY2Vfb2Jq
ZWN0KHRhc2suZ2V0KCkpKTsKICAgICBncG9pbnRlciBvdXRwdXRTdHJlYW1EYXRhID0gZ19tZW1v
cnlfb3V0cHV0X3N0cmVhbV9nZXRfZGF0YShHX01FTU9SWV9PVVRQVVRfU1RSRUFNKG9iamVjdCkp
OwogICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFN0cmluZzo6
ZnJvbVVURjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBnY2hhcio+KG91dHB1dFN0cmVhbURhdGEp
KSwgdHJ1ZSwKLSAgICAgICAgW3Rhc2tdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJp
YWxpemVkU2NyaXB0VmFsdWUsIGJvb2wsIGNvbnN0IEV4Y2VwdGlvbkRldGFpbHMmIGV4Y2VwdGlv
bkRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgICAgICBbdGFza10o
QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9u
YWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9y
KSB7CisgICAgICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGV4Y2VwdGlvbkRldGFpbHM7CisgICAg
ICAgICAgICBpZiAoZGV0YWlscykKKyAgICAgICAgICAgICAgICBleGNlcHRpb25EZXRhaWxzID0g
KmRldGFpbHM7CiAgICAgICAgICAgICB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdENhbGxiYWNr
KHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgZXhjZXB0aW9uRGV0YWlscywgdGFzay5nZXQoKSk7CiAg
ICAgICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggZTNiNDUyMzk5NzkzYTZiMWQ2NzQ2Y2Y5YmY0NDg4MzQ1OGZlYWI3Zi4uMmEzZjE5NjYzNTgx
ODExOWI1MzMxMWMwYzgzNzVlZTE4YzQxYzI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC0zODQ1LDE4ICszODQ1LDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCkKICAgICAgICAgbGF1bmNoUHJvY2Vz
cyh7IH0sIFByb2Nlc3NMYXVuY2hSZWFzb246OkluaXRpYWxQcm9jZXNzKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIHNjcmlw
dCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IEV4Y2VwdGlvbkRldGFp
bHMmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQ
YWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgcnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lU2NyaXB0V29ybGQoc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6Om51
bGxvcHQsIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3Jp
cHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGRO
YW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBib29s
IGhhZEV4Y2VwdGlvbiwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VV
c2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25E
ZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAg
ICAvLyBGb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0eSBzdXBwb3J0IHJ1bm5pbmcgc2NyaXB0IGlu
IGEgV2ViVmlldyB3aGljaCBoYXMgbm90IGRvbmUgYW55IGxvYWRzIHlldHMuCiAgICAgbGF1bmNo
SW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0ciwgZmFsc2UsIHsgfSwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CisgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24obnVs
bHB0ciwgeyB9LCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMzg2NCw3ICszODY0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib28K
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3Jp
cHRXb3JsZChzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCkp
OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWUoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1
cmUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wg
aGFkRXhjZXB0aW9uLCBjb25zdCBFeGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0
SW5GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJv
b2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlKiwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKG1haW5GcmFtZSgpLT5mcmFt
ZUlEKCkgIT0gZnJhbWVJRCk7CiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lIl9zKSk7CkBA
IC02Nzg3LDcgKzY3ODcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW52YWxpZGF0ZVN0cmluZ0Nh
bGxiYWNrKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgp
OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBF
eGNlcHRpb25EZXRhaWxzJiBkZXRhaWxzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdl
YlBhZ2VQcm94eTo6c2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IGRhdGFSZWZlcmVuY2UsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFr
ZTxTY3JpcHRWYWx1ZUNhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKSB7
CkBAIC02Nzk2LDcgKzY3OTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2NyaXB0VmFsdWVDYWxs
YmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsCiAgICAgfQogCiAg
ICAgaWYgKGRhdGFSZWZlcmVuY2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNhbGxiYWNrLT5wZXJm
b3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUobnVsbHB0ciwgaGFkRXhjZXB0aW9uLCBkZXRhaWxz
KTsKKyAgICAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShudWxs
cHRyLCBkZXRhaWxzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjgwNCw3ICs2ODA0
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNjcmlwdFZhbHVlQ2FsbGJhY2soY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLAogICAgIGRhdGEucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShkYXRhUmVmZXJlbmNlLnNpemUoKSk7CiAgICAgZGF0YS5hcHBlbmQoZGF0YVJlZmVyZW5j
ZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKIAotICAgIGNhbGxiYWNrLT5wZXJmb3Jt
Q2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0
KFdURk1vdmUoZGF0YSkpLnB0cigpLCBoYWRFeGNlcHRpb24sIGRldGFpbHMpOworICAgIGNhbGxi
YWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmFkb3B0KFdURk1vdmUoZGF0YSkpLnB0cigpLCBkZXRhaWxzKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmNvbXB1dGVkUGFnZXNDYWxsYmFjayhjb25zdCBWZWN0b3I8SW50UmVjdD4m
IHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgY29uc3QgRmxv
YXRCb3hFeHRlbnQmIGNvbXB1dGVkUGFnZU1hcmdpbiwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBhZTM4NTIyMjFkNGE1MjQz
NTUyYmEwMjNmMmY0OGI5NGVmN2I5OGFkLi4wMjc0ZDdjZTJmNDM2ODE1NGNjYjY3OTI1Y2QwZjlk
YTQzYzI5Y2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNzUs
NiArNzUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVu
dFRyYWNraW5nUmVnaW9ucy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uRGV0YWlscy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udEF0dHJpYnV0ZXMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ZyYW1lTG9hZGVyVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPiAvLyBG
SVhNRTogTW92ZSBMYXlvdXRWaWV3cG9ydENvbnN0cmFpbnQgdG8gaXRzIG93biBmaWxlIGFuZCBz
dG9wIGluY2x1ZGluZyB0aGlzLgpAQCAtMzM1LDcgKzMzNiw3IEBAIHR5cGVkZWYgR2VuZXJpY0Nh
bGxiYWNrPEFQSTo6RGF0YSo+IERhdGFDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNr
PHVpbnQ2NF90PiBVbnNpZ25lZENhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8RWRp
dGluZ1JhbmdlPiBFZGl0aW5nUmFuZ2VDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNr
PGNvbnN0IFN0cmluZyY+IFN0cmluZ0NhbGxiYWNrOwotdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8
QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBib29sLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRp
b25EZXRhaWxzJj4gU2NyaXB0VmFsdWVDYWxsYmFjazsKK3R5cGVkZWYgR2VuZXJpY0NhbGxiYWNr
PEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9u
RGV0YWlscz4+IFNjcmlwdFZhbHVlQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxj
b25zdCBXZWJDb3JlOjpGb250QXR0cmlidXRlcyY+IEZvbnRBdHRyaWJ1dGVzQ2FsbGJhY2s7CiB0
eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmPiBTZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxs
YmFjazxib29sPiBCb29sQ2FsbGJhY2s7CkBAIC0xMDYwLDEwICsxMDYxLDEwIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoRnVuY3Rpb248dm9pZCAoQVBJ
OjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0U291cmNlRm9y
RnJhbWUoV2ViRnJhbWVQcm94eSosIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUo
V2ViRnJhbWVQcm94eSosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJp
bmcmLCBib29sLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
KiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKLSAgICB2b2lkIHJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYsIGJvb2wsIGNvbnN0
IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IFdlYkNvcmU6OkV4
Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9u
KTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmLCBib29s
LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9u
YWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrRnVuY3Rpb24pOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0
V29ybGQoY29uc3QgU3RyaW5nJiwgYm9vbCwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGRO
YW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRp
b25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYg
Y2FsbGJhY2tGdW5jdGlvbik7CiAgICAgLy8gRm9yIHN1YiBmcmFtZXMuCi0gICAgdm9pZCBydW5K
YXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
c2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpF
eGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlv
bik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVu
Y3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6
OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKTsKICAgICB2b2lkIGZvcmNlUmVwYWludChSZWZQdHI8Vm9pZENhbGxiYWNrPiYmKTsKIAog
ICAgIGZsb2F0IGhlYWRlckhlaWdodChXZWJGcmFtZVByb3h5Jik7CkBAIC0xOTQzLDcgKzE5NDQs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgYm9vbENhbGxiYWNrKGJvb2wgcmVzdWx0LCBDYWxsYmFj
a0lEKTsKICAgICB2b2lkIHN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQp
OwogICAgIHZvaWQgaW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKENhbGxiYWNrSUQpOwotICAgIHZv
aWQgc2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBib29sIGhh
ZEV4Y2VwdGlvbiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNrSUQp
OworICAgIHZvaWQgc2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
LCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tJRCk7CiAgICAg
dm9pZCBjb21wdXRlZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+
JiwgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgY29uc3QgV2ViQ29yZTo6Rmxv
YXRCb3hFeHRlbnQmIGNvbXB1dGVkUGFnZU1hcmdpbiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCB2
YWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBib29sLCBpbnQsIENhbGxiYWNr
SUQpOwogICAgIHZvaWQgdW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCwgQ2FsbGJhY2tJRCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5k
ZXggMGM2NTFlNjg1YjI5NzlmNGUzNmU5YzhhNTg2NDE2ZDY3MWJkZmZmNS4uNGRlZjVkYzAxZGI0
ZDQyOWZiYjdkNzE2OTM4YTExMTcwZDllYTIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTY5LDcgKzE2OSw3IEBAIG1lc3Nh
Z2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgU3RyaW5nQ2FsbGJhY2soU3RyaW5nIHJlc3VsdFN0
cmluZywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgQm9vbENhbGxiYWNrKGJv
b2wgcmVzdWx0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBJbnZhbGlkYXRl
U3RyaW5nQ2FsbGJhY2soV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgU2NyaXB0
VmFsdWVDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwgYm9vbCBoYWRFeGNl
cHRpb24sIHN0cnVjdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzIGRldGFpbHMsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFNjcmlwdFZhbHVlQ2FsbGJhY2soSVBDOjpEYXRh
UmVmZXJlbmNlIHJlc3VsdERhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+
IGRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIENvbXB1dGVkUGFn
ZXNDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gcGFnZVJlY3RzLCBkb3VibGUgdG90
YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBXZWJDb3JlOjpSZWN0RWRnZXM8ZmxvYXQ+IGNvbXB1
dGVkUGFnZU1hcmdpbiwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgVmFsaWRh
dGVDb21tYW5kQ2FsbGJhY2soU3RyaW5nIGNvbW1hbmQsIGJvb2wgaXNFbmFibGVkLCBpbnQzMl90
IHN0YXRlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBFZGl0aW5nUmFuZ2VD
YWxsYmFjayhzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcAppbmRleCA4OGUxM2FkODJhZGNlYzRmYmVlNjg1ZjJjN2JlNDU5OGY4ZDRj
YmJmLi4zZWEwMDZiM2NlMzhlMzg5NDFmZGJkNTg2NzNjZDgxYTY4MmMyNTMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTI1Myw3
ICsxMjUzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtSmF2YVNjcmlwdFVSTFJlcXVlc3Qo
VVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICAvLyBFdmFsdWF0ZSB0aGUgSmF2YVNjcmlwdCBjb2Rl
LiBOb3RlIHRoYXQgcnVubmluZyBKYXZhU2NyaXB0IGhlcmUgY291bGQgY2F1c2UgdGhlIHBsdWct
aW4gdG8gYmUgZGVzdHJveWVkLCBzbyB3ZQogICAgIC8vIGdyYWIgcmVmZXJlbmNlcyB0byB0aGUg
cGx1Zy1pbiBoZXJlLgogICAgIFJlZlB0cjxQbHVnaW4+IHBsdWdpbiA9IG1fcGx1Z2luOwotICAg
IGF1dG8gcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoanNTdHJpbmcsIHJl
cXVlc3QtPmFsbG93UG9wdXBzKCkpOworICAgIGF1dG8gcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgp
LmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihqc1N0cmluZywgcmVxdWVzdC0+YWxsb3dQ
b3B1cHMoKSk7CiAKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yRnJvbnRlbmRB
UElEaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAKaW5kZXggOTA4ZTM5YWZkYjBjODg5Y2Zl
NTY1MmIzOWFkYzQ3MGMzYTA5YTlhMi4uYzE4OWU5ODI1YWQ0OTQ3MGVkNjI0MzVlODZkNTlkZjYw
ZjM4YWU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwCkBA
IC05OSw3ICs5OSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpl
dmFsdWF0ZU9yUXVldWVFeHByZXNzaW9uKGNvbnN0IFN0cmluZyYKIAogICAgIEFTU0VSVChtX3F1
ZXVlLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKCFtX3BhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1l
KCkuc2NyaXB0KCkuaXNQYXVzZWQoKSk7Ci0gICAgbV9wYWdlLmNvcmVQYWdlKCktPm1haW5GcmFt
ZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoZXhwcmVzc2lvbik7CisgICAgbV9wYWdlLmNvcmVQ
YWdlKCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlv
bihleHByZXNzaW9uKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNo
ZXI6OmV2YWx1YXRlUXVldWVkRXhwcmVzc2lvbnMoKQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQg
V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpldmFsdWF0ZVF1ZXVlZEV4cHJlc3Np
b25zKCkKIAogICAgIGZvciAoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uIDogbV9xdWV1ZSkgewog
ICAgICAgICBBU1NFUlQoIW1fcGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5p
c1BhdXNlZCgpKTsKLSAgICAgICAgbV9wYWdlLmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnNjcmlw
dCgpLmV4ZWN1dGVTY3JpcHQoZXhwcmVzc2lvbik7CisgICAgICAgIG1fcGFnZS5jb3JlUGFnZSgp
LT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oZXhw
cmVzc2lvbik7CiAgICAgfQogCiAgICAgbV9xdWV1ZS5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA3MzVmZWE0ZWUxM2JlNDI1YzIz
NGJlOTIxMjBmZTllN2JjYTJkNWM3Li4xMjQ3MDJjZTVlODkzMDNiY2I2MzExZWExNWNmNDdkMDEy
ZTM3ODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtMzM1MywyMyArMzM1MywyNSBAQCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2Vi
RnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZQogICAgIC8v
IE5PVEU6IFdlIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aGVuIHJ1bm5pbmcgc2NyaXB0cyB0aGF0IHRo
ZSBvYmplY3RzIHdlIGRlcGVuZCBvbiBkb24ndAogICAgIC8vIGRpc2FwcGVhciBkdXJpbmcgc2Ny
aXB0IGV4ZWN1dGlvbi4KIAotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlh
bGl6ZWRSZXN1bHRWYWx1ZTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhjb21tb25WTSgpKTsKLSAg
ICBib29sIGhhZEV4Y2VwdGlvbiA9IHRydWU7Ci0gICAgRXhjZXB0aW9uRGV0YWlscyBkZXRhaWxz
OworICAgIFZhbHVlQW5kRXhjZXB0aW9uIHJlc3VsdDsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBzZXJpYWxpemVkUmVzdWx0VmFsdWU7CisKICAgICBhdXRvKiB3b3JsZCA9IHdv
cmxkTmFtZSA/IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmZpbmQod29ybGROYW1lLnZhbHVl
KCkpIDogJkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCk7CiAgICAgaWYg
KGZyYW1lICYmIGZyYW1lLT5jb3JlRnJhbWUoKSAmJiB3b3JsZCkgewotICAgICAgICBpZiAoSlNW
YWx1ZSByZXN1bHRWYWx1ZSA9IGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZXhlY3V0ZVVz
ZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgpLCBzY3JpcHQsIGZvcmNlVXNl
ckdlc3R1cmUsICZkZXRhaWxzKSkgewotICAgICAgICAgICAgaGFkRXhjZXB0aW9uID0gZmFsc2U7
CisgICAgICAgIHJlc3VsdCA9IGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZXhlY3V0ZVVz
ZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgpLCBzY3JpcHQsIGZvcmNlVXNl
ckdlc3R1cmUpOworICAgICAgICBpZiAocmVzdWx0LmZpcnN0KSB7CisgICAgICAgICAgICBBU1NF
UlQoIXJlc3VsdC5zZWNvbmQpOwogICAgICAgICAgICAgc2VyaWFsaXplZFJlc3VsdFZhbHVlID0g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZnJhbWUtPmpzQ29udGV4dEZvcldvcmxkKHdv
cmxkKSwKLSAgICAgICAgICAgICAgICB0b1JlZihmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgp
Lmdsb2JhbE9iamVjdCh3b3JsZC0+Y29yZVdvcmxkKCkpLCByZXN1bHRWYWx1ZSksIG51bGxwdHIp
OworICAgICAgICAgICAgICAgIHRvUmVmKGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZ2xv
YmFsT2JqZWN0KHdvcmxkLT5jb3JlV29ybGQoKSksIHJlc3VsdC5maXJzdCksIG51bGxwdHIpOwog
ICAgICAgICB9CiAgICAgfQogCiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7
CiAgICAgaWYgKHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSkKICAgICAgICAgZGF0YVJlZmVyZW5jZSA9
IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0YSgpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBoYWRFeGNlcHRpb24s
IGRldGFpbHMsIGNhbGxiYWNrSUQpKTsKKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6U2NyaXB0VmFsdWVDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCByZXN1bHQuc2Vjb25kLCBjYWxs
YmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2Ny
aXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29u
c3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQubW0KaW5kZXggOTQ3YmZjNTM0MmNiY2FjMDlhYWFmNTEyY2NkYjZk
ZmU5Y2IxY2E0MS4uZWE1MDc4ZWQxOGY1NTA1MmRmMmU0MjgxM2UyYTZmNzA4NTVjZTdjYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5tbQpAQCAtMzc5LDcgKzM3OSw3IEBAIHZvaWQgV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0
IFN0cmluZyYKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBbY29udGVudENvcHkgd3JpdGVU
b1VSTDphY3R1YWxVUkwgYXRvbWljYWxseTpZRVMgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmcgZXJyb3I6TlVMTF07CiAKLSAgICAgICAgY29yZShbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xs
ZXIgZnJvbnRlbmRXZWJWaWV3XSktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQo
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJbnNwZWN0b3JGcm9udGVuZEFQSS5zYXZlZFVS
TChcIiVAXCIpIiwgYWN0dWFsVVJMLmFic29sdXRlU3RyaW5nXSk7CisgICAgICAgIGNvcmUoW21f
ZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyIGZyb250ZW5kV2ViVmlld10pLT5tYWluRnJhbWUoKS5z
Y3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oW05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCJJbnNwZWN0b3JGcm9udGVuZEFQSS5zYXZlZFVSTChcIiVAXCIpIiwgYWN0dWFs
VVJMLmFic29sdXRlU3RyaW5nXSk7CiAgICAgfTsKIAogICAgIGlmICghZm9yY2VTYXZlRGlhbG9n
KSB7CkBAIC00MjUsNyArNDI1LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
YXBwZW5kKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcKICAgICBbaGFu
ZGxlIHdyaXRlRGF0YTpbY29udGVudCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNv
ZGluZ11dOwogICAgIFtoYW5kbGUgY2xvc2VGaWxlXTsKIAotICAgIGNvcmUoW21fZnJvbnRlbmRX
aW5kb3dDb250cm9sbGVyIGZyb250ZW5kV2ViVmlld10pLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5l
eGVjdXRlU2NyaXB0KFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRl
bmRBUEkuYXBwZW5kZWRUb1VSTChcIiVAXCIpIiwgW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ11d
KTsKKyAgICBjb3JlKFttX2Zyb250ZW5kV2luZG93Q29udHJvbGxlciBmcm9udGVuZFdlYlZpZXdd
KS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKFtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuYXBwZW5kZWRU
b1VSTChcIiVAXCIpIiwgW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ11dKTsKIH0KIAogLy8gTUFS
SzogLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXgg
MThkM2Q5ZWMxNGQ4YzY5NWQwM2Y5M2MzZGQyMDE2YWQ0MDk0YTQ1OC4uMDViNTY5MzA0MzY0YjQ5
Njk3MWQ4OWRkOTdmZjhkZTJjZjQ1NjcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC03MDAsNyArNzAwLDcgQEAgLSAoTlNTdHJpbmcgKilfc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGZv
cmNlVXMKICAgICBKU0M6OkpTTG9ja0hvbGRlciBqc2NMb2NrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogI2VuZGlmCiAKLSAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gX3ByaXZhdGUtPmNvcmVGcmFt
ZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChzdHJpbmcsIGZvcmNlVXNlckdlc3R1cmUpOworICAg
IEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zY3JpcHQoKS5leGVj
dXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oc3RyaW5nLCBmb3JjZVVzZXJHZXN0dXJlKTsKIAog
ICAgIGlmICghX3ByaXZhdGUtPmNvcmVGcmFtZSkgLy8gSW4gY2FzZSB0aGUgc2NyaXB0IHJlbW92
ZWQgb3VyIGZyYW1lIGZyb20gdGhlIHBhZ2UuCiAgICAgICAgIHJldHVybiBAIiI7CkBAIC0yMDk2
LDcgKzIwOTYsNyBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
RnJvbVN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgd2l0aEdsbwogICAgIEFTU0VSVChmcmFtZS0+
ZG9jdW1lbnQoKSk7CiAgICAgUmV0YWluUHRyPFdlYkZyYW1lPiB3ZWJGcmFtZShraXQoZnJhbWUp
KTsgLy8gUnVubmluZyBhcmJpdHJhcnkgSmF2YVNjcmlwdCBjYW4gZGVzdHJveSB0aGUgZnJhbWUu
CiAKLSAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVVc2Vy
QWdlbnRTY3JpcHRJbldvcmxkKCpjb3JlKHdvcmxkKSwgc3RyaW5nLCB0cnVlKTsKKyAgICBKU0M6
OkpTVmFsdWUgcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJ
bldvcmxkKCpjb3JlKHdvcmxkKSwgc3RyaW5nLCB0cnVlKS5maXJzdDsKIAogICAgIGlmICghd2Vi
RnJhbWUtPl9wcml2YXRlLT5jb3JlRnJhbWUpIC8vIEluIGNhc2UgdGhlIHNjcmlwdCByZW1vdmVk
IG91ciBmcmFtZSBmcm9tIHRoZSBwYWdlLgogICAgICAgICByZXR1cm4gQCIiOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDQ3YWFlMzI4ZGJjNmFjZmJl
YWJiM2FlYzZkMjc4M2NiNGY1OWYwNzEuLjk2MWUwNWNmMWMyMjlkZTExMDQ2YjdjNGZiODM0ZjUz
MzliYjgyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
QEAgLTc5MDgsNyArNzkwOCw3IEBAIC0gKE5TQXBwbGVFdmVudERlc2NyaXB0b3IgKilhZURlc2NC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzooTlNTdHJpbmcgKilzCiAgICAgICAgIHJl
dHVybiBuaWw7CiAgICAgaWYgKCFjb3JlRnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVy
biBuaWw7Ci0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGNvcmVGcmFtZS0+c2NyaXB0KCkuZXhl
Y3V0ZVNjcmlwdChzY3JpcHQsIHRydWUpOworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBjb3Jl
RnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihzY3JpcHQsIHRy
dWUpOwogICAgIGlmICghcmVzdWx0KSAvLyBGSVhNRTogcGFzcyBlcnJvcnMKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhjb3JlRnJhbWUtPnNjcmlwdCgpLmds
b2JhbE9iamVjdChXZWJDb3JlOjptYWluVGhyZWFkTm9ybWFsV29ybGQoKSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZTVlZjYzYjRj
ZDg2NzE3YjM2MGIwOTljODYyZTI3YTYzNTExNTA0My4uODE2MGRhMTRhYzAwOTM5NjgwYzIyZGVk
YzJhMjVkM2MzYTZlMzBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCkBAIC00MzksNyArNDM5LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJm
b3JtUmVxdWVzdChQbHVnaW5SZXF1ZXN0KiByZXF1ZXN0KQogICAgIAogICAgIC8vIEV4ZWN1dGlu
ZyBhIHNjcmlwdCBjYW4gY2F1c2UgdGhlIHBsdWdpbiB2aWV3IHRvIGJlIGRlc3Ryb3llZCwgc28g
d2Uga2VlcCBhIHJlZmVyZW5jZSB0byBpdC4KICAgICBSZWZQdHI8UGx1Z2luVmlldz4gcHJvdGVj
dG9yKHRoaXMpOwotICAgIGF1dG8gcmVzdWx0ID0gbV9wYXJlbnRGcmFtZS0+c2NyaXB0KCkuZXhl
Y3V0ZVNjcmlwdChqc1N0cmluZywgcmVxdWVzdC0+c2hvdWxkQWxsb3dQb3B1cHMoKSk7CisgICAg
YXV0byByZXN1bHQgPSBtX3BhcmVudEZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3Jp
bmdFeGNlcHRpb24oanNTdHJpbmcsIHJlcXVlc3QtPnNob3VsZEFsbG93UG9wdXBzKCkpOwogCiAg
ICAgaWYgKHRhcmdldEZyYW1lTmFtZS5pc051bGwoKSkgewogICAgICAgICBDU3RyaW5nIGNzdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggNmVmYWU4ZjYyMjk4NDljYTFm
NTk2YjczNTVjZWVmNDNjZmQ2OTBhOC4uYzc3OGUyMmI3MGRjZjE4NTUyMmNhNmUyMDliODcwOTE5
NWI1MTQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAtMjA1NSw3ICsy
MDU1LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdElu
U2NyaXB0V29ybGQoSVdlYlNjcmlwdFdvcmxkKiBpV28KICAgICAvLyBHZXQgdGhlIGZyYW1lIGZy
b21lIHRoZSBnbG9iYWwgb2JqZWN0IHdlJ3ZlIHNldHRsZWQgb24uCiAgICAgRnJhbWUqIGZyYW1l
ID0gYW55V29ybGRHbG9iYWxPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpOwogICAgIEFTU0VSVChm
cmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCku
ZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQtPndvcmxkKCksIHN0cmluZywgdHJ1ZSk7CisgICAg
SlNWYWx1ZSByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25v
cmluZ0V4Y2VwdGlvbih3b3JsZC0+d29ybGQoKSwgc3RyaW5nLCB0cnVlKTsKIAogICAgIGlmICgh
ZnJhbWUpIC8vIEluIGNhc2UgdGhlIHNjcmlwdCByZW1vdmVkIG91ciBmcmFtZSBmcm9tIHRoZSBw
YWdlLgogICAgICAgICByZXR1cm4gU19PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAK
aW5kZXggYTA0NDhiYjAxM2VkZmI0MzM1ZmJjOWFiYzhhN2UzMDgwNzdmMDA0My4uZTcyZWE0M2Vk
Yjc5YzhhMDIxY2M2ZGZjMThhOTlkNWJjMDhlM2ZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Vmlldy5jcHAKQEAgLTM2NjMsNyArMzY2Myw3IEBAIEhSRVNVTFQgV2ViVmlldzo6c3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmcoX0luXyBCU1RSIHNjcmlwdCwgLy8gYXNzCiAg
ICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKLSAgICBh
dXRvIHNjcmlwdEV4ZWN1dGlvblJlc3VsdCA9IGNvcmVGcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNj
cmlwdChXVEY6OlN0cmluZyhzY3JpcHQpLCB0cnVlKTsKKyAgICBhdXRvIHNjcmlwdEV4ZWN1dGlv
blJlc3VsdCA9IGNvcmVGcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0
aW9uKFdURjo6U3RyaW5nKHNjcmlwdCksIHRydWUpOwogICAgIGlmICghc2NyaXB0RXhlY3V0aW9u
UmVzdWx0KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogICAgIGVsc2UgaWYgKHNjcmlwdEV4ZWN1
dGlvblJlc3VsdC5pc1N0cmluZygpKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385525</attachid>
            <date>2019-12-12 12:25:02 -0800</date>
            <delta_ts>2019-12-12 12:51:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205151-20191212122501.patch</filename>
            <type>text/plain</type>
            <size>52294</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjU5MGYyYWFjZjNmZTJj
NWE4ZDlkYWUwZjFmOGM4NDY0YTY1MGE3YS4uMzgzYTYzMGViMmM5YmNmOTI2NTBiNDgyZDM2Mzg3
NGFiY2RiN2ZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE5LTEyLTEyICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRD
b250cm9sbGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoUmVm
YWN0b3IsIG5vIGJlaGF2aW9yIGNoYW5nZSkuCisKKyAgICAgICAgVGhlcmUncyBzbyBtYW55IEV4
Y2VwdGlvbkRldGFpbHMqIG51bGwgcG9pbnRlcnMgYmVpbmcgcGFzc2VkIGFyb3VuZCBpbiB0aGUg
U2NyaXB0Q29udHJvbGxlcgorICAgICAgICBmYW1pbHkgb2YgZnVuY3Rpb25zLgorCisgICAgICAg
IExldCdzIG1ha2UgaXQgYSBsaXR0bGUgbW9yZSBleHBsaWNpdCB3aGljaCBjYWxsZXJzIGdldCBl
eGNlcHRpb25zIGFuZCB3aGljaCBkb24ndC4KKworICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9R
dWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlF1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50OjplbnN1cmVSZXBsYWNlbWVudFNjcmlwdEluamVjdGVkKToKKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUpOgorCisgICAgICAgICogYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVy
OjpldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJ
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2Vy
QWdlbnRTY3JpcHRJbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6
OmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQpOiBEZWxldGVkLgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKworICAgICAgICAqIGNvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9jZXNzQ29udGVudFJ1
bGVMaXN0c0ZvckxvYWQpOgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjplbnN1cmVQbHVnSW5zSW5qZWN0ZWRTY3JpcHQpOgorCisgICAg
ICAgICogZG9tL1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxl
bWVudDo6ZXhlY3V0ZUNsYXNzaWNTY3JpcHQpOgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZU1l
ZGlhQ29udHJvbHNJbmplY3RlZFNjcmlwdCk6CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsOjpldmFsdWF0ZUFzQm9vbGVhbik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpldmFsdWF0ZU9uTG9hZCk6CisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZCk6
CisKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RmlsdGVyOjpkaWREZWNpZGUpOgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KToK
KworICAgICAgICAqIHhtbC9YTUxUcmVlVmlld2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TFRyZWVWaWV3ZXI6OnRyYW5zZm9ybURvY3VtZW50VG9UcmVlVmlldyk6CisKIDIwMTktMTItMTEg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBUcnlpbmcgdG8gc2V0
IHRvU3RyaW5nIC8gdmFsdWVPZiBvbiBhIGNyb3NzLW9yaWdpbiBMb2NhdGlvbiBvYmplY3Qgc2hv
dWxkIHRocm93IGEgU2VjdXJpdHlFcnJvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4ZDc2MmFkOWEzODY4MzQ5MjU4
YzAyYzk2MmY5NWZmOTNhZjI1NzM3Li5lNzIwYmY3ODUzMzI0MzJmY2U5ZjNkMjQ1YjkxNjZiMTNk
NzFlYjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE5LTEyLTEyICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRDb250cm9s
bGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHA6CisgICAgICAgIChXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2Vi
VmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmZvcmNlVXNlckdlc3R1cmU6Y29tcGxldGlvbkhhbmRs
ZXI6XSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdv
cmxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFt
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBlcmZv
cm1KYXZhU2NyaXB0VVJMUmVxdWVzdCk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpldmFsdWF0ZU9yUXVldWVFeHByZXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVy
OjpldmFsdWF0ZVF1ZXVlZEV4cHJlc3Npb25zKToKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cnVuSmF2YVNjcmlw
dCk6CisKIDIwMTktMTItMTEgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCBhIG5pdCBhZnRlciByMjUzMzY2CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKaW5kZXggYjlkYWUyY2UxMGUwODcyZDM1MzA4YzhjOGNjNjBkZTIwZjI1Zjc3NS4u
ZTFmNzFhNWQ1NjkwYzM0NTI0ZGI2ODYyOWI4NDkwOTE1M2RlNzA3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTEyLTEyICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRDb250cm9sbGVy
J3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZCk6CisgICAgICAg
IAorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9z
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpmb3JjZVVzZXJHZXN0dXJlOl0p
OgorICAgICAgICAoLVtXZWJGcmFtZSBfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21T
dHJpbmc6d2l0aEdsb2JhbE9iamVjdDppblNjcmlwdFdvcmxkOl0pOgorCisgICAgICAgICogV2Vi
Vmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IGFlRGVzY0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHRGcm9tU3RyaW5nOl0pOgorCiAyMDE5LTEyLTA5ICBFcmljIENhcmxzb24gIDxlcmlj
LmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBtZWRpYSBpbiB0aGUgR1BVIHBy
b2Nlc3MgcHJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDQyMDE0ZDk5
ZDUwMjE2ZmE5MmQ0OWE1OTJhMDA2NzgxOTJkNjRkNDEuLjE0MWNjMzk0YWM4ZWIzZDQ2MDQ1NmM5
OWNiNmI5YzM0NmE3MjBjZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxOS0xMi0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVmYWN0b3IgU2NyaXB0Q29udHJvbGxlcidzIHByb2xpZmVyYXRpb24gb2YgRXhj
ZXB0aW9uRGV0YWlscyouCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDUxNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVn
aW5WaWV3OjpwZXJmb3JtUmVxdWVzdCk6CisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAg
ICAgIChXZWJGcmFtZTo6c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEluU2NyaXB0V29ybGQp
OgorCiAyMDE5LTEyLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgUGFnZUNvbmZpZ3VyYXRpb246OmRyYWdDbGllbnQgc2hvdWxkIHVzZSBhIHNtYXJ0IHBvaW50
ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQppbmRleCA5ODEyNmUwM2YzZTMyMTQ3NWY3NTExNDY0
MmFkOGQwYjI0OGJhZDIzLi4wM2QyMWRlN2Q1YWMwNjliMmNhYTNkOTYxMWI5OGY4NGEzNTE3ZjRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1
aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCkBAIC0xNTgsNyArMTU4LDcgQEAgYm9vbCBRdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6ZW5zdXJlUmVwbGFjZW1lbnRTY3JpcHRJbmplY3RlZCgp
CiAgICAgaWYgKHJlcGxhY2VtZW50RnVuY3Rpb24uaXNGdW5jdGlvbih2bSkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIAotICAgIHNjcmlwdENvbnRyb2xsZXIuZXZhbHVhdGVJbldvcmxkKFNj
cmlwdFNvdXJjZUNvZGUocXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRTY3JpcHQoKSksIHdvcmxk
KTsKKyAgICBzY3JpcHRDb250cm9sbGVyLmV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9u
KFNjcmlwdFNvdXJjZUNvZGUocXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRTY3JpcHQoKSksIHdv
cmxkKTsKICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAgICAgIExP
RyhQbHVnaW5zLCAiJXAgLSBFeGNlcHRpb24gd2hlbiBldmFsdWF0aW5nIFF1aWNrVGltZSBwbHVn
aW4gcmVwbGFjZW1lbnQgc2NyaXB0IiwgdGhpcyk7CiAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0
aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRB
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNw
cAppbmRleCAyOGNmNTY0NjZiY2EzYzljMmQyMDg4OTUxYzk4MDgyZmRiNTFhODU2Li44ZTRjN2Iz
ODEyNDRlNzc2YmRkNTgzNGFlNDE5MzZkN2RjYzYyMjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lk
IFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgaWYgKG1f
ZnVuY3Rpb24pCiAgICAgICAgIGV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dCh3aW5kb3csIHdpbmRv
dy0+cHJveHkoKSwgZG9jdW1lbnQpOwogICAgIGVsc2UKLSAgICAgICAgZnJhbWUtPnNjcmlwdCgp
LmV4ZWN1dGVTY3JpcHRJbldvcmxkKG1faXNvbGF0ZWRXb3JsZCwgbV9jb2RlKTsKKyAgICAgICAg
ZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24obV9p
c29sYXRlZFdvcmxkLCBtX2NvZGUpOwogfQogCiB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0
ZShXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGIxZmRlODUwMmU0ZGEw
YjBmNjlmNDgxNmQ0YTQxMmVjNGVlNGM3M2YuLjRjZWQ0YzNjMjRlYjA2MGEyNjY1NTkwNjg5ODJm
NDMxYzY2MTk4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuY3BwCkBAIC0xMDcsNyArMTA3LDEyIEBAIFNjcmlwdENvbnRyb2xsZXI6On5TY3Jp
cHRDb250cm9sbGVyKCkKICAgICB9CiB9CiAKLUpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZh
bHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQsIEV4Y2VwdGlvbkRldGFpbHMqIGV4Y2VwdGlvbkRldGFpbHMpCitKU0M6
OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRp
b24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCkKK3sKKyAgICByZXR1cm4gZXZhbHVhdGVJbldvcmxkKHNvdXJjZUNvZGUsIHdvcmxkKS5m
aXJzdDsKK30KKworVmFsdWVBbmRFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJ
bldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CiAKQEAgLTEz
NSwxOSArMTQwLDIxIEBAIEpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxk
KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPCiAKICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUpOwogCisgICAgT3B0aW9u
YWw8RXhjZXB0aW9uRGV0YWlscz4gb3B0aW9uYWxEZXRhaWxzOwogICAgIGlmIChldmFsdWF0aW9u
RXhjZXB0aW9uKSB7Ci0gICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmZ2xvYmFsT2JqZWN0LCBldmFs
dWF0aW9uRXhjZXB0aW9uLCBzb3VyY2VDb2RlLmNhY2hlZFNjcmlwdCgpLCBleGNlcHRpb25EZXRh
aWxzKTsKLSAgICAgICAgbV9zb3VyY2VVUkwgPSBzYXZlZFNvdXJjZVVSTDsKLSAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBkZXRhaWxzOworICAgICAgICByZXBv
cnRFeGNlcHRpb24oJmdsb2JhbE9iamVjdCwgZXZhbHVhdGlvbkV4Y2VwdGlvbiwgc291cmNlQ29k
ZS5jYWNoZWRTY3JpcHQoKSwgJmRldGFpbHMpOworICAgICAgICBvcHRpb25hbERldGFpbHMgPSBX
VEZNb3ZlKGRldGFpbHMpOworICAgICAgICByZXR1cm5WYWx1ZSA9IHsgfTsKICAgICB9CiAKICAg
ICBtX3NvdXJjZVVSTCA9IHNhdmVkU291cmNlVVJMOwotICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
KyAgICByZXR1cm4geyByZXR1cm5WYWx1ZSwgb3B0aW9uYWxEZXRhaWxzIH07CiB9CiAKLUpTVmFs
dWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291
cmNlQ29kZSwgRXhjZXB0aW9uRGV0YWlscyogZXhjZXB0aW9uRGV0YWlscykKK0pTQzo6SlNWYWx1
ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlw
dFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCiB7Ci0gICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChz
b3VyY2VDb2RlLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgZXhjZXB0aW9uRGV0YWlscyk7Cisg
ICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKHNvdXJjZUNvZGUsIG1h
aW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKIH0KIAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjpsb2Fk
TW9kdWxlU2NyaXB0SW5Xb3JsZChMb2FkYWJsZU1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0LCBj
b25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYgdG9w
TGV2ZWxGZXRjaFBhcmFtZXRlcnMsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCkBAIC01NDgsNyAr
NTU1LDEyIEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJTY3JpcHRPYmplY3RzKCkKICNl
bmRpZgogfQogCi1KU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxk
KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNl
VXNlckdlc3R1cmUsIEV4Y2VwdGlvbkRldGFpbHMqIGV4Y2VwdGlvbkRldGFpbHMpCitKU0M6OkpT
VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2Vw
dGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBm
b3JjZVVzZXJHZXN0dXJlKQoreworICAgIHJldHVybiBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3Js
ZCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlKS5maXJzdDsKK30KKworVmFsdWVBbmRFeGNlcHRp
b24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxk
JiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKIHsK
ICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGZvcmNlVXNlckdlc3R1
cmUgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlKSA6IFdURjo6bnVsbG9wdCk7CiAgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2Rl
KHNjcmlwdCwgVVJMKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpLCBUZXh0UG9zaXRpb24oKSwg
SlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIENhY2hlZFNjcmlwdEZldGNo
ZXI6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmNoYXJzZXQoKSkpOwpAQCAtNTU2LDE3ICs1
NjgsMTcgQEAgSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChE
T01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHIKICAgICBpZiAoIWNhbkV4ZWN1dGVTY3Jp
cHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNlZCgpKQogICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3b3JsZCwgZXhj
ZXB0aW9uRGV0YWlscyk7CisgICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3
b3JsZCk7CiB9CiAKLUpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNj
cmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQs
IGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgRXhjZXB0aW9uRGV0YWlscyogZXhjZXB0aW9uRGV0YWls
cykKK1ZhbHVlQW5kRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRT
Y3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0
LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiB7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqbV9mcmFt
ZS5kb2N1bWVudCgpOwogICAgIGlmICghc2hvdWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRzKGRvY3Vt
ZW50KSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGRvY3VtZW50LnNldEhhc0V2YWx1YXRl
ZFVzZXJBZ2VudFNjcmlwdHMoKTsKLSAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdEluV29ybGQod29y
bGQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgZXhjZXB0aW9uRGV0YWlscyk7CisgICAgcmV0
dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUp
OwogfQogCiBib29sIFNjcmlwdENvbnRyb2xsZXI6OnNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0
cyhEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CkBAIC01OTgsMTQgKzYxMCwxMCBAQCBib29sIFNj
cmlwdENvbnRyb2xsZXI6OmNhbkV4ZWN1dGVTY3JpcHRzKFJlYXNvbkZvckNhbGxpbmdDYW5FeGVj
dXRlU2NyaXB0cyByZWFzbwogICAgIHJldHVybiBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmFs
bG93U2NyaXB0KG1fZnJhbWUuc2V0dGluZ3MoKS5pc1NjcmlwdEVuYWJsZWQoKSk7CiB9CiAKLUpT
VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlw
dCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBFeGNlcHRpb25EZXRhaWxzKiBleGNlcHRpb25EZXRh
aWxzKQorSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJZ25vcmlu
Z0V4Y2VwdGlvbihjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQog
ewogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoZm9yY2VVc2VyR2Vz
dHVyZSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNl
ckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KTsKLSAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdChTY3Jp
cHRTb3VyY2VDb2RlKHNjcmlwdCwgVVJMKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpLCBUZXh0
UG9zaXRpb24oKSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIENhY2hl
ZFNjcmlwdEZldGNoZXI6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmNoYXJzZXQoKSkpLCBl
eGNlcHRpb25EZXRhaWxzKTsKLX0KIAotSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRl
U2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIEV4Y2VwdGlvbkRldGFp
bHMqIGV4Y2VwdGlvbkRldGFpbHMpCi17CiAgICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0cyhBYm91
dFRvRXhlY3V0ZVNjcmlwdCkgfHwgaXNQYXVzZWQoKSkKICAgICAgICAgcmV0dXJuIHsgfTsgLy8g
RklYTUU6IFdvdWxkIGpzTnVsbCBiZSBiZXR0ZXI/CiAKQEAgLTYxMyw3ICs2MjEsNyBAQCBKU1Zh
bHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYgc291cmNlQ29kZSwgRXhjZQogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjQ3NjMKICAgICBSZWY8RnJhbWU+IHByb3RlY3RvcihtX2ZyYW1lKTsgLy8g
U2NyaXB0IGV4ZWN1dGlvbiBjYW4gZGVzdHJveSB0aGUgZnJhbWUsIGFuZCB0aHVzIHRoZSBTY3Jp
cHRDb250cm9sbGVyLgogCi0gICAgcmV0dXJuIGV2YWx1YXRlKHNvdXJjZUNvZGUsIGV4Y2VwdGlv
bkRldGFpbHMpOworICAgIHJldHVybiBldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNv
dXJjZUNvZGUoc2NyaXB0LCBVUkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSksIFRleHRQb3Np
dGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgQ2FjaGVkU2Ny
aXB0RmV0Y2hlcjo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2hhcnNldCgpKSkpOwogfQog
CiBib29sIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29uc3QgVVJM
JiB1cmwsIFNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCBzaG91bGRSZXBsYWNl
RG9jdW1lbnRJZkphdmFTY3JpcHRVUkwpCkBAIC02MzIsNyArNjQwLDcgQEAgYm9vbCBTY3JpcHRD
b250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYgdXJsLCBTaG91bGRS
ZXBsYWNlRG9jdW0KICAgICBjb25zdCBpbnQgamF2YXNjcmlwdFNjaGVtZUxlbmd0aCA9IHNpemVv
ZigiamF2YXNjcmlwdDoiKSAtIDE7CiAKICAgICBTdHJpbmcgZGVjb2RlZFVSTCA9IGRlY29kZVVS
TEVzY2FwZVNlcXVlbmNlcyh1cmwuc3RyaW5nKCkpOwotICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0
ZVNjcmlwdChkZWNvZGVkVVJMLnN1YnN0cmluZyhqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoKSk7Cisg
ICAgYXV0byByZXN1bHQgPSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oZGVjb2RlZFVS
TC5zdWJzdHJpbmcoamF2YXNjcmlwdFNjaGVtZUxlbmd0aCkpOwogCiAgICAgLy8gSWYgZXhlY3V0
aW5nIHNjcmlwdCBjYXVzZWQgdGhpcyBmcmFtZSB0byBiZSByZW1vdmVkIGZyb20gdGhlIHBhZ2Us
IHdlCiAgICAgLy8gZG9uJ3Qgd2FudCB0byB0cnkgdG8gcmVwbGFjZSBpdHMgZG9jdW1lbnQhCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggMTMy
NzRhNWQxY2Y2ZDUyYjRhMjZlYzQ4ZGI1MDBhYmZmZTMzZWQ2Yi4uYjhiMjliMTg4YzhiOTIwOTk1
ZmFjNzFkYjFlODQwOTUyODYyODMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuaApAQCAtNzAsNiArNzAsOCBAQCBlbnVtIFJlYXNvbkZvckNhbGxp
bmdDYW5FeGVjdXRlU2NyaXB0cyB7CiAgICAgTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQKIH07CiAK
K3VzaW5nIFZhbHVlQW5kRXhjZXB0aW9uID0gc3RkOjpwYWlyPEpTQzo6SlNWYWx1ZSwgV1RGOjpP
cHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPj47CisKIGNsYXNzIFNjcmlwdENvbnRyb2xsZXIgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8U2NyaXB0Q29udHJvbGxlcj4gewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogCkBAIC04OCwxMCArOTAsMTAgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IHZvaWQgZ2V0QWxsV29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4mKTsKIAotICAg
IEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBFeGNl
cHRpb25EZXRhaWxzKiA9IG51bGxwdHIpOwotICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1
ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1
cmUgPSBmYWxzZSwgRXhjZXB0aW9uRGV0YWlscyogPSBudWxscHRyKTsKLSAgICBKU0M6OkpTVmFs
dWUgZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBz
Y3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlLCBFeGNlcHRpb25EZXRhaWxzKiA9
IG51bGxwdHIpOwotICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlVXNlckFn
ZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlLCBFeGNlcHRpb25EZXRhaWxzKiA9IG51bGxwdHIpOworICAg
IFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRp
b24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsK
KyAgICBKU0M6OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihE
T01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0
dXJlID0gZmFsc2UpOworICAgIFZhbHVlQW5kRXhjZXB0aW9uIGV4ZWN1dGVTY3JpcHRJbldvcmxk
KERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdl
c3R1cmUgPSBmYWxzZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgVmFsdWVBbmRFeGNlcHRpb24gZXhl
Y3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5n
JiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSk7CiAKICAgICBib29sIHNob3VsZEFsbG93
VXNlckFnZW50U2NyaXB0cyhEb2N1bWVudCYpIGNvbnN0OwogCkBAIC0xMDIsOCArMTA0LDkgQEAg
cHVibGljOgogICAgIC8vIERhcndpbiBpcyBhbiBleGNlcHRpb24gdG8gdGhpcyBydWxlOiBpdCBp
cyBPSyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSBhbnkgdGhyZWFkLCBldmVuIHJlZW50cmFu
dGx5LgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAotICAgIEpTQzo6
SlNWYWx1ZSBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRXhjZXB0aW9uRGV0YWls
cyogPSBudWxscHRyKTsKLSAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNj
cmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmLCBFeGNlcHRpb25EZXRhaWxzKiA9IG51
bGxwdHIpOworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKGNvbnN0
IFNjcmlwdFNvdXJjZUNvZGUmKTsKKyAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJbldvcmxkSWdu
b3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYp
OworICAgIFZhbHVlQW5kRXhjZXB0aW9uIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3Vy
Y2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7CiAKICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJ
bldvcmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBS
ZWY8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiYmLCBET01XcmFwcGVyV29ybGQmKTsKICAgICB2b2lk
IGxvYWRNb2R1bGVTY3JpcHQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcmIG1v
ZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFj
a2VuZC5jcHAKaW5kZXggYTc1NWZjYjkzY2ExMjIyMjhlNzJhNDU5NDhlZmI0MTA0MmNmMTVkNy4u
NTJmMzE5MmM1YjIwMDJmNTE4MzhhNzQ0OTI4N2I2ZWU4MGEzNTczZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgQ29udGVudFJ1bGVMaXN0UmVzdWx0cyBD
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50UnVsZUxpc3RzRm9yTG9hZCgK
ICAgICAgICAgICAgICAgICAmJiAoKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHVybC5o
b3N0KCksICJ3d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20iKSAmJiBlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZSh1cmwucGF0aCgpLCAiL2FuYWx5dGljcy5qcyIpKQogICAgICAgICAgICAgICAg
ICAgICB8fCAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodXJsLmhvc3QoKSwgInd3dy5n
b29nbGV0YWdtYW5hZ2VyLmNvbSIpICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHVy
bC5wYXRoKCksICIvZ3RtLmpzIikpKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBmcmFt
ZSA9IGN1cnJlbnREb2N1bWVudC0+ZnJhbWUoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUt
PnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUgeyAidHJ5IHsgd2luZG93LmRhdGFM
YXllci5oaWRlLmVuZCgpOyBjb25zb2xlLmxvZygnQ2FsbGVkIHdpbmRvdy5kYXRhTGF5ZXIuaGlk
ZS5lbmQoKSBpbiBmcmFtZSAnICsgZG9jdW1lbnQuVVJMICsgJyBiZWNhdXNlIHRoZSBjb250ZW50
IGJsb2NrZXIgYmxvY2tlZCB0aGUgbG9hZCBvZiB0aGUgaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5
dGljcy5jb20vYW5hbHl0aWNzLmpzIHNjcmlwdCcpOyB9IGNhdGNoIChlKSB7IH0iX3MgfSk7Cisg
ICAgICAgICAgICAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZUlnbm9yaW5nRXhjZXB0
aW9uKFNjcmlwdFNvdXJjZUNvZGUgeyAidHJ5IHsgd2luZG93LmRhdGFMYXllci5oaWRlLmVuZCgp
OyBjb25zb2xlLmxvZygnQ2FsbGVkIHdpbmRvdy5kYXRhTGF5ZXIuaGlkZS5lbmQoKSBpbiBmcmFt
ZSAnICsgZG9jdW1lbnQuVVJMICsgJyBiZWNhdXNlIHRoZSBjb250ZW50IGJsb2NrZXIgYmxvY2tl
ZCB0aGUgbG9hZCBvZiB0aGUgaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0
aWNzLmpzIHNjcmlwdCcpOyB9IGNhdGNoIChlKSB7IH0iX3MgfSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBmM2Y3ZjAzMmYyMGUx
YTVhM2YzYzhmMTNkMjI3MDk5ZjViODJiMWU5Li4xN2VkYzhiYzU4MmYzNjc0N2M3YmM0NGFiZTlk
ZDVhNGJmMGNiZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTcyMDEsNyArNzIwMSw3
IEBAIHZvaWQgRG9jdW1lbnQ6OmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdChET01XcmFwcGVy
V29ybGQmIHdvcmxkKQogICAgICAgICBqc1N0cmluZyA9IFN0cmluZyhwbHVnSW5zSmF2YVNjcmlw
dCwgc2l6ZW9mKHBsdWdJbnNKYXZhU2NyaXB0KSk7CiAKICAgICBzZXRIYXNFdmFsdWF0ZWRVc2Vy
QWdlbnRTY3JpcHRzKCk7Ci0gICAgc2NyaXB0Q29udHJvbGxlci5ldmFsdWF0ZUluV29ybGQoU2Ny
aXB0U291cmNlQ29kZShqc1N0cmluZyksIHdvcmxkKTsKKyAgICBzY3JpcHRDb250cm9sbGVyLmV2
YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUoanNTdHJpbmcp
LCB3b3JsZCk7CiAKICAgICBtX2hhc0luamVjdGVkUGx1Z0luc1NjcmlwdCA9IHRydWU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggZTBkOTY3YjQ1NzRiYjM1MzA4NWZi
Mzc3NjUwOTRjYzJmOGEzNTM4NS4uMTUxMTc1MTllZjkxMzQ2NzY3N2QyNTg2NTNjZDI3MjAxNzdl
ODA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMzg3LDcgKzM4Nyw3
IEBAIHZvaWQgU2NyaXB0RWxlbWVudDo6ZXhlY3V0ZUNsYXNzaWNTY3JpcHQoY29uc3QgU2NyaXB0
U291cmNlQ29kZSYgc291cmNlQ29kZSkKICAgICBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJ
bmNyZW1lbnRlciBpZ25vcmVEZXNjdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIobV9pc0V4
dGVybmFsU2NyaXB0ID8gJmRvY3VtZW50IDogbnVsbHB0cik7CiAgICAgQ3VycmVudFNjcmlwdElu
Y3JlbWVudGVyIGN1cnJlbnRTY3JpcHRJbmNyZW1lbnRlcihkb2N1bWVudCwgbV9lbGVtZW50KTsK
IAotICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZShzb3VyY2VDb2RlKTsKKyAgICBmcmFtZS0+
c2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihzb3VyY2VDb2RlKTsKIH0KIAogdm9p
ZCBTY3JpcHRFbGVtZW50OjpleGVjdXRlTW9kdWxlU2NyaXB0KExvYWRhYmxlTW9kdWxlU2NyaXB0
JiBsb2FkYWJsZU1vZHVsZVNjcmlwdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCmluZGV4IGViNWZmNTY3ZWQ4MTBkZmMxODUxMDY4MDMyOTNhMmQ1NjRjZTIzNDkuLjcz
MGI0ZTM4OWU3ODNmZTU2Njc1NWI4YWMzNjg4MTE5ZjA5NjkxNjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNzMxNyw3ICs3MzE3LDcgQEAgYm9vbCBIVE1M
TWVkaWFFbGVtZW50OjplbnN1cmVNZWRpYUNvbnRyb2xzSW5qZWN0ZWRTY3JpcHQoKQogI2Vsc2UK
ICAgICAgICAgVVJMIHNjcmlwdFVSTDsKICNlbmRpZgotICAgICAgICBzY3JpcHRDb250cm9sbGVy
LmV2YWx1YXRlSW5Xb3JsZChTY3JpcHRTb3VyY2VDb2RlKG1lZGlhQ29udHJvbHNTY3JpcHQsIFdU
Rk1vdmUoc2NyaXB0VVJMKSksIHdvcmxkKTsKKyAgICAgICAgc2NyaXB0Q29udHJvbGxlci5ldmFs
dWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKG1lZGlhQ29udHJv
bHNTY3JpcHQsIFdURk1vdmUoc2NyaXB0VVJMKSksIHdvcmxkKTsKICAgICAgICAgaWYgKFVOTElL
RUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRp
b24oKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAppbmRleCAx
YjNjODg3NmNjNjg3MzFiNWQ2MjhkZDJkZTJiOWQ2MDRmMmE0NWZiLi4wZDgzMTkyNTI3ODJkYTk1
YTcyZWQzNmNhNWYwNDhjN2NkOGM4NDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC00MjAsNyAr
NDIwLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpkaXNwYXRjaE1lc3Nh
Z2VBc3luYyhjb25zdCBTdHJpbmcmIG1lc3NhZ2VPYmoKIGJvb2wgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbDo6ZXZhbHVhdGVBc0Jvb2xlYW4oY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQog
ewogICAgIGF1dG8mIHN0YXRlID0gKm1haW5Xb3JsZEV4ZWNTdGF0ZSgmbV9mcm9udGVuZFBhZ2Ut
Pm1haW5GcmFtZSgpKTsKLSAgICByZXR1cm4gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnNj
cmlwdCgpLmV4ZWN1dGVTY3JpcHQoZXhwcmVzc2lvbikudG9XVEZTdHJpbmcoJnN0YXRlKSA9PSAi
dHJ1ZSI7CisgICAgcmV0dXJuIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5l
eGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oZXhwcmVzc2lvbikudG9XVEZTdHJpbmcoJnN0
YXRlKSA9PSAidHJ1ZSI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6
ZXZhbHVhdGVPbkxvYWQoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQpAQCAtNDMxLDcgKzQzMSw3
IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVhdGVPbkxvYWQoY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uKQogICAgIH0KIAogICAgIEpTQzo6U3VzcGVuZEV4Y2VwdGlv
blNjb3BlIHNjb3BlKCZtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnZtKCkp
OwotICAgIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5ldmFsdWF0ZShTY3Jp
cHRTb3VyY2VDb2RlKGV4cHJlc3Npb24pKTsKKyAgICBtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1l
KCkuc2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKGV4
cHJlc3Npb24pKTsKIH0KIAogUGFnZSogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6aW5z
cGVjdGVkUGFnZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggMDFlZGQwMDYwZGUzNjJjMWFiN2I3
MDI0NzVhZTgzODIyMjc5YTgwMC4uY2Y4OWY5ZWI1MDUyMzI2ZmNmOGNiZDI2ZDg1OTZjZjQ3MjRj
MjM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcApAQCAtNzczLDcgKzc3Myw3IEBAIHZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUmIGZyYW1lKQogICAgIGlm
IChtX2Jvb3RzdHJhcFNjcmlwdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZy
YW1lLnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUobV9ib290c3RyYXBTY3JpcHQs
IFVSTCB7IFVSTCgpLCAid2ViLWluc3BlY3RvcjovL2Jvb3RzdHJhcC5qcyJfcyB9KSk7CisgICAg
ZnJhbWUuc2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2Rl
KG1fYm9vdHN0cmFwU2NyaXB0LCBVUkwgeyBVUkwoKSwgIndlYi1pbnNwZWN0b3I6Ly9ib290c3Ry
YXAuanMiX3MgfSkpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkUGFpbnQoUmVu
ZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCBiNDk4YTIyNGIxOTBjNmNlODQ0ZWI5ZGQ3
ZWI5YjdhMTA1ZDc2ZGM1Li42ZWFmY2EzNGU4MWEzOTkyZGQxZmI4MGY5MDMyZWI5NmM4YjliNzc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMz
LDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUgc3RhdGUpCiAgICAgaWYg
KCF1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUpIHsKICAgICAg
ICAgdW5ibG9ja0hhbmRsZXIud3JhcFdpdGhEZWNpc2lvbkhhbmRsZXIoW3NjcmlwdENvbnRyb2xs
ZXIgPSBtYWtlV2Vha1B0cihmcmFtZS0+c2NyaXB0KCkpLCBzY3JpcHQgPSB1bmJsb2NrUmVxdWVz
dERlbmllZFNjcmlwdC5pc29sYXRlZENvcHkoKV0oYm9vbCB1bmJsb2NrZWQpIHsKICAgICAgICAg
ICAgIGlmICghdW5ibG9ja2VkICYmIHNjcmlwdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAg
c2NyaXB0Q29udHJvbGxlci0+ZXhlY3V0ZVNjcmlwdChzY3JpcHQpOworICAgICAgICAgICAgICAg
IHNjcmlwdENvbnRyb2xsZXItPmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihzY3JpcHQp
OwogICAgICAgICB9KTsKICAgICB9CiAgICAgbV9kb2N1bWVudExvYWRlci5mcmFtZUxvYWRlcigp
LT5jbGllbnQoKS5jb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdURk1vdmUodW5ibG9ja0hhbmRs
ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggMjJjYzFmZDE1YmMxN2NmZDg1NmU5MTRjMzhh
ODZiMGM0MmFjNzRiYy4uZTA4MzNkYzA4MzNmNTlhOWViMjYzNTA2MTMxY2RiYjk3YzlmOTIxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTYzNCw3ICs2MzQsNyBAQCB2b2lkIEZyYW1lOjppbmpl
Y3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgVXNl
clNjcmlwdAogCiAgICAgZG9jdW1lbnQtPnNldEFzUnVubmluZ1VzZXJTY3JpcHRzKCk7CiAgICAg
bG9hZGVyKCkuY2xpZW50KCkud2lsbEluamVjdFVzZXJTY3JpcHQod29ybGQpOwotICAgIG1fc2Ny
aXB0LT5ldmFsdWF0ZUluV29ybGQoU2NyaXB0U291cmNlQ29kZShzY3JpcHQuc291cmNlKCksIFVS
TChzY3JpcHQudXJsKCkpKSwgd29ybGQpOworICAgIG1fc2NyaXB0LT5ldmFsdWF0ZUluV29ybGRJ
Z25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdC5zb3VyY2UoKSwgVVJMKHNj
cmlwdC51cmwoKSkpLCB3b3JsZCk7CiB9CiAKIFJlbmRlclZpZXcqIEZyYW1lOjpjb250ZW50UmVu
ZGVyZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCmluZGV4IGZlMDFj
YzFmZjQ5MWMzNjdmY2FkOTdiZmQ0ZDZjNGU3MzBmNmJkYTguLmY5MGU0NDUyNGQ1ZGEzNzY2MmNj
MmRkNTVmNDIxZjI4OTc3YjQyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxU
cmVlVmlld2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAK
QEAgLTU2LDggKzU2LDggQEAgdm9pZCBYTUxUcmVlVmlld2VyOjp0cmFuc2Zvcm1Eb2N1bWVudFRv
VHJlZVZpZXcoKQogICAgIG1fZG9jdW1lbnQuc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJp
dHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpKTsK
IAogICAgIFN0cmluZyBzY3JpcHRTdHJpbmcgPSBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29w
eWluZyhYTUxWaWV3ZXJfanMsIHNpemVvZihYTUxWaWV3ZXJfanMpKTsKLSAgICBtX2RvY3VtZW50
LmZyYW1lKCktPnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0U3RyaW5n
KSk7Ci0gICAgbV9kb2N1bWVudC5mcmFtZSgpLT5zY3JpcHQoKS5ldmFsdWF0ZShTY3JpcHRTb3Vy
Y2VDb2RlKEF0b21TdHJpbmcoInByZXBhcmVXZWJLaXRYTUxWaWV3ZXIoJ1RoaXMgWE1MIGZpbGUg
ZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUgYW55IHN0eWxlIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQg
d2l0aCBpdC4gVGhlIGRvY3VtZW50IHRyZWUgaXMgc2hvd24gYmVsb3cuJyk7IikpKTsKKyAgICBt
X2RvY3VtZW50LmZyYW1lKCktPnNjcmlwdCgpLmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2Ny
aXB0U291cmNlQ29kZShzY3JpcHRTdHJpbmcpKTsKKyAgICBtX2RvY3VtZW50LmZyYW1lKCktPnNj
cmlwdCgpLmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29kZShBdG9tU3Ry
aW5nKCJwcmVwYXJlV2ViS2l0WE1MVmlld2VyKCdUaGlzIFhNTCBmaWxlIGRvZXMgbm90IGFwcGVh
ciB0byBoYXZlIGFueSBzdHlsZSBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggaXQuIFRoZSBk
b2N1bWVudCB0cmVlIGlzIHNob3duIGJlbG93LicpOyIpKSk7CiAKICAgICBTdHJpbmcgY3NzU3Ry
aW5nID0gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoWE1MVmlld2VyX2Nzcywgc2l6
ZW9mKFhNTFZpZXdlcl9jc3MpKTsKICAgICBhdXRvIHRleHQgPSBtX2RvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKGNzc1N0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cAppbmRleCA3MGVmYmZhM2U4N2EyYWJhY2M0NTE0NjQwZmRhM2Y3N2ViNjgwZTVmLi4wYzE1Zjhi
OTNjNzgwN2VmZDc0YmJlNDAwODI4NDQ0MWM1NmZhZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI0NzIsNyArMjQ3Miw3IEBAIHZvaWQgV0tQYWdlU2V0
UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNs
aWVudCkKIAogdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQYWdlUmVmIHBh
Z2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlUnVuSmF2
YVNjcmlwdEZ1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+cnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lKHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgdHJ1ZSwgW2Nv
bnRleHQsIGNhbGxiYWNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmV0dXJuVmFsdWUs
IGJvb2wsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVy
cm9yIGVycm9yKSB7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWUodG9JbXBsKHNjcmlwdFJlZiktPnN0cmluZygpLCB0cnVlLCBbY29udGV4dCwgY2FsbGJhY2td
KEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiByZXR1cm5WYWx1ZSwgT3B0aW9uYWw8V2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAg
ICAgY2FsbGJhY2sodG9BUEkocmV0dXJuVmFsdWUpLCAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpF
cnJvcjo6Tm9uZSkgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5wdHIoKSkgOiAwLCBjb250
ZXh0KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCmluZGV4IDMzNTRhYzZlZWNiNWE4ZDcxOThhZThhNThjYTI5OTQ0YzgzMGU1
MTAuLjE5NDJiMDI1NjFkZjE1OTgyY2EwYTExZDEwMGMzOTNjYjhiYTA0YmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTEyMiw3ICsx
MTIyLDcgQEAgLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3Jp
cHRTdHJpbmcgZm9yY2VVc2VyR2VzdHVyZTooQk9PTCkKIHsKICAgICBhdXRvIGhhbmRsZXIgPSBh
ZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSk7CiAKLSAgICBfcGFnZS0+cnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKGphdmFTY3JpcHRTdHJpbmcsIGZvcmNlVXNlckdlc3R1cmUsIFtoYW5k
bGVyXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBi
b29sIGhhZEV4Y2VwdGlvbiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyYgZGV0YWls
cywgV2ViS2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvciBlcnJvckNvZGUpIHsKKyAgICBf
cGFnZS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGphdmFTY3JpcHRTdHJpbmcsIGZvcmNlVXNl
ckdlc3R1cmUsIFtoYW5kbGVyXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxz
LCBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJhY2s6OkVycm9yIGVycm9yQ29kZSkgewogICAgICAg
ICBpZiAoIWhhbmRsZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTExNDUsMTggKzExNDUs
MTggQEAgLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRT
dHJpbmcgZm9yY2VVc2VyR2VzdHVyZTooQk9PTCkKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8g
cmF3SGFuZGxlciA9ICh2b2lkICheKShpZCwgTlNFcnJvciAqKSloYW5kbGVyLmdldCgpOwotICAg
ICAgICBpZiAoaGFkRXhjZXB0aW9uKSB7CisgICAgICAgIGlmIChkZXRhaWxzKSB7CiAgICAgICAg
ICAgICBBU1NFUlQoIXNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CiAKICAgICAgICAgICAgIFJldGFp
blB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiB1c2VySW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAKICAgICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmpl
Y3Q6bG9jYWxpemVkRGVzY3JpcHRpb25Gb3JFcnJvckNvZGUoV0tFcnJvckphdmFTY3JpcHRFeGNl
cHRpb25PY2N1cnJlZCkgZm9yS2V5Ok5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXldOwotICAgICAg
ICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihkZXRhaWxz
Lm1lc3NhZ2UpIGZvcktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTWVzc2FnZUVycm9yS2V5XTsK
LSAgICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QChkZXRhaWxzLmxpbmVOdW1iZXIpIGZv
cktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTGluZU51bWJlckVycm9yS2V5XTsKLSAgICAgICAg
ICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QChkZXRhaWxzLmNvbHVtbk51bWJlcikgZm9yS2V5Ol9X
S0phdmFTY3JpcHRFeGNlcHRpb25Db2x1bW5OdW1iZXJFcnJvcktleV07CisgICAgICAgICAgICBb
dXNlckluZm8gc2V0T2JqZWN0OnN0YXRpY19jYXN0PE5TU3RyaW5nICo+KGRldGFpbHMtPm1lc3Nh
Z2UpIGZvcktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTWVzc2FnZUVycm9yS2V5XTsKKyAgICAg
ICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QChkZXRhaWxzLT5saW5lTnVtYmVyKSBmb3JLZXk6
X1dLSmF2YVNjcmlwdEV4Y2VwdGlvbkxpbmVOdW1iZXJFcnJvcktleV07CisgICAgICAgICAgICBb
dXNlckluZm8gc2V0T2JqZWN0OkAoZGV0YWlscy0+Y29sdW1uTnVtYmVyKSBmb3JLZXk6X1dLSmF2
YVNjcmlwdEV4Y2VwdGlvbkNvbHVtbk51bWJlckVycm9yS2V5XTsKIAotICAgICAgICAgICAgaWYg
KCFkZXRhaWxzLnNvdXJjZVVSTC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgW3VzZXJJbmZv
IHNldE9iamVjdDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOmRldGFpbHMuc291cmNlVVJM
XSBmb3JLZXk6X1dLSmF2YVNjcmlwdEV4Y2VwdGlvblNvdXJjZVVSTEVycm9yS2V5XTsKKyAgICAg
ICAgICAgIGlmICghZGV0YWlscy0+c291cmNlVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAg
ICBbdXNlckluZm8gc2V0T2JqZWN0OltOU1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJpbmc6ZGV0YWls
cy0+c291cmNlVVJMXSBmb3JLZXk6X1dLSmF2YVNjcmlwdEV4Y2VwdGlvblNvdXJjZVVSTEVycm9y
S2V5XTsKIAogICAgICAgICAgICAgcmF3SGFuZGxlcihuaWwsIGFkb3B0TlMoW1tOU0Vycm9yIGFs
bG9jXSBpbml0V2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvckphdmFTY3JpcHRF
eGNlcHRpb25PY2N1cnJlZCB1c2VySW5mbzp1c2VySW5mby5nZXQoKV0pLmdldCgpKTsKICAgICAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggZDIxYzc4MmVkZWQxMjEzYzY5MTMxMWNkMmRjOTViZmJj
NGQ4NzZlYS4uNTczZjI5ZTI0ZmJjZTFkZWIyOTdmZmUxYjk2ZTMzOGNmNzc4YTEyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAK
QEAgLTM2MDYsNyArMzYwNiwxMCBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlw
dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogc2NyaXB0LAogICAgIGdfcmV0
dXJuX2lmX2ZhaWwoc2NyaXB0KTsKIAogICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdS
ZWYoZ190YXNrX25ldyh3ZWJWaWV3LCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKSk7
Ci0gICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoU3RyaW5nOjpm
cm9tVVRGOChzY3JpcHQpLCB0cnVlLCBbdGFzayA9IFdURk1vdmUodGFzayldKEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGJvb2wsIGNvbnN0IEV4Y2Vw
dGlvbkRldGFpbHMmIGV4Y2VwdGlvbkRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJv
cikgeworICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFN0cmlu
Zzo6ZnJvbVVURjgoc2NyaXB0KSwgdHJ1ZSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxFeGNl
cHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAg
ICAgICAgRXhjZXB0aW9uRGV0YWlscyBleGNlcHRpb25EZXRhaWxzOworICAgICAgICBpZiAoZGV0
YWlscykKKyAgICAgICAgICAgIGV4Y2VwdGlvbkRldGFpbHMgPSAqZGV0YWlsczsKICAgICAgICAg
d2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRDYWxsYmFjayhzZXJpYWxpemVkU2NyaXB0VmFsdWUs
IGV4Y2VwdGlvbkRldGFpbHMsIHRhc2suZ2V0KCkpOwogICAgIH0pOwogfQpAQCAtMzcwNCw3ICsz
NzA3LDEwIEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0X2luX3dvcmxkKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyCiAgICAgZ19yZXR1cm5faWZfZmFpbCh3
b3JsZE5hbWUpOwogCiAgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0R1JlZihnX3Rhc2tf
bmV3KHdlYlZpZXcsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpKTsKLSAgICBnZXRQ
YWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFN0cmluZzo6
ZnJvbVVURjgoc2NyaXB0KSwgdHJ1ZSwgU3RyaW5nOjpmcm9tVVRGOCh3b3JsZE5hbWUpLCBbdGFz
ayA9IFdURk1vdmUodGFzayldKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVk
U2NyaXB0VmFsdWUsIGJvb2wsIGNvbnN0IEV4Y2VwdGlvbkRldGFpbHMmIGV4Y2VwdGlvbkRldGFp
bHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgIGdldFBhZ2Uod2ViVmlldyku
cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoU3RyaW5nOjpmcm9tVVRGOChzY3Jp
cHQpLCB0cnVlLCBTdHJpbmc6OmZyb21VVEY4KHdvcmxkTmFtZSksIFt0YXNrID0gV1RGTW92ZSh0
YXNrKV0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwg
T3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6
OkVycm9yKSB7CisgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZXhjZXB0aW9uRGV0YWlsczsKKyAg
ICAgICAgaWYgKGRldGFpbHMpCisgICAgICAgICAgICBleGNlcHRpb25EZXRhaWxzID0gKmRldGFp
bHM7CiAgICAgICAgIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2soc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLCBleGNlcHRpb25EZXRhaWxzLCB0YXNrLmdldCgpKTsKICAgICB9KTsKIH0K
QEAgLTM3NDQsNyArMzc1MCwxMCBAQCBzdGF0aWMgdm9pZCByZXNvdXJjZXNTdHJlYW1SZWFkQ2Fs
bGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZwogICAgIFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ190YXNrX2dldF9zb3VyY2Vfb2Jq
ZWN0KHRhc2suZ2V0KCkpKTsKICAgICBncG9pbnRlciBvdXRwdXRTdHJlYW1EYXRhID0gZ19tZW1v
cnlfb3V0cHV0X3N0cmVhbV9nZXRfZGF0YShHX01FTU9SWV9PVVRQVVRfU1RSRUFNKG9iamVjdCkp
OwogICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFN0cmluZzo6
ZnJvbVVURjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBnY2hhcio+KG91dHB1dFN0cmVhbURhdGEp
KSwgdHJ1ZSwKLSAgICAgICAgW3Rhc2tdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJp
YWxpemVkU2NyaXB0VmFsdWUsIGJvb2wsIGNvbnN0IEV4Y2VwdGlvbkRldGFpbHMmIGV4Y2VwdGlv
bkRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgICAgICBbdGFza10o
QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9u
YWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9y
KSB7CisgICAgICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGV4Y2VwdGlvbkRldGFpbHM7CisgICAg
ICAgICAgICBpZiAoZGV0YWlscykKKyAgICAgICAgICAgICAgICBleGNlcHRpb25EZXRhaWxzID0g
KmRldGFpbHM7CiAgICAgICAgICAgICB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdENhbGxiYWNr
KHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgZXhjZXB0aW9uRGV0YWlscywgdGFzay5nZXQoKSk7CiAg
ICAgICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggZTNiNDUyMzk5NzkzYTZiMWQ2NzQ2Y2Y5YmY0NDg4MzQ1OGZlYWI3Zi4uMmEzZjE5NjYzNTgx
ODExOWI1MzMxMWMwYzgzNzVlZTE4YzQxYzI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC0zODQ1LDE4ICszODQ1LDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCkKICAgICAgICAgbGF1bmNoUHJvY2Vz
cyh7IH0sIFByb2Nlc3NMYXVuY2hSZWFzb246OkluaXRpYWxQcm9jZXNzKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIHNjcmlw
dCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IEV4Y2VwdGlvbkRldGFp
bHMmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQ
YWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgcnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lU2NyaXB0V29ybGQoc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6Om51
bGxvcHQsIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3Jp
cHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGRO
YW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBib29s
IGhhZEV4Y2VwdGlvbiwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VV
c2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25E
ZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAg
ICAvLyBGb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0eSBzdXBwb3J0IHJ1bm5pbmcgc2NyaXB0IGlu
IGEgV2ViVmlldyB3aGljaCBoYXMgbm90IGRvbmUgYW55IGxvYWRzIHlldHMuCiAgICAgbGF1bmNo
SW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0ciwgZmFsc2UsIHsgfSwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CisgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24obnVs
bHB0ciwgeyB9LCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMzg2NCw3ICszODY0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib28K
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3Jp
cHRXb3JsZChzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCkp
OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWUoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1
cmUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wg
aGFkRXhjZXB0aW9uLCBjb25zdCBFeGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0
SW5GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJv
b2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlKiwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKG1haW5GcmFtZSgpLT5mcmFt
ZUlEKCkgIT0gZnJhbWVJRCk7CiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lIl9zKSk7CkBA
IC02Nzg3LDcgKzY3ODcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW52YWxpZGF0ZVN0cmluZ0Nh
bGxiYWNrKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgp
OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBF
eGNlcHRpb25EZXRhaWxzJiBkZXRhaWxzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdl
YlBhZ2VQcm94eTo6c2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IGRhdGFSZWZlcmVuY2UsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFr
ZTxTY3JpcHRWYWx1ZUNhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKSB7
CkBAIC02Nzk2LDcgKzY3OTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2NyaXB0VmFsdWVDYWxs
YmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsCiAgICAgfQogCiAg
ICAgaWYgKGRhdGFSZWZlcmVuY2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNhbGxiYWNrLT5wZXJm
b3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUobnVsbHB0ciwgaGFkRXhjZXB0aW9uLCBkZXRhaWxz
KTsKKyAgICAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShudWxs
cHRyLCBkZXRhaWxzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjgwNCw3ICs2ODA0
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNjcmlwdFZhbHVlQ2FsbGJhY2soY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLAogICAgIGRhdGEucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShkYXRhUmVmZXJlbmNlLnNpemUoKSk7CiAgICAgZGF0YS5hcHBlbmQoZGF0YVJlZmVyZW5j
ZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKIAotICAgIGNhbGxiYWNrLT5wZXJmb3Jt
Q2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0
KFdURk1vdmUoZGF0YSkpLnB0cigpLCBoYWRFeGNlcHRpb24sIGRldGFpbHMpOworICAgIGNhbGxi
YWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmFkb3B0KFdURk1vdmUoZGF0YSkpLnB0cigpLCBkZXRhaWxzKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmNvbXB1dGVkUGFnZXNDYWxsYmFjayhjb25zdCBWZWN0b3I8SW50UmVjdD4m
IHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgY29uc3QgRmxv
YXRCb3hFeHRlbnQmIGNvbXB1dGVkUGFnZU1hcmdpbiwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBhZTM4NTIyMjFkNGE1MjQz
NTUyYmEwMjNmMmY0OGI5NGVmN2I5OGFkLi4wMjc0ZDdjZTJmNDM2ODE1NGNjYjY3OTI1Y2QwZjlk
YTQzYzI5Y2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNzUs
NiArNzUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVu
dFRyYWNraW5nUmVnaW9ucy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uRGV0YWlscy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udEF0dHJpYnV0ZXMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ZyYW1lTG9hZGVyVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPiAvLyBG
SVhNRTogTW92ZSBMYXlvdXRWaWV3cG9ydENvbnN0cmFpbnQgdG8gaXRzIG93biBmaWxlIGFuZCBz
dG9wIGluY2x1ZGluZyB0aGlzLgpAQCAtMzM1LDcgKzMzNiw3IEBAIHR5cGVkZWYgR2VuZXJpY0Nh
bGxiYWNrPEFQSTo6RGF0YSo+IERhdGFDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNr
PHVpbnQ2NF90PiBVbnNpZ25lZENhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8RWRp
dGluZ1JhbmdlPiBFZGl0aW5nUmFuZ2VDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNr
PGNvbnN0IFN0cmluZyY+IFN0cmluZ0NhbGxiYWNrOwotdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8
QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBib29sLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRp
b25EZXRhaWxzJj4gU2NyaXB0VmFsdWVDYWxsYmFjazsKK3R5cGVkZWYgR2VuZXJpY0NhbGxiYWNr
PEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9u
RGV0YWlscz4+IFNjcmlwdFZhbHVlQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxj
b25zdCBXZWJDb3JlOjpGb250QXR0cmlidXRlcyY+IEZvbnRBdHRyaWJ1dGVzQ2FsbGJhY2s7CiB0
eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmPiBTZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxs
YmFjazxib29sPiBCb29sQ2FsbGJhY2s7CkBAIC0xMDYwLDEwICsxMDYxLDEwIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoRnVuY3Rpb248dm9pZCAoQVBJ
OjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0U291cmNlRm9y
RnJhbWUoV2ViRnJhbWVQcm94eSosIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUo
V2ViRnJhbWVQcm94eSosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJp
bmcmLCBib29sLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
KiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKLSAgICB2b2lkIHJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYsIGJvb2wsIGNvbnN0
IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IFdlYkNvcmU6OkV4
Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9u
KTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmLCBib29s
LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9u
YWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrRnVuY3Rpb24pOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0
V29ybGQoY29uc3QgU3RyaW5nJiwgYm9vbCwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGRO
YW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRp
b25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYg
Y2FsbGJhY2tGdW5jdGlvbik7CiAgICAgLy8gRm9yIHN1YiBmcmFtZXMuCi0gICAgdm9pZCBydW5K
YXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
c2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpF
eGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlv
bik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVu
Y3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6
OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKTsKICAgICB2b2lkIGZvcmNlUmVwYWludChSZWZQdHI8Vm9pZENhbGxiYWNrPiYmKTsKIAog
ICAgIGZsb2F0IGhlYWRlckhlaWdodChXZWJGcmFtZVByb3h5Jik7CkBAIC0xOTQzLDcgKzE5NDQs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgYm9vbENhbGxiYWNrKGJvb2wgcmVzdWx0LCBDYWxsYmFj
a0lEKTsKICAgICB2b2lkIHN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQp
OwogICAgIHZvaWQgaW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKENhbGxiYWNrSUQpOwotICAgIHZv
aWQgc2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBib29sIGhh
ZEV4Y2VwdGlvbiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNrSUQp
OworICAgIHZvaWQgc2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
LCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tJRCk7CiAgICAg
dm9pZCBjb21wdXRlZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+
JiwgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgY29uc3QgV2ViQ29yZTo6Rmxv
YXRCb3hFeHRlbnQmIGNvbXB1dGVkUGFnZU1hcmdpbiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCB2
YWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBib29sLCBpbnQsIENhbGxiYWNr
SUQpOwogICAgIHZvaWQgdW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCwgQ2FsbGJhY2tJRCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5k
ZXggMGM2NTFlNjg1YjI5NzlmNGUzNmU5YzhhNTg2NDE2ZDY3MWJkZmZmNS4uNGRlZjVkYzAxZGI0
ZDQyOWZiYjdkNzE2OTM4YTExMTcwZDllYTIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTY5LDcgKzE2OSw3IEBAIG1lc3Nh
Z2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgU3RyaW5nQ2FsbGJhY2soU3RyaW5nIHJlc3VsdFN0
cmluZywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgQm9vbENhbGxiYWNrKGJv
b2wgcmVzdWx0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBJbnZhbGlkYXRl
U3RyaW5nQ2FsbGJhY2soV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgU2NyaXB0
VmFsdWVDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwgYm9vbCBoYWRFeGNl
cHRpb24sIHN0cnVjdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzIGRldGFpbHMsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFNjcmlwdFZhbHVlQ2FsbGJhY2soSVBDOjpEYXRh
UmVmZXJlbmNlIHJlc3VsdERhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+
IGRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIENvbXB1dGVkUGFn
ZXNDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gcGFnZVJlY3RzLCBkb3VibGUgdG90
YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBXZWJDb3JlOjpSZWN0RWRnZXM8ZmxvYXQ+IGNvbXB1
dGVkUGFnZU1hcmdpbiwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgVmFsaWRh
dGVDb21tYW5kQ2FsbGJhY2soU3RyaW5nIGNvbW1hbmQsIGJvb2wgaXNFbmFibGVkLCBpbnQzMl90
IHN0YXRlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBFZGl0aW5nUmFuZ2VD
YWxsYmFjayhzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcAppbmRleCA4OGUxM2FkODJhZGNlYzRmYmVlNjg1ZjJjN2JlNDU5OGY4ZDRj
YmJmLi4zZWEwMDZiM2NlMzhlMzg5NDFmZGJkNTg2NzNjZDgxYTY4MmMyNTMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTI1Myw3
ICsxMjUzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtSmF2YVNjcmlwdFVSTFJlcXVlc3Qo
VVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICAvLyBFdmFsdWF0ZSB0aGUgSmF2YVNjcmlwdCBjb2Rl
LiBOb3RlIHRoYXQgcnVubmluZyBKYXZhU2NyaXB0IGhlcmUgY291bGQgY2F1c2UgdGhlIHBsdWct
aW4gdG8gYmUgZGVzdHJveWVkLCBzbyB3ZQogICAgIC8vIGdyYWIgcmVmZXJlbmNlcyB0byB0aGUg
cGx1Zy1pbiBoZXJlLgogICAgIFJlZlB0cjxQbHVnaW4+IHBsdWdpbiA9IG1fcGx1Z2luOwotICAg
IGF1dG8gcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoanNTdHJpbmcsIHJl
cXVlc3QtPmFsbG93UG9wdXBzKCkpOworICAgIGF1dG8gcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgp
LmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihqc1N0cmluZywgcmVxdWVzdC0+YWxsb3dQ
b3B1cHMoKSk7CiAKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yRnJvbnRlbmRB
UElEaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAKaW5kZXggOTA4ZTM5YWZkYjBjODg5Y2Zl
NTY1MmIzOWFkYzQ3MGMzYTA5YTlhMi4uYzE4OWU5ODI1YWQ0OTQ3MGVkNjI0MzVlODZkNTlkZjYw
ZjM4YWU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwCkBA
IC05OSw3ICs5OSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpl
dmFsdWF0ZU9yUXVldWVFeHByZXNzaW9uKGNvbnN0IFN0cmluZyYKIAogICAgIEFTU0VSVChtX3F1
ZXVlLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKCFtX3BhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1l
KCkuc2NyaXB0KCkuaXNQYXVzZWQoKSk7Ci0gICAgbV9wYWdlLmNvcmVQYWdlKCktPm1haW5GcmFt
ZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoZXhwcmVzc2lvbik7CisgICAgbV9wYWdlLmNvcmVQ
YWdlKCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlv
bihleHByZXNzaW9uKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNo
ZXI6OmV2YWx1YXRlUXVldWVkRXhwcmVzc2lvbnMoKQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQg
V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpldmFsdWF0ZVF1ZXVlZEV4cHJlc3Np
b25zKCkKIAogICAgIGZvciAoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uIDogbV9xdWV1ZSkgewog
ICAgICAgICBBU1NFUlQoIW1fcGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5p
c1BhdXNlZCgpKTsKLSAgICAgICAgbV9wYWdlLmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnNjcmlw
dCgpLmV4ZWN1dGVTY3JpcHQoZXhwcmVzc2lvbik7CisgICAgICAgIG1fcGFnZS5jb3JlUGFnZSgp
LT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oZXhw
cmVzc2lvbik7CiAgICAgfQogCiAgICAgbV9xdWV1ZS5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA3MzVmZWE0ZWUxM2JlNDI1YzIz
NGJlOTIxMjBmZTllN2JjYTJkNWM3Li4xMjQ3MDJjZTVlODkzMDNiY2I2MzExZWExNWNmNDdkMDEy
ZTM3ODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtMzM1MywyMyArMzM1MywyNSBAQCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2Vi
RnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZQogICAgIC8v
IE5PVEU6IFdlIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aGVuIHJ1bm5pbmcgc2NyaXB0cyB0aGF0IHRo
ZSBvYmplY3RzIHdlIGRlcGVuZCBvbiBkb24ndAogICAgIC8vIGRpc2FwcGVhciBkdXJpbmcgc2Ny
aXB0IGV4ZWN1dGlvbi4KIAotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlh
bGl6ZWRSZXN1bHRWYWx1ZTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhjb21tb25WTSgpKTsKLSAg
ICBib29sIGhhZEV4Y2VwdGlvbiA9IHRydWU7Ci0gICAgRXhjZXB0aW9uRGV0YWlscyBkZXRhaWxz
OworICAgIFZhbHVlQW5kRXhjZXB0aW9uIHJlc3VsdDsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBzZXJpYWxpemVkUmVzdWx0VmFsdWU7CisKICAgICBhdXRvKiB3b3JsZCA9IHdv
cmxkTmFtZSA/IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmZpbmQod29ybGROYW1lLnZhbHVl
KCkpIDogJkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCk7CiAgICAgaWYg
KGZyYW1lICYmIGZyYW1lLT5jb3JlRnJhbWUoKSAmJiB3b3JsZCkgewotICAgICAgICBpZiAoSlNW
YWx1ZSByZXN1bHRWYWx1ZSA9IGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZXhlY3V0ZVVz
ZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgpLCBzY3JpcHQsIGZvcmNlVXNl
ckdlc3R1cmUsICZkZXRhaWxzKSkgewotICAgICAgICAgICAgaGFkRXhjZXB0aW9uID0gZmFsc2U7
CisgICAgICAgIHJlc3VsdCA9IGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZXhlY3V0ZVVz
ZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgpLCBzY3JpcHQsIGZvcmNlVXNl
ckdlc3R1cmUpOworICAgICAgICBpZiAocmVzdWx0LmZpcnN0KSB7CisgICAgICAgICAgICBBU1NF
UlQoIXJlc3VsdC5zZWNvbmQpOwogICAgICAgICAgICAgc2VyaWFsaXplZFJlc3VsdFZhbHVlID0g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZnJhbWUtPmpzQ29udGV4dEZvcldvcmxkKHdv
cmxkKSwKLSAgICAgICAgICAgICAgICB0b1JlZihmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgp
Lmdsb2JhbE9iamVjdCh3b3JsZC0+Y29yZVdvcmxkKCkpLCByZXN1bHRWYWx1ZSksIG51bGxwdHIp
OworICAgICAgICAgICAgICAgIHRvUmVmKGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZ2xv
YmFsT2JqZWN0KHdvcmxkLT5jb3JlV29ybGQoKSksIHJlc3VsdC5maXJzdCksIG51bGxwdHIpOwog
ICAgICAgICB9CiAgICAgfQogCiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7
CiAgICAgaWYgKHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSkKICAgICAgICAgZGF0YVJlZmVyZW5jZSA9
IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0YSgpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBoYWRFeGNlcHRpb24s
IGRldGFpbHMsIGNhbGxiYWNrSUQpKTsKKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6U2NyaXB0VmFsdWVDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCByZXN1bHQuc2Vjb25kLCBjYWxs
YmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2Ny
aXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29u
c3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQubW0KaW5kZXggOTQ3YmZjNTM0MmNiY2FjMDlhYWFmNTEyY2NkYjZk
ZmU5Y2IxY2E0MS4uZWE1MDc4ZWQxOGY1NTA1MmRmMmU0MjgxM2UyYTZmNzA4NTVjZTdjYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5tbQpAQCAtMzc5LDcgKzM3OSw3IEBAIHZvaWQgV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0
IFN0cmluZyYKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBbY29udGVudENvcHkgd3JpdGVU
b1VSTDphY3R1YWxVUkwgYXRvbWljYWxseTpZRVMgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmcgZXJyb3I6TlVMTF07CiAKLSAgICAgICAgY29yZShbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xs
ZXIgZnJvbnRlbmRXZWJWaWV3XSktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQo
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJbnNwZWN0b3JGcm9udGVuZEFQSS5zYXZlZFVS
TChcIiVAXCIpIiwgYWN0dWFsVVJMLmFic29sdXRlU3RyaW5nXSk7CisgICAgICAgIGNvcmUoW21f
ZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyIGZyb250ZW5kV2ViVmlld10pLT5tYWluRnJhbWUoKS5z
Y3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oW05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCJJbnNwZWN0b3JGcm9udGVuZEFQSS5zYXZlZFVSTChcIiVAXCIpIiwgYWN0dWFs
VVJMLmFic29sdXRlU3RyaW5nXSk7CiAgICAgfTsKIAogICAgIGlmICghZm9yY2VTYXZlRGlhbG9n
KSB7CkBAIC00MjUsNyArNDI1LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
YXBwZW5kKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcKICAgICBbaGFu
ZGxlIHdyaXRlRGF0YTpbY29udGVudCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNv
ZGluZ11dOwogICAgIFtoYW5kbGUgY2xvc2VGaWxlXTsKIAotICAgIGNvcmUoW21fZnJvbnRlbmRX
aW5kb3dDb250cm9sbGVyIGZyb250ZW5kV2ViVmlld10pLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5l
eGVjdXRlU2NyaXB0KFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRl
bmRBUEkuYXBwZW5kZWRUb1VSTChcIiVAXCIpIiwgW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ11d
KTsKKyAgICBjb3JlKFttX2Zyb250ZW5kV2luZG93Q29udHJvbGxlciBmcm9udGVuZFdlYlZpZXdd
KS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKFtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuYXBwZW5kZWRU
b1VSTChcIiVAXCIpIiwgW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ11dKTsKIH0KIAogLy8gTUFS
SzogLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXgg
MThkM2Q5ZWMxNGQ4YzY5NWQwM2Y5M2MzZGQyMDE2YWQ0MDk0YTQ1OC4uMDViNTY5MzA0MzY0YjQ5
Njk3MWQ4OWRkOTdmZjhkZTJjZjQ1NjcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC03MDAsNyArNzAwLDcgQEAgLSAoTlNTdHJpbmcgKilfc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGZv
cmNlVXMKICAgICBKU0M6OkpTTG9ja0hvbGRlciBqc2NMb2NrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogI2VuZGlmCiAKLSAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gX3ByaXZhdGUtPmNvcmVGcmFt
ZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChzdHJpbmcsIGZvcmNlVXNlckdlc3R1cmUpOworICAg
IEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zY3JpcHQoKS5leGVj
dXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oc3RyaW5nLCBmb3JjZVVzZXJHZXN0dXJlKTsKIAog
ICAgIGlmICghX3ByaXZhdGUtPmNvcmVGcmFtZSkgLy8gSW4gY2FzZSB0aGUgc2NyaXB0IHJlbW92
ZWQgb3VyIGZyYW1lIGZyb20gdGhlIHBhZ2UuCiAgICAgICAgIHJldHVybiBAIiI7CkBAIC0yMDk2
LDcgKzIwOTYsNyBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
RnJvbVN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgd2l0aEdsbwogICAgIEFTU0VSVChmcmFtZS0+
ZG9jdW1lbnQoKSk7CiAgICAgUmV0YWluUHRyPFdlYkZyYW1lPiB3ZWJGcmFtZShraXQoZnJhbWUp
KTsgLy8gUnVubmluZyBhcmJpdHJhcnkgSmF2YVNjcmlwdCBjYW4gZGVzdHJveSB0aGUgZnJhbWUu
CiAKLSAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVVc2Vy
QWdlbnRTY3JpcHRJbldvcmxkKCpjb3JlKHdvcmxkKSwgc3RyaW5nLCB0cnVlKTsKKyAgICBKU0M6
OkpTVmFsdWUgcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJ
bldvcmxkKCpjb3JlKHdvcmxkKSwgc3RyaW5nLCB0cnVlKS5maXJzdDsKIAogICAgIGlmICghd2Vi
RnJhbWUtPl9wcml2YXRlLT5jb3JlRnJhbWUpIC8vIEluIGNhc2UgdGhlIHNjcmlwdCByZW1vdmVk
IG91ciBmcmFtZSBmcm9tIHRoZSBwYWdlLgogICAgICAgICByZXR1cm4gQCIiOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDQ3YWFlMzI4ZGJjNmFjZmJl
YWJiM2FlYzZkMjc4M2NiNGY1OWYwNzEuLjk2MWUwNWNmMWMyMjlkZTExMDQ2YjdjNGZiODM0ZjUz
MzliYjgyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
QEAgLTc5MDgsNyArNzkwOCw3IEBAIC0gKE5TQXBwbGVFdmVudERlc2NyaXB0b3IgKilhZURlc2NC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzooTlNTdHJpbmcgKilzCiAgICAgICAgIHJl
dHVybiBuaWw7CiAgICAgaWYgKCFjb3JlRnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVy
biBuaWw7Ci0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGNvcmVGcmFtZS0+c2NyaXB0KCkuZXhl
Y3V0ZVNjcmlwdChzY3JpcHQsIHRydWUpOworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBjb3Jl
RnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihzY3JpcHQsIHRy
dWUpOwogICAgIGlmICghcmVzdWx0KSAvLyBGSVhNRTogcGFzcyBlcnJvcnMKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhjb3JlRnJhbWUtPnNjcmlwdCgpLmds
b2JhbE9iamVjdChXZWJDb3JlOjptYWluVGhyZWFkTm9ybWFsV29ybGQoKSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZTVlZjYzYjRj
ZDg2NzE3YjM2MGIwOTljODYyZTI3YTYzNTExNTA0My4uODE2MGRhMTRhYzAwOTM5NjgwYzIyZGVk
YzJhMjVkM2MzYTZlMzBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCkBAIC00MzksNyArNDM5LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJm
b3JtUmVxdWVzdChQbHVnaW5SZXF1ZXN0KiByZXF1ZXN0KQogICAgIAogICAgIC8vIEV4ZWN1dGlu
ZyBhIHNjcmlwdCBjYW4gY2F1c2UgdGhlIHBsdWdpbiB2aWV3IHRvIGJlIGRlc3Ryb3llZCwgc28g
d2Uga2VlcCBhIHJlZmVyZW5jZSB0byBpdC4KICAgICBSZWZQdHI8UGx1Z2luVmlldz4gcHJvdGVj
dG9yKHRoaXMpOwotICAgIGF1dG8gcmVzdWx0ID0gbV9wYXJlbnRGcmFtZS0+c2NyaXB0KCkuZXhl
Y3V0ZVNjcmlwdChqc1N0cmluZywgcmVxdWVzdC0+c2hvdWxkQWxsb3dQb3B1cHMoKSk7CisgICAg
YXV0byByZXN1bHQgPSBtX3BhcmVudEZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3Jp
bmdFeGNlcHRpb24oanNTdHJpbmcsIHJlcXVlc3QtPnNob3VsZEFsbG93UG9wdXBzKCkpOwogCiAg
ICAgaWYgKHRhcmdldEZyYW1lTmFtZS5pc051bGwoKSkgewogICAgICAgICBDU3RyaW5nIGNzdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggNmVmYWU4ZjYyMjk4NDljYTFm
NTk2YjczNTVjZWVmNDNjZmQ2OTBhOC4uYzc3OGUyMmI3MGRjZjE4NTUyMmNhNmUyMDliODcwOTE5
NWI1MTQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAtMjA1NSw3ICsy
MDU1LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdElu
U2NyaXB0V29ybGQoSVdlYlNjcmlwdFdvcmxkKiBpV28KICAgICAvLyBHZXQgdGhlIGZyYW1lIGZy
b21lIHRoZSBnbG9iYWwgb2JqZWN0IHdlJ3ZlIHNldHRsZWQgb24uCiAgICAgRnJhbWUqIGZyYW1l
ID0gYW55V29ybGRHbG9iYWxPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpOwogICAgIEFTU0VSVChm
cmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCku
ZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQtPndvcmxkKCksIHN0cmluZywgdHJ1ZSk7CisgICAg
SlNWYWx1ZSByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25v
cmluZ0V4Y2VwdGlvbih3b3JsZC0+d29ybGQoKSwgc3RyaW5nLCB0cnVlKTsKIAogICAgIGlmICgh
ZnJhbWUpIC8vIEluIGNhc2UgdGhlIHNjcmlwdCByZW1vdmVkIG91ciBmcmFtZSBmcm9tIHRoZSBw
YWdlLgogICAgICAgICByZXR1cm4gU19PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAK
aW5kZXggYTA0NDhiYjAxM2VkZmI0MzM1ZmJjOWFiYzhhN2UzMDgwNzdmMDA0My4uZTcyZWE0M2Vk
Yjc5YzhhMDIxY2M2ZGZjMThhOTlkNWJjMDhlM2ZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Vmlldy5jcHAKQEAgLTM2NjMsNyArMzY2Myw3IEBAIEhSRVNVTFQgV2ViVmlldzo6c3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmcoX0luXyBCU1RSIHNjcmlwdCwgLy8gYXNzCiAg
ICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKLSAgICBh
dXRvIHNjcmlwdEV4ZWN1dGlvblJlc3VsdCA9IGNvcmVGcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNj
cmlwdChXVEY6OlN0cmluZyhzY3JpcHQpLCB0cnVlKTsKKyAgICBhdXRvIHNjcmlwdEV4ZWN1dGlv
blJlc3VsdCA9IGNvcmVGcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0
aW9uKFdURjo6U3RyaW5nKHNjcmlwdCksIHRydWUpOwogICAgIGlmICghc2NyaXB0RXhlY3V0aW9u
UmVzdWx0KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogICAgIGVsc2UgaWYgKHNjcmlwdEV4ZWN1
dGlvblJlc3VsdC5pc1N0cmluZygpKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385533</attachid>
            <date>2019-12-12 12:51:32 -0800</date>
            <delta_ts>2019-12-12 13:32:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205151-20191212125131.patch</filename>
            <type>text/plain</type>
            <size>53444</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjU5MGYyYWFjZjNmZTJj
NWE4ZDlkYWUwZjFmOGM4NDY0YTY1MGE3YS4uMzgzYTYzMGViMmM5YmNmOTI2NTBiNDgyZDM2Mzg3
NGFiY2RiN2ZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE5LTEyLTEyICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRD
b250cm9sbGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoUmVm
YWN0b3IsIG5vIGJlaGF2aW9yIGNoYW5nZSkuCisKKyAgICAgICAgVGhlcmUncyBzbyBtYW55IEV4
Y2VwdGlvbkRldGFpbHMqIG51bGwgcG9pbnRlcnMgYmVpbmcgcGFzc2VkIGFyb3VuZCBpbiB0aGUg
U2NyaXB0Q29udHJvbGxlcgorICAgICAgICBmYW1pbHkgb2YgZnVuY3Rpb25zLgorCisgICAgICAg
IExldCdzIG1ha2UgaXQgYSBsaXR0bGUgbW9yZSBleHBsaWNpdCB3aGljaCBjYWxsZXJzIGdldCBl
eGNlcHRpb25zIGFuZCB3aGljaCBkb24ndC4KKworICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9R
dWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlF1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50OjplbnN1cmVSZXBsYWNlbWVudFNjcmlwdEluamVjdGVkKToKKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUpOgorCisgICAgICAgICogYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVy
OjpldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJ
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2Vy
QWdlbnRTY3JpcHRJbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6
OmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQpOiBEZWxldGVkLgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKworICAgICAgICAqIGNvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9jZXNzQ29udGVudFJ1
bGVMaXN0c0ZvckxvYWQpOgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjplbnN1cmVQbHVnSW5zSW5qZWN0ZWRTY3JpcHQpOgorCisgICAg
ICAgICogZG9tL1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxl
bWVudDo6ZXhlY3V0ZUNsYXNzaWNTY3JpcHQpOgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZU1l
ZGlhQ29udHJvbHNJbmplY3RlZFNjcmlwdCk6CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsOjpldmFsdWF0ZUFzQm9vbGVhbik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpldmFsdWF0ZU9uTG9hZCk6CisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZCk6
CisKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RmlsdGVyOjpkaWREZWNpZGUpOgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KToK
KworICAgICAgICAqIHhtbC9YTUxUcmVlVmlld2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TFRyZWVWaWV3ZXI6OnRyYW5zZm9ybURvY3VtZW50VG9UcmVlVmlldyk6CisKIDIwMTktMTItMTEg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBUcnlpbmcgdG8gc2V0
IHRvU3RyaW5nIC8gdmFsdWVPZiBvbiBhIGNyb3NzLW9yaWdpbiBMb2NhdGlvbiBvYmplY3Qgc2hv
dWxkIHRocm93IGEgU2VjdXJpdHlFcnJvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4ZDc2MmFkOWEzODY4MzQ5MjU4
YzAyYzk2MmY5NWZmOTNhZjI1NzM3Li5lNzIwYmY3ODUzMzI0MzJmY2U5ZjNkMjQ1YjkxNjZiMTNk
NzFlYjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE5LTEyLTEyICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRDb250cm9s
bGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHA6CisgICAgICAgIChXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2Vi
VmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmZvcmNlVXNlckdlc3R1cmU6Y29tcGxldGlvbkhhbmRs
ZXI6XSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdv
cmxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFt
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBlcmZv
cm1KYXZhU2NyaXB0VVJMUmVxdWVzdCk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpldmFsdWF0ZU9yUXVldWVFeHByZXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVy
OjpldmFsdWF0ZVF1ZXVlZEV4cHJlc3Npb25zKToKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cnVuSmF2YVNjcmlw
dCk6CisKIDIwMTktMTItMTEgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCBhIG5pdCBhZnRlciByMjUzMzY2CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKaW5kZXggYjlkYWUyY2UxMGUwODcyZDM1MzA4YzhjOGNjNjBkZTIwZjI1Zjc3NS4u
ZTFmNzFhNWQ1NjkwYzM0NTI0ZGI2ODYyOWI4NDkwOTE1M2RlNzA3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTEyLTEyICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRDb250cm9sbGVy
J3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZCk6CisgICAgICAg
IAorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9z
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpmb3JjZVVzZXJHZXN0dXJlOl0p
OgorICAgICAgICAoLVtXZWJGcmFtZSBfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21T
dHJpbmc6d2l0aEdsb2JhbE9iamVjdDppblNjcmlwdFdvcmxkOl0pOgorCisgICAgICAgICogV2Vi
Vmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IGFlRGVzY0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHRGcm9tU3RyaW5nOl0pOgorCiAyMDE5LTEyLTA5ICBFcmljIENhcmxzb24gIDxlcmlj
LmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBtZWRpYSBpbiB0aGUgR1BVIHBy
b2Nlc3MgcHJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDQyMDE0ZDk5
ZDUwMjE2ZmE5MmQ0OWE1OTJhMDA2NzgxOTJkNjRkNDEuLjE0MWNjMzk0YWM4ZWIzZDQ2MDQ1NmM5
OWNiNmI5YzM0NmE3MjBjZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxOS0xMi0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVmYWN0b3IgU2NyaXB0Q29udHJvbGxlcidzIHByb2xpZmVyYXRpb24gb2YgRXhj
ZXB0aW9uRGV0YWlscyouCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDUxNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVn
aW5WaWV3OjpwZXJmb3JtUmVxdWVzdCk6CisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAg
ICAgIChXZWJGcmFtZTo6c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEluU2NyaXB0V29ybGQp
OgorCiAyMDE5LTEyLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgUGFnZUNvbmZpZ3VyYXRpb246OmRyYWdDbGllbnQgc2hvdWxkIHVzZSBhIHNtYXJ0IHBvaW50
ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQppbmRleCA5ODEyNmUwM2YzZTMyMTQ3NWY3NTExNDY0
MmFkOGQwYjI0OGJhZDIzLi4wM2QyMWRlN2Q1YWMwNjliMmNhYTNkOTYxMWI5OGY4NGEzNTE3ZjRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1
aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCkBAIC0xNTgsNyArMTU4LDcgQEAgYm9vbCBRdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6ZW5zdXJlUmVwbGFjZW1lbnRTY3JpcHRJbmplY3RlZCgp
CiAgICAgaWYgKHJlcGxhY2VtZW50RnVuY3Rpb24uaXNGdW5jdGlvbih2bSkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIAotICAgIHNjcmlwdENvbnRyb2xsZXIuZXZhbHVhdGVJbldvcmxkKFNj
cmlwdFNvdXJjZUNvZGUocXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRTY3JpcHQoKSksIHdvcmxk
KTsKKyAgICBzY3JpcHRDb250cm9sbGVyLmV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9u
KFNjcmlwdFNvdXJjZUNvZGUocXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRTY3JpcHQoKSksIHdv
cmxkKTsKICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAgICAgIExP
RyhQbHVnaW5zLCAiJXAgLSBFeGNlcHRpb24gd2hlbiBldmFsdWF0aW5nIFF1aWNrVGltZSBwbHVn
aW4gcmVwbGFjZW1lbnQgc2NyaXB0IiwgdGhpcyk7CiAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0
aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRB
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNw
cAppbmRleCAyOGNmNTY0NjZiY2EzYzljMmQyMDg4OTUxYzk4MDgyZmRiNTFhODU2Li44ZTRjN2Iz
ODEyNDRlNzc2YmRkNTgzNGFlNDE5MzZkN2RjYzYyMjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lk
IFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgaWYgKG1f
ZnVuY3Rpb24pCiAgICAgICAgIGV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dCh3aW5kb3csIHdpbmRv
dy0+cHJveHkoKSwgZG9jdW1lbnQpOwogICAgIGVsc2UKLSAgICAgICAgZnJhbWUtPnNjcmlwdCgp
LmV4ZWN1dGVTY3JpcHRJbldvcmxkKG1faXNvbGF0ZWRXb3JsZCwgbV9jb2RlKTsKKyAgICAgICAg
ZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24obV9p
c29sYXRlZFdvcmxkLCBtX2NvZGUpOwogfQogCiB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0
ZShXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGIxZmRlODUwMmU0ZGEw
YjBmNjlmNDgxNmQ0YTQxMmVjNGVlNGM3M2YuLjRjZWQ0YzNjMjRlYjA2MGEyNjY1NTkwNjg5ODJm
NDMxYzY2MTk4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuY3BwCkBAIC0xMDcsNyArMTA3LDEyIEBAIFNjcmlwdENvbnRyb2xsZXI6On5TY3Jp
cHRDb250cm9sbGVyKCkKICAgICB9CiB9CiAKLUpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZh
bHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQsIEV4Y2VwdGlvbkRldGFpbHMqIGV4Y2VwdGlvbkRldGFpbHMpCitKU0M6
OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRp
b24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCkKK3sKKyAgICByZXR1cm4gZXZhbHVhdGVJbldvcmxkKHNvdXJjZUNvZGUsIHdvcmxkKS5m
aXJzdDsKK30KKworVmFsdWVBbmRFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJ
bldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CiAKQEAgLTEz
NSwxOSArMTQwLDIxIEBAIEpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxk
KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPCiAKICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUpOwogCisgICAgT3B0aW9u
YWw8RXhjZXB0aW9uRGV0YWlscz4gb3B0aW9uYWxEZXRhaWxzOwogICAgIGlmIChldmFsdWF0aW9u
RXhjZXB0aW9uKSB7Ci0gICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmZ2xvYmFsT2JqZWN0LCBldmFs
dWF0aW9uRXhjZXB0aW9uLCBzb3VyY2VDb2RlLmNhY2hlZFNjcmlwdCgpLCBleGNlcHRpb25EZXRh
aWxzKTsKLSAgICAgICAgbV9zb3VyY2VVUkwgPSBzYXZlZFNvdXJjZVVSTDsKLSAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBkZXRhaWxzOworICAgICAgICByZXBv
cnRFeGNlcHRpb24oJmdsb2JhbE9iamVjdCwgZXZhbHVhdGlvbkV4Y2VwdGlvbiwgc291cmNlQ29k
ZS5jYWNoZWRTY3JpcHQoKSwgJmRldGFpbHMpOworICAgICAgICBvcHRpb25hbERldGFpbHMgPSBX
VEZNb3ZlKGRldGFpbHMpOworICAgICAgICByZXR1cm5WYWx1ZSA9IHsgfTsKICAgICB9CiAKICAg
ICBtX3NvdXJjZVVSTCA9IHNhdmVkU291cmNlVVJMOwotICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
KyAgICByZXR1cm4geyByZXR1cm5WYWx1ZSwgb3B0aW9uYWxEZXRhaWxzIH07CiB9CiAKLUpTVmFs
dWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291
cmNlQ29kZSwgRXhjZXB0aW9uRGV0YWlscyogZXhjZXB0aW9uRGV0YWlscykKK0pTQzo6SlNWYWx1
ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlw
dFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCiB7Ci0gICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChz
b3VyY2VDb2RlLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgZXhjZXB0aW9uRGV0YWlscyk7Cisg
ICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKHNvdXJjZUNvZGUsIG1h
aW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKIH0KIAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjpsb2Fk
TW9kdWxlU2NyaXB0SW5Xb3JsZChMb2FkYWJsZU1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0LCBj
b25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYgdG9w
TGV2ZWxGZXRjaFBhcmFtZXRlcnMsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCkBAIC01NDgsNyAr
NTU1LDEyIEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJTY3JpcHRPYmplY3RzKCkKICNl
bmRpZgogfQogCi1KU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxk
KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNl
VXNlckdlc3R1cmUsIEV4Y2VwdGlvbkRldGFpbHMqIGV4Y2VwdGlvbkRldGFpbHMpCitKU0M6OkpT
VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2Vw
dGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBm
b3JjZVVzZXJHZXN0dXJlKQoreworICAgIHJldHVybiBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3Js
ZCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlKS5maXJzdDsKK30KKworVmFsdWVBbmRFeGNlcHRp
b24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxk
JiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKIHsK
ICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGZvcmNlVXNlckdlc3R1
cmUgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlKSA6IFdURjo6bnVsbG9wdCk7CiAgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2Rl
KHNjcmlwdCwgVVJMKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpLCBUZXh0UG9zaXRpb24oKSwg
SlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIENhY2hlZFNjcmlwdEZldGNo
ZXI6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmNoYXJzZXQoKSkpOwpAQCAtNTU2LDE3ICs1
NjgsMTcgQEAgSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChE
T01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHIKICAgICBpZiAoIWNhbkV4ZWN1dGVTY3Jp
cHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNlZCgpKQogICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3b3JsZCwgZXhj
ZXB0aW9uRGV0YWlscyk7CisgICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3
b3JsZCk7CiB9CiAKLUpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNj
cmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQs
IGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgRXhjZXB0aW9uRGV0YWlscyogZXhjZXB0aW9uRGV0YWls
cykKK1ZhbHVlQW5kRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRT
Y3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0
LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiB7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqbV9mcmFt
ZS5kb2N1bWVudCgpOwogICAgIGlmICghc2hvdWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRzKGRvY3Vt
ZW50KSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGRvY3VtZW50LnNldEhhc0V2YWx1YXRl
ZFVzZXJBZ2VudFNjcmlwdHMoKTsKLSAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdEluV29ybGQod29y
bGQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgZXhjZXB0aW9uRGV0YWlscyk7CisgICAgcmV0
dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUp
OwogfQogCiBib29sIFNjcmlwdENvbnRyb2xsZXI6OnNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0
cyhEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CkBAIC01OTgsMTQgKzYxMCwxMCBAQCBib29sIFNj
cmlwdENvbnRyb2xsZXI6OmNhbkV4ZWN1dGVTY3JpcHRzKFJlYXNvbkZvckNhbGxpbmdDYW5FeGVj
dXRlU2NyaXB0cyByZWFzbwogICAgIHJldHVybiBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmFs
bG93U2NyaXB0KG1fZnJhbWUuc2V0dGluZ3MoKS5pc1NjcmlwdEVuYWJsZWQoKSk7CiB9CiAKLUpT
VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlw
dCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBFeGNlcHRpb25EZXRhaWxzKiBleGNlcHRpb25EZXRh
aWxzKQorSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJZ25vcmlu
Z0V4Y2VwdGlvbihjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQog
ewogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoZm9yY2VVc2VyR2Vz
dHVyZSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNl
ckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KTsKLSAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdChTY3Jp
cHRTb3VyY2VDb2RlKHNjcmlwdCwgVVJMKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpLCBUZXh0
UG9zaXRpb24oKSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIENhY2hl
ZFNjcmlwdEZldGNoZXI6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmNoYXJzZXQoKSkpLCBl
eGNlcHRpb25EZXRhaWxzKTsKLX0KIAotSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRl
U2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIEV4Y2VwdGlvbkRldGFp
bHMqIGV4Y2VwdGlvbkRldGFpbHMpCi17CiAgICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0cyhBYm91
dFRvRXhlY3V0ZVNjcmlwdCkgfHwgaXNQYXVzZWQoKSkKICAgICAgICAgcmV0dXJuIHsgfTsgLy8g
RklYTUU6IFdvdWxkIGpzTnVsbCBiZSBiZXR0ZXI/CiAKQEAgLTYxMyw3ICs2MjEsNyBAQCBKU1Zh
bHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYgc291cmNlQ29kZSwgRXhjZQogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjQ3NjMKICAgICBSZWY8RnJhbWU+IHByb3RlY3RvcihtX2ZyYW1lKTsgLy8g
U2NyaXB0IGV4ZWN1dGlvbiBjYW4gZGVzdHJveSB0aGUgZnJhbWUsIGFuZCB0aHVzIHRoZSBTY3Jp
cHRDb250cm9sbGVyLgogCi0gICAgcmV0dXJuIGV2YWx1YXRlKHNvdXJjZUNvZGUsIGV4Y2VwdGlv
bkRldGFpbHMpOworICAgIHJldHVybiBldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNv
dXJjZUNvZGUoc2NyaXB0LCBVUkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSksIFRleHRQb3Np
dGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgQ2FjaGVkU2Ny
aXB0RmV0Y2hlcjo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2hhcnNldCgpKSkpOwogfQog
CiBib29sIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29uc3QgVVJM
JiB1cmwsIFNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCBzaG91bGRSZXBsYWNl
RG9jdW1lbnRJZkphdmFTY3JpcHRVUkwpCkBAIC02MzIsNyArNjQwLDcgQEAgYm9vbCBTY3JpcHRD
b250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYgdXJsLCBTaG91bGRS
ZXBsYWNlRG9jdW0KICAgICBjb25zdCBpbnQgamF2YXNjcmlwdFNjaGVtZUxlbmd0aCA9IHNpemVv
ZigiamF2YXNjcmlwdDoiKSAtIDE7CiAKICAgICBTdHJpbmcgZGVjb2RlZFVSTCA9IGRlY29kZVVS
TEVzY2FwZVNlcXVlbmNlcyh1cmwuc3RyaW5nKCkpOwotICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0
ZVNjcmlwdChkZWNvZGVkVVJMLnN1YnN0cmluZyhqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoKSk7Cisg
ICAgYXV0byByZXN1bHQgPSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oZGVjb2RlZFVS
TC5zdWJzdHJpbmcoamF2YXNjcmlwdFNjaGVtZUxlbmd0aCkpOwogCiAgICAgLy8gSWYgZXhlY3V0
aW5nIHNjcmlwdCBjYXVzZWQgdGhpcyBmcmFtZSB0byBiZSByZW1vdmVkIGZyb20gdGhlIHBhZ2Us
IHdlCiAgICAgLy8gZG9uJ3Qgd2FudCB0byB0cnkgdG8gcmVwbGFjZSBpdHMgZG9jdW1lbnQhCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggMTMy
NzRhNWQxY2Y2ZDUyYjRhMjZlYzQ4ZGI1MDBhYmZmZTMzZWQ2Yi4uYjhiMjliMTg4YzhiOTIwOTk1
ZmFjNzFkYjFlODQwOTUyODYyODMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuaApAQCAtNzAsNiArNzAsOCBAQCBlbnVtIFJlYXNvbkZvckNhbGxp
bmdDYW5FeGVjdXRlU2NyaXB0cyB7CiAgICAgTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQKIH07CiAK
K3VzaW5nIFZhbHVlQW5kRXhjZXB0aW9uID0gc3RkOjpwYWlyPEpTQzo6SlNWYWx1ZSwgV1RGOjpP
cHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPj47CisKIGNsYXNzIFNjcmlwdENvbnRyb2xsZXIgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8U2NyaXB0Q29udHJvbGxlcj4gewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogCkBAIC04OCwxMCArOTAsMTAgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IHZvaWQgZ2V0QWxsV29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4mKTsKIAotICAg
IEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBFeGNl
cHRpb25EZXRhaWxzKiA9IG51bGxwdHIpOwotICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1
ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1
cmUgPSBmYWxzZSwgRXhjZXB0aW9uRGV0YWlscyogPSBudWxscHRyKTsKLSAgICBKU0M6OkpTVmFs
dWUgZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBz
Y3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlLCBFeGNlcHRpb25EZXRhaWxzKiA9
IG51bGxwdHIpOwotICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlVXNlckFn
ZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlLCBFeGNlcHRpb25EZXRhaWxzKiA9IG51bGxwdHIpOworICAg
IFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRp
b24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsK
KyAgICBKU0M6OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihE
T01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0
dXJlID0gZmFsc2UpOworICAgIFZhbHVlQW5kRXhjZXB0aW9uIGV4ZWN1dGVTY3JpcHRJbldvcmxk
KERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdl
c3R1cmUgPSBmYWxzZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgVmFsdWVBbmRFeGNlcHRpb24gZXhl
Y3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5n
JiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSk7CiAKICAgICBib29sIHNob3VsZEFsbG93
VXNlckFnZW50U2NyaXB0cyhEb2N1bWVudCYpIGNvbnN0OwogCkBAIC0xMDIsOCArMTA0LDkgQEAg
cHVibGljOgogICAgIC8vIERhcndpbiBpcyBhbiBleGNlcHRpb24gdG8gdGhpcyBydWxlOiBpdCBp
cyBPSyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSBhbnkgdGhyZWFkLCBldmVuIHJlZW50cmFu
dGx5LgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAotICAgIEpTQzo6
SlNWYWx1ZSBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRXhjZXB0aW9uRGV0YWls
cyogPSBudWxscHRyKTsKLSAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNj
cmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmLCBFeGNlcHRpb25EZXRhaWxzKiA9IG51
bGxwdHIpOworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKGNvbnN0
IFNjcmlwdFNvdXJjZUNvZGUmKTsKKyAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJbldvcmxkSWdu
b3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYp
OworICAgIFZhbHVlQW5kRXhjZXB0aW9uIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3Vy
Y2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7CiAKICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJ
bldvcmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBS
ZWY8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiYmLCBET01XcmFwcGVyV29ybGQmKTsKICAgICB2b2lk
IGxvYWRNb2R1bGVTY3JpcHQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcmIG1v
ZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFj
a2VuZC5jcHAKaW5kZXggYTc1NWZjYjkzY2ExMjIyMjhlNzJhNDU5NDhlZmI0MTA0MmNmMTVkNy4u
NTJmMzE5MmM1YjIwMDJmNTE4MzhhNzQ0OTI4N2I2ZWU4MGEzNTczZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgQ29udGVudFJ1bGVMaXN0UmVzdWx0cyBD
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50UnVsZUxpc3RzRm9yTG9hZCgK
ICAgICAgICAgICAgICAgICAmJiAoKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHVybC5o
b3N0KCksICJ3d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20iKSAmJiBlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZSh1cmwucGF0aCgpLCAiL2FuYWx5dGljcy5qcyIpKQogICAgICAgICAgICAgICAg
ICAgICB8fCAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodXJsLmhvc3QoKSwgInd3dy5n
b29nbGV0YWdtYW5hZ2VyLmNvbSIpICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHVy
bC5wYXRoKCksICIvZ3RtLmpzIikpKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBmcmFt
ZSA9IGN1cnJlbnREb2N1bWVudC0+ZnJhbWUoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUt
PnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUgeyAidHJ5IHsgd2luZG93LmRhdGFM
YXllci5oaWRlLmVuZCgpOyBjb25zb2xlLmxvZygnQ2FsbGVkIHdpbmRvdy5kYXRhTGF5ZXIuaGlk
ZS5lbmQoKSBpbiBmcmFtZSAnICsgZG9jdW1lbnQuVVJMICsgJyBiZWNhdXNlIHRoZSBjb250ZW50
IGJsb2NrZXIgYmxvY2tlZCB0aGUgbG9hZCBvZiB0aGUgaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5
dGljcy5jb20vYW5hbHl0aWNzLmpzIHNjcmlwdCcpOyB9IGNhdGNoIChlKSB7IH0iX3MgfSk7Cisg
ICAgICAgICAgICAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZUlnbm9yaW5nRXhjZXB0
aW9uKFNjcmlwdFNvdXJjZUNvZGUgeyAidHJ5IHsgd2luZG93LmRhdGFMYXllci5oaWRlLmVuZCgp
OyBjb25zb2xlLmxvZygnQ2FsbGVkIHdpbmRvdy5kYXRhTGF5ZXIuaGlkZS5lbmQoKSBpbiBmcmFt
ZSAnICsgZG9jdW1lbnQuVVJMICsgJyBiZWNhdXNlIHRoZSBjb250ZW50IGJsb2NrZXIgYmxvY2tl
ZCB0aGUgbG9hZCBvZiB0aGUgaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0
aWNzLmpzIHNjcmlwdCcpOyB9IGNhdGNoIChlKSB7IH0iX3MgfSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBmM2Y3ZjAzMmYyMGUx
YTVhM2YzYzhmMTNkMjI3MDk5ZjViODJiMWU5Li4xN2VkYzhiYzU4MmYzNjc0N2M3YmM0NGFiZTlk
ZDVhNGJmMGNiZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTcyMDEsNyArNzIwMSw3
IEBAIHZvaWQgRG9jdW1lbnQ6OmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdChET01XcmFwcGVy
V29ybGQmIHdvcmxkKQogICAgICAgICBqc1N0cmluZyA9IFN0cmluZyhwbHVnSW5zSmF2YVNjcmlw
dCwgc2l6ZW9mKHBsdWdJbnNKYXZhU2NyaXB0KSk7CiAKICAgICBzZXRIYXNFdmFsdWF0ZWRVc2Vy
QWdlbnRTY3JpcHRzKCk7Ci0gICAgc2NyaXB0Q29udHJvbGxlci5ldmFsdWF0ZUluV29ybGQoU2Ny
aXB0U291cmNlQ29kZShqc1N0cmluZyksIHdvcmxkKTsKKyAgICBzY3JpcHRDb250cm9sbGVyLmV2
YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUoanNTdHJpbmcp
LCB3b3JsZCk7CiAKICAgICBtX2hhc0luamVjdGVkUGx1Z0luc1NjcmlwdCA9IHRydWU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggZTBkOTY3YjQ1NzRiYjM1MzA4NWZi
Mzc3NjUwOTRjYzJmOGEzNTM4NS4uMTUxMTc1MTllZjkxMzQ2NzY3N2QyNTg2NTNjZDI3MjAxNzdl
ODA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMzg3LDcgKzM4Nyw3
IEBAIHZvaWQgU2NyaXB0RWxlbWVudDo6ZXhlY3V0ZUNsYXNzaWNTY3JpcHQoY29uc3QgU2NyaXB0
U291cmNlQ29kZSYgc291cmNlQ29kZSkKICAgICBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJ
bmNyZW1lbnRlciBpZ25vcmVEZXNjdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIobV9pc0V4
dGVybmFsU2NyaXB0ID8gJmRvY3VtZW50IDogbnVsbHB0cik7CiAgICAgQ3VycmVudFNjcmlwdElu
Y3JlbWVudGVyIGN1cnJlbnRTY3JpcHRJbmNyZW1lbnRlcihkb2N1bWVudCwgbV9lbGVtZW50KTsK
IAotICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZShzb3VyY2VDb2RlKTsKKyAgICBmcmFtZS0+
c2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihzb3VyY2VDb2RlKTsKIH0KIAogdm9p
ZCBTY3JpcHRFbGVtZW50OjpleGVjdXRlTW9kdWxlU2NyaXB0KExvYWRhYmxlTW9kdWxlU2NyaXB0
JiBsb2FkYWJsZU1vZHVsZVNjcmlwdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCmluZGV4IGViNWZmNTY3ZWQ4MTBkZmMxODUxMDY4MDMyOTNhMmQ1NjRjZTIzNDkuLjcz
MGI0ZTM4OWU3ODNmZTU2Njc1NWI4YWMzNjg4MTE5ZjA5NjkxNjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNzMxNyw3ICs3MzE3LDcgQEAgYm9vbCBIVE1M
TWVkaWFFbGVtZW50OjplbnN1cmVNZWRpYUNvbnRyb2xzSW5qZWN0ZWRTY3JpcHQoKQogI2Vsc2UK
ICAgICAgICAgVVJMIHNjcmlwdFVSTDsKICNlbmRpZgotICAgICAgICBzY3JpcHRDb250cm9sbGVy
LmV2YWx1YXRlSW5Xb3JsZChTY3JpcHRTb3VyY2VDb2RlKG1lZGlhQ29udHJvbHNTY3JpcHQsIFdU
Rk1vdmUoc2NyaXB0VVJMKSksIHdvcmxkKTsKKyAgICAgICAgc2NyaXB0Q29udHJvbGxlci5ldmFs
dWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKG1lZGlhQ29udHJv
bHNTY3JpcHQsIFdURk1vdmUoc2NyaXB0VVJMKSksIHdvcmxkKTsKICAgICAgICAgaWYgKFVOTElL
RUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRp
b24oKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAppbmRleCAx
YjNjODg3NmNjNjg3MzFiNWQ2MjhkZDJkZTJiOWQ2MDRmMmE0NWZiLi4wZDgzMTkyNTI3ODJkYTk1
YTcyZWQzNmNhNWYwNDhjN2NkOGM4NDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC00MjAsNyAr
NDIwLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpkaXNwYXRjaE1lc3Nh
Z2VBc3luYyhjb25zdCBTdHJpbmcmIG1lc3NhZ2VPYmoKIGJvb2wgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbDo6ZXZhbHVhdGVBc0Jvb2xlYW4oY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQog
ewogICAgIGF1dG8mIHN0YXRlID0gKm1haW5Xb3JsZEV4ZWNTdGF0ZSgmbV9mcm9udGVuZFBhZ2Ut
Pm1haW5GcmFtZSgpKTsKLSAgICByZXR1cm4gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnNj
cmlwdCgpLmV4ZWN1dGVTY3JpcHQoZXhwcmVzc2lvbikudG9XVEZTdHJpbmcoJnN0YXRlKSA9PSAi
dHJ1ZSI7CisgICAgcmV0dXJuIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5l
eGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oZXhwcmVzc2lvbikudG9XVEZTdHJpbmcoJnN0
YXRlKSA9PSAidHJ1ZSI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6
ZXZhbHVhdGVPbkxvYWQoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQpAQCAtNDMxLDcgKzQzMSw3
IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVhdGVPbkxvYWQoY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uKQogICAgIH0KIAogICAgIEpTQzo6U3VzcGVuZEV4Y2VwdGlv
blNjb3BlIHNjb3BlKCZtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnZtKCkp
OwotICAgIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5ldmFsdWF0ZShTY3Jp
cHRTb3VyY2VDb2RlKGV4cHJlc3Npb24pKTsKKyAgICBtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1l
KCkuc2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKGV4
cHJlc3Npb24pKTsKIH0KIAogUGFnZSogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6aW5z
cGVjdGVkUGFnZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggMDFlZGQwMDYwZGUzNjJjMWFiN2I3
MDI0NzVhZTgzODIyMjc5YTgwMC4uY2Y4OWY5ZWI1MDUyMzI2ZmNmOGNiZDI2ZDg1OTZjZjQ3MjRj
MjM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcApAQCAtNzczLDcgKzc3Myw3IEBAIHZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUmIGZyYW1lKQogICAgIGlm
IChtX2Jvb3RzdHJhcFNjcmlwdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZy
YW1lLnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUobV9ib290c3RyYXBTY3JpcHQs
IFVSTCB7IFVSTCgpLCAid2ViLWluc3BlY3RvcjovL2Jvb3RzdHJhcC5qcyJfcyB9KSk7CisgICAg
ZnJhbWUuc2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2Rl
KG1fYm9vdHN0cmFwU2NyaXB0LCBVUkwgeyBVUkwoKSwgIndlYi1pbnNwZWN0b3I6Ly9ib290c3Ry
YXAuanMiX3MgfSkpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkUGFpbnQoUmVu
ZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCBiNDk4YTIyNGIxOTBjNmNlODQ0ZWI5ZGQ3
ZWI5YjdhMTA1ZDc2ZGM1Li42ZWFmY2EzNGU4MWEzOTkyZGQxZmI4MGY5MDMyZWI5NmM4YjliNzc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMz
LDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUgc3RhdGUpCiAgICAgaWYg
KCF1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUpIHsKICAgICAg
ICAgdW5ibG9ja0hhbmRsZXIud3JhcFdpdGhEZWNpc2lvbkhhbmRsZXIoW3NjcmlwdENvbnRyb2xs
ZXIgPSBtYWtlV2Vha1B0cihmcmFtZS0+c2NyaXB0KCkpLCBzY3JpcHQgPSB1bmJsb2NrUmVxdWVz
dERlbmllZFNjcmlwdC5pc29sYXRlZENvcHkoKV0oYm9vbCB1bmJsb2NrZWQpIHsKICAgICAgICAg
ICAgIGlmICghdW5ibG9ja2VkICYmIHNjcmlwdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAg
c2NyaXB0Q29udHJvbGxlci0+ZXhlY3V0ZVNjcmlwdChzY3JpcHQpOworICAgICAgICAgICAgICAg
IHNjcmlwdENvbnRyb2xsZXItPmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihzY3JpcHQp
OwogICAgICAgICB9KTsKICAgICB9CiAgICAgbV9kb2N1bWVudExvYWRlci5mcmFtZUxvYWRlcigp
LT5jbGllbnQoKS5jb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdURk1vdmUodW5ibG9ja0hhbmRs
ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggMjJjYzFmZDE1YmMxN2NmZDg1NmU5MTRjMzhh
ODZiMGM0MmFjNzRiYy4uZTA4MzNkYzA4MzNmNTlhOWViMjYzNTA2MTMxY2RiYjk3YzlmOTIxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTYzNCw3ICs2MzQsNyBAQCB2b2lkIEZyYW1lOjppbmpl
Y3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgVXNl
clNjcmlwdAogCiAgICAgZG9jdW1lbnQtPnNldEFzUnVubmluZ1VzZXJTY3JpcHRzKCk7CiAgICAg
bG9hZGVyKCkuY2xpZW50KCkud2lsbEluamVjdFVzZXJTY3JpcHQod29ybGQpOwotICAgIG1fc2Ny
aXB0LT5ldmFsdWF0ZUluV29ybGQoU2NyaXB0U291cmNlQ29kZShzY3JpcHQuc291cmNlKCksIFVS
TChzY3JpcHQudXJsKCkpKSwgd29ybGQpOworICAgIG1fc2NyaXB0LT5ldmFsdWF0ZUluV29ybGRJ
Z25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdC5zb3VyY2UoKSwgVVJMKHNj
cmlwdC51cmwoKSkpLCB3b3JsZCk7CiB9CiAKIFJlbmRlclZpZXcqIEZyYW1lOjpjb250ZW50UmVu
ZGVyZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCmluZGV4IGZlMDFj
YzFmZjQ5MWMzNjdmY2FkOTdiZmQ0ZDZjNGU3MzBmNmJkYTguLmY5MGU0NDUyNGQ1ZGEzNzY2MmNj
MmRkNTVmNDIxZjI4OTc3YjQyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxU
cmVlVmlld2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAK
QEAgLTU2LDggKzU2LDggQEAgdm9pZCBYTUxUcmVlVmlld2VyOjp0cmFuc2Zvcm1Eb2N1bWVudFRv
VHJlZVZpZXcoKQogICAgIG1fZG9jdW1lbnQuc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJp
dHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpKTsK
IAogICAgIFN0cmluZyBzY3JpcHRTdHJpbmcgPSBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29w
eWluZyhYTUxWaWV3ZXJfanMsIHNpemVvZihYTUxWaWV3ZXJfanMpKTsKLSAgICBtX2RvY3VtZW50
LmZyYW1lKCktPnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0U3RyaW5n
KSk7Ci0gICAgbV9kb2N1bWVudC5mcmFtZSgpLT5zY3JpcHQoKS5ldmFsdWF0ZShTY3JpcHRTb3Vy
Y2VDb2RlKEF0b21TdHJpbmcoInByZXBhcmVXZWJLaXRYTUxWaWV3ZXIoJ1RoaXMgWE1MIGZpbGUg
ZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUgYW55IHN0eWxlIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQg
d2l0aCBpdC4gVGhlIGRvY3VtZW50IHRyZWUgaXMgc2hvd24gYmVsb3cuJyk7IikpKTsKKyAgICBt
X2RvY3VtZW50LmZyYW1lKCktPnNjcmlwdCgpLmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2Ny
aXB0U291cmNlQ29kZShzY3JpcHRTdHJpbmcpKTsKKyAgICBtX2RvY3VtZW50LmZyYW1lKCktPnNj
cmlwdCgpLmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29kZShBdG9tU3Ry
aW5nKCJwcmVwYXJlV2ViS2l0WE1MVmlld2VyKCdUaGlzIFhNTCBmaWxlIGRvZXMgbm90IGFwcGVh
ciB0byBoYXZlIGFueSBzdHlsZSBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggaXQuIFRoZSBk
b2N1bWVudCB0cmVlIGlzIHNob3duIGJlbG93LicpOyIpKSk7CiAKICAgICBTdHJpbmcgY3NzU3Ry
aW5nID0gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoWE1MVmlld2VyX2Nzcywgc2l6
ZW9mKFhNTFZpZXdlcl9jc3MpKTsKICAgICBhdXRvIHRleHQgPSBtX2RvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKGNzc1N0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cAppbmRleCA3MGVmYmZhM2U4N2EyYWJhY2M0NTE0NjQwZmRhM2Y3N2ViNjgwZTVmLi4wYzE1Zjhi
OTNjNzgwN2VmZDc0YmJlNDAwODI4NDQ0MWM1NmZhZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI0NzIsNyArMjQ3Miw3IEBAIHZvaWQgV0tQYWdlU2V0
UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNs
aWVudCkKIAogdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQYWdlUmVmIHBh
Z2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlUnVuSmF2
YVNjcmlwdEZ1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+cnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lKHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgdHJ1ZSwgW2Nv
bnRleHQsIGNhbGxiYWNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmV0dXJuVmFsdWUs
IGJvb2wsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVy
cm9yIGVycm9yKSB7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWUodG9JbXBsKHNjcmlwdFJlZiktPnN0cmluZygpLCB0cnVlLCBbY29udGV4dCwgY2FsbGJhY2td
KEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiByZXR1cm5WYWx1ZSwgT3B0aW9uYWw8V2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAg
ICAgY2FsbGJhY2sodG9BUEkocmV0dXJuVmFsdWUpLCAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpF
cnJvcjo6Tm9uZSkgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5wdHIoKSkgOiAwLCBjb250
ZXh0KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCmluZGV4IDMzNTRhYzZlZWNiNWE4ZDcxOThhZThhNThjYTI5OTQ0YzgzMGU1
MTAuLjE5NDJiMDI1NjFkZjE1OTgyY2EwYTExZDEwMGMzOTNjYjhiYTA0YmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTEyMiw3ICsx
MTIyLDcgQEAgLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3Jp
cHRTdHJpbmcgZm9yY2VVc2VyR2VzdHVyZTooQk9PTCkKIHsKICAgICBhdXRvIGhhbmRsZXIgPSBh
ZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSk7CiAKLSAgICBfcGFnZS0+cnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKGphdmFTY3JpcHRTdHJpbmcsIGZvcmNlVXNlckdlc3R1cmUsIFtoYW5k
bGVyXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBi
b29sIGhhZEV4Y2VwdGlvbiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyYgZGV0YWls
cywgV2ViS2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvciBlcnJvckNvZGUpIHsKKyAgICBf
cGFnZS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGphdmFTY3JpcHRTdHJpbmcsIGZvcmNlVXNl
ckdlc3R1cmUsIFtoYW5kbGVyXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxz
LCBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJhY2s6OkVycm9yIGVycm9yQ29kZSkgewogICAgICAg
ICBpZiAoIWhhbmRsZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTExNDUsMTggKzExNDUs
MTggQEAgLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRT
dHJpbmcgZm9yY2VVc2VyR2VzdHVyZTooQk9PTCkKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8g
cmF3SGFuZGxlciA9ICh2b2lkICheKShpZCwgTlNFcnJvciAqKSloYW5kbGVyLmdldCgpOwotICAg
ICAgICBpZiAoaGFkRXhjZXB0aW9uKSB7CisgICAgICAgIGlmIChkZXRhaWxzKSB7CiAgICAgICAg
ICAgICBBU1NFUlQoIXNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CiAKICAgICAgICAgICAgIFJldGFp
blB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiB1c2VySW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAKICAgICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmpl
Y3Q6bG9jYWxpemVkRGVzY3JpcHRpb25Gb3JFcnJvckNvZGUoV0tFcnJvckphdmFTY3JpcHRFeGNl
cHRpb25PY2N1cnJlZCkgZm9yS2V5Ok5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXldOwotICAgICAg
ICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihkZXRhaWxz
Lm1lc3NhZ2UpIGZvcktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTWVzc2FnZUVycm9yS2V5XTsK
LSAgICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QChkZXRhaWxzLmxpbmVOdW1iZXIpIGZv
cktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTGluZU51bWJlckVycm9yS2V5XTsKLSAgICAgICAg
ICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QChkZXRhaWxzLmNvbHVtbk51bWJlcikgZm9yS2V5Ol9X
S0phdmFTY3JpcHRFeGNlcHRpb25Db2x1bW5OdW1iZXJFcnJvcktleV07CisgICAgICAgICAgICBb
dXNlckluZm8gc2V0T2JqZWN0OnN0YXRpY19jYXN0PE5TU3RyaW5nICo+KGRldGFpbHMtPm1lc3Nh
Z2UpIGZvcktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTWVzc2FnZUVycm9yS2V5XTsKKyAgICAg
ICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QChkZXRhaWxzLT5saW5lTnVtYmVyKSBmb3JLZXk6
X1dLSmF2YVNjcmlwdEV4Y2VwdGlvbkxpbmVOdW1iZXJFcnJvcktleV07CisgICAgICAgICAgICBb
dXNlckluZm8gc2V0T2JqZWN0OkAoZGV0YWlscy0+Y29sdW1uTnVtYmVyKSBmb3JLZXk6X1dLSmF2
YVNjcmlwdEV4Y2VwdGlvbkNvbHVtbk51bWJlckVycm9yS2V5XTsKIAotICAgICAgICAgICAgaWYg
KCFkZXRhaWxzLnNvdXJjZVVSTC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgW3VzZXJJbmZv
IHNldE9iamVjdDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOmRldGFpbHMuc291cmNlVVJM
XSBmb3JLZXk6X1dLSmF2YVNjcmlwdEV4Y2VwdGlvblNvdXJjZVVSTEVycm9yS2V5XTsKKyAgICAg
ICAgICAgIGlmICghZGV0YWlscy0+c291cmNlVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAg
ICBbdXNlckluZm8gc2V0T2JqZWN0OltOU1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJpbmc6ZGV0YWls
cy0+c291cmNlVVJMXSBmb3JLZXk6X1dLSmF2YVNjcmlwdEV4Y2VwdGlvblNvdXJjZVVSTEVycm9y
S2V5XTsKIAogICAgICAgICAgICAgcmF3SGFuZGxlcihuaWwsIGFkb3B0TlMoW1tOU0Vycm9yIGFs
bG9jXSBpbml0V2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvckphdmFTY3JpcHRF
eGNlcHRpb25PY2N1cnJlZCB1c2VySW5mbzp1c2VySW5mby5nZXQoKV0pLmdldCgpKTsKICAgICAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggZDIxYzc4MmVkZWQxMjEzYzY5MTMxMWNkMmRjOTViZmJj
NGQ4NzZlYS4uNTczZjI5ZTI0ZmJjZTFkZWIyOTdmZmUxYjk2ZTMzOGNmNzc4YTEyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAK
QEAgLTM2MDYsNyArMzYwNiwxMCBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlw
dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogc2NyaXB0LAogICAgIGdfcmV0
dXJuX2lmX2ZhaWwoc2NyaXB0KTsKIAogICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdS
ZWYoZ190YXNrX25ldyh3ZWJWaWV3LCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKSk7
Ci0gICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoU3RyaW5nOjpm
cm9tVVRGOChzY3JpcHQpLCB0cnVlLCBbdGFzayA9IFdURk1vdmUodGFzayldKEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGJvb2wsIGNvbnN0IEV4Y2Vw
dGlvbkRldGFpbHMmIGV4Y2VwdGlvbkRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJv
cikgeworICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFN0cmlu
Zzo6ZnJvbVVURjgoc2NyaXB0KSwgdHJ1ZSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxFeGNl
cHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAg
ICAgICAgRXhjZXB0aW9uRGV0YWlscyBleGNlcHRpb25EZXRhaWxzOworICAgICAgICBpZiAoZGV0
YWlscykKKyAgICAgICAgICAgIGV4Y2VwdGlvbkRldGFpbHMgPSAqZGV0YWlsczsKICAgICAgICAg
d2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRDYWxsYmFjayhzZXJpYWxpemVkU2NyaXB0VmFsdWUs
IGV4Y2VwdGlvbkRldGFpbHMsIHRhc2suZ2V0KCkpOwogICAgIH0pOwogfQpAQCAtMzcwNCw3ICsz
NzA3LDEwIEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0X2luX3dvcmxkKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyCiAgICAgZ19yZXR1cm5faWZfZmFpbCh3
b3JsZE5hbWUpOwogCiAgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0R1JlZihnX3Rhc2tf
bmV3KHdlYlZpZXcsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpKTsKLSAgICBnZXRQ
YWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFN0cmluZzo6
ZnJvbVVURjgoc2NyaXB0KSwgdHJ1ZSwgU3RyaW5nOjpmcm9tVVRGOCh3b3JsZE5hbWUpLCBbdGFz
ayA9IFdURk1vdmUodGFzayldKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVk
U2NyaXB0VmFsdWUsIGJvb2wsIGNvbnN0IEV4Y2VwdGlvbkRldGFpbHMmIGV4Y2VwdGlvbkRldGFp
bHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgIGdldFBhZ2Uod2ViVmlldyku
cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoU3RyaW5nOjpmcm9tVVRGOChzY3Jp
cHQpLCB0cnVlLCBTdHJpbmc6OmZyb21VVEY4KHdvcmxkTmFtZSksIFt0YXNrID0gV1RGTW92ZSh0
YXNrKV0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwg
T3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6
OkVycm9yKSB7CisgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZXhjZXB0aW9uRGV0YWlsczsKKyAg
ICAgICAgaWYgKGRldGFpbHMpCisgICAgICAgICAgICBleGNlcHRpb25EZXRhaWxzID0gKmRldGFp
bHM7CiAgICAgICAgIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2soc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLCBleGNlcHRpb25EZXRhaWxzLCB0YXNrLmdldCgpKTsKICAgICB9KTsKIH0K
QEAgLTM3NDQsNyArMzc1MCwxMCBAQCBzdGF0aWMgdm9pZCByZXNvdXJjZXNTdHJlYW1SZWFkQ2Fs
bGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZwogICAgIFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ190YXNrX2dldF9zb3VyY2Vfb2Jq
ZWN0KHRhc2suZ2V0KCkpKTsKICAgICBncG9pbnRlciBvdXRwdXRTdHJlYW1EYXRhID0gZ19tZW1v
cnlfb3V0cHV0X3N0cmVhbV9nZXRfZGF0YShHX01FTU9SWV9PVVRQVVRfU1RSRUFNKG9iamVjdCkp
OwogICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFN0cmluZzo6
ZnJvbVVURjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBnY2hhcio+KG91dHB1dFN0cmVhbURhdGEp
KSwgdHJ1ZSwKLSAgICAgICAgW3Rhc2tdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJp
YWxpemVkU2NyaXB0VmFsdWUsIGJvb2wsIGNvbnN0IEV4Y2VwdGlvbkRldGFpbHMmIGV4Y2VwdGlv
bkRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgICAgICBbdGFza10o
QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9u
YWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9y
KSB7CisgICAgICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGV4Y2VwdGlvbkRldGFpbHM7CisgICAg
ICAgICAgICBpZiAoZGV0YWlscykKKyAgICAgICAgICAgICAgICBleGNlcHRpb25EZXRhaWxzID0g
KmRldGFpbHM7CiAgICAgICAgICAgICB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdENhbGxiYWNr
KHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgZXhjZXB0aW9uRGV0YWlscywgdGFzay5nZXQoKSk7CiAg
ICAgICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggZTNiNDUyMzk5NzkzYTZiMWQ2NzQ2Y2Y5YmY0NDg4MzQ1OGZlYWI3Zi4uMmEzZjE5NjYzNTgx
ODExOWI1MzMxMWMwYzgzNzVlZTE4YzQxYzI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC0zODQ1LDE4ICszODQ1LDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCkKICAgICAgICAgbGF1bmNoUHJvY2Vz
cyh7IH0sIFByb2Nlc3NMYXVuY2hSZWFzb246OkluaXRpYWxQcm9jZXNzKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIHNjcmlw
dCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IEV4Y2VwdGlvbkRldGFp
bHMmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQ
YWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgcnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lU2NyaXB0V29ybGQoc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6Om51
bGxvcHQsIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3Jp
cHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGRO
YW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBib29s
IGhhZEV4Y2VwdGlvbiwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VV
c2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25E
ZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAg
ICAvLyBGb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0eSBzdXBwb3J0IHJ1bm5pbmcgc2NyaXB0IGlu
IGEgV2ViVmlldyB3aGljaCBoYXMgbm90IGRvbmUgYW55IGxvYWRzIHlldHMuCiAgICAgbGF1bmNo
SW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0ciwgZmFsc2UsIHsgfSwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CisgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24obnVs
bHB0ciwgeyB9LCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMzg2NCw3ICszODY0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib28K
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3Jp
cHRXb3JsZChzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCkp
OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWUoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1
cmUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wg
aGFkRXhjZXB0aW9uLCBjb25zdCBFeGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0
SW5GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJv
b2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlKiwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKG1haW5GcmFtZSgpLT5mcmFt
ZUlEKCkgIT0gZnJhbWVJRCk7CiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lIl9zKSk7CkBA
IC02Nzg3LDcgKzY3ODcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW52YWxpZGF0ZVN0cmluZ0Nh
bGxiYWNrKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgp
OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBF
eGNlcHRpb25EZXRhaWxzJiBkZXRhaWxzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdl
YlBhZ2VQcm94eTo6c2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IGRhdGFSZWZlcmVuY2UsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFr
ZTxTY3JpcHRWYWx1ZUNhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKSB7
CkBAIC02Nzk2LDcgKzY3OTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2NyaXB0VmFsdWVDYWxs
YmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsCiAgICAgfQogCiAg
ICAgaWYgKGRhdGFSZWZlcmVuY2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNhbGxiYWNrLT5wZXJm
b3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUobnVsbHB0ciwgaGFkRXhjZXB0aW9uLCBkZXRhaWxz
KTsKKyAgICAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShudWxs
cHRyLCBkZXRhaWxzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjgwNCw3ICs2ODA0
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNjcmlwdFZhbHVlQ2FsbGJhY2soY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLAogICAgIGRhdGEucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShkYXRhUmVmZXJlbmNlLnNpemUoKSk7CiAgICAgZGF0YS5hcHBlbmQoZGF0YVJlZmVyZW5j
ZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKIAotICAgIGNhbGxiYWNrLT5wZXJmb3Jt
Q2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0
KFdURk1vdmUoZGF0YSkpLnB0cigpLCBoYWRFeGNlcHRpb24sIGRldGFpbHMpOworICAgIGNhbGxi
YWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmFkb3B0KFdURk1vdmUoZGF0YSkpLnB0cigpLCBkZXRhaWxzKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmNvbXB1dGVkUGFnZXNDYWxsYmFjayhjb25zdCBWZWN0b3I8SW50UmVjdD4m
IHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgY29uc3QgRmxv
YXRCb3hFeHRlbnQmIGNvbXB1dGVkUGFnZU1hcmdpbiwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBhZTM4NTIyMjFkNGE1MjQz
NTUyYmEwMjNmMmY0OGI5NGVmN2I5OGFkLi4wMjc0ZDdjZTJmNDM2ODE1NGNjYjY3OTI1Y2QwZjlk
YTQzYzI5Y2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNzUs
NiArNzUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVu
dFRyYWNraW5nUmVnaW9ucy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uRGV0YWlscy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udEF0dHJpYnV0ZXMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ZyYW1lTG9hZGVyVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPiAvLyBG
SVhNRTogTW92ZSBMYXlvdXRWaWV3cG9ydENvbnN0cmFpbnQgdG8gaXRzIG93biBmaWxlIGFuZCBz
dG9wIGluY2x1ZGluZyB0aGlzLgpAQCAtMzM1LDcgKzMzNiw3IEBAIHR5cGVkZWYgR2VuZXJpY0Nh
bGxiYWNrPEFQSTo6RGF0YSo+IERhdGFDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNr
PHVpbnQ2NF90PiBVbnNpZ25lZENhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8RWRp
dGluZ1JhbmdlPiBFZGl0aW5nUmFuZ2VDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNr
PGNvbnN0IFN0cmluZyY+IFN0cmluZ0NhbGxiYWNrOwotdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8
QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBib29sLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRp
b25EZXRhaWxzJj4gU2NyaXB0VmFsdWVDYWxsYmFjazsKK3R5cGVkZWYgR2VuZXJpY0NhbGxiYWNr
PEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9u
RGV0YWlscz4+IFNjcmlwdFZhbHVlQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxj
b25zdCBXZWJDb3JlOjpGb250QXR0cmlidXRlcyY+IEZvbnRBdHRyaWJ1dGVzQ2FsbGJhY2s7CiB0
eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmPiBTZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxs
YmFjazxib29sPiBCb29sQ2FsbGJhY2s7CkBAIC0xMDYwLDEwICsxMDYxLDEwIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoRnVuY3Rpb248dm9pZCAoQVBJ
OjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0U291cmNlRm9y
RnJhbWUoV2ViRnJhbWVQcm94eSosIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUo
V2ViRnJhbWVQcm94eSosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJp
bmcmLCBib29sLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
KiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKLSAgICB2b2lkIHJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYsIGJvb2wsIGNvbnN0
IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IFdlYkNvcmU6OkV4
Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9u
KTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmLCBib29s
LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9u
YWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrRnVuY3Rpb24pOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0
V29ybGQoY29uc3QgU3RyaW5nJiwgYm9vbCwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGRO
YW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRp
b25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYg
Y2FsbGJhY2tGdW5jdGlvbik7CiAgICAgLy8gRm9yIHN1YiBmcmFtZXMuCi0gICAgdm9pZCBydW5K
YXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
c2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpF
eGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlv
bik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVu
Y3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6
OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKTsKICAgICB2b2lkIGZvcmNlUmVwYWludChSZWZQdHI8Vm9pZENhbGxiYWNrPiYmKTsKIAog
ICAgIGZsb2F0IGhlYWRlckhlaWdodChXZWJGcmFtZVByb3h5Jik7CkBAIC0xOTQzLDcgKzE5NDQs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgYm9vbENhbGxiYWNrKGJvb2wgcmVzdWx0LCBDYWxsYmFj
a0lEKTsKICAgICB2b2lkIHN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQp
OwogICAgIHZvaWQgaW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKENhbGxiYWNrSUQpOwotICAgIHZv
aWQgc2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBib29sIGhh
ZEV4Y2VwdGlvbiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNrSUQp
OworICAgIHZvaWQgc2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
LCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tJRCk7CiAgICAg
dm9pZCBjb21wdXRlZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+
JiwgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgY29uc3QgV2ViQ29yZTo6Rmxv
YXRCb3hFeHRlbnQmIGNvbXB1dGVkUGFnZU1hcmdpbiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCB2
YWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBib29sLCBpbnQsIENhbGxiYWNr
SUQpOwogICAgIHZvaWQgdW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCwgQ2FsbGJhY2tJRCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5k
ZXggMGM2NTFlNjg1YjI5NzlmNGUzNmU5YzhhNTg2NDE2ZDY3MWJkZmZmNS4uNGRlZjVkYzAxZGI0
ZDQyOWZiYjdkNzE2OTM4YTExMTcwZDllYTIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTY5LDcgKzE2OSw3IEBAIG1lc3Nh
Z2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgU3RyaW5nQ2FsbGJhY2soU3RyaW5nIHJlc3VsdFN0
cmluZywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgQm9vbENhbGxiYWNrKGJv
b2wgcmVzdWx0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBJbnZhbGlkYXRl
U3RyaW5nQ2FsbGJhY2soV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgU2NyaXB0
VmFsdWVDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwgYm9vbCBoYWRFeGNl
cHRpb24sIHN0cnVjdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzIGRldGFpbHMsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFNjcmlwdFZhbHVlQ2FsbGJhY2soSVBDOjpEYXRh
UmVmZXJlbmNlIHJlc3VsdERhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+
IGRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIENvbXB1dGVkUGFn
ZXNDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gcGFnZVJlY3RzLCBkb3VibGUgdG90
YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBXZWJDb3JlOjpSZWN0RWRnZXM8ZmxvYXQ+IGNvbXB1
dGVkUGFnZU1hcmdpbiwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgVmFsaWRh
dGVDb21tYW5kQ2FsbGJhY2soU3RyaW5nIGNvbW1hbmQsIGJvb2wgaXNFbmFibGVkLCBpbnQzMl90
IHN0YXRlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBFZGl0aW5nUmFuZ2VD
YWxsYmFjayhzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29j
a2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCA1
MGNhMmU0OTM4Y2MzNTVjMTlkZTFjYTdiYmM0Mzk3Y2MwNGJiOTNjLi4zYWJlZTQ4NmY1ZWM4YjZl
NGYwZTVkOWExNDcwMzc4M2U4NGE4MGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVy
LmNwcApAQCAtOTAsOSArOTAsOSBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxl
cjo6aW5zcGVjdChjb25zdCBTdHJpbmcmIGhvc3RBbmRQb3J0LCBDb25uZWN0aQogdm9pZCBSZW1v
dGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OnJ1blNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlw
dCkKIHsKICAgICBtX3BhZ2UucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHNjcmlwdCwgZmFsc2Us
Ci0gICAgICAgIFtdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRp
b24sIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmIGV4Y2VwdGlvbkRldGFpbHMsIENh
bGxiYWNrQmFzZTo6RXJyb3IpIHsKLSAgICAgICAgICAgIGlmIChoYWRFeGNlcHRpb24pCi0gICAg
ICAgICAgICAgICAgTE9HX0VSUk9SKCJFeGNlcHRpb24gcnVubmluZyBzY3JpcHQgXCIlc1wiIiwg
ZXhjZXB0aW9uRGV0YWlscy5tZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBbXShBUEk6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFp
bHM+IGV4Y2VwdGlvbkRldGFpbHMsIENhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICAgICAgICAg
IGlmIChleGNlcHRpb25EZXRhaWxzKQorICAgICAgICAgICAgICAgIExPR19FUlJPUigiRXhjZXB0
aW9uIHJ1bm5pbmcgc2NyaXB0IFwiJXNcIiIsIGV4Y2VwdGlvbkRldGFpbHMtPm1lc3NhZ2UudXRm
OCgpLmRhdGEoKSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggODhlMTNhZDgyYWRjZWM0ZmJlZTY4NWYyYzdi
ZTQ1OThmOGQ0Y2JiZi4uM2VhMDA2YjNjZTM4ZTM4OTQxZmRiZDU4NjczY2Q4MWE2ODJjMjUzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAK
QEAgLTEyNTMsNyArMTI1Myw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybUphdmFTY3JpcHRV
UkxSZXF1ZXN0KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiAgICAgLy8gRXZhbHVhdGUgdGhlIEphdmFT
Y3JpcHQgY29kZS4gTm90ZSB0aGF0IHJ1bm5pbmcgSmF2YVNjcmlwdCBoZXJlIGNvdWxkIGNhdXNl
IHRoZSBwbHVnLWluIHRvIGJlIGRlc3Ryb3llZCwgc28gd2UKICAgICAvLyBncmFiIHJlZmVyZW5j
ZXMgdG8gdGhlIHBsdWctaW4gaGVyZS4KICAgICBSZWZQdHI8UGx1Z2luPiBwbHVnaW4gPSBtX3Bs
dWdpbjsKLSAgICBhdXRvIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGpz
U3RyaW5nLCByZXF1ZXN0LT5hbGxvd1BvcHVwcygpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGZyYW1l
LT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oanNTdHJpbmcsIHJlcXVl
c3QtPmFsbG93UG9wdXBzKCkpOwogCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rv
ckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwCmluZGV4IDkwOGUzOWFm
ZGIwYzg4OWNmZTU2NTJiMzlhZGM0NzBjM2EwOWE5YTIuLmMxODllOTgyNWFkNDk0NzBlZDYyNDM1
ZTg2ZDU5ZGY2MGYzOGFlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRj
aGVyLmNwcApAQCAtOTksNyArOTksNyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQVBJRGlz
cGF0Y2hlcjo6ZXZhbHVhdGVPclF1ZXVlRXhwcmVzc2lvbihjb25zdCBTdHJpbmcmCiAKICAgICBB
U1NFUlQobV9xdWV1ZS5pc0VtcHR5KCkpOwogICAgIEFTU0VSVCghbV9wYWdlLmNvcmVQYWdlKCkt
Pm1haW5GcmFtZSgpLnNjcmlwdCgpLmlzUGF1c2VkKCkpOwotICAgIG1fcGFnZS5jb3JlUGFnZSgp
LT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGV4cHJlc3Npb24pOworICAgIG1f
cGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3Jp
bmdFeGNlcHRpb24oZXhwcmVzc2lvbik7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRB
UElEaXNwYXRjaGVyOjpldmFsdWF0ZVF1ZXVlZEV4cHJlc3Npb25zKCkKQEAgLTEwOSw3ICsxMDks
NyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6ZXZhbHVhdGVRdWV1
ZWRFeHByZXNzaW9ucygpCiAKICAgICBmb3IgKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiA6IG1f
cXVldWUpIHsKICAgICAgICAgQVNTRVJUKCFtX3BhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCku
c2NyaXB0KCkuaXNQYXVzZWQoKSk7Ci0gICAgICAgIG1fcGFnZS5jb3JlUGFnZSgpLT5tYWluRnJh
bWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGV4cHJlc3Npb24pOworICAgICAgICBtX3BhZ2Uu
Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhj
ZXB0aW9uKGV4cHJlc3Npb24pOwogICAgIH0KIAogICAgIG1fcXVldWUuY2xlYXIoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNzM1ZmVhNGVl
MTNiZTQyNWMyMzRiZTkyMTIwZmU5ZTdiY2EyZDVjNy4uMTI0NzAyY2U1ZTg5MzAzYmNiNjMxMWVh
MTVjZjQ3ZDAxMmUzNzgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKQEAgLTMzNTMsMjMgKzMzNTMsMjUgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZh
U2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VV
c2UKICAgICAvLyBOT1RFOiBXZSBuZWVkIHRvIGJlIGNhcmVmdWwgd2hlbiBydW5uaW5nIHNjcmlw
dHMgdGhhdCB0aGUgb2JqZWN0cyB3ZSBkZXBlbmQgb24gZG9uJ3QKICAgICAvLyBkaXNhcHBlYXIg
ZHVyaW5nIHNjcmlwdCBleGVjdXRpb24uCiAKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBzZXJpYWxpemVkUmVzdWx0VmFsdWU7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soY29tbW9u
Vk0oKSk7Ci0gICAgYm9vbCBoYWRFeGNlcHRpb24gPSB0cnVlOwotICAgIEV4Y2VwdGlvbkRldGFp
bHMgZGV0YWlsczsKKyAgICBWYWx1ZUFuZEV4Y2VwdGlvbiByZXN1bHQ7CisgICAgUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFJlc3VsdFZhbHVlOworCiAgICAgYXV0byog
d29ybGQgPSB3b3JsZE5hbWUgPyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpmaW5kKHdvcmxk
TmFtZS52YWx1ZSgpKSA6ICZJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgp
OwogICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+Y29yZUZyYW1lKCkgJiYgd29ybGQpIHsKLSAgICAg
ICAgaWYgKEpTVmFsdWUgcmVzdWx0VmFsdWUgPSBmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgp
LmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKHdvcmxkLT5jb3JlV29ybGQoKSwgc2NyaXB0
LCBmb3JjZVVzZXJHZXN0dXJlLCAmZGV0YWlscykpIHsKLSAgICAgICAgICAgIGhhZEV4Y2VwdGlv
biA9IGZhbHNlOworICAgICAgICByZXN1bHQgPSBmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgp
LmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKHdvcmxkLT5jb3JlV29ybGQoKSwgc2NyaXB0
LCBmb3JjZVVzZXJHZXN0dXJlKTsKKyAgICAgICAgaWYgKHJlc3VsdC5maXJzdCkgeworICAgICAg
ICAgICAgQVNTRVJUKCFyZXN1bHQuc2Vjb25kKTsKICAgICAgICAgICAgIHNlcmlhbGl6ZWRSZXN1
bHRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGZyYW1lLT5qc0NvbnRleHRG
b3JXb3JsZCh3b3JsZCksCi0gICAgICAgICAgICAgICAgdG9SZWYoZnJhbWUtPmNvcmVGcmFtZSgp
LT5zY3JpcHQoKS5nbG9iYWxPYmplY3Qod29ybGQtPmNvcmVXb3JsZCgpKSwgcmVzdWx0VmFsdWUp
LCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICB0b1JlZihmcmFtZS0+Y29yZUZyYW1lKCktPnNj
cmlwdCgpLmdsb2JhbE9iamVjdCh3b3JsZC0+Y29yZVdvcmxkKCkpLCByZXN1bHQuZmlyc3QpLCBu
dWxscHRyKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRh
UmVmZXJlbmNlOwogICAgIGlmIChzZXJpYWxpemVkUmVzdWx0VmFsdWUpCiAgICAgICAgIGRhdGFS
ZWZlcmVuY2UgPSBzZXJpYWxpemVkUmVzdWx0VmFsdWUtPmRhdGEoKTsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgaGFk
RXhjZXB0aW9uLCBkZXRhaWxzLCBjYWxsYmFja0lEKSk7CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgcmVzdWx0LnNl
Y29uZCwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdl
c3R1cmUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCBjYWxs
YmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCmluZGV4IDk0N2JmYzUzNDJjYmNhYzA5YWFh
ZjUxMmNjZGI2ZGZlOWNiMWNhNDEuLmVhNTA3OGVkMThmNTUwNTJkZjJlNDI4MTNlMmE2ZjcwODU1
Y2U3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTM3OSw3ICszNzksNyBAQCB2b2lk
IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVk
VVJMLCBjb25zdCBTdHJpbmcmCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgW2NvbnRlbnRD
b3B5IHdyaXRlVG9VUkw6YWN0dWFsVVJMIGF0b21pY2FsbHk6WUVTIGVuY29kaW5nOk5TVVRGOFN0
cmluZ0VuY29kaW5nIGVycm9yOk5VTExdOwogCi0gICAgICAgIGNvcmUoW21fZnJvbnRlbmRXaW5k
b3dDb250cm9sbGVyIGZyb250ZW5kV2ViVmlld10pLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVj
dXRlU2NyaXB0KFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRB
UEkuc2F2ZWRVUkwoXCIlQFwiKSIsIGFjdHVhbFVSTC5hYnNvbHV0ZVN0cmluZ10pOworICAgICAg
ICBjb3JlKFttX2Zyb250ZW5kV2luZG93Q29udHJvbGxlciBmcm9udGVuZFdlYlZpZXddKS0+bWFp
bkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuc2F2ZWRVUkwoXCIlQFwi
KSIsIGFjdHVhbFVSTC5hYnNvbHV0ZVN0cmluZ10pOwogICAgIH07CiAKICAgICBpZiAoIWZvcmNl
U2F2ZURpYWxvZykgewpAQCAtNDI1LDcgKzQyNSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6OmFwcGVuZChjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5n
CiAgICAgW2hhbmRsZSB3cml0ZURhdGE6W2NvbnRlbnQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4
U3RyaW5nRW5jb2RpbmddXTsKICAgICBbaGFuZGxlIGNsb3NlRmlsZV07CiAKLSAgICBjb3JlKFtt
X2Zyb250ZW5kV2luZG93Q29udHJvbGxlciBmcm9udGVuZFdlYlZpZXddKS0+bWFpbkZyYW1lKCku
c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3Bl
Y3RvckZyb250ZW5kQVBJLmFwcGVuZGVkVG9VUkwoXCIlQFwiKSIsIFthY3R1YWxVUkwgYWJzb2x1
dGVTdHJpbmddXSk7CisgICAgY29yZShbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIgZnJvbnRl
bmRXZWJWaWV3XSktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4
Y2VwdGlvbihbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3BlY3RvckZyb250ZW5kQVBJ
LmFwcGVuZGVkVG9VUkwoXCIlQFwiKSIsIFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddXSk7CiB9
CiAKIC8vIE1BUks6IC0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tCmluZGV4IDE4ZDNkOWVjMTRkOGM2OTVkMDNmOTNjM2RkMjAxNmFkNDA5NGE0NTguLjA1YjU2
OTMwNDM2NGI0OTY5NzFkODlkZDk3ZmY4ZGUyY2Y0NTY3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtNzAwLDcgKzcwMCw3IEBAIC0gKE5TU3Ry
aW5nICopX3N0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOihOU1N0cmluZyAq
KXN0cmluZyBmb3JjZVVzCiAgICAgSlNDOjpKU0xvY2tIb2xkZXIganNjTG9jayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICNlbmRpZgogCi0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IF9wcml2YXRl
LT5jb3JlRnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoc3RyaW5nLCBmb3JjZVVzZXJHZXN0
dXJlKTsKKyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2Ny
aXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKHN0cmluZywgZm9yY2VVc2VyR2Vz
dHVyZSk7CiAKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlRnJhbWUpIC8vIEluIGNhc2UgdGhlIHNj
cmlwdCByZW1vdmVkIG91ciBmcmFtZSBmcm9tIHRoZSBwYWdlLgogICAgICAgICByZXR1cm4gQCIi
OwpAQCAtMjA5Niw3ICsyMDk2LDcgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdEZyb21TdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHdpdGhHbG8KICAgICBBU1NF
UlQoZnJhbWUtPmRvY3VtZW50KCkpOwogICAgIFJldGFpblB0cjxXZWJGcmFtZT4gd2ViRnJhbWUo
a2l0KGZyYW1lKSk7IC8vIFJ1bm5pbmcgYXJiaXRyYXJ5IEphdmFTY3JpcHQgY2FuIGRlc3Ryb3kg
dGhlIGZyYW1lLgogCi0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5l
eGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZCgqY29yZSh3b3JsZCksIHN0cmluZywgdHJ1ZSk7
CisgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlVXNlckFn
ZW50U2NyaXB0SW5Xb3JsZCgqY29yZSh3b3JsZCksIHN0cmluZywgdHJ1ZSkuZmlyc3Q7CiAKICAg
ICBpZiAoIXdlYkZyYW1lLT5fcHJpdmF0ZS0+Y29yZUZyYW1lKSAvLyBJbiBjYXNlIHRoZSBzY3Jp
cHQgcmVtb3ZlZCBvdXIgZnJhbWUgZnJvbSB0aGUgcGFnZS4KICAgICAgICAgcmV0dXJuIEAiIjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA0N2FhZTMy
OGRiYzZhY2ZiZWFiYjNhZWM2ZDI3ODNjYjRmNTlmMDcxLi45NjFlMDVjZjFjMjI5ZGUxMTA0NmI3
YzRmYjgzNGY1MzM5YmI4MjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCkBAIC03OTA4LDcgKzc5MDgsNyBAQCAtIChOU0FwcGxlRXZlbnREZXNjcmlwdG9y
ICopYWVEZXNjQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6KE5TU3RyaW5nICopcwog
ICAgICAgICByZXR1cm4gbmlsOwogICAgIGlmICghY29yZUZyYW1lLT5kb2N1bWVudCgpKQogICAg
ICAgICByZXR1cm4gbmlsOwotICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBjb3JlRnJhbWUtPnNj
cmlwdCgpLmV4ZWN1dGVTY3JpcHQoc2NyaXB0LCB0cnVlKTsKKyAgICBKU0M6OkpTVmFsdWUgcmVz
dWx0ID0gY29yZUZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24o
c2NyaXB0LCB0cnVlKTsKICAgICBpZiAoIXJlc3VsdCkgLy8gRklYTUU6IHBhc3MgZXJyb3JzCiAg
ICAgICAgIHJldHVybiAwOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soY29yZUZyYW1lLT5z
Y3JpcHQoKS5nbG9iYWxPYmplY3QoV2ViQ29yZTo6bWFpblRocmVhZE5vcm1hbFdvcmxkKCkpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4
IGU1ZWY2M2I0Y2Q4NjcxN2IzNjBiMDk5Yzg2MmUyN2E2MzUxMTUwNDMuLjgxNjBkYTE0YWMwMDkz
OTY4MGMyMmRlZGMyYTI1ZDNjM2E2ZTMwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNDM5LDcgKzQzOSw3IEBAIHZvaWQgUGx1Z2lu
Vmlldzo6cGVyZm9ybVJlcXVlc3QoUGx1Z2luUmVxdWVzdCogcmVxdWVzdCkKICAgICAKICAgICAv
LyBFeGVjdXRpbmcgYSBzY3JpcHQgY2FuIGNhdXNlIHRoZSBwbHVnaW4gdmlldyB0byBiZSBkZXN0
cm95ZWQsIHNvIHdlIGtlZXAgYSByZWZlcmVuY2UgdG8gaXQuCiAgICAgUmVmUHRyPFBsdWdpblZp
ZXc+IHByb3RlY3Rvcih0aGlzKTsKLSAgICBhdXRvIHJlc3VsdCA9IG1fcGFyZW50RnJhbWUtPnNj
cmlwdCgpLmV4ZWN1dGVTY3JpcHQoanNTdHJpbmcsIHJlcXVlc3QtPnNob3VsZEFsbG93UG9wdXBz
KCkpOworICAgIGF1dG8gcmVzdWx0ID0gbV9wYXJlbnRGcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNj
cmlwdElnbm9yaW5nRXhjZXB0aW9uKGpzU3RyaW5nLCByZXF1ZXN0LT5zaG91bGRBbGxvd1BvcHVw
cygpKTsKIAogICAgIGlmICh0YXJnZXRGcmFtZU5hbWUuaXNOdWxsKCkpIHsKICAgICAgICAgQ1N0
cmluZyBjc3RyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDZlZmFlOGY2
MjI5ODQ5Y2ExZjU5NmI3MzU1Y2VlZjQzY2ZkNjkwYTguLmM3NzhlMjJiNzBkY2YxODU1MjJjYTZl
MjA5Yjg3MDkxOTViNTE0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKQEAg
LTIwNTUsNyArMjA1NSw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OnN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHRJblNjcmlwdFdvcmxkKElXZWJTY3JpcHRXb3JsZCogaVdvCiAgICAgLy8gR2V0IHRo
ZSBmcmFtZSBmcm9tZSB0aGUgZ2xvYmFsIG9iamVjdCB3ZSd2ZSBzZXR0bGVkIG9uLgogICAgIEZy
YW1lKiBmcmFtZSA9IGFueVdvcmxkR2xvYmFsT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKTsKICAg
ICBBU1NFUlQoZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gZnJhbWUt
PnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLT53b3JsZCgpLCBzdHJpbmcsIHRy
dWUpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJ
bldvcmxkSWdub3JpbmdFeGNlcHRpb24od29ybGQtPndvcmxkKCksIHN0cmluZywgdHJ1ZSk7CiAK
ICAgICBpZiAoIWZyYW1lKSAvLyBJbiBjYXNlIHRoZSBzY3JpcHQgcmVtb3ZlZCBvdXIgZnJhbWUg
ZnJvbSB0aGUgcGFnZS4KICAgICAgICAgcmV0dXJuIFNfT0s7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlZpZXcuY3BwCmluZGV4IGEwNDQ4YmIwMTNlZGZiNDMzNWZiYzlhYmM4YTdlMzA4MDc3ZjAwNDMu
LmU3MmVhNDNlZGI3OWM4YTAyMWNjNmRmYzE4YTk5ZDViYzA4ZTNmYjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlZpZXcuY3BwCkBAIC0zNjYzLDcgKzM2NjMsNyBAQCBIUkVTVUxUIFdlYlZpZXc6
OnN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nKF9Jbl8gQlNUUiBzY3JpcHQs
IC8vIGFzcwogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVE
OwogCi0gICAgYXV0byBzY3JpcHRFeGVjdXRpb25SZXN1bHQgPSBjb3JlRnJhbWUtPnNjcmlwdCgp
LmV4ZWN1dGVTY3JpcHQoV1RGOjpTdHJpbmcoc2NyaXB0KSwgdHJ1ZSk7CisgICAgYXV0byBzY3Jp
cHRFeGVjdXRpb25SZXN1bHQgPSBjb3JlRnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25v
cmluZ0V4Y2VwdGlvbihXVEY6OlN0cmluZyhzY3JpcHQpLCB0cnVlKTsKICAgICBpZiAoIXNjcmlw
dEV4ZWN1dGlvblJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKICAgICBlbHNlIGlmIChz
Y3JpcHRFeGVjdXRpb25SZXN1bHQuaXNTdHJpbmcoKSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385541</attachid>
            <date>2019-12-12 13:32:23 -0800</date>
            <delta_ts>2019-12-12 23:59:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205151-20191212133222.patch</filename>
            <type>text/plain</type>
            <size>53612</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjU5MGYyYWFjZjNmZTJj
NWE4ZDlkYWUwZjFmOGM4NDY0YTY1MGE3YS4uMjMxNTdiZTRlZGVmMGIzZTEyZmRkMWQzZjRlOWRj
ZTY3Yzc3MTUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE5LTEyLTEyICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRD
b250cm9sbGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoUmVm
YWN0b3IsIG5vIGJlaGF2aW9yIGNoYW5nZSkuCisKKyAgICAgICAgVGhlcmUncyBzbyBtYW55IEV4
Y2VwdGlvbkRldGFpbHMqIG51bGwgcG9pbnRlcnMgYmVpbmcgcGFzc2VkIGFyb3VuZCBpbiB0aGUg
U2NyaXB0Q29udHJvbGxlcgorICAgICAgICBmYW1pbHkgb2YgZnVuY3Rpb25zLgorCisgICAgICAg
IExldCdzIG1ha2UgaXQgYSBsaXR0bGUgbW9yZSBleHBsaWNpdCB3aGljaCBjYWxsZXJzIGdldCBl
eGNlcHRpb25zIGFuZCB3aGljaCBkb24ndC4KKworCisgICAgICAgICogTW9kdWxlcy9wbHVnaW5z
L1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UXVpY2tU
aW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmVuc3VyZVJlcGxhY2VtZW50U2NyaXB0SW5qZWN0ZWQpOgor
CisgICAgICAgICogYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZSk6CisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xs
ZXI6OmV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNl
cHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlw
dEluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVz
ZXJBZ2VudFNjcmlwdEluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxl
cjo6ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdCk6IERlbGV0ZWQuCisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAKKyAgICAgICAgKiBjb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vz
c0NvbnRlbnRSdWxlTGlzdHNGb3JMb2FkKToKKyAgICAgICAgCisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjplbnN1cmVQbHVnSW5zSW5qZWN0
ZWRTY3JpcHQpOgorICAgICAgICAKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpleGVjdXRlQ2xhc3NpY1NjcmlwdCk6Cisg
ICAgICAgIAorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplbnN1cmVNZWRpYUNvbnRyb2xzSW5qZWN0ZWRTY3Jp
cHQpOgorICAgICAgICAKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsOjpldmFsdWF0ZUFzQm9vbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsOjpldmFsdWF0ZU9uTG9hZCk6CisgICAgICAgIAorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKToKKyAgICAg
ICAgCisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEZpbHRlcjo6ZGlkRGVjaWRlKToKKyAgICAgICAgCisgICAgICAgICogcGFnZS9G
cmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5qZWN0VXNlclNjcmlwdEltbWVk
aWF0ZWx5KToKKyAgICAgICAgCisgICAgICAgICogeG1sL1hNTFRyZWVWaWV3ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6WE1MVHJlZVZpZXdlcjo6dHJhbnNmb3JtRG9jdW1lbnRUb1RyZWVWaWV3
KToKKwogMjAxOS0xMi0xMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFRyeWluZyB0byBzZXQgdG9TdHJpbmcgLyB2YWx1ZU9mIG9uIGEgY3Jvc3Mtb3JpZ2luIExv
Y2F0aW9uIG9iamVjdCBzaG91bGQgdGhyb3cgYSBTZWN1cml0eUVycm9yCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhk
NzYyYWQ5YTM4NjgzNDkyNThjMDJjOTYyZjk1ZmY5M2FmMjU3MzcuLmU3MjBiZjc4NTMzMjQzMmZj
ZTlmM2QyNDViOTE2NmIxM2Q3MWViOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTkt
MTItMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFj
dG9yIFNjcmlwdENvbnRyb2xsZXIncyBwcm9saWZlcmF0aW9uIG9mIEV4Y2VwdGlvbkRldGFpbHMq
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MTUx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6Zm9yY2VVc2VyR2VzdHVy
ZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lU2NyaXB0V29ybGQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1
bkphdmFTY3JpcHRJbkZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luVmlldzo6cGVyZm9ybUphdmFTY3JpcHRVUkxSZXF1ZXN0KToKKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OmV2YWx1
YXRlT3JRdWV1ZUV4cHJlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JGcm9u
dGVuZEFQSURpc3BhdGNoZXI6OmV2YWx1YXRlUXVldWVkRXhwcmVzc2lvbnMpOgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpydW5KYXZhU2NyaXB0KToKKwogMjAxOS0xMi0xMSAgSmlld2VuIFRhbiAgPGppZXdlbl90
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGEgbml0IGFmdGVyIHIyNTMzNjYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBiOWRhZTJjZTEwZTA4NzJkMzUzMDhjOGM4
Y2M2MGRlMjBmMjVmNzc1Li5lMWY3MWE1ZDU2OTBjMzQ1MjRkYjY4NjI5Yjg0OTA5MTUzZGU3MDc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTktMTIt
MTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9y
IFNjcmlwdENvbnRyb2xsZXIncyBwcm9saWZlcmF0aW9uIG9mIEV4Y2VwdGlvbkRldGFpbHMqLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MTUxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW06CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudDo6c2F2ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
YXBwZW5kKToKKyAgICAgICAgCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAg
ICAgKC1bV2ViRnJhbWUgX3N0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOmZv
cmNlVXNlckdlc3R1cmU6XSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9zdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0RnJvbVN0cmluZzp3aXRoR2xvYmFsT2JqZWN0OmluU2NyaXB0V29ybGQ6XSk6
CisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgYWVE
ZXNjQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6XSk6CisKIDIwMTktMTItMDkgIEVy
aWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIG1l
ZGlhIGluIHRoZSBHUFUgcHJvY2VzcyBwcmVmZXJlbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKaW5kZXggNDIwMTRkOTlkNTAyMTZmYTkyZDQ5YTU5MmEwMDY3ODE5MmQ2NGQ0MS4uZmQ3MGE5
MGUzM2ZmNDY0ZjM5N2EyZDM0NTFjNmQ3MTRlZDZkMWZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE5LTEyLTEyICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRDb250cm9sbGVyJ3MgcHJv
bGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KToKKworICAgICAgICAqIFdl
YkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0SW5TY3JpcHRXb3JsZCk6CisKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdl
YlZpZXc6OnN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nKToKKyAgICAgICAg
CiAyMDE5LTEyLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
UGFnZUNvbmZpZ3VyYXRpb246OmRyYWdDbGllbnQgc2hvdWxkIHVzZSBhIHNtYXJ0IHBvaW50ZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1Rp
bWVQbHVnaW5SZXBsYWNlbWVudC5tbQppbmRleCA5ODEyNmUwM2YzZTMyMTQ3NWY3NTExNDY0MmFk
OGQwYjI0OGJhZDIzLi4wM2QyMWRlN2Q1YWMwNjliMmNhYTNkOTYxMWI5OGY4NGEzNTE3ZjRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2lu
UmVwbGFjZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCkBAIC0xNTgsNyArMTU4LDcgQEAgYm9vbCBRdWlja1Rp
bWVQbHVnaW5SZXBsYWNlbWVudDo6ZW5zdXJlUmVwbGFjZW1lbnRTY3JpcHRJbmplY3RlZCgpCiAg
ICAgaWYgKHJlcGxhY2VtZW50RnVuY3Rpb24uaXNGdW5jdGlvbih2bSkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIAotICAgIHNjcmlwdENvbnRyb2xsZXIuZXZhbHVhdGVJbldvcmxkKFNjcmlw
dFNvdXJjZUNvZGUocXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRTY3JpcHQoKSksIHdvcmxkKTsK
KyAgICBzY3JpcHRDb250cm9sbGVyLmV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKFNj
cmlwdFNvdXJjZUNvZGUocXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRTY3JpcHQoKSksIHdvcmxk
KTsKICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAgICAgIExPRyhQ
bHVnaW5zLCAiJXAgLSBFeGNlcHRpb24gd2hlbiBldmFsdWF0aW5nIFF1aWNrVGltZSBwbHVnaW4g
cmVwbGFjZW1lbnQgc2NyaXB0IiwgdGhpcyk7CiAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9u
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcApp
bmRleCAyOGNmNTY0NjZiY2EzYzljMmQyMDg4OTUxYzk4MDgyZmRiNTFhODU2Li44ZTRjN2IzODEy
NDRlNzc2YmRkNTgzNGFlNDE5MzZkN2RjYzYyMjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIFNj
aGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgaWYgKG1fZnVu
Y3Rpb24pCiAgICAgICAgIGV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dCh3aW5kb3csIHdpbmRvdy0+
cHJveHkoKSwgZG9jdW1lbnQpOwogICAgIGVsc2UKLSAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmV4
ZWN1dGVTY3JpcHRJbldvcmxkKG1faXNvbGF0ZWRXb3JsZCwgbV9jb2RlKTsKKyAgICAgICAgZnJh
bWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24obV9pc29s
YXRlZFdvcmxkLCBtX2NvZGUpOwogfQogCiB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZShX
b3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGIxZmRlODUwMmU0ZGEwYjBm
NjlmNDgxNmQ0YTQxMmVjNGVlNGM3M2YuLjRjZWQ0YzNjMjRlYjA2MGEyNjY1NTkwNjg5ODJmNDMx
YzY2MTk4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuY3BwCkBAIC0xMDcsNyArMTA3LDEyIEBAIFNjcmlwdENvbnRyb2xsZXI6On5TY3JpcHRD
b250cm9sbGVyKCkKICAgICB9CiB9CiAKLUpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVh
dGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPTVdyYXBwZXJX
b3JsZCYgd29ybGQsIEV4Y2VwdGlvbkRldGFpbHMqIGV4Y2VwdGlvbkRldGFpbHMpCitKU0M6OkpT
VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRpb24o
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCkKK3sKKyAgICByZXR1cm4gZXZhbHVhdGVJbldvcmxkKHNvdXJjZUNvZGUsIHdvcmxkKS5maXJz
dDsKK30KKworVmFsdWVBbmRFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldv
cmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPTVdyYXBwZXJXb3JsZCYg
d29ybGQpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CiAKQEAgLTEzNSwx
OSArMTQwLDIxIEBAIEpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkKGNv
bnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPCiAKICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUpOwogCisgICAgT3B0aW9uYWw8
RXhjZXB0aW9uRGV0YWlscz4gb3B0aW9uYWxEZXRhaWxzOwogICAgIGlmIChldmFsdWF0aW9uRXhj
ZXB0aW9uKSB7Ci0gICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmZ2xvYmFsT2JqZWN0LCBldmFsdWF0
aW9uRXhjZXB0aW9uLCBzb3VyY2VDb2RlLmNhY2hlZFNjcmlwdCgpLCBleGNlcHRpb25EZXRhaWxz
KTsKLSAgICAgICAgbV9zb3VyY2VVUkwgPSBzYXZlZFNvdXJjZVVSTDsKLSAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBkZXRhaWxzOworICAgICAgICByZXBvcnRF
eGNlcHRpb24oJmdsb2JhbE9iamVjdCwgZXZhbHVhdGlvbkV4Y2VwdGlvbiwgc291cmNlQ29kZS5j
YWNoZWRTY3JpcHQoKSwgJmRldGFpbHMpOworICAgICAgICBvcHRpb25hbERldGFpbHMgPSBXVEZN
b3ZlKGRldGFpbHMpOworICAgICAgICByZXR1cm5WYWx1ZSA9IHsgfTsKICAgICB9CiAKICAgICBt
X3NvdXJjZVVSTCA9IHNhdmVkU291cmNlVVJMOwotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAg
ICByZXR1cm4geyByZXR1cm5WYWx1ZSwgb3B0aW9uYWxEZXRhaWxzIH07CiB9CiAKLUpTVmFsdWUg
U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNl
Q29kZSwgRXhjZXB0aW9uRGV0YWlscyogZXhjZXB0aW9uRGV0YWlscykKK0pTQzo6SlNWYWx1ZSBT
Y3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlwdFNv
dXJjZUNvZGUmIHNvdXJjZUNvZGUpCiB7Ci0gICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3Vy
Y2VDb2RlLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgZXhjZXB0aW9uRGV0YWlscyk7CisgICAg
cmV0dXJuIGV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKHNvdXJjZUNvZGUsIG1haW5U
aHJlYWROb3JtYWxXb3JsZCgpKTsKIH0KIAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjpsb2FkTW9k
dWxlU2NyaXB0SW5Xb3JsZChMb2FkYWJsZU1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0LCBjb25z
dCBTdHJpbmcmIG1vZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYgdG9wTGV2
ZWxGZXRjaFBhcmFtZXRlcnMsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCkBAIC01NDgsNyArNTU1
LDEyIEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJTY3JpcHRPYmplY3RzKCkKICNlbmRp
ZgogfQogCi1KU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERP
TVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNl
ckdlc3R1cmUsIEV4Y2VwdGlvbkRldGFpbHMqIGV4Y2VwdGlvbkRldGFpbHMpCitKU0M6OkpTVmFs
dWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlv
bihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3Jj
ZVVzZXJHZXN0dXJlKQoreworICAgIHJldHVybiBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3JsZCwg
c2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlKS5maXJzdDsKK30KKworVmFsdWVBbmRFeGNlcHRpb24g
U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKIHsKICAg
ICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGZvcmNlVXNlckdlc3R1cmUg
PyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0
dXJlKSA6IFdURjo6bnVsbG9wdCk7CiAgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2RlKHNj
cmlwdCwgVVJMKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpLCBUZXh0UG9zaXRpb24oKSwgSlND
OjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIENhY2hlZFNjcmlwdEZldGNoZXI6
OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmNoYXJzZXQoKSkpOwpAQCAtNTU2LDE3ICs1Njgs
MTcgQEAgSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01X
cmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHIKICAgICBpZiAoIWNhbkV4ZWN1dGVTY3JpcHRz
KEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNlZCgpKQogICAgICAgICByZXR1cm4geyB9
OwogCi0gICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3b3JsZCwgZXhjZXB0
aW9uRGV0YWlscyk7CisgICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCB3b3Js
ZCk7CiB9CiAKLUpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlw
dEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJv
b2wgZm9yY2VVc2VyR2VzdHVyZSwgRXhjZXB0aW9uRGV0YWlscyogZXhjZXB0aW9uRGV0YWlscykK
K1ZhbHVlQW5kRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3Jp
cHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBi
b29sIGZvcmNlVXNlckdlc3R1cmUpCiB7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqbV9mcmFtZS5k
b2N1bWVudCgpOwogICAgIGlmICghc2hvdWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRzKGRvY3VtZW50
KSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGRvY3VtZW50LnNldEhhc0V2YWx1YXRlZFVz
ZXJBZ2VudFNjcmlwdHMoKTsKLSAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQs
IHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgZXhjZXB0aW9uRGV0YWlscyk7CisgICAgcmV0dXJu
IGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUpOwog
fQogCiBib29sIFNjcmlwdENvbnRyb2xsZXI6OnNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0cyhE
b2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CkBAIC01OTgsMTQgKzYxMCwxMCBAQCBib29sIFNjcmlw
dENvbnRyb2xsZXI6OmNhbkV4ZWN1dGVTY3JpcHRzKFJlYXNvbkZvckNhbGxpbmdDYW5FeGVjdXRl
U2NyaXB0cyByZWFzbwogICAgIHJldHVybiBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmFsbG93
U2NyaXB0KG1fZnJhbWUuc2V0dGluZ3MoKS5pc1NjcmlwdEVuYWJsZWQoKSk7CiB9CiAKLUpTVmFs
dWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlLCBFeGNlcHRpb25EZXRhaWxzKiBleGNlcHRpb25EZXRhaWxz
KQorSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4
Y2VwdGlvbihjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQogewog
ICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoZm9yY2VVc2VyR2VzdHVy
ZSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdl
c3R1cmUpIDogV1RGOjpudWxsb3B0KTsKLSAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdChTY3JpcHRT
b3VyY2VDb2RlKHNjcmlwdCwgVVJMKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpLCBUZXh0UG9z
aXRpb24oKSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIENhY2hlZFNj
cmlwdEZldGNoZXI6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmNoYXJzZXQoKSkpLCBleGNl
cHRpb25EZXRhaWxzKTsKLX0KIAotSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2Ny
aXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIEV4Y2VwdGlvbkRldGFpbHMq
IGV4Y2VwdGlvbkRldGFpbHMpCi17CiAgICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0cyhBYm91dFRv
RXhlY3V0ZVNjcmlwdCkgfHwgaXNQYXVzZWQoKSkKICAgICAgICAgcmV0dXJuIHsgfTsgLy8gRklY
TUU6IFdvdWxkIGpzTnVsbCBiZSBiZXR0ZXI/CiAKQEAgLTYxMyw3ICs2MjEsNyBAQCBKU1ZhbHVl
IFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYg
c291cmNlQ29kZSwgRXhjZQogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjQ3NjMKICAgICBSZWY8RnJhbWU+IHByb3RlY3RvcihtX2ZyYW1lKTsgLy8gU2Ny
aXB0IGV4ZWN1dGlvbiBjYW4gZGVzdHJveSB0aGUgZnJhbWUsIGFuZCB0aHVzIHRoZSBTY3JpcHRD
b250cm9sbGVyLgogCi0gICAgcmV0dXJuIGV2YWx1YXRlKHNvdXJjZUNvZGUsIGV4Y2VwdGlvbkRl
dGFpbHMpOworICAgIHJldHVybiBldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJj
ZUNvZGUoc2NyaXB0LCBVUkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSksIFRleHRQb3NpdGlv
bigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgQ2FjaGVkU2NyaXB0
RmV0Y2hlcjo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2hhcnNldCgpKSkpOwogfQogCiBi
b29sIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29uc3QgVVJMJiB1
cmwsIFNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCBzaG91bGRSZXBsYWNlRG9j
dW1lbnRJZkphdmFTY3JpcHRVUkwpCkBAIC02MzIsNyArNjQwLDcgQEAgYm9vbCBTY3JpcHRDb250
cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYgdXJsLCBTaG91bGRSZXBs
YWNlRG9jdW0KICAgICBjb25zdCBpbnQgamF2YXNjcmlwdFNjaGVtZUxlbmd0aCA9IHNpemVvZigi
amF2YXNjcmlwdDoiKSAtIDE7CiAKICAgICBTdHJpbmcgZGVjb2RlZFVSTCA9IGRlY29kZVVSTEVz
Y2FwZVNlcXVlbmNlcyh1cmwuc3RyaW5nKCkpOwotICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0ZVNj
cmlwdChkZWNvZGVkVVJMLnN1YnN0cmluZyhqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoKSk7CisgICAg
YXV0byByZXN1bHQgPSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oZGVjb2RlZFVSTC5z
dWJzdHJpbmcoamF2YXNjcmlwdFNjaGVtZUxlbmd0aCkpOwogCiAgICAgLy8gSWYgZXhlY3V0aW5n
IHNjcmlwdCBjYXVzZWQgdGhpcyBmcmFtZSB0byBiZSByZW1vdmVkIGZyb20gdGhlIHBhZ2UsIHdl
CiAgICAgLy8gZG9uJ3Qgd2FudCB0byB0cnkgdG8gcmVwbGFjZSBpdHMgZG9jdW1lbnQhCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggMTMyNzRh
NWQxY2Y2ZDUyYjRhMjZlYzQ4ZGI1MDBhYmZmZTMzZWQ2Yi4uYjhiMjliMTg4YzhiOTIwOTk1ZmFj
NzFkYjFlODQwOTUyODYyODMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuaApAQCAtNzAsNiArNzAsOCBAQCBlbnVtIFJlYXNvbkZvckNhbGxpbmdD
YW5FeGVjdXRlU2NyaXB0cyB7CiAgICAgTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQKIH07CiAKK3Vz
aW5nIFZhbHVlQW5kRXhjZXB0aW9uID0gc3RkOjpwYWlyPEpTQzo6SlNWYWx1ZSwgV1RGOjpPcHRp
b25hbDxFeGNlcHRpb25EZXRhaWxzPj47CisKIGNsYXNzIFNjcmlwdENvbnRyb2xsZXIgOiBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8U2NyaXB0Q29udHJvbGxlcj4gewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogCkBAIC04OCwxMCArOTAsMTAgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZv
aWQgZ2V0QWxsV29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4mKTsKIAotICAgIEpT
Qzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBFeGNlcHRp
b25EZXRhaWxzKiA9IG51bGxwdHIpOwotICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBl
eGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUg
PSBmYWxzZSwgRXhjZXB0aW9uRGV0YWlscyogPSBudWxscHRyKTsKLSAgICBKU0M6OkpTVmFsdWUg
ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBzY3Jp
cHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlLCBFeGNlcHRpb25EZXRhaWxzKiA9IG51
bGxwdHIpOwotICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlVXNlckFnZW50
U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9v
bCBmb3JjZVVzZXJHZXN0dXJlLCBFeGNlcHRpb25EZXRhaWxzKiA9IG51bGxwdHIpOworICAgIFdF
QkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24o
Y29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKKyAg
ICBKU0M6OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihET01X
cmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJl
ID0gZmFsc2UpOworICAgIFZhbHVlQW5kRXhjZXB0aW9uIGV4ZWN1dGVTY3JpcHRJbldvcmxkKERP
TVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1
cmUgPSBmYWxzZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgVmFsdWVBbmRFeGNlcHRpb24gZXhlY3V0
ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBz
Y3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSk7CiAKICAgICBib29sIHNob3VsZEFsbG93VXNl
ckFnZW50U2NyaXB0cyhEb2N1bWVudCYpIGNvbnN0OwogCkBAIC0xMDIsOCArMTA0LDkgQEAgcHVi
bGljOgogICAgIC8vIERhcndpbiBpcyBhbiBleGNlcHRpb24gdG8gdGhpcyBydWxlOiBpdCBpcyBP
SyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSBhbnkgdGhyZWFkLCBldmVuIHJlZW50cmFudGx5
LgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAotICAgIEpTQzo6SlNW
YWx1ZSBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRXhjZXB0aW9uRGV0YWlscyog
PSBudWxscHRyKTsKLSAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlw
dFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmLCBFeGNlcHRpb25EZXRhaWxzKiA9IG51bGxw
dHIpOworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNj
cmlwdFNvdXJjZUNvZGUmKTsKKyAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJbldvcmxkSWdub3Jp
bmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYpOwor
ICAgIFZhbHVlQW5kRXhjZXB0aW9uIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VD
b2RlJiwgRE9NV3JhcHBlcldvcmxkJik7CiAKICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJbldv
cmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBSZWY8
TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiYmLCBET01XcmFwcGVyV29ybGQmKTsKICAgICB2b2lkIGxv
YWRNb2R1bGVTY3JpcHQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcmIG1vZHVs
ZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2Vu
ZC5jcHAKaW5kZXggYTc1NWZjYjkzY2ExMjIyMjhlNzJhNDU5NDhlZmI0MTA0MmNmMTVkNy4uNTJm
MzE5MmM1YjIwMDJmNTE4MzhhNzQ0OTI4N2I2ZWU4MGEzNTczZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0Jh
Y2tlbmQuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgQ29udGVudFJ1bGVMaXN0UmVzdWx0cyBDb250
ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50UnVsZUxpc3RzRm9yTG9hZCgKICAg
ICAgICAgICAgICAgICAmJiAoKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHVybC5ob3N0
KCksICJ3d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20iKSAmJiBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZSh1cmwucGF0aCgpLCAiL2FuYWx5dGljcy5qcyIpKQogICAgICAgICAgICAgICAgICAg
ICB8fCAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodXJsLmhvc3QoKSwgInd3dy5nb29n
bGV0YWdtYW5hZ2VyLmNvbSIpICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHVybC5w
YXRoKCksICIvZ3RtLmpzIikpKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBmcmFtZSA9
IGN1cnJlbnREb2N1bWVudC0+ZnJhbWUoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUtPnNj
cmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUgeyAidHJ5IHsgd2luZG93LmRhdGFMYXll
ci5oaWRlLmVuZCgpOyBjb25zb2xlLmxvZygnQ2FsbGVkIHdpbmRvdy5kYXRhTGF5ZXIuaGlkZS5l
bmQoKSBpbiBmcmFtZSAnICsgZG9jdW1lbnQuVVJMICsgJyBiZWNhdXNlIHRoZSBjb250ZW50IGJs
b2NrZXIgYmxvY2tlZCB0aGUgbG9hZCBvZiB0aGUgaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGlj
cy5jb20vYW5hbHl0aWNzLmpzIHNjcmlwdCcpOyB9IGNhdGNoIChlKSB7IH0iX3MgfSk7CisgICAg
ICAgICAgICAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9u
KFNjcmlwdFNvdXJjZUNvZGUgeyAidHJ5IHsgd2luZG93LmRhdGFMYXllci5oaWRlLmVuZCgpOyBj
b25zb2xlLmxvZygnQ2FsbGVkIHdpbmRvdy5kYXRhTGF5ZXIuaGlkZS5lbmQoKSBpbiBmcmFtZSAn
ICsgZG9jdW1lbnQuVVJMICsgJyBiZWNhdXNlIHRoZSBjb250ZW50IGJsb2NrZXIgYmxvY2tlZCB0
aGUgbG9hZCBvZiB0aGUgaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0aWNz
LmpzIHNjcmlwdCcpOyB9IGNhdGNoIChlKSB7IH0iX3MgfSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBmM2Y3ZjAzMmYyMGUxYTVh
M2YzYzhmMTNkMjI3MDk5ZjViODJiMWU5Li4xN2VkYzhiYzU4MmYzNjc0N2M3YmM0NGFiZTlkZDVh
NGJmMGNiZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTcyMDEsNyArNzIwMSw3IEBA
IHZvaWQgRG9jdW1lbnQ6OmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdChET01XcmFwcGVyV29y
bGQmIHdvcmxkKQogICAgICAgICBqc1N0cmluZyA9IFN0cmluZyhwbHVnSW5zSmF2YVNjcmlwdCwg
c2l6ZW9mKHBsdWdJbnNKYXZhU2NyaXB0KSk7CiAKICAgICBzZXRIYXNFdmFsdWF0ZWRVc2VyQWdl
bnRTY3JpcHRzKCk7Ci0gICAgc2NyaXB0Q29udHJvbGxlci5ldmFsdWF0ZUluV29ybGQoU2NyaXB0
U291cmNlQ29kZShqc1N0cmluZyksIHdvcmxkKTsKKyAgICBzY3JpcHRDb250cm9sbGVyLmV2YWx1
YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUoanNTdHJpbmcpLCB3
b3JsZCk7CiAKICAgICBtX2hhc0luamVjdGVkUGx1Z0luc1NjcmlwdCA9IHRydWU7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggZTBkOTY3YjQ1NzRiYjM1MzA4NWZiMzc3
NjUwOTRjYzJmOGEzNTM4NS4uMTUxMTc1MTllZjkxMzQ2NzY3N2QyNTg2NTNjZDI3MjAxNzdlODA0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMzg3LDcgKzM4Nyw3IEBA
IHZvaWQgU2NyaXB0RWxlbWVudDo6ZXhlY3V0ZUNsYXNzaWNTY3JpcHQoY29uc3QgU2NyaXB0U291
cmNlQ29kZSYgc291cmNlQ29kZSkKICAgICBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNy
ZW1lbnRlciBpZ25vcmVEZXNjdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIobV9pc0V4dGVy
bmFsU2NyaXB0ID8gJmRvY3VtZW50IDogbnVsbHB0cik7CiAgICAgQ3VycmVudFNjcmlwdEluY3Jl
bWVudGVyIGN1cnJlbnRTY3JpcHRJbmNyZW1lbnRlcihkb2N1bWVudCwgbV9lbGVtZW50KTsKIAot
ICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZShzb3VyY2VDb2RlKTsKKyAgICBmcmFtZS0+c2Ny
aXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihzb3VyY2VDb2RlKTsKIH0KIAogdm9pZCBT
Y3JpcHRFbGVtZW50OjpleGVjdXRlTW9kdWxlU2NyaXB0KExvYWRhYmxlTW9kdWxlU2NyaXB0JiBs
b2FkYWJsZU1vZHVsZVNjcmlwdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCmluZGV4IGViNWZmNTY3ZWQ4MTBkZmMxODUxMDY4MDMyOTNhMmQ1NjRjZTIzNDkuLjczMGI0
ZTM4OWU3ODNmZTU2Njc1NWI4YWMzNjg4MTE5ZjA5NjkxNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNzMxNyw3ICs3MzE3LDcgQEAgYm9vbCBIVE1MTWVk
aWFFbGVtZW50OjplbnN1cmVNZWRpYUNvbnRyb2xzSW5qZWN0ZWRTY3JpcHQoKQogI2Vsc2UKICAg
ICAgICAgVVJMIHNjcmlwdFVSTDsKICNlbmRpZgotICAgICAgICBzY3JpcHRDb250cm9sbGVyLmV2
YWx1YXRlSW5Xb3JsZChTY3JpcHRTb3VyY2VDb2RlKG1lZGlhQ29udHJvbHNTY3JpcHQsIFdURk1v
dmUoc2NyaXB0VVJMKSksIHdvcmxkKTsKKyAgICAgICAgc2NyaXB0Q29udHJvbGxlci5ldmFsdWF0
ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKG1lZGlhQ29udHJvbHNT
Y3JpcHQsIFdURk1vdmUoc2NyaXB0VVJMKSksIHdvcmxkKTsKICAgICAgICAgaWYgKFVOTElLRUxZ
KHNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24o
KTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAppbmRleCAxYjNj
ODg3NmNjNjg3MzFiNWQ2MjhkZDJkZTJiOWQ2MDRmMmE0NWZiLi4wZDgzMTkyNTI3ODJkYTk1YTcy
ZWQzNmNhNWYwNDhjN2NkOGM4NDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC00MjAsNyArNDIw
LDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpkaXNwYXRjaE1lc3NhZ2VB
c3luYyhjb25zdCBTdHJpbmcmIG1lc3NhZ2VPYmoKIGJvb2wgSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbDo6ZXZhbHVhdGVBc0Jvb2xlYW4oY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQogewog
ICAgIGF1dG8mIHN0YXRlID0gKm1haW5Xb3JsZEV4ZWNTdGF0ZSgmbV9mcm9udGVuZFBhZ2UtPm1h
aW5GcmFtZSgpKTsKLSAgICByZXR1cm4gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnNjcmlw
dCgpLmV4ZWN1dGVTY3JpcHQoZXhwcmVzc2lvbikudG9XVEZTdHJpbmcoJnN0YXRlKSA9PSAidHJ1
ZSI7CisgICAgcmV0dXJuIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVj
dXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oZXhwcmVzc2lvbikudG9XVEZTdHJpbmcoJnN0YXRl
KSA9PSAidHJ1ZSI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZh
bHVhdGVPbkxvYWQoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQpAQCAtNDMxLDcgKzQzMSw3IEBA
IHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVhdGVPbkxvYWQoY29uc3Qg
U3RyaW5nJiBleHByZXNzaW9uKQogICAgIH0KIAogICAgIEpTQzo6U3VzcGVuZEV4Y2VwdGlvblNj
b3BlIHNjb3BlKCZtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnZtKCkpOwot
ICAgIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5ldmFsdWF0ZShTY3JpcHRT
b3VyY2VDb2RlKGV4cHJlc3Npb24pKTsKKyAgICBtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCku
c2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKGV4cHJl
c3Npb24pKTsKIH0KIAogUGFnZSogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6aW5zcGVj
dGVkUGFnZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggMDFlZGQwMDYwZGUzNjJjMWFiN2I3MDI0
NzVhZTgzODIyMjc5YTgwMC4uY2Y4OWY5ZWI1MDUyMzI2ZmNmOGNiZDI2ZDg1OTZjZjQ3MjRjMjM2
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQ
YWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcApAQCAtNzczLDcgKzc3Myw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFn
ZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUmIGZyYW1lKQogICAgIGlmICht
X2Jvb3RzdHJhcFNjcmlwdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZyYW1l
LnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUobV9ib290c3RyYXBTY3JpcHQsIFVS
TCB7IFVSTCgpLCAid2ViLWluc3BlY3RvcjovL2Jvb3RzdHJhcC5qcyJfcyB9KSk7CisgICAgZnJh
bWUuc2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKG1f
Ym9vdHN0cmFwU2NyaXB0LCBVUkwgeyBVUkwoKSwgIndlYi1pbnNwZWN0b3I6Ly9ib290c3RyYXAu
anMiX3MgfSkpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkUGFpbnQoUmVuZGVy
T2JqZWN0JiByZW5kZXJlciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCBiNDk4YTIyNGIxOTBjNmNlODQ0ZWI5ZGQ3ZWI5
YjdhMTA1ZDc2ZGM1Li42ZWFmY2EzNGU4MWEzOTkyZGQxZmI4MGY5MDMyZWI5NmM4YjliNzc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcg
QEAgdm9pZCBDb250ZW50RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUgc3RhdGUpCiAgICAgaWYgKCF1
bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUpIHsKICAgICAgICAg
dW5ibG9ja0hhbmRsZXIud3JhcFdpdGhEZWNpc2lvbkhhbmRsZXIoW3NjcmlwdENvbnRyb2xsZXIg
PSBtYWtlV2Vha1B0cihmcmFtZS0+c2NyaXB0KCkpLCBzY3JpcHQgPSB1bmJsb2NrUmVxdWVzdERl
bmllZFNjcmlwdC5pc29sYXRlZENvcHkoKV0oYm9vbCB1bmJsb2NrZWQpIHsKICAgICAgICAgICAg
IGlmICghdW5ibG9ja2VkICYmIHNjcmlwdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgc2Ny
aXB0Q29udHJvbGxlci0+ZXhlY3V0ZVNjcmlwdChzY3JpcHQpOworICAgICAgICAgICAgICAgIHNj
cmlwdENvbnRyb2xsZXItPmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihzY3JpcHQpOwog
ICAgICAgICB9KTsKICAgICB9CiAgICAgbV9kb2N1bWVudExvYWRlci5mcmFtZUxvYWRlcigpLT5j
bGllbnQoKS5jb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdURk1vdmUodW5ibG9ja0hhbmRsZXIp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggMjJjYzFmZDE1YmMxN2NmZDg1NmU5MTRjMzhhODZi
MGM0MmFjNzRiYy4uZTA4MzNkYzA4MzNmNTlhOWViMjYzNTA2MTMxY2RiYjk3YzlmOTIxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAKQEAgLTYzNCw3ICs2MzQsNyBAQCB2b2lkIEZyYW1lOjppbmplY3RV
c2VyU2NyaXB0SW1tZWRpYXRlbHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgVXNlclNj
cmlwdAogCiAgICAgZG9jdW1lbnQtPnNldEFzUnVubmluZ1VzZXJTY3JpcHRzKCk7CiAgICAgbG9h
ZGVyKCkuY2xpZW50KCkud2lsbEluamVjdFVzZXJTY3JpcHQod29ybGQpOwotICAgIG1fc2NyaXB0
LT5ldmFsdWF0ZUluV29ybGQoU2NyaXB0U291cmNlQ29kZShzY3JpcHQuc291cmNlKCksIFVSTChz
Y3JpcHQudXJsKCkpKSwgd29ybGQpOworICAgIG1fc2NyaXB0LT5ldmFsdWF0ZUluV29ybGRJZ25v
cmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdC5zb3VyY2UoKSwgVVJMKHNjcmlw
dC51cmwoKSkpLCB3b3JsZCk7CiB9CiAKIFJlbmRlclZpZXcqIEZyYW1lOjpjb250ZW50UmVuZGVy
ZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCmluZGV4IGZlMDFjYzFm
ZjQ5MWMzNjdmY2FkOTdiZmQ0ZDZjNGU3MzBmNmJkYTguLmY5MGU0NDUyNGQ1ZGEzNzY2MmNjMmRk
NTVmNDIxZjI4OTc3YjQyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxUcmVl
Vmlld2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAKQEAg
LTU2LDggKzU2LDggQEAgdm9pZCBYTUxUcmVlVmlld2VyOjp0cmFuc2Zvcm1Eb2N1bWVudFRvVHJl
ZVZpZXcoKQogICAgIG1fZG9jdW1lbnQuc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlP
cmlnaW5Qb2xpY3k6OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpKTsKIAog
ICAgIFN0cmluZyBzY3JpcHRTdHJpbmcgPSBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWlu
ZyhYTUxWaWV3ZXJfanMsIHNpemVvZihYTUxWaWV3ZXJfanMpKTsKLSAgICBtX2RvY3VtZW50LmZy
YW1lKCktPnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0U3RyaW5nKSk7
Ci0gICAgbV9kb2N1bWVudC5mcmFtZSgpLT5zY3JpcHQoKS5ldmFsdWF0ZShTY3JpcHRTb3VyY2VD
b2RlKEF0b21TdHJpbmcoInByZXBhcmVXZWJLaXRYTUxWaWV3ZXIoJ1RoaXMgWE1MIGZpbGUgZG9l
cyBub3QgYXBwZWFyIHRvIGhhdmUgYW55IHN0eWxlIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0
aCBpdC4gVGhlIGRvY3VtZW50IHRyZWUgaXMgc2hvd24gYmVsb3cuJyk7IikpKTsKKyAgICBtX2Rv
Y3VtZW50LmZyYW1lKCktPnNjcmlwdCgpLmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0
U291cmNlQ29kZShzY3JpcHRTdHJpbmcpKTsKKyAgICBtX2RvY3VtZW50LmZyYW1lKCktPnNjcmlw
dCgpLmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29kZShBdG9tU3RyaW5n
KCJwcmVwYXJlV2ViS2l0WE1MVmlld2VyKCdUaGlzIFhNTCBmaWxlIGRvZXMgbm90IGFwcGVhciB0
byBoYXZlIGFueSBzdHlsZSBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggaXQuIFRoZSBkb2N1
bWVudCB0cmVlIGlzIHNob3duIGJlbG93LicpOyIpKSk7CiAKICAgICBTdHJpbmcgY3NzU3RyaW5n
ID0gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoWE1MVmlld2VyX2Nzcywgc2l6ZW9m
KFhNTFZpZXdlcl9jc3MpKTsKICAgICBhdXRvIHRleHQgPSBtX2RvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKGNzc1N0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApp
bmRleCA3MGVmYmZhM2U4N2EyYWJhY2M0NTE0NjQwZmRhM2Y3N2ViNjgwZTVmLi4wYzE1ZjhiOTNj
NzgwN2VmZDc0YmJlNDAwODI4NDQ0MWM1NmZhZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI0NzIsNyArMjQ3Miw3IEBAIHZvaWQgV0tQYWdlU2V0UGFn
ZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNsaWVu
dCkKIAogdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQYWdlUmVmIHBhZ2VS
ZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlUnVuSmF2YVNj
cmlwdEZ1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+cnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgdHJ1ZSwgW2NvbnRl
eHQsIGNhbGxiYWNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmV0dXJuVmFsdWUsIGJv
b2wsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVycm9y
IGVycm9yKSB7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUo
dG9JbXBsKHNjcmlwdFJlZiktPnN0cmluZygpLCB0cnVlLCBbY29udGV4dCwgY2FsbGJhY2tdKEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiByZXR1cm5WYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6
RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAg
Y2FsbGJhY2sodG9BUEkocmV0dXJuVmFsdWUpLCAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJv
cjo6Tm9uZSkgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5wdHIoKSkgOiAwLCBjb250ZXh0
KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCmluZGV4IDMzNTRhYzZlZWNiNWE4ZDcxOThhZThhNThjYTI5OTQ0YzgzMGU1MTAu
LjE5NDJiMDI1NjFkZjE1OTgyY2EwYTExZDEwMGMzOTNjYjhiYTA0YmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTEyMiw3ICsxMTIy
LDcgQEAgLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRT
dHJpbmcgZm9yY2VVc2VyR2VzdHVyZTooQk9PTCkKIHsKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9w
dE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSk7CiAKLSAgICBfcGFnZS0+cnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lKGphdmFTY3JpcHRTdHJpbmcsIGZvcmNlVXNlckdlc3R1cmUsIFtoYW5kbGVy
XShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBib29s
IGhhZEV4Y2VwdGlvbiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyYgZGV0YWlscywg
V2ViS2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvciBlcnJvckNvZGUpIHsKKyAgICBfcGFn
ZS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGphdmFTY3JpcHRTdHJpbmcsIGZvcmNlVXNlckdl
c3R1cmUsIFtoYW5kbGVyXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNj
cmlwdFZhbHVlLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBX
ZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJhY2s6OkVycm9yIGVycm9yQ29kZSkgewogICAgICAgICBp
ZiAoIWhhbmRsZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTExNDUsMTggKzExNDUsMTgg
QEAgLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJp
bmcgZm9yY2VVc2VyR2VzdHVyZTooQk9PTCkKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gcmF3
SGFuZGxlciA9ICh2b2lkICheKShpZCwgTlNFcnJvciAqKSloYW5kbGVyLmdldCgpOwotICAgICAg
ICBpZiAoaGFkRXhjZXB0aW9uKSB7CisgICAgICAgIGlmIChkZXRhaWxzKSB7CiAgICAgICAgICAg
ICBBU1NFUlQoIXNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CiAKICAgICAgICAgICAgIFJldGFpblB0
cjxOU011dGFibGVEaWN0aW9uYXJ5PiB1c2VySW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0
aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAKICAgICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6
bG9jYWxpemVkRGVzY3JpcHRpb25Gb3JFcnJvckNvZGUoV0tFcnJvckphdmFTY3JpcHRFeGNlcHRp
b25PY2N1cnJlZCkgZm9yS2V5Ok5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXldOwotICAgICAgICAg
ICAgW3VzZXJJbmZvIHNldE9iamVjdDpzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihkZXRhaWxzLm1l
c3NhZ2UpIGZvcktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTWVzc2FnZUVycm9yS2V5XTsKLSAg
ICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QChkZXRhaWxzLmxpbmVOdW1iZXIpIGZvcktl
eTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTGluZU51bWJlckVycm9yS2V5XTsKLSAgICAgICAgICAg
IFt1c2VySW5mbyBzZXRPYmplY3Q6QChkZXRhaWxzLmNvbHVtbk51bWJlcikgZm9yS2V5Ol9XS0ph
dmFTY3JpcHRFeGNlcHRpb25Db2x1bW5OdW1iZXJFcnJvcktleV07CisgICAgICAgICAgICBbdXNl
ckluZm8gc2V0T2JqZWN0OnN0YXRpY19jYXN0PE5TU3RyaW5nICo+KGRldGFpbHMtPm1lc3NhZ2Up
IGZvcktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTWVzc2FnZUVycm9yS2V5XTsKKyAgICAgICAg
ICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QChkZXRhaWxzLT5saW5lTnVtYmVyKSBmb3JLZXk6X1dL
SmF2YVNjcmlwdEV4Y2VwdGlvbkxpbmVOdW1iZXJFcnJvcktleV07CisgICAgICAgICAgICBbdXNl
ckluZm8gc2V0T2JqZWN0OkAoZGV0YWlscy0+Y29sdW1uTnVtYmVyKSBmb3JLZXk6X1dLSmF2YVNj
cmlwdEV4Y2VwdGlvbkNvbHVtbk51bWJlckVycm9yS2V5XTsKIAotICAgICAgICAgICAgaWYgKCFk
ZXRhaWxzLnNvdXJjZVVSTC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgW3VzZXJJbmZvIHNl
dE9iamVjdDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOmRldGFpbHMuc291cmNlVVJMXSBm
b3JLZXk6X1dLSmF2YVNjcmlwdEV4Y2VwdGlvblNvdXJjZVVSTEVycm9yS2V5XTsKKyAgICAgICAg
ICAgIGlmICghZGV0YWlscy0+c291cmNlVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBb
dXNlckluZm8gc2V0T2JqZWN0OltOU1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJpbmc6ZGV0YWlscy0+
c291cmNlVVJMXSBmb3JLZXk6X1dLSmF2YVNjcmlwdEV4Y2VwdGlvblNvdXJjZVVSTEVycm9yS2V5
XTsKIAogICAgICAgICAgICAgcmF3SGFuZGxlcihuaWwsIGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9j
XSBpbml0V2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvckphdmFTY3JpcHRFeGNl
cHRpb25PY2N1cnJlZCB1c2VySW5mbzp1c2VySW5mby5nZXQoKV0pLmdldCgpKTsKICAgICAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViVmlldy5jcHAKaW5kZXggZDIxYzc4MmVkZWQxMjEzYzY5MTMxMWNkMmRjOTViZmJjNGQ4
NzZlYS4uNTczZjI5ZTI0ZmJjZTFkZWIyOTdmZmUxYjk2ZTMzOGNmNzc4YTEyMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAg
LTM2MDYsNyArMzYwNiwxMCBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdChX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogc2NyaXB0LAogICAgIGdfcmV0dXJu
X2lmX2ZhaWwoc2NyaXB0KTsKIAogICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYo
Z190YXNrX25ldyh3ZWJWaWV3LCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKSk7Ci0g
ICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoU3RyaW5nOjpmcm9t
VVRGOChzY3JpcHQpLCB0cnVlLCBbdGFzayA9IFdURk1vdmUodGFzayldKEFQSTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGJvb2wsIGNvbnN0IEV4Y2VwdGlv
bkRldGFpbHMmIGV4Y2VwdGlvbkRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikg
eworICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFN0cmluZzo6
ZnJvbVVURjgoc2NyaXB0KSwgdHJ1ZSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShBUEk6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxFeGNlcHRp
b25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICAg
ICAgRXhjZXB0aW9uRGV0YWlscyBleGNlcHRpb25EZXRhaWxzOworICAgICAgICBpZiAoZGV0YWls
cykKKyAgICAgICAgICAgIGV4Y2VwdGlvbkRldGFpbHMgPSAqZGV0YWlsczsKICAgICAgICAgd2Vi
a2l0V2ViVmlld1J1bkphdmFTY3JpcHRDYWxsYmFjayhzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGV4
Y2VwdGlvbkRldGFpbHMsIHRhc2suZ2V0KCkpOwogICAgIH0pOwogfQpAQCAtMzcwNCw3ICszNzA3
LDEwIEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0X2luX3dvcmxkKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyCiAgICAgZ19yZXR1cm5faWZfZmFpbCh3b3Js
ZE5hbWUpOwogCiAgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0R1JlZihnX3Rhc2tfbmV3
KHdlYlZpZXcsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpKTsKLSAgICBnZXRQYWdl
KHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFN0cmluZzo6ZnJv
bVVURjgoc2NyaXB0KSwgdHJ1ZSwgU3RyaW5nOjpmcm9tVVRGOCh3b3JsZE5hbWUpLCBbdGFzayA9
IFdURk1vdmUodGFzayldKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2Ny
aXB0VmFsdWUsIGJvb2wsIGNvbnN0IEV4Y2VwdGlvbkRldGFpbHMmIGV4Y2VwdGlvbkRldGFpbHMs
IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgIGdldFBhZ2Uod2ViVmlldykucnVu
SmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQp
LCB0cnVlLCBTdHJpbmc6OmZyb21VVEY4KHdvcmxkTmFtZSksIFt0YXNrID0gV1RGTW92ZSh0YXNr
KV0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0
aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVy
cm9yKSB7CisgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZXhjZXB0aW9uRGV0YWlsczsKKyAgICAg
ICAgaWYgKGRldGFpbHMpCisgICAgICAgICAgICBleGNlcHRpb25EZXRhaWxzID0gKmRldGFpbHM7
CiAgICAgICAgIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2soc2VyaWFsaXplZFNj
cmlwdFZhbHVlLCBleGNlcHRpb25EZXRhaWxzLCB0YXNrLmdldCgpKTsKICAgICB9KTsKIH0KQEAg
LTM3NDQsNyArMzc1MCwxMCBAQCBzdGF0aWMgdm9pZCByZXNvdXJjZXNTdHJlYW1SZWFkQ2FsbGJh
Y2soR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZwogICAgIFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ190YXNrX2dldF9zb3VyY2Vfb2JqZWN0
KHRhc2suZ2V0KCkpKTsKICAgICBncG9pbnRlciBvdXRwdXRTdHJlYW1EYXRhID0gZ19tZW1vcnlf
b3V0cHV0X3N0cmVhbV9nZXRfZGF0YShHX01FTU9SWV9PVVRQVVRfU1RSRUFNKG9iamVjdCkpOwog
ICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFN0cmluZzo6ZnJv
bVVURjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBnY2hhcio+KG91dHB1dFN0cmVhbURhdGEpKSwg
dHJ1ZSwKLSAgICAgICAgW3Rhc2tdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxp
emVkU2NyaXB0VmFsdWUsIGJvb2wsIGNvbnN0IEV4Y2VwdGlvbkRldGFpbHMmIGV4Y2VwdGlvbkRl
dGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgICAgICBbdGFza10oQVBJ
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8
RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7
CisgICAgICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGV4Y2VwdGlvbkRldGFpbHM7CisgICAgICAg
ICAgICBpZiAoZGV0YWlscykKKyAgICAgICAgICAgICAgICBleGNlcHRpb25EZXRhaWxzID0gKmRl
dGFpbHM7CiAgICAgICAgICAgICB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdENhbGxiYWNrKHNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSwgZXhjZXB0aW9uRGV0YWlscywgdGFzay5nZXQoKSk7CiAgICAg
ICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
ZTNiNDUyMzk5NzkzYTZiMWQ2NzQ2Y2Y5YmY0NDg4MzQ1OGZlYWI3Zi4uMmEzZjE5NjYzNTgxODEx
OWI1MzMxMWMwYzgzNzVlZTE4YzQxYzI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC0zODQ1LDE4ICszODQ1LDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojps
YXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCkKICAgICAgICAgbGF1bmNoUHJvY2Vzcyh7
IH0sIFByb2Nlc3NMYXVuY2hSZWFzb246OkluaXRpYWxQcm9jZXNzKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IEV4Y2VwdGlvbkRldGFpbHMm
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdl
UHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9v
bCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgcnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lU2NyaXB0V29ybGQoc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6Om51bGxv
cHQsIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQs
IGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1l
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBib29sIGhh
ZEV4Y2VwdGlvbiwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2Vy
R2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25EZXRh
aWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICAv
LyBGb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0eSBzdXBwb3J0IHJ1bm5pbmcgc2NyaXB0IGluIGEg
V2ViVmlldyB3aGljaCBoYXMgbm90IGRvbmUgYW55IGxvYWRzIHlldHMuCiAgICAgbGF1bmNoSW5p
dGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0ciwgZmFsc2UsIHsgfSwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CisgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0
ciwgeyB9LCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMzg2NCw3ICszODY0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib28KICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRX
b3JsZChzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCkpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWUoRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUs
IFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wgaGFk
RXhjZXB0aW9uLCBjb25zdCBFeGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5G
cmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wg
Zm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlKiwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKG1haW5GcmFtZSgpLT5mcmFtZUlE
KCkgIT0gZnJhbWVJRCk7CiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lIl9zKSk7CkBAIC02
Nzg3LDcgKzY3ODcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW52YWxpZGF0ZVN0cmluZ0NhbGxi
YWNrKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBFeGNl
cHRpb25EZXRhaWxzJiBkZXRhaWxzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBh
Z2VQcm94eTo6c2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRh
dGFSZWZlcmVuY2UsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxT
Y3JpcHRWYWx1ZUNhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKSB7CkBA
IC02Nzk2LDcgKzY3OTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2NyaXB0VmFsdWVDYWxsYmFj
ayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsCiAgICAgfQogCiAgICAg
aWYgKGRhdGFSZWZlcmVuY2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNhbGxiYWNrLT5wZXJmb3Jt
Q2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUobnVsbHB0ciwgaGFkRXhjZXB0aW9uLCBkZXRhaWxzKTsK
KyAgICAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShudWxscHRy
LCBkZXRhaWxzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjgwNCw3ICs2ODA0LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNjcmlwdFZhbHVlQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLAogICAgIGRhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShkYXRhUmVmZXJlbmNlLnNpemUoKSk7CiAgICAgZGF0YS5hcHBlbmQoZGF0YVJlZmVyZW5jZS5k
YXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKIAotICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2Fs
bGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KFdU
Rk1vdmUoZGF0YSkpLnB0cigpLCBoYWRFeGNlcHRpb24sIGRldGFpbHMpOworICAgIGNhbGxiYWNr
LT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmFkb3B0KFdURk1vdmUoZGF0YSkpLnB0cigpLCBkZXRhaWxzKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmNvbXB1dGVkUGFnZXNDYWxsYmFjayhjb25zdCBWZWN0b3I8SW50UmVjdD4mIHBh
Z2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgY29uc3QgRmxvYXRC
b3hFeHRlbnQmIGNvbXB1dGVkUGFnZU1hcmdpbiwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBhZTM4NTIyMjFkNGE1MjQzNTUy
YmEwMjNmMmY0OGI5NGVmN2I5OGFkLi4wMjc0ZDdjZTJmNDM2ODE1NGNjYjY3OTI1Y2QwZjlkYTQz
YzI5Y2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNzUsNiAr
NzUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVudFRy
YWNraW5nUmVnaW9ucy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uRGV0YWlscy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRm9udEF0dHJpYnV0ZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zy
YW1lTG9hZGVyVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPiAvLyBGSVhN
RTogTW92ZSBMYXlvdXRWaWV3cG9ydENvbnN0cmFpbnQgdG8gaXRzIG93biBmaWxlIGFuZCBzdG9w
IGluY2x1ZGluZyB0aGlzLgpAQCAtMzM1LDcgKzMzNiw3IEBAIHR5cGVkZWYgR2VuZXJpY0NhbGxi
YWNrPEFQSTo6RGF0YSo+IERhdGFDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPHVp
bnQ2NF90PiBVbnNpZ25lZENhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8RWRpdGlu
Z1JhbmdlPiBFZGl0aW5nUmFuZ2VDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNv
bnN0IFN0cmluZyY+IFN0cmluZ0NhbGxiYWNrOwotdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8QVBJ
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBib29sLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25E
ZXRhaWxzJj4gU2NyaXB0VmFsdWVDYWxsYmFjazsKK3R5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0
YWlscz4+IFNjcmlwdFZhbHVlQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25z
dCBXZWJDb3JlOjpGb250QXR0cmlidXRlcyY+IEZvbnRBdHRyaWJ1dGVzQ2FsbGJhY2s7CiB0eXBl
ZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmPiBTZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFj
azxib29sPiBCb29sQ2FsbGJhY2s7CkBAIC0xMDYwLDEwICsxMDYxLDEwIEBAIHB1YmxpYzoKICAg
ICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoRnVuY3Rpb248dm9pZCAoQVBJOjpE
YXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJh
bWUoV2ViRnJhbWVQcm94eSosIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2Vi
RnJhbWVQcm94eSosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcm
LCBib29sLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwg
Ym9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmLCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKLSAgICB2b2lkIHJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYsIGJvb2wsIGNvbnN0IE9w
dGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IFdlYkNvcmU6OkV4Y2Vw
dGlvbkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsK
KyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmLCBib29sLCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8
V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxi
YWNrRnVuY3Rpb24pOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29y
bGQoY29uc3QgU3RyaW5nJiwgYm9vbCwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1l
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25h
bDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2Fs
bGJhY2tGdW5jdGlvbik7CiAgICAgLy8gRm9yIHN1YiBmcmFtZXMuCi0gICAgdm9pZCBydW5KYXZh
U2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpFeGNl
cHRpb25EZXRhaWxzJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7
CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rp
b248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4
Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9u
KTsKICAgICB2b2lkIGZvcmNlUmVwYWludChSZWZQdHI8Vm9pZENhbGxiYWNrPiYmKTsKIAogICAg
IGZsb2F0IGhlYWRlckhlaWdodChXZWJGcmFtZVByb3h5Jik7CkBAIC0xOTQzLDcgKzE5NDQsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgYm9vbENhbGxiYWNrKGJvb2wgcmVzdWx0LCBDYWxsYmFja0lE
KTsKICAgICB2b2lkIHN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQpOwog
ICAgIHZvaWQgaW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKENhbGxiYWNrSUQpOwotICAgIHZvaWQg
c2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBib29sIGhhZEV4
Y2VwdGlvbiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNrSUQpOwor
ICAgIHZvaWQgc2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBP
cHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9p
ZCBjb21wdXRlZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+Jiwg
ZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgY29uc3QgV2ViQ29yZTo6RmxvYXRC
b3hFeHRlbnQmIGNvbXB1dGVkUGFnZU1hcmdpbiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCB2YWxp
ZGF0ZUNvbW1hbmRDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBib29sLCBpbnQsIENhbGxiYWNrSUQp
OwogICAgIHZvaWQgdW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCwgQ2FsbGJhY2tJRCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXgg
MGM2NTFlNjg1YjI5NzlmNGUzNmU5YzhhNTg2NDE2ZDY3MWJkZmZmNS4uNGRlZjVkYzAxZGI0ZDQy
OWZiYjdkNzE2OTM4YTExMTcwZDllYTIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTY5LDcgKzE2OSw3IEBAIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgU3RyaW5nQ2FsbGJhY2soU3RyaW5nIHJlc3VsdFN0cmlu
ZywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgQm9vbENhbGxiYWNrKGJvb2wg
cmVzdWx0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBJbnZhbGlkYXRlU3Ry
aW5nQ2FsbGJhY2soV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgU2NyaXB0VmFs
dWVDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwgYm9vbCBoYWRFeGNlcHRp
b24sIHN0cnVjdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzIGRldGFpbHMsIFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFNjcmlwdFZhbHVlQ2FsbGJhY2soSVBDOjpEYXRhUmVm
ZXJlbmNlIHJlc3VsdERhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRl
dGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIENvbXB1dGVkUGFnZXND
YWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gcGFnZVJlY3RzLCBkb3VibGUgdG90YWxT
Y2FsZUZhY3RvckZvclByaW50aW5nLCBXZWJDb3JlOjpSZWN0RWRnZXM8ZmxvYXQ+IGNvbXB1dGVk
UGFnZU1hcmdpbiwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgVmFsaWRhdGVD
b21tYW5kQ2FsbGJhY2soU3RyaW5nIGNvbW1hbmQsIGJvb2wgaXNFbmFibGVkLCBpbnQzMl90IHN0
YXRlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBFZGl0aW5nUmFuZ2VDYWxs
YmFjayhzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0
L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCA1MGNh
MmU0OTM4Y2MzNTVjMTlkZTFjYTdiYmM0Mzk3Y2MwNGJiOTNjLi4zYWJlZTQ4NmY1ZWM4YjZlNGYw
ZTVkOWExNDcwMzc4M2U4NGE4MGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNw
cApAQCAtOTAsOSArOTAsOSBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6
aW5zcGVjdChjb25zdCBTdHJpbmcmIGhvc3RBbmRQb3J0LCBDb25uZWN0aQogdm9pZCBSZW1vdGVJ
bnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OnJ1blNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCkK
IHsKICAgICBtX3BhZ2UucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHNjcmlwdCwgZmFsc2UsCi0g
ICAgICAgIFtdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24s
IGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmIGV4Y2VwdGlvbkRldGFpbHMsIENhbGxi
YWNrQmFzZTo6RXJyb3IpIHsKLSAgICAgICAgICAgIGlmIChoYWRFeGNlcHRpb24pCi0gICAgICAg
ICAgICAgICAgTE9HX0VSUk9SKCJFeGNlcHRpb24gcnVubmluZyBzY3JpcHQgXCIlc1wiIiwgZXhj
ZXB0aW9uRGV0YWlscy5tZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBbXShBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+
IGV4Y2VwdGlvbkRldGFpbHMsIENhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICAgICAgICAgIGlm
IChleGNlcHRpb25EZXRhaWxzKQorICAgICAgICAgICAgICAgIExPR19FUlJPUigiRXhjZXB0aW9u
IHJ1bm5pbmcgc2NyaXB0IFwiJXNcIiIsIGV4Y2VwdGlvbkRldGFpbHMtPm1lc3NhZ2UudXRmOCgp
LmRhdGEoKSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggODhlMTNhZDgyYWRjZWM0ZmJlZTY4NWYyYzdiZTQ1
OThmOGQ0Y2JiZi4uM2VhMDA2YjNjZTM4ZTM4OTQxZmRiZDU4NjczY2Q4MWE2ODJjMjUzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAg
LTEyNTMsNyArMTI1Myw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybUphdmFTY3JpcHRVUkxS
ZXF1ZXN0KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiAgICAgLy8gRXZhbHVhdGUgdGhlIEphdmFTY3Jp
cHQgY29kZS4gTm90ZSB0aGF0IHJ1bm5pbmcgSmF2YVNjcmlwdCBoZXJlIGNvdWxkIGNhdXNlIHRo
ZSBwbHVnLWluIHRvIGJlIGRlc3Ryb3llZCwgc28gd2UKICAgICAvLyBncmFiIHJlZmVyZW5jZXMg
dG8gdGhlIHBsdWctaW4gaGVyZS4KICAgICBSZWZQdHI8UGx1Z2luPiBwbHVnaW4gPSBtX3BsdWdp
bjsKLSAgICBhdXRvIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGpzU3Ry
aW5nLCByZXF1ZXN0LT5hbGxvd1BvcHVwcygpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGZyYW1lLT5z
Y3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oanNTdHJpbmcsIHJlcXVlc3Qt
PmFsbG93UG9wdXBzKCkpOwogCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvckZy
b250ZW5kQVBJRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwCmluZGV4IDkwOGUzOWFmZGIw
Yzg4OWNmZTU2NTJiMzlhZGM0NzBjM2EwOWE5YTIuLmMxODllOTgyNWFkNDk0NzBlZDYyNDM1ZTg2
ZDU5ZGY2MGYzOGFlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVy
LmNwcApAQCAtOTksNyArOTksNyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0
Y2hlcjo6ZXZhbHVhdGVPclF1ZXVlRXhwcmVzc2lvbihjb25zdCBTdHJpbmcmCiAKICAgICBBU1NF
UlQobV9xdWV1ZS5pc0VtcHR5KCkpOwogICAgIEFTU0VSVCghbV9wYWdlLmNvcmVQYWdlKCktPm1h
aW5GcmFtZSgpLnNjcmlwdCgpLmlzUGF1c2VkKCkpOwotICAgIG1fcGFnZS5jb3JlUGFnZSgpLT5t
YWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGV4cHJlc3Npb24pOworICAgIG1fcGFn
ZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdF
eGNlcHRpb24oZXhwcmVzc2lvbik7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElE
aXNwYXRjaGVyOjpldmFsdWF0ZVF1ZXVlZEV4cHJlc3Npb25zKCkKQEAgLTEwOSw3ICsxMDksNyBA
QCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6ZXZhbHVhdGVRdWV1ZWRF
eHByZXNzaW9ucygpCiAKICAgICBmb3IgKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiA6IG1fcXVl
dWUpIHsKICAgICAgICAgQVNTRVJUKCFtX3BhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuc2Ny
aXB0KCkuaXNQYXVzZWQoKSk7Ci0gICAgICAgIG1fcGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUo
KS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGV4cHJlc3Npb24pOworICAgICAgICBtX3BhZ2UuY29y
ZVBhZ2UoKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0
aW9uKGV4cHJlc3Npb24pOwogICAgIH0KIAogICAgIG1fcXVldWUuY2xlYXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNzM1ZmVhNGVlMTNi
ZTQyNWMyMzRiZTkyMTIwZmU5ZTdiY2EyZDVjNy4uMTI0NzAyY2U1ZTg5MzAzYmNiNjMxMWVhMTVj
ZjQ3ZDAxMmUzNzgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKQEAgLTMzNTMsMjMgKzMzNTMsMjUgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2Ny
aXB0KFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2UK
ICAgICAvLyBOT1RFOiBXZSBuZWVkIHRvIGJlIGNhcmVmdWwgd2hlbiBydW5uaW5nIHNjcmlwdHMg
dGhhdCB0aGUgb2JqZWN0cyB3ZSBkZXBlbmQgb24gZG9uJ3QKICAgICAvLyBkaXNhcHBlYXIgZHVy
aW5nIHNjcmlwdCBleGVjdXRpb24uCiAKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBzZXJpYWxpemVkUmVzdWx0VmFsdWU7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soY29tbW9uVk0o
KSk7Ci0gICAgYm9vbCBoYWRFeGNlcHRpb24gPSB0cnVlOwotICAgIEV4Y2VwdGlvbkRldGFpbHMg
ZGV0YWlsczsKKyAgICBWYWx1ZUFuZEV4Y2VwdGlvbiByZXN1bHQ7CisgICAgUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFJlc3VsdFZhbHVlOworCiAgICAgYXV0byogd29y
bGQgPSB3b3JsZE5hbWUgPyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpmaW5kKHdvcmxkTmFt
ZS52YWx1ZSgpKSA6ICZJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpOwog
ICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+Y29yZUZyYW1lKCkgJiYgd29ybGQpIHsKLSAgICAgICAg
aWYgKEpTVmFsdWUgcmVzdWx0VmFsdWUgPSBmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmV4
ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKHdvcmxkLT5jb3JlV29ybGQoKSwgc2NyaXB0LCBm
b3JjZVVzZXJHZXN0dXJlLCAmZGV0YWlscykpIHsKLSAgICAgICAgICAgIGhhZEV4Y2VwdGlvbiA9
IGZhbHNlOworICAgICAgICByZXN1bHQgPSBmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmV4
ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKHdvcmxkLT5jb3JlV29ybGQoKSwgc2NyaXB0LCBm
b3JjZVVzZXJHZXN0dXJlKTsKKyAgICAgICAgaWYgKHJlc3VsdC5maXJzdCkgeworICAgICAgICAg
ICAgQVNTRVJUKCFyZXN1bHQuc2Vjb25kKTsKICAgICAgICAgICAgIHNlcmlhbGl6ZWRSZXN1bHRW
YWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGZyYW1lLT5qc0NvbnRleHRGb3JX
b3JsZCh3b3JsZCksCi0gICAgICAgICAgICAgICAgdG9SZWYoZnJhbWUtPmNvcmVGcmFtZSgpLT5z
Y3JpcHQoKS5nbG9iYWxPYmplY3Qod29ybGQtPmNvcmVXb3JsZCgpKSwgcmVzdWx0VmFsdWUpLCBu
dWxscHRyKTsKKyAgICAgICAgICAgICAgICB0b1JlZihmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlw
dCgpLmdsb2JhbE9iamVjdCh3b3JsZC0+Y29yZVdvcmxkKCkpLCByZXN1bHQuZmlyc3QpLCBudWxs
cHRyKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVm
ZXJlbmNlOwogICAgIGlmIChzZXJpYWxpemVkUmVzdWx0VmFsdWUpCiAgICAgICAgIGRhdGFSZWZl
cmVuY2UgPSBzZXJpYWxpemVkUmVzdWx0VmFsdWUtPmRhdGEoKTsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgaGFkRXhj
ZXB0aW9uLCBkZXRhaWxzLCBjYWxsYmFja0lEKSk7CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgcmVzdWx0LnNlY29u
ZCwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1
cmUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCmluZGV4IDk0N2JmYzUzNDJjYmNhYzA5YWFhZjUx
MmNjZGI2ZGZlOWNiMWNhNDEuLmVhNTA3OGVkMThmNTUwNTJkZjJlNDI4MTNlMmE2ZjcwODU1Y2U3
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTM3OSw3ICszNzksNyBAQCB2b2lkIFdl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJM
LCBjb25zdCBTdHJpbmcmCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgW2NvbnRlbnRDb3B5
IHdyaXRlVG9VUkw6YWN0dWFsVVJMIGF0b21pY2FsbHk6WUVTIGVuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nIGVycm9yOk5VTExdOwogCi0gICAgICAgIGNvcmUoW21fZnJvbnRlbmRXaW5kb3dD
b250cm9sbGVyIGZyb250ZW5kV2ViVmlld10pLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRl
U2NyaXB0KFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEku
c2F2ZWRVUkwoXCIlQFwiKSIsIGFjdHVhbFVSTC5hYnNvbHV0ZVN0cmluZ10pOworICAgICAgICBj
b3JlKFttX2Zyb250ZW5kV2luZG93Q29udHJvbGxlciBmcm9udGVuZFdlYlZpZXddKS0+bWFpbkZy
YW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuc2F2ZWRVUkwoXCIlQFwiKSIs
IGFjdHVhbFVSTC5hYnNvbHV0ZVN0cmluZ10pOwogICAgIH07CiAKICAgICBpZiAoIWZvcmNlU2F2
ZURpYWxvZykgewpAQCAtNDI1LDcgKzQyNSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ6OmFwcGVuZChjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nCiAg
ICAgW2hhbmRsZSB3cml0ZURhdGE6W2NvbnRlbnQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3Ry
aW5nRW5jb2RpbmddXTsKICAgICBbaGFuZGxlIGNsb3NlRmlsZV07CiAKLSAgICBjb3JlKFttX2Zy
b250ZW5kV2luZG93Q29udHJvbGxlciBmcm9udGVuZFdlYlZpZXddKS0+bWFpbkZyYW1lKCkuc2Ny
aXB0KCkuZXhlY3V0ZVNjcmlwdChbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3BlY3Rv
ckZyb250ZW5kQVBJLmFwcGVuZGVkVG9VUkwoXCIlQFwiKSIsIFthY3R1YWxVUkwgYWJzb2x1dGVT
dHJpbmddXSk7CisgICAgY29yZShbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIgZnJvbnRlbmRX
ZWJWaWV3XSktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2Vw
dGlvbihbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3BlY3RvckZyb250ZW5kQVBJLmFw
cGVuZGVkVG9VUkwoXCIlQFwiKSIsIFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddXSk7CiB9CiAK
IC8vIE1BUks6IC0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CmluZGV4IDE4ZDNkOWVjMTRkOGM2OTVkMDNmOTNjM2RkMjAxNmFkNDA5NGE0NTguLjA1YjU2OTMw
NDM2NGI0OTY5NzFkODlkZDk3ZmY4ZGUyY2Y0NTY3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtNzAwLDcgKzcwMCw3IEBAIC0gKE5TU3RyaW5n
ICopX3N0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOihOU1N0cmluZyAqKXN0
cmluZyBmb3JjZVVzCiAgICAgSlNDOjpKU0xvY2tIb2xkZXIganNjTG9jayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICNlbmRpZgogCi0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IF9wcml2YXRlLT5j
b3JlRnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoc3RyaW5nLCBmb3JjZVVzZXJHZXN0dXJl
KTsKKyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2NyaXB0
KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKHN0cmluZywgZm9yY2VVc2VyR2VzdHVy
ZSk7CiAKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlRnJhbWUpIC8vIEluIGNhc2UgdGhlIHNjcmlw
dCByZW1vdmVkIG91ciBmcmFtZSBmcm9tIHRoZSBwYWdlLgogICAgICAgICByZXR1cm4gQCIiOwpA
QCAtMjA5Niw3ICsyMDk2LDcgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdEZyb21TdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHdpdGhHbG8KICAgICBBU1NFUlQo
ZnJhbWUtPmRvY3VtZW50KCkpOwogICAgIFJldGFpblB0cjxXZWJGcmFtZT4gd2ViRnJhbWUoa2l0
KGZyYW1lKSk7IC8vIFJ1bm5pbmcgYXJiaXRyYXJ5IEphdmFTY3JpcHQgY2FuIGRlc3Ryb3kgdGhl
IGZyYW1lLgogCi0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5leGVj
dXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZCgqY29yZSh3b3JsZCksIHN0cmluZywgdHJ1ZSk7Cisg
ICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlVXNlckFnZW50
U2NyaXB0SW5Xb3JsZCgqY29yZSh3b3JsZCksIHN0cmluZywgdHJ1ZSkuZmlyc3Q7CiAKICAgICBp
ZiAoIXdlYkZyYW1lLT5fcHJpdmF0ZS0+Y29yZUZyYW1lKSAvLyBJbiBjYXNlIHRoZSBzY3JpcHQg
cmVtb3ZlZCBvdXIgZnJhbWUgZnJvbSB0aGUgcGFnZS4KICAgICAgICAgcmV0dXJuIEAiIjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA0N2FhZTMyOGRi
YzZhY2ZiZWFiYjNhZWM2ZDI3ODNjYjRmNTlmMDcxLi45NjFlMDVjZjFjMjI5ZGUxMTA0NmI3YzRm
YjgzNGY1MzM5YmI4MjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCkBAIC03OTA4LDcgKzc5MDgsNyBAQCAtIChOU0FwcGxlRXZlbnREZXNjcmlwdG9yICop
YWVEZXNjQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6KE5TU3RyaW5nICopcwogICAg
ICAgICByZXR1cm4gbmlsOwogICAgIGlmICghY29yZUZyYW1lLT5kb2N1bWVudCgpKQogICAgICAg
ICByZXR1cm4gbmlsOwotICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBjb3JlRnJhbWUtPnNjcmlw
dCgpLmV4ZWN1dGVTY3JpcHQoc2NyaXB0LCB0cnVlKTsKKyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0
ID0gY29yZUZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oc2Ny
aXB0LCB0cnVlKTsKICAgICBpZiAoIXJlc3VsdCkgLy8gRklYTUU6IHBhc3MgZXJyb3JzCiAgICAg
ICAgIHJldHVybiAwOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soY29yZUZyYW1lLT5zY3Jp
cHQoKS5nbG9iYWxPYmplY3QoV2ViQ29yZTo6bWFpblRocmVhZE5vcm1hbFdvcmxkKCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGU1
ZWY2M2I0Y2Q4NjcxN2IzNjBiMDk5Yzg2MmUyN2E2MzUxMTUwNDMuLjgxNjBkYTE0YWMwMDkzOTY4
MGMyMmRlZGMyYTI1ZDNjM2E2ZTMwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNDM5LDcgKzQzOSw3IEBAIHZvaWQgUGx1Z2luVmll
dzo6cGVyZm9ybVJlcXVlc3QoUGx1Z2luUmVxdWVzdCogcmVxdWVzdCkKICAgICAKICAgICAvLyBF
eGVjdXRpbmcgYSBzY3JpcHQgY2FuIGNhdXNlIHRoZSBwbHVnaW4gdmlldyB0byBiZSBkZXN0cm95
ZWQsIHNvIHdlIGtlZXAgYSByZWZlcmVuY2UgdG8gaXQuCiAgICAgUmVmUHRyPFBsdWdpblZpZXc+
IHByb3RlY3Rvcih0aGlzKTsKLSAgICBhdXRvIHJlc3VsdCA9IG1fcGFyZW50RnJhbWUtPnNjcmlw
dCgpLmV4ZWN1dGVTY3JpcHQoanNTdHJpbmcsIHJlcXVlc3QtPnNob3VsZEFsbG93UG9wdXBzKCkp
OworICAgIGF1dG8gcmVzdWx0ID0gbV9wYXJlbnRGcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlw
dElnbm9yaW5nRXhjZXB0aW9uKGpzU3RyaW5nLCByZXF1ZXN0LT5zaG91bGRBbGxvd1BvcHVwcygp
KTsKIAogICAgIGlmICh0YXJnZXRGcmFtZU5hbWUuaXNOdWxsKCkpIHsKICAgICAgICAgQ1N0cmlu
ZyBjc3RyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDZlZmFlOGY2MjI5
ODQ5Y2ExZjU5NmI3MzU1Y2VlZjQzY2ZkNjkwYTguLmM3NzhlMjJiNzBkY2YxODU1MjJjYTZlMjA5
Yjg3MDkxOTViNTE0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTIw
NTUsNyArMjA1NSw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OnN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHRJblNjcmlwdFdvcmxkKElXZWJTY3JpcHRXb3JsZCogaVdvCiAgICAgLy8gR2V0IHRoZSBm
cmFtZSBmcm9tZSB0aGUgZ2xvYmFsIG9iamVjdCB3ZSd2ZSBzZXR0bGVkIG9uLgogICAgIEZyYW1l
KiBmcmFtZSA9IGFueVdvcmxkR2xvYmFsT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKTsKICAgICBB
U1NFUlQoZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gZnJhbWUtPnNj
cmlwdCgpLmV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLT53b3JsZCgpLCBzdHJpbmcsIHRydWUp
OworICAgIEpTVmFsdWUgcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJbldv
cmxkSWdub3JpbmdFeGNlcHRpb24od29ybGQtPndvcmxkKCksIHN0cmluZywgdHJ1ZSk7CiAKICAg
ICBpZiAoIWZyYW1lKSAvLyBJbiBjYXNlIHRoZSBzY3JpcHQgcmVtb3ZlZCBvdXIgZnJhbWUgZnJv
bSB0aGUgcGFnZS4KICAgICAgICAgcmV0dXJuIFNfT0s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZp
ZXcuY3BwCmluZGV4IGEwNDQ4YmIwMTNlZGZiNDMzNWZiYzlhYmM4YTdlMzA4MDc3ZjAwNDMuLmU3
MmVhNDNlZGI3OWM4YTAyMWNjNmRmYzE4YTk5ZDViYzA4ZTNmYjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlZpZXcuY3BwCkBAIC0zNjYzLDcgKzM2NjMsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnN0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nKF9Jbl8gQlNUUiBzY3JpcHQsIC8v
IGFzcwogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwog
Ci0gICAgYXV0byBzY3JpcHRFeGVjdXRpb25SZXN1bHQgPSBjb3JlRnJhbWUtPnNjcmlwdCgpLmV4
ZWN1dGVTY3JpcHQoV1RGOjpTdHJpbmcoc2NyaXB0KSwgdHJ1ZSk7CisgICAgYXV0byBzY3JpcHRF
eGVjdXRpb25SZXN1bHQgPSBjb3JlRnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmlu
Z0V4Y2VwdGlvbihXVEY6OlN0cmluZyhzY3JpcHQpLCB0cnVlKTsKICAgICBpZiAoIXNjcmlwdEV4
ZWN1dGlvblJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKICAgICBlbHNlIGlmIChzY3Jp
cHRFeGVjdXRpb25SZXN1bHQuaXNTdHJpbmcoKSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385583</attachid>
            <date>2019-12-12 23:59:41 -0800</date>
            <delta_ts>2019-12-13 15:28:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205151-20191212235940.patch</filename>
            <type>text/plain</type>
            <size>54121</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjU5MGYyYWFjZjNmZTJj
NWE4ZDlkYWUwZjFmOGM4NDY0YTY1MGE3YS4uMTUwMzg1N2I3ZTgzNGFlNjk2YTQ2NWYzYTdkMzJl
NjZjZmRjMzRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE5LTEyLTEyICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRD
b250cm9sbGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChS
ZWZhY3Rvciwgbm8gYmVoYXZpb3IgY2hhbmdlKS4KKworICAgICAgICBUaGVyZSdzIHNvIG1hbnkg
RXhjZXB0aW9uRGV0YWlscyogbnVsbCBwb2ludGVycyBiZWluZyBwYXNzZWQgYXJvdW5kIGluIHRo
ZSBTY3JpcHRDb250cm9sbGVyCisgICAgICAgIGZhbWlseSBvZiBmdW5jdGlvbnMuCisKKyAgICAg
ICAgTGV0J3MgbWFrZSBpdCBhIGxpdHRsZSBtb3JlIGV4cGxpY2l0IHdoaWNoIGNhbGxlcnMgZ2V0
IGV4Y2VwdGlvbnMgYW5kIHdoaWNoIGRvbid0LgorCisKKyAgICAgICAgKiBNb2R1bGVzL3BsdWdp
bnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW06CisgICAgICAgIChXZWJDb3JlOjpRdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6ZW5zdXJlUmVwbGFjZW1lbnRTY3JpcHRJbmplY3RlZCk6
CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKToKKworICAgICAgICAqIGJpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJv
bGxlcjo6ZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4
Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2Ny
aXB0SW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRl
VXNlckFnZW50U2NyaXB0SW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9s
bGVyOjpleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgIAorICAgICAgICAqIGNv
bnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9j
ZXNzQ29udGVudFJ1bGVMaXN0c0ZvckxvYWQpOgorICAgICAgICAKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZVBsdWdJbnNJbmpl
Y3RlZFNjcmlwdCk6CisgICAgICAgIAorICAgICAgICAqIGRvbS9TY3JpcHRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVDbGFzc2ljU2NyaXB0KToK
KyAgICAgICAgCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZU1lZGlhQ29udHJvbHNJbmplY3RlZFNj
cmlwdCk6CisgICAgICAgIAorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWw6OmV2YWx1YXRlQXNCb29sZWFuKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWw6OmV2YWx1YXRlT25Mb2FkKToKKyAgICAgICAgCisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQpOgorICAg
ICAgICAKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RmlsdGVyOjpkaWREZWNpZGUpOgorICAgICAgICAKKyAgICAgICAgKiBwYWdl
L0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjppbmplY3RVc2VyU2NyaXB0SW1t
ZWRpYXRlbHkpOgorICAgICAgICAKKyAgICAgICAgKiB4bWwvWE1MVHJlZVZpZXdlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpYTUxUcmVlVmlld2VyOjp0cmFuc2Zvcm1Eb2N1bWVudFRvVHJlZVZp
ZXcpOgorCiAyMDE5LTEyLTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgVHJ5aW5nIHRvIHNldCB0b1N0cmluZyAvIHZhbHVlT2Ygb24gYSBjcm9zcy1vcmlnaW4g
TG9jYXRpb24gb2JqZWN0IHNob3VsZCB0aHJvdyBhIFNlY3VyaXR5RXJyb3IKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
OGQ3NjJhZDlhMzg2ODM0OTI1OGMwMmM5NjJmOTVmZjkzYWYyNTczNy4uZTVhYWQ0M2VkODA5MTNi
YmY4NTMwODI1MTMwM2Q0MmJhMjI0ODE0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAx
OS0xMi0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVm
YWN0b3IgU2NyaXB0Q29udHJvbGxlcidzIHByb2xpZmVyYXRpb24gb2YgRXhjZXB0aW9uRGV0YWls
cyouCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUx
NTEKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VSdW5KYXZhU2NyaXB0
SW5NYWluRnJhbWUpOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW06CisgICAgICAgICgtW1dLV2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmZvcmNlVXNlckdl
c3R1cmU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0
SW5NYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3Jp
cHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpydW5KYXZhU2NyaXB0SW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpblZpZXc6OnBlcmZvcm1KYXZhU2NyaXB0VVJMUmVxdWVzdCk6CisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpl
dmFsdWF0ZU9yUXVldWVFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
RnJvbnRlbmRBUElEaXNwYXRjaGVyOjpldmFsdWF0ZVF1ZXVlZEV4cHJlc3Npb25zKToKKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cnVuSmF2YVNjcmlwdCk6CisKIDIwMTktMTItMTEgIEppZXdlbiBUYW4gIDxqaWV3
ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBhIG5pdCBhZnRlciByMjUz
MzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYjlkYWUyY2UxMGUwODcyZDM1MzA4
YzhjOGNjNjBkZTIwZjI1Zjc3NS4uYjhkMWFhZDAwMDJlYzM5MWRjOGM3NjZhNWNjNDU4MGE5NjQ1
NWE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5
LTEyLTEyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZh
Y3RvciBTY3JpcHRDb250cm9sbGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxz
Ki4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1
MQorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW06CisgICAgICAgIChXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudDo6c2F2ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudDo6YXBwZW5kKToKKyAgICAgICAgCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToK
KyAgICAgICAgKC1bV2ViRnJhbWUgX3N0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3Ry
aW5nOmZvcmNlVXNlckdlc3R1cmU6XSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9zdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzp3aXRoR2xvYmFsT2JqZWN0OmluU2NyaXB0V29y
bGQ6XSk6CisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZp
ZXcgYWVEZXNjQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6XSk6CisKIDIwMTktMTIt
MDkgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVu
YW1lIG1lZGlhIGluIHRoZSBHUFUgcHJvY2VzcyBwcmVmZXJlbmNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
aGFuZ2VMb2cKaW5kZXggNDIwMTRkOTlkNTAyMTZmYTkyZDQ5YTU5MmEwMDY3ODE5MmQ2NGQ0MS4u
MzNlYmE5NmYyMTgzYWRiODU4ZThlYTIzMjk0NDhlOWMzNGZjNWFkOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE5LTEyLTEyICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRDb250cm9sbGVy
J3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblZpZXcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QpOgorCisgICAg
ICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OnN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHRJblNjcmlwdFdvcmxkKToKKworICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAg
ICAgICAoV2ViVmlldzo6c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmcpOgor
ICAgICAgICAKIDIwMTktMTItMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBQYWdlQ29uZmlndXJhdGlvbjo6ZHJhZ0NsaWVudCBzaG91bGQgdXNlIGEgc21hcnQg
cG9pbnRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5z
L1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCmluZGV4IDk4MTI2ZTAzZjNlMzIxNDc1Zjc1
MTE0NjQyYWQ4ZDBiMjQ4YmFkMjMuLjAzZDIxZGU3ZDVhYzA2OWIyY2FhM2Q5NjExYjk4Zjg0YTM1
MTdmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1Rp
bWVQbHVnaW5SZXBsYWNlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdp
bnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KQEAgLTE1OCw3ICsxNTgsNyBAQCBib29s
IFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjplbnN1cmVSZXBsYWNlbWVudFNjcmlwdEluamVj
dGVkKCkKICAgICBpZiAocmVwbGFjZW1lbnRGdW5jdGlvbi5pc0Z1bmN0aW9uKHZtKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgCi0gICAgc2NyaXB0Q29udHJvbGxlci5ldmFsdWF0ZUluV29y
bGQoU2NyaXB0U291cmNlQ29kZShxdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudFNjcmlwdCgpKSwg
d29ybGQpOworICAgIHNjcmlwdENvbnRyb2xsZXIuZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNl
cHRpb24oU2NyaXB0U291cmNlQ29kZShxdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudFNjcmlwdCgp
KSwgd29ybGQpOwogICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAg
ICAgTE9HKFBsdWdpbnMsICIlcCAtIEV4Y2VwdGlvbiB3aGVuIGV2YWx1YXRpbmcgUXVpY2tUaW1l
IHBsdWdpbiByZXBsYWNlbWVudCBzY3JpcHQiLCB0aGlzKTsKICAgICAgICAgc2NvcGUuY2xlYXJF
eGNlcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVk
dWxlZEFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rp
b24uY3BwCmluZGV4IDI4Y2Y1NjQ2NmJjYTNjOWMyZDIwODg5NTFjOTgwODJmZGI1MWE4NTYuLjhl
NGM3YjM4MTI0NGU3NzZiZGQ1ODM0YWU0MTkzNmQ3ZGNjNjIyOGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBA
IHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICBp
ZiAobV9mdW5jdGlvbikKICAgICAgICAgZXhlY3V0ZUZ1bmN0aW9uSW5Db250ZXh0KHdpbmRvdywg
d2luZG93LT5wcm94eSgpLCBkb2N1bWVudCk7CiAgICAgZWxzZQotICAgICAgICBmcmFtZS0+c2Ny
aXB0KCkuZXhlY3V0ZVNjcmlwdEluV29ybGQobV9pc29sYXRlZFdvcmxkLCBtX2NvZGUpOworICAg
ICAgICBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlv
bihtX2lzb2xhdGVkV29ybGQsIG1fY29kZSk7CiB9CiAKIHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpl
eGVjdXRlKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggYjFmZGU4NTAy
ZTRkYTBiMGY2OWY0ODE2ZDRhNDEyZWM0ZWU0YzczZi4uOTE4MjUyOTdmYzE4MWEyNmQyZjdhMDgx
ZTlhYzQwNTNhNTAyNWRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5jcHAKQEAgLTEwNyw3ICsxMDcsMTMgQEAgU2NyaXB0Q29udHJvbGxlcjo6
flNjcmlwdENvbnRyb2xsZXIoKQogICAgIH0KIH0KIAotSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVy
OjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCwgRXhjZXB0aW9uRGV0YWlscyogZXhjZXB0aW9uRGV0YWlscykK
K0pTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4
Y2VwdGlvbihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBET01XcmFwcGVyV29y
bGQmIHdvcmxkKQoreworICAgIGF1dG8gcmVzdWx0ID0gZXZhbHVhdGVJbldvcmxkKHNvdXJjZUNv
ZGUsIHdvcmxkKTsKKyAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0LnZhbHVlKCkgOiBKU0M6OkpT
VmFsdWUgeyB9OworfQorCitWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1
YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBET01XcmFwcGVy
V29ybGQmIHdvcmxkKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHdvcmxkLnZtKCkpOwogCkBA
IC0xMzUsMTkgKzE0MSwyMyBAQCBKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5X
b3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBETwogCiAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFsdWF0ZVNjcmlwdChtX2ZyYW1lKTsKIAorICAgIE9w
dGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IG9wdGlvbmFsRGV0YWlsczsKICAgICBpZiAoZXZhbHVh
dGlvbkV4Y2VwdGlvbikgewotICAgICAgICByZXBvcnRFeGNlcHRpb24oJmdsb2JhbE9iamVjdCwg
ZXZhbHVhdGlvbkV4Y2VwdGlvbiwgc291cmNlQ29kZS5jYWNoZWRTY3JpcHQoKSwgZXhjZXB0aW9u
RGV0YWlscyk7Ci0gICAgICAgIG1fc291cmNlVVJMID0gc2F2ZWRTb3VyY2VVUkw7Ci0gICAgICAg
IHJldHVybiB7IH07CisgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZGV0YWlsczsKKyAgICAgICAg
cmVwb3J0RXhjZXB0aW9uKCZnbG9iYWxPYmplY3QsIGV2YWx1YXRpb25FeGNlcHRpb24sIHNvdXJj
ZUNvZGUuY2FjaGVkU2NyaXB0KCksICZkZXRhaWxzKTsKKyAgICAgICAgb3B0aW9uYWxEZXRhaWxz
ID0gV1RGTW92ZShkZXRhaWxzKTsKICAgICB9CiAKICAgICBtX3NvdXJjZVVSTCA9IHNhdmVkU291
cmNlVVJMOworICAgIGlmIChvcHRpb25hbERldGFpbHMpCisgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZCgqb3B0aW9uYWxEZXRhaWxzKTsKKwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0K
IAotSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VD
b2RlJiBzb3VyY2VDb2RlLCBFeGNlcHRpb25EZXRhaWxzKiBleGNlcHRpb25EZXRhaWxzKQorSlND
OjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oY29u
c3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKIHsKLSAgICByZXR1cm4gZXZhbHVhdGVJ
bldvcmxkKHNvdXJjZUNvZGUsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBleGNlcHRpb25EZXRh
aWxzKTsKKyAgICByZXR1cm4gZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oc291cmNl
Q29kZSwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwogfQogCiB2b2lkIFNjcmlwdENvbnRyb2xs
ZXI6OmxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0JiBtb2R1bGVT
Y3JpcHQsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgUmVmPE1vZHVsZUZldGNoUGFyYW1ldGVy
cz4mJiB0b3BMZXZlbEZldGNoUGFyYW1ldGVycywgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKQEAg
LTU0OCwyNSArNTU4LDQyIEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJTY3JpcHRPYmpl
Y3RzKCkKICNlbmRpZgogfQogCi1KU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3Jp
cHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBi
b29sIGZvcmNlVXNlckdlc3R1cmUsIEV4Y2VwdGlvbkRldGFpbHMqIGV4Y2VwdGlvbkRldGFpbHMp
CitKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhj
ZXB0aW9uKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCit7Cisg
ICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24obWFpblRocmVh
ZE5vcm1hbFdvcmxkKCksIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7Cit9CisKK0pTQzo6SlNW
YWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0
aW9uKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZv
cmNlVXNlckdlc3R1cmUpCit7CisgICAgYXV0byByZXN1bHQgPSBleGVjdXRlU2NyaXB0SW5Xb3Js
ZCh3b3JsZCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlKTsKKyAgICByZXR1cm4gcmVzdWx0ID8g
cmVzdWx0LnZhbHVlKCkgOiBKU0M6OkpTVmFsdWUgeyB9OworfQorCitWYWx1ZU9yRXhjZXB0aW9u
IFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYg
d29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiB7CiAg
ICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihmb3JjZVVzZXJHZXN0dXJl
ID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSkgOiBXVEY6Om51bGxvcHQpOwogICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNlQ29kZShz
Y3JpcHQsIFVSTChtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpKSwgVGV4dFBvc2l0aW9uKCksIEpT
Qzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtLCBDYWNoZWRTY3JpcHRGZXRjaGVy
OjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5jaGFyc2V0KCkpKTsKIAorICAgIC8vIEZJWE1F
OiBJbnN0ZWFkIG9mIHJldHVybmluZyBhbiBlbXB0eSBKU1ZhbHVlLCBzaG91bGQgcmV0dXJuIGFu
IEV4Y2VwdGlvbkRldGFpbHMuCiAgICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhl
Y3V0ZVNjcmlwdCkgfHwgaXNQYXVzZWQoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJl
dHVybiBldmFsdWF0ZUluV29ybGQoc291cmNlQ29kZSwgd29ybGQsIGV4Y2VwdGlvbkRldGFpbHMp
OworICAgIHJldHVybiBldmFsdWF0ZUluV29ybGQoc291cmNlQ29kZSwgd29ybGQpOwogfQogCi1K
U1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERP
TVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNl
ckdlc3R1cmUsIEV4Y2VwdGlvbkRldGFpbHMqIGV4Y2VwdGlvbkRldGFpbHMpCitKU0M6OkpTVmFs
dWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmlu
Z0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlKQoreworICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0ZVVzZXJB
Z2VudFNjcmlwdEluV29ybGQod29ybGQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7CisgICAg
cmV0dXJuIHJlc3VsdCA/IHJlc3VsdC52YWx1ZSgpIDogSlNDOjpKU1ZhbHVlIHsgfTsKK30KK1Zh
bHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdElu
V29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wg
Zm9yY2VVc2VyR2VzdHVyZSkKIHsKICAgICBhdXRvJiBkb2N1bWVudCA9ICptX2ZyYW1lLmRvY3Vt
ZW50KCk7CiAgICAgaWYgKCFzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoZG9jdW1lbnQpKQog
ICAgICAgICByZXR1cm4geyB9OwogCiAgICAgZG9jdW1lbnQuc2V0SGFzRXZhbHVhdGVkVXNlckFn
ZW50U2NyaXB0cygpOwotICAgIHJldHVybiBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3JsZCwgc2Ny
aXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBleGNlcHRpb25EZXRhaWxzKTsKKyAgICByZXR1cm4gZXhl
Y3V0ZVNjcmlwdEluV29ybGQod29ybGQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7CiB9CiAK
IGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6c2hvdWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRzKERvY3Vt
ZW50JiBkb2N1bWVudCkgY29uc3QKQEAgLTU5OCwyNCArNjI1LDYgQEAgYm9vbCBTY3JpcHRDb250
cm9sbGVyOjpjYW5FeGVjdXRlU2NyaXB0cyhSZWFzb25Gb3JDYWxsaW5nQ2FuRXhlY3V0ZVNjcmlw
dHMgcmVhc28KICAgICByZXR1cm4gbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5hbGxvd1Njcmlw
dChtX2ZyYW1lLnNldHRpbmdzKCkuaXNTY3JpcHRFbmFibGVkKCkpOwogfQogCi1KU1ZhbHVlIFNj
cmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wg
Zm9yY2VVc2VyR2VzdHVyZSwgRXhjZXB0aW9uRGV0YWlscyogZXhjZXB0aW9uRGV0YWlscykKLXsK
LSAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGZvcmNlVXNlckdlc3R1
cmUgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlKSA6IFdURjo6bnVsbG9wdCk7Ci0gICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHQoU2NyaXB0
U291cmNlQ29kZShzY3JpcHQsIFVSTChtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpKSwgVGV4dFBv
c2l0aW9uKCksIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtLCBDYWNoZWRT
Y3JpcHRGZXRjaGVyOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5jaGFyc2V0KCkpKSwgZXhj
ZXB0aW9uRGV0YWlscyk7Ci19Ci0KLUpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNj
cmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBFeGNlcHRpb25EZXRhaWxz
KiBleGNlcHRpb25EZXRhaWxzKQotewotICAgIGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRU
b0V4ZWN1dGVTY3JpcHQpIHx8IGlzUGF1c2VkKCkpCi0gICAgICAgIHJldHVybiB7IH07IC8vIEZJ
WE1FOiBXb3VsZCBqc051bGwgYmUgYmV0dGVyPwotCi0gICAgLy8gRklYTUU6IFByZXZlbnRpbmcg
RnJhbWUgZnJvbSBiZWluZyBkZXN0cm95ZWQgaXMgZXNzZW50aWFsbHkgdW5uZWNlc3NhcnkuCi0g
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDc2MwotICAg
IFJlZjxGcmFtZT4gcHJvdGVjdG9yKG1fZnJhbWUpOyAvLyBTY3JpcHQgZXhlY3V0aW9uIGNhbiBk
ZXN0cm95IHRoZSBmcmFtZSwgYW5kIHRodXMgdGhlIFNjcmlwdENvbnRyb2xsZXIuCi0KLSAgICBy
ZXR1cm4gZXZhbHVhdGUoc291cmNlQ29kZSwgZXhjZXB0aW9uRGV0YWlscyk7Ci19Ci0KIGJvb2wg
U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChjb25zdCBVUkwmIHVybCwg
U2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMIHNob3VsZFJlcGxhY2VEb2N1bWVu
dElmSmF2YVNjcmlwdFVSTCkKIHsKICAgICBpZiAoIVdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQo
dXJsKSkKQEAgLTYzMiw3ICs2NDEsNyBAQCBib29sIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJ
ZkphdmFTY3JpcHRVUkwoY29uc3QgVVJMJiB1cmwsIFNob3VsZFJlcGxhY2VEb2N1bQogICAgIGNv
bnN0IGludCBqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoID0gc2l6ZW9mKCJqYXZhc2NyaXB0OiIpIC0g
MTsKIAogICAgIFN0cmluZyBkZWNvZGVkVVJMID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHVy
bC5zdHJpbmcoKSk7Ci0gICAgYXV0byByZXN1bHQgPSBleGVjdXRlU2NyaXB0KGRlY29kZWRVUkwu
c3Vic3RyaW5nKGphdmFzY3JpcHRTY2hlbWVMZW5ndGgpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGV4
ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihkZWNvZGVkVVJMLnN1YnN0cmluZyhqYXZhc2Ny
aXB0U2NoZW1lTGVuZ3RoKSk7CiAKICAgICAvLyBJZiBleGVjdXRpbmcgc2NyaXB0IGNhdXNlZCB0
aGlzIGZyYW1lIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgcGFnZSwgd2UKICAgICAvLyBkb24ndCB3
YW50IHRvIHRyeSB0byByZXBsYWNlIGl0cyBkb2N1bWVudCEKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCAxMzI3NGE1ZDFjZjZkNTJiNGEyNmVj
NDhkYjUwMGFiZmZlMzNlZDZiLi5hM2Y2YzNhZjU4YzAxYTAxNzA4MzUyMzliYWFmNTk1NjMzOTBj
ZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5o
CkBAIC03MCw2ICs3MCw4IEBAIGVudW0gUmVhc29uRm9yQ2FsbGluZ0NhbkV4ZWN1dGVTY3JpcHRz
IHsKICAgICBOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdAogfTsKIAordXNpbmcgVmFsdWVPckV4Y2Vw
dGlvbiA9IEV4cGVjdGVkPEpTQzo6SlNWYWx1ZSwgRXhjZXB0aW9uRGV0YWlscz47CisKIGNsYXNz
IFNjcmlwdENvbnRyb2xsZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U2NyaXB0Q29udHJvbGxl
cj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCkBAIC04OCwxMCArOTAsMTEgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgZ2V0QWxsV29ybGRzKFZlY3RvcjxSZWY8RE9NV3Jh
cHBlcldvcmxkPj4mKTsKIAotICAgIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFNj
cmlwdFNvdXJjZUNvZGUmLCBFeGNlcHRpb25EZXRhaWxzKiA9IG51bGxwdHIpOwotICAgIFdFQkNP
UkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0
LCBib29sIGZvcmNlVXNlckdlc3R1cmUgPSBmYWxzZSwgRXhjZXB0aW9uRGV0YWlscyogPSBudWxs
cHRyKTsKLSAgICBKU0M6OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldv
cmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNl
LCBFeGNlcHRpb25EZXRhaWxzKiA9IG51bGxwdHIpOwotICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6
SlNWYWx1ZSBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBj
b25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBFeGNlcHRpb25EZXRh
aWxzKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRl
U2NyaXB0SWdub3JpbmdFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VV
c2VyR2VzdHVyZSA9IGZhbHNlKTsKKyAgICBKU0M6OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdEluV29y
bGRJZ25vcmluZ0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlw
dCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOworICAgIFZhbHVlT3JFeGNlcHRpb24g
ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBzY3Jp
cHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBK
U0M6OkpTVmFsdWUgZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlv
bihET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJH
ZXN0dXJlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWYWx1ZU9yRXhjZXB0aW9uIGV4ZWN1dGVVc2Vy
QWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0
LCBib29sIGZvcmNlVXNlckdlc3R1cmUpOwogCiAgICAgYm9vbCBzaG91bGRBbGxvd1VzZXJBZ2Vu
dFNjcmlwdHMoRG9jdW1lbnQmKSBjb25zdDsKIApAQCAtMTAyLDggKzEwNSw5IEBAIHB1YmxpYzoK
ICAgICAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVsZTogaXQgaXMgT0sgdG8g
Y2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gYW55IHRocmVhZCwgZXZlbiByZWVudHJhbnRseS4KICAg
ICBzdGF0aWMgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKLSAgICBKU0M6OkpTVmFsdWUg
ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIEV4Y2VwdGlvbkRldGFpbHMqID0gbnVs
bHB0cik7Ci0gICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3Vy
Y2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJiwgRXhjZXB0aW9uRGV0YWlscyogPSBudWxscHRyKTsK
KyAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTY3JpcHRT
b3VyY2VDb2RlJik7CisgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhj
ZXB0aW9uKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmKTsKKyAgICBW
YWx1ZU9yRXhjZXB0aW9uIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwg
RE9NV3JhcHBlcldvcmxkJik7CiAKICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKExv
YWRhYmxlTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBSZWY8TW9kdWxl
RmV0Y2hQYXJhbWV0ZXJzPiYmLCBET01XcmFwcGVyV29ybGQmKTsKICAgICB2b2lkIGxvYWRNb2R1
bGVTY3JpcHQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUs
IFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAK
aW5kZXggYTc1NWZjYjkzY2ExMjIyMjhlNzJhNDU5NDhlZmI0MTA0MmNmMTVkNy4uNTJmMzE5MmM1
YjIwMDJmNTE4MzhhNzQ0OTI4N2I2ZWU4MGEzNTczZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQu
Y3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgQ29udGVudFJ1bGVMaXN0UmVzdWx0cyBDb250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50UnVsZUxpc3RzRm9yTG9hZCgKICAgICAgICAg
ICAgICAgICAmJiAoKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHVybC5ob3N0KCksICJ3
d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20iKSAmJiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZSh1cmwucGF0aCgpLCAiL2FuYWx5dGljcy5qcyIpKQogICAgICAgICAgICAgICAgICAgICB8fCAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodXJsLmhvc3QoKSwgInd3dy5nb29nbGV0YWdt
YW5hZ2VyLmNvbSIpICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHVybC5wYXRoKCks
ICIvZ3RtLmpzIikpKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBmcmFtZSA9IGN1cnJl
bnREb2N1bWVudC0+ZnJhbWUoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUtPnNjcmlwdCgp
LmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUgeyAidHJ5IHsgd2luZG93LmRhdGFMYXllci5oaWRl
LmVuZCgpOyBjb25zb2xlLmxvZygnQ2FsbGVkIHdpbmRvdy5kYXRhTGF5ZXIuaGlkZS5lbmQoKSBp
biBmcmFtZSAnICsgZG9jdW1lbnQuVVJMICsgJyBiZWNhdXNlIHRoZSBjb250ZW50IGJsb2NrZXIg
YmxvY2tlZCB0aGUgbG9hZCBvZiB0aGUgaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20v
YW5hbHl0aWNzLmpzIHNjcmlwdCcpOyB9IGNhdGNoIChlKSB7IH0iX3MgfSk7CisgICAgICAgICAg
ICAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKFNjcmlw
dFNvdXJjZUNvZGUgeyAidHJ5IHsgd2luZG93LmRhdGFMYXllci5oaWRlLmVuZCgpOyBjb25zb2xl
LmxvZygnQ2FsbGVkIHdpbmRvdy5kYXRhTGF5ZXIuaGlkZS5lbmQoKSBpbiBmcmFtZSAnICsgZG9j
dW1lbnQuVVJMICsgJyBiZWNhdXNlIHRoZSBjb250ZW50IGJsb2NrZXIgYmxvY2tlZCB0aGUgbG9h
ZCBvZiB0aGUgaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0aWNzLmpzIHNj
cmlwdCcpOyB9IGNhdGNoIChlKSB7IH0iX3MgfSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBmM2Y3ZjAzMmYyMGUxYTVhM2YzYzhm
MTNkMjI3MDk5ZjViODJiMWU5Li4xN2VkYzhiYzU4MmYzNjc0N2M3YmM0NGFiZTlkZDVhNGJmMGNi
ZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTcyMDEsNyArNzIwMSw3IEBAIHZvaWQg
RG9jdW1lbnQ6OmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdChET01XcmFwcGVyV29ybGQmIHdv
cmxkKQogICAgICAgICBqc1N0cmluZyA9IFN0cmluZyhwbHVnSW5zSmF2YVNjcmlwdCwgc2l6ZW9m
KHBsdWdJbnNKYXZhU2NyaXB0KSk7CiAKICAgICBzZXRIYXNFdmFsdWF0ZWRVc2VyQWdlbnRTY3Jp
cHRzKCk7Ci0gICAgc2NyaXB0Q29udHJvbGxlci5ldmFsdWF0ZUluV29ybGQoU2NyaXB0U291cmNl
Q29kZShqc1N0cmluZyksIHdvcmxkKTsKKyAgICBzY3JpcHRDb250cm9sbGVyLmV2YWx1YXRlSW5X
b3JsZElnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUoanNTdHJpbmcpLCB3b3JsZCk7
CiAKICAgICBtX2hhc0luamVjdGVkUGx1Z0luc1NjcmlwdCA9IHRydWU7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggZTBkOTY3YjQ1NzRiYjM1MzA4NWZiMzc3NjUwOTRj
YzJmOGEzNTM4NS4uMTUxMTc1MTllZjkxMzQ2NzY3N2QyNTg2NTNjZDI3MjAxNzdlODA0YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMzg3LDcgKzM4Nyw3IEBAIHZvaWQg
U2NyaXB0RWxlbWVudDo6ZXhlY3V0ZUNsYXNzaWNTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYgc291cmNlQ29kZSkKICAgICBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRl
ciBpZ25vcmVEZXNjdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIobV9pc0V4dGVybmFsU2Ny
aXB0ID8gJmRvY3VtZW50IDogbnVsbHB0cik7CiAgICAgQ3VycmVudFNjcmlwdEluY3JlbWVudGVy
IGN1cnJlbnRTY3JpcHRJbmNyZW1lbnRlcihkb2N1bWVudCwgbV9lbGVtZW50KTsKIAotICAgIGZy
YW1lLT5zY3JpcHQoKS5ldmFsdWF0ZShzb3VyY2VDb2RlKTsKKyAgICBmcmFtZS0+c2NyaXB0KCku
ZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihzb3VyY2VDb2RlKTsKIH0KIAogdm9pZCBTY3JpcHRF
bGVtZW50OjpleGVjdXRlTW9kdWxlU2NyaXB0KExvYWRhYmxlTW9kdWxlU2NyaXB0JiBsb2FkYWJs
ZU1vZHVsZVNjcmlwdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmlu
ZGV4IGViNWZmNTY3ZWQ4MTBkZmMxODUxMDY4MDMyOTNhMmQ1NjRjZTIzNDkuLjczMGI0ZTM4OWU3
ODNmZTU2Njc1NWI4YWMzNjg4MTE5ZjA5NjkxNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcApAQCAtNzMxNyw3ICs3MzE3LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVt
ZW50OjplbnN1cmVNZWRpYUNvbnRyb2xzSW5qZWN0ZWRTY3JpcHQoKQogI2Vsc2UKICAgICAgICAg
VVJMIHNjcmlwdFVSTDsKICNlbmRpZgotICAgICAgICBzY3JpcHRDb250cm9sbGVyLmV2YWx1YXRl
SW5Xb3JsZChTY3JpcHRTb3VyY2VDb2RlKG1lZGlhQ29udHJvbHNTY3JpcHQsIFdURk1vdmUoc2Ny
aXB0VVJMKSksIHdvcmxkKTsKKyAgICAgICAgc2NyaXB0Q29udHJvbGxlci5ldmFsdWF0ZUluV29y
bGRJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKG1lZGlhQ29udHJvbHNTY3JpcHQs
IFdURk1vdmUoc2NyaXB0VVJMKSksIHdvcmxkKTsKICAgICAgICAgaWYgKFVOTElLRUxZKHNjb3Bl
LmV4Y2VwdGlvbigpKSkgewogICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAppbmRleCAxYjNjODg3NmNj
Njg3MzFiNWQ2MjhkZDJkZTJiOWQ2MDRmMmE0NWZiLi4wZDgzMTkyNTI3ODJkYTk1YTcyZWQzNmNh
NWYwNDhjN2NkOGM4NDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC00MjAsNyArNDIwLDcgQEAg
dm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpkaXNwYXRjaE1lc3NhZ2VBc3luYyhj
b25zdCBTdHJpbmcmIG1lc3NhZ2VPYmoKIGJvb2wgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bDo6ZXZhbHVhdGVBc0Jvb2xlYW4oY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQogewogICAgIGF1
dG8mIHN0YXRlID0gKm1haW5Xb3JsZEV4ZWNTdGF0ZSgmbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFt
ZSgpKTsKLSAgICByZXR1cm4gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4
ZWN1dGVTY3JpcHQoZXhwcmVzc2lvbikudG9XVEZTdHJpbmcoJnN0YXRlKSA9PSAidHJ1ZSI7Cisg
ICAgcmV0dXJuIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2Ny
aXB0SWdub3JpbmdFeGNlcHRpb24oZXhwcmVzc2lvbikudG9XVEZTdHJpbmcoJnN0YXRlKSA9PSAi
dHJ1ZSI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVhdGVP
bkxvYWQoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQpAQCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQg
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVhdGVPbkxvYWQoY29uc3QgU3RyaW5n
JiBleHByZXNzaW9uKQogICAgIH0KIAogICAgIEpTQzo6U3VzcGVuZEV4Y2VwdGlvblNjb3BlIHNj
b3BlKCZtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnZtKCkpOwotICAgIG1f
ZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5ldmFsdWF0ZShTY3JpcHRTb3VyY2VD
b2RlKGV4cHJlc3Npb24pKTsKKyAgICBtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkuc2NyaXB0
KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKGV4cHJlc3Npb24p
KTsKIH0KIAogUGFnZSogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6aW5zcGVjdGVkUGFn
ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggMDFlZGQwMDYwZGUzNjJjMWFiN2I3MDI0NzVhZTgz
ODIyMjc5YTgwMC4uY2Y4OWY5ZWI1MDUyMzI2ZmNmOGNiZDI2ZDg1OTZjZjQ3MjRjMjM2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcApAQCAtNzczLDcgKzc3Myw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpk
aWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUmIGZyYW1lKQogICAgIGlmIChtX2Jvb3Rz
dHJhcFNjcmlwdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZyYW1lLnNjcmlw
dCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUobV9ib290c3RyYXBTY3JpcHQsIFVSTCB7IFVS
TCgpLCAid2ViLWluc3BlY3RvcjovL2Jvb3RzdHJhcC5qcyJfcyB9KSk7CisgICAgZnJhbWUuc2Ny
aXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKG1fYm9vdHN0
cmFwU2NyaXB0LCBVUkwgeyBVUkwoKSwgIndlYi1pbnNwZWN0b3I6Ly9ib290c3RyYXAuanMiX3Mg
fSkpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkUGFpbnQoUmVuZGVyT2JqZWN0
JiByZW5kZXJlciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b250ZW50RmlsdGVyLmNwcAppbmRleCBiNDk4YTIyNGIxOTBjNmNlODQ0ZWI5ZGQ3ZWI5YjdhMTA1
ZDc2ZGM1Li42ZWFmY2EzNGU4MWEzOTkyZGQxZmI4MGY5MDMyZWI5NmM4YjliNzc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9p
ZCBDb250ZW50RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUgc3RhdGUpCiAgICAgaWYgKCF1bmJsb2Nr
UmVxdWVzdERlbmllZFNjcmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUpIHsKICAgICAgICAgdW5ibG9j
a0hhbmRsZXIud3JhcFdpdGhEZWNpc2lvbkhhbmRsZXIoW3NjcmlwdENvbnRyb2xsZXIgPSBtYWtl
V2Vha1B0cihmcmFtZS0+c2NyaXB0KCkpLCBzY3JpcHQgPSB1bmJsb2NrUmVxdWVzdERlbmllZFNj
cmlwdC5pc29sYXRlZENvcHkoKV0oYm9vbCB1bmJsb2NrZWQpIHsKICAgICAgICAgICAgIGlmICgh
dW5ibG9ja2VkICYmIHNjcmlwdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgc2NyaXB0Q29u
dHJvbGxlci0+ZXhlY3V0ZVNjcmlwdChzY3JpcHQpOworICAgICAgICAgICAgICAgIHNjcmlwdENv
bnRyb2xsZXItPmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihzY3JpcHQpOwogICAgICAg
ICB9KTsKICAgICB9CiAgICAgbV9kb2N1bWVudExvYWRlci5mcmFtZUxvYWRlcigpLT5jbGllbnQo
KS5jb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdURk1vdmUodW5ibG9ja0hhbmRsZXIpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAKaW5kZXggMjJjYzFmZDE1YmMxN2NmZDg1NmU5MTRjMzhhODZiMGM0MmFj
NzRiYy4uZTA4MzNkYzA4MzNmNTlhOWViMjYzNTA2MTMxY2RiYjk3YzlmOTIxMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAKQEAgLTYzNCw3ICs2MzQsNyBAQCB2b2lkIEZyYW1lOjppbmplY3RVc2VyU2Ny
aXB0SW1tZWRpYXRlbHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgVXNlclNjcmlwdAog
CiAgICAgZG9jdW1lbnQtPnNldEFzUnVubmluZ1VzZXJTY3JpcHRzKCk7CiAgICAgbG9hZGVyKCku
Y2xpZW50KCkud2lsbEluamVjdFVzZXJTY3JpcHQod29ybGQpOwotICAgIG1fc2NyaXB0LT5ldmFs
dWF0ZUluV29ybGQoU2NyaXB0U291cmNlQ29kZShzY3JpcHQuc291cmNlKCksIFVSTChzY3JpcHQu
dXJsKCkpKSwgd29ybGQpOworICAgIG1fc2NyaXB0LT5ldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4
Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdC5zb3VyY2UoKSwgVVJMKHNjcmlwdC51cmwo
KSkpLCB3b3JsZCk7CiB9CiAKIFJlbmRlclZpZXcqIEZyYW1lOjpjb250ZW50UmVuZGVyZXIoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCmluZGV4IGZlMDFjYzFmZjQ5MWMz
NjdmY2FkOTdiZmQ0ZDZjNGU3MzBmNmJkYTguLmY5MGU0NDUyNGQ1ZGEzNzY2MmNjMmRkNTVmNDIx
ZjI4OTc3YjQyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxUcmVlVmlld2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAKQEAgLTU2LDgg
KzU2LDggQEAgdm9pZCBYTUxUcmVlVmlld2VyOjp0cmFuc2Zvcm1Eb2N1bWVudFRvVHJlZVZpZXco
KQogICAgIG1fZG9jdW1lbnQuc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Q
b2xpY3k6OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpKTsKIAogICAgIFN0
cmluZyBzY3JpcHRTdHJpbmcgPSBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhYTUxW
aWV3ZXJfanMsIHNpemVvZihYTUxWaWV3ZXJfanMpKTsKLSAgICBtX2RvY3VtZW50LmZyYW1lKCkt
PnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0U3RyaW5nKSk7Ci0gICAg
bV9kb2N1bWVudC5mcmFtZSgpLT5zY3JpcHQoKS5ldmFsdWF0ZShTY3JpcHRTb3VyY2VDb2RlKEF0
b21TdHJpbmcoInByZXBhcmVXZWJLaXRYTUxWaWV3ZXIoJ1RoaXMgWE1MIGZpbGUgZG9lcyBub3Qg
YXBwZWFyIHRvIGhhdmUgYW55IHN0eWxlIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aCBpdC4g
VGhlIGRvY3VtZW50IHRyZWUgaXMgc2hvd24gYmVsb3cuJyk7IikpKTsKKyAgICBtX2RvY3VtZW50
LmZyYW1lKCktPnNjcmlwdCgpLmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNl
Q29kZShzY3JpcHRTdHJpbmcpKTsKKyAgICBtX2RvY3VtZW50LmZyYW1lKCktPnNjcmlwdCgpLmV2
YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29kZShBdG9tU3RyaW5nKCJwcmVw
YXJlV2ViS2l0WE1MVmlld2VyKCdUaGlzIFhNTCBmaWxlIGRvZXMgbm90IGFwcGVhciB0byBoYXZl
IGFueSBzdHlsZSBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggaXQuIFRoZSBkb2N1bWVudCB0
cmVlIGlzIHNob3duIGJlbG93LicpOyIpKSk7CiAKICAgICBTdHJpbmcgY3NzU3RyaW5nID0gU3Ry
aW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoWE1MVmlld2VyX2Nzcywgc2l6ZW9mKFhNTFZp
ZXdlcl9jc3MpKTsKICAgICBhdXRvIHRleHQgPSBtX2RvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNz
c1N0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA3
MGVmYmZhM2U4N2EyYWJhY2M0NTE0NjQwZmRhM2Y3N2ViNjgwZTVmLi4wYzE1ZjhiOTNjNzgwN2Vm
ZDc0YmJlNDAwODI4NDQ0MWM1NmZhZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAKQEAgLTI0NzIsNyArMjQ3Miw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVN0YXRl
Q2xpZW50KFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNsaWVudCkKIAog
dm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdL
U3RyaW5nUmVmIHNjcmlwdFJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlUnVuSmF2YVNjcmlwdEZ1
bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+cnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lKHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgdHJ1ZSwgW2NvbnRleHQsIGNh
bGxiYWNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmV0dXJuVmFsdWUsIGJvb2wsIGNv
bnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9y
KSB7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUodG9JbXBs
KHNjcmlwdFJlZiktPnN0cmluZygpLCB0cnVlLCBbY29udGV4dCwgY2FsbGJhY2tdKEFQSTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlKiByZXR1cm5WYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0
aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgY2FsbGJh
Y2sodG9BUEkocmV0dXJuVmFsdWUpLCAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9u
ZSkgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5wdHIoKSkgOiAwLCBjb250ZXh0KTsKICAg
ICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCmluZGV4IDMzNTRhYzZlZWNiNWE4ZDcxOThhZThhNThjYTI5OTQ0YzgzMGU1MTAuLjE5NDJi
MDI1NjFkZjE1OTgyY2EwYTExZDEwMGMzOTNjYjhiYTA0YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTEyMiw3ICsxMTIyLDcgQEAg
LSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcg
Zm9yY2VVc2VyR2VzdHVyZTooQk9PTCkKIHsKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtj
b21wbGV0aW9uSGFuZGxlciBjb3B5XSk7CiAKLSAgICBfcGFnZS0+cnVuSmF2YVNjcmlwdEluTWFp
bkZyYW1lKGphdmFTY3JpcHRTdHJpbmcsIGZvcmNlVXNlckdlc3R1cmUsIFtoYW5kbGVyXShBUEk6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBib29sIGhhZEV4
Y2VwdGlvbiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyYgZGV0YWlscywgV2ViS2l0
OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvciBlcnJvckNvZGUpIHsKKyAgICBfcGFnZS0+cnVu
SmF2YVNjcmlwdEluTWFpbkZyYW1lKGphdmFTY3JpcHRTdHJpbmcsIGZvcmNlVXNlckdlc3R1cmUs
IFtoYW5kbGVyXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZh
bHVlLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6
OlNjcmlwdFZhbHVlQ2FsbGJhY2s6OkVycm9yIGVycm9yQ29kZSkgewogICAgICAgICBpZiAoIWhh
bmRsZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTExNDUsMTggKzExNDUsMTggQEAgLSAo
dm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgZm9y
Y2VVc2VyR2VzdHVyZTooQk9PTCkKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gcmF3SGFuZGxl
ciA9ICh2b2lkICheKShpZCwgTlNFcnJvciAqKSloYW5kbGVyLmdldCgpOwotICAgICAgICBpZiAo
aGFkRXhjZXB0aW9uKSB7CisgICAgICAgIGlmIChkZXRhaWxzKSB7CiAgICAgICAgICAgICBBU1NF
UlQoIXNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CiAKICAgICAgICAgICAgIFJldGFpblB0cjxOU011
dGFibGVEaWN0aW9uYXJ5PiB1c2VySW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5
IGFsbG9jXSBpbml0XSk7CiAKICAgICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6bG9jYWxp
emVkRGVzY3JpcHRpb25Gb3JFcnJvckNvZGUoV0tFcnJvckphdmFTY3JpcHRFeGNlcHRpb25PY2N1
cnJlZCkgZm9yS2V5Ok5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXldOwotICAgICAgICAgICAgW3Vz
ZXJJbmZvIHNldE9iamVjdDpzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihkZXRhaWxzLm1lc3NhZ2Up
IGZvcktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTWVzc2FnZUVycm9yS2V5XTsKLSAgICAgICAg
ICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QChkZXRhaWxzLmxpbmVOdW1iZXIpIGZvcktleTpfV0tK
YXZhU2NyaXB0RXhjZXB0aW9uTGluZU51bWJlckVycm9yS2V5XTsKLSAgICAgICAgICAgIFt1c2Vy
SW5mbyBzZXRPYmplY3Q6QChkZXRhaWxzLmNvbHVtbk51bWJlcikgZm9yS2V5Ol9XS0phdmFTY3Jp
cHRFeGNlcHRpb25Db2x1bW5OdW1iZXJFcnJvcktleV07CisgICAgICAgICAgICBbdXNlckluZm8g
c2V0T2JqZWN0OnN0YXRpY19jYXN0PE5TU3RyaW5nICo+KGRldGFpbHMtPm1lc3NhZ2UpIGZvcktl
eTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTWVzc2FnZUVycm9yS2V5XTsKKyAgICAgICAgICAgIFt1
c2VySW5mbyBzZXRPYmplY3Q6QChkZXRhaWxzLT5saW5lTnVtYmVyKSBmb3JLZXk6X1dLSmF2YVNj
cmlwdEV4Y2VwdGlvbkxpbmVOdW1iZXJFcnJvcktleV07CisgICAgICAgICAgICBbdXNlckluZm8g
c2V0T2JqZWN0OkAoZGV0YWlscy0+Y29sdW1uTnVtYmVyKSBmb3JLZXk6X1dLSmF2YVNjcmlwdEV4
Y2VwdGlvbkNvbHVtbk51bWJlckVycm9yS2V5XTsKIAotICAgICAgICAgICAgaWYgKCFkZXRhaWxz
LnNvdXJjZVVSTC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgW3VzZXJJbmZvIHNldE9iamVj
dDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOmRldGFpbHMuc291cmNlVVJMXSBmb3JLZXk6
X1dLSmF2YVNjcmlwdEV4Y2VwdGlvblNvdXJjZVVSTEVycm9yS2V5XTsKKyAgICAgICAgICAgIGlm
ICghZGV0YWlscy0+c291cmNlVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBbdXNlcklu
Zm8gc2V0T2JqZWN0OltOU1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJpbmc6ZGV0YWlscy0+c291cmNl
VVJMXSBmb3JLZXk6X1dLSmF2YVNjcmlwdEV4Y2VwdGlvblNvdXJjZVVSTEVycm9yS2V5XTsKIAog
ICAgICAgICAgICAgcmF3SGFuZGxlcihuaWwsIGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0
V2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvckphdmFTY3JpcHRFeGNlcHRpb25P
Y2N1cnJlZCB1c2VySW5mbzp1c2VySW5mby5nZXQoKV0pLmdldCgpKTsKICAgICAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Vmlldy5jcHAKaW5kZXggZDIxYzc4MmVkZWQxMjEzYzY5MTMxMWNkMmRjOTViZmJjNGQ4NzZlYS4u
NTczZjI5ZTI0ZmJjZTFkZWIyOTdmZmUxYjk2ZTMzOGNmNzc4YTEyMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTM2MDYs
NyArMzYwNiwxMCBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdChXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogc2NyaXB0LAogICAgIGdfcmV0dXJuX2lmX2Zh
aWwoc2NyaXB0KTsKIAogICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYoZ190YXNr
X25ldyh3ZWJWaWV3LCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKSk7Ci0gICAgZ2V0
UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoU3RyaW5nOjpmcm9tVVRGOChz
Y3JpcHQpLCB0cnVlLCBbdGFzayA9IFdURk1vdmUodGFzayldKEFQSTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGJvb2wsIGNvbnN0IEV4Y2VwdGlvbkRldGFp
bHMmIGV4Y2VwdGlvbkRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAg
IGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFN0cmluZzo6ZnJvbVVU
Rjgoc2NyaXB0KSwgdHJ1ZSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShBUEk6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxFeGNlcHRpb25EZXRh
aWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICAgICAgRXhj
ZXB0aW9uRGV0YWlscyBleGNlcHRpb25EZXRhaWxzOworICAgICAgICBpZiAoZGV0YWlscykKKyAg
ICAgICAgICAgIGV4Y2VwdGlvbkRldGFpbHMgPSAqZGV0YWlsczsKICAgICAgICAgd2Via2l0V2Vi
Vmlld1J1bkphdmFTY3JpcHRDYWxsYmFjayhzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGV4Y2VwdGlv
bkRldGFpbHMsIHRhc2suZ2V0KCkpOwogICAgIH0pOwogfQpAQCAtMzcwNCw3ICszNzA3LDEwIEBA
IHZvaWQgd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0X2luX3dvcmxkKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyCiAgICAgZ19yZXR1cm5faWZfZmFpbCh3b3JsZE5hbWUp
OwogCiAgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0R1JlZihnX3Rhc2tfbmV3KHdlYlZp
ZXcsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpKTsKLSAgICBnZXRQYWdlKHdlYlZp
ZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFN0cmluZzo6ZnJvbVVURjgo
c2NyaXB0KSwgdHJ1ZSwgU3RyaW5nOjpmcm9tVVRGOCh3b3JsZE5hbWUpLCBbdGFzayA9IFdURk1v
dmUodGFzayldKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFs
dWUsIGJvb2wsIGNvbnN0IEV4Y2VwdGlvbkRldGFpbHMmIGV4Y2VwdGlvbkRldGFpbHMsIFdlYktp
dDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCB0cnVl
LCBTdHJpbmc6OmZyb21VVEY4KHdvcmxkTmFtZSksIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oQVBJ
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8
RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7
CisgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZXhjZXB0aW9uRGV0YWlsczsKKyAgICAgICAgaWYg
KGRldGFpbHMpCisgICAgICAgICAgICBleGNlcHRpb25EZXRhaWxzID0gKmRldGFpbHM7CiAgICAg
ICAgIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2soc2VyaWFsaXplZFNjcmlwdFZh
bHVlLCBleGNlcHRpb25EZXRhaWxzLCB0YXNrLmdldCgpKTsKICAgICB9KTsKIH0KQEAgLTM3NDQs
NyArMzc1MCwxMCBAQCBzdGF0aWMgdm9pZCByZXNvdXJjZXNTdHJlYW1SZWFkQ2FsbGJhY2soR09i
amVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZwogICAgIFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ190YXNrX2dldF9zb3VyY2Vfb2JqZWN0KHRhc2su
Z2V0KCkpKTsKICAgICBncG9pbnRlciBvdXRwdXRTdHJlYW1EYXRhID0gZ19tZW1vcnlfb3V0cHV0
X3N0cmVhbV9nZXRfZGF0YShHX01FTU9SWV9PVVRQVVRfU1RSRUFNKG9iamVjdCkpOwogICAgIGdl
dFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFN0cmluZzo6ZnJvbVVURjgo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBnY2hhcio+KG91dHB1dFN0cmVhbURhdGEpKSwgdHJ1ZSwK
LSAgICAgICAgW3Rhc2tdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2Ny
aXB0VmFsdWUsIGJvb2wsIGNvbnN0IEV4Y2VwdGlvbkRldGFpbHMmIGV4Y2VwdGlvbkRldGFpbHMs
IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgICAgICBbdGFza10oQVBJOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8RXhjZXB0
aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CisgICAg
ICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGV4Y2VwdGlvbkRldGFpbHM7CisgICAgICAgICAgICBp
ZiAoZGV0YWlscykKKyAgICAgICAgICAgICAgICBleGNlcHRpb25EZXRhaWxzID0gKmRldGFpbHM7
CiAgICAgICAgICAgICB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdENhbGxiYWNrKHNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSwgZXhjZXB0aW9uRGV0YWlscywgdGFzay5nZXQoKSk7CiAgICAgICAgIH0p
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZTNiNDUy
Mzk5NzkzYTZiMWQ2NzQ2Y2Y5YmY0NDg4MzQ1OGZlYWI3Zi4uMmEzZjE5NjYzNTgxODExOWI1MzMx
MWMwYzgzNzVlZTE4YzQxYzI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCkBAIC0zODQ1LDE4ICszODQ1LDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsYXVuY2hJ
bml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCkKICAgICAgICAgbGF1bmNoUHJvY2Vzcyh7IH0sIFBy
b2Nlc3NMYXVuY2hSZWFzb246OkluaXRpYWxQcm9jZXNzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJv
eHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBm
b3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IEV4Y2VwdGlvbkRldGFpbHMmLCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6
OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3Jj
ZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lU2NyaXB0V29ybGQoc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6Om51bGxvcHQsIFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wg
Zm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6
OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBib29sIGhhZEV4Y2Vw
dGlvbiwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVy
ZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICAvLyBGb3Ig
YmFja3dhcmQtY29tcGF0aWJpbGl0eSBzdXBwb3J0IHJ1bm5pbmcgc2NyaXB0IGluIGEgV2ViVmll
dyB3aGljaCBoYXMgbm90IGRvbmUgYW55IGxvYWRzIHlldHMuCiAgICAgbGF1bmNoSW5pdGlhbFBy
b2Nlc3NJZk5lY2Vzc2FyeSgpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0g
ICAgICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0ciwgZmFsc2UsIHsgfSwgQ2FsbGJhY2tCYXNl
OjpFcnJvcjo6VW5rbm93bik7CisgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0ciwgeyB9
LCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMzg2NCw3ICszODY0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJ
bk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib28KICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChz
Y3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCkpOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6
RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wgaGFkRXhjZXB0
aW9uLCBjb25zdCBFeGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2Fs
bGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZShG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VV
c2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
KiwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKG1haW5GcmFtZSgpLT5mcmFtZUlEKCkgIT0g
ZnJhbWVJRCk7CiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5KCJXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lIl9zKSk7CkBAIC02Nzg3LDcg
KzY3ODcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6c2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGRhdGFSZWZlcmVuY2UsIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBFeGNlcHRpb25E
ZXRhaWxzJiBkZXRhaWxzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94
eTo6c2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZl
cmVuY2UsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIENhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxTY3JpcHRW
YWx1ZUNhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKSB7CkBAIC02Nzk2
LDcgKzY3OTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2NyaXB0VmFsdWVDYWxsYmFjayhjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsCiAgICAgfQogCiAgICAgaWYgKGRh
dGFSZWZlcmVuY2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJh
Y2tXaXRoUmV0dXJuVmFsdWUobnVsbHB0ciwgaGFkRXhjZXB0aW9uLCBkZXRhaWxzKTsKKyAgICAg
ICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShudWxscHRyLCBkZXRh
aWxzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjgwNCw3ICs2ODA0LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNjcmlwdFZhbHVlQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBkYXRhUmVmZXJlbmNlLAogICAgIGRhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkYXRh
UmVmZXJlbmNlLnNpemUoKSk7CiAgICAgZGF0YS5hcHBlbmQoZGF0YVJlZmVyZW5jZS5kYXRhKCks
IGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKIAotICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tX
aXRoUmV0dXJuVmFsdWUoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KFdURk1vdmUo
ZGF0YSkpLnB0cigpLCBoYWRFeGNlcHRpb24sIGRldGFpbHMpOworICAgIGNhbGxiYWNrLT5wZXJm
b3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFk
b3B0KFdURk1vdmUoZGF0YSkpLnB0cigpLCBkZXRhaWxzKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmNvbXB1dGVkUGFnZXNDYWxsYmFjayhjb25zdCBWZWN0b3I8SW50UmVjdD4mIHBhZ2VSZWN0
cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgY29uc3QgRmxvYXRCb3hFeHRl
bnQmIGNvbXB1dGVkUGFnZU1hcmdpbiwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBhZTM4NTIyMjFkNGE1MjQzNTUyYmEwMjNm
MmY0OGI5NGVmN2I5OGFkLi4wMjc0ZDdjZTJmNDM2ODE1NGNjYjY3OTI1Y2QwZjlkYTQzYzI5Y2Q1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNzUsNiArNzUsNyBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVudFRyYWNraW5n
UmVnaW9ucy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uRGV0YWlscy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRm9udEF0dHJpYnV0ZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9h
ZGVyVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPiAvLyBGSVhNRTogTW92
ZSBMYXlvdXRWaWV3cG9ydENvbnN0cmFpbnQgdG8gaXRzIG93biBmaWxlIGFuZCBzdG9wIGluY2x1
ZGluZyB0aGlzLgpAQCAtMzM1LDcgKzMzNiw3IEBAIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQ
STo6RGF0YSo+IERhdGFDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPHVpbnQ2NF90
PiBVbnNpZ25lZENhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8RWRpdGluZ1Jhbmdl
PiBFZGl0aW5nUmFuZ2VDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFN0
cmluZyY+IFN0cmluZ0NhbGxiYWNrOwotdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8QVBJOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWUqLCBib29sLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxz
Jj4gU2NyaXB0VmFsdWVDYWxsYmFjazsKK3R5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4+
IFNjcmlwdFZhbHVlQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBXZWJD
b3JlOjpGb250QXR0cmlidXRlcyY+IEZvbnRBdHRyaWJ1dGVzQ2FsbGJhY2s7CiB0eXBlZGVmIEdl
bmVyaWNDYWxsYmFjazxjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
PiBTZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxib29s
PiBCb29sQ2FsbGJhY2s7CkBAIC0xMDYwLDEwICsxMDYxLDEwIEBAIHB1YmxpYzoKICAgICB2b2lk
IGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2Vi
RnJhbWVQcm94eSosIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQ
cm94eSosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
KTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmLCBib29s
LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgYm9vbCBo
YWRFeGNlcHRpb24sIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJ
bk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYsIGJvb2wsIGNvbnN0IE9wdGlvbmFs
PFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRl
dGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKKyAgICB2
b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmLCBib29sLCBXVEY6OkZ1
bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVu
Y3Rpb24pOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29u
c3QgU3RyaW5nJiwgYm9vbCwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6
OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJD
b3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tG
dW5jdGlvbik7CiAgICAgLy8gRm9yIHN1YiBmcmFtZXMuCi0gICAgdm9pZCBydW5KYXZhU2NyaXB0
SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBi
b29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSosIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25E
ZXRhaWxzJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7CisgICAg
dm9pZCBydW5KYXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9p
ZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlv
bkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKICAg
ICB2b2lkIGZvcmNlUmVwYWludChSZWZQdHI8Vm9pZENhbGxiYWNrPiYmKTsKIAogICAgIGZsb2F0
IGhlYWRlckhlaWdodChXZWJGcmFtZVByb3h5Jik7CkBAIC0xOTQzLDcgKzE5NDQsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgYm9vbENhbGxiYWNrKGJvb2wgcmVzdWx0LCBDYWxsYmFja0lEKTsKICAg
ICB2b2lkIHN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQpOwogICAgIHZv
aWQgaW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKENhbGxiYWNrSUQpOwotICAgIHZvaWQgc2NyaXB0
VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBib29sIGhhZEV4Y2VwdGlv
biwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNrSUQpOworICAgIHZv
aWQgc2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBPcHRpb25h
bDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBjb21w
dXRlZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiwgZG91Ymxl
IHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRl
bnQmIGNvbXB1dGVkUGFnZU1hcmdpbiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCB2YWxpZGF0ZUNv
bW1hbmRDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBib29sLCBpbnQsIENhbGxiYWNrSUQpOwogICAg
IHZvaWQgdW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCwgQ2FsbGJhY2tJRCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMGM2NTFl
Njg1YjI5NzlmNGUzNmU5YzhhNTg2NDE2ZDY3MWJkZmZmNS4uNGRlZjVkYzAxZGI0ZDQyOWZiYjdk
NzE2OTM4YTExMTcwZDllYTIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTY5LDcgKzE2OSw3IEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2VQcm94eSB7CiAgICAgU3RyaW5nQ2FsbGJhY2soU3RyaW5nIHJlc3VsdFN0cmluZywgV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgQm9vbENhbGxiYWNrKGJvb2wgcmVzdWx0
LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBJbnZhbGlkYXRlU3RyaW5nQ2Fs
bGJhY2soV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgU2NyaXB0VmFsdWVDYWxs
YmFjayhJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwgYm9vbCBoYWRFeGNlcHRpb24sIHN0
cnVjdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzIGRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQorICAgIFNjcmlwdFZhbHVlQ2FsbGJhY2soSVBDOjpEYXRhUmVmZXJlbmNl
IHJlc3VsdERhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMs
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIENvbXB1dGVkUGFnZXNDYWxsYmFj
ayhWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gcGFnZVJlY3RzLCBkb3VibGUgdG90YWxTY2FsZUZh
Y3RvckZvclByaW50aW5nLCBXZWJDb3JlOjpSZWN0RWRnZXM8ZmxvYXQ+IGNvbXB1dGVkUGFnZU1h
cmdpbiwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgVmFsaWRhdGVDb21tYW5k
Q2FsbGJhY2soU3RyaW5nIGNvbW1hbmQsIGJvb2wgaXNFbmFibGVkLCBpbnQzMl90IHN0YXRlLCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBFZGl0aW5nUmFuZ2VDYWxsYmFjayhz
dHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90
ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9z
b2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCA1MGNhMmU0OTM4
Y2MzNTVjMTlkZTFjYTdiYmM0Mzk3Y2MwNGJiOTNjLi4zYWJlZTQ4NmY1ZWM4YjZlNGYwZTVkOWEx
NDcwMzc4M2U4NGE4MGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2Nr
ZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcApAQCAt
OTAsOSArOTAsOSBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6aW5zcGVj
dChjb25zdCBTdHJpbmcmIGhvc3RBbmRQb3J0LCBDb25uZWN0aQogdm9pZCBSZW1vdGVJbnNwZWN0
b3JQcm90b2NvbEhhbmRsZXI6OnJ1blNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCkKIHsKICAg
ICBtX3BhZ2UucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHNjcmlwdCwgZmFsc2UsCi0gICAgICAg
IFtdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0
IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmIGV4Y2VwdGlvbkRldGFpbHMsIENhbGxiYWNrQmFz
ZTo6RXJyb3IpIHsKLSAgICAgICAgICAgIGlmIChoYWRFeGNlcHRpb24pCi0gICAgICAgICAgICAg
ICAgTE9HX0VSUk9SKCJFeGNlcHRpb24gcnVubmluZyBzY3JpcHQgXCIlc1wiIiwgZXhjZXB0aW9u
RGV0YWlscy5tZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBbXShBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGV4Y2Vw
dGlvbkRldGFpbHMsIENhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICAgICAgICAgIGlmIChleGNl
cHRpb25EZXRhaWxzKQorICAgICAgICAgICAgICAgIExPR19FUlJPUigiRXhjZXB0aW9uIHJ1bm5p
bmcgc2NyaXB0IFwiJXNcIiIsIGV4Y2VwdGlvbkRldGFpbHMtPm1lc3NhZ2UudXRmOCgpLmRhdGEo
KSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAKaW5kZXggODhlMTNhZDgyYWRjZWM0ZmJlZTY4NWYyYzdiZTQ1OThmOGQ0
Y2JiZi4uM2VhMDA2YjNjZTM4ZTM4OTQxZmRiZDU4NjczY2Q4MWE2ODJjMjUzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTEyNTMs
NyArMTI1Myw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybUphdmFTY3JpcHRVUkxSZXF1ZXN0
KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiAgICAgLy8gRXZhbHVhdGUgdGhlIEphdmFTY3JpcHQgY29k
ZS4gTm90ZSB0aGF0IHJ1bm5pbmcgSmF2YVNjcmlwdCBoZXJlIGNvdWxkIGNhdXNlIHRoZSBwbHVn
LWluIHRvIGJlIGRlc3Ryb3llZCwgc28gd2UKICAgICAvLyBncmFiIHJlZmVyZW5jZXMgdG8gdGhl
IHBsdWctaW4gaGVyZS4KICAgICBSZWZQdHI8UGx1Z2luPiBwbHVnaW4gPSBtX3BsdWdpbjsKLSAg
ICBhdXRvIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGpzU3RyaW5nLCBy
ZXF1ZXN0LT5hbGxvd1BvcHVwcygpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQo
KS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oanNTdHJpbmcsIHJlcXVlc3QtPmFsbG93
UG9wdXBzKCkpOwogCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvckZyb250ZW5k
QVBJRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJ
bnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwCmluZGV4IDkwOGUzOWFmZGIwYzg4OWNm
ZTU2NTJiMzlhZGM0NzBjM2EwOWE5YTIuLmMxODllOTgyNWFkNDk0NzBlZDYyNDM1ZTg2ZDU5ZGY2
MGYzOGFlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Ykluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcApA
QCAtOTksNyArOTksNyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6
ZXZhbHVhdGVPclF1ZXVlRXhwcmVzc2lvbihjb25zdCBTdHJpbmcmCiAKICAgICBBU1NFUlQobV9x
dWV1ZS5pc0VtcHR5KCkpOwogICAgIEFTU0VSVCghbV9wYWdlLmNvcmVQYWdlKCktPm1haW5GcmFt
ZSgpLnNjcmlwdCgpLmlzUGF1c2VkKCkpOwotICAgIG1fcGFnZS5jb3JlUGFnZSgpLT5tYWluRnJh
bWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGV4cHJlc3Npb24pOworICAgIG1fcGFnZS5jb3Jl
UGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRp
b24oZXhwcmVzc2lvbik7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRj
aGVyOjpldmFsdWF0ZVF1ZXVlZEV4cHJlc3Npb25zKCkKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lk
IFdlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6ZXZhbHVhdGVRdWV1ZWRFeHByZXNz
aW9ucygpCiAKICAgICBmb3IgKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiA6IG1fcXVldWUpIHsK
ICAgICAgICAgQVNTRVJUKCFtX3BhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCku
aXNQYXVzZWQoKSk7Ci0gICAgICAgIG1fcGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5zY3Jp
cHQoKS5leGVjdXRlU2NyaXB0KGV4cHJlc3Npb24pOworICAgICAgICBtX3BhZ2UuY29yZVBhZ2Uo
KS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGV4
cHJlc3Npb24pOwogICAgIH0KIAogICAgIG1fcXVldWUuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNzM1ZmVhNGVlMTNiZTQyNWMy
MzRiZTkyMTIwZmU5ZTdiY2EyZDVjNy4uOTE4ZjA4ZTM2ZTM2MjFlYWU1MDhkMGU1MzFjNzMyYWFk
MTRjNGYzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKQEAgLTMzNTMsMjMgKzMzNTMsMjggQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdl
YkZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2UKICAgICAv
LyBOT1RFOiBXZSBuZWVkIHRvIGJlIGNhcmVmdWwgd2hlbiBydW5uaW5nIHNjcmlwdHMgdGhhdCB0
aGUgb2JqZWN0cyB3ZSBkZXBlbmQgb24gZG9uJ3QKICAgICAvLyBkaXNhcHBlYXIgZHVyaW5nIHNj
cmlwdCBleGVjdXRpb24uCiAKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJp
YWxpemVkUmVzdWx0VmFsdWU7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soY29tbW9uVk0oKSk7Ci0g
ICAgYm9vbCBoYWRFeGNlcHRpb24gPSB0cnVlOwotICAgIEV4Y2VwdGlvbkRldGFpbHMgZGV0YWls
czsKKyAgICBWYWx1ZU9yRXhjZXB0aW9uIHJlc3VsdDsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBzZXJpYWxpemVkUmVzdWx0VmFsdWU7CisKICAgICBhdXRvKiB3b3JsZCA9IHdv
cmxkTmFtZSA/IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmZpbmQod29ybGROYW1lLnZhbHVl
KCkpIDogJkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCk7CiAgICAgaWYg
KGZyYW1lICYmIGZyYW1lLT5jb3JlRnJhbWUoKSAmJiB3b3JsZCkgewotICAgICAgICBpZiAoSlNW
YWx1ZSByZXN1bHRWYWx1ZSA9IGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZXhlY3V0ZVVz
ZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgpLCBzY3JpcHQsIGZvcmNlVXNl
ckdlc3R1cmUsICZkZXRhaWxzKSkgewotICAgICAgICAgICAgaGFkRXhjZXB0aW9uID0gZmFsc2U7
CisgICAgICAgIHJlc3VsdCA9IGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZXhlY3V0ZVVz
ZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgpLCBzY3JpcHQsIGZvcmNlVXNl
ckdlc3R1cmUpOworICAgICAgICBpZiAocmVzdWx0KSB7CiAgICAgICAgICAgICBzZXJpYWxpemVk
UmVzdWx0VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShmcmFtZS0+anNDb250
ZXh0Rm9yV29ybGQod29ybGQpLAotICAgICAgICAgICAgICAgIHRvUmVmKGZyYW1lLT5jb3JlRnJh
bWUoKS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkLT5jb3JlV29ybGQoKSksIHJlc3VsdFZh
bHVlKSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgdG9SZWYoZnJhbWUtPmNvcmVGcmFtZSgp
LT5zY3JpcHQoKS5nbG9iYWxPYmplY3Qod29ybGQtPmNvcmVXb3JsZCgpKSwgcmVzdWx0LnZhbHVl
KCkpLCBudWxscHRyKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIElQQzo6RGF0YVJlZmVyZW5j
ZSBkYXRhUmVmZXJlbmNlOwogICAgIGlmIChzZXJpYWxpemVkUmVzdWx0VmFsdWUpCiAgICAgICAg
IGRhdGFSZWZlcmVuY2UgPSBzZXJpYWxpemVkUmVzdWx0VmFsdWUtPmRhdGEoKTsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0YVJlZmVyZW5j
ZSwgaGFkRXhjZXB0aW9uLCBkZXRhaWxzLCBjYWxsYmFja0lEKSk7CisKKyAgICBPcHRpb25hbDxF
eGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzOworICAgIGlmICghcmVzdWx0KQorICAgICAgICBkZXRh
aWxzID0gcmVzdWx0LmVycm9yKCk7CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgZGV0YWlscywgY2FsbGJhY2tJRCkp
OwogfQogCiB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxk
KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIGNvbnN0IE9wdGlv
bmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Lm1tCmluZGV4IDk0N2JmYzUzNDJjYmNhYzA5YWFhZjUxMmNjZGI2ZGZlOWNiMWNh
NDEuLmVhNTA3OGVkMThmNTUwNTJkZjJlNDI4MTNlMmE2ZjcwODU1Y2U3Y2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQubW0KQEAgLTM3OSw3ICszNzksNyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50OjpzYXZlKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcm
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgW2NvbnRlbnRDb3B5IHdyaXRlVG9VUkw6YWN0
dWFsVVJMIGF0b21pY2FsbHk6WUVTIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9y
Ok5VTExdOwogCi0gICAgICAgIGNvcmUoW21fZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyIGZyb250
ZW5kV2ViVmlld10pLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuc2F2ZWRVUkwoXCIlQFwi
KSIsIGFjdHVhbFVSTC5hYnNvbHV0ZVN0cmluZ10pOworICAgICAgICBjb3JlKFttX2Zyb250ZW5k
V2luZG93Q29udHJvbGxlciBmcm9udGVuZFdlYlZpZXddKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCku
ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuc2F2ZWRVUkwoXCIlQFwiKSIsIGFjdHVhbFVSTC5hYnNv
bHV0ZVN0cmluZ10pOwogICAgIH07CiAKICAgICBpZiAoIWZvcmNlU2F2ZURpYWxvZykgewpAQCAt
NDI1LDcgKzQyNSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZChj
b25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nCiAgICAgW2hhbmRsZSB3cml0
ZURhdGE6W2NvbnRlbnQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsK
ICAgICBbaGFuZGxlIGNsb3NlRmlsZV07CiAKLSAgICBjb3JlKFttX2Zyb250ZW5kV2luZG93Q29u
dHJvbGxlciBmcm9udGVuZFdlYlZpZXddKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNj
cmlwdChbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3BlY3RvckZyb250ZW5kQVBJLmFw
cGVuZGVkVG9VUkwoXCIlQFwiKSIsIFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddXSk7CisgICAg
Y29yZShbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIgZnJvbnRlbmRXZWJWaWV3XSktPm1haW5G
cmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAIkluc3BlY3RvckZyb250ZW5kQVBJLmFwcGVuZGVkVG9VUkwoXCIl
QFwiKSIsIFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddXSk7CiB9CiAKIC8vIE1BUks6IC0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDE4ZDNkOWVj
MTRkOGM2OTVkMDNmOTNjM2RkMjAxNmFkNDA5NGE0NTguLjc4Y2MzM2ViYTE1YTZlMGYxNjJhNjA5
ZDM4YjJlN2NlMDg1YzNmMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbQpAQCAtNzAwLDcgKzcwMCw3IEBAIC0gKE5TU3RyaW5nICopX3N0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBmb3JjZVVzCiAg
ICAgSlNDOjpKU0xvY2tIb2xkZXIganNjTG9jayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICNlbmRp
ZgogCi0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPnNjcmlw
dCgpLmV4ZWN1dGVTY3JpcHQoc3RyaW5nLCBmb3JjZVVzZXJHZXN0dXJlKTsKKyAgICBKU0M6OkpT
VmFsdWUgcmVzdWx0ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlw
dElnbm9yaW5nRXhjZXB0aW9uKHN0cmluZywgZm9yY2VVc2VyR2VzdHVyZSk7CiAKICAgICBpZiAo
IV9wcml2YXRlLT5jb3JlRnJhbWUpIC8vIEluIGNhc2UgdGhlIHNjcmlwdCByZW1vdmVkIG91ciBm
cmFtZSBmcm9tIHRoZSBwYWdlLgogICAgICAgICByZXR1cm4gQCIiOwpAQCAtMjA5Niw3ICsyMDk2
LDcgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJp
bmc6KE5TU3RyaW5nICopc3RyaW5nIHdpdGhHbG8KICAgICBBU1NFUlQoZnJhbWUtPmRvY3VtZW50
KCkpOwogICAgIFJldGFpblB0cjxXZWJGcmFtZT4gd2ViRnJhbWUoa2l0KGZyYW1lKSk7IC8vIFJ1
bm5pbmcgYXJiaXRyYXJ5IEphdmFTY3JpcHQgY2FuIGRlc3Ryb3kgdGhlIGZyYW1lLgogCi0gICAg
SlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlVXNlckFnZW50U2Ny
aXB0SW5Xb3JsZCgqY29yZSh3b3JsZCksIHN0cmluZywgdHJ1ZSk7CisgICAgSlNDOjpKU1ZhbHVl
IHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZEln
bm9yaW5nRXhjZXB0aW9uKCpjb3JlKHdvcmxkKSwgc3RyaW5nLCB0cnVlKTsKIAogICAgIGlmICgh
d2ViRnJhbWUtPl9wcml2YXRlLT5jb3JlRnJhbWUpIC8vIEluIGNhc2UgdGhlIHNjcmlwdCByZW1v
dmVkIG91ciBmcmFtZSBmcm9tIHRoZSBwYWdlLgogICAgICAgICByZXR1cm4gQCIiOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDQ3YWFlMzI4ZGJjNmFj
ZmJlYWJiM2FlYzZkMjc4M2NiNGY1OWYwNzEuLjk2MWUwNWNmMWMyMjlkZTExMDQ2YjdjNGZiODM0
ZjUzMzliYjgyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KQEAgLTc5MDgsNyArNzkwOCw3IEBAIC0gKE5TQXBwbGVFdmVudERlc2NyaXB0b3IgKilhZURl
c2NCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzooTlNTdHJpbmcgKilzCiAgICAgICAg
IHJldHVybiBuaWw7CiAgICAgaWYgKCFjb3JlRnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGNvcmVGcmFtZS0+c2NyaXB0KCku
ZXhlY3V0ZVNjcmlwdChzY3JpcHQsIHRydWUpOworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBj
b3JlRnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihzY3JpcHQs
IHRydWUpOwogICAgIGlmICghcmVzdWx0KSAvLyBGSVhNRTogcGFzcyBlcnJvcnMKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhjb3JlRnJhbWUtPnNjcmlwdCgp
Lmdsb2JhbE9iamVjdChXZWJDb3JlOjptYWluVGhyZWFkTm9ybWFsV29ybGQoKSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZTVlZjYz
YjRjZDg2NzE3YjM2MGIwOTljODYyZTI3YTYzNTExNTA0My4uODE2MGRhMTRhYzAwOTM5NjgwYzIy
ZGVkYzJhMjVkM2MzYTZlMzBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwCkBAIC00MzksNyArNDM5LDcgQEAgdm9pZCBQbHVnaW5WaWV3Ojpw
ZXJmb3JtUmVxdWVzdChQbHVnaW5SZXF1ZXN0KiByZXF1ZXN0KQogICAgIAogICAgIC8vIEV4ZWN1
dGluZyBhIHNjcmlwdCBjYW4gY2F1c2UgdGhlIHBsdWdpbiB2aWV3IHRvIGJlIGRlc3Ryb3llZCwg
c28gd2Uga2VlcCBhIHJlZmVyZW5jZSB0byBpdC4KICAgICBSZWZQdHI8UGx1Z2luVmlldz4gcHJv
dGVjdG9yKHRoaXMpOwotICAgIGF1dG8gcmVzdWx0ID0gbV9wYXJlbnRGcmFtZS0+c2NyaXB0KCku
ZXhlY3V0ZVNjcmlwdChqc1N0cmluZywgcmVxdWVzdC0+c2hvdWxkQWxsb3dQb3B1cHMoKSk7Cisg
ICAgYXV0byByZXN1bHQgPSBtX3BhcmVudEZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdu
b3JpbmdFeGNlcHRpb24oanNTdHJpbmcsIHJlcXVlc3QtPnNob3VsZEFsbG93UG9wdXBzKCkpOwog
CiAgICAgaWYgKHRhcmdldEZyYW1lTmFtZS5pc051bGwoKSkgewogICAgICAgICBDU3RyaW5nIGNz
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggNmVmYWU4ZjYyMjk4NDlj
YTFmNTk2YjczNTVjZWVmNDNjZmQ2OTBhOC4uYzc3OGUyMmI3MGRjZjE4NTUyMmNhNmUyMDliODcw
OTE5NWI1MTQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAtMjA1NSw3
ICsyMDU1LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dEluU2NyaXB0V29ybGQoSVdlYlNjcmlwdFdvcmxkKiBpV28KICAgICAvLyBHZXQgdGhlIGZyYW1l
IGZyb21lIHRoZSBnbG9iYWwgb2JqZWN0IHdlJ3ZlIHNldHRsZWQgb24uCiAgICAgRnJhbWUqIGZy
YW1lID0gYW55V29ybGRHbG9iYWxPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpOwogICAgIEFTU0VS
VChmcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBmcmFtZS0+c2NyaXB0
KCkuZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQtPndvcmxkKCksIHN0cmluZywgdHJ1ZSk7Cisg
ICAgSlNWYWx1ZSByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdEluV29ybGRJ
Z25vcmluZ0V4Y2VwdGlvbih3b3JsZC0+d29ybGQoKSwgc3RyaW5nLCB0cnVlKTsKIAogICAgIGlm
ICghZnJhbWUpIC8vIEluIGNhc2UgdGhlIHNjcmlwdCByZW1vdmVkIG91ciBmcmFtZSBmcm9tIHRo
ZSBwYWdlLgogICAgICAgICByZXR1cm4gU19PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5j
cHAKaW5kZXggYTA0NDhiYjAxM2VkZmI0MzM1ZmJjOWFiYzhhN2UzMDgwNzdmMDA0My4uZTcyZWE0
M2VkYjc5YzhhMDIxY2M2ZGZjMThhOTlkNWJjMDhlM2ZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViVmlldy5jcHAKQEAgLTM2NjMsNyArMzY2Myw3IEBAIEhSRVNVTFQgV2ViVmlldzo6c3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmcoX0luXyBCU1RSIHNjcmlwdCwgLy8gYXNz
CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKLSAg
ICBhdXRvIHNjcmlwdEV4ZWN1dGlvblJlc3VsdCA9IGNvcmVGcmFtZS0+c2NyaXB0KCkuZXhlY3V0
ZVNjcmlwdChXVEY6OlN0cmluZyhzY3JpcHQpLCB0cnVlKTsKKyAgICBhdXRvIHNjcmlwdEV4ZWN1
dGlvblJlc3VsdCA9IGNvcmVGcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhj
ZXB0aW9uKFdURjo6U3RyaW5nKHNjcmlwdCksIHRydWUpOwogICAgIGlmICghc2NyaXB0RXhlY3V0
aW9uUmVzdWx0KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogICAgIGVsc2UgaWYgKHNjcmlwdEV4
ZWN1dGlvblJlc3VsdC5pc1N0cmluZygpKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385648</attachid>
            <date>2019-12-13 15:28:40 -0800</date>
            <delta_ts>2019-12-13 16:15:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205151-20191213152839.patch</filename>
            <type>text/plain</type>
            <size>54250</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjU5MGYyYWFjZjNmZTJj
NWE4ZDlkYWUwZjFmOGM4NDY0YTY1MGE3YS4uNWQ1MDAyYmY2MjUyNzA3NWJmODQ4NmExNTZiZjM1
NDRkYTU4YTAxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE5LTEyLTEzICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRD
b250cm9sbGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChS
ZWZhY3Rvciwgbm8gYmVoYXZpb3IgY2hhbmdlKS4KKworICAgICAgICBUaGVyZSdzIHNvIG1hbnkg
RXhjZXB0aW9uRGV0YWlscyogbnVsbCBwb2ludGVycyBiZWluZyBwYXNzZWQgYXJvdW5kIGluIHRo
ZSBTY3JpcHRDb250cm9sbGVyCisgICAgICAgIGZhbWlseSBvZiBmdW5jdGlvbnMuCisKKyAgICAg
ICAgTGV0J3MgbWFrZSBpdCBhIGxpdHRsZSBtb3JlIGV4cGxpY2l0IHdoaWNoIGNhbGxlcnMgZ2V0
IGV4Y2VwdGlvbnMgYW5kIHdoaWNoIGRvbid0LgorCisKKyAgICAgICAgKiBNb2R1bGVzL3BsdWdp
bnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW06CisgICAgICAgIChXZWJDb3JlOjpRdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6ZW5zdXJlUmVwbGFjZW1lbnRTY3JpcHRJbmplY3RlZCk6
CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKToKKworICAgICAgICAqIGJpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJv
bGxlcjo6ZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4
Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2Ny
aXB0SW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRl
VXNlckFnZW50U2NyaXB0SW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9s
bGVyOjpleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgIAorICAgICAgICAqIGNv
bnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9j
ZXNzQ29udGVudFJ1bGVMaXN0c0ZvckxvYWQpOgorICAgICAgICAKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZVBsdWdJbnNJbmpl
Y3RlZFNjcmlwdCk6CisgICAgICAgIAorICAgICAgICAqIGRvbS9TY3JpcHRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVDbGFzc2ljU2NyaXB0KToK
KyAgICAgICAgCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZU1lZGlhQ29udHJvbHNJbmplY3RlZFNj
cmlwdCk6CisgICAgICAgIAorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWw6OmV2YWx1YXRlQXNCb29sZWFuKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWw6OmV2YWx1YXRlT25Mb2FkKToKKyAgICAgICAgCisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQpOgorICAg
ICAgICAKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RmlsdGVyOjpkaWREZWNpZGUpOgorICAgICAgICAKKyAgICAgICAgKiBwYWdl
L0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjppbmplY3RVc2VyU2NyaXB0SW1t
ZWRpYXRlbHkpOgorICAgICAgICAKKyAgICAgICAgKiB4bWwvWE1MVHJlZVZpZXdlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpYTUxUcmVlVmlld2VyOjp0cmFuc2Zvcm1Eb2N1bWVudFRvVHJlZVZp
ZXcpOgorCiAyMDE5LTEyLTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgVHJ5aW5nIHRvIHNldCB0b1N0cmluZyAvIHZhbHVlT2Ygb24gYSBjcm9zcy1vcmlnaW4g
TG9jYXRpb24gb2JqZWN0IHNob3VsZCB0aHJvdyBhIFNlY3VyaXR5RXJyb3IKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
OGQ3NjJhZDlhMzg2ODM0OTI1OGMwMmM5NjJmOTVmZjkzYWYyNTczNy4uYzUxMTVmZmFlNDIzZTU2
MjBhODUyMjQzZDA2YjZiMjZlNGY5ZTkzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAx
OS0xMi0xMyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVm
YWN0b3IgU2NyaXB0Q29udHJvbGxlcidzIHByb2xpZmVyYXRpb24gb2YgRXhjZXB0aW9uRGV0YWls
cyouCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUx
NTEKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VSdW5KYXZhU2NyaXB0
SW5NYWluRnJhbWUpOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW06CisgICAgICAgICgtW1dLV2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmZvcmNlVXNlckdl
c3R1cmU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0
SW5NYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3Jp
cHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpydW5KYXZhU2NyaXB0SW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpblZpZXc6OnBlcmZvcm1KYXZhU2NyaXB0VVJMUmVxdWVzdCk6CisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpl
dmFsdWF0ZU9yUXVldWVFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
RnJvbnRlbmRBUElEaXNwYXRjaGVyOjpldmFsdWF0ZVF1ZXVlZEV4cHJlc3Npb25zKToKKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cnVuSmF2YVNjcmlwdCk6CisKIDIwMTktMTItMTEgIEppZXdlbiBUYW4gIDxqaWV3
ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBhIG5pdCBhZnRlciByMjUz
MzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYjlkYWUyY2UxMGUwODcyZDM1MzA4
YzhjOGNjNjBkZTIwZjI1Zjc3NS4uYmU2MDE1YzA4ODVlYTI5MDZhY2NhZDg3ZmU1MzliYTAwYWEz
ZjkyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5
LTEyLTEzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZh
Y3RvciBTY3JpcHRDb250cm9sbGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxz
Ki4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1
MQorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW06CisgICAgICAgIChXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudDo6c2F2ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudDo6YXBwZW5kKToKKyAgICAgICAgCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToK
KyAgICAgICAgKC1bV2ViRnJhbWUgX3N0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3Ry
aW5nOmZvcmNlVXNlckdlc3R1cmU6XSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9zdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzp3aXRoR2xvYmFsT2JqZWN0OmluU2NyaXB0V29y
bGQ6XSk6CisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZp
ZXcgYWVEZXNjQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6XSk6CisKIDIwMTktMTIt
MDkgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVu
YW1lIG1lZGlhIGluIHRoZSBHUFUgcHJvY2VzcyBwcmVmZXJlbmNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
aGFuZ2VMb2cKaW5kZXggNDIwMTRkOTlkNTAyMTZmYTkyZDQ5YTU5MmEwMDY3ODE5MmQ2NGQ0MS4u
MWUyOTI1MjQ2NjljOTcwMzkxMDkzZTJmMGYzM2ZhMzAwZjJiMGE0NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE5LTEyLTEzICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRDb250cm9sbGVy
J3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblZpZXcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QpOgorCisgICAg
ICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OnN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHRJblNjcmlwdFdvcmxkKToKKworICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAg
ICAgICAoV2ViVmlldzo6c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmcpOgor
ICAgICAgICAKIDIwMTktMTItMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBQYWdlQ29uZmlndXJhdGlvbjo6ZHJhZ0NsaWVudCBzaG91bGQgdXNlIGEgc21hcnQg
cG9pbnRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5z
L1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCmluZGV4IDk4MTI2ZTAzZjNlMzIxNDc1Zjc1
MTE0NjQyYWQ4ZDBiMjQ4YmFkMjMuLjAzZDIxZGU3ZDVhYzA2OWIyY2FhM2Q5NjExYjk4Zjg0YTM1
MTdmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1Rp
bWVQbHVnaW5SZXBsYWNlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdp
bnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KQEAgLTE1OCw3ICsxNTgsNyBAQCBib29s
IFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjplbnN1cmVSZXBsYWNlbWVudFNjcmlwdEluamVj
dGVkKCkKICAgICBpZiAocmVwbGFjZW1lbnRGdW5jdGlvbi5pc0Z1bmN0aW9uKHZtKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgCi0gICAgc2NyaXB0Q29udHJvbGxlci5ldmFsdWF0ZUluV29y
bGQoU2NyaXB0U291cmNlQ29kZShxdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudFNjcmlwdCgpKSwg
d29ybGQpOworICAgIHNjcmlwdENvbnRyb2xsZXIuZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNl
cHRpb24oU2NyaXB0U291cmNlQ29kZShxdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudFNjcmlwdCgp
KSwgd29ybGQpOwogICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAg
ICAgTE9HKFBsdWdpbnMsICIlcCAtIEV4Y2VwdGlvbiB3aGVuIGV2YWx1YXRpbmcgUXVpY2tUaW1l
IHBsdWdpbiByZXBsYWNlbWVudCBzY3JpcHQiLCB0aGlzKTsKICAgICAgICAgc2NvcGUuY2xlYXJF
eGNlcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVk
dWxlZEFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rp
b24uY3BwCmluZGV4IDI4Y2Y1NjQ2NmJjYTNjOWMyZDIwODg5NTFjOTgwODJmZGI1MWE4NTYuLjhl
NGM3YjM4MTI0NGU3NzZiZGQ1ODM0YWU0MTkzNmQ3ZGNjNjIyOGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBA
IHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICBp
ZiAobV9mdW5jdGlvbikKICAgICAgICAgZXhlY3V0ZUZ1bmN0aW9uSW5Db250ZXh0KHdpbmRvdywg
d2luZG93LT5wcm94eSgpLCBkb2N1bWVudCk7CiAgICAgZWxzZQotICAgICAgICBmcmFtZS0+c2Ny
aXB0KCkuZXhlY3V0ZVNjcmlwdEluV29ybGQobV9pc29sYXRlZFdvcmxkLCBtX2NvZGUpOworICAg
ICAgICBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlv
bihtX2lzb2xhdGVkV29ybGQsIG1fY29kZSk7CiB9CiAKIHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpl
eGVjdXRlKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggYjFmZGU4NTAy
ZTRkYTBiMGY2OWY0ODE2ZDRhNDEyZWM0ZWU0YzczZi4uMDY0ZWRkYjQ5M2VhZTYxYTQ4ZWYxZWI2
ZDdmMzg5NGZkZGYxNjcyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5jcHAKQEAgLTEwNyw3ICsxMDcsMTMgQEAgU2NyaXB0Q29udHJvbGxlcjo6
flNjcmlwdENvbnRyb2xsZXIoKQogICAgIH0KIH0KIAotSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVy
OjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCwgRXhjZXB0aW9uRGV0YWlscyogZXhjZXB0aW9uRGV0YWlscykK
K0pTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4
Y2VwdGlvbihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBET01XcmFwcGVyV29y
bGQmIHdvcmxkKQoreworICAgIGF1dG8gcmVzdWx0ID0gZXZhbHVhdGVJbldvcmxkKHNvdXJjZUNv
ZGUsIHdvcmxkKTsKKyAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0LnZhbHVlKCkgOiBKU0M6OkpT
VmFsdWUgeyB9OworfQorCitWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1
YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBET01XcmFwcGVy
V29ybGQmIHdvcmxkKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHdvcmxkLnZtKCkpOwogCkBA
IC0xMzUsMTkgKzE0MSwyMyBAQCBKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5X
b3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBETwogCiAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFsdWF0ZVNjcmlwdChtX2ZyYW1lKTsKIAorICAgIE9w
dGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IG9wdGlvbmFsRGV0YWlsczsKICAgICBpZiAoZXZhbHVh
dGlvbkV4Y2VwdGlvbikgewotICAgICAgICByZXBvcnRFeGNlcHRpb24oJmdsb2JhbE9iamVjdCwg
ZXZhbHVhdGlvbkV4Y2VwdGlvbiwgc291cmNlQ29kZS5jYWNoZWRTY3JpcHQoKSwgZXhjZXB0aW9u
RGV0YWlscyk7Ci0gICAgICAgIG1fc291cmNlVVJMID0gc2F2ZWRTb3VyY2VVUkw7Ci0gICAgICAg
IHJldHVybiB7IH07CisgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZGV0YWlsczsKKyAgICAgICAg
cmVwb3J0RXhjZXB0aW9uKCZnbG9iYWxPYmplY3QsIGV2YWx1YXRpb25FeGNlcHRpb24sIHNvdXJj
ZUNvZGUuY2FjaGVkU2NyaXB0KCksICZkZXRhaWxzKTsKKyAgICAgICAgb3B0aW9uYWxEZXRhaWxz
ID0gV1RGTW92ZShkZXRhaWxzKTsKICAgICB9CiAKICAgICBtX3NvdXJjZVVSTCA9IHNhdmVkU291
cmNlVVJMOworICAgIGlmIChvcHRpb25hbERldGFpbHMpCisgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZCgqb3B0aW9uYWxEZXRhaWxzKTsKKwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0K
IAotSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VD
b2RlJiBzb3VyY2VDb2RlLCBFeGNlcHRpb25EZXRhaWxzKiBleGNlcHRpb25EZXRhaWxzKQorSlND
OjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oY29u
c3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKIHsKLSAgICByZXR1cm4gZXZhbHVhdGVJ
bldvcmxkKHNvdXJjZUNvZGUsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBleGNlcHRpb25EZXRh
aWxzKTsKKyAgICByZXR1cm4gZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oc291cmNl
Q29kZSwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwogfQogCiB2b2lkIFNjcmlwdENvbnRyb2xs
ZXI6OmxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0JiBtb2R1bGVT
Y3JpcHQsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgUmVmPE1vZHVsZUZldGNoUGFyYW1ldGVy
cz4mJiB0b3BMZXZlbEZldGNoUGFyYW1ldGVycywgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKQEAg
LTU0OCwyNSArNTU4LDQyIEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJTY3JpcHRPYmpl
Y3RzKCkKICNlbmRpZgogfQogCi1KU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3Jp
cHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBi
b29sIGZvcmNlVXNlckdlc3R1cmUsIEV4Y2VwdGlvbkRldGFpbHMqIGV4Y2VwdGlvbkRldGFpbHMp
CitKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhj
ZXB0aW9uKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCit7Cisg
ICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24obWFpblRocmVh
ZE5vcm1hbFdvcmxkKCksIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7Cit9CisKK0pTQzo6SlNW
YWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0
aW9uKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZv
cmNlVXNlckdlc3R1cmUpCit7CisgICAgYXV0byByZXN1bHQgPSBleGVjdXRlU2NyaXB0SW5Xb3Js
ZCh3b3JsZCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlKTsKKyAgICByZXR1cm4gcmVzdWx0ID8g
cmVzdWx0LnZhbHVlKCkgOiBKU0M6OkpTVmFsdWUgeyB9OworfQorCitWYWx1ZU9yRXhjZXB0aW9u
IFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYg
d29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiB7CiAg
ICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihmb3JjZVVzZXJHZXN0dXJl
ID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSkgOiBXVEY6Om51bGxvcHQpOwogICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNlQ29kZShz
Y3JpcHQsIFVSTChtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpKSwgVGV4dFBvc2l0aW9uKCksIEpT
Qzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtLCBDYWNoZWRTY3JpcHRGZXRjaGVy
OjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5jaGFyc2V0KCkpKTsKIAorICAgIC8vIEZJWE1F
OiBJbnN0ZWFkIG9mIHJldHVybmluZyBhbiBlbXB0eSBKU1ZhbHVlLCBzaG91bGQgcmV0dXJuIGFu
IEV4Y2VwdGlvbkRldGFpbHMuCiAgICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhl
Y3V0ZVNjcmlwdCkgfHwgaXNQYXVzZWQoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJl
dHVybiBldmFsdWF0ZUluV29ybGQoc291cmNlQ29kZSwgd29ybGQsIGV4Y2VwdGlvbkRldGFpbHMp
OworICAgIHJldHVybiBldmFsdWF0ZUluV29ybGQoc291cmNlQ29kZSwgd29ybGQpOwogfQogCi1K
U1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERP
TVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNl
ckdlc3R1cmUsIEV4Y2VwdGlvbkRldGFpbHMqIGV4Y2VwdGlvbkRldGFpbHMpCitKU0M6OkpTVmFs
dWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmlu
Z0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlKQoreworICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0ZVVzZXJB
Z2VudFNjcmlwdEluV29ybGQod29ybGQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7CisgICAg
cmV0dXJuIHJlc3VsdCA/IHJlc3VsdC52YWx1ZSgpIDogSlNDOjpKU1ZhbHVlIHsgfTsKK30KK1Zh
bHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdElu
V29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wg
Zm9yY2VVc2VyR2VzdHVyZSkKIHsKICAgICBhdXRvJiBkb2N1bWVudCA9ICptX2ZyYW1lLmRvY3Vt
ZW50KCk7CiAgICAgaWYgKCFzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoZG9jdW1lbnQpKQot
ICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0
aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gcnVuIHVzZXIgYWdlbnQgc2NyaXB0cyBpbiB0aGlzIGRv
Y3VtZW50IGZvciBzZWN1cml0eSByZWFzb25zIl9zIH0pOwogCiAgICAgZG9jdW1lbnQuc2V0SGFz
RXZhbHVhdGVkVXNlckFnZW50U2NyaXB0cygpOwotICAgIHJldHVybiBleGVjdXRlU2NyaXB0SW5X
b3JsZCh3b3JsZCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBleGNlcHRpb25EZXRhaWxzKTsK
KyAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQsIHNjcmlwdCwgZm9yY2VVc2Vy
R2VzdHVyZSk7CiB9CiAKIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6c2hvdWxkQWxsb3dVc2VyQWdl
bnRTY3JpcHRzKERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKQEAgLTU5OCwyNCArNjI1LDYgQEAg
Ym9vbCBTY3JpcHRDb250cm9sbGVyOjpjYW5FeGVjdXRlU2NyaXB0cyhSZWFzb25Gb3JDYWxsaW5n
Q2FuRXhlY3V0ZVNjcmlwdHMgcmVhc28KICAgICByZXR1cm4gbV9mcmFtZS5sb2FkZXIoKS5jbGll
bnQoKS5hbGxvd1NjcmlwdChtX2ZyYW1lLnNldHRpbmdzKCkuaXNTY3JpcHRFbmFibGVkKCkpOwog
fQogCi1KU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU3RyaW5n
JiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgRXhjZXB0aW9uRGV0YWlscyogZXhjZXB0
aW9uRGV0YWlscykKLXsKLSAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9y
KGZvcmNlVXNlckdlc3R1cmUgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4o
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6IFdURjo6bnVsbG9wdCk7Ci0gICAgcmV0dXJuIGV4ZWN1
dGVTY3JpcHQoU2NyaXB0U291cmNlQ29kZShzY3JpcHQsIFVSTChtX2ZyYW1lLmRvY3VtZW50KCkt
PnVybCgpKSwgVGV4dFBvc2l0aW9uKCksIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQ
cm9ncmFtLCBDYWNoZWRTY3JpcHRGZXRjaGVyOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5j
aGFyc2V0KCkpKSwgZXhjZXB0aW9uRGV0YWlscyk7Ci19Ci0KLUpTVmFsdWUgU2NyaXB0Q29udHJv
bGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBF
eGNlcHRpb25EZXRhaWxzKiBleGNlcHRpb25EZXRhaWxzKQotewotICAgIGlmICghY2FuRXhlY3V0
ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpIHx8IGlzUGF1c2VkKCkpCi0gICAgICAgIHJl
dHVybiB7IH07IC8vIEZJWE1FOiBXb3VsZCBqc051bGwgYmUgYmV0dGVyPwotCi0gICAgLy8gRklY
TUU6IFByZXZlbnRpbmcgRnJhbWUgZnJvbSBiZWluZyBkZXN0cm95ZWQgaXMgZXNzZW50aWFsbHkg
dW5uZWNlc3NhcnkuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NDc2MwotICAgIFJlZjxGcmFtZT4gcHJvdGVjdG9yKG1fZnJhbWUpOyAvLyBTY3JpcHQg
ZXhlY3V0aW9uIGNhbiBkZXN0cm95IHRoZSBmcmFtZSwgYW5kIHRodXMgdGhlIFNjcmlwdENvbnRy
b2xsZXIuCi0KLSAgICByZXR1cm4gZXZhbHVhdGUoc291cmNlQ29kZSwgZXhjZXB0aW9uRGV0YWls
cyk7Ci19Ci0KIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChj
b25zdCBVUkwmIHVybCwgU2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMIHNob3Vs
ZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCkKIHsKICAgICBpZiAoIVdURjo6cHJvdG9j
b2xJc0phdmFTY3JpcHQodXJsKSkKQEAgLTYzMiw3ICs2NDEsNyBAQCBib29sIFNjcmlwdENvbnRy
b2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29uc3QgVVJMJiB1cmwsIFNob3VsZFJlcGxh
Y2VEb2N1bQogICAgIGNvbnN0IGludCBqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoID0gc2l6ZW9mKCJq
YXZhc2NyaXB0OiIpIC0gMTsKIAogICAgIFN0cmluZyBkZWNvZGVkVVJMID0gZGVjb2RlVVJMRXNj
YXBlU2VxdWVuY2VzKHVybC5zdHJpbmcoKSk7Ci0gICAgYXV0byByZXN1bHQgPSBleGVjdXRlU2Ny
aXB0KGRlY29kZWRVUkwuc3Vic3RyaW5nKGphdmFzY3JpcHRTY2hlbWVMZW5ndGgpKTsKKyAgICBh
dXRvIHJlc3VsdCA9IGV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihkZWNvZGVkVVJMLnN1
YnN0cmluZyhqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoKSk7CiAKICAgICAvLyBJZiBleGVjdXRpbmcg
c2NyaXB0IGNhdXNlZCB0aGlzIGZyYW1lIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgcGFnZSwgd2UK
ICAgICAvLyBkb24ndCB3YW50IHRvIHRyeSB0byByZXBsYWNlIGl0cyBkb2N1bWVudCEKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCAxMzI3NGE1
ZDFjZjZkNTJiNGEyNmVjNDhkYjUwMGFiZmZlMzNlZDZiLi5hM2Y2YzNhZjU4YzAxYTAxNzA4MzUy
MzliYWFmNTk1NjMzOTBjZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5oCkBAIC03MCw2ICs3MCw4IEBAIGVudW0gUmVhc29uRm9yQ2FsbGluZ0Nh
bkV4ZWN1dGVTY3JpcHRzIHsKICAgICBOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdAogfTsKIAordXNp
bmcgVmFsdWVPckV4Y2VwdGlvbiA9IEV4cGVjdGVkPEpTQzo6SlNWYWx1ZSwgRXhjZXB0aW9uRGV0
YWlscz47CisKIGNsYXNzIFNjcmlwdENvbnRyb2xsZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
U2NyaXB0Q29udHJvbGxlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCkBAIC04
OCwxMCArOTAsMTEgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgZ2V0QWxsV29ybGRzKFZl
Y3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4mKTsKIAotICAgIEpTQzo6SlNWYWx1ZSBleGVjdXRl
U2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBFeGNlcHRpb25EZXRhaWxzKiA9IG51bGxw
dHIpOwotICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0
IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUgPSBmYWxzZSwgRXhjZXB0aW9u
RGV0YWlscyogPSBudWxscHRyKTsKLSAgICBKU0M6OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdEluV29y
bGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2Vy
R2VzdHVyZSA9IGZhbHNlLCBFeGNlcHRpb25EZXRhaWxzKiA9IG51bGxwdHIpOwotICAgIFdFQkNP
UkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZChET01X
cmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJl
LCBFeGNlcHRpb25EZXRhaWxzKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6
SlNWYWx1ZSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBzY3Jp
cHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKKyAgICBKU0M6OkpTVmFsdWUgZXhl
Y3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmLCBjb25z
dCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOworICAgIFZh
bHVlT3JFeGNlcHRpb24gZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29u
c3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBKU0M6OkpTVmFsdWUgZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJ
Z25vcmluZ0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWYWx1ZU9yRXhjZXB0
aW9uIGV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0
IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpOwogCiAgICAgYm9vbCBzaG91
bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoRG9jdW1lbnQmKSBjb25zdDsKIApAQCAtMTAyLDggKzEw
NSw5IEBAIHB1YmxpYzoKICAgICAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVs
ZTogaXQgaXMgT0sgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gYW55IHRocmVhZCwgZXZlbiBy
ZWVudHJhbnRseS4KICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKLSAg
ICBKU0M6OkpTVmFsdWUgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIEV4Y2VwdGlv
bkRldGFpbHMqID0gbnVsbHB0cik7Ci0gICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSW5Xb3JsZChj
b25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJiwgRXhjZXB0aW9uRGV0YWls
cyogPSBudWxscHRyKTsKKyAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlv
bihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7CisgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSW5X
b3JsZElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVy
V29ybGQmKTsKKyAgICBWYWx1ZU9yRXhjZXB0aW9uIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3Jp
cHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7CiAKICAgICB2b2lkIGxvYWRNb2R1bGVT
Y3JpcHRJbldvcmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBtb2R1bGVO
YW1lLCBSZWY8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiYmLCBET01XcmFwcGVyV29ybGQmKTsKICAg
ICB2b2lkIGxvYWRNb2R1bGVTY3JpcHQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTdHJp
bmcmIG1vZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNr
ZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25zQmFja2VuZC5jcHAKaW5kZXggYTc1NWZjYjkzY2ExMjIyMjhlNzJhNDU5NDhlZmI0MTA0MmNm
MTVkNy4uNTJmMzE5MmM1YjIwMDJmNTE4MzhhNzQ0OTI4N2I2ZWU4MGEzNTczZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNr
ZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgQ29udGVudFJ1bGVMaXN0UmVz
dWx0cyBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50UnVsZUxpc3RzRm9y
TG9hZCgKICAgICAgICAgICAgICAgICAmJiAoKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHVybC5ob3N0KCksICJ3d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20iKSAmJiBlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZSh1cmwucGF0aCgpLCAiL2FuYWx5dGljcy5qcyIpKQogICAgICAgICAg
ICAgICAgICAgICB8fCAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodXJsLmhvc3QoKSwg
Ind3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbSIpICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHVybC5wYXRoKCksICIvZ3RtLmpzIikpKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRv
KiBmcmFtZSA9IGN1cnJlbnREb2N1bWVudC0+ZnJhbWUoKSkKLSAgICAgICAgICAgICAgICAgICAg
ZnJhbWUtPnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUgeyAidHJ5IHsgd2luZG93
LmRhdGFMYXllci5oaWRlLmVuZCgpOyBjb25zb2xlLmxvZygnQ2FsbGVkIHdpbmRvdy5kYXRhTGF5
ZXIuaGlkZS5lbmQoKSBpbiBmcmFtZSAnICsgZG9jdW1lbnQuVVJMICsgJyBiZWNhdXNlIHRoZSBj
b250ZW50IGJsb2NrZXIgYmxvY2tlZCB0aGUgbG9hZCBvZiB0aGUgaHR0cHM6Ly93d3cuZ29vZ2xl
LWFuYWx5dGljcy5jb20vYW5hbHl0aWNzLmpzIHNjcmlwdCcpOyB9IGNhdGNoIChlKSB7IH0iX3Mg
fSk7CisgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZUlnbm9yaW5n
RXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUgeyAidHJ5IHsgd2luZG93LmRhdGFMYXllci5oaWRl
LmVuZCgpOyBjb25zb2xlLmxvZygnQ2FsbGVkIHdpbmRvdy5kYXRhTGF5ZXIuaGlkZS5lbmQoKSBp
biBmcmFtZSAnICsgZG9jdW1lbnQuVVJMICsgJyBiZWNhdXNlIHRoZSBjb250ZW50IGJsb2NrZXIg
YmxvY2tlZCB0aGUgbG9hZCBvZiB0aGUgaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20v
YW5hbHl0aWNzLmpzIHNjcmlwdCcpOyB9IGNhdGNoIChlKSB7IH0iX3MgfSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBmM2Y3ZjAz
MmYyMGUxYTVhM2YzYzhmMTNkMjI3MDk5ZjViODJiMWU5Li4xN2VkYzhiYzU4MmYzNjc0N2M3YmM0
NGFiZTlkZDVhNGJmMGNiZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTcyMDEsNyAr
NzIwMSw3IEBAIHZvaWQgRG9jdW1lbnQ6OmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdChET01X
cmFwcGVyV29ybGQmIHdvcmxkKQogICAgICAgICBqc1N0cmluZyA9IFN0cmluZyhwbHVnSW5zSmF2
YVNjcmlwdCwgc2l6ZW9mKHBsdWdJbnNKYXZhU2NyaXB0KSk7CiAKICAgICBzZXRIYXNFdmFsdWF0
ZWRVc2VyQWdlbnRTY3JpcHRzKCk7Ci0gICAgc2NyaXB0Q29udHJvbGxlci5ldmFsdWF0ZUluV29y
bGQoU2NyaXB0U291cmNlQ29kZShqc1N0cmluZyksIHdvcmxkKTsKKyAgICBzY3JpcHRDb250cm9s
bGVyLmV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUoanNT
dHJpbmcpLCB3b3JsZCk7CiAKICAgICBtX2hhc0luamVjdGVkUGx1Z0luc1NjcmlwdCA9IHRydWU7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggZTBkOTY3YjQ1NzRiYjM1
MzA4NWZiMzc3NjUwOTRjYzJmOGEzNTM4NS4uMTUxMTc1MTllZjkxMzQ2NzY3N2QyNTg2NTNjZDI3
MjAxNzdlODA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMzg3LDcg
KzM4Nyw3IEBAIHZvaWQgU2NyaXB0RWxlbWVudDo6ZXhlY3V0ZUNsYXNzaWNTY3JpcHQoY29uc3Qg
U2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKICAgICBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRl
Q291bnRJbmNyZW1lbnRlciBpZ25vcmVEZXNjdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIo
bV9pc0V4dGVybmFsU2NyaXB0ID8gJmRvY3VtZW50IDogbnVsbHB0cik7CiAgICAgQ3VycmVudFNj
cmlwdEluY3JlbWVudGVyIGN1cnJlbnRTY3JpcHRJbmNyZW1lbnRlcihkb2N1bWVudCwgbV9lbGVt
ZW50KTsKIAotICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZShzb3VyY2VDb2RlKTsKKyAgICBm
cmFtZS0+c2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihzb3VyY2VDb2RlKTsKIH0K
IAogdm9pZCBTY3JpcHRFbGVtZW50OjpleGVjdXRlTW9kdWxlU2NyaXB0KExvYWRhYmxlTW9kdWxl
U2NyaXB0JiBsb2FkYWJsZU1vZHVsZVNjcmlwdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCmluZGV4IGViNWZmNTY3ZWQ4MTBkZmMxODUxMDY4MDMyOTNhMmQ1NjRjZTIz
NDkuLjczMGI0ZTM4OWU3ODNmZTU2Njc1NWI4YWMzNjg4MTE5ZjA5NjkxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNzMxNyw3ICs3MzE3LDcgQEAgYm9v
bCBIVE1MTWVkaWFFbGVtZW50OjplbnN1cmVNZWRpYUNvbnRyb2xzSW5qZWN0ZWRTY3JpcHQoKQog
I2Vsc2UKICAgICAgICAgVVJMIHNjcmlwdFVSTDsKICNlbmRpZgotICAgICAgICBzY3JpcHRDb250
cm9sbGVyLmV2YWx1YXRlSW5Xb3JsZChTY3JpcHRTb3VyY2VDb2RlKG1lZGlhQ29udHJvbHNTY3Jp
cHQsIFdURk1vdmUoc2NyaXB0VVJMKSksIHdvcmxkKTsKKyAgICAgICAgc2NyaXB0Q29udHJvbGxl
ci5ldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKG1lZGlh
Q29udHJvbHNTY3JpcHQsIFdURk1vdmUoc2NyaXB0VVJMKSksIHdvcmxkKTsKICAgICAgICAgaWYg
KFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICAgICAgc2NvcGUuY2xlYXJF
eGNlcHRpb24oKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcApp
bmRleCAxYjNjODg3NmNjNjg3MzFiNWQ2MjhkZDJkZTJiOWQ2MDRmMmE0NWZiLi4wZDgzMTkyNTI3
ODJkYTk1YTcyZWQzNmNhNWYwNDhjN2NkOGM4NDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC00
MjAsNyArNDIwLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpkaXNwYXRj
aE1lc3NhZ2VBc3luYyhjb25zdCBTdHJpbmcmIG1lc3NhZ2VPYmoKIGJvb2wgSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVhdGVBc0Jvb2xlYW4oY29uc3QgU3RyaW5nJiBleHByZXNz
aW9uKQogewogICAgIGF1dG8mIHN0YXRlID0gKm1haW5Xb3JsZEV4ZWNTdGF0ZSgmbV9mcm9udGVu
ZFBhZ2UtPm1haW5GcmFtZSgpKTsKLSAgICByZXR1cm4gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFt
ZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoZXhwcmVzc2lvbikudG9XVEZTdHJpbmcoJnN0YXRl
KSA9PSAidHJ1ZSI7CisgICAgcmV0dXJuIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3Jp
cHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oZXhwcmVzc2lvbikudG9XVEZTdHJp
bmcoJnN0YXRlKSA9PSAidHJ1ZSI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbDo6ZXZhbHVhdGVPbkxvYWQoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQpAQCAtNDMxLDcg
KzQzMSw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVhdGVPbkxv
YWQoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQogICAgIH0KIAogICAgIEpTQzo6U3VzcGVuZEV4
Y2VwdGlvblNjb3BlIHNjb3BlKCZtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LnZtKCkpOwotICAgIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5ldmFsdWF0
ZShTY3JpcHRTb3VyY2VDb2RlKGV4cHJlc3Npb24pKTsKKyAgICBtX2Zyb250ZW5kUGFnZS0+bWFp
bkZyYW1lKCkuc2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VD
b2RlKGV4cHJlc3Npb24pKTsKIH0KIAogUGFnZSogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bDo6aW5zcGVjdGVkUGFnZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggMDFlZGQwMDYwZGUzNjJj
MWFiN2I3MDI0NzVhZTgzODIyMjc5YTgwMC4uY2Y4OWY5ZWI1MDUyMzI2ZmNmOGNiZDI2ZDg1OTZj
ZjQ3MjRjMjM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtNzczLDcgKzc3Myw3IEBAIHZvaWQgSW5zcGVj
dG9yUGFnZUFnZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUmIGZyYW1lKQog
ICAgIGlmIChtX2Jvb3RzdHJhcFNjcmlwdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGZyYW1lLnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUobV9ib290c3RyYXBT
Y3JpcHQsIFVSTCB7IFVSTCgpLCAid2ViLWluc3BlY3RvcjovL2Jvb3RzdHJhcC5qcyJfcyB9KSk7
CisgICAgZnJhbWUuc2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3Vy
Y2VDb2RlKG1fYm9vdHN0cmFwU2NyaXB0LCBVUkwgeyBVUkwoKSwgIndlYi1pbnNwZWN0b3I6Ly9i
b290c3RyYXAuanMiX3MgfSkpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkUGFp
bnQoUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCBiNDk4YTIyNGIxOTBjNmNlODQ0
ZWI5ZGQ3ZWI5YjdhMTA1ZDc2ZGM1Li42ZWFmY2EzNGU4MWEzOTkyZGQxZmI4MGY5MDMyZWI5NmM4
YjliNzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMs
NyArMjMzLDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUgc3RhdGUpCiAg
ICAgaWYgKCF1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUpIHsK
ICAgICAgICAgdW5ibG9ja0hhbmRsZXIud3JhcFdpdGhEZWNpc2lvbkhhbmRsZXIoW3NjcmlwdENv
bnRyb2xsZXIgPSBtYWtlV2Vha1B0cihmcmFtZS0+c2NyaXB0KCkpLCBzY3JpcHQgPSB1bmJsb2Nr
UmVxdWVzdERlbmllZFNjcmlwdC5pc29sYXRlZENvcHkoKV0oYm9vbCB1bmJsb2NrZWQpIHsKICAg
ICAgICAgICAgIGlmICghdW5ibG9ja2VkICYmIHNjcmlwdENvbnRyb2xsZXIpCi0gICAgICAgICAg
ICAgICAgc2NyaXB0Q29udHJvbGxlci0+ZXhlY3V0ZVNjcmlwdChzY3JpcHQpOworICAgICAgICAg
ICAgICAgIHNjcmlwdENvbnRyb2xsZXItPmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihz
Y3JpcHQpOwogICAgICAgICB9KTsKICAgICB9CiAgICAgbV9kb2N1bWVudExvYWRlci5mcmFtZUxv
YWRlcigpLT5jbGllbnQoKS5jb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdURk1vdmUodW5ibG9j
a0hhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggMjJjYzFmZDE1YmMxN2NmZDg1NmU5
MTRjMzhhODZiMGM0MmFjNzRiYy4uZTA4MzNkYzA4MzNmNTlhOWViMjYzNTA2MTMxY2RiYjk3Yzlm
OTIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTYzNCw3ICs2MzQsNyBAQCB2b2lkIEZyYW1l
OjppbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29u
c3QgVXNlclNjcmlwdAogCiAgICAgZG9jdW1lbnQtPnNldEFzUnVubmluZ1VzZXJTY3JpcHRzKCk7
CiAgICAgbG9hZGVyKCkuY2xpZW50KCkud2lsbEluamVjdFVzZXJTY3JpcHQod29ybGQpOwotICAg
IG1fc2NyaXB0LT5ldmFsdWF0ZUluV29ybGQoU2NyaXB0U291cmNlQ29kZShzY3JpcHQuc291cmNl
KCksIFVSTChzY3JpcHQudXJsKCkpKSwgd29ybGQpOworICAgIG1fc2NyaXB0LT5ldmFsdWF0ZUlu
V29ybGRJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdC5zb3VyY2UoKSwg
VVJMKHNjcmlwdC51cmwoKSkpLCB3b3JsZCk7CiB9CiAKIFJlbmRlclZpZXcqIEZyYW1lOjpjb250
ZW50UmVuZGVyZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTFRy
ZWVWaWV3ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCmluZGV4
IGZlMDFjYzFmZjQ5MWMzNjdmY2FkOTdiZmQ0ZDZjNGU3MzBmNmJkYTguLmY5MGU0NDUyNGQ1ZGEz
NzY2MmNjMmRkNTVmNDIxZjI4OTc3YjQyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxUcmVlVmlld2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdl
ci5jcHAKQEAgLTU2LDggKzU2LDggQEAgdm9pZCBYTUxUcmVlVmlld2VyOjp0cmFuc2Zvcm1Eb2N1
bWVudFRvVHJlZVZpZXcoKQogICAgIG1fZG9jdW1lbnQuc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3ko
U2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVl
KCkpKTsKIAogICAgIFN0cmluZyBzY3JpcHRTdHJpbmcgPSBTdHJpbmdJbXBsOjpjcmVhdGVXaXRo
b3V0Q29weWluZyhYTUxWaWV3ZXJfanMsIHNpemVvZihYTUxWaWV3ZXJfanMpKTsKLSAgICBtX2Rv
Y3VtZW50LmZyYW1lKCktPnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0
U3RyaW5nKSk7Ci0gICAgbV9kb2N1bWVudC5mcmFtZSgpLT5zY3JpcHQoKS5ldmFsdWF0ZShTY3Jp
cHRTb3VyY2VDb2RlKEF0b21TdHJpbmcoInByZXBhcmVXZWJLaXRYTUxWaWV3ZXIoJ1RoaXMgWE1M
IGZpbGUgZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUgYW55IHN0eWxlIGluZm9ybWF0aW9uIGFzc29j
aWF0ZWQgd2l0aCBpdC4gVGhlIGRvY3VtZW50IHRyZWUgaXMgc2hvd24gYmVsb3cuJyk7IikpKTsK
KyAgICBtX2RvY3VtZW50LmZyYW1lKCktPnNjcmlwdCgpLmV2YWx1YXRlSWdub3JpbmdFeGNlcHRp
b24oU2NyaXB0U291cmNlQ29kZShzY3JpcHRTdHJpbmcpKTsKKyAgICBtX2RvY3VtZW50LmZyYW1l
KCktPnNjcmlwdCgpLmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29kZShB
dG9tU3RyaW5nKCJwcmVwYXJlV2ViS2l0WE1MVmlld2VyKCdUaGlzIFhNTCBmaWxlIGRvZXMgbm90
IGFwcGVhciB0byBoYXZlIGFueSBzdHlsZSBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggaXQu
IFRoZSBkb2N1bWVudCB0cmVlIGlzIHNob3duIGJlbG93LicpOyIpKSk7CiAKICAgICBTdHJpbmcg
Y3NzU3RyaW5nID0gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoWE1MVmlld2VyX2Nz
cywgc2l6ZW9mKFhNTFZpZXdlcl9jc3MpKTsKICAgICBhdXRvIHRleHQgPSBtX2RvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKGNzc1N0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcAppbmRleCA3MGVmYmZhM2U4N2EyYWJhY2M0NTE0NjQwZmRhM2Y3N2ViNjgwZTVmLi4w
YzE1ZjhiOTNjNzgwN2VmZDc0YmJlNDAwODI4NDQ0MWM1NmZhZGJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI0NzIsNyArMjQ3Miw3IEBAIHZvaWQgV0tQ
YWdlU2V0UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VTdGF0ZUNsaWVudEJh
c2UqIGNsaWVudCkKIAogdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQYWdl
UmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdl
UnVuSmF2YVNjcmlwdEZ1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+
cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgdHJ1
ZSwgW2NvbnRleHQsIGNhbGxiYWNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmV0dXJu
VmFsdWUsIGJvb2wsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jh
c2U6OkVycm9yIGVycm9yKSB7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5ydW5KYXZhU2NyaXB0SW5N
YWluRnJhbWUodG9JbXBsKHNjcmlwdFJlZiktPnN0cmluZygpLCB0cnVlLCBbY29udGV4dCwgY2Fs
bGJhY2tdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiByZXR1cm5WYWx1ZSwgT3B0aW9uYWw8
V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsK
ICAgICAgICAgY2FsbGJhY2sodG9BUEkocmV0dXJuVmFsdWUpLCAoZXJyb3IgIT0gQ2FsbGJhY2tC
YXNlOjpFcnJvcjo6Tm9uZSkgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5wdHIoKSkgOiAw
LCBjb250ZXh0KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDMzNTRhYzZlZWNiNWE4ZDcxOThhZThhNThjYTI5OTQ0
YzgzMGU1MTAuLjE5NDJiMDI1NjFkZjE1OTgyY2EwYTExZDEwMGMzOTNjYjhiYTA0YmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTEy
Miw3ICsxMTIyLDcgQEAgLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWph
dmFTY3JpcHRTdHJpbmcgZm9yY2VVc2VyR2VzdHVyZTooQk9PTCkKIHsKICAgICBhdXRvIGhhbmRs
ZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSk7CiAKLSAgICBfcGFnZS0+cnVu
SmF2YVNjcmlwdEluTWFpbkZyYW1lKGphdmFTY3JpcHRTdHJpbmcsIGZvcmNlVXNlckdlc3R1cmUs
IFtoYW5kbGVyXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZh
bHVlLCBib29sIGhhZEV4Y2VwdGlvbiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyYg
ZGV0YWlscywgV2ViS2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvciBlcnJvckNvZGUpIHsK
KyAgICBfcGFnZS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGphdmFTY3JpcHRTdHJpbmcsIGZv
cmNlVXNlckdlc3R1cmUsIFtoYW5kbGVyXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2Vy
aWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBk
ZXRhaWxzLCBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJhY2s6OkVycm9yIGVycm9yQ29kZSkgewog
ICAgICAgICBpZiAoIWhhbmRsZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTExNDUsMTgg
KzExNDUsMTggQEAgLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFT
Y3JpcHRTdHJpbmcgZm9yY2VVc2VyR2VzdHVyZTooQk9PTCkKICAgICAgICAgfQogCiAgICAgICAg
IGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKShpZCwgTlNFcnJvciAqKSloYW5kbGVyLmdldCgp
OwotICAgICAgICBpZiAoaGFkRXhjZXB0aW9uKSB7CisgICAgICAgIGlmIChkZXRhaWxzKSB7CiAg
ICAgICAgICAgICBBU1NFUlQoIXNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CiAKICAgICAgICAgICAg
IFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiB1c2VySW5mbyA9IGFkb3B0TlMoW1tOU011
dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAKICAgICAgICAgICAgIFt1c2VySW5mbyBz
ZXRPYmplY3Q6bG9jYWxpemVkRGVzY3JpcHRpb25Gb3JFcnJvckNvZGUoV0tFcnJvckphdmFTY3Jp
cHRFeGNlcHRpb25PY2N1cnJlZCkgZm9yS2V5Ok5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXldOwot
ICAgICAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihk
ZXRhaWxzLm1lc3NhZ2UpIGZvcktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTWVzc2FnZUVycm9y
S2V5XTsKLSAgICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QChkZXRhaWxzLmxpbmVOdW1i
ZXIpIGZvcktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTGluZU51bWJlckVycm9yS2V5XTsKLSAg
ICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QChkZXRhaWxzLmNvbHVtbk51bWJlcikgZm9y
S2V5Ol9XS0phdmFTY3JpcHRFeGNlcHRpb25Db2x1bW5OdW1iZXJFcnJvcktleV07CisgICAgICAg
ICAgICBbdXNlckluZm8gc2V0T2JqZWN0OnN0YXRpY19jYXN0PE5TU3RyaW5nICo+KGRldGFpbHMt
Pm1lc3NhZ2UpIGZvcktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTWVzc2FnZUVycm9yS2V5XTsK
KyAgICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QChkZXRhaWxzLT5saW5lTnVtYmVyKSBm
b3JLZXk6X1dLSmF2YVNjcmlwdEV4Y2VwdGlvbkxpbmVOdW1iZXJFcnJvcktleV07CisgICAgICAg
ICAgICBbdXNlckluZm8gc2V0T2JqZWN0OkAoZGV0YWlscy0+Y29sdW1uTnVtYmVyKSBmb3JLZXk6
X1dLSmF2YVNjcmlwdEV4Y2VwdGlvbkNvbHVtbk51bWJlckVycm9yS2V5XTsKIAotICAgICAgICAg
ICAgaWYgKCFkZXRhaWxzLnNvdXJjZVVSTC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgW3Vz
ZXJJbmZvIHNldE9iamVjdDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOmRldGFpbHMuc291
cmNlVVJMXSBmb3JLZXk6X1dLSmF2YVNjcmlwdEV4Y2VwdGlvblNvdXJjZVVSTEVycm9yS2V5XTsK
KyAgICAgICAgICAgIGlmICghZGV0YWlscy0+c291cmNlVVJMLmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgICAgICBbdXNlckluZm8gc2V0T2JqZWN0OltOU1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJpbmc6
ZGV0YWlscy0+c291cmNlVVJMXSBmb3JLZXk6X1dLSmF2YVNjcmlwdEV4Y2VwdGlvblNvdXJjZVVS
TEVycm9yS2V5XTsKIAogICAgICAgICAgICAgcmF3SGFuZGxlcihuaWwsIGFkb3B0TlMoW1tOU0Vy
cm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvckphdmFT
Y3JpcHRFeGNlcHRpb25PY2N1cnJlZCB1c2VySW5mbzp1c2VySW5mby5nZXQoKV0pLmdldCgpKTsK
ICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggZDIxYzc4MmVkZWQxMjEzYzY5MTMxMWNkMmRj
OTViZmJjNGQ4NzZlYS4uNTczZjI5ZTI0ZmJjZTFkZWIyOTdmZmUxYjk2ZTMzOGNmNzc4YTEyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmll
dy5jcHAKQEAgLTM2MDYsNyArMzYwNiwxMCBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19ydW5famF2
YXNjcmlwdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogc2NyaXB0LAogICAg
IGdfcmV0dXJuX2lmX2ZhaWwoc2NyaXB0KTsKIAogICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBh
ZG9wdEdSZWYoZ190YXNrX25ldyh3ZWJWaWV3LCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJE
YXRhKSk7Ci0gICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoU3Ry
aW5nOjpmcm9tVVRGOChzY3JpcHQpLCB0cnVlLCBbdGFzayA9IFdURk1vdmUodGFzayldKEFQSTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGJvb2wsIGNvbnN0
IEV4Y2VwdGlvbkRldGFpbHMmIGV4Y2VwdGlvbkRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNl
OjpFcnJvcikgeworICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
KFN0cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgdHJ1ZSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShB
UEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25h
bDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3Ip
IHsKKyAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBleGNlcHRpb25EZXRhaWxzOworICAgICAgICBp
ZiAoZGV0YWlscykKKyAgICAgICAgICAgIGV4Y2VwdGlvbkRldGFpbHMgPSAqZGV0YWlsczsKICAg
ICAgICAgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRDYWxsYmFjayhzZXJpYWxpemVkU2NyaXB0
VmFsdWUsIGV4Y2VwdGlvbkRldGFpbHMsIHRhc2suZ2V0KCkpOwogICAgIH0pOwogfQpAQCAtMzcw
NCw3ICszNzA3LDEwIEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0X2luX3dv
cmxkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyCiAgICAgZ19yZXR1cm5faWZf
ZmFpbCh3b3JsZE5hbWUpOwogCiAgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0R1JlZihn
X3Rhc2tfbmV3KHdlYlZpZXcsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpKTsKLSAg
ICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFN0
cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgdHJ1ZSwgU3RyaW5nOjpmcm9tVVRGOCh3b3JsZE5hbWUp
LCBbdGFzayA9IFdURk1vdmUodGFzayldKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJp
YWxpemVkU2NyaXB0VmFsdWUsIGJvb2wsIGNvbnN0IEV4Y2VwdGlvbkRldGFpbHMmIGV4Y2VwdGlv
bkRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgIGdldFBhZ2Uod2Vi
VmlldykucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoU3RyaW5nOjpmcm9tVVRG
OChzY3JpcHQpLCB0cnVlLCBTdHJpbmc6OmZyb21VVEY4KHdvcmxkTmFtZSksIFt0YXNrID0gV1RG
TW92ZSh0YXNrKV0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFj
a0Jhc2U6OkVycm9yKSB7CisgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZXhjZXB0aW9uRGV0YWls
czsKKyAgICAgICAgaWYgKGRldGFpbHMpCisgICAgICAgICAgICBleGNlcHRpb25EZXRhaWxzID0g
KmRldGFpbHM7CiAgICAgICAgIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2soc2Vy
aWFsaXplZFNjcmlwdFZhbHVlLCBleGNlcHRpb25EZXRhaWxzLCB0YXNrLmdldCgpKTsKICAgICB9
KTsKIH0KQEAgLTM3NDQsNyArMzc1MCwxMCBAQCBzdGF0aWMgdm9pZCByZXNvdXJjZXNTdHJlYW1S
ZWFkQ2FsbGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZwogICAg
IFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ190YXNrX2dldF9zb3Vy
Y2Vfb2JqZWN0KHRhc2suZ2V0KCkpKTsKICAgICBncG9pbnRlciBvdXRwdXRTdHJlYW1EYXRhID0g
Z19tZW1vcnlfb3V0cHV0X3N0cmVhbV9nZXRfZGF0YShHX01FTU9SWV9PVVRQVVRfU1RSRUFNKG9i
amVjdCkpOwogICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFN0
cmluZzo6ZnJvbVVURjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBnY2hhcio+KG91dHB1dFN0cmVh
bURhdGEpKSwgdHJ1ZSwKLSAgICAgICAgW3Rhc2tdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
KiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGJvb2wsIGNvbnN0IEV4Y2VwdGlvbkRldGFpbHMmIGV4
Y2VwdGlvbkRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgICAgICBb
dGFza10oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwg
T3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6
OkVycm9yKSB7CisgICAgICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGV4Y2VwdGlvbkRldGFpbHM7
CisgICAgICAgICAgICBpZiAoZGV0YWlscykKKyAgICAgICAgICAgICAgICBleGNlcHRpb25EZXRh
aWxzID0gKmRldGFpbHM7CiAgICAgICAgICAgICB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdENh
bGxiYWNrKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgZXhjZXB0aW9uRGV0YWlscywgdGFzay5nZXQo
KSk7CiAgICAgICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKaW5kZXggZTNiNDUyMzk5NzkzYTZiMWQ2NzQ2Y2Y5YmY0NDg4MzQ1OGZlYWI3Zi4uMmEzZjE5
NjYzNTgxODExOWI1MzMxMWMwYzgzNzVlZTE4YzQxYzI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zODQ1LDE4ICszODQ1LDE4IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCkKICAgICAgICAgbGF1bmNo
UHJvY2Vzcyh7IH0sIFByb2Nlc3NMYXVuY2hSZWFzb246OkluaXRpYWxQcm9jZXNzKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcm
IHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IEV4Y2VwdGlv
bkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9p
ZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIHNj
cmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4s
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgcnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBX
VEY6Om51bGxvcHQsIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5n
JiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYg
d29ybGROYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUq
LCBib29sIGhhZEV4Y2VwdGlvbiwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wg
Zm9yY2VVc2VyR2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6
OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNl
cHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikK
IHsKICAgICAvLyBGb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0eSBzdXBwb3J0IHJ1bm5pbmcgc2Ny
aXB0IGluIGEgV2ViVmlldyB3aGljaCBoYXMgbm90IGRvbmUgYW55IGxvYWRzIHlldHMuCiAgICAg
bGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0ciwgZmFsc2UsIHsg
fSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CisgICAgICAgIGNhbGxiYWNrRnVuY3Rp
b24obnVsbHB0ciwgeyB9LCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMzg2NCw3ICszODY0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0
LCBib28KICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5NYWluRnJh
bWVTY3JpcHRXb3JsZChzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJh
Y2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWUoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNl
ckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSos
IGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBFeGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZh
U2NyaXB0SW5GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBzY3Jp
cHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKG1haW5GcmFtZSgp
LT5mcmFtZUlEKCkgIT0gZnJhbWVJRCk7CiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lIl9z
KSk7CkBAIC02Nzg3LDcgKzY3ODcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW52YWxpZGF0ZVN0
cmluZ0NhbGxiYWNrKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBjYWxsYmFjay0+aW52YWxp
ZGF0ZSgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2NyaXB0VmFsdWVDYWxsYmFjayhjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIGJvb2wgaGFkRXhjZXB0aW9uLCBj
b25zdCBFeGNlcHRpb25EZXRhaWxzJiBkZXRhaWxzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2
b2lkIFdlYlBhZ2VQcm94eTo6c2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGRhdGFSZWZlcmVuY2UsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMs
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFj
a3MudGFrZTxTY3JpcHRWYWx1ZUNhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxi
YWNrKSB7CkBAIC02Nzk2LDcgKzY3OTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2NyaXB0VmFs
dWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsCiAgICAg
fQogCiAgICAgaWYgKGRhdGFSZWZlcmVuY2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNhbGxiYWNr
LT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUobnVsbHB0ciwgaGFkRXhjZXB0aW9uLCBk
ZXRhaWxzKTsKKyAgICAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1
ZShudWxscHRyLCBkZXRhaWxzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjgwNCw3
ICs2ODA0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNjcmlwdFZhbHVlQ2FsbGJhY2soY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLAogICAgIGRhdGEucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShkYXRhUmVmZXJlbmNlLnNpemUoKSk7CiAgICAgZGF0YS5hcHBlbmQoZGF0YVJl
ZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKIAotICAgIGNhbGxiYWNrLT5w
ZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmFkb3B0KFdURk1vdmUoZGF0YSkpLnB0cigpLCBoYWRFeGNlcHRpb24sIGRldGFpbHMpOworICAg
IGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmFkb3B0KFdURk1vdmUoZGF0YSkpLnB0cigpLCBkZXRhaWxzKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVkUGFnZXNDYWxsYmFjayhjb25zdCBWZWN0b3I8SW50
UmVjdD4mIHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgY29u
c3QgRmxvYXRCb3hFeHRlbnQmIGNvbXB1dGVkUGFnZU1hcmdpbiwgQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBhZTM4NTIyMjFk
NGE1MjQzNTUyYmEwMjNmMmY0OGI5NGVmN2I5OGFkLi4wMjc0ZDdjZTJmNDM2ODE1NGNjYjY3OTI1
Y2QwZjlkYTQzYzI5Y2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApA
QCAtNzUsNiArNzUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9FdmVudFRyYWNraW5nUmVnaW9ucy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uRGV0
YWlscy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udEF0dHJpYnV0ZXMuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5o
PiAvLyBGSVhNRTogTW92ZSBMYXlvdXRWaWV3cG9ydENvbnN0cmFpbnQgdG8gaXRzIG93biBmaWxl
IGFuZCBzdG9wIGluY2x1ZGluZyB0aGlzLgpAQCAtMzM1LDcgKzMzNiw3IEBAIHR5cGVkZWYgR2Vu
ZXJpY0NhbGxiYWNrPEFQSTo6RGF0YSo+IERhdGFDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0Nh
bGxiYWNrPHVpbnQ2NF90PiBVbnNpZ25lZENhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJh
Y2s8RWRpdGluZ1JhbmdlPiBFZGl0aW5nUmFuZ2VDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0Nh
bGxiYWNrPGNvbnN0IFN0cmluZyY+IFN0cmluZ0NhbGxiYWNrOwotdHlwZWRlZiBHZW5lcmljQ2Fs
bGJhY2s8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBib29sLCBjb25zdCBXZWJDb3JlOjpF
eGNlcHRpb25EZXRhaWxzJj4gU2NyaXB0VmFsdWVDYWxsYmFjazsKK3R5cGVkZWYgR2VuZXJpY0Nh
bGxiYWNrPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhj
ZXB0aW9uRGV0YWlscz4+IFNjcmlwdFZhbHVlQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxs
YmFjazxjb25zdCBXZWJDb3JlOjpGb250QXR0cmlidXRlcyY+IEZvbnRBdHRyaWJ1dGVzQ2FsbGJh
Y2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmPiBTZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVy
aWNDYWxsYmFjazxib29sPiBCb29sQ2FsbGJhY2s7CkBAIC0xMDYwLDEwICsxMDYxLDEwIEBAIHB1
YmxpYzoKICAgICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoRnVuY3Rpb248dm9p
ZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0U291
cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSosIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3Ry
aW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9m
RnJhbWUoV2ViRnJhbWVQcm94eSosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25z
dCBTdHJpbmcmLCBib29sLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFp
bHMmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKLSAgICB2b2lk
IHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYsIGJvb2ws
IGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IFdlYkNv
cmU6OkV4Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1
bmN0aW9uKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcm
LCBib29sLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwg
T3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmIGNhbGxiYWNrRnVuY3Rpb24pOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
U2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiwgYm9vbCwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYg
d29ybGROYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUq
LCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2tGdW5jdGlvbik7CiAgICAgLy8gRm9yIHN1YiBmcmFtZXMuCi0gICAgdm9p
ZCBydW5KYXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZChB
UEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBXZWJD
b3JlOjpFeGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tG
dW5jdGlvbik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdU
Rjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdl
YkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFj
a0Z1bmN0aW9uKTsKICAgICB2b2lkIGZvcmNlUmVwYWludChSZWZQdHI8Vm9pZENhbGxiYWNrPiYm
KTsKIAogICAgIGZsb2F0IGhlYWRlckhlaWdodChXZWJGcmFtZVByb3h5Jik7CkBAIC0xOTQzLDcg
KzE5NDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYm9vbENhbGxiYWNrKGJvb2wgcmVzdWx0LCBD
YWxsYmFja0lEKTsKICAgICB2b2lkIHN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYsIENhbGxi
YWNrSUQpOwogICAgIHZvaWQgaW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKENhbGxiYWNrSUQpOwot
ICAgIHZvaWQgc2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBi
b29sIGhhZEV4Y2VwdGlvbiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyYsIENhbGxi
YWNrSUQpOworICAgIHZvaWQgc2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tJRCk7
CiAgICAgdm9pZCBjb21wdXRlZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVjdG9yPFdlYkNvcmU6Oklu
dFJlY3Q+JiwgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgY29uc3QgV2ViQ29y
ZTo6RmxvYXRCb3hFeHRlbnQmIGNvbXB1dGVkUGFnZU1hcmdpbiwgQ2FsbGJhY2tJRCk7CiAgICAg
dm9pZCB2YWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBib29sLCBpbnQsIENh
bGxiYWNrSUQpOwogICAgIHZvaWQgdW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCwgQ2FsbGJhY2tJ
RCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4KaW5kZXggMGM2NTFlNjg1YjI5NzlmNGUzNmU5YzhhNTg2NDE2ZDY3MWJkZmZmNS4uNGRlZjVk
YzAxZGI0ZDQyOWZiYjdkNzE2OTM4YTExMTcwZDllYTIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTY5LDcgKzE2OSw3IEBA
IG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgU3RyaW5nQ2FsbGJhY2soU3RyaW5nIHJl
c3VsdFN0cmluZywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgQm9vbENhbGxi
YWNrKGJvb2wgcmVzdWx0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBJbnZh
bGlkYXRlU3RyaW5nQ2FsbGJhY2soV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAg
U2NyaXB0VmFsdWVDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwgYm9vbCBo
YWRFeGNlcHRpb24sIHN0cnVjdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzIGRldGFpbHMsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFNjcmlwdFZhbHVlQ2FsbGJhY2soSVBD
OjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRl
dGFpbHM+IGRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIENvbXB1
dGVkUGFnZXNDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gcGFnZVJlY3RzLCBkb3Vi
bGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBXZWJDb3JlOjpSZWN0RWRnZXM8ZmxvYXQ+
IGNvbXB1dGVkUGFnZU1hcmdpbiwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAg
VmFsaWRhdGVDb21tYW5kQ2FsbGJhY2soU3RyaW5nIGNvbW1hbmQsIGJvb2wgaXNFbmFibGVkLCBp
bnQzMl90IHN0YXRlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBFZGl0aW5n
UmFuZ2VDYWxsYmFjayhzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcApp
bmRleCA1MGNhMmU0OTM4Y2MzNTVjMTlkZTFjYTdiYmM0Mzk3Y2MwNGJiOTNjLi4zYWJlZTQ4NmY1
ZWM4YjZlNGYwZTVkOWExNDcwMzc4M2U4NGE4MGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyLmNwcApAQCAtOTAsOSArOTAsOSBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29s
SGFuZGxlcjo6aW5zcGVjdChjb25zdCBTdHJpbmcmIGhvc3RBbmRQb3J0LCBDb25uZWN0aQogdm9p
ZCBSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OnJ1blNjcmlwdChjb25zdCBTdHJpbmcm
IHNjcmlwdCkKIHsKICAgICBtX3BhZ2UucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHNjcmlwdCwg
ZmFsc2UsCi0gICAgICAgIFtdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgYm9vbCBoYWRF
eGNlcHRpb24sIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmIGV4Y2VwdGlvbkRldGFp
bHMsIENhbGxiYWNrQmFzZTo6RXJyb3IpIHsKLSAgICAgICAgICAgIGlmIChoYWRFeGNlcHRpb24p
Ci0gICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJFeGNlcHRpb24gcnVubmluZyBzY3JpcHQgXCIl
c1wiIiwgZXhjZXB0aW9uRGV0YWlscy5tZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBb
XShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlv
bkRldGFpbHM+IGV4Y2VwdGlvbkRldGFpbHMsIENhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICAg
ICAgICAgIGlmIChleGNlcHRpb25EZXRhaWxzKQorICAgICAgICAgICAgICAgIExPR19FUlJPUigi
RXhjZXB0aW9uIHJ1bm5pbmcgc2NyaXB0IFwiJXNcIiIsIGV4Y2VwdGlvbkRldGFpbHMtPm1lc3Nh
Z2UudXRmOCgpLmRhdGEoKSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggODhlMTNhZDgyYWRjZWM0ZmJlZTY4
NWYyYzdiZTQ1OThmOGQ0Y2JiZi4uM2VhMDA2YjNjZTM4ZTM4OTQxZmRiZDU4NjczY2Q4MWE2ODJj
MjUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAKQEAgLTEyNTMsNyArMTI1Myw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybUphdmFT
Y3JpcHRVUkxSZXF1ZXN0KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiAgICAgLy8gRXZhbHVhdGUgdGhl
IEphdmFTY3JpcHQgY29kZS4gTm90ZSB0aGF0IHJ1bm5pbmcgSmF2YVNjcmlwdCBoZXJlIGNvdWxk
IGNhdXNlIHRoZSBwbHVnLWluIHRvIGJlIGRlc3Ryb3llZCwgc28gd2UKICAgICAvLyBncmFiIHJl
ZmVyZW5jZXMgdG8gdGhlIHBsdWctaW4gaGVyZS4KICAgICBSZWZQdHI8UGx1Z2luPiBwbHVnaW4g
PSBtX3BsdWdpbjsKLSAgICBhdXRvIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2Ny
aXB0KGpzU3RyaW5nLCByZXF1ZXN0LT5hbGxvd1BvcHVwcygpKTsKKyAgICBhdXRvIHJlc3VsdCA9
IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oanNTdHJpbmcs
IHJlcXVlc3QtPmFsbG93UG9wdXBzKCkpOwogCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwCmluZGV4IDkw
OGUzOWFmZGIwYzg4OWNmZTU2NTJiMzlhZGM0NzBjM2EwOWE5YTIuLmMxODllOTgyNWFkNDk0NzBl
ZDYyNDM1ZTg2ZDU5ZGY2MGYzOGFlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElE
aXNwYXRjaGVyLmNwcApAQCAtOTksNyArOTksNyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5k
QVBJRGlzcGF0Y2hlcjo6ZXZhbHVhdGVPclF1ZXVlRXhwcmVzc2lvbihjb25zdCBTdHJpbmcmCiAK
ICAgICBBU1NFUlQobV9xdWV1ZS5pc0VtcHR5KCkpOwogICAgIEFTU0VSVCghbV9wYWdlLmNvcmVQ
YWdlKCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmlzUGF1c2VkKCkpOwotICAgIG1fcGFnZS5jb3Jl
UGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGV4cHJlc3Npb24pOwor
ICAgIG1fcGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0
SWdub3JpbmdFeGNlcHRpb24oZXhwcmVzc2lvbik7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJv
bnRlbmRBUElEaXNwYXRjaGVyOjpldmFsdWF0ZVF1ZXVlZEV4cHJlc3Npb25zKCkKQEAgLTEwOSw3
ICsxMDksNyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6ZXZhbHVh
dGVRdWV1ZWRFeHByZXNzaW9ucygpCiAKICAgICBmb3IgKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lv
biA6IG1fcXVldWUpIHsKICAgICAgICAgQVNTRVJUKCFtX3BhZ2UuY29yZVBhZ2UoKS0+bWFpbkZy
YW1lKCkuc2NyaXB0KCkuaXNQYXVzZWQoKSk7Ci0gICAgICAgIG1fcGFnZS5jb3JlUGFnZSgpLT5t
YWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGV4cHJlc3Npb24pOworICAgICAgICBt
X3BhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9y
aW5nRXhjZXB0aW9uKGV4cHJlc3Npb24pOwogICAgIH0KIAogICAgIG1fcXVldWUuY2xlYXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNzM1
ZmVhNGVlMTNiZTQyNWMyMzRiZTkyMTIwZmU5ZTdiY2EyZDVjNy4uOTE4ZjA4ZTM2ZTM2MjFlYWU1
MDhkMGU1MzFjNzMyYWFkMTRjNGYzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTMzNTMsMjMgKzMzNTMsMjggQEAgdm9pZCBXZWJQYWdlOjpy
dW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wg
Zm9yY2VVc2UKICAgICAvLyBOT1RFOiBXZSBuZWVkIHRvIGJlIGNhcmVmdWwgd2hlbiBydW5uaW5n
IHNjcmlwdHMgdGhhdCB0aGUgb2JqZWN0cyB3ZSBkZXBlbmQgb24gZG9uJ3QKICAgICAvLyBkaXNh
cHBlYXIgZHVyaW5nIHNjcmlwdCBleGVjdXRpb24uCiAKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBzZXJpYWxpemVkUmVzdWx0VmFsdWU7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2so
Y29tbW9uVk0oKSk7Ci0gICAgYm9vbCBoYWRFeGNlcHRpb24gPSB0cnVlOwotICAgIEV4Y2VwdGlv
bkRldGFpbHMgZGV0YWlsczsKKyAgICBWYWx1ZU9yRXhjZXB0aW9uIHJlc3VsdDsKKyAgICBSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkUmVzdWx0VmFsdWU7CisKICAgICBh
dXRvKiB3b3JsZCA9IHdvcmxkTmFtZSA/IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmZpbmQo
d29ybGROYW1lLnZhbHVlKCkpIDogJkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdv
cmxkKCk7CiAgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5jb3JlRnJhbWUoKSAmJiB3b3JsZCkgewot
ICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHRWYWx1ZSA9IGZyYW1lLT5jb3JlRnJhbWUoKS0+c2Ny
aXB0KCkuZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgpLCBz
Y3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsICZkZXRhaWxzKSkgewotICAgICAgICAgICAgaGFkRXhj
ZXB0aW9uID0gZmFsc2U7CisgICAgICAgIHJlc3VsdCA9IGZyYW1lLT5jb3JlRnJhbWUoKS0+c2Ny
aXB0KCkuZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgpLCBz
Y3JpcHQsIGZvcmNlVXNlckdlc3R1cmUpOworICAgICAgICBpZiAocmVzdWx0KSB7CiAgICAgICAg
ICAgICBzZXJpYWxpemVkUmVzdWx0VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZShmcmFtZS0+anNDb250ZXh0Rm9yV29ybGQod29ybGQpLAotICAgICAgICAgICAgICAgIHRvUmVm
KGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkLT5jb3JlV29y
bGQoKSksIHJlc3VsdFZhbHVlKSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgdG9SZWYoZnJh
bWUtPmNvcmVGcmFtZSgpLT5zY3JpcHQoKS5nbG9iYWxPYmplY3Qod29ybGQtPmNvcmVXb3JsZCgp
KSwgcmVzdWx0LnZhbHVlKCkpLCBudWxscHRyKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIElQ
Qzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwogICAgIGlmIChzZXJpYWxpemVkUmVzdWx0
VmFsdWUpCiAgICAgICAgIGRhdGFSZWZlcmVuY2UgPSBzZXJpYWxpemVkUmVzdWx0VmFsdWUtPmRh
dGEoKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJh
Y2soZGF0YVJlZmVyZW5jZSwgaGFkRXhjZXB0aW9uLCBkZXRhaWxzLCBjYWxsYmFja0lEKSk7CisK
KyAgICBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzOworICAgIGlmICghcmVzdWx0
KQorICAgICAgICBkZXRhaWxzID0gcmVzdWx0LmVycm9yKCk7CisKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgZGV0YWls
cywgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1
cmUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCmluZGV4IDk0N2JmYzUzNDJjYmNhYzA5YWFhZjUx
MmNjZGI2ZGZlOWNiMWNhNDEuLmVhNTA3OGVkMThmNTUwNTJkZjJlNDI4MTNlMmE2ZjcwODU1Y2U3
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTM3OSw3ICszNzksNyBAQCB2b2lkIFdl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJM
LCBjb25zdCBTdHJpbmcmCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgW2NvbnRlbnRDb3B5
IHdyaXRlVG9VUkw6YWN0dWFsVVJMIGF0b21pY2FsbHk6WUVTIGVuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nIGVycm9yOk5VTExdOwogCi0gICAgICAgIGNvcmUoW21fZnJvbnRlbmRXaW5kb3dD
b250cm9sbGVyIGZyb250ZW5kV2ViVmlld10pLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRl
U2NyaXB0KFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEku
c2F2ZWRVUkwoXCIlQFwiKSIsIGFjdHVhbFVSTC5hYnNvbHV0ZVN0cmluZ10pOworICAgICAgICBj
b3JlKFttX2Zyb250ZW5kV2luZG93Q29udHJvbGxlciBmcm9udGVuZFdlYlZpZXddKS0+bWFpbkZy
YW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuc2F2ZWRVUkwoXCIlQFwiKSIs
IGFjdHVhbFVSTC5hYnNvbHV0ZVN0cmluZ10pOwogICAgIH07CiAKICAgICBpZiAoIWZvcmNlU2F2
ZURpYWxvZykgewpAQCAtNDI1LDcgKzQyNSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ6OmFwcGVuZChjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nCiAg
ICAgW2hhbmRsZSB3cml0ZURhdGE6W2NvbnRlbnQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3Ry
aW5nRW5jb2RpbmddXTsKICAgICBbaGFuZGxlIGNsb3NlRmlsZV07CiAKLSAgICBjb3JlKFttX2Zy
b250ZW5kV2luZG93Q29udHJvbGxlciBmcm9udGVuZFdlYlZpZXddKS0+bWFpbkZyYW1lKCkuc2Ny
aXB0KCkuZXhlY3V0ZVNjcmlwdChbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3BlY3Rv
ckZyb250ZW5kQVBJLmFwcGVuZGVkVG9VUkwoXCIlQFwiKSIsIFthY3R1YWxVUkwgYWJzb2x1dGVT
dHJpbmddXSk7CisgICAgY29yZShbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIgZnJvbnRlbmRX
ZWJWaWV3XSktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2Vw
dGlvbihbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3BlY3RvckZyb250ZW5kQVBJLmFw
cGVuZGVkVG9VUkwoXCIlQFwiKSIsIFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddXSk7CiB9CiAK
IC8vIE1BUks6IC0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CmluZGV4IDE4ZDNkOWVjMTRkOGM2OTVkMDNmOTNjM2RkMjAxNmFkNDA5NGE0NTguLjc4Y2MzM2Vi
YTE1YTZlMGYxNjJhNjA5ZDM4YjJlN2NlMDg1YzNmMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtNzAwLDcgKzcwMCw3IEBAIC0gKE5TU3RyaW5n
ICopX3N0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOihOU1N0cmluZyAqKXN0
cmluZyBmb3JjZVVzCiAgICAgSlNDOjpKU0xvY2tIb2xkZXIganNjTG9jayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICNlbmRpZgogCi0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IF9wcml2YXRlLT5j
b3JlRnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoc3RyaW5nLCBmb3JjZVVzZXJHZXN0dXJl
KTsKKyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2NyaXB0
KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKHN0cmluZywgZm9yY2VVc2VyR2VzdHVy
ZSk7CiAKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlRnJhbWUpIC8vIEluIGNhc2UgdGhlIHNjcmlw
dCByZW1vdmVkIG91ciBmcmFtZSBmcm9tIHRoZSBwYWdlLgogICAgICAgICByZXR1cm4gQCIiOwpA
QCAtMjA5Niw3ICsyMDk2LDcgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdEZyb21TdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHdpdGhHbG8KICAgICBBU1NFUlQo
ZnJhbWUtPmRvY3VtZW50KCkpOwogICAgIFJldGFpblB0cjxXZWJGcmFtZT4gd2ViRnJhbWUoa2l0
KGZyYW1lKSk7IC8vIFJ1bm5pbmcgYXJiaXRyYXJ5IEphdmFTY3JpcHQgY2FuIGRlc3Ryb3kgdGhl
IGZyYW1lLgogCi0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5leGVj
dXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZCgqY29yZSh3b3JsZCksIHN0cmluZywgdHJ1ZSk7Cisg
ICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlVXNlckFnZW50
U2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKCpjb3JlKHdvcmxkKSwgc3RyaW5nLCB0cnVl
KTsKIAogICAgIGlmICghd2ViRnJhbWUtPl9wcml2YXRlLT5jb3JlRnJhbWUpIC8vIEluIGNhc2Ug
dGhlIHNjcmlwdCByZW1vdmVkIG91ciBmcmFtZSBmcm9tIHRoZSBwYWdlLgogICAgICAgICByZXR1
cm4gQCIiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4
IDQ3YWFlMzI4ZGJjNmFjZmJlYWJiM2FlYzZkMjc4M2NiNGY1OWYwNzEuLjk2MWUwNWNmMWMyMjlk
ZTExMDQ2YjdjNGZiODM0ZjUzMzliYjgyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KQEAgLTc5MDgsNyArNzkwOCw3IEBAIC0gKE5TQXBwbGVFdmVudERl
c2NyaXB0b3IgKilhZURlc2NCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzooTlNTdHJp
bmcgKilzCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgaWYgKCFjb3JlRnJhbWUtPmRvY3VtZW50
KCkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGNvcmVG
cmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChzY3JpcHQsIHRydWUpOworICAgIEpTQzo6SlNW
YWx1ZSByZXN1bHQgPSBjb3JlRnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4
Y2VwdGlvbihzY3JpcHQsIHRydWUpOwogICAgIGlmICghcmVzdWx0KSAvLyBGSVhNRTogcGFzcyBl
cnJvcnMKICAgICAgICAgcmV0dXJuIDA7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhjb3Jl
RnJhbWUtPnNjcmlwdCgpLmdsb2JhbE9iamVjdChXZWJDb3JlOjptYWluVGhyZWFkTm9ybWFsV29y
bGQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAKaW5kZXggZTVlZjYzYjRjZDg2NzE3YjM2MGIwOTljODYyZTI3YTYzNTExNTA0My4uODE2MGRh
MTRhYzAwOTM5NjgwYzIyZGVkYzJhMjVkM2MzYTZlMzBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC00MzksNyArNDM5LDcgQEAgdm9p
ZCBQbHVnaW5WaWV3OjpwZXJmb3JtUmVxdWVzdChQbHVnaW5SZXF1ZXN0KiByZXF1ZXN0KQogICAg
IAogICAgIC8vIEV4ZWN1dGluZyBhIHNjcmlwdCBjYW4gY2F1c2UgdGhlIHBsdWdpbiB2aWV3IHRv
IGJlIGRlc3Ryb3llZCwgc28gd2Uga2VlcCBhIHJlZmVyZW5jZSB0byBpdC4KICAgICBSZWZQdHI8
UGx1Z2luVmlldz4gcHJvdGVjdG9yKHRoaXMpOwotICAgIGF1dG8gcmVzdWx0ID0gbV9wYXJlbnRG
cmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChqc1N0cmluZywgcmVxdWVzdC0+c2hvdWxkQWxs
b3dQb3B1cHMoKSk7CisgICAgYXV0byByZXN1bHQgPSBtX3BhcmVudEZyYW1lLT5zY3JpcHQoKS5l
eGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oanNTdHJpbmcsIHJlcXVlc3QtPnNob3VsZEFs
bG93UG9wdXBzKCkpOwogCiAgICAgaWYgKHRhcmdldEZyYW1lTmFtZS5pc051bGwoKSkgewogICAg
ICAgICBDU3RyaW5nIGNzdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXgg
NmVmYWU4ZjYyMjk4NDljYTFmNTk2YjczNTVjZWVmNDNjZmQ2OTBhOC4uYzc3OGUyMmI3MGRjZjE4
NTUyMmNhNmUyMDliODcwOTE5NWI1MTQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1l
LmNwcApAQCAtMjA1NSw3ICsyMDU1LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6c3RyaW5nQnlFdmFs
dWF0aW5nSmF2YVNjcmlwdEluU2NyaXB0V29ybGQoSVdlYlNjcmlwdFdvcmxkKiBpV28KICAgICAv
LyBHZXQgdGhlIGZyYW1lIGZyb21lIHRoZSBnbG9iYWwgb2JqZWN0IHdlJ3ZlIHNldHRsZWQgb24u
CiAgICAgRnJhbWUqIGZyYW1lID0gYW55V29ybGRHbG9iYWxPYmplY3QtPndyYXBwZWQoKS5mcmFt
ZSgpOwogICAgIEFTU0VSVChmcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQg
PSBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQtPndvcmxkKCksIHN0
cmluZywgdHJ1ZSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0
ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbih3b3JsZC0+d29ybGQoKSwgc3RyaW5nLCB0
cnVlKTsKIAogICAgIGlmICghZnJhbWUpIC8vIEluIGNhc2UgdGhlIHNjcmlwdCByZW1vdmVkIG91
ciBmcmFtZSBmcm9tIHRoZSBwYWdlLgogICAgICAgICByZXR1cm4gU19PSzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVmlldy5jcHAKaW5kZXggYTA0NDhiYjAxM2VkZmI0MzM1ZmJjOWFiYzhhN2UzMDgw
NzdmMDA0My4uZTcyZWE0M2VkYjc5YzhhMDIxY2M2ZGZjMThhOTlkNWJjMDhlM2ZiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTM2NjMsNyArMzY2Myw3IEBAIEhSRVNVTFQg
V2ViVmlldzo6c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmcoX0luXyBCU1RS
IHNjcmlwdCwgLy8gYXNzCiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBFX1VO
RVhQRUNURUQ7CiAKLSAgICBhdXRvIHNjcmlwdEV4ZWN1dGlvblJlc3VsdCA9IGNvcmVGcmFtZS0+
c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChXVEY6OlN0cmluZyhzY3JpcHQpLCB0cnVlKTsKKyAgICBh
dXRvIHNjcmlwdEV4ZWN1dGlvblJlc3VsdCA9IGNvcmVGcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNj
cmlwdElnbm9yaW5nRXhjZXB0aW9uKFdURjo6U3RyaW5nKHNjcmlwdCksIHRydWUpOwogICAgIGlm
ICghc2NyaXB0RXhlY3V0aW9uUmVzdWx0KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogICAgIGVs
c2UgaWYgKHNjcmlwdEV4ZWN1dGlvblJlc3VsdC5pc1N0cmluZygpKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385653</attachid>
            <date>2019-12-13 16:15:05 -0800</date>
            <delta_ts>2019-12-13 19:12:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205151-20191213161504.patch</filename>
            <type>text/plain</type>
            <size>54369</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDQ5YjI1OTQ5YjkxNzNh
ZjAwODZjNDc1NjFlNjU1NTAyODI5M2FjMy4uMzkzYzc0MmFkMmVjYjhiZWY5OTNmZjU3OWIwYzdi
YWUxN2U3YTNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE5LTEyLTEzICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRD
b250cm9sbGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChS
ZWZhY3Rvciwgbm8gYmVoYXZpb3IgY2hhbmdlKS4KKworICAgICAgICBUaGVyZSdzIHNvIG1hbnkg
RXhjZXB0aW9uRGV0YWlscyogbnVsbCBwb2ludGVycyBiZWluZyBwYXNzZWQgYXJvdW5kIGluIHRo
ZSBTY3JpcHRDb250cm9sbGVyCisgICAgICAgIGZhbWlseSBvZiBmdW5jdGlvbnMuCisKKyAgICAg
ICAgTGV0J3MgbWFrZSBpdCBhIGxpdHRsZSBtb3JlIGV4cGxpY2l0IHdoaWNoIGNhbGxlcnMgZ2V0
IGV4Y2VwdGlvbnMgYW5kIHdoaWNoIGRvbid0LgorCisKKyAgICAgICAgKiBNb2R1bGVzL3BsdWdp
bnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW06CisgICAgICAgIChXZWJDb3JlOjpRdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6ZW5zdXJlUmVwbGFjZW1lbnRTY3JpcHRJbmplY3RlZCk6
CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKToKKworICAgICAgICAqIGJpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJv
bGxlcjo6ZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4
Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2Ny
aXB0SW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRl
VXNlckFnZW50U2NyaXB0SW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9s
bGVyOjpleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgIAorICAgICAgICAqIGNv
bnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9j
ZXNzQ29udGVudFJ1bGVMaXN0c0ZvckxvYWQpOgorICAgICAgICAKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZVBsdWdJbnNJbmpl
Y3RlZFNjcmlwdCk6CisgICAgICAgIAorICAgICAgICAqIGRvbS9TY3JpcHRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVDbGFzc2ljU2NyaXB0KToK
KyAgICAgICAgCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZU1lZGlhQ29udHJvbHNJbmplY3RlZFNj
cmlwdCk6CisgICAgICAgIAorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWw6OmV2YWx1YXRlQXNCb29sZWFuKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWw6OmV2YWx1YXRlT25Mb2FkKToKKyAgICAgICAgCisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQpOgorICAg
ICAgICAKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RmlsdGVyOjpkaWREZWNpZGUpOgorICAgICAgICAKKyAgICAgICAgKiBwYWdl
L0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjppbmplY3RVc2VyU2NyaXB0SW1t
ZWRpYXRlbHkpOgorICAgICAgICAKKyAgICAgICAgKiB4bWwvWE1MVHJlZVZpZXdlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpYTUxUcmVlVmlld2VyOjp0cmFuc2Zvcm1Eb2N1bWVudFRvVHJlZVZp
ZXcpOgorCiAyMDE5LTEyLTEzICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAg
ICAgICBNYWNDYXRhbHlzdCBidWlsZCBvZiBsaWJBTkdMRSBpcyBpbnN0YWxsZWQgaW4gdGhlIGlu
Y29ycmVjdCBsb2NhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhNTRkMzk3MzQyYjljNGQ5YTVlMmM1YWIwMWUy
YjZiYWFjZmQ1ZDYyLi5lMGY5YzAyYjVkM2YzMGYzZWYzMjgzYWQyMWFkNjMyODM0NTRiNWRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE5LTEyLTEzICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRDb250cm9sbGVyJ3MgcHJv
bGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAgIFJldmlld2VkIGJ5IEFs
ZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoK
KyAgICAgICAgKFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9l
dmFsdWF0ZUphdmFTY3JpcHQ6Zm9yY2VVc2VyR2VzdHVyZTpjb21wbGV0aW9uSGFuZGxlcjpdKToK
KworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGVyZm9ybUphdmFT
Y3JpcHRVUkxSZXF1ZXN0KToKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OmV2YWx1YXRlT3JRdWV1ZUV4cHJlc3Npb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OmV2YWx1
YXRlUXVldWVkRXhwcmVzc2lvbnMpOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0KToKKwog
MjAxOS0xMi0xMyAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IEFkZCBNRVNTQUdFX0NIRUNLKCkgZm9yIHNlbGVjdGVkSW5kZXggaW4gTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6U2hvd1BvcHVwTWVudQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc2
MzdiZmY1MzUwYjk5NmJiZjJhMjg5MGVlZjUxMTE0YWJhNTQ5YmEuLmFhZTVmMTFkNWIwNzQzYTJm
N2NjYTczNjNiNjUyYjA4YTk1ZGNjNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMSBAQAorMjAxOS0xMi0xMyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVmYWN0b3IgU2NyaXB0Q29udHJvbGxlcidzIHByb2xpZmVyYXRpb24g
b2YgRXhjZXB0aW9uRGV0YWlscyouCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDUxNTEKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVu
c2VuLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZCk6CisgICAgICAgIAorICAgICAgICAqIFdl
YlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9zdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0RnJvbVN0cmluZzpmb3JjZVVzZXJHZXN0dXJlOl0pOgorICAgICAgICAoLVtX
ZWJGcmFtZSBfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6d2l0aEdsb2Jh
bE9iamVjdDppblNjcmlwdFdvcmxkOl0pOgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXZWJWaWV3IGFlRGVzY0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3Ry
aW5nOl0pOgorCiAyMDE5LTEyLTEyICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+
CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjIyOTkzMCwgcjIzMTA2Myk6IFdlYktpdExlZ2FjeS54
Y2NvbmZpZyBvdmVyd3JpdGVzIE9USEVSX0NGTEFHUywgT1RIRVJfQ1BMVVNQTFVTRkxBR1MgYW5k
IE9USEVSX0xERkxBR1MgZnJvbSBCYXNlLnhjY29uZmlnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKaW5kZXggNDIwMTRkOTlkNTAyMTZmYTkyZDQ5YTU5MmEwMDY3ODE5MmQ2NGQ0MS4uMWUyOTI1
MjQ2NjljOTcwMzkxMDkzZTJmMGYzM2ZhMzAwZjJiMGE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE5LTEyLTEzICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTY3JpcHRDb250cm9sbGVyJ3MgcHJv
bGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE1MQorCisgICAgICAgIFJldmlld2VkIGJ5IEFs
ZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QpOgorCisgICAgICAgICog
V2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OnN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHRJblNjcmlwdFdvcmxkKToKKworICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAo
V2ViVmlldzo6c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmcpOgorICAgICAg
ICAKIDIwMTktMTItMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBQYWdlQ29uZmlndXJhdGlvbjo6ZHJhZ0NsaWVudCBzaG91bGQgdXNlIGEgc21hcnQgcG9pbnRl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCmluZGV4IDk4MTI2ZTAzZjNlMzIxNDc1Zjc1MTE0NjQy
YWQ4ZDBiMjQ4YmFkMjMuLjAzZDIxZGU3ZDVhYzA2OWIyY2FhM2Q5NjExYjk4Zjg0YTM1MTdmNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVp
Y2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KQEAgLTE1OCw3ICsxNTgsNyBAQCBib29sIFF1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50OjplbnN1cmVSZXBsYWNlbWVudFNjcmlwdEluamVjdGVkKCkK
ICAgICBpZiAocmVwbGFjZW1lbnRGdW5jdGlvbi5pc0Z1bmN0aW9uKHZtKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgCi0gICAgc2NyaXB0Q29udHJvbGxlci5ldmFsdWF0ZUluV29ybGQoU2Ny
aXB0U291cmNlQ29kZShxdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudFNjcmlwdCgpKSwgd29ybGQp
OworICAgIHNjcmlwdENvbnRyb2xsZXIuZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRpb24o
U2NyaXB0U291cmNlQ29kZShxdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudFNjcmlwdCgpKSwgd29y
bGQpOwogICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAgTE9H
KFBsdWdpbnMsICIlcCAtIEV4Y2VwdGlvbiB3aGVuIGV2YWx1YXRpbmcgUXVpY2tUaW1lIHBsdWdp
biByZXBsYWNlbWVudCBzY3JpcHQiLCB0aGlzKTsKICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRp
b24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3Bw
CmluZGV4IDI4Y2Y1NjQ2NmJjYTNjOWMyZDIwODg5NTFjOTgwODJmZGI1MWE4NTYuLjhlNGM3YjM4
MTI0NGU3NzZiZGQ1ODM0YWU0MTkzNmQ3ZGNjNjIyOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQg
U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICBpZiAobV9m
dW5jdGlvbikKICAgICAgICAgZXhlY3V0ZUZ1bmN0aW9uSW5Db250ZXh0KHdpbmRvdywgd2luZG93
LT5wcm94eSgpLCBkb2N1bWVudCk7CiAgICAgZWxzZQotICAgICAgICBmcmFtZS0+c2NyaXB0KCku
ZXhlY3V0ZVNjcmlwdEluV29ybGQobV9pc29sYXRlZFdvcmxkLCBtX2NvZGUpOworICAgICAgICBm
cmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihtX2lz
b2xhdGVkV29ybGQsIG1fY29kZSk7CiB9CiAKIHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpleGVjdXRl
KFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggYjFmZGU4NTAyZTRkYTBi
MGY2OWY0ODE2ZDRhNDEyZWM0ZWU0YzczZi4uNWY1YmFhMjA2MzgzNThjMGJiODJiMzdiY2VhMjZj
YWQ5OGVmNjRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5jcHAKQEAgLTEwNyw3ICsxMDcsMTMgQEAgU2NyaXB0Q29udHJvbGxlcjo6flNjcmlw
dENvbnRyb2xsZXIoKQogICAgIH0KIH0KIAotSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFs
dWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCwgRXhjZXB0aW9uRGV0YWlscyogZXhjZXB0aW9uRGV0YWlscykKK0pTQzo6
SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlv
bihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBET01XcmFwcGVyV29ybGQmIHdv
cmxkKQoreworICAgIGF1dG8gcmVzdWx0ID0gZXZhbHVhdGVJbldvcmxkKHNvdXJjZUNvZGUsIHdv
cmxkKTsKKyAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0LnZhbHVlKCkgOiBKU0M6OkpTVmFsdWUg
eyB9OworfQorCitWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5X
b3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBET01XcmFwcGVyV29ybGQm
IHdvcmxkKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHdvcmxkLnZtKCkpOwogCkBAIC0xMzUs
MTkgKzE0MSwyMyBAQCBKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZChj
b25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBETwogCiAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRFdmFsdWF0ZVNjcmlwdChtX2ZyYW1lKTsKIAorICAgIE9wdGlvbmFs
PEV4Y2VwdGlvbkRldGFpbHM+IG9wdGlvbmFsRGV0YWlsczsKICAgICBpZiAoZXZhbHVhdGlvbkV4
Y2VwdGlvbikgewotICAgICAgICByZXBvcnRFeGNlcHRpb24oJmdsb2JhbE9iamVjdCwgZXZhbHVh
dGlvbkV4Y2VwdGlvbiwgc291cmNlQ29kZS5jYWNoZWRTY3JpcHQoKSwgZXhjZXB0aW9uRGV0YWls
cyk7Ci0gICAgICAgIG1fc291cmNlVVJMID0gc2F2ZWRTb3VyY2VVUkw7Ci0gICAgICAgIHJldHVy
biB7IH07CisgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZGV0YWlsczsKKyAgICAgICAgcmVwb3J0
RXhjZXB0aW9uKCZnbG9iYWxPYmplY3QsIGV2YWx1YXRpb25FeGNlcHRpb24sIHNvdXJjZUNvZGUu
Y2FjaGVkU2NyaXB0KCksICZkZXRhaWxzKTsKKyAgICAgICAgb3B0aW9uYWxEZXRhaWxzID0gV1RG
TW92ZShkZXRhaWxzKTsKICAgICB9CiAKICAgICBtX3NvdXJjZVVSTCA9IHNhdmVkU291cmNlVVJM
OworICAgIGlmIChvcHRpb25hbERldGFpbHMpCisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZCgqb3B0aW9uYWxEZXRhaWxzKTsKKwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotSlNW
YWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBz
b3VyY2VDb2RlLCBFeGNlcHRpb25EZXRhaWxzKiBleGNlcHRpb25EZXRhaWxzKQorSlNDOjpKU1Zh
bHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2Ny
aXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKIHsKLSAgICByZXR1cm4gZXZhbHVhdGVJbldvcmxk
KHNvdXJjZUNvZGUsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBleGNlcHRpb25EZXRhaWxzKTsK
KyAgICByZXR1cm4gZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oc291cmNlQ29kZSwg
bWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwogfQogCiB2b2lkIFNjcmlwdENvbnRyb2xsZXI6Omxv
YWRNb2R1bGVTY3JpcHRJbldvcmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQs
IGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgUmVmPE1vZHVsZUZldGNoUGFyYW1ldGVycz4mJiB0
b3BMZXZlbEZldGNoUGFyYW1ldGVycywgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKQEAgLTU0OCwy
NSArNTU4LDQyIEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJTY3JpcHRPYmplY3RzKCkK
ICNlbmRpZgogfQogCi1KU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldv
cmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZv
cmNlVXNlckdlc3R1cmUsIEV4Y2VwdGlvbkRldGFpbHMqIGV4Y2VwdGlvbkRldGFpbHMpCitKU0M6
OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9u
KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCit7CisgICAgcmV0
dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24obWFpblRocmVhZE5vcm1h
bFdvcmxkKCksIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7Cit9CisKK0pTQzo6SlNWYWx1ZSBT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERP
TVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNl
ckdlc3R1cmUpCit7CisgICAgYXV0byByZXN1bHQgPSBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3Js
ZCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlKTsKKyAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0
LnZhbHVlKCkgOiBKU0M6OkpTVmFsdWUgeyB9OworfQorCitWYWx1ZU9yRXhjZXB0aW9uIFNjcmlw
dENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQs
IGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiB7CiAgICAgVXNl
ckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihmb3JjZVVzZXJHZXN0dXJlID8gT3B0
aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkg
OiBXVEY6Om51bGxvcHQpOwogICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNlQ29kZShzY3JpcHQs
IFVSTChtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpKSwgVGV4dFBvc2l0aW9uKCksIEpTQzo6U291
cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtLCBDYWNoZWRTY3JpcHRGZXRjaGVyOjpjcmVh
dGUobV9mcmFtZS5kb2N1bWVudCgpLT5jaGFyc2V0KCkpKTsKIAorICAgIC8vIEZJWE1FOiBJbnN0
ZWFkIG9mIHJldHVybmluZyBhbiBlbXB0eSBKU1ZhbHVlLCBzaG91bGQgcmV0dXJuIGFuIEV4Y2Vw
dGlvbkRldGFpbHMuCiAgICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNj
cmlwdCkgfHwgaXNQYXVzZWQoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBl
dmFsdWF0ZUluV29ybGQoc291cmNlQ29kZSwgd29ybGQsIGV4Y2VwdGlvbkRldGFpbHMpOworICAg
IHJldHVybiBldmFsdWF0ZUluV29ybGQoc291cmNlQ29kZSwgd29ybGQpOwogfQogCi1KU1ZhbHVl
IFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1
cmUsIEV4Y2VwdGlvbkRldGFpbHMqIGV4Y2VwdGlvbkRldGFpbHMpCitKU0M6OkpTVmFsdWUgU2Ny
aXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2Vw
dGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBm
b3JjZVVzZXJHZXN0dXJlKQoreworICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0ZVVzZXJBZ2VudFNj
cmlwdEluV29ybGQod29ybGQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7CisgICAgcmV0dXJu
IHJlc3VsdCA/IHJlc3VsdC52YWx1ZSgpIDogSlNDOjpKU1ZhbHVlIHsgfTsKK30KK1ZhbHVlT3JF
eGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQo
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VV
c2VyR2VzdHVyZSkKIHsKICAgICBhdXRvJiBkb2N1bWVudCA9ICptX2ZyYW1lLmRvY3VtZW50KCk7
CiAgICAgaWYgKCFzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoZG9jdW1lbnQpKQotICAgICAg
ICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0
YWlscyB7ICJVbmFibGUgdG8gcnVuIHVzZXIgYWdlbnQgc2NyaXB0cyBpbiB0aGlzIGRvY3VtZW50
IGZvciBzZWN1cml0eSByZWFzb25zIl9zLCAwLCAwLCB7IH0gfSk7CiAKICAgICBkb2N1bWVudC5z
ZXRIYXNFdmFsdWF0ZWRVc2VyQWdlbnRTY3JpcHRzKCk7Ci0gICAgcmV0dXJuIGV4ZWN1dGVTY3Jp
cHRJbldvcmxkKHdvcmxkLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIGV4Y2VwdGlvbkRldGFp
bHMpOworICAgIHJldHVybiBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3JsZCwgc2NyaXB0LCBmb3Jj
ZVVzZXJHZXN0dXJlKTsKIH0KIAogYm9vbCBTY3JpcHRDb250cm9sbGVyOjpzaG91bGRBbGxvd1Vz
ZXJBZ2VudFNjcmlwdHMoRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdApAQCAtNTk4LDI0ICs2MjUs
NiBAQCBib29sIFNjcmlwdENvbnRyb2xsZXI6OmNhbkV4ZWN1dGVTY3JpcHRzKFJlYXNvbkZvckNh
bGxpbmdDYW5FeGVjdXRlU2NyaXB0cyByZWFzbwogICAgIHJldHVybiBtX2ZyYW1lLmxvYWRlcigp
LmNsaWVudCgpLmFsbG93U2NyaXB0KG1fZnJhbWUuc2V0dGluZ3MoKS5pc1NjcmlwdEVuYWJsZWQo
KSk7CiB9CiAKLUpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBT
dHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBFeGNlcHRpb25EZXRhaWxzKiBl
eGNlcHRpb25EZXRhaWxzKQotewotICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRp
Y2F0b3IoZm9yY2VVc2VyR2VzdHVyZSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0
YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KTsKLSAgICByZXR1cm4g
ZXhlY3V0ZVNjcmlwdChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdCwgVVJMKG1fZnJhbWUuZG9jdW1l
bnQoKS0+dXJsKCkpLCBUZXh0UG9zaXRpb24oKSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5
cGU6OlByb2dyYW0sIENhY2hlZFNjcmlwdEZldGNoZXI6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50
KCktPmNoYXJzZXQoKSkpLCBleGNlcHRpb25EZXRhaWxzKTsKLX0KLQotSlNWYWx1ZSBTY3JpcHRD
b250cm9sbGVyOjpleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNv
ZGUsIEV4Y2VwdGlvbkRldGFpbHMqIGV4Y2VwdGlvbkRldGFpbHMpCi17Ci0gICAgaWYgKCFjYW5F
eGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkgfHwgaXNQYXVzZWQoKSkKLSAgICAg
ICAgcmV0dXJuIHsgfTsgLy8gRklYTUU6IFdvdWxkIGpzTnVsbCBiZSBiZXR0ZXI/Ci0KLSAgICAv
LyBGSVhNRTogUHJldmVudGluZyBGcmFtZSBmcm9tIGJlaW5nIGRlc3Ryb3llZCBpcyBlc3NlbnRp
YWxseSB1bm5lY2Vzc2FyeS4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY0NzYzCi0gICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IobV9mcmFtZSk7IC8vIFNj
cmlwdCBleGVjdXRpb24gY2FuIGRlc3Ryb3kgdGhlIGZyYW1lLCBhbmQgdGh1cyB0aGUgU2NyaXB0
Q29udHJvbGxlci4KLQotICAgIHJldHVybiBldmFsdWF0ZShzb3VyY2VDb2RlLCBleGNlcHRpb25E
ZXRhaWxzKTsKLX0KLQogYm9vbCBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0
VVJMKGNvbnN0IFVSTCYgdXJsLCBTaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwg
c2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMKQogewogICAgIGlmICghV1RGOjpw
cm90b2NvbElzSmF2YVNjcmlwdCh1cmwpKQpAQCAtNjMyLDcgKzY0MSw3IEBAIGJvb2wgU2NyaXB0
Q29udHJvbGxlcjo6ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChjb25zdCBVUkwmIHVybCwgU2hvdWxk
UmVwbGFjZURvY3VtCiAgICAgY29uc3QgaW50IGphdmFzY3JpcHRTY2hlbWVMZW5ndGggPSBzaXpl
b2YoImphdmFzY3JpcHQ6IikgLSAxOwogCiAgICAgU3RyaW5nIGRlY29kZWRVUkwgPSBkZWNvZGVV
UkxFc2NhcGVTZXF1ZW5jZXModXJsLnN0cmluZygpKTsKLSAgICBhdXRvIHJlc3VsdCA9IGV4ZWN1
dGVTY3JpcHQoZGVjb2RlZFVSTC5zdWJzdHJpbmcoamF2YXNjcmlwdFNjaGVtZUxlbmd0aCkpOwor
ICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGRlY29kZWRV
Ukwuc3Vic3RyaW5nKGphdmFzY3JpcHRTY2hlbWVMZW5ndGgpKTsKIAogICAgIC8vIElmIGV4ZWN1
dGluZyBzY3JpcHQgY2F1c2VkIHRoaXMgZnJhbWUgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBwYWdl
LCB3ZQogICAgIC8vIGRvbid0IHdhbnQgdG8gdHJ5IHRvIHJlcGxhY2UgaXRzIGRvY3VtZW50IQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDEz
Mjc0YTVkMWNmNmQ1MmI0YTI2ZWM0OGRiNTAwYWJmZmUzM2VkNmIuLmEzZjZjM2FmNThjMDFhMDE3
MDgzNTIzOWJhYWY1OTU2MzM5MGNmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTcwLDYgKzcwLDggQEAgZW51bSBSZWFzb25Gb3JDYWxs
aW5nQ2FuRXhlY3V0ZVNjcmlwdHMgewogICAgIE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0CiB9Owog
Cit1c2luZyBWYWx1ZU9yRXhjZXB0aW9uID0gRXhwZWN0ZWQ8SlNDOjpKU1ZhbHVlLCBFeGNlcHRp
b25EZXRhaWxzPjsKKwogY2xhc3MgU2NyaXB0Q29udHJvbGxlciA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxTY3JpcHRDb250cm9sbGVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAK
QEAgLTg4LDEwICs5MCwxMSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBnZXRBbGxXb3Js
ZHMoVmVjdG9yPFJlZjxET01XcmFwcGVyV29ybGQ+PiYpOwogCi0gICAgSlNDOjpKU1ZhbHVlIGV4
ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIEV4Y2VwdGlvbkRldGFpbHMqID0g
bnVsbHB0cik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIGV4ZWN1dGVTY3JpcHQo
Y29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlLCBFeGNl
cHRpb25EZXRhaWxzKiA9IG51bGxwdHIpOwotICAgIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0
SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3Jj
ZVVzZXJHZXN0dXJlID0gZmFsc2UsIEV4Y2VwdGlvbkRldGFpbHMqID0gbnVsbHB0cik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIGV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxk
KERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdl
c3R1cmUsIEV4Y2VwdGlvbkRldGFpbHMqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQg
SlNDOjpKU1ZhbHVlIGV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTdHJpbmcm
IHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOworICAgIEpTQzo6SlNWYWx1
ZSBleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYs
IGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUgPSBmYWxzZSk7Cisg
ICAgVmFsdWVPckV4Y2VwdGlvbiBleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQm
LCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5X
b3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpOworICAgIFdFQkNPUkVfRVhQT1JUIFZhbHVlT3JF
eGNlcHRpb24gZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwg
Y29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSk7CiAKICAgICBib29s
IHNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0cyhEb2N1bWVudCYpIGNvbnN0OwogCkBAIC0xMDIs
OCArMTA1LDkgQEAgcHVibGljOgogICAgIC8vIERhcndpbiBpcyBhbiBleGNlcHRpb24gdG8gdGhp
cyBydWxlOiBpdCBpcyBPSyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSBhbnkgdGhyZWFkLCBl
dmVuIHJlZW50cmFudGx5LgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsK
IAotICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRXhj
ZXB0aW9uRGV0YWlscyogPSBudWxscHRyKTsKLSAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJbldv
cmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmLCBFeGNlcHRpb25E
ZXRhaWxzKiA9IG51bGxwdHIpOworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUlnbm9yaW5nRXhj
ZXB0aW9uKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKKyAgICBKU0M6OkpTVmFsdWUgZXZhbHVh
dGVJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdy
YXBwZXJXb3JsZCYpOworICAgIFZhbHVlT3JFeGNlcHRpb24gZXZhbHVhdGVJbldvcmxkKGNvbnN0
IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmKTsKIAogICAgIHZvaWQgbG9hZE1v
ZHVsZVNjcmlwdEluV29ybGQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcmIG1v
ZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYsIERPTVdyYXBwZXJXb3JsZCYp
OwogICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlwdChMb2FkYWJsZU1vZHVsZVNjcmlwdCYsIGNvbnN0
IFN0cmluZyYgbW9kdWxlTmFtZSwgUmVmPE1vZHVsZUZldGNoUGFyYW1ldGVycz4mJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvbnNCYWNrZW5kLmNwcAppbmRleCBhNzU1ZmNiOTNjYTEyMjIyOGU3MmE0NTk0OGVmYjQx
MDQyY2YxNWQ3Li41MmYzMTkyYzViMjAwMmY1MTgzOGE3NDQ5Mjg3YjZlZTgwYTM1NzNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25zQmFja2VuZC5jcHAKQEAgLTI0MSw3ICsyNDEsNyBAQCBDb250ZW50UnVsZUxp
c3RSZXN1bHRzIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0NvbnRlbnRSdWxlTGlz
dHNGb3JMb2FkKAogICAgICAgICAgICAgICAgICYmICgoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UodXJsLmhvc3QoKSwgInd3dy5nb29nbGUtYW5hbHl0aWNzLmNvbSIpICYmIGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHVybC5wYXRoKCksICIvYW5hbHl0aWNzLmpzIikpCiAgICAg
ICAgICAgICAgICAgICAgIHx8IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh1cmwuaG9z
dCgpLCAid3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tIikgJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UodXJsLnBhdGgoKSwgIi9ndG0uanMiKSkpKSB7CiAgICAgICAgICAgICAgICAgaWYg
KGF1dG8qIGZyYW1lID0gY3VycmVudERvY3VtZW50LT5mcmFtZSgpKQotICAgICAgICAgICAgICAg
ICAgICBmcmFtZS0+c2NyaXB0KCkuZXZhbHVhdGUoU2NyaXB0U291cmNlQ29kZSB7ICJ0cnkgeyB3
aW5kb3cuZGF0YUxheWVyLmhpZGUuZW5kKCk7IGNvbnNvbGUubG9nKCdDYWxsZWQgd2luZG93LmRh
dGFMYXllci5oaWRlLmVuZCgpIGluIGZyYW1lICcgKyBkb2N1bWVudC5VUkwgKyAnIGJlY2F1c2Ug
dGhlIGNvbnRlbnQgYmxvY2tlciBibG9ja2VkIHRoZSBsb2FkIG9mIHRoZSBodHRwczovL3d3dy5n
b29nbGUtYW5hbHl0aWNzLmNvbS9hbmFseXRpY3MuanMgc2NyaXB0Jyk7IH0gY2F0Y2ggKGUpIHsg
fSJfcyB9KTsKKyAgICAgICAgICAgICAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmV2YWx1YXRlSWdu
b3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29kZSB7ICJ0cnkgeyB3aW5kb3cuZGF0YUxheWVy
LmhpZGUuZW5kKCk7IGNvbnNvbGUubG9nKCdDYWxsZWQgd2luZG93LmRhdGFMYXllci5oaWRlLmVu
ZCgpIGluIGZyYW1lICcgKyBkb2N1bWVudC5VUkwgKyAnIGJlY2F1c2UgdGhlIGNvbnRlbnQgYmxv
Y2tlciBibG9ja2VkIHRoZSBsb2FkIG9mIHRoZSBodHRwczovL3d3dy5nb29nbGUtYW5hbHl0aWNz
LmNvbS9hbmFseXRpY3MuanMgc2NyaXB0Jyk7IH0gY2F0Y2ggKGUpIHsgfSJfcyB9KTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGYz
ZjdmMDMyZjIwZTFhNWEzZjNjOGYxM2QyMjcwOTlmNWI4MmIxZTkuLjE3ZWRjOGJjNTgyZjM2NzQ3
YzdiYzQ0YWJlOWRkNWE0YmYwY2JkYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNzIw
MSw3ICs3MjAxLDcgQEAgdm9pZCBEb2N1bWVudDo6ZW5zdXJlUGx1Z0luc0luamVjdGVkU2NyaXB0
KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiAgICAgICAgIGpzU3RyaW5nID0gU3RyaW5nKHBsdWdJ
bnNKYXZhU2NyaXB0LCBzaXplb2YocGx1Z0luc0phdmFTY3JpcHQpKTsKIAogICAgIHNldEhhc0V2
YWx1YXRlZFVzZXJBZ2VudFNjcmlwdHMoKTsKLSAgICBzY3JpcHRDb250cm9sbGVyLmV2YWx1YXRl
SW5Xb3JsZChTY3JpcHRTb3VyY2VDb2RlKGpzU3RyaW5nKSwgd29ybGQpOworICAgIHNjcmlwdENv
bnRyb2xsZXIuZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29k
ZShqc1N0cmluZyksIHdvcmxkKTsKIAogICAgIG1faGFzSW5qZWN0ZWRQbHVnSW5zU2NyaXB0ID0g
dHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAppbmRleCBlMGQ5NjdiNDU3
NGJiMzUzMDg1ZmIzNzc2NTA5NGNjMmY4YTM1Mzg1Li4xNTExNzUxOWVmOTEzNDY3Njc3ZDI1ODY1
M2NkMjcyMDE3N2U4MDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCkBAIC0z
ODcsNyArMzg3LDcgQEAgdm9pZCBTY3JpcHRFbGVtZW50OjpleGVjdXRlQ2xhc3NpY1NjcmlwdChj
b25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQogICAgIElnbm9yZURlc3RydWN0aXZl
V3JpdGVDb3VudEluY3JlbWVudGVyIGlnbm9yZURlc2N0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1l
bnRlcihtX2lzRXh0ZXJuYWxTY3JpcHQgPyAmZG9jdW1lbnQgOiBudWxscHRyKTsKICAgICBDdXJy
ZW50U2NyaXB0SW5jcmVtZW50ZXIgY3VycmVudFNjcmlwdEluY3JlbWVudGVyKGRvY3VtZW50LCBt
X2VsZW1lbnQpOwogCi0gICAgZnJhbWUtPnNjcmlwdCgpLmV2YWx1YXRlKHNvdXJjZUNvZGUpOwor
ICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKHNvdXJjZUNvZGUp
OwogfQogCiB2b2lkIFNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVNb2R1bGVTY3JpcHQoTG9hZGFibGVN
b2R1bGVTY3JpcHQmIGxvYWRhYmxlTW9kdWxlU2NyaXB0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZWI1ZmY1NjdlZDgxMGRmYzE4NTEwNjgwMzI5M2EyZDU2
NGNlMjM0OS4uNzMwYjRlMzg5ZTc4M2ZlNTY2NzU1YjhhYzM2ODgxMTlmMDk2OTE2NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC03MzE3LDcgKzczMTcsNyBA
QCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZU1lZGlhQ29udHJvbHNJbmplY3RlZFNjcmlw
dCgpCiAjZWxzZQogICAgICAgICBVUkwgc2NyaXB0VVJMOwogI2VuZGlmCi0gICAgICAgIHNjcmlw
dENvbnRyb2xsZXIuZXZhbHVhdGVJbldvcmxkKFNjcmlwdFNvdXJjZUNvZGUobWVkaWFDb250cm9s
c1NjcmlwdCwgV1RGTW92ZShzY3JpcHRVUkwpKSwgd29ybGQpOworICAgICAgICBzY3JpcHRDb250
cm9sbGVyLmV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUo
bWVkaWFDb250cm9sc1NjcmlwdCwgV1RGTW92ZShzY3JpcHRVUkwpKSwgd29ybGQpOwogICAgICAg
ICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAgICAgICAgICBzY29wZS5j
bGVhckV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
Y3BwCmluZGV4IDFiM2M4ODc2Y2M2ODczMWI1ZDYyOGRkMmRlMmI5ZDYwNGYyYTQ1ZmIuLjBkODMx
OTI1Mjc4MmRhOTVhNzJlZDM2Y2E1ZjA0OGM3Y2Q4Yzg0NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAK
QEAgLTQyMCw3ICs0MjAsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmRp
c3BhdGNoTWVzc2FnZUFzeW5jKGNvbnN0IFN0cmluZyYgbWVzc2FnZU9iagogYm9vbCBJbnNwZWN0
b3JGcm9udGVuZENsaWVudExvY2FsOjpldmFsdWF0ZUFzQm9vbGVhbihjb25zdCBTdHJpbmcmIGV4
cHJlc3Npb24pCiB7CiAgICAgYXV0byYgc3RhdGUgPSAqbWFpbldvcmxkRXhlY1N0YXRlKCZtX2Zy
b250ZW5kUGFnZS0+bWFpbkZyYW1lKCkpOwotICAgIHJldHVybiBtX2Zyb250ZW5kUGFnZS0+bWFp
bkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChleHByZXNzaW9uKS50b1dURlN0cmluZygm
c3RhdGUpID09ICJ0cnVlIjsKKyAgICByZXR1cm4gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgp
LnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihleHByZXNzaW9uKS50b1dU
RlN0cmluZygmc3RhdGUpID09ICJ0cnVlIjsKIH0KIAogdm9pZCBJbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsOjpldmFsdWF0ZU9uTG9hZChjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24pCkBAIC00
MzEsNyArNDMxLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpldmFsdWF0
ZU9uTG9hZChjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24pCiAgICAgfQogCiAgICAgSlNDOjpTdXNw
ZW5kRXhjZXB0aW9uU2NvcGUgc2NvcGUoJm1fZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9s
bGVyKCkudm0oKSk7Ci0gICAgbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV2
YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUoZXhwcmVzc2lvbikpOworICAgIG1fZnJvbnRlbmRQYWdl
LT5tYWluRnJhbWUoKS5zY3JpcHQoKS5ldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNv
dXJjZUNvZGUoZXhwcmVzc2lvbikpOwogfQogCiBQYWdlKiBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsOjppbnNwZWN0ZWRQYWdlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCAwMWVkZDAwNjBk
ZTM2MmMxYWI3YjcwMjQ3NWFlODM4MjIyNzlhODAwLi5jZjg5ZjllYjUwNTIzMjZmY2Y4Y2JkMjZk
ODU5NmNmNDcyNGMyMzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC03NzMsNyArNzczLDcgQEAgdm9pZCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSYgZnJh
bWUpCiAgICAgaWYgKG1fYm9vdHN0cmFwU2NyaXB0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgZnJhbWUuc2NyaXB0KCkuZXZhbHVhdGUoU2NyaXB0U291cmNlQ29kZShtX2Jvb3Rz
dHJhcFNjcmlwdCwgVVJMIHsgVVJMKCksICJ3ZWItaW5zcGVjdG9yOi8vYm9vdHN0cmFwLmpzIl9z
IH0pKTsKKyAgICBmcmFtZS5zY3JpcHQoKS5ldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKFNjcmlw
dFNvdXJjZUNvZGUobV9ib290c3RyYXBTY3JpcHQsIFVSTCB7IFVSTCgpLCAid2ViLWluc3BlY3Rv
cjovL2Jvb3RzdHJhcC5qcyJfcyB9KSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpk
aWRQYWludChSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IGI0OThhMjI0YjE5MGM2
Y2U4NDRlYjlkZDdlYjliN2ExMDVkNzZkYzUuLjZlYWZjYTM0ZTgxYTM5OTJkZDFmYjgwZjkwMzJl
Yjk2YzhiOWI3NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50Rmls
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAg
LTIzMyw3ICsyMzMsNyBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRpZERlY2lkZShTdGF0ZSBzdGF0
ZSkKICAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LmlzRW1wdHkoKSAmJiBmcmFt
ZSkgewogICAgICAgICB1bmJsb2NrSGFuZGxlci53cmFwV2l0aERlY2lzaW9uSGFuZGxlcihbc2Ny
aXB0Q29udHJvbGxlciA9IG1ha2VXZWFrUHRyKGZyYW1lLT5zY3JpcHQoKSksIHNjcmlwdCA9IHVu
YmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0Lmlzb2xhdGVkQ29weSgpXShib29sIHVuYmxvY2tlZCkg
ewogICAgICAgICAgICAgaWYgKCF1bmJsb2NrZWQgJiYgc2NyaXB0Q29udHJvbGxlcikKLSAgICAg
ICAgICAgICAgICBzY3JpcHRDb250cm9sbGVyLT5leGVjdXRlU2NyaXB0KHNjcmlwdCk7CisgICAg
ICAgICAgICAgICAgc2NyaXB0Q29udHJvbGxlci0+ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0
aW9uKHNjcmlwdCk7CiAgICAgICAgIH0pOwogICAgIH0KICAgICBtX2RvY3VtZW50TG9hZGVyLmZy
YW1lTG9hZGVyKCktPmNsaWVudCgpLmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV1RGTW92ZSh1
bmJsb2NrSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCAyMmNjMWZkMTViYzE3Y2Zk
ODU2ZTkxNGMzOGE4NmIwYzQyYWM3NGJjLi5lMDgzM2RjMDgzM2Y1OWE5ZWIyNjM1MDYxMzFjZGJi
OTdjOWY5MjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtNjM0LDcgKzYzNCw3IEBAIHZvaWQg
RnJhbWU6OmluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseShET01XcmFwcGVyV29ybGQmIHdvcmxk
LCBjb25zdCBVc2VyU2NyaXB0CiAKICAgICBkb2N1bWVudC0+c2V0QXNSdW5uaW5nVXNlclNjcmlw
dHMoKTsKICAgICBsb2FkZXIoKS5jbGllbnQoKS53aWxsSW5qZWN0VXNlclNjcmlwdCh3b3JsZCk7
Ci0gICAgbV9zY3JpcHQtPmV2YWx1YXRlSW5Xb3JsZChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdC5z
b3VyY2UoKSwgVVJMKHNjcmlwdC51cmwoKSkpLCB3b3JsZCk7CisgICAgbV9zY3JpcHQtPmV2YWx1
YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0LnNvdXJj
ZSgpLCBVUkwoc2NyaXB0LnVybCgpKSksIHdvcmxkKTsKIH0KIAogUmVuZGVyVmlldyogRnJhbWU6
OmNvbnRlbnRSZW5kZXJlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MVHJlZVZpZXdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAK
aW5kZXggZmUwMWNjMWZmNDkxYzM2N2ZjYWQ5N2JmZDRkNmM0ZTczMGY2YmRhOC4uZjkwZTQ0NTI0
ZDVkYTM3NjYyY2MyZGQ1NWY0MjFmMjg5NzdiNDI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxUcmVl
Vmlld2VyLmNwcApAQCAtNTYsOCArNTYsOCBAQCB2b2lkIFhNTFRyZWVWaWV3ZXI6OnRyYW5zZm9y
bURvY3VtZW50VG9UcmVlVmlldygpCiAgICAgbV9kb2N1bWVudC5zZXRTZWN1cml0eU9yaWdpblBv
bGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVV
bmlxdWUoKSkpOwogCiAgICAgU3RyaW5nIHNjcmlwdFN0cmluZyA9IFN0cmluZ0ltcGw6OmNyZWF0
ZVdpdGhvdXRDb3B5aW5nKFhNTFZpZXdlcl9qcywgc2l6ZW9mKFhNTFZpZXdlcl9qcykpOwotICAg
IG1fZG9jdW1lbnQuZnJhbWUoKS0+c2NyaXB0KCkuZXZhbHVhdGUoU2NyaXB0U291cmNlQ29kZShz
Y3JpcHRTdHJpbmcpKTsKLSAgICBtX2RvY3VtZW50LmZyYW1lKCktPnNjcmlwdCgpLmV2YWx1YXRl
KFNjcmlwdFNvdXJjZUNvZGUoQXRvbVN0cmluZygicHJlcGFyZVdlYktpdFhNTFZpZXdlcignVGhp
cyBYTUwgZmlsZSBkb2VzIG5vdCBhcHBlYXIgdG8gaGF2ZSBhbnkgc3R5bGUgaW5mb3JtYXRpb24g
YXNzb2NpYXRlZCB3aXRoIGl0LiBUaGUgZG9jdW1lbnQgdHJlZSBpcyBzaG93biBiZWxvdy4nKTsi
KSkpOworICAgIG1fZG9jdW1lbnQuZnJhbWUoKS0+c2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4
Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdFN0cmluZykpOworICAgIG1fZG9jdW1lbnQu
ZnJhbWUoKS0+c2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VD
b2RlKEF0b21TdHJpbmcoInByZXBhcmVXZWJLaXRYTUxWaWV3ZXIoJ1RoaXMgWE1MIGZpbGUgZG9l
cyBub3QgYXBwZWFyIHRvIGhhdmUgYW55IHN0eWxlIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0
aCBpdC4gVGhlIGRvY3VtZW50IHRyZWUgaXMgc2hvd24gYmVsb3cuJyk7IikpKTsKIAogICAgIFN0
cmluZyBjc3NTdHJpbmcgPSBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhYTUxWaWV3
ZXJfY3NzLCBzaXplb2YoWE1MVmlld2VyX2NzcykpOwogICAgIGF1dG8gdGV4dCA9IG1fZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoY3NzU3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwCmluZGV4IDcwZWZiZmEzZTg3YTJhYmFjYzQ1MTQ2NDBmZGEzZjc3ZWI2ODBl
NWYuLjBjMTVmOGI5M2M3ODA3ZWZkNzRiYmU0MDA4Mjg0NDQxYzU2ZmFkYmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMjQ3Miw3ICsyNDcyLDcgQEAgdm9p
ZCBXS1BhZ2VTZXRQYWdlU3RhdGVDbGllbnQoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnZVN0YXRlQ2xp
ZW50QmFzZSogY2xpZW50KQogCiB2b2lkIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShX
S1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgc2NyaXB0UmVmLCB2b2lkKiBjb250ZXh0LCBX
S1BhZ2VSdW5KYXZhU2NyaXB0RnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAgdG9JbXBsKHBhZ2VS
ZWYpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUodG9JbXBsKHNjcmlwdFJlZiktPnN0cmluZygp
LCB0cnVlLCBbY29udGV4dCwgY2FsbGJhY2tdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBy
ZXR1cm5WYWx1ZSwgYm9vbCwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyYsIENhbGxi
YWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICB0b0ltcGwocGFnZVJlZiktPnJ1bkphdmFTY3Jp
cHRJbk1haW5GcmFtZSh0b0ltcGwoc2NyaXB0UmVmKS0+c3RyaW5nKCksIHRydWUsIFtjb250ZXh0
LCBjYWxsYmFja10oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHJldHVyblZhbHVlLCBPcHRp
b25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJv
cikgewogICAgICAgICBjYWxsYmFjayh0b0FQSShyZXR1cm5WYWx1ZSksIChlcnJvciAhPSBDYWxs
YmFja0Jhc2U6OkVycm9yOjpOb25lKSA/IHRvQVBJKEFQSTo6RXJyb3I6OmNyZWF0ZSgpLnB0cigp
KSA6IDAsIGNvbnRleHQpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNjU0NzRkMDY1MmNmNDhjNjdjNGY1Y2I1Nzgz
OGM5MDc4OWEyNjM4Yy4uYWI4OTc4MGUyZWUzNmVmY2YzYmIxYjI1MjRiMzVkNDRmYzZlMWU2MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBA
IC0xMDQ2LDcgKzEwNDYsNyBAQCAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHQ6KE5TU3RyaW5n
ICopamF2YVNjcmlwdFN0cmluZyBmb3JjZVVzZXJHZXN0dXJlOihCT09MKQogewogICAgIGF1dG8g
aGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKTsKIAotICAgIF9wYWdl
LT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoamF2YVNjcmlwdFN0cmluZywgZm9yY2VVc2VyR2Vz
dHVyZSwgW2hhbmRsZXJdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2Ny
aXB0VmFsdWUsIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRh
aWxzJiBkZXRhaWxzLCBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJhY2s6OkVycm9yIGVycm9yQ29k
ZSkgeworICAgIF9wYWdlLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoamF2YVNjcmlwdFN0cmlu
ZywgZm9yY2VVc2VyR2VzdHVyZSwgW2hhbmRsZXJdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
KiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFp
bHM+IGRldGFpbHMsIFdlYktpdDo6U2NyaXB0VmFsdWVDYWxsYmFjazo6RXJyb3IgZXJyb3JDb2Rl
KSB7CiAgICAgICAgIGlmICghaGFuZGxlcikKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTA2
OSwxOCArMTA2OSwxOCBAQCAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHQ6KE5TU3RyaW5nICop
amF2YVNjcmlwdFN0cmluZyBmb3JjZVVzZXJHZXN0dXJlOihCT09MKQogICAgICAgICB9CiAKICAg
ICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWhhbmRsZXIu
Z2V0KCk7Ci0gICAgICAgIGlmIChoYWRFeGNlcHRpb24pIHsKKyAgICAgICAgaWYgKGRldGFpbHMp
IHsKICAgICAgICAgICAgIEFTU0VSVCghc2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKIAogICAgICAg
ICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IHVzZXJJbmZvID0gYWRvcHROUyhb
W05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKIAogICAgICAgICAgICAgW3VzZXJJ
bmZvIHNldE9iamVjdDpsb2NhbGl6ZWREZXNjcmlwdGlvbkZvckVycm9yQ29kZShXS0Vycm9ySmF2
YVNjcmlwdEV4Y2VwdGlvbk9jY3VycmVkKSBmb3JLZXk6TlNMb2NhbGl6ZWREZXNjcmlwdGlvbktl
eV07Ci0gICAgICAgICAgICBbdXNlckluZm8gc2V0T2JqZWN0OnN0YXRpY19jYXN0PE5TU3RyaW5n
ICo+KGRldGFpbHMubWVzc2FnZSkgZm9yS2V5Ol9XS0phdmFTY3JpcHRFeGNlcHRpb25NZXNzYWdl
RXJyb3JLZXldOwotICAgICAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpAKGRldGFpbHMubGlu
ZU51bWJlcikgZm9yS2V5Ol9XS0phdmFTY3JpcHRFeGNlcHRpb25MaW5lTnVtYmVyRXJyb3JLZXld
OwotICAgICAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpAKGRldGFpbHMuY29sdW1uTnVtYmVy
KSBmb3JLZXk6X1dLSmF2YVNjcmlwdEV4Y2VwdGlvbkNvbHVtbk51bWJlckVycm9yS2V5XTsKKyAg
ICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6c3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4oZGV0
YWlscy0+bWVzc2FnZSkgZm9yS2V5Ol9XS0phdmFTY3JpcHRFeGNlcHRpb25NZXNzYWdlRXJyb3JL
ZXldOworICAgICAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpAKGRldGFpbHMtPmxpbmVOdW1i
ZXIpIGZvcktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uTGluZU51bWJlckVycm9yS2V5XTsKKyAg
ICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QChkZXRhaWxzLT5jb2x1bW5OdW1iZXIpIGZv
cktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uQ29sdW1uTnVtYmVyRXJyb3JLZXldOwogCi0gICAg
ICAgICAgICBpZiAoIWRldGFpbHMuc291cmNlVVJMLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAg
ICBbdXNlckluZm8gc2V0T2JqZWN0OltOU1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJpbmc6ZGV0YWls
cy5zb3VyY2VVUkxdIGZvcktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uU291cmNlVVJMRXJyb3JL
ZXldOworICAgICAgICAgICAgaWYgKCFkZXRhaWxzLT5zb3VyY2VVUkwuaXNFbXB0eSgpKQorICAg
ICAgICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6W05TVVJMIF93ZWJfVVJMV2l0aFdURlN0
cmluZzpkZXRhaWxzLT5zb3VyY2VVUkxdIGZvcktleTpfV0tKYXZhU2NyaXB0RXhjZXB0aW9uU291
cmNlVVJMRXJyb3JLZXldOwogCiAgICAgICAgICAgICByYXdIYW5kbGVyKG5pbCwgYWRvcHROUyhb
W05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9y
SmF2YVNjcmlwdEV4Y2VwdGlvbk9jY3VycmVkIHVzZXJJbmZvOnVzZXJJbmZvLmdldCgpXSkuZ2V0
KCkpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCBkMjFjNzgyZWRlZDEyMTNjNjkxMzEx
Y2QyZGM5NWJmYmM0ZDg3NmVhLi41NzNmMjllMjRmYmNlMWRlYjI5N2ZmZTFiOTZlMzM4Y2Y3Nzhh
MTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJWaWV3LmNwcApAQCAtMzYwNiw3ICszNjA2LDEwIEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3J1
bl9qYXZhc2NyaXB0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBzY3JpcHQs
CiAgICAgZ19yZXR1cm5faWZfZmFpbChzY3JpcHQpOwogCiAgICAgR1JlZlB0cjxHVGFzaz4gdGFz
ayA9IGFkb3B0R1JlZihnX3Rhc2tfbmV3KHdlYlZpZXcsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywg
dXNlckRhdGEpKTsKLSAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFt
ZShTdHJpbmc6OmZyb21VVEY4KHNjcmlwdCksIHRydWUsIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0o
QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgYm9vbCwg
Y29uc3QgRXhjZXB0aW9uRGV0YWlscyYgZXhjZXB0aW9uRGV0YWlscywgV2ViS2l0OjpDYWxsYmFj
a0Jhc2U6OkVycm9yKSB7CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWlu
RnJhbWUoU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCB0cnVlLCBbdGFzayA9IFdURk1vdmUodGFz
ayldKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9w
dGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpF
cnJvcikgeworICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGV4Y2VwdGlvbkRldGFpbHM7CisgICAg
ICAgIGlmIChkZXRhaWxzKQorICAgICAgICAgICAgZXhjZXB0aW9uRGV0YWlscyA9ICpkZXRhaWxz
OwogICAgICAgICB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdENhbGxiYWNrKHNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSwgZXhjZXB0aW9uRGV0YWlscywgdGFzay5nZXQoKSk7CiAgICAgfSk7CiB9CkBA
IC0zNzA0LDcgKzM3MDcsMTAgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHRf
aW5fd29ybGQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2NoYXIKICAgICBnX3JldHVy
bl9pZl9mYWlsKHdvcmxkTmFtZSk7CiAKICAgICBHUmVmUHRyPEdUYXNrPiB0YXNrID0gYWRvcHRH
UmVmKGdfdGFza19uZXcod2ViVmlldywgY2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1c2VyRGF0YSkp
OwotICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29y
bGQoU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCB0cnVlLCBTdHJpbmc6OmZyb21VVEY4KHdvcmxk
TmFtZSksIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUq
IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgYm9vbCwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYgZXhj
ZXB0aW9uRGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CisgICAgZ2V0UGFn
ZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChTdHJpbmc6OmZy
b21VVEY4KHNjcmlwdCksIHRydWUsIFN0cmluZzo6ZnJvbVVURjgod29ybGROYW1lKSwgW3Rhc2sg
PSBXVEZNb3ZlKHRhc2spXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNj
cmlwdFZhbHVlLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNh
bGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBleGNlcHRpb25E
ZXRhaWxzOworICAgICAgICBpZiAoZGV0YWlscykKKyAgICAgICAgICAgIGV4Y2VwdGlvbkRldGFp
bHMgPSAqZGV0YWlsczsKICAgICAgICAgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRDYWxsYmFj
ayhzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGV4Y2VwdGlvbkRldGFpbHMsIHRhc2suZ2V0KCkpOwog
ICAgIH0pOwogfQpAQCAtMzc0NCw3ICszNzUwLDEwIEBAIHN0YXRpYyB2b2lkIHJlc291cmNlc1N0
cmVhbVJlYWRDYWxsYmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBn
CiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhnX3Rhc2tfZ2V0
X3NvdXJjZV9vYmplY3QodGFzay5nZXQoKSkpOwogICAgIGdwb2ludGVyIG91dHB1dFN0cmVhbURh
dGEgPSBnX21lbW9yeV9vdXRwdXRfc3RyZWFtX2dldF9kYXRhKEdfTUVNT1JZX09VVFBVVF9TVFJF
QU0ob2JqZWN0KSk7CiAgICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWUoU3RyaW5nOjpmcm9tVVRGOChyZWludGVycHJldF9jYXN0PGNvbnN0IGdjaGFyKj4ob3V0cHV0
U3RyZWFtRGF0YSkpLCB0cnVlLAotICAgICAgICBbdGFza10oQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgYm9vbCwgY29uc3QgRXhjZXB0aW9uRGV0YWls
cyYgZXhjZXB0aW9uRGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CisgICAg
ICAgIFt0YXNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZh
bHVlLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNr
QmFzZTo6RXJyb3IpIHsKKyAgICAgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZXhjZXB0aW9uRGV0
YWlsczsKKyAgICAgICAgICAgIGlmIChkZXRhaWxzKQorICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bkRldGFpbHMgPSAqZGV0YWlsczsKICAgICAgICAgICAgIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2Ny
aXB0Q2FsbGJhY2soc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBleGNlcHRpb25EZXRhaWxzLCB0YXNr
LmdldCgpKTsKICAgICAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAppbmRleCAxOThkYjdiZWYyMzM3ZDZlYTRjNTBkMmNkYWY3MjkxNmNhMDBiNzM4Li45
ODBiZmI5ZTY5MDc4ZmYwNGFkNWM2ZTdkODU4ZTQ4ZjFmNDQ5ODY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM4NDUsMTggKzM4NDUsMTggQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmxhdW5jaEluaXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKQogICAgICAgICBs
YXVuY2hQcm9jZXNzKHsgfSwgUHJvY2Vzc0xhdW5jaFJlYXNvbjo6SW5pdGlhbFByb2Nlc3MpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZCAo
QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBib29sIGhhZEV4Y2VwdGlvbiwgY29uc3QgRXhj
ZXB0aW9uRGV0YWlscyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24p
Cit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmlu
ZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJ
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRh
aWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBy
dW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzY3JpcHQsIGZvcmNlVXNlckdlc3R1
cmUsIFdURjo6bnVsbG9wdCwgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBT
dHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJp
bmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSosIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBFeGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5Ojpy
dW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUs
IFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFs
PEV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKQogewogICAgIC8vIEZvciBiYWNrd2FyZC1jb21wYXRpYmlsaXR5IHN1cHBvcnQgcnVubmlu
ZyBzY3JpcHQgaW4gYSBXZWJWaWV3IHdoaWNoIGhhcyBub3QgZG9uZSBhbnkgbG9hZHMgeWV0cy4K
ICAgICBsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCk7CiAKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihudWxscHRyLCBmYWxz
ZSwgeyB9LCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKKyAgICAgICAgY2FsbGJhY2tG
dW5jdGlvbihudWxscHRyLCB7IH0sIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zODY0LDcgKzM4NjQsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBz
Y3JpcHQsIGJvbwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZVNjcmlwdFdvcmxkKHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgd29ybGROYW1lLCBj
YWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFt
ZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9y
Y2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IEV4Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnJ1
bkphdmFTY3JpcHRJbkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcm
IHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBBU1NFUlQobWFpbkZy
YW1lKCktPmZyYW1lSUQoKSAhPSBmcmFtZUlEKTsKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJh
bWUiX3MpKTsKQEAgLTY3ODksNyArNjc4OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnZhbGlk
YXRlU3RyaW5nQ2FsbGJhY2soQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIGNhbGxiYWNrLT5p
bnZhbGlkYXRlKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzY3JpcHRWYWx1ZUNhbGxiYWNr
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwgYm9vbCBoYWRFeGNlcHRp
b24sIGNvbnN0IEV4Y2VwdGlvbkRldGFpbHMmIGRldGFpbHMsIENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0
YWlscywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2Nh
bGxiYWNrcy50YWtlPFNjcmlwdFZhbHVlQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICgh
Y2FsbGJhY2spIHsKQEAgLTY3OTgsNyArNjc5OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzY3Jp
cHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwK
ICAgICB9CiAKICAgICBpZiAoZGF0YVJlZmVyZW5jZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgY2Fs
bGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShudWxscHRyLCBoYWRFeGNlcHRp
b24sIGRldGFpbHMpOworICAgICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVy
blZhbHVlKG51bGxwdHIsIGRldGFpbHMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02
ODA2LDcgKzY4MDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2NyaXB0VmFsdWVDYWxsYmFjayhj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsCiAgICAgZGF0YS5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKICAgICBkYXRhLmFwcGVuZChk
YXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpOwogCi0gICAgY2FsbGJh
Y2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6YWRvcHQoV1RGTW92ZShkYXRhKSkucHRyKCksIGhhZEV4Y2VwdGlvbiwgZGV0YWlscyk7
CisgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShBUEk6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoV1RGTW92ZShkYXRhKSkucHRyKCksIGRldGFpbHMpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tcHV0ZWRQYWdlc0NhbGxiYWNrKGNvbnN0IFZlY3Rv
cjxJbnRSZWN0PiYgcGFnZVJlY3RzLCBkb3VibGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5n
LCBjb25zdCBGbG9hdEJveEV4dGVudCYgY29tcHV0ZWRQYWdlTWFyZ2luLCBDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGFlMzg1
MjIyMWQ0YTUyNDM1NTJiYTAyM2YyZjQ4Yjk0ZWY3Yjk4YWQuLjAyNzRkN2NlMmY0MzY4MTU0Y2Ni
Njc5MjVjZDBmOWRhNDNjMjljZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCkBAIC03NSw2ICs3NSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0V2ZW50VHJhY2tpbmdSZWdpb25zLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRp
b25EZXRhaWxzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250QXR0cmlidXRlcy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVW
aWV3Lmg+IC8vIEZJWE1FOiBNb3ZlIExheW91dFZpZXdwb3J0Q29uc3RyYWludCB0byBpdHMgb3du
IGZpbGUgYW5kIHN0b3AgaW5jbHVkaW5nIHRoaXMuCkBAIC0zMzUsNyArMzM2LDcgQEAgdHlwZWRl
ZiBHZW5lcmljQ2FsbGJhY2s8QVBJOjpEYXRhKj4gRGF0YUNhbGxiYWNrOwogdHlwZWRlZiBHZW5l
cmljQ2FsbGJhY2s8dWludDY0X3Q+IFVuc2lnbmVkQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWND
YWxsYmFjazxFZGl0aW5nUmFuZ2U+IEVkaXRpbmdSYW5nZUNhbGxiYWNrOwogdHlwZWRlZiBHZW5l
cmljQ2FsbGJhY2s8Y29uc3QgU3RyaW5nJj4gU3RyaW5nQ2FsbGJhY2s7Ci10eXBlZGVmIEdlbmVy
aWNDYWxsYmFjazxBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wsIGNvbnN0IFdlYkNv
cmU6OkV4Y2VwdGlvbkRldGFpbHMmPiBTY3JpcHRWYWx1ZUNhbGxiYWNrOwordHlwZWRlZiBHZW5l
cmljQ2FsbGJhY2s8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3Jl
OjpFeGNlcHRpb25EZXRhaWxzPj4gU2NyaXB0VmFsdWVDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJp
Y0NhbGxiYWNrPGNvbnN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzJj4gRm9udEF0dHJpYnV0ZXND
YWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyY+IFNlbGVjdGlvbkNvbnRleHRDYWxsYmFjazsKIHR5cGVkZWYg
R2VuZXJpY0NhbGxiYWNrPGJvb2w+IEJvb2xDYWxsYmFjazsKQEAgLTEwNjAsMTAgKzEwNjEsMTAg
QEAgcHVibGljOgogICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShGdW5jdGlv
bjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBn
ZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25z
dCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRXZWJBcmNo
aXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
KGNvbnN0IFN0cmluZyYsIGJvb2wsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUqLCBib29sIGhhZEV4Y2VwdGlvbiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9u
RGV0YWlscyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pOwotICAg
IHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiwg
Ym9vbCwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBib29sIGhhZEV4Y2VwdGlvbiwgY29uc3Qg
V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxi
YWNrRnVuY3Rpb24pOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0
cmluZyYsIGJvb2wsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWlu
RnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcmLCBib29sLCBjb25zdCBPcHRpb25hbDxTdHJp
bmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKTsKICAgICAvLyBGb3Igc3ViIGZyYW1lcy4KLSAg
ICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2
b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0
IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxs
YmFja0Z1bmN0aW9uKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVy
ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9u
YWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrRnVuY3Rpb24pOwogICAgIHZvaWQgZm9yY2VSZXBhaW50KFJlZlB0cjxWb2lkQ2FsbGJh
Y2s+JiYpOwogCiAgICAgZmxvYXQgaGVhZGVySGVpZ2h0KFdlYkZyYW1lUHJveHkmKTsKQEAgLTE5
NDMsNyArMTk0NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBib29sQ2FsbGJhY2soYm9vbCByZXN1
bHQsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgc3RyaW5nQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwg
Q2FsbGJhY2tJRCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2soQ2FsbGJhY2tJ
RCk7Ci0gICAgdm9pZCBzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYsIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJiwg
Q2FsbGJhY2tJRCk7CisgICAgdm9pZCBzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFj
a0lEKTsKICAgICB2b2lkIGNvbXB1dGVkUGFnZXNDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6SW50UmVjdD4mLCBkb3VibGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdEJveEV4dGVudCYgY29tcHV0ZWRQYWdlTWFyZ2luLCBDYWxsYmFja0lEKTsK
ICAgICB2b2lkIHZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0IFN0cmluZyYsIGJvb2wsIGlu
dCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCB1bnNpZ25lZENhbGxiYWNrKHVpbnQ2NF90LCBDYWxs
YmFja0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgppbmRleCAwYzY1MWU2ODViMjk3OWY0ZTM2ZTljOGE1ODY0MTZkNjcxYmRmZmY1Li40
ZGVmNWRjMDFkYjRkNDI5ZmJiN2Q3MTY5MzhhMTExNzBkOWVhMjM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xNjksNyArMTY5
LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBTdHJpbmdDYWxsYmFjayhTdHJp
bmcgcmVzdWx0U3RyaW5nLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBCb29s
Q2FsbGJhY2soYm9vbCByZXN1bHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAg
IEludmFsaWRhdGVTdHJpbmdDYWxsYmFjayhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
LSAgICBTY3JpcHRWYWx1ZUNhbGxiYWNrKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBi
b29sIGhhZEV4Y2VwdGlvbiwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMgZGV0YWls
cywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgU2NyaXB0VmFsdWVDYWxsYmFj
ayhJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0
aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAg
Q29tcHV0ZWRQYWdlc0NhbGxiYWNrKFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiBwYWdlUmVjdHMs
IGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIFdlYkNvcmU6OlJlY3RFZGdlczxm
bG9hdD4gY29tcHV0ZWRQYWdlTWFyZ2luLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
ICAgICBWYWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhTdHJpbmcgY29tbWFuZCwgYm9vbCBpc0VuYWJs
ZWQsIGludDMyX3Qgc3RhdGUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEVk
aXRpbmdSYW5nZUNhbGxiYWNrKHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSByYW5nZSwgV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIu
Y3BwCmluZGV4IDUwY2EyZTQ5MzhjYzM1NWMxOWRlMWNhN2JiYzQzOTdjYzA0YmI5M2MuLjNhYmVl
NDg2ZjVlYzhiNmU0ZjBlNWQ5YTE0NzAzNzgzZTg0YTgwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90
b2NvbEhhbmRsZXIuY3BwCkBAIC05MCw5ICs5MCw5IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyOjppbnNwZWN0KGNvbnN0IFN0cmluZyYgaG9zdEFuZFBvcnQsIENvbm5lY3Rp
CiB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6cnVuU2NyaXB0KGNvbnN0IFN0
cmluZyYgc2NyaXB0KQogewogICAgIG1fcGFnZS5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoc2Ny
aXB0LCBmYWxzZSwKLSAgICAgICAgW10oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBib29s
IGhhZEV4Y2VwdGlvbiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyYgZXhjZXB0aW9u
RGV0YWlscywgQ2FsbGJhY2tCYXNlOjpFcnJvcikgewotICAgICAgICAgICAgaWYgKGhhZEV4Y2Vw
dGlvbikKLSAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkV4Y2VwdGlvbiBydW5uaW5nIHNjcmlw
dCBcIiVzXCIiLCBleGNlcHRpb25EZXRhaWxzLm1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgIFtdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhj
ZXB0aW9uRGV0YWlscz4gZXhjZXB0aW9uRGV0YWlscywgQ2FsbGJhY2tCYXNlOjpFcnJvcikgewor
ICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbkRldGFpbHMpCisgICAgICAgICAgICAgICAgTE9HX0VS
Uk9SKCJFeGNlcHRpb24gcnVubmluZyBzY3JpcHQgXCIlc1wiIiwgZXhjZXB0aW9uRGV0YWlscy0+
bWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA4OGUxM2FkODJhZGNlYzRm
YmVlNjg1ZjJjN2JlNDU5OGY4ZDRjYmJmLi4zZWEwMDZiM2NlMzhlMzg5NDFmZGJkNTg2NzNjZDgx
YTY4MmMyNTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcApAQCAtMTI1Myw3ICsxMjUzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3Jt
SmF2YVNjcmlwdFVSTFJlcXVlc3QoVVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICAvLyBFdmFsdWF0
ZSB0aGUgSmF2YVNjcmlwdCBjb2RlLiBOb3RlIHRoYXQgcnVubmluZyBKYXZhU2NyaXB0IGhlcmUg
Y291bGQgY2F1c2UgdGhlIHBsdWctaW4gdG8gYmUgZGVzdHJveWVkLCBzbyB3ZQogICAgIC8vIGdy
YWIgcmVmZXJlbmNlcyB0byB0aGUgcGx1Zy1pbiBoZXJlLgogICAgIFJlZlB0cjxQbHVnaW4+IHBs
dWdpbiA9IG1fcGx1Z2luOwotICAgIGF1dG8gcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1
dGVTY3JpcHQoanNTdHJpbmcsIHJlcXVlc3QtPmFsbG93UG9wdXBzKCkpOworICAgIGF1dG8gcmVz
dWx0ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihqc1N0
cmluZywgcmVxdWVzdC0+YWxsb3dQb3B1cHMoKSk7CiAKICAgICBpZiAoIXJlc3VsdCkKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAKaW5k
ZXggOTA4ZTM5YWZkYjBjODg5Y2ZlNTY1MmIzOWFkYzQ3MGMzYTA5YTlhMi4uYzE4OWU5ODI1YWQ0
OTQ3MGVkNjI0MzVlODZkNTlkZjYwZjM4YWU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JGcm9udGVu
ZEFQSURpc3BhdGNoZXIuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJv
bnRlbmRBUElEaXNwYXRjaGVyOjpldmFsdWF0ZU9yUXVldWVFeHByZXNzaW9uKGNvbnN0IFN0cmlu
ZyYKIAogICAgIEFTU0VSVChtX3F1ZXVlLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKCFtX3BhZ2Uu
Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuaXNQYXVzZWQoKSk7Ci0gICAgbV9wYWdl
LmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoZXhwcmVzc2lv
bik7CisgICAgbV9wYWdlLmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVT
Y3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihleHByZXNzaW9uKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0
b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OmV2YWx1YXRlUXVldWVkRXhwcmVzc2lvbnMoKQpAQCAt
MTA5LDcgKzEwOSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpl
dmFsdWF0ZVF1ZXVlZEV4cHJlc3Npb25zKCkKIAogICAgIGZvciAoY29uc3QgU3RyaW5nJiBleHBy
ZXNzaW9uIDogbV9xdWV1ZSkgewogICAgICAgICBBU1NFUlQoIW1fcGFnZS5jb3JlUGFnZSgpLT5t
YWluRnJhbWUoKS5zY3JpcHQoKS5pc1BhdXNlZCgpKTsKLSAgICAgICAgbV9wYWdlLmNvcmVQYWdl
KCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoZXhwcmVzc2lvbik7CisgICAg
ICAgIG1fcGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0
SWdub3JpbmdFeGNlcHRpb24oZXhwcmVzc2lvbik7CiAgICAgfQogCiAgICAgbV9xdWV1ZS5jbGVh
cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRl
eCAyZmQzZTAyMDc3NzQzZTEyMTYwNjMyZTI5ZGU4YmU2MjZmNDY2M2MzLi42NDQ1YWE1YTcyNTZk
NmJhODdkNzM2ZjI2YmFkYzcxYTk4MDhlNGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzM1NywyMyArMzM1NywyOCBAQCB2b2lkIFdlYlBh
Z2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Ym9vbCBmb3JjZVVzZQogICAgIC8vIE5PVEU6IFdlIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aGVuIHJ1
bm5pbmcgc2NyaXB0cyB0aGF0IHRoZSBvYmplY3RzIHdlIGRlcGVuZCBvbiBkb24ndAogICAgIC8v
IGRpc2FwcGVhciBkdXJpbmcgc2NyaXB0IGV4ZWN1dGlvbi4KIAotICAgIFJlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZTsKICAgICBKU0xvY2tIb2xkZXIg
bG9jayhjb21tb25WTSgpKTsKLSAgICBib29sIGhhZEV4Y2VwdGlvbiA9IHRydWU7Ci0gICAgRXhj
ZXB0aW9uRGV0YWlscyBkZXRhaWxzOworICAgIFZhbHVlT3JFeGNlcHRpb24gcmVzdWx0OworICAg
IFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZTsKKwog
ICAgIGF1dG8qIHdvcmxkID0gd29ybGROYW1lID8gSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6
ZmluZCh3b3JsZE5hbWUudmFsdWUoKSkgOiAmSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6bm9y
bWFsV29ybGQoKTsKICAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPmNvcmVGcmFtZSgpICYmIHdvcmxk
KSB7Ci0gICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdFZhbHVlID0gZnJhbWUtPmNvcmVGcmFtZSgp
LT5zY3JpcHQoKS5leGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZCh3b3JsZC0+Y29yZVdvcmxk
KCksIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgJmRldGFpbHMpKSB7Ci0gICAgICAgICAgICBo
YWRFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgcmVzdWx0ID0gZnJhbWUtPmNvcmVGcmFtZSgp
LT5zY3JpcHQoKS5leGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZCh3b3JsZC0+Y29yZVdvcmxk
KCksIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSk7CisgICAgICAgIGlmIChyZXN1bHQpIHsKICAg
ICAgICAgICAgIHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKGZyYW1lLT5qc0NvbnRleHRGb3JXb3JsZCh3b3JsZCksCi0gICAgICAgICAgICAgICAg
dG9SZWYoZnJhbWUtPmNvcmVGcmFtZSgpLT5zY3JpcHQoKS5nbG9iYWxPYmplY3Qod29ybGQtPmNv
cmVXb3JsZCgpKSwgcmVzdWx0VmFsdWUpLCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICB0b1Jl
ZihmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3b3JsZC0+Y29yZVdv
cmxkKCkpLCByZXN1bHQudmFsdWUoKSksIG51bGxwdHIpOwogICAgICAgICB9CiAgICAgfQogCiAg
ICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CiAgICAgaWYgKHNlcmlhbGl6ZWRS
ZXN1bHRWYWx1ZSkKICAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHNlcmlhbGl6ZWRSZXN1bHRWYWx1
ZS0+ZGF0YSgpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVD
YWxsYmFjayhkYXRhUmVmZXJlbmNlLCBoYWRFeGNlcHRpb24sIGRldGFpbHMsIGNhbGxiYWNrSUQp
KTsKKworICAgIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHM7CisgICAgaWYgKCFy
ZXN1bHQpCisgICAgICAgIGRldGFpbHMgPSByZXN1bHQuZXJyb3IoKTsKKworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBk
ZXRhaWxzLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2Vy
R2VzdHVyZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KaW5kZXggOTQ3YmZjNTM0MmNiY2FjMDlh
YWFmNTEyY2NkYjZkZmU5Y2IxY2E0MS4uZWE1MDc4ZWQxOGY1NTA1MmRmMmU0MjgxM2UyYTZmNzA4
NTVjZTdjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpAQCAtMzc5LDcgKzM3OSw3IEBAIHZv
aWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWRVUkwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBbY29udGVu
dENvcHkgd3JpdGVUb1VSTDphY3R1YWxVUkwgYXRvbWljYWxseTpZRVMgZW5jb2Rpbmc6TlNVVEY4
U3RyaW5nRW5jb2RpbmcgZXJyb3I6TlVMTF07CiAKLSAgICAgICAgY29yZShbbV9mcm9udGVuZFdp
bmRvd0NvbnRyb2xsZXIgZnJvbnRlbmRXZWJWaWV3XSktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4
ZWN1dGVTY3JpcHQoW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJbnNwZWN0b3JGcm9udGVu
ZEFQSS5zYXZlZFVSTChcIiVAXCIpIiwgYWN0dWFsVVJMLmFic29sdXRlU3RyaW5nXSk7CisgICAg
ICAgIGNvcmUoW21fZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyIGZyb250ZW5kV2ViVmlld10pLT5t
YWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oW05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJbnNwZWN0b3JGcm9udGVuZEFQSS5zYXZlZFVSTChcIiVA
XCIpIiwgYWN0dWFsVVJMLmFic29sdXRlU3RyaW5nXSk7CiAgICAgfTsKIAogICAgIGlmICghZm9y
Y2VTYXZlRGlhbG9nKSB7CkBAIC00MjUsNyArNDI1LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudDo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJp
bmcKICAgICBbaGFuZGxlIHdyaXRlRGF0YTpbY29udGVudCBkYXRhVXNpbmdFbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZ11dOwogICAgIFtoYW5kbGUgY2xvc2VGaWxlXTsKIAotICAgIGNvcmUo
W21fZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyIGZyb250ZW5kV2ViVmlld10pLT5tYWluRnJhbWUo
KS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW5z
cGVjdG9yRnJvbnRlbmRBUEkuYXBwZW5kZWRUb1VSTChcIiVAXCIpIiwgW2FjdHVhbFVSTCBhYnNv
bHV0ZVN0cmluZ11dKTsKKyAgICBjb3JlKFttX2Zyb250ZW5kV2luZG93Q29udHJvbGxlciBmcm9u
dGVuZFdlYlZpZXddKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5n
RXhjZXB0aW9uKFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRB
UEkuYXBwZW5kZWRUb1VSTChcIiVAXCIpIiwgW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ11dKTsK
IH0KIAogLy8gTUFSSzogLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0KaW5kZXggMThkM2Q5ZWMxNGQ4YzY5NWQwM2Y5M2MzZGQyMDE2YWQ0MDk0YTQ1OC4uNzhj
YzMzZWJhMTVhNmUwZjE2MmE2MDlkMzhiMmU3Y2UwODVjM2YwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC03MDAsNyArNzAwLDcgQEAgLSAoTlNT
dHJpbmcgKilfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6KE5TU3RyaW5n
ICopc3RyaW5nIGZvcmNlVXMKICAgICBKU0M6OkpTTG9ja0hvbGRlciBqc2NMb2NrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogI2VuZGlmCiAKLSAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gX3ByaXZh
dGUtPmNvcmVGcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChzdHJpbmcsIGZvcmNlVXNlckdl
c3R1cmUpOworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5z
Y3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oc3RyaW5nLCBmb3JjZVVzZXJH
ZXN0dXJlKTsKIAogICAgIGlmICghX3ByaXZhdGUtPmNvcmVGcmFtZSkgLy8gSW4gY2FzZSB0aGUg
c2NyaXB0IHJlbW92ZWQgb3VyIGZyYW1lIGZyb20gdGhlIHBhZ2UuCiAgICAgICAgIHJldHVybiBA
IiI7CkBAIC0yMDk2LDcgKzIwOTYsNyBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0RnJvbVN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgd2l0aEdsbwogICAgIEFT
U0VSVChmcmFtZS0+ZG9jdW1lbnQoKSk7CiAgICAgUmV0YWluUHRyPFdlYkZyYW1lPiB3ZWJGcmFt
ZShraXQoZnJhbWUpKTsgLy8gUnVubmluZyBhcmJpdHJhcnkgSmF2YVNjcmlwdCBjYW4gZGVzdHJv
eSB0aGUgZnJhbWUuCiAKLSAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgp
LmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKCpjb3JlKHdvcmxkKSwgc3RyaW5nLCB0cnVl
KTsKKyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVVc2Vy
QWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oKmNvcmUod29ybGQpLCBzdHJpbmcs
IHRydWUpOwogCiAgICAgaWYgKCF3ZWJGcmFtZS0+X3ByaXZhdGUtPmNvcmVGcmFtZSkgLy8gSW4g
Y2FzZSB0aGUgc2NyaXB0IHJlbW92ZWQgb3VyIGZyYW1lIGZyb20gdGhlIHBhZ2UuCiAgICAgICAg
IHJldHVybiBAIiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
aW5kZXggNDdhYWUzMjhkYmM2YWNmYmVhYmIzYWVjNmQyNzgzY2I0ZjU5ZjA3MS4uOTYxZTA1Y2Yx
YzIyOWRlMTEwNDZiN2M0ZmI4MzRmNTMzOWJiODIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNzkwOCw3ICs3OTA4LDcgQEAgLSAoTlNBcHBsZUV2
ZW50RGVzY3JpcHRvciAqKWFlRGVzY0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOihO
U1N0cmluZyAqKXMKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAoIWNvcmVGcmFtZS0+ZG9j
dW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0g
Y29yZUZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KHNjcmlwdCwgdHJ1ZSk7CisgICAgSlND
OjpKU1ZhbHVlIHJlc3VsdCA9IGNvcmVGcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9y
aW5nRXhjZXB0aW9uKHNjcmlwdCwgdHJ1ZSk7CiAgICAgaWYgKCFyZXN1bHQpIC8vIEZJWE1FOiBw
YXNzIGVycm9ycwogICAgICAgICByZXR1cm4gMDsKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2Nr
KGNvcmVGcmFtZS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KFdlYkNvcmU6Om1haW5UaHJlYWROb3Jt
YWxXb3JsZCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcAppbmRleCBlNWVmNjNiNGNkODY3MTdiMzYwYjA5OWM4NjJlMjdhNjM1MTE1MDQzLi44
MTYwZGExNGFjMDA5Mzk2ODBjMjJkZWRjMmEyNWQzYzNhNmUzMGE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTQzOSw3ICs0MzksNyBA
QCB2b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KFBsdWdpblJlcXVlc3QqIHJlcXVlc3Qp
CiAgICAgCiAgICAgLy8gRXhlY3V0aW5nIGEgc2NyaXB0IGNhbiBjYXVzZSB0aGUgcGx1Z2luIHZp
ZXcgdG8gYmUgZGVzdHJveWVkLCBzbyB3ZSBrZWVwIGEgcmVmZXJlbmNlIHRvIGl0LgogICAgIFJl
ZlB0cjxQbHVnaW5WaWV3PiBwcm90ZWN0b3IodGhpcyk7Ci0gICAgYXV0byByZXN1bHQgPSBtX3Bh
cmVudEZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGpzU3RyaW5nLCByZXF1ZXN0LT5zaG91
bGRBbGxvd1BvcHVwcygpKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fcGFyZW50RnJhbWUtPnNjcmlw
dCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihqc1N0cmluZywgcmVxdWVzdC0+c2hv
dWxkQWxsb3dQb3B1cHMoKSk7CiAKICAgICBpZiAodGFyZ2V0RnJhbWVOYW1lLmlzTnVsbCgpKSB7
CiAgICAgICAgIENTdHJpbmcgY3N0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApp
bmRleCA2ZWZhZThmNjIyOTg0OWNhMWY1OTZiNzM1NWNlZWY0M2NmZDY5MGE4Li5jNzc4ZTIyYjcw
ZGNmMTg1NTIyY2E2ZTIwOWI4NzA5MTk1YjUxNDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RnJhbWUuY3BwCkBAIC0yMDU1LDcgKzIwNTUsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0SW5TY3JpcHRXb3JsZChJV2ViU2NyaXB0V29ybGQqIGlXbwog
ICAgIC8vIEdldCB0aGUgZnJhbWUgZnJvbWUgdGhlIGdsb2JhbCBvYmplY3Qgd2UndmUgc2V0dGxl
ZCBvbi4KICAgICBGcmFtZSogZnJhbWUgPSBhbnlXb3JsZEdsb2JhbE9iamVjdC0+d3JhcHBlZCgp
LmZyYW1lKCk7CiAgICAgQVNTRVJUKGZyYW1lLT5kb2N1bWVudCgpKTsKLSAgICBKU1ZhbHVlIHJl
c3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3JsZC0+d29ybGQo
KSwgc3RyaW5nLCB0cnVlKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5l
eGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKHdvcmxkLT53b3JsZCgpLCBzdHJp
bmcsIHRydWUpOwogCiAgICAgaWYgKCFmcmFtZSkgLy8gSW4gY2FzZSB0aGUgc2NyaXB0IHJlbW92
ZWQgb3VyIGZyYW1lIGZyb20gdGhlIHBhZ2UuCiAgICAgICAgIHJldHVybiBTX09LOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBhMDQ0OGJiMDEzZWRmYjQzMzVmYmM5YWJjOGE3
ZTMwODA3N2YwMDQzLi5lNzJlYTQzZWRiNzljOGEwMjFjYzZkZmMxOGE5OWQ1YmMwOGUzZmI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtMzY2Myw3ICszNjYzLDcgQEAgSFJF
U1VMVCBXZWJWaWV3OjpzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZyhfSW5f
IEJTVFIgc2NyaXB0LCAvLyBhc3MKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJu
IEVfVU5FWFBFQ1RFRDsKIAotICAgIGF1dG8gc2NyaXB0RXhlY3V0aW9uUmVzdWx0ID0gY29yZUZy
YW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KFdURjo6U3RyaW5nKHNjcmlwdCksIHRydWUpOwor
ICAgIGF1dG8gc2NyaXB0RXhlY3V0aW9uUmVzdWx0ID0gY29yZUZyYW1lLT5zY3JpcHQoKS5leGVj
dXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oV1RGOjpTdHJpbmcoc2NyaXB0KSwgdHJ1ZSk7CiAg
ICAgaWYgKCFzY3JpcHRFeGVjdXRpb25SZXN1bHQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAg
ICAgZWxzZSBpZiAoc2NyaXB0RXhlY3V0aW9uUmVzdWx0LmlzU3RyaW5nKCkpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>