<?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>216739</bug_id>
          
          <creation_ts>2020-09-19 18:47:50 -0700</creation_ts>
          <short_desc>Selection API: Further improvements to VisibleSelection, FrameSelection, and DOMSelection to preserve anchor and focus</short_desc>
          <delta_ts>2020-10-28 03:02:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=216748</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>216778</dependson>
          <blocked>216325</blocked>
    
    <blocked>218276</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mifenton</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1690138</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-19 18:47:50 -0700</bug_when>
    <thetext>Selection API: Further improvements to VisibleSelection, FrameSelection, and DOMSelection to preserve anchor and focus</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690142</commentid>
    <comment_count>1</comment_count>
      <attachid>409222</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-19 19:47:47 -0700</bug_when>
    <thetext>Created attachment 409222
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690149</commentid>
    <comment_count>2</comment_count>
      <attachid>409222</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-09-19 21:40:27 -0700</bug_when>
    <thetext>Comment on attachment 409222
Patch

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

Looks like editing/execCommand/insert-list-nested-with-orphaned.html is failing legitimately.

&gt; Source/WebCore/editing/VisibleSelection.cpp:234
&gt; +    m_baseIsFirst = m_base &lt;= m_extent;

We may need to take care of the case when m_base / m_extent turns until null even though m_anchor / m_focus aren&apos;t null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690189</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-20 11:49:11 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #2)
&gt; Looks like editing/execCommand/insert-list-nested-with-orphaned.html is
&gt; failing legitimately.

I’ve been studying the test, and I think the change in behavior is a small progression. The test does InsertOrderedList on a selection, and the new behavior is that after insertion the whole thing is still selected. The old behavior was that the caret was at the beginning of the line of the last list item. I don’t see this behavior, changing a selection into a caret, as intentional in the implementation and it’s not done in any normal case.

What I don’t understand yet is why the selection anchor and focus are not visible in the dump. Trying to figure that out now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690190</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-20 11:53:26 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; What I don’t understand yet is why the selection anchor and focus are not
&gt; visible in the dump. Trying to figure that out now.

Looks like dump-as-markup.js only dumps an anchor, focus, or caret indicator when they happen to have a text node as the container node, and misses them when the node is a non-text node. This seems like something we should fix by enhancing dump-as-markup.js, but further explains what is happening here.

The caret is not going to move itself into a text node any more, even if it is a caret! It was doing that before as non-standard behavior. We set the selection to the children of a node, so that node is going to be the container specified in the selection endpoints, no reason that they would move themselves to be in a text node.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690191</commentid>
    <comment_count>5</comment_count>
      <attachid>409240</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-20 12:00:55 -0700</bug_when>
    <thetext>Created attachment 409240
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690199</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-20 12:37:50 -0700</bug_when>
    <thetext>Committed r267329: &lt;https://trac.webkit.org/changeset/267329&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690389</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-21 12:02:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/69318406&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409222</attachid>
            <date>2020-09-19 19:47:47 -0700</date>
            <delta_ts>2020-09-19 21:40:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216739-20200919194746.patch</filename>
            <type>text/plain</type>
            <size>35437</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3MzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQ4NDE5MTE0YWY5YzZk
