<?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>232648</bug_id>
          
          <creation_ts>2021-11-02 17:29:43 -0700</creation_ts>
          <short_desc>Make scrollbar orientation an enum class</short_desc>
          <delta_ts>2021-11-04 14:59:17 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikos Mouchtaris">nmouchtaris</reporter>
          <assigned_to name="Nikos Mouchtaris">nmouchtaris</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>allan.jensen</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jamesr</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>samuel_white</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1811327</commentid>
    <comment_count>0</comment_count>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2021-11-02 17:29:43 -0700</bug_when>
    <thetext>Make scrollbar orientation an enum class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811328</commentid>
    <comment_count>1</comment_count>
      <attachid>443152</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2021-11-02 17:31:25 -0700</bug_when>
    <thetext>Created attachment 443152
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811350</commentid>
    <comment_count>2</comment_count>
      <attachid>443152</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-11-02 18:48:42 -0700</bug_when>
    <thetext>Comment on attachment 443152
Patch

r+ but you need to fix the gtk/wpe/win builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811722</commentid>
    <comment_count>3</comment_count>
      <attachid>443259</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2021-11-03 17:15:40 -0700</bug_when>
    <thetext>Created attachment 443259
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811930</commentid>
    <comment_count>4</comment_count>
      <attachid>443332</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2021-11-04 12:21:36 -0700</bug_when>
    <thetext>Created attachment 443332
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811972</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-04 14:58:38 -0700</bug_when>
    <thetext>Committed r285316 (243888@main): &lt;https://commits.webkit.org/243888@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 443332.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811974</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-04 14:59:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/85034984&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443152</attachid>
            <date>2021-11-02 17:31:25 -0700</date>
            <delta_ts>2021-11-02 18:48:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232648-20211102173124.patch</filename>
            <type>text/plain</type>
            <size>59109</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0OTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNkZTRiODAxM2NjOTky
MzJmOTQzM2IwODFmNzM2YTFhYjc3OWJhYi4uYjFjMDBhYWJkNTMwMzNlOTRlY2M4NmFlMzBiNjlj
NmM4YTI0MmZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDIxLTExLTAyICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2Ug
c2Nyb2xsYmFyIG9yaWVudGF0aW9uIGFuIGVudW0gY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjY0OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
U2Nyb2xsYmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxiYXI6
Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6Cisg
ICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlclRlc3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OnNjcm9sbGJhck1hdGNoZXNIb3Jpem9udGFsUHNldWRvQ2xhc3MpOgorICAgICAgICAo
V2ViQ29yZTo6c2Nyb2xsYmFyTWF0Y2hlc1ZlcnRpY2FsUHNldWRvQ2xhc3MpOgorICAgICAgICAq
IHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6aG9yaXpv
bnRhbFNjcm9sbGJhckhpZGRlbkJ5U3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVWaWV3Ojp2ZXJ0aWNhbFNjcm9sbGJhckhpZGRlbkJ5U3R5bGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3OjpwZXJmb3JtU2l6ZVRvQ29udGVudEF1dG9TaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRqdXN0U2Nyb2xsU3RlcEZvckZpeGVkQ29udGVudCk6
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxhYmxl
QXJlYVNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxB
bmltYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c2Nyb2xsKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpkZWx0YUZyb21TdGVwKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpoYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9TY3JvbGxUeXBlcy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2V0SGFzSG9yaXpvbnRhbFNjcm9s
bGJhcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRIYXNWZXJ0aWNhbFNjcm9s
bGJhcik6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxhYmxlQXJlYTo6c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGFibGVBcmVhOjpkaWRBZGRTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYWJsZUFyZWE6OndpbGxSZW1vdmVTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYWJsZUFyZWE6OmRvUG9zdFRodW1iTW92ZVNuYXBwaW5nKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oOgorICAgICAgICAoV2ViQ29yZTo6b2Zmc2V0Rm9yT3Jp
ZW50YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXI6OnByZXNzZWRQYXJ0U2Nyb2xsRGlyZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhcjo6bW92ZVRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhcjo6bW91c2VNb3ZlZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6Om1vdXNlRG93
bik6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnNwbGl0VHJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRyYWNrUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRyYWNrTGVuZ3RoKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6cmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6Omhhc0J1dHRvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyVGhlbWVNYWM6Omhhc1RodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1dHRv
blJlcGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpiYWNr
QnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6Zm9yd2Fy
ZEJ1dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnRyYWNr
UmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbGJhcnNDb250cm9sbGVyTWFjLm1t
OgorICAgICAgICAoLVtXZWJTY3JvbGxlckltcERlbGVnYXRlIGxheWVyXSk6CisgICAgICAgICgt
W1dlYlNjcm9sbGVySW1wRGVsZWdhdGUgc2V0VXBBbHBoYUFuaW1hdGlvbjpzY3JvbGxlclBhaW50
ZXI6cGFydDphbmltYXRlQWxwaGFUbzpkdXJhdGlvbjpdKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6aGFzQXV0b1Njcm9s
bGJhciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Omhhc0Fsd2F5c1ByZXNl
bnRTY3JvbGxiYXIgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVPdmVy
Zmxvd0NvbnRyb2xzTGF5ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBk
YXRlT3ZlcmZsb3dDb250cm9sc0xheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OmRlc3Ryb3lSb290TGF5ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
U2Nyb2xsYWJsZUFyZWE6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyU2Ny
b2xsYWJsZUFyZWE6OmRlc3Ryb3lTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJTY3JvbGxhYmxlQXJlYTo6c2V0SGFzSG9yaXpvbnRhbFNjcm9sbGJhcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjpzZXRIYXNWZXJ0aWNhbFNjcm9s
bGJhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjp1cGRh
dGVTY3JvbGxiYXJQcmVzZW5jZUFuZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyU2Nyb2xsYWJsZUFyZWE6OnVwZGF0ZVNjcm9sbGJhcnNBZnRlckxheW91dCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGlzdEJveDo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnNjcm9s
bFRvUmV2ZWFsRWxlbWVudEF0TGlzdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxp
c3RCb3g6OnNldFNjcm9sbFRvcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94Ojpj
cmVhdGVTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6ZGVzdHJv
eVNjcm9sbGJhcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXI6OlJlbmRlclNjcm9sbGJhcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXI6OnVwZGF0ZVNjcm9sbGJhclBhcnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6YnV0dG9uUmVjdCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXI6OnRyYWNrUmVjdCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXI6OnRyYWNrUGllY2VSZWN0V2l0aE1hcmdpbnMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyOjptaW5pbXVtVGh1bWJMZW5n
dGggY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclBhcnQ6OmxheW91dCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNjcm9sbGJhclRoZW1lOjpidXR0b25TaXplc0Fsb25nVHJhY2tBeGlzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpoYXNCdXR0b25zKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNr
UGllY2VzKToKKwogMjAyMS0xMC0yOCAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBs
ZS5jb20+CiAKICAgICAgICAgSXNvbGF0ZWQgdHJlZSBtb2RlOiBEaXNwYXRjaCBhbGwgY2FsbHMg
dG8gW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZV0gaW4gV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHRvIHRoZSBBWCB0aHJlYWQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGEwMTRkYTc2MzVjNzUyNmJhMmYwMDg3MDg3YmE3N2MxNTFiY2EzYjUuLjNlOGNi
ZWNiNDYwYzYwN2ZkYmFlNTM5N2M3OTI4OTBiYjgxMmQ4MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTggQEAKKzIwMjEtMTEtMDIgIE5pa29sYW9zIE1vdWNodGFyaXMgIDxubW91Y2h0YXJpc0BhcHBs
ZS5jb20+CisKKyAgICAgICAgTWFrZSBzY3JvbGxiYXIgb3JpZW50YXRpb24gYW4gZW51bSBjbGFz
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNjQ4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFy
ZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJIaXRUZXN0
UmVzdWx0RGF0YTo6V2ViSGl0VGVzdFJlc3VsdERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnVw
ZGF0ZVNjcm9sbGJhcnMpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmNyZWF0ZVNjcm9s
bGJhcik6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6ZGVzdHJveVNjcm9sbGJhcik6Cisg
ICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6ZGVzdHJveSk6CisKIDIwMjEtMTAtMjggIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIFdlYlBhZ2VQ
cm94eSBpZGVudGlmaWVycyB0byBgVmlld0dlc3R1cmVzYCBjYXRlZ29yeSBsb2dnaW5nCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxi
YXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xs
YmFyLmNwcAppbmRleCA3NTQ3ZjZmMTU1YTk4OWU4MjgwMDNlMWUwMjliOGUzNzRkOTI2MjllLi5i
YTkyYTU3ZGI0NDlkZDIwM2MwZDVjYWNlMTNkMmE4NjAyNzkxZjRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5jcHAK
QEAgLTY5LDkgKzY5LDkgQEAgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIEFjY2Vzc2liaWxpdHlT
Y3JvbGxiYXI6Om9yaWVudGF0aW9uKCkgY29uc3QKICAgICBpZiAoIW1fc2Nyb2xsYmFyKQogICAg
ICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpWZXJ0aWNhbDsKIAotICAgIGlm
IChtX3Njcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKQorICAg
IGlmIChtX3Njcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6
VmVydGljYWwpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246Okhvcml6
b250YWw7Ci0gICAgaWYgKG1fc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Ny
b2xsYmFyKQorICAgIGlmIChtX3Njcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJP
cmllbnRhdGlvbjo6VmVydGljYWwpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50
YXRpb246OlZlcnRpY2FsOwogCiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6
VmVydGljYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKaW5kZXggM2NjMDdhYWZl
MTQxNjhjMTQ0ZThhOWQ1OGNiZjI3YmY5ZTM2MWMwNi4uOTJhNjA0NDhlOWVkZmY5ODI1M2ExOGRi
NjI2MmRlZmZlMGNhOTI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9y
Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaApAQCAt
NDMsNyArNDMsNyBAQCBzdHJ1Y3QgU3R5bGVTY3JvbGxiYXJTdGF0ZSB7CiAgICAgU2Nyb2xsYmFy
UGFydCBzY3JvbGxiYXJQYXJ0IHsgTm9QYXJ0IH07CiAgICAgU2Nyb2xsYmFyUGFydCBob3ZlcmVk
UGFydCB7IE5vUGFydCB9OwogICAgIFNjcm9sbGJhclBhcnQgcHJlc3NlZFBhcnQgeyBOb1BhcnQg
fTsKLSAgICBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiB7IFZlcnRpY2FsU2Nyb2xs
YmFyIH07CisgICAgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24geyBTY3JvbGxiYXJP
cmllbnRhdGlvbjo6VmVydGljYWwgfTsKICAgICBTY3JvbGxiYXJCdXR0b25zUGxhY2VtZW50IGJ1
dHRvbnNQbGFjZW1lbnQgeyBTY3JvbGxiYXJCdXR0b25zTm9uZSB9OwogICAgIGJvb2wgZW5hYmxl
ZCB7IGZhbHNlIH07CiAgICAgYm9vbCBzY3JvbGxDb3JuZXJJc1Zpc2libGUgeyBmYWxzZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlclRlc3RGdW5jdGlv
bnMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXJUZXN0RnVuY3Rpb25zLmgK
aW5kZXggOWM3ZDE0NzZmODNmNjJkY2ZmNWEwODQxYmM4NzY4Zjk0ZmViOThlZS4uZmY2MWQwMGI2
YWNlMTM2ODUwMWRlODEzMjI1NTU1ZGY2NWUxZTRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1NlbGVjdG9yQ2hlY2tlclRlc3RGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU2VsZWN0b3JDaGVja2VyVGVzdEZ1bmN0aW9ucy5oCkBAIC0yOTUsMTIgKzI5NSwxMiBA
QCBBTFdBWVNfSU5MSU5FIGJvb2wgc2Nyb2xsYmFyTWF0Y2hlc0FjdGl2ZVBzZXVkb0NsYXNzKGNv
bnN0IFNlbGVjdG9yQ2hlY2tlcjo6Q2hlYwogCiBBTFdBWVNfSU5MSU5FIGJvb2wgc2Nyb2xsYmFy
TWF0Y2hlc0hvcml6b250YWxQc2V1ZG9DbGFzcyhjb25zdCBTZWxlY3RvckNoZWNrZXI6OkNoZWNr
aW5nQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC5zY3JvbGxiYXJTdGF0
ZSAmJiBjb250ZXh0LnNjcm9sbGJhclN0YXRlLT5vcmllbnRhdGlvbiA9PSBIb3Jpem9udGFsU2Ny
b2xsYmFyOworICAgIHJldHVybiBjb250ZXh0LnNjcm9sbGJhclN0YXRlICYmIGNvbnRleHQuc2Ny
b2xsYmFyU3RhdGUtPm9yaWVudGF0aW9uID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9u
dGFsOwogfQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgc2Nyb2xsYmFyTWF0Y2hlc1ZlcnRpY2FsUHNl
dWRvQ2xhc3MoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQmIGNvbnRleHQp
CiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuc2Nyb2xsYmFyU3RhdGUgJiYgY29udGV4dC5zY3JvbGxi
YXJTdGF0ZS0+b3JpZW50YXRpb24gPT0gVmVydGljYWxTY3JvbGxiYXI7CisgICAgcmV0dXJuIGNv
bnRleHQuc2Nyb2xsYmFyU3RhdGUgJiYgY29udGV4dC5zY3JvbGxiYXJTdGF0ZS0+b3JpZW50YXRp
b24gPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246OlZlcnRpY2FsOwogfQogCiBBTFdBWVNfSU5MSU5F
IGJvb2wgc2Nyb2xsYmFyTWF0Y2hlc0RlY3JlbWVudFBzZXVkb0NsYXNzKGNvbnN0IFNlbGVjdG9y
Q2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0JiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCmluZGV4IDU3OGVjZGI2OTNkZmE1MzEwYTcxNjA2ZjAzNmJmZjZkMmZhYzYyNDYuLmY1YjUx
YTMxNGM0M2JlMmVmNTRmN2U5Y2JjMjU1NjExMGY3NWJiMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKQEAgLTE0OTQsNyArMTQ5NCw3IEBAIGJvb2wgRnJhbWVWaWV3Ojpob3Jpem9udGFs
U2Nyb2xsYmFySGlkZGVuQnlTdHlsZSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBzY3JvbGxiYXIg
JiYgc2Nyb2xsYmFyLT5pc0hpZGRlbkJ5U3R5bGUoKTsKICAgICB9CiAKLSAgICByZXR1cm4gc3R5
bGVIaWRlc1Njcm9sbGJhcldpdGhPcmllbnRhdGlvbihIb3Jpem9udGFsU2Nyb2xsYmFyKTsKKyAg
ICByZXR1cm4gc3R5bGVIaWRlc1Njcm9sbGJhcldpdGhPcmllbnRhdGlvbihTY3JvbGxiYXJPcmll
bnRhdGlvbjo6SG9yaXpvbnRhbCk7CiB9CiAKIGJvb2wgRnJhbWVWaWV3Ojp2ZXJ0aWNhbFNjcm9s
bGJhckhpZGRlbkJ5U3R5bGUoKSBjb25zdApAQCAtMTUwNCw3ICsxNTA0LDcgQEAgYm9vbCBGcmFt
ZVZpZXc6OnZlcnRpY2FsU2Nyb2xsYmFySGlkZGVuQnlTdHlsZSgpIGNvbnN0CiAgICAgICAgIHJl
dHVybiBzY3JvbGxiYXIgJiYgc2Nyb2xsYmFyLT5pc0hpZGRlbkJ5U3R5bGUoKTsKICAgICB9CiAg
ICAgCi0gICAgcmV0dXJuIHN0eWxlSGlkZXNTY3JvbGxiYXJXaXRoT3JpZW50YXRpb24oVmVydGlj
YWxTY3JvbGxiYXIpOworICAgIHJldHVybiBzdHlsZUhpZGVzU2Nyb2xsYmFyV2l0aE9yaWVudGF0
aW9uKFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbCk7CiB9CiAKIHZvaWQgRnJhbWVWaWV3
OjpzZXRDYW5ub3RCbGl0VG9XaW5kb3coKQpAQCAtMzU4OCwxNCArMzU4OCwxNCBAQCB2b2lkIEZy
YW1lVmlldzo6cGVyZm9ybVNpemVUb0NvbnRlbnRBdXRvU2l6ZSgpCiAgICAgICAgIGlmIChuZXdT
aXplLndpZHRoKCkgPiBtX2F1dG9TaXplQ29uc3RyYWludC53aWR0aCgpKSB7CiAgICAgICAgICAg
ICBSZWZQdHI8U2Nyb2xsYmFyPiBsb2NhbEhvcml6b250YWxTY3JvbGxiYXIgPSBob3Jpem9udGFs
U2Nyb2xsYmFyKCk7CiAgICAgICAgICAgICBpZiAoIWxvY2FsSG9yaXpvbnRhbFNjcm9sbGJhcikK
LSAgICAgICAgICAgICAgICBsb2NhbEhvcml6b250YWxTY3JvbGxiYXIgPSBjcmVhdGVTY3JvbGxi
YXIoSG9yaXpvbnRhbFNjcm9sbGJhcik7CisgICAgICAgICAgICAgICAgbG9jYWxIb3Jpem9udGFs
U2Nyb2xsYmFyID0gY3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9u
dGFsKTsKICAgICAgICAgICAgIG5ld1NpemUuZXhwYW5kKDAsIGxvY2FsSG9yaXpvbnRhbFNjcm9s
bGJhci0+b2NjdXBpZWRIZWlnaHQoKSk7CiAgICAgICAgICAgICAvLyBEb24ndCBib3RoZXIgY2hl
Y2tpbmcgZm9yIGEgdmVydGljYWwgc2Nyb2xsYmFyIGJlY2F1c2UgdGhlIHdpZHRoIGlzIGF0CiAg
ICAgICAgICAgICAvLyBhbHJlYWR5IGdyZWF0ZXIgdGhlIG1heGltdW0uCiAgICAgICAgIH0gZWxz
ZSBpZiAobmV3U2l6ZS5oZWlnaHQoKSA+IG1fYXV0b1NpemVDb25zdHJhaW50LmhlaWdodCgpKSB7
CiAgICAgICAgICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBsb2NhbFZlcnRpY2FsU2Nyb2xsYmFyID0g
dmVydGljYWxTY3JvbGxiYXIoKTsKICAgICAgICAgICAgIGlmICghbG9jYWxWZXJ0aWNhbFNjcm9s
bGJhcikKLSAgICAgICAgICAgICAgICBsb2NhbFZlcnRpY2FsU2Nyb2xsYmFyID0gY3JlYXRlU2Ny
b2xsYmFyKFZlcnRpY2FsU2Nyb2xsYmFyKTsKKyAgICAgICAgICAgICAgICBsb2NhbFZlcnRpY2Fs
U2Nyb2xsYmFyID0gY3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNh
bCk7CiAgICAgICAgICAgICBuZXdTaXplLmV4cGFuZChsb2NhbFZlcnRpY2FsU2Nyb2xsYmFyLT5v
Y2N1cGllZFdpZHRoKCksIDApOwogICAgICAgICAgICAgLy8gRG9uJ3QgYm90aGVyIGNoZWNraW5n
IGZvciBhIGhvcml6b250YWwgc2Nyb2xsYmFyIGJlY2F1c2UgdGhlIGhlaWdodCBpcwogICAgICAg
ICAgICAgLy8gYWxyZWFkeSBncmVhdGVyIHRoZSBtYXhpbXVtLgpAQCAtMzgxNyw3ICszODE3LDcg
QEAgdm9pZCBGcmFtZVZpZXc6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKGNvbnN0IFNj
cm9sbFBvc2l0aW9uJiBwb3NpdGlvbiwgU2MKIAogZmxvYXQgRnJhbWVWaWV3OjphZGp1c3RTY3Jv
bGxTdGVwRm9yRml4ZWRDb250ZW50KGZsb2F0IHN0ZXAsIFNjcm9sbGJhck9yaWVudGF0aW9uIG9y
aWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0eSkKIHsKLSAgICBpZiAoZ3Jh
bnVsYXJpdHkgIT0gU2Nyb2xsQnlQYWdlIHx8IG9yaWVudGF0aW9uID09IEhvcml6b250YWxTY3Jv
bGxiYXIpCisgICAgaWYgKGdyYW51bGFyaXR5ICE9IFNjcm9sbEJ5UGFnZSB8fCBvcmllbnRhdGlv
biA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCkKICAgICAgICAgcmV0dXJuIHN0
ZXA7CiAKICAgICBUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldCogcG9zaXRpb25lZE9iamVjdHMg
PSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCAzYTZlYzVhZmU1MjNjYTY5MzVi
YjhhMTUxOGI2YTBkODM4ZWJkZGY3Li40YjFjZjI0M2E2MzdhOGZjNDA1Mjc0YmVjNzUwMjc0ZWNl
OGM5OWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtNjEzLDEzICs2MTMsMTMgQEAgdm9p
ZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxhYmxlQXJlYVNjcm9sbGJhckxheWVy
RGlkQ2hhbmdlKFNjcm9sbGFibGUKICAgICBhdXRvKiBub2RlID0gbV9zY3JvbGxpbmdTdGF0ZVRy
ZWUtPnN0YXRlTm9kZUZvcklEKHNjcm9sbGFibGVBcmVhLnNjcm9sbGluZ05vZGVJRCgpKTsKICAg
ICBpZiAoaXM8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlPihub2RlKSkgewogICAgICAgICBh
dXRvJiBzY3JvbGxpbmdOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
Pigqbm9kZSk7Ci0gICAgICAgIGlmIChvcmllbnRhdGlvbiA9PSBWZXJ0aWNhbFNjcm9sbGJhcikK
KyAgICAgICAgaWYgKG9yaWVudGF0aW9uID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNh
bCkKICAgICAgICAgICAgIHNjcm9sbGluZ05vZGUuc2V0VmVydGljYWxTY3JvbGxiYXJMYXllcihz
Y3JvbGxhYmxlQXJlYS5sYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyKCkpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBzY3JvbGxpbmdOb2RlLnNldEhvcml6b250YWxTY3JvbGxiYXJMYXllcihz
Y3JvbGxhYmxlQXJlYS5sYXllckZvckhvcml6b250YWxTY3JvbGxiYXIoKSk7CiAgICAgfQogCi0g
ICAgaWYgKG9yaWVudGF0aW9uID09IFZlcnRpY2FsU2Nyb2xsYmFyKQorICAgIGlmIChvcmllbnRh
dGlvbiA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwpCiAgICAgICAgIHNjcm9sbGFi
bGVBcmVhLnZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoKTsKICAgICBlbHNlCiAgICAg
ICAgIHNjcm9sbGFibGVBcmVhLmhvcml6b250YWxTY3JvbGxiYXJMYXllckRpZENoYW5nZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCmluZGV4IGFiMThiODI3
OWFmZjhlZTg5YTg5YzIwZTVhMDM4ODVlNTM0ZDNjZDQuLjhmZTg0NzYzOWRkOTNjOWZiMWJjNDcw
ZDg2NTBhODJmNDVhNmY3MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRvci5jcHAKQEAgLTc2LDE2ICs3NiwxNiBAQCBib29sIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGwo
U2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5CiAKICAg
ICAgICAgYXV0byBjdXJyZW50T2Zmc2V0ID0gb2Zmc2V0RnJvbVBvc2l0aW9uKGN1cnJlbnRQb3Np
dGlvbigpKTsKICAgICAgICAgYXV0byBuZXdPZmZzZXQgPSBjdXJyZW50T2Zmc2V0ICsgZGVsdGE7
Ci0gICAgICAgIGlmIChvcmllbnRhdGlvbiA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKQorICAgICAg
ICBpZiAob3JpZW50YXRpb24gPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWwpCiAg
ICAgICAgICAgICBuZXdPZmZzZXQuc2V0WChtX3Njcm9sbENvbnRyb2xsZXIuYWRqdXN0ZWRTY3Jv
bGxEZXN0aW5hdGlvbihTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIG5ld09mZnNldCwgbXVs
dGlwbGllciwgY3VycmVudE9mZnNldC54KCkpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
bmV3T2Zmc2V0LnNldFkobV9zY3JvbGxDb250cm9sbGVyLmFkanVzdGVkU2Nyb2xsRGVzdGluYXRp
b24oU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgbmV3T2Zmc2V0LCBtdWx0aXBsaWVyLCBjdXJy
ZW50T2Zmc2V0LnkoKSkpOwogCiAgICAgICAgIGF1dG8gbmV3RGVsdGEgPSBuZXdPZmZzZXQgLSBj
dXJyZW50T2Zmc2V0OwotICAgICAgICBpZiAob3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9s
bGJhcikKLSAgICAgICAgICAgIHJldHVybiBzY3JvbGwoSG9yaXpvbnRhbFNjcm9sbGJhciwgZ3Jh
bnVsYXJpdHksIG5ld0RlbHRhLndpZHRoKCksIDEuMCwgYmVoYXZpb3IpOworICAgICAgICBpZiAo
b3JpZW50YXRpb24gPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWwpCisgICAgICAg
ICAgICByZXR1cm4gc2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsLCBncmFu
dWxhcml0eSwgbmV3RGVsdGEud2lkdGgoKSwgMS4wLCBiZWhhdmlvcik7CiAKLSAgICAgICAgcmV0
dXJuIHNjcm9sbChWZXJ0aWNhbFNjcm9sbGJhciwgZ3JhbnVsYXJpdHksIG5ld0RlbHRhLmhlaWdo
dCgpLCAxLjAsIGJlaGF2aW9yKTsKKyAgICAgICAgcmV0dXJuIHNjcm9sbChTY3JvbGxiYXJPcmll
bnRhdGlvbjo6VmVydGljYWwsIGdyYW51bGFyaXR5LCBuZXdEZWx0YS5oZWlnaHQoKSwgMS4wLCBi
ZWhhdmlvcik7CiAgICAgfQogCiAgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsQW5pbWF0
b3JFbmFibGVkKCkgJiYgcGxhdGZvcm1BbGxvd3NTY3JvbGxBbmltYXRpb24oKSAmJiAhYmVoYXZp
b3IuY29udGFpbnMoU2Nyb2xsQmVoYXZpb3I6Ok5ldmVyQW5pbWF0ZSkpIHsKQEAgLTE0NSw3ICsx
NDUsNyBAQCBGbG9hdFBvaW50IFNjcm9sbEFuaW1hdG9yOjpwb3NpdGlvbkZyb21PZmZzZXQoY29u
c3QgRmxvYXRQb2ludCYgb2Zmc2V0KSBjb25zdAogRmxvYXRTaXplIFNjcm9sbEFuaW1hdG9yOjpk
ZWx0YUZyb21TdGVwKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBmbG9hdCBzdGVw
LCBmbG9hdCBtdWx0aXBsaWVyKQogewogICAgIEZsb2F0U2l6ZSBkZWx0YTsKLSAgICBpZiAob3Jp
ZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKKyAgICBpZiAob3JpZW50YXRpb24gPT0g
U2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWwpCiAgICAgICAgIGRlbHRhLnNldFdpZHRo
KHN0ZXAgKiBtdWx0aXBsaWVyKTsKICAgICBlbHNlCiAgICAgICAgIGRlbHRhLnNldEhlaWdodChz
dGVwICogbXVsdGlwbGllcik7CkBAIC0yMTgsNyArMjE4LDcgQEAgYm9vbCBTY3JvbGxBbmltYXRv
cjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGUpCiAgICAgICAg
ICAgICAgICAgaWYgKG5lZ2F0aXZlKQogICAgICAgICAgICAgICAgICAgICBkZWx0YVkgPSAtZGVs
dGFZOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgc2Nyb2xsKFZlcnRpY2FsU2Nyb2xsYmFy
LCBTY3JvbGxCeVBpeGVsLCB2ZXJ0aWNhbFNjcm9sbGJhci0+cGl4ZWxTdGVwKCksIC1kZWx0YVks
IGJlaGF2aW9yKTsKKyAgICAgICAgICAgIHNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVy
dGljYWwsIFNjcm9sbEJ5UGl4ZWwsIHZlcnRpY2FsU2Nyb2xsYmFyLT5waXhlbFN0ZXAoKSwgLWRl
bHRhWSwgYmVoYXZpb3IpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGRlbHRhWCkgewpAQCAt
MjI4LDcgKzIyOCw3IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3I6OmhhbmRsZVdoZWVsRXZlbnQoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBlKQogICAgICAgICAgICAgICAgIGlmIChuZWdhdGl2ZSkK
ICAgICAgICAgICAgICAgICAgICAgZGVsdGFYID0gLWRlbHRhWDsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHNjcm9sbChIb3Jpem9udGFsU2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCBob3Jp
em9udGFsU2Nyb2xsYmFyLT5waXhlbFN0ZXAoKSwgLWRlbHRhWCwgYmVoYXZpb3IpOworICAgICAg
ICAgICAgc2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsLCBTY3JvbGxCeVBp
eGVsLCBob3Jpem9udGFsU2Nyb2xsYmFyLT5waXhlbFN0ZXAoKSwgLWRlbHRhWCwgYmVoYXZpb3Ip
OwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBoYW5kbGVkOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbFR5cGVzLmgKaW5kZXggZWJhYTE3ZTkwMDJkOGRiMzk4ZDc4YjZjYmQzN2I2NjIx
NGNmYWU1Zi4uZGM4ODhjMDhjZDcxYjFhZjYzZDljMzQxOTdlYjI4ZDA1ZTc2Nzg0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVHlwZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oCkBAIC0xNDMsOSArMTQzLDkgQEAgZW51bSBT
Y3JvbGxFbGFzdGljaXR5IDogdWludDhfdCB7CiAgICAgU2Nyb2xsRWxhc3RpY2l0eUFsbG93ZWQK
IH07CiAKLWVudW0gU2Nyb2xsYmFyT3JpZW50YXRpb24gOiB1aW50OF90IHsKLSAgICBIb3Jpem9u
dGFsU2Nyb2xsYmFyLAotICAgIFZlcnRpY2FsU2Nyb2xsYmFyCitlbnVtIGNsYXNzIFNjcm9sbGJh
ck9yaWVudGF0aW9uIDogdWludDhfdCB7CisgICAgSG9yaXpvbnRhbCwKKyAgICBWZXJ0aWNhbAog
fTsKIAogZW51bSBTY3JvbGxiYXJNb2RlIDogdWludDhfdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFZpZXcuY3BwCmluZGV4IGM5MmNlMmU1YzkxOGVjZTFhNWQ0ODBjMGFkN2VhOGZmNjQ1
OTUwNGIuLmEyMGNhYTAyNDAzMjg2NmE1YTRmZjUxYTMxYjY4OWI2MTZiOTMxN2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC02NywxMiArNjcsMTIgQEAgdm9pZCBT
Y3JvbGxWaWV3OjpyZW1vdmVDaGlsZChXaWRnZXQmIGNoaWxkKQogCiBib29sIFNjcm9sbFZpZXc6
OnNldEhhc0hvcml6b250YWxTY3JvbGxiYXIoYm9vbCBoYXNCYXIsIGJvb2wqIGNvbnRlbnRTaXpl
QWZmZWN0ZWQpCiB7Ci0gICAgcmV0dXJuIHNldEhhc1Njcm9sbGJhckludGVybmFsKG1faG9yaXpv
bnRhbFNjcm9sbGJhciwgSG9yaXpvbnRhbFNjcm9sbGJhciwgaGFzQmFyLCBjb250ZW50U2l6ZUFm
ZmVjdGVkKTsKKyAgICByZXR1cm4gc2V0SGFzU2Nyb2xsYmFySW50ZXJuYWwobV9ob3Jpem9udGFs
U2Nyb2xsYmFyLCBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCwgaGFzQmFyLCBjb250
ZW50U2l6ZUFmZmVjdGVkKTsKIH0KIAogYm9vbCBTY3JvbGxWaWV3OjpzZXRIYXNWZXJ0aWNhbFNj
cm9sbGJhcihib29sIGhhc0JhciwgYm9vbCogY29udGVudFNpemVBZmZlY3RlZCkKIHsKLSAgICBy
ZXR1cm4gc2V0SGFzU2Nyb2xsYmFySW50ZXJuYWwobV92ZXJ0aWNhbFNjcm9sbGJhciwgVmVydGlj
YWxTY3JvbGxiYXIsIGhhc0JhciwgY29udGVudFNpemVBZmZlY3RlZCk7CisgICAgcmV0dXJuIHNl
dEhhc1Njcm9sbGJhckludGVybmFsKG1fdmVydGljYWxTY3JvbGxiYXIsIFNjcm9sbGJhck9yaWVu
dGF0aW9uOjpWZXJ0aWNhbCwgaGFzQmFyLCBjb250ZW50U2l6ZUFmZmVjdGVkKTsKIH0KIAogYm9v
bCBTY3JvbGxWaWV3OjpzZXRIYXNTY3JvbGxiYXJJbnRlcm5hbChSZWZQdHI8U2Nyb2xsYmFyPiYg
c2Nyb2xsYmFyLCBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgYm9vbCBoYXNCYXIs
IGJvb2wqIGNvbnRlbnRTaXplQWZmZWN0ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxhYmxlQXJlYS5jcHAKaW5kZXggMzJkZGFjYTBhYWJlYTFjOTM3ZWVhNmFmZmQxNzU3YjA5NzAx
MjVhMC4uYjU1MmQ0ZDgxMzFlZWVhNzAwOWRkZTMwZjRjYzBkNmRlNzE0MTFhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAtMTAxLDEwICsxMDEsMTAg
QEAgYm9vbCBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsKFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24s
IFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGEKICAgICBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmll
bnRhdGlvbjsKICAgICBTY3JvbGxiYXIqIHNjcm9sbGJhcjsKICAgICBpZiAoZGlyZWN0aW9uID09
IFNjcm9sbFVwIHx8IGRpcmVjdGlvbiA9PSBTY3JvbGxEb3duKSB7Ci0gICAgICAgIG9yaWVudGF0
aW9uID0gVmVydGljYWxTY3JvbGxiYXI7CisgICAgICAgIG9yaWVudGF0aW9uID0gU2Nyb2xsYmFy
T3JpZW50YXRpb246OlZlcnRpY2FsOwogICAgICAgICBzY3JvbGxiYXIgPSB2ZXJ0aWNhbFNjcm9s
bGJhcigpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG9yaWVudGF0aW9uID0gSG9yaXpvbnRhbFNj
cm9sbGJhcjsKKyAgICAgICAgb3JpZW50YXRpb24gPSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9y
aXpvbnRhbDsKICAgICAgICAgc2Nyb2xsYmFyID0gaG9yaXpvbnRhbFNjcm9sbGJhcigpOwogICAg
IH0KIApAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFRvT2Zm
c2V0V2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBvZmZzZXQsIFNjCiB2b2lkIFNj
cm9sbGFibGVBcmVhOjpzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oU2Nyb2xsYmFyT3Jp
ZW50YXRpb24gb3JpZW50YXRpb24sIGZsb2F0IG9mZnNldCkKIHsKICAgICBhdXRvIGN1cnJlbnRQ
b3NpdGlvbiA9IHNjcm9sbEFuaW1hdG9yKCkuY3VycmVudFBvc2l0aW9uKCk7Ci0gICAgaWYgKG9y
aWVudGF0aW9uID09IEhvcml6b250YWxTY3JvbGxiYXIpCisgICAgaWYgKG9yaWVudGF0aW9uID09
IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKQogICAgICAgICBzY3JvbGxBbmltYXRv
cigpLnNjcm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKEZsb2F0UG9pbnQob2Zmc2V0LCBj
dXJyZW50UG9zaXRpb24ueSgpKSk7CiAgICAgZWxzZQogICAgICAgICBzY3JvbGxBbmltYXRvcigp
LnNjcm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKEZsb2F0UG9pbnQoY3VycmVudFBvc2l0
aW9uLngoKSwgb2Zmc2V0KSk7CkBAIC0zMjUsNyArMzI1LDcgQEAgYm9vbCBTY3JvbGxhYmxlQXJl
YTo6c2Nyb2xsYmFyc0NhbkJlQWN0aXZlKCkgY29uc3QKIAogdm9pZCBTY3JvbGxhYmxlQXJlYTo6
ZGlkQWRkU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJPcmllbnRhdGlv
biBvcmllbnRhdGlvbikKIHsKLSAgICBpZiAob3JpZW50YXRpb24gPT0gVmVydGljYWxTY3JvbGxi
YXIpCisgICAgaWYgKG9yaWVudGF0aW9uID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNh
bCkKICAgICAgICAgc2Nyb2xsYmFyc0NvbnRyb2xsZXIoKS5kaWRBZGRWZXJ0aWNhbFNjcm9sbGJh
cihzY3JvbGxiYXIpOwogICAgIGVsc2UKICAgICAgICAgc2Nyb2xsYmFyc0NvbnRyb2xsZXIoKS5k
aWRBZGRIb3Jpem9udGFsU2Nyb2xsYmFyKHNjcm9sbGJhcik7CkBAIC0zMzgsNyArMzM4LDcgQEAg
dm9pZCBTY3JvbGxhYmxlQXJlYTo6ZGlkQWRkU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFy
LCBTY3JvbGxiYXJPcmllbnRhdGlvbgogCiB2b2lkIFNjcm9sbGFibGVBcmVhOjp3aWxsUmVtb3Zl
U2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmll
bnRhdGlvbikKIHsKLSAgICBpZiAob3JpZW50YXRpb24gPT0gVmVydGljYWxTY3JvbGxiYXIpCisg
ICAgaWYgKG9yaWVudGF0aW9uID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbCkKICAg
ICAgICAgc2Nyb2xsYmFyc0NvbnRyb2xsZXIoKS53aWxsUmVtb3ZlVmVydGljYWxTY3JvbGxiYXIo
c2Nyb2xsYmFyKTsKICAgICBlbHNlCiAgICAgICAgIHNjcm9sbGJhcnNDb250cm9sbGVyKCkud2ls
bFJlbW92ZUhvcml6b250YWxTY3JvbGxiYXIoc2Nyb2xsYmFyKTsKQEAgLTU2NSw3ICs1NjUsNyBA
QCB2b2lkIFNjcm9sbGFibGVBcmVhOjpkb1Bvc3RUaHVtYk1vdmVTbmFwcGluZyhTY3JvbGxiYXJP
cmllbnRhdGlvbiBvcmllbnRhdGlvbikKIAogICAgIGF1dG8gY3VycmVudE9mZnNldCA9IHNjcm9s
bE9mZnNldCgpOwogICAgIGF1dG8gbmV3T2Zmc2V0ID0gY3VycmVudE9mZnNldDsKLSAgICBpZiAo
b3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKKyAgICBpZiAob3JpZW50YXRpb24g
PT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWwpCiAgICAgICAgIG5ld09mZnNldC5z
ZXRYKHNjcm9sbEFuaW1hdG9yLT5zY3JvbGxPZmZzZXRBZGp1c3RlZEZvclNuYXBwaW5nKFNjcm9s
bEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgY3VycmVudE9mZnNldCwgU2Nyb2xsU25hcFBvaW50U2Vs
ZWN0aW9uTWV0aG9kOjpDbG9zZXN0KSk7CiAgICAgZWxzZQogICAgICAgICBuZXdPZmZzZXQuc2V0
WShzY3JvbGxBbmltYXRvci0+c2Nyb2xsT2Zmc2V0QWRqdXN0ZWRGb3JTbmFwcGluZyhTY3JvbGxF
dmVudEF4aXM6OlZlcnRpY2FsLCBjdXJyZW50T2Zmc2V0LCBTY3JvbGxTbmFwUG9pbnRTZWxlY3Rp
b25NZXRob2Q6OkNsb3Nlc3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJl
YS5oCmluZGV4IGZlNDJjNGVjNmViYTRmMDQ4Zjk0ZmVmNTkwNDkzNjkwYmU1MzU2NWEuLjRiMzcy
NWY1ODZkYmY2YTU4OWI3N2YxMTc1ODYzOTY1ODlkOGEwNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAtNTQsOCArNTQsOCBAQCBlbnVtIGNsYXNzIFdoZWVs
U2Nyb2xsR2VzdHVyZVN0YXRlIDogdWludDhfdDsKIGlubGluZSBpbnQgb2Zmc2V0Rm9yT3JpZW50
YXRpb24oU2Nyb2xsT2Zmc2V0IG9mZnNldCwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRp
b24pCiB7CiAgICAgc3dpdGNoIChvcmllbnRhdGlvbikgewotICAgIGNhc2UgSG9yaXpvbnRhbFNj
cm9sbGJhcjogcmV0dXJuIG9mZnNldC54KCk7Ci0gICAgY2FzZSBWZXJ0aWNhbFNjcm9sbGJhcjog
cmV0dXJuIG9mZnNldC55KCk7CisgICAgY2FzZSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpv
bnRhbDogcmV0dXJuIG9mZnNldC54KCk7CisgICAgY2FzZSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6
VmVydGljYWw6IHJldHVybiBvZmZzZXQueSgpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCmlu
ZGV4IGM5N2RmMDBlNTcwOTZjODU2NmJjYzQ5ZDVkMDU5ZTNlYTE0MzhlN2QuLjZhNGE1NzQ1YTAw
ZmI3MTBlYWVlMzNiM2RjY2IwMzgwNmMxNGFhMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYmFyLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgU2Nyb2xsYmFyOjpzdG9wVGltZXJJ
Zk5lZWRlZCgpCiAKIFNjcm9sbERpcmVjdGlvbiBTY3JvbGxiYXI6OnByZXNzZWRQYXJ0U2Nyb2xs
RGlyZWN0aW9uKCkKIHsKLSAgICBpZiAobV9vcmllbnRhdGlvbiA9PSBIb3Jpem9udGFsU2Nyb2xs
YmFyKSB7CisgICAgaWYgKG1fb3JpZW50YXRpb24gPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhv
cml6b250YWwpIHsKICAgICAgICAgaWYgKG1fcHJlc3NlZFBhcnQgPT0gQmFja0J1dHRvblN0YXJ0
UGFydCB8fCBtX3ByZXNzZWRQYXJ0ID09IEJhY2tCdXR0b25FbmRQYXJ0IHx8IG1fcHJlc3NlZFBh
cnQgPT0gQmFja1RyYWNrUGFydCkKICAgICAgICAgICAgIHJldHVybiBTY3JvbGxMZWZ0OwogICAg
ICAgICByZXR1cm4gU2Nyb2xsUmlnaHQ7CkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9pZCBTY3JvbGxi
YXI6Om1vdmVUaHVtYihpbnQgcG9zLCBib29sIGRyYWdnaW5nRG9jdW1lbnQpCiAgICAgICAgICAg
ICBkZWx0YSA9IHBvcyAtIG1fZG9jdW1lbnREcmFnUG9zOwogICAgICAgICBtX2RyYWdnaW5nRG9j
dW1lbnQgPSB0cnVlOwogICAgICAgICBGbG9hdFBvaW50IGN1cnJlbnRQb3NpdGlvbiA9IG1fc2Ny
b2xsYWJsZUFyZWEuc2Nyb2xsQW5pbWF0b3IoKS5jdXJyZW50UG9zaXRpb24oKTsKLSAgICAgICAg
aW50IGRlc3RpbmF0aW9uUG9zaXRpb24gPSAobV9vcmllbnRhdGlvbiA9PSBIb3Jpem9udGFsU2Ny
b2xsYmFyID8gY3VycmVudFBvc2l0aW9uLngoKSA6IGN1cnJlbnRQb3NpdGlvbi55KCkpICsgZGVs
dGE7CisgICAgICAgIGludCBkZXN0aW5hdGlvblBvc2l0aW9uID0gKG1fb3JpZW50YXRpb24gPT0g
U2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWwgPyBjdXJyZW50UG9zaXRpb24ueCgpIDog
Y3VycmVudFBvc2l0aW9uLnkoKSkgKyBkZWx0YTsKICAgICAgICAgaWYgKGRlbHRhID4gMCkKICAg
ICAgICAgICAgIGRlc3RpbmF0aW9uUG9zaXRpb24gPSBzdGQ6Om1pbihkZXN0aW5hdGlvblBvc2l0
aW9uICsgZGVsdGEsIG1heGltdW0oKSk7CiAgICAgICAgIGVsc2UgaWYgKGRlbHRhIDwgMCkKQEAg
LTMxMCw3ICszMTAsNyBAQCBib29sIFNjcm9sbGJhcjo6bW91c2VNb3ZlZChjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmIGV2dCkKICAgICAgICAgaWYgKHRoZW1lKCkuc2hvdWxkU25hcEJhY2tUb0Ry
YWdPcmlnaW4oKnRoaXMsIGV2dCkpCiAgICAgICAgICAgICBtX3Njcm9sbGFibGVBcmVhLnNjcm9s
bFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihtX29yaWVudGF0aW9uLCBtX2RyYWdPcmlnaW4pOwog
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1vdmVUaHVtYihtX29yaWVudGF0aW9uID09IEhv
cml6b250YWxTY3JvbGxiYXIgPyAKKyAgICAgICAgICAgIG1vdmVUaHVtYihtX29yaWVudGF0aW9u
ID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsID8KICAgICAgICAgICAgICAgICAg
ICAgICBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coZXZ0LnBvc2l0aW9uKCkpLngoKSA6CiAg
ICAgICAgICAgICAgICAgICAgICAgY29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5wb3Np
dGlvbigpKS55KCksIHRoZW1lKCkuc2hvdWxkRHJhZ0RvY3VtZW50SW5zdGVhZE9mVGh1bWIoKnRo
aXMsIGV2dCkpOwogICAgICAgICB9CkBAIC0zMTgsNyArMzE4LDcgQEAgYm9vbCBTY3JvbGxiYXI6
Om1vdXNlTW92ZWQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCiAgICAgfQogCiAgICAg
aWYgKG1fcHJlc3NlZFBhcnQgIT0gTm9QYXJ0KQotICAgICAgICBtX3ByZXNzZWRQb3MgPSAob3Jp
ZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gY29udmVydEZyb21Db250YWluaW5n
V2luZG93KGV2dC5wb3NpdGlvbigpKS54KCkgOiBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3co
ZXZ0LnBvc2l0aW9uKCkpLnkoKSk7CisgICAgICAgIG1fcHJlc3NlZFBvcyA9IChvcmllbnRhdGlv
bigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsID8gY29udmVydEZyb21Db250
YWluaW5nV2luZG93KGV2dC5wb3NpdGlvbigpKS54KCkgOiBjb252ZXJ0RnJvbUNvbnRhaW5pbmdX
aW5kb3coZXZ0LnBvc2l0aW9uKCkpLnkoKSk7CiAKICAgICBTY3JvbGxiYXJQYXJ0IHBhcnQgPSB0
aGVtZSgpLmhpdFRlc3QoKnRoaXMsIGV2dC5wb3NpdGlvbigpKTsKICAgICBpZiAocGFydCAhPSBt
X2hvdmVyZWRQYXJ0KSB7CkBAIC0zODcsNyArMzg3LDcgQEAgYm9vbCBTY3JvbGxiYXI6Om1vdXNl
RG93bihjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKICAgICBtX3Njcm9sbGFibGVBcmVh
Lm1vdXNlSXNEb3duSW5TY3JvbGxiYXIodGhpcywgdHJ1ZSk7CiAgICAgc2V0UHJlc3NlZFBhcnQo
cHJlc3NlZFBhcnQpOwogCi0gICAgaW50IHByZXNzZWRQb3NpdGlvbiA9IChvcmllbnRhdGlvbigp
ID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coZXZ0
LnBvc2l0aW9uKCkpLngoKSA6IGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhldnQucG9zaXRp
b24oKSkueSgpKTsKKyAgICBpbnQgcHJlc3NlZFBvc2l0aW9uID0gKG9yaWVudGF0aW9uKCkgPT0g
U2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWwgPyBjb252ZXJ0RnJvbUNvbnRhaW5pbmdX
aW5kb3coZXZ0LnBvc2l0aW9uKCkpLngoKSA6IGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhl
dnQucG9zaXRpb24oKSkueSgpKTsKICAgICBpZiAoYWN0aW9uID09IFNjcm9sbGJhckJ1dHRvblBy
ZXNzQWN0aW9uOjpDZW50ZXJPblRodW1iKSB7CiAgICAgICAgIHNldEhvdmVyZWRQYXJ0KFRodW1i
UGFydCk7CiAgICAgICAgIHNldFByZXNzZWRQYXJ0KFRodW1iUGFydCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAKaW5kZXggMDBl
NTI2NDU1ZDEzMDkzNzc0ZjRhN2JmMjc2OWQ4ZjJlOWJiMzgzZC4uYmMxZmJhMTE5NmY1MzdmM2Yx
NGM0NzUxNzZlNTJmYzA3YWQ2N2Y4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcApAQCAtMTkzLDkgKzE5Myw5IEBAIHZvaWQg
U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnNwbGl0VHJhY2soU2Nyb2xsYmFyJiBzY3JvbGxiYXIs
IGNvbnN0IEludFJlY3QmIHVuCiAgICAgLy8gVGhpcyBmdW5jdGlvbiB3b24ndCBldmVuIGdldCBj
YWxsZWQgdW5sZXNzIHdlJ3JlIGJpZyBlbm91Z2ggdG8gaGF2ZSBzb21lIGNvbWJpbmF0aW9uIG9m
IHRoZXNlIHRocmVlIHJlY3RzIHdoZXJlIGF0IGxlYXN0CiAgICAgLy8gb25lIG9mIHRoZW0gaXMg
bm9uLWVtcHR5LgogICAgIEludFJlY3QgdHJhY2tSZWN0ID0gY29uc3RyYWluVHJhY2tSZWN0VG9U
cmFja1BpZWNlcyhzY3JvbGxiYXIsIHVuY29uc3RyYWluZWRUcmFja1JlY3QpOwotICAgIGludCB0
aGlja25lc3MgPSBzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFy
ID8gc2Nyb2xsYmFyLmhlaWdodCgpIDogc2Nyb2xsYmFyLndpZHRoKCk7CisgICAgaW50IHRoaWNr
bmVzcyA9IHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpI
b3Jpem9udGFsID8gc2Nyb2xsYmFyLmhlaWdodCgpIDogc2Nyb2xsYmFyLndpZHRoKCk7CiAgICAg
aW50IHRodW1iUG9zID0gdGh1bWJQb3NpdGlvbihzY3JvbGxiYXIpOwotICAgIGlmIChzY3JvbGxi
YXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CisgICAgaWYgKHNjcm9s
bGJhci5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKSB7
CiAgICAgICAgIHRodW1iUmVjdCA9IEludFJlY3QodHJhY2tSZWN0LngoKSArIHRodW1iUG9zLCB0
cmFja1JlY3QueSgpICsgKHRyYWNrUmVjdC5oZWlnaHQoKSAtIHRoaWNrbmVzcykgLyAyLCB0aHVt
Ykxlbmd0aChzY3JvbGxiYXIpLCB0aGlja25lc3MpOwogICAgICAgICBiZWZvcmVUaHVtYlJlY3Qg
PSBJbnRSZWN0KHRyYWNrUmVjdC54KCksIHRyYWNrUmVjdC55KCksIHRodW1iUG9zICsgdGh1bWJS
ZWN0LndpZHRoKCkgLyAyLCB0cmFja1JlY3QuaGVpZ2h0KCkpOyAKICAgICAgICAgYWZ0ZXJUaHVt
YlJlY3QgPSBJbnRSZWN0KHRyYWNrUmVjdC54KCkgKyBiZWZvcmVUaHVtYlJlY3Qud2lkdGgoKSwg
dHJhY2tSZWN0LnkoKSwgdHJhY2tSZWN0Lm1heFgoKSAtIGJlZm9yZVRodW1iUmVjdC5tYXhYKCks
IHRyYWNrUmVjdC5oZWlnaHQoKSk7CkBAIC0yNTEsMTMgKzI1MSwxMyBAQCBpbnQgU2Nyb2xsYmFy
VGhlbWVDb21wb3NpdGU6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXImIHNjcm9sbGJhcikK
IGludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dHJhY2tQb3NpdGlvbihTY3JvbGxiYXImIHNj
cm9sbGJhcikKIHsKICAgICBJbnRSZWN0IGNvbnN0cmFpbmVkVHJhY2tSZWN0ID0gY29uc3RyYWlu
VHJhY2tSZWN0VG9UcmFja1BpZWNlcyhzY3JvbGxiYXIsIHRyYWNrUmVjdChzY3JvbGxiYXIpKTsK
LSAgICByZXR1cm4gKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxi
YXIpID8gY29uc3RyYWluZWRUcmFja1JlY3QueCgpIC0gc2Nyb2xsYmFyLngoKSA6IGNvbnN0cmFp
bmVkVHJhY2tSZWN0LnkoKSAtIHNjcm9sbGJhci55KCk7CisgICAgcmV0dXJuIChzY3JvbGxiYXIu
b3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCkgPyBjb25z
dHJhaW5lZFRyYWNrUmVjdC54KCkgLSBzY3JvbGxiYXIueCgpIDogY29uc3RyYWluZWRUcmFja1Jl
Y3QueSgpIC0gc2Nyb2xsYmFyLnkoKTsKIH0KIAogaW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRl
Ojp0cmFja0xlbmd0aChTY3JvbGxiYXImIHNjcm9sbGJhcikKIHsKICAgICBJbnRSZWN0IGNvbnN0
cmFpbmVkVHJhY2tSZWN0ID0gY29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhzY3JvbGxi
YXIsIHRyYWNrUmVjdChzY3JvbGxiYXIpKTsKLSAgICByZXR1cm4gKHNjcm9sbGJhci5vcmllbnRh
dGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpID8gY29uc3RyYWluZWRUcmFja1JlY3Qud2lk
dGgoKSA6IGNvbnN0cmFpbmVkVHJhY2tSZWN0LmhlaWdodCgpOworICAgIHJldHVybiAoc2Nyb2xs
YmFyLm9yaWVudGF0aW9uKCkgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWwpID8g
Y29uc3RyYWluZWRUcmFja1JlY3Qud2lkdGgoKSA6IGNvbnN0cmFpbmVkVHJhY2tSZWN0LmhlaWdo
dCgpOwogfQogCiBJbnRSZWN0IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0aHVtYlJlY3QoU2Ny
b2xsYmFyJiBzY3JvbGxiYXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Ny
b2xsYmFyVGhlbWVNYWMubW0KaW5kZXggMzRmMjI2Zjk4YjllYjE4MWM1YTY0OGRhOGY2NTdkNTBh
MzAwY2Y2NS4uMmU1MDc3OTY4NWI3MWZlYjIyYmJiNzNjN2U1ZjUwMjVkNDk1NTFiMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQpAQCAt
MTY5LDcgKzE2OSw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnJlZ2lzdGVyU2Nyb2xsYmFy
KFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogICAgIGlmIChzY3JvbGxiYXIuaXNDdXN0b21TY3JvbGxi
YXIoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBpc0hvcml6b250YWwgPSBzY3JvbGxi
YXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyOworICAgIGJvb2wgaXNIb3Jp
em9udGFsID0gc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246
Okhvcml6b250YWw7CiAgICAgYXV0byBzY3JvbGxlckltcCA9IHJldGFpblB0cihbTlNTY3JvbGxl
ckltcCBzY3JvbGxlckltcFdpdGhTdHlsZTpTY3JvbGxlclN0eWxlOjpyZWNvbW1lbmRlZFNjcm9s
bGVyU3R5bGUoKSBjb250cm9sU2l6ZTpzY3JvbGxiYXJDb250cm9sU2l6ZVRvTlNDb250cm9sU2l6
ZShzY3JvbGxiYXIuY29udHJvbFNpemUoKSkgaG9yaXpvbnRhbDppc0hvcml6b250YWwgcmVwbGFj
aW5nU2Nyb2xsZXJJbXA6bmlsXSk7CiAgICAgc2Nyb2xsYmFyTWFwKCkuYWRkKCZzY3JvbGxiYXIs
IFdURk1vdmUoc2Nyb2xsZXJJbXApKTsKICAgICBkaWRDcmVhdGVTY3JvbGxlckltcChzY3JvbGxi
YXIpOwpAQCAtMjk1LDcgKzI5NSw3IEBAIGlubGluZSBjb25zdGV4cHIgdW5zaWduZWQgc2Nyb2xs
YmFyU2l6ZVRvSW5kZXgoU2Nyb2xsYmFyQ29udHJvbFNpemUgc2Nyb2xsYmFyU2l6CiAKIGJvb2wg
U2Nyb2xsYmFyVGhlbWVNYWM6Omhhc0J1dHRvbnMoU2Nyb2xsYmFyJiBzY3JvbGxiYXIpCiB7Ci0g
ICAgaWYgKHNjcm9sbGJhci5lbmFibGVkKCkgJiYgYnV0dG9uc1BsYWNlbWVudCgpICE9IFNjcm9s
bGJhckJ1dHRvbnNOb25lICYmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFs
U2Nyb2xsYmFyKSkKKyAgICBpZiAoc2Nyb2xsYmFyLmVuYWJsZWQoKSAmJiBidXR0b25zUGxhY2Vt
ZW50KCkgIT0gU2Nyb2xsYmFyQnV0dG9uc05vbmUgJiYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigp
ID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKSkKICAgICAgICAgcmV0dXJuIHNj
cm9sbGJhci53aWR0aCgpOwogICAgIHJldHVybiBzY3JvbGxiYXIuaGVpZ2h0KCkgPj0gMiAqIChj
UmVhbEJ1dHRvbkxlbmd0aFtzY3JvbGxiYXJTaXplVG9JbmRleChzY3JvbGxiYXIuY29udHJvbFNp
emUoKSldIC0gY0J1dHRvbkhpdEluc2V0W3Njcm9sbGJhclNpemVUb0luZGV4KHNjcm9sbGJhci5j
b250cm9sU2l6ZSgpKV0pOwogfQpAQCAtMzA4LDcgKzMwOCw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhl
bWVNYWM6Omhhc1RodW1iKFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogICAgIG1pbkxlbmd0aEZvclRo
dW1iID0gW3BhaW50ZXIga25vYk1pbkxlbmd0aF0gKyBbcGFpbnRlciB0cmFja092ZXJsYXBFbmRJ
bnNldF0gKyBbcGFpbnRlciBrbm9iT3ZlcmxhcEVuZEluc2V0XQogICAgICAgICArIDIgKiAoW3Bh
aW50ZXIgdHJhY2tFbmRJbnNldF0gKyBbcGFpbnRlciBrbm9iRW5kSW5zZXRdKTsKIAotICAgIHJl
dHVybiBzY3JvbGxiYXIuZW5hYmxlZCgpICYmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBI
b3Jpem9udGFsU2Nyb2xsYmFyID8KKyAgICByZXR1cm4gc2Nyb2xsYmFyLmVuYWJsZWQoKSAmJiAo
c2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250
YWwgPwogICAgICAgICAgICAgIHNjcm9sbGJhci53aWR0aCgpIDoKICAgICAgICAgICAgICBzY3Jv
bGxiYXIuaGVpZ2h0KCkpID49IG1pbkxlbmd0aEZvclRodW1iOwogfQpAQCAtMzE4LDcgKzMxOCw3
IEBAIHN0YXRpYyBJbnRSZWN0IGJ1dHRvblJlcGFpbnRSZWN0KGNvbnN0IEludFJlY3QmIGJ1dHRv
blJlY3QsIFNjcm9sbGJhck9yaWVudGF0aW9uCiAgICAgQVNTRVJUKGdCdXR0b25QbGFjZW1lbnQg
IT0gU2Nyb2xsYmFyQnV0dG9uc05vbmUpOwogCiAgICAgSW50UmVjdCBwYWludFJlY3QoYnV0dG9u
UmVjdCk7Ci0gICAgaWYgKG9yaWVudGF0aW9uID09IEhvcml6b250YWxTY3JvbGxiYXIpIHsKKyAg
ICBpZiAob3JpZW50YXRpb24gPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWwpIHsK
ICAgICAgICAgcGFpbnRSZWN0LnNldFdpZHRoKGNSZWFsQnV0dG9uTGVuZ3RoW3Njcm9sbGJhclNp
emVUb0luZGV4KGNvbnRyb2xTaXplKV0pOwogICAgICAgICBpZiAoIXN0YXJ0KQogICAgICAgICAg
ICAgcGFpbnRSZWN0LnNldFgoYnV0dG9uUmVjdC54KCkgLSAoY1JlYWxCdXR0b25MZW5ndGhbc2Ny
b2xsYmFyU2l6ZVRvSW5kZXgoY29udHJvbFNpemUpXSAtIGJ1dHRvblJlY3Qud2lkdGgoKSkpOwpA
QCAtMzQ0LDcgKzM0NCw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OmJhY2tCdXR0b25S
ZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhCiAgICAgaW50IHRoaWNr
bmVzcyA9IHNjcm9sbGJhclRoaWNrbmVzcyhzY3JvbGxiYXIuY29udHJvbFNpemUoKSk7CiAgICAg
Ym9vbCBvdXRlckJ1dHRvbiA9IHBhcnQgPT0gQmFja0J1dHRvblN0YXJ0UGFydCAmJiAoYnV0dG9u
c1BsYWNlbWVudCgpID09IFNjcm9sbGJhckJ1dHRvbnNEb3VibGVTdGFydCB8fCBidXR0b25zUGxh
Y2VtZW50KCkgPT0gU2Nyb2xsYmFyQnV0dG9uc0RvdWJsZUJvdGgpOwogICAgIGlmIChvdXRlckJ1
dHRvbikgewotICAgICAgICBpZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRh
bFNjcm9sbGJhcikKKyAgICAgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFNjcm9s
bGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKQogICAgICAgICAgICAgcmVzdWx0ID0gSW50UmVj
dChzY3JvbGxiYXIueCgpLCBzY3JvbGxiYXIueSgpLCBjT3V0ZXJCdXR0b25MZW5ndGhbc2Nyb2xs
YmFyU2l6ZVRvSW5kZXgoc2Nyb2xsYmFyLmNvbnRyb2xTaXplKCkpXSArIChwYWludGluZyA/IGNP
dXRlckJ1dHRvbk92ZXJsYXAgOiAwKSwgdGhpY2tuZXNzKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgcmVzdWx0ID0gSW50UmVjdChzY3JvbGxiYXIueCgpLCBzY3JvbGxiYXIueSgpLCB0aGlj
a25lc3MsIGNPdXRlckJ1dHRvbkxlbmd0aFtzY3JvbGxiYXJTaXplVG9JbmRleChzY3JvbGxiYXIu
Y29udHJvbFNpemUoKSldICsgKHBhaW50aW5nID8gY091dGVyQnV0dG9uT3ZlcmxhcCA6IDApKTsK
QEAgLTM1Miw3ICszNTIsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lTWFjOjpiYWNrQnV0dG9u
UmVjdChTY3JvbGxiYXImIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYQogICAgIH0KICAgICAK
ICAgICAvLyBPdXIgcmVwYWludCByZWN0IGlzIHNsaWdodGx5IGxhcmdlciwgc2luY2Ugd2UgYXJl
IGEgYnV0dG9uIHRoYXQgaXMgYWRqYWNlbnQgdG8gdGhlIHRyYWNrLgotICAgIGlmIChzY3JvbGxi
YXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CisgICAgaWYgKHNjcm9s
bGJhci5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKSB7
CiAgICAgICAgIGludCBzdGFydCA9IHBhcnQgPT0gQmFja0J1dHRvblN0YXJ0UGFydCA/IHNjcm9s
bGJhci54KCkgOiBzY3JvbGxiYXIueCgpICsgc2Nyb2xsYmFyLndpZHRoKCkgLSBjT3V0ZXJCdXR0
b25MZW5ndGhbc2Nyb2xsYmFyU2l6ZVRvSW5kZXgoc2Nyb2xsYmFyLmNvbnRyb2xTaXplKCkpXSAt
IGNCdXR0b25MZW5ndGhbc2Nyb2xsYmFyU2l6ZVRvSW5kZXgoc2Nyb2xsYmFyLmNvbnRyb2xTaXpl
KCkpXTsKICAgICAgICAgcmVzdWx0ID0gSW50UmVjdChzdGFydCwgc2Nyb2xsYmFyLnkoKSwgY0J1
dHRvbkxlbmd0aFtzY3JvbGxiYXJTaXplVG9JbmRleChzY3JvbGxiYXIuY29udHJvbFNpemUoKSld
LCB0aGlja25lc3MpOwogICAgIH0gZWxzZSB7CkBAIC0zODEsNyArMzgxLDcgQEAgSW50UmVjdCBT
Y3JvbGxiYXJUaGVtZU1hYzo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyJiBzY3JvbGxiYXIs
IFNjcm9sbGJhclBhcnQKICAgICAKICAgICBib29sIG91dGVyQnV0dG9uID0gcGFydCA9PSBGb3J3
YXJkQnV0dG9uRW5kUGFydCAmJiAoYnV0dG9uc1BsYWNlbWVudCgpID09IFNjcm9sbGJhckJ1dHRv
bnNEb3VibGVFbmQgfHwgYnV0dG9uc1BsYWNlbWVudCgpID09IFNjcm9sbGJhckJ1dHRvbnNEb3Vi
bGVCb3RoKTsKICAgICBpZiAob3V0ZXJCdXR0b24pIHsKLSAgICAgICAgaWYgKHNjcm9sbGJhci5v
cmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpIHsKKyAgICAgICAgaWYgKHNjcm9s
bGJhci5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKSB7
CiAgICAgICAgICAgICByZXN1bHQgPSBJbnRSZWN0KHNjcm9sbGJhci54KCkgKyBzY3JvbGxiYXIu
d2lkdGgoKSAtIG91dGVyQnV0dG9uTGVuZ3RoLCBzY3JvbGxiYXIueSgpLCBvdXRlckJ1dHRvbkxl
bmd0aCwgdGhpY2tuZXNzKTsKICAgICAgICAgICAgIGlmIChwYWludGluZykKICAgICAgICAgICAg
ICAgICByZXN1bHQuaW5mbGF0ZVgoY091dGVyQnV0dG9uT3ZlcmxhcCk7CkBAIC0zOTMsNyArMzkz
LDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1hYzo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xs
YmFyJiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAgICAgCi0gICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxT
Y3JvbGxiYXIpIHsKKyAgICBpZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gU2Nyb2xsYmFy
T3JpZW50YXRpb246Okhvcml6b250YWwpIHsKICAgICAgICAgaW50IHN0YXJ0ID0gcGFydCA9PSBG
b3J3YXJkQnV0dG9uRW5kUGFydCA/IHNjcm9sbGJhci54KCkgKyBzY3JvbGxiYXIud2lkdGgoKSAt
IGJ1dHRvbkxlbmd0aCA6IHNjcm9sbGJhci54KCkgKyBvdXRlckJ1dHRvbkxlbmd0aDsKICAgICAg
ICAgcmVzdWx0ID0gSW50UmVjdChzdGFydCwgc2Nyb2xsYmFyLnkoKSwgYnV0dG9uTGVuZ3RoLCB0
aGlja25lc3MpOwogICAgIH0gZWxzZSB7CkBAIC00MzcsNyArNDM3LDcgQEAgSW50UmVjdCBTY3Jv
bGxiYXJUaGVtZU1hYzo6dHJhY2tSZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBib29sIHBhaW50
aW5nKQogICAgIH0KICAgICAKICAgICBpbnQgdG90YWxXaWR0aCA9IHN0YXJ0V2lkdGggKyBlbmRX
aWR0aDsKLSAgICBpZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9s
bGJhcikKKyAgICBpZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gU2Nyb2xsYmFyT3JpZW50
YXRpb246Okhvcml6b250YWwpCiAgICAgICAgIHJldHVybiBJbnRSZWN0KHNjcm9sbGJhci54KCkg
KyBzdGFydFdpZHRoLCBzY3JvbGxiYXIueSgpLCBzY3JvbGxiYXIud2lkdGgoKSAtIHRvdGFsV2lk
dGgsIHRoaWNrbmVzcyk7CiAgICAgcmV0dXJuIEludFJlY3Qoc2Nyb2xsYmFyLngoKSwgc2Nyb2xs
YmFyLnkoKSArIHN0YXJ0V2lkdGgsIHRoaWNrbmVzcywgc2Nyb2xsYmFyLmhlaWdodCgpIC0gdG90
YWxXaWR0aCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Ny
b2xsYmFyc0NvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Ny
b2xsYmFyc0NvbnRyb2xsZXJNYWMubW0KaW5kZXggNDQ1MGFjMWQ5YzY5ZWMxYzgyODFmZmMwZjY4
M2FiZjcyMjIwMWM3NC4uZmE5MDFkOWY5MGNlMTZmMjRkZGIyOTI0MmJmNjlhODc3OGMxNDRmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhcnNDb250cm9s
bGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJzQ29u
dHJvbGxlck1hYy5tbQpAQCAtMzcwLDcgKzM3MCw3IEBAIHVzaW5nIFdlYkNvcmU6OkxvZ092ZXJs
YXlTY3JvbGxiYXJzOwogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgV2ViQ29yZTo6R3JhcGhp
Y3NMYXllciogbGF5ZXI7Ci0gICAgaWYgKF9zY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gV2Vi
Q29yZTo6VmVydGljYWxTY3JvbGxiYXIpCisgICAgaWYgKF9zY3JvbGxiYXItPm9yaWVudGF0aW9u
KCkgPT0gV2ViQ29yZTo6U2Nyb2xsYmFyT3JpZW50YXRpb246OlZlcnRpY2FsKQogICAgICAgICBs
YXllciA9IF9zY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCkubGF5ZXJGb3JWZXJ0aWNhbFNjcm9s
bGJhcigpOwogICAgIGVsc2UKICAgICAgICAgbGF5ZXIgPSBfc2Nyb2xsYmFyLT5zY3JvbGxhYmxl
QXJlYSgpLmxheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpOwpAQCAtNDU1LDcgKzQ1NSw3IEBA
IHVzaW5nIFdlYkNvcmU6OkxvZ092ZXJsYXlTY3JvbGxiYXJzOwogICAgIGlmIChhdXRvKiBtYWNU
aGVtZSA9IFdlYkNvcmU6Om1hY1Njcm9sbGJhclRoZW1lKCkpCiAgICAgICAgIG1hY1RoZW1lLT5z
ZXRQYWludENoYXJhY3RlcmlzdGljc0ZvclNjcm9sbGJhcigqX3Njcm9sbGJhcik7CiAKLSAgICBp
ZiAocGFydCA9PSBXZWJDb3JlOjpUaHVtYlBhcnQgJiYgX3Njcm9sbGJhci0+b3JpZW50YXRpb24o
KSA9PSBXZWJDb3JlOjpWZXJ0aWNhbFNjcm9sbGJhcikgeworICAgIGlmIChwYXJ0ID09IFdlYkNv
cmU6OlRodW1iUGFydCAmJiBfc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IFdlYkNvcmU6OlNj
cm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbCkgewogICAgICAgICBpZiAobmV3QWxwaGEgPT0g
MSkgewogICAgICAgICAgICAgYXV0byB0aHVtYlJlY3QgPSBXZWJDb3JlOjpJbnRSZWN0KFtzY3Jv
bGxlclBhaW50ZXIgcmVjdEZvclBhcnQ6TlNTY3JvbGxlcktub2JdKTsKICAgICAgICAgICAgIFtz
ZWxmIHNjcm9sbGJhcnNDb250cm9sbGVyXS0+c2V0VmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0KHRo
dW1iUmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IGIwNTcz
ODQzYWNhNjU1NWU1NTk0YmMyNWI3MTczNzc3NmM4MjMxZTQuLjg3NmNlNWI0YzgwMWU4MDliZWM0
YTFiMzg3Y2VlZGFjY2YwYWRlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCkBAIC0xMDcwLDkgKzEwNzAsOSBAQCBib29sIFJlbmRlckJveDo6aGFzQXV0b1Njcm9sbGJh
cihTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgY29uc3QKICAgICB9OwogCiAgICAg
c3dpdGNoIChvcmllbnRhdGlvbikgewotICAgIGNhc2UgU2Nyb2xsYmFyT3JpZW50YXRpb246Okhv
cml6b250YWxTY3JvbGxiYXI6CisgICAgY2FzZSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpv
bnRhbDoKICAgICAgICAgcmV0dXJuIGlzQXV0b09yU2Nyb2xsV2l0aE92ZXJsYXlTY3JvbGxiYXIo
c3R5bGUoKS5vdmVyZmxvd1goKSk7Ci0gICAgY2FzZSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVy
dGljYWxTY3JvbGxiYXI6CisgICAgY2FzZSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWw6
CiAgICAgICAgIHJldHVybiBpc0F1dG9PclNjcm9sbFdpdGhPdmVybGF5U2Nyb2xsYmFyKHN0eWxl
KCkub3ZlcmZsb3dZKCkpOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDg4LDkgKzEw
ODgsOSBAQCBib29sIFJlbmRlckJveDo6aGFzQWx3YXlzUHJlc2VudFNjcm9sbGJhcihTY3JvbGxi
YXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgY29ucwogICAgIH07CiAKICAgICBzd2l0Y2ggKG9y
aWVudGF0aW9uKSB7Ci0gICAgY2FzZSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbFNj
cm9sbGJhcjoKKyAgICBjYXNlIFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsOgogICAg
ICAgICByZXR1cm4gaXNBbHdheXNWaXNpYmxlU2Nyb2xsYmFyKHN0eWxlKCkub3ZlcmZsb3dYKCkp
OwotICAgIGNhc2UgU2Nyb2xsYmFyT3JpZW50YXRpb246OlZlcnRpY2FsU2Nyb2xsYmFyOgorICAg
IGNhc2UgU2Nyb2xsYmFyT3JpZW50YXRpb246OlZlcnRpY2FsOgogICAgICAgICByZXR1cm4gaXNB
bHdheXNWaXNpYmxlU2Nyb2xsYmFyKHN0eWxlKCkub3ZlcmZsb3dZKCkpOwogICAgIH0KICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCmluZGV4IGJkOWYyMmE1MTQ1Y2U5YTU0YzAyNjZmYjU4M2NhZmEwNWFlMWUxOTku
LjU1ODMyMTBiNTUxNDA2ODZhMmVjNGE3MTEyZWEzZTU2YzEwYmIyMGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0yMTM4LDkgKzIx
MzgsOSBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlT3ZlcmZsb3dDb250cm9sc0xh
eWVycyhib29sIG5lZWRzSG9yaXpvbnRhbFNjcm9sbAogICAgIGlmIChhdXRvKiBzY3JvbGxpbmdD
b29yZGluYXRvciA9IG1fb3duaW5nTGF5ZXIucGFnZSgpLnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkp
IHsKICAgICAgICAgaWYgKGF1dG8qIHNjcm9sbGFibGVBcmVhID0gbV9vd25pbmdMYXllci5zY3Jv
bGxhYmxlQXJlYSgpKSB7CiAgICAgICAgICAgICBpZiAoaG9yaXpvbnRhbFNjcm9sbGJhckxheWVy
Q2hhbmdlZCkKLSAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsYWJs
ZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZSgqc2Nyb2xsYWJsZUFyZWEsIEhvcml6b250YWxT
Y3JvbGxiYXIpOworICAgICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxh
YmxlQXJlYVNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKCpzY3JvbGxhYmxlQXJlYSwgU2Nyb2xsYmFy
T3JpZW50YXRpb246Okhvcml6b250YWwpOwogICAgICAgICAgICAgaWYgKHZlcnRpY2FsU2Nyb2xs
YmFyTGF5ZXJDaGFuZ2VkKQotICAgICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5z
Y3JvbGxhYmxlQXJlYVNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKCpzY3JvbGxhYmxlQXJlYSwgVmVy
dGljYWxTY3JvbGxiYXIpOworICAgICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5z
Y3JvbGxhYmxlQXJlYVNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKCpzY3JvbGxhYmxlQXJlYSwgU2Ny
b2xsYmFyT3JpZW50YXRpb246OlZlcnRpY2FsKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRl
eCAwMThjYjYwZDFiZDU4ZTcwYzlhZTQ1OTk0NmIxZTYwN2UxMzU4ZGJhLi4yZTcwYmJlN2Y5NmI5
MzE5NDQ4MWNlYTk0Y2U1NDQxZjMwM2JkMGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtNDAyNywxMyArNDAyNywxMyBA
QCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlT3ZlcmZsb3dDb250cm9sc0xheWVy
cygpCiAgICAgICAgICAgICBtX292ZXJmbG93Q29udHJvbHNIb3N0TGF5ZXItPmFkZENoaWxkKCpt
X2xheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcik7CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBz
Y3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAg
ICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFy
TGF5ZXJEaWRDaGFuZ2UobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLCBIb3Jpem9udGFsU2Nyb2xs
YmFyKTsKKyAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFy
ZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZShtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCksIFNjcm9s
bGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAo
bV9sYXllckZvckhvcml6b250YWxTY3JvbGxiYXIpIHsKICAgICAgICAgR3JhcGhpY3NMYXllcjo6
dW5wYXJlbnRBbmRDbGVhcihtX2xheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcik7CiAKICAgICAg
ICAgaWYgKGF1dG8qIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRp
bmF0b3IoKSkKLSAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJl
YVNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSwgSG9yaXpv
bnRhbFNjcm9sbGJhcik7CisgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xs
YWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZShtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCks
IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKTsKICAgICB9CiAKICAgICBpZiAocmVx
dWlyZXNWZXJ0aWNhbFNjcm9sbGJhckxheWVyKCkpIHsKQEAgLTQwNDgsMTMgKzQwNDgsMTMgQEAg
dm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZU92ZXJmbG93Q29udHJvbHNMYXllcnMo
KQogICAgICAgICAgICAgbV9vdmVyZmxvd0NvbnRyb2xzSG9zdExheWVyLT5hZGRDaGlsZCgqbV9s
YXllckZvclZlcnRpY2FsU2Nyb2xsYmFyKTsKIAogICAgICAgICAgICAgaWYgKGF1dG8qIHNjcm9s
bGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAgICAgICAg
ICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXll
ckRpZENoYW5nZShtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCksIFZlcnRpY2FsU2Nyb2xsYmFyKTsK
KyAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3Jv
bGxiYXJMYXllckRpZENoYW5nZShtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCksIFNjcm9sbGJhck9y
aWVudGF0aW9uOjpWZXJ0aWNhbCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG1fbGF5ZXJG
b3JWZXJ0aWNhbFNjcm9sbGJhcikgewogICAgICAgICBHcmFwaGljc0xheWVyOjp1bnBhcmVudEFu
ZENsZWFyKG1fbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcik7CiAKICAgICAgICAgaWYgKGF1dG8q
IHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAg
ICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbGJhckxh
eWVyRGlkQ2hhbmdlKG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSwgVmVydGljYWxTY3JvbGxiYXIp
OworICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xs
YmFyTGF5ZXJEaWRDaGFuZ2UobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLCBTY3JvbGxiYXJPcmll
bnRhdGlvbjo6VmVydGljYWwpOwogICAgIH0KIAogICAgIGlmIChyZXF1aXJlc1Njcm9sbENvcm5l
ckxheWVyKCkpIHsKQEAgLTQxNzUsNyArNDE3NSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpkZXN0cm95Um9vdExheWVyKCkKICAgICBpZiAobV9sYXllckZvckhvcml6b250YWxTY3Jv
bGxiYXIpIHsKICAgICAgICAgR3JhcGhpY3NMYXllcjo6dW5wYXJlbnRBbmRDbGVhcihtX2xheWVy
Rm9ySG9yaXpvbnRhbFNjcm9sbGJhcik7CiAgICAgICAgIGlmIChhdXRvKiBzY3JvbGxpbmdDb29y
ZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAgICAgICAgICBzY3Jv
bGxpbmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZSht
X3JlbmRlclZpZXcuZnJhbWVWaWV3KCksIEhvcml6b250YWxTY3JvbGxiYXIpOworICAgICAgICAg
ICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRD
aGFuZ2UobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLCBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9y
aXpvbnRhbCk7CiAgICAgICAgIGlmIChhdXRvKiBob3Jpem9udGFsU2Nyb2xsYmFyID0gbV9yZW5k
ZXJWaWV3LmZyYW1lVmlldygpLnZlcnRpY2FsU2Nyb2xsYmFyKCkpCiAgICAgICAgICAgICBtX3Jl
bmRlclZpZXcuZnJhbWVWaWV3KCkuaW52YWxpZGF0ZVNjcm9sbGJhcigqaG9yaXpvbnRhbFNjcm9s
bGJhciwgSW50UmVjdChJbnRQb2ludCgwLCAwKSwgaG9yaXpvbnRhbFNjcm9sbGJhci0+ZnJhbWVS
ZWN0KCkuc2l6ZSgpKSk7CiAgICAgfQpAQCAtNDE4Myw3ICs0MTgzLDcgQEAgdm9pZCBSZW5kZXJM
YXllckNvbXBvc2l0b3I6OmRlc3Ryb3lSb290TGF5ZXIoKQogICAgIGlmIChtX2xheWVyRm9yVmVy
dGljYWxTY3JvbGxiYXIpIHsKICAgICAgICAgR3JhcGhpY3NMYXllcjo6dW5wYXJlbnRBbmRDbGVh
cihtX2xheWVyRm9yVmVydGljYWxTY3JvbGxiYXIpOwogICAgICAgICBpZiAoYXV0byogc2Nyb2xs
aW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQotICAgICAgICAg
ICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRD
aGFuZ2UobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLCBWZXJ0aWNhbFNjcm9sbGJhcik7CisgICAg
ICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXll
ckRpZENoYW5nZShtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCksIFNjcm9sbGJhck9yaWVudGF0aW9u
OjpWZXJ0aWNhbCk7CiAgICAgICAgIGlmIChhdXRvKiB2ZXJ0aWNhbFNjcm9sbGJhciA9IG1fcmVu
ZGVyVmlldy5mcmFtZVZpZXcoKS52ZXJ0aWNhbFNjcm9sbGJhcigpKQogICAgICAgICAgICAgbV9y
ZW5kZXJWaWV3LmZyYW1lVmlldygpLmludmFsaWRhdGVTY3JvbGxiYXIoKnZlcnRpY2FsU2Nyb2xs
YmFyLCBJbnRSZWN0KEludFBvaW50KDAsIDApLCB2ZXJ0aWNhbFNjcm9sbGJhci0+ZnJhbWVSZWN0
KCkuc2l6ZSgpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCmluZGV4IDdhNGRjMmM2MmY1ZTFkYWQwNzA5
MDI1NjhkMWE2YzI4ODkxNWE1NzkuLjUyZDFlYTVkMzFmMGU2OGFkYjA3YjA0MTBmZTc3ZmM5ZGIy
ZjI3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNj
cm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJTY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTk1LDggKzk1LDggQEAgdm9pZCBSZW5kZXJMYXllclNj
cm9sbGFibGVBcmVhOjpjbGVhcigpCiAgICAgaWYgKEVsZW1lbnQqIGVsZW1lbnQgPSByZW5kZXJl
ci5lbGVtZW50KCkpCiAgICAgICAgIGVsZW1lbnQtPnNldFNhdmVkTGF5ZXJTY3JvbGxQb3NpdGlv
bihtX3Njcm9sbFBvc2l0aW9uKTsKIAotICAgIGRlc3Ryb3lTY3JvbGxiYXIoSG9yaXpvbnRhbFNj
cm9sbGJhcik7Ci0gICAgZGVzdHJveVNjcm9sbGJhcihWZXJ0aWNhbFNjcm9sbGJhcik7CisgICAg
ZGVzdHJveVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCk7CisgICAg
ZGVzdHJveVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwpOwogCiAgICAg
aWYgKGF1dG8qIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gcmVuZGVyZXIucGFnZSgpLnNjcm9sbGlu
Z0Nvb3JkaW5hdG9yKCkpCiAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT53aWxsRGVzdHJv
eVNjcm9sbGFibGVBcmVhKCp0aGlzKTsKQEAgLTgzOSw3ICs4MzksNyBAQCBSZWY8U2Nyb2xsYmFy
PiBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjpjcmVhdGVTY3JvbGxiYXIoU2Nyb2xsYmFyT3Jp
ZW50YXRpb24gbwogCiB2b2lkIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OmRlc3Ryb3lTY3Jv
bGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7Ci0gICAgUmVmUHRyPFNj
cm9sbGJhcj4mIHNjcm9sbGJhciA9IG9yaWVudGF0aW9uID09IEhvcml6b250YWxTY3JvbGxiYXIg
PyBtX2hCYXIgOiBtX3ZCYXI7CisgICAgUmVmUHRyPFNjcm9sbGJhcj4mIHNjcm9sbGJhciA9IG9y
aWVudGF0aW9uID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsID8gbV9oQmFyIDog
bV92QmFyOwogICAgIGlmICghc2Nyb2xsYmFyKQogICAgICAgICByZXR1cm47CiAKQEAgLTg1Niwx
NCArODU2LDE0IEBAIHZvaWQgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6c2V0SGFzSG9yaXpv
bnRhbFNjcm9sbGJhcihib29sIGhhc1Njcm9sbGJhcikKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKGhhc1Njcm9sbGJhcikgewotICAgICAgICBtX2hCYXIgPSBjcmVhdGVTY3JvbGxiYXIoSG9y
aXpvbnRhbFNjcm9sbGJhcik7CisgICAgICAgIG1faEJhciA9IGNyZWF0ZVNjcm9sbGJhcihTY3Jv
bGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCk7CiAjaWYgSEFWRShSVUJCRVJfQkFORElORykK
ICAgICAgICAgYXV0byYgcmVuZGVyZXIgPSBtX2xheWVyLnJlbmRlcmVyKCk7CiAgICAgICAgIFNj
cm9sbEVsYXN0aWNpdHkgZWxhc3RpY2l0eSA9IHNjcm9sbHNPdmVyZmxvdygpICYmIHJlbmRlcmVy
LnNldHRpbmdzKCkucnViYmVyQmFuZGluZ0ZvclN1YlNjcm9sbGFibGVSZWdpb25zRW5hYmxlZCgp
ID8gU2Nyb2xsRWxhc3RpY2l0eUF1dG9tYXRpYyA6IFNjcm9sbEVsYXN0aWNpdHlOb25lOwogICAg
ICAgICBTY3JvbGxhYmxlQXJlYTo6c2V0SG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoZWxhc3Rp
Y2l0eSk7CiAjZW5kaWYKICAgICB9IGVsc2UgewotICAgICAgICBkZXN0cm95U2Nyb2xsYmFyKEhv
cml6b250YWxTY3JvbGxiYXIpOworICAgICAgICBkZXN0cm95U2Nyb2xsYmFyKFNjcm9sbGJhck9y
aWVudGF0aW9uOjpIb3Jpem9udGFsKTsKICNpZiBIQVZFKFJVQkJFUl9CQU5ESU5HKQogICAgICAg
ICBTY3JvbGxhYmxlQXJlYTo6c2V0SG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoU2Nyb2xsRWxh
c3RpY2l0eU5vbmUpOwogI2VuZGlmCkBAIC04ODIsMTQgKzg4MiwxNCBAQCB2b2lkIFJlbmRlckxh
eWVyU2Nyb2xsYWJsZUFyZWE6OnNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKGJvb2wgaGFzU2Nyb2xs
YmFyKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaGFzU2Nyb2xsYmFyKSB7Ci0gICAgICAg
IG1fdkJhciA9IGNyZWF0ZVNjcm9sbGJhcihWZXJ0aWNhbFNjcm9sbGJhcik7CisgICAgICAgIG1f
dkJhciA9IGNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwpOwog
I2lmIEhBVkUoUlVCQkVSX0JBTkRJTkcpCiAgICAgICAgIGF1dG8mIHJlbmRlcmVyID0gbV9sYXll
ci5yZW5kZXJlcigpOwogICAgICAgICBTY3JvbGxFbGFzdGljaXR5IGVsYXN0aWNpdHkgPSBzY3Jv
bGxzT3ZlcmZsb3coKSAmJiByZW5kZXJlci5zZXR0aW5ncygpLnJ1YmJlckJhbmRpbmdGb3JTdWJT
Y3JvbGxhYmxlUmVnaW9uc0VuYWJsZWQoKSA/IFNjcm9sbEVsYXN0aWNpdHlBdXRvbWF0aWMgOiBT
Y3JvbGxFbGFzdGljaXR5Tm9uZTsKICAgICAgICAgU2Nyb2xsYWJsZUFyZWE6OnNldFZlcnRpY2Fs
U2Nyb2xsRWxhc3RpY2l0eShlbGFzdGljaXR5KTsKICNlbmRpZgogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIGRlc3Ryb3lTY3JvbGxiYXIoVmVydGljYWxTY3JvbGxiYXIpOworICAgICAgICBkZXN0cm95
U2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbCk7CiAjaWYgSEFWRShSVUJC
RVJfQkFORElORykKICAgICAgICAgU2Nyb2xsYWJsZUFyZWE6OnNldFZlcnRpY2FsU2Nyb2xsRWxh
c3RpY2l0eShTY3JvbGxFbGFzdGljaXR5Tm9uZSk7CiAjZW5kaWYKQEAgLTEwODAsNyArMTA4MCw3
IEBAIHZvaWQgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dXBkYXRlU2Nyb2xsYmFyUHJlc2Vu
Y2VBbmRTdGF0ZShzdGQ6Om9wdGlvbmFsPGJvCiAgICAgfTsKIAogICAgIGF1dG8gc2Nyb2xsYmFy
Rm9yQXhpcyA9IFsmXShTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgLT4gUmVmUHRy
PFNjcm9sbGJhcj4mIHsKLSAgICAgICAgcmV0dXJuIG9yaWVudGF0aW9uID09IFNjcm9sbGJhck9y
aWVudGF0aW9uOjpIb3Jpem9udGFsU2Nyb2xsYmFyID8gbV9oQmFyIDogbV92QmFyOworICAgICAg
ICByZXR1cm4gb3JpZW50YXRpb24gPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWwg
PyBtX2hCYXIgOiBtX3ZCYXI7CiAgICAgfTsKIAogICAgIGF1dG8gc3RhdGVGb3JTY3JvbGxiYXIg
PSBbJl0oU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gaGFzT3ZlcmZsb3csIFNjcm9sbGJhclN0YXRlIG5vblNjcm9sbGFibGVTdGF0ZSkgewpAQCAt
MTEwMiwxMiArMTEwMiwxMiBAQCB2b2lkIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnVwZGF0
ZVNjcm9sbGJhclByZXNlbmNlQW5kU3RhdGUoc3RkOjpvcHRpb25hbDxibwogICAgICAgICByZXR1
cm4gU2Nyb2xsYmFyU3RhdGU6Ok5vU2Nyb2xsYmFyOwogICAgIH07CiAKLSAgICBhdXRvIGhvcml6
b250YWxCYXJTdGF0ZSA9IHN0YXRlRm9yU2Nyb2xsYmFyT25BeGlzKFNjcm9sbGJhck9yaWVudGF0
aW9uOjpIb3Jpem9udGFsU2Nyb2xsYmFyLCBoYXNIb3Jpem9udGFsT3ZlcmZsb3cpOworICAgIGF1
dG8gaG9yaXpvbnRhbEJhclN0YXRlID0gc3RhdGVGb3JTY3JvbGxiYXJPbkF4aXMoU2Nyb2xsYmFy
T3JpZW50YXRpb246Okhvcml6b250YWwsIGhhc0hvcml6b250YWxPdmVyZmxvdyk7CiAgICAgc2V0
SGFzSG9yaXpvbnRhbFNjcm9sbGJhcihob3Jpem9udGFsQmFyU3RhdGUgIT0gU2Nyb2xsYmFyU3Rh
dGU6Ok5vU2Nyb2xsYmFyKTsKICAgICBpZiAoaG9yaXpvbnRhbEJhclN0YXRlICE9IFNjcm9sbGJh
clN0YXRlOjpOb1Njcm9sbGJhcikKICAgICAgICAgbV9oQmFyLT5zZXRFbmFibGVkKGhvcml6b250
YWxCYXJTdGF0ZSA9PSBTY3JvbGxiYXJTdGF0ZTo6RW5hYmxlZCk7CiAKLSAgICBhdXRvIHZlcnRp
Y2FsQmFyU3RhdGUgPSBzdGF0ZUZvclNjcm9sbGJhck9uQXhpcyhTY3JvbGxiYXJPcmllbnRhdGlv
bjo6VmVydGljYWxTY3JvbGxiYXIsIGhhc1ZlcnRpY2FsT3ZlcmZsb3cpOworICAgIGF1dG8gdmVy
dGljYWxCYXJTdGF0ZSA9IHN0YXRlRm9yU2Nyb2xsYmFyT25BeGlzKFNjcm9sbGJhck9yaWVudGF0
aW9uOjpWZXJ0aWNhbCwgaGFzVmVydGljYWxPdmVyZmxvdyk7CiAgICAgc2V0SGFzVmVydGljYWxT
Y3JvbGxiYXIodmVydGljYWxCYXJTdGF0ZSAhPSBTY3JvbGxiYXJTdGF0ZTo6Tm9TY3JvbGxiYXIp
OwogICAgIGlmICh2ZXJ0aWNhbEJhclN0YXRlICE9IFNjcm9sbGJhclN0YXRlOjpOb1Njcm9sbGJh
cikKICAgICAgICAgbV92QmFyLT5zZXRFbmFibGVkKHZlcnRpY2FsQmFyU3RhdGUgPT0gU2Nyb2xs
YmFyU3RhdGU6OkVuYWJsZWQpOwpAQCAtMTE1MCw4ICsxMTUwLDggQEAgdm9pZCBSZW5kZXJMYXll
clNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxiYXJzQWZ0ZXJMYXlvdXQoKQogICAgIHVwZGF0
ZVNjcm9sbGJhclByZXNlbmNlQW5kU3RhdGUoaGFzSG9yaXpvbnRhbE92ZXJmbG93KCksIGhhc1Zl
cnRpY2FsT3ZlcmZsb3coKSk7CiAKICAgICAvLyBTY3JvbGxiYXJzIHdpdGggYXV0byBiZWhhdmlv
ciBtYXkgbmVlZCB0byBsYXkgb3V0IGFnYWluIGlmIHNjcm9sbGJhcnMgZ290IGFkZGVkIG9yIHJl
bW92ZWQuCi0gICAgYm9vbCBhdXRvSG9yaXpvbnRhbFNjcm9sbEJhckNoYW5nZWQgPSBib3gtPmhh
c0F1dG9TY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWxTY3JvbGxiYXIp
ICYmIChoYWRIb3Jpem9udGFsU2Nyb2xsYmFyICE9IGhhc0hvcml6b250YWxTY3JvbGxiYXIoKSk7
Ci0gICAgYm9vbCBhdXRvVmVydGljYWxTY3JvbGxCYXJDaGFuZ2VkID0gYm94LT5oYXNBdXRvU2Ny
b2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbFNjcm9sbGJhcikgJiYgKGhhZFZl
cnRpY2FsU2Nyb2xsYmFyICE9IGhhc1ZlcnRpY2FsU2Nyb2xsYmFyKCkpOworICAgIGJvb2wgYXV0
b0hvcml6b250YWxTY3JvbGxCYXJDaGFuZ2VkID0gYm94LT5oYXNBdXRvU2Nyb2xsYmFyKFNjcm9s
bGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKSAmJiAoaGFkSG9yaXpvbnRhbFNjcm9sbGJhciAh
PSBoYXNIb3Jpem9udGFsU2Nyb2xsYmFyKCkpOworICAgIGJvb2wgYXV0b1ZlcnRpY2FsU2Nyb2xs
QmFyQ2hhbmdlZCA9IGJveC0+aGFzQXV0b1Njcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbjo6
VmVydGljYWwpICYmIChoYWRWZXJ0aWNhbFNjcm9sbGJhciAhPSBoYXNWZXJ0aWNhbFNjcm9sbGJh
cigpKTsKIAogICAgIGlmIChhdXRvSG9yaXpvbnRhbFNjcm9sbEJhckNoYW5nZWQgfHwgYXV0b1Zl
cnRpY2FsU2Nyb2xsQmFyQ2hhbmdlZCkgewogICAgICAgICBpZiAoYXV0b1ZlcnRpY2FsU2Nyb2xs
QmFyQ2hhbmdlZCAmJiBzaG91bGRQbGFjZVZlcnRpY2FsU2Nyb2xsYmFyT25MZWZ0KCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggNjM4NmZiYTJmNDk4
YjVkNmI4MDIyZGIxODQyYjQ5NWYwZTU4YTBiYy4uYTY2Y2JmZTkwOWExYWI2MGZkYmZmMGVlNTQ0
YTlmZTVjMWRhZTQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94
LmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6bGF5b3V0KCkKICAg
ICAgICAgbV92QmFyLT5zZXRTdGVwcygxLCBzdGQ6Om1heCgxLCBudW1WaXNpYmxlSXRlbXMoKSAt
IDEpLCBpdGVtSGVpZ2h0KCkpOwogICAgICAgICBtX3ZCYXItPnNldFByb3BvcnRpb24obnVtVmlz
aWJsZUl0ZW1zKCksIG51bUl0ZW1zKCkpOwogICAgICAgICBpZiAoIWVuYWJsZWQpIHsKLSAgICAg
ICAgICAgIHNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihWZXJ0aWNhbFNjcm9sbGJhciwg
MCk7CisgICAgICAgICAgICBzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oU2Nyb2xsYmFy
T3JpZW50YXRpb246OlZlcnRpY2FsLCAwKTsKICAgICAgICAgICAgIG1faW5kZXhPZmZzZXQgPSAw
OwogICAgICAgICB9CiAgICAgfQpAQCAtNjAwLDcgKzYwMCw3IEBAIGJvb2wgUmVuZGVyTGlzdEJv
eDo6c2Nyb2xsVG9SZXZlYWxFbGVtZW50QXRMaXN0SW5kZXgoaW50IGluZGV4KQogICAgIGVsc2UK
ICAgICAgICAgbmV3T2Zmc2V0ID0gaW5kZXggLSBudW1WaXNpYmxlSXRlbXMoKSArIDE7CiAKLSAg
ICBzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oVmVydGljYWxTY3JvbGxiYXIsIG5ld09m
ZnNldCk7CisgICAgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKFNjcm9sbGJhck9yaWVu
dGF0aW9uOjpWZXJ0aWNhbCwgbmV3T2Zmc2V0KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAt
NzU1LDcgKzc1NSw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6c2V0U2Nyb2xsVG9wKGludCBuZXdU
b3AsIGNvbnN0IFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9ucyYpCiAgICAgICAgIHJldHVybjsK
IAogICAgIHNldHVwV2hlZWxFdmVudFRlc3RNb25pdG9yKCp0aGlzKTsKLSAgICBzY3JvbGxUb09m
ZnNldFdpdGhvdXRBbmltYXRpb24oVmVydGljYWxTY3JvbGxiYXIsIGluZGV4KTsKKyAgICBzY3Jv
bGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oU2Nyb2xsYmFyT3JpZW50YXRpb246OlZlcnRpY2Fs
LCBpbmRleCk7CiB9CiAKIGJvb2wgUmVuZGVyTGlzdEJveDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0
VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVz
dExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11
bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24gaGl0VGVzdEFjdGlvbikKQEAgLTkxMywxMCArOTEz
LDEwIEBAIFJlZjxTY3JvbGxiYXI+IFJlbmRlckxpc3RCb3g6OmNyZWF0ZVNjcm9sbGJhcigpCiAg
ICAgUmVmUHRyPFNjcm9sbGJhcj4gd2lkZ2V0OwogICAgIGJvb2wgaGFzQ3VzdG9tU2Nyb2xsYmFy
U3R5bGUgPSBzdHlsZSgpLmhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkOjpTY3JvbGxiYXIpOwogICAg
IGlmIChoYXNDdXN0b21TY3JvbGxiYXJTdHlsZSkKLSAgICAgICAgd2lkZ2V0ID0gUmVuZGVyU2Ny
b2xsYmFyOjpjcmVhdGVDdXN0b21TY3JvbGxiYXIoKnRoaXMsIFZlcnRpY2FsU2Nyb2xsYmFyLCAm
c2VsZWN0RWxlbWVudCgpKTsKKyAgICAgICAgd2lkZ2V0ID0gUmVuZGVyU2Nyb2xsYmFyOjpjcmVh
dGVDdXN0b21TY3JvbGxiYXIoKnRoaXMsIFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbCwg
JnNlbGVjdEVsZW1lbnQoKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHdpZGdldCA9IFNjcm9sbGJh
cjo6Y3JlYXRlTmF0aXZlU2Nyb2xsYmFyKCp0aGlzLCBWZXJ0aWNhbFNjcm9sbGJhciwgdGhlbWUo
KS5zY3JvbGxiYXJDb250cm9sU2l6ZUZvclBhcnQoTGlzdGJveFBhcnQpKTsKLSAgICAgICAgZGlk
QWRkU2Nyb2xsYmFyKHdpZGdldC5nZXQoKSwgVmVydGljYWxTY3JvbGxiYXIpOworICAgICAgICB3
aWRnZXQgPSBTY3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcigqdGhpcywgU2Nyb2xsYmFy
T3JpZW50YXRpb246OlZlcnRpY2FsLCB0aGVtZSgpLnNjcm9sbGJhckNvbnRyb2xTaXplRm9yUGFy
dChMaXN0Ym94UGFydCkpOworICAgICAgICBkaWRBZGRTY3JvbGxiYXIod2lkZ2V0LmdldCgpLCBT
Y3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwpOwogICAgICAgICBpZiAocGFnZSgpLmlzTW9u
aXRvcmluZ1doZWVsRXZlbnRzKCkpCiAgICAgICAgICAgICBzY3JvbGxBbmltYXRvcigpLnNldFdo
ZWVsRXZlbnRUZXN0TW9uaXRvcihwYWdlKCkud2hlZWxFdmVudFRlc3RNb25pdG9yKCkpOwogICAg
IH0KQEAgLTkzMCw3ICs5MzAsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OmRlc3Ryb3lTY3JvbGxi
YXIoKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fdkJhci0+aXNDdXN0b21TY3JvbGxi
YXIoKSkKLSAgICAgICAgU2Nyb2xsYWJsZUFyZWE6OndpbGxSZW1vdmVTY3JvbGxiYXIobV92QmFy
LmdldCgpLCBWZXJ0aWNhbFNjcm9sbGJhcik7CisgICAgICAgIFNjcm9sbGFibGVBcmVhOjp3aWxs
UmVtb3ZlU2Nyb2xsYmFyKG1fdkJhci5nZXQoKSwgU2Nyb2xsYmFyT3JpZW50YXRpb246OlZlcnRp
Y2FsKTsKICAgICBtX3ZCYXItPnJlbW92ZUZyb21QYXJlbnQoKTsKICAgICBtX3ZCYXIgPSBudWxs
cHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9s
bGJhci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcApp
bmRleCBhYjE3YWU4MTc3MWQ4N2E4ZmExOGZjNDI3ZDRjNzBjYWRjMGQ3NDY2Li42MWNlMjUwNzZm
NjdjMzk3NGVhYmNiZTJlYzBjZTUzMDg4YmI2OWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcApAQCAtNTgsNyArNTgsNyBAQCBSZW5kZXJTY3JvbGxi
YXI6OlJlbmRlclNjcm9sbGJhcihTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIFNjcm9s
bGJhck9yaWVudAogICAgICAgICBwYXJ0LT5sYXlvdXQoKTsKICAgICAgICAgd2lkdGggPSBwYXJ0
LT53aWR0aCgpOwogICAgICAgICBoZWlnaHQgPSBwYXJ0LT5oZWlnaHQoKTsKLSAgICB9IGVsc2Ug
aWYgKHRoaXMtPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKKyAgICB9IGVs
c2UgaWYgKHRoaXMtPm9yaWVudGF0aW9uKCkgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6
b250YWwpCiAgICAgICAgIHdpZHRoID0gdGhpcy0+d2lkdGgoKTsKICAgICBlbHNlCiAgICAgICAg
IGhlaWdodCA9IHRoaXMtPmhlaWdodCgpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgUmVuZGVy
U2Nyb2xsYmFyOjp1cGRhdGVTY3JvbGxiYXJQYXJ0cygpCiAgICAgdXBkYXRlU2Nyb2xsYmFyUGFy
dChUcmFja0JHUGFydCk7CiAgICAgCiAgICAgLy8gU2VlIGlmIHRoZSBzY3JvbGxiYXIncyB0aGlj
a25lc3MgY2hhbmdlZC4gIElmIHNvLCB3ZSBuZWVkIHRvIG1hcmsgb3VyIG93bmluZyBvYmplY3Qg
YXMgbmVlZGluZyBhIGxheW91dC4KLSAgICBib29sIGlzSG9yaXpvbnRhbCA9IG9yaWVudGF0aW9u
KCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcjsgICAgCisgICAgYm9vbCBpc0hvcml6b250YWwgPSBv
cmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsOwogICAgIGlu
dCBvbGRUaGlja25lc3MgPSBpc0hvcml6b250YWwgPyBoZWlnaHQoKSA6IHdpZHRoKCk7CiAgICAg
aW50IG5ld1RoaWNrbmVzcyA9IDA7CiAgICAgUmVuZGVyU2Nyb2xsYmFyUGFydCogcGFydCA9IG1f
cGFydHMuZ2V0KFNjcm9sbGJhckJHUGFydCk7CkBAIC0yNzUsNyArMjc1LDcgQEAgSW50UmVjdCBS
ZW5kZXJTY3JvbGxiYXI6OmJ1dHRvblJlY3QoU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSkgY29uc3QK
ICAgICAgICAgCiAgICAgcGFydFJlbmRlcmVyLT5sYXlvdXQoKTsKICAgICAKLSAgICBib29sIGlz
SG9yaXpvbnRhbCA9IG9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcjsKKyAgICBi
b29sIGlzSG9yaXpvbnRhbCA9IG9yaWVudGF0aW9uKCkgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246
Okhvcml6b250YWw7CiAgICAgSW50U2l6ZSBwaXhlbFNuYXBwZWRJbnRTaXplID0gc25hcHBlZElu
dFJlY3QocGFydFJlbmRlcmVyLT5mcmFtZVJlY3QoKSkuc2l6ZSgpOwogICAgIGlmIChwYXJ0VHlw
ZSA9PSBCYWNrQnV0dG9uU3RhcnRQYXJ0KQogICAgICAgICByZXR1cm4gSW50UmVjdChsb2NhdGlv
bigpLCBJbnRTaXplKGlzSG9yaXpvbnRhbCA/IHBpeGVsU25hcHBlZEludFNpemUud2lkdGgoKSA6
IHdpZHRoKCksIGlzSG9yaXpvbnRhbCA/IGhlaWdodCgpIDogcGl4ZWxTbmFwcGVkSW50U2l6ZS5o
ZWlnaHQoKSkpOwpAQCAtMzA1LDcgKzMwNSw3IEBAIEludFJlY3QgUmVuZGVyU2Nyb2xsYmFyOjp0
cmFja1JlY3QoaW50IHN0YXJ0TGVuZ3RoLCBpbnQgZW5kTGVuZ3RoKSBjb25zdAogICAgIGlmIChw
YXJ0KQogICAgICAgICBwYXJ0LT5sYXlvdXQoKTsKIAotICAgIGlmIChvcmllbnRhdGlvbigpID09
IEhvcml6b250YWxTY3JvbGxiYXIpIHsKKyAgICBpZiAob3JpZW50YXRpb24oKSA9PSBTY3JvbGxi
YXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCkgewogICAgICAgICBpbnQgbWFyZ2luTGVmdCA9IHBh
cnQgPyBzdGF0aWNfY2FzdDxpbnQ+KHBhcnQtPm1hcmdpbkxlZnQoKSkgOiAwOwogICAgICAgICBp
bnQgbWFyZ2luUmlnaHQgPSBwYXJ0ID8gc3RhdGljX2Nhc3Q8aW50PihwYXJ0LT5tYXJnaW5SaWdo
dCgpKSA6IDA7CiAgICAgICAgIHN0YXJ0TGVuZ3RoICs9IG1hcmdpbkxlZnQ7CkBAIC0zMzIsNyAr
MzMyLDcgQEAgSW50UmVjdCBSZW5kZXJTY3JvbGxiYXI6OnRyYWNrUGllY2VSZWN0V2l0aE1hcmdp
bnMoU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSwgY29uc3QKICAgICBwYXJ0UmVuZGVyZXItPmxheW91
dCgpOwogICAgIAogICAgIEludFJlY3QgcmVjdCA9IG9sZFJlY3Q7Ci0gICAgaWYgKG9yaWVudGF0
aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgeworICAgIGlmIChvcmllbnRhdGlvbigpID09
IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKSB7CiAgICAgICAgIHJlY3Quc2V0WChy
ZWN0LngoKSArIHBhcnRSZW5kZXJlci0+bWFyZ2luTGVmdCgpKTsKICAgICAgICAgcmVjdC5zZXRX
aWR0aChyZWN0LndpZHRoKCkgLSBwYXJ0UmVuZGVyZXItPmhvcml6b250YWxNYXJnaW5FeHRlbnQo
KSk7CiAgICAgfSBlbHNlIHsKQEAgLTM0OCw3ICszNDgsNyBAQCBpbnQgUmVuZGVyU2Nyb2xsYmFy
OjptaW5pbXVtVGh1bWJMZW5ndGgoKSBjb25zdAogICAgIGlmICghcGFydFJlbmRlcmVyKQogICAg
ICAgICByZXR1cm4gMDsgICAgCiAgICAgcGFydFJlbmRlcmVyLT5sYXlvdXQoKTsKLSAgICByZXR1
cm4gb3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gcGFydFJlbmRlcmVyLT53
aWR0aCgpIDogcGFydFJlbmRlcmVyLT5oZWlnaHQoKTsKKyAgICByZXR1cm4gb3JpZW50YXRpb24o
KSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCA/IHBhcnRSZW5kZXJlci0+d2lk
dGgoKSA6IHBhcnRSZW5kZXJlci0+aGVpZ2h0KCk7CiB9CiAKIGZsb2F0IFJlbmRlclNjcm9sbGJh
cjo6b3BhY2l0eSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U2Nyb2xsYmFyUGFydC5jcHAKaW5kZXggMzkyZDdlZTM0NzdlZjIxZTk2MzRjODg4NWI2NzE0ZmQ2
Mjg1ZjBjNC4uZmUzOTRhN2FjMzFmOWNkOTU1MTNkNDU4YWYwZmZiZGQyZjQ4YzczOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcApAQCAt
NTAsNyArNTAsNyBAQCB2b2lkIFJlbmRlclNjcm9sbGJhclBhcnQ6OmxheW91dCgpCiB7CiAgICAg
U3RhY2tTdGF0czo6TGF5b3V0Q2hlY2tQb2ludCBsYXlvdXRDaGVja1BvaW50OwogICAgIHNldExv
Y2F0aW9uKExheW91dFBvaW50KCkpOyAvLyBXZSBkb24ndCB3b3JyeSBhYm91dCBwb3NpdGlvbmlu
ZyBvdXJzZWx2ZXMuIFdlJ3JlIGp1c3QgZGV0ZXJtaW5pbmcgb3VyIG1pbmltdW0gd2lkdGgvaGVp
Z2h0LgotICAgIGlmIChtX3Njcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Ny
b2xsYmFyKQorICAgIGlmIChtX3Njcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJP
cmllbnRhdGlvbjo6SG9yaXpvbnRhbCkKICAgICAgICAgbGF5b3V0SG9yaXpvbnRhbFBhcnQoKTsK
ICAgICBlbHNlCiAgICAgICAgIGxheW91dFZlcnRpY2FsUGFydCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKaW5kZXggOGVmNzkyYmU1
M2NmMTFjNzU2MzVkOGM5MmM1NDllMzMzODRhMGNjYi4uMjFiODkzZTNiMWMyYWY5NTliNGIyODI4
ZGIyYWFkNmNmYTExMjljNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNjcm9sbGJhclRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHZvaWQgUmVuZGVyU2Nyb2xs
YmFyVGhlbWU6OmJ1dHRvblNpemVzQWxvbmdUcmFja0F4aXMoU2Nyb2xsYmFyJiBzY3JvbGxiYXIs
IGludCYKICAgICBJbnRSZWN0IHNlY29uZEJ1dHRvbiA9IGZvcndhcmRCdXR0b25SZWN0KHNjcm9s
bGJhciwgRm9yd2FyZEJ1dHRvblN0YXJ0UGFydCk7CiAgICAgSW50UmVjdCB0aGlyZEJ1dHRvbiA9
IGJhY2tCdXR0b25SZWN0KHNjcm9sbGJhciwgQmFja0J1dHRvbkVuZFBhcnQpOwogICAgIEludFJl
Y3QgZm91cnRoQnV0dG9uID0gZm9yd2FyZEJ1dHRvblJlY3Qoc2Nyb2xsYmFyLCBGb3J3YXJkQnV0
dG9uRW5kUGFydCk7Ci0gICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IEhvcml6b250
YWxTY3JvbGxiYXIpIHsKKyAgICBpZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gU2Nyb2xs
YmFyT3JpZW50YXRpb246Okhvcml6b250YWwpIHsKICAgICAgICAgYmVmb3JlU2l6ZSA9IGZpcnN0
QnV0dG9uLndpZHRoKCkgKyBzZWNvbmRCdXR0b24ud2lkdGgoKTsKICAgICAgICAgYWZ0ZXJTaXpl
ID0gdGhpcmRCdXR0b24ud2lkdGgoKSArIGZvdXJ0aEJ1dHRvbi53aWR0aCgpOwogICAgIH0gZWxz
ZSB7CkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6Omhhc0J1dHRv
bnMoU2Nyb2xsYmFyJiBzY3JvbGxiYXIpCiAgICAgaW50IHN0YXJ0U2l6ZTsKICAgICBpbnQgZW5k
U2l6ZTsKICAgICBidXR0b25TaXplc0Fsb25nVHJhY2tBeGlzKHNjcm9sbGJhciwgc3RhcnRTaXpl
LCBlbmRTaXplKTsKLSAgICByZXR1cm4gKHN0YXJ0U2l6ZSArIGVuZFNpemUpIDw9IChzY3JvbGxi
YXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gc2Nyb2xsYmFyLndpZHRo
KCkgOiBzY3JvbGxiYXIuaGVpZ2h0KCkpOworICAgIHJldHVybiAoc3RhcnRTaXplICsgZW5kU2l6
ZSkgPD0gKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpI
b3Jpem9udGFsID8gc2Nyb2xsYmFyLndpZHRoKCkgOiBzY3JvbGxiYXIuaGVpZ2h0KCkpOwogfQog
CiBib29sIFJlbmRlclNjcm9sbGJhclRoZW1lOjpoYXNUaHVtYihTY3JvbGxiYXImIHNjcm9sbGJh
cikKQEAgLTk3LDcgKzk3LDcgQEAgSW50UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6Y29uc3Ry
YWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhTY3JvbGxiYXImIHNjcm9sbGIKICAgICBJbnRSZWN0
IGJhY2tSZWN0ID0gZG93bmNhc3Q8UmVuZGVyU2Nyb2xsYmFyPihzY3JvbGxiYXIpLnRyYWNrUGll
Y2VSZWN0V2l0aE1hcmdpbnMoQmFja1RyYWNrUGFydCwgcmVjdCk7CiAgICAgSW50UmVjdCBmb3J3
YXJkUmVjdCA9IGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4oc2Nyb2xsYmFyKS50cmFja1BpZWNl
UmVjdFdpdGhNYXJnaW5zKEZvcndhcmRUcmFja1BhcnQsIHJlY3QpOwogICAgIEludFJlY3QgcmVz
dWx0ID0gcmVjdDsKLSAgICBpZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRh
bFNjcm9sbGJhcikgeworICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxi
YXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCkgewogICAgICAgICByZXN1bHQuc2V0WChiYWNrUmVj
dC54KCkpOwogICAgICAgICByZXN1bHQuc2V0V2lkdGgoZm9yd2FyZFJlY3QubWF4WCgpIC0gYmFj
a1JlY3QueCgpKTsKICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0
VGVzdFJlc3VsdERhdGEuY3BwCmluZGV4IDlmZjAyNmQzZDZjNjk3N2FiZTViMzRiNzc5ZThmMGE1
NmI2OTI1OTQuLjE1MjI5OWE2YjM0NzVhMzNjNTdiZDJkZGUwOTVjNjY4ODA3YWQ1ZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKQEAgLTU4LDcg
KzU4LDcgQEAgV2ViSGl0VGVzdFJlc3VsdERhdGE6OldlYkhpdFRlc3RSZXN1bHREYXRhKGNvbnN0
IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIGhpdFRlc3QKICAgICAsIGltYWdlU2l6ZSgwKQogewog
ICAgIGlmIChhdXRvKiBzY3JvbGxiYXIgPSBoaXRUZXN0UmVzdWx0LnNjcm9sbGJhcigpKQotICAg
ICAgICBpc1Njcm9sbGJhciA9IHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFs
U2Nyb2xsYmFyID8gSXNTY3JvbGxiYXI6Okhvcml6b250YWwgOiBJc1Njcm9sbGJhcjo6VmVydGlj
YWw7CisgICAgICAgIGlzU2Nyb2xsYmFyID0gc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IFNj
cm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsID8gSXNTY3JvbGxiYXI6Okhvcml6b250YWwg
OiBJc1Njcm9sbGJhcjo6VmVydGljYWw7CiB9CiAKIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpXZWJI
aXRUZXN0UmVzdWx0RGF0YShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVz
dWx0LCBib29sIGluY2x1ZGVJbWFnZSkKQEAgLTc5LDcgKzc5LDcgQEAgV2ViSGl0VGVzdFJlc3Vs
dERhdGE6OldlYkhpdFRlc3RSZXN1bHREYXRhKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQm
IGhpdFRlc3QKICAgICAsIGltYWdlU2l6ZSgwKQogewogICAgIGlmIChhdXRvKiBzY3JvbGxiYXIg
PSBoaXRUZXN0UmVzdWx0LnNjcm9sbGJhcigpKQotICAgICAgICBpc1Njcm9sbGJhciA9IHNjcm9s
bGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gSXNTY3JvbGxiYXI6
Okhvcml6b250YWwgOiBJc1Njcm9sbGJhcjo6VmVydGljYWw7CisgICAgICAgIGlzU2Nyb2xsYmFy
ID0gc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jp
em9udGFsID8gSXNTY3JvbGxiYXI6Okhvcml6b250YWwgOiBJc1Njcm9sbGJhcjo6VmVydGljYWw7
CiAKICAgICBpZiAoIWluY2x1ZGVJbWFnZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggMGUxZDA3
YWUzZDBjODE3NGViNmMzZGJjOTM4MmFkNTRiNjczNDMwMy4uOGIyNDc3YWU3ZWI0NjM4MzQ0Yjc2
YjFiY2IzOGRlOTkwZWZiNTAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0xMzExLDE1ICsxMzExLDE1IEBAIHZvaWQgUERG
UGx1Z2luOjp1cGRhdGVTY3JvbGxiYXJzKCkKIAogICAgIGlmIChtX2hvcml6b250YWxTY3JvbGxi
YXIpIHsKICAgICAgICAgaWYgKG1fc2l6ZS53aWR0aCgpID49IG1fcGRmRG9jdW1lbnRTaXplLndp
ZHRoKCkpCi0gICAgICAgICAgICBkZXN0cm95U2Nyb2xsYmFyKEhvcml6b250YWxTY3JvbGxiYXIp
OworICAgICAgICAgICAgZGVzdHJveVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9y
aXpvbnRhbCk7CiAgICAgfSBlbHNlIGlmIChtX3NpemUud2lkdGgoKSA8IG1fcGRmRG9jdW1lbnRT
aXplLndpZHRoKCkpCi0gICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhciA9IGNyZWF0ZVNjcm9s
bGJhcihIb3Jpem9udGFsU2Nyb2xsYmFyKTsKKyAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFy
ID0gY3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKTsKIAog
ICAgIGlmIChtX3ZlcnRpY2FsU2Nyb2xsYmFyKSB7CiAgICAgICAgIGlmIChtX3NpemUuaGVpZ2h0
KCkgPj0gbV9wZGZEb2N1bWVudFNpemUuaGVpZ2h0KCkpCi0gICAgICAgICAgICBkZXN0cm95U2Ny
b2xsYmFyKFZlcnRpY2FsU2Nyb2xsYmFyKTsKKyAgICAgICAgICAgIGRlc3Ryb3lTY3JvbGxiYXIo
U2Nyb2xsYmFyT3JpZW50YXRpb246OlZlcnRpY2FsKTsKICAgICB9IGVsc2UgaWYgKG1fc2l6ZS5o
ZWlnaHQoKSA8IG1fcGRmRG9jdW1lbnRTaXplLmhlaWdodCgpKQotICAgICAgICBtX3ZlcnRpY2Fs
U2Nyb2xsYmFyID0gY3JlYXRlU2Nyb2xsYmFyKFZlcnRpY2FsU2Nyb2xsYmFyKTsKKyAgICAgICAg
bV92ZXJ0aWNhbFNjcm9sbGJhciA9IGNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlv
bjo6VmVydGljYWwpOwogCiAgICAgSW50U2l6ZSBzY3JvbGxiYXJTcGFjZSA9IHNjcm9sbGJhcklu
dHJ1c2lvbigpOwogCkBAIC0xMzg0LDcgKzEzODQsNyBAQCBjb25zdCBQbHVnaW5WaWV3KiBQREZQ
bHVnaW46OnBsdWdpblZpZXcoKSBjb25zdAogUmVmPFNjcm9sbGJhcj4gUERGUGx1Z2luOjpjcmVh
dGVTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7CiAgICAgYXV0
byB3aWRnZXQgPSBTY3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcigqdGhpcywgb3JpZW50
YXRpb24sIFNjcm9sbGJhckNvbnRyb2xTaXplOjpSZWd1bGFyKTsKLSAgICBpZiAob3JpZW50YXRp
b24gPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgeworICAgIGlmIChvcmllbnRhdGlvbiA9PSBTY3Jv
bGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCkgewogICAgICAgICBtX2hvcml6b250YWxTY3Jv
bGxiYXJMYXllciA9IGFkb3B0TlMoW1tXS1BERlBsdWdpblNjcm9sbGJhckxheWVyIGFsbG9jXSBp
bml0V2l0aFBERlBsdWdpbjp0aGlzXSk7CiAgICAgICAgIFttX2NvbnRhaW5lckxheWVyIGFkZFN1
YmxheWVyOm1faG9yaXpvbnRhbFNjcm9sbGJhckxheWVyLmdldCgpXTsKICAgICB9IGVsc2UgewpA
QCAtMTQxMiw3ICsxNDEyLDcgQEAgUmVmPFNjcm9sbGJhcj4gUERGUGx1Z2luOjpjcmVhdGVTY3Jv
bGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiAKIHZvaWQgUERGUGx1Z2lu
OjpkZXN0cm95U2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewot
ICAgIFJlZlB0cjxTY3JvbGxiYXI+JiBzY3JvbGxiYXIgPSBvcmllbnRhdGlvbiA9PSBIb3Jpem9u
dGFsU2Nyb2xsYmFyID8gbV9ob3Jpem9udGFsU2Nyb2xsYmFyIDogbV92ZXJ0aWNhbFNjcm9sbGJh
cjsKKyAgICBSZWZQdHI8U2Nyb2xsYmFyPiYgc2Nyb2xsYmFyID0gb3JpZW50YXRpb24gPT0gU2Ny
b2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWwgPyBtX2hvcml6b250YWxTY3JvbGxiYXIgOiBt
X3ZlcnRpY2FsU2Nyb2xsYmFyOwogICAgIGlmICghc2Nyb2xsYmFyKQogICAgICAgICByZXR1cm47
CiAKQEAgLTE0MjAsNyArMTQyMCw3IEBAIHZvaWQgUERGUGx1Z2luOjpkZXN0cm95U2Nyb2xsYmFy
KFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogICAgIHNjcm9sbGJhci0+cmVtb3Zl
RnJvbVBhcmVudCgpOwogICAgIHNjcm9sbGJhciA9IG51bGxwdHI7CiAKLSAgICBpZiAob3JpZW50
YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgeworICAgIGlmIChvcmllbnRhdGlvbiA9PSBT
Y3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCkgewogICAgICAgICBbbV9ob3Jpem9udGFs
U2Nyb2xsYmFyTGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwogICAgICAgICBtX2hvcml6b250
YWxTY3JvbGxiYXJMYXllciA9IDA7CiAgICAgfSBlbHNlIHsKQEAgLTE5NTIsOCArMTk1Miw4IEBA
IHZvaWQgUERGUGx1Z2luOjpkZXN0cm95KCkKICAgICBtX2FjdGl2ZUFubm90YXRpb24gPSBudWxs
cHRyOwogICAgIG1fYW5ub3RhdGlvbkNvbnRhaW5lciA9IG51bGxwdHI7CiAKLSAgICBkZXN0cm95
U2Nyb2xsYmFyKEhvcml6b250YWxTY3JvbGxiYXIpOwotICAgIGRlc3Ryb3lTY3JvbGxiYXIoVmVy
dGljYWxTY3JvbGxiYXIpOworICAgIGRlc3Ryb3lTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRp
b246Okhvcml6b250YWwpOworICAgIGRlc3Ryb3lTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRp
b246OlZlcnRpY2FsKTsKICAgICAKICAgICBbbV9zY3JvbGxDb3JuZXJMYXllciByZW1vdmVGcm9t
U3VwZXJsYXllcl07CiAgICAgW21fY29udGVudExheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsK
</data>
<flag name="review"
          id="467831"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="467834"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443259</attachid>
            <date>2021-11-03 17:15:40 -0700</date>
            <delta_ts>2021-11-03 19:25:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232648-20211103171539.patch</filename>
            <type>text/plain</type>
            <size>82780</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0OTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNkZTRiODAxM2NjOTky
MzJmOTQzM2IwODFmNzM2YTFhYjc3OWJhYi4uNDE1NzNjZDE1NzQ3MWQ2MGVhNDhmMTFiNjljNWM2
ZjhmZjdhNWZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDIxLTExLTAyICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2Ug
c2Nyb2xsYmFyIG9yaWVudGF0aW9uIGFuIGVudW0gY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjY0OAorCisgICAgICAgIFJldmlld2VkIGJ5
IFNpbW9uIEZyYXNlci4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNj
cm9sbGJhci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyOjpv
cmllbnRhdGlvbiBjb25zdCk6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5oOgorICAg
ICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXJUZXN0RnVuY3Rpb25zLmg6CisgICAgICAgIChXZWJD
b3JlOjpzY3JvbGxiYXJNYXRjaGVzSG9yaXpvbnRhbFBzZXVkb0NsYXNzKToKKyAgICAgICAgKFdl
YkNvcmU6OnNjcm9sbGJhck1hdGNoZXNWZXJ0aWNhbFBzZXVkb0NsYXNzKToKKyAgICAgICAgKiBw
YWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Omhvcml6b250
YWxTY3JvbGxiYXJIaWRkZW5CeVN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6dmVydGljYWxTY3JvbGxiYXJIaWRkZW5CeVN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6cGVyZm9ybVNpemVUb0NvbnRlbnRBdXRvU2l6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkanVzdFNjcm9sbFN0ZXBGb3JGaXhlZENvbnRlbnQpOgor
ICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsYWJsZUFy
ZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6ZGVsdGFGcm9tU3RlcCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgICog
cGxhdGZvcm0vU2Nyb2xsVHlwZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNldEhhc0hvcml6b250YWxTY3JvbGxi
YXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2V0SGFzVmVydGljYWxTY3JvbGxi
YXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGFibGVBcmVhOjpzY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YWJsZUFyZWE6OnNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxhYmxlQXJlYTo6ZGlkQWRkU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGFibGVBcmVhOjp3aWxsUmVtb3ZlU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGFibGVBcmVhOjpkb1Bvc3RUaHVtYk1vdmVTbmFwcGluZyk6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKFdlYkNvcmU6Om9mZnNldEZvck9yaWVu
dGF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyOjpwcmVzc2VkUGFydFNjcm9sbERpcmVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXI6Om1vdmVUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXI6Om1vdXNlTW92ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjptb3VzZURvd24p
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpzcGxpdFRyYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja1Bvc2l0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja0xlbmd0aCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpoYXNCdXR0b25zKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lTWFjOjpoYXNUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpidXR0b25S
ZXBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6YmFja0J1
dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OmZvcndhcmRC
dXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjp0cmFja1Jl
Y3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJzQ29udHJvbGxlck1hYy5tbToK
KyAgICAgICAgKC1bV2ViU2Nyb2xsZXJJbXBEZWxlZ2F0ZSBsYXllcl0pOgorICAgICAgICAoLVtX
ZWJTY3JvbGxlckltcERlbGVnYXRlIHNldFVwQWxwaGFBbmltYXRpb246c2Nyb2xsZXJQYWludGVy
OnBhcnQ6YW5pbWF0ZUFscGhhVG86ZHVyYXRpb246XSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Omhhc0F1dG9TY3JvbGxi
YXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpoYXNBbHdheXNQcmVzZW50
U2Nyb2xsYmFyIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlT3ZlcmZs
b3dDb250cm9sc0xheWVycyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0
ZU92ZXJmbG93Q29udHJvbHNMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpkZXN0cm95Um9vdExheWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllclNj
cm9sbGFibGVBcmVhOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllclNjcm9s
bGFibGVBcmVhOjpkZXN0cm95U2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyU2Nyb2xsYWJsZUFyZWE6OnNldEhhc0hvcml6b250YWxTY3JvbGxiYXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6c2V0SGFzVmVydGljYWxTY3JvbGxi
YXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dXBkYXRl
U2Nyb2xsYmFyUHJlc2VuY2VBbmRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
clNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxiYXJzQWZ0ZXJMYXlvdXQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxp
c3RCb3g6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpzY3JvbGxU
b1JldmVhbEVsZW1lbnRBdExpc3RJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
Qm94OjpzZXRTY3JvbGxUb3ApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6Y3Jl
YXRlU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OmRlc3Ryb3lT
Y3JvbGxiYXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyOjpSZW5kZXJTY3JvbGxiYXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyOjp1cGRhdGVTY3JvbGxiYXJQYXJ0cyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXI6OmJ1dHRvblJlY3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyOjp0cmFja1JlY3QgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyOjp0cmFja1BpZWNlUmVjdFdpdGhNYXJnaW5zIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6bWluaW11bVRodW1iTGVuZ3Ro
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJQYXJ0OjpsYXlvdXQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTY3JvbGxiYXJUaGVtZTo6YnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFzQnV0dG9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6Y29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1Bp
ZWNlcyk6CisKIDIwMjEtMTAtMjggIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUu
Y29tPgogCiAgICAgICAgIElzb2xhdGVkIHRyZWUgbW9kZTogRGlzcGF0Y2ggYWxsIGNhbGxzIHRv
IFtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWVdIGluIFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudCB0byB0aGUgQVggdGhyZWFkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBhMDE0ZGE3NjM1Yzc1MjZiYTJmMDA4NzA4N2JhNzdjMTUxYmNhM2I1Li44MmE4MTBl
ZTk2YTRhZDljNTM5Nzg4MWFiYjk0NzUxNjkzNjNmNTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4
IEBACisyMDIxLTExLTAyICBOaWtvbGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUu
Y29tPgorCisgICAgICAgIE1ha2Ugc2Nyb2xsYmFyIG9yaWVudGF0aW9uIGFuIGVudW0gY2xhc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjY0OAor
CisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICAqIFNoYXJlZC9X
ZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkhpdFRlc3RSZXN1
bHREYXRhOjpXZWJIaXRUZXN0UmVzdWx0RGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6dXBkYXRl
U2Nyb2xsYmFycyk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Y3JlYXRlU2Nyb2xsYmFy
KToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpkZXN0cm95U2Nyb2xsYmFyKToKKyAgICAg
ICAgKFdlYktpdDo6UERGUGx1Z2luOjpkZXN0cm95KToKKwogMjAyMS0xMC0yOCAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgV2ViUGFnZVByb3h5
IGlkZW50aWZpZXJzIHRvIGBWaWV3R2VzdHVyZXNgIGNhdGVnb3J5IGxvZ2dpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIu
Y3BwCmluZGV4IDc1NDdmNmYxNTVhOTg5ZTgyODAwM2UxZTAyOWI4ZTM3NGQ5MjYyOWUuLjZjYTRl
YTQ4OGQ2YjU3ZTMyZWI4NDIyMDM4MGI5MmMzZjRlZTQyZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmNwcApAQCAt
NjksOSArNjksOSBAQCBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gQWNjZXNzaWJpbGl0eVNjcm9s
bGJhcjo6b3JpZW50YXRpb24oKSBjb25zdAogICAgIGlmICghbV9zY3JvbGxiYXIpCiAgICAgICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246OlZlcnRpY2FsOwogCi0gICAgaWYgKG1f
c2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpCisgICAgaWYg
KG1fc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jp
em9udGFsKQogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpIb3Jpem9u
dGFsOwotICAgIGlmIChtX3Njcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9s
bGJhcikKKyAgICBpZiAobV9zY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gU2Nyb2xsYmFyT3Jp
ZW50YXRpb246OlZlcnRpY2FsKQogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0
aW9uOjpWZXJ0aWNhbDsKIAogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246OlZl
cnRpY2FsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCmluZGV4IDNjYzA3YWFmZTE0
MTY4YzE0NGU4YTlkNThjYmYyN2JmOWUzNjFjMDYuLjkyYTYwNDQ4ZTllZGZmOTgyNTNhMThkYjYy
NjJkZWZmZTBjYTkyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNo
ZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKQEAgLTQz
LDcgKzQzLDcgQEAgc3RydWN0IFN0eWxlU2Nyb2xsYmFyU3RhdGUgewogICAgIFNjcm9sbGJhclBh
cnQgc2Nyb2xsYmFyUGFydCB7IE5vUGFydCB9OwogICAgIFNjcm9sbGJhclBhcnQgaG92ZXJlZFBh
cnQgeyBOb1BhcnQgfTsKICAgICBTY3JvbGxiYXJQYXJ0IHByZXNzZWRQYXJ0IHsgTm9QYXJ0IH07
Ci0gICAgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24geyBWZXJ0aWNhbFNjcm9sbGJh
ciB9OworICAgIFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uIHsgU2Nyb2xsYmFyT3Jp
ZW50YXRpb246OlZlcnRpY2FsIH07CiAgICAgU2Nyb2xsYmFyQnV0dG9uc1BsYWNlbWVudCBidXR0
b25zUGxhY2VtZW50IHsgU2Nyb2xsYmFyQnV0dG9uc05vbmUgfTsKICAgICBib29sIGVuYWJsZWQg
eyBmYWxzZSB9OwogICAgIGJvb2wgc2Nyb2xsQ29ybmVySXNWaXNpYmxlIHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXJUZXN0RnVuY3Rpb25z
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyVGVzdEZ1bmN0aW9ucy5oCmlu
ZGV4IDljN2QxNDc2ZjgzZjYyZGNmZjVhMDg0MWJjODc2OGY5NGZlYjk4ZWUuLmZmNjFkMDBiNmFj
ZTEzNjg1MDFkZTgxMzIyNTU1NWRmNjVlMWU0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TZWxlY3RvckNoZWNrZXJUZXN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1NlbGVjdG9yQ2hlY2tlclRlc3RGdW5jdGlvbnMuaApAQCAtMjk1LDEyICsyOTUsMTIgQEAg
QUxXQVlTX0lOTElORSBib29sIHNjcm9sbGJhck1hdGNoZXNBY3RpdmVQc2V1ZG9DbGFzcyhjb25z
dCBTZWxlY3RvckNoZWNrZXI6OkNoZWMKIAogQUxXQVlTX0lOTElORSBib29sIHNjcm9sbGJhck1h
dGNoZXNIb3Jpem9udGFsUHNldWRvQ2xhc3MoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpDaGVja2lu
Z0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuc2Nyb2xsYmFyU3RhdGUg
JiYgY29udGV4dC5zY3JvbGxiYXJTdGF0ZS0+b3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9s
bGJhcjsKKyAgICByZXR1cm4gY29udGV4dC5zY3JvbGxiYXJTdGF0ZSAmJiBjb250ZXh0LnNjcm9s
bGJhclN0YXRlLT5vcmllbnRhdGlvbiA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRh
bDsKIH0KIAogQUxXQVlTX0lOTElORSBib29sIHNjcm9sbGJhck1hdGNoZXNWZXJ0aWNhbFBzZXVk
b0NsYXNzKGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0JiBjb250ZXh0KQog
ewotICAgIHJldHVybiBjb250ZXh0LnNjcm9sbGJhclN0YXRlICYmIGNvbnRleHQuc2Nyb2xsYmFy
U3RhdGUtPm9yaWVudGF0aW9uID09IFZlcnRpY2FsU2Nyb2xsYmFyOworICAgIHJldHVybiBjb250
ZXh0LnNjcm9sbGJhclN0YXRlICYmIGNvbnRleHQuc2Nyb2xsYmFyU3RhdGUtPm9yaWVudGF0aW9u
ID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbDsKIH0KIAogQUxXQVlTX0lOTElORSBi
b29sIHNjcm9sbGJhck1hdGNoZXNEZWNyZW1lbnRQc2V1ZG9DbGFzcyhjb25zdCBTZWxlY3RvckNo
ZWNrZXI6OkNoZWNraW5nQ29udGV4dCYgY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cAppbmRleCA1NzhlY2RiNjkzZGZhNTMxMGE3MTYwNmYwMzZiZmY2ZDJmYWM2MjQ2Li5mNWI1MWEz
MTRjNDNiZTJlZjU0ZjdlOWNiYzI1NTYxMTBmNzViYjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCkBAIC0xNDk0LDcgKzE0OTQsNyBAQCBib29sIEZyYW1lVmlldzo6aG9yaXpvbnRhbFNj
cm9sbGJhckhpZGRlbkJ5U3R5bGUoKSBjb25zdAogICAgICAgICByZXR1cm4gc2Nyb2xsYmFyICYm
IHNjcm9sbGJhci0+aXNIaWRkZW5CeVN0eWxlKCk7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0eWxl
SGlkZXNTY3JvbGxiYXJXaXRoT3JpZW50YXRpb24oSG9yaXpvbnRhbFNjcm9sbGJhcik7CisgICAg
cmV0dXJuIHN0eWxlSGlkZXNTY3JvbGxiYXJXaXRoT3JpZW50YXRpb24oU2Nyb2xsYmFyT3JpZW50
YXRpb246Okhvcml6b250YWwpOwogfQogCiBib29sIEZyYW1lVmlldzo6dmVydGljYWxTY3JvbGxi
YXJIaWRkZW5CeVN0eWxlKCkgY29uc3QKQEAgLTE1MDQsNyArMTUwNCw3IEBAIGJvb2wgRnJhbWVW
aWV3Ojp2ZXJ0aWNhbFNjcm9sbGJhckhpZGRlbkJ5U3R5bGUoKSBjb25zdAogICAgICAgICByZXR1
cm4gc2Nyb2xsYmFyICYmIHNjcm9sbGJhci0+aXNIaWRkZW5CeVN0eWxlKCk7CiAgICAgfQogICAg
IAotICAgIHJldHVybiBzdHlsZUhpZGVzU2Nyb2xsYmFyV2l0aE9yaWVudGF0aW9uKFZlcnRpY2Fs
U2Nyb2xsYmFyKTsKKyAgICByZXR1cm4gc3R5bGVIaWRlc1Njcm9sbGJhcldpdGhPcmllbnRhdGlv
bihTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwpOwogfQogCiB2b2lkIEZyYW1lVmlldzo6
c2V0Q2Fubm90QmxpdFRvV2luZG93KCkKQEAgLTM1ODgsMTQgKzM1ODgsMTQgQEAgdm9pZCBGcmFt
ZVZpZXc6OnBlcmZvcm1TaXplVG9Db250ZW50QXV0b1NpemUoKQogICAgICAgICBpZiAobmV3U2l6
ZS53aWR0aCgpID4gbV9hdXRvU2l6ZUNvbnN0cmFpbnQud2lkdGgoKSkgewogICAgICAgICAgICAg
UmVmUHRyPFNjcm9sbGJhcj4gbG9jYWxIb3Jpem9udGFsU2Nyb2xsYmFyID0gaG9yaXpvbnRhbFNj
cm9sbGJhcigpOwogICAgICAgICAgICAgaWYgKCFsb2NhbEhvcml6b250YWxTY3JvbGxiYXIpCi0g
ICAgICAgICAgICAgICAgbG9jYWxIb3Jpem9udGFsU2Nyb2xsYmFyID0gY3JlYXRlU2Nyb2xsYmFy
KEhvcml6b250YWxTY3JvbGxiYXIpOworICAgICAgICAgICAgICAgIGxvY2FsSG9yaXpvbnRhbFNj
cm9sbGJhciA9IGNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRh
bCk7CiAgICAgICAgICAgICBuZXdTaXplLmV4cGFuZCgwLCBsb2NhbEhvcml6b250YWxTY3JvbGxi
YXItPm9jY3VwaWVkSGVpZ2h0KCkpOwogICAgICAgICAgICAgLy8gRG9uJ3QgYm90aGVyIGNoZWNr
aW5nIGZvciBhIHZlcnRpY2FsIHNjcm9sbGJhciBiZWNhdXNlIHRoZSB3aWR0aCBpcyBhdAogICAg
ICAgICAgICAgLy8gYWxyZWFkeSBncmVhdGVyIHRoZSBtYXhpbXVtLgogICAgICAgICB9IGVsc2Ug
aWYgKG5ld1NpemUuaGVpZ2h0KCkgPiBtX2F1dG9TaXplQ29uc3RyYWludC5oZWlnaHQoKSkgewog
ICAgICAgICAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbG9jYWxWZXJ0aWNhbFNjcm9sbGJhciA9IHZl
cnRpY2FsU2Nyb2xsYmFyKCk7CiAgICAgICAgICAgICBpZiAoIWxvY2FsVmVydGljYWxTY3JvbGxi
YXIpCi0gICAgICAgICAgICAgICAgbG9jYWxWZXJ0aWNhbFNjcm9sbGJhciA9IGNyZWF0ZVNjcm9s
bGJhcihWZXJ0aWNhbFNjcm9sbGJhcik7CisgICAgICAgICAgICAgICAgbG9jYWxWZXJ0aWNhbFNj
cm9sbGJhciA9IGNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwp
OwogICAgICAgICAgICAgbmV3U2l6ZS5leHBhbmQobG9jYWxWZXJ0aWNhbFNjcm9sbGJhci0+b2Nj
dXBpZWRXaWR0aCgpLCAwKTsKICAgICAgICAgICAgIC8vIERvbid0IGJvdGhlciBjaGVja2luZyBm
b3IgYSBob3Jpem9udGFsIHNjcm9sbGJhciBiZWNhdXNlIHRoZSBoZWlnaHQgaXMKICAgICAgICAg
ICAgIC8vIGFscmVhZHkgZ3JlYXRlciB0aGUgbWF4aW11bS4KQEAgLTM4MTcsNyArMzgxNyw3IEBA
IHZvaWQgRnJhbWVWaWV3OjpzY3JvbGxUb1Bvc2l0aW9uV2l0aEFuaW1hdGlvbihjb25zdCBTY3Jv
bGxQb3NpdGlvbiYgcG9zaXRpb24sIFNjCiAKIGZsb2F0IEZyYW1lVmlldzo6YWRqdXN0U2Nyb2xs
U3RlcEZvckZpeGVkQ29udGVudChmbG9hdCBzdGVwLCBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmll
bnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiB7Ci0gICAgaWYgKGdyYW51
bGFyaXR5ICE9IFNjcm9sbEJ5UGFnZSB8fCBvcmllbnRhdGlvbiA9PSBIb3Jpem9udGFsU2Nyb2xs
YmFyKQorICAgIGlmIChncmFudWxhcml0eSAhPSBTY3JvbGxCeVBhZ2UgfHwgb3JpZW50YXRpb24g
PT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWwpCiAgICAgICAgIHJldHVybiBzdGVw
OwogCiAgICAgVHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQqIHBvc2l0aW9uZWRPYmplY3RzID0g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggM2E2ZWM1YWZlNTIzY2E2OTM1YmI4
YTE1MThiNmEwZDgzOGViZGRmNy4uNGIxY2YyNDNhNjM3YThmYzQwNTI3NGJlYzc1MDI3NGVjZThj
OTlhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTYxMywxMyArNjEzLDEzIEBAIHZvaWQg
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRp
ZENoYW5nZShTY3JvbGxhYmxlCiAgICAgYXV0byogbm9kZSA9IG1fc2Nyb2xsaW5nU3RhdGVUcmVl
LT5zdGF0ZU5vZGVGb3JJRChzY3JvbGxhYmxlQXJlYS5zY3JvbGxpbmdOb2RlSUQoKSk7CiAgICAg
aWYgKGlzPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT4obm9kZSkpIHsKICAgICAgICAgYXV0
byYgc2Nyb2xsaW5nTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT4o
Km5vZGUpOwotICAgICAgICBpZiAob3JpZW50YXRpb24gPT0gVmVydGljYWxTY3JvbGxiYXIpCisg
ICAgICAgIGlmIChvcmllbnRhdGlvbiA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwp
CiAgICAgICAgICAgICBzY3JvbGxpbmdOb2RlLnNldFZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIoc2Ny
b2xsYWJsZUFyZWEubGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcigpKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgc2Nyb2xsaW5nTm9kZS5zZXRIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIoc2Ny
b2xsYWJsZUFyZWEubGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFyKCkpOwogICAgIH0KIAotICAg
IGlmIChvcmllbnRhdGlvbiA9PSBWZXJ0aWNhbFNjcm9sbGJhcikKKyAgICBpZiAob3JpZW50YXRp
b24gPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246OlZlcnRpY2FsKQogICAgICAgICBzY3JvbGxhYmxl
QXJlYS52ZXJ0aWNhbFNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKCk7CiAgICAgZWxzZQogICAgICAg
ICBzY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAppbmRleCBhYjE4YjgyNzlh
ZmY4ZWU4OWE4OWMyMGU1YTAzODg1ZTUzNGQzY2Q0Li44ZmU4NDc2MzlkZDkzYzlmYjFiYzQ3MGQ4
NjUwYTgyZjQ1YTZmNzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
b3IuY3BwCkBAIC03NiwxNiArNzYsMTYgQEAgYm9vbCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsKFNj
cm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eQogCiAgICAg
ICAgIGF1dG8gY3VycmVudE9mZnNldCA9IG9mZnNldEZyb21Qb3NpdGlvbihjdXJyZW50UG9zaXRp
b24oKSk7CiAgICAgICAgIGF1dG8gbmV3T2Zmc2V0ID0gY3VycmVudE9mZnNldCArIGRlbHRhOwot
ICAgICAgICBpZiAob3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKKyAgICAgICAg
aWYgKG9yaWVudGF0aW9uID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKQogICAg
ICAgICAgICAgbmV3T2Zmc2V0LnNldFgobV9zY3JvbGxDb250cm9sbGVyLmFkanVzdGVkU2Nyb2xs
RGVzdGluYXRpb24oU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBuZXdPZmZzZXQsIG11bHRp
cGxpZXIsIGN1cnJlbnRPZmZzZXQueCgpKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG5l
d09mZnNldC5zZXRZKG1fc2Nyb2xsQ29udHJvbGxlci5hZGp1c3RlZFNjcm9sbERlc3RpbmF0aW9u
KFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIG5ld09mZnNldCwgbXVsdGlwbGllciwgY3VycmVu
dE9mZnNldC55KCkpKTsKIAogICAgICAgICBhdXRvIG5ld0RlbHRhID0gbmV3T2Zmc2V0IC0gY3Vy
cmVudE9mZnNldDsKLSAgICAgICAgaWYgKG9yaWVudGF0aW9uID09IEhvcml6b250YWxTY3JvbGxi
YXIpCi0gICAgICAgICAgICByZXR1cm4gc2Nyb2xsKEhvcml6b250YWxTY3JvbGxiYXIsIGdyYW51
bGFyaXR5LCBuZXdEZWx0YS53aWR0aCgpLCAxLjAsIGJlaGF2aW9yKTsKKyAgICAgICAgaWYgKG9y
aWVudGF0aW9uID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKQorICAgICAgICAg
ICAgcmV0dXJuIHNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCwgZ3JhbnVs
YXJpdHksIG5ld0RlbHRhLndpZHRoKCksIDEuMCwgYmVoYXZpb3IpOwogCi0gICAgICAgIHJldHVy
biBzY3JvbGwoVmVydGljYWxTY3JvbGxiYXIsIGdyYW51bGFyaXR5LCBuZXdEZWx0YS5oZWlnaHQo
KSwgMS4wLCBiZWhhdmlvcik7CisgICAgICAgIHJldHVybiBzY3JvbGwoU2Nyb2xsYmFyT3JpZW50
YXRpb246OlZlcnRpY2FsLCBncmFudWxhcml0eSwgbmV3RGVsdGEuaGVpZ2h0KCksIDEuMCwgYmVo
YXZpb3IpOwogICAgIH0KIAogICAgIGlmIChtX3Njcm9sbGFibGVBcmVhLnNjcm9sbEFuaW1hdG9y
RW5hYmxlZCgpICYmIHBsYXRmb3JtQWxsb3dzU2Nyb2xsQW5pbWF0aW9uKCkgJiYgIWJlaGF2aW9y
LmNvbnRhaW5zKFNjcm9sbEJlaGF2aW9yOjpOZXZlckFuaW1hdGUpKSB7CkBAIC0xNDUsNyArMTQ1
LDcgQEAgRmxvYXRQb2ludCBTY3JvbGxBbmltYXRvcjo6cG9zaXRpb25Gcm9tT2Zmc2V0KGNvbnN0
IEZsb2F0UG9pbnQmIG9mZnNldCkgY29uc3QKIEZsb2F0U2l6ZSBTY3JvbGxBbmltYXRvcjo6ZGVs
dGFGcm9tU3RlcChTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgZmxvYXQgc3RlcCwg
ZmxvYXQgbXVsdGlwbGllcikKIHsKICAgICBGbG9hdFNpemUgZGVsdGE7Ci0gICAgaWYgKG9yaWVu
dGF0aW9uID09IEhvcml6b250YWxTY3JvbGxiYXIpCisgICAgaWYgKG9yaWVudGF0aW9uID09IFNj
cm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKQogICAgICAgICBkZWx0YS5zZXRXaWR0aChz
dGVwICogbXVsdGlwbGllcik7CiAgICAgZWxzZQogICAgICAgICBkZWx0YS5zZXRIZWlnaHQoc3Rl
cCAqIG11bHRpcGxpZXIpOwpAQCAtMjE4LDcgKzIxOCw3IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3I6
OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBlKQogICAgICAgICAg
ICAgICAgIGlmIChuZWdhdGl2ZSkKICAgICAgICAgICAgICAgICAgICAgZGVsdGFZID0gLWRlbHRh
WTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNjcm9sbChWZXJ0aWNhbFNjcm9sbGJhciwg
U2Nyb2xsQnlQaXhlbCwgdmVydGljYWxTY3JvbGxiYXItPnBpeGVsU3RlcCgpLCAtZGVsdGFZLCBi
ZWhhdmlvcik7CisgICAgICAgICAgICBzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb246OlZlcnRp
Y2FsLCBTY3JvbGxCeVBpeGVsLCB2ZXJ0aWNhbFNjcm9sbGJhci0+cGl4ZWxTdGVwKCksIC1kZWx0
YVksIGJlaGF2aW9yKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChkZWx0YVgpIHsKQEAgLTIy
OCw3ICsyMjgsNyBAQCBib29sIFNjcm9sbEFuaW1hdG9yOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYgZSkKICAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmUpCiAg
ICAgICAgICAgICAgICAgICAgIGRlbHRhWCA9IC1kZWx0YVg7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBzY3JvbGwoSG9yaXpvbnRhbFNjcm9sbGJhciwgU2Nyb2xsQnlQaXhlbCwgaG9yaXpv
bnRhbFNjcm9sbGJhci0+cGl4ZWxTdGVwKCksIC1kZWx0YVgsIGJlaGF2aW9yKTsKKyAgICAgICAg
ICAgIHNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCwgU2Nyb2xsQnlQaXhl
bCwgaG9yaXpvbnRhbFNjcm9sbGJhci0+cGl4ZWxTdGVwKCksIC1kZWx0YVgsIGJlaGF2aW9yKTsK
ICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gaGFuZGxlZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxUeXBlcy5oCmluZGV4IGViYWExN2U5MDAyZDhkYjM5OGQ3OGI2Y2JkMzdiNjYyMTRj
ZmFlNWYuLmRjODg4YzA4Y2Q3MWIxYWY2M2Q5YzM0MTk3ZWIyOGQwNWU3Njc4NDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsVHlwZXMuaApAQCAtMTQzLDkgKzE0Myw5IEBAIGVudW0gU2Ny
b2xsRWxhc3RpY2l0eSA6IHVpbnQ4X3QgewogICAgIFNjcm9sbEVsYXN0aWNpdHlBbGxvd2VkCiB9
OwogCi1lbnVtIFNjcm9sbGJhck9yaWVudGF0aW9uIDogdWludDhfdCB7Ci0gICAgSG9yaXpvbnRh
bFNjcm9sbGJhciwKLSAgICBWZXJ0aWNhbFNjcm9sbGJhcgorZW51bSBjbGFzcyBTY3JvbGxiYXJP
cmllbnRhdGlvbiA6IHVpbnQ4X3QgeworICAgIEhvcml6b250YWwsCisgICAgVmVydGljYWwKIH07
CiAKIGVudW0gU2Nyb2xsYmFyTW9kZSA6IHVpbnQ4X3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmNwcAppbmRleCBjOTJjZTJlNWM5MThlY2UxYTVkNDgwYzBhZDdlYThmZjY0NTk1
MDRiLi5hMjBjYWEwMjQwMzI4NjZhNWE0ZmY1MWEzMWI2ODliNjE2YjkzMTdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApAQCAtNjcsMTIgKzY3LDEyIEBAIHZvaWQgU2Ny
b2xsVmlldzo6cmVtb3ZlQ2hpbGQoV2lkZ2V0JiBjaGlsZCkKIAogYm9vbCBTY3JvbGxWaWV3Ojpz
ZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKGJvb2wgaGFzQmFyLCBib29sKiBjb250ZW50U2l6ZUFm
ZmVjdGVkKQogewotICAgIHJldHVybiBzZXRIYXNTY3JvbGxiYXJJbnRlcm5hbChtX2hvcml6b250
YWxTY3JvbGxiYXIsIEhvcml6b250YWxTY3JvbGxiYXIsIGhhc0JhciwgY29udGVudFNpemVBZmZl
Y3RlZCk7CisgICAgcmV0dXJuIHNldEhhc1Njcm9sbGJhckludGVybmFsKG1faG9yaXpvbnRhbFNj
cm9sbGJhciwgU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWwsIGhhc0JhciwgY29udGVu
dFNpemVBZmZlY3RlZCk7CiB9CiAKIGJvb2wgU2Nyb2xsVmlldzo6c2V0SGFzVmVydGljYWxTY3Jv
bGxiYXIoYm9vbCBoYXNCYXIsIGJvb2wqIGNvbnRlbnRTaXplQWZmZWN0ZWQpCiB7Ci0gICAgcmV0
dXJuIHNldEhhc1Njcm9sbGJhckludGVybmFsKG1fdmVydGljYWxTY3JvbGxiYXIsIFZlcnRpY2Fs
U2Nyb2xsYmFyLCBoYXNCYXIsIGNvbnRlbnRTaXplQWZmZWN0ZWQpOworICAgIHJldHVybiBzZXRI
YXNTY3JvbGxiYXJJbnRlcm5hbChtX3ZlcnRpY2FsU2Nyb2xsYmFyLCBTY3JvbGxiYXJPcmllbnRh
dGlvbjo6VmVydGljYWwsIGhhc0JhciwgY29udGVudFNpemVBZmZlY3RlZCk7CiB9CiAKIGJvb2wg
U2Nyb2xsVmlldzo6c2V0SGFzU2Nyb2xsYmFySW50ZXJuYWwoUmVmUHRyPFNjcm9sbGJhcj4mIHNj
cm9sbGJhciwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIGJvb2wgaGFzQmFyLCBi
b29sKiBjb250ZW50U2l6ZUFmZmVjdGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuY3BwCmluZGV4IDMyZGRhY2EwYWFiZWExYzkzN2VlYTZhZmZkMTc1N2IwOTcwMTI1
YTAuLmI1NTJkNGQ4MTMxZWVlYTcwMDlkZGUzMGY0Y2MwZDZkZTcxNDExYTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTEwMSwxMCArMTAxLDEwIEBA
IGJvb2wgU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbChTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uLCBT
Y3JvbGxHcmFudWxhcml0eSBncmFudWxhCiAgICAgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50
YXRpb247CiAgICAgU2Nyb2xsYmFyKiBzY3JvbGxiYXI7CiAgICAgaWYgKGRpcmVjdGlvbiA9PSBT
Y3JvbGxVcCB8fCBkaXJlY3Rpb24gPT0gU2Nyb2xsRG93bikgewotICAgICAgICBvcmllbnRhdGlv
biA9IFZlcnRpY2FsU2Nyb2xsYmFyOworICAgICAgICBvcmllbnRhdGlvbiA9IFNjcm9sbGJhck9y
aWVudGF0aW9uOjpWZXJ0aWNhbDsKICAgICAgICAgc2Nyb2xsYmFyID0gdmVydGljYWxTY3JvbGxi
YXIoKTsKICAgICB9IGVsc2UgewotICAgICAgICBvcmllbnRhdGlvbiA9IEhvcml6b250YWxTY3Jv
bGxiYXI7CisgICAgICAgIG9yaWVudGF0aW9uID0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6
b250YWw7CiAgICAgICAgIHNjcm9sbGJhciA9IGhvcml6b250YWxTY3JvbGxiYXIoKTsKICAgICB9
CiAKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFNjcm9sbGFibGVBcmVhOjpzY3JvbGxUb09mZnNl
dFdpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgb2Zmc2V0LCBTYwogdm9pZCBTY3Jv
bGxhYmxlQXJlYTo6c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKFNjcm9sbGJhck9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uLCBmbG9hdCBvZmZzZXQpCiB7CiAgICAgYXV0byBjdXJyZW50UG9z
aXRpb24gPSBzY3JvbGxBbmltYXRvcigpLmN1cnJlbnRQb3NpdGlvbigpOwotICAgIGlmIChvcmll
bnRhdGlvbiA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKQorICAgIGlmIChvcmllbnRhdGlvbiA9PSBT
Y3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCkKICAgICAgICAgc2Nyb2xsQW5pbWF0b3Io
KS5zY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlvbihGbG9hdFBvaW50KG9mZnNldCwgY3Vy
cmVudFBvc2l0aW9uLnkoKSkpOwogICAgIGVsc2UKICAgICAgICAgc2Nyb2xsQW5pbWF0b3IoKS5z
Y3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlvbihGbG9hdFBvaW50KGN1cnJlbnRQb3NpdGlv
bi54KCksIG9mZnNldCkpOwpAQCAtMzI1LDcgKzMyNSw3IEBAIGJvb2wgU2Nyb2xsYWJsZUFyZWE6
OnNjcm9sbGJhcnNDYW5CZUFjdGl2ZSgpIGNvbnN0CiAKIHZvaWQgU2Nyb2xsYWJsZUFyZWE6OmRp
ZEFkZFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyT3JpZW50YXRpb24g
b3JpZW50YXRpb24pCiB7Ci0gICAgaWYgKG9yaWVudGF0aW9uID09IFZlcnRpY2FsU2Nyb2xsYmFy
KQorICAgIGlmIChvcmllbnRhdGlvbiA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwp
CiAgICAgICAgIHNjcm9sbGJhcnNDb250cm9sbGVyKCkuZGlkQWRkVmVydGljYWxTY3JvbGxiYXIo
c2Nyb2xsYmFyKTsKICAgICBlbHNlCiAgICAgICAgIHNjcm9sbGJhcnNDb250cm9sbGVyKCkuZGlk
QWRkSG9yaXpvbnRhbFNjcm9sbGJhcihzY3JvbGxiYXIpOwpAQCAtMzM4LDcgKzMzOCw3IEBAIHZv
aWQgU2Nyb2xsYWJsZUFyZWE6OmRpZEFkZFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhciwg
U2Nyb2xsYmFyT3JpZW50YXRpb24KIAogdm9pZCBTY3JvbGxhYmxlQXJlYTo6d2lsbFJlbW92ZVNj
cm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50
YXRpb24pCiB7Ci0gICAgaWYgKG9yaWVudGF0aW9uID09IFZlcnRpY2FsU2Nyb2xsYmFyKQorICAg
IGlmIChvcmllbnRhdGlvbiA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwpCiAgICAg
ICAgIHNjcm9sbGJhcnNDb250cm9sbGVyKCkud2lsbFJlbW92ZVZlcnRpY2FsU2Nyb2xsYmFyKHNj
cm9sbGJhcik7CiAgICAgZWxzZQogICAgICAgICBzY3JvbGxiYXJzQ29udHJvbGxlcigpLndpbGxS
ZW1vdmVIb3Jpem9udGFsU2Nyb2xsYmFyKHNjcm9sbGJhcik7CkBAIC01NjUsNyArNTY1LDcgQEAg
dm9pZCBTY3JvbGxhYmxlQXJlYTo6ZG9Qb3N0VGh1bWJNb3ZlU25hcHBpbmcoU2Nyb2xsYmFyT3Jp
ZW50YXRpb24gb3JpZW50YXRpb24pCiAKICAgICBhdXRvIGN1cnJlbnRPZmZzZXQgPSBzY3JvbGxP
ZmZzZXQoKTsKICAgICBhdXRvIG5ld09mZnNldCA9IGN1cnJlbnRPZmZzZXQ7Ci0gICAgaWYgKG9y
aWVudGF0aW9uID09IEhvcml6b250YWxTY3JvbGxiYXIpCisgICAgaWYgKG9yaWVudGF0aW9uID09
IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKQogICAgICAgICBuZXdPZmZzZXQuc2V0
WChzY3JvbGxBbmltYXRvci0+c2Nyb2xsT2Zmc2V0QWRqdXN0ZWRGb3JTbmFwcGluZyhTY3JvbGxF
dmVudEF4aXM6Okhvcml6b250YWwsIGN1cnJlbnRPZmZzZXQsIFNjcm9sbFNuYXBQb2ludFNlbGVj
dGlvbk1ldGhvZDo6Q2xvc2VzdCkpOwogICAgIGVsc2UKICAgICAgICAgbmV3T2Zmc2V0LnNldFko
c2Nyb2xsQW5pbWF0b3ItPnNjcm9sbE9mZnNldEFkanVzdGVkRm9yU25hcHBpbmcoU2Nyb2xsRXZl
bnRBeGlzOjpWZXJ0aWNhbCwgY3VycmVudE9mZnNldCwgU2Nyb2xsU25hcFBvaW50U2VsZWN0aW9u
TWV0aG9kOjpDbG9zZXN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
aAppbmRleCBmZTQyYzRlYzZlYmE0ZjA0OGY5NGZlZjU5MDQ5MzY5MGJlNTM1NjVhLi40YjM3MjVm
NTg2ZGJmNmE1ODliNzdmMTE3NTg2Mzk2NTg5ZDhhMDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmgKQEAgLTU0LDggKzU0LDggQEAgZW51bSBjbGFzcyBXaGVlbFNj
cm9sbEdlc3R1cmVTdGF0ZSA6IHVpbnQ4X3Q7CiBpbmxpbmUgaW50IG9mZnNldEZvck9yaWVudGF0
aW9uKFNjcm9sbE9mZnNldCBvZmZzZXQsIFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9u
KQogewogICAgIHN3aXRjaCAob3JpZW50YXRpb24pIHsKLSAgICBjYXNlIEhvcml6b250YWxTY3Jv
bGxiYXI6IHJldHVybiBvZmZzZXQueCgpOwotICAgIGNhc2UgVmVydGljYWxTY3JvbGxiYXI6IHJl
dHVybiBvZmZzZXQueSgpOworICAgIGNhc2UgU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250
YWw6IHJldHVybiBvZmZzZXQueCgpOworICAgIGNhc2UgU2Nyb2xsYmFyT3JpZW50YXRpb246OlZl
cnRpY2FsOiByZXR1cm4gb2Zmc2V0LnkoKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxiYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAppbmRl
eCBjOTdkZjAwZTU3MDk2Yzg1NjZiY2M0OWQ1ZDA1OWUzZWExNDM4ZTdkLi42YTRhNTc0NWEwMGZi
NzEwZWFlZTMzYjNkY2NiMDM4MDZjMTRhYTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxiYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGJhci5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIFNjcm9sbGJhcjo6c3RvcFRpbWVySWZO
ZWVkZWQoKQogCiBTY3JvbGxEaXJlY3Rpb24gU2Nyb2xsYmFyOjpwcmVzc2VkUGFydFNjcm9sbERp
cmVjdGlvbigpCiB7Ci0gICAgaWYgKG1fb3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9sbGJh
cikgeworICAgIGlmIChtX29yaWVudGF0aW9uID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jp
em9udGFsKSB7CiAgICAgICAgIGlmIChtX3ByZXNzZWRQYXJ0ID09IEJhY2tCdXR0b25TdGFydFBh
cnQgfHwgbV9wcmVzc2VkUGFydCA9PSBCYWNrQnV0dG9uRW5kUGFydCB8fCBtX3ByZXNzZWRQYXJ0
ID09IEJhY2tUcmFja1BhcnQpCiAgICAgICAgICAgICByZXR1cm4gU2Nyb2xsTGVmdDsKICAgICAg
ICAgcmV0dXJuIFNjcm9sbFJpZ2h0OwpAQCAtMjQ3LDcgKzI0Nyw3IEBAIHZvaWQgU2Nyb2xsYmFy
Ojptb3ZlVGh1bWIoaW50IHBvcywgYm9vbCBkcmFnZ2luZ0RvY3VtZW50KQogICAgICAgICAgICAg
ZGVsdGEgPSBwb3MgLSBtX2RvY3VtZW50RHJhZ1BvczsKICAgICAgICAgbV9kcmFnZ2luZ0RvY3Vt
ZW50ID0gdHJ1ZTsKICAgICAgICAgRmxvYXRQb2ludCBjdXJyZW50UG9zaXRpb24gPSBtX3Njcm9s
bGFibGVBcmVhLnNjcm9sbEFuaW1hdG9yKCkuY3VycmVudFBvc2l0aW9uKCk7Ci0gICAgICAgIGlu
dCBkZXN0aW5hdGlvblBvc2l0aW9uID0gKG1fb3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9s
bGJhciA/IGN1cnJlbnRQb3NpdGlvbi54KCkgOiBjdXJyZW50UG9zaXRpb24ueSgpKSArIGRlbHRh
OworICAgICAgICBpbnQgZGVzdGluYXRpb25Qb3NpdGlvbiA9IChtX29yaWVudGF0aW9uID09IFNj
cm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsID8gY3VycmVudFBvc2l0aW9uLngoKSA6IGN1
cnJlbnRQb3NpdGlvbi55KCkpICsgZGVsdGE7CiAgICAgICAgIGlmIChkZWx0YSA+IDApCiAgICAg
ICAgICAgICBkZXN0aW5hdGlvblBvc2l0aW9uID0gc3RkOjptaW4oZGVzdGluYXRpb25Qb3NpdGlv
biArIGRlbHRhLCBtYXhpbXVtKCkpOwogICAgICAgICBlbHNlIGlmIChkZWx0YSA8IDApCkBAIC0z
MTAsNyArMzEwLDcgQEAgYm9vbCBTY3JvbGxiYXI6Om1vdXNlTW92ZWQoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBldnQpCiAgICAgICAgIGlmICh0aGVtZSgpLnNob3VsZFNuYXBCYWNrVG9EcmFn
T3JpZ2luKCp0aGlzLCBldnQpKQogICAgICAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS5zY3JvbGxU
b09mZnNldFdpdGhvdXRBbmltYXRpb24obV9vcmllbnRhdGlvbiwgbV9kcmFnT3JpZ2luKTsKICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBtb3ZlVGh1bWIobV9vcmllbnRhdGlvbiA9PSBIb3Jp
em9udGFsU2Nyb2xsYmFyID8gCisgICAgICAgICAgICBtb3ZlVGh1bWIobV9vcmllbnRhdGlvbiA9
PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCA/CiAgICAgICAgICAgICAgICAgICAg
ICAgY29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5wb3NpdGlvbigpKS54KCkgOgogICAg
ICAgICAgICAgICAgICAgICAgIGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhldnQucG9zaXRp
b24oKSkueSgpLCB0aGVtZSgpLnNob3VsZERyYWdEb2N1bWVudEluc3RlYWRPZlRodW1iKCp0aGlz
LCBldnQpKTsKICAgICAgICAgfQpAQCAtMzE4LDcgKzMxOCw3IEBAIGJvb2wgU2Nyb2xsYmFyOjpt
b3VzZU1vdmVkKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQogICAgIH0KIAogICAgIGlm
IChtX3ByZXNzZWRQYXJ0ICE9IE5vUGFydCkKLSAgICAgICAgbV9wcmVzc2VkUG9zID0gKG9yaWVu
dGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IGNvbnZlcnRGcm9tQ29udGFpbmluZ1dp
bmRvdyhldnQucG9zaXRpb24oKSkueCgpIDogY29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2
dC5wb3NpdGlvbigpKS55KCkpOworICAgICAgICBtX3ByZXNzZWRQb3MgPSAob3JpZW50YXRpb24o
KSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCA/IGNvbnZlcnRGcm9tQ29udGFp
bmluZ1dpbmRvdyhldnQucG9zaXRpb24oKSkueCgpIDogY29udmVydEZyb21Db250YWluaW5nV2lu
ZG93KGV2dC5wb3NpdGlvbigpKS55KCkpOwogCiAgICAgU2Nyb2xsYmFyUGFydCBwYXJ0ID0gdGhl
bWUoKS5oaXRUZXN0KCp0aGlzLCBldnQucG9zaXRpb24oKSk7CiAgICAgaWYgKHBhcnQgIT0gbV9o
b3ZlcmVkUGFydCkgewpAQCAtMzg3LDcgKzM4Nyw3IEBAIGJvb2wgU2Nyb2xsYmFyOjptb3VzZURv
d24oY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCiAgICAgbV9zY3JvbGxhYmxlQXJlYS5t
b3VzZUlzRG93bkluU2Nyb2xsYmFyKHRoaXMsIHRydWUpOwogICAgIHNldFByZXNzZWRQYXJ0KHBy
ZXNzZWRQYXJ0KTsKIAotICAgIGludCBwcmVzc2VkUG9zaXRpb24gPSAob3JpZW50YXRpb24oKSA9
PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gY29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5w
b3NpdGlvbigpKS54KCkgOiBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coZXZ0LnBvc2l0aW9u
KCkpLnkoKSk7CisgICAgaW50IHByZXNzZWRQb3NpdGlvbiA9IChvcmllbnRhdGlvbigpID09IFNj
cm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsID8gY29udmVydEZyb21Db250YWluaW5nV2lu
ZG93KGV2dC5wb3NpdGlvbigpKS54KCkgOiBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coZXZ0
LnBvc2l0aW9uKCkpLnkoKSk7CiAgICAgaWYgKGFjdGlvbiA9PSBTY3JvbGxiYXJCdXR0b25QcmVz
c0FjdGlvbjo6Q2VudGVyT25UaHVtYikgewogICAgICAgICBzZXRIb3ZlcmVkUGFydChUaHVtYlBh
cnQpOwogICAgICAgICBzZXRQcmVzc2VkUGFydChUaHVtYlBhcnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCmluZGV4IDAwZTUy
NjQ1NWQxMzA5Mzc3NGY0YTdiZjI3NjlkOGYyZTliYjM4M2QuLmJjMWZiYTExOTZmNTM3ZjNmMTRj
NDc1MTc2ZTUyZmMwN2FkNjdmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAKQEAgLTE5Myw5ICsxOTMsOSBAQCB2b2lkIFNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlOjpzcGxpdFRyYWNrKFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBj
b25zdCBJbnRSZWN0JiB1bgogICAgIC8vIFRoaXMgZnVuY3Rpb24gd29uJ3QgZXZlbiBnZXQgY2Fs
bGVkIHVubGVzcyB3ZSdyZSBiaWcgZW5vdWdoIHRvIGhhdmUgc29tZSBjb21iaW5hdGlvbiBvZiB0
aGVzZSB0aHJlZSByZWN0cyB3aGVyZSBhdCBsZWFzdAogICAgIC8vIG9uZSBvZiB0aGVtIGlzIG5v
bi1lbXB0eS4KICAgICBJbnRSZWN0IHRyYWNrUmVjdCA9IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJh
Y2tQaWVjZXMoc2Nyb2xsYmFyLCB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0KTsKLSAgICBpbnQgdGhp
Y2tuZXNzID0gc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/
IHNjcm9sbGJhci5oZWlnaHQoKSA6IHNjcm9sbGJhci53aWR0aCgpOworICAgIGludCB0aGlja25l
c3MgPSBzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9y
aXpvbnRhbCA/IHNjcm9sbGJhci5oZWlnaHQoKSA6IHNjcm9sbGJhci53aWR0aCgpOwogICAgIGlu
dCB0aHVtYlBvcyA9IHRodW1iUG9zaXRpb24oc2Nyb2xsYmFyKTsKLSAgICBpZiAoc2Nyb2xsYmFy
Lm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgeworICAgIGlmIChzY3JvbGxi
YXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCkgewog
ICAgICAgICB0aHVtYlJlY3QgPSBJbnRSZWN0KHRyYWNrUmVjdC54KCkgKyB0aHVtYlBvcywgdHJh
Y2tSZWN0LnkoKSArICh0cmFja1JlY3QuaGVpZ2h0KCkgLSB0aGlja25lc3MpIC8gMiwgdGh1bWJM
ZW5ndGgoc2Nyb2xsYmFyKSwgdGhpY2tuZXNzKTsKICAgICAgICAgYmVmb3JlVGh1bWJSZWN0ID0g
SW50UmVjdCh0cmFja1JlY3QueCgpLCB0cmFja1JlY3QueSgpLCB0aHVtYlBvcyArIHRodW1iUmVj
dC53aWR0aCgpIC8gMiwgdHJhY2tSZWN0LmhlaWdodCgpKTsgCiAgICAgICAgIGFmdGVyVGh1bWJS
ZWN0ID0gSW50UmVjdCh0cmFja1JlY3QueCgpICsgYmVmb3JlVGh1bWJSZWN0LndpZHRoKCksIHRy
YWNrUmVjdC55KCksIHRyYWNrUmVjdC5tYXhYKCkgLSBiZWZvcmVUaHVtYlJlY3QubWF4WCgpLCB0
cmFja1JlY3QuaGVpZ2h0KCkpOwpAQCAtMjUxLDEzICsyNTEsMTMgQEAgaW50IFNjcm9sbGJhclRo
ZW1lQ29tcG9zaXRlOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyJiBzY3JvbGxiYXIpCiBp
bnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyJiBzY3Jv
bGxiYXIpCiB7CiAgICAgSW50UmVjdCBjb25zdHJhaW5lZFRyYWNrUmVjdCA9IGNvbnN0cmFpblRy
YWNrUmVjdFRvVHJhY2tQaWVjZXMoc2Nyb2xsYmFyLCB0cmFja1JlY3Qoc2Nyb2xsYmFyKSk7Ci0g
ICAgcmV0dXJuIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFy
KSA/IGNvbnN0cmFpbmVkVHJhY2tSZWN0LngoKSAtIHNjcm9sbGJhci54KCkgOiBjb25zdHJhaW5l
ZFRyYWNrUmVjdC55KCkgLSBzY3JvbGxiYXIueSgpOworICAgIHJldHVybiAoc2Nyb2xsYmFyLm9y
aWVudGF0aW9uKCkgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWwpID8gY29uc3Ry
YWluZWRUcmFja1JlY3QueCgpIC0gc2Nyb2xsYmFyLngoKSA6IGNvbnN0cmFpbmVkVHJhY2tSZWN0
LnkoKSAtIHNjcm9sbGJhci55KCk7CiB9CiAKIGludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6
dHJhY2tMZW5ndGgoU2Nyb2xsYmFyJiBzY3JvbGxiYXIpCiB7CiAgICAgSW50UmVjdCBjb25zdHJh
aW5lZFRyYWNrUmVjdCA9IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoc2Nyb2xsYmFy
LCB0cmFja1JlY3Qoc2Nyb2xsYmFyKSk7Ci0gICAgcmV0dXJuIChzY3JvbGxiYXIub3JpZW50YXRp
b24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSA/IGNvbnN0cmFpbmVkVHJhY2tSZWN0LndpZHRo
KCkgOiBjb25zdHJhaW5lZFRyYWNrUmVjdC5oZWlnaHQoKTsKKyAgICByZXR1cm4gKHNjcm9sbGJh
ci5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKSA/IGNv
bnN0cmFpbmVkVHJhY2tSZWN0LndpZHRoKCkgOiBjb25zdHJhaW5lZFRyYWNrUmVjdC5oZWlnaHQo
KTsKIH0KIAogSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJSZWN0KFNjcm9s
bGJhciYgc2Nyb2xsYmFyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYWR3
YWl0YS9TY3JvbGxiYXJUaGVtZUFkd2FpdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YWR3YWl0YS9TY3JvbGxiYXJUaGVtZUFkd2FpdGEuY3BwCmluZGV4IGU4NTkwMGVmNWZmMDdkMmQy
OTRmNzE4ZDViNjNiNWUzZDA0YWI3YzAuLjc4MGRiOTlhMWE3OTk0YWZmYzM1ZWU0NjVlMzU2NGVl
OWUwZWRmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Fkd2FpdGEvU2Ny
b2xsYmFyVGhlbWVBZHdhaXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hZHdh
aXRhL1Njcm9sbGJhclRoZW1lQWR3YWl0YS5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCBib29sIFNj
cm9sbGJhclRoZW1lQWR3YWl0YTo6cGFpbnQoU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIEdyYXBoaWNz
Q29udGV4dCYgZ3JhcGhpYwogICAgICAgICBncmFwaGljc0NvbnRleHQuZmlsbFJlY3QocmVjdCwg
c2Nyb2xsYmFyQmFja2dyb3VuZENvbG9yKTsKIAogICAgICAgICBJbnRSZWN0IGZyYW1lID0gcmVj
dDsKLSAgICAgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xs
YmFyKSB7CisgICAgICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJP
cmllbnRhdGlvbjo6VmVydGljYWwpIHsKICAgICAgICAgICAgIGlmIChzY3JvbGxiYXIuc2Nyb2xs
YWJsZUFyZWEoKS5zaG91bGRQbGFjZVZlcnRpY2FsU2Nyb2xsYmFyT25MZWZ0KCkpCiAgICAgICAg
ICAgICAgICAgZnJhbWUubW92ZShmcmFtZS53aWR0aCgpIC0gaG92ZXJlZFNjcm9sbGJhckJvcmRl
clNpemUsIDApOwogICAgICAgICAgICAgZnJhbWUuc2V0V2lkdGgoaG92ZXJlZFNjcm9sbGJhckJv
cmRlclNpemUpOwpAQCAtMTgyLDcgKzE4Miw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVBZHdhaXRh
OjpwYWludChTY3JvbGxiYXImIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljCiAg
ICAgICAgIGludCBvdmVybGF5VGh1bWJNYXJnaW4gPSB0aHVtYk1hcmdpbiAtIHRodW1iQm9yZGVy
U2l6ZTsKICAgICAgICAgdGh1bWJDb3JuZXJTaXplID0gb3ZlcmxheVRodW1iU2l6ZSAvIDI7CiAK
LSAgICAgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFy
KSB7CisgICAgICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmll
bnRhdGlvbjo6VmVydGljYWwpIHsKICAgICAgICAgICAgIGlmIChzY3JvbGxiYXIuc2Nyb2xsYWJs
ZUFyZWEoKS5zaG91bGRQbGFjZVZlcnRpY2FsU2Nyb2xsYmFyT25MZWZ0KCkpCiAgICAgICAgICAg
ICAgICAgdGh1bWIubW92ZSgwLCB0aHVtYlBvcyArIG92ZXJsYXlUaHVtYk1hcmdpbik7CiAgICAg
ICAgICAgICBlbHNlCkBAIC0xOTgsNyArMTk4LDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUFkd2Fp
dGE6OnBhaW50KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWMK
ICAgICAgICAgaW50IHRodW1iU2l6ZSA9IHNjcm9sbGJhclNpemUgLSBob3ZlcmVkU2Nyb2xsYmFy
Qm9yZGVyU2l6ZSAtIHRodW1iTWFyZ2luICogMjsKICAgICAgICAgdGh1bWJDb3JuZXJTaXplID0g
dGh1bWJTaXplIC8gMjsKIAotICAgICAgICBpZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0g
VmVydGljYWxTY3JvbGxiYXIpIHsKKyAgICAgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigp
ID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbCkgewogICAgICAgICAgICAgaWYgKHNj
cm9sbGJhci5zY3JvbGxhYmxlQXJlYSgpLnNob3VsZFBsYWNlVmVydGljYWxTY3JvbGxiYXJPbkxl
ZnQoKSkKICAgICAgICAgICAgICAgICB0aHVtYi5tb3ZlKHNjcm9sbGJhclNpemUgLSAoc2Nyb2xs
YmFyU2l6ZSAvIDIgKyB0aHVtYlNpemUgLyAyKSAtIGhvdmVyZWRTY3JvbGxiYXJCb3JkZXJTaXpl
LCB0aHVtYlBvcyArIHRodW1iTWFyZ2luKTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3BwCmluZGV4IGM0ZjMx
NjkyMWNkMWRjYTkyNThkMmU1NzBkMWQ5YWI3NDdhZDBhYjcuLmJkYWNhYzM0MDYyNDA2ZjRkZDdl
OWQ4OWJiNThiNTFlMGRhZDI5OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1Njcm9sbGJhclRoZW1lR3RrLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHN0YXRpYyBHdGtT
dGF0ZUZsYWdzIHNjcm9sbGJhclBhcnRTdGF0ZUZsYWdzKFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBT
Y3JvbGxiYXJQYXJ0CiAKIHN0YXRpYyBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6VHlwZSB3aWRnZXRU
eXBlRm9yU2Nyb2xsYmFyKFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBHdGtTdGF0ZUZsYWdzIHNjcm9s
bGJhclN0YXRlKQogewotICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBWZXJ0aWNh
bFNjcm9sbGJhcikgeworICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxi
YXJPcmllbnRhdGlvbjo6VmVydGljYWwpIHsKICAgICAgICAgaWYgKHNjcm9sbGJhci5zY3JvbGxh
YmxlQXJlYSgpLnNob3VsZFBsYWNlVmVydGljYWxTY3JvbGxiYXJPbkxlZnQoKSkKICAgICAgICAg
ICAgIHJldHVybiBzY3JvbGxiYXJTdGF0ZSAmIEdUS19TVEFURV9GTEFHX1BSRUxJR0hUID8gUmVu
ZGVyVGhlbWVTY3JvbGxiYXI6OlR5cGU6OlZlcnRpY2FsU2Nyb2xsYmFyTGVmdCA6IFJlbmRlclRo
ZW1lU2Nyb2xsYmFyOjpUeXBlOjpWZXJ0aWNhbFNjcm9sbEluZGljYXRvckxlZnQ7CiAgICAgICAg
IHJldHVybiBzY3JvbGxiYXJTdGF0ZSAmIEdUS19TVEFURV9GTEFHX1BSRUxJR0hUID8gUmVuZGVy
VGhlbWVTY3JvbGxiYXI6OlR5cGU6OlZlcnRpY2FsU2Nyb2xsYmFyUmlnaHQgOiBSZW5kZXJUaGVt
ZVNjcm9sbGJhcjo6VHlwZTo6VmVydGljYWxTY3JvbGxJbmRpY2F0b3JSaWdodDsKQEAgLTE3Nyw3
ICsxNzcsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjp0cmFja1JlY3QoU2Nyb2xsYmFy
JiBzY3JvbGxiYXIsIGJvb2wgcGFpbnRpbmcpCiAgICAgaWYgKGF1dG8qIGJhY2t3YXJkU3RlcHBl
ciA9IHNjcm9sbGJhcldpZGdldC5zdGVwcGVyKFJlbmRlclRoZW1lU2Nyb2xsYmFyR2FkZ2V0OjpT
dGVwcGVyczo6QmFja3dhcmQpKSB7CiAgICAgICAgIGJhY2t3YXJkU3RlcHBlci0+c2V0U3RhdGUo
c2Nyb2xsYmFyUGFydFN0YXRlRmxhZ3Moc2Nyb2xsYmFyLCBCYWNrQnV0dG9uU3RhcnRQYXJ0KSk7
CiAgICAgICAgIEludFNpemUgc3RlcHBlclNpemUgPSBiYWNrd2FyZFN0ZXBwZXItPnByZWZlcnJl
ZFNpemUoKTsKLSAgICAgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFZlcnRpY2Fs
U2Nyb2xsYmFyKSB7CisgICAgICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3Jv
bGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwpIHsKICAgICAgICAgICAgIHJlY3QubW92ZSgwLCBz
dGVwcGVyU2l6ZS5oZWlnaHQoKSk7CiAgICAgICAgICAgICByZWN0LmNvbnRyYWN0KDAsIHN0ZXBw
ZXJTaXplLmhlaWdodCgpKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTE4OCw3ICsxODgsNyBAQCBJ
bnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjp0cmFja1JlY3QoU2Nyb2xsYmFyJiBzY3JvbGxiYXIs
IGJvb2wgcGFpbnRpbmcpCiAgICAgaWYgKGF1dG8qIHNlY29uZGFyeUZvcndhcmRTdGVwcGVyID0g
c2Nyb2xsYmFyV2lkZ2V0LnN0ZXBwZXIoUmVuZGVyVGhlbWVTY3JvbGxiYXJHYWRnZXQ6OlN0ZXBw
ZXJzOjpTZWNvbmRhcnlGb3J3YXJkKSkgewogICAgICAgICBzZWNvbmRhcnlGb3J3YXJkU3RlcHBl
ci0+c2V0U3RhdGUoc2Nyb2xsYmFyUGFydFN0YXRlRmxhZ3Moc2Nyb2xsYmFyLCBGb3J3YXJkQnV0
dG9uU3RhcnRQYXJ0KSk7CiAgICAgICAgIEludFNpemUgc3RlcHBlclNpemUgPSBzZWNvbmRhcnlG
b3J3YXJkU3RlcHBlci0+cHJlZmVycmVkU2l6ZSgpOwotICAgICAgICBpZiAoc2Nyb2xsYmFyLm9y
aWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIpIHsKKyAgICAgICAgaWYgKHNjcm9sbGJh
ci5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbCkgewogICAg
ICAgICAgICAgcmVjdC5tb3ZlKDAsIHN0ZXBwZXJTaXplLmhlaWdodCgpKTsKICAgICAgICAgICAg
IHJlY3QuY29udHJhY3QoMCwgc3RlcHBlclNpemUuaGVpZ2h0KCkpOwogICAgICAgICB9IGVsc2Ug
ewpAQCAtMTk4LDIwICsxOTgsMjAgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6dHJhY2tS
ZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBib29sIHBhaW50aW5nKQogICAgIH0KICAgICBpZiAo
YXV0byogc2Vjb25kYXJ5QmFja3dhcmRTdGVwcGVyID0gc2Nyb2xsYmFyV2lkZ2V0LnN0ZXBwZXIo
UmVuZGVyVGhlbWVTY3JvbGxiYXJHYWRnZXQ6OlN0ZXBwZXJzOjpTZWNvbmRhcnlCYWNrd2FyZCkp
IHsKICAgICAgICAgc2Vjb25kYXJ5QmFja3dhcmRTdGVwcGVyLT5zZXRTdGF0ZShzY3JvbGxiYXJQ
YXJ0U3RhdGVGbGFncyhzY3JvbGxiYXIsIEJhY2tCdXR0b25FbmRQYXJ0KSk7Ci0gICAgICAgIGlm
IChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikKKyAgICAgICAg
aWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0
aWNhbCkKICAgICAgICAgICAgIHJlY3QuY29udHJhY3QoMCwgc2Vjb25kYXJ5QmFja3dhcmRTdGVw
cGVyLT5wcmVmZXJyZWRTaXplKCkuaGVpZ2h0KCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICByZWN0LmNvbnRyYWN0KHNlY29uZGFyeUJhY2t3YXJkU3RlcHBlci0+cHJlZmVycmVkU2l6ZSgp
LndpZHRoKCksIDApOwogICAgIH0KICAgICBpZiAoYXV0byogZm9yd2FyZFN0ZXBwZXIgPSBzY3Jv
bGxiYXJXaWRnZXQuc3RlcHBlcihSZW5kZXJUaGVtZVNjcm9sbGJhckdhZGdldDo6U3RlcHBlcnM6
OkZvcndhcmQpKSB7CiAgICAgICAgIGZvcndhcmRTdGVwcGVyLT5zZXRTdGF0ZShzY3JvbGxiYXJQ
YXJ0U3RhdGVGbGFncyhzY3JvbGxiYXIsIEZvcndhcmRCdXR0b25FbmRQYXJ0KSk7Ci0gICAgICAg
IGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikKKyAgICAg
ICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpW
ZXJ0aWNhbCkKICAgICAgICAgICAgIHJlY3QuY29udHJhY3QoMCwgZm9yd2FyZFN0ZXBwZXItPnBy
ZWZlcnJlZFNpemUoKS5oZWlnaHQoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlY3Qu
Y29udHJhY3QoZm9yd2FyZFN0ZXBwZXItPnByZWZlcnJlZFNpemUoKS53aWR0aCgpLCAwKTsKICAg
ICB9CiAKLSAgICBpZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxi
YXIpCisgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0
aW9uOjpWZXJ0aWNhbCkKICAgICAgICAgcmV0dXJuIHNjcm9sbGJhci5oZWlnaHQoKSA8IHJlY3Qu
aGVpZ2h0KCkgPyBJbnRSZWN0KCkgOiByZWN0OwogCiAgICAgcmV0dXJuIHNjcm9sbGJhci53aWR0
aCgpIDwgcmVjdC53aWR0aCgpID8gSW50UmVjdCgpIDogcmVjdDsKQEAgLTI0MSw3ICsyNDEsNyBA
QCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXImIHNj
cm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYQogICAgIGlmIChhdXRvKiBzZWNvbmRhcnlGb3J3YXJk
U3RlcHBlciA9IHNjcm9sbGJhcldpZGdldC5zdGVwcGVyKFJlbmRlclRoZW1lU2Nyb2xsYmFyR2Fk
Z2V0OjpTdGVwcGVyczo6U2Vjb25kYXJ5Rm9yd2FyZCkpIHsKICAgICAgICAgc2Vjb25kYXJ5Rm9y
d2FyZFN0ZXBwZXItPnNldFN0YXRlKHNjcm9sbGJhclBhcnRTdGF0ZUZsYWdzKHNjcm9sbGJhciwg
Rm9yd2FyZEJ1dHRvblN0YXJ0UGFydCkpOwogICAgICAgICBJbnRTaXplIHByZWZlcnJlZFNpemUg
PSBzZWNvbmRhcnlGb3J3YXJkU3RlcHBlci0+cHJlZmVycmVkU2l6ZSgpOwotICAgICAgICBpZiAo
c2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIpIHsKKyAgICAgICAg
aWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0
aWNhbCkgewogICAgICAgICAgICAgcmVjdC5tb3ZlKDAsIHByZWZlcnJlZFNpemUuaGVpZ2h0KCkp
OwogICAgICAgICAgICAgcmVjdC5jb250cmFjdCgwLCBwcmVmZXJyZWRTaXplLmhlaWdodCgpKTsK
ICAgICAgICAgfSBlbHNlIHsKQEAgLTI1Miw3ICsyNTIsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRo
ZW1lR3RrOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXImIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFy
dCBwYQogCiAgICAgaWYgKGF1dG8qIHNlY29uZGFyeUJhY2t3YXJkU3RlcHBlciA9IHNjcm9sbGJh
cldpZGdldC5zdGVwcGVyKFJlbmRlclRoZW1lU2Nyb2xsYmFyR2FkZ2V0OjpTdGVwcGVyczo6U2Vj
b25kYXJ5QmFja3dhcmQpKSB7CiAgICAgICAgIHNlY29uZGFyeUJhY2t3YXJkU3RlcHBlci0+c2V0
U3RhdGUoc2Nyb2xsYmFyUGFydFN0YXRlRmxhZ3Moc2Nyb2xsYmFyLCBCYWNrQnV0dG9uRW5kUGFy
dCkpOwotICAgICAgICBpZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3Jv
bGxiYXIpCisgICAgICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJP
cmllbnRhdGlvbjo6VmVydGljYWwpCiAgICAgICAgICAgICByZWN0LmNvbnRyYWN0KDAsIHNlY29u
ZGFyeUJhY2t3YXJkU3RlcHBlci0+cHJlZmVycmVkU2l6ZSgpLmhlaWdodCgpKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgcmVjdC5jb250cmFjdChzZWNvbmRhcnlCYWNrd2FyZFN0ZXBwZXIt
PnByZWZlcnJlZFNpemUoKS53aWR0aCgpLCAwKTsKQEAgLTI2Miw3ICsyNjIsNyBAQCBJbnRSZWN0
IFNjcm9sbGJhclRoZW1lR3RrOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXImIHNjcm9sbGJhciwg
U2Nyb2xsYmFyUGFydCBwYQogICAgIEFTU0VSVChmb3J3YXJkU3RlcHBlcik7CiAgICAgZm9yd2Fy
ZFN0ZXBwZXItPnNldFN0YXRlKHNjcm9sbGJhclBhcnRTdGF0ZUZsYWdzKHNjcm9sbGJhciwgRm9y
d2FyZEJ1dHRvbkVuZFBhcnQpKTsKICAgICBJbnRTaXplIHByZWZlcnJlZFNpemUgPSBmb3J3YXJk
U3RlcHBlci0+cHJlZmVycmVkU2l6ZSgpOwotICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24o
KSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikKKyAgICBpZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkg
PT0gU2Nyb2xsYmFyT3JpZW50YXRpb246OlZlcnRpY2FsKQogICAgICAgICByZWN0Lm1vdmUoMCwg
cmVjdC5oZWlnaHQoKSAtIHByZWZlcnJlZFNpemUuaGVpZ2h0KCkpOwogICAgIGVsc2UKICAgICAg
ICAgcmVjdC5tb3ZlKHJlY3Qud2lkdGgoKSAtIHByZWZlcnJlZFNpemUud2lkdGgoKSwgMCk7CkBA
IC0yODcsNyArMjg3LDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6Zm9yd2FyZEJ1dHRv
blJlY3QoU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQKICAgICBpZiAoYXV0byog
YmFja3dhcmRTdGVwcGVyID0gc2Nyb2xsYmFyV2lkZ2V0LnN0ZXBwZXIoUmVuZGVyVGhlbWVTY3Jv
bGxiYXJHYWRnZXQ6OlN0ZXBwZXJzOjpCYWNrd2FyZCkpIHsKICAgICAgICAgYmFja3dhcmRTdGVw
cGVyLT5zZXRTdGF0ZShzY3JvbGxiYXJQYXJ0U3RhdGVGbGFncyhzY3JvbGxiYXIsIEJhY2tCdXR0
b25TdGFydFBhcnQpKTsKICAgICAgICAgSW50U2l6ZSBwcmVmZXJyZWRTaXplID0gYmFja3dhcmRT
dGVwcGVyLT5wcmVmZXJyZWRTaXplKCk7Ci0gICAgICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRp
b24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikgeworICAgICAgICBpZiAoc2Nyb2xsYmFyLm9yaWVu
dGF0aW9uKCkgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246OlZlcnRpY2FsKSB7CiAgICAgICAgICAg
ICByZWN0Lm1vdmUoMCwgcHJlZmVycmVkU2l6ZS5oZWlnaHQoKSk7CiAgICAgICAgICAgICByZWN0
LmNvbnRyYWN0KDAsIHByZWZlcnJlZFNpemUuaGVpZ2h0KCkpOwogICAgICAgICB9IGVsc2UgewpA
QCAtMzAyLDcgKzMwMiw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OmZvcndhcmRCdXR0
b25SZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0CiAgICAgICAgIGlmIChw
YXJ0ID09IEZvcndhcmRCdXR0b25TdGFydFBhcnQpCiAgICAgICAgICAgICByZXR1cm4gSW50UmVj
dChyZWN0LmxvY2F0aW9uKCksIHByZWZlcnJlZFNpemUpOwogCi0gICAgICAgIGlmIChzY3JvbGxi
YXIub3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikgeworICAgICAgICBpZiAoc2Ny
b2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246OlZlcnRpY2FsKSB7
CiAgICAgICAgICAgICByZWN0Lm1vdmUoMCwgcHJlZmVycmVkU2l6ZS5oZWlnaHQoKSk7CiAgICAg
ICAgICAgICByZWN0LmNvbnRyYWN0KDAsIHByZWZlcnJlZFNpemUuaGVpZ2h0KCkpOwogICAgICAg
ICB9IGVsc2UgewpAQCAtMzE1LDcgKzMxNSw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6
OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0CiAg
ICAgQVNTRVJUKGZvcndhcmRTdGVwcGVyKTsKICAgICBmb3J3YXJkU3RlcHBlci0+c2V0U3RhdGUo
c2Nyb2xsYmFyUGFydFN0YXRlRmxhZ3Moc2Nyb2xsYmFyLCBGb3J3YXJkQnV0dG9uRW5kUGFydCkp
OwogICAgIEludFNpemUgcHJlZmVycmVkU2l6ZSA9IGZvcndhcmRTdGVwcGVyLT5wcmVmZXJyZWRT
aXplKCk7Ci0gICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xs
YmFyKQorICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRh
dGlvbjo6VmVydGljYWwpCiAgICAgICAgIHJlY3QubW92ZSgwLCByZWN0LmhlaWdodCgpIC0gcHJl
ZmVycmVkU2l6ZS5oZWlnaHQoKSk7CiAgICAgZWxzZQogICAgICAgICByZWN0Lm1vdmUocmVjdC53
aWR0aCgpIC0gcHJlZmVycmVkU2l6ZS53aWR0aCgpLCAwKTsKQEAgLTM3OCw3ICszNzgsNyBAQCBi
b29sIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludChTY3JvbGxiYXImIHNjcm9sbGJhciwgR3JhcGhp
Y3NDb250ZXh0JiBncmFwaGljc0NvbgogICAgIEZsb2F0UmVjdCBjb250ZW50c1JlY3QocmVjdCk7
CiAgICAgLy8gV2hlbiB1c2luZyBvdmVybGF5IHNjcm9sbGJhcnMgd2UgYWx3YXlzIGNsYWltIHRo
ZSBzaXplIG9mIHRoZSBzY3JvbGxiYXIgd2hlbiBob3ZlcmVkLCBzbyB3aGVuCiAgICAgLy8gZHJh
d2luZyB0aGUgaW5kaWNhdG9yIHdlIG5lZWQgdG8gYWRqdXN0IHRoZSByZWN0YW5nbGUgdG8gaXRz
IGFjdHVhbCBzaXplIGluIGluZGljYXRvciBtb2RlLgotICAgIGlmIChzY3JvbGxiYXIub3JpZW50
YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikgeworICAgIGlmIChzY3JvbGxiYXIub3JpZW50
YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwpIHsKICAgICAgICAgaWYg
KHJlY3Qud2lkdGgoKSAhPSBwcmVmZXJyZWRTaXplLndpZHRoKCkpIHsKICAgICAgICAgICAgIGlm
ICghc2Nyb2xsYmFyLnNjcm9sbGFibGVBcmVhKCkuc2hvdWxkUGxhY2VWZXJ0aWNhbFNjcm9sbGJh
ck9uTGVmdCgpKQogICAgICAgICAgICAgICAgIGNvbnRlbnRzUmVjdC5tb3ZlKHN0ZDo6YWJzKHJl
Y3Qud2lkdGgoKSAtIHByZWZlcnJlZFNpemUud2lkdGgoKSksIDApOwpAQCAtNDAyLDEzICs0MDIs
MTMgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnQoU2Nyb2xsYmFyJiBzY3JvbGxiYXIs
IEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb24KIAogICAgIGlmIChiYWNrd2FyZFN0ZXBwZXIp
IHsKICAgICAgICAgRmxvYXRSZWN0IGJ1dHRvblJlY3QgPSBjb250ZW50c1JlY3Q7Ci0gICAgICAg
IGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikKKyAgICAg
ICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpW
ZXJ0aWNhbCkKICAgICAgICAgICAgIGJ1dHRvblJlY3Quc2V0SGVpZ2h0KGJhY2t3YXJkU3RlcHBl
ci0+cHJlZmVycmVkU2l6ZSgpLmhlaWdodCgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
YnV0dG9uUmVjdC5zZXRXaWR0aChiYWNrd2FyZFN0ZXBwZXItPnByZWZlcnJlZFNpemUoKS53aWR0
aCgpKTsKICAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVTY3JvbGxiYXJHYWRnZXQmPihz
Y3JvbGxiYXJHYWRnZXQpLnJlbmRlclN0ZXBwZXIoZ3JhcGhpY3NDb250ZXh0LnBsYXRmb3JtQ29u
dGV4dCgpLT5jcigpLCBidXR0b25SZWN0LCBiYWNrd2FyZFN0ZXBwZXIsCi0gICAgICAgICAgICBz
Y3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhciA/IEdUS19PUklFTlRB
VElPTl9WRVJUSUNBTCA6IEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCBSZW5kZXJUaGVtZVNj
cm9sbGJhckdhZGdldDo6U3RlcHBlcnM6OkJhY2t3YXJkKTsKLSAgICAgICAgaWYgKHNjcm9sbGJh
ci5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKSB7CisgICAgICAgICAgICBzY3Jv
bGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwgPyBH
VEtfT1JJRU5UQVRJT05fVkVSVElDQUwgOiBHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgUmVu
ZGVyVGhlbWVTY3JvbGxiYXJHYWRnZXQ6OlN0ZXBwZXJzOjpCYWNrd2FyZCk7CisgICAgICAgIGlm
IChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGlj
YWwpIHsKICAgICAgICAgICAgIGNvbnRlbnRzUmVjdC5tb3ZlKDAsIGJ1dHRvblJlY3QuaGVpZ2h0
KCkpOwogICAgICAgICAgICAgY29udGVudHNSZWN0LmNvbnRyYWN0KDAsIGJ1dHRvblJlY3QuaGVp
Z2h0KCkpOwogICAgICAgICB9IGVsc2UgewpAQCAtNDE4LDEzICs0MTgsMTMgQEAgYm9vbCBTY3Jv
bGxiYXJUaGVtZUd0azo6cGFpbnQoU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4
dCYgZ3JhcGhpY3NDb24KICAgICB9CiAgICAgaWYgKHNlY29uZGFyeUZvcndhcmRTdGVwcGVyKSB7
CiAgICAgICAgIEZsb2F0UmVjdCBidXR0b25SZWN0ID0gY29udGVudHNSZWN0OwotICAgICAgICBp
ZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIpCisgICAgICAg
IGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVy
dGljYWwpCiAgICAgICAgICAgICBidXR0b25SZWN0LnNldEhlaWdodChzZWNvbmRhcnlGb3J3YXJk
U3RlcHBlci0+cHJlZmVycmVkU2l6ZSgpLmhlaWdodCgpKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgYnV0dG9uUmVjdC5zZXRXaWR0aChzZWNvbmRhcnlGb3J3YXJkU3RlcHBlci0+cHJlZmVy
cmVkU2l6ZSgpLndpZHRoKCkpOwogICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZVNjcm9s
bGJhckdhZGdldCY+KHNjcm9sbGJhckdhZGdldCkucmVuZGVyU3RlcHBlcihncmFwaGljc0NvbnRl
eHQucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGJ1dHRvblJlY3QsIHNlY29uZGFyeUZvcndhcmRT
dGVwcGVyLAotICAgICAgICAgICAgc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxT
Y3JvbGxiYXIgPyBHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwgOiBHVEtfT1JJRU5UQVRJT05fSE9S
SVpPTlRBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXJHYWRnZXQ6OlN0ZXBwZXJzOjpTZWNvbmRhcnlG
b3J3YXJkKTsKLSAgICAgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFZlcnRpY2Fs
U2Nyb2xsYmFyKSB7CisgICAgICAgICAgICBzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3Jv
bGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwgPyBHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwgOiBH
VEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXJHYWRnZXQ6OlN0
ZXBwZXJzOjpTZWNvbmRhcnlGb3J3YXJkKTsKKyAgICAgICAgaWYgKHNjcm9sbGJhci5vcmllbnRh
dGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbCkgewogICAgICAgICAgICAg
Y29udGVudHNSZWN0Lm1vdmUoMCwgYnV0dG9uUmVjdC5oZWlnaHQoKSk7CiAgICAgICAgICAgICBj
b250ZW50c1JlY3QuY29udHJhY3QoMCwgYnV0dG9uUmVjdC5oZWlnaHQoKSk7CiAgICAgICAgIH0g
ZWxzZSB7CkBAIC00MzQsNyArNDM0LDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnQo
U2Nyb2xsYmFyJiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb24KICAgICB9
CiAgICAgaWYgKHNlY29uZGFyeUJhY2t3YXJkU3RlcHBlcikgewogICAgICAgICBGbG9hdFJlY3Qg
YnV0dG9uUmVjdCA9IGNvbnRlbnRzUmVjdDsKLSAgICAgICAgaWYgKHNjcm9sbGJhci5vcmllbnRh
dGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKSB7CisgICAgICAgIGlmIChzY3JvbGxiYXIub3Jp
ZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwpIHsKICAgICAgICAg
ICAgIGJ1dHRvblJlY3Quc2V0SGVpZ2h0KHNlY29uZGFyeUJhY2t3YXJkU3RlcHBlci0+cHJlZmVy
cmVkU2l6ZSgpLmhlaWdodCgpKTsKICAgICAgICAgICAgIGJ1dHRvblJlY3QubW92ZSgwLCBjb250
ZW50c1JlY3QuaGVpZ2h0KCkgLSBidXR0b25SZWN0LmhlaWdodCgpKTsKICAgICAgICAgfSBlbHNl
IHsKQEAgLTQ0MiwxNSArNDQyLDE1IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50KFNj
cm9sbGJhciYgc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29uCiAgICAgICAg
ICAgICBidXR0b25SZWN0Lm1vdmUoY29udGVudHNSZWN0LndpZHRoKCkgLSBidXR0b25SZWN0Lndp
ZHRoKCksIDApOwogICAgICAgICB9CiAgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1lU2Ny
b2xsYmFyR2FkZ2V0Jj4oc2Nyb2xsYmFyR2FkZ2V0KS5yZW5kZXJTdGVwcGVyKGdyYXBoaWNzQ29u
dGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgYnV0dG9uUmVjdCwgc2Vjb25kYXJ5QmFja3dh
cmRTdGVwcGVyLAotICAgICAgICAgICAgc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gVmVydGlj
YWxTY3JvbGxiYXIgPyBHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwgOiBHVEtfT1JJRU5UQVRJT05f
SE9SSVpPTlRBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXJHYWRnZXQ6OlN0ZXBwZXJzOjpTZWNvbmRh
cnlCYWNrd2FyZCk7Ci0gICAgICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBWZXJ0
aWNhbFNjcm9sbGJhcikKKyAgICAgICAgICAgIHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFNj
cm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbCA/IEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCA6
IEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCBSZW5kZXJUaGVtZVNjcm9sbGJhckdhZGdldDo6
U3RlcHBlcnM6OlNlY29uZGFyeUJhY2t3YXJkKTsKKyAgICAgICAgaWYgKHNjcm9sbGJhci5vcmll
bnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbCkKICAgICAgICAgICAg
IGNvbnRlbnRzUmVjdC5jb250cmFjdCgwLCBidXR0b25SZWN0LmhlaWdodCgpKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgY29udGVudHNSZWN0LmNvbnRyYWN0KGJ1dHRvblJlY3Qud2lkdGgo
KSwgMCk7CiAgICAgfQogICAgIGlmIChmb3J3YXJkU3RlcHBlcikgewogICAgICAgICBGbG9hdFJl
Y3QgYnV0dG9uUmVjdCA9IGNvbnRlbnRzUmVjdDsKLSAgICAgICAgaWYgKHNjcm9sbGJhci5vcmll
bnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKSB7CisgICAgICAgIGlmIChzY3JvbGxiYXIu
b3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwpIHsKICAgICAg
ICAgICAgIGJ1dHRvblJlY3Quc2V0SGVpZ2h0KGZvcndhcmRTdGVwcGVyLT5wcmVmZXJyZWRTaXpl
KCkuaGVpZ2h0KCkpOwogICAgICAgICAgICAgYnV0dG9uUmVjdC5tb3ZlKDAsIGNvbnRlbnRzUmVj
dC5oZWlnaHQoKSAtIGJ1dHRvblJlY3QuaGVpZ2h0KCkpOwogICAgICAgICB9IGVsc2UgewpAQCAt
NDU4LDggKzQ1OCw4IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50KFNjcm9sbGJhciYg
c2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29uCiAgICAgICAgICAgICBidXR0
b25SZWN0Lm1vdmUoY29udGVudHNSZWN0LndpZHRoKCkgLSBidXR0b25SZWN0LndpZHRoKCksIDAp
OwogICAgICAgICB9CiAgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1lU2Nyb2xsYmFyR2Fk
Z2V0Jj4oc2Nyb2xsYmFyR2FkZ2V0KS5yZW5kZXJTdGVwcGVyKGdyYXBoaWNzQ29udGV4dC5wbGF0
Zm9ybUNvbnRleHQoKS0+Y3IoKSwgYnV0dG9uUmVjdCwgZm9yd2FyZFN0ZXBwZXIsCi0gICAgICAg
ICAgICBzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhciA/IEdUS19P
UklFTlRBVElPTl9WRVJUSUNBTCA6IEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCBSZW5kZXJU
aGVtZVNjcm9sbGJhckdhZGdldDo6U3RlcHBlcnM6OkZvcndhcmQpOwotICAgICAgICBpZiAoc2Ny
b2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIpCisgICAgICAgICAgICBz
Y3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwg
PyBHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwgOiBHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwg
UmVuZGVyVGhlbWVTY3JvbGxiYXJHYWRnZXQ6OlN0ZXBwZXJzOjpGb3J3YXJkKTsKKyAgICAgICAg
aWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0
aWNhbCkKICAgICAgICAgICAgIGNvbnRlbnRzUmVjdC5jb250cmFjdCgwLCBidXR0b25SZWN0Lmhl
aWdodCgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29udGVudHNSZWN0LmNvbnRyYWN0
KGJ1dHRvblJlY3Qud2lkdGgoKSwgMCk7CkBAIC00NjgsNyArNDY4LDcgQEAgYm9vbCBTY3JvbGxi
YXJUaGVtZUd0azo6cGFpbnQoU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCYg
Z3JhcGhpY3NDb24KICAgICB0cm91Z2gucmVuZGVyKGdyYXBoaWNzQ29udGV4dC5wbGF0Zm9ybUNv
bnRleHQoKS0+Y3IoKSwgY29udGVudHNSZWN0LCAmY29udGVudHNSZWN0KTsKIAogICAgIGlmICh0
aHVtYlNpemUpIHsKLSAgICAgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFZlcnRp
Y2FsU2Nyb2xsYmFyKSB7CisgICAgICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBT
Y3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwpIHsKICAgICAgICAgICAgIGNvbnRlbnRzUmVj
dC5tb3ZlKDAsIHRodW1iUG9zaXRpb24oc2Nyb2xsYmFyKSk7CiAgICAgICAgICAgICBjb250ZW50
c1JlY3Quc2V0V2lkdGgoc2Nyb2xsYmFyV2lkZ2V0LnNsaWRlcigpLnByZWZlcnJlZFNpemUoKS53
aWR0aCgpKTsKICAgICAgICAgICAgIGNvbnRlbnRzUmVjdC5zZXRIZWlnaHQodGh1bWJTaXplKTsK
QEAgLTU0MSw3ICs1NDEsNyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVHdGs6Om1pbmltdW1UaHVtYkxl
bmd0aChTY3JvbGxiYXImIHNjcm9sbGJhcikKICAgICBhdXRvJiBzY3JvbGxiYXJXaWRnZXQgPSBz
dGF0aWNfY2FzdDxSZW5kZXJUaGVtZVNjcm9sbGJhciY+KFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpn
ZXRPckNyZWF0ZShSZW5kZXJUaGVtZVNjcm9sbGJhcjo6VHlwZTo6VmVydGljYWxTY3JvbGxiYXJS
aWdodCkpOwogICAgIHNjcm9sbGJhcldpZGdldC5zY3JvbGxiYXIoKS5zZXRTdGF0ZShHVEtfU1RB
VEVfRkxBR19QUkVMSUdIVCk7CiAgICAgSW50U2l6ZSBtaW5TaXplID0gc2Nyb2xsYmFyV2lkZ2V0
LnNsaWRlcigpLm1pbmltdW1TaXplKCk7Ci0gICAgcmV0dXJuIHNjcm9sbGJhci5vcmllbnRhdGlv
bigpID09IFZlcnRpY2FsU2Nyb2xsYmFyID8gbWluU2l6ZS5oZWlnaHQoKSA6IG1pblNpemUud2lk
dGgoKTsKKyAgICByZXR1cm4gc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gU2Nyb2xsYmFyT3Jp
ZW50YXRpb246OlZlcnRpY2FsID8gbWluU2l6ZS5oZWlnaHQoKSA6IG1pblNpemUud2lkdGgoKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCmluZGV4IDM0ZjIyNmY5OGI5ZWIxODFjNWE2NDhk
YThmNjU3ZDUwYTMwMGNmNjUuLjJlNTA3Nzk2ODViNzFmZWIyMmJiYjczYzdlNWY1MDI1ZDQ5NTUx
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVt
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVN
YWMubW0KQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lTWFjOjpyZWdpc3Rl
clNjcm9sbGJhcihTY3JvbGxiYXImIHNjcm9sbGJhcikKICAgICBpZiAoc2Nyb2xsYmFyLmlzQ3Vz
dG9tU2Nyb2xsYmFyKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgaXNIb3Jpem9udGFs
ID0gc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcjsKKyAgICBi
b29sIGlzSG9yaXpvbnRhbCA9IHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9y
aWVudGF0aW9uOjpIb3Jpem9udGFsOwogICAgIGF1dG8gc2Nyb2xsZXJJbXAgPSByZXRhaW5QdHIo
W05TU2Nyb2xsZXJJbXAgc2Nyb2xsZXJJbXBXaXRoU3R5bGU6U2Nyb2xsZXJTdHlsZTo6cmVjb21t
ZW5kZWRTY3JvbGxlclN0eWxlKCkgY29udHJvbFNpemU6c2Nyb2xsYmFyQ29udHJvbFNpemVUb05T
Q29udHJvbFNpemUoc2Nyb2xsYmFyLmNvbnRyb2xTaXplKCkpIGhvcml6b250YWw6aXNIb3Jpem9u
dGFsIHJlcGxhY2luZ1Njcm9sbGVySW1wOm5pbF0pOwogICAgIHNjcm9sbGJhck1hcCgpLmFkZCgm
c2Nyb2xsYmFyLCBXVEZNb3ZlKHNjcm9sbGVySW1wKSk7CiAgICAgZGlkQ3JlYXRlU2Nyb2xsZXJJ
bXAoc2Nyb2xsYmFyKTsKQEAgLTI5NSw3ICsyOTUsNyBAQCBpbmxpbmUgY29uc3RleHByIHVuc2ln
bmVkIHNjcm9sbGJhclNpemVUb0luZGV4KFNjcm9sbGJhckNvbnRyb2xTaXplIHNjcm9sbGJhclNp
egogCiBib29sIFNjcm9sbGJhclRoZW1lTWFjOjpoYXNCdXR0b25zKFNjcm9sbGJhciYgc2Nyb2xs
YmFyKQogewotICAgIGlmIChzY3JvbGxiYXIuZW5hYmxlZCgpICYmIGJ1dHRvbnNQbGFjZW1lbnQo
KSAhPSBTY3JvbGxiYXJCdXR0b25zTm9uZSAmJiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0g
SG9yaXpvbnRhbFNjcm9sbGJhcikpCisgICAgaWYgKHNjcm9sbGJhci5lbmFibGVkKCkgJiYgYnV0
dG9uc1BsYWNlbWVudCgpICE9IFNjcm9sbGJhckJ1dHRvbnNOb25lICYmIChzY3JvbGxiYXIub3Jp
ZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCkpCiAgICAgICAg
IHJldHVybiBzY3JvbGxiYXIud2lkdGgoKTsKICAgICByZXR1cm4gc2Nyb2xsYmFyLmhlaWdodCgp
ID49IDIgKiAoY1JlYWxCdXR0b25MZW5ndGhbc2Nyb2xsYmFyU2l6ZVRvSW5kZXgoc2Nyb2xsYmFy
LmNvbnRyb2xTaXplKCkpXSAtIGNCdXR0b25IaXRJbnNldFtzY3JvbGxiYXJTaXplVG9JbmRleChz
Y3JvbGxiYXIuY29udHJvbFNpemUoKSldKTsKIH0KQEAgLTMwOCw3ICszMDgsNyBAQCBib29sIFNj
cm9sbGJhclRoZW1lTWFjOjpoYXNUaHVtYihTY3JvbGxiYXImIHNjcm9sbGJhcikKICAgICBtaW5M
ZW5ndGhGb3JUaHVtYiA9IFtwYWludGVyIGtub2JNaW5MZW5ndGhdICsgW3BhaW50ZXIgdHJhY2tP
dmVybGFwRW5kSW5zZXRdICsgW3BhaW50ZXIga25vYk92ZXJsYXBFbmRJbnNldF0KICAgICAgICAg
KyAyICogKFtwYWludGVyIHRyYWNrRW5kSW5zZXRdICsgW3BhaW50ZXIga25vYkVuZEluc2V0XSk7
CiAKLSAgICByZXR1cm4gc2Nyb2xsYmFyLmVuYWJsZWQoKSAmJiAoc2Nyb2xsYmFyLm9yaWVudGF0
aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/CisgICAgcmV0dXJuIHNjcm9sbGJhci5lbmFi
bGVkKCkgJiYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9u
OjpIb3Jpem9udGFsID8KICAgICAgICAgICAgICBzY3JvbGxiYXIud2lkdGgoKSA6CiAgICAgICAg
ICAgICAgc2Nyb2xsYmFyLmhlaWdodCgpKSA+PSBtaW5MZW5ndGhGb3JUaHVtYjsKIH0KQEAgLTMx
OCw3ICszMTgsNyBAQCBzdGF0aWMgSW50UmVjdCBidXR0b25SZXBhaW50UmVjdChjb25zdCBJbnRS
ZWN0JiBidXR0b25SZWN0LCBTY3JvbGxiYXJPcmllbnRhdGlvbgogICAgIEFTU0VSVChnQnV0dG9u
UGxhY2VtZW50ICE9IFNjcm9sbGJhckJ1dHRvbnNOb25lKTsKIAogICAgIEludFJlY3QgcGFpbnRS
ZWN0KGJ1dHRvblJlY3QpOwotICAgIGlmIChvcmllbnRhdGlvbiA9PSBIb3Jpem9udGFsU2Nyb2xs
YmFyKSB7CisgICAgaWYgKG9yaWVudGF0aW9uID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jp
em9udGFsKSB7CiAgICAgICAgIHBhaW50UmVjdC5zZXRXaWR0aChjUmVhbEJ1dHRvbkxlbmd0aFtz
Y3JvbGxiYXJTaXplVG9JbmRleChjb250cm9sU2l6ZSldKTsKICAgICAgICAgaWYgKCFzdGFydCkK
ICAgICAgICAgICAgIHBhaW50UmVjdC5zZXRYKGJ1dHRvblJlY3QueCgpIC0gKGNSZWFsQnV0dG9u
TGVuZ3RoW3Njcm9sbGJhclNpemVUb0luZGV4KGNvbnRyb2xTaXplKV0gLSBidXR0b25SZWN0Lndp
ZHRoKCkpKTsKQEAgLTM0NCw3ICszNDQsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lTWFjOjpi
YWNrQnV0dG9uUmVjdChTY3JvbGxiYXImIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYQogICAg
IGludCB0aGlja25lc3MgPSBzY3JvbGxiYXJUaGlja25lc3Moc2Nyb2xsYmFyLmNvbnRyb2xTaXpl
KCkpOwogICAgIGJvb2wgb3V0ZXJCdXR0b24gPSBwYXJ0ID09IEJhY2tCdXR0b25TdGFydFBhcnQg
JiYgKGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJCdXR0b25zRG91YmxlU3RhcnQgfHwg
YnV0dG9uc1BsYWNlbWVudCgpID09IFNjcm9sbGJhckJ1dHRvbnNEb3VibGVCb3RoKTsKICAgICBp
ZiAob3V0ZXJCdXR0b24pIHsKLSAgICAgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09
IEhvcml6b250YWxTY3JvbGxiYXIpCisgICAgICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24o
KSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCkKICAgICAgICAgICAgIHJlc3Vs
dCA9IEludFJlY3Qoc2Nyb2xsYmFyLngoKSwgc2Nyb2xsYmFyLnkoKSwgY091dGVyQnV0dG9uTGVu
Z3RoW3Njcm9sbGJhclNpemVUb0luZGV4KHNjcm9sbGJhci5jb250cm9sU2l6ZSgpKV0gKyAocGFp
bnRpbmcgPyBjT3V0ZXJCdXR0b25PdmVybGFwIDogMCksIHRoaWNrbmVzcyk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIHJlc3VsdCA9IEludFJlY3Qoc2Nyb2xsYmFyLngoKSwgc2Nyb2xsYmFy
LnkoKSwgdGhpY2tuZXNzLCBjT3V0ZXJCdXR0b25MZW5ndGhbc2Nyb2xsYmFyU2l6ZVRvSW5kZXgo
c2Nyb2xsYmFyLmNvbnRyb2xTaXplKCkpXSArIChwYWludGluZyA/IGNPdXRlckJ1dHRvbk92ZXJs
YXAgOiAwKSk7CkBAIC0zNTIsNyArMzUyLDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1hYzo6
YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGEKICAg
ICB9CiAgICAgCiAgICAgLy8gT3VyIHJlcGFpbnQgcmVjdCBpcyBzbGlnaHRseSBsYXJnZXIsIHNp
bmNlIHdlIGFyZSBhIGJ1dHRvbiB0aGF0IGlzIGFkamFjZW50IHRvIHRoZSB0cmFjay4KLSAgICBp
ZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgeworICAg
IGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9y
aXpvbnRhbCkgewogICAgICAgICBpbnQgc3RhcnQgPSBwYXJ0ID09IEJhY2tCdXR0b25TdGFydFBh
cnQgPyBzY3JvbGxiYXIueCgpIDogc2Nyb2xsYmFyLngoKSArIHNjcm9sbGJhci53aWR0aCgpIC0g
Y091dGVyQnV0dG9uTGVuZ3RoW3Njcm9sbGJhclNpemVUb0luZGV4KHNjcm9sbGJhci5jb250cm9s
U2l6ZSgpKV0gLSBjQnV0dG9uTGVuZ3RoW3Njcm9sbGJhclNpemVUb0luZGV4KHNjcm9sbGJhci5j
b250cm9sU2l6ZSgpKV07CiAgICAgICAgIHJlc3VsdCA9IEludFJlY3Qoc3RhcnQsIHNjcm9sbGJh
ci55KCksIGNCdXR0b25MZW5ndGhbc2Nyb2xsYmFyU2l6ZVRvSW5kZXgoc2Nyb2xsYmFyLmNvbnRy
b2xTaXplKCkpXSwgdGhpY2tuZXNzKTsKICAgICB9IGVsc2UgewpAQCAtMzgxLDcgKzM4MSw3IEBA
IEludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciYg
c2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0CiAgICAgCiAgICAgYm9vbCBvdXRlckJ1dHRvbiA9IHBh
cnQgPT0gRm9yd2FyZEJ1dHRvbkVuZFBhcnQgJiYgKGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3Jv
bGxiYXJCdXR0b25zRG91YmxlRW5kIHx8IGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJC
dXR0b25zRG91YmxlQm90aCk7CiAgICAgaWYgKG91dGVyQnV0dG9uKSB7Ci0gICAgICAgIGlmIChz
Y3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CisgICAgICAg
IGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9y
aXpvbnRhbCkgewogICAgICAgICAgICAgcmVzdWx0ID0gSW50UmVjdChzY3JvbGxiYXIueCgpICsg
c2Nyb2xsYmFyLndpZHRoKCkgLSBvdXRlckJ1dHRvbkxlbmd0aCwgc2Nyb2xsYmFyLnkoKSwgb3V0
ZXJCdXR0b25MZW5ndGgsIHRoaWNrbmVzcyk7CiAgICAgICAgICAgICBpZiAocGFpbnRpbmcpCiAg
ICAgICAgICAgICAgICAgcmVzdWx0LmluZmxhdGVYKGNPdXRlckJ1dHRvbk92ZXJsYXApOwpAQCAt
MzkzLDcgKzM5Myw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OmZvcndhcmRCdXR0b25S
ZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogICAgIAotICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBI
b3Jpem9udGFsU2Nyb2xsYmFyKSB7CisgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09
IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKSB7CiAgICAgICAgIGludCBzdGFydCA9
IHBhcnQgPT0gRm9yd2FyZEJ1dHRvbkVuZFBhcnQgPyBzY3JvbGxiYXIueCgpICsgc2Nyb2xsYmFy
LndpZHRoKCkgLSBidXR0b25MZW5ndGggOiBzY3JvbGxiYXIueCgpICsgb3V0ZXJCdXR0b25MZW5n
dGg7CiAgICAgICAgIHJlc3VsdCA9IEludFJlY3Qoc3RhcnQsIHNjcm9sbGJhci55KCksIGJ1dHRv
bkxlbmd0aCwgdGhpY2tuZXNzKTsKICAgICB9IGVsc2UgewpAQCAtNDM3LDcgKzQzNyw3IEBAIElu
dFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OnRyYWNrUmVjdChTY3JvbGxiYXImIHNjcm9sbGJhciwg
Ym9vbCBwYWludGluZykKICAgICB9CiAgICAgCiAgICAgaW50IHRvdGFsV2lkdGggPSBzdGFydFdp
ZHRoICsgZW5kV2lkdGg7Ci0gICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IEhvcml6
b250YWxTY3JvbGxiYXIpCisgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFNjcm9s
bGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKQogICAgICAgICByZXR1cm4gSW50UmVjdChzY3Jv
bGxiYXIueCgpICsgc3RhcnRXaWR0aCwgc2Nyb2xsYmFyLnkoKSwgc2Nyb2xsYmFyLndpZHRoKCkg
LSB0b3RhbFdpZHRoLCB0aGlja25lc3MpOwogICAgIHJldHVybiBJbnRSZWN0KHNjcm9sbGJhci54
KCksIHNjcm9sbGJhci55KCkgKyBzdGFydFdpZHRoLCB0aGlja25lc3MsIHNjcm9sbGJhci5oZWln
aHQoKSAtIHRvdGFsV2lkdGgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Njcm9sbGJhcnNDb250cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Njcm9sbGJhcnNDb250cm9sbGVyTWFjLm1tCmluZGV4IDQ0NTBhYzFkOWM2OWVjMWM4
MjgxZmZjMGY2ODNhYmY3MjIyMDFjNzQuLmZhOTAxZDlmOTBjZTE2ZjI0ZGRiMjkyNDJiZjY5YTg3
NzhjMTQ0ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxi
YXJzQ29udHJvbGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Ny
b2xsYmFyc0NvbnRyb2xsZXJNYWMubW0KQEAgLTM3MCw3ICszNzAsNyBAQCB1c2luZyBXZWJDb3Jl
OjpMb2dPdmVybGF5U2Nyb2xsYmFyczsKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXIqIGxheWVyOwotICAgIGlmIChfc2Nyb2xsYmFyLT5vcmllbnRhdGlv
bigpID09IFdlYkNvcmU6OlZlcnRpY2FsU2Nyb2xsYmFyKQorICAgIGlmIChfc2Nyb2xsYmFyLT5v
cmllbnRhdGlvbigpID09IFdlYkNvcmU6OlNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbCkK
ICAgICAgICAgbGF5ZXIgPSBfc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgpLmxheWVyRm9yVmVy
dGljYWxTY3JvbGxiYXIoKTsKICAgICBlbHNlCiAgICAgICAgIGxheWVyID0gX3Njcm9sbGJhci0+
c2Nyb2xsYWJsZUFyZWEoKS5sYXllckZvckhvcml6b250YWxTY3JvbGxiYXIoKTsKQEAgLTQ1NSw3
ICs0NTUsNyBAQCB1c2luZyBXZWJDb3JlOjpMb2dPdmVybGF5U2Nyb2xsYmFyczsKICAgICBpZiAo
YXV0byogbWFjVGhlbWUgPSBXZWJDb3JlOjptYWNTY3JvbGxiYXJUaGVtZSgpKQogICAgICAgICBt
YWNUaGVtZS0+c2V0UGFpbnRDaGFyYWN0ZXJpc3RpY3NGb3JTY3JvbGxiYXIoKl9zY3JvbGxiYXIp
OwogCi0gICAgaWYgKHBhcnQgPT0gV2ViQ29yZTo6VGh1bWJQYXJ0ICYmIF9zY3JvbGxiYXItPm9y
aWVudGF0aW9uKCkgPT0gV2ViQ29yZTo6VmVydGljYWxTY3JvbGxiYXIpIHsKKyAgICBpZiAocGFy
dCA9PSBXZWJDb3JlOjpUaHVtYlBhcnQgJiYgX3Njcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBX
ZWJDb3JlOjpTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwpIHsKICAgICAgICAgaWYgKG5l
d0FscGhhID09IDEpIHsKICAgICAgICAgICAgIGF1dG8gdGh1bWJSZWN0ID0gV2ViQ29yZTo6SW50
UmVjdChbc2Nyb2xsZXJQYWludGVyIHJlY3RGb3JQYXJ0Ok5TU2Nyb2xsZXJLbm9iXSk7CiAgICAg
ICAgICAgICBbc2VsZiBzY3JvbGxiYXJzQ29udHJvbGxlcl0tPnNldFZpc2libGVTY3JvbGxlclRo
dW1iUmVjdCh0aHVtYlJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1BvcHVwTWVudVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBN
ZW51V2luLmNwcAppbmRleCAyNDhlM2RjMWUzODIxMjgzYWUwM2RiMmUzMjJjZjE1ZjZjZmJhYjNl
Li5iMTQzYmZhMmY3Zjg1NTAxYjNkMDg5MjI2YzhlNjA4YzE0ZmU5YjQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBA
IHZvaWQgUG9wdXBNZW51V2luOjpzaG93KGNvbnN0IEludFJlY3QmIHIsIEZyYW1lVmlldyogdmll
dywgaW50IGluZGV4KQogCiAgICAgaWYgKCFtX3Njcm9sbGJhciAmJiB2aXNpYmxlSXRlbXMoKSA8
IGNsaWVudCgpLT5saXN0U2l6ZSgpKSB7CiAgICAgICAgIC8vIFdlIG5lZWQgYSBzY3JvbGwgYmFy
Ci0gICAgICAgIG1fc2Nyb2xsYmFyID0gY2xpZW50KCktPmNyZWF0ZVNjcm9sbGJhcigqdGhpcywg
VmVydGljYWxTY3JvbGxiYXIsIFNjcm9sbGJhckNvbnRyb2xTaXplOjpTbWFsbCk7CisgICAgICAg
IG1fc2Nyb2xsYmFyID0gY2xpZW50KCktPmNyZWF0ZVNjcm9sbGJhcigqdGhpcywgU2Nyb2xsYmFy
T3JpZW50YXRpb246OlZlcnRpY2FsLCBTY3JvbGxiYXJDb250cm9sU2l6ZTo6U21hbGwpOwogICAg
ICAgICBtX3Njcm9sbGJhci0+c3R5bGVDaGFuZ2VkKCk7CiAgICAgfQogCkBAIC01NTUsMTIgKzU1
NSwxMiBAQCBib29sIFBvcHVwTWVudVdpbjo6c2Nyb2xsVG9SZXZlYWxTZWxlY3Rpb24oKQogICAg
IGludCBpbmRleCA9IGZvY3VzZWRJbmRleCgpOwogCiAgICAgaWYgKGluZGV4IDwgbV9zY3JvbGxP
ZmZzZXQpIHsKLSAgICAgICAgU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFRvT2Zmc2V0V2l0aG91dEFu
aW1hdGlvbihWZXJ0aWNhbFNjcm9sbGJhciwgaW5kZXgpOworICAgICAgICBTY3JvbGxhYmxlQXJl
YTo6c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKFNjcm9sbGJhck9yaWVudGF0aW9uOjpW
ZXJ0aWNhbCwgaW5kZXgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAo
aW5kZXggPj0gbV9zY3JvbGxPZmZzZXQgKyB2aXNpYmxlSXRlbXMoKSkgewotICAgICAgICBTY3Jv
bGxhYmxlQXJlYTo6c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKFZlcnRpY2FsU2Nyb2xs
YmFyLCBpbmRleCAtIHZpc2libGVJdGVtcygpICsgMSk7CisgICAgICAgIFNjcm9sbGFibGVBcmVh
OjpzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oU2Nyb2xsYmFyT3JpZW50YXRpb246OlZl
cnRpY2FsLCBpbmRleCAtIHZpc2libGVJdGVtcygpICsgMSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9s
bGJhclRoZW1lV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJU
aGVtZVdpbi5jcHAKaW5kZXggYTFkMjBlMDE0YmU3Y2M3ODk5YTU1MDY2ZDYyNzljNjhiYmYwOTFl
NS4uZTg5ZWM5ZDgzZDhhYmMxNDE5Mzg3MTZmMjRlYWJhMDYxYTA4NWFmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uY3BwCkBAIC0xNDks
NyArMTQ5LDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZVdpbjo6YmFja0J1dHRvblJlY3QoU2Ny
b2xsYmFyJiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGEKICAgICAvLyB3ZSBoYXZlIDwgMzQg
cGl4ZWxzIGxlZnQuICBUaGlzIGFsbG93cyB0aGUgc2Nyb2xsYmFyCiAgICAgLy8gdG8gc2NhbGUg
ZG93biBhbmQgZnVuY3Rpb24gZXZlbiBhdCB0aW55IHNpemVzLgogICAgIGludCB0aGlja25lc3Mg
PSBzY3JvbGxiYXJUaGlja25lc3MoKTsKLSAgICBpZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkg
PT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKKyAgICBpZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkg
PT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWwpCiAgICAgICAgIHJldHVybiBJbnRS
ZWN0KHNjcm9sbGJhci54KCksIHNjcm9sbGJhci55KCksCiAgICAgICAgICAgICAgICAgICAgICAg
IHNjcm9sbGJhci53aWR0aCgpIDwgMiAqIHRoaWNrbmVzcyA/IHNjcm9sbGJhci53aWR0aCgpIC8g
MiA6IHRoaWNrbmVzcywgdGhpY2tuZXNzKTsKICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXIu
eCgpLCBzY3JvbGxiYXIueSgpLApAQCAtMTY4LDcgKzE2OCw3IEBAIEludFJlY3QgU2Nyb2xsYmFy
VGhlbWVXaW46OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBTY3JvbGxi
YXJQYXJ0CiAgICAgLy8gd2UgaGF2ZSA8IDM0IHBpeGVscyBsZWZ0LiAgVGhpcyBhbGxvd3MgdGhl
IHNjcm9sbGJhcgogICAgIC8vIHRvIHNjYWxlIGRvd24gYW5kIGZ1bmN0aW9uIGV2ZW4gYXQgdGlu
eSBzaXplcy4KICAgICBpbnQgdGhpY2tuZXNzID0gc2Nyb2xsYmFyVGhpY2tuZXNzKCk7Ci0gICAg
aWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpIHsKKyAg
ICBpZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhv
cml6b250YWwpIHsKICAgICAgICAgaW50IHcgPSBzY3JvbGxiYXIud2lkdGgoKSA8IDIgKiB0aGlj
a25lc3MgPyBzY3JvbGxiYXIud2lkdGgoKSAvIDIgOiB0aGlja25lc3M7CiAgICAgICAgIHJldHVy
biBJbnRSZWN0KHNjcm9sbGJhci54KCkgKyBzY3JvbGxiYXIud2lkdGgoKSAtIHcsIHNjcm9sbGJh
ci55KCksIHcsIHRoaWNrbmVzcyk7CiAgICAgfQpAQCAtMTgwLDcgKzE4MCw3IEBAIEludFJlY3Qg
U2Nyb2xsYmFyVGhlbWVXaW46OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFy
LCBTY3JvbGxiYXJQYXJ0CiBJbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjp0cmFja1JlY3QoU2Ny
b2xsYmFyJiBzY3JvbGxiYXIsIGJvb2wpCiB7CiAgICAgaW50IHRoaWNrbmVzcyA9IHNjcm9sbGJh
clRoaWNrbmVzcygpOwotICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9u
dGFsU2Nyb2xsYmFyKSB7CisgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFNjcm9s
bGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKSB7CiAgICAgICAgIGlmIChzY3JvbGxiYXIud2lk
dGgoKSA8IDIgKiB0aGlja25lc3MpCiAgICAgICAgICAgICByZXR1cm4gSW50UmVjdCgpOwogICAg
ICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXIueCgpICsgdGhpY2tuZXNzLCBzY3JvbGxiYXIu
eSgpLCBzY3JvbGxiYXIud2lkdGgoKSAtIDIgKiB0aGlja25lc3MsIHRoaWNrbmVzcyk7CkBAIC0y
MTUsNyArMjE1LDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZVdpbjo6c2hvdWxkU25hcEJhY2tUb0Ry
YWdPcmlnaW4oU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0IFAKICAgICAvLyBGaW5kIHRoZSBy
ZWN0IHdpdGhpbiB3aGljaCB3ZSBzaG91bGRuJ3Qgc25hcCwgYnkgZXhwYW5kaW5nIHRoZSB0cmFj
ayByZWN0CiAgICAgLy8gaW4gYm90aCBkaW1lbnNpb25zLgogICAgIEludFJlY3QgcmVjdCA9IHRy
YWNrUmVjdChzY3JvbGxiYXIpOwotICAgIGNvbnN0IGJvb2wgaG9yeiA9IHNjcm9sbGJhci5vcmll
bnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXI7CisgICAgY29uc3QgYm9vbCBob3J6ID0g
c2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250
YWw7CiAgICAgY29uc3QgaW50IHRoaWNrbmVzcyA9IHNjcm9sbGJhclRoaWNrbmVzcyhzY3JvbGxi
YXIuY29udHJvbFNpemUoKSk7CiAgICAgcmVjdC5pbmZsYXRlWCgoaG9yeiA/IGtPZmZFbmRNdWx0
aXBsaWVyIDoga09mZlNpZGVNdWx0aXBsaWVyKSAqIHRoaWNrbmVzcyk7CiAgICAgcmVjdC5pbmZs
YXRlWSgoaG9yeiA/IGtPZmZTaWRlTXVsdGlwbGllciA6IGtPZmZFbmRNdWx0aXBsaWVyKSAqIHRo
aWNrbmVzcyk7CkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFp
bnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3IKIAog
ICAgIGJvb2wgc3RhcnQgPSBwYXJ0VHlwZSA9PSBCYWNrVHJhY2tQYXJ0OwogICAgIGludCBwYXJ0
OwotICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFy
KQorICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlv
bjo6SG9yaXpvbnRhbCkKICAgICAgICAgcGFydCA9IHN0YXJ0ID8gU1BfVFJBQ0tTVEFSVEhPUiA6
IFNQX1RSQUNLRU5ESE9SOwogICAgIGVsc2UKICAgICAgICAgcGFydCA9IHN0YXJ0ID8gU1BfVFJB
Q0tTVEFSVFZFUlQgOiBTUF9UUkFDS0VORFZFUlQ7CkBAIC0yOTYsNyArMjk2LDcgQEAgdm9pZCBT
Y3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBT
Y3JvbGxiYXImIHNjcm9sbGIKICAgICBib29sIHN0YXJ0ID0gKHBhcnQgPT0gQmFja0J1dHRvblN0
YXJ0UGFydCk7CiAgICAgaW50IHhwU3RhdGUgPSAwOwogICAgIGludCBjbGFzc2ljU3RhdGUgPSAw
OwotICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFy
KQorICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlv
bjo6SG9yaXpvbnRhbCkKICAgICAgICAgeHBTdGF0ZSA9IHN0YXJ0ID8gVFNfTEVGVF9CVVRUT04g
OiBUU19SSUdIVF9CVVRUT047CiAgICAgZWxzZQogICAgICAgICB4cFN0YXRlID0gc3RhcnQgPyBU
U19VUF9CVVRUT04gOiBUU19ET1dOX0JVVFRPTjsKQEAgLTMxNyw3ICszMTcsNyBAQCB2b2lkIFNj
cm9sbGJhclRoZW1lV2luOjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNj
cm9sbGJhciYgc2Nyb2xsYgogICAgICAgICBpZiAoc2Nyb2xsYmFyLmhvdmVyZWRQYXJ0KCkgPT0g
Tm9QYXJ0IHx8ICFydW5uaW5nVmlzdGEpCiAgICAgICAgICAgICB4cFN0YXRlICs9IFRTX05PUk1B
TDsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9u
KCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKKyAgICAgICAgICAgIGlmIChzY3JvbGxiYXIub3Jp
ZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCkKICAgICAgICAg
ICAgICAgICB4cFN0YXRlID0gc3RhcnQgPyBUU19MRUZUX0JVVFRPTl9IT1ZFUiA6IFRTX1JJR0hU
X0JVVFRPTl9IT1ZFUjsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB4cFN0YXRl
ID0gc3RhcnQgPyBUU19VUF9CVVRUT05fSE9WRVIgOiBUU19ET1dOX0JVVFRPTl9IT1ZFUjsKQEAg
LTM3NSw3ICszNzUsNyBAQCBzdGF0aWMgdm9pZCBwYWludEdyaXBwZXIoU2Nyb2xsYmFyJiBzY3Jv
bGxiYXIsIEhEQyBoZGMsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgICAgIHN0YXRlID0gVFNf
Tk9STUFMOwogCiAgICAgUkVDVCB0aGVtZVJlY3QocmVjdCk7Ci0gICAgRHJhd1RoZW1lQmFja2dy
b3VuZChzY3JvbGxiYXJUaGVtZSwgaGRjLCBzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jp
em9udGFsU2Nyb2xsYmFyID8gU1BfR1JJUFBFUkhPUiA6IFNQX0dSSVBQRVJWRVJULCBzdGF0ZSwg
JnRoZW1lUmVjdCwgMCk7CisgICAgRHJhd1RoZW1lQmFja2dyb3VuZChzY3JvbGxiYXJUaGVtZSwg
aGRjLCBzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9y
aXpvbnRhbCA/IFNQX0dSSVBQRVJIT1IgOiBTUF9HUklQUEVSVkVSVCwgc3RhdGUsICZ0aGVtZVJl
Y3QsIDApOwogfQogCiB2b2lkIFNjcm9sbGJhclRoZW1lV2luOjpwYWludFRodW1iKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJl
Y3QpCkBAIC0zOTQsMTEgKzM5NCwxMSBAQCB2b2lkIFNjcm9sbGJhclRoZW1lV2luOjpwYWludFRo
dW1iKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxiYQogCiAgICAg
Ym9vbCBhbHBoYUJsZW5kID0gZmFsc2U7CiAgICAgaWYgKHNjcm9sbGJhclRoZW1lKQotICAgICAg
ICBhbHBoYUJsZW5kID0gSXNUaGVtZUJhY2tncm91bmRQYXJ0aWFsbHlUcmFuc3BhcmVudChzY3Jv
bGxiYXJUaGVtZSwgc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJh
ciA/IFNQX1RIVU1CSE9SIDogU1BfVEhVTUJWRVJULCBzdGF0ZSk7CisgICAgICAgIGFscGhhQmxl
bmQgPSBJc1RoZW1lQmFja2dyb3VuZFBhcnRpYWxseVRyYW5zcGFyZW50KHNjcm9sbGJhclRoZW1l
LCBzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpv
bnRhbCA/IFNQX1RIVU1CSE9SIDogU1BfVEhVTUJWRVJULCBzdGF0ZSk7CiAgICAgTG9jYWxXaW5k
b3dzQ29udGV4dCB3aW5kb3dzQ29udGV4dChjb250ZXh0LCByZWN0LCBhbHBoYUJsZW5kKTsKICAg
ICBSRUNUIHRoZW1lUmVjdChyZWN0KTsKICAgICBpZiAoc2Nyb2xsYmFyVGhlbWUpIHsKLSAgICAg
ICAgRHJhd1RoZW1lQmFja2dyb3VuZChzY3JvbGxiYXJUaGVtZSwgd2luZG93c0NvbnRleHQuaGRj
KCksIHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBTUF9U
SFVNQkhPUiA6IFNQX1RIVU1CVkVSVCwgc3RhdGUsICZ0aGVtZVJlY3QsIDApOworICAgICAgICBE
cmF3VGhlbWVCYWNrZ3JvdW5kKHNjcm9sbGJhclRoZW1lLCB3aW5kb3dzQ29udGV4dC5oZGMoKSwg
c2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250
YWwgPyBTUF9USFVNQkhPUiA6IFNQX1RIVU1CVkVSVCwgc3RhdGUsICZ0aGVtZVJlY3QsIDApOwog
ICAgICAgICBwYWludEdyaXBwZXIoc2Nyb2xsYmFyLCB3aW5kb3dzQ29udGV4dC5oZGMoKSwgZ3Jp
cHBlclJlY3Qoc2Nyb2xsYmFyVGhpY2tuZXNzKCksIHJlY3QpKTsKICAgICB9IGVsc2UKICAgICAg
ICAgOjpEcmF3RWRnZSh3aW5kb3dzQ29udGV4dC5oZGMoKSwgJnRoZW1lUmVjdCwgRURHRV9SQUlT
RUQsIEJGX1JFQ1QgfCBCRl9NSURETEUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcAppbmRleCBiMDU3Mzg0M2FjYTY1NTVlNTU5NGJjMjViNzE3Mzc3NzZjODIzMWU0Li44NzZj
ZTViNGM4MDFlODA5YmVjNGExYjM4N2NlZWRhY2NmMGFkZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMTA3MCw5ICsxMDcwLDkgQEAgYm9vbCBSZW5kZXJCb3g6
Omhhc0F1dG9TY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24pIGNvbnN0
CiAgICAgfTsKIAogICAgIHN3aXRjaCAob3JpZW50YXRpb24pIHsKLSAgICBjYXNlIFNjcm9sbGJh
ck9yaWVudGF0aW9uOjpIb3Jpem9udGFsU2Nyb2xsYmFyOgorICAgIGNhc2UgU2Nyb2xsYmFyT3Jp
ZW50YXRpb246Okhvcml6b250YWw6CiAgICAgICAgIHJldHVybiBpc0F1dG9PclNjcm9sbFdpdGhP
dmVybGF5U2Nyb2xsYmFyKHN0eWxlKCkub3ZlcmZsb3dYKCkpOwotICAgIGNhc2UgU2Nyb2xsYmFy
T3JpZW50YXRpb246OlZlcnRpY2FsU2Nyb2xsYmFyOgorICAgIGNhc2UgU2Nyb2xsYmFyT3JpZW50
YXRpb246OlZlcnRpY2FsOgogICAgICAgICByZXR1cm4gaXNBdXRvT3JTY3JvbGxXaXRoT3Zlcmxh
eVNjcm9sbGJhcihzdHlsZSgpLm92ZXJmbG93WSgpKTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMTA4OCw5ICsxMDg4LDkgQEAgYm9vbCBSZW5kZXJCb3g6Omhhc0Fsd2F5c1ByZXNlbnRT
Y3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24pIGNvbnMKICAgICB9Owog
CiAgICAgc3dpdGNoIChvcmllbnRhdGlvbikgewotICAgIGNhc2UgU2Nyb2xsYmFyT3JpZW50YXRp
b246Okhvcml6b250YWxTY3JvbGxiYXI6CisgICAgY2FzZSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6
SG9yaXpvbnRhbDoKICAgICAgICAgcmV0dXJuIGlzQWx3YXlzVmlzaWJsZVNjcm9sbGJhcihzdHls
ZSgpLm92ZXJmbG93WCgpKTsKLSAgICBjYXNlIFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNh
bFNjcm9sbGJhcjoKKyAgICBjYXNlIFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbDoKICAg
ICAgICAgcmV0dXJuIGlzQWx3YXlzVmlzaWJsZVNjcm9sbGJhcihzdHlsZSgpLm92ZXJmbG93WSgp
KTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCBiZDlmMjJhNTE0NWNlOWE1NGMwMjY2ZmI1
ODNjYWZhMDVhZTFlMTk5Li41NTgzMjEwYjU1MTQwNjg2YTJlYzRhNzExMmVhM2U1NmMxMGJiMjBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cApAQCAtMjEzOCw5ICsyMTM4LDkgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZU92
ZXJmbG93Q29udHJvbHNMYXllcnMoYm9vbCBuZWVkc0hvcml6b250YWxTY3JvbGwKICAgICBpZiAo
YXV0byogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBtX293bmluZ0xheWVyLnBhZ2UoKS5zY3JvbGxp
bmdDb29yZGluYXRvcigpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzY3JvbGxhYmxlQXJlYSA9IG1f
b3duaW5nTGF5ZXIuc2Nyb2xsYWJsZUFyZWEoKSkgewogICAgICAgICAgICAgaWYgKGhvcml6b250
YWxTY3JvbGxiYXJMYXllckNoYW5nZWQpCi0gICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRp
bmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoKnNjcm9sbGFibGVB
cmVhLCBIb3Jpem9udGFsU2Nyb2xsYmFyKTsKKyAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29y
ZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZSgqc2Nyb2xsYWJs
ZUFyZWEsIFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKTsKICAgICAgICAgICAgIGlm
ICh2ZXJ0aWNhbFNjcm9sbGJhckxheWVyQ2hhbmdlZCkKLSAgICAgICAgICAgICAgICBzY3JvbGxp
bmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZSgqc2Ny
b2xsYWJsZUFyZWEsIFZlcnRpY2FsU2Nyb2xsYmFyKTsKKyAgICAgICAgICAgICAgICBzY3JvbGxp
bmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZSgqc2Ny
b2xsYWJsZUFyZWEsIFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbCk7CiAgICAgICAgIH0K
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAKaW5kZXggMDE4Y2I2MGQxYmQ1OGU3MGM5YWU0NTk5NDZiMWU2MDdlMTM1OGRi
YS4uMmU3MGJiZTdmOTZiOTMxOTQ0ODFjZWE5NGNlNTQ0MWYzMDNiZDBlZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTQw
MjcsMTMgKzQwMjcsMTMgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZU92ZXJm
bG93Q29udHJvbHNMYXllcnMoKQogICAgICAgICAgICAgbV9vdmVyZmxvd0NvbnRyb2xzSG9zdExh
eWVyLT5hZGRDaGlsZCgqbV9sYXllckZvckhvcml6b250YWxTY3JvbGxiYXIpOwogCiAgICAgICAg
ICAgICBpZiAoYXV0byogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29y
ZGluYXRvcigpKQotICAgICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxh
YmxlQXJlYVNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSwg
SG9yaXpvbnRhbFNjcm9sbGJhcik7CisgICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0
b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UobV9yZW5kZXJWaWV3LmZy
YW1lVmlldygpLCBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCk7CiAgICAgICAgIH0K
ICAgICB9IGVsc2UgaWYgKG1fbGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CiAgICAgICAg
IEdyYXBoaWNzTGF5ZXI6OnVucGFyZW50QW5kQ2xlYXIobV9sYXllckZvckhvcml6b250YWxTY3Jv
bGxiYXIpOwogCiAgICAgICAgIGlmIChhdXRvKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMt
PnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRv
ci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZShtX3JlbmRlclZpZXcuZnJh
bWVWaWV3KCksIEhvcml6b250YWxTY3JvbGxiYXIpOworICAgICAgICAgICAgc2Nyb2xsaW5nQ29v
cmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UobV9yZW5kZXJW
aWV3LmZyYW1lVmlldygpLCBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCk7CiAgICAg
fQogCiAgICAgaWYgKHJlcXVpcmVzVmVydGljYWxTY3JvbGxiYXJMYXllcigpKSB7CkBAIC00MDQ4
LDEzICs0MDQ4LDEzIEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVPdmVyZmxv
d0NvbnRyb2xzTGF5ZXJzKCkKICAgICAgICAgICAgIG1fb3ZlcmZsb3dDb250cm9sc0hvc3RMYXll
ci0+YWRkQ2hpbGQoKm1fbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcik7CiAKICAgICAgICAgICAg
IGlmIChhdXRvKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5h
dG9yKCkpCi0gICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVB
cmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLCBWZXJ0
aWNhbFNjcm9sbGJhcik7CisgICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNj
cm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UobV9yZW5kZXJWaWV3LmZyYW1lVmll
dygpLCBTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwpOwogICAgICAgICB9CiAgICAgfSBl
bHNlIGlmIChtX2xheWVyRm9yVmVydGljYWxTY3JvbGxiYXIpIHsKICAgICAgICAgR3JhcGhpY3NM
YXllcjo6dW5wYXJlbnRBbmRDbGVhcihtX2xheWVyRm9yVmVydGljYWxTY3JvbGxiYXIpOwogCiAg
ICAgICAgIGlmIChhdXRvKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nv
b3JkaW5hdG9yKCkpCi0gICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsYWJs
ZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZShtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCksIFZl
cnRpY2FsU2Nyb2xsYmFyKTsKKyAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3Jv
bGxhYmxlQXJlYVNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKG1fcmVuZGVyVmlldy5mcmFtZVZpZXco
KSwgU2Nyb2xsYmFyT3JpZW50YXRpb246OlZlcnRpY2FsKTsKICAgICB9CiAKICAgICBpZiAocmVx
dWlyZXNTY3JvbGxDb3JuZXJMYXllcigpKSB7CkBAIC00MTc1LDcgKzQxNzUsNyBAQCB2b2lkIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6ZGVzdHJveVJvb3RMYXllcigpCiAgICAgaWYgKG1fbGF5ZXJG
b3JIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CiAgICAgICAgIEdyYXBoaWNzTGF5ZXI6OnVucGFyZW50
QW5kQ2xlYXIobV9sYXllckZvckhvcml6b250YWxTY3JvbGxiYXIpOwogICAgICAgICBpZiAoYXV0
byogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQot
ICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFy
TGF5ZXJEaWRDaGFuZ2UobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLCBIb3Jpem9udGFsU2Nyb2xs
YmFyKTsKKyAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNj
cm9sbGJhckxheWVyRGlkQ2hhbmdlKG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSwgU2Nyb2xsYmFy
T3JpZW50YXRpb246Okhvcml6b250YWwpOwogICAgICAgICBpZiAoYXV0byogaG9yaXpvbnRhbFNj
cm9sbGJhciA9IG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS52ZXJ0aWNhbFNjcm9sbGJhcigpKQog
ICAgICAgICAgICAgbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLmludmFsaWRhdGVTY3JvbGxiYXIo
Kmhvcml6b250YWxTY3JvbGxiYXIsIEludFJlY3QoSW50UG9pbnQoMCwgMCksIGhvcml6b250YWxT
Y3JvbGxiYXItPmZyYW1lUmVjdCgpLnNpemUoKSkpOwogICAgIH0KQEAgLTQxODMsNyArNDE4Myw3
IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpkZXN0cm95Um9vdExheWVyKCkKICAgICBp
ZiAobV9sYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyKSB7CiAgICAgICAgIEdyYXBoaWNzTGF5ZXI6
OnVucGFyZW50QW5kQ2xlYXIobV9sYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyKTsKICAgICAgICAg
aWYgKGF1dG8qIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0
b3IoKSkKLSAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNj
cm9sbGJhckxheWVyRGlkQ2hhbmdlKG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSwgVmVydGljYWxT
Y3JvbGxiYXIpOworICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVB
cmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLCBTY3Jv
bGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwpOwogICAgICAgICBpZiAoYXV0byogdmVydGljYWxT
Y3JvbGxiYXIgPSBtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkudmVydGljYWxTY3JvbGxiYXIoKSkK
ICAgICAgICAgICAgIG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS5pbnZhbGlkYXRlU2Nyb2xsYmFy
KCp2ZXJ0aWNhbFNjcm9sbGJhciwgSW50UmVjdChJbnRQb2ludCgwLCAwKSwgdmVydGljYWxTY3Jv
bGxiYXItPmZyYW1lUmVjdCgpLnNpemUoKSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcAppbmRleCA3YTRk
YzJjNjJmNWUxZGFkMDcwOTAyNTY4ZDFhNmMyODg5MTVhNTc5Li41MmQxZWE1ZDMxZjBlNjhhZGIw
N2IwNDEwZmU3N2ZjOWRiMmYyN2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC05NSw4ICs5NSw4IEBAIHZv
aWQgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6Y2xlYXIoKQogICAgIGlmIChFbGVtZW50KiBl
bGVtZW50ID0gcmVuZGVyZXIuZWxlbWVudCgpKQogICAgICAgICBlbGVtZW50LT5zZXRTYXZlZExh
eWVyU2Nyb2xsUG9zaXRpb24obV9zY3JvbGxQb3NpdGlvbik7CiAKLSAgICBkZXN0cm95U2Nyb2xs
YmFyKEhvcml6b250YWxTY3JvbGxiYXIpOwotICAgIGRlc3Ryb3lTY3JvbGxiYXIoVmVydGljYWxT
Y3JvbGxiYXIpOworICAgIGRlc3Ryb3lTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb246Okhv
cml6b250YWwpOworICAgIGRlc3Ryb3lTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb246OlZl
cnRpY2FsKTsKIAogICAgIGlmIChhdXRvKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHJlbmRlcmVy
LnBhZ2UoKS5zY3JvbGxpbmdDb29yZGluYXRvcigpKQogICAgICAgICBzY3JvbGxpbmdDb29yZGlu
YXRvci0+d2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYSgqdGhpcyk7CkBAIC04MzksNyArODM5LDcg
QEAgUmVmPFNjcm9sbGJhcj4gUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6Y3JlYXRlU2Nyb2xs
YmFyKFNjcm9sbGJhck9yaWVudGF0aW9uIG8KIAogdm9pZCBSZW5kZXJMYXllclNjcm9sbGFibGVB
cmVhOjpkZXN0cm95U2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQog
ewotICAgIFJlZlB0cjxTY3JvbGxiYXI+JiBzY3JvbGxiYXIgPSBvcmllbnRhdGlvbiA9PSBIb3Jp
em9udGFsU2Nyb2xsYmFyID8gbV9oQmFyIDogbV92QmFyOworICAgIFJlZlB0cjxTY3JvbGxiYXI+
JiBzY3JvbGxiYXIgPSBvcmllbnRhdGlvbiA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpv
bnRhbCA/IG1faEJhciA6IG1fdkJhcjsKICAgICBpZiAoIXNjcm9sbGJhcikKICAgICAgICAgcmV0
dXJuOwogCkBAIC04NTYsMTQgKzg1NiwxNCBAQCB2b2lkIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFy
ZWE6OnNldEhhc0hvcml6b250YWxTY3JvbGxiYXIoYm9vbCBoYXNTY3JvbGxiYXIpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChoYXNTY3JvbGxiYXIpIHsKLSAgICAgICAgbV9oQmFyID0gY3Jl
YXRlU2Nyb2xsYmFyKEhvcml6b250YWxTY3JvbGxiYXIpOworICAgICAgICBtX2hCYXIgPSBjcmVh
dGVTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWwpOwogI2lmIEhBVkUo
UlVCQkVSX0JBTkRJTkcpCiAgICAgICAgIGF1dG8mIHJlbmRlcmVyID0gbV9sYXllci5yZW5kZXJl
cigpOwogICAgICAgICBTY3JvbGxFbGFzdGljaXR5IGVsYXN0aWNpdHkgPSBzY3JvbGxzT3ZlcmZs
b3coKSAmJiByZW5kZXJlci5zZXR0aW5ncygpLnJ1YmJlckJhbmRpbmdGb3JTdWJTY3JvbGxhYmxl
UmVnaW9uc0VuYWJsZWQoKSA/IFNjcm9sbEVsYXN0aWNpdHlBdXRvbWF0aWMgOiBTY3JvbGxFbGFz
dGljaXR5Tm9uZTsKICAgICAgICAgU2Nyb2xsYWJsZUFyZWE6OnNldEhvcml6b250YWxTY3JvbGxF
bGFzdGljaXR5KGVsYXN0aWNpdHkpOwogI2VuZGlmCiAgICAgfSBlbHNlIHsKLSAgICAgICAgZGVz
dHJveVNjcm9sbGJhcihIb3Jpem9udGFsU2Nyb2xsYmFyKTsKKyAgICAgICAgZGVzdHJveVNjcm9s
bGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCk7CiAjaWYgSEFWRShSVUJCRVJf
QkFORElORykKICAgICAgICAgU2Nyb2xsYWJsZUFyZWE6OnNldEhvcml6b250YWxTY3JvbGxFbGFz
dGljaXR5KFNjcm9sbEVsYXN0aWNpdHlOb25lKTsKICNlbmRpZgpAQCAtODgyLDE0ICs4ODIsMTQg
QEAgdm9pZCBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjpzZXRIYXNWZXJ0aWNhbFNjcm9sbGJh
cihib29sIGhhc1Njcm9sbGJhcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGhhc1Njcm9s
bGJhcikgewotICAgICAgICBtX3ZCYXIgPSBjcmVhdGVTY3JvbGxiYXIoVmVydGljYWxTY3JvbGxi
YXIpOworICAgICAgICBtX3ZCYXIgPSBjcmVhdGVTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRp
b246OlZlcnRpY2FsKTsKICNpZiBIQVZFKFJVQkJFUl9CQU5ESU5HKQogICAgICAgICBhdXRvJiBy
ZW5kZXJlciA9IG1fbGF5ZXIucmVuZGVyZXIoKTsKICAgICAgICAgU2Nyb2xsRWxhc3RpY2l0eSBl
bGFzdGljaXR5ID0gc2Nyb2xsc092ZXJmbG93KCkgJiYgcmVuZGVyZXIuc2V0dGluZ3MoKS5ydWJi
ZXJCYW5kaW5nRm9yU3ViU2Nyb2xsYWJsZVJlZ2lvbnNFbmFibGVkKCkgPyBTY3JvbGxFbGFzdGlj
aXR5QXV0b21hdGljIDogU2Nyb2xsRWxhc3RpY2l0eU5vbmU7CiAgICAgICAgIFNjcm9sbGFibGVB
cmVhOjpzZXRWZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoZWxhc3RpY2l0eSk7CiAjZW5kaWYKICAg
ICB9IGVsc2UgewotICAgICAgICBkZXN0cm95U2Nyb2xsYmFyKFZlcnRpY2FsU2Nyb2xsYmFyKTsK
KyAgICAgICAgZGVzdHJveVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwp
OwogI2lmIEhBVkUoUlVCQkVSX0JBTkRJTkcpCiAgICAgICAgIFNjcm9sbGFibGVBcmVhOjpzZXRW
ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoU2Nyb2xsRWxhc3RpY2l0eU5vbmUpOwogI2VuZGlmCkBA
IC0xMDgwLDcgKzEwODAsNyBAQCB2b2lkIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnVwZGF0
ZVNjcm9sbGJhclByZXNlbmNlQW5kU3RhdGUoc3RkOjpvcHRpb25hbDxibwogICAgIH07CiAKICAg
ICBhdXRvIHNjcm9sbGJhckZvckF4aXMgPSBbJl0oU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50
YXRpb24pIC0+IFJlZlB0cjxTY3JvbGxiYXI+JiB7Ci0gICAgICAgIHJldHVybiBvcmllbnRhdGlv
biA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbFNjcm9sbGJhciA/IG1faEJhciA6
IG1fdkJhcjsKKyAgICAgICAgcmV0dXJuIG9yaWVudGF0aW9uID09IFNjcm9sbGJhck9yaWVudGF0
aW9uOjpIb3Jpem9udGFsID8gbV9oQmFyIDogbV92QmFyOwogICAgIH07CiAKICAgICBhdXRvIHN0
YXRlRm9yU2Nyb2xsYmFyID0gWyZdKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBz
dGQ6Om9wdGlvbmFsPGJvb2w+IGhhc092ZXJmbG93LCBTY3JvbGxiYXJTdGF0ZSBub25TY3JvbGxh
YmxlU3RhdGUpIHsKQEAgLTExMDIsMTIgKzExMDIsMTIgQEAgdm9pZCBSZW5kZXJMYXllclNjcm9s
bGFibGVBcmVhOjp1cGRhdGVTY3JvbGxiYXJQcmVzZW5jZUFuZFN0YXRlKHN0ZDo6b3B0aW9uYWw8
Ym8KICAgICAgICAgcmV0dXJuIFNjcm9sbGJhclN0YXRlOjpOb1Njcm9sbGJhcjsKICAgICB9Owog
Ci0gICAgYXV0byBob3Jpem9udGFsQmFyU3RhdGUgPSBzdGF0ZUZvclNjcm9sbGJhck9uQXhpcyhT
Y3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbFNjcm9sbGJhciwgaGFzSG9yaXpvbnRhbE92
ZXJmbG93KTsKKyAgICBhdXRvIGhvcml6b250YWxCYXJTdGF0ZSA9IHN0YXRlRm9yU2Nyb2xsYmFy
T25BeGlzKFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsLCBoYXNIb3Jpem9udGFsT3Zl
cmZsb3cpOwogICAgIHNldEhhc0hvcml6b250YWxTY3JvbGxiYXIoaG9yaXpvbnRhbEJhclN0YXRl
ICE9IFNjcm9sbGJhclN0YXRlOjpOb1Njcm9sbGJhcik7CiAgICAgaWYgKGhvcml6b250YWxCYXJT
dGF0ZSAhPSBTY3JvbGxiYXJTdGF0ZTo6Tm9TY3JvbGxiYXIpCiAgICAgICAgIG1faEJhci0+c2V0
RW5hYmxlZChob3Jpem9udGFsQmFyU3RhdGUgPT0gU2Nyb2xsYmFyU3RhdGU6OkVuYWJsZWQpOwog
Ci0gICAgYXV0byB2ZXJ0aWNhbEJhclN0YXRlID0gc3RhdGVGb3JTY3JvbGxiYXJPbkF4aXMoU2Ny
b2xsYmFyT3JpZW50YXRpb246OlZlcnRpY2FsU2Nyb2xsYmFyLCBoYXNWZXJ0aWNhbE92ZXJmbG93
KTsKKyAgICBhdXRvIHZlcnRpY2FsQmFyU3RhdGUgPSBzdGF0ZUZvclNjcm9sbGJhck9uQXhpcyhT
Y3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwsIGhhc1ZlcnRpY2FsT3ZlcmZsb3cpOwogICAg
IHNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKHZlcnRpY2FsQmFyU3RhdGUgIT0gU2Nyb2xsYmFyU3Rh
dGU6Ok5vU2Nyb2xsYmFyKTsKICAgICBpZiAodmVydGljYWxCYXJTdGF0ZSAhPSBTY3JvbGxiYXJT
dGF0ZTo6Tm9TY3JvbGxiYXIpCiAgICAgICAgIG1fdkJhci0+c2V0RW5hYmxlZCh2ZXJ0aWNhbEJh
clN0YXRlID09IFNjcm9sbGJhclN0YXRlOjpFbmFibGVkKTsKQEAgLTExNTAsOCArMTE1MCw4IEBA
IHZvaWQgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dXBkYXRlU2Nyb2xsYmFyc0FmdGVyTGF5
b3V0KCkKICAgICB1cGRhdGVTY3JvbGxiYXJQcmVzZW5jZUFuZFN0YXRlKGhhc0hvcml6b250YWxP
dmVyZmxvdygpLCBoYXNWZXJ0aWNhbE92ZXJmbG93KCkpOwogCiAgICAgLy8gU2Nyb2xsYmFycyB3
aXRoIGF1dG8gYmVoYXZpb3IgbWF5IG5lZWQgdG8gbGF5IG91dCBhZ2FpbiBpZiBzY3JvbGxiYXJz
IGdvdCBhZGRlZCBvciByZW1vdmVkLgotICAgIGJvb2wgYXV0b0hvcml6b250YWxTY3JvbGxCYXJD
aGFuZ2VkID0gYm94LT5oYXNBdXRvU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jp
em9udGFsU2Nyb2xsYmFyKSAmJiAoaGFkSG9yaXpvbnRhbFNjcm9sbGJhciAhPSBoYXNIb3Jpem9u
dGFsU2Nyb2xsYmFyKCkpOwotICAgIGJvb2wgYXV0b1ZlcnRpY2FsU2Nyb2xsQmFyQ2hhbmdlZCA9
IGJveC0+aGFzQXV0b1Njcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWxTY3Jv
bGxiYXIpICYmIChoYWRWZXJ0aWNhbFNjcm9sbGJhciAhPSBoYXNWZXJ0aWNhbFNjcm9sbGJhcigp
KTsKKyAgICBib29sIGF1dG9Ib3Jpem9udGFsU2Nyb2xsQmFyQ2hhbmdlZCA9IGJveC0+aGFzQXV0
b1Njcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCkgJiYgKGhhZEhvcml6
b250YWxTY3JvbGxiYXIgIT0gaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpKTsKKyAgICBib29sIGF1
dG9WZXJ0aWNhbFNjcm9sbEJhckNoYW5nZWQgPSBib3gtPmhhc0F1dG9TY3JvbGxiYXIoU2Nyb2xs
YmFyT3JpZW50YXRpb246OlZlcnRpY2FsKSAmJiAoaGFkVmVydGljYWxTY3JvbGxiYXIgIT0gaGFz
VmVydGljYWxTY3JvbGxiYXIoKSk7CiAKICAgICBpZiAoYXV0b0hvcml6b250YWxTY3JvbGxCYXJD
aGFuZ2VkIHx8IGF1dG9WZXJ0aWNhbFNjcm9sbEJhckNoYW5nZWQpIHsKICAgICAgICAgaWYgKGF1
dG9WZXJ0aWNhbFNjcm9sbEJhckNoYW5nZWQgJiYgc2hvdWxkUGxhY2VWZXJ0aWNhbFNjcm9sbGJh
ck9uTGVmdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCmlu
ZGV4IDYzODZmYmEyZjQ5OGI1ZDZiODAyMmRiMTg0MmI0OTVmMGU1OGEwYmMuLmE2NmNiZmU5MDlh
MWFiNjBmZGJmZjBlZTU0NGE5ZmU1YzFkYWU0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIFJlbmRlckxpc3RC
b3g6OmxheW91dCgpCiAgICAgICAgIG1fdkJhci0+c2V0U3RlcHMoMSwgc3RkOjptYXgoMSwgbnVt
VmlzaWJsZUl0ZW1zKCkgLSAxKSwgaXRlbUhlaWdodCgpKTsKICAgICAgICAgbV92QmFyLT5zZXRQ
cm9wb3J0aW9uKG51bVZpc2libGVJdGVtcygpLCBudW1JdGVtcygpKTsKICAgICAgICAgaWYgKCFl
bmFibGVkKSB7Ci0gICAgICAgICAgICBzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oVmVy
dGljYWxTY3JvbGxiYXIsIDApOworICAgICAgICAgICAgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5p
bWF0aW9uKFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbCwgMCk7CiAgICAgICAgICAgICBt
X2luZGV4T2Zmc2V0ID0gMDsKICAgICAgICAgfQogICAgIH0KQEAgLTYwMCw3ICs2MDAsNyBAQCBi
b29sIFJlbmRlckxpc3RCb3g6OnNjcm9sbFRvUmV2ZWFsRWxlbWVudEF0TGlzdEluZGV4KGludCBp
bmRleCkKICAgICBlbHNlCiAgICAgICAgIG5ld09mZnNldCA9IGluZGV4IC0gbnVtVmlzaWJsZUl0
ZW1zKCkgKyAxOwogCi0gICAgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKFZlcnRpY2Fs
U2Nyb2xsYmFyLCBuZXdPZmZzZXQpOworICAgIHNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlv
bihTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwsIG5ld09mZnNldCk7CiAKICAgICByZXR1
cm4gdHJ1ZTsKIH0KQEAgLTc1NSw3ICs3NTUsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnNldFNj
cm9sbFRvcChpbnQgbmV3VG9wLCBjb25zdCBTY3JvbGxQb3NpdGlvbkNoYW5nZU9wdGlvbnMmKQog
ICAgICAgICByZXR1cm47CiAKICAgICBzZXR1cFdoZWVsRXZlbnRUZXN0TW9uaXRvcigqdGhpcyk7
Ci0gICAgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKFZlcnRpY2FsU2Nyb2xsYmFyLCBp
bmRleCk7CisgICAgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKFNjcm9sbGJhck9yaWVu
dGF0aW9uOjpWZXJ0aWNhbCwgaW5kZXgpOwogfQogCiBib29sIFJlbmRlckxpc3RCb3g6Om5vZGVB
dFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1
bHQsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5
b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24p
CkBAIC05MTMsMTAgKzkxMywxMCBAQCBSZWY8U2Nyb2xsYmFyPiBSZW5kZXJMaXN0Qm94OjpjcmVh
dGVTY3JvbGxiYXIoKQogICAgIFJlZlB0cjxTY3JvbGxiYXI+IHdpZGdldDsKICAgICBib29sIGhh
c0N1c3RvbVNjcm9sbGJhclN0eWxlID0gc3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6
U2Nyb2xsYmFyKTsKICAgICBpZiAoaGFzQ3VzdG9tU2Nyb2xsYmFyU3R5bGUpCi0gICAgICAgIHdp
ZGdldCA9IFJlbmRlclNjcm9sbGJhcjo6Y3JlYXRlQ3VzdG9tU2Nyb2xsYmFyKCp0aGlzLCBWZXJ0
aWNhbFNjcm9sbGJhciwgJnNlbGVjdEVsZW1lbnQoKSk7CisgICAgICAgIHdpZGdldCA9IFJlbmRl
clNjcm9sbGJhcjo6Y3JlYXRlQ3VzdG9tU2Nyb2xsYmFyKCp0aGlzLCBTY3JvbGxiYXJPcmllbnRh
dGlvbjo6VmVydGljYWwsICZzZWxlY3RFbGVtZW50KCkpOwogICAgIGVsc2UgewotICAgICAgICB3
aWRnZXQgPSBTY3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcigqdGhpcywgVmVydGljYWxT
Y3JvbGxiYXIsIHRoZW1lKCkuc2Nyb2xsYmFyQ29udHJvbFNpemVGb3JQYXJ0KExpc3Rib3hQYXJ0
KSk7Ci0gICAgICAgIGRpZEFkZFNjcm9sbGJhcih3aWRnZXQuZ2V0KCksIFZlcnRpY2FsU2Nyb2xs
YmFyKTsKKyAgICAgICAgd2lkZ2V0ID0gU2Nyb2xsYmFyOjpjcmVhdGVOYXRpdmVTY3JvbGxiYXIo
KnRoaXMsIFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbCwgdGhlbWUoKS5zY3JvbGxiYXJD
b250cm9sU2l6ZUZvclBhcnQoTGlzdGJveFBhcnQpKTsKKyAgICAgICAgZGlkQWRkU2Nyb2xsYmFy
KHdpZGdldC5nZXQoKSwgU2Nyb2xsYmFyT3JpZW50YXRpb246OlZlcnRpY2FsKTsKICAgICAgICAg
aWYgKHBhZ2UoKS5pc01vbml0b3JpbmdXaGVlbEV2ZW50cygpKQogICAgICAgICAgICAgc2Nyb2xs
QW5pbWF0b3IoKS5zZXRXaGVlbEV2ZW50VGVzdE1vbml0b3IocGFnZSgpLndoZWVsRXZlbnRUZXN0
TW9uaXRvcigpKTsKICAgICB9CkBAIC05MzAsNyArOTMwLDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94
OjpkZXN0cm95U2Nyb2xsYmFyKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3ZCYXIt
PmlzQ3VzdG9tU2Nyb2xsYmFyKCkpCi0gICAgICAgIFNjcm9sbGFibGVBcmVhOjp3aWxsUmVtb3Zl
U2Nyb2xsYmFyKG1fdkJhci5nZXQoKSwgVmVydGljYWxTY3JvbGxiYXIpOworICAgICAgICBTY3Jv
bGxhYmxlQXJlYTo6d2lsbFJlbW92ZVNjcm9sbGJhcihtX3ZCYXIuZ2V0KCksIFNjcm9sbGJhck9y
aWVudGF0aW9uOjpWZXJ0aWNhbCk7CiAgICAgbV92QmFyLT5yZW1vdmVGcm9tUGFyZW50KCk7CiAg
ICAgbV92QmFyID0gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNjcm9sbGJhci5jcHAKaW5kZXggYWIxN2FlODE3NzFkODdhOGZhMThmYzQyN2Q0YzcwY2FkYzBk
NzQ2Ni4uNjFjZTI1MDc2ZjY3YzM5NzRlYWJjYmUyZWMwY2U1MzA4OGJiNjlkYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAKQEAgLTU4LDcgKzU4LDcg
QEAgUmVuZGVyU2Nyb2xsYmFyOjpSZW5kZXJTY3JvbGxiYXIoU2Nyb2xsYWJsZUFyZWEmIHNjcm9s
bGFibGVBcmVhLCBTY3JvbGxiYXJPcmllbnQKICAgICAgICAgcGFydC0+bGF5b3V0KCk7CiAgICAg
ICAgIHdpZHRoID0gcGFydC0+d2lkdGgoKTsKICAgICAgICAgaGVpZ2h0ID0gcGFydC0+aGVpZ2h0
KCk7Ci0gICAgfSBlbHNlIGlmICh0aGlzLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3Jv
bGxiYXIpCisgICAgfSBlbHNlIGlmICh0aGlzLT5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9y
aWVudGF0aW9uOjpIb3Jpem9udGFsKQogICAgICAgICB3aWR0aCA9IHRoaXMtPndpZHRoKCk7CiAg
ICAgZWxzZQogICAgICAgICBoZWlnaHQgPSB0aGlzLT5oZWlnaHQoKTsKQEAgLTE3NCw3ICsxNzQs
NyBAQCB2b2lkIFJlbmRlclNjcm9sbGJhcjo6dXBkYXRlU2Nyb2xsYmFyUGFydHMoKQogICAgIHVw
ZGF0ZVNjcm9sbGJhclBhcnQoVHJhY2tCR1BhcnQpOwogICAgIAogICAgIC8vIFNlZSBpZiB0aGUg
c2Nyb2xsYmFyJ3MgdGhpY2tuZXNzIGNoYW5nZWQuICBJZiBzbywgd2UgbmVlZCB0byBtYXJrIG91
ciBvd25pbmcgb2JqZWN0IGFzIG5lZWRpbmcgYSBsYXlvdXQuCi0gICAgYm9vbCBpc0hvcml6b250
YWwgPSBvcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXI7ICAgIAorICAgIGJvb2wg
aXNIb3Jpem9udGFsID0gb3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9y
aXpvbnRhbDsKICAgICBpbnQgb2xkVGhpY2tuZXNzID0gaXNIb3Jpem9udGFsID8gaGVpZ2h0KCkg
OiB3aWR0aCgpOwogICAgIGludCBuZXdUaGlja25lc3MgPSAwOwogICAgIFJlbmRlclNjcm9sbGJh
clBhcnQqIHBhcnQgPSBtX3BhcnRzLmdldChTY3JvbGxiYXJCR1BhcnQpOwpAQCAtMjc1LDcgKzI3
NSw3IEBAIEludFJlY3QgUmVuZGVyU2Nyb2xsYmFyOjpidXR0b25SZWN0KFNjcm9sbGJhclBhcnQg
cGFydFR5cGUpIGNvbnN0CiAgICAgICAgIAogICAgIHBhcnRSZW5kZXJlci0+bGF5b3V0KCk7CiAg
ICAgCi0gICAgYm9vbCBpc0hvcml6b250YWwgPSBvcmllbnRhdGlvbigpID09IEhvcml6b250YWxT
Y3JvbGxiYXI7CisgICAgYm9vbCBpc0hvcml6b250YWwgPSBvcmllbnRhdGlvbigpID09IFNjcm9s
bGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsOwogICAgIEludFNpemUgcGl4ZWxTbmFwcGVkSW50
U2l6ZSA9IHNuYXBwZWRJbnRSZWN0KHBhcnRSZW5kZXJlci0+ZnJhbWVSZWN0KCkpLnNpemUoKTsK
ICAgICBpZiAocGFydFR5cGUgPT0gQmFja0J1dHRvblN0YXJ0UGFydCkKICAgICAgICAgcmV0dXJu
IEludFJlY3QobG9jYXRpb24oKSwgSW50U2l6ZShpc0hvcml6b250YWwgPyBwaXhlbFNuYXBwZWRJ
bnRTaXplLndpZHRoKCkgOiB3aWR0aCgpLCBpc0hvcml6b250YWwgPyBoZWlnaHQoKSA6IHBpeGVs
U25hcHBlZEludFNpemUuaGVpZ2h0KCkpKTsKQEAgLTMwNSw3ICszMDUsNyBAQCBJbnRSZWN0IFJl
bmRlclNjcm9sbGJhcjo6dHJhY2tSZWN0KGludCBzdGFydExlbmd0aCwgaW50IGVuZExlbmd0aCkg
Y29uc3QKICAgICBpZiAocGFydCkKICAgICAgICAgcGFydC0+bGF5b3V0KCk7CiAKLSAgICBpZiAo
b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CisgICAgaWYgKG9yaWVudGF0
aW9uKCkgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWwpIHsKICAgICAgICAgaW50
IG1hcmdpbkxlZnQgPSBwYXJ0ID8gc3RhdGljX2Nhc3Q8aW50PihwYXJ0LT5tYXJnaW5MZWZ0KCkp
IDogMDsKICAgICAgICAgaW50IG1hcmdpblJpZ2h0ID0gcGFydCA/IHN0YXRpY19jYXN0PGludD4o
cGFydC0+bWFyZ2luUmlnaHQoKSkgOiAwOwogICAgICAgICBzdGFydExlbmd0aCArPSBtYXJnaW5M
ZWZ0OwpAQCAtMzMyLDcgKzMzMiw3IEBAIEludFJlY3QgUmVuZGVyU2Nyb2xsYmFyOjp0cmFja1Bp
ZWNlUmVjdFdpdGhNYXJnaW5zKFNjcm9sbGJhclBhcnQgcGFydFR5cGUsIGNvbnN0CiAgICAgcGFy
dFJlbmRlcmVyLT5sYXlvdXQoKTsKICAgICAKICAgICBJbnRSZWN0IHJlY3QgPSBvbGRSZWN0Owot
ICAgIGlmIChvcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpIHsKKyAgICBpZiAo
b3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCkgewogICAg
ICAgICByZWN0LnNldFgocmVjdC54KCkgKyBwYXJ0UmVuZGVyZXItPm1hcmdpbkxlZnQoKSk7CiAg
ICAgICAgIHJlY3Quc2V0V2lkdGgocmVjdC53aWR0aCgpIC0gcGFydFJlbmRlcmVyLT5ob3Jpem9u
dGFsTWFyZ2luRXh0ZW50KCkpOwogICAgIH0gZWxzZSB7CkBAIC0zNDgsNyArMzQ4LDcgQEAgaW50
IFJlbmRlclNjcm9sbGJhcjo6bWluaW11bVRodW1iTGVuZ3RoKCkgY29uc3QKICAgICBpZiAoIXBh
cnRSZW5kZXJlcikKICAgICAgICAgcmV0dXJuIDA7ICAgIAogICAgIHBhcnRSZW5kZXJlci0+bGF5
b3V0KCk7Ci0gICAgcmV0dXJuIG9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/
IHBhcnRSZW5kZXJlci0+d2lkdGgoKSA6IHBhcnRSZW5kZXJlci0+aGVpZ2h0KCk7CisgICAgcmV0
dXJuIG9yaWVudGF0aW9uKCkgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWwgPyBw
YXJ0UmVuZGVyZXItPndpZHRoKCkgOiBwYXJ0UmVuZGVyZXItPmhlaWdodCgpOwogfQogCiBmbG9h
dCBSZW5kZXJTY3JvbGxiYXI6Om9wYWNpdHkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCmluZGV4IDM5MmQ3ZWUzNDc3ZWYyMWU5
NjM0Yzg4ODViNjcxNGZkNjI4NWYwYzQuLmZlMzk0YTdhYzMxZjljZDk1NTEzZDQ1OGFmMGZmYmRk
MmY0OGM3MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3Jv
bGxiYXJQYXJ0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xs
YmFyUGFydC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0Ojps
YXlvdXQoKQogewogICAgIFN0YWNrU3RhdHM6OkxheW91dENoZWNrUG9pbnQgbGF5b3V0Q2hlY2tQ
b2ludDsKICAgICBzZXRMb2NhdGlvbihMYXlvdXRQb2ludCgpKTsgLy8gV2UgZG9uJ3Qgd29ycnkg
YWJvdXQgcG9zaXRpb25pbmcgb3Vyc2VsdmVzLiBXZSdyZSBqdXN0IGRldGVybWluaW5nIG91ciBt
aW5pbXVtIHdpZHRoL2hlaWdodC4KLSAgICBpZiAobV9zY3JvbGxiYXItPm9yaWVudGF0aW9uKCkg
PT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKKyAgICBpZiAobV9zY3JvbGxiYXItPm9yaWVudGF0aW9u
KCkgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWwpCiAgICAgICAgIGxheW91dEhv
cml6b250YWxQYXJ0KCk7CiAgICAgZWxzZQogICAgICAgICBsYXlvdXRWZXJ0aWNhbFBhcnQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVt
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3Bw
CmluZGV4IDhlZjc5MmJlNTNjZjExYzc1NjM1ZDhjOTJjNTQ5ZTMzMzg0YTBjY2IuLjIxYjg5M2Uz
YjFjMmFmOTU5YjRiMjgyOGRiMmFhZDZjZmExMTI5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcApAQCAtNDMsNyArNDMsNyBAQCB2
b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpidXR0b25TaXplc0Fsb25nVHJhY2tBeGlzKFNjcm9s
bGJhciYgc2Nyb2xsYmFyLCBpbnQmCiAgICAgSW50UmVjdCBzZWNvbmRCdXR0b24gPSBmb3J3YXJk
QnV0dG9uUmVjdChzY3JvbGxiYXIsIEZvcndhcmRCdXR0b25TdGFydFBhcnQpOwogICAgIEludFJl
Y3QgdGhpcmRCdXR0b24gPSBiYWNrQnV0dG9uUmVjdChzY3JvbGxiYXIsIEJhY2tCdXR0b25FbmRQ
YXJ0KTsKICAgICBJbnRSZWN0IGZvdXJ0aEJ1dHRvbiA9IGZvcndhcmRCdXR0b25SZWN0KHNjcm9s
bGJhciwgRm9yd2FyZEJ1dHRvbkVuZFBhcnQpOwotICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRp
b24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CisgICAgaWYgKHNjcm9sbGJhci5vcmllbnRh
dGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKSB7CiAgICAgICAgIGJl
Zm9yZVNpemUgPSBmaXJzdEJ1dHRvbi53aWR0aCgpICsgc2Vjb25kQnV0dG9uLndpZHRoKCk7CiAg
ICAgICAgIGFmdGVyU2l6ZSA9IHRoaXJkQnV0dG9uLndpZHRoKCkgKyBmb3VydGhCdXR0b24ud2lk
dGgoKTsKICAgICB9IGVsc2UgewpAQCAtNTcsNyArNTcsNyBAQCBib29sIFJlbmRlclNjcm9sbGJh
clRoZW1lOjpoYXNCdXR0b25zKFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogICAgIGludCBzdGFydFNp
emU7CiAgICAgaW50IGVuZFNpemU7CiAgICAgYnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyhzY3Jv
bGxiYXIsIHN0YXJ0U2l6ZSwgZW5kU2l6ZSk7Ci0gICAgcmV0dXJuIChzdGFydFNpemUgKyBlbmRT
aXplKSA8PSAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/
IHNjcm9sbGJhci53aWR0aCgpIDogc2Nyb2xsYmFyLmhlaWdodCgpKTsKKyAgICByZXR1cm4gKHN0
YXJ0U2l6ZSArIGVuZFNpemUpIDw9IChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxi
YXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCA/IHNjcm9sbGJhci53aWR0aCgpIDogc2Nyb2xsYmFy
LmhlaWdodCgpKTsKIH0KIAogYm9vbCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFzVGh1bWIoU2Ny
b2xsYmFyJiBzY3JvbGxiYXIpCkBAIC05Nyw3ICs5Nyw3IEBAIEludFJlY3QgUmVuZGVyU2Nyb2xs
YmFyVGhlbWU6OmNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xsYmFyJiBzY3Jv
bGxiCiAgICAgSW50UmVjdCBiYWNrUmVjdCA9IGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4oc2Ny
b2xsYmFyKS50cmFja1BpZWNlUmVjdFdpdGhNYXJnaW5zKEJhY2tUcmFja1BhcnQsIHJlY3QpOwog
ICAgIEludFJlY3QgZm9yd2FyZFJlY3QgPSBkb3duY2FzdDxSZW5kZXJTY3JvbGxiYXI+KHNjcm9s
bGJhcikudHJhY2tQaWVjZVJlY3RXaXRoTWFyZ2lucyhGb3J3YXJkVHJhY2tQYXJ0LCByZWN0KTsK
ICAgICBJbnRSZWN0IHJlc3VsdCA9IHJlY3Q7Ci0gICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlv
bigpID09IEhvcml6b250YWxTY3JvbGxiYXIpIHsKKyAgICBpZiAoc2Nyb2xsYmFyLm9yaWVudGF0
aW9uKCkgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWwpIHsKICAgICAgICAgcmVz
dWx0LnNldFgoYmFja1JlY3QueCgpKTsKICAgICAgICAgcmVzdWx0LnNldFdpZHRoKGZvcndhcmRS
ZWN0Lm1heFgoKSAtIGJhY2tSZWN0LngoKSk7CiAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcAppbmRleCA5ZmYwMjZkM2Q2YzY5Nzdh
YmU1YjM0Yjc3OWU4ZjBhNTZiNjkyNTk0Li4xNTIyOTlhNmIzNDc1YTMzYzU3YmQyZGRlMDk1YzY2
ODgwN2FkNWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVz
dWx0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERh
dGEuY3BwCkBAIC01OCw3ICs1OCw3IEBAIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpXZWJIaXRUZXN0
UmVzdWx0RGF0YShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBoaXRUZXN0CiAgICAgLCBp
bWFnZVNpemUoMCkKIHsKICAgICBpZiAoYXV0byogc2Nyb2xsYmFyID0gaGl0VGVzdFJlc3VsdC5z
Y3JvbGxiYXIoKSkKLSAgICAgICAgaXNTY3JvbGxiYXIgPSBzY3JvbGxiYXItPm9yaWVudGF0aW9u
KCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IElzU2Nyb2xsYmFyOjpIb3Jpem9udGFsIDogSXNT
Y3JvbGxiYXI6OlZlcnRpY2FsOworICAgICAgICBpc1Njcm9sbGJhciA9IHNjcm9sbGJhci0+b3Jp
ZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCA/IElzU2Nyb2xs
YmFyOjpIb3Jpem9udGFsIDogSXNTY3JvbGxiYXI6OlZlcnRpY2FsOwogfQogCiBXZWJIaXRUZXN0
UmVzdWx0RGF0YTo6V2ViSGl0VGVzdFJlc3VsdERhdGEoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJl
c3VsdCYgaGl0VGVzdFJlc3VsdCwgYm9vbCBpbmNsdWRlSW1hZ2UpCkBAIC03OSw3ICs3OSw3IEBA
IFdlYkhpdFRlc3RSZXN1bHREYXRhOjpXZWJIaXRUZXN0UmVzdWx0RGF0YShjb25zdCBXZWJDb3Jl
OjpIaXRUZXN0UmVzdWx0JiBoaXRUZXN0CiAgICAgLCBpbWFnZVNpemUoMCkKIHsKICAgICBpZiAo
YXV0byogc2Nyb2xsYmFyID0gaGl0VGVzdFJlc3VsdC5zY3JvbGxiYXIoKSkKLSAgICAgICAgaXNT
Y3JvbGxiYXIgPSBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJh
ciA/IElzU2Nyb2xsYmFyOjpIb3Jpem9udGFsIDogSXNTY3JvbGxiYXI6OlZlcnRpY2FsOworICAg
ICAgICBpc1Njcm9sbGJhciA9IHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJP
cmllbnRhdGlvbjo6SG9yaXpvbnRhbCA/IElzU2Nyb2xsYmFyOjpIb3Jpem9udGFsIDogSXNTY3Jv
bGxiYXI6OlZlcnRpY2FsOwogCiAgICAgaWYgKCFpbmNsdWRlSW1hZ2UpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tCmluZGV4IDBlMWQwN2FlM2QwYzgxNzRlYjZjM2RiYzkzODJhZDU0YjY3MzQzMDMuLjhiMjQ3
N2FlN2ViNDYzODM0NGI3NmIxYmNiMzhkZTk5MGVmYjUwMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMTMxMSwxNSArMTMx
MSwxNSBAQCB2b2lkIFBERlBsdWdpbjo6dXBkYXRlU2Nyb2xsYmFycygpCiAKICAgICBpZiAobV9o
b3Jpem9udGFsU2Nyb2xsYmFyKSB7CiAgICAgICAgIGlmIChtX3NpemUud2lkdGgoKSA+PSBtX3Bk
ZkRvY3VtZW50U2l6ZS53aWR0aCgpKQotICAgICAgICAgICAgZGVzdHJveVNjcm9sbGJhcihIb3Jp
em9udGFsU2Nyb2xsYmFyKTsKKyAgICAgICAgICAgIGRlc3Ryb3lTY3JvbGxiYXIoU2Nyb2xsYmFy
T3JpZW50YXRpb246Okhvcml6b250YWwpOwogICAgIH0gZWxzZSBpZiAobV9zaXplLndpZHRoKCkg
PCBtX3BkZkRvY3VtZW50U2l6ZS53aWR0aCgpKQotICAgICAgICBtX2hvcml6b250YWxTY3JvbGxi
YXIgPSBjcmVhdGVTY3JvbGxiYXIoSG9yaXpvbnRhbFNjcm9sbGJhcik7CisgICAgICAgIG1faG9y
aXpvbnRhbFNjcm9sbGJhciA9IGNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbjo6
SG9yaXpvbnRhbCk7CiAKICAgICBpZiAobV92ZXJ0aWNhbFNjcm9sbGJhcikgewogICAgICAgICBp
ZiAobV9zaXplLmhlaWdodCgpID49IG1fcGRmRG9jdW1lbnRTaXplLmhlaWdodCgpKQotICAgICAg
ICAgICAgZGVzdHJveVNjcm9sbGJhcihWZXJ0aWNhbFNjcm9sbGJhcik7CisgICAgICAgICAgICBk
ZXN0cm95U2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbCk7CiAgICAgfSBl
bHNlIGlmIChtX3NpemUuaGVpZ2h0KCkgPCBtX3BkZkRvY3VtZW50U2l6ZS5oZWlnaHQoKSkKLSAg
ICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhciA9IGNyZWF0ZVNjcm9sbGJhcihWZXJ0aWNhbFNjcm9s
bGJhcik7CisgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXIgPSBjcmVhdGVTY3JvbGxiYXIoU2Ny
b2xsYmFyT3JpZW50YXRpb246OlZlcnRpY2FsKTsKIAogICAgIEludFNpemUgc2Nyb2xsYmFyU3Bh
Y2UgPSBzY3JvbGxiYXJJbnRydXNpb24oKTsKIApAQCAtMTM4NCw3ICsxMzg0LDcgQEAgY29uc3Qg
UGx1Z2luVmlldyogUERGUGx1Z2luOjpwbHVnaW5WaWV3KCkgY29uc3QKIFJlZjxTY3JvbGxiYXI+
IFBERlBsdWdpbjo6Y3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0
aW9uKQogewogICAgIGF1dG8gd2lkZ2V0ID0gU2Nyb2xsYmFyOjpjcmVhdGVOYXRpdmVTY3JvbGxi
YXIoKnRoaXMsIG9yaWVudGF0aW9uLCBTY3JvbGxiYXJDb250cm9sU2l6ZTo6UmVndWxhcik7Ci0g
ICAgaWYgKG9yaWVudGF0aW9uID09IEhvcml6b250YWxTY3JvbGxiYXIpIHsKKyAgICBpZiAob3Jp
ZW50YXRpb24gPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWwpIHsKICAgICAgICAg
bV9ob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIgPSBhZG9wdE5TKFtbV0tQREZQbHVnaW5TY3JvbGxi
YXJMYXllciBhbGxvY10gaW5pdFdpdGhQREZQbHVnaW46dGhpc10pOwogICAgICAgICBbbV9jb250
YWluZXJMYXllciBhZGRTdWJsYXllcjptX2hvcml6b250YWxTY3JvbGxiYXJMYXllci5nZXQoKV07
CiAgICAgfSBlbHNlIHsKQEAgLTE0MTIsNyArMTQxMiw3IEBAIFJlZjxTY3JvbGxiYXI+IFBERlBs
dWdpbjo6Y3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQog
CiB2b2lkIFBERlBsdWdpbjo6ZGVzdHJveVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbiBv
cmllbnRhdGlvbikKIHsKLSAgICBSZWZQdHI8U2Nyb2xsYmFyPiYgc2Nyb2xsYmFyID0gb3JpZW50
YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IG1faG9yaXpvbnRhbFNjcm9sbGJhciA6IG1f
dmVydGljYWxTY3JvbGxiYXI7CisgICAgUmVmUHRyPFNjcm9sbGJhcj4mIHNjcm9sbGJhciA9IG9y
aWVudGF0aW9uID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsID8gbV9ob3Jpem9u
dGFsU2Nyb2xsYmFyIDogbV92ZXJ0aWNhbFNjcm9sbGJhcjsKICAgICBpZiAoIXNjcm9sbGJhcikK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDIwLDcgKzE0MjAsNyBAQCB2b2lkIFBERlBsdWdpbjo6
ZGVzdHJveVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKICAgICBz
Y3JvbGxiYXItPnJlbW92ZUZyb21QYXJlbnQoKTsKICAgICBzY3JvbGxiYXIgPSBudWxscHRyOwog
Ci0gICAgaWYgKG9yaWVudGF0aW9uID09IEhvcml6b250YWxTY3JvbGxiYXIpIHsKKyAgICBpZiAo
b3JpZW50YXRpb24gPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWwpIHsKICAgICAg
ICAgW21faG9yaXpvbnRhbFNjcm9sbGJhckxheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKICAg
ICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIgPSAwOwogICAgIH0gZWxzZSB7CkBAIC0x
OTUyLDggKzE5NTIsOCBAQCB2b2lkIFBERlBsdWdpbjo6ZGVzdHJveSgpCiAgICAgbV9hY3RpdmVB
bm5vdGF0aW9uID0gbnVsbHB0cjsKICAgICBtX2Fubm90YXRpb25Db250YWluZXIgPSBudWxscHRy
OwogCi0gICAgZGVzdHJveVNjcm9sbGJhcihIb3Jpem9udGFsU2Nyb2xsYmFyKTsKLSAgICBkZXN0
cm95U2Nyb2xsYmFyKFZlcnRpY2FsU2Nyb2xsYmFyKTsKKyAgICBkZXN0cm95U2Nyb2xsYmFyKFNj
cm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKTsKKyAgICBkZXN0cm95U2Nyb2xsYmFyKFNj
cm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbCk7CiAgICAgCiAgICAgW21fc2Nyb2xsQ29ybmVy
TGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwogICAgIFttX2NvbnRlbnRMYXllciByZW1vdmVG
cm9tU3VwZXJsYXllcl07Cg==
</data>
<flag name="commit-queue"
          id="467978"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443332</attachid>
            <date>2021-11-04 12:21:36 -0700</date>
            <delta_ts>2021-11-04 14:58:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232648-20211104122136.patch</filename>
            <type>text/plain</type>
            <size>84266</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0OTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNkZTRiODAxM2NjOTky
MzJmOTQzM2IwODFmNzM2YTFhYjc3OWJhYi4uNDE1NzNjZDE1NzQ3MWQ2MGVhNDhmMTFiNjljNWM2
ZjhmZjdhNWZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDIxLTExLTAyICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2Ug
c2Nyb2xsYmFyIG9yaWVudGF0aW9uIGFuIGVudW0gY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjY0OAorCisgICAgICAgIFJldmlld2VkIGJ5
IFNpbW9uIEZyYXNlci4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNj
cm9sbGJhci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyOjpv
cmllbnRhdGlvbiBjb25zdCk6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5oOgorICAg
ICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXJUZXN0RnVuY3Rpb25zLmg6CisgICAgICAgIChXZWJD
b3JlOjpzY3JvbGxiYXJNYXRjaGVzSG9yaXpvbnRhbFBzZXVkb0NsYXNzKToKKyAgICAgICAgKFdl
YkNvcmU6OnNjcm9sbGJhck1hdGNoZXNWZXJ0aWNhbFBzZXVkb0NsYXNzKToKKyAgICAgICAgKiBw
YWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Omhvcml6b250
YWxTY3JvbGxiYXJIaWRkZW5CeVN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6dmVydGljYWxTY3JvbGxiYXJIaWRkZW5CeVN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6cGVyZm9ybVNpemVUb0NvbnRlbnRBdXRvU2l6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkanVzdFNjcm9sbFN0ZXBGb3JGaXhlZENvbnRlbnQpOgor
ICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsYWJsZUFy
ZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6ZGVsdGFGcm9tU3RlcCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgICog
cGxhdGZvcm0vU2Nyb2xsVHlwZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNldEhhc0hvcml6b250YWxTY3JvbGxi
YXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2V0SGFzVmVydGljYWxTY3JvbGxi
YXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGFibGVBcmVhOjpzY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YWJsZUFyZWE6OnNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxhYmxlQXJlYTo6ZGlkQWRkU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGFibGVBcmVhOjp3aWxsUmVtb3ZlU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGFibGVBcmVhOjpkb1Bvc3RUaHVtYk1vdmVTbmFwcGluZyk6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKFdlYkNvcmU6Om9mZnNldEZvck9yaWVu
dGF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyOjpwcmVzc2VkUGFydFNjcm9sbERpcmVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXI6Om1vdmVUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXI6Om1vdXNlTW92ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjptb3VzZURvd24p
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpzcGxpdFRyYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja1Bvc2l0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja0xlbmd0aCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpoYXNCdXR0b25zKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lTWFjOjpoYXNUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpidXR0b25S
ZXBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6YmFja0J1
dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OmZvcndhcmRC
dXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjp0cmFja1Jl
Y3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJzQ29udHJvbGxlck1hYy5tbToK
KyAgICAgICAgKC1bV2ViU2Nyb2xsZXJJbXBEZWxlZ2F0ZSBsYXllcl0pOgorICAgICAgICAoLVtX
ZWJTY3JvbGxlckltcERlbGVnYXRlIHNldFVwQWxwaGFBbmltYXRpb246c2Nyb2xsZXJQYWludGVy
OnBhcnQ6YW5pbWF0ZUFscGhhVG86ZHVyYXRpb246XSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Omhhc0F1dG9TY3JvbGxi
YXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpoYXNBbHdheXNQcmVzZW50
U2Nyb2xsYmFyIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlT3ZlcmZs
b3dDb250cm9sc0xheWVycyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0
ZU92ZXJmbG93Q29udHJvbHNMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpkZXN0cm95Um9vdExheWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllclNj
cm9sbGFibGVBcmVhOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllclNjcm9s
bGFibGVBcmVhOjpkZXN0cm95U2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyU2Nyb2xsYWJsZUFyZWE6OnNldEhhc0hvcml6b250YWxTY3JvbGxiYXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6c2V0SGFzVmVydGljYWxTY3JvbGxi
YXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dXBkYXRl
U2Nyb2xsYmFyUHJlc2VuY2VBbmRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
clNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxiYXJzQWZ0ZXJMYXlvdXQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxp
c3RCb3g6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpzY3JvbGxU
b1JldmVhbEVsZW1lbnRBdExpc3RJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
Qm94OjpzZXRTY3JvbGxUb3ApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6Y3Jl
YXRlU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OmRlc3Ryb3lT
Y3JvbGxiYXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyOjpSZW5kZXJTY3JvbGxiYXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyOjp1cGRhdGVTY3JvbGxiYXJQYXJ0cyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXI6OmJ1dHRvblJlY3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyOjp0cmFja1JlY3QgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyOjp0cmFja1BpZWNlUmVjdFdpdGhNYXJnaW5zIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6bWluaW11bVRodW1iTGVuZ3Ro
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJQYXJ0OjpsYXlvdXQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTY3JvbGxiYXJUaGVtZTo6YnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFzQnV0dG9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6Y29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1Bp
ZWNlcyk6CisKIDIwMjEtMTAtMjggIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUu
Y29tPgogCiAgICAgICAgIElzb2xhdGVkIHRyZWUgbW9kZTogRGlzcGF0Y2ggYWxsIGNhbGxzIHRv
IFtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWVdIGluIFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudCB0byB0aGUgQVggdGhyZWFkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBhMDE0ZGE3NjM1Yzc1MjZiYTJmMDA4NzA4N2JhNzdjMTUxYmNhM2I1Li44MmE4MTBl
ZTk2YTRhZDljNTM5Nzg4MWFiYjk0NzUxNjkzNjNmNTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4
IEBACisyMDIxLTExLTAyICBOaWtvbGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUu
Y29tPgorCisgICAgICAgIE1ha2Ugc2Nyb2xsYmFyIG9yaWVudGF0aW9uIGFuIGVudW0gY2xhc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjY0OAor
CisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICAqIFNoYXJlZC9X
ZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkhpdFRlc3RSZXN1
bHREYXRhOjpXZWJIaXRUZXN0UmVzdWx0RGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6dXBkYXRl
U2Nyb2xsYmFycyk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Y3JlYXRlU2Nyb2xsYmFy
KToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpkZXN0cm95U2Nyb2xsYmFyKToKKyAgICAg
ICAgKFdlYktpdDo6UERGUGx1Z2luOjpkZXN0cm95KToKKwogMjAyMS0xMC0yOCAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgV2ViUGFnZVByb3h5
IGlkZW50aWZpZXJzIHRvIGBWaWV3R2VzdHVyZXNgIGNhdGVnb3J5IGxvZ2dpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIu
Y3BwCmluZGV4IDc1NDdmNmYxNTVhOTg5ZTgyODAwM2UxZTAyOWI4ZTM3NGQ5MjYyOWUuLjZjYTRl
YTQ4OGQ2YjU3ZTMyZWI4NDIyMDM4MGI5MmMzZjRlZTQyZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmNwcApAQCAt
NjksOSArNjksOSBAQCBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gQWNjZXNzaWJpbGl0eVNjcm9s
bGJhcjo6b3JpZW50YXRpb24oKSBjb25zdAogICAgIGlmICghbV9zY3JvbGxiYXIpCiAgICAgICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246OlZlcnRpY2FsOwogCi0gICAgaWYgKG1f
c2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpCisgICAgaWYg
KG1fc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jp
em9udGFsKQogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpIb3Jpem9u
dGFsOwotICAgIGlmIChtX3Njcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9s
bGJhcikKKyAgICBpZiAobV9zY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gU2Nyb2xsYmFyT3Jp
ZW50YXRpb246OlZlcnRpY2FsKQogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0
aW9uOjpWZXJ0aWNhbDsKIAogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246OlZl
cnRpY2FsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCmluZGV4IDNjYzA3YWFmZTE0
MTY4YzE0NGU4YTlkNThjYmYyN2JmOWUzNjFjMDYuLjkyYTYwNDQ4ZTllZGZmOTgyNTNhMThkYjYy
NjJkZWZmZTBjYTkyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNo
ZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKQEAgLTQz
LDcgKzQzLDcgQEAgc3RydWN0IFN0eWxlU2Nyb2xsYmFyU3RhdGUgewogICAgIFNjcm9sbGJhclBh
cnQgc2Nyb2xsYmFyUGFydCB7IE5vUGFydCB9OwogICAgIFNjcm9sbGJhclBhcnQgaG92ZXJlZFBh
cnQgeyBOb1BhcnQgfTsKICAgICBTY3JvbGxiYXJQYXJ0IHByZXNzZWRQYXJ0IHsgTm9QYXJ0IH07
Ci0gICAgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24geyBWZXJ0aWNhbFNjcm9sbGJh
ciB9OworICAgIFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uIHsgU2Nyb2xsYmFyT3Jp
ZW50YXRpb246OlZlcnRpY2FsIH07CiAgICAgU2Nyb2xsYmFyQnV0dG9uc1BsYWNlbWVudCBidXR0
b25zUGxhY2VtZW50IHsgU2Nyb2xsYmFyQnV0dG9uc05vbmUgfTsKICAgICBib29sIGVuYWJsZWQg
eyBmYWxzZSB9OwogICAgIGJvb2wgc2Nyb2xsQ29ybmVySXNWaXNpYmxlIHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXJUZXN0RnVuY3Rpb25z
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyVGVzdEZ1bmN0aW9ucy5oCmlu
ZGV4IDljN2QxNDc2ZjgzZjYyZGNmZjVhMDg0MWJjODc2OGY5NGZlYjk4ZWUuLmZmNjFkMDBiNmFj
ZTEzNjg1MDFkZTgxMzIyNTU1NWRmNjVlMWU0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TZWxlY3RvckNoZWNrZXJUZXN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1NlbGVjdG9yQ2hlY2tlclRlc3RGdW5jdGlvbnMuaApAQCAtMjk1LDEyICsyOTUsMTIgQEAg
QUxXQVlTX0lOTElORSBib29sIHNjcm9sbGJhck1hdGNoZXNBY3RpdmVQc2V1ZG9DbGFzcyhjb25z
dCBTZWxlY3RvckNoZWNrZXI6OkNoZWMKIAogQUxXQVlTX0lOTElORSBib29sIHNjcm9sbGJhck1h
dGNoZXNIb3Jpem9udGFsUHNldWRvQ2xhc3MoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpDaGVja2lu
Z0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuc2Nyb2xsYmFyU3RhdGUg
JiYgY29udGV4dC5zY3JvbGxiYXJTdGF0ZS0+b3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9s
bGJhcjsKKyAgICByZXR1cm4gY29udGV4dC5zY3JvbGxiYXJTdGF0ZSAmJiBjb250ZXh0LnNjcm9s
bGJhclN0YXRlLT5vcmllbnRhdGlvbiA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRh
bDsKIH0KIAogQUxXQVlTX0lOTElORSBib29sIHNjcm9sbGJhck1hdGNoZXNWZXJ0aWNhbFBzZXVk
b0NsYXNzKGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0JiBjb250ZXh0KQog
ewotICAgIHJldHVybiBjb250ZXh0LnNjcm9sbGJhclN0YXRlICYmIGNvbnRleHQuc2Nyb2xsYmFy
U3RhdGUtPm9yaWVudGF0aW9uID09IFZlcnRpY2FsU2Nyb2xsYmFyOworICAgIHJldHVybiBjb250
ZXh0LnNjcm9sbGJhclN0YXRlICYmIGNvbnRleHQuc2Nyb2xsYmFyU3RhdGUtPm9yaWVudGF0aW9u
ID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbDsKIH0KIAogQUxXQVlTX0lOTElORSBi
b29sIHNjcm9sbGJhck1hdGNoZXNEZWNyZW1lbnRQc2V1ZG9DbGFzcyhjb25zdCBTZWxlY3RvckNo
ZWNrZXI6OkNoZWNraW5nQ29udGV4dCYgY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cAppbmRleCA1NzhlY2RiNjkzZGZhNTMxMGE3MTYwNmYwMzZiZmY2ZDJmYWM2MjQ2Li5mNWI1MWEz
MTRjNDNiZTJlZjU0ZjdlOWNiYzI1NTYxMTBmNzViYjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCkBAIC0xNDk0LDcgKzE0OTQsNyBAQCBib29sIEZyYW1lVmlldzo6aG9yaXpvbnRhbFNj
cm9sbGJhckhpZGRlbkJ5U3R5bGUoKSBjb25zdAogICAgICAgICByZXR1cm4gc2Nyb2xsYmFyICYm
IHNjcm9sbGJhci0+aXNIaWRkZW5CeVN0eWxlKCk7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0eWxl
SGlkZXNTY3JvbGxiYXJXaXRoT3JpZW50YXRpb24oSG9yaXpvbnRhbFNjcm9sbGJhcik7CisgICAg
cmV0dXJuIHN0eWxlSGlkZXNTY3JvbGxiYXJXaXRoT3JpZW50YXRpb24oU2Nyb2xsYmFyT3JpZW50
YXRpb246Okhvcml6b250YWwpOwogfQogCiBib29sIEZyYW1lVmlldzo6dmVydGljYWxTY3JvbGxi
YXJIaWRkZW5CeVN0eWxlKCkgY29uc3QKQEAgLTE1MDQsNyArMTUwNCw3IEBAIGJvb2wgRnJhbWVW
aWV3Ojp2ZXJ0aWNhbFNjcm9sbGJhckhpZGRlbkJ5U3R5bGUoKSBjb25zdAogICAgICAgICByZXR1
cm4gc2Nyb2xsYmFyICYmIHNjcm9sbGJhci0+aXNIaWRkZW5CeVN0eWxlKCk7CiAgICAgfQogICAg
IAotICAgIHJldHVybiBzdHlsZUhpZGVzU2Nyb2xsYmFyV2l0aE9yaWVudGF0aW9uKFZlcnRpY2Fs
U2Nyb2xsYmFyKTsKKyAgICByZXR1cm4gc3R5bGVIaWRlc1Njcm9sbGJhcldpdGhPcmllbnRhdGlv
bihTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwpOwogfQogCiB2b2lkIEZyYW1lVmlldzo6
c2V0Q2Fubm90QmxpdFRvV2luZG93KCkKQEAgLTM1ODgsMTQgKzM1ODgsMTQgQEAgdm9pZCBGcmFt
ZVZpZXc6OnBlcmZvcm1TaXplVG9Db250ZW50QXV0b1NpemUoKQogICAgICAgICBpZiAobmV3U2l6
ZS53aWR0aCgpID4gbV9hdXRvU2l6ZUNvbnN0cmFpbnQud2lkdGgoKSkgewogICAgICAgICAgICAg
UmVmUHRyPFNjcm9sbGJhcj4gbG9jYWxIb3Jpem9udGFsU2Nyb2xsYmFyID0gaG9yaXpvbnRhbFNj
cm9sbGJhcigpOwogICAgICAgICAgICAgaWYgKCFsb2NhbEhvcml6b250YWxTY3JvbGxiYXIpCi0g
ICAgICAgICAgICAgICAgbG9jYWxIb3Jpem9udGFsU2Nyb2xsYmFyID0gY3JlYXRlU2Nyb2xsYmFy
KEhvcml6b250YWxTY3JvbGxiYXIpOworICAgICAgICAgICAgICAgIGxvY2FsSG9yaXpvbnRhbFNj
cm9sbGJhciA9IGNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRh
bCk7CiAgICAgICAgICAgICBuZXdTaXplLmV4cGFuZCgwLCBsb2NhbEhvcml6b250YWxTY3JvbGxi
YXItPm9jY3VwaWVkSGVpZ2h0KCkpOwogICAgICAgICAgICAgLy8gRG9uJ3QgYm90aGVyIGNoZWNr
aW5nIGZvciBhIHZlcnRpY2FsIHNjcm9sbGJhciBiZWNhdXNlIHRoZSB3aWR0aCBpcyBhdAogICAg
ICAgICAgICAgLy8gYWxyZWFkeSBncmVhdGVyIHRoZSBtYXhpbXVtLgogICAgICAgICB9IGVsc2Ug
aWYgKG5ld1NpemUuaGVpZ2h0KCkgPiBtX2F1dG9TaXplQ29uc3RyYWludC5oZWlnaHQoKSkgewog
ICAgICAgICAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbG9jYWxWZXJ0aWNhbFNjcm9sbGJhciA9IHZl
cnRpY2FsU2Nyb2xsYmFyKCk7CiAgICAgICAgICAgICBpZiAoIWxvY2FsVmVydGljYWxTY3JvbGxi
YXIpCi0gICAgICAgICAgICAgICAgbG9jYWxWZXJ0aWNhbFNjcm9sbGJhciA9IGNyZWF0ZVNjcm9s
bGJhcihWZXJ0aWNhbFNjcm9sbGJhcik7CisgICAgICAgICAgICAgICAgbG9jYWxWZXJ0aWNhbFNj
cm9sbGJhciA9IGNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwp
OwogICAgICAgICAgICAgbmV3U2l6ZS5leHBhbmQobG9jYWxWZXJ0aWNhbFNjcm9sbGJhci0+b2Nj
dXBpZWRXaWR0aCgpLCAwKTsKICAgICAgICAgICAgIC8vIERvbid0IGJvdGhlciBjaGVja2luZyBm
b3IgYSBob3Jpem9udGFsIHNjcm9sbGJhciBiZWNhdXNlIHRoZSBoZWlnaHQgaXMKICAgICAgICAg
ICAgIC8vIGFscmVhZHkgZ3JlYXRlciB0aGUgbWF4aW11bS4KQEAgLTM4MTcsNyArMzgxNyw3IEBA
IHZvaWQgRnJhbWVWaWV3OjpzY3JvbGxUb1Bvc2l0aW9uV2l0aEFuaW1hdGlvbihjb25zdCBTY3Jv
bGxQb3NpdGlvbiYgcG9zaXRpb24sIFNjCiAKIGZsb2F0IEZyYW1lVmlldzo6YWRqdXN0U2Nyb2xs
U3RlcEZvckZpeGVkQ29udGVudChmbG9hdCBzdGVwLCBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmll
bnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiB7Ci0gICAgaWYgKGdyYW51
bGFyaXR5ICE9IFNjcm9sbEJ5UGFnZSB8fCBvcmllbnRhdGlvbiA9PSBIb3Jpem9udGFsU2Nyb2xs
YmFyKQorICAgIGlmIChncmFudWxhcml0eSAhPSBTY3JvbGxCeVBhZ2UgfHwgb3JpZW50YXRpb24g
PT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWwpCiAgICAgICAgIHJldHVybiBzdGVw
OwogCiAgICAgVHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQqIHBvc2l0aW9uZWRPYmplY3RzID0g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggM2E2ZWM1YWZlNTIzY2E2OTM1YmI4
YTE1MThiNmEwZDgzOGViZGRmNy4uNGIxY2YyNDNhNjM3YThmYzQwNTI3NGJlYzc1MDI3NGVjZThj
OTlhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTYxMywxMyArNjEzLDEzIEBAIHZvaWQg
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRp
ZENoYW5nZShTY3JvbGxhYmxlCiAgICAgYXV0byogbm9kZSA9IG1fc2Nyb2xsaW5nU3RhdGVUcmVl
LT5zdGF0ZU5vZGVGb3JJRChzY3JvbGxhYmxlQXJlYS5zY3JvbGxpbmdOb2RlSUQoKSk7CiAgICAg
aWYgKGlzPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT4obm9kZSkpIHsKICAgICAgICAgYXV0
byYgc2Nyb2xsaW5nTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT4o
Km5vZGUpOwotICAgICAgICBpZiAob3JpZW50YXRpb24gPT0gVmVydGljYWxTY3JvbGxiYXIpCisg
ICAgICAgIGlmIChvcmllbnRhdGlvbiA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwp
CiAgICAgICAgICAgICBzY3JvbGxpbmdOb2RlLnNldFZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIoc2Ny
b2xsYWJsZUFyZWEubGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcigpKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgc2Nyb2xsaW5nTm9kZS5zZXRIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIoc2Ny
b2xsYWJsZUFyZWEubGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFyKCkpOwogICAgIH0KIAotICAg
IGlmIChvcmllbnRhdGlvbiA9PSBWZXJ0aWNhbFNjcm9sbGJhcikKKyAgICBpZiAob3JpZW50YXRp
b24gPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246OlZlcnRpY2FsKQogICAgICAgICBzY3JvbGxhYmxl
QXJlYS52ZXJ0aWNhbFNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKCk7CiAgICAgZWxzZQogICAgICAg
ICBzY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAppbmRleCBhYjE4YjgyNzlh
ZmY4ZWU4OWE4OWMyMGU1YTAzODg1ZTUzNGQzY2Q0Li44ZmU4NDc2MzlkZDkzYzlmYjFiYzQ3MGQ4
NjUwYTgyZjQ1YTZmNzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
b3IuY3BwCkBAIC03NiwxNiArNzYsMTYgQEAgYm9vbCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsKFNj
cm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eQogCiAgICAg
ICAgIGF1dG8gY3VycmVudE9mZnNldCA9IG9mZnNldEZyb21Qb3NpdGlvbihjdXJyZW50UG9zaXRp
b24oKSk7CiAgICAgICAgIGF1dG8gbmV3T2Zmc2V0ID0gY3VycmVudE9mZnNldCArIGRlbHRhOwot
ICAgICAgICBpZiAob3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKKyAgICAgICAg
aWYgKG9yaWVudGF0aW9uID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKQogICAg
ICAgICAgICAgbmV3T2Zmc2V0LnNldFgobV9zY3JvbGxDb250cm9sbGVyLmFkanVzdGVkU2Nyb2xs
RGVzdGluYXRpb24oU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBuZXdPZmZzZXQsIG11bHRp
cGxpZXIsIGN1cnJlbnRPZmZzZXQueCgpKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG5l
d09mZnNldC5zZXRZKG1fc2Nyb2xsQ29udHJvbGxlci5hZGp1c3RlZFNjcm9sbERlc3RpbmF0aW9u
KFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIG5ld09mZnNldCwgbXVsdGlwbGllciwgY3VycmVu
dE9mZnNldC55KCkpKTsKIAogICAgICAgICBhdXRvIG5ld0RlbHRhID0gbmV3T2Zmc2V0IC0gY3Vy
cmVudE9mZnNldDsKLSAgICAgICAgaWYgKG9yaWVudGF0aW9uID09IEhvcml6b250YWxTY3JvbGxi
YXIpCi0gICAgICAgICAgICByZXR1cm4gc2Nyb2xsKEhvcml6b250YWxTY3JvbGxiYXIsIGdyYW51
bGFyaXR5LCBuZXdEZWx0YS53aWR0aCgpLCAxLjAsIGJlaGF2aW9yKTsKKyAgICAgICAgaWYgKG9y
aWVudGF0aW9uID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKQorICAgICAgICAg
ICAgcmV0dXJuIHNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCwgZ3JhbnVs
YXJpdHksIG5ld0RlbHRhLndpZHRoKCksIDEuMCwgYmVoYXZpb3IpOwogCi0gICAgICAgIHJldHVy
biBzY3JvbGwoVmVydGljYWxTY3JvbGxiYXIsIGdyYW51bGFyaXR5LCBuZXdEZWx0YS5oZWlnaHQo
KSwgMS4wLCBiZWhhdmlvcik7CisgICAgICAgIHJldHVybiBzY3JvbGwoU2Nyb2xsYmFyT3JpZW50
YXRpb246OlZlcnRpY2FsLCBncmFudWxhcml0eSwgbmV3RGVsdGEuaGVpZ2h0KCksIDEuMCwgYmVo
YXZpb3IpOwogICAgIH0KIAogICAgIGlmIChtX3Njcm9sbGFibGVBcmVhLnNjcm9sbEFuaW1hdG9y
RW5hYmxlZCgpICYmIHBsYXRmb3JtQWxsb3dzU2Nyb2xsQW5pbWF0aW9uKCkgJiYgIWJlaGF2aW9y
LmNvbnRhaW5zKFNjcm9sbEJlaGF2aW9yOjpOZXZlckFuaW1hdGUpKSB7CkBAIC0xNDUsNyArMTQ1
LDcgQEAgRmxvYXRQb2ludCBTY3JvbGxBbmltYXRvcjo6cG9zaXRpb25Gcm9tT2Zmc2V0KGNvbnN0
IEZsb2F0UG9pbnQmIG9mZnNldCkgY29uc3QKIEZsb2F0U2l6ZSBTY3JvbGxBbmltYXRvcjo6ZGVs
dGFGcm9tU3RlcChTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgZmxvYXQgc3RlcCwg
ZmxvYXQgbXVsdGlwbGllcikKIHsKICAgICBGbG9hdFNpemUgZGVsdGE7Ci0gICAgaWYgKG9yaWVu
dGF0aW9uID09IEhvcml6b250YWxTY3JvbGxiYXIpCisgICAgaWYgKG9yaWVudGF0aW9uID09IFNj
cm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKQogICAgICAgICBkZWx0YS5zZXRXaWR0aChz
dGVwICogbXVsdGlwbGllcik7CiAgICAgZWxzZQogICAgICAgICBkZWx0YS5zZXRIZWlnaHQoc3Rl
cCAqIG11bHRpcGxpZXIpOwpAQCAtMjE4LDcgKzIxOCw3IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3I6
OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBlKQogICAgICAgICAg
ICAgICAgIGlmIChuZWdhdGl2ZSkKICAgICAgICAgICAgICAgICAgICAgZGVsdGFZID0gLWRlbHRh
WTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNjcm9sbChWZXJ0aWNhbFNjcm9sbGJhciwg
U2Nyb2xsQnlQaXhlbCwgdmVydGljYWxTY3JvbGxiYXItPnBpeGVsU3RlcCgpLCAtZGVsdGFZLCBi
ZWhhdmlvcik7CisgICAgICAgICAgICBzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb246OlZlcnRp
Y2FsLCBTY3JvbGxCeVBpeGVsLCB2ZXJ0aWNhbFNjcm9sbGJhci0+cGl4ZWxTdGVwKCksIC1kZWx0
YVksIGJlaGF2aW9yKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChkZWx0YVgpIHsKQEAgLTIy
OCw3ICsyMjgsNyBAQCBib29sIFNjcm9sbEFuaW1hdG9yOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYgZSkKICAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmUpCiAg
ICAgICAgICAgICAgICAgICAgIGRlbHRhWCA9IC1kZWx0YVg7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBzY3JvbGwoSG9yaXpvbnRhbFNjcm9sbGJhciwgU2Nyb2xsQnlQaXhlbCwgaG9yaXpv
bnRhbFNjcm9sbGJhci0+cGl4ZWxTdGVwKCksIC1kZWx0YVgsIGJlaGF2aW9yKTsKKyAgICAgICAg
ICAgIHNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCwgU2Nyb2xsQnlQaXhl
bCwgaG9yaXpvbnRhbFNjcm9sbGJhci0+cGl4ZWxTdGVwKCksIC1kZWx0YVgsIGJlaGF2aW9yKTsK
ICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gaGFuZGxlZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxUeXBlcy5oCmluZGV4IGViYWExN2U5MDAyZDhkYjM5OGQ3OGI2Y2JkMzdiNjYyMTRj
ZmFlNWYuLmRjODg4YzA4Y2Q3MWIxYWY2M2Q5YzM0MTk3ZWIyOGQwNWU3Njc4NDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsVHlwZXMuaApAQCAtMTQzLDkgKzE0Myw5IEBAIGVudW0gU2Ny
b2xsRWxhc3RpY2l0eSA6IHVpbnQ4X3QgewogICAgIFNjcm9sbEVsYXN0aWNpdHlBbGxvd2VkCiB9
OwogCi1lbnVtIFNjcm9sbGJhck9yaWVudGF0aW9uIDogdWludDhfdCB7Ci0gICAgSG9yaXpvbnRh
bFNjcm9sbGJhciwKLSAgICBWZXJ0aWNhbFNjcm9sbGJhcgorZW51bSBjbGFzcyBTY3JvbGxiYXJP
cmllbnRhdGlvbiA6IHVpbnQ4X3QgeworICAgIEhvcml6b250YWwsCisgICAgVmVydGljYWwKIH07
CiAKIGVudW0gU2Nyb2xsYmFyTW9kZSA6IHVpbnQ4X3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmNwcAppbmRleCBjOTJjZTJlNWM5MThlY2UxYTVkNDgwYzBhZDdlYThmZjY0NTk1
MDRiLi5hMjBjYWEwMjQwMzI4NjZhNWE0ZmY1MWEzMWI2ODliNjE2YjkzMTdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApAQCAtNjcsMTIgKzY3LDEyIEBAIHZvaWQgU2Ny
b2xsVmlldzo6cmVtb3ZlQ2hpbGQoV2lkZ2V0JiBjaGlsZCkKIAogYm9vbCBTY3JvbGxWaWV3Ojpz
ZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKGJvb2wgaGFzQmFyLCBib29sKiBjb250ZW50U2l6ZUFm
ZmVjdGVkKQogewotICAgIHJldHVybiBzZXRIYXNTY3JvbGxiYXJJbnRlcm5hbChtX2hvcml6b250
YWxTY3JvbGxiYXIsIEhvcml6b250YWxTY3JvbGxiYXIsIGhhc0JhciwgY29udGVudFNpemVBZmZl
Y3RlZCk7CisgICAgcmV0dXJuIHNldEhhc1Njcm9sbGJhckludGVybmFsKG1faG9yaXpvbnRhbFNj
cm9sbGJhciwgU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWwsIGhhc0JhciwgY29udGVu
dFNpemVBZmZlY3RlZCk7CiB9CiAKIGJvb2wgU2Nyb2xsVmlldzo6c2V0SGFzVmVydGljYWxTY3Jv
bGxiYXIoYm9vbCBoYXNCYXIsIGJvb2wqIGNvbnRlbnRTaXplQWZmZWN0ZWQpCiB7Ci0gICAgcmV0
dXJuIHNldEhhc1Njcm9sbGJhckludGVybmFsKG1fdmVydGljYWxTY3JvbGxiYXIsIFZlcnRpY2Fs
U2Nyb2xsYmFyLCBoYXNCYXIsIGNvbnRlbnRTaXplQWZmZWN0ZWQpOworICAgIHJldHVybiBzZXRI
YXNTY3JvbGxiYXJJbnRlcm5hbChtX3ZlcnRpY2FsU2Nyb2xsYmFyLCBTY3JvbGxiYXJPcmllbnRh
dGlvbjo6VmVydGljYWwsIGhhc0JhciwgY29udGVudFNpemVBZmZlY3RlZCk7CiB9CiAKIGJvb2wg
U2Nyb2xsVmlldzo6c2V0SGFzU2Nyb2xsYmFySW50ZXJuYWwoUmVmUHRyPFNjcm9sbGJhcj4mIHNj
cm9sbGJhciwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIGJvb2wgaGFzQmFyLCBi
b29sKiBjb250ZW50U2l6ZUFmZmVjdGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuY3BwCmluZGV4IDMyZGRhY2EwYWFiZWExYzkzN2VlYTZhZmZkMTc1N2IwOTcwMTI1
YTAuLmI1NTJkNGQ4MTMxZWVlYTcwMDlkZGUzMGY0Y2MwZDZkZTcxNDExYTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTEwMSwxMCArMTAxLDEwIEBA
IGJvb2wgU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbChTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uLCBT
Y3JvbGxHcmFudWxhcml0eSBncmFudWxhCiAgICAgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50
YXRpb247CiAgICAgU2Nyb2xsYmFyKiBzY3JvbGxiYXI7CiAgICAgaWYgKGRpcmVjdGlvbiA9PSBT
Y3JvbGxVcCB8fCBkaXJlY3Rpb24gPT0gU2Nyb2xsRG93bikgewotICAgICAgICBvcmllbnRhdGlv
biA9IFZlcnRpY2FsU2Nyb2xsYmFyOworICAgICAgICBvcmllbnRhdGlvbiA9IFNjcm9sbGJhck9y
aWVudGF0aW9uOjpWZXJ0aWNhbDsKICAgICAgICAgc2Nyb2xsYmFyID0gdmVydGljYWxTY3JvbGxi
YXIoKTsKICAgICB9IGVsc2UgewotICAgICAgICBvcmllbnRhdGlvbiA9IEhvcml6b250YWxTY3Jv
bGxiYXI7CisgICAgICAgIG9yaWVudGF0aW9uID0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6
b250YWw7CiAgICAgICAgIHNjcm9sbGJhciA9IGhvcml6b250YWxTY3JvbGxiYXIoKTsKICAgICB9
CiAKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFNjcm9sbGFibGVBcmVhOjpzY3JvbGxUb09mZnNl
dFdpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgb2Zmc2V0LCBTYwogdm9pZCBTY3Jv
bGxhYmxlQXJlYTo6c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKFNjcm9sbGJhck9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uLCBmbG9hdCBvZmZzZXQpCiB7CiAgICAgYXV0byBjdXJyZW50UG9z
aXRpb24gPSBzY3JvbGxBbmltYXRvcigpLmN1cnJlbnRQb3NpdGlvbigpOwotICAgIGlmIChvcmll
bnRhdGlvbiA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKQorICAgIGlmIChvcmllbnRhdGlvbiA9PSBT
Y3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCkKICAgICAgICAgc2Nyb2xsQW5pbWF0b3Io
KS5zY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlvbihGbG9hdFBvaW50KG9mZnNldCwgY3Vy
cmVudFBvc2l0aW9uLnkoKSkpOwogICAgIGVsc2UKICAgICAgICAgc2Nyb2xsQW5pbWF0b3IoKS5z
Y3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlvbihGbG9hdFBvaW50KGN1cnJlbnRQb3NpdGlv
bi54KCksIG9mZnNldCkpOwpAQCAtMzI1LDcgKzMyNSw3IEBAIGJvb2wgU2Nyb2xsYWJsZUFyZWE6
OnNjcm9sbGJhcnNDYW5CZUFjdGl2ZSgpIGNvbnN0CiAKIHZvaWQgU2Nyb2xsYWJsZUFyZWE6OmRp
ZEFkZFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyT3JpZW50YXRpb24g
b3JpZW50YXRpb24pCiB7Ci0gICAgaWYgKG9yaWVudGF0aW9uID09IFZlcnRpY2FsU2Nyb2xsYmFy
KQorICAgIGlmIChvcmllbnRhdGlvbiA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwp
CiAgICAgICAgIHNjcm9sbGJhcnNDb250cm9sbGVyKCkuZGlkQWRkVmVydGljYWxTY3JvbGxiYXIo
c2Nyb2xsYmFyKTsKICAgICBlbHNlCiAgICAgICAgIHNjcm9sbGJhcnNDb250cm9sbGVyKCkuZGlk
QWRkSG9yaXpvbnRhbFNjcm9sbGJhcihzY3JvbGxiYXIpOwpAQCAtMzM4LDcgKzMzOCw3IEBAIHZv
aWQgU2Nyb2xsYWJsZUFyZWE6OmRpZEFkZFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhciwg
U2Nyb2xsYmFyT3JpZW50YXRpb24KIAogdm9pZCBTY3JvbGxhYmxlQXJlYTo6d2lsbFJlbW92ZVNj
cm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50
YXRpb24pCiB7Ci0gICAgaWYgKG9yaWVudGF0aW9uID09IFZlcnRpY2FsU2Nyb2xsYmFyKQorICAg
IGlmIChvcmllbnRhdGlvbiA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwpCiAgICAg
ICAgIHNjcm9sbGJhcnNDb250cm9sbGVyKCkud2lsbFJlbW92ZVZlcnRpY2FsU2Nyb2xsYmFyKHNj
cm9sbGJhcik7CiAgICAgZWxzZQogICAgICAgICBzY3JvbGxiYXJzQ29udHJvbGxlcigpLndpbGxS
ZW1vdmVIb3Jpem9udGFsU2Nyb2xsYmFyKHNjcm9sbGJhcik7CkBAIC01NjUsNyArNTY1LDcgQEAg
dm9pZCBTY3JvbGxhYmxlQXJlYTo6ZG9Qb3N0VGh1bWJNb3ZlU25hcHBpbmcoU2Nyb2xsYmFyT3Jp
ZW50YXRpb24gb3JpZW50YXRpb24pCiAKICAgICBhdXRvIGN1cnJlbnRPZmZzZXQgPSBzY3JvbGxP
ZmZzZXQoKTsKICAgICBhdXRvIG5ld09mZnNldCA9IGN1cnJlbnRPZmZzZXQ7Ci0gICAgaWYgKG9y
aWVudGF0aW9uID09IEhvcml6b250YWxTY3JvbGxiYXIpCisgICAgaWYgKG9yaWVudGF0aW9uID09
IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKQogICAgICAgICBuZXdPZmZzZXQuc2V0
WChzY3JvbGxBbmltYXRvci0+c2Nyb2xsT2Zmc2V0QWRqdXN0ZWRGb3JTbmFwcGluZyhTY3JvbGxF
dmVudEF4aXM6Okhvcml6b250YWwsIGN1cnJlbnRPZmZzZXQsIFNjcm9sbFNuYXBQb2ludFNlbGVj
dGlvbk1ldGhvZDo6Q2xvc2VzdCkpOwogICAgIGVsc2UKICAgICAgICAgbmV3T2Zmc2V0LnNldFko
c2Nyb2xsQW5pbWF0b3ItPnNjcm9sbE9mZnNldEFkanVzdGVkRm9yU25hcHBpbmcoU2Nyb2xsRXZl
bnRBeGlzOjpWZXJ0aWNhbCwgY3VycmVudE9mZnNldCwgU2Nyb2xsU25hcFBvaW50U2VsZWN0aW9u
TWV0aG9kOjpDbG9zZXN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
aAppbmRleCBmZTQyYzRlYzZlYmE0ZjA0OGY5NGZlZjU5MDQ5MzY5MGJlNTM1NjVhLi40YjM3MjVm
NTg2ZGJmNmE1ODliNzdmMTE3NTg2Mzk2NTg5ZDhhMDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmgKQEAgLTU0LDggKzU0LDggQEAgZW51bSBjbGFzcyBXaGVlbFNj
cm9sbEdlc3R1cmVTdGF0ZSA6IHVpbnQ4X3Q7CiBpbmxpbmUgaW50IG9mZnNldEZvck9yaWVudGF0
aW9uKFNjcm9sbE9mZnNldCBvZmZzZXQsIFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9u
KQogewogICAgIHN3aXRjaCAob3JpZW50YXRpb24pIHsKLSAgICBjYXNlIEhvcml6b250YWxTY3Jv
bGxiYXI6IHJldHVybiBvZmZzZXQueCgpOwotICAgIGNhc2UgVmVydGljYWxTY3JvbGxiYXI6IHJl
dHVybiBvZmZzZXQueSgpOworICAgIGNhc2UgU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250
YWw6IHJldHVybiBvZmZzZXQueCgpOworICAgIGNhc2UgU2Nyb2xsYmFyT3JpZW50YXRpb246OlZl
cnRpY2FsOiByZXR1cm4gb2Zmc2V0LnkoKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxiYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAppbmRl
eCBjOTdkZjAwZTU3MDk2Yzg1NjZiY2M0OWQ1ZDA1OWUzZWExNDM4ZTdkLi42YTRhNTc0NWEwMGZi
NzEwZWFlZTMzYjNkY2NiMDM4MDZjMTRhYTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxiYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGJhci5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIFNjcm9sbGJhcjo6c3RvcFRpbWVySWZO
ZWVkZWQoKQogCiBTY3JvbGxEaXJlY3Rpb24gU2Nyb2xsYmFyOjpwcmVzc2VkUGFydFNjcm9sbERp
cmVjdGlvbigpCiB7Ci0gICAgaWYgKG1fb3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9sbGJh
cikgeworICAgIGlmIChtX29yaWVudGF0aW9uID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jp
em9udGFsKSB7CiAgICAgICAgIGlmIChtX3ByZXNzZWRQYXJ0ID09IEJhY2tCdXR0b25TdGFydFBh
cnQgfHwgbV9wcmVzc2VkUGFydCA9PSBCYWNrQnV0dG9uRW5kUGFydCB8fCBtX3ByZXNzZWRQYXJ0
ID09IEJhY2tUcmFja1BhcnQpCiAgICAgICAgICAgICByZXR1cm4gU2Nyb2xsTGVmdDsKICAgICAg
ICAgcmV0dXJuIFNjcm9sbFJpZ2h0OwpAQCAtMjQ3LDcgKzI0Nyw3IEBAIHZvaWQgU2Nyb2xsYmFy
Ojptb3ZlVGh1bWIoaW50IHBvcywgYm9vbCBkcmFnZ2luZ0RvY3VtZW50KQogICAgICAgICAgICAg
ZGVsdGEgPSBwb3MgLSBtX2RvY3VtZW50RHJhZ1BvczsKICAgICAgICAgbV9kcmFnZ2luZ0RvY3Vt
ZW50ID0gdHJ1ZTsKICAgICAgICAgRmxvYXRQb2ludCBjdXJyZW50UG9zaXRpb24gPSBtX3Njcm9s
bGFibGVBcmVhLnNjcm9sbEFuaW1hdG9yKCkuY3VycmVudFBvc2l0aW9uKCk7Ci0gICAgICAgIGlu
dCBkZXN0aW5hdGlvblBvc2l0aW9uID0gKG1fb3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9s
bGJhciA/IGN1cnJlbnRQb3NpdGlvbi54KCkgOiBjdXJyZW50UG9zaXRpb24ueSgpKSArIGRlbHRh
OworICAgICAgICBpbnQgZGVzdGluYXRpb25Qb3NpdGlvbiA9IChtX29yaWVudGF0aW9uID09IFNj
cm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsID8gY3VycmVudFBvc2l0aW9uLngoKSA6IGN1
cnJlbnRQb3NpdGlvbi55KCkpICsgZGVsdGE7CiAgICAgICAgIGlmIChkZWx0YSA+IDApCiAgICAg
ICAgICAgICBkZXN0aW5hdGlvblBvc2l0aW9uID0gc3RkOjptaW4oZGVzdGluYXRpb25Qb3NpdGlv
biArIGRlbHRhLCBtYXhpbXVtKCkpOwogICAgICAgICBlbHNlIGlmIChkZWx0YSA8IDApCkBAIC0z
MTAsNyArMzEwLDcgQEAgYm9vbCBTY3JvbGxiYXI6Om1vdXNlTW92ZWQoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBldnQpCiAgICAgICAgIGlmICh0aGVtZSgpLnNob3VsZFNuYXBCYWNrVG9EcmFn
T3JpZ2luKCp0aGlzLCBldnQpKQogICAgICAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS5zY3JvbGxU
b09mZnNldFdpdGhvdXRBbmltYXRpb24obV9vcmllbnRhdGlvbiwgbV9kcmFnT3JpZ2luKTsKICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBtb3ZlVGh1bWIobV9vcmllbnRhdGlvbiA9PSBIb3Jp
em9udGFsU2Nyb2xsYmFyID8gCisgICAgICAgICAgICBtb3ZlVGh1bWIobV9vcmllbnRhdGlvbiA9
PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCA/CiAgICAgICAgICAgICAgICAgICAg
ICAgY29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5wb3NpdGlvbigpKS54KCkgOgogICAg
ICAgICAgICAgICAgICAgICAgIGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhldnQucG9zaXRp
b24oKSkueSgpLCB0aGVtZSgpLnNob3VsZERyYWdEb2N1bWVudEluc3RlYWRPZlRodW1iKCp0aGlz
LCBldnQpKTsKICAgICAgICAgfQpAQCAtMzE4LDcgKzMxOCw3IEBAIGJvb2wgU2Nyb2xsYmFyOjpt
b3VzZU1vdmVkKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQogICAgIH0KIAogICAgIGlm
IChtX3ByZXNzZWRQYXJ0ICE9IE5vUGFydCkKLSAgICAgICAgbV9wcmVzc2VkUG9zID0gKG9yaWVu
dGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IGNvbnZlcnRGcm9tQ29udGFpbmluZ1dp
bmRvdyhldnQucG9zaXRpb24oKSkueCgpIDogY29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2
dC5wb3NpdGlvbigpKS55KCkpOworICAgICAgICBtX3ByZXNzZWRQb3MgPSAob3JpZW50YXRpb24o
KSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCA/IGNvbnZlcnRGcm9tQ29udGFp
bmluZ1dpbmRvdyhldnQucG9zaXRpb24oKSkueCgpIDogY29udmVydEZyb21Db250YWluaW5nV2lu
ZG93KGV2dC5wb3NpdGlvbigpKS55KCkpOwogCiAgICAgU2Nyb2xsYmFyUGFydCBwYXJ0ID0gdGhl
bWUoKS5oaXRUZXN0KCp0aGlzLCBldnQucG9zaXRpb24oKSk7CiAgICAgaWYgKHBhcnQgIT0gbV9o
b3ZlcmVkUGFydCkgewpAQCAtMzg3LDcgKzM4Nyw3IEBAIGJvb2wgU2Nyb2xsYmFyOjptb3VzZURv
d24oY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCiAgICAgbV9zY3JvbGxhYmxlQXJlYS5t
b3VzZUlzRG93bkluU2Nyb2xsYmFyKHRoaXMsIHRydWUpOwogICAgIHNldFByZXNzZWRQYXJ0KHBy
ZXNzZWRQYXJ0KTsKIAotICAgIGludCBwcmVzc2VkUG9zaXRpb24gPSAob3JpZW50YXRpb24oKSA9
PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gY29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5w
b3NpdGlvbigpKS54KCkgOiBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coZXZ0LnBvc2l0aW9u
KCkpLnkoKSk7CisgICAgaW50IHByZXNzZWRQb3NpdGlvbiA9IChvcmllbnRhdGlvbigpID09IFNj
cm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsID8gY29udmVydEZyb21Db250YWluaW5nV2lu
ZG93KGV2dC5wb3NpdGlvbigpKS54KCkgOiBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coZXZ0
LnBvc2l0aW9uKCkpLnkoKSk7CiAgICAgaWYgKGFjdGlvbiA9PSBTY3JvbGxiYXJCdXR0b25QcmVz
c0FjdGlvbjo6Q2VudGVyT25UaHVtYikgewogICAgICAgICBzZXRIb3ZlcmVkUGFydChUaHVtYlBh
cnQpOwogICAgICAgICBzZXRQcmVzc2VkUGFydChUaHVtYlBhcnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCmluZGV4IDAwZTUy
NjQ1NWQxMzA5Mzc3NGY0YTdiZjI3NjlkOGYyZTliYjM4M2QuLmJjMWZiYTExOTZmNTM3ZjNmMTRj
NDc1MTc2ZTUyZmMwN2FkNjdmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAKQEAgLTE5Myw5ICsxOTMsOSBAQCB2b2lkIFNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlOjpzcGxpdFRyYWNrKFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBj
b25zdCBJbnRSZWN0JiB1bgogICAgIC8vIFRoaXMgZnVuY3Rpb24gd29uJ3QgZXZlbiBnZXQgY2Fs
bGVkIHVubGVzcyB3ZSdyZSBiaWcgZW5vdWdoIHRvIGhhdmUgc29tZSBjb21iaW5hdGlvbiBvZiB0
aGVzZSB0aHJlZSByZWN0cyB3aGVyZSBhdCBsZWFzdAogICAgIC8vIG9uZSBvZiB0aGVtIGlzIG5v
bi1lbXB0eS4KICAgICBJbnRSZWN0IHRyYWNrUmVjdCA9IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJh
Y2tQaWVjZXMoc2Nyb2xsYmFyLCB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0KTsKLSAgICBpbnQgdGhp
Y2tuZXNzID0gc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/
IHNjcm9sbGJhci5oZWlnaHQoKSA6IHNjcm9sbGJhci53aWR0aCgpOworICAgIGludCB0aGlja25l
c3MgPSBzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9y
aXpvbnRhbCA/IHNjcm9sbGJhci5oZWlnaHQoKSA6IHNjcm9sbGJhci53aWR0aCgpOwogICAgIGlu
dCB0aHVtYlBvcyA9IHRodW1iUG9zaXRpb24oc2Nyb2xsYmFyKTsKLSAgICBpZiAoc2Nyb2xsYmFy
Lm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgeworICAgIGlmIChzY3JvbGxi
YXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCkgewog
ICAgICAgICB0aHVtYlJlY3QgPSBJbnRSZWN0KHRyYWNrUmVjdC54KCkgKyB0aHVtYlBvcywgdHJh
Y2tSZWN0LnkoKSArICh0cmFja1JlY3QuaGVpZ2h0KCkgLSB0aGlja25lc3MpIC8gMiwgdGh1bWJM
ZW5ndGgoc2Nyb2xsYmFyKSwgdGhpY2tuZXNzKTsKICAgICAgICAgYmVmb3JlVGh1bWJSZWN0ID0g
SW50UmVjdCh0cmFja1JlY3QueCgpLCB0cmFja1JlY3QueSgpLCB0aHVtYlBvcyArIHRodW1iUmVj
dC53aWR0aCgpIC8gMiwgdHJhY2tSZWN0LmhlaWdodCgpKTsgCiAgICAgICAgIGFmdGVyVGh1bWJS
ZWN0ID0gSW50UmVjdCh0cmFja1JlY3QueCgpICsgYmVmb3JlVGh1bWJSZWN0LndpZHRoKCksIHRy
YWNrUmVjdC55KCksIHRyYWNrUmVjdC5tYXhYKCkgLSBiZWZvcmVUaHVtYlJlY3QubWF4WCgpLCB0
cmFja1JlY3QuaGVpZ2h0KCkpOwpAQCAtMjUxLDEzICsyNTEsMTMgQEAgaW50IFNjcm9sbGJhclRo
ZW1lQ29tcG9zaXRlOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyJiBzY3JvbGxiYXIpCiBp
bnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyJiBzY3Jv
bGxiYXIpCiB7CiAgICAgSW50UmVjdCBjb25zdHJhaW5lZFRyYWNrUmVjdCA9IGNvbnN0cmFpblRy
YWNrUmVjdFRvVHJhY2tQaWVjZXMoc2Nyb2xsYmFyLCB0cmFja1JlY3Qoc2Nyb2xsYmFyKSk7Ci0g
ICAgcmV0dXJuIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFy
KSA/IGNvbnN0cmFpbmVkVHJhY2tSZWN0LngoKSAtIHNjcm9sbGJhci54KCkgOiBjb25zdHJhaW5l
ZFRyYWNrUmVjdC55KCkgLSBzY3JvbGxiYXIueSgpOworICAgIHJldHVybiAoc2Nyb2xsYmFyLm9y
aWVudGF0aW9uKCkgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWwpID8gY29uc3Ry
YWluZWRUcmFja1JlY3QueCgpIC0gc2Nyb2xsYmFyLngoKSA6IGNvbnN0cmFpbmVkVHJhY2tSZWN0
LnkoKSAtIHNjcm9sbGJhci55KCk7CiB9CiAKIGludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6
dHJhY2tMZW5ndGgoU2Nyb2xsYmFyJiBzY3JvbGxiYXIpCiB7CiAgICAgSW50UmVjdCBjb25zdHJh
aW5lZFRyYWNrUmVjdCA9IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoc2Nyb2xsYmFy
LCB0cmFja1JlY3Qoc2Nyb2xsYmFyKSk7Ci0gICAgcmV0dXJuIChzY3JvbGxiYXIub3JpZW50YXRp
b24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSA/IGNvbnN0cmFpbmVkVHJhY2tSZWN0LndpZHRo
KCkgOiBjb25zdHJhaW5lZFRyYWNrUmVjdC5oZWlnaHQoKTsKKyAgICByZXR1cm4gKHNjcm9sbGJh
ci5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKSA/IGNv
bnN0cmFpbmVkVHJhY2tSZWN0LndpZHRoKCkgOiBjb25zdHJhaW5lZFRyYWNrUmVjdC5oZWlnaHQo
KTsKIH0KIAogSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJSZWN0KFNjcm9s
bGJhciYgc2Nyb2xsYmFyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYWR3
YWl0YS9TY3JvbGxiYXJUaGVtZUFkd2FpdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YWR3YWl0YS9TY3JvbGxiYXJUaGVtZUFkd2FpdGEuY3BwCmluZGV4IGU4NTkwMGVmNWZmMDdkMmQy
OTRmNzE4ZDViNjNiNWUzZDA0YWI3YzAuLjc4MGRiOTlhMWE3OTk0YWZmYzM1ZWU0NjVlMzU2NGVl
OWUwZWRmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Fkd2FpdGEvU2Ny
b2xsYmFyVGhlbWVBZHdhaXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hZHdh
aXRhL1Njcm9sbGJhclRoZW1lQWR3YWl0YS5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCBib29sIFNj
cm9sbGJhclRoZW1lQWR3YWl0YTo6cGFpbnQoU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIEdyYXBoaWNz
Q29udGV4dCYgZ3JhcGhpYwogICAgICAgICBncmFwaGljc0NvbnRleHQuZmlsbFJlY3QocmVjdCwg
c2Nyb2xsYmFyQmFja2dyb3VuZENvbG9yKTsKIAogICAgICAgICBJbnRSZWN0IGZyYW1lID0gcmVj
dDsKLSAgICAgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xs
YmFyKSB7CisgICAgICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJP
cmllbnRhdGlvbjo6VmVydGljYWwpIHsKICAgICAgICAgICAgIGlmIChzY3JvbGxiYXIuc2Nyb2xs
YWJsZUFyZWEoKS5zaG91bGRQbGFjZVZlcnRpY2FsU2Nyb2xsYmFyT25MZWZ0KCkpCiAgICAgICAg
ICAgICAgICAgZnJhbWUubW92ZShmcmFtZS53aWR0aCgpIC0gaG92ZXJlZFNjcm9sbGJhckJvcmRl
clNpemUsIDApOwogICAgICAgICAgICAgZnJhbWUuc2V0V2lkdGgoaG92ZXJlZFNjcm9sbGJhckJv
cmRlclNpemUpOwpAQCAtMTgyLDcgKzE4Miw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVBZHdhaXRh
OjpwYWludChTY3JvbGxiYXImIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljCiAg
ICAgICAgIGludCBvdmVybGF5VGh1bWJNYXJnaW4gPSB0aHVtYk1hcmdpbiAtIHRodW1iQm9yZGVy
U2l6ZTsKICAgICAgICAgdGh1bWJDb3JuZXJTaXplID0gb3ZlcmxheVRodW1iU2l6ZSAvIDI7CiAK
LSAgICAgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFy
KSB7CisgICAgICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmll
bnRhdGlvbjo6VmVydGljYWwpIHsKICAgICAgICAgICAgIGlmIChzY3JvbGxiYXIuc2Nyb2xsYWJs
ZUFyZWEoKS5zaG91bGRQbGFjZVZlcnRpY2FsU2Nyb2xsYmFyT25MZWZ0KCkpCiAgICAgICAgICAg
ICAgICAgdGh1bWIubW92ZSgwLCB0aHVtYlBvcyArIG92ZXJsYXlUaHVtYk1hcmdpbik7CiAgICAg
ICAgICAgICBlbHNlCkBAIC0xOTgsNyArMTk4LDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUFkd2Fp
dGE6OnBhaW50KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWMK
ICAgICAgICAgaW50IHRodW1iU2l6ZSA9IHNjcm9sbGJhclNpemUgLSBob3ZlcmVkU2Nyb2xsYmFy
Qm9yZGVyU2l6ZSAtIHRodW1iTWFyZ2luICogMjsKICAgICAgICAgdGh1bWJDb3JuZXJTaXplID0g
dGh1bWJTaXplIC8gMjsKIAotICAgICAgICBpZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0g
VmVydGljYWxTY3JvbGxiYXIpIHsKKyAgICAgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigp
ID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbCkgewogICAgICAgICAgICAgaWYgKHNj
cm9sbGJhci5zY3JvbGxhYmxlQXJlYSgpLnNob3VsZFBsYWNlVmVydGljYWxTY3JvbGxiYXJPbkxl
ZnQoKSkKICAgICAgICAgICAgICAgICB0aHVtYi5tb3ZlKHNjcm9sbGJhclNpemUgLSAoc2Nyb2xs
YmFyU2l6ZSAvIDIgKyB0aHVtYlNpemUgLyAyKSAtIGhvdmVyZWRTY3JvbGxiYXJCb3JkZXJTaXpl
LCB0aHVtYlBvcyArIHRodW1iTWFyZ2luKTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3BwCmluZGV4IGM0ZjMx
NjkyMWNkMWRjYTkyNThkMmU1NzBkMWQ5YWI3NDdhZDBhYjcuLmJkYWNhYzM0MDYyNDA2ZjRkZDdl
OWQ4OWJiNThiNTFlMGRhZDI5OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1Njcm9sbGJhclRoZW1lR3RrLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHN0YXRpYyBHdGtT
dGF0ZUZsYWdzIHNjcm9sbGJhclBhcnRTdGF0ZUZsYWdzKFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBT
Y3JvbGxiYXJQYXJ0CiAKIHN0YXRpYyBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6VHlwZSB3aWRnZXRU
eXBlRm9yU2Nyb2xsYmFyKFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBHdGtTdGF0ZUZsYWdzIHNjcm9s
bGJhclN0YXRlKQogewotICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBWZXJ0aWNh
bFNjcm9sbGJhcikgeworICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxi
YXJPcmllbnRhdGlvbjo6VmVydGljYWwpIHsKICAgICAgICAgaWYgKHNjcm9sbGJhci5zY3JvbGxh
YmxlQXJlYSgpLnNob3VsZFBsYWNlVmVydGljYWxTY3JvbGxiYXJPbkxlZnQoKSkKICAgICAgICAg
ICAgIHJldHVybiBzY3JvbGxiYXJTdGF0ZSAmIEdUS19TVEFURV9GTEFHX1BSRUxJR0hUID8gUmVu
ZGVyVGhlbWVTY3JvbGxiYXI6OlR5cGU6OlZlcnRpY2FsU2Nyb2xsYmFyTGVmdCA6IFJlbmRlclRo
ZW1lU2Nyb2xsYmFyOjpUeXBlOjpWZXJ0aWNhbFNjcm9sbEluZGljYXRvckxlZnQ7CiAgICAgICAg
IHJldHVybiBzY3JvbGxiYXJTdGF0ZSAmIEdUS19TVEFURV9GTEFHX1BSRUxJR0hUID8gUmVuZGVy
VGhlbWVTY3JvbGxiYXI6OlR5cGU6OlZlcnRpY2FsU2Nyb2xsYmFyUmlnaHQgOiBSZW5kZXJUaGVt
ZVNjcm9sbGJhcjo6VHlwZTo6VmVydGljYWxTY3JvbGxJbmRpY2F0b3JSaWdodDsKQEAgLTE3Nyw3
ICsxNzcsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjp0cmFja1JlY3QoU2Nyb2xsYmFy
JiBzY3JvbGxiYXIsIGJvb2wgcGFpbnRpbmcpCiAgICAgaWYgKGF1dG8qIGJhY2t3YXJkU3RlcHBl
ciA9IHNjcm9sbGJhcldpZGdldC5zdGVwcGVyKFJlbmRlclRoZW1lU2Nyb2xsYmFyR2FkZ2V0OjpT
dGVwcGVyczo6QmFja3dhcmQpKSB7CiAgICAgICAgIGJhY2t3YXJkU3RlcHBlci0+c2V0U3RhdGUo
c2Nyb2xsYmFyUGFydFN0YXRlRmxhZ3Moc2Nyb2xsYmFyLCBCYWNrQnV0dG9uU3RhcnRQYXJ0KSk7
CiAgICAgICAgIEludFNpemUgc3RlcHBlclNpemUgPSBiYWNrd2FyZFN0ZXBwZXItPnByZWZlcnJl
ZFNpemUoKTsKLSAgICAgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFZlcnRpY2Fs
U2Nyb2xsYmFyKSB7CisgICAgICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3Jv
bGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwpIHsKICAgICAgICAgICAgIHJlY3QubW92ZSgwLCBz
dGVwcGVyU2l6ZS5oZWlnaHQoKSk7CiAgICAgICAgICAgICByZWN0LmNvbnRyYWN0KDAsIHN0ZXBw
ZXJTaXplLmhlaWdodCgpKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTE4OCw3ICsxODgsNyBAQCBJ
bnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjp0cmFja1JlY3QoU2Nyb2xsYmFyJiBzY3JvbGxiYXIs
IGJvb2wgcGFpbnRpbmcpCiAgICAgaWYgKGF1dG8qIHNlY29uZGFyeUZvcndhcmRTdGVwcGVyID0g
c2Nyb2xsYmFyV2lkZ2V0LnN0ZXBwZXIoUmVuZGVyVGhlbWVTY3JvbGxiYXJHYWRnZXQ6OlN0ZXBw
ZXJzOjpTZWNvbmRhcnlGb3J3YXJkKSkgewogICAgICAgICBzZWNvbmRhcnlGb3J3YXJkU3RlcHBl
ci0+c2V0U3RhdGUoc2Nyb2xsYmFyUGFydFN0YXRlRmxhZ3Moc2Nyb2xsYmFyLCBGb3J3YXJkQnV0
dG9uU3RhcnRQYXJ0KSk7CiAgICAgICAgIEludFNpemUgc3RlcHBlclNpemUgPSBzZWNvbmRhcnlG
b3J3YXJkU3RlcHBlci0+cHJlZmVycmVkU2l6ZSgpOwotICAgICAgICBpZiAoc2Nyb2xsYmFyLm9y
aWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIpIHsKKyAgICAgICAgaWYgKHNjcm9sbGJh
ci5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbCkgewogICAg
ICAgICAgICAgcmVjdC5tb3ZlKDAsIHN0ZXBwZXJTaXplLmhlaWdodCgpKTsKICAgICAgICAgICAg
IHJlY3QuY29udHJhY3QoMCwgc3RlcHBlclNpemUuaGVpZ2h0KCkpOwogICAgICAgICB9IGVsc2Ug
ewpAQCAtMTk4LDIwICsxOTgsMjAgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6dHJhY2tS
ZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBib29sIHBhaW50aW5nKQogICAgIH0KICAgICBpZiAo
YXV0byogc2Vjb25kYXJ5QmFja3dhcmRTdGVwcGVyID0gc2Nyb2xsYmFyV2lkZ2V0LnN0ZXBwZXIo
UmVuZGVyVGhlbWVTY3JvbGxiYXJHYWRnZXQ6OlN0ZXBwZXJzOjpTZWNvbmRhcnlCYWNrd2FyZCkp
IHsKICAgICAgICAgc2Vjb25kYXJ5QmFja3dhcmRTdGVwcGVyLT5zZXRTdGF0ZShzY3JvbGxiYXJQ
YXJ0U3RhdGVGbGFncyhzY3JvbGxiYXIsIEJhY2tCdXR0b25FbmRQYXJ0KSk7Ci0gICAgICAgIGlm
IChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikKKyAgICAgICAg
aWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0
aWNhbCkKICAgICAgICAgICAgIHJlY3QuY29udHJhY3QoMCwgc2Vjb25kYXJ5QmFja3dhcmRTdGVw
cGVyLT5wcmVmZXJyZWRTaXplKCkuaGVpZ2h0KCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICByZWN0LmNvbnRyYWN0KHNlY29uZGFyeUJhY2t3YXJkU3RlcHBlci0+cHJlZmVycmVkU2l6ZSgp
LndpZHRoKCksIDApOwogICAgIH0KICAgICBpZiAoYXV0byogZm9yd2FyZFN0ZXBwZXIgPSBzY3Jv
bGxiYXJXaWRnZXQuc3RlcHBlcihSZW5kZXJUaGVtZVNjcm9sbGJhckdhZGdldDo6U3RlcHBlcnM6
OkZvcndhcmQpKSB7CiAgICAgICAgIGZvcndhcmRTdGVwcGVyLT5zZXRTdGF0ZShzY3JvbGxiYXJQ
YXJ0U3RhdGVGbGFncyhzY3JvbGxiYXIsIEZvcndhcmRCdXR0b25FbmRQYXJ0KSk7Ci0gICAgICAg
IGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikKKyAgICAg
ICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpW
ZXJ0aWNhbCkKICAgICAgICAgICAgIHJlY3QuY29udHJhY3QoMCwgZm9yd2FyZFN0ZXBwZXItPnBy
ZWZlcnJlZFNpemUoKS5oZWlnaHQoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlY3Qu
Y29udHJhY3QoZm9yd2FyZFN0ZXBwZXItPnByZWZlcnJlZFNpemUoKS53aWR0aCgpLCAwKTsKICAg
ICB9CiAKLSAgICBpZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxi
YXIpCisgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0
aW9uOjpWZXJ0aWNhbCkKICAgICAgICAgcmV0dXJuIHNjcm9sbGJhci5oZWlnaHQoKSA8IHJlY3Qu
aGVpZ2h0KCkgPyBJbnRSZWN0KCkgOiByZWN0OwogCiAgICAgcmV0dXJuIHNjcm9sbGJhci53aWR0
aCgpIDwgcmVjdC53aWR0aCgpID8gSW50UmVjdCgpIDogcmVjdDsKQEAgLTI0MSw3ICsyNDEsNyBA
QCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXImIHNj
cm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYQogICAgIGlmIChhdXRvKiBzZWNvbmRhcnlGb3J3YXJk
U3RlcHBlciA9IHNjcm9sbGJhcldpZGdldC5zdGVwcGVyKFJlbmRlclRoZW1lU2Nyb2xsYmFyR2Fk
Z2V0OjpTdGVwcGVyczo6U2Vjb25kYXJ5Rm9yd2FyZCkpIHsKICAgICAgICAgc2Vjb25kYXJ5Rm9y
d2FyZFN0ZXBwZXItPnNldFN0YXRlKHNjcm9sbGJhclBhcnRTdGF0ZUZsYWdzKHNjcm9sbGJhciwg
Rm9yd2FyZEJ1dHRvblN0YXJ0UGFydCkpOwogICAgICAgICBJbnRTaXplIHByZWZlcnJlZFNpemUg
PSBzZWNvbmRhcnlGb3J3YXJkU3RlcHBlci0+cHJlZmVycmVkU2l6ZSgpOwotICAgICAgICBpZiAo
c2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIpIHsKKyAgICAgICAg
aWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0
aWNhbCkgewogICAgICAgICAgICAgcmVjdC5tb3ZlKDAsIHByZWZlcnJlZFNpemUuaGVpZ2h0KCkp
OwogICAgICAgICAgICAgcmVjdC5jb250cmFjdCgwLCBwcmVmZXJyZWRTaXplLmhlaWdodCgpKTsK
ICAgICAgICAgfSBlbHNlIHsKQEAgLTI1Miw3ICsyNTIsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRo
ZW1lR3RrOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXImIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFy
dCBwYQogCiAgICAgaWYgKGF1dG8qIHNlY29uZGFyeUJhY2t3YXJkU3RlcHBlciA9IHNjcm9sbGJh
cldpZGdldC5zdGVwcGVyKFJlbmRlclRoZW1lU2Nyb2xsYmFyR2FkZ2V0OjpTdGVwcGVyczo6U2Vj
b25kYXJ5QmFja3dhcmQpKSB7CiAgICAgICAgIHNlY29uZGFyeUJhY2t3YXJkU3RlcHBlci0+c2V0
U3RhdGUoc2Nyb2xsYmFyUGFydFN0YXRlRmxhZ3Moc2Nyb2xsYmFyLCBCYWNrQnV0dG9uRW5kUGFy
dCkpOwotICAgICAgICBpZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3Jv
bGxiYXIpCisgICAgICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJP
cmllbnRhdGlvbjo6VmVydGljYWwpCiAgICAgICAgICAgICByZWN0LmNvbnRyYWN0KDAsIHNlY29u
ZGFyeUJhY2t3YXJkU3RlcHBlci0+cHJlZmVycmVkU2l6ZSgpLmhlaWdodCgpKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgcmVjdC5jb250cmFjdChzZWNvbmRhcnlCYWNrd2FyZFN0ZXBwZXIt
PnByZWZlcnJlZFNpemUoKS53aWR0aCgpLCAwKTsKQEAgLTI2Miw3ICsyNjIsNyBAQCBJbnRSZWN0
IFNjcm9sbGJhclRoZW1lR3RrOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXImIHNjcm9sbGJhciwg
U2Nyb2xsYmFyUGFydCBwYQogICAgIEFTU0VSVChmb3J3YXJkU3RlcHBlcik7CiAgICAgZm9yd2Fy
ZFN0ZXBwZXItPnNldFN0YXRlKHNjcm9sbGJhclBhcnRTdGF0ZUZsYWdzKHNjcm9sbGJhciwgRm9y
d2FyZEJ1dHRvbkVuZFBhcnQpKTsKICAgICBJbnRTaXplIHByZWZlcnJlZFNpemUgPSBmb3J3YXJk
U3RlcHBlci0+cHJlZmVycmVkU2l6ZSgpOwotICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24o
KSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikKKyAgICBpZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkg
PT0gU2Nyb2xsYmFyT3JpZW50YXRpb246OlZlcnRpY2FsKQogICAgICAgICByZWN0Lm1vdmUoMCwg
cmVjdC5oZWlnaHQoKSAtIHByZWZlcnJlZFNpemUuaGVpZ2h0KCkpOwogICAgIGVsc2UKICAgICAg
ICAgcmVjdC5tb3ZlKHJlY3Qud2lkdGgoKSAtIHByZWZlcnJlZFNpemUud2lkdGgoKSwgMCk7CkBA
IC0yODcsNyArMjg3LDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6Zm9yd2FyZEJ1dHRv
blJlY3QoU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQKICAgICBpZiAoYXV0byog
YmFja3dhcmRTdGVwcGVyID0gc2Nyb2xsYmFyV2lkZ2V0LnN0ZXBwZXIoUmVuZGVyVGhlbWVTY3Jv
bGxiYXJHYWRnZXQ6OlN0ZXBwZXJzOjpCYWNrd2FyZCkpIHsKICAgICAgICAgYmFja3dhcmRTdGVw
cGVyLT5zZXRTdGF0ZShzY3JvbGxiYXJQYXJ0U3RhdGVGbGFncyhzY3JvbGxiYXIsIEJhY2tCdXR0
b25TdGFydFBhcnQpKTsKICAgICAgICAgSW50U2l6ZSBwcmVmZXJyZWRTaXplID0gYmFja3dhcmRT
dGVwcGVyLT5wcmVmZXJyZWRTaXplKCk7Ci0gICAgICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRp
b24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikgeworICAgICAgICBpZiAoc2Nyb2xsYmFyLm9yaWVu
dGF0aW9uKCkgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246OlZlcnRpY2FsKSB7CiAgICAgICAgICAg
ICByZWN0Lm1vdmUoMCwgcHJlZmVycmVkU2l6ZS5oZWlnaHQoKSk7CiAgICAgICAgICAgICByZWN0
LmNvbnRyYWN0KDAsIHByZWZlcnJlZFNpemUuaGVpZ2h0KCkpOwogICAgICAgICB9IGVsc2UgewpA
QCAtMzAyLDcgKzMwMiw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OmZvcndhcmRCdXR0
b25SZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0CiAgICAgICAgIGlmIChw
YXJ0ID09IEZvcndhcmRCdXR0b25TdGFydFBhcnQpCiAgICAgICAgICAgICByZXR1cm4gSW50UmVj
dChyZWN0LmxvY2F0aW9uKCksIHByZWZlcnJlZFNpemUpOwogCi0gICAgICAgIGlmIChzY3JvbGxi
YXIub3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikgeworICAgICAgICBpZiAoc2Ny
b2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246OlZlcnRpY2FsKSB7
CiAgICAgICAgICAgICByZWN0Lm1vdmUoMCwgcHJlZmVycmVkU2l6ZS5oZWlnaHQoKSk7CiAgICAg
ICAgICAgICByZWN0LmNvbnRyYWN0KDAsIHByZWZlcnJlZFNpemUuaGVpZ2h0KCkpOwogICAgICAg
ICB9IGVsc2UgewpAQCAtMzE1LDcgKzMxNSw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6
OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0CiAg
ICAgQVNTRVJUKGZvcndhcmRTdGVwcGVyKTsKICAgICBmb3J3YXJkU3RlcHBlci0+c2V0U3RhdGUo
c2Nyb2xsYmFyUGFydFN0YXRlRmxhZ3Moc2Nyb2xsYmFyLCBGb3J3YXJkQnV0dG9uRW5kUGFydCkp
OwogICAgIEludFNpemUgcHJlZmVycmVkU2l6ZSA9IGZvcndhcmRTdGVwcGVyLT5wcmVmZXJyZWRT
aXplKCk7Ci0gICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xs
YmFyKQorICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRh
dGlvbjo6VmVydGljYWwpCiAgICAgICAgIHJlY3QubW92ZSgwLCByZWN0LmhlaWdodCgpIC0gcHJl
ZmVycmVkU2l6ZS5oZWlnaHQoKSk7CiAgICAgZWxzZQogICAgICAgICByZWN0Lm1vdmUocmVjdC53
aWR0aCgpIC0gcHJlZmVycmVkU2l6ZS53aWR0aCgpLCAwKTsKQEAgLTM3OCw3ICszNzgsNyBAQCBi
b29sIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludChTY3JvbGxiYXImIHNjcm9sbGJhciwgR3JhcGhp
Y3NDb250ZXh0JiBncmFwaGljc0NvbgogICAgIEZsb2F0UmVjdCBjb250ZW50c1JlY3QocmVjdCk7
CiAgICAgLy8gV2hlbiB1c2luZyBvdmVybGF5IHNjcm9sbGJhcnMgd2UgYWx3YXlzIGNsYWltIHRo
ZSBzaXplIG9mIHRoZSBzY3JvbGxiYXIgd2hlbiBob3ZlcmVkLCBzbyB3aGVuCiAgICAgLy8gZHJh
d2luZyB0aGUgaW5kaWNhdG9yIHdlIG5lZWQgdG8gYWRqdXN0IHRoZSByZWN0YW5nbGUgdG8gaXRz
IGFjdHVhbCBzaXplIGluIGluZGljYXRvciBtb2RlLgotICAgIGlmIChzY3JvbGxiYXIub3JpZW50
YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikgeworICAgIGlmIChzY3JvbGxiYXIub3JpZW50
YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwpIHsKICAgICAgICAgaWYg
KHJlY3Qud2lkdGgoKSAhPSBwcmVmZXJyZWRTaXplLndpZHRoKCkpIHsKICAgICAgICAgICAgIGlm
ICghc2Nyb2xsYmFyLnNjcm9sbGFibGVBcmVhKCkuc2hvdWxkUGxhY2VWZXJ0aWNhbFNjcm9sbGJh
ck9uTGVmdCgpKQogICAgICAgICAgICAgICAgIGNvbnRlbnRzUmVjdC5tb3ZlKHN0ZDo6YWJzKHJl
Y3Qud2lkdGgoKSAtIHByZWZlcnJlZFNpemUud2lkdGgoKSksIDApOwpAQCAtNDAyLDEzICs0MDIs
MTMgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnQoU2Nyb2xsYmFyJiBzY3JvbGxiYXIs
IEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb24KIAogICAgIGlmIChiYWNrd2FyZFN0ZXBwZXIp
IHsKICAgICAgICAgRmxvYXRSZWN0IGJ1dHRvblJlY3QgPSBjb250ZW50c1JlY3Q7Ci0gICAgICAg
IGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikKKyAgICAg
ICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpW
ZXJ0aWNhbCkKICAgICAgICAgICAgIGJ1dHRvblJlY3Quc2V0SGVpZ2h0KGJhY2t3YXJkU3RlcHBl
ci0+cHJlZmVycmVkU2l6ZSgpLmhlaWdodCgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
YnV0dG9uUmVjdC5zZXRXaWR0aChiYWNrd2FyZFN0ZXBwZXItPnByZWZlcnJlZFNpemUoKS53aWR0
aCgpKTsKICAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVTY3JvbGxiYXJHYWRnZXQmPihz
Y3JvbGxiYXJHYWRnZXQpLnJlbmRlclN0ZXBwZXIoZ3JhcGhpY3NDb250ZXh0LnBsYXRmb3JtQ29u
dGV4dCgpLT5jcigpLCBidXR0b25SZWN0LCBiYWNrd2FyZFN0ZXBwZXIsCi0gICAgICAgICAgICBz
Y3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhciA/IEdUS19PUklFTlRB
VElPTl9WRVJUSUNBTCA6IEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCBSZW5kZXJUaGVtZVNj
cm9sbGJhckdhZGdldDo6U3RlcHBlcnM6OkJhY2t3YXJkKTsKLSAgICAgICAgaWYgKHNjcm9sbGJh
ci5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKSB7CisgICAgICAgICAgICBzY3Jv
bGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwgPyBH
VEtfT1JJRU5UQVRJT05fVkVSVElDQUwgOiBHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgUmVu
ZGVyVGhlbWVTY3JvbGxiYXJHYWRnZXQ6OlN0ZXBwZXJzOjpCYWNrd2FyZCk7CisgICAgICAgIGlm
IChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGlj
YWwpIHsKICAgICAgICAgICAgIGNvbnRlbnRzUmVjdC5tb3ZlKDAsIGJ1dHRvblJlY3QuaGVpZ2h0
KCkpOwogICAgICAgICAgICAgY29udGVudHNSZWN0LmNvbnRyYWN0KDAsIGJ1dHRvblJlY3QuaGVp
Z2h0KCkpOwogICAgICAgICB9IGVsc2UgewpAQCAtNDE4LDEzICs0MTgsMTMgQEAgYm9vbCBTY3Jv
bGxiYXJUaGVtZUd0azo6cGFpbnQoU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4
dCYgZ3JhcGhpY3NDb24KICAgICB9CiAgICAgaWYgKHNlY29uZGFyeUZvcndhcmRTdGVwcGVyKSB7
CiAgICAgICAgIEZsb2F0UmVjdCBidXR0b25SZWN0ID0gY29udGVudHNSZWN0OwotICAgICAgICBp
ZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIpCisgICAgICAg
IGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVy
dGljYWwpCiAgICAgICAgICAgICBidXR0b25SZWN0LnNldEhlaWdodChzZWNvbmRhcnlGb3J3YXJk
U3RlcHBlci0+cHJlZmVycmVkU2l6ZSgpLmhlaWdodCgpKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgYnV0dG9uUmVjdC5zZXRXaWR0aChzZWNvbmRhcnlGb3J3YXJkU3RlcHBlci0+cHJlZmVy
cmVkU2l6ZSgpLndpZHRoKCkpOwogICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZVNjcm9s
bGJhckdhZGdldCY+KHNjcm9sbGJhckdhZGdldCkucmVuZGVyU3RlcHBlcihncmFwaGljc0NvbnRl
eHQucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGJ1dHRvblJlY3QsIHNlY29uZGFyeUZvcndhcmRT
dGVwcGVyLAotICAgICAgICAgICAgc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxT
Y3JvbGxiYXIgPyBHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwgOiBHVEtfT1JJRU5UQVRJT05fSE9S
SVpPTlRBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXJHYWRnZXQ6OlN0ZXBwZXJzOjpTZWNvbmRhcnlG
b3J3YXJkKTsKLSAgICAgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFZlcnRpY2Fs
U2Nyb2xsYmFyKSB7CisgICAgICAgICAgICBzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3Jv
bGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwgPyBHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwgOiBH
VEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXJHYWRnZXQ6OlN0
ZXBwZXJzOjpTZWNvbmRhcnlGb3J3YXJkKTsKKyAgICAgICAgaWYgKHNjcm9sbGJhci5vcmllbnRh
dGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbCkgewogICAgICAgICAgICAg
Y29udGVudHNSZWN0Lm1vdmUoMCwgYnV0dG9uUmVjdC5oZWlnaHQoKSk7CiAgICAgICAgICAgICBj
b250ZW50c1JlY3QuY29udHJhY3QoMCwgYnV0dG9uUmVjdC5oZWlnaHQoKSk7CiAgICAgICAgIH0g
ZWxzZSB7CkBAIC00MzQsNyArNDM0LDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnQo
U2Nyb2xsYmFyJiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb24KICAgICB9
CiAgICAgaWYgKHNlY29uZGFyeUJhY2t3YXJkU3RlcHBlcikgewogICAgICAgICBGbG9hdFJlY3Qg
YnV0dG9uUmVjdCA9IGNvbnRlbnRzUmVjdDsKLSAgICAgICAgaWYgKHNjcm9sbGJhci5vcmllbnRh
dGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKSB7CisgICAgICAgIGlmIChzY3JvbGxiYXIub3Jp
ZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwpIHsKICAgICAgICAg
ICAgIGJ1dHRvblJlY3Quc2V0SGVpZ2h0KHNlY29uZGFyeUJhY2t3YXJkU3RlcHBlci0+cHJlZmVy
cmVkU2l6ZSgpLmhlaWdodCgpKTsKICAgICAgICAgICAgIGJ1dHRvblJlY3QubW92ZSgwLCBjb250
ZW50c1JlY3QuaGVpZ2h0KCkgLSBidXR0b25SZWN0LmhlaWdodCgpKTsKICAgICAgICAgfSBlbHNl
IHsKQEAgLTQ0MiwxNSArNDQyLDE1IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50KFNj
cm9sbGJhciYgc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29uCiAgICAgICAg
ICAgICBidXR0b25SZWN0Lm1vdmUoY29udGVudHNSZWN0LndpZHRoKCkgLSBidXR0b25SZWN0Lndp
ZHRoKCksIDApOwogICAgICAgICB9CiAgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1lU2Ny
b2xsYmFyR2FkZ2V0Jj4oc2Nyb2xsYmFyR2FkZ2V0KS5yZW5kZXJTdGVwcGVyKGdyYXBoaWNzQ29u
dGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgYnV0dG9uUmVjdCwgc2Vjb25kYXJ5QmFja3dh
cmRTdGVwcGVyLAotICAgICAgICAgICAgc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gVmVydGlj
YWxTY3JvbGxiYXIgPyBHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwgOiBHVEtfT1JJRU5UQVRJT05f
SE9SSVpPTlRBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXJHYWRnZXQ6OlN0ZXBwZXJzOjpTZWNvbmRh
cnlCYWNrd2FyZCk7Ci0gICAgICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBWZXJ0
aWNhbFNjcm9sbGJhcikKKyAgICAgICAgICAgIHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFNj
cm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbCA/IEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCA6
IEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCBSZW5kZXJUaGVtZVNjcm9sbGJhckdhZGdldDo6
U3RlcHBlcnM6OlNlY29uZGFyeUJhY2t3YXJkKTsKKyAgICAgICAgaWYgKHNjcm9sbGJhci5vcmll
bnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbCkKICAgICAgICAgICAg
IGNvbnRlbnRzUmVjdC5jb250cmFjdCgwLCBidXR0b25SZWN0LmhlaWdodCgpKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgY29udGVudHNSZWN0LmNvbnRyYWN0KGJ1dHRvblJlY3Qud2lkdGgo
KSwgMCk7CiAgICAgfQogICAgIGlmIChmb3J3YXJkU3RlcHBlcikgewogICAgICAgICBGbG9hdFJl
Y3QgYnV0dG9uUmVjdCA9IGNvbnRlbnRzUmVjdDsKLSAgICAgICAgaWYgKHNjcm9sbGJhci5vcmll
bnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKSB7CisgICAgICAgIGlmIChzY3JvbGxiYXIu
b3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwpIHsKICAgICAg
ICAgICAgIGJ1dHRvblJlY3Quc2V0SGVpZ2h0KGZvcndhcmRTdGVwcGVyLT5wcmVmZXJyZWRTaXpl
KCkuaGVpZ2h0KCkpOwogICAgICAgICAgICAgYnV0dG9uUmVjdC5tb3ZlKDAsIGNvbnRlbnRzUmVj
dC5oZWlnaHQoKSAtIGJ1dHRvblJlY3QuaGVpZ2h0KCkpOwogICAgICAgICB9IGVsc2UgewpAQCAt
NDU4LDggKzQ1OCw4IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50KFNjcm9sbGJhciYg
c2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29uCiAgICAgICAgICAgICBidXR0
b25SZWN0Lm1vdmUoY29udGVudHNSZWN0LndpZHRoKCkgLSBidXR0b25SZWN0LndpZHRoKCksIDAp
OwogICAgICAgICB9CiAgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1lU2Nyb2xsYmFyR2Fk
Z2V0Jj4oc2Nyb2xsYmFyR2FkZ2V0KS5yZW5kZXJTdGVwcGVyKGdyYXBoaWNzQ29udGV4dC5wbGF0
Zm9ybUNvbnRleHQoKS0+Y3IoKSwgYnV0dG9uUmVjdCwgZm9yd2FyZFN0ZXBwZXIsCi0gICAgICAg
ICAgICBzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhciA/IEdUS19P
UklFTlRBVElPTl9WRVJUSUNBTCA6IEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCBSZW5kZXJU
aGVtZVNjcm9sbGJhckdhZGdldDo6U3RlcHBlcnM6OkZvcndhcmQpOwotICAgICAgICBpZiAoc2Ny
b2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIpCisgICAgICAgICAgICBz
Y3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwg
PyBHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwgOiBHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwg
UmVuZGVyVGhlbWVTY3JvbGxiYXJHYWRnZXQ6OlN0ZXBwZXJzOjpGb3J3YXJkKTsKKyAgICAgICAg
aWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0
aWNhbCkKICAgICAgICAgICAgIGNvbnRlbnRzUmVjdC5jb250cmFjdCgwLCBidXR0b25SZWN0Lmhl
aWdodCgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29udGVudHNSZWN0LmNvbnRyYWN0
KGJ1dHRvblJlY3Qud2lkdGgoKSwgMCk7CkBAIC00NjgsNyArNDY4LDcgQEAgYm9vbCBTY3JvbGxi
YXJUaGVtZUd0azo6cGFpbnQoU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCYg
Z3JhcGhpY3NDb24KICAgICB0cm91Z2gucmVuZGVyKGdyYXBoaWNzQ29udGV4dC5wbGF0Zm9ybUNv
bnRleHQoKS0+Y3IoKSwgY29udGVudHNSZWN0LCAmY29udGVudHNSZWN0KTsKIAogICAgIGlmICh0
aHVtYlNpemUpIHsKLSAgICAgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFZlcnRp
Y2FsU2Nyb2xsYmFyKSB7CisgICAgICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBT
Y3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwpIHsKICAgICAgICAgICAgIGNvbnRlbnRzUmVj
dC5tb3ZlKDAsIHRodW1iUG9zaXRpb24oc2Nyb2xsYmFyKSk7CiAgICAgICAgICAgICBjb250ZW50
c1JlY3Quc2V0V2lkdGgoc2Nyb2xsYmFyV2lkZ2V0LnNsaWRlcigpLnByZWZlcnJlZFNpemUoKS53
aWR0aCgpKTsKICAgICAgICAgICAgIGNvbnRlbnRzUmVjdC5zZXRIZWlnaHQodGh1bWJTaXplKTsK
QEAgLTU0MSw3ICs1NDEsNyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVHdGs6Om1pbmltdW1UaHVtYkxl
bmd0aChTY3JvbGxiYXImIHNjcm9sbGJhcikKICAgICBhdXRvJiBzY3JvbGxiYXJXaWRnZXQgPSBz
dGF0aWNfY2FzdDxSZW5kZXJUaGVtZVNjcm9sbGJhciY+KFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpn
ZXRPckNyZWF0ZShSZW5kZXJUaGVtZVNjcm9sbGJhcjo6VHlwZTo6VmVydGljYWxTY3JvbGxiYXJS
aWdodCkpOwogICAgIHNjcm9sbGJhcldpZGdldC5zY3JvbGxiYXIoKS5zZXRTdGF0ZShHVEtfU1RB
VEVfRkxBR19QUkVMSUdIVCk7CiAgICAgSW50U2l6ZSBtaW5TaXplID0gc2Nyb2xsYmFyV2lkZ2V0
LnNsaWRlcigpLm1pbmltdW1TaXplKCk7Ci0gICAgcmV0dXJuIHNjcm9sbGJhci5vcmllbnRhdGlv
bigpID09IFZlcnRpY2FsU2Nyb2xsYmFyID8gbWluU2l6ZS5oZWlnaHQoKSA6IG1pblNpemUud2lk
dGgoKTsKKyAgICByZXR1cm4gc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gU2Nyb2xsYmFyT3Jp
ZW50YXRpb246OlZlcnRpY2FsID8gbWluU2l6ZS5oZWlnaHQoKSA6IG1pblNpemUud2lkdGgoKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCmluZGV4IDM0ZjIyNmY5OGI5ZWIxODFjNWE2NDhk
YThmNjU3ZDUwYTMwMGNmNjUuLjJlNTA3Nzk2ODViNzFmZWIyMmJiYjczYzdlNWY1MDI1ZDQ5NTUx
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVt
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVN
YWMubW0KQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lTWFjOjpyZWdpc3Rl
clNjcm9sbGJhcihTY3JvbGxiYXImIHNjcm9sbGJhcikKICAgICBpZiAoc2Nyb2xsYmFyLmlzQ3Vz
dG9tU2Nyb2xsYmFyKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgaXNIb3Jpem9udGFs
ID0gc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcjsKKyAgICBi
b29sIGlzSG9yaXpvbnRhbCA9IHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9y
aWVudGF0aW9uOjpIb3Jpem9udGFsOwogICAgIGF1dG8gc2Nyb2xsZXJJbXAgPSByZXRhaW5QdHIo
W05TU2Nyb2xsZXJJbXAgc2Nyb2xsZXJJbXBXaXRoU3R5bGU6U2Nyb2xsZXJTdHlsZTo6cmVjb21t
ZW5kZWRTY3JvbGxlclN0eWxlKCkgY29udHJvbFNpemU6c2Nyb2xsYmFyQ29udHJvbFNpemVUb05T
Q29udHJvbFNpemUoc2Nyb2xsYmFyLmNvbnRyb2xTaXplKCkpIGhvcml6b250YWw6aXNIb3Jpem9u
dGFsIHJlcGxhY2luZ1Njcm9sbGVySW1wOm5pbF0pOwogICAgIHNjcm9sbGJhck1hcCgpLmFkZCgm
c2Nyb2xsYmFyLCBXVEZNb3ZlKHNjcm9sbGVySW1wKSk7CiAgICAgZGlkQ3JlYXRlU2Nyb2xsZXJJ
bXAoc2Nyb2xsYmFyKTsKQEAgLTI5NSw3ICsyOTUsNyBAQCBpbmxpbmUgY29uc3RleHByIHVuc2ln
bmVkIHNjcm9sbGJhclNpemVUb0luZGV4KFNjcm9sbGJhckNvbnRyb2xTaXplIHNjcm9sbGJhclNp
egogCiBib29sIFNjcm9sbGJhclRoZW1lTWFjOjpoYXNCdXR0b25zKFNjcm9sbGJhciYgc2Nyb2xs
YmFyKQogewotICAgIGlmIChzY3JvbGxiYXIuZW5hYmxlZCgpICYmIGJ1dHRvbnNQbGFjZW1lbnQo
KSAhPSBTY3JvbGxiYXJCdXR0b25zTm9uZSAmJiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0g
SG9yaXpvbnRhbFNjcm9sbGJhcikpCisgICAgaWYgKHNjcm9sbGJhci5lbmFibGVkKCkgJiYgYnV0
dG9uc1BsYWNlbWVudCgpICE9IFNjcm9sbGJhckJ1dHRvbnNOb25lICYmIChzY3JvbGxiYXIub3Jp
ZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCkpCiAgICAgICAg
IHJldHVybiBzY3JvbGxiYXIud2lkdGgoKTsKICAgICByZXR1cm4gc2Nyb2xsYmFyLmhlaWdodCgp
ID49IDIgKiAoY1JlYWxCdXR0b25MZW5ndGhbc2Nyb2xsYmFyU2l6ZVRvSW5kZXgoc2Nyb2xsYmFy
LmNvbnRyb2xTaXplKCkpXSAtIGNCdXR0b25IaXRJbnNldFtzY3JvbGxiYXJTaXplVG9JbmRleChz
Y3JvbGxiYXIuY29udHJvbFNpemUoKSldKTsKIH0KQEAgLTMwOCw3ICszMDgsNyBAQCBib29sIFNj
cm9sbGJhclRoZW1lTWFjOjpoYXNUaHVtYihTY3JvbGxiYXImIHNjcm9sbGJhcikKICAgICBtaW5M
ZW5ndGhGb3JUaHVtYiA9IFtwYWludGVyIGtub2JNaW5MZW5ndGhdICsgW3BhaW50ZXIgdHJhY2tP
dmVybGFwRW5kSW5zZXRdICsgW3BhaW50ZXIga25vYk92ZXJsYXBFbmRJbnNldF0KICAgICAgICAg
KyAyICogKFtwYWludGVyIHRyYWNrRW5kSW5zZXRdICsgW3BhaW50ZXIga25vYkVuZEluc2V0XSk7
CiAKLSAgICByZXR1cm4gc2Nyb2xsYmFyLmVuYWJsZWQoKSAmJiAoc2Nyb2xsYmFyLm9yaWVudGF0
aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/CisgICAgcmV0dXJuIHNjcm9sbGJhci5lbmFi
bGVkKCkgJiYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9u
OjpIb3Jpem9udGFsID8KICAgICAgICAgICAgICBzY3JvbGxiYXIud2lkdGgoKSA6CiAgICAgICAg
ICAgICAgc2Nyb2xsYmFyLmhlaWdodCgpKSA+PSBtaW5MZW5ndGhGb3JUaHVtYjsKIH0KQEAgLTMx
OCw3ICszMTgsNyBAQCBzdGF0aWMgSW50UmVjdCBidXR0b25SZXBhaW50UmVjdChjb25zdCBJbnRS
ZWN0JiBidXR0b25SZWN0LCBTY3JvbGxiYXJPcmllbnRhdGlvbgogICAgIEFTU0VSVChnQnV0dG9u
UGxhY2VtZW50ICE9IFNjcm9sbGJhckJ1dHRvbnNOb25lKTsKIAogICAgIEludFJlY3QgcGFpbnRS
ZWN0KGJ1dHRvblJlY3QpOwotICAgIGlmIChvcmllbnRhdGlvbiA9PSBIb3Jpem9udGFsU2Nyb2xs
YmFyKSB7CisgICAgaWYgKG9yaWVudGF0aW9uID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jp
em9udGFsKSB7CiAgICAgICAgIHBhaW50UmVjdC5zZXRXaWR0aChjUmVhbEJ1dHRvbkxlbmd0aFtz
Y3JvbGxiYXJTaXplVG9JbmRleChjb250cm9sU2l6ZSldKTsKICAgICAgICAgaWYgKCFzdGFydCkK
ICAgICAgICAgICAgIHBhaW50UmVjdC5zZXRYKGJ1dHRvblJlY3QueCgpIC0gKGNSZWFsQnV0dG9u
TGVuZ3RoW3Njcm9sbGJhclNpemVUb0luZGV4KGNvbnRyb2xTaXplKV0gLSBidXR0b25SZWN0Lndp
ZHRoKCkpKTsKQEAgLTM0NCw3ICszNDQsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lTWFjOjpi
YWNrQnV0dG9uUmVjdChTY3JvbGxiYXImIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYQogICAg
IGludCB0aGlja25lc3MgPSBzY3JvbGxiYXJUaGlja25lc3Moc2Nyb2xsYmFyLmNvbnRyb2xTaXpl
KCkpOwogICAgIGJvb2wgb3V0ZXJCdXR0b24gPSBwYXJ0ID09IEJhY2tCdXR0b25TdGFydFBhcnQg
JiYgKGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJCdXR0b25zRG91YmxlU3RhcnQgfHwg
YnV0dG9uc1BsYWNlbWVudCgpID09IFNjcm9sbGJhckJ1dHRvbnNEb3VibGVCb3RoKTsKICAgICBp
ZiAob3V0ZXJCdXR0b24pIHsKLSAgICAgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09
IEhvcml6b250YWxTY3JvbGxiYXIpCisgICAgICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24o
KSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCkKICAgICAgICAgICAgIHJlc3Vs
dCA9IEludFJlY3Qoc2Nyb2xsYmFyLngoKSwgc2Nyb2xsYmFyLnkoKSwgY091dGVyQnV0dG9uTGVu
Z3RoW3Njcm9sbGJhclNpemVUb0luZGV4KHNjcm9sbGJhci5jb250cm9sU2l6ZSgpKV0gKyAocGFp
bnRpbmcgPyBjT3V0ZXJCdXR0b25PdmVybGFwIDogMCksIHRoaWNrbmVzcyk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIHJlc3VsdCA9IEludFJlY3Qoc2Nyb2xsYmFyLngoKSwgc2Nyb2xsYmFy
LnkoKSwgdGhpY2tuZXNzLCBjT3V0ZXJCdXR0b25MZW5ndGhbc2Nyb2xsYmFyU2l6ZVRvSW5kZXgo
c2Nyb2xsYmFyLmNvbnRyb2xTaXplKCkpXSArIChwYWludGluZyA/IGNPdXRlckJ1dHRvbk92ZXJs
YXAgOiAwKSk7CkBAIC0zNTIsNyArMzUyLDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1hYzo6
YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGEKICAg
ICB9CiAgICAgCiAgICAgLy8gT3VyIHJlcGFpbnQgcmVjdCBpcyBzbGlnaHRseSBsYXJnZXIsIHNp
bmNlIHdlIGFyZSBhIGJ1dHRvbiB0aGF0IGlzIGFkamFjZW50IHRvIHRoZSB0cmFjay4KLSAgICBp
ZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgeworICAg
IGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9y
aXpvbnRhbCkgewogICAgICAgICBpbnQgc3RhcnQgPSBwYXJ0ID09IEJhY2tCdXR0b25TdGFydFBh
cnQgPyBzY3JvbGxiYXIueCgpIDogc2Nyb2xsYmFyLngoKSArIHNjcm9sbGJhci53aWR0aCgpIC0g
Y091dGVyQnV0dG9uTGVuZ3RoW3Njcm9sbGJhclNpemVUb0luZGV4KHNjcm9sbGJhci5jb250cm9s
U2l6ZSgpKV0gLSBjQnV0dG9uTGVuZ3RoW3Njcm9sbGJhclNpemVUb0luZGV4KHNjcm9sbGJhci5j
b250cm9sU2l6ZSgpKV07CiAgICAgICAgIHJlc3VsdCA9IEludFJlY3Qoc3RhcnQsIHNjcm9sbGJh
ci55KCksIGNCdXR0b25MZW5ndGhbc2Nyb2xsYmFyU2l6ZVRvSW5kZXgoc2Nyb2xsYmFyLmNvbnRy
b2xTaXplKCkpXSwgdGhpY2tuZXNzKTsKICAgICB9IGVsc2UgewpAQCAtMzgxLDcgKzM4MSw3IEBA
IEludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciYg
c2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0CiAgICAgCiAgICAgYm9vbCBvdXRlckJ1dHRvbiA9IHBh
cnQgPT0gRm9yd2FyZEJ1dHRvbkVuZFBhcnQgJiYgKGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3Jv
bGxiYXJCdXR0b25zRG91YmxlRW5kIHx8IGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJC
dXR0b25zRG91YmxlQm90aCk7CiAgICAgaWYgKG91dGVyQnV0dG9uKSB7Ci0gICAgICAgIGlmIChz
Y3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CisgICAgICAg
IGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9y
aXpvbnRhbCkgewogICAgICAgICAgICAgcmVzdWx0ID0gSW50UmVjdChzY3JvbGxiYXIueCgpICsg
c2Nyb2xsYmFyLndpZHRoKCkgLSBvdXRlckJ1dHRvbkxlbmd0aCwgc2Nyb2xsYmFyLnkoKSwgb3V0
ZXJCdXR0b25MZW5ndGgsIHRoaWNrbmVzcyk7CiAgICAgICAgICAgICBpZiAocGFpbnRpbmcpCiAg
ICAgICAgICAgICAgICAgcmVzdWx0LmluZmxhdGVYKGNPdXRlckJ1dHRvbk92ZXJsYXApOwpAQCAt
MzkzLDcgKzM5Myw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OmZvcndhcmRCdXR0b25S
ZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogICAgIAotICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBI
b3Jpem9udGFsU2Nyb2xsYmFyKSB7CisgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09
IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKSB7CiAgICAgICAgIGludCBzdGFydCA9
IHBhcnQgPT0gRm9yd2FyZEJ1dHRvbkVuZFBhcnQgPyBzY3JvbGxiYXIueCgpICsgc2Nyb2xsYmFy
LndpZHRoKCkgLSBidXR0b25MZW5ndGggOiBzY3JvbGxiYXIueCgpICsgb3V0ZXJCdXR0b25MZW5n
dGg7CiAgICAgICAgIHJlc3VsdCA9IEludFJlY3Qoc3RhcnQsIHNjcm9sbGJhci55KCksIGJ1dHRv
bkxlbmd0aCwgdGhpY2tuZXNzKTsKICAgICB9IGVsc2UgewpAQCAtNDM3LDcgKzQzNyw3IEBAIElu
dFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OnRyYWNrUmVjdChTY3JvbGxiYXImIHNjcm9sbGJhciwg
Ym9vbCBwYWludGluZykKICAgICB9CiAgICAgCiAgICAgaW50IHRvdGFsV2lkdGggPSBzdGFydFdp
ZHRoICsgZW5kV2lkdGg7Ci0gICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IEhvcml6
b250YWxTY3JvbGxiYXIpCisgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFNjcm9s
bGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKQogICAgICAgICByZXR1cm4gSW50UmVjdChzY3Jv
bGxiYXIueCgpICsgc3RhcnRXaWR0aCwgc2Nyb2xsYmFyLnkoKSwgc2Nyb2xsYmFyLndpZHRoKCkg
LSB0b3RhbFdpZHRoLCB0aGlja25lc3MpOwogICAgIHJldHVybiBJbnRSZWN0KHNjcm9sbGJhci54
KCksIHNjcm9sbGJhci55KCkgKyBzdGFydFdpZHRoLCB0aGlja25lc3MsIHNjcm9sbGJhci5oZWln
aHQoKSAtIHRvdGFsV2lkdGgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Njcm9sbGJhcnNDb250cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Njcm9sbGJhcnNDb250cm9sbGVyTWFjLm1tCmluZGV4IDQ0NTBhYzFkOWM2OWVjMWM4
MjgxZmZjMGY2ODNhYmY3MjIyMDFjNzQuLmZhOTAxZDlmOTBjZTE2ZjI0ZGRiMjkyNDJiZjY5YTg3
NzhjMTQ0ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxi
YXJzQ29udHJvbGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Ny
b2xsYmFyc0NvbnRyb2xsZXJNYWMubW0KQEAgLTM3MCw3ICszNzAsNyBAQCB1c2luZyBXZWJDb3Jl
OjpMb2dPdmVybGF5U2Nyb2xsYmFyczsKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXIqIGxheWVyOwotICAgIGlmIChfc2Nyb2xsYmFyLT5vcmllbnRhdGlv
bigpID09IFdlYkNvcmU6OlZlcnRpY2FsU2Nyb2xsYmFyKQorICAgIGlmIChfc2Nyb2xsYmFyLT5v
cmllbnRhdGlvbigpID09IFdlYkNvcmU6OlNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbCkK
ICAgICAgICAgbGF5ZXIgPSBfc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgpLmxheWVyRm9yVmVy
dGljYWxTY3JvbGxiYXIoKTsKICAgICBlbHNlCiAgICAgICAgIGxheWVyID0gX3Njcm9sbGJhci0+
c2Nyb2xsYWJsZUFyZWEoKS5sYXllckZvckhvcml6b250YWxTY3JvbGxiYXIoKTsKQEAgLTQ1NSw3
ICs0NTUsNyBAQCB1c2luZyBXZWJDb3JlOjpMb2dPdmVybGF5U2Nyb2xsYmFyczsKICAgICBpZiAo
YXV0byogbWFjVGhlbWUgPSBXZWJDb3JlOjptYWNTY3JvbGxiYXJUaGVtZSgpKQogICAgICAgICBt
YWNUaGVtZS0+c2V0UGFpbnRDaGFyYWN0ZXJpc3RpY3NGb3JTY3JvbGxiYXIoKl9zY3JvbGxiYXIp
OwogCi0gICAgaWYgKHBhcnQgPT0gV2ViQ29yZTo6VGh1bWJQYXJ0ICYmIF9zY3JvbGxiYXItPm9y
aWVudGF0aW9uKCkgPT0gV2ViQ29yZTo6VmVydGljYWxTY3JvbGxiYXIpIHsKKyAgICBpZiAocGFy
dCA9PSBXZWJDb3JlOjpUaHVtYlBhcnQgJiYgX3Njcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBX
ZWJDb3JlOjpTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwpIHsKICAgICAgICAgaWYgKG5l
d0FscGhhID09IDEpIHsKICAgICAgICAgICAgIGF1dG8gdGh1bWJSZWN0ID0gV2ViQ29yZTo6SW50
UmVjdChbc2Nyb2xsZXJQYWludGVyIHJlY3RGb3JQYXJ0Ok5TU2Nyb2xsZXJLbm9iXSk7CiAgICAg
ICAgICAgICBbc2VsZiBzY3JvbGxiYXJzQ29udHJvbGxlcl0tPnNldFZpc2libGVTY3JvbGxlclRo
dW1iUmVjdCh0aHVtYlJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1BvcHVwTWVudVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBN
ZW51V2luLmNwcAppbmRleCAyNDhlM2RjMWUzODIxMjgzYWUwM2RiMmUzMjJjZjE1ZjZjZmJhYjNl
Li5iMTQzYmZhMmY3Zjg1NTAxYjNkMDg5MjI2YzhlNjA4YzE0ZmU5YjQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBA
IHZvaWQgUG9wdXBNZW51V2luOjpzaG93KGNvbnN0IEludFJlY3QmIHIsIEZyYW1lVmlldyogdmll
dywgaW50IGluZGV4KQogCiAgICAgaWYgKCFtX3Njcm9sbGJhciAmJiB2aXNpYmxlSXRlbXMoKSA8
IGNsaWVudCgpLT5saXN0U2l6ZSgpKSB7CiAgICAgICAgIC8vIFdlIG5lZWQgYSBzY3JvbGwgYmFy
Ci0gICAgICAgIG1fc2Nyb2xsYmFyID0gY2xpZW50KCktPmNyZWF0ZVNjcm9sbGJhcigqdGhpcywg
VmVydGljYWxTY3JvbGxiYXIsIFNjcm9sbGJhckNvbnRyb2xTaXplOjpTbWFsbCk7CisgICAgICAg
IG1fc2Nyb2xsYmFyID0gY2xpZW50KCktPmNyZWF0ZVNjcm9sbGJhcigqdGhpcywgU2Nyb2xsYmFy
T3JpZW50YXRpb246OlZlcnRpY2FsLCBTY3JvbGxiYXJDb250cm9sU2l6ZTo6U21hbGwpOwogICAg
ICAgICBtX3Njcm9sbGJhci0+c3R5bGVDaGFuZ2VkKCk7CiAgICAgfQogCkBAIC01NTUsMTIgKzU1
NSwxMiBAQCBib29sIFBvcHVwTWVudVdpbjo6c2Nyb2xsVG9SZXZlYWxTZWxlY3Rpb24oKQogICAg
IGludCBpbmRleCA9IGZvY3VzZWRJbmRleCgpOwogCiAgICAgaWYgKGluZGV4IDwgbV9zY3JvbGxP
ZmZzZXQpIHsKLSAgICAgICAgU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFRvT2Zmc2V0V2l0aG91dEFu
aW1hdGlvbihWZXJ0aWNhbFNjcm9sbGJhciwgaW5kZXgpOworICAgICAgICBTY3JvbGxhYmxlQXJl
YTo6c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKFNjcm9sbGJhck9yaWVudGF0aW9uOjpW
ZXJ0aWNhbCwgaW5kZXgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAo
aW5kZXggPj0gbV9zY3JvbGxPZmZzZXQgKyB2aXNpYmxlSXRlbXMoKSkgewotICAgICAgICBTY3Jv
bGxhYmxlQXJlYTo6c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKFZlcnRpY2FsU2Nyb2xs
YmFyLCBpbmRleCAtIHZpc2libGVJdGVtcygpICsgMSk7CisgICAgICAgIFNjcm9sbGFibGVBcmVh
OjpzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oU2Nyb2xsYmFyT3JpZW50YXRpb246OlZl
cnRpY2FsLCBpbmRleCAtIHZpc2libGVJdGVtcygpICsgMSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9s
bGJhclRoZW1lV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJU
aGVtZVdpbi5jcHAKaW5kZXggYTFkMjBlMDE0YmU3Y2M3ODk5YTU1MDY2ZDYyNzljNjhiYmYwOTFl
NS4uZTg5ZWM5ZDgzZDhhYmMxNDE5Mzg3MTZmMjRlYWJhMDYxYTA4NWFmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uY3BwCkBAIC0xNDks
NyArMTQ5LDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZVdpbjo6YmFja0J1dHRvblJlY3QoU2Ny
b2xsYmFyJiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGEKICAgICAvLyB3ZSBoYXZlIDwgMzQg
cGl4ZWxzIGxlZnQuICBUaGlzIGFsbG93cyB0aGUgc2Nyb2xsYmFyCiAgICAgLy8gdG8gc2NhbGUg
ZG93biBhbmQgZnVuY3Rpb24gZXZlbiBhdCB0aW55IHNpemVzLgogICAgIGludCB0aGlja25lc3Mg
PSBzY3JvbGxiYXJUaGlja25lc3MoKTsKLSAgICBpZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkg
PT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKKyAgICBpZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkg
PT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWwpCiAgICAgICAgIHJldHVybiBJbnRS
ZWN0KHNjcm9sbGJhci54KCksIHNjcm9sbGJhci55KCksCiAgICAgICAgICAgICAgICAgICAgICAg
IHNjcm9sbGJhci53aWR0aCgpIDwgMiAqIHRoaWNrbmVzcyA/IHNjcm9sbGJhci53aWR0aCgpIC8g
MiA6IHRoaWNrbmVzcywgdGhpY2tuZXNzKTsKICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXIu
eCgpLCBzY3JvbGxiYXIueSgpLApAQCAtMTY4LDcgKzE2OCw3IEBAIEludFJlY3QgU2Nyb2xsYmFy
VGhlbWVXaW46OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBTY3JvbGxi
YXJQYXJ0CiAgICAgLy8gd2UgaGF2ZSA8IDM0IHBpeGVscyBsZWZ0LiAgVGhpcyBhbGxvd3MgdGhl
IHNjcm9sbGJhcgogICAgIC8vIHRvIHNjYWxlIGRvd24gYW5kIGZ1bmN0aW9uIGV2ZW4gYXQgdGlu
eSBzaXplcy4KICAgICBpbnQgdGhpY2tuZXNzID0gc2Nyb2xsYmFyVGhpY2tuZXNzKCk7Ci0gICAg
aWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpIHsKKyAg
ICBpZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhv
cml6b250YWwpIHsKICAgICAgICAgaW50IHcgPSBzY3JvbGxiYXIud2lkdGgoKSA8IDIgKiB0aGlj
a25lc3MgPyBzY3JvbGxiYXIud2lkdGgoKSAvIDIgOiB0aGlja25lc3M7CiAgICAgICAgIHJldHVy
biBJbnRSZWN0KHNjcm9sbGJhci54KCkgKyBzY3JvbGxiYXIud2lkdGgoKSAtIHcsIHNjcm9sbGJh
ci55KCksIHcsIHRoaWNrbmVzcyk7CiAgICAgfQpAQCAtMTgwLDcgKzE4MCw3IEBAIEludFJlY3Qg
U2Nyb2xsYmFyVGhlbWVXaW46OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFy
LCBTY3JvbGxiYXJQYXJ0CiBJbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjp0cmFja1JlY3QoU2Ny
b2xsYmFyJiBzY3JvbGxiYXIsIGJvb2wpCiB7CiAgICAgaW50IHRoaWNrbmVzcyA9IHNjcm9sbGJh
clRoaWNrbmVzcygpOwotICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9u
dGFsU2Nyb2xsYmFyKSB7CisgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFNjcm9s
bGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKSB7CiAgICAgICAgIGlmIChzY3JvbGxiYXIud2lk
dGgoKSA8IDIgKiB0aGlja25lc3MpCiAgICAgICAgICAgICByZXR1cm4gSW50UmVjdCgpOwogICAg
ICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXIueCgpICsgdGhpY2tuZXNzLCBzY3JvbGxiYXIu
eSgpLCBzY3JvbGxiYXIud2lkdGgoKSAtIDIgKiB0aGlja25lc3MsIHRoaWNrbmVzcyk7CkBAIC0y
MTUsNyArMjE1LDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZVdpbjo6c2hvdWxkU25hcEJhY2tUb0Ry
YWdPcmlnaW4oU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0IFAKICAgICAvLyBGaW5kIHRoZSBy
ZWN0IHdpdGhpbiB3aGljaCB3ZSBzaG91bGRuJ3Qgc25hcCwgYnkgZXhwYW5kaW5nIHRoZSB0cmFj
ayByZWN0CiAgICAgLy8gaW4gYm90aCBkaW1lbnNpb25zLgogICAgIEludFJlY3QgcmVjdCA9IHRy
YWNrUmVjdChzY3JvbGxiYXIpOwotICAgIGNvbnN0IGJvb2wgaG9yeiA9IHNjcm9sbGJhci5vcmll
bnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXI7CisgICAgY29uc3QgYm9vbCBob3J6ID0g
c2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250
YWw7CiAgICAgY29uc3QgaW50IHRoaWNrbmVzcyA9IHNjcm9sbGJhclRoaWNrbmVzcyhzY3JvbGxi
YXIuY29udHJvbFNpemUoKSk7CiAgICAgcmVjdC5pbmZsYXRlWCgoaG9yeiA/IGtPZmZFbmRNdWx0
aXBsaWVyIDoga09mZlNpZGVNdWx0aXBsaWVyKSAqIHRoaWNrbmVzcyk7CiAgICAgcmVjdC5pbmZs
YXRlWSgoaG9yeiA/IGtPZmZTaWRlTXVsdGlwbGllciA6IGtPZmZFbmRNdWx0aXBsaWVyKSAqIHRo
aWNrbmVzcyk7CkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFp
bnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3IKIAog
ICAgIGJvb2wgc3RhcnQgPSBwYXJ0VHlwZSA9PSBCYWNrVHJhY2tQYXJ0OwogICAgIGludCBwYXJ0
OwotICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFy
KQorICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlv
bjo6SG9yaXpvbnRhbCkKICAgICAgICAgcGFydCA9IHN0YXJ0ID8gU1BfVFJBQ0tTVEFSVEhPUiA6
IFNQX1RSQUNLRU5ESE9SOwogICAgIGVsc2UKICAgICAgICAgcGFydCA9IHN0YXJ0ID8gU1BfVFJB
Q0tTVEFSVFZFUlQgOiBTUF9UUkFDS0VORFZFUlQ7CkBAIC0yOTYsNyArMjk2LDcgQEAgdm9pZCBT
Y3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBT
Y3JvbGxiYXImIHNjcm9sbGIKICAgICBib29sIHN0YXJ0ID0gKHBhcnQgPT0gQmFja0J1dHRvblN0
YXJ0UGFydCk7CiAgICAgaW50IHhwU3RhdGUgPSAwOwogICAgIGludCBjbGFzc2ljU3RhdGUgPSAw
OwotICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFy
KQorICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlv
bjo6SG9yaXpvbnRhbCkKICAgICAgICAgeHBTdGF0ZSA9IHN0YXJ0ID8gVFNfTEVGVF9CVVRUT04g
OiBUU19SSUdIVF9CVVRUT047CiAgICAgZWxzZQogICAgICAgICB4cFN0YXRlID0gc3RhcnQgPyBU
U19VUF9CVVRUT04gOiBUU19ET1dOX0JVVFRPTjsKQEAgLTMxNyw3ICszMTcsNyBAQCB2b2lkIFNj
cm9sbGJhclRoZW1lV2luOjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNj
cm9sbGJhciYgc2Nyb2xsYgogICAgICAgICBpZiAoc2Nyb2xsYmFyLmhvdmVyZWRQYXJ0KCkgPT0g
Tm9QYXJ0IHx8ICFydW5uaW5nVmlzdGEpCiAgICAgICAgICAgICB4cFN0YXRlICs9IFRTX05PUk1B
TDsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9u
KCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKKyAgICAgICAgICAgIGlmIChzY3JvbGxiYXIub3Jp
ZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCkKICAgICAgICAg
ICAgICAgICB4cFN0YXRlID0gc3RhcnQgPyBUU19MRUZUX0JVVFRPTl9IT1ZFUiA6IFRTX1JJR0hU
X0JVVFRPTl9IT1ZFUjsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB4cFN0YXRl
ID0gc3RhcnQgPyBUU19VUF9CVVRUT05fSE9WRVIgOiBUU19ET1dOX0JVVFRPTl9IT1ZFUjsKQEAg
LTM3NSw3ICszNzUsNyBAQCBzdGF0aWMgdm9pZCBwYWludEdyaXBwZXIoU2Nyb2xsYmFyJiBzY3Jv
bGxiYXIsIEhEQyBoZGMsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgICAgIHN0YXRlID0gVFNf
Tk9STUFMOwogCiAgICAgUkVDVCB0aGVtZVJlY3QocmVjdCk7Ci0gICAgRHJhd1RoZW1lQmFja2dy
b3VuZChzY3JvbGxiYXJUaGVtZSwgaGRjLCBzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jp
em9udGFsU2Nyb2xsYmFyID8gU1BfR1JJUFBFUkhPUiA6IFNQX0dSSVBQRVJWRVJULCBzdGF0ZSwg
JnRoZW1lUmVjdCwgMCk7CisgICAgRHJhd1RoZW1lQmFja2dyb3VuZChzY3JvbGxiYXJUaGVtZSwg
aGRjLCBzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9y
aXpvbnRhbCA/IFNQX0dSSVBQRVJIT1IgOiBTUF9HUklQUEVSVkVSVCwgc3RhdGUsICZ0aGVtZVJl
Y3QsIDApOwogfQogCiB2b2lkIFNjcm9sbGJhclRoZW1lV2luOjpwYWludFRodW1iKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJl
Y3QpCkBAIC0zOTQsMTEgKzM5NCwxMSBAQCB2b2lkIFNjcm9sbGJhclRoZW1lV2luOjpwYWludFRo
dW1iKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxiYQogCiAgICAg
Ym9vbCBhbHBoYUJsZW5kID0gZmFsc2U7CiAgICAgaWYgKHNjcm9sbGJhclRoZW1lKQotICAgICAg
ICBhbHBoYUJsZW5kID0gSXNUaGVtZUJhY2tncm91bmRQYXJ0aWFsbHlUcmFuc3BhcmVudChzY3Jv
bGxiYXJUaGVtZSwgc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJh
ciA/IFNQX1RIVU1CSE9SIDogU1BfVEhVTUJWRVJULCBzdGF0ZSk7CisgICAgICAgIGFscGhhQmxl
bmQgPSBJc1RoZW1lQmFja2dyb3VuZFBhcnRpYWxseVRyYW5zcGFyZW50KHNjcm9sbGJhclRoZW1l
LCBzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpv
bnRhbCA/IFNQX1RIVU1CSE9SIDogU1BfVEhVTUJWRVJULCBzdGF0ZSk7CiAgICAgTG9jYWxXaW5k
b3dzQ29udGV4dCB3aW5kb3dzQ29udGV4dChjb250ZXh0LCByZWN0LCBhbHBoYUJsZW5kKTsKICAg
ICBSRUNUIHRoZW1lUmVjdChyZWN0KTsKICAgICBpZiAoc2Nyb2xsYmFyVGhlbWUpIHsKLSAgICAg
ICAgRHJhd1RoZW1lQmFja2dyb3VuZChzY3JvbGxiYXJUaGVtZSwgd2luZG93c0NvbnRleHQuaGRj
KCksIHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBTUF9U
SFVNQkhPUiA6IFNQX1RIVU1CVkVSVCwgc3RhdGUsICZ0aGVtZVJlY3QsIDApOworICAgICAgICBE
cmF3VGhlbWVCYWNrZ3JvdW5kKHNjcm9sbGJhclRoZW1lLCB3aW5kb3dzQ29udGV4dC5oZGMoKSwg
c2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250
YWwgPyBTUF9USFVNQkhPUiA6IFNQX1RIVU1CVkVSVCwgc3RhdGUsICZ0aGVtZVJlY3QsIDApOwog
ICAgICAgICBwYWludEdyaXBwZXIoc2Nyb2xsYmFyLCB3aW5kb3dzQ29udGV4dC5oZGMoKSwgZ3Jp
cHBlclJlY3Qoc2Nyb2xsYmFyVGhpY2tuZXNzKCksIHJlY3QpKTsKICAgICB9IGVsc2UKICAgICAg
ICAgOjpEcmF3RWRnZSh3aW5kb3dzQ29udGV4dC5oZGMoKSwgJnRoZW1lUmVjdCwgRURHRV9SQUlT
RUQsIEJGX1JFQ1QgfCBCRl9NSURETEUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcAppbmRleCBiMDU3Mzg0M2FjYTY1NTVlNTU5NGJjMjViNzE3Mzc3NzZjODIzMWU0Li44NzZj
ZTViNGM4MDFlODA5YmVjNGExYjM4N2NlZWRhY2NmMGFkZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMTA3MCw5ICsxMDcwLDkgQEAgYm9vbCBSZW5kZXJCb3g6
Omhhc0F1dG9TY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24pIGNvbnN0
CiAgICAgfTsKIAogICAgIHN3aXRjaCAob3JpZW50YXRpb24pIHsKLSAgICBjYXNlIFNjcm9sbGJh
ck9yaWVudGF0aW9uOjpIb3Jpem9udGFsU2Nyb2xsYmFyOgorICAgIGNhc2UgU2Nyb2xsYmFyT3Jp
ZW50YXRpb246Okhvcml6b250YWw6CiAgICAgICAgIHJldHVybiBpc0F1dG9PclNjcm9sbFdpdGhP
dmVybGF5U2Nyb2xsYmFyKHN0eWxlKCkub3ZlcmZsb3dYKCkpOwotICAgIGNhc2UgU2Nyb2xsYmFy
T3JpZW50YXRpb246OlZlcnRpY2FsU2Nyb2xsYmFyOgorICAgIGNhc2UgU2Nyb2xsYmFyT3JpZW50
YXRpb246OlZlcnRpY2FsOgogICAgICAgICByZXR1cm4gaXNBdXRvT3JTY3JvbGxXaXRoT3Zlcmxh
eVNjcm9sbGJhcihzdHlsZSgpLm92ZXJmbG93WSgpKTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMTA4OCw5ICsxMDg4LDkgQEAgYm9vbCBSZW5kZXJCb3g6Omhhc0Fsd2F5c1ByZXNlbnRT
Y3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24pIGNvbnMKICAgICB9Owog
CiAgICAgc3dpdGNoIChvcmllbnRhdGlvbikgewotICAgIGNhc2UgU2Nyb2xsYmFyT3JpZW50YXRp
b246Okhvcml6b250YWxTY3JvbGxiYXI6CisgICAgY2FzZSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6
SG9yaXpvbnRhbDoKICAgICAgICAgcmV0dXJuIGlzQWx3YXlzVmlzaWJsZVNjcm9sbGJhcihzdHls
ZSgpLm92ZXJmbG93WCgpKTsKLSAgICBjYXNlIFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNh
bFNjcm9sbGJhcjoKKyAgICBjYXNlIFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbDoKICAg
ICAgICAgcmV0dXJuIGlzQWx3YXlzVmlzaWJsZVNjcm9sbGJhcihzdHlsZSgpLm92ZXJmbG93WSgp
KTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCBiZDlmMjJhNTE0NWNlOWE1NGMwMjY2ZmI1
ODNjYWZhMDVhZTFlMTk5Li41NTgzMjEwYjU1MTQwNjg2YTJlYzRhNzExMmVhM2U1NmMxMGJiMjBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cApAQCAtMjEzOCw5ICsyMTM4LDkgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZU92
ZXJmbG93Q29udHJvbHNMYXllcnMoYm9vbCBuZWVkc0hvcml6b250YWxTY3JvbGwKICAgICBpZiAo
YXV0byogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBtX293bmluZ0xheWVyLnBhZ2UoKS5zY3JvbGxp
bmdDb29yZGluYXRvcigpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzY3JvbGxhYmxlQXJlYSA9IG1f
b3duaW5nTGF5ZXIuc2Nyb2xsYWJsZUFyZWEoKSkgewogICAgICAgICAgICAgaWYgKGhvcml6b250
YWxTY3JvbGxiYXJMYXllckNoYW5nZWQpCi0gICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRp
bmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoKnNjcm9sbGFibGVB
cmVhLCBIb3Jpem9udGFsU2Nyb2xsYmFyKTsKKyAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29y
ZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZSgqc2Nyb2xsYWJs
ZUFyZWEsIFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKTsKICAgICAgICAgICAgIGlm
ICh2ZXJ0aWNhbFNjcm9sbGJhckxheWVyQ2hhbmdlZCkKLSAgICAgICAgICAgICAgICBzY3JvbGxp
bmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZSgqc2Ny
b2xsYWJsZUFyZWEsIFZlcnRpY2FsU2Nyb2xsYmFyKTsKKyAgICAgICAgICAgICAgICBzY3JvbGxp
bmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZSgqc2Ny
b2xsYWJsZUFyZWEsIFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbCk7CiAgICAgICAgIH0K
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAKaW5kZXggMDE4Y2I2MGQxYmQ1OGU3MGM5YWU0NTk5NDZiMWU2MDdlMTM1OGRi
YS4uMmU3MGJiZTdmOTZiOTMxOTQ0ODFjZWE5NGNlNTQ0MWYzMDNiZDBlZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTQw
MjcsMTMgKzQwMjcsMTMgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZU92ZXJm
bG93Q29udHJvbHNMYXllcnMoKQogICAgICAgICAgICAgbV9vdmVyZmxvd0NvbnRyb2xzSG9zdExh
eWVyLT5hZGRDaGlsZCgqbV9sYXllckZvckhvcml6b250YWxTY3JvbGxiYXIpOwogCiAgICAgICAg
ICAgICBpZiAoYXV0byogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29y
ZGluYXRvcigpKQotICAgICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxh
YmxlQXJlYVNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSwg
SG9yaXpvbnRhbFNjcm9sbGJhcik7CisgICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0
b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UobV9yZW5kZXJWaWV3LmZy
YW1lVmlldygpLCBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCk7CiAgICAgICAgIH0K
ICAgICB9IGVsc2UgaWYgKG1fbGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CiAgICAgICAg
IEdyYXBoaWNzTGF5ZXI6OnVucGFyZW50QW5kQ2xlYXIobV9sYXllckZvckhvcml6b250YWxTY3Jv
bGxiYXIpOwogCiAgICAgICAgIGlmIChhdXRvKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMt
PnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRv
ci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZShtX3JlbmRlclZpZXcuZnJh
bWVWaWV3KCksIEhvcml6b250YWxTY3JvbGxiYXIpOworICAgICAgICAgICAgc2Nyb2xsaW5nQ29v
cmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UobV9yZW5kZXJW
aWV3LmZyYW1lVmlldygpLCBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCk7CiAgICAg
fQogCiAgICAgaWYgKHJlcXVpcmVzVmVydGljYWxTY3JvbGxiYXJMYXllcigpKSB7CkBAIC00MDQ4
LDEzICs0MDQ4LDEzIEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVPdmVyZmxv
d0NvbnRyb2xzTGF5ZXJzKCkKICAgICAgICAgICAgIG1fb3ZlcmZsb3dDb250cm9sc0hvc3RMYXll
ci0+YWRkQ2hpbGQoKm1fbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcik7CiAKICAgICAgICAgICAg
IGlmIChhdXRvKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5h
dG9yKCkpCi0gICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVB
cmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLCBWZXJ0
aWNhbFNjcm9sbGJhcik7CisgICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNj
cm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UobV9yZW5kZXJWaWV3LmZyYW1lVmll
dygpLCBTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwpOwogICAgICAgICB9CiAgICAgfSBl
bHNlIGlmIChtX2xheWVyRm9yVmVydGljYWxTY3JvbGxiYXIpIHsKICAgICAgICAgR3JhcGhpY3NM
YXllcjo6dW5wYXJlbnRBbmRDbGVhcihtX2xheWVyRm9yVmVydGljYWxTY3JvbGxiYXIpOwogCiAg
ICAgICAgIGlmIChhdXRvKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nv
b3JkaW5hdG9yKCkpCi0gICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsYWJs
ZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZShtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCksIFZl
cnRpY2FsU2Nyb2xsYmFyKTsKKyAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3Jv
bGxhYmxlQXJlYVNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKG1fcmVuZGVyVmlldy5mcmFtZVZpZXco
KSwgU2Nyb2xsYmFyT3JpZW50YXRpb246OlZlcnRpY2FsKTsKICAgICB9CiAKICAgICBpZiAocmVx
dWlyZXNTY3JvbGxDb3JuZXJMYXllcigpKSB7CkBAIC00MTc1LDcgKzQxNzUsNyBAQCB2b2lkIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6ZGVzdHJveVJvb3RMYXllcigpCiAgICAgaWYgKG1fbGF5ZXJG
b3JIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CiAgICAgICAgIEdyYXBoaWNzTGF5ZXI6OnVucGFyZW50
QW5kQ2xlYXIobV9sYXllckZvckhvcml6b250YWxTY3JvbGxiYXIpOwogICAgICAgICBpZiAoYXV0
byogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQot
ICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFy
TGF5ZXJEaWRDaGFuZ2UobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLCBIb3Jpem9udGFsU2Nyb2xs
YmFyKTsKKyAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNj
cm9sbGJhckxheWVyRGlkQ2hhbmdlKG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSwgU2Nyb2xsYmFy
T3JpZW50YXRpb246Okhvcml6b250YWwpOwogICAgICAgICBpZiAoYXV0byogaG9yaXpvbnRhbFNj
cm9sbGJhciA9IG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS52ZXJ0aWNhbFNjcm9sbGJhcigpKQog
ICAgICAgICAgICAgbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLmludmFsaWRhdGVTY3JvbGxiYXIo
Kmhvcml6b250YWxTY3JvbGxiYXIsIEludFJlY3QoSW50UG9pbnQoMCwgMCksIGhvcml6b250YWxT
Y3JvbGxiYXItPmZyYW1lUmVjdCgpLnNpemUoKSkpOwogICAgIH0KQEAgLTQxODMsNyArNDE4Myw3
IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpkZXN0cm95Um9vdExheWVyKCkKICAgICBp
ZiAobV9sYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyKSB7CiAgICAgICAgIEdyYXBoaWNzTGF5ZXI6
OnVucGFyZW50QW5kQ2xlYXIobV9sYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyKTsKICAgICAgICAg
aWYgKGF1dG8qIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0
b3IoKSkKLSAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNj
cm9sbGJhckxheWVyRGlkQ2hhbmdlKG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSwgVmVydGljYWxT
Y3JvbGxiYXIpOworICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVB
cmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLCBTY3Jv
bGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwpOwogICAgICAgICBpZiAoYXV0byogdmVydGljYWxT
Y3JvbGxiYXIgPSBtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkudmVydGljYWxTY3JvbGxiYXIoKSkK
ICAgICAgICAgICAgIG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS5pbnZhbGlkYXRlU2Nyb2xsYmFy
KCp2ZXJ0aWNhbFNjcm9sbGJhciwgSW50UmVjdChJbnRQb2ludCgwLCAwKSwgdmVydGljYWxTY3Jv
bGxiYXItPmZyYW1lUmVjdCgpLnNpemUoKSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcAppbmRleCA3YTRk
YzJjNjJmNWUxZGFkMDcwOTAyNTY4ZDFhNmMyODg5MTVhNTc5Li41MmQxZWE1ZDMxZjBlNjhhZGIw
N2IwNDEwZmU3N2ZjOWRiMmYyN2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC05NSw4ICs5NSw4IEBAIHZv
aWQgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6Y2xlYXIoKQogICAgIGlmIChFbGVtZW50KiBl
bGVtZW50ID0gcmVuZGVyZXIuZWxlbWVudCgpKQogICAgICAgICBlbGVtZW50LT5zZXRTYXZlZExh
eWVyU2Nyb2xsUG9zaXRpb24obV9zY3JvbGxQb3NpdGlvbik7CiAKLSAgICBkZXN0cm95U2Nyb2xs
YmFyKEhvcml6b250YWxTY3JvbGxiYXIpOwotICAgIGRlc3Ryb3lTY3JvbGxiYXIoVmVydGljYWxT
Y3JvbGxiYXIpOworICAgIGRlc3Ryb3lTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb246Okhv
cml6b250YWwpOworICAgIGRlc3Ryb3lTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb246OlZl
cnRpY2FsKTsKIAogICAgIGlmIChhdXRvKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHJlbmRlcmVy
LnBhZ2UoKS5zY3JvbGxpbmdDb29yZGluYXRvcigpKQogICAgICAgICBzY3JvbGxpbmdDb29yZGlu
YXRvci0+d2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYSgqdGhpcyk7CkBAIC04MzksNyArODM5LDcg
QEAgUmVmPFNjcm9sbGJhcj4gUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6Y3JlYXRlU2Nyb2xs
YmFyKFNjcm9sbGJhck9yaWVudGF0aW9uIG8KIAogdm9pZCBSZW5kZXJMYXllclNjcm9sbGFibGVB
cmVhOjpkZXN0cm95U2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQog
ewotICAgIFJlZlB0cjxTY3JvbGxiYXI+JiBzY3JvbGxiYXIgPSBvcmllbnRhdGlvbiA9PSBIb3Jp
em9udGFsU2Nyb2xsYmFyID8gbV9oQmFyIDogbV92QmFyOworICAgIFJlZlB0cjxTY3JvbGxiYXI+
JiBzY3JvbGxiYXIgPSBvcmllbnRhdGlvbiA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpv
bnRhbCA/IG1faEJhciA6IG1fdkJhcjsKICAgICBpZiAoIXNjcm9sbGJhcikKICAgICAgICAgcmV0
dXJuOwogCkBAIC04NTYsMTQgKzg1NiwxNCBAQCB2b2lkIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFy
ZWE6OnNldEhhc0hvcml6b250YWxTY3JvbGxiYXIoYm9vbCBoYXNTY3JvbGxiYXIpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChoYXNTY3JvbGxiYXIpIHsKLSAgICAgICAgbV9oQmFyID0gY3Jl
YXRlU2Nyb2xsYmFyKEhvcml6b250YWxTY3JvbGxiYXIpOworICAgICAgICBtX2hCYXIgPSBjcmVh
dGVTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWwpOwogI2lmIEhBVkUo
UlVCQkVSX0JBTkRJTkcpCiAgICAgICAgIGF1dG8mIHJlbmRlcmVyID0gbV9sYXllci5yZW5kZXJl
cigpOwogICAgICAgICBTY3JvbGxFbGFzdGljaXR5IGVsYXN0aWNpdHkgPSBzY3JvbGxzT3ZlcmZs
b3coKSAmJiByZW5kZXJlci5zZXR0aW5ncygpLnJ1YmJlckJhbmRpbmdGb3JTdWJTY3JvbGxhYmxl
UmVnaW9uc0VuYWJsZWQoKSA/IFNjcm9sbEVsYXN0aWNpdHlBdXRvbWF0aWMgOiBTY3JvbGxFbGFz
dGljaXR5Tm9uZTsKICAgICAgICAgU2Nyb2xsYWJsZUFyZWE6OnNldEhvcml6b250YWxTY3JvbGxF
bGFzdGljaXR5KGVsYXN0aWNpdHkpOwogI2VuZGlmCiAgICAgfSBlbHNlIHsKLSAgICAgICAgZGVz
dHJveVNjcm9sbGJhcihIb3Jpem9udGFsU2Nyb2xsYmFyKTsKKyAgICAgICAgZGVzdHJveVNjcm9s
bGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCk7CiAjaWYgSEFWRShSVUJCRVJf
QkFORElORykKICAgICAgICAgU2Nyb2xsYWJsZUFyZWE6OnNldEhvcml6b250YWxTY3JvbGxFbGFz
dGljaXR5KFNjcm9sbEVsYXN0aWNpdHlOb25lKTsKICNlbmRpZgpAQCAtODgyLDE0ICs4ODIsMTQg
QEAgdm9pZCBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjpzZXRIYXNWZXJ0aWNhbFNjcm9sbGJh
cihib29sIGhhc1Njcm9sbGJhcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGhhc1Njcm9s
bGJhcikgewotICAgICAgICBtX3ZCYXIgPSBjcmVhdGVTY3JvbGxiYXIoVmVydGljYWxTY3JvbGxi
YXIpOworICAgICAgICBtX3ZCYXIgPSBjcmVhdGVTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRp
b246OlZlcnRpY2FsKTsKICNpZiBIQVZFKFJVQkJFUl9CQU5ESU5HKQogICAgICAgICBhdXRvJiBy
ZW5kZXJlciA9IG1fbGF5ZXIucmVuZGVyZXIoKTsKICAgICAgICAgU2Nyb2xsRWxhc3RpY2l0eSBl
bGFzdGljaXR5ID0gc2Nyb2xsc092ZXJmbG93KCkgJiYgcmVuZGVyZXIuc2V0dGluZ3MoKS5ydWJi
ZXJCYW5kaW5nRm9yU3ViU2Nyb2xsYWJsZVJlZ2lvbnNFbmFibGVkKCkgPyBTY3JvbGxFbGFzdGlj
aXR5QXV0b21hdGljIDogU2Nyb2xsRWxhc3RpY2l0eU5vbmU7CiAgICAgICAgIFNjcm9sbGFibGVB
cmVhOjpzZXRWZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoZWxhc3RpY2l0eSk7CiAjZW5kaWYKICAg
ICB9IGVsc2UgewotICAgICAgICBkZXN0cm95U2Nyb2xsYmFyKFZlcnRpY2FsU2Nyb2xsYmFyKTsK
KyAgICAgICAgZGVzdHJveVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwp
OwogI2lmIEhBVkUoUlVCQkVSX0JBTkRJTkcpCiAgICAgICAgIFNjcm9sbGFibGVBcmVhOjpzZXRW
ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoU2Nyb2xsRWxhc3RpY2l0eU5vbmUpOwogI2VuZGlmCkBA
IC0xMDgwLDcgKzEwODAsNyBAQCB2b2lkIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnVwZGF0
ZVNjcm9sbGJhclByZXNlbmNlQW5kU3RhdGUoc3RkOjpvcHRpb25hbDxibwogICAgIH07CiAKICAg
ICBhdXRvIHNjcm9sbGJhckZvckF4aXMgPSBbJl0oU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50
YXRpb24pIC0+IFJlZlB0cjxTY3JvbGxiYXI+JiB7Ci0gICAgICAgIHJldHVybiBvcmllbnRhdGlv
biA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbFNjcm9sbGJhciA/IG1faEJhciA6
IG1fdkJhcjsKKyAgICAgICAgcmV0dXJuIG9yaWVudGF0aW9uID09IFNjcm9sbGJhck9yaWVudGF0
aW9uOjpIb3Jpem9udGFsID8gbV9oQmFyIDogbV92QmFyOwogICAgIH07CiAKICAgICBhdXRvIHN0
YXRlRm9yU2Nyb2xsYmFyID0gWyZdKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBz
dGQ6Om9wdGlvbmFsPGJvb2w+IGhhc092ZXJmbG93LCBTY3JvbGxiYXJTdGF0ZSBub25TY3JvbGxh
YmxlU3RhdGUpIHsKQEAgLTExMDIsMTIgKzExMDIsMTIgQEAgdm9pZCBSZW5kZXJMYXllclNjcm9s
bGFibGVBcmVhOjp1cGRhdGVTY3JvbGxiYXJQcmVzZW5jZUFuZFN0YXRlKHN0ZDo6b3B0aW9uYWw8
Ym8KICAgICAgICAgcmV0dXJuIFNjcm9sbGJhclN0YXRlOjpOb1Njcm9sbGJhcjsKICAgICB9Owog
Ci0gICAgYXV0byBob3Jpem9udGFsQmFyU3RhdGUgPSBzdGF0ZUZvclNjcm9sbGJhck9uQXhpcyhT
Y3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbFNjcm9sbGJhciwgaGFzSG9yaXpvbnRhbE92
ZXJmbG93KTsKKyAgICBhdXRvIGhvcml6b250YWxCYXJTdGF0ZSA9IHN0YXRlRm9yU2Nyb2xsYmFy
T25BeGlzKFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsLCBoYXNIb3Jpem9udGFsT3Zl
cmZsb3cpOwogICAgIHNldEhhc0hvcml6b250YWxTY3JvbGxiYXIoaG9yaXpvbnRhbEJhclN0YXRl
ICE9IFNjcm9sbGJhclN0YXRlOjpOb1Njcm9sbGJhcik7CiAgICAgaWYgKGhvcml6b250YWxCYXJT
dGF0ZSAhPSBTY3JvbGxiYXJTdGF0ZTo6Tm9TY3JvbGxiYXIpCiAgICAgICAgIG1faEJhci0+c2V0
RW5hYmxlZChob3Jpem9udGFsQmFyU3RhdGUgPT0gU2Nyb2xsYmFyU3RhdGU6OkVuYWJsZWQpOwog
Ci0gICAgYXV0byB2ZXJ0aWNhbEJhclN0YXRlID0gc3RhdGVGb3JTY3JvbGxiYXJPbkF4aXMoU2Ny
b2xsYmFyT3JpZW50YXRpb246OlZlcnRpY2FsU2Nyb2xsYmFyLCBoYXNWZXJ0aWNhbE92ZXJmbG93
KTsKKyAgICBhdXRvIHZlcnRpY2FsQmFyU3RhdGUgPSBzdGF0ZUZvclNjcm9sbGJhck9uQXhpcyhT
Y3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwsIGhhc1ZlcnRpY2FsT3ZlcmZsb3cpOwogICAg
IHNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKHZlcnRpY2FsQmFyU3RhdGUgIT0gU2Nyb2xsYmFyU3Rh
dGU6Ok5vU2Nyb2xsYmFyKTsKICAgICBpZiAodmVydGljYWxCYXJTdGF0ZSAhPSBTY3JvbGxiYXJT
dGF0ZTo6Tm9TY3JvbGxiYXIpCiAgICAgICAgIG1fdkJhci0+c2V0RW5hYmxlZCh2ZXJ0aWNhbEJh
clN0YXRlID09IFNjcm9sbGJhclN0YXRlOjpFbmFibGVkKTsKQEAgLTExNTAsOCArMTE1MCw4IEBA
IHZvaWQgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dXBkYXRlU2Nyb2xsYmFyc0FmdGVyTGF5
b3V0KCkKICAgICB1cGRhdGVTY3JvbGxiYXJQcmVzZW5jZUFuZFN0YXRlKGhhc0hvcml6b250YWxP
dmVyZmxvdygpLCBoYXNWZXJ0aWNhbE92ZXJmbG93KCkpOwogCiAgICAgLy8gU2Nyb2xsYmFycyB3
aXRoIGF1dG8gYmVoYXZpb3IgbWF5IG5lZWQgdG8gbGF5IG91dCBhZ2FpbiBpZiBzY3JvbGxiYXJz
IGdvdCBhZGRlZCBvciByZW1vdmVkLgotICAgIGJvb2wgYXV0b0hvcml6b250YWxTY3JvbGxCYXJD
aGFuZ2VkID0gYm94LT5oYXNBdXRvU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jp
em9udGFsU2Nyb2xsYmFyKSAmJiAoaGFkSG9yaXpvbnRhbFNjcm9sbGJhciAhPSBoYXNIb3Jpem9u
dGFsU2Nyb2xsYmFyKCkpOwotICAgIGJvb2wgYXV0b1ZlcnRpY2FsU2Nyb2xsQmFyQ2hhbmdlZCA9
IGJveC0+aGFzQXV0b1Njcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWxTY3Jv
bGxiYXIpICYmIChoYWRWZXJ0aWNhbFNjcm9sbGJhciAhPSBoYXNWZXJ0aWNhbFNjcm9sbGJhcigp
KTsKKyAgICBib29sIGF1dG9Ib3Jpem9udGFsU2Nyb2xsQmFyQ2hhbmdlZCA9IGJveC0+aGFzQXV0
b1Njcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCkgJiYgKGhhZEhvcml6
b250YWxTY3JvbGxiYXIgIT0gaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpKTsKKyAgICBib29sIGF1
dG9WZXJ0aWNhbFNjcm9sbEJhckNoYW5nZWQgPSBib3gtPmhhc0F1dG9TY3JvbGxiYXIoU2Nyb2xs
YmFyT3JpZW50YXRpb246OlZlcnRpY2FsKSAmJiAoaGFkVmVydGljYWxTY3JvbGxiYXIgIT0gaGFz
VmVydGljYWxTY3JvbGxiYXIoKSk7CiAKICAgICBpZiAoYXV0b0hvcml6b250YWxTY3JvbGxCYXJD
aGFuZ2VkIHx8IGF1dG9WZXJ0aWNhbFNjcm9sbEJhckNoYW5nZWQpIHsKICAgICAgICAgaWYgKGF1
dG9WZXJ0aWNhbFNjcm9sbEJhckNoYW5nZWQgJiYgc2hvdWxkUGxhY2VWZXJ0aWNhbFNjcm9sbGJh
ck9uTGVmdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCmlu
ZGV4IDYzODZmYmEyZjQ5OGI1ZDZiODAyMmRiMTg0MmI0OTVmMGU1OGEwYmMuLmE2NmNiZmU5MDlh
MWFiNjBmZGJmZjBlZTU0NGE5ZmU1YzFkYWU0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIFJlbmRlckxpc3RC
b3g6OmxheW91dCgpCiAgICAgICAgIG1fdkJhci0+c2V0U3RlcHMoMSwgc3RkOjptYXgoMSwgbnVt
VmlzaWJsZUl0ZW1zKCkgLSAxKSwgaXRlbUhlaWdodCgpKTsKICAgICAgICAgbV92QmFyLT5zZXRQ
cm9wb3J0aW9uKG51bVZpc2libGVJdGVtcygpLCBudW1JdGVtcygpKTsKICAgICAgICAgaWYgKCFl
bmFibGVkKSB7Ci0gICAgICAgICAgICBzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oVmVy
dGljYWxTY3JvbGxiYXIsIDApOworICAgICAgICAgICAgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5p
bWF0aW9uKFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbCwgMCk7CiAgICAgICAgICAgICBt
X2luZGV4T2Zmc2V0ID0gMDsKICAgICAgICAgfQogICAgIH0KQEAgLTYwMCw3ICs2MDAsNyBAQCBi
b29sIFJlbmRlckxpc3RCb3g6OnNjcm9sbFRvUmV2ZWFsRWxlbWVudEF0TGlzdEluZGV4KGludCBp
bmRleCkKICAgICBlbHNlCiAgICAgICAgIG5ld09mZnNldCA9IGluZGV4IC0gbnVtVmlzaWJsZUl0
ZW1zKCkgKyAxOwogCi0gICAgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKFZlcnRpY2Fs
U2Nyb2xsYmFyLCBuZXdPZmZzZXQpOworICAgIHNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlv
bihTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwsIG5ld09mZnNldCk7CiAKICAgICByZXR1
cm4gdHJ1ZTsKIH0KQEAgLTc1NSw3ICs3NTUsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnNldFNj
cm9sbFRvcChpbnQgbmV3VG9wLCBjb25zdCBTY3JvbGxQb3NpdGlvbkNoYW5nZU9wdGlvbnMmKQog
ICAgICAgICByZXR1cm47CiAKICAgICBzZXR1cFdoZWVsRXZlbnRUZXN0TW9uaXRvcigqdGhpcyk7
Ci0gICAgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKFZlcnRpY2FsU2Nyb2xsYmFyLCBp
bmRleCk7CisgICAgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKFNjcm9sbGJhck9yaWVu
dGF0aW9uOjpWZXJ0aWNhbCwgaW5kZXgpOwogfQogCiBib29sIFJlbmRlckxpc3RCb3g6Om5vZGVB
dFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1
bHQsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5
b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24p
CkBAIC05MTMsMTAgKzkxMywxMCBAQCBSZWY8U2Nyb2xsYmFyPiBSZW5kZXJMaXN0Qm94OjpjcmVh
dGVTY3JvbGxiYXIoKQogICAgIFJlZlB0cjxTY3JvbGxiYXI+IHdpZGdldDsKICAgICBib29sIGhh
c0N1c3RvbVNjcm9sbGJhclN0eWxlID0gc3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6
U2Nyb2xsYmFyKTsKICAgICBpZiAoaGFzQ3VzdG9tU2Nyb2xsYmFyU3R5bGUpCi0gICAgICAgIHdp
ZGdldCA9IFJlbmRlclNjcm9sbGJhcjo6Y3JlYXRlQ3VzdG9tU2Nyb2xsYmFyKCp0aGlzLCBWZXJ0
aWNhbFNjcm9sbGJhciwgJnNlbGVjdEVsZW1lbnQoKSk7CisgICAgICAgIHdpZGdldCA9IFJlbmRl
clNjcm9sbGJhcjo6Y3JlYXRlQ3VzdG9tU2Nyb2xsYmFyKCp0aGlzLCBTY3JvbGxiYXJPcmllbnRh
dGlvbjo6VmVydGljYWwsICZzZWxlY3RFbGVtZW50KCkpOwogICAgIGVsc2UgewotICAgICAgICB3
aWRnZXQgPSBTY3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcigqdGhpcywgVmVydGljYWxT
Y3JvbGxiYXIsIHRoZW1lKCkuc2Nyb2xsYmFyQ29udHJvbFNpemVGb3JQYXJ0KExpc3Rib3hQYXJ0
KSk7Ci0gICAgICAgIGRpZEFkZFNjcm9sbGJhcih3aWRnZXQuZ2V0KCksIFZlcnRpY2FsU2Nyb2xs
YmFyKTsKKyAgICAgICAgd2lkZ2V0ID0gU2Nyb2xsYmFyOjpjcmVhdGVOYXRpdmVTY3JvbGxiYXIo
KnRoaXMsIFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbCwgdGhlbWUoKS5zY3JvbGxiYXJD
b250cm9sU2l6ZUZvclBhcnQoTGlzdGJveFBhcnQpKTsKKyAgICAgICAgZGlkQWRkU2Nyb2xsYmFy
KHdpZGdldC5nZXQoKSwgU2Nyb2xsYmFyT3JpZW50YXRpb246OlZlcnRpY2FsKTsKICAgICAgICAg
aWYgKHBhZ2UoKS5pc01vbml0b3JpbmdXaGVlbEV2ZW50cygpKQogICAgICAgICAgICAgc2Nyb2xs
QW5pbWF0b3IoKS5zZXRXaGVlbEV2ZW50VGVzdE1vbml0b3IocGFnZSgpLndoZWVsRXZlbnRUZXN0
TW9uaXRvcigpKTsKICAgICB9CkBAIC05MzAsNyArOTMwLDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94
OjpkZXN0cm95U2Nyb2xsYmFyKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3ZCYXIt
PmlzQ3VzdG9tU2Nyb2xsYmFyKCkpCi0gICAgICAgIFNjcm9sbGFibGVBcmVhOjp3aWxsUmVtb3Zl
U2Nyb2xsYmFyKG1fdkJhci5nZXQoKSwgVmVydGljYWxTY3JvbGxiYXIpOworICAgICAgICBTY3Jv
bGxhYmxlQXJlYTo6d2lsbFJlbW92ZVNjcm9sbGJhcihtX3ZCYXIuZ2V0KCksIFNjcm9sbGJhck9y
aWVudGF0aW9uOjpWZXJ0aWNhbCk7CiAgICAgbV92QmFyLT5yZW1vdmVGcm9tUGFyZW50KCk7CiAg
ICAgbV92QmFyID0gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNjcm9sbGJhci5jcHAKaW5kZXggYWIxN2FlODE3NzFkODdhOGZhMThmYzQyN2Q0YzcwY2FkYzBk
NzQ2Ni4uNjFjZTI1MDc2ZjY3YzM5NzRlYWJjYmUyZWMwY2U1MzA4OGJiNjlkYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAKQEAgLTU4LDcgKzU4LDcg
QEAgUmVuZGVyU2Nyb2xsYmFyOjpSZW5kZXJTY3JvbGxiYXIoU2Nyb2xsYWJsZUFyZWEmIHNjcm9s
bGFibGVBcmVhLCBTY3JvbGxiYXJPcmllbnQKICAgICAgICAgcGFydC0+bGF5b3V0KCk7CiAgICAg
ICAgIHdpZHRoID0gcGFydC0+d2lkdGgoKTsKICAgICAgICAgaGVpZ2h0ID0gcGFydC0+aGVpZ2h0
KCk7Ci0gICAgfSBlbHNlIGlmICh0aGlzLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3Jv
bGxiYXIpCisgICAgfSBlbHNlIGlmICh0aGlzLT5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9y
aWVudGF0aW9uOjpIb3Jpem9udGFsKQogICAgICAgICB3aWR0aCA9IHRoaXMtPndpZHRoKCk7CiAg
ICAgZWxzZQogICAgICAgICBoZWlnaHQgPSB0aGlzLT5oZWlnaHQoKTsKQEAgLTE3NCw3ICsxNzQs
NyBAQCB2b2lkIFJlbmRlclNjcm9sbGJhcjo6dXBkYXRlU2Nyb2xsYmFyUGFydHMoKQogICAgIHVw
ZGF0ZVNjcm9sbGJhclBhcnQoVHJhY2tCR1BhcnQpOwogICAgIAogICAgIC8vIFNlZSBpZiB0aGUg
c2Nyb2xsYmFyJ3MgdGhpY2tuZXNzIGNoYW5nZWQuICBJZiBzbywgd2UgbmVlZCB0byBtYXJrIG91
ciBvd25pbmcgb2JqZWN0IGFzIG5lZWRpbmcgYSBsYXlvdXQuCi0gICAgYm9vbCBpc0hvcml6b250
YWwgPSBvcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXI7ICAgIAorICAgIGJvb2wg
aXNIb3Jpem9udGFsID0gb3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9y
aXpvbnRhbDsKICAgICBpbnQgb2xkVGhpY2tuZXNzID0gaXNIb3Jpem9udGFsID8gaGVpZ2h0KCkg
OiB3aWR0aCgpOwogICAgIGludCBuZXdUaGlja25lc3MgPSAwOwogICAgIFJlbmRlclNjcm9sbGJh
clBhcnQqIHBhcnQgPSBtX3BhcnRzLmdldChTY3JvbGxiYXJCR1BhcnQpOwpAQCAtMjc1LDcgKzI3
NSw3IEBAIEludFJlY3QgUmVuZGVyU2Nyb2xsYmFyOjpidXR0b25SZWN0KFNjcm9sbGJhclBhcnQg
cGFydFR5cGUpIGNvbnN0CiAgICAgICAgIAogICAgIHBhcnRSZW5kZXJlci0+bGF5b3V0KCk7CiAg
ICAgCi0gICAgYm9vbCBpc0hvcml6b250YWwgPSBvcmllbnRhdGlvbigpID09IEhvcml6b250YWxT
Y3JvbGxiYXI7CisgICAgYm9vbCBpc0hvcml6b250YWwgPSBvcmllbnRhdGlvbigpID09IFNjcm9s
bGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsOwogICAgIEludFNpemUgcGl4ZWxTbmFwcGVkSW50
U2l6ZSA9IHNuYXBwZWRJbnRSZWN0KHBhcnRSZW5kZXJlci0+ZnJhbWVSZWN0KCkpLnNpemUoKTsK
ICAgICBpZiAocGFydFR5cGUgPT0gQmFja0J1dHRvblN0YXJ0UGFydCkKICAgICAgICAgcmV0dXJu
IEludFJlY3QobG9jYXRpb24oKSwgSW50U2l6ZShpc0hvcml6b250YWwgPyBwaXhlbFNuYXBwZWRJ
bnRTaXplLndpZHRoKCkgOiB3aWR0aCgpLCBpc0hvcml6b250YWwgPyBoZWlnaHQoKSA6IHBpeGVs
U25hcHBlZEludFNpemUuaGVpZ2h0KCkpKTsKQEAgLTMwNSw3ICszMDUsNyBAQCBJbnRSZWN0IFJl
bmRlclNjcm9sbGJhcjo6dHJhY2tSZWN0KGludCBzdGFydExlbmd0aCwgaW50IGVuZExlbmd0aCkg
Y29uc3QKICAgICBpZiAocGFydCkKICAgICAgICAgcGFydC0+bGF5b3V0KCk7CiAKLSAgICBpZiAo
b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CisgICAgaWYgKG9yaWVudGF0
aW9uKCkgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWwpIHsKICAgICAgICAgaW50
IG1hcmdpbkxlZnQgPSBwYXJ0ID8gc3RhdGljX2Nhc3Q8aW50PihwYXJ0LT5tYXJnaW5MZWZ0KCkp
IDogMDsKICAgICAgICAgaW50IG1hcmdpblJpZ2h0ID0gcGFydCA/IHN0YXRpY19jYXN0PGludD4o
cGFydC0+bWFyZ2luUmlnaHQoKSkgOiAwOwogICAgICAgICBzdGFydExlbmd0aCArPSBtYXJnaW5M
ZWZ0OwpAQCAtMzMyLDcgKzMzMiw3IEBAIEludFJlY3QgUmVuZGVyU2Nyb2xsYmFyOjp0cmFja1Bp
ZWNlUmVjdFdpdGhNYXJnaW5zKFNjcm9sbGJhclBhcnQgcGFydFR5cGUsIGNvbnN0CiAgICAgcGFy
dFJlbmRlcmVyLT5sYXlvdXQoKTsKICAgICAKICAgICBJbnRSZWN0IHJlY3QgPSBvbGRSZWN0Owot
ICAgIGlmIChvcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpIHsKKyAgICBpZiAo
b3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCkgewogICAg
ICAgICByZWN0LnNldFgocmVjdC54KCkgKyBwYXJ0UmVuZGVyZXItPm1hcmdpbkxlZnQoKSk7CiAg
ICAgICAgIHJlY3Quc2V0V2lkdGgocmVjdC53aWR0aCgpIC0gcGFydFJlbmRlcmVyLT5ob3Jpem9u
dGFsTWFyZ2luRXh0ZW50KCkpOwogICAgIH0gZWxzZSB7CkBAIC0zNDgsNyArMzQ4LDcgQEAgaW50
IFJlbmRlclNjcm9sbGJhcjo6bWluaW11bVRodW1iTGVuZ3RoKCkgY29uc3QKICAgICBpZiAoIXBh
cnRSZW5kZXJlcikKICAgICAgICAgcmV0dXJuIDA7ICAgIAogICAgIHBhcnRSZW5kZXJlci0+bGF5
b3V0KCk7Ci0gICAgcmV0dXJuIG9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/
IHBhcnRSZW5kZXJlci0+d2lkdGgoKSA6IHBhcnRSZW5kZXJlci0+aGVpZ2h0KCk7CisgICAgcmV0
dXJuIG9yaWVudGF0aW9uKCkgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWwgPyBw
YXJ0UmVuZGVyZXItPndpZHRoKCkgOiBwYXJ0UmVuZGVyZXItPmhlaWdodCgpOwogfQogCiBmbG9h
dCBSZW5kZXJTY3JvbGxiYXI6Om9wYWNpdHkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCmluZGV4IDM5MmQ3ZWUzNDc3ZWYyMWU5
NjM0Yzg4ODViNjcxNGZkNjI4NWYwYzQuLmZlMzk0YTdhYzMxZjljZDk1NTEzZDQ1OGFmMGZmYmRk
MmY0OGM3MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3Jv
bGxiYXJQYXJ0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xs
YmFyUGFydC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0Ojps
YXlvdXQoKQogewogICAgIFN0YWNrU3RhdHM6OkxheW91dENoZWNrUG9pbnQgbGF5b3V0Q2hlY2tQ
b2ludDsKICAgICBzZXRMb2NhdGlvbihMYXlvdXRQb2ludCgpKTsgLy8gV2UgZG9uJ3Qgd29ycnkg
YWJvdXQgcG9zaXRpb25pbmcgb3Vyc2VsdmVzLiBXZSdyZSBqdXN0IGRldGVybWluaW5nIG91ciBt
aW5pbXVtIHdpZHRoL2hlaWdodC4KLSAgICBpZiAobV9zY3JvbGxiYXItPm9yaWVudGF0aW9uKCkg
PT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKKyAgICBpZiAobV9zY3JvbGxiYXItPm9yaWVudGF0aW9u
KCkgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWwpCiAgICAgICAgIGxheW91dEhv
cml6b250YWxQYXJ0KCk7CiAgICAgZWxzZQogICAgICAgICBsYXlvdXRWZXJ0aWNhbFBhcnQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVt
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3Bw
CmluZGV4IDhlZjc5MmJlNTNjZjExYzc1NjM1ZDhjOTJjNTQ5ZTMzMzg0YTBjY2IuLjIxYjg5M2Uz
YjFjMmFmOTU5YjRiMjgyOGRiMmFhZDZjZmExMTI5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcApAQCAtNDMsNyArNDMsNyBAQCB2
b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpidXR0b25TaXplc0Fsb25nVHJhY2tBeGlzKFNjcm9s
bGJhciYgc2Nyb2xsYmFyLCBpbnQmCiAgICAgSW50UmVjdCBzZWNvbmRCdXR0b24gPSBmb3J3YXJk
QnV0dG9uUmVjdChzY3JvbGxiYXIsIEZvcndhcmRCdXR0b25TdGFydFBhcnQpOwogICAgIEludFJl
Y3QgdGhpcmRCdXR0b24gPSBiYWNrQnV0dG9uUmVjdChzY3JvbGxiYXIsIEJhY2tCdXR0b25FbmRQ
YXJ0KTsKICAgICBJbnRSZWN0IGZvdXJ0aEJ1dHRvbiA9IGZvcndhcmRCdXR0b25SZWN0KHNjcm9s
bGJhciwgRm9yd2FyZEJ1dHRvbkVuZFBhcnQpOwotICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRp
b24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CisgICAgaWYgKHNjcm9sbGJhci5vcmllbnRh
dGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKSB7CiAgICAgICAgIGJl
Zm9yZVNpemUgPSBmaXJzdEJ1dHRvbi53aWR0aCgpICsgc2Vjb25kQnV0dG9uLndpZHRoKCk7CiAg
ICAgICAgIGFmdGVyU2l6ZSA9IHRoaXJkQnV0dG9uLndpZHRoKCkgKyBmb3VydGhCdXR0b24ud2lk
dGgoKTsKICAgICB9IGVsc2UgewpAQCAtNTcsNyArNTcsNyBAQCBib29sIFJlbmRlclNjcm9sbGJh
clRoZW1lOjpoYXNCdXR0b25zKFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogICAgIGludCBzdGFydFNp
emU7CiAgICAgaW50IGVuZFNpemU7CiAgICAgYnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyhzY3Jv
bGxiYXIsIHN0YXJ0U2l6ZSwgZW5kU2l6ZSk7Ci0gICAgcmV0dXJuIChzdGFydFNpemUgKyBlbmRT
aXplKSA8PSAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/
IHNjcm9sbGJhci53aWR0aCgpIDogc2Nyb2xsYmFyLmhlaWdodCgpKTsKKyAgICByZXR1cm4gKHN0
YXJ0U2l6ZSArIGVuZFNpemUpIDw9IChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxi
YXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCA/IHNjcm9sbGJhci53aWR0aCgpIDogc2Nyb2xsYmFy
LmhlaWdodCgpKTsKIH0KIAogYm9vbCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFzVGh1bWIoU2Ny
b2xsYmFyJiBzY3JvbGxiYXIpCkBAIC05Nyw3ICs5Nyw3IEBAIEludFJlY3QgUmVuZGVyU2Nyb2xs
YmFyVGhlbWU6OmNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xsYmFyJiBzY3Jv
bGxiCiAgICAgSW50UmVjdCBiYWNrUmVjdCA9IGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4oc2Ny
b2xsYmFyKS50cmFja1BpZWNlUmVjdFdpdGhNYXJnaW5zKEJhY2tUcmFja1BhcnQsIHJlY3QpOwog
ICAgIEludFJlY3QgZm9yd2FyZFJlY3QgPSBkb3duY2FzdDxSZW5kZXJTY3JvbGxiYXI+KHNjcm9s
bGJhcikudHJhY2tQaWVjZVJlY3RXaXRoTWFyZ2lucyhGb3J3YXJkVHJhY2tQYXJ0LCByZWN0KTsK
ICAgICBJbnRSZWN0IHJlc3VsdCA9IHJlY3Q7Ci0gICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlv
bigpID09IEhvcml6b250YWxTY3JvbGxiYXIpIHsKKyAgICBpZiAoc2Nyb2xsYmFyLm9yaWVudGF0
aW9uKCkgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWwpIHsKICAgICAgICAgcmVz
dWx0LnNldFgoYmFja1JlY3QueCgpKTsKICAgICAgICAgcmVzdWx0LnNldFdpZHRoKGZvcndhcmRS
ZWN0Lm1heFgoKSAtIGJhY2tSZWN0LngoKSk7CiAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcAppbmRleCA5ZmYwMjZkM2Q2YzY5Nzdh
YmU1YjM0Yjc3OWU4ZjBhNTZiNjkyNTk0Li4xNTIyOTlhNmIzNDc1YTMzYzU3YmQyZGRlMDk1YzY2
ODgwN2FkNWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVz
dWx0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERh
dGEuY3BwCkBAIC01OCw3ICs1OCw3IEBAIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpXZWJIaXRUZXN0
UmVzdWx0RGF0YShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBoaXRUZXN0CiAgICAgLCBp
bWFnZVNpemUoMCkKIHsKICAgICBpZiAoYXV0byogc2Nyb2xsYmFyID0gaGl0VGVzdFJlc3VsdC5z
Y3JvbGxiYXIoKSkKLSAgICAgICAgaXNTY3JvbGxiYXIgPSBzY3JvbGxiYXItPm9yaWVudGF0aW9u
KCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IElzU2Nyb2xsYmFyOjpIb3Jpem9udGFsIDogSXNT
Y3JvbGxiYXI6OlZlcnRpY2FsOworICAgICAgICBpc1Njcm9sbGJhciA9IHNjcm9sbGJhci0+b3Jp
ZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCA/IElzU2Nyb2xs
YmFyOjpIb3Jpem9udGFsIDogSXNTY3JvbGxiYXI6OlZlcnRpY2FsOwogfQogCiBXZWJIaXRUZXN0
UmVzdWx0RGF0YTo6V2ViSGl0VGVzdFJlc3VsdERhdGEoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJl
c3VsdCYgaGl0VGVzdFJlc3VsdCwgYm9vbCBpbmNsdWRlSW1hZ2UpCkBAIC03OSw3ICs3OSw3IEBA
IFdlYkhpdFRlc3RSZXN1bHREYXRhOjpXZWJIaXRUZXN0UmVzdWx0RGF0YShjb25zdCBXZWJDb3Jl
OjpIaXRUZXN0UmVzdWx0JiBoaXRUZXN0CiAgICAgLCBpbWFnZVNpemUoMCkKIHsKICAgICBpZiAo
YXV0byogc2Nyb2xsYmFyID0gaGl0VGVzdFJlc3VsdC5zY3JvbGxiYXIoKSkKLSAgICAgICAgaXNT
Y3JvbGxiYXIgPSBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJh
ciA/IElzU2Nyb2xsYmFyOjpIb3Jpem9udGFsIDogSXNTY3JvbGxiYXI6OlZlcnRpY2FsOworICAg
ICAgICBpc1Njcm9sbGJhciA9IHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJP
cmllbnRhdGlvbjo6SG9yaXpvbnRhbCA/IElzU2Nyb2xsYmFyOjpIb3Jpem9udGFsIDogSXNTY3Jv
bGxiYXI6OlZlcnRpY2FsOwogCiAgICAgaWYgKCFpbmNsdWRlSW1hZ2UpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQb3B1cE1lbnVQ
cm94eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUG9wdXBNZW51UHJv
eHlXaW4uY3BwCmluZGV4IGU0YzExZjNlYjA4NjI5ZjYxM2QzMWI4NDczOTkzM2UyOTIzMWIxYTMu
Ljg4ZWU1N2JlYjAyMjQwMDcxZmM2YmQwZjZmYzI4ODQxNmQzZDRmYTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQb3B1cE1lbnVQcm94eVdpbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlBvcHVwTWVudVByb3h5V2luLmNwcApAQCAt
MTk5LDcgKzE5OSw3IEBAIHZvaWQgV2ViUG9wdXBNZW51UHJveHlXaW46OnNob3dQb3B1cE1lbnUo
Y29uc3QgSW50UmVjdCYgcmVjdCwgVGV4dERpcmVjdGlvbiwgZG91CiAgICAgSFdORCBob3N0V2lu
ZG93ID0gbV93ZWJWaWV3LT53aW5kb3coKTsKIAogICAgIGlmICghbV9zY3JvbGxiYXIgJiYgdmlz
aWJsZUl0ZW1zKCkgPCBtX2l0ZW1zLnNpemUoKSkgewotICAgICAgICBtX3Njcm9sbGJhciA9IFNj
cm9sbGJhcjo6Y3JlYXRlTmF0aXZlU2Nyb2xsYmFyKCp0aGlzLCBWZXJ0aWNhbFNjcm9sbGJhciwg
U2Nyb2xsYmFyQ29udHJvbFNpemU6OlNtYWxsKTsKKyAgICAgICAgbV9zY3JvbGxiYXIgPSBTY3Jv
bGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcigqdGhpcywgU2Nyb2xsYmFyT3JpZW50YXRpb246
OlZlcnRpY2FsLCBTY3JvbGxiYXJDb250cm9sU2l6ZTo6U21hbGwpOwogICAgICAgICBtX3Njcm9s
bGJhci0+c3R5bGVDaGFuZ2VkKCk7CiAgICAgfQogCkBAIC05ODMsMTIgKzk4MywxMiBAQCBib29s
IFdlYlBvcHVwTWVudVByb3h5V2luOjpzY3JvbGxUb1JldmVhbFNlbGVjdGlvbigpCiAgICAgaW50
IGluZGV4ID0gZm9jdXNlZEluZGV4KCk7CiAKICAgICBpZiAoaW5kZXggPCBtX3Njcm9sbE9mZnNl
dCkgewotICAgICAgICBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0
aW9uKFZlcnRpY2FsU2Nyb2xsYmFyLCBpbmRleCk7CisgICAgICAgIFNjcm9sbGFibGVBcmVhOjpz
Y3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oU2Nyb2xsYmFyT3JpZW50YXRpb246OlZlcnRp
Y2FsLCBpbmRleCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGlmIChpbmRl
eCA+PSBtX3Njcm9sbE9mZnNldCArIHZpc2libGVJdGVtcygpKSB7Ci0gICAgICAgIFNjcm9sbGFi
bGVBcmVhOjpzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oVmVydGljYWxTY3JvbGxiYXIs
IGluZGV4IC0gdmlzaWJsZUl0ZW1zKCkgKyAxKTsKKyAgICAgICAgU2Nyb2xsYWJsZUFyZWE6OnNj
cm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGlj
YWwsIGluZGV4IC0gdmlzaWJsZUl0ZW1zKCkgKyAxKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbQppbmRleCAwZTFkMDdhZTNkMGM4MTc0ZWI2YzNkYmM5MzgyYWQ1NGI2NzM0MzAzLi44
YjI0NzdhZTdlYjQ2MzgzNDRiNzZiMWJjYjM4ZGU5OTBlZmI1MDJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTEzMTEsMTUg
KzEzMTEsMTUgQEAgdm9pZCBQREZQbHVnaW46OnVwZGF0ZVNjcm9sbGJhcnMoKQogCiAgICAgaWYg
KG1faG9yaXpvbnRhbFNjcm9sbGJhcikgewogICAgICAgICBpZiAobV9zaXplLndpZHRoKCkgPj0g
bV9wZGZEb2N1bWVudFNpemUud2lkdGgoKSkKLSAgICAgICAgICAgIGRlc3Ryb3lTY3JvbGxiYXIo
SG9yaXpvbnRhbFNjcm9sbGJhcik7CisgICAgICAgICAgICBkZXN0cm95U2Nyb2xsYmFyKFNjcm9s
bGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKTsKICAgICB9IGVsc2UgaWYgKG1fc2l6ZS53aWR0
aCgpIDwgbV9wZGZEb2N1bWVudFNpemUud2lkdGgoKSkKLSAgICAgICAgbV9ob3Jpem9udGFsU2Ny
b2xsYmFyID0gY3JlYXRlU2Nyb2xsYmFyKEhvcml6b250YWxTY3JvbGxiYXIpOworICAgICAgICBt
X2hvcml6b250YWxTY3JvbGxiYXIgPSBjcmVhdGVTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRp
b246Okhvcml6b250YWwpOwogCiAgICAgaWYgKG1fdmVydGljYWxTY3JvbGxiYXIpIHsKICAgICAg
ICAgaWYgKG1fc2l6ZS5oZWlnaHQoKSA+PSBtX3BkZkRvY3VtZW50U2l6ZS5oZWlnaHQoKSkKLSAg
ICAgICAgICAgIGRlc3Ryb3lTY3JvbGxiYXIoVmVydGljYWxTY3JvbGxiYXIpOworICAgICAgICAg
ICAgZGVzdHJveVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwpOwogICAg
IH0gZWxzZSBpZiAobV9zaXplLmhlaWdodCgpIDwgbV9wZGZEb2N1bWVudFNpemUuaGVpZ2h0KCkp
Ci0gICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXIgPSBjcmVhdGVTY3JvbGxiYXIoVmVydGljYWxT
Y3JvbGxiYXIpOworICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyID0gY3JlYXRlU2Nyb2xsYmFy
KFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbCk7CiAKICAgICBJbnRTaXplIHNjcm9sbGJh
clNwYWNlID0gc2Nyb2xsYmFySW50cnVzaW9uKCk7CiAKQEAgLTEzODQsNyArMTM4NCw3IEBAIGNv
bnN0IFBsdWdpblZpZXcqIFBERlBsdWdpbjo6cGx1Z2luVmlldygpIGNvbnN0CiBSZWY8U2Nyb2xs
YmFyPiBQREZQbHVnaW46OmNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmll
bnRhdGlvbikKIHsKICAgICBhdXRvIHdpZGdldCA9IFNjcm9sbGJhcjo6Y3JlYXRlTmF0aXZlU2Ny
b2xsYmFyKCp0aGlzLCBvcmllbnRhdGlvbiwgU2Nyb2xsYmFyQ29udHJvbFNpemU6OlJlZ3VsYXIp
OwotICAgIGlmIChvcmllbnRhdGlvbiA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CisgICAgaWYg
KG9yaWVudGF0aW9uID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKSB7CiAgICAg
ICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhckxheWVyID0gYWRvcHROUyhbW1dLUERGUGx1Z2luU2Ny
b2xsYmFyTGF5ZXIgYWxsb2NdIGluaXRXaXRoUERGUGx1Z2luOnRoaXNdKTsKICAgICAgICAgW21f
Y29udGFpbmVyTGF5ZXIgYWRkU3VibGF5ZXI6bV9ob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIuZ2V0
KCldOwogICAgIH0gZWxzZSB7CkBAIC0xNDEyLDcgKzE0MTIsNyBAQCBSZWY8U2Nyb2xsYmFyPiBQ
REZQbHVnaW46OmNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlv
bikKIAogdm9pZCBQREZQbHVnaW46OmRlc3Ryb3lTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRp
b24gb3JpZW50YXRpb24pCiB7Ci0gICAgUmVmUHRyPFNjcm9sbGJhcj4mIHNjcm9sbGJhciA9IG9y
aWVudGF0aW9uID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBtX2hvcml6b250YWxTY3JvbGxiYXIg
OiBtX3ZlcnRpY2FsU2Nyb2xsYmFyOworICAgIFJlZlB0cjxTY3JvbGxiYXI+JiBzY3JvbGxiYXIg
PSBvcmllbnRhdGlvbiA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCA/IG1faG9y
aXpvbnRhbFNjcm9sbGJhciA6IG1fdmVydGljYWxTY3JvbGxiYXI7CiAgICAgaWYgKCFzY3JvbGxi
YXIpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTQyMCw3ICsxNDIwLDcgQEAgdm9pZCBQREZQbHVn
aW46OmRlc3Ryb3lTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiAg
ICAgc2Nyb2xsYmFyLT5yZW1vdmVGcm9tUGFyZW50KCk7CiAgICAgc2Nyb2xsYmFyID0gbnVsbHB0
cjsKIAotICAgIGlmIChvcmllbnRhdGlvbiA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CisgICAg
aWYgKG9yaWVudGF0aW9uID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsKSB7CiAg
ICAgICAgIFttX2hvcml6b250YWxTY3JvbGxiYXJMYXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07
CiAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhckxheWVyID0gMDsKICAgICB9IGVsc2UgewpA
QCAtMTk1Miw4ICsxOTUyLDggQEAgdm9pZCBQREZQbHVnaW46OmRlc3Ryb3koKQogICAgIG1fYWN0
aXZlQW5ub3RhdGlvbiA9IG51bGxwdHI7CiAgICAgbV9hbm5vdGF0aW9uQ29udGFpbmVyID0gbnVs
bHB0cjsKIAotICAgIGRlc3Ryb3lTY3JvbGxiYXIoSG9yaXpvbnRhbFNjcm9sbGJhcik7Ci0gICAg
ZGVzdHJveVNjcm9sbGJhcihWZXJ0aWNhbFNjcm9sbGJhcik7CisgICAgZGVzdHJveVNjcm9sbGJh
cihTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCk7CisgICAgZGVzdHJveVNjcm9sbGJh
cihTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWwpOwogICAgIAogICAgIFttX3Njcm9sbENv
cm5lckxheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKICAgICBbbV9jb250ZW50TGF5ZXIgcmVt
b3ZlRnJvbVN1cGVybGF5ZXJdOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>