<?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>231071</bug_id>
          
          <creation_ts>2021-10-01 05:16:32 -0700</creation_ts>
          <short_desc>WebRTC p2p call, VP9-SVC only low layer decoded on receiver side</short_desc>
          <delta_ts>2021-10-20 01:13:38 -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>WebRTC</component>
          <version>Safari 15</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>ivan.zahrodskyi</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1799234</commentid>
    <comment_count>0</comment_count>
    <who name="">ivan.zahrodskyi</who>
    <bug_when>2021-10-01 05:16:32 -0700</bug_when>
    <thetext>1) initiate WebRTC p2p call
2) peerA sends video stream, codec VP9-SVC with 3 spatial layers (720p, 360p, 180p)

actual result:
- peerB always decodes and plays only lowest layer (180p)

expected result:
- peerB should play high layer

NOTE: issue is not reproduces on safari Version 14.1.2 (16611.3.10.1.3)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799256</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-01 06:18:51 -0700</bug_when>
    <thetext>&lt;rdar://problem/83763291&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799258</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-01 06:20:45 -0700</bug_when>
    <thetext>Thanks for the report.

Would it be possible to get a repro case maybe as well, or get a sample bitstream?

Can you also clarify which version of Safari you have tested, and the device?
It would be nice to know whether that reproduces with HW VP9 decoder or SW VP9 decoder. I am leaning towards the former.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799993</commentid>
    <comment_count>3</comment_count>
      <attachid>440040</attachid>
    <who name="">ivan.zahrodskyi</who>
    <bug_when>2021-10-04 01:45:26 -0700</bug_when>
    <thetext>Created attachment 440040
Small example to reproduce the issue

Using this example I can reproduce the issue on:
1) MacBook Air (M1, 2020), MacOS Monterey 12.0 Beta (21A5534d), Safari Version 15.1 (17612.2.6.1.1)
2) Iphone 12, IOS 15.0.1
3) Mac mini (2018), Big Sur 11.6, Safari Version 15.0 (16612.1.29.41.4, 16612)


I was not able to reproduce this issue on:
1) MacBook Pro (Retina, 15-inch, Late 2013), Big Sur 11.5, Safari Version 14.1.2 (16611.3.10.1.3)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803033</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-12 01:52:07 -0700</bug_when>
    <thetext>Thanks Ivan, I validated that the issue is with the HW VP9 decoder, not the SW one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803037</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-12 02:09:08 -0700</bug_when>
    <thetext>To detect this, media capabilities can be used, for instance:
navigator.mediaCapabilities.decodingInfo({
  type: &quot;file&quot;,
    video: {
      contentType: &apos;video/mp4; codecs=&quot;vp09.00.41.08&quot;&apos;,
      width: 800,
      height: 600,
      bitrate: 10000,
      framerate: 15
   }
}).then(result =&gt; console.log(result.powerEfficient))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803756</commentid>
    <comment_count>6</comment_count>
      <attachid>441073</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-13 07:29:24 -0700</bug_when>
    <thetext>Created attachment 441073
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803783</commentid>
    <comment_count>7</comment_count>
      <attachid>441073</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-10-13 08:49:46 -0700</bug_when>
    <thetext>Comment on attachment 441073
Patch

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

&gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:260
&gt; +        auto report = LibWebRTCStatsCollector::createReport(rtcReport);

