<?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>194160</bug_id>
          
          <creation_ts>2019-02-01 08:58:49 -0800</creation_ts>
          <short_desc>Don&apos;t use base layer() as the scroll layer in scrolling tree.</short_desc>
          <delta_ts>2019-02-01 12:11:28 -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>Scrolling</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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1501125</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-02-01 08:58:49 -0800</bug_when>
    <thetext>Maintain scrollContainerLayer() and scrolledContestsLayer() separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501127</commentid>
    <comment_count>1</comment_count>
      <attachid>360864</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-02-01 09:04:48 -0800</bug_when>
    <thetext>Created attachment 360864
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501144</commentid>
    <comment_count>2</comment_count>
      <attachid>360869</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-02-01 09:48:15 -0800</bug_when>
    <thetext>Created attachment 360869
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501169</commentid>
    <comment_count>3</comment_count>
      <attachid>360869</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-02-01 11:01:34 -0800</bug_when>
    <thetext>Comment on attachment 360869
patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Maintain scrollContainerLayer() and scrolledContestsLayer() separately in ScrollingTreeScrollingNode.

scrolledContestsLayer.

Contests on the mind?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501173</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-02-01 11:05:35 -0800</bug_when>
    <thetext>&gt; scrolledContestsLayer.
&gt; 
&gt; Contests on the mind?

The patch also used to feature a &quot;contentainer layer&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501177</commentid>
    <comment_count>5</comment_count>
      <attachid>360869</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-02-01 11:13:01 -0800</bug_when>
    <thetext>Comment on attachment 360869
patch

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

&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h:143
&gt; +#if PLATFORM(COCOA)
&gt; +    RetainPtr&lt;CALayer&gt; m_scrollContainerLayer;
&gt; +    RetainPtr&lt;CALayer&gt; m_scrolledContentsLayer;
&gt; +#endif

This is breaking the platform-neutrality of this class. Maybe that&apos;s OK? Or maybe we should have some kind of platform mixin for the layer management?

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:556
&gt; +            nodeLayers = { layer.backing()-&gt;graphicsLayer(), backing-&gt;scrollingLayer(), backing-&gt;scrollingContentsLayer() };

Do you want to rename backing-&gt;scrollingLayer() in this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501181</commentid>
    <comment_count>6</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-02-01 11:18:27 -0800</bug_when>
    <thetext>&gt; This is breaking the platform-neutrality of this class. Maybe that&apos;s OK? Or
&gt; maybe we should have some kind of platform mixin for the layer management?

It seemed ok to me, avoids duplication and makes the structure clearer. If we want to pile in more then maybe some architectural solution would be nicer.

&gt; Do you want to rename backing-&gt;scrollingLayer() in this patch?

Next patch, this is already getting unwieldy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501185</commentid>
    <comment_count>7</comment_count>
      <attachid>360876</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-02-01 11:25:41 -0800</bug_when>
    <thetext>Created attachment 360876
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501187</commentid>
    <comment_count>8</comment_count>
      <attachid>360876</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-01 11:29:30 -0800</bug_when>
    <thetext>Comment on attachment 360876
patch

Rejecting attachment 360876 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 360876, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/WebKit/ChangeLog contains OOPS!.

Full output: https://webkit-queues.webkit.org/results/10996548</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501190</commentid>
    <comment_count>9</comment_count>
      <attachid>360878</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-02-01 11:32:57 -0800</bug_when>
    <thetext>Created attachment 360878
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501208</commentid>
    <comment_count>10</comment_count>
      <attachid>360878</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-01 12:10:29 -0800</bug_when>
    <thetext>Comment on attachment 360878
patch

Clearing flags on attachment: 360878

Committed r240861: &lt;https://trac.webkit.org/changeset/240861&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501209</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-01 12:10:31 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501211</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-01 12:11:28 -0800</bug_when>
    <thetext>&lt;rdar://problem/47745047&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360864</attachid>
            <date>2019-02-01 09:04:48 -0800</date>
            <delta_ts>2019-02-01 09:48:15 -0800</delta_ts>
            <desc>patch</desc>
            <filename>scrolling-tree-scrolling-layer.patch</filename>
            <type>text/plain</type>
            <size>49290</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDg1NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDE5LTAyLTAxICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBEb24ndCB1c2UgYmFzZSBsYXll
