<?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>204199</bug_id>
          
          <creation_ts>2019-11-14 12:20:24 -0800</creation_ts>
          <short_desc>Reduce structure copies when creating an API::FrameInfo</short_desc>
          <delta_ts>2019-11-18 15:31:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>beidson</cc>
    
    <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>rniwa</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1590297</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-11-14 12:20:24 -0800</bug_when>
    <thetext>WKFrameInfo.webView should not return nil</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590298</commentid>
    <comment_count>1</comment_count>
      <attachid>383568</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-11-14 12:21:26 -0800</bug_when>
    <thetext>Created attachment 383568
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590302</commentid>
    <comment_count>2</comment_count>
      <attachid>383569</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-11-14 12:37:24 -0800</bug_when>
    <thetext>Created attachment 383569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590303</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-11-14 12:38:31 -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>1590343</commentid>
    <comment_count>4</comment_count>
      <attachid>383577</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-11-14 15:17:34 -0800</bug_when>
    <thetext>Created attachment 383577
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590348</commentid>
    <comment_count>5</comment_count>
      <attachid>383579</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-11-14 15:26:06 -0800</bug_when>
    <thetext>Created attachment 383579
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590349</commentid>
    <comment_count>6</comment_count>
      <attachid>383579</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-11-14 15:36:54 -0800</bug_when>
    <thetext>Comment on attachment 383579
Patch

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

Could I please convince you to split the intended behavior change from all of the argument passing cleanup?

Seems quite unrelated

&gt; Source/WebKit/UIProcess/API/C/WKFrame.cpp:141
&gt;  WKFrameInfoRef WKFrameCreateFrameInfo(WKFrameRef frameRef)
&gt;  {
&gt; -    return toAPI(&amp;API::FrameInfo::create(*toImpl(frameRef), WebCore::SecurityOrigin::createFromString(toImpl(frameRef)-&gt;url())).leakRef());
&gt; +    auto* page = toImpl(frameRef)-&gt;page();
&gt; +    if (!page)
&gt; +        return nullptr;
&gt; +    return toAPI(&amp;API::FrameInfo::create(*toImpl(frameRef), WebCore::SecurityOriginData { WebCore::SecurityOrigin::createFromString(toImpl(frameRef)-&gt;url())-&gt;data() }, *page).leakRef());
&gt;  }

This creator being changed to return null is alarming. Does Safari still use this SPI? If so, they almost certainly don&apos;t null check the result?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590382</commentid>
    <comment_count>7</comment_count>
      <attachid>383588</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-11-14 17:09:28 -0800</bug_when>
    <thetext>Created attachment 383588
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590544</commentid>
    <comment_count>8</comment_count>
      <attachid>383588</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-11-15 10:29:23 -0800</bug_when>
    <thetext>Comment on attachment 383588
Patch

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

&gt; Source/WebKit/UIProcess/API/APIFrameInfo.cpp:61
&gt; +FrameInfo::~FrameInfo() = default;

We have to say this because of the virtual ness, but can&apos;t it be in the header?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590583</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-15 11:36:08 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 383588:

imported/w3c/web-platform-tests/websockets/bufferedAmount-unchanged-by-sync-xhr.any.worker.html bug 202003 (author: youennf@gmail.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590584</commentid>
    <comment_count>10</comment_count>
      <attachid>383588</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-15 11:37:03 -0800</bug_when>
    <thetext>Comment on attachment 383588
Patch

Clearing flags on attachment: 383588

Committed r252492: &lt;https://trac.webkit.org/changeset/252492&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590585</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-15 11:37:05 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590586</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-15 11:38:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/57234919&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591234</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-18 14:13:47 -0800</bug_when>
    <thetext>Looks like this broke http/tests/navigation/window-open-redirect-and-remove-opener.html. It&apos;s hitting a debug assertion:

https://results.webkit.org/?suite=layout-tests&amp;test=http%2Ftests%2Fnavigation%2Fwindow-open-redirect-and-remove-opener.html

https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=http%2Ftests%2Fnavigation%2Fwindow-open-redirect-and-remove-opener.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591236</commentid>
    <comment_count>14</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-11-18 14:17:40 -0800</bug_when>
    <thetext>I was able to reproduce the failure by running the test on r252492 but not r252491. 

reproduced with command:
run-webkit-tests http/tests/navigation/window-open-redirect-and-remove-opener.html --iterations 500 -f --debug --exit-after-n-crashes-or-timeouts 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591243</commentid>
    <comment_count>15</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-11-18 14:38:31 -0800</bug_when>
    <thetext>I&apos;m looking into it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591281</commentid>
    <comment_count>16</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-11-18 15:31:47 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/252601/webkit fixes the test.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383568</attachid>
            <date>2019-11-14 12:21:26 -0800</date>
            <delta_ts>2019-11-14 12:37:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204199-20191114122125.patch</filename>
            <type>text/plain</type>
            <size>90383</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQyODEzNGU1OWJmYmU3NjQz
NDM1NzIwYzBmMjdjOGVmYjZhZjU3MTAuLmI2ZTk2N2RlZTYxOTI0N2NkODk5Nzc0ZWE4NDIyNzdm
NjQ0YjRiOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMTktMTEtMTQgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBXS0ZyYW1lSW5m
by53ZWJWaWV3IHNob3VsZCBub3QgcmV0dXJuIG5pbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSXQgaXMgbWFya2VkIGFzIHJldHVybmluZyBub24tbnVs
bC4gIExldCdzIG1ha2UgdGhhdCB0cnVlLgorICAgICAgICBBbHNvLCByZW1vdmUgYSBmZXcgY29w
aWVzIG9mIHNlY3VyaXR5IG9yaWdpbiBkYXRhLgorCisgICAgICAgICogU2hhcmVkL0ZyYW1lSW5m
b0RhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUluZm9EYXRhOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9GcmFtZUluZm9EYXRhLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElGcmFtZUluZm8uY3BwOgorICAgICAgICAoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSk6CisgICAg
ICAgIChBUEk6OkZyYW1lSW5mbzo6RnJhbWVJbmZvKToKKyAgICAgICAgKEFQSTo6RnJhbWVJbmZv
Ojp+RnJhbWVJbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6RnJhbWVJbmZvOjpjbGVhclBh
Z2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgIChB
UEk6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0
aEVycm9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50Lmg6CisgICAgICAg
IChBUEk6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoQVBJOjpVSUNs
aWVudDo6cnVuSmF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6cnVu
SmF2YVNjcmlwdFByb21wdCk6CisgICAgICAgIChBUEk6OlVJQ2xpZW50OjpydW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWwpOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6cnVuT3BlblBhbmVsKToK
KyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNwcDoKKyAgICAgICAgKFdLRnJhbWVDcmVh
dGVGcmFtZUluZm8pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAg
ICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VOYXZp
Z2F0aW9uQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJbmZv
Lm1tOgorICAgICAgICAoLVtXS0ZyYW1lSW5mbyB3ZWJWaWV3XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpO
YXZpZ2F0aW9uQ2xpZW50OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJv
cik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRBbGVydCk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVs
ZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChXZWJLaXQ6
OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFdl
YktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6
cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6
OlVJQ2xpZW50OjpydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25h
bFBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdl
YktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6ZGlkUG9zdE1l
c3NhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdG9yTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JN
YW5hZ2VyOjpydW5QYW5lbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWVTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnJ1bkphdmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpydW5KYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnJ1bk9wZW5QYW5lbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorCiAyMDE5LTExLTEzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbIGlPUyBdOiBMYXlvdXQgVGVzdCBodHRwL3Rlc3RzL0luZGV4ZWREQi9zdG9yYWdl
LWxpbWl0LTEuaHR0cHMuaHRtbCBpcyBhIEZsYWt5IEZhaWx1cmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
RnJhbWVJbmZvRGF0YS5jcHAKaW5kZXggZWQwM2JhNDhhYjk0NTE5YjkxZTQ0MGMyMzQxNWZhYzQx
MGRjZDdiMy4uMWZhNDZmYWI2OWE2Y2YzMTE1ZGFkZDZmOTE0NzEwNGVmZWYyNTU3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRnJhbWVJbmZvRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvRnJhbWVJbmZvRGF0YS5jcHAKQEAgLTM4LDI1ICszOCwzNCBAQCB2b2lk
IEZyYW1lSW5mb0RhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAg
ZW5jb2RlciA8PCBmcmFtZUlEOwogfQogCi1ib29sIEZyYW1lSW5mb0RhdGE6OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIsIEZyYW1lSW5mb0RhdGEmIHJlc3VsdCkKK09wdGlvbmFsPEZyYW1l
SW5mb0RhdGE+IEZyYW1lSW5mb0RhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaXNNYWluRnJhbWUpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucmVxdWVzdCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBPcHRpb25hbDxib29sPiBpc01haW5GcmFtZTsKKyAg
ICBkZWNvZGVyID4+IGlzTWFpbkZyYW1lOworICAgIGlmICghaXNNYWluRnJhbWUpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3Q+IHJlcXVlc3Q7CisgICAgZGVjb2RlciA+PiByZXF1ZXN0OworICAgIGlmICghcmVxdWVz
dCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgIE9wdGlvbmFsPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YT4gc2VjdXJpdHlPcmlnaW47CiAgICAgZGVjb2RlciA+PiBzZWN1
cml0eU9yaWdpbjsKICAgICBpZiAoIXNlY3VyaXR5T3JpZ2luKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgcmVzdWx0LnNlY3VyaXR5T3JpZ2luID0gV1RGTW92ZSgqc2VjdXJpdHlPcmlnaW4p
OwotICAgIAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4+
IGZyYW1lSUQ7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQ7CiAgICAgZGVjb2RlciA+PiBmcmFtZUlE
OwogICAgIGlmICghZnJhbWVJRCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdC5m
cmFtZUlEID0gV1RGTW92ZSgqZnJhbWVJRCk7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4ge3sKKyAgICAgICAgV1RGTW92ZSgqaXNN
YWluRnJhbWUpLAorICAgICAgICBXVEZNb3ZlKCpyZXF1ZXN0KSwKKyAgICAgICAgV1RGTW92ZSgq
c2VjdXJpdHlPcmlnaW4pLAorICAgICAgICBXVEZNb3ZlKCpmcmFtZUlEKQorICAgIH19OwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9GcmFtZUluZm9EYXRhLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9GcmFtZUluZm9EYXRhLmgKaW5kZXggNTM4NzE2ZWIyMWViNTQw
YTQxNzc5YzdlNmI4ZmZkNDM1MmZiYzEzYS4uMTM1NGI1MmQ4NWZiMTk4ZDk5YWMxNTlmNTNjNWE4
NjIyMGU3ZTAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRnJhbWVJbmZvRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEuaApAQCAtMzgsMTIg
KzM4LDEyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgRnJhbWVJbmZvRGF0YSB7CiAg
ICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIGJvb2wgZGVj
b2RlKElQQzo6RGVjb2RlciYsIEZyYW1lSW5mb0RhdGEmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8
RnJhbWVJbmZvRGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiAgICAgYm9vbCBpc01haW5G
cmFtZSB7IGZhbHNlIH07CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Q7CiAg
ICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luOwotICAgIE9wdGlv
bmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRDsKKyAgICBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUZyYW1lSW5mby5jcHAKaW5kZXggODI5NzI4YjkxZDYxYWEyNjA0NzVlMmExYzkxZDI0
MjBlOTc4NjBmYi4uNzU3NjlmN2FlNTA3YzUxMDg2NzE3ZmNkMWQ0ZjI1OTc5YjdmMmJkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKQEAgLTMzLDQw
ICszMywzMSBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIAotUmVmPEZyYW1lSW5mbz4gRnJhbWVJbmZv
OjpjcmVhdGUoY29uc3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhJiBmcmFtZUluZm9EYXRhLCBXZWJL
aXQ6OldlYlBhZ2VQcm94eSogcGFnZSkKK1JlZjxGcmFtZUluZm8+IEZyYW1lSW5mbzo6Y3JlYXRl
KFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIFdlYktpdDo6V2ViUGFnZVBy
b3h5JiBwYWdlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYW1lSW5mbyhmcmFtZUlu
Zm9EYXRhLCBwYWdlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhbWVJbmZvKFdURk1v
dmUoZnJhbWVJbmZvRGF0YSksIHBhZ2UpKTsKIH0KIAotUmVmPEZyYW1lSW5mbz4gRnJhbWVJbmZv
OjpjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKQorUmVmPEZyYW1lSW5mbz4gRnJhbWVJ
bmZvOjpjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiBmcmFtZSwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW4sIFdlYktpdDo6V2ViUGFnZVByb3h5
JiBwYWdlKQogewotICAgIFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm9EYXRhOwotCi0g
ICAgZnJhbWVJbmZvRGF0YS5pc01haW5GcmFtZSA9IGZyYW1lLmlzTWFpbkZyYW1lKCk7Ci0gICAg
Ly8gRklYTUU6IFRoaXMgc2hvdWxkIHVzZSB0aGUgZnVsbCByZXF1ZXN0IG9mIHRoZSBmcmFtZSwg
bm90IGp1c3QgdGhlIFVSTC4KLSAgICBmcmFtZUluZm9EYXRhLnJlcXVlc3QgPSBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QoZnJhbWUudXJsKCkpOwotICAgIGZyYW1lSW5mb0RhdGEuc2VjdXJpdHlP
cmlnaW4gPSBzZWN1cml0eU9yaWdpbi5kYXRhKCk7Ci0gICAgZnJhbWVJbmZvRGF0YS5mcmFtZUlE
ID0gZnJhbWUuZnJhbWVJRCgpOwotCi0gICAgcmV0dXJuIGNyZWF0ZShmcmFtZUluZm9EYXRhLCBm
cmFtZS5wYWdlKCkpOworICAgIFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm9EYXRhIHsK
KyAgICAgICAgZnJhbWUuaXNNYWluRnJhbWUoKSwKKyAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0KGZyYW1lLnVybCgpKSwgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHVzZSB0aGUgZnVsbCBy
ZXF1ZXN0IG9mIHRoZSBmcmFtZSwgbm90IGp1c3QgdGhlIFVSTC4KKyAgICAgICAgV1RGTW92ZShz
ZWN1cml0eU9yaWdpbiksCisgICAgICAgIGZyYW1lLmZyYW1lSUQoKQorICAgIH07CisgICAgcmV0
dXJuIGNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBwYWdlKTsKIH0KIAotRnJhbWVJbmZv
OjpGcmFtZUluZm8oY29uc3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhJiBmcmFtZUluZm9EYXRhLCBX
ZWJLaXQ6OldlYlBhZ2VQcm94eSogcGFnZSkKK0ZyYW1lSW5mbzo6RnJhbWVJbmZvKGNvbnN0IFdl
YktpdDo6RnJhbWVJbmZvRGF0YSYgZnJhbWVJbmZvRGF0YSwgV2ViS2l0OjpXZWJQYWdlUHJveHkm
IHBhZ2UpCiAgICAgOiBtX2lzTWFpbkZyYW1lIHsgZnJhbWVJbmZvRGF0YS5pc01haW5GcmFtZSB9
CiAgICAgLCBtX3JlcXVlc3QgeyBmcmFtZUluZm9EYXRhLnJlcXVlc3QgfQogICAgICwgbV9zZWN1
cml0eU9yaWdpbiB7IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoZnJhbWVJbmZvRGF0YS5zZWN1cml0
eU9yaWdpbi5zZWN1cml0eU9yaWdpbigpKSB9Ci0gICAgLCBtX2hhbmRsZSB7IEFQSTo6RnJhbWVI
YW5kbGU6OmNyZWF0ZShmcmFtZUluZm9EYXRhLmZyYW1lSUQgPyAqZnJhbWVJbmZvRGF0YS5mcmFt
ZUlEIDogV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyeyB9KSB9Ci0gICAgLCBtX3BhZ2UgeyBtYWtl
UmVmUHRyKHBhZ2UpIH0KKyAgICAsIG1faGFuZGxlIHsgQVBJOjpGcmFtZUhhbmRsZTo6Y3JlYXRl
KGZyYW1lSW5mb0RhdGEuZnJhbWVJRCkgfQorICAgICwgbV9wYWdlIHsgcGFnZSB9CiB7CiB9CiAK
LUZyYW1lSW5mbzo6fkZyYW1lSW5mbygpCi17Ci19Ci0KLXZvaWQgRnJhbWVJbmZvOjpjbGVhclBh
Z2UoKQotewotICAgIG1fcGFnZSA9IG51bGxwdHI7Ci19CitGcmFtZUluZm86On5GcmFtZUluZm8o
KSA9IGRlZmF1bHQ7CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUZyYW1lSW5mby5oCmluZGV4IDk3OTNkZWM4MmM2OGRhMmQyNWI1MmVmNTZmZWZh
YTlhYzlmMmEyMzkuLjI1MmQ4M2IwMzUzMTY5ZTI3ZWY0YmFlMmM4ZWRmYWQ5NmZhZmQwN2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmgKQEAgLTI5LDcgKzI5
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7Ci1jbGFzcyBTZWN1cml0eU9yaWdpbjsKK3N0cnVjdCBTZWN1cml0eU9yaWdpbkRh
dGE7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDUsMjYgKzQ1LDI0IEBAIGNsYXNzIFNl
Y3VyaXR5T3JpZ2luOwogCiBjbGFzcyBGcmFtZUluZm8gZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1w
bDxPYmplY3Q6OlR5cGU6OkZyYW1lSW5mbz4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RnJh
bWVJbmZvPiBjcmVhdGUoY29uc3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhJiwgV2ViS2l0OjpXZWJQ
YWdlUHJveHkqKTsKLSAgICBzdGF0aWMgUmVmPEZyYW1lSW5mbz4gY3JlYXRlKGNvbnN0IFdlYktp
dDo6V2ViRnJhbWVQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJik7CisgICAg
c3RhdGljIFJlZjxGcmFtZUluZm8+IGNyZWF0ZShXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJiwgV2Vi
S2l0OjpXZWJQYWdlUHJveHkmKTsKKyAgICBzdGF0aWMgUmVmPEZyYW1lSW5mbz4gY3JlYXRlKGNv
bnN0IFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYm
LCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwogICAgIHZpcnR1YWwgfkZyYW1lSW5mbygpOwogCiAg
ICAgYm9vbCBpc01haW5GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNNYWluRnJhbWU7IH0KICAg
ICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QoKSBjb25zdCB7IHJldHVy
biBtX3JlcXVlc3Q7IH0KICAgICBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSB7IHJl
dHVybiBtX3NlY3VyaXR5T3JpZ2luLmdldCgpOyB9CiAgICAgQVBJOjpGcmFtZUhhbmRsZSYgaGFu
ZGxlKCkgeyByZXR1cm4gbV9oYW5kbGUuZ2V0KCk7IH0KLSAgICBXZWJLaXQ6OldlYlBhZ2VQcm94
eSogcGFnZSgpIHsgcmV0dXJuIG1fcGFnZS5nZXQoKTsgfQotCi0gICAgdm9pZCBjbGVhclBhZ2Uo
KTsKKyAgICBXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSgpIHsgcmV0dXJuIG1fcGFnZS5nZXQo
KTsgfQogCiBwcml2YXRlOgotICAgIEZyYW1lSW5mbyhjb25zdCBXZWJLaXQ6OkZyYW1lSW5mb0Rh
dGEmLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSopOworICAgIEZyYW1lSW5mbyhjb25zdCBXZWJLaXQ6
OkZyYW1lSW5mb0RhdGEmLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwogCiAgICAgYm9vbCBtX2lz
TWFpbkZyYW1lOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CiAgICAg
UmVmPFNlY3VyaXR5T3JpZ2luPiBtX3NlY3VyaXR5T3JpZ2luOwogICAgIFJlZjxGcmFtZUhhbmRs
ZT4gbV9oYW5kbGU7Ci0gICAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBtX3BhZ2U7Cisg
ICAgUmVmPFdlYktpdDo6V2ViUGFnZVByb3h5PiBtX3BhZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNs
aWVudC5oCmluZGV4IDk0ZGEzMmYwOGJlZGQ5NTQxMzQ3NDcwZDUyMmViNTA1MjU0MjUzOGYuLmJj
ZjhhMjAwOTAzNTE4YzI5OWI4MWRlZjNmOTM0ODE5NjNhNDFiYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaApAQCAtODMsNyArODMs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0
IFdURjo6U3RyaW5nJiBkZXN0aW5hdGlvblVSTCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENh
bmNlbENsaWVudFJlZGlyZWN0KFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25XaXRoRXJyb3IoV2ViS2l0OjpXZWJQ
YWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBOYXZpZ2F0aW9uKiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYsIE9iamVjdCopIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihXZWJLaXQ6OldlYlBhZ2VQcm94
eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYsIE5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgT2JqZWN0
KikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1l
V2l0aEVycm9yKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5Jiwg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIE5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiwgT2JqZWN0KikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1p
dE5hdmlnYXRpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBOYXZpZ2F0aW9uKiwgT2JqZWN0Kikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZChXZWJLaXQ6OldlYlBh
Z2VQcm94eSYsIE5hdmlnYXRpb24qLCBPYmplY3QqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmluaXNoTmF2aWdhdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIE5hdmlnYXRpb24qLCBPYmpl
Y3QqKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKaW5kZXgg
ZmRlZGZlNDYwMmFkN2Y3ZjUzYWMzMWY4YWNmMWE0NWZmNzA3Njg5OC4uMDY2NzQyM2YwNWE2ZTcw
NWZhODc1Yzk1MWE4NTM5YWY3NWE5MzU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVVJQ2xpZW50LmgKQEAgLTk0LDkgKzk0LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBmb2N1cyhXZWJLaXQ6OldlYlBhZ2VQcm94eSopIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1bmZv
Y3VzKFdlYktpdDo6V2ViUGFnZVByb3h5KikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2
YVNjcmlwdEFsZXJ0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBX
ZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
LCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5k
bGVyKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViS2l0OjpX
ZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSos
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZvaWQgKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsgfQotICAg
IHZpcnR1YWwgdm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KFdlYktpdDo6V2ViUGFnZVByb3h5Kiwg
Y29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQ
cm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZvaWQg
KGNvbnN0IFdURjo6U3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhh
bmRsZXIoV1RGOjpTdHJpbmcoKSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdEFs
ZXJ0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6Oldl
YkZyYW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgRnVuY3Rpb248dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBj
b25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSB7IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsgfQorICAgIHZpcnR1YWwgdm9pZCBydW5KYXZh
U2NyaXB0UHJvbXB0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBj
b25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpTdHJpbmcoKSk7IH0KIAog
ICAgIHZpcnR1YWwgdm9pZCBzZXRTdGF0dXNUZXh0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29u
c3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVs
ZW1lbnQoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJLaXQ6OldlYkhpdFRlc3RSZXN1
bHREYXRhJiwgT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVyPiwgT2JqZWN0Kikg
eyB9CkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dG
cmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6RmxvYXRS
ZWN0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcih7IH0pOyB9CiAK
ICAgICB2aXJ0dWFsIGJvb2wgY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmly
bVBhbmVsKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6
OldlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBGdW5j
dGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxl
cih0cnVlKTsgfQorICAgIHZpcnR1YWwgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwo
V2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJh
bWVQcm94eSosIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBGdW5jdGlvbjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOyB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFNjcm9sbChXZWJLaXQ6OldlYlBhZ2VQcm94eSopIHsg
fQogCkBAIC0xMzYsNyArMTM2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBuZWVkc0Zv
bnRBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2hhbmdlRm9udEF0dHJpYnV0ZXMoY29uc3QgV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXMmKSB7
IH0KIAotICAgIHZpcnR1YWwgYm9vbCBydW5PcGVuUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkq
LCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmLCBPcGVuUGFuZWxQYXJhbWV0ZXJzKiwgV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclByb3h5KikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcnVuT3BlblBh
bmVsKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIE9wZW5QYW5lbFBhcmFtZXRlcnMqLCBXZWJLaXQ6Oldl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdl
YktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgU2VjdXJpdHlPcmln
aW4mLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYs
IFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFNlY3VyaXR5T3JpZ2luJiwgU2VjdXJpdHlPcmlnaW4m
LCBXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmIHJlcXVlc3QpIHsgcmVx
dWVzdC5kZW55KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9u
Rm9yT3JpZ2luKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5Jiwg
U2VjdXJpdHlPcmlnaW4mLCBTZWN1cml0eU9yaWdpbiYsIFdlYktpdDo6VXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrUHJveHkmIHJlcXVlc3QpIHsgcmVxdWVzdC5kZW55KCk7IH0KQEAgLTE5Nyw3ICsx
OTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNob3dTYWZlQnJvd3NpbmdXYXJu
aW5nKCkgeyB9CiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQotICAgIHZpcnR1YWwgdm9pZCBydW5X
ZWJBdXRoZW50aWNhdGlvblBhbmVsKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViQXV0aGVudGlj
YXRpb25QYW5lbCYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpXZWJBdXRoZW50
aWNhdGlvblBhbmVsUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFu
ZGxlcihXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgV2ViQXV0aGVudGljYXRpb25QYW5lbCYsIFdlYktpdDo6V2ViRnJhbWVQcm94
eSYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVz
dWx0OjpVbmF2YWlsYWJsZSk7IH0KICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0ZyYW1lLmNwcAppbmRleCBhODU2MmVhN2Y2NTY3ZGIzYWMzMDZmNzdiOTEwM2I5
ODM0YWFiYTBjLi45NTU2MjA1MTg3NTRmN2ViMGNlODdmNGU3N2IzMWE5ZDRmMjY2YTRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNwcApAQCAtMTM0LDcgKzEzNCwx
MCBAQCBXS0ZyYW1lSGFuZGxlUmVmIFdLRnJhbWVDcmVhdGVGcmFtZUhhbmRsZShXS0ZyYW1lUmVm
IGZyYW1lUmVmKQogCiBXS0ZyYW1lSW5mb1JlZiBXS0ZyYW1lQ3JlYXRlRnJhbWVJbmZvKFdLRnJh
bWVSZWYgZnJhbWVSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKCZBUEk6OkZyYW1lSW5mbzo6Y3Jl
YXRlKCp0b0ltcGwoZnJhbWVSZWYpLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJv
bVN0cmluZyh0b0ltcGwoZnJhbWVSZWYpLT51cmwoKSkpLmxlYWtSZWYoKSk7CisgICAgYXV0byog
cGFnZSA9IHRvSW1wbChmcmFtZVJlZiktPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIHJldHVybiB0b0FQSSgmQVBJOjpGcmFtZUluZm86OmNyZWF0
ZSgqdG9JbXBsKGZyYW1lUmVmKSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHsgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcodG9JbXBsKGZyYW1lUmVmKS0+dXJs
KCkpLT5kYXRhKCkgfSwgKnBhZ2UpLmxlYWtSZWYoKSk7CiB9CiAKIHZvaWQgV0tGcmFtZUdldE1h
aW5SZXNvdXJjZURhdGEoV0tGcmFtZVJlZiBmcmFtZVJlZiwgV0tGcmFtZUdldFJlc291cmNlRGF0
YUZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggNDQ2MzcyNTFkZmY1YTE5MTczYmJhYzQ3YTQzMTVhM2Zm
MmY4ZjZiNC4uNmRkMjhlMDRhZDgwNDcxMDM1OGJiODA2YmRjZTAzMjE3YWMwMDU2NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC0xNTg4LDI0ICsxNTg4LDI0
IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBX
S1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgICAgICBtX2NsaWVudC51bmZvY3Vz
KHRvQVBJKHBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAg
ICAgICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKSBmaW5hbAorICAgICAgICB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChXZWJQYWdlUHJv
eHkmIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIFNl
Y3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSwgRnVuY3Rpb248dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobV9j
bGllbnQucnVuSmF2YVNjcmlwdEFsZXJ0KSB7CiAgICAgICAgICAgICAgICAgUmVmUHRyPFJ1bkph
dmFTY3JpcHRBbGVydFJlc3VsdExpc3RlbmVyPiBsaXN0ZW5lciA9IFJ1bkphdmFTY3JpcHRBbGVy
dFJlc3VsdExpc3RlbmVyOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAg
ICAgICAgICAgICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9
IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShzZWN1cml0eU9yaWdpbkRhdGEucHJvdG9jb2ws
IHNlY3VyaXR5T3JpZ2luRGF0YS5ob3N0LCBzZWN1cml0eU9yaWdpbkRhdGEucG9ydCk7Ci0gICAg
ICAgICAgICAgICAgbV9jbGllbnQucnVuSmF2YVNjcmlwdEFsZXJ0KHRvQVBJKHBhZ2UpLCB0b0FQ
SShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoc2VjdXJpdHlPcmlnaW4uZ2V0
KCkpLCB0b0FQSShsaXN0ZW5lci5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Cisg
ICAgICAgICAgICAgICAgbV9jbGllbnQucnVuSmF2YVNjcmlwdEFsZXJ0KHRvQVBJKCZwYWdlKSwg
dG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIHRvQVBJKHNlY3VyaXR5T3JpZ2lu
LmdldCgpKSwgdG9BUEkobGlzdGVuZXIuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
aWYgKG1fY2xpZW50LnJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1KSB7
CiAgICAgICAgICAgICAgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3Jp
Z2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNlY3VyaXR5T3JpZ2luRGF0YS5wcm90
b2NvbCwgc2VjdXJpdHlPcmlnaW5EYXRhLmhvc3QsIHNlY3VyaXR5T3JpZ2luRGF0YS5wb3J0KTsK
LSAgICAgICAgICAgICAgICBtX2NsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZv
clVzZVdpdGhWNSh0b0FQSShwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShmcmFt
ZSksIHRvQVBJKHNlY3VyaXR5T3JpZ2luLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWNSh0b0FQSSgmcGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEko
ZnJhbWUpLCB0b0FQSShzZWN1cml0eU9yaWdpbi5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbyk7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlm
IChtX2NsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCkgewot
ICAgICAgICAgICAgICAgIG1fY2xpZW50LnJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9y
VXNlV2l0aFYwKHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGZyYW1l
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC5y
dW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCh0b0FQSSgmcGFnZSksIHRv
QVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMTYxNCwyNSArMTYxNCwyNSBAQCB2b2lkIFdL
UGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGll
bnRCYXNlKiB3a0NsaWVudAogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAg
ICAgfQogCi0gICAgICAgIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViUGFnZVByb3h5KiBw
YWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSwgRnVuY3Rpb248dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAgICAgICAgdm9pZCBydW5KYXZhU2NyaXB0
Q29uZmlybShXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgV2ViRnJh
bWVQcm94eSogZnJhbWUsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSwg
RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKG1fY2xpZW50LnJ1bkphdmFTY3JpcHRDb25maXJtKSB7CiAgICAg
ICAgICAgICAgICAgUmVmUHRyPFJ1bkphdmFTY3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXI+IGxp
c3RlbmVyID0gUnVuSmF2YVNjcmlwdENvbmZpcm1SZXN1bHRMaXN0ZW5lcjo6Y3JlYXRlKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgICAgICAgICBSZWZQdHI8QVBJOjpTZWN1
cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUo
c2VjdXJpdHlPcmlnaW5EYXRhLnByb3RvY29sLCBzZWN1cml0eU9yaWdpbkRhdGEuaG9zdCwgc2Vj
dXJpdHlPcmlnaW5EYXRhLnBvcnQpOwotICAgICAgICAgICAgICAgIG1fY2xpZW50LnJ1bkphdmFT
Y3JpcHRDb25maXJtKHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGZy
YW1lKSwgdG9BUEkoc2VjdXJpdHlPcmlnaW4uZ2V0KCkpLCB0b0FQSShsaXN0ZW5lci5nZXQoKSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICAgICAgbV9jbGllbnQucnVu
SmF2YVNjcmlwdENvbmZpcm0odG9BUEkoJnBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRv
QVBJKGZyYW1lKSwgdG9BUEkoc2VjdXJpdHlPcmlnaW4uZ2V0KCkpLCB0b0FQSShsaXN0ZW5lci5n
ZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAobV9jbGllbnQucnVuSmF2YVNjcmlw
dENvbmZpcm1fZGVwcmVjYXRlZEZvclVzZVdpdGhWNSkgewogICAgICAgICAgICAgICAgIFJlZlB0
cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmln
aW46OmNyZWF0ZShzZWN1cml0eU9yaWdpbkRhdGEucHJvdG9jb2wsIHNlY3VyaXR5T3JpZ2luRGF0
YS5ob3N0LCBzZWN1cml0eU9yaWdpbkRhdGEucG9ydCk7Ci0gICAgICAgICAgICAgICAgYm9vbCBy
ZXN1bHQgPSBtX2NsaWVudC5ydW5KYXZhU2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0
aFY1KHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgdG9B
UEkoc2VjdXJpdHlPcmlnaW4uZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAg
ICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gbV9jbGllbnQucnVuSmF2YVNjcmlwdENvbmZpcm1f
ZGVwcmVjYXRlZEZvclVzZVdpdGhWNSh0b0FQSSgmcGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgp
KSwgdG9BUEkoZnJhbWUpLCB0b0FQSShzZWN1cml0eU9yaWdpbi5nZXQoKSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIocmVzdWx0KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5ydW5KYXZhU2NyaXB0
Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKSB7Ci0gICAgICAgICAgICAgICAgYm9vbCBy
ZXN1bHQgPSBtX2NsaWVudC5ydW5KYXZhU2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0
aFYwKHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IG1f
Y2xpZW50LnJ1bkphdmFTY3JpcHRDb25maXJtX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAodG9BUEko
JnBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKIAogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3Vs
dCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTY0MSwxOCArMTY0MSwxOCBAQCB2b2lk
IFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlD
bGllbnRCYXNlKiB3a0NsaWVudAogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2Up
OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KFdlYlBhZ2VQ
cm94eSogcGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlZmF1bHRW
YWx1ZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2Vj
dXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBmaW5hbAorICAgICAgICB2b2lkIHJ1bkphdmFTY3JpcHRQcm9tcHQoV2ViUGFn
ZVByb3h5JiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVs
dFZhbHVlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJp
dHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobV9jbGllbnQucnVuSmF2
YVNjcmlwdFByb21wdCkgewogICAgICAgICAgICAgICAgIFJlZlB0cjxSdW5KYXZhU2NyaXB0UHJv
bXB0UmVzdWx0TGlzdGVuZXI+IGxpc3RlbmVyID0gUnVuSmF2YVNjcmlwdFByb21wdFJlc3VsdExp
c3RlbmVyOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICAgICAg
ICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShzZWN1cml0eU9yaWdpbkRhdGEucHJvdG9jb2wsIHNlY3VyaXR5
T3JpZ2luRGF0YS5ob3N0LCBzZWN1cml0eU9yaWdpbkRhdGEucG9ydCk7Ci0gICAgICAgICAgICAg
ICAgbV9jbGllbnQucnVuSmF2YVNjcmlwdFByb21wdCh0b0FQSShwYWdlKSwgdG9BUEkobWVzc2Fn
ZS5pbXBsKCkpLCB0b0FQSShkZWZhdWx0VmFsdWUuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCB0b0FQ
SShzZWN1cml0eU9yaWdpbi5nZXQoKSksIHRvQVBJKGxpc3RlbmVyLmdldCgpKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC5ydW5KYXZhU2NyaXB0
UHJvbXB0KHRvQVBJKCZwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShkZWZhdWx0
VmFsdWUuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShzZWN1cml0eU9yaWdpbi5nZXQoKSks
IHRvQVBJKGxpc3RlbmVyLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChtX2Ns
aWVudC5ydW5KYXZhU2NyaXB0UHJvbXB0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUpIHsKICAgICAg
ICAgICAgICAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBB
UEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoc2VjdXJpdHlPcmlnaW5EYXRhLnByb3RvY29sLCBz
ZWN1cml0eU9yaWdpbkRhdGEuaG9zdCwgc2VjdXJpdHlPcmlnaW5EYXRhLnBvcnQpOwotICAgICAg
ICAgICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4gc3RyaW5nID0gYWRvcHRSZWYodG9JbXBsKG1f
Y2xpZW50LnJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSh0b0FQSShw
YWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShkZWZhdWx0VmFsdWUuaW1wbCgpKSwg
dG9BUEkoZnJhbWUpLCB0b0FQSShzZWN1cml0eU9yaWdpbi5nZXQoKSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbykpKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8QVBJOjpTdHJpbmc+IHN0cmlu
ZyA9IGFkb3B0UmVmKHRvSW1wbChtX2NsaWVudC5ydW5KYXZhU2NyaXB0UHJvbXB0X2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjUodG9BUEkoJnBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJ
KGRlZmF1bHRWYWx1ZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIHRvQVBJKHNlY3VyaXR5T3JpZ2lu
LmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSkpOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIGlmIChzdHJpbmcpCiAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN0cmluZy0+c3RyaW5nKCkpOwpAQCAtMTY2Miw3ICsxNjYyLDcgQEAgdm9pZCBX
S1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xp
ZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAg
ICAgaWYgKG1fY2xpZW50LnJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZvclVzZVdpdGhW
MCkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4gc3RyaW5nID0gYWRvcHRS
ZWYodG9JbXBsKG1fY2xpZW50LnJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZvclVzZVdp
dGhWMCh0b0FQSShwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShkZWZhdWx0VmFs
dWUuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKSk7Cisg
ICAgICAgICAgICAgICAgUmVmUHRyPEFQSTo6U3RyaW5nPiBzdHJpbmcgPSBhZG9wdFJlZih0b0lt
cGwobV9jbGllbnQucnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKHRv
QVBJKCZwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShkZWZhdWx0VmFsdWUuaW1w
bCgpKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKSk7CiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKHN0cmluZykKICAgICAgICAgICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoc3RyaW5nLT5zdHJpbmcoKSk7CkBAIC0xODE0LDE2ICsxODE0
LDE2IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25z
dCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgICAgICByZXR1cm4gbV9jbGll
bnQucnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjYgfHwg
bV9jbGllbnQucnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOwogICAgICAgICB9CiAKLSAgICAg
ICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkq
IHBhZ2UsIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkq
IGZyYW1lLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgICAgICB2b2lkIHJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbChXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV1RGOjpTdHJpbmcm
IG1lc3NhZ2UsIFdlYktpdDo6V2ViRnJhbWVQcm94eSogZnJhbWUsIFNlY3VyaXR5T3JpZ2luRGF0
YSYmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAobV9jbGllbnQucnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsKSB7CiAgICAgICAgICAgICAgICAgUmVmUHRyPFJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5l
bFJlc3VsdExpc3RlbmVyPiBsaXN0ZW5lciA9IFJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFJl
c3VsdExpc3RlbmVyOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgICAg
ICAgICAgICAgIG1fY2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCh0b0FQSShwYWdl
KSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIHRvQVBJKGxpc3RlbmVyLmdl
dCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVu
dC5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwodG9BUEkoJnBhZ2UpLCB0b0FQSShtZXNzYWdl
LmltcGwoKSksIHRvQVBJKGZyYW1lKSwgdG9BUEkobGlzdGVuZXIuZ2V0KCkpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKG1fY2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbF9k
ZXByZWNhdGVkRm9yVXNlV2l0aFY2KSB7Ci0gICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBt
X2NsaWVudC5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxfZGVwcmVjYXRlZEZvclVzZVdpdGhW
Nih0b0FQSShwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBtX2Ns
aWVudC5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxfZGVwcmVjYXRlZEZvclVzZVdpdGhWNih0
b0FQSSgmcGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
c3VsdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMTg0OSwx
MiArMTg0OSwxMiBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJl
ZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudAogICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIobV9jbGllbnQuZXhjZWVkZWREYXRhYmFzZVF1b3RhKHRvQVBJKHBhZ2UpLCB0
b0FQSShmcmFtZSksIHRvQVBJKG9yaWdpbiksIHRvQVBJKGRhdGFiYXNlTmFtZS5pbXBsKCkpLCB0
b0FQSShkYXRhYmFzZURpc3BsYXlOYW1lLmltcGwoKSksIGN1cnJlbnRRdW90YSwgY3VycmVudE9y
aWdpblVzYWdlLCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgZXhwZWN0ZWRVc2FnZSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKSk7CiAgICAgICAgIH0KIAotICAgICAgICBib29sIHJ1bk9wZW5QYW5l
bChXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmLCBBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnMqIHBhcmFtZXRl
cnMsIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqIGxpc3RlbmVyKSBmaW5hbAorICAg
ICAgICBib29sIHJ1bk9wZW5QYW5lbChXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkq
IGZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgQVBJOjpPcGVuUGFuZWxQYXJh
bWV0ZXJzKiBwYXJhbWV0ZXJzLCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5KiBsaXN0
ZW5lcikgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5ydW5PcGVu
UGFuZWwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgICAgICBtX2Ns
aWVudC5ydW5PcGVuUGFuZWwodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkocGFyYW1l
dGVycyksIHRvQVBJKGxpc3RlbmVyKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAg
ICAgICAgIG1fY2xpZW50LnJ1bk9wZW5QYW5lbCh0b0FQSSgmcGFnZSksIHRvQVBJKGZyYW1lKSwg
dG9BUEkocGFyYW1ldGVycyksIHRvQVBJKGxpc3RlbmVyKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKQEAgLTIwNzYsNyAr
MjA3Niw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBj
b25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAKICNpZiBFTkFCTEUoV0VCX0FVVEhO
KQogICAgICAgICAvLyBUaGUgY3VycmVudCBtZXRob2QgaXMgc3BlY2lhbGl6ZWQgZm9yIFdlYktp
dFRlc3RSdW5uZXIuCi0gICAgICAgIHZvaWQgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbChXZWJQ
YWdlUHJveHkmLCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmLCBXZWJGcmFtZVByb3h5Jiwg
Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSBmaW5hbAorICAgICAgICB2b2lkIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoV2ViUGFn
ZVByb3h5JiwgQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsJiwgV2ViRnJhbWVQcm94eSYsIFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktp
dDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZp
bmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQucnVuV2ViQXV0aGVudGlj
YXRpb25QYW5lbCkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6
V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUpOwpAQCAtMjE2MCwxMSAr
MjE2MCwxMSBAQCB2b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdLUGFnZVJlZiBw
YWdlUmVmLCBjb25zdCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZQogICAgICAgICAgICAgbV9jbGllbnQu
ZGlkRmFpbE5hdmlnYXRpb24odG9BUEkoJnBhZ2UpLCB0b0FQSShuYXZpZ2F0aW9uKSwgdG9BUEko
ZXJyb3IpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAg
ICAgIH0KIAotICAgICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0
aEVycm9yKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgc3ViZnJhbWUsIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW5EYXRhLCBBUEk6Ok5h
dmlnYXRpb24qIG5hdmlnYXRpb24sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9y
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3IoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJG
cmFtZVByb3h5JiBzdWJmcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJp
dHlPcmlnaW5EYXRhLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZEluU3ViZnJhbWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGll
bnQuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWUodG9BUEkoJnBhZ2UpLCB0b0FQSShu
YXZpZ2F0aW9uKSwgdG9BUEkoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShzdWJmcmFtZSwgc2VjdXJp
dHlPcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCkpLnB0cigpKSwgdG9BUEkoZXJyb3IpLCB0b0FQ
SSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICBtX2Ns
aWVudC5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZSh0b0FQSSgmcGFnZSksIHRvQVBJ
KG5hdmlnYXRpb24pLCB0b0FQSShBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKHN1YmZyYW1lLCBXVEZN
b3ZlKHNlY3VyaXR5T3JpZ2luRGF0YSksIHBhZ2UpLnB0cigpKSwgdG9BUEkoZXJyb3IpLCB0b0FQ
SSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAogICAg
ICAgICB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZChXZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6
TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJbmZv
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJbmZvLm1tCmlu
ZGV4IDYwZWJmMTNkOTNiNzg3NTVmYzc4OTMxYzk4ZWU4OWFjYzA4ZDA1ODQuLjY2YjFhNjMzZGRj
YzU0OWVjZjIwMjQ1NTBlNzY3ZjY2OTQ2ODZkZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZyYW1lSW5mby5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tGcmFtZUluZm8ubW0KQEAgLTYxLDkgKzYxLDcgQEAKIAogLSAo
V0tXZWJWaWV3ICopd2ViVmlldwogewotICAgIGlmIChXZWJLaXQ6OldlYlBhZ2VQcm94eSogcGFn
ZSA9IF9mcmFtZUluZm8tPnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuIFtbZnJvbVdlYlBhZ2VQcm94
eSgqcGFnZSkgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgcmV0dXJuIG5pbDsKKyAgICByZXR1
cm4gW1tmcm9tV2ViUGFnZVByb3h5KF9mcmFtZUluZm8tPnBhZ2UoKSkgcmV0YWluXSBhdXRvcmVs
ZWFzZV07CiB9CiAKIC0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9s
bGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRD
b250cm9sbGVyLm1tCmluZGV4IGEwMGIyMDNjYzkwNTkzMDFiZWNjNDYxZDYxYjQ2NzMyYjg1NjEy
ZmQuLjZmNjc4ZjM0ZGQ1NjliYzkzNGM5NjFlMzE5ZjlhNDY3ZWE1NzRkMjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVu
dENvbnRyb2xsZXIubW0KQEAgLTEyNywxMCArMTI3LDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAg
fQogICAgIAotICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBh
Z2UsIGNvbnN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSYgZnJhbWVJbmZvRGF0YSwgV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUpIG92ZXJyaWRlCisg
ICAgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSwgV2ViS2l0
OjpGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBA
YXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxXS0ZyYW1lSW5mbz4gZnJh
bWVJbmZvID0gd3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKGZyYW1lSW5mb0RhdGEsICZw
YWdlKSk7CisgICAgICAgICAgICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IGZyYW1lSW5mbyA9IHdy
YXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBwYWdl
KSk7CiAgICAgICAgICAgICBpZCBib2R5ID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRl
c2VyaWFsaXplKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgMCk7CiAgICAgICAgICAgICBhdXRvIG1l
c3NhZ2UgPSBhZG9wdE5TKFtbV0tTY3JpcHRNZXNzYWdlIGFsbG9jXSBfaW5pdFdpdGhCb2R5OmJv
ZHkgd2ViVmlldzpmcm9tV2ViUGFnZVByb3h5KHBhZ2UpIGZyYW1lSW5mbzpmcmFtZUluZm8uZ2V0
KCkgbmFtZTptX25hbWUuZ2V0KCldKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCmluZGV4IDk0NjNlNTE1Y2M3YmNmZmM2YzNh
YzExZGU0NDU1NjNhODk1Yzk1MzkuLjQ2MGViYTRhY2E5MzA3MzE2NWViN2ZhMDFlMjdmODUyYmM1
ODhkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25T
dGF0ZS5oCkBAIC0xMDAsNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRQZXJm
b3JtQ2xpZW50UmVkaXJlY3QoV2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25z
dCBXVEY6OlN0cmluZyYpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZENhbmNlbENsaWVudFJl
ZGlyZWN0KFdlYlBhZ2VQcm94eSYpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZEZhaWxQcm92
aXNpb25hbE5hdmlnYXRpb25XaXRoRXJyb3IoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYs
IEFQSTo6TmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBBUEk6Ok9i
amVjdCopIG92ZXJyaWRlOwotICAgICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1
YmZyYW1lV2l0aEVycm9yKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBBUEk6Ok5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihXZWJQYWdlUHJveHkmLCBX
ZWJGcmFtZVByb3h5JiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIEFQSTo6TmF2aWdh
dGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBBUEk6Ok9iamVjdCopIG92ZXJy
aWRlOwogICAgICAgICB2b2lkIGRpZENvbW1pdE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgQVBJ
OjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRG
aW5pc2hEb2N1bWVudExvYWQoV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpP
YmplY3QqKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRGaW5pc2hOYXZpZ2F0aW9uKFdlYlBh
Z2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXgg
M2U5ODRjMWVlZjc1Yjc1MjlhM2M0M2Q4MjM2NjJhYWM5MDViNzMwYi4uMzUyYmUxYmNmZjA2NGJl
ODczZjlhNDQ5OTUzMmM1MzYxZDc0MGIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtODQ2LDcgKzg0Niw3IEBAIHZvaWQgTmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0
aW9uV2l0aEVycm9yKFdlCiB9CiAKIC8vIEZJWE1FOiBTaG91bGRuJ3QgbmVlZCB0byBwYXNzIHRo
ZSBXZWJGcmFtZVByb3h5IGluIGhlcmUuIEF0IG1vc3QsIGEgRnJhbWVIYW5kbGUuCi12b2lkIE5h
dmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZElu
U3ViZnJhbWVXaXRoRXJyb3IoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiB3ZWJG
cmFtZVByb3h5LCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBBUEk6
Ok5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpP
YmplY3QqKQordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZhaWxQ
cm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0aEVycm9yKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2Vi
RnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlP
cmlnaW4sIEFQSTo6TmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVy
cm9yLCBBUEk6Ok9iamVjdCopCiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhc3NlcnQgdGhh
dCBuYXZpZ2F0aW9uIGlzIG5vdCBudWxsIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSBudWxsIGJl
Y2F1c2UgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgcGFzc2Vz
IG51bGwuCiAKQEAgLTg1Niw3ICs4NTYsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdh
dGlvbkNsaWVudDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJybwogICAg
IGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9u
RGVsZWdhdGUuZ2V0KCk7CiAgICAgYXV0byBlcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlciA9IGNy
ZWF0ZUVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyKG1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmll
dywgd2ViRnJhbWVQcm94eSwgZXJyb3IpOwogCi0gICAgWyhpZCA8V0tOYXZpZ2F0aW9uRGVsZWdh
dGVQcml2YXRlPiluYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUu
bV93ZWJWaWV3IG5hdmlnYXRpb246bmlsIGRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1l
OndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSh3ZWJGcmFtZVByb3h5LCBzZWN1cml0eU9y
aWdpbi5zZWN1cml0eU9yaWdpbigpKSkgd2l0aEVycm9yOmVycm9yV2l0aFJlY292ZXJ5QXR0ZW1w
dGVyLmdldCgpXTsKKyAgICBbKGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+KW5hdmln
YXRpb25EZWxlZ2F0ZSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgbmF2aWdh
dGlvbjpuaWwgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWU6d3JhcHBlcihBUEk6OkZy
YW1lSW5mbzo6Y3JlYXRlKHdlYkZyYW1lUHJveHksIFdURk1vdmUoc2VjdXJpdHlPcmlnaW4pLCBw
YWdlKSkgd2l0aEVycm9yOmVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyLmdldCgpXTsKIH0KIAog
dm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZENvbW1pdE5hdmlnYXRp
b24oV2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6
T2JqZWN0KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAppbmRl
eCBmYWM3MGI2YmMzMGM4NDZlMjBlMWRhYTIxMmNhMDZiMzA2OGEyMjNhLi43ZDIwNGMyNTIyYzZm
MzE2MDdmOTdjYjNhNWQ0YzE5YzUwNTlhMzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvVUlEZWxlZ2F0ZS5oCkBAIC04OCwxNCArODgsMTQgQEAgcHJpdmF0ZToKICAgICAgICAg
dm9pZCBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoV2ViUGFnZVByb3h5KikgZmluYWw7CiAg
ICAgICAgIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKFdlYlBhZ2VQcm94eSopIGZpbmFsOwogICAg
ICAgICB2b2lkIGRpZEV4aXRGdWxsc2NyZWVuKFdlYlBhZ2VQcm94eSopIGZpbmFsOwotICAgICAg
ICB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmlu
ZyYsIFdlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBG
dW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOwotICAgICAgICB2b2lk
IHJ1bkphdmFTY3JpcHRDb25maXJtKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiwg
V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0
aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOwotICAgICAgICB2b2lk
IHJ1bkphdmFTY3JpcHRQcm9tcHQoV2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBj
b25zdCBXVEY6OlN0cmluZyYsIFdlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYpIGZpbmFs
OworICAgICAgICB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChXZWJQYWdlUHJveHkmLCBjb25zdCBX
VEY6OlN0cmluZyYsIFdlYkZyYW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
JiwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKKyAgICAgICAg
dm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybShXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmlu
ZyYsIFdlYkZyYW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgRnVuY3Rp
b248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CisgICAgICAgIHZvaWQg
cnVuSmF2YVNjcmlwdFByb21wdChXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNv
bnN0IFdURjo6U3RyaW5nJiwgV2ViRnJhbWVQcm94eSosIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYpIGZpbmFsOwogICAg
ICAgICB2b2lkIHByZXNlbnRTdG9yYWdlQWNjZXNzQ29uZmlybURpYWxvZyhjb25zdCBXVEY6OlN0
cmluZyYgcmVxdWVzdGluZ0RvbWFpbiwgY29uc3QgV1RGOjpTdHJpbmcmIGN1cnJlbnREb21haW4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgICAgICB2b2lkIHJlcXVlc3RT
dG9yYWdlQWNjZXNzQ29uZmlybShXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5KiwgY29uc3Qg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlcXVlc3RpbmdEb21haW4sIGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBjdXJyZW50RG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKSBmaW5hbDsKICAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBBUEk6
OlNlY3VyaXR5T3JpZ2luJiwgRnVuY3Rpb248dm9pZChib29sKT4mKSBmaW5hbDsKICAgICAgICAg
Ym9vbCBjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKSBjb25zdCBmaW5hbDsKLSAgICAg
ICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV2ViUGFnZVByb3h5KiwgY29uc3Qg
V1RGOjpTdHJpbmcmLCBXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWw7
CisgICAgICAgIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYlBhZ2VQcm94eSYs
IGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViRnJhbWVQcm94eSosIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5h
bDsKICAgICAgICAgdm9pZCBleGNlZWRlZERhdGFiYXNlUXVvdGEoV2ViUGFnZVByb3h5KiwgV2Vi
RnJhbWVQcm94eSosIEFQSTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXVEY6OlN0cmluZyYgZGF0
YWJhc2VOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcg
bG9uZyBjdXJyZW50UXVvdGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50T3JpZ2luVXNhZ2Us
IHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50VXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBleHBl
Y3RlZFVzYWdlLCBGdW5jdGlvbjx2b2lkKHVuc2lnbmVkIGxvbmcgbG9uZyk+JiYgY29tcGxldGlv
bkhhbmRsZXIpIGZpbmFsOwogICAgICAgICB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGEoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1
aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQsIEZ1bmN0aW9u
PHZvaWQodW5zaWduZWQgbG9uZyBsb25nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CiAg
ICAgICAgIHZvaWQgZGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNl
KFdlYlBhZ2VQcm94eSYsIEFQSTo6T2JqZWN0KikgZmluYWw7CkBAIC0xMjEsNyArMTIxLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChXZWJQYWdlUHJv
eHkmLCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYsIE9wdGlvblNldDxXZWJFdmVudDo6TW9k
aWZpZXI+LCBBUEk6Ok9iamVjdCopOwogICAgICAgICB2b2lkIGRpZENsaWNrQXV0b0ZpbGxCdXR0
b24oV2ViUGFnZVByb3h5JiwgQVBJOjpPYmplY3QqKSBmaW5hbDsKICAgICAgICAgdm9pZCB0b29s
YmFyc0FyZVZpc2libGUoV2ViUGFnZVByb3h5JiwgRnVuY3Rpb248dm9pZChib29sKT4mJikgZmlu
YWw7Ci0gICAgICAgIGJvb2wgcnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJv
eHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBBUEk6Ok9wZW5QYW5lbFBh
cmFtZXRlcnMqLCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5KikgZmluYWw7CisgICAg
ICAgIGJvb2wgcnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkqLCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJzKiwgV2Vi
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSopIGZpbmFsOwogICAgICAgICB2b2lkIGRpZEV4
Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQoV2ViUGFnZVByb3h5
JiwgV0tSZXNvdXJjZUxpbWl0KSBmaW5hbDsKICAgICAgICAgdm9pZCBzYXZlRGF0YVRvRmlsZUlu
RG93bmxvYWRzRm9sZGVyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3Qg
V1RGOjpTdHJpbmcmLCBjb25zdCBVUkwmLCBBUEk6OkRhdGEmKSBmaW5hbDsKICNlbmRpZgpAQCAt
MTU1LDcgKzE1NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgaW1hZ2VPck1lZGlhRG9jdW1l
bnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgZmluYWw7CiAgICAgICAgIHZv
aWQgZGlkU2hvd1NhZmVCcm93c2luZ1dhcm5pbmcoKSBmaW5hbDsKICNpZiBFTkFCTEUoV0VCX0FV
VEhOKQotICAgICAgICB2b2lkIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoV2ViUGFnZVByb3h5
JiwgQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsJiwgV2ViRnJhbWVQcm94eSYsIGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQXV0
aGVudGljYXRpb25QYW5lbFJlc3VsdCk+JiYpIGZpbmFsOworICAgICAgICB2b2lkIHJ1bldlYkF1
dGhlbnRpY2F0aW9uUGFuZWwoV2ViUGFnZVByb3h5JiwgQVBJOjpXZWJBdXRoZW50aWNhdGlvblBh
bmVsJiwgV2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpPiYmKSBmaW5h
bDsKICNlbmRpZgogCiAgICAgICAgIFVJRGVsZWdhdGUmIG1fdWlEZWxlZ2F0ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IGE3NTAzNDYyMDE2ZmUx
NjE3MWIxNjA0Njc0ZTE2YzNlYTkyZjk4OWQuLmJiZjQwOTFiYTFmN2UxYzhjNjZkODNhNDQ3MjYz
MTIxNGQ2NWM2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJ
RGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5tbQpAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0
ZU5ld1BhZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJDb3JlOjpXaW5kb3dGCiAgICAgY29t
cGxldGlvbkhhbmRsZXIod2ViVmlldy0+X3BhZ2UuZ2V0KCkpOwogfQogCi12b2lkIFVJRGVsZWdh
dGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0QWxlcnQoV2ViUGFnZVByb3h5KiwgY29uc3QgV1RG
OjpTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHksIGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpy
dW5KYXZhU2NyaXB0QWxlcnQoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBXVEY6OlN0cmluZyYg
bWVzc2FnZSwgV2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcm94eSwgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld1J1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2VJbml0aWF0ZWRCeUZyYW1l
Q29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTI4
Niw3ICsyODYsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0QWxl
cnQoV2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmCiAgICAgfQogCiAgICAgYXV0byBj
aGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdl
dCgpLCBAc2VsZWN0b3Iod2ViVmlldzpydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdl
OmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KSk7Ci0gICAgW2RlbGVnYXRlIHdl
YlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhN
ZXNzYWdlOm1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpj
cmVhdGUoKndlYkZyYW1lUHJveHksIHNlY3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigp
KSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gewor
ICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuSmF2YVNjcmlw
dEFsZXJ0UGFuZWxXaXRoTWVzc2FnZTptZXNzYWdlIGluaXRpYXRlZEJ5RnJhbWU6d3JhcHBlcihB
UEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCp3ZWJGcmFtZVByb3h5LCBXVEZNb3ZlKHNlY3VyaXR5T3Jp
Z2luRGF0YSksIHBhZ2UpKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3Zl
KGNoZWNrZXIpXSB7CiAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0Jl
ZW5DYWxsZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKQEAgLTI5NCw3ICsyOTQsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5K
YXZhU2NyaXB0QWxlcnQoV2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmCiAgICAgfSku
Z2V0KCldOwogfQogCi12b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0Q29u
ZmlybShXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQ
cm94eSogd2ViRnJhbWVQcm94eSwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBz
ZWN1cml0eU9yaWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0Q29uZmlybShXZWJQ
YWdlUHJveHkmIHBhZ2UsIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5
KiB3ZWJGcmFtZVByb3h5LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9y
aWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bkphdmFTY3Jp
cHRDb25maXJtUGFuZWxXaXRoTWVzc2FnZUluaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxl
cikgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CkBAIC0zMDgsNyArMzA4LDcg
QEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViUGFn
ZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcKICAgICB9CiAKICAgICBhdXRvIGNoZWNrZXIgPSBD
b21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxl
Y3Rvcih3ZWJWaWV3OnJ1bkphdmFTY3JpcHRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTppbml0aWF0
ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOikpOwotICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1f
dWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuSmF2YVNjcmlwdENvbmZpcm1QYW5lbFdpdGhNZXNzYWdl
Om1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUo
KndlYkZyYW1lUHJveHksIHNlY3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpKSkgY29t
cGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJPT0wgcmVz
dWx0KSBtdXRhYmxlIHsKKyAgICBbZGVsZWdhdGUgd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJW
aWV3IHJ1bkphdmFTY3JpcHRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTptZXNzYWdlIGluaXRpYXRl
ZEJ5RnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCp3ZWJGcmFtZVByb3h5LCBX
VEZNb3ZlKHNlY3VyaXR5T3JpZ2luRGF0YSksIHBhZ2UpKSBjb21wbGV0aW9uSGFuZGxlcjptYWtl
QmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoQk9PTCByZXN1bHQpIG11dGFibGUgewogICAg
ICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CkBAIC0z
MTYsNyArMzE2LDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdENv
bmZpcm0oV2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcKICAgICB9KS5nZXQoKV07CiB9
CiAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRQcm9tcHQoV2ViUGFn
ZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFdURjo6U3RyaW5nJiBk
ZWZhdWx0VmFsdWUsIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHksIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lkKGNv
bnN0IFdURjo6U3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFVJRGVsZWdhdGU6
OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0UHJvbXB0KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3Qg
V1RGOjpTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFdURjo6U3RyaW5nJiBkZWZhdWx0VmFsdWUsIFdl
YkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHksIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYm
IHNlY3VyaXR5T3JpZ2luRGF0YSwgRnVuY3Rpb248dm9pZChjb25zdCBXVEY6OlN0cmluZyYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVN
ZXRob2RzLndlYlZpZXdSdW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0RGVmYXVs
dFRleHRJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoU3RyaW5nKCkpOwpAQCAtMzMwLDcgKzMzMCw3IEBAIHZvaWQgVUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRQcm9tcHQoV2ViUGFnZVByb3h5KiwgY29uc3QgV1RG
OjpTdHJpbmcmCiAgICAgfQogCiAgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJD
YWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3Iod2ViVmlldzpydW5K
YXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0OmRlZmF1bHRUZXh0OmluaXRpYXRlZEJ5
RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KSk7Ci0gICAgW2RlbGVnYXRlIHdlYlZpZXc6bV91aURl
bGVnYXRlLm1fd2ViVmlldyBydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0Om1l
c3NhZ2UgZGVmYXVsdFRleHQ6ZGVmYXVsdFZhbHVlIGluaXRpYXRlZEJ5RnJhbWU6d3JhcHBlcihB
UEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCp3ZWJGcmFtZVByb3h5LCBzZWN1cml0eU9yaWdpbkRhdGEu
c2VjdXJpdHlPcmlnaW4oKSkpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1v
dmUoY2hlY2tlcildIChOU1N0cmluZyAqcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBbZGVsZWdhdGUg
d2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5l
bFdpdGhQcm9tcHQ6bWVzc2FnZSBkZWZhdWx0VGV4dDpkZWZhdWx0VmFsdWUgaW5pdGlhdGVkQnlG
cmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKndlYkZyYW1lUHJveHksIFdURk1v
dmUoc2VjdXJpdHlPcmlnaW5EYXRhKSwgcGFnZSkpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9j
a1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hl
Y2tlciA9IFdURk1vdmUoY2hlY2tlcildIChOU1N0cmluZyAqcmVzdWx0KSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwpAQCAt
MzYyLDcgKzM2Miw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJlcXVlc3RTdG9yYWdl
QWNjZXNzQ29uZmlybShXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByCiAgICAgfSkuZ2V0KCldOwog
fQogCi12b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFt
ZVByb3h5JiBmcmFtZSwgQVBJOjpTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4sIEZ1bmN0
aW9uPHZvaWQoYm9vbCk+JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlD
bGllbnQ6OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0
OjpXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6
U2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhv
ZHMud2ViVmlld1JlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZURlY2lzaW9uSGFu
ZGxlcikKICAgICAgICAgcmV0dXJuOwpAQCAtMzcyLDcgKzM3Miw3IEBAIHZvaWQgVUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Qo
V2ViS2l0OjpXCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRp
b25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKF93
ZWJWaWV3OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZTpkZWNpc2lvbkhhbmRs
ZXI6KSk7Ci0gICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6
bV91aURlbGVnYXRlLm1fd2ViVmlldyByZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJh
bWU6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKGZyYW1lLCBzZWN1cml0eU9yaWdpbi5z
ZWN1cml0eU9yaWdpbigpKSkgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlv
bkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKGNvbXBsZXRpb25IYW5kbGVyLCBudWxscHRyKSwgY2hl
Y2tlciA9IFdURk1vdmUoY2hlY2tlcildIChCT09MIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgWyhp
ZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1f
d2ViVmlldyByZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWU6d3JhcHBlcihBUEk6
OkZyYW1lSW5mbzo6Y3JlYXRlKGZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgeyBz
ZWN1cml0eU9yaWdpbi5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSB9LCBwYWdlKSkgZGVjaXNpb25I
YW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKGNv
bXBsZXRpb25IYW5kbGVyLCBudWxscHRyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildIChC
T09MIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFu
ZGxlckhhc0JlZW5DYWxsZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2hlY2tl
ci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0zOTcsNyArMzk3LDcgQEAgYm9vbCBV
SURlbGVnYXRlOjpVSUNsaWVudDo6Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgY29u
c3QKICAgICByZXR1cm4gbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSdW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZUluaXRpYXRlZEJ5RnJhbWVDb21wbGV0
aW9uSGFuZGxlcjsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdl
LCBXZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbChXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNz
YWdlLCBXZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmJiBzZWN1cml0eU9yaWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld1J1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlSW5pdGlhdGVkQnlG
cmFtZUNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNl
KTsKQEAgLTQxMSw3ICs0MTEsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWwoV2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOgogICAgIH0KIAog
ICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShk
ZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKF93ZWJWaWV3OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1Q
YW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KSk7Ci0g
ICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVn
YXRlLm1fd2ViVmlldyBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTptZXNz
YWdlIGluaXRpYXRlZEJ5RnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCp3ZWJG
cmFtZVByb3h5LCBzZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSkpIGNvbXBsZXRp
b25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildIChCT09MIHJlc3VsdCkg
bXV0YWJsZSB7CisgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZp
ZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRo
TWVzc2FnZTptZXNzYWdlIGluaXRpYXRlZEJ5RnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6
Y3JlYXRlKCp3ZWJGcmFtZVByb3h5LCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luRGF0YSksIHBhZ2Up
KSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoQk9P
TCByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRs
ZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHJlc3VsdCk7CkBAIC04MTMsNyArODEzLDcgQEAgdm9pZCBVSURlbGVnYXRlOjpV
SUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2Vi
S2l0OjoKICAgICB9KS5nZXQoKV07CiB9CiAKLWJvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1
bk9wZW5QYW5lbChXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5LCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSwgQVBJ
OjpPcGVuUGFuZWxQYXJhbWV0ZXJzKiBvcGVuUGFuZWxQYXJhbWV0ZXJzLCBXZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lclByb3h5KiBsaXN0ZW5lcikKK2Jvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6
OnJ1bk9wZW5QYW5lbChXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1l
UHJveHksIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSwg
QVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJzKiBvcGVuUGFuZWxQYXJhbWV0ZXJzLCBXZWJPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lclByb3h5KiBsaXN0ZW5lcikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0
ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnNJbml0
aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTgyMiw3ICs4MjIsNyBAQCBib29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5PcGVuUGFuZWwo
V2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcgogICAgIGlmICghZGVsZWdh
dGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gZnJhbWUgPSBBUEk6OkZyYW1l
SW5mbzo6Y3JlYXRlKCp3ZWJGcmFtZVByb3h5LCBzZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlP
cmlnaW4oKSk7CisgICAgYXV0byBmcmFtZSA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKndlYkZy
YW1lUHJveHksIFdURk1vdmUoc2VjdXJpdHlPcmlnaW5EYXRhKSwgcGFnZSk7CiAKICAgICBhdXRv
IGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUu
Z2V0KCksIEBzZWxlY3Rvcih3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOmluaXRp
YXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KSk7CiAKQEAgLTEyODEsNyArMTI4MSw3IEBA
IHN0YXRpYyBXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0IHdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxSZXN1bHQoX1dLV2ViQXV0aGVudGljCiAgICAgcmV0dXJuIFdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxSZXN1bHQ6OlVuYXZhaWxhYmxlOwogfQogCi12b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpy
dW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKFdlYlBhZ2VQcm94eSYsIEFQSTo6V2ViQXV0aGVudGlj
YXRpb25QYW5lbCYgcGFuZWwsIFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuV2ViQXV0aGVudGljYXRpb25QYW5lbChXZWJQYWdl
UHJveHkmIHBhZ2UsIEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYgcGFuZWwsIFdlYkZyYW1l
UHJveHkmIHdlYkZyYW1lUHJveHksIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIG9yaWdp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRl
TWV0aG9kcy53ZWJWaWV3UnVuV2ViQXV0aGVudGljYXRpb25QYW5lbEluaXRpYXRlZEJ5RnJhbWVD
b21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJBdXRoZW50
aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSk7CkBAIC0xMjk1LDcgKzEyOTUsNyBAQCB2
b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKFdlYlBh
Z2VQcm94eSYsIEFQSTo6V2ViQXV0aAogICAgIH0KIAogICAgIGF1dG8gY2hlY2tlciA9IENvbXBs
ZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9y
KF93ZWJWaWV3OnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWw6aW5pdGlhdGVkQnlGcmFtZTpjb21w
bGV0aW9uSGFuZGxlcjopKTsKLSAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0
ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFu
ZWw6d3JhcHBlcihwYW5lbCkgaW5pdGlhdGVkQnlGcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZv
OjpjcmVhdGUod2ViRnJhbWVQcm94eSwgb3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkpKSBjb21wbGV0
aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoX1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbFJlc3VsdCByZXN1bHQpIG11dGFibGUgeworICAgIFsoaWQgPFdLVUlEZWxl
Z2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVu
V2ViQXV0aGVudGljYXRpb25QYW5lbDp3cmFwcGVyKHBhbmVsKSBpbml0aWF0ZWRCeUZyYW1lOndy
YXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSh3ZWJGcmFtZVByb3h5LCBXVEZNb3ZlKG9yaWdp
biksIHBhZ2UpKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNr
ZXIpXSAoX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCByZXN1bHQpIG11dGFibGUgewog
ICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFu
ZGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJv
eHkuY3BwCmluZGV4IDYyZjU4MTU0NzU4NjU4YWUyNTNmYzIwMTk5ZjcxNWVjMDliMWQ5ZGQuLjIx
NmJlNWJmZjIwYTU1NjcwOGYwMDU3ZjRlMzUwZDE1ZmYyMGEyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTI0Miw3ICsyNDIs
NyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZQogICAgIG1fcGFnZS5kaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIG5hdmln
YXRpb25JRCwgV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHVucmVhY2hhYmxlVVJMKSwgdXNlckRhdGEp
OwogfQogCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiBlcnJvciwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGluZyB3aWxsQ29udGludWVMb2FkaW5n
LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIFdlYkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcgd2ls
bENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIGlmICgh
dmFsaWRhdGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1cm47CkBA
IC0yNTUsNyArMjU1LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUkKICAgICBpZiAoYXV0byog
cGFnZU1haW5GcmFtZSA9IG1fcGFnZS5tYWluRnJhbWUoKSkKICAgICAgICAgcGFnZU1haW5GcmFt
ZS0+ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZCgpOwogCi0gICAgbV9wYWdlLmRpZEZhaWxQcm92aXNp
b25hbExvYWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBmcmFt
ZVNlY3VyaXR5T3JpZ2luLCBuYXZpZ2F0aW9uSUQsIHByb3Zpc2lvbmFsVVJMLCBlcnJvciwgd2ls
bENvbnRpbnVlTG9hZGluZywgdXNlckRhdGEpOyAvLyBNYXkgZGVsZXRlIHx0aGlzfC4KKyAgICBt
X3BhZ2UuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKG1fcHJvY2Vzcy5jb3B5
UmVmKCksIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIG5hdmlnYXRpb25J
RCwgcHJvdmlzaW9uYWxVUkwsIGVycm9yLCB3aWxsQ29udGludWVMb2FkaW5nLCB1c2VyRGF0YSk7
IC8vIE1heSBkZWxldGUgfHRoaXN8LgogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpk
aWRDb21taXRMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNv
bnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2Vy
dGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVu
dCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3Vy
ZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTI5OCwxMyArMjk4LDEzIEBA
IHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b25Bc3luYyhGcmFtZUlkZW50aWZpZXIKICAgICAgICAgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwg
b3JpZ2luYXRpbmdQYWdlSUQsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RG
TW92ZShyZXF1ZXN0Qm9keSksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIHVzZXJEYXRhLCBs
aXN0ZW5lcklEKTsKIH0KIAotdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsCit2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsCiAgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBk
b3dubG9hZEF0dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhKQogewogICAgIGlmICghdmFsaWRhdGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UuZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VT
aGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIGZyYW1lU2Vj
dXJpdHlPcmlnaW4sIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3Qs
IGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1dGUsIGxpc3RlbmVySUQsIHVzZXJEYXRh
KTsKKyAgICBtX3BhZ2UuZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQobV9wcm9jZXNzLmNv
cHlSZWYoKSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdp
biksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dN
SU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1dGUsIGxpc3RlbmVySUQsIHVzZXJEYXRhKTsKIH0KIAog
dm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KGNvbnN0
IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3Ry
aW5nLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IDdkYmNlZjlkMWQ1NTM1YTgzNTRkN2JhZTBj
NjAxMWEwYTUxYjkxMzcuLmNiOTVmZTAxMGRjNjQyZmNkZjQ2MzM3YzNlYmFlODIyMmRmMTMyNDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApA
QCAtOTgsNyArOTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbkFzeW5jKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYsCiAg
ICAgICAgIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlE
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9k
eSwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2Us
IGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7Ci0gICAgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwKKyAg
ICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRp
ZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwKICAgICAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5T
aG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxp
c3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNpb25h
bFVSTEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBVUkwmJik7CiAgICAgdm9pZCBkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoY29uc3QgU3Ry
aW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcs
IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CkBAIC0xMDgsNyArMTA4LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZENyZWF0ZU1haW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwog
ICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYsIFVSTCYmIHVucmVhY2hhYmxl
VVJMLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJf
dCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBib29sIGNv
bnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVu
dD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZvaWQg
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5nLCBj
b25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYg
ZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcm
IHByb3Zpc2lvbmFsVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6
V2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIHN0YXJ0VVJM
U2NoZW1lVGFzayhVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIGJhY2tGb3J3
YXJkR29Ub0l0ZW0oY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpPiYmKTsKICAg
ICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgKaW5kZXgg
OWUwMTJkYzI3NTJiYzY1NGVmZDY1OGQ5Y2MyOWIwYzgzNzY0MmJkNS4uYzIxZWI5ZTc5MjA4NWEy
NjBkYjljYjYyMTNjMjk1YTdmOWZiNjEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oCkBA
IC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBjbGFzcyBDbGllbnQgewogICAgIHB1YmxpYzoK
ICAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRQ
b3N0TWVzc2FnZShXZWJQYWdlUHJveHkmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUG9z
dE1lc3NhZ2UoV2ViUGFnZVByb3h5JiwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWUmKSA9IDA7CiAgICAgfTsKIAogICAgIHN0YXRpYyBSZWY8V2ViU2NyaXB0
TWVzc2FnZUhhbmRsZXI+IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8Q2xpZW50PiwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBBUEk6OlVzZXJDb250ZW50V29ybGQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5LmNwcAppbmRleCAyMjRhZDdjZmU3Mjc2ODkzYjIzMTVlMTk2ZmQ2NjNl
MzhmYTUzYWQ5Li5kMTBlN2I1YzEyNDZiZGY5YmIwM2VmYWVjMDRkMTAxNjQyYTNjMDkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCkBAIC0zNTQsNyArMzU0LDcg
QEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlck1lc3Nh
Z2VIYW5kbGVycyhBUEk6OlVzZXJDb250ZW4KICAgICByZW1vdmVVc2VyQ29udGVudFdvcmxkVXNl
cyh3b3JsZCwgbnVtYmVyUmVtb3ZlZCk7CiB9CiAKLXZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OmRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2Vi
UGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwgY29uc3QgRnJhbWVJbmZvRGF0YSYgZnJh
bWVJbmZvRGF0YSwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6ZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIHBhZ2VQcm94eUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwg
dWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRh
UmVmZXJlbmNlKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6
d2ViUGFnZShwYWdlUHJveHlJRCk7CiAgICAgaWYgKCFwYWdlKQpAQCAtMzY3LDcgKzM2Nyw3IEBA
IHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmRpZFBvc3RNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwKICAgICBpZiAoIWhhbmRsZXIpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGhhbmRsZXItPmNsaWVudCgpLmRpZFBvc3RNZXNzYWdlKCpwYWdlLCBmcmFtZUlu
Zm9EYXRhLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KGRhdGFSZWZlcmVu
Y2UudmVjdG9yKCkpKTsKKyAgICBoYW5kbGVyLT5jbGllbnQoKS5kaWRQb3N0TWVzc2FnZSgqcGFn
ZSwgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
OjphZG9wdChkYXRhUmVmZXJlbmNlLnZlY3RvcigpKSk7CiB9CiAKICNpZiBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKaW5kZXgg
MDc4MGMwYzIyYWM1Zjg3Y2U2YjA4MDcxMDY5ZGU5NDZkYTU1OTcyOC4uNjcxZmIyOTJkMjAxOTYw
MzM3YjAzODNlZDA3YjI3ZmRiOTdlMmM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5oCkBAIC0xMTQsNyArMTE0LDcgQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlci4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkaWRQb3N0TWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBjb25zdCBGcmFtZUluZm9EYXRh
JiwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7
CisgICAgdm9pZCBkaWRQb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwogCiAgICAgdm9pZCBhZGRVc2VyQ29udGVudFdvcmxk
VXNlKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYpOwogICAgIHZvaWQgcmVtb3ZlVXNlckNvbnRlbnRX
b3JsZFVzZXMoQVBJOjpVc2VyQ29udGVudFdvcmxkJiwgdW5zaWduZWQgbnVtYmVyT2ZVc2VzVG9S
ZW1vdmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCmluZGV4IGU4YzQwZWI0
Nzg5OGM3NzRlNTMwZGU1YjA0MGVlOTcwNWNlMGVhOTUuLmJhYWJlOGRlZjFkMTAyOGM1MmZhYjcw
MTQyNjI4NDc3MjdlZWJlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAK
QEAgLTMzNSw3ICszMzUsNyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpydW5QYW5lbCgp
CiAgICAgYXV0byB0cmFuc3BvcnRzID0gZ2V0VHJhbnNwb3J0cygpOwogICAgIG1fcGVuZGluZ1Jl
cXVlc3REYXRhLnBhbmVsID0gQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsOjpjcmVhdGUoKnRo
aXMsIGdldFJwSWQob3B0aW9ucyksIHRyYW5zcG9ydHMsIGdldENsaWVudERhdGFUeXBlKG9wdGlv
bnMpKTsKICAgICBhdXRvJiBwYW5lbCA9ICptX3BlbmRpbmdSZXF1ZXN0RGF0YS5wYW5lbDsKLSAg
ICBwYWdlLT51aUNsaWVudCgpLnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoKnBhZ2UsIHBhbmVs
LCAqZnJhbWUsIG1fcGVuZGluZ1JlcXVlc3REYXRhLm9yaWdpbiwgW3RyYW5zcG9ydHMgPSBXVEZN
b3ZlKHRyYW5zcG9ydHMpLCB3ZWFrUGFuZWwgPSBtYWtlV2Vha1B0cihwYW5lbCksIHdlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzXSAoV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3Vs
dCByZXN1bHQpIHsKKyAgICBwYWdlLT51aUNsaWVudCgpLnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwoKnBhZ2UsIHBhbmVsLCAqZnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB7IG1f
cGVuZGluZ1JlcXVlc3REYXRhLm9yaWdpbiB9LCBbdHJhbnNwb3J0cyA9IFdURk1vdmUodHJhbnNw
b3J0cyksIHdlYWtQYW5lbCA9IG1ha2VXZWFrUHRyKHBhbmVsKSwgd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cigqdGhpcyksIHRoaXNdIChXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0IHJlc3VsdCkg
ewogICAgICAgICAvLyBUaGUgcGFuZWwgYWRkcmVzcyBpcyB1c2VkIHRvIGRldGVybWluZSBpZiB0
aGUgY3VycmVudCBwZW5kaW5nIHJlcXVlc3QgaXMgc3RpbGwgdGhlIHNhbWUuCiAgICAgICAgIGlm
ICghd2Vha1RoaXMgfHwgIXdlYWtQYW5lbAogICAgICAgICAgICAgfHwgKHJlc3VsdCA9PSBXZWJB
dXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpEaWROb3RQcmVzZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZmQ5ZDM1NDdlZmNmMTk3YTQ1YmU3Mjg5NTM3
MTBiNDgxZjhkNTljOS4uZWQyMmQzN2I5ZTgzOTgyODc3ZjkwMTZiMjg3MjdlMTdlNTFkOWNjZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC00MjQ5LDE3ICs0
MjQ5LDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZy
YW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYKICAgICBmcmFtZS0+ZGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKHVybCk7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvciwgV2lsbENvbnRpbnVlTG9hZGluZyB3aWxsQ29udGludWVMb2FkaW5n
LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTZWN1cml0eU9y
aWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNv
bnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBX
aWxsQ29udGludWVMb2FkaW5nIHdpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJiB1
c2VyRGF0YSkKIHsKICAgICBpZiAobV9wcm92aXNpb25hbFBhZ2UgJiYgbV9wcm92aXNpb25hbFBh
Z2UtPm5hdmlnYXRpb25JRCgpID09IG5hdmlnYXRpb25JRCkgewogICAgICAgICAvLyBUaGUgbG9h
ZCBkaWQgbm90IGZhaWwsIGl0IGlzIG1lcmVseSBoYXBwZW5pbmcgaW4gYSBuZXcgcHJvdmlzaW9u
YWwgcHJvY2Vzcy4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRpZEZhaWxQcm92aXNp
b25hbExvYWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBmcmFt
ZVNlY3VyaXR5T3JpZ2luLCBuYXZpZ2F0aW9uSUQsIHByb3Zpc2lvbmFsVVJMLCBlcnJvciwgd2ls
bENvbnRpbnVlTG9hZGluZywgdXNlckRhdGEpOworICAgIGRpZEZhaWxQcm92aXNpb25hbExvYWRG
b3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1l
U2VjdXJpdHlPcmlnaW4pLCBuYXZpZ2F0aW9uSUQsIHByb3Zpc2lvbmFsVVJMLCBlcnJvciwgd2ls
bENvbnRpbnVlTG9hZGluZywgdXNlckRhdGEpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
RmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYg
cHJvY2VzcywgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJp
bmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgV2lsbENvbnRp
bnVlTG9hZGluZyB3aWxsQ29udGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVk
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IFNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IsIFdpbGxDb250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVlTG9hZGluZywgY29uc3Qg
VXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdlYlBh
Z2VQcm94eSAlIiBQUkl1NjQgIiBpbiB3ZWIgcHJvY2VzcyBwaWQgJWkgZGlkRmFpbFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lIHRvIHByb3Zpc2lvbmFsVVJMICVzIiwgbV9pZGVudGlmaWVyLnRvVUlu
dDY0KCksIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIHByb3Zpc2lvbmFsVVJMLnV0Zjgo
KS5kYXRhKCkpOwogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgImRpZEZhaWxQ
cm92aXNpb25hbExvYWRGb3JGcmFtZTogZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBkb21haW4gPSAl
cywgY29kZSA9ICVkIiwgZnJhbWVJRC50b1VJbnQ2NCgpLCBlcnJvci5kb21haW4oKS51dGY4KCku
ZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CkBAIC00MzAwLDcgKzQzMDAsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYgcAogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZhaWxQcm92
aXNpb25hbE5hdmlnYXRpb25XaXRoRXJyb3IoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQo
KSwgZXJyb3IsIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2Jq
ZWN0KCkpLmdldCgpKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gRklYTUU6IEdldCB0aGUgbWFp
biBmcmFtZSdzIGN1cnJlbnQgbmF2aWdhdGlvbi4KLSAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50
LT5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcigqdGhpcywgKmZyYW1l
LCBmcmFtZVNlY3VyaXR5T3JpZ2luLCBudWxscHRyLCBlcnJvciwgcHJvY2Vzcy0+dHJhbnNmb3Jt
SGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgICAgICBtX25h
dmlnYXRpb25DbGllbnQtPmRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0aEVycm9y
KCp0aGlzLCAqZnJhbWUsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIG51bGxwdHIsIGVy
cm9yLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgp
KS5nZXQoKSk7CiAgICAgfQogCiAgICAgbV9mYWlsaW5nUHJvdmlzaW9uYWxMb2FkVVJMID0geyB9
OwpAQCAtNDg4Myw3ICs0ODgzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICAgICAg
YmVnaW5TYWZlQnJvd3NpbmdDaGVjayhyZXF1ZXN0LnVybCgpLCBmcmFtZS5pc01haW5GcmFtZSgp
LCBsaXN0ZW5lcik7CiAKICAgICBBUEk6Ok5hdmlnYXRpb24qIG1haW5GcmFtZU5hdmlnYXRpb24g
PSBmcmFtZS5pc01haW5GcmFtZSgpID8gbmF2aWdhdGlvbi5nZXQoKSA6IG51bGxwdHI7Ci0gICAg
V2ViRnJhbWVQcm94eSogb3JpZ2luYXRpbmdGcmFtZSA9IG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0
YS5mcmFtZUlEID8gcHJvY2Vzcy0+d2ViRnJhbWUoKm9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5m
cmFtZUlEKSA6IG51bGxwdHI7CisgICAgV2ViRnJhbWVQcm94eSogb3JpZ2luYXRpbmdGcmFtZSA9
IG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5mcmFtZUlEID8gcHJvY2Vzcy0+d2ViRnJhbWUob3Jp
Z2luYXRpbmdGcmFtZUluZm9EYXRhLmZyYW1lSUQpIDogbnVsbHB0cjsKIAogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZSA9IHdlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkp
CkBAIC00ODk0LDEyICs0ODk0LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAgICAgaWYg
KG1fcG9saWN5Q2xpZW50KQogICAgICAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbigqdGhpcywgJmZyYW1lLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25E
YXRhKSwgb3JpZ2luYXRpbmdGcmFtZSwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3Qp
LCBXVEZNb3ZlKGxpc3RlbmVyKSwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1
c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogICAgIGVsc2UgewotICAgICAgICBhdXRvIGRlc3Rp
bmF0aW9uRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShmcmFtZSwgZnJhbWVTZWN1
cml0eU9yaWdpbi5zZWN1cml0eU9yaWdpbigpKTsKKyAgICAgICAgYXV0byBkZXN0aW5hdGlvbkZy
YW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoZnJhbWUsIFdURk1vdmUoZnJhbWVTZWN1
cml0eU9yaWdpbiksICp0aGlzKTsKICAgICAgICAgUmVmUHRyPEFQSTo6RnJhbWVJbmZvPiBzb3Vy
Y2VGcmFtZUluZm87CiAgICAgICAgIGlmICghZnJvbUFQSSAmJiBvcmlnaW5hdGluZ0ZyYW1lID09
ICZmcmFtZSkKICAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IGRlc3RpbmF0aW9uRnJhbWVJ
bmZvLmNvcHlSZWYoKTsKICAgICAgICAgZWxzZSBpZiAoIWZyb21BUEkpCi0gICAgICAgICAgICBz
b3VyY2VGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKG9yaWdpbmF0aW5nRnJhbWVJ
bmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQgPyBwcm9jZXNzLT53ZWJQYWdlKCpvcmlnaW5hdGlu
Z1BhZ2VJRCkgOiBudWxscHRyKTsKKyAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQSTo6
RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEpLCBvcmln
aW5hdGluZ1BhZ2VJRCA/ICpwcm9jZXNzLT53ZWJQYWdlKCpvcmlnaW5hdGluZ1BhZ2VJRCkgOiAq
dGhpcyk7CiAKICAgICAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBwcm9jZXNzLT51
c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tl
bklkZW50aWZpZXIpOwogICAgICAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcyA9ICFtX3Nob3Vs
ZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24KQEAgLTUwMDcs
NyArNTAwNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uU3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5CiAgICAgc2VuZGVyLT5zZW5kKFBv
bGljeUFjdGlvbjo6VXNlLCBuYXZpZ2F0aW9uSUQsIERvd25sb2FkSUQoKSwgV1RGOjpudWxsb3B0
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlv
bihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFt
ZVNlY3VyaXR5T3JpZ2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKK3ZvaWQg
V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFBv
bGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAogICAgIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0
IFN0cmluZyYgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYg
dXNlckRhdGEpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVu
dCgpKTsKQEAgLTUwMzMsNyArNTAzMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0CiAgICAg
ZWxzZSB7CiAgICAgICAgIFJlZlB0cjxBUEk6OkZyYW1lSW5mbz4gc291cmNlRnJhbWVJbmZvOwog
ICAgICAgICBpZiAoZnJhbWUpCi0gICAgICAgICAgICBzb3VyY2VGcmFtZUluZm8gPSBBUEk6OkZy
YW1lSW5mbzo6Y3JlYXRlKCpmcmFtZSwgZnJhbWVTZWN1cml0eU9yaWdpbi5zZWN1cml0eU9yaWdp
bigpKTsKKyAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVh
dGUoKmZyYW1lLCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCAqdGhpcyk7CiAKICAgICAg
ICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnVzZXJJbml0aWF0ZWRB
Y3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7
CiAgICAgICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gbV9tYWluRnJhbWUgPyAhaG9zdHNB
cmVFcXVhbChtX21haW5GcmFtZS0+dXJsKCksIHJlcXVlc3QudXJsKCkpIDogZmFsc2U7CkBAIC01
MDQ1LDEzICs1MDQ1LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdX
aW5kb3dBY3Rpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0CiAgICAgICAgIAogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdp
biwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCit2b2lkIFdlYlBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFNlY3VyaXR5
T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFBvbGljeUNoZWNrSWRlbnRpZmllciBp
ZGVudGlmaWVyLAogICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5T
aG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxp
c3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBkZWNpZGVQb2xpY3lG
b3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgZnJhbWVJ
RCwgZnJhbWVTZWN1cml0eU9yaWdpbiwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25z
ZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0ZSwgbGlzdGVuZXJJ
RCwgdXNlckRhdGEpOworICAgIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKG1fcHJvY2Vz
cy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlP
cmlnaW4pLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5T
aG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlLCBsaXN0ZW5lcklELCB1c2VyRGF0YSk7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1
cml0eU9yaWdpbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCit2b2lkIFdlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiBwcm9jZXNzLCBQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIEZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBQb2xpY3lD
aGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKICAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmli
dXRlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAg
ICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKQEAgLTUwODAs
NyArNTA4MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNo
YXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgaWYgKG1fcG9saWN5Q2xp
ZW50KQogICAgICAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoKnRo
aXMsICpmcmFtZSwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgV1RGTW92ZShs
aXN0ZW5lciksIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2Jq
ZWN0KCkpLmdldCgpKTsKICAgICBlbHNlIHsKLSAgICAgICAgYXV0byBuYXZpZ2F0aW9uUmVzcG9u
c2UgPSBBUEk6Ok5hdmlnYXRpb25SZXNwb25zZTo6Y3JlYXRlKEFQSTo6RnJhbWVJbmZvOjpjcmVh
dGUoKmZyYW1lLCBmcmFtZVNlY3VyaXR5T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkpLmdldCgpLCBy
ZXF1ZXN0LCByZXNwb25zZSwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0ZSk7Cisg
ICAgICAgIGF1dG8gbmF2aWdhdGlvblJlc3BvbnNlID0gQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U6
OmNyZWF0ZShBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCpmcmFtZSwgV1RGTW92ZShmcmFtZVNlY3Vy
aXR5T3JpZ2luKSwgKnRoaXMpLmdldCgpLCByZXF1ZXN0LCByZXNwb25zZSwgY2FuU2hvd01JTUVU
eXBlLCBkb3dubG9hZEF0dHJpYnV0ZSk7CiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKCp0aGlzLCBXVEZNb3ZlKG5hdmlnYXRpb25S
ZXNwb25zZSksIFdURk1vdmUobGlzdGVuZXIpLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9P
YmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiAgICAgfQogfQpAQCAtNTIxOCwxMiAr
NTIxOCwxMyBAQCBzdGF0aWMgdm9pZCB0cnlTT0F1dGhvcml6YXRpb24oUmVmPEFQSTo6TmF2aWdh
dGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9uLCBXZQogI2VuZGlmCiB9CiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5n
RnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRp
bmdQYWdlSUQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdpbmRvd0ZlYXR1cmVzJiYgd2lu
ZG93RmVhdHVyZXMsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEs
IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5ZWRSZXBseSYmIHJl
cGx5KQordm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UoRnJhbWVJbmZvRGF0YSYmIG9y
aWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4g
b3JpZ2luYXRpbmdQYWdlSUQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdpbmRvd0ZlYXR1
cmVzJiYgd2luZG93RmVhdHVyZXMsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFj
dGlvbkRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5ZWRS
ZXBseSYmIHJlcGx5KQogewogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBvcmlnaW5hdGlu
Z0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCk7Ci0gICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIG1f
cHJvY2Vzcy0+d2ViRnJhbWUoKm9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5mcmFtZUlEKSk7Cisg
ICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIG1fcHJvY2Vzcy0+d2ViRnJhbWUob3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLmZyYW1lSUQpKTsKIAotICAgIGF1dG8gb3JpZ2luYXRpbmdGcmFtZUlu
Zm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgbV9w
cm9jZXNzLT53ZWJQYWdlKCpvcmlnaW5hdGluZ1BhZ2VJRCkpOworICAgIGF1dG8qIG9yaWdpbmF0
aW5nUGFnZSA9IG1fcHJvY2Vzcy0+d2ViUGFnZSgqb3JpZ2luYXRpbmdQYWdlSUQpOworICAgIGF1
dG8gb3JpZ2luYXRpbmdGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUo
b3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhKSwgb3JpZ2luYXRpbmdQYWdlID8gKm9yaWdpbmF0aW5n
UGFnZSA6ICp0aGlzKTsKICAgICBhdXRvIG1haW5GcmFtZVVSTCA9IG1fbWFpbkZyYW1lID8gbV9t
YWluRnJhbWUtPnVybCgpIDogVVJMKCk7CiAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1haW5GcmFtZVVSTCwgcmVxdWVz
dCwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKFJlZlB0cjxXZWJQYWdlUHJveHk+IG5ld1BhZ2Up
IG11dGFibGUgewogICAgICAgICBpZiAoIW5ld1BhZ2UpIHsKQEAgLTUyOTMsNyArNTI5NCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZVBhZ2UoYm9vbCBzdG9wUmVzcG9uc2l2ZW5lc3NUaW1l
cikKICAgICBtX3VpQ2xpZW50LT5jbG9zZSh0aGlzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OnJ1bkphdmFTY3JpcHRBbGVydChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0QWxlcnQ6OkRlbGF5ZWRSZXBseSYmIHJl
cGx5KQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRBbGVydChGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdEFsZXJ0
OjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1f
cHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3Ms
IGZyYW1lKTsKQEAgLTUzMDksMTAgKzUzMTAsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkph
dmFTY3JpcHRBbGVydChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmkK
ICAgICAgICAgaWYgKGF1dG8qIGF1dG9tYXRpb25TZXNzaW9uID0gcHJvY2VzcygpLnByb2Nlc3NQ
b29sKCkuYXV0b21hdGlvblNlc3Npb24oKSkKICAgICAgICAgICAgIGF1dG9tYXRpb25TZXNzaW9u
LT53aWxsU2hvd0phdmFTY3JpcHREaWFsb2coKnRoaXMpOwogICAgIH0KLSAgICBtX3VpQ2xpZW50
LT5ydW5KYXZhU2NyaXB0QWxlcnQodGhpcywgbWVzc2FnZSwgZnJhbWUsIHNlY3VyaXR5T3JpZ2lu
LCBXVEZNb3ZlKHJlcGx5KSk7CisgICAgbV91aUNsaWVudC0+cnVuSmF2YVNjcmlwdEFsZXJ0KCp0
aGlzLCBtZXNzYWdlLCBmcmFtZSwgV1RGTW92ZShzZWN1cml0eU9yaWdpbiksIFdURk1vdmUocmVw
bHkpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRDb25maXJtKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3Jp
Z2luLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkph
dmFTY3JpcHRDb25maXJtOjpEZWxheWVkUmVwbHkmJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5
OjpydW5KYXZhU2NyaXB0Q29uZmlybShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU2VjdXJpdHlP
cmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdENvbmZpcm06OkRlbGF5ZWRSZXBseSYmIHJl
cGx5KQogewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShm
cmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZnJhbWUpOwpAQCAtNTMyOSwx
MCArNTMzMCwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdENvbmZpcm0oRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5TwogICAgICAgICAgICAgYXV0b21h
dGlvblNlc3Npb24tPndpbGxTaG93SmF2YVNjcmlwdERpYWxvZygqdGhpcyk7CiAgICAgfQogCi0g
ICAgbV91aUNsaWVudC0+cnVuSmF2YVNjcmlwdENvbmZpcm0odGhpcywgbWVzc2FnZSwgZnJhbWUs
IHNlY3VyaXR5T3JpZ2luLCBXVEZNb3ZlKHJlcGx5KSk7CisgICAgbV91aUNsaWVudC0+cnVuSmF2
YVNjcmlwdENvbmZpcm0oKnRoaXMsIG1lc3NhZ2UsIGZyYW1lLCBXVEZNb3ZlKHNlY3VyaXR5T3Jp
Z2luKSwgV1RGTW92ZShyZXBseSkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNj
cmlwdFByb21wdChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcm
IGRlZmF1bHRWYWx1ZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdFByb21w
dDo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlw
dFByb21wdChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgc2Vj
dXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0
VmFsdWUsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRQcm9tcHQ6OkRlbGF5
ZWRSZXBseSYmIHJlcGx5KQogewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNz
LT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZnJhbWUp
OwpAQCAtNTM0OCw3ICs1MzQ5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRQ
cm9tcHQoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3IKICAgICAgICAg
ICAgIGF1dG9tYXRpb25TZXNzaW9uLT53aWxsU2hvd0phdmFTY3JpcHREaWFsb2coKnRoaXMpOwog
ICAgIH0KIAotICAgIG1fdWlDbGllbnQtPnJ1bkphdmFTY3JpcHRQcm9tcHQodGhpcywgbWVzc2Fn
ZSwgZGVmYXVsdFZhbHVlLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW4sIFdURk1vdmUocmVwbHkpKTsK
KyAgICBtX3VpQ2xpZW50LT5ydW5KYXZhU2NyaXB0UHJvbXB0KCp0aGlzLCBtZXNzYWdlLCBkZWZh
dWx0VmFsdWUsIGZyYW1lLCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSwgV1RGTW92ZShyZXBseSkp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U3RhdHVzVGV4dChjb25zdCBTdHJpbmcmIHRl
eHQpCkBAIC01NDkxLDcgKzU0OTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cm9vdFZpZXdUb0Fj
Y2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgSW50UmVjdCYgdmlld1JlY3QsIENvbXBsZQogICAgIGNv
bXBsZXRpb25IYW5kbGVyKHBhZ2VDbGllbnQoKS5yb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVl
bih2aWV3UmVjdCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDo6RGVsYXllZFJlcGx5JiYgcmVw
bHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWw6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIFdlYkZyYW1l
UHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdF
X0NIRUNLKG1fcHJvY2VzcywgZnJhbWUpOwpAQCAtNTUwOCw3ICs1NTA5LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgY29uc3QgU2UKIAogICAgIC8vIFNpbmNlIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5l
bCgpIGNhbiBzcGluIGEgbmVzdGVkIHJ1biBsb29wIHdlIG5lZWQgdG8gdHVybiBvZmYgdGhlIHJl
c3BvbnNpdmVuZXNzIHRpbWVyLgogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigp
LnN0b3AoKTsKLSAgICBtX3VpQ2xpZW50LT5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwodGhp
cywgbWVzc2FnZSwgZnJhbWUsIHNlY3VyaXR5T3JpZ2luLCBXVEZNb3ZlKHJlcGx5KSk7CisgICAg
bV91aUNsaWVudC0+cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCp0aGlzLCBtZXNzYWdlLCBm
cmFtZSwgV1RGTW92ZShzZWN1cml0eU9yaWdpbiksIFdURk1vdmUocmVwbHkpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBWaWV3cG9y
dEF0dHJpYnV0ZXMmIGF0dHIpCkBAIC01NTMxLDcgKzU1MzIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cGFnZURpZFNjcm9sbCgpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bk9w
ZW5QYW5lbChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBGaWxlQ2hvb3NlclNldHRpbmdzJiBzZXR0aW5n
cykKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5PcGVuUGFuZWwoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIGNvbnN0IEZpbGVD
aG9vc2VyU2V0dGluZ3MmIHNldHRpbmdzKQogewogICAgIGlmIChtX29wZW5QYW5lbFJlc3VsdExp
c3RlbmVyKSB7CiAgICAgICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXItPmludmFsaWRhdGUo
KTsKQEAgLTU1NTUsNyArNTU1Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5PcGVuUGFuZWwo
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0CiAgICAgLy8g
U2luY2UgcnVuT3BlblBhbmVsKCkgY2FuIHNwaW4gYSBuZXN0ZWQgcnVuIGxvb3Agd2UgbmVlZCB0
byB0dXJuIG9mZiB0aGUgcmVzcG9uc2l2ZW5lc3MgdGltZXIuCiAgICAgbV9wcm9jZXNzLT5yZXNw
b25zaXZlbmVzc1RpbWVyKCkuc3RvcCgpOwogCi0gICAgaWYgKCFtX3VpQ2xpZW50LT5ydW5PcGVu
UGFuZWwodGhpcywgZnJhbWUsIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHBhcmFtZXRlcnMucHRyKCks
IG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuZ2V0KCkpKSB7CisgICAgaWYgKCFtX3VpQ2xpZW50
LT5ydW5PcGVuUGFuZWwoKnRoaXMsIGZyYW1lLCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4p
LCBwYXJhbWV0ZXJzLnB0cigpLCBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmdldCgpKSkgewog
ICAgICAgICBpZiAoIXBhZ2VDbGllbnQoKS5oYW5kbGVSdW5PcGVuUGFuZWwodGhpcywgZnJhbWUs
IHBhcmFtZXRlcnMucHRyKCksIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuZ2V0KCkpKQogICAg
ICAgICAgICAgZGlkQ2FuY2VsRm9yT3BlblBhbmVsKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBjNmMzNmYzNTQ4ZjM4NTcxOGZjODRhYmMyNDFmZWUw
OTdlMjNiYmI5Li4wMDYwMjljOTI2YTY5YTRhMzcxN2MxYzRiNGNlNmU4YzdkMTAwZjE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTU0Miw3ICsxNTQyLDcgQEAg
cHVibGljOgogCiAgICAgLy8gTG9naWMgc2hhcmVkIGJldHdlZW4gdGhlIFdlYlBhZ2VQcm94eSBh
bmQgdGhlIFByb3Zpc2lvbmFsUGFnZVByb3h5LgogICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYsIFVSTCYmIHVucmVhY2hh
YmxlVVJMLCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5
T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxV
UkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpXaWxsQ29udGludWVM
b2FkaW5nLCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdp
biwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGlu
ZywgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZv
clByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZFBlcmZvcm1T
ZXJ2ZXJSZWRpcmVjdFNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVj
dFNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0
cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyKTsKQEAgLTE1NTEsNyArMTU1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIsCiAgICAgICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25hbDxXZWJQYWdl
UHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLAog
ICAgICAgICBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2
NF90IGxpc3RlbmVySUQpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQo
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFt
ZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsCisgICAgdm9p
ZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xp
Y3lDaGVja0lkZW50aWZpZXIsCiAgICAgICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRl
LCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgc3RhcnRV
UkxTY2hlbWVUYXNrU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIGxvYWREYXRh
V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYs
IGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0
cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6
Om51bGxvcHQsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3Jl
OjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CkBAIC0xNjcy
LDcgKzE2NzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVj
dEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmwsIGRv
dWJsZSBkZWxheSwgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdCk7CiAgICAgdm9pZCBkaWRD
YW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAg
ICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJik7Ci0gICAgdm9pZCBkaWRGYWls
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVz
ZXJEYXRhJik7CisgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNl
Y3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlz
aW9uYWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpXaWxsQ29u
dGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZv
ckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVy
LCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8m
LCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2Vj
dXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYpOwog
ICAgIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJik7CkBAIC0xNzA3LDkgKzE3MDcsOSBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCiAgICAgICAgIEZyYW1lSW5mb0Rh
dGEmJiwgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5
LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwg
Y29uc3QgVXNlckRhdGEmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uU3luY0RlbGF5ZWRSZXBseSYmKTsKLSAgICB2b2lkIGRlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwg
TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRv
d0FjdGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIE5hdmlnYXRpb25BY3Rpb25E
YXRhJiYsCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcm
IGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2
b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVu
dGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JS
ZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwKICAgICAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJp
bmcmIGRvd25sb2FkQXR0cmlidXRlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0
YSYpOwogICAgIHZvaWQgdW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsK
ICAgICB2b2lkIGJlZ2luU2FmZUJyb3dzaW5nQ2hlY2soY29uc3QgVVJMJiwgYm9vbCwgV2ViRnJh
bWVQb2xpY3lMaXN0ZW5lclByb3h5Jik7CkBAIC0xNzI3LDExICsxNzI3LDExIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRVcGRhdGVIaXN0b3J5VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29u
c3QgU3RyaW5nJiB1cmwsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAKICAgICAvLyBVSSBj
bGllbnQKLSAgICB2b2lkIGNyZWF0ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZvRGF0YSYsIE9wdGlv
bmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmJiwgTmF2aWdhdGlvbkFj
dGlvbkRhdGEmJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZURlbGF5ZWRS
ZXBseSYmKTsKKyAgICB2b2lkIGNyZWF0ZU5ld1BhZ2UoRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25h
bDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiYsIE5hdmlnYXRpb25BY3Rp
b25EYXRhJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2VEZWxheWVkUmVw
bHkmJik7CiAgICAgdm9pZCBzaG93UGFnZSgpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiwgY29uc3QgU3RyaW5nJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlw
dEFsZXJ0RGVsYXllZFJlcGx5JiYpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
LCBjb25zdCBTdHJpbmcmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0Q29u
ZmlybURlbGF5ZWRSZXBseSYmKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRQcm9tcHQoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5K
YXZhU2NyaXB0UHJvbXB0RGVsYXllZFJlcGx5JiYpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEFs
ZXJ0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiYsIGNvbnN0IFN0cmluZyYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRB
bGVydERlbGF5ZWRSZXBseSYmKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRDb25maXJtKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIGNvbnN0
IFN0cmluZyYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRDb25maXJtRGVs
YXllZFJlcGx5JiYpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdFByb21wdChXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0UHJv
bXB0RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgc2V0U3RhdHVzVGV4dChjb25zdCBTdHJpbmcm
KTsKICAgICB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KFdlYkhpdFRlc3RSZXN1bHREYXRh
JiYsIHVpbnQzMl90IG1vZGlmaWVycywgVXNlckRhdGEmJik7CiAKQEAgLTE3NTQsMTAgKzE3NTQs
MTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJvb3RWaWV3VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgdmlld1JlY3QsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJvb3RWaWV3VG9TY3Jl
ZW5EZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmll
dyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc2NyZWVuUG9pbnQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6SW50UG9pbnQpPiYmKTsKICAgICB2b2lkIHJvb3RWaWV3VG9BY2Nlc3Np
YmlsaXR5U2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpZXdSZWN0LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OkludFJlY3QpPiYmKTsKLSAgICB2b2lkIHJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsRGVsYXllZFJlcGx5JiYpOwor
ICAgIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsRGVs
YXllZFJlcGx5JiYpOwogICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0
IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpOwogICAgIHZvaWQgcGFnZURpZFNjcm9sbCgp
OwotICAgIHZvaWQgcnVuT3BlblBhbmVsKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgV2ViQ29yZTo6RmlsZUNob29zZXJT
ZXR0aW5ncyYpOworICAgIHZvaWQgcnVuT3BlblBhbmVsKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIGNvbnN0IFdlYkNvcmU6OkZpbGVDaG9v
c2VyU2V0dGluZ3MmKTsKICAgICB2b2lkIHNob3dTaGFyZVNoZWV0KGNvbnN0IFdlYkNvcmU6OlNo
YXJlRGF0YVdpdGhQYXJzZWRVUkwmLCBTaGFyZVNoZWV0Q2FsbGJhY2tJRCk7CiAgICAgdm9pZCBw
cmludEZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIGV4Y2VlZGVkRGF0YWJhc2VRdW90YShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBk
YXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRR
dW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJh
c2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RXhjZWVkZWREYXRhYmFzZVF1b3RhRGVsYXllZFJlcGx5JiYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383569</attachid>
            <date>2019-11-14 12:37:24 -0800</date>
            <delta_ts>2019-11-14 15:17:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204199-20191114123723.patch</filename>
            <type>text/plain</type>
            <size>99650</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQyODEzNGU1OWJmYmU3NjQz
NDM1NzIwYzBmMjdjOGVmYjZhZjU3MTAuLmI2ZTk2N2RlZTYxOTI0N2NkODk5Nzc0ZWE4NDIyNzdm
NjQ0YjRiOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMTktMTEtMTQgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBXS0ZyYW1lSW5m
by53ZWJWaWV3IHNob3VsZCBub3QgcmV0dXJuIG5pbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSXQgaXMgbWFya2VkIGFzIHJldHVybmluZyBub24tbnVs
bC4gIExldCdzIG1ha2UgdGhhdCB0cnVlLgorICAgICAgICBBbHNvLCByZW1vdmUgYSBmZXcgY29w
aWVzIG9mIHNlY3VyaXR5IG9yaWdpbiBkYXRhLgorCisgICAgICAgICogU2hhcmVkL0ZyYW1lSW5m
b0RhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUluZm9EYXRhOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9GcmFtZUluZm9EYXRhLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElGcmFtZUluZm8uY3BwOgorICAgICAgICAoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSk6CisgICAg
ICAgIChBUEk6OkZyYW1lSW5mbzo6RnJhbWVJbmZvKToKKyAgICAgICAgKEFQSTo6RnJhbWVJbmZv
Ojp+RnJhbWVJbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6RnJhbWVJbmZvOjpjbGVhclBh
Z2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgIChB
UEk6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0
aEVycm9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50Lmg6CisgICAgICAg
IChBUEk6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoQVBJOjpVSUNs
aWVudDo6cnVuSmF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6cnVu
SmF2YVNjcmlwdFByb21wdCk6CisgICAgICAgIChBUEk6OlVJQ2xpZW50OjpydW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWwpOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6cnVuT3BlblBhbmVsKToK
KyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNwcDoKKyAgICAgICAgKFdLRnJhbWVDcmVh
dGVGcmFtZUluZm8pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAg
ICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VOYXZp
Z2F0aW9uQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJbmZv
Lm1tOgorICAgICAgICAoLVtXS0ZyYW1lSW5mbyB3ZWJWaWV3XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpO
YXZpZ2F0aW9uQ2xpZW50OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJv
cik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRBbGVydCk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVs
ZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChXZWJLaXQ6
OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFdl
YktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6
cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6
OlVJQ2xpZW50OjpydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25h
bFBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdl
YktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6ZGlkUG9zdE1l
c3NhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdG9yTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JN
YW5hZ2VyOjpydW5QYW5lbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWVTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnJ1bkphdmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpydW5KYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnJ1bk9wZW5QYW5lbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorCiAyMDE5LTExLTEzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbIGlPUyBdOiBMYXlvdXQgVGVzdCBodHRwL3Rlc3RzL0luZGV4ZWREQi9zdG9yYWdl
LWxpbWl0LTEuaHR0cHMuaHRtbCBpcyBhIEZsYWt5IEZhaWx1cmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
RnJhbWVJbmZvRGF0YS5jcHAKaW5kZXggZWQwM2JhNDhhYjk0NTE5YjkxZTQ0MGMyMzQxNWZhYzQx
MGRjZDdiMy4uMWZhNDZmYWI2OWE2Y2YzMTE1ZGFkZDZmOTE0NzEwNGVmZWYyNTU3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRnJhbWVJbmZvRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvRnJhbWVJbmZvRGF0YS5jcHAKQEAgLTM4LDI1ICszOCwzNCBAQCB2b2lk
IEZyYW1lSW5mb0RhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAg
ZW5jb2RlciA8PCBmcmFtZUlEOwogfQogCi1ib29sIEZyYW1lSW5mb0RhdGE6OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIsIEZyYW1lSW5mb0RhdGEmIHJlc3VsdCkKK09wdGlvbmFsPEZyYW1l
SW5mb0RhdGE+IEZyYW1lSW5mb0RhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaXNNYWluRnJhbWUpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucmVxdWVzdCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBPcHRpb25hbDxib29sPiBpc01haW5GcmFtZTsKKyAg
ICBkZWNvZGVyID4+IGlzTWFpbkZyYW1lOworICAgIGlmICghaXNNYWluRnJhbWUpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3Q+IHJlcXVlc3Q7CisgICAgZGVjb2RlciA+PiByZXF1ZXN0OworICAgIGlmICghcmVxdWVz
dCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgIE9wdGlvbmFsPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YT4gc2VjdXJpdHlPcmlnaW47CiAgICAgZGVjb2RlciA+PiBzZWN1
cml0eU9yaWdpbjsKICAgICBpZiAoIXNlY3VyaXR5T3JpZ2luKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgcmVzdWx0LnNlY3VyaXR5T3JpZ2luID0gV1RGTW92ZSgqc2VjdXJpdHlPcmlnaW4p
OwotICAgIAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4+
IGZyYW1lSUQ7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQ7CiAgICAgZGVjb2RlciA+PiBmcmFtZUlE
OwogICAgIGlmICghZnJhbWVJRCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdC5m
cmFtZUlEID0gV1RGTW92ZSgqZnJhbWVJRCk7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4ge3sKKyAgICAgICAgV1RGTW92ZSgqaXNN
YWluRnJhbWUpLAorICAgICAgICBXVEZNb3ZlKCpyZXF1ZXN0KSwKKyAgICAgICAgV1RGTW92ZSgq
c2VjdXJpdHlPcmlnaW4pLAorICAgICAgICBXVEZNb3ZlKCpmcmFtZUlEKQorICAgIH19OwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9GcmFtZUluZm9EYXRhLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9GcmFtZUluZm9EYXRhLmgKaW5kZXggNTM4NzE2ZWIyMWViNTQw
YTQxNzc5YzdlNmI4ZmZkNDM1MmZiYzEzYS4uMTM1NGI1MmQ4NWZiMTk4ZDk5YWMxNTlmNTNjNWE4
NjIyMGU3ZTAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRnJhbWVJbmZvRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEuaApAQCAtMzgsMTIg
KzM4LDEyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgRnJhbWVJbmZvRGF0YSB7CiAg
ICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIGJvb2wgZGVj
b2RlKElQQzo6RGVjb2RlciYsIEZyYW1lSW5mb0RhdGEmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8
RnJhbWVJbmZvRGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiAgICAgYm9vbCBpc01haW5G
cmFtZSB7IGZhbHNlIH07CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Q7CiAg
ICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luOwotICAgIE9wdGlv
bmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRDsKKyAgICBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUZyYW1lSW5mby5jcHAKaW5kZXggODI5NzI4YjkxZDYxYWEyNjA0NzVlMmExYzkxZDI0
MjBlOTc4NjBmYi4uNzU3NjlmN2FlNTA3YzUxMDg2NzE3ZmNkMWQ0ZjI1OTc5YjdmMmJkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKQEAgLTMzLDQw
ICszMywzMSBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIAotUmVmPEZyYW1lSW5mbz4gRnJhbWVJbmZv
OjpjcmVhdGUoY29uc3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhJiBmcmFtZUluZm9EYXRhLCBXZWJL
aXQ6OldlYlBhZ2VQcm94eSogcGFnZSkKK1JlZjxGcmFtZUluZm8+IEZyYW1lSW5mbzo6Y3JlYXRl
KFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIFdlYktpdDo6V2ViUGFnZVBy
b3h5JiBwYWdlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYW1lSW5mbyhmcmFtZUlu
Zm9EYXRhLCBwYWdlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhbWVJbmZvKFdURk1v
dmUoZnJhbWVJbmZvRGF0YSksIHBhZ2UpKTsKIH0KIAotUmVmPEZyYW1lSW5mbz4gRnJhbWVJbmZv
OjpjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKQorUmVmPEZyYW1lSW5mbz4gRnJhbWVJ
bmZvOjpjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiBmcmFtZSwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW4sIFdlYktpdDo6V2ViUGFnZVByb3h5
JiBwYWdlKQogewotICAgIFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm9EYXRhOwotCi0g
ICAgZnJhbWVJbmZvRGF0YS5pc01haW5GcmFtZSA9IGZyYW1lLmlzTWFpbkZyYW1lKCk7Ci0gICAg
Ly8gRklYTUU6IFRoaXMgc2hvdWxkIHVzZSB0aGUgZnVsbCByZXF1ZXN0IG9mIHRoZSBmcmFtZSwg
bm90IGp1c3QgdGhlIFVSTC4KLSAgICBmcmFtZUluZm9EYXRhLnJlcXVlc3QgPSBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QoZnJhbWUudXJsKCkpOwotICAgIGZyYW1lSW5mb0RhdGEuc2VjdXJpdHlP
cmlnaW4gPSBzZWN1cml0eU9yaWdpbi5kYXRhKCk7Ci0gICAgZnJhbWVJbmZvRGF0YS5mcmFtZUlE
ID0gZnJhbWUuZnJhbWVJRCgpOwotCi0gICAgcmV0dXJuIGNyZWF0ZShmcmFtZUluZm9EYXRhLCBm
cmFtZS5wYWdlKCkpOworICAgIFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm9EYXRhIHsK
KyAgICAgICAgZnJhbWUuaXNNYWluRnJhbWUoKSwKKyAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0KGZyYW1lLnVybCgpKSwgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHVzZSB0aGUgZnVsbCBy
ZXF1ZXN0IG9mIHRoZSBmcmFtZSwgbm90IGp1c3QgdGhlIFVSTC4KKyAgICAgICAgV1RGTW92ZShz
ZWN1cml0eU9yaWdpbiksCisgICAgICAgIGZyYW1lLmZyYW1lSUQoKQorICAgIH07CisgICAgcmV0
dXJuIGNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBwYWdlKTsKIH0KIAotRnJhbWVJbmZv
OjpGcmFtZUluZm8oY29uc3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhJiBmcmFtZUluZm9EYXRhLCBX
ZWJLaXQ6OldlYlBhZ2VQcm94eSogcGFnZSkKK0ZyYW1lSW5mbzo6RnJhbWVJbmZvKGNvbnN0IFdl
YktpdDo6RnJhbWVJbmZvRGF0YSYgZnJhbWVJbmZvRGF0YSwgV2ViS2l0OjpXZWJQYWdlUHJveHkm
IHBhZ2UpCiAgICAgOiBtX2lzTWFpbkZyYW1lIHsgZnJhbWVJbmZvRGF0YS5pc01haW5GcmFtZSB9
CiAgICAgLCBtX3JlcXVlc3QgeyBmcmFtZUluZm9EYXRhLnJlcXVlc3QgfQogICAgICwgbV9zZWN1
cml0eU9yaWdpbiB7IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoZnJhbWVJbmZvRGF0YS5zZWN1cml0
eU9yaWdpbi5zZWN1cml0eU9yaWdpbigpKSB9Ci0gICAgLCBtX2hhbmRsZSB7IEFQSTo6RnJhbWVI
YW5kbGU6OmNyZWF0ZShmcmFtZUluZm9EYXRhLmZyYW1lSUQgPyAqZnJhbWVJbmZvRGF0YS5mcmFt
ZUlEIDogV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyeyB9KSB9Ci0gICAgLCBtX3BhZ2UgeyBtYWtl
UmVmUHRyKHBhZ2UpIH0KKyAgICAsIG1faGFuZGxlIHsgQVBJOjpGcmFtZUhhbmRsZTo6Y3JlYXRl
KGZyYW1lSW5mb0RhdGEuZnJhbWVJRCkgfQorICAgICwgbV9wYWdlIHsgcGFnZSB9CiB7CiB9CiAK
LUZyYW1lSW5mbzo6fkZyYW1lSW5mbygpCi17Ci19Ci0KLXZvaWQgRnJhbWVJbmZvOjpjbGVhclBh
Z2UoKQotewotICAgIG1fcGFnZSA9IG51bGxwdHI7Ci19CitGcmFtZUluZm86On5GcmFtZUluZm8o
KSA9IGRlZmF1bHQ7CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUZyYW1lSW5mby5oCmluZGV4IDk3OTNkZWM4MmM2OGRhMmQyNWI1MmVmNTZmZWZh
YTlhYzlmMmEyMzkuLjI1MmQ4M2IwMzUzMTY5ZTI3ZWY0YmFlMmM4ZWRmYWQ5NmZhZmQwN2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmgKQEAgLTI5LDcgKzI5
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7Ci1jbGFzcyBTZWN1cml0eU9yaWdpbjsKK3N0cnVjdCBTZWN1cml0eU9yaWdpbkRh
dGE7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDUsMjYgKzQ1LDI0IEBAIGNsYXNzIFNl
Y3VyaXR5T3JpZ2luOwogCiBjbGFzcyBGcmFtZUluZm8gZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1w
bDxPYmplY3Q6OlR5cGU6OkZyYW1lSW5mbz4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RnJh
bWVJbmZvPiBjcmVhdGUoY29uc3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhJiwgV2ViS2l0OjpXZWJQ
YWdlUHJveHkqKTsKLSAgICBzdGF0aWMgUmVmPEZyYW1lSW5mbz4gY3JlYXRlKGNvbnN0IFdlYktp
dDo6V2ViRnJhbWVQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJik7CisgICAg
c3RhdGljIFJlZjxGcmFtZUluZm8+IGNyZWF0ZShXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJiwgV2Vi
S2l0OjpXZWJQYWdlUHJveHkmKTsKKyAgICBzdGF0aWMgUmVmPEZyYW1lSW5mbz4gY3JlYXRlKGNv
bnN0IFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYm
LCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwogICAgIHZpcnR1YWwgfkZyYW1lSW5mbygpOwogCiAg
ICAgYm9vbCBpc01haW5GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNNYWluRnJhbWU7IH0KICAg
ICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QoKSBjb25zdCB7IHJldHVy
biBtX3JlcXVlc3Q7IH0KICAgICBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSB7IHJl
dHVybiBtX3NlY3VyaXR5T3JpZ2luLmdldCgpOyB9CiAgICAgQVBJOjpGcmFtZUhhbmRsZSYgaGFu
ZGxlKCkgeyByZXR1cm4gbV9oYW5kbGUuZ2V0KCk7IH0KLSAgICBXZWJLaXQ6OldlYlBhZ2VQcm94
eSogcGFnZSgpIHsgcmV0dXJuIG1fcGFnZS5nZXQoKTsgfQotCi0gICAgdm9pZCBjbGVhclBhZ2Uo
KTsKKyAgICBXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSgpIHsgcmV0dXJuIG1fcGFnZS5nZXQo
KTsgfQogCiBwcml2YXRlOgotICAgIEZyYW1lSW5mbyhjb25zdCBXZWJLaXQ6OkZyYW1lSW5mb0Rh
dGEmLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSopOworICAgIEZyYW1lSW5mbyhjb25zdCBXZWJLaXQ6
OkZyYW1lSW5mb0RhdGEmLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwogCiAgICAgYm9vbCBtX2lz
TWFpbkZyYW1lOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CiAgICAg
UmVmPFNlY3VyaXR5T3JpZ2luPiBtX3NlY3VyaXR5T3JpZ2luOwogICAgIFJlZjxGcmFtZUhhbmRs
ZT4gbV9oYW5kbGU7Ci0gICAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBtX3BhZ2U7Cisg
ICAgUmVmPFdlYktpdDo6V2ViUGFnZVByb3h5PiBtX3BhZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNs
aWVudC5oCmluZGV4IDk0ZGEzMmYwOGJlZGQ5NTQxMzQ3NDcwZDUyMmViNTA1MjU0MjUzOGYuLmJj
ZjhhMjAwOTAzNTE4YzI5OWI4MWRlZjNmOTM0ODE5NjNhNDFiYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaApAQCAtODMsNyArODMs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0
IFdURjo6U3RyaW5nJiBkZXN0aW5hdGlvblVSTCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENh
bmNlbENsaWVudFJlZGlyZWN0KFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25XaXRoRXJyb3IoV2ViS2l0OjpXZWJQ
YWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBOYXZpZ2F0aW9uKiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYsIE9iamVjdCopIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihXZWJLaXQ6OldlYlBhZ2VQcm94
eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYsIE5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgT2JqZWN0
KikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1l
V2l0aEVycm9yKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5Jiwg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIE5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiwgT2JqZWN0KikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1p
dE5hdmlnYXRpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBOYXZpZ2F0aW9uKiwgT2JqZWN0Kikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZChXZWJLaXQ6OldlYlBh
Z2VQcm94eSYsIE5hdmlnYXRpb24qLCBPYmplY3QqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmluaXNoTmF2aWdhdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIE5hdmlnYXRpb24qLCBPYmpl
Y3QqKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKaW5kZXgg
ZmRlZGZlNDYwMmFkN2Y3ZjUzYWMzMWY4YWNmMWE0NWZmNzA3Njg5OC4uZDkyMmJlMGIxZjdlM2Nm
YTU2MmNjZjlkNDI4OGQ2NDJmOWU1Y2ZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVVJQ2xpZW50LmgKQEAgLTk0LDkgKzk0LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBmb2N1cyhXZWJLaXQ6OldlYlBhZ2VQcm94eSopIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1bmZv
Y3VzKFdlYktpdDo6V2ViUGFnZVByb3h5KikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2
YVNjcmlwdEFsZXJ0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBX
ZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
LCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5k
bGVyKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViS2l0OjpX
ZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSos
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZvaWQgKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsgfQotICAg
IHZpcnR1YWwgdm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KFdlYktpdDo6V2ViUGFnZVByb3h5Kiwg
Y29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQ
cm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZvaWQg
KGNvbnN0IFdURjo6U3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhh
bmRsZXIoV1RGOjpTdHJpbmcoKSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdEFs
ZXJ0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6Oldl
YkZyYW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgRnVuY3Rpb248dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBj
b25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSB7IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsgfQorICAgIHZpcnR1YWwgdm9pZCBydW5KYXZh
U2NyaXB0UHJvbXB0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBj
b25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpTdHJpbmcoKSk7IH0KIAog
ICAgIHZpcnR1YWwgdm9pZCBzZXRTdGF0dXNUZXh0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29u
c3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVs
ZW1lbnQoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJLaXQ6OldlYkhpdFRlc3RSZXN1
bHREYXRhJiwgT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVyPiwgT2JqZWN0Kikg
eyB9CkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dG
cmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6RmxvYXRS
ZWN0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcih7IH0pOyB9CiAK
ICAgICB2aXJ0dWFsIGJvb2wgY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmly
bVBhbmVsKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6
OldlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBGdW5j
dGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxl
cih0cnVlKTsgfQorICAgIHZpcnR1YWwgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwo
V2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJh
bWVQcm94eSosIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBGdW5jdGlvbjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOyB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFNjcm9sbChXZWJLaXQ6OldlYlBhZ2VQcm94eSopIHsg
fQogCkBAIC0xMzYsNyArMTM2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBuZWVkc0Zv
bnRBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2hhbmdlRm9udEF0dHJpYnV0ZXMoY29uc3QgV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXMmKSB7
IH0KIAotICAgIHZpcnR1YWwgYm9vbCBydW5PcGVuUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkq
LCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmLCBPcGVuUGFuZWxQYXJhbWV0ZXJzKiwgV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclByb3h5KikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcnVuT3BlblBh
bmVsKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIE9wZW5QYW5lbFBhcmFtZXRlcnMqLCBXZWJLaXQ6Oldl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdl
YktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgU2VjdXJpdHlPcmln
aW4mLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYs
IFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFNlY3VyaXR5T3JpZ2luJiwgU2VjdXJpdHlPcmlnaW4m
LCBXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmIHJlcXVlc3QpIHsgcmVx
dWVzdC5kZW55KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9u
Rm9yT3JpZ2luKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5Jiwg
U2VjdXJpdHlPcmlnaW4mLCBTZWN1cml0eU9yaWdpbiYsIFdlYktpdDo6VXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrUHJveHkmIHJlcXVlc3QpIHsgcmVxdWVzdC5kZW55KCk7IH0KQEAgLTE4Myw3ICsx
ODMsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04p
Ci0gICAgdmlydHVhbCB2b2lkIHNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25B
Y2Nlc3MoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmIHdlYkZy
YW1lUHJveHksIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRs
ZXIoZmFsc2UpOyB9CisgICAgdmlydHVhbCB2b2lkIHNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRp
b25BbmRNb3Rpb25BY2Nlc3MoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1l
UHJveHkmIHdlYkZyYW1lUHJveHksIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRp
b25IYW5kbGVyKGZhbHNlKTsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xpY2tB
dXRvRmlsbEJ1dHRvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIE9iamVjdCopIHsgfQpAQCAtMTk3
LDcgKzE5Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2hvd1NhZmVCcm93c2lu
Z1dhcm5pbmcoKSB7IH0KIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0gICAgdmlydHVhbCB2b2lk
IHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJBdXRo
ZW50aWNhdGlvblBhbmVsJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OldlYkF1
dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRp
b25IYW5kbGVyKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFi
bGUpOyB9CisgICAgdmlydHVhbCB2b2lkIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoV2ViS2l0
OjpXZWJQYWdlUHJveHkmLCBXZWJBdXRoZW50aWNhdGlvblBhbmVsJiwgV2ViS2l0OjpXZWJGcmFt
ZVByb3h5JiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxSZXN1bHQ6OlVuYXZhaWxhYmxlKTsgfQogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLRnJhbWUuY3BwCmluZGV4IGE4NTYyZWE3ZjY1NjdkYjNhYzMwNmY3N2I5
MTAzYjk4MzRhYWJhMGMuLjk1NTYyMDUxODc1NGY3ZWIwY2U4N2Y0ZTc3YjMxYTlkNGYyNjZhNGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuY3BwCkBAIC0xMzQsNyAr
MTM0LDEwIEBAIFdLRnJhbWVIYW5kbGVSZWYgV0tGcmFtZUNyZWF0ZUZyYW1lSGFuZGxlKFdLRnJh
bWVSZWYgZnJhbWVSZWYpCiAKIFdLRnJhbWVJbmZvUmVmIFdLRnJhbWVDcmVhdGVGcmFtZUluZm8o
V0tGcmFtZVJlZiBmcmFtZVJlZikKIHsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6RnJhbWVJbmZv
OjpjcmVhdGUoKnRvSW1wbChmcmFtZVJlZiksIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVh
dGVGcm9tU3RyaW5nKHRvSW1wbChmcmFtZVJlZiktPnVybCgpKSkubGVha1JlZigpKTsKKyAgICBh
dXRvKiBwYWdlID0gdG9JbXBsKGZyYW1lUmVmKS0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHRvQVBJKCZBUEk6OkZyYW1lSW5mbzo6
Y3JlYXRlKCp0b0ltcGwoZnJhbWVSZWYpLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgeyBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh0b0ltcGwoZnJhbWVSZWYp
LT51cmwoKSktPmRhdGEoKSB9LCAqcGFnZSkubGVha1JlZigpKTsKIH0KIAogdm9pZCBXS0ZyYW1l
R2V0TWFpblJlc291cmNlRGF0YShXS0ZyYW1lUmVmIGZyYW1lUmVmLCBXS0ZyYW1lR2V0UmVzb3Vy
Y2VEYXRhRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA0NDYzNzI1MWRmZjVhMTkxNzNiYmFjNDdhNDMx
NWEzZmYyZjhmNmI0Li43Mzg0OWU4YzIyODRkMGM3MjEzMDA5NDkxZWYyOTBmMmY3NWUyYzI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTE1ODgsMjQgKzE1
ODgsMjQgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNv
bnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgICAgIG1fY2xpZW50LnVu
Zm9jdXModG9BUEkocGFnZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0K
IAotICAgICAgICB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChXZWJQYWdlUHJveHkqIHBhZ2UsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIGZpbmFsCisgICAgICAgIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdlYlBh
Z2VQcm94eSYgcGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFt
ZSwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlm
IChtX2NsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnQpIHsKICAgICAgICAgICAgICAgICBSZWZQdHI8
UnVuSmF2YVNjcmlwdEFsZXJ0UmVzdWx0TGlzdGVuZXI+IGxpc3RlbmVyID0gUnVuSmF2YVNjcmlw
dEFsZXJ0UmVzdWx0TGlzdGVuZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiAgICAgICAgICAgICAgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3Jp
Z2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNlY3VyaXR5T3JpZ2luRGF0YS5wcm90
b2NvbCwgc2VjdXJpdHlPcmlnaW5EYXRhLmhvc3QsIHNlY3VyaXR5T3JpZ2luRGF0YS5wb3J0KTsK
LSAgICAgICAgICAgICAgICBtX2NsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnQodG9BUEkocGFnZSks
IHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShzZWN1cml0eU9yaWdp
bi5nZXQoKSksIHRvQVBJKGxpc3RlbmVyLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnQodG9BUEkoJnBh
Z2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoc2VjdXJpdHlP
cmlnaW4uZ2V0KCkpLCB0b0FQSShsaXN0ZW5lci5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBpZiAobV9jbGllbnQucnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjUpIHsKICAgICAgICAgICAgICAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJp
dHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoc2VjdXJpdHlPcmlnaW5EYXRh
LnByb3RvY29sLCBzZWN1cml0eU9yaWdpbkRhdGEuaG9zdCwgc2VjdXJpdHlPcmlnaW5EYXRhLnBv
cnQpOwotICAgICAgICAgICAgICAgIG1fY2xpZW50LnJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNh
dGVkRm9yVXNlV2l0aFY1KHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJ
KGZyYW1lKSwgdG9BUEkoc2VjdXJpdHlPcmlnaW4uZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworICAgICAgICAgICAgICAgIG1fY2xpZW50LnJ1bkphdmFTY3JpcHRBbGVydF9kZXBy
ZWNhdGVkRm9yVXNlV2l0aFY1KHRvQVBJKCZwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0
b0FQSShmcmFtZSksIHRvQVBJKHNlY3VyaXR5T3JpZ2luLmdldCgpKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAg
ICAgaWYgKG1fY2xpZW50LnJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFYw
KSB7Ci0gICAgICAgICAgICAgICAgbV9jbGllbnQucnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjAodG9BUEkocGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEko
ZnJhbWUpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgICAgIG1fY2xp
ZW50LnJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKHRvQVBJKCZwYWdl
KSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0xNjE0LDI1ICsxNjE0LDI1IEBAIHZv
aWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VV
SUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwog
ICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybShXZWJQYWdlUHJv
eHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgICAgICB2b2lkIHJ1bkphdmFT
Y3JpcHRDb25maXJtKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBX
ZWJGcmFtZVByb3h5KiBmcmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW5E
YXRhLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAobV9jbGllbnQucnVuSmF2YVNjcmlwdENvbmZpcm0pIHsK
ICAgICAgICAgICAgICAgICBSZWZQdHI8UnVuSmF2YVNjcmlwdENvbmZpcm1SZXN1bHRMaXN0ZW5l
cj4gbGlzdGVuZXIgPSBSdW5KYXZhU2NyaXB0Q29uZmlybVJlc3VsdExpc3RlbmVyOjpjcmVhdGUo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICAgICAgICAgIFJlZlB0cjxBUEk6
OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShzZWN1cml0eU9yaWdpbkRhdGEucHJvdG9jb2wsIHNlY3VyaXR5T3JpZ2luRGF0YS5ob3N0
LCBzZWN1cml0eU9yaWdpbkRhdGEucG9ydCk7Ci0gICAgICAgICAgICAgICAgbV9jbGllbnQucnVu
SmF2YVNjcmlwdENvbmZpcm0odG9BUEkocGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9B
UEkoZnJhbWUpLCB0b0FQSShzZWN1cml0eU9yaWdpbi5nZXQoKSksIHRvQVBJKGxpc3RlbmVyLmdl
dCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVu
dC5ydW5KYXZhU2NyaXB0Q29uZmlybSh0b0FQSSgmcGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgp
KSwgdG9BUEkoZnJhbWUpLCB0b0FQSShzZWN1cml0eU9yaWdpbi5nZXQoKSksIHRvQVBJKGxpc3Rl
bmVyLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5ydW5KYXZh
U2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFY1KSB7CiAgICAgICAgICAgICAgICAg
UmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKHNlY3VyaXR5T3JpZ2luRGF0YS5wcm90b2NvbCwgc2VjdXJpdHlPcmln
aW5EYXRhLmhvc3QsIHNlY3VyaXR5T3JpZ2luRGF0YS5wb3J0KTsKLSAgICAgICAgICAgICAgICBi
b29sIHJlc3VsdCA9IG1fY2xpZW50LnJ1bkphdmFTY3JpcHRDb25maXJtX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjUodG9BUEkocGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJhbWUp
LCB0b0FQSShzZWN1cml0eU9yaWdpbi5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
CisgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBtX2NsaWVudC5ydW5KYXZhU2NyaXB0Q29u
ZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFY1KHRvQVBJKCZwYWdlKSwgdG9BUEkobWVzc2FnZS5p
bXBsKCkpLCB0b0FQSShmcmFtZSksIHRvQVBJKHNlY3VyaXR5T3JpZ2luLmdldCgpKSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG1fY2xpZW50LnJ1bkphdmFT
Y3JpcHRDb25maXJtX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjApIHsKLSAgICAgICAgICAgICAgICBi
b29sIHJlc3VsdCA9IG1fY2xpZW50LnJ1bkphdmFTY3JpcHRDb25maXJtX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjAodG9BUEkocGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJhbWUp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0
ID0gbV9jbGllbnQucnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZvclVzZVdpdGhWMCh0
b0FQSSgmcGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwogCiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmVzdWx0KTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xNjQxLDE4ICsxNjQxLDE4IEBA
IHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1Bh
Z2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihm
YWxzZSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHJ1bkphdmFTY3JpcHRQcm9tcHQoV2Vi
UGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVm
YXVsdFZhbHVlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JiBzZWN1cml0eU9yaWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgICAgIHZvaWQgcnVuSmF2YVNjcmlwdFByb21wdChX
ZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBk
ZWZhdWx0VmFsdWUsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBTZWN1cml0eU9yaWdpbkRhdGEmJiBz
ZWN1cml0eU9yaWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5y
dW5KYXZhU2NyaXB0UHJvbXB0KSB7CiAgICAgICAgICAgICAgICAgUmVmUHRyPFJ1bkphdmFTY3Jp
cHRQcm9tcHRSZXN1bHRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBSdW5KYXZhU2NyaXB0UHJvbXB0UmVz
dWx0TGlzdGVuZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAg
ICAgICAgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJ
OjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNlY3VyaXR5T3JpZ2luRGF0YS5wcm90b2NvbCwgc2Vj
dXJpdHlPcmlnaW5EYXRhLmhvc3QsIHNlY3VyaXR5T3JpZ2luRGF0YS5wb3J0KTsKLSAgICAgICAg
ICAgICAgICBtX2NsaWVudC5ydW5KYXZhU2NyaXB0UHJvbXB0KHRvQVBJKHBhZ2UpLCB0b0FQSSht
ZXNzYWdlLmltcGwoKSksIHRvQVBJKGRlZmF1bHRWYWx1ZS5pbXBsKCkpLCB0b0FQSShmcmFtZSks
IHRvQVBJKHNlY3VyaXR5T3JpZ2luLmdldCgpKSwgdG9BUEkobGlzdGVuZXIuZ2V0KCkpLCBtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgICAgIG1fY2xpZW50LnJ1bkphdmFT
Y3JpcHRQcm9tcHQodG9BUEkoJnBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGRl
ZmF1bHRWYWx1ZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIHRvQVBJKHNlY3VyaXR5T3JpZ2luLmdl
dCgpKSwgdG9BUEkobGlzdGVuZXIuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYg
KG1fY2xpZW50LnJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSkgewog
ICAgICAgICAgICAgICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdp
biA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShzZWN1cml0eU9yaWdpbkRhdGEucHJvdG9j
b2wsIHNlY3VyaXR5T3JpZ2luRGF0YS5ob3N0LCBzZWN1cml0eU9yaWdpbkRhdGEucG9ydCk7Ci0g
ICAgICAgICAgICAgICAgUmVmUHRyPEFQSTo6U3RyaW5nPiBzdHJpbmcgPSBhZG9wdFJlZih0b0lt
cGwobV9jbGllbnQucnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1KHRv
QVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGRlZmF1bHRWYWx1ZS5pbXBs
KCkpLCB0b0FQSShmcmFtZSksIHRvQVBJKHNlY3VyaXR5T3JpZ2luLmdldCgpKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKSkpOworICAgICAgICAgICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4g
c3RyaW5nID0gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LnJ1bkphdmFTY3JpcHRQcm9tcHRfZGVw
cmVjYXRlZEZvclVzZVdpdGhWNSh0b0FQSSgmcGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwg
dG9BUEkoZGVmYXVsdFZhbHVlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoc2VjdXJpdHlP
cmlnaW4uZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKSk7CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgaWYgKHN0cmluZykKICAgICAgICAgICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoc3RyaW5nLT5zdHJpbmcoKSk7CkBAIC0xNjYyLDcgKzE2NjIsNyBAQCB2
b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdl
VUlDbGllbnRCYXNlKiB3a0NsaWVudAogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBpZiAobV9jbGllbnQucnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNl
V2l0aFYwKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPEFQSTo6U3RyaW5nPiBzdHJpbmcgPSBh
ZG9wdFJlZih0b0ltcGwobV9jbGllbnQucnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9y
VXNlV2l0aFYwKHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGRlZmF1
bHRWYWx1ZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykp
KTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8QVBJOjpTdHJpbmc+IHN0cmluZyA9IGFkb3B0UmVm
KHRvSW1wbChtX2NsaWVudC5ydW5KYXZhU2NyaXB0UHJvbXB0X2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjAodG9BUEkoJnBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGRlZmF1bHRWYWx1
ZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpKTsKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoc3RyaW5nKQogICAgICAgICAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdHJpbmctPnN0cmluZygpKTsKQEAgLTE4MTQsMTYg
KzE4MTQsMTYgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYs
IGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgICAgIHJldHVybiBt
X2NsaWVudC5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxfZGVwcmVjYXRlZEZvclVzZVdpdGhW
NiB8fCBtX2NsaWVudC5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw7CiAgICAgICAgIH0KIAot
ICAgICAgICB2b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChXZWJLaXQ6OldlYlBhZ2VQ
cm94eSogcGFnZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsIFdlYktpdDo6V2ViRnJhbWVQ
cm94eSogZnJhbWUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgICAgIHZvaWQgcnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsKFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBXVEY6OlN0
cmluZyYgbWVzc2FnZSwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiBmcmFtZSwgU2VjdXJpdHlPcmln
aW5EYXRhJiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFs
CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5ydW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWwpIHsKICAgICAgICAgICAgICAgICBSZWZQdHI8UnVuQmVmb3JlVW5sb2FkQ29uZmly
bVBhbmVsUmVzdWx0TGlzdGVuZXI+IGxpc3RlbmVyID0gUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsUmVzdWx0TGlzdGVuZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0g
ICAgICAgICAgICAgICAgbV9jbGllbnQucnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKHRvQVBJ
KHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgdG9BUEkobGlzdGVu
ZXIuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgICAgIG1f
Y2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCh0b0FQSSgmcGFnZSksIHRvQVBJKG1l
c3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShsaXN0ZW5lci5nZXQoKSksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBpZiAobV9jbGllbnQucnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjYpIHsKLSAgICAgICAgICAgICAgICBib29sIHJlc3Vs
dCA9IG1fY2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbF9kZXByZWNhdGVkRm9yVXNl
V2l0aFY2KHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9
IG1fY2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbF9kZXByZWNhdGVkRm9yVXNlV2l0
aFY2KHRvQVBJKCZwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIocmVzdWx0KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0x
ODQ5LDEyICsxODQ5LDEyIEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBw
YWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihtX2NsaWVudC5leGNlZWRlZERhdGFiYXNlUXVvdGEodG9BUEkocGFn
ZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkob3JpZ2luKSwgdG9BUEkoZGF0YWJhc2VOYW1lLmltcGwo
KSksIHRvQVBJKGRhdGFiYXNlRGlzcGxheU5hbWUuaW1wbCgpKSwgY3VycmVudFF1b3RhLCBjdXJy
ZW50T3JpZ2luVXNhZ2UsIGN1cnJlbnREYXRhYmFzZVVzYWdlLCBleHBlY3RlZFVzYWdlLCBtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pKTsKICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgcnVuT3Bl
blBhbmVsKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEFQSTo6T3BlblBhbmVsUGFyYW1ldGVycyogcGFy
YW1ldGVycywgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSogbGlzdGVuZXIpIGZpbmFs
CisgICAgICAgIGJvb2wgcnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQ
cm94eSogZnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBBUEk6Ok9wZW5QYW5l
bFBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkq
IGxpc3RlbmVyKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LnJ1
bk9wZW5QYW5lbCkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAg
IG1fY2xpZW50LnJ1bk9wZW5QYW5lbCh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShw
YXJhbWV0ZXJzKSwgdG9BUEkobGlzdGVuZXIpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwor
ICAgICAgICAgICAgbV9jbGllbnQucnVuT3BlblBhbmVsKHRvQVBJKCZwYWdlKSwgdG9BUEkoZnJh
bWUpLCB0b0FQSShwYXJhbWV0ZXJzKSwgdG9BUEkobGlzdGVuZXIpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIApAQCAtMTkw
Niw3ICsxOTA2LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VS
ZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgfQogCiAjaWYg
RU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKLSAgICAgICAgdm9pZCBzaG91bGRBbGxvd0Rldmlj
ZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQ
cm94eSYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luRGF0YSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAg
ICAgICAgdm9pZCBzaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzKFdl
YlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYmIG9yaWdpbkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQu
c2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzcykKICAgICAgICAgICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwpAQCAtMjA3Niw3ICsyMDc2LDcg
QEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdL
UGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAgICAg
ICAgIC8vIFRoZSBjdXJyZW50IG1ldGhvZCBpcyBzcGVjaWFsaXplZCBmb3IgV2ViS2l0VGVzdFJ1
bm5lci4KLSAgICAgICAgdm9pZCBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKFdlYlBhZ2VQcm94
eSYsIEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYsIFdlYkZyYW1lUHJveHkmLCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktp
dDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZp
bmFsCisgICAgICAgIHZvaWQgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbChXZWJQYWdlUHJveHkm
LCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmLCBXZWJGcmFtZVByb3h5JiwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpXZWJB
dXRoZW50aWNhdGlvblBhbmVsUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKICAg
ICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5ydW5XZWJBdXRoZW50aWNhdGlvblBh
bmVsKSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpXZWJBdXRo
ZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSk7CkBAIC0yMTYwLDExICsyMTYwLDEx
IEBAIHZvaWQgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYs
IGNvbnN0IFdLUGFnZU5hdmlnYXRpb25DbGllCiAgICAgICAgICAgICBtX2NsaWVudC5kaWRGYWls
TmF2aWdhdGlvbih0b0FQSSgmcGFnZSksIHRvQVBJKG5hdmlnYXRpb24pLCB0b0FQSShlcnJvciks
IHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQog
Ci0gICAgICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3Io
V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBzdWJmcmFtZSwgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEsIEFQSTo6TmF2aWdhdGlv
biogbmF2aWdhdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6
T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9u
YWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJv
eHkmIHN1YmZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdp
bkRhdGEsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYgZXJyb3IsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJm
cmFtZSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRG
YWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZSh0b0FQSSgmcGFnZSksIHRvQVBJKG5hdmlnYXRp
b24pLCB0b0FQSShBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKHN1YmZyYW1lLCBzZWN1cml0eU9yaWdp
bkRhdGEuc2VjdXJpdHlPcmlnaW4oKSkucHRyKCkpLCB0b0FQSShlcnJvciksIHRvQVBJKHVzZXJE
YXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRp
ZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lKHRvQVBJKCZwYWdlKSwgdG9BUEkobmF2aWdh
dGlvbiksIHRvQVBJKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoc3ViZnJhbWUsIFdURk1vdmUoc2Vj
dXJpdHlPcmlnaW5EYXRhKSwgcGFnZSkucHRyKCkpLCB0b0FQSShlcnJvciksIHRvQVBJKHVzZXJE
YXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCiAgICAgICAgIHZv
aWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkKFdlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpOYXZpZ2F0
aW9uKiBuYXZpZ2F0aW9uLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGcmFtZUluZm8ubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGcmFtZUluZm8ubW0KaW5kZXggNjBl
YmYxM2Q5M2I3ODc1NWZjNzg5MzFjOThlZTg5YWNjMDhkMDU4NC4uNjZiMWE2MzNkZGNjNTQ5ZWNm
MjAyNDU1MGU3NjdmNjY5NDY4NmRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLRnJhbWVJbmZvLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0ZyYW1lSW5mby5tbQpAQCAtNjEsOSArNjEsNyBAQAogCiAtIChXS1dlYlZp
ZXcgKil3ZWJWaWV3CiB7Ci0gICAgaWYgKFdlYktpdDo6V2ViUGFnZVByb3h5KiBwYWdlID0gX2Zy
YW1lSW5mby0+cGFnZSgpKQotICAgICAgICByZXR1cm4gW1tmcm9tV2ViUGFnZVByb3h5KCpwYWdl
KSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBbW2Zy
b21XZWJQYWdlUHJveHkoX2ZyYW1lSW5mby0+cGFnZSgpKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsK
IH0KIAogLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xs
ZXIubW0KaW5kZXggYTAwYjIwM2NjOTA1OTMwMWJlY2M0NjFkNjFiNDY3MzJiODU2MTJmZC4uNmY2
NzhmMzRkZDU2OWJjOTM0Yzk2MWUzMTlmOWE0NjdlYTU3NGQyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJv
bGxlci5tbQpAQCAtMTI3LDEwICsxMjcsMTAgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAg
Ci0gICAgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSwgY29u
c3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhJiBmcmFtZUluZm9EYXRhLCBXZWJDb3JlOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkgb3ZlcnJpZGUKKyAgICB2b2lk
IGRpZFBvc3RNZXNzYWdlKFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJLaXQ6OkZyYW1l
SW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUm
IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEBhdXRvcmVs
ZWFzZXBvb2wgewotICAgICAgICAgICAgUmV0YWluUHRyPFdLRnJhbWVJbmZvPiBmcmFtZUluZm8g
PSB3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoZnJhbWVJbmZvRGF0YSwgJnBhZ2UpKTsK
KyAgICAgICAgICAgIFJldGFpblB0cjxXS0ZyYW1lSW5mbz4gZnJhbWVJbmZvID0gd3JhcHBlcihB
UEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvRGF0YSksIHBhZ2UpKTsKICAg
ICAgICAgICAgIGlkIGJvZHkgPSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxp
emUoc2VyaWFsaXplZFNjcmlwdFZhbHVlLCAwKTsKICAgICAgICAgICAgIGF1dG8gbWVzc2FnZSA9
IGFkb3B0TlMoW1tXS1NjcmlwdE1lc3NhZ2UgYWxsb2NdIF9pbml0V2l0aEJvZHk6Ym9keSB3ZWJW
aWV3OmZyb21XZWJQYWdlUHJveHkocGFnZSkgZnJhbWVJbmZvOmZyYW1lSW5mby5nZXQoKSBuYW1l
Om1fbmFtZS5nZXQoKV0pOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAppbmRleCBiZjdmOTVkN2Y2ZDgwZjNjYjcw
ZGQ2NTNlNGRmYjI4ZTAwMjdkMzBkLi40NzgwMTM0MmVhNjA5MmZiNWVjYWU4Mjc1NzI4MDM5NTk0
Y2Q0YjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRVSUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0VUlDbGllbnQuY3BwCkBAIC03NiwyNCArNzYsMjQgQEAgcHJpdmF0ZToKICAgICAgICAgd2Vi
a2l0V2ViVmlld0Nsb3NlUGFnZShtX3dlYlZpZXcpOwogICAgIH0KIAotICAgIHZvaWQgcnVuSmF2
YVNjcmlwdEFsZXJ0KFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgV2ViRnJh
bWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRB
bGVydChXZWJQYWdlUHJveHkmLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkq
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSBmaW5hbAogICAgIHsKICAgICAgICAgd2Via2l0V2ViVmlld1J1bkphdmFT
Y3JpcHRBbGVydChtX3dlYlZpZXcsIG1lc3NhZ2UudXRmOCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiAgICAgfQogCi0gICAgdm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybShXZWJQYWdl
UHJveHkqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBmaW5hbAorICAgIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViUGFnZVBy
b3h5JiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5KiwgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIGZpbmFsCiAgICAgewogICAgICAgICB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdENvbmZp
cm0obV93ZWJWaWV3LCBtZXNzYWdlLnV0ZjgoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgIH0KIAotICAgIHZvaWQgcnVuSmF2YVNjcmlwdFByb21wdChXZWJQYWdlUHJveHkqLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlLCBXZWJGcmFt
ZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgRnVuY3Rpb248dm9p
ZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAgICB2b2lkIHJ1
bkphdmFTY3JpcHRQcm9tcHQoV2ViUGFnZVByb3h5JiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgV2ViRnJhbWVQcm94eSosIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBmaW5hbAogICAgIHsKICAgICAgICAgd2Via2l0V2ViVmlld1J1bkphdmFTY3Jp
cHRQcm9tcHQobV93ZWJWaWV3LCBtZXNzYWdlLnV0ZjgoKSwgZGVmYXVsdFZhbHVlLnV0ZjgoKSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0KIAogICAgIGJvb2wgY2FuUnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0g
ICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV2ViUGFnZVByb3h5KiwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmlu
YWwKKyAgICB2b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChXZWJQYWdlUHJveHkmLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmlu
YWwKICAgICB7CiAgICAgICAgIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0QmVmb3JlVW5sb2Fk
Q29uZmlybShtX3dlYlZpZXcsIG1lc3NhZ2UudXRmOCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiAgICAgfQpAQCAtMjExLDcgKzIxMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGRlZmF1bHRRdW90YSk7CiAgICAgfQogCi0gICAgYm9vbCBydW5PcGVuUGFu
ZWwoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYsIEFQSTo6T3BlblBhbmVsUGFyYW1ldGVycyogcGFyYW1ldGVycywgV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSogbGlzdGVuZXIpIGZpbmFsCisgICAgYm9vbCBydW5P
cGVuUGFuZWwoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSosIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmLCBBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIFdlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqIGxpc3RlbmVyKSBmaW5hbAogICAgIHsKICAgICAg
ICAgR1JlZlB0cjxXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9wdEdSZWYo
d2Via2l0RmlsZUNob29zZXJSZXF1ZXN0Q3JlYXRlKHBhcmFtZXRlcnMsIGxpc3RlbmVyKSk7CiAg
ICAgICAgIHdlYmtpdFdlYlZpZXdSdW5GaWxlQ2hvb3NlclJlcXVlc3QobV93ZWJWaWV3LCByZXF1
ZXN0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLmgKaW5kZXggOTQ2M2U1MTVjYzdiY2ZmYzZjM2FjMTFkZTQ0NTU2M2E4OTVjOTUzOS4u
NDYwZWJhNGFjYTkzMDczMTY1ZWI3ZmEwMWUyN2Y4NTJiYzU4OGRlMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKQEAgLTEwMCw3ICsxMDAs
NyBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChXZWJQ
YWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJikgb3ZlcnJp
ZGU7CiAgICAgICAgIHZvaWQgZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoV2ViUGFnZVByb3h5Jikg
b3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbldpdGhF
cnJvcihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAg
ICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3IoV2ViUGFn
ZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYsIEFQSTo6TmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBBUEk6
Ok9iamVjdCopIG92ZXJyaWRlOworICAgICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRJ
blN1YmZyYW1lV2l0aEVycm9yKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgQVBJOjpOYXZpZ2F0aW9uKiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlk
Q29tbWl0TmF2aWdhdGlvbihXZWJQYWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9i
amVjdCopIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZChXZWJQ
YWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwogICAg
ICAgICB2b2lkIGRpZEZpbmlzaE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0
aW9uKiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCAzZTk4NGMxZWVmNzViNzUyOWEzYzQz
ZDgyMzY2MmFhYzkwNWI3MzBiLi4zNTJiZTFiY2ZmMDY0YmU4NzNmOWE0NDk5NTMyYzUzNjFkNzQw
YjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tCkBAIC04NDYsNyArODQ2LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25XaXRoRXJyb3IoV2UKIH0KIAog
Ly8gRklYTUU6IFNob3VsZG4ndCBuZWVkIHRvIHBhc3MgdGhlIFdlYkZyYW1lUHJveHkgaW4gaGVy
ZS4gQXQgbW9zdCwgYSBGcmFtZUhhbmRsZS4KLXZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0
aW9uQ2xpZW50OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihXZWJQ
YWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIEFQSTo6TmF2aWdhdGlvbiosIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6Ok9iamVjdCopCit2b2lkIE5hdmlnYXRp
b25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJh
bWVXaXRoRXJyb3IoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFtZVBy
b3h5LCBTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbiwgQVBJOjpOYXZpZ2F0aW9u
KiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6T2JqZWN0KikKIHsK
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFzc2VydCB0aGF0IG5hdmlnYXRpb24gaXMgbm90IG51
bGwgaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IG51bGwgYmVjYXVzZSBXZWJQYWdlUHJveHk6OmRp
ZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSBwYXNzZXMgbnVsbC4KIApAQCAtODU2LDcgKzg1
Niw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGYWlsUHJv
dmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvCiAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdh
dGUgPSBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKTsKICAgICBh
dXRvIGVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyID0gY3JlYXRlRXJyb3JXaXRoUmVjb3ZlcnlB
dHRlbXB0ZXIobV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3LCB3ZWJGcmFtZVByb3h5LCBlcnJv
cik7CiAKLSAgICBbKGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+KW5hdmlnYXRpb25E
ZWxlZ2F0ZSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgbmF2aWdhdGlvbjpu
aWwgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5m
bzo6Y3JlYXRlKHdlYkZyYW1lUHJveHksIHNlY3VyaXR5T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkp
KSB3aXRoRXJyb3I6ZXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIuZ2V0KCldOworICAgIFsoaWQg
PFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4pbmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3
Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBuYXZpZ2F0aW9uOm5pbCBkaWRGYWlsUHJvdmlz
aW9uYWxMb2FkSW5TdWJmcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUod2ViRnJh
bWVQcm94eSwgV1RGTW92ZShzZWN1cml0eU9yaWdpbiksIHBhZ2UpKSB3aXRoRXJyb3I6ZXJyb3JX
aXRoUmVjb3ZlcnlBdHRlbXB0ZXIuZ2V0KCldOwogfQogCiB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6
TmF2aWdhdGlvbkNsaWVudDo6ZGlkQ29tbWl0TmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2Us
IEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3QqKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCmluZGV4IGZhYzcwYjZiYzMwYzg0NmUyMGUx
ZGFhMjEyY2EwNmIzMDY4YTIyM2EuLjMzYmMxNWJiZDk0NDk3YjUyODFjYzQ0YjYwYzYzOTBmNWVi
MDhkYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKQEAg
LTg4LDE0ICs4OCwxNCBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIGZ1bGxzY3JlZW5NYXlSZXR1
cm5Ub0lubGluZShXZWJQYWdlUHJveHkqKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRFbnRlckZ1
bGxzY3JlZW4oV2ViUGFnZVByb3h5KikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRXhpdEZ1bGxz
Y3JlZW4oV2ViUGFnZVByb3h5KikgZmluYWw7Ci0gICAgICAgIHZvaWQgcnVuSmF2YVNjcmlwdEFs
ZXJ0KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViRnJhbWVQcm94eSosIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikgZmluYWw7Ci0gICAgICAgIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0o
V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJGcmFtZVByb3h5KiwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikgZmluYWw7Ci0gICAgICAgIHZvaWQgcnVuSmF2YVNjcmlwdFByb21wdChX
ZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgV2Vi
RnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9u
PHZvaWQoY29uc3QgV1RGOjpTdHJpbmcmKT4mJikgZmluYWw7CisgICAgICAgIHZvaWQgcnVuSmF2
YVNjcmlwdEFsZXJ0KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViRnJhbWVQ
cm94eSosIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBGdW5jdGlvbjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOworICAgICAgICB2b2lkIHJ1bkphdmFTY3JpcHRDb25m
aXJtKFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViRnJhbWVQcm94eSosIFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSBmaW5hbDsKKyAgICAgICAgdm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KFdl
YlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJG
cmFtZVByb3h5KiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIEZ1bmN0aW9uPHZvaWQo
Y29uc3QgV1RGOjpTdHJpbmcmKT4mJikgZmluYWw7CiAgICAgICAgIHZvaWQgcHJlc2VudFN0b3Jh
Z2VBY2Nlc3NDb25maXJtRGlhbG9nKGNvbnN0IFdURjo6U3RyaW5nJiByZXF1ZXN0aW5nRG9tYWlu
LCBjb25zdCBXVEY6OlN0cmluZyYgY3VycmVudERvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CiAgICAgICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKFdl
YlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYgcmVxdWVzdGluZ0RvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
IGN1cnJlbnREb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwog
ICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Qo
V2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBGdW5j
dGlvbjx2b2lkKGJvb2wpPiYpIGZpbmFsOwogICAgICAgICBib29sIGNhblJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbCgpIGNvbnN0IGZpbmFsOwotICAgICAgICB2b2lkIHJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbChXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYkZyYW1l
UHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBGdW5jdGlvbjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKKyAgICAgICAgdm9pZCBydW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWwoV2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBX
ZWJGcmFtZVByb3h5KiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIEZ1bmN0aW9uPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOwogICAgICAgICB2b2lkIGV4Y2Vl
ZGVkRGF0YWJhc2VRdW90YShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJOjpTZWN1
cml0eU9yaWdpbiosIGNvbnN0IFdURjo6U3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFdURjo6
U3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRRdW90YSwgdW5z
aWduZWQgbG9uZyBsb25nIGN1cnJlbnRPcmlnaW5Vc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1
cnJlbnRVc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGV4cGVjdGVkVXNhZ2UsIEZ1bmN0aW9uPHZv
aWQodW5zaWduZWQgbG9uZyBsb25nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CiAgICAg
ICAgIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShXZWJQYWdlUHJveHkq
LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwg
dWludDY0X3QgdG90YWxCeXRlc05lZWRlZCwgRnVuY3Rpb248dm9pZCh1bnNpZ25lZCBsb25nIGxv
bmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRSZXNpZ25J
bnB1dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2UoV2ViUGFnZVByb3h5JiwgQVBJOjpP
YmplY3QqKSBmaW5hbDsKQEAgLTEyMSwxMiArMTIxLDEyIEBAIHByaXZhdGU6CiAgICAgICAgIHZv
aWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViUGFnZVByb3h5JiwgY29uc3QgV2ViSGl0VGVz
dFJlc3VsdERhdGEmLCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiwgQVBJOjpPYmplY3Qq
KTsKICAgICAgICAgdm9pZCBkaWRDbGlja0F1dG9GaWxsQnV0dG9uKFdlYlBhZ2VQcm94eSYsIEFQ
STo6T2JqZWN0KikgZmluYWw7CiAgICAgICAgIHZvaWQgdG9vbGJhcnNBcmVWaXNpYmxlKFdlYlBh
Z2VQcm94eSYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwotICAgICAgICBib29sIHJ1
bk9wZW5QYW5lbChXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiwgQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJzKiwgV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJQcm94eSopIGZpbmFsOworICAgICAgICBib29sIHJ1bk9wZW5QYW5l
bChXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5KiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiYsIEFQSTo6T3BlblBhbmVsUGFyYW1ldGVycyosIFdlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyUHJveHkqKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3Vy
Y2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kKFdlYlBhZ2VQcm94eSYsIFdLUmVzb3VyY2VMaW1pdCkg
ZmluYWw7CiAgICAgICAgIHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJQ
YWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3Qg
VVJMJiwgQVBJOjpEYXRhJikgZmluYWw7CiAjZW5kaWYKICNpZiBFTkFCTEUoREVWSUNFX09SSUVO
VEFUSU9OKQotICAgICAgICB2b2lkIHNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rp
b25BY2Nlc3MoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JikgZmluYWw7CisgICAgICAgIHZvaWQgc2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1v
dGlvbkFjY2VzcyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikg
ZmluYWw7CiAjZW5kaWYKICAgICAgICAgYm9vbCBuZWVkc0ZvbnRBdHRyaWJ1dGVzKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRD
aGFuZ2VGb250QXR0cmlidXRlczsgfQogICAgICAgICB2b2lkIGRpZENoYW5nZUZvbnRBdHRyaWJ1
dGVzKGNvbnN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzJikgZmluYWw7CkBAIC0xNTUsNyArMTU1
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBpbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFu
Z2VkKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRTaG93
U2FmZUJyb3dzaW5nV2FybmluZygpIGZpbmFsOwogI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0gICAg
ICAgIHZvaWQgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbChXZWJQYWdlUHJveHkmLCBBUEk6Oldl
YkF1dGhlbnRpY2F0aW9uUGFuZWwmLCBXZWJGcmFtZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJBdXRoZW50aWNhdGlv
blBhbmVsUmVzdWx0KT4mJikgZmluYWw7CisgICAgICAgIHZvaWQgcnVuV2ViQXV0aGVudGljYXRp
b25QYW5lbChXZWJQYWdlUHJveHkmLCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmLCBXZWJG
cmFtZVByb3h5JiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCk+JiYpIGZpbmFsOwogI2VuZGlm
CiAKICAgICAgICAgVUlEZWxlZ2F0ZSYgbV91aURlbGVnYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggYTc1MDM0NjIwMTZmZTE2MTcxYjE2MDQ2
NzRlMTZjM2VhOTJmOTg5ZC4uZDNjZTBlYTMyMGJmODY3YjFjYWIxZjMxY2VhZTJlNmU0NzQ4ZmYx
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC0y
NzIsNyArMjcyLDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3UGFnZShX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYkNvcmU6OldpbmRvd0YKICAgICBjb21wbGV0aW9uSGFu
ZGxlcih3ZWJWaWV3LT5fcGFnZS5nZXQoKSk7CiB9CiAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGll
bnQ6OnJ1bkphdmFTY3JpcHRBbGVydChXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYg
bWVzc2FnZSwgV2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcm94eSwgY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3Jp
cHRBbGVydChXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBX
ZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
JiBzZWN1cml0eU9yaWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVu
SmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZUluaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9u
SGFuZGxlcikgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMjg2LDcgKzI4Niw3
IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRBbGVydChXZWJQYWdl
UHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYKICAgICB9CiAKICAgICBhdXRvIGNoZWNrZXIgPSBD
b21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxl
Y3Rvcih3ZWJWaWV3OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVk
QnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjopKTsKLSAgICBbZGVsZWdhdGUgd2ViVmlldzptX3Vp
RGVsZWdhdGUubV93ZWJWaWV3IHJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6bWVz
c2FnZSBpbml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqd2Vi
RnJhbWVQcm94eSwgc2VjdXJpdHlPcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCkpKSBjb21wbGV0
aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSB7CisgICAgW2RlbGVn
YXRlIHdlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBydW5KYXZhU2NyaXB0QWxlcnRQYW5l
bFdpdGhNZXNzYWdlOm1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJ
bmZvOjpjcmVhdGUoKndlYkZyYW1lUHJveHksIFdURk1vdmUoc2VjdXJpdHlPcmlnaW5EYXRhKSwg
cGFnZSkpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcild
IHsKICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgp
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAt
Mjk0LDcgKzI5NCw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRB
bGVydChXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYKICAgICB9KS5nZXQoKV07CiB9
CiAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRDb25maXJtKFdlYlBh
Z2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5KiB3ZWJG
cmFtZVByb3h5LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3Jp
Z2luRGF0YSwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRDb25maXJtKFdlYlBhZ2VQcm94eSYg
cGFnZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1l
UHJveHksIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSwg
RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1f
dWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuSmF2YVNjcmlwdENvbmZpcm1Q
YW5lbFdpdGhNZXNzYWdlSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKQEAgLTMwOCw3ICszMDgsNyBAQCB2b2lkIFVJ
RGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0Q29uZmlybShXZWJQYWdlUHJveHkqLCBj
b25zdCBXVEY6OlN0cmluZwogICAgIH0KIAogICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25I
YW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKHdlYlZp
ZXc6cnVuSmF2YVNjcmlwdENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6
Y29tcGxldGlvbkhhbmRsZXI6KSk7Ci0gICAgW2RlbGVnYXRlIHdlYlZpZXc6bV91aURlbGVnYXRl
Lm1fd2ViVmlldyBydW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6bWVzc2FnZSBp
bml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqd2ViRnJhbWVQ
cm94eSwgc2VjdXJpdHlPcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCkpKSBjb21wbGV0aW9uSGFu
ZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoQk9PTCByZXN1bHQpIG11dGFi
bGUgeworICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuSmF2
YVNjcmlwdENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOm1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTp3
cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKndlYkZyYW1lUHJveHksIFdURk1vdmUoc2Vj
dXJpdHlPcmlnaW5EYXRhKSwgcGFnZSkpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihb
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9
IFdURk1vdmUoY2hlY2tlcildIChCT09MIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChj
aGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKQEAgLTMxNiw3ICszMTYs
NyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0Q29uZmlybShXZWJQ
YWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZwogICAgIH0pLmdldCgpXTsKIH0KIAotdm9pZCBV
SURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdFByb21wdChXZWJQYWdlUHJveHkqLCBj
b25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSwgY29uc3QgV1RGOjpTdHJpbmcmIGRlZmF1bHRWYWx1
ZSwgV2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcm94eSwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQoY29uc3QgV1RGOjpT
dHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6
OnJ1bkphdmFTY3JpcHRQcm9tcHQoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBXVEY6OlN0cmlu
ZyYgbWVzc2FnZSwgY29uc3QgV1RGOjpTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgV2ViRnJhbWVQcm94
eSogd2ViRnJhbWVQcm94eSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlP
cmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2Vi
Vmlld1J1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHREZWZhdWx0VGV4dEluaXRp
YXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihTdHJpbmcoKSk7CkBAIC0zMzAsNyArMzMwLDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVu
dDo6cnVuSmF2YVNjcmlwdFByb21wdChXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYK
ICAgICB9CiAKICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2Vy
OjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcih3ZWJWaWV3OnJ1bkphdmFTY3JpcHRU
ZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQ6ZGVmYXVsdFRleHQ6aW5pdGlhdGVkQnlGcmFtZTpjb21w
bGV0aW9uSGFuZGxlcjopKTsKLSAgICBbZGVsZWdhdGUgd2ViVmlldzptX3VpRGVsZWdhdGUubV93
ZWJWaWV3IHJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQ6bWVzc2FnZSBkZWZh
dWx0VGV4dDpkZWZhdWx0VmFsdWUgaW5pdGlhdGVkQnlGcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJ
bmZvOjpjcmVhdGUoKndlYkZyYW1lUHJveHksIHNlY3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0eU9y
aWdpbigpKSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2Vy
KV0gKE5TU3RyaW5nICpyZXN1bHQpIG11dGFibGUgeworICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1f
dWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21w
dDptZXNzYWdlIGRlZmF1bHRUZXh0OmRlZmF1bHRWYWx1ZSBpbml0aWF0ZWRCeUZyYW1lOndyYXBw
ZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqd2ViRnJhbWVQcm94eSwgV1RGTW92ZShzZWN1cml0
eU9yaWdpbkRhdGEpLCBwYWdlKSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RG
TW92ZShjaGVja2VyKV0gKE5TU3RyaW5nICpyZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAo
Y2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CkBAIC0zNjIsNyArMzYy
LDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25m
aXJtKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHIKICAgICB9KS5nZXQoKV07CiB9CiAKLXZvaWQg
VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmIGZy
YW1lLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgRnVuY3Rpb248dm9pZChi
b29sKT4mIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVj
aWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQ
cm94eSYgcGFnZSwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiBmcmFtZSwgQVBJOjpTZWN1cml0eU9y
aWdpbiYgc2VjdXJpdHlPcmlnaW4sIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3
UmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lRGVjaXNpb25IYW5kbGVyKQogICAg
ICAgICByZXR1cm47CkBAIC0zNzIsNyArMzcyLDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVu
dDo6ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OlcK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJD
YWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IoX3dlYlZpZXc6cmVx
dWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lOmRlY2lzaW9uSGFuZGxlcjopKTsKLSAg
ICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdh
dGUubV93ZWJWaWV3IHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZTp3cmFwcGVy
KEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoZnJhbWUsIHNlY3VyaXR5T3JpZ2luLnNlY3VyaXR5T3Jp
Z2luKCkpKSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9
IHN0ZDo6ZXhjaGFuZ2UoY29tcGxldGlvbkhhbmRsZXIsIG51bGxwdHIpLCBjaGVja2VyID0gV1RG
TW92ZShjaGVja2VyKV0gKEJPT0wgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBbKGlkIDxXS1VJRGVs
ZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJl
cXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZv
OjpjcmVhdGUoZnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB7IHNlY3VyaXR5T3Jp
Z2luLnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpIH0sIHBhZ2UpKSBkZWNpc2lvbkhhbmRsZXI6bWFr
ZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UoY29tcGxldGlvbkhh
bmRsZXIsIG51bGxwdHIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJPT0wgcmVzdWx0
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVl
bkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjaGVja2VyLT5kaWRDYWxs
Q29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTM5Nyw3ICszOTcsNyBAQCBib29sIFVJRGVsZWdhdGU6
OlVJQ2xpZW50OjpjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKSBjb25zdAogICAgIHJl
dHVybiBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVy
OwogfQogCi12b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWwoV2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1l
UHJveHkqIHdlYkZyYW1lUHJveHksIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYg
c2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsIFdlYkZy
YW1lUHJveHkqIHdlYkZyYW1lUHJveHksIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNl
Y3VyaXR5T3JpZ2luRGF0YSwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVu
QmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2VJbml0aWF0ZWRCeUZyYW1lQ29tcGxl
dGlvbkhhbmRsZXIpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwpAQCAtNDEx
LDcgKzQxMSw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbChXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6CiAgICAgfQogCiAgICAgYXV0byBj
aGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdl
dCgpLCBAc2VsZWN0b3IoX3dlYlZpZXc6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1l
c3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjopKTsKLSAgICBbKGlkIDxX
S1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJW
aWV3IHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOm1lc3NhZ2UgaW5pdGlh
dGVkQnlGcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKndlYkZyYW1lUHJveHks
IHNlY3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpKSkgY29tcGxldGlvbkhhbmRsZXI6
bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJPT0wgcmVzdWx0KSBtdXRhYmxlIHsK
KyAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVs
ZWdhdGUubV93ZWJWaWV3IHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOm1l
c3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKndl
YkZyYW1lUHJveHksIFdURk1vdmUoc2VjdXJpdHlPcmlnaW5EYXRhKSwgcGFnZSkpIGNvbXBsZXRp
b25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildIChCT09MIHJlc3VsdCkg
bXV0YWJsZSB7CiAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5D
YWxsZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmVzdWx0KTsKQEAgLTgxMyw3ICs4MTMsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpk
ZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OgogICAg
IH0pLmdldCgpXTsKIH0KIAotYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuT3BlblBhbmVs
KFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHksIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW5EYXRhLCBBUEk6Ok9wZW5QYW5l
bFBhcmFtZXRlcnMqIG9wZW5QYW5lbFBhcmFtZXRlcnMsIFdlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyUHJveHkqIGxpc3RlbmVyKQorYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuT3BlblBh
bmVsKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcm94eSwgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW5EYXRhLCBBUEk6Ok9wZW5Q
YW5lbFBhcmFtZXRlcnMqIG9wZW5QYW5lbFBhcmFtZXRlcnMsIFdlYk9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyUHJveHkqIGxpc3RlbmVyKQogewogICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdh
dGVNZXRob2RzLndlYlZpZXdSdW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyc0luaXRpYXRlZEJ5RnJh
bWVDb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODIyLDcgKzgy
Miw3IEBAIGJvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbChXZWJQYWdlUHJv
eHkqLCBXZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByCiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBmcmFtZSA9IEFQSTo6RnJhbWVJbmZvOjpjcmVh
dGUoKndlYkZyYW1lUHJveHksIHNlY3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpKTsK
KyAgICBhdXRvIGZyYW1lID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqd2ViRnJhbWVQcm94eSwg
V1RGTW92ZShzZWN1cml0eU9yaWdpbkRhdGEpLCBwYWdlKTsKIAogICAgIGF1dG8gY2hlY2tlciA9
IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNl
bGVjdG9yKHdlYlZpZXc6cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlGcmFt
ZTpjb21wbGV0aW9uSGFuZGxlcjopKTsKIApAQCAtODQ4LDcgKzg0OCw3IEBAIGJvb2wgVUlEZWxl
Z2F0ZTo6VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbChXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5
KiB3ZWJGcmFtZVByCiAjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCi12
b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpzaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5k
TW90aW9uQWNjZXNzKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYgd2ViRnJh
bWVQcm94eSwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdp
bkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpzaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9u
QW5kTW90aW9uQWNjZXNzKFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5
JiB3ZWJGcmFtZVByb3h5LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9y
aWdpbkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IG1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgp
OwogICAgIGlmICghZGVsZWdhdGUpCkBAIC04NjAsNyArODYwLDcgQEAgdm9pZCBVSURlbGVnYXRl
OjpVSUNsaWVudDo6c2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzcyhX
ZWJLaXQ6OlcKICAgICB9CiAKICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNh
bGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcihfd2ViVmlldzpzaG91
bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzUmVxdWVzdGVkQnlGcmFtZTpk
ZWNpc2lvbkhhbmRsZXI6KSk7Ci0gICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdh
dGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBzaG91bGRBbGxvd0RldmljZU9yaWVu
dGF0aW9uQW5kTW90aW9uQWNjZXNzUmVxdWVzdGVkQnlGcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJ
bmZvOjpjcmVhdGUod2ViRnJhbWVQcm94eSwgc2VjdXJpdHlPcmlnaW5EYXRhLnNlY3VyaXR5T3Jp
Z2luKCkpKSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0g
KEJPT0wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4p
ZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBzaG91bGRBbGxvd0Rldmlj
ZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzUmVxdWVzdGVkQnlGcmFtZTp3cmFwcGVyKEFQSTo6
RnJhbWVJbmZvOjpjcmVhdGUod2ViRnJhbWVQcm94eSwgV1RGTW92ZShzZWN1cml0eU9yaWdpbkRh
dGEpLCBwYWdlKSkgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tl
cildIChCT09MIGdyYW50ZWQpIG11dGFibGUgewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxl
dGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMTI4MSw3ICsxMjgxLDcg
QEAgc3RhdGljIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQgd2ViQXV0aGVudGljYXRpb25Q
YW5lbFJlc3VsdChfV0tXZWJBdXRoZW50aWMKICAgICByZXR1cm4gV2ViQXV0aGVudGljYXRpb25Q
YW5lbFJlc3VsdDo6VW5hdmFpbGFibGU7CiB9CiAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6
OnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoV2ViUGFnZVByb3h5JiwgQVBJOjpXZWJBdXRoZW50
aWNhdGlvblBhbmVsJiBwYW5lbCwgV2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKFdlYlBh
Z2VQcm94eSYgcGFnZSwgQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsJiBwYW5lbCwgV2ViRnJh
bWVQcm94eSYgd2ViRnJhbWVQcm94eSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgb3Jp
Z2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdh
dGVNZXRob2RzLndlYlZpZXdSdW5XZWJBdXRoZW50aWNhdGlvblBhbmVsSW5pdGlhdGVkQnlGcmFt
ZUNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkF1dGhl
bnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlKTsKQEAgLTEyOTUsNyArMTI5NSw3IEBA
IHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoV2Vi
UGFnZVByb3h5JiwgQVBJOjpXZWJBdXRoCiAgICAgfQogCiAgICAgYXV0byBjaGVja2VyID0gQ29t
cGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0
b3IoX3dlYlZpZXc6cnVuV2ViQXV0aGVudGljYXRpb25QYW5lbDppbml0aWF0ZWRCeUZyYW1lOmNv
bXBsZXRpb25IYW5kbGVyOikpOwotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVn
YXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuV2ViQXV0aGVudGljYXRpb25Q
YW5lbDp3cmFwcGVyKHBhbmVsKSBpbml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUlu
Zm86OmNyZWF0ZSh3ZWJGcmFtZVByb3h5LCBvcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSkpIGNvbXBs
ZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildIChfV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsUmVzdWx0IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgWyhpZCA8V0tVSURl
bGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBy
dW5XZWJBdXRoZW50aWNhdGlvblBhbmVsOndyYXBwZXIocGFuZWwpIGluaXRpYXRlZEJ5RnJhbWU6
d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKHdlYkZyYW1lUHJveHksIFdURk1vdmUob3Jp
Z2luKSwgcGFnZSkpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hl
Y2tlcildIChfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0IHJlc3VsdCkgbXV0YWJsZSB7
CiAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25I
YW5kbGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25h
bFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQ
cm94eS5jcHAKaW5kZXggNjJmNTgxNTQ3NTg2NThhZTI1M2ZjMjAxOTlmNzE1ZWMwOWIxZDlkZC4u
MjE2YmU1YmZmMjBhNTU2NzA4ZjAwNTdmNGUzNTBkMTVmZjIwYTJiZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApAQCAtMjQyLDcgKzI0
Miw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lCiAgICAgbV9wYWdlLmRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgbmF2
aWdhdGlvbklELCBXVEZNb3ZlKHVybCksIFdURk1vdmUodW5yZWFjaGFibGVVUkwpLCB1c2VyRGF0
YSk7CiB9CiAKLXZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImIGVycm9yLCBXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5nIHdpbGxDb250aW51ZUxvYWRp
bmcsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6
OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGluZyB3
aWxsQ29udGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgaWYg
KCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRGYWlsUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSQogICAgIGlmIChhdXRv
KiBwYWdlTWFpbkZyYW1lID0gbV9wYWdlLm1haW5GcmFtZSgpKQogICAgICAgICBwYWdlTWFpbkZy
YW1lLT5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkKCk7CiAKLSAgICBtX3BhZ2UuZGlkRmFpbFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIGZy
YW1lU2VjdXJpdHlPcmlnaW4sIG5hdmlnYXRpb25JRCwgcHJvdmlzaW9uYWxVUkwsIGVycm9yLCB3
aWxsQ29udGludWVMb2FkaW5nLCB1c2VyRGF0YSk7IC8vIE1heSBkZWxldGUgfHRoaXN8LgorICAg
IG1fcGFnZS5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQobV9wcm9jZXNzLmNv
cHlSZWYoKSwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZVNlY3VyaXR5T3JpZ2luKSwgbmF2aWdhdGlv
bklELCBwcm92aXNpb25hbFVSTCwgZXJyb3IsIHdpbGxDb250aW51ZUxvYWRpbmcsIHVzZXJEYXRh
KTsgLy8gTWF5IGRlbGV0ZSB8dGhpc3wuCiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6
OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9t
Q29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3Vt
ZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2Vj
dXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtMjk4LDEzICsyOTgsMTMg
QEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbkFzeW5jKEZyYW1lSWRlbnRpZmllcgogICAgICAgICBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEp
LCBvcmlnaW5hdGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKHJlcXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEs
IGxpc3RlbmVySUQpOwogfQogCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVj
a0lkZW50aWZpZXIgaWRlbnRpZmllciwKK3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvclJlc3BvbnNlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVj
a0lkZW50aWZpZXIgaWRlbnRpZmllciwKICAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcm
IGRvd25sb2FkQXR0cmlidXRlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYg
dXNlckRhdGEpCiB7CiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25J
RCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZS5kZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgZnJhbWVJRCwgZnJhbWVT
ZWN1cml0eU9yaWdpbiwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVz
dCwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0ZSwgbGlzdGVuZXJJRCwgdXNlckRh
dGEpOworICAgIG1fcGFnZS5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3Mu
Y29weVJlZigpLCBtX3dlYlBhZ2VJRCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZVNlY3VyaXR5T3Jp
Z2luKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hv
d01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0ZSwgbGlzdGVuZXJJRCwgdXNlckRhdGEpOwogfQog
CiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxT
dHJpbmcsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKaW5kZXggN2RiY2VmOWQxZDU1MzVhODM1NGQ3YmFl
MGM2MDExYTBhNTFiOTEzNy4uY2I5NWZlMDEwZGM2NDJmY2RmNDYzMzdjM2ViYWU4MjIyZGYxMzI0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5o
CkBAIC05OCw3ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uQXN5bmMoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZyYW1lSW5mb0RhdGEmJiwK
ICAgICAgICAgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdl
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RC
b2R5LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25z
ZSwgY29uc3QgVXNlckRhdGEmLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKLSAgICB2b2lkIGRlY2lk
ZVBvbGljeUZvclJlc3BvbnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLAor
ICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVu
dGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmLAogICAgICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNh
blNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZENoYW5nZVByb3Zpc2lv
bmFsVVJMRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIFVSTCYmKTsKICAgICB2b2lkIGRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmlu
ZywgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKQEAgLTEwOCw3ICsxMDgsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkQ3JlYXRlTWFpbkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7
CiAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJiwgVVJMJiYgdW5yZWFjaGFi
bGVVUkwsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQz
Ml90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGJvb2wg
Y29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250
ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9p
ZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4s
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcs
IGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
JiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmlu
ZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3Jl
OjpXaWxsQ29udGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgc3RhcnRV
UkxTY2hlbWVUYXNrKFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgYmFja0Zv
cndhcmRHb1RvSXRlbShjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik+JiYpOwog
ICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaAppbmRl
eCA5ZTAxMmRjMjc1MmJjNjU0ZWZkNjU4ZDljYzI5YjBjODM3NjQyYmQ1Li5jMjFlYjllNzkyMDg1
YTI2MGRiOWNiNjIxM2MyOTVhN2Y5ZmI2MTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgK
QEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIGNsYXNzIENsaWVudCB7CiAgICAgcHVibGlj
OgogICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZFBvc3RNZXNzYWdlKFdlYlBhZ2VQcm94eSYsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBXZWJDb3Jl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRQ
b3N0TWVzc2FnZShXZWJQYWdlUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSYpID0gMDsKICAgICB9OwogCiAgICAgc3RhdGljIFJlZjxXZWJTY3Jp
cHRNZXNzYWdlSGFuZGxlcj4gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxDbGllbnQ+LCBjb25zdCBT
dHJpbmcmIG5hbWUsIEFQSTo6VXNlckNvbnRlbnRXb3JsZCYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkuY3BwCmluZGV4IDIyNGFkN2NmZTcyNzY4OTNiMjMxNWUxOTZmZDY2
M2UzOGZhNTNhZDkuLmQxMGU3YjVjMTI0NmJkZjliYjAzZWZhZWMwNGQxMDE2NDJhM2MwOTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTM1NCw3ICszNTQs
NyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyTWVz
c2FnZUhhbmRsZXJzKEFQSTo6VXNlckNvbnRlbgogICAgIHJlbW92ZVVzZXJDb250ZW50V29ybGRV
c2VzKHdvcmxkLCBudW1iZXJSZW1vdmVkKTsKIH0KIAotdm9pZCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlELCBjb25zdCBGcmFtZUluZm9EYXRhJiBm
cmFtZUluZm9EYXRhLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjpkaWRQb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgcGFnZVByb3h5SUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRh
LCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRh
dGFSZWZlcmVuY2UpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5
Ojp3ZWJQYWdlKHBhZ2VQcm94eUlEKTsKICAgICBpZiAoIXBhZ2UpCkBAIC0zNjcsNyArMzY3LDcg
QEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLAogICAgIGlmICghaGFuZGxlcikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaGFuZGxlci0+Y2xpZW50KCkuZGlkUG9zdE1lc3NhZ2UoKnBhZ2UsIGZyYW1l
SW5mb0RhdGEsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoZGF0YVJlZmVy
ZW5jZS52ZWN0b3IoKSkpOworICAgIGhhbmRsZXItPmNsaWVudCgpLmRpZFBvc3RNZXNzYWdlKCpw
YWdlLCBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmFkb3B0KGRhdGFSZWZlcmVuY2UudmVjdG9yKCkpKTsKIH0KIAogI2lmIEVOQUJMRShDT05U
RU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAppbmRl
eCAwNzgwYzBjMjJhYzVmODdjZTZiMDgwNzEwNjlkZTk0NmRhNTU5NzI4Li42NzFmYjI5MmQyMDE5
NjAzMzdiMDM4M2VkMDdiMjdmZGI5N2UyYzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5LmgKQEAgLTExNCw3ICsxMTQsNyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVz
c2FnZVJlY2VpdmVyLgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IEZyYW1lSW5mb0Rh
dGEmLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
KTsKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CiAKICAgICB2b2lkIGFkZFVzZXJDb250ZW50V29y
bGRVc2UoQVBJOjpVc2VyQ29udGVudFdvcmxkJik7CiAgICAgdm9pZCByZW1vdmVVc2VyQ29udGVu
dFdvcmxkVXNlcyhBUEk6OlVzZXJDb250ZW50V29ybGQmLCB1bnNpZ25lZCBudW1iZXJPZlVzZXNU
b1JlbW92ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5kZXggZThjNDBl
YjQ3ODk4Yzc3NGU1MzBkZTViMDQwZWU5NzA1Y2UwZWE5NS4uYmFhYmU4ZGVmMWQxMDI4YzUyZmFi
NzAxNDI2Mjg0NzcyN2VlYmU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNw
cApAQCAtMzM1LDcgKzMzNSw3IEBAIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OnJ1blBhbmVs
KCkKICAgICBhdXRvIHRyYW5zcG9ydHMgPSBnZXRUcmFuc3BvcnRzKCk7CiAgICAgbV9wZW5kaW5n
UmVxdWVzdERhdGEucGFuZWwgPSBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWw6OmNyZWF0ZSgq
dGhpcywgZ2V0UnBJZChvcHRpb25zKSwgdHJhbnNwb3J0cywgZ2V0Q2xpZW50RGF0YVR5cGUob3B0
aW9ucykpOwogICAgIGF1dG8mIHBhbmVsID0gKm1fcGVuZGluZ1JlcXVlc3REYXRhLnBhbmVsOwot
ICAgIHBhZ2UtPnVpQ2xpZW50KCkucnVuV2ViQXV0aGVudGljYXRpb25QYW5lbCgqcGFnZSwgcGFu
ZWwsICpmcmFtZSwgbV9wZW5kaW5nUmVxdWVzdERhdGEub3JpZ2luLCBbdHJhbnNwb3J0cyA9IFdU
Rk1vdmUodHJhbnNwb3J0cyksIHdlYWtQYW5lbCA9IG1ha2VXZWFrUHRyKHBhbmVsKSwgd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRoaXNdIChXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVz
dWx0IHJlc3VsdCkgeworICAgIHBhZ2UtPnVpQ2xpZW50KCkucnVuV2ViQXV0aGVudGljYXRpb25Q
YW5lbCgqcGFnZSwgcGFuZWwsICpmcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHsg
bV9wZW5kaW5nUmVxdWVzdERhdGEub3JpZ2luIH0sIFt0cmFuc3BvcnRzID0gV1RGTW92ZSh0cmFu
c3BvcnRzKSwgd2Vha1BhbmVsID0gbWFrZVdlYWtQdHIocGFuZWwpLCB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKSwgdGhpc10gKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQgcmVzdWx0
KSB7CiAgICAgICAgIC8vIFRoZSBwYW5lbCBhZGRyZXNzIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGlm
IHRoZSBjdXJyZW50IHBlbmRpbmcgcmVxdWVzdCBpcyBzdGlsbCB0aGUgc2FtZS4KICAgICAgICAg
aWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1BhbmVsCiAgICAgICAgICAgICB8fCAocmVzdWx0ID09IFdl
YkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OkRpZE5vdFByZXNlbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBmZDlkMzU0N2VmY2YxOTdhNDViZTcyODk1
MzcxMGI0ODFmOGQ1OWM5Li5lZDIyZDM3YjllODM5ODI4NzdmOTAxNmIyODcyN2UxN2U1MWQ5Y2Nm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTQyNDksMTcg
KzQyNDksMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9y
RnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJgogICAgIGZyYW1lLT5kaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQodXJsKTsKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yLCBXaWxsQ29udGludWVMb2FkaW5nIHdpbGxDb250aW51ZUxvYWRp
bmcsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWls
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFNlY3VyaXR5
T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Y29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Is
IFdpbGxDb250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEm
IHVzZXJEYXRhKQogewogICAgIGlmIChtX3Byb3Zpc2lvbmFsUGFnZSAmJiBtX3Byb3Zpc2lvbmFs
UGFnZS0+bmF2aWdhdGlvbklEKCkgPT0gbmF2aWdhdGlvbklEKSB7CiAgICAgICAgIC8vIFRoZSBs
b2FkIGRpZCBub3QgZmFpbCwgaXQgaXMgbWVyZWx5IGhhcHBlbmluZyBpbiBhIG5ldyBwcm92aXNp
b25hbCBwcm9jZXNzLgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZGlkRmFpbFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIGZy
YW1lU2VjdXJpdHlPcmlnaW4sIG5hdmlnYXRpb25JRCwgcHJvdmlzaW9uYWxVUkwsIGVycm9yLCB3
aWxsQ29udGludWVMb2FkaW5nLCB1c2VyRGF0YSk7CisgICAgZGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIFdURk1vdmUoZnJh
bWVTZWN1cml0eU9yaWdpbiksIG5hdmlnYXRpb25JRCwgcHJvdmlzaW9uYWxVUkwsIGVycm9yLCB3
aWxsQ29udGludWVMb2FkaW5nLCB1c2VyRGF0YSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiBwcm9jZXNzLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0
cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBXaWxsQ29u
dGludWVMb2FkaW5nIHdpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFy
ZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvciwgV2lsbENvbnRpbnVlTG9hZGluZyB3aWxsQ29udGludWVMb2FkaW5nLCBjb25z
dCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgTE9HKExvYWRpbmcsICIoTG9hZGluZykgV2Vi
UGFnZVByb3h5ICUiIFBSSXU2NCAiIGluIHdlYiBwcm9jZXNzIHBpZCAlaSBkaWRGYWlsUHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUgdG8gcHJvdmlzaW9uYWxVUkwgJXMiLCBtX2lkZW50aWZpZXIudG9V
SW50NjQoKSwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgcHJvdmlzaW9uYWxVUkwudXRm
OCgpLmRhdGEoKSk7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAiZGlkRmFp
bFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIGRvbWFpbiA9
ICVzLCBjb2RlID0gJWQiLCBmcmFtZUlELnRvVUludDY0KCksIGVycm9yLmRvbWFpbigpLnV0Zjgo
KS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKQEAgLTQzMDAsNyArNDMwMCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiBwCiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRmFpbFBy
b3Zpc2lvbmFsTmF2aWdhdGlvbldpdGhFcnJvcigqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdl
dCgpLCBlcnJvciwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5v
YmplY3QoKSkuZ2V0KCkpOwogICAgIGVsc2UgewogICAgICAgICAvLyBGSVhNRTogR2V0IHRoZSBt
YWluIGZyYW1lJ3MgY3VycmVudCBuYXZpZ2F0aW9uLgotICAgICAgICBtX25hdmlnYXRpb25DbGll
bnQtPmRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0aEVycm9yKCp0aGlzLCAqZnJh
bWUsIGZyYW1lU2VjdXJpdHlPcmlnaW4sIG51bGxwdHIsIGVycm9yLCBwcm9jZXNzLT50cmFuc2Zv
cm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgICAgIG1f
bmF2aWdhdGlvbkNsaWVudC0+ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJy
b3IoKnRoaXMsICpmcmFtZSwgV1RGTW92ZShmcmFtZVNlY3VyaXR5T3JpZ2luKSwgbnVsbHB0ciwg
ZXJyb3IsIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0
KCkpLmdldCgpKTsKICAgICB9CiAKICAgICBtX2ZhaWxpbmdQcm92aXNpb25hbExvYWRVUkwgPSB7
IH07CkBAIC00ODgzLDcgKzQ4ODMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAgICAg
ICBiZWdpblNhZmVCcm93c2luZ0NoZWNrKHJlcXVlc3QudXJsKCksIGZyYW1lLmlzTWFpbkZyYW1l
KCksIGxpc3RlbmVyKTsKIAogICAgIEFQSTo6TmF2aWdhdGlvbiogbWFpbkZyYW1lTmF2aWdhdGlv
biA9IGZyYW1lLmlzTWFpbkZyYW1lKCkgPyBuYXZpZ2F0aW9uLmdldCgpIDogbnVsbHB0cjsKLSAg
ICBXZWJGcmFtZVByb3h5KiBvcmlnaW5hdGluZ0ZyYW1lID0gb3JpZ2luYXRpbmdGcmFtZUluZm9E
YXRhLmZyYW1lSUQgPyBwcm9jZXNzLT53ZWJGcmFtZSgqb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRh
LmZyYW1lSUQpIDogbnVsbHB0cjsKKyAgICBXZWJGcmFtZVByb3h5KiBvcmlnaW5hdGluZ0ZyYW1l
ID0gb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmZyYW1lSUQgPyBwcm9jZXNzLT53ZWJGcmFtZShv
cmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCkgOiBudWxscHRyOwogCiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlID0gd2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
KSkKQEAgLTQ4OTQsMTIgKzQ4OTQsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICBp
ZiAobV9wb2xpY3lDbGllbnQpCiAgICAgICAgIG1fcG9saWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKCp0aGlzLCAmZnJhbWUsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlv
bkRhdGEpLCBvcmlnaW5hdGluZ0ZyYW1lLCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVz
dCksIFdURk1vdmUobGlzdGVuZXIpLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3Rz
KHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGF1dG8gZGVz
dGluYXRpb25GcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKGZyYW1lLCBmcmFtZVNl
Y3VyaXR5T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkpOworICAgICAgICBhdXRvIGRlc3RpbmF0aW9u
RnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShmcmFtZSwgV1RGTW92ZShmcmFtZVNl
Y3VyaXR5T3JpZ2luKSwgKnRoaXMpOwogICAgICAgICBSZWZQdHI8QVBJOjpGcmFtZUluZm8+IHNv
dXJjZUZyYW1lSW5mbzsKICAgICAgICAgaWYgKCFmcm9tQVBJICYmIG9yaWdpbmF0aW5nRnJhbWUg
PT0gJmZyYW1lKQogICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gZGVzdGluYXRpb25GcmFt
ZUluZm8uY29weVJlZigpOwogICAgICAgICBlbHNlIGlmICghZnJvbUFQSSkKLSAgICAgICAgICAg
IHNvdXJjZUZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUob3JpZ2luYXRpbmdGcmFt
ZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCA/IHByb2Nlc3MtPndlYlBhZ2UoKm9yaWdpbmF0
aW5nUGFnZUlEKSA6IG51bGxwdHIpOworICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJ
OjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSksIG9y
aWdpbmF0aW5nUGFnZUlEID8gKnByb2Nlc3MtPndlYlBhZ2UoKm9yaWdpbmF0aW5nUGFnZUlEKSA6
ICp0aGlzKTsKIAogICAgICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IHByb2Nlc3Mt
PnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRv
a2VuSWRlbnRpZmllcik7CiAgICAgICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIW1fc2hv
dWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbgpAQCAtNTAw
Nyw3ICs1MDA3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb25TeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHkKICAgICBzZW5kZXItPnNlbmQo
UG9saWN5QWN0aW9uOjpVc2UsIG5hdmlnYXRpb25JRCwgRG93bmxvYWRJRCgpLCBXVEY6Om51bGxv
cHQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0
aW9uKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZy
YW1lU2VjdXJpdHlPcmlnaW4sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAordm9p
ZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwg
UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCiAgICAgTmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29u
c3QgU3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRh
JiB1c2VyRGF0YSkKIHsKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xp
ZW50KCkpOwpAQCAtNTAzMyw3ICs1MDMzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QKICAg
ICBlbHNlIHsKICAgICAgICAgUmVmUHRyPEFQSTo6RnJhbWVJbmZvPiBzb3VyY2VGcmFtZUluZm87
CiAgICAgICAgIGlmIChmcmFtZSkKLSAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQSTo6
RnJhbWVJbmZvOjpjcmVhdGUoKmZyYW1lLCBmcmFtZVNlY3VyaXR5T3JpZ2luLnNlY3VyaXR5T3Jp
Z2luKCkpOworICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNy
ZWF0ZSgqZnJhbWUsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksICp0aGlzKTsKIAogICAg
ICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dXNlckluaXRpYXRl
ZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVy
KTsKICAgICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSBtX21haW5GcmFtZSA/ICFob3N0
c0FyZUVxdWFsKG1fbWFpbkZyYW1lLT51cmwoKSwgcmVxdWVzdC51cmwoKSkgOiBmYWxzZTsKQEAg
LTUwNDUsMTMgKzUwNDUsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QKICAgICAgICAgCiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKK3ZvaWQgV2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU2VjdXJp
dHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVy
IGlkZW50aWZpZXIsCiAgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNh
blNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIGRlY2lkZVBvbGlj
eUZvclJlc3BvbnNlU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBmcmFt
ZUlELCBmcmFtZVNlY3VyaXR5T3JpZ2luLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3Bv
bnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlLCBsaXN0ZW5l
cklELCB1c2VyRGF0YSk7CisgICAgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQobV9wcm9j
ZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1cml0
eU9yaWdpbiksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNh
blNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1dGUsIGxpc3RlbmVySUQsIHVzZXJEYXRhKTsK
IH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNl
Y3VyaXR5T3JpZ2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmIHByb2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFBvbGlj
eUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAogICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRy
aWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsK
ICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwpAQCAtNTA4
MCw3ICs1MDgwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNl
U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywKICAgICBpZiAobV9wb2xpY3lD
bGllbnQpCiAgICAgICAgIG1fcG9saWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZSgq
dGhpcywgKmZyYW1lLCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBXVEZNb3Zl
KGxpc3RlbmVyKSwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5v
YmplY3QoKSkuZ2V0KCkpOwogICAgIGVsc2UgewotICAgICAgICBhdXRvIG5hdmlnYXRpb25SZXNw
b25zZSA9IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlOjpjcmVhdGUoQVBJOjpGcmFtZUluZm86OmNy
ZWF0ZSgqZnJhbWUsIGZyYW1lU2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSkuZ2V0KCks
IHJlcXVlc3QsIHJlc3BvbnNlLCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlKTsK
KyAgICAgICAgYXV0byBuYXZpZ2F0aW9uUmVzcG9uc2UgPSBBUEk6Ok5hdmlnYXRpb25SZXNwb25z
ZTo6Y3JlYXRlKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKmZyYW1lLCBXVEZNb3ZlKGZyYW1lU2Vj
dXJpdHlPcmlnaW4pLCAqdGhpcykuZ2V0KCksIHJlcXVlc3QsIHJlc3BvbnNlLCBjYW5TaG93TUlN
RVR5cGUsIGRvd25sb2FkQXR0cmlidXRlKTsKICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5k
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UoKnRoaXMsIFdURk1vdmUobmF2aWdhdGlv
blJlc3BvbnNlKSwgV1RGTW92ZShsaXN0ZW5lciksIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNU
b09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKICAgICB9CiB9CkBAIC01MjE4LDEy
ICs1MjE4LDEzIEBAIHN0YXRpYyB2b2lkIHRyeVNPQXV0aG9yaXphdGlvbihSZWY8QVBJOjpOYXZp
Z2F0aW9uQWN0aW9uPiYmIG5hdmlnYXRpb25BY3Rpb24sIFdlCiAjZW5kaWYKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZvRGF0YSYgb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5h
dGluZ1BhZ2VJRCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2luZG93RmVhdHVyZXMmJiB3
aW5kb3dGZWF0dXJlcywgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0
YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZTo6RGVsYXllZFJlcGx5JiYg
cmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZShGcmFtZUluZm9EYXRhJiYg
b3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVy
PiBvcmlnaW5hdGluZ1BhZ2VJRCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2luZG93RmVh
dHVyZXMmJiB3aW5kb3dGZWF0dXJlcywgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9u
QWN0aW9uRGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZTo6RGVsYXll
ZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIG9yaWdpbmF0
aW5nRnJhbWVJbmZvRGF0YS5mcmFtZUlEKTsKLSAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2Vzcywg
bV9wcm9jZXNzLT53ZWJGcmFtZSgqb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmZyYW1lSUQpKTsK
KyAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgbV9wcm9jZXNzLT53ZWJGcmFtZShvcmlnaW5h
dGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCkpOwogCi0gICAgYXV0byBvcmlnaW5hdGluZ0ZyYW1l
SW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBt
X3Byb2Nlc3MtPndlYlBhZ2UoKm9yaWdpbmF0aW5nUGFnZUlEKSk7CisgICAgYXV0byogb3JpZ2lu
YXRpbmdQYWdlID0gbV9wcm9jZXNzLT53ZWJQYWdlKCpvcmlnaW5hdGluZ1BhZ2VJRCk7CisgICAg
YXV0byBvcmlnaW5hdGluZ0ZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92
ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEpLCBvcmlnaW5hdGluZ1BhZ2UgPyAqb3JpZ2luYXRp
bmdQYWdlIDogKnRoaXMpOwogICAgIGF1dG8gbWFpbkZyYW1lVVJMID0gbV9tYWluRnJhbWUgPyBt
X21haW5GcmFtZS0+dXJsKCkgOiBVUkwoKTsKICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0g
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWFpbkZyYW1lVVJMLCByZXF1
ZXN0LCByZXBseSA9IFdURk1vdmUocmVwbHkpXSAoUmVmUHRyPFdlYlBhZ2VQcm94eT4gbmV3UGFn
ZSkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghbmV3UGFnZSkgewpAQCAtNTI5Myw3ICs1Mjk0LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlUGFnZShib29sIHN0b3BSZXNwb25zaXZlbmVzc1Rp
bWVyKQogICAgIG1fdWlDbGllbnQtPmNsb3NlKHRoaXMpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydDo6RGVsYXllZFJlcGx5JiYg
cmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0QWxl
cnQ6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0g
bV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2Vz
cywgZnJhbWUpOwpAQCAtNTMwOSwxMCArNTMxMCwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVu
SmF2YVNjcmlwdEFsZXJ0KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9y
aQogICAgICAgICBpZiAoYXV0byogYXV0b21hdGlvblNlc3Npb24gPSBwcm9jZXNzKCkucHJvY2Vz
c1Bvb2woKS5hdXRvbWF0aW9uU2Vzc2lvbigpKQogICAgICAgICAgICAgYXV0b21hdGlvblNlc3Np
b24tPndpbGxTaG93SmF2YVNjcmlwdERpYWxvZygqdGhpcyk7CiAgICAgfQotICAgIG1fdWlDbGll
bnQtPnJ1bkphdmFTY3JpcHRBbGVydCh0aGlzLCBtZXNzYWdlLCBmcmFtZSwgc2VjdXJpdHlPcmln
aW4sIFdURk1vdmUocmVwbHkpKTsKKyAgICBtX3VpQ2xpZW50LT5ydW5KYXZhU2NyaXB0QWxlcnQo
KnRoaXMsIG1lc3NhZ2UsIGZyYW1lLCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSwgV1RGTW92ZShy
ZXBseSkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdENvbmZpcm0oRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlP
cmlnaW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVu
SmF2YVNjcmlwdENvbmZpcm06OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJv
eHk6OnJ1bkphdmFTY3JpcHRDb25maXJtKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTZWN1cml0
eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6RGVsYXllZFJlcGx5JiYg
cmVwbHkpCiB7CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1l
KGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBmcmFtZSk7CkBAIC01MzI5
LDEwICs1MzMwLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0Q29uZmlybShG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPCiAgICAgICAgICAgICBhdXRv
bWF0aW9uU2Vzc2lvbi0+d2lsbFNob3dKYXZhU2NyaXB0RGlhbG9nKCp0aGlzKTsKICAgICB9CiAK
LSAgICBtX3VpQ2xpZW50LT5ydW5KYXZhU2NyaXB0Q29uZmlybSh0aGlzLCBtZXNzYWdlLCBmcmFt
ZSwgc2VjdXJpdHlPcmlnaW4sIFdURk1vdmUocmVwbHkpKTsKKyAgICBtX3VpQ2xpZW50LT5ydW5K
YXZhU2NyaXB0Q29uZmlybSgqdGhpcywgbWVzc2FnZSwgZnJhbWUsIFdURk1vdmUoc2VjdXJpdHlP
cmlnaW4pLCBXVEZNb3ZlKHJlcGx5KSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZh
U2NyaXB0UHJvbXB0KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmlu
ZyYgZGVmYXVsdFZhbHVlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0UHJv
bXB0OjpEZWxheWVkUmVwbHkmJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2Ny
aXB0UHJvbXB0KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBz
ZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlZmF1
bHRWYWx1ZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdFByb21wdDo6RGVs
YXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nl
c3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBmcmFt
ZSk7CkBAIC01MzQ4LDcgKzUzNDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlw
dFByb21wdChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcgogICAgICAg
ICAgICAgYXV0b21hdGlvblNlc3Npb24tPndpbGxTaG93SmF2YVNjcmlwdERpYWxvZygqdGhpcyk7
CiAgICAgfQogCi0gICAgbV91aUNsaWVudC0+cnVuSmF2YVNjcmlwdFByb21wdCh0aGlzLCBtZXNz
YWdlLCBkZWZhdWx0VmFsdWUsIGZyYW1lLCBzZWN1cml0eU9yaWdpbiwgV1RGTW92ZShyZXBseSkp
OworICAgIG1fdWlDbGllbnQtPnJ1bkphdmFTY3JpcHRQcm9tcHQoKnRoaXMsIG1lc3NhZ2UsIGRl
ZmF1bHRWYWx1ZSwgZnJhbWUsIFdURk1vdmUoc2VjdXJpdHlPcmlnaW4pLCBXVEZNb3ZlKHJlcGx5
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTdGF0dXNUZXh0KGNvbnN0IFN0cmluZyYg
dGV4dCkKQEAgLTU0OTEsNyArNTQ5Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpyb290Vmlld1Rv
QWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBJbnRSZWN0JiB2aWV3UmVjdCwgQ29tcGxlCiAgICAg
Y29tcGxldGlvbkhhbmRsZXIocGFnZUNsaWVudCgpLnJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2Ny
ZWVuKHZpZXdSZWN0KSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxvYWRD
b25maXJtUGFuZWwoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOjpEZWxheWVkUmVwbHkmJiBy
ZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2lu
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbDo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgV2ViRnJh
bWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NB
R0VfQ0hFQ0sobV9wcm9jZXNzLCBmcmFtZSk7CkBAIC01NTA4LDcgKzU1MDksNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKEZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBjb25zdCBTZQogCiAgICAgLy8gU2luY2UgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsKCkgY2FuIHNwaW4gYSBuZXN0ZWQgcnVuIGxvb3Agd2UgbmVlZCB0byB0dXJuIG9mZiB0aGUg
cmVzcG9uc2l2ZW5lc3MgdGltZXIuCiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVy
KCkuc3RvcCgpOwotICAgIG1fdWlDbGllbnQtPnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCh0
aGlzLCBtZXNzYWdlLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW4sIFdURk1vdmUocmVwbHkpKTsKKyAg
ICBtX3VpQ2xpZW50LT5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKnRoaXMsIG1lc3NhZ2Us
IGZyYW1lLCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSwgV1RGTW92ZShyZXBseSkpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFZpZXdw
b3J0QXR0cmlidXRlcyYgYXR0cikKQEAgLTU1MzEsNyArNTUzMiw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpwYWdlRGlkU2Nyb2xsKCkKICNlbmRpZgogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVu
T3BlblBhbmVsKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIGNvbnN0IEZpbGVDaG9vc2VyU2V0dGluZ3MmIHNldHRp
bmdzKQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bk9wZW5QYW5lbChGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgY29uc3QgRmls
ZUNob29zZXJTZXR0aW5ncyYgc2V0dGluZ3MpCiB7CiAgICAgaWYgKG1fb3BlblBhbmVsUmVzdWx0
TGlzdGVuZXIpIHsKICAgICAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0
ZSgpOwpAQCAtNTU1NSw3ICs1NTU2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bk9wZW5QYW5l
bChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXQKICAgICAv
LyBTaW5jZSBydW5PcGVuUGFuZWwoKSBjYW4gc3BpbiBhIG5lc3RlZCBydW4gbG9vcCB3ZSBuZWVk
IHRvIHR1cm4gb2ZmIHRoZSByZXNwb25zaXZlbmVzcyB0aW1lci4KICAgICBtX3Byb2Nlc3MtPnJl
c3BvbnNpdmVuZXNzVGltZXIoKS5zdG9wKCk7CiAKLSAgICBpZiAoIW1fdWlDbGllbnQtPnJ1bk9w
ZW5QYW5lbCh0aGlzLCBmcmFtZSwgZnJhbWVTZWN1cml0eU9yaWdpbiwgcGFyYW1ldGVycy5wdHIo
KSwgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5nZXQoKSkpIHsKKyAgICBpZiAoIW1fdWlDbGll
bnQtPnJ1bk9wZW5QYW5lbCgqdGhpcywgZnJhbWUsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdp
biksIHBhcmFtZXRlcnMucHRyKCksIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuZ2V0KCkpKSB7
CiAgICAgICAgIGlmICghcGFnZUNsaWVudCgpLmhhbmRsZVJ1bk9wZW5QYW5lbCh0aGlzLCBmcmFt
ZSwgcGFyYW1ldGVycy5wdHIoKSwgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5nZXQoKSkpCiAg
ICAgICAgICAgICBkaWRDYW5jZWxGb3JPcGVuUGFuZWwoKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGM2YzM2ZjM1NDhmMzg1NzE4ZmM4NGFiYzI0MWZl
ZTA5N2UyM2JiYjkuLjAwNjAyOWM5MjZhNjlhNGEzNzE3YzFjNGI0Y2U2ZThjN2QxMDBmMTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNTQyLDcgKzE1NDIsNyBA
QCBwdWJsaWM6CiAKICAgICAvLyBMb2dpYyBzaGFyZWQgYmV0d2VlbiB0aGUgV2ViUGFnZVByb3h5
IGFuZCB0aGUgUHJvdmlzaW9uYWxQYWdlUHJveHkuCiAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJiwgVVJMJiYgdW5yZWFj
aGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJp
dHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25h
bFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6OldpbGxDb250aW51
ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkws
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpXaWxsQ29udGludWVMb2Fk
aW5nLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkUGVyZm9y
bVNlcnZlclJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkUGVyZm9ybUNsaWVudFJlZGly
ZWN0U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
U3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIpOwpAQCAtMTU1MSw3ICsxNTUxLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNv
cmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwKICAgICAgICAgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYlBh
Z2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
CiAgICAgICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWlu
dDY0X3QgbGlzdGVuZXJJRCk7Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJl
ZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZy
YW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwKKyAgICB2
b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBv
bGljeUNoZWNrSWRlbnRpZmllciwKICAgICAgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1
dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBzdGFy
dFVSTFNjaGVtZVRhc2tTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgbG9hZERh
dGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgQVBJOjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3Qg
U3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdU
Rjo6bnVsbG9wdCwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNv
cmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKQEAgLTE2
NzIsNyArMTY3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUNsaWVudFJlZGly
ZWN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVybCwg
ZG91YmxlIGRlbGF5LCBXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0KTsKICAgICB2b2lkIGRp
ZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsK
ICAgICB2b2lkIGRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmKTsKLSAgICB2b2lkIGRpZEZh
aWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGluZywgY29uc3Qg
VXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92
aXNpb25hbFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6OldpbGxD
b250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkaWRDb21taXRMb2Fk
Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlk
ZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5m
byYsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5z
ZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7
CiAgICAgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2
b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTE3MDcsOSArMTcwNyw5IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKICAgICAgICAgRnJhbWVJbmZv
RGF0YSYmLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJv
ZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
LCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25TeW5jRGVsYXllZFJlcGx5JiYpOwotICAgIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVy
LCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAorICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2lu
ZG93QWN0aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgTmF2aWdhdGlvbkFjdGlv
bkRhdGEmJiwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFN0cmlu
ZyYgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwotICAg
IHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lk
ZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZv
clJlc3BvbnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdh
dGlvbklELAogICAgICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0
cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJE
YXRhJik7CiAgICAgdm9pZCB1bmFibGVUb0ltcGxlbWVudFBvbGljeShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBVc2VyRGF0YSYp
OwogICAgIHZvaWQgYmVnaW5TYWZlQnJvd3NpbmdDaGVjayhjb25zdCBVUkwmLCBib29sLCBXZWJG
cmFtZVBvbGljeUxpc3RlbmVyUHJveHkmKTsKQEAgLTE3MjcsMTEgKzE3MjcsMTEgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZFVwZGF0ZUhpc3RvcnlUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBj
b25zdCBTdHJpbmcmIHVybCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKIAogICAgIC8vIFVJ
IGNsaWVudAotICAgIHZvaWQgY3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiwgT3B0
aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYmLCBOYXZpZ2F0aW9u
QWN0aW9uRGF0YSYmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlRGVsYXll
ZFJlcGx5JiYpOworICAgIHZvaWQgY3JlYXRlTmV3UGFnZShGcmFtZUluZm9EYXRhJiYsIE9wdGlv
bmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmJiwgTmF2aWdhdGlvbkFj
dGlvbkRhdGEmJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZURlbGF5ZWRS
ZXBseSYmKTsKICAgICB2b2lkIHNob3dQYWdlKCk7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0QWxl
cnQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmLCBjb25zdCBTdHJpbmcmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2Ny
aXB0QWxlcnREZWxheWVkUmVwbHkmJik7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYsIGNvbnN0IFN0cmluZyYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRD
b25maXJtRGVsYXllZFJlcGx5JiYpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdFByb21wdChXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYs
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1
bkphdmFTY3JpcHRQcm9tcHREZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0
QWxlcnQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmJiwgY29uc3QgU3RyaW5nJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlw
dEFsZXJ0RGVsYXllZFJlcGx5JiYpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgY29u
c3QgU3RyaW5nJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdENvbmZpcm1E
ZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRQ
cm9tcHREZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBzZXRTdGF0dXNUZXh0KGNvbnN0IFN0cmlu
ZyYpOwogICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViSGl0VGVzdFJlc3VsdERh
dGEmJiwgdWludDMyX3QgbW9kaWZpZXJzLCBVc2VyRGF0YSYmKTsKIApAQCAtMTc1NCwxMCArMTc1
NCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcm9vdFZpZXdUb1NjcmVlbihjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiB2aWV3UmVjdCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Um9vdFZpZXdUb1Nj
cmVlbkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RW
aWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzY3JlZW5Qb2ludCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpJbnRQb2ludCk+JiYpOwogICAgIHZvaWQgcm9vdFZpZXdUb0FjY2Vz
c2liaWxpdHlTY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdmlld1JlY3QsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6SW50UmVjdCk+JiYpOwotICAgIHZvaWQgcnVuQmVmb3Jl
VW5sb2FkQ29uZmlybVBhbmVsKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxEZWxheWVkUmVwbHkmJik7
CisgICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxE
ZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29u
c3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJik7CiAgICAgdm9pZCBwYWdlRGlkU2Nyb2xs
KCk7Ci0gICAgdm9pZCBydW5PcGVuUGFuZWwoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpGaWxlQ2hvb3Nl
clNldHRpbmdzJik7CisgICAgdm9pZCBydW5PcGVuUGFuZWwoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgY29uc3QgV2ViQ29yZTo6RmlsZUNo
b29zZXJTZXR0aW5ncyYpOwogICAgIHZvaWQgc2hvd1NoYXJlU2hlZXQoY29uc3QgV2ViQ29yZTo6
U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYsIFNoYXJlU2hlZXRDYWxsYmFja0lEKTsKICAgICB2b2lk
IHByaW50RnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgZXhjZWVkZWREYXRhYmFzZVF1b3RhKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVu
dFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRh
YmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpFeGNlZWRlZERhdGFiYXNlUXVvdGFEZWxheWVkUmVwbHkmJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1v
dGlvbkFjY2Vzc0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2ViRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyLmNwcApp
bmRleCBmODVkZDU3NjcwZmRlOWQzMzkxZTFiZjZkMTdkZTAyYTU0MWI0NDkzLi5jY2NhODMzYTk2
OWNkNTg4ZmI5MmRhOWM0NTU3Mzg2NmZlZjM4MjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vz
c0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlci5jcHAKQEAgLTQ4
LDcgKzQ4LDcgQEAgdm9pZCBXZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRy
b2xsZXI6OnNob3VsZEFsbG93QWNjZXNzKFdlYlBhZ2VQcm8KICAgICBpZiAocGVuZGluZ1JlcXVl
c3RzLnNpemUoKSA+IDEpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBhZ2UudWlDbGllbnQoKS5z
aG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzKHBhZ2UsIGZyYW1lLCBv
cmlnaW5EYXRhLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgb3JpZ2luRGF0
YV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICBwYWdlLnVpQ2xpZW50KCkuc2hvdWxkQWxs
b3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzcyhwYWdlLCBmcmFtZSwgV1RGTW92ZShv
cmlnaW5EYXRhKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIG9yaWdpbkRh
dGFdKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIG1fZGV2aWNlT3JpZW50YXRpb25QZXJtaXNzaW9uRGVj
aXNpb25zLnNldChvcmlnaW5EYXRhLCBncmFudGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCmluZGV4IDcwYmE2
NzhhNzk1M2I2MmQxZmY1YjU1YjI3MTgxYWY0YTBiNWYwMGEuLjgzZjBiNmQxY2I0N2UyZTc4ZWY1
ZDI4NDFmY2MzYTYwZmQzMTlkMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQpAQCAtMTg2LDcgKzE4Niw3IEBA
IHN0YXRpYyB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShXS0dlb2xvY2F0aW9uTWFuYWdlclJl
ZiBnZW9sb2NhdGlvbk1hbmFnZXIsIGJvCiAgICAgICAgIGlkPFdLVUlEZWxlZ2F0ZVByaXZhdGU+
IHVpRGVsZWdhdGUgPSBzdGF0aWNfY2FzdDxpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4+KFtyZXF1
ZXN0LnZpZXcgVUlEZWxlZ2F0ZV0pOwogICAgICAgICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0
aW9uRm9yVVJMOmZyYW1lOmRlY2lzaW9uSGFuZGxlcjopXSkgewogICAgICAgICAgICAgVVJMIHJl
cXVlc3RGcmFtZVVSTChVUkwoKSwgcmVxdWVzdC5mcmFtZS0+dXJsKCkpOwotICAgICAgICAgICAg
UmV0YWluUHRyPFdLRnJhbWVJbmZvPiBmcmFtZUluZm8gPSB3cmFwcGVyKEFQSTo6RnJhbWVJbmZv
OjpjcmVhdGUoKnJlcXVlc3QuZnJhbWUuZ2V0KCksICpyZXF1ZXN0Lm9yaWdpbi5nZXQoKSkpOwor
ICAgICAgICAgICAgUmV0YWluUHRyPFdLRnJhbWVJbmZvPiBmcmFtZUluZm8gPSB3cmFwcGVyKEFQ
STo6RnJhbWVJbmZvOjpjcmVhdGUoKnJlcXVlc3QuZnJhbWUuZ2V0KCksIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSB7IHJlcXVlc3Qub3JpZ2luLT5kYXRhKCkgfSwgKnJlcXVlc3Qudmlldy0+
X3BhZ2UpKTsKICAgICAgICAgICAgIGF1dG8gY2hlY2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhh
bmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKHVpRGVsZWdhdGUsIEBzZWxlY3Rvcihfd2ViVmlldzpy
ZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uRm9yVVJMOmZyYW1lOmRlY2lzaW9uSGFuZGxl
cjopKTsKICAgICAgICAgICAgIFdLV2ViVmlldyAqdmlld0Zyb21SZXF1ZXN0ID0gcmVxdWVzdC52
aWV3LmdldCgpOwogICAgICAgICAgICAgW3VpRGVsZWdhdGUgX3dlYlZpZXc6dmlld0Zyb21SZXF1
ZXN0IHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6cmVxdWVzdEZyYW1lVVJM
IGZyYW1lOmZyYW1lSW5mby5nZXQoKSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtyZXF1
ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildKEJPT0wg
YXV0aG9yaXplZCkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383577</attachid>
            <date>2019-11-14 15:17:34 -0800</date>
            <delta_ts>2019-11-14 15:26:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204199-20191114151733.patch</filename>
            <type>text/plain</type>
            <size>102943</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQyODEzNGU1OWJmYmU3NjQz
NDM1NzIwYzBmMjdjOGVmYjZhZjU3MTAuLmI2ZTk2N2RlZTYxOTI0N2NkODk5Nzc0ZWE4NDIyNzdm
NjQ0YjRiOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMTktMTEtMTQgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBXS0ZyYW1lSW5m
by53ZWJWaWV3IHNob3VsZCBub3QgcmV0dXJuIG5pbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSXQgaXMgbWFya2VkIGFzIHJldHVybmluZyBub24tbnVs
bC4gIExldCdzIG1ha2UgdGhhdCB0cnVlLgorICAgICAgICBBbHNvLCByZW1vdmUgYSBmZXcgY29w
aWVzIG9mIHNlY3VyaXR5IG9yaWdpbiBkYXRhLgorCisgICAgICAgICogU2hhcmVkL0ZyYW1lSW5m
b0RhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUluZm9EYXRhOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9GcmFtZUluZm9EYXRhLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElGcmFtZUluZm8uY3BwOgorICAgICAgICAoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSk6CisgICAg
ICAgIChBUEk6OkZyYW1lSW5mbzo6RnJhbWVJbmZvKToKKyAgICAgICAgKEFQSTo6RnJhbWVJbmZv
Ojp+RnJhbWVJbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6RnJhbWVJbmZvOjpjbGVhclBh
Z2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgIChB
UEk6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0
aEVycm9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50Lmg6CisgICAgICAg
IChBUEk6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoQVBJOjpVSUNs
aWVudDo6cnVuSmF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6cnVu
SmF2YVNjcmlwdFByb21wdCk6CisgICAgICAgIChBUEk6OlVJQ2xpZW50OjpydW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWwpOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6cnVuT3BlblBhbmVsKToK
KyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNwcDoKKyAgICAgICAgKFdLRnJhbWVDcmVh
dGVGcmFtZUluZm8pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAg
ICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VOYXZp
Z2F0aW9uQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJbmZv
Lm1tOgorICAgICAgICAoLVtXS0ZyYW1lSW5mbyB3ZWJWaWV3XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpO
YXZpZ2F0aW9uQ2xpZW50OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJv
cik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRBbGVydCk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVs
ZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChXZWJLaXQ6
OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFdl
YktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6
cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6
OlVJQ2xpZW50OjpydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25h
bFBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdl
YktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6ZGlkUG9zdE1l
c3NhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdG9yTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JN
YW5hZ2VyOjpydW5QYW5lbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWVTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnJ1bkphdmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpydW5KYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnJ1bk9wZW5QYW5lbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorCiAyMDE5LTExLTEzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbIGlPUyBdOiBMYXlvdXQgVGVzdCBodHRwL3Rlc3RzL0luZGV4ZWREQi9zdG9yYWdl
LWxpbWl0LTEuaHR0cHMuaHRtbCBpcyBhIEZsYWt5IEZhaWx1cmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
RnJhbWVJbmZvRGF0YS5jcHAKaW5kZXggZWQwM2JhNDhhYjk0NTE5YjkxZTQ0MGMyMzQxNWZhYzQx
MGRjZDdiMy4uMWZhNDZmYWI2OWE2Y2YzMTE1ZGFkZDZmOTE0NzEwNGVmZWYyNTU3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRnJhbWVJbmZvRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvRnJhbWVJbmZvRGF0YS5jcHAKQEAgLTM4LDI1ICszOCwzNCBAQCB2b2lk
IEZyYW1lSW5mb0RhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAg
ZW5jb2RlciA8PCBmcmFtZUlEOwogfQogCi1ib29sIEZyYW1lSW5mb0RhdGE6OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIsIEZyYW1lSW5mb0RhdGEmIHJlc3VsdCkKK09wdGlvbmFsPEZyYW1l
SW5mb0RhdGE+IEZyYW1lSW5mb0RhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaXNNYWluRnJhbWUpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucmVxdWVzdCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBPcHRpb25hbDxib29sPiBpc01haW5GcmFtZTsKKyAg
ICBkZWNvZGVyID4+IGlzTWFpbkZyYW1lOworICAgIGlmICghaXNNYWluRnJhbWUpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3Q+IHJlcXVlc3Q7CisgICAgZGVjb2RlciA+PiByZXF1ZXN0OworICAgIGlmICghcmVxdWVz
dCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgIE9wdGlvbmFsPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YT4gc2VjdXJpdHlPcmlnaW47CiAgICAgZGVjb2RlciA+PiBzZWN1
cml0eU9yaWdpbjsKICAgICBpZiAoIXNlY3VyaXR5T3JpZ2luKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgcmVzdWx0LnNlY3VyaXR5T3JpZ2luID0gV1RGTW92ZSgqc2VjdXJpdHlPcmlnaW4p
OwotICAgIAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4+
IGZyYW1lSUQ7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQ7CiAgICAgZGVjb2RlciA+PiBmcmFtZUlE
OwogICAgIGlmICghZnJhbWVJRCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdC5m
cmFtZUlEID0gV1RGTW92ZSgqZnJhbWVJRCk7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4ge3sKKyAgICAgICAgV1RGTW92ZSgqaXNN
YWluRnJhbWUpLAorICAgICAgICBXVEZNb3ZlKCpyZXF1ZXN0KSwKKyAgICAgICAgV1RGTW92ZSgq
c2VjdXJpdHlPcmlnaW4pLAorICAgICAgICBXVEZNb3ZlKCpmcmFtZUlEKQorICAgIH19OwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9GcmFtZUluZm9EYXRhLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9GcmFtZUluZm9EYXRhLmgKaW5kZXggNTM4NzE2ZWIyMWViNTQw
YTQxNzc5YzdlNmI4ZmZkNDM1MmZiYzEzYS4uMTM1NGI1MmQ4NWZiMTk4ZDk5YWMxNTlmNTNjNWE4
NjIyMGU3ZTAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRnJhbWVJbmZvRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEuaApAQCAtMzgsMTIg
KzM4LDEyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgRnJhbWVJbmZvRGF0YSB7CiAg
ICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIGJvb2wgZGVj
b2RlKElQQzo6RGVjb2RlciYsIEZyYW1lSW5mb0RhdGEmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8
RnJhbWVJbmZvRGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiAgICAgYm9vbCBpc01haW5G
cmFtZSB7IGZhbHNlIH07CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Q7CiAg
ICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luOwotICAgIE9wdGlv
bmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRDsKKyAgICBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUZyYW1lSW5mby5jcHAKaW5kZXggODI5NzI4YjkxZDYxYWEyNjA0NzVlMmExYzkxZDI0
MjBlOTc4NjBmYi4uNzU3NjlmN2FlNTA3YzUxMDg2NzE3ZmNkMWQ0ZjI1OTc5YjdmMmJkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKQEAgLTMzLDQw
ICszMywzMSBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIAotUmVmPEZyYW1lSW5mbz4gRnJhbWVJbmZv
OjpjcmVhdGUoY29uc3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhJiBmcmFtZUluZm9EYXRhLCBXZWJL
aXQ6OldlYlBhZ2VQcm94eSogcGFnZSkKK1JlZjxGcmFtZUluZm8+IEZyYW1lSW5mbzo6Y3JlYXRl
KFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIFdlYktpdDo6V2ViUGFnZVBy
b3h5JiBwYWdlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYW1lSW5mbyhmcmFtZUlu
Zm9EYXRhLCBwYWdlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhbWVJbmZvKFdURk1v
dmUoZnJhbWVJbmZvRGF0YSksIHBhZ2UpKTsKIH0KIAotUmVmPEZyYW1lSW5mbz4gRnJhbWVJbmZv
OjpjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKQorUmVmPEZyYW1lSW5mbz4gRnJhbWVJ
bmZvOjpjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiBmcmFtZSwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW4sIFdlYktpdDo6V2ViUGFnZVByb3h5
JiBwYWdlKQogewotICAgIFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm9EYXRhOwotCi0g
ICAgZnJhbWVJbmZvRGF0YS5pc01haW5GcmFtZSA9IGZyYW1lLmlzTWFpbkZyYW1lKCk7Ci0gICAg
Ly8gRklYTUU6IFRoaXMgc2hvdWxkIHVzZSB0aGUgZnVsbCByZXF1ZXN0IG9mIHRoZSBmcmFtZSwg
bm90IGp1c3QgdGhlIFVSTC4KLSAgICBmcmFtZUluZm9EYXRhLnJlcXVlc3QgPSBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QoZnJhbWUudXJsKCkpOwotICAgIGZyYW1lSW5mb0RhdGEuc2VjdXJpdHlP
cmlnaW4gPSBzZWN1cml0eU9yaWdpbi5kYXRhKCk7Ci0gICAgZnJhbWVJbmZvRGF0YS5mcmFtZUlE
ID0gZnJhbWUuZnJhbWVJRCgpOwotCi0gICAgcmV0dXJuIGNyZWF0ZShmcmFtZUluZm9EYXRhLCBm
cmFtZS5wYWdlKCkpOworICAgIFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm9EYXRhIHsK
KyAgICAgICAgZnJhbWUuaXNNYWluRnJhbWUoKSwKKyAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0KGZyYW1lLnVybCgpKSwgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHVzZSB0aGUgZnVsbCBy
ZXF1ZXN0IG9mIHRoZSBmcmFtZSwgbm90IGp1c3QgdGhlIFVSTC4KKyAgICAgICAgV1RGTW92ZShz
ZWN1cml0eU9yaWdpbiksCisgICAgICAgIGZyYW1lLmZyYW1lSUQoKQorICAgIH07CisgICAgcmV0
dXJuIGNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBwYWdlKTsKIH0KIAotRnJhbWVJbmZv
OjpGcmFtZUluZm8oY29uc3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhJiBmcmFtZUluZm9EYXRhLCBX
ZWJLaXQ6OldlYlBhZ2VQcm94eSogcGFnZSkKK0ZyYW1lSW5mbzo6RnJhbWVJbmZvKGNvbnN0IFdl
YktpdDo6RnJhbWVJbmZvRGF0YSYgZnJhbWVJbmZvRGF0YSwgV2ViS2l0OjpXZWJQYWdlUHJveHkm
IHBhZ2UpCiAgICAgOiBtX2lzTWFpbkZyYW1lIHsgZnJhbWVJbmZvRGF0YS5pc01haW5GcmFtZSB9
CiAgICAgLCBtX3JlcXVlc3QgeyBmcmFtZUluZm9EYXRhLnJlcXVlc3QgfQogICAgICwgbV9zZWN1
cml0eU9yaWdpbiB7IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoZnJhbWVJbmZvRGF0YS5zZWN1cml0
eU9yaWdpbi5zZWN1cml0eU9yaWdpbigpKSB9Ci0gICAgLCBtX2hhbmRsZSB7IEFQSTo6RnJhbWVI
YW5kbGU6OmNyZWF0ZShmcmFtZUluZm9EYXRhLmZyYW1lSUQgPyAqZnJhbWVJbmZvRGF0YS5mcmFt
ZUlEIDogV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyeyB9KSB9Ci0gICAgLCBtX3BhZ2UgeyBtYWtl
UmVmUHRyKHBhZ2UpIH0KKyAgICAsIG1faGFuZGxlIHsgQVBJOjpGcmFtZUhhbmRsZTo6Y3JlYXRl
KGZyYW1lSW5mb0RhdGEuZnJhbWVJRCkgfQorICAgICwgbV9wYWdlIHsgcGFnZSB9CiB7CiB9CiAK
LUZyYW1lSW5mbzo6fkZyYW1lSW5mbygpCi17Ci19Ci0KLXZvaWQgRnJhbWVJbmZvOjpjbGVhclBh
Z2UoKQotewotICAgIG1fcGFnZSA9IG51bGxwdHI7Ci19CitGcmFtZUluZm86On5GcmFtZUluZm8o
KSA9IGRlZmF1bHQ7CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUZyYW1lSW5mby5oCmluZGV4IDk3OTNkZWM4MmM2OGRhMmQyNWI1MmVmNTZmZWZh
YTlhYzlmMmEyMzkuLjI1MmQ4M2IwMzUzMTY5ZTI3ZWY0YmFlMmM4ZWRmYWQ5NmZhZmQwN2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmgKQEAgLTI5LDcgKzI5
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7Ci1jbGFzcyBTZWN1cml0eU9yaWdpbjsKK3N0cnVjdCBTZWN1cml0eU9yaWdpbkRh
dGE7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDUsMjYgKzQ1LDI0IEBAIGNsYXNzIFNl
Y3VyaXR5T3JpZ2luOwogCiBjbGFzcyBGcmFtZUluZm8gZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1w
bDxPYmplY3Q6OlR5cGU6OkZyYW1lSW5mbz4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RnJh
bWVJbmZvPiBjcmVhdGUoY29uc3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhJiwgV2ViS2l0OjpXZWJQ
YWdlUHJveHkqKTsKLSAgICBzdGF0aWMgUmVmPEZyYW1lSW5mbz4gY3JlYXRlKGNvbnN0IFdlYktp
dDo6V2ViRnJhbWVQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJik7CisgICAg
c3RhdGljIFJlZjxGcmFtZUluZm8+IGNyZWF0ZShXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJiwgV2Vi
S2l0OjpXZWJQYWdlUHJveHkmKTsKKyAgICBzdGF0aWMgUmVmPEZyYW1lSW5mbz4gY3JlYXRlKGNv
bnN0IFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYm
LCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwogICAgIHZpcnR1YWwgfkZyYW1lSW5mbygpOwogCiAg
ICAgYm9vbCBpc01haW5GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNNYWluRnJhbWU7IH0KICAg
ICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QoKSBjb25zdCB7IHJldHVy
biBtX3JlcXVlc3Q7IH0KICAgICBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSB7IHJl
dHVybiBtX3NlY3VyaXR5T3JpZ2luLmdldCgpOyB9CiAgICAgQVBJOjpGcmFtZUhhbmRsZSYgaGFu
ZGxlKCkgeyByZXR1cm4gbV9oYW5kbGUuZ2V0KCk7IH0KLSAgICBXZWJLaXQ6OldlYlBhZ2VQcm94
eSogcGFnZSgpIHsgcmV0dXJuIG1fcGFnZS5nZXQoKTsgfQotCi0gICAgdm9pZCBjbGVhclBhZ2Uo
KTsKKyAgICBXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSgpIHsgcmV0dXJuIG1fcGFnZS5nZXQo
KTsgfQogCiBwcml2YXRlOgotICAgIEZyYW1lSW5mbyhjb25zdCBXZWJLaXQ6OkZyYW1lSW5mb0Rh
dGEmLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSopOworICAgIEZyYW1lSW5mbyhjb25zdCBXZWJLaXQ6
OkZyYW1lSW5mb0RhdGEmLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwogCiAgICAgYm9vbCBtX2lz
TWFpbkZyYW1lOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CiAgICAg
UmVmPFNlY3VyaXR5T3JpZ2luPiBtX3NlY3VyaXR5T3JpZ2luOwogICAgIFJlZjxGcmFtZUhhbmRs
ZT4gbV9oYW5kbGU7Ci0gICAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBtX3BhZ2U7Cisg
ICAgUmVmPFdlYktpdDo6V2ViUGFnZVByb3h5PiBtX3BhZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNs
aWVudC5oCmluZGV4IDk0ZGEzMmYwOGJlZGQ5NTQxMzQ3NDcwZDUyMmViNTA1MjU0MjUzOGYuLmJj
ZjhhMjAwOTAzNTE4YzI5OWI4MWRlZjNmOTM0ODE5NjNhNDFiYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaApAQCAtODMsNyArODMs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0
IFdURjo6U3RyaW5nJiBkZXN0aW5hdGlvblVSTCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENh
bmNlbENsaWVudFJlZGlyZWN0KFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25XaXRoRXJyb3IoV2ViS2l0OjpXZWJQ
YWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBOYXZpZ2F0aW9uKiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYsIE9iamVjdCopIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihXZWJLaXQ6OldlYlBhZ2VQcm94
eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYsIE5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgT2JqZWN0
KikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1l
V2l0aEVycm9yKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5Jiwg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIE5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiwgT2JqZWN0KikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1p
dE5hdmlnYXRpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBOYXZpZ2F0aW9uKiwgT2JqZWN0Kikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZChXZWJLaXQ6OldlYlBh
Z2VQcm94eSYsIE5hdmlnYXRpb24qLCBPYmplY3QqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmluaXNoTmF2aWdhdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIE5hdmlnYXRpb24qLCBPYmpl
Y3QqKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKaW5kZXgg
ZmRlZGZlNDYwMmFkN2Y3ZjUzYWMzMWY4YWNmMWE0NWZmNzA3Njg5OC4uZDkyMmJlMGIxZjdlM2Nm
YTU2MmNjZjlkNDI4OGQ2NDJmOWU1Y2ZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVVJQ2xpZW50LmgKQEAgLTk0LDkgKzk0LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBmb2N1cyhXZWJLaXQ6OldlYlBhZ2VQcm94eSopIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1bmZv
Y3VzKFdlYktpdDo6V2ViUGFnZVByb3h5KikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2
YVNjcmlwdEFsZXJ0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBX
ZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
LCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5k
bGVyKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViS2l0OjpX
ZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSos
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZvaWQgKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsgfQotICAg
IHZpcnR1YWwgdm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KFdlYktpdDo6V2ViUGFnZVByb3h5Kiwg
Y29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQ
cm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZvaWQg
KGNvbnN0IFdURjo6U3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhh
bmRsZXIoV1RGOjpTdHJpbmcoKSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdEFs
ZXJ0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6Oldl
YkZyYW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgRnVuY3Rpb248dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBj
b25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSB7IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsgfQorICAgIHZpcnR1YWwgdm9pZCBydW5KYXZh
U2NyaXB0UHJvbXB0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBj
b25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpTdHJpbmcoKSk7IH0KIAog
ICAgIHZpcnR1YWwgdm9pZCBzZXRTdGF0dXNUZXh0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29u
c3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVs
ZW1lbnQoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJLaXQ6OldlYkhpdFRlc3RSZXN1
bHREYXRhJiwgT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVyPiwgT2JqZWN0Kikg
eyB9CkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dG
cmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6RmxvYXRS
ZWN0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcih7IH0pOyB9CiAK
ICAgICB2aXJ0dWFsIGJvb2wgY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmly
bVBhbmVsKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6
OldlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBGdW5j
dGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxl
cih0cnVlKTsgfQorICAgIHZpcnR1YWwgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwo
V2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJh
bWVQcm94eSosIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBGdW5jdGlvbjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOyB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFNjcm9sbChXZWJLaXQ6OldlYlBhZ2VQcm94eSopIHsg
fQogCkBAIC0xMzYsNyArMTM2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBuZWVkc0Zv
bnRBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2hhbmdlRm9udEF0dHJpYnV0ZXMoY29uc3QgV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXMmKSB7
IH0KIAotICAgIHZpcnR1YWwgYm9vbCBydW5PcGVuUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkq
LCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmLCBPcGVuUGFuZWxQYXJhbWV0ZXJzKiwgV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclByb3h5KikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcnVuT3BlblBh
bmVsKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIE9wZW5QYW5lbFBhcmFtZXRlcnMqLCBXZWJLaXQ6Oldl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdl
YktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgU2VjdXJpdHlPcmln
aW4mLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYs
IFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFNlY3VyaXR5T3JpZ2luJiwgU2VjdXJpdHlPcmlnaW4m
LCBXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmIHJlcXVlc3QpIHsgcmVx
dWVzdC5kZW55KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9u
Rm9yT3JpZ2luKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5Jiwg
U2VjdXJpdHlPcmlnaW4mLCBTZWN1cml0eU9yaWdpbiYsIFdlYktpdDo6VXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrUHJveHkmIHJlcXVlc3QpIHsgcmVxdWVzdC5kZW55KCk7IH0KQEAgLTE4Myw3ICsx
ODMsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04p
Ci0gICAgdmlydHVhbCB2b2lkIHNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25B
Y2Nlc3MoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmIHdlYkZy
YW1lUHJveHksIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRs
ZXIoZmFsc2UpOyB9CisgICAgdmlydHVhbCB2b2lkIHNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRp
b25BbmRNb3Rpb25BY2Nlc3MoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1l
UHJveHkmIHdlYkZyYW1lUHJveHksIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRp
b25IYW5kbGVyKGZhbHNlKTsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xpY2tB
dXRvRmlsbEJ1dHRvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIE9iamVjdCopIHsgfQpAQCAtMTk3
LDcgKzE5Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2hvd1NhZmVCcm93c2lu
Z1dhcm5pbmcoKSB7IH0KIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0gICAgdmlydHVhbCB2b2lk
IHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJBdXRo
ZW50aWNhdGlvblBhbmVsJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OldlYkF1
dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRp
b25IYW5kbGVyKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFi
bGUpOyB9CisgICAgdmlydHVhbCB2b2lkIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoV2ViS2l0
OjpXZWJQYWdlUHJveHkmLCBXZWJBdXRoZW50aWNhdGlvblBhbmVsJiwgV2ViS2l0OjpXZWJGcmFt
ZVByb3h5JiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxSZXN1bHQ6OlVuYXZhaWxhYmxlKTsgfQogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLRnJhbWUuY3BwCmluZGV4IGE4NTYyZWE3ZjY1NjdkYjNhYzMwNmY3N2I5
MTAzYjk4MzRhYWJhMGMuLjk1NTYyMDUxODc1NGY3ZWIwY2U4N2Y0ZTc3YjMxYTlkNGYyNjZhNGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuY3BwCkBAIC0xMzQsNyAr
MTM0LDEwIEBAIFdLRnJhbWVIYW5kbGVSZWYgV0tGcmFtZUNyZWF0ZUZyYW1lSGFuZGxlKFdLRnJh
bWVSZWYgZnJhbWVSZWYpCiAKIFdLRnJhbWVJbmZvUmVmIFdLRnJhbWVDcmVhdGVGcmFtZUluZm8o
V0tGcmFtZVJlZiBmcmFtZVJlZikKIHsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6RnJhbWVJbmZv
OjpjcmVhdGUoKnRvSW1wbChmcmFtZVJlZiksIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVh
dGVGcm9tU3RyaW5nKHRvSW1wbChmcmFtZVJlZiktPnVybCgpKSkubGVha1JlZigpKTsKKyAgICBh
dXRvKiBwYWdlID0gdG9JbXBsKGZyYW1lUmVmKS0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHRvQVBJKCZBUEk6OkZyYW1lSW5mbzo6
Y3JlYXRlKCp0b0ltcGwoZnJhbWVSZWYpLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgeyBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh0b0ltcGwoZnJhbWVSZWYp
LT51cmwoKSktPmRhdGEoKSB9LCAqcGFnZSkubGVha1JlZigpKTsKIH0KIAogdm9pZCBXS0ZyYW1l
R2V0TWFpblJlc291cmNlRGF0YShXS0ZyYW1lUmVmIGZyYW1lUmVmLCBXS0ZyYW1lR2V0UmVzb3Vy
Y2VEYXRhRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA0NDYzNzI1MWRmZjVhMTkxNzNiYmFjNDdhNDMx
NWEzZmYyZjhmNmI0Li43Mzg0OWU4YzIyODRkMGM3MjEzMDA5NDkxZWYyOTBmMmY3NWUyYzI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTE1ODgsMjQgKzE1
ODgsMjQgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNv
bnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgICAgIG1fY2xpZW50LnVu
Zm9jdXModG9BUEkocGFnZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0K
IAotICAgICAgICB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChXZWJQYWdlUHJveHkqIHBhZ2UsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIGZpbmFsCisgICAgICAgIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdlYlBh
Z2VQcm94eSYgcGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFt
ZSwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlm
IChtX2NsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnQpIHsKICAgICAgICAgICAgICAgICBSZWZQdHI8
UnVuSmF2YVNjcmlwdEFsZXJ0UmVzdWx0TGlzdGVuZXI+IGxpc3RlbmVyID0gUnVuSmF2YVNjcmlw
dEFsZXJ0UmVzdWx0TGlzdGVuZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiAgICAgICAgICAgICAgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3Jp
Z2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNlY3VyaXR5T3JpZ2luRGF0YS5wcm90
b2NvbCwgc2VjdXJpdHlPcmlnaW5EYXRhLmhvc3QsIHNlY3VyaXR5T3JpZ2luRGF0YS5wb3J0KTsK
LSAgICAgICAgICAgICAgICBtX2NsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnQodG9BUEkocGFnZSks
IHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShzZWN1cml0eU9yaWdp
bi5nZXQoKSksIHRvQVBJKGxpc3RlbmVyLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnQodG9BUEkoJnBh
Z2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoc2VjdXJpdHlP
cmlnaW4uZ2V0KCkpLCB0b0FQSShsaXN0ZW5lci5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBpZiAobV9jbGllbnQucnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjUpIHsKICAgICAgICAgICAgICAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJp
dHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoc2VjdXJpdHlPcmlnaW5EYXRh
LnByb3RvY29sLCBzZWN1cml0eU9yaWdpbkRhdGEuaG9zdCwgc2VjdXJpdHlPcmlnaW5EYXRhLnBv
cnQpOwotICAgICAgICAgICAgICAgIG1fY2xpZW50LnJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNh
dGVkRm9yVXNlV2l0aFY1KHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJ
KGZyYW1lKSwgdG9BUEkoc2VjdXJpdHlPcmlnaW4uZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworICAgICAgICAgICAgICAgIG1fY2xpZW50LnJ1bkphdmFTY3JpcHRBbGVydF9kZXBy
ZWNhdGVkRm9yVXNlV2l0aFY1KHRvQVBJKCZwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0
b0FQSShmcmFtZSksIHRvQVBJKHNlY3VyaXR5T3JpZ2luLmdldCgpKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAg
ICAgaWYgKG1fY2xpZW50LnJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFYw
KSB7Ci0gICAgICAgICAgICAgICAgbV9jbGllbnQucnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjAodG9BUEkocGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEko
ZnJhbWUpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgICAgIG1fY2xp
ZW50LnJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKHRvQVBJKCZwYWdl
KSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0xNjE0LDI1ICsxNjE0LDI1IEBAIHZv
aWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VV
SUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwog
ICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybShXZWJQYWdlUHJv
eHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgICAgICB2b2lkIHJ1bkphdmFT
Y3JpcHRDb25maXJtKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBX
ZWJGcmFtZVByb3h5KiBmcmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW5E
YXRhLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAobV9jbGllbnQucnVuSmF2YVNjcmlwdENvbmZpcm0pIHsK
ICAgICAgICAgICAgICAgICBSZWZQdHI8UnVuSmF2YVNjcmlwdENvbmZpcm1SZXN1bHRMaXN0ZW5l
cj4gbGlzdGVuZXIgPSBSdW5KYXZhU2NyaXB0Q29uZmlybVJlc3VsdExpc3RlbmVyOjpjcmVhdGUo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICAgICAgICAgIFJlZlB0cjxBUEk6
OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShzZWN1cml0eU9yaWdpbkRhdGEucHJvdG9jb2wsIHNlY3VyaXR5T3JpZ2luRGF0YS5ob3N0
LCBzZWN1cml0eU9yaWdpbkRhdGEucG9ydCk7Ci0gICAgICAgICAgICAgICAgbV9jbGllbnQucnVu
SmF2YVNjcmlwdENvbmZpcm0odG9BUEkocGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9B
UEkoZnJhbWUpLCB0b0FQSShzZWN1cml0eU9yaWdpbi5nZXQoKSksIHRvQVBJKGxpc3RlbmVyLmdl
dCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVu
dC5ydW5KYXZhU2NyaXB0Q29uZmlybSh0b0FQSSgmcGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgp
KSwgdG9BUEkoZnJhbWUpLCB0b0FQSShzZWN1cml0eU9yaWdpbi5nZXQoKSksIHRvQVBJKGxpc3Rl
bmVyLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5ydW5KYXZh
U2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFY1KSB7CiAgICAgICAgICAgICAgICAg
UmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKHNlY3VyaXR5T3JpZ2luRGF0YS5wcm90b2NvbCwgc2VjdXJpdHlPcmln
aW5EYXRhLmhvc3QsIHNlY3VyaXR5T3JpZ2luRGF0YS5wb3J0KTsKLSAgICAgICAgICAgICAgICBi
b29sIHJlc3VsdCA9IG1fY2xpZW50LnJ1bkphdmFTY3JpcHRDb25maXJtX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjUodG9BUEkocGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJhbWUp
LCB0b0FQSShzZWN1cml0eU9yaWdpbi5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
CisgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBtX2NsaWVudC5ydW5KYXZhU2NyaXB0Q29u
ZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFY1KHRvQVBJKCZwYWdlKSwgdG9BUEkobWVzc2FnZS5p
bXBsKCkpLCB0b0FQSShmcmFtZSksIHRvQVBJKHNlY3VyaXR5T3JpZ2luLmdldCgpKSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG1fY2xpZW50LnJ1bkphdmFT
Y3JpcHRDb25maXJtX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjApIHsKLSAgICAgICAgICAgICAgICBi
b29sIHJlc3VsdCA9IG1fY2xpZW50LnJ1bkphdmFTY3JpcHRDb25maXJtX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjAodG9BUEkocGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJhbWUp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0
ID0gbV9jbGllbnQucnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZvclVzZVdpdGhWMCh0
b0FQSSgmcGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwogCiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmVzdWx0KTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xNjQxLDE4ICsxNjQxLDE4IEBA
IHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1Bh
Z2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihm
YWxzZSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHJ1bkphdmFTY3JpcHRQcm9tcHQoV2Vi
UGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVm
YXVsdFZhbHVlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JiBzZWN1cml0eU9yaWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgICAgIHZvaWQgcnVuSmF2YVNjcmlwdFByb21wdChX
ZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBk
ZWZhdWx0VmFsdWUsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBTZWN1cml0eU9yaWdpbkRhdGEmJiBz
ZWN1cml0eU9yaWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5y
dW5KYXZhU2NyaXB0UHJvbXB0KSB7CiAgICAgICAgICAgICAgICAgUmVmUHRyPFJ1bkphdmFTY3Jp
cHRQcm9tcHRSZXN1bHRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBSdW5KYXZhU2NyaXB0UHJvbXB0UmVz
dWx0TGlzdGVuZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAg
ICAgICAgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJ
OjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNlY3VyaXR5T3JpZ2luRGF0YS5wcm90b2NvbCwgc2Vj
dXJpdHlPcmlnaW5EYXRhLmhvc3QsIHNlY3VyaXR5T3JpZ2luRGF0YS5wb3J0KTsKLSAgICAgICAg
ICAgICAgICBtX2NsaWVudC5ydW5KYXZhU2NyaXB0UHJvbXB0KHRvQVBJKHBhZ2UpLCB0b0FQSSht
ZXNzYWdlLmltcGwoKSksIHRvQVBJKGRlZmF1bHRWYWx1ZS5pbXBsKCkpLCB0b0FQSShmcmFtZSks
IHRvQVBJKHNlY3VyaXR5T3JpZ2luLmdldCgpKSwgdG9BUEkobGlzdGVuZXIuZ2V0KCkpLCBtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgICAgIG1fY2xpZW50LnJ1bkphdmFT
Y3JpcHRQcm9tcHQodG9BUEkoJnBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGRl
ZmF1bHRWYWx1ZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIHRvQVBJKHNlY3VyaXR5T3JpZ2luLmdl
dCgpKSwgdG9BUEkobGlzdGVuZXIuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYg
KG1fY2xpZW50LnJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSkgewog
ICAgICAgICAgICAgICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdp
biA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShzZWN1cml0eU9yaWdpbkRhdGEucHJvdG9j
b2wsIHNlY3VyaXR5T3JpZ2luRGF0YS5ob3N0LCBzZWN1cml0eU9yaWdpbkRhdGEucG9ydCk7Ci0g
ICAgICAgICAgICAgICAgUmVmUHRyPEFQSTo6U3RyaW5nPiBzdHJpbmcgPSBhZG9wdFJlZih0b0lt
cGwobV9jbGllbnQucnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1KHRv
QVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGRlZmF1bHRWYWx1ZS5pbXBs
KCkpLCB0b0FQSShmcmFtZSksIHRvQVBJKHNlY3VyaXR5T3JpZ2luLmdldCgpKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKSkpOworICAgICAgICAgICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4g
c3RyaW5nID0gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LnJ1bkphdmFTY3JpcHRQcm9tcHRfZGVw
cmVjYXRlZEZvclVzZVdpdGhWNSh0b0FQSSgmcGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwg
dG9BUEkoZGVmYXVsdFZhbHVlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoc2VjdXJpdHlP
cmlnaW4uZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKSk7CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgaWYgKHN0cmluZykKICAgICAgICAgICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoc3RyaW5nLT5zdHJpbmcoKSk7CkBAIC0xNjYyLDcgKzE2NjIsNyBAQCB2
b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdl
VUlDbGllbnRCYXNlKiB3a0NsaWVudAogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBpZiAobV9jbGllbnQucnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNl
V2l0aFYwKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPEFQSTo6U3RyaW5nPiBzdHJpbmcgPSBh
ZG9wdFJlZih0b0ltcGwobV9jbGllbnQucnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9y
VXNlV2l0aFYwKHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGRlZmF1
bHRWYWx1ZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykp
KTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8QVBJOjpTdHJpbmc+IHN0cmluZyA9IGFkb3B0UmVm
KHRvSW1wbChtX2NsaWVudC5ydW5KYXZhU2NyaXB0UHJvbXB0X2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjAodG9BUEkoJnBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGRlZmF1bHRWYWx1
ZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpKTsKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoc3RyaW5nKQogICAgICAgICAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdHJpbmctPnN0cmluZygpKTsKQEAgLTE4MTQsMTYg
KzE4MTQsMTYgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYs
IGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgICAgIHJldHVybiBt
X2NsaWVudC5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxfZGVwcmVjYXRlZEZvclVzZVdpdGhW
NiB8fCBtX2NsaWVudC5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw7CiAgICAgICAgIH0KIAot
ICAgICAgICB2b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChXZWJLaXQ6OldlYlBhZ2VQ
cm94eSogcGFnZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsIFdlYktpdDo6V2ViRnJhbWVQ
cm94eSogZnJhbWUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgICAgIHZvaWQgcnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsKFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBXVEY6OlN0
cmluZyYgbWVzc2FnZSwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiBmcmFtZSwgU2VjdXJpdHlPcmln
aW5EYXRhJiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFs
CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5ydW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWwpIHsKICAgICAgICAgICAgICAgICBSZWZQdHI8UnVuQmVmb3JlVW5sb2FkQ29uZmly
bVBhbmVsUmVzdWx0TGlzdGVuZXI+IGxpc3RlbmVyID0gUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsUmVzdWx0TGlzdGVuZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0g
ICAgICAgICAgICAgICAgbV9jbGllbnQucnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKHRvQVBJ
KHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgdG9BUEkobGlzdGVu
ZXIuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgICAgIG1f
Y2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCh0b0FQSSgmcGFnZSksIHRvQVBJKG1l
c3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShsaXN0ZW5lci5nZXQoKSksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBpZiAobV9jbGllbnQucnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjYpIHsKLSAgICAgICAgICAgICAgICBib29sIHJlc3Vs
dCA9IG1fY2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbF9kZXByZWNhdGVkRm9yVXNl
V2l0aFY2KHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9
IG1fY2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbF9kZXByZWNhdGVkRm9yVXNlV2l0
aFY2KHRvQVBJKCZwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIocmVzdWx0KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0x
ODQ5LDEyICsxODQ5LDEyIEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBw
YWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihtX2NsaWVudC5leGNlZWRlZERhdGFiYXNlUXVvdGEodG9BUEkocGFn
ZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkob3JpZ2luKSwgdG9BUEkoZGF0YWJhc2VOYW1lLmltcGwo
KSksIHRvQVBJKGRhdGFiYXNlRGlzcGxheU5hbWUuaW1wbCgpKSwgY3VycmVudFF1b3RhLCBjdXJy
ZW50T3JpZ2luVXNhZ2UsIGN1cnJlbnREYXRhYmFzZVVzYWdlLCBleHBlY3RlZFVzYWdlLCBtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pKTsKICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgcnVuT3Bl
blBhbmVsKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEFQSTo6T3BlblBhbmVsUGFyYW1ldGVycyogcGFy
YW1ldGVycywgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSogbGlzdGVuZXIpIGZpbmFs
CisgICAgICAgIGJvb2wgcnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQ
cm94eSogZnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBBUEk6Ok9wZW5QYW5l
bFBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkq
IGxpc3RlbmVyKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LnJ1
bk9wZW5QYW5lbCkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAg
IG1fY2xpZW50LnJ1bk9wZW5QYW5lbCh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShw
YXJhbWV0ZXJzKSwgdG9BUEkobGlzdGVuZXIpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwor
ICAgICAgICAgICAgbV9jbGllbnQucnVuT3BlblBhbmVsKHRvQVBJKCZwYWdlKSwgdG9BUEkoZnJh
bWUpLCB0b0FQSShwYXJhbWV0ZXJzKSwgdG9BUEkobGlzdGVuZXIpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIApAQCAtMTkw
Niw3ICsxOTA2LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VS
ZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgfQogCiAjaWYg
RU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKLSAgICAgICAgdm9pZCBzaG91bGRBbGxvd0Rldmlj
ZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQ
cm94eSYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luRGF0YSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAg
ICAgICAgdm9pZCBzaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzKFdl
YlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYmIG9yaWdpbkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQu
c2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzcykKICAgICAgICAgICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwpAQCAtMjA3Niw3ICsyMDc2LDcg
QEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdL
UGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAgICAg
ICAgIC8vIFRoZSBjdXJyZW50IG1ldGhvZCBpcyBzcGVjaWFsaXplZCBmb3IgV2ViS2l0VGVzdFJ1
bm5lci4KLSAgICAgICAgdm9pZCBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKFdlYlBhZ2VQcm94
eSYsIEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYsIFdlYkZyYW1lUHJveHkmLCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktp
dDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZp
bmFsCisgICAgICAgIHZvaWQgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbChXZWJQYWdlUHJveHkm
LCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmLCBXZWJGcmFtZVByb3h5JiwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpXZWJB
dXRoZW50aWNhdGlvblBhbmVsUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKICAg
ICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5ydW5XZWJBdXRoZW50aWNhdGlvblBh
bmVsKSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpXZWJBdXRo
ZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSk7CkBAIC0yMTYwLDExICsyMTYwLDEx
IEBAIHZvaWQgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYs
IGNvbnN0IFdLUGFnZU5hdmlnYXRpb25DbGllCiAgICAgICAgICAgICBtX2NsaWVudC5kaWRGYWls
TmF2aWdhdGlvbih0b0FQSSgmcGFnZSksIHRvQVBJKG5hdmlnYXRpb24pLCB0b0FQSShlcnJvciks
IHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQog
Ci0gICAgICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3Io
V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBzdWJmcmFtZSwgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEsIEFQSTo6TmF2aWdhdGlv
biogbmF2aWdhdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6
T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9u
YWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJv
eHkmIHN1YmZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdp
bkRhdGEsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYgZXJyb3IsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJm
cmFtZSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRG
YWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZSh0b0FQSSgmcGFnZSksIHRvQVBJKG5hdmlnYXRp
b24pLCB0b0FQSShBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKHN1YmZyYW1lLCBzZWN1cml0eU9yaWdp
bkRhdGEuc2VjdXJpdHlPcmlnaW4oKSkucHRyKCkpLCB0b0FQSShlcnJvciksIHRvQVBJKHVzZXJE
YXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRp
ZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lKHRvQVBJKCZwYWdlKSwgdG9BUEkobmF2aWdh
dGlvbiksIHRvQVBJKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoc3ViZnJhbWUsIFdURk1vdmUoc2Vj
dXJpdHlPcmlnaW5EYXRhKSwgcGFnZSkucHRyKCkpLCB0b0FQSShlcnJvciksIHRvQVBJKHVzZXJE
YXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCiAgICAgICAgIHZv
aWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkKFdlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpOYXZpZ2F0
aW9uKiBuYXZpZ2F0aW9uLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGcmFtZUluZm8ubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGcmFtZUluZm8ubW0KaW5kZXggNjBl
YmYxM2Q5M2I3ODc1NWZjNzg5MzFjOThlZTg5YWNjMDhkMDU4NC4uNjZiMWE2MzNkZGNjNTQ5ZWNm
MjAyNDU1MGU3NjdmNjY5NDY4NmRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLRnJhbWVJbmZvLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0ZyYW1lSW5mby5tbQpAQCAtNjEsOSArNjEsNyBAQAogCiAtIChXS1dlYlZp
ZXcgKil3ZWJWaWV3CiB7Ci0gICAgaWYgKFdlYktpdDo6V2ViUGFnZVByb3h5KiBwYWdlID0gX2Zy
YW1lSW5mby0+cGFnZSgpKQotICAgICAgICByZXR1cm4gW1tmcm9tV2ViUGFnZVByb3h5KCpwYWdl
KSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBbW2Zy
b21XZWJQYWdlUHJveHkoX2ZyYW1lSW5mby0+cGFnZSgpKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsK
IH0KIAogLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xs
ZXIubW0KaW5kZXggYTAwYjIwM2NjOTA1OTMwMWJlY2M0NjFkNjFiNDY3MzJiODU2MTJmZC4uNmY2
NzhmMzRkZDU2OWJjOTM0Yzk2MWUzMTlmOWE0NjdlYTU3NGQyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJv
bGxlci5tbQpAQCAtMTI3LDEwICsxMjcsMTAgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAg
Ci0gICAgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSwgY29u
c3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhJiBmcmFtZUluZm9EYXRhLCBXZWJDb3JlOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkgb3ZlcnJpZGUKKyAgICB2b2lk
IGRpZFBvc3RNZXNzYWdlKFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJLaXQ6OkZyYW1l
SW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUm
IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEBhdXRvcmVs
ZWFzZXBvb2wgewotICAgICAgICAgICAgUmV0YWluUHRyPFdLRnJhbWVJbmZvPiBmcmFtZUluZm8g
PSB3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoZnJhbWVJbmZvRGF0YSwgJnBhZ2UpKTsK
KyAgICAgICAgICAgIFJldGFpblB0cjxXS0ZyYW1lSW5mbz4gZnJhbWVJbmZvID0gd3JhcHBlcihB
UEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvRGF0YSksIHBhZ2UpKTsKICAg
ICAgICAgICAgIGlkIGJvZHkgPSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxp
emUoc2VyaWFsaXplZFNjcmlwdFZhbHVlLCAwKTsKICAgICAgICAgICAgIGF1dG8gbWVzc2FnZSA9
IGFkb3B0TlMoW1tXS1NjcmlwdE1lc3NhZ2UgYWxsb2NdIF9pbml0V2l0aEJvZHk6Ym9keSB3ZWJW
aWV3OmZyb21XZWJQYWdlUHJveHkocGFnZSkgZnJhbWVJbmZvOmZyYW1lSW5mby5nZXQoKSBuYW1l
Om1fbmFtZS5nZXQoKV0pOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAppbmRleCBiZjdmOTVkN2Y2ZDgwZjNjYjcw
ZGQ2NTNlNGRmYjI4ZTAwMjdkMzBkLi40NzgwMTM0MmVhNjA5MmZiNWVjYWU4Mjc1NzI4MDM5NTk0
Y2Q0YjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRVSUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0VUlDbGllbnQuY3BwCkBAIC03NiwyNCArNzYsMjQgQEAgcHJpdmF0ZToKICAgICAgICAgd2Vi
a2l0V2ViVmlld0Nsb3NlUGFnZShtX3dlYlZpZXcpOwogICAgIH0KIAotICAgIHZvaWQgcnVuSmF2
YVNjcmlwdEFsZXJ0KFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgV2ViRnJh
bWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRB
bGVydChXZWJQYWdlUHJveHkmLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkq
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSBmaW5hbAogICAgIHsKICAgICAgICAgd2Via2l0V2ViVmlld1J1bkphdmFT
Y3JpcHRBbGVydChtX3dlYlZpZXcsIG1lc3NhZ2UudXRmOCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiAgICAgfQogCi0gICAgdm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybShXZWJQYWdl
UHJveHkqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBmaW5hbAorICAgIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViUGFnZVBy
b3h5JiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5KiwgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIGZpbmFsCiAgICAgewogICAgICAgICB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdENvbmZp
cm0obV93ZWJWaWV3LCBtZXNzYWdlLnV0ZjgoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgIH0KIAotICAgIHZvaWQgcnVuSmF2YVNjcmlwdFByb21wdChXZWJQYWdlUHJveHkqLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlLCBXZWJGcmFt
ZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgRnVuY3Rpb248dm9p
ZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAgICB2b2lkIHJ1
bkphdmFTY3JpcHRQcm9tcHQoV2ViUGFnZVByb3h5JiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgV2ViRnJhbWVQcm94eSosIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBmaW5hbAogICAgIHsKICAgICAgICAgd2Via2l0V2ViVmlld1J1bkphdmFTY3Jp
cHRQcm9tcHQobV93ZWJWaWV3LCBtZXNzYWdlLnV0ZjgoKSwgZGVmYXVsdFZhbHVlLnV0ZjgoKSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0KIAogICAgIGJvb2wgY2FuUnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0g
ICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV2ViUGFnZVByb3h5KiwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmlu
YWwKKyAgICB2b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChXZWJQYWdlUHJveHkmLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmlu
YWwKICAgICB7CiAgICAgICAgIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0QmVmb3JlVW5sb2Fk
Q29uZmlybShtX3dlYlZpZXcsIG1lc3NhZ2UudXRmOCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiAgICAgfQpAQCAtMjExLDcgKzIxMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGRlZmF1bHRRdW90YSk7CiAgICAgfQogCi0gICAgYm9vbCBydW5PcGVuUGFu
ZWwoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYsIEFQSTo6T3BlblBhbmVsUGFyYW1ldGVycyogcGFyYW1ldGVycywgV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSogbGlzdGVuZXIpIGZpbmFsCisgICAgYm9vbCBydW5P
cGVuUGFuZWwoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSosIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmLCBBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIFdlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqIGxpc3RlbmVyKSBmaW5hbAogICAgIHsKICAgICAg
ICAgR1JlZlB0cjxXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9wdEdSZWYo
d2Via2l0RmlsZUNob29zZXJSZXF1ZXN0Q3JlYXRlKHBhcmFtZXRlcnMsIGxpc3RlbmVyKSk7CiAg
ICAgICAgIHdlYmtpdFdlYlZpZXdSdW5GaWxlQ2hvb3NlclJlcXVlc3QobV93ZWJWaWV3LCByZXF1
ZXN0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCmluZGV4IDY3ZDlkOTQ5OTAwMTlh
Yzg2MzIwNWU1OTcyODc1MGM2ZDQ5MDVlNWUuLjk5NGJkMmVkZTg2NTVlNTY2Yjg3ZTRkZjA3YTJk
OGJiOGRlYTMxMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcApAQCAtMTkwLDcgKzE5MCw3
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJQ
YWdlUHJveHkmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRQb3N0
TWVzc2FnZShXZWJQYWdlUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKSBvdmVycmlkZQogICAgIHsKICAg
ICAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCoganNSZXN1bHQgPSB3ZWJraXRKYXZhc2NyaXB0
UmVzdWx0Q3JlYXRlKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CiAgICAgICAgIGdfc2lnbmFsX2Vt
aXQobV9tYW5hZ2VyLCBzaWduYWxzW1NDUklQVF9NRVNTQUdFX1JFQ0VJVkVEXSwgbV9oYW5kbGVy
TmFtZSwganNSZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvTmF2aWdhdGlvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUuaAppbmRleCA5NDYzZTUxNWNjN2JjZmZjNmMzYWMxMWRlNDQ1NTYzYTg5NWM5
NTM5Li40NjBlYmE0YWNhOTMwNzMxNjVlYjdmYTAxZTI3Zjg1MmJjNTg4ZGUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApAQCAtMTAwLDcg
KzEwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0
KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmKSBv
dmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdChXZWJQYWdlUHJv
eHkmKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9u
V2l0aEVycm9yKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24q
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsK
LSAgICAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihX
ZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiwgQVBJOjpOYXZpZ2F0aW9uKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYs
IEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFs
TG9hZEluU3ViZnJhbWVXaXRoRXJyb3IoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBBUEk6Ok5hdmlnYXRpb24qLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKICAgICAgICAgdm9p
ZCBkaWRDb21taXROYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQ
STo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2Fk
KFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7
CiAgICAgICAgIHZvaWQgZGlkRmluaXNoTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmLCBBUEk6Ok5h
dmlnYXRpb24qLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IDNlOTg0YzFlZWY3NWI3NTI5
YTNjNDNkODIzNjYyYWFjOTA1YjczMGIuLjM1MmJlMWJjZmYwNjRiZTg3M2Y5YTQ0OTk1MzJjNTM2
MWQ3NDBiMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUubW0KQEAgLTg0Niw3ICs4NDYsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6ZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbldpdGhFcnJvcihXZQog
fQogCiAvLyBGSVhNRTogU2hvdWxkbid0IG5lZWQgdG8gcGFzcyB0aGUgV2ViRnJhbWVQcm94eSBp
biBoZXJlLiBBdCBtb3N0LCBhIEZyYW1lSGFuZGxlLgotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5h
dmlnYXRpb25DbGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0aEVycm9y
KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSwgY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgQVBJOjpOYXZpZ2F0aW9uKiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6T2JqZWN0KikKK3ZvaWQgTmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5T
dWJmcmFtZVdpdGhFcnJvcihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIHdlYkZy
YW1lUHJveHksIFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luLCBBUEk6Ok5hdmln
YXRpb24qLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpPYmplY3Qq
KQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYXNzZXJ0IHRoYXQgbmF2aWdhdGlvbiBpcyBu
b3QgbnVsbCBoZXJlLCBidXQgaXQncyBjdXJyZW50bHkgbnVsbCBiZWNhdXNlIFdlYlBhZ2VQcm94
eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHBhc3NlcyBudWxsLgogCkBAIC04NTYs
NyArODU2LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZh
aWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0aEVycm8KICAgICBhdXRvIG5hdmlnYXRpb25E
ZWxlZ2F0ZSA9IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpOwog
ICAgIGF1dG8gZXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIgPSBjcmVhdGVFcnJvcldpdGhSZWNv
dmVyeUF0dGVtcHRlcihtX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcsIHdlYkZyYW1lUHJveHks
IGVycm9yKTsKIAotICAgIFsoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4pbmF2aWdh
dGlvbkRlbGVnYXRlIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBuYXZpZ2F0
aW9uOm5pbCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZTp3cmFwcGVyKEFQSTo6RnJh
bWVJbmZvOjpjcmVhdGUod2ViRnJhbWVQcm94eSwgc2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmln
aW4oKSkpIHdpdGhFcnJvcjplcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlci5nZXQoKV07CisgICAg
WyhpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPiluYXZpZ2F0aW9uRGVsZWdhdGUgX3dl
YlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IG5hdmlnYXRpb246bmlsIGRpZEZhaWxQ
cm92aXNpb25hbExvYWRJblN1YmZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSh3
ZWJGcmFtZVByb3h5LCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSwgcGFnZSkpIHdpdGhFcnJvcjpl
cnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlci5nZXQoKV07CiB9CiAKIHZvaWQgTmF2aWdhdGlvblN0
YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRDb21taXROYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYg
cGFnZSwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBBUEk6Ok9iamVjdCopCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKaW5kZXggZmFjNzBiNmJjMzBjODQ2
ZTIwZTFkYWEyMTJjYTA2YjMwNjhhMjIzYS4uMzNiYzE1YmJkOTQ0OTdiNTI4MWNjNDRiNjBjNjM5
MGY1ZWIwOGRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlE
ZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
aApAQCAtODgsMTQgKzg4LDE0IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgZnVsbHNjcmVlbk1h
eVJldHVyblRvSW5saW5lKFdlYlBhZ2VQcm94eSopIGZpbmFsOwogICAgICAgICB2b2lkIGRpZEVu
dGVyRnVsbHNjcmVlbihXZWJQYWdlUHJveHkqKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRFeGl0
RnVsbHNjcmVlbihXZWJQYWdlUHJveHkqKSBmaW5hbDsKLSAgICAgICAgdm9pZCBydW5KYXZhU2Ny
aXB0QWxlcnQoV2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJGcmFtZVByb3h5
KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgRnVuY3Rpb248dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKLSAgICAgICAgdm9pZCBydW5KYXZhU2NyaXB0Q29u
ZmlybShXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYkZyYW1lUHJveHkqLCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKLSAgICAgICAgdm9pZCBydW5KYXZhU2NyaXB0UHJv
bXB0KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcm
LCBXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgRnVu
Y3Rpb248dm9pZChjb25zdCBXVEY6OlN0cmluZyYpPiYmKSBmaW5hbDsKKyAgICAgICAgdm9pZCBy
dW5KYXZhU2NyaXB0QWxlcnQoV2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJG
cmFtZVByb3h5KiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIEZ1bmN0aW9uPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CisgICAgICAgIHZvaWQgcnVuSmF2YVNjcmlw
dENvbmZpcm0oV2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJGcmFtZVByb3h5
KiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOworICAgICAgICB2b2lkIHJ1bkphdmFTY3JpcHRQcm9t
cHQoV2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYs
IFdlYkZyYW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgRnVuY3Rpb248
dm9pZChjb25zdCBXVEY6OlN0cmluZyYpPiYmKSBmaW5hbDsKICAgICAgICAgdm9pZCBwcmVzZW50
U3RvcmFnZUFjY2Vzc0NvbmZpcm1EaWFsb2coY29uc3QgV1RGOjpTdHJpbmcmIHJlcXVlc3RpbmdE
b21haW4sIGNvbnN0IFdURjo6U3RyaW5nJiBjdXJyZW50RG9tYWluLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKICAgICAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZp
cm0oV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiByZXF1ZXN0aW5nRG9tYWluLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYgY3VycmVudERvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmlu
YWw7CiAgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdChXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYs
IEZ1bmN0aW9uPHZvaWQoYm9vbCk+JikgZmluYWw7CiAgICAgICAgIGJvb2wgY2FuUnVuQmVmb3Jl
VW5sb2FkQ29uZmlybVBhbmVsKCkgY29uc3QgZmluYWw7Ci0gICAgICAgIHZvaWQgcnVuQmVmb3Jl
VW5sb2FkQ29uZmlybVBhbmVsKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiwgV2Vi
RnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9u
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOworICAgICAgICB2b2lkIHJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmlu
ZyYsIFdlYkZyYW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgRnVuY3Rp
b248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CiAgICAgICAgIHZvaWQg
ZXhjZWVkZWREYXRhYmFzZVF1b3RhKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBBUEk6
OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV1RGOjpTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3Qg
V1RGOjpTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFF1b3Rh
LCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudE9yaWdpblVzYWdlLCB1bnNpZ25lZCBsb25nIGxv
bmcgY3VycmVudFVzYWdlLCB1bnNpZ25lZCBsb25nIGxvbmcgZXhwZWN0ZWRVc2FnZSwgRnVuY3Rp
b248dm9pZCh1bnNpZ25lZCBsb25nIGxvbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsK
ICAgICAgICAgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdlYlBhZ2VQ
cm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgdWludDY0X3QgY3VycmVudFF1
b3RhLCB1aW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVkLCBGdW5jdGlvbjx2b2lkKHVuc2lnbmVkIGxv
bmcgbG9uZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZFJl
c2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZShXZWJQYWdlUHJveHkmLCBB
UEk6Ok9iamVjdCopIGZpbmFsOwpAQCAtMTIxLDEyICsxMjEsMTIgQEAgcHJpdmF0ZToKICAgICAg
ICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJI
aXRUZXN0UmVzdWx0RGF0YSYsIE9wdGlvblNldDxXZWJFdmVudDo6TW9kaWZpZXI+LCBBUEk6Ok9i
amVjdCopOwogICAgICAgICB2b2lkIGRpZENsaWNrQXV0b0ZpbGxCdXR0b24oV2ViUGFnZVByb3h5
JiwgQVBJOjpPYmplY3QqKSBmaW5hbDsKICAgICAgICAgdm9pZCB0b29sYmFyc0FyZVZpc2libGUo
V2ViUGFnZVByb3h5JiwgRnVuY3Rpb248dm9pZChib29sKT4mJikgZmluYWw7Ci0gICAgICAgIGJv
b2wgcnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnMqLCBXZWJP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5KikgZmluYWw7CisgICAgICAgIGJvb2wgcnVuT3Bl
blBhbmVsKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiwgQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJzKiwgV2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJQcm94eSopIGZpbmFsOwogICAgICAgICB2b2lkIGRpZEV4Y2VlZEJhY2tncm91bmRS
ZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQoV2ViUGFnZVByb3h5JiwgV0tSZXNvdXJjZUxp
bWl0KSBmaW5hbDsKICAgICAgICAgdm9pZCBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVy
KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBj
b25zdCBVUkwmLCBBUEk6OkRhdGEmKSBmaW5hbDsKICNlbmRpZgogI2lmIEVOQUJMRShERVZJQ0Vf
T1JJRU5UQVRJT04pCi0gICAgICAgIHZvaWQgc2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFu
ZE1vdGlvbkFjY2VzcyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKSBmaW5hbDsKKyAgICAgICAgdm9pZCBzaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9u
QW5kTW90aW9uQWNjZXNzKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKSBmaW5hbDsKICNlbmRpZgogICAgICAgICBib29sIG5lZWRzRm9udEF0dHJpYnV0ZXMoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmll
d0RpZENoYW5nZUZvbnRBdHRyaWJ1dGVzOyB9CiAgICAgICAgIHZvaWQgZGlkQ2hhbmdlRm9udEF0
dHJpYnV0ZXMoY29uc3QgV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXMmKSBmaW5hbDsKQEAgLTE1NSw3
ICsxNTUsNyBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIGltYWdlT3JNZWRpYURvY3VtZW50U2l6
ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIGZpbmFsOwogICAgICAgICB2b2lkIGRp
ZFNob3dTYWZlQnJvd3NpbmdXYXJuaW5nKCkgZmluYWw7CiAjaWYgRU5BQkxFKFdFQl9BVVRITikK
LSAgICAgICAgdm9pZCBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKFdlYlBhZ2VQcm94eSYsIEFQ
STo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYsIFdlYkZyYW1lUHJveHkmLCBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxSZXN1bHQpPiYmKSBmaW5hbDsKKyAgICAgICAgdm9pZCBydW5XZWJBdXRoZW50
aWNhdGlvblBhbmVsKFdlYlBhZ2VQcm94eSYsIEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYs
IFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0KT4mJikgZmluYWw7CiAj
ZW5kaWYKIAogICAgICAgICBVSURlbGVnYXRlJiBtX3VpRGVsZWdhdGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRleCBhNzUwMzQ2MjAxNmZlMTYxNzFi
MTYwNDY3NGUxNmMzZWE5MmY5ODlkLi5kM2NlMGVhMzIwYmY4NjdiMWNhYjFmMzFjZWFlMmU2ZTQ3
NDhmZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVn
YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0K
QEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjcmVhdGVOZXdQ
YWdlKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6V2luZG93RgogICAgIGNvbXBsZXRp
b25IYW5kbGVyKHdlYlZpZXctPl9wYWdlLmdldCgpKTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpV
SUNsaWVudDo6cnVuSmF2YVNjcmlwdEFsZXJ0KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3Ry
aW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5LCBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSwgRnVuY3Rpb248dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2
YVNjcmlwdEFsZXJ0KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3Nh
Z2UsIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHksIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZp
ZXdSdW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlSW5pdGlhdGVkQnlGcmFtZUNvbXBs
ZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0yODYsNyAr
Mjg2LDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdEFsZXJ0KFdl
YlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJgogICAgIH0KIAogICAgIGF1dG8gY2hlY2tl
ciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwg
QHNlbGVjdG9yKHdlYlZpZXc6cnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZTppbml0
aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOikpOwotICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3
Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2Fn
ZTptZXNzYWdlIGluaXRpYXRlZEJ5RnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRl
KCp3ZWJGcmFtZVByb3h5LCBzZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSkpIGNv
bXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildIHsKKyAgICBb
ZGVsZWdhdGUgd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1bkphdmFTY3JpcHRBbGVy
dFBhbmVsV2l0aE1lc3NhZ2U6bWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpG
cmFtZUluZm86OmNyZWF0ZSgqd2ViRnJhbWVQcm94eSwgV1RGTW92ZShzZWN1cml0eU9yaWdpbkRh
dGEpLCBwYWdlKSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVj
a2VyKV0gewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2Fs
bGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNj
cmlwdEFsZXJ0KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJgogICAgIH0pLmdldCgp
XTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdENvbmZpcm0o
V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkq
IHdlYkZyYW1lUHJveHksIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJp
dHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViUGFnZVBy
b3h5JiBwYWdlLCBjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94eSogd2Vi
RnJhbWVQcm94eSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW5E
YXRhLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlm
ICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSdW5KYXZhU2NyaXB0Q29u
ZmlybVBhbmVsV2l0aE1lc3NhZ2VJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIpIHsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwpAQCAtMzA4LDcgKzMwOCw3IEBAIHZv
aWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRDb25maXJtKFdlYlBhZ2VQcm94
eSosIGNvbnN0IFdURjo6U3RyaW5nCiAgICAgfQogCiAgICAgYXV0byBjaGVja2VyID0gQ29tcGxl
dGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3Io
d2ViVmlldzpydW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlG
cmFtZTpjb21wbGV0aW9uSGFuZGxlcjopKTsKLSAgICBbZGVsZWdhdGUgd2ViVmlldzptX3VpRGVs
ZWdhdGUubV93ZWJWaWV3IHJ1bkphdmFTY3JpcHRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTptZXNz
YWdlIGluaXRpYXRlZEJ5RnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCp3ZWJG
cmFtZVByb3h5LCBzZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSkpIGNvbXBsZXRp
b25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildIChCT09MIHJlc3VsdCkg
bXV0YWJsZSB7CisgICAgW2RlbGVnYXRlIHdlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBy
dW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6bWVzc2FnZSBpbml0aWF0ZWRCeUZy
YW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqd2ViRnJhbWVQcm94eSwgV1RGTW92
ZShzZWN1cml0eU9yaWdpbkRhdGEpLCBwYWdlKSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2Nr
UHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVj
a2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJPT0wgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwpAQCAtMzE2LDcg
KzMxNiw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRDb25maXJt
KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nCiAgICAgfSkuZ2V0KCldOwogfQogCi12
b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0UHJvbXB0KFdlYlBhZ2VQcm94
eSosIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBXVEY6OlN0cmluZyYgZGVmYXVs
dFZhbHVlLCBXZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5LCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSwgRnVuY3Rpb248dm9pZChjb25zdCBX
VEY6OlN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBVSURlbGVnYXRlOjpVSUNs
aWVudDo6cnVuSmF2YVNjcmlwdFByb21wdChXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFdURjo6
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBXVEY6OlN0cmluZyYgZGVmYXVsdFZhbHVlLCBXZWJGcmFt
ZVByb3h5KiB3ZWJGcmFtZVByb3h5LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1
cml0eU9yaWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQoY29uc3QgV1RGOjpTdHJpbmcmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9k
cy53ZWJWaWV3UnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdERlZmF1bHRUZXh0
SW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFN0cmluZygpKTsKQEAgLTMzMCw3ICszMzAsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJ
Q2xpZW50OjpydW5KYXZhU2NyaXB0UHJvbXB0KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3Ry
aW5nJgogICAgIH0KIAogICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENo
ZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKHdlYlZpZXc6cnVuSmF2YVNj
cmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDpkZWZhdWx0VGV4dDppbml0aWF0ZWRCeUZyYW1l
OmNvbXBsZXRpb25IYW5kbGVyOikpOwotICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlEZWxlZ2F0
ZS5tX3dlYlZpZXcgcnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDptZXNzYWdl
IGRlZmF1bHRUZXh0OmRlZmF1bHRWYWx1ZSBpbml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpG
cmFtZUluZm86OmNyZWF0ZSgqd2ViRnJhbWVQcm94eSwgc2VjdXJpdHlPcmlnaW5EYXRhLnNlY3Vy
aXR5T3JpZ2luKCkpKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNo
ZWNrZXIpXSAoTlNTdHJpbmcgKnJlc3VsdCkgbXV0YWJsZSB7CisgICAgW2RlbGVnYXRlIHdlYlZp
ZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRo
UHJvbXB0Om1lc3NhZ2UgZGVmYXVsdFRleHQ6ZGVmYXVsdFZhbHVlIGluaXRpYXRlZEJ5RnJhbWU6
d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCp3ZWJGcmFtZVByb3h5LCBXVEZNb3ZlKHNl
Y3VyaXR5T3JpZ2luRGF0YSksIHBhZ2UpKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIo
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIg
PSBXVEZNb3ZlKGNoZWNrZXIpXSAoTlNTdHJpbmcgKnJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAg
IGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKQEAgLTM2Miw3
ICszNjIsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpyZXF1ZXN0U3RvcmFnZUFjY2Vz
c0NvbmZpcm0oV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcgogICAgIH0pLmdldCgpXTsKIH0KIAot
dm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94
eSYgZnJhbWUsIEFQSTo6U2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luLCBGdW5jdGlvbjx2
b2lkKGJvb2wpPiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50
OjpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2Vi
UGFnZVByb3h5JiBwYWdlLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6OlNlY3Vy
aXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgRnVuY3Rpb248dm9pZChib29sKT4mIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndl
YlZpZXdSZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWVEZWNpc2lvbkhhbmRsZXIp
CiAgICAgICAgIHJldHVybjsKQEAgLTM3Miw3ICszNzIsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJ
Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktp
dDo6VwogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFu
ZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcihfd2ViVmll
dzpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWU6ZGVjaXNpb25IYW5kbGVyOikp
OwotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlE
ZWxlZ2F0ZS5tX3dlYlZpZXcgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lOndy
YXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShmcmFtZSwgc2VjdXJpdHlPcmlnaW4uc2VjdXJp
dHlPcmlnaW4oKSkpIGRlY2lzaW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5k
bGVyID0gc3RkOjpleGNoYW5nZShjb21wbGV0aW9uSGFuZGxlciwgbnVsbHB0ciksIGNoZWNrZXIg
PSBXVEZNb3ZlKGNoZWNrZXIpXSAoQk9PTCByZXN1bHQpIG11dGFibGUgeworICAgIFsoaWQgPFdL
VUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZp
ZXcgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lOndyYXBwZXIoQVBJOjpGcmFt
ZUluZm86OmNyZWF0ZShmcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHsgc2VjdXJp
dHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkgfSwgcGFnZSkpIGRlY2lzaW9uSGFuZGxl
cjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShjb21wbGV0
aW9uSGFuZGxlciwgbnVsbHB0ciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoQk9PTCBy
ZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJI
YXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNoZWNrZXItPmRp
ZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMzk3LDcgKzM5Nyw3IEBAIGJvb2wgVUlEZWxl
Z2F0ZTo6VUlDbGllbnQ6OmNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuQmVmb3Jl
VW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2VJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhh
bmRsZXI7CiB9CiAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbChXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSwgV2Vi
RnJhbWVQcm94eSogd2ViRnJhbWVQcm94eSwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiBzZWN1cml0eU9yaWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWwoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSwg
V2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcm94eSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiYgc2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZp
ZXdSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZUluaXRpYXRlZEJ5RnJhbWVD
b21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CkBA
IC00MTEsNyArNDExLDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjoKICAgICB9CiAKICAgICBh
dXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdh
dGUuZ2V0KCksIEBzZWxlY3Rvcihfd2ViVmlldzpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxX
aXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOikpOwotICAgIFso
aWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5t
X3dlYlZpZXcgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6bWVzc2FnZSBp
bml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqd2ViRnJhbWVQ
cm94eSwgc2VjdXJpdHlPcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCkpKSBjb21wbGV0aW9uSGFu
ZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoQk9PTCByZXN1bHQpIG11dGFi
bGUgeworICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1f
dWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3Nh
Z2U6bWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0
ZSgqd2ViRnJhbWVQcm94eSwgV1RGTW92ZShzZWN1cml0eU9yaWdpbkRhdGEpLCBwYWdlKSkgY29t
cGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJPT0wgcmVz
dWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFz
QmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihyZXN1bHQpOwpAQCAtODEzLDcgKzgxMyw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGll
bnQ6OmRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6
CiAgICAgfSkuZ2V0KCldOwogfQogCi1ib29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5PcGVu
UGFuZWwoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcm94eSwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEsIEFQSTo6T3Bl
blBhbmVsUGFyYW1ldGVycyogb3BlblBhbmVsUGFyYW1ldGVycywgV2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJQcm94eSogbGlzdGVuZXIpCitib29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5P
cGVuUGFuZWwoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbkRhdGEsIEFQSTo6
T3BlblBhbmVsUGFyYW1ldGVycyogb3BlblBhbmVsUGFyYW1ldGVycywgV2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXJQcm94eSogbGlzdGVuZXIpCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9k
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlhdGVk
QnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04MjIs
NyArODIyLDcgQEAgYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuT3BlblBhbmVsKFdlYlBh
Z2VQcm94eSosIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHIKICAgICBpZiAoIWRlbGVnYXRlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIGZyYW1lID0gQVBJOjpGcmFtZUluZm86
OmNyZWF0ZSgqd2ViRnJhbWVQcm94eSwgc2VjdXJpdHlPcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2lu
KCkpOworICAgIGF1dG8gZnJhbWUgPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCp3ZWJGcmFtZVBy
b3h5LCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luRGF0YSksIHBhZ2UpOwogCiAgICAgYXV0byBjaGVj
a2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgp
LCBAc2VsZWN0b3Iod2ViVmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRC
eUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOikpOwogCkBAIC04NDgsNyArODQ4LDcgQEAgYm9vbCBV
SURlbGVnYXRlOjpVSUNsaWVudDo6cnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1l
UHJveHkqIHdlYkZyYW1lUHIKICNlbmRpZgogCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElP
TikKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRp
b25BbmRNb3Rpb25BY2Nlc3MoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiB3
ZWJGcmFtZVByb3h5LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5
T3JpZ2luRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNob3VsZEFsbG93RGV2aWNlT3JpZW50
YXRpb25BbmRNb3Rpb25BY2Nlc3MoV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1l
UHJveHkmIHdlYkZyYW1lUHJveHksIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3Vy
aXR5T3JpZ2luRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBhdXRvIGRlbGVnYXRlID0gbV91aURlbGVnYXRlLm1fZGVsZWdhdGUu
Z2V0KCk7CiAgICAgaWYgKCFkZWxlZ2F0ZSkKQEAgLTg2MCw3ICs4NjAsNyBAQCB2b2lkIFVJRGVs
ZWdhdGU6OlVJQ2xpZW50OjpzaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNj
ZXNzKFdlYktpdDo6VwogICAgIH0KIAogICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5k
bGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKF93ZWJWaWV3
OnNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NSZXF1ZXN0ZWRCeUZy
YW1lOmRlY2lzaW9uSGFuZGxlcjopKTsKLSAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilk
ZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHNob3VsZEFsbG93RGV2aWNl
T3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NSZXF1ZXN0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpG
cmFtZUluZm86OmNyZWF0ZSh3ZWJGcmFtZVByb3h5LCBzZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJp
dHlPcmlnaW4oKSkpIGRlY2lzaW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNr
ZXIpXSAoQk9PTCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2
YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHNob3VsZEFsbG93
RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NSZXF1ZXN0ZWRCeUZyYW1lOndyYXBwZXIo
QVBJOjpGcmFtZUluZm86OmNyZWF0ZSh3ZWJGcmFtZVByb3h5LCBXVEZNb3ZlKHNlY3VyaXR5T3Jp
Z2luRGF0YSksIHBhZ2UpKSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShj
aGVja2VyKV0gKEJPT0wgZ3JhbnRlZCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChjaGVja2VyLT5j
b21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xMjgxLDcgKzEy
ODEsNyBAQCBzdGF0aWMgV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCB3ZWJBdXRoZW50aWNh
dGlvblBhbmVsUmVzdWx0KF9XS1dlYkF1dGhlbnRpYwogICAgIHJldHVybiBXZWJBdXRoZW50aWNh
dGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNs
aWVudDo6cnVuV2ViQXV0aGVudGljYXRpb25QYW5lbChXZWJQYWdlUHJveHkmLCBBUEk6OldlYkF1
dGhlbnRpY2F0aW9uUGFuZWwmIHBhbmVsLCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFtZVByb3h5LCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwo
V2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmIHBhbmVsLCBX
ZWJGcmFtZVByb3h5JiB3ZWJGcmFtZVByb3h5LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
JiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQXV0aGVudGljYXRpb25QYW5lbFJl
c3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9k
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWxJbml0aWF0ZWRC
eUZyYW1lQ29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2Vi
QXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUpOwpAQCAtMTI5NSw3ICsxMjk1
LDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuV2ViQXV0aGVudGljYXRpb25QYW5l
bChXZWJQYWdlUHJveHkmLCBBUEk6OldlYkF1dGgKICAgICB9CiAKICAgICBhdXRvIGNoZWNrZXIg
PSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBz
ZWxlY3Rvcihfd2ViVmlldzpydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsOmluaXRpYXRlZEJ5RnJh
bWU6Y29tcGxldGlvbkhhbmRsZXI6KSk7Ci0gICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4p
ZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBydW5XZWJBdXRoZW50aWNh
dGlvblBhbmVsOndyYXBwZXIocGFuZWwpIGluaXRpYXRlZEJ5RnJhbWU6d3JhcHBlcihBUEk6OkZy
YW1lSW5mbzo6Y3JlYXRlKHdlYkZyYW1lUHJveHksIG9yaWdpbi5zZWN1cml0eU9yaWdpbigpKSkg
Y29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKF9XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBbKGlkIDxX
S1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJW
aWV3IHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWw6d3JhcHBlcihwYW5lbCkgaW5pdGlhdGVkQnlG
cmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUod2ViRnJhbWVQcm94eSwgV1RGTW92
ZShvcmlnaW4pLCBwYWdlKSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92
ZShjaGVja2VyKV0gKF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQgcmVzdWx0KSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxl
ZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxl
dGlvbkhhbmRsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmNwcAppbmRleCA2MmY1ODE1NDc1ODY1OGFlMjUzZmMyMDE5OWY3MTVlYzA5YjFk
OWRkLi4yMTZiZTViZmYyMGE1NTY3MDhmMDA1N2Y0ZTM1MGQxNWZmMjBhMmJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC0yNDIs
NyArMjQyLDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWUKICAgICBtX3BhZ2UuZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlE
LCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUodXJsKSwgV1RGTW92ZSh1bnJlYWNoYWJsZVVSTCksIHVz
ZXJEYXRhKTsKIH0KIAotdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYgZXJyb3IsIFdlYkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVl
TG9hZGluZywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBQcm92aXNpb25hbFBhZ2VQ
cm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBXZWJDb3JlOjpXaWxsQ29udGludWVMb2Fk
aW5nIHdpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAg
ICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMjU1LDcgKzI1NSw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZEZh
aWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJCiAgICAgaWYg
KGF1dG8qIHBhZ2VNYWluRnJhbWUgPSBtX3BhZ2UubWFpbkZyYW1lKCkpCiAgICAgICAgIHBhZ2VN
YWluRnJhbWUtPmRpZEZhaWxQcm92aXNpb25hbExvYWQoKTsKIAotICAgIG1fcGFnZS5kaWRGYWls
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJ
RCwgZnJhbWVTZWN1cml0eU9yaWdpbiwgbmF2aWdhdGlvbklELCBwcm92aXNpb25hbFVSTCwgZXJy
b3IsIHdpbGxDb250aW51ZUxvYWRpbmcsIHVzZXJEYXRhKTsgLy8gTWF5IGRlbGV0ZSB8dGhpc3wu
CisgICAgbV9wYWdlLmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nl
c3MuY29weVJlZigpLCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBuYXZp
Z2F0aW9uSUQsIHByb3Zpc2lvbmFsVVJMLCBlcnJvciwgd2lsbENvbnRpbnVlTG9hZGluZywgdXNl
ckRhdGEpOyAvLyBNYXkgZGVsZXRlIHx0aGlzfC4KIH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQ
cm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXND
dXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNv
cmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIGNvbnRhaW5zUGx1Z2lu
RG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFz
SW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCkBAIC0yOTgsMTMgKzI5
OCwxMyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uQXN5bmMoRnJhbWVJZGVudGlmaWVyCiAgICAgICAgIFdURk1vdmUoZnJhbWVJbmZv
RGF0YSksIG9yaWdpbmF0aW5nUGFnZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVz
dCksIFdURk1vdmUocmVxdWVzdEJvZHkpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCB1c2Vy
RGF0YSwgbGlzdGVuZXJJRCk7CiB9CiAKLXZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvclJlc3BvbnNlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGlj
eUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGlj
eUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAogICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0
cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdh
dGlvbklEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLmRlY2lkZVBvbGljeUZvclJl
c3BvbnNlU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlELCBm
cmFtZVNlY3VyaXR5T3JpZ2luLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCBy
ZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlLCBsaXN0ZW5lcklELCB1
c2VyRGF0YSk7CisgICAgbV9wYWdlLmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKG1fcHJv
Y2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lU2VjdXJp
dHlPcmlnaW4pLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBj
YW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlLCBsaXN0ZW5lcklELCB1c2VyRGF0YSk7
CiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVj
dChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlv
blVSTFN0cmluZywgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAppbmRleCA3ZGJjZWY5ZDFkNTUzNWE4MzU0
ZDdiYWUwYzYwMTFhMGE1MWI5MTM3Li5jYjk1ZmUwMTBkYzY0MmZjZGY0NjMzN2MzZWJhZTgyMjJk
ZjEzMjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBh
Z2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmgKQEAgLTk4LDcgKzk4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25Bc3luYyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0
YSYmLAogICAgICAgICBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGlu
Z1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3Qs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVx
dWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJl
c3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwotICAgIHZvaWQg
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZp
ZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsCisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVj
a0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsCiAgICAgICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJv
b2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCB1aW50
NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkQ2hhbmdlUHJv
dmlzaW9uYWxVUkxGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgVVJMJiYpOwogICAgIHZvaWQgZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KGNv
bnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJM
U3RyaW5nLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwpAQCAtMTA4LDcgKzEwOCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWRDcmVhdGVNYWluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyKTsKICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmLCBVUkwmJiB1bnJl
YWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZENvbW1pdExvYWRGb3JG
cmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwg
dWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwg
Ym9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3Vy
ZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmKTsKLSAg
ICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9y
aWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJM
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9h
ZGluZywgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRG
b3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
U3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdl
YkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBz
dGFydFVSTFNjaGVtZVRhc2soVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBi
YWNrRm9yd2FyZEdvVG9JdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZp
ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKT4m
Jik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5o
CmluZGV4IDllMDEyZGMyNzUyYmM2NTRlZmQ2NThkOWNjMjliMGM4Mzc2NDJiZDUuLmMyMWViOWU3
OTIwODVhMjYwZGI5Y2I2MjEzYzI5NWE3ZjlmYjYxMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRs
ZXIuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgY2xhc3MgQ2xpZW50IHsKICAgICBw
dWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkNsaWVudCgpIHsgfQotICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkUG9zdE1lc3NhZ2UoV2ViUGFnZVByb3h5JiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGRpZFBvc3RNZXNzYWdlKFdlYlBhZ2VQcm94eSYsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlJikgPSAwOwogICAgIH07CiAKICAgICBzdGF0aWMgUmVmPFdl
YlNjcmlwdE1lc3NhZ2VIYW5kbGVyPiBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPENsaWVudD4sIGNv
bnN0IFN0cmluZyYgbmFtZSwgQVBJOjpVc2VyQ29udGVudFdvcmxkJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggMjI0YWQ3Y2ZlNzI3Njg5M2IyMzE1ZTE5
NmZkNjYzZTM4ZmE1M2FkOS4uZDEwZTdiNWMxMjQ2YmRmOWJiMDNlZmFlYzA0ZDEwMTY0MmEzYzA5
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcApAQCAtMzU0LDcg
KzM1NCw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVz
ZXJNZXNzYWdlSGFuZGxlcnMoQVBJOjpVc2VyQ29udGVuCiAgICAgcmVtb3ZlVXNlckNvbnRlbnRX
b3JsZFVzZXMod29ybGQsIG51bWJlclJlbW92ZWQpOwogfQogCi12b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpkaWRQb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVByb3h5SUQsIGNvbnN0IEZyYW1lSW5mb0Rh
dGEmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OmRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2Vi
UGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5m
b0RhdGEsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YVJlZmVyZW5jZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNz
UHJveHk6OndlYlBhZ2UocGFnZVByb3h5SUQpOwogICAgIGlmICghcGFnZSkKQEAgLTM2Nyw3ICsz
NjcsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpkaWRQb3N0TWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sCiAgICAgaWYgKCFoYW5kbGVyKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBoYW5kbGVyLT5jbGllbnQoKS5kaWRQb3N0TWVzc2FnZSgqcGFnZSwg
ZnJhbWVJbmZvRGF0YSwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChkYXRh
UmVmZXJlbmNlLnZlY3RvcigpKSk7CisgICAgaGFuZGxlci0+Y2xpZW50KCkuZGlkUG9zdE1lc3Nh
Z2UoKnBhZ2UsIFdURk1vdmUoZnJhbWVJbmZvRGF0YSksIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6YWRvcHQoZGF0YVJlZmVyZW5jZS52ZWN0b3IoKSkpOwogfQogCiAjaWYgRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5o
CmluZGV4IDA3ODBjMGMyMmFjNWY4N2NlNmIwODA3MTA2OWRlOTQ2ZGE1NTk3MjguLjY3MWZiMjky
ZDIwMTk2MDMzN2IwMzgzZWQwN2IyN2ZkYjk3ZTJjNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkuaApAQCAtMTE0LDcgKzExNCw3IEBAIHByaXZhdGU6CiAgICAgLy8gSVBD
OjpNZXNzYWdlUmVjZWl2ZXIuCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZGlkUG9zdE1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgY29uc3QgRnJhbWVJ
bmZvRGF0YSYsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYpOworICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxl
cklELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKIAogICAgIHZvaWQgYWRkVXNlckNvbnRl
bnRXb3JsZFVzZShBUEk6OlVzZXJDb250ZW50V29ybGQmKTsKICAgICB2b2lkIHJlbW92ZVVzZXJD
b250ZW50V29ybGRVc2VzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYsIHVuc2lnbmVkIG51bWJlck9m
VXNlc1RvUmVtb3ZlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAppbmRleCBl
OGM0MGViNDc4OThjNzc0ZTUzMGRlNWIwNDBlZTk3MDVjZTBlYTk1Li5iYWFiZThkZWYxZDEwMjhj
NTJmYWI3MDE0MjYyODQ3NzI3ZWViZTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFn
ZXIuY3BwCkBAIC0zMzUsNyArMzM1LDcgQEAgdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6cnVu
UGFuZWwoKQogICAgIGF1dG8gdHJhbnNwb3J0cyA9IGdldFRyYW5zcG9ydHMoKTsKICAgICBtX3Bl
bmRpbmdSZXF1ZXN0RGF0YS5wYW5lbCA9IEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbDo6Y3Jl
YXRlKCp0aGlzLCBnZXRScElkKG9wdGlvbnMpLCB0cmFuc3BvcnRzLCBnZXRDbGllbnREYXRhVHlw
ZShvcHRpb25zKSk7CiAgICAgYXV0byYgcGFuZWwgPSAqbV9wZW5kaW5nUmVxdWVzdERhdGEucGFu
ZWw7Ci0gICAgcGFnZS0+dWlDbGllbnQoKS5ydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKCpwYWdl
LCBwYW5lbCwgKmZyYW1lLCBtX3BlbmRpbmdSZXF1ZXN0RGF0YS5vcmlnaW4sIFt0cmFuc3BvcnRz
ID0gV1RGTW92ZSh0cmFuc3BvcnRzKSwgd2Vha1BhbmVsID0gbWFrZVdlYWtQdHIocGFuZWwpLCB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhpc10gKFdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxSZXN1bHQgcmVzdWx0KSB7CisgICAgcGFnZS0+dWlDbGllbnQoKS5ydW5XZWJBdXRoZW50aWNh
dGlvblBhbmVsKCpwYWdlLCBwYW5lbCwgKmZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEgeyBtX3BlbmRpbmdSZXF1ZXN0RGF0YS5vcmlnaW4gfSwgW3RyYW5zcG9ydHMgPSBXVEZNb3Zl
KHRyYW5zcG9ydHMpLCB3ZWFrUGFuZWwgPSBtYWtlV2Vha1B0cihwYW5lbCksIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzXSAoV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCBy
ZXN1bHQpIHsKICAgICAgICAgLy8gVGhlIHBhbmVsIGFkZHJlc3MgaXMgdXNlZCB0byBkZXRlcm1p
bmUgaWYgdGhlIGN1cnJlbnQgcGVuZGluZyByZXF1ZXN0IGlzIHN0aWxsIHRoZSBzYW1lLgogICAg
ICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrUGFuZWwKICAgICAgICAgICAgIHx8IChyZXN1bHQg
PT0gV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6RGlkTm90UHJlc2VudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGZkOWQzNTQ3ZWZjZjE5N2E0NWJl
NzI4OTUzNzEwYjQ4MWY4ZDU5YzkuLmM2ZjZkZWQ0OThmN2FlOTdkOTczM2M2YTVjZWZiNmRhZTAz
NjZkZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDI0
OSwxNyArNDI0OSwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlUHJvdmlzaW9uYWxV
UkxGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmCiAgICAgZnJhbWUtPmRpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCh1cmwpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4s
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFdpbGxDb250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVl
TG9hZGluZywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRp
ZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU2Vj
dXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgV2lsbENvbnRpbnVlTG9hZGluZyB3aWxsQ29udGludWVMb2FkaW5nLCBjb25zdCBVc2Vy
RGF0YSYgdXNlckRhdGEpCiB7CiAgICAgaWYgKG1fcHJvdmlzaW9uYWxQYWdlICYmIG1fcHJvdmlz
aW9uYWxQYWdlLT5uYXZpZ2F0aW9uSUQoKSA9PSBuYXZpZ2F0aW9uSUQpIHsKICAgICAgICAgLy8g
VGhlIGxvYWQgZGlkIG5vdCBmYWlsLCBpdCBpcyBtZXJlbHkgaGFwcGVuaW5nIGluIGEgbmV3IHBy
b3Zpc2lvbmFsIHByb2Nlc3MuCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkaWRGYWls
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJ
RCwgZnJhbWVTZWN1cml0eU9yaWdpbiwgbmF2aWdhdGlvbklELCBwcm92aXNpb25hbFVSTCwgZXJy
b3IsIHdpbGxDb250aW51ZUxvYWRpbmcsIHVzZXJEYXRhKTsKKyAgICBkaWRGYWlsUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWVTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgV1RGTW92
ZShmcmFtZVNlY3VyaXR5T3JpZ2luKSwgbmF2aWdhdGlvbklELCBwcm92aXNpb25hbFVSTCwgZXJy
b3IsIHdpbGxDb250aW51ZUxvYWRpbmcsIHVzZXJEYXRhKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmIHByb2Nlc3MsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9y
aWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29u
c3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFdp
bGxDb250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFt
ZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIEZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yLCBXaWxsQ29udGludWVMb2FkaW5nIHdpbGxDb250aW51ZUxvYWRpbmcs
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBMT0coTG9hZGluZywgIihMb2FkaW5n
KSBXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgaW4gd2ViIHByb2Nlc3MgcGlkICVpIGRpZEZhaWxQ
cm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBwcm92aXNpb25hbFVSTCAlcyIsIG1faWRlbnRpZmll
ci50b1VJbnQ2NCgpLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBwcm92aXNpb25hbFVS
TC51dGY4KCkuZGF0YSgpKTsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgZG9t
YWluID0gJXMsIGNvZGUgPSAlZCIsIGZyYW1lSUQudG9VSW50NjQoKSwgZXJyb3IuZG9tYWluKCku
dXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOwpAQCAtNDMwMCw3ICs0MzAwLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHAKICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRG
YWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uV2l0aEVycm9yKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRp
b24uZ2V0KCksIGVycm9yLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJE
YXRhLm9iamVjdCgpKS5nZXQoKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBHZXQg
dGhlIG1haW4gZnJhbWUncyBjdXJyZW50IG5hdmlnYXRpb24uCi0gICAgICAgIG1fbmF2aWdhdGlv
bkNsaWVudC0+ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3IoKnRoaXMs
ICpmcmFtZSwgZnJhbWVTZWN1cml0eU9yaWdpbiwgbnVsbHB0ciwgZXJyb3IsIHByb2Nlc3MtPnRy
YW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICAg
ICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdp
dGhFcnJvcigqdGhpcywgKmZyYW1lLCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBudWxs
cHRyLCBlcnJvciwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5v
YmplY3QoKSkuZ2V0KCkpOwogICAgIH0KIAogICAgIG1fZmFpbGluZ1Byb3Zpc2lvbmFsTG9hZFVS
TCA9IHsgfTsKQEAgLTQ4ODMsNyArNDg4Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAg
ICAgICAgIGJlZ2luU2FmZUJyb3dzaW5nQ2hlY2socmVxdWVzdC51cmwoKSwgZnJhbWUuaXNNYWlu
RnJhbWUoKSwgbGlzdGVuZXIpOwogCiAgICAgQVBJOjpOYXZpZ2F0aW9uKiBtYWluRnJhbWVOYXZp
Z2F0aW9uID0gZnJhbWUuaXNNYWluRnJhbWUoKSA/IG5hdmlnYXRpb24uZ2V0KCkgOiBudWxscHRy
OwotICAgIFdlYkZyYW1lUHJveHkqIG9yaWdpbmF0aW5nRnJhbWUgPSBvcmlnaW5hdGluZ0ZyYW1l
SW5mb0RhdGEuZnJhbWVJRCA/IHByb2Nlc3MtPndlYkZyYW1lKCpvcmlnaW5hdGluZ0ZyYW1lSW5m
b0RhdGEuZnJhbWVJRCkgOiBudWxscHRyOworICAgIFdlYkZyYW1lUHJveHkqIG9yaWdpbmF0aW5n
RnJhbWUgPSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCA/IHByb2Nlc3MtPndlYkZy
YW1lKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5mcmFtZUlEKSA6IG51bGxwdHI7CiAKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlmIChhdXRvKiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUgPSB3ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlz
dGljcygpKQpAQCAtNDg5NCwxMiArNDg5NCwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlcwog
ICAgIGlmIChtX3BvbGljeUNsaWVudCkKICAgICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24oKnRoaXMsICZmcmFtZSwgV1RGTW92ZShuYXZpZ2F0aW9u
QWN0aW9uRGF0YSksIG9yaWdpbmF0aW5nRnJhbWUsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShy
ZXF1ZXN0KSwgV1RGTW92ZShsaXN0ZW5lciksIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09i
amVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKICAgICBlbHNlIHsKLSAgICAgICAgYXV0
byBkZXN0aW5hdGlvbkZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoZnJhbWUsIGZy
YW1lU2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSk7CisgICAgICAgIGF1dG8gZGVzdGlu
YXRpb25GcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKGZyYW1lLCBXVEZNb3ZlKGZy
YW1lU2VjdXJpdHlPcmlnaW4pLCAqdGhpcyk7CiAgICAgICAgIFJlZlB0cjxBUEk6OkZyYW1lSW5m
bz4gc291cmNlRnJhbWVJbmZvOwogICAgICAgICBpZiAoIWZyb21BUEkgJiYgb3JpZ2luYXRpbmdG
cmFtZSA9PSAmZnJhbWUpCiAgICAgICAgICAgICBzb3VyY2VGcmFtZUluZm8gPSBkZXN0aW5hdGlv
bkZyYW1lSW5mby5jb3B5UmVmKCk7Ci0gICAgICAgIGVsc2UgaWYgKCFmcm9tQVBJKQotICAgICAg
ICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShvcmlnaW5hdGlu
Z0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlEID8gcHJvY2Vzcy0+d2ViUGFnZSgqb3Jp
Z2luYXRpbmdQYWdlSUQpIDogbnVsbHB0cik7CisgICAgICAgIGVsc2UgaWYgKCFmcm9tQVBJKSB7
CisgICAgICAgICAgICBhdXRvKiBvcmlnaW5hdGluZ1BhZ2UgPSBvcmlnaW5hdGluZ1BhZ2VJRCA/
IHByb2Nlc3MtPndlYlBhZ2UoKm9yaWdpbmF0aW5nUGFnZUlEKSA6IG51bGxwdHI7CisgICAgICAg
ICAgICBzb3VyY2VGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUob3Jp
Z2luYXRpbmdGcmFtZUluZm9EYXRhKSwgb3JpZ2luYXRpbmdQYWdlID8gICpvcmlnaW5hdGluZ1Bh
Z2UgOiAqdGhpcyk7CisgICAgICAgIH0KIAogICAgICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rp
dml0eSA9IHByb2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0
YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7CiAgICAgICAgIGJvb2wgc2hvdWxkT3BlbkFw
cExpbmtzID0gIW1fc2hvdWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lE
ZWNpc2lvbgpAQCAtNTAwNyw3ICs1MDA5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHkKICAg
ICBzZW5kZXItPnNlbmQoUG9saWN5QWN0aW9uOjpVc2UsIG5hdmlnYXRpb25JRCwgRG93bmxvYWRJ
RCgpLCBXVEY6Om51bGxvcHQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFBvbGljeUNoZWNrSWRlbnRpZmllciBp
ZGVudGlmaWVyLAordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0Fj
dGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVT
ZWN1cml0eU9yaWdpbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCiAgICAgTmF2
aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHBy
b3RlY3RvcihwYWdlQ2xpZW50KCkpOwpAQCAtNTAzMyw3ICs1MDM1LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgY29uc3QKICAgICBlbHNlIHsKICAgICAgICAgUmVmUHRyPEFQSTo6RnJhbWVJbmZvPiBz
b3VyY2VGcmFtZUluZm87CiAgICAgICAgIGlmIChmcmFtZSkKLSAgICAgICAgICAgIHNvdXJjZUZy
YW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKmZyYW1lLCBmcmFtZVNlY3VyaXR5T3Jp
Z2luLnNlY3VyaXR5T3JpZ2luKCkpOworICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJ
OjpGcmFtZUluZm86OmNyZWF0ZSgqZnJhbWUsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiks
ICp0aGlzKTsKIAogICAgICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IG1fcHJvY2Vz
cy0+dXNlckluaXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJl
VG9rZW5JZGVudGlmaWVyKTsKICAgICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSBtX21h
aW5GcmFtZSA/ICFob3N0c0FyZUVxdWFsKG1fbWFpbkZyYW1lLT51cmwoKSwgcmVxdWVzdC51cmwo
KSkgOiBmYWxzZTsKQEAgLTUwNDUsMTMgKzUwNDcsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29u
c3QKICAgICAgICAgCiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNw
b25zZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBm
cmFtZVNlY3VyaXR5T3JpZ2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKK3Zv
aWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgUG9saWN5
Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCiAgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJp
YnV0ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewot
ICAgIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1f
d2ViUGFnZUlELCBmcmFtZUlELCBmcmFtZVNlY3VyaXR5T3JpZ2luLCBpZGVudGlmaWVyLCBuYXZp
Z2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0
cmlidXRlLCBsaXN0ZW5lcklELCB1c2VyRGF0YSk7CisgICAgZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2VTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdURk1v
dmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9u
c2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1dGUsIGxpc3RlbmVy
SUQsIHVzZXJEYXRhKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJl
c3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgUGFnZUlkZW50aWZp
ZXIgd2ViUGFnZUlELCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmln
aW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRp
ZmllciwKK3ZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwg
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJp
dHlPcmlnaW4sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAogICAgIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmlu
ZyYgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRh
JiB1c2VyRGF0YSkKIHsKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xp
ZW50KCkpOwpAQCAtNTA4MCw3ICs1MDgyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywKICAg
ICBpZiAobV9wb2xpY3lDbGllbnQpCiAgICAgICAgIG1fcG9saWN5Q2xpZW50LT5kZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZSgqdGhpcywgKmZyYW1lLCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01J
TUVUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2Jq
ZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogICAgIGVsc2UgewotICAgICAgICBhdXRv
IG5hdmlnYXRpb25SZXNwb25zZSA9IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlOjpjcmVhdGUoQVBJ
OjpGcmFtZUluZm86OmNyZWF0ZSgqZnJhbWUsIGZyYW1lU2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlP
cmlnaW4oKSkuZ2V0KCksIHJlcXVlc3QsIHJlc3BvbnNlLCBjYW5TaG93TUlNRVR5cGUsIGRvd25s
b2FkQXR0cmlidXRlKTsKKyAgICAgICAgYXV0byBuYXZpZ2F0aW9uUmVzcG9uc2UgPSBBUEk6Ok5h
dmlnYXRpb25SZXNwb25zZTo6Y3JlYXRlKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKmZyYW1lLCBX
VEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCAqdGhpcykuZ2V0KCksIHJlcXVlc3QsIHJlc3Bv
bnNlLCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlKTsKICAgICAgICAgbV9uYXZp
Z2F0aW9uQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UoKnRoaXMsIFdU
Rk1vdmUobmF2aWdhdGlvblJlc3BvbnNlKSwgV1RGTW92ZShsaXN0ZW5lciksIHByb2Nlc3MtPnRy
YW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKICAgICB9
CiB9CkBAIC01MjE4LDEyICs1MjIwLDEzIEBAIHN0YXRpYyB2b2lkIHRyeVNPQXV0aG9yaXphdGlv
bihSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmIG5hdmlnYXRpb25BY3Rpb24sIFdlCiAjZW5k
aWYKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZv
RGF0YSYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVu
dGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2lu
ZG93RmVhdHVyZXMmJiB3aW5kb3dGZWF0dXJlcywgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZTo6
RGVsYXllZFJlcGx5JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZShG
cmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBPcHRpb25hbDxXZWJQYWdl
UHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgV2luZG93RmVhdHVyZXMmJiB3aW5kb3dGZWF0dXJlcywgTmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRl
TmV3UGFnZTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhtX3By
b2Nlc3MsIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5mcmFtZUlEKTsKLSAgICBNRVNTQUdFX0NI
RUNLKG1fcHJvY2VzcywgbV9wcm9jZXNzLT53ZWJGcmFtZSgqb3JpZ2luYXRpbmdGcmFtZUluZm9E
YXRhLmZyYW1lSUQpKTsKKyAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgbV9wcm9jZXNzLT53
ZWJGcmFtZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCkpOwogCi0gICAgYXV0byBv
cmlnaW5hdGluZ0ZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUob3JpZ2luYXRpbmdG
cmFtZUluZm9EYXRhLCBtX3Byb2Nlc3MtPndlYlBhZ2UoKm9yaWdpbmF0aW5nUGFnZUlEKSk7Cisg
ICAgYXV0byogb3JpZ2luYXRpbmdQYWdlID0gbV9wcm9jZXNzLT53ZWJQYWdlKCpvcmlnaW5hdGlu
Z1BhZ2VJRCk7CisgICAgYXV0byBvcmlnaW5hdGluZ0ZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZv
OjpjcmVhdGUoV1RGTW92ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEpLCBvcmlnaW5hdGluZ1Bh
Z2UgPyAqb3JpZ2luYXRpbmdQYWdlIDogKnRoaXMpOwogICAgIGF1dG8gbWFpbkZyYW1lVVJMID0g
bV9tYWluRnJhbWUgPyBtX21haW5GcmFtZS0+dXJsKCkgOiBVUkwoKTsKICAgICBhdXRvIGNvbXBs
ZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWFp
bkZyYW1lVVJMLCByZXF1ZXN0LCByZXBseSA9IFdURk1vdmUocmVwbHkpXSAoUmVmUHRyPFdlYlBh
Z2VQcm94eT4gbmV3UGFnZSkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghbmV3UGFnZSkgewpAQCAt
NTI5Myw3ICs1Mjk2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlUGFnZShib29sIHN0b3BS
ZXNwb25zaXZlbmVzc1RpbWVyKQogICAgIG1fdWlDbGllbnQtPmNsb3NlKHRoaXMpOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydDo6
RGVsYXllZFJlcGx5JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEFs
ZXJ0KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0
eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpS
dW5KYXZhU2NyaXB0QWxlcnQ6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIFdlYkZyYW1l
UHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdF
X0NIRUNLKG1fcHJvY2VzcywgZnJhbWUpOwpAQCAtNTMwOSwxMCArNTMxMiwxMCBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBj
b25zdCBTZWN1cml0eU9yaQogICAgICAgICBpZiAoYXV0byogYXV0b21hdGlvblNlc3Npb24gPSBw
cm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5hdXRvbWF0aW9uU2Vzc2lvbigpKQogICAgICAgICAgICAg
YXV0b21hdGlvblNlc3Npb24tPndpbGxTaG93SmF2YVNjcmlwdERpYWxvZygqdGhpcyk7CiAgICAg
fQotICAgIG1fdWlDbGllbnQtPnJ1bkphdmFTY3JpcHRBbGVydCh0aGlzLCBtZXNzYWdlLCBmcmFt
ZSwgc2VjdXJpdHlPcmlnaW4sIFdURk1vdmUocmVwbHkpKTsKKyAgICBtX3VpQ2xpZW50LT5ydW5K
YXZhU2NyaXB0QWxlcnQoKnRoaXMsIG1lc3NhZ2UsIGZyYW1lLCBXVEZNb3ZlKHNlY3VyaXR5T3Jp
Z2luKSwgV1RGTW92ZShyZXBseSkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNj
cmlwdENvbmZpcm0oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdENvbmZpcm06OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQor
dm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRDb25maXJtKEZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6
RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3By
b2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBm
cmFtZSk7CkBAIC01MzI5LDEwICs1MzMyLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZh
U2NyaXB0Q29uZmlybShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPCiAg
ICAgICAgICAgICBhdXRvbWF0aW9uU2Vzc2lvbi0+d2lsbFNob3dKYXZhU2NyaXB0RGlhbG9nKCp0
aGlzKTsKICAgICB9CiAKLSAgICBtX3VpQ2xpZW50LT5ydW5KYXZhU2NyaXB0Q29uZmlybSh0aGlz
LCBtZXNzYWdlLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW4sIFdURk1vdmUocmVwbHkpKTsKKyAgICBt
X3VpQ2xpZW50LT5ydW5KYXZhU2NyaXB0Q29uZmlybSgqdGhpcywgbWVzc2FnZSwgZnJhbWUsIFdU
Rk1vdmUoc2VjdXJpdHlPcmlnaW4pLCBXVEZNb3ZlKHJlcGx5KSk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpydW5KYXZhU2NyaXB0UHJvbXB0KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpS
dW5KYXZhU2NyaXB0UHJvbXB0OjpEZWxheWVkUmVwbHkmJiByZXBseSkKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpydW5KYXZhU2NyaXB0UHJvbXB0KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTZWN1cml0
eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNj
cmlwdFByb21wdDo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgV2ViRnJhbWVQcm94eSog
ZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0so
bV9wcm9jZXNzLCBmcmFtZSk7CkBAIC01MzQ4LDcgKzUzNTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cnVuSmF2YVNjcmlwdFByb21wdChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU2Vj
dXJpdHlPcgogICAgICAgICAgICAgYXV0b21hdGlvblNlc3Npb24tPndpbGxTaG93SmF2YVNjcmlw
dERpYWxvZygqdGhpcyk7CiAgICAgfQogCi0gICAgbV91aUNsaWVudC0+cnVuSmF2YVNjcmlwdFBy
b21wdCh0aGlzLCBtZXNzYWdlLCBkZWZhdWx0VmFsdWUsIGZyYW1lLCBzZWN1cml0eU9yaWdpbiwg
V1RGTW92ZShyZXBseSkpOworICAgIG1fdWlDbGllbnQtPnJ1bkphdmFTY3JpcHRQcm9tcHQoKnRo
aXMsIG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSwgZnJhbWUsIFdURk1vdmUoc2VjdXJpdHlPcmlnaW4p
LCBXVEZNb3ZlKHJlcGx5KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTdGF0dXNUZXh0
KGNvbnN0IFN0cmluZyYgdGV4dCkKQEAgLTU0OTEsNyArNTQ5NCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpyb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBJbnRSZWN0JiB2aWV3UmVj
dCwgQ29tcGxlCiAgICAgY29tcGxldGlvbkhhbmRsZXIocGFnZUNsaWVudCgpLnJvb3RWaWV3VG9B
Y2Nlc3NpYmlsaXR5U2NyZWVuKHZpZXdSZWN0KSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpy
dW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOjpE
ZWxheWVkUmVwbHkmJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxvYWRD
b25maXJtUGFuZWwoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYm
IHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDo6RGVsYXllZFJlcGx5JiYgcmVwbHkp
CiB7CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1l
SUQpOwogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBmcmFtZSk7CkBAIC01NTA4LDcgKzU1
MTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKEZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTZQogCiAgICAgLy8gU2luY2UgcnVuQmVmb3Jl
VW5sb2FkQ29uZmlybVBhbmVsKCkgY2FuIHNwaW4gYSBuZXN0ZWQgcnVuIGxvb3Agd2UgbmVlZCB0
byB0dXJuIG9mZiB0aGUgcmVzcG9uc2l2ZW5lc3MgdGltZXIuCiAgICAgbV9wcm9jZXNzLT5yZXNw
b25zaXZlbmVzc1RpbWVyKCkuc3RvcCgpOwotICAgIG1fdWlDbGllbnQtPnJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbCh0aGlzLCBtZXNzYWdlLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW4sIFdURk1v
dmUocmVwbHkpKTsKKyAgICBtX3VpQ2xpZW50LT5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwo
KnRoaXMsIG1lc3NhZ2UsIGZyYW1lLCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSwgV1RGTW92ZShy
ZXBseSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0
aWVzKGNvbnN0IFZpZXdwb3J0QXR0cmlidXRlcyYgYXR0cikKQEAgLTU1MzEsNyArNTUzNCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpwYWdlRGlkU2Nyb2xsKCkKICNlbmRpZgogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6cnVuT3BlblBhbmVsKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIGNvbnN0IEZpbGVDaG9vc2Vy
U2V0dGluZ3MmIHNldHRpbmdzKQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bk9wZW5QYW5lbChGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9y
aWdpbiwgY29uc3QgRmlsZUNob29zZXJTZXR0aW5ncyYgc2V0dGluZ3MpCiB7CiAgICAgaWYgKG1f
b3BlblBhbmVsUmVzdWx0TGlzdGVuZXIpIHsKICAgICAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lci0+aW52YWxpZGF0ZSgpOwpAQCAtNTU1NSw3ICs1NTU4LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnJ1bk9wZW5QYW5lbChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXQKICAgICAvLyBTaW5jZSBydW5PcGVuUGFuZWwoKSBjYW4gc3BpbiBhIG5lc3RlZCBy
dW4gbG9vcCB3ZSBuZWVkIHRvIHR1cm4gb2ZmIHRoZSByZXNwb25zaXZlbmVzcyB0aW1lci4KICAg
ICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdG9wKCk7CiAKLSAgICBpZiAoIW1f
dWlDbGllbnQtPnJ1bk9wZW5QYW5lbCh0aGlzLCBmcmFtZSwgZnJhbWVTZWN1cml0eU9yaWdpbiwg
cGFyYW1ldGVycy5wdHIoKSwgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5nZXQoKSkpIHsKKyAg
ICBpZiAoIW1fdWlDbGllbnQtPnJ1bk9wZW5QYW5lbCgqdGhpcywgZnJhbWUsIFdURk1vdmUoZnJh
bWVTZWN1cml0eU9yaWdpbiksIHBhcmFtZXRlcnMucHRyKCksIG1fb3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIuZ2V0KCkpKSB7CiAgICAgICAgIGlmICghcGFnZUNsaWVudCgpLmhhbmRsZVJ1bk9wZW5Q
YW5lbCh0aGlzLCBmcmFtZSwgcGFyYW1ldGVycy5wdHIoKSwgbV9vcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lci5nZXQoKSkpCiAgICAgICAgICAgICBkaWRDYW5jZWxGb3JPcGVuUGFuZWwoKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGM2YzM2ZjM1NDhmMzg1
NzE4ZmM4NGFiYzI0MWZlZTA5N2UyM2JiYjkuLjAwNjAyOWM5MjZhNjlhNGEzNzE3YzFjNGI0Y2U2
ZThjN2QxMDBmMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0x
NTQyLDcgKzE1NDIsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBMb2dpYyBzaGFyZWQgYmV0d2VlbiB0
aGUgV2ViUGFnZVByb3h5IGFuZCB0aGUgUHJvdmlzaW9uYWxQYWdlUHJveHkuCiAgICAgdm9pZCBk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwm
JiwgVVJMJiYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBkaWRG
YWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3Ry
aW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNv
cmU6OldpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRG
YWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBm
cmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYg
cHJvdmlzaW9uYWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpX
aWxsQ29udGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBVc2VyRGF0YSYpOwogICAg
IHZvaWQgZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0
aW9uVVJMU3RyaW5nLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkUGVy
Zm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5n
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwpAQCAtMTU1MSw3ICsxNTUxLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJp
dHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwKICAgICAgICAgdWludDY0
X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYs
IE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsCiAgICAgICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0
Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0
IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lG
b3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRl
bnRpZmllciwKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmln
aW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwKICAgICAgICAgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYg
ZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7
CiAgICAgdm9pZCBzdGFydFVSTFNjaGVtZVRhc2tTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYpOwog
ICAgIHZvaWQgbG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQVBJOjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBl
bmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdl
YkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGlj
aWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5v
dEFsbG93KTsKQEAgLTE2NzIsNyArMTY3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVy
Zm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHVybCwgZG91YmxlIGRlbGF5LCBXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0
KTsKICAgICB2b2lkIGRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmKTsK
LSAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0
eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFs
VVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6V2lsbENvbnRpbnVl
TG9hZGluZywgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29u
c3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYs
IFdlYkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9p
ZCBkaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0
b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6
OkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8
V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNv
bnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNl
ckRhdGEmKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTE3
MDcsOSArMTcwNyw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uU3luYyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGJvb2wgaXNNYWluRnJhbWUs
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50
aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKICAg
ICAgICAgRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBv
cmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5h
bFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jRGVsYXllZFJlcGx5JiYpOwotICAg
IHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgV2ViQ29yZTo6UG9saWN5
Q2hlY2tJZGVudGlmaWVyLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAorICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwg
TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBV
c2VyRGF0YSYpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwKKyAgICB2b2lk
IGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwg
dWludDY0X3QgbmF2aWdhdGlvbklELAogICAgICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlN
RVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVy
SUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCB1bmFibGVUb0ltcGxlbWVudFBvbGljeShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBj
b25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgYmVnaW5TYWZlQnJvd3NpbmdDaGVjayhjb25zdCBV
UkwmLCBib29sLCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkmKTsKQEAgLTE3MjcsMTEgKzE3
MjcsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFVwZGF0ZUhpc3RvcnlUaXRsZShjb25zdCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
KTsKIAogICAgIC8vIFVJIGNsaWVudAotICAgIHZvaWQgY3JlYXRlTmV3UGFnZShjb25zdCBGcmFt
ZUluZm9EYXRhJiwgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQ
YWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJl
cyYmLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVh
dGVOZXdQYWdlRGVsYXllZFJlcGx5JiYpOworICAgIHZvaWQgY3JlYXRlTmV3UGFnZShGcmFtZUlu
Zm9EYXRhJiYsIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFn
ZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMm
JiwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRl
TmV3UGFnZURlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHNob3dQYWdlKCk7Ci0gICAgdm9pZCBy
dW5KYXZhU2NyaXB0QWxlcnQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmLCBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpSdW5KYXZhU2NyaXB0QWxlcnREZWxheWVkUmVwbHkmJik7Ci0gICAgdm9pZCBydW5KYXZh
U2NyaXB0Q29uZmlybShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlJ1bkphdmFTY3JpcHRDb25maXJtRGVsYXllZFJlcGx5JiYpOwotICAgIHZvaWQgcnVuSmF2YVNj
cmlwdFByb21wdChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRQcm9tcHREZWxheWVkUmVwbHkmJik7CisgICAgdm9p
ZCBydW5KYXZhU2NyaXB0QWxlcnQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmJiwgY29uc3QgU3RyaW5nJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6UnVuSmF2YVNjcmlwdEFsZXJ0RGVsYXllZFJlcGx5JiYpOworICAgIHZvaWQgcnVuSmF2YVNj
cmlwdENvbmZpcm0oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiwgY29uc3QgU3RyaW5nJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2
YVNjcmlwdENvbmZpcm1EZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0UHJv
bXB0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlJ1bkphdmFTY3JpcHRQcm9tcHREZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBzZXRTdGF0dXNU
ZXh0KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2Vi
SGl0VGVzdFJlc3VsdERhdGEmJiwgdWludDMyX3QgbW9kaWZpZXJzLCBVc2VyRGF0YSYmKTsKIApA
QCAtMTc1NCwxMCArMTc1NCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcm9vdFZpZXdUb1NjcmVl
bihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB2aWV3UmVjdCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6Um9vdFZpZXdUb1NjcmVlbkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGFjY2Vzc2liaWxp
dHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzY3JlZW5Qb2ludCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpJbnRQb2ludCk+JiYpOwogICAgIHZvaWQg
cm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdmll
d1JlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6SW50UmVjdCk+JiYpOwotICAg
IHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxE
ZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWxEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBkaWRDaGFuZ2VWaWV3cG9y
dFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJik7CiAgICAgdm9p
ZCBwYWdlRGlkU2Nyb2xsKCk7Ci0gICAgdm9pZCBydW5PcGVuUGFuZWwoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBXZWJD
b3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzJik7CisgICAgdm9pZCBydW5PcGVuUGFuZWwoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgY29uc3Qg
V2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyYpOwogICAgIHZvaWQgc2hvd1NoYXJlU2hlZXQo
Y29uc3QgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYsIFNoYXJlU2hlZXRDYWxsYmFj
a0lEKTsKICAgICB2b2lkIHByaW50RnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZXhjZWVkZWREYXRhYmFzZVF1b3Rh
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwg
dWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2
NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGFEZWxheWVkUmVwbHkmJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJEZXZpY2VP
cmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2ViRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3ND
b250cm9sbGVyLmNwcAppbmRleCBmODVkZDU3NjcwZmRlOWQzMzkxZTFiZjZkMTdkZTAyYTU0MWI0
NDkzLi5jY2NhODMzYTk2OWNkNTg4ZmI5MmRhOWM0NTU3Mzg2NmZlZjM4MjI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJEZXZpY2VPcmllbnRhdGlv
bkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJv
bGxlci5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgdm9pZCBXZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1v
dGlvbkFjY2Vzc0NvbnRyb2xsZXI6OnNob3VsZEFsbG93QWNjZXNzKFdlYlBhZ2VQcm8KICAgICBp
ZiAocGVuZGluZ1JlcXVlc3RzLnNpemUoKSA+IDEpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBh
Z2UudWlDbGllbnQoKS5zaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNz
KHBhZ2UsIGZyYW1lLCBvcmlnaW5EYXRhLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0
aGlzKSwgb3JpZ2luRGF0YV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICBwYWdlLnVpQ2xp
ZW50KCkuc2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzcyhwYWdlLCBm
cmFtZSwgV1RGTW92ZShvcmlnaW5EYXRhKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
dGhpcyksIG9yaWdpbkRhdGFdKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICgh
d2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1fZGV2aWNlT3JpZW50YXRp
b25QZXJtaXNzaW9uRGVjaXNpb25zLnNldChvcmlnaW5EYXRhLCBncmFudGVkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1Mu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9T
Lm1tCmluZGV4IDcwYmE2NzhhNzk1M2I2MmQxZmY1YjU1YjI3MTgxYWY0YTBiNWYwMGEuLjgzZjBi
NmQxY2I0N2UyZTc4ZWY1ZDI4NDFmY2MzYTYwZmQzMTlkMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQpAQCAt
MTg2LDcgKzE4Niw3IEBAIHN0YXRpYyB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShXS0dlb2xv
Y2F0aW9uTWFuYWdlclJlZiBnZW9sb2NhdGlvbk1hbmFnZXIsIGJvCiAgICAgICAgIGlkPFdLVUlE
ZWxlZ2F0ZVByaXZhdGU+IHVpRGVsZWdhdGUgPSBzdGF0aWNfY2FzdDxpZCA8V0tVSURlbGVnYXRl
UHJpdmF0ZT4+KFtyZXF1ZXN0LnZpZXcgVUlEZWxlZ2F0ZV0pOwogICAgICAgICBpZiAoW3VpRGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0R2VvbG9j
YXRpb25BdXRob3JpemF0aW9uRm9yVVJMOmZyYW1lOmRlY2lzaW9uSGFuZGxlcjopXSkgewogICAg
ICAgICAgICAgVVJMIHJlcXVlc3RGcmFtZVVSTChVUkwoKSwgcmVxdWVzdC5mcmFtZS0+dXJsKCkp
OwotICAgICAgICAgICAgUmV0YWluUHRyPFdLRnJhbWVJbmZvPiBmcmFtZUluZm8gPSB3cmFwcGVy
KEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKnJlcXVlc3QuZnJhbWUuZ2V0KCksICpyZXF1ZXN0Lm9y
aWdpbi5nZXQoKSkpOworICAgICAgICAgICAgUmV0YWluUHRyPFdLRnJhbWVJbmZvPiBmcmFtZUlu
Zm8gPSB3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKnJlcXVlc3QuZnJhbWUuZ2V0KCks
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB7IHJlcXVlc3Qub3JpZ2luLT5kYXRhKCkgfSwg
KnJlcXVlc3Qudmlldy0+X3BhZ2UpKTsKICAgICAgICAgICAgIGF1dG8gY2hlY2tlciA9IFdlYktp
dDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKHVpRGVsZWdhdGUsIEBzZWxl
Y3Rvcihfd2ViVmlldzpyZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uRm9yVVJMOmZyYW1l
OmRlY2lzaW9uSGFuZGxlcjopKTsKICAgICAgICAgICAgIFdLV2ViVmlldyAqdmlld0Zyb21SZXF1
ZXN0ID0gcmVxdWVzdC52aWV3LmdldCgpOwogICAgICAgICAgICAgW3VpRGVsZWdhdGUgX3dlYlZp
ZXc6dmlld0Zyb21SZXF1ZXN0IHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6
cmVxdWVzdEZyYW1lVVJMIGZyYW1lOmZyYW1lSW5mby5nZXQoKSBkZWNpc2lvbkhhbmRsZXI6bWFr
ZUJsb2NrUHRyKFtyZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgY2hlY2tlciA9IFdURk1vdmUo
Y2hlY2tlcildKEJPT0wgYXV0aG9yaXplZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVy
LmNwcAppbmRleCA2YmY4MTYyMDBhMTc5OGQ1ZjRmZjE5NzQ5YmU4M2ZkMzMzNzE1MDBkLi44NjFm
MGI5OWU3MGVmYjJlOGM3YzA2ZGNmMjAzMDU2N2Y2MjVjOWFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyLmNwcApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICB+U2NyaXB0
TWVzc2FnZUNsaWVudCgpIHsgfQogCi0gICAgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJQYWdlUHJv
eHkmIHBhZ2UsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZFBvc3RN
ZXNzYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkgb3ZlcnJpZGUKICAgICB7
CiAgICAgICAgIGF1dG8gdG9rZW5zID0gc2VyaWFsaXplZFNjcmlwdFZhbHVlLnRvU3RyaW5nKCku
c3BsaXQoIjoiKTsKICAgICAgICAgaWYgKHRva2Vucy5zaXplKCkgIT0gMykKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1ODIyMDM5NTA0OTIzYmU3
NmRhNTVlY2UyNTAyYWM5YjU1ZTM3YzlhLi5lNTA3ZTc0MGI1NTU2MDg1MjlkOTI0OWQzOGNkMmM1
MzEzMzlhODE0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMTEtMTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBXS0ZyYW1lSW5mby53ZWJWaWV3IHNob3Vs
ZCBub3QgcmV0dXJuIG5pbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA0MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24ubW06CisgICAgICAgIChURVNUKToKKwogMjAxOS0xMS0xMyAgQWFr
YXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSB3ZWJraXRw
ZXJsIEVXUyByb2J1c3QgYWdhaW5zdCBmbGFraW5lc3MgaW4gd2Via2l0cGVybCB0ZXN0cwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9EZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uLm1tCmluZGV4IDA0NTQzYjI5
OGU4MTJlZWExMjA3NjRkMzI1OGJhYzQ5MGExMzU2OWEuLjgyOTA2NjZhZjBlOGJjMDM2MTMzYWI2
YjA2MzYxN2MxNDM4NGIwMTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbi5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24ubW0KQEAgLTI1MCw3ICsyNTAsNyBAQCBURVNUKFdlYktpdCwgRGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbk9wZW5OZXdXaW5kb3dBbmREZWFsbG9jU291cmNlV2ViVmlldwog
CiAgICAgRVhQRUNUX0VRKFdLTmF2aWdhdGlvblR5cGVPdGhlciwgW2FjdGlvbiBuYXZpZ2F0aW9u
VHlwZV0pOwogICAgIEVYUEVDVF9UUlVFKFthY3Rpb24gc291cmNlRnJhbWVdICE9IFthY3Rpb24g
dGFyZ2V0RnJhbWVdKTsKLSAgICBFWFBFQ1RfRVEobmlsLCBbW2FjdGlvbiBzb3VyY2VGcmFtZV0g
d2ViVmlld10pOworICAgIEVYUEVDVF9FUShuZXdXZWJWaWV3LmdldCgpLCBbW2FjdGlvbiBzb3Vy
Y2VGcmFtZV0gd2ViVmlld10pOwogICAgIEVYUEVDVF9FUShuZXdXZWJWaWV3LmdldCgpLCBbW2Fj
dGlvbiB0YXJnZXRGcmFtZV0gd2ViVmlld10pOwogCiAgICAgbmV3V2ViVmlldyA9IG51bGxwdHI7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383579</attachid>
            <date>2019-11-14 15:26:06 -0800</date>
            <delta_ts>2019-11-14 17:09:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204199-20191114152605.patch</filename>
            <type>text/plain</type>
            <size>103777</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQyODEzNGU1OWJmYmU3NjQz
NDM1NzIwYzBmMjdjOGVmYjZhZjU3MTAuLmI2ZTk2N2RlZTYxOTI0N2NkODk5Nzc0ZWE4NDIyNzdm
NjQ0YjRiOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMTktMTEtMTQgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBXS0ZyYW1lSW5m
by53ZWJWaWV3IHNob3VsZCBub3QgcmV0dXJuIG5pbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSXQgaXMgbWFya2VkIGFzIHJldHVybmluZyBub24tbnVs
bC4gIExldCdzIG1ha2UgdGhhdCB0cnVlLgorICAgICAgICBBbHNvLCByZW1vdmUgYSBmZXcgY29w
aWVzIG9mIHNlY3VyaXR5IG9yaWdpbiBkYXRhLgorCisgICAgICAgICogU2hhcmVkL0ZyYW1lSW5m
b0RhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUluZm9EYXRhOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9GcmFtZUluZm9EYXRhLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElGcmFtZUluZm8uY3BwOgorICAgICAgICAoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSk6CisgICAg
ICAgIChBUEk6OkZyYW1lSW5mbzo6RnJhbWVJbmZvKToKKyAgICAgICAgKEFQSTo6RnJhbWVJbmZv
Ojp+RnJhbWVJbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6RnJhbWVJbmZvOjpjbGVhclBh
Z2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgIChB
UEk6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0
aEVycm9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50Lmg6CisgICAgICAg
IChBUEk6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoQVBJOjpVSUNs
aWVudDo6cnVuSmF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6cnVu
SmF2YVNjcmlwdFByb21wdCk6CisgICAgICAgIChBUEk6OlVJQ2xpZW50OjpydW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWwpOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6cnVuT3BlblBhbmVsKToK
KyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNwcDoKKyAgICAgICAgKFdLRnJhbWVDcmVh
dGVGcmFtZUluZm8pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAg
ICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VOYXZp
Z2F0aW9uQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJbmZv
Lm1tOgorICAgICAgICAoLVtXS0ZyYW1lSW5mbyB3ZWJWaWV3XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpO
YXZpZ2F0aW9uQ2xpZW50OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJv
cik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRBbGVydCk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVs
ZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChXZWJLaXQ6
OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFdl
YktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6
cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6
OlVJQ2xpZW50OjpydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25h
bFBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdl
YktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6ZGlkUG9zdE1l
c3NhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdG9yTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JN
YW5hZ2VyOjpydW5QYW5lbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWVTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnJ1bkphdmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpydW5KYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnJ1bk9wZW5QYW5lbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorCiAyMDE5LTExLTEzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbIGlPUyBdOiBMYXlvdXQgVGVzdCBodHRwL3Rlc3RzL0luZGV4ZWREQi9zdG9yYWdl
LWxpbWl0LTEuaHR0cHMuaHRtbCBpcyBhIEZsYWt5IEZhaWx1cmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
RnJhbWVJbmZvRGF0YS5jcHAKaW5kZXggZWQwM2JhNDhhYjk0NTE5YjkxZTQ0MGMyMzQxNWZhYzQx
MGRjZDdiMy4uMWZhNDZmYWI2OWE2Y2YzMTE1ZGFkZDZmOTE0NzEwNGVmZWYyNTU3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRnJhbWVJbmZvRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvRnJhbWVJbmZvRGF0YS5jcHAKQEAgLTM4LDI1ICszOCwzNCBAQCB2b2lk
IEZyYW1lSW5mb0RhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAg
ZW5jb2RlciA8PCBmcmFtZUlEOwogfQogCi1ib29sIEZyYW1lSW5mb0RhdGE6OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIsIEZyYW1lSW5mb0RhdGEmIHJlc3VsdCkKK09wdGlvbmFsPEZyYW1l
SW5mb0RhdGE+IEZyYW1lSW5mb0RhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaXNNYWluRnJhbWUpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucmVxdWVzdCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBPcHRpb25hbDxib29sPiBpc01haW5GcmFtZTsKKyAg
ICBkZWNvZGVyID4+IGlzTWFpbkZyYW1lOworICAgIGlmICghaXNNYWluRnJhbWUpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3Q+IHJlcXVlc3Q7CisgICAgZGVjb2RlciA+PiByZXF1ZXN0OworICAgIGlmICghcmVxdWVz
dCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgIE9wdGlvbmFsPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YT4gc2VjdXJpdHlPcmlnaW47CiAgICAgZGVjb2RlciA+PiBzZWN1
cml0eU9yaWdpbjsKICAgICBpZiAoIXNlY3VyaXR5T3JpZ2luKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgcmVzdWx0LnNlY3VyaXR5T3JpZ2luID0gV1RGTW92ZSgqc2VjdXJpdHlPcmlnaW4p
OwotICAgIAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4+
IGZyYW1lSUQ7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQ7CiAgICAgZGVjb2RlciA+PiBmcmFtZUlE
OwogICAgIGlmICghZnJhbWVJRCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdC5m
cmFtZUlEID0gV1RGTW92ZSgqZnJhbWVJRCk7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4ge3sKKyAgICAgICAgV1RGTW92ZSgqaXNN
YWluRnJhbWUpLAorICAgICAgICBXVEZNb3ZlKCpyZXF1ZXN0KSwKKyAgICAgICAgV1RGTW92ZSgq
c2VjdXJpdHlPcmlnaW4pLAorICAgICAgICBXVEZNb3ZlKCpmcmFtZUlEKQorICAgIH19OwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9GcmFtZUluZm9EYXRhLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9GcmFtZUluZm9EYXRhLmgKaW5kZXggNTM4NzE2ZWIyMWViNTQw
YTQxNzc5YzdlNmI4ZmZkNDM1MmZiYzEzYS4uMTM1NGI1MmQ4NWZiMTk4ZDk5YWMxNTlmNTNjNWE4
NjIyMGU3ZTAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRnJhbWVJbmZvRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEuaApAQCAtMzgsMTIg
KzM4LDEyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgRnJhbWVJbmZvRGF0YSB7CiAg
ICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIGJvb2wgZGVj
b2RlKElQQzo6RGVjb2RlciYsIEZyYW1lSW5mb0RhdGEmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8
RnJhbWVJbmZvRGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiAgICAgYm9vbCBpc01haW5G
cmFtZSB7IGZhbHNlIH07CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Q7CiAg
ICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luOwotICAgIE9wdGlv
bmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRDsKKyAgICBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUZyYW1lSW5mby5jcHAKaW5kZXggODI5NzI4YjkxZDYxYWEyNjA0NzVlMmExYzkxZDI0
MjBlOTc4NjBmYi4uNzU3NjlmN2FlNTA3YzUxMDg2NzE3ZmNkMWQ0ZjI1OTc5YjdmMmJkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKQEAgLTMzLDQw
ICszMywzMSBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIAotUmVmPEZyYW1lSW5mbz4gRnJhbWVJbmZv
OjpjcmVhdGUoY29uc3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhJiBmcmFtZUluZm9EYXRhLCBXZWJL
aXQ6OldlYlBhZ2VQcm94eSogcGFnZSkKK1JlZjxGcmFtZUluZm8+IEZyYW1lSW5mbzo6Y3JlYXRl
KFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIFdlYktpdDo6V2ViUGFnZVBy
b3h5JiBwYWdlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYW1lSW5mbyhmcmFtZUlu
Zm9EYXRhLCBwYWdlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhbWVJbmZvKFdURk1v
dmUoZnJhbWVJbmZvRGF0YSksIHBhZ2UpKTsKIH0KIAotUmVmPEZyYW1lSW5mbz4gRnJhbWVJbmZv
OjpjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKQorUmVmPEZyYW1lSW5mbz4gRnJhbWVJ
bmZvOjpjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiBmcmFtZSwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW4sIFdlYktpdDo6V2ViUGFnZVByb3h5
JiBwYWdlKQogewotICAgIFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm9EYXRhOwotCi0g
ICAgZnJhbWVJbmZvRGF0YS5pc01haW5GcmFtZSA9IGZyYW1lLmlzTWFpbkZyYW1lKCk7Ci0gICAg
Ly8gRklYTUU6IFRoaXMgc2hvdWxkIHVzZSB0aGUgZnVsbCByZXF1ZXN0IG9mIHRoZSBmcmFtZSwg
bm90IGp1c3QgdGhlIFVSTC4KLSAgICBmcmFtZUluZm9EYXRhLnJlcXVlc3QgPSBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QoZnJhbWUudXJsKCkpOwotICAgIGZyYW1lSW5mb0RhdGEuc2VjdXJpdHlP
cmlnaW4gPSBzZWN1cml0eU9yaWdpbi5kYXRhKCk7Ci0gICAgZnJhbWVJbmZvRGF0YS5mcmFtZUlE
ID0gZnJhbWUuZnJhbWVJRCgpOwotCi0gICAgcmV0dXJuIGNyZWF0ZShmcmFtZUluZm9EYXRhLCBm
cmFtZS5wYWdlKCkpOworICAgIFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm9EYXRhIHsK
KyAgICAgICAgZnJhbWUuaXNNYWluRnJhbWUoKSwKKyAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0KGZyYW1lLnVybCgpKSwgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHVzZSB0aGUgZnVsbCBy
ZXF1ZXN0IG9mIHRoZSBmcmFtZSwgbm90IGp1c3QgdGhlIFVSTC4KKyAgICAgICAgV1RGTW92ZShz
ZWN1cml0eU9yaWdpbiksCisgICAgICAgIGZyYW1lLmZyYW1lSUQoKQorICAgIH07CisgICAgcmV0
dXJuIGNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBwYWdlKTsKIH0KIAotRnJhbWVJbmZv
OjpGcmFtZUluZm8oY29uc3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhJiBmcmFtZUluZm9EYXRhLCBX
ZWJLaXQ6OldlYlBhZ2VQcm94eSogcGFnZSkKK0ZyYW1lSW5mbzo6RnJhbWVJbmZvKGNvbnN0IFdl
YktpdDo6RnJhbWVJbmZvRGF0YSYgZnJhbWVJbmZvRGF0YSwgV2ViS2l0OjpXZWJQYWdlUHJveHkm
IHBhZ2UpCiAgICAgOiBtX2lzTWFpbkZyYW1lIHsgZnJhbWVJbmZvRGF0YS5pc01haW5GcmFtZSB9
CiAgICAgLCBtX3JlcXVlc3QgeyBmcmFtZUluZm9EYXRhLnJlcXVlc3QgfQogICAgICwgbV9zZWN1
cml0eU9yaWdpbiB7IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoZnJhbWVJbmZvRGF0YS5zZWN1cml0
eU9yaWdpbi5zZWN1cml0eU9yaWdpbigpKSB9Ci0gICAgLCBtX2hhbmRsZSB7IEFQSTo6RnJhbWVI
YW5kbGU6OmNyZWF0ZShmcmFtZUluZm9EYXRhLmZyYW1lSUQgPyAqZnJhbWVJbmZvRGF0YS5mcmFt
ZUlEIDogV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyeyB9KSB9Ci0gICAgLCBtX3BhZ2UgeyBtYWtl
UmVmUHRyKHBhZ2UpIH0KKyAgICAsIG1faGFuZGxlIHsgQVBJOjpGcmFtZUhhbmRsZTo6Y3JlYXRl
KGZyYW1lSW5mb0RhdGEuZnJhbWVJRCkgfQorICAgICwgbV9wYWdlIHsgcGFnZSB9CiB7CiB9CiAK
LUZyYW1lSW5mbzo6fkZyYW1lSW5mbygpCi17Ci19Ci0KLXZvaWQgRnJhbWVJbmZvOjpjbGVhclBh
Z2UoKQotewotICAgIG1fcGFnZSA9IG51bGxwdHI7Ci19CitGcmFtZUluZm86On5GcmFtZUluZm8o
KSA9IGRlZmF1bHQ7CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUZyYW1lSW5mby5oCmluZGV4IDk3OTNkZWM4MmM2OGRhMmQyNWI1MmVmNTZmZWZh
YTlhYzlmMmEyMzkuLjI1MmQ4M2IwMzUzMTY5ZTI3ZWY0YmFlMmM4ZWRmYWQ5NmZhZmQwN2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmgKQEAgLTI5LDcgKzI5
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7Ci1jbGFzcyBTZWN1cml0eU9yaWdpbjsKK3N0cnVjdCBTZWN1cml0eU9yaWdpbkRh
dGE7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDUsMjYgKzQ1LDI0IEBAIGNsYXNzIFNl
Y3VyaXR5T3JpZ2luOwogCiBjbGFzcyBGcmFtZUluZm8gZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1w
bDxPYmplY3Q6OlR5cGU6OkZyYW1lSW5mbz4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RnJh
bWVJbmZvPiBjcmVhdGUoY29uc3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhJiwgV2ViS2l0OjpXZWJQ
YWdlUHJveHkqKTsKLSAgICBzdGF0aWMgUmVmPEZyYW1lSW5mbz4gY3JlYXRlKGNvbnN0IFdlYktp
dDo6V2ViRnJhbWVQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJik7CisgICAg
c3RhdGljIFJlZjxGcmFtZUluZm8+IGNyZWF0ZShXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJiwgV2Vi
S2l0OjpXZWJQYWdlUHJveHkmKTsKKyAgICBzdGF0aWMgUmVmPEZyYW1lSW5mbz4gY3JlYXRlKGNv
bnN0IFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYm
LCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwogICAgIHZpcnR1YWwgfkZyYW1lSW5mbygpOwogCiAg
ICAgYm9vbCBpc01haW5GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNNYWluRnJhbWU7IH0KICAg
ICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QoKSBjb25zdCB7IHJldHVy
biBtX3JlcXVlc3Q7IH0KICAgICBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSB7IHJl
dHVybiBtX3NlY3VyaXR5T3JpZ2luLmdldCgpOyB9CiAgICAgQVBJOjpGcmFtZUhhbmRsZSYgaGFu
ZGxlKCkgeyByZXR1cm4gbV9oYW5kbGUuZ2V0KCk7IH0KLSAgICBXZWJLaXQ6OldlYlBhZ2VQcm94
eSogcGFnZSgpIHsgcmV0dXJuIG1fcGFnZS5nZXQoKTsgfQotCi0gICAgdm9pZCBjbGVhclBhZ2Uo
KTsKKyAgICBXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSgpIHsgcmV0dXJuIG1fcGFnZS5nZXQo
KTsgfQogCiBwcml2YXRlOgotICAgIEZyYW1lSW5mbyhjb25zdCBXZWJLaXQ6OkZyYW1lSW5mb0Rh
dGEmLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSopOworICAgIEZyYW1lSW5mbyhjb25zdCBXZWJLaXQ6
OkZyYW1lSW5mb0RhdGEmLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwogCiAgICAgYm9vbCBtX2lz
TWFpbkZyYW1lOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CiAgICAg
UmVmPFNlY3VyaXR5T3JpZ2luPiBtX3NlY3VyaXR5T3JpZ2luOwogICAgIFJlZjxGcmFtZUhhbmRs
ZT4gbV9oYW5kbGU7Ci0gICAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBtX3BhZ2U7Cisg
ICAgUmVmPFdlYktpdDo6V2ViUGFnZVByb3h5PiBtX3BhZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNs
aWVudC5oCmluZGV4IDk0ZGEzMmYwOGJlZGQ5NTQxMzQ3NDcwZDUyMmViNTA1MjU0MjUzOGYuLmJj
ZjhhMjAwOTAzNTE4YzI5OWI4MWRlZjNmOTM0ODE5NjNhNDFiYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaApAQCAtODMsNyArODMs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0
IFdURjo6U3RyaW5nJiBkZXN0aW5hdGlvblVSTCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENh
bmNlbENsaWVudFJlZGlyZWN0KFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25XaXRoRXJyb3IoV2ViS2l0OjpXZWJQ
YWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBOYXZpZ2F0aW9uKiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYsIE9iamVjdCopIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihXZWJLaXQ6OldlYlBhZ2VQcm94
eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYsIE5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgT2JqZWN0
KikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1l
V2l0aEVycm9yKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5Jiwg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIE5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiwgT2JqZWN0KikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1p
dE5hdmlnYXRpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBOYXZpZ2F0aW9uKiwgT2JqZWN0Kikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZChXZWJLaXQ6OldlYlBh
Z2VQcm94eSYsIE5hdmlnYXRpb24qLCBPYmplY3QqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmluaXNoTmF2aWdhdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIE5hdmlnYXRpb24qLCBPYmpl
Y3QqKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKaW5kZXgg
ZmRlZGZlNDYwMmFkN2Y3ZjUzYWMzMWY4YWNmMWE0NWZmNzA3Njg5OC4uZDkyMmJlMGIxZjdlM2Nm
YTU2MmNjZjlkNDI4OGQ2NDJmOWU1Y2ZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVVJQ2xpZW50LmgKQEAgLTk0LDkgKzk0LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBmb2N1cyhXZWJLaXQ6OldlYlBhZ2VQcm94eSopIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1bmZv
Y3VzKFdlYktpdDo6V2ViUGFnZVByb3h5KikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2
YVNjcmlwdEFsZXJ0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBX
ZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
LCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5k
bGVyKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViS2l0OjpX
ZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSos
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZvaWQgKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsgfQotICAg
IHZpcnR1YWwgdm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KFdlYktpdDo6V2ViUGFnZVByb3h5Kiwg
Y29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQ
cm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZvaWQg
KGNvbnN0IFdURjo6U3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhh
bmRsZXIoV1RGOjpTdHJpbmcoKSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdEFs
ZXJ0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6Oldl
YkZyYW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgRnVuY3Rpb248dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBj
b25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSB7IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsgfQorICAgIHZpcnR1YWwgdm9pZCBydW5KYXZh
U2NyaXB0UHJvbXB0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBj
b25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpTdHJpbmcoKSk7IH0KIAog
ICAgIHZpcnR1YWwgdm9pZCBzZXRTdGF0dXNUZXh0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29u
c3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVs
ZW1lbnQoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJLaXQ6OldlYkhpdFRlc3RSZXN1
bHREYXRhJiwgT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVyPiwgT2JqZWN0Kikg
eyB9CkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dG
cmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6RmxvYXRS
ZWN0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcih7IH0pOyB9CiAK
ICAgICB2aXJ0dWFsIGJvb2wgY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmly
bVBhbmVsKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6
OldlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBGdW5j
dGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxl
cih0cnVlKTsgfQorICAgIHZpcnR1YWwgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwo
V2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJh
bWVQcm94eSosIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBGdW5jdGlvbjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOyB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFNjcm9sbChXZWJLaXQ6OldlYlBhZ2VQcm94eSopIHsg
fQogCkBAIC0xMzYsNyArMTM2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBuZWVkc0Zv
bnRBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2hhbmdlRm9udEF0dHJpYnV0ZXMoY29uc3QgV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXMmKSB7
IH0KIAotICAgIHZpcnR1YWwgYm9vbCBydW5PcGVuUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkq
LCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmLCBPcGVuUGFuZWxQYXJhbWV0ZXJzKiwgV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclByb3h5KikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcnVuT3BlblBh
bmVsKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIE9wZW5QYW5lbFBhcmFtZXRlcnMqLCBXZWJLaXQ6Oldl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdl
YktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgU2VjdXJpdHlPcmln
aW4mLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYs
IFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFNlY3VyaXR5T3JpZ2luJiwgU2VjdXJpdHlPcmlnaW4m
LCBXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmIHJlcXVlc3QpIHsgcmVx
dWVzdC5kZW55KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9u
Rm9yT3JpZ2luKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5Jiwg
U2VjdXJpdHlPcmlnaW4mLCBTZWN1cml0eU9yaWdpbiYsIFdlYktpdDo6VXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrUHJveHkmIHJlcXVlc3QpIHsgcmVxdWVzdC5kZW55KCk7IH0KQEAgLTE4Myw3ICsx
ODMsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04p
Ci0gICAgdmlydHVhbCB2b2lkIHNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25B
Y2Nlc3MoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmIHdlYkZy
YW1lUHJveHksIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRs
ZXIoZmFsc2UpOyB9CisgICAgdmlydHVhbCB2b2lkIHNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRp
b25BbmRNb3Rpb25BY2Nlc3MoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1l
UHJveHkmIHdlYkZyYW1lUHJveHksIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRp
b25IYW5kbGVyKGZhbHNlKTsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xpY2tB
dXRvRmlsbEJ1dHRvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIE9iamVjdCopIHsgfQpAQCAtMTk3
LDcgKzE5Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2hvd1NhZmVCcm93c2lu
Z1dhcm5pbmcoKSB7IH0KIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0gICAgdmlydHVhbCB2b2lk
IHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJBdXRo
ZW50aWNhdGlvblBhbmVsJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OldlYkF1
dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRp
b25IYW5kbGVyKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFi
bGUpOyB9CisgICAgdmlydHVhbCB2b2lkIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoV2ViS2l0
OjpXZWJQYWdlUHJveHkmLCBXZWJBdXRoZW50aWNhdGlvblBhbmVsJiwgV2ViS2l0OjpXZWJGcmFt
ZVByb3h5JiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxSZXN1bHQ6OlVuYXZhaWxhYmxlKTsgfQogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLRnJhbWUuY3BwCmluZGV4IGE4NTYyZWE3ZjY1NjdkYjNhYzMwNmY3N2I5
MTAzYjk4MzRhYWJhMGMuLjk1NTYyMDUxODc1NGY3ZWIwY2U4N2Y0ZTc3YjMxYTlkNGYyNjZhNGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuY3BwCkBAIC0xMzQsNyAr
MTM0LDEwIEBAIFdLRnJhbWVIYW5kbGVSZWYgV0tGcmFtZUNyZWF0ZUZyYW1lSGFuZGxlKFdLRnJh
bWVSZWYgZnJhbWVSZWYpCiAKIFdLRnJhbWVJbmZvUmVmIFdLRnJhbWVDcmVhdGVGcmFtZUluZm8o
V0tGcmFtZVJlZiBmcmFtZVJlZikKIHsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6RnJhbWVJbmZv
OjpjcmVhdGUoKnRvSW1wbChmcmFtZVJlZiksIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVh
dGVGcm9tU3RyaW5nKHRvSW1wbChmcmFtZVJlZiktPnVybCgpKSkubGVha1JlZigpKTsKKyAgICBh
dXRvKiBwYWdlID0gdG9JbXBsKGZyYW1lUmVmKS0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHRvQVBJKCZBUEk6OkZyYW1lSW5mbzo6
Y3JlYXRlKCp0b0ltcGwoZnJhbWVSZWYpLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgeyBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh0b0ltcGwoZnJhbWVSZWYp
LT51cmwoKSktPmRhdGEoKSB9LCAqcGFnZSkubGVha1JlZigpKTsKIH0KIAogdm9pZCBXS0ZyYW1l
R2V0TWFpblJlc291cmNlRGF0YShXS0ZyYW1lUmVmIGZyYW1lUmVmLCBXS0ZyYW1lR2V0UmVzb3Vy
Y2VEYXRhRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA0NDYzNzI1MWRmZjVhMTkxNzNiYmFjNDdhNDMx
NWEzZmYyZjhmNmI0Li43Mzg0OWU4YzIyODRkMGM3MjEzMDA5NDkxZWYyOTBmMmY3NWUyYzI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTE1ODgsMjQgKzE1
ODgsMjQgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNv
bnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgICAgIG1fY2xpZW50LnVu
Zm9jdXModG9BUEkocGFnZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0K
IAotICAgICAgICB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChXZWJQYWdlUHJveHkqIHBhZ2UsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIGZpbmFsCisgICAgICAgIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdlYlBh
Z2VQcm94eSYgcGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFt
ZSwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlm
IChtX2NsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnQpIHsKICAgICAgICAgICAgICAgICBSZWZQdHI8
UnVuSmF2YVNjcmlwdEFsZXJ0UmVzdWx0TGlzdGVuZXI+IGxpc3RlbmVyID0gUnVuSmF2YVNjcmlw
dEFsZXJ0UmVzdWx0TGlzdGVuZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiAgICAgICAgICAgICAgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3Jp
Z2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNlY3VyaXR5T3JpZ2luRGF0YS5wcm90
b2NvbCwgc2VjdXJpdHlPcmlnaW5EYXRhLmhvc3QsIHNlY3VyaXR5T3JpZ2luRGF0YS5wb3J0KTsK
LSAgICAgICAgICAgICAgICBtX2NsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnQodG9BUEkocGFnZSks
IHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShzZWN1cml0eU9yaWdp
bi5nZXQoKSksIHRvQVBJKGxpc3RlbmVyLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnQodG9BUEkoJnBh
Z2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoc2VjdXJpdHlP
cmlnaW4uZ2V0KCkpLCB0b0FQSShsaXN0ZW5lci5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBpZiAobV9jbGllbnQucnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjUpIHsKICAgICAgICAgICAgICAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJp
dHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoc2VjdXJpdHlPcmlnaW5EYXRh
LnByb3RvY29sLCBzZWN1cml0eU9yaWdpbkRhdGEuaG9zdCwgc2VjdXJpdHlPcmlnaW5EYXRhLnBv
cnQpOwotICAgICAgICAgICAgICAgIG1fY2xpZW50LnJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNh
dGVkRm9yVXNlV2l0aFY1KHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJ
KGZyYW1lKSwgdG9BUEkoc2VjdXJpdHlPcmlnaW4uZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworICAgICAgICAgICAgICAgIG1fY2xpZW50LnJ1bkphdmFTY3JpcHRBbGVydF9kZXBy
ZWNhdGVkRm9yVXNlV2l0aFY1KHRvQVBJKCZwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0
b0FQSShmcmFtZSksIHRvQVBJKHNlY3VyaXR5T3JpZ2luLmdldCgpKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAg
ICAgaWYgKG1fY2xpZW50LnJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFYw
KSB7Ci0gICAgICAgICAgICAgICAgbV9jbGllbnQucnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjAodG9BUEkocGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEko
ZnJhbWUpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgICAgIG1fY2xp
ZW50LnJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKHRvQVBJKCZwYWdl
KSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0xNjE0LDI1ICsxNjE0LDI1IEBAIHZv
aWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VV
SUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwog
ICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybShXZWJQYWdlUHJv
eHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgICAgICB2b2lkIHJ1bkphdmFT
Y3JpcHRDb25maXJtKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBX
ZWJGcmFtZVByb3h5KiBmcmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW5E
YXRhLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAobV9jbGllbnQucnVuSmF2YVNjcmlwdENvbmZpcm0pIHsK
ICAgICAgICAgICAgICAgICBSZWZQdHI8UnVuSmF2YVNjcmlwdENvbmZpcm1SZXN1bHRMaXN0ZW5l
cj4gbGlzdGVuZXIgPSBSdW5KYXZhU2NyaXB0Q29uZmlybVJlc3VsdExpc3RlbmVyOjpjcmVhdGUo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICAgICAgICAgIFJlZlB0cjxBUEk6
OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShzZWN1cml0eU9yaWdpbkRhdGEucHJvdG9jb2wsIHNlY3VyaXR5T3JpZ2luRGF0YS5ob3N0
LCBzZWN1cml0eU9yaWdpbkRhdGEucG9ydCk7Ci0gICAgICAgICAgICAgICAgbV9jbGllbnQucnVu
SmF2YVNjcmlwdENvbmZpcm0odG9BUEkocGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9B
UEkoZnJhbWUpLCB0b0FQSShzZWN1cml0eU9yaWdpbi5nZXQoKSksIHRvQVBJKGxpc3RlbmVyLmdl
dCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVu
dC5ydW5KYXZhU2NyaXB0Q29uZmlybSh0b0FQSSgmcGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgp
KSwgdG9BUEkoZnJhbWUpLCB0b0FQSShzZWN1cml0eU9yaWdpbi5nZXQoKSksIHRvQVBJKGxpc3Rl
bmVyLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5ydW5KYXZh
U2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFY1KSB7CiAgICAgICAgICAgICAgICAg
UmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKHNlY3VyaXR5T3JpZ2luRGF0YS5wcm90b2NvbCwgc2VjdXJpdHlPcmln
aW5EYXRhLmhvc3QsIHNlY3VyaXR5T3JpZ2luRGF0YS5wb3J0KTsKLSAgICAgICAgICAgICAgICBi
b29sIHJlc3VsdCA9IG1fY2xpZW50LnJ1bkphdmFTY3JpcHRDb25maXJtX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjUodG9BUEkocGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJhbWUp
LCB0b0FQSShzZWN1cml0eU9yaWdpbi5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
CisgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBtX2NsaWVudC5ydW5KYXZhU2NyaXB0Q29u
ZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFY1KHRvQVBJKCZwYWdlKSwgdG9BUEkobWVzc2FnZS5p
bXBsKCkpLCB0b0FQSShmcmFtZSksIHRvQVBJKHNlY3VyaXR5T3JpZ2luLmdldCgpKSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG1fY2xpZW50LnJ1bkphdmFT
Y3JpcHRDb25maXJtX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjApIHsKLSAgICAgICAgICAgICAgICBi
b29sIHJlc3VsdCA9IG1fY2xpZW50LnJ1bkphdmFTY3JpcHRDb25maXJtX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjAodG9BUEkocGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJhbWUp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0
ID0gbV9jbGllbnQucnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZvclVzZVdpdGhWMCh0
b0FQSSgmcGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwogCiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmVzdWx0KTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xNjQxLDE4ICsxNjQxLDE4IEBA
IHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1Bh
Z2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihm
YWxzZSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHJ1bkphdmFTY3JpcHRQcm9tcHQoV2Vi
UGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVm
YXVsdFZhbHVlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JiBzZWN1cml0eU9yaWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgICAgIHZvaWQgcnVuSmF2YVNjcmlwdFByb21wdChX
ZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBk
ZWZhdWx0VmFsdWUsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBTZWN1cml0eU9yaWdpbkRhdGEmJiBz
ZWN1cml0eU9yaWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5y
dW5KYXZhU2NyaXB0UHJvbXB0KSB7CiAgICAgICAgICAgICAgICAgUmVmUHRyPFJ1bkphdmFTY3Jp
cHRQcm9tcHRSZXN1bHRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBSdW5KYXZhU2NyaXB0UHJvbXB0UmVz
dWx0TGlzdGVuZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAg
ICAgICAgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJ
OjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNlY3VyaXR5T3JpZ2luRGF0YS5wcm90b2NvbCwgc2Vj
dXJpdHlPcmlnaW5EYXRhLmhvc3QsIHNlY3VyaXR5T3JpZ2luRGF0YS5wb3J0KTsKLSAgICAgICAg
ICAgICAgICBtX2NsaWVudC5ydW5KYXZhU2NyaXB0UHJvbXB0KHRvQVBJKHBhZ2UpLCB0b0FQSSht
ZXNzYWdlLmltcGwoKSksIHRvQVBJKGRlZmF1bHRWYWx1ZS5pbXBsKCkpLCB0b0FQSShmcmFtZSks
IHRvQVBJKHNlY3VyaXR5T3JpZ2luLmdldCgpKSwgdG9BUEkobGlzdGVuZXIuZ2V0KCkpLCBtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgICAgIG1fY2xpZW50LnJ1bkphdmFT
Y3JpcHRQcm9tcHQodG9BUEkoJnBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGRl
ZmF1bHRWYWx1ZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIHRvQVBJKHNlY3VyaXR5T3JpZ2luLmdl
dCgpKSwgdG9BUEkobGlzdGVuZXIuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYg
KG1fY2xpZW50LnJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSkgewog
ICAgICAgICAgICAgICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdp
biA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShzZWN1cml0eU9yaWdpbkRhdGEucHJvdG9j
b2wsIHNlY3VyaXR5T3JpZ2luRGF0YS5ob3N0LCBzZWN1cml0eU9yaWdpbkRhdGEucG9ydCk7Ci0g
ICAgICAgICAgICAgICAgUmVmUHRyPEFQSTo6U3RyaW5nPiBzdHJpbmcgPSBhZG9wdFJlZih0b0lt
cGwobV9jbGllbnQucnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1KHRv
QVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGRlZmF1bHRWYWx1ZS5pbXBs
KCkpLCB0b0FQSShmcmFtZSksIHRvQVBJKHNlY3VyaXR5T3JpZ2luLmdldCgpKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKSkpOworICAgICAgICAgICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4g
c3RyaW5nID0gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LnJ1bkphdmFTY3JpcHRQcm9tcHRfZGVw
cmVjYXRlZEZvclVzZVdpdGhWNSh0b0FQSSgmcGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwg
dG9BUEkoZGVmYXVsdFZhbHVlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoc2VjdXJpdHlP
cmlnaW4uZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKSk7CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgaWYgKHN0cmluZykKICAgICAgICAgICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoc3RyaW5nLT5zdHJpbmcoKSk7CkBAIC0xNjYyLDcgKzE2NjIsNyBAQCB2
b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdl
VUlDbGllbnRCYXNlKiB3a0NsaWVudAogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBpZiAobV9jbGllbnQucnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNl
V2l0aFYwKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPEFQSTo6U3RyaW5nPiBzdHJpbmcgPSBh
ZG9wdFJlZih0b0ltcGwobV9jbGllbnQucnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9y
VXNlV2l0aFYwKHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGRlZmF1
bHRWYWx1ZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykp
KTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8QVBJOjpTdHJpbmc+IHN0cmluZyA9IGFkb3B0UmVm
KHRvSW1wbChtX2NsaWVudC5ydW5KYXZhU2NyaXB0UHJvbXB0X2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjAodG9BUEkoJnBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGRlZmF1bHRWYWx1
ZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpKTsKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoc3RyaW5nKQogICAgICAgICAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdHJpbmctPnN0cmluZygpKTsKQEAgLTE4MTQsMTYg
KzE4MTQsMTYgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYs
IGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgICAgIHJldHVybiBt
X2NsaWVudC5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxfZGVwcmVjYXRlZEZvclVzZVdpdGhW
NiB8fCBtX2NsaWVudC5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw7CiAgICAgICAgIH0KIAot
ICAgICAgICB2b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChXZWJLaXQ6OldlYlBhZ2VQ
cm94eSogcGFnZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsIFdlYktpdDo6V2ViRnJhbWVQ
cm94eSogZnJhbWUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgICAgIHZvaWQgcnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsKFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBXVEY6OlN0
cmluZyYgbWVzc2FnZSwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiBmcmFtZSwgU2VjdXJpdHlPcmln
aW5EYXRhJiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFs
CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5ydW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWwpIHsKICAgICAgICAgICAgICAgICBSZWZQdHI8UnVuQmVmb3JlVW5sb2FkQ29uZmly
bVBhbmVsUmVzdWx0TGlzdGVuZXI+IGxpc3RlbmVyID0gUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsUmVzdWx0TGlzdGVuZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0g
ICAgICAgICAgICAgICAgbV9jbGllbnQucnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKHRvQVBJ
KHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgdG9BUEkobGlzdGVu
ZXIuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgICAgIG1f
Y2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCh0b0FQSSgmcGFnZSksIHRvQVBJKG1l
c3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShsaXN0ZW5lci5nZXQoKSksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBpZiAobV9jbGllbnQucnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjYpIHsKLSAgICAgICAgICAgICAgICBib29sIHJlc3Vs
dCA9IG1fY2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbF9kZXByZWNhdGVkRm9yVXNl
V2l0aFY2KHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9
IG1fY2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbF9kZXByZWNhdGVkRm9yVXNlV2l0
aFY2KHRvQVBJKCZwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIocmVzdWx0KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0x
ODQ5LDEyICsxODQ5LDEyIEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBw
YWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihtX2NsaWVudC5leGNlZWRlZERhdGFiYXNlUXVvdGEodG9BUEkocGFn
ZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkob3JpZ2luKSwgdG9BUEkoZGF0YWJhc2VOYW1lLmltcGwo
KSksIHRvQVBJKGRhdGFiYXNlRGlzcGxheU5hbWUuaW1wbCgpKSwgY3VycmVudFF1b3RhLCBjdXJy
ZW50T3JpZ2luVXNhZ2UsIGN1cnJlbnREYXRhYmFzZVVzYWdlLCBleHBlY3RlZFVzYWdlLCBtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pKTsKICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgcnVuT3Bl
blBhbmVsKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEFQSTo6T3BlblBhbmVsUGFyYW1ldGVycyogcGFy
YW1ldGVycywgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSogbGlzdGVuZXIpIGZpbmFs
CisgICAgICAgIGJvb2wgcnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQ
cm94eSogZnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBBUEk6Ok9wZW5QYW5l
bFBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkq
IGxpc3RlbmVyKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LnJ1
bk9wZW5QYW5lbCkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAg
IG1fY2xpZW50LnJ1bk9wZW5QYW5lbCh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShw
YXJhbWV0ZXJzKSwgdG9BUEkobGlzdGVuZXIpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwor
ICAgICAgICAgICAgbV9jbGllbnQucnVuT3BlblBhbmVsKHRvQVBJKCZwYWdlKSwgdG9BUEkoZnJh
bWUpLCB0b0FQSShwYXJhbWV0ZXJzKSwgdG9BUEkobGlzdGVuZXIpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIApAQCAtMTkw
Niw3ICsxOTA2LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VS
ZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgfQogCiAjaWYg
RU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKLSAgICAgICAgdm9pZCBzaG91bGRBbGxvd0Rldmlj
ZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQ
cm94eSYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luRGF0YSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAg
ICAgICAgdm9pZCBzaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzKFdl
YlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYmIG9yaWdpbkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQu
c2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzcykKICAgICAgICAgICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwpAQCAtMjA3Niw3ICsyMDc2LDcg
QEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdL
UGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAgICAg
ICAgIC8vIFRoZSBjdXJyZW50IG1ldGhvZCBpcyBzcGVjaWFsaXplZCBmb3IgV2ViS2l0VGVzdFJ1
bm5lci4KLSAgICAgICAgdm9pZCBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKFdlYlBhZ2VQcm94
eSYsIEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYsIFdlYkZyYW1lUHJveHkmLCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktp
dDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZp
bmFsCisgICAgICAgIHZvaWQgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbChXZWJQYWdlUHJveHkm
LCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmLCBXZWJGcmFtZVByb3h5JiwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpXZWJB
dXRoZW50aWNhdGlvblBhbmVsUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKICAg
ICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5ydW5XZWJBdXRoZW50aWNhdGlvblBh
bmVsKSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpXZWJBdXRo
ZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSk7CkBAIC0yMTYwLDExICsyMTYwLDEx
IEBAIHZvaWQgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYs
IGNvbnN0IFdLUGFnZU5hdmlnYXRpb25DbGllCiAgICAgICAgICAgICBtX2NsaWVudC5kaWRGYWls
TmF2aWdhdGlvbih0b0FQSSgmcGFnZSksIHRvQVBJKG5hdmlnYXRpb24pLCB0b0FQSShlcnJvciks
IHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQog
Ci0gICAgICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3Io
V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBzdWJmcmFtZSwgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEsIEFQSTo6TmF2aWdhdGlv
biogbmF2aWdhdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6
T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9u
YWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJv
eHkmIHN1YmZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdp
bkRhdGEsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYgZXJyb3IsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJm
cmFtZSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRG
YWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZSh0b0FQSSgmcGFnZSksIHRvQVBJKG5hdmlnYXRp
b24pLCB0b0FQSShBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKHN1YmZyYW1lLCBzZWN1cml0eU9yaWdp
bkRhdGEuc2VjdXJpdHlPcmlnaW4oKSkucHRyKCkpLCB0b0FQSShlcnJvciksIHRvQVBJKHVzZXJE
YXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRp
ZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lKHRvQVBJKCZwYWdlKSwgdG9BUEkobmF2aWdh
dGlvbiksIHRvQVBJKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoc3ViZnJhbWUsIFdURk1vdmUoc2Vj
dXJpdHlPcmlnaW5EYXRhKSwgcGFnZSkucHRyKCkpLCB0b0FQSShlcnJvciksIHRvQVBJKHVzZXJE
YXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCiAgICAgICAgIHZv
aWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkKFdlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpOYXZpZ2F0
aW9uKiBuYXZpZ2F0aW9uLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGcmFtZUluZm8ubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGcmFtZUluZm8ubW0KaW5kZXggNjBl
YmYxM2Q5M2I3ODc1NWZjNzg5MzFjOThlZTg5YWNjMDhkMDU4NC4uNjZiMWE2MzNkZGNjNTQ5ZWNm
MjAyNDU1MGU3NjdmNjY5NDY4NmRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLRnJhbWVJbmZvLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0ZyYW1lSW5mby5tbQpAQCAtNjEsOSArNjEsNyBAQAogCiAtIChXS1dlYlZp
ZXcgKil3ZWJWaWV3CiB7Ci0gICAgaWYgKFdlYktpdDo6V2ViUGFnZVByb3h5KiBwYWdlID0gX2Zy
YW1lSW5mby0+cGFnZSgpKQotICAgICAgICByZXR1cm4gW1tmcm9tV2ViUGFnZVByb3h5KCpwYWdl
KSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBbW2Zy
b21XZWJQYWdlUHJveHkoX2ZyYW1lSW5mby0+cGFnZSgpKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsK
IH0KIAogLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xs
ZXIubW0KaW5kZXggYTAwYjIwM2NjOTA1OTMwMWJlY2M0NjFkNjFiNDY3MzJiODU2MTJmZC4uNmY2
NzhmMzRkZDU2OWJjOTM0Yzk2MWUzMTlmOWE0NjdlYTU3NGQyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJv
bGxlci5tbQpAQCAtMTI3LDEwICsxMjcsMTAgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAg
Ci0gICAgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSwgY29u
c3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhJiBmcmFtZUluZm9EYXRhLCBXZWJDb3JlOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkgb3ZlcnJpZGUKKyAgICB2b2lk
IGRpZFBvc3RNZXNzYWdlKFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJLaXQ6OkZyYW1l
SW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUm
IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEBhdXRvcmVs
ZWFzZXBvb2wgewotICAgICAgICAgICAgUmV0YWluUHRyPFdLRnJhbWVJbmZvPiBmcmFtZUluZm8g
PSB3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoZnJhbWVJbmZvRGF0YSwgJnBhZ2UpKTsK
KyAgICAgICAgICAgIFJldGFpblB0cjxXS0ZyYW1lSW5mbz4gZnJhbWVJbmZvID0gd3JhcHBlcihB
UEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvRGF0YSksIHBhZ2UpKTsKICAg
ICAgICAgICAgIGlkIGJvZHkgPSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxp
emUoc2VyaWFsaXplZFNjcmlwdFZhbHVlLCAwKTsKICAgICAgICAgICAgIGF1dG8gbWVzc2FnZSA9
IGFkb3B0TlMoW1tXS1NjcmlwdE1lc3NhZ2UgYWxsb2NdIF9pbml0V2l0aEJvZHk6Ym9keSB3ZWJW
aWV3OmZyb21XZWJQYWdlUHJveHkocGFnZSkgZnJhbWVJbmZvOmZyYW1lSW5mby5nZXQoKSBuYW1l
Om1fbmFtZS5nZXQoKV0pOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAppbmRleCBiZjdmOTVkN2Y2ZDgwZjNjYjcw
ZGQ2NTNlNGRmYjI4ZTAwMjdkMzBkLi40NzgwMTM0MmVhNjA5MmZiNWVjYWU4Mjc1NzI4MDM5NTk0
Y2Q0YjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRVSUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0VUlDbGllbnQuY3BwCkBAIC03NiwyNCArNzYsMjQgQEAgcHJpdmF0ZToKICAgICAgICAgd2Vi
a2l0V2ViVmlld0Nsb3NlUGFnZShtX3dlYlZpZXcpOwogICAgIH0KIAotICAgIHZvaWQgcnVuSmF2
YVNjcmlwdEFsZXJ0KFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgV2ViRnJh
bWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRB
bGVydChXZWJQYWdlUHJveHkmLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkq
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSBmaW5hbAogICAgIHsKICAgICAgICAgd2Via2l0V2ViVmlld1J1bkphdmFT
Y3JpcHRBbGVydChtX3dlYlZpZXcsIG1lc3NhZ2UudXRmOCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiAgICAgfQogCi0gICAgdm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybShXZWJQYWdl
UHJveHkqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBmaW5hbAorICAgIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViUGFnZVBy
b3h5JiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5KiwgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIGZpbmFsCiAgICAgewogICAgICAgICB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdENvbmZp
cm0obV93ZWJWaWV3LCBtZXNzYWdlLnV0ZjgoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgIH0KIAotICAgIHZvaWQgcnVuSmF2YVNjcmlwdFByb21wdChXZWJQYWdlUHJveHkqLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlLCBXZWJGcmFt
ZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgRnVuY3Rpb248dm9p
ZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAgICB2b2lkIHJ1
bkphdmFTY3JpcHRQcm9tcHQoV2ViUGFnZVByb3h5JiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgV2ViRnJhbWVQcm94eSosIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBmaW5hbAogICAgIHsKICAgICAgICAgd2Via2l0V2ViVmlld1J1bkphdmFTY3Jp
cHRQcm9tcHQobV93ZWJWaWV3LCBtZXNzYWdlLnV0ZjgoKSwgZGVmYXVsdFZhbHVlLnV0ZjgoKSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0KIAogICAgIGJvb2wgY2FuUnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0g
ICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV2ViUGFnZVByb3h5KiwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmlu
YWwKKyAgICB2b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChXZWJQYWdlUHJveHkmLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmlu
YWwKICAgICB7CiAgICAgICAgIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0QmVmb3JlVW5sb2Fk
Q29uZmlybShtX3dlYlZpZXcsIG1lc3NhZ2UudXRmOCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiAgICAgfQpAQCAtMjExLDcgKzIxMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGRlZmF1bHRRdW90YSk7CiAgICAgfQogCi0gICAgYm9vbCBydW5PcGVuUGFu
ZWwoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYsIEFQSTo6T3BlblBhbmVsUGFyYW1ldGVycyogcGFyYW1ldGVycywgV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSogbGlzdGVuZXIpIGZpbmFsCisgICAgYm9vbCBydW5P
cGVuUGFuZWwoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSosIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmLCBBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIFdlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqIGxpc3RlbmVyKSBmaW5hbAogICAgIHsKICAgICAg
ICAgR1JlZlB0cjxXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9wdEdSZWYo
d2Via2l0RmlsZUNob29zZXJSZXF1ZXN0Q3JlYXRlKHBhcmFtZXRlcnMsIGxpc3RlbmVyKSk7CiAg
ICAgICAgIHdlYmtpdFdlYlZpZXdSdW5GaWxlQ2hvb3NlclJlcXVlc3QobV93ZWJWaWV3LCByZXF1
ZXN0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCmluZGV4IDY3ZDlkOTQ5OTAwMTlh
Yzg2MzIwNWU1OTcyODc1MGM2ZDQ5MDVlNWUuLjk5NGJkMmVkZTg2NTVlNTY2Yjg3ZTRkZjA3YTJk
OGJiOGRlYTMxMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcApAQCAtMTkwLDcgKzE5MCw3
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJQ
YWdlUHJveHkmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRQb3N0
TWVzc2FnZShXZWJQYWdlUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKSBvdmVycmlkZQogICAgIHsKICAg
ICAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCoganNSZXN1bHQgPSB3ZWJraXRKYXZhc2NyaXB0
UmVzdWx0Q3JlYXRlKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CiAgICAgICAgIGdfc2lnbmFsX2Vt
aXQobV9tYW5hZ2VyLCBzaWduYWxzW1NDUklQVF9NRVNTQUdFX1JFQ0VJVkVEXSwgbV9oYW5kbGVy
TmFtZSwganNSZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRs
ZXIuY3BwCmluZGV4IDViYTYxMGU3ZDlhNDRkMDQ3MzgzODFlMjNkMDQwYmRhOTJjM2ZjOWYuLjZl
YzI2MGIyY2M0NWNmYzhkYmI1ZTVhNWU1MWY4ODEwZjJiMGUzN2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJl
bW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGlj
OgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYlBhZ2VQcm94eSYg
cGFnZSwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKSBvdmVycmlkZQorICAgIHZvaWQgZGlkUG9zdE1lc3Nh
Z2UoV2ViUGFnZVByb3h5JiBwYWdlLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKSBvdmVycmlkZQogICAgIHsKICAg
ICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBzZXJpYWxpemVkU2NyaXB0VmFsdWUudG9TdHJpbmcoKTsK
ICAgICAgICAgVmVjdG9yPFN0cmluZz4gdG9rZW5zID0gbWVzc2FnZS5zcGxpdCgnOicpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAppbmRleCA5
NDYzZTUxNWNjN2JjZmZjNmMzYWMxMWRlNDQ1NTYzYTg5NWM5NTM5Li40NjBlYmE0YWNhOTMwNzMx
NjVlYjdmYTAxZTI3Zjg1MmJjNTg4ZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIHZvaWQgZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KFdlYlBhZ2VQcm94eSYsIGNvbnN0
IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmKSBvdmVycmlkZTsKICAgICAgICAgdm9p
ZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdChXZWJQYWdlUHJveHkmKSBvdmVycmlkZTsKICAgICAg
ICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uV2l0aEVycm9yKFdlYlBhZ2VQcm94
eSYsIFdlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBkaWRGYWls
UHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihXZWJQYWdlUHJveHkmLCBXZWJGcmFt
ZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgQVBJOjpOYXZpZ2F0
aW9uKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJp
ZGU7CisgICAgICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJy
b3IoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYmLCBBUEk6Ok5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwg
QVBJOjpPYmplY3QqKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRDb21taXROYXZpZ2F0aW9u
KFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7
CiAgICAgICAgIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkKFdlYlBhZ2VQcm94eSYsIEFQSTo6
TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkRmlu
aXNoTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVj
dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
TmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLm1tCmluZGV4IDNlOTg0YzFlZWY3NWI3NTI5YTNjNDNkODIzNjYyYWFjOTA1Yjcz
MGIuLjM1MmJlMWJjZmYwNjRiZTg3M2Y5YTQ0OTk1MzJjNTM2MWQ3NDBiMDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTg0Niw3
ICs4NDYsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmFp
bFByb3Zpc2lvbmFsTmF2aWdhdGlvbldpdGhFcnJvcihXZQogfQogCiAvLyBGSVhNRTogU2hvdWxk
bid0IG5lZWQgdG8gcGFzcyB0aGUgV2ViRnJhbWVQcm94eSBpbiBoZXJlLiBBdCBtb3N0LCBhIEZy
YW1lSGFuZGxlLgotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZh
aWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0aEVycm9yKFdlYlBhZ2VQcm94eSYgcGFnZSwg
V2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBz
ZWN1cml0eU9yaWdpbiwgQVBJOjpOYXZpZ2F0aW9uKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYgZXJyb3IsIEFQSTo6T2JqZWN0KikKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0
aW9uQ2xpZW50OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihXZWJQ
YWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIFNlY3VyaXR5T3Jp
Z2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luLCBBUEk6Ok5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpPYmplY3QqKQogewogICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgYXNzZXJ0IHRoYXQgbmF2aWdhdGlvbiBpcyBub3QgbnVsbCBoZXJlLCBidXQgaXQn
cyBjdXJyZW50bHkgbnVsbCBiZWNhdXNlIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lIHBhc3NlcyBudWxsLgogCkBAIC04NTYsNyArODU2LDcgQEAgdm9pZCBOYXZp
Z2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1
YmZyYW1lV2l0aEVycm8KICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IG1fbmF2aWdhdGlv
blN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpOwogICAgIGF1dG8gZXJyb3JXaXRoUmVj
b3ZlcnlBdHRlbXB0ZXIgPSBjcmVhdGVFcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlcihtX25hdmln
YXRpb25TdGF0ZS5tX3dlYlZpZXcsIHdlYkZyYW1lUHJveHksIGVycm9yKTsKIAotICAgIFsoaWQg
PFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4pbmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3
Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBuYXZpZ2F0aW9uOm5pbCBkaWRGYWlsUHJvdmlz
aW9uYWxMb2FkSW5TdWJmcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUod2ViRnJh
bWVQcm94eSwgc2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSkpIHdpdGhFcnJvcjplcnJv
cldpdGhSZWNvdmVyeUF0dGVtcHRlci5nZXQoKV07CisgICAgWyhpZCA8V0tOYXZpZ2F0aW9uRGVs
ZWdhdGVQcml2YXRlPiluYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3Rh
dGUubV93ZWJWaWV3IG5hdmlnYXRpb246bmlsIGRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZy
YW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSh3ZWJGcmFtZVByb3h5LCBXVEZNb3Zl
KHNlY3VyaXR5T3JpZ2luKSwgcGFnZSkpIHdpdGhFcnJvcjplcnJvcldpdGhSZWNvdmVyeUF0dGVt
cHRlci5nZXQoKV07CiB9CiAKIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50
OjpkaWRDb21taXROYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpOYXZpZ2F0aW9u
KiBuYXZpZ2F0aW9uLCBBUEk6Ok9iamVjdCopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLmgKaW5kZXggZmFjNzBiNmJjMzBjODQ2ZTIwZTFkYWEyMTJjYTA2YjMwNjhh
MjIzYS4uMzNiYzE1YmJkOTQ0OTdiNTI4MWNjNDRiNjBjNjM5MGY1ZWIwOGRiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaApAQCAtODgsMTQgKzg4LDE0IEBA
IHByaXZhdGU6CiAgICAgICAgIHZvaWQgZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKFdlYlBh
Z2VQcm94eSopIGZpbmFsOwogICAgICAgICB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbihXZWJQYWdl
UHJveHkqKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbihXZWJQYWdlUHJv
eHkqKSBmaW5hbDsKLSAgICAgICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoV2ViUGFnZVByb3h5
KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBm
aW5hbDsKLSAgICAgICAgdm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybShXZWJQYWdlUHJveHkqLCBj
b25zdCBXVEY6OlN0cmluZyYsIFdlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBm
aW5hbDsKLSAgICAgICAgdm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KFdlYlBhZ2VQcm94eSosIGNv
bnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJGcmFtZVByb3h5KiwgY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgRnVuY3Rpb248dm9pZChjb25zdCBXVEY6
OlN0cmluZyYpPiYmKSBmaW5hbDsKKyAgICAgICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoV2Vi
UGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJGcmFtZVByb3h5KiwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiYsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikgZmluYWw7CisgICAgICAgIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViUGFnZVByb3h5
JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJGcmFtZVByb3h5KiwgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZp
bmFsOworICAgICAgICB2b2lkIHJ1bkphdmFTY3JpcHRQcm9tcHQoV2ViUGFnZVByb3h5JiwgY29u
c3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYkZyYW1lUHJveHkqLCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgRnVuY3Rpb248dm9pZChjb25zdCBXVEY6OlN0cmlu
ZyYpPiYmKSBmaW5hbDsKICAgICAgICAgdm9pZCBwcmVzZW50U3RvcmFnZUFjY2Vzc0NvbmZpcm1E
aWFsb2coY29uc3QgV1RGOjpTdHJpbmcmIHJlcXVlc3RpbmdEb21haW4sIGNvbnN0IFdURjo6U3Ry
aW5nJiBjdXJyZW50RG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAg
ICAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm0oV2ViUGFnZVByb3h5JiwgV2Vi
RnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZXF1ZXN0aW5n
RG9tYWluLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgY3VycmVudERvbWFpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGVj
aWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmLCBX
ZWJGcmFtZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+
JikgZmluYWw7CiAgICAgICAgIGJvb2wgY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkg
Y29uc3QgZmluYWw7Ci0gICAgICAgIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdl
YlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViRnJhbWVQcm94eSosIGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIGZpbmFsOworICAgICAgICB2b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1Q
YW5lbChXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYkZyYW1lUHJveHkqLCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikgZmluYWw7CiAgICAgICAgIHZvaWQgZXhjZWVkZWREYXRhYmFzZVF1b3Rh
KFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBBUEk6OlNlY3VyaXR5T3JpZ2luKiwgY29u
c3QgV1RGOjpTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIGRpc3BsYXlO
YW1lLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFF1b3RhLCB1bnNpZ25lZCBsb25nIGxvbmcg
Y3VycmVudE9yaWdpblVzYWdlLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFVzYWdlLCB1bnNp
Z25lZCBsb25nIGxvbmcgZXhwZWN0ZWRVc2FnZSwgRnVuY3Rpb248dm9pZCh1bnNpZ25lZCBsb25n
IGxvbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKICAgICAgICAgdm9pZCByZWFjaGVk
QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luJiwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCB0b3RhbEJ5
dGVzTmVlZGVkLCBGdW5jdGlvbjx2b2lkKHVuc2lnbmVkIGxvbmcgbG9uZyk+JiYgY29tcGxldGlv
bkhhbmRsZXIpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZFJlc2lnbklucHV0RWxlbWVudFN0cm9u
Z1Bhc3N3b3JkQXBwZWFyYW5jZShXZWJQYWdlUHJveHkmLCBBUEk6Ok9iamVjdCopIGZpbmFsOwpA
QCAtMTIxLDEyICsxMjEsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBtb3VzZURpZE1vdmVP
dmVyRWxlbWVudChXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYsIE9w
dGlvblNldDxXZWJFdmVudDo6TW9kaWZpZXI+LCBBUEk6Ok9iamVjdCopOwogICAgICAgICB2b2lk
IGRpZENsaWNrQXV0b0ZpbGxCdXR0b24oV2ViUGFnZVByb3h5JiwgQVBJOjpPYmplY3QqKSBmaW5h
bDsKICAgICAgICAgdm9pZCB0b29sYmFyc0FyZVZpc2libGUoV2ViUGFnZVByb3h5JiwgRnVuY3Rp
b248dm9pZChib29sKT4mJikgZmluYWw7Ci0gICAgICAgIGJvb2wgcnVuT3BlblBhbmVsKFdlYlBh
Z2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmLCBBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnMqLCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
clByb3h5KikgZmluYWw7CisgICAgICAgIGJvb2wgcnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSYs
IFdlYkZyYW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgQVBJOjpPcGVu
UGFuZWxQYXJhbWV0ZXJzKiwgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSopIGZpbmFs
OwogICAgICAgICB2b2lkIGRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZv
cmVncm91bmQoV2ViUGFnZVByb3h5JiwgV0tSZXNvdXJjZUxpbWl0KSBmaW5hbDsKICAgICAgICAg
dm9pZCBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFdlYlBhZ2VQcm94eSosIGNvbnN0
IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBVUkwmLCBBUEk6OkRhdGEm
KSBmaW5hbDsKICNlbmRpZgogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCi0gICAgICAg
IHZvaWQgc2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzcyhXZWJLaXQ6
OldlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKKyAgICAg
ICAgdm9pZCBzaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzKFdlYktp
dDo6V2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKICNlbmRpZgog
ICAgICAgICBib29sIG5lZWRzRm9udEF0dHJpYnV0ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZENoYW5nZUZvbnRBdHRyaWJ1
dGVzOyB9CiAgICAgICAgIHZvaWQgZGlkQ2hhbmdlRm9udEF0dHJpYnV0ZXMoY29uc3QgV2ViQ29y
ZTo6Rm9udEF0dHJpYnV0ZXMmKSBmaW5hbDsKQEAgLTE1NSw3ICsxNTUsNyBAQCBwcml2YXRlOgog
ICAgICAgICB2b2lkIGltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZFNob3dTYWZlQnJvd3NpbmdXYXJu
aW5nKCkgZmluYWw7CiAjaWYgRU5BQkxFKFdFQl9BVVRITikKLSAgICAgICAgdm9pZCBydW5XZWJB
dXRoZW50aWNhdGlvblBhbmVsKFdlYlBhZ2VQcm94eSYsIEFQSTo6V2ViQXV0aGVudGljYXRpb25Q
YW5lbCYsIFdlYkZyYW1lUHJveHkmLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpPiYm
KSBmaW5hbDsKKyAgICAgICAgdm9pZCBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKFdlYlBhZ2VQ
cm94eSYsIEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYsIFdlYkZyYW1lUHJveHkmLCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJBdXRo
ZW50aWNhdGlvblBhbmVsUmVzdWx0KT4mJikgZmluYWw7CiAjZW5kaWYKIAogICAgICAgICBVSURl
bGVnYXRlJiBtX3VpRGVsZWdhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlE
ZWxlZ2F0ZS5tbQppbmRleCBhNzUwMzQ2MjAxNmZlMTYxNzFiMTYwNDY3NGUxNmMzZWE5MmY5ODlk
Li5kM2NlMGVhMzIwYmY4NjdiMWNhYjFmMzFjZWFlMmU2ZTQ3NDhmZjE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTI3Miw3ICsyNzIsNyBAQCB2
b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjcmVhdGVOZXdQYWdlKFdlYktpdDo6V2ViUGFnZVBy
b3h5JiwgV2ViQ29yZTo6V2luZG93RgogICAgIGNvbXBsZXRpb25IYW5kbGVyKHdlYlZpZXctPl9w
YWdlLmdldCgpKTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlw
dEFsZXJ0KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFt
ZVByb3h5KiB3ZWJGcmFtZVByb3h5LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
IHNlY3VyaXR5T3JpZ2luRGF0YSwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdEFsZXJ0KFdlYlBhZ2VQ
cm94eSYgcGFnZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkqIHdl
YkZyYW1lUHJveHksIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2lu
RGF0YSwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICgh
bV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSdW5KYXZhU2NyaXB0QWxlcnRQ
YW5lbFdpdGhNZXNzYWdlSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0yODYsNyArMjg2LDcgQEAgdm9pZCBVSURlbGVn
YXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdEFsZXJ0KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdU
Rjo6U3RyaW5nJgogICAgIH0KIAogICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVy
Q2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKHdlYlZpZXc6cnVu
SmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRp
b25IYW5kbGVyOikpOwotICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZp
ZXcgcnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZTptZXNzYWdlIGluaXRpYXRlZEJ5
RnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCp3ZWJGcmFtZVByb3h5LCBzZWN1
cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSkpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VC
bG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
Y2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildIHsKKyAgICBbZGVsZWdhdGUgd2ViVmlldzptX3Vp
RGVsZWdhdGUubV93ZWJWaWV3IHJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6bWVz
c2FnZSBpbml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqd2Vi
RnJhbWVQcm94eSwgV1RGTW92ZShzZWN1cml0eU9yaWdpbkRhdGEpLCBwYWdlKSkgY29tcGxldGlv
bkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gewogICAgICAgICBpZiAo
Y2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0yOTQsNyArMjk0LDcgQEAg
dm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdEFsZXJ0KFdlYlBhZ2VQcm94
eSosIGNvbnN0IFdURjo6U3RyaW5nJgogICAgIH0pLmdldCgpXTsKIH0KIAotdm9pZCBVSURlbGVn
YXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViUGFnZVByb3h5KiwgY29uc3Qg
V1RGOjpTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHksIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlv
bjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBVSURlbGVnYXRlOjpVSUNs
aWVudDo6cnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBXVEY6
OlN0cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcm94eSwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVs
ZWdhdGVNZXRob2RzLndlYlZpZXdSdW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2VJ
bml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOwpAQCAtMzA4LDcgKzMwOCw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGll
bnQ6OnJ1bkphdmFTY3JpcHRDb25maXJtKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5n
CiAgICAgfQogCiAgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tl
cjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3Iod2ViVmlldzpydW5KYXZhU2NyaXB0
Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxl
cjopKTsKLSAgICBbZGVsZWdhdGUgd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1bkph
dmFTY3JpcHRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTptZXNzYWdlIGluaXRpYXRlZEJ5RnJhbWU6
d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCp3ZWJGcmFtZVByb3h5LCBzZWN1cml0eU9y
aWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSkpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0
cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tl
ciA9IFdURk1vdmUoY2hlY2tlcildIChCT09MIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgW2RlbGVn
YXRlIHdlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBydW5KYXZhU2NyaXB0Q29uZmlybVBh
bmVsV2l0aE1lc3NhZ2U6bWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpGcmFt
ZUluZm86OmNyZWF0ZSgqd2ViRnJhbWVQcm94eSwgV1RGTW92ZShzZWN1cml0eU9yaWdpbkRhdGEp
LCBwYWdlKSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2Vy
KV0gKEJPT0wgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRp
b25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwpAQCAtMzE2LDcgKzMxNiw3IEBAIHZvaWQgVUlEZWxl
Z2F0ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRDb25maXJtKFdlYlBhZ2VQcm94eSosIGNvbnN0
IFdURjo6U3RyaW5nCiAgICAgfSkuZ2V0KCldOwogfQogCi12b2lkIFVJRGVsZWdhdGU6OlVJQ2xp
ZW50OjpydW5KYXZhU2NyaXB0UHJvbXB0KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5n
JiBtZXNzYWdlLCBjb25zdCBXVEY6OlN0cmluZyYgZGVmYXVsdFZhbHVlLCBXZWJGcmFtZVByb3h5
KiB3ZWJGcmFtZVByb3h5LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3Vy
aXR5T3JpZ2luRGF0YSwgRnVuY3Rpb248dm9pZChjb25zdCBXVEY6OlN0cmluZyYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdFBy
b21wdChXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBjb25z
dCBXVEY6OlN0cmluZyYgZGVmYXVsdFZhbHVlLCBXZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbkRhdGEsIEZ1bmN0
aW9uPHZvaWQoY29uc3QgV1RGOjpTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuSmF2YVNjcmlw
dFRleHRJbnB1dFBhbmVsV2l0aFByb21wdERlZmF1bHRUZXh0SW5pdGlhdGVkQnlGcmFtZUNvbXBs
ZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFN0cmluZygpKTsKQEAg
LTMzMCw3ICszMzAsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0
UHJvbXB0KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJgogICAgIH0KIAogICAgIGF1
dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0
ZS5nZXQoKSwgQHNlbGVjdG9yKHdlYlZpZXc6cnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0
aFByb21wdDpkZWZhdWx0VGV4dDppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOikp
OwotICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuSmF2YVNj
cmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDptZXNzYWdlIGRlZmF1bHRUZXh0OmRlZmF1bHRW
YWx1ZSBpbml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqd2Vi
RnJhbWVQcm94eSwgc2VjdXJpdHlPcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCkpKSBjb21wbGV0
aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoTlNTdHJpbmcgKnJl
c3VsdCkgbXV0YWJsZSB7CisgICAgW2RlbGVnYXRlIHdlYlZpZXc6bV91aURlbGVnYXRlLm1fd2Vi
VmlldyBydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0Om1lc3NhZ2UgZGVmYXVs
dFRleHQ6ZGVmYXVsdFZhbHVlIGluaXRpYXRlZEJ5RnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5m
bzo6Y3JlYXRlKCp3ZWJGcmFtZVByb3h5LCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luRGF0YSksIHBh
Z2UpKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAo
TlNTdHJpbmcgKnJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0
aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFVJRGVs
ZWdhdGU6OlVJQ2xpZW50OjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm0oV2ViUGFnZVByb3h5
JiwgV2ViRnJhbWVQcgogICAgIH0pLmdldCgpXTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNs
aWVudDo6ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6
OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6U2VjdXJp
dHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJL
aXQ6OldlYkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9y
aWdpbiwgRnVuY3Rpb248dm9pZChib29sKT4mIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlm
ICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0R2VvbG9jYXRp
b25QZXJtaXNzaW9uRm9yRnJhbWVEZWNpc2lvbkhhbmRsZXIpCiAgICAgICAgIHJldHVybjsKQEAg
LTM3Miw3ICszNzIsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lG
b3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6VwogICAgICAgICByZXR1cm47
CiAKICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVh
dGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uRm9yRnJhbWU6ZGVjaXNpb25IYW5kbGVyOikpOwotICAgIFsoaWQgPFdLVUlEZWxl
Z2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcmVx
dWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86
OmNyZWF0ZShmcmFtZSwgc2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSkpIGRlY2lzaW9u
SGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShj
b21wbGV0aW9uSGFuZGxlciwgbnVsbHB0ciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAo
Qk9PTCByZXN1bHQpIG11dGFibGUgeworICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRl
bGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcmVxdWVzdEdlb2xvY2F0aW9u
UGVybWlzc2lvbkZvckZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShmcmFtZSwg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHsgc2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmln
aW4oKS5kYXRhKCkgfSwgcGFnZSkpIGRlY2lzaW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBs
ZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShjb21wbGV0aW9uSGFuZGxlciwgbnVsbHB0ciks
IGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoQk9PTCByZXN1bHQpIG11dGFibGUgewogICAg
ICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxl
cigpOwpAQCAtMzk3LDcgKzM5Nyw3IEBAIGJvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNhblJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdWlEZWxlZ2F0
ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0
aE1lc3NhZ2VJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXI7CiB9CiAKLXZvaWQgVUlE
ZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChXZWJQYWdlUHJv
eHkqLCBjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94eSogd2ViRnJhbWVQ
cm94eSwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRh
dGEsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFVJRGVs
ZWdhdGU6OlVJQ2xpZW50OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV2ViUGFnZVByb3h5
JiBwYWdlLCBjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94eSogd2ViRnJh
bWVQcm94eSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW5EYXRh
LCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICgh
bV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSdW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWxXaXRoTWVzc2FnZUluaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlcikgewog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CkBAIC00MTEsNyArNDExLDcgQEAgdm9p
ZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYlBh
Z2VQcm94eSosIGNvbnN0IFdURjoKICAgICB9CiAKICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0
aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcihf
d2ViVmlldzpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRC
eUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOikpOwotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZh
dGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6bWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOndyYXBw
ZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqd2ViRnJhbWVQcm94eSwgc2VjdXJpdHlPcmlnaW5E
YXRhLnNlY3VyaXR5T3JpZ2luKCkpKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBX
VEZNb3ZlKGNoZWNrZXIpXSAoQk9PTCByZXN1bHQpIG11dGFibGUgeworICAgIFsoaWQgPFdLVUlE
ZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcg
cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6bWVzc2FnZSBpbml0aWF0ZWRC
eUZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqd2ViRnJhbWVQcm94eSwgV1RG
TW92ZShzZWN1cml0eU9yaWdpbkRhdGEpLCBwYWdlKSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJs
b2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBj
aGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJPT0wgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAg
ICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwpAQCAtODEz
LDcgKzgxMyw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5v
dGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6CiAgICAgfSkuZ2V0KCldOwogfQog
Ci1ib29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5Kiwg
V2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcm94eSwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEsIEFQSTo6T3BlblBhbmVsUGFyYW1ldGVycyogb3Bl
blBhbmVsUGFyYW1ldGVycywgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSogbGlzdGVu
ZXIpCitib29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5
JiBwYWdlLCBXZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5LCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbkRhdGEsIEFQSTo6T3BlblBhbmVsUGFyYW1ldGVycyog
b3BlblBhbmVsUGFyYW1ldGVycywgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSogbGlz
dGVuZXIpCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmll
d1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5k
bGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04MjIsNyArODIyLDcgQEAgYm9vbCBVSURl
bGVnYXRlOjpVSUNsaWVudDo6cnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJv
eHkqIHdlYkZyYW1lUHIKICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBhdXRvIGZyYW1lID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqd2ViRnJhbWVQcm94
eSwgc2VjdXJpdHlPcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCkpOworICAgIGF1dG8gZnJhbWUg
PSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCp3ZWJGcmFtZVByb3h5LCBXVEZNb3ZlKHNlY3VyaXR5
T3JpZ2luRGF0YSksIHBhZ2UpOwogCiAgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRs
ZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3Iod2ViVmlldzpy
dW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5k
bGVyOikpOwogCkBAIC04NDgsNyArODQ4LDcgQEAgYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6
cnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHIKICNl
bmRpZgogCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKLXZvaWQgVUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OnNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3MoV2Vi
S2l0OjpXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFtZVByb3h5LCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgVUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OnNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3Mo
V2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHks
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRv
IGRlbGVnYXRlID0gbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CiAgICAgaWYgKCFkZWxl
Z2F0ZSkKQEAgLTg2MCw3ICs4NjAsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpzaG91
bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzKFdlYktpdDo6VwogICAgIH0K
IAogICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0
ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKF93ZWJWaWV3OnNob3VsZEFsbG93RGV2aWNlT3Jp
ZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NSZXF1ZXN0ZWRCeUZyYW1lOmRlY2lzaW9uSGFuZGxlcjop
KTsKLSAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3Vp
RGVsZWdhdGUubV93ZWJWaWV3IHNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25B
Y2Nlc3NSZXF1ZXN0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSh3ZWJG
cmFtZVByb3h5LCBzZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSkpIGRlY2lzaW9u
SGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoQk9PTCBncmFudGVkKSBt
dXRhYmxlIHsKKyAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmll
dzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRN
b3Rpb25BY2Nlc3NSZXF1ZXN0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0
ZSh3ZWJGcmFtZVByb3h5LCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luRGF0YSksIHBhZ2UpKSBkZWNp
c2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJPT0wgZ3JhbnRl
ZCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0Jl
ZW5DYWxsZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2hlY2tlci0+ZGlkQ2Fs
bENvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xMjgxLDcgKzEyODEsNyBAQCBzdGF0aWMgV2ViQXV0
aGVudGljYXRpb25QYW5lbFJlc3VsdCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0KF9XS1dl
YkF1dGhlbnRpYwogICAgIHJldHVybiBXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2
YWlsYWJsZTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuV2ViQXV0aGVudGlj
YXRpb25QYW5lbChXZWJQYWdlUHJveHkmLCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmIHBh
bmVsLCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFtZVByb3h5LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJBdXRoZW50aWNh
dGlvblBhbmVsUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgVUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoV2ViUGFnZVByb3h5JiBwYWdlLCBB
UEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmIHBhbmVsLCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFt
ZVByb3h5LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmll
d1J1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWxJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRs
ZXIpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQXV0aGVudGljYXRpb25QYW5lbFJl
c3VsdDo6VW5hdmFpbGFibGUpOwpAQCAtMTI5NSw3ICsxMjk1LDcgQEAgdm9pZCBVSURlbGVnYXRl
OjpVSUNsaWVudDo6cnVuV2ViQXV0aGVudGljYXRpb25QYW5lbChXZWJQYWdlUHJveHkmLCBBUEk6
OldlYkF1dGgKICAgICB9CiAKICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNh
bGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcihfd2ViVmlldzpydW5X
ZWJBdXRoZW50aWNhdGlvblBhbmVsOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6
KSk7Ci0gICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91
aURlbGVnYXRlLm1fd2ViVmlldyBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsOndyYXBwZXIocGFu
ZWwpIGluaXRpYXRlZEJ5RnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKHdlYkZy
YW1lUHJveHksIG9yaWdpbi5zZWN1cml0eU9yaWdpbigpKSkgY29tcGxldGlvbkhhbmRsZXI6bWFr
ZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxS
ZXN1bHQgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilk
ZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1bldlYkF1dGhlbnRpY2F0
aW9uUGFuZWw6d3JhcHBlcihwYW5lbCkgaW5pdGlhdGVkQnlGcmFtZTp3cmFwcGVyKEFQSTo6RnJh
bWVJbmZvOjpjcmVhdGUod2ViRnJhbWVQcm94eSwgV1RGTW92ZShvcmlnaW4pLCBwYWdlKSkgY29t
cGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKF9XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGNo
ZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCA2
MmY1ODE1NDc1ODY1OGFlMjUzZmMyMDE5OWY3MTVlYzA5YjFkOWRkLi4yMTZiZTViZmYyMGE1NTY3
MDhmMDA1N2Y0ZTM1MGQxNWZmMjBhMmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgdm9pZCBQcm92
aXNpb25hbFBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlk
ZW50aWZpZXIgZnJhbWUKICAgICBtX3BhZ2UuZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFt
ZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQsIFdURk1v
dmUodXJsKSwgV1RGTW92ZSh1bnJlYWNoYWJsZVVSTCksIHVzZXJEYXRhKTsKIH0KIAotdm9pZCBQ
cm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZy
YW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBw
cm92aXNpb25hbFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIFdlYkNv
cmU6OldpbGxDb250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRh
dGEmIHVzZXJEYXRhKQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImIGVycm9yLCBXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5nIHdpbGxDb250aW51ZUxvYWRp
bmcsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIXZhbGlkYXRlSW5wdXQo
ZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjU1LDcgKzI1NSw3
IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JG
cmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJCiAgICAgaWYgKGF1dG8qIHBhZ2VNYWluRnJhbWUg
PSBtX3BhZ2UubWFpbkZyYW1lKCkpCiAgICAgICAgIHBhZ2VNYWluRnJhbWUtPmRpZEZhaWxQcm92
aXNpb25hbExvYWQoKTsKIAotICAgIG1fcGFnZS5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWVTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgZnJhbWVTZWN1cml0eU9yaWdp
biwgbmF2aWdhdGlvbklELCBwcm92aXNpb25hbFVSTCwgZXJyb3IsIHdpbGxDb250aW51ZUxvYWRp
bmcsIHVzZXJEYXRhKTsgLy8gTWF5IGRlbGV0ZSB8dGhpc3wuCisgICAgbV9wYWdlLmRpZEZhaWxQ
cm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlE
LCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBuYXZpZ2F0aW9uSUQsIHByb3Zpc2lvbmFs
VVJMLCBlcnJvciwgd2lsbENvbnRpbnVlTG9hZGluZywgdXNlckRhdGEpOyAvLyBNYXkgZGVsZXRl
IHx0aGlzfC4KIH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZv
ckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIs
IHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYg
Y2VydGlmaWNhdGVJbmZvLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdl
YkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25z
dCBVc2VyRGF0YSYgdXNlckRhdGEpCkBAIC0yOTgsMTMgKzI5OCwxMyBAQCB2b2lkIFByb3Zpc2lv
bmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMoRnJhbWVJ
ZGVudGlmaWVyCiAgICAgICAgIFdURk1vdmUoZnJhbWVJbmZvRGF0YSksIG9yaWdpbmF0aW5nUGFn
ZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVxdWVzdEJv
ZHkpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCB1c2VyRGF0YSwgbGlzdGVuZXJJRCk7CiB9
CiAKLXZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
IGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVu
dGlmaWVyLAordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYm
IGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVu
dGlmaWVyLAogICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1
dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAg
ICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9wYWdlLmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKG1fcHJvY2Vz
cy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlELCBmcmFtZVNlY3VyaXR5T3JpZ2luLCBp
ZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5
cGUsIGRvd25sb2FkQXR0cmlidXRlLCBsaXN0ZW5lcklELCB1c2VyRGF0YSk7CisgICAgbV9wYWdl
LmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2Vi
UGFnZUlELCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBpZGVudGlmaWVy
LCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGRvd25s
b2FkQXR0cmlidXRlLCBsaXN0ZW5lcklELCB1c2VyRGF0YSk7CiB9CiAKIHZvaWQgUHJvdmlzaW9u
YWxQYWdlUHJveHk6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuaAppbmRleCA3ZGJjZWY5ZDFkNTUzNWE4MzU0ZDdiYWUwYzYwMTFhMGE1MWI5MTM3
Li5jYjk1ZmUwMTBkYzY0MmZjZGY0NjMzN2MzZWJhZTgyMjJkZjEzMjQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKQEAgLTk4LDcgKzk4LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3lu
YyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYm
LCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmLAogICAgICAgICBPcHRpb25h
bDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0
YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsCisgICAgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsCiAgICAgICAg
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBj
b25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25z
dCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYpOwog
ICAgIHZvaWQgZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJM
U3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIpOwpAQCAtMTA4LDcgKzEwOCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRD
cmVhdGVNYWluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmLCBVUkwmJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNl
ckRhdGEmKTsKICAgICB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Ym9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlw
ZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCBjb250YWluc1BsdWdpbkRv
Y3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0lu
c2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lkIGRpZEZhaWxQcm92aXNp
b25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEm
KTsKKyAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlP
cmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVS
TCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6OldpbGxDb250aW51ZUxv
YWRpbmcsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBzdGFydFVSTFNjaGVtZVRhc2soVVJM
U2NoZW1lVGFza1BhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVtKGNv
bnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKT4mJik7CiAgICAgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGJv
b2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQ
b2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFj
dGlvbkRhdGEmJiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oCmluZGV4IDllMDEyZGMyNzUyYmM2
NTRlZmQ2NThkOWNjMjliMGM4Mzc2NDJiZDUuLmMyMWViOWU3OTIwODVhMjYwZGI5Y2I2MjEzYzI5
NWE3ZjlmYjYxMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaApAQCAtNTIsNyArNTIsNyBA
QCBwdWJsaWM6CiAgICAgY2xhc3MgQ2xpZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1
YWwgfkNsaWVudCgpIHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUG9zdE1lc3NhZ2UoV2Vi
UGFnZVByb3h5JiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYlBh
Z2VQcm94eSYsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
JikgPSAwOwogICAgIH07CiAKICAgICBzdGF0aWMgUmVmPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVy
PiBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPENsaWVudD4sIGNvbnN0IFN0cmluZyYgbmFtZSwgQVBJ
OjpVc2VyQ29udGVudFdvcmxkJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eS5jcHAKaW5kZXggMjI0YWQ3Y2ZlNzI3Njg5M2IyMzE1ZTE5NmZkNjYzZTM4ZmE1M2FkOS4uZDEw
ZTdiNWMxMjQ2YmRmOWJiMDNlZmFlYzA0ZDEwMTY0MmEzYzA5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5LmNwcApAQCAtMzU0LDcgKzM1NCw3IEBAIHZvaWQgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoQVBJ
OjpVc2VyQ29udGVuCiAgICAgcmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMod29ybGQsIG51bWJl
clJlbW92ZWQpOwogfQogCi12b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpkaWRQ
b3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgcGFnZVByb3h5SUQsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIGZyYW1lSW5mb0RhdGEsIHVp
bnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJl
ZmVyZW5jZSkKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmRpZFBvc3RNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBw
YWdlUHJveHlJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG1lc3Nh
Z2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKIHsK
ICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZVBy
b3h5SUQpOwogICAgIGlmICghcGFnZSkKQEAgLTM2Nyw3ICszNjcsNyBAQCB2b2lkIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5OjpkaWRQb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sCiAgICAgaWYgKCFoYW5kbGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBoYW5k
bGVyLT5jbGllbnQoKS5kaWRQb3N0TWVzc2FnZSgqcGFnZSwgZnJhbWVJbmZvRGF0YSwgV2ViQ29y
ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChkYXRhUmVmZXJlbmNlLnZlY3RvcigpKSk7
CisgICAgaGFuZGxlci0+Y2xpZW50KCkuZGlkUG9zdE1lc3NhZ2UoKnBhZ2UsIFdURk1vdmUoZnJh
bWVJbmZvRGF0YSksIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoZGF0YVJl
ZmVyZW5jZS52ZWN0b3IoKSkpOwogfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCmluZGV4IDA3ODBjMGMyMmFjNWY4
N2NlNmIwODA3MTA2OWRlOTQ2ZGE1NTk3MjguLjY3MWZiMjkyZDIwMTk2MDMzN2IwMzgzZWQwN2Iy
N2ZkYjk3ZTJjNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaApAQCAt
MTE0LDcgKzExNCw3IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KSBvdmVycmlkZTsKIAotICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
V2ViUGFnZVByb3h5SWRlbnRpZmllciwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG1l
c3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgZGlk
UG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgRnJh
bWVJbmZvRGF0YSYmLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmKTsKIAogICAgIHZvaWQgYWRkVXNlckNvbnRlbnRXb3JsZFVzZShBUEk6OlVzZXJD
b250ZW50V29ybGQmKTsKICAgICB2b2lkIHJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKEFQSTo6
VXNlckNvbnRlbnRXb3JsZCYsIHVuc2lnbmVkIG51bWJlck9mVXNlc1RvUmVtb3ZlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0b3JNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAppbmRleCBlOGM0MGViNDc4OThjNzc0ZTUzMGRl
NWIwNDBlZTk3MDVjZTBlYTk1Li5iYWFiZThkZWYxZDEwMjhjNTJmYWI3MDE0MjYyODQ3NzI3ZWVi
ZTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCkBAIC0zMzUsNyArMzM1
LDcgQEAgdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6cnVuUGFuZWwoKQogICAgIGF1dG8gdHJh
bnNwb3J0cyA9IGdldFRyYW5zcG9ydHMoKTsKICAgICBtX3BlbmRpbmdSZXF1ZXN0RGF0YS5wYW5l
bCA9IEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbDo6Y3JlYXRlKCp0aGlzLCBnZXRScElkKG9w
dGlvbnMpLCB0cmFuc3BvcnRzLCBnZXRDbGllbnREYXRhVHlwZShvcHRpb25zKSk7CiAgICAgYXV0
byYgcGFuZWwgPSAqbV9wZW5kaW5nUmVxdWVzdERhdGEucGFuZWw7Ci0gICAgcGFnZS0+dWlDbGll
bnQoKS5ydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKCpwYWdlLCBwYW5lbCwgKmZyYW1lLCBtX3Bl
bmRpbmdSZXF1ZXN0RGF0YS5vcmlnaW4sIFt0cmFuc3BvcnRzID0gV1RGTW92ZSh0cmFuc3BvcnRz
KSwgd2Vha1BhbmVsID0gbWFrZVdlYWtQdHIocGFuZWwpLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKSwgdGhpc10gKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQgcmVzdWx0KSB7Cisg
ICAgcGFnZS0+dWlDbGllbnQoKS5ydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKCpwYWdlLCBwYW5l
bCwgKmZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgeyBtX3BlbmRpbmdSZXF1ZXN0
RGF0YS5vcmlnaW4gfSwgW3RyYW5zcG9ydHMgPSBXVEZNb3ZlKHRyYW5zcG9ydHMpLCB3ZWFrUGFu
ZWwgPSBtYWtlV2Vha1B0cihwYW5lbCksIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0
aGlzXSAoV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCByZXN1bHQpIHsKICAgICAgICAgLy8g
VGhlIHBhbmVsIGFkZHJlc3MgaXMgdXNlZCB0byBkZXRlcm1pbmUgaWYgdGhlIGN1cnJlbnQgcGVu
ZGluZyByZXF1ZXN0IGlzIHN0aWxsIHRoZSBzYW1lLgogICAgICAgICBpZiAoIXdlYWtUaGlzIHx8
ICF3ZWFrUGFuZWwKICAgICAgICAgICAgIHx8IChyZXN1bHQgPT0gV2ViQXV0aGVudGljYXRpb25Q
YW5lbFJlc3VsdDo6RGlkTm90UHJlc2VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCmluZGV4IGZkOWQzNTQ3ZWZjZjE5N2E0NWJlNzI4OTUzNzEwYjQ4MWY4ZDU5Yzku
LmM2ZjZkZWQ0OThmN2FlOTdkOTczM2M2YTVjZWZiNmRhZTAzNjZkZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDI0OSwxNyArNDI0OSwxNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZVNoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmCiAgICAgZnJhbWUtPmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZv
clByb3Zpc2lvbmFsTG9hZCh1cmwpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IsIFdpbGxDb250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRh
dGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRG
b3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJh
bWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHBy
b3Zpc2lvbmFsVVJMLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgV2lsbENvbnRpbnVlTG9h
ZGluZyB3aWxsQ29udGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAg
ICAgaWYgKG1fcHJvdmlzaW9uYWxQYWdlICYmIG1fcHJvdmlzaW9uYWxQYWdlLT5uYXZpZ2F0aW9u
SUQoKSA9PSBuYXZpZ2F0aW9uSUQpIHsKICAgICAgICAgLy8gVGhlIGxvYWQgZGlkIG5vdCBmYWls
LCBpdCBpcyBtZXJlbHkgaGFwcGVuaW5nIGluIGEgbmV3IHByb3Zpc2lvbmFsIHByb2Nlc3MuCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWVTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgZnJhbWVTZWN1cml0eU9yaWdp
biwgbmF2aWdhdGlvbklELCBwcm92aXNpb25hbFVSTCwgZXJyb3IsIHdpbGxDb250aW51ZUxvYWRp
bmcsIHVzZXJEYXRhKTsKKyAgICBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQo
bV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZVNlY3VyaXR5T3JpZ2lu
KSwgbmF2aWdhdGlvbklELCBwcm92aXNpb25hbFVSTCwgZXJyb3IsIHdpbGxDb250aW51ZUxvYWRp
bmcsIHVzZXJEYXRhKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25h
bExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJp
dHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25h
bFVSTCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFdpbGxDb250aW51ZUxvYWRpbmcgd2ls
bENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdl
UHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmIHByb2Nlc3MsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTZWN1cml0eU9yaWdp
bkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0
IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBXaWxs
Q29udGludWVMb2FkaW5nIHdpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJiB1c2Vy
RGF0YSkKIHsKICAgICBMT0coTG9hZGluZywgIihMb2FkaW5nKSBXZWJQYWdlUHJveHkgJSIgUFJJ
dTY0ICIgaW4gd2ViIHByb2Nlc3MgcGlkICVpIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFt
ZSB0byBwcm92aXNpb25hbFVSTCAlcyIsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBwcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBwcm92aXNpb25hbFVSTC51dGY4KCkuZGF0YSgpKTsKICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJkaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWU6IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgZG9tYWluID0gJXMsIGNvZGUgPSAlZCIs
IGZyYW1lSUQudG9VSW50NjQoKSwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3Iu
ZXJyb3JDb2RlKCkpOwpAQCAtNDMwMCw3ICs0MzAwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
IHAKICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0
aW9uV2l0aEVycm9yKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIGVycm9yLCBwcm9j
ZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7
CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBHZXQgdGhlIG1haW4gZnJhbWUncyBjdXJy
ZW50IG5hdmlnYXRpb24uCi0gICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRmFpbFByb3Zp
c2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3IoKnRoaXMsICpmcmFtZSwgZnJhbWVTZWN1cml0
eU9yaWdpbiwgbnVsbHB0ciwgZXJyb3IsIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVj
dHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50
LT5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcigqdGhpcywgKmZyYW1l
LCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBudWxscHRyLCBlcnJvciwgcHJvY2Vzcy0+
dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogICAg
IH0KIAogICAgIG1fZmFpbGluZ1Byb3Zpc2lvbmFsTG9hZFVSTCA9IHsgfTsKQEAgLTQ4ODMsNyAr
NDg4Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAgICAgICAgIGJlZ2luU2FmZUJyb3dz
aW5nQ2hlY2socmVxdWVzdC51cmwoKSwgZnJhbWUuaXNNYWluRnJhbWUoKSwgbGlzdGVuZXIpOwog
CiAgICAgQVBJOjpOYXZpZ2F0aW9uKiBtYWluRnJhbWVOYXZpZ2F0aW9uID0gZnJhbWUuaXNNYWlu
RnJhbWUoKSA/IG5hdmlnYXRpb24uZ2V0KCkgOiBudWxscHRyOwotICAgIFdlYkZyYW1lUHJveHkq
IG9yaWdpbmF0aW5nRnJhbWUgPSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCA/IHBy
b2Nlc3MtPndlYkZyYW1lKCpvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCkgOiBudWxs
cHRyOworICAgIFdlYkZyYW1lUHJveHkqIG9yaWdpbmF0aW5nRnJhbWUgPSBvcmlnaW5hdGluZ0Zy
YW1lSW5mb0RhdGEuZnJhbWVJRCA/IHByb2Nlc3MtPndlYkZyYW1lKG9yaWdpbmF0aW5nRnJhbWVJ
bmZvRGF0YS5mcmFtZUlEKSA6IG51bGxwdHI7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQogICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgPSB3
ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQpAQCAtNDg5NCwxMiAr
NDg5NCwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAgIGlmIChtX3BvbGljeUNsaWVu
dCkKICAgICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24oKnRoaXMsICZmcmFtZSwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIG9yaWdpbmF0
aW5nRnJhbWUsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShsaXN0
ZW5lciksIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0
KCkpLmdldCgpKTsKICAgICBlbHNlIHsKLSAgICAgICAgYXV0byBkZXN0aW5hdGlvbkZyYW1lSW5m
byA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoZnJhbWUsIGZyYW1lU2VjdXJpdHlPcmlnaW4uc2Vj
dXJpdHlPcmlnaW4oKSk7CisgICAgICAgIGF1dG8gZGVzdGluYXRpb25GcmFtZUluZm8gPSBBUEk6
OkZyYW1lSW5mbzo6Y3JlYXRlKGZyYW1lLCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCAq
dGhpcyk7CiAgICAgICAgIFJlZlB0cjxBUEk6OkZyYW1lSW5mbz4gc291cmNlRnJhbWVJbmZvOwog
ICAgICAgICBpZiAoIWZyb21BUEkgJiYgb3JpZ2luYXRpbmdGcmFtZSA9PSAmZnJhbWUpCiAgICAg
ICAgICAgICBzb3VyY2VGcmFtZUluZm8gPSBkZXN0aW5hdGlvbkZyYW1lSW5mby5jb3B5UmVmKCk7
Ci0gICAgICAgIGVsc2UgaWYgKCFmcm9tQVBJKQotICAgICAgICAgICAgc291cmNlRnJhbWVJbmZv
ID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdp
bmF0aW5nUGFnZUlEID8gcHJvY2Vzcy0+d2ViUGFnZSgqb3JpZ2luYXRpbmdQYWdlSUQpIDogbnVs
bHB0cik7CisgICAgICAgIGVsc2UgaWYgKCFmcm9tQVBJKSB7CisgICAgICAgICAgICBhdXRvKiBv
cmlnaW5hdGluZ1BhZ2UgPSBvcmlnaW5hdGluZ1BhZ2VJRCA/IHByb2Nlc3MtPndlYlBhZ2UoKm9y
aWdpbmF0aW5nUGFnZUlEKSA6IG51bGxwdHI7CisgICAgICAgICAgICBzb3VyY2VGcmFtZUluZm8g
PSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRh
KSwgb3JpZ2luYXRpbmdQYWdlID8gICpvcmlnaW5hdGluZ1BhZ2UgOiAqdGhpcyk7CisgICAgICAg
IH0KIAogICAgICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IHByb2Nlc3MtPnVzZXJJ
bml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRl
bnRpZmllcik7CiAgICAgICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIW1fc2hvdWxkU3Vw
cHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbgpAQCAtNTAwNyw3ICs1
MDA5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b25TeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHkKICAgICBzZW5kZXItPnNlbmQoUG9saWN5
QWN0aW9uOjpVc2UsIG5hdmlnYXRpb25JRCwgRG93bmxvYWRJRCgpLCBXVEY6Om51bGxvcHQpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2Vj
dXJpdHlPcmlnaW4sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAordm9pZCBXZWJQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgUG9saWN5
Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCiAgICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBu
YXZpZ2F0aW9uQWN0aW9uRGF0YSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2Vy
RGF0YSkKIHsKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkp
OwpAQCAtNTAzMyw3ICs1MDM1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
ck5ld1dpbmRvd0FjdGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QKICAgICBlbHNl
IHsKICAgICAgICAgUmVmUHRyPEFQSTo6RnJhbWVJbmZvPiBzb3VyY2VGcmFtZUluZm87CiAgICAg
ICAgIGlmIChmcmFtZSkKLSAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJ
bmZvOjpjcmVhdGUoKmZyYW1lLCBmcmFtZVNlY3VyaXR5T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkp
OworICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgq
ZnJhbWUsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksICp0aGlzKTsKIAogICAgICAgICBh
dXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dXNlckluaXRpYXRlZEFjdGl2
aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsKICAg
ICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSBtX21haW5GcmFtZSA/ICFob3N0c0FyZUVx
dWFsKG1fbWFpbkZyYW1lLT51cmwoKSwgcmVxdWVzdC51cmwoKSkgOiBmYWxzZTsKQEAgLTUwNDUs
MTMgKzUwNDcsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRv
d0FjdGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QKICAgICAgICAgCiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBQ
b2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKK3ZvaWQgV2ViUGFnZVByb3h5OjpkZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU2VjdXJpdHlPcmln
aW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50
aWZpZXIsCiAgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dN
SU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVu
ZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIGRlY2lkZVBvbGljeUZvclJl
c3BvbnNlU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlELCBm
cmFtZVNlY3VyaXR5T3JpZ2luLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCBy
ZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlLCBsaXN0ZW5lcklELCB1
c2VyRGF0YSk7CisgICAgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQobV9wcm9jZXNzLmNv
cHlSZWYoKSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdp
biksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dN
SU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1dGUsIGxpc3RlbmVySUQsIHVzZXJEYXRhKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYgcHJvY2VzcywgUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5
T3JpZ2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
IHByb2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFBvbGljeUNoZWNr
SWRlbnRpZmllciBpZGVudGlmaWVyLAogICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUs
IHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBQ
YWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwpAQCAtNTA4MCw3ICs1
MDgyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVk
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywKICAgICBpZiAobV9wb2xpY3lDbGllbnQp
CiAgICAgICAgIG1fcG9saWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZSgqdGhpcywg
KmZyYW1lLCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBXVEZNb3ZlKGxpc3Rl
bmVyKSwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3Qo
KSkuZ2V0KCkpOwogICAgIGVsc2UgewotICAgICAgICBhdXRvIG5hdmlnYXRpb25SZXNwb25zZSA9
IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlOjpjcmVhdGUoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgq
ZnJhbWUsIGZyYW1lU2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSkuZ2V0KCksIHJlcXVl
c3QsIHJlc3BvbnNlLCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlKTsKKyAgICAg
ICAgYXV0byBuYXZpZ2F0aW9uUmVzcG9uc2UgPSBBUEk6Ok5hdmlnYXRpb25SZXNwb25zZTo6Y3Jl
YXRlKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKmZyYW1lLCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlP
cmlnaW4pLCAqdGhpcykuZ2V0KCksIHJlcXVlc3QsIHJlc3BvbnNlLCBjYW5TaG93TUlNRVR5cGUs
IGRvd25sb2FkQXR0cmlidXRlKTsKICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UoKnRoaXMsIFdURk1vdmUobmF2aWdhdGlvblJlc3Bv
bnNlKSwgV1RGTW92ZShsaXN0ZW5lciksIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVj
dHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKICAgICB9CiB9CkBAIC01MjE4LDEyICs1MjIw
LDEzIEBAIHN0YXRpYyB2b2lkIHRyeVNPQXV0aG9yaXphdGlvbihSZWY8QVBJOjpOYXZpZ2F0aW9u
QWN0aW9uPiYmIG5hdmlnYXRpb25BY3Rpb24sIFdlCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OmNyZWF0ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZvRGF0YSYgb3JpZ2luYXRpbmdGcmFt
ZUluZm9EYXRhLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1Bh
Z2VJRCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2luZG93RmVhdHVyZXMmJiB3aW5kb3dG
ZWF0dXJlcywgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZTo6RGVsYXllZFJlcGx5JiYgcmVwbHkp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZShGcmFtZUluZm9EYXRhJiYgb3JpZ2lu
YXRpbmdGcmFtZUluZm9EYXRhLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmln
aW5hdGluZ1BhZ2VJRCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2luZG93RmVhdHVyZXMm
JiB3aW5kb3dGZWF0dXJlcywgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZTo6RGVsYXllZFJlcGx5
JiYgcmVwbHkpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIG9yaWdpbmF0aW5nRnJh
bWVJbmZvRGF0YS5mcmFtZUlEKTsKLSAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgbV9wcm9j
ZXNzLT53ZWJGcmFtZSgqb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmZyYW1lSUQpKTsKKyAgICBN
RVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgbV9wcm9jZXNzLT53ZWJGcmFtZShvcmlnaW5hdGluZ0Zy
YW1lSW5mb0RhdGEuZnJhbWVJRCkpOwogCi0gICAgYXV0byBvcmlnaW5hdGluZ0ZyYW1lSW5mbyA9
IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBtX3Byb2Nl
c3MtPndlYlBhZ2UoKm9yaWdpbmF0aW5nUGFnZUlEKSk7CisgICAgYXV0byogb3JpZ2luYXRpbmdQ
YWdlID0gbV9wcm9jZXNzLT53ZWJQYWdlKCpvcmlnaW5hdGluZ1BhZ2VJRCk7CisgICAgYXV0byBv
cmlnaW5hdGluZ0ZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShvcmln
aW5hdGluZ0ZyYW1lSW5mb0RhdGEpLCBvcmlnaW5hdGluZ1BhZ2UgPyAqb3JpZ2luYXRpbmdQYWdl
IDogKnRoaXMpOwogICAgIGF1dG8gbWFpbkZyYW1lVVJMID0gbV9tYWluRnJhbWUgPyBtX21haW5G
cmFtZS0+dXJsKCkgOiBVUkwoKTsKICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWFpbkZyYW1lVVJMLCByZXF1ZXN0LCBy
ZXBseSA9IFdURk1vdmUocmVwbHkpXSAoUmVmUHRyPFdlYlBhZ2VQcm94eT4gbmV3UGFnZSkgbXV0
YWJsZSB7CiAgICAgICAgIGlmICghbmV3UGFnZSkgewpAQCAtNTI5Myw3ICs1Mjk2LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmNsb3NlUGFnZShib29sIHN0b3BSZXNwb25zaXZlbmVzc1RpbWVyKQog
ICAgIG1fdWlDbGllbnQtPmNsb3NlKHRoaXMpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVu
SmF2YVNjcmlwdEFsZXJ0KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9y
aWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydDo6RGVsYXllZFJlcGx5JiYgcmVwbHkp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KEZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0QWxlcnQ6OkRl
bGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9j
ZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZnJh
bWUpOwpAQCAtNTMwOSwxMCArNTMxMiwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNj
cmlwdEFsZXJ0KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaQogICAg
ICAgICBpZiAoYXV0byogYXV0b21hdGlvblNlc3Npb24gPSBwcm9jZXNzKCkucHJvY2Vzc1Bvb2wo
KS5hdXRvbWF0aW9uU2Vzc2lvbigpKQogICAgICAgICAgICAgYXV0b21hdGlvblNlc3Npb24tPndp
bGxTaG93SmF2YVNjcmlwdERpYWxvZygqdGhpcyk7CiAgICAgfQotICAgIG1fdWlDbGllbnQtPnJ1
bkphdmFTY3JpcHRBbGVydCh0aGlzLCBtZXNzYWdlLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW4sIFdU
Rk1vdmUocmVwbHkpKTsKKyAgICBtX3VpQ2xpZW50LT5ydW5KYXZhU2NyaXB0QWxlcnQoKnRoaXMs
IG1lc3NhZ2UsIGZyYW1lLCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSwgV1RGTW92ZShyZXBseSkp
OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdENvbmZpcm0oRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4s
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNj
cmlwdENvbmZpcm06OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OnJ1
bkphdmFTY3JpcHRDb25maXJtKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTZWN1cml0eU9yaWdp
bkRhdGEmJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6RGVsYXllZFJlcGx5JiYgcmVwbHkp
CiB7CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1l
SUQpOwogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBmcmFtZSk7CkBAIC01MzI5LDEwICs1
MzMyLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0Q29uZmlybShGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPCiAgICAgICAgICAgICBhdXRvbWF0aW9u
U2Vzc2lvbi0+d2lsbFNob3dKYXZhU2NyaXB0RGlhbG9nKCp0aGlzKTsKICAgICB9CiAKLSAgICBt
X3VpQ2xpZW50LT5ydW5KYXZhU2NyaXB0Q29uZmlybSh0aGlzLCBtZXNzYWdlLCBmcmFtZSwgc2Vj
dXJpdHlPcmlnaW4sIFdURk1vdmUocmVwbHkpKTsKKyAgICBtX3VpQ2xpZW50LT5ydW5KYXZhU2Ny
aXB0Q29uZmlybSgqdGhpcywgbWVzc2FnZSwgZnJhbWUsIFdURk1vdmUoc2VjdXJpdHlPcmlnaW4p
LCBXVEZNb3ZlKHJlcGx5KSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0
UHJvbXB0KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVm
YXVsdFZhbHVlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0UHJvbXB0OjpE
ZWxheWVkUmVwbHkmJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0UHJv
bXB0KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0
eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlZmF1bHRWYWx1
ZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdFByb21wdDo6RGVsYXllZFJl
cGx5JiYgcmVwbHkpCiB7CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndl
YkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBmcmFtZSk7CkBA
IC01MzQ4LDcgKzUzNTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdFByb21w
dChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcgogICAgICAgICAgICAg
YXV0b21hdGlvblNlc3Npb24tPndpbGxTaG93SmF2YVNjcmlwdERpYWxvZygqdGhpcyk7CiAgICAg
fQogCi0gICAgbV91aUNsaWVudC0+cnVuSmF2YVNjcmlwdFByb21wdCh0aGlzLCBtZXNzYWdlLCBk
ZWZhdWx0VmFsdWUsIGZyYW1lLCBzZWN1cml0eU9yaWdpbiwgV1RGTW92ZShyZXBseSkpOworICAg
IG1fdWlDbGllbnQtPnJ1bkphdmFTY3JpcHRQcm9tcHQoKnRoaXMsIG1lc3NhZ2UsIGRlZmF1bHRW
YWx1ZSwgZnJhbWUsIFdURk1vdmUoc2VjdXJpdHlPcmlnaW4pLCBXVEZNb3ZlKHJlcGx5KSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTdGF0dXNUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkK
QEAgLTU0OTEsNyArNTQ5NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpyb290Vmlld1RvQWNjZXNz
aWJpbGl0eVNjcmVlbihjb25zdCBJbnRSZWN0JiB2aWV3UmVjdCwgQ29tcGxlCiAgICAgY29tcGxl
dGlvbkhhbmRsZXIocGFnZUNsaWVudCgpLnJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKHZp
ZXdSZWN0KSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWwoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
c2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOjpEZWxheWVkUmVwbHkmJiByZXBseSkK
K3ZvaWQgV2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbDo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgV2ViRnJhbWVQcm94
eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hF
Q0sobV9wcm9jZXNzLCBmcmFtZSk7CkBAIC01NTA4LDcgKzU1MTEsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBjb25zdCBTZQogCiAgICAgLy8gU2luY2UgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkg
Y2FuIHNwaW4gYSBuZXN0ZWQgcnVuIGxvb3Agd2UgbmVlZCB0byB0dXJuIG9mZiB0aGUgcmVzcG9u
c2l2ZW5lc3MgdGltZXIuCiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3Rv
cCgpOwotICAgIG1fdWlDbGllbnQtPnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCh0aGlzLCBt
ZXNzYWdlLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW4sIFdURk1vdmUocmVwbHkpKTsKKyAgICBtX3Vp
Q2xpZW50LT5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKnRoaXMsIG1lc3NhZ2UsIGZyYW1l
LCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSwgV1RGTW92ZShyZXBseSkpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFZpZXdwb3J0QXR0
cmlidXRlcyYgYXR0cikKQEAgLTU1MzEsNyArNTUzNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpw
YWdlRGlkU2Nyb2xsKCkKICNlbmRpZgogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuT3BlblBh
bmVsKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZy
YW1lU2VjdXJpdHlPcmlnaW4sIGNvbnN0IEZpbGVDaG9vc2VyU2V0dGluZ3MmIHNldHRpbmdzKQor
dm9pZCBXZWJQYWdlUHJveHk6OnJ1bk9wZW5QYW5lbChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgY29uc3QgRmlsZUNob29z
ZXJTZXR0aW5ncyYgc2V0dGluZ3MpCiB7CiAgICAgaWYgKG1fb3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXIpIHsKICAgICAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0ZSgpOwpA
QCAtNTU1NSw3ICs1NTU4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bk9wZW5QYW5lbChGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXQKICAgICAvLyBTaW5j
ZSBydW5PcGVuUGFuZWwoKSBjYW4gc3BpbiBhIG5lc3RlZCBydW4gbG9vcCB3ZSBuZWVkIHRvIHR1
cm4gb2ZmIHRoZSByZXNwb25zaXZlbmVzcyB0aW1lci4KICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNp
dmVuZXNzVGltZXIoKS5zdG9wKCk7CiAKLSAgICBpZiAoIW1fdWlDbGllbnQtPnJ1bk9wZW5QYW5l
bCh0aGlzLCBmcmFtZSwgZnJhbWVTZWN1cml0eU9yaWdpbiwgcGFyYW1ldGVycy5wdHIoKSwgbV9v
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5nZXQoKSkpIHsKKyAgICBpZiAoIW1fdWlDbGllbnQtPnJ1
bk9wZW5QYW5lbCgqdGhpcywgZnJhbWUsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIHBh
cmFtZXRlcnMucHRyKCksIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuZ2V0KCkpKSB7CiAgICAg
ICAgIGlmICghcGFnZUNsaWVudCgpLmhhbmRsZVJ1bk9wZW5QYW5lbCh0aGlzLCBmcmFtZSwgcGFy
YW1ldGVycy5wdHIoKSwgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5nZXQoKSkpCiAgICAgICAg
ICAgICBkaWRDYW5jZWxGb3JPcGVuUGFuZWwoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IGM2YzM2ZjM1NDhmMzg1NzE4ZmM4NGFiYzI0MWZlZTA5N2Uy
M2JiYjkuLjAwNjAyOWM5MjZhNjlhNGEzNzE3YzFjNGI0Y2U2ZThjN2QxMDBmMTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNTQyLDcgKzE1NDIsNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBMb2dpYyBzaGFyZWQgYmV0d2VlbiB0aGUgV2ViUGFnZVByb3h5IGFuZCB0
aGUgUHJvdmlzaW9uYWxQYWdlUHJveHkuCiAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJiwgVVJMJiYgdW5yZWFjaGFibGVV
UkwsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmln
aW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6OldpbGxDb250aW51ZUxvYWRp
bmcsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5nLCBj
b25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkUGVyZm9ybVNlcnZl
clJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0U2hh
cmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5n
LCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIpOwpAQCAtMTU1MSw3ICsxNTUxLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBv
bGljeUNoZWNrSWRlbnRpZmllciwKICAgICAgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZp
Z2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYlBhZ2VQcm94
eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsCiAgICAg
ICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3Qg
bGlzdGVuZXJJRCk7Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2Vj
dXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwKKyAgICB2b2lkIGRl
Y2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNo
ZWNrSWRlbnRpZmllciwKICAgICAgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Ym9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIHVp
bnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBzdGFydFVSTFNj
aGVtZVRhc2tTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgbG9hZERhdGFXaXRo
TmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgQVBJOjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29u
c3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5n
JiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVs
bG9wdCwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKQEAgLTE2NzIsNyAr
MTY3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9y
RnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVybCwgZG91Ymxl
IGRlbGF5LCBXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0KTsKICAgICB2b2lkIGRpZENhbmNl
bENsaWVudFJlZGlyZWN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2
b2lkIGRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmKTsKLSAgICB2b2lkIGRpZEZhaWxQcm92
aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRh
dGEmKTsKKyAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJp
dHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25h
bFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6OldpbGxDb250aW51
ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVp
bnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGJv
b2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVD
b250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAg
dm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRp
ZEZpbmlzaExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTE3MDcsOSArMTcwNyw5IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKICAgICAgICAgRnJhbWVJbmZvRGF0YSYm
LCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCiAg
ICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25z
dCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25TeW5jRGVsYXllZFJlcGx5JiYpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9y
TmV3V2luZG93QWN0aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBOYXZp
Z2F0aW9uQWN0aW9uRGF0YSYmLAorICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0
aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgTmF2aWdhdGlvbkFjdGlvbkRhdGEm
JiwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFN0cmluZyYgZnJh
bWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZvaWQg
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZp
ZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklE
LAogICAgICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYg
ZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7
CiAgICAgdm9pZCB1bmFibGVUb0ltcGxlbWVudFBvbGljeShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBVc2VyRGF0YSYpOwogICAg
IHZvaWQgYmVnaW5TYWZlQnJvd3NpbmdDaGVjayhjb25zdCBVUkwmLCBib29sLCBXZWJGcmFtZVBv
bGljeUxpc3RlbmVyUHJveHkmKTsKQEAgLTE3MjcsMTEgKzE3MjcsMTEgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZFVwZGF0ZUhpc3RvcnlUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBT
dHJpbmcmIHVybCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKIAogICAgIC8vIFVJIGNsaWVu
dAotICAgIHZvaWQgY3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiwgT3B0aW9uYWw8
V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYmLCBOYXZpZ2F0aW9uQWN0aW9u
RGF0YSYmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlRGVsYXllZFJlcGx5
JiYpOworICAgIHZvaWQgY3JlYXRlTmV3UGFnZShGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdl
YlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmJiwgTmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZURlbGF5ZWRSZXBseSYm
KTsKICAgICB2b2lkIHNob3dQYWdlKCk7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
LCBjb25zdCBTdHJpbmcmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0QWxl
cnREZWxheWVkUmVwbHkmJik7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNv
bnN0IFN0cmluZyYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRDb25maXJt
RGVsYXllZFJlcGx5JiYpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdFByb21wdChXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFT
Y3JpcHRQcm9tcHREZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwg
Y29uc3QgU3RyaW5nJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdEFsZXJ0
RGVsYXllZFJlcGx5JiYpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgY29uc3QgU3Ry
aW5nJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdENvbmZpcm1EZWxheWVk
UmVwbHkmJik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRQcm9tcHRE
ZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBzZXRTdGF0dXNUZXh0KGNvbnN0IFN0cmluZyYpOwog
ICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViSGl0VGVzdFJlc3VsdERhdGEmJiwg
dWludDMyX3QgbW9kaWZpZXJzLCBVc2VyRGF0YSYmKTsKIApAQCAtMTc1NCwxMCArMTc1NCwxMCBA
QCBwcml2YXRlOgogICAgIHZvaWQgcm9vdFZpZXdUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiB2aWV3UmVjdCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Um9vdFZpZXdUb1NjcmVlbkRl
bGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBzY3JlZW5Qb2ludCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpJbnRQb2ludCk+JiYpOwogICAgIHZvaWQgcm9vdFZpZXdUb0FjY2Vzc2liaWxp
dHlTY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdmlld1JlY3QsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQ29yZTo6SW50UmVjdCk+JiYpOwotICAgIHZvaWQgcnVuQmVmb3JlVW5sb2Fk
Q29uZmlybVBhbmVsKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxEZWxheWVkUmVwbHkmJik7CisgICAg
dm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxEZWxheWVk
UmVwbHkmJik7CiAgICAgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2Vi
Q29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJik7CiAgICAgdm9pZCBwYWdlRGlkU2Nyb2xsKCk7Ci0g
ICAgdm9pZCBydW5PcGVuUGFuZWwoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRp
bmdzJik7CisgICAgdm9pZCBydW5PcGVuUGFuZWwoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgY29uc3QgV2ViQ29yZTo6RmlsZUNob29zZXJT
ZXR0aW5ncyYpOwogICAgIHZvaWQgc2hvd1NoYXJlU2hlZXQoY29uc3QgV2ViQ29yZTo6U2hhcmVE
YXRhV2l0aFBhcnNlZFVSTCYsIFNoYXJlU2hlZXRDYWxsYmFja0lEKTsKICAgICB2b2lkIHByaW50
RnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgZXhjZWVkZWREYXRhYmFzZVF1b3RhKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFi
YXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3Rh
LCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVz
YWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNl
ZWRlZERhdGFiYXNlUXVvdGFEZWxheWVkUmVwbHkmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFj
Y2Vzc0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2ViRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyLmNwcAppbmRleCBm
ODVkZDU3NjcwZmRlOWQzMzkxZTFiZjZkMTdkZTAyYTU0MWI0NDkzLi5jY2NhODMzYTk2OWNkNTg4
ZmI5MmRhOWM0NTU3Mzg2NmZlZjM4MjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYkRl
dmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlci5jcHAKQEAgLTQ4LDcgKzQ4
LDcgQEAgdm9pZCBXZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXI6
OnNob3VsZEFsbG93QWNjZXNzKFdlYlBhZ2VQcm8KICAgICBpZiAocGVuZGluZ1JlcXVlc3RzLnNp
emUoKSA+IDEpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBhZ2UudWlDbGllbnQoKS5zaG91bGRB
bGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzKHBhZ2UsIGZyYW1lLCBvcmlnaW5E
YXRhLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgb3JpZ2luRGF0YV0oYm9v
bCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICBwYWdlLnVpQ2xpZW50KCkuc2hvdWxkQWxsb3dEZXZp
Y2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzcyhwYWdlLCBmcmFtZSwgV1RGTW92ZShvcmlnaW5E
YXRhKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIG9yaWdpbkRhdGFdKGJv
b2wgZ3JhbnRlZCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIG1fZGV2aWNlT3JpZW50YXRpb25QZXJtaXNzaW9uRGVjaXNpb25z
LnNldChvcmlnaW5EYXRhLCBncmFudGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCmluZGV4IDcwYmE2NzhhNzk1
M2I2MmQxZmY1YjU1YjI3MTgxYWY0YTBiNWYwMGEuLjgzZjBiNmQxY2I0N2UyZTc4ZWY1ZDI4NDFm
Y2MzYTYwZmQzMTlkMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQpAQCAtMTg2LDcgKzE4Niw3IEBAIHN0YXRp
YyB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShXS0dlb2xvY2F0aW9uTWFuYWdlclJlZiBnZW9s
b2NhdGlvbk1hbmFnZXIsIGJvCiAgICAgICAgIGlkPFdLVUlEZWxlZ2F0ZVByaXZhdGU+IHVpRGVs
ZWdhdGUgPSBzdGF0aWNfY2FzdDxpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4+KFtyZXF1ZXN0LnZp
ZXcgVUlEZWxlZ2F0ZV0pOwogICAgICAgICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uRm9y
VVJMOmZyYW1lOmRlY2lzaW9uSGFuZGxlcjopXSkgewogICAgICAgICAgICAgVVJMIHJlcXVlc3RG
cmFtZVVSTChVUkwoKSwgcmVxdWVzdC5mcmFtZS0+dXJsKCkpOwotICAgICAgICAgICAgUmV0YWlu
UHRyPFdLRnJhbWVJbmZvPiBmcmFtZUluZm8gPSB3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVh
dGUoKnJlcXVlc3QuZnJhbWUuZ2V0KCksICpyZXF1ZXN0Lm9yaWdpbi5nZXQoKSkpOworICAgICAg
ICAgICAgUmV0YWluUHRyPFdLRnJhbWVJbmZvPiBmcmFtZUluZm8gPSB3cmFwcGVyKEFQSTo6RnJh
bWVJbmZvOjpjcmVhdGUoKnJlcXVlc3QuZnJhbWUuZ2V0KCksIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSB7IHJlcXVlc3Qub3JpZ2luLT5kYXRhKCkgfSwgKnJlcXVlc3Qudmlldy0+X3BhZ2Up
KTsKICAgICAgICAgICAgIGF1dG8gY2hlY2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJD
YWxsQ2hlY2tlcjo6Y3JlYXRlKHVpRGVsZWdhdGUsIEBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0
R2VvbG9jYXRpb25BdXRob3JpemF0aW9uRm9yVVJMOmZyYW1lOmRlY2lzaW9uSGFuZGxlcjopKTsK
ICAgICAgICAgICAgIFdLV2ViVmlldyAqdmlld0Zyb21SZXF1ZXN0ID0gcmVxdWVzdC52aWV3Lmdl
dCgpOwogICAgICAgICAgICAgW3VpRGVsZWdhdGUgX3dlYlZpZXc6dmlld0Zyb21SZXF1ZXN0IHJl
cXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6cmVxdWVzdEZyYW1lVVJMIGZyYW1l
OmZyYW1lSW5mby5nZXQoKSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtyZXF1ZXN0ID0g
V1RGTW92ZShyZXF1ZXN0KSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildKEJPT0wgYXV0aG9y
aXplZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90
ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9z
b2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCA2YmY4MTYyMDBh
MTc5OGQ1ZjRmZjE5NzQ5YmU4M2ZkMzMzNzE1MDBkLi44NjFmMGI5OWU3MGVmYjJlOGM3YzA2ZGNm
MjAzMDU2N2Y2MjVjOWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2Nr
ZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcApAQCAt
NTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICB+U2NyaXB0TWVzc2FnZUNsaWVudCgpIHsgfQog
Ci0gICAgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IEZyYW1l
SW5mb0RhdGEmLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYlBhZ2VQcm94eSYg
cGFnZSwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGF1dG8gdG9rZW5z
ID0gc2VyaWFsaXplZFNjcmlwdFZhbHVlLnRvU3RyaW5nKCkuc3BsaXQoIjoiKTsKICAgICAgICAg
aWYgKHRva2Vucy5zaXplKCkgIT0gMykKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA1ODIyMDM5NTA0OTIzYmU3NmRhNTVlY2UyNTAyYWM5YjU1ZTM3
YzlhLi5lNTA3ZTc0MGI1NTU2MDg1MjlkOTI0OWQzOGNkMmM1MzEzMzlhODE0IDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTktMTEtMTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
KworICAgICAgICBXS0ZyYW1lSW5mby53ZWJWaWV3IHNob3VsZCBub3QgcmV0dXJuIG5pbAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTk5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24ubW06
CisgICAgICAgIChURVNUKToKKwogMjAxOS0xMS0xMyAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSB3ZWJraXRwZXJsIEVXUyByb2J1c3QgYWdhaW5z
dCBmbGFraW5lc3MgaW4gd2Via2l0cGVybCB0ZXN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uLm1tCmluZGV4IDA0NTQzYjI5OGU4MTJlZWExMjA3NjRkMzI1OGJh
YzQ5MGExMzU2OWEuLjgyOTA2NjZhZjBlOGJjMDM2MTMzYWI2YjA2MzYxN2MxNDM4NGIwMTggMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24ubW0KQEAgLTI1MCw3
ICsyNTAsNyBAQCBURVNUKFdlYktpdCwgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbk9w
ZW5OZXdXaW5kb3dBbmREZWFsbG9jU291cmNlV2ViVmlldwogCiAgICAgRVhQRUNUX0VRKFdLTmF2
aWdhdGlvblR5cGVPdGhlciwgW2FjdGlvbiBuYXZpZ2F0aW9uVHlwZV0pOwogICAgIEVYUEVDVF9U
UlVFKFthY3Rpb24gc291cmNlRnJhbWVdICE9IFthY3Rpb24gdGFyZ2V0RnJhbWVdKTsKLSAgICBF
WFBFQ1RfRVEobmlsLCBbW2FjdGlvbiBzb3VyY2VGcmFtZV0gd2ViVmlld10pOworICAgIEVYUEVD
VF9FUShuZXdXZWJWaWV3LmdldCgpLCBbW2FjdGlvbiBzb3VyY2VGcmFtZV0gd2ViVmlld10pOwog
ICAgIEVYUEVDVF9FUShuZXdXZWJWaWV3LmdldCgpLCBbW2FjdGlvbiB0YXJnZXRGcmFtZV0gd2Vi
Vmlld10pOwogCiAgICAgbmV3V2ViVmlldyA9IG51bGxwdHI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383588</attachid>
            <date>2019-11-14 17:09:28 -0800</date>
            <delta_ts>2019-11-15 11:37:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204199-20191114170927.patch</filename>
            <type>text/plain</type>
            <size>100070</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQyODEzNGU1OWJmYmU3NjQz
NDM1NzIwYzBmMjdjOGVmYjZhZjU3MTAuLjVlMTFmZGQ3ZWRlNzFmNzdlMjk2NzU1MWFjNThhNDBl
MWYzNDk2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzUgQEAKKzIwMTktMTEtMTQgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2Ugc3Ry
dWN0dXJlIGNvcGllcyB3aGVuIGNyZWF0aW5nIGFuIEFQSTo6RnJhbWVJbmZvCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQxOTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgV1RGTW92ZSBhbmQgcmVm
ZXJlbmNlcyB3aGVyZSBwb3NzaWJsZS4gIFRoaXMgaXMgY2xlYW51cCBuZWVkZWQgZm9yIGEgZnV0
dXJlIHBhdGNoLgorCisgICAgICAgICogU2hhcmVkL0ZyYW1lSW5mb0RhdGEuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpGcmFtZUluZm9EYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9GcmFt
ZUluZm9EYXRhLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwOgor
ICAgICAgICAoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSk6CisgICAgICAgIChBUEk6OkZyYW1lSW5m
bzo6RnJhbWVJbmZvKToKKyAgICAgICAgKEFQSTo6RnJhbWVJbmZvOjp+RnJhbWVJbmZvKTogRGVs
ZXRlZC4KKyAgICAgICAgKEFQSTo6RnJhbWVJbmZvOjpjbGVhclBhZ2UpOiBEZWxldGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb25DbGll
bnQ6OmRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0aEVycm9yKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OlVJQ2xpZW50Ojpy
dW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlw
dENvbmZpcm0pOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdFByb21wdCk6
CisgICAgICAgIChBUEk6OlVJQ2xpZW50OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpOgor
ICAgICAgICAoQVBJOjpVSUNsaWVudDo6cnVuT3BlblBhbmVsKToKKyAgICAgICAgKEFQSTo6VUlD
bGllbnQ6OnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS0ZyYW1lLmNwcDoKKyAgICAgICAgKFdLRnJhbWVDcmVhdGVGcmFtZUluZm8pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFn
ZVVJQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJbmZvLm1tOgorICAgICAgICAoLVtX
S0ZyYW1lSW5mbyB3ZWJWaWV3XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Vz
ZXJDb250ZW50Q29udHJvbGxlci5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5t
bToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojpk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcik6CisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlE
ZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkph
dmFTY3JpcHRBbGVydCk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpy
dW5KYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xp
ZW50OjpydW5KYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QpOgor
ICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bk9w
ZW5QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5XZWJB
dXRoZW50aWNhdGlvblBhbmVsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkRmFp
bFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2UpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpydW5QYW5lbCk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFy
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5K
YXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFT
Y3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2Ny
aXB0UHJvbXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bk9wZW5Q
YW5lbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCiAyMDE5LTExLTEz
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBbIGlPUyBdOiBM
YXlvdXQgVGVzdCBodHRwL3Rlc3RzL0luZGV4ZWREQi9zdG9yYWdlLWxpbWl0LTEuaHR0cHMuaHRt
bCBpcyBhIEZsYWt5IEZhaWx1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Zy
YW1lSW5mb0RhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRnJhbWVJbmZvRGF0YS5jcHAK
aW5kZXggZWQwM2JhNDhhYjk0NTE5YjkxZTQ0MGMyMzQxNWZhYzQxMGRjZDdiMy4uMWZhNDZmYWI2
OWE2Y2YzMTE1ZGFkZDZmOTE0NzEwNGVmZWYyNTU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvRnJhbWVJbmZvRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRnJh
bWVJbmZvRGF0YS5jcHAKQEAgLTM4LDI1ICszOCwzNCBAQCB2b2lkIEZyYW1lSW5mb0RhdGE6OmVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBmcmFtZUlE
OwogfQogCi1ib29sIEZyYW1lSW5mb0RhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIs
IEZyYW1lSW5mb0RhdGEmIHJlc3VsdCkKK09wdGlvbmFsPEZyYW1lSW5mb0RhdGE+IEZyYW1lSW5m
b0RhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQuaXNNYWluRnJhbWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucmVxdWVzdCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBPcHRpb25hbDxib29sPiBpc01haW5GcmFtZTsKKyAgICBkZWNvZGVyID4+IGlzTWFp
bkZyYW1lOworICAgIGlmICghaXNNYWluRnJhbWUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+IHJlcXVlc3Q7Cisg
ICAgZGVjb2RlciA+PiByZXF1ZXN0OworICAgIGlmICghcmVxdWVzdCkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKwogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YT4gc2VjdXJpdHlPcmlnaW47CiAgICAgZGVjb2RlciA+PiBzZWN1cml0eU9yaWdpbjsKICAgICBp
ZiAoIXNlY3VyaXR5T3JpZ2luKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0LnNl
Y3VyaXR5T3JpZ2luID0gV1RGTW92ZSgqc2VjdXJpdHlPcmlnaW4pOwotICAgIAotICAgIE9wdGlv
bmFsPE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4+IGZyYW1lSUQ7CisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQ7CiAgICAgZGVjb2RlciA+PiBmcmFtZUlEOwogICAgIGlmICghZnJhbWVJ
RCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdC5mcmFtZUlEID0gV1RGTW92ZSgq
ZnJhbWVJRCk7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gdHJ1
ZTsKKyAgICByZXR1cm4ge3sKKyAgICAgICAgV1RGTW92ZSgqaXNNYWluRnJhbWUpLAorICAgICAg
ICBXVEZNb3ZlKCpyZXF1ZXN0KSwKKyAgICAgICAgV1RGTW92ZSgqc2VjdXJpdHlPcmlnaW4pLAor
ICAgICAgICBXVEZNb3ZlKCpmcmFtZUlEKQorICAgIH19OwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9GcmFtZUluZm9EYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9GcmFtZUluZm9EYXRhLmgKaW5kZXggNTM4NzE2ZWIyMWViNTQwYTQxNzc5YzdlNmI4ZmZkNDM1
MmZiYzEzYS4uMTM1NGI1MmQ4NWZiMTk4ZDk5YWMxNTlmNTNjNWE4NjIyMGU3ZTAyNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRnJhbWVJbmZvRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEuaApAQCAtMzgsMTIgKzM4LDEyIEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBzdHJ1Y3QgRnJhbWVJbmZvRGF0YSB7CiAgICAgdm9pZCBlbmNvZGUoSVBD
OjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYs
IEZyYW1lSW5mb0RhdGEmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8RnJhbWVJbmZvRGF0YT4gZGVj
b2RlKElQQzo6RGVjb2RlciYpOwogCiAgICAgYm9vbCBpc01haW5GcmFtZSB7IGZhbHNlIH07CiAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Q7CiAgICAgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRDsKKyAgICBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElG
cmFtZUluZm8uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5j
cHAKaW5kZXggODI5NzI4YjkxZDYxYWEyNjA0NzVlMmExYzkxZDI0MjBlOTc4NjBmYi4uYzk0YzUy
OWYzNzk2ZjM0ZjBjN2IwYjE4NTcwOWE1ZTlkN2ZmZWIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKQEAgLTMzLDQwICszMywzMSBAQAogCiBuYW1l
c3BhY2UgQVBJIHsKIAotUmVmPEZyYW1lSW5mbz4gRnJhbWVJbmZvOjpjcmVhdGUoY29uc3QgV2Vi
S2l0OjpGcmFtZUluZm9EYXRhJiBmcmFtZUluZm9EYXRhLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSog
cGFnZSkKK1JlZjxGcmFtZUluZm8+IEZyYW1lSW5mbzo6Y3JlYXRlKFdlYktpdDo6RnJhbWVJbmZv
RGF0YSYmIGZyYW1lSW5mb0RhdGEsIFdlYktpdDo6V2ViUGFnZVByb3h5KiBwYWdlKQogewotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYW1lSW5mbyhmcmFtZUluZm9EYXRhLCBwYWdlKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhbWVJbmZvKFdURk1vdmUoZnJhbWVJbmZvRGF0YSks
IHBhZ2UpKTsKIH0KIAotUmVmPEZyYW1lSW5mbz4gRnJhbWVJbmZvOjpjcmVhdGUoY29uc3QgV2Vi
S2l0OjpXZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4m
IHNlY3VyaXR5T3JpZ2luKQorUmVmPEZyYW1lSW5mbz4gRnJhbWVJbmZvOjpjcmVhdGUoY29uc3Qg
V2ViS2l0OjpXZWJGcmFtZVByb3h5JiBmcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiYgc2VjdXJpdHlPcmlnaW4pCiB7Ci0gICAgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5m
b0RhdGE7Ci0KLSAgICBmcmFtZUluZm9EYXRhLmlzTWFpbkZyYW1lID0gZnJhbWUuaXNNYWluRnJh
bWUoKTsKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIHRoZSBmdWxsIHJlcXVlc3Qgb2Yg
dGhlIGZyYW1lLCBub3QganVzdCB0aGUgVVJMLgotICAgIGZyYW1lSW5mb0RhdGEucmVxdWVzdCA9
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdChmcmFtZS51cmwoKSk7Ci0gICAgZnJhbWVJbmZvRGF0
YS5zZWN1cml0eU9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luLmRhdGEoKTsKLSAgICBmcmFtZUluZm9E
YXRhLmZyYW1lSUQgPSBmcmFtZS5mcmFtZUlEKCk7Ci0KLSAgICByZXR1cm4gY3JlYXRlKGZyYW1l
SW5mb0RhdGEsIGZyYW1lLnBhZ2UoKSk7CisgICAgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1l
SW5mb0RhdGEgeworICAgICAgICBmcmFtZS5pc01haW5GcmFtZSgpLAorICAgICAgICBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QoZnJhbWUudXJsKCkpLCAvLyBGSVhNRTogVGhpcyBzaG91bGQgdXNl
IHRoZSBmdWxsIHJlcXVlc3Qgb2YgdGhlIGZyYW1lLCBub3QganVzdCB0aGUgVVJMLgorICAgICAg
ICBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSwKKyAgICAgICAgZnJhbWUuZnJhbWVJRCgpCisgICAg
fTsKKyAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvRGF0YSksIGZyYW1lLnBhZ2Uo
KSk7CiB9CiAKIEZyYW1lSW5mbzo6RnJhbWVJbmZvKGNvbnN0IFdlYktpdDo6RnJhbWVJbmZvRGF0
YSYgZnJhbWVJbmZvRGF0YSwgV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2UpCiAgICAgOiBtX2lz
TWFpbkZyYW1lIHsgZnJhbWVJbmZvRGF0YS5pc01haW5GcmFtZSB9CiAgICAgLCBtX3JlcXVlc3Qg
eyBmcmFtZUluZm9EYXRhLnJlcXVlc3QgfQogICAgICwgbV9zZWN1cml0eU9yaWdpbiB7IFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUoZnJhbWVJbmZvRGF0YS5zZWN1cml0eU9yaWdpbi5zZWN1cml0eU9y
aWdpbigpKSB9Ci0gICAgLCBtX2hhbmRsZSB7IEFQSTo6RnJhbWVIYW5kbGU6OmNyZWF0ZShmcmFt
ZUluZm9EYXRhLmZyYW1lSUQgPyAqZnJhbWVJbmZvRGF0YS5mcmFtZUlEIDogV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyeyB9KSB9Ci0gICAgLCBtX3BhZ2UgeyBtYWtlUmVmUHRyKHBhZ2UpIH0KKyAg
ICAsIG1faGFuZGxlIHsgQVBJOjpGcmFtZUhhbmRsZTo6Y3JlYXRlKGZyYW1lSW5mb0RhdGEuZnJh
bWVJRCkgfQorICAgICwgbV9wYWdlIHsgcGFnZSB9CiB7CiB9CiAKLUZyYW1lSW5mbzo6fkZyYW1l
SW5mbygpCi17Ci19Ci0KLXZvaWQgRnJhbWVJbmZvOjpjbGVhclBhZ2UoKQotewotICAgIG1fcGFn
ZSA9IG51bGxwdHI7Ci19CitGcmFtZUluZm86On5GcmFtZUluZm8oKSA9IGRlZmF1bHQ7CiAKIH0g
Ly8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUZyYW1lSW5mby5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5m
by5oCmluZGV4IDk3OTNkZWM4MmM2OGRhMmQyNWI1MmVmNTZmZWZhYTlhYzlmMmEyMzkuLjdkMDg3
OWRiZTc5MTg2ZDhjZDZjNzdiZDY4ZGQ3NGMxMDVjMDY0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBT
ZWN1cml0eU9yaWdpbjsKK3N0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtNDUsOCArNDUsOCBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogY2xh
c3MgRnJhbWVJbmZvIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpGcmFt
ZUluZm8+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZyYW1lSW5mbz4gY3JlYXRlKGNvbnN0
IFdlYktpdDo6RnJhbWVJbmZvRGF0YSYsIFdlYktpdDo6V2ViUGFnZVByb3h5Kik7Ci0gICAgc3Rh
dGljIFJlZjxGcmFtZUluZm8+IGNyZWF0ZShjb25zdCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYpOworICAgIHN0YXRpYyBSZWY8RnJhbWVJbmZv
PiBjcmVhdGUoV2ViS2l0OjpGcmFtZUluZm9EYXRhJiYsIFdlYktpdDo6V2ViUGFnZVByb3h5Kik7
CisgICAgc3RhdGljIFJlZjxGcmFtZUluZm8+IGNyZWF0ZShjb25zdCBXZWJLaXQ6OldlYkZyYW1l
UHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJik7CiAgICAgdmlydHVhbCB+RnJh
bWVJbmZvKCk7CiAKICAgICBib29sIGlzTWFpbkZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9pc01h
aW5GcmFtZTsgfQpAQCAtNTUsOCArNTUsNiBAQCBwdWJsaWM6CiAgICAgQVBJOjpGcmFtZUhhbmRs
ZSYgaGFuZGxlKCkgeyByZXR1cm4gbV9oYW5kbGUuZ2V0KCk7IH0KICAgICBXZWJLaXQ6OldlYlBh
Z2VQcm94eSogcGFnZSgpIHsgcmV0dXJuIG1fcGFnZS5nZXQoKTsgfQogCi0gICAgdm9pZCBjbGVh
clBhZ2UoKTsKLQogcHJpdmF0ZToKICAgICBGcmFtZUluZm8oY29uc3QgV2ViS2l0OjpGcmFtZUlu
Zm9EYXRhJiwgV2ViS2l0OjpXZWJQYWdlUHJveHkqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKaW5kZXggOTRkYTMyZjA4YmVkZDk1
NDEzNDc0NzBkNTIyZWI1MDUyNTQyNTM4Zi4uYmNmOGEyMDA5MDM1MThjMjk5YjgxZGVmM2Y5MzQ4
MTk2M2E0MWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5h
dmlnYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2
aWdhdGlvbkNsaWVudC5oCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3Qg
V1RGOjpTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpTdHJpbmcmIGRlc3RpbmF0aW9uVVJM
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoV2ViS2l0OjpX
ZWJQYWdlUHJveHkmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTmF2
aWdhdGlvbldpdGhFcnJvcihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQ
cm94eSYsIE5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgT2JqZWN0
KikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1l
V2l0aEVycm9yKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5Jiwg
Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgTmF2aWdhdGlvbiosIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImLCBPYmplY3QqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
RmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3IoV2ViS2l0OjpXZWJQYWdlUHJv
eHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
JiwgTmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBPYmplY3QqKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TmF2aWdhdGlvbihXZWJLaXQ6OldlYlBhZ2VQ
cm94eSYsIE5hdmlnYXRpb24qLCBPYmplY3QqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoRG9jdW1lbnRMb2FkKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgTmF2aWdhdGlvbiosIE9iamVj
dCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hOYXZpZ2F0aW9uKFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgTmF2aWdhdGlvbiosIE9iamVjdCopIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJVUlDbGllbnQuaAppbmRleCBmZGVkZmU0NjAyYWQ3ZjdmNTNhYzMxZjhhY2Yx
YTQ1ZmY3MDc2ODk4Li5kOTIyYmUwYjFmN2UzY2ZhNTYyY2NmOWQ0Mjg4ZDY0MmY5ZTVjZmZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaApAQCAtOTQsOSArOTQs
OSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZvY3VzKFdlYktpdDo6V2ViUGFnZVByb3h5
KikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVuZm9jdXMoV2ViS2l0OjpXZWJQYWdlUHJveHkqKSB7
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoV2ViS2l0OjpXZWJQYWdl
UHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBy
dW5KYXZhU2NyaXB0Q29uZmlybShXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3Ry
aW5nJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiwgRnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29t
cGxldGlvbkhhbmRsZXIoZmFsc2UpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJ1bkphdmFTY3JpcHRQ
cm9tcHQoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiwgRnVuY3Rpb248dm9pZCAoY29uc3QgV1RGOjpTdHJpbmcmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihXVEY6OlN0cmluZygpKTsgfQorICAg
IHZpcnR1YWwgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBj
b25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsg
Y29tcGxldGlvbkhhbmRsZXIoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBydW5KYXZhU2NyaXB0Q29u
ZmlybShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViS2l0OjpX
ZWJGcmFtZVByb3h5KiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIEZ1bmN0aW9uPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZmFsc2Up
OyB9CisgICAgdmlydHVhbCB2b2lkIHJ1bkphdmFTY3JpcHRQcm9tcHQoV2ViS2l0OjpXZWJQYWdl
UHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViS2l0OjpX
ZWJGcmFtZVByb3h5KiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIEZ1bmN0aW9uPHZv
aWQoY29uc3QgV1RGOjpTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9u
SGFuZGxlcihXVEY6OlN0cmluZygpKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldFN0YXR1c1Rl
eHQoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChXZWJLaXQ6OldlYlBhZ2VQcm94eSYs
IGNvbnN0IFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdERhdGEmLCBPcHRpb25TZXQ8V2ViS2l0OjpX
ZWJFdmVudDo6TW9kaWZpZXI+LCBPYmplY3QqKSB7IH0KQEAgLTExOSw3ICsxMTksNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbmRvd0ZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5Jiwg
RnVuY3Rpb248dm9pZChXZWJDb3JlOjpGbG9hdFJlY3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7
IGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBjYW5SdW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkq
LCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOyB9CisgICAgdmlydHVhbCB2b2lk
IHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0
IFdURjo6U3RyaW5nJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsg
Y29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBwYWdlRGlkU2Ny
b2xsKFdlYktpdDo6V2ViUGFnZVByb3h5KikgeyB9CiAKQEAgLTEzNiw3ICsxMzYsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIG5lZWRzRm9udEF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VGb250QXR0cmlidXRlcyhjb25z
dCBXZWJDb3JlOjpGb250QXR0cmlidXRlcyYpIHsgfQogCi0gICAgdmlydHVhbCBib29sIHJ1bk9w
ZW5QYW5lbChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIE9wZW5QYW5lbFBhcmFtZXRlcnMqLCBX
ZWJLaXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBydW5PcGVuUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBX
ZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgT3Bl
blBhbmVsUGFyYW1ldGVycyosIFdlYktpdDo6V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94
eSopIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvckdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6
OldlYkZyYW1lUHJveHkmLCBTZWN1cml0eU9yaWdpbiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+Jikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgU2Vj
dXJpdHlPcmlnaW4mLCBTZWN1cml0eU9yaWdpbiYsIFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RQcm94eSYgcmVxdWVzdCkgeyByZXF1ZXN0LmRlbnkoKTsgfQogICAgIHZpcnR1YWwg
dm9pZCBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4oV2ViS2l0OjpXZWJQYWdlUHJv
eHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBTZWN1cml0eU9yaWdpbiYsIFNlY3VyaXR5T3Jp
Z2luJiwgV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eSYgcmVxdWVzdCkgeyBy
ZXF1ZXN0LmRlbnkoKTsgfQpAQCAtMTgzLDcgKzE4Myw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAj
aWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKLSAgICB2aXJ0dWFsIHZvaWQgc2hvdWxkQWxs
b3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzcyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYs
IFdlYktpdDo6V2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSwgY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzcyhXZWJLaXQ6Oldl
YlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSwgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOyB9CiAjZW5kaWYK
IAogICAgIHZpcnR1YWwgdm9pZCBkaWRDbGlja0F1dG9GaWxsQnV0dG9uKFdlYktpdDo6V2ViUGFn
ZVByb3h5JiwgT2JqZWN0KikgeyB9CkBAIC0xOTcsNyArMTk3LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBkaWRTaG93U2FmZUJyb3dzaW5nV2FybmluZygpIHsgfQogCiAjaWYgRU5BQkxF
KFdFQl9BVVRITikKLSAgICB2aXJ0dWFsIHZvaWQgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbChX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwmLCBXZWJLaXQ6Oldl
YkZyYW1lUHJveHkmLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpXZWJBdXRoZW50
aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcnVu
V2ViQXV0aGVudGljYXRpb25QYW5lbChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0
aW9uUGFuZWxSZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVy
KFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUpOyB9CiAj
ZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
RnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tGcmFtZS5jcHAKaW5k
ZXggYTg1NjJlYTdmNjU2N2RiM2FjMzA2Zjc3YjkxMDNiOTgzNGFhYmEwYy4uODA3NzZmMTgyOGJh
OGFlYzg0NTdiOGZjZGJjZTBhNWQ1NmJmYWQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tGcmFtZS5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCBXS0ZyYW1lSGFuZGxlUmVmIFdL
RnJhbWVDcmVhdGVGcmFtZUhhbmRsZShXS0ZyYW1lUmVmIGZyYW1lUmVmKQogCiBXS0ZyYW1lSW5m
b1JlZiBXS0ZyYW1lQ3JlYXRlRnJhbWVJbmZvKFdLRnJhbWVSZWYgZnJhbWVSZWYpCiB7Ci0gICAg
cmV0dXJuIHRvQVBJKCZBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCp0b0ltcGwoZnJhbWVSZWYpLCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh0b0ltcGwoZnJhbWVSZWYp
LT51cmwoKSkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKCZBUEk6OkZyYW1lSW5mbzo6
Y3JlYXRlKCp0b0ltcGwoZnJhbWVSZWYpLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgeyBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh0b0ltcGwoZnJhbWVSZWYp
LT51cmwoKSktPmRhdGEoKSB9KS5sZWFrUmVmKCkpOwogfQogCiB2b2lkIFdLRnJhbWVHZXRNYWlu
UmVzb3VyY2VEYXRhKFdLRnJhbWVSZWYgZnJhbWVSZWYsIFdLRnJhbWVHZXRSZXNvdXJjZURhdGFG
dW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwCmluZGV4IDQ0NjM3MjUxZGZmNWExOTE3M2JiYWM0N2E0MzE1YTNmZjJm
OGY2YjQuLjE5ZTI3MzE4N2FlMzUzOWFkM2Y4ZGZhYzRjYWM4MzRmY2FlYTI0YzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMTU4OCwyNCArMTU4OCwyNCBA
QCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQ
YWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudAogICAgICAgICAgICAgbV9jbGllbnQudW5mb2N1cyh0
b0FQSShwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiBzZWN1cml0eU9yaWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgZmluYWwKKyAgICAgICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoV2ViUGFnZVByb3h5
JiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBTZWN1
cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1fY2xp
ZW50LnJ1bkphdmFTY3JpcHRBbGVydCkgewogICAgICAgICAgICAgICAgIFJlZlB0cjxSdW5KYXZh
U2NyaXB0QWxlcnRSZXN1bHRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBSdW5KYXZhU2NyaXB0QWxlcnRS
ZXN1bHRMaXN0ZW5lcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAg
ICAgICAgICAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBB
UEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoc2VjdXJpdHlPcmlnaW5EYXRhLnByb3RvY29sLCBz
ZWN1cml0eU9yaWdpbkRhdGEuaG9zdCwgc2VjdXJpdHlPcmlnaW5EYXRhLnBvcnQpOwotICAgICAg
ICAgICAgICAgIG1fY2xpZW50LnJ1bkphdmFTY3JpcHRBbGVydCh0b0FQSShwYWdlKSwgdG9BUEko
bWVzc2FnZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIHRvQVBJKHNlY3VyaXR5T3JpZ2luLmdldCgp
KSwgdG9BUEkobGlzdGVuZXIuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAg
ICAgICAgICAgICAgIG1fY2xpZW50LnJ1bkphdmFTY3JpcHRBbGVydCh0b0FQSSgmcGFnZSksIHRv
QVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShzZWN1cml0eU9yaWdpbi5n
ZXQoKSksIHRvQVBJKGxpc3RlbmVyLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlm
IChtX2NsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSkgewog
ICAgICAgICAgICAgICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdp
biA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShzZWN1cml0eU9yaWdpbkRhdGEucHJvdG9j
b2wsIHNlY3VyaXR5T3JpZ2luRGF0YS5ob3N0LCBzZWN1cml0eU9yaWdpbkRhdGEucG9ydCk7Ci0g
ICAgICAgICAgICAgICAgbV9jbGllbnQucnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjUodG9BUEkocGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJhbWUp
LCB0b0FQSShzZWN1cml0eU9yaWdpbi5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
CisgICAgICAgICAgICAgICAgbV9jbGllbnQucnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRG
b3JVc2VXaXRoVjUodG9BUEkoJnBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGZy
YW1lKSwgdG9BUEkoc2VjdXJpdHlPcmlnaW4uZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAo
bV9jbGllbnQucnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjApIHsKLSAg
ICAgICAgICAgICAgICBtX2NsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZvclVz
ZVdpdGhWMCh0b0FQSShwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShmcmFtZSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICAgICAgbV9jbGllbnQucnVu
SmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAodG9BUEkoJnBhZ2UpLCB0b0FQ
SShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTE2MTQsMjUgKzE2MTQsMjUgQEAgdm9pZCBXS1Bh
Z2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50
QmFzZSogd2tDbGllbnQKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAg
IH0KIAotICAgICAgICB2b2lkIHJ1bkphdmFTY3JpcHRDb25maXJtKFdlYlBhZ2VQcm94eSogcGFn
ZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgICAgIHZvaWQgcnVuSmF2YVNjcmlwdENv
bmZpcm0oV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1l
UHJveHkqIGZyYW1lLCBTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbkRhdGEsIEZ1
bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGlmIChtX2NsaWVudC5ydW5KYXZhU2NyaXB0Q29uZmlybSkgewogICAgICAg
ICAgICAgICAgIFJlZlB0cjxSdW5KYXZhU2NyaXB0Q29uZmlybVJlc3VsdExpc3RlbmVyPiBsaXN0
ZW5lciA9IFJ1bkphdmFTY3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXI6OmNyZWF0ZShXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgICAgICAgICAgUmVmUHRyPEFQSTo6U2VjdXJp
dHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNl
Y3VyaXR5T3JpZ2luRGF0YS5wcm90b2NvbCwgc2VjdXJpdHlPcmlnaW5EYXRhLmhvc3QsIHNlY3Vy
aXR5T3JpZ2luRGF0YS5wb3J0KTsKLSAgICAgICAgICAgICAgICBtX2NsaWVudC5ydW5KYXZhU2Ny
aXB0Q29uZmlybSh0b0FQSShwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShmcmFt
ZSksIHRvQVBJKHNlY3VyaXR5T3JpZ2luLmdldCgpKSwgdG9BUEkobGlzdGVuZXIuZ2V0KCkpLCBt
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgICAgIG1fY2xpZW50LnJ1bkph
dmFTY3JpcHRDb25maXJtKHRvQVBJKCZwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQ
SShmcmFtZSksIHRvQVBJKHNlY3VyaXR5T3JpZ2luLmdldCgpKSwgdG9BUEkobGlzdGVuZXIuZ2V0
KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKG1fY2xpZW50LnJ1bkphdmFTY3JpcHRD
b25maXJtX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUpIHsKICAgICAgICAgICAgICAgICBSZWZQdHI8
QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUoc2VjdXJpdHlPcmlnaW5EYXRhLnByb3RvY29sLCBzZWN1cml0eU9yaWdpbkRhdGEu
aG9zdCwgc2VjdXJpdHlPcmlnaW5EYXRhLnBvcnQpOwotICAgICAgICAgICAgICAgIGJvb2wgcmVz
dWx0ID0gbV9jbGllbnQucnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZvclVzZVdpdGhW
NSh0b0FQSShwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIHRvQVBJ
KHNlY3VyaXR5T3JpZ2luLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAg
ICAgICAgICAgICBib29sIHJlc3VsdCA9IG1fY2xpZW50LnJ1bkphdmFTY3JpcHRDb25maXJtX2Rl
cHJlY2F0ZWRGb3JVc2VXaXRoVjUodG9BUEkoJnBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSks
IHRvQVBJKGZyYW1lKSwgdG9BUEkoc2VjdXJpdHlPcmlnaW4uZ2V0KCkpLCBtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobV9jbGllbnQucnVuSmF2YVNjcmlwdENv
bmZpcm1fZGVwcmVjYXRlZEZvclVzZVdpdGhWMCkgewotICAgICAgICAgICAgICAgIGJvb2wgcmVz
dWx0ID0gbV9jbGllbnQucnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZvclVzZVdpdGhW
MCh0b0FQSShwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBtX2Ns
aWVudC5ydW5KYXZhU2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKHRvQVBJKCZw
YWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CiAKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTE2NDEsMTggKzE2NDEsMTggQEAgdm9pZCBX
S1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xp
ZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsK
ICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcnVuSmF2YVNjcmlwdFByb21wdChXZWJQYWdlUHJv
eHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFs
dWUsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3Vy
aXR5T3JpZ2luRGF0YSwgRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgZmluYWwKKyAgICAgICAgdm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KFdlYlBhZ2VQ
cm94eSYgcGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlZmF1bHRW
YWx1ZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5
T3JpZ2luRGF0YSwgRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1fY2xpZW50LnJ1bkphdmFT
Y3JpcHRQcm9tcHQpIHsKICAgICAgICAgICAgICAgICBSZWZQdHI8UnVuSmF2YVNjcmlwdFByb21w
dFJlc3VsdExpc3RlbmVyPiBsaXN0ZW5lciA9IFJ1bkphdmFTY3JpcHRQcm9tcHRSZXN1bHRMaXN0
ZW5lcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgICAgICAg
ICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUoc2VjdXJpdHlPcmlnaW5EYXRhLnByb3RvY29sLCBzZWN1cml0eU9y
aWdpbkRhdGEuaG9zdCwgc2VjdXJpdHlPcmlnaW5EYXRhLnBvcnQpOwotICAgICAgICAgICAgICAg
IG1fY2xpZW50LnJ1bkphdmFTY3JpcHRQcm9tcHQodG9BUEkocGFnZSksIHRvQVBJKG1lc3NhZ2Uu
aW1wbCgpKSwgdG9BUEkoZGVmYXVsdFZhbHVlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgdG9BUEko
c2VjdXJpdHlPcmlnaW4uZ2V0KCkpLCB0b0FQSShsaXN0ZW5lci5nZXQoKSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICAgICAgbV9jbGllbnQucnVuSmF2YVNjcmlwdFBy
b21wdCh0b0FQSSgmcGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZGVmYXVsdFZh
bHVlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoc2VjdXJpdHlPcmlnaW4uZ2V0KCkpLCB0
b0FQSShsaXN0ZW5lci5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAobV9jbGll
bnQucnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1KSB7CiAgICAgICAg
ICAgICAgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJ
OjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNlY3VyaXR5T3JpZ2luRGF0YS5wcm90b2NvbCwgc2Vj
dXJpdHlPcmlnaW5EYXRhLmhvc3QsIHNlY3VyaXR5T3JpZ2luRGF0YS5wb3J0KTsKLSAgICAgICAg
ICAgICAgICBSZWZQdHI8QVBJOjpTdHJpbmc+IHN0cmluZyA9IGFkb3B0UmVmKHRvSW1wbChtX2Ns
aWVudC5ydW5KYXZhU2NyaXB0UHJvbXB0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUodG9BUEkocGFn
ZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZGVmYXVsdFZhbHVlLmltcGwoKSksIHRv
QVBJKGZyYW1lKSwgdG9BUEkoc2VjdXJpdHlPcmlnaW4uZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pKSk7CisgICAgICAgICAgICAgICAgUmVmUHRyPEFQSTo6U3RyaW5nPiBzdHJpbmcg
PSBhZG9wdFJlZih0b0ltcGwobV9jbGllbnQucnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVk
Rm9yVXNlV2l0aFY1KHRvQVBJKCZwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShk
ZWZhdWx0VmFsdWUuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShzZWN1cml0eU9yaWdpbi5n
ZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpKTsKICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICBpZiAoc3RyaW5nKQogICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihzdHJpbmctPnN0cmluZygpKTsKQEAgLTE2NjIsNyArMTY2Miw3IEBAIHZvaWQgV0tQ
YWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVu
dEJhc2UqIHdrQ2xpZW50CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGlmIChtX2NsaWVudC5ydW5KYXZhU2NyaXB0UHJvbXB0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAp
IHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8QVBJOjpTdHJpbmc+IHN0cmluZyA9IGFkb3B0UmVm
KHRvSW1wbChtX2NsaWVudC5ydW5KYXZhU2NyaXB0UHJvbXB0X2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjAodG9BUEkocGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZGVmYXVsdFZhbHVl
LmltcGwoKSksIHRvQVBJKGZyYW1lKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSkpOworICAg
ICAgICAgICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4gc3RyaW5nID0gYWRvcHRSZWYodG9JbXBs
KG1fY2xpZW50LnJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCh0b0FQ
SSgmcGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZGVmYXVsdFZhbHVlLmltcGwo
KSksIHRvQVBJKGZyYW1lKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSkpOwogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChzdHJpbmcpCiAgICAgICAgICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHN0cmluZy0+c3RyaW5nKCkpOwpAQCAtMTgxNCwxNiArMTgxNCwx
NiBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3Qg
V0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudAogICAgICAgICAgICAgcmV0dXJuIG1fY2xpZW50
LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbF9kZXByZWNhdGVkRm9yVXNlV2l0aFY2IHx8IG1f
Y2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDsKICAgICAgICAgfQogCi0gICAgICAg
IHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYktpdDo6V2ViUGFnZVByb3h5KiBw
YWdlLCBjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiBm
cmFtZSwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAgICAgICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFdURjo6U3RyaW5nJiBt
ZXNzYWdlLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqIGZyYW1lLCBTZWN1cml0eU9yaWdpbkRhdGEm
JiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKG1fY2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5l
bCkgewogICAgICAgICAgICAgICAgIFJlZlB0cjxSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxS
ZXN1bHRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxSZXN1
bHRMaXN0ZW5lcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAg
ICAgICAgICBtX2NsaWVudC5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwodG9BUEkocGFnZSks
IHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShsaXN0ZW5lci5nZXQo
KSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICAgICAgbV9jbGllbnQu
cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKHRvQVBJKCZwYWdlKSwgdG9BUEkobWVzc2FnZS5p
bXBsKCkpLCB0b0FQSShmcmFtZSksIHRvQVBJKGxpc3RlbmVyLmdldCgpKSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGlmIChtX2NsaWVudC5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxfZGVw
cmVjYXRlZEZvclVzZVdpdGhWNikgewotICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gbV9j
bGllbnQucnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjYo
dG9BUEkocGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gbV9jbGll
bnQucnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjYodG9B
UEkoJnBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1
bHQpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTE4NDksMTIg
KzE4NDksMTIgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYs
IGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKG1fY2xpZW50LmV4Y2VlZGVkRGF0YWJhc2VRdW90YSh0b0FQSShwYWdlKSwgdG9B
UEkoZnJhbWUpLCB0b0FQSShvcmlnaW4pLCB0b0FQSShkYXRhYmFzZU5hbWUuaW1wbCgpKSwgdG9B
UEkoZGF0YWJhc2VEaXNwbGF5TmFtZS5pbXBsKCkpLCBjdXJyZW50UXVvdGEsIGN1cnJlbnRPcmln
aW5Vc2FnZSwgY3VycmVudERhdGFiYXNlVXNhZ2UsIGV4cGVjdGVkVXNhZ2UsIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbykpOwogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBydW5PcGVuUGFuZWwo
V2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiwgQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJzKiBwYXJhbWV0ZXJz
LCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5KiBsaXN0ZW5lcikgZmluYWwKKyAgICAg
ICAgYm9vbCBydW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5KiBm
cmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIEFQSTo6T3BlblBhbmVsUGFyYW1l
dGVycyogcGFyYW1ldGVycywgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSogbGlzdGVu
ZXIpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQucnVuT3BlblBh
bmVsKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAgICAgbV9jbGll
bnQucnVuT3BlblBhbmVsKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKHBhcmFtZXRl
cnMpLCB0b0FQSShsaXN0ZW5lciksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAg
ICAgICBtX2NsaWVudC5ydW5PcGVuUGFuZWwodG9BUEkoJnBhZ2UpLCB0b0FQSShmcmFtZSksIHRv
QVBJKHBhcmFtZXRlcnMpLCB0b0FQSShsaXN0ZW5lciksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCkBAIC0xOTA2LDcgKzE5
MDYsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29u
c3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudAogICAgICAgICB9CiAKICNpZiBFTkFCTEUo
REVWSUNFX09SSUVOVEFUSU9OKQotICAgICAgICB2b2lkIHNob3VsZEFsbG93RGV2aWNlT3JpZW50
YXRpb25BbmRNb3Rpb25BY2Nlc3MoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5Jiwg
Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW5EYXRhLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgICAgICB2
b2lkIHNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3MoV2ViUGFnZVBy
b3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYg
b3JpZ2luRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5zaG91bGRB
bGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzKQogICAgICAgICAgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CkBAIC0yMDc2LDcgKzIwNzYsNyBAQCB2b2lk
IFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlD
bGllbnRCYXNlKiB3a0NsaWVudAogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAgICAgICAgLy8g
VGhlIGN1cnJlbnQgbWV0aG9kIGlzIHNwZWNpYWxpemVkIGZvciBXZWJLaXRUZXN0UnVubmVyLgot
ICAgICAgICB2b2lkIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoV2ViUGFnZVByb3h5JiwgQVBJ
OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsJiwgV2ViRnJhbWVQcm94eSYsIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpXZWJB
dXRoZW50aWNhdGlvblBhbmVsUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAg
ICAgICAgdm9pZCBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKFdlYlBhZ2VQcm94eSYsIEFQSTo6
V2ViQXV0aGVudGljYXRpb25QYW5lbCYsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OldlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxSZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAogICAgICAgICB7
CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwpIHsK
ICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OldlYkF1dGhlbnRpY2F0
aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlKTsKQEAgLTIxNjAsMTEgKzIxNjAsMTEgQEAgdm9p
ZCBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3Qg
V0tQYWdlTmF2aWdhdGlvbkNsaWUKICAgICAgICAgICAgIG1fY2xpZW50LmRpZEZhaWxOYXZpZ2F0
aW9uKHRvQVBJKCZwYWdlKSwgdG9BUEkobmF2aWdhdGlvbiksIHRvQVBJKGVycm9yKSwgdG9BUEko
dXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAg
ICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihXZWJQYWdl
UHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIHN1YmZyYW1lLCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZp
Z2F0aW9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhKSBvdmVycmlkZQorICAgICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRJ
blN1YmZyYW1lV2l0aEVycm9yKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgc3Vi
ZnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSwg
QVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiBlcnJvciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7CiAgICAg
ICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZEZhaWxQcm92
aXNpb25hbExvYWRJblN1YmZyYW1lKHRvQVBJKCZwYWdlKSwgdG9BUEkobmF2aWdhdGlvbiksIHRv
QVBJKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoc3ViZnJhbWUsIHNlY3VyaXR5T3JpZ2luRGF0YS5z
ZWN1cml0eU9yaWdpbigpKS5wdHIoKSksIHRvQVBJKGVycm9yKSwgdG9BUEkodXNlckRhdGEpLCBt
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgbV9jbGllbnQuZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZEluU3ViZnJhbWUodG9BUEkoJnBhZ2UpLCB0b0FQSShuYXZpZ2F0aW9uKSwg
dG9BUEkoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShzdWJmcmFtZSwgV1RGTW92ZShzZWN1cml0eU9y
aWdpbkRhdGEpKS5wdHIoKSksIHRvQVBJKGVycm9yKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBkaWRGaW5pc2hE
b2N1bWVudExvYWQoV2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRp
b24sIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5t
bQppbmRleCBhMDBiMjAzY2M5MDU5MzAxYmVjYzQ2MWQ2MWI0NjczMmI4NTYxMmZkLi4yOTE0ZTQ3
YmYzNTkxNTViMjI5NDgzYjc0ZmM0OGZjNTRlZWRjNWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVy
Lm1tCkBAIC0xMjcsMTAgKzEyNywxMCBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KICAgICAKLSAg
ICB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBX
ZWJLaXQ6OkZyYW1lSW5mb0RhdGEmIGZyYW1lSW5mb0RhdGEsIFdlYkNvcmU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKSBvdmVycmlkZQorICAgIHZvaWQgZGlk
UG9zdE1lc3NhZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYktpdDo6RnJhbWVJbmZv
RGF0YSYmIGZyYW1lSW5mb0RhdGEsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2Vy
aWFsaXplZFNjcmlwdFZhbHVlKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgQGF1dG9yZWxlYXNl
cG9vbCB7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IGZyYW1lSW5mbyA9IHdy
YXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShmcmFtZUluZm9EYXRhLCAmcGFnZSkpOworICAg
ICAgICAgICAgUmV0YWluUHRyPFdLRnJhbWVJbmZvPiBmcmFtZUluZm8gPSB3cmFwcGVyKEFQSTo6
RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgJnBhZ2UpKTsKICAgICAg
ICAgICAgIGlkIGJvZHkgPSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUo
c2VyaWFsaXplZFNjcmlwdFZhbHVlLCAwKTsKICAgICAgICAgICAgIGF1dG8gbWVzc2FnZSA9IGFk
b3B0TlMoW1tXS1NjcmlwdE1lc3NhZ2UgYWxsb2NdIF9pbml0V2l0aEJvZHk6Ym9keSB3ZWJWaWV3
OmZyb21XZWJQYWdlUHJveHkocGFnZSkgZnJhbWVJbmZvOmZyYW1lSW5mby5nZXQoKSBuYW1lOm1f
bmFtZS5nZXQoKV0pOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAppbmRleCBiZjdmOTVkN2Y2ZDgwZjNjYjcwZGQ2
NTNlNGRmYjI4ZTAwMjdkMzBkLi40NzgwMTM0MmVhNjA5MmZiNWVjYWU4Mjc1NzI4MDM5NTk0Y2Q0
YjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRV
SUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
VUlDbGllbnQuY3BwCkBAIC03NiwyNCArNzYsMjQgQEAgcHJpdmF0ZToKICAgICAgICAgd2Via2l0
V2ViVmlld0Nsb3NlUGFnZShtX3dlYlZpZXcpOwogICAgIH0KIAotICAgIHZvaWQgcnVuSmF2YVNj
cmlwdEFsZXJ0KFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQ
cm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRBbGVy
dChXZWJQYWdlUHJveHkmLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkqLCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBmaW5hbAogICAgIHsKICAgICAgICAgd2Via2l0V2ViVmlld1J1bkphdmFTY3Jp
cHRBbGVydChtX3dlYlZpZXcsIG1lc3NhZ2UudXRmOCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiAgICAgfQogCi0gICAgdm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybShXZWJQYWdlUHJv
eHkqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKSBmaW5hbAorICAgIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViUGFnZVByb3h5
JiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5KiwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
IGZpbmFsCiAgICAgewogICAgICAgICB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdENvbmZpcm0o
bV93ZWJWaWV3LCBtZXNzYWdlLnV0ZjgoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
ICAgIH0KIAotICAgIHZvaWQgcnVuSmF2YVNjcmlwdFByb21wdChXZWJQYWdlUHJveHkqLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlLCBXZWJGcmFtZVBy
b3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgRnVuY3Rpb248dm9pZChj
b25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAgICB2b2lkIHJ1bkph
dmFTY3JpcHRQcm9tcHQoV2ViUGFnZVByb3h5JiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgV2ViRnJhbWVQcm94eSosIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKSBmaW5hbAogICAgIHsKICAgICAgICAgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRQ
cm9tcHQobV93ZWJWaWV3LCBtZXNzYWdlLnV0ZjgoKSwgZGVmYXVsdFZhbHVlLnV0ZjgoKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0KIAogICAgIGJvb2wgY2FuUnVuQmVmb3Jl
VW5sb2FkQ29uZmlybVBhbmVsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAg
dm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV2ViUGFnZVByb3h5KiwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwK
KyAgICB2b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChXZWJQYWdlUHJveHkmLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmJiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwK
ICAgICB7CiAgICAgICAgIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0QmVmb3JlVW5sb2FkQ29u
ZmlybShtX3dlYlZpZXcsIG1lc3NhZ2UudXRmOCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgfQpAQCAtMjExLDcgKzIxMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGRlZmF1bHRRdW90YSk7CiAgICAgfQogCi0gICAgYm9vbCBydW5PcGVuUGFuZWwo
V2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYsIEFQSTo6T3BlblBhbmVsUGFyYW1ldGVycyogcGFyYW1ldGVycywgV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJQcm94eSogbGlzdGVuZXIpIGZpbmFsCisgICAgYm9vbCBydW5PcGVu
UGFuZWwoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSosIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYmLCBBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIFdlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkqIGxpc3RlbmVyKSBmaW5hbAogICAgIHsKICAgICAgICAg
R1JlZlB0cjxXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9wdEdSZWYod2Vi
a2l0RmlsZUNob29zZXJSZXF1ZXN0Q3JlYXRlKHBhcmFtZXRlcnMsIGxpc3RlbmVyKSk7CiAgICAg
ICAgIHdlYmtpdFdlYlZpZXdSdW5GaWxlQ2hvb3NlclJlcXVlc3QobV93ZWJWaWV3LCByZXF1ZXN0
LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCmluZGV4IDY3ZDlkOTQ5OTAwMTlhYzg2
MzIwNWU1OTcyODc1MGM2ZDQ5MDVlNWUuLjk5NGJkMmVkZTg2NTVlNTY2Yjg3ZTRkZjA3YTJkOGJi
OGRlYTMxMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcApAQCAtMTkwLDcgKzE5MCw3IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJQYWdl
UHJveHkmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRQb3N0TWVz
c2FnZShXZWJQYWdlUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKSBvdmVycmlkZQogICAgIHsKICAgICAg
ICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCoganNSZXN1bHQgPSB3ZWJraXRKYXZhc2NyaXB0UmVz
dWx0Q3JlYXRlKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CiAgICAgICAgIGdfc2lnbmFsX2VtaXQo
bV9tYW5hZ2VyLCBzaWduYWxzW1NDUklQVF9NRVNTQUdFX1JFQ0VJVkVEXSwgbV9oYW5kbGVyTmFt
ZSwganNSZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIu
Y3BwCmluZGV4IDViYTYxMGU3ZDlhNDRkMDQ3MzgzODFlMjNkMDQwYmRhOTJjM2ZjOWYuLjZlYzI2
MGIyY2M0NWNmYzhkYmI1ZTVhNWU1MWY4ODEwZjJiMGUzN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5k
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90
ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgog
ICAgIHsKICAgICB9CiAKLSAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYlBhZ2VQcm94eSYgcGFn
ZSwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYg
c2VyaWFsaXplZFNjcmlwdFZhbHVlKSBvdmVycmlkZQorICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2Uo
V2ViUGFnZVByb3h5JiBwYWdlLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKSBvdmVycmlkZQogICAgIHsKICAgICAg
ICAgU3RyaW5nIG1lc3NhZ2UgPSBzZXJpYWxpemVkU2NyaXB0VmFsdWUudG9TdHJpbmcoKTsKICAg
ICAgICAgVmVjdG9yPFN0cmluZz4gdG9rZW5zID0gbWVzc2FnZS5zcGxpdCgnOicpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAppbmRleCA5NDYz
ZTUxNWNjN2JjZmZjNmMzYWMxMWRlNDQ1NTYzYTg5NWM5NTM5Li40NjBlYmE0YWNhOTMwNzMxNjVl
YjdmYTAxZTI3Zjg1MmJjNTg4ZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIHZvaWQgZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBk
aWRDYW5jZWxDbGllbnRSZWRpcmVjdChXZWJQYWdlUHJveHkmKSBvdmVycmlkZTsKICAgICAgICAg
dm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uV2l0aEVycm9yKFdlYlBhZ2VQcm94eSYs
IFdlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBkaWRGYWlsUHJv
dmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVBy
b3h5JiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgQVBJOjpOYXZpZ2F0aW9u
KiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7
CisgICAgICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3Io
V2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYmLCBBUEk6Ok5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgQVBJ
OjpPYmplY3QqKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRDb21taXROYXZpZ2F0aW9uKFdl
YlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAg
ICAgICAgIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2
aWdhdGlvbiosIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkRmluaXNo
TmF2aWdhdGlvbihXZWJQYWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVjdCop
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLm1tCmluZGV4IDNlOTg0YzFlZWY3NWI3NTI5YTNjNDNkODIzNjYyYWFjOTA1YjczMGIu
LmUwZmZhNTQ0ODc0MzE4MjJhZjRjMTI2OWRkNjQ4MjQ0ZTI3OTFiMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTg0Niw3ICs4
NDYsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmFpbFBy
b3Zpc2lvbmFsTmF2aWdhdGlvbldpdGhFcnJvcihXZQogfQogCiAvLyBGSVhNRTogU2hvdWxkbid0
IG5lZWQgdG8gcGFzcyB0aGUgV2ViRnJhbWVQcm94eSBpbiBoZXJlLiBBdCBtb3N0LCBhIEZyYW1l
SGFuZGxlLgotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZhaWxQ
cm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0aEVycm9yKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2Vi
RnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1
cml0eU9yaWdpbiwgQVBJOjpOYXZpZ2F0aW9uKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYgZXJyb3IsIEFQSTo6T2JqZWN0KikKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihXZWJQYWdl
UHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIFNlY3VyaXR5T3JpZ2lu
RGF0YSYmIHNlY3VyaXR5T3JpZ2luLCBBUEk6Ok5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpPYmplY3QqKQogewogICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgYXNzZXJ0IHRoYXQgbmF2aWdhdGlvbiBpcyBub3QgbnVsbCBoZXJlLCBidXQgaXQncyBj
dXJyZW50bHkgbnVsbCBiZWNhdXNlIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lIHBhc3NlcyBudWxsLgogCkBAIC04NTYsNyArODU2LDcgQEAgdm9pZCBOYXZpZ2F0
aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZy
YW1lV2l0aEVycm8KICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IG1fbmF2aWdhdGlvblN0
YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpOwogICAgIGF1dG8gZXJyb3JXaXRoUmVjb3Zl
cnlBdHRlbXB0ZXIgPSBjcmVhdGVFcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlcihtX25hdmlnYXRp
b25TdGF0ZS5tX3dlYlZpZXcsIHdlYkZyYW1lUHJveHksIGVycm9yKTsKIAotICAgIFsoaWQgPFdL
TmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4pbmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3Om1f
bmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBuYXZpZ2F0aW9uOm5pbCBkaWRGYWlsUHJvdmlzaW9u
YWxMb2FkSW5TdWJmcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUod2ViRnJhbWVQ
cm94eSwgc2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSkpIHdpdGhFcnJvcjplcnJvcldp
dGhSZWNvdmVyeUF0dGVtcHRlci5nZXQoKV07CisgICAgWyhpZCA8V0tOYXZpZ2F0aW9uRGVsZWdh
dGVQcml2YXRlPiluYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUu
bV93ZWJWaWV3IG5hdmlnYXRpb246bmlsIGRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1l
OndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSh3ZWJGcmFtZVByb3h5LCBXVEZNb3ZlKHNl
Y3VyaXR5T3JpZ2luKSkpIHdpdGhFcnJvcjplcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlci5nZXQo
KV07CiB9CiAKIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRDb21t
aXROYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0
aW9uLCBBUEk6Ok9iamVjdCopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVn
YXRlLmgKaW5kZXggZmFjNzBiNmJjMzBjODQ2ZTIwZTFkYWEyMTJjYTA2YjMwNjhhMjIzYS4uMzNi
YzE1YmJkOTQ0OTdiNTI4MWNjNDRiNjBjNjM5MGY1ZWIwOGRiMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaApAQCAtODgsMTQgKzg4LDE0IEBAIHByaXZhdGU6
CiAgICAgICAgIHZvaWQgZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKFdlYlBhZ2VQcm94eSop
IGZpbmFsOwogICAgICAgICB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbihXZWJQYWdlUHJveHkqKSBm
aW5hbDsKICAgICAgICAgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbihXZWJQYWdlUHJveHkqKSBmaW5h
bDsKLSAgICAgICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoV2ViUGFnZVByb3h5KiwgY29uc3Qg
V1RGOjpTdHJpbmcmLCBXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKLSAg
ICAgICAgdm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybShXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6
OlN0cmluZyYsIFdlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKLSAg
ICAgICAgdm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6
U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgRnVuY3Rpb248dm9pZChjb25zdCBXVEY6OlN0cmluZyYp
PiYmKSBmaW5hbDsKKyAgICAgICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoV2ViUGFnZVByb3h5
JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJGcmFtZVByb3h5KiwgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiYsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWw7
CisgICAgICAgIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViUGFnZVByb3h5JiwgY29uc3Qg
V1RGOjpTdHJpbmcmLCBXZWJGcmFtZVByb3h5KiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOworICAg
ICAgICB2b2lkIHJ1bkphdmFTY3JpcHRQcm9tcHQoV2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpT
dHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYkZyYW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmJiwgRnVuY3Rpb248dm9pZChjb25zdCBXVEY6OlN0cmluZyYpPiYmKSBm
aW5hbDsKICAgICAgICAgdm9pZCBwcmVzZW50U3RvcmFnZUFjY2Vzc0NvbmZpcm1EaWFsb2coY29u
c3QgV1RGOjpTdHJpbmcmIHJlcXVlc3RpbmdEb21haW4sIGNvbnN0IFdURjo6U3RyaW5nJiBjdXJy
ZW50RG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICAgICAgdm9p
ZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm0oV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94
eSosIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZXF1ZXN0aW5nRG9tYWluLCBj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgY3VycmVudERvbWFpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5
Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVBy
b3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JikgZmluYWw7
CiAgICAgICAgIGJvb2wgY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgY29uc3QgZmlu
YWw7Ci0gICAgICAgIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYlBhZ2VQcm94
eSosIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIGZpbmFsOworICAgICAgICB2b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChXZWJQ
YWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYkZyYW1lUHJveHkqLCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmJiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgZmluYWw7CiAgICAgICAgIHZvaWQgZXhjZWVkZWREYXRhYmFzZVF1b3RhKFdlYlBhZ2VQ
cm94eSosIFdlYkZyYW1lUHJveHkqLCBBUEk6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV1RGOjpT
dHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNp
Z25lZCBsb25nIGxvbmcgY3VycmVudFF1b3RhLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudE9y
aWdpblVzYWdlLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFVzYWdlLCB1bnNpZ25lZCBsb25n
IGxvbmcgZXhwZWN0ZWRVc2FnZSwgRnVuY3Rpb248dm9pZCh1bnNpZ25lZCBsb25nIGxvbmcpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKICAgICAgICAgdm9pZCByZWFjaGVkQXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luJiwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVk
LCBGdW5jdGlvbjx2b2lkKHVuc2lnbmVkIGxvbmcgbG9uZyk+JiYgY29tcGxldGlvbkhhbmRsZXIp
IGZpbmFsOwogICAgICAgICB2b2lkIGRpZFJlc2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3Jk
QXBwZWFyYW5jZShXZWJQYWdlUHJveHkmLCBBUEk6Ok9iamVjdCopIGZpbmFsOwpAQCAtMTIxLDEy
ICsxMjEsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVu
dChXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYsIE9wdGlvblNldDxX
ZWJFdmVudDo6TW9kaWZpZXI+LCBBUEk6Ok9iamVjdCopOwogICAgICAgICB2b2lkIGRpZENsaWNr
QXV0b0ZpbGxCdXR0b24oV2ViUGFnZVByb3h5JiwgQVBJOjpPYmplY3QqKSBmaW5hbDsKICAgICAg
ICAgdm9pZCB0b29sYmFyc0FyZVZpc2libGUoV2ViUGFnZVByb3h5JiwgRnVuY3Rpb248dm9pZChi
b29sKT4mJikgZmluYWw7Ci0gICAgICAgIGJvb2wgcnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSos
IFdlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBBUEk6
Ok9wZW5QYW5lbFBhcmFtZXRlcnMqLCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5Kikg
ZmluYWw7CisgICAgICAgIGJvb2wgcnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1l
UHJveHkqLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgQVBJOjpPcGVuUGFuZWxQYXJh
bWV0ZXJzKiwgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSopIGZpbmFsOwogICAgICAg
ICB2b2lkIGRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQo
V2ViUGFnZVByb3h5JiwgV0tSZXNvdXJjZUxpbWl0KSBmaW5hbDsKICAgICAgICAgdm9pZCBzYXZl
RGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3Ry
aW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBVUkwmLCBBUEk6OkRhdGEmKSBmaW5hbDsK
ICNlbmRpZgogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCi0gICAgICAgIHZvaWQgc2hv
dWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzcyhXZWJLaXQ6OldlYlBhZ2VQ
cm94eSYsIFdlYkZyYW1lUHJveHkmLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKKyAgICAgICAgdm9pZCBz
aG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzKFdlYktpdDo6V2ViUGFn
ZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKICNlbmRpZgogICAgICAgICBi
b29sIG5lZWRzRm9udEF0dHJpYnV0ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3VpRGVsZWdh
dGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZENoYW5nZUZvbnRBdHRyaWJ1dGVzOyB9CiAg
ICAgICAgIHZvaWQgZGlkQ2hhbmdlRm9udEF0dHJpYnV0ZXMoY29uc3QgV2ViQ29yZTo6Rm9udEF0
dHJpYnV0ZXMmKSBmaW5hbDsKQEAgLTE1NSw3ICsxNTUsNyBAQCBwcml2YXRlOgogICAgICAgICB2
b2lkIGltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZFNob3dTYWZlQnJvd3NpbmdXYXJuaW5nKCkgZmlu
YWw7CiAjaWYgRU5BQkxFKFdFQl9BVVRITikKLSAgICAgICAgdm9pZCBydW5XZWJBdXRoZW50aWNh
dGlvblBhbmVsKFdlYlBhZ2VQcm94eSYsIEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYsIFdl
YkZyYW1lUHJveHkmLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpPiYmKSBmaW5hbDsK
KyAgICAgICAgdm9pZCBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKFdlYlBhZ2VQcm94eSYsIEFQ
STo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJBdXRoZW50aWNhdGlv
blBhbmVsUmVzdWx0KT4mJikgZmluYWw7CiAjZW5kaWYKIAogICAgICAgICBVSURlbGVnYXRlJiBt
X3VpRGVsZWdhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
SURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5t
bQppbmRleCBhNzUwMzQ2MjAxNmZlMTYxNzFiMTYwNDY3NGUxNmMzZWE5MmY5ODlkLi45MmVhNzNi
NmNmNTUwYWYzNDA4MWFjNzRlMGQ5ZThiM2NjZmNjMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIFVJRGVs
ZWdhdGU6OlVJQ2xpZW50OjpjcmVhdGVOZXdQYWdlKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2Vi
Q29yZTo6V2luZG93RgogICAgIGNvbXBsZXRpb25IYW5kbGVyKHdlYlZpZXctPl9wYWdlLmdldCgp
KTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdEFsZXJ0KFdl
YlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5KiB3
ZWJGcmFtZVByb3h5LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5
T3JpZ2luRGF0YSwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBV
SURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdEFsZXJ0KFdlYlBhZ2VQcm94eSYsIGNv
bnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5LCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbkRhdGEsIEZ1bmN0aW9u
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5t
X2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2Fn
ZUluaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOwpAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6
OnJ1bkphdmFTY3JpcHRBbGVydChXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYKICAg
ICB9CiAKICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpj
cmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcih3ZWJWaWV3OnJ1bkphdmFTY3JpcHRBbGVy
dFBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjopKTsK
LSAgICBbZGVsZWdhdGUgd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1bkphdmFTY3Jp
cHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6bWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOndyYXBwZXIo
QVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqd2ViRnJhbWVQcm94eSwgc2VjdXJpdHlPcmlnaW5EYXRh
LnNlY3VyaXR5T3JpZ2luKCkpKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZN
b3ZlKGNoZWNrZXIpXSB7CisgICAgW2RlbGVnYXRlIHdlYlZpZXc6bV91aURlbGVnYXRlLm1fd2Vi
VmlldyBydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOm1lc3NhZ2UgaW5pdGlhdGVk
QnlGcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKndlYkZyYW1lUHJveHksIFdU
Rk1vdmUoc2VjdXJpdHlPcmlnaW5EYXRhKSkpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0
cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tl
ciA9IFdURk1vdmUoY2hlY2tlcildIHsKICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25I
YW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwpAQCAtMjk0LDcgKzI5NCw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlD
bGllbnQ6OnJ1bkphdmFTY3JpcHRBbGVydChXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmlu
ZyYKICAgICB9KS5nZXQoKV07CiB9CiAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkph
dmFTY3JpcHRDb25maXJtKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdl
LCBXZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRD
b25maXJtKFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFt
ZVByb3h5KiB3ZWJGcmFtZVByb3h5LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1
cml0eU9yaWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bkph
dmFTY3JpcHRDb25maXJtUGFuZWxXaXRoTWVzc2FnZUluaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9u
SGFuZGxlcikgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CkBAIC0zMDgsNyAr
MzA4LDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdENvbmZpcm0o
V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcKICAgICB9CiAKICAgICBhdXRvIGNoZWNr
ZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCks
IEBzZWxlY3Rvcih3ZWJWaWV3OnJ1bkphdmFTY3JpcHRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTpp
bml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOikpOwotICAgIFtkZWxlZ2F0ZSB3ZWJW
aWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuSmF2YVNjcmlwdENvbmZpcm1QYW5lbFdpdGhN
ZXNzYWdlOm1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpj
cmVhdGUoKndlYkZyYW1lUHJveHksIHNlY3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigp
KSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJP
T0wgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBbZGVsZWdhdGUgd2ViVmlldzptX3VpRGVsZWdhdGUu
bV93ZWJWaWV3IHJ1bkphdmFTY3JpcHRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTptZXNzYWdlIGlu
aXRpYXRlZEJ5RnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCp3ZWJGcmFtZVBy
b3h5LCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luRGF0YSkpKSBjb21wbGV0aW9uSGFuZGxlcjptYWtl
QmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoQk9PTCByZXN1bHQpIG11dGFibGUgewogICAg
ICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CkBAIC0z
MTYsNyArMzE2LDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdENv
bmZpcm0oV2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcKICAgICB9KS5nZXQoKV07CiB9
CiAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRQcm9tcHQoV2ViUGFn
ZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFdURjo6U3RyaW5nJiBk
ZWZhdWx0VmFsdWUsIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHksIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lkKGNv
bnN0IFdURjo6U3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFVJRGVsZWdhdGU6
OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0UHJvbXB0KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBXVEY6OlN0cmluZyYgZGVmYXVsdFZhbHVlLCBXZWJGcmFt
ZVByb3h5KiB3ZWJGcmFtZVByb3h5LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1
cml0eU9yaWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQoY29uc3QgV1RGOjpTdHJpbmcmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9k
cy53ZWJWaWV3UnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdERlZmF1bHRUZXh0
SW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFN0cmluZygpKTsKQEAgLTMzMCw3ICszMzAsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJ
Q2xpZW50OjpydW5KYXZhU2NyaXB0UHJvbXB0KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3Ry
aW5nJgogICAgIH0KIAogICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENo
ZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKHdlYlZpZXc6cnVuSmF2YVNj
cmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDpkZWZhdWx0VGV4dDppbml0aWF0ZWRCeUZyYW1l
OmNvbXBsZXRpb25IYW5kbGVyOikpOwotICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlEZWxlZ2F0
ZS5tX3dlYlZpZXcgcnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDptZXNzYWdl
IGRlZmF1bHRUZXh0OmRlZmF1bHRWYWx1ZSBpbml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpG
cmFtZUluZm86OmNyZWF0ZSgqd2ViRnJhbWVQcm94eSwgc2VjdXJpdHlPcmlnaW5EYXRhLnNlY3Vy
aXR5T3JpZ2luKCkpKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNo
ZWNrZXIpXSAoTlNTdHJpbmcgKnJlc3VsdCkgbXV0YWJsZSB7CisgICAgW2RlbGVnYXRlIHdlYlZp
ZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRo
UHJvbXB0Om1lc3NhZ2UgZGVmYXVsdFRleHQ6ZGVmYXVsdFZhbHVlIGluaXRpYXRlZEJ5RnJhbWU6
d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCp3ZWJGcmFtZVByb3h5LCBXVEZNb3ZlKHNl
Y3VyaXR5T3JpZ2luRGF0YSkpKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZN
b3ZlKGNoZWNrZXIpXSAoTlNTdHJpbmcgKnJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChj
aGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKQEAgLTM3Miw3ICszNzIs
NyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6VwogICAgICAgICByZXR1cm47CiAKICAgICBhdXRv
IGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUu
Z2V0KCksIEBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9y
RnJhbWU6ZGVjaXNpb25IYW5kbGVyOikpOwotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+
KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcmVxdWVzdEdlb2xvY2F0
aW9uUGVybWlzc2lvbkZvckZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShmcmFt
ZSwgc2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSkpIGRlY2lzaW9uSGFuZGxlcjptYWtl
QmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShjb21wbGV0aW9uSGFu
ZGxlciwgbnVsbHB0ciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoQk9PTCByZXN1bHQp
IG11dGFibGUgeworICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJW
aWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZv
ckZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShmcmFtZSwgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhIHsgc2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkg
fSkpIGRlY2lzaW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gc3Rk
OjpleGNoYW5nZShjb21wbGV0aW9uSGFuZGxlciwgbnVsbHB0ciksIGNoZWNrZXIgPSBXVEZNb3Zl
KGNoZWNrZXIpXSAoQk9PTCByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoY2hlY2tlci0+
Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMzk3LDcgKzM5
Nyw3IEBAIGJvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNhblJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9k
cy53ZWJWaWV3UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2VJbml0aWF0ZWRC
eUZyYW1lQ29tcGxldGlvbkhhbmRsZXI7CiB9CiAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6
OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0
cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcm94eSwgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpy
dW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJp
bmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHksIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSwgRnVuY3Rpb248dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRl
TWV0aG9kcy53ZWJWaWV3UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2VJbml0
aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZmFsc2UpOwpAQCAtNDExLDcgKzQxMSw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6
OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6CiAg
ICAgfQogCiAgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6
Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IoX3dlYlZpZXc6cnVuQmVmb3JlVW5sb2Fk
Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxl
cjopKTsKLSAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzpt
X3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNz
YWdlOm1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVh
dGUoKndlYkZyYW1lUHJveHksIHNlY3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpKSkg
Y29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJPT0wg
cmVzdWx0KSBtdXRhYmxlIHsKKyAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0
ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1bkJlZm9yZVVubG9hZENvbmZpcm1Q
YW5lbFdpdGhNZXNzYWdlOm1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTp3cmFwcGVyKEFQSTo6RnJh
bWVJbmZvOjpjcmVhdGUoKndlYkZyYW1lUHJveHksIFdURk1vdmUoc2VjdXJpdHlPcmlnaW5EYXRh
KSkpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildIChC
T09MIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFu
ZGxlckhhc0JlZW5DYWxsZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIocmVzdWx0KTsKQEAgLTgxMyw3ICs4MTMsNyBAQCB2b2lkIFVJRGVsZWdhdGU6
OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdChX
ZWJLaXQ6OgogICAgIH0pLmdldCgpXTsKIH0KIAotYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6
cnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHks
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW5EYXRhLCBB
UEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnMqIG9wZW5QYW5lbFBhcmFtZXRlcnMsIFdlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUHJveHkqIGxpc3RlbmVyKQorYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVu
dDo6cnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJv
eHksIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSwgQVBJ
OjpPcGVuUGFuZWxQYXJhbWV0ZXJzKiBvcGVuUGFuZWxQYXJhbWV0ZXJzLCBXZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lclByb3h5KiBsaXN0ZW5lcikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5t
X2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnNJbml0aWF0
ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTgy
Miw3ICs4MjIsNyBAQCBib29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5PcGVuUGFuZWwoV2Vi
UGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcgogICAgIGlmICghZGVsZWdhdGUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gZnJhbWUgPSBBUEk6OkZyYW1lSW5m
bzo6Y3JlYXRlKCp3ZWJGcmFtZVByb3h5LCBzZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlPcmln
aW4oKSk7CisgICAgYXV0byBmcmFtZSA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKndlYkZyYW1l
UHJveHksIFdURk1vdmUoc2VjdXJpdHlPcmlnaW5EYXRhKSk7CiAKICAgICBhdXRvIGNoZWNrZXIg
PSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBz
ZWxlY3Rvcih3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5RnJh
bWU6Y29tcGxldGlvbkhhbmRsZXI6KSk7CiAKQEAgLTg0OCw3ICs4NDgsNyBAQCBib29sIFVJRGVs
ZWdhdGU6OlVJQ2xpZW50OjpydW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94
eSogd2ViRnJhbWVQcgogI2VuZGlmCiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQot
dm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6c2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFu
ZE1vdGlvbkFjY2VzcyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmIHdlYkZy
YW1lUHJveHksIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmln
aW5EYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6c2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlv
bkFuZE1vdGlvbkFjY2VzcyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmIHdl
YkZyYW1lUHJveHksIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2lu
RGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBhdXRvIGRlbGVnYXRlID0gbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CiAg
ICAgaWYgKCFkZWxlZ2F0ZSkKQEAgLTg2MCw3ICs4NjAsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJ
Q2xpZW50OjpzaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzKFdlYktp
dDo6VwogICAgIH0KIAogICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENo
ZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKF93ZWJWaWV3OnNob3VsZEFs
bG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NSZXF1ZXN0ZWRCeUZyYW1lOmRlY2lz
aW9uSGFuZGxlcjopKTsKLSAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBf
d2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRp
b25BbmRNb3Rpb25BY2Nlc3NSZXF1ZXN0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86
OmNyZWF0ZSh3ZWJGcmFtZVByb3h5LCBzZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4o
KSkpIGRlY2lzaW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoQk9P
TCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxl
Z2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHNob3VsZEFsbG93RGV2aWNlT3Jp
ZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NSZXF1ZXN0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpGcmFt
ZUluZm86OmNyZWF0ZSh3ZWJGcmFtZVByb3h5LCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luRGF0YSkp
KSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJPT0wg
Z3JhbnRlZCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxl
ckhhc0JlZW5DYWxsZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2hlY2tlci0+
ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xMjgxLDcgKzEyODEsNyBAQCBzdGF0aWMg
V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0
KF9XS1dlYkF1dGhlbnRpYwogICAgIHJldHVybiBXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0
OjpVbmF2YWlsYWJsZTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuV2ViQXV0
aGVudGljYXRpb25QYW5lbChXZWJQYWdlUHJveHkmLCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwmIHBhbmVsLCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFtZVByb3h5LCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJBdXRo
ZW50aWNhdGlvblBhbmVsUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgVUlEZWxl
Z2F0ZTo6VUlDbGllbnQ6OnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoV2ViUGFnZVByb3h5Jiwg
QVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsJiBwYW5lbCwgV2ViRnJhbWVQcm94eSYgd2ViRnJh
bWVQcm94eSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZp
ZXdSdW5XZWJBdXRoZW50aWNhdGlvblBhbmVsSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5k
bGVyKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxS
ZXN1bHQ6OlVuYXZhaWxhYmxlKTsKQEAgLTEyOTUsNyArMTI5NSw3IEBAIHZvaWQgVUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoV2ViUGFnZVByb3h5JiwgQVBJ
OjpXZWJBdXRoCiAgICAgfQogCiAgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJD
YWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IoX3dlYlZpZXc6cnVu
V2ViQXV0aGVudGljYXRpb25QYW5lbDppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVy
OikpOwotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1f
dWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbDp3cmFwcGVyKHBh
bmVsKSBpbml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSh3ZWJG
cmFtZVByb3h5LCBvcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSkpIGNvbXBsZXRpb25IYW5kbGVyOm1h
a2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildIChfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
UmVzdWx0IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4p
ZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBydW5XZWJBdXRoZW50aWNh
dGlvblBhbmVsOndyYXBwZXIocGFuZWwpIGluaXRpYXRlZEJ5RnJhbWU6d3JhcHBlcihBUEk6OkZy
YW1lSW5mbzo6Y3JlYXRlKHdlYkZyYW1lUHJveHksIFdURk1vdmUob3JpZ2luKSkpIGNvbXBsZXRp
b25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildIChfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsUmVzdWx0IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChjaGVja2Vy
LT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXggNjJmNTgx
NTQ3NTg2NThhZTI1M2ZjMjAxOTlmNzE1ZWMwOWIxZDlkZC4uMjE2YmU1YmZmMjBhNTU2NzA4ZjAw
NTdmNGUzNTBkMTVmZjIwYTJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIHZvaWQgUHJvdmlzaW9u
YWxQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlm
aWVyIGZyYW1lCiAgICAgbV9wYWdlLmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFy
ZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKHVy
bCksIFdURk1vdmUodW5yZWFjaGFibGVVUkwpLCB1c2VyRGF0YSk7CiB9CiAKLXZvaWQgUHJvdmlz
aW9uYWxQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNl
Y3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlz
aW9uYWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBXZWJDb3JlOjpX
aWxsQ29udGludWVMb2FkaW5nIHdpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJiB1
c2VyRGF0YSkKK3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25z
dCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBl
cnJvciwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGluZyB3aWxsQ29udGludWVMb2FkaW5nLCBj
b25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1l
SUQsIG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI1NSw3ICsyNTUsNyBAQCB2
b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUo
RnJhbWVJZGVudGlmaWVyIGZyYW1lSQogICAgIGlmIChhdXRvKiBwYWdlTWFpbkZyYW1lID0gbV9w
YWdlLm1haW5GcmFtZSgpKQogICAgICAgICBwYWdlTWFpbkZyYW1lLT5kaWRGYWlsUHJvdmlzaW9u
YWxMb2FkKCk7CiAKLSAgICBtX3BhZ2UuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hh
cmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIGZyYW1lU2VjdXJpdHlPcmlnaW4sIG5h
dmlnYXRpb25JRCwgcHJvdmlzaW9uYWxVUkwsIGVycm9yLCB3aWxsQ29udGludWVMb2FkaW5nLCB1
c2VyRGF0YSk7IC8vIE1heSBkZWxldGUgfHRoaXN8LgorICAgIG1fcGFnZS5kaWRGYWlsUHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgV1RG
TW92ZShmcmFtZVNlY3VyaXR5T3JpZ2luKSwgbmF2aWdhdGlvbklELCBwcm92aXNpb25hbFVSTCwg
ZXJyb3IsIHdpbGxDb250aW51ZUxvYWRpbmcsIHVzZXJEYXRhKTsgLy8gTWF5IGRlbGV0ZSB8dGhp
c3wuCiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFt
ZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50
MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRp
ZmljYXRlSW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3Jl
OjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNl
ckRhdGEmIHVzZXJEYXRhKQpAQCAtMjk4LDEzICsyOTgsMTMgQEAgdm9pZCBQcm92aXNpb25hbFBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKEZyYW1lSWRlbnRp
ZmllcgogICAgICAgICBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBvcmlnaW5hdGluZ1BhZ2VJRCwg
b3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3RCb2R5KSwg
V1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIGxpc3RlbmVySUQpOwogfQogCi12
b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFt
ZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmll
ciwKK3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFt
ZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmll
ciwKICAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCB1
aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgaWYg
KCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fcGFnZS5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3MuY29w
eVJlZigpLCBtX3dlYlBhZ2VJRCwgZnJhbWVJRCwgZnJhbWVTZWN1cml0eU9yaWdpbiwgaWRlbnRp
ZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBk
b3dubG9hZEF0dHJpYnV0ZSwgbGlzdGVuZXJJRCwgdXNlckRhdGEpOworICAgIG1fcGFnZS5kZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJ
RCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZVNlY3VyaXR5T3JpZ2luKSwgaWRlbnRpZmllciwgbmF2
aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0
dHJpYnV0ZSwgbGlzdGVuZXJJRCwgdXNlckRhdGEpOwogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9u
YWxQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmgKaW5kZXggN2RiY2VmOWQxZDU1MzVhODM1NGQ3YmFlMGM2MDExYTBhNTFiOTEzNy4uY2I5
NWZlMDEwZGM2NDJmY2RmNDYzMzdjM2ViYWU4MjIyZGYxMzI0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCkBAIC05OCw3ICs5OCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2Vi
Q29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmln
YXRpb25BY3Rpb25EYXRhJiYsIEZyYW1lSW5mb0RhdGEmJiwKICAgICAgICAgT3B0aW9uYWw8V2Vi
UGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAgICAgICBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCB1
aW50NjRfdCBsaXN0ZW5lcklEKTsKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLAorICAgIHZvaWQgZGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLAogICAgICAgICBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3Qg
U3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNl
ckRhdGEmKTsKICAgICB2b2lkIGRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmKTsKICAgICB2
b2lkIGRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmlu
ZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyKTsKQEAgLTEwOCw3ICsxMDgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ3JlYXRl
TWFpbkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBVUkwmJiwgVVJMJiYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRh
Jik7CiAgICAgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wg
ZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNv
bnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVu
dCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3Vy
ZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYsIFdlYkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJik7Cisg
ICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2lu
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5n
LCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgc3RhcnRVUkxTY2hlbWVUYXNrKFVSTFNjaGVt
ZVRhc2tQYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgYmFja0ZvcndhcmRHb1RvSXRlbShjb25zdCBX
ZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik+JiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBib29sIGlz
TWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5
Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25E
YXRhJiYsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaAppbmRleCA5ZTAxMmRjMjc1MmJjNjU0ZWZk
NjU4ZDljYzI5YjBjODM3NjQyYmQ1Li5jMjFlYjllNzkyMDg1YTI2MGRiOWNiNjIxM2MyOTVhN2Y5
ZmI2MTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVi
bGljOgogICAgIGNsYXNzIENsaWVudCB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5D
bGllbnQoKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYlBhZ2VQ
cm94eSYsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWUmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJQYWdlUHJv
eHkmLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYpID0g
MDsKICAgICB9OwogCiAgICAgc3RhdGljIFJlZjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcj4gY3Jl
YXRlKHN0ZDo6dW5pcXVlX3B0cjxDbGllbnQ+LCBjb25zdCBTdHJpbmcmIG5hbWUsIEFQSTo6VXNl
ckNvbnRlbnRXb3JsZCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3Bw
CmluZGV4IDIyNGFkN2NmZTcyNzY4OTNiMjMxNWUxOTZmZDY2M2UzOGZhNTNhZDkuLmQxMGU3YjVj
MTI0NmJkZjliYjAzZWZhZWMwNGQxMDE2NDJhM2MwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTM1NCw3ICszNTQsNyBAQCB2b2lkIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKEFQSTo6VXNl
ckNvbnRlbgogICAgIHJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKHdvcmxkLCBudW1iZXJSZW1v
dmVkKTsKIH0KIAotdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6ZGlkUG9zdE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHBhZ2VQcm94eUlELCBjb25zdCBGcmFtZUluZm9EYXRhJiBmcmFtZUluZm9EYXRhLCB1aW50NjRf
dCBtZXNzYWdlSGFuZGxlcklELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVu
Y2UpCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpkaWRQb3N0TWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVBy
b3h5SUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBtZXNzYWdlSGFu
ZGxlcklELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCiB7CiAgICAg
V2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VQcm94eUlE
KTsKICAgICBpZiAoIXBhZ2UpCkBAIC0zNjcsNyArMzY3LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLAogICAgIGlmICghaGFuZGxlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaGFuZGxlci0+
Y2xpZW50KCkuZGlkUG9zdE1lc3NhZ2UoKnBhZ2UsIGZyYW1lSW5mb0RhdGEsIFdlYkNvcmU6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoZGF0YVJlZmVyZW5jZS52ZWN0b3IoKSkpOworICAg
IGhhbmRsZXItPmNsaWVudCgpLmRpZFBvc3RNZXNzYWdlKCpwYWdlLCBXVEZNb3ZlKGZyYW1lSW5m
b0RhdGEpLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KGRhdGFSZWZlcmVu
Y2UudmVjdG9yKCkpKTsKIH0KIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAppbmRleCAwNzgwYzBjMjJhYzVmODdjZTZi
MDgwNzEwNjlkZTk0NmRhNTU5NzI4Li42NzFmYjI5MmQyMDE5NjAzMzdiMDM4M2VkMDdiMjdmZGI5
N2UyYzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKQEAgLTExNCw3
ICsxMTQsNyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgogICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3Zl
cnJpZGU7CiAKLSAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCB1aW50NjRfdCBtZXNzYWdl
SGFuZGxlcklELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIGRpZFBvc3RN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIEZyYW1lSW5m
b0RhdGEmJiwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJik7CiAKICAgICB2b2lkIGFkZFVzZXJDb250ZW50V29ybGRVc2UoQVBJOjpVc2VyQ29udGVu
dFdvcmxkJik7CiAgICAgdm9pZCByZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyhBUEk6OlVzZXJD
b250ZW50V29ybGQmLCB1bnNpZ25lZCBudW1iZXJPZlVzZXNUb1JlbW92ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9y
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5kZXggZThjNDBlYjQ3ODk4Yzc3NGU1MzBkZTViMDQw
ZWU5NzA1Y2UwZWE5NS4uYmFhYmU4ZGVmMWQxMDI4YzUyZmFiNzAxNDI2Mjg0NzcyN2VlYmU2MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0
aGVudGljYXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApAQCAtMzM1LDcgKzMzNSw3IEBA
IHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OnJ1blBhbmVsKCkKICAgICBhdXRvIHRyYW5zcG9y
dHMgPSBnZXRUcmFuc3BvcnRzKCk7CiAgICAgbV9wZW5kaW5nUmVxdWVzdERhdGEucGFuZWwgPSBB
UEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWw6OmNyZWF0ZSgqdGhpcywgZ2V0UnBJZChvcHRpb25z
KSwgdHJhbnNwb3J0cywgZ2V0Q2xpZW50RGF0YVR5cGUob3B0aW9ucykpOwogICAgIGF1dG8mIHBh
bmVsID0gKm1fcGVuZGluZ1JlcXVlc3REYXRhLnBhbmVsOwotICAgIHBhZ2UtPnVpQ2xpZW50KCku
cnVuV2ViQXV0aGVudGljYXRpb25QYW5lbCgqcGFnZSwgcGFuZWwsICpmcmFtZSwgbV9wZW5kaW5n
UmVxdWVzdERhdGEub3JpZ2luLCBbdHJhbnNwb3J0cyA9IFdURk1vdmUodHJhbnNwb3J0cyksIHdl
YWtQYW5lbCA9IG1ha2VXZWFrUHRyKHBhbmVsKSwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhp
cyksIHRoaXNdIChXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0IHJlc3VsdCkgeworICAgIHBh
Z2UtPnVpQ2xpZW50KCkucnVuV2ViQXV0aGVudGljYXRpb25QYW5lbCgqcGFnZSwgcGFuZWwsICpm
cmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHsgbV9wZW5kaW5nUmVxdWVzdERhdGEu
b3JpZ2luIH0sIFt0cmFuc3BvcnRzID0gV1RGTW92ZSh0cmFuc3BvcnRzKSwgd2Vha1BhbmVsID0g
bWFrZVdlYWtQdHIocGFuZWwpLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhpc10g
KFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQgcmVzdWx0KSB7CiAgICAgICAgIC8vIFRoZSBw
YW5lbCBhZGRyZXNzIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBjdXJyZW50IHBlbmRpbmcg
cmVxdWVzdCBpcyBzdGlsbCB0aGUgc2FtZS4KICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vh
a1BhbmVsCiAgICAgICAgICAgICB8fCAocmVzdWx0ID09IFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxS
ZXN1bHQ6OkRpZE5vdFByZXNlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAppbmRleCBmZDlkMzU0N2VmY2YxOTdhNDViZTcyODk1MzcxMGI0ODFmOGQ1OWM5Li4yMjA3
NGY4MmVkNzk5NzBkMDNlOGRkZjYwODg3MjQ4YTBlMjYxM2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTQyNDksMTcgKzQyNDksMTcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJgogICAgIGZyYW1lLT5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbExvYWQodXJsKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNp
b25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNv
bnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBX
aWxsQ29udGludWVMb2FkaW5nIHdpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJiB1
c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2Vj
dXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNp
b25hbFVSTCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFdpbGxDb250aW51ZUxvYWRpbmcg
d2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIGlm
IChtX3Byb3Zpc2lvbmFsUGFnZSAmJiBtX3Byb3Zpc2lvbmFsUGFnZS0+bmF2aWdhdGlvbklEKCkg
PT0gbmF2aWdhdGlvbklEKSB7CiAgICAgICAgIC8vIFRoZSBsb2FkIGRpZCBub3QgZmFpbCwgaXQg
aXMgbWVyZWx5IGhhcHBlbmluZyBpbiBhIG5ldyBwcm92aXNpb25hbCBwcm9jZXNzLgogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hh
cmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIGZyYW1lU2VjdXJpdHlPcmlnaW4sIG5h
dmlnYXRpb25JRCwgcHJvdmlzaW9uYWxVUkwsIGVycm9yLCB3aWxsQ29udGludWVMb2FkaW5nLCB1
c2VyRGF0YSk7CisgICAgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKG1fcHJv
Y2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIG5h
dmlnYXRpb25JRCwgcHJvdmlzaW9uYWxVUkwsIGVycm9yLCB3aWxsQ29udGludWVMb2FkaW5nLCB1
c2VyRGF0YSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkws
IGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBXaWxsQ29udGludWVMb2FkaW5nIHdpbGxDb250
aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5
OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiBwcm9jZXNzLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU2VjdXJpdHlPcmlnaW5EYXRh
JiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJp
bmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgV2lsbENvbnRp
bnVlTG9hZGluZyB3aWxsQ29udGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEp
CiB7CiAgICAgTE9HKExvYWRpbmcsICIoTG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAi
IGluIHdlYiBwcm9jZXNzIHBpZCAlaSBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8g
cHJvdmlzaW9uYWxVUkwgJXMiLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSwgcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgcHJvdmlzaW9uYWxVUkwudXRmOCgpLmRhdGEoKSk7CiAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAiZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lOiBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIGRvbWFpbiA9ICVzLCBjb2RlID0gJWQiLCBmcmFt
ZUlELnRvVUludDY0KCksIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9y
Q29kZSgpKTsKQEAgLTQzMDAsNyArNDMwMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWls
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwCiAg
ICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbldp
dGhFcnJvcigqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBlcnJvciwgcHJvY2Vzcy0+
dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogICAg
IGVsc2UgewogICAgICAgICAvLyBGSVhNRTogR2V0IHRoZSBtYWluIGZyYW1lJ3MgY3VycmVudCBu
YXZpZ2F0aW9uLgotICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZhaWxQcm92aXNpb25h
bExvYWRJblN1YmZyYW1lV2l0aEVycm9yKCp0aGlzLCAqZnJhbWUsIGZyYW1lU2VjdXJpdHlPcmln
aW4sIG51bGxwdHIsIGVycm9yLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVz
ZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlk
RmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3IoKnRoaXMsICpmcmFtZSwgV1RG
TW92ZShmcmFtZVNlY3VyaXR5T3JpZ2luKSwgbnVsbHB0ciwgZXJyb3IsIHByb2Nlc3MtPnRyYW5z
Zm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKICAgICB9CiAK
ICAgICBtX2ZhaWxpbmdQcm92aXNpb25hbExvYWRVUkwgPSB7IH07CkBAIC00ODgzLDcgKzQ4ODMs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAgICAgICBiZWdpblNhZmVCcm93c2luZ0No
ZWNrKHJlcXVlc3QudXJsKCksIGZyYW1lLmlzTWFpbkZyYW1lKCksIGxpc3RlbmVyKTsKIAogICAg
IEFQSTo6TmF2aWdhdGlvbiogbWFpbkZyYW1lTmF2aWdhdGlvbiA9IGZyYW1lLmlzTWFpbkZyYW1l
KCkgPyBuYXZpZ2F0aW9uLmdldCgpIDogbnVsbHB0cjsKLSAgICBXZWJGcmFtZVByb3h5KiBvcmln
aW5hdGluZ0ZyYW1lID0gb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmZyYW1lSUQgPyBwcm9jZXNz
LT53ZWJGcmFtZSgqb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmZyYW1lSUQpIDogbnVsbHB0cjsK
KyAgICBXZWJGcmFtZVByb3h5KiBvcmlnaW5hdGluZ0ZyYW1lID0gb3JpZ2luYXRpbmdGcmFtZUlu
Zm9EYXRhLmZyYW1lSUQgPyBwcm9jZXNzLT53ZWJGcmFtZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0Rh
dGEuZnJhbWVJRCkgOiBudWxscHRyOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlID0gd2Vic2l0
ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKQEAgLTQ4OTQsMTIgKzQ4OTQs
MTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICBpZiAobV9wb2xpY3lDbGllbnQpCiAg
ICAgICAgIG1fcG9saWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKCp0
aGlzLCAmZnJhbWUsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBvcmlnaW5hdGluZ0Zy
YW1lLCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUobGlzdGVuZXIp
LCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5n
ZXQoKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGF1dG8gZGVzdGluYXRpb25GcmFtZUluZm8gPSBB
UEk6OkZyYW1lSW5mbzo6Y3JlYXRlKGZyYW1lLCBmcmFtZVNlY3VyaXR5T3JpZ2luLnNlY3VyaXR5
T3JpZ2luKCkpOworICAgICAgICBhdXRvIGRlc3RpbmF0aW9uRnJhbWVJbmZvID0gQVBJOjpGcmFt
ZUluZm86OmNyZWF0ZShmcmFtZSwgV1RGTW92ZShmcmFtZVNlY3VyaXR5T3JpZ2luKSk7CiAgICAg
ICAgIFJlZlB0cjxBUEk6OkZyYW1lSW5mbz4gc291cmNlRnJhbWVJbmZvOwogICAgICAgICBpZiAo
IWZyb21BUEkgJiYgb3JpZ2luYXRpbmdGcmFtZSA9PSAmZnJhbWUpCiAgICAgICAgICAgICBzb3Vy
Y2VGcmFtZUluZm8gPSBkZXN0aW5hdGlvbkZyYW1lSW5mby5jb3B5UmVmKCk7Ci0gICAgICAgIGVs
c2UgaWYgKCFmcm9tQVBJKQotICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFt
ZUluZm86OmNyZWF0ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlE
ID8gcHJvY2Vzcy0+d2ViUGFnZSgqb3JpZ2luYXRpbmdQYWdlSUQpIDogbnVsbHB0cik7CisgICAg
ICAgIGVsc2UgaWYgKCFmcm9tQVBJKSB7CisgICAgICAgICAgICBhdXRvKiBvcmlnaW5hdGluZ1Bh
Z2UgPSBvcmlnaW5hdGluZ1BhZ2VJRCA/IHByb2Nlc3MtPndlYlBhZ2UoKm9yaWdpbmF0aW5nUGFn
ZUlEKSA6IG51bGxwdHI7CisgICAgICAgICAgICBzb3VyY2VGcmFtZUluZm8gPSBBUEk6OkZyYW1l
SW5mbzo6Y3JlYXRlKFdURk1vdmUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhKSwgb3JpZ2luYXRp
bmdQYWdlKTsKKyAgICAgICAgfQogCiAgICAgICAgIGF1dG8gdXNlckluaXRpYXRlZEFjdGl2aXR5
ID0gcHJvY2Vzcy0+dXNlckluaXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVz
ZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsKICAgICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlu
a3MgPSAhbV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lz
aW9uCkBAIC01MDA3LDcgKzUwMDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eQogICAgIHNl
bmRlci0+c2VuZChQb2xpY3lBY3Rpb246OlVzZSwgbmF2aWdhdGlvbklELCBEb3dubG9hZElEKCks
IFdURjo6bnVsbG9wdCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JO
ZXdXaW5kb3dBY3Rpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50
aWZpZXIsCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9u
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3Vy
aXR5T3JpZ2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKICAgICBOYXZpZ2F0
aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVj
dG9yKHBhZ2VDbGllbnQoKSk7CkBAIC01MDMzLDcgKzUwMzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBjb25zdAogICAgIGVsc2UgewogICAgICAgICBSZWZQdHI8QVBJOjpGcmFtZUluZm8+IHNvdXJj
ZUZyYW1lSW5mbzsKICAgICAgICAgaWYgKGZyYW1lKQotICAgICAgICAgICAgc291cmNlRnJhbWVJ
bmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqZnJhbWUsIGZyYW1lU2VjdXJpdHlPcmlnaW4u
c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgICAgICAgICBzb3VyY2VGcmFtZUluZm8gPSBBUEk6OkZy
YW1lSW5mbzo6Y3JlYXRlKCpmcmFtZSwgV1RGTW92ZShmcmFtZVNlY3VyaXR5T3JpZ2luKSk7CiAK
ICAgICAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnVzZXJJbml0
aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRp
Zmllcik7CiAgICAgICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gbV9tYWluRnJhbWUgPyAh
aG9zdHNBcmVFcXVhbChtX21haW5GcmFtZS0+dXJsKCksIHJlcXVlc3QudXJsKCkpIDogZmFsc2U7
CkBAIC01MDQ1LDEzICs1MDQ3LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0CiAgICAgICAg
IAogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0
eU9yaWdpbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCit2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFNl
Y3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFBvbGljeUNoZWNrSWRlbnRp
ZmllciBpZGVudGlmaWVyLAogICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9v
bCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2
NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBkZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwg
ZnJhbWVJRCwgZnJhbWVTZWN1cml0eU9yaWdpbiwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCBy
ZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0ZSwgbGlz
dGVuZXJJRCwgdXNlckRhdGEpOworICAgIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKG1f
cHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lU2Vj
dXJpdHlPcmlnaW4pLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0
LCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlLCBsaXN0ZW5lcklELCB1c2VyRGF0
YSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJl
ZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJ
RCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJh
bWVTZWN1cml0eU9yaWdpbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCit2b2lk
IFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiBwcm9jZXNzLCBQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBQ
b2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKICAgICB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2Fk
QXR0cmlidXRlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEp
CiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKQEAg
LTUwODAsNyArNTA4Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNw
b25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgaWYgKG1fcG9s
aWN5Q2xpZW50KQogICAgICAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UoKnRoaXMsICpmcmFtZSwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgV1RG
TW92ZShsaXN0ZW5lciksIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRh
dGEub2JqZWN0KCkpLmdldCgpKTsKICAgICBlbHNlIHsKLSAgICAgICAgYXV0byBuYXZpZ2F0aW9u
UmVzcG9uc2UgPSBBUEk6Ok5hdmlnYXRpb25SZXNwb25zZTo6Y3JlYXRlKEFQSTo6RnJhbWVJbmZv
OjpjcmVhdGUoKmZyYW1lLCBmcmFtZVNlY3VyaXR5T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkpLmdl
dCgpLCByZXF1ZXN0LCByZXNwb25zZSwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0
ZSk7CisgICAgICAgIGF1dG8gbmF2aWdhdGlvblJlc3BvbnNlID0gQVBJOjpOYXZpZ2F0aW9uUmVz
cG9uc2U6OmNyZWF0ZShBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCpmcmFtZSwgV1RGTW92ZShmcmFt
ZVNlY3VyaXR5T3JpZ2luKSkuZ2V0KCksIHJlcXVlc3QsIHJlc3BvbnNlLCBjYW5TaG93TUlNRVR5
cGUsIGRvd25sb2FkQXR0cmlidXRlKTsKICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UoKnRoaXMsIFdURk1vdmUobmF2aWdhdGlvblJl
c3BvbnNlKSwgV1RGTW92ZShsaXN0ZW5lciksIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09i
amVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKICAgICB9CiB9CkBAIC01MjE4LDEyICs1
MjIwLDEzIEBAIHN0YXRpYyB2b2lkIHRyeVNPQXV0aG9yaXphdGlvbihSZWY8QVBJOjpOYXZpZ2F0
aW9uQWN0aW9uPiYmIG5hdmlnYXRpb25BY3Rpb24sIFdlCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZvRGF0YSYgb3JpZ2luYXRpbmdG
cmFtZUluZm9EYXRhLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGlu
Z1BhZ2VJRCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2luZG93RmVhdHVyZXMmJiB3aW5k
b3dGZWF0dXJlcywgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZTo6RGVsYXllZFJlcGx5JiYgcmVw
bHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZShGcmFtZUluZm9EYXRhJiYgb3Jp
Z2luYXRpbmdGcmFtZUluZm9EYXRhLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBv
cmlnaW5hdGluZ1BhZ2VJRCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2luZG93RmVhdHVy
ZXMmJiB3aW5kb3dGZWF0dXJlcywgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0
aW9uRGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZTo6RGVsYXllZFJl
cGx5JiYgcmVwbHkpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIG9yaWdpbmF0aW5n
RnJhbWVJbmZvRGF0YS5mcmFtZUlEKTsKLSAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgbV9w
cm9jZXNzLT53ZWJGcmFtZSgqb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmZyYW1lSUQpKTsKKyAg
ICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgbV9wcm9jZXNzLT53ZWJGcmFtZShvcmlnaW5hdGlu
Z0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCkpOwogCi0gICAgYXV0byBvcmlnaW5hdGluZ0ZyYW1lSW5m
byA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBtX3By
b2Nlc3MtPndlYlBhZ2UoKm9yaWdpbmF0aW5nUGFnZUlEKSk7CisgICAgYXV0byogb3JpZ2luYXRp
bmdQYWdlID0gbV9wcm9jZXNzLT53ZWJQYWdlKCpvcmlnaW5hdGluZ1BhZ2VJRCk7CisgICAgYXV0
byBvcmlnaW5hdGluZ0ZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShv
cmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEpLCBvcmlnaW5hdGluZ1BhZ2UpOwogICAgIGF1dG8gbWFp
bkZyYW1lVVJMID0gbV9tYWluRnJhbWUgPyBtX21haW5GcmFtZS0+dXJsKCkgOiBVUkwoKTsKICAg
ICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgbWFpbkZyYW1lVVJMLCByZXF1ZXN0LCByZXBseSA9IFdURk1vdmUocmVwbHkpXSAo
UmVmUHRyPFdlYlBhZ2VQcm94eT4gbmV3UGFnZSkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghbmV3
UGFnZSkgewpAQCAtNTI5Myw3ICs1Mjk2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlUGFn
ZShib29sIHN0b3BSZXNwb25zaXZlbmVzc1RpbWVyKQogICAgIG1fdWlDbGllbnQtPmNsb3NlKHRo
aXMpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2lu
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFT
Y3JpcHRBbGVydDo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVu
SmF2YVNjcmlwdEFsZXJ0KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTZWN1cml0eU9yaWdpbkRh
dGEmJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0QWxlcnQ6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewog
ICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsK
ICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZnJhbWUpOwpAQCAtNTMwOSwxMCArNTMxMiwx
MCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaQogICAgICAgICBpZiAoYXV0byogYXV0b21hdGlv
blNlc3Npb24gPSBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5hdXRvbWF0aW9uU2Vzc2lvbigpKQog
ICAgICAgICAgICAgYXV0b21hdGlvblNlc3Npb24tPndpbGxTaG93SmF2YVNjcmlwdERpYWxvZygq
dGhpcyk7CiAgICAgfQotICAgIG1fdWlDbGllbnQtPnJ1bkphdmFTY3JpcHRBbGVydCh0aGlzLCBt
ZXNzYWdlLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW4sIFdURk1vdmUocmVwbHkpKTsKKyAgICBtX3Vp
Q2xpZW50LT5ydW5KYXZhU2NyaXB0QWxlcnQoKnRoaXMsIG1lc3NhZ2UsIGZyYW1lLCBXVEZNb3Zl
KHNlY3VyaXR5T3JpZ2luKSwgV1RGTW92ZShyZXBseSkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6cnVuSmF2YVNjcmlwdENvbmZpcm0oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdENvbmZpcm06OkRlbGF5ZWRSZXBs
eSYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRDb25maXJtKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2Ny
aXB0Q29uZmlybTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgV2ViRnJhbWVQcm94eSog
ZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0so
bV9wcm9jZXNzLCBmcmFtZSk7CkBAIC01MzI5LDEwICs1MzMyLDEwIEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpydW5KYXZhU2NyaXB0Q29uZmlybShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3Qg
U2VjdXJpdHlPCiAgICAgICAgICAgICBhdXRvbWF0aW9uU2Vzc2lvbi0+d2lsbFNob3dKYXZhU2Ny
aXB0RGlhbG9nKCp0aGlzKTsKICAgICB9CiAKLSAgICBtX3VpQ2xpZW50LT5ydW5KYXZhU2NyaXB0
Q29uZmlybSh0aGlzLCBtZXNzYWdlLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW4sIFdURk1vdmUocmVw
bHkpKTsKKyAgICBtX3VpQ2xpZW50LT5ydW5KYXZhU2NyaXB0Q29uZmlybSgqdGhpcywgbWVzc2Fn
ZSwgZnJhbWUsIFdURk1vdmUoc2VjdXJpdHlPcmlnaW4pLCBXVEZNb3ZlKHJlcGx5KSk7CiB9CiAK
LXZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0UHJvbXB0KEZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlLCBNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0UHJvbXB0OjpEZWxheWVkUmVwbHkmJiByZXBseSkKK3Zv
aWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0UHJvbXB0KEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6UnVuSmF2YVNjcmlwdFByb21wdDo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgV2Vi
RnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1F
U1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBmcmFtZSk7CkBAIC01MzQ4LDcgKzUzNTEsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdFByb21wdChGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgY29uc3QgU2VjdXJpdHlPcgogICAgICAgICAgICAgYXV0b21hdGlvblNlc3Npb24tPndpbGxT
aG93SmF2YVNjcmlwdERpYWxvZygqdGhpcyk7CiAgICAgfQogCi0gICAgbV91aUNsaWVudC0+cnVu
SmF2YVNjcmlwdFByb21wdCh0aGlzLCBtZXNzYWdlLCBkZWZhdWx0VmFsdWUsIGZyYW1lLCBzZWN1
cml0eU9yaWdpbiwgV1RGTW92ZShyZXBseSkpOworICAgIG1fdWlDbGllbnQtPnJ1bkphdmFTY3Jp
cHRQcm9tcHQoKnRoaXMsIG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSwgZnJhbWUsIFdURk1vdmUoc2Vj
dXJpdHlPcmlnaW4pLCBXVEZNb3ZlKHJlcGx5KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRTdGF0dXNUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKQEAgLTU0OTEsNyArNTQ5NCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojpyb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBJbnRS
ZWN0JiB2aWV3UmVjdCwgQ29tcGxlCiAgICAgY29tcGxldGlvbkhhbmRsZXIocGFnZUNsaWVudCgp
LnJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKHZpZXdSZWN0KSk7CiB9CiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsOjpEZWxheWVkUmVwbHkmJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFNlY3VyaXR5
T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDo6RGVsYXllZFJl
cGx5JiYgcmVwbHkpCiB7CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndl
YkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBmcmFtZSk7CkBA
IC01NTA4LDcgKzU1MTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTZQogCiAgICAgLy8gU2lu
Y2UgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgY2FuIHNwaW4gYSBuZXN0ZWQgcnVuIGxv
b3Agd2UgbmVlZCB0byB0dXJuIG9mZiB0aGUgcmVzcG9uc2l2ZW5lc3MgdGltZXIuCiAgICAgbV9w
cm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RvcCgpOwotICAgIG1fdWlDbGllbnQtPnJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCh0aGlzLCBtZXNzYWdlLCBmcmFtZSwgc2VjdXJpdHlP
cmlnaW4sIFdURk1vdmUocmVwbHkpKTsKKyAgICBtX3VpQ2xpZW50LT5ydW5CZWZvcmVVbmxvYWRD
b25maXJtUGFuZWwoKnRoaXMsIG1lc3NhZ2UsIGZyYW1lLCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2lu
KSwgV1RGTW92ZShyZXBseSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlVmll
d3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFZpZXdwb3J0QXR0cmlidXRlcyYgYXR0cikKQEAgLTU1MzEs
NyArNTUzNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwYWdlRGlkU2Nyb2xsKCkKICNlbmRpZgog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuT3BlblBhbmVsKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIGNvbnN0
IEZpbGVDaG9vc2VyU2V0dGluZ3MmIHNldHRpbmdzKQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bk9w
ZW5QYW5lbChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJh
bWVTZWN1cml0eU9yaWdpbiwgY29uc3QgRmlsZUNob29zZXJTZXR0aW5ncyYgc2V0dGluZ3MpCiB7
CiAgICAgaWYgKG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIpIHsKICAgICAgICAgbV9vcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0ZSgpOwpAQCAtNTU1NSw3ICs1NTU4LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJ1bk9wZW5QYW5lbChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXQKICAgICAvLyBTaW5jZSBydW5PcGVuUGFuZWwoKSBjYW4gc3Bp
biBhIG5lc3RlZCBydW4gbG9vcCB3ZSBuZWVkIHRvIHR1cm4gb2ZmIHRoZSByZXNwb25zaXZlbmVz
cyB0aW1lci4KICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdG9wKCk7CiAK
LSAgICBpZiAoIW1fdWlDbGllbnQtPnJ1bk9wZW5QYW5lbCh0aGlzLCBmcmFtZSwgZnJhbWVTZWN1
cml0eU9yaWdpbiwgcGFyYW1ldGVycy5wdHIoKSwgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5n
ZXQoKSkpIHsKKyAgICBpZiAoIW1fdWlDbGllbnQtPnJ1bk9wZW5QYW5lbCgqdGhpcywgZnJhbWUs
IFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIHBhcmFtZXRlcnMucHRyKCksIG1fb3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIuZ2V0KCkpKSB7CiAgICAgICAgIGlmICghcGFnZUNsaWVudCgpLmhh
bmRsZVJ1bk9wZW5QYW5lbCh0aGlzLCBmcmFtZSwgcGFyYW1ldGVycy5wdHIoKSwgbV9vcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lci5nZXQoKSkpCiAgICAgICAgICAgICBkaWRDYW5jZWxGb3JPcGVuUGFu
ZWwoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGM2
YzM2ZjM1NDhmMzg1NzE4ZmM4NGFiYzI0MWZlZTA5N2UyM2JiYjkuLjAwNjAyOWM5MjZhNjlhNGEz
NzE3YzFjNGI0Y2U2ZThjN2QxMDBmMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCkBAIC0xNTQyLDcgKzE1NDIsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBMb2dpYyBzaGFy
ZWQgYmV0d2VlbiB0aGUgV2ViUGFnZVByb3h5IGFuZCB0aGUgUHJvdmlzaW9uYWxQYWdlUHJveHku
CiAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBVUkwmJiwgVVJMJiYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJik7Ci0g
ICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYsIFdlYkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJik7Cisg
ICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNv
bnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
LCBXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFy
ZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBVc2Vy
RGF0YSYpOwogICAgIHZvaWQgZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJp
bmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAg
IHZvaWQgZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0
aW9uVVJMU3RyaW5nLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwpAQCAtMTU1MSw3ICsxNTUx
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFz
eW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYm
IGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwKICAg
ICAgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFt
ZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5n
UGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsCiAgICAgICAgIElQQzo6Rm9ybURhdGFSZWZlcmVu
Y2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7Ci0gICAgdm9pZCBk
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBv
bGljeUNoZWNrSWRlbnRpZmllciwKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hh
cmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwKICAgICAgICAg
dWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNv
bnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0
IFVzZXJEYXRhJik7CiAgICAgdm9pZCBzdGFydFVSTFNjaGVtZVRhc2tTaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFVSTFNjaGVtZVRhc2tQYXJh
bWV0ZXJzJiYpOwogICAgIHZvaWQgbG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQVBJOjpOYXZpZ2F0aW9u
JiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29u
c3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCog
dXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8
V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCwgV2ViQ29yZTo6U2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3k6OlNob3VsZE5vdEFsbG93KTsKQEAgLTE2NzIsNyArMTY3Miw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIHVybCwgZG91YmxlIGRlbGF5LCBXZWJDb3JlOjpMb2NrQmFj
a0ZvcndhcmRMaXN0KTsKICAgICB2b2lkIGRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZENoYW5nZVByb3Zpc2lvbmFs
VVJMRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIFVSTCYmKTsKLSAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYg
ZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcm
IHByb3Zpc2lvbmFsVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6
V2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZEZhaWxQ
cm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYsIFdlYkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRh
Jik7CiAgICAgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wg
ZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNv
bnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVu
dCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3Vy
ZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExv
YWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRh
dGEmKTsKQEAgLTE3MDcsOSArMTcwNyw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGJvb2wg
aXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xp
Y3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlv
bkRhdGEmJiwKICAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jRGVsYXllZFJl
cGx5JiYpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgV2Vi
Q29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAorICAg
IHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNr
SWRlbnRpZmllciwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKICAgICAgICAgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5l
cklELCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2Uo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNr
SWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELAogICAgICAgICBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9v
bCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2
NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCB1bmFibGVUb0ltcGxl
bWVudFBvbGljeShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgYmVnaW5TYWZlQnJvd3NpbmdD
aGVjayhjb25zdCBVUkwmLCBib29sLCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkmKTsKQEAg
LTE3MjcsMTEgKzE3MjcsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFVwZGF0ZUhpc3RvcnlU
aXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyKTsKIAogICAgIC8vIFVJIGNsaWVudAotICAgIHZvaWQgY3JlYXRlTmV3UGFn
ZShjb25zdCBGcmFtZUluZm9EYXRhJiwgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4g
b3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpX
aW5kb3dGZWF0dXJlcyYmLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpDcmVhdGVOZXdQYWdlRGVsYXllZFJlcGx5JiYpOworICAgIHZvaWQgY3JlYXRlTmV3
UGFnZShGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9y
aWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6V2lu
ZG93RmVhdHVyZXMmJiwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6Q3JlYXRlTmV3UGFnZURlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHNob3dQYWdlKCk7
Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmLCBNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0QWxlcnREZWxheWVkUmVwbHkmJik7Ci0gICAg
dm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYsIE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRDb25maXJtRGVsYXllZFJlcGx5JiYpOwotICAgIHZv
aWQgcnVuSmF2YVNjcmlwdFByb21wdChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYs
IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRQcm9tcHREZWxheWVkUmVwbHkm
Jik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgY29uc3QgU3RyaW5nJiwgTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdEFsZXJ0RGVsYXllZFJlcGx5JiYpOworICAgIHZv
aWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgY29uc3QgU3RyaW5nJiwgTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6UnVuSmF2YVNjcmlwdENvbmZpcm1EZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCBydW5K
YXZhU2NyaXB0UHJvbXB0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRQcm9tcHREZWxheWVkUmVwbHkmJik7CiAgICAgdm9p
ZCBzZXRTdGF0dXNUZXh0KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgbW91c2VEaWRNb3ZlT3Zl
ckVsZW1lbnQoV2ViSGl0VGVzdFJlc3VsdERhdGEmJiwgdWludDMyX3QgbW9kaWZpZXJzLCBVc2Vy
RGF0YSYmKTsKIApAQCAtMTc1NCwxMCArMTc1NCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcm9v
dFZpZXdUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB2aWV3UmVjdCwgTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6Um9vdFZpZXdUb1NjcmVlbkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lk
IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBz
Y3JlZW5Qb2ludCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpJbnRQb2ludCk+JiYp
OwogICAgIHZvaWQgcm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgdmlld1JlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6SW50UmVj
dCk+JiYpOwotICAgIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZvcmVVbmxvYWRD
b25maXJtUGFuZWxEZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWwoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmJiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpS
dW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBkaWRD
aGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVz
Jik7CiAgICAgdm9pZCBwYWdlRGlkU2Nyb2xsKCk7Ci0gICAgdm9pZCBydW5PcGVuUGFuZWwoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
LCBjb25zdCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzJik7CisgICAgdm9pZCBydW5PcGVu
UGFuZWwoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmJiwgY29uc3QgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyYpOwogICAgIHZvaWQgc2hv
d1NoYXJlU2hlZXQoY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYsIFNoYXJl
U2hlZXRDYWxsYmFja0lEKTsKICAgICB2b2lkIHByaW50RnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZXhjZWVkZWRE
YXRhYmFzZVF1b3RhKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmln
aW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBk
aXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2lu
VXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVz
YWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGFEZWxheWVk
UmVwbHkmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2ViRGV2aWNlT3JpZW50YXRpb25BbmRN
b3Rpb25BY2Nlc3NDb250cm9sbGVyLmNwcAppbmRleCBmODVkZDU3NjcwZmRlOWQzMzkxZTFiZjZk
MTdkZTAyYTU0MWI0NDkzLi5jY2NhODMzYTk2OWNkNTg4ZmI5MmRhOWM0NTU3Mzg2NmZlZjM4MjI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJEZXZp
Y2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9u
QWNjZXNzQ29udHJvbGxlci5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgdm9pZCBXZWJEZXZpY2VPcmll
bnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXI6OnNob3VsZEFsbG93QWNjZXNzKFdlYlBh
Z2VQcm8KICAgICBpZiAocGVuZGluZ1JlcXVlc3RzLnNpemUoKSA+IDEpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHBhZ2UudWlDbGllbnQoKS5zaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5k
TW90aW9uQWNjZXNzKHBhZ2UsIGZyYW1lLCBvcmlnaW5EYXRhLCBbdGhpcywgd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cih0aGlzKSwgb3JpZ2luRGF0YV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAg
ICBwYWdlLnVpQ2xpZW50KCkuc2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFj
Y2VzcyhwYWdlLCBmcmFtZSwgV1RGTW92ZShvcmlnaW5EYXRhKSwgW3RoaXMsIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIodGhpcyksIG9yaWdpbkRhdGFdKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CiAg
ICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1fZGV2
aWNlT3JpZW50YXRpb25QZXJtaXNzaW9uRGVjaXNpb25zLnNldChvcmlnaW5EYXRhLCBncmFudGVk
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9u
UHJvdmlkZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlv
blByb3ZpZGVySU9TLm1tCmluZGV4IDcwYmE2NzhhNzk1M2I2MmQxZmY1YjU1YjI3MTgxYWY0YTBi
NWYwMGEuLmUzNzFhNjM0OGY5Zjg5NTlhZTc4ZWYyNGZkMGNiY2Q3MGQ5Y2M1MTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRl
cklPUy5tbQpAQCAtMTg2LDcgKzE4Niw3IEBAIHN0YXRpYyB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1
cmFjeShXS0dlb2xvY2F0aW9uTWFuYWdlclJlZiBnZW9sb2NhdGlvbk1hbmFnZXIsIGJvCiAgICAg
ICAgIGlkPFdLVUlEZWxlZ2F0ZVByaXZhdGU+IHVpRGVsZWdhdGUgPSBzdGF0aWNfY2FzdDxpZCA8
V0tVSURlbGVnYXRlUHJpdmF0ZT4+KFtyZXF1ZXN0LnZpZXcgVUlEZWxlZ2F0ZV0pOwogICAgICAg
ICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpy
ZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uRm9yVVJMOmZyYW1lOmRlY2lzaW9uSGFuZGxl
cjopXSkgewogICAgICAgICAgICAgVVJMIHJlcXVlc3RGcmFtZVVSTChVUkwoKSwgcmVxdWVzdC5m
cmFtZS0+dXJsKCkpOwotICAgICAgICAgICAgUmV0YWluUHRyPFdLRnJhbWVJbmZvPiBmcmFtZUlu
Zm8gPSB3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKnJlcXVlc3QuZnJhbWUuZ2V0KCks
ICpyZXF1ZXN0Lm9yaWdpbi5nZXQoKSkpOworICAgICAgICAgICAgUmV0YWluUHRyPFdLRnJhbWVJ
bmZvPiBmcmFtZUluZm8gPSB3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKnJlcXVlc3Qu
ZnJhbWUuZ2V0KCksIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB7IHJlcXVlc3Qub3JpZ2lu
LT5kYXRhKCkgfSkpOwogICAgICAgICAgICAgYXV0byBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0
aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUodWlEZWxlZ2F0ZSwgQHNlbGVjdG9yKF93ZWJW
aWV3OnJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6ZnJhbWU6ZGVjaXNpb25I
YW5kbGVyOikpOwogICAgICAgICAgICAgV0tXZWJWaWV3ICp2aWV3RnJvbVJlcXVlc3QgPSByZXF1
ZXN0LnZpZXcuZ2V0KCk7CiAgICAgICAgICAgICBbdWlEZWxlZ2F0ZSBfd2ViVmlldzp2aWV3RnJv
bVJlcXVlc3QgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkZvclVSTDpyZXF1ZXN0RnJh
bWVVUkwgZnJhbWU6ZnJhbWVJbmZvLmdldCgpIGRlY2lzaW9uSGFuZGxlcjptYWtlQmxvY2tQdHIo
W3JlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0o
Qk9PTCBhdXRob3JpemVkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9z
b2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCmluZGV4
IDZiZjgxNjIwMGExNzk4ZDVmNGZmMTk3NDliZTgzZmQzMzM3MTUwMGQuLjg2MWYwYjk5ZTcwZWZi
MmU4YzdjMDZkY2YyMDMwNTY3ZjYyNWM5YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRs
ZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIH5TY3JpcHRNZXNzYWdlQ2xp
ZW50KCkgeyB9CiAKLSAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwg
Y29uc3QgRnJhbWVJbmZvRGF0YSYsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2Vy
aWFsaXplZFNjcmlwdFZhbHVlKSBvdmVycmlkZQorICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoV2Vi
UGFnZVByb3h5JiBwYWdlLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKSBvdmVycmlkZQogICAgIHsKICAgICAgICAg
YXV0byB0b2tlbnMgPSBzZXJpYWxpemVkU2NyaXB0VmFsdWUudG9TdHJpbmcoKS5zcGxpdCgiOiIp
OwogICAgICAgICBpZiAodG9rZW5zLnNpemUoKSAhPSAzKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>