<?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>217211</bug_id>
          <alias>webglgpup</alias>
          <creation_ts>2020-10-02 04:11:44 -0700</creation_ts>
          <short_desc>Support running WebGL in GPU process</short_desc>
          <delta_ts>2022-03-14 23:28:02 -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>WebGL</component>
          <version>Other</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>macOS 10.15</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=205153</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=218179</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=218180</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=218184</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=218186</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=219342</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=219700</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=222835</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=236502</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=236382</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>222544</dependson>
    
    <dependson>222726</dependson>
    
    <dependson>223129</dependson>
    
    <dependson>223429</dependson>
    
    <dependson>223430</dependson>
    
    <dependson>228698</dependson>
    
    <dependson>234237</dependson>
    
    <dependson>237840</dependson>
    
    <dependson>217212</dependson>
    
    <dependson>217213</dependson>
    
    <dependson>217216</dependson>
    
    <dependson>217218</dependson>
    
    <dependson>217697</dependson>
    
    <dependson>218178</dependson>
    
    <dependson>218184</dependson>
    
    <dependson>218333</dependson>
    
    <dependson>218896</dependson>
    
    <dependson>218976</dependson>
    
    <dependson>219256</dependson>
    
    <dependson>219349</dependson>
    
    <dependson>219351</dependson>
    
    <dependson>219352</dependson>
    
    <dependson>219430</dependson>
    
    <dependson>219431</dependson>
    
    <dependson>219486</dependson>
    
    <dependson>219487</dependson>
    
    <dependson>219641</dependson>
    
    <dependson>219669</dependson>
    
    <dependson>220236</dependson>
    
    <dependson>220239</dependson>
    
    <dependson>220318</dependson>
    
    <dependson>220319</dependson>
    
    <dependson>220333</dependson>
    
    <dependson>220410</dependson>
    
    <dependson>220519</dependson>
    
    <dependson>220806</dependson>
    
    <dependson>220919</dependson>
    
    <dependson>220974</dependson>
    
    <dependson>221396</dependson>
    
    <dependson>221488</dependson>
    
    <dependson>221560</dependson>
    
    <dependson>221748</dependson>
    
    <dependson>221811</dependson>
    
    <dependson>222101</dependson>
    
    <dependson>222268</dependson>
    
    <dependson>222410</dependson>
    
    <dependson>222411</dependson>
    
    <dependson>222500</dependson>
    
    <dependson>222546</dependson>
    
    <dependson>222722</dependson>
    
    <dependson>222836</dependson>
    
    <dependson>223082</dependson>
    
    <dependson>223121</dependson>
    
    <dependson>224864</dependson>
    
    <dependson>229606</dependson>
    
    <dependson>231009</dependson>
    
    <dependson>232004</dependson>
    
    <dependson>234552</dependson>
    
    <dependson>236501</dependson>
    
    <dependson>236505</dependson>
    
    <dependson>236964</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>dino</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1694023</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-10-02 04:11:44 -0700</bug_when>
    <thetext>Support running WebGL in GPU process</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694025</commentid>
    <comment_count>1</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-10-02 04:12:54 -0700</bug_when>
    <thetext>&lt;rdar://57177441&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734406</commentid>
    <comment_count>2</comment_count>
      <attachid>421820</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-03-01 07:17:58 -0800</bug_when>
    <thetext>Created attachment 421820
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734517</commentid>
    <comment_count>3</comment_count>
      <attachid>421851</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-03-01 11:36:25 -0800</bug_when>
    <thetext>Created attachment 421851
Patch</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421820</attachid>
            <date>2021-03-01 07:17:58 -0800</date>
            <delta_ts>2021-03-01 11:36:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217211-20210301171755.patch</filename>
            <type>text/plain</type>
            <size>63475</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWI4MDVhOTUxYzM0YzBk