YWNhYjgxMTFlY2E2MzAxMTRlMDkzYjBmNS4uMmQwZmU3MzVjZjE3NmQ5MTE5Zjk5ODNiN2JjMjVk
NDQxN2ZmYzI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAyMC0wOS0xOSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2VsZWN0aW9uIEFQSTogRnVy
dGhlciBpbXByb3ZlbWVudHMgdG8gVmlzaWJsZVNlbGVjdGlvbiwgRnJhbWVTZWxlY3Rpb24sIGFu
ZCBET01TZWxlY3Rpb24gdG8gcHJlc2VydmUgYW5jaG9yIGFuZCBmb2N1cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2NzM5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgZG9uZSBjb3JyZWN0bHksIHRo
ZXNlIGNoYW5nZXMgc2hvdWxkIG5vIGhhdmUgZWZmZWN0cyB3aGVuIGxpdmUgcmFuZ2Ugc2VsZWN0
aW9uIG1vZGUKKyAgICAgICAgaXMgbm90IGVuYWJsZWQuIFRoaXMgYWRkcyBhIGZlYXR1cmUgd2hl
cmUgVmlzaWJsZVNlbGVjdGlvbiB0cmFja3MgdGhlIG9yaWdpbmFsIHBvaW50cywKKyAgICAgICAg
YmVmb3JlIHRoZSBWaXNpYmlsZVBvc2l0aW9uLXN0eWxlIGNhbm9uaWNhbGl6YXRpb24uIEl0IGFs
c28gc3RhcnRzIGEgdHJhbnNpdGlvbiBmcm9tCisgICAgICAgIHRoZSBiYXNlL2V4dGVudCB0ZXJt
aW5vbG9neSB0byB0aGUgc2xpZ2h0bHktZWFzaWVyLXRvLXVuZGVyc3RhbmQgYW5jaG9yL2ZvY3Vz
IHRlcm1pbm9sb2d5CisgICAgICAgIHRoYXQgaXMgdXNlZCBpbiB0aGUgc2VsZWN0aW9uIHNwZWNp
ZmljYXRpb24uIE5ldyBmdW5jdGlvbnMgbmFtZSB0aGVtIGFuY2hvciBhbmQgZm9jdXMsCisgICAg
ICAgIGV2ZW4gdGhvdWdoIHdlIHN0aWxsIGhhdmUgc29tZSBvbGQgb25lcyB0aGF0IGNhbGwgdGhl
bSBiYXNlIGFuZCBleHRlbnQuIEluIGFkZGl0aW9uLAorICAgICAgICBtYWRlIHNvbWUgb3RoZXIg
c21hbGwgcmVsYXRlZCBpbXByb3ZlbWVudHMgdG8gbGl2ZSByYW5nZSBzZWxlY3Rpb24gbW9kZSwg
d2l0aG91dCBjaGFuZ2luZworICAgICAgICBiZWhhdmlvciB3aGVuIG5vdCBpbiB0aGF0IG1vZGUu
IEhhdmUgYmVlbiB0ZXN0aW5nIHRoZXNlIGxvY2FsbHkgYnkgdHVybmluZyBvbiB0aGF0IG1vZGUK
KyAgICAgICAgYW5kIHJ1bm5pbmcgdmFyaW91cyB0ZXN0cy4KKworICAgICAgICAqIGVkaXRpbmcv
RnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Omlz
SW5Eb2N1bWVudFRyZWUgY29uc3QpOiBBZGRlZC4gVXNlZCBieSBET01TZWxlY3Rpb24gdG8KKyAg
ICAgICAgY29ycmVjdGx5IGhhbmRsZSBjYXNlcyB3aGVyZSB0aGUgc2VsZWN0aW9uIGlzIGluIGEg
c2hhZG93IHRyZWUgd2l0aG91dCByZXF1aXJpbmcgaXQKKyAgICAgICAgYWN0dWFsbHkgY3JlYXRl
IHRoZSBhc3NvY2lhdGVkIGxpdmUgcmFuZ2UganVzdCB0byBxdWVyeS4KKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lU2VsZWN0aW9uOjphc3NvY2lhdGVkTGl2ZVJhbmdlKTogVXNlIHRoZSBuZXcgVmlz
aWJsZVNlbGVjdGlvbjo6cmFuZ2UsCisgICAgICAgIHdoaWNoIGdpdmVzIHVzIG5vbi1jYW5vbmlj
YWxpemVkIHBvaW50cywgcmF0aGVyIHRoYW4gdGhlIGRlcHJlY2F0ZWQKKyAgICAgICAgVmlzaWJs
ZVNlbGVjdGlvbjo6Zmlyc3RSYW5nZSwgd2hpY2ggd2Ugd2lsbCBldmVudHVhbGx5IGJlIHJlbmFt
aW5nIG9yIGRlbGV0aW5nLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnVwZGF0
ZUZyb21Bc3NvY2lhdGVkTGl2ZVJhbmdlKTogVXNlCisgICAgICAgIG1ha2VDb250YWluZXJPZmZz
ZXRQb3NpdGlvbiBpbnN0ZWFkIG9mIGltcGxpY2l0bHkgdXNpbmcgbWFrZURlcHJlY2F0ZWRMZWdh
Y3lQb3NpdGlvbi4KKyAgICAgICAgQWxzbyByZW1vdmVkIHRoZSBGSVhNRSBhYm91dCBub3JtYWxp
emF0aW9uIG9mIGVuZHBvaW50cywgd2hpY2ggaXMgd2hhdCB0aGlzIHBhdGNoCisgICAgICAgIG1v
c3RseSBhZGRyZXNzZXM7IG5vIG5lZWQgdG8gdHJhY2sgd2l0aCBhIGNvbW1lbnQgbm93LgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnVwZGF0ZUFzc29jaWF0ZWRMaXZlUmFuZ2Up
OiBVc2UgVmlzaWJsZVNlbGVjdGlvbjo6cmFuZ2UKKyAgICAgICAgZm9yIHRoZSBzYW1lIHJlYXNv
biBhcyBhYm92ZS4KKworICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaDogQWRkZWQg
aXNJbkRvY3VtZW50VHJlZS4KKworICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjpWaXNpYmxlU2VsZWN0aW9u
KTogVXBkYXRlZCB0aGUgcHJpbWFyeSBjb25zdHJ1Y3RvciB0byBzZXQKKyAgICAgICAgbV9hbmNo
b3IvZm9jdXMgYW5kIGxldCB0aGUgdmFsaWRhdGUgZnVuY3Rpb24gc2V0IG1fYmFzZS9leHRlbnQv
c3RhcnQvZW5kL2Jhc2VJc0ZpcnN0LgorICAgICAgICBDaGFuZ2VkIG1vc3Qgb3RoZXIgY29uc3Ry
dWN0b3JzIHRvIGNhbGwgdGhhdCBwcmltYXJ5IG9uZS4KKyAgICAgICAgKFdlYkNvcmU6OlZpc2li
bGVTZWxlY3Rpb246OmFuY2hvciBjb25zdCk6IEFkZGVkLiBUaGlzIGlzIGEgbm9uLWNhbm9uaWNh
bGl6ZWQgcG9zaXRpb24uCisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjpmb2N1
cyBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbjo6dW5j
YW5vbmljYWxpemVkU3RhcnQgY29uc3QpOiBBZGRlZC4gVGhpcyBub24tY2Fub25pY2FsaXplZAor
ICAgICAgICB2ZXJzaW9uIG9mIHN0YXJ0IGlzIHVzZWQgYnkgbmV3IERPTVNlbGVjdGlvbiBjb2Rl
LCBidXQgZXZlbnR1YWxseSBzaG91bGQgYmUgdXNlZAorICAgICAgICBlbHNld2hlcmUgYXMgd2Vs
bCwgYW5kIHdlIG1heSBldmVudHVhbGx5IGVsaW1pbmF0ZSB0aGUgY2Fub25pY2FsaXplZCB2ZXJz
aW9uLgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbjo6dW5jYW5vbmljYWxpemVk
RW5kIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjpy
YW5nZSBjb25zdCk6IEFkZGVkLiBUaGlzIG5vbi1jYW5vbmljYWxpemVkIHZlcnNpb24gb2YKKyAg
ICAgICAgZmlyc3RSYW5nZSBoYXMgbWFueSBvZiB0aGUgc2FtZSBjb25zaWRlcmF0aW9ucyBhcyB0
aGUgb3RoZXIgZm91ciBmdW5jdGlvbnMgYWJvdmUuCisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxl
U2VsZWN0aW9uOjpzZXRCYXNlKTogU2V0IG1fYW5jaG9yIGluc3RlYWQgb2YgbV9iYXNlLiBFdmVu
dHVhbGx5IHdlCisgICAgICAgIHdpbGwgd2FudCB0byByZW5hbWUgdGhpcyBmdW5jdGlvbiwgdG9v
LCBidXQgdGhlcmUgaXMgbm8gbmVlZCB0byBkbyB0aGF0IG5vdy4KKyAgICAgICAgKFdlYkNvcmU6
OlZpc2libGVTZWxlY3Rpb246OnNldEV4dGVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
VmlzaWJsZVNlbGVjdGlvbjo6c2V0QmFzZUFuZEV4dGVudFRvRGVlcEVxdWl2YWxlbnRzKTogUmV3
cm90ZSB0byB0YWtlCisgICAgICAgIG1fYW5jaG9yIGFuZCBtX2ZvY3VzIGFzIGlucHV0cyBhbmQg
bm93IG1fYmFzZSBhbmQgbV9leHRlbnQgYXJlIHB1cmUgb3V0cHV0cy4KKyAgICAgICAgTWF5IHdh
bnQgdG8gcmVuYW1lIHRoaXMgbGF0ZXIsIGJlY2F1c2UgImRlZXAgZXF1aXZhbGVudHMiIGlzIGEg
ZnVubnkgd2F5IHRvIHNheQorICAgICAgICB0aGF0IHRoaXMgZnVuY3Rpb24gc2V0cyBiYXNlIGFu
ZCBleHRlbnQgdG8gY2Fub25pY2FsaXplZCB2YWx1ZXMuCisgICAgICAgIChXZWJDb3JlOjpWaXNp
YmxlU2VsZWN0aW9uOjphZGp1c3RTZWxlY3Rpb25SZXNwZWN0aW5nR3JhbnVsYXJpdHkpOiBSZW5h
bWVkIGZyb20KKyAgICAgICAgc2V0U3RhcnRBbmRFbmRGcm9tQmFzZUFuZEV4dGVudFJlc3BlY3Rp
bmdHcmFudWxhcml0eS4gVGhpcyBub3cgdGFrZXMgbV9zdGFydC9lbmQKKyAgICAgICAgYXMgaW5w
dXQgYXMgd2VsbCBhcyBvdXRwdXQsIGJlY2F1c2UgdGhlIHZhbGlkYXRlIGZ1bmN0aW9uIG5lZWRz
IHRvIGNoZWNrCisgICAgICAgIGlmIHRoZSBmdW5jdGlvbiBjaGFuZ2VzIG1fc3RhcnQvZW5kIHNv
IGl0IGNhbiB1cGRhdGUgbV9hbmNob3IvZm9jdXMuIEFsc28gZGlkIGEgdGlueQorICAgICAgICBi
aXQgb2YgcmVmYWN0b3JpbmcgdG8gdXNlIHN0ZDo6c3dhcC4KKyAgICAgICAgKFdlYkNvcmU6OlZp
c2libGVTZWxlY3Rpb246OnZhbGlkYXRlKTogUmVmaW5lZCB0aGUgY29kZSB0byBoYW5kbGUgY2Fu
b25pY2FsaXphdGlvbgorICAgICAgICBkaWZmZXJlbnRseSBmcm9tIGV4cGFuZGluZyBkdWUgdG8g
Z3JhbnVsYXJpdHkuIENhbm9uaWNhbGl6YXRpb24gaXMgZG9uZSBwcmVzZXJ2aW5nCisgICAgICAg
IHRoZSBvcmlnaW5hbCBtX2FuY2hvci9mb2N1cyBhcyBpdCBtb3N0bHkgYWx3YXlzIGhhcyBiZWVu
LiBCdXQgZXhwYW5zaW9uIGR1ZSB0bworICAgICAgICBncmFudWxhcml0eSBub3cgY2hhbmdlcyBt
X2FuY2hvci9mb2N1cy9iYXNlL2V4dGVudCByYXRoZXIgdGhhbiBqdXN0IG1fc3RhcnQvZW5kLgor
ICAgICAgICBUaGlzIG1ha2VzIHNlbnNlIGJlY2F1c2UgZ3JhbnVsYXJpdHkgY2hhbmdlcyBhY3R1
YWxseSBhZmZlY3Qgd2hhdCBpcyBzZWxlY3RlZCwKKyAgICAgICAgd2hpbGUgY2Fub25pY2FsaXph
dGlvbiBqdXN0IGNoYW5nZXMgaG93IHRoZSBzZWxlY3Rpb24gaXMgZXhwcmVzc2VkIGFuZCB0cmFj
a2VkLgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbjo6c2V0V2l0aG91dFZhbGlk
YXRpb24pOiBTZXQgbV9hbmNob3IvZm9jdXMuIEluIHRoZSBmdXR1cmUsCisgICAgICAgIHdlIGNh
biBwcm9iYWJseSBnZXQgcmlkIG9mIHRoaXMgZXZlbnR1YWxseSwgYmVjYXVzZSB0aGUgInZhbGlk
YXRpb24iIHRhbGtlZCBhYm91dAorICAgICAgICBoZXJlIGlzIHRoZSB1bndhbnRlZCBjYW5vbmlj
YWxpemF0aW9uLiBCdXQgdGhhdCdzIGEgcmVmaW5lbWVudCBmb3IgdGhlIGZ1dHVyZS4KKyAgICAg
ICAgKFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb246OmFkanVzdFNlbGVjdGlvblRvQXZvaWRDcm9z
c2luZ1NoYWRvd0JvdW5kYXJpZXMpOgorICAgICAgICBVcGRhdGUgbV9mb2N1cywgbm90IGp1c3Qg
bV9leHRlbnQsIGlmIHdlIGhhdmUgdG8gYWRqdXN0LiBBbHNvIHJlbW92ZWQgYW4gdW5ubmVjZXNz
YXJ5CisgICAgICAgIG51bGwgY2hlY2sgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGZ1bmN0aW9uLgor
ICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbjo6YWRqdXN0U2VsZWN0aW9uVG9Bdm9p
ZENyb3NzaW5nRWRpdGluZ0JvdW5kYXJpZXMpOiBEaXR0by4KKyAgICAgICAgQWxzbyByZW1vdmVk
IHRoZSBhc3NlcnRpb25zIGJlY2F1c2UgdGhlc2Ugc2l0dWF0aW9ucyBjYW4gaW5kZWVkIGFyaXNl
IGFuZCBpdCdzIG5vdAorICAgICAgICBuZWNlc3NhcmlseSBhbiBpbmRpY2F0aW9uIG9mIGEgYnVn
IGluIGVkaXRpbmcgY29kZS4KKworICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5o
OiBSZWFycmFuZ2VkIGNvbnN0cnVjdG9ycyB0byBtYWtlIGl0IHNsaWdodGx5IG1vcmUgY2xlYXIK
KyAgICAgICAgd2hpY2ggaXMgdGhlIG1haW4gb25lIGFuZCB0aGF0IHRoZSBvdGhlcnMgYXJlIHNp
bXBseSBjb252ZW5pZW5jZSBzaG9ydGhhbmRzLiBNaWdodAorICAgICAgICB3YW50IHRvIGNvbWUg
YmFjayBsYXRlciBhbmQgcmVtb3ZlIHNvbWUgdW51c2VkIG9uZXMuIEFkZGVkIHVuY2Fub25pY2Fs
aXplZFN0YXJ0LAorICAgICAgICB1bmNhbm9uaWNhbGl6ZWRFbmQsIGFuY2hvciwgZm9jdXMsIGFu
ZCByYW5nZS4gUmVuYW1lZCB0aGUgcHJpdmF0ZSBmdW5jdGlvbiBjYWxsZWQKKyAgICAgICAgc2V0
U3RhcnRBbmRFbmRGcm9tQmFzZUFuZEV4dGVudFJlc3BlY3RpbmdHcmFudWxhcml0eSB0byB0aGUg
bmV3IG5hbWUKKyAgICAgICAgYWRqdXN0U2VsZWN0aW9uUmVzcGVjdGluZ0dyYW51bGFyaXR5LiBB
ZGRlZCBtX2FuY2hvciBhbmQgbV9mb2N1cyBhbmQgcmVmaW5lZCB0aGUKKyAgICAgICAgY29tbWVu
dHMgYWJvdXQgdGhlIHBvc2l0aW9uIGRhdGEgbWVtYmVycy4gV2Ugc2hvdWxkIGV2ZW50dWFsbHkg
YmUgYWJsZSB0byBjdXQgZG93bgorICAgICAgICBvbiB0aGUgbnVtYmVyIG9mIHRoZXNlIGFnYWlu
LCBidXQgaXQncyBmaW5lIHRvIGhhdmUgdHdvIG1vcmUgZm9yIG5vdy4KKworICAgICAgICAqIHBh
Z2UvRE9NU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6cmFu
Z2UgY29uc3QpOiBVc2UgcmFuZ2UgcmF0aGVyIHRoYW4gZmlyc3RSYW5nZSB3aGVuIGxpdmUKKyAg
ICAgICAgcmFuZ2Ugc2VsZWN0aW9uIGlzIGVuYWJsZWQsIGZvciBwcm9wZXIgcm91bmQtdHJpcHBp
bmcgb2Ygc2VsZWN0aW9uIGVuZHBvaW50cywKKyAgICAgICAgdW5hZmZlY3RlZCBieSBjYW5vbmlj
YWxpemF0aW9uLiBUaGUgb3RoZXIgY2hhbmdlcyBiZWxvdyBhcmUgZm9yIHRoZSBzYW1lIHJlYXNv
bi4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6YW5jaG9yUG9zaXRpb24gY29uc3Qp
OiBVc2UgYW5jaG9yLgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpmb2N1c1Bvc2l0
aW9uIGNvbnN0KTogVXNlIGZvY3VzLgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpi
YXNlUG9zaXRpb24gY29uc3QpOiBVc2UgYW5jaG9yLgorICAgICAgICAoV2ViQ29yZTo6RE9NU2Vs
ZWN0aW9uOjpleHRlbnRQb3NpdGlvbiBjb25zdCk6IFVzZSBmb2N1cy4KKyAgICAgICAgKFdlYkNv
cmU6OkRPTVNlbGVjdGlvbjo6dHlwZSBjb25zdCk6IFVzZSBpc0luRG9jdW1lbnRUcmVlIGFuZCBy
YW5nZSByYXRoZXIgdGhhbgorICAgICAgICBpc05vbmUvaXNDYXJldC9pc1JhbmdlIHdoZW4gbGl2
ZSByYW5nZSBzZWxlY3Rpb24gaXMgZW5hYmxlZCwgYmVjYXVzZSB0aGlzIG5lZWRzCisgICAgICAg
IHRvIHJlcG9ydCAiQ2FyZXQiIHdoZW4gdGhlIHJhbmdlIGlzIG5vdCBjb2xsYXBzZWQsIGV2ZW4g
aWYgdGhlIGNhbm9uaWNhbGl6ZWQKKyAgICAgICAgcmFuZ2UgaXMgY29sbGFwc2VkIGFuZCAiTm9u
ZSIgd2hlbiB0aGUgc2VsZWN0aW9uIGlzIGluIGEgc2hhZG93IHRyZWUuCisgICAgICAgIChXZWJD
b3JlOjpET01TZWxlY3Rpb246OnJhbmdlQ291bnQgY29uc3QpOiBVc2UgaXNJbkRvY3VtZW50VHJl
ZSB0byBjaGVjayBpZgorICAgICAgICB0aGVyZSBpcyBhIHNlbGVjdGlvbiByYXRoZXIgdGhhbiBp
c05vbmUgdG8gY29ycmVjdGx5IGhhbmRsZSB0aGUgc2hhZG93IHRyZWUgY2FzZS4KKyAgICAgICAg
KFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6Y29sbGFwc2VUb0VuZCk6IFVzZSB1bmNhbm9uaWNhbGl6
ZWRFbmQuCisgICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246OmNvbGxhcHNlVG9TdGFydCk6
IFVzZSB1bmNhbm9uaWNhbGl6ZWRTdGFydC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlv
bjo6Y29udGFpbnNOb2RlIGNvbnN0KTogVXBkYXRlZCB0aGUgY29tbWVudCBmb3IgY2xhcml0eS4K
KwogMjAyMC0wOS0xOSAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAK
ICAgICAgICAgSW1wbGVtZW50YXRpb24gZm9yIEFYSXNvbGF0ZWRPYmplY3Q6Om5leHRTaWJsaW5n
IGFuZCBwcmV2aW91c1NpYmxpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rp
b24uY3BwCmluZGV4IDljODg5NGM0YTVkZjRhOTMwMTY4NDVkZTllMGZkZGQ0NGFjZTA5YzEuLjVj
ZDJlOTYyNjBlZTYwM2E4MWEzZmM3YWQyN2IxZTcyMzFiYmFhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0yNzg2LDEwICsyNzg2LDE1IEBAIHN0YXRp
YyBib29sIGNvbnRhaW5zRW5kcG9pbnRzKGNvbnN0IFdlYWtQdHI8RG9jdW1lbnQ+JiBkb2N1bWVu
dCwgY29uc3QgUmFuZ2UmIGxpCiAgICAgcmV0dXJuIGRvY3VtZW50ICYmIGRvY3VtZW50LT5jb250
YWlucyhsaXZlUmFuZ2Uuc3RhcnRDb250YWluZXIoKSk7CiB9CiAKK2Jvb2wgRnJhbWVTZWxlY3Rp
b246OmlzSW5Eb2N1bWVudFRyZWUoKSBjb25zdAoreworICAgIHJldHVybiBjb250YWluc0VuZHBv
aW50cyhtX2RvY3VtZW50LCBtX3NlbGVjdGlvbi5yYW5nZSgpKTsKK30KKwogUmVmUHRyPFJhbmdl
PiBGcmFtZVNlbGVjdGlvbjo6YXNzb2NpYXRlZExpdmVSYW5nZSgpCiB7CiAgICAgaWYgKCFtX2Fz
c29jaWF0ZWRMaXZlUmFuZ2UpIHsKLSAgICAgICAgaWYgKGF1dG8gcmFuZ2UgPSBtX3NlbGVjdGlv
bi5maXJzdFJhbmdlKCk7IGNvbnRhaW5zRW5kcG9pbnRzKG1fZG9jdW1lbnQsIHJhbmdlKSkgewor
ICAgICAgICBpZiAoYXV0byByYW5nZSA9IG1fc2VsZWN0aW9uLnJhbmdlKCk7IGNvbnRhaW5zRW5k
cG9pbnRzKG1fZG9jdW1lbnQsIHJhbmdlKSkgewogICAgICAgICAgICAgbV9hc3NvY2lhdGVkTGl2
ZVJhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKCpyYW5nZSk7CiAgICAgICAgICAgICBtX2Fzc29jaWF0
ZWRMaXZlUmFuZ2UtPmRpZEFzc29jaWF0ZVdpdGhTZWxlY3Rpb24oKTsKICAgICAgICAgfQpAQCAt
MjgxNiwxNCArMjgyMSwxNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjp1cGRhdGVGcm9tQXNzb2Np
YXRlZExpdmVSYW5nZSgpCiAgICAgQVNTRVJUKG1fYXNzb2NpYXRlZExpdmVSYW5nZSk7CiAgICAg
aWYgKCFjb250YWluc0VuZHBvaW50cyhtX2RvY3VtZW50LCAqbV9hc3NvY2lhdGVkTGl2ZVJhbmdl
KSkKICAgICAgICAgZGlzYXNzb2NpYXRlTGl2ZVJhbmdlKCk7Ci0gICAgZWxzZQotICAgICAgICBz
ZXRTZWxlY3Rpb24obWFrZVNpbXBsZVJhbmdlKCptX2Fzc29jaWF0ZWRMaXZlUmFuZ2UpKTsKLSAg
ICAvLyBGSVhNRTogTm9ybWFsaXphdGlvbiBkb25lIGJ5IHNldFNlbGVjdGlvbiB3aWxsIGJlIHZp
c2libGUgbmV4dCB0aW1lIHVwZGF0ZUFzc29jaWF0ZWRMaXZlUmFuZ2UgaXMgY2FsbGVkLiBJbnN0
ZWFkIHRoZSBTZWxlY3Rpb24gQVBJIHNwZWNpZmljYXRpb24gY2FsbHMgZm9yIGFsbG93aW5nIG5v
bi1ub3JtYWxpemVkIHNlbGVjdGlvbiByYW5nZXMuCisgICAgZWxzZSB7CisgICAgICAgIC8vIERv
bid0IHVzZSBWaXNpYmxlU2VsZWN0aW9uJ3MgY29uc3RydWN0b3IgdGhhdCB0YWtlcyBhIFNpbXBs
ZVJhbmdlLCBiZWNhdXNlIGl0IHVzZXMgbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbiBpbnN0
ZWFkIG9mIG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlvbi4KKyAgICAgICAgYXV0byBzdGFydCA9
IG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlvbigmbV9hc3NvY2lhdGVkTGl2ZVJhbmdlLT5zdGFy
dENvbnRhaW5lcigpLCBtX2Fzc29jaWF0ZWRMaXZlUmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOworICAg
ICAgICBhdXRvIGVuZCA9IG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlvbigmbV9hc3NvY2lhdGVk
TGl2ZVJhbmdlLT5lbmRDb250YWluZXIoKSwgbV9hc3NvY2lhdGVkTGl2ZVJhbmdlLT5lbmRPZmZz
ZXQoKSk7CisgICAgICAgIHNldFNlbGVjdGlvbih7IHN0YXJ0LCBlbmQgfSk7CisgICAgfQogfQog
CiB2b2lkIEZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBc3NvY2lhdGVkTGl2ZVJhbmdlKCkKIHsKLSAg
ICBhdXRvIHJhbmdlID0gbV9zZWxlY3Rpb24uZmlyc3RSYW5nZSgpOworICAgIGF1dG8gcmFuZ2Ug
PSBtX3NlbGVjdGlvbi5yYW5nZSgpOwogICAgIGlmICghY29udGFpbnNFbmRwb2ludHMobV9kb2N1
bWVudCwgcmFuZ2UpKSB7CiAgICAgICAgIC8vIFRoZSBzZWxlY3Rpb24gd2FzIGNsZWFyZWQgb3Ig
aXMgbm93IHdpdGhpbiBhIHNoYWRvdyB0cmVlLgogICAgICAgICBkaXNhc3NvY2lhdGVMaXZlUmFu
Z2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAppbmRleCAzZTMyY2Ux
MzgyN2ExNWE5Yjc1M2U2YjQ1ZTUxMDAwOTliYzhhMmI4Li4zNDFmNGVkZjhlM2Q4OGU3YzgyMmM1
ODIzNmM5N2RjNTBiYTM3ZWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zy
YW1lU2VsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlv
bi5oCkBAIC0yNTEsNiArMjUxLDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkU2hvd0Jsb2Nr
Q3Vyc29yKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRTaG93QmxvY2tDdXJzb3I7IH0KICAgICB2
b2lkIHNldFNob3VsZFNob3dCbG9ja0N1cnNvcihib29sKTsKIAorICAgIGJvb2wgaXNJbkRvY3Vt
ZW50VHJlZSgpIGNvbnN0OwogICAgIFJlZlB0cjxSYW5nZT4gYXNzb2NpYXRlZExpdmVSYW5nZSgp
OwogICAgIHZvaWQgYXNzb2NpYXRlTGl2ZVJhbmdlKFJhbmdlJik7CiAgICAgdm9pZCBkaXNhc3Nv
Y2lhdGVMaXZlUmFuZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlz
aWJsZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rp
b24uY3BwCmluZGV4IDFkYjkxOTFhZDYwOGYzM2JhNzM2ODdkOWE3YzQwOTQwZjM1YWMzZDcuLjFj
NzkzNTE4MjUyMDJiOGI1MTE3ZDcyMzgyOWI2NjBiZTY3ZDFhYzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcApAQCAtNDksNTAgKzQ5LDM1IEBAIFZpc2li
bGVTZWxlY3Rpb246OlZpc2libGVTZWxlY3Rpb24oKQogewogfQogCi1WaXNpYmxlU2VsZWN0aW9u
OjpWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbiwgQWZmaW5pdHkgYWZm
aW5pdHksIGJvb2wgaXNEaXJlY3Rpb25hbCkKLSAgICA6IG1fYmFzZShwb3NpdGlvbikKLSAgICAs
IG1fZXh0ZW50KHBvc2l0aW9uKQorVmlzaWJsZVNlbGVjdGlvbjo6VmlzaWJsZVNlbGVjdGlvbihj
b25zdCBQb3NpdGlvbiYgYW5jaG9yLCBjb25zdCBQb3NpdGlvbiYgZm9jdXMsIEFmZmluaXR5IGFm
ZmluaXR5LCBib29sIGlzRGlyZWN0aW9uYWwpCisgICAgOiBtX2FuY2hvcihhbmNob3IpCisgICAg
LCBtX2ZvY3VzKGZvY3VzKQogICAgICwgbV9hZmZpbml0eShhZmZpbml0eSkKICAgICAsIG1faXNE
aXJlY3Rpb25hbChpc0RpcmVjdGlvbmFsKQogewogICAgIHZhbGlkYXRlKCk7CiB9CiAKLVZpc2li
bGVTZWxlY3Rpb246OlZpc2libGVTZWxlY3Rpb24oY29uc3QgUG9zaXRpb24mIGJhc2UsIGNvbnN0
IFBvc2l0aW9uJiBleHRlbnQsIEFmZmluaXR5IGFmZmluaXR5LCBib29sIGlzRGlyZWN0aW9uYWwp
Ci0gICAgOiBtX2Jhc2UoYmFzZSkKLSAgICAsIG1fZXh0ZW50KGV4dGVudCkKLSAgICAsIG1fYWZm
aW5pdHkoYWZmaW5pdHkpCi0gICAgLCBtX2lzRGlyZWN0aW9uYWwoaXNEaXJlY3Rpb25hbCkKK1Zp
c2libGVTZWxlY3Rpb246OlZpc2libGVTZWxlY3Rpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9u
LCBBZmZpbml0eSBhZmZpbml0eSwgYm9vbCBpc0RpcmVjdGlvbmFsKQorICAgIDogVmlzaWJsZVNl
bGVjdGlvbihwb3NpdGlvbiwgcG9zaXRpb24sIGFmZmluaXR5LCBpc0RpcmVjdGlvbmFsKQogewot
ICAgIHZhbGlkYXRlKCk7CiB9CiAKIFZpc2libGVTZWxlY3Rpb246OlZpc2libGVTZWxlY3Rpb24o
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgYm9vbCBpc0RpcmVjdGlvbmFsKQotICAg
IDogbV9iYXNlKHBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpCi0gICAgLCBtX2V4dGVudChwb3Np
dGlvbi5kZWVwRXF1aXZhbGVudCgpKQotICAgICwgbV9hZmZpbml0eShwb3NpdGlvbi5hZmZpbml0
eSgpKQotICAgICwgbV9pc0RpcmVjdGlvbmFsKGlzRGlyZWN0aW9uYWwpCisgICAgOiBWaXNpYmxl
U2VsZWN0aW9uKHBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCksIHBvc2l0aW9uLmFmZmluaXR5KCks
IGlzRGlyZWN0aW9uYWwpCiB7Ci0gICAgdmFsaWRhdGUoKTsKKyAgICAvLyBGSVhNRTogV2FzdGVm
dWwgdGhhdCB0aGlzIHJlLWNhbm9uaWNhbGl6ZXMsIGJ1dCByaXNreSB0byBjaGFuZ2Ugc2luY2Ug
dGhlIFZpc2libGVQb3NpdGlvbiBvYmplY3QgY291bGQgYmUgZnJvbSBiZWZvcmUgYSBtdXRhdGlv
biBhbmQgaXRzIHBvc2l0aW9uIG1heSBubyBsb25nZXIgYmUgY2Fub25pY2FsLgogfQogCi1WaXNp
YmxlU2VsZWN0aW9uOjpWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYmFz
ZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBleHRlbnQsIGJvb2wgaXNEaXJlY3Rpb25hbCkKLSAg
ICA6IG1fYmFzZShiYXNlLmRlZXBFcXVpdmFsZW50KCkpCi0gICAgLCBtX2V4dGVudChleHRlbnQu
ZGVlcEVxdWl2YWxlbnQoKSkKLSAgICAsIG1fYWZmaW5pdHkoYmFzZS5hZmZpbml0eSgpKQotICAg
ICwgbV9pc0RpcmVjdGlvbmFsKGlzRGlyZWN0aW9uYWwpCitWaXNpYmxlU2VsZWN0aW9uOjpWaXNp
YmxlU2VsZWN0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYW5jaG9yLCBjb25zdCBWaXNpYmxl
UG9zaXRpb24mIGZvY3VzLCBib29sIGlzRGlyZWN0aW9uYWwpCisgICAgOiBWaXNpYmxlU2VsZWN0
aW9uKGFuY2hvci5kZWVwRXF1aXZhbGVudCgpLCBmb2N1cy5kZWVwRXF1aXZhbGVudCgpLCBhbmNo
b3IuYWZmaW5pdHkoKSwgaXNEaXJlY3Rpb25hbCkKIHsKLSAgICB2YWxpZGF0ZSgpOworICAgIC8v
IEZJWE1FOiBXYXN0ZWZ1bCB0aGF0IHRoaXMgcmUtY2Fub25pY2FsaXplcywgYnV0IHJpc2t5IHRv
IGNoYW5nZSBzaW5jZSB0aGUgVmlzaWJsZVBvc2l0aW9uIG9iamVjdHMgY291bGQgYmUgZnJvbSBi
ZWZvcmUgYSBtdXRhdGlvbiBhbmQgdGhlaXIgcG9zaXRpb25zIG1heSBubyBsb25nZXIgYmUgY2Fu
b25pY2FsLgogfQogCiBWaXNpYmxlU2VsZWN0aW9uOjpWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFNp
bXBsZVJhbmdlJiByYW5nZSwgQWZmaW5pdHkgYWZmaW5pdHksIGJvb2wgaXNEaXJlY3Rpb25hbCkK
LSAgICA6IG1fYmFzZShjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oJnJhbmdlLnN0YXJ0Q29u
dGFpbmVyKCksIHJhbmdlLnN0YXJ0T2Zmc2V0KCkpKQotICAgICwgbV9leHRlbnQoY3JlYXRlTGVn
YWN5RWRpdGluZ1Bvc2l0aW9uKCZyYW5nZS5lbmRDb250YWluZXIoKSwgcmFuZ2UuZW5kT2Zmc2V0
KCkpKQotICAgICwgbV9hZmZpbml0eShhZmZpbml0eSkKLSAgICAsIG1faXNEaXJlY3Rpb25hbChp
c0RpcmVjdGlvbmFsKQorICAgIDogVmlzaWJsZVNlbGVjdGlvbihtYWtlRGVwcmVjYXRlZExlZ2Fj
eVBvc2l0aW9uKHJhbmdlLnN0YXJ0KSwgbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihyYW5n
ZS5lbmQpLCBhZmZpbml0eSwgaXNEaXJlY3Rpb25hbCkKIHsKLSAgICBBU1NFUlQoJnJhbmdlLnN0
YXJ0Q29udGFpbmVyKCkudHJlZVNjb3BlKCkgPT0gJnJhbmdlLmVuZENvbnRhaW5lcigpLnRyZWVT
Y29wZSgpKTsKLSAgICB2YWxpZGF0ZSgpOwogfQogCiBWaXNpYmxlU2VsZWN0aW9uIFZpc2libGVT
ZWxlY3Rpb246OnNlbGVjdGlvbkZyb21Db250ZW50c09mTm9kZShOb2RlKiBub2RlKQpAQCAtMTAx
LDI4ICs4Niw1MSBAQCBWaXNpYmxlU2VsZWN0aW9uIFZpc2libGVTZWxlY3Rpb246OnNlbGVjdGlv
bkZyb21Db250ZW50c09mTm9kZShOb2RlKiBub2RlKQogICAgIHJldHVybiBWaXNpYmxlU2VsZWN0
aW9uKGZpcnN0UG9zaXRpb25Jbk5vZGUobm9kZSksIGxhc3RQb3NpdGlvbkluTm9kZShub2RlKSk7
CiB9CiAKK1Bvc2l0aW9uIFZpc2libGVTZWxlY3Rpb246OmFuY2hvcigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fYW5jaG9yOworfQorCitQb3NpdGlvbiBWaXNpYmxlU2VsZWN0aW9uOjpmb2N1cygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZm9jdXM7Cit9CisKK1Bvc2l0aW9uIFZpc2libGVTZWxl
Y3Rpb246OnVuY2Fub25pY2FsaXplZFN0YXJ0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9iYXNl
SXNGaXJzdCA/IG1fYW5jaG9yIDogbV9mb2N1czsKK30KKworUG9zaXRpb24gVmlzaWJsZVNlbGVj
dGlvbjo6dW5jYW5vbmljYWxpemVkRW5kKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9iYXNlSXNG
aXJzdCA/IG1fZm9jdXMgOiBtX2FuY2hvcjsKK30KKworT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IFZp
c2libGVTZWxlY3Rpb246OnJhbmdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbWFrZVNpbXBsZVJh
bmdlKHVuY2Fub25pY2FsaXplZFN0YXJ0KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIHVu
Y2Fub25pY2FsaXplZEVuZCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKK30KKwogdm9p
ZCBWaXNpYmxlU2VsZWN0aW9uOjpzZXRCYXNlKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikKIHsK
LSAgICBtX2Jhc2UgPSBwb3NpdGlvbjsKKyAgICBtX2FuY2hvciA9IHBvc2l0aW9uOwogICAgIHZh
bGlkYXRlKCk7CiB9CiAKIHZvaWQgVmlzaWJsZVNlbGVjdGlvbjo6c2V0QmFzZShjb25zdCBWaXNp
YmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbikKIHsKLSAgICBtX2Jhc2UgPSB2aXNpYmxlUG9z
aXRpb24uZGVlcEVxdWl2YWxlbnQoKTsKLSAgICB2YWxpZGF0ZSgpOworICAgIHNldEJhc2Uodmlz
aWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpOwogfQogCiB2b2lkIFZpc2libGVTZWxlY3Rp
b246OnNldEV4dGVudChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCiB7Ci0gICAgbV9leHRlbnQg
PSBwb3NpdGlvbjsKKyAgICBtX2ZvY3VzID0gcG9zaXRpb247CiAgICAgdmFsaWRhdGUoKTsKIH0K
IAogdm9pZCBWaXNpYmxlU2VsZWN0aW9uOjpzZXRFeHRlbnQoY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiB2aXNpYmxlUG9zaXRpb24pCiB7Ci0gICAgbV9leHRlbnQgPSB2aXNpYmxlUG9zaXRpb24uZGVl
cEVxdWl2YWxlbnQoKTsKLSAgICB2YWxpZGF0ZSgpOworICAgIHNldEV4dGVudCh2aXNpYmxlUG9z
aXRpb24uZGVlcEVxdWl2YWxlbnQoKSk7CiB9CiAKIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBWaXNp
YmxlU2VsZWN0aW9uOjpmaXJzdFJhbmdlKCkgY29uc3QKQEAgLTIxMCwzOSArMjE4LDI0IEBAIHZv
aWQgVmlzaWJsZVNlbGVjdGlvbjo6YXBwZW5kVHJhaWxpbmdXaGl0ZXNwYWNlKCkKIAogdm9pZCBW
aXNpYmxlU2VsZWN0aW9uOjpzZXRCYXNlQW5kRXh0ZW50VG9EZWVwRXF1aXZhbGVudHMoKQogewot
ICAgIC8vIE1vdmUgdGhlIHNlbGVjdGlvbiB0byByZW5kZXJlZCBwb3NpdGlvbnMsIGlmIHBvc3Np
YmxlLgotICAgIGJvb2wgYmFzZUFuZEV4dGVudEVxdWFsID0gbV9iYXNlID09IG1fZXh0ZW50Owot
ICAgIGlmIChtX2Jhc2UuaXNOb3ROdWxsKCkpIHsKLSAgICAgICAgbV9iYXNlID0gVmlzaWJsZVBv
c2l0aW9uKG1fYmFzZSwgbV9hZmZpbml0eSkuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgaWYg
KGJhc2VBbmRFeHRlbnRFcXVhbCkKLSAgICAgICAgICAgIG1fZXh0ZW50ID0gbV9iYXNlOwotICAg
IH0KLSAgICBpZiAobV9leHRlbnQuaXNOb3ROdWxsKCkgJiYgIWJhc2VBbmRFeHRlbnRFcXVhbCkK
LSAgICAgICAgbV9leHRlbnQgPSBWaXNpYmxlUG9zaXRpb24obV9leHRlbnQsIG1fYWZmaW5pdHkp
LmRlZXBFcXVpdmFsZW50KCk7Ci0KLSAgICAvLyBNYWtlIHN1cmUgd2UgZG8gbm90IGhhdmUgYSBk
YW5nbGluZyBiYXNlIG9yIGV4dGVudC4KLSAgICBpZiAobV9iYXNlLmlzTnVsbCgpICYmIG1fZXh0
ZW50LmlzTnVsbCgpKQotICAgICAgICBtX2Jhc2VJc0ZpcnN0ID0gdHJ1ZTsKLSAgICBlbHNlIGlm
IChtX2Jhc2UuaXNOdWxsKCkpIHsKLSAgICAgICAgbV9iYXNlID0gbV9leHRlbnQ7Ci0gICAgICAg
IG1fYmFzZUlzRmlyc3QgPSB0cnVlOwotICAgIH0gZWxzZSBpZiAobV9leHRlbnQuaXNOdWxsKCkp
IHsKKyAgICAvLyBJZiBvbmx5IG9uZSBvZiBhbmNob3IgYW5kIGZvY3VzIGlzIG51bGwsIGNvbnZl
cnQgdG8gYSBjYXJldCBzZWxlY3Rpb24uCisgICAgLy8gRklYTUU6IFNlZW1zIGxpa2UgYSBiZXR0
ZXIgcnVsZSB3b3VsZCBiZSB0byBjb252ZXJ0IHRvIG5vIHNlbGVjdGlvbi4KKyAgICBpZiAobV9h
bmNob3IuaXNOdWxsKCkpCisgICAgICAgIG1fYW5jaG9yID0gbV9mb2N1czsKKyAgICBpZiAobV9m
b2N1cy5pc051bGwoKSkKKyAgICAgICAgbV9mb2N1cyA9IG1fYW5jaG9yOworCisgICAgbV9iYXNl
ID0gVmlzaWJsZVBvc2l0aW9uKG1fYW5jaG9yLCBtX2FmZmluaXR5KS5kZWVwRXF1aXZhbGVudCgp
OworICAgIGlmIChtX2FuY2hvciA9PSBtX2ZvY3VzKQogICAgICAgICBtX2V4dGVudCA9IG1fYmFz
ZTsKLSAgICAgICAgbV9iYXNlSXNGaXJzdCA9IHRydWU7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1f
YmFzZUlzRmlyc3QgPSBtX2Jhc2UgPD0gbV9leHRlbnQ7CisgICAgZWxzZQorICAgICAgICBtX2V4
dGVudCA9IFZpc2libGVQb3NpdGlvbihtX2ZvY3VzLCBtX2FmZmluaXR5KS5kZWVwRXF1aXZhbGVu
dCgpOworCisgICAgbV9iYXNlSXNGaXJzdCA9IG1fYmFzZSA8PSBtX2V4dGVudDsKIH0KIAotdm9p
ZCBWaXNpYmxlU2VsZWN0aW9uOjpzZXRTdGFydEFuZEVuZEZyb21CYXNlQW5kRXh0ZW50UmVzcGVj
dGluZ0dyYW51bGFyaXR5KFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKK3ZvaWQgVmlzaWJs
ZVNlbGVjdGlvbjo6YWRqdXN0U2VsZWN0aW9uUmVzcGVjdGluZ0dyYW51bGFyaXR5KFRleHRHcmFu
dWxhcml0eSBncmFudWxhcml0eSkKIHsKLSAgICBpZiAobV9iYXNlSXNGaXJzdCkgewotICAgICAg
ICBtX3N0YXJ0ID0gbV9iYXNlOwotICAgICAgICBtX2VuZCA9IG1fZXh0ZW50OwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIG1fc3RhcnQgPSBtX2V4dGVudDsKLSAgICAgICAgbV9lbmQgPSBtX2Jhc2U7
Ci0gICAgfQotCiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewogICAgICAgICBjYXNlIFRleHRH
cmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk6CiAgICAgICAgICAgICAvLyBEb24ndCBk
byBhbnkgZXhwYW5zaW9uLgpAQCAtMjg2LDE5ICsyNzksMTYgQEAgdm9pZCBWaXNpYmxlU2VsZWN0
aW9uOjpzZXRTdGFydEFuZEVuZEZyb21CYXNlQW5kRXh0ZW50UmVzcGVjdGluZ0dyYW51bGFyaXR5
KFRleHQKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fZW5k
ID0gZW5kLmRlZXBFcXVpdmFsZW50KCk7CisKICAgICAgICAgICAgIC8vIEVuZCBtdXN0IG5vdCBi
ZSBiZWZvcmUgc3RhcnQuCi0gICAgICAgICAgICBpZiAobV9zdGFydC5kZXByZWNhdGVkTm9kZSgp
ID09IG1fZW5kLmRlcHJlY2F0ZWROb2RlKCkgJiYgbV9zdGFydC5kZXByZWNhdGVkRWRpdGluZ09m
ZnNldCgpID4gbV9lbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSkgewotICAgICAgICAgICAg
ICAgIFBvc2l0aW9uIHN3YXAobV9zdGFydCk7Ci0gICAgICAgICAgICAgICAgbV9zdGFydCA9IG1f
ZW5kOyAgICAKLSAgICAgICAgICAgICAgICBtX2VuZCA9IHN3YXA7ICAgIAotICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKG1fc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSA9PSBtX2VuZC5kZXBy
ZWNhdGVkTm9kZSgpICYmIG1fc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA+IG1fZW5k
LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpCisgICAgICAgICAgICAgICAgc3RkOjpzd2FwKG1f
c3RhcnQsIG1fZW5kKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNh
c2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdyYW51bGFyaXR5OiB7CisgICAgICAgIGNhc2Ug
VGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdyYW51bGFyaXR5OgogICAgICAgICAgICAgbV9zdGFy
dCA9IHN0YXJ0T2ZTZW50ZW5jZShWaXNpYmxlUG9zaXRpb24obV9zdGFydCwgbV9hZmZpbml0eSkp
LmRlZXBFcXVpdmFsZW50KCk7CiAgICAgICAgICAgICBtX2VuZCA9IGVuZE9mU2VudGVuY2UoVmlz
aWJsZVBvc2l0aW9uKG1fZW5kLCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2YWxlbnQoKTsKICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9CiAgICAgICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpM
aW5lR3JhbnVsYXJpdHk6IHsKICAgICAgICAgICAgIG1fc3RhcnQgPSBzdGFydE9mTGluZShWaXNp
YmxlUG9zaXRpb24obV9zdGFydCwgbV9hZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7CiAgICAg
ICAgICAgICBWaXNpYmxlUG9zaXRpb24gZW5kID0gZW5kT2ZMaW5lKFZpc2libGVQb3NpdGlvbiht
X2VuZCwgbV9hZmZpbml0eSkpOwpAQCAtMzg0LDI4ICszNzQsNDggQEAgdm9pZCBWaXNpYmxlU2Vs
ZWN0aW9uOjp1cGRhdGVTZWxlY3Rpb25UeXBlKCkKIHZvaWQgVmlzaWJsZVNlbGVjdGlvbjo6dmFs
aWRhdGUoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQogewogICAgIHNldEJhc2VBbmRFeHRl
bnRUb0RlZXBFcXVpdmFsZW50cygpOwotICAgIHNldFN0YXJ0QW5kRW5kRnJvbUJhc2VBbmRFeHRl
bnRSZXNwZWN0aW5nR3JhbnVsYXJpdHkoZ3JhbnVsYXJpdHkpOworCisgICAgbV9zdGFydCA9IG1f
YmFzZUlzRmlyc3QgPyBtX2Jhc2UgOiBtX2V4dGVudDsKKyAgICBtX2VuZCA9IG1fYmFzZUlzRmly
c3QgPyBtX2V4dGVudCA6IG1fYmFzZTsKKworICAgIGF1dG8gc3RhcnRCZWZvcmVBZGp1c3RtZW50
cyA9IG1fc3RhcnQ7CisgICAgYXV0byBlbmRCZWZvcmVBZGp1c3RtZW50cyA9IG1fZW5kOworCisg
ICAgYWRqdXN0U2VsZWN0aW9uUmVzcGVjdGluZ0dyYW51bGFyaXR5KGdyYW51bGFyaXR5KTsKICAg
ICBhZGp1c3RTZWxlY3Rpb25Ub0F2b2lkQ3Jvc3NpbmdTaGFkb3dCb3VuZGFyaWVzKCk7CiAgICAg
YWRqdXN0U2VsZWN0aW9uVG9Bdm9pZENyb3NzaW5nRWRpdGluZ0JvdW5kYXJpZXMoKTsKICAgICB1
cGRhdGVTZWxlY3Rpb25UeXBlKCk7CiAKKyAgICBib29sIHNob3VsZFVwZGF0ZUFuY2hvciA9IG1f
c3RhcnQgIT0gc3RhcnRCZWZvcmVBZGp1c3RtZW50czsKKyAgICBib29sIHNob3VsZFVwZGF0ZUZv
Y3VzID0gbV9lbmQgIT0gZW5kQmVmb3JlQWRqdXN0bWVudHM7CisKICAgICBpZiAoaXNSYW5nZSgp
KSB7CiAgICAgICAgIC8vICJDb25zdHJhaW4iIHRoZSBzZWxlY3Rpb24gdG8gYmUgdGhlIHNtYWxs
ZXN0IGVxdWl2YWxlbnQgcmFuZ2Ugb2Ygbm9kZXMuCiAgICAgICAgIC8vIFRoaXMgaXMgYSBzb21l
d2hhdCBhcmJpdHJhcnkgY2hvaWNlLCBidXQgZXhwZXJpZW5jZSBzaG93cyB0aGF0IGl0IGlzCiAg
ICAgICAgIC8vIHVzZWZ1bCB0byBtYWtlIHRvIG1ha2UgdGhlIHNlbGVjdGlvbiAiY2Fub25pY2Fs
IiAoaWYgb25seSBmb3IKICAgICAgICAgLy8gcHVycG9zZXMgb2YgY29tcGFyaW5nIHNlbGVjdGlv
bnMpLiBUaGlzIGlzIGFuIGlkZWFsIHBvaW50IG9mIHRoZSBjb2RlCi0gICAgICAgIC8vIHRvIGRv
IHRoaXMgb3BlcmF0aW9uLCBzaW5jZSBhbGwgc2VsZWN0aW9uIGNoYW5nZXMgdGhhdCByZXN1bHQg
aW4gYSBSQU5HRSAKKyAgICAgICAgLy8gdG8gZG8gdGhpcyBvcGVyYXRpb24sIHNpbmNlIGFsbCBz
ZWxlY3Rpb24gY2hhbmdlcyB0aGF0IHJlc3VsdCBpbiBhIFJBTkdFCiAgICAgICAgIC8vIGNvbWUg
dGhyb3VnaCBoZXJlIGJlZm9yZSBhbnlvbmUgdXNlcyBpdC4KICAgICAgICAgLy8gRklYTUU6IENh
bm9uaWNhbGl6aW5nIGlzIGdvb2QsIGJ1dCBoYXZlbid0IHdlIGFscmVhZHkgZG9uZSBpdCAod2hl
biB3ZQogICAgICAgICAvLyBzZXQgdGhlc2UgdHdvIHBvc2l0aW9ucyB0byBWaXNpYmxlUG9zaXRp
b24gZGVlcEVxdWl2YWxlbnQoKXMgYWJvdmUpPwogICAgICAgICBtX3N0YXJ0ID0gbV9zdGFydC5k
b3duc3RyZWFtKCk7CiAgICAgICAgIG1fZW5kID0gbV9lbmQudXBzdHJlYW0oKTsKIAotICAgICAg
ICAvLyBGSVhNRTogUG9zaXRpb246OmRvd25zdHJlYW0oKSBvciBQb3NpdGlvbjo6dXBTdHJlYW0o
KSBtaWdodCB2aW9sYXRlIGVkaXRpbmcgYm91bmRhcmllcwotICAgICAgICAvLyBpZiBhbiBhbmNo
b3Igbm9kZSBoYXMgYSBTaGFkb3cgRE9NLiBTbyB3ZSBhZGp1c3Qgc2VsZWN0aW9uIHRvIGF2b2lk
IGNyb3NzaW5nIGVkaXRpbmcKLSAgICAgICAgLy8gYm91bmRhcmllcyBhZ2Fpbi4gU2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzQ2MworICAgICAgICAvLyBQb3Np
dGlvbjo6ZG93bnN0cmVhbSgpIG9yIFBvc2l0aW9uOjp1cHN0cmVhbSgpIG1pZ2h0IHZpb2xhdGUg
ZWRpdGluZyBib3VuZGFyaWVzCisgICAgICAgIC8vIGlmIGFuIGFuY2hvciBub2RlIGhhcyBhIFNo
YWRvdyBET00gZXZlbiB0aG91Z2ggdGhleSBzaG91bGQgbm90LiBCdXQgYmVjYXVzZSB0aGlzCisg
ICAgICAgIC8vIGhhcHBlbnMgaW4gcHJhY3RpY2UsIGFkanVzdCBzZWxlY3Rpb24gdG8gYXZvaWQg
Y3Jvc3NpbmcgZWRpdGluZyBib3VuZGFyaWVzIGFnYWluLgorICAgICAgICAvLyBTZWUgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3NDYzLgogICAgICAgICBhZGp1c3RT
ZWxlY3Rpb25Ub0F2b2lkQ3Jvc3NpbmdFZGl0aW5nQm91bmRhcmllcygpOwogICAgIH0KKworICAg
IGlmIChzaG91bGRVcGRhdGVBbmNob3IpIHsKKyAgICAgICAgbV9hbmNob3IgPSBtX2Jhc2VJc0Zp
cnN0ID8gbV9zdGFydCA6IG1fZW5kOworICAgICAgICBtX2Jhc2UgPSBtX2FuY2hvcjsKKyAgICB9
CisgICAgaWYgKHNob3VsZFVwZGF0ZUZvY3VzKSB7CisgICAgICAgIG1fZm9jdXMgPSBtX2Jhc2VJ
c0ZpcnN0ID8gbV9lbmQgOiBtX3N0YXJ0OworICAgICAgICBtX2V4dGVudCA9IG1fZm9jdXM7Cisg
ICAgfQogfQogCiAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBicmVha3MgdGhlIGludmFyaWFudCBv
ZiB0aGlzIGNsYXNzLgpAQCAtNDE2LDkgKzQyNiwxMCBAQCB2b2lkIFZpc2libGVTZWxlY3Rpb246
OnZhbGlkYXRlKFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKIC8vIGNsYXNzIGZvciBlZGl0
aW5nIHRvIHVzZSB0aGF0IGNhbiBtYW5pcHVsYXRlIHNlbGVjdGlvbnMgdGhhdCBhcmUgbm90IGN1
cnJlbnRseSB2YWxpZC4KIHZvaWQgVmlzaWJsZVNlbGVjdGlvbjo6c2V0V2l0aG91dFZhbGlkYXRp
b24oY29uc3QgUG9zaXRpb24mIGJhc2UsIGNvbnN0IFBvc2l0aW9uJiBleHRlbnQpCiB7Ci0gICAg
QVNTRVJUKCFiYXNlLmlzTnVsbCgpKTsKLSAgICBBU1NFUlQoIWV4dGVudC5pc051bGwoKSk7Cisg
ICAgQVNTRVJUKGJhc2UuaXNOdWxsKCkgPT0gZXh0ZW50LmlzTnVsbCgpKTsKICAgICBBU1NFUlQo
bV9hZmZpbml0eSA9PSBBZmZpbml0eTo6RG93bnN0cmVhbSk7CisgICAgbV9hbmNob3IgPSBiYXNl
OworICAgIG1fZm9jdXMgPSBleHRlbnQ7CiAgICAgbV9iYXNlID0gYmFzZTsKICAgICBtX2V4dGVu
dCA9IGV4dGVudDsKICAgICBtX2Jhc2VJc0ZpcnN0ID0gYmFzZSA8PSBleHRlbnQ7CkBAIC00ODYs
NyArNDk3LDcgQEAgc3RhdGljIGJvb2wgaXNJblVzZXJBZ2VudFNoYWRvd1Jvb3RPckhhc0VkaXRh
YmxlU2hhZG93QW5jZXN0b3IoTm9kZSYgbm9kZSkKIAogdm9pZCBWaXNpYmxlU2VsZWN0aW9uOjph
ZGp1c3RTZWxlY3Rpb25Ub0F2b2lkQ3Jvc3NpbmdTaGFkb3dCb3VuZGFyaWVzKCkKIHsKLSAgICBp
ZiAobV9iYXNlLmlzTnVsbCgpIHx8IG1fc3RhcnQuaXNOdWxsKCkgfHwgbV9lbmQuaXNOdWxsKCkp
CisgICAgaWYgKG1fc3RhcnQuaXNOdWxsKCkgfHwgbV9lbmQuaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGF1dG8gc3RhcnROb2RlID0gbWFrZVJlZigqbV9zdGFydC5hbmNob3JOb2Rl
KCkpOwpAQCAtNTAwLDYgKzUxMSw3IEBAIHZvaWQgVmlzaWJsZVNlbGVjdGlvbjo6YWRqdXN0U2Vs
ZWN0aW9uVG9Bdm9pZENyb3NzaW5nU2hhZG93Qm91bmRhcmllcygpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgfQogCisgICAgLy8gQ29ycmVjdCB0aGUgZm9jdXMgaWYgbmVjZXNzYXJ5LgogICAg
IGlmIChtX2Jhc2VJc0ZpcnN0KSB7CiAgICAgICAgIG1fZXh0ZW50ID0gYWRqdXN0UG9zaXRpb25G
b3JFbmQobV9lbmQsIG1fc3RhcnQuY29udGFpbmVyTm9kZSgpKTsKICAgICAgICAgbV9lbmQgPSBt
X2V4dGVudDsKQEAgLTUwNywxMSArNTE5LDEyIEBAIHZvaWQgVmlzaWJsZVNlbGVjdGlvbjo6YWRq
dXN0U2VsZWN0aW9uVG9Bdm9pZENyb3NzaW5nU2hhZG93Qm91bmRhcmllcygpCiAgICAgICAgIG1f
ZXh0ZW50ID0gYWRqdXN0UG9zaXRpb25Gb3JTdGFydChtX3N0YXJ0LCBtX2VuZC5jb250YWluZXJO
b2RlKCkpOwogICAgICAgICBtX3N0YXJ0ID0gbV9leHRlbnQ7CiAgICAgfQorICAgIG1fZm9jdXMg
PSBtX2V4dGVudDsKIH0KIAogdm9pZCBWaXNpYmxlU2VsZWN0aW9uOjphZGp1c3RTZWxlY3Rpb25U
b0F2b2lkQ3Jvc3NpbmdFZGl0aW5nQm91bmRhcmllcygpCiB7Ci0gICAgaWYgKG1fYmFzZS5pc051
bGwoKSB8fCBtX3N0YXJ0LmlzTnVsbCgpIHx8IG1fZW5kLmlzTnVsbCgpKQorICAgIGlmIChtX3N0
YXJ0LmlzTnVsbCgpIHx8IG1fZW5kLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAv
LyBFYXJseSByZXR1cm4gaW4gdGhlIGNhcmV0IGNhc2UgKHRoZSBzdGF0ZSBoYXNuJ3QgYWN0dWFs
bHkgYmVlbiBzZXQgeWV0LCBzbyB3ZSBjYW4ndCB1c2UgaXNDYXJldCgpKSB0byBhdm9pZCB0aGUK
QEAgLTU3NSwxMiArNTg4LDcgQEAgdm9pZCBWaXNpYmxlU2VsZWN0aW9uOjphZGp1c3RTZWxlY3Rp
b25Ub0F2b2lkQ3Jvc3NpbmdFZGl0aW5nQm91bmRhcmllcygpCiAgICAgICAgICAgICBWaXNpYmxl
UG9zaXRpb24gcHJldmlvdXMocCk7CiAKICAgICAgICAgICAgIGlmIChwcmV2aW91cy5pc051bGwo
KSkgewotICAgICAgICAgICAgICAgIC8vIFRoZSBzZWxlY3Rpb24gY3Jvc3NlcyBhbiBFZGl0aW5n
IGJvdW5kYXJ5LiAgVGhpcyBpcyBhCi0gICAgICAgICAgICAgICAgLy8gcHJvZ3JhbW1lciBlcnJv
ciBpbiB0aGUgZWRpdGluZyBjb2RlLiAgSGFwcHkgZGVidWdnaW5nIQotICAgICAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIG1fYmFzZSA9IFBvc2l0aW9u
KCk7Ci0gICAgICAgICAgICAgICAgbV9leHRlbnQgPSBQb3NpdGlvbigpOwotICAgICAgICAgICAg
ICAgIHZhbGlkYXRlKCk7CisgICAgICAgICAgICAgICAgKnRoaXMgPSB7IH07CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9lbmQgPSBwcmV2aW91
cy5kZWVwRXF1aXZhbGVudCgpOwpAQCAtNjA0LDIxICs2MTIsMTggQEAgdm9pZCBWaXNpYmxlU2Vs
ZWN0aW9uOjphZGp1c3RTZWxlY3Rpb25Ub0F2b2lkQ3Jvc3NpbmdFZGl0aW5nQm91bmRhcmllcygp
CiAgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gbmV4dChwKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgaWYgKG5leHQuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBUaGUgc2Vs
ZWN0aW9uIGNyb3NzZXMgYW4gRWRpdGluZyBib3VuZGFyeS4gIFRoaXMgaXMgYQotICAgICAgICAg
ICAgICAgIC8vIHByb2dyYW1tZXIgZXJyb3IgaW4gdGhlIGVkaXRpbmcgY29kZS4gIEhhcHB5IGRl
YnVnZ2luZyEKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
ICAgICAgICBtX2Jhc2UgPSBQb3NpdGlvbigpOwotICAgICAgICAgICAgICAgIG1fZXh0ZW50ID0g
UG9zaXRpb24oKTsKLSAgICAgICAgICAgICAgICB2YWxpZGF0ZSgpOworICAgICAgICAgICAgICAg
ICp0aGlzID0geyB9OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIG1fc3RhcnQgPSBuZXh0LmRlZXBFcXVpdmFsZW50KCk7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgCi0gICAgLy8gQ29ycmVjdCB0aGUgZXh0ZW50IGlmIG5lY2Vzc2FyeS4KLSAgICBp
ZiAoYmFzZUVkaXRhYmxlQW5jZXN0b3IgIT0gbG93ZXN0RWRpdGFibGVBbmNlc3RvcihtX2V4dGVu
dC5jb250YWluZXJOb2RlKCkpKQorICAgIC8vIENvcnJlY3QgdGhlIGZvY3VzIGlmIG5lY2Vzc2Fy
eS4KKyAgICBpZiAoYmFzZUVkaXRhYmxlQW5jZXN0b3IgIT0gbG93ZXN0RWRpdGFibGVBbmNlc3Rv
cihtX2V4dGVudC5jb250YWluZXJOb2RlKCkpKSB7CiAgICAgICAgIG1fZXh0ZW50ID0gbV9iYXNl
SXNGaXJzdCA/IG1fZW5kIDogbV9zdGFydDsKKyAgICAgICAgbV9mb2N1cyA9IG1fZXh0ZW50Owor
ICAgIH0KIH0KIAogYm9vbCBWaXNpYmxlU2VsZWN0aW9uOjppc0NvbnRlbnRFZGl0YWJsZSgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oCmluZGV4IGMwMWUx
ZTQ1MzdmY2E2ZDdmODExMDU2YmU4MWI4ZWQyMzUyNWUwYzMuLjczYTJiZGRhM2E2NDRlMjI2ODYx
MmYwYTJkYTYxMjI2YzEzYTMzNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VmlzaWJsZVNlbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNl
bGVjdGlvbi5oCkBAIC0zOSwyNyArMzksNDAgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0
ZXhwciBhdXRvIGRlZmF1bHRBZmZpbml0eSA9IFZpc2libGVQb3NpdGlvbjo6ZGVmYXVsdEFmZmlu
aXR5OwogCisgICAgVmlzaWJsZVNlbGVjdGlvbihjb25zdCBQb3NpdGlvbiYgYW5jaG9yLCBjb25z
dCBQb3NpdGlvbiYgZm9jdXMsIEFmZmluaXR5ID0gZGVmYXVsdEFmZmluaXR5LCBib29sIGlzRGly
ZWN0aW9uYWwgPSBmYWxzZSk7CisKICAgICBWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFBvc2l0aW9u
JiwgQWZmaW5pdHksIGJvb2wgaXNEaXJlY3Rpb25hbCA9IGZhbHNlKTsKLSAgICBWaXNpYmxlU2Vs
ZWN0aW9uKGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mLCBBZmZpbml0eSA9IGRlZmF1
bHRBZmZpbml0eSwgYm9vbCBpc0RpcmVjdGlvbmFsID0gZmFsc2UpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIFZpc2libGVTZWxlY3Rpb24oY29uc3QgU2ltcGxlUmFuZ2UmLCBBZmZpbml0eSA9IGRlZmF1
bHRBZmZpbml0eSwgYm9vbCBpc0RpcmVjdGlvbmFsID0gZmFsc2UpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIFZpc2libGVTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgYm9vbCBpc0RpcmVj
dGlvbmFsID0gZmFsc2UpOwotICAgIFdFQkNPUkVfRVhQT1JUIFZpc2libGVTZWxlY3Rpb24oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgYm9vbCBpc0RpcmVj
dGlvbmFsID0gZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIFZpc2libGVTZWxlY3Rpb24oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiBhbmNob3IsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgZm9jdXMs
IGJvb2wgaXNEaXJlY3Rpb25hbCA9IGZhbHNlKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbkZyb21Db250ZW50c09mTm9kZShOb2RlKik7CiAK
ICAgICB2b2lkIHNldEFmZmluaXR5KEFmZmluaXR5IGFmZmluaXR5KSB7IG1fYWZmaW5pdHkgPSBh
ZmZpbml0eTsgfQogICAgIEFmZmluaXR5IGFmZmluaXR5KCkgY29uc3QgeyByZXR1cm4gbV9hZmZp
bml0eTsgfQogCisgICAgLy8gRklYTUU6IE1vdmUgdG8gdGhlIHRlcm1zICJmb2N1cyIgYW5kICJh
bmNob3IiIGluc3RlYWQgb2YgImJhc2UiIGFuZCAiZXh0ZW50Ii4KKwogICAgIHZvaWQgc2V0QmFz
ZShjb25zdCBQb3NpdGlvbiYpOwogICAgIHZvaWQgc2V0QmFzZShjb25zdCBWaXNpYmxlUG9zaXRp
b24mKTsKICAgICB2b2lkIHNldEV4dGVudChjb25zdCBQb3NpdGlvbiYpOwogICAgIHZvaWQgc2V0
RXh0ZW50KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwogCisgICAgLy8gVGhlc2UgZnVuY3Rpb25z
IHJldHVybiB0aGUgdmFsdWVzIHRoYXQgd2VyZSBwYXNzZWQgaW4sIHdpdGhvdXQgdGhlIGNhbm9u
aWNhbGl6YXRpb24gZG9uZSBieSBWaXNpYmxlUG9zaXRpb24uCisgICAgLy8gRklYTUU6IFdoZW4g
d2UgZXhwYW5kIGdyYW51bGFyaXR5LCB3ZSBjYW5vbmljYWxpemUgYXMgYSBzaWRlIGVmZmVjdCwg
c28gZXhwYW5kZWQgdmFsdWVzIGhhdmUgYmVlbiBtYWRlIGNhbm9uaWNhbC4KKyAgICAvLyBGSVhN
RTogUmVwbGFjZSBzdGFydC9yYW5nZS9iYXNlL2VuZC9maXJzdFJhbmdlIHdpdGggdGhlc2UsIHJl
bmFtaW5nIHRoZXNlIHRvIHRoZSBzaG9ydGVyIG5hbWVzLgorICAgIFBvc2l0aW9uIHVuY2Fub25p
Y2FsaXplZFN0YXJ0KCkgY29uc3Q7CisgICAgUG9zaXRpb24gdW5jYW5vbmljYWxpemVkRW5kKCkg
Y29uc3Q7CisgICAgUG9zaXRpb24gYW5jaG9yKCkgY29uc3Q7CisgICAgUG9zaXRpb24gZm9jdXMo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2Uo
KSBjb25zdDsKKworICAgIC8vIEZJWE1FOiBSZW5hbWUgdGhlc2UgdG8gaW5jbHVkZSB0aGUgd29y
ZCAiY2Fub25pY2FsIiBvciByZW1vdmUuCiAgICAgUG9zaXRpb24gYmFzZSgpIGNvbnN0IHsgcmV0
dXJuIG1fYmFzZTsgfQogICAgIFBvc2l0aW9uIGV4dGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZXh0
ZW50OyB9CiAgICAgUG9zaXRpb24gc3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0OyB9CiAg
ICAgUG9zaXRpb24gZW5kKCkgY29uc3QgeyByZXR1cm4gbV9lbmQ7IH0KLSAgICAKKwogICAgIFZp
c2libGVQb3NpdGlvbiB2aXNpYmxlU3RhcnQoKSBjb25zdCB7IHJldHVybiBWaXNpYmxlUG9zaXRp
b24obV9zdGFydCwgaXNSYW5nZSgpID8gQWZmaW5pdHk6OkRvd25zdHJlYW0gOiBhZmZpbml0eSgp
KTsgfQogICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlRW5kKCkgY29uc3QgeyByZXR1cm4gVmlz
aWJsZVBvc2l0aW9uKG1fZW5kLCBpc1JhbmdlKCkgPyBBZmZpbml0eTo6VXBzdHJlYW0gOiBhZmZp
bml0eSgpKTsgfQogICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlQmFzZSgpIGNvbnN0IHsgcmV0
dXJuIFZpc2libGVQb3NpdGlvbihtX2Jhc2UsIGlzUmFuZ2UoKSA/IChpc0Jhc2VGaXJzdCgpID8g
QWZmaW5pdHk6OlVwc3RyZWFtIDogQWZmaW5pdHk6OkRvd25zdHJlYW0pIDogYWZmaW5pdHkoKSk7
IH0KQEAgLTg0LDE3ICs5NywxOSBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KTsKIAor
ICAgIC8vIEZJWE1FOiBSZW5hbWUgdG8gaW5jbHVkZSB0aGUgd29yZCAiY2Fub25pY2FsIiBhbmQg
cmVtb3ZlIHRoZSB3b3JkICJmaXJzdCIgb3IgcmVtb3ZlLgogICAgIC8vIFdlIGRvbid0IHlldCBz
dXBwb3J0IG11bHRpLXJhbmdlIHNlbGVjdGlvbnMsIHNvIHdlIG9ubHkgZXZlciBoYXZlIG9uZSBy
YW5nZSB0byByZXR1cm4uCiAgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+
IGZpcnN0UmFuZ2UoKSBjb25zdDsKIAotICAgIC8vIEZJWE1FOiBNb3N0IGNhbGxlcnMgcHJvYmFi
bHkgZG9uJ3Qgd2FudCB0aGlzIGZ1bmN0aW9uLCBhbmQgc2hvdWxkIHVzZSBmaXJzdFJhbmdlIGlu
c3RlYWQuCi0gICAgLy8gdG9Ob3JtYWxpemVkUmFuZ2UgaXMgbGlrZSBmaXJzdFJhbmdlLCBidXQg
Y29udHJhY3RzIHRoZSByYW5nZSBhcm91bmQgdGV4dCBhbmQgbW92ZXMgdGhlIGNhcmV0IHVwc3Ry
ZWFtIGJlZm9yZSByZXR1cm5pbmcgdGhlIHJhbmdlLgorICAgIC8vIEZJWE1FOiBNb3N0IGNhbGxl
cnMgcHJvYmFibHkgZG9uJ3Qgd2FudCB0aGlzIGZ1bmN0aW9uLCBhbmQgc2hvdWxkIHVzZSByYW5n
ZSBpbnN0ZWFkLgorICAgIC8vIFRoaXMgZnVuY3Rpb24gY29udHJhY3RzIHRoZSByYW5nZSBhcm91
bmQgdGV4dCBhbmQgbW92ZXMgdGhlIGNhcmV0IHVwc3RyZWFtIGJlZm9yZSByZXR1cm5pbmcgdGhl
IHJhbmdlLgogICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiB0b05vcm1h
bGl6ZWRSYW5nZSgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgRWxlbWVudCogcm9vdEVk
aXRhYmxlRWxlbWVudCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNDb250ZW50
RWRpdGFibGUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0VkaXRhYmxlU3R5
bGUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQ29udGVudFJpY2hseUVkaXRh
YmxlKCkgY29uc3Q7CisKICAgICAvLyBSZXR1cm5zIGEgc2hhZG93IHRyZWUgbm9kZSBmb3IgbGVn
YWN5IHNoYWRvdyB0cmVlcywgYSBjaGlsZCBvZiB0aGUKICAgICAvLyBTaGFkb3dSb290IG5vZGUg
Zm9yIG5ldyBzaGFkb3cgdHJlZXMsIG9yIDAgZm9yIG5vbi1zaGFkb3cgdHJlZXMuCiAgICAgTm9k
ZSogbm9uQm91bmRhcnlTaGFkb3dUcmVlUm9vdE5vZGUoKSBjb25zdDsKQEAgLTExNywyMCArMTMy
LDI0IEBAIHByaXZhdGU6CiAKICAgICAvLyBTdXBwb3J0IG1ldGhvZHMgZm9yIHZhbGlkYXRlKCkK
ICAgICB2b2lkIHNldEJhc2VBbmRFeHRlbnRUb0RlZXBFcXVpdmFsZW50cygpOwotICAgIHZvaWQg
c2V0U3RhcnRBbmRFbmRGcm9tQmFzZUFuZEV4dGVudFJlc3BlY3RpbmdHcmFudWxhcml0eShUZXh0
R3JhbnVsYXJpdHkpOworICAgIHZvaWQgYWRqdXN0U2VsZWN0aW9uUmVzcGVjdGluZ0dyYW51bGFy
aXR5KFRleHRHcmFudWxhcml0eSk7CiAgICAgdm9pZCBhZGp1c3RTZWxlY3Rpb25Ub0F2b2lkQ3Jv
c3NpbmdTaGFkb3dCb3VuZGFyaWVzKCk7CiAgICAgdm9pZCBhZGp1c3RTZWxlY3Rpb25Ub0F2b2lk
Q3Jvc3NpbmdFZGl0aW5nQm91bmRhcmllcygpOwogICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uVHlw
ZSgpOwogCi0gICAgLy8gV2Ugc3RvcmUgdGhlc2UgYXMgUG9zaXRpb25zIGJlY2F1c2UgVmlzaWJs
ZVNlbGVjdGlvbiBpcyB1c2VkIHRvIHN0b3JlIHZhbHVlcyBpbgorICAgIC8vIFdlIHN0b3JlIG9u
bHkgUG9zaXRpb25zIGJlY2F1c2UgVmlzaWJsZVNlbGVjdGlvbiBpcyB1c2VkIHRvIHN0b3JlIHZh
bHVlcyBpbgogICAgIC8vIGVkaXRpbmcgY29tbWFuZHMgZm9yIHVzZSB3aGVuIHVuZG9pbmcgdGhl
IGNvbW1hbmQuIFdlIG5lZWQgdG8gYmUgYWJsZSB0byBzdG9yZQogICAgIC8vIGEgc2VsZWN0aW9u
IHRoYXQsIHdoaWxlIGN1cnJlbnRseSBpbnZhbGlkLCB3aWxsIGJlIHZhbGlkIG9uY2UgdGhlIGNo
YW5nZXMgYXJlIHVuZG9uZS4KIAotICAgIFBvc2l0aW9uIG1fYmFzZTsgLy8gV2hlcmUgdGhlIGZp
cnN0IGNsaWNrIGhhcHBlbmVkLgotICAgIFBvc2l0aW9uIG1fZXh0ZW50OyAvLyBXaGVyZSB0aGUg
ZW5kIGNsaWNrIGhhcHBlbmVkLgotCi0gICAgUG9zaXRpb24gbV9zdGFydDsgLy8gTGVmdG1vc3Qg
cG9zaXRpb24gd2hlbiBleHBhbmRlZCB0byByZXNwZWN0IGdyYW51bGFyaXR5LgotICAgIFBvc2l0
aW9uIG1fZW5kOyAvLyBSaWdodG1vc3QgcG9zaXRpb24gd2hlbiBleHBhbmRlZCB0byByZXNwZWN0
IGdyYW51bGFyaXR5LgorICAgIC8vIEZJWE1FOiBDb25zaWRlciBkb2luZyBjYW5vbmljYWxpemF0
aW9uIG9ubHkgYXMgcGFydCBvZiBlZGl0aW5nIG9wZXJhdGlvbnMsIGFuZCBrZWVwaW5nIGFsbCBz
ZWxlY3Rpb24gZW5kcG9pbnRzIG5vbi1jYW5vbmljYWwgb3V0c2lkZSBvZiB0aGF0IGNvZGUuCisg
ICAgLy8gRklYTUU6IFJlbmFtZSBtX2Jhc2UgdG8gbV9jYW5vbmljYWxBbmNob3IuCisgICAgLy8g
RklYTUU6IFJlbmFtZSBtX2V4dGVudCB0byBtX2Nhbm9uaWNhbEZvY3VzLgorICAgIFBvc2l0aW9u
IG1fYW5jaG9yOyAvLyBXaGVyZSB0aGUgZmlyc3QgY2xpY2sgaGFwcGVuZWQuCisgICAgUG9zaXRp
b24gbV9mb2N1czsgLy8gV2hlcmUgdGhlIGVuZCBjbGljay9yZWxlYXNlIGhhcHBlbmVkLgorICAg
IFBvc2l0aW9uIG1fYmFzZTsgLy8gQW5jaG9yLCBjYW5vbmljYWwsIG5vdCB5ZXQgZXhwZW5kZWQg
dG8gcmVzcGVjdCBncmFudWxhcml0eS4KKyAgICBQb3NpdGlvbiBtX2V4dGVudDsgLy8gRm9jdXMs
IGNhbm9uaWNhbCwgYnV0IG5vdCBleHBlbmRlZCB0byByZXNwZWN0IGdyYW51bGFyaXR5LgorICAg
IFBvc2l0aW9uIG1fc3RhcnQ7IC8vIEZpcnN0IG9mIGFuY2hvciBhbmQgZm9jdXMsIGNhb25pY2Fs
aXplZCBhbmQgZXhwYW5kZWQgdG8gcmVzcGVjdCBncmFudWxhcml0eS4KKyAgICBQb3NpdGlvbiBt
X2VuZDsgLy8gTGFzdCBvZiBhbmNob3IgYW5kIGZvY3VzLCBjYW9uaWNhbGl6ZWQgYW5kIGV4cGFu
ZGVkIHRvIHJlc3BlY3QgZ3JhbnVsYXJpdHkuCiAKICAgICBBZmZpbml0eSBtX2FmZmluaXR5IHsg
ZGVmYXVsdEFmZmluaXR5IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
U2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAppbmRl
eCAyOTk3MDJlNzJhM2ZhOGZjODY2NWJmNzZhMGU3YjNiNjkzMWJlOGE3Li5iNmVkMGM4YjIxMTQ4
YWYwMWFlNGZjODg5MTFmNGI5YmIzZDg1YjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rp
b24uY3BwCkBAIC02OSw3ICs2OSw5IEBAIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBET01TZWxlY3Rp
b246OnJhbmdlKCkgY29uc3QKICAgICBhdXRvIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKICAgICBp
ZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIGF1dG8gcmFuZ2Ug
PSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuZmlyc3RSYW5nZSgpOworICAgIGF1dG8g
cmFuZ2UgPSBmcmFtZS0+c2V0dGluZ3MoKS5saXZlUmFuZ2VTZWxlY3Rpb25FbmFibGVkKCkKKyAg
ICAgICAgPyBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkucmFuZ2UoKQorICAgICAgICA6
IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5maXJzdFJhbmdlKCk7CiAgICAgaWYgKCFy
YW5nZSB8fCByYW5nZS0+c3RhcnQuY29udGFpbmVyLT5pc0luU2hhZG93VHJlZSgpKQogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHJldHVybiByYW5nZTsKQEAgLTgwLDYgKzgyLDgg
QEAgUG9zaXRpb24gRE9NU2VsZWN0aW9uOjphbmNob3JQb3NpdGlvbigpIGNvbnN0CiAgICAgYXV0
byBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICBpZiAoZnJhbWUtPnNldHRpbmdzKCkubGl2ZVJhbmdlU2VsZWN0aW9uRW5hYmxl
ZCgpKQorICAgICAgICByZXR1cm4gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmFuY2hv
cigpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogICAgIGF1dG8mIHNlbGVjdGlvbiA9IGZy
YW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKICAgICByZXR1cm4gKHNlbGVjdGlvbi5pc0Jh
c2VGaXJzdCgpID8gc2VsZWN0aW9uLnN0YXJ0KCkgOiBzZWxlY3Rpb24uZW5kKCkpLnBhcmVudEFu
Y2hvcmVkRXF1aXZhbGVudCgpOwogfQpAQCAtODksMjMgKzkzLDMxIEBAIFBvc2l0aW9uIERPTVNl
bGVjdGlvbjo6Zm9jdXNQb3NpdGlvbigpIGNvbnN0CiAgICAgYXV0byBmcmFtZSA9IHRoaXMtPmZy
YW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBpZiAoZnJh
bWUtPnNldHRpbmdzKCkubGl2ZVJhbmdlU2VsZWN0aW9uRW5hYmxlZCgpKQorICAgICAgICByZXR1
cm4gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmZvY3VzKCkucGFyZW50QW5jaG9yZWRF
cXVpdmFsZW50KCk7CiAgICAgYXV0byYgc2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpOwogICAgIHJldHVybiAoc2VsZWN0aW9uLmlzQmFzZUZpcnN0KCkgPyBzZWxlY3Rp
b24uZW5kKCkgOiBzZWxlY3Rpb24uc3RhcnQoKSkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7
CiB9CiAKIFBvc2l0aW9uIERPTVNlbGVjdGlvbjo6YmFzZVBvc2l0aW9uKCkgY29uc3QKIHsKKyAg
ICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSBsaXZlUmFuZ2VTZWxlY3Rpb25FbmFibGVkIGlz
IGFsd2F5cyBvbiwgc2luY2UgYmFzZSBhbmQgYW5jaG9yIHNob3VsZCBiZSB0aGUgc2FtZSB0aGlu
Zy4KICAgICBhdXRvIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAg
ICAgICByZXR1cm4geyB9OworICAgIGlmIChmcmFtZS0+c2V0dGluZ3MoKS5saXZlUmFuZ2VTZWxl
Y3Rpb25FbmFibGVkKCkpCisgICAgICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0
aW9uKCkuYW5jaG9yKCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7CiAgICAgcmV0dXJuIGZy
YW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5iYXNlKCkucGFyZW50QW5jaG9yZWRFcXVpdmFs
ZW50KCk7CiB9CiAKIFBvc2l0aW9uIERPTVNlbGVjdGlvbjo6ZXh0ZW50UG9zaXRpb24oKSBjb25z
dAogeworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIGxpdmVSYW5nZVNlbGVjdGlvbkVu
YWJsZWQgaXMgYWx3YXlzIG9uLCBzaW5jZSBleHRlbnQgYW5kIGZvY3VzIHNob3VsZCBiZSB0aGUg
c2FtZSB0aGluZy4KICAgICBhdXRvIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKICAgICBpZiAoIWZy
YW1lKQogICAgICAgICByZXR1cm4geyB9OworICAgIGlmIChmcmFtZS0+c2V0dGluZ3MoKS5saXZl
UmFuZ2VTZWxlY3Rpb25FbmFibGVkKCkpCisgICAgICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkuZm9jdXMoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKICAgICBy
ZXR1cm4gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmV4dGVudCgpLnBhcmVudEFuY2hv
cmVkRXF1aXZhbGVudCgpOwogfQogCkBAIC0xNjQsNiArMTc2LDggQEAgU3RyaW5nIERPTVNlbGVj
dGlvbjo6dHlwZSgpIGNvbnN0CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuICJOb25l
Il9zOwogICAgIGF1dG8mIHNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKTsKKyAgICBpZiAo
ZnJhbWUtPnNldHRpbmdzKCkubGl2ZVJhbmdlU2VsZWN0aW9uRW5hYmxlZCgpKQorICAgICAgICBy
ZXR1cm4gIXNlbGVjdGlvbi5pc0luRG9jdW1lbnRUcmVlKCkgPyAiTm9uZSJfcyA6IHJhbmdlKCkt
PmNvbGxhcHNlZCgpID8gIkNhcmV0Il9zIDogIlJhbmdlIl9zOwogICAgIGlmIChzZWxlY3Rpb24u
aXNOb25lKCkpCiAgICAgICAgIHJldHVybiAiTm9uZSJfczsKICAgICBpZiAoc2VsZWN0aW9uLmlz
Q2FyZXQoKSkKQEAgLTE3NCw2ICsxODgsOCBAQCBTdHJpbmcgRE9NU2VsZWN0aW9uOjp0eXBlKCkg
Y29uc3QKIHVuc2lnbmVkIERPTVNlbGVjdGlvbjo6cmFuZ2VDb3VudCgpIGNvbnN0CiB7CiAgICAg
YXV0byBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgaWYgKGZyYW1lLT5zZXR0aW5ncygpLmxp
dmVSYW5nZVNlbGVjdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIGZyYW1lICYmIGZyYW1l
LT5zZWxlY3Rpb24oKS5pc0luRG9jdW1lbnRUcmVlKCk7CiAgICAgcmV0dXJuICFmcmFtZSB8fCBm
cmFtZS0+c2VsZWN0aW9uKCkuaXNOb25lKCkgPyAwIDogMTsKIH0KIApAQCAtMjEwLDggKzIyNiwx
MSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBET01TZWxlY3Rpb246OmNvbGxhcHNlVG9FbmQoKQogICAg
IGF1dG8mIHNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKTsKICAgICBpZiAoc2VsZWN0aW9u
LmlzTm9uZSgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Ig
fTsKLSAgICBzZWxlY3Rpb24uZGlzYXNzb2NpYXRlTGl2ZVJhbmdlKCk7Ci0gICAgc2VsZWN0aW9u
Lm1vdmVUbyhzZWxlY3Rpb24uc2VsZWN0aW9uKCkuZW5kKCksIEFmZmluaXR5OjpEb3duc3RyZWFt
KTsKKyAgICBpZiAoZnJhbWUtPnNldHRpbmdzKCkubGl2ZVJhbmdlU2VsZWN0aW9uRW5hYmxlZCgp
KSB7CisgICAgICAgIHNlbGVjdGlvbi5kaXNhc3NvY2lhdGVMaXZlUmFuZ2UoKTsKKyAgICAgICAg
c2VsZWN0aW9uLm1vdmVUbyhzZWxlY3Rpb24uc2VsZWN0aW9uKCkudW5jYW5vbmljYWxpemVkRW5k
KCksIEFmZmluaXR5OjpEb3duc3RyZWFtKTsKKyAgICB9IGVsc2UKKyAgICAgICAgc2VsZWN0aW9u
Lm1vdmVUbyhzZWxlY3Rpb24uc2VsZWN0aW9uKCkuZW5kKCksIEFmZmluaXR5OjpEb3duc3RyZWFt
KTsKICAgICByZXR1cm4geyB9OwogfQogCkBAIC0yMjMsOCArMjQyLDExIEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IERPTVNlbGVjdGlvbjo6Y29sbGFwc2VUb1N0YXJ0KCkKICAgICBhdXRvJiBzZWxlY3Rp
b24gPSBmcmFtZS0+c2VsZWN0aW9uKCk7CiAgICAgaWYgKHNlbGVjdGlvbi5pc05vbmUoKSkKICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07Ci0gICAgc2VsZWN0
aW9uLmRpc2Fzc29jaWF0ZUxpdmVSYW5nZSgpOwotICAgIHNlbGVjdGlvbi5tb3ZlVG8oc2VsZWN0
aW9uLnNlbGVjdGlvbigpLnN0YXJ0KCksIEFmZmluaXR5OjpEb3duc3RyZWFtKTsKKyAgICBpZiAo
ZnJhbWUtPnNldHRpbmdzKCkubGl2ZVJhbmdlU2VsZWN0aW9uRW5hYmxlZCgpKSB7CisgICAgICAg
IHNlbGVjdGlvbi5kaXNhc3NvY2lhdGVMaXZlUmFuZ2UoKTsKKyAgICAgICAgc2VsZWN0aW9uLm1v
dmVUbyhzZWxlY3Rpb24uc2VsZWN0aW9uKCkudW5jYW5vbmljYWxpemVkU3RhcnQoKSwgQWZmaW5p
dHk6OkRvd25zdHJlYW0pOworICAgIH0gZWxzZQorICAgICAgICBzZWxlY3Rpb24ubW92ZVRvKHNl
bGVjdGlvbi5zZWxlY3Rpb24oKS5zdGFydCgpLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7CiAgICAg
cmV0dXJuIHsgfTsKIH0KIApAQCAtNDA1LDcgKzQyNyw3IEBAIHZvaWQgRE9NU2VsZWN0aW9uOjpk
ZWxldGVGcm9tRG9jdW1lbnQoKQogCiBib29sIERPTVNlbGVjdGlvbjo6Y29udGFpbnNOb2RlKE5v
ZGUmIG5vZGUsIGJvb2wgYWxsb3dQYXJ0aWFsKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBUaGlz
IGlzIHdyb25nLCBhbmQgd2FzIGFkZGVkIHRvIHdvcmsgYXJvdW5kIGFub21hbGllcyBjYXVzZWQg
d2hlbiB3ZSBjYW5vbmljYWxpemUgc2VsZWN0aW9uIGVuZHBvaW50cy4gV2Ugc2hvdWxkIGZpeCB0
aGF0IGFuZCByZW1vdmUgdGhpcy4KKyAgICAvLyBGSVhNRTogVGhlIHJ1bGUgaW1wbGVtZW50ZWQg
aGVyZSBmb3IgdGV4dCBub2RlcyBpcyB3cm9uZywgYW5kIHdhcyBhZGRlZCB0byB3b3JrIGFyb3Vu
ZCBhbm9tYWxpZXMgY2F1c2VkIHdoZW4gd2UgY2Fub25pY2FsaXplIHNlbGVjdGlvbiBlbmRwb2lu
dHMuCiAgICAgaWYgKG5vZGUuaXNUZXh0Tm9kZSgpICYmICFub2RlLmRvY3VtZW50KCkuc2V0dGlu
Z3MoKS5saXZlUmFuZ2VTZWxlY3Rpb25FbmFibGVkKCkpCiAgICAgICAgIGFsbG93UGFydGlhbCA9
IHRydWU7CiAgICAgYXV0byByYW5nZSA9IHRoaXMtPnJhbmdlKCk7Cg==
</data>
<flag name="review"
          id="424834"
          type_id="1"
          status="+"
          setter="rniwa"
    />
    <flag name="commit-queue"
          id="424835"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409240</attachid>
            <date>2020-09-20 12:00:55 -0700</date>
            <delta_ts>2020-09-20 12:02:55 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-216739-20200920120054.patch</filename>
            <type>text/plain</type>
            <size>37313</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3MzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWNmMzFlODJiNTUwMzJl
NDdjZWRjNGViMjVhZmQ5MjI4NmIzMWE5Zi4uZmM3NGZiMjUwZTQ2OGEwMDJmNzIzMzc4M2I4ODg1
ZDZiMzE4YTcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAyMC0wOS0yMCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2VsZWN0aW9uIEFQSTogRnVy
dGhlciBpbXByb3ZlbWVudHMgdG8gVmlzaWJsZVNlbGVjdGlvbiwgRnJhbWVTZWxlY3Rpb24sIGFu
ZCBET01TZWxlY3Rpb24gdG8gcHJlc2VydmUgYW5jaG9yIGFuZCBmb2N1cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2NzM5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIElmIGRvbmUgY29ycmVjdGx5LCB0aGVz
ZSBjaGFuZ2VzIHNob3VsZCBoYXZlIGFsbW9zdCBubyBlZmZlY3QgdW5sZXNzIGxpdmUgcmFuZ2Ug
c2VsZWN0aW9uCisgICAgICAgIGlzIGVuYWJsZWQuIFRoaXMgYWRkcyBhIGZlYXR1cmUgd2hlcmUg
VmlzaWJsZVNlbGVjdGlvbiB0cmFja3MgdGhlIG9yaWdpbmFsIHBvaW50cywKKyAgICAgICAgYmVm
b3JlIHRoZSBWaXNpYmxlUG9zaXRpb24tc3R5bGUgY2Fub25pY2FsaXphdGlvbi4gSXQgYWxzbyBz
dGFydHMgYSB0cmFuc2l0aW9uIGZyb20KKyAgICAgICAgdGhlIGJhc2UvZXh0ZW50IHRlcm1pbm9s
b2d5IHRvIHRoZSBzbGlnaHRseS1lYXNpZXItdG8tdW5kZXJzdGFuZCBhbmNob3IvZm9jdXMgdGVy
bWlub2xvZ3kKKyAgICAgICAgdGhhdCBpcyB1c2VkIGluIHRoZSBzZWxlY3Rpb24gc3BlY2lmaWNh
dGlvbi4gTmV3IGZ1bmN0aW9ucyBuYW1lIHRoZW0gYW5jaG9yIGFuZCBmb2N1cywKKyAgICAgICAg
ZXZlbiB0aG91Z2ggd2Ugc3RpbGwgaGF2ZSBzb21lIG9sZCBvbmVzIHRoYXQgY2FsbCB0aGVtIGJh
c2UgYW5kIGV4dGVudC4gSW4gYWRkaXRpb24sCisgICAgICAgIG1hZGUgc29tZSBvdGhlciBzbWFs
bCByZWxhdGVkIGltcHJvdmVtZW50cyB0byBsaXZlIHJhbmdlIHNlbGVjdGlvbiBtb2RlLCB3aXRo
b3V0IGNoYW5naW5nCisgICAgICAgIGJlaGF2aW9yIHdoZW4gbm90IGluIHRoYXQgbW9kZS4gSGF2
ZSBiZWVuIHRlc3RpbmcgdGhlc2UgbG9jYWxseSBieSB0dXJuaW5nIG9uIHRoYXQgbW9kZQorICAg
ICAgICBhbmQgcnVubmluZyB2YXJpb3VzIHRlc3RzLgorCisgICAgICAgICogZWRpdGluZy9GcmFt
ZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6aXNJbkRv
Y3VtZW50VHJlZSBjb25zdCk6IEFkZGVkLiBVc2VkIGJ5IERPTVNlbGVjdGlvbiB0bworICAgICAg
ICBjb3JyZWN0bHkgaGFuZGxlIGNhc2VzIHdoZXJlIHRoZSBzZWxlY3Rpb24gaXMgaW4gYSBzaGFk
b3cgdHJlZSB3aXRob3V0IHJlcXVpcmluZyBpdAorICAgICAgICBhY3R1YWxseSBjcmVhdGUgdGhl
IGFzc29jaWF0ZWQgbGl2ZSByYW5nZSBqdXN0IHRvIHF1ZXJ5LgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVTZWxlY3Rpb246OmFzc29jaWF0ZWRMaXZlUmFuZ2UpOiBVc2UgdGhlIG5ldyBWaXNpYmxl
U2VsZWN0aW9uOjpyYW5nZSwKKyAgICAgICAgd2hpY2ggZ2l2ZXMgdXMgbm9uLWNhbm9uaWNhbGl6
ZWQgcG9pbnRzLCByYXRoZXIgdGhhbiB0aGUgZGVwcmVjYXRlZAorICAgICAgICBWaXNpYmxlU2Vs
ZWN0aW9uOjpmaXJzdFJhbmdlLCB3aGljaCB3ZSB3aWxsIGV2ZW50dWFsbHkgYmUgcmVuYW1pbmcg
b3IgZGVsZXRpbmcuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6dXBkYXRlRnJv
bUFzc29jaWF0ZWRMaXZlUmFuZ2UpOiBVc2UKKyAgICAgICAgbWFrZUNvbnRhaW5lck9mZnNldFBv
c2l0aW9uIGluc3RlYWQgb2YgaW1wbGljaXRseSB1c2luZyBtYWtlRGVwcmVjYXRlZExlZ2FjeVBv
c2l0aW9uLgorICAgICAgICBBbHNvIHJlbW92ZWQgdGhlIEZJWE1FIGFib3V0IG5vcm1hbGl6YXRp
b24gb2YgZW5kcG9pbnRzLCB3aGljaCBpcyB3aGF0IHRoaXMgcGF0Y2gKKyAgICAgICAgbW9zdGx5
IGFkZHJlc3Nlczsgbm8gbmVlZCB0byB0cmFjayB3aXRoIGEgY29tbWVudCBub3cuCisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6dXBkYXRlQXNzb2NpYXRlZExpdmVSYW5nZSk6IFVz
ZSBWaXNpYmxlU2VsZWN0aW9uOjpyYW5nZQorICAgICAgICBmb3IgdGhlIHNhbWUgcmVhc29uIGFz
IGFib3ZlLgorCisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oOiBBZGRlZCBpc0lu
RG9jdW1lbnRUcmVlLgorCisgICAgICAgICogZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb246OlZpc2libGVTZWxlY3Rpb24pOiBV
cGRhdGVkIHRoZSBwcmltYXJ5IGNvbnN0cnVjdG9yIHRvIHNldAorICAgICAgICBtX2FuY2hvci9m
b2N1cyBhbmQgbGV0IHRoZSB2YWxpZGF0ZSBmdW5jdGlvbiBzZXQgbV9iYXNlL2V4dGVudC9zdGFy
dC9lbmQvYmFzZUlzRmlyc3QuCisgICAgICAgIENoYW5nZWQgbW9zdCBvdGhlciBjb25zdHJ1Y3Rv
cnMgdG8gY2FsbCB0aGF0IHByaW1hcnkgb25lLgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVNl
bGVjdGlvbjo6YW5jaG9yIGNvbnN0KTogQWRkZWQuIFRoaXMgaXMgYSBub24tY2Fub25pY2FsaXpl
ZCBwb3NpdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb246OmZvY3VzIGNv
bnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjp1bmNhbm9u
aWNhbGl6ZWRTdGFydCBjb25zdCk6IEFkZGVkLiBUaGlzIG5vbi1jYW5vbmljYWxpemVkCisgICAg
ICAgIHZlcnNpb24gb2Ygc3RhcnQgaXMgdXNlZCBieSBuZXcgRE9NU2VsZWN0aW9uIGNvZGUsIGJ1
dCBldmVudHVhbGx5IHNob3VsZCBiZSB1c2VkCisgICAgICAgIGVsc2V3aGVyZSBhcyB3ZWxsLCBh
bmQgd2UgbWF5IGV2ZW50dWFsbHkgZWxpbWluYXRlIHRoZSBjYW5vbmljYWxpemVkIHZlcnNpb24u
CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjp1bmNhbm9uaWNhbGl6ZWRFbmQg
Y29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb246OnJhbmdl
IGNvbnN0KTogQWRkZWQuIFRoaXMgbm9uLWNhbm9uaWNhbGl6ZWQgdmVyc2lvbiBvZgorICAgICAg
ICBmaXJzdFJhbmdlIGhhcyBtYW55IG9mIHRoZSBzYW1lIGNvbnNpZGVyYXRpb25zIGFzIHRoZSBv
dGhlciBmb3VyIGZ1bmN0aW9ucyBhYm92ZS4KKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVTZWxl
Y3Rpb246OnNldEJhc2UpOiBTZXQgbV9hbmNob3IgaW5zdGVhZCBvZiBtX2Jhc2UuIEV2ZW50dWFs
bHkgd2UKKyAgICAgICAgd2lsbCB3YW50IHRvIHJlbmFtZSB0aGlzIGZ1bmN0aW9uLCB0b28sIGJ1
dCB0aGVyZSBpcyBubyBuZWVkIHRvIGRvIHRoYXQgbm93LgorICAgICAgICAoV2ViQ29yZTo6Vmlz
aWJsZVNlbGVjdGlvbjo6c2V0RXh0ZW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpWaXNp
YmxlU2VsZWN0aW9uOjpzZXRCYXNlQW5kRXh0ZW50VG9EZWVwRXF1aXZhbGVudHMpOiBSZXdyb3Rl
IHRvIHRha2UKKyAgICAgICAgbV9hbmNob3IgYW5kIG1fZm9jdXMgYXMgaW5wdXRzIGFuZCBub3cg
bV9iYXNlIGFuZCBtX2V4dGVudCBhcmUgcHVyZSBvdXRwdXRzLgorICAgICAgICBNYXkgd2FudCB0
byByZW5hbWUgdGhpcyBsYXRlciwgYmVjYXVzZSAiZGVlcCBlcXVpdmFsZW50cyIgaXMgYSBmdW5u
eSB3YXkgdG8gc2F5CisgICAgICAgIHRoYXQgdGhpcyBmdW5jdGlvbiBzZXRzIGJhc2UgYW5kIGV4
dGVudCB0byBjYW5vbmljYWxpemVkIHZhbHVlcy4KKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVT
ZWxlY3Rpb246OmFkanVzdFNlbGVjdGlvblJlc3BlY3RpbmdHcmFudWxhcml0eSk6IFJlbmFtZWQg
ZnJvbQorICAgICAgICBzZXRTdGFydEFuZEVuZEZyb21CYXNlQW5kRXh0ZW50UmVzcGVjdGluZ0dy
YW51bGFyaXR5LiBUaGlzIG5vdyB0YWtlcyBtX3N0YXJ0L2VuZAorICAgICAgICBhcyBpbnB1dCBh
cyB3ZWxsIGFzIG91dHB1dCwgYmVjYXVzZSB0aGUgdmFsaWRhdGUgZnVuY3Rpb24gbmVlZHMgdG8g
Y2hlY2sKKyAgICAgICAgaWYgdGhlIGZ1bmN0aW9uIGNoYW5nZXMgbV9zdGFydC9lbmQgc28gaXQg
Y2FuIHVwZGF0ZSBtX2FuY2hvci9mb2N1cy4gQWxzbyBkaWQgYSB0aW55CisgICAgICAgIGJpdCBv
ZiByZWZhY3RvcmluZyB0byB1c2Ugc3RkOjpzd2FwLgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJs
ZVNlbGVjdGlvbjo6dmFsaWRhdGUpOiBSZWZpbmVkIHRoZSBjb2RlIHRvIGhhbmRsZSBjYW5vbmlj
YWxpemF0aW9uCisgICAgICAgIGRpZmZlcmVudGx5IGZyb20gZXhwYW5kaW5nIGR1ZSB0byBncmFu
dWxhcml0eS4gQ2Fub25pY2FsaXphdGlvbiBpcyBkb25lIHByZXNlcnZpbmcKKyAgICAgICAgdGhl
IG9yaWdpbmFsIG1fYW5jaG9yL2ZvY3VzIGFzIGl0IG1vc3RseSBhbHdheXMgaGFzIGJlZW4uIEJ1
dCBleHBhbnNpb24gZHVlIHRvCisgICAgICAgIGdyYW51bGFyaXR5IG5vdyBjaGFuZ2VzIG1fYW5j
aG9yL2ZvY3VzL2Jhc2UvZXh0ZW50IHJhdGhlciB0aGFuIGp1c3QgbV9zdGFydC9lbmQuCisgICAg
ICAgIFRoaXMgbWFrZXMgc2Vuc2UgYmVjYXVzZSBncmFudWxhcml0eSBjaGFuZ2VzIGFjdHVhbGx5
IGFmZmVjdCB3aGF0IGlzIHNlbGVjdGVkLAorICAgICAgICB3aGlsZSBjYW5vbmljYWxpemF0aW9u
IGp1c3QgY2hhbmdlcyBob3cgdGhlIHNlbGVjdGlvbiBpcyBleHByZXNzZWQgYW5kIHRyYWNrZWQu
CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjpzZXRXaXRob3V0VmFsaWRhdGlv
bik6IFNldCBtX2FuY2hvci9mb2N1cy4gSW4gdGhlIGZ1dHVyZSwKKyAgICAgICAgd2UgY2FuIHBy
b2JhYmx5IGdldCByaWQgb2YgdGhpcyBldmVudHVhbGx5LCBiZWNhdXNlIHRoZSAidmFsaWRhdGlv
biIgdGFsa2VkIGFib3V0CisgICAgICAgIGhlcmUgaXMgdGhlIHVud2FudGVkIGNhbm9uaWNhbGl6
YXRpb24uIEJ1dCB0aGF0J3MgYSByZWZpbmVtZW50IGZvciB0aGUgZnV0dXJlLgorICAgICAgICAo
V2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbjo6YWRqdXN0U2VsZWN0aW9uVG9Bdm9pZENyb3NzaW5n
U2hhZG93Qm91bmRhcmllcyk6CisgICAgICAgIFVwZGF0ZSBtX2ZvY3VzLCBub3QganVzdCBtX2V4
dGVudCwgaWYgd2UgaGF2ZSB0byBhZGp1c3QuIEFsc28gcmVtb3ZlZCBhbiB1bm5uZWNlc3NhcnkK
KyAgICAgICAgbnVsbCBjaGVjayBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZnVuY3Rpb24uCisgICAg
ICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjphZGp1c3RTZWxlY3Rpb25Ub0F2b2lkQ3Jv
c3NpbmdFZGl0aW5nQm91bmRhcmllcyk6IERpdHRvLgorICAgICAgICBBbHNvIHJlbW92ZWQgdGhl
IGFzc2VydGlvbnMgYmVjYXVzZSB0aGVzZSBzaXR1YXRpb25zIGNhbiBpbmRlZWQgYXJpc2UgYW5k
IGl0J3Mgbm90CisgICAgICAgIG5lY2Vzc2FyaWx5IGFuIGluZGljYXRpb24gb2YgYSBidWcgaW4g
ZWRpdGluZyBjb2RlLgorCisgICAgICAgICogZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmg6IFJl
YXJyYW5nZWQgY29uc3RydWN0b3JzIHRvIG1ha2UgaXQgc2xpZ2h0bHkgbW9yZSBjbGVhcgorICAg
ICAgICB3aGljaCBpcyB0aGUgbWFpbiBvbmUgYW5kIHRoYXQgdGhlIG90aGVycyBhcmUgc2ltcGx5
IGNvbnZlbmllbmNlIHNob3J0aGFuZHMuIE1pZ2h0CisgICAgICAgIHdhbnQgdG8gY29tZSBiYWNr
IGxhdGVyIGFuZCByZW1vdmUgc29tZSB1bnVzZWQgb25lcy4gQWRkZWQgdW5jYW5vbmljYWxpemVk
U3RhcnQsCisgICAgICAgIHVuY2Fub25pY2FsaXplZEVuZCwgYW5jaG9yLCBmb2N1cywgYW5kIHJh
bmdlLiBSZW5hbWVkIHRoZSBwcml2YXRlIGZ1bmN0aW9uIGNhbGxlZAorICAgICAgICBzZXRTdGFy
dEFuZEVuZEZyb21CYXNlQW5kRXh0ZW50UmVzcGVjdGluZ0dyYW51bGFyaXR5IHRvIHRoZSBuZXcg
bmFtZQorICAgICAgICBhZGp1c3RTZWxlY3Rpb25SZXNwZWN0aW5nR3JhbnVsYXJpdHkuIEFkZGVk
IG1fYW5jaG9yIGFuZCBtX2ZvY3VzIGFuZCByZWZpbmVkIHRoZQorICAgICAgICBjb21tZW50cyBh
Ym91dCB0aGUgcG9zaXRpb24gZGF0YSBtZW1iZXJzLiBXZSBzaG91bGQgZXZlbnR1YWxseSBiZSBh
YmxlIHRvIGN1dCBkb3duCisgICAgICAgIG9uIHRoZSBudW1iZXIgb2YgdGhlc2UgYWdhaW4sIGJ1
dCBpdCdzIGZpbmUgdG8gaGF2ZSB0d28gbW9yZSBmb3Igbm93LgorCisgICAgICAgICogcGFnZS9E
T01TZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpyYW5nZSBj
b25zdCk6IFVzZSByYW5nZSByYXRoZXIgdGhhbiBmaXJzdFJhbmdlIHdoZW4gbGl2ZQorICAgICAg
ICByYW5nZSBzZWxlY3Rpb24gaXMgZW5hYmxlZCwgZm9yIHByb3BlciByb3VuZC10cmlwcGluZyBv
ZiBzZWxlY3Rpb24gZW5kcG9pbnRzLAorICAgICAgICB1bmFmZmVjdGVkIGJ5IGNhbm9uaWNhbGl6
YXRpb24uIFRoZSBvdGhlciBjaGFuZ2VzIGJlbG93IGFyZSBmb3IgdGhlIHNhbWUgcmVhc29uLgor
ICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjphbmNob3JQb3NpdGlvbiBjb25zdCk6IFVz
ZSBhbmNob3IuCisgICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246OmZvY3VzUG9zaXRpb24g
Y29uc3QpOiBVc2UgZm9jdXMuCisgICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246OmJhc2VQ
b3NpdGlvbiBjb25zdCk6IFVzZSBhbmNob3IuCisgICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rp
b246OmV4dGVudFBvc2l0aW9uIGNvbnN0KTogVXNlIGZvY3VzLgorICAgICAgICAoV2ViQ29yZTo6
RE9NU2VsZWN0aW9uOjp0eXBlIGNvbnN0KTogVXNlIGlzSW5Eb2N1bWVudFRyZWUgYW5kIHJhbmdl
IHJhdGhlciB0aGFuCisgICAgICAgIGlzTm9uZS9pc0NhcmV0L2lzUmFuZ2Ugd2hlbiBsaXZlIHJh
bmdlIHNlbGVjdGlvbiBpcyBlbmFibGVkLCBiZWNhdXNlIHRoaXMgbmVlZHMKKyAgICAgICAgdG8g
cmVwb3J0ICJDYXJldCIgd2hlbiB0aGUgcmFuZ2UgaXMgbm90IGNvbGxhcHNlZCwgZXZlbiBpZiB0
aGUgY2Fub25pY2FsaXplZAorICAgICAgICByYW5nZSBpcyBjb2xsYXBzZWQgYW5kICJOb25lIiB3
aGVuIHRoZSBzZWxlY3Rpb24gaXMgaW4gYSBzaGFkb3cgdHJlZS4KKyAgICAgICAgKFdlYkNvcmU6
OkRPTVNlbGVjdGlvbjo6cmFuZ2VDb3VudCBjb25zdCk6IFVzZSBpc0luRG9jdW1lbnRUcmVlIHRv
IGNoZWNrIGlmCisgICAgICAgIHRoZXJlIGlzIGEgc2VsZWN0aW9uIHJhdGhlciB0aGFuIGlzTm9u
ZSB0byBjb3JyZWN0bHkgaGFuZGxlIHRoZSBzaGFkb3cgdHJlZSBjYXNlLgorICAgICAgICAoV2Vi
Q29yZTo6RE9NU2VsZWN0aW9uOjpjb2xsYXBzZVRvRW5kKTogVXNlIHVuY2Fub25pY2FsaXplZEVu
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6Y29sbGFwc2VUb1N0YXJ0KTogVXNl
IHVuY2Fub25pY2FsaXplZFN0YXJ0LgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpj
b250YWluc05vZGUgY29uc3QpOiBVcGRhdGVkIHRoZSBjb21tZW50IGZvciBjbGFyaXR5LgorCiAy
MDIwLTA5LTIwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBTZWxl
Y3Rpb24gQVBJOiBGaXggc2VsZWN0QWxsQ2hpbGRlbiB0byByZXR1cm4gSW52YWxpZE5vZGVUeXBl
RXJyb3Igd2hlbiBwYXNzZWQgYSBEb2N1bWVudFR5cGUgbm9kZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCA5Yzg4OTRjNGE1ZGY0YTkzMDE2ODQ1ZGU5ZTBm
ZGRkNDRhY2UwOWMxLi41Y2QyZTk2MjYwZWU2MDNhODFhM2ZjN2FkMjdiMWU3MjMxYmJhYTI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMjc4NiwxMCAr
Mjc4NiwxNSBAQCBzdGF0aWMgYm9vbCBjb250YWluc0VuZHBvaW50cyhjb25zdCBXZWFrUHRyPERv
Y3VtZW50PiYgZG9jdW1lbnQsIGNvbnN0IFJhbmdlJiBsaQogICAgIHJldHVybiBkb2N1bWVudCAm
JiBkb2N1bWVudC0+Y29udGFpbnMobGl2ZVJhbmdlLnN0YXJ0Q29udGFpbmVyKCkpOwogfQogCiti
b29sIEZyYW1lU2VsZWN0aW9uOjppc0luRG9jdW1lbnRUcmVlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gY29udGFpbnNFbmRwb2ludHMobV9kb2N1bWVudCwgbV9zZWxlY3Rpb24ucmFuZ2UoKSk7Cit9
CisKIFJlZlB0cjxSYW5nZT4gRnJhbWVTZWxlY3Rpb246OmFzc29jaWF0ZWRMaXZlUmFuZ2UoKQog
ewogICAgIGlmICghbV9hc3NvY2lhdGVkTGl2ZVJhbmdlKSB7Ci0gICAgICAgIGlmIChhdXRvIHJh
bmdlID0gbV9zZWxlY3Rpb24uZmlyc3RSYW5nZSgpOyBjb250YWluc0VuZHBvaW50cyhtX2RvY3Vt
ZW50LCByYW5nZSkpIHsKKyAgICAgICAgaWYgKGF1dG8gcmFuZ2UgPSBtX3NlbGVjdGlvbi5yYW5n
ZSgpOyBjb250YWluc0VuZHBvaW50cyhtX2RvY3VtZW50LCByYW5nZSkpIHsKICAgICAgICAgICAg
IG1fYXNzb2NpYXRlZExpdmVSYW5nZSA9IGNyZWF0ZUxpdmVSYW5nZSgqcmFuZ2UpOwogICAgICAg
ICAgICAgbV9hc3NvY2lhdGVkTGl2ZVJhbmdlLT5kaWRBc3NvY2lhdGVXaXRoU2VsZWN0aW9uKCk7
CiAgICAgICAgIH0KQEAgLTI4MTYsMTQgKzI4MjEsMTcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6
dXBkYXRlRnJvbUFzc29jaWF0ZWRMaXZlUmFuZ2UoKQogICAgIEFTU0VSVChtX2Fzc29jaWF0ZWRM
aXZlUmFuZ2UpOwogICAgIGlmICghY29udGFpbnNFbmRwb2ludHMobV9kb2N1bWVudCwgKm1fYXNz
b2NpYXRlZExpdmVSYW5nZSkpCiAgICAgICAgIGRpc2Fzc29jaWF0ZUxpdmVSYW5nZSgpOwotICAg
IGVsc2UKLSAgICAgICAgc2V0U2VsZWN0aW9uKG1ha2VTaW1wbGVSYW5nZSgqbV9hc3NvY2lhdGVk
TGl2ZVJhbmdlKSk7Ci0gICAgLy8gRklYTUU6IE5vcm1hbGl6YXRpb24gZG9uZSBieSBzZXRTZWxl
Y3Rpb24gd2lsbCBiZSB2aXNpYmxlIG5leHQgdGltZSB1cGRhdGVBc3NvY2lhdGVkTGl2ZVJhbmdl
IGlzIGNhbGxlZC4gSW5zdGVhZCB0aGUgU2VsZWN0aW9uIEFQSSBzcGVjaWZpY2F0aW9uIGNhbGxz
IGZvciBhbGxvd2luZyBub24tbm9ybWFsaXplZCBzZWxlY3Rpb24gcmFuZ2VzLgorICAgIGVsc2Ug
eworICAgICAgICAvLyBEb24ndCB1c2UgVmlzaWJsZVNlbGVjdGlvbidzIGNvbnN0cnVjdG9yIHRo
YXQgdGFrZXMgYSBTaW1wbGVSYW5nZSwgYmVjYXVzZSBpdCB1c2VzIG1ha2VEZXByZWNhdGVkTGVn
YWN5UG9zaXRpb24gaW5zdGVhZCBvZiBtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24uCisgICAg
ICAgIGF1dG8gc3RhcnQgPSBtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24oJm1fYXNzb2NpYXRl
ZExpdmVSYW5nZS0+c3RhcnRDb250YWluZXIoKSwgbV9hc3NvY2lhdGVkTGl2ZVJhbmdlLT5zdGFy
dE9mZnNldCgpKTsKKyAgICAgICAgYXV0byBlbmQgPSBtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRp
b24oJm1fYXNzb2NpYXRlZExpdmVSYW5nZS0+ZW5kQ29udGFpbmVyKCksIG1fYXNzb2NpYXRlZExp
dmVSYW5nZS0+ZW5kT2Zmc2V0KCkpOworICAgICAgICBzZXRTZWxlY3Rpb24oeyBzdGFydCwgZW5k
IH0pOworICAgIH0KIH0KIAogdm9pZCBGcmFtZVNlbGVjdGlvbjo6dXBkYXRlQXNzb2NpYXRlZExp
dmVSYW5nZSgpCiB7Ci0gICAgYXV0byByYW5nZSA9IG1fc2VsZWN0aW9uLmZpcnN0UmFuZ2UoKTsK
KyAgICBhdXRvIHJhbmdlID0gbV9zZWxlY3Rpb24ucmFuZ2UoKTsKICAgICBpZiAoIWNvbnRhaW5z
RW5kcG9pbnRzKG1fZG9jdW1lbnQsIHJhbmdlKSkgewogICAgICAgICAvLyBUaGUgc2VsZWN0aW9u
IHdhcyBjbGVhcmVkIG9yIGlzIG5vdyB3aXRoaW4gYSBzaGFkb3cgdHJlZS4KICAgICAgICAgZGlz
YXNzb2NpYXRlTGl2ZVJhbmdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0ZyYW1lU2VsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmgKaW5kZXggM2UzMmNlMTM4MjdhMTVhOWI3NTNlNmI0NWU1MTAwMDk5YmM4YTJiOC4uMzQxZjRl
ZGY4ZTNkODhlN2M4MjJjNTgyMzZjOTdkYzUwYmEzN2VlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRnJhbWVTZWxlY3Rpb24uaApAQCAtMjUxLDYgKzI1MSw3IEBAIHB1YmxpYzoKICAgICBib29s
IHNob3VsZFNob3dCbG9ja0N1cnNvcigpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkU2hvd0Jsb2Nr
Q3Vyc29yOyB9CiAgICAgdm9pZCBzZXRTaG91bGRTaG93QmxvY2tDdXJzb3IoYm9vbCk7CiAKKyAg
ICBib29sIGlzSW5Eb2N1bWVudFRyZWUoKSBjb25zdDsKICAgICBSZWZQdHI8UmFuZ2U+IGFzc29j
aWF0ZWRMaXZlUmFuZ2UoKTsKICAgICB2b2lkIGFzc29jaWF0ZUxpdmVSYW5nZShSYW5nZSYpOwog
ICAgIHZvaWQgZGlzYXNzb2NpYXRlTGl2ZVJhbmdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9WaXNpYmxlU2VsZWN0aW9uLmNwcAppbmRleCAxZGI5MTkxYWQ2MDhmMzNiYTczNjg3ZDlhN2M0
MDk0MGYzNWFjM2Q3Li4xYzc5MzUxODI1MjAyYjhiNTExN2Q3MjM4MjliNjYwYmU2N2QxYWMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKQEAgLTQ5LDUw
ICs0OSwzNSBAQCBWaXNpYmxlU2VsZWN0aW9uOjpWaXNpYmxlU2VsZWN0aW9uKCkKIHsKIH0KIAot
VmlzaWJsZVNlbGVjdGlvbjo6VmlzaWJsZVNlbGVjdGlvbihjb25zdCBQb3NpdGlvbiYgcG9zaXRp
b24sIEFmZmluaXR5IGFmZmluaXR5LCBib29sIGlzRGlyZWN0aW9uYWwpCi0gICAgOiBtX2Jhc2Uo
cG9zaXRpb24pCi0gICAgLCBtX2V4dGVudChwb3NpdGlvbikKK1Zpc2libGVTZWxlY3Rpb246OlZp
c2libGVTZWxlY3Rpb24oY29uc3QgUG9zaXRpb24mIGFuY2hvciwgY29uc3QgUG9zaXRpb24mIGZv
Y3VzLCBBZmZpbml0eSBhZmZpbml0eSwgYm9vbCBpc0RpcmVjdGlvbmFsKQorICAgIDogbV9hbmNo
b3IoYW5jaG9yKQorICAgICwgbV9mb2N1cyhmb2N1cykKICAgICAsIG1fYWZmaW5pdHkoYWZmaW5p
dHkpCiAgICAgLCBtX2lzRGlyZWN0aW9uYWwoaXNEaXJlY3Rpb25hbCkKIHsKICAgICB2YWxpZGF0
ZSgpOwogfQogCi1WaXNpYmxlU2VsZWN0aW9uOjpWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFBvc2l0
aW9uJiBiYXNlLCBjb25zdCBQb3NpdGlvbiYgZXh0ZW50LCBBZmZpbml0eSBhZmZpbml0eSwgYm9v
bCBpc0RpcmVjdGlvbmFsKQotICAgIDogbV9iYXNlKGJhc2UpCi0gICAgLCBtX2V4dGVudChleHRl
bnQpCi0gICAgLCBtX2FmZmluaXR5KGFmZmluaXR5KQotICAgICwgbV9pc0RpcmVjdGlvbmFsKGlz
RGlyZWN0aW9uYWwpCitWaXNpYmxlU2VsZWN0aW9uOjpWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFBv
c2l0aW9uJiBwb3NpdGlvbiwgQWZmaW5pdHkgYWZmaW5pdHksIGJvb2wgaXNEaXJlY3Rpb25hbCkK
KyAgICA6IFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb24sIHBvc2l0aW9uLCBhZmZpbml0eSwgaXNE
aXJlY3Rpb25hbCkKIHsKLSAgICB2YWxpZGF0ZSgpOwogfQogCiBWaXNpYmxlU2VsZWN0aW9uOjpW
aXNpYmxlU2VsZWN0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24sIGJvb2wgaXNE
aXJlY3Rpb25hbCkKLSAgICA6IG1fYmFzZShwb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpKQotICAg
ICwgbV9leHRlbnQocG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSkKLSAgICAsIG1fYWZmaW5pdHko
cG9zaXRpb24uYWZmaW5pdHkoKSkKLSAgICAsIG1faXNEaXJlY3Rpb25hbChpc0RpcmVjdGlvbmFs
KQorICAgIDogVmlzaWJsZVNlbGVjdGlvbihwb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLCBwb3Np
dGlvbi5hZmZpbml0eSgpLCBpc0RpcmVjdGlvbmFsKQogewotICAgIHZhbGlkYXRlKCk7CisgICAg
Ly8gRklYTUU6IFdhc3RlZnVsIHRoYXQgdGhpcyByZS1jYW5vbmljYWxpemVzLCBidXQgcmlza3kg
dG8gY2hhbmdlIHNpbmNlIHRoZSBWaXNpYmxlUG9zaXRpb24gb2JqZWN0IGNvdWxkIGJlIGZyb20g
YmVmb3JlIGEgbXV0YXRpb24gYW5kIGl0cyBwb3NpdGlvbiBtYXkgbm8gbG9uZ2VyIGJlIGNhbm9u
aWNhbC4KIH0KIAotVmlzaWJsZVNlbGVjdGlvbjo6VmlzaWJsZVNlbGVjdGlvbihjb25zdCBWaXNp
YmxlUG9zaXRpb24mIGJhc2UsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgZXh0ZW50LCBib29sIGlz
RGlyZWN0aW9uYWwpCi0gICAgOiBtX2Jhc2UoYmFzZS5kZWVwRXF1aXZhbGVudCgpKQotICAgICwg
bV9leHRlbnQoZXh0ZW50LmRlZXBFcXVpdmFsZW50KCkpCi0gICAgLCBtX2FmZmluaXR5KGJhc2Uu
YWZmaW5pdHkoKSkKLSAgICAsIG1faXNEaXJlY3Rpb25hbChpc0RpcmVjdGlvbmFsKQorVmlzaWJs
ZVNlbGVjdGlvbjo6VmlzaWJsZVNlbGVjdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIGFuY2hv
ciwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBmb2N1cywgYm9vbCBpc0RpcmVjdGlvbmFsKQorICAg
IDogVmlzaWJsZVNlbGVjdGlvbihhbmNob3IuZGVlcEVxdWl2YWxlbnQoKSwgZm9jdXMuZGVlcEVx
dWl2YWxlbnQoKSwgYW5jaG9yLmFmZmluaXR5KCksIGlzRGlyZWN0aW9uYWwpCiB7Ci0gICAgdmFs
aWRhdGUoKTsKKyAgICAvLyBGSVhNRTogV2FzdGVmdWwgdGhhdCB0aGlzIHJlLWNhbm9uaWNhbGl6
ZXMsIGJ1dCByaXNreSB0byBjaGFuZ2Ugc2luY2UgdGhlIFZpc2libGVQb3NpdGlvbiBvYmplY3Rz
IGNvdWxkIGJlIGZyb20gYmVmb3JlIGEgbXV0YXRpb24gYW5kIHRoZWlyIHBvc2l0aW9ucyBtYXkg
bm8gbG9uZ2VyIGJlIGNhbm9uaWNhbC4KIH0KIAogVmlzaWJsZVNlbGVjdGlvbjo6VmlzaWJsZVNl
bGVjdGlvbihjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIEFmZmluaXR5IGFmZmluaXR5LCBib29s
IGlzRGlyZWN0aW9uYWwpCi0gICAgOiBtX2Jhc2UoY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9u
KCZyYW5nZS5zdGFydENvbnRhaW5lcigpLCByYW5nZS5zdGFydE9mZnNldCgpKSkKLSAgICAsIG1f
ZXh0ZW50KGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbigmcmFuZ2UuZW5kQ29udGFpbmVyKCks
IHJhbmdlLmVuZE9mZnNldCgpKSkKLSAgICAsIG1fYWZmaW5pdHkoYWZmaW5pdHkpCi0gICAgLCBt
X2lzRGlyZWN0aW9uYWwoaXNEaXJlY3Rpb25hbCkKKyAgICA6IFZpc2libGVTZWxlY3Rpb24obWFr
ZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihyYW5nZS5zdGFydCksIG1ha2VEZXByZWNhdGVkTGVn
YWN5UG9zaXRpb24ocmFuZ2UuZW5kKSwgYWZmaW5pdHksIGlzRGlyZWN0aW9uYWwpCiB7Ci0gICAg
QVNTRVJUKCZyYW5nZS5zdGFydENvbnRhaW5lcigpLnRyZWVTY29wZSgpID09ICZyYW5nZS5lbmRD
b250YWluZXIoKS50cmVlU2NvcGUoKSk7Ci0gICAgdmFsaWRhdGUoKTsKIH0KIAogVmlzaWJsZVNl
bGVjdGlvbiBWaXNpYmxlU2VsZWN0aW9uOjpzZWxlY3Rpb25Gcm9tQ29udGVudHNPZk5vZGUoTm9k
ZSogbm9kZSkKQEAgLTEwMSwyOCArODYsNTEgQEAgVmlzaWJsZVNlbGVjdGlvbiBWaXNpYmxlU2Vs
ZWN0aW9uOjpzZWxlY3Rpb25Gcm9tQ29udGVudHNPZk5vZGUoTm9kZSogbm9kZSkKICAgICByZXR1
cm4gVmlzaWJsZVNlbGVjdGlvbihmaXJzdFBvc2l0aW9uSW5Ob2RlKG5vZGUpLCBsYXN0UG9zaXRp
b25Jbk5vZGUobm9kZSkpOwogfQogCitQb3NpdGlvbiBWaXNpYmxlU2VsZWN0aW9uOjphbmNob3Io
KSBjb25zdAoreworICAgIHJldHVybiBtX2FuY2hvcjsKK30KKworUG9zaXRpb24gVmlzaWJsZVNl
bGVjdGlvbjo6Zm9jdXMoKSBjb25zdAoreworICAgIHJldHVybiBtX2ZvY3VzOworfQorCitQb3Np
dGlvbiBWaXNpYmxlU2VsZWN0aW9uOjp1bmNhbm9uaWNhbGl6ZWRTdGFydCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fYmFzZUlzRmlyc3QgPyBtX2FuY2hvciA6IG1fZm9jdXM7Cit9CisKK1Bvc2l0
aW9uIFZpc2libGVTZWxlY3Rpb246OnVuY2Fub25pY2FsaXplZEVuZCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fYmFzZUlzRmlyc3QgPyBtX2ZvY3VzIDogbV9hbmNob3I7Cit9CisKK09wdGlvbmFs
PFNpbXBsZVJhbmdlPiBWaXNpYmxlU2VsZWN0aW9uOjpyYW5nZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1ha2VTaW1wbGVSYW5nZSh1bmNhbm9uaWNhbGl6ZWRTdGFydCgpLnBhcmVudEFuY2hvcmVk
RXF1aXZhbGVudCgpLCB1bmNhbm9uaWNhbGl6ZWRFbmQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxl
bnQoKSk7Cit9CisKIHZvaWQgVmlzaWJsZVNlbGVjdGlvbjo6c2V0QmFzZShjb25zdCBQb3NpdGlv
biYgcG9zaXRpb24pCiB7Ci0gICAgbV9iYXNlID0gcG9zaXRpb247CisgICAgbV9hbmNob3IgPSBw
b3NpdGlvbjsKICAgICB2YWxpZGF0ZSgpOwogfQogCiB2b2lkIFZpc2libGVTZWxlY3Rpb246OnNl
dEJhc2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24pCiB7Ci0gICAgbV9i
YXNlID0gdmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgdmFsaWRhdGUoKTsK
KyAgICBzZXRCYXNlKHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpKTsKIH0KIAogdm9p
ZCBWaXNpYmxlU2VsZWN0aW9uOjpzZXRFeHRlbnQoY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKQog
ewotICAgIG1fZXh0ZW50ID0gcG9zaXRpb247CisgICAgbV9mb2N1cyA9IHBvc2l0aW9uOwogICAg
IHZhbGlkYXRlKCk7CiB9CiAKIHZvaWQgVmlzaWJsZVNlbGVjdGlvbjo6c2V0RXh0ZW50KGNvbnN0
IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uKQogewotICAgIG1fZXh0ZW50ID0gdmlz
aWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgdmFsaWRhdGUoKTsKKyAgICBzZXRF
eHRlbnQodmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpOwogfQogCiBPcHRpb25hbDxT
aW1wbGVSYW5nZT4gVmlzaWJsZVNlbGVjdGlvbjo6Zmlyc3RSYW5nZSgpIGNvbnN0CkBAIC0yMTAs
MzkgKzIxOCwyNCBAQCB2b2lkIFZpc2libGVTZWxlY3Rpb246OmFwcGVuZFRyYWlsaW5nV2hpdGVz
cGFjZSgpCiAKIHZvaWQgVmlzaWJsZVNlbGVjdGlvbjo6c2V0QmFzZUFuZEV4dGVudFRvRGVlcEVx
dWl2YWxlbnRzKCkKIHsKLSAgICAvLyBNb3ZlIHRoZSBzZWxlY3Rpb24gdG8gcmVuZGVyZWQgcG9z
aXRpb25zLCBpZiBwb3NzaWJsZS4KLSAgICBib29sIGJhc2VBbmRFeHRlbnRFcXVhbCA9IG1fYmFz
ZSA9PSBtX2V4dGVudDsKLSAgICBpZiAobV9iYXNlLmlzTm90TnVsbCgpKSB7Ci0gICAgICAgIG1f
YmFzZSA9IFZpc2libGVQb3NpdGlvbihtX2Jhc2UsIG1fYWZmaW5pdHkpLmRlZXBFcXVpdmFsZW50
KCk7Ci0gICAgICAgIGlmIChiYXNlQW5kRXh0ZW50RXF1YWwpCi0gICAgICAgICAgICBtX2V4dGVu
dCA9IG1fYmFzZTsKLSAgICB9Ci0gICAgaWYgKG1fZXh0ZW50LmlzTm90TnVsbCgpICYmICFiYXNl
QW5kRXh0ZW50RXF1YWwpCi0gICAgICAgIG1fZXh0ZW50ID0gVmlzaWJsZVBvc2l0aW9uKG1fZXh0
ZW50LCBtX2FmZmluaXR5KS5kZWVwRXF1aXZhbGVudCgpOwotCi0gICAgLy8gTWFrZSBzdXJlIHdl
IGRvIG5vdCBoYXZlIGEgZGFuZ2xpbmcgYmFzZSBvciBleHRlbnQuCi0gICAgaWYgKG1fYmFzZS5p
c051bGwoKSAmJiBtX2V4dGVudC5pc051bGwoKSkKLSAgICAgICAgbV9iYXNlSXNGaXJzdCA9IHRy
dWU7Ci0gICAgZWxzZSBpZiAobV9iYXNlLmlzTnVsbCgpKSB7Ci0gICAgICAgIG1fYmFzZSA9IG1f
ZXh0ZW50OwotICAgICAgICBtX2Jhc2VJc0ZpcnN0ID0gdHJ1ZTsKLSAgICB9IGVsc2UgaWYgKG1f
ZXh0ZW50LmlzTnVsbCgpKSB7CisgICAgLy8gSWYgb25seSBvbmUgb2YgYW5jaG9yIGFuZCBmb2N1
cyBpcyBudWxsLCBjb252ZXJ0IHRvIGEgY2FyZXQgc2VsZWN0aW9uLgorICAgIC8vIEZJWE1FOiBT
ZWVtcyBsaWtlIGEgYmV0dGVyIHJ1bGUgd291bGQgYmUgdG8gY29udmVydCB0byBubyBzZWxlY3Rp
b24uCisgICAgaWYgKG1fYW5jaG9yLmlzTnVsbCgpKQorICAgICAgICBtX2FuY2hvciA9IG1fZm9j
dXM7CisgICAgaWYgKG1fZm9jdXMuaXNOdWxsKCkpCisgICAgICAgIG1fZm9jdXMgPSBtX2FuY2hv
cjsKKworICAgIG1fYmFzZSA9IFZpc2libGVQb3NpdGlvbihtX2FuY2hvciwgbV9hZmZpbml0eSku
ZGVlcEVxdWl2YWxlbnQoKTsKKyAgICBpZiAobV9hbmNob3IgPT0gbV9mb2N1cykKICAgICAgICAg
bV9leHRlbnQgPSBtX2Jhc2U7Ci0gICAgICAgIG1fYmFzZUlzRmlyc3QgPSB0cnVlOwotICAgIH0g
ZWxzZQotICAgICAgICBtX2Jhc2VJc0ZpcnN0ID0gbV9iYXNlIDw9IG1fZXh0ZW50OworICAgIGVs
c2UKKyAgICAgICAgbV9leHRlbnQgPSBWaXNpYmxlUG9zaXRpb24obV9mb2N1cywgbV9hZmZpbml0
eSkuZGVlcEVxdWl2YWxlbnQoKTsKKworICAgIG1fYmFzZUlzRmlyc3QgPSBtX2Jhc2UgPD0gbV9l
eHRlbnQ7CiB9CiAKLXZvaWQgVmlzaWJsZVNlbGVjdGlvbjo6c2V0U3RhcnRBbmRFbmRGcm9tQmFz
ZUFuZEV4dGVudFJlc3BlY3RpbmdHcmFudWxhcml0eShUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJp
dHkpCit2b2lkIFZpc2libGVTZWxlY3Rpb246OmFkanVzdFNlbGVjdGlvblJlc3BlY3RpbmdHcmFu
dWxhcml0eShUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiB7Ci0gICAgaWYgKG1fYmFzZUlz
Rmlyc3QpIHsKLSAgICAgICAgbV9zdGFydCA9IG1fYmFzZTsKLSAgICAgICAgbV9lbmQgPSBtX2V4
dGVudDsKLSAgICB9IGVsc2UgewotICAgICAgICBtX3N0YXJ0ID0gbV9leHRlbnQ7Ci0gICAgICAg
IG1fZW5kID0gbV9iYXNlOwotICAgIH0KLQogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKICAg
ICAgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OgogICAgICAg
ICAgICAgLy8gRG9uJ3QgZG8gYW55IGV4cGFuc2lvbi4KQEAgLTI4NiwxOSArMjc5LDE2IEBAIHZv
aWQgVmlzaWJsZVNlbGVjdGlvbjo6c2V0U3RhcnRBbmRFbmRGcm9tQmFzZUFuZEV4dGVudFJlc3Bl
Y3RpbmdHcmFudWxhcml0eShUZXh0CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICBtX2VuZCA9IGVuZC5kZWVwRXF1aXZhbGVudCgpOworCiAgICAgICAgICAgICAv
LyBFbmQgbXVzdCBub3QgYmUgYmVmb3JlIHN0YXJ0LgotICAgICAgICAgICAgaWYgKG1fc3RhcnQu
ZGVwcmVjYXRlZE5vZGUoKSA9PSBtX2VuZC5kZXByZWNhdGVkTm9kZSgpICYmIG1fc3RhcnQuZGVw
cmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA+IG1fZW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkp
IHsKLSAgICAgICAgICAgICAgICBQb3NpdGlvbiBzd2FwKG1fc3RhcnQpOwotICAgICAgICAgICAg
ICAgIG1fc3RhcnQgPSBtX2VuZDsgICAgCi0gICAgICAgICAgICAgICAgbV9lbmQgPSBzd2FwOyAg
ICAKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtX3N0YXJ0LmRlcHJlY2F0ZWROb2Rl
KCkgPT0gbV9lbmQuZGVwcmVjYXRlZE5vZGUoKSAmJiBtX3N0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5n
T2Zmc2V0KCkgPiBtX2VuZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKQorICAgICAgICAgICAg
ICAgIHN0ZDo6c3dhcChtX3N0YXJ0LCBtX2VuZCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQotICAgICAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eTog
eworICAgICAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eToKICAg
ICAgICAgICAgIG1fc3RhcnQgPSBzdGFydE9mU2VudGVuY2UoVmlzaWJsZVBvc2l0aW9uKG1fc3Rh
cnQsIG1fYWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOwogICAgICAgICAgICAgbV9lbmQgPSBl
bmRPZlNlbnRlbmNlKFZpc2libGVQb3NpdGlvbihtX2VuZCwgbV9hZmZpbml0eSkpLmRlZXBFcXVp
dmFsZW50KCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQogICAgICAgICBjYXNlIFRl
eHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5OiB7CiAgICAgICAgICAgICBtX3N0YXJ0ID0g
c3RhcnRPZkxpbmUoVmlzaWJsZVBvc2l0aW9uKG1fc3RhcnQsIG1fYWZmaW5pdHkpKS5kZWVwRXF1
aXZhbGVudCgpOwogICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGVuZCA9IGVuZE9mTGluZShW
aXNpYmxlUG9zaXRpb24obV9lbmQsIG1fYWZmaW5pdHkpKTsKQEAgLTM4NCwyOCArMzc0LDQ4IEBA
IHZvaWQgVmlzaWJsZVNlbGVjdGlvbjo6dXBkYXRlU2VsZWN0aW9uVHlwZSgpCiB2b2lkIFZpc2li
bGVTZWxlY3Rpb246OnZhbGlkYXRlKFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKIHsKICAg
ICBzZXRCYXNlQW5kRXh0ZW50VG9EZWVwRXF1aXZhbGVudHMoKTsKLSAgICBzZXRTdGFydEFuZEVu
ZEZyb21CYXNlQW5kRXh0ZW50UmVzcGVjdGluZ0dyYW51bGFyaXR5KGdyYW51bGFyaXR5KTsKKwor
ICAgIG1fc3RhcnQgPSBtX2Jhc2VJc0ZpcnN0ID8gbV9iYXNlIDogbV9leHRlbnQ7CisgICAgbV9l
bmQgPSBtX2Jhc2VJc0ZpcnN0ID8gbV9leHRlbnQgOiBtX2Jhc2U7CisKKyAgICBhdXRvIHN0YXJ0
QmVmb3JlQWRqdXN0bWVudHMgPSBtX3N0YXJ0OworICAgIGF1dG8gZW5kQmVmb3JlQWRqdXN0bWVu
dHMgPSBtX2VuZDsKKworICAgIGFkanVzdFNlbGVjdGlvblJlc3BlY3RpbmdHcmFudWxhcml0eShn
cmFudWxhcml0eSk7CiAgICAgYWRqdXN0U2VsZWN0aW9uVG9Bdm9pZENyb3NzaW5nU2hhZG93Qm91
bmRhcmllcygpOwogICAgIGFkanVzdFNlbGVjdGlvblRvQXZvaWRDcm9zc2luZ0VkaXRpbmdCb3Vu
ZGFyaWVzKCk7CiAgICAgdXBkYXRlU2VsZWN0aW9uVHlwZSgpOwogCisgICAgYm9vbCBzaG91bGRV
cGRhdGVBbmNob3IgPSBtX3N0YXJ0ICE9IHN0YXJ0QmVmb3JlQWRqdXN0bWVudHM7CisgICAgYm9v
bCBzaG91bGRVcGRhdGVGb2N1cyA9IG1fZW5kICE9IGVuZEJlZm9yZUFkanVzdG1lbnRzOworCiAg
ICAgaWYgKGlzUmFuZ2UoKSkgewogICAgICAgICAvLyAiQ29uc3RyYWluIiB0aGUgc2VsZWN0aW9u
IHRvIGJlIHRoZSBzbWFsbGVzdCBlcXVpdmFsZW50IHJhbmdlIG9mIG5vZGVzLgogICAgICAgICAv
LyBUaGlzIGlzIGEgc29tZXdoYXQgYXJiaXRyYXJ5IGNob2ljZSwgYnV0IGV4cGVyaWVuY2Ugc2hv
d3MgdGhhdCBpdCBpcwogICAgICAgICAvLyB1c2VmdWwgdG8gbWFrZSB0byBtYWtlIHRoZSBzZWxl
Y3Rpb24gImNhbm9uaWNhbCIgKGlmIG9ubHkgZm9yCiAgICAgICAgIC8vIHB1cnBvc2VzIG9mIGNv
bXBhcmluZyBzZWxlY3Rpb25zKS4gVGhpcyBpcyBhbiBpZGVhbCBwb2ludCBvZiB0aGUgY29kZQot
ICAgICAgICAvLyB0byBkbyB0aGlzIG9wZXJhdGlvbiwgc2luY2UgYWxsIHNlbGVjdGlvbiBjaGFu
Z2VzIHRoYXQgcmVzdWx0IGluIGEgUkFOR0UgCisgICAgICAgIC8vIHRvIGRvIHRoaXMgb3BlcmF0
aW9uLCBzaW5jZSBhbGwgc2VsZWN0aW9uIGNoYW5nZXMgdGhhdCByZXN1bHQgaW4gYSBSQU5HRQog
ICAgICAgICAvLyBjb21lIHRocm91Z2ggaGVyZSBiZWZvcmUgYW55b25lIHVzZXMgaXQuCiAgICAg
ICAgIC8vIEZJWE1FOiBDYW5vbmljYWxpemluZyBpcyBnb29kLCBidXQgaGF2ZW4ndCB3ZSBhbHJl
YWR5IGRvbmUgaXQgKHdoZW4gd2UKICAgICAgICAgLy8gc2V0IHRoZXNlIHR3byBwb3NpdGlvbnMg
dG8gVmlzaWJsZVBvc2l0aW9uIGRlZXBFcXVpdmFsZW50KClzIGFib3ZlKT8KICAgICAgICAgbV9z
dGFydCA9IG1fc3RhcnQuZG93bnN0cmVhbSgpOwogICAgICAgICBtX2VuZCA9IG1fZW5kLnVwc3Ry
ZWFtKCk7CiAKLSAgICAgICAgLy8gRklYTUU6IFBvc2l0aW9uOjpkb3duc3RyZWFtKCkgb3IgUG9z
aXRpb246OnVwU3RyZWFtKCkgbWlnaHQgdmlvbGF0ZSBlZGl0aW5nIGJvdW5kYXJpZXMKLSAgICAg
ICAgLy8gaWYgYW4gYW5jaG9yIG5vZGUgaGFzIGEgU2hhZG93IERPTS4gU28gd2UgYWRqdXN0IHNl
bGVjdGlvbiB0byBhdm9pZCBjcm9zc2luZyBlZGl0aW5nCi0gICAgICAgIC8vIGJvdW5kYXJpZXMg
YWdhaW4uIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc0NjMK
KyAgICAgICAgLy8gUG9zaXRpb246OmRvd25zdHJlYW0oKSBvciBQb3NpdGlvbjo6dXBzdHJlYW0o
KSBtaWdodCB2aW9sYXRlIGVkaXRpbmcgYm91bmRhcmllcworICAgICAgICAvLyBpZiBhbiBhbmNo
b3Igbm9kZSBoYXMgYSBTaGFkb3cgRE9NIGV2ZW4gdGhvdWdoIHRoZXkgc2hvdWxkIG5vdC4gQnV0
IGJlY2F1c2UgdGhpcworICAgICAgICAvLyBoYXBwZW5zIGluIHByYWN0aWNlLCBhZGp1c3Qgc2Vs
ZWN0aW9uIHRvIGF2b2lkIGNyb3NzaW5nIGVkaXRpbmcgYm91bmRhcmllcyBhZ2Fpbi4KKyAgICAg
ICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzQ2My4K
ICAgICAgICAgYWRqdXN0U2VsZWN0aW9uVG9Bdm9pZENyb3NzaW5nRWRpdGluZ0JvdW5kYXJpZXMo
KTsKICAgICB9CisKKyAgICBpZiAoc2hvdWxkVXBkYXRlQW5jaG9yKSB7CisgICAgICAgIG1fYW5j
aG9yID0gbV9iYXNlSXNGaXJzdCA/IG1fc3RhcnQgOiBtX2VuZDsKKyAgICAgICAgbV9iYXNlID0g
bV9hbmNob3I7CisgICAgfQorICAgIGlmIChzaG91bGRVcGRhdGVGb2N1cykgeworICAgICAgICBt
X2ZvY3VzID0gbV9iYXNlSXNGaXJzdCA/IG1fZW5kIDogbV9zdGFydDsKKyAgICAgICAgbV9leHRl
bnQgPSBtX2ZvY3VzOworICAgIH0KIH0KIAogLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gYnJlYWtz
IHRoZSBpbnZhcmlhbnQgb2YgdGhpcyBjbGFzcy4KQEAgLTQxNiw5ICs0MjYsMTAgQEAgdm9pZCBW
aXNpYmxlU2VsZWN0aW9uOjp2YWxpZGF0ZShUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiAv
LyBjbGFzcyBmb3IgZWRpdGluZyB0byB1c2UgdGhhdCBjYW4gbWFuaXB1bGF0ZSBzZWxlY3Rpb25z
IHRoYXQgYXJlIG5vdCBjdXJyZW50bHkgdmFsaWQuCiB2b2lkIFZpc2libGVTZWxlY3Rpb246OnNl
dFdpdGhvdXRWYWxpZGF0aW9uKGNvbnN0IFBvc2l0aW9uJiBiYXNlLCBjb25zdCBQb3NpdGlvbiYg
ZXh0ZW50KQogewotICAgIEFTU0VSVCghYmFzZS5pc051bGwoKSk7Ci0gICAgQVNTRVJUKCFleHRl
bnQuaXNOdWxsKCkpOworICAgIEFTU0VSVChiYXNlLmlzTnVsbCgpID09IGV4dGVudC5pc051bGwo
KSk7CiAgICAgQVNTRVJUKG1fYWZmaW5pdHkgPT0gQWZmaW5pdHk6OkRvd25zdHJlYW0pOworICAg
IG1fYW5jaG9yID0gYmFzZTsKKyAgICBtX2ZvY3VzID0gZXh0ZW50OwogICAgIG1fYmFzZSA9IGJh
c2U7CiAgICAgbV9leHRlbnQgPSBleHRlbnQ7CiAgICAgbV9iYXNlSXNGaXJzdCA9IGJhc2UgPD0g
ZXh0ZW50OwpAQCAtNDg2LDcgKzQ5Nyw3IEBAIHN0YXRpYyBib29sIGlzSW5Vc2VyQWdlbnRTaGFk
b3dSb290T3JIYXNFZGl0YWJsZVNoYWRvd0FuY2VzdG9yKE5vZGUmIG5vZGUpCiAKIHZvaWQgVmlz
aWJsZVNlbGVjdGlvbjo6YWRqdXN0U2VsZWN0aW9uVG9Bdm9pZENyb3NzaW5nU2hhZG93Qm91bmRh
cmllcygpCiB7Ci0gICAgaWYgKG1fYmFzZS5pc051bGwoKSB8fCBtX3N0YXJ0LmlzTnVsbCgpIHx8
IG1fZW5kLmlzTnVsbCgpKQorICAgIGlmIChtX3N0YXJ0LmlzTnVsbCgpIHx8IG1fZW5kLmlzTnVs
bCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHN0YXJ0Tm9kZSA9IG1ha2VSZWYoKm1f
c3RhcnQuYW5jaG9yTm9kZSgpKTsKQEAgLTUwMCw2ICs1MTEsNyBAQCB2b2lkIFZpc2libGVTZWxl
Y3Rpb246OmFkanVzdFNlbGVjdGlvblRvQXZvaWRDcm9zc2luZ1NoYWRvd0JvdW5kYXJpZXMoKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIC8vIENvcnJlY3QgdGhlIGZvY3VzIGlm
IG5lY2Vzc2FyeS4KICAgICBpZiAobV9iYXNlSXNGaXJzdCkgewogICAgICAgICBtX2V4dGVudCA9
IGFkanVzdFBvc2l0aW9uRm9yRW5kKG1fZW5kLCBtX3N0YXJ0LmNvbnRhaW5lck5vZGUoKSk7CiAg
ICAgICAgIG1fZW5kID0gbV9leHRlbnQ7CkBAIC01MDcsMTEgKzUxOSwxMiBAQCB2b2lkIFZpc2li
bGVTZWxlY3Rpb246OmFkanVzdFNlbGVjdGlvblRvQXZvaWRDcm9zc2luZ1NoYWRvd0JvdW5kYXJp
ZXMoKQogICAgICAgICBtX2V4dGVudCA9IGFkanVzdFBvc2l0aW9uRm9yU3RhcnQobV9zdGFydCwg
bV9lbmQuY29udGFpbmVyTm9kZSgpKTsKICAgICAgICAgbV9zdGFydCA9IG1fZXh0ZW50OwogICAg
IH0KKyAgICBtX2ZvY3VzID0gbV9leHRlbnQ7CiB9CiAKIHZvaWQgVmlzaWJsZVNlbGVjdGlvbjo6
YWRqdXN0U2VsZWN0aW9uVG9Bdm9pZENyb3NzaW5nRWRpdGluZ0JvdW5kYXJpZXMoKQogewotICAg
IGlmIChtX2Jhc2UuaXNOdWxsKCkgfHwgbV9zdGFydC5pc051bGwoKSB8fCBtX2VuZC5pc051bGwo
KSkKKyAgICBpZiAobV9zdGFydC5pc051bGwoKSB8fCBtX2VuZC5pc051bGwoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgLy8gRWFybHkgcmV0dXJuIGluIHRoZSBjYXJldCBjYXNlICh0aGUgc3Rh
dGUgaGFzbid0IGFjdHVhbGx5IGJlZW4gc2V0IHlldCwgc28gd2UgY2FuJ3QgdXNlIGlzQ2FyZXQo
KSkgdG8gYXZvaWQgdGhlCkBAIC01NzUsMTIgKzU4OCw3IEBAIHZvaWQgVmlzaWJsZVNlbGVjdGlv
bjo6YWRqdXN0U2VsZWN0aW9uVG9Bdm9pZENyb3NzaW5nRWRpdGluZ0JvdW5kYXJpZXMoKQogICAg
ICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzKHApOwogCiAgICAgICAgICAgICBpZiAo
cHJldmlvdXMuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBUaGUgc2VsZWN0aW9uIGNy
b3NzZXMgYW4gRWRpdGluZyBib3VuZGFyeS4gIFRoaXMgaXMgYQotICAgICAgICAgICAgICAgIC8v
IHByb2dyYW1tZXIgZXJyb3IgaW4gdGhlIGVkaXRpbmcgY29kZS4gIEhhcHB5IGRlYnVnZ2luZyEK
LSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICBt
X2Jhc2UgPSBQb3NpdGlvbigpOwotICAgICAgICAgICAgICAgIG1fZXh0ZW50ID0gUG9zaXRpb24o
KTsKLSAgICAgICAgICAgICAgICB2YWxpZGF0ZSgpOworICAgICAgICAgICAgICAgICp0aGlzID0g
eyB9OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IG1fZW5kID0gcHJldmlvdXMuZGVlcEVxdWl2YWxlbnQoKTsKQEAgLTYwNCwyMSArNjEyLDE4IEBA
IHZvaWQgVmlzaWJsZVNlbGVjdGlvbjo6YWRqdXN0U2VsZWN0aW9uVG9Bdm9pZENyb3NzaW5nRWRp
dGluZ0JvdW5kYXJpZXMoKQogICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIG5leHQocCk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChuZXh0LmlzTnVsbCgpKSB7Ci0gICAgICAgICAg
ICAgICAgLy8gVGhlIHNlbGVjdGlvbiBjcm9zc2VzIGFuIEVkaXRpbmcgYm91bmRhcnkuICBUaGlz
IGlzIGEKLSAgICAgICAgICAgICAgICAvLyBwcm9ncmFtbWVyIGVycm9yIGluIHRoZSBlZGl0aW5n
IGNvZGUuICBIYXBweSBkZWJ1Z2dpbmchCi0gICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgICAgICAgICAgbV9iYXNlID0gUG9zaXRpb24oKTsKLSAgICAgICAgICAg
ICAgICBtX2V4dGVudCA9IFBvc2l0aW9uKCk7Ci0gICAgICAgICAgICAgICAgdmFsaWRhdGUoKTsK
KyAgICAgICAgICAgICAgICAqdGhpcyA9IHsgfTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBtX3N0YXJ0ID0gbmV4dC5kZWVwRXF1aXZhbGVudCgp
OwogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIC8vIENvcnJlY3QgdGhlIGV4dGVudCBpZiBu
ZWNlc3NhcnkuCi0gICAgaWYgKGJhc2VFZGl0YWJsZUFuY2VzdG9yICE9IGxvd2VzdEVkaXRhYmxl
QW5jZXN0b3IobV9leHRlbnQuY29udGFpbmVyTm9kZSgpKSkKKyAgICAvLyBDb3JyZWN0IHRoZSBm
b2N1cyBpZiBuZWNlc3NhcnkuCisgICAgaWYgKGJhc2VFZGl0YWJsZUFuY2VzdG9yICE9IGxvd2Vz
dEVkaXRhYmxlQW5jZXN0b3IobV9leHRlbnQuY29udGFpbmVyTm9kZSgpKSkgewogICAgICAgICBt
X2V4dGVudCA9IG1fYmFzZUlzRmlyc3QgPyBtX2VuZCA6IG1fc3RhcnQ7CisgICAgICAgIG1fZm9j
dXMgPSBtX2V4dGVudDsKKyAgICB9CiB9CiAKIGJvb2wgVmlzaWJsZVNlbGVjdGlvbjo6aXNDb250
ZW50RWRpdGFibGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9W
aXNpYmxlU2VsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rp
b24uaAppbmRleCBjMDFlMWU0NTM3ZmNhNmQ3ZjgxMTA1NmJlODFiOGVkMjM1MjVlMGMzLi43M2Ey
YmRkYTNhNjQ0ZTIyNjg2MTJmMGEyZGE2MTIyNmMxM2EzMzRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaApAQCAtMzksMjcgKzM5LDQwIEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBkZWZhdWx0QWZmaW5pdHkgPSBWaXNpYmxlUG9zaXRp
b246OmRlZmF1bHRBZmZpbml0eTsKIAorICAgIFZpc2libGVTZWxlY3Rpb24oY29uc3QgUG9zaXRp
b24mIGFuY2hvciwgY29uc3QgUG9zaXRpb24mIGZvY3VzLCBBZmZpbml0eSA9IGRlZmF1bHRBZmZp
bml0eSwgYm9vbCBpc0RpcmVjdGlvbmFsID0gZmFsc2UpOworCiAgICAgVmlzaWJsZVNlbGVjdGlv
bihjb25zdCBQb3NpdGlvbiYsIEFmZmluaXR5LCBib29sIGlzRGlyZWN0aW9uYWwgPSBmYWxzZSk7
Ci0gICAgVmlzaWJsZVNlbGVjdGlvbihjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFBvc2l0aW9uJiwg
QWZmaW5pdHkgPSBkZWZhdWx0QWZmaW5pdHksIGJvb2wgaXNEaXJlY3Rpb25hbCA9IGZhbHNlKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFNpbXBsZVJhbmdlJiwg
QWZmaW5pdHkgPSBkZWZhdWx0QWZmaW5pdHksIGJvb2wgaXNEaXJlY3Rpb25hbCA9IGZhbHNlKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlv
biYsIGJvb2wgaXNEaXJlY3Rpb25hbCA9IGZhbHNlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBWaXNp
YmxlU2VsZWN0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlv
biYsIGJvb2wgaXNEaXJlY3Rpb25hbCA9IGZhbHNlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWaXNp
YmxlU2VsZWN0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYW5jaG9yLCBjb25zdCBWaXNpYmxl
UG9zaXRpb24mIGZvY3VzLCBib29sIGlzRGlyZWN0aW9uYWwgPSBmYWxzZSk7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25Gcm9tQ29udGVudHNP
Zk5vZGUoTm9kZSopOwogCiAgICAgdm9pZCBzZXRBZmZpbml0eShBZmZpbml0eSBhZmZpbml0eSkg
eyBtX2FmZmluaXR5ID0gYWZmaW5pdHk7IH0KICAgICBBZmZpbml0eSBhZmZpbml0eSgpIGNvbnN0
IHsgcmV0dXJuIG1fYWZmaW5pdHk7IH0KIAorICAgIC8vIEZJWE1FOiBNb3ZlIHRvIHRoZSB0ZXJt
cyAiZm9jdXMiIGFuZCAiYW5jaG9yIiBpbnN0ZWFkIG9mICJiYXNlIiBhbmQgImV4dGVudCIuCisK
ICAgICB2b2lkIHNldEJhc2UoY29uc3QgUG9zaXRpb24mKTsKICAgICB2b2lkIHNldEJhc2UoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJik7CiAgICAgdm9pZCBzZXRFeHRlbnQoY29uc3QgUG9zaXRpb24m
KTsKICAgICB2b2lkIHNldEV4dGVudChjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKIAorICAgIC8v
IFRoZXNlIGZ1bmN0aW9ucyByZXR1cm4gdGhlIHZhbHVlcyB0aGF0IHdlcmUgcGFzc2VkIGluLCB3
aXRob3V0IHRoZSBjYW5vbmljYWxpemF0aW9uIGRvbmUgYnkgVmlzaWJsZVBvc2l0aW9uLgorICAg
IC8vIEZJWE1FOiBXaGVuIHdlIGV4cGFuZCBncmFudWxhcml0eSwgd2UgY2Fub25pY2FsaXplIGFz
IGEgc2lkZSBlZmZlY3QsIHNvIGV4cGFuZGVkIHZhbHVlcyBoYXZlIGJlZW4gbWFkZSBjYW5vbmlj
YWwuCisgICAgLy8gRklYTUU6IFJlcGxhY2Ugc3RhcnQvcmFuZ2UvYmFzZS9lbmQvZmlyc3RSYW5n
ZSB3aXRoIHRoZXNlLCByZW5hbWluZyB0aGVzZSB0byB0aGUgc2hvcnRlciBuYW1lcy4KKyAgICBQ
b3NpdGlvbiB1bmNhbm9uaWNhbGl6ZWRTdGFydCgpIGNvbnN0OworICAgIFBvc2l0aW9uIHVuY2Fu
b25pY2FsaXplZEVuZCgpIGNvbnN0OworICAgIFBvc2l0aW9uIGFuY2hvcigpIGNvbnN0OworICAg
IFBvc2l0aW9uIGZvY3VzKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IHJhbmdlKCkgY29uc3Q7CisKKyAgICAvLyBGSVhNRTogUmVuYW1lIHRoZXNlIHRv
IGluY2x1ZGUgdGhlIHdvcmQgImNhbm9uaWNhbCIgb3IgcmVtb3ZlLgogICAgIFBvc2l0aW9uIGJh
c2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2U7IH0KICAgICBQb3NpdGlvbiBleHRlbnQoKSBjb25z
dCB7IHJldHVybiBtX2V4dGVudDsgfQogICAgIFBvc2l0aW9uIHN0YXJ0KCkgY29uc3QgeyByZXR1
cm4gbV9zdGFydDsgfQogICAgIFBvc2l0aW9uIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kOyB9
Ci0gICAgCisKICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVN0YXJ0KCkgY29uc3QgeyByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uKG1fc3RhcnQsIGlzUmFuZ2UoKSA/IEFmZmluaXR5OjpEb3duc3Ry
ZWFtIDogYWZmaW5pdHkoKSk7IH0KICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZUVuZCgpIGNv
bnN0IHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbihtX2VuZCwgaXNSYW5nZSgpID8gQWZmaW5pdHk6
OlVwc3RyZWFtIDogYWZmaW5pdHkoKSk7IH0KICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZUJh
c2UoKSBjb25zdCB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24obV9iYXNlLCBpc1JhbmdlKCkgPyAo
aXNCYXNlRmlyc3QoKSA/IEFmZmluaXR5OjpVcHN0cmVhbSA6IEFmZmluaXR5OjpEb3duc3RyZWFt
KSA6IGFmZmluaXR5KCkpOyB9CkBAIC04NCwxNyArOTcsMTkgQEAgcHVibGljOgogCiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBleHBhbmRVc2luZ0dyYW51bGFyaXR5KFRleHRHcmFudWxhcml0eSBn
cmFudWxhcml0eSk7CiAKKyAgICAvLyBGSVhNRTogUmVuYW1lIHRvIGluY2x1ZGUgdGhlIHdvcmQg
ImNhbm9uaWNhbCIgYW5kIHJlbW92ZSB0aGUgd29yZCAiZmlyc3QiIG9yIHJlbW92ZS4KICAgICAv
LyBXZSBkb24ndCB5ZXQgc3VwcG9ydCBtdWx0aS1yYW5nZSBzZWxlY3Rpb25zLCBzbyB3ZSBvbmx5
IGV2ZXIgaGF2ZSBvbmUgcmFuZ2UgdG8gcmV0dXJuLgogICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlv
bmFsPFNpbXBsZVJhbmdlPiBmaXJzdFJhbmdlKCkgY29uc3Q7CiAKLSAgICAvLyBGSVhNRTogTW9z
dCBjYWxsZXJzIHByb2JhYmx5IGRvbid0IHdhbnQgdGhpcyBmdW5jdGlvbiwgYW5kIHNob3VsZCB1
c2UgZmlyc3RSYW5nZSBpbnN0ZWFkLgotICAgIC8vIHRvTm9ybWFsaXplZFJhbmdlIGlzIGxpa2Ug
Zmlyc3RSYW5nZSwgYnV0IGNvbnRyYWN0cyB0aGUgcmFuZ2UgYXJvdW5kIHRleHQgYW5kIG1vdmVz
IHRoZSBjYXJldCB1cHN0cmVhbSBiZWZvcmUgcmV0dXJuaW5nIHRoZSByYW5nZS4KKyAgICAvLyBG
SVhNRTogTW9zdCBjYWxsZXJzIHByb2JhYmx5IGRvbid0IHdhbnQgdGhpcyBmdW5jdGlvbiwgYW5k
IHNob3VsZCB1c2UgcmFuZ2UgaW5zdGVhZC4KKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGNvbnRyYWN0
cyB0aGUgcmFuZ2UgYXJvdW5kIHRleHQgYW5kIG1vdmVzIHRoZSBjYXJldCB1cHN0cmVhbSBiZWZv
cmUgcmV0dXJuaW5nIHRoZSByYW5nZS4KICAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTaW1w
bGVSYW5nZT4gdG9Ob3JtYWxpemVkUmFuZ2UoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IEVsZW1lbnQqIHJvb3RFZGl0YWJsZUVsZW1lbnQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGlzQ29udGVudEVkaXRhYmxlKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBoYXNFZGl0YWJsZVN0eWxlKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0Nv
bnRlbnRSaWNobHlFZGl0YWJsZSgpIGNvbnN0OworCiAgICAgLy8gUmV0dXJucyBhIHNoYWRvdyB0
cmVlIG5vZGUgZm9yIGxlZ2FjeSBzaGFkb3cgdHJlZXMsIGEgY2hpbGQgb2YgdGhlCiAgICAgLy8g
U2hhZG93Um9vdCBub2RlIGZvciBuZXcgc2hhZG93IHRyZWVzLCBvciAwIGZvciBub24tc2hhZG93
IHRyZWVzLgogICAgIE5vZGUqIG5vbkJvdW5kYXJ5U2hhZG93VHJlZVJvb3ROb2RlKCkgY29uc3Q7
CkBAIC0xMTcsMjAgKzEzMiwyNCBAQCBwcml2YXRlOgogCiAgICAgLy8gU3VwcG9ydCBtZXRob2Rz
IGZvciB2YWxpZGF0ZSgpCiAgICAgdm9pZCBzZXRCYXNlQW5kRXh0ZW50VG9EZWVwRXF1aXZhbGVu
dHMoKTsKLSAgICB2b2lkIHNldFN0YXJ0QW5kRW5kRnJvbUJhc2VBbmRFeHRlbnRSZXNwZWN0aW5n
R3JhbnVsYXJpdHkoVGV4dEdyYW51bGFyaXR5KTsKKyAgICB2b2lkIGFkanVzdFNlbGVjdGlvblJl
c3BlY3RpbmdHcmFudWxhcml0eShUZXh0R3JhbnVsYXJpdHkpOwogICAgIHZvaWQgYWRqdXN0U2Vs
ZWN0aW9uVG9Bdm9pZENyb3NzaW5nU2hhZG93Qm91bmRhcmllcygpOwogICAgIHZvaWQgYWRqdXN0
U2VsZWN0aW9uVG9Bdm9pZENyb3NzaW5nRWRpdGluZ0JvdW5kYXJpZXMoKTsKICAgICB2b2lkIHVw
ZGF0ZVNlbGVjdGlvblR5cGUoKTsKIAotICAgIC8vIFdlIHN0b3JlIHRoZXNlIGFzIFBvc2l0aW9u
cyBiZWNhdXNlIFZpc2libGVTZWxlY3Rpb24gaXMgdXNlZCB0byBzdG9yZSB2YWx1ZXMgaW4KKyAg
ICAvLyBXZSBzdG9yZSBvbmx5IFBvc2l0aW9ucyBiZWNhdXNlIFZpc2libGVTZWxlY3Rpb24gaXMg
dXNlZCB0byBzdG9yZSB2YWx1ZXMgaW4KICAgICAvLyBlZGl0aW5nIGNvbW1hbmRzIGZvciB1c2Ug
d2hlbiB1bmRvaW5nIHRoZSBjb21tYW5kLiBXZSBuZWVkIHRvIGJlIGFibGUgdG8gc3RvcmUKICAg
ICAvLyBhIHNlbGVjdGlvbiB0aGF0LCB3aGlsZSBjdXJyZW50bHkgaW52YWxpZCwgd2lsbCBiZSB2
YWxpZCBvbmNlIHRoZSBjaGFuZ2VzIGFyZSB1bmRvbmUuCiAKLSAgICBQb3NpdGlvbiBtX2Jhc2U7
IC8vIFdoZXJlIHRoZSBmaXJzdCBjbGljayBoYXBwZW5lZC4KLSAgICBQb3NpdGlvbiBtX2V4dGVu
dDsgLy8gV2hlcmUgdGhlIGVuZCBjbGljayBoYXBwZW5lZC4KLQotICAgIFBvc2l0aW9uIG1fc3Rh
cnQ7IC8vIExlZnRtb3N0IHBvc2l0aW9uIHdoZW4gZXhwYW5kZWQgdG8gcmVzcGVjdCBncmFudWxh
cml0eS4KLSAgICBQb3NpdGlvbiBtX2VuZDsgLy8gUmlnaHRtb3N0IHBvc2l0aW9uIHdoZW4gZXhw
YW5kZWQgdG8gcmVzcGVjdCBncmFudWxhcml0eS4KKyAgICAvLyBGSVhNRTogQ29uc2lkZXIgZG9p
bmcgY2Fub25pY2FsaXphdGlvbiBvbmx5IGFzIHBhcnQgb2YgZWRpdGluZyBvcGVyYXRpb25zLCBh
bmQga2VlcGluZyBhbGwgc2VsZWN0aW9uIGVuZHBvaW50cyBub24tY2Fub25pY2FsIG91dHNpZGUg
b2YgdGhhdCBjb2RlLgorICAgIC8vIEZJWE1FOiBSZW5hbWUgbV9iYXNlIHRvIG1fY2Fub25pY2Fs
QW5jaG9yLgorICAgIC8vIEZJWE1FOiBSZW5hbWUgbV9leHRlbnQgdG8gbV9jYW5vbmljYWxGb2N1
cy4KKyAgICBQb3NpdGlvbiBtX2FuY2hvcjsgLy8gV2hlcmUgdGhlIGZpcnN0IGNsaWNrIGhhcHBl
bmVkLgorICAgIFBvc2l0aW9uIG1fZm9jdXM7IC8vIFdoZXJlIHRoZSBlbmQgY2xpY2svcmVsZWFz
ZSBoYXBwZW5lZC4KKyAgICBQb3NpdGlvbiBtX2Jhc2U7IC8vIEFuY2hvciwgY2Fub25pY2FsLCBu
b3QgeWV0IGV4cGVuZGVkIHRvIHJlc3BlY3QgZ3JhbnVsYXJpdHkuCisgICAgUG9zaXRpb24gbV9l
eHRlbnQ7IC8vIEZvY3VzLCBjYW5vbmljYWwsIGJ1dCBub3QgZXhwZW5kZWQgdG8gcmVzcGVjdCBn
cmFudWxhcml0eS4KKyAgICBQb3NpdGlvbiBtX3N0YXJ0OyAvLyBGaXJzdCBvZiBhbmNob3IgYW5k
IGZvY3VzLCBjYW9uaWNhbGl6ZWQgYW5kIGV4cGFuZGVkIHRvIHJlc3BlY3QgZ3JhbnVsYXJpdHku
CisgICAgUG9zaXRpb24gbV9lbmQ7IC8vIExhc3Qgb2YgYW5jaG9yIGFuZCBmb2N1cywgY2Fvbmlj
YWxpemVkIGFuZCBleHBhbmRlZCB0byByZXNwZWN0IGdyYW51bGFyaXR5LgogCiAgICAgQWZmaW5p
dHkgbV9hZmZpbml0eSB7IGRlZmF1bHRBZmZpbml0eSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNl
bGVjdGlvbi5jcHAKaW5kZXggYWM2ZWZkYmQxOWMwMmZkNjY5NzJiNmNmYzQ5MWRlZjA0NTQ2MzZj
MS4uMWI0ZWJmYWRmNzE3M2NmM2U1YmMxN2RiZmY2YzBjNGE0MDNiMTA3MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NU2VsZWN0aW9uLmNwcApAQCAtNjksNyArNjksOSBAQCBPcHRpb25hbDxTaW1wbGVS
YW5nZT4gRE9NU2VsZWN0aW9uOjpyYW5nZSgpIGNvbnN0CiAgICAgYXV0byBmcmFtZSA9IHRoaXMt
PmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
LSAgICBhdXRvIHJhbmdlID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmZpcnN0UmFu
Z2UoKTsKKyAgICBhdXRvIHJhbmdlID0gZnJhbWUtPnNldHRpbmdzKCkubGl2ZVJhbmdlU2VsZWN0
aW9uRW5hYmxlZCgpCisgICAgICAgID8gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnJh
bmdlKCkKKyAgICAgICAgOiBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuZmlyc3RSYW5n
ZSgpOwogICAgIGlmICghcmFuZ2UgfHwgcmFuZ2UtPnN0YXJ0LmNvbnRhaW5lci0+aXNJblNoYWRv
d1RyZWUoKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICByZXR1cm4gcmFuZ2U7
CkBAIC04MCw2ICs4Miw4IEBAIFBvc2l0aW9uIERPTVNlbGVjdGlvbjo6YW5jaG9yUG9zaXRpb24o
KSBjb25zdAogICAgIGF1dG8gZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUp
CiAgICAgICAgIHJldHVybiB7IH07CisgICAgaWYgKGZyYW1lLT5zZXR0aW5ncygpLmxpdmVSYW5n
ZVNlbGVjdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIGZyYW1lLT5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKS5hbmNob3IoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKICAgICBhdXRv
JiBzZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgcmV0dXJu
IChzZWxlY3Rpb24uaXNCYXNlRmlyc3QoKSA/IHNlbGVjdGlvbi5zdGFydCgpIDogc2VsZWN0aW9u
LmVuZCgpKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKIH0KQEAgLTg5LDIzICs5MywzMSBA
QCBQb3NpdGlvbiBET01TZWxlY3Rpb246OmZvY3VzUG9zaXRpb24oKSBjb25zdAogICAgIGF1dG8g
ZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiB7
IH07CisgICAgaWYgKGZyYW1lLT5zZXR0aW5ncygpLmxpdmVSYW5nZVNlbGVjdGlvbkVuYWJsZWQo
KSkKKyAgICAgICAgcmV0dXJuIGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5mb2N1cygp
LnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogICAgIGF1dG8mIHNlbGVjdGlvbiA9IGZyYW1l
LT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKICAgICByZXR1cm4gKHNlbGVjdGlvbi5pc0Jhc2VG
aXJzdCgpID8gc2VsZWN0aW9uLmVuZCgpIDogc2VsZWN0aW9uLnN0YXJ0KCkpLnBhcmVudEFuY2hv
cmVkRXF1aXZhbGVudCgpOwogfQogCiBQb3NpdGlvbiBET01TZWxlY3Rpb246OmJhc2VQb3NpdGlv
bigpIGNvbnN0CiB7CisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG9uY2UgbGl2ZVJhbmdlU2Vs
ZWN0aW9uRW5hYmxlZCBpcyBhbHdheXMgb24sIHNpbmNlIGJhc2UgYW5kIGFuY2hvciBzaG91bGQg
YmUgdGhlIHNhbWUgdGhpbmcuCiAgICAgYXV0byBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CiAgICAg
aWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBpZiAoZnJhbWUtPnNldHRpbmdz
KCkubGl2ZVJhbmdlU2VsZWN0aW9uRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4gZnJhbWUtPnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpLmFuY2hvcigpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgp
OwogICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuYmFzZSgpLnBhcmVu
dEFuY2hvcmVkRXF1aXZhbGVudCgpOwogfQogCiBQb3NpdGlvbiBET01TZWxlY3Rpb246OmV4dGVu
dFBvc2l0aW9uKCkgY29uc3QKIHsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSBsaXZl
UmFuZ2VTZWxlY3Rpb25FbmFibGVkIGlzIGFsd2F5cyBvbiwgc2luY2UgZXh0ZW50IGFuZCBmb2N1
cyBzaG91bGQgYmUgdGhlIHNhbWUgdGhpbmcuCiAgICAgYXV0byBmcmFtZSA9IHRoaXMtPmZyYW1l
KCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBpZiAoZnJhbWUt
PnNldHRpbmdzKCkubGl2ZVJhbmdlU2VsZWN0aW9uRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4g
ZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmZvY3VzKCkucGFyZW50QW5jaG9yZWRFcXVp
dmFsZW50KCk7CiAgICAgcmV0dXJuIGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5leHRl
bnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKIH0KIApAQCAtMTY0LDYgKzE3Niw4IEBA
IFN0cmluZyBET01TZWxlY3Rpb246OnR5cGUoKSBjb25zdAogICAgIGlmICghZnJhbWUpCiAgICAg
ICAgIHJldHVybiAiTm9uZSJfczsKICAgICBhdXRvJiBzZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0
aW9uKCk7CisgICAgaWYgKGZyYW1lLT5zZXR0aW5ncygpLmxpdmVSYW5nZVNlbGVjdGlvbkVuYWJs
ZWQoKSkKKyAgICAgICAgcmV0dXJuICFzZWxlY3Rpb24uaXNJbkRvY3VtZW50VHJlZSgpID8gIk5v
bmUiX3MgOiByYW5nZSgpLT5jb2xsYXBzZWQoKSA/ICJDYXJldCJfcyA6ICJSYW5nZSJfczsKICAg
ICBpZiAoc2VsZWN0aW9uLmlzTm9uZSgpKQogICAgICAgICByZXR1cm4gIk5vbmUiX3M7CiAgICAg
aWYgKHNlbGVjdGlvbi5pc0NhcmV0KCkpCkBAIC0xNzQsNiArMTg4LDggQEAgU3RyaW5nIERPTVNl
bGVjdGlvbjo6dHlwZSgpIGNvbnN0CiB1bnNpZ25lZCBET01TZWxlY3Rpb246OnJhbmdlQ291bnQo
KSBjb25zdAogewogICAgIGF1dG8gZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmIChmcmFt
ZS0+c2V0dGluZ3MoKS5saXZlUmFuZ2VTZWxlY3Rpb25FbmFibGVkKCkpCisgICAgICAgIHJldHVy
biBmcmFtZSAmJiBmcmFtZS0+c2VsZWN0aW9uKCkuaXNJbkRvY3VtZW50VHJlZSgpOwogICAgIHJl
dHVybiAhZnJhbWUgfHwgZnJhbWUtPnNlbGVjdGlvbigpLmlzTm9uZSgpID8gMCA6IDE7CiB9CiAK
QEAgLTIxMCw4ICsyMjYsMTEgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRE9NU2VsZWN0aW9uOjpjb2xs
YXBzZVRvRW5kKCkKICAgICBhdXRvJiBzZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCk7CiAg
ICAgaWYgKHNlbGVjdGlvbi5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yIH07Ci0gICAgc2VsZWN0aW9uLmRpc2Fzc29jaWF0ZUxpdmVSYW5nZSgp
OwotICAgIHNlbGVjdGlvbi5tb3ZlVG8oc2VsZWN0aW9uLnNlbGVjdGlvbigpLmVuZCgpLCBBZmZp
bml0eTo6RG93bnN0cmVhbSk7CisgICAgaWYgKGZyYW1lLT5zZXR0aW5ncygpLmxpdmVSYW5nZVNl
bGVjdGlvbkVuYWJsZWQoKSkgeworICAgICAgICBzZWxlY3Rpb24uZGlzYXNzb2NpYXRlTGl2ZVJh
bmdlKCk7CisgICAgICAgIHNlbGVjdGlvbi5tb3ZlVG8oc2VsZWN0aW9uLnNlbGVjdGlvbigpLnVu
Y2Fub25pY2FsaXplZEVuZCgpLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7CisgICAgfSBlbHNlCisg
ICAgICAgIHNlbGVjdGlvbi5tb3ZlVG8oc2VsZWN0aW9uLnNlbGVjdGlvbigpLmVuZCgpLCBBZmZp
bml0eTo6RG93bnN0cmVhbSk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtMjIzLDggKzI0Miwx
MSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBET01TZWxlY3Rpb246OmNvbGxhcHNlVG9TdGFydCgpCiAg
ICAgYXV0byYgc2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlvbigpOwogICAgIGlmIChzZWxlY3Rp
b24uaXNOb25lKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciB9OwotICAgIHNlbGVjdGlvbi5kaXNhc3NvY2lhdGVMaXZlUmFuZ2UoKTsKLSAgICBzZWxlY3Rp
b24ubW92ZVRvKHNlbGVjdGlvbi5zZWxlY3Rpb24oKS5zdGFydCgpLCBBZmZpbml0eTo6RG93bnN0
cmVhbSk7CisgICAgaWYgKGZyYW1lLT5zZXR0aW5ncygpLmxpdmVSYW5nZVNlbGVjdGlvbkVuYWJs
ZWQoKSkgeworICAgICAgICBzZWxlY3Rpb24uZGlzYXNzb2NpYXRlTGl2ZVJhbmdlKCk7CisgICAg
ICAgIHNlbGVjdGlvbi5tb3ZlVG8oc2VsZWN0aW9uLnNlbGVjdGlvbigpLnVuY2Fub25pY2FsaXpl
ZFN0YXJ0KCksIEFmZmluaXR5OjpEb3duc3RyZWFtKTsKKyAgICB9IGVsc2UKKyAgICAgICAgc2Vs
ZWN0aW9uLm1vdmVUbyhzZWxlY3Rpb24uc2VsZWN0aW9uKCkuc3RhcnQoKSwgQWZmaW5pdHk6OkRv
d25zdHJlYW0pOwogICAgIHJldHVybiB7IH07CiB9CiAKQEAgLTQwNSw3ICs0MjcsNyBAQCB2b2lk
IERPTVNlbGVjdGlvbjo6ZGVsZXRlRnJvbURvY3VtZW50KCkKIAogYm9vbCBET01TZWxlY3Rpb246
OmNvbnRhaW5zTm9kZShOb2RlJiBub2RlLCBib29sIGFsbG93UGFydGlhbCkgY29uc3QKIHsKLSAg
ICAvLyBGSVhNRTogVGhpcyBpcyB3cm9uZywgYW5kIHdhcyBhZGRlZCB0byB3b3JrIGFyb3VuZCBh
bm9tYWxpZXMgY2F1c2VkIHdoZW4gd2UgY2Fub25pY2FsaXplIHNlbGVjdGlvbiBlbmRwb2ludHMu
IFdlIHNob3VsZCBmaXggdGhhdCBhbmQgcmVtb3ZlIHRoaXMuCisgICAgLy8gRklYTUU6IFRoZSBy
dWxlIGltcGxlbWVudGVkIGhlcmUgZm9yIHRleHQgbm9kZXMgaXMgd3JvbmcsIGFuZCB3YXMgYWRk
ZWQgdG8gd29yayBhcm91bmQgYW5vbWFsaWVzIGNhdXNlZCB3aGVuIHdlIGNhbm9uaWNhbGl6ZSBz
ZWxlY3Rpb24gZW5kcG9pbnRzLgogICAgIGlmIChub2RlLmlzVGV4dE5vZGUoKSAmJiAhbm9kZS5k
b2N1bWVudCgpLnNldHRpbmdzKCkubGl2ZVJhbmdlU2VsZWN0aW9uRW5hYmxlZCgpKQogICAgICAg
ICBhbGxvd1BhcnRpYWwgPSB0cnVlOwogICAgIGF1dG8gcmFuZ2UgPSB0aGlzLT5yYW5nZSgpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDQyYzNiNjQ0ZTBjYWM0Y2IwODM0YTViNjhhY2M5NmQzOGZmYTYzYWMuLmRlZjdiNWFh
NWYxMDM4MmJlZTJjMjY2YzEwMzU1OTc5NzI1Zjk1ZDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAor
MjAyMC0wOS0yMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2Vs
ZWN0aW9uIEFQSTogRnVydGhlciBpbXByb3ZlbWVudHMgdG8gVmlzaWJsZVNlbGVjdGlvbiwgRnJh
bWVTZWxlY3Rpb24sIGFuZCBET01TZWxlY3Rpb24gdG8gcHJlc2VydmUgYW5jaG9yIGFuZCBmb2N1
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2NzM5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgICogZWRpdGlu
Zy9leGVjQ29tbWFuZC9pbnNlcnQtbGlzdC1uZXN0ZWQtd2l0aC1vcnBoYW5lZC1leHBlY3RlZC50
eHQ6IFRoaXMgdGVzdAorICAgICAgICByZXN1bHQgcmVmbGVjdGVkIGluY29ycnJlY3QgYmVoYXZp
b3Igd2hlcmUgdGhlIHNlbGVjdGlvbiBjaGFuZ2VkIGZyb20gYSByYW5nZQorICAgICAgICB0byBh
IGNhcmV0IGluIGEgY2VydGFpbiB1bnVzdWFsIGNhc2UuIFRoZSBuZXcgYmVoYXZpb3Igb2YgbGVh
dmluZyB0aGUgdGV4dAorICAgICAgICBzZWxlY3RlZCBpcyBjb25zaXN0ZW50IHdpdGggaG93IHRo
ZSBjb21tYW5kIHdvcmtzIGluIG5vcm1hbCBjYXNlcywgYW5kIHdhcyBhbgorICAgICAgICBhY2Np
ZGVudGFsIHByb2dyZXNzaW9uIGZyb20gdGhlIGltcHJvdmVtZW50cyB0byB0aGUgc2VsZWN0aW9u
IGNvZGUuIFdhcyBhYmxlCisgICAgICAgIHRvIHJlcHJvZHVjZSB0aGlzIGFsbCBpbiBTYWZhcmkg
YW5kIGFmdGVyIGV4cGVyaW1lbnRpbmcgd2l0aCBkaWZmZXJlbnQKKyAgICAgICAgc2VsZWN0aW9u
cywgaXQncyBjbGVhciB0aGlzIGlzIGFuIGltcHJvdmVtZW50LgorCiAyMDIwLTA5LTIwICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBJbmxpbmVG
b3JtYXR0aW5nU3RhdGUgc2hvdWxkIG5vdCBzdG9yZSBkaXNwbGF5IGxpbmVzIGFuZCBydW5zCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1saXN0LW5l
c3RlZC13aXRoLW9ycGhhbmVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvZXhl
Y0NvbW1hbmQvaW5zZXJ0LWxpc3QtbmVzdGVkLXdpdGgtb3JwaGFuZWQtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDQwM2ZlNTI2NTU5OTRjZmEzMmRiMmY1YTI4NWI2OGE1N2FiMWU3NGMuLmQxNjQ3ODMxNjgx
NDZhYzAyOTY4NmRhMTM1Y2QxMDdmZTdiNjMyNmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0LWxpc3QtbmVzdGVkLXdpdGgtb3JwaGFuZWQtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0LWxpc3Qt
bmVzdGVkLXdpdGgtb3JwaGFuZWQtZXhwZWN0ZWQudHh0CkBAIC0xNyw3ICsxNyw3IEBAIFRoaXMg
dGVzdHMgaGFuZyB3aGVuIGxpc3RpZnlpbmcgbmVzdGVkIGxpc3RzIHdpdGggYW4gb3JwaGFuZWQg
bGlzdCBjaGlsZCBpbiBiZXR3CiAgICAgICAgICIKIHwgICAgIDxvbD4KIHwgICAgICAgPGxpPgot
fCAgICAgICAgICI8I3NlbGVjdGlvbi1jYXJldD5iZWNhdXNlIG9mIHlvdSIKK3wgICAgICAgICAi
YmVjYXVzZSBvZiB5b3UiCiB8ICAgIgogICAgICIKIHwgIgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>