cigpIGFzIHRoZSBzY3JvbGwgbGF5ZXIgaW4gc2Nyb2xsaW5nIHRyZWUuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQxNjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWludGFpbiBzY3JvbGxDb250YWlu
ZXJMYXllcigpIGFuZCBzY3JvbGxlZENvbnRlc3RzTGF5ZXIoKSBzZXBhcmF0ZWx5IGluIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlLgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0Tm9kZUxheWVycyk6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0Tm9kZUxheWVycyk6CisKKyAgICAgICAgVHVybiB0
aGUgbG9uZyBsYXllciBwYXJhbWV0ZXIgbGlzdCBpbnRvIGEgc3RydWN0LgorCisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1N0YXRlTm9kZTo6U2Nyb2xsaW5nU3RhdGVOb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6c2V0QWxsUHJvcGVydGllc0NoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpzZXRMYXllcik6CisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0QWxsUHJv
cGVydGllc0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlOjpzZXRTY3JvbGxDb250YWluZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OmR1bXBQcm9wZXJ0aWVzIGNvbnN0KToKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2Nyb2xsQ29udGFpbmVyTGF5
ZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6Y29tbWl0VHJlZVN0YXRlKToKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6Y29tbWl0U3RhdGVCZWZv
cmVDaGlsZHJlbik6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
OjpzY3JvbGxDb250YWluZXJMYXllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZTo6c2Nyb2xsZWRDb250ZW50c0xheWVyIGNvbnN0KToKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlP
Uy5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZUlPUzo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjpzY3JvbGxQb3NpdGlvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
SU9TOjpzZXRTY3JvbGxMYXllclBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1M6OnNjcm9sbExheWVyIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6OmNvbW1pdFN0YXRlQmVm
b3JlQ2hpbGRyZW4pOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlTWFjLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Nj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxk
cmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVN
YWM6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpzY3JvbGxQb3NpdGlvbiBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpzZXRTY3Jv
bGxMYXllclBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVNYWM6OmV4cG9zZWRVbmZpbGxlZEFyZWEgY29uc3QpOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLmg6
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlTWFjOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWM6OnNjcm9sbFBvc2l0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVNYWM6OnNldFNjcm9sbExheWVyUG9zaXRpb24pOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGlkQ2hhbmdlUGxhdGZvcm1MYXllckZvckxh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Ny
b2xsaW5nTm9kZUZvclZpZXdwb3J0Q29uc3RyYWluZWRSb2xlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xsaW5nTm9kZUZvclNjcm9sbGluZ1Jv
bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVTY3Jv
bGxpbmdOb2RlRm9yRnJhbWVIb3N0aW5nUm9sZSk6CisKIDIwMTktMDItMDEgIFNpbW9uIEZyYXNl
ciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI0MDY5
OCk6IGZhc3Qvc2Nyb2xsaW5nL3N0aWNreS10by1maXhlZC5odG1sIGNhbiBjYXVzZSBhIGNyYXNo
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9B
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAkocmV2aXNpb24gMjQwODU1KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OmZyYW1lVmllCiAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RM
YXllckRpZENoYW5nZShmcmFtZVZpZXcpOwogCiAgICAgYXV0byogbm9kZSA9IGRvd25jYXN0PFNj
cm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlPihtX3Njcm9sbGluZ1N0YXRlVHJlZS0+c3Rh
dGVOb2RlRm9ySUQoZnJhbWVWaWV3LnNjcm9sbGluZ05vZGVJRCgpKSk7Ci0gICAgbm9kZS0+c2V0
TGF5ZXIoc2Nyb2xsTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSk7CisgICAgbm9kZS0+c2V0
U2Nyb2xsZWRDb250ZW50c0xheWVyKHNjcm9sbExheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldykp
OwogICAgIG5vZGUtPnNldFJvb3RDb250ZW50c0xheWVyKHJvb3RDb250ZW50c0xheWVyRm9yRnJh
bWVWaWV3KGZyYW1lVmlldykpOwogICAgIG5vZGUtPnNldENvdW50ZXJTY3JvbGxpbmdMYXllcihj
b3VudGVyU2Nyb2xsaW5nTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSk7CiAgICAgbm9kZS0+
c2V0SW5zZXRDbGlwTGF5ZXIoaW5zZXRDbGlwTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSk7
CkBAIC01NzMsMjUgKzU3MywyNSBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmVu
c3VyZVJvCiAgICAgaW5zZXJ0Tm9kZShTY3JvbGxpbmdOb2RlVHlwZTo6TWFpbkZyYW1lLCBmcmFt
ZVZpZXcuc2Nyb2xsaW5nTm9kZUlEKCksIDAsIDApOwogfQogCi12b2lkIEFzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OnNldE5vZGVMYXllcnMoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwgR3JhcGhp
Y3NMYXllciogbGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbGVkQ29udGVudHNMYXllciwgR3Jh
cGhpY3NMYXllciogY291bnRlclNjcm9sbGluZ0xheWVyLCBHcmFwaGljc0xheWVyKiBpbnNldENs
aXBMYXllciwgR3JhcGhpY3NMYXllciogcm9vdENvbnRlbnRzTGF5ZXIpCit2b2lkIEFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OnNldE5vZGVMYXllcnMoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwg
Y29uc3QgTm9kZUxheWVycyYgbm9kZUxheWVycykKIHsKICAgICBhdXRvKiBub2RlID0gbV9zY3Jv
bGxpbmdTdGF0ZVRyZWUtPnN0YXRlTm9kZUZvcklEKG5vZGVJRCk7CiAgICAgQVNTRVJUKG5vZGUp
OwogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbm9kZS0+c2V0TGF5ZXIo
bGF5ZXIpOworICAgIG5vZGUtPnNldExheWVyKG5vZGVMYXllcnMubGF5ZXIpOwogCiAgICAgaWYg
KGlzPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT4obm9kZSkpIHsKICAgICAgICAgYXV0byYg
c2Nyb2xsaW5nTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT4oKm5v
ZGUpOwotICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5IHVudXNlZC4KLSAgICAgICAgc2Nyb2xs
aW5nTm9kZS5zZXRTY3JvbGxlZENvbnRlbnRzTGF5ZXIoc2Nyb2xsZWRDb250ZW50c0xheWVyKTsK
KyAgICAgICAgc2Nyb2xsaW5nTm9kZS5zZXRTY3JvbGxDb250YWluZXJMYXllcihub2RlTGF5ZXJz
LnNjcm9sbENvbnRhaW5lckxheWVyKTsKKyAgICAgICAgc2Nyb2xsaW5nTm9kZS5zZXRTY3JvbGxl
ZENvbnRlbnRzTGF5ZXIobm9kZUxheWVycy5zY3JvbGxlZENvbnRlbnRzTGF5ZXIpOwogCiAgICAg
ICAgIGlmIChpczxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4obm9kZSkpIHsKICAg
ICAgICAgICAgIGF1dG8mIGZyYW1lU2Nyb2xsaW5nTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlPigqbm9kZSk7Ci0gICAgICAgICAgICBmcmFtZVNjcm9sbGlu
Z05vZGUuc2V0SW5zZXRDbGlwTGF5ZXIoaW5zZXRDbGlwTGF5ZXIpOwotICAgICAgICAgICAgZnJh
bWVTY3JvbGxpbmdOb2RlLnNldENvdW50ZXJTY3JvbGxpbmdMYXllcihjb3VudGVyU2Nyb2xsaW5n
TGF5ZXIpOwotICAgICAgICAgICAgZnJhbWVTY3JvbGxpbmdOb2RlLnNldFJvb3RDb250ZW50c0xh
eWVyKHJvb3RDb250ZW50c0xheWVyKTsKKyAgICAgICAgICAgIGZyYW1lU2Nyb2xsaW5nTm9kZS5z
ZXRJbnNldENsaXBMYXllcihub2RlTGF5ZXJzLmluc2V0Q2xpcExheWVyKTsKKyAgICAgICAgICAg
IGZyYW1lU2Nyb2xsaW5nTm9kZS5zZXRDb3VudGVyU2Nyb2xsaW5nTGF5ZXIobm9kZUxheWVycy5j
b3VudGVyU2Nyb2xsaW5nTGF5ZXIpOworICAgICAgICAgICAgZnJhbWVTY3JvbGxpbmdOb2RlLnNl
dFJvb3RDb250ZW50c0xheWVyKG5vZGVMYXllcnMucm9vdENvbnRlbnRzTGF5ZXIpOwogICAgICAg
ICB9CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAkocmV2aXNpb24gMjQwODU1KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4LDcgQEAgcHJpdmF0ZToKICAgICBXRUJD
T1JFX0VYUE9SVCBTY3JvbGxpbmdOb2RlSUQgcGFyZW50T2ZOb2RlKFNjcm9sbGluZ05vZGVJRCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFNjcm9sbGluZ05vZGVJ
RD4gY2hpbGRyZW5PZk5vZGUoU2Nyb2xsaW5nTm9kZUlEKSBjb25zdCBvdmVycmlkZTsKIAotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Tm9kZUxheWVycyhTY3JvbGxpbmdOb2RlSUQsIEdyYXBo
aWNzTGF5ZXIqIC8qbGF5ZXIqLywgR3JhcGhpY3NMYXllciogLypzY3JvbGxlZENvbnRlbnRzTGF5
ZXIqLyA9IG51bGxwdHIsIEdyYXBoaWNzTGF5ZXIqIC8qY291bnRlclNjcm9sbGluZ0xheWVyKi8g
PSBudWxscHRyLCBHcmFwaGljc0xheWVyKiAvKmluc2V0Q2xpcExheWVyKi8gPSBudWxscHRyLCBH
cmFwaGljc0xheWVyKiAvKnJvb3RDb250ZW50c0xheWVyKi8gPSBudWxscHRyKSBvdmVycmlkZTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE5vZGVMYXllcnMoU2Nyb2xsaW5nTm9kZUlELCBj
b25zdCBOb2RlTGF5ZXJzJikgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRT
Y3JvbGxpbmdOb2RlR2VvbWV0cnkoU2Nyb2xsaW5nTm9kZUlELCBjb25zdCBTY3JvbGxpbmdHZW9t
ZXRyeSYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Vmlld3BvcnRDb25z
dHJhaW50ZWROb2RlR2VvbWV0cnkoU2Nyb2xsaW5nTm9kZUlELCBjb25zdCBWaWV3cG9ydENvbnN0
cmFpbnRzJikgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAkocmV2aXNpb24gMjQwODU1KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtMTI5LDcgKzEyOSwxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTY3Jv
bGxpbmdOb2RlSUQgcGFyZW50T2ZOb2RlKFNjcm9sbGluZ05vZGVJRCkgY29uc3QgeyByZXR1cm4g
MDsgfQogICAgIHZpcnR1YWwgVmVjdG9yPFNjcm9sbGluZ05vZGVJRD4gY2hpbGRyZW5PZk5vZGUo
U2Nyb2xsaW5nTm9kZUlEKSBjb25zdCB7IHJldHVybiB7IH07IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBzZXROb2RlTGF5ZXJzKFNjcm9sbGluZ05vZGVJRCwgR3JhcGhpY3NMYXllciogLypsYXllciov
LCBHcmFwaGljc0xheWVyKiAvKnNjcm9sbGVkQ29udGVudHNMYXllciovID0gbnVsbHB0ciwgR3Jh
cGhpY3NMYXllciogLypjb3VudGVyU2Nyb2xsaW5nTGF5ZXIqLyA9IG51bGxwdHIsIEdyYXBoaWNz
TGF5ZXIqIC8qaW5zZXRDbGlwTGF5ZXIqLyA9IG51bGxwdHIsIEdyYXBoaWNzTGF5ZXIqIC8qcm9v
dENvbnRlbnRzTGF5ZXIqLyA9IG51bGxwdHIpIHsgfQorICAgIHN0cnVjdCBOb2RlTGF5ZXJzIHsK
KyAgICAgICAgR3JhcGhpY3NMYXllciogbGF5ZXIgeyBudWxscHRyIH07CisgICAgICAgIEdyYXBo
aWNzTGF5ZXIqIHNjcm9sbENvbnRhaW5lckxheWVyIHsgbnVsbHB0ciB9OworICAgICAgICBHcmFw
aGljc0xheWVyKiBzY3JvbGxlZENvbnRlbnRzTGF5ZXIgeyBudWxscHRyIH07CisgICAgICAgIEdy
YXBoaWNzTGF5ZXIqIGNvdW50ZXJTY3JvbGxpbmdMYXllciB7IG51bGxwdHIgfTsKKyAgICAgICAg
R3JhcGhpY3NMYXllciogaW5zZXRDbGlwTGF5ZXIgeyBudWxscHRyIH07CisgICAgICAgIEdyYXBo
aWNzTGF5ZXIqIHJvb3RDb250ZW50c0xheWVyIHsgbnVsbHB0ciB9OworICAgIH07CisgICAgdmly
dHVhbCB2b2lkIHNldE5vZGVMYXllcnMoU2Nyb2xsaW5nTm9kZUlELCBjb25zdCBOb2RlTGF5ZXJz
JikgeyB9CiAKICAgICBzdHJ1Y3QgU2Nyb2xsaW5nR2VvbWV0cnkgewogICAgICAgICBMYXlvdXRS
ZWN0IHBhcmVudFJlbGF0aXZlU2Nyb2xsYWJsZVJlY3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHAJKHJldmlzaW9u
IDI0MDg1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
Tm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgU2Nyb2xsaW5nU3RhdGVO
b2RlOjpTY3JvbGxpbmdTdGF0ZU5vZGUoYwogICAgICwgbV9jaGFuZ2VkUHJvcGVydGllcyhzdGF0
ZU5vZGUuY2hhbmdlZFByb3BlcnRpZXMoKSkKICAgICAsIG1fc2Nyb2xsaW5nU3RhdGVUcmVlKGFk
b3B0aXZlVHJlZSkKIHsKLSAgICBpZiAoaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbExheWVyKSkK
KyAgICBpZiAoaGFzQ2hhbmdlZFByb3BlcnR5KExheWVyKSkKICAgICAgICAgc2V0TGF5ZXIoc3Rh
dGVOb2RlLmxheWVyKCkudG9SZXByZXNlbnRhdGlvbihhZG9wdGl2ZVRyZWUucHJlZmVycmVkTGF5
ZXJSZXByZXNlbnRhdGlvbigpKSk7CiAgICAgc2Nyb2xsaW5nU3RhdGVUcmVlKCkuYWRkTm9kZSgq
dGhpcyk7CiB9CkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjpzZXRQ
cm9wZXJ0eUNoYW4KIAogdm9pZCBTY3JvbGxpbmdTdGF0ZU5vZGU6OnNldEFsbFByb3BlcnRpZXND
aGFuZ2VkKCkKIHsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoU2Nyb2xsTGF5ZXIpOworICAg
IHNldFByb3BlcnR5Q2hhbmdlZEJpdChMYXllcik7CiAgICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0
KENoaWxkTm9kZXMpOwogICAgIG1fc2Nyb2xsaW5nU3RhdGVUcmVlLnNldEhhc0NoYW5nZWRQcm9w
ZXJ0aWVzKCk7CiB9CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZU5vZGU6
OnNldExheWVyKGNvbnN0IAogICAgIAogICAgIG1fbGF5ZXIgPSBsYXllclJlcHJlc2VudGF0aW9u
OwogCi0gICAgc2V0UHJvcGVydHlDaGFuZ2VkKFNjcm9sbExheWVyKTsKKyAgICBzZXRQcm9wZXJ0
eUNoYW5nZWQoTGF5ZXIpOwogfQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlTm9kZTo6ZHVtcFByb3Bl
cnRpZXMoVGV4dFN0cmVhbSYgdHMsIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9yIGJl
aGF2aW9yKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nU3RhdGVOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmgJKHJldmlzaW9uIDI0MDg1NSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDksNyArMjA5LDcgQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6IHVzaW5nIGFuIE9wdGlv
blNldDw+IGZvciB0aGVzZSBhbmQgZGVyaXZlZCBjbGFzcyBiaXRzIHdvdWxkIHNpbXBsaWZ5IGNv
ZGUuCiAgICAgZW51bSB7Ci0gICAgICAgIFNjcm9sbExheWVyID0gMCwKKyAgICAgICAgTGF5ZXIg
PSAwLAogICAgICAgICBDaGlsZE5vZGVzLAogICAgICAgICBOdW1TdGF0ZU5vZGVCaXRzIC8vIFRo
aXMgbXVzdCByZW1haW4gYXQgdGhlIGxhc3QgcG9zaXRpb24uCiAgICAgfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmNwcAkocmV2aXNpb24gMjQwODU1KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTQsNiArNTQsOCBAQCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9s
bGluZ1N0CiAgICAgLCBtX3JlcXVlc3RlZFNjcm9sbFBvc2l0aW9uUmVwcmVzZW50c1Byb2dyYW1t
YXRpY1Njcm9sbChzdGF0ZU5vZGUucmVxdWVzdGVkU2Nyb2xsUG9zaXRpb25SZXByZXNlbnRzUHJv
Z3JhbW1hdGljU2Nyb2xsKCkpCiAgICAgLCBtX2V4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIo
c3RhdGVOb2RlLmV4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIoKSkKIHsKKyAgICBpZiAoaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbENvbnRhaW5lckxheWVyKSkKKyAgICAgICAgc2V0U2Nyb2xs
Q29udGFpbmVyTGF5ZXIoc3RhdGVOb2RlLnNjcm9sbENvbnRhaW5lckxheWVyKCkudG9SZXByZXNl
bnRhdGlvbihhZG9wdGl2ZVRyZWUucHJlZmVycmVkTGF5ZXJSZXByZXNlbnRhdGlvbigpKSk7CiAg
ICAgaWYgKGhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxlZENvbnRlbnRzTGF5ZXIpKQogICAgICAg
ICBzZXRTY3JvbGxlZENvbnRlbnRzTGF5ZXIoc3RhdGVOb2RlLnNjcm9sbGVkQ29udGVudHNMYXll
cigpLnRvUmVwcmVzZW50YXRpb24oYWRvcHRpdmVUcmVlLnByZWZlcnJlZExheWVyUmVwcmVzZW50
YXRpb24oKSkpOwogfQpAQCAtNzksNiArODEsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6c2V0QWxsCiAgICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KEN1cnJlbnRWZXJ0aWNh
bFNuYXBPZmZzZXRJbmRleCk7CiAjZW5kaWYKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoRXhw
ZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlcik7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KFNj
cm9sbENvbnRhaW5lckxheWVyKTsKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoU2Nyb2xsZWRD
b250ZW50c0xheWVyKTsKIAogICAgIFNjcm9sbGluZ1N0YXRlTm9kZTo6c2V0QWxsUHJvcGVydGll
c0NoYW5nZWQoKTsKQEAgLTIxOSw2ICsyMjIsMTUgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU6OnNldEV4cAogICAgIHNldFByb3BlcnR5Q2hhbmdlZChFeHBlY3RzV2hlZWxFdmVu
dFRlc3RUcmlnZ2VyKTsKIH0KIAordm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNl
dFNjcm9sbENvbnRhaW5lckxheWVyKGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24mIGxheWVyUmVw
cmVzZW50YXRpb24pCit7CisgICAgaWYgKGxheWVyUmVwcmVzZW50YXRpb24gPT0gbV9zY3JvbGxD
b250YWluZXJMYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zY3JvbGxDb250YWluZXJM
YXllciA9IGxheWVyUmVwcmVzZW50YXRpb247CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFNjcm9s
bENvbnRhaW5lckxheWVyKTsKK30KKwogdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6
OnNldFNjcm9sbGVkQ29udGVudHNMYXllcihjb25zdCBMYXllclJlcHJlc2VudGF0aW9uJiBsYXll
clJlcHJlc2VudGF0aW9uKQogewogICAgIGlmIChsYXllclJlcHJlc2VudGF0aW9uID09IG1fc2Ny
b2xsZWRDb250ZW50c0xheWVyKQpAQCAtMjkwLDggKzMwMiwxMiBAQCB2b2lkIFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZTo6ZHVtcFByCiAgICAgaWYgKG1fZXhwZWN0c1doZWVsRXZlbnRUZXN0
VHJpZ2dlcikKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJleHBlY3RzIHdoZWVsIGV2ZW50IHRl
c3QgdHJpZ2dlciIsIG1fZXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlcik7CiAKLSAgICBpZiAo
KGJlaGF2aW9yICYgU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3JJbmNsdWRlTGF5ZXJJ
RHMpICYmIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyLmxheWVySUQoKSkKLSAgICAgICAgdHMuZHVt
cFByb3BlcnR5KCJzY3JvbGxlZCBjb250ZW50cyBsYXllciIsIG1fc2Nyb2xsZWRDb250ZW50c0xh
eWVyLmxheWVySUQoKSk7CisgICAgaWYgKGJlaGF2aW9yICYgU2Nyb2xsaW5nU3RhdGVUcmVlQXNU
ZXh0QmVoYXZpb3JJbmNsdWRlTGF5ZXJJRHMpIHsKKyAgICAgICAgaWYgKG1fc2Nyb2xsQ29udGFp
bmVyTGF5ZXIubGF5ZXJJRCgpKQorICAgICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzY3JvbGwg
Y29udGFpbmVyIGxheWVyIiwgbV9zY3JvbGxDb250YWluZXJMYXllci5sYXllcklEKCkpOworICAg
ICAgICBpZiAobV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIubGF5ZXJJRCgpKQorICAgICAgICAgICAg
dHMuZHVtcFByb3BlcnR5KCJzY3JvbGxlZCBjb250ZW50cyBsYXllciIsIG1fc2Nyb2xsZWRDb250
ZW50c0xheWVyLmxheWVySUQoKSk7CisgICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaAkocmV2aXNpb24gMjQwODU1KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAgcHVibGljOgogICAgICAgICBDdXJyZW50VmVy
dGljYWxTbmFwT2Zmc2V0SW5kZXgsCiAjZW5kaWYKICAgICAgICAgRXhwZWN0c1doZWVsRXZlbnRU
ZXN0VHJpZ2dlciwKKyAgICAgICAgU2Nyb2xsQ29udGFpbmVyTGF5ZXIsCiAgICAgICAgIFNjcm9s
bGVkQ29udGVudHNMYXllciwKICAgICAgICAgTnVtU2Nyb2xsaW5nU3RhdGVOb2RlQml0cyAvLyBU
aGlzIG11c3QgcmVtYWluIGF0IHRoZSBsYXN0IHBvc2l0aW9uLgogICAgIH07CkBAIC0xMDgsNiAr
MTA5LDkgQEAgcHVibGljOgogICAgIGJvb2wgZXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlcigp
IGNvbnN0IHsgcmV0dXJuIG1fZXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlcjsgfQogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0RXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlcihib29sKTsK
IAorICAgIGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24mIHNjcm9sbENvbnRhaW5lckxheWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9zY3JvbGxDb250YWluZXJMYXllcjsgfQorICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0U2Nyb2xsQ29udGFpbmVyTGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlv
biYpOworCiAgICAgLy8gVGhpcyBpcyBhIGxheWVyIHdpdGggdGhlIGNvbnRlbnRzIHRoYXQgbW92
ZS4KICAgICBjb25zdCBMYXllclJlcHJlc2VudGF0aW9uJiBzY3JvbGxlZENvbnRlbnRzTGF5ZXIo
KSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGVkQ29udGVudHNMYXllcjsgfQogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0U2Nyb2xsZWRDb250ZW50c0xheWVyKGNvbnN0IExheWVyUmVwcmVzZW50
YXRpb24mKTsKQEAgLTEzNCw2ICsxMzgsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fY3Vy
cmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXggeyAwIH07CiAjZW5kaWYKICAgICBTY3JvbGxhYmxl
QXJlYVBhcmFtZXRlcnMgbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM7CisgICAgTGF5ZXJSZXBy
ZXNlbnRhdGlvbiBtX3Njcm9sbENvbnRhaW5lckxheWVyOwogICAgIExheWVyUmVwcmVzZW50YXRp
b24gbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXI7CiAgICAgYm9vbCBtX3JlcXVlc3RlZFNjcm9sbFBv
c2l0aW9uUmVwcmVzZW50c1Byb2dyYW1tYXRpY1Njcm9sbCB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X2V4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAJKHJldmlzaW9uIDI0
MDg1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsMTIgKzE1NCwxMiBAQCB2b2lkIFNjcm9sbGluZ1RyZWU6
OmNvbW1pdFRyZWVTdGF0ZShzdGQ6CiAgICAgaWYgKHJvb3ROb2RlCiAgICAgICAgICYmIChyb290
U3RhdGVOb2RlQ2hhbmdlZAogICAgICAgICAgICAgfHwgcm9vdE5vZGUtPmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6RXZlbnRUcmFja2luZ1JlZ2lv
bikKLSAgICAgICAgICAgIHx8IHJvb3ROb2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5n
U3RhdGVOb2RlOjpTY3JvbGxMYXllcikKKyAgICAgICAgICAgIHx8IHJvb3ROb2RlLT5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxlZENvbnRlbnRz
TGF5ZXIpCiAgICAgICAgICAgICB8fCByb290Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpWaXN1YWxWaWV3cG9ydEVuYWJsZWQpCiAgICAg
ICAgICAgICB8fCByb290Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJh
bWVTY3JvbGxpbmdOb2RlOjpBc3luY0ZyYW1lT3JPdmVyZmxvd1Njcm9sbGluZ0VuYWJsZWQpKSkg
ewogICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CiAKLSAgICAgICAgaWYgKHJvb3RT
dGF0ZU5vZGVDaGFuZ2VkIHx8IHJvb3ROb2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5n
U3RhdGVOb2RlOjpTY3JvbGxMYXllcikpCisgICAgICAgIGlmIChyb290U3RhdGVOb2RlQ2hhbmdl
ZCB8fCByb290Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKSkKICAgICAgICAgICAgIG1fbWFpbkZyYW1lU2Ny
b2xsUG9zaXRpb24gPSBGbG9hdFBvaW50KCk7CiAKICAgICAgICAgaWYgKHJvb3RTdGF0ZU5vZGVD
aGFuZ2VkIHx8IHJvb3ROb2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFt
ZVNjcm9sbGluZ05vZGU6OkV2ZW50VHJhY2tpbmdSZWdpb24pKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlLmNwcAkocmV2aXNpb24gMjQwODU1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
Niw2ICs5NiwxMiBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpjb21taXRTCiAK
ICAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZTo6RXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlcikpCiAgICAgICAgIG1fZXhwZWN0c1do
ZWVsRXZlbnRUZXN0VHJpZ2dlciA9IHN0YXRlLmV4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIo
KTsKKworICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlOjpTY3JvbGxDb250YWluZXJMYXllcikpCisgICAgICAgIG1fc2Nyb2xsQ29udGFp
bmVyTGF5ZXIgPSBzdGF0ZS5zY3JvbGxDb250YWluZXJMYXllcigpOworCisgICAgaWYgKHN0YXRl
Lmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGVk
Q29udGVudHNMYXllcikpCisgICAgICAgIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyID0gc3RhdGUu
c2Nyb2xsZWRDb250ZW50c0xheWVyKCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGU6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUm
IHN0YXRlTm9kZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAkocmV2aXNpb24gMjQwODU1KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSw5IEBAIHByb3RlY3RlZDoKIAogICAg
IGJvb2wgZXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fZXhw
ZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlcjsgfQogCisgICAgQ0FMYXllciAqc2Nyb2xsQ29udGFp
bmVyTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbENvbnRhaW5lckxheWVyLmdldCgpOyB9
CisgICAgQ0FMYXllciAqc2Nyb2xsZWRDb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9z
Y3JvbGxlZENvbnRlbnRzTGF5ZXIuZ2V0KCk7IH0KKwogICAgIFdFQkNPUkVfRVhQT1JUIExheW91
dFBvaW50IHBhcmVudFRvTG9jYWxQb2ludChMYXlvdXRQb2ludCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgTGF5b3V0UG9pbnQgbG9jYWxUb0NvbnRlbnRzUG9pbnQoTGF5b3V0
UG9pbnQpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC0xMzEsNiArMTM0LDkgQEAgcHJpdmF0ZToKICNl
bmRpZgogICAgIFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyBtX3Njcm9sbGFibGVBcmVhUGFyYW1l
dGVyczsKICAgICBib29sIG1fZXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlciB7IGZhbHNlIH07
CisKKyAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9zY3JvbGxDb250YWluZXJMYXllcjsKKyAgICBS
ZXRhaW5QdHI8Q0FMYXllcj4gbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXI7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3Mv
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlSU9TLmgJKHJldmlzaW9uIDI0MDg1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTYxLDEyICs2MSw5IEBAIHByb3RlY3RlZDoKICAgICBGbG9hdFBvaW50IG1pbmltdW1T
Y3JvbGxQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIEZsb2F0UG9pbnQgbWF4aW11bVNj
cm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBDQUxheWVyICpzY3JvbGxMYXll
cigpIGNvbnN0OwotCiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlQ2hpbGROb2Rlc0FmdGVyU2Ny
b2xsKGNvbnN0IEZsb2F0UG9pbnQmKTsKIAotICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3Njcm9s
bExheWVyOwogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX2NvdW50ZXJTY3JvbGxpbmdMYXllcjsK
ICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9oZWFkZXJMYXllcjsKICAgICBSZXRhaW5QdHI8Q0FM
YXllcj4gbV9mb290ZXJMYXllcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlSU9TLm1tCShyZXZpc2lvbiAyNDA4NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5tbQkod29y
a2luZyBjb3B5KQpAQCAtNTksOSArNTksNiBAQCB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVJT1M6CiAgICAgCiAgICAgY29uc3QgYXV0byYgc2Nyb2xsaW5nU3RhdGVOb2RlID0g
ZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU+KHN0YXRlTm9kZSk7CiAK
LSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdT
dGF0ZU5vZGU6OlNjcm9sbExheWVyKSkKLSAgICAgICAgbV9zY3JvbGxMYXllciA9IHNjcm9sbGlu
Z1N0YXRlTm9kZS5sYXllcigpOwotCiAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkNvdW50ZXJTY3Jv
bGxpbmdMYXllcikpCiAgICAgICAgIG1fY291bnRlclNjcm9sbGluZ0xheWVyID0gc2Nyb2xsaW5n
U3RhdGVOb2RlLmNvdW50ZXJTY3JvbGxpbmdMYXllcigpOwogCkBAIC03OCw3ICs3NSw3IEBAIHZv
aWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUzoKICAgICAgICAgICAgIGlmIChz
Y3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6UmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24pKQogICAgICAgICAgICAgICAgIG1fcHJv
YmFibGVNYWluVGhyZWFkU2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxpbmdTdGF0ZU5vZGUucmVxdWVz
dGVkU2Nyb2xsUG9zaXRpb24oKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAg
IENHUG9pbnQgc2Nyb2xsTGF5ZXJQb3NpdGlvbiA9IG1fc2Nyb2xsTGF5ZXIuZ2V0KCkucG9zaXRp
b247CisgICAgICAgICAgICAgICAgQ0dQb2ludCBzY3JvbGxMYXllclBvc2l0aW9uID0gc2Nyb2xs
ZWRDb250ZW50c0xheWVyKCkucG9zaXRpb247CiAgICAgICAgICAgICAgICAgbV9wcm9iYWJsZU1h
aW5UaHJlYWRTY3JvbGxQb3NpdGlvbiA9IEludFBvaW50KC1zY3JvbGxMYXllclBvc2l0aW9uLngs
IC1zY3JvbGxMYXllclBvc2l0aW9uLnkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0x
MDYsNyArMTAzLDcgQEAgRmxvYXRQb2ludCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdObwog
ICAgIGlmIChzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uU3luY2hyb25vdXNseSgpKQog
ICAgICAgICByZXR1cm4gbV9wcm9iYWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbjsKIAotICAg
IHJldHVybiAtbV9zY3JvbGxMYXllci5nZXQoKS5wb3NpdGlvbjsKKyAgICByZXR1cm4gLXNjcm9s
bGVkQ29udGVudHNMYXllcigpLnBvc2l0aW9uOwogfQogCiB2b2lkIFNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVJT1M6OnNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHNj
cm9sbFBvc2l0aW9uKQpAQCAtMTMwLDcgKzEyNyw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZUlPUzoKIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlP
Uzo6c2V0U2Nyb2xsTGF5ZXJQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlv
biwgY29uc3QgRmxvYXRSZWN0JikKIHsKICAgICBBU1NFUlQoIXNob3VsZFVwZGF0ZVNjcm9sbExh
eWVyUG9zaXRpb25TeW5jaHJvbm91c2x5KCkpOwotICAgIFttX3Njcm9sbExheWVyIHNldFBvc2l0
aW9uOi1zY3JvbGxQb3NpdGlvbl07CisgICAgW3Njcm9sbGVkQ29udGVudHNMYXllcigpIHNldFBv
c2l0aW9uOi1zY3JvbGxQb3NpdGlvbl07CiAKICAgICB1cGRhdGVDaGlsZE5vZGVzQWZ0ZXJTY3Jv
bGwoc2Nyb2xsUG9zaXRpb24pOwogfQpAQCAtMjIwLDExICsyMTcsNiBAQCBGbG9hdFBvaW50IFNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vCiAgICAgcmV0dXJuIHBvc2l0aW9uOwogfQogCi1D
QUxheWVyICpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjpzY3JvbGxMYXllcigp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2Nyb2xsTGF5ZXIuZ2V0KCk7Ci19Ci0KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFBM
QVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbQkocmV2aXNpb24g
MjQwODU1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1Ry
ZWVGaXhlZE5vZGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBTY3Jv
bGxpbmdUcmVlRml4ZWROb2RlOjpjb21taXRTdGF0ZQogewogICAgIGNvbnN0IFNjcm9sbGluZ1N0
YXRlRml4ZWROb2RlJiBmaXhlZFN0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlRml4
ZWROb2RlPihzdGF0ZU5vZGUpOwogCi0gICAgaWYgKGZpeGVkU3RhdGVOb2RlLmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlNjcm9sbExheWVyKSkKKyAgICBpZiAoZml4ZWRT
dGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6TGF5ZXIpKQog
ICAgICAgICBtX2xheWVyID0gZml4ZWRTdGF0ZU5vZGUubGF5ZXIoKTsKIAogICAgIGlmIChzdGF0
ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlOjpWaWV3cG9y
dENvbnN0cmFpbnRzKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVNYWMuaAkocmV2aXNpb24gMjQwODU1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMuaAkod29ya2luZyBjb3B5
KQpAQCAtNjksNyArNjksNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdW5zaWduZWQgZXhwb3NlZFVuZmls
bGVkQXJlYSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3Nj
cm9sbExheWVyOwogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3Jvb3RDb250ZW50c0xheWVyOwog
ICAgIFJldGFpblB0cjxDQUxheWVyPiBtX2NvdW50ZXJTY3JvbGxpbmdMYXllcjsKICAgICBSZXRh
aW5QdHI8Q0FMYXllcj4gbV9pbnNldENsaXBMYXllcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCShyZXZpc2lvbiAyNDA4NTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAwLDkgKzEwMCw2IEBAIHZvaWQgU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzoKICAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKHN0YXRlTm9kZSk7CiAgICAgY29uc3Qg
YXV0byYgc2Nyb2xsaW5nU3RhdGVOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVGcmFtZVNj
cm9sbGluZ05vZGU+KHN0YXRlTm9kZSk7CiAKLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhh
c0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlNjcm9sbExheWVyKSkKLSAgICAg
ICAgbV9zY3JvbGxMYXllciA9IHNjcm9sbGluZ1N0YXRlTm9kZS5sYXllcigpOwotCiAgICAgaWYg
KHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFt
ZVNjcm9sbGluZ05vZGU6OlJvb3RDb250ZW50c0xheWVyKSkKICAgICAgICAgbV9yb290Q29udGVu
dHNMYXllciA9IHNjcm9sbGluZ1N0YXRlTm9kZS5yb290Q29udGVudHNMYXllcigpOwogCkBAIC0x
MzUsNyArMTMyLDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOgog
ICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbikpCiAgICAg
ICAgICAgICAgICAgbV9wcm9iYWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbiA9IHNjcm9sbGlu
Z1N0YXRlTm9kZS5yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbigpOwogICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgICAgQ0dQb2ludCBzY3JvbGxMYXllclBvc2l0aW9uID0gbV9zY3JvbGxM
YXllci5nZXQoKS5wb3NpdGlvbjsKKyAgICAgICAgICAgICAgICBDR1BvaW50IHNjcm9sbExheWVy
UG9zaXRpb24gPSBzY3JvbGxlZENvbnRlbnRzTGF5ZXIoKS5wb3NpdGlvbjsKICAgICAgICAgICAg
ICAgICBtX3Byb2JhYmxlTWFpblRocmVhZFNjcm9sbFBvc2l0aW9uID0gRmxvYXRQb2ludCgtc2Ny
b2xsTGF5ZXJQb3NpdGlvbi54LCAtc2Nyb2xsTGF5ZXJQb3NpdGlvbi55KTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQpAQCAtMTczLDcgKzE3MCw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZU1hYzoKICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlJlcXVlc3RlZFNjcm9sbFBvc2l0
aW9uKSkKICAgICAgICAgc2V0U2Nyb2xsUG9zaXRpb24oc2Nyb2xsaW5nU3RhdGVOb2RlLnJlcXVl
c3RlZFNjcm9sbFBvc2l0aW9uKCkpOwogCi0gICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpTY3JvbGxMYXllcikKKyAgICBpZiAo
c2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU6OlNjcm9sbGVkQ29udGVudHNMYXllcikKICAgICAgICAgfHwgc2Nyb2xsaW5nU3Rh
dGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlRv
dGFsQ29udGVudHNTaXplKQogICAgICAgICB8fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsYWJsZUFyZWFTaXpl
KSkKICAgICAgICAgdXBkYXRlTWFpbkZyYW1lUGluU3RhdGUoc2Nyb2xsUG9zaXRpb24oKSk7CkBA
IC0yMjEsNyArMjE4LDcgQEAgRmxvYXRQb2ludCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
bwogICAgIGlmIChzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uU3luY2hyb25vdXNseSgp
KQogICAgICAgICByZXR1cm4gbV9wcm9iYWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbjsKIAot
ICAgIHJldHVybiAtbV9zY3JvbGxMYXllci5nZXQoKS5wb3NpdGlvbjsKKyAgICByZXR1cm4gLXNj
cm9sbGVkQ29udGVudHNMYXllcigpLnBvc2l0aW9uOwogfQogCiB2b2lkIFNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVNYWM6OnNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQm
IHNjcm9sbFBvc2l0aW9uKQpAQCAtMjY5LDcgKzI2Niw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZU1hYzoKIHsKICAgICBBU1NFUlQoIXNob3VsZFVwZGF0ZVNjcm9sbExh
eWVyUG9zaXRpb25TeW5jaHJvbm91c2x5KCkpOwogCi0gICAgbV9zY3JvbGxMYXllci5nZXQoKS5w
b3NpdGlvbiA9IC1wb3NpdGlvbjsKKyAgICBzY3JvbGxlZENvbnRlbnRzTGF5ZXIoKS5wb3NpdGlv
biA9IC1wb3NpdGlvbjsKIAogICAgIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QocG9zaXRp
b24sIHNjcm9sbGFibGVBcmVhU2l6ZSgpKTsKICAgICBGbG9hdFJlY3QgZml4ZWRQb3NpdGlvblJl
Y3Q7CkBAIC0zODQsNyArMzgxLDcgQEAgdW5zaWduZWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZQogICAgIFJlZ2lvbiBwYWludGVkVmlzaWJsZVRpbGVzOwogCiAgICAgRGVxdWU8Q0FM
YXllcio+IGxheWVyUXVldWU7Ci0gICAgbGF5ZXJRdWV1ZS5hcHBlbmQobV9zY3JvbGxMYXllci5n
ZXQoKSk7CisgICAgbGF5ZXJRdWV1ZS5hcHBlbmQoc2Nyb2xsZWRDb250ZW50c0xheWVyKCkpOwog
ICAgIFBsYXRmb3JtTGF5ZXJMaXN0IHRpbGVzOwogCiAgICAgd2hpbGUgKCFsYXllclF1ZXVlLmlz
RW1wdHkoKSAmJiB0aWxlcy5pc0VtcHR5KCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMuaAkocmV2aXNpb24gMjQwODU1KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGVNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsMTEgKzU4LDYgQEAgcHJpdmF0ZToKIAog
ICAgIFNjcm9sbGluZ0V2ZW50UmVzdWx0IGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50Jikgb3ZlcnJpZGU7CiAKLQotICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3Njcm9s
bExheWVyOwotICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3Njcm9sbGVkQ29udGVudHNMYXllcjsK
LQotCiAgICAgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYyBtX2RlbGVnYXRl
OwogCiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05v
ZGVNYWMubW0JKHJldmlzaW9uIDI0MDg1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC01NCwxMyArNTQsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVNCiB7CiAgICAgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZTo6Y29t
bWl0U3RhdGVCZWZvcmVDaGlsZHJlbihzdGF0ZU5vZGUpOwogICAgIGNvbnN0IGF1dG8mIHNjcm9s
bGluZ1N0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlPihzdGF0ZU5vZGUpOwotCi0gICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpTY3JvbGxMYXllcikpCi0gICAgICAgIG1fc2Ny
b2xsTGF5ZXIgPSBzY3JvbGxpbmdTdGF0ZU5vZGUubGF5ZXIoKTsKLQotICAgIGlmIChzY3JvbGxp
bmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKSkKLSAgICAgICAgbV9zY3JvbGxlZENvbnRlbnRzTGF5
ZXIgPSBzY3JvbGxpbmdTdGF0ZU5vZGUuc2Nyb2xsZWRDb250ZW50c0xheWVyKCk7Ci0KKyAgICBV
TlVTRURfUEFSQU0oc2Nyb2xsaW5nU3RhdGVOb2RlKTsKICAgICAvLyBGSVhNRTogU2Nyb2xsIHNu
YXAgZGF0YS4KIH0KIApAQCAtMTA4LDcgKzEwMiw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZU0KIAogRmxvYXRQb2ludCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlTWFjOjpzY3JvbGxQb3NpdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIC1tX3Nj
cm9sbGVkQ29udGVudHNMYXllci5nZXQoKS5wb3NpdGlvbjsKKyAgICByZXR1cm4gLXNjcm9sbGVk
Q29udGVudHNMYXllcigpLnBvc2l0aW9uOwogfQogCiB2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVNYWM6OnNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHNj
cm9sbFBvc2l0aW9uKQpAQCAtMTMwLDcgKzEyNCw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZU0KIAogdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlTWFjOjpzZXRTY3JvbGxMYXllclBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBv
c2l0aW9uLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVkUG9zaXRpb25SZWN0KQogewotICAgIG1fc2Ny
b2xsZWRDb250ZW50c0xheWVyLmdldCgpLnBvc2l0aW9uID0gLXNjcm9sbFBvc2l0aW9uOworICAg
IHNjcm9sbGVkQ29udGVudHNMYXllcigpLnBvc2l0aW9uID0gLXNjcm9sbFBvc2l0aW9uOwogICAg
IGlmICghbV9jaGlsZHJlbikKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTdGlj
a3lOb2RlLm1tCShyZXZpc2lvbiAyNDA4NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9tYWMvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTU4
LDcgKzU4LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6Y29tbWl0U3RhdAogewog
ICAgIGNvbnN0IFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZSYgc3RpY2t5U3RhdGVOb2RlID0gZG93
bmNhc3Q8U2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlPihzdGF0ZU5vZGUpOwogCi0gICAgaWYgKHN0
aWNreVN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpTY3Jv
bGxMYXllcikpCisgICAgaWYgKHN0aWNreVN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVOb2RlOjpMYXllcikpCiAgICAgICAgIG1fbGF5ZXIgPSBzdGlja3lTdGF0ZU5v
ZGUubGF5ZXIoKTsKIAogICAgIGlmIChzdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlU3RpY2t5Tm9kZTo6Vmlld3BvcnRDb25zdHJhaW50cykpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAkocmV2
aXNpb24gMjQwODU1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0NCwxOSArNTQ0LDIyIEBAIHZvaWQgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpkaWRDaGFuZ2VQbGEKIAogICAgIGF1dG8qIGJhY2tpbmcgPSBs
YXllci5iYWNraW5nKCk7CiAgICAgaWYgKGF1dG8gbm9kZUlEID0gYmFja2luZy0+c2Nyb2xsaW5n
Tm9kZUlERm9yUm9sZShTY3JvbGxDb29yZGluYXRpb25Sb2xlOjpWaWV3cG9ydENvbnN0cmFpbmVk
KSkKLSAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNldE5vZGVMYXllcnMobm9kZUlELCBi
YWNraW5nLT5ncmFwaGljc0xheWVyKCkpOworICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+
c2V0Tm9kZUxheWVycyhub2RlSUQsIHsgYmFja2luZy0+Z3JhcGhpY3NMYXllcigpIH0pOwogCiAg
ICAgaWYgKGF1dG8gbm9kZUlEID0gYmFja2luZy0+c2Nyb2xsaW5nTm9kZUlERm9yUm9sZShTY3Jv
bGxDb29yZGluYXRpb25Sb2xlOjpTY3JvbGxpbmcpKSB7CiAgICAgICAgIC8vIEZJWE1FOiB3b3Vs
ZCBiZSBuaWNlIHRvIG5vdCBoYXZlIHRvIHNwZWNpYWwtY2FzZSB0aGUgcm9vdC4KKyAgICAgICAg
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6Ok5vZGVMYXllcnMgbm9kZUxheWVyczsKICAgICAgICAgaWYg
KGxheWVyLmlzUmVuZGVyVmlld0xheWVyKCkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBSZW9y
Z2FuaXplIHRoZSBsYXllcnMgYW5kIHBhc3MgdGhlIHNjcm9sbGVkQ29udGVudHNMYXllci4KLSAg
ICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXROb2RlTGF5ZXJzKG5vZGVJRCwgbV9z
Y3JvbGxMYXllci5nZXQoKSwgbnVsbHB0ciwgZml4ZWRSb290QmFja2dyb3VuZExheWVyKCksIGNs
aXBMYXllcigpLCBtX3Jvb3RDb250ZW50c0xheWVyLmdldCgpKTsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBSZW9yZ2FuaXplIHRoZSBsYXllcnMgYW5kIHBhc3MgdGhlIHNjcm9sbENvbnRhaW5lckxh
eWVyLgorICAgICAgICAgICAgbm9kZUxheWVycyA9IHsgbnVsbHB0ciwgbnVsbHB0ciwgbV9zY3Jv
bGxMYXllci5nZXQoKSwgZml4ZWRSb290QmFja2dyb3VuZExheWVyKCksIGNsaXBMYXllcigpLCBt
X3Jvb3RDb250ZW50c0xheWVyLmdldCgpIH07CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
c2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNldE5vZGVMYXllcnMobm9kZUlELCBiYWNraW5nLT5zY3Jv
bGxpbmdMYXllcigpLCBiYWNraW5nLT5zY3JvbGxpbmdDb250ZW50c0xheWVyKCkpOworICAgICAg
ICAgICAgbm9kZUxheWVycyA9IHsgbGF5ZXIuYmFja2luZygpLT5ncmFwaGljc0xheWVyKCksIGJh
Y2tpbmctPnNjcm9sbGluZ0xheWVyKCksIGJhY2tpbmctPnNjcm9sbGluZ0NvbnRlbnRzTGF5ZXIo
KSB9OworCisgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXROb2RlTGF5ZXJzKG5vZGVJ
RCwgbm9kZUxheWVycyk7CiAgICAgfQogCiAgICAgaWYgKGF1dG8gbm9kZUlEID0gYmFja2luZy0+
c2Nyb2xsaW5nTm9kZUlERm9yUm9sZShTY3JvbGxDb29yZGluYXRpb25Sb2xlOjpGcmFtZUhvc3Rp
bmcpKQotICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2V0Tm9kZUxheWVycyhub2RlSUQs
IGJhY2tpbmctPmdyYXBoaWNzTGF5ZXIoKSk7CisgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9y
LT5zZXROb2RlTGF5ZXJzKG5vZGVJRCwgeyBiYWNraW5nLT5ncmFwaGljc0xheWVyKCkgfSk7CiB9
CiAKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpkaWRQYWludEJhY2tpbmcoUmVuZGVyTGF5
ZXJCYWNraW5nKikKQEAgLTM5MDUsNyArMzkwOCw3IEBAIFNjcm9sbGluZ05vZGVJRCBSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnUKICAgICBMT0dfV0lUSF9TVFJFQU0oQ29tcG9zaXRpbmcsIHN0cmVh
bSA8PCAiUmVnaXN0ZXJpbmcgVmlld3BvcnRDb25zdHJhaW5lZCAiIDw8IG5vZGVUeXBlIDw8ICIg
bm9kZSAiIDw8IG5ld05vZGVJRCA8PCAiIChsYXllciAiIDw8IGxheWVyLmJhY2tpbmcoKS0+Z3Jh
cGhpY3NMYXllcigpLT5wcmltYXJ5TGF5ZXJJRCgpIDw8ICIpIGFzIGNoaWxkIG9mICIgPDwgdHJl
ZVN0YXRlLnBhcmVudE5vZGVJRC52YWx1ZU9yKDApKTsKIAogICAgIGlmIChjaGFuZ2VzICYgU2Ny
b2xsaW5nTm9kZUNoYW5nZUZsYWdzOjpMYXllcikKLSAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0
b3ItPnNldE5vZGVMYXllcnMobmV3Tm9kZUlELCBsYXllci5iYWNraW5nKCktPmdyYXBoaWNzTGF5
ZXIoKSk7CisgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXROb2RlTGF5ZXJzKG5ld05v
ZGVJRCwgeyBsYXllci5iYWNraW5nKCktPmdyYXBoaWNzTGF5ZXIoKSB9KTsKIAogICAgIGlmIChj
aGFuZ2VzICYgU2Nyb2xsaW5nTm9kZUNoYW5nZUZsYWdzOjpMYXllckdlb21ldHJ5KSB7CiAgICAg
ICAgIHN3aXRjaCAobm9kZVR5cGUpIHsKQEAgLTQwMDksNyArNDAxMiw3IEBAIFNjcm9sbGluZ05v
ZGVJRCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnUKICAgICAgICAgfQogCiAgICAgICAgIGlmIChj
aGFuZ2VzICYgU2Nyb2xsaW5nTm9kZUNoYW5nZUZsYWdzOjpMYXllcikKLSAgICAgICAgICAgIHNj
cm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXROb2RlTGF5ZXJzKG5ld05vZGVJRCwgbV9zY3JvbGxMYXll
ci5nZXQoKSwgbnVsbHB0ciwgZml4ZWRSb290QmFja2dyb3VuZExheWVyKCksIGNsaXBMYXllcigp
LCBtX3Jvb3RDb250ZW50c0xheWVyLmdldCgpKTsKKyAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3Jk
aW5hdG9yLT5zZXROb2RlTGF5ZXJzKG5ld05vZGVJRCwgeyBudWxscHRyLCBudWxscHRyLCBtX3Nj
cm9sbExheWVyLmdldCgpLCBmaXhlZFJvb3RCYWNrZ3JvdW5kTGF5ZXIoKSwgY2xpcExheWVyKCks
IG1fcm9vdENvbnRlbnRzTGF5ZXIuZ2V0KCkgfSk7CiAKICAgICAgICAgaWYgKGNoYW5nZXMgJiBT
Y3JvbGxpbmdOb2RlQ2hhbmdlRmxhZ3M6OkxheWVyR2VvbWV0cnkpIHsKICAgICAgICAgICAgIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpTY3JvbGxpbmdHZW9tZXRyeSBzY3JvbGxpbmdHZW9tZXRyeTsK
QEAgLTQwMjQsNyArNDAyNyw3IEBAIFNjcm9sbGluZ05vZGVJRCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OnUKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGNoYW5nZXMgJiBTY3JvbGxp
bmdOb2RlQ2hhbmdlRmxhZ3M6OkxheWVyKQotICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0
b3ItPnNldE5vZGVMYXllcnMobmV3Tm9kZUlELCBsYXllci5iYWNraW5nKCktPnNjcm9sbGluZ0xh
eWVyKCksIGxheWVyLmJhY2tpbmcoKS0+c2Nyb2xsaW5nQ29udGVudHNMYXllcigpKTsKKyAgICAg
ICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXROb2RlTGF5ZXJzKG5ld05vZGVJRCwgeyBs
YXllci5iYWNraW5nKCktPmdyYXBoaWNzTGF5ZXIoKSwgbGF5ZXIuYmFja2luZygpLT5zY3JvbGxp
bmdMYXllcigpLCBsYXllci5iYWNraW5nKCktPnNjcm9sbGluZ0NvbnRlbnRzTGF5ZXIoKSB9KTsK
IAogICAgICAgICBpZiAoY2hhbmdlcyAmIFNjcm9sbGluZ05vZGVDaGFuZ2VGbGFnczo6TGF5ZXJH
ZW9tZXRyeSAmJiB0cmVlU3RhdGUucGFyZW50Tm9kZUlEKSB7CiAgICAgICAgICAgICBSZW5kZXJM
YXllciogc2Nyb2xsaW5nQW5jZXN0b3JMYXllciA9IG1fc2Nyb2xsaW5nTm9kZVRvTGF5ZXJNYXAu
Z2V0KHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQudmFsdWUoKSk7CkBAIC00MDQ4LDcgKzQwNTEsNyBA
QCBTY3JvbGxpbmdOb2RlSUQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1CiAgICAgfQogCiAgICAg
aWYgKGNoYW5nZXMgJiBTY3JvbGxpbmdOb2RlQ2hhbmdlRmxhZ3M6OkxheWVyKQotICAgICAgICBz
Y3JvbGxpbmdDb29yZGluYXRvci0+c2V0Tm9kZUxheWVycyhuZXdOb2RlSUQsIGxheWVyLmJhY2tp
bmcoKS0+Z3JhcGhpY3NMYXllcigpKTsKKyAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNl
dE5vZGVMYXllcnMobmV3Tm9kZUlELCB7IGxheWVyLmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXllcigp
IH0pOwogCiAgICAgaWYgKGNoYW5nZXMgJiBTY3JvbGxpbmdOb2RlQ2hhbmdlRmxhZ3M6OkxheWVy
R2VvbWV0cnkgJiYgdHJlZVN0YXRlLnBhcmVudE5vZGVJRCkgewogICAgICAgICBSZW5kZXJMYXll
ciogc2Nyb2xsaW5nQW5jZXN0b3JMYXllciA9IG1fc2Nyb2xsaW5nTm9kZVRvTGF5ZXJNYXAuZ2V0
KHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQudmFsdWUoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24g
MjQwODU1KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyOCBAQAorMjAxOS0wMi0wMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgRG9uJ3QgdXNlIGJhc2UgbGF5ZXIoKSBhcyB0aGUgc2Nyb2xsIGxheWVyIGlu
IHNjcm9sbGluZyB0cmVlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk0MTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5h
dG9yVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0
ZU5vZGU+OjplbmNvZGUpOgorICAgICAgICAoQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZU5v
ZGU+OjpkZWNvZGUpOgorICAgICAgICAoQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU+OjplbmNvZGUpOgorICAgICAgICAoQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU+OjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpkdW1wKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5Ojpjb25uZWN0U3RhdGVOb2RlTGF5ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Ojpjb25uZWN0U3Rh
dGVOb2RlTGF5ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9T
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TOjpjb21taXRTdGF0
ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lv
cy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpjb21taXRTdGF0ZUJl
Zm9yZUNoaWxkcmVuKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tOgorICAgICAgICAoV2ViS2l0
OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpjb21taXRTdGF0ZUJlZm9y
ZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZUlPUzo6Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKToKKwogMjAxOS0wMi0wMSAgTWlj
aGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1NPVVBd
IEltcHJvdmUgdXNlIG9mIFBBTDo6U2Vzc2lvbklEIGluIFdlYktpdENvb2tpZU1hbmFnZXIKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvclRyYW5zYWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1No
YXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlv
bi5jcHAJKHJldmlzaW9uIDI0MDg1NSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3Rh
dGVOb2RlPjo6CiAgICAgZW5jb2RlciA8PCBub2RlLnBhcmVudE5vZGVJRCgpOwogICAgIGVuY29k
ZXIgPDwgbm9kZS5jaGFuZ2VkUHJvcGVydGllcygpOwogICAgIAotICAgIGlmIChub2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlNjcm9sbExheWVyKSkKKyAgICBpZiAo
bm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpMYXllcikpCiAgICAg
ICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklE
Pihub2RlLmxheWVyKCkpOwogfQogCkBAIC0xMDIsNyArMTAyLDcgQEAgYm9vbCBBcmd1bWVudENv
ZGVyPFNjcm9sbGluZ1N0YXRlTm9kZT46OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBu
b2RlLnNldENoYW5nZWRQcm9wZXJ0aWVzKGNoYW5nZWRQcm9wZXJ0aWVzKTsKLSAgICBpZiAobm9k
ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpTY3JvbGxMYXllcikpIHsK
KyAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpMYXll
cikpIHsKICAgICAgICAgR3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGxheWVySUQ7CiAg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGF5ZXJJRCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0xNDEsNiArMTQxLDggQEAgdm9pZCBBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaQogICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uLCByZXF1ZXN0ZWRTY3JvbGxQb3NpdGlv
bikKICAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
OjpSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbiwgcmVxdWVzdGVkU2Nyb2xsUG9zaXRpb25SZXByZXNl
bnRzUHJvZ3JhbW1hdGljU2Nyb2xsKQogCisgICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKQorICAg
ICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJ
RD4obm9kZS5zY3JvbGxDb250YWluZXJMYXllcigpKTsKICAgICBpZiAobm9kZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxlZENvbnRlbnRzTGF5
ZXIpKQogICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXI6OlBsYXRm
b3JtTGF5ZXJJRD4obm9kZS5zY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSk7CiB9CkBAIC0yMzgsNiAr
MjQwLDEzIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZVNjcm9sbGkKICAgICAg
ICAgbm9kZS5zZXRSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbihzY3JvbGxQb3NpdGlvbiwgcmVwcmVz
ZW50c1Byb2dyYW1tYXRpY1Njcm9sbCk7CiAgICAgfQogCisgICAgaWYgKG5vZGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsQ29udGFpbmVyTGF5
ZXIpKSB7CisgICAgICAgIEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBsYXllcklEOwor
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxheWVySUQpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBub2RlLnNldFNjcm9sbENvbnRhaW5lckxheWVyKGxheWVySUQpOwor
ICAgIH0KKwogICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU6OlNjcm9sbGVkQ29udGVudHNMYXllcikpIHsKICAgICAgICAgR3JhcGhpY3NM
YXllcjo6UGxhdGZvcm1MYXllcklEIGxheWVySUQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUobGF5ZXJJRCkpCkBAIC01MTQsNiArNTIzLDkgQEAgc3RhdGljIHZvaWQgZHVtcChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgUwogICAgICAgICB0cy5kdW1wUHJvcGVydHkoInJlcXVlc3RlZC1zY3Jv
bGwtcG9zaXRpb24taXMtcHJvZ3JhbWF0aWMiLCBub2RlLnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9u
UmVwcmVzZW50c1Byb2dyYW1tYXRpY1Njcm9sbCgpKTsKICAgICB9CiAKKyAgICBpZiAoIWNoYW5n
ZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU6OlNjcm9sbENvbnRhaW5lckxheWVyKSkKKyAgICAgICAgdHMuZHVtcFBy
b3BlcnR5KCJzY3JvbGwtY29udGFpbmVyLWxheWVyIiwgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXll
cjo6UGxhdGZvcm1MYXllcklEPihub2RlLnNjcm9sbENvbnRhaW5lckxheWVyKCkpKTsKKwogICAg
IGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKSkKICAgICAg
ICAgdHMuZHVtcFByb3BlcnR5KCJzY3JvbGxlZC1jb250ZW50cy1sYXllciIsIHN0YXRpY19jYXN0
PEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5zY3JvbGxlZENvbnRlbnRzTGF5
ZXIoKSkpOwogfQpAQCAtNjAxLDcgKzYxMyw3IEBAIHN0YXRpYyB2b2lkIGR1bXAoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IFMKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInR5cGUiLCBub2RlLm5vZGVU
eXBlKCkpOwogCi0gICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpTY3JvbGxMYXllcikpCisgICAgaWYgKCFj
aGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5n
U3RhdGVOb2RlOjpMYXllcikpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgibGF5ZXIiLCBzdGF0
aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+KG5vZGUubGF5ZXIoKSkpOwog
ICAgIAogICAgIHN3aXRjaCAobm9kZS5ub2RlVHlwZSgpKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwCShyZXZpc2lvbiAyNDA4NTUp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDcgQEAg
dm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Ojpjbwogdm9pZCBSZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5Ojpjb25uZWN0U3RhdGVOb2RlTGF5ZXJzKFNjcm9sbGluZ1N0
YXRlVHJlZSYgc3RhdGVUcmVlLCBjb25zdCBSZW1vdGVMYXllclRyZWVIb3N0JiBsYXllclRyZWVI
b3N0KQogewogICAgIGZvciAoYXV0byYgY3Vyck5vZGUgOiBzdGF0ZVRyZWUubm9kZU1hcCgpLnZh
bHVlcygpKSB7Ci0gICAgICAgIGlmIChjdXJyTm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlTm9kZTo6U2Nyb2xsTGF5ZXIpKQorICAgICAgICBpZiAoY3Vyck5vZGUtPmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OkxheWVyKSkKICAgICAgICAgICAgIGN1
cnJOb2RlLT5zZXRMYXllcihsYXllclRyZWVIb3N0LmxheWVyRm9ySUQoY3Vyck5vZGUtPmxheWVy
KCkpKTsKIAogICAgICAgICBzd2l0Y2ggKGN1cnJOb2RlLT5ub2RlVHlwZSgpKSB7CkBAIC0xMDcs
NiArMTA3LDkgQEAgdm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpjbwogICAg
ICAgICBjYXNlIFNjcm9sbGluZ05vZGVUeXBlOjpTdWJmcmFtZTogewogICAgICAgICAgICAgU2Ny
b2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUmIHNjcm9sbGluZ1N0YXRlTm9kZSA9IGRvd25j
YXN0PFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlPigqY3Vyck5vZGUpOwogICAgICAg
ICAgICAgCisgICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbENvbnRhaW5lckxheWVyKSkK
KyAgICAgICAgICAgICAgICBzY3JvbGxpbmdTdGF0ZU5vZGUuc2V0U2Nyb2xsQ29udGFpbmVyTGF5
ZXIobGF5ZXJUcmVlSG9zdC5sYXllckZvcklEKHNjcm9sbGluZ1N0YXRlTm9kZS5zY3JvbGxDb250
YWluZXJMYXllcigpKSk7CisKICAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250
ZW50c0xheWVyKSkKICAgICAgICAgICAgICAgICBzY3JvbGxpbmdTdGF0ZU5vZGUuc2V0U2Nyb2xs
ZWRDb250ZW50c0xheWVyKGxheWVyVHJlZUhvc3QubGF5ZXJGb3JJRChzY3JvbGxpbmdTdGF0ZU5v
ZGUuc2Nyb2xsZWRDb250ZW50c0xheWVyKCkpKTsKIApAQCAtMTM1LDYgKzEzOCw4IEBAIHZvaWQg
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6Y28KICAgICAgICAgfQogICAgICAgICBj
YXNlIFNjcm9sbGluZ05vZGVUeXBlOjpPdmVyZmxvdzogewogICAgICAgICAgICAgU2Nyb2xsaW5n
U3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUmIHNjcm9sbGluZ1N0YXRlTm9kZSA9IGRvd25jYXN0
PFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlPigqY3Vyck5vZGUpOworICAgICAg
ICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxDb250YWluZXJMYXllcikpCisgICAgICAgICAgICAg
ICAgc2Nyb2xsaW5nU3RhdGVOb2RlLnNldFNjcm9sbENvbnRhaW5lckxheWVyKGxheWVyVHJlZUhv
c3QubGF5ZXJGb3JJRChzY3JvbGxpbmdTdGF0ZU5vZGUuc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKSkp
OwogCiAgICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGVkQ29udGVudHNMYXllcikpCiAg
ICAgICAgICAgICAgICAgc2Nyb2xsaW5nU3RhdGVOb2RlLnNldFNjcm9sbGVkQ29udGVudHNMYXll
cihsYXllclRyZWVIb3N0LmxheWVyRm9ySUQoc2Nyb2xsaW5nU3RhdGVOb2RlLnNjcm9sbGVkQ29u
dGVudHNMYXllcigpKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCShyZXZpc2lvbiAyNDA4NTUpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yUHJveHlJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTUwLDEzICs1MCwxNiBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQ
cm94eTo6Y29ubmVjdFN0YXRlTm9kZUxheWVycyhTY3JvbGxpbmdTdGF0ZVRyZWUmIHN0YXRlVHJl
ZSwgY29uc3QgUmVtb3RlTGF5ZXJUcmVlSG9zdCYgbGF5ZXJUcmVlSG9zdCkKIHsKICAgICBmb3Ig
KGF1dG8mIGN1cnJOb2RlIDogc3RhdGVUcmVlLm5vZGVNYXAoKS52YWx1ZXMoKSkgeworICAgICAg
ICBpZiAoY3Vyck5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6Okxh
eWVyKSkKKyAgICAgICAgICAgIGN1cnJOb2RlLT5zZXRMYXllcihsYXllclRyZWVIb3N0LmxheWVy
Rm9ySUQoY3Vyck5vZGUtPmxheWVyKCkpKTsKKyAgICAgICAgCiAgICAgICAgIHN3aXRjaCAoY3Vy
ck5vZGUtPm5vZGVUeXBlKCkpIHsKICAgICAgICAgY2FzZSBTY3JvbGxpbmdOb2RlVHlwZTo6T3Zl
cmZsb3c6IHsKICAgICAgICAgICAgIFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
JiBzY3JvbGxpbmdTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZT4oKmN1cnJOb2RlKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHNj
cm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpT
Y3JvbGxMYXllcikpCi0gICAgICAgICAgICAgICAgc2Nyb2xsaW5nU3RhdGVOb2RlLnNldExheWVy
KGxheWVyVHJlZUhvc3QubGF5ZXJGb3JJRChzY3JvbGxpbmdTdGF0ZU5vZGUubGF5ZXIoKSkpOwot
ICAgICAgICAgICAgCisKKyAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hh
bmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsQ29udGFpbmVy
TGF5ZXIpKQorICAgICAgICAgICAgICAgIHNjcm9sbGluZ1N0YXRlTm9kZS5zZXRTY3JvbGxDb250
YWluZXJMYXllcihsYXllclRyZWVIb3N0LmxheWVyRm9ySUQoc2Nyb2xsaW5nU3RhdGVOb2RlLnNj
cm9sbENvbnRhaW5lckxheWVyKCkpKTsKKwogICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRl
Tm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3Jv
bGxlZENvbnRlbnRzTGF5ZXIpKQogICAgICAgICAgICAgICAgIHNjcm9sbGluZ1N0YXRlTm9kZS5z
ZXRTY3JvbGxlZENvbnRlbnRzTGF5ZXIobGF5ZXJUcmVlSG9zdC5sYXllckZvcklEKHNjcm9sbGlu
Z1N0YXRlTm9kZS5zY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSkpOwogICAgICAgICAgICAgYnJlYWs7
CkBAIC02NCw5ICs2Nyw5IEBAIHZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6
Y28KICAgICAgICAgY2FzZSBTY3JvbGxpbmdOb2RlVHlwZTo6TWFpbkZyYW1lOgogICAgICAgICBj
YXNlIFNjcm9sbGluZ05vZGVUeXBlOjpTdWJmcmFtZTogewogICAgICAgICAgICAgU2Nyb2xsaW5n
U3RhdGVGcmFtZVNjcm9sbGluZ05vZGUmIHNjcm9sbGluZ1N0YXRlTm9kZSA9IGRvd25jYXN0PFNj
cm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlPigqY3Vyck5vZGUpOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZU5vZGU6OlNjcm9sbExheWVyKSkKLSAgICAgICAgICAgICAgICBzY3JvbGxp
bmdTdGF0ZU5vZGUuc2V0TGF5ZXIobGF5ZXJUcmVlSG9zdC5sYXllckZvcklEKHNjcm9sbGluZ1N0
YXRlTm9kZS5sYXllcigpKSk7CisKKyAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsQ29u
dGFpbmVyTGF5ZXIpKQorICAgICAgICAgICAgICAgIHNjcm9sbGluZ1N0YXRlTm9kZS5zZXRTY3Jv
bGxDb250YWluZXJMYXllcihsYXllclRyZWVIb3N0LmxheWVyRm9ySUQoc2Nyb2xsaW5nU3RhdGVO
b2RlLnNjcm9sbENvbnRhaW5lckxheWVyKCkpKTsKIAogICAgICAgICAgICAgaWYgKHNjcm9sbGlu
Z1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
OjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpKQogICAgICAgICAgICAgICAgIHNjcm9sbGluZ1N0YXRl
Tm9kZS5zZXRTY3JvbGxlZENvbnRlbnRzTGF5ZXIobGF5ZXJUcmVlSG9zdC5sYXllckZvcklEKHNj
cm9sbGluZ1N0YXRlTm9kZS5zY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSkpOwpAQCAtODUsOCArODgs
NiBAQCB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmNvCiAgICAgICAgIGNh
c2UgU2Nyb2xsaW5nTm9kZVR5cGU6OkZpeGVkOgogICAgICAgICBjYXNlIFNjcm9sbGluZ05vZGVU
eXBlOjpTdGlja3k6CiAgICAgICAgIGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6OkZyYW1lSG9zdGlu
ZzoKLSAgICAgICAgICAgIGlmIChjdXJyTm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlTm9kZTo6U2Nyb2xsTGF5ZXIpKQotICAgICAgICAgICAgICAgIGN1cnJOb2RlLT5zZXRM
YXllcihsYXllclRyZWVIb3N0LmxheWVyRm9ySUQoY3Vyck5vZGUtPmxheWVyKCkpKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
UmVtb3RlSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5t
bQkocmV2aXNpb24gMjQwODU1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC01Miw4ICs1Miw5IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZVJlbW8KIHsKICAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9T
Ojpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKHN0YXRlTm9kZSk7CiAKLSAgICBpZiAoc3RhdGVO
b2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9s
bExheWVyKSkgewotICAgICAgICBpZiAoc2Nyb2xsTGF5ZXIoKSAmJiBbW3Njcm9sbExheWVyKCkg
ZGVsZWdhdGVdIGlzS2luZE9mQ2xhc3M6W1VJU2Nyb2xsVmlldyBzZWxmXV0pCisgICAgLy8gRklY
TUU6IFNob3VsZCBiZSBTY3JvbGxDb250YWluZXJMYXllci4KKyAgICBpZiAoc3RhdGVOb2RlLmhh
c0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGVkQ29u
dGVudHNMYXllcikpIHsKKyAgICAgICAgaWYgKHNjcm9sbGVkQ29udGVudHNMYXllcigpICYmIFtb
c2Nyb2xsZWRDb250ZW50c0xheWVyKCkgZGVsZWdhdGVdIGlzS2luZE9mQ2xhc3M6W1VJU2Nyb2xs
VmlldyBzZWxmXV0pCiAgICAgICAgICAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZSA9IHN0ZDo6
bWFrZV91bmlxdWU8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUz4oKnRoaXMp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZSA9IG51
bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9z
L1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tCShyZXZpc2lvbiAyNDA4NTUpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6fgogCiB2b2lkIFNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29u
c3QgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlJiBzdGF0ZU5vZGUpCiB7Ci0gICAgaWYgKHN0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpT
Y3JvbGxMYXllcikpCisgICAgaWYgKHN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxDb250YWluZXJMYXllcikpCiAgICAgICAgIG1f
c2Nyb2xsaW5nTm9kZURlbGVnYXRlLT5yZXNldFNjcm9sbFZpZXdEZWxlZ2F0ZSgpOwogCiAgICAg
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGls
ZHJlbihzdGF0ZU5vZGUpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQkocmV2aXNpb24gMjQwODU1KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQsMTcg
KzE5NCwyNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJCiAKIHZv
aWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6Y29tbWl0U3RhdGVCZWZv
cmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUmIHNjcm9sbGluZ1N0
YXRlTm9kZSkKIHsKLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlNjcm9sbExheWVyKSkKLSAgICAgICAgbV9zY3JvbGxMYXll
ciA9IHNjcm9sbGluZ1N0YXRlTm9kZS5sYXllcigpOworICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xs
Q29udGFpbmVyTGF5ZXIpKSB7CisgICAgICAgIFJldGFpblB0cjxDQUxheWVyPiBsYXllcjsKKyAg
ICAgICAgbGF5ZXIgPSBzY3JvbGxpbmdTdGF0ZU5vZGUuc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKTsK
KyAgICAgICAgaWYgKFtbbGF5ZXIgZGVsZWdhdGVdIGlzS2luZE9mQ2xhc3M6W1VJU2Nyb2xsVmll
dyBzZWxmXV0pCisgICAgICAgICAgICBtX3Njcm9sbExheWVyID0gbGF5ZXI7CisgICAgfQogCi0g
ICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpKQotICAgICAgICBtX3Njcm9s
bGVkQ29udGVudHNMYXllciA9IHNjcm9sbGluZ1N0YXRlTm9kZS5zY3JvbGxlZENvbnRlbnRzTGF5
ZXIoKTsKKyAgICAvLyBGSU1YRTogU2Nyb2xsQ29udGFpbmVyTGF5ZXIgc2hvdWxkIGFsd2F5cyBi
ZSB0aGUgVUlTY3JvbGxWaWV3IGxheWVyLgorICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250
ZW50c0xheWVyKSkgeworICAgICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbGF5ZXI7CisgICAgICAg
IGxheWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLnNjcm9sbGVkQ29udGVudHNMYXllcigpOworICAg
ICAgICBpZiAoW1tsYXllciBkZWxlZ2F0ZV0gaXNLaW5kT2ZDbGFzczpbVUlTY3JvbGxWaWV3IHNl
bGZdXSkKKyAgICAgICAgICAgIG1fc2Nyb2xsTGF5ZXIgPSBsYXllcjsKKyAgICB9CiB9CiAKIHZv
aWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6Y29tbWl0U3RhdGVBZnRl
ckNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYgc2Nyb2xsaW5nU3Rh
dGVOb2RlKQogewogICAgIFNldEZvclNjb3BlPGJvb2w+IHVwZGF0aW5nQ2hhbmdlKG1fdXBkYXRp
bmdGcm9tU3RhdGVOb2RlLCB0cnVlKTsKLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbExheWVyKQor
ICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpCisgICAgICAgIHx8IHNjcm9s
bGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlOjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpCiAgICAgICAgIHx8IHNjcm9sbGluZ1N0YXRlTm9k
ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpUb3RhbENv
bnRlbnRzU2l6ZSkKICAgICAgICAgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlJlYWNoYWJsZUNvbnRlbnRzU2l6ZSkK
ICAgICAgICAgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbFBvc2l0aW9uKQpAQCAtMjEzLDcgKzIyMyw4IEBA
IHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUkKICAgICAgICAgVUlTY3Jv
bGxWaWV3ICpzY3JvbGxWaWV3ID0gKFVJU2Nyb2xsVmlldyAqKVtzY3JvbGxMYXllcigpIGRlbGVn
YXRlXTsKICAgICAgICAgQVNTRVJUKFtzY3JvbGxWaWV3IGlzS2luZE9mQ2xhc3M6W1VJU2Nyb2xs
VmlldyBzZWxmXV0pOwogCi0gICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsTGF5ZXIpKSB7Cisg
ICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpCisgICAgICAgICAgICB8
fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKSkgewogICAgICAgICAgICAgaWYgKCFt
X3Njcm9sbFZpZXdEZWxlZ2F0ZSkKICAgICAgICAgICAgICAgICBtX3Njcm9sbFZpZXdEZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tXS1Njcm9sbGluZ05vZGVTY3JvbGxWaWV3RGVsZWdhdGUgYWxsb2NdIGlu
aXRXaXRoU2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZTp0aGlzXSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360869</attachid>
            <date>2019-02-01 09:48:15 -0800</date>
            <delta_ts>2019-02-01 11:25:41 -0800</delta_ts>
            <desc>patch</desc>
            <filename>scrolling-tree-scrolling-layer-2.patch</filename>
            <type>text/plain</type>
            <size>49379</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDg1NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDE5LTAyLTAxICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBEb24ndCB1c2UgYmFzZSBsYXll