NTQzZWZkZjVmNDQ3OTUxNTBlOWIyODkxYy4uMGRhMTQ4OWQ2ODkxYjZmNTY0ZDM3YTAyMjlkODcw
OGZhMTBmZmEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTAzLTAxICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBydW5u
aW5nIFdlYkdMIGluIEdQVSBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTcyMTEKKyAgICAgICAgPHJkYXI6Ly81NzE3NzQ0MT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgSW50ZXJuYWxz
IGZlYXR1cmUgdG8gdGVzdCBXZWJHTCBjb250ZXh0IGNhbGwKKyAgICAgICAgdGltZW91dC4KKwor
CisgICAgICAgIFRlc3RzOiBmYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tdGltZW91
dC1hc3luYy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRl
eHQtb24tdGltZW91dC5odG1sCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNpbXVsYXRlRXZlbnRGb3JU
ZXN0aW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OnNpbXVsYXRlRXZlbnRGb3JXZWJHTENvbnRleHQpOgorICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
aWRsOgorCisgICAgICAgIEltcGxlbWVudCB0aGUgZmVhdHVyZSBieSByZXBsYWNpbmcKKyAgICAg
ICAgICAgIEludGVybmFscy5zZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkKKyAgICAgICAgICAg
IEludGVybmFscy5zaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkKKyAgICAgICAgd2l0aAorICAgICAg
ICAgICAgSW50ZXJuYWxzLnNpbXVsYXRlRXZlbnRGb3JXZWJHTENvbnRleHQoRE9NU3RyaW5nIGV2
ZW50TmFtZSwgV2ViR0xSZW5kZXJpbmdDb250ZXh0KQorICAgICAgICB3aXRoIGV2ZW50TmFtZSB0
YWtpbmcgaW52ZW50ZWQgZXZlbnRzIHRoYXQgY2FuIGhhcHBlbiB0byBhCisgICAgICAgIHdlYmds
IGNvbnRleHQ6CisgICAgICAgICAic2V0ZmFpbG5leHRncHVzdGF0dXNjaGVjayIsICJjb250ZXh0
Y2hhbmdlZCIsICJ0aW1lb3V0Ii4KKyAgICAgICAgVGhlIEludGVybmFscyBmdW5jdGlvbiBuYW1l
IHdhcyBjaG9zZW4gbm90IHRvIGNvbnRhaW4gIkZvclRlc3RpbmciIHN1ZmZpeCwgYXMKKyAgICAg
ICAgYWxsIHRoZSBmdW5jdGlvbnMgaW4gdGhlIGNsYXNzIHNob3VsZCBoYXZlIHRoYXQgc3VmZml4
LgorICAgICAgICBUaGUgZnVuY3Rpb24gbmFtZXMgaW4gdGhlIGltcGxlbWVudGF0aW9uIHBhdGgg
Zm9yIHRoZSBmZWF0dXJlIGNvbnRhaW5zCisgICAgICAgICJGb3JUZXN0aW5nIiBpbiBvcmRlciB0
byBoaWdobGlnaHQgdGhlIGZlYXR1cmUgbm90IGJlaW5nIGluIHRoZSBub3JtYWwKKyAgICAgICAg
cGF0aC4KKwogMjAyMS0wMi0yOCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgQ29uc2lkZXIgcmVtb3ZpbmcgaU9TIG9ubHkgQ1NTIHByb3BlcnR5IGFsaWFzIC13ZWJr
aXQtaHlwaGVuYXRlLWxvY2FsZSBpbnRyb2R1Y2VkIGluIHI4MDI4OApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwOTE0
MjIwMGY4NmYwOWVkZWVjNWQzMTNkNWY0YTRhYzc5NzE4OWM2Li42OTFmMzJlZThkODQ2ZDc5NTBh
MGE1ODAwNGVlMmJiMGYxYjViYjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMyBAQAorMjAyMS0w
My0wMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFN1
cHBvcnQgcnVubmluZyBXZWJHTCBpbiBHUFUgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjExCisgICAgICAgIDxyZGFyOi8vNTcxNzc0
NDE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSVBD
OjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlIHdvdWxkIGFzc2VydCBvbiBlcXVp
dmFsZW50IG9mCisgICAgICAgICAgICBBU1NFUlQoY2xpZW50TGltaXQgIT0gQ2xpZW50TGltaXQ6
OmNsaWVudElzV2FpdGluZ1RhZyk7CisgICAgICAgIGluIGNhc2Ugb2YgdGltZW91dC4gVGhpcyB3
b3VsZCBoYXBwZW4gYmVjYXVzZSB0aGUgY2xpZW50IGl0c2VsZiB3b3VsZAorICAgICAgICBmaXJz
dCB3cml0ZSB0aGUgdmFsdWUgdG8gdGhlIG9mZnNldCB2YXJpYWJsZSwgd2FpdCBhbmQgdGhlbiBy
dW4gdGhlCisgICAgICAgIG5leHQgaXRlcmF0aW9uIG9mIHRoZSBhY3F1aXJlIGxvb3AuCisKKyAg
ICAgICAgRml4IHRoaXMgYnkgdGFraW5nIGl0IGludG8gYWNjb3VudCB0aGF0IHRoZSB2YXJpYWJs
ZSBtaWdodCBiZQorICAgICAgICBDbGllbnRMaW1pdDo6Y2xpZW50SXNXYWl0aW5nVGFnIHdpdGhp
biB0aGUgYWNxdWlyZSBsb29wLgorCisgICAgICAgIFBvc3NpYmx5IGZpeCBmdXR1cmUgc2ltaWxh
ciBwcm9ibGVtcyBieSBub3QgdHJlYXRpbmcgdGhlIHZhbHVlIGFzCisgICAgICAgIHNpemVfdCwg
cmF0aGVyIHRyZWF0IGl0IGFzIGVudW0gY2xhc3MgQ2xpZW50T2Zmc2V0IDogc2l6ZV90LiBUaGlz
CisgICAgICAgIGVuYWJsZXMgdGhlIGNvbXBpbGVyIHRvIGNoZWNrIHRoYXQgd2hlbiBjaGVja2lu
ZyBmb3IgdGhlIHZhcmlvdXMgdGFnCisgICAgICAgIHZhbHVlcywgdGhlIGhvbGRlciBtdXN0IGhv
bGQgdGhlIGVudW0gY2xhc3MuIFdoZW4gaW50ZW5kaW5nIHRvIEludGVycHJldAorICAgICAgICB0
aGUgdmFsdWUgYXMgc2l6ZV90LCBob2xkZXIgbXVzdCBleHBsaWNpdGx5IGNvbnZlcnQuCisKKyAg
ICAgICAgRG8gdGhlIHNhbWUgY2hhbmdlIGZvciB0aGUgU2VydmVyT2Zmc2V0LgorCisgICAgICAg
IENoYW5nZSB0aGUgbm9tZW5jbGF0dXJlIGZyb20gInNlbmRlciIgYW5kICJyZWNlaXZlciIgdG8g
ImNsaWVudCIgYW5kICJzZXJ2ZXIiLgorICAgICAgICBUaGlzIGNoYW5nZSB3YXMgYWxyZWFkeSBk
b25lIGluIHRoZSBpbml0aWFsIGNvbW1pdCwgYnV0IHRoZSBpbmNvbnNpc3RlbnQgdXNlCisgICAg
ICAgIG9mIGNsaWVudC9zZW5kZXIgYW5kIHNlcnZlci9yZWNlaXZlciB3YXMgc3RpbGwgbGVmdC4g
Q2hhbmdlZCBub3cgYXMgdGhpcworICAgICAgICBhZGRzIHRoZSB0eXBlcyBDbGllbnRPZmZzZXQg
LyBTZXJ2ZXJPZmZzZXQuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvY2FudmFzL3dlYmdsL2xvc2Ut
Y29udGV4dC1vbi10aW1lb3V0LWFzeW5jLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY2FudmFz
L3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0Lmh0bWwKKworICAgICAgICAqIEdQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAg
IERvIG5vdCBhc3NlcnQgdGhhdCB0aGUgcmVsZWFzZSBtZXNzYWdlIGFjdHVhbGx5IHJlbGVhc2Vz
IHRoZSBjb250ZXh0LgorICAgICAgICBGb3IgdGVzdGluZywgdGhlIGluZHVjZSB0aGUgdGltZW91
dCBieSByZWxlYXNpbmcgdGhlIGNvbnRleHQgcHJlbWF0dXJlbHkKKyAgICAgICAgYW5kIHRyZWF0
aW5nIHRoZSBzdWJzZXF1ZW50IG1lc3NhZ2VzIGFzIGlmIHRoZXkgd2VyZSBub24tbGVnaXQgbWVz
c2FnZXMuCisgICAgICAgIFRoYXQgc2hvdWxkIGJlIGp1c3Qgc2tpcHBlZC4KKworICAgICAgICAo
V2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0
R0xGb3JUZXN0aW5nKToKKyAgICAgICAgQWRkIGEgcHVibGljIGZ1bmN0aW9uIHRvIGludm9rZSBm
cm9tICJGb3JUZXN0aW5nIiBjb2RlcGF0aHMuCisKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6R1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hTeW5jTWVzc2FnZSk6CisgICAgICAgIFNr
aXAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgbWVzc2FnZXMgdGhhdCBkbyBub3QgZ2V0IHJvdXRl
ZCB0byBhbnkKKyAgICAgICAgaW5zdGFuY2UuIFRoZXNlIG1lc3NhZ2VzIGNhbiBiZSAibm9uLWxl
Z2l0Iiwgb25lcyB0aGF0IGFyZSBzZW50IGJlZm9yZQorICAgICAgICB0aGUgImNvbnRleHQgd2Fz
IGxvc3QiIG1lc3NhZ2UgcmVhY2hlZCB0aGUgc2VuZGVyLCBvciBvbmVzIHRoYXQgYXJlCisgICAg
ICAgIHNlbnQgZHVyaW5nIHNpbXVsYXRlZCB0aW1lb3V0LgorICAgICAgICBUaGVzZSBkbyBub3Qg
Y29udGFpbiBhc3NlcnRzIGFzIGl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlc2Ugd2lsbCBvY2N1ciBp
bgorICAgICAgICBhYm92ZSBzaXR1YXRpb25zLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpzaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyk6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW46CisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9u
c0dlbmVyYXRlZC5oOgorICAgICAgICBBZGQgdGhlIHNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nIGZ1
bmN0aW9uIHRvIHNpbXVsYXRlIHRoZQorICAgICAgICB0aW1lb3V0LiBTaW11bGF0ZSB2aWEganVz
dCByZW1vdmluZyB0aGUgY29udGV4dCwgd2hpY2ggY2F1c2VzCisgICAgICAgIGxlZnQtb3ZlciBt
ZXNzYWdlcyB0byBza2lwcGVkLgorICAgICAgICBDdXJyZW50bHkgd2UgZG8gbm90IHNpbXVsYXRl
IHRoZSB0aW1lb3V0IHdpdGggYW4gaW5maW5pdGUgbG9vcAorICAgICAgICBpbiBHUFUgcHJvY2Vz
cyB0aHJlYWRzIGFzIHRoYXQgaXMgbm90IHN1cHBvcnRlZC4KKyAgICAgICAgQ3VycmVudGx5IHdl
IGRvIG5vdCBzaW11bGF0ZSB0aGUgdGltZW91dCB3aXRoIGEgZ3B1IHByb2Nlc3MKKyAgICAgICAg
Y3Jhc2ggc2luY2UgaXQgaXMgbm90IHN1cHBvcnRlZCB0byBiZSB0ZXN0ZWQgKHdpbGwgY2F1c2Ug
YQorICAgICAgICByZWxvYWQpLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVu
dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpT
dHJlYW1DbGllbnRDb25uZWN0aW9uKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbi5oOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpz
ZW5kU3luYyk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OnJlbGVhc2Up
OgorICAgICAgICBSZW5hbWUgc2VuZGVyIC0+IGNsaWVudAorICAgICAgICBSZW5hbWUgcmVjZWl2
ZXIgLT4gc2VydmVyCisgICAgICAgIENoYW5nZSBzaXplX3QgdXNhZ2UgdG8gLT4gQ2xpZW50T2Zm
c2V0LCBTZXJ2ZXJPZmZzZXQKKworICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9u
Ojp0cnlBY3F1aXJlKToKKyAgICAgICAgRml4IHRoZSBhc3NlcnRpb24gb2YgZXF1aXZhbGVudCBv
ZiBBU1NFUlQoY2xpZW50TGltaXQgIT0gQ2xpZW50TGltaXQ6OmNsaWVudElzV2FpdGluZ1RhZyk7
CisgICAgICAgIGJ5IHJlb3JnYW5pemluZyB0aGUgYWNxdWlyZSBsb29wLgorCisgICAgICAgIChJ
UEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRvTGltaXQgY29uc3QpOgorICAgICAgICBGaXgg
dGhlIG9mZi1ieS1vbmUgaW4gYXNzZXJ0aW9uIGVycm9yCisgICAgICAgICggPCBkYXRhU2l6ZSgp
IC0gMSAgdnMgPD0gZGF0YVNpemUoKSAtIDEpCisgICAgICAgIFJlbmFtZSBmcm9tIGNsYW1wZWRM
aW1pdCB0byB0b0xpbWl0KCksIGFzIHRoZQorICAgICAgICBjbGFtcGluZyBpcyBjb25mdXNpbmcg
YXMgdGhlIENsaWVudCB0cnVzdHMgdGhlCisgICAgICAgIFNlcnZlci4KKworICAgICAgICAqIFBs
YXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcDoKKyAgICAgICAgKElQQzo6U3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcik6CisgICAgICAgIChJ
UEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6Om9wZXJhdG9yPSk6CisgICAgICAgIChJUEM6OlN0
cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0v
SVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaDoKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlcjo6Y2xpZW50T2Zmc2V0KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlcjo6c2VydmVyT2Zmc2V0KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlcjo6Y2xpZW50V2FpdFNlbWFwaG9yZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rp
b25CdWZmZXI6Om1heGltdW1TaXplKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25C
YXNlOjp0cnlBcXVpcmUpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFz
ZTo6cmVsZWFzZSk6CisgICAgICAgIFJlbmFtZSBzZW5kZXIgLT4gY2xpZW50CisgICAgICAgIFJl
bmFtZSByZWNlaXZlciAtPiBzZXJ2ZXIKKyAgICAgICAgQ2hhbmdlIHNpemVfdCB1c2FnZSB0byAt
PiBDbGllbnRPZmZzZXQsIFNlcnZlck9mZnNldAorCisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb25CYXNlOjpjbGFtcGVkTGltaXQgY29uc3QpOgorICAgICAgICBGaXggdGhlIG9m
Zi1ieS1vbmUgaW4gYXNzZXJ0aW9uIGVycm9yCisgICAgICAgICggPCBkYXRhU2l6ZSgpIC0gMSAg
dnMgPD0gZGF0YVNpemUoKSAtIDEpCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbi5oOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFz
ZTo6c2hhcmVkU2VydmVyTGltaXQpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uQmFzZTo6c2hhcmVkU2VydmVyT2Zmc2V0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3ludGhlc2l6ZUdMRXJyb3IpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRFcnJvcik6Cisg
ICAgICAgIENhbGwgdGhlIG1hcmtDb250ZXh0TG9zdCgpIGluc3RlYWQgb2Ygd2FzTG9zdCgpIHRv
IGNsYXJpZnkKKyAgICAgICAgYWxsIHRoZSBjb250ZXh0IGxvc3QgaGFuZGxpbmcgdG8gdXNlIHRo
ZSBzYW1lIHBhdHRlcm4uCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6c2ltdWxhdGVFdmVudEZvclRlc3RpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rp
b25zR2VuZXJhdGVkLmNwcDoKKwogMjAyMS0wMi0yNiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVu
ZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFRpbWVvdXQgY2FsY3VsYXRpb25zIGFyZSBlcnJvci1w
cm9uZSBmb3IgY29tcG91bmQgSVBDIG9wZXJhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMDkx
MWFiNmRlMWY2N2Q2NmYxNzU1NGRlMTZiZDUyODY0ZThjMDNhOS4uYjIzOWMxZWVlNDU4MmE4NDQ0
Yzk3ZGU2ZmE4NzJjMzg1ZTM0NjEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTc1NjAsMTAgKzc1
NjAsMTAgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjptYXliZVJlc3RvcmVDb250
ZXh0KCkKICAgICBjYW52YXMtPmRpc3BhdGNoRXZlbnQoV2ViR0xDb250ZXh0RXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkud2ViZ2xjb250ZXh0cmVzdG9yZWRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJs
ZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcywgZW1wdHlTdHJpbmcoKSkpOwogfQogCi12
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNpbXVsYXRlQ29udGV4dENoYW5nZWQoKQor
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhj
b25zdCBTdHJpbmcmIGV2ZW50TmFtZSkKIHsKICAgICBpZiAobV9jb250ZXh0KQotICAgICAgICBt
X2NvbnRleHQtPnNpbXVsYXRlQ29udGV4dENoYW5nZWQoKTsKKyAgICAgICAgbV9jb250ZXh0LT5z
aW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhldmVudE5hbWUpOwogfQogCiBTdHJpbmcgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6ZW5zdXJlTm90TnVsbChjb25zdCBTdHJpbmcmIHRleHQpIGNvbnN0
CkBAIC03ODk1LDE0ICs3ODk1LDYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjph
Y3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjoKICAgICAgICAg
bV9jb250ZXh0LT5zZXRDb250ZXh0VmlzaWJpbGl0eShuZXdBY3Rpdml0eVN0YXRlLmNvbnRhaW5z
KEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKQotewotICAgIGlmICghbV9jb250
ZXh0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NvbnRleHQtPnNldEZhaWxOZXh0R1BVU3Rh
dHVzQ2hlY2soKTsKLX0KLQogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkaWRDb21w
b3NpdGUoKQogewogICAgIG1fY29tcG9zaXRpbmdSZXN1bHRzTmVlZFVwZGF0aW5nID0gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmgKaW5kZXggOWQ4NjI3MTFlNDE4OGYxMGVlMzY1MDM1MzY2YzZjNjc5NTg5NGE3
Yi4uZDNhNDQ4ZjJkMTRiYjg1MjlhYWI1ODA1ZGE4ZGIzZmIzN2NjYTBiNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
aApAQCAtMzc4LDcgKzM3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZvcmNlTG9zdENvbnRleHQo
TG9zdENvbnRleHRNb2RlKTsKICAgICB2b2lkIGZvcmNlUmVzdG9yZUNvbnRleHQoKTsKICAgICB2
b2lkIGxvc2VDb250ZXh0SW1wbChMb3N0Q29udGV4dE1vZGUpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2ltdWxhdGVDb250ZXh0Q2hhbmdlZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2ltdWxhdGVFdmVudEZvclRlc3RpbmcoY29uc3QgU3RyaW5nJik7CiAKICAgICBHcmFwaGljc0Nv
bnRleHRHTCogZ3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0
KCk7IH0KICAgICBXZWJHTENvbnRleHRHcm91cCogY29udGV4dEdyb3VwKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZXh0R3JvdXAuZ2V0KCk7IH0KQEAgLTQwMiw5ICs0MDIsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KTsKICAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50
IGRpdmlzb3IpOwogCi0gICAgLy8gVXNlZCBmb3IgdGVzdGluZyBvbmx5LCBmcm9tIEludGVybmFs
cy4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKTsK
LQogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQKICAgICB2b2lkIGRpZENvbXBvc2l0
ZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZm9yY2VDb250ZXh0TG9zdCgpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdM
LmgKaW5kZXggMGJjZGY5YzBmZWIwYTI5NTFhNTIwZWFiM2QzZTJkYzdkZjQ1NjUyOS4uYmVkYWIz
N2NkZTdjYmQzNGJlNTc5ZTZhYjdmY2Y0NjY4YjZhNzZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBAIC0xMjc1LDgg
KzEyNzUsNiBAQCBwdWJsaWM6CiAgICAgLy8gZXJyb3IgbGlzdC4gUmV0dXJuIHRydWUgaWYgYXQg
bGVhc3Qgb25lIGVycm9yIGlzIG1vdmVkLgogICAgIHZpcnR1YWwgYm9vbCBtb3ZlRXJyb3JzVG9T
eW50aGV0aWNFcnJvckxpc3QoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RmFpbE5leHRH
UFVTdGF0dXNDaGVjaygpID0gMDsKLQogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGlzcGxh
eSgpID0gMDsKIAogICAgIC8vIEZJWE1FOiBzaG91bGQgYmUgcmVtb3ZlZCwgY2FsbGVyIHNob3Vs
ZCBrZWVwIHRyYWNrIG9mIGNoYW5nZWQgc3RhdGUuCkBAIC0xMzAxLDcgKzEyOTksNyBAQCBwdWJs
aWM6CiAgICAgLy8gb24gdGhlIGNvbnRlbnQuCiAgICAgdmlydHVhbCB2b2lkIG1hcmtMYXllckNv
bXBvc2l0ZWQoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2ltdWxhdGVDb250ZXh0Q2hhbmdl
ZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2ltdWxhdGVFdmVudEZvclRlc3RpbmcoY29uc3Qg
U3RyaW5nJikgPSAwOwogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQog
ICAgIC8vIFJldHVybnMgaW50ZXJmYWNlIGZvciBDViBpbnRlcmFjdGlvbiBpZiB0aGUgZnVuY3Rp
b25hbGl0eSBpcyBwcmVzZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29j
b2EubW0KaW5kZXggODQyZmI1ZmFkYTEwNGM5MDcyMzkzODAzYTQ1OTJjY2EyYWFlY2E5ZS4uOTk4
YzIwM2YwMThlNTgxMjdiOGE1ZjAxYjRiZmYwNmMyNzM3MTFjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC01NjksOSArNTY5LDEyIEBAIGJvb2wgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAogICAgIHJldHVy
biBtX2lzRm9yV2ViR0wyOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzaW11
bGF0ZUNvbnRleHRDaGFuZ2VkKCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNpbXVs
YXRlRXZlbnRGb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKQogewotICAgIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmRpc3BsYXlXYXNSZWNv
bmZpZ3VyZWQoKTsKKyAgICBpZiAoZXZlbnROYW1lID09ICJjb250ZXh0Y2hhbmdlZCIpCisgICAg
ICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmRpc3Bs
YXlXYXNSZWNvbmZpZ3VyZWQoKTsKKyAgICBlbHNlIGlmIChldmVudE5hbWUgPT0gImZhaWxuZXh0
Z3B1c3RhdHVzY2hlY2siKQorICAgICAgICBtX2ZhaWxOZXh0U3RhdHVzQ2hlY2sgPSB0cnVlOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAppbmRleCBjYmQ2NTkxMTkzMjUxZGQx
N2QxZmIwNGQ1YzA0YWZlYjk3YjM5ZWZmLi43NWJjMDMxZmJlNzE4YmIyZmVhOGU5Mjk5ZGQyYTEz
ZGViMDFlNWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTE5
Miw4ICsxOTIsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2V0Q29udGV4dFZp
c2liaWxpdHkoYm9vbCkKIHsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2lt
dWxhdGVDb250ZXh0Q2hhbmdlZCgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzaW11
bGF0ZUV2ZW50Rm9yVGVzdGluZyhjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSkKIHsKKyAgICBpZiAo
ZXZlbnROYW1lID09ICJmYWlsbmV4dGdwdXN0YXR1c2NoZWNrIikKKyAgICAgICAgbV9mYWlsTmV4
dFN0YXR1c0NoZWNrID0gdHJ1ZTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
cHJlcGFyZUZvckRpc3BsYXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRl
eCBhYmMzODBjNzNjYTM5MGZhOTdlNmE0ZDQ1Y2VkMmUyZmQyZDJlYzU3Li5kZDk3YmI5MTQ5NzVj
OTk1ZTQzMDc2ZGQzOTExYTU4NzY3MzhhOWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuaApAQCAtNDU3LDcgKzQ1Nyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuYWJsZVByZXNl
cnZlRHJhd2luZ0J1ZmZlcigpIGZpbmFsOwogCiAgICAgdm9pZCBkaXNwYXRjaENvbnRleHRDaGFu
Z2VkTm90aWZpY2F0aW9uKCk7Ci0gICAgdm9pZCBzaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkgZmlu
YWw7CiAKICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVy
JikgZmluYWw7CiAgICAgUmVmUHRyPEltYWdlRGF0YT4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9J
bWFnZURhdGEoKSBmaW5hbDsKQEAgLTUwNyw3ICs1MDYsNyBAQCBwdWJsaWM6CiAgICAgRXh0ZW5z
aW9uc0dMJiBnZXRFeHRlbnNpb25zKCkgZmluYWw7CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0RmFp
bE5leHRHUFVTdGF0dXNDaGVjaygpIGZpbmFsIHsgbV9mYWlsTmV4dFN0YXR1c0NoZWNrID0gdHJ1
ZTsgfQorICAgIHZvaWQgc2ltdWxhdGVFdmVudEZvclRlc3RpbmcoY29uc3QgU3RyaW5nJiBldmVu
dE5hbWUpIG92ZXJyaWRlOwogCiAgICAgdW5zaWduZWQgdGV4dHVyZVNlZWQoR0NHTHVpbnQgdGV4
dHVyZSkgeyByZXR1cm4gbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmNvdW50KHRleHR1cmUpOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAxNGFiNzhlMmYzNDk2OTc3
ZjU1NGUyMjIzMDlkNGY3YTAwOGZhMGE1Li41MjNiOTRiMDA2NzQyNjFmNGIxNzM3YzFlYjkxZWVk
MTg4NmI2OGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC01MDkyLDE0
ICs1MDkyLDkgQEAgdm9pZCBJbnRlcm5hbHM6OnNldEFwcGxlUGF5SXNBY3RpdmUoRG9jdW1lbnQm
IGRvY3VtZW50KQogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCR0wpCi12b2lkIEludGVybmFsczo6
c2ltdWxhdGVXZWJHTENvbnRleHRDaGFuZ2VkKFdlYkdMUmVuZGVyaW5nQ29udGV4dCYgY29udGV4
dCkKK3ZvaWQgSW50ZXJuYWxzOjpzaW11bGF0ZUV2ZW50Rm9yV2ViR0xDb250ZXh0KGNvbnN0IFN0
cmluZyYgZXZlbnROYW1lLCBXZWJHTFJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAg
Y29udGV4dC5zaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCk7Ci19Ci0KLXZvaWQgSW50ZXJuYWxzOjpm
YWlsTmV4dEdQVVN0YXR1c0NoZWNrKFdlYkdMUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKLXsK
LSAgICBjb250ZXh0LnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKTsKKyAgICBjb250ZXh0LnNp
bXVsYXRlRXZlbnRGb3JUZXN0aW5nKGV2ZW50TmFtZSk7CiB9CiAKIGJvb2wgSW50ZXJuYWxzOjpo
YXNMb3dBbmRIaWdoUG93ZXJHUFVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4
IGIzOGVjNDQzNTdmNWM0MTcyZmRjNTI3MTE2NTZiMGU5YjQxMzJmN2IuLmMxOGJlMGRkNzhiZDNl
ODE1NjRhYWJiZmEzNTBiNWNiNWEyOWJkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aApAQCAtNzcyLDggKzc3Miw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQkdM
KQotICAgIHZvaWQgc2ltdWxhdGVXZWJHTENvbnRleHRDaGFuZ2VkKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dCYpOwotICAgIHZvaWQgZmFpbE5leHRHUFVTdGF0dXNDaGVjayhXZWJHTFJlbmRlcmluZ0Nv
bnRleHQmKTsKKyAgICB2b2lkIHNpbXVsYXRlRXZlbnRGb3JXZWJHTENvbnRleHQoY29uc3QgU3Ry
aW5nJiwgV2ViR0xSZW5kZXJpbmdDb250ZXh0Jik7CiAgICAgYm9vbCBoYXNMb3dBbmRIaWdoUG93
ZXJHUFVzKCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4
IGMyYjFkZGQ2M2UzZmI1NzMyNmJkMGZjZTZlZjMxOTEwNTcxOWJlMzEuLmJmNjQ4NzcwOGNmNGE5
YjIzNzNlMWRkNjFmY2E1NmVmYzU0ZDgyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwKQEAgLTc5MSw4ICs3OTEsNyBAQCBlbnVtIFRyZWVUeXBlIHsKICAgICB1bmRlZmluZWQg
ZGlzYWJsZVRpbGVTaXplVXBkYXRlRGVsYXkoKTsKICAgICB1bmRlZmluZWQgc2V0U3BlY3VsYXRp
dmVUaWxpbmdEZWxheURpc2FibGVkRm9yVGVzdGluZyhib29sZWFuIGRpc2FibGVkKTsKIAotICAg
IFtDb25kaXRpb25hbD1XRUJHTF0gdW5kZWZpbmVkIHNpbXVsYXRlV2ViR0xDb250ZXh0Q2hhbmdl
ZChXZWJHTFJlbmRlcmluZ0NvbnRleHQgY29udGV4dCk7Ci0gICAgW0NvbmRpdGlvbmFsPVdFQkdM
XSB1bmRlZmluZWQgZmFpbE5leHRHUFVTdGF0dXNDaGVjayhXZWJHTFJlbmRlcmluZ0NvbnRleHQg
Y29udGV4dCk7CisgICAgW0NvbmRpdGlvbmFsPVdFQkdMXSB1bmRlZmluZWQgc2ltdWxhdGVFdmVu
dEZvcldlYkdMQ29udGV4dChET01TdHJpbmcgZXZlbnROYW1lLCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQgY29udGV4dCk7CiAgICAgW0NvbmRpdGlvbmFsPVdFQkdMXSBib29sZWFuIGhhc0xvd0FuZEhp
Z2hQb3dlckdQVXMoKTsKIAogICAgIHVuZGVmaW5lZCBzZXRQYWdlVmlzaWJpbGl0eShib29sZWFu
IGlzVmlzaWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYzM5OWQ2YmZjMmNmODQzYjBjNGVkMzM3ZTQ3
NTEwZjg5YWM4YmNjNC4uOTA0NzBlZDBlMWM3ZDdiMDQ5NjE5NjFkYTZiMGVlMDIxZmY3Mzg4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIk1lZGlhT3ZlcnJpZGVz
Rm9yVGVzdGluZy5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lclByb3h5
LmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2Vy
LmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxh
eWVyUHJveHkuaCIKQEAgLTM2MCwxMCArMzYxLDE1IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
CiAKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZUdyYXBoaWNzQ29udGV4
dEdMKEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpCiB7Ci0gICAgYm9vbCBmb3VuZCA9IG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAucmVt
b3ZlKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Ci0gICAgQVNTRVJUX1VOVVNFRChmb3Vu
ZCwgZm91bmQpOworICAgIG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAucmVtb3ZlKGdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6cmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMRm9yVGVzdGluZyhHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICByZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wo
aWRlbnRpZmllcik7CiB9CiAjZW5kaWYKKwogdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpjbGVhck5vd1BsYXlpbmdJbmZvKCkKIHsKICAgICBncHVQcm9jZXNzKCkubm93UGxheWluZ01h
bmFnZXIoKS5jbGVhck5vd1BsYXlpbmdJbmZvQ2xpZW50KCp0aGlzKTsKQEAgLTU0NSw2ICs1NTEs
MTIgQEAgYm9vbCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEMKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogI2VuZGlmCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNl
aXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSkgeworICAgICAgICAvLyBTa2lwIG1lc3NhZ2VzIGZvciBhbHJlYWR5IHJl
bW92ZWQgcmVjZWl2ZXJzLgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYKIAog
ICAgIHJldHVybiBtZXNzYWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaE1lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2Rlcik7CiB9CkBAIC02MDQsNyArNjE2LDEzIEBAIGJvb2wgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICNlbmRpZgotCisjaWYgRU5BQkxFKFdF
QkdMKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAg
ICAvLyBTa2lwIG1lc3NhZ2VzIGZvciBhbHJlYWR5IHJlbW92ZWQgcmVjZWl2ZXJzLgorICAgICAg
ICByZXBseUVuY29kZXIucmVzZXQoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2Vu
ZGlmCiAgICAgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRpc3BhdGNoU3luY01lc3NhZ2Uo
Y29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggMmFm
YmVhYTRkYmI4MzJiMDYyYjM0NDhmNmRlNDk5ZjhlYzFmYTMxZS4uNjQ3YmQwMzYxMjY3N2Y4ODJh
MTNmMGQwMmRjZGI5MWU1MzZjOGNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xMjgsNyArMTI4LDkgQEAgcHVi
bGljOgogI2VuZGlmCiAKICAgICB2b2lkIHRlcm1pbmF0ZVdlYlByb2Nlc3MoKTsKLQorI2lmIEVO
QUJMRShXRUJHTCkKKyAgICB2b2lkIHJlbGVhc2VHcmFwaGljc0NvbnRleHRHTEZvclRlc3Rpbmco
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyNlbmRpZgogcHJpdmF0ZToKICAgICBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKEdQVVByb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzJiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcApp
bmRleCBjNWM3ZGVhZDI2ZWU3ZmE0ZTRmMWU0ZGRmNzQxYzM1YmM2MmZkZWZmLi4wN2I5YjVkMGMy
OWNiZWY4YTIxYTk2NGE0OGMxZjZmOGUyY2Y1MjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5j
cHAKQEAgLTI1NSw2ICsyNTUsMjAgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y29w
eVRleHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWUKICNlbmRpZgog
fQogCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpzaW11bGF0ZUV2ZW50Rm9yVGVzdGlu
ZyhTdHJpbmcmJiBldmVudE5hbWUpCit7CisgICAgLy8gRklYTUU6IG9ubHkgcnVuIHRoaXMgaW4g
dGVzdGluZyBtb2RlLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIy
NTQ0CisgICAgaWYgKGV2ZW50TmFtZSA9PSAidGltZW91dCIpIHsKKyAgICAgICAgLy8gU2ltdWxh
dGUgdGhlIHRpbWVvdXQgYnkganVzdCBkaXNjYXJkaW5nIHRoZSBjb250ZXh0LiBUaGUgc3Vic2Vx
dWVudCBtZXNzYWdlcyBhY3QgbGlrZQorICAgICAgICAvLyB1bmF1dGhvcml6ZWQgb3Igb2xkIG1l
c3NhZ2VzIGZyb20gV2ViIHByb2Nlc3MsIHRoZXkgYXJlIHNraXBwZWQuCisgICAgICAgIGNhbGxP
bk1haW5SdW5Mb29wKFtncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLCBpZGVudGlmaWVyID0gbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXJd
KCkgeworICAgICAgICAgICAgaWYgKGF1dG8gY29ubmVjdGlvblRvV2ViID0gZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uVG9XZWItPnJl
bGVhc2VHcmFwaGljc0NvbnRleHRHTEZvclRlc3RpbmcoaWRlbnRpZmllcik7CisgICAgICAgIH0p
OworICAgIH0KKyAgICBtX2NvbnRleHQtPnNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKGV2ZW50TmFt
ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmgKaW5kZXggMmJiNzRhYWNiMDc5YTA0MGY5OGFlOGNiZjViZmE3NzQ4NGYxZjU1Ny4uNTM2
NmQ4NDlmMWY0NmYyYjc5MDk1MzZhZWZhOTY5ZDY3ZDgwN2UxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmgKQEAgLTkyLDYgKzkyLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcGFpbnRSZW5kZXJp
bmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVz
dWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNvcHlUZXh0dXJlRnJvbU1lZGlhKFdl
YkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciwgdWludDMyX3QgdGV4dHVyZSwgdWludDMyX3Qg
dGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbEZvcm1hdCwgdWludDMyX3Qg
Zm9ybWF0LCB1aW50MzJfdCB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFks
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgc2ltdWxhdGVFdmVu
dEZvclRlc3RpbmcoU3RyaW5nJiYgZXZlbnROYW1lKTsKIAogI2luY2x1ZGUgIlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgiIC8vIE5PTElOVAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KaW5kZXggNzQyMWFiMDE5ZDExYzUyNTRjZDky
MjQ0MzRjYjEzNDk0MTljY2U1ZS4uYzVmNzI3Mjk2ZTEwNDBjMzI2ZjM1NzBkNGYxMzk4OTRlYzQw
MTIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgpAQCAtMzks
OCArMzksOCBAQCBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3Vu
dGVkIFN0cmVhbSB7CiAgICAgdm9pZCBQYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNo
cm9ub3VzCiAgICAgdm9pZCBQYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyKSAtPiAoKSBTeW5jaHJvbm91
cwogICAgIHZvaWQgQ29weVRleHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIHVpbnQzMl90IHRleHR1cmUsIHVpbnQzMl90IHRhcmdldCwgaW50
MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxGb3JtYXQsIHVpbnQzMl90IGZvcm1hdCwgdWlu
dDMyX3QgdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSAtPiAoYm9vbCBz
dWNjZXNzKSBTeW5jaHJvbm91cworICAgIHZvaWQgU2ltdWxhdGVFdmVudEZvclRlc3RpbmcoU3Ry
aW5nIGV2ZW50TmFtZSkKIAotICAgIHZvaWQgU2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCiAg
ICAgdm9pZCBNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSAtPiAoYm9vbCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKICAgICB2b2lkIEFjdGl2ZVRleHR1cmUodWludDMyX3QgdGV4dHVy
ZSkKICAgICB2b2lkIEF0dGFjaFNoYWRlcih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBzaGFk
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRl
ZC5oCmluZGV4IGUwZDkyOWRhNGI3N2I0ZTMwOTc4ZWUwYTFjNjlhZWRlMmZhODUzNmYuLmRiNGZi
YTU0NmQyODcwZWIwOGY5MTgzZTE5M2E1ZTFiNDhiZjY4N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9u
c0dlbmVyYXRlZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCkBAIC0yNSwxMCArMjUsNiBA
QAogLy8gVGhpcyBmaWxlIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgcHJpdmF0ZSBzZWN0aW9u
IG9mIHRoZQogLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgaW1wbGVtZW50YXRpb25zLgogI3By
YWdtYSBvbmNlCi0gICAgdm9pZCBzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkKLSAgICB7Ci0g
ICAgICAgIG1fY29udGV4dC0+c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpOwotICAgIH0KICAg
ICB2b2lkIG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdChDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIHsKICAgICAgICAgYm9vbCByZXR1
cm5WYWx1ZSA9IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0
cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggYjRmNWNkZjAwOGU1YTdmMmQyZjEwMmEyMzVj
M2MyMjUxNzMzNzZlYS4uMTczMTQ4NTdmMDVhMjI2MzJhZTBlOGMzNzI5ZWJjMGE4YmVlZDU3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29u
bmVjdGlvbi5jcHAKQEAgLTMzLDkgKzMzLDkgQEAgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBzaXplX3Qgc2kKICAg
ICAsIG1fYnVmZmVyKHNpemUpCiB7CiAgICAgLy8gUmVhZCBzdGFydHMgZnJvbSAwIHdpdGggbGlt
aXQgb2YgMCBhbmQgcmVhZGVyIHNsZWVwaW5nLgotICAgIHNoYXJlZFNlbmRlck9mZnNldCgpLnN0
b3JlKFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OnNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGlu
Z1RhZywgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisgICAgc2hhcmVkQ2xpZW50T2Zmc2V0
KCkuc3RvcmUoQ2xpZW50T2Zmc2V0OjpzZXJ2ZXJJc1NsZWVwaW5nVGFnLCBzdGQ6Om1lbW9yeV9v
cmRlcl9yZWxheGVkKTsKICAgICAvLyBXcml0ZSBzdGFydHMgZnJvbSAwIHdpdGggYSBsaW1pdCBv
ZiB0aGUgd2hvbGUgYnVmZmVyLgotICAgIHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkuc3RvcmUoMCwg
c3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisgICAgc2hhcmVkQ2xpZW50TGltaXQoKS5zdG9y
ZShzdGF0aWNfY2FzdDxDbGllbnRMaW1pdD4oMCksIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQp
OwogfQogCiB2b2lkIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNldFdha2VVcFNlbWFwaG9yZShJ
UEM6OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaAppbmRleCAwMjgzZjI2NjlkMDE1NjhjYjc2
Yzg5MWU1MjA1NzZhYzBjZWI1OGJhLi5jMzQwYTU5NDRhM2Y0ODViMjE0ODAyZDFlOWViYTM2YWU1
YTVlMTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGll
bnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbi5oCkBAIC04MCwxOSArODAsMjEgQEAgcHJpdmF0ZToKIAogICAgIFNwYW4g
YWxpZ25lZFNwYW4oc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KTsKICAgICBzaXplX3Qgc2l6
ZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpOwotICAgIHNpemVfdCBjbGFtcGVkTGltaXQo
c2l6ZV90IHVudHJ1c3RlZExpbWl0KSBjb25zdDsKIAogICAgIHNpemVfdCB3cmFwT2Zmc2V0KHNp
emVfdCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLndyYXBPZmZzZXQob2Zmc2V0KTsg
fQogICAgIHNpemVfdCBhbGlnbk9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlci5hbGlnbk9mZnNldDxtZXNzYWdlQWxpZ25tZW50PihvZmZzZXQsIG1pbmltdW1NZXNz
YWdlU2l6ZSk7IH0KLSAgICBBdG9taWM8c2l6ZV90PiYgc2hhcmVkU2VuZGVyT2Zmc2V0KCkgeyBy
ZXR1cm4gbV9idWZmZXIuc2VuZGVyT2Zmc2V0KCk7IH0KLSAgICBBdG9taWM8c2l6ZV90PiYgc2hh
cmVkUmVjZWl2ZXJPZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5yZWNlaXZlck9mZnNldCgpOyB9
CisgICAgdXNpbmcgQ2xpZW50T2Zmc2V0ID0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6Q2xpZW50
T2Zmc2V0OworICAgIEF0b21pYzxDbGllbnRPZmZzZXQ+JiBzaGFyZWRDbGllbnRPZmZzZXQoKSB7
IHJldHVybiBtX2J1ZmZlci5jbGllbnRPZmZzZXQoKTsgfQorICAgIHVzaW5nIENsaWVudExpbWl0
ID0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6U2VydmVyT2Zmc2V0OworICAgIEF0b21pYzxDbGll
bnRMaW1pdD4mIHNoYXJlZENsaWVudExpbWl0KCkgeyByZXR1cm4gbV9idWZmZXIuc2VydmVyT2Zm
c2V0KCk7IH0KKyAgICBzaXplX3QgdG9MaW1pdChDbGllbnRMaW1pdCkgY29uc3Q7CiAgICAgdWlu
dDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQogICAgIHNpemVf
dCBkYXRhU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGFTaXplKCk7IH0KIAogICAg
IENvbm5lY3Rpb24mIG1fY29ubmVjdGlvbjsKICAgICB1aW50NjRfdCBtX2N1cnJlbnREZXN0aW5h
dGlvbklEIHsgMCB9OwogCi0gICAgc2l6ZV90IG1fc2VuZGVyT2Zmc2V0IHsgMCB9OworICAgIHNp
emVfdCBtX2NsaWVudE9mZnNldCB7IDAgfTsKICAgICBTdHJlYW1Db25uZWN0aW9uQnVmZmVyIG1f
YnVmZmVyOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIE9wdGlvbmFsPFNlbWFwaG9yZT4gbV93
YWtlVXBTZW1hcGhvcmU7CkBAIC0xMzYsNyArMTM4LDYgQEAgU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6U2VuZFN5bmNSZXN1bHQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1l
c3MKICAgICAvLyBGSVhNRTogaW1wbGVtZW50IHJlY2VpdmUgdGhyb3VnaCBzdHJlYW0uCiAgICAg
c2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoV1RGTW92ZSgqc3BhbikpOwogICAgIGF1dG8g
cmVzdWx0ID0gbV9jb25uZWN0aW9uLnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUo
cmVwbHkpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHRpbWVvdXQpOwotICAgIEFTU0VSVChy
ZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTE2OCwzMCArMTY5LDMxIEBAIGlu
bGluZSB2b2lkIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmRQcm9jZXNzT3V0T2ZTdHJlYW1N
ZXNzYWdlKFNwYW4mJiBzcGFuKQogfQogaW5saW5lIE9wdGlvbmFsPFN0cmVhbUNsaWVudENvbm5l
Y3Rpb246OlNwYW4+IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeUFjcXVpcmUoVGltZW91dCB0
aW1lb3V0KQogeworICAgIENsaWVudExpbWl0IGNsaWVudExpbWl0ID0gc2hhcmVkQ2xpZW50TGlt
aXQoKS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpOworICAgIC8vIFRoaXMgd291bGQg
bWVhbiB3ZSB0cnkgdG8gc2VuZCBtZXNzYWdlcyBhZnRlciBhIHRpbWVvdXQuIEl0IGlzIGEgcHJv
Z3JhbW1pbmcgZXJyb3IuCisgICAgLy8gU2luY2UgdGhlIHZhbHVlIGlzIHRydXN0ZWQsIHdlIG9u
bHkgYXNzZXJ0LgorICAgIEFTU0VSVChjbGllbnRMaW1pdCAhPSBDbGllbnRMaW1pdDo6Y2xpZW50
SXNXYWl0aW5nVGFnKTsKKwogICAgIGZvciAoOzspIHsKLSAgICAgICAgc2l6ZV90IHNlbmRlckxp
bWl0ID0gY2xhbXBlZExpbWl0KHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkubG9hZChzdGQ6Om1lbW9y
eV9vcmRlcl9hY3F1aXJlKSk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gYWxpZ25lZFNwYW4obV9z
ZW5kZXJPZmZzZXQsIHNlbmRlckxpbWl0KTsKLSAgICAgICAgaWYgKHJlc3VsdC5zaXplIDwgbWlu
aW11bU1lc3NhZ2VTaXplKSB7Ci0gICAgICAgICAgICBpZiAodGltZW91dC5kaWRUaW1lT3V0KCkp
Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChjbGllbnRMaW1pdCAhPSBDbGll
bnRMaW1pdDo6Y2xpZW50SXNXYWl0aW5nVGFnKSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9
IGFsaWduZWRTcGFuKG1fY2xpZW50T2Zmc2V0LCB0b0xpbWl0KGNsaWVudExpbWl0KSk7CisgICAg
ICAgICAgICBpZiAocmVzdWx0LnNpemUgPj0gbWluaW11bU1lc3NhZ2VTaXplKQorICAgICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRpbWVvdXQuZGlk
VGltZU91dCgpKQorICAgICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
ICAgICAgICBzaXplX3Qgb2xkU2VuZGVyTGltaXQgPSBzaGFyZWRSZWNlaXZlck9mZnNldCgpLmNv
bXBhcmVFeGNoYW5nZVN0cm9uZyhzZW5kZXJMaW1pdCwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6
cmVjZWl2ZXJPZmZzZXRTZW5kZXJJc1dhaXRpbmdUYWcsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9y
ZWwsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOwotICAgICAgICAgICAgaWYgKHNlbmRlckxp
bWl0ID09IG9sZFNlbmRlckxpbWl0KQotICAgICAgICAgICAgICAgIG1fYnVmZmVyLnNlbmRlcldh
aXRTZW1hcGhvcmUoKS53YWl0Rm9yKHRpbWVvdXQpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgc2VuZGVyTGltaXQgPSBjbGFtcGVkTGltaXQob2xkU2VuZGVyTGltaXQpOwot
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IGFsaWduZWRTcGFuKG1fc2VuZGVyT2Zmc2V0LCBzZW5k
ZXJMaW1pdCk7Ci0gICAgICAgICAgICB9CisgICAgICAgIENsaWVudExpbWl0IG9sZENsaWVudExp
bWl0ID0gc2hhcmVkQ2xpZW50TGltaXQoKS5jb21wYXJlRXhjaGFuZ2VTdHJvbmcoY2xpZW50TGlt
aXQsIENsaWVudExpbWl0OjpjbGllbnRJc1dhaXRpbmdUYWcsIHN0ZDo6bWVtb3J5X29yZGVyX2Fj
cV9yZWwsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAgICAgICBpZiAoY2xpZW50TGlt
aXQgPT0gb2xkQ2xpZW50TGltaXQpCisgICAgICAgICAgICBtX2J1ZmZlci5jbGllbnRXYWl0U2Vt
YXBob3JlKCkud2FpdEZvcih0aW1lb3V0KTsKICNlbHNlCi0gICAgICAgICAgICBUaHJlYWQ6Onlp
ZWxkKCk7CisgICAgICAgIFRocmVhZDo6eWllbGQoKTsKKyAgICAgICAgY2xpZW50TGltaXQgPSBz
aGFyZWRDbGllbnRMaW1pdCgpLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSk7CiAjZW5k
aWYKLSAgICAgICAgfQotICAgICAgICBpZiAocmVzdWx0LnNpemUgPj0gbWluaW11bU1lc3NhZ2VT
aXplKQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgLy8gVGhlIGFsaWduZWRT
cGFuIHVzZXMgdGhlIG1pbmltdW1NZXNzYWdlU2l6ZSB0byBjYWxjdWxhdGUgdGhlIG5leHQgYmVn
aW5uaW5nIHBvc2l0aW9uIGluIHRoZSBidWZmZXIsCiAgICAgICAgIC8vIGFuZCBub3QgdGhlIHNp
emUuIFRoZSBzaXplIG1pZ2h0IGJlIG1vcmUgb3IgbGVzcyB3aGF0IGlzIG5lZWRlZCwgZGVwZW5k
aW5nIG9uIHdoZXJlIHRoZSByZWFkZXIgaXMuCiAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGNh
cGFjaXR5IGZvciBtaW5pbXVtIG1lc3NhZ2Ugc2l6ZSwgd2FpdCB1bnRpbCBtb3JlIGlzIGF2YWls
YWJsZS4KLSAgICAgICAgLy8gSW4gdGhlIGNhc2Ugd2hlcmUgc2VuZGVyT2Zmc2V0IDwgcmVjZWl2
ZXJPZmZzZXQgd2UgY2FuIGFycml2ZSB0byBhIHNpdHVhdGlvbiB3aGVyZQorICAgICAgICAvLyBJ
biB0aGUgY2FzZSB3aGVyZSBjbGllbnRPZmZzZXQgPCBjbGllbnRMaW1pdCB3ZSBjYW4gYXJyaXZl
IHRvIGEgc2l0dWF0aW9uIHdoZXJlCiAgICAgICAgIC8vIDAgPCByZXN1bHQuc2l6ZSA8IG1pbmlt
dW1NZXNzYWdlU2l6ZS4KICAgICB9CiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTIwMCwx
MyArMjAyLDEzIEBAIGlubGluZSBPcHRpb25hbDxTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTcGFu
PiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlCiBpbmxpbmUgU3RyZWFtQ2xpZW50
Q29ubmVjdGlvbjo6V2FrZVVwUmVjZWl2ZXIgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6cmVsZWFz
ZShzaXplX3Qgc2l6ZSkKIHsKICAgICBzaXplID0gc3RkOjptYXgoc2l6ZSwgbWluaW11bU1lc3Nh
Z2VTaXplKTsKLSAgICBtX3NlbmRlck9mZnNldCA9IHdyYXBPZmZzZXQoYWxpZ25PZmZzZXQobV9z
ZW5kZXJPZmZzZXQpICsgc2l6ZSk7Ci0gICAgQVNTRVJUKG1fc2VuZGVyT2Zmc2V0IDwgZGF0YVNp
emUoKSk7Ci0gICAgLy8gSWYgdGhlIHJlY2VpdmVyIHdyb3RlIG92ZXIgdGhlIHNlbmRlck9mZnNl
dCB3aXRoIHNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZywgd2Uga25vdyBpdCBpcyBz
bGVlcGluZy4KLSAgICBzaXplX3QgcmVjZWl2ZXJMaW1pdCA9IHNoYXJlZFNlbmRlck9mZnNldCgp
LmV4Y2hhbmdlKG1fc2VuZGVyT2Zmc2V0LCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKLSAg
ICBpZiAocmVjZWl2ZXJMaW1pdCA9PSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJPZmZz
ZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcpCisgICAgbV9jbGllbnRPZmZzZXQgPSB3cmFwT2Zmc2V0
KGFsaWduT2Zmc2V0KG1fY2xpZW50T2Zmc2V0KSArIHNpemUpOworICAgIEFTU0VSVChtX2NsaWVu
dE9mZnNldCA8IGRhdGFTaXplKCkpOworICAgIC8vIElmIHRoZSByZWNlaXZlciB3cm90ZSBvdmVy
IHRoZSBjbGllbnRPZmZzZXQgd2l0aCBzZXJ2ZXJJc1NsZWVwaW5nVGFnLCB3ZSBrbm93IGl0IGlz
IHNsZWVwaW5nLgorICAgIENsaWVudE9mZnNldCBvbGRDbGllbnRPZmZzZXQgPSBzaGFyZWRDbGll
bnRPZmZzZXQoKS5leGNoYW5nZShzdGF0aWNfY2FzdDxDbGllbnRPZmZzZXQ+KG1fY2xpZW50T2Zm
c2V0KSwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7CisgICAgaWYgKG9sZENsaWVudE9mZnNl
dCA9PSBDbGllbnRPZmZzZXQ6OnNlcnZlcklzU2xlZXBpbmdUYWcpCiAgICAgICAgIHJldHVybiBX
YWtlVXBSZWNlaXZlcjo6WWVzOwotICAgIEFTU0VSVCghKHJlY2VpdmVyTGltaXQgJiBTdHJlYW1D
b25uZWN0aW9uQnVmZmVyOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcpKTsKKyAg
ICBBU1NFUlQoIShvbGRDbGllbnRPZmZzZXQgJiBDbGllbnRPZmZzZXQ6OnNlcnZlcklzU2xlZXBp
bmdUYWcpKTsKICAgICByZXR1cm4gV2FrZVVwUmVjZWl2ZXI6Ok5vOwogfQogCkBAIC0yMzUsMTAg
KzIzNywxMSBAQCBpbmxpbmUgc2l6ZV90IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNpemUoc2l6
ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KQogICAgIHJldHVybiBsaW1pdCAtIG9mZnNldCAtIDE7
CiB9CiAKLWlubGluZSBzaXplX3QgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6Y2xhbXBlZExpbWl0
KHNpemVfdCB1bnRydXN0ZWRMaW1pdCkgY29uc3QKK2lubGluZSBzaXplX3QgU3RyZWFtQ2xpZW50
Q29ubmVjdGlvbjo6dG9MaW1pdChDbGllbnRMaW1pdCBjbGllbnRMaW1pdCkgY29uc3QKIHsKLSAg
ICBBU1NFUlQodW50cnVzdGVkTGltaXQgPCAoZGF0YVNpemUoKSAtIDEpKTsKLSAgICByZXR1cm4g
c3RkOjptaW4odW50cnVzdGVkTGltaXQsIGRhdGFTaXplKCkgLSAxKTsKKyAgICBBU1NFUlQoIShj
bGllbnRMaW1pdCAmIENsaWVudExpbWl0OjpjbGllbnRJc1dhaXRpbmdUYWcpKTsKKyAgICBBU1NF
UlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihjbGllbnRMaW1pdCkgPD0gZGF0YVNpemUoKSAtIDEpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KGNsaWVudExpbWl0KTsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVy
LmNwcAppbmRleCA5YzVmN2YzMWU1MzNkZDNiZGJlOGY0NWI2NmJlYzhjZjc1ODczN2E3Li5jMjFi
ZGM2OGY4ZmQ3NWFmY2VhODllMWQ2YjA2OWQ1Yzc4ZjRhYTBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcApAQCAtNDUs
MTAgKzQ1LDEwIEBAIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OlN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXIoc2l6ZV90IG1lbW9yeVNpemUpCiAgICAgQVNTRVJUKG1fZGF0YVNpemUgPD0gbWF4aW11bVNp
emUoKSk7CiB9CiAKLVN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OlN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXIoUmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5PiYmIG1lbW9yeSwgc2l6ZV90IG1lbW9yeVNpemUs
IFNlbWFwaG9yZSYmIHNlbmRlcldhaXRTZW1hcGhvcmUpCitTdHJlYW1Db25uZWN0aW9uQnVmZmVy
OjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyKFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4mJiBtZW1v
cnksIHNpemVfdCBtZW1vcnlTaXplLCBTZW1hcGhvcmUmJiBjbGllbnRXYWl0U2VtYXBob3JlKQog
ICAgIDogbV9kYXRhU2l6ZShtZW1vcnlTaXplIC0gaGVhZGVyU2l6ZSgpKQogICAgICwgbV9zaGFy
ZWRNZW1vcnkoV1RGTW92ZShtZW1vcnkpKQotICAgICwgbV9zZW5kZXJXYWl0U2VtYXBob3JlKFdU
Rk1vdmUoc2VuZGVyV2FpdFNlbWFwaG9yZSkpCisgICAgLCBtX2NsaWVudFdhaXRTZW1hcGhvcmUo
V1RGTW92ZShjbGllbnRXYWl0U2VtYXBob3JlKSkKIHsKICAgICBBU1NFUlQobV9kYXRhU2l6ZSA8
PSBtYXhpbXVtU2l6ZSgpKTsKIH0KQEAgLTYyLDcgKzYyLDcgQEAgU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlciYgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6b3BlcmF0b3I9KFN0cmVhbUNvbm5lY3Rpb25C
dWZmZXIKICAgICBpZiAodGhpcyAhPSAmb3RoZXIpIHsKICAgICAgICAgbV9kYXRhU2l6ZSA9IG90
aGVyLm1fZGF0YVNpemU7CiAgICAgICAgIG1fc2hhcmVkTWVtb3J5ID0gV1RGTW92ZShvdGhlci5t
X3NoYXJlZE1lbW9yeSk7Ci0gICAgICAgIG1fc2VuZGVyV2FpdFNlbWFwaG9yZSA9IFdURk1vdmUo
b3RoZXIubV9zZW5kZXJXYWl0U2VtYXBob3JlKTsKKyAgICAgICAgbV9jbGllbnRXYWl0U2VtYXBo
b3JlID0gV1RGTW92ZShvdGhlci5tX2NsaWVudFdhaXRTZW1hcGhvcmUpOwogICAgIH0KICAgICBy
ZXR1cm4gKnRoaXM7CiB9CkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgICAgIENSQVNIKCk7CiAg
ICAgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGUgeyBXVEZNb3ZlKGhh
bmRsZSksIG1fc2hhcmVkTWVtb3J5LT5zaXplKCkgfTsKICAgICBlbmNvZGVyIDw8IGlwY0hhbmRs
ZTsKLSAgICBlbmNvZGVyIDw8IG1fc2VuZGVyV2FpdFNlbWFwaG9yZTsKKyAgICBlbmNvZGVyIDw8
IG1fY2xpZW50V2FpdFNlbWFwaG9yZTsKIH0KIAogT3B0aW9uYWw8U3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlcj4gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVm
ZmVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVy
LmgKaW5kZXggOTZmMGI4ZDA0MTM3MjAzYjU1ZWJkNDFjZmUxYjg4ZjA3OGQ5ZDA3Zi4uYTIyNDEw
ZTNlYmRlYzAyMjg0OTVjNjk2ODQ1M2NhMjAzNDc2OTQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaApAQCAtNDAsMjMgKzQw
LDI0IEBAIG5hbWVzcGFjZSBJUEMgewogLy8gVGhlICJiaS1wYXJ0aXRlIiBpcyBoZXJlIHRvIG1l
YW4gdGhhdCB3cml0ZXMgYW5kIHJlYWRzIHRvIHRoZSBidWZmZXIgbXVzdCBiZQogLy8gY29udGlu
dW91cy4KIC8vCi0vLyBUaGUgY2xpZW50IChzZW5kZXIgb3IgcmVjZWl2ZXIpICJhY3F1aXJlcyIg
c29tZSBhbW91bnQgb2YgYnVmZmVyIGRhdGEuIFRoZSBkYXRhIHBvaW50ZXIKKy8vIFRoZSBjYWxs
ZXIgKGNsaWVudCBvciBzZXJ2ZXIpICJhY3F1aXJlcyIgc29tZSBhbW91bnQgb2YgYnVmZmVyIGRh
dGEuIFRoZSBkYXRhIHBvaW50ZXIKIC8vIGxvY2F0aW9uIGRlcGVuZHMgb24gdGhlIGFtb3VudCBv
ZiBkYXRhIGJlaW5nIGFjcXVpcmVkLiBUaGUgYnVmZmVyIHJldHVybnMgYWxsIHRoZSBhdmFpbGFi
bGUKIC8vIGNhcGFjaXR5IC0tIHRoaXMgbWF5IGJlIGxlc3MgdGhhbiBhY3F1aXJlZC4KIC8vCiAv
LyBUaGUgY2xpZW50ICJyZWxlYXNlcyIgdGhlIHNvbWUgYW1vdW50IG9mIGRhdGEsIGF0IGxlYXN0
IHRoZSBhbW91bnQgYWNxdWlyZWQgYnV0IHBvdGVudGlhbGx5CiAvLyBtb3JlLgogLy8KLS8vIEJv
dGggc2VuZGVyIGFuZCByZWNlaXZlciBtdXN0IHJlbGVhc2UgdGhlIHNhbWUgYW1vdW50IG9mIGRh
dGEgYXQgdGhlIHNhbWUgc3RlcCBvZiB0aGUgYWNxdWlyZS9yZWxlYXNlIHNlcXVlbmNlLgotLy8g
U3VwcG9zZSBzZW5kZXIgcmVsZWFzZXMgZmlyc3QgOCBhbmQgdGhlbiAxNjYgYnl0ZXMuIFVwb24g
dGhlIGZpcnN0IGFjcXVpcmUsIHJlY2VpdmVyCisvLyBCb3RoIHRoZSBjbGllbnQgYW5kIHRoZSBz
ZXJ2ZXIgbXVzdCByZWxlYXNlIHRoZSBzYW1lIGFtb3VudCBvZiBkYXRhIGF0IHRoZSBzYW1lIHN0
ZXAgb2YgdGhlCisvLyBhY3F1aXJlL3JlbGVhc2Ugc2VxdWVuY2UuCisvLyBTdXBwb3NlIHRoZSBj
bGllbnQgcmVsZWFzZXMgZmlyc3QgOCBhbmQgdGhlbiAxNjYgYnl0ZXMuIFVwb24gdGhlIGZpcnN0
IGFjcXVpcmUsIHRoZSBzZXJ2ZXIKIC8vIG11c3QgYWxzbyByZWxlYXNlIDggYnl0ZXMgYW5kIHRo
ZW4gdXBvbiB0aGUgc2Vjb25kIGFjcXVpcmUgMTY2IGJ5dGVzLgogLy8gRHVlIHRvIGhvdyBhbGln
bm1lbnQgYW5kIG1pbmltdW0gbGVuZ3RoIGFmZmVjdCB0aGUgcG9zaXRpb24gYXQgd2hpY2ggdGhl
IG1lbW9yeSBjYW4KLS8vIGJlIHJlZmVycmVkIHRvLCB0aGUgcmVjZWl2ZXIgY2Fubm90ICJyZWFk
IHR3byB0aW1lcyBzaW11bHRhbmVvdXNseSIgYW5kIHJlbGVhc2UgMTc0IGJ5dGVzLgorLy8gYmUg
cmVmZXJyZWQgdG8sIHRoZSBzZXJ2ZXIgY2Fubm90ICJyZWFkIHR3byB0aW1lcyBzaW11bHRhbmVv
dXNseSIgYW5kIHJlbGVhc2UgMTc0IGJ5dGVzLgogLy8KIC8vIFRoZSBjaXJjdWxhciBidWZmZXIg
aGFzIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvbjoKLS8vICogU2VuZGVyIG93bnMgdGhlIGRhdGEg
YmV0d2VlbiBbc2VuZGVyT2Zmc2V0LCByZWNlaXZlck9mZnNldFsuIFdoZW4gc2VuZGVyT2Zmc2V0
ID09Ci0vLyByZWNlaXZlck9mZnNldCwgc2VuZGVyIG93bnMgYWxsIHRoZSBkYXRhLgotLy8gKiBS
ZWNlaXZlciBvd25zIHRoZSBkYXRhIGJldHdlZW4gW3JlY2VpdmVyT2Zmc2V0LCBzZW5kZXJPZmZz
ZXRbLgorLy8gKiBUaGUgY2xpZW50IG93bnMgdGhlIGRhdGEgYmV0d2VlbiBbY2xpZW50T2Zmc2V0
LCBzZXJ2ZXJPZmZzZXRbLiBXaGVuIGNsaWVudE9mZnNldCA9PQorLy8gc2VydmVyT2Zmc2V0LCB0
aGUgY2xpZW50IG93bnMgYWxsIHRoZSBkYXRhLgorLy8gKiBUaGUgc2VydmVyIG93bnMgdGhlIGRh
dGEgYmV0d2VlbiBbc2VydmVyT2Zmc2V0LCBjbGllbnRPZmZzZXRbLgogLy8gKiBUaGUgYnVmZmVy
IGNhbiBob2xkIG1heGltdW0gb2Ygc2l6ZSAtIDEgdmFsdWVzLiBUaGUgbGFzdCB2YWx1ZSBpcyBy
ZXNlcnZlZCBmb3IKIC8vIGluZGljYXRpbmcgdGhhdCB0aGUgYnVmZmVyIGlzIGZ1bGwuIEZJWE1F
OiBNYXliZSB3b3VsZCBiZSBzaW1wbGVyIGltcGxlbWVudGF0aW9uIGlmCiAvLyBpdCB3b3VsZCB1
c2UgdGhlICJ3cmFwIiBmbGFnIGluc3RlYWQgb2YgdGhlIGhvbGUgYXMgdGhlIGluZGljYXRvci4g
VGhpcyB3b3VsZCBtb3ZlCkBAIC04OCwzNyArODksNDUgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gb2Zmc2V0OwogICAgIH0KIAotICAgIEF0b21pYzxzaXplX3Q+JiBzZW5kZXJPZmZzZXQoKSB7
IHJldHVybiBoZWFkZXIoKS5zZW5kZXJPZmZzZXQ7IH0KLSAgICBBdG9taWM8c2l6ZV90PiYgcmVj
ZWl2ZXJPZmZzZXQoKSB7IHJldHVybiBoZWFkZXIoKS5yZWNlaXZlck9mZnNldDsgfQorICAgIC8v
IFZhbHVlIGRlbm90aW5nIHRoZSBjbGllbnQgaW5kZXggdG8gdGhlIGJ1ZmZlciwgd2l0aCBzcGVj
aWFsIHRhZyB2YWx1ZXMuCisgICAgLy8gVGhlIGNsaWVudCB0cnVzdHMgdGhpcy4gVGhlIHNlcnZl
ciBjb252ZXJ0cyB0aGUgdmFsdWUgdG8gdHJ1c3RlZCBzaXplX3Qgb2Zmc2V0IHdpdGggYSBzcGVj
aWFsIGZ1bmN0aW9uLgorICAgIGVudW0gQ2xpZW50T2Zmc2V0IDogc2l6ZV90IHsKKyAgICAgICAg
Ly8gVGFnIHZhbHVlIHN0b3JlZCBpbiB3aGVuIHRoZSBzZXJ2ZXIgaXMgc2xlZXBpbmcsIGUuZy4g
bm90IHJ1bm5pbmcuCisgICAgICAgIHNlcnZlcklzU2xlZXBpbmdUYWcgPSAxdSA8PCAzMQorICAg
IH07CisKKyAgICAvLyBWYWx1ZSBkZW5vdGluZyB0aGUgc2VydmVyIGluZGV4IHRvIHRoZSBidWZm
ZXIsIHdpdGggc3BlY2lhbCB0YWcgdmFsdWVzLgorICAgIC8vIFRoZSBjbGllbnQgdHJ1c3RzIHRo
aXMuIFRoZSBzZXJ2ZXIgY29udmVydHMgdGhlIHZhbHVlIHRvIHRydXN0ZWQgc2l6ZV90IG9mZnNl
dCB3aXRoIGEgc3BlY2lhbCBmdW5jdGlvbi4KKyAgICBlbnVtIFNlcnZlck9mZnNldCA6IHNpemVf
dCB7CisgICAgICAgIC8vIFRhZyB2YWx1ZSBzdG9yZWQgd2hlbiB0aGUgY2xpZW50IGlzIHdhaXRp
bmcsIGUuZy4gd2FpdGluZyBvbiBhIHNlbWFwaG9yZS4KKyAgICAgICAgY2xpZW50SXNXYWl0aW5n
VGFnID0gMXUgPDwgMzEKKyAgICB9OworCisgICAgQXRvbWljPENsaWVudE9mZnNldD4mIGNsaWVu
dE9mZnNldCgpIHsgcmV0dXJuIGhlYWRlcigpLmNsaWVudE9mZnNldDsgfQorICAgIEF0b21pYzxT
ZXJ2ZXJPZmZzZXQ+JiBzZXJ2ZXJPZmZzZXQoKSB7IHJldHVybiBoZWFkZXIoKS5zZXJ2ZXJPZmZz
ZXQ7IH0KICAgICB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dWlu
dDhfdCo+KG1fc2hhcmVkTWVtb3J5LT5kYXRhKCkpICsgaGVhZGVyU2l6ZSgpOyB9CiAgICAgc2l6
ZV90IGRhdGFTaXplKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhU2l6ZTsgfQotICAgIFNlbWFwaG9y
ZSYgc2VuZGVyV2FpdFNlbWFwaG9yZSgpIHsgcmV0dXJuIG1fc2VuZGVyV2FpdFNlbWFwaG9yZTsg
fQotCi0gICAgLy8gVGFnIHZhbHVlIHN0b3JlZCBpbiBIZWFkZXI6OnNlbmRlck9mZnNldCB3aGVu
IHJlY2VpdmVyIGlzIHNsZWVwaW5nLCBlLmcuIG5vdCBydW5uaW5nLgotICAgIHN0YXRpYyBjb25z
dGV4cHIgc2l6ZV90IHNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZyA9IDEgPDwgMzE7
Ci0gICAgLy8gVGFnIHZhbHVlIHN0b3JlZCBpbiBIZWFkZXI6OnJlY2VpdmVyT2Zmc2V0IHdoZW4g
c2VuZGVyIGlzIHdhaXRpbmcsIGUuZy4gd2FpdGluZyBvbgotICAgIC8vIGEgc2VtYXBob3JlLgot
ICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHJlY2VpdmVyT2Zmc2V0U2VuZGVySXNXYWl0aW5n
VGFnID0gMSA8PCAzMTsKKyAgICBTZW1hcGhvcmUmIGNsaWVudFdhaXRTZW1hcGhvcmUoKSB7IHJl
dHVybiBtX2NsaWVudFdhaXRTZW1hcGhvcmU7IH0KIAotICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6
ZV90IG1heGltdW1TaXplKCkgeyByZXR1cm4gc3RkOjptaW4oc2VuZGVyT2Zmc2V0UmVjZWl2ZXJJ
c1NsZWVwaW5nVGFnLCBzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcpIC0gMTsgfQor
ICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1heGltdW1TaXplKCkgeyByZXR1cm4gc3RkOjpt
aW4oc3RhdGljX2Nhc3Q8c2l6ZV90PihDbGllbnRPZmZzZXQ6OnNlcnZlcklzU2xlZXBpbmdUYWcp
LCBzdGF0aWNfY2FzdDxzaXplX3Q+KENsaWVudE9mZnNldDo6c2VydmVySXNTbGVlcGluZ1RhZykp
IC0gMTsgfQogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICBzdGF0aWMgT3B0
aW9uYWw8U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0
ZToKLSAgICBTdHJlYW1Db25uZWN0aW9uQnVmZmVyKFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4m
Jiwgc2l6ZV90IG1lbW9yeVNpemUsIFNlbWFwaG9yZSYmIHNlbmRlcldhaXRTZW1hcGhvcmUpOwor
ICAgIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoUmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5PiYmLCBz
aXplX3QgbWVtb3J5U2l6ZSwgU2VtYXBob3JlJiYgY2xpZW50V2FpdFNlbWFwaG9yZSk7CiAKICAg
ICBzdHJ1Y3QgSGVhZGVyIHsKLSAgICAgICAgQXRvbWljPHNpemVfdD4gcmVjZWl2ZXJPZmZzZXQ7
CisgICAgICAgIEF0b21pYzxTZXJ2ZXJPZmZzZXQ+IHNlcnZlck9mZnNldDsKICAgICAgICAgLy8g
UGFkZGluZyBzbyB0aGF0IHRoZSB2YXJpYWJsZXMgbW9zdGx5IGFjY2Vzc2VkIGJ5IGRpZmZlcmVu
dCBwcm9jZXNzZXMgZG8gbm90IHNoYXJlIGEgY2FjaGUgbGluZS4KICAgICAgICAgLy8gVGhpcyBp
cyBhbiBhdHRlbXB0IHRvIGF2b2lkIGNhY2hlLWxpbmUgaW5kdWNlZCByZWR1Y3Rpb24gb2YgcGFy
YWxsZWwgYWNjZXNzLgotICAgICAgICBhbGlnbmFzKHNpemVvZih1aW50NjRfdFsyXSkpIEF0b21p
YzxzaXplX3Q+IHNlbmRlck9mZnNldDsKKyAgICAgICAgYWxpZ25hcyhzaXplb2YodWludDY0X3Rb
Ml0pKSBBdG9taWM8Q2xpZW50T2Zmc2V0PiBjbGllbnRPZmZzZXQ7CiAgICAgfTsKICAgICBIZWFk
ZXImIGhlYWRlcigpIGNvbnN0IHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PEhlYWRlcio+KG1f
c2hhcmVkTWVtb3J5LT5kYXRhKCkpOyB9CiAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgaGVh
ZGVyU2l6ZSgpIHsgcmV0dXJuIHJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKHN0ZDo6bWF4X2Fs
aWduX3QpPihzaXplb2YoSGVhZGVyKSk7IH0KIAogICAgIHNpemVfdCBtX2RhdGFTaXplIHsgMCB9
OwogICAgIFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7Ci0gICAgU2Vt
YXBob3JlIG1fc2VuZGVyV2FpdFNlbWFwaG9yZTsKKyAgICBTZW1hcGhvcmUgbV9jbGllbnRXYWl0
U2VtYXBob3JlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCAxNGQ0ODRiNzhmYmY5ZGY2ZGY4YTlm
ZGI3ZThjYTg5YWQ1N2U1M2JhLi44ZTQ5MjY2NDRhODA4NjM2OWVmN2NjODlhNDAyYjI4Yjk2MDE3
YTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uLmNwcApAQCAtNjEsNDEgKzYxLDQxIEBAIHZvaWQgU3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2U6OmVucXVldWVNZXNzYWdlKENvbm5lY3Rpb24mLCBzdGQ6OnVuaXF1ZV9wdHI8
RGVjCiAKIE9wdGlvbmFsPFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpTcGFuPiBTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uQmFzZTo6dHJ5QXF1aXJlKCkKIHsKLSAgICBzaXplX3QgcmVjZWl2ZXJM
aW1pdCA9IHNoYXJlZFNlbmRlck9mZnNldCgpLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWly
ZSk7Ci0gICAgaWYgKHJlY2VpdmVyTGltaXQgPT0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2Vu
ZGVyT2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnKQorICAgIFNlcnZlckxpbWl0IHNlcnZlckxp
bWl0ID0gc2hhcmVkU2VydmVyTGltaXQoKS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUp
OworICAgIGlmIChzZXJ2ZXJMaW1pdCA9PSBTZXJ2ZXJMaW1pdDo6c2VydmVySXNTbGVlcGluZ1Rh
ZykKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBhdXRvIHJlc3VsdCA9IGFsaWdu
ZWRTcGFuKG1fcmVjZWl2ZXJPZmZzZXQsIHJlY2VpdmVyTGltaXQpOworCisgICAgYXV0byByZXN1
bHQgPSBhbGlnbmVkU3BhbihtX3NlcnZlck9mZnNldCwgY2xhbXBlZExpbWl0KHNlcnZlckxpbWl0
KSk7CiAgICAgaWYgKHJlc3VsdC5zaXplIDwgbWluaW11bU1lc3NhZ2VTaXplKSB7Ci0gICAgICAg
IHJlY2VpdmVyTGltaXQgPSBzaGFyZWRTZW5kZXJPZmZzZXQoKS5jb21wYXJlRXhjaGFuZ2VTdHJv
bmcocmVjZWl2ZXJMaW1pdCwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0UmVj
ZWl2ZXJJc1NsZWVwaW5nVGFnLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsLCBzdGQ6Om1lbW9y
eV9vcmRlcl9hY3FfcmVsKTsKLSAgICAgICAgQVNTRVJUKCEocmVjZWl2ZXJMaW1pdCAmIFN0cmVh
bUNvbm5lY3Rpb25CdWZmZXI6OnNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZykpOwot
ICAgICAgICByZWNlaXZlckxpbWl0ID0gY2xhbXBlZExpbWl0KHJlY2VpdmVyTGltaXQpOwotICAg
ICAgICByZXN1bHQgPSBhbGlnbmVkU3BhbihtX3JlY2VpdmVyT2Zmc2V0LCByZWNlaXZlckxpbWl0
KTsKKyAgICAgICAgc2VydmVyTGltaXQgPSBzaGFyZWRTZXJ2ZXJMaW1pdCgpLmNvbXBhcmVFeGNo
YW5nZVN0cm9uZyhzZXJ2ZXJMaW1pdCwgU2VydmVyTGltaXQ6OnNlcnZlcklzU2xlZXBpbmdUYWcs
IHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOwor
ICAgICAgICByZXN1bHQgPSBhbGlnbmVkU3BhbihtX3NlcnZlck9mZnNldCwgY2xhbXBlZExpbWl0
KHNlcnZlckxpbWl0KSk7CiAgICAgfQogCi0gICAgaWYgKHJlc3VsdC5zaXplID49IG1pbmltdW1N
ZXNzYWdlU2l6ZSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIGlmIChyZXN1bHQuc2l6ZSA8IG1pbmltdW1NZXNzYWdlU2l6ZSkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnJlbGVhc2Uoc2l6ZV90IHJlYWRTaXplKQogewogICAg
IEFTU0VSVChyZWFkU2l6ZSk7CiAgICAgcmVhZFNpemUgPSBzdGQ6Om1heChyZWFkU2l6ZSwgbWlu
aW11bU1lc3NhZ2VTaXplKTsKLSAgICBzaXplX3QgcmVjZWl2ZXJPZmZzZXQgPSB3cmFwT2Zmc2V0
KGFsaWduT2Zmc2V0KG1fcmVjZWl2ZXJPZmZzZXQpICsgcmVhZFNpemUpOworICAgIFNlcnZlck9m
ZnNldCBzZXJ2ZXJPZmZzZXQgPSBzdGF0aWNfY2FzdDxTZXJ2ZXJPZmZzZXQ+KHdyYXBPZmZzZXQo
YWxpZ25PZmZzZXQobV9zZXJ2ZXJPZmZzZXQpICsgcmVhZFNpemUpKTsKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQotICAgIHNpemVfdCBvbGRSZWNlaXZlck9mZnNldCA9IHNoYXJlZFJlY2VpdmVyT2Zm
c2V0KCkuZXhjaGFuZ2UocmVjZWl2ZXJPZmZzZXQsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwp
OwotICAgIC8vIElmIHRoZSBzZW5kZXIgd3JvdGUgb3ZlciByZWNlaXZlck9mZnNldCwgaXQgbWVh
bnMgdGhlIHNlbmRlciBpcyB3YWl0aW5nLgotICAgIGlmIChvbGRSZWNlaXZlck9mZnNldCA9PSBT
dHJlYW1Db25uZWN0aW9uQnVmZmVyOjpyZWNlaXZlck9mZnNldFNlbmRlcklzV2FpdGluZ1RhZykK
LSAgICAgICAgbV9idWZmZXIuc2VuZGVyV2FpdFNlbWFwaG9yZSgpLnNpZ25hbCgpOworICAgIFNl
cnZlck9mZnNldCBvbGRTZXJ2ZXJPZmZzZXQgPSBzaGFyZWRTZXJ2ZXJPZmZzZXQoKS5leGNoYW5n
ZShzZXJ2ZXJPZmZzZXQsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAgIC8vIElmIHRo
ZSBzZW5kZXIgd3JvdGUgb3ZlciBzZXJ2ZXJPZmZzZXQsIGl0IG1lYW5zIHRoZSBzZW5kZXIgaXMg
d2FpdGluZy4KKyAgICBpZiAob2xkU2VydmVyT2Zmc2V0ID09IFNlcnZlck9mZnNldDo6Y2xpZW50
SXNXYWl0aW5nVGFnKQorICAgICAgICBtX2J1ZmZlci5jbGllbnRXYWl0U2VtYXBob3JlKCkuc2ln
bmFsKCk7CiAgICAgZWxzZQotICAgICAgICBBU1NFUlQoIShvbGRSZWNlaXZlck9mZnNldCAmIFN0
cmVhbUNvbm5lY3Rpb25CdWZmZXI6OnJlY2VpdmVyT2Zmc2V0U2VuZGVySXNXYWl0aW5nVGFnKSk7
CisgICAgICAgIEFTU0VSVCghKG9sZFNlcnZlck9mZnNldCAmIFNlcnZlck9mZnNldDo6Y2xpZW50
SXNXYWl0aW5nVGFnKSk7CiAjZWxzZQotICAgIHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkuc3RvcmUo
cmVjZWl2ZXJPZmZzZXQsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGVhc2UpOworICAgIHNoYXJlZFNl
cnZlck9mZnNldCgpLnN0b3JlKHNlcnZlck9mZnNldCwgc3RkOjptZW1vcnlfb3JkZXJfcmVsZWFz
ZSk7CiAgICAgLy8gSVBDOjpTZW1hcGhvcmUgbm90IGltcGxlbWVudGVkIGZvciB0aGUgcGxhdGZv
cm0uIENsaWVudCB3aWxsIHBvbGwgYW5kIHlpZWxkLgogI2VuZGlmCiAKLSAgICBtX3JlY2VpdmVy
T2Zmc2V0ID0gcmVjZWl2ZXJPZmZzZXQ7CisgICAgbV9zZXJ2ZXJPZmZzZXQgPSBzZXJ2ZXJPZmZz
ZXQ7CiB9CiAKIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpTcGFuIFN0cmVhbVNlcnZlckNv
bm5lY3Rpb25CYXNlOjphbGlnbmVkU3BhbihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpCkBA
IC0xMjEsMTAgKzEyMSwxMiBAQCBzaXplX3QgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNp
emUoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KQogICAgIHJldHVybiBkYXRhU2l6ZSgpIC0g
b2Zmc2V0OwogfQogCi1zaXplX3QgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmNsYW1wZWRM
aW1pdChzaXplX3QgdW50cnVzdGVkTGltaXQpIGNvbnN0CitzaXplX3QgU3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2U6OmNsYW1wZWRMaW1pdChTZXJ2ZXJMaW1pdCBzZXJ2ZXJMaW1pdCkgY29uc3QK
IHsKLSAgICBBU1NFUlQodW50cnVzdGVkTGltaXQgPCAoZGF0YVNpemUoKSAtIDEpKTsKLSAgICBy
ZXR1cm4gc3RkOjptaW4odW50cnVzdGVkTGltaXQsIGRhdGFTaXplKCkgLSAxKTsKKyAgICBBU1NF
UlQoIShzZXJ2ZXJMaW1pdCAmIFNlcnZlckxpbWl0OjpzZXJ2ZXJJc1NsZWVwaW5nVGFnKSk7Cisg
ICAgc2l6ZV90IGxpbWl0ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzZXJ2ZXJMaW1pdCk7CisgICAg
QVNTRVJUKGxpbWl0IDw9IGRhdGFTaXplKCkgLSAxKTsKKyAgICByZXR1cm4gc3RkOjptaW4obGlt
aXQsIGRhdGFTaXplKCkgLSAxKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IDk1ODFjNjkwMWQ1MTI1YTA2
NGJhNGUzYTcwNjhlNDJhMTlkZjkxYmYuLjdmZGRiNmNmNDMzZmJkYjIxNTFmNTMzYzJlYzJkMTgy
ZmU1NjUwOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNl
cnZlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTc0LDE4ICs3NCwyMCBAQCBwcm90ZWN0ZWQ6CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBzaXplX3QgbWVzc2FnZUFsaWdubWVudCA9IFN0cmVhbUNvbm5lY3Rpb25F
bmNvZGVyOjptZXNzYWdlQWxpZ25tZW50OwogICAgIFNwYW4gYWxpZ25lZFNwYW4oc2l6ZV90IG9m
ZnNldCwgc2l6ZV90IGxpbWl0KTsKICAgICBzaXplX3Qgc2l6ZShzaXplX3Qgb2Zmc2V0LCBzaXpl
X3QgbGltaXQpOwotICAgIHNpemVfdCBjbGFtcGVkTGltaXQoc2l6ZV90IHVudHJ1c3RlZExpbWl0
KSBjb25zdDsKICAgICBzaXplX3Qgd3JhcE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlci53cmFwT2Zmc2V0KG9mZnNldCk7IH0KICAgICBzaXplX3QgYWxpZ25PZmZz
ZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuYWxpZ25PZmZzZXQ8bWVz
c2FnZUFsaWdubWVudD4ob2Zmc2V0LCBtaW5pbXVtTWVzc2FnZVNpemUpOyB9Ci0gICAgQXRvbWlj
PHNpemVfdD4mIHNoYXJlZFNlbmRlck9mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLnNlbmRlck9m
ZnNldCgpOyB9Ci0gICAgQXRvbWljPHNpemVfdD4mIHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkgeyBy
ZXR1cm4gbV9idWZmZXIucmVjZWl2ZXJPZmZzZXQoKTsgfQorICAgIHVzaW5nIFNlcnZlckxpbWl0
ID0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6Q2xpZW50T2Zmc2V0OworICAgIEF0b21pYzxTZXJ2
ZXJMaW1pdD4mIHNoYXJlZFNlcnZlckxpbWl0KCkgeyByZXR1cm4gbV9idWZmZXIuY2xpZW50T2Zm
c2V0KCk7IH0KKyAgICB1c2luZyBTZXJ2ZXJPZmZzZXQgPSBTdHJlYW1Db25uZWN0aW9uQnVmZmVy
OjpTZXJ2ZXJPZmZzZXQ7CisgICAgQXRvbWljPFNlcnZlck9mZnNldD4mIHNoYXJlZFNlcnZlck9m
ZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLnNlcnZlck9mZnNldCgpOyB9CisgICAgc2l6ZV90IGNs
YW1wZWRMaW1pdChTZXJ2ZXJMaW1pdCkgY29uc3Q7CiAgICAgdWludDhfdCogZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQogICAgIHNpemVfdCBkYXRhU2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGFTaXplKCk7IH0KIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rp
b24+IG1fY29ubmVjdGlvbjsKICAgICBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiBtX3dvcmtR
dWV1ZTsKIAotICAgIHNpemVfdCBtX3JlY2VpdmVyT2Zmc2V0IHsgMCB9OworICAgIHNpemVfdCBt
X3NlcnZlck9mZnNldCB7IDAgfTsKICAgICBTdHJlYW1Db25uZWN0aW9uQnVmZmVyIG1fYnVmZmVy
OwogCiAgICAgTG9jayBtX291dE9mU3RyZWFtTWVzc2FnZXNMb2NrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKaW5kZXggZTkxYmI5NzY1Y2FiNGM0NmQ3ZjcyZmM2
ZWU4ODI0Y2M4NzY0YjVlYy4uNDViYzVkOTA0MTcwNjNlOWViYWJjMTZjMWJmODAyMDNmYjFiMzVh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCkBAIC0xMjgs
MTIgKzEyOCw2IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bm90aWZ5TWFy
a0NvbnRleHRDaGFuZ2VkKCkKICAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7CiB9CiAKLXZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2ltdWxhdGVDb250ZXh0Q2hhbmdlZCgpCi17
Ci0gICAgLy8gRklYTUU6IEN1cnJlbnRseSBub3QgaW1wbGVtZW50ZWQgYmVjYXVzZSBpdCdzIG5v
dCBjbGVhciB0aGlzIGlzIHRoZSByaWdodCB3YXkuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTkzNDkKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFz
KEltYWdlQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gRklYTUU6IHRoZSBidWZmZXIgaXMgInJl
bGF0aXZlbHkgZW1wdHkiIGFsd2F5cywgYnV0IGZvciBjb25zaXN0ZW5jeSwgd2UgbmVlZCB0byBl
bnN1cmUKQEAgLTE4MSw3ICsxNzUsNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKQogICAgIGlmICghaXNDb250ZXh0
TG9zdCgpKSB7CiAgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpTeW50aGVzaXplR0xFcnJvcihlcnJvcikpOwogICAgICAgICBp
ZiAoIXNlbmRSZXN1bHQpCi0gICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgICAgICAgICBtYXJr
Q29udGV4dExvc3QoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2Vycm9yV2hlbkNv
bnRleHRJc0xvc3QgPSBlcnJvcjsKQEAgLTE5MywxMiArMTg3LDIxIEBAIEdDR0xlbnVtIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEVycm9yKCkKICAgICAgICAgdWludDMyX3QgcmV0
dXJuVmFsdWUgPSAwOwogICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEVycm9yKCksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0RXJyb3I6OlJlcGx5KHJldHVyblZhbHVlKSk7CiAgICAgICAg
IGlmICghc2VuZFJlc3VsdCkKLSAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICAgICAgICAgIG1h
cmtDb250ZXh0TG9zdCgpOwogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGVudW0+KHJl
dHVyblZhbHVlKTsKICAgICB9CiAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9lcnJvcldoZW5D
b250ZXh0SXNMb3N0LCBOT19FUlJPUik7CiB9CiAKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6c2ltdWxhdGVFdmVudEZvclRlc3RpbmcoY29uc3QgU3RyaW5nJiBldmVudE5hbWUp
Cit7CisgICAgaWYgKCFpc0NvbnRleHRMb3N0KCkpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNpbXVsYXRlRXZlbnRG
b3JUZXN0aW5nKGV2ZW50TmFtZSkpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAg
ICAgICBtYXJrQ29udGV4dExvc3QoKTsKKyAgICB9Cit9CisKIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6d2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIElQQzo6U2VtYXBob3Jl
JiYgc2VtYXBob3JlLCBTdHJpbmcmJiBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcmJiByZXF1
ZXN0ZWRFeHRlbnNpb25zKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCmluZGV4IGVkMGZmODY5MmVmN2FkODQ1NzE5ZTFm
MGE4MjU2NjJjMzY1ZTUyYTQuLjkyODU4NjhkZjVmYjIwZThhODI0MGExNjRlODQ4NTQwZGIzNGVi
YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCkBAIC02NCwxNiAr
NjQsMTQgQEAgcHVibGljOgogICAgIHVzaW5nIFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjppc0VuYWJsZWQ7CiAgICAgdm9pZCBlbnN1cmVFeHRlbnNpb25FbmFibGVk
KGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeU1hcmtDb250
ZXh0Q2hhbmdlZCgpIGZpbmFsOwotICAgIHZvaWQgc2ltdWxhdGVDb250ZXh0Q2hhbmdlZCgpIGZp
bmFsOwogICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6SW1h
Z2VCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZh
cyhXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgc3ludGhlc2l6ZUdMRXJy
b3IoR0NHTGVudW0gZXJyb3IpIGZpbmFsOwogICAgIEdDR0xlbnVtIGdldEVycm9yKCkgZmluYWw7
Ci0KICAgICBib29sIGNvcHlUZXh0dXJlRnJvbU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVyJiwg
UGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgZmluYWw7CisgICAgdm9pZCBzaW11
bGF0ZUV2ZW50Rm9yVGVzdGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKIAogICAgIC8vIEZ1bmN0
aW9ucyB3aXRoIGEgZ2VuZXJhdGVkIGltcGxlbWVudGF0aW9uLiBUaGlzIGxpc3QgaXMgdXNlZCBi
eSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KLSAgICB2b2lkIHNldEZhaWxOZXh0R1BVU3Rh
dHVzQ2hlY2soKSBmaW5hbDsKICAgICBib29sIG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlz
dCgpIGZpbmFsOwogICAgIHZvaWQgYWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSBmaW5h
bDsKICAgICB2b2lkIGF0dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRm
b3JtR0xPYmplY3Qgc2hhZGVyKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9u
c0dlbmVyYXRlZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCmluZGV4IDQ2
NmRkMDhiMWIyYjM3MmI2ZTFkODU3OTdmNDg2MGEyOGNmOTUzZWIuLmNjYTZjYTAyOTJmYWFkMTY2
MjhiM2E4NTNmN2Q1NTE3Y2JjMGRkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dl
bmVyYXRlZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcApAQCAtMzAs
MTUgKzMwLDYgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCi17Ci0gICAgaWYgKCFp
c0NvbnRleHRMb3N0KCkpIHsKLSAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSk7
Ci0gICAgICAgIGlmICghc2VuZFJlc3VsdCkKLSAgICAgICAgICAgIG1hcmtDb250ZXh0TG9zdCgp
OwotICAgIH0KLX0KLQogYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojptb3ZlRXJy
b3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjJl
YTMxNTFhNDg0MDRmYzJlMGVlMDRmODU2MGNjODU1YWRjNDkyMS4uNmZiNDQ3NGE5M2E5NTA0NDcx
OGUyN2VlYTc2ODU5NmVlNzRkOTUyZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTAzLTAxICBLaW1tbyBLaW5u
dW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBydW5uaW5nIFdl
YkdMIGluIEdQVSBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTcyMTEKKyAgICAgICAgPHJkYXI6Ly81NzE3NzQ0MT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgU2ltdWxhdGVFdmVudEZv
clRlc3RpbmcoU3RyaW5nIGV2ZW50TmFtZSkgdG8gbWFudWFsbHkKKyAgICAgICAgaW1wbGVtZW50
ZWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgZnVuY3Rpb25zLgorCisgICAgICAgICogU2NyaXB0
cy9nZW5lcmF0ZS1ncHVwLXdlYmdsOgorCiAyMDIxLTAyLTI3ICBNZWdhbiBHYXJkbmVyICA8bWVn
YW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAgQVBJIHRlc3QgZm9yIEFwcEhpZ2hsaWdo
dHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbCBiL1Rvb2xz
L1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAppbmRleCBkMzUwMmJjMjY2NThkZmI5YzMwZjZm
MmNlNzZkZDg2NTg1NzMyYjA4Li5hYTg1MTZiYzQ5YjA2NzUxYWQwMDA1NDRkMmRkZTM2NmFjNTEy
Nzc3IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKysrIGIv
VG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCkBAIC0xMDQsNiArMTA0LDcgQEAgbWVz
c2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0ge3sK
ICAgICB2b2lkIFBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKICAgICB2
b2lkIFBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBD
b3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgdWludDMyX3QgdGV4dHVyZSwgdWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1
aW50MzJfdCBpbnRlcm5hbEZvcm1hdCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBi
b29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBTaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhTdHJpbmcgZXZlbnROYW1l
KQoge30KIH19CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA0NjA5NDA3ZGJmM2NjZGY2ZmFjYjBkODE2MTc0NTJjY2NhMGNh
ZDJiLi5jNDVkZjI0MTE3NTdhMzg4MDVlNTNmMTRlZmVkMTZiMGYwMzNmZTRiIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjYgQEAKKzIwMjEtMDMtMDEgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxl
LmNvbT4KKworICAgICAgICBTdXBwb3J0IHJ1bm5pbmcgV2ViR0wgaW4gR1BVIHByb2Nlc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzIxMQorICAg
ICAgICA8cmRhcjovLzU3MTc3NDQxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyB0byB0ZXN0IHRoZSBjYXNlIHdoZXJlIGEgV2ViR0wg
Y2FsbCB0aW1lcyBvdXQuCisgICAgICAgIEFkZCB0d28gdmFyaWFudHM6IG9uZSB3aGljaCBtb3N0
IHByb2JhYmx5IHRpbWVzIG91dCBvbgorICAgICAgICBzeW5jaHJvbm91cyBjYWxsLCBhbmQgb25l
IHdoaWNoIG1vc3QgcHJvYmFibHkgdGltZXMgb3V0IG9uCisgICAgICAgIGFzeW5jaHJvbm91cyBj
YWxsLgorCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9uLXN0YXR1
cy1mYWlsdXJlLmh0bWw6CisgICAgICAgIFRoZSB0ZXN0aW5nIEFQSXMgd2VyZSBjaGFuZ2VkLCBz
byByZXBsYWNlIHVzZSBvZgorICAgICAgICBJbnRlcm5hbHMuc2V0RmFpbE5leHRHUFVTdGF0dXND
aGVjaygpCisgICAgICAgIHdpdGggSW50ZXJuYWxzLnNpbXVsYXRlRXZlbnRGb3JXZWJHTENvbnRl
eHQoKQorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0
LWFzeW5jLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wv
bG9zZS1jb250ZXh0LW9uLXRpbWVvdXQtYXN5bmMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9uLXRpbWVvdXQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tdGltZW91dC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC93ZWJnbGNvbnRleHRjaGFu
Z2VkZXZlbnQuaHRtbDoKKwogMjAyMS0wMi0yNyAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5j
b20+CiAKICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgJ3BpeGVsJyBhbmQgJ3BvcycgQ1NTT00g
cHJlZml4ZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGQ5NWQ0MGY2MTNjZjc3ODFlNDFjZWYwM2Rm
NzllN2I2MzY0Njk0ZjMuLjIzZjMwNTgwMDkxMjQ2NGY0Y2QxNzc5YzQwNDFlM2FhNjA2MDJiZGEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVz
dHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzQ1OSw2ICszNDU5LDEwIEBAIHdlYmdsLzIuMC4wL2Nv
bmZvcm1hbmNlMi9taXNjL3VuaW5pdGlhbGl6ZWQtdGVzdC0yLmh0bWwgWyBTa2lwIF0KICMgRmFp
bGluZyBvbiBjZXJ0YWluIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zOiBtYWNPUyB3aXRoIEludGVs
IEdQVXMuIEFsc28gc2xvdy4KIHdlYmtpdC5vcmcvYi8yMjA3NTMgd2ViZ2wvY29uZm9ybWFuY2Uv
ZXh0ZW5zaW9ucy93ZWJnbC1tdWx0aS1kcmF3Lmh0bWwgWyBQYXNzIEZhaWx1cmUgU2xvdyBdCiAK
KyMgVGltZW91dCB0ZXN0aW5nIGlzIG5vdCBhcHBsaWNhYmxlIHRvIGluLXByb2Nlc3Mgd2ViZ2ws
IG9ubHkgd2ViZ2wgaW4gZ3B1IHByb2Nlc3MuCitmYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRl
eHQtb24tdGltZW91dC1hc3luYy5odG1sIFsgU2tpcCBdCitmYXN0L2NhbnZhcy93ZWJnbC9sb3Nl
LWNvbnRleHQtb24tdGltZW91dC5odG1sIFsgU2tpcCBdCisKICMgcHJlLXdyYXAgcHJvZ3Jlc3Np
b24uIE90aGVyIHJlbmRlcmluZyBlbmdpbmVzIGFncmVlIHdpdGggdGhlIHJlc3VsdC4KIHdlYmtp
dC5vcmcvYi8yMDYxNjggWyBEZWJ1ZyBdIGZhc3QvZG9tL2luc2VydC1zcGFuLWludG8tbG9uZy10
ZXh0LWJ1Zy0yODI0NS5odG1sIFsgU2tpcCBdCiAKQEAgLTQ4MzksNCArNDg0MywzIEBAIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb3VudGVyLXN0eWxlcy91cHBlci1h
cm1lbmlhbi9jc3MzLWNvdW50CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtY291bnRlci1zdHlsZXMvdXBwZXItcm9tYW4vY3NzMy1jb3VudGVyLXN0eWxlcy0wMjMuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWNvdW50ZXItc3R5bGVzL3VwcGVyLXJvbWFuL2NzczMtY291bnRlci1zdHlsZXMtMDI0
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1jb3VudGVyLXN0eWxlcy91cHBlci1yb21hbi9jc3MzLWNvdW50ZXItc3R5bGVz
LTAyNGEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tc3RhdHVzLWZhaWx1cmUuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi1zdGF0dXMtZmFp
bHVyZS5odG1sCmluZGV4IGI4MzkxNjg2NGRiZDZlNzBjMzhkZGZiN2EzNGUyNDU1MmVjMDdiODEu
LjNhZmM5MmEwZTczN2FiNDk5NGUxYjk0MjhiOGRkNWFlNDFjMzhiZTMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi1zdGF0dXMtZmFpbHVy
ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1v
bi1zdGF0dXMtZmFpbHVyZS5odG1sCkBAIC02OSw3ICs2OSw3IEBAIGFzeW5jIGZ1bmN0aW9uIHJ1
blRlc3QoKSB7CiAKICAgICBkZWJ1ZygiTm93IGZvcmNlIGZhaWx1cmUgYWZ0ZXIgdGhlIG5leHQg
ZHJhd0FycmF5cy4iKQogICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICB3aW5kb3cu
aW50ZXJuYWxzLmZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soZ2wpOworICAgICAgICB3aW5kb3cuaW50
ZXJuYWxzLnNpbXVsYXRlRXZlbnRGb3JXZWJHTENvbnRleHQoImZhaWxuZXh0Z3B1c3RhdHVzY2hl
Y2siLCBnbCk7CiAgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYpOwogICAgIGF3
YWl0IHdlYkdMQ29udGV4dExvc3QoY2FudmFzKTsKICAgICBzaG91bGRCZVRydWUoImdsLmlzQ29u
dGV4dExvc3QoKSIpOwpAQCAtMTAxLDcgKzEwMSw3IEBAIGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3Qo
KSB7CiAKICAgICBkZWJ1ZygiTm93IGZvcmNlIGZhaWx1cmUgYWZ0ZXIgdGhlIG5leHQgZHJhd0Vs
ZW1lbnRzLiIpCiAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgIHdpbmRvdy5pbnRl
cm5hbHMuZmFpbE5leHRHUFVTdGF0dXNDaGVjayhnbCk7CisgICAgICAgIHdpbmRvdy5pbnRlcm5h
bHMuc2ltdWxhdGVFdmVudEZvcldlYkdMQ29udGV4dCgiZmFpbG5leHRncHVzdGF0dXNjaGVjayIs
IGdsKTsKICAgICBnbC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVTLCA2LCBnbC5VTlNJR05FRF9T
SE9SVCwgMCk7CiAgICAgYXdhaXQgd2ViR0xDb250ZXh0TG9zdChjYW52YXMpCiAgICAgc2hvdWxk
QmVUcnVlKCJnbC5pc0NvbnRleHRMb3N0KCkiKTsKQEAgLTEyOCw3ICsxMjgsNyBAQCBhc3luYyBm
dW5jdGlvbiBydW5UZXN0KCkgewogCiAgICAgZGVidWcoIk5vdyBmb3JjZSBmYWlsdXJlIGFmdGVy
IHRoZSBuZXh0IGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRS4iKQogICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzKQotICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLmZhaWxOZXh0R1BVU3RhdHVzQ2hlY2so
Z2wpOworICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNpbXVsYXRlRXZlbnRGb3JXZWJHTENvbnRl
eHQoImZhaWxuZXh0Z3B1c3RhdHVzY2hlY2siLCBnbCk7CiAgICAgZXh0LmRyYXdBcnJheXNJbnN0
YW5jZWRBTkdMRShnbC5UUklBTkdMRVMsIDAsIDYsIDEwKTsKICAgICBhd2FpdCB3ZWJHTENvbnRl
eHRMb3N0KGNhbnZhcyk7CiAgICAgc2hvdWxkQmVUcnVlKCJnbC5pc0NvbnRleHRMb3N0KCkiKTsK
QEAgLTE2MSw3ICsxNjEsNyBAQCBhc3luYyBmdW5jdGlvbiBydW5UZXN0KCkgewogCiAgICAgZGVi
dWcoIk5vdyBmb3JjZSBmYWlsdXJlIGFmdGVyIHRoZSBuZXh0IGRyYXdFbGVtZW50c0luc3RhbmNl
ZEFOR0xFLiIpCiAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgIHdpbmRvdy5pbnRl
cm5hbHMuZmFpbE5leHRHUFVTdGF0dXNDaGVjayhnbCk7CisgICAgICAgIHdpbmRvdy5pbnRlcm5h
bHMuc2ltdWxhdGVFdmVudEZvcldlYkdMQ29udGV4dCgiZmFpbG5leHRncHVzdGF0dXNjaGVjayIs
IGdsKTsKICAgICBleHQuZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoZ2wuVFJJQU5HTEVTLCA2
LCBnbC5VTlNJR05FRF9TSE9SVCwgMCwgOCk7CiAgICAgYXdhaXQgd2ViR0xDb250ZXh0TG9zdChj
YW52YXMpOwogICAgIHNob3VsZEJlVHJ1ZSgiZ2wuaXNDb250ZXh0TG9zdCgpIik7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tdGltZW91
dC1hc3luYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9sb3Nl
LWNvbnRleHQtb24tdGltZW91dC1hc3luYy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTdlYTZj
ZTY3ZDZiMDQxMzM3Y2JmYTQwYWYzMDZiN2NhY2M2MzM4ZAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0LWFzeW5j
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitDT05TT0xFIE1FU1NBR0U6IFdlYkdMOiBD
T05URVhUX0xPU1RfV0VCR0w6IGxvc2VDb250ZXh0OiBjb250ZXh0IGxvc3QKK0NoZWNrcyB0aGF0
IGEgR1BVIHByb2Nlc3MgdGltZW91dCBvbiBhIG5vbi1yZXN1bHQgcHJvZHVjaW5nIFdlYkdMIGNh
bGwgd2lsbCBsb3NlIHRoZSBjb250ZXh0LgorTk9URTogVGhpcyBvbmx5IHBhc3NlcyBpbiB0aGUg
dGVzdCBoYXJuZXNzIGJlY2F1c2UgaXQgcmVxdWlyZXMgSW50ZXJuYWxzLgorCitQQVNTIGdsLmlz
Q29udGV4dExvc3QoKSBpcyBmYWxzZQorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9S
CitQQVNTIGdsLmlzQ29udGV4dExvc3QoKSBpcyB0cnVlCitQQVNTIGdsLmdldEVycm9yKCkgaXMg
Z2wuQ09OVEVYVF9MT1NUX1dFQkdMCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvbG9zZS1jb250ZXh0LW9uLXRpbWVvdXQtYXN5bmMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0LWFzeW5jLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTM1ZjM1Y2NmNDVhNTAxZTAxZmM1YjllZWUxZjAyZGNiZWU3NDFmMAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1l
b3V0LWFzeW5jLmh0bWwKQEAgLTAsMCArMSw2MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aGVhZD4K
KzxzdHlsZT4KK2NhbnZhcyB7CisgICAgd2lkdGg6IDIwMHB4OworICAgIGhlaWdodDogMjAwcHg7
Cit9Cis8L3N0eWxlPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcyI+IDwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9zY3Jp
cHQ+Cis8c2NyaXB0PgorCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2w7Cit3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2lmICh3aW5kb3cuaW5pdE5vbktocm9ub3NGcmFt
ZXdvcmspCisgICAgd2luZG93LmluaXROb25LaHJvbm9zRnJhbWV3b3JrKGZhbHNlKTsKKworZGVi
dWcoIkNoZWNrcyB0aGF0IGEgR1BVIHByb2Nlc3MgdGltZW91dCBvbiBhIG5vbi1yZXN1bHQgcHJv
ZHVjaW5nIFdlYkdMIGNhbGwgd2lsbCBsb3NlIHRoZSBjb250ZXh0LiIpOworZGVidWcoIk5PVEU6
IFRoaXMgb25seSBwYXNzZXMgaW4gdGhlIHRlc3QgaGFybmVzcyBiZWNhdXNlIGl0IHJlcXVpcmVz
IEludGVybmFscy4iKTsKK2RlYnVnKCIiKTsKKworYXN5bmMgZnVuY3Rpb24gd2ViR0xDb250ZXh0
TG9zdChjYW52YXMpIHsKKyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBjYW52YXMu
YWRkRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0bG9zdCIsIHJlc29sdmUpKTsKK30KKworYXN5
bmMgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBsZXQgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiY2FudmFzIik7CisgICAgY2FudmFzLndpZHRoID0gMjAwOworICAgIGNhbnZhcy5o
ZWlnaHQgPSAyMDA7CisgICAgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcyk7CisgICAg
d3R1LnNldHVwQ29sb3JRdWFkKGdsKTsKKyAgICBnbC52aWV3cG9ydCgwLCAwLCBjYW52YXMud2lk
dGgsIGNhbnZhcy5oZWlnaHQpOworICAgIGdsLmNsZWFyQ29sb3IoMC4wLCAxLjAsIDAuMCwgMS4w
KTsKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBzaG91bGRCZUZhbHNl
KCJnbC5pc0NvbnRleHRMb3N0KCkiKTsKKyAgICBzaG91bGRCZSgiZ2wuZ2V0RXJyb3IoKSIsICJn
bC5OT19FUlJPUiIpOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICB3aW5kb3cu
aW50ZXJuYWxzLnNpbXVsYXRlRXZlbnRGb3JXZWJHTENvbnRleHQoInRpbWVvdXQiLCBnbCk7Cisg
ICAgLy8gV2UncmUgdHJ5aW5nIHRvIGZpbGwgdGhlIGNvbW1hbmQgYnVmZmVyIHdpdGggY2FsbHMg
YWZ0ZXIgdGhlIHRpbWVvdXQsCisgICAgLy8gc28gdGhhdCB3ZSB0ZXN0IHRoYXQgYXN5bmNocm9u
b3VzIGNhbGxzIGNhdXNlIHRpbWVvdXRzIHRvby4KKyAgICAvLyBVc2UgYSByZWxhdGl2ZWx5IGZh
c3QgY2FsbCB0aGF0IHN0aWxsIGZpbGxzIHVwIHRoZSBidWZmZXIuCisgICAgbGV0IGNhbGxDb3Vu
dCA9IDEwMDAwMDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYWxsQ291bnQ7ICsraSkKKyAg
ICAgICAgZ2wuY2xlYXJDb2xvcigxLjAsIDEuMCwgMC4wICsgaS9jYWxsQ291bnQsIDEuMCk7Cisg
ICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgYXdhaXQgd2ViR0xDb250ZXh0
TG9zdChjYW52YXMpOworICAgIHNob3VsZEJlVHJ1ZSgiZ2wuaXNDb250ZXh0TG9zdCgpIik7Cisg
ICAgc2hvdWxkQmUoImdsLmdldEVycm9yKCkiLCAiZ2wuQ09OVEVYVF9MT1NUX1dFQkdMIik7Cisg
ICAgZmluaXNoVGVzdCgpOworfQorCitydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8Ym9keT4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1l
b3V0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMWU0MjkzNDg1ZmRiNmYzOGIwYmIzYjkzNjNj
MjM4ZjlkNWRlMmE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
d2ViZ2wvbG9zZS1jb250ZXh0LW9uLXRpbWVvdXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMg
QEAKK0NPTlNPTEUgTUVTU0FHRTogV2ViR0w6IENPTlRFWFRfTE9TVF9XRUJHTDogbG9zZUNvbnRl
eHQ6IGNvbnRleHQgbG9zdAorQ2hlY2tzIHRoYXQgYSBHUFUgcHJvY2VzcyB0aW1lb3V0IG9uIGEg
cmVzdWx0IHByb2R1Y2luZyBXZWJHTCBjYWxsIHdpbGwgbG9zZSB0aGUgY29udGV4dC4KK05PVEU6
IFRoaXMgb25seSBwYXNzZXMgaW4gdGhlIHRlc3QgaGFybmVzcyBiZWNhdXNlIGl0IHJlcXVpcmVz
IEludGVybmFscy4KKworUEFTUyBnbC5pc0NvbnRleHRMb3N0KCkgaXMgZmFsc2UKK1BBU1MgZ2wu
Z2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgorUEFTUyBnbC5pc0NvbnRleHRMb3N0KCkgaXMgdHJ1
ZQorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLkNPTlRFWFRfTE9TVF9XRUJHTAorUEFTUyB2YWwg
aXMgWzAsIDAsIDAsIDBdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbG9z
ZS1jb250ZXh0LW9uLXRpbWVvdXQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L2xvc2UtY29udGV4dC1vbi10aW1lb3V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTE0ZTZhYjI1MjBiNzg1
ODI1ZDg4ZjRkMmE3NWJkZTFlNzdlZmVjMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0Lmh0bWwKQEAgLTAsMCAr
MSw1NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KK2NhbnZhcyB7CisgICAg
d2lkdGg6IDIwMHB4OworICAgIGhlaWdodDogMjAwcHg7Cit9Cis8L3N0eWxlPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcyI+IDwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8c2NyaXB0PgorCit2YXIgd3R1
ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2w7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
CisKK2lmICh3aW5kb3cuaW5pdE5vbktocm9ub3NGcmFtZXdvcmspCisgICAgd2luZG93LmluaXRO
b25LaHJvbm9zRnJhbWV3b3JrKGZhbHNlKTsKKworZGVidWcoIkNoZWNrcyB0aGF0IGEgR1BVIHBy
b2Nlc3MgdGltZW91dCBvbiBhIHJlc3VsdCBwcm9kdWNpbmcgV2ViR0wgY2FsbCB3aWxsIGxvc2Ug
dGhlIGNvbnRleHQuIik7CitkZWJ1ZygiTk9URTogVGhpcyBvbmx5IHBhc3NlcyBpbiB0aGUgdGVz
dCBoYXJuZXNzIGJlY2F1c2UgaXQgcmVxdWlyZXMgSW50ZXJuYWxzLiIpOworZGVidWcoIiIpOwor
Cithc3luYyBmdW5jdGlvbiB3ZWJHTENvbnRleHRMb3N0KGNhbnZhcykgeworICAgIHJldHVybiBu
ZXcgUHJvbWlzZShyZXNvbHZlID0+IGNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRl
eHRsb3N0IiwgcmVzb2x2ZSkpOworfQordmFyIHZhbDsKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3Qo
KSB7CisgICAgbGV0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwor
ICAgIGNhbnZhcy53aWR0aCA9IDIwMDsKKyAgICBjYW52YXMuaGVpZ2h0ID0gMjAwOworICAgIGds
ID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMpOworICAgIHd0dS5zZXR1cENvbG9yUXVhZChn
bCk7CisgICAgZ2wudmlld3BvcnQoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsK
KyAgICBnbC5jbGVhckNvbG9yKDAuMCwgMS4wLCAwLjAsIDEuMCk7CisgICAgZ2wuY2xlYXIoZ2wu
Q09MT1JfQlVGRkVSX0JJVCk7CisgICAgc2hvdWxkQmVGYWxzZSgiZ2wuaXNDb250ZXh0TG9zdCgp
Iik7CisgICAgc2hvdWxkQmUoImdsLmdldEVycm9yKCkiLCAiZ2wuTk9fRVJST1IiKTsKKyAgICBp
ZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgd2luZG93LmludGVybmFscy5zaW11bGF0ZUV2
ZW50Rm9yV2ViR0xDb250ZXh0KCJ0aW1lb3V0IiwgZ2wpOworICAgIGdsLmNsZWFyQ29sb3IoMS4w
LCAxLjAsIDAuMCwgMS4wKTsKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAg
ICB2YWwgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuQ09MT1JfQ0xFQVJfVkFMVUUpOworICAgIGF3YWl0
IHdlYkdMQ29udGV4dExvc3QoY2FudmFzKTsKKyAgICBzaG91bGRCZVRydWUoImdsLmlzQ29udGV4
dExvc3QoKSIpOworICAgIHNob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLkNPTlRFWFRfTE9T
VF9XRUJHTCIpOworICAgIHNob3VsZEJlKCJ2YWwiLCAiWzAsIDAsIDAsIDBdIik7CisgICAgZmlu
aXNoVGVzdCgpOworfQorCitydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKworPC9zY3JpcHQ+Cis8Ym9keT4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL3dlYmdsY29udGV4dGNoYW5nZWRldmVudC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2xjb250ZXh0Y2hhbmdlZGV2ZW50Lmh0bWwKaW5k
ZXggMzlkNzdiNzk2ZWYwOTUwOWViZDU2OTkxYTAyYzkxNThhMDFiYjgzNi4uNGY5ZDFkZGI5M2Y0
NzgyNzhlMjM3YzMzNjViYmQ0MWQ2ODJjZGE1NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvd2ViZ2xjb250ZXh0Y2hhbmdlZGV2ZW50Lmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2xjb250ZXh0Y2hhbmdlZGV2ZW50Lmh0bWwKQEAg
LTM4LDcgKzM4LDcgQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgfSk7CiAKICAgICBsZXQgZ2wg
PSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKS5nZXRDb250ZXh0KCJ3ZWJnbCIpOwot
ICAgIHdpbmRvdy5pbnRlcm5hbHMuc2ltdWxhdGVXZWJHTENvbnRleHRDaGFuZ2VkKGdsKTsKKyAg
ICB3aW5kb3cuaW50ZXJuYWxzLnNpbXVsYXRlRXZlbnRGb3JXZWJHTENvbnRleHQoImNvbnRleHRj
aGFuZ2VkIiwgZ2wpOwogfQogCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNz
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IGRkODM3NmQyZjJjNzgwNDRhZTA5YThiNzM4NGM1YTZmMDk2MzU1MDcuLmI4YmI5
NjI3MWM4OGFlZGY1MjE4NDdhMjJlZWQ2M2QxMDBjODg1YmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvZ3B1LXBy
b2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjMsNiArMjMsOSBAQCBmYXN0L2NhbnZhcy93ZWJn
bC91bmlmb3JtLXNhbXBsZXJzLXRlc3QuaHRtbCBbIFNsb3cgXQogd2ViZ2wvMi4wLjAvY29uZm9y
bWFuY2UvYXR0cmlicy9nbC12ZXJ0ZXhhdHRyaWJwb2ludGVyLmh0bWwgWyBTbG93IF0KIHdlYmds
LzIuMC4wL2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcvYmxpdGZyYW1lYnVmZmVyLWZpbHRlci1vdXRv
ZmJvdW5kcy5odG1sIFsgU2xvdyBdCiAKK2Zhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1v
bi10aW1lb3V0LWFzeW5jLmh0bWwgWyBTbG93IFBhc3MgXQorZmFzdC9jYW52YXMvd2ViZ2wvbG9z
ZS1jb250ZXh0LW9uLXRpbWVvdXQuaHRtbCBbIFNsb3cgUGFzcyBdCisKIGZhc3QvaW1hZ2VzL2Fu
aW1hdGVkLWltYWdlLW1wNC1jcmFzaC5odG1sIFsgVGltZW91dCBdCiBmYXN0L2ltYWdlcy9hbmlt
YXRlZC1pbWFnZS1tcDQuaHRtbCBbIFRpbWVvdXQgXQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>421851</attachid>
            <date>2021-03-01 11:36:25 -0800</date>
            <delta_ts>2021-03-02 01:08:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217211-20210301213623.patch</filename>
            <type>text/plain</type>
            <size>65162</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWI4MDVhOTUxYzM0YzBk