Is there any reason to create the report if the endpoint has stopped?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804207</commentid>
    <comment_count>8</comment_count>
      <attachid>441200</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-14 03:57:08 -0700</bug_when>
    <thetext>Created attachment 441200
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804208</commentid>
    <comment_count>9</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-14 03:57:20 -0700</bug_when>
    <thetext>(In reply to Eric Carlson from comment #7)
&gt; Comment on attachment 441073 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=441073&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:260
&gt; &gt; +        auto report = LibWebRTCStatsCollector::createReport(rtcReport);
&gt; 
&gt; Is there any reason to create the report if the endpoint has stopped?

Right, fix in the landing patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805924</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-19 02:21:55 -0700</bug_when>
    <thetext>ChangeLog entry in Source/ThirdParty/libwebrtc/ChangeLog contains OOPS!.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806525</commentid>
    <comment_count>11</comment_count>
      <attachid>441854</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-20 00:17:27 -0700</bug_when>
    <thetext>Created attachment 441854
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806538</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-20 01:13:35 -0700</bug_when>
    <thetext>Committed r284523 (243266@main): &lt;https://commits.webkit.org/243266@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 441854.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>440040</attachid>
            <date>2021-10-04 01:45:26 -0700</date>
            <delta_ts>2021-10-04 01:45:26 -0700</delta_ts>
            <desc>Small example to reproduce the issue</desc>
            <filename>index.html</filename>
            <type>text/html</type>
            <size>2434</size>
            <attacher>ivan.zahrodskyi</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+DQo8aHRtbD4NCjxoZWFkPg0KCTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4N
Cgk8dGl0bGU+PC90aXRsZT4NCjwvaGVhZD4NCjxzY3JpcHQ+DQoJY29uc3QgYWRkU2ltdWxjYXN0
ID0gKHNkcCkgPT4gew0KICAJCWNvbnN0IGZpcnN0U3NyYyA9IHNkcC5tYXRjaCgvYT1zc3JjOihc
ZCspLyk7DQogIAkJaWYoZmlyc3RTc3JjICYmIGZpcnN0U3NyYy5sZW5ndGggPiAxKSB7DQogICAg
CQlsZXQgc2ltR3JvdXAgPSAnYT1zc3JjLWdyb3VwOlNJTSc7DQogICAgCQljb25zdCBzc3JjID0g
Zmlyc3RTc3JjWzFdOw0KICAgIAkJc2ltR3JvdXAgKz0gYCAke3NzcmN9YDsNCiAgICAJCWNvbnN0
IHNzcmNMaW5lc1RlbXBsYXRlID0gc2RwLm1hdGNoKG5ldyBSZWdFeHAoYGE9c3NyYzoke3NzcmN9
KC4rKWAsICdnJykpOw0KDQogICAgCQlmb3IgKGxldCBpID0gMDsgaSA8IDIgOyArK2kpIHsNCiAg
ICAgIAkJCWNvbnN0IHNzcmMxID0gJycgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAweGZm
ZmZmZmZmKTsNCiAgICAgIAkJCXNpbUdyb3VwICs9IGAgJHtzc3JjMX1gOw0KICAgICAgCQkJc2Rw
ICs9IHNzcmNMaW5lc1RlbXBsYXRlLmpvaW4oJ1xyXG4nKQ0KICAgICAgICAJCQkucmVwbGFjZShu
ZXcgUmVnRXhwKGBhPXNzcmM6JHtzc3JjfSguKylgLCAnZycpLCBgYT1zc3JjOiR7c3NyYzF9JDFg
KSArICdcclxuJzsNCiAgICAgIAkNCgkJCX0NCgkJCXNkcCArPSBgJHtzaW1Hcm91cH1cclxuYDsN
CgkJfQ0KICAgICAgCXJldHVybiBzZHA7DQogIAl9Ow0KDQoNCgkoYXN5bmMgKCkgPT4gew0KCQlj
b25zdCBzdHIgPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7dmlk
ZW86IHt3aWR0aDogMTI4MCwgaGVpZ2h0OiA3MjB9fSk7DQoJCWNvbnN0IHZpZGVvVHJhY2sgPSBz
dHIuZ2V0VHJhY2tzKClbMF07DQoNCgkJY29uc3QgcGMxID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9u
KCk7DQoJCWNvbnN0IHBjMiA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOw0KCQl3aW5kb3cucGMx
ID0gcGMxOw0KCQl3aW5kb3cucGMyID0gcGMyOw0KDQoJCWNvbnN0IHRyYW5zY2VpdmVyID0gcGMx
LmFkZFRyYW5zY2VpdmVyKHZpZGVvVHJhY2ssIHsNCiAgICAgICAgICAgICAgZGlyZWN0aW9uOiAn
c2VuZHJlY3YnLA0KICAgICAgICAgICAgICBzdHJlYW1zOiBbc3RyXQ0KICAgICAgICAgICAgfSk7
DQoNCg0KCQljb25zdCBjb2RlY3MgPSBSVENSdHBTZW5kZXIuZ2V0Q2FwYWJpbGl0aWVzKCd2aWRl
bycpLmNvZGVjcy5maWx0ZXIoYyA9PiBjLm1pbWVUeXBlLmluY2x1ZGVzKCdWUDknKSk7DQoJCXRy
YW5zY2VpdmVyLnNldENvZGVjUHJlZmVyZW5jZXMoY29kZWNzKTsNCg0KDQoJCWNvbnN0IG9mZmVy
ID0gYXdhaXQgcGMxLmNyZWF0ZU9mZmVyKCk7DQoJCW9mZmVyLnNkcCA9IGFkZFNpbXVsY2FzdChv
ZmZlci5zZHApOw0KCQlhd2FpdCBwYzEuc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcik7DQoNCg0K
CQlwYzEub25pY2VjYW5kaWRhdGUgPSBhc3luYyAoZSkgPT4gew0KCSAgICAgIGlmICghZS5jYW5k
aWRhdGUpIHsNCgkgICAgICAJYXdhaXQgcGMyLnNldFJlbW90ZURlc2NyaXB0aW9uKHsgdHlwZTog
J29mZmVyJywgc2RwOiBwYzEubG9jYWxEZXNjcmlwdGlvbi5zZHAgfSk7DQoJCQljb25zdCBhbnN3
ZXIgPSBhd2FpdCBwYzIuY3JlYXRlQW5zd2VyKCk7DQoJCQlhd2FpdCBwYzIuc2V0TG9jYWxEZXNj
cmlwdGlvbihhbnN3ZXIpOw0KCQkJYXdhaXQgcGMxLnNldFJlbW90ZURlc2NyaXB0aW9uKGFuc3dl
cik7DQoJICAgICAgfQ0KCSAgICB9DQoNCgkJDQoJCXBjMi5vbnRyYWNrID0gKGUpID0+IHsNCgkJ
CWNvbnN0IHZpZGVvRWwgPSAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ZpZGVvJyk7DQoJICAg
ICAJdmlkZW9FbC5zcmNPYmplY3QgPSBlLnN0cmVhbXNbMF07DQoJICAgIH0NCgkJDQoNCgkJLy9s
b2cNCgkJc2V0SW50ZXJ2YWwoYXN5bmMgKCkgPT4gew0KCQkJY29uc3QgdmlkZW9TdGF0cyA9IEFy
cmF5LmZyb20oYXdhaXQgcGMyLmdldFN0YXRzKCkpLmZpbmQocyA9PiBzWzBdLmluY2x1ZGVzKCdS
VENJbmJvdW5kUlRQVmlkZW9TdHJlYW1fJykpOw0KCQkJaWYodmlkZW9TdGF0cykgew0KCQkJCWNv
bnN0IGxvZ1N0ciA9IGBSZWNlaXZlZCB2aWRlbyByZXNvbHV0aW9uOiAke3ZpZGVvU3RhdHNbMV0u
ZnJhbWVXaWR0aH0geCAke3ZpZGVvU3RhdHNbMV0uZnJhbWVIZWlnaHR9YA0KCQkJCWNvbnNvbGUu
bG9nKGxvZ1N0cik7DQoJCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpLmlubmVyVGV4
dCA9IGxvZ1N0cjsNCgkJCX0NCgkJfSwgMTAwMCk7DQoJCQ0KCX0pKCk7DQo8L3NjcmlwdD4NCjxi
b2R5Pg0KCTx2aWRlbyBpZD0idmlkZW8iIGNvbnRyb2xzIGF1dG9wbGF5PSIiPjwvdmlkZW8+DQoJ
PHNwYW4gaWQ9J2xvZyc+PC9zcGFuPg0KPC9ib2R5Pg0KPC9odG1sPg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441073</attachid>
            <date>2021-10-13 07:29:24 -0700</date>
            <delta_ts>2021-10-14 03:57:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231071-20211013162923.patch</filename>
            <type>text/plain</type>
            <size>22444</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCA2ZjRmZDM4NjdhMDAzYWQzMDUzY2E3ZTAwZTVmYjQyY2U5OTY5ODNiLi5kZDYy
MjhhNGYzY2ZlNzQ2OWQ2ZGVlYTRlOGU3Y2Q0OGViMWFiMjZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMC0xMyAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViUlRDIHAycCBjYWxsLCBWUDkt
U1ZDIG9ubHkgbG93IGxheWVyIGRlY29kZWQgb24gcmVjZWl2ZXIgc2lkZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMDcxCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS84Mzc2MzI5MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbiBjYXNlIFZQOSBTVkMgaXMgdXNlZCwgZmFsbGJhY2sgdG8gc29mdHdh
cmUgZGVjb2RlciBmb3Igbm93LgorCisgICAgICAgICogU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0
L1dlYktpdERlY29kZXIubW06CisKIDIwMjEtMTAtMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBEcm9wIHN1cHBvcnQgZm9yIG1hY09TIDwgMTAuMTUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAwZTJjM2QxNWQ3ZjliMGU3YzVmMGIwMjgwY2VlNjUyMjhmZGFmY2M0Li5iNDliZTg2
M2E1ZTc1YjQyNTM0ZDA3Mzk2NzAzZmE5MWVmMGFjYzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjggQEAKKzIwMjEtMTAtMTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisg
ICAgICAgIFdlYlJUQyBwMnAgY2FsbCwgVlA5LVNWQyBvbmx5IGxvdyBsYXllciBkZWNvZGVkIG9u
IHJlY2VpdmVyIHNpZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMTA3MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODM3NjMyOTE+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEludGVybmFscyBB
UEkgdG8gY2hlY2sgd2hldGhlciBWUDkgVlRCIGlzIHVzZWQgb3Igbm90LgorCisgICAgICAgIFRl
c3Q6IHdlYnJ0Yy92cDktc3ZjLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaDoKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3Bw
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJD
b25uZWN0aW9uQmFja2VuZC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5oOgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAyMS0xMC0wNiAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IGh0dHBzOi8vdzNjLmdp
dGh1Yi5pby9wdXNoLWFwaS8jcmVjZWl2aW5nLWEtcHVzaC1tZXNzYWdlCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktp
dERlY29kZXIubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvV2ViS2l0L1dlYktpdERlY29kZXIubW0KaW5kZXggZWM1ZThiMDFmYzllYzBlMzUzMDIwMTkw
ODM4OWIwN2Y5Njc4Yzg2My4uODlkOGM0MjhmMjIxNGUyY2UwYjhiMWU1NGI2MTFhMGI4Zjc4ZGQ4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL1dlYktpdC9XZWJLaXREZWNvZGVyLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2Rlci5tbQpAQCAtMzEsNiAr
MzEsNyBAQAogI2ltcG9ydCAiV2ViS2l0VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJhcGkvdmlkZW9f
Y29kZWNzL3ZpZGVvX2RlY29kZXIuaCIKICNpbXBvcnQgImFwaS92aWRlb19jb2RlY3MvdmlkZW9f
ZGVjb2Rlcl9mYWN0b3J5LmgiCisjaW1wb3J0ICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2RlY29k
ZXJfc29mdHdhcmVfZmFsbGJhY2tfd3JhcHBlci5oIgogI2ltcG9ydCAibW9kdWxlcy92aWRlb19j
b2RpbmcvY29kZWNzL2gyNjQvaW5jbHVkZS9oMjY0LmgiCiAjaW1wb3J0ICJtb2R1bGVzL3ZpZGVv
X2NvZGluZy9pbmNsdWRlL3ZpZGVvX2Vycm9yX2NvZGVzLmgiCiAjaW1wb3J0ICJzZGsvb2JqYy9j
b21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRGVjb2RlckgyNjQuaCIKQEAgLTEyNCw5ICsx
MjUsMTEgQEAgcHJpdmF0ZToKIAogY2xhc3MgUmVtb3RlVmlkZW9EZWNvZGVyIGZpbmFsIDogcHVi
bGljIHdlYnJ0Yzo6VmlkZW9EZWNvZGVyIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBSZW1vdGVW
aWRlb0RlY29kZXIoV2ViS2l0VmlkZW9EZWNvZGVyKTsKKyAgICBSZW1vdGVWaWRlb0RlY29kZXIo
V2ViS2l0VmlkZW9EZWNvZGVyLCBib29sIGlzVlA5KTsKICAgICB+UmVtb3RlVmlkZW9EZWNvZGVy
KCk7CiAKKyAgICBib29sIGlzVlA5KCkgY29uc3QgeyByZXR1cm4gbV9pc1ZQOTsgfQorCiBwcml2
YXRlOgogICAgIGludDMyX3QgSW5pdERlY29kZShjb25zdCBWaWRlb0NvZGVjKiwgaW50MzJfdCBu
dW1iZXJfb2ZfY29yZXMpIGZpbmFsOwogICAgIGludDMyX3QgRGVjb2RlKGNvbnN0IEVuY29kZWRJ
bWFnZSYsIGJvb2wgbWlzc2luZ19mcmFtZXMsIGludDY0X3QgcmVuZGVyX3RpbWVfbXMpIGZpbmFs
OwpAQCAtMTM1LDYgKzEzOCw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgY2hhciogSW1wbGVtZW50
YXRpb25OYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbW90ZVZpZGVvVG9vbEJveCI7IH0K
IAogICAgIFdlYktpdFZpZGVvRGVjb2RlciBtX2ludGVybmFsRGVjb2RlcjsKKyAgICBib29sIG1f
aXNWUDkgeyBmYWxzZSB9OwogfTsKIAogc3RydWN0IFZpZGVvRGVjb2RlckNhbGxiYWNrcyB7CkBA
IC0xNTgsOCArMTYyLDkgQEAgdm9pZCBzZXRWaWRlb0RlY29kZXJDYWxsYmFja3MoVmlkZW9EZWNv
ZGVyQ3JlYXRlQ2FsbGJhY2sgY3JlYXRlQ2FsbGJhY2ssIFZpZGVvRGUKICAgICBjYWxsYmFja3Mu
cmVnaXN0ZXJEZWNvZGVDb21wbGV0ZUNhbGxiYWNrID0gcmVnaXN0ZXJEZWNvZGVDb21wbGV0ZUNh
bGxiYWNrOwogfQogCi1SZW1vdGVWaWRlb0RlY29kZXI6OlJlbW90ZVZpZGVvRGVjb2RlcihXZWJL
aXRWaWRlb0RlY29kZXIgaW50ZXJuYWxEZWNvZGVyKQorUmVtb3RlVmlkZW9EZWNvZGVyOjpSZW1v
dGVWaWRlb0RlY29kZXIoV2ViS2l0VmlkZW9EZWNvZGVyIGludGVybmFsRGVjb2RlciwgYm9vbCBp
c1ZQOSkKICAgICA6IG1faW50ZXJuYWxEZWNvZGVyKGludGVybmFsRGVjb2RlcikKKyAgICAsIG1f
aXNWUDkoaXNWUDkpCiB7CiB9CiAKQEAgLTE5Myw2ICsxOTgsMTEgQEAgaW50MzJfdCBSZW1vdGVW
aWRlb0RlY29kZXI6OkRlY29kZShjb25zdCBFbmNvZGVkSW1hZ2UmIGlucHV0X2ltYWdlLCBib29s
IG1pc3NpbmcKICAgICAgICAgZW5jb2RlZFdpZHRoID0gcnRjOjpkY2hlY2tlZF9jYXN0PHVpbnQx
Nl90PihpbnB1dF9pbWFnZS5fZW5jb2RlZFdpZHRoKTsKICAgICAgICAgZW5jb2RlZEhlaWdodCA9
IHJ0Yzo6ZGNoZWNrZWRfY2FzdDx1aW50MTZfdD4oaW5wdXRfaW1hZ2UuX2VuY29kZWRIZWlnaHQp
OwogICAgIH0KKworICAgIC8vIFZQOSBWVEIgZG9lcyBub3Qgc3VwcG9ydCBTVkMKKyAgICBpZiAo
bV9pc1ZQOSAmJiBpbnB1dF9pbWFnZS5fZnJhbWVUeXBlID09IFZpZGVvRnJhbWVUeXBlOjprVmlk
ZW9GcmFtZUtleSAmJiBpbnB1dF9pbWFnZS5TcGF0aWFsSW5kZXgoKSAmJiAqaW5wdXRfaW1hZ2Uu
U3BhdGlhbEluZGV4KCkgPiAwKQorICAgICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0ZB
TExCQUNLX1NPRlRXQVJFOworCiAgICAgcmV0dXJuIHZpZGVvRGVjb2RlckNhbGxiYWNrcygpLmRl
Y29kZUNhbGxiYWNrKG1faW50ZXJuYWxEZWNvZGVyLCBpbnB1dF9pbWFnZS5UaW1lc3RhbXAoKSwg
aW5wdXRfaW1hZ2UuZGF0YSgpLCBpbnB1dF9pbWFnZS5zaXplKCksIGVuY29kZWRXaWR0aCwgZW5j
b2RlZEhlaWdodCk7CiB9CiAKQEAgLTIyNiw3ICsyMzYsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPFZp
ZGVvRGVjb2Rlcj4gUmVtb3RlVmlkZW9EZWNvZGVyRmFjdG9yeTo6Q3JlYXRlVmlkZW9EZWNvZGVy
KGNvbnMKICAgICBpZiAoIWlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBtX2ludGVybmFsRmFj
dG9yeS0+Q3JlYXRlVmlkZW9EZWNvZGVyKGZvcm1hdCk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxSZW1vdGVWaWRlb0RlY29kZXI+KGlkZW50aWZpZXIpOworICAgIGF1dG8gZGVjb2Rl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlVmlkZW9EZWNvZGVyPihpZGVudGlmaWVyLCBmb3Jt
YXQubmFtZSA9PSAiVlA5Iik7CisgICAgaWYgKCFkZWNvZGVyLT5pc1ZQOSgpKQorICAgICAgICBy
ZXR1cm4gZGVjb2RlcjsKKyAgICByZXR1cm4gd2VicnRjOjpDcmVhdGVWaWRlb0RlY29kZXJTb2Z0
d2FyZUZhbGxiYWNrV3JhcHBlcihtX2ludGVybmFsRmFjdG9yeS0+Q3JlYXRlVmlkZW9EZWNvZGVy
KGZvcm1hdCksIHN0ZDo6bW92ZShkZWNvZGVyKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjx3ZWJy
dGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+IGNyZWF0ZVdlYktpdERlY29kZXJGYWN0b3J5KFdlYktp
dEgyNjUgc3VwcG9ydHNIMjY1LCBXZWJLaXRWUDkgc3VwcG9ydHNWUDksIFdlYktpdFZQOVZUQiBz
dXBwb3J0c1ZQOVZUQikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCmluZGV4IGYwODY5MmJiYzhlY2QxNDE2
NGNjZmI0MzlmNzYwZDAwODI5NmUzMDguLjVlOWNmODQ4MWU1N2UyN2UyODcyOWUyZjAyYmZiMDUy
ZTE2NmMyZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaApAQCAtMTA5LDYgKzEwOSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgcmVzdGFydEljZSgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
c2V0Q29uZmlndXJhdGlvbihNZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbiYmKSA9IDA7CiAKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2F0aGVyRGVjb2RlckltcGxlbWVudGF0aW9uTmFtZShGdW5jdGlvbjx2
b2lkKFN0cmluZyYmKT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRTdGF0cyhSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFN0YXRzKFJUQ1J0cFNl
bmRlciYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
U3RhdHMoUlRDUnRwUmVjZWl2ZXImLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb24uY3BwCmluZGV4IDNjNzZjNTdhOGI3MzVkYjBlNWIxODhjZjJlNDZmY2UyZjlhOWUzNTEu
LjJkYjI5ODhmOGMxY2Y0MTI5MjlmNWJlZTQwOGMwNjZmNzU0OWQ0ZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24u
Y3BwCkBAIC01MjMsNiArNTIzLDExIEBAIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmdldFN0YXRz
KE1lZGlhU3RyZWFtVHJhY2sqIHNlbGVjdG9yLCBSZWY8RGVmZXJyZWRQcm9taXNlCiAgICAgbV9i
YWNrZW5kLT5nZXRTdGF0cyhXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAordm9pZCBSVENQZWVyQ29u
bmVjdGlvbjo6Z2F0aGVyRGVjb2RlckltcGxlbWVudGF0aW9uTmFtZShGdW5jdGlvbjx2b2lkKFN0
cmluZyYmKT4mJiBjYWxsYmFjaykKK3sKKyAgICBtX2JhY2tlbmQtPmdhdGhlckRlY29kZXJJbXBs
ZW1lbnRhdGlvbk5hbWUoV1RGTW92ZShjYWxsYmFjaykpOworfQorCiBFeGNlcHRpb25PcjxSZWY8
UlRDRGF0YUNoYW5uZWw+PiBSVENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlRGF0YUNoYW5uZWwoU3Ry
aW5nJiYgbGFiZWwsIFJUQ0RhdGFDaGFubmVsSW5pdCYmIG9wdGlvbnMpCiB7CiAgICAgQUxXQVlT
X0xPRyhMT0dJREVOVElGSUVSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAppbmRleCAzZjExZTRjMTExMTAzOGQ2ZTg3
YjFkYjU1NjJkNTQ5NTdhYzZjZTBlLi4wMGNlZjBiZTc4YjE1ZTQ4NTE3Mzc3YjhmYjU4YTY5M2Mw
NjI4NTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1BlZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbi5oCkBAIC0xNTksNiArMTU5LDggQEAgcHVibGljOgogCiAgICAg
Ly8gOC4yIFN0YXRpc3RpY3MgQVBJCiAgICAgdm9pZCBnZXRTdGF0cyhNZWRpYVN0cmVhbVRyYWNr
KiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CisgICAgLy8gVXNlZCBmb3IgdGVzdGluZworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2F0aGVyRGVjb2RlckltcGxlbWVudGF0aW9uTmFtZShGdW5j
dGlvbjx2b2lkKFN0cmluZyYmKT4mJik7CiAKICAgICAvLyBFdmVudFRhcmdldAogICAgIEV2ZW50
VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gUlRDUGVlckNvbm5lY3Rpb25FdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q01lZGlhRW5kcG9pbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKaW5kZXggOTU3NDQ0NDZhMDhlOTdi
MmUyNzJkNzA1N2FlYzQxNjMyOGUzNmM1Yy4uNzAwZGU5MjJkNDExZGJjMWViMjgxNzBjN2EwOTcw
ZTliNDM3ZDE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5j
cHAKQEAgLTI1NSwxMyArMjU1LDM4IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6ZG9D
cmVhdGVBbnN3ZXIoKQogCiBydGM6OnNjb3BlZF9yZWZwdHI8TGliV2ViUlRDU3RhdHNDb2xsZWN0
b3I+IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNyZWF0ZVN0YXRzQ29sbGVjdG9yKFJlZjxEZWZl
cnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKLSAgICByZXR1cm4gTGliV2ViUlRDU3RhdHNDb2xs
ZWN0b3I6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHByb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9XShhdXRvJiYgcmVwb3J0KSBtdXRhYmxlIHsKKyAgICByZXR1cm4gTGli
V2ViUlRDU3RhdHNDb2xsZWN0b3I6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSks
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiYgcnRjUmVwb3J0KSBtdXRhYmxl
IHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgaWYgKHByb3RlY3Rl
ZFRoaXMtPmlzU3RvcHBlZCgpIHx8ICFyZXBvcnQpCisgICAgICAgIGF1dG8gcmVwb3J0ID0gTGli
V2ViUlRDU3RhdHNDb2xsZWN0b3I6OmNyZWF0ZVJlcG9ydChydGNSZXBvcnQpOworICAgICAgICBp
ZiAocHJvdGVjdGVkVGhpcy0+aXNTdG9wcGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8UlRDU3RhdHNSZXBvcnQ+PihyZXBv
cnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJm
YWNlPFJUQ1N0YXRzUmVwb3J0Pj4oV1RGTW92ZShyZXBvcnQpKTsKKyAgICB9KTsKK30KKwordm9p
ZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpnYXRoZXJEZWNvZGVySW1wbGVtZW50YXRpb25OYW1l
KEZ1bmN0aW9uPHZvaWQoU3RyaW5nJiYpPiYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9iYWNr
ZW5kKSB7CisgICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgYXV0byBjb2xsZWN0b3IgPSBMaWJXZWJSVENTdGF0c0NvbGxlY3Rvcjo6Y3JlYXRlKFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgcnRjUmVwb3J0KSBtdXRhYmxlIHsKKyAg
ICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgaWYgKHJ0Y1JlcG9ydCkgewor
ICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBydGNTdGF0cyA6ICpydGNSZXBvcnQpIHsKKyAg
ICAgICAgICAgICAgICBpZiAocnRjU3RhdHMudHlwZSgpID09IHdlYnJ0Yzo6UlRDSW5ib3VuZFJU
UFN0cmVhbVN0YXRzOjprVHlwZSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvJiBpbmJvdW5k
UlRQU3RhdHMgPSBzdGF0aWNfY2FzdDxjb25zdCB3ZWJydGM6OlJUQ0luYm91bmRSVFBTdHJlYW1T
dGF0cyY+KHJ0Y1N0YXRzKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluYm91bmRSVFBTdGF0
cy5kZWNvZGVyX2ltcGxlbWVudGF0aW9uLmlzX2RlZmluZWQoKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgY2FsbGJhY2soZnJvbVN0ZFN0cmluZygqaW5ib3VuZFJUUFN0YXRzLmRlY29kZXJf
aW1wbGVtZW50YXRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBjYWxsYmFjayh7IH0pOwogICAgIH0pOworICAgIG1fYmFja2VuZC0+R2V0
U3RhdHMoV1RGTW92ZShjb2xsZWN0b3IpKTsKIH0KIAogdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBv
aW50OjpnZXRTdGF0cyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENN
ZWRpYUVuZHBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmgKaW5kZXggZjZmOTBmNjI1MTM1ODU4NjNmNzc1
N2Q2MGJhYzRmNTUyZmI1Mzg2MC4uYzRiOWNlNzEyMTk4MjM4ODNiMDQ0MzBjZWI5ZWQ4MWU4Zjkw
Y2FjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaApAQCAtODUs
NiArODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkb1NldFJlbW90ZURlc2NyaXB0aW9uKGNvbnN0
IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYpOwogICAgIHZvaWQgZG9DcmVhdGVPZmZlcihjb25zdCBS
VENPZmZlck9wdGlvbnMmKTsKICAgICB2b2lkIGRvQ3JlYXRlQW5zd2VyKCk7CisgICAgdm9pZCBn
YXRoZXJEZWNvZGVySW1wbGVtZW50YXRpb25OYW1lKEZ1bmN0aW9uPHZvaWQoU3RyaW5nJiYpPiYm
KTsKICAgICB2b2lkIGdldFN0YXRzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogICAgIHZvaWQg
Z2V0U3RhdHMod2VicnRjOjpSdHBSZWNlaXZlckludGVyZmFjZSYsIFJlZjxEZWZlcnJlZFByb21p
c2U+JiYpOwogICAgIHZvaWQgZ2V0U3RhdHMod2VicnRjOjpSdHBTZW5kZXJJbnRlcmZhY2UmLCBS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IGQ4MDJiODAzOWYyMTY0MGZlNWM0Y2Yw
ZmZiNWUzZDM2ODM3YmQ3N2YuLjM5NDcyYmUyZjA4YWM2YTA2YTJhNGZlZTk5ODQ1NGZjZTZiYzk1
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmNwcApAQCAtMTk5LDYgKzE5OSwxMiBAQCBib29sIExpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZDo6c2V0Q29uZmlndXJhdGlvbihNZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbgog
ICAgIHJldHVybiBtX2VuZHBvaW50LT5zZXRDb25maWd1cmF0aW9uKHBhZ2UtPmxpYldlYlJUQ1By
b3ZpZGVyKCksIGNvbmZpZ3VyYXRpb25Gcm9tTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24oV1RG
TW92ZShjb25maWd1cmF0aW9uKSkpOwogfQogCit2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9u
QmFja2VuZDo6Z2F0aGVyRGVjb2RlckltcGxlbWVudGF0aW9uTmFtZShGdW5jdGlvbjx2b2lkKFN0
cmluZyYmKT4mJiBjYWxsYmFjaykKK3sKKyAgICBtX2VuZHBvaW50LT5nYXRoZXJEZWNvZGVySW1w
bGVtZW50YXRpb25OYW1lKFdURk1vdmUoY2FsbGJhY2spKTsKKworfQorCiB2b2lkIExpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Z2V0U3RhdHMoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBw
cm9taXNlKQogewogICAgIG1fZW5kcG9pbnQtPmdldFN0YXRzKFdURk1vdmUocHJvbWlzZSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaApp
bmRleCAzMTBiMGIwZmY5NWMyNmRjZTljYjQ5Nzc2NWU5M2M4NmZhNzY3YjlmLi4zNjU3MmYwZWQ5
ODBmNzRkYTAxNzE0NThhMDE1YTk4YTlkNWM3MzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaApAQCAtNjcsNiArNjcsNyBAQCBwcml2
YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IGNyZWF0ZURh
dGFDaGFubmVsSGFuZGxlcihjb25zdCBTdHJpbmcmLCBjb25zdCBSVENEYXRhQ2hhbm5lbEluaXQm
KSBmaW5hbDsKICAgICB2b2lkIHJlc3RhcnRJY2UoKSBmaW5hbDsKICAgICBib29sIHNldENvbmZp
Z3VyYXRpb24oTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24mJikgZmluYWw7CisgICAgdm9pZCBn
YXRoZXJEZWNvZGVySW1wbGVtZW50YXRpb25OYW1lKEZ1bmN0aW9uPHZvaWQoU3RyaW5nJiYpPiYm
KSBmaW5hbDsKICAgICB2b2lkIGdldFN0YXRzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpIGZpbmFs
OwogICAgIHZvaWQgZ2V0U3RhdHMoUlRDUnRwU2VuZGVyJiwgUmVmPERlZmVycmVkUHJvbWlzZT4m
JikgZmluYWw7CiAgICAgdm9pZCBnZXRTdGF0cyhSVENSdHBSZWNlaXZlciYsIFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDU3RhdHNDb2xsZWN0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDU3RhdHNDb2xs
ZWN0b3IuY3BwCmluZGV4IGMzNjI2Y2E0MmE1YzNkYjJlYjFmZTJhNTU2ZGQwYjNkYjI4ODkyNTIu
LjQ4MDUwM2ExYjY4YzZkN2Y0ZDEwZmE4NjAzZGExZTJkYmVmZmQ4ZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1N0YXRz
Q29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5jcHAKQEAgLTYzNCwxMCArNjM0LDE1IEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCBpbml0aWFsaXplUlRDU3RhdHNSZXBvcnRCYWNraW5nTWFwKERP
TU1hcEFkYXB0ZXImIHJlcG9ydCwgY29uCiB2b2lkIExpYldlYlJUQ1N0YXRzQ29sbGVjdG9yOjpP
blN0YXRzRGVsaXZlcmVkKGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxjb25zdCB3ZWJydGM6OlJU
Q1N0YXRzUmVwb3J0PiYgcnRjUmVwb3J0KQogewogICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBydGM6OnNjb3BlZF9yZWZwdHI8TGliV2ViUlRDU3RhdHNDb2xsZWN0
b3I+KHRoaXMpLCBydGNSZXBvcnRdKCkgewotICAgICAgICBtX2NhbGxiYWNrKFJUQ1N0YXRzUmVw
b3J0OjpjcmVhdGUoW3J0Y1JlcG9ydF0oYXV0byYgbWFwQWRhcHRlcikgewotICAgICAgICAgICAg
aWYgKHJ0Y1JlcG9ydCkKLSAgICAgICAgICAgICAgICBpbml0aWFsaXplUlRDU3RhdHNSZXBvcnRC
YWNraW5nTWFwKG1hcEFkYXB0ZXIsICpydGNSZXBvcnQpOwotICAgICAgICB9KSk7CisgICAgICAg
IG1fY2FsbGJhY2socnRjUmVwb3J0KTsKKyAgICB9KTsKK30KKworUmVmPFJUQ1N0YXRzUmVwb3J0
PiBMaWJXZWJSVENTdGF0c0NvbGxlY3Rvcjo6Y3JlYXRlUmVwb3J0KGNvbnN0IHJ0Yzo6c2NvcGVk
X3JlZnB0cjxjb25zdCB3ZWJydGM6OlJUQ1N0YXRzUmVwb3J0PiYgcnRjUmVwb3J0KQoreworICAg
IHJldHVybiBSVENTdGF0c1JlcG9ydDo6Y3JlYXRlKFtydGNSZXBvcnRdKGF1dG8mIG1hcEFkYXB0
ZXIpIHsKKyAgICAgICAgaWYgKHJ0Y1JlcG9ydCkKKyAgICAgICAgICAgIGluaXRpYWxpemVSVENT
dGF0c1JlcG9ydEJhY2tpbmdNYXAobWFwQWRhcHRlciwgKnJ0Y1JlcG9ydCk7CiAgICAgfSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5oCmluZGV4IDc5M2Ex
ODFjMDMwZmY4MGQ4YjM0ZTQwMTFjODQ1NDIwZGQyYmZiMmQuLmE3OTAzMWUwMDEyNmE3N2EwMWMy
MGFkN2U2Y2ZkOGNhMDIyZjFhNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDU3RhdHND
b2xsZWN0b3IuaApAQCAtNDcsOSArNDcsMTEgQEAgdm9pZCBpbml0aWFsaXplUlRDU3RhdHNSZXBv
cnRCYWNraW5nTWFwKFJUQ1N0YXRzUmVwb3J0Jik7CiAKIGNsYXNzIExpYldlYlJUQ1N0YXRzQ29s
bGVjdG9yIDogcHVibGljIHdlYnJ0Yzo6UlRDU3RhdHNDb2xsZWN0b3JDYWxsYmFjayB7CiBwdWJs
aWM6Ci0gICAgdXNpbmcgQ29sbGVjdG9yQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZlB0cjxSVENTdGF0c1JlcG9ydD4mJik+OworICAgIHVzaW5nIENvbGxlY3RvckNhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8Y29uc3Qg
d2VicnRjOjpSVENTdGF0c1JlcG9ydD4mKT47CiAgICAgc3RhdGljIHJ0Yzo6c2NvcGVkX3JlZnB0
cjxMaWJXZWJSVENTdGF0c0NvbGxlY3Rvcj4gY3JlYXRlKENvbGxlY3RvckNhbGxiYWNrJiYgY2Fs
bGJhY2spIHsgcmV0dXJuIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8TGliV2ViUlRDU3RhdHND
b2xsZWN0b3I+KFdURk1vdmUoY2FsbGJhY2spKTsgfQogCisgICAgc3RhdGljIFJlZjxSVENTdGF0
c1JlcG9ydD4gY3JlYXRlUmVwb3J0KGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxjb25zdCB3ZWJy
dGM6OlJUQ1N0YXRzUmVwb3J0PiYpOworCiAgICAgZXhwbGljaXQgTGliV2ViUlRDU3RhdHNDb2xs
ZWN0b3IoQ29sbGVjdG9yQ2FsbGJhY2smJik7CiAgICAgfkxpYldlYlJUQ1N0YXRzQ29sbGVjdG9y
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAzZjhmYWVkYTIwZDM1
YmMxMjc4M2Q4NDBmZjQyODQ1NjgwM2QzOTI1Li42ZjE3MWU5MzcxMGQ0MDkzMDgwZDlhYzdhYzQ2
YTFkYjNiZDBlZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNjEz
LDYgKzE2MTMsMjIgQEAgdm9pZCBJbnRlcm5hbHM6OnNldFdlYlJUQ1ZQOVZUQlN1cHBvcnQoYm9v
bCB2YWx1ZSkKICNlbmRpZgogfQogCitib29sIEludGVybmFsczo6aXNTdXBwb3J0aW5nVlA5VlRC
KCkgY29uc3QKK3sKKyNpZiBVU0UoTElCV0VCUlRDKQorICAgIGlmIChhdXRvKiBwYWdlID0gY29u
dGV4dERvY3VtZW50KCktPnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuIHBhZ2UtPmxpYldlYlJUQ1By
b3ZpZGVyKCkuaXNTdXBwb3J0aW5nVlA5VlRCKCk7CisjZW5kaWYKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK3ZvaWQgSW50ZXJuYWxzOjppc1ZQOVZUQkRlY2NvZGVyVXNlZChSVENQZWVyQ29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgRE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xlYW4+JiYgcHJvbWlz
ZSkKK3sKKyAgICBjb25uZWN0aW9uLmdhdGhlckRlY29kZXJJbXBsZW1lbnRhdGlvbk5hbWUoW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShhdXRvJiYgbmFtZSkgbXV0YWJsZSB7CisgICAgICAg
IHByb21pc2UucmVzb2x2ZShuYW1lLmNvbnRhaW5zKCJWaWRlb1Rvb2xCb3giKSk7CisgICAgfSk7
Cit9CisKIHZvaWQgSW50ZXJuYWxzOjpzZXRTRnJhbWVDb3VudGVyKFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybSYgdHJhbnNmb3JtLCBjb25zdCBTdHJpbmcmIGNvdW50ZXIpCiB7CiAgICAgaWYgKGF1dG8g
dmFsdWUgPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KGNvdW50ZXIpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmgKaW5kZXggMmVlOWYxNWZjOWJjNTY4MWU3ZDA0YzQyMjYwMTJhODE4MDVhZDAx
Mi4uOTlhOTZjOWQ4NzM4MTFhZGE1NTY5NjNiNmRjNjhlMDEyMTk4MWMzNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCkBAIC02MzYsNiArNjM2LDkgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0V2ViUlRDSDI2NVN1cHBvcnQoYm9vbCk7CiAgICAgdm9pZCBzZXRXZWJSVENWUDlTdXBwb3J0
KGJvb2wgc3VwcG9ydFZQOVByb2ZpbGUwLCBib29sIHN1cHBvcnRWUDlQcm9maWxlMik7CiAgICAg
dm9pZCBzZXRXZWJSVENWUDlWVEJTdXBwb3J0KGJvb2wpOworICAgIGJvb2wgaXNTdXBwb3J0aW5n
VlA5VlRCKCkgY29uc3Q7CisgICAgdm9pZCBpc1ZQOVZUQkRlY2NvZGVyVXNlZChSVENQZWVyQ29u
bmVjdGlvbiYsIERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmKTsKKwogICAgIHZvaWQg
c2V0U0ZyYW1lQ291bnRlcihSVENSdHBTRnJhbWVUcmFuc2Zvcm0mLCBjb25zdCBTdHJpbmcmKTsK
ICAgICB1aW50NjRfdCBzZnJhbWVDb3VudGVyKGNvbnN0IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSYp
OwogICAgIHVpbnQ2NF90IHNmcmFtZUtleUlkKGNvbnN0IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDZiYjliNDZmNDk0M2M5OGFm
ZDM0ODA2N2M4ZTU1OThhNGE2YmUxNDQuLjNhYTU4YWExODkzMTdmMjMxYWFlNjU0NjllOTg4MmRh
NTUxY2RjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTg2OCw2ICs4
NjgsOCBAQCBlbnVtIEF1dG9wbGF5UG9saWN5IHsKICAgICBbQ29uZGl0aW9uYWw9V0VCX1JUQ10g
dW5kZWZpbmVkIHNldFdlYlJUQ0gyNjVTdXBwb3J0KGJvb2xlYW4gYWxsb3dlZCk7CiAgICAgW0Nv
bmRpdGlvbmFsPVdFQl9SVENdIHVuZGVmaW5lZCBzZXRXZWJSVENWUDlTdXBwb3J0KGJvb2xlYW4g
c3VwcG9ydFZQOVByb2ZpbGUwLCBib29sZWFuIHN1cHBvcnRWUDlQcm9maWxlMik7CiAgICAgW0Nv
bmRpdGlvbmFsPVdFQl9SVENdIHVuZGVmaW5lZCBzZXRXZWJSVENWUDlWVEJTdXBwb3J0KGJvb2xl
YW4gYWxsb3dlZCk7CisgICAgW0NvbmRpdGlvbmFsPVdFQl9SVENdIGJvb2xlYW4gaXNTdXBwb3J0
aW5nVlA5VlRCKCk7CisgICAgW0NvbmRpdGlvbmFsPVdFQl9SVENdIFByb21pc2U8Ym9vbGVhbj4g
aXNWUDlWVEJEZWNjb2RlclVzZWQoUlRDUGVlckNvbm5lY3Rpb24gY29ubmVjdGlvbik7CiAgICAg
W0NvbmRpdGlvbmFsPVdFQl9SVENdIHVuZGVmaW5lZCBzZXRTRnJhbWVDb3VudGVyKFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybSB0cmFuc2Zvcm0sIERPTVN0cmluZyBjb3VudGVyKTsKICAgICBbQ29uZGl0
aW9uYWw9V0VCX1JUQ10gdW5zaWduZWQgbG9uZyBsb25nIHNmcmFtZUNvdW50ZXIoUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtIHRyYW5zZm9ybSk7CiAgICAgW0NvbmRpdGlvbmFsPVdFQl9SVENdIHVuc2ln
bmVkIGxvbmcgbG9uZyBzZnJhbWVLZXlJZChSVENSdHBTRnJhbWVUcmFuc2Zvcm0gdHJhbnNmb3Jt
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCAxMThkMDY2ZTY3YTE2NDQ5M2U4Mjc4NWQ4YjBhNDUwYzg3ZWZmNTk1Li41MTg3
MTMwYjI4OGM0MDM3NGJmMDRjMTEyMjA2MzFiZGE3YjM0NTE5IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMjEtMTAtMTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAg
ICAgIFdlYlJUQyBwMnAgY2FsbCwgVlA5LVNWQyBvbmx5IGxvdyBsYXllciBkZWNvZGVkIG9uIHJl
Y2VpdmVyIHNpZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMTA3MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODM3NjMyOTE+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWJydGMvdnA5LXN2Yy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYnJ0Yy92cDktc3ZjLmh0bWw6IEFkZGVk
LgorCiAyMDIxLTEwLTA2ICBBbGljaWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbTVNFXVtHU3RyZWFtZXJdIEhvbm9yIE1QNCBlZGl0IGxpc3RzCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvdnA5LXN2Yy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy93ZWJydGMvdnA5LXN2Yy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjNmZjIyOGIwYzM5NjA3
MmM3Y2Y2ZjM0OGFjMThmNzgwMjM2NmU3YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYnJ0Yy92cDktc3ZjLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKworCitQQVNTIFVz
ZSBWUDkgd2l0aG91dCBTVkMKK1BBU1MgVXNlIFZQOSB3aXRoIFNWQworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJydGMvdnA5LXN2Yy5odG1sIGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZwOS1z
dmMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wYjBhNWJkMzdmNjI3MDRjYTM2YjkwMDg2YzkwODUxOTVjMDAx
M2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZwOS1zdmMuaHRtbApA
QCAtMCwwICsxLDg2IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAg
ICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgICAgIDx0aXRsZT5WUDkgU1ZDIGluIFdl
YlJUQzwvdGl0bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAg
ICAgIDx2aWRlbyBpZD0idmlkZW8iIGF1dG9wbGF5IHBsYXlzSW5saW5lIHdpZHRoPSIzMjAiIGhl
aWdodD0iMjQwIj48L3ZpZGVvPgorICAgICAgICA8c2NyaXB0IHNyYyA9InJvdXRpbmVzLmpzIj48
L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KK2Z1bmN0aW9uIGVuYWJsZVZQOVNWQyhzZHApCit7
CisgICAgY29uc3QgZmlyc3RTc3JjID0gc2RwLm1hdGNoKC9hPXNzcmM6KFxkKykvKTsKKyAgICBp
ZiAoZmlyc3RTc3JjICYmIGZpcnN0U3NyYy5sZW5ndGggPiAxKSB7CisgICAgICAgIGxldCBzaW1H
cm91cCA9ICdhPXNzcmMtZ3JvdXA6U0lNJzsKKyAgICAgICAgY29uc3Qgc3NyYyA9IGZpcnN0U3Ny
Y1sxXTsKKyAgICAgICAgc2ltR3JvdXAgKz0gYCAke3NzcmN9YDsKKyAgICAgICAgY29uc3Qgc3Ny
Y0xpbmVzVGVtcGxhdGUgPSBzZHAubWF0Y2gobmV3IFJlZ0V4cChgYT1zc3JjOiR7c3NyY30oLisp
YCwgJ2cnKSk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMiA7ICsraSkgeworICAgICAg
ICAgICAgY29uc3Qgc3NyYzEgPSAnJyArIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDB4ZmZm
ZmZmZmYpOworICAgICAgICAgICAgc2ltR3JvdXAgKz0gYCAke3NzcmMxfWA7CisgICAgICAgICAg
ICBzZHAgKz0gc3NyY0xpbmVzVGVtcGxhdGUuam9pbignXHJcbicpLnJlcGxhY2UobmV3IFJlZ0V4
cChgYT1zc3JjOiR7c3NyY30oLispYCwgJ2cnKSwgYGE9c3NyYzoke3NzcmMxfSQxYCkgKyAnXHJc
bic7CisgICAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBzZHAgKz0gYCR7c2ltR3JvdXB9
XHJcbmA7CisgICAgfQorICAgIHJldHVybiBzZHA7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHRlc3RW
UDlEZWNvZGVyKHVzZVZQOVNWQykKK3sKKyAgICBsZXQgcmVjZWl2aW5nQ29ubmVjdGlvbjsKKyAg
ICBjb25zdCBjb2RlY3MgPSBSVENSdHBTZW5kZXIuZ2V0Q2FwYWJpbGl0aWVzKCJ2aWRlbyIpLmNv
ZGVjczsKKyAgICBjb25zdCB2cDlDb2RlY3MgPSBjb2RlY3MuZmlsdGVyKGNvZGVjID0+IGNvZGVj
Lm1pbWVUeXBlID09PSAidmlkZW8vVlA5Iik7CisKKyAgICBpZiAoIXZwOUNvZGVjcy5sZW5ndGgp
CisgICAgICAgIHJldHVybjsKKworICAgIGNvbnN0IGxvY2FsU3RyZWFtID0gYXdhaXQgbmF2aWdh
dG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe3ZpZGVvOiB7d2lkdGg6IDEyODAsIGhlaWdo
dDogNzIwfX0pOworICAgIGNvbnN0IHJlbW90ZVN0cmVhbSA9IGF3YWl0IG5ldyBQcm9taXNlKChy
ZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgdHJhY2sgPSBsb2NhbFN0cmVhbS5nZXRWaWRl
b1RyYWNrcygpWzBdOworCisgICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChmaXJzdENvbm5lY3Rp
b24pID0+IHsKKyAgICAgICAgICAgIGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFjayh0cmFjaywgbG9j
YWxTdHJlYW0pOworICAgICAgICAgICAgY29uc3QgY29kZWNzID0gUlRDUnRwU2VuZGVyLmdldENh
cGFiaWxpdGllcygndmlkZW8nKS5jb2RlY3MuZmlsdGVyKGMgPT4gYy5taW1lVHlwZS5pbmNsdWRl
cygnVlA5JykpOworICAgICAgICAgICAgZmlyc3RDb25uZWN0aW9uLmdldFRyYW5zY2VpdmVycygp
WzBdLnNldENvZGVjUHJlZmVyZW5jZXMoY29kZWNzKTsKKyAgICAgICAgfSwgKHNlY29uZENvbm5l
Y3Rpb24pID0+IHsKKyAgICAgICAgICAgIHJlY2VpdmluZ0Nvbm5lY3Rpb24gPSBzZWNvbmRDb25u
ZWN0aW9uOworICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5vbnRyYWNrID0gKHRyYWNrRXZl
bnQpID0+IHsKKyAgICAgICAgICAgICAgICByZW1vdGVUcmFjayA9IHRyYWNrRXZlbnQudHJhY2s7
CisgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cmFja0V2ZW50LnN0cmVhbXNbMF0pOworICAgICAg
ICAgICAgfTsKKyAgICAgICAgfSwgeyBvYnNlcnZlT2ZmZXIgOiAob2ZmZXIpID0+IHsKKyAgICAg
ICAgICAgIGlmICh1c2VWUDlTVkMpCisgICAgICAgICAgICAgICAgb2ZmZXIuc2RwID0gZW5hYmxl
VlA5U1ZDKG9mZmVyLnNkcCk7CisgICAgICAgICAgICByZXR1cm4gb2ZmZXI7CisgICAgICAgIH0K
KyAgICAgICAgfSk7CisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0IHRpbWVk
IG91dCIpLCA1MDAwKTsKKyAgICB9KTsKKyAgICB2aWRlby5zcmNPYmplY3QgPSByZW1vdGVTdHJl
YW07CisgICAgYXdhaXQgdmlkZW8ucGxheSgpOworCisgICAgbGV0IGNvdW50ZXIgPSAwOworICAg
IHdoaWxlICh2aWRlby52aWRlb1dpZHRoICE9PSAxMjgwICYmICsrY291bnRlciA8IDEwMCkKKyAg
ICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgNTAp
KTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZGVvLnZpZGVvV2lkdGgsIDEyODApOworICAgIGFzc2Vy
dF9lcXVhbHModmlkZW8udmlkZW9IZWlnaHQsIDcyMCk7CisKKyAgICBpZiAoIXdpbmRvdy5pbnRl
cm5hbHMgfHwgIXdpbmRvdy5pbnRlcm5hbHMuaXNTdXBwb3J0aW5nVlA5VlRCKCkpCisgICAgICAg
IHJldHVybjsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGludGVybmFscy5pc1ZQOVZUQkRlY2Nv
ZGVyVXNlZChyZWNlaXZpbmdDb25uZWN0aW9uKSwgIXVzZVZQOVNWQyk7Cit9CisKK3Byb21pc2Vf
dGVzdChhc3luYyAoKSA9PiB7CisgICAgcmV0dXJuIHRlc3RWUDlEZWNvZGVyKGZhbHNlKTsgCit9
LCAiVXNlIFZQOSB3aXRob3V0IFNWQyIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4gewor
ICAgIHJldHVybiB0ZXN0VlA5RGVjb2Rlcih0cnVlKTsgCit9LCAiVXNlIFZQOSB3aXRoIFNWQyIp
OworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441200</attachid>
            <date>2021-10-14 03:57:08 -0700</date>
            <delta_ts>2021-10-20 00:17:22 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-231071-20211014125706.patch</filename>
            <type>text/plain</type>
            <size>22386</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCA2ZjRmZDM4NjdhMDAzYWQzMDUzY2E3ZTAwZTVmYjQyY2U5OTY5ODNiLi5kZDYy
MjhhNGYzY2ZlNzQ2OWQ2ZGVlYTRlOGU3Y2Q0OGViMWFiMjZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMC0xMyAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViUlRDIHAycCBjYWxsLCBWUDkt
U1ZDIG9ubHkgbG93IGxheWVyIGRlY29kZWQgb24gcmVjZWl2ZXIgc2lkZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMDcxCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS84Mzc2MzI5MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbiBjYXNlIFZQOSBTVkMgaXMgdXNlZCwgZmFsbGJhY2sgdG8gc29mdHdh
cmUgZGVjb2RlciBmb3Igbm93LgorCisgICAgICAgICogU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0
L1dlYktpdERlY29kZXIubW06CisKIDIwMjEtMTAtMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBEcm9wIHN1cHBvcnQgZm9yIG1hY09TIDwgMTAuMTUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAwZTJjM2QxNWQ3ZjliMGU3YzVmMGIwMjgwY2VlNjUyMjhmZGFmY2M0Li45ODZkY2Q0
OTQ5ZDA2MTNiYWQyN2UxYWMwZGVkNjY4NDEyNjAxNzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjggQEAKKzIwMjEtMTAtMTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisg
ICAgICAgIFdlYlJUQyBwMnAgY2FsbCwgVlA5LVNWQyBvbmx5IGxvdyBsYXllciBkZWNvZGVkIG9u
IHJlY2VpdmVyIHNpZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMTA3MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODM3NjMyOTE+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIEFkZCBJbnRlcm5hbHMgQVBJ
IHRvIGNoZWNrIHdoZXRoZXIgVlA5IFZUQiBpcyB1c2VkIG9yIG5vdC4KKworICAgICAgICBUZXN0
OiB3ZWJydGMvdnA5LXN2Yy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50Lmg6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDU3RhdHNDb2xsZWN0b3IuaDoKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMjEtMTAtMDYgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBodHRwczovL3czYy5naXRo
dWIuaW8vcHVzaC1hcGkvI3JlY2VpdmluZy1hLXB1c2gtbWVzc2FnZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRE
ZWNvZGVyLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L1dlYktpdC9XZWJLaXREZWNvZGVyLm1tCmluZGV4IGVjNWU4YjAxZmM5ZWMwZTM1MzAyMDE5MDgz
ODliMDdmOTY3OGM4NjMuLjg5ZDhjNDI4ZjIyMTRlMmNlMGI4YjFlNTRiNjExYTBiOGY3OGRkOGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9XZWJLaXQvV2ViS2l0RGVjb2Rlci5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXIubW0KQEAgLTMxLDYgKzMx
LDcgQEAKICNpbXBvcnQgIldlYktpdFV0aWxpdGllcy5oIgogI2ltcG9ydCAiYXBpL3ZpZGVvX2Nv
ZGVjcy92aWRlb19kZWNvZGVyLmgiCiAjaW1wb3J0ICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2Rl
Y29kZXJfZmFjdG9yeS5oIgorI2ltcG9ydCAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19kZWNvZGVy
X3NvZnR3YXJlX2ZhbGxiYWNrX3dyYXBwZXIuaCIKICNpbXBvcnQgIm1vZHVsZXMvdmlkZW9fY29k
aW5nL2NvZGVjcy9oMjY0L2luY2x1ZGUvaDI2NC5oIgogI2ltcG9ydCAibW9kdWxlcy92aWRlb19j
b2RpbmcvaW5jbHVkZS92aWRlb19lcnJvcl9jb2Rlcy5oIgogI2ltcG9ydCAic2RrL29iamMvY29t
cG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJIMjY0LmgiCkBAIC0xMjQsOSArMTI1
LDExIEBAIHByaXZhdGU6CiAKIGNsYXNzIFJlbW90ZVZpZGVvRGVjb2RlciBmaW5hbCA6IHB1Ymxp
YyB3ZWJydGM6OlZpZGVvRGVjb2RlciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgUmVtb3RlVmlk
ZW9EZWNvZGVyKFdlYktpdFZpZGVvRGVjb2Rlcik7CisgICAgUmVtb3RlVmlkZW9EZWNvZGVyKFdl
YktpdFZpZGVvRGVjb2RlciwgYm9vbCBpc1ZQOSk7CiAgICAgflJlbW90ZVZpZGVvRGVjb2Rlcigp
OwogCisgICAgYm9vbCBpc1ZQOSgpIGNvbnN0IHsgcmV0dXJuIG1faXNWUDk7IH0KKwogcHJpdmF0
ZToKICAgICBpbnQzMl90IEluaXREZWNvZGUoY29uc3QgVmlkZW9Db2RlYyosIGludDMyX3QgbnVt
YmVyX29mX2NvcmVzKSBmaW5hbDsKICAgICBpbnQzMl90IERlY29kZShjb25zdCBFbmNvZGVkSW1h
Z2UmLCBib29sIG1pc3NpbmdfZnJhbWVzLCBpbnQ2NF90IHJlbmRlcl90aW1lX21zKSBmaW5hbDsK
QEAgLTEzNSw2ICsxMzgsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIEltcGxlbWVudGF0
aW9uTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW1vdGVWaWRlb1Rvb2xCb3giOyB9CiAK
ICAgICBXZWJLaXRWaWRlb0RlY29kZXIgbV9pbnRlcm5hbERlY29kZXI7CisgICAgYm9vbCBtX2lz
VlA5IHsgZmFsc2UgfTsKIH07CiAKIHN0cnVjdCBWaWRlb0RlY29kZXJDYWxsYmFja3MgewpAQCAt
MTU4LDggKzE2Miw5IEBAIHZvaWQgc2V0VmlkZW9EZWNvZGVyQ2FsbGJhY2tzKFZpZGVvRGVjb2Rl
ckNyZWF0ZUNhbGxiYWNrIGNyZWF0ZUNhbGxiYWNrLCBWaWRlb0RlCiAgICAgY2FsbGJhY2tzLnJl
Z2lzdGVyRGVjb2RlQ29tcGxldGVDYWxsYmFjayA9IHJlZ2lzdGVyRGVjb2RlQ29tcGxldGVDYWxs
YmFjazsKIH0KIAotUmVtb3RlVmlkZW9EZWNvZGVyOjpSZW1vdGVWaWRlb0RlY29kZXIoV2ViS2l0
VmlkZW9EZWNvZGVyIGludGVybmFsRGVjb2RlcikKK1JlbW90ZVZpZGVvRGVjb2Rlcjo6UmVtb3Rl
VmlkZW9EZWNvZGVyKFdlYktpdFZpZGVvRGVjb2RlciBpbnRlcm5hbERlY29kZXIsIGJvb2wgaXNW
UDkpCiAgICAgOiBtX2ludGVybmFsRGVjb2RlcihpbnRlcm5hbERlY29kZXIpCisgICAgLCBtX2lz
VlA5KGlzVlA5KQogewogfQogCkBAIC0xOTMsNiArMTk4LDExIEBAIGludDMyX3QgUmVtb3RlVmlk
ZW9EZWNvZGVyOjpEZWNvZGUoY29uc3QgRW5jb2RlZEltYWdlJiBpbnB1dF9pbWFnZSwgYm9vbCBt
aXNzaW5nCiAgICAgICAgIGVuY29kZWRXaWR0aCA9IHJ0Yzo6ZGNoZWNrZWRfY2FzdDx1aW50MTZf
dD4oaW5wdXRfaW1hZ2UuX2VuY29kZWRXaWR0aCk7CiAgICAgICAgIGVuY29kZWRIZWlnaHQgPSBy
dGM6OmRjaGVja2VkX2Nhc3Q8dWludDE2X3Q+KGlucHV0X2ltYWdlLl9lbmNvZGVkSGVpZ2h0KTsK
ICAgICB9CisKKyAgICAvLyBWUDkgVlRCIGRvZXMgbm90IHN1cHBvcnQgU1ZDCisgICAgaWYgKG1f
aXNWUDkgJiYgaW5wdXRfaW1hZ2UuX2ZyYW1lVHlwZSA9PSBWaWRlb0ZyYW1lVHlwZTo6a1ZpZGVv
RnJhbWVLZXkgJiYgaW5wdXRfaW1hZ2UuU3BhdGlhbEluZGV4KCkgJiYgKmlucHV0X2ltYWdlLlNw
YXRpYWxJbmRleCgpID4gMCkKKyAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19GQUxM
QkFDS19TT0ZUV0FSRTsKKwogICAgIHJldHVybiB2aWRlb0RlY29kZXJDYWxsYmFja3MoKS5kZWNv
ZGVDYWxsYmFjayhtX2ludGVybmFsRGVjb2RlciwgaW5wdXRfaW1hZ2UuVGltZXN0YW1wKCksIGlu
cHV0X2ltYWdlLmRhdGEoKSwgaW5wdXRfaW1hZ2Uuc2l6ZSgpLCBlbmNvZGVkV2lkdGgsIGVuY29k
ZWRIZWlnaHQpOwogfQogCkBAIC0yMjYsNyArMjM2LDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxWaWRl
b0RlY29kZXI+IFJlbW90ZVZpZGVvRGVjb2RlckZhY3Rvcnk6OkNyZWF0ZVZpZGVvRGVjb2Rlcihj
b25zCiAgICAgaWYgKCFpZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gbV9pbnRlcm5hbEZhY3Rv
cnktPkNyZWF0ZVZpZGVvRGVjb2Rlcihmb3JtYXQpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UmVtb3RlVmlkZW9EZWNvZGVyPihpZGVudGlmaWVyKTsKKyAgICBhdXRvIGRlY29kZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZVZpZGVvRGVjb2Rlcj4oaWRlbnRpZmllciwgZm9ybWF0
Lm5hbWUgPT0gIlZQOSIpOworICAgIGlmICghZGVjb2Rlci0+aXNWUDkoKSkKKyAgICAgICAgcmV0
dXJuIGRlY29kZXI7CisgICAgcmV0dXJuIHdlYnJ0Yzo6Q3JlYXRlVmlkZW9EZWNvZGVyU29mdHdh
cmVGYWxsYmFja1dyYXBwZXIobV9pbnRlcm5hbEZhY3RvcnktPkNyZWF0ZVZpZGVvRGVjb2Rlcihm
b3JtYXQpLCBzdGQ6Om1vdmUoZGVjb2RlcikpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRj
OjpWaWRlb0RlY29kZXJGYWN0b3J5PiBjcmVhdGVXZWJLaXREZWNvZGVyRmFjdG9yeShXZWJLaXRI
MjY1IHN1cHBvcnRzSDI2NSwgV2ViS2l0VlA5IHN1cHBvcnRzVlA5LCBXZWJLaXRWUDlWVEIgc3Vw
cG9ydHNWUDlWVEIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCBmMDg2OTJiYmM4ZWNkMTQxNjRj
Y2ZiNDM5Zjc2MGQwMDgyOTZlMzA4Li41ZTljZjg0ODFlNTdlMjdlMjg3MjllMmYwMmJmYjA1MmUx
NjZjMmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKQEAgLTEwOSw2ICsxMDksNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHJlc3RhcnRJY2UoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHNl
dENvbmZpZ3VyYXRpb24oTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24mJikgPSAwOwogCisgICAg
dmlydHVhbCB2b2lkIGdhdGhlckRlY29kZXJJbXBsZW1lbnRhdGlvbk5hbWUoRnVuY3Rpb248dm9p
ZChTdHJpbmcmJik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U3RhdHMoUmVmPERlZmVy
cmVkUHJvbWlzZT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRTdGF0cyhSVENSdHBTZW5k
ZXImLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFN0
YXRzKFJUQ1J0cFJlY2VpdmVyJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJikgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLmNwcAppbmRleCAzYzc2YzU3YThiNzM1ZGIwZTViMTg4Y2YyZTQ2ZmNlMmY5YTllMzUxLi4y
ZGIyOTg4ZjhjMWNmNDEyOTI5ZjViZWU0MDhjMDY2Zjc1NDlkNGRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNw
cApAQCAtNTIzLDYgKzUyMywxMSBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpnZXRTdGF0cyhN
ZWRpYVN0cmVhbVRyYWNrKiBzZWxlY3RvciwgUmVmPERlZmVycmVkUHJvbWlzZQogICAgIG1fYmFj
a2VuZC0+Z2V0U3RhdHMoV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKK3ZvaWQgUlRDUGVlckNvbm5l
Y3Rpb246OmdhdGhlckRlY29kZXJJbXBsZW1lbnRhdGlvbk5hbWUoRnVuY3Rpb248dm9pZChTdHJp
bmcmJik+JiYgY2FsbGJhY2spCit7CisgICAgbV9iYWNrZW5kLT5nYXRoZXJEZWNvZGVySW1wbGVt
ZW50YXRpb25OYW1lKFdURk1vdmUoY2FsbGJhY2spKTsKK30KKwogRXhjZXB0aW9uT3I8UmVmPFJU
Q0RhdGFDaGFubmVsPj4gUlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZURhdGFDaGFubmVsKFN0cmlu
ZyYmIGxhYmVsLCBSVENEYXRhQ2hhbm5lbEluaXQmJiBvcHRpb25zKQogewogICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKaW5kZXggM2YxMWU0YzExMTEwMzhkNmU4N2Ix
ZGI1NTYyZDU0OTU3YWM2Y2UwZS4uMDBjZWYwYmU3OGIxNWU0ODUxNzM3N2I4ZmI1OGE2OTNjMDYy
ODU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24uaApAQCAtMTU5LDYgKzE1OSw4IEBAIHB1YmxpYzoKIAogICAgIC8v
IDguMiBTdGF0aXN0aWNzIEFQSQogICAgIHZvaWQgZ2V0U3RhdHMoTWVkaWFTdHJlYW1UcmFjayos
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOworICAgIC8vIFVzZWQgZm9yIHRlc3RpbmcKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGdhdGhlckRlY29kZXJJbXBsZW1lbnRhdGlvbk5hbWUoRnVuY3Rp
b248dm9pZChTdHJpbmcmJik+JiYpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKICAgICBFdmVudFRh
cmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENN
ZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCmluZGV4IDk1NzQ0NDQ2YTA4ZTk3YjJl
MjcyZDcwNTdhZWM0MTYzMjhlMzZjNWMuLjczODQ2NGUxZDI2YmVmZmNjN2RhYTZlOGQyYmVhNGFm
ZDkwYWUzOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3Bw
CkBAIC0yNTUsMTMgKzI1NSwzNyBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmRvQ3Jl
YXRlQW5zd2VyKCkKIAogcnRjOjpzY29wZWRfcmVmcHRyPExpYldlYlJUQ1N0YXRzQ29sbGVjdG9y
PiBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpjcmVhdGVTdGF0c0NvbGxlY3RvcihSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UpCiB7Ci0gICAgcmV0dXJuIExpYldlYlJUQ1N0YXRzQ29sbGVj
dG9yOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfV0oYXV0byYmIHJlcG9ydCkgbXV0YWJsZSB7CisgICAgcmV0dXJuIExpYldl
YlJUQ1N0YXRzQ29sbGVjdG9yOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYXV0byYmIHJ0Y1JlcG9ydCkgbXV0YWJsZSB7
CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIGlmIChwcm90ZWN0ZWRU
aGlzLT5pc1N0b3BwZWQoKSB8fCAhcmVwb3J0KQorICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+
aXNTdG9wcGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgcHJvbWlzZS0+cmVz
b2x2ZTxJRExJbnRlcmZhY2U8UlRDU3RhdHNSZXBvcnQ+PihyZXBvcnQucmVsZWFzZU5vbk51bGwo
KSk7CisgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPFJUQ1N0YXRzUmVwb3J0
Pj4oTGliV2ViUlRDU3RhdHNDb2xsZWN0b3I6OmNyZWF0ZVJlcG9ydChydGNSZXBvcnQpKTsKKyAg
ICB9KTsKK30KKwordm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpnYXRoZXJEZWNvZGVySW1w
bGVtZW50YXRpb25OYW1lKEZ1bmN0aW9uPHZvaWQoU3RyaW5nJiYpPiYmIGNhbGxiYWNrKQorewor
ICAgIGlmICghbV9iYWNrZW5kKSB7CisgICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgYXV0byBjb2xsZWN0b3IgPSBMaWJXZWJSVENTdGF0c0NvbGxlY3Rv
cjo6Y3JlYXRlKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgcnRjUmVwb3J0
KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgaWYg
KHJ0Y1JlcG9ydCkgeworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBydGNTdGF0cyA6ICpy
dGNSZXBvcnQpIHsKKyAgICAgICAgICAgICAgICBpZiAocnRjU3RhdHMudHlwZSgpID09IHdlYnJ0
Yzo6UlRDSW5ib3VuZFJUUFN0cmVhbVN0YXRzOjprVHlwZSkgeworICAgICAgICAgICAgICAgICAg
ICBhdXRvJiBpbmJvdW5kUlRQU3RhdHMgPSBzdGF0aWNfY2FzdDxjb25zdCB3ZWJydGM6OlJUQ0lu
Ym91bmRSVFBTdHJlYW1TdGF0cyY+KHJ0Y1N0YXRzKTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGluYm91bmRSVFBTdGF0cy5kZWNvZGVyX2ltcGxlbWVudGF0aW9uLmlzX2RlZmluZWQoKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZnJvbVN0ZFN0cmluZygqaW5ib3VuZFJU
UFN0YXRzLmRlY29kZXJfaW1wbGVtZW50YXRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYWxsYmFjayh7IH0pOwogICAgIH0pOworICAg
IG1fYmFja2VuZC0+R2V0U3RhdHMoV1RGTW92ZShjb2xsZWN0b3IpKTsKIH0KIAogdm9pZCBMaWJX
ZWJSVENNZWRpYUVuZHBvaW50OjpnZXRTdGF0cyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
c2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmgKaW5kZXggZjZmOTBm
NjI1MTM1ODU4NjNmNzc1N2Q2MGJhYzRmNTUyZmI1Mzg2MC4uYzRiOWNlNzEyMTk4MjM4ODNiMDQ0
MzBjZWI5ZWQ4MWU4ZjkwY2FjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5k
cG9pbnQuaApAQCAtODUsNiArODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkb1NldFJlbW90ZURl
c2NyaXB0aW9uKGNvbnN0IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYpOwogICAgIHZvaWQgZG9DcmVh
dGVPZmZlcihjb25zdCBSVENPZmZlck9wdGlvbnMmKTsKICAgICB2b2lkIGRvQ3JlYXRlQW5zd2Vy
KCk7CisgICAgdm9pZCBnYXRoZXJEZWNvZGVySW1wbGVtZW50YXRpb25OYW1lKEZ1bmN0aW9uPHZv
aWQoU3RyaW5nJiYpPiYmKTsKICAgICB2b2lkIGdldFN0YXRzKFJlZjxEZWZlcnJlZFByb21pc2U+
JiYpOwogICAgIHZvaWQgZ2V0U3RhdHMod2VicnRjOjpSdHBSZWNlaXZlckludGVyZmFjZSYsIFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYpOwogICAgIHZvaWQgZ2V0U3RhdHMod2VicnRjOjpSdHBTZW5k
ZXJJbnRlcmZhY2UmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IGQ4MDJiODAz
OWYyMTY0MGZlNWM0Y2YwZmZiNWUzZDM2ODM3YmQ3N2YuLjM5NDcyYmUyZjA4YWM2YTA2YTJhNGZl
ZTk5ODQ1NGZjZTZiYzk1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
UGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtMTk5LDYgKzE5OSwxMiBAQCBib29sIExpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0Q29uZmlndXJhdGlvbihNZWRpYUVuZHBvaW50
Q29uZmlndXJhdGlvbgogICAgIHJldHVybiBtX2VuZHBvaW50LT5zZXRDb25maWd1cmF0aW9uKHBh
Z2UtPmxpYldlYlJUQ1Byb3ZpZGVyKCksIGNvbmZpZ3VyYXRpb25Gcm9tTWVkaWFFbmRwb2ludENv
bmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSkpOwogfQogCit2b2lkIExpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Z2F0aGVyRGVjb2RlckltcGxlbWVudGF0aW9uTmFtZShG
dW5jdGlvbjx2b2lkKFN0cmluZyYmKT4mJiBjYWxsYmFjaykKK3sKKyAgICBtX2VuZHBvaW50LT5n
YXRoZXJEZWNvZGVySW1wbGVtZW50YXRpb25OYW1lKFdURk1vdmUoY2FsbGJhY2spKTsKKworfQor
CiB2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Z2V0U3RhdHMoUmVmPERlZmVy
cmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIG1fZW5kcG9pbnQtPmdldFN0YXRzKFdURk1v
dmUocHJvbWlzZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQuaAppbmRleCAzMTBiMGIwZmY5NWMyNmRjZTljYjQ5Nzc2NWU5M2M4NmZhNzY3
YjlmLi4zNjU3MmYwZWQ5ODBmNzRkYTAxNzE0NThhMDE1YTk4YTlkNWM3MzI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaApAQCAtNjcs
NiArNjcsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhh
bmRsZXI+IGNyZWF0ZURhdGFDaGFubmVsSGFuZGxlcihjb25zdCBTdHJpbmcmLCBjb25zdCBSVENE
YXRhQ2hhbm5lbEluaXQmKSBmaW5hbDsKICAgICB2b2lkIHJlc3RhcnRJY2UoKSBmaW5hbDsKICAg
ICBib29sIHNldENvbmZpZ3VyYXRpb24oTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24mJikgZmlu
YWw7CisgICAgdm9pZCBnYXRoZXJEZWNvZGVySW1wbGVtZW50YXRpb25OYW1lKEZ1bmN0aW9uPHZv
aWQoU3RyaW5nJiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIGdldFN0YXRzKFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYpIGZpbmFsOwogICAgIHZvaWQgZ2V0U3RhdHMoUlRDUnRwU2VuZGVyJiwgUmVmPERl
ZmVycmVkUHJvbWlzZT4mJikgZmluYWw7CiAgICAgdm9pZCBnZXRTdGF0cyhSVENSdHBSZWNlaXZl
ciYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDU3RhdHNDb2xsZWN0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDU3RhdHNDb2xsZWN0b3IuY3BwCmluZGV4IGMzNjI2Y2E0MmE1YzNkYjJlYjFmZTJhNTU2
ZGQwYjNkYjI4ODkyNTIuLjQ4MDUwM2ExYjY4YzZkN2Y0ZDEwZmE4NjAzZGExZTJkYmVmZmQ4ZDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5jcHAKQEAgLTYz
NCwxMCArNjM0LDE1IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbml0aWFsaXplUlRDU3RhdHNSZXBv
cnRCYWNraW5nTWFwKERPTU1hcEFkYXB0ZXImIHJlcG9ydCwgY29uCiB2b2lkIExpYldlYlJUQ1N0
YXRzQ29sbGVjdG9yOjpPblN0YXRzRGVsaXZlcmVkKGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxj
b25zdCB3ZWJydGM6OlJUQ1N0YXRzUmVwb3J0PiYgcnRjUmVwb3J0KQogewogICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBydGM6OnNjb3BlZF9yZWZwdHI8TGliV2Vi
UlRDU3RhdHNDb2xsZWN0b3I+KHRoaXMpLCBydGNSZXBvcnRdKCkgewotICAgICAgICBtX2NhbGxi
YWNrKFJUQ1N0YXRzUmVwb3J0OjpjcmVhdGUoW3J0Y1JlcG9ydF0oYXV0byYgbWFwQWRhcHRlcikg
ewotICAgICAgICAgICAgaWYgKHJ0Y1JlcG9ydCkKLSAgICAgICAgICAgICAgICBpbml0aWFsaXpl
UlRDU3RhdHNSZXBvcnRCYWNraW5nTWFwKG1hcEFkYXB0ZXIsICpydGNSZXBvcnQpOwotICAgICAg
ICB9KSk7CisgICAgICAgIG1fY2FsbGJhY2socnRjUmVwb3J0KTsKKyAgICB9KTsKK30KKworUmVm
PFJUQ1N0YXRzUmVwb3J0PiBMaWJXZWJSVENTdGF0c0NvbGxlY3Rvcjo6Y3JlYXRlUmVwb3J0KGNv
bnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxjb25zdCB3ZWJydGM6OlJUQ1N0YXRzUmVwb3J0PiYgcnRj
UmVwb3J0KQoreworICAgIHJldHVybiBSVENTdGF0c1JlcG9ydDo6Y3JlYXRlKFtydGNSZXBvcnRd
KGF1dG8mIG1hcEFkYXB0ZXIpIHsKKyAgICAgICAgaWYgKHJ0Y1JlcG9ydCkKKyAgICAgICAgICAg
IGluaXRpYWxpemVSVENTdGF0c1JlcG9ydEJhY2tpbmdNYXAobWFwQWRhcHRlciwgKnJ0Y1JlcG9y
dCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENTdGF0c0NvbGxlY3Rv
ci5oCmluZGV4IDc5M2ExODFjMDMwZmY4MGQ4YjM0ZTQwMTFjODQ1NDIwZGQyYmZiMmQuLmE3OTAz
MWUwMDEyNmE3N2EwMWMyMGFkN2U2Y2ZkOGNhMDIyZjFhNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1N0YXRzQ29sbGVj
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDU3RhdHNDb2xsZWN0b3IuaApAQCAtNDcsOSArNDcsMTEgQEAgdm9pZCBpbml0aWFs
aXplUlRDU3RhdHNSZXBvcnRCYWNraW5nTWFwKFJUQ1N0YXRzUmVwb3J0Jik7CiAKIGNsYXNzIExp
YldlYlJUQ1N0YXRzQ29sbGVjdG9yIDogcHVibGljIHdlYnJ0Yzo6UlRDU3RhdHNDb2xsZWN0b3JD
YWxsYmFjayB7CiBwdWJsaWM6Ci0gICAgdXNpbmcgQ29sbGVjdG9yQ2FsbGJhY2sgPSBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxSVENTdGF0c1JlcG9ydD4mJik+OworICAgIHVzaW5nIENv
bGxlY3RvckNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBydGM6OnNjb3Bl
ZF9yZWZwdHI8Y29uc3Qgd2VicnRjOjpSVENTdGF0c1JlcG9ydD4mKT47CiAgICAgc3RhdGljIHJ0
Yzo6c2NvcGVkX3JlZnB0cjxMaWJXZWJSVENTdGF0c0NvbGxlY3Rvcj4gY3JlYXRlKENvbGxlY3Rv
ckNhbGxiYWNrJiYgY2FsbGJhY2spIHsgcmV0dXJuIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8
TGliV2ViUlRDU3RhdHNDb2xsZWN0b3I+KFdURk1vdmUoY2FsbGJhY2spKTsgfQogCisgICAgc3Rh
dGljIFJlZjxSVENTdGF0c1JlcG9ydD4gY3JlYXRlUmVwb3J0KGNvbnN0IHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxjb25zdCB3ZWJydGM6OlJUQ1N0YXRzUmVwb3J0PiYpOworCiAgICAgZXhwbGljaXQgTGli
V2ViUlRDU3RhdHNDb2xsZWN0b3IoQ29sbGVjdG9yQ2FsbGJhY2smJik7CiAgICAgfkxpYldlYlJU
Q1N0YXRzQ29sbGVjdG9yKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRl
eCAzZjhmYWVkYTIwZDM1YmMxMjc4M2Q4NDBmZjQyODQ1NjgwM2QzOTI1Li42ZjE3MWU5MzcxMGQ0
MDkzMDgwZDlhYzdhYzQ2YTFkYjNiZDBlZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCkBAIC0xNjEzLDYgKzE2MTMsMjIgQEAgdm9pZCBJbnRlcm5hbHM6OnNldFdlYlJUQ1ZQ
OVZUQlN1cHBvcnQoYm9vbCB2YWx1ZSkKICNlbmRpZgogfQogCitib29sIEludGVybmFsczo6aXNT
dXBwb3J0aW5nVlA5VlRCKCkgY29uc3QKK3sKKyNpZiBVU0UoTElCV0VCUlRDKQorICAgIGlmIChh
dXRvKiBwYWdlID0gY29udGV4dERvY3VtZW50KCktPnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuIHBh
Z2UtPmxpYldlYlJUQ1Byb3ZpZGVyKCkuaXNTdXBwb3J0aW5nVlA5VlRCKCk7CisjZW5kaWYKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgSW50ZXJuYWxzOjppc1ZQOVZUQkRlY2NvZGVyVXNl
ZChSVENQZWVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRE9NUHJvbWlzZURlZmVycmVkPElETEJv
b2xlYW4+JiYgcHJvbWlzZSkKK3sKKyAgICBjb25uZWN0aW9uLmdhdGhlckRlY29kZXJJbXBsZW1l
bnRhdGlvbk5hbWUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShhdXRvJiYgbmFtZSkgbXV0
YWJsZSB7CisgICAgICAgIHByb21pc2UucmVzb2x2ZShuYW1lLmNvbnRhaW5zKCJWaWRlb1Rvb2xC
b3giKSk7CisgICAgfSk7Cit9CisKIHZvaWQgSW50ZXJuYWxzOjpzZXRTRnJhbWVDb3VudGVyKFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBTdHJpbmcmIGNvdW50ZXIpCiB7
CiAgICAgaWYgKGF1dG8gdmFsdWUgPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KGNvdW50ZXIpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggMmVlOWYxNWZjOWJjNTY4MWU3ZDA0YzQy
MjYwMTJhODE4MDVhZDAxMi4uOTlhOTZjOWQ4NzM4MTFhZGE1NTY5NjNiNmRjNjhlMDEyMTk4MWMz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC02MzYsNiArNjM2LDkgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0V2ViUlRDSDI2NVN1cHBvcnQoYm9vbCk7CiAgICAgdm9pZCBzZXRX
ZWJSVENWUDlTdXBwb3J0KGJvb2wgc3VwcG9ydFZQOVByb2ZpbGUwLCBib29sIHN1cHBvcnRWUDlQ
cm9maWxlMik7CiAgICAgdm9pZCBzZXRXZWJSVENWUDlWVEJTdXBwb3J0KGJvb2wpOworICAgIGJv
b2wgaXNTdXBwb3J0aW5nVlA5VlRCKCkgY29uc3Q7CisgICAgdm9pZCBpc1ZQOVZUQkRlY2NvZGVy
VXNlZChSVENQZWVyQ29ubmVjdGlvbiYsIERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYm
KTsKKwogICAgIHZvaWQgc2V0U0ZyYW1lQ291bnRlcihSVENSdHBTRnJhbWVUcmFuc2Zvcm0mLCBj
b25zdCBTdHJpbmcmKTsKICAgICB1aW50NjRfdCBzZnJhbWVDb3VudGVyKGNvbnN0IFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybSYpOwogICAgIHVpbnQ2NF90IHNmcmFtZUtleUlkKGNvbnN0IFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDZi
YjliNDZmNDk0M2M5OGFmZDM0ODA2N2M4ZTU1OThhNGE2YmUxNDQuLjNhYTU4YWExODkzMTdmMjMx
YWFlNjU0NjllOTg4MmRhNTUxY2RjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKQEAgLTg2OCw2ICs4NjgsOCBAQCBlbnVtIEF1dG9wbGF5UG9saWN5IHsKICAgICBbQ29uZGl0
aW9uYWw9V0VCX1JUQ10gdW5kZWZpbmVkIHNldFdlYlJUQ0gyNjVTdXBwb3J0KGJvb2xlYW4gYWxs
b3dlZCk7CiAgICAgW0NvbmRpdGlvbmFsPVdFQl9SVENdIHVuZGVmaW5lZCBzZXRXZWJSVENWUDlT
dXBwb3J0KGJvb2xlYW4gc3VwcG9ydFZQOVByb2ZpbGUwLCBib29sZWFuIHN1cHBvcnRWUDlQcm9m
aWxlMik7CiAgICAgW0NvbmRpdGlvbmFsPVdFQl9SVENdIHVuZGVmaW5lZCBzZXRXZWJSVENWUDlW
VEJTdXBwb3J0KGJvb2xlYW4gYWxsb3dlZCk7CisgICAgW0NvbmRpdGlvbmFsPVdFQl9SVENdIGJv
b2xlYW4gaXNTdXBwb3J0aW5nVlA5VlRCKCk7CisgICAgW0NvbmRpdGlvbmFsPVdFQl9SVENdIFBy
b21pc2U8Ym9vbGVhbj4gaXNWUDlWVEJEZWNjb2RlclVzZWQoUlRDUGVlckNvbm5lY3Rpb24gY29u
bmVjdGlvbik7CiAgICAgW0NvbmRpdGlvbmFsPVdFQl9SVENdIHVuZGVmaW5lZCBzZXRTRnJhbWVD
b3VudGVyKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSB0cmFuc2Zvcm0sIERPTVN0cmluZyBjb3VudGVy
KTsKICAgICBbQ29uZGl0aW9uYWw9V0VCX1JUQ10gdW5zaWduZWQgbG9uZyBsb25nIHNmcmFtZUNv
dW50ZXIoUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIHRyYW5zZm9ybSk7CiAgICAgW0NvbmRpdGlvbmFs
PVdFQl9SVENdIHVuc2lnbmVkIGxvbmcgbG9uZyBzZnJhbWVLZXlJZChSVENSdHBTRnJhbWVUcmFu
c2Zvcm0gdHJhbnNmb3JtKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxMThkMDY2ZTY3YTE2NDQ5M2U4Mjc4NWQ4YjBhNDUw
Yzg3ZWZmNTk1Li5lYzBjNDFmZDYwZDc0YjIwOTQ3MjdlNTBmMThhN2M5MDM3ZmY5MmFkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTAtMTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgorCisgICAgICAgIFdlYlJUQyBwMnAgY2FsbCwgVlA5LVNWQyBvbmx5IGxvdyBsYXll
ciBkZWNvZGVkIG9uIHJlY2VpdmVyIHNpZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMTA3MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODM3NjMy
OTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICogd2Vi
cnRjL3ZwOS1zdmMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJydGMvdnA5LXN2
Yy5odG1sOiBBZGRlZC4KKwogMjAyMS0xMC0wNiAgQWxpY2lhIEJveWEgR2FyY8OtYSAgPGFib3lh
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW01TRV1bR1N0cmVhbWVyXSBIb25vciBNUDQgZWRpdCBs
aXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL3ZwOS1zdmMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZwOS1zdmMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIz
ZmYyMjhiMGMzOTYwNzJjN2NmNmYzNDhhYzE4Zjc4MDIzNjZlN2EKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJydGMvdnA5LXN2Yy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBA
CisKKworUEFTUyBVc2UgVlA5IHdpdGhvdXQgU1ZDCitQQVNTIFVzZSBWUDkgd2l0aCBTVkMKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL3ZwOS1zdmMuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYnJ0Yy92cDktc3ZjLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2YyY2Y2ODUzZTZlMmU2MzNkYzM5OTcw
MmE2ZTM3YjhkNmViMzE1YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy92
cDktc3ZjLmh0bWwKQEAgLTAsMCArMSw4NSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKyAg
ICA8aGVhZD4KKyAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgICAgICA8dGl0bGU+
VlA5IFNWQyBpbiBXZWJSVEM8L3RpdGxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5PgorICAgICAgICA8dmlkZW8gaWQ9InZpZGVvIiBhdXRvcGxheSBwbGF5c0lubGluZSB3
aWR0aD0iMzIwIiBoZWlnaHQ9IjI0MCI+PC92aWRlbz4KKyAgICAgICAgPHNjcmlwdCBzcmMgPSJy
b3V0aW5lcy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CitmdW5jdGlvbiBlbmFibGVW
UDlTVkMoc2RwKQoreworICAgIGNvbnN0IGZpcnN0U3NyYyA9IHNkcC5tYXRjaCgvYT1zc3JjOihc
ZCspLyk7CisgICAgaWYgKGZpcnN0U3NyYyAmJiBmaXJzdFNzcmMubGVuZ3RoID4gMSkgeworICAg
ICAgICBsZXQgc2ltR3JvdXAgPSAnYT1zc3JjLWdyb3VwOlNJTSc7CisgICAgICAgIGNvbnN0IHNz
cmMgPSBmaXJzdFNzcmNbMV07CisgICAgICAgIHNpbUdyb3VwICs9IGAgJHtzc3JjfWA7CisgICAg
ICAgIGNvbnN0IHNzcmNMaW5lc1RlbXBsYXRlID0gc2RwLm1hdGNoKG5ldyBSZWdFeHAoYGE9c3Ny
Yzoke3NzcmN9KC4rKWAsICdnJykpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDIgOyAr
K2kpIHsKKyAgICAgICAgICAgIGNvbnN0IHNzcmMxID0gJycgKyBNYXRoLmZsb29yKE1hdGgucmFu
ZG9tKCkgKiAweGZmZmZmZmZmKTsKKyAgICAgICAgICAgIHNpbUdyb3VwICs9IGAgJHtzc3JjMX1g
OworICAgICAgICAgICAgc2RwICs9IHNzcmNMaW5lc1RlbXBsYXRlLmpvaW4oJ1xyXG4nKS5yZXBs
YWNlKG5ldyBSZWdFeHAoYGE9c3NyYzoke3NzcmN9KC4rKWAsICdnJyksIGBhPXNzcmM6JHtzc3Jj
MX0kMWApICsgJ1xyXG4nOworICAgICAgICB9CisgICAgICAgIHNkcCArPSBgJHtzaW1Hcm91cH1c
clxuYDsKKyAgICB9CisgICAgcmV0dXJuIHNkcDsKK30KKworYXN5bmMgZnVuY3Rpb24gdGVzdFZQ
OURlY29kZXIodXNlVlA5U1ZDKQoreworICAgIGxldCByZWNlaXZpbmdDb25uZWN0aW9uOworICAg
IGNvbnN0IGNvZGVjcyA9IFJUQ1J0cFNlbmRlci5nZXRDYXBhYmlsaXRpZXMoInZpZGVvIikuY29k
ZWNzOworICAgIGNvbnN0IHZwOUNvZGVjcyA9IGNvZGVjcy5maWx0ZXIoY29kZWMgPT4gY29kZWMu
bWltZVR5cGUgPT09ICJ2aWRlby9WUDkiKTsKKworICAgIGlmICghdnA5Q29kZWNzLmxlbmd0aCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3QgbG9jYWxTdHJlYW0gPSBhd2FpdCBuYXZpZ2F0
b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7dmlkZW86IHt3aWR0aDogMTI4MCwgaGVpZ2h0
OiA3MjB9fSk7CisgICAgY29uc3QgcmVtb3RlU3RyZWFtID0gYXdhaXQgbmV3IFByb21pc2UoKHJl
c29sdmUsIHJlamVjdCkgPT4geworICAgICAgICB0cmFjayA9IGxvY2FsU3RyZWFtLmdldFZpZGVv
VHJhY2tzKClbMF07CisKKyAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29ubmVjdGlv
bikgPT4geworICAgICAgICAgICAgZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNrKHRyYWNrLCBsb2Nh
bFN0cmVhbSk7CisgICAgICAgICAgICBjb25zdCBjb2RlY3MgPSBSVENSdHBTZW5kZXIuZ2V0Q2Fw
YWJpbGl0aWVzKCd2aWRlbycpLmNvZGVjcy5maWx0ZXIoYyA9PiBjLm1pbWVUeXBlLmluY2x1ZGVz
KCdWUDknKSk7CisgICAgICAgICAgICBmaXJzdENvbm5lY3Rpb24uZ2V0VHJhbnNjZWl2ZXJzKClb
MF0uc2V0Q29kZWNQcmVmZXJlbmNlcyhjb2RlY3MpOworICAgICAgICB9LCAoc2Vjb25kQ29ubmVj
dGlvbikgPT4geworICAgICAgICAgICAgcmVjZWl2aW5nQ29ubmVjdGlvbiA9IHNlY29uZENvbm5l
Y3Rpb247CisgICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAodHJhY2tFdmVu
dCkgPT4geworICAgICAgICAgICAgICAgIHJlbW90ZVRyYWNrID0gdHJhY2tFdmVudC50cmFjazsK
KyAgICAgICAgICAgICAgICByZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7CisgICAgICAg
ICAgICB9OworICAgICAgICB9LCB7IG9ic2VydmVPZmZlciA6IChvZmZlcikgPT4geworICAgICAg
ICAgICAgaWYgKHVzZVZQOVNWQykKKyAgICAgICAgICAgICAgICBvZmZlci5zZHAgPSBlbmFibGVW
UDlTVkMob2ZmZXIuc2RwKTsKKyAgICAgICAgICAgIHJldHVybiBvZmZlcjsKKyAgICAgICAgfQor
ICAgICAgICB9KTsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQg
b3V0IiksIDUwMDApOworICAgIH0pOworICAgIHZpZGVvLnNyY09iamVjdCA9IHJlbW90ZVN0cmVh
bTsKKyAgICBhd2FpdCB2aWRlby5wbGF5KCk7CisKKyAgICBsZXQgY291bnRlciA9IDA7CisgICAg
d2hpbGUgKHZpZGVvLnZpZGVvV2lkdGggIT09IDEyODAgJiYgKytjb3VudGVyIDwgMTAwKQorICAg
ICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCA1MCkp
OworICAgIGFzc2VydF9lcXVhbHModmlkZW8udmlkZW9XaWR0aCwgMTI4MCk7CisgICAgYXNzZXJ0
X2VxdWFscyh2aWRlby52aWRlb0hlaWdodCwgNzIwKTsKKworICAgIGlmICghd2luZG93LmludGVy
bmFscyB8fCAhd2luZG93LmludGVybmFscy5pc1N1cHBvcnRpbmdWUDlWVEIoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgaW50ZXJuYWxzLmlzVlA5VlRCRGVjY29k
ZXJVc2VkKHJlY2VpdmluZ0Nvbm5lY3Rpb24pLCAhdXNlVlA5U1ZDKTsKK30KKworcHJvbWlzZV90
ZXN0KGFzeW5jICgpID0+IHsKKyAgICByZXR1cm4gdGVzdFZQOURlY29kZXIoZmFsc2UpOyAKK30s
ICJVc2UgVlA5IHdpdGhvdXQgU1ZDIik7CisKK3Byb21pc2VfdGVzdChhc3luYyAoKSA9PiB7Cisg
ICAgcmV0dXJuIHRlc3RWUDlEZWNvZGVyKHRydWUpOyAKK30sICJVc2UgVlA5IHdpdGggU1ZDIik7
CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441854</attachid>
            <date>2021-10-20 00:17:27 -0700</date>
            <delta_ts>2021-10-20 01:13:36 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-231071-20211020091725.patch</filename>
            <type>text/plain</type>
            <size>22458</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCAwMDFjNjgyZjg4ZjllNzAzMzBkOWU5M2NlZjE5MjUwZDEyYTY2NDNkLi5mYzZh
ODQ5ZGE4MzQxNTc1NDRkOTEzZjA3YjNkYTNmOWQyMzNhOGI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMC0yMCAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViUlRDIHAycCBjYWxsLCBWUDkt
U1ZDIG9ubHkgbG93IGxheWVyIGRlY29kZWQgb24gcmVjZWl2ZXIgc2lkZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMDcxCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS84Mzc2MzI5MT4KKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24u
CisKKyAgICAgICAgSW4gY2FzZSBWUDkgU1ZDIGlzIHVzZWQsIGZhbGxiYWNrIHRvIHNvZnR3YXJl
IGRlY29kZXIgZm9yIG5vdy4KKworICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9X
ZWJLaXREZWNvZGVyLm1tOgorCiAyMDIxLTEwLTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IHVwIHIyODQxOTAgYnVpbGQgZml4Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDU3MWYyMjkwZjVjYjUyNjI5YmQ0OGExODBlNmM3MjkzOTU5MDhmYzUuLjJi
MjMwMDI5YTY0ZGIxOWRkMDFiNmI2Mjk4NDRkZTBmMTM4MjI0YTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAyMS0xMC0yMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViUlRDIHAycCBjYWxsLCBWUDktU1ZDIG9ubHkgbG93IGxheWVyIGRlY29k
ZWQgb24gcmVjZWl2ZXIgc2lkZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMxMDcxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84Mzc2MzI5MT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgQWRkIEludGVybmFs
cyBBUEkgdG8gY2hlY2sgd2hldGhlciBWUDkgVlRCIGlzIHVzZWQgb3Igbm90LgorCisgICAgICAg
IFRlc3Q6IHdlYnJ0Yy92cDktc3ZjLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaDoKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQu
Y3BwOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5oOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgor
ICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAyMS0xMC0xOSAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHJlcXVl
c3RWaWRlb0ZyYW1lQ2FsbGJhY2sgQVBJIGFuZCBNZWRpYVN0cmVhbVRyYWNrLWJhc2VkIGJhY2tl
bmQgc3VwcG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXREZWNvZGVyLm1tIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXREZWNvZGVyLm1tCmluZGV4
IGVjNWU4YjAxZmM5ZWMwZTM1MzAyMDE5MDgzODliMDdmOTY3OGM4NjMuLjg5ZDhjNDI4ZjIyMTRl
MmNlMGI4YjFlNTRiNjExYTBiOGY3OGRkOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2Rlci5tbQorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dl
YktpdERlY29kZXIubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIldlYktpdFV0aWxpdGll
cy5oIgogI2ltcG9ydCAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19kZWNvZGVyLmgiCiAjaW1wb3J0
ICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgorI2ltcG9ydCAiYXBp
L3ZpZGVvX2NvZGVjcy92aWRlb19kZWNvZGVyX3NvZnR3YXJlX2ZhbGxiYWNrX3dyYXBwZXIuaCIK
ICNpbXBvcnQgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L2luY2x1ZGUvaDI2NC5o
IgogI2ltcG9ydCAibW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRlb19lcnJvcl9jb2Rl
cy5oIgogI2ltcG9ydCAic2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0Rl
Y29kZXJIMjY0LmgiCkBAIC0xMjQsOSArMTI1LDExIEBAIHByaXZhdGU6CiAKIGNsYXNzIFJlbW90
ZVZpZGVvRGVjb2RlciBmaW5hbCA6IHB1YmxpYyB3ZWJydGM6OlZpZGVvRGVjb2RlciB7CiBwdWJs
aWM6Ci0gICAgZXhwbGljaXQgUmVtb3RlVmlkZW9EZWNvZGVyKFdlYktpdFZpZGVvRGVjb2Rlcik7
CisgICAgUmVtb3RlVmlkZW9EZWNvZGVyKFdlYktpdFZpZGVvRGVjb2RlciwgYm9vbCBpc1ZQOSk7
CiAgICAgflJlbW90ZVZpZGVvRGVjb2RlcigpOwogCisgICAgYm9vbCBpc1ZQOSgpIGNvbnN0IHsg
cmV0dXJuIG1faXNWUDk7IH0KKwogcHJpdmF0ZToKICAgICBpbnQzMl90IEluaXREZWNvZGUoY29u
c3QgVmlkZW9Db2RlYyosIGludDMyX3QgbnVtYmVyX29mX2NvcmVzKSBmaW5hbDsKICAgICBpbnQz
Ml90IERlY29kZShjb25zdCBFbmNvZGVkSW1hZ2UmLCBib29sIG1pc3NpbmdfZnJhbWVzLCBpbnQ2
NF90IHJlbmRlcl90aW1lX21zKSBmaW5hbDsKQEAgLTEzNSw2ICsxMzgsNyBAQCBwcml2YXRlOgog
ICAgIGNvbnN0IGNoYXIqIEltcGxlbWVudGF0aW9uTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
ICJSZW1vdGVWaWRlb1Rvb2xCb3giOyB9CiAKICAgICBXZWJLaXRWaWRlb0RlY29kZXIgbV9pbnRl
cm5hbERlY29kZXI7CisgICAgYm9vbCBtX2lzVlA5IHsgZmFsc2UgfTsKIH07CiAKIHN0cnVjdCBW
aWRlb0RlY29kZXJDYWxsYmFja3MgewpAQCAtMTU4LDggKzE2Miw5IEBAIHZvaWQgc2V0VmlkZW9E
ZWNvZGVyQ2FsbGJhY2tzKFZpZGVvRGVjb2RlckNyZWF0ZUNhbGxiYWNrIGNyZWF0ZUNhbGxiYWNr
LCBWaWRlb0RlCiAgICAgY2FsbGJhY2tzLnJlZ2lzdGVyRGVjb2RlQ29tcGxldGVDYWxsYmFjayA9
IHJlZ2lzdGVyRGVjb2RlQ29tcGxldGVDYWxsYmFjazsKIH0KIAotUmVtb3RlVmlkZW9EZWNvZGVy
OjpSZW1vdGVWaWRlb0RlY29kZXIoV2ViS2l0VmlkZW9EZWNvZGVyIGludGVybmFsRGVjb2RlcikK
K1JlbW90ZVZpZGVvRGVjb2Rlcjo6UmVtb3RlVmlkZW9EZWNvZGVyKFdlYktpdFZpZGVvRGVjb2Rl
ciBpbnRlcm5hbERlY29kZXIsIGJvb2wgaXNWUDkpCiAgICAgOiBtX2ludGVybmFsRGVjb2Rlcihp
bnRlcm5hbERlY29kZXIpCisgICAgLCBtX2lzVlA5KGlzVlA5KQogewogfQogCkBAIC0xOTMsNiAr
MTk4LDExIEBAIGludDMyX3QgUmVtb3RlVmlkZW9EZWNvZGVyOjpEZWNvZGUoY29uc3QgRW5jb2Rl
ZEltYWdlJiBpbnB1dF9pbWFnZSwgYm9vbCBtaXNzaW5nCiAgICAgICAgIGVuY29kZWRXaWR0aCA9
IHJ0Yzo6ZGNoZWNrZWRfY2FzdDx1aW50MTZfdD4oaW5wdXRfaW1hZ2UuX2VuY29kZWRXaWR0aCk7
CiAgICAgICAgIGVuY29kZWRIZWlnaHQgPSBydGM6OmRjaGVja2VkX2Nhc3Q8dWludDE2X3Q+KGlu
cHV0X2ltYWdlLl9lbmNvZGVkSGVpZ2h0KTsKICAgICB9CisKKyAgICAvLyBWUDkgVlRCIGRvZXMg
bm90IHN1cHBvcnQgU1ZDCisgICAgaWYgKG1faXNWUDkgJiYgaW5wdXRfaW1hZ2UuX2ZyYW1lVHlw
ZSA9PSBWaWRlb0ZyYW1lVHlwZTo6a1ZpZGVvRnJhbWVLZXkgJiYgaW5wdXRfaW1hZ2UuU3BhdGlh
bEluZGV4KCkgJiYgKmlucHV0X2ltYWdlLlNwYXRpYWxJbmRleCgpID4gMCkKKyAgICAgICAgcmV0
dXJuIFdFQlJUQ19WSURFT19DT0RFQ19GQUxMQkFDS19TT0ZUV0FSRTsKKwogICAgIHJldHVybiB2
aWRlb0RlY29kZXJDYWxsYmFja3MoKS5kZWNvZGVDYWxsYmFjayhtX2ludGVybmFsRGVjb2Rlciwg
aW5wdXRfaW1hZ2UuVGltZXN0YW1wKCksIGlucHV0X2ltYWdlLmRhdGEoKSwgaW5wdXRfaW1hZ2Uu
c2l6ZSgpLCBlbmNvZGVkV2lkdGgsIGVuY29kZWRIZWlnaHQpOwogfQogCkBAIC0yMjYsNyArMjM2
LDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0RlY29kZXI+IFJlbW90ZVZpZGVvRGVjb2RlckZh
Y3Rvcnk6OkNyZWF0ZVZpZGVvRGVjb2Rlcihjb25zCiAgICAgaWYgKCFpZGVudGlmaWVyKQogICAg
ICAgICByZXR1cm4gbV9pbnRlcm5hbEZhY3RvcnktPkNyZWF0ZVZpZGVvRGVjb2Rlcihmb3JtYXQp
OwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlVmlkZW9EZWNvZGVyPihpZGVu
dGlmaWVyKTsKKyAgICBhdXRvIGRlY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZVZpZGVv
RGVjb2Rlcj4oaWRlbnRpZmllciwgZm9ybWF0Lm5hbWUgPT0gIlZQOSIpOworICAgIGlmICghZGVj
b2Rlci0+aXNWUDkoKSkKKyAgICAgICAgcmV0dXJuIGRlY29kZXI7CisgICAgcmV0dXJuIHdlYnJ0
Yzo6Q3JlYXRlVmlkZW9EZWNvZGVyU29mdHdhcmVGYWxsYmFja1dyYXBwZXIobV9pbnRlcm5hbEZh
Y3RvcnktPkNyZWF0ZVZpZGVvRGVjb2Rlcihmb3JtYXQpLCBzdGQ6Om1vdmUoZGVjb2RlcikpOwog
fQogCiBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5PiBjcmVhdGVX
ZWJLaXREZWNvZGVyRmFjdG9yeShXZWJLaXRIMjY1IHN1cHBvcnRzSDI2NSwgV2ViS2l0VlA5IHN1
cHBvcnRzVlA5LCBXZWJLaXRWUDlWVEIgc3VwcG9ydHNWUDlWVEIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQu
aAppbmRleCBmMDg2OTJiYmM4ZWNkMTQxNjRjY2ZiNDM5Zjc2MGQwMDgyOTZlMzA4Li41ZTljZjg0
ODFlNTdlMjdlMjg3MjllMmYwMmJmYjA1MmUxNjZjMmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgK
QEAgLTEwOSw2ICsxMDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3RhcnRJY2Uo
KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHNldENvbmZpZ3VyYXRpb24oTWVkaWFFbmRwb2ludENv
bmZpZ3VyYXRpb24mJikgPSAwOwogCisgICAgdmlydHVhbCB2b2lkIGdhdGhlckRlY29kZXJJbXBs
ZW1lbnRhdGlvbk5hbWUoRnVuY3Rpb248dm9pZChTdHJpbmcmJik+JiYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0U3RhdHMoUmVmPERlZmVycmVkUHJvbWlzZT4mJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBnZXRTdGF0cyhSVENSdHBTZW5kZXImLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFN0YXRzKFJUQ1J0cFJlY2VpdmVyJiwgUmVmPERlZmVy
cmVkUHJvbWlzZT4mJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAppbmRleCA4ZDkzZDIxODNlODk5Zjhk
NTk2YzBmMzgzZGY4ZGNhZDIzZTU1MjYzLi4wMmQ3NzVhMWMzMjE1ZDhhYjNmNzE5ZmZhMzUwMGNj
MTkzMTY1ZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcApAQCAtNTIzLDYgKzUyMywxMSBAQCB2b2lkIFJU
Q1BlZXJDb25uZWN0aW9uOjpnZXRTdGF0cyhNZWRpYVN0cmVhbVRyYWNrKiBzZWxlY3RvciwgUmVm
PERlZmVycmVkUHJvbWlzZQogICAgIG1fYmFja2VuZC0+Z2V0U3RhdHMoV1RGTW92ZShwcm9taXNl
KSk7CiB9CiAKK3ZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmdhdGhlckRlY29kZXJJbXBsZW1lbnRh
dGlvbk5hbWUoRnVuY3Rpb248dm9pZChTdHJpbmcmJik+JiYgY2FsbGJhY2spCit7CisgICAgbV9i
YWNrZW5kLT5nYXRoZXJEZWNvZGVySW1wbGVtZW50YXRpb25OYW1lKFdURk1vdmUoY2FsbGJhY2sp
KTsKK30KKwogRXhjZXB0aW9uT3I8UmVmPFJUQ0RhdGFDaGFubmVsPj4gUlRDUGVlckNvbm5lY3Rp
b246OmNyZWF0ZURhdGFDaGFubmVsKFN0cmluZyYmIGxhYmVsLCBSVENEYXRhQ2hhbm5lbEluaXQm
JiBvcHRpb25zKQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgK
aW5kZXggYTU2OTY2MzM3ZmE4ODE2ZjMyZTEyZGZhMDc2ZGExYjkxYTk3NzIyYS4uMzM4NWEzMGNm
ZjkyNjY0MGQzMjI1MmI5NzdlYmViYTE2N2Y2ZmM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaApAQCAtMTU5LDYg
KzE1OSw4IEBAIHB1YmxpYzoKIAogICAgIC8vIDguMiBTdGF0aXN0aWNzIEFQSQogICAgIHZvaWQg
Z2V0U3RhdHMoTWVkaWFTdHJlYW1UcmFjayosIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOworICAg
IC8vIFVzZWQgZm9yIHRlc3RpbmcKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdhdGhlckRlY29k
ZXJJbXBsZW1lbnRhdGlvbk5hbWUoRnVuY3Rpb248dm9pZChTdHJpbmcmJik+JiYpOwogCiAgICAg
Ly8gRXZlbnRUYXJnZXQKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVy
ZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRUYXJnZXRJ
bnRlcmZhY2VUeXBlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQu
Y3BwCmluZGV4IDk1NzQ0NDQ2YTA4ZTk3YjJlMjcyZDcwNTdhZWM0MTYzMjhlMzZjNWMuLjczODQ2
NGUxZDI2YmVmZmNjN2RhYTZlOGQyYmVhNGFmZDkwYWUzOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9p
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCkBAIC0yNTUsMTMgKzI1NSwzNyBAQCB2b2lkIExp
YldlYlJUQ01lZGlhRW5kcG9pbnQ6OmRvQ3JlYXRlQW5zd2VyKCkKIAogcnRjOjpzY29wZWRfcmVm
cHRyPExpYldlYlJUQ1N0YXRzQ29sbGVjdG9yPiBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpjcmVh
dGVTdGF0c0NvbGxlY3RvcihSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7Ci0gICAg
cmV0dXJuIExpYldlYlJUQ1N0YXRzQ29sbGVjdG9yOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYXV0byYmIHJlcG9ydCkg
bXV0YWJsZSB7CisgICAgcmV0dXJuIExpYldlYlJUQ1N0YXRzQ29sbGVjdG9yOjpjcmVhdGUoW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0o
YXV0byYmIHJ0Y1JlcG9ydCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5pc1N0b3BwZWQoKSB8fCAhcmVwb3J0KQor
ICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+aXNTdG9wcGVkKCkpCiAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8UlRDU3RhdHNSZXBv
cnQ+PihyZXBvcnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIHByb21pc2UtPnJlc29sdmU8
SURMSW50ZXJmYWNlPFJUQ1N0YXRzUmVwb3J0Pj4oTGliV2ViUlRDU3RhdHNDb2xsZWN0b3I6OmNy
ZWF0ZVJlcG9ydChydGNSZXBvcnQpKTsKKyAgICB9KTsKK30KKwordm9pZCBMaWJXZWJSVENNZWRp
YUVuZHBvaW50OjpnYXRoZXJEZWNvZGVySW1wbGVtZW50YXRpb25OYW1lKEZ1bmN0aW9uPHZvaWQo
U3RyaW5nJiYpPiYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9iYWNrZW5kKSB7CisgICAgICAg
IGNhbGxiYWNrKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byBjb2xsZWN0
b3IgPSBMaWJXZWJSVENTdGF0c0NvbGxlY3Rvcjo6Y3JlYXRlKFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShhdXRvJiYgcnRjUmVwb3J0KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICAgICAgaWYgKHJ0Y1JlcG9ydCkgeworICAgICAgICAgICAgZm9y
IChjb25zdCBhdXRvJiBydGNTdGF0cyA6ICpydGNSZXBvcnQpIHsKKyAgICAgICAgICAgICAgICBp
ZiAocnRjU3RhdHMudHlwZSgpID09IHdlYnJ0Yzo6UlRDSW5ib3VuZFJUUFN0cmVhbVN0YXRzOjpr
VHlwZSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvJiBpbmJvdW5kUlRQU3RhdHMgPSBzdGF0
aWNfY2FzdDxjb25zdCB3ZWJydGM6OlJUQ0luYm91bmRSVFBTdHJlYW1TdGF0cyY+KHJ0Y1N0YXRz
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluYm91bmRSVFBTdGF0cy5kZWNvZGVyX2ltcGxl
bWVudGF0aW9uLmlzX2RlZmluZWQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJh
Y2soZnJvbVN0ZFN0cmluZygqaW5ib3VuZFJUUFN0YXRzLmRlY29kZXJfaW1wbGVtZW50YXRpb24p
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBj
YWxsYmFjayh7IH0pOwogICAgIH0pOworICAgIG1fYmFja2VuZC0+R2V0U3RhdHMoV1RGTW92ZShj
b2xsZWN0b3IpKTsKIH0KIAogdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpnZXRTdGF0cyhS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENN
ZWRpYUVuZHBvaW50LmgKaW5kZXggZjZmOTBmNjI1MTM1ODU4NjNmNzc1N2Q2MGJhYzRmNTUyZmI1
Mzg2MC4uYzRiOWNlNzEyMTk4MjM4ODNiMDQ0MzBjZWI5ZWQ4MWU4ZjkwY2FjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
TWVkaWFFbmRwb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaApAQCAtODUsNiArODUsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkb1NldFJlbW90ZURlc2NyaXB0aW9uKGNvbnN0IFJUQ1Nlc3Npb25EZXNj
cmlwdGlvbiYpOwogICAgIHZvaWQgZG9DcmVhdGVPZmZlcihjb25zdCBSVENPZmZlck9wdGlvbnMm
KTsKICAgICB2b2lkIGRvQ3JlYXRlQW5zd2VyKCk7CisgICAgdm9pZCBnYXRoZXJEZWNvZGVySW1w
bGVtZW50YXRpb25OYW1lKEZ1bmN0aW9uPHZvaWQoU3RyaW5nJiYpPiYmKTsKICAgICB2b2lkIGdl
dFN0YXRzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogICAgIHZvaWQgZ2V0U3RhdHMod2VicnRj
OjpSdHBSZWNlaXZlckludGVyZmFjZSYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogICAgIHZv
aWQgZ2V0U3RhdHMod2VicnRjOjpSdHBTZW5kZXJJbnRlcmZhY2UmLCBSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlv
bkJhY2tlbmQuY3BwCmluZGV4IGQ4MDJiODAzOWYyMTY0MGZlNWM0Y2YwZmZiNWUzZDM2ODM3YmQ3
N2YuLjM5NDcyYmUyZjA4YWM2YTA2YTJhNGZlZTk5ODQ1NGZjZTZiYzk1MmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAt
MTk5LDYgKzE5OSwxMiBAQCBib29sIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0
Q29uZmlndXJhdGlvbihNZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbgogICAgIHJldHVybiBtX2Vu
ZHBvaW50LT5zZXRDb25maWd1cmF0aW9uKHBhZ2UtPmxpYldlYlJUQ1Byb3ZpZGVyKCksIGNvbmZp
Z3VyYXRpb25Gcm9tTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0
aW9uKSkpOwogfQogCit2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Z2F0aGVy
RGVjb2RlckltcGxlbWVudGF0aW9uTmFtZShGdW5jdGlvbjx2b2lkKFN0cmluZyYmKT4mJiBjYWxs
YmFjaykKK3sKKyAgICBtX2VuZHBvaW50LT5nYXRoZXJEZWNvZGVySW1wbGVtZW50YXRpb25OYW1l
KFdURk1vdmUoY2FsbGJhY2spKTsKKworfQorCiB2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9u
QmFja2VuZDo6Z2V0U3RhdHMoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAg
IG1fZW5kcG9pbnQtPmdldFN0YXRzKFdURk1vdmUocHJvbWlzZSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCAzMTBiMGIwZmY5
NWMyNmRjZTljYjQ5Nzc2NWU5M2M4NmZhNzY3YjlmLi4zNjU3MmYwZWQ5ODBmNzRkYTAxNzE0NThh
MDE1YTk4YTlkNWM3MzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVy
Q29ubmVjdGlvbkJhY2tlbmQuaApAQCAtNjcsNiArNjcsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6
dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IGNyZWF0ZURhdGFDaGFubmVsSGFuZGxl
cihjb25zdCBTdHJpbmcmLCBjb25zdCBSVENEYXRhQ2hhbm5lbEluaXQmKSBmaW5hbDsKICAgICB2
b2lkIHJlc3RhcnRJY2UoKSBmaW5hbDsKICAgICBib29sIHNldENvbmZpZ3VyYXRpb24oTWVkaWFF
bmRwb2ludENvbmZpZ3VyYXRpb24mJikgZmluYWw7CisgICAgdm9pZCBnYXRoZXJEZWNvZGVySW1w
bGVtZW50YXRpb25OYW1lKEZ1bmN0aW9uPHZvaWQoU3RyaW5nJiYpPiYmKSBmaW5hbDsKICAgICB2
b2lkIGdldFN0YXRzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpIGZpbmFsOwogICAgIHZvaWQgZ2V0
U3RhdHMoUlRDUnRwU2VuZGVyJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJikgZmluYWw7CiAgICAg
dm9pZCBnZXRTdGF0cyhSVENSdHBSZWNlaXZlciYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDU3RhdHNDb2xsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDU3RhdHNDb2xsZWN0b3IuY3BwCmluZGV4
IGMzNjI2Y2E0MmE1YzNkYjJlYjFmZTJhNTU2ZGQwYjNkYjI4ODkyNTIuLjQ4MDUwM2ExYjY4YzZk
N2Y0ZDEwZmE4NjAzZGExZTJkYmVmZmQ4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENTdGF0c0NvbGxlY3Rvci5jcHAKQEAgLTYzNCwxMCArNjM0LDE1IEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCBpbml0aWFsaXplUlRDU3RhdHNSZXBvcnRCYWNraW5nTWFwKERPTU1hcEFkYXB0ZXImIHJl
cG9ydCwgY29uCiB2b2lkIExpYldlYlJUQ1N0YXRzQ29sbGVjdG9yOjpPblN0YXRzRGVsaXZlcmVk
KGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxjb25zdCB3ZWJydGM6OlJUQ1N0YXRzUmVwb3J0PiYg
cnRjUmVwb3J0KQogewogICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBydGM6OnNjb3BlZF9yZWZwdHI8TGliV2ViUlRDU3RhdHNDb2xsZWN0b3I+KHRoaXMpLCBydGNS
ZXBvcnRdKCkgewotICAgICAgICBtX2NhbGxiYWNrKFJUQ1N0YXRzUmVwb3J0OjpjcmVhdGUoW3J0
Y1JlcG9ydF0oYXV0byYgbWFwQWRhcHRlcikgewotICAgICAgICAgICAgaWYgKHJ0Y1JlcG9ydCkK
LSAgICAgICAgICAgICAgICBpbml0aWFsaXplUlRDU3RhdHNSZXBvcnRCYWNraW5nTWFwKG1hcEFk
YXB0ZXIsICpydGNSZXBvcnQpOwotICAgICAgICB9KSk7CisgICAgICAgIG1fY2FsbGJhY2socnRj
UmVwb3J0KTsKKyAgICB9KTsKK30KKworUmVmPFJUQ1N0YXRzUmVwb3J0PiBMaWJXZWJSVENTdGF0
c0NvbGxlY3Rvcjo6Y3JlYXRlUmVwb3J0KGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxjb25zdCB3
ZWJydGM6OlJUQ1N0YXRzUmVwb3J0PiYgcnRjUmVwb3J0KQoreworICAgIHJldHVybiBSVENTdGF0
c1JlcG9ydDo6Y3JlYXRlKFtydGNSZXBvcnRdKGF1dG8mIG1hcEFkYXB0ZXIpIHsKKyAgICAgICAg
aWYgKHJ0Y1JlcG9ydCkKKyAgICAgICAgICAgIGluaXRpYWxpemVSVENTdGF0c1JlcG9ydEJhY2tp
bmdNYXAobWFwQWRhcHRlciwgKnJ0Y1JlcG9ydCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1N0
YXRzQ29sbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5oCmluZGV4IDc5M2ExODFjMDMwZmY4MGQ4YjM0
ZTQwMTFjODQ1NDIwZGQyYmZiMmQuLmE3OTAzMWUwMDEyNmE3N2EwMWMyMGFkN2U2Y2ZkOGNhMDIy
ZjFhNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDU3RhdHNDb2xsZWN0b3IuaApAQCAt
NDcsOSArNDcsMTEgQEAgdm9pZCBpbml0aWFsaXplUlRDU3RhdHNSZXBvcnRCYWNraW5nTWFwKFJU
Q1N0YXRzUmVwb3J0Jik7CiAKIGNsYXNzIExpYldlYlJUQ1N0YXRzQ29sbGVjdG9yIDogcHVibGlj
IHdlYnJ0Yzo6UlRDU3RhdHNDb2xsZWN0b3JDYWxsYmFjayB7CiBwdWJsaWM6Ci0gICAgdXNpbmcg
Q29sbGVjdG9yQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxSVENTdGF0
c1JlcG9ydD4mJik+OworICAgIHVzaW5nIENvbGxlY3RvckNhbGxiYWNrID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8Y29uc3Qgd2VicnRjOjpSVENTdGF0
c1JlcG9ydD4mKT47CiAgICAgc3RhdGljIHJ0Yzo6c2NvcGVkX3JlZnB0cjxMaWJXZWJSVENTdGF0
c0NvbGxlY3Rvcj4gY3JlYXRlKENvbGxlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2spIHsgcmV0dXJu
IG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8TGliV2ViUlRDU3RhdHNDb2xsZWN0b3I+KFdURk1v
dmUoY2FsbGJhY2spKTsgfQogCisgICAgc3RhdGljIFJlZjxSVENTdGF0c1JlcG9ydD4gY3JlYXRl
UmVwb3J0KGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxjb25zdCB3ZWJydGM6OlJUQ1N0YXRzUmVw
b3J0PiYpOworCiAgICAgZXhwbGljaXQgTGliV2ViUlRDU3RhdHNDb2xsZWN0b3IoQ29sbGVjdG9y
Q2FsbGJhY2smJik7CiAgICAgfkxpYldlYlJUQ1N0YXRzQ29sbGVjdG9yKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAxMjBmMjQ4NWYxMWM4NTg2MDE0NDExMGY2YjFk
MzNhMGNkM2I0MGI0Li41OWIzMzljN2YxODEzZjlhZjgzNjQ5ZmVjMGU4ZTQ0OTY1NzJjYmFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNjE2LDYgKzE2MTYsMjIgQEAg
dm9pZCBJbnRlcm5hbHM6OnNldFdlYlJUQ1ZQOVZUQlN1cHBvcnQoYm9vbCB2YWx1ZSkKICNlbmRp
ZgogfQogCitib29sIEludGVybmFsczo6aXNTdXBwb3J0aW5nVlA5VlRCKCkgY29uc3QKK3sKKyNp
ZiBVU0UoTElCV0VCUlRDKQorICAgIGlmIChhdXRvKiBwYWdlID0gY29udGV4dERvY3VtZW50KCkt
PnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuIHBhZ2UtPmxpYldlYlJUQ1Byb3ZpZGVyKCkuaXNTdXBw
b3J0aW5nVlA5VlRCKCk7CisjZW5kaWYKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgSW50
ZXJuYWxzOjppc1ZQOVZUQkRlY2NvZGVyVXNlZChSVENQZWVyQ29ubmVjdGlvbiYgY29ubmVjdGlv
biwgRE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xlYW4+JiYgcHJvbWlzZSkKK3sKKyAgICBjb25u
ZWN0aW9uLmdhdGhlckRlY29kZXJJbXBsZW1lbnRhdGlvbk5hbWUoW3Byb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpXShhdXRvJiYgbmFtZSkgbXV0YWJsZSB7CisgICAgICAgIHByb21pc2UucmVzb2x2
ZShuYW1lLmNvbnRhaW5zKCJWaWRlb1Rvb2xCb3giKSk7CisgICAgfSk7Cit9CisKIHZvaWQgSW50
ZXJuYWxzOjpzZXRTRnJhbWVDb3VudGVyKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSYgdHJhbnNmb3Jt
LCBjb25zdCBTdHJpbmcmIGNvdW50ZXIpCiB7CiAgICAgaWYgKGF1dG8gdmFsdWUgPSBwYXJzZUlu
dGVnZXI8dWludDY0X3Q+KGNvdW50ZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5k
ZXggMjgxMDIyZTZkODcyYmIwNmE4Y2U3N2YzYTJjN2RlODIxM2FjNzkyMC4uMGE2YTA0ZTQxMDkx
MWM2YWFjYTRhMzNlNmNhNGI4Y2ViZjVhZDJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oCkBAIC02NDEsNiArNjQxLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0V2ViUlRDSDI2NVN1
cHBvcnQoYm9vbCk7CiAgICAgdm9pZCBzZXRXZWJSVENWUDlTdXBwb3J0KGJvb2wgc3VwcG9ydFZQ
OVByb2ZpbGUwLCBib29sIHN1cHBvcnRWUDlQcm9maWxlMik7CiAgICAgdm9pZCBzZXRXZWJSVENW
UDlWVEJTdXBwb3J0KGJvb2wpOworICAgIGJvb2wgaXNTdXBwb3J0aW5nVlA5VlRCKCkgY29uc3Q7
CisgICAgdm9pZCBpc1ZQOVZUQkRlY2NvZGVyVXNlZChSVENQZWVyQ29ubmVjdGlvbiYsIERPTVBy
b21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmKTsKKwogICAgIHZvaWQgc2V0U0ZyYW1lQ291bnRl
cihSVENSdHBTRnJhbWVUcmFuc2Zvcm0mLCBjb25zdCBTdHJpbmcmKTsKICAgICB1aW50NjRfdCBz
ZnJhbWVDb3VudGVyKGNvbnN0IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSYpOwogICAgIHVpbnQ2NF90
IHNmcmFtZUtleUlkKGNvbnN0IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGI4MTdkNjcxOTc5YmE3YzNkNGZjZGY4N2M2Y2ZkNzM4
MzBjNGI4OTIuLjI2ODExZjUwZDhkNDZlYmRiYzcyYzk0Y2U0ODU2ZDM1M2UyZDk1YTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTg2OCw2ICs4NjgsOCBAQCBlbnVtIEF1
dG9wbGF5UG9saWN5IHsKICAgICBbQ29uZGl0aW9uYWw9V0VCX1JUQ10gdW5kZWZpbmVkIHNldFdl
YlJUQ0gyNjVTdXBwb3J0KGJvb2xlYW4gYWxsb3dlZCk7CiAgICAgW0NvbmRpdGlvbmFsPVdFQl9S
VENdIHVuZGVmaW5lZCBzZXRXZWJSVENWUDlTdXBwb3J0KGJvb2xlYW4gc3VwcG9ydFZQOVByb2Zp
bGUwLCBib29sZWFuIHN1cHBvcnRWUDlQcm9maWxlMik7CiAgICAgW0NvbmRpdGlvbmFsPVdFQl9S
VENdIHVuZGVmaW5lZCBzZXRXZWJSVENWUDlWVEJTdXBwb3J0KGJvb2xlYW4gYWxsb3dlZCk7Cisg
ICAgW0NvbmRpdGlvbmFsPVdFQl9SVENdIGJvb2xlYW4gaXNTdXBwb3J0aW5nVlA5VlRCKCk7Cisg
ICAgW0NvbmRpdGlvbmFsPVdFQl9SVENdIFByb21pc2U8Ym9vbGVhbj4gaXNWUDlWVEJEZWNjb2Rl
clVzZWQoUlRDUGVlckNvbm5lY3Rpb24gY29ubmVjdGlvbik7CiAgICAgW0NvbmRpdGlvbmFsPVdF
Ql9SVENdIHVuZGVmaW5lZCBzZXRTRnJhbWVDb3VudGVyKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSB0
cmFuc2Zvcm0sIERPTVN0cmluZyBjb3VudGVyKTsKICAgICBbQ29uZGl0aW9uYWw9V0VCX1JUQ10g
dW5zaWduZWQgbG9uZyBsb25nIHNmcmFtZUNvdW50ZXIoUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIHRy
YW5zZm9ybSk7CiAgICAgW0NvbmRpdGlvbmFsPVdFQl9SVENdIHVuc2lnbmVkIGxvbmcgbG9uZyBz
ZnJhbWVLZXlJZChSVENSdHBTRnJhbWVUcmFuc2Zvcm0gdHJhbnNmb3JtKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5Y2Vk
NzI0NWUzOTZjM2Q3NDllMzcxZWFjNWY5YmY2Y2NiYTI1OGQxLi41NzIzZmJmMDM2ODdiMzZkODY0
NWNmNmMzNjE1ZjRjNDY1NzM0ZGE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTAtMjAg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYlJUQyBwMnAg
Y2FsbCwgVlA5LVNWQyBvbmx5IGxvdyBsYXllciBkZWNvZGVkIG9uIHJlY2VpdmVyIHNpZGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTA3MQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vODM3NjMyOTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBDYXJsc29uLgorCisgICAgICAgICogd2VicnRjL3ZwOS1zdmMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB3ZWJydGMvdnA5LXN2Yy5odG1sOiBBZGRlZC4KKwogMjAyMS0xMC0xOSAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQg
Zm9yIHJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2sgQVBJIGFuZCBNZWRpYVN0cmVhbVRyYWNrLWJh
c2VkIGJhY2tlbmQgc3VwcG9ydApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL3ZwOS1z
dmMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZwOS1zdmMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjIzZmYyMjhiMGMzOTYwNzJjN2NmNmYzNDhhYzE4Zjc4MDIzNjZlN2EKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMvdnA5LXN2Yy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw1IEBACisKKworUEFTUyBVc2UgVlA5IHdpdGhvdXQgU1ZDCitQQVNTIFVzZSBW
UDkgd2l0aCBTVkMKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL3ZwOS1zdmMuaHRt
bCBiL0xheW91dFRlc3RzL3dlYnJ0Yy92cDktc3ZjLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2YyY2Y2ODUz
ZTZlMmU2MzNkYzM5OTcwMmE2ZTM3YjhkNmViMzE1YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYnJ0Yy92cDktc3ZjLmh0bWwKQEAgLTAsMCArMSw4NSBAQAorPCFkb2N0eXBlIGh0
bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
ICAgICAgICA8dGl0bGU+VlA5IFNWQyBpbiBXZWJSVEM8L3RpdGxlPgorICAgICAgICA8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8dmlkZW8gaWQ9InZpZGVvIiBhdXRvcGxh
eSBwbGF5c0lubGluZSB3aWR0aD0iMzIwIiBoZWlnaHQ9IjI0MCI+PC92aWRlbz4KKyAgICAgICAg
PHNjcmlwdCBzcmMgPSJyb3V0aW5lcy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Citm
dW5jdGlvbiBlbmFibGVWUDlTVkMoc2RwKQoreworICAgIGNvbnN0IGZpcnN0U3NyYyA9IHNkcC5t
YXRjaCgvYT1zc3JjOihcZCspLyk7CisgICAgaWYgKGZpcnN0U3NyYyAmJiBmaXJzdFNzcmMubGVu
Z3RoID4gMSkgeworICAgICAgICBsZXQgc2ltR3JvdXAgPSAnYT1zc3JjLWdyb3VwOlNJTSc7Cisg
ICAgICAgIGNvbnN0IHNzcmMgPSBmaXJzdFNzcmNbMV07CisgICAgICAgIHNpbUdyb3VwICs9IGAg
JHtzc3JjfWA7CisgICAgICAgIGNvbnN0IHNzcmNMaW5lc1RlbXBsYXRlID0gc2RwLm1hdGNoKG5l
dyBSZWdFeHAoYGE9c3NyYzoke3NzcmN9KC4rKWAsICdnJykpOworICAgICAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDIgOyArK2kpIHsKKyAgICAgICAgICAgIGNvbnN0IHNzcmMxID0gJycgKyBNYXRo
LmZsb29yKE1hdGgucmFuZG9tKCkgKiAweGZmZmZmZmZmKTsKKyAgICAgICAgICAgIHNpbUdyb3Vw
ICs9IGAgJHtzc3JjMX1gOworICAgICAgICAgICAgc2RwICs9IHNzcmNMaW5lc1RlbXBsYXRlLmpv
aW4oJ1xyXG4nKS5yZXBsYWNlKG5ldyBSZWdFeHAoYGE9c3NyYzoke3NzcmN9KC4rKWAsICdnJyks
IGBhPXNzcmM6JHtzc3JjMX0kMWApICsgJ1xyXG4nOworICAgICAgICB9CisgICAgICAgIHNkcCAr
PSBgJHtzaW1Hcm91cH1cclxuYDsKKyAgICB9CisgICAgcmV0dXJuIHNkcDsKK30KKworYXN5bmMg
ZnVuY3Rpb24gdGVzdFZQOURlY29kZXIodXNlVlA5U1ZDKQoreworICAgIGxldCByZWNlaXZpbmdD
b25uZWN0aW9uOworICAgIGNvbnN0IGNvZGVjcyA9IFJUQ1J0cFNlbmRlci5nZXRDYXBhYmlsaXRp
ZXMoInZpZGVvIikuY29kZWNzOworICAgIGNvbnN0IHZwOUNvZGVjcyA9IGNvZGVjcy5maWx0ZXIo
Y29kZWMgPT4gY29kZWMubWltZVR5cGUgPT09ICJ2aWRlby9WUDkiKTsKKworICAgIGlmICghdnA5
Q29kZWNzLmxlbmd0aCkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3QgbG9jYWxTdHJlYW0g
PSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7dmlkZW86IHt3aWR0
aDogMTI4MCwgaGVpZ2h0OiA3MjB9fSk7CisgICAgY29uc3QgcmVtb3RlU3RyZWFtID0gYXdhaXQg
bmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICB0cmFjayA9IGxvY2Fs
U3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF07CisKKyAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMo
KGZpcnN0Q29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgZmlyc3RDb25uZWN0aW9uLmFkZFRy
YWNrKHRyYWNrLCBsb2NhbFN0cmVhbSk7CisgICAgICAgICAgICBjb25zdCBjb2RlY3MgPSBSVENS
dHBTZW5kZXIuZ2V0Q2FwYWJpbGl0aWVzKCd2aWRlbycpLmNvZGVjcy5maWx0ZXIoYyA9PiBjLm1p
bWVUeXBlLmluY2x1ZGVzKCdWUDknKSk7CisgICAgICAgICAgICBmaXJzdENvbm5lY3Rpb24uZ2V0
VHJhbnNjZWl2ZXJzKClbMF0uc2V0Q29kZWNQcmVmZXJlbmNlcyhjb2RlY3MpOworICAgICAgICB9
LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgcmVjZWl2aW5nQ29ubmVjdGlv
biA9IHNlY29uZENvbm5lY3Rpb247CisgICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9udHJh
Y2sgPSAodHJhY2tFdmVudCkgPT4geworICAgICAgICAgICAgICAgIHJlbW90ZVRyYWNrID0gdHJh
Y2tFdmVudC50cmFjazsKKyAgICAgICAgICAgICAgICByZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFt
c1swXSk7CisgICAgICAgICAgICB9OworICAgICAgICB9LCB7IG9ic2VydmVPZmZlciA6IChvZmZl
cikgPT4geworICAgICAgICAgICAgaWYgKHVzZVZQOVNWQykKKyAgICAgICAgICAgICAgICBvZmZl
ci5zZHAgPSBlbmFibGVWUDlTVkMob2ZmZXIuc2RwKTsKKyAgICAgICAgICAgIHJldHVybiBvZmZl
cjsKKyAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWpl
Y3QoIlRlc3QgdGltZWQgb3V0IiksIDUwMDApOworICAgIH0pOworICAgIHZpZGVvLnNyY09iamVj
dCA9IHJlbW90ZVN0cmVhbTsKKyAgICBhd2FpdCB2aWRlby5wbGF5KCk7CisKKyAgICBsZXQgY291
bnRlciA9IDA7CisgICAgd2hpbGUgKHZpZGVvLnZpZGVvV2lkdGggIT09IDEyODAgJiYgKytjb3Vu
dGVyIDwgMTAwKQorICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91
dChyZXNvbHZlLCA1MCkpOworICAgIGFzc2VydF9lcXVhbHModmlkZW8udmlkZW9XaWR0aCwgMTI4
MCk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWRlby52aWRlb0hlaWdodCwgNzIwKTsKKworICAgIGlm
ICghd2luZG93LmludGVybmFscyB8fCAhd2luZG93LmludGVybmFscy5pc1N1cHBvcnRpbmdWUDlW
VEIoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgaW50ZXJuYWxz
LmlzVlA5VlRCRGVjY29kZXJVc2VkKHJlY2VpdmluZ0Nvbm5lY3Rpb24pLCAhdXNlVlA5U1ZDKTsK
K30KKworcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsKKyAgICByZXR1cm4gdGVzdFZQOURlY29k
ZXIoZmFsc2UpOyAKK30sICJVc2UgVlA5IHdpdGhvdXQgU1ZDIik7CisKK3Byb21pc2VfdGVzdChh
c3luYyAoKSA9PiB7CisgICAgcmV0dXJuIHRlc3RWUDlEZWNvZGVyKHRydWUpOyAKK30sICJVc2Ug
VlA5IHdpdGggU1ZDIik7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>