cigpIGFzIHRoZSBzY3JvbGwgbGF5ZXIgaW4gc2Nyb2xsaW5nIHRyZWUuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQxNjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWludGFpbiBzY3JvbGxDb250YWlu
ZXJMYXllcigpIGFuZCBzY3JvbGxlZENvbnRlc3RzTGF5ZXIoKSBzZXBhcmF0ZWx5IGluIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlLgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0Tm9kZUxheWVycyk6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0Tm9kZUxheWVycyk6CisKKyAgICAgICAgVHVybiB0
aGUgbG9uZyBsYXllciBwYXJhbWV0ZXIgbGlzdCBpbnRvIGEgc3RydWN0LgorCisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1N0YXRlTm9kZTo6U2Nyb2xsaW5nU3RhdGVOb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6c2V0QWxsUHJvcGVydGllc0NoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpzZXRMYXllcik6CisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0QWxsUHJv
cGVydGllc0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlOjpzZXRTY3JvbGxDb250YWluZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OmR1bXBQcm9wZXJ0aWVzIGNvbnN0KToKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2Nyb2xsQ29udGFpbmVyTGF5
ZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6Y29tbWl0VHJlZVN0YXRlKToKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6Y29tbWl0U3RhdGVCZWZv
cmVDaGlsZHJlbik6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
OjpzY3JvbGxDb250YWluZXJMYXllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZTo6c2Nyb2xsZWRDb250ZW50c0xheWVyIGNvbnN0KToKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlP
Uy5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZUlPUzo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjpzY3JvbGxQb3NpdGlvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
SU9TOjpzZXRTY3JvbGxMYXllclBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1M6OnNjcm9sbExheWVyIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6OmNvbW1pdFN0YXRlQmVm
b3JlQ2hpbGRyZW4pOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlTWFjLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Nj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxk
cmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVN
YWM6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpzY3JvbGxQb3NpdGlvbiBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpzZXRTY3Jv
bGxMYXllclBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVNYWM6OmV4cG9zZWRVbmZpbGxlZEFyZWEgY29uc3QpOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLmg6
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlTWFjOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWM6OnNjcm9sbFBvc2l0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVNYWM6OnNldFNjcm9sbExheWVyUG9zaXRpb24pOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGlkQ2hhbmdlUGxhdGZvcm1MYXllckZvckxh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Ny
b2xsaW5nTm9kZUZvclZpZXdwb3J0Q29uc3RyYWluZWRSb2xlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xsaW5nTm9kZUZvclNjcm9sbGluZ1Jv
bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVTY3Jv
bGxpbmdOb2RlRm9yRnJhbWVIb3N0aW5nUm9sZSk6CisKIDIwMTktMDItMDEgIFNpbW9uIEZyYXNl
ciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI0MDY5
OCk6IGZhc3Qvc2Nyb2xsaW5nL3N0aWNreS10by1maXhlZC5odG1sIGNhbiBjYXVzZSBhIGNyYXNo
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9B
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAkocmV2aXNpb24gMjQwODU1KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OmZyYW1lVmllCiAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RM
YXllckRpZENoYW5nZShmcmFtZVZpZXcpOwogCiAgICAgYXV0byogbm9kZSA9IGRvd25jYXN0PFNj
cm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlPihtX3Njcm9sbGluZ1N0YXRlVHJlZS0+c3Rh
dGVOb2RlRm9ySUQoZnJhbWVWaWV3LnNjcm9sbGluZ05vZGVJRCgpKSk7Ci0gICAgbm9kZS0+c2V0
TGF5ZXIoc2Nyb2xsTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSk7CisgICAgbm9kZS0+c2V0
U2Nyb2xsZWRDb250ZW50c0xheWVyKHNjcm9sbExheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldykp
OwogICAgIG5vZGUtPnNldFJvb3RDb250ZW50c0xheWVyKHJvb3RDb250ZW50c0xheWVyRm9yRnJh
bWVWaWV3KGZyYW1lVmlldykpOwogICAgIG5vZGUtPnNldENvdW50ZXJTY3JvbGxpbmdMYXllcihj
b3VudGVyU2Nyb2xsaW5nTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSk7CiAgICAgbm9kZS0+
c2V0SW5zZXRDbGlwTGF5ZXIoaW5zZXRDbGlwTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSk7
CkBAIC01NzMsMjUgKzU3MywyNSBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmVu
c3VyZVJvCiAgICAgaW5zZXJ0Tm9kZShTY3JvbGxpbmdOb2RlVHlwZTo6TWFpbkZyYW1lLCBmcmFt
ZVZpZXcuc2Nyb2xsaW5nTm9kZUlEKCksIDAsIDApOwogfQogCi12b2lkIEFzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OnNldE5vZGVMYXllcnMoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwgR3JhcGhp
Y3NMYXllciogbGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbGVkQ29udGVudHNMYXllciwgR3Jh
cGhpY3NMYXllciogY291bnRlclNjcm9sbGluZ0xheWVyLCBHcmFwaGljc0xheWVyKiBpbnNldENs
aXBMYXllciwgR3JhcGhpY3NMYXllciogcm9vdENvbnRlbnRzTGF5ZXIpCit2b2lkIEFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OnNldE5vZGVMYXllcnMoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwg
Y29uc3QgTm9kZUxheWVycyYgbm9kZUxheWVycykKIHsKICAgICBhdXRvKiBub2RlID0gbV9zY3Jv
bGxpbmdTdGF0ZVRyZWUtPnN0YXRlTm9kZUZvcklEKG5vZGVJRCk7CiAgICAgQVNTRVJUKG5vZGUp
OwogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbm9kZS0+c2V0TGF5ZXIo
bGF5ZXIpOworICAgIG5vZGUtPnNldExheWVyKG5vZGVMYXllcnMubGF5ZXIpOwogCiAgICAgaWYg
KGlzPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT4obm9kZSkpIHsKICAgICAgICAgYXV0byYg
c2Nyb2xsaW5nTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT4oKm5v
ZGUpOwotICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5IHVudXNlZC4KLSAgICAgICAgc2Nyb2xs
aW5nTm9kZS5zZXRTY3JvbGxlZENvbnRlbnRzTGF5ZXIoc2Nyb2xsZWRDb250ZW50c0xheWVyKTsK
KyAgICAgICAgc2Nyb2xsaW5nTm9kZS5zZXRTY3JvbGxDb250YWluZXJMYXllcihub2RlTGF5ZXJz
LnNjcm9sbENvbnRhaW5lckxheWVyKTsKKyAgICAgICAgc2Nyb2xsaW5nTm9kZS5zZXRTY3JvbGxl
ZENvbnRlbnRzTGF5ZXIobm9kZUxheWVycy5zY3JvbGxlZENvbnRlbnRzTGF5ZXIpOwogCiAgICAg
ICAgIGlmIChpczxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4obm9kZSkpIHsKICAg
ICAgICAgICAgIGF1dG8mIGZyYW1lU2Nyb2xsaW5nTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlPigqbm9kZSk7Ci0gICAgICAgICAgICBmcmFtZVNjcm9sbGlu
Z05vZGUuc2V0SW5zZXRDbGlwTGF5ZXIoaW5zZXRDbGlwTGF5ZXIpOwotICAgICAgICAgICAgZnJh
bWVTY3JvbGxpbmdOb2RlLnNldENvdW50ZXJTY3JvbGxpbmdMYXllcihjb3VudGVyU2Nyb2xsaW5n
TGF5ZXIpOwotICAgICAgICAgICAgZnJhbWVTY3JvbGxpbmdOb2RlLnNldFJvb3RDb250ZW50c0xh
eWVyKHJvb3RDb250ZW50c0xheWVyKTsKKyAgICAgICAgICAgIGZyYW1lU2Nyb2xsaW5nTm9kZS5z
ZXRJbnNldENsaXBMYXllcihub2RlTGF5ZXJzLmluc2V0Q2xpcExheWVyKTsKKyAgICAgICAgICAg
IGZyYW1lU2Nyb2xsaW5nTm9kZS5zZXRDb3VudGVyU2Nyb2xsaW5nTGF5ZXIobm9kZUxheWVycy5j
b3VudGVyU2Nyb2xsaW5nTGF5ZXIpOworICAgICAgICAgICAgZnJhbWVTY3JvbGxpbmdOb2RlLnNl
dFJvb3RDb250ZW50c0xheWVyKG5vZGVMYXllcnMucm9vdENvbnRlbnRzTGF5ZXIpOwogICAgICAg
ICB9CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAkocmV2aXNpb24gMjQwODU1KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4LDcgQEAgcHJpdmF0ZToKICAgICBXRUJD
T1JFX0VYUE9SVCBTY3JvbGxpbmdOb2RlSUQgcGFyZW50T2ZOb2RlKFNjcm9sbGluZ05vZGVJRCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFNjcm9sbGluZ05vZGVJ
RD4gY2hpbGRyZW5PZk5vZGUoU2Nyb2xsaW5nTm9kZUlEKSBjb25zdCBvdmVycmlkZTsKIAotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Tm9kZUxheWVycyhTY3JvbGxpbmdOb2RlSUQsIEdyYXBo
aWNzTGF5ZXIqIC8qbGF5ZXIqLywgR3JhcGhpY3NMYXllciogLypzY3JvbGxlZENvbnRlbnRzTGF5
ZXIqLyA9IG51bGxwdHIsIEdyYXBoaWNzTGF5ZXIqIC8qY291bnRlclNjcm9sbGluZ0xheWVyKi8g
PSBudWxscHRyLCBHcmFwaGljc0xheWVyKiAvKmluc2V0Q2xpcExheWVyKi8gPSBudWxscHRyLCBH
cmFwaGljc0xheWVyKiAvKnJvb3RDb250ZW50c0xheWVyKi8gPSBudWxscHRyKSBvdmVycmlkZTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE5vZGVMYXllcnMoU2Nyb2xsaW5nTm9kZUlELCBj
b25zdCBOb2RlTGF5ZXJzJikgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRT
Y3JvbGxpbmdOb2RlR2VvbWV0cnkoU2Nyb2xsaW5nTm9kZUlELCBjb25zdCBTY3JvbGxpbmdHZW9t
ZXRyeSYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Vmlld3BvcnRDb25z
dHJhaW50ZWROb2RlR2VvbWV0cnkoU2Nyb2xsaW5nTm9kZUlELCBjb25zdCBWaWV3cG9ydENvbnN0
cmFpbnRzJikgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAkocmV2aXNpb24gMjQwODU1KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtMTI5LDcgKzEyOSwxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTY3Jv
bGxpbmdOb2RlSUQgcGFyZW50T2ZOb2RlKFNjcm9sbGluZ05vZGVJRCkgY29uc3QgeyByZXR1cm4g
MDsgfQogICAgIHZpcnR1YWwgVmVjdG9yPFNjcm9sbGluZ05vZGVJRD4gY2hpbGRyZW5PZk5vZGUo
U2Nyb2xsaW5nTm9kZUlEKSBjb25zdCB7IHJldHVybiB7IH07IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBzZXROb2RlTGF5ZXJzKFNjcm9sbGluZ05vZGVJRCwgR3JhcGhpY3NMYXllciogLypsYXllciov
LCBHcmFwaGljc0xheWVyKiAvKnNjcm9sbGVkQ29udGVudHNMYXllciovID0gbnVsbHB0ciwgR3Jh
cGhpY3NMYXllciogLypjb3VudGVyU2Nyb2xsaW5nTGF5ZXIqLyA9IG51bGxwdHIsIEdyYXBoaWNz
TGF5ZXIqIC8qaW5zZXRDbGlwTGF5ZXIqLyA9IG51bGxwdHIsIEdyYXBoaWNzTGF5ZXIqIC8qcm9v
dENvbnRlbnRzTGF5ZXIqLyA9IG51bGxwdHIpIHsgfQorICAgIHN0cnVjdCBOb2RlTGF5ZXJzIHsK
KyAgICAgICAgR3JhcGhpY3NMYXllciogbGF5ZXIgeyBudWxscHRyIH07CisgICAgICAgIEdyYXBo
aWNzTGF5ZXIqIHNjcm9sbENvbnRhaW5lckxheWVyIHsgbnVsbHB0ciB9OworICAgICAgICBHcmFw
aGljc0xheWVyKiBzY3JvbGxlZENvbnRlbnRzTGF5ZXIgeyBudWxscHRyIH07CisgICAgICAgIEdy
YXBoaWNzTGF5ZXIqIGNvdW50ZXJTY3JvbGxpbmdMYXllciB7IG51bGxwdHIgfTsKKyAgICAgICAg
R3JhcGhpY3NMYXllciogaW5zZXRDbGlwTGF5ZXIgeyBudWxscHRyIH07CisgICAgICAgIEdyYXBo
aWNzTGF5ZXIqIHJvb3RDb250ZW50c0xheWVyIHsgbnVsbHB0ciB9OworICAgIH07CisgICAgdmly
dHVhbCB2b2lkIHNldE5vZGVMYXllcnMoU2Nyb2xsaW5nTm9kZUlELCBjb25zdCBOb2RlTGF5ZXJz
JikgeyB9CiAKICAgICBzdHJ1Y3QgU2Nyb2xsaW5nR2VvbWV0cnkgewogICAgICAgICBMYXlvdXRS
ZWN0IHBhcmVudFJlbGF0aXZlU2Nyb2xsYWJsZVJlY3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHAJKHJldmlzaW9u
IDI0MDg1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
Tm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgU2Nyb2xsaW5nU3RhdGVO
b2RlOjpTY3JvbGxpbmdTdGF0ZU5vZGUoYwogICAgICwgbV9jaGFuZ2VkUHJvcGVydGllcyhzdGF0
ZU5vZGUuY2hhbmdlZFByb3BlcnRpZXMoKSkKICAgICAsIG1fc2Nyb2xsaW5nU3RhdGVUcmVlKGFk
b3B0aXZlVHJlZSkKIHsKLSAgICBpZiAoaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbExheWVyKSkK
KyAgICBpZiAoaGFzQ2hhbmdlZFByb3BlcnR5KExheWVyKSkKICAgICAgICAgc2V0TGF5ZXIoc3Rh
dGVOb2RlLmxheWVyKCkudG9SZXByZXNlbnRhdGlvbihhZG9wdGl2ZVRyZWUucHJlZmVycmVkTGF5
ZXJSZXByZXNlbnRhdGlvbigpKSk7CiAgICAgc2Nyb2xsaW5nU3RhdGVUcmVlKCkuYWRkTm9kZSgq
dGhpcyk7CiB9CkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjpzZXRQ
cm9wZXJ0eUNoYW4KIAogdm9pZCBTY3JvbGxpbmdTdGF0ZU5vZGU6OnNldEFsbFByb3BlcnRpZXND
aGFuZ2VkKCkKIHsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoU2Nyb2xsTGF5ZXIpOworICAg
IHNldFByb3BlcnR5Q2hhbmdlZEJpdChMYXllcik7CiAgICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0
KENoaWxkTm9kZXMpOwogICAgIG1fc2Nyb2xsaW5nU3RhdGVUcmVlLnNldEhhc0NoYW5nZWRQcm9w
ZXJ0aWVzKCk7CiB9CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZU5vZGU6
OnNldExheWVyKGNvbnN0IAogICAgIAogICAgIG1fbGF5ZXIgPSBsYXllclJlcHJlc2VudGF0aW9u
OwogCi0gICAgc2V0UHJvcGVydHlDaGFuZ2VkKFNjcm9sbExheWVyKTsKKyAgICBzZXRQcm9wZXJ0
eUNoYW5nZWQoTGF5ZXIpOwogfQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlTm9kZTo6ZHVtcFByb3Bl
cnRpZXMoVGV4dFN0cmVhbSYgdHMsIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9yIGJl
aGF2aW9yKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nU3RhdGVOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmgJKHJldmlzaW9uIDI0MDg1NSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDksNyArMjA5LDcgQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6IHVzaW5nIGFuIE9wdGlv
blNldDw+IGZvciB0aGVzZSBhbmQgZGVyaXZlZCBjbGFzcyBiaXRzIHdvdWxkIHNpbXBsaWZ5IGNv
ZGUuCiAgICAgZW51bSB7Ci0gICAgICAgIFNjcm9sbExheWVyID0gMCwKKyAgICAgICAgTGF5ZXIg
PSAwLAogICAgICAgICBDaGlsZE5vZGVzLAogICAgICAgICBOdW1TdGF0ZU5vZGVCaXRzIC8vIFRo
aXMgbXVzdCByZW1haW4gYXQgdGhlIGxhc3QgcG9zaXRpb24uCiAgICAgfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmNwcAkocmV2aXNpb24gMjQwODU1KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTQsNiArNTQsOCBAQCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9s
bGluZ1N0CiAgICAgLCBtX3JlcXVlc3RlZFNjcm9sbFBvc2l0aW9uUmVwcmVzZW50c1Byb2dyYW1t
YXRpY1Njcm9sbChzdGF0ZU5vZGUucmVxdWVzdGVkU2Nyb2xsUG9zaXRpb25SZXByZXNlbnRzUHJv
Z3JhbW1hdGljU2Nyb2xsKCkpCiAgICAgLCBtX2V4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIo
c3RhdGVOb2RlLmV4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIoKSkKIHsKKyAgICBpZiAoaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbENvbnRhaW5lckxheWVyKSkKKyAgICAgICAgc2V0U2Nyb2xs
Q29udGFpbmVyTGF5ZXIoc3RhdGVOb2RlLnNjcm9sbENvbnRhaW5lckxheWVyKCkudG9SZXByZXNl
bnRhdGlvbihhZG9wdGl2ZVRyZWUucHJlZmVycmVkTGF5ZXJSZXByZXNlbnRhdGlvbigpKSk7CiAg
ICAgaWYgKGhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxlZENvbnRlbnRzTGF5ZXIpKQogICAgICAg
ICBzZXRTY3JvbGxlZENvbnRlbnRzTGF5ZXIoc3RhdGVOb2RlLnNjcm9sbGVkQ29udGVudHNMYXll
cigpLnRvUmVwcmVzZW50YXRpb24oYWRvcHRpdmVUcmVlLnByZWZlcnJlZExheWVyUmVwcmVzZW50
YXRpb24oKSkpOwogfQpAQCAtNzksNiArODEsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6c2V0QWxsCiAgICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KEN1cnJlbnRWZXJ0aWNh
bFNuYXBPZmZzZXRJbmRleCk7CiAjZW5kaWYKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoRXhw
ZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlcik7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KFNj
cm9sbENvbnRhaW5lckxheWVyKTsKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoU2Nyb2xsZWRD
b250ZW50c0xheWVyKTsKIAogICAgIFNjcm9sbGluZ1N0YXRlTm9kZTo6c2V0QWxsUHJvcGVydGll
c0NoYW5nZWQoKTsKQEAgLTIxOSw2ICsyMjIsMTUgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU6OnNldEV4cAogICAgIHNldFByb3BlcnR5Q2hhbmdlZChFeHBlY3RzV2hlZWxFdmVu
dFRlc3RUcmlnZ2VyKTsKIH0KIAordm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNl
dFNjcm9sbENvbnRhaW5lckxheWVyKGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24mIGxheWVyUmVw
cmVzZW50YXRpb24pCit7CisgICAgaWYgKGxheWVyUmVwcmVzZW50YXRpb24gPT0gbV9zY3JvbGxD
b250YWluZXJMYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zY3JvbGxDb250YWluZXJM
YXllciA9IGxheWVyUmVwcmVzZW50YXRpb247CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFNjcm9s
bENvbnRhaW5lckxheWVyKTsKK30KKwogdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6
OnNldFNjcm9sbGVkQ29udGVudHNMYXllcihjb25zdCBMYXllclJlcHJlc2VudGF0aW9uJiBsYXll
clJlcHJlc2VudGF0aW9uKQogewogICAgIGlmIChsYXllclJlcHJlc2VudGF0aW9uID09IG1fc2Ny
b2xsZWRDb250ZW50c0xheWVyKQpAQCAtMjkwLDggKzMwMiwxMiBAQCB2b2lkIFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZTo6ZHVtcFByCiAgICAgaWYgKG1fZXhwZWN0c1doZWVsRXZlbnRUZXN0
VHJpZ2dlcikKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJleHBlY3RzIHdoZWVsIGV2ZW50IHRl
c3QgdHJpZ2dlciIsIG1fZXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlcik7CiAKLSAgICBpZiAo
KGJlaGF2aW9yICYgU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3JJbmNsdWRlTGF5ZXJJ
RHMpICYmIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyLmxheWVySUQoKSkKLSAgICAgICAgdHMuZHVt
cFByb3BlcnR5KCJzY3JvbGxlZCBjb250ZW50cyBsYXllciIsIG1fc2Nyb2xsZWRDb250ZW50c0xh
eWVyLmxheWVySUQoKSk7CisgICAgaWYgKGJlaGF2aW9yICYgU2Nyb2xsaW5nU3RhdGVUcmVlQXNU
ZXh0QmVoYXZpb3JJbmNsdWRlTGF5ZXJJRHMpIHsKKyAgICAgICAgaWYgKG1fc2Nyb2xsQ29udGFp
bmVyTGF5ZXIubGF5ZXJJRCgpKQorICAgICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzY3JvbGwg
Y29udGFpbmVyIGxheWVyIiwgbV9zY3JvbGxDb250YWluZXJMYXllci5sYXllcklEKCkpOworICAg
ICAgICBpZiAobV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIubGF5ZXJJRCgpKQorICAgICAgICAgICAg
dHMuZHVtcFByb3BlcnR5KCJzY3JvbGxlZCBjb250ZW50cyBsYXllciIsIG1fc2Nyb2xsZWRDb250
ZW50c0xheWVyLmxheWVySUQoKSk7CisgICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaAkocmV2aXNpb24gMjQwODU1KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAgcHVibGljOgogICAgICAgICBDdXJyZW50VmVy
dGljYWxTbmFwT2Zmc2V0SW5kZXgsCiAjZW5kaWYKICAgICAgICAgRXhwZWN0c1doZWVsRXZlbnRU
ZXN0VHJpZ2dlciwKKyAgICAgICAgU2Nyb2xsQ29udGFpbmVyTGF5ZXIsCiAgICAgICAgIFNjcm9s
bGVkQ29udGVudHNMYXllciwKICAgICAgICAgTnVtU2Nyb2xsaW5nU3RhdGVOb2RlQml0cyAvLyBU
aGlzIG11c3QgcmVtYWluIGF0IHRoZSBsYXN0IHBvc2l0aW9uLgogICAgIH07CkBAIC0xMDgsNiAr
MTA5LDkgQEAgcHVibGljOgogICAgIGJvb2wgZXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlcigp
IGNvbnN0IHsgcmV0dXJuIG1fZXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlcjsgfQogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0RXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlcihib29sKTsK
IAorICAgIGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24mIHNjcm9sbENvbnRhaW5lckxheWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9zY3JvbGxDb250YWluZXJMYXllcjsgfQorICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0U2Nyb2xsQ29udGFpbmVyTGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlv
biYpOworCiAgICAgLy8gVGhpcyBpcyBhIGxheWVyIHdpdGggdGhlIGNvbnRlbnRzIHRoYXQgbW92
ZS4KICAgICBjb25zdCBMYXllclJlcHJlc2VudGF0aW9uJiBzY3JvbGxlZENvbnRlbnRzTGF5ZXIo
KSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGVkQ29udGVudHNMYXllcjsgfQogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0U2Nyb2xsZWRDb250ZW50c0xheWVyKGNvbnN0IExheWVyUmVwcmVzZW50
YXRpb24mKTsKQEAgLTEzNCw2ICsxMzgsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fY3Vy
cmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXggeyAwIH07CiAjZW5kaWYKICAgICBTY3JvbGxhYmxl
QXJlYVBhcmFtZXRlcnMgbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM7CisgICAgTGF5ZXJSZXBy
ZXNlbnRhdGlvbiBtX3Njcm9sbENvbnRhaW5lckxheWVyOwogICAgIExheWVyUmVwcmVzZW50YXRp
b24gbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXI7CiAgICAgYm9vbCBtX3JlcXVlc3RlZFNjcm9sbFBv
c2l0aW9uUmVwcmVzZW50c1Byb2dyYW1tYXRpY1Njcm9sbCB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X2V4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAJKHJldmlzaW9uIDI0
MDg1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsMTIgKzE1NCwxMiBAQCB2b2lkIFNjcm9sbGluZ1RyZWU6
OmNvbW1pdFRyZWVTdGF0ZShzdGQ6CiAgICAgaWYgKHJvb3ROb2RlCiAgICAgICAgICYmIChyb290
U3RhdGVOb2RlQ2hhbmdlZAogICAgICAgICAgICAgfHwgcm9vdE5vZGUtPmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6RXZlbnRUcmFja2luZ1JlZ2lv
bikKLSAgICAgICAgICAgIHx8IHJvb3ROb2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5n
U3RhdGVOb2RlOjpTY3JvbGxMYXllcikKKyAgICAgICAgICAgIHx8IHJvb3ROb2RlLT5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxlZENvbnRlbnRz
TGF5ZXIpCiAgICAgICAgICAgICB8fCByb290Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpWaXN1YWxWaWV3cG9ydEVuYWJsZWQpCiAgICAg
ICAgICAgICB8fCByb290Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJh
bWVTY3JvbGxpbmdOb2RlOjpBc3luY0ZyYW1lT3JPdmVyZmxvd1Njcm9sbGluZ0VuYWJsZWQpKSkg
ewogICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CiAKLSAgICAgICAgaWYgKHJvb3RT
dGF0ZU5vZGVDaGFuZ2VkIHx8IHJvb3ROb2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5n
U3RhdGVOb2RlOjpTY3JvbGxMYXllcikpCisgICAgICAgIGlmIChyb290U3RhdGVOb2RlQ2hhbmdl
ZCB8fCByb290Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKSkKICAgICAgICAgICAgIG1fbWFpbkZyYW1lU2Ny
b2xsUG9zaXRpb24gPSBGbG9hdFBvaW50KCk7CiAKICAgICAgICAgaWYgKHJvb3RTdGF0ZU5vZGVD
aGFuZ2VkIHx8IHJvb3ROb2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFt
ZVNjcm9sbGluZ05vZGU6OkV2ZW50VHJhY2tpbmdSZWdpb24pKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlLmNwcAkocmV2aXNpb24gMjQwODU1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
Niw2ICs5NiwxNCBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpjb21taXRTCiAK
ICAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZTo6RXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlcikpCiAgICAgICAgIG1fZXhwZWN0c1do
ZWVsRXZlbnRUZXN0VHJpZ2dlciA9IHN0YXRlLmV4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIo
KTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxDb250YWluZXJMYXllcikpCisg
ICAgICAgIG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXIgPSBzdGF0ZS5zY3JvbGxDb250YWluZXJMYXll
cigpOworCisgICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU6OlNjcm9sbGVkQ29udGVudHNMYXllcikpCisgICAgICAgIG1fc2Nyb2xsZWRD
b250ZW50c0xheWVyID0gc3RhdGUuc2Nyb2xsZWRDb250ZW50c0xheWVyKCk7CisjZW5kaWYKIH0K
IAogdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6Y29tbWl0U3RhdGVBZnRlckNoaWxk
cmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYgc3RhdGVOb2RlKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZS5oCShyZXZpc2lvbiAyNDA4NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEs
NiArMTExLDExIEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgZXhwZWN0c1doZWVsRXZlbnRUZXN0
VHJpZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fZXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlcjsg
fQogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgQ0FMYXllciAqc2Nyb2xsQ29udGFpbmVyTGF5
ZXIoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbENvbnRhaW5lckxheWVyLmdldCgpOyB9CisgICAg
Q0FMYXllciAqc2Nyb2xsZWRDb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxl
ZENvbnRlbnRzTGF5ZXIuZ2V0KCk7IH0KKyNlbmRpZgorCiAgICAgV0VCQ09SRV9FWFBPUlQgTGF5
b3V0UG9pbnQgcGFyZW50VG9Mb2NhbFBvaW50KExheW91dFBvaW50KSBjb25zdCBvdmVycmlkZTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBMYXlvdXRQb2ludCBsb2NhbFRvQ29udGVudHNQb2ludChMYXlv
dXRQb2ludCkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTEzMSw2ICsxMzYsMTEgQEAgcHJpdmF0ZToK
ICNlbmRpZgogICAgIFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyBtX3Njcm9sbGFibGVBcmVhUGFy
YW1ldGVyczsKICAgICBib29sIG1fZXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlciB7IGZhbHNl
IH07CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9zY3Jv
bGxDb250YWluZXJMYXllcjsKKyAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9zY3JvbGxlZENvbnRl
bnRzTGF5ZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlSU9TLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
aW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1MuaAkocmV2aXNpb24gMjQwODU1
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVJT1MuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsMTIgKzYxLDkgQEAgcHJv
dGVjdGVkOgogICAgIEZsb2F0UG9pbnQgbWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgRmxvYXRQb2ludCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIENBTGF5ZXIgKnNjcm9sbExheWVyKCkgY29uc3Q7Ci0KIHByaXZhdGU6CiAg
ICAgdm9pZCB1cGRhdGVDaGlsZE5vZGVzQWZ0ZXJTY3JvbGwoY29uc3QgRmxvYXRQb2ludCYpOwog
Ci0gICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fc2Nyb2xsTGF5ZXI7CiAgICAgUmV0YWluUHRyPENB
TGF5ZXI+IG1fY291bnRlclNjcm9sbGluZ0xheWVyOwogICAgIFJldGFpblB0cjxDQUxheWVyPiBt
X2hlYWRlckxheWVyOwogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX2Zvb3RlckxheWVyOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1MubW0JKHJldmlzaW9u
IDI0MDg1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01OSw5ICs1OSw2
IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUzoKICAgICAKICAgICBj
b25zdCBhdXRvJiBzY3JvbGxpbmdTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZUZy
YW1lU2Nyb2xsaW5nTm9kZT4oc3RhdGVOb2RlKTsKIAotICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6U2Nyb2xsTGF5ZXIpKQot
ICAgICAgICBtX3Njcm9sbExheWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmxheWVyKCk7Ci0KICAg
ICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Q291bnRlclNjcm9sbGluZ0xheWVyKSkKICAgICAgICAgbV9j
b3VudGVyU2Nyb2xsaW5nTGF5ZXIgPSBzY3JvbGxpbmdTdGF0ZU5vZGUuY291bnRlclNjcm9sbGlu
Z0xheWVyKCk7CiAKQEAgLTc4LDcgKzc1LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlSU9TOgogICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpSZXF1ZXN0ZWRTY3JvbGxQ
b3NpdGlvbikpCiAgICAgICAgICAgICAgICAgbV9wcm9iYWJsZU1haW5UaHJlYWRTY3JvbGxQb3Np
dGlvbiA9IHNjcm9sbGluZ1N0YXRlTm9kZS5yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbigpOwogICAg
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQ0dQb2ludCBzY3JvbGxMYXllclBvc2l0
aW9uID0gbV9zY3JvbGxMYXllci5nZXQoKS5wb3NpdGlvbjsKKyAgICAgICAgICAgICAgICBDR1Bv
aW50IHNjcm9sbExheWVyUG9zaXRpb24gPSBzY3JvbGxlZENvbnRlbnRzTGF5ZXIoKS5wb3NpdGlv
bjsKICAgICAgICAgICAgICAgICBtX3Byb2JhYmxlTWFpblRocmVhZFNjcm9sbFBvc2l0aW9uID0g
SW50UG9pbnQoLXNjcm9sbExheWVyUG9zaXRpb24ueCwgLXNjcm9sbExheWVyUG9zaXRpb24ueSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTEwNiw3ICsxMDMsNyBAQCBGbG9hdFBvaW50
IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vCiAgICAgaWYgKHNob3VsZFVwZGF0ZVNjcm9s
bExheWVyUG9zaXRpb25TeW5jaHJvbm91c2x5KCkpCiAgICAgICAgIHJldHVybiBtX3Byb2JhYmxl
TWFpblRocmVhZFNjcm9sbFBvc2l0aW9uOwogCi0gICAgcmV0dXJuIC1tX3Njcm9sbExheWVyLmdl
dCgpLnBvc2l0aW9uOworICAgIHJldHVybiAtc2Nyb2xsZWRDb250ZW50c0xheWVyKCkucG9zaXRp
b247CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUzo6c2V0U2Ny
b2xsUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCkBAIC0xMzAsNyAr
MTI3LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOgogdm9pZCBT
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjpzZXRTY3JvbGxMYXllclBvc2l0aW9u
KGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBjb25zdCBGbG9hdFJlY3QmKQogewog
ICAgIEFTU0VSVCghc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvblN5bmNocm9ub3VzbHko
KSk7Ci0gICAgW21fc2Nyb2xsTGF5ZXIgc2V0UG9zaXRpb246LXNjcm9sbFBvc2l0aW9uXTsKKyAg
ICBbc2Nyb2xsZWRDb250ZW50c0xheWVyKCkgc2V0UG9zaXRpb246LXNjcm9sbFBvc2l0aW9uXTsK
IAogICAgIHVwZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9sbChzY3JvbGxQb3NpdGlvbik7CiB9CkBA
IC0yMjAsMTEgKzIxNyw2IEBAIEZsb2F0UG9pbnQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm8KICAgICByZXR1cm4gcG9zaXRpb247CiB9CiAKLUNBTGF5ZXIgKlNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVJT1M6OnNjcm9sbExheWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9z
Y3JvbGxMYXllci5nZXQoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRml4ZWROb2Rl
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlRml4ZWROb2RlLm1tCShyZXZpc2lvbiAyNDA4NTUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbQkod29ya2luZyBj
b3B5KQpAQCAtNTYsNyArNTYsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6OmNvbW1p
dFN0YXRlCiB7CiAgICAgY29uc3QgU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUmIGZpeGVkU3RhdGVO
b2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGU+KHN0YXRlTm9kZSk7CiAKLSAg
ICBpZiAoZml4ZWRTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9k
ZTo6U2Nyb2xsTGF5ZXIpKQorICAgIGlmIChmaXhlZFN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpMYXllcikpCiAgICAgICAgIG1fbGF5ZXIgPSBmaXhlZFN0
YXRlTm9kZS5sYXllcigpOwogCiAgICAgaWYgKHN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGU6OlZpZXdwb3J0Q29uc3RyYWludHMpKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5oCShyZXZpc2lvbiAyNDA4NTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZU1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw2IEBAIHByb3Rl
Y3RlZDoKICAgICB1bnNpZ25lZCBleHBvc2VkVW5maWxsZWRBcmVhKCkgY29uc3Q7CiAKIHByaXZh
dGU6Ci0gICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fc2Nyb2xsTGF5ZXI7CiAgICAgUmV0YWluUHRy
PENBTGF5ZXI+IG1fcm9vdENvbnRlbnRzTGF5ZXI7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1f
Y291bnRlclNjcm9sbGluZ0xheWVyOwogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX2luc2V0Q2xp
cExheWVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMu
bW0JKHJldmlzaW9uIDI0MDg1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDAsOSArMTAwLDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFj
OgogICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU6OmNvbW1pdFN0YXRlQmVmb3Jl
Q2hpbGRyZW4oc3RhdGVOb2RlKTsKICAgICBjb25zdCBhdXRvJiBzY3JvbGxpbmdTdGF0ZU5vZGUg
PSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4oc3RhdGVOb2RlKTsK
IAotICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlTm9kZTo6U2Nyb2xsTGF5ZXIpKQotICAgICAgICBtX3Njcm9sbExheWVyID0gc2Nyb2xs
aW5nU3RhdGVOb2RlLmxheWVyKCk7Ci0KICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Um9vdENvbnRl
bnRzTGF5ZXIpKQogICAgICAgICBtX3Jvb3RDb250ZW50c0xheWVyID0gc2Nyb2xsaW5nU3RhdGVO
b2RlLnJvb3RDb250ZW50c0xheWVyKCk7CiAKQEAgLTEzNSw3ICsxMzIsNyBAQCB2b2lkIFNjcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6CiAgICAgICAgICAgICBpZiAoc2Nyb2xsaW5n
U3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6
OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKSkKICAgICAgICAgICAgICAgICBtX3Byb2JhYmxlTWFp
blRocmVhZFNjcm9sbFBvc2l0aW9uID0gc2Nyb2xsaW5nU3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9s
bFBvc2l0aW9uKCk7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBDR1BvaW50
IHNjcm9sbExheWVyUG9zaXRpb24gPSBtX3Njcm9sbExheWVyLmdldCgpLnBvc2l0aW9uOworICAg
ICAgICAgICAgICAgIENHUG9pbnQgc2Nyb2xsTGF5ZXJQb3NpdGlvbiA9IHNjcm9sbGVkQ29udGVu
dHNMYXllcigpLnBvc2l0aW9uOwogICAgICAgICAgICAgICAgIG1fcHJvYmFibGVNYWluVGhyZWFk
U2Nyb2xsUG9zaXRpb24gPSBGbG9hdFBvaW50KC1zY3JvbGxMYXllclBvc2l0aW9uLngsIC1zY3Jv
bGxMYXllclBvc2l0aW9uLnkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNzMsNyAr
MTcwLDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOgogICAgIGlm
IChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6UmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24pKQogICAgICAgICBzZXRTY3JvbGxQ
b3NpdGlvbihzY3JvbGxpbmdTdGF0ZU5vZGUucmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24oKSk7CiAK
LSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdT
dGF0ZU5vZGU6OlNjcm9sbExheWVyKQorICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hh
bmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50
c0xheWVyKQogICAgICAgICB8fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6VG90YWxDb250ZW50c1NpemUpCiAgICAgICAg
IHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlOjpTY3JvbGxhYmxlQXJlYVNpemUpKQogICAgICAgICB1cGRhdGVNYWluRnJh
bWVQaW5TdGF0ZShzY3JvbGxQb3NpdGlvbigpKTsKQEAgLTIyMSw3ICsyMTgsNyBAQCBGbG9hdFBv
aW50IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vCiAgICAgaWYgKHNob3VsZFVwZGF0ZVNj
cm9sbExheWVyUG9zaXRpb25TeW5jaHJvbm91c2x5KCkpCiAgICAgICAgIHJldHVybiBtX3Byb2Jh
YmxlTWFpblRocmVhZFNjcm9sbFBvc2l0aW9uOwogCi0gICAgcmV0dXJuIC1tX3Njcm9sbExheWVy
LmdldCgpLnBvc2l0aW9uOworICAgIHJldHVybiAtc2Nyb2xsZWRDb250ZW50c0xheWVyKCkucG9z
aXRpb247CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6c2V0
U2Nyb2xsUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCkBAIC0yNjks
NyArMjY2LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOgogewog
ICAgIEFTU0VSVCghc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvblN5bmNocm9ub3VzbHko
KSk7CiAKLSAgICBtX3Njcm9sbExheWVyLmdldCgpLnBvc2l0aW9uID0gLXBvc2l0aW9uOworICAg
IHNjcm9sbGVkQ29udGVudHNMYXllcigpLnBvc2l0aW9uID0gLXBvc2l0aW9uOwogCiAgICAgRmxv
YXRSZWN0IHZpc2libGVDb250ZW50UmVjdChwb3NpdGlvbiwgc2Nyb2xsYWJsZUFyZWFTaXplKCkp
OwogICAgIEZsb2F0UmVjdCBmaXhlZFBvc2l0aW9uUmVjdDsKQEAgLTM4NCw3ICszODEsNyBAQCB1
bnNpZ25lZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlCiAgICAgUmVnaW9uIHBhaW50
ZWRWaXNpYmxlVGlsZXM7CiAKICAgICBEZXF1ZTxDQUxheWVyKj4gbGF5ZXJRdWV1ZTsKLSAgICBs
YXllclF1ZXVlLmFwcGVuZChtX3Njcm9sbExheWVyLmdldCgpKTsKKyAgICBsYXllclF1ZXVlLmFw
cGVuZChzY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSk7CiAgICAgUGxhdGZvcm1MYXllckxpc3QgdGls
ZXM7CiAKICAgICB3aGlsZSAoIWxheWVyUXVldWUuaXNFbXB0eSgpICYmIHRpbGVzLmlzRW1wdHko
KSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU1h
Yy5oCShyZXZpc2lvbiAyNDA4NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU1hYy5oCSh3b3JraW5nIGNvcHkp
CkBAIC01OCwxMSArNTgsNiBAQCBwcml2YXRlOgogCiAgICAgU2Nyb2xsaW5nRXZlbnRSZXN1bHQg
aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBvdmVycmlkZTsKIAot
Ci0gICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fc2Nyb2xsTGF5ZXI7Ci0gICAgUmV0YWluUHRyPENB
TGF5ZXI+IG1fc2Nyb2xsZWRDb250ZW50c0xheWVyOwotCi0KICAgICBTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTWFjIG1fZGVsZWdhdGU7CiAKIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMv
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU1hYy5tbQkocmV2aXNpb24gMjQwODU1
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTU0LDEzICs1NCw3IEBA
IHZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU0KIHsKICAgICBTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKHN0
YXRlTm9kZSk7CiAgICAgY29uc3QgYXV0byYgc2Nyb2xsaW5nU3RhdGVOb2RlID0gZG93bmNhc3Q8
U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU+KHN0YXRlTm9kZSk7Ci0KLSAgICBp
ZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5v
ZGU6OlNjcm9sbExheWVyKSkKLSAgICAgICAgbV9zY3JvbGxMYXllciA9IHNjcm9sbGluZ1N0YXRl
Tm9kZS5sYXllcigpOwotCi0gICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIp
KQotICAgICAgICBtX3Njcm9sbGVkQ29udGVudHNMYXllciA9IHNjcm9sbGluZ1N0YXRlTm9kZS5z
Y3JvbGxlZENvbnRlbnRzTGF5ZXIoKTsKLQorICAgIFVOVVNFRF9QQVJBTShzY3JvbGxpbmdTdGF0
ZU5vZGUpOwogICAgIC8vIEZJWE1FOiBTY3JvbGwgc25hcCBkYXRhLgogfQogCkBAIC0xMDgsNyAr
MTAyLDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTQogCiBGbG9h
dFBvaW50IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWM6OnNjcm9sbFBvc2l0
aW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gLW1fc2Nyb2xsZWRDb250ZW50c0xheWVyLmdldCgp
LnBvc2l0aW9uOworICAgIHJldHVybiAtc2Nyb2xsZWRDb250ZW50c0xheWVyKCkucG9zaXRpb247
CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU1hYzo6c2V0U2Ny
b2xsUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCkBAIC0xMzAsNyAr
MTI0LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTQogCiB2b2lk
IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWM6OnNldFNjcm9sbExheWVyUG9z
aXRpb24oY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGNvbnN0IEZsb2F0UmVjdCYg
Zml4ZWRQb3NpdGlvblJlY3QpCiB7Ci0gICAgbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIuZ2V0KCku
cG9zaXRpb24gPSAtc2Nyb2xsUG9zaXRpb247CisgICAgc2Nyb2xsZWRDb250ZW50c0xheWVyKCku
cG9zaXRpb24gPSAtc2Nyb2xsUG9zaXRpb247CiAgICAgaWYgKCFtX2NoaWxkcmVuKQogICAgICAg
ICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlU3RpY2t5Tm9kZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUubW0JKHJldmlzaW9uIDI0MDg1
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU3Rp
Y2t5Tm9kZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCB2b2lkIFNjcm9sbGlu
Z1RyZWVTdGlja3lOb2RlOjpjb21taXRTdGF0CiB7CiAgICAgY29uc3QgU2Nyb2xsaW5nU3RhdGVT
dGlja3lOb2RlJiBzdGlja3lTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZVN0aWNr
eU5vZGU+KHN0YXRlTm9kZSk7CiAKLSAgICBpZiAoc3RpY2t5U3RhdGVOb2RlLmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlNjcm9sbExheWVyKSkKKyAgICBpZiAoc3RpY2t5
U3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OkxheWVyKSkK
ICAgICAgICAgbV9sYXllciA9IHN0aWNreVN0YXRlTm9kZS5sYXllcigpOwogCiAgICAgaWYgKHN0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlOjpWaWV3
cG9ydENvbnN0cmFpbnRzKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCShyZXZpc2lvbiAyNDA4NTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTQ0LDE5ICs1NDQsMjIgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmRpZENo
YW5nZVBsYQogCiAgICAgYXV0byogYmFja2luZyA9IGxheWVyLmJhY2tpbmcoKTsKICAgICBpZiAo
YXV0byBub2RlSUQgPSBiYWNraW5nLT5zY3JvbGxpbmdOb2RlSURGb3JSb2xlKFNjcm9sbENvb3Jk
aW5hdGlvblJvbGU6OlZpZXdwb3J0Q29uc3RyYWluZWQpKQotICAgICAgICBzY3JvbGxpbmdDb29y
ZGluYXRvci0+c2V0Tm9kZUxheWVycyhub2RlSUQsIGJhY2tpbmctPmdyYXBoaWNzTGF5ZXIoKSk7
CisgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXROb2RlTGF5ZXJzKG5vZGVJRCwgeyBi
YWNraW5nLT5ncmFwaGljc0xheWVyKCkgfSk7CiAKICAgICBpZiAoYXV0byBub2RlSUQgPSBiYWNr
aW5nLT5zY3JvbGxpbmdOb2RlSURGb3JSb2xlKFNjcm9sbENvb3JkaW5hdGlvblJvbGU6OlNjcm9s
bGluZykpIHsKICAgICAgICAgLy8gRklYTUU6IHdvdWxkIGJlIG5pY2UgdG8gbm90IGhhdmUgdG8g
c3BlY2lhbC1jYXNlIHRoZSByb290LgorICAgICAgICBTY3JvbGxpbmdDb29yZGluYXRvcjo6Tm9k
ZUxheWVycyBub2RlTGF5ZXJzOwogICAgICAgICBpZiAobGF5ZXIuaXNSZW5kZXJWaWV3TGF5ZXIo
KSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFJlb3JnYW5pemUgdGhlIGxheWVycyBhbmQgcGFz
cyB0aGUgc2Nyb2xsZWRDb250ZW50c0xheWVyLgotICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRp
bmF0b3ItPnNldE5vZGVMYXllcnMobm9kZUlELCBtX3Njcm9sbExheWVyLmdldCgpLCBudWxscHRy
LCBmaXhlZFJvb3RCYWNrZ3JvdW5kTGF5ZXIoKSwgY2xpcExheWVyKCksIG1fcm9vdENvbnRlbnRz
TGF5ZXIuZ2V0KCkpOworICAgICAgICAgICAgLy8gRklYTUU6IFJlb3JnYW5pemUgdGhlIGxheWVy
cyBhbmQgcGFzcyB0aGUgc2Nyb2xsQ29udGFpbmVyTGF5ZXIuCisgICAgICAgICAgICBub2RlTGF5
ZXJzID0geyBudWxscHRyLCBudWxscHRyLCBtX3Njcm9sbExheWVyLmdldCgpLCBmaXhlZFJvb3RC
YWNrZ3JvdW5kTGF5ZXIoKSwgY2xpcExheWVyKCksIG1fcm9vdENvbnRlbnRzTGF5ZXIuZ2V0KCkg
fTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2V0
Tm9kZUxheWVycyhub2RlSUQsIGJhY2tpbmctPnNjcm9sbGluZ0xheWVyKCksIGJhY2tpbmctPnNj
cm9sbGluZ0NvbnRlbnRzTGF5ZXIoKSk7CisgICAgICAgICAgICBub2RlTGF5ZXJzID0geyBsYXll
ci5iYWNraW5nKCktPmdyYXBoaWNzTGF5ZXIoKSwgYmFja2luZy0+c2Nyb2xsaW5nTGF5ZXIoKSwg
YmFja2luZy0+c2Nyb2xsaW5nQ29udGVudHNMYXllcigpIH07CisKKyAgICAgICAgc2Nyb2xsaW5n
Q29vcmRpbmF0b3ItPnNldE5vZGVMYXllcnMobm9kZUlELCBub2RlTGF5ZXJzKTsKICAgICB9CiAK
ICAgICBpZiAoYXV0byBub2RlSUQgPSBiYWNraW5nLT5zY3JvbGxpbmdOb2RlSURGb3JSb2xlKFNj
cm9sbENvb3JkaW5hdGlvblJvbGU6OkZyYW1lSG9zdGluZykpCi0gICAgICAgIHNjcm9sbGluZ0Nv
b3JkaW5hdG9yLT5zZXROb2RlTGF5ZXJzKG5vZGVJRCwgYmFja2luZy0+Z3JhcGhpY3NMYXllcigp
KTsKKyAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNldE5vZGVMYXllcnMobm9kZUlELCB7
IGJhY2tpbmctPmdyYXBoaWNzTGF5ZXIoKSB9KTsKIH0KIAogdm9pZCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OmRpZFBhaW50QmFja2luZyhSZW5kZXJMYXllckJhY2tpbmcqKQpAQCAtMzkwNSw3ICsz
OTA4LDcgQEAgU2Nyb2xsaW5nTm9kZUlEIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dQogICAgIExP
R19XSVRIX1NUUkVBTShDb21wb3NpdGluZywgc3RyZWFtIDw8ICJSZWdpc3RlcmluZyBWaWV3cG9y
dENvbnN0cmFpbmVkICIgPDwgbm9kZVR5cGUgPDwgIiBub2RlICIgPDwgbmV3Tm9kZUlEIDw8ICIg
KGxheWVyICIgPDwgbGF5ZXIuYmFja2luZygpLT5ncmFwaGljc0xheWVyKCktPnByaW1hcnlMYXll
cklEKCkgPDwgIikgYXMgY2hpbGQgb2YgIiA8PCB0cmVlU3RhdGUucGFyZW50Tm9kZUlELnZhbHVl
T3IoMCkpOwogCiAgICAgaWYgKGNoYW5nZXMgJiBTY3JvbGxpbmdOb2RlQ2hhbmdlRmxhZ3M6Okxh
eWVyKQotICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2V0Tm9kZUxheWVycyhuZXdOb2Rl
SUQsIGxheWVyLmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpKTsKKyAgICAgICAgc2Nyb2xsaW5n
Q29vcmRpbmF0b3ItPnNldE5vZGVMYXllcnMobmV3Tm9kZUlELCB7IGxheWVyLmJhY2tpbmcoKS0+
Z3JhcGhpY3NMYXllcigpIH0pOwogCiAgICAgaWYgKGNoYW5nZXMgJiBTY3JvbGxpbmdOb2RlQ2hh
bmdlRmxhZ3M6OkxheWVyR2VvbWV0cnkpIHsKICAgICAgICAgc3dpdGNoIChub2RlVHlwZSkgewpA
QCAtNDAwOSw3ICs0MDEyLDcgQEAgU2Nyb2xsaW5nTm9kZUlEIFJlbmRlckxheWVyQ29tcG9zaXRv
cjo6dQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGNoYW5nZXMgJiBTY3JvbGxpbmdOb2RlQ2hh
bmdlRmxhZ3M6OkxheWVyKQotICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNldE5v
ZGVMYXllcnMobmV3Tm9kZUlELCBtX3Njcm9sbExheWVyLmdldCgpLCBudWxscHRyLCBmaXhlZFJv
b3RCYWNrZ3JvdW5kTGF5ZXIoKSwgY2xpcExheWVyKCksIG1fcm9vdENvbnRlbnRzTGF5ZXIuZ2V0
KCkpOworICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNldE5vZGVMYXllcnMobmV3
Tm9kZUlELCB7IG51bGxwdHIsIG51bGxwdHIsIG1fc2Nyb2xsTGF5ZXIuZ2V0KCksIGZpeGVkUm9v
dEJhY2tncm91bmRMYXllcigpLCBjbGlwTGF5ZXIoKSwgbV9yb290Q29udGVudHNMYXllci5nZXQo
KSB9KTsKIAogICAgICAgICBpZiAoY2hhbmdlcyAmIFNjcm9sbGluZ05vZGVDaGFuZ2VGbGFnczo6
TGF5ZXJHZW9tZXRyeSkgewogICAgICAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OlNjcm9s
bGluZ0dlb21ldHJ5IHNjcm9sbGluZ0dlb21ldHJ5OwpAQCAtNDAyNCw3ICs0MDI3LDcgQEAgU2Ny
b2xsaW5nTm9kZUlEIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dQogICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICBpZiAoY2hhbmdlcyAmIFNjcm9sbGluZ05vZGVDaGFuZ2VGbGFnczo6TGF5ZXIp
Ci0gICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2V0Tm9kZUxheWVycyhuZXdOb2Rl
SUQsIGxheWVyLmJhY2tpbmcoKS0+c2Nyb2xsaW5nTGF5ZXIoKSwgbGF5ZXIuYmFja2luZygpLT5z
Y3JvbGxpbmdDb250ZW50c0xheWVyKCkpOworICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0
b3ItPnNldE5vZGVMYXllcnMobmV3Tm9kZUlELCB7IGxheWVyLmJhY2tpbmcoKS0+Z3JhcGhpY3NM
YXllcigpLCBsYXllci5iYWNraW5nKCktPnNjcm9sbGluZ0xheWVyKCksIGxheWVyLmJhY2tpbmco
KS0+c2Nyb2xsaW5nQ29udGVudHNMYXllcigpIH0pOwogCiAgICAgICAgIGlmIChjaGFuZ2VzICYg
U2Nyb2xsaW5nTm9kZUNoYW5nZUZsYWdzOjpMYXllckdlb21ldHJ5ICYmIHRyZWVTdGF0ZS5wYXJl
bnROb2RlSUQpIHsKICAgICAgICAgICAgIFJlbmRlckxheWVyKiBzY3JvbGxpbmdBbmNlc3Rvckxh
eWVyID0gbV9zY3JvbGxpbmdOb2RlVG9MYXllck1hcC5nZXQodHJlZVN0YXRlLnBhcmVudE5vZGVJ
RC52YWx1ZSgpKTsKQEAgLTQwNDgsNyArNDA1MSw3IEBAIFNjcm9sbGluZ05vZGVJRCBSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnUKICAgICB9CiAKICAgICBpZiAoY2hhbmdlcyAmIFNjcm9sbGluZ05v
ZGVDaGFuZ2VGbGFnczo6TGF5ZXIpCi0gICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXRO
b2RlTGF5ZXJzKG5ld05vZGVJRCwgbGF5ZXIuYmFja2luZygpLT5ncmFwaGljc0xheWVyKCkpOwor
ICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2V0Tm9kZUxheWVycyhuZXdOb2RlSUQsIHsg
bGF5ZXIuYmFja2luZygpLT5ncmFwaGljc0xheWVyKCkgfSk7CiAKICAgICBpZiAoY2hhbmdlcyAm
IFNjcm9sbGluZ05vZGVDaGFuZ2VGbGFnczo6TGF5ZXJHZW9tZXRyeSAmJiB0cmVlU3RhdGUucGFy
ZW50Tm9kZUlEKSB7CiAgICAgICAgIFJlbmRlckxheWVyKiBzY3JvbGxpbmdBbmNlc3RvckxheWVy
ID0gbV9zY3JvbGxpbmdOb2RlVG9MYXllck1hcC5nZXQodHJlZVN0YXRlLnBhcmVudE5vZGVJRC52
YWx1ZSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDA4NTUpCisrKyBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDE5LTAyLTAxICBB
bnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBEb24ndCB1c2UgYmFz
ZSBsYXllcigpIGFzIHRoZSBzY3JvbGwgbGF5ZXIgaW4gc2Nyb2xsaW5nIHRyZWUuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQxNjAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHA6CisgICAg
ICAgIChBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlTm9kZT46OmVuY29kZSk6CisgICAgICAg
IChBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlTm9kZT46OmRlY29kZSk6CisgICAgICAgIChB
cmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmVuY29kZSk6CisgICAg
ICAgIChBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmRlY29kZSk6
CisgICAgICAgIChXZWJLaXQ6OmR1bXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmNvbm5lY3RTdGF0ZU5vZGVMYXll
cnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yUHJveHk6OmNvbm5lY3RTdGF0ZU5vZGVMYXllcnMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVSZW1vdGVJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVSZW1vdGVJT1M6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGVJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVJT1M6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVJT1M6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4pOgorICAgICAgICAoV2Vi
S2l0OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpjb21taXRTdGF0ZUFm
dGVyQ2hpbGRyZW4pOgorCiAyMDE5LTAyLTAxICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnph
cm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbU09VUF0gSW1wcm92ZSB1c2Ugb2YgUEFMOjpTZXNz
aW9uSUQgaW4gV2ViS2l0Q29va2llTWFuYWdlcgpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gMjQwODU1KQor
KysgU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw3IEBA
IHZvaWQgQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZU5vZGU+OjoKICAgICBlbmNvZGVyIDw8
IG5vZGUucGFyZW50Tm9kZUlEKCk7CiAgICAgZW5jb2RlciA8PCBub2RlLmNoYW5nZWRQcm9wZXJ0
aWVzKCk7CiAgICAgCi0gICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0
YXRlTm9kZTo6U2Nyb2xsTGF5ZXIpKQorICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZU5vZGU6OkxheWVyKSkKICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2Fz
dDxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+KG5vZGUubGF5ZXIoKSk7CiB9CiAKQEAg
LTEwMiw3ICsxMDIsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVOb2RlPjo6
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG5vZGUuc2V0Q2hhbmdlZFByb3BlcnRpZXMo
Y2hhbmdlZFByb3BlcnRpZXMpOwotICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3Jv
bGxpbmdTdGF0ZU5vZGU6OlNjcm9sbExheWVyKSkgeworICAgIGlmIChub2RlLmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OkxheWVyKSkgewogICAgICAgICBHcmFwaGljc0xh
eWVyOjpQbGF0Zm9ybUxheWVySUQgbGF5ZXJJRDsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShsYXllcklEKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE0MSw2ICsxNDEsOCBA
QCB2b2lkIEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpCiAgICAgU0NST0xMSU5H
X05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVxdWVzdGVkU2Nyb2xs
UG9zaXRpb24sIHJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKQogICAgIFNDUk9MTElOR19OT0RFX0VO
Q09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9u
LCByZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvblJlcHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGwpCiAK
KyAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlOjpTY3JvbGxDb250YWluZXJMYXllcikpCisgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nh
c3Q8R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPihub2RlLnNjcm9sbENvbnRhaW5lckxh
eWVyKCkpOwogICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU6OlNjcm9sbGVkQ29udGVudHNMYXllcikpCiAgICAgICAgIGVuY29kZXIgPDwg
c3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPihub2RlLnNjcm9sbGVk
Q29udGVudHNMYXllcigpKTsKIH0KQEAgLTIzOCw2ICsyNDAsMTMgQEAgYm9vbCBBcmd1bWVudENv
ZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaQogICAgICAgICBub2RlLnNldFJlcXVlc3RlZFNjcm9s
bFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uLCByZXByZXNlbnRzUHJvZ3JhbW1hdGljU2Nyb2xsKTsK
ICAgICB9CiAKKyAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlOjpTY3JvbGxDb250YWluZXJMYXllcikpIHsKKyAgICAgICAgR3JhcGhpY3NM
YXllcjo6UGxhdGZvcm1MYXllcklEIGxheWVySUQ7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUobGF5ZXJJRCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIG5vZGUuc2V0
U2Nyb2xsQ29udGFpbmVyTGF5ZXIobGF5ZXJJRCk7CisgICAgfQorCiAgICAgaWYgKG5vZGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250
ZW50c0xheWVyKSkgewogICAgICAgICBHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgbGF5
ZXJJRDsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsYXllcklEKSkKQEAgLTUxNCw2ICs1
MjMsOSBAQCBzdGF0aWMgdm9pZCBkdW1wKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTCiAgICAgICAg
IHRzLmR1bXBQcm9wZXJ0eSgicmVxdWVzdGVkLXNjcm9sbC1wb3NpdGlvbi1pcy1wcm9ncmFtYXRp
YyIsIG5vZGUucmVxdWVzdGVkU2Nyb2xsUG9zaXRpb25SZXByZXNlbnRzUHJvZ3JhbW1hdGljU2Ny
b2xsKCkpOwogICAgIH0KIAorICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsQ29u
dGFpbmVyTGF5ZXIpKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNjcm9sbC1jb250YWluZXIt
bGF5ZXIiLCBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+KG5vZGUu
c2Nyb2xsQ29udGFpbmVyTGF5ZXIoKSkpOworCiAgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09u
bHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
OjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNjcm9s
bGVkLWNvbnRlbnRzLWxheWVyIiwgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1M
YXllcklEPihub2RlLnNjcm9sbGVkQ29udGVudHNMYXllcigpKSk7CiB9CkBAIC02MDEsNyArNjEz
LDcgQEAgc3RhdGljIHZvaWQgZHVtcChUZXh0U3RyZWFtJiB0cywgY29uc3QgUwogewogICAgIHRz
LmR1bXBQcm9wZXJ0eSgidHlwZSIsIG5vZGUubm9kZVR5cGUoKSk7CiAKLSAgICBpZiAoIWNoYW5n
ZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZU5vZGU6OlNjcm9sbExheWVyKSkKKyAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBu
b2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OkxheWVyKSkKICAgICAg
ICAgdHMuZHVtcFByb3BlcnR5KCJsYXllciIsIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXI6OlBs
YXRmb3JtTGF5ZXJJRD4obm9kZS5sYXllcigpKSk7CiAgICAgCiAgICAgc3dpdGNoIChub2RlLm5v
ZGVUeXBlKCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JQcm94eS5jcHAJKHJldmlzaW9uIDI0MDg1NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTksNyArOTksNyBAQCB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHk6OmNvCiB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmNv
bm5lY3RTdGF0ZU5vZGVMYXllcnMoU2Nyb2xsaW5nU3RhdGVUcmVlJiBzdGF0ZVRyZWUsIGNvbnN0
IFJlbW90ZUxheWVyVHJlZUhvc3QmIGxheWVyVHJlZUhvc3QpCiB7CiAgICAgZm9yIChhdXRvJiBj
dXJyTm9kZSA6IHN0YXRlVHJlZS5ub2RlTWFwKCkudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKGN1
cnJOb2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpTY3JvbGxMYXll
cikpCisgICAgICAgIGlmIChjdXJyTm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0
YXRlTm9kZTo6TGF5ZXIpKQogICAgICAgICAgICAgY3Vyck5vZGUtPnNldExheWVyKGxheWVyVHJl
ZUhvc3QubGF5ZXJGb3JJRChjdXJyTm9kZS0+bGF5ZXIoKSkpOwogCiAgICAgICAgIHN3aXRjaCAo
Y3Vyck5vZGUtPm5vZGVUeXBlKCkpIHsKQEAgLTEwNyw2ICsxMDcsOSBAQCB2b2lkIFJlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmNvCiAgICAgICAgIGNhc2UgU2Nyb2xsaW5nTm9kZVR5
cGU6OlN1YmZyYW1lOiB7CiAgICAgICAgICAgICBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5n
Tm9kZSYgc2Nyb2xsaW5nU3RhdGVOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVGcmFtZVNj
cm9sbGluZ05vZGU+KCpjdXJyTm9kZSk7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChz
Y3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKQorICAgICAgICAgICAgICAgIHNjcm9sbGlu
Z1N0YXRlTm9kZS5zZXRTY3JvbGxDb250YWluZXJMYXllcihsYXllclRyZWVIb3N0LmxheWVyRm9y
SUQoc2Nyb2xsaW5nU3RhdGVOb2RlLnNjcm9sbENvbnRhaW5lckxheWVyKCkpKTsKKwogICAgICAg
ICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpKQogICAgICAgICAgICAg
ICAgIHNjcm9sbGluZ1N0YXRlTm9kZS5zZXRTY3JvbGxlZENvbnRlbnRzTGF5ZXIobGF5ZXJUcmVl
SG9zdC5sYXllckZvcklEKHNjcm9sbGluZ1N0YXRlTm9kZS5zY3JvbGxlZENvbnRlbnRzTGF5ZXIo
KSkpOwogCkBAIC0xMzUsNiArMTM4LDggQEAgdm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clByb3h5OjpjbwogICAgICAgICB9CiAgICAgICAgIGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6Ok92
ZXJmbG93OiB7CiAgICAgICAgICAgICBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZSYgc2Nyb2xsaW5nU3RhdGVOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Nj
cm9sbGluZ05vZGU+KCpjdXJyTm9kZSk7CisgICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVO
b2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9s
bENvbnRhaW5lckxheWVyKSkKKyAgICAgICAgICAgICAgICBzY3JvbGxpbmdTdGF0ZU5vZGUuc2V0
U2Nyb2xsQ29udGFpbmVyTGF5ZXIobGF5ZXJUcmVlSG9zdC5sYXllckZvcklEKHNjcm9sbGluZ1N0
YXRlTm9kZS5zY3JvbGxDb250YWluZXJMYXllcigpKSk7CiAKICAgICAgICAgICAgIGlmIChzY3Jv
bGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKSkKICAgICAgICAgICAgICAgICBzY3JvbGxpbmdT
dGF0ZU5vZGUuc2V0U2Nyb2xsZWRDb250ZW50c0xheWVyKGxheWVyVHJlZUhvc3QubGF5ZXJGb3JJ
RChzY3JvbGxpbmdTdGF0ZU5vZGUuc2Nyb2xsZWRDb250ZW50c0xheWVyKCkpKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JQcm94eUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJ
T1MubW0JKHJldmlzaW9uIDI0MDg1NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbQkod29y
a2luZyBjb3B5KQpAQCAtNTAsMTMgKzUwLDE2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
dm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Ojpjb25uZWN0U3RhdGVOb2RlTGF5
ZXJzKFNjcm9sbGluZ1N0YXRlVHJlZSYgc3RhdGVUcmVlLCBjb25zdCBSZW1vdGVMYXllclRyZWVI
b3N0JiBsYXllclRyZWVIb3N0KQogewogICAgIGZvciAoYXV0byYgY3Vyck5vZGUgOiBzdGF0ZVRy
ZWUubm9kZU1hcCgpLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChjdXJyTm9kZS0+aGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6TGF5ZXIpKQorICAgICAgICAgICAgY3Vyck5v
ZGUtPnNldExheWVyKGxheWVyVHJlZUhvc3QubGF5ZXJGb3JJRChjdXJyTm9kZS0+bGF5ZXIoKSkp
OworICAgICAgICAKICAgICAgICAgc3dpdGNoIChjdXJyTm9kZS0+bm9kZVR5cGUoKSkgewogICAg
ICAgICBjYXNlIFNjcm9sbGluZ05vZGVUeXBlOjpPdmVyZmxvdzogewogICAgICAgICAgICAgU2Ny
b2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUmIHNjcm9sbGluZ1N0YXRlTm9kZSA9IGRv
d25jYXN0PFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlPigqY3Vyck5vZGUpOwot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5n
ZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlNjcm9sbExheWVyKSkKLSAgICAgICAgICAg
ICAgICBzY3JvbGxpbmdTdGF0ZU5vZGUuc2V0TGF5ZXIobGF5ZXJUcmVlSG9zdC5sYXllckZvcklE
KHNjcm9sbGluZ1N0YXRlTm9kZS5sYXllcigpKSk7Ci0gICAgICAgICAgICAKKworICAgICAgICAg
ICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxDb250YWluZXJMYXllcikpCisgICAgICAgICAgICAgICAg
c2Nyb2xsaW5nU3RhdGVOb2RlLnNldFNjcm9sbENvbnRhaW5lckxheWVyKGxheWVyVHJlZUhvc3Qu
bGF5ZXJGb3JJRChzY3JvbGxpbmdTdGF0ZU5vZGUuc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKSkpOwor
CiAgICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGVkQ29udGVudHNMYXllcikpCiAgICAg
ICAgICAgICAgICAgc2Nyb2xsaW5nU3RhdGVOb2RlLnNldFNjcm9sbGVkQ29udGVudHNMYXllcihs
YXllclRyZWVIb3N0LmxheWVyRm9ySUQoc2Nyb2xsaW5nU3RhdGVOb2RlLnNjcm9sbGVkQ29udGVu
dHNMYXllcigpKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTY0LDkgKzY3LDkgQEAgdm9pZCBS
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpjbwogICAgICAgICBjYXNlIFNjcm9sbGlu
Z05vZGVUeXBlOjpNYWluRnJhbWU6CiAgICAgICAgIGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6OlN1
YmZyYW1lOiB7CiAgICAgICAgICAgICBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZSYg
c2Nyb2xsaW5nU3RhdGVOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGlu
Z05vZGU+KCpjdXJyTm9kZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChzY3JvbGxp
bmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6U2Nyb2xs
TGF5ZXIpKQotICAgICAgICAgICAgICAgIHNjcm9sbGluZ1N0YXRlTm9kZS5zZXRMYXllcihsYXll
clRyZWVIb3N0LmxheWVyRm9ySUQoc2Nyb2xsaW5nU3RhdGVOb2RlLmxheWVyKCkpKTsKKworICAg
ICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxDb250YWluZXJMYXllcikpCisgICAgICAgICAg
ICAgICAgc2Nyb2xsaW5nU3RhdGVOb2RlLnNldFNjcm9sbENvbnRhaW5lckxheWVyKGxheWVyVHJl
ZUhvc3QubGF5ZXJGb3JJRChzY3JvbGxpbmdTdGF0ZU5vZGUuc2Nyb2xsQ29udGFpbmVyTGF5ZXIo
KSkpOwogCiAgICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGVkQ29udGVudHNMYXllcikp
CiAgICAgICAgICAgICAgICAgc2Nyb2xsaW5nU3RhdGVOb2RlLnNldFNjcm9sbGVkQ29udGVudHNM
YXllcihsYXllclRyZWVIb3N0LmxheWVyRm9ySUQoc2Nyb2xsaW5nU3RhdGVOb2RlLnNjcm9sbGVk
Q29udGVudHNMYXllcigpKSk7CkBAIC04NSw4ICs4OCw2IEBAIHZvaWQgUmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JQcm94eTo6Y28KICAgICAgICAgY2FzZSBTY3JvbGxpbmdOb2RlVHlwZTo6Rml4
ZWQ6CiAgICAgICAgIGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6OlN0aWNreToKICAgICAgICAgY2Fz
ZSBTY3JvbGxpbmdOb2RlVHlwZTo6RnJhbWVIb3N0aW5nOgotICAgICAgICAgICAgaWYgKGN1cnJO
b2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpTY3JvbGxMYXllcikp
Ci0gICAgICAgICAgICAgICAgY3Vyck5vZGUtPnNldExheWVyKGxheWVyVHJlZUhvc3QubGF5ZXJG
b3JJRChjdXJyTm9kZS0+bGF5ZXIoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9z
L1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tCShyZXZpc2lvbiAyNDA4NTUpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTUyLDggKzUy
LDkgQEAgdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtbwogewogICAgIFNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1M6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRy
ZW4oc3RhdGVOb2RlKTsKIAotICAgIGlmIChzdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsTGF5ZXIpKSB7Ci0gICAgICAgIGlmIChz
Y3JvbGxMYXllcigpICYmIFtbc2Nyb2xsTGF5ZXIoKSBkZWxlZ2F0ZV0gaXNLaW5kT2ZDbGFzczpb
VUlTY3JvbGxWaWV3IHNlbGZdXSkKKyAgICAvLyBGSVhNRTogU2hvdWxkIGJlIFNjcm9sbENvbnRh
aW5lckxheWVyLgorICAgIGlmIChzdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKSkgeworICAgICAgICBp
ZiAoc2Nyb2xsZWRDb250ZW50c0xheWVyKCkgJiYgW1tzY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSBk
ZWxlZ2F0ZV0gaXNLaW5kT2ZDbGFzczpbVUlTY3JvbGxWaWV3IHNlbGZdXSkKICAgICAgICAgICAg
IG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TPigqdGhpcyk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlID0gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1Mu
bW0JKHJldmlzaW9uIDI0MDg1NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbQkod29y
a2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlSU9TOjp+CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlP
Uzo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBXZWJDb3JlOjpTY3JvbGxpbmdTdGF0
ZU5vZGUmIHN0YXRlTm9kZSkKIHsKLSAgICBpZiAoc3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbExheWVyKSkKKyAgICBpZiAoc3Rh
dGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNj
cm9sbENvbnRhaW5lckxheWVyKSkKICAgICAgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUtPnJl
c2V0U2Nyb2xsVmlld0RlbGVnYXRlKCk7CiAKICAgICBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKHN0YXRlTm9kZSk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlSU9TLm1tCShyZXZpc2lvbiAyNDA4NTUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJ
T1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5NCwxNyArMTk0LDI3IEBAIHZvaWQgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUkKIAogdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlSU9TOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZSYgc2Nyb2xsaW5nU3RhdGVOb2RlKQogewotICAgIGlmIChzY3Jv
bGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6U2Ny
b2xsTGF5ZXIpKQotICAgICAgICBtX3Njcm9sbExheWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmxh
eWVyKCk7CisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxDb250YWluZXJMYXllcikpIHsKKyAgICAg
ICAgUmV0YWluUHRyPENBTGF5ZXI+IGxheWVyOworICAgICAgICBsYXllciA9IHNjcm9sbGluZ1N0
YXRlTm9kZS5zY3JvbGxDb250YWluZXJMYXllcigpOworICAgICAgICBpZiAoW1tsYXllciBkZWxl
Z2F0ZV0gaXNLaW5kT2ZDbGFzczpbVUlTY3JvbGxWaWV3IHNlbGZdXSkKKyAgICAgICAgICAgIG1f
c2Nyb2xsTGF5ZXIgPSBsYXllcjsKKyAgICB9CiAKLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2Rl
Lmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGVk
Q29udGVudHNMYXllcikpCi0gICAgICAgIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyID0gc2Nyb2xs
aW5nU3RhdGVOb2RlLnNjcm9sbGVkQ29udGVudHNMYXllcigpOworICAgIC8vIEZJTVhFOiBTY3Jv
bGxDb250YWluZXJMYXllciBzaG91bGQgYWx3YXlzIGJlIHRoZSBVSVNjcm9sbFZpZXcgbGF5ZXIu
CisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpKSB7CisgICAgICAgIFJl
dGFpblB0cjxDQUxheWVyPiBsYXllcjsKKyAgICAgICAgbGF5ZXIgPSBzY3JvbGxpbmdTdGF0ZU5v
ZGUuc2Nyb2xsZWRDb250ZW50c0xheWVyKCk7CisgICAgICAgIGlmIChbW2xheWVyIGRlbGVnYXRl
XSBpc0tpbmRPZkNsYXNzOltVSVNjcm9sbFZpZXcgc2VsZl1dKQorICAgICAgICAgICAgbV9zY3Jv
bGxMYXllciA9IGxheWVyOworICAgIH0KIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlSU9TOjpjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlJiBzY3JvbGxpbmdTdGF0ZU5vZGUpCiB7CiAgICAgU2V0Rm9yU2Nv
cGU8Ym9vbD4gdXBkYXRpbmdDaGFuZ2UobV91cGRhdGluZ0Zyb21TdGF0ZU5vZGUsIHRydWUpOwot
ICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsTGF5ZXIpCisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9k
ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxD
b250YWluZXJMYXllcikKKyAgICAgICAgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGVkQ29udGVudHNMYXll
cikKICAgICAgICAgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlRvdGFsQ29udGVudHNTaXplKQogICAgICAgICB8fCBz
Y3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6UmVhY2hhYmxlQ29udGVudHNTaXplKQogICAgICAgICB8fCBzY3JvbGxpbmdTdGF0
ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Ny
b2xsUG9zaXRpb24pCkBAIC0yMTMsNyArMjIzLDggQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlSQogICAgICAgICBVSVNjcm9sbFZpZXcgKnNjcm9sbFZpZXcgPSAoVUlT
Y3JvbGxWaWV3ICopW3Njcm9sbExheWVyKCkgZGVsZWdhdGVdOwogICAgICAgICBBU1NFUlQoW3Nj
cm9sbFZpZXcgaXNLaW5kT2ZDbGFzczpbVUlTY3JvbGxWaWV3IHNlbGZdXSk7CiAKLSAgICAgICAg
aWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlOjpTY3JvbGxMYXllcikpIHsKKyAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRl
Tm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3Jv
bGxDb250YWluZXJMYXllcikKKyAgICAgICAgICAgIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxlZENvbnRl
bnRzTGF5ZXIpKSB7CiAgICAgICAgICAgICBpZiAoIW1fc2Nyb2xsVmlld0RlbGVnYXRlKQogICAg
ICAgICAgICAgICAgIG1fc2Nyb2xsVmlld0RlbGVnYXRlID0gYWRvcHROUyhbW1dLU2Nyb2xsaW5n
Tm9kZVNjcm9sbFZpZXdEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhTY3JvbGxpbmdUcmVlTm9kZURl
bGVnYXRlOnRoaXNdKTsKIAo=
</data>
<flag name="review"
          id="377574"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360876</attachid>
            <date>2019-02-01 11:25:41 -0800</date>
            <delta_ts>2019-02-01 11:32:57 -0800</delta_ts>
            <desc>patch</desc>
            <filename>scrolling-tree-scrolling-layer-3.patch</filename>
            <type>text/plain</type>
            <size>49377</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDg1NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDE5LTAyLTAxICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBEb24ndCB1c2UgYmFzZSBsYXll