NTQzZWZkZjVmNDQ3OTUxNTBlOWIyODkxYy4uMGRhMTQ4OWQ2ODkxYjZmNTY0ZDM3YTAyMjlkODcw
OGZhMTBmZmEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTAzLTAxICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBydW5u
aW5nIFdlYkdMIGluIEdQVSBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTcyMTEKKyAgICAgICAgPHJkYXI6Ly81NzE3NzQ0MT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgSW50ZXJuYWxz
IGZlYXR1cmUgdG8gdGVzdCBXZWJHTCBjb250ZXh0IGNhbGwKKyAgICAgICAgdGltZW91dC4KKwor
CisgICAgICAgIFRlc3RzOiBmYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tdGltZW91
dC1hc3luYy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRl
eHQtb24tdGltZW91dC5odG1sCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNpbXVsYXRlRXZlbnRGb3JU
ZXN0aW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OnNpbXVsYXRlRXZlbnRGb3JXZWJHTENvbnRleHQpOgorICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
aWRsOgorCisgICAgICAgIEltcGxlbWVudCB0aGUgZmVhdHVyZSBieSByZXBsYWNpbmcKKyAgICAg
ICAgICAgIEludGVybmFscy5zZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkKKyAgICAgICAgICAg
IEludGVybmFscy5zaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkKKyAgICAgICAgd2l0aAorICAgICAg
ICAgICAgSW50ZXJuYWxzLnNpbXVsYXRlRXZlbnRGb3JXZWJHTENvbnRleHQoRE9NU3RyaW5nIGV2
ZW50TmFtZSwgV2ViR0xSZW5kZXJpbmdDb250ZXh0KQorICAgICAgICB3aXRoIGV2ZW50TmFtZSB0
YWtpbmcgaW52ZW50ZWQgZXZlbnRzIHRoYXQgY2FuIGhhcHBlbiB0byBhCisgICAgICAgIHdlYmds
IGNvbnRleHQ6CisgICAgICAgICAic2V0ZmFpbG5leHRncHVzdGF0dXNjaGVjayIsICJjb250ZXh0
Y2hhbmdlZCIsICJ0aW1lb3V0Ii4KKyAgICAgICAgVGhlIEludGVybmFscyBmdW5jdGlvbiBuYW1l
IHdhcyBjaG9zZW4gbm90IHRvIGNvbnRhaW4gIkZvclRlc3RpbmciIHN1ZmZpeCwgYXMKKyAgICAg
ICAgYWxsIHRoZSBmdW5jdGlvbnMgaW4gdGhlIGNsYXNzIHNob3VsZCBoYXZlIHRoYXQgc3VmZml4
LgorICAgICAgICBUaGUgZnVuY3Rpb24gbmFtZXMgaW4gdGhlIGltcGxlbWVudGF0aW9uIHBhdGgg
Zm9yIHRoZSBmZWF0dXJlIGNvbnRhaW5zCisgICAgICAgICJGb3JUZXN0aW5nIiBpbiBvcmRlciB0
byBoaWdobGlnaHQgdGhlIGZlYXR1cmUgbm90IGJlaW5nIGluIHRoZSBub3JtYWwKKyAgICAgICAg
cGF0aC4KKwogMjAyMS0wMi0yOCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgQ29uc2lkZXIgcmVtb3ZpbmcgaU9TIG9ubHkgQ1NTIHByb3BlcnR5IGFsaWFzIC13ZWJr
aXQtaHlwaGVuYXRlLWxvY2FsZSBpbnRyb2R1Y2VkIGluIHI4MDI4OApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwOTE0
MjIwMGY4NmYwOWVkZWVjNWQzMTNkNWY0YTRhYzc5NzE4OWM2Li42OTFmMzJlZThkODQ2ZDc5NTBh
MGE1ODAwNGVlMmJiMGYxYjViYjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMyBAQAorMjAyMS0w
My0wMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFN1
cHBvcnQgcnVubmluZyBXZWJHTCBpbiBHUFUgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjExCisgICAgICAgIDxyZGFyOi8vNTcxNzc0
NDE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSVBD
OjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlIHdvdWxkIGFzc2VydCBvbiBlcXVp
dmFsZW50IG9mCisgICAgICAgICAgICBBU1NFUlQoY2xpZW50TGltaXQgIT0gQ2xpZW50TGltaXQ6
OmNsaWVudElzV2FpdGluZ1RhZyk7CisgICAgICAgIGluIGNhc2Ugb2YgdGltZW91dC4gVGhpcyB3
b3VsZCBoYXBwZW4gYmVjYXVzZSB0aGUgY2xpZW50IGl0c2VsZiB3b3VsZAorICAgICAgICBmaXJz
dCB3cml0ZSB0aGUgdmFsdWUgdG8gdGhlIG9mZnNldCB2YXJpYWJsZSwgd2FpdCBhbmQgdGhlbiBy
dW4gdGhlCisgICAgICAgIG5leHQgaXRlcmF0aW9uIG9mIHRoZSBhY3F1aXJlIGxvb3AuCisKKyAg
ICAgICAgRml4IHRoaXMgYnkgdGFraW5nIGl0IGludG8gYWNjb3VudCB0aGF0IHRoZSB2YXJpYWJs
ZSBtaWdodCBiZQorICAgICAgICBDbGllbnRMaW1pdDo6Y2xpZW50SXNXYWl0aW5nVGFnIHdpdGhp
biB0aGUgYWNxdWlyZSBsb29wLgorCisgICAgICAgIFBvc3NpYmx5IGZpeCBmdXR1cmUgc2ltaWxh
ciBwcm9ibGVtcyBieSBub3QgdHJlYXRpbmcgdGhlIHZhbHVlIGFzCisgICAgICAgIHNpemVfdCwg
cmF0aGVyIHRyZWF0IGl0IGFzIGVudW0gY2xhc3MgQ2xpZW50T2Zmc2V0IDogc2l6ZV90LiBUaGlz
CisgICAgICAgIGVuYWJsZXMgdGhlIGNvbXBpbGVyIHRvIGNoZWNrIHRoYXQgd2hlbiBjaGVja2lu
ZyBmb3IgdGhlIHZhcmlvdXMgdGFnCisgICAgICAgIHZhbHVlcywgdGhlIGhvbGRlciBtdXN0IGhv
bGQgdGhlIGVudW0gY2xhc3MuIFdoZW4gaW50ZW5kaW5nIHRvIEludGVycHJldAorICAgICAgICB0
aGUgdmFsdWUgYXMgc2l6ZV90LCBob2xkZXIgbXVzdCBleHBsaWNpdGx5IGNvbnZlcnQuCisKKyAg
ICAgICAgRG8gdGhlIHNhbWUgY2hhbmdlIGZvciB0aGUgU2VydmVyT2Zmc2V0LgorCisgICAgICAg
IENoYW5nZSB0aGUgbm9tZW5jbGF0dXJlIGZyb20gInNlbmRlciIgYW5kICJyZWNlaXZlciIgdG8g
ImNsaWVudCIgYW5kICJzZXJ2ZXIiLgorICAgICAgICBUaGlzIGNoYW5nZSB3YXMgYWxyZWFkeSBk
b25lIGluIHRoZSBpbml0aWFsIGNvbW1pdCwgYnV0IHRoZSBpbmNvbnNpc3RlbnQgdXNlCisgICAg
ICAgIG9mIGNsaWVudC9zZW5kZXIgYW5kIHNlcnZlci9yZWNlaXZlciB3YXMgc3RpbGwgbGVmdC4g
Q2hhbmdlZCBub3cgYXMgdGhpcworICAgICAgICBhZGRzIHRoZSB0eXBlcyBDbGllbnRPZmZzZXQg
LyBTZXJ2ZXJPZmZzZXQuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvY2FudmFzL3dlYmdsL2xvc2Ut
Y29udGV4dC1vbi10aW1lb3V0LWFzeW5jLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY2FudmFz
L3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0Lmh0bWwKKworICAgICAgICAqIEdQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAg
IERvIG5vdCBhc3NlcnQgdGhhdCB0aGUgcmVsZWFzZSBtZXNzYWdlIGFjdHVhbGx5IHJlbGVhc2Vz
IHRoZSBjb250ZXh0LgorICAgICAgICBGb3IgdGVzdGluZywgdGhlIGluZHVjZSB0aGUgdGltZW91
dCBieSByZWxlYXNpbmcgdGhlIGNvbnRleHQgcHJlbWF0dXJlbHkKKyAgICAgICAgYW5kIHRyZWF0
aW5nIHRoZSBzdWJzZXF1ZW50IG1lc3NhZ2VzIGFzIGlmIHRoZXkgd2VyZSBub24tbGVnaXQgbWVz
c2FnZXMuCisgICAgICAgIFRoYXQgc2hvdWxkIGJlIGp1c3Qgc2tpcHBlZC4KKworICAgICAgICAo
V2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0
R0xGb3JUZXN0aW5nKToKKyAgICAgICAgQWRkIGEgcHVibGljIGZ1bmN0aW9uIHRvIGludm9rZSBm
cm9tICJGb3JUZXN0aW5nIiBjb2RlcGF0aHMuCisKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6R1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hTeW5jTWVzc2FnZSk6CisgICAgICAgIFNr
aXAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgbWVzc2FnZXMgdGhhdCBkbyBub3QgZ2V0IHJvdXRl
ZCB0byBhbnkKKyAgICAgICAgaW5zdGFuY2UuIFRoZXNlIG1lc3NhZ2VzIGNhbiBiZSAibm9uLWxl
Z2l0Iiwgb25lcyB0aGF0IGFyZSBzZW50IGJlZm9yZQorICAgICAgICB0aGUgImNvbnRleHQgd2Fz
IGxvc3QiIG1lc3NhZ2UgcmVhY2hlZCB0aGUgc2VuZGVyLCBvciBvbmVzIHRoYXQgYXJlCisgICAg
ICAgIHNlbnQgZHVyaW5nIHNpbXVsYXRlZCB0aW1lb3V0LgorICAgICAgICBUaGVzZSBkbyBub3Qg
Y29udGFpbiBhc3NlcnRzIGFzIGl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlc2Ugd2lsbCBvY2N1ciBp
bgorICAgICAgICBhYm92ZSBzaXR1YXRpb25zLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpzaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyk6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW46CisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9u
c0dlbmVyYXRlZC5oOgorICAgICAgICBBZGQgdGhlIHNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nIGZ1
bmN0aW9uIHRvIHNpbXVsYXRlIHRoZQorICAgICAgICB0aW1lb3V0LiBTaW11bGF0ZSB2aWEganVz
dCByZW1vdmluZyB0aGUgY29udGV4dCwgd2hpY2ggY2F1c2VzCisgICAgICAgIGxlZnQtb3ZlciBt
ZXNzYWdlcyB0byBza2lwcGVkLgorICAgICAgICBDdXJyZW50bHkgd2UgZG8gbm90IHNpbXVsYXRl
IHRoZSB0aW1lb3V0IHdpdGggYW4gaW5maW5pdGUgbG9vcAorICAgICAgICBpbiBHUFUgcHJvY2Vz
cyB0aHJlYWRzIGFzIHRoYXQgaXMgbm90IHN1cHBvcnRlZC4KKyAgICAgICAgQ3VycmVudGx5IHdl
IGRvIG5vdCBzaW11bGF0ZSB0aGUgdGltZW91dCB3aXRoIGEgZ3B1IHByb2Nlc3MKKyAgICAgICAg
Y3Jhc2ggc2luY2UgaXQgaXMgbm90IHN1cHBvcnRlZCB0byBiZSB0ZXN0ZWQgKHdpbGwgY2F1c2Ug
YQorICAgICAgICByZWxvYWQpLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVu
dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpT
dHJlYW1DbGllbnRDb25uZWN0aW9uKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbi5oOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpz
ZW5kU3luYyk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OnJlbGVhc2Up
OgorICAgICAgICBSZW5hbWUgc2VuZGVyIC0+IGNsaWVudAorICAgICAgICBSZW5hbWUgcmVjZWl2
ZXIgLT4gc2VydmVyCisgICAgICAgIENoYW5nZSBzaXplX3QgdXNhZ2UgdG8gLT4gQ2xpZW50T2Zm
c2V0LCBTZXJ2ZXJPZmZzZXQKKworICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9u
Ojp0cnlBY3F1aXJlKToKKyAgICAgICAgRml4IHRoZSBhc3NlcnRpb24gb2YgZXF1aXZhbGVudCBv
ZiBBU1NFUlQoY2xpZW50TGltaXQgIT0gQ2xpZW50TGltaXQ6OmNsaWVudElzV2FpdGluZ1RhZyk7
CisgICAgICAgIGJ5IHJlb3JnYW5pemluZyB0aGUgYWNxdWlyZSBsb29wLgorCisgICAgICAgIChJ
UEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRvTGltaXQgY29uc3QpOgorICAgICAgICBGaXgg
dGhlIG9mZi1ieS1vbmUgaW4gYXNzZXJ0aW9uIGVycm9yCisgICAgICAgICggPCBkYXRhU2l6ZSgp
IC0gMSAgdnMgPD0gZGF0YVNpemUoKSAtIDEpCisgICAgICAgIFJlbmFtZSBmcm9tIGNsYW1wZWRM
aW1pdCB0byB0b0xpbWl0KCksIGFzIHRoZQorICAgICAgICBjbGFtcGluZyBpcyBjb25mdXNpbmcg
YXMgdGhlIENsaWVudCB0cnVzdHMgdGhlCisgICAgICAgIFNlcnZlci4KKworICAgICAgICAqIFBs
YXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcDoKKyAgICAgICAgKElQQzo6U3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcik6CisgICAgICAgIChJ
UEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6Om9wZXJhdG9yPSk6CisgICAgICAgIChJUEM6OlN0
cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0v
SVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaDoKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlcjo6Y2xpZW50T2Zmc2V0KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlcjo6c2VydmVyT2Zmc2V0KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlcjo6Y2xpZW50V2FpdFNlbWFwaG9yZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rp
b25CdWZmZXI6Om1heGltdW1TaXplKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25C
YXNlOjp0cnlBcXVpcmUpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFz
ZTo6cmVsZWFzZSk6CisgICAgICAgIFJlbmFtZSBzZW5kZXIgLT4gY2xpZW50CisgICAgICAgIFJl
bmFtZSByZWNlaXZlciAtPiBzZXJ2ZXIKKyAgICAgICAgQ2hhbmdlIHNpemVfdCB1c2FnZSB0byAt
PiBDbGllbnRPZmZzZXQsIFNlcnZlck9mZnNldAorCisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb25CYXNlOjpjbGFtcGVkTGltaXQgY29uc3QpOgorICAgICAgICBGaXggdGhlIG9m
Zi1ieS1vbmUgaW4gYXNzZXJ0aW9uIGVycm9yCisgICAgICAgICggPCBkYXRhU2l6ZSgpIC0gMSAg
dnMgPD0gZGF0YVNpemUoKSAtIDEpCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbi5oOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFz
ZTo6c2hhcmVkU2VydmVyTGltaXQpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uQmFzZTo6c2hhcmVkU2VydmVyT2Zmc2V0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3ludGhlc2l6ZUdMRXJyb3IpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRFcnJvcik6Cisg
ICAgICAgIENhbGwgdGhlIG1hcmtDb250ZXh0TG9zdCgpIGluc3RlYWQgb2Ygd2FzTG9zdCgpIHRv
IGNsYXJpZnkKKyAgICAgICAgYWxsIHRoZSBjb250ZXh0IGxvc3QgaGFuZGxpbmcgdG8gdXNlIHRo
ZSBzYW1lIHBhdHRlcm4uCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6c2ltdWxhdGVFdmVudEZvclRlc3RpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rp
b25zR2VuZXJhdGVkLmNwcDoKKwogMjAyMS0wMi0yNiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVu
ZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFRpbWVvdXQgY2FsY3VsYXRpb25zIGFyZSBlcnJvci1w
cm9uZSBmb3IgY29tcG91bmQgSVBDIG9wZXJhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMDkx
MWFiNmRlMWY2N2Q2NmYxNzU1NGRlMTZiZDUyODY0ZThjMDNhOS4uYjIzOWMxZWVlNDU4MmE4NDQ0
Yzk3ZGU2ZmE4NzJjMzg1ZTM0NjEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTc1NjAsMTAgKzc1
NjAsMTAgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjptYXliZVJlc3RvcmVDb250
ZXh0KCkKICAgICBjYW52YXMtPmRpc3BhdGNoRXZlbnQoV2ViR0xDb250ZXh0RXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkud2ViZ2xjb250ZXh0cmVzdG9yZWRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJs
ZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcywgZW1wdHlTdHJpbmcoKSkpOwogfQogCi12
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNpbXVsYXRlQ29udGV4dENoYW5nZWQoKQor
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhj
b25zdCBTdHJpbmcmIGV2ZW50TmFtZSkKIHsKICAgICBpZiAobV9jb250ZXh0KQotICAgICAgICBt
X2NvbnRleHQtPnNpbXVsYXRlQ29udGV4dENoYW5nZWQoKTsKKyAgICAgICAgbV9jb250ZXh0LT5z
aW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhldmVudE5hbWUpOwogfQogCiBTdHJpbmcgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6ZW5zdXJlTm90TnVsbChjb25zdCBTdHJpbmcmIHRleHQpIGNvbnN0
CkBAIC03ODk1LDE0ICs3ODk1LDYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjph
Y3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjoKICAgICAgICAg
bV9jb250ZXh0LT5zZXRDb250ZXh0VmlzaWJpbGl0eShuZXdBY3Rpdml0eVN0YXRlLmNvbnRhaW5z
KEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKQotewotICAgIGlmICghbV9jb250
ZXh0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NvbnRleHQtPnNldEZhaWxOZXh0R1BVU3Rh
dHVzQ2hlY2soKTsKLX0KLQogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkaWRDb21w
b3NpdGUoKQogewogICAgIG1fY29tcG9zaXRpbmdSZXN1bHRzTmVlZFVwZGF0aW5nID0gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmgKaW5kZXggOWQ4NjI3MTFlNDE4OGYxMGVlMzY1MDM1MzY2YzZjNjc5NTg5NGE3
Yi4uZDNhNDQ4ZjJkMTRiYjg1MjlhYWI1ODA1ZGE4ZGIzZmIzN2NjYTBiNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
aApAQCAtMzc4LDcgKzM3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZvcmNlTG9zdENvbnRleHQo
TG9zdENvbnRleHRNb2RlKTsKICAgICB2b2lkIGZvcmNlUmVzdG9yZUNvbnRleHQoKTsKICAgICB2
b2lkIGxvc2VDb250ZXh0SW1wbChMb3N0Q29udGV4dE1vZGUpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2ltdWxhdGVDb250ZXh0Q2hhbmdlZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2ltdWxhdGVFdmVudEZvclRlc3RpbmcoY29uc3QgU3RyaW5nJik7CiAKICAgICBHcmFwaGljc0Nv
bnRleHRHTCogZ3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0
KCk7IH0KICAgICBXZWJHTENvbnRleHRHcm91cCogY29udGV4dEdyb3VwKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZXh0R3JvdXAuZ2V0KCk7IH0KQEAgLTQwMiw5ICs0MDIsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KTsKICAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50
IGRpdmlzb3IpOwogCi0gICAgLy8gVXNlZCBmb3IgdGVzdGluZyBvbmx5LCBmcm9tIEludGVybmFs
cy4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKTsK
LQogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQKICAgICB2b2lkIGRpZENvbXBvc2l0
ZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZm9yY2VDb250ZXh0TG9zdCgpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdM
LmgKaW5kZXggMGJjZGY5YzBmZWIwYTI5NTFhNTIwZWFiM2QzZTJkYzdkZjQ1NjUyOS4uYmVkYWIz
N2NkZTdjYmQzNGJlNTc5ZTZhYjdmY2Y0NjY4YjZhNzZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBAIC0xMjc1LDgg
KzEyNzUsNiBAQCBwdWJsaWM6CiAgICAgLy8gZXJyb3IgbGlzdC4gUmV0dXJuIHRydWUgaWYgYXQg
bGVhc3Qgb25lIGVycm9yIGlzIG1vdmVkLgogICAgIHZpcnR1YWwgYm9vbCBtb3ZlRXJyb3JzVG9T
eW50aGV0aWNFcnJvckxpc3QoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RmFpbE5leHRH
UFVTdGF0dXNDaGVjaygpID0gMDsKLQogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGlzcGxh
eSgpID0gMDsKIAogICAgIC8vIEZJWE1FOiBzaG91bGQgYmUgcmVtb3ZlZCwgY2FsbGVyIHNob3Vs
ZCBrZWVwIHRyYWNrIG9mIGNoYW5nZWQgc3RhdGUuCkBAIC0xMzAxLDcgKzEyOTksNyBAQCBwdWJs
aWM6CiAgICAgLy8gb24gdGhlIGNvbnRlbnQuCiAgICAgdmlydHVhbCB2b2lkIG1hcmtMYXllckNv
bXBvc2l0ZWQoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2ltdWxhdGVDb250ZXh0Q2hhbmdl
ZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2ltdWxhdGVFdmVudEZvclRlc3RpbmcoY29uc3Qg
U3RyaW5nJikgPSAwOwogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQog
ICAgIC8vIFJldHVybnMgaW50ZXJmYWNlIGZvciBDViBpbnRlcmFjdGlvbiBpZiB0aGUgZnVuY3Rp
b25hbGl0eSBpcyBwcmVzZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29j
b2EubW0KaW5kZXggODQyZmI1ZmFkYTEwNGM5MDcyMzkzODAzYTQ1OTJjY2EyYWFlY2E5ZS4uOTk4
YzIwM2YwMThlNTgxMjdiOGE1ZjAxYjRiZmYwNmMyNzM3MTFjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC01NjksOSArNTY5LDEyIEBAIGJvb2wgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAogICAgIHJldHVy
biBtX2lzRm9yV2ViR0wyOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzaW11
bGF0ZUNvbnRleHRDaGFuZ2VkKCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNpbXVs
YXRlRXZlbnRGb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKQogewotICAgIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmRpc3BsYXlXYXNSZWNv
bmZpZ3VyZWQoKTsKKyAgICBpZiAoZXZlbnROYW1lID09ICJjb250ZXh0Y2hhbmdlZCIpCisgICAg
ICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmRpc3Bs
YXlXYXNSZWNvbmZpZ3VyZWQoKTsKKyAgICBlbHNlIGlmIChldmVudE5hbWUgPT0gImZhaWxuZXh0
Z3B1c3RhdHVzY2hlY2siKQorICAgICAgICBtX2ZhaWxOZXh0U3RhdHVzQ2hlY2sgPSB0cnVlOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAppbmRleCBjYmQ2NTkxMTkzMjUxZGQx
N2QxZmIwNGQ1YzA0YWZlYjk3YjM5ZWZmLi43NWJjMDMxZmJlNzE4YmIyZmVhOGU5Mjk5ZGQyYTEz
ZGViMDFlNWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTE5
Miw4ICsxOTIsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2V0Q29udGV4dFZp
c2liaWxpdHkoYm9vbCkKIHsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2lt
dWxhdGVDb250ZXh0Q2hhbmdlZCgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzaW11
bGF0ZUV2ZW50Rm9yVGVzdGluZyhjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSkKIHsKKyAgICBpZiAo
ZXZlbnROYW1lID09ICJmYWlsbmV4dGdwdXN0YXR1c2NoZWNrIikKKyAgICAgICAgbV9mYWlsTmV4
dFN0YXR1c0NoZWNrID0gdHJ1ZTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
cHJlcGFyZUZvckRpc3BsYXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRl
eCBhYmMzODBjNzNjYTM5MGZhOTdlNmE0ZDQ1Y2VkMmUyZmQyZDJlYzU3Li5kZDk3YmI5MTQ5NzVj
OTk1ZTQzMDc2ZGQzOTExYTU4NzY3MzhhOWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuaApAQCAtNDU3LDcgKzQ1Nyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuYWJsZVByZXNl
cnZlRHJhd2luZ0J1ZmZlcigpIGZpbmFsOwogCiAgICAgdm9pZCBkaXNwYXRjaENvbnRleHRDaGFu
Z2VkTm90aWZpY2F0aW9uKCk7Ci0gICAgdm9pZCBzaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkgZmlu
YWw7CiAKICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVy
JikgZmluYWw7CiAgICAgUmVmUHRyPEltYWdlRGF0YT4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9J
bWFnZURhdGEoKSBmaW5hbDsKQEAgLTUwNyw3ICs1MDYsNyBAQCBwdWJsaWM6CiAgICAgRXh0ZW5z
aW9uc0dMJiBnZXRFeHRlbnNpb25zKCkgZmluYWw7CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0RmFp
bE5leHRHUFVTdGF0dXNDaGVjaygpIGZpbmFsIHsgbV9mYWlsTmV4dFN0YXR1c0NoZWNrID0gdHJ1
ZTsgfQorICAgIHZvaWQgc2ltdWxhdGVFdmVudEZvclRlc3RpbmcoY29uc3QgU3RyaW5nJiBldmVu
dE5hbWUpIG92ZXJyaWRlOwogCiAgICAgdW5zaWduZWQgdGV4dHVyZVNlZWQoR0NHTHVpbnQgdGV4
dHVyZSkgeyByZXR1cm4gbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmNvdW50KHRleHR1cmUpOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAxNGFiNzhlMmYzNDk2OTc3
ZjU1NGUyMjIzMDlkNGY3YTAwOGZhMGE1Li41MjNiOTRiMDA2NzQyNjFmNGIxNzM3YzFlYjkxZWVk
MTg4NmI2OGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC01MDkyLDE0
ICs1MDkyLDkgQEAgdm9pZCBJbnRlcm5hbHM6OnNldEFwcGxlUGF5SXNBY3RpdmUoRG9jdW1lbnQm
IGRvY3VtZW50KQogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCR0wpCi12b2lkIEludGVybmFsczo6
c2ltdWxhdGVXZWJHTENvbnRleHRDaGFuZ2VkKFdlYkdMUmVuZGVyaW5nQ29udGV4dCYgY29udGV4
dCkKK3ZvaWQgSW50ZXJuYWxzOjpzaW11bGF0ZUV2ZW50Rm9yV2ViR0xDb250ZXh0KGNvbnN0IFN0
cmluZyYgZXZlbnROYW1lLCBXZWJHTFJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAg
Y29udGV4dC5zaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCk7Ci19Ci0KLXZvaWQgSW50ZXJuYWxzOjpm
YWlsTmV4dEdQVVN0YXR1c0NoZWNrKFdlYkdMUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKLXsK
LSAgICBjb250ZXh0LnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKTsKKyAgICBjb250ZXh0LnNp
bXVsYXRlRXZlbnRGb3JUZXN0aW5nKGV2ZW50TmFtZSk7CiB9CiAKIGJvb2wgSW50ZXJuYWxzOjpo
YXNMb3dBbmRIaWdoUG93ZXJHUFVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4
IGIzOGVjNDQzNTdmNWM0MTcyZmRjNTI3MTE2NTZiMGU5YjQxMzJmN2IuLmMxOGJlMGRkNzhiZDNl
ODE1NjRhYWJiZmEzNTBiNWNiNWEyOWJkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aApAQCAtNzcyLDggKzc3Miw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQkdM
KQotICAgIHZvaWQgc2ltdWxhdGVXZWJHTENvbnRleHRDaGFuZ2VkKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dCYpOwotICAgIHZvaWQgZmFpbE5leHRHUFVTdGF0dXNDaGVjayhXZWJHTFJlbmRlcmluZ0Nv
bnRleHQmKTsKKyAgICB2b2lkIHNpbXVsYXRlRXZlbnRGb3JXZWJHTENvbnRleHQoY29uc3QgU3Ry
aW5nJiwgV2ViR0xSZW5kZXJpbmdDb250ZXh0Jik7CiAgICAgYm9vbCBoYXNMb3dBbmRIaWdoUG93
ZXJHUFVzKCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4
IGMyYjFkZGQ2M2UzZmI1NzMyNmJkMGZjZTZlZjMxOTEwNTcxOWJlMzEuLmJmNjQ4NzcwOGNmNGE5
YjIzNzNlMWRkNjFmY2E1NmVmYzU0ZDgyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwKQEAgLTc5MSw4ICs3OTEsNyBAQCBlbnVtIFRyZWVUeXBlIHsKICAgICB1bmRlZmluZWQg
ZGlzYWJsZVRpbGVTaXplVXBkYXRlRGVsYXkoKTsKICAgICB1bmRlZmluZWQgc2V0U3BlY3VsYXRp
dmVUaWxpbmdEZWxheURpc2FibGVkRm9yVGVzdGluZyhib29sZWFuIGRpc2FibGVkKTsKIAotICAg
IFtDb25kaXRpb25hbD1XRUJHTF0gdW5kZWZpbmVkIHNpbXVsYXRlV2ViR0xDb250ZXh0Q2hhbmdl
ZChXZWJHTFJlbmRlcmluZ0NvbnRleHQgY29udGV4dCk7Ci0gICAgW0NvbmRpdGlvbmFsPVdFQkdM
XSB1bmRlZmluZWQgZmFpbE5leHRHUFVTdGF0dXNDaGVjayhXZWJHTFJlbmRlcmluZ0NvbnRleHQg
Y29udGV4dCk7CisgICAgW0NvbmRpdGlvbmFsPVdFQkdMXSB1bmRlZmluZWQgc2ltdWxhdGVFdmVu
dEZvcldlYkdMQ29udGV4dChET01TdHJpbmcgZXZlbnROYW1lLCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQgY29udGV4dCk7CiAgICAgW0NvbmRpdGlvbmFsPVdFQkdMXSBib29sZWFuIGhhc0xvd0FuZEhp
Z2hQb3dlckdQVXMoKTsKIAogICAgIHVuZGVmaW5lZCBzZXRQYWdlVmlzaWJpbGl0eShib29sZWFu
IGlzVmlzaWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYzM5OWQ2YmZjMmNmODQzYjBjNGVkMzM3ZTQ3
NTEwZjg5YWM4YmNjNC4uOTA0NzBlZDBlMWM3ZDdiMDQ5NjE5NjFkYTZiMGVlMDIxZmY3Mzg4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIk1lZGlhT3ZlcnJpZGVz
Rm9yVGVzdGluZy5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lclByb3h5
LmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2Vy
LmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxh
eWVyUHJveHkuaCIKQEAgLTM2MCwxMCArMzYxLDE1IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
CiAKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZUdyYXBoaWNzQ29udGV4
dEdMKEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpCiB7Ci0gICAgYm9vbCBmb3VuZCA9IG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAucmVt
b3ZlKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Ci0gICAgQVNTRVJUX1VOVVNFRChmb3Vu
ZCwgZm91bmQpOworICAgIG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAucmVtb3ZlKGdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6cmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMRm9yVGVzdGluZyhHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICByZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wo
aWRlbnRpZmllcik7CiB9CiAjZW5kaWYKKwogdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpjbGVhck5vd1BsYXlpbmdJbmZvKCkKIHsKICAgICBncHVQcm9jZXNzKCkubm93UGxheWluZ01h
bmFnZXIoKS5jbGVhck5vd1BsYXlpbmdJbmZvQ2xpZW50KCp0aGlzKTsKQEAgLTU0NSw2ICs1NTEs
MTIgQEAgYm9vbCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEMKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogI2VuZGlmCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNl
aXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSkgeworICAgICAgICAvLyBTa2lwIG1lc3NhZ2VzIGZvciBhbHJlYWR5IHJl
bW92ZWQgcmVjZWl2ZXJzLgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYKIAog
ICAgIHJldHVybiBtZXNzYWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaE1lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2Rlcik7CiB9CkBAIC02MDQsNyArNjE2LDEzIEBAIGJvb2wgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICNlbmRpZgotCisjaWYgRU5BQkxFKFdF
QkdMKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAg
ICAvLyBTa2lwIG1lc3NhZ2VzIGZvciBhbHJlYWR5IHJlbW92ZWQgcmVjZWl2ZXJzLgorICAgICAg
ICByZXBseUVuY29kZXIucmVzZXQoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2Vu
ZGlmCiAgICAgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRpc3BhdGNoU3luY01lc3NhZ2Uo
Y29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggMmFm
YmVhYTRkYmI4MzJiMDYyYjM0NDhmNmRlNDk5ZjhlYzFmYTMxZS4uNjQ3YmQwMzYxMjY3N2Y4ODJh
MTNmMGQwMmRjZGI5MWU1MzZjOGNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xMjgsNyArMTI4LDkgQEAgcHVi
bGljOgogI2VuZGlmCiAKICAgICB2b2lkIHRlcm1pbmF0ZVdlYlByb2Nlc3MoKTsKLQorI2lmIEVO
QUJMRShXRUJHTCkKKyAgICB2b2lkIHJlbGVhc2VHcmFwaGljc0NvbnRleHRHTEZvclRlc3Rpbmco
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyNlbmRpZgogcHJpdmF0ZToKICAgICBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKEdQVVByb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzJiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcApp
bmRleCBjNWM3ZGVhZDI2ZWU3ZmE0ZTRmMWU0ZGRmNzQxYzM1YmM2MmZkZWZmLi4wN2I5YjVkMGMy
OWNiZWY4YTIxYTk2NGE0OGMxZjZmOGUyY2Y1MjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5j
cHAKQEAgLTI1NSw2ICsyNTUsMjAgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y29w
eVRleHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWUKICNlbmRpZgog
fQogCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpzaW11bGF0ZUV2ZW50Rm9yVGVzdGlu
ZyhTdHJpbmcmJiBldmVudE5hbWUpCit7CisgICAgLy8gRklYTUU6IG9ubHkgcnVuIHRoaXMgaW4g
dGVzdGluZyBtb2RlLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIy
NTQ0CisgICAgaWYgKGV2ZW50TmFtZSA9PSAidGltZW91dCIpIHsKKyAgICAgICAgLy8gU2ltdWxh
dGUgdGhlIHRpbWVvdXQgYnkganVzdCBkaXNjYXJkaW5nIHRoZSBjb250ZXh0LiBUaGUgc3Vic2Vx
dWVudCBtZXNzYWdlcyBhY3QgbGlrZQorICAgICAgICAvLyB1bmF1dGhvcml6ZWQgb3Igb2xkIG1l
c3NhZ2VzIGZyb20gV2ViIHByb2Nlc3MsIHRoZXkgYXJlIHNraXBwZWQuCisgICAgICAgIGNhbGxP
bk1haW5SdW5Mb29wKFtncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLCBpZGVudGlmaWVyID0gbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXJd
KCkgeworICAgICAgICAgICAgaWYgKGF1dG8gY29ubmVjdGlvblRvV2ViID0gZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uVG9XZWItPnJl
bGVhc2VHcmFwaGljc0NvbnRleHRHTEZvclRlc3RpbmcoaWRlbnRpZmllcik7CisgICAgICAgIH0p
OworICAgIH0KKyAgICBtX2NvbnRleHQtPnNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKGV2ZW50TmFt
ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmgKaW5kZXggMmJiNzRhYWNiMDc5YTA0MGY5OGFlOGNiZjViZmE3NzQ4NGYxZjU1Ny4uNTM2
NmQ4NDlmMWY0NmYyYjc5MDk1MzZhZWZhOTY5ZDY3ZDgwN2UxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmgKQEAgLTkyLDYgKzkyLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcGFpbnRSZW5kZXJp
bmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVz
dWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNvcHlUZXh0dXJlRnJvbU1lZGlhKFdl
YkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciwgdWludDMyX3QgdGV4dHVyZSwgdWludDMyX3Qg
dGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbEZvcm1hdCwgdWludDMyX3Qg
Zm9ybWF0LCB1aW50MzJfdCB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFks
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgc2ltdWxhdGVFdmVu
dEZvclRlc3RpbmcoU3RyaW5nJiYgZXZlbnROYW1lKTsKIAogI2luY2x1ZGUgIlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgiIC8vIE5PTElOVAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KaW5kZXggNzQyMWFiMDE5ZDExYzUyNTRjZDky
MjQ0MzRjYjEzNDk0MTljY2U1ZS4uYzVmNzI3Mjk2ZTEwNDBjMzI2ZjM1NzBkNGYxMzk4OTRlYzQw
MTIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgpAQCAtMzks
OCArMzksOCBAQCBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3Vu
dGVkIFN0cmVhbSB7CiAgICAgdm9pZCBQYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNo
cm9ub3VzCiAgICAgdm9pZCBQYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyKSAtPiAoKSBTeW5jaHJvbm91
cwogICAgIHZvaWQgQ29weVRleHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIHVpbnQzMl90IHRleHR1cmUsIHVpbnQzMl90IHRhcmdldCwgaW50
MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxGb3JtYXQsIHVpbnQzMl90IGZvcm1hdCwgdWlu
dDMyX3QgdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSAtPiAoYm9vbCBz
dWNjZXNzKSBTeW5jaHJvbm91cworICAgIHZvaWQgU2ltdWxhdGVFdmVudEZvclRlc3RpbmcoU3Ry
aW5nIGV2ZW50TmFtZSkKIAotICAgIHZvaWQgU2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCiAg
ICAgdm9pZCBNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSAtPiAoYm9vbCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKICAgICB2b2lkIEFjdGl2ZVRleHR1cmUodWludDMyX3QgdGV4dHVy
ZSkKICAgICB2b2lkIEF0dGFjaFNoYWRlcih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBzaGFk
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRl
ZC5oCmluZGV4IGUwZDkyOWRhNGI3N2I0ZTMwOTc4ZWUwYTFjNjlhZWRlMmZhODUzNmYuLmRiNGZi
YTU0NmQyODcwZWIwOGY5MTgzZTE5M2E1ZTFiNDhiZjY4N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9u
c0dlbmVyYXRlZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCkBAIC0yNSwxMCArMjUsNiBA
QAogLy8gVGhpcyBmaWxlIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgcHJpdmF0ZSBzZWN0aW9u
IG9mIHRoZQogLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgaW1wbGVtZW50YXRpb25zLgogI3By
YWdtYSBvbmNlCi0gICAgdm9pZCBzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkKLSAgICB7Ci0g
ICAgICAgIG1fY29udGV4dC0+c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpOwotICAgIH0KICAg
ICB2b2lkIG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdChDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIHsKICAgICAgICAgYm9vbCByZXR1
cm5WYWx1ZSA9IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0
cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggYjRmNWNkZjAwOGU1YTdmMmQyZjEwMmEyMzVj
M2MyMjUxNzMzNzZlYS4uMTczMTQ4NTdmMDVhMjI2MzJhZTBlOGMzNzI5ZWJjMGE4YmVlZDU3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29u
bmVjdGlvbi5jcHAKQEAgLTMzLDkgKzMzLDkgQEAgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBzaXplX3Qgc2kKICAg
ICAsIG1fYnVmZmVyKHNpemUpCiB7CiAgICAgLy8gUmVhZCBzdGFydHMgZnJvbSAwIHdpdGggbGlt
aXQgb2YgMCBhbmQgcmVhZGVyIHNsZWVwaW5nLgotICAgIHNoYXJlZFNlbmRlck9mZnNldCgpLnN0
b3JlKFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OnNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGlu
Z1RhZywgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisgICAgc2hhcmVkQ2xpZW50T2Zmc2V0
KCkuc3RvcmUoQ2xpZW50T2Zmc2V0OjpzZXJ2ZXJJc1NsZWVwaW5nVGFnLCBzdGQ6Om1lbW9yeV9v
cmRlcl9yZWxheGVkKTsKICAgICAvLyBXcml0ZSBzdGFydHMgZnJvbSAwIHdpdGggYSBsaW1pdCBv
ZiB0aGUgd2hvbGUgYnVmZmVyLgotICAgIHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkuc3RvcmUoMCwg
c3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisgICAgc2hhcmVkQ2xpZW50TGltaXQoKS5zdG9y
ZShzdGF0aWNfY2FzdDxDbGllbnRMaW1pdD4oMCksIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQp
OwogfQogCiB2b2lkIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNldFdha2VVcFNlbWFwaG9yZShJ
UEM6OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaAppbmRleCAwMjgzZjI2NjlkMDE1NjhjYjc2
Yzg5MWU1MjA1NzZhYzBjZWI1OGJhLi5kYWZhZjdkNzRkNGIwYWYzYjdkZjBlOGNjMGI2MWYwYjRh
ZDk3NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGll
bnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbi5oCkBAIC0zNiwxMyArMzYsMTIgQEAKICNpbmNsdWRlIDx3dGYvVGhyZWFk
aW5nLmg+CiBuYW1lc3BhY2UgSVBDIHsKIAotLy8gQSBtZXNzYWdlIHN0cmVhbSBpcyBhIGhhbGYt
ZHVwbGV4IHR3by13YXkgc3RyZWFtIG9mIG1lc3NhZ2VzIHRvIGEgYmV0d2VlbiBhIHNlbmRlciBh
bmQgdGhlCi0vLyBkZXN0aW5hdGlvbiByZWNlaXZlci4KKy8vIFN0cmVhbUNsaWVudENvbm5lY3Rp
b24gcmVwcmVzZW50cyB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIHN0cmVhbSBjbGllbnQgYW5kIHNl
cnZlciwgYXMgdXNlZCBieSB0aGUgY2xpZW50LgogLy8KIC8vIFN0cmVhbUNsaWVudENvbm5lY3Rp
b24gY2FuIHNlbmQgbWVzc2FnZXMgYW5kIHJlY2VpdmUgc3luY2hyb25vdXMgcmVwbGllcwogLy8g
dGhyb3VnaCB0aGlzIG1lc3NhZ2Ugc3RyZWFtIG9yIHRocm91Z2ggSVBDOjpDb25uZWN0aW9uLgog
Ly8KLS8vIFRoZSBkZXN0aW5hdGlvbiByZWNlaXZlciB3aWxsIHJlY2VpdmUgbWVzc2FnZXMgaW4g
b3JkZXIgX2ZvciB0aGUgZGVzdGluYXRpb24gbWVzc2FnZXNfLgorLy8gVGhlIHNlcnZlciB3aWxs
IHJlY2VpdmUgbWVzc2FnZXMgaW4gb3JkZXIgX2ZvciB0aGUgZGVzdGluYXRpb24gbWVzc2FnZXNf
LgogLy8gVGhlIHdob2xlIElQQzo6Q29ubmVjdGlvbiBtZXNzYWdlIG9yZGVyIGlzIG5vdCBwcmVz
ZXJ2ZWQuCiAvLwogLy8gVGhlIFN0cmVhbUNsaWVudENvbm5lY3Rpb24gdHJ1c3RzIHRoZSBTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uLgpAQCAtODAsMTkgKzc5LDIxIEBAIHByaXZhdGU6CiAKICAgICBT
cGFuIGFsaWduZWRTcGFuKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCk7CiAgICAgc2l6ZV90
IHNpemUoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KTsKLSAgICBzaXplX3QgY2xhbXBlZExp
bWl0KHNpemVfdCB1bnRydXN0ZWRMaW1pdCkgY29uc3Q7CiAKICAgICBzaXplX3Qgd3JhcE9mZnNl
dChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci53cmFwT2Zmc2V0KG9mZnNl
dCk7IH0KICAgICBzaXplX3QgYWxpZ25PZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIuYWxpZ25PZmZzZXQ8bWVzc2FnZUFsaWdubWVudD4ob2Zmc2V0LCBtaW5pbXVt
TWVzc2FnZVNpemUpOyB9Ci0gICAgQXRvbWljPHNpemVfdD4mIHNoYXJlZFNlbmRlck9mZnNldCgp
IHsgcmV0dXJuIG1fYnVmZmVyLnNlbmRlck9mZnNldCgpOyB9Ci0gICAgQXRvbWljPHNpemVfdD4m
IHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkgeyByZXR1cm4gbV9idWZmZXIucmVjZWl2ZXJPZmZzZXQo
KTsgfQorICAgIHVzaW5nIENsaWVudE9mZnNldCA9IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OkNs
aWVudE9mZnNldDsKKyAgICBBdG9taWM8Q2xpZW50T2Zmc2V0PiYgc2hhcmVkQ2xpZW50T2Zmc2V0
KCkgeyByZXR1cm4gbV9idWZmZXIuY2xpZW50T2Zmc2V0KCk7IH0KKyAgICB1c2luZyBDbGllbnRM
aW1pdCA9IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OlNlcnZlck9mZnNldDsKKyAgICBBdG9taWM8
Q2xpZW50TGltaXQ+JiBzaGFyZWRDbGllbnRMaW1pdCgpIHsgcmV0dXJuIG1fYnVmZmVyLnNlcnZl
ck9mZnNldCgpOyB9CisgICAgc2l6ZV90IHRvTGltaXQoQ2xpZW50TGltaXQpIGNvbnN0OwogICAg
IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KICAgICBz
aXplX3QgZGF0YVNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5kYXRhU2l6ZSgpOyB9CiAK
ICAgICBDb25uZWN0aW9uJiBtX2Nvbm5lY3Rpb247CiAgICAgdWludDY0X3QgbV9jdXJyZW50RGVz
dGluYXRpb25JRCB7IDAgfTsKIAotICAgIHNpemVfdCBtX3NlbmRlck9mZnNldCB7IDAgfTsKKyAg
ICBzaXplX3QgbV9jbGllbnRPZmZzZXQgeyAwIH07CiAgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ciBtX2J1ZmZlcjsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBPcHRpb25hbDxTZW1hcGhvcmU+
IG1fd2FrZVVwU2VtYXBob3JlOwpAQCAtMTM2LDcgKzEzNyw2IEBAIFN0cmVhbUNsaWVudENvbm5l
Y3Rpb246OlNlbmRTeW5jUmVzdWx0IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmRTeW5jKFQm
JiBtZXNzCiAgICAgLy8gRklYTUU6IGltcGxlbWVudCByZWNlaXZlIHRocm91Z2ggc3RyZWFtLgog
ICAgIHNlbmRQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlKFdURk1vdmUoKnNwYW4pKTsKICAgICBh
dXRvIHJlc3VsdCA9IG1fY29ubmVjdGlvbi5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZN
b3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0KTsKLSAgICBBU1NF
UlQocmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xNjgsMzAgKzE2OCwzNCBA
QCBpbmxpbmUgdm9pZCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kUHJvY2Vzc091dE9mU3Ry
ZWFtTWVzc2FnZShTcGFuJiYgc3BhbikKIH0KIGlubGluZSBPcHRpb25hbDxTdHJlYW1DbGllbnRD
b25uZWN0aW9uOjpTcGFuPiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKFRpbWVv
dXQgdGltZW91dCkKIHsKKyAgICBDbGllbnRMaW1pdCBjbGllbnRMaW1pdCA9IHNoYXJlZENsaWVu
dExpbWl0KCkubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKTsKKyAgICAvLyBUaGlzIHdv
dWxkIG1lYW4gd2UgdHJ5IHRvIHNlbmQgbWVzc2FnZXMgYWZ0ZXIgYSB0aW1lb3V0LiBJdCBpcyBh
IHByb2dyYW1taW5nIGVycm9yLgorICAgIC8vIFNpbmNlIHRoZSB2YWx1ZSBpcyB0cnVzdGVkLCB3
ZSBvbmx5IGFzc2VydC4KKyAgICBBU1NFUlQoY2xpZW50TGltaXQgIT0gQ2xpZW50TGltaXQ6OmNs
aWVudElzV2FpdGluZ1RhZyk7CisKICAgICBmb3IgKDs7KSB7Ci0gICAgICAgIHNpemVfdCBzZW5k
ZXJMaW1pdCA9IGNsYW1wZWRMaW1pdChzaGFyZWRSZWNlaXZlck9mZnNldCgpLmxvYWQoc3RkOjpt
ZW1vcnlfb3JkZXJfYWNxdWlyZSkpOwotICAgICAgICBhdXRvIHJlc3VsdCA9IGFsaWduZWRTcGFu
KG1fc2VuZGVyT2Zmc2V0LCBzZW5kZXJMaW1pdCk7Ci0gICAgICAgIGlmIChyZXN1bHQuc2l6ZSA8
IG1pbmltdW1NZXNzYWdlU2l6ZSkgewotICAgICAgICAgICAgaWYgKHRpbWVvdXQuZGlkVGltZU91
dCgpKQotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoY2xpZW50TGltaXQgIT0g
Q2xpZW50TGltaXQ6OmNsaWVudElzV2FpdGluZ1RhZykgeworICAgICAgICAgICAgYXV0byByZXN1
bHQgPSBhbGlnbmVkU3BhbihtX2NsaWVudE9mZnNldCwgdG9MaW1pdChjbGllbnRMaW1pdCkpOwor
ICAgICAgICAgICAgaWYgKHJlc3VsdC5zaXplID49IG1pbmltdW1NZXNzYWdlU2l6ZSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIGlmICh0aW1lb3V0
LmRpZFRpbWVPdXQoKSkKKyAgICAgICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgICAgICAgICAgc2l6ZV90IG9sZFNlbmRlckxpbWl0ID0gc2hhcmVkUmVjZWl2ZXJPZmZzZXQo
KS5jb21wYXJlRXhjaGFuZ2VTdHJvbmcoc2VuZGVyTGltaXQsIFN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXI6OnJlY2VpdmVyT2Zmc2V0U2VuZGVySXNXYWl0aW5nVGFnLCBzdGQ6Om1lbW9yeV9vcmRlcl9h
Y3FfcmVsLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKLSAgICAgICAgICAgIGlmIChzZW5k
ZXJMaW1pdCA9PSBvbGRTZW5kZXJMaW1pdCkKLSAgICAgICAgICAgICAgICBtX2J1ZmZlci5zZW5k
ZXJXYWl0U2VtYXBob3JlKCkud2FpdEZvcih0aW1lb3V0KTsKLSAgICAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgICAgIHNlbmRlckxpbWl0ID0gY2xhbXBlZExpbWl0KG9sZFNlbmRlckxpbWl0
KTsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBhbGlnbmVkU3BhbihtX3NlbmRlck9mZnNldCwg
c2VuZGVyTGltaXQpOwotICAgICAgICAgICAgfQorICAgICAgICBDbGllbnRMaW1pdCBvbGRDbGll
bnRMaW1pdCA9IHNoYXJlZENsaWVudExpbWl0KCkuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKGNsaWVu
dExpbWl0LCBDbGllbnRMaW1pdDo6Y2xpZW50SXNXYWl0aW5nVGFnLCBzdGQ6Om1lbW9yeV9vcmRl
cl9hY3FfcmVsLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKKyAgICAgICAgaWYgKGNsaWVu
dExpbWl0ID09IG9sZENsaWVudExpbWl0KSB7CisgICAgICAgICAgICBtX2J1ZmZlci5jbGllbnRX
YWl0U2VtYXBob3JlKCkud2FpdEZvcih0aW1lb3V0KTsKKyAgICAgICAgICAgIGNsaWVudExpbWl0
ID0gc2hhcmVkQ2xpZW50TGltaXQoKS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGNsaWVudExpbWl0ID0gb2xkQ2xpZW50TGltaXQ7
CiAjZWxzZQotICAgICAgICAgICAgVGhyZWFkOjp5aWVsZCgpOworICAgICAgICBUaHJlYWQ6Onlp
ZWxkKCk7CisgICAgICAgIGNsaWVudExpbWl0ID0gc2hhcmVkQ2xpZW50TGltaXQoKS5sb2FkKHN0
ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpOwogI2VuZGlmCi0gICAgICAgIH0KLSAgICAgICAgaWYg
KHJlc3VsdC5zaXplID49IG1pbmltdW1NZXNzYWdlU2l6ZSkKLSAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgICAgIC8vIFRoZSBhbGlnbmVkU3BhbiB1c2VzIHRoZSBtaW5pbXVtTWVzc2Fn
ZVNpemUgdG8gY2FsY3VsYXRlIHRoZSBuZXh0IGJlZ2lubmluZyBwb3NpdGlvbiBpbiB0aGUgYnVm
ZmVyLAogICAgICAgICAvLyBhbmQgbm90IHRoZSBzaXplLiBUaGUgc2l6ZSBtaWdodCBiZSBtb3Jl
IG9yIGxlc3Mgd2hhdCBpcyBuZWVkZWQsIGRlcGVuZGluZyBvbiB3aGVyZSB0aGUgcmVhZGVyIGlz
LgogICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBjYXBhY2l0eSBmb3IgbWluaW11bSBtZXNzYWdl
IHNpemUsIHdhaXQgdW50aWwgbW9yZSBpcyBhdmFpbGFibGUuCi0gICAgICAgIC8vIEluIHRoZSBj
YXNlIHdoZXJlIHNlbmRlck9mZnNldCA8IHJlY2VpdmVyT2Zmc2V0IHdlIGNhbiBhcnJpdmUgdG8g
YSBzaXR1YXRpb24gd2hlcmUKKyAgICAgICAgLy8gSW4gdGhlIGNhc2Ugd2hlcmUgY2xpZW50T2Zm
c2V0IDwgY2xpZW50TGltaXQgd2UgY2FuIGFycml2ZSB0byBhIHNpdHVhdGlvbiB3aGVyZQogICAg
ICAgICAvLyAwIDwgcmVzdWx0LnNpemUgPCBtaW5pbXVtTWVzc2FnZVNpemUuCiAgICAgfQogICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0yMDAsMTMgKzIwNCwxMyBAQCBpbmxpbmUgT3B0aW9u
YWw8U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3Bhbj4gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
dHJ5QWNxdWlyZQogaW5saW5lIFN0cmVhbUNsaWVudENvbm5lY3Rpb246Oldha2VVcFJlY2VpdmVy
IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnJlbGVhc2Uoc2l6ZV90IHNpemUpCiB7CiAgICAgc2l6
ZSA9IHN0ZDo6bWF4KHNpemUsIG1pbmltdW1NZXNzYWdlU2l6ZSk7Ci0gICAgbV9zZW5kZXJPZmZz
ZXQgPSB3cmFwT2Zmc2V0KGFsaWduT2Zmc2V0KG1fc2VuZGVyT2Zmc2V0KSArIHNpemUpOwotICAg
IEFTU0VSVChtX3NlbmRlck9mZnNldCA8IGRhdGFTaXplKCkpOwotICAgIC8vIElmIHRoZSByZWNl
aXZlciB3cm90ZSBvdmVyIHRoZSBzZW5kZXJPZmZzZXQgd2l0aCBzZW5kZXJPZmZzZXRSZWNlaXZl
cklzU2xlZXBpbmdUYWcsIHdlIGtub3cgaXQgaXMgc2xlZXBpbmcuCi0gICAgc2l6ZV90IHJlY2Vp
dmVyTGltaXQgPSBzaGFyZWRTZW5kZXJPZmZzZXQoKS5leGNoYW5nZShtX3NlbmRlck9mZnNldCwg
c3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7Ci0gICAgaWYgKHJlY2VpdmVyTGltaXQgPT0gU3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnKQor
ICAgIG1fY2xpZW50T2Zmc2V0ID0gd3JhcE9mZnNldChhbGlnbk9mZnNldChtX2NsaWVudE9mZnNl
dCkgKyBzaXplKTsKKyAgICBBU1NFUlQobV9jbGllbnRPZmZzZXQgPCBkYXRhU2l6ZSgpKTsKKyAg
ICAvLyBJZiB0aGUgcmVjZWl2ZXIgd3JvdGUgb3ZlciB0aGUgY2xpZW50T2Zmc2V0IHdpdGggc2Vy
dmVySXNTbGVlcGluZ1RhZywgd2Uga25vdyBpdCBpcyBzbGVlcGluZy4KKyAgICBDbGllbnRPZmZz
ZXQgb2xkQ2xpZW50T2Zmc2V0ID0gc2hhcmVkQ2xpZW50T2Zmc2V0KCkuZXhjaGFuZ2Uoc3RhdGlj
X2Nhc3Q8Q2xpZW50T2Zmc2V0PihtX2NsaWVudE9mZnNldCksIHN0ZDo6bWVtb3J5X29yZGVyX2Fj
cV9yZWwpOworICAgIGlmIChvbGRDbGllbnRPZmZzZXQgPT0gQ2xpZW50T2Zmc2V0OjpzZXJ2ZXJJ
c1NsZWVwaW5nVGFnKQogICAgICAgICByZXR1cm4gV2FrZVVwUmVjZWl2ZXI6OlllczsKLSAgICBB
U1NFUlQoIShyZWNlaXZlckxpbWl0ICYgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zm
c2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnKSk7CisgICAgQVNTRVJUKCEob2xkQ2xpZW50T2Zmc2V0
ICYgQ2xpZW50T2Zmc2V0OjpzZXJ2ZXJJc1NsZWVwaW5nVGFnKSk7CiAgICAgcmV0dXJuIFdha2VV
cFJlY2VpdmVyOjpObzsKIH0KIApAQCAtMjM1LDEwICsyMzksMTEgQEAgaW5saW5lIHNpemVfdCBT
dHJlYW1DbGllbnRDb25uZWN0aW9uOjpzaXplKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCkK
ICAgICByZXR1cm4gbGltaXQgLSBvZmZzZXQgLSAxOwogfQogCi1pbmxpbmUgc2l6ZV90IFN0cmVh
bUNsaWVudENvbm5lY3Rpb246OmNsYW1wZWRMaW1pdChzaXplX3QgdW50cnVzdGVkTGltaXQpIGNv
bnN0CitpbmxpbmUgc2l6ZV90IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRvTGltaXQoQ2xpZW50
TGltaXQgY2xpZW50TGltaXQpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKHVudHJ1c3RlZExpbWl0IDwg
KGRhdGFTaXplKCkgLSAxKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWluKHVudHJ1c3RlZExpbWl0LCBk
YXRhU2l6ZSgpIC0gMSk7CisgICAgQVNTRVJUKCEoY2xpZW50TGltaXQgJiBDbGllbnRMaW1pdDo6
Y2xpZW50SXNXYWl0aW5nVGFnKSk7CisgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oY2xp
ZW50TGltaXQpIDw9IGRhdGFTaXplKCkgLSAxKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6
ZV90PihjbGllbnRMaW1pdCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAKaW5kZXggOWM1ZjdmMzFlNTMzZGQz
YmRiZThmNDViNjZiZWM4Y2Y3NTg3MzdhNy4uYzIxYmRjNjhmOGZkNzVhZmNlYTg5ZTFkNmIwNjlk
NWM3OGY0YWEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAKQEAgLTQ1LDEwICs0NSwxMCBAQCBTdHJlYW1Db25uZWN0
aW9uQnVmZmVyOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyKHNpemVfdCBtZW1vcnlTaXplKQogICAg
IEFTU0VSVChtX2RhdGFTaXplIDw9IG1heGltdW1TaXplKCkpOwogfQogCi1TdHJlYW1Db25uZWN0
aW9uQnVmZmVyOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyKFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9y
eT4mJiBtZW1vcnksIHNpemVfdCBtZW1vcnlTaXplLCBTZW1hcGhvcmUmJiBzZW5kZXJXYWl0U2Vt
YXBob3JlKQorU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihS
ZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+JiYgbWVtb3J5LCBzaXplX3QgbWVtb3J5U2l6ZSwgU2Vt
YXBob3JlJiYgY2xpZW50V2FpdFNlbWFwaG9yZSkKICAgICA6IG1fZGF0YVNpemUobWVtb3J5U2l6
ZSAtIGhlYWRlclNpemUoKSkKICAgICAsIG1fc2hhcmVkTWVtb3J5KFdURk1vdmUobWVtb3J5KSkK
LSAgICAsIG1fc2VuZGVyV2FpdFNlbWFwaG9yZShXVEZNb3ZlKHNlbmRlcldhaXRTZW1hcGhvcmUp
KQorICAgICwgbV9jbGllbnRXYWl0U2VtYXBob3JlKFdURk1vdmUoY2xpZW50V2FpdFNlbWFwaG9y
ZSkpCiB7CiAgICAgQVNTRVJUKG1fZGF0YVNpemUgPD0gbWF4aW11bVNpemUoKSk7CiB9CkBAIC02
Miw3ICs2Miw3IEBAIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImIFN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXI6Om9wZXJhdG9yPShTdHJlYW1Db25uZWN0aW9uQnVmZmVyCiAgICAgaWYgKHRoaXMgIT0gJm90
aGVyKSB7CiAgICAgICAgIG1fZGF0YVNpemUgPSBvdGhlci5tX2RhdGFTaXplOwogICAgICAgICBt
X3NoYXJlZE1lbW9yeSA9IFdURk1vdmUob3RoZXIubV9zaGFyZWRNZW1vcnkpOwotICAgICAgICBt
X3NlbmRlcldhaXRTZW1hcGhvcmUgPSBXVEZNb3ZlKG90aGVyLm1fc2VuZGVyV2FpdFNlbWFwaG9y
ZSk7CisgICAgICAgIG1fY2xpZW50V2FpdFNlbWFwaG9yZSA9IFdURk1vdmUob3RoZXIubV9jbGll
bnRXYWl0U2VtYXBob3JlKTsKICAgICB9CiAgICAgcmV0dXJuICp0aGlzOwogfQpAQCAtNzQsNyAr
NzQsNyBAQCB2b2lkIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogICAgICAgICBDUkFTSCgpOwogICAgIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJ
UENIYW5kbGUgaXBjSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBtX3NoYXJlZE1lbW9yeS0+c2l6
ZSgpIH07CiAgICAgZW5jb2RlciA8PCBpcGNIYW5kbGU7Ci0gICAgZW5jb2RlciA8PCBtX3NlbmRl
cldhaXRTZW1hcGhvcmU7CisgICAgZW5jb2RlciA8PCBtX2NsaWVudFdhaXRTZW1hcGhvcmU7CiB9
CiAKIE9wdGlvbmFsPFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI+IFN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oCmluZGV4IDk2ZjBiOGQwNDEzNzIwM2I1
NWViZDQxY2ZlMWI4OGYwNzhkOWQwN2YuLmEyMjQxMGUzZWJkZWMwMjI4NDk1YzY5Njg0NTNjYTIw
MzQ3Njk0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNv
bm5lY3Rpb25CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1D
b25uZWN0aW9uQnVmZmVyLmgKQEAgLTQwLDIzICs0MCwyNCBAQCBuYW1lc3BhY2UgSVBDIHsKIC8v
IFRoZSAiYmktcGFydGl0ZSIgaXMgaGVyZSB0byBtZWFuIHRoYXQgd3JpdGVzIGFuZCByZWFkcyB0
byB0aGUgYnVmZmVyIG11c3QgYmUKIC8vIGNvbnRpbnVvdXMuCiAvLwotLy8gVGhlIGNsaWVudCAo
c2VuZGVyIG9yIHJlY2VpdmVyKSAiYWNxdWlyZXMiIHNvbWUgYW1vdW50IG9mIGJ1ZmZlciBkYXRh
LiBUaGUgZGF0YSBwb2ludGVyCisvLyBUaGUgY2FsbGVyIChjbGllbnQgb3Igc2VydmVyKSAiYWNx
dWlyZXMiIHNvbWUgYW1vdW50IG9mIGJ1ZmZlciBkYXRhLiBUaGUgZGF0YSBwb2ludGVyCiAvLyBs
b2NhdGlvbiBkZXBlbmRzIG9uIHRoZSBhbW91bnQgb2YgZGF0YSBiZWluZyBhY3F1aXJlZC4gVGhl
IGJ1ZmZlciByZXR1cm5zIGFsbCB0aGUgYXZhaWxhYmxlCiAvLyBjYXBhY2l0eSAtLSB0aGlzIG1h
eSBiZSBsZXNzIHRoYW4gYWNxdWlyZWQuCiAvLwogLy8gVGhlIGNsaWVudCAicmVsZWFzZXMiIHRo
ZSBzb21lIGFtb3VudCBvZiBkYXRhLCBhdCBsZWFzdCB0aGUgYW1vdW50IGFjcXVpcmVkIGJ1dCBw
b3RlbnRpYWxseQogLy8gbW9yZS4KIC8vCi0vLyBCb3RoIHNlbmRlciBhbmQgcmVjZWl2ZXIgbXVz
dCByZWxlYXNlIHRoZSBzYW1lIGFtb3VudCBvZiBkYXRhIGF0IHRoZSBzYW1lIHN0ZXAgb2YgdGhl
IGFjcXVpcmUvcmVsZWFzZSBzZXF1ZW5jZS4KLS8vIFN1cHBvc2Ugc2VuZGVyIHJlbGVhc2VzIGZp
cnN0IDggYW5kIHRoZW4gMTY2IGJ5dGVzLiBVcG9uIHRoZSBmaXJzdCBhY3F1aXJlLCByZWNlaXZl
cgorLy8gQm90aCB0aGUgY2xpZW50IGFuZCB0aGUgc2VydmVyIG11c3QgcmVsZWFzZSB0aGUgc2Ft
ZSBhbW91bnQgb2YgZGF0YSBhdCB0aGUgc2FtZSBzdGVwIG9mIHRoZQorLy8gYWNxdWlyZS9yZWxl
YXNlIHNlcXVlbmNlLgorLy8gU3VwcG9zZSB0aGUgY2xpZW50IHJlbGVhc2VzIGZpcnN0IDggYW5k
IHRoZW4gMTY2IGJ5dGVzLiBVcG9uIHRoZSBmaXJzdCBhY3F1aXJlLCB0aGUgc2VydmVyCiAvLyBt
dXN0IGFsc28gcmVsZWFzZSA4IGJ5dGVzIGFuZCB0aGVuIHVwb24gdGhlIHNlY29uZCBhY3F1aXJl
IDE2NiBieXRlcy4KIC8vIER1ZSB0byBob3cgYWxpZ25tZW50IGFuZCBtaW5pbXVtIGxlbmd0aCBh
ZmZlY3QgdGhlIHBvc2l0aW9uIGF0IHdoaWNoIHRoZSBtZW1vcnkgY2FuCi0vLyBiZSByZWZlcnJl
ZCB0bywgdGhlIHJlY2VpdmVyIGNhbm5vdCAicmVhZCB0d28gdGltZXMgc2ltdWx0YW5lb3VzbHki
IGFuZCByZWxlYXNlIDE3NCBieXRlcy4KKy8vIGJlIHJlZmVycmVkIHRvLCB0aGUgc2VydmVyIGNh
bm5vdCAicmVhZCB0d28gdGltZXMgc2ltdWx0YW5lb3VzbHkiIGFuZCByZWxlYXNlIDE3NCBieXRl
cy4KIC8vCiAvLyBUaGUgY2lyY3VsYXIgYnVmZmVyIGhhcyBmb2xsb3dpbmcgaW1wbGVtZW50YXRp
b246Ci0vLyAqIFNlbmRlciBvd25zIHRoZSBkYXRhIGJldHdlZW4gW3NlbmRlck9mZnNldCwgcmVj
ZWl2ZXJPZmZzZXRbLiBXaGVuIHNlbmRlck9mZnNldCA9PQotLy8gcmVjZWl2ZXJPZmZzZXQsIHNl
bmRlciBvd25zIGFsbCB0aGUgZGF0YS4KLS8vICogUmVjZWl2ZXIgb3ducyB0aGUgZGF0YSBiZXR3
ZWVuIFtyZWNlaXZlck9mZnNldCwgc2VuZGVyT2Zmc2V0Wy4KKy8vICogVGhlIGNsaWVudCBvd25z
IHRoZSBkYXRhIGJldHdlZW4gW2NsaWVudE9mZnNldCwgc2VydmVyT2Zmc2V0Wy4gV2hlbiBjbGll
bnRPZmZzZXQgPT0KKy8vIHNlcnZlck9mZnNldCwgdGhlIGNsaWVudCBvd25zIGFsbCB0aGUgZGF0
YS4KKy8vICogVGhlIHNlcnZlciBvd25zIHRoZSBkYXRhIGJldHdlZW4gW3NlcnZlck9mZnNldCwg
Y2xpZW50T2Zmc2V0Wy4KIC8vICogVGhlIGJ1ZmZlciBjYW4gaG9sZCBtYXhpbXVtIG9mIHNpemUg
LSAxIHZhbHVlcy4gVGhlIGxhc3QgdmFsdWUgaXMgcmVzZXJ2ZWQgZm9yCiAvLyBpbmRpY2F0aW5n
IHRoYXQgdGhlIGJ1ZmZlciBpcyBmdWxsLiBGSVhNRTogTWF5YmUgd291bGQgYmUgc2ltcGxlciBp
bXBsZW1lbnRhdGlvbiBpZgogLy8gaXQgd291bGQgdXNlIHRoZSAid3JhcCIgZmxhZyBpbnN0ZWFk
IG9mIHRoZSBob2xlIGFzIHRoZSBpbmRpY2F0b3IuIFRoaXMgd291bGQgbW92ZQpAQCAtODgsMzcg
Kzg5LDQ1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9mZnNldDsKICAgICB9CiAKLSAgICBB
dG9taWM8c2l6ZV90PiYgc2VuZGVyT2Zmc2V0KCkgeyByZXR1cm4gaGVhZGVyKCkuc2VuZGVyT2Zm
c2V0OyB9Ci0gICAgQXRvbWljPHNpemVfdD4mIHJlY2VpdmVyT2Zmc2V0KCkgeyByZXR1cm4gaGVh
ZGVyKCkucmVjZWl2ZXJPZmZzZXQ7IH0KKyAgICAvLyBWYWx1ZSBkZW5vdGluZyB0aGUgY2xpZW50
IGluZGV4IHRvIHRoZSBidWZmZXIsIHdpdGggc3BlY2lhbCB0YWcgdmFsdWVzLgorICAgIC8vIFRo
ZSBjbGllbnQgdHJ1c3RzIHRoaXMuIFRoZSBzZXJ2ZXIgY29udmVydHMgdGhlIHZhbHVlIHRvIHRy
dXN0ZWQgc2l6ZV90IG9mZnNldCB3aXRoIGEgc3BlY2lhbCBmdW5jdGlvbi4KKyAgICBlbnVtIENs
aWVudE9mZnNldCA6IHNpemVfdCB7CisgICAgICAgIC8vIFRhZyB2YWx1ZSBzdG9yZWQgaW4gd2hl
biB0aGUgc2VydmVyIGlzIHNsZWVwaW5nLCBlLmcuIG5vdCBydW5uaW5nLgorICAgICAgICBzZXJ2
ZXJJc1NsZWVwaW5nVGFnID0gMXUgPDwgMzEKKyAgICB9OworCisgICAgLy8gVmFsdWUgZGVub3Rp
bmcgdGhlIHNlcnZlciBpbmRleCB0byB0aGUgYnVmZmVyLCB3aXRoIHNwZWNpYWwgdGFnIHZhbHVl
cy4KKyAgICAvLyBUaGUgY2xpZW50IHRydXN0cyB0aGlzLiBUaGUgc2VydmVyIGNvbnZlcnRzIHRo
ZSB2YWx1ZSB0byB0cnVzdGVkIHNpemVfdCBvZmZzZXQgd2l0aCBhIHNwZWNpYWwgZnVuY3Rpb24u
CisgICAgZW51bSBTZXJ2ZXJPZmZzZXQgOiBzaXplX3QgeworICAgICAgICAvLyBUYWcgdmFsdWUg
c3RvcmVkIHdoZW4gdGhlIGNsaWVudCBpcyB3YWl0aW5nLCBlLmcuIHdhaXRpbmcgb24gYSBzZW1h
cGhvcmUuCisgICAgICAgIGNsaWVudElzV2FpdGluZ1RhZyA9IDF1IDw8IDMxCisgICAgfTsKKwor
ICAgIEF0b21pYzxDbGllbnRPZmZzZXQ+JiBjbGllbnRPZmZzZXQoKSB7IHJldHVybiBoZWFkZXIo
KS5jbGllbnRPZmZzZXQ7IH0KKyAgICBBdG9taWM8U2VydmVyT2Zmc2V0PiYgc2VydmVyT2Zmc2V0
KCkgeyByZXR1cm4gaGVhZGVyKCkuc2VydmVyT2Zmc2V0OyB9CiAgICAgdWludDhfdCogZGF0YSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtX3NoYXJlZE1lbW9yeS0+ZGF0
YSgpKSArIGhlYWRlclNpemUoKTsgfQogICAgIHNpemVfdCBkYXRhU2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YVNpemU7IH0KLSAgICBTZW1hcGhvcmUmIHNlbmRlcldhaXRTZW1hcGhvcmUoKSB7
IHJldHVybiBtX3NlbmRlcldhaXRTZW1hcGhvcmU7IH0KLQotICAgIC8vIFRhZyB2YWx1ZSBzdG9y
ZWQgaW4gSGVhZGVyOjpzZW5kZXJPZmZzZXQgd2hlbiByZWNlaXZlciBpcyBzbGVlcGluZywgZS5n
LiBub3QgcnVubmluZy4KLSAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBzZW5kZXJPZmZzZXRS
ZWNlaXZlcklzU2xlZXBpbmdUYWcgPSAxIDw8IDMxOwotICAgIC8vIFRhZyB2YWx1ZSBzdG9yZWQg
aW4gSGVhZGVyOjpyZWNlaXZlck9mZnNldCB3aGVuIHNlbmRlciBpcyB3YWl0aW5nLCBlLmcuIHdh
aXRpbmcgb24KLSAgICAvLyBhIHNlbWFwaG9yZS4KLSAgICBzdGF0aWMgY29uc3RleHByIHNpemVf
dCByZWNlaXZlck9mZnNldFNlbmRlcklzV2FpdGluZ1RhZyA9IDEgPDwgMzE7CisgICAgU2VtYXBo
b3JlJiBjbGllbnRXYWl0U2VtYXBob3JlKCkgeyByZXR1cm4gbV9jbGllbnRXYWl0U2VtYXBob3Jl
OyB9CiAKLSAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtYXhpbXVtU2l6ZSgpIHsgcmV0dXJu
IHN0ZDo6bWluKHNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZywgc2VuZGVyT2Zmc2V0
UmVjZWl2ZXJJc1NsZWVwaW5nVGFnKSAtIDE7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVf
dCBtYXhpbXVtU2l6ZSgpIHsgcmV0dXJuIHN0ZDo6bWluKHN0YXRpY19jYXN0PHNpemVfdD4oQ2xp
ZW50T2Zmc2V0OjpzZXJ2ZXJJc1NsZWVwaW5nVGFnKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihDbGll
bnRPZmZzZXQ6OnNlcnZlcklzU2xlZXBpbmdUYWcpKSAtIDE7IH0KICAgICB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIE9wdGlvbmFsPFN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXI+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlcihSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+JiYsIHNpemVfdCBtZW1vcnlTaXplLCBTZW1h
cGhvcmUmJiBzZW5kZXJXYWl0U2VtYXBob3JlKTsKKyAgICBTdHJlYW1Db25uZWN0aW9uQnVmZmVy
KFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4mJiwgc2l6ZV90IG1lbW9yeVNpemUsIFNlbWFwaG9y
ZSYmIGNsaWVudFdhaXRTZW1hcGhvcmUpOwogCiAgICAgc3RydWN0IEhlYWRlciB7Ci0gICAgICAg
IEF0b21pYzxzaXplX3Q+IHJlY2VpdmVyT2Zmc2V0OworICAgICAgICBBdG9taWM8U2VydmVyT2Zm
c2V0PiBzZXJ2ZXJPZmZzZXQ7CiAgICAgICAgIC8vIFBhZGRpbmcgc28gdGhhdCB0aGUgdmFyaWFi
bGVzIG1vc3RseSBhY2Nlc3NlZCBieSBkaWZmZXJlbnQgcHJvY2Vzc2VzIGRvIG5vdCBzaGFyZSBh
IGNhY2hlIGxpbmUuCiAgICAgICAgIC8vIFRoaXMgaXMgYW4gYXR0ZW1wdCB0byBhdm9pZCBjYWNo
ZS1saW5lIGluZHVjZWQgcmVkdWN0aW9uIG9mIHBhcmFsbGVsIGFjY2Vzcy4KLSAgICAgICAgYWxp
Z25hcyhzaXplb2YodWludDY0X3RbMl0pKSBBdG9taWM8c2l6ZV90PiBzZW5kZXJPZmZzZXQ7Cisg
ICAgICAgIGFsaWduYXMoc2l6ZW9mKHVpbnQ2NF90WzJdKSkgQXRvbWljPENsaWVudE9mZnNldD4g
Y2xpZW50T2Zmc2V0OwogICAgIH07CiAgICAgSGVhZGVyJiBoZWFkZXIoKSBjb25zdCB7IHJldHVy
biAqcmVpbnRlcnByZXRfY2FzdDxIZWFkZXIqPihtX3NoYXJlZE1lbW9yeS0+ZGF0YSgpKTsgfQog
ICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGhlYWRlclNpemUoKSB7IHJldHVybiByb3VuZFVw
VG9NdWx0aXBsZU9mPHNpemVvZihzdGQ6Om1heF9hbGlnbl90KT4oc2l6ZW9mKEhlYWRlcikpOyB9
CiAKICAgICBzaXplX3QgbV9kYXRhU2l6ZSB7IDAgfTsKICAgICBSZWY8V2ViS2l0OjpTaGFyZWRN
ZW1vcnk+IG1fc2hhcmVkTWVtb3J5OwotICAgIFNlbWFwaG9yZSBtX3NlbmRlcldhaXRTZW1hcGhv
cmU7CisgICAgU2VtYXBob3JlIG1fY2xpZW50V2FpdFNlbWFwaG9yZTsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5j
cHAKaW5kZXggMTRkNDg0Yjc4ZmJmOWRmNmRmOGE5ZmRiN2U4Y2E4OWFkNTdlNTNiYS4uOGU0OTI2
NjQ0YTgwODYzNjllZjdjYzg5YTQwMmIyOGI5NjAxN2EwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTYxLDQx
ICs2MSw0MSBAQCB2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjplbnF1ZXVlTWVzc2Fn
ZShDb25uZWN0aW9uJiwgc3RkOjp1bmlxdWVfcHRyPERlYwogCiBPcHRpb25hbDxTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZTo6U3Bhbj4gU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnRyeUFx
dWlyZSgpCiB7Ci0gICAgc2l6ZV90IHJlY2VpdmVyTGltaXQgPSBzaGFyZWRTZW5kZXJPZmZzZXQo
KS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpOwotICAgIGlmIChyZWNlaXZlckxpbWl0
ID09IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OnNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGlu
Z1RhZykKKyAgICBTZXJ2ZXJMaW1pdCBzZXJ2ZXJMaW1pdCA9IHNoYXJlZFNlcnZlckxpbWl0KCku
bG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKTsKKyAgICBpZiAoc2VydmVyTGltaXQgPT0g
U2VydmVyTGltaXQ6OnNlcnZlcklzU2xlZXBpbmdUYWcpCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Ci0gICAgYXV0byByZXN1bHQgPSBhbGlnbmVkU3BhbihtX3JlY2VpdmVyT2Zmc2V0LCBy
ZWNlaXZlckxpbWl0KTsKKworICAgIGF1dG8gcmVzdWx0ID0gYWxpZ25lZFNwYW4obV9zZXJ2ZXJP
ZmZzZXQsIGNsYW1wZWRMaW1pdChzZXJ2ZXJMaW1pdCkpOwogICAgIGlmIChyZXN1bHQuc2l6ZSA8
IG1pbmltdW1NZXNzYWdlU2l6ZSkgewotICAgICAgICByZWNlaXZlckxpbWl0ID0gc2hhcmVkU2Vu
ZGVyT2Zmc2V0KCkuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKHJlY2VpdmVyTGltaXQsIFN0cmVhbUNv
bm5lY3Rpb25CdWZmZXI6OnNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZywgc3RkOjpt
ZW1vcnlfb3JkZXJfYWNxX3JlbCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7Ci0gICAgICAg
IEFTU0VSVCghKHJlY2VpdmVyTGltaXQgJiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJP
ZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcpKTsKLSAgICAgICAgcmVjZWl2ZXJMaW1pdCA9IGNs
YW1wZWRMaW1pdChyZWNlaXZlckxpbWl0KTsKLSAgICAgICAgcmVzdWx0ID0gYWxpZ25lZFNwYW4o
bV9yZWNlaXZlck9mZnNldCwgcmVjZWl2ZXJMaW1pdCk7CisgICAgICAgIHNlcnZlckxpbWl0ID0g
c2hhcmVkU2VydmVyTGltaXQoKS5jb21wYXJlRXhjaGFuZ2VTdHJvbmcoc2VydmVyTGltaXQsIFNl
cnZlckxpbWl0OjpzZXJ2ZXJJc1NsZWVwaW5nVGFnLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVs
LCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKKyAgICAgICAgcmVzdWx0ID0gYWxpZ25lZFNw
YW4obV9zZXJ2ZXJPZmZzZXQsIGNsYW1wZWRMaW1pdChzZXJ2ZXJMaW1pdCkpOwogICAgIH0KIAot
ICAgIGlmIChyZXN1bHQuc2l6ZSA+PSBtaW5pbXVtTWVzc2FnZVNpemUpCi0gICAgICAgIHJldHVy
biByZXN1bHQ7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAocmVzdWx0LnNpemUg
PCBtaW5pbXVtTWVzc2FnZVNpemUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpy
ZWxlYXNlKHNpemVfdCByZWFkU2l6ZSkKIHsKICAgICBBU1NFUlQocmVhZFNpemUpOwogICAgIHJl
YWRTaXplID0gc3RkOjptYXgocmVhZFNpemUsIG1pbmltdW1NZXNzYWdlU2l6ZSk7Ci0gICAgc2l6
ZV90IHJlY2VpdmVyT2Zmc2V0ID0gd3JhcE9mZnNldChhbGlnbk9mZnNldChtX3JlY2VpdmVyT2Zm
c2V0KSArIHJlYWRTaXplKTsKKyAgICBTZXJ2ZXJPZmZzZXQgc2VydmVyT2Zmc2V0ID0gc3RhdGlj
X2Nhc3Q8U2VydmVyT2Zmc2V0Pih3cmFwT2Zmc2V0KGFsaWduT2Zmc2V0KG1fc2VydmVyT2Zmc2V0
KSArIHJlYWRTaXplKSk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBzaXplX3Qgb2xkUmVj
ZWl2ZXJPZmZzZXQgPSBzaGFyZWRSZWNlaXZlck9mZnNldCgpLmV4Y2hhbmdlKHJlY2VpdmVyT2Zm
c2V0LCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKLSAgICAvLyBJZiB0aGUgc2VuZGVyIHdy
b3RlIG92ZXIgcmVjZWl2ZXJPZmZzZXQsIGl0IG1lYW5zIHRoZSBzZW5kZXIgaXMgd2FpdGluZy4K
LSAgICBpZiAob2xkUmVjZWl2ZXJPZmZzZXQgPT0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6cmVj
ZWl2ZXJPZmZzZXRTZW5kZXJJc1dhaXRpbmdUYWcpCi0gICAgICAgIG1fYnVmZmVyLnNlbmRlcldh
aXRTZW1hcGhvcmUoKS5zaWduYWwoKTsKKyAgICBTZXJ2ZXJPZmZzZXQgb2xkU2VydmVyT2Zmc2V0
ID0gc2hhcmVkU2VydmVyT2Zmc2V0KCkuZXhjaGFuZ2Uoc2VydmVyT2Zmc2V0LCBzdGQ6Om1lbW9y
eV9vcmRlcl9hY3FfcmVsKTsKKyAgICAvLyBJZiB0aGUgc2VuZGVyIHdyb3RlIG92ZXIgc2VydmVy
T2Zmc2V0LCBpdCBtZWFucyB0aGUgc2VuZGVyIGlzIHdhaXRpbmcuCisgICAgaWYgKG9sZFNlcnZl
ck9mZnNldCA9PSBTZXJ2ZXJPZmZzZXQ6OmNsaWVudElzV2FpdGluZ1RhZykKKyAgICAgICAgbV9i
dWZmZXIuY2xpZW50V2FpdFNlbWFwaG9yZSgpLnNpZ25hbCgpOwogICAgIGVsc2UKLSAgICAgICAg
QVNTRVJUKCEob2xkUmVjZWl2ZXJPZmZzZXQgJiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpyZWNl
aXZlck9mZnNldFNlbmRlcklzV2FpdGluZ1RhZykpOworICAgICAgICBBU1NFUlQoIShvbGRTZXJ2
ZXJPZmZzZXQgJiBTZXJ2ZXJPZmZzZXQ6OmNsaWVudElzV2FpdGluZ1RhZykpOwogI2Vsc2UKLSAg
ICBzaGFyZWRSZWNlaXZlck9mZnNldCgpLnN0b3JlKHJlY2VpdmVyT2Zmc2V0LCBzdGQ6Om1lbW9y
eV9vcmRlcl9yZWxlYXNlKTsKKyAgICBzaGFyZWRTZXJ2ZXJPZmZzZXQoKS5zdG9yZShzZXJ2ZXJP
ZmZzZXQsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGVhc2UpOwogICAgIC8vIElQQzo6U2VtYXBob3Jl
IG5vdCBpbXBsZW1lbnRlZCBmb3IgdGhlIHBsYXRmb3JtLiBDbGllbnQgd2lsbCBwb2xsIGFuZCB5
aWVsZC4KICNlbmRpZgogCi0gICAgbV9yZWNlaXZlck9mZnNldCA9IHJlY2VpdmVyT2Zmc2V0Owor
ICAgIG1fc2VydmVyT2Zmc2V0ID0gc2VydmVyT2Zmc2V0OwogfQogCiBTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uQmFzZTo6U3BhbiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6YWxpZ25lZFNwYW4o
c2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KQpAQCAtMTIxLDEwICsxMjEsMTIgQEAgc2l6ZV90
IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzaXplKHNpemVfdCBvZmZzZXQsIHNpemVfdCBs
aW1pdCkKICAgICByZXR1cm4gZGF0YVNpemUoKSAtIG9mZnNldDsKIH0KIAotc2l6ZV90IFN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlOjpjbGFtcGVkTGltaXQoc2l6ZV90IHVudHJ1c3RlZExpbWl0
KSBjb25zdAorc2l6ZV90IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpjbGFtcGVkTGltaXQo
U2VydmVyTGltaXQgc2VydmVyTGltaXQpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKHVudHJ1c3RlZExp
bWl0IDwgKGRhdGFTaXplKCkgLSAxKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWluKHVudHJ1c3RlZExp
bWl0LCBkYXRhU2l6ZSgpIC0gMSk7CisgICAgQVNTRVJUKCEoc2VydmVyTGltaXQgJiBTZXJ2ZXJM
aW1pdDo6c2VydmVySXNTbGVlcGluZ1RhZykpOworICAgIHNpemVfdCBsaW1pdCA9IHN0YXRpY19j
YXN0PHNpemVfdD4oc2VydmVyTGltaXQpOworICAgIEFTU0VSVChsaW1pdCA8PSBkYXRhU2l6ZSgp
IC0gMSk7CisgICAgcmV0dXJuIHN0ZDo6bWluKGxpbWl0LCBkYXRhU2l6ZSgpIC0gMSk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5l
Y3Rpb24uaAppbmRleCA5NTgxYzY5MDFkNTEyNWEwNjRiYTRlM2E3MDY4ZTQyYTE5ZGY5MWJmLi40
OTVhZmZkMDNjNmY1NGQ3Mjg5ZmMxMDFkNmQ2ZGQ4ODZlM2I3NzBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oCkBAIC03NCwx
OCArNzQsMjAgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1lc3Nh
Z2VBbGlnbm1lbnQgPSBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcjo6bWVzc2FnZUFsaWdubWVudDsK
ICAgICBTcGFuIGFsaWduZWRTcGFuKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCk7CiAgICAg
c2l6ZV90IHNpemUoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KTsKLSAgICBzaXplX3QgY2xh
bXBlZExpbWl0KHNpemVfdCB1bnRydXN0ZWRMaW1pdCkgY29uc3Q7CiAgICAgc2l6ZV90IHdyYXBP
ZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIud3JhcE9mZnNldChv
ZmZzZXQpOyB9CiAgICAgc2l6ZV90IGFsaWduT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyLmFsaWduT2Zmc2V0PG1lc3NhZ2VBbGlnbm1lbnQ+KG9mZnNldCwgbWlu
aW11bU1lc3NhZ2VTaXplKTsgfQotICAgIEF0b21pYzxzaXplX3Q+JiBzaGFyZWRTZW5kZXJPZmZz
ZXQoKSB7IHJldHVybiBtX2J1ZmZlci5zZW5kZXJPZmZzZXQoKTsgfQotICAgIEF0b21pYzxzaXpl
X3Q+JiBzaGFyZWRSZWNlaXZlck9mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLnJlY2VpdmVyT2Zm
c2V0KCk7IH0KKyAgICB1c2luZyBTZXJ2ZXJMaW1pdCA9IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6
OkNsaWVudE9mZnNldDsKKyAgICBBdG9taWM8U2VydmVyTGltaXQ+JiBzaGFyZWRTZXJ2ZXJMaW1p
dCgpIHsgcmV0dXJuIG1fYnVmZmVyLmNsaWVudE9mZnNldCgpOyB9CisgICAgdXNpbmcgU2VydmVy
T2Zmc2V0ID0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6U2VydmVyT2Zmc2V0OworICAgIEF0b21p
YzxTZXJ2ZXJPZmZzZXQ+JiBzaGFyZWRTZXJ2ZXJPZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5z
ZXJ2ZXJPZmZzZXQoKTsgfQorICAgIHNpemVfdCBjbGFtcGVkTGltaXQoU2VydmVyTGltaXQpIGNv
bnN0OwogICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7
IH0KICAgICBzaXplX3QgZGF0YVNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5kYXRhU2l6
ZSgpOyB9CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgU3Ry
ZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYgbV93b3JrUXVldWU7CiAKLSAgICBzaXplX3QgbV9yZWNl
aXZlck9mZnNldCB7IDAgfTsKKyAgICBzaXplX3QgbV9zZXJ2ZXJPZmZzZXQgeyAwIH07CiAgICAg
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciBtX2J1ZmZlcjsKIAogICAgIExvY2sgbV9vdXRPZlN0cmVh
bU1lc3NhZ2VzTG9jazsKQEAgLTEwMywxMCArMTA1LDExIEBAIHZvaWQgU3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2U6OnNlbmRTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgQXJndW1l
bnRzCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwog
fQogCi0vLyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHJlcHJlc2VudHMgdGhlIGNvbm5lY3Rpb24g
YmV0d2VlbiBzdHJlYW0gc2VuZGVyIGFuZCByZWNlaXZlciwgYXMgdXNlZCBieSB0aGUgcmVjZWl2
ZXIuCisvLyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHJlcHJlc2VudHMgdGhlIGNvbm5lY3Rpb24g
YmV0d2VlbiBzdHJlYW0gY2xpZW50IGFuZCBzZXJ2ZXIsIGFzIHVzZWQgYnkgdGhlIHNlcnZlci4K
Ky8vCiAvLyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOgotLy8gICogSG9sZHMgdGhlIG1lc3NhZ2Vz
IHRvd2FyZHMgdGhlIHJlY2VpdmVyLgotLy8gICogU2VuZHMgdGhlIHJlcGxpZXMgYmFjayB0byB0
aGUgc2VuZGVyIHZpYSB0aGUgc3RyZWFtIG9yIG5vcm1hbCBDb25uZWN0aW9uIGZhbGxiYWNrLgor
Ly8gICogSG9sZHMgdGhlIG1lc3NhZ2VzIHRvd2FyZHMgdGhlIHNlcnZlci4KKy8vICAqIFNlbmRz
IHRoZSByZXBsaWVzIGJhY2sgdG8gdGhlIGNsaWVudCB2aWEgdGhlIHN0cmVhbSBvciBub3JtYWwg
Q29ubmVjdGlvbiBmYWxsYmFjay4KIC8vCiAvLyBSZWNlaXZlciB0ZW1wbGF0ZSBjb250cmFjdDoK
IC8vICAgdm9pZCBkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
QmFzZSYsIERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
Y3BwCmluZGV4IGU5MWJiOTc2NWNhYjRjNDZkN2Y3MmZjNmVlODgyNGNjODc2NGI1ZWMuLjQ1YmM1
ZDkwNDE3MDYzZTllYmFiYzE2YzFiZjgwMjAzZmIxYjM1YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtMTI4LDEyICsxMjgsNiBAQCB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCiAgICAg
ICAgIG1hcmtDb250ZXh0TG9zdCgpOwogfQogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnNpbXVsYXRlQ29udGV4dENoYW5nZWQoKQotewotICAgIC8vIEZJWE1FOiBDdXJyZW50
bHkgbm90IGltcGxlbWVudGVkIGJlY2F1c2UgaXQncyBub3QgY2xlYXIgdGhpcyBpcyB0aGUgcmln
aHQgd2F5LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MzQ5Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciYgYnVmZmVyKQog
ewogICAgIC8vIEZJWE1FOiB0aGUgYnVmZmVyIGlzICJyZWxhdGl2ZWx5IGVtcHR5IiBhbHdheXMs
IGJ1dCBmb3IgY29uc2lzdGVuY3ksIHdlIG5lZWQgdG8gZW5zdXJlCkBAIC0xODEsNyArMTc1LDcg
QEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzeW50aGVzaXplR0xFcnJvcihH
Q0dMZW51bSBlcnJvcikKICAgICBpZiAoIWlzQ29udGV4dExvc3QoKSkgewogICAgICAgICBhdXRv
IHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3lu
dGhlc2l6ZUdMRXJyb3IoZXJyb3IpKTsKICAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQotICAgICAg
ICAgICAgd2FzTG9zdCgpOworICAgICAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgbV9lcnJvcldoZW5Db250ZXh0SXNMb3N0ID0gZXJyb3I7CkBA
IC0xOTMsMTIgKzE4NywyMSBAQCBHQ0dMZW51bSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRFcnJvcigpCiAgICAgICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0gMDsKICAgICAgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRFcnJvcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEVy
cm9yOjpSZXBseShyZXR1cm5WYWx1ZSkpOwogICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCi0gICAg
ICAgICAgICB3YXNMb3N0KCk7CisgICAgICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsKICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xlbnVtPihyZXR1cm5WYWx1ZSk7CiAgICAgfQogICAg
IHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fZXJyb3JXaGVuQ29udGV4dElzTG9zdCwgTk9fRVJST1Ip
OwogfQogCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNpbXVsYXRlRXZlbnRG
b3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKQoreworICAgIGlmICghaXNDb250ZXh0
TG9zdCgpKSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpTaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhldmVudE5hbWUpKTsK
KyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7
CisgICAgfQorfQorCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NyZWF0
ZWQoYm9vbCBkaWRTdWNjZWVkLCBJUEM6OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSwgU3RyaW5nJiYg
YXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucykKIHsKICAg
ICBpZiAoaXNDb250ZXh0TG9zdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuaAppbmRleCBlZDBmZjg2OTJlZjdhZDg0NTcxOWUxZjBhODI1NjYyYzM2NWU1MmE0Li45Mjg1
ODY4ZGY1ZmIyMGU4YTgyNDBhMTY0ZTg0ODU0MGRiMzRlYmIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkuaApAQCAtNjQsMTYgKzY0LDE0IEBAIHB1YmxpYzoKICAgICB1
c2luZyBXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNFbmFibGVk
OwogICAgIHZvaWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIGV4dGVuc2lv
bikgZmluYWw7CiAgICAgdm9pZCBub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKLSAg
ICB2b2lkIHNpbXVsYXRlQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKICAgICB2b2lkIHBhaW50UmVu
ZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OkltYWdlQnVmZmVyJikgZmluYWw7CiAgICAg
dm9pZCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6SW1hZ2VCdWZmZXIm
KSBmaW5hbDsKICAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKSBmaW5h
bDsKICAgICBHQ0dMZW51bSBnZXRFcnJvcigpIGZpbmFsOwotCiAgICAgYm9vbCBjb3B5VGV4dHVy
ZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllciYsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVy
ZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1h
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEs
IGJvb2wgZmxpcFkpIGZpbmFsOworICAgIHZvaWQgc2ltdWxhdGVFdmVudEZvclRlc3RpbmcoY29u
c3QgU3RyaW5nJikgZmluYWw7CiAKICAgICAvLyBGdW5jdGlvbnMgd2l0aCBhIGdlbmVyYXRlZCBp
bXBsZW1lbnRhdGlvbi4gVGhpcyBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBz
Y3JpcHQuCi0gICAgdm9pZCBzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkgZmluYWw7CiAgICAg
Ym9vbCBtb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSBmaW5hbDsKICAgICB2b2lkIGFj
dGl2ZVRleHR1cmUoR0NHTGVudW0gdGV4dHVyZSkgZmluYWw7CiAgICAgdm9pZCBhdHRhY2hTaGFk
ZXIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcAppbmRleCA0NjZkZDA4YjFiMmIzNzJiNmUxZDg1Nzk3
ZjQ4NjBhMjhjZjk1M2ViLi5jY2E2Y2EwMjkyZmFhZDE2NjI4YjNhODUzZjdkNTUxN2NiYzBkZGFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAKQEAgLTMwLDE1ICszMCw2IEBACiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNldEZhaWxO
ZXh0R1BVU3RhdHVzQ2hlY2soKQotewotICAgIGlmICghaXNDb250ZXh0TG9zdCgpKSB7Ci0gICAg
ICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpTZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkpOwotICAgICAgICBpZiAoIXNlbmRSZXN1
bHQpCi0gICAgICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsKLSAgICB9Ci19Ci0KIGJvb2wgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0
KCkKIHsKICAgICBib29sIHJldHVyblZhbHVlID0geyB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDYyZWEzMTUxYTQ4NDA0ZmMyZTBlZTA0Zjg1
NjBjYzg1NWFkYzQ5MjEuLjZmYjQ0NzRhOTNhOTUwNDQ3MThlMjdlZWE3Njg1OTZlZTc0ZDk1MmUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMS0wMy0wMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFN1cHBvcnQgcnVubmluZyBXZWJHTCBpbiBHUFUgcHJvY2VzcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjExCisgICAg
ICAgIDxyZGFyOi8vNTcxNzc0NDE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIFNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKFN0cmluZyBldmVudE5h
bWUpIHRvIG1hbnVhbGx5CisgICAgICAgIGltcGxlbWVudGVkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMIGZ1bmN0aW9ucy4KKworICAgICAgICAqIFNjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbDoK
KwogMjAyMS0wMi0yNyAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIEFQSSB0ZXN0IGZvciBBcHBIaWdobGlnaHRzCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAt
d2ViZ2wKaW5kZXggZDM1MDJiYzI2NjU4ZGZiOWMzMGY2ZjJjZTc2ZGQ4NjU4NTczMmIwOC4uYWE4
NTE2YmM0OWIwNjc1MWFkMDAwNTQ0ZDJkZGUzNjZhYzUxMjc3NyAxMDA3NTUKLS0tIGEvVG9vbHMv
U2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCisrKyBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUt
Z3B1cC13ZWJnbApAQCAtMTA0LDYgKzEwNCw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHt7CiAgICAgdm9pZCBQYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1h
Z2VCdWZmZXIpIC0+ICgpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBQYWludENvbXBvc2l0ZWRSZXN1
bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVm
ZmVyKSAtPiAoKSBTeW5jaHJvbm91cwogICAgIHZvaWQgQ29weVRleHR1cmVGcm9tTWVkaWEoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQzMl90IHRleHR1cmUs
IHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxGb3JtYXQs
IHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBi
b29sIGZsaXBZKSAtPiAoYm9vbCBzdWNjZXNzKSBTeW5jaHJvbm91cworICAgIHZvaWQgU2ltdWxh
dGVFdmVudEZvclRlc3RpbmcoU3RyaW5nIGV2ZW50TmFtZSkKIHt9CiB9fQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDYw
OTQwN2RiZjNjY2RmNmZhY2IwZDgxNjE3NDUyY2NjYTBjYWQyYi4uYzQ1ZGYyNDExNzU3YTM4ODA1
ZTUzZjE0ZWZlZDE2YjBmMDMzZmU0YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTAzLTAx
ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9y
dCBydW5uaW5nIFdlYkdMIGluIEdQVSBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcyMTEKKyAgICAgICAgPHJkYXI6Ly81NzE3NzQ0MT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVz
dHMgdG8gdGVzdCB0aGUgY2FzZSB3aGVyZSBhIFdlYkdMIGNhbGwgdGltZXMgb3V0LgorICAgICAg
ICBBZGQgdHdvIHZhcmlhbnRzOiBvbmUgd2hpY2ggbW9zdCBwcm9iYWJseSB0aW1lcyBvdXQgb24K
KyAgICAgICAgc3luY2hyb25vdXMgY2FsbCwgYW5kIG9uZSB3aGljaCBtb3N0IHByb2JhYmx5IHRp
bWVzIG91dCBvbgorICAgICAgICBhc3luY2hyb25vdXMgY2FsbC4KKworICAgICAgICAqIGZhc3Qv
Y2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi1zdGF0dXMtZmFpbHVyZS5odG1sOgorICAgICAg
ICBUaGUgdGVzdGluZyBBUElzIHdlcmUgY2hhbmdlZCwgc28gcmVwbGFjZSB1c2Ugb2YKKyAgICAg
ICAgSW50ZXJuYWxzLnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKQorICAgICAgICB3aXRoIElu
dGVybmFscy5zaW11bGF0ZUV2ZW50Rm9yV2ViR0xDb250ZXh0KCkKKyAgICAgICAgKiBmYXN0L2Nh
bnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tdGltZW91dC1hc3luYy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0
LWFzeW5jLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29u
dGV4dC1vbi10aW1lb3V0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52
YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9uLXRpbWVvdXQuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2xjb250ZXh0Y2hhbmdlZGV2ZW50Lmh0bWw6CisKIDIwMjEt
MDItMjcgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgUmVtb3ZlIHN1
cHBvcnQgZm9yICdwaXhlbCcgYW5kICdwb3MnIENTU09NIHByZWZpeGVzCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9u
cwppbmRleCBkOTVkNDBmNjEzY2Y3NzgxZTQxY2VmMDNkZjc5ZTdiNjM2NDY5NGYzLi4yM2YzMDU4
MDA5MTI0NjRmNGNkMTc3OWM0MDQxZTNhYTYwNjAyYmRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTM0NTksNiArMzQ1OSwxMCBAQCB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvbWlzYy91bmluaXRp
YWxpemVkLXRlc3QtMi5odG1sIFsgU2tpcCBdCiAjIEZhaWxpbmcgb24gY2VydGFpbiBoYXJkd2Fy
ZSBjb25maWd1cmF0aW9uczogbWFjT1Mgd2l0aCBJbnRlbCBHUFVzLiBBbHNvIHNsb3cuCiB3ZWJr
aXQub3JnL2IvMjIwNzUzIHdlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtbXVsdGkt
ZHJhdy5odG1sIFsgUGFzcyBGYWlsdXJlIFNsb3cgXQogCisjIFRpbWVvdXQgdGVzdGluZyBpcyBu
b3QgYXBwbGljYWJsZSB0byBpbi1wcm9jZXNzIHdlYmdsLCBvbmx5IHdlYmdsIGluIGdwdSBwcm9j
ZXNzLgorZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9uLXRpbWVvdXQtYXN5bmMuaHRt
bCBbIFNraXAgXQorZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9uLXRpbWVvdXQuaHRt
bCBbIFNraXAgXQorCiAjIHByZS13cmFwIHByb2dyZXNzaW9uLiBPdGhlciByZW5kZXJpbmcgZW5n
aW5lcyBhZ3JlZSB3aXRoIHRoZSByZXN1bHQuCiB3ZWJraXQub3JnL2IvMjA2MTY4IFsgRGVidWcg
XSBmYXN0L2RvbS9pbnNlcnQtc3Bhbi1pbnRvLWxvbmctdGV4dC1idWctMjgyNDUuaHRtbCBbIFNr
aXAgXQogCkBAIC00ODM5LDQgKzQ4NDMsMyBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtY291bnRlci1zdHlsZXMvdXBwZXItYXJtZW5pYW4vY3NzMy1jb3VudAogaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvdW50ZXItc3R5bGVzL3VwcGVy
LXJvbWFuL2NzczMtY291bnRlci1zdHlsZXMtMDIzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb3VudGVyLXN0eWxlcy91
cHBlci1yb21hbi9jc3MzLWNvdW50ZXItc3R5bGVzLTAyNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY291bnRlci1zdHls
ZXMvdXBwZXItcm9tYW4vY3NzMy1jb3VudGVyLXN0eWxlcy0wMjRhLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbG9z
ZS1jb250ZXh0LW9uLXN0YXR1cy1mYWlsdXJlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9sb3NlLWNvbnRleHQtb24tc3RhdHVzLWZhaWx1cmUuaHRtbAppbmRleCBiODM5MTY4
NjRkYmQ2ZTcwYzM4ZGRmYjdhMzRlMjQ1NTJlYzA3YjgxLi4zYWZjOTJhMGU3MzdhYjQ5OTRlMWI5
NDI4YjhkZDVhZTQxYzM4YmUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9sb3NlLWNvbnRleHQtb24tc3RhdHVzLWZhaWx1cmUuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tc3RhdHVzLWZhaWx1cmUuaHRtbApA
QCAtNjksNyArNjksNyBAQCBhc3luYyBmdW5jdGlvbiBydW5UZXN0KCkgewogCiAgICAgZGVidWco
Ik5vdyBmb3JjZSBmYWlsdXJlIGFmdGVyIHRoZSBuZXh0IGRyYXdBcnJheXMuIikKICAgICBpZiAo
d2luZG93LmludGVybmFscykKLSAgICAgICAgd2luZG93LmludGVybmFscy5mYWlsTmV4dEdQVVN0
YXR1c0NoZWNrKGdsKTsKKyAgICAgICAgd2luZG93LmludGVybmFscy5zaW11bGF0ZUV2ZW50Rm9y
V2ViR0xDb250ZXh0KCJmYWlsbmV4dGdwdXN0YXR1c2NoZWNrIiwgZ2wpOwogICAgIGdsLmRyYXdB
cnJheXMoZ2wuVFJJQU5HTEVTLCAwLCA2KTsKICAgICBhd2FpdCB3ZWJHTENvbnRleHRMb3N0KGNh
bnZhcyk7CiAgICAgc2hvdWxkQmVUcnVlKCJnbC5pc0NvbnRleHRMb3N0KCkiKTsKQEAgLTEwMSw3
ICsxMDEsNyBAQCBhc3luYyBmdW5jdGlvbiBydW5UZXN0KCkgewogCiAgICAgZGVidWcoIk5vdyBm
b3JjZSBmYWlsdXJlIGFmdGVyIHRoZSBuZXh0IGRyYXdFbGVtZW50cy4iKQogICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKQotICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLmZhaWxOZXh0R1BVU3RhdHVz
Q2hlY2soZ2wpOworICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNpbXVsYXRlRXZlbnRGb3JXZWJH
TENvbnRleHQoImZhaWxuZXh0Z3B1c3RhdHVzY2hlY2siLCBnbCk7CiAgICAgZ2wuZHJhd0VsZW1l
bnRzKGdsLlRSSUFOR0xFUywgNiwgZ2wuVU5TSUdORURfU0hPUlQsIDApOwogICAgIGF3YWl0IHdl
YkdMQ29udGV4dExvc3QoY2FudmFzKQogICAgIHNob3VsZEJlVHJ1ZSgiZ2wuaXNDb250ZXh0TG9z
dCgpIik7CkBAIC0xMjgsNyArMTI4LDcgQEAgYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpIHsKIAog
ICAgIGRlYnVnKCJOb3cgZm9yY2UgZmFpbHVyZSBhZnRlciB0aGUgbmV4dCBkcmF3QXJyYXlzSW5z
dGFuY2VkQU5HTEUuIikKICAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAgICAgd2luZG93
LmludGVybmFscy5mYWlsTmV4dEdQVVN0YXR1c0NoZWNrKGdsKTsKKyAgICAgICAgd2luZG93Lmlu
dGVybmFscy5zaW11bGF0ZUV2ZW50Rm9yV2ViR0xDb250ZXh0KCJmYWlsbmV4dGdwdXN0YXR1c2No
ZWNrIiwgZ2wpOwogICAgIGV4dC5kcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoZ2wuVFJJQU5HTEVT
LCAwLCA2LCAxMCk7CiAgICAgYXdhaXQgd2ViR0xDb250ZXh0TG9zdChjYW52YXMpOwogICAgIHNo
b3VsZEJlVHJ1ZSgiZ2wuaXNDb250ZXh0TG9zdCgpIik7CkBAIC0xNjEsNyArMTYxLDcgQEAgYXN5
bmMgZnVuY3Rpb24gcnVuVGVzdCgpIHsKIAogICAgIGRlYnVnKCJOb3cgZm9yY2UgZmFpbHVyZSBh
ZnRlciB0aGUgbmV4dCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRS4iKQogICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKQotICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLmZhaWxOZXh0R1BVU3RhdHVz
Q2hlY2soZ2wpOworICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNpbXVsYXRlRXZlbnRGb3JXZWJH
TENvbnRleHQoImZhaWxuZXh0Z3B1c3RhdHVzY2hlY2siLCBnbCk7CiAgICAgZXh0LmRyYXdFbGVt
ZW50c0luc3RhbmNlZEFOR0xFKGdsLlRSSUFOR0xFUywgNiwgZ2wuVU5TSUdORURfU0hPUlQsIDAs
IDgpOwogICAgIGF3YWl0IHdlYkdMQ29udGV4dExvc3QoY2FudmFzKTsKICAgICBzaG91bGRCZVRy
dWUoImdsLmlzQ29udGV4dExvc3QoKSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9uLXRpbWVvdXQtYXN5bmMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9uLXRpbWVvdXQtYXN5
bmMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3ZWE2Y2U2N2Q2YjA0MTMzN2NiZmE0MGFmMzA2
YjdjYWNjNjMzOGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9sb3NlLWNvbnRleHQtb24tdGltZW91dC1hc3luYy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMiBAQAorQ09OU09MRSBNRVNTQUdFOiBXZWJHTDogQ09OVEVYVF9MT1NUX1dFQkdMOiBsb3Nl
Q29udGV4dDogY29udGV4dCBsb3N0CitDaGVja3MgdGhhdCBhIEdQVSBwcm9jZXNzIHRpbWVvdXQg
b24gYSBub24tcmVzdWx0IHByb2R1Y2luZyBXZWJHTCBjYWxsIHdpbGwgbG9zZSB0aGUgY29udGV4
dC4KK05PVEU6IFRoaXMgb25seSBwYXNzZXMgaW4gdGhlIHRlc3QgaGFybmVzcyBiZWNhdXNlIGl0
IHJlcXVpcmVzIEludGVybmFscy4KKworUEFTUyBnbC5pc0NvbnRleHRMb3N0KCkgaXMgZmFsc2UK
K1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgorUEFTUyBnbC5pc0NvbnRleHRMb3N0
KCkgaXMgdHJ1ZQorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLkNPTlRFWFRfTE9TVF9XRUJHTAor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1l
b3V0LWFzeW5jLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRl
eHQtb24tdGltZW91dC1hc3luYy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzNWYzNWNjZjQ1YTUwMWUwMWZj
NWI5ZWVlMWYwMmRjYmVlNzQxZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tdGltZW91dC1hc3luYy5odG1sCkBAIC0wLDAg
KzEsNjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGhlYWQ+Cis8c3R5bGU+CitjYW52YXMgeworICAg
IHdpZHRoOiAyMDBweDsKKyAgICBoZWlnaHQ6IDIwMHB4OworfQorPC9zdHlsZT4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3dlYmdsLXRlc3QuanMiPiA8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwvc2NyaXB0PgorPHNjcmlwdD4KKwordmFyIHd0
dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsOword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OworCitpZiAod2luZG93LmluaXROb25LaHJvbm9zRnJhbWV3b3JrKQorICAgIHdpbmRvdy5pbml0
Tm9uS2hyb25vc0ZyYW1ld29yayhmYWxzZSk7CisKK2RlYnVnKCJDaGVja3MgdGhhdCBhIEdQVSBw
cm9jZXNzIHRpbWVvdXQgb24gYSBub24tcmVzdWx0IHByb2R1Y2luZyBXZWJHTCBjYWxsIHdpbGwg
bG9zZSB0aGUgY29udGV4dC4iKTsKK2RlYnVnKCJOT1RFOiBUaGlzIG9ubHkgcGFzc2VzIGluIHRo
ZSB0ZXN0IGhhcm5lc3MgYmVjYXVzZSBpdCByZXF1aXJlcyBJbnRlcm5hbHMuIik7CitkZWJ1Zygi
Iik7CisKK2FzeW5jIGZ1bmN0aW9uIHdlYkdMQ29udGV4dExvc3QoY2FudmFzKSB7CisgICAgcmV0
dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoIndlYmds
Y29udGV4dGxvc3QiLCByZXNvbHZlKSk7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKSB7
CisgICAgbGV0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAg
IGNhbnZhcy53aWR0aCA9IDIwMDsKKyAgICBjYW52YXMuaGVpZ2h0ID0gMjAwOworICAgIGdsID0g
d3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMpOworICAgIHd0dS5zZXR1cENvbG9yUXVhZChnbCk7
CisgICAgZ2wudmlld3BvcnQoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKKyAg
ICBnbC5jbGVhckNvbG9yKDAuMCwgMS4wLCAwLjAsIDEuMCk7CisgICAgZ2wuY2xlYXIoZ2wuQ09M
T1JfQlVGRkVSX0JJVCk7CisgICAgc2hvdWxkQmVGYWxzZSgiZ2wuaXNDb250ZXh0TG9zdCgpIik7
CisgICAgc2hvdWxkQmUoImdsLmdldEVycm9yKCkiLCAiZ2wuTk9fRVJST1IiKTsKKyAgICBpZiAo
d2luZG93LmludGVybmFscykKKyAgICAgICAgd2luZG93LmludGVybmFscy5zaW11bGF0ZUV2ZW50
Rm9yV2ViR0xDb250ZXh0KCJ0aW1lb3V0IiwgZ2wpOworICAgIC8vIFdlJ3JlIHRyeWluZyB0byBm
aWxsIHRoZSBjb21tYW5kIGJ1ZmZlciB3aXRoIGNhbGxzIGFmdGVyIHRoZSB0aW1lb3V0LAorICAg
IC8vIHNvIHRoYXQgd2UgdGVzdCB0aGF0IGFzeW5jaHJvbm91cyBjYWxscyBjYXVzZSB0aW1lb3V0
cyB0b28uCisgICAgLy8gVXNlIGEgcmVsYXRpdmVseSBmYXN0IGNhbGwgdGhhdCBzdGlsbCBmaWxs
cyB1cCB0aGUgYnVmZmVyLgorICAgIGxldCBjYWxsQ291bnQgPSAxMDAwMDAwOworICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgY2FsbENvdW50OyArK2kpCisgICAgICAgIGdsLmNsZWFyQ29sb3IoMS4w
LCAxLjAsIDAuMCArIGkvY2FsbENvdW50LCAxLjApOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JV
RkZFUl9CSVQpOworICAgIGF3YWl0IHdlYkdMQ29udGV4dExvc3QoY2FudmFzKTsKKyAgICBzaG91
bGRCZVRydWUoImdsLmlzQ29udGV4dExvc3QoKSIpOworICAgIHNob3VsZEJlKCJnbC5nZXRFcnJv
cigpIiwgImdsLkNPTlRFWFRfTE9TVF9XRUJHTCIpOworICAgIGZpbmlzaFRlc3QoKTsKK30KKwor
cnVuVGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0Pgor
PGJvZHk+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC9sb3NlLWNvbnRleHQtb24tdGltZW91dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tdGltZW91dC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjFlNDI5MzQ4NWZkYjZmMzhiMGJiM2I5MzYzYzIzOGY5ZDVkZTJhNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10
aW1lb3V0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitDT05TT0xFIE1FU1NBR0U6IFdl
YkdMOiBDT05URVhUX0xPU1RfV0VCR0w6IGxvc2VDb250ZXh0OiBjb250ZXh0IGxvc3QKK0NoZWNr
cyB0aGF0IGEgR1BVIHByb2Nlc3MgdGltZW91dCBvbiBhIHJlc3VsdCBwcm9kdWNpbmcgV2ViR0wg
Y2FsbCB3aWxsIGxvc2UgdGhlIGNvbnRleHQuCitOT1RFOiBUaGlzIG9ubHkgcGFzc2VzIGluIHRo
ZSB0ZXN0IGhhcm5lc3MgYmVjYXVzZSBpdCByZXF1aXJlcyBJbnRlcm5hbHMuCisKK1BBU1MgZ2wu
aXNDb250ZXh0TG9zdCgpIGlzIGZhbHNlCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJS
T1IKK1BBU1MgZ2wuaXNDb250ZXh0TG9zdCgpIGlzIHRydWUKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBp
cyBnbC5DT05URVhUX0xPU1RfV0VCR0wKK1BBU1MgdmFsIGlzIFswLCAwLCAwLCAwXQorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0Lmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tdGltZW91
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjkxNGU2YWIyNTIwYjc4NTgyNWQ4OGY0ZDJhNzViZGUxZTc3ZWZl
YzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9sb3Nl
LWNvbnRleHQtb24tdGltZW91dC5odG1sCkBAIC0wLDAgKzEsNTcgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGhlYWQ+Cis8c3R5bGU+CitjYW52YXMgeworICAgIHdpZHRoOiAyMDBweDsKKyAgICBoZWln
aHQ6IDIwMHB4OworfQorPC9zdHlsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYmdsLXRlc3Qu
anMiPiA8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wtdGVzdC11dGlscy5q
cyI+IDwvc2NyaXB0PgorPHNjcmlwdD4KKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFy
IGdsOword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitpZiAod2luZG93LmluaXROb25L
aHJvbm9zRnJhbWV3b3JrKQorICAgIHdpbmRvdy5pbml0Tm9uS2hyb25vc0ZyYW1ld29yayhmYWxz
ZSk7CisKK2RlYnVnKCJDaGVja3MgdGhhdCBhIEdQVSBwcm9jZXNzIHRpbWVvdXQgb24gYSByZXN1
bHQgcHJvZHVjaW5nIFdlYkdMIGNhbGwgd2lsbCBsb3NlIHRoZSBjb250ZXh0LiIpOworZGVidWco
Ik5PVEU6IFRoaXMgb25seSBwYXNzZXMgaW4gdGhlIHRlc3QgaGFybmVzcyBiZWNhdXNlIGl0IHJl
cXVpcmVzIEludGVybmFscy4iKTsKK2RlYnVnKCIiKTsKKworYXN5bmMgZnVuY3Rpb24gd2ViR0xD
b250ZXh0TG9zdChjYW52YXMpIHsKKyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBj
YW52YXMuYWRkRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0bG9zdCIsIHJlc29sdmUpKTsKK30K
K3ZhciB2YWw7Cithc3luYyBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGxldCBjYW52YXMgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKKyAgICBjYW52YXMud2lkdGggPSAyMDA7
CisgICAgY2FudmFzLmhlaWdodCA9IDIwMDsKKyAgICBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQo
Y2FudmFzKTsKKyAgICB3dHUuc2V0dXBDb2xvclF1YWQoZ2wpOworICAgIGdsLnZpZXdwb3J0KDAs
IDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisgICAgZ2wuY2xlYXJDb2xvcigwLjAs
IDEuMCwgMC4wLCAxLjApOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICAg
IHNob3VsZEJlRmFsc2UoImdsLmlzQ29udGV4dExvc3QoKSIpOworICAgIHNob3VsZEJlKCJnbC5n
ZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2ltdWxhdGVFdmVudEZvcldlYkdMQ29udGV4dCgidGlt
ZW91dCIsIGdsKTsKKyAgICBnbC5jbGVhckNvbG9yKDEuMCwgMS4wLCAwLjAsIDEuMCk7CisgICAg
Z2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgdmFsID0gZ2wuZ2V0UGFyYW1ldGVy
KGdsLkNPTE9SX0NMRUFSX1ZBTFVFKTsKKyAgICBhd2FpdCB3ZWJHTENvbnRleHRMb3N0KGNhbnZh
cyk7CisgICAgc2hvdWxkQmVUcnVlKCJnbC5pc0NvbnRleHRMb3N0KCkiKTsKKyAgICBzaG91bGRC
ZSgiZ2wuZ2V0RXJyb3IoKSIsICJnbC5DT05URVhUX0xPU1RfV0VCR0wiKTsKKyAgICBzaG91bGRC
ZSgidmFsIiwgIlswLCAwLCAwLCAwXSIpOworICAgIGZpbmlzaFRlc3QoKTsKK30KKworcnVuVGVz
dCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPGJvZHk+
Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC93ZWJn
bGNvbnRleHRjaGFuZ2VkZXZlbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L3dlYmdsY29udGV4dGNoYW5nZWRldmVudC5odG1sCmluZGV4IDM5ZDc3Yjc5NmVmMDk1MDllYmQ1
Njk5MWEwMmM5MTU4YTAxYmI4MzYuLjRmOWQxZGRiOTNmNDc4Mjc4ZTIzN2MzMzY1YmJkNDFkNjgy
Y2RhNTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3dlYmdsY29u
dGV4dGNoYW5nZWRldmVudC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L3dlYmdsY29udGV4dGNoYW5nZWRldmVudC5odG1sCkBAIC0zOCw3ICszOCw3IEBAIGZ1bmN0aW9u
IHJ1blRlc3QoKQogICAgIH0pOwogCiAgICAgbGV0IGdsID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cigiY2FudmFzIikuZ2V0Q29udGV4dCgid2ViZ2wiKTsKLSAgICB3aW5kb3cuaW50ZXJuYWxzLnNp
bXVsYXRlV2ViR0xDb250ZXh0Q2hhbmdlZChnbCk7CisgICAgd2luZG93LmludGVybmFscy5zaW11
bGF0ZUV2ZW50Rm9yV2ViR0xDb250ZXh0KCJjb250ZXh0Y2hhbmdlZCIsIGdsKTsKIH0KIAogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBkZDgzNzZkMmYyYzc4
MDQ0YWUwOWE4YjczODRjNWE2ZjA5NjM1NTA3Li5iOGJiOTYyNzFjODhhZWRmNTIxODQ3YTIyZWVk
NjNkMTAwYzg4NWJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMK
QEAgLTIzLDYgKzIzLDkgQEAgZmFzdC9jYW52YXMvd2ViZ2wvdW5pZm9ybS1zYW1wbGVycy10ZXN0
Lmh0bWwgWyBTbG93IF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL2F0dHJpYnMvZ2wtdmVydGV4
YXR0cmlicG9pbnRlci5odG1sIFsgU2xvdyBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvcmVu
ZGVyaW5nL2JsaXRmcmFtZWJ1ZmZlci1maWx0ZXItb3V0b2Zib3VuZHMuaHRtbCBbIFNsb3cgXQog
CitmYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tdGltZW91dC1hc3luYy5odG1sIFsg
U2xvdyBQYXNzIF0KK2Zhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0Lmh0
bWwgWyBTbG93IFBhc3MgXQorCiBmYXN0L2ltYWdlcy9hbmltYXRlZC1pbWFnZS1tcDQtY3Jhc2gu
aHRtbCBbIFRpbWVvdXQgXQogZmFzdC9pbWFnZXMvYW5pbWF0ZWQtaW1hZ2UtbXA0Lmh0bWwgWyBU
aW1lb3V0IF0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>