cigpIGFzIHRoZSBzY3JvbGwgbGF5ZXIgaW4gc2Nyb2xsaW5nIHRyZWUuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQxNjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgTWFpbnRhaW4gc2Nyb2xsQ29udGFpbmVy
TGF5ZXIoKSBhbmQgc2Nyb2xsZWRDb250ZW50c0xheWVyKCkgc2VwYXJhdGVseSBpbiBTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZS4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvcjo6ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldE5vZGVMYXllcnMpOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldE5vZGVMYXllcnMpOgorCisgICAgICAgIFR1cm4gdGhl
IGxvbmcgbGF5ZXIgcGFyYW1ldGVyIGxpc3QgaW50byBhIHN0cnVjdC4KKworICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdTdGF0ZU5vZGU6OlNjcm9sbGluZ1N0YXRlTm9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdTdGF0ZU5vZGU6OnNldEFsbFByb3BlcnRpZXNDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6c2V0TGF5ZXIpOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldEFsbFByb3Bl
cnRpZXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZTo6c2V0U2Nyb2xsQ29udGFpbmVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyBjb25zdCk6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNjcm9sbENvbnRhaW5lckxheWVy
IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OmNvbW1pdFRyZWVTdGF0ZSk6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmNvbW1pdFN0YXRlQmVmb3Jl
Q2hpbGRyZW4pOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6
c2Nyb2xsQ29udGFpbmVyTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGU6OnNjcm9sbGVkQ29udGVudHNMYXllciBjb25zdCk6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1Mu
aDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVJT1M6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUzo6c2Nyb2xsUG9zaXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlP
Uzo6c2V0U2Nyb2xsTGF5ZXJQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjpzY3JvbGxMYXllciBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUubW06Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjpjb21taXRTdGF0ZUJlZm9y
ZUNoaWxkcmVuKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZU1hYy5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJl
bik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFj
Ojpjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6c2Nyb2xsUG9zaXRpb24gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6c2V0U2Nyb2xs
TGF5ZXJQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlTWFjOjpleHBvc2VkVW5maWxsZWRBcmVhIGNvbnN0KToKKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU1hYy5oOgor
ICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZU1hYzo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjOjpzY3JvbGxQb3NpdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlTWFjOjpzZXRTY3JvbGxMYXllclBvc2l0aW9uKToKKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9tYWMvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUubW06CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmRpZENoYW5nZVBsYXRmb3JtTGF5ZXJGb3JMYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9s
bGluZ05vZGVGb3JWaWV3cG9ydENvbnN0cmFpbmVkUm9sZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbGluZ05vZGVGb3JTY3JvbGxpbmdSb2xl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xs
aW5nTm9kZUZvckZyYW1lSG9zdGluZ1JvbGUpOgorCiAyMDE5LTAyLTAxICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNDA2OTgp
OiBmYXN0L3Njcm9sbGluZy9zdGlja3ktdG8tZml4ZWQuaHRtbCBjYW4gY2F1c2UgYSBjcmFzaApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGlu
YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAJKHJldmlzaW9uIDI0MDg1NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMjYsNyArMjI2LDcgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yOjpmcmFtZVZpZQogICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdSb290TGF5
ZXJEaWRDaGFuZ2UoZnJhbWVWaWV3KTsKIAogICAgIGF1dG8qIG5vZGUgPSBkb3duY2FzdDxTY3Jv
bGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4obV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnN0YXRl
Tm9kZUZvcklEKGZyYW1lVmlldy5zY3JvbGxpbmdOb2RlSUQoKSkpOwotICAgIG5vZGUtPnNldExh
eWVyKHNjcm9sbExheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpOworICAgIG5vZGUtPnNldFNj
cm9sbGVkQ29udGVudHNMYXllcihzY3JvbGxMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpKTsK
ICAgICBub2RlLT5zZXRSb290Q29udGVudHNMYXllcihyb290Q29udGVudHNMYXllckZvckZyYW1l
VmlldyhmcmFtZVZpZXcpKTsKICAgICBub2RlLT5zZXRDb3VudGVyU2Nyb2xsaW5nTGF5ZXIoY291
bnRlclNjcm9sbGluZ0xheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpOwogICAgIG5vZGUtPnNl
dEluc2V0Q2xpcExheWVyKGluc2V0Q2xpcExheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpOwpA
QCAtNTczLDI1ICs1NzMsMjUgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjplbnN1
cmVSbwogICAgIGluc2VydE5vZGUoU2Nyb2xsaW5nTm9kZVR5cGU6Ok1haW5GcmFtZSwgZnJhbWVW
aWV3LnNjcm9sbGluZ05vZGVJRCgpLCAwLCAwKTsKIH0KIAotdm9pZCBBc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yOjpzZXROb2RlTGF5ZXJzKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIEdyYXBoaWNz
TGF5ZXIqIGxheWVyLCBHcmFwaGljc0xheWVyKiBzY3JvbGxlZENvbnRlbnRzTGF5ZXIsIEdyYXBo
aWNzTGF5ZXIqIGNvdW50ZXJTY3JvbGxpbmdMYXllciwgR3JhcGhpY3NMYXllciogaW5zZXRDbGlw
TGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHJvb3RDb250ZW50c0xheWVyKQordm9pZCBBc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yOjpzZXROb2RlTGF5ZXJzKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIGNv
bnN0IE5vZGVMYXllcnMmIG5vZGVMYXllcnMpCiB7CiAgICAgYXV0byogbm9kZSA9IG1fc2Nyb2xs
aW5nU3RhdGVUcmVlLT5zdGF0ZU5vZGVGb3JJRChub2RlSUQpOwogICAgIEFTU0VSVChub2RlKTsK
ICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG5vZGUtPnNldExheWVyKGxh
eWVyKTsKKyAgICBub2RlLT5zZXRMYXllcihub2RlTGF5ZXJzLmxheWVyKTsKIAogICAgIGlmIChp
czxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+KG5vZGUpKSB7CiAgICAgICAgIGF1dG8mIHNj
cm9sbGluZ05vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+KCpub2Rl
KTsKLSAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSB1bnVzZWQuCi0gICAgICAgIHNjcm9sbGlu
Z05vZGUuc2V0U2Nyb2xsZWRDb250ZW50c0xheWVyKHNjcm9sbGVkQ29udGVudHNMYXllcik7Cisg
ICAgICAgIHNjcm9sbGluZ05vZGUuc2V0U2Nyb2xsQ29udGFpbmVyTGF5ZXIobm9kZUxheWVycy5z
Y3JvbGxDb250YWluZXJMYXllcik7CisgICAgICAgIHNjcm9sbGluZ05vZGUuc2V0U2Nyb2xsZWRD
b250ZW50c0xheWVyKG5vZGVMYXllcnMuc2Nyb2xsZWRDb250ZW50c0xheWVyKTsKIAogICAgICAg
ICBpZiAoaXM8U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU+KG5vZGUpKSB7CiAgICAg
ICAgICAgICBhdXRvJiBmcmFtZVNjcm9sbGluZ05vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0
ZUZyYW1lU2Nyb2xsaW5nTm9kZT4oKm5vZGUpOwotICAgICAgICAgICAgZnJhbWVTY3JvbGxpbmdO
b2RlLnNldEluc2V0Q2xpcExheWVyKGluc2V0Q2xpcExheWVyKTsKLSAgICAgICAgICAgIGZyYW1l
U2Nyb2xsaW5nTm9kZS5zZXRDb3VudGVyU2Nyb2xsaW5nTGF5ZXIoY291bnRlclNjcm9sbGluZ0xh
eWVyKTsKLSAgICAgICAgICAgIGZyYW1lU2Nyb2xsaW5nTm9kZS5zZXRSb290Q29udGVudHNMYXll
cihyb290Q29udGVudHNMYXllcik7CisgICAgICAgICAgICBmcmFtZVNjcm9sbGluZ05vZGUuc2V0
SW5zZXRDbGlwTGF5ZXIobm9kZUxheWVycy5pbnNldENsaXBMYXllcik7CisgICAgICAgICAgICBm
cmFtZVNjcm9sbGluZ05vZGUuc2V0Q291bnRlclNjcm9sbGluZ0xheWVyKG5vZGVMYXllcnMuY291
bnRlclNjcm9sbGluZ0xheWVyKTsKKyAgICAgICAgICAgIGZyYW1lU2Nyb2xsaW5nTm9kZS5zZXRS
b290Q29udGVudHNMYXllcihub2RlTGF5ZXJzLnJvb3RDb250ZW50c0xheWVyKTsKICAgICAgICAg
fQogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgJKHJldmlzaW9uIDI0MDg1NSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDcgKzEwOCw3IEBAIHByaXZhdGU6CiAgICAgV0VCQ09S
RV9FWFBPUlQgU2Nyb2xsaW5nTm9kZUlEIHBhcmVudE9mTm9kZShTY3JvbGxpbmdOb2RlSUQpIGNv
bnN0IG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTY3JvbGxpbmdOb2RlSUQ+
IGNoaWxkcmVuT2ZOb2RlKFNjcm9sbGluZ05vZGVJRCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldE5vZGVMYXllcnMoU2Nyb2xsaW5nTm9kZUlELCBHcmFwaGlj
c0xheWVyKiAvKmxheWVyKi8sIEdyYXBoaWNzTGF5ZXIqIC8qc2Nyb2xsZWRDb250ZW50c0xheWVy
Ki8gPSBudWxscHRyLCBHcmFwaGljc0xheWVyKiAvKmNvdW50ZXJTY3JvbGxpbmdMYXllciovID0g
bnVsbHB0ciwgR3JhcGhpY3NMYXllciogLyppbnNldENsaXBMYXllciovID0gbnVsbHB0ciwgR3Jh
cGhpY3NMYXllciogLypyb290Q29udGVudHNMYXllciovID0gbnVsbHB0cikgb3ZlcnJpZGU7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXROb2RlTGF5ZXJzKFNjcm9sbGluZ05vZGVJRCwgY29u
c3QgTm9kZUxheWVycyYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2Ny
b2xsaW5nTm9kZUdlb21ldHJ5KFNjcm9sbGluZ05vZGVJRCwgY29uc3QgU2Nyb2xsaW5nR2VvbWV0
cnkmKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZXdwb3J0Q29uc3Ry
YWludGVkTm9kZUdlb21ldHJ5KFNjcm9sbGluZ05vZGVJRCwgY29uc3QgVmlld3BvcnRDb25zdHJh
aW50cyYpIG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdDb29yZGluYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgJKHJldmlzaW9uIDI0MDg1NSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEyOSw3ICsxMjksMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU2Nyb2xs
aW5nTm9kZUlEIHBhcmVudE9mTm9kZShTY3JvbGxpbmdOb2RlSUQpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KICAgICB2aXJ0dWFsIFZlY3RvcjxTY3JvbGxpbmdOb2RlSUQ+IGNoaWxkcmVuT2ZOb2RlKFNj
cm9sbGluZ05vZGVJRCkgY29uc3QgeyByZXR1cm4geyB9OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0Tm9kZUxheWVycyhTY3JvbGxpbmdOb2RlSUQsIEdyYXBoaWNzTGF5ZXIqIC8qbGF5ZXIqLywg
R3JhcGhpY3NMYXllciogLypzY3JvbGxlZENvbnRlbnRzTGF5ZXIqLyA9IG51bGxwdHIsIEdyYXBo
aWNzTGF5ZXIqIC8qY291bnRlclNjcm9sbGluZ0xheWVyKi8gPSBudWxscHRyLCBHcmFwaGljc0xh
eWVyKiAvKmluc2V0Q2xpcExheWVyKi8gPSBudWxscHRyLCBHcmFwaGljc0xheWVyKiAvKnJvb3RD
b250ZW50c0xheWVyKi8gPSBudWxscHRyKSB7IH0KKyAgICBzdHJ1Y3QgTm9kZUxheWVycyB7Cisg
ICAgICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyIHsgbnVsbHB0ciB9OworICAgICAgICBHcmFwaGlj
c0xheWVyKiBzY3JvbGxDb250YWluZXJMYXllciB7IG51bGxwdHIgfTsKKyAgICAgICAgR3JhcGhp
Y3NMYXllciogc2Nyb2xsZWRDb250ZW50c0xheWVyIHsgbnVsbHB0ciB9OworICAgICAgICBHcmFw
aGljc0xheWVyKiBjb3VudGVyU2Nyb2xsaW5nTGF5ZXIgeyBudWxscHRyIH07CisgICAgICAgIEdy
YXBoaWNzTGF5ZXIqIGluc2V0Q2xpcExheWVyIHsgbnVsbHB0ciB9OworICAgICAgICBHcmFwaGlj
c0xheWVyKiByb290Q29udGVudHNMYXllciB7IG51bGxwdHIgfTsKKyAgICB9OworICAgIHZpcnR1
YWwgdm9pZCBzZXROb2RlTGF5ZXJzKFNjcm9sbGluZ05vZGVJRCwgY29uc3QgTm9kZUxheWVycyYp
IHsgfQogCiAgICAgc3RydWN0IFNjcm9sbGluZ0dlb21ldHJ5IHsKICAgICAgICAgTGF5b3V0UmVj
dCBwYXJlbnRSZWxhdGl2ZVNjcm9sbGFibGVSZWN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuY3BwCShyZXZpc2lvbiAy
NDA4NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5v
ZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIFNjcm9sbGluZ1N0YXRlTm9k
ZTo6U2Nyb2xsaW5nU3RhdGVOb2RlKGMKICAgICAsIG1fY2hhbmdlZFByb3BlcnRpZXMoc3RhdGVO
b2RlLmNoYW5nZWRQcm9wZXJ0aWVzKCkpCiAgICAgLCBtX3Njcm9sbGluZ1N0YXRlVHJlZShhZG9w
dGl2ZVRyZWUpCiB7Ci0gICAgaWYgKGhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxMYXllcikpCisg
ICAgaWYgKGhhc0NoYW5nZWRQcm9wZXJ0eShMYXllcikpCiAgICAgICAgIHNldExheWVyKHN0YXRl
Tm9kZS5sYXllcigpLnRvUmVwcmVzZW50YXRpb24oYWRvcHRpdmVUcmVlLnByZWZlcnJlZExheWVy
UmVwcmVzZW50YXRpb24oKSkpOwogICAgIHNjcm9sbGluZ1N0YXRlVHJlZSgpLmFkZE5vZGUoKnRo
aXMpOwogfQpAQCAtNjksNyArNjksNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlTm9kZTo6c2V0UHJv
cGVydHlDaGFuCiAKIHZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjpzZXRBbGxQcm9wZXJ0aWVzQ2hh
bmdlZCgpCiB7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KFNjcm9sbExheWVyKTsKKyAgICBz
ZXRQcm9wZXJ0eUNoYW5nZWRCaXQoTGF5ZXIpOwogICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChD
aGlsZE5vZGVzKTsKICAgICBtX3Njcm9sbGluZ1N0YXRlVHJlZS5zZXRIYXNDaGFuZ2VkUHJvcGVy
dGllcygpOwogfQpAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjpz
ZXRMYXllcihjb25zdCAKICAgICAKICAgICBtX2xheWVyID0gbGF5ZXJSZXByZXNlbnRhdGlvbjsK
IAotICAgIHNldFByb3BlcnR5Q2hhbmdlZChTY3JvbGxMYXllcik7CisgICAgc2V0UHJvcGVydHlD
aGFuZ2VkKExheWVyKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdTdGF0ZU5vZGU6OmR1bXBQcm9wZXJ0
aWVzKFRleHRTdHJlYW0mIHRzLCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvciBiZWhh
dmlvcikgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1N0YXRlTm9kZS5oCShyZXZpc2lvbiAyNDA4NTUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MjA5LDcgKzIwOSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEZJWE1FOiB1c2luZyBhbiBPcHRpb25T
ZXQ8PiBmb3IgdGhlc2UgYW5kIGRlcml2ZWQgY2xhc3MgYml0cyB3b3VsZCBzaW1wbGlmeSBjb2Rl
LgogICAgIGVudW0gewotICAgICAgICBTY3JvbGxMYXllciA9IDAsCisgICAgICAgIExheWVyID0g
MCwKICAgICAgICAgQ2hpbGROb2RlcywKICAgICAgICAgTnVtU3RhdGVOb2RlQml0cyAvLyBUaGlz
IG11c3QgcmVtYWluIGF0IHRoZSBsYXN0IHBvc2l0aW9uLgogICAgIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZS5jcHAJKHJldmlzaW9uIDI0MDg1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU0LDYgKzU0LDggQEAgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxp
bmdTdAogICAgICwgbV9yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvblJlcHJlc2VudHNQcm9ncmFtbWF0
aWNTY3JvbGwoc3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uUmVwcmVzZW50c1Byb2dy
YW1tYXRpY1Njcm9sbCgpKQogICAgICwgbV9leHBlY3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyKHN0
YXRlTm9kZS5leHBlY3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCkpCiB7CisgICAgaWYgKGhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxDb250YWluZXJMYXllcikpCisgICAgICAgIHNldFNjcm9sbENv
bnRhaW5lckxheWVyKHN0YXRlTm9kZS5zY3JvbGxDb250YWluZXJMYXllcigpLnRvUmVwcmVzZW50
YXRpb24oYWRvcHRpdmVUcmVlLnByZWZlcnJlZExheWVyUmVwcmVzZW50YXRpb24oKSkpOwogICAg
IGlmIChoYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsZWRDb250ZW50c0xheWVyKSkKICAgICAgICAg
c2V0U2Nyb2xsZWRDb250ZW50c0xheWVyKHN0YXRlTm9kZS5zY3JvbGxlZENvbnRlbnRzTGF5ZXIo
KS50b1JlcHJlc2VudGF0aW9uKGFkb3B0aXZlVHJlZS5wcmVmZXJyZWRMYXllclJlcHJlc2VudGF0
aW9uKCkpKTsKIH0KQEAgLTc5LDYgKzgxLDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU6OnNldEFsbAogICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChDdXJyZW50VmVydGljYWxT
bmFwT2Zmc2V0SW5kZXgpOwogI2VuZGlmCiAgICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KEV4cGVj
dHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChTY3Jv
bGxDb250YWluZXJMYXllcik7CiAgICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KFNjcm9sbGVkQ29u
dGVudHNMYXllcik7CiAKICAgICBTY3JvbGxpbmdTdGF0ZU5vZGU6OnNldEFsbFByb3BlcnRpZXND
aGFuZ2VkKCk7CkBAIC0yMTksNiArMjIyLDE1IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlOjpzZXRFeHAKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoRXhwZWN0c1doZWVsRXZlbnRU
ZXN0VHJpZ2dlcik7CiB9CiAKK3ZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRT
Y3JvbGxDb250YWluZXJMYXllcihjb25zdCBMYXllclJlcHJlc2VudGF0aW9uJiBsYXllclJlcHJl
c2VudGF0aW9uKQoreworICAgIGlmIChsYXllclJlcHJlc2VudGF0aW9uID09IG1fc2Nyb2xsQ29u
dGFpbmVyTGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2Nyb2xsQ29udGFpbmVyTGF5
ZXIgPSBsYXllclJlcHJlc2VudGF0aW9uOworICAgIHNldFByb3BlcnR5Q2hhbmdlZChTY3JvbGxD
b250YWluZXJMYXllcik7Cit9CisKIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpz
ZXRTY3JvbGxlZENvbnRlbnRzTGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYgbGF5ZXJS
ZXByZXNlbnRhdGlvbikKIHsKICAgICBpZiAobGF5ZXJSZXByZXNlbnRhdGlvbiA9PSBtX3Njcm9s
bGVkQ29udGVudHNMYXllcikKQEAgLTI5MCw4ICszMDIsMTIgQEAgdm9pZCBTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU6OmR1bXBQcgogICAgIGlmIChtX2V4cGVjdHNXaGVlbEV2ZW50VGVzdFRy
aWdnZXIpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiZXhwZWN0cyB3aGVlbCBldmVudCB0ZXN0
IHRyaWdnZXIiLCBtX2V4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIpOwogCi0gICAgaWYgKChi
ZWhhdmlvciAmIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9ySW5jbHVkZUxheWVySURz
KSAmJiBtX3Njcm9sbGVkQ29udGVudHNMYXllci5sYXllcklEKCkpCi0gICAgICAgIHRzLmR1bXBQ
cm9wZXJ0eSgic2Nyb2xsZWQgY29udGVudHMgbGF5ZXIiLCBtX3Njcm9sbGVkQ29udGVudHNMYXll
ci5sYXllcklEKCkpOworICAgIGlmIChiZWhhdmlvciAmIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4
dEJlaGF2aW9ySW5jbHVkZUxheWVySURzKSB7CisgICAgICAgIGlmIChtX3Njcm9sbENvbnRhaW5l
ckxheWVyLmxheWVySUQoKSkKKyAgICAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2Nyb2xsIGNv
bnRhaW5lciBsYXllciIsIG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXIubGF5ZXJJRCgpKTsKKyAgICAg
ICAgaWYgKG1fc2Nyb2xsZWRDb250ZW50c0xheWVyLmxheWVySUQoKSkKKyAgICAgICAgICAgIHRz
LmR1bXBQcm9wZXJ0eSgic2Nyb2xsZWQgY29udGVudHMgbGF5ZXIiLCBtX3Njcm9sbGVkQ29udGVu
dHNMYXllci5sYXllcklEKCkpOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgJKHJldmlzaW9uIDI0MDg1NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgQ3VycmVudFZlcnRp
Y2FsU25hcE9mZnNldEluZGV4LAogI2VuZGlmCiAgICAgICAgIEV4cGVjdHNXaGVlbEV2ZW50VGVz
dFRyaWdnZXIsCisgICAgICAgIFNjcm9sbENvbnRhaW5lckxheWVyLAogICAgICAgICBTY3JvbGxl
ZENvbnRlbnRzTGF5ZXIsCiAgICAgICAgIE51bVNjcm9sbGluZ1N0YXRlTm9kZUJpdHMgLy8gVGhp
cyBtdXN0IHJlbWFpbiBhdCB0aGUgbGFzdCBwb3NpdGlvbi4KICAgICB9OwpAQCAtMTA4LDYgKzEw
OSw5IEBAIHB1YmxpYzoKICAgICBib29sIGV4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIoKSBj
b25zdCB7IHJldHVybiBtX2V4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXI7IH0KICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldEV4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIoYm9vbCk7CiAK
KyAgICBjb25zdCBMYXllclJlcHJlc2VudGF0aW9uJiBzY3JvbGxDb250YWluZXJMYXllcigpIGNv
bnN0IHsgcmV0dXJuIG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXI7IH0KKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFNjcm9sbENvbnRhaW5lckxheWVyKGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24m
KTsKKwogICAgIC8vIFRoaXMgaXMgYSBsYXllciB3aXRoIHRoZSBjb250ZW50cyB0aGF0IG1vdmUu
CiAgICAgY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYgc2Nyb2xsZWRDb250ZW50c0xheWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXI7IH0KICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFNjcm9sbGVkQ29udGVudHNMYXllcihjb25zdCBMYXllclJlcHJlc2VudGF0
aW9uJik7CkBAIC0xMzQsNiArMTM4LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2N1cnJl
bnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4IHsgMCB9OwogI2VuZGlmCiAgICAgU2Nyb2xsYWJsZUFy
ZWFQYXJhbWV0ZXJzIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzOworICAgIExheWVyUmVwcmVz
ZW50YXRpb24gbV9zY3JvbGxDb250YWluZXJMYXllcjsKICAgICBMYXllclJlcHJlc2VudGF0aW9u
IG1fc2Nyb2xsZWRDb250ZW50c0xheWVyOwogICAgIGJvb2wgbV9yZXF1ZXN0ZWRTY3JvbGxQb3Np
dGlvblJlcHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGwgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9l
eHBlY3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCShyZXZpc2lvbiAyNDA4
NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTU0LDEyICsxNTQsMTIgQEAgdm9pZCBTY3JvbGxpbmdUcmVlOjpj
b21taXRUcmVlU3RhdGUoc3RkOgogICAgIGlmIChyb290Tm9kZQogICAgICAgICAmJiAocm9vdFN0
YXRlTm9kZUNoYW5nZWQKICAgICAgICAgICAgIHx8IHJvb3ROb2RlLT5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkV2ZW50VHJhY2tpbmdSZWdpb24p
Ci0gICAgICAgICAgICB8fCByb290Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0
YXRlTm9kZTo6U2Nyb2xsTGF5ZXIpCisgICAgICAgICAgICB8fCByb290Tm9kZS0+aGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50c0xh
eWVyKQogICAgICAgICAgICAgfHwgcm9vdE5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6VmlzdWFsVmlld3BvcnRFbmFibGVkKQogICAgICAg
ICAgICAgfHwgcm9vdE5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1l
U2Nyb2xsaW5nTm9kZTo6QXN5bmNGcmFtZU9yT3ZlcmZsb3dTY3JvbGxpbmdFbmFibGVkKSkpIHsK
ICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogCi0gICAgICAgIGlmIChyb290U3Rh
dGVOb2RlQ2hhbmdlZCB8fCByb290Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0
YXRlTm9kZTo6U2Nyb2xsTGF5ZXIpKQorICAgICAgICBpZiAocm9vdFN0YXRlTm9kZUNoYW5nZWQg
fHwgcm9vdE5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGU6OlNjcm9sbGVkQ29udGVudHNMYXllcikpCiAgICAgICAgICAgICBtX21haW5GcmFtZVNjcm9s
bFBvc2l0aW9uID0gRmxvYXRQb2ludCgpOwogCiAgICAgICAgIGlmIChyb290U3RhdGVOb2RlQ2hh
bmdlZCB8fCByb290Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVT
Y3JvbGxpbmdOb2RlOjpFdmVudFRyYWNraW5nUmVnaW9uKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZS5jcHAJKHJldmlzaW9uIDI0MDg1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYs
NiArOTYsMTQgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6Y29tbWl0UwogCiAg
ICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGU6OkV4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIpKQogICAgICAgICBtX2V4cGVjdHNXaGVl
bEV2ZW50VGVzdFRyaWdnZXIgPSBzdGF0ZS5leHBlY3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCk7
CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKQorICAg
ICAgICBtX3Njcm9sbENvbnRhaW5lckxheWVyID0gc3RhdGUuc2Nyb2xsQ29udGFpbmVyTGF5ZXIo
KTsKKworICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlOjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpKQorICAgICAgICBtX3Njcm9sbGVkQ29u
dGVudHNMYXllciA9IHN0YXRlLnNjcm9sbGVkQ29udGVudHNMYXllcigpOworI2VuZGlmCiB9CiAK
IHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJl
bihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmIHN0YXRlTm9kZSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGUuaAkocmV2aXNpb24gMjQwODU1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYg
KzExMSwxMSBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIGV4cGVjdHNXaGVlbEV2ZW50VGVzdFRy
aWdnZXIoKSBjb25zdCB7IHJldHVybiBtX2V4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXI7IH0K
IAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIENBTGF5ZXIgKnNjcm9sbENvbnRhaW5lckxheWVy
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxDb250YWluZXJMYXllci5nZXQoKTsgfQorICAgIENB
TGF5ZXIgKnNjcm9sbGVkQ29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsZWRD
b250ZW50c0xheWVyLmdldCgpOyB9CisjZW5kaWYKKwogICAgIFdFQkNPUkVfRVhQT1JUIExheW91
dFBvaW50IHBhcmVudFRvTG9jYWxQb2ludChMYXlvdXRQb2ludCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgTGF5b3V0UG9pbnQgbG9jYWxUb0NvbnRlbnRzUG9pbnQoTGF5b3V0
UG9pbnQpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC0xMzEsNiArMTM2LDExIEBAIHByaXZhdGU6CiAj
ZW5kaWYKICAgICBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMgbV9zY3JvbGxhYmxlQXJlYVBhcmFt
ZXRlcnM7CiAgICAgYm9vbCBtX2V4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIgeyBmYWxzZSB9
OworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fc2Nyb2xs
Q29udGFpbmVyTGF5ZXI7CisgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fc2Nyb2xsZWRDb250ZW50
c0xheWVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZUlPUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lv
cy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLmgJKHJldmlzaW9uIDI0MDg1NSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlSU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDEyICs2MSw5IEBAIHByb3Rl
Y3RlZDoKICAgICBGbG9hdFBvaW50IG1pbmltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IG92ZXJy
aWRlOwogICAgIEZsb2F0UG9pbnQgbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKLSAgICBDQUxheWVyICpzY3JvbGxMYXllcigpIGNvbnN0OwotCiBwcml2YXRlOgogICAg
IHZvaWQgdXBkYXRlQ2hpbGROb2Rlc0FmdGVyU2Nyb2xsKGNvbnN0IEZsb2F0UG9pbnQmKTsKIAot
ICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3Njcm9sbExheWVyOwogICAgIFJldGFpblB0cjxDQUxh
eWVyPiBtX2NvdW50ZXJTY3JvbGxpbmdMYXllcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9o
ZWFkZXJMYXllcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9mb290ZXJMYXllcjsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLm1tCShyZXZpc2lvbiAy
NDA4NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTksOSArNTksNiBA
QCB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1M6CiAgICAgCiAgICAgY29u
c3QgYXV0byYgc2Nyb2xsaW5nU3RhdGVOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVGcmFt
ZVNjcm9sbGluZ05vZGU+KHN0YXRlTm9kZSk7CiAKLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2Rl
Lmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlNjcm9sbExheWVyKSkKLSAg
ICAgICAgbV9zY3JvbGxMYXllciA9IHNjcm9sbGluZ1N0YXRlTm9kZS5sYXllcigpOwotCiAgICAg
aWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVG
cmFtZVNjcm9sbGluZ05vZGU6OkNvdW50ZXJTY3JvbGxpbmdMYXllcikpCiAgICAgICAgIG1fY291
bnRlclNjcm9sbGluZ0xheWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmNvdW50ZXJTY3JvbGxpbmdM
YXllcigpOwogCkBAIC03OCw3ICs3NSw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZUlPUzoKICAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVxdWVzdGVkU2Nyb2xsUG9z
aXRpb24pKQogICAgICAgICAgICAgICAgIG1fcHJvYmFibGVNYWluVGhyZWFkU2Nyb2xsUG9zaXRp
b24gPSBzY3JvbGxpbmdTdGF0ZU5vZGUucmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24oKTsKICAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIENHUG9pbnQgc2Nyb2xsTGF5ZXJQb3NpdGlv
biA9IG1fc2Nyb2xsTGF5ZXIuZ2V0KCkucG9zaXRpb247CisgICAgICAgICAgICAgICAgQ0dQb2lu
dCBzY3JvbGxMYXllclBvc2l0aW9uID0gc2Nyb2xsZWRDb250ZW50c0xheWVyKCkucG9zaXRpb247
CiAgICAgICAgICAgICAgICAgbV9wcm9iYWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbiA9IElu
dFBvaW50KC1zY3JvbGxMYXllclBvc2l0aW9uLngsIC1zY3JvbGxMYXllclBvc2l0aW9uLnkpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xMDYsNyArMTAzLDcgQEAgRmxvYXRQb2ludCBT
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdObwogICAgIGlmIChzaG91bGRVcGRhdGVTY3JvbGxM
YXllclBvc2l0aW9uU3luY2hyb25vdXNseSgpKQogICAgICAgICByZXR1cm4gbV9wcm9iYWJsZU1h
aW5UaHJlYWRTY3JvbGxQb3NpdGlvbjsKIAotICAgIHJldHVybiAtbV9zY3JvbGxMYXllci5nZXQo
KS5wb3NpdGlvbjsKKyAgICByZXR1cm4gLXNjcm9sbGVkQ29udGVudHNMYXllcigpLnBvc2l0aW9u
OwogfQogCiB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1M6OnNldFNjcm9s
bFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQpAQCAtMTMwLDcgKzEy
Nyw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUzoKIHZvaWQgU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUzo6c2V0U2Nyb2xsTGF5ZXJQb3NpdGlvbihj
b25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgY29uc3QgRmxvYXRSZWN0JikKIHsKICAg
ICBBU1NFUlQoIXNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25TeW5jaHJvbm91c2x5KCkp
OwotICAgIFttX3Njcm9sbExheWVyIHNldFBvc2l0aW9uOi1zY3JvbGxQb3NpdGlvbl07CisgICAg
W3Njcm9sbGVkQ29udGVudHNMYXllcigpIHNldFBvc2l0aW9uOi1zY3JvbGxQb3NpdGlvbl07CiAK
ICAgICB1cGRhdGVDaGlsZE5vZGVzQWZ0ZXJTY3JvbGwoc2Nyb2xsUG9zaXRpb24pOwogfQpAQCAt
MjIwLDExICsyMTcsNiBAQCBGbG9hdFBvaW50IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
CiAgICAgcmV0dXJuIHBvc2l0aW9uOwogfQogCi1DQUxheWVyICpTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlSU9TOjpzY3JvbGxMYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2Ny
b2xsTGF5ZXIuZ2V0KCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZUZpeGVkTm9kZS5tbQkocmV2aXNpb24gMjQwODU1KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjpjb21taXRT
dGF0ZQogewogICAgIGNvbnN0IFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlJiBmaXhlZFN0YXRlTm9k
ZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlPihzdGF0ZU5vZGUpOwogCi0gICAg
aWYgKGZpeGVkU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6
OlNjcm9sbExheWVyKSkKKyAgICBpZiAoZml4ZWRTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlTm9kZTo6TGF5ZXIpKQogICAgICAgICBtX2xheWVyID0gZml4ZWRTdGF0
ZU5vZGUubGF5ZXIoKTsKIAogICAgIGlmIChzdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlRml4ZWROb2RlOjpWaWV3cG9ydENvbnN0cmFpbnRzKSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMuaAkocmV2aXNpb24gMjQwODU1KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNiBAQCBwcm90ZWN0
ZWQ6CiAgICAgdW5zaWduZWQgZXhwb3NlZFVuZmlsbGVkQXJlYSgpIGNvbnN0OwogCiBwcml2YXRl
OgotICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3Njcm9sbExheWVyOwogICAgIFJldGFpblB0cjxD
QUxheWVyPiBtX3Jvb3RDb250ZW50c0xheWVyOwogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX2Nv
dW50ZXJTY3JvbGxpbmdMYXllcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9pbnNldENsaXBM
YXllcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1t
CShyZXZpc2lvbiAyNDA4NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMv
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTAwLDkgKzEwMCw2IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzoK
ICAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNo
aWxkcmVuKHN0YXRlTm9kZSk7CiAgICAgY29uc3QgYXV0byYgc2Nyb2xsaW5nU3RhdGVOb2RlID0g
ZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU+KHN0YXRlTm9kZSk7CiAK
LSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdT
dGF0ZU5vZGU6OlNjcm9sbExheWVyKSkKLSAgICAgICAgbV9zY3JvbGxMYXllciA9IHNjcm9sbGlu
Z1N0YXRlTm9kZS5sYXllcigpOwotCiAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OlJvb3RDb250ZW50
c0xheWVyKSkKICAgICAgICAgbV9yb290Q29udGVudHNMYXllciA9IHNjcm9sbGluZ1N0YXRlTm9k
ZS5yb290Q29udGVudHNMYXllcigpOwogCkBAIC0xMzUsNyArMTMyLDcgQEAgdm9pZCBTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOgogICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpS
ZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbikpCiAgICAgICAgICAgICAgICAgbV9wcm9iYWJsZU1haW5U
aHJlYWRTY3JvbGxQb3NpdGlvbiA9IHNjcm9sbGluZ1N0YXRlTm9kZS5yZXF1ZXN0ZWRTY3JvbGxQ
b3NpdGlvbigpOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQ0dQb2ludCBz
Y3JvbGxMYXllclBvc2l0aW9uID0gbV9zY3JvbGxMYXllci5nZXQoKS5wb3NpdGlvbjsKKyAgICAg
ICAgICAgICAgICBDR1BvaW50IHNjcm9sbExheWVyUG9zaXRpb24gPSBzY3JvbGxlZENvbnRlbnRz
TGF5ZXIoKS5wb3NpdGlvbjsKICAgICAgICAgICAgICAgICBtX3Byb2JhYmxlTWFpblRocmVhZFNj
cm9sbFBvc2l0aW9uID0gRmxvYXRQb2ludCgtc2Nyb2xsTGF5ZXJQb3NpdGlvbi54LCAtc2Nyb2xs
TGF5ZXJQb3NpdGlvbi55KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTczLDcgKzE3
MCw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzoKICAgICBpZiAo
c2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKSkKICAgICAgICAgc2V0U2Nyb2xsUG9z
aXRpb24oc2Nyb2xsaW5nU3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKCkpOwogCi0g
ICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVOb2RlOjpTY3JvbGxMYXllcikKKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5n
ZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGVkQ29udGVudHNM
YXllcikKICAgICAgICAgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlRvdGFsQ29udGVudHNTaXplKQogICAgICAgICB8
fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6U2Nyb2xsYWJsZUFyZWFTaXplKSkKICAgICAgICAgdXBkYXRlTWFpbkZyYW1l
UGluU3RhdGUoc2Nyb2xsUG9zaXRpb24oKSk7CkBAIC0yMjEsNyArMjE4LDcgQEAgRmxvYXRQb2lu
dCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdObwogICAgIGlmIChzaG91bGRVcGRhdGVTY3Jv
bGxMYXllclBvc2l0aW9uU3luY2hyb25vdXNseSgpKQogICAgICAgICByZXR1cm4gbV9wcm9iYWJs
ZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbjsKIAotICAgIHJldHVybiAtbV9zY3JvbGxMYXllci5n
ZXQoKS5wb3NpdGlvbjsKKyAgICByZXR1cm4gLXNjcm9sbGVkQ29udGVudHNMYXllcigpLnBvc2l0
aW9uOwogfQogCiB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OnNldFNj
cm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQpAQCAtMjY5LDcg
KzI2Niw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzoKIHsKICAg
ICBBU1NFUlQoIXNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25TeW5jaHJvbm91c2x5KCkp
OwogCi0gICAgbV9zY3JvbGxMYXllci5nZXQoKS5wb3NpdGlvbiA9IC1wb3NpdGlvbjsKKyAgICBz
Y3JvbGxlZENvbnRlbnRzTGF5ZXIoKS5wb3NpdGlvbiA9IC1wb3NpdGlvbjsKIAogICAgIEZsb2F0
UmVjdCB2aXNpYmxlQ29udGVudFJlY3QocG9zaXRpb24sIHNjcm9sbGFibGVBcmVhU2l6ZSgpKTsK
ICAgICBGbG9hdFJlY3QgZml4ZWRQb3NpdGlvblJlY3Q7CkBAIC0zODQsNyArMzgxLDcgQEAgdW5z
aWduZWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZQogICAgIFJlZ2lvbiBwYWludGVk
VmlzaWJsZVRpbGVzOwogCiAgICAgRGVxdWU8Q0FMYXllcio+IGxheWVyUXVldWU7Ci0gICAgbGF5
ZXJRdWV1ZS5hcHBlbmQobV9zY3JvbGxMYXllci5nZXQoKSk7CisgICAgbGF5ZXJRdWV1ZS5hcHBl
bmQoc2Nyb2xsZWRDb250ZW50c0xheWVyKCkpOwogICAgIFBsYXRmb3JtTGF5ZXJMaXN0IHRpbGVz
OwogCiAgICAgd2hpbGUgKCFsYXllclF1ZXVlLmlzRW1wdHkoKSAmJiB0aWxlcy5pc0VtcHR5KCkp
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMu
aAkocmV2aXNpb24gMjQwODU1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMuaAkod29ya2luZyBjb3B5KQpA
QCAtNTgsMTEgKzU4LDYgQEAgcHJpdmF0ZToKIAogICAgIFNjcm9sbGluZ0V2ZW50UmVzdWx0IGhh
bmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jikgb3ZlcnJpZGU7CiAKLQot
ICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3Njcm9sbExheWVyOwotICAgIFJldGFpblB0cjxDQUxh
eWVyPiBtX3Njcm9sbGVkQ29udGVudHNMYXllcjsKLQotCiAgICAgU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZU1hYyBtX2RlbGVnYXRlOwogCiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Nj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMubW0JKHJldmlzaW9uIDI0MDg1NSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NCwxMyArNTQsNyBAQCB2
b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNCiB7CiAgICAgU2Nyb2xsaW5n
VHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihzdGF0
ZU5vZGUpOwogICAgIGNvbnN0IGF1dG8mIHNjcm9sbGluZ1N0YXRlTm9kZSA9IGRvd25jYXN0PFNj
cm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlPihzdGF0ZU5vZGUpOwotCi0gICAgaWYg
KHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2Rl
OjpTY3JvbGxMYXllcikpCi0gICAgICAgIG1fc2Nyb2xsTGF5ZXIgPSBzY3JvbGxpbmdTdGF0ZU5v
ZGUubGF5ZXIoKTsKLQotICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKSkK
LSAgICAgICAgbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIgPSBzY3JvbGxpbmdTdGF0ZU5vZGUuc2Ny
b2xsZWRDb250ZW50c0xheWVyKCk7Ci0KKyAgICBVTlVTRURfUEFSQU0oc2Nyb2xsaW5nU3RhdGVO
b2RlKTsKICAgICAvLyBGSVhNRTogU2Nyb2xsIHNuYXAgZGF0YS4KIH0KIApAQCAtMTA4LDcgKzEw
Miw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU0KIAogRmxvYXRQ
b2ludCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjOjpzY3JvbGxQb3NpdGlv
bigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIC1tX3Njcm9sbGVkQ29udGVudHNMYXllci5nZXQoKS5w
b3NpdGlvbjsKKyAgICByZXR1cm4gLXNjcm9sbGVkQ29udGVudHNMYXllcigpLnBvc2l0aW9uOwog
fQogCiB2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWM6OnNldFNjcm9s
bFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQpAQCAtMTMwLDcgKzEy
NCw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU0KIAogdm9pZCBT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjOjpzZXRTY3JvbGxMYXllclBvc2l0
aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBjb25zdCBGbG9hdFJlY3QmIGZp
eGVkUG9zaXRpb25SZWN0KQogewotICAgIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyLmdldCgpLnBv
c2l0aW9uID0gLXNjcm9sbFBvc2l0aW9uOworICAgIHNjcm9sbGVkQ29udGVudHNMYXllcigpLnBv
c2l0aW9uID0gLXNjcm9sbFBvc2l0aW9uOwogICAgIGlmICghbV9jaGlsZHJlbikKICAgICAgICAg
cmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZVN0aWNreU5vZGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tCShyZXZpc2lvbiAyNDA4NTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBTY3JvbGxpbmdU
cmVlU3RpY2t5Tm9kZTo6Y29tbWl0U3RhdAogewogICAgIGNvbnN0IFNjcm9sbGluZ1N0YXRlU3Rp
Y2t5Tm9kZSYgc3RpY2t5U3RhdGVOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVTdGlja3lO
b2RlPihzdGF0ZU5vZGUpOwogCi0gICAgaWYgKHN0aWNreVN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpTY3JvbGxMYXllcikpCisgICAgaWYgKHN0aWNreVN0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpMYXllcikpCiAg
ICAgICAgIG1fbGF5ZXIgPSBzdGlja3lTdGF0ZU5vZGUubGF5ZXIoKTsKIAogICAgIGlmIChzdGF0
ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZTo6Vmlld3Bv
cnRDb25zdHJhaW50cykpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAkocmV2aXNpb24gMjQwODU1KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU0NCwxOSArNTQ0LDIyIEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpkaWRDaGFu
Z2VQbGEKIAogICAgIGF1dG8qIGJhY2tpbmcgPSBsYXllci5iYWNraW5nKCk7CiAgICAgaWYgKGF1
dG8gbm9kZUlEID0gYmFja2luZy0+c2Nyb2xsaW5nTm9kZUlERm9yUm9sZShTY3JvbGxDb29yZGlu
YXRpb25Sb2xlOjpWaWV3cG9ydENvbnN0cmFpbmVkKSkKLSAgICAgICAgc2Nyb2xsaW5nQ29vcmRp
bmF0b3ItPnNldE5vZGVMYXllcnMobm9kZUlELCBiYWNraW5nLT5ncmFwaGljc0xheWVyKCkpOwor
ICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2V0Tm9kZUxheWVycyhub2RlSUQsIHsgYmFj
a2luZy0+Z3JhcGhpY3NMYXllcigpIH0pOwogCiAgICAgaWYgKGF1dG8gbm9kZUlEID0gYmFja2lu
Zy0+c2Nyb2xsaW5nTm9kZUlERm9yUm9sZShTY3JvbGxDb29yZGluYXRpb25Sb2xlOjpTY3JvbGxp
bmcpKSB7CiAgICAgICAgIC8vIEZJWE1FOiB3b3VsZCBiZSBuaWNlIHRvIG5vdCBoYXZlIHRvIHNw
ZWNpYWwtY2FzZSB0aGUgcm9vdC4KKyAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Ok5vZGVM
YXllcnMgbm9kZUxheWVyczsKICAgICAgICAgaWYgKGxheWVyLmlzUmVuZGVyVmlld0xheWVyKCkp
IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBSZW9yZ2FuaXplIHRoZSBsYXllcnMgYW5kIHBhc3Mg
dGhlIHNjcm9sbGVkQ29udGVudHNMYXllci4KLSAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5h
dG9yLT5zZXROb2RlTGF5ZXJzKG5vZGVJRCwgbV9zY3JvbGxMYXllci5nZXQoKSwgbnVsbHB0ciwg
Zml4ZWRSb290QmFja2dyb3VuZExheWVyKCksIGNsaXBMYXllcigpLCBtX3Jvb3RDb250ZW50c0xh
eWVyLmdldCgpKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBSZW9yZ2FuaXplIHRoZSBsYXllcnMg
YW5kIHBhc3MgdGhlIHNjcm9sbENvbnRhaW5lckxheWVyLgorICAgICAgICAgICAgbm9kZUxheWVy
cyA9IHsgbnVsbHB0ciwgbnVsbHB0ciwgbV9zY3JvbGxMYXllci5nZXQoKSwgZml4ZWRSb290QmFj
a2dyb3VuZExheWVyKCksIGNsaXBMYXllcigpLCBtX3Jvb3RDb250ZW50c0xheWVyLmdldCgpIH07
CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNldE5v
ZGVMYXllcnMobm9kZUlELCBiYWNraW5nLT5zY3JvbGxpbmdMYXllcigpLCBiYWNraW5nLT5zY3Jv
bGxpbmdDb250ZW50c0xheWVyKCkpOworICAgICAgICAgICAgbm9kZUxheWVycyA9IHsgbGF5ZXIu
YmFja2luZygpLT5ncmFwaGljc0xheWVyKCksIGJhY2tpbmctPnNjcm9sbGluZ0xheWVyKCksIGJh
Y2tpbmctPnNjcm9sbGluZ0NvbnRlbnRzTGF5ZXIoKSB9OworCisgICAgICAgIHNjcm9sbGluZ0Nv
b3JkaW5hdG9yLT5zZXROb2RlTGF5ZXJzKG5vZGVJRCwgbm9kZUxheWVycyk7CiAgICAgfQogCiAg
ICAgaWYgKGF1dG8gbm9kZUlEID0gYmFja2luZy0+c2Nyb2xsaW5nTm9kZUlERm9yUm9sZShTY3Jv
bGxDb29yZGluYXRpb25Sb2xlOjpGcmFtZUhvc3RpbmcpKQotICAgICAgICBzY3JvbGxpbmdDb29y
ZGluYXRvci0+c2V0Tm9kZUxheWVycyhub2RlSUQsIGJhY2tpbmctPmdyYXBoaWNzTGF5ZXIoKSk7
CisgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXROb2RlTGF5ZXJzKG5vZGVJRCwgeyBi
YWNraW5nLT5ncmFwaGljc0xheWVyKCkgfSk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpkaWRQYWludEJhY2tpbmcoUmVuZGVyTGF5ZXJCYWNraW5nKikKQEAgLTM5MDUsNyArMzkw
OCw3IEBAIFNjcm9sbGluZ05vZGVJRCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnUKICAgICBMT0df
V0lUSF9TVFJFQU0oQ29tcG9zaXRpbmcsIHN0cmVhbSA8PCAiUmVnaXN0ZXJpbmcgVmlld3BvcnRD
b25zdHJhaW5lZCAiIDw8IG5vZGVUeXBlIDw8ICIgbm9kZSAiIDw8IG5ld05vZGVJRCA8PCAiIChs
YXllciAiIDw8IGxheWVyLmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpLT5wcmltYXJ5TGF5ZXJJ
RCgpIDw8ICIpIGFzIGNoaWxkIG9mICIgPDwgdHJlZVN0YXRlLnBhcmVudE5vZGVJRC52YWx1ZU9y
KDApKTsKIAogICAgIGlmIChjaGFuZ2VzICYgU2Nyb2xsaW5nTm9kZUNoYW5nZUZsYWdzOjpMYXll
cikKLSAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNldE5vZGVMYXllcnMobmV3Tm9kZUlE
LCBsYXllci5iYWNraW5nKCktPmdyYXBoaWNzTGF5ZXIoKSk7CisgICAgICAgIHNjcm9sbGluZ0Nv
b3JkaW5hdG9yLT5zZXROb2RlTGF5ZXJzKG5ld05vZGVJRCwgeyBsYXllci5iYWNraW5nKCktPmdy
YXBoaWNzTGF5ZXIoKSB9KTsKIAogICAgIGlmIChjaGFuZ2VzICYgU2Nyb2xsaW5nTm9kZUNoYW5n
ZUZsYWdzOjpMYXllckdlb21ldHJ5KSB7CiAgICAgICAgIHN3aXRjaCAobm9kZVR5cGUpIHsKQEAg
LTQwMDksNyArNDAxMiw3IEBAIFNjcm9sbGluZ05vZGVJRCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnUKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjaGFuZ2VzICYgU2Nyb2xsaW5nTm9kZUNoYW5n
ZUZsYWdzOjpMYXllcikKLSAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXROb2Rl
TGF5ZXJzKG5ld05vZGVJRCwgbV9zY3JvbGxMYXllci5nZXQoKSwgbnVsbHB0ciwgZml4ZWRSb290
QmFja2dyb3VuZExheWVyKCksIGNsaXBMYXllcigpLCBtX3Jvb3RDb250ZW50c0xheWVyLmdldCgp
KTsKKyAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXROb2RlTGF5ZXJzKG5ld05v
ZGVJRCwgeyBudWxscHRyLCBudWxscHRyLCBtX3Njcm9sbExheWVyLmdldCgpLCBmaXhlZFJvb3RC
YWNrZ3JvdW5kTGF5ZXIoKSwgY2xpcExheWVyKCksIG1fcm9vdENvbnRlbnRzTGF5ZXIuZ2V0KCkg
fSk7CiAKICAgICAgICAgaWYgKGNoYW5nZXMgJiBTY3JvbGxpbmdOb2RlQ2hhbmdlRmxhZ3M6Okxh
eWVyR2VvbWV0cnkpIHsKICAgICAgICAgICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpTY3JvbGxp
bmdHZW9tZXRyeSBzY3JvbGxpbmdHZW9tZXRyeTsKQEAgLTQwMjQsNyArNDAyNyw3IEBAIFNjcm9s
bGluZ05vZGVJRCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnUKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgaWYgKGNoYW5nZXMgJiBTY3JvbGxpbmdOb2RlQ2hhbmdlRmxhZ3M6OkxheWVyKQot
ICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNldE5vZGVMYXllcnMobmV3Tm9kZUlE
LCBsYXllci5iYWNraW5nKCktPnNjcm9sbGluZ0xheWVyKCksIGxheWVyLmJhY2tpbmcoKS0+c2Ny
b2xsaW5nQ29udGVudHNMYXllcigpKTsKKyAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9y
LT5zZXROb2RlTGF5ZXJzKG5ld05vZGVJRCwgeyBsYXllci5iYWNraW5nKCktPmdyYXBoaWNzTGF5
ZXIoKSwgbGF5ZXIuYmFja2luZygpLT5zY3JvbGxpbmdMYXllcigpLCBsYXllci5iYWNraW5nKCkt
PnNjcm9sbGluZ0NvbnRlbnRzTGF5ZXIoKSB9KTsKIAogICAgICAgICBpZiAoY2hhbmdlcyAmIFNj
cm9sbGluZ05vZGVDaGFuZ2VGbGFnczo6TGF5ZXJHZW9tZXRyeSAmJiB0cmVlU3RhdGUucGFyZW50
Tm9kZUlEKSB7CiAgICAgICAgICAgICBSZW5kZXJMYXllciogc2Nyb2xsaW5nQW5jZXN0b3JMYXll
ciA9IG1fc2Nyb2xsaW5nTm9kZVRvTGF5ZXJNYXAuZ2V0KHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQu
dmFsdWUoKSk7CkBAIC00MDQ4LDcgKzQwNTEsNyBAQCBTY3JvbGxpbmdOb2RlSUQgUmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjp1CiAgICAgfQogCiAgICAgaWYgKGNoYW5nZXMgJiBTY3JvbGxpbmdOb2Rl
Q2hhbmdlRmxhZ3M6OkxheWVyKQotICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2V0Tm9k
ZUxheWVycyhuZXdOb2RlSUQsIGxheWVyLmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpKTsKKyAg
ICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNldE5vZGVMYXllcnMobmV3Tm9kZUlELCB7IGxh
eWVyLmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpIH0pOwogCiAgICAgaWYgKGNoYW5nZXMgJiBT
Y3JvbGxpbmdOb2RlQ2hhbmdlRmxhZ3M6OkxheWVyR2VvbWV0cnkgJiYgdHJlZVN0YXRlLnBhcmVu
dE5vZGVJRCkgewogICAgICAgICBSZW5kZXJMYXllciogc2Nyb2xsaW5nQW5jZXN0b3JMYXllciA9
IG1fc2Nyb2xsaW5nTm9kZVRvTGF5ZXJNYXAuZ2V0KHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQudmFs
dWUoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjQwODU1KQorKysgU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAxOS0wMi0wMSAgQW50
dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgRG9uJ3QgdXNlIGJhc2Ug
bGF5ZXIoKSBhcyB0aGUgc2Nyb2xsIGxheWVyIGluIHNjcm9sbGluZyB0cmVlLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MTYwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwOgorICAgICAg
ICAoQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZU5vZGU+OjplbmNvZGUpOgorICAgICAgICAo
QXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZU5vZGU+OjpkZWNvZGUpOgorICAgICAgICAoQXJn
dW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+OjplbmNvZGUpOgorICAgICAg
ICAoQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+OjpkZWNvZGUpOgor
ICAgICAgICAoV2ViS2l0OjpkdW1wKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Ojpjb25uZWN0U3RhdGVOb2RlTGF5ZXJz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvclByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvclByb3h5Ojpjb25uZWN0U3RhdGVOb2RlTGF5ZXJzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlUmVtb3RlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlUmVtb3RlSU9TOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlSU9TOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlSU9TOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYktp
dDo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6Y29tbWl0U3RhdGVBZnRl
ckNoaWxkcmVuKToKKwogMjAxOS0wMi0wMSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJv
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1NPVVBdIEltcHJvdmUgdXNlIG9mIFBBTDo6U2Vzc2lv
bklEIGluIFdlYktpdENvb2tpZU1hbmFnZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDI0MDg1NSkKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvclRyYW5zYWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBAQCB2
b2lkIEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVOb2RlPjo6CiAgICAgZW5jb2RlciA8PCBu
b2RlLnBhcmVudE5vZGVJRCgpOwogICAgIGVuY29kZXIgPDwgbm9kZS5jaGFuZ2VkUHJvcGVydGll
cygpOwogICAgIAotICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZU5vZGU6OlNjcm9sbExheWVyKSkKKyAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVOb2RlOjpMYXllcikpCiAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8
R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPihub2RlLmxheWVyKCkpOwogfQogCkBAIC0x
MDIsNyArMTAyLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlTm9kZT46Ogog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBub2RlLnNldENoYW5nZWRQcm9wZXJ0aWVzKGNo
YW5nZWRQcm9wZXJ0aWVzKTsKLSAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xs
aW5nU3RhdGVOb2RlOjpTY3JvbGxMYXllcikpIHsKKyAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpMYXllcikpIHsKICAgICAgICAgR3JhcGhpY3NMYXll
cjo6UGxhdGZvcm1MYXllcklEIGxheWVySUQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
bGF5ZXJJRCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDEsNiArMTQxLDggQEAg
dm9pZCBBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaQogICAgIFNDUk9MTElOR19O
T0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlJlcXVlc3RlZFNjcm9sbFBv
c2l0aW9uLCByZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbikKICAgICBTQ1JPTExJTkdfTk9ERV9FTkNP
REUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbiwg
cmVxdWVzdGVkU2Nyb2xsUG9zaXRpb25SZXByZXNlbnRzUHJvZ3JhbW1hdGljU2Nyb2xsKQogCisg
ICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKQorICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0
PEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5zY3JvbGxDb250YWluZXJMYXll
cigpKTsKICAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlOjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpKQogICAgICAgICBlbmNvZGVyIDw8IHN0
YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5zY3JvbGxlZENv
bnRlbnRzTGF5ZXIoKSk7CiB9CkBAIC0yMzgsNiArMjQwLDEzIEBAIGJvb2wgQXJndW1lbnRDb2Rl
cjxTY3JvbGxpbmdTdGF0ZVNjcm9sbGkKICAgICAgICAgbm9kZS5zZXRSZXF1ZXN0ZWRTY3JvbGxQ
b3NpdGlvbihzY3JvbGxQb3NpdGlvbiwgcmVwcmVzZW50c1Byb2dyYW1tYXRpY1Njcm9sbCk7CiAg
ICAgfQogCisgICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKSB7CisgICAgICAgIEdyYXBoaWNzTGF5
ZXI6OlBsYXRmb3JtTGF5ZXJJRCBsYXllcklEOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGxheWVySUQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBub2RlLnNldFNj
cm9sbENvbnRhaW5lckxheWVyKGxheWVySUQpOworICAgIH0KKwogICAgIGlmIChub2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGVkQ29udGVu
dHNMYXllcikpIHsKICAgICAgICAgR3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGxheWVy
SUQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGF5ZXJJRCkpCkBAIC01MTQsNiArNTIz
LDkgQEAgc3RhdGljIHZvaWQgZHVtcChUZXh0U3RyZWFtJiB0cywgY29uc3QgUwogICAgICAgICB0
cy5kdW1wUHJvcGVydHkoInJlcXVlc3RlZC1zY3JvbGwtcG9zaXRpb24taXMtcHJvZ3JhbWF0aWMi
LCBub2RlLnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uUmVwcmVzZW50c1Byb2dyYW1tYXRpY1Njcm9s
bCgpKTsKICAgICB9CiAKKyAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhh
c0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbENvbnRh
aW5lckxheWVyKSkKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzY3JvbGwtY29udGFpbmVyLWxh
eWVyIiwgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPihub2RlLnNj
cm9sbENvbnRhaW5lckxheWVyKCkpKTsKKwogICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5
IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
U2Nyb2xsZWRDb250ZW50c0xheWVyKSkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzY3JvbGxl
ZC1jb250ZW50cy1sYXllciIsIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5
ZXJJRD4obm9kZS5zY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSkpOwogfQpAQCAtNjAxLDcgKzYxMyw3
IEBAIHN0YXRpYyB2b2lkIGR1bXAoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFMKIHsKICAgICB0cy5k
dW1wUHJvcGVydHkoInR5cGUiLCBub2RlLm5vZGVUeXBlKCkpOwogCi0gICAgaWYgKCFjaGFuZ2Vk
UHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVO
b2RlOjpTY3JvbGxMYXllcikpCisgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9k
ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpMYXllcikpCiAgICAgICAg
IHRzLmR1bXBQcm9wZXJ0eSgibGF5ZXIiLCBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQbGF0
Zm9ybUxheWVySUQ+KG5vZGUubGF5ZXIoKSkpOwogICAgIAogICAgIHN3aXRjaCAobm9kZS5ub2Rl
VHlwZSgpKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5h
dG9yUHJveHkuY3BwCShyZXZpc2lvbiAyNDA4NTUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGlu
YXRvclByb3h5Ojpjbwogdm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Ojpjb25u
ZWN0U3RhdGVOb2RlTGF5ZXJzKFNjcm9sbGluZ1N0YXRlVHJlZSYgc3RhdGVUcmVlLCBjb25zdCBS
ZW1vdGVMYXllclRyZWVIb3N0JiBsYXllclRyZWVIb3N0KQogewogICAgIGZvciAoYXV0byYgY3Vy
ck5vZGUgOiBzdGF0ZVRyZWUubm9kZU1hcCgpLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChjdXJy
Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6U2Nyb2xsTGF5ZXIp
KQorICAgICAgICBpZiAoY3Vyck5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZU5vZGU6OkxheWVyKSkKICAgICAgICAgICAgIGN1cnJOb2RlLT5zZXRMYXllcihsYXllclRyZWVI
b3N0LmxheWVyRm9ySUQoY3Vyck5vZGUtPmxheWVyKCkpKTsKIAogICAgICAgICBzd2l0Y2ggKGN1
cnJOb2RlLT5ub2RlVHlwZSgpKSB7CkBAIC0xMDcsNiArMTA3LDkgQEAgdm9pZCBSZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5OjpjbwogICAgICAgICBjYXNlIFNjcm9sbGluZ05vZGVUeXBl
OjpTdWJmcmFtZTogewogICAgICAgICAgICAgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05v
ZGUmIHNjcm9sbGluZ1N0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlRnJhbWVTY3Jv
bGxpbmdOb2RlPigqY3Vyck5vZGUpOwogICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoc2Ny
b2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU6OlNjcm9sbENvbnRhaW5lckxheWVyKSkKKyAgICAgICAgICAgICAgICBzY3JvbGxpbmdT
dGF0ZU5vZGUuc2V0U2Nyb2xsQ29udGFpbmVyTGF5ZXIobGF5ZXJUcmVlSG9zdC5sYXllckZvcklE
KHNjcm9sbGluZ1N0YXRlTm9kZS5zY3JvbGxDb250YWluZXJMYXllcigpKSk7CisKICAgICAgICAg
ICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKSkKICAgICAgICAgICAgICAg
ICBzY3JvbGxpbmdTdGF0ZU5vZGUuc2V0U2Nyb2xsZWRDb250ZW50c0xheWVyKGxheWVyVHJlZUhv
c3QubGF5ZXJGb3JJRChzY3JvbGxpbmdTdGF0ZU5vZGUuc2Nyb2xsZWRDb250ZW50c0xheWVyKCkp
KTsKIApAQCAtMTM1LDYgKzEzOCw4IEBAIHZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQ
cm94eTo6Y28KICAgICAgICAgfQogICAgICAgICBjYXNlIFNjcm9sbGluZ05vZGVUeXBlOjpPdmVy
ZmxvdzogewogICAgICAgICAgICAgU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUm
IHNjcm9sbGluZ1N0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlPigqY3Vyck5vZGUpOworICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9k
ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxD
b250YWluZXJMYXllcikpCisgICAgICAgICAgICAgICAgc2Nyb2xsaW5nU3RhdGVOb2RlLnNldFNj
cm9sbENvbnRhaW5lckxheWVyKGxheWVyVHJlZUhvc3QubGF5ZXJGb3JJRChzY3JvbGxpbmdTdGF0
ZU5vZGUuc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKSkpOwogCiAgICAgICAgICAgICBpZiAoc2Nyb2xs
aW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGU6OlNjcm9sbGVkQ29udGVudHNMYXllcikpCiAgICAgICAgICAgICAgICAgc2Nyb2xsaW5nU3Rh
dGVOb2RlLnNldFNjcm9sbGVkQ29udGVudHNMYXllcihsYXllclRyZWVIb3N0LmxheWVyRm9ySUQo
c2Nyb2xsaW5nU3RhdGVOb2RlLnNjcm9sbGVkQ29udGVudHNMYXllcigpKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yUHJveHlJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9T
Lm1tCShyZXZpc2lvbiAyNDA4NTUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0JKHdvcmtp
bmcgY29weSkKQEAgLTUwLDEzICs1MCwxNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHZv
aWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6Y29ubmVjdFN0YXRlTm9kZUxheWVy
cyhTY3JvbGxpbmdTdGF0ZVRyZWUmIHN0YXRlVHJlZSwgY29uc3QgUmVtb3RlTGF5ZXJUcmVlSG9z
dCYgbGF5ZXJUcmVlSG9zdCkKIHsKICAgICBmb3IgKGF1dG8mIGN1cnJOb2RlIDogc3RhdGVUcmVl
Lm5vZGVNYXAoKS52YWx1ZXMoKSkgeworICAgICAgICBpZiAoY3Vyck5vZGUtPmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OkxheWVyKSkKKyAgICAgICAgICAgIGN1cnJOb2Rl
LT5zZXRMYXllcihsYXllclRyZWVIb3N0LmxheWVyRm9ySUQoY3Vyck5vZGUtPmxheWVyKCkpKTsK
KyAgICAgICAgCiAgICAgICAgIHN3aXRjaCAoY3Vyck5vZGUtPm5vZGVUeXBlKCkpIHsKICAgICAg
ICAgY2FzZSBTY3JvbGxpbmdOb2RlVHlwZTo6T3ZlcmZsb3c6IHsKICAgICAgICAgICAgIFNjcm9s
bGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlJiBzY3JvbGxpbmdTdGF0ZU5vZGUgPSBkb3du
Y2FzdDxTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZT4oKmN1cnJOb2RlKTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpTY3JvbGxMYXllcikpCi0gICAgICAgICAgICAg
ICAgc2Nyb2xsaW5nU3RhdGVOb2RlLnNldExheWVyKGxheWVyVHJlZUhvc3QubGF5ZXJGb3JJRChz
Y3JvbGxpbmdTdGF0ZU5vZGUubGF5ZXIoKSkpOwotICAgICAgICAgICAgCisKKyAgICAgICAgICAg
IGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKQorICAgICAgICAgICAgICAgIHNj
cm9sbGluZ1N0YXRlTm9kZS5zZXRTY3JvbGxDb250YWluZXJMYXllcihsYXllclRyZWVIb3N0Lmxh
eWVyRm9ySUQoc2Nyb2xsaW5nU3RhdGVOb2RlLnNjcm9sbENvbnRhaW5lckxheWVyKCkpKTsKKwog
ICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpKQogICAgICAg
ICAgICAgICAgIHNjcm9sbGluZ1N0YXRlTm9kZS5zZXRTY3JvbGxlZENvbnRlbnRzTGF5ZXIobGF5
ZXJUcmVlSG9zdC5sYXllckZvcklEKHNjcm9sbGluZ1N0YXRlTm9kZS5zY3JvbGxlZENvbnRlbnRz
TGF5ZXIoKSkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC02NCw5ICs2Nyw5IEBAIHZvaWQgUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6Y28KICAgICAgICAgY2FzZSBTY3JvbGxpbmdO
b2RlVHlwZTo6TWFpbkZyYW1lOgogICAgICAgICBjYXNlIFNjcm9sbGluZ05vZGVUeXBlOjpTdWJm
cmFtZTogewogICAgICAgICAgICAgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUmIHNj
cm9sbGluZ1N0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdO
b2RlPigqY3Vyck5vZGUpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoc2Nyb2xsaW5n
U3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlNjcm9sbExh
eWVyKSkKLSAgICAgICAgICAgICAgICBzY3JvbGxpbmdTdGF0ZU5vZGUuc2V0TGF5ZXIobGF5ZXJU
cmVlSG9zdC5sYXllckZvcklEKHNjcm9sbGluZ1N0YXRlTm9kZS5sYXllcigpKSk7CisKKyAgICAg
ICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKQorICAgICAgICAgICAg
ICAgIHNjcm9sbGluZ1N0YXRlTm9kZS5zZXRTY3JvbGxDb250YWluZXJMYXllcihsYXllclRyZWVI
b3N0LmxheWVyRm9ySUQoc2Nyb2xsaW5nU3RhdGVOb2RlLnNjcm9sbENvbnRhaW5lckxheWVyKCkp
KTsKIAogICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpKQog
ICAgICAgICAgICAgICAgIHNjcm9sbGluZ1N0YXRlTm9kZS5zZXRTY3JvbGxlZENvbnRlbnRzTGF5
ZXIobGF5ZXJUcmVlSG9zdC5sYXllckZvcklEKHNjcm9sbGluZ1N0YXRlTm9kZS5zY3JvbGxlZENv
bnRlbnRzTGF5ZXIoKSkpOwpAQCAtODUsOCArODgsNiBAQCB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yUHJveHk6OmNvCiAgICAgICAgIGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6OkZpeGVk
OgogICAgICAgICBjYXNlIFNjcm9sbGluZ05vZGVUeXBlOjpTdGlja3k6CiAgICAgICAgIGNhc2Ug
U2Nyb2xsaW5nTm9kZVR5cGU6OkZyYW1lSG9zdGluZzoKLSAgICAgICAgICAgIGlmIChjdXJyTm9k
ZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6U2Nyb2xsTGF5ZXIpKQot
ICAgICAgICAgICAgICAgIGN1cnJOb2RlLT5zZXRMYXllcihsYXllclRyZWVIb3N0LmxheWVyRm9y
SUQoY3Vyck5vZGUtPmxheWVyKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9T
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5tbQkocmV2aXNpb24gMjQwODU1KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01Miw4ICs1Miw5
IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW8KIHsKICAgICBTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVu
KHN0YXRlTm9kZSk7CiAKLSAgICBpZiAoc3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbExheWVyKSkgewotICAgICAgICBpZiAoc2Ny
b2xsTGF5ZXIoKSAmJiBbW3Njcm9sbExheWVyKCkgZGVsZWdhdGVdIGlzS2luZE9mQ2xhc3M6W1VJ
U2Nyb2xsVmlldyBzZWxmXV0pCisgICAgLy8gRklYTUU6IFNob3VsZCBiZSBTY3JvbGxDb250YWlu
ZXJMYXllci4KKyAgICBpZiAoc3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGVkQ29udGVudHNMYXllcikpIHsKKyAgICAgICAgaWYg
KHNjcm9sbGVkQ29udGVudHNMYXllcigpICYmIFtbc2Nyb2xsZWRDb250ZW50c0xheWVyKCkgZGVs
ZWdhdGVdIGlzS2luZE9mQ2xhc3M6W1VJU2Nyb2xsVmlldyBzZWxmXV0pCiAgICAgICAgICAgICBt
X3Njcm9sbGluZ05vZGVEZWxlZ2F0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZUlPUz4oKnRoaXMpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZSA9IG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1t
CShyZXZpc2lvbiAyNDA4NTUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0JKHdvcmtp
bmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZUlPUzo6fgogCiB2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6
OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVO
b2RlJiBzdGF0ZU5vZGUpCiB7Ci0gICAgaWYgKHN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxMYXllcikpCisgICAgaWYgKHN0YXRl
Tm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3Jv
bGxDb250YWluZXJMYXllcikpCiAgICAgICAgIG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlLT5yZXNl
dFNjcm9sbFZpZXdEZWxlZ2F0ZSgpOwogCiAgICAgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihzdGF0ZU5vZGUpOwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZUlPUy5tbQkocmV2aXNpb24gMjQwODU1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9T
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQsMTcgKzE5NCwyNyBAQCB2b2lkIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJCiAKIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZUlPUzo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGUmIHNjcm9sbGluZ1N0YXRlTm9kZSkKIHsKLSAgICBpZiAoc2Nyb2xs
aW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlNjcm9s
bExheWVyKSkKLSAgICAgICAgbV9zY3JvbGxMYXllciA9IHNjcm9sbGluZ1N0YXRlTm9kZS5sYXll
cigpOworICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKSB7CisgICAgICAg
IFJldGFpblB0cjxDQUxheWVyPiBsYXllcjsKKyAgICAgICAgbGF5ZXIgPSBzY3JvbGxpbmdTdGF0
ZU5vZGUuc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKTsKKyAgICAgICAgaWYgKFtbbGF5ZXIgZGVsZWdh
dGVdIGlzS2luZE9mQ2xhc3M6W1VJU2Nyb2xsVmlldyBzZWxmXV0pCisgICAgICAgICAgICBtX3Nj
cm9sbExheWVyID0gbGF5ZXI7CisgICAgfQogCi0gICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5o
YXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxlZENv
bnRlbnRzTGF5ZXIpKQotICAgICAgICBtX3Njcm9sbGVkQ29udGVudHNMYXllciA9IHNjcm9sbGlu
Z1N0YXRlTm9kZS5zY3JvbGxlZENvbnRlbnRzTGF5ZXIoKTsKKyAgICAvLyBGSU1YRTogU2Nyb2xs
Q29udGFpbmVyTGF5ZXIgc2hvdWxkIGFsd2F5cyBiZSB0aGUgVUlTY3JvbGxWaWV3IGxheWVyLgor
ICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKSkgeworICAgICAgICBSZXRh
aW5QdHI8Q0FMYXllcj4gbGF5ZXI7CisgICAgICAgIGxheWVyID0gc2Nyb2xsaW5nU3RhdGVOb2Rl
LnNjcm9sbGVkQ29udGVudHNMYXllcigpOworICAgICAgICBpZiAoW1tsYXllciBkZWxlZ2F0ZV0g
aXNLaW5kT2ZDbGFzczpbVUlTY3JvbGxWaWV3IHNlbGZdXSkKKyAgICAgICAgICAgIG1fc2Nyb2xs
TGF5ZXIgPSBsYXllcjsKKyAgICB9CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZUlPUzo6Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZSYgc2Nyb2xsaW5nU3RhdGVOb2RlKQogewogICAgIFNldEZvclNjb3Bl
PGJvb2w+IHVwZGF0aW5nQ2hhbmdlKG1fdXBkYXRpbmdGcm9tU3RhdGVOb2RlLCB0cnVlKTsKLSAg
ICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU6OlNjcm9sbExheWVyKQorICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsQ29u
dGFpbmVyTGF5ZXIpCisgICAgICAgIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIp
CiAgICAgICAgIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpUb3RhbENvbnRlbnRzU2l6ZSkKICAgICAgICAgfHwgc2Ny
b2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU6OlJlYWNoYWJsZUNvbnRlbnRzU2l6ZSkKICAgICAgICAgfHwgc2Nyb2xsaW5nU3RhdGVO
b2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9s
bFBvc2l0aW9uKQpAQCAtMjEzLDcgKzIyMyw4IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZUkKICAgICAgICAgVUlTY3JvbGxWaWV3ICpzY3JvbGxWaWV3ID0gKFVJU2Ny
b2xsVmlldyAqKVtzY3JvbGxMYXllcigpIGRlbGVnYXRlXTsKICAgICAgICAgQVNTRVJUKFtzY3Jv
bGxWaWV3IGlzS2luZE9mQ2xhc3M6W1VJU2Nyb2xsVmlldyBzZWxmXV0pOwogCi0gICAgICAgIGlm
IChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6U2Nyb2xsTGF5ZXIpKSB7CisgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xs
Q29udGFpbmVyTGF5ZXIpCisgICAgICAgICAgICB8fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hh
bmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50
c0xheWVyKSkgewogICAgICAgICAgICAgaWYgKCFtX3Njcm9sbFZpZXdEZWxlZ2F0ZSkKICAgICAg
ICAgICAgICAgICBtX3Njcm9sbFZpZXdEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXS1Njcm9sbGluZ05v
ZGVTY3JvbGxWaWV3RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoU2Nyb2xsaW5nVHJlZU5vZGVEZWxl
Z2F0ZTp0aGlzXSk7CiAK
</data>
<flag name="commit-queue"
          id="377576"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360878</attachid>
            <date>2019-02-01 11:32:57 -0800</date>
            <delta_ts>2019-02-01 12:10:29 -0800</delta_ts>
            <desc>patch</desc>
            <filename>scrolling-tree-scrolling-layer-4.patch</filename>
            <type>text/plain</type>
            <size>49375</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDg1NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDE5LTAyLTAxICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBEb24ndCB1c2UgYmFzZSBsYXll
cigpIGFzIHRoZSBzY3JvbGwgbGF5ZXIgaW4gc2Nyb2xsaW5nIHRyZWUuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQxNjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgTWFpbnRhaW4gc2Nyb2xsQ29udGFpbmVy
TGF5ZXIoKSBhbmQgc2Nyb2xsZWRDb250ZW50c0xheWVyKCkgc2VwYXJhdGVseSBpbiBTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZS4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvcjo6ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldE5vZGVMYXllcnMpOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldE5vZGVMYXllcnMpOgorCisgICAgICAgIFR1cm4gdGhl
IGxvbmcgbGF5ZXIgcGFyYW1ldGVyIGxpc3QgaW50byBhIHN0cnVjdC4KKworICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdTdGF0ZU5vZGU6OlNjcm9sbGluZ1N0YXRlTm9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdTdGF0ZU5vZGU6OnNldEFsbFByb3BlcnRpZXNDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6c2V0TGF5ZXIpOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldEFsbFByb3Bl
cnRpZXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZTo6c2V0U2Nyb2xsQ29udGFpbmVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyBjb25zdCk6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNjcm9sbENvbnRhaW5lckxheWVy
IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OmNvbW1pdFRyZWVTdGF0ZSk6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmNvbW1pdFN0YXRlQmVmb3Jl
Q2hpbGRyZW4pOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6
c2Nyb2xsQ29udGFpbmVyTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGU6OnNjcm9sbGVkQ29udGVudHNMYXllciBjb25zdCk6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1Mu
aDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVJT1M6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUzo6c2Nyb2xsUG9zaXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlP
Uzo6c2V0U2Nyb2xsTGF5ZXJQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjpzY3JvbGxMYXllciBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUubW06Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjpjb21taXRTdGF0ZUJlZm9y
ZUNoaWxkcmVuKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZU1hYy5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJl
bik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFj
Ojpjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6c2Nyb2xsUG9zaXRpb24gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6c2V0U2Nyb2xs
TGF5ZXJQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlTWFjOjpleHBvc2VkVW5maWxsZWRBcmVhIGNvbnN0KToKKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU1hYy5oOgor
ICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZU1hYzo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjOjpzY3JvbGxQb3NpdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlTWFjOjpzZXRTY3JvbGxMYXllclBvc2l0aW9uKToKKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9tYWMvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUubW06CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmRpZENoYW5nZVBsYXRmb3JtTGF5ZXJGb3JMYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9s
bGluZ05vZGVGb3JWaWV3cG9ydENvbnN0cmFpbmVkUm9sZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbGluZ05vZGVGb3JTY3JvbGxpbmdSb2xl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xs
aW5nTm9kZUZvckZyYW1lSG9zdGluZ1JvbGUpOgorCiAyMDE5LTAyLTAxICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNDA2OTgp
OiBmYXN0L3Njcm9sbGluZy9zdGlja3ktdG8tZml4ZWQuaHRtbCBjYW4gY2F1c2UgYSBjcmFzaApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGlu
YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAJKHJldmlzaW9uIDI0MDg1NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMjYsNyArMjI2LDcgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yOjpmcmFtZVZpZQogICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdSb290TGF5
ZXJEaWRDaGFuZ2UoZnJhbWVWaWV3KTsKIAogICAgIGF1dG8qIG5vZGUgPSBkb3duY2FzdDxTY3Jv
bGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4obV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnN0YXRl
Tm9kZUZvcklEKGZyYW1lVmlldy5zY3JvbGxpbmdOb2RlSUQoKSkpOwotICAgIG5vZGUtPnNldExh
eWVyKHNjcm9sbExheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpOworICAgIG5vZGUtPnNldFNj
cm9sbGVkQ29udGVudHNMYXllcihzY3JvbGxMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpKTsK
ICAgICBub2RlLT5zZXRSb290Q29udGVudHNMYXllcihyb290Q29udGVudHNMYXllckZvckZyYW1l
VmlldyhmcmFtZVZpZXcpKTsKICAgICBub2RlLT5zZXRDb3VudGVyU2Nyb2xsaW5nTGF5ZXIoY291
bnRlclNjcm9sbGluZ0xheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpOwogICAgIG5vZGUtPnNl
dEluc2V0Q2xpcExheWVyKGluc2V0Q2xpcExheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpOwpA
QCAtNTczLDI1ICs1NzMsMjUgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjplbnN1
cmVSbwogICAgIGluc2VydE5vZGUoU2Nyb2xsaW5nTm9kZVR5cGU6Ok1haW5GcmFtZSwgZnJhbWVW
aWV3LnNjcm9sbGluZ05vZGVJRCgpLCAwLCAwKTsKIH0KIAotdm9pZCBBc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yOjpzZXROb2RlTGF5ZXJzKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIEdyYXBoaWNz
TGF5ZXIqIGxheWVyLCBHcmFwaGljc0xheWVyKiBzY3JvbGxlZENvbnRlbnRzTGF5ZXIsIEdyYXBo
aWNzTGF5ZXIqIGNvdW50ZXJTY3JvbGxpbmdMYXllciwgR3JhcGhpY3NMYXllciogaW5zZXRDbGlw
TGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHJvb3RDb250ZW50c0xheWVyKQordm9pZCBBc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yOjpzZXROb2RlTGF5ZXJzKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIGNv
bnN0IE5vZGVMYXllcnMmIG5vZGVMYXllcnMpCiB7CiAgICAgYXV0byogbm9kZSA9IG1fc2Nyb2xs
aW5nU3RhdGVUcmVlLT5zdGF0ZU5vZGVGb3JJRChub2RlSUQpOwogICAgIEFTU0VSVChub2RlKTsK
ICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG5vZGUtPnNldExheWVyKGxh
eWVyKTsKKyAgICBub2RlLT5zZXRMYXllcihub2RlTGF5ZXJzLmxheWVyKTsKIAogICAgIGlmIChp
czxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+KG5vZGUpKSB7CiAgICAgICAgIGF1dG8mIHNj
cm9sbGluZ05vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+KCpub2Rl
KTsKLSAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSB1bnVzZWQuCi0gICAgICAgIHNjcm9sbGlu
Z05vZGUuc2V0U2Nyb2xsZWRDb250ZW50c0xheWVyKHNjcm9sbGVkQ29udGVudHNMYXllcik7Cisg
ICAgICAgIHNjcm9sbGluZ05vZGUuc2V0U2Nyb2xsQ29udGFpbmVyTGF5ZXIobm9kZUxheWVycy5z
Y3JvbGxDb250YWluZXJMYXllcik7CisgICAgICAgIHNjcm9sbGluZ05vZGUuc2V0U2Nyb2xsZWRD
b250ZW50c0xheWVyKG5vZGVMYXllcnMuc2Nyb2xsZWRDb250ZW50c0xheWVyKTsKIAogICAgICAg
ICBpZiAoaXM8U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU+KG5vZGUpKSB7CiAgICAg
ICAgICAgICBhdXRvJiBmcmFtZVNjcm9sbGluZ05vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0
ZUZyYW1lU2Nyb2xsaW5nTm9kZT4oKm5vZGUpOwotICAgICAgICAgICAgZnJhbWVTY3JvbGxpbmdO
b2RlLnNldEluc2V0Q2xpcExheWVyKGluc2V0Q2xpcExheWVyKTsKLSAgICAgICAgICAgIGZyYW1l
U2Nyb2xsaW5nTm9kZS5zZXRDb3VudGVyU2Nyb2xsaW5nTGF5ZXIoY291bnRlclNjcm9sbGluZ0xh
eWVyKTsKLSAgICAgICAgICAgIGZyYW1lU2Nyb2xsaW5nTm9kZS5zZXRSb290Q29udGVudHNMYXll
cihyb290Q29udGVudHNMYXllcik7CisgICAgICAgICAgICBmcmFtZVNjcm9sbGluZ05vZGUuc2V0
SW5zZXRDbGlwTGF5ZXIobm9kZUxheWVycy5pbnNldENsaXBMYXllcik7CisgICAgICAgICAgICBm
cmFtZVNjcm9sbGluZ05vZGUuc2V0Q291bnRlclNjcm9sbGluZ0xheWVyKG5vZGVMYXllcnMuY291
bnRlclNjcm9sbGluZ0xheWVyKTsKKyAgICAgICAgICAgIGZyYW1lU2Nyb2xsaW5nTm9kZS5zZXRS
b290Q29udGVudHNMYXllcihub2RlTGF5ZXJzLnJvb3RDb250ZW50c0xheWVyKTsKICAgICAgICAg
fQogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgJKHJldmlzaW9uIDI0MDg1NSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDcgKzEwOCw3IEBAIHByaXZhdGU6CiAgICAgV0VCQ09S
RV9FWFBPUlQgU2Nyb2xsaW5nTm9kZUlEIHBhcmVudE9mTm9kZShTY3JvbGxpbmdOb2RlSUQpIGNv
bnN0IG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTY3JvbGxpbmdOb2RlSUQ+
IGNoaWxkcmVuT2ZOb2RlKFNjcm9sbGluZ05vZGVJRCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldE5vZGVMYXllcnMoU2Nyb2xsaW5nTm9kZUlELCBHcmFwaGlj
c0xheWVyKiAvKmxheWVyKi8sIEdyYXBoaWNzTGF5ZXIqIC8qc2Nyb2xsZWRDb250ZW50c0xheWVy
Ki8gPSBudWxscHRyLCBHcmFwaGljc0xheWVyKiAvKmNvdW50ZXJTY3JvbGxpbmdMYXllciovID0g
bnVsbHB0ciwgR3JhcGhpY3NMYXllciogLyppbnNldENsaXBMYXllciovID0gbnVsbHB0ciwgR3Jh
cGhpY3NMYXllciogLypyb290Q29udGVudHNMYXllciovID0gbnVsbHB0cikgb3ZlcnJpZGU7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXROb2RlTGF5ZXJzKFNjcm9sbGluZ05vZGVJRCwgY29u
c3QgTm9kZUxheWVycyYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2Ny
b2xsaW5nTm9kZUdlb21ldHJ5KFNjcm9sbGluZ05vZGVJRCwgY29uc3QgU2Nyb2xsaW5nR2VvbWV0
cnkmKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZXdwb3J0Q29uc3Ry
YWludGVkTm9kZUdlb21ldHJ5KFNjcm9sbGluZ05vZGVJRCwgY29uc3QgVmlld3BvcnRDb25zdHJh
aW50cyYpIG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdDb29yZGluYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgJKHJldmlzaW9uIDI0MDg1NSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEyOSw3ICsxMjksMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU2Nyb2xs
aW5nTm9kZUlEIHBhcmVudE9mTm9kZShTY3JvbGxpbmdOb2RlSUQpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KICAgICB2aXJ0dWFsIFZlY3RvcjxTY3JvbGxpbmdOb2RlSUQ+IGNoaWxkcmVuT2ZOb2RlKFNj
cm9sbGluZ05vZGVJRCkgY29uc3QgeyByZXR1cm4geyB9OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0Tm9kZUxheWVycyhTY3JvbGxpbmdOb2RlSUQsIEdyYXBoaWNzTGF5ZXIqIC8qbGF5ZXIqLywg
R3JhcGhpY3NMYXllciogLypzY3JvbGxlZENvbnRlbnRzTGF5ZXIqLyA9IG51bGxwdHIsIEdyYXBo
aWNzTGF5ZXIqIC8qY291bnRlclNjcm9sbGluZ0xheWVyKi8gPSBudWxscHRyLCBHcmFwaGljc0xh
eWVyKiAvKmluc2V0Q2xpcExheWVyKi8gPSBudWxscHRyLCBHcmFwaGljc0xheWVyKiAvKnJvb3RD
b250ZW50c0xheWVyKi8gPSBudWxscHRyKSB7IH0KKyAgICBzdHJ1Y3QgTm9kZUxheWVycyB7Cisg
ICAgICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyIHsgbnVsbHB0ciB9OworICAgICAgICBHcmFwaGlj
c0xheWVyKiBzY3JvbGxDb250YWluZXJMYXllciB7IG51bGxwdHIgfTsKKyAgICAgICAgR3JhcGhp
Y3NMYXllciogc2Nyb2xsZWRDb250ZW50c0xheWVyIHsgbnVsbHB0ciB9OworICAgICAgICBHcmFw
aGljc0xheWVyKiBjb3VudGVyU2Nyb2xsaW5nTGF5ZXIgeyBudWxscHRyIH07CisgICAgICAgIEdy
YXBoaWNzTGF5ZXIqIGluc2V0Q2xpcExheWVyIHsgbnVsbHB0ciB9OworICAgICAgICBHcmFwaGlj
c0xheWVyKiByb290Q29udGVudHNMYXllciB7IG51bGxwdHIgfTsKKyAgICB9OworICAgIHZpcnR1
YWwgdm9pZCBzZXROb2RlTGF5ZXJzKFNjcm9sbGluZ05vZGVJRCwgY29uc3QgTm9kZUxheWVycyYp
IHsgfQogCiAgICAgc3RydWN0IFNjcm9sbGluZ0dlb21ldHJ5IHsKICAgICAgICAgTGF5b3V0UmVj
dCBwYXJlbnRSZWxhdGl2ZVNjcm9sbGFibGVSZWN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuY3BwCShyZXZpc2lvbiAy
NDA4NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5v
ZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIFNjcm9sbGluZ1N0YXRlTm9k
ZTo6U2Nyb2xsaW5nU3RhdGVOb2RlKGMKICAgICAsIG1fY2hhbmdlZFByb3BlcnRpZXMoc3RhdGVO
b2RlLmNoYW5nZWRQcm9wZXJ0aWVzKCkpCiAgICAgLCBtX3Njcm9sbGluZ1N0YXRlVHJlZShhZG9w
dGl2ZVRyZWUpCiB7Ci0gICAgaWYgKGhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxMYXllcikpCisg
ICAgaWYgKGhhc0NoYW5nZWRQcm9wZXJ0eShMYXllcikpCiAgICAgICAgIHNldExheWVyKHN0YXRl
Tm9kZS5sYXllcigpLnRvUmVwcmVzZW50YXRpb24oYWRvcHRpdmVUcmVlLnByZWZlcnJlZExheWVy
UmVwcmVzZW50YXRpb24oKSkpOwogICAgIHNjcm9sbGluZ1N0YXRlVHJlZSgpLmFkZE5vZGUoKnRo
aXMpOwogfQpAQCAtNjksNyArNjksNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlTm9kZTo6c2V0UHJv
cGVydHlDaGFuCiAKIHZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjpzZXRBbGxQcm9wZXJ0aWVzQ2hh
bmdlZCgpCiB7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KFNjcm9sbExheWVyKTsKKyAgICBz
ZXRQcm9wZXJ0eUNoYW5nZWRCaXQoTGF5ZXIpOwogICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChD
aGlsZE5vZGVzKTsKICAgICBtX3Njcm9sbGluZ1N0YXRlVHJlZS5zZXRIYXNDaGFuZ2VkUHJvcGVy
dGllcygpOwogfQpAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjpz
ZXRMYXllcihjb25zdCAKICAgICAKICAgICBtX2xheWVyID0gbGF5ZXJSZXByZXNlbnRhdGlvbjsK
IAotICAgIHNldFByb3BlcnR5Q2hhbmdlZChTY3JvbGxMYXllcik7CisgICAgc2V0UHJvcGVydHlD
aGFuZ2VkKExheWVyKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdTdGF0ZU5vZGU6OmR1bXBQcm9wZXJ0
aWVzKFRleHRTdHJlYW0mIHRzLCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvciBiZWhh
dmlvcikgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1N0YXRlTm9kZS5oCShyZXZpc2lvbiAyNDA4NTUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MjA5LDcgKzIwOSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEZJWE1FOiB1c2luZyBhbiBPcHRpb25T
ZXQ8PiBmb3IgdGhlc2UgYW5kIGRlcml2ZWQgY2xhc3MgYml0cyB3b3VsZCBzaW1wbGlmeSBjb2Rl
LgogICAgIGVudW0gewotICAgICAgICBTY3JvbGxMYXllciA9IDAsCisgICAgICAgIExheWVyID0g
MCwKICAgICAgICAgQ2hpbGROb2RlcywKICAgICAgICAgTnVtU3RhdGVOb2RlQml0cyAvLyBUaGlz
IG11c3QgcmVtYWluIGF0IHRoZSBsYXN0IHBvc2l0aW9uLgogICAgIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZS5jcHAJKHJldmlzaW9uIDI0MDg1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU0LDYgKzU0LDggQEAgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxp
bmdTdAogICAgICwgbV9yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvblJlcHJlc2VudHNQcm9ncmFtbWF0
aWNTY3JvbGwoc3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uUmVwcmVzZW50c1Byb2dy
YW1tYXRpY1Njcm9sbCgpKQogICAgICwgbV9leHBlY3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyKHN0
YXRlTm9kZS5leHBlY3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCkpCiB7CisgICAgaWYgKGhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxDb250YWluZXJMYXllcikpCisgICAgICAgIHNldFNjcm9sbENv
bnRhaW5lckxheWVyKHN0YXRlTm9kZS5zY3JvbGxDb250YWluZXJMYXllcigpLnRvUmVwcmVzZW50
YXRpb24oYWRvcHRpdmVUcmVlLnByZWZlcnJlZExheWVyUmVwcmVzZW50YXRpb24oKSkpOwogICAg
IGlmIChoYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsZWRDb250ZW50c0xheWVyKSkKICAgICAgICAg
c2V0U2Nyb2xsZWRDb250ZW50c0xheWVyKHN0YXRlTm9kZS5zY3JvbGxlZENvbnRlbnRzTGF5ZXIo
KS50b1JlcHJlc2VudGF0aW9uKGFkb3B0aXZlVHJlZS5wcmVmZXJyZWRMYXllclJlcHJlc2VudGF0
aW9uKCkpKTsKIH0KQEAgLTc5LDYgKzgxLDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU6OnNldEFsbAogICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChDdXJyZW50VmVydGljYWxT
bmFwT2Zmc2V0SW5kZXgpOwogI2VuZGlmCiAgICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KEV4cGVj
dHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChTY3Jv
bGxDb250YWluZXJMYXllcik7CiAgICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KFNjcm9sbGVkQ29u
dGVudHNMYXllcik7CiAKICAgICBTY3JvbGxpbmdTdGF0ZU5vZGU6OnNldEFsbFByb3BlcnRpZXND
aGFuZ2VkKCk7CkBAIC0yMTksNiArMjIyLDE1IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlOjpzZXRFeHAKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoRXhwZWN0c1doZWVsRXZlbnRU
ZXN0VHJpZ2dlcik7CiB9CiAKK3ZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRT
Y3JvbGxDb250YWluZXJMYXllcihjb25zdCBMYXllclJlcHJlc2VudGF0aW9uJiBsYXllclJlcHJl
c2VudGF0aW9uKQoreworICAgIGlmIChsYXllclJlcHJlc2VudGF0aW9uID09IG1fc2Nyb2xsQ29u
dGFpbmVyTGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2Nyb2xsQ29udGFpbmVyTGF5
ZXIgPSBsYXllclJlcHJlc2VudGF0aW9uOworICAgIHNldFByb3BlcnR5Q2hhbmdlZChTY3JvbGxD
b250YWluZXJMYXllcik7Cit9CisKIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpz
ZXRTY3JvbGxlZENvbnRlbnRzTGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYgbGF5ZXJS
ZXByZXNlbnRhdGlvbikKIHsKICAgICBpZiAobGF5ZXJSZXByZXNlbnRhdGlvbiA9PSBtX3Njcm9s
bGVkQ29udGVudHNMYXllcikKQEAgLTI5MCw4ICszMDIsMTIgQEAgdm9pZCBTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU6OmR1bXBQcgogICAgIGlmIChtX2V4cGVjdHNXaGVlbEV2ZW50VGVzdFRy
aWdnZXIpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiZXhwZWN0cyB3aGVlbCBldmVudCB0ZXN0
IHRyaWdnZXIiLCBtX2V4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIpOwogCi0gICAgaWYgKChi
ZWhhdmlvciAmIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9ySW5jbHVkZUxheWVySURz
KSAmJiBtX3Njcm9sbGVkQ29udGVudHNMYXllci5sYXllcklEKCkpCi0gICAgICAgIHRzLmR1bXBQ
cm9wZXJ0eSgic2Nyb2xsZWQgY29udGVudHMgbGF5ZXIiLCBtX3Njcm9sbGVkQ29udGVudHNMYXll
ci5sYXllcklEKCkpOworICAgIGlmIChiZWhhdmlvciAmIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4
dEJlaGF2aW9ySW5jbHVkZUxheWVySURzKSB7CisgICAgICAgIGlmIChtX3Njcm9sbENvbnRhaW5l
ckxheWVyLmxheWVySUQoKSkKKyAgICAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2Nyb2xsIGNv
bnRhaW5lciBsYXllciIsIG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXIubGF5ZXJJRCgpKTsKKyAgICAg
ICAgaWYgKG1fc2Nyb2xsZWRDb250ZW50c0xheWVyLmxheWVySUQoKSkKKyAgICAgICAgICAgIHRz
LmR1bXBQcm9wZXJ0eSgic2Nyb2xsZWQgY29udGVudHMgbGF5ZXIiLCBtX3Njcm9sbGVkQ29udGVu
dHNMYXllci5sYXllcklEKCkpOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgJKHJldmlzaW9uIDI0MDg1NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgQ3VycmVudFZlcnRp
Y2FsU25hcE9mZnNldEluZGV4LAogI2VuZGlmCiAgICAgICAgIEV4cGVjdHNXaGVlbEV2ZW50VGVz
dFRyaWdnZXIsCisgICAgICAgIFNjcm9sbENvbnRhaW5lckxheWVyLAogICAgICAgICBTY3JvbGxl
ZENvbnRlbnRzTGF5ZXIsCiAgICAgICAgIE51bVNjcm9sbGluZ1N0YXRlTm9kZUJpdHMgLy8gVGhp
cyBtdXN0IHJlbWFpbiBhdCB0aGUgbGFzdCBwb3NpdGlvbi4KICAgICB9OwpAQCAtMTA4LDYgKzEw
OSw5IEBAIHB1YmxpYzoKICAgICBib29sIGV4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIoKSBj
b25zdCB7IHJldHVybiBtX2V4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXI7IH0KICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldEV4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIoYm9vbCk7CiAK
KyAgICBjb25zdCBMYXllclJlcHJlc2VudGF0aW9uJiBzY3JvbGxDb250YWluZXJMYXllcigpIGNv
bnN0IHsgcmV0dXJuIG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXI7IH0KKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFNjcm9sbENvbnRhaW5lckxheWVyKGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24m
KTsKKwogICAgIC8vIFRoaXMgaXMgYSBsYXllciB3aXRoIHRoZSBjb250ZW50cyB0aGF0IG1vdmUu
CiAgICAgY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYgc2Nyb2xsZWRDb250ZW50c0xheWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXI7IH0KICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFNjcm9sbGVkQ29udGVudHNMYXllcihjb25zdCBMYXllclJlcHJlc2VudGF0
aW9uJik7CkBAIC0xMzQsNiArMTM4LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2N1cnJl
bnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4IHsgMCB9OwogI2VuZGlmCiAgICAgU2Nyb2xsYWJsZUFy
ZWFQYXJhbWV0ZXJzIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzOworICAgIExheWVyUmVwcmVz
ZW50YXRpb24gbV9zY3JvbGxDb250YWluZXJMYXllcjsKICAgICBMYXllclJlcHJlc2VudGF0aW9u
IG1fc2Nyb2xsZWRDb250ZW50c0xheWVyOwogICAgIGJvb2wgbV9yZXF1ZXN0ZWRTY3JvbGxQb3Np
dGlvblJlcHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGwgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9l
eHBlY3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCShyZXZpc2lvbiAyNDA4
NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTU0LDEyICsxNTQsMTIgQEAgdm9pZCBTY3JvbGxpbmdUcmVlOjpj
b21taXRUcmVlU3RhdGUoc3RkOgogICAgIGlmIChyb290Tm9kZQogICAgICAgICAmJiAocm9vdFN0
YXRlTm9kZUNoYW5nZWQKICAgICAgICAgICAgIHx8IHJvb3ROb2RlLT5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkV2ZW50VHJhY2tpbmdSZWdpb24p
Ci0gICAgICAgICAgICB8fCByb290Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0
YXRlTm9kZTo6U2Nyb2xsTGF5ZXIpCisgICAgICAgICAgICB8fCByb290Tm9kZS0+aGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50c0xh
eWVyKQogICAgICAgICAgICAgfHwgcm9vdE5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6VmlzdWFsVmlld3BvcnRFbmFibGVkKQogICAgICAg
ICAgICAgfHwgcm9vdE5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1l
U2Nyb2xsaW5nTm9kZTo6QXN5bmNGcmFtZU9yT3ZlcmZsb3dTY3JvbGxpbmdFbmFibGVkKSkpIHsK
ICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogCi0gICAgICAgIGlmIChyb290U3Rh
dGVOb2RlQ2hhbmdlZCB8fCByb290Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0
YXRlTm9kZTo6U2Nyb2xsTGF5ZXIpKQorICAgICAgICBpZiAocm9vdFN0YXRlTm9kZUNoYW5nZWQg
fHwgcm9vdE5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGU6OlNjcm9sbGVkQ29udGVudHNMYXllcikpCiAgICAgICAgICAgICBtX21haW5GcmFtZVNjcm9s
bFBvc2l0aW9uID0gRmxvYXRQb2ludCgpOwogCiAgICAgICAgIGlmIChyb290U3RhdGVOb2RlQ2hh
bmdlZCB8fCByb290Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVT
Y3JvbGxpbmdOb2RlOjpFdmVudFRyYWNraW5nUmVnaW9uKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZS5jcHAJKHJldmlzaW9uIDI0MDg1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYs
NiArOTYsMTQgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6Y29tbWl0UwogCiAg
ICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGU6OkV4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIpKQogICAgICAgICBtX2V4cGVjdHNXaGVl
bEV2ZW50VGVzdFRyaWdnZXIgPSBzdGF0ZS5leHBlY3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCk7
CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKQorICAg
ICAgICBtX3Njcm9sbENvbnRhaW5lckxheWVyID0gc3RhdGUuc2Nyb2xsQ29udGFpbmVyTGF5ZXIo
KTsKKworICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlOjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpKQorICAgICAgICBtX3Njcm9sbGVkQ29u
dGVudHNMYXllciA9IHN0YXRlLnNjcm9sbGVkQ29udGVudHNMYXllcigpOworI2VuZGlmCiB9CiAK
IHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJl
bihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmIHN0YXRlTm9kZSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGUuaAkocmV2aXNpb24gMjQwODU1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYg
KzExMSwxMSBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIGV4cGVjdHNXaGVlbEV2ZW50VGVzdFRy
aWdnZXIoKSBjb25zdCB7IHJldHVybiBtX2V4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXI7IH0K
IAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIENBTGF5ZXIgKnNjcm9sbENvbnRhaW5lckxheWVy
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxDb250YWluZXJMYXllci5nZXQoKTsgfQorICAgIENB
TGF5ZXIgKnNjcm9sbGVkQ29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsZWRD
b250ZW50c0xheWVyLmdldCgpOyB9CisjZW5kaWYKKwogICAgIFdFQkNPUkVfRVhQT1JUIExheW91
dFBvaW50IHBhcmVudFRvTG9jYWxQb2ludChMYXlvdXRQb2ludCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgTGF5b3V0UG9pbnQgbG9jYWxUb0NvbnRlbnRzUG9pbnQoTGF5b3V0
UG9pbnQpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC0xMzEsNiArMTM2LDExIEBAIHByaXZhdGU6CiAj
ZW5kaWYKICAgICBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMgbV9zY3JvbGxhYmxlQXJlYVBhcmFt
ZXRlcnM7CiAgICAgYm9vbCBtX2V4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIgeyBmYWxzZSB9
OworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fc2Nyb2xs
Q29udGFpbmVyTGF5ZXI7CisgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fc2Nyb2xsZWRDb250ZW50
c0xheWVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZUlPUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lv
cy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLmgJKHJldmlzaW9uIDI0MDg1NSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlSU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDEyICs2MSw5IEBAIHByb3Rl
Y3RlZDoKICAgICBGbG9hdFBvaW50IG1pbmltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IG92ZXJy
aWRlOwogICAgIEZsb2F0UG9pbnQgbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKLSAgICBDQUxheWVyICpzY3JvbGxMYXllcigpIGNvbnN0OwotCiBwcml2YXRlOgogICAg
IHZvaWQgdXBkYXRlQ2hpbGROb2Rlc0FmdGVyU2Nyb2xsKGNvbnN0IEZsb2F0UG9pbnQmKTsKIAot
ICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3Njcm9sbExheWVyOwogICAgIFJldGFpblB0cjxDQUxh
eWVyPiBtX2NvdW50ZXJTY3JvbGxpbmdMYXllcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9o
ZWFkZXJMYXllcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9mb290ZXJMYXllcjsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLm1tCShyZXZpc2lvbiAy
NDA4NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTksOSArNTksNiBA
QCB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1M6CiAgICAgCiAgICAgY29u
c3QgYXV0byYgc2Nyb2xsaW5nU3RhdGVOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVGcmFt
ZVNjcm9sbGluZ05vZGU+KHN0YXRlTm9kZSk7CiAKLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2Rl
Lmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlNjcm9sbExheWVyKSkKLSAg
ICAgICAgbV9zY3JvbGxMYXllciA9IHNjcm9sbGluZ1N0YXRlTm9kZS5sYXllcigpOwotCiAgICAg
aWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVG
cmFtZVNjcm9sbGluZ05vZGU6OkNvdW50ZXJTY3JvbGxpbmdMYXllcikpCiAgICAgICAgIG1fY291
bnRlclNjcm9sbGluZ0xheWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmNvdW50ZXJTY3JvbGxpbmdM
YXllcigpOwogCkBAIC03OCw3ICs3NSw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZUlPUzoKICAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVxdWVzdGVkU2Nyb2xsUG9z
aXRpb24pKQogICAgICAgICAgICAgICAgIG1fcHJvYmFibGVNYWluVGhyZWFkU2Nyb2xsUG9zaXRp
b24gPSBzY3JvbGxpbmdTdGF0ZU5vZGUucmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24oKTsKICAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIENHUG9pbnQgc2Nyb2xsTGF5ZXJQb3NpdGlv
biA9IG1fc2Nyb2xsTGF5ZXIuZ2V0KCkucG9zaXRpb247CisgICAgICAgICAgICAgICAgQ0dQb2lu
dCBzY3JvbGxMYXllclBvc2l0aW9uID0gc2Nyb2xsZWRDb250ZW50c0xheWVyKCkucG9zaXRpb247
CiAgICAgICAgICAgICAgICAgbV9wcm9iYWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbiA9IElu
dFBvaW50KC1zY3JvbGxMYXllclBvc2l0aW9uLngsIC1zY3JvbGxMYXllclBvc2l0aW9uLnkpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xMDYsNyArMTAzLDcgQEAgRmxvYXRQb2ludCBT
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdObwogICAgIGlmIChzaG91bGRVcGRhdGVTY3JvbGxM
YXllclBvc2l0aW9uU3luY2hyb25vdXNseSgpKQogICAgICAgICByZXR1cm4gbV9wcm9iYWJsZU1h
aW5UaHJlYWRTY3JvbGxQb3NpdGlvbjsKIAotICAgIHJldHVybiAtbV9zY3JvbGxMYXllci5nZXQo
KS5wb3NpdGlvbjsKKyAgICByZXR1cm4gLXNjcm9sbGVkQ29udGVudHNMYXllcigpLnBvc2l0aW9u
OwogfQogCiB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1M6OnNldFNjcm9s
bFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQpAQCAtMTMwLDcgKzEy
Nyw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUzoKIHZvaWQgU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUzo6c2V0U2Nyb2xsTGF5ZXJQb3NpdGlvbihj
b25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgY29uc3QgRmxvYXRSZWN0JikKIHsKICAg
ICBBU1NFUlQoIXNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25TeW5jaHJvbm91c2x5KCkp
OwotICAgIFttX3Njcm9sbExheWVyIHNldFBvc2l0aW9uOi1zY3JvbGxQb3NpdGlvbl07CisgICAg
W3Njcm9sbGVkQ29udGVudHNMYXllcigpIHNldFBvc2l0aW9uOi1zY3JvbGxQb3NpdGlvbl07CiAK
ICAgICB1cGRhdGVDaGlsZE5vZGVzQWZ0ZXJTY3JvbGwoc2Nyb2xsUG9zaXRpb24pOwogfQpAQCAt
MjIwLDExICsyMTcsNiBAQCBGbG9hdFBvaW50IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
CiAgICAgcmV0dXJuIHBvc2l0aW9uOwogfQogCi1DQUxheWVyICpTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlSU9TOjpzY3JvbGxMYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2Ny
b2xsTGF5ZXIuZ2V0KCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZUZpeGVkTm9kZS5tbQkocmV2aXNpb24gMjQwODU1KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjpjb21taXRT
dGF0ZQogewogICAgIGNvbnN0IFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlJiBmaXhlZFN0YXRlTm9k
ZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlPihzdGF0ZU5vZGUpOwogCi0gICAg
aWYgKGZpeGVkU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6
OlNjcm9sbExheWVyKSkKKyAgICBpZiAoZml4ZWRTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlTm9kZTo6TGF5ZXIpKQogICAgICAgICBtX2xheWVyID0gZml4ZWRTdGF0
ZU5vZGUubGF5ZXIoKTsKIAogICAgIGlmIChzdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlRml4ZWROb2RlOjpWaWV3cG9ydENvbnN0cmFpbnRzKSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMuaAkocmV2aXNpb24gMjQwODU1KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNiBAQCBwcm90ZWN0
ZWQ6CiAgICAgdW5zaWduZWQgZXhwb3NlZFVuZmlsbGVkQXJlYSgpIGNvbnN0OwogCiBwcml2YXRl
OgotICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3Njcm9sbExheWVyOwogICAgIFJldGFpblB0cjxD
QUxheWVyPiBtX3Jvb3RDb250ZW50c0xheWVyOwogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX2Nv
dW50ZXJTY3JvbGxpbmdMYXllcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9pbnNldENsaXBM
YXllcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1t
CShyZXZpc2lvbiAyNDA4NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMv
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTAwLDkgKzEwMCw2IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzoK
ICAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNo
aWxkcmVuKHN0YXRlTm9kZSk7CiAgICAgY29uc3QgYXV0byYgc2Nyb2xsaW5nU3RhdGVOb2RlID0g
ZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU+KHN0YXRlTm9kZSk7CiAK
LSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdT
dGF0ZU5vZGU6OlNjcm9sbExheWVyKSkKLSAgICAgICAgbV9zY3JvbGxMYXllciA9IHNjcm9sbGlu
Z1N0YXRlTm9kZS5sYXllcigpOwotCiAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OlJvb3RDb250ZW50
c0xheWVyKSkKICAgICAgICAgbV9yb290Q29udGVudHNMYXllciA9IHNjcm9sbGluZ1N0YXRlTm9k
ZS5yb290Q29udGVudHNMYXllcigpOwogCkBAIC0xMzUsNyArMTMyLDcgQEAgdm9pZCBTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOgogICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpS
ZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbikpCiAgICAgICAgICAgICAgICAgbV9wcm9iYWJsZU1haW5U
aHJlYWRTY3JvbGxQb3NpdGlvbiA9IHNjcm9sbGluZ1N0YXRlTm9kZS5yZXF1ZXN0ZWRTY3JvbGxQ
b3NpdGlvbigpOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQ0dQb2ludCBz
Y3JvbGxMYXllclBvc2l0aW9uID0gbV9zY3JvbGxMYXllci5nZXQoKS5wb3NpdGlvbjsKKyAgICAg
ICAgICAgICAgICBDR1BvaW50IHNjcm9sbExheWVyUG9zaXRpb24gPSBzY3JvbGxlZENvbnRlbnRz
TGF5ZXIoKS5wb3NpdGlvbjsKICAgICAgICAgICAgICAgICBtX3Byb2JhYmxlTWFpblRocmVhZFNj
cm9sbFBvc2l0aW9uID0gRmxvYXRQb2ludCgtc2Nyb2xsTGF5ZXJQb3NpdGlvbi54LCAtc2Nyb2xs
TGF5ZXJQb3NpdGlvbi55KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTczLDcgKzE3
MCw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzoKICAgICBpZiAo
c2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKSkKICAgICAgICAgc2V0U2Nyb2xsUG9z
aXRpb24oc2Nyb2xsaW5nU3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKCkpOwogCi0g
ICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVOb2RlOjpTY3JvbGxMYXllcikKKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5n
ZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGVkQ29udGVudHNM
YXllcikKICAgICAgICAgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlRvdGFsQ29udGVudHNTaXplKQogICAgICAgICB8
fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6U2Nyb2xsYWJsZUFyZWFTaXplKSkKICAgICAgICAgdXBkYXRlTWFpbkZyYW1l
UGluU3RhdGUoc2Nyb2xsUG9zaXRpb24oKSk7CkBAIC0yMjEsNyArMjE4LDcgQEAgRmxvYXRQb2lu
dCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdObwogICAgIGlmIChzaG91bGRVcGRhdGVTY3Jv
bGxMYXllclBvc2l0aW9uU3luY2hyb25vdXNseSgpKQogICAgICAgICByZXR1cm4gbV9wcm9iYWJs
ZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbjsKIAotICAgIHJldHVybiAtbV9zY3JvbGxMYXllci5n
ZXQoKS5wb3NpdGlvbjsKKyAgICByZXR1cm4gLXNjcm9sbGVkQ29udGVudHNMYXllcigpLnBvc2l0
aW9uOwogfQogCiB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OnNldFNj
cm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQpAQCAtMjY5LDcg
KzI2Niw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzoKIHsKICAg
ICBBU1NFUlQoIXNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25TeW5jaHJvbm91c2x5KCkp
OwogCi0gICAgbV9zY3JvbGxMYXllci5nZXQoKS5wb3NpdGlvbiA9IC1wb3NpdGlvbjsKKyAgICBz
Y3JvbGxlZENvbnRlbnRzTGF5ZXIoKS5wb3NpdGlvbiA9IC1wb3NpdGlvbjsKIAogICAgIEZsb2F0
UmVjdCB2aXNpYmxlQ29udGVudFJlY3QocG9zaXRpb24sIHNjcm9sbGFibGVBcmVhU2l6ZSgpKTsK
ICAgICBGbG9hdFJlY3QgZml4ZWRQb3NpdGlvblJlY3Q7CkBAIC0zODQsNyArMzgxLDcgQEAgdW5z
aWduZWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZQogICAgIFJlZ2lvbiBwYWludGVk
VmlzaWJsZVRpbGVzOwogCiAgICAgRGVxdWU8Q0FMYXllcio+IGxheWVyUXVldWU7Ci0gICAgbGF5
ZXJRdWV1ZS5hcHBlbmQobV9zY3JvbGxMYXllci5nZXQoKSk7CisgICAgbGF5ZXJRdWV1ZS5hcHBl
bmQoc2Nyb2xsZWRDb250ZW50c0xheWVyKCkpOwogICAgIFBsYXRmb3JtTGF5ZXJMaXN0IHRpbGVz
OwogCiAgICAgd2hpbGUgKCFsYXllclF1ZXVlLmlzRW1wdHkoKSAmJiB0aWxlcy5pc0VtcHR5KCkp
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMu
aAkocmV2aXNpb24gMjQwODU1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMuaAkod29ya2luZyBjb3B5KQpA
QCAtNTgsMTEgKzU4LDYgQEAgcHJpdmF0ZToKIAogICAgIFNjcm9sbGluZ0V2ZW50UmVzdWx0IGhh
bmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jikgb3ZlcnJpZGU7CiAKLQot
ICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3Njcm9sbExheWVyOwotICAgIFJldGFpblB0cjxDQUxh
eWVyPiBtX3Njcm9sbGVkQ29udGVudHNMYXllcjsKLQotCiAgICAgU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZU1hYyBtX2RlbGVnYXRlOwogCiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Nj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMubW0JKHJldmlzaW9uIDI0MDg1NSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NCwxMyArNTQsNyBAQCB2
b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNCiB7CiAgICAgU2Nyb2xsaW5n
VHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihzdGF0
ZU5vZGUpOwogICAgIGNvbnN0IGF1dG8mIHNjcm9sbGluZ1N0YXRlTm9kZSA9IGRvd25jYXN0PFNj
cm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlPihzdGF0ZU5vZGUpOwotCi0gICAgaWYg
KHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2Rl
OjpTY3JvbGxMYXllcikpCi0gICAgICAgIG1fc2Nyb2xsTGF5ZXIgPSBzY3JvbGxpbmdTdGF0ZU5v
ZGUubGF5ZXIoKTsKLQotICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKSkK
LSAgICAgICAgbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIgPSBzY3JvbGxpbmdTdGF0ZU5vZGUuc2Ny
b2xsZWRDb250ZW50c0xheWVyKCk7Ci0KKyAgICBVTlVTRURfUEFSQU0oc2Nyb2xsaW5nU3RhdGVO
b2RlKTsKICAgICAvLyBGSVhNRTogU2Nyb2xsIHNuYXAgZGF0YS4KIH0KIApAQCAtMTA4LDcgKzEw
Miw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU0KIAogRmxvYXRQ
b2ludCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjOjpzY3JvbGxQb3NpdGlv
bigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIC1tX3Njcm9sbGVkQ29udGVudHNMYXllci5nZXQoKS5w
b3NpdGlvbjsKKyAgICByZXR1cm4gLXNjcm9sbGVkQ29udGVudHNMYXllcigpLnBvc2l0aW9uOwog
fQogCiB2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWM6OnNldFNjcm9s
bFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQpAQCAtMTMwLDcgKzEy
NCw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU0KIAogdm9pZCBT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjOjpzZXRTY3JvbGxMYXllclBvc2l0
aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBjb25zdCBGbG9hdFJlY3QmIGZp
eGVkUG9zaXRpb25SZWN0KQogewotICAgIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyLmdldCgpLnBv
c2l0aW9uID0gLXNjcm9sbFBvc2l0aW9uOworICAgIHNjcm9sbGVkQ29udGVudHNMYXllcigpLnBv
c2l0aW9uID0gLXNjcm9sbFBvc2l0aW9uOwogICAgIGlmICghbV9jaGlsZHJlbikKICAgICAgICAg
cmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZVN0aWNreU5vZGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tCShyZXZpc2lvbiAyNDA4NTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBTY3JvbGxpbmdU
cmVlU3RpY2t5Tm9kZTo6Y29tbWl0U3RhdAogewogICAgIGNvbnN0IFNjcm9sbGluZ1N0YXRlU3Rp
Y2t5Tm9kZSYgc3RpY2t5U3RhdGVOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVTdGlja3lO
b2RlPihzdGF0ZU5vZGUpOwogCi0gICAgaWYgKHN0aWNreVN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpTY3JvbGxMYXllcikpCisgICAgaWYgKHN0aWNreVN0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpMYXllcikpCiAg
ICAgICAgIG1fbGF5ZXIgPSBzdGlja3lTdGF0ZU5vZGUubGF5ZXIoKTsKIAogICAgIGlmIChzdGF0
ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZTo6Vmlld3Bv
cnRDb25zdHJhaW50cykpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAkocmV2aXNpb24gMjQwODU1KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU0NCwxOSArNTQ0LDIyIEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpkaWRDaGFu
Z2VQbGEKIAogICAgIGF1dG8qIGJhY2tpbmcgPSBsYXllci5iYWNraW5nKCk7CiAgICAgaWYgKGF1
dG8gbm9kZUlEID0gYmFja2luZy0+c2Nyb2xsaW5nTm9kZUlERm9yUm9sZShTY3JvbGxDb29yZGlu
YXRpb25Sb2xlOjpWaWV3cG9ydENvbnN0cmFpbmVkKSkKLSAgICAgICAgc2Nyb2xsaW5nQ29vcmRp
bmF0b3ItPnNldE5vZGVMYXllcnMobm9kZUlELCBiYWNraW5nLT5ncmFwaGljc0xheWVyKCkpOwor
ICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2V0Tm9kZUxheWVycyhub2RlSUQsIHsgYmFj
a2luZy0+Z3JhcGhpY3NMYXllcigpIH0pOwogCiAgICAgaWYgKGF1dG8gbm9kZUlEID0gYmFja2lu
Zy0+c2Nyb2xsaW5nTm9kZUlERm9yUm9sZShTY3JvbGxDb29yZGluYXRpb25Sb2xlOjpTY3JvbGxp
bmcpKSB7CiAgICAgICAgIC8vIEZJWE1FOiB3b3VsZCBiZSBuaWNlIHRvIG5vdCBoYXZlIHRvIHNw
ZWNpYWwtY2FzZSB0aGUgcm9vdC4KKyAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Ok5vZGVM
YXllcnMgbm9kZUxheWVyczsKICAgICAgICAgaWYgKGxheWVyLmlzUmVuZGVyVmlld0xheWVyKCkp
IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBSZW9yZ2FuaXplIHRoZSBsYXllcnMgYW5kIHBhc3Mg
dGhlIHNjcm9sbGVkQ29udGVudHNMYXllci4KLSAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5h
dG9yLT5zZXROb2RlTGF5ZXJzKG5vZGVJRCwgbV9zY3JvbGxMYXllci5nZXQoKSwgbnVsbHB0ciwg
Zml4ZWRSb290QmFja2dyb3VuZExheWVyKCksIGNsaXBMYXllcigpLCBtX3Jvb3RDb250ZW50c0xh
eWVyLmdldCgpKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBSZW9yZ2FuaXplIHRoZSBsYXllcnMg
YW5kIHBhc3MgdGhlIHNjcm9sbENvbnRhaW5lckxheWVyLgorICAgICAgICAgICAgbm9kZUxheWVy
cyA9IHsgbnVsbHB0ciwgbnVsbHB0ciwgbV9zY3JvbGxMYXllci5nZXQoKSwgZml4ZWRSb290QmFj
a2dyb3VuZExheWVyKCksIGNsaXBMYXllcigpLCBtX3Jvb3RDb250ZW50c0xheWVyLmdldCgpIH07
CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNldE5v
ZGVMYXllcnMobm9kZUlELCBiYWNraW5nLT5zY3JvbGxpbmdMYXllcigpLCBiYWNraW5nLT5zY3Jv
bGxpbmdDb250ZW50c0xheWVyKCkpOworICAgICAgICAgICAgbm9kZUxheWVycyA9IHsgbGF5ZXIu
YmFja2luZygpLT5ncmFwaGljc0xheWVyKCksIGJhY2tpbmctPnNjcm9sbGluZ0xheWVyKCksIGJh
Y2tpbmctPnNjcm9sbGluZ0NvbnRlbnRzTGF5ZXIoKSB9OworCisgICAgICAgIHNjcm9sbGluZ0Nv
b3JkaW5hdG9yLT5zZXROb2RlTGF5ZXJzKG5vZGVJRCwgbm9kZUxheWVycyk7CiAgICAgfQogCiAg
ICAgaWYgKGF1dG8gbm9kZUlEID0gYmFja2luZy0+c2Nyb2xsaW5nTm9kZUlERm9yUm9sZShTY3Jv
bGxDb29yZGluYXRpb25Sb2xlOjpGcmFtZUhvc3RpbmcpKQotICAgICAgICBzY3JvbGxpbmdDb29y
ZGluYXRvci0+c2V0Tm9kZUxheWVycyhub2RlSUQsIGJhY2tpbmctPmdyYXBoaWNzTGF5ZXIoKSk7
CisgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXROb2RlTGF5ZXJzKG5vZGVJRCwgeyBi
YWNraW5nLT5ncmFwaGljc0xheWVyKCkgfSk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpkaWRQYWludEJhY2tpbmcoUmVuZGVyTGF5ZXJCYWNraW5nKikKQEAgLTM5MDUsNyArMzkw
OCw3IEBAIFNjcm9sbGluZ05vZGVJRCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnUKICAgICBMT0df
V0lUSF9TVFJFQU0oQ29tcG9zaXRpbmcsIHN0cmVhbSA8PCAiUmVnaXN0ZXJpbmcgVmlld3BvcnRD
b25zdHJhaW5lZCAiIDw8IG5vZGVUeXBlIDw8ICIgbm9kZSAiIDw8IG5ld05vZGVJRCA8PCAiIChs
YXllciAiIDw8IGxheWVyLmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpLT5wcmltYXJ5TGF5ZXJJ
RCgpIDw8ICIpIGFzIGNoaWxkIG9mICIgPDwgdHJlZVN0YXRlLnBhcmVudE5vZGVJRC52YWx1ZU9y
KDApKTsKIAogICAgIGlmIChjaGFuZ2VzICYgU2Nyb2xsaW5nTm9kZUNoYW5nZUZsYWdzOjpMYXll
cikKLSAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNldE5vZGVMYXllcnMobmV3Tm9kZUlE
LCBsYXllci5iYWNraW5nKCktPmdyYXBoaWNzTGF5ZXIoKSk7CisgICAgICAgIHNjcm9sbGluZ0Nv
b3JkaW5hdG9yLT5zZXROb2RlTGF5ZXJzKG5ld05vZGVJRCwgeyBsYXllci5iYWNraW5nKCktPmdy
YXBoaWNzTGF5ZXIoKSB9KTsKIAogICAgIGlmIChjaGFuZ2VzICYgU2Nyb2xsaW5nTm9kZUNoYW5n
ZUZsYWdzOjpMYXllckdlb21ldHJ5KSB7CiAgICAgICAgIHN3aXRjaCAobm9kZVR5cGUpIHsKQEAg
LTQwMDksNyArNDAxMiw3IEBAIFNjcm9sbGluZ05vZGVJRCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnUKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjaGFuZ2VzICYgU2Nyb2xsaW5nTm9kZUNoYW5n
ZUZsYWdzOjpMYXllcikKLSAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXROb2Rl
TGF5ZXJzKG5ld05vZGVJRCwgbV9zY3JvbGxMYXllci5nZXQoKSwgbnVsbHB0ciwgZml4ZWRSb290
QmFja2dyb3VuZExheWVyKCksIGNsaXBMYXllcigpLCBtX3Jvb3RDb250ZW50c0xheWVyLmdldCgp
KTsKKyAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXROb2RlTGF5ZXJzKG5ld05v
ZGVJRCwgeyBudWxscHRyLCBudWxscHRyLCBtX3Njcm9sbExheWVyLmdldCgpLCBmaXhlZFJvb3RC
YWNrZ3JvdW5kTGF5ZXIoKSwgY2xpcExheWVyKCksIG1fcm9vdENvbnRlbnRzTGF5ZXIuZ2V0KCkg
fSk7CiAKICAgICAgICAgaWYgKGNoYW5nZXMgJiBTY3JvbGxpbmdOb2RlQ2hhbmdlRmxhZ3M6Okxh
eWVyR2VvbWV0cnkpIHsKICAgICAgICAgICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpTY3JvbGxp
bmdHZW9tZXRyeSBzY3JvbGxpbmdHZW9tZXRyeTsKQEAgLTQwMjQsNyArNDAyNyw3IEBAIFNjcm9s
bGluZ05vZGVJRCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnUKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgaWYgKGNoYW5nZXMgJiBTY3JvbGxpbmdOb2RlQ2hhbmdlRmxhZ3M6OkxheWVyKQot
ICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNldE5vZGVMYXllcnMobmV3Tm9kZUlE
LCBsYXllci5iYWNraW5nKCktPnNjcm9sbGluZ0xheWVyKCksIGxheWVyLmJhY2tpbmcoKS0+c2Ny
b2xsaW5nQ29udGVudHNMYXllcigpKTsKKyAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9y
LT5zZXROb2RlTGF5ZXJzKG5ld05vZGVJRCwgeyBsYXllci5iYWNraW5nKCktPmdyYXBoaWNzTGF5
ZXIoKSwgbGF5ZXIuYmFja2luZygpLT5zY3JvbGxpbmdMYXllcigpLCBsYXllci5iYWNraW5nKCkt
PnNjcm9sbGluZ0NvbnRlbnRzTGF5ZXIoKSB9KTsKIAogICAgICAgICBpZiAoY2hhbmdlcyAmIFNj
cm9sbGluZ05vZGVDaGFuZ2VGbGFnczo6TGF5ZXJHZW9tZXRyeSAmJiB0cmVlU3RhdGUucGFyZW50
Tm9kZUlEKSB7CiAgICAgICAgICAgICBSZW5kZXJMYXllciogc2Nyb2xsaW5nQW5jZXN0b3JMYXll
ciA9IG1fc2Nyb2xsaW5nTm9kZVRvTGF5ZXJNYXAuZ2V0KHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQu
dmFsdWUoKSk7CkBAIC00MDQ4LDcgKzQwNTEsNyBAQCBTY3JvbGxpbmdOb2RlSUQgUmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjp1CiAgICAgfQogCiAgICAgaWYgKGNoYW5nZXMgJiBTY3JvbGxpbmdOb2Rl
Q2hhbmdlRmxhZ3M6OkxheWVyKQotICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2V0Tm9k
ZUxheWVycyhuZXdOb2RlSUQsIGxheWVyLmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpKTsKKyAg
ICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNldE5vZGVMYXllcnMobmV3Tm9kZUlELCB7IGxh
eWVyLmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpIH0pOwogCiAgICAgaWYgKGNoYW5nZXMgJiBT
Y3JvbGxpbmdOb2RlQ2hhbmdlRmxhZ3M6OkxheWVyR2VvbWV0cnkgJiYgdHJlZVN0YXRlLnBhcmVu
dE5vZGVJRCkgewogICAgICAgICBSZW5kZXJMYXllciogc2Nyb2xsaW5nQW5jZXN0b3JMYXllciA9
IG1fc2Nyb2xsaW5nTm9kZVRvTGF5ZXJNYXAuZ2V0KHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQudmFs
dWUoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjQwODU1KQorKysgU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAxOS0wMi0wMSAgQW50
dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgRG9uJ3QgdXNlIGJhc2Ug
bGF5ZXIoKSBhcyB0aGUgc2Nyb2xsIGxheWVyIGluIHNjcm9sbGluZyB0cmVlLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MTYwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAg
KEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVOb2RlPjo6ZW5jb2RlKToKKyAgICAgICAgKEFy
Z3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVOb2RlPjo6ZGVjb2RlKToKKyAgICAgICAgKEFyZ3Vt
ZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlPjo6ZW5jb2RlKToKKyAgICAgICAg
KEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlPjo6ZGVjb2RlKToKKyAg
ICAgICAgKFdlYktpdDo6ZHVtcCk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6Y29ubmVjdFN0YXRlTm9kZUxheWVycyk6
CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JQcm94eTo6Y29ubmVjdFN0YXRlTm9kZUxheWVycyk6CisgICAgICAgICogVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZVJlbW90ZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZVJlbW90ZUlPUzo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgICog
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZUlPUzo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgICogVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZUlPUzo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgIChXZWJLaXQ6
OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OmNvbW1pdFN0YXRlQWZ0ZXJD
aGlsZHJlbik6CisKIDIwMTktMDItMDEgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtTT1VQXSBJbXByb3ZlIHVzZSBvZiBQQUw6OlNlc3Npb25J
RCBpbiBXZWJLaXRDb29raWVNYW5hZ2VyCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCShyZXZpc2lvbiAyNDA4NTUpCisrKyBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JUcmFuc2FjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDcgKzkwLDcgQEAgdm9p
ZCBBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlTm9kZT46OgogICAgIGVuY29kZXIgPDwgbm9k
ZS5wYXJlbnROb2RlSUQoKTsKICAgICBlbmNvZGVyIDw8IG5vZGUuY2hhbmdlZFByb3BlcnRpZXMo
KTsKICAgICAKLSAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVO
b2RlOjpTY3JvbGxMYXllcikpCisgICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlTm9kZTo6TGF5ZXIpKQogICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PEdy
YXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5sYXllcigpKTsKIH0KIApAQCAtMTAy
LDcgKzEwMiw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZU5vZGU+OjoKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbm9kZS5zZXRDaGFuZ2VkUHJvcGVydGllcyhjaGFu
Z2VkUHJvcGVydGllcyk7Ci0gICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlTm9kZTo6U2Nyb2xsTGF5ZXIpKSB7CisgICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6TGF5ZXIpKSB7CiAgICAgICAgIEdyYXBoaWNzTGF5ZXI6
OlBsYXRmb3JtTGF5ZXJJRCBsYXllcklEOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxh
eWVySUQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQxLDYgKzE0MSw4IEBAIHZv
aWQgQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZVNjcm9sbGkKICAgICBTQ1JPTExJTkdfTk9E
RV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpSZXF1ZXN0ZWRTY3JvbGxQb3Np
dGlvbiwgcmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24pCiAgICAgU0NST0xMSU5HX05PREVfRU5DT0RF
KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24sIHJl
cXVlc3RlZFNjcm9sbFBvc2l0aW9uUmVwcmVzZW50c1Byb2dyYW1tYXRpY1Njcm9sbCkKIAorICAg
IGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6
OlNjcm9sbENvbnRhaW5lckxheWVyKSkKKyAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxH
cmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+KG5vZGUuc2Nyb2xsQ29udGFpbmVyTGF5ZXIo
KSk7CiAgICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKSkKICAgICAgICAgZW5jb2RlciA8PCBzdGF0
aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+KG5vZGUuc2Nyb2xsZWRDb250
ZW50c0xheWVyKCkpOwogfQpAQCAtMjM4LDYgKzI0MCwxMyBAQCBib29sIEFyZ3VtZW50Q29kZXI8
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpCiAgICAgICAgIG5vZGUuc2V0UmVxdWVzdGVkU2Nyb2xsUG9z
aXRpb24oc2Nyb2xsUG9zaXRpb24sIHJlcHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGwpOwogICAg
IH0KIAorICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU6OlNjcm9sbENvbnRhaW5lckxheWVyKSkgeworICAgICAgICBHcmFwaGljc0xheWVy
OjpQbGF0Zm9ybUxheWVySUQgbGF5ZXJJRDsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShs
YXllcklEKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbm9kZS5zZXRTY3Jv
bGxDb250YWluZXJMYXllcihsYXllcklEKTsKKyAgICB9CisKICAgICBpZiAobm9kZS5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxlZENvbnRlbnRz
TGF5ZXIpKSB7CiAgICAgICAgIEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBsYXllcklE
OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxheWVySUQpKQpAQCAtNTE0LDYgKzUyMyw5
IEBAIHN0YXRpYyB2b2lkIGR1bXAoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFMKICAgICAgICAgdHMu
ZHVtcFByb3BlcnR5KCJyZXF1ZXN0ZWQtc2Nyb2xsLXBvc2l0aW9uLWlzLXByb2dyYW1hdGljIiwg
bm9kZS5yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvblJlcHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGwo
KSk7CiAgICAgfQogCisgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxDb250YWlu
ZXJMYXllcikpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2Nyb2xsLWNvbnRhaW5lci1sYXll
ciIsIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5zY3Jv
bGxDb250YWluZXJMYXllcigpKSk7CisKICAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8
fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNj
cm9sbGVkQ29udGVudHNMYXllcikpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2Nyb2xsZWQt
Y29udGVudHMtbGF5ZXIiLCBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVy
SUQ+KG5vZGUuc2Nyb2xsZWRDb250ZW50c0xheWVyKCkpKTsKIH0KQEAgLTYwMSw3ICs2MTMsNyBA
QCBzdGF0aWMgdm9pZCBkdW1wKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTCiB7CiAgICAgdHMuZHVt
cFByb3BlcnR5KCJ0eXBlIiwgbm9kZS5ub2RlVHlwZSgpKTsKIAotICAgIGlmICghY2hhbmdlZFBy
b3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9k
ZTo6U2Nyb2xsTGF5ZXIpKQorICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6TGF5ZXIpKQogICAgICAgICB0
cy5kdW1wUHJvcGVydHkoImxheWVyIiwgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllcjo6UGxhdGZv
cm1MYXllcklEPihub2RlLmxheWVyKCkpKTsKICAgICAKICAgICBzd2l0Y2ggKG5vZGUubm9kZVR5
cGUoKSkgewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clByb3h5LmNwcAkocmV2aXNpb24gMjQwODU1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3JQcm94eTo6Y28KIHZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6Y29ubmVj
dFN0YXRlTm9kZUxheWVycyhTY3JvbGxpbmdTdGF0ZVRyZWUmIHN0YXRlVHJlZSwgY29uc3QgUmVt
b3RlTGF5ZXJUcmVlSG9zdCYgbGF5ZXJUcmVlSG9zdCkKIHsKICAgICBmb3IgKGF1dG8mIGN1cnJO
b2RlIDogc3RhdGVUcmVlLm5vZGVNYXAoKS52YWx1ZXMoKSkgewotICAgICAgICBpZiAoY3Vyck5v
ZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlNjcm9sbExheWVyKSkK
KyAgICAgICAgaWYgKGN1cnJOb2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVO
b2RlOjpMYXllcikpCiAgICAgICAgICAgICBjdXJyTm9kZS0+c2V0TGF5ZXIobGF5ZXJUcmVlSG9z
dC5sYXllckZvcklEKGN1cnJOb2RlLT5sYXllcigpKSk7CiAKICAgICAgICAgc3dpdGNoIChjdXJy
Tm9kZS0+bm9kZVR5cGUoKSkgewpAQCAtMTA3LDYgKzEwNyw5IEBAIHZvaWQgUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eTo6Y28KICAgICAgICAgY2FzZSBTY3JvbGxpbmdOb2RlVHlwZTo6
U3ViZnJhbWU6IHsKICAgICAgICAgICAgIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2Rl
JiBzY3JvbGxpbmdTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xs
aW5nTm9kZT4oKmN1cnJOb2RlKTsKICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHNjcm9s
bGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlOjpTY3JvbGxDb250YWluZXJMYXllcikpCisgICAgICAgICAgICAgICAgc2Nyb2xsaW5nU3Rh
dGVOb2RlLnNldFNjcm9sbENvbnRhaW5lckxheWVyKGxheWVyVHJlZUhvc3QubGF5ZXJGb3JJRChz
Y3JvbGxpbmdTdGF0ZU5vZGUuc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKSkpOworCiAgICAgICAgICAg
ICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGVkQ29udGVudHNMYXllcikpCiAgICAgICAgICAgICAgICAg
c2Nyb2xsaW5nU3RhdGVOb2RlLnNldFNjcm9sbGVkQ29udGVudHNMYXllcihsYXllclRyZWVIb3N0
LmxheWVyRm9ySUQoc2Nyb2xsaW5nU3RhdGVOb2RlLnNjcm9sbGVkQ29udGVudHNMYXllcigpKSk7
CiAKQEAgLTEzNSw2ICsxMzgsOCBAQCB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJv
eHk6OmNvCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBTY3JvbGxpbmdOb2RlVHlwZTo6T3ZlcmZs
b3c6IHsKICAgICAgICAgICAgIFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlJiBz
Y3JvbGxpbmdTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZT4oKmN1cnJOb2RlKTsKKyAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsQ29u
dGFpbmVyTGF5ZXIpKQorICAgICAgICAgICAgICAgIHNjcm9sbGluZ1N0YXRlTm9kZS5zZXRTY3Jv
bGxDb250YWluZXJMYXllcihsYXllclRyZWVIb3N0LmxheWVyRm9ySUQoc2Nyb2xsaW5nU3RhdGVO
b2RlLnNjcm9sbENvbnRhaW5lckxheWVyKCkpKTsKIAogICAgICAgICAgICAgaWYgKHNjcm9sbGlu
Z1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
OjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpKQogICAgICAgICAgICAgICAgIHNjcm9sbGluZ1N0YXRl
Tm9kZS5zZXRTY3JvbGxlZENvbnRlbnRzTGF5ZXIobGF5ZXJUcmVlSG9zdC5sYXllckZvcklEKHNj
cm9sbGluZ1N0YXRlTm9kZS5zY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSkpOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvclByb3h5SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5t
bQkocmV2aXNpb24gMjQwODU1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC01MCwxMyArNTAsMTYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB2b2lk
IFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmNvbm5lY3RTdGF0ZU5vZGVMYXllcnMo
U2Nyb2xsaW5nU3RhdGVUcmVlJiBzdGF0ZVRyZWUsIGNvbnN0IFJlbW90ZUxheWVyVHJlZUhvc3Qm
IGxheWVyVHJlZUhvc3QpCiB7CiAgICAgZm9yIChhdXRvJiBjdXJyTm9kZSA6IHN0YXRlVHJlZS5u
b2RlTWFwKCkudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKGN1cnJOb2RlLT5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpMYXllcikpCisgICAgICAgICAgICBjdXJyTm9kZS0+
c2V0TGF5ZXIobGF5ZXJUcmVlSG9zdC5sYXllckZvcklEKGN1cnJOb2RlLT5sYXllcigpKSk7Cisg
ICAgICAgIAogICAgICAgICBzd2l0Y2ggKGN1cnJOb2RlLT5ub2RlVHlwZSgpKSB7CiAgICAgICAg
IGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6Ok92ZXJmbG93OiB7CiAgICAgICAgICAgICBTY3JvbGxp
bmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZSYgc2Nyb2xsaW5nU3RhdGVOb2RlID0gZG93bmNh
c3Q8U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU+KCpjdXJyTm9kZSk7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFBy
b3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6U2Nyb2xsTGF5ZXIpKQotICAgICAgICAgICAgICAg
IHNjcm9sbGluZ1N0YXRlTm9kZS5zZXRMYXllcihsYXllclRyZWVIb3N0LmxheWVyRm9ySUQoc2Ny
b2xsaW5nU3RhdGVOb2RlLmxheWVyKCkpKTsKLSAgICAgICAgICAgIAorCisgICAgICAgICAgICBp
ZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU6OlNjcm9sbENvbnRhaW5lckxheWVyKSkKKyAgICAgICAgICAgICAgICBzY3Jv
bGxpbmdTdGF0ZU5vZGUuc2V0U2Nyb2xsQ29udGFpbmVyTGF5ZXIobGF5ZXJUcmVlSG9zdC5sYXll
ckZvcklEKHNjcm9sbGluZ1N0YXRlTm9kZS5zY3JvbGxDb250YWluZXJMYXllcigpKSk7CisKICAg
ICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKSkKICAgICAgICAg
ICAgICAgICBzY3JvbGxpbmdTdGF0ZU5vZGUuc2V0U2Nyb2xsZWRDb250ZW50c0xheWVyKGxheWVy
VHJlZUhvc3QubGF5ZXJGb3JJRChzY3JvbGxpbmdTdGF0ZU5vZGUuc2Nyb2xsZWRDb250ZW50c0xh
eWVyKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjQsOSArNjcsOSBAQCB2b2lkIFJlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmNvCiAgICAgICAgIGNhc2UgU2Nyb2xsaW5nTm9k
ZVR5cGU6Ok1haW5GcmFtZToKICAgICAgICAgY2FzZSBTY3JvbGxpbmdOb2RlVHlwZTo6U3ViZnJh
bWU6IHsKICAgICAgICAgICAgIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlJiBzY3Jv
bGxpbmdTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9k
ZT4oKmN1cnJOb2RlKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpTY3JvbGxMYXll
cikpCi0gICAgICAgICAgICAgICAgc2Nyb2xsaW5nU3RhdGVOb2RlLnNldExheWVyKGxheWVyVHJl
ZUhvc3QubGF5ZXJGb3JJRChzY3JvbGxpbmdTdGF0ZU5vZGUubGF5ZXIoKSkpOworCisgICAgICAg
ICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbENvbnRhaW5lckxheWVyKSkKKyAgICAgICAgICAgICAg
ICBzY3JvbGxpbmdTdGF0ZU5vZGUuc2V0U2Nyb2xsQ29udGFpbmVyTGF5ZXIobGF5ZXJUcmVlSG9z
dC5sYXllckZvcklEKHNjcm9sbGluZ1N0YXRlTm9kZS5zY3JvbGxDb250YWluZXJMYXllcigpKSk7
CiAKICAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKSkKICAg
ICAgICAgICAgICAgICBzY3JvbGxpbmdTdGF0ZU5vZGUuc2V0U2Nyb2xsZWRDb250ZW50c0xheWVy
KGxheWVyVHJlZUhvc3QubGF5ZXJGb3JJRChzY3JvbGxpbmdTdGF0ZU5vZGUuc2Nyb2xsZWRDb250
ZW50c0xheWVyKCkpKTsKQEAgLTg1LDggKzg4LDYgQEAgdm9pZCBSZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvclByb3h5OjpjbwogICAgICAgICBjYXNlIFNjcm9sbGluZ05vZGVUeXBlOjpGaXhlZDoK
ICAgICAgICAgY2FzZSBTY3JvbGxpbmdOb2RlVHlwZTo6U3RpY2t5OgogICAgICAgICBjYXNlIFNj
cm9sbGluZ05vZGVUeXBlOjpGcmFtZUhvc3Rpbmc6Ci0gICAgICAgICAgICBpZiAoY3Vyck5vZGUt
Pmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlNjcm9sbExheWVyKSkKLSAg
ICAgICAgICAgICAgICBjdXJyTm9kZS0+c2V0TGF5ZXIobGF5ZXJUcmVlSG9zdC5sYXllckZvcklE
KGN1cnJOb2RlLT5sYXllcigpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MubW0JKHJldmlzaW9uIDI0MDg1NSkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTIsOCArNTIsOSBA
QCB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vCiB7CiAgICAgU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUzo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihz
dGF0ZU5vZGUpOwogCi0gICAgaWYgKHN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxMYXllcikpIHsKLSAgICAgICAgaWYgKHNjcm9s
bExheWVyKCkgJiYgW1tzY3JvbGxMYXllcigpIGRlbGVnYXRlXSBpc0tpbmRPZkNsYXNzOltVSVNj
cm9sbFZpZXcgc2VsZl1dKQorICAgIC8vIEZJWE1FOiBTaG91bGQgYmUgU2Nyb2xsQ29udGFpbmVy
TGF5ZXIuCisgICAgaWYgKHN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpKSB7CisgICAgICAgIGlmIChz
Y3JvbGxlZENvbnRlbnRzTGF5ZXIoKSAmJiBbW3Njcm9sbGVkQ29udGVudHNMYXllcigpIGRlbGVn
YXRlXSBpc0tpbmRPZkNsYXNzOltVSVNjcm9sbFZpZXcgc2VsZl1dKQogICAgICAgICAgICAgbV9z
Y3JvbGxpbmdOb2RlRGVsZWdhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVJT1M+KCp0aGlzKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
bV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUgPSBudWxscHRyOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbQko
cmV2aXNpb24gMjQwODU1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05v
ZGVJT1M6On4KIAogdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpj
b21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9k
ZSYgc3RhdGVOb2RlKQogewotICAgIGlmIChzdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsTGF5ZXIpKQorICAgIGlmIChzdGF0ZU5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xs
Q29udGFpbmVyTGF5ZXIpKQogICAgICAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZS0+cmVzZXRT
Y3JvbGxWaWV3RGVsZWdhdGUoKTsKIAogICAgIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oc3RhdGVOb2RlKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVJT1MubW0JKHJldmlzaW9uIDI0MDg1NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTk0LDE3ICsxOTQsMjcgQEAgdm9pZCBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSQogCiB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVJT1M6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlJiBzY3JvbGxpbmdTdGF0ZU5vZGUpCiB7Ci0gICAgaWYgKHNjcm9sbGlu
Z1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpTY3JvbGxM
YXllcikpCi0gICAgICAgIG1fc2Nyb2xsTGF5ZXIgPSBzY3JvbGxpbmdTdGF0ZU5vZGUubGF5ZXIo
KTsKKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbENvbnRhaW5lckxheWVyKSkgeworICAgICAgICBS
ZXRhaW5QdHI8Q0FMYXllcj4gbGF5ZXI7CisgICAgICAgIGxheWVyID0gc2Nyb2xsaW5nU3RhdGVO
b2RlLnNjcm9sbENvbnRhaW5lckxheWVyKCk7CisgICAgICAgIGlmIChbW2xheWVyIGRlbGVnYXRl
XSBpc0tpbmRPZkNsYXNzOltVSVNjcm9sbFZpZXcgc2VsZl1dKQorICAgICAgICAgICAgbV9zY3Jv
bGxMYXllciA9IGxheWVyOworICAgIH0KIAotICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250
ZW50c0xheWVyKSkKLSAgICAgICAgbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIgPSBzY3JvbGxpbmdT
dGF0ZU5vZGUuc2Nyb2xsZWRDb250ZW50c0xheWVyKCk7CisgICAgLy8gRklNWEU6IFNjcm9sbENv
bnRhaW5lckxheWVyIHNob3VsZCBhbHdheXMgYmUgdGhlIFVJU2Nyb2xsVmlldyBsYXllci4KKyAg
ICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGVkQ29udGVudHNMYXllcikpIHsKKyAgICAgICAgUmV0YWlu
UHRyPENBTGF5ZXI+IGxheWVyOworICAgICAgICBsYXllciA9IHNjcm9sbGluZ1N0YXRlTm9kZS5z
Y3JvbGxlZENvbnRlbnRzTGF5ZXIoKTsKKyAgICAgICAgaWYgKFtbbGF5ZXIgZGVsZWdhdGVdIGlz
S2luZE9mQ2xhc3M6W1VJU2Nyb2xsVmlldyBzZWxmXV0pCisgICAgICAgICAgICBtX3Njcm9sbExh
eWVyID0gbGF5ZXI7CisgICAgfQogfQogCiB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVJT1M6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUmIHNjcm9sbGluZ1N0YXRlTm9kZSkKIHsKICAgICBTZXRGb3JTY29wZTxi
b29sPiB1cGRhdGluZ0NoYW5nZShtX3VwZGF0aW5nRnJvbVN0YXRlTm9kZSwgdHJ1ZSk7Ci0gICAg
aWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlOjpTY3JvbGxMYXllcikKKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhh
c0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbENvbnRh
aW5lckxheWVyKQorICAgICAgICB8fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKQog
ICAgICAgICB8fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6VG90YWxDb250ZW50c1NpemUpCiAgICAgICAgIHx8IHNjcm9s
bGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlOjpSZWFjaGFibGVDb250ZW50c1NpemUpCiAgICAgICAgIHx8IHNjcm9sbGluZ1N0YXRlTm9k
ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxQ
b3NpdGlvbikKQEAgLTIxMyw3ICsyMjMsOCBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVJCiAgICAgICAgIFVJU2Nyb2xsVmlldyAqc2Nyb2xsVmlldyA9IChVSVNjcm9s
bFZpZXcgKilbc2Nyb2xsTGF5ZXIoKSBkZWxlZ2F0ZV07CiAgICAgICAgIEFTU0VSVChbc2Nyb2xs
VmlldyBpc0tpbmRPZkNsYXNzOltVSVNjcm9sbFZpZXcgc2VsZl1dKTsKIAotICAgICAgICBpZiAo
c2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU6OlNjcm9sbExheWVyKSkgeworICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2Rl
Lmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbENv
bnRhaW5lckxheWVyKQorICAgICAgICAgICAgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5n
ZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGVkQ29udGVudHNM
YXllcikpIHsKICAgICAgICAgICAgIGlmICghbV9zY3JvbGxWaWV3RGVsZWdhdGUpCiAgICAgICAg
ICAgICAgICAgbV9zY3JvbGxWaWV3RGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tTY3JvbGxpbmdOb2Rl
U2Nyb2xsVmlld0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFNjcm9sbGluZ1RyZWVOb2RlRGVsZWdh
dGU6dGhpc10pOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>