<?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>214583</bug_id>
          
          <creation_ts>2020-07-20 19:53:00 -0700</creation_ts>
          <short_desc>Allow IndexedDB in third-party frames</short_desc>
          <delta_ts>2020-07-23 14:21:27 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>jsbell</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1673357</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-07-20 19:53:00 -0700</bug_when>
    <thetext>&lt;rdar://problem/61278487&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673358</commentid>
    <comment_count>1</comment_count>
      <attachid>404787</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-07-20 20:07:50 -0700</bug_when>
    <thetext>Created attachment 404787
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673359</commentid>
    <comment_count>2</comment_count>
      <attachid>404788</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-07-20 20:14:20 -0700</bug_when>
    <thetext>Created attachment 404788
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673542</commentid>
    <comment_count>3</comment_count>
      <attachid>404845</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-07-21 11:49:58 -0700</bug_when>
    <thetext>Created attachment 404845
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673639</commentid>
    <comment_count>4</comment_count>
      <attachid>404866</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-07-21 15:24:16 -0700</bug_when>
    <thetext>Created attachment 404866
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673645</commentid>
    <comment_count>5</comment_count>
      <attachid>404866</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-07-21 15:36:53 -0700</bug_when>
    <thetext>Comment on attachment 404866
Patch

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

Does this in-memory IDB line up with the IDB third-party ServiceWorkers get? If so, can we add a test to show that?

Is this WK2-specific? I believe so since WK1 already has partitioned IDB afaik. If it is WK2-specific, please say so in the change log.

Does partitioned IDB get cleared when IDB is cleared for the third-party, the partition (the first party), or both? Can we add a test for that?

&gt; Source/WebCore/ChangeLog:10
&gt; +        in-memory storage.

Please add specifics on what the partitioning key is, i.e. origin (scheme+host+port), host, or registrable domain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673664</commentid>
    <comment_count>6</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-07-21 16:32:51 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #5)
&gt; Comment on attachment 404866 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=404866&amp;action=review
&gt; 
&gt; Does this in-memory IDB line up with the IDB third-party ServiceWorkers get?
&gt; If so, can we add a test to show that?
&gt; 

Now IDB should have the same behavior as localStorage, so workers should have temporary storage too. Will try adding a test.

&gt; Is this WK2-specific? I believe so since WK1 already has partitioned IDB
&gt; afaik. If it is WK2-specific, please say so in the change log.
&gt; 

No, both wk1 and wk2 use the same logic: they didn&apos;t allow IDB on 3rd party frames. Check mac-wk1 bot behavior on updated test.

&gt; Does partitioned IDB get cleared when IDB is cleared for the third-party,
&gt; the partition (the first party), or both? Can we add a test for that?
&gt; 

Both. Will add a test.

&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        in-memory storage.
&gt; 
&gt; Please add specifics on what the partitioning key is, i.e. origin
&gt; (scheme+host+port), host, or registrable domain.

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674124</commentid>
    <comment_count>7</comment_count>
      <attachid>405019</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-07-23 00:30:05 -0700</bug_when>
    <thetext>Created attachment 405019
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674330</commentid>
    <comment_count>8</comment_count>
      <attachid>405019</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-23 12:56:55 -0700</bug_when>
    <thetext>Comment on attachment 405019
Patch

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

r=me

&gt; Source/WebCore/Modules/indexeddb/IDBFactory.cpp:58
&gt; +    if (!context.securityOrigin()-&gt;canAccessDatabase(nullptr))
&gt;          return true;

This check looks a little mysterious. It&apos;s nice that we&apos;re being consistent with LocalStorage here. Probably deserves some follow-up for both LocalStorage and IDB to make this check clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674331</commentid>
    <comment_count>9</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-23 12:57:16 -0700</bug_when>
    <thetext>Seems like all review comments so far have been addressed, so I&apos;ll say r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674370</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-23 14:21:26 -0700</bug_when>
    <thetext>Committed r264790: &lt;https://trac.webkit.org/changeset/264790&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 405019.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404787</attachid>
            <date>2020-07-20 20:07:50 -0700</date>
            <delta_ts>2020-07-20 20:14:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214583-20200720200750.patch</filename>
            <type>text/plain</type>
            <size>14908</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzllODA3Yjk4YmZkMDIw
YjU4YjZlMjdlMTdiZjI0Y2VjZjJhYzBlYy4uNjMxYjNhMzcwMzY4ZDBhZDEzYmNmOTVkN2ExMTQ2
MzhhZTdjYzJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIwLTA3LTIwICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgQWxsb3cgSW5kZXhlZERCIGlu
IHRoaXJkLXBhcnR5IGZyYW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE0NTgzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTI3ODQ4Nz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXRjaCBJbmRl
eGVkREIncyBiZWhhdmlvciB3aXRoIGxvY2FsU3RvcmFnZS4KKworICAgICAgICBBUEkgVGVzdDog
SW5kZXhlZERCLkluZGV4ZWREQlRoaXJkUGFydHlIYXNBY2Nlc3MKKworICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZUlkZW50aWZpZXI6OklEQkRhdGFiYXNlSWRlbnRpZmllcik6CisgICAgICAg
IChXZWJDb3JlOjptX2lzVHJhbnNpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
SWRlbnRpZmllcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRh
dGFiYXNlSWRlbnRpZmllcjo6bG9nZ2luZ1N0cmluZyBjb25zdCk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZUlkZW50aWZpZXI6Omhhc2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VJZGVudGlmaWVyOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlSWRlbnRpZmllcjo6aXNUcmFuc2llbnQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkVGhyb3dT
ZWN1cml0eUV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5OjpvcGVuSW50
ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeTo6ZGVsZXRlRGF0YWJhc2UpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZSk6CisK
IDIwMjAtMDctMjAgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjY0NTk2LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAK
aW5kZXggNTU1YjBjMTgxZWNiNjE4YTZkZjQ0MTgzMzA3MmFkZThkNjRkNTY1YS4uNjFhNDAxNWU1
NjQzOWE1OTY3NDBhMjU3MDM0M2I2Mjg1N2YzNzIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwCkBA
IC0zNSw5ICszNSwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUlEQkRhdGFiYXNlSWRl
bnRpZmllcjo6SURCRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1l
LCBTZWN1cml0eU9yaWdpbkRhdGEmJiBvcGVuaW5nT3JpZ2luLCBTZWN1cml0eU9yaWdpbkRhdGEm
JiBtYWluRnJhbWVPcmlnaW4pCitJREJEYXRhYmFzZUlkZW50aWZpZXI6OklEQkRhdGFiYXNlSWRl
bnRpZmllcihjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRhJiYg
b3BlbmluZ09yaWdpbiwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgbWFpbkZyYW1lT3JpZ2luLCBib29s
IGlzVHJhbnNpZW50KQogICAgIDogbV9kYXRhYmFzZU5hbWUoZGF0YWJhc2VOYW1lKQotICAgICwg
bV9vcmlnaW4geyBXVEZNb3ZlKG9wZW5pbmdPcmlnaW4pLCBXVEZNb3ZlKG1haW5GcmFtZU9yaWdp
bikgfQorICAgICwgbV9vcmlnaW4oV1RGTW92ZShvcGVuaW5nT3JpZ2luKSwgV1RGTW92ZShtYWlu
RnJhbWVPcmlnaW4pKQorICAgICwgbV9pc1RyYW5zaWVudChpc1RyYW5zaWVudCkKIHsKICAgICAv
LyBUaGUgZW1wdHkgc3RyaW5nIGlzIGEgdmFsaWQgZGF0YWJhc2UgbmFtZSwgYnV0IGEgbnVsbCBz
dHJpbmcgaXMgbm90LgogICAgIEFTU0VSVCghZGF0YWJhc2VOYW1lLmlzTnVsbCgpKTsKQEAgLTQ5
LDYgKzUwLDcgQEAgSURCRGF0YWJhc2VJZGVudGlmaWVyIElEQkRhdGFiYXNlSWRlbnRpZmllcjo6
aXNvbGF0ZWRDb3B5KCkgY29uc3QKIAogICAgIGlkZW50aWZpZXIubV9kYXRhYmFzZU5hbWUgPSBt
X2RhdGFiYXNlTmFtZS5pc29sYXRlZENvcHkoKTsKICAgICBpZGVudGlmaWVyLm1fb3JpZ2luID0g
bV9vcmlnaW4uaXNvbGF0ZWRDb3B5KCk7CisgICAgaWRlbnRpZmllci5tX2lzVHJhbnNpZW50ID0g
bV9pc1RyYW5zaWVudDsKIAogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQpAQCAtNzMsNyArNzUs
NyBAQCBTdHJpbmcgSURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVjdG9yeVJlbGF0
aXZlVG9Sb290KGNvbnN0IFNlY3VyaXR5T3JpZwogI2lmICFMT0dfRElTQUJMRUQKIFN0cmluZyBJ
REJEYXRhYmFzZUlkZW50aWZpZXI6OmxvZ2dpbmdTdHJpbmcoKSBjb25zdAogewotICAgIHJldHVy
biBtYWtlU3RyaW5nKG1fZGF0YWJhc2VOYW1lLCAiQCIsIG1fb3JpZ2luLnRvcE9yaWdpbi5kZWJ1
Z1N0cmluZygpLCAiOiIsIG1fb3JpZ2luLmNsaWVudE9yaWdpbi5kZWJ1Z1N0cmluZygpKTsKKyAg
ICByZXR1cm4gbWFrZVN0cmluZyhtX2RhdGFiYXNlTmFtZSwgIkAiLCBtX29yaWdpbi50b3BPcmln
aW4uZGVidWdTdHJpbmcoKSwgIjoiLCBtX29yaWdpbi5jbGllbnRPcmlnaW4uZGVidWdTdHJpbmco
KSwgbV9pc1RyYW5zaWVudCA/ICIsIHRyYW5zaWVudCIgOiAiIik7CiB9CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVu
dGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlk
ZW50aWZpZXIuaAppbmRleCBhYzQ5YmExMjcxMmFiZGYyMDQ0NzJhN2IzMzQ2YjJmZWJhMGMxM2E4
Li4zZWNhYjk3OTJkNGFhYTEzMGNhMTc1YjU5NmY5ODU1Yzc0OTZkOWNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZp
ZXIuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFdFQkNP
UkVfRVhQT1JUIElEQkRhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFt
ZSwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3BlbmluZ09yaWdpbiwgU2VjdXJpdHlPcmlnaW5EYXRh
JiYgbWFpbkZyYW1lT3JpZ2luKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBJREJEYXRhYmFzZUlkZW50
aWZpZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIG9w
ZW5pbmdPcmlnaW4sIFNlY3VyaXR5T3JpZ2luRGF0YSYmIG1haW5GcmFtZU9yaWdpbiwgYm9vbCBp
c1RyYW5zaWVudCA9IGZhbHNlKTsKIAogICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBpc29sYXRl
ZENvcHkoKSBjb25zdDsKIApAQCAtNTcsOCArNTcsOSBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICB1bnNpZ25lZCBuYW1lSGFzaCA9IFN0cmluZ0hhc2g6Omhhc2gobV9kYXRhYmFzZU5hbWUpOwog
ICAgICAgICB1bnNpZ25lZCBvcmlnaW5IYXNoID0gbV9vcmlnaW4uaGFzaCgpOworICAgICAgICB1
bnNpZ25lZCB0cmFuc2llbnRIYXNoID0gbV9pc1RyYW5zaWVudDsKIAotICAgICAgICB1bnNpZ25l
ZCBoYXNoQ29kZXNbMl0gPSB7IG5hbWVIYXNoLCBvcmlnaW5IYXNoIH07CisgICAgICAgIHVuc2ln
bmVkIGhhc2hDb2Rlc1szXSA9IHsgbmFtZUhhc2gsIG9yaWdpbkhhc2gsIHRyYW5zaWVudEhhc2gg
fTsKICAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxzaXplb2YoaGFzaENv
ZGVzKT4oaGFzaENvZGVzKTsKICAgICB9CiAKQEAgLTc1LDExICs3NiwxMiBAQCBwdWJsaWM6CiAK
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBvdGhlcikg
Y29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBvdGhlci5tX2RhdGFiYXNlTmFtZSA9PSBtX2Rh
dGFiYXNlTmFtZSAmJiBvdGhlci5tX29yaWdpbiA9PSBtX29yaWdpbjsKKyAgICAgICAgcmV0dXJu
IG90aGVyLm1fZGF0YWJhc2VOYW1lID09IG1fZGF0YWJhc2VOYW1lICYmIG90aGVyLm1fb3JpZ2lu
ID09IG1fb3JpZ2luICYmIG90aGVyLm1faXNUcmFuc2llbnQgPT0gbV9pc1RyYW5zaWVudDsKICAg
ICB9CiAKICAgICBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0YWJhc2VOYW1lOyB9CiAgICAgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4oKSBjb25zdCB7
IHJldHVybiBtX29yaWdpbjsgfQorICAgIGJvb2wgaXNUcmFuc2llbnQoKSBjb25zdCB7IHJldHVy
biBtX2lzVHJhbnNpZW50OyB9CiAKICAgICBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2
ZVRvUm9vdChjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgdmVyc2lv
blN0cmluZz0idjEiKSBjb25zdDsKICAgICBzdGF0aWMgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5
UmVsYXRpdmVUb1Jvb3QoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BMZXZlbE9yaWdpbiwg
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcGVuaW5nT3JpZ2luLCBjb25zdCBTdHJpbmcmIHJv
b3REaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZyk7CkBAIC05Niw2ICs5OCw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fZGF0YWJhc2VOYW1lOwogICAgIENs
aWVudE9yaWdpbiBtX29yaWdpbjsKKyAgICBib29sIG1faXNUcmFuc2llbnQgeyBmYWxzZSB9Owog
fTsKIAogc3RydWN0IElEQkRhdGFiYXNlSWRlbnRpZmllckhhc2ggewpAQCAtMTEzLDcgKzExNiw3
IEBAIHN0cnVjdCBJREJEYXRhYmFzZUlkZW50aWZpZXJIYXNoVHJhaXRzIDogV1RGOjpTaW1wbGVD
bGFzc0hhc2hUcmFpdHM8SURCRGF0YWJhc2VJCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9p
ZCBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ewotICAgIGVuY29kZXIgPDwgbV9kYXRhYmFzZU5hbWUgPDwgbV9vcmlnaW47CisgICAgZW5jb2Rl
ciA8PCBtX2RhdGFiYXNlTmFtZSA8PCBtX29yaWdpbiA8PCBtX2lzVHJhbnNpZW50OwogfQogCiB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtMTI5LDkgKzEzMiwxNSBAQCBPcHRpb25hbDxJREJE
YXRhYmFzZUlkZW50aWZpZXI+IElEQkRhdGFiYXNlSWRlbnRpZmllcjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgaWYgKCFvcmlnaW4pCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAKKyAgICBPcHRpb25hbDxib29sPiBpc1RyYW5zaWVudDsKKyAgICBkZWNvZGVyID4+IGlzVHJh
bnNpZW50OworICAgIGlmICghaXNUcmFuc2llbnQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKICAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgaWRlbnRpZmllcjsKICAgICBpZGVudGlm
aWVyLm1fZGF0YWJhc2VOYW1lID0gV1RGTW92ZSgqZGF0YWJhc2VOYW1lKTsgLy8gRklYTUU6IFdo
ZW4gZGVjb2RpbmcgZnJvbSBJUEMsIGRhdGFiYXNlTmFtZSBjYW4gYmUgbnVsbCwgYW5kIHRoZSBu
b24tZW1wdHkgY29uc3RydWN0b3IgYXNzZXJ0cyB0aGF0IHRoaXMgaXMgbm90IHRoZSBjYXNlLgog
ICAgIGlkZW50aWZpZXIubV9vcmlnaW4gPSBXVEZNb3ZlKCpvcmlnaW4pOworICAgIGlkZW50aWZp
ZXIubV9pc1RyYW5zaWVudCA9ICppc1RyYW5zaWVudDsKICAgICByZXR1cm4gaWRlbnRpZmllcjsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNw
cAppbmRleCBhNDg3MjdiMDAzYjQ4Njc3NmUwMWY1Yjc0ODI2ZDU2NTUzNGJjYmMzLi45YzFhNTJj
MGM5NWFhMTg3OTRkZjc5OGI4OTZkMTVlNGFlMmQwMTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcApAQCAtNTMsMTAgKzUzLDYgQEAgc3Rh
dGljIGJvb2wgc2hvdWxkVGhyb3dTZWN1cml0eUV4Y2VwdGlvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KQogICAgICAgICBpZiAoIWRvY3VtZW50LnBhZ2UoKSkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KLQotICAgIGlmICghY29udGV4dC5zZWN1cml0eU9yaWdpbigp
LT5jYW5BY2Nlc3NEYXRhYmFzZShjb250ZXh0LnRvcE9yaWdpbigpKSkKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTkxLDcgKzg3LDggQEAgRXhjZXB0
aW9uT3I8UmVmPElEQk9wZW5EQlJlcXVlc3Q+PiBJREJGYWN0b3J5OjpvcGVuSW50ZXJuYWwoU2Ny
aXB0RXhlY3V0aW9uQ29udGUKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJy
b3IsICJJREJGYWN0b3J5Lm9wZW4oKSBjYWxsZWQgaW4gYW4gaW52YWxpZCBzZWN1cml0eSBjb250
ZXh0Il9zIH07CiAKICAgICBBU1NFUlQoY29udGV4dC5zZWN1cml0eU9yaWdpbigpKTsKLSAgICBJ
REJEYXRhYmFzZUlkZW50aWZpZXIgZGF0YWJhc2VJZGVudGlmaWVyKG5hbWUsIFNlY3VyaXR5T3Jp
Z2luRGF0YSB7IGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKS0+ZGF0YSgpIH0sIFNlY3VyaXR5T3Jp
Z2luRGF0YSB7IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0YSgpIH0pOworICAgIGJvb2wgaXNUcmFu
c2llbnQgPSAhY29udGV4dC5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NEYXRhYmFzZShjb250
ZXh0LnRvcE9yaWdpbigpKTsKKyAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgZGF0YWJhc2VJZGVu
dGlmaWVyKG5hbWUsIFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQuc2VjdXJpdHlPcmlnaW4o
KS0+ZGF0YSgpIH0sIFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0
YSgpIH0sIGlzVHJhbnNpZW50KTsKICAgICBpZiAoIWRhdGFiYXNlSWRlbnRpZmllci5pc1ZhbGlk
KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJJREJGYWN0b3J5Lm9w
ZW4oKSBjYWxsZWQgd2l0aCBhbiBpbnZhbGlkIHNlY3VyaXR5IG9yaWdpbiJfcyB9OwogCkBAIC0x
MTEsNyArMTA4LDggQEAgRXhjZXB0aW9uT3I8UmVmPElEQk9wZW5EQlJlcXVlc3Q+PiBJREJGYWN0
b3J5OjpkZWxldGVEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db24KICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJJREJGYWN0b3J5LmRlbGV0ZURhdGFiYXNlKCkgY2Fs
bGVkIGluIGFuIGludmFsaWQgc2VjdXJpdHkgY29udGV4dCJfcyB9OwogCiAgICAgQVNTRVJUKGNv
bnRleHQuc2VjdXJpdHlPcmlnaW4oKSk7Ci0gICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIGRhdGFi
YXNlSWRlbnRpZmllcihuYW1lLCBTZWN1cml0eU9yaWdpbkRhdGEgeyBjb250ZXh0LnNlY3VyaXR5
T3JpZ2luKCktPmRhdGEoKSB9LCBTZWN1cml0eU9yaWdpbkRhdGEgeyBjb250ZXh0LnRvcE9yaWdp
bigpLmRhdGEoKSB9KTsKKyAgICBib29sIGlzVHJhbnNpZW50ID0gIWNvbnRleHQuc2VjdXJpdHlP
cmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJhc2UoY29udGV4dC50b3BPcmlnaW4oKSk7CisgICAgSURC
RGF0YWJhc2VJZGVudGlmaWVyIGRhdGFiYXNlSWRlbnRpZmllcihuYW1lLCBTZWN1cml0eU9yaWdp
bkRhdGEgeyBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCktPmRhdGEoKSB9LCBTZWN1cml0eU9yaWdp
bkRhdGEgeyBjb250ZXh0LnRvcE9yaWdpbigpLmRhdGEoKSB9LCBpc1RyYW5zaWVudCk7CiAgICAg
aWYgKCFkYXRhYmFzZUlkZW50aWZpZXIuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgVHlwZUVycm9yLCAiSURCRmFjdG9yeS5kZWxldGVEYXRhYmFzZSgpIGNhbGxlZCB3aXRo
IGFuIGludmFsaWQgc2VjdXJpdHkgb3JpZ2luIl9zIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKaW5kZXggMWE5N2M3
MTQ4MThkYzE5YTM0ZTE5MWVjZDhlYTg1NDkwMDk4OTQwNC4uMzAyZDFhNzAxMmM0YTlmMGI3MmVk
NWIwZjRjNzAxY2VlNDMwMDZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTEzMyw2ICsxMzMsMTAgQEAgc3Rk
Ojp1bmlxdWVfcHRyPElEQkJhY2tpbmdTdG9yZT4gSURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3Rv
cmUoY29uc3QgSURCRGF0YWJhc2UKICAgICBpZiAoZGF0YWJhc2VEaXJlY3RvcnlQYXRoLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPiht
X3Nlc3Npb25JRCwgaWRlbnRpZmllcik7CiAKKyAgICBBU1NFUlQoIW1fc2Vzc2lvbklELmlzRXBo
ZW1lcmFsKCkpOworICAgIGlmIChpZGVudGlmaWVyLmlzVHJhbnNpZW50KCkpCisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4obV9zZXNzaW9uSUQsIGlkZW50
aWZpZXIpOworCiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1FMaXRlSURCQmFja2luZ1N0b3JlPiht
X3Nlc3Npb25JRCwgaWRlbnRpZmllciwgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGZjNWUyYjJh
ZmNmMjZkNDFlM2MzM2U4MDQ2NjFiZDViYWVhMWRjZmYuLmUwZmY0YzI4ZjQ5NjNkZGFiODY3MDBh
ZWM1MjBjZTg1ZmVjNTRmZmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wNy0yMCAgU2lodWkgTGl1ICA8c2lo
dWlfbGl1QGFwcGUuY29tPgorCisgICAgICAgIEFsbG93IEluZGV4ZWREQiBpbiB0aGlyZC1wYXJ0
eSBmcmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxNDU4MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjEyNzg0ODc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tOgorICAgICAgICAoY2F0Y2gpOgor
CiAyMDIwLTA3LTIwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbRmxhdHBhayBTREtdIFVwZGF0ZSB0byBGRE8gMTkuMDguMTIgcmVsZWFzZQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQ
ZXJzaXN0ZW5jZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5k
ZXhlZERCUGVyc2lzdGVuY2UubW0KaW5kZXggZjQ4ODBhMThkZDkyM2JiMTZmMDExMDcyNTk0YmY3
M2FiOWJkYmFhNC4uYTEzOWI1NDAwNzkzZTI2ODE0ZDFiZTJmOTRhZjA1NWU4YzQ1NDNkOSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQ
ZXJzaXN0ZW5jZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbXBvcnQgIlBs
YXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0VVJMU2No
ZW1lSGFuZGxlci5oIgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVc2VyQ29udGVudENv
bnRyb2xsZXJQcml2YXRlLmg+CkBAIC0xNzksMyArMTgwLDc5IEBAIFRFU1QoSW5kZXhlZERCLCBJ
bmRleGVkREJEYXRhUmVtb3ZhbCkKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJnJlYWR5VG9Db250aW51ZSk7CiB9CisKK3N0YXRpYyBOU1N0cmluZyAqbWFpbkZyYW1lU3Ry
aW5nID0gQCI8c2NyaXB0PiBmdW5jdGlvbiBwb3N0UmVzdWx0KGV2ZW50KSB7IHdpbmRvdy53ZWJr
aXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKGV2ZW50LmRhdGEpOyB9
IGFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBwb3N0UmVzdWx0LCBmYWxzZSk7IDwvc2NyaXB0
PjxpZnJhbWUgc3JjPSdpZnJhbWU6Ly8nPiI7CisKK3N0YXRpYyBjb25zdCBjaGFyKiBpZnJhbWVC
eXRlcyA9IFIiVEVTVFJFU09VUkNFKAorPHNjcmlwdD4KK3RyeSB7CisgICAgdmFyIHJlcXVlc3Qg
PSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oJ0luZGV4ZWREQlRoaXJkUGFydHlIYXNBY2Nlc3MnKTsK
KyAgICB2YXIgZGIgPSBudWxsOworICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICAgICAgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgICAgICB2
YXIgb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnVGVzdE9iamVjdFN0b3JlJyk7
CisgICAgICAgIHZhciBwdXRSZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCdUZXN0VmFsdWUnLCAn
VGVzdEtleScpOworICAgICAgICBwdXRSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgICAgICAgICBwYXJlbnQucG9zdE1lc3NhZ2UoJ2RhdGFiYXNlIGNyZWF0ZWQgLSBw
dXQgaXRlbSBzdWNjZXNzJywgJyonKTsKKyAgICAgICAgfQorICAgICAgICBwdXRSZXF1ZXN0Lm9u
ZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgcGFyZW50LnBvc3RNZXNzYWdl
KCdkYXRhYmFzZSBjcmVhdGVkIC0gcHV0IGl0ZW0gZXJyb3I6ICcgKyBldmVudC50YXJnZXQuZXJy
b3IubmFtZSArICcgLSAnICsgZXZlbnQudGFyZ2V0LmVycm9yLm1lc3NhZ2UsICcqJyk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewor
ICAgICAgICBpZiAoZGIpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGRiID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgdmFyIG9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24o
WydUZXN0T2JqZWN0U3RvcmUnXSkub2JqZWN0U3RvcmUoJ1Rlc3RPYmplY3RTdG9yZScpOworICAg
ICAgICB2YXIgZ2V0UmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldCgnVGVzdEtleScpOworICAgICAg
ICBnZXRSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBw
YXJlbnQucG9zdE1lc3NhZ2UoJ2RhdGFiYXNlIGV4aXN0cyAtIGdldCBpdGVtIHN1Y2Nlc3M6ICcg
KyBldmVudC50YXJnZXQucmVzdWx0LCAnKicpOworICAgICAgICB9CisgICAgICAgIGdldFJlcXVl
c3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBwYXJlbnQucG9zdE1l
c3NhZ2UoJ2RhdGFiYXNlIGV4aXN0cyAtIGdldCBpdGVtIGVycm9yOiAnICsgZXZlbnQudGFyZ2V0
LmVycm9yLm5hbWUgKyAnIC0gJyArIGV2ZW50LnRhcmdldC5lcnJvci5tZXNzYWdlLCAnKicpOwor
ICAgICAgICB9CisgICAgfQorICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgICAgIHBhcmVudC5wb3N0TWVzc2FnZSgnZGF0YWJhc2UgZXJyb3I6ICcgKyBldmVudC50
YXJnZXQuZXJyb3IubmFtZSArICcgLSAnICsgZXZlbnQudGFyZ2V0LmVycm9yLm1lc3NhZ2UsICcq
Jyk7CisgICAgfQorfSBjYXRjaChlcnIpIHsKKyAgICBwYXJlbnQucG9zdE1lc3NhZ2UoJ2RhdGFi
YXNlIGVycm9yOiAnICsgZXJyLm5hbWUgKyAnIC0gJyArIGVyci5tZXNzYWdlLCAnKicpOworfQor
PC9zY3JpcHQ+CispVEVTVFJFU09VUkNFIjsKKworVEVTVChJbmRleGVkREIsIEluZGV4ZWREQlRo
aXJkUGFydHlIYXNBY2Nlc3MpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGhhbmRsZXIg
PSBhZG9wdE5TKFtbSW5kZXhlZERCTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBb
W2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFu
ZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOworICAgIGF1dG8gc2NoZW1l
SGFuZGxlciA9IGFkb3B0TlMoW1tUZXN0VVJMU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOwor
ICAgIFtzY2hlbWVIYW5kbGVyIHNldFN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXI6XihXS1dlYlZp
ZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7CisgICAgICAgIGF1dG8gcmVzcG9uc2Ug
PSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0
LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjAgdGV4dEVu
Y29kaW5nTmFtZTpuaWxdKTsKKyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3Bv
bnNlLmdldCgpXTsKKyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W05TRGF0YSBkYXRhV2l0
aEJ5dGVzOmlmcmFtZUJ5dGVzIGxlbmd0aDpzdHJsZW4oaWZyYW1lQnl0ZXMpXV07CisgICAgICAg
IFt0YXNrIGRpZEZpbmlzaF07CisgICAgfV07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2No
ZW1lSGFuZGxlcjpzY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAImlmcmFtZSJdOwor
CisgICAgYXV0byBsb2FkVGVzdFBhZ2VJbldlYlZpZXcgPSBeKFdLV2ViVmlldyAqd2ViVmlldywg
TlNTdHJpbmcgKmV4cGVjdGVkUmVzdWx0KSB7CisgICAgICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3Ry
aW5nOm1haW5GcmFtZVN0cmluZyBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDov
L3dlYmtpdC5vcmciXV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2
ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7
CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShleHBlY3RlZFJlc3VsdCwgKE5TU3RyaW5nICopW2xh
c3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKKyAgICB9OworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBsb2FkVGVz
dFBhZ2VJbldlYlZpZXcod2ViVmlldy5nZXQoKSwgQCJkYXRhYmFzZSBjcmVhdGVkIC0gcHV0IGl0
ZW0gc3VjY2VzcyIpOworCisgICAgYXV0byBzZWNvbmRXZWJWaWV3ID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBsb2FkVGVzdFBhZ2VJbldlYlZp
ZXcoc2Vjb25kV2ViVmlldy5nZXQoKSwgQCJkYXRhYmFzZSBleGlzdHMgLSBnZXQgaXRlbSBzdWNj
ZXNzOiBUZXN0VmFsdWUiKTsKKworICAgIHdlYlZpZXcgPSBuaWw7CisgICAgc2Vjb25kV2ViVmll
dyA9IG5pbDsKKyAgICBbY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCBfdGVybWluYXRl
TmV0d29ya1Byb2Nlc3NdOworCisgICAgLy8gVGhpcmQtcGFydHkgSURCIHN0b3JhZ2UgaXMgc3Rv
cmVkIGluIHRoZSBtZW1vcnkgb2YgbmV0d29yayBwcm9jZXNzLgorICAgIGF1dG8gdGhpcmRXZWJW
aWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAg
ICBsb2FkVGVzdFBhZ2VJbldlYlZpZXcodGhpcmRXZWJWaWV3LmdldCgpLCBAImRhdGFiYXNlIGNy
ZWF0ZWQgLSBwdXQgaXRlbSBzdWNjZXNzIik7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404788</attachid>
            <date>2020-07-20 20:14:20 -0700</date>
            <delta_ts>2020-07-21 09:01:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214583-20200720201419.patch</filename>
            <type>text/plain</type>
            <size>14877</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWMwNjVmMzQxY2ZiMDkx
MDNkNjU4YjMxMTk5N2YzNTNmMWYzNDAwMi4uNDNkNjAyZDE1ODg1MGY0MTU1ZDIzNGQ0MzllOTVl
OWRmZWFkMjFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIwLTA3LTIwICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgQWxsb3cgSW5kZXhlZERCIGlu
IHRoaXJkLXBhcnR5IGZyYW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE0NTgzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTI3ODQ4Nz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXRjaCBJbmRl
eGVkREIncyBiZWhhdmlvciB3aXRoIGxvY2FsU3RvcmFnZS4KKworICAgICAgICBBUEkgVGVzdDog
SW5kZXhlZERCLkluZGV4ZWREQlRoaXJkUGFydHlIYXNBY2Nlc3MKKworICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZUlkZW50aWZpZXI6OklEQkRhdGFiYXNlSWRlbnRpZmllcik6CisgICAgICAg
IChXZWJDb3JlOjptX2lzVHJhbnNpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
SWRlbnRpZmllcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRh
dGFiYXNlSWRlbnRpZmllcjo6bG9nZ2luZ1N0cmluZyBjb25zdCk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZUlkZW50aWZpZXI6Omhhc2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VJZGVudGlmaWVyOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlSWRlbnRpZmllcjo6aXNUcmFuc2llbnQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkVGhyb3dT
ZWN1cml0eUV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5OjpvcGVuSW50
ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeTo6ZGVsZXRlRGF0YWJhc2UpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZSk6CisK
IDIwMjAtMDctMjAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZlcnQgcjI2Mjc3NiBmb3IgZXhpc3RpbmcgYXBwcyB1c2luZyBVSVdlYlZp
ZXcvV2ViVmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKaW5kZXggNTU1YjBjMTgxZWNiNjE4YTZkZjQ0
MTgzMzA3MmFkZThkNjRkNTY1YS4uYTA2YTgwYmQ1MDA4NWZkM2Y0Y2JmNGE1NGIxYmQ4ZTQwOWE0
OGNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwCkBAIC0zNSw5ICszNSwxMCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLUlEQkRhdGFiYXNlSWRlbnRpZmllcjo6SURCRGF0YWJhc2VJZGVudGlm
aWVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBTZWN1cml0eU9yaWdpbkRhdGEmJiBvcGVu
aW5nT3JpZ2luLCBTZWN1cml0eU9yaWdpbkRhdGEmJiBtYWluRnJhbWVPcmlnaW4pCitJREJEYXRh
YmFzZUlkZW50aWZpZXI6OklEQkRhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGRhdGFi
YXNlTmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3BlbmluZ09yaWdpbiwgU2VjdXJpdHlPcmln
aW5EYXRhJiYgbWFpbkZyYW1lT3JpZ2luLCBib29sIGlzVHJhbnNpZW50KQogICAgIDogbV9kYXRh
YmFzZU5hbWUoZGF0YWJhc2VOYW1lKQogICAgICwgbV9vcmlnaW4geyBXVEZNb3ZlKG9wZW5pbmdP
cmlnaW4pLCBXVEZNb3ZlKG1haW5GcmFtZU9yaWdpbikgfQorICAgICwgbV9pc1RyYW5zaWVudChp
c1RyYW5zaWVudCkKIHsKICAgICAvLyBUaGUgZW1wdHkgc3RyaW5nIGlzIGEgdmFsaWQgZGF0YWJh
c2UgbmFtZSwgYnV0IGEgbnVsbCBzdHJpbmcgaXMgbm90LgogICAgIEFTU0VSVCghZGF0YWJhc2VO
YW1lLmlzTnVsbCgpKTsKQEAgLTQ5LDYgKzUwLDcgQEAgSURCRGF0YWJhc2VJZGVudGlmaWVyIElE
QkRhdGFiYXNlSWRlbnRpZmllcjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIAogICAgIGlkZW50aWZp
ZXIubV9kYXRhYmFzZU5hbWUgPSBtX2RhdGFiYXNlTmFtZS5pc29sYXRlZENvcHkoKTsKICAgICBp
ZGVudGlmaWVyLm1fb3JpZ2luID0gbV9vcmlnaW4uaXNvbGF0ZWRDb3B5KCk7CisgICAgaWRlbnRp
Zmllci5tX2lzVHJhbnNpZW50ID0gbV9pc1RyYW5zaWVudDsKIAogICAgIHJldHVybiBpZGVudGlm
aWVyOwogfQpAQCAtNzMsNyArNzUsNyBAQCBTdHJpbmcgSURCRGF0YWJhc2VJZGVudGlmaWVyOjpk
YXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KGNvbnN0IFNlY3VyaXR5T3JpZwogI2lmICFM
T0dfRElTQUJMRUQKIFN0cmluZyBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmxvZ2dpbmdTdHJpbmco
KSBjb25zdAogewotICAgIHJldHVybiBtYWtlU3RyaW5nKG1fZGF0YWJhc2VOYW1lLCAiQCIsIG1f
b3JpZ2luLnRvcE9yaWdpbi5kZWJ1Z1N0cmluZygpLCAiOiIsIG1fb3JpZ2luLmNsaWVudE9yaWdp
bi5kZWJ1Z1N0cmluZygpKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhtX2RhdGFiYXNlTmFtZSwg
IkAiLCBtX29yaWdpbi50b3BPcmlnaW4uZGVidWdTdHJpbmcoKSwgIjoiLCBtX29yaWdpbi5jbGll
bnRPcmlnaW4uZGVidWdTdHJpbmcoKSwgbV9pc1RyYW5zaWVudCA/ICIsIHRyYW5zaWVudCIgOiAi
Iik7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaAppbmRleCBhYzQ5YmExMjcxMmFiZGYyMDQ0
NzJhN2IzMzQ2YjJmZWJhMGMxM2E4Li4zZWNhYjk3OTJkNGFhYTEzMGNhMTc1YjU5NmY5ODU1Yzc0
OTZkOWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUlkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAg
ewogICAgIH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIElEQkRhdGFiYXNlSWRlbnRpZmllcihjb25z
dCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3BlbmluZ09yaWdp
biwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgbWFpbkZyYW1lT3JpZ2luKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBJREJEYXRhYmFzZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIFNl
Y3VyaXR5T3JpZ2luRGF0YSYmIG9wZW5pbmdPcmlnaW4sIFNlY3VyaXR5T3JpZ2luRGF0YSYmIG1h
aW5GcmFtZU9yaWdpbiwgYm9vbCBpc1RyYW5zaWVudCA9IGZhbHNlKTsKIAogICAgIElEQkRhdGFi
YXNlSWRlbnRpZmllciBpc29sYXRlZENvcHkoKSBjb25zdDsKIApAQCAtNTcsOCArNTcsOSBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICB1bnNpZ25lZCBuYW1lSGFzaCA9IFN0cmluZ0hhc2g6Omhh
c2gobV9kYXRhYmFzZU5hbWUpOwogICAgICAgICB1bnNpZ25lZCBvcmlnaW5IYXNoID0gbV9vcmln
aW4uaGFzaCgpOworICAgICAgICB1bnNpZ25lZCB0cmFuc2llbnRIYXNoID0gbV9pc1RyYW5zaWVu
dDsKIAotICAgICAgICB1bnNpZ25lZCBoYXNoQ29kZXNbMl0gPSB7IG5hbWVIYXNoLCBvcmlnaW5I
YXNoIH07CisgICAgICAgIHVuc2lnbmVkIGhhc2hDb2Rlc1szXSA9IHsgbmFtZUhhc2gsIG9yaWdp
bkhhc2gsIHRyYW5zaWVudEhhc2ggfTsKICAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFz
aE1lbW9yeTxzaXplb2YoaGFzaENvZGVzKT4oaGFzaENvZGVzKTsKICAgICB9CiAKQEAgLTc1LDEx
ICs3NiwxMiBAQCBwdWJsaWM6CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSURCRGF0YWJh
c2VJZGVudGlmaWVyJiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBvdGhlci5t
X2RhdGFiYXNlTmFtZSA9PSBtX2RhdGFiYXNlTmFtZSAmJiBvdGhlci5tX29yaWdpbiA9PSBtX29y
aWdpbjsKKyAgICAgICAgcmV0dXJuIG90aGVyLm1fZGF0YWJhc2VOYW1lID09IG1fZGF0YWJhc2VO
YW1lICYmIG90aGVyLm1fb3JpZ2luID09IG1fb3JpZ2luICYmIG90aGVyLm1faXNUcmFuc2llbnQg
PT0gbV9pc1RyYW5zaWVudDsKICAgICB9CiAKICAgICBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2VOYW1lOyB9CiAgICAgY29uc3QgQ2xpZW50T3Jp
Z2luJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQorICAgIGJvb2wgaXNUcmFu
c2llbnQoKSBjb25zdCB7IHJldHVybiBtX2lzVHJhbnNpZW50OyB9CiAKICAgICBTdHJpbmcgZGF0
YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChjb25zdCBTdHJpbmcmIHJvb3REaXJlY3Rvcnks
IGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZz0idjEiKSBjb25zdDsKICAgICBzdGF0aWMgU3Ry
aW5nIGRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiB0b3BMZXZlbE9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcGVuaW5nT3Jp
Z2luLCBjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0
cmluZyk7CkBAIC05Niw2ICs5OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1f
ZGF0YWJhc2VOYW1lOwogICAgIENsaWVudE9yaWdpbiBtX29yaWdpbjsKKyAgICBib29sIG1faXNU
cmFuc2llbnQgeyBmYWxzZSB9OwogfTsKIAogc3RydWN0IElEQkRhdGFiYXNlSWRlbnRpZmllckhh
c2ggewpAQCAtMTEzLDcgKzExNiw3IEBAIHN0cnVjdCBJREJEYXRhYmFzZUlkZW50aWZpZXJIYXNo
VHJhaXRzIDogV1RGOjpTaW1wbGVDbGFzc0hhc2hUcmFpdHM8SURCRGF0YWJhc2VJCiB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgbV9kYXRhYmFzZU5hbWUgPDwg
bV9vcmlnaW47CisgICAgZW5jb2RlciA8PCBtX2RhdGFiYXNlTmFtZSA8PCBtX29yaWdpbiA8PCBt
X2lzVHJhbnNpZW50OwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtMTI5LDkgKzEz
MiwxNSBAQCBPcHRpb25hbDxJREJEYXRhYmFzZUlkZW50aWZpZXI+IElEQkRhdGFiYXNlSWRlbnRp
Zmllcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFvcmlnaW4pCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAKKyAgICBPcHRpb25hbDxib29sPiBpc1RyYW5zaWVudDsK
KyAgICBkZWNvZGVyID4+IGlzVHJhbnNpZW50OworICAgIGlmICghaXNUcmFuc2llbnQpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgaWRl
bnRpZmllcjsKICAgICBpZGVudGlmaWVyLm1fZGF0YWJhc2VOYW1lID0gV1RGTW92ZSgqZGF0YWJh
c2VOYW1lKTsgLy8gRklYTUU6IFdoZW4gZGVjb2RpbmcgZnJvbSBJUEMsIGRhdGFiYXNlTmFtZSBj
YW4gYmUgbnVsbCwgYW5kIHRoZSBub24tZW1wdHkgY29uc3RydWN0b3IgYXNzZXJ0cyB0aGF0IHRo
aXMgaXMgbm90IHRoZSBjYXNlLgogICAgIGlkZW50aWZpZXIubV9vcmlnaW4gPSBXVEZNb3ZlKCpv
cmlnaW4pOworICAgIGlkZW50aWZpZXIubV9pc1RyYW5zaWVudCA9ICppc1RyYW5zaWVudDsKICAg
ICByZXR1cm4gaWRlbnRpZmllcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAppbmRleCBhNDg3MjdiMDAzYjQ4Njc3NmUwMWY1Yjc0ODI2
ZDU2NTUzNGJjYmMzLi45YzFhNTJjMGM5NWFhMTg3OTRkZjc5OGI4OTZkMTVlNGFlMmQwMTlkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcApA
QCAtNTMsMTAgKzUzLDYgQEAgc3RhdGljIGJvb2wgc2hvdWxkVGhyb3dTZWN1cml0eUV4Y2VwdGlv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAgICAgICBpZiAoIWRvY3VtZW50
LnBhZ2UoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLQotICAgIGlmICghY29u
dGV4dC5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NEYXRhYmFzZShjb250ZXh0LnRvcE9yaWdp
bigpKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAg
LTkxLDcgKzg3LDggQEAgRXhjZXB0aW9uT3I8UmVmPElEQk9wZW5EQlJlcXVlc3Q+PiBJREJGYWN0
b3J5OjpvcGVuSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGUKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJJREJGYWN0b3J5Lm9wZW4oKSBjYWxsZWQgaW4gYW4g
aW52YWxpZCBzZWN1cml0eSBjb250ZXh0Il9zIH07CiAKICAgICBBU1NFUlQoY29udGV4dC5zZWN1
cml0eU9yaWdpbigpKTsKLSAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgZGF0YWJhc2VJZGVudGlm
aWVyKG5hbWUsIFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKS0+
ZGF0YSgpIH0sIFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0YSgp
IH0pOworICAgIGJvb2wgaXNUcmFuc2llbnQgPSAhY29udGV4dC5zZWN1cml0eU9yaWdpbigpLT5j
YW5BY2Nlc3NEYXRhYmFzZShjb250ZXh0LnRvcE9yaWdpbigpKTsKKyAgICBJREJEYXRhYmFzZUlk
ZW50aWZpZXIgZGF0YWJhc2VJZGVudGlmaWVyKG5hbWUsIFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNv
bnRleHQuc2VjdXJpdHlPcmlnaW4oKS0+ZGF0YSgpIH0sIFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNv
bnRleHQudG9wT3JpZ2luKCkuZGF0YSgpIH0sIGlzVHJhbnNpZW50KTsKICAgICBpZiAoIWRhdGFi
YXNlSWRlbnRpZmllci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBl
RXJyb3IsICJJREJGYWN0b3J5Lm9wZW4oKSBjYWxsZWQgd2l0aCBhbiBpbnZhbGlkIHNlY3VyaXR5
IG9yaWdpbiJfcyB9OwogCkBAIC0xMTEsNyArMTA4LDggQEAgRXhjZXB0aW9uT3I8UmVmPElEQk9w
ZW5EQlJlcXVlc3Q+PiBJREJGYWN0b3J5OjpkZWxldGVEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25D
b24KICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJJREJGYWN0b3J5
LmRlbGV0ZURhdGFiYXNlKCkgY2FsbGVkIGluIGFuIGludmFsaWQgc2VjdXJpdHkgY29udGV4dCJf
cyB9OwogCiAgICAgQVNTRVJUKGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSk7Ci0gICAgSURCRGF0
YWJhc2VJZGVudGlmaWVyIGRhdGFiYXNlSWRlbnRpZmllcihuYW1lLCBTZWN1cml0eU9yaWdpbkRh
dGEgeyBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCktPmRhdGEoKSB9LCBTZWN1cml0eU9yaWdpbkRh
dGEgeyBjb250ZXh0LnRvcE9yaWdpbigpLmRhdGEoKSB9KTsKKyAgICBib29sIGlzVHJhbnNpZW50
ID0gIWNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJhc2UoY29udGV4dC50
b3BPcmlnaW4oKSk7CisgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIGRhdGFiYXNlSWRlbnRpZmll
cihuYW1lLCBTZWN1cml0eU9yaWdpbkRhdGEgeyBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCktPmRh
dGEoKSB9LCBTZWN1cml0eU9yaWdpbkRhdGEgeyBjb250ZXh0LnRvcE9yaWdpbigpLmRhdGEoKSB9
LCBpc1RyYW5zaWVudCk7CiAgICAgaWYgKCFkYXRhYmFzZUlkZW50aWZpZXIuaXNWYWxpZCgpKQog
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiSURCRmFjdG9yeS5kZWxldGVE
YXRhYmFzZSgpIGNhbGxlZCB3aXRoIGFuIGludmFsaWQgc2VjdXJpdHkgb3JpZ2luIl9zIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cnZlci5jcHAKaW5kZXggMWE5N2M3MTQ4MThkYzE5YTM0ZTE5MWVjZDhlYTg1NDkwMDk4OTQwNC4u
MzAyZDFhNzAxMmM0YTlmMGI3MmVkNWIwZjRjNzAxY2VlNDMwMDZlYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAg
LTEzMyw2ICsxMzMsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkJhY2tpbmdTdG9yZT4gSURCU2Vy
dmVyOjpjcmVhdGVCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2UKICAgICBpZiAoZGF0YWJh
c2VEaXJlY3RvcnlQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVt
b3J5SURCQmFja2luZ1N0b3JlPihtX3Nlc3Npb25JRCwgaWRlbnRpZmllcik7CiAKKyAgICBBU1NF
UlQoIW1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOworICAgIGlmIChpZGVudGlmaWVyLmlzVHJh
bnNpZW50KCkpCisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lbW9yeUlEQkJhY2tpbmdTdG9y
ZT4obV9zZXNzaW9uSUQsIGlkZW50aWZpZXIpOworCiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1FM
aXRlSURCQmFja2luZ1N0b3JlPihtX3Nlc3Npb25JRCwgaWRlbnRpZmllciwgZGF0YWJhc2VEaXJl
Y3RvcnlQYXRoKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IGZlOTU0ZTg1NzcxMWQxZGNmNmFjNTA3YzFjOTdiODdjMmI2NDg4YmMuLmVl
YWUyODI0YmVmZmYxODY0YWVmNGFkN2MxY2VkMzZlNjRlMGUzZDYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0w
Ny0yMCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGUuY29tPgorCisgICAgICAgIEFsbG93IElu
ZGV4ZWREQiBpbiB0aGlyZC1wYXJ0eSBmcmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDU4MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjEy
Nzg0ODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1t
OgorICAgICAgICAoY2F0Y2gpOgorCiAyMDIwLTA3LTIwICBBYWthc2ggSmFpbiAgPGFha2FzaF9q
YWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbZXdzXSBVc2UgLXEgd2hpbGUgdW56aXBwaW5nIGxh
eW91dC10ZXN0LXJlc3VsdHMuemlwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbQppbmRleCBmNDg4
MGExOGRkOTIzYmIxNmYwMTEwNzI1OTRiZjczYWI5YmRiYWE0Li5hMTM5YjU0MDA3OTNlMjY4MTRk
MWJlMmY5NGFmMDU1ZThjNDU0M2Q5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0KQEAgLTI3
LDYgKzI3LDcgQEAKIAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRl
c3QuaCIKKyNpbXBvcnQgIlRlc3RVUkxTY2hlbWVIYW5kbGVyLmgiCiAjaW1wb3J0IDxXZWJLaXQv
V2ViS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KICNpbXBv
cnQgPFdlYktpdC9XS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaD4KQEAgLTE3OSwzICsx
ODAsNzkgQEAgVEVTVChJbmRleGVkREIsIEluZGV4ZWREQkRhdGFSZW1vdmFsKQogICAgIH1dOwog
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKIH0KKworc3Rh
dGljIE5TU3RyaW5nICptYWluRnJhbWVTdHJpbmcgPSBAIjxzY3JpcHQ+IGZ1bmN0aW9uIHBvc3RS
ZXN1bHQoZXZlbnQpIHsgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIu
cG9zdE1lc3NhZ2UoZXZlbnQuZGF0YSk7IH0gYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHBv
c3RSZXN1bHQsIGZhbHNlKTsgPC9zY3JpcHQ+PGlmcmFtZSBzcmM9J2lmcmFtZTovLyc+IjsKKwor
c3RhdGljIGNvbnN0IGNoYXIqIGlmcmFtZUJ5dGVzID0gUiJURVNUUkVTT1VSQ0UoCis8c2NyaXB0
PgordHJ5IHsKKyAgICB2YXIgcmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbignSW5kZXhl
ZERCVGhpcmRQYXJ0eUhhc0FjY2VzcycpOworICAgIHZhciBkYiA9IG51bGw7CisgICAgcmVxdWVz
dC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7CisgICAgICAgIHZhciBvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdUZXN0T2JqZWN0U3RvcmUnKTsKKyAgICAgICAgdmFyIHB1dFJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5wdXQoJ1Rlc3RWYWx1ZScsICdUZXN0S2V5Jyk7CisgICAgICAgIHB1dFJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIHBhcmVudC5wb3N0TWVz
c2FnZSgnZGF0YWJhc2UgY3JlYXRlZCAtIHB1dCBpdGVtIHN1Y2Nlc3MnLCAnKicpOworICAgICAg
ICB9CisgICAgICAgIHB1dFJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ICAgICAgICBwYXJlbnQucG9zdE1lc3NhZ2UoJ2RhdGFiYXNlIGNyZWF0ZWQgLSBwdXQgaXRlbSBl
cnJvcjogJyArIGV2ZW50LnRhcmdldC5lcnJvci5uYW1lICsgJyAtICcgKyBldmVudC50YXJnZXQu
ZXJyb3IubWVzc2FnZSwgJyonKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGlmIChkYikKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgICAgICB2YXIgb2Jq
ZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbihbJ1Rlc3RPYmplY3RTdG9yZSddKS5vYmplY3RTdG9y
ZSgnVGVzdE9iamVjdFN0b3JlJyk7CisgICAgICAgIHZhciBnZXRSZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUuZ2V0KCdUZXN0S2V5Jyk7CisgICAgICAgIGdldFJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICAgICAgICAgIHBhcmVudC5wb3N0TWVzc2FnZSgnZGF0YWJhc2UgZXhp
c3RzIC0gZ2V0IGl0ZW0gc3VjY2VzczogJyArIGV2ZW50LnRhcmdldC5yZXN1bHQsICcqJyk7Cisg
ICAgICAgIH0KKyAgICAgICAgZ2V0UmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsK
KyAgICAgICAgICAgIHBhcmVudC5wb3N0TWVzc2FnZSgnZGF0YWJhc2UgZXhpc3RzIC0gZ2V0IGl0
ZW0gZXJyb3I6ICcgKyBldmVudC50YXJnZXQuZXJyb3IubmFtZSArICcgLSAnICsgZXZlbnQudGFy
Z2V0LmVycm9yLm1lc3NhZ2UsICcqJyk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmVxdWVzdC5v
bmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgcGFyZW50LnBvc3RNZXNzYWdlKCdk
YXRhYmFzZSBlcnJvcjogJyArIGV2ZW50LnRhcmdldC5lcnJvci5uYW1lICsgJyAtICcgKyBldmVu
dC50YXJnZXQuZXJyb3IubWVzc2FnZSwgJyonKTsKKyAgICB9Cit9IGNhdGNoKGVycikgeworICAg
IHBhcmVudC5wb3N0TWVzc2FnZSgnZGF0YWJhc2UgZXJyb3I6ICcgKyBlcnIubmFtZSArICcgLSAn
ICsgZXJyLm1lc3NhZ2UsICcqJyk7Cit9Cis8L3NjcmlwdD4KKylURVNUUkVTT1VSQ0UiOworCitU
RVNUKEluZGV4ZWREQiwgSW5kZXhlZERCVGhpcmRQYXJ0eUhhc0FjY2VzcykKK3sKKyAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOworICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tJbmRleGVkREJNZXNzYWdlSGFu
ZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRy
b2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RI
YW5kbGVyIl07CisgICAgYXV0byBzY2hlbWVIYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RVUkxTY2hl
bWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW3NjaGVtZUhhbmRsZXIgc2V0U3RhcnRVUkxT
Y2hlbWVUYXNrSGFuZGxlcjpeKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2sp
IHsKKyAgICAgICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9j
XSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBl
Y3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOworICAgICAgICBbdGFz
ayBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UuZ2V0KCldOworICAgICAgICBbdGFzayBkaWRS
ZWNlaXZlRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6aWZyYW1lQnl0ZXMgbGVuZ3RoOnN0cmxl
bihpZnJhbWVCeXRlcyldXTsKKyAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKKyAgICB9XTsKKyAg
ICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkg
Zm9yVVJMU2NoZW1lOkAiaWZyYW1lIl07CisKKyAgICBhdXRvIGxvYWRUZXN0UGFnZUluV2ViVmll
dyA9IF4oV0tXZWJWaWV3ICp3ZWJWaWV3LCBOU1N0cmluZyAqZXhwZWN0ZWRSZXN1bHQpIHsKKyAg
ICAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6bWFpbkZyYW1lU3RyaW5nIGJhc2VVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZyJdXTsKKyAgICAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAgICAgICByZWNl
aXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGV4cGVj
dGVkUmVzdWx0LCAoTlNTdHJpbmcgKilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOworICAgIH07
CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbi5nZXQoKV0pOworICAgIGxvYWRUZXN0UGFnZUluV2ViVmlldyh3ZWJWaWV3LmdldCgpLCBA
ImRhdGFiYXNlIGNyZWF0ZWQgLSBwdXQgaXRlbSBzdWNjZXNzIik7CisKKyAgICBhdXRvIHNlY29u
ZFdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OworICAgIGxvYWRUZXN0UGFnZUluV2ViVmlldyhzZWNvbmRXZWJWaWV3LmdldCgpLCBAImRhdGFi
YXNlIGV4aXN0cyAtIGdldCBpdGVtIHN1Y2Nlc3M6IFRlc3RWYWx1ZSIpOworCisgICAgd2ViVmll
dyA9IG5pbDsKKyAgICBzZWNvbmRXZWJWaWV3ID0gbmlsOworICAgIFtjb25maWd1cmF0aW9uLmdl
dCgpLnByb2Nlc3NQb29sIF90ZXJtaW5hdGVOZXR3b3JrUHJvY2Vzc107CisKKyAgICAvLyBUaGly
ZC1wYXJ0eSBJREIgc3RvcmFnZSBpcyBzdG9yZWQgaW4gdGhlIG1lbW9yeSBvZiBuZXR3b3JrIHBy
b2Nlc3MuCisgICAgYXV0byB0aGlyZFdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGxvYWRUZXN0UGFnZUluV2ViVmlldyh0aGlyZFdl
YlZpZXcuZ2V0KCksIEAiZGF0YWJhc2UgY3JlYXRlZCAtIHB1dCBpdGVtIHN1Y2Nlc3MiKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404845</attachid>
            <date>2020-07-21 11:49:58 -0700</date>
            <delta_ts>2020-07-21 15:24:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214583-20200721114957.patch</filename>
            <type>text/plain</type>
            <size>21567</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWU1ZTczZDc1YTg3MzY4
MDkzZGUyMjZhN2YyYTVkMTg4NTVlMjVhZC4uZDg3ZTYzMzIzNjlkYjQ4ODE1MTNhNmJjZDMxMDQw
OTgzYWNiNGJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIwLTA3LTIxICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgQWxsb3cgSW5kZXhlZERCIGlu
IHRoaXJkLXBhcnR5IGZyYW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE0NTgzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTI3ODQ4Nz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXRjaCBJbmRl
eGVkREIncyBiZWhhdmlvciB3aXRoIGxvY2FsU3RvcmFnZS4gVGhpcmQtcGFydHkgaWZyYW1lcyBu
b3cgaGF2ZSBhY2Nlc3MgdG8gSW5kZXhlZERCIHdpdGggcGFydGl0aW9uZWQKKyAgICAgICAgaW4t
bWVtb3J5IHN0b3JhZ2UuCisKKyAgICAgICAgQVBJIFRlc3Q6IEluZGV4ZWREQi5JbmRleGVkREJU
aGlyZFBhcnR5SGFzQWNjZXNzCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUlkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlm
aWVyOjpJREJEYXRhYmFzZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6bV9pc1RyYW5z
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI6Omlzb2xhdGVk
Q29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI6Omxv
Z2dpbmdTdHJpbmcgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlSWRlbnRpZmllci5oOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVy
OjpoYXNoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllcjo6
b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZp
ZXI6OmlzVHJhbnNpZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlSWRl
bnRpZmllcjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlSWRl
bnRpZmllcjo6ZGVjb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFRocm93U2VjdXJpdHlFeGNlcHRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeTo6b3BlbkludGVybmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkZhY3Rvcnk6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6SURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9N
V2luZG93V2ViRGF0YWJhc2U6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgICogcGFnZS9TZWN1cml0
eU9yaWdpbi5oOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vzc0Rh
dGFiYXNlIGNvbnN0KToKKwogMjAyMC0wNy0yMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KIAogICAgICAgICBbQ29jb2FdIEFkb3B0IFZUUmVnaXN0ZXJTdXBwbGVtZW50YWxWaWRl
b0RlY29kZXJJZkF2YWlsYWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKaW5kZXggNTU1YjBjMTgxZWNi
NjE4YTZkZjQ0MTgzMzA3MmFkZThkNjRkNTY1YS4uYTA2YTgwYmQ1MDA4NWZkM2Y0Y2JmNGE1NGIx
YmQ4ZTQwOWE0OGNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwCkBAIC0zNSw5ICszNSwxMCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUlEQkRhdGFiYXNlSWRlbnRpZmllcjo6SURCRGF0YWJh
c2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBTZWN1cml0eU9yaWdpbkRh
dGEmJiBvcGVuaW5nT3JpZ2luLCBTZWN1cml0eU9yaWdpbkRhdGEmJiBtYWluRnJhbWVPcmlnaW4p
CitJREJEYXRhYmFzZUlkZW50aWZpZXI6OklEQkRhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJp
bmcmIGRhdGFiYXNlTmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3BlbmluZ09yaWdpbiwgU2Vj
dXJpdHlPcmlnaW5EYXRhJiYgbWFpbkZyYW1lT3JpZ2luLCBib29sIGlzVHJhbnNpZW50KQogICAg
IDogbV9kYXRhYmFzZU5hbWUoZGF0YWJhc2VOYW1lKQogICAgICwgbV9vcmlnaW4geyBXVEZNb3Zl
KG9wZW5pbmdPcmlnaW4pLCBXVEZNb3ZlKG1haW5GcmFtZU9yaWdpbikgfQorICAgICwgbV9pc1Ry
YW5zaWVudChpc1RyYW5zaWVudCkKIHsKICAgICAvLyBUaGUgZW1wdHkgc3RyaW5nIGlzIGEgdmFs
aWQgZGF0YWJhc2UgbmFtZSwgYnV0IGEgbnVsbCBzdHJpbmcgaXMgbm90LgogICAgIEFTU0VSVCgh
ZGF0YWJhc2VOYW1lLmlzTnVsbCgpKTsKQEAgLTQ5LDYgKzUwLDcgQEAgSURCRGF0YWJhc2VJZGVu
dGlmaWVyIElEQkRhdGFiYXNlSWRlbnRpZmllcjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIAogICAg
IGlkZW50aWZpZXIubV9kYXRhYmFzZU5hbWUgPSBtX2RhdGFiYXNlTmFtZS5pc29sYXRlZENvcHko
KTsKICAgICBpZGVudGlmaWVyLm1fb3JpZ2luID0gbV9vcmlnaW4uaXNvbGF0ZWRDb3B5KCk7Cisg
ICAgaWRlbnRpZmllci5tX2lzVHJhbnNpZW50ID0gbV9pc1RyYW5zaWVudDsKIAogICAgIHJldHVy
biBpZGVudGlmaWVyOwogfQpAQCAtNzMsNyArNzUsNyBAQCBTdHJpbmcgSURCRGF0YWJhc2VJZGVu
dGlmaWVyOjpkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KGNvbnN0IFNlY3VyaXR5T3Jp
ZwogI2lmICFMT0dfRElTQUJMRUQKIFN0cmluZyBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmxvZ2dp
bmdTdHJpbmcoKSBjb25zdAogewotICAgIHJldHVybiBtYWtlU3RyaW5nKG1fZGF0YWJhc2VOYW1l
LCAiQCIsIG1fb3JpZ2luLnRvcE9yaWdpbi5kZWJ1Z1N0cmluZygpLCAiOiIsIG1fb3JpZ2luLmNs
aWVudE9yaWdpbi5kZWJ1Z1N0cmluZygpKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhtX2RhdGFi
YXNlTmFtZSwgIkAiLCBtX29yaWdpbi50b3BPcmlnaW4uZGVidWdTdHJpbmcoKSwgIjoiLCBtX29y
aWdpbi5jbGllbnRPcmlnaW4uZGVidWdTdHJpbmcoKSwgbV9pc1RyYW5zaWVudCA/ICIsIHRyYW5z
aWVudCIgOiAiIik7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaAppbmRleCBhYzQ5YmExMjcx
MmFiZGYyMDQ0NzJhN2IzMzQ2YjJmZWJhMGMxM2E4Li4zZWNhYjk3OTJkNGFhYTEzMGNhMTc1YjU5
NmY5ODU1Yzc0OTZkOWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgIH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIElEQkRhdGFiYXNlSWRlbnRp
Zmllcihjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3Bl
bmluZ09yaWdpbiwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgbWFpbkZyYW1lT3JpZ2luKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBJREJEYXRhYmFzZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZU5hbWUsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIG9wZW5pbmdPcmlnaW4sIFNlY3VyaXR5T3JpZ2lu
RGF0YSYmIG1haW5GcmFtZU9yaWdpbiwgYm9vbCBpc1RyYW5zaWVudCA9IGZhbHNlKTsKIAogICAg
IElEQkRhdGFiYXNlSWRlbnRpZmllciBpc29sYXRlZENvcHkoKSBjb25zdDsKIApAQCAtNTcsOCAr
NTcsOSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICB1bnNpZ25lZCBuYW1lSGFzaCA9IFN0cmlu
Z0hhc2g6Omhhc2gobV9kYXRhYmFzZU5hbWUpOwogICAgICAgICB1bnNpZ25lZCBvcmlnaW5IYXNo
ID0gbV9vcmlnaW4uaGFzaCgpOworICAgICAgICB1bnNpZ25lZCB0cmFuc2llbnRIYXNoID0gbV9p
c1RyYW5zaWVudDsKIAotICAgICAgICB1bnNpZ25lZCBoYXNoQ29kZXNbMl0gPSB7IG5hbWVIYXNo
LCBvcmlnaW5IYXNoIH07CisgICAgICAgIHVuc2lnbmVkIGhhc2hDb2Rlc1szXSA9IHsgbmFtZUhh
c2gsIG9yaWdpbkhhc2gsIHRyYW5zaWVudEhhc2ggfTsKICAgICAgICAgcmV0dXJuIFN0cmluZ0hh
c2hlcjo6aGFzaE1lbW9yeTxzaXplb2YoaGFzaENvZGVzKT4oaGFzaENvZGVzKTsKICAgICB9CiAK
QEAgLTc1LDExICs3NiwxMiBAQCBwdWJsaWM6CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
SURCRGF0YWJhc2VJZGVudGlmaWVyJiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVy
biBvdGhlci5tX2RhdGFiYXNlTmFtZSA9PSBtX2RhdGFiYXNlTmFtZSAmJiBvdGhlci5tX29yaWdp
biA9PSBtX29yaWdpbjsKKyAgICAgICAgcmV0dXJuIG90aGVyLm1fZGF0YWJhc2VOYW1lID09IG1f
ZGF0YWJhc2VOYW1lICYmIG90aGVyLm1fb3JpZ2luID09IG1fb3JpZ2luICYmIG90aGVyLm1faXNU
cmFuc2llbnQgPT0gbV9pc1RyYW5zaWVudDsKICAgICB9CiAKICAgICBjb25zdCBTdHJpbmcmIGRh
dGFiYXNlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2VOYW1lOyB9CiAgICAgY29uc3Qg
Q2xpZW50T3JpZ2luJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQorICAgIGJv
b2wgaXNUcmFuc2llbnQoKSBjb25zdCB7IHJldHVybiBtX2lzVHJhbnNpZW50OyB9CiAKICAgICBT
dHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChjb25zdCBTdHJpbmcmIHJvb3RE
aXJlY3RvcnksIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZz0idjEiKSBjb25zdDsKICAgICBz
dGF0aWMgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiB0b3BMZXZlbE9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBv
cGVuaW5nT3JpZ2luLCBjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFN0cmluZyYg
dmVyc2lvblN0cmluZyk7CkBAIC05Niw2ICs5OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
U3RyaW5nIG1fZGF0YWJhc2VOYW1lOwogICAgIENsaWVudE9yaWdpbiBtX29yaWdpbjsKKyAgICBi
b29sIG1faXNUcmFuc2llbnQgeyBmYWxzZSB9OwogfTsKIAogc3RydWN0IElEQkRhdGFiYXNlSWRl
bnRpZmllckhhc2ggewpAQCAtMTEzLDcgKzExNiw3IEBAIHN0cnVjdCBJREJEYXRhYmFzZUlkZW50
aWZpZXJIYXNoVHJhaXRzIDogV1RGOjpTaW1wbGVDbGFzc0hhc2hUcmFpdHM8SURCRGF0YWJhc2VJ
CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgbV9kYXRhYmFz
ZU5hbWUgPDwgbV9vcmlnaW47CisgICAgZW5jb2RlciA8PCBtX2RhdGFiYXNlTmFtZSA8PCBtX29y
aWdpbiA8PCBtX2lzVHJhbnNpZW50OwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAt
MTI5LDkgKzEzMiwxNSBAQCBPcHRpb25hbDxJREJEYXRhYmFzZUlkZW50aWZpZXI+IElEQkRhdGFi
YXNlSWRlbnRpZmllcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFvcmlnaW4p
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKKyAgICBPcHRpb25hbDxib29sPiBpc1Ry
YW5zaWVudDsKKyAgICBkZWNvZGVyID4+IGlzVHJhbnNpZW50OworICAgIGlmICghaXNUcmFuc2ll
bnQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAgICBJREJEYXRhYmFzZUlkZW50
aWZpZXIgaWRlbnRpZmllcjsKICAgICBpZGVudGlmaWVyLm1fZGF0YWJhc2VOYW1lID0gV1RGTW92
ZSgqZGF0YWJhc2VOYW1lKTsgLy8gRklYTUU6IFdoZW4gZGVjb2RpbmcgZnJvbSBJUEMsIGRhdGFi
YXNlTmFtZSBjYW4gYmUgbnVsbCwgYW5kIHRoZSBub24tZW1wdHkgY29uc3RydWN0b3IgYXNzZXJ0
cyB0aGF0IHRoaXMgaXMgbm90IHRoZSBjYXNlLgogICAgIGlkZW50aWZpZXIubV9vcmlnaW4gPSBX
VEZNb3ZlKCpvcmlnaW4pOworICAgIGlkZW50aWZpZXIubV9pc1RyYW5zaWVudCA9ICppc1RyYW5z
aWVudDsKICAgICByZXR1cm4gaWRlbnRpZmllcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAppbmRleCBhNDg3MjdiMDAzYjQ4Njc3NmUw
MWY1Yjc0ODI2ZDU2NTUzNGJjYmMzLi4zMDc3NWVjODk1MDVlNWNmMzI1ZTBmZTE0NzFlOGIzY2Zk
ZjAyOWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0
b3J5LmNwcApAQCAtNTQsNyArNTQsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRUaHJvd1NlY3VyaXR5
RXhjZXB0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoIWNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKS0+
Y2FuQWNjZXNzRGF0YWJhc2UoY29udGV4dC50b3BPcmlnaW4oKSkpCisgICAgaWYgKCFjb250ZXh0
LnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0RhdGFiYXNlKG51bGxwdHIpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTkxLDcgKzkxLDggQEAgRXhjZXB0
aW9uT3I8UmVmPElEQk9wZW5EQlJlcXVlc3Q+PiBJREJGYWN0b3J5OjpvcGVuSW50ZXJuYWwoU2Ny
aXB0RXhlY3V0aW9uQ29udGUKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJy
b3IsICJJREJGYWN0b3J5Lm9wZW4oKSBjYWxsZWQgaW4gYW4gaW52YWxpZCBzZWN1cml0eSBjb250
ZXh0Il9zIH07CiAKICAgICBBU1NFUlQoY29udGV4dC5zZWN1cml0eU9yaWdpbigpKTsKLSAgICBJ
REJEYXRhYmFzZUlkZW50aWZpZXIgZGF0YWJhc2VJZGVudGlmaWVyKG5hbWUsIFNlY3VyaXR5T3Jp
Z2luRGF0YSB7IGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKS0+ZGF0YSgpIH0sIFNlY3VyaXR5T3Jp
Z2luRGF0YSB7IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0YSgpIH0pOworICAgIGJvb2wgaXNUcmFu
c2llbnQgPSAhY29udGV4dC5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NEYXRhYmFzZSgmY29u
dGV4dC50b3BPcmlnaW4oKSk7CisgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIGRhdGFiYXNlSWRl
bnRpZmllcihuYW1lLCBTZWN1cml0eU9yaWdpbkRhdGEgeyBjb250ZXh0LnNlY3VyaXR5T3JpZ2lu
KCktPmRhdGEoKSB9LCBTZWN1cml0eU9yaWdpbkRhdGEgeyBjb250ZXh0LnRvcE9yaWdpbigpLmRh
dGEoKSB9LCBpc1RyYW5zaWVudCk7CiAgICAgaWYgKCFkYXRhYmFzZUlkZW50aWZpZXIuaXNWYWxp
ZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiSURCRmFjdG9yeS5v
cGVuKCkgY2FsbGVkIHdpdGggYW4gaW52YWxpZCBzZWN1cml0eSBvcmlnaW4iX3MgfTsKIApAQCAt
MTExLDcgKzExMiw4IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJPcGVuREJSZXF1ZXN0Pj4gSURCRmFj
dG9yeTo6ZGVsZXRlRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29uCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBTZWN1cml0eUVycm9yLCAiSURCRmFjdG9yeS5kZWxldGVEYXRhYmFzZSgpIGNh
bGxlZCBpbiBhbiBpbnZhbGlkIHNlY3VyaXR5IGNvbnRleHQiX3MgfTsKIAogICAgIEFTU0VSVChj
b250ZXh0LnNlY3VyaXR5T3JpZ2luKCkpOwotICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBkYXRh
YmFzZUlkZW50aWZpZXIobmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRhIHsgY29udGV4dC5zZWN1cml0
eU9yaWdpbigpLT5kYXRhKCkgfSwgU2VjdXJpdHlPcmlnaW5EYXRhIHsgY29udGV4dC50b3BPcmln
aW4oKS5kYXRhKCkgfSk7CisgICAgYm9vbCBpc1RyYW5zaWVudCA9ICFjb250ZXh0LnNlY3VyaXR5
T3JpZ2luKCktPmNhbkFjY2Vzc0RhdGFiYXNlKCZjb250ZXh0LnRvcE9yaWdpbigpKTsKKyAgICBJ
REJEYXRhYmFzZUlkZW50aWZpZXIgZGF0YWJhc2VJZGVudGlmaWVyKG5hbWUsIFNlY3VyaXR5T3Jp
Z2luRGF0YSB7IGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKS0+ZGF0YSgpIH0sIFNlY3VyaXR5T3Jp
Z2luRGF0YSB7IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0YSgpIH0sIGlzVHJhbnNpZW50KTsKICAg
ICBpZiAoIWRhdGFiYXNlSWRlbnRpZmllci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBUeXBlRXJyb3IsICJJREJGYWN0b3J5LmRlbGV0ZURhdGFiYXNlKCkgY2FsbGVkIHdp
dGggYW4gaW52YWxpZCBzZWN1cml0eSBvcmlnaW4iX3MgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcAppbmRleCAxYTk3
YzcxNDgxOGRjMTlhMzRlMTkxZWNkOGVhODU0OTAwOTg5NDA0Li4zMDJkMWE3MDEyYzRhOWYwYjcy
ZWQ1YjBmNGM3MDFjZWU0MzAwNmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcApAQCAtMTMzLDYgKzEzMywxMCBAQCBz
dGQ6OnVuaXF1ZV9wdHI8SURCQmFja2luZ1N0b3JlPiBJREJTZXJ2ZXI6OmNyZWF0ZUJhY2tpbmdT
dG9yZShjb25zdCBJREJEYXRhYmFzZQogICAgIGlmIChkYXRhYmFzZURpcmVjdG9yeVBhdGguaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZW1vcnlJREJCYWNraW5nU3RvcmU+
KG1fc2Vzc2lvbklELCBpZGVudGlmaWVyKTsKIAorICAgIEFTU0VSVCghbV9zZXNzaW9uSUQuaXNF
cGhlbWVyYWwoKSk7CisgICAgaWYgKGlkZW50aWZpZXIuaXNUcmFuc2llbnQoKSkKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihtX3Nlc3Npb25JRCwgaWRl
bnRpZmllcik7CisKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTUUxpdGVJREJCYWNraW5nU3RvcmU+
KG1fc2Vzc2lvbklELCBpZGVudGlmaWVyLCBkYXRhYmFzZURpcmVjdG9yeVBhdGgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRvd1dl
YkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2lu
ZG93V2ViRGF0YWJhc2UuY3BwCmluZGV4IDFjY2ZlYTYwMTJkNmVjNTU4MDU3OTNiZjQzYmMxNWYw
MDAzMGJmZDMuLjhhYzJhZDZhZjVlNGEzYmZmODRjMjY3NmMwZTI0ZTZiYmMyZjNiNWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0
YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2lu
ZG93V2ViRGF0YWJhc2UuY3BwCkBAIC00OCw3ICs0OCw3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxE
YXRhYmFzZT4+IERPTVdpbmRvd1dlYkRhdGFiYXNlOjpvcGVuRGF0YWJhc2UoRE9NV2luZG93JiB3
aW5kCiAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlN0b3Jh
Z2UsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIldlYiBTUUwgaXMgZGVwcmVjYXRlZC4gUGxlYXNl
IHVzZSBJbmRleGVkREIgaW5zdGVhZC4iKTsKIAogICAgIGF1dG8mIHNlY3VyaXR5T3JpZ2luID0g
ZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgaWYgKCFzZWN1cml0eU9yaWdpbi5jYW5B
Y2Nlc3NEYXRhYmFzZShkb2N1bWVudC0+dG9wT3JpZ2luKCkpKQorICAgIGlmICghc2VjdXJpdHlP
cmlnaW4uY2FuQWNjZXNzRGF0YWJhc2UoJmRvY3VtZW50LT50b3BPcmlnaW4oKSkpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yIH07CiAgICAgYXV0byByZXN1bHQgPSBt
YW5hZ2VyLm9wZW5EYXRhYmFzZSgqd2luZG93LmRvY3VtZW50KCksIG5hbWUsIHZlcnNpb24sIGRp
c3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplLCBXVEZNb3ZlKGNyZWF0aW9uQ2FsbGJhY2spKTsKICAg
ICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luLmgKaW5kZXggNzg2N2JjYzllZWJmZDFkOTdmNjc3YjA3MjQ5M2EwYmRkYjQwN2M0Ny4uMjA3
ZjhhOGFhNjM5MDg0MDRiMDAwMjQ0ODBhOWFlZTJkYzRiMjY5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW4uaApAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpIGNvbnN0OwogCi0gICAg
Ym9vbCBjYW5BY2Nlc3NEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luKSBj
b25zdCB7IHJldHVybiBjYW5BY2Nlc3NTdG9yYWdlKCZ0b3BPcmlnaW4pOyB9OworICAgIGJvb2wg
Y2FuQWNjZXNzRGF0YWJhc2UoY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbikgY29uc3Qg
eyByZXR1cm4gY2FuQWNjZXNzU3RvcmFnZSh0b3BPcmlnaW4pOyB9OwogICAgIGJvb2wgY2FuQWNj
ZXNzU2Vzc2lvblN0b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbikgY29uc3Qg
eyByZXR1cm4gY2FuQWNjZXNzU3RvcmFnZSgmdG9wT3JpZ2luLCBBbHdheXNBbGxvd0Zyb21UaGly
ZFBhcnR5KTsgfQogICAgIGJvb2wgY2FuQWNjZXNzTG9jYWxTdG9yYWdlKGNvbnN0IFNlY3VyaXR5
T3JpZ2luKiB0b3BPcmlnaW4pIGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UodG9wT3Jp
Z2luKTsgfTsKICAgICBib29sIGNhbkFjY2Vzc1BsdWdpblN0b3JhZ2UoY29uc3QgU2VjdXJpdHlP
cmlnaW4mIHRvcE9yaWdpbikgY29uc3QgeyByZXR1cm4gY2FuQWNjZXNzU3RvcmFnZSgmdG9wT3Jp
Z2luKTsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDc4ZTdmNTdmNWQ5NzFlNDVhMGMzMjI1NWFlMGMyOGVlNTQ1MDUyNWIuLmNkNjVhOWE2ZTgw
ZTE0YjJhMGI5NGFlYWIyMmQzZTY4OTQ4MzQ4NzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wNy0yMSAgU2lo
dWkgTGl1ICA8c2lodWlfbGl1QGFwcGUuY29tPgorCisgICAgICAgIEFsbG93IEluZGV4ZWREQiBp
biB0aGlyZC1wYXJ0eSBmcmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNDU4MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjEyNzg0ODc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tOgorICAgICAg
ICAoY2F0Y2gpOgorCiAyMDIwLTA3LTIxICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBGaXggSVRQIGRhdGEgc3VtbWFyeSB3aGVuIHVzaW5nIHRo
ZSBtZW1vcnkgc3RvcmUgYW5kIGJsb2NraW5nIGFsbCB0aGlyZC1wYXJ0eSBjb29raWVzCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBl
cnNpc3RlbmNlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRl
eGVkREJQZXJzaXN0ZW5jZS5tbQppbmRleCBmNDg4MGExOGRkOTIzYmIxNmYwMTEwNzI1OTRiZjcz
YWI5YmRiYWE0Li5hMTM5YjU0MDA3OTNlMjY4MTRkMWJlMmY5NGFmMDU1ZThjNDU0M2Q5IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBl
cnNpc3RlbmNlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
SW5kZXhlZERCUGVyc2lzdGVuY2UubW0KQEAgLTI3LDYgKzI3LDcgQEAKIAogI2ltcG9ydCAiUGxh
dGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgIlRlc3RVUkxTY2hl
bWVIYW5kbGVyLmgiCiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQv
V0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VzZXJDb250ZW50Q29u
dHJvbGxlclByaXZhdGUuaD4KQEAgLTE3OSwzICsxODAsNzkgQEAgVEVTVChJbmRleGVkREIsIElu
ZGV4ZWREQkRhdGFSZW1vdmFsKQogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmcmVhZHlUb0NvbnRpbnVlKTsKIH0KKworc3RhdGljIE5TU3RyaW5nICptYWluRnJhbWVTdHJp
bmcgPSBAIjxzY3JpcHQ+IGZ1bmN0aW9uIHBvc3RSZXN1bHQoZXZlbnQpIHsgd2luZG93LndlYmtp
dC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoZXZlbnQuZGF0YSk7IH0g
YWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHBvc3RSZXN1bHQsIGZhbHNlKTsgPC9zY3JpcHQ+
PGlmcmFtZSBzcmM9J2lmcmFtZTovLyc+IjsKKworc3RhdGljIGNvbnN0IGNoYXIqIGlmcmFtZUJ5
dGVzID0gUiJURVNUUkVTT1VSQ0UoCis8c2NyaXB0PgordHJ5IHsKKyAgICB2YXIgcmVxdWVzdCA9
IHdpbmRvdy5pbmRleGVkREIub3BlbignSW5kZXhlZERCVGhpcmRQYXJ0eUhhc0FjY2VzcycpOwor
ICAgIHZhciBkYiA9IG51bGw7CisgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlv
bihldmVudCkgeworICAgICAgICBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgIHZh
ciBvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdUZXN0T2JqZWN0U3RvcmUnKTsK
KyAgICAgICAgdmFyIHB1dFJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoJ1Rlc3RWYWx1ZScsICdU
ZXN0S2V5Jyk7CisgICAgICAgIHB1dFJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQp
IHsKKyAgICAgICAgICAgIHBhcmVudC5wb3N0TWVzc2FnZSgnZGF0YWJhc2UgY3JlYXRlZCAtIHB1
dCBpdGVtIHN1Y2Nlc3MnLCAnKicpOworICAgICAgICB9CisgICAgICAgIHB1dFJlcXVlc3Qub25l
cnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBwYXJlbnQucG9zdE1lc3NhZ2Uo
J2RhdGFiYXNlIGNyZWF0ZWQgLSBwdXQgaXRlbSBlcnJvcjogJyArIGV2ZW50LnRhcmdldC5lcnJv
ci5uYW1lICsgJyAtICcgKyBldmVudC50YXJnZXQuZXJyb3IubWVzc2FnZSwgJyonKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7Cisg
ICAgICAgIGlmIChkYikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZGIgPSBldmVudC50
YXJnZXQucmVzdWx0OworICAgICAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbihb
J1Rlc3RPYmplY3RTdG9yZSddKS5vYmplY3RTdG9yZSgnVGVzdE9iamVjdFN0b3JlJyk7CisgICAg
ICAgIHZhciBnZXRSZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KCdUZXN0S2V5Jyk7CisgICAgICAg
IGdldFJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIHBh
cmVudC5wb3N0TWVzc2FnZSgnZGF0YWJhc2UgZXhpc3RzIC0gZ2V0IGl0ZW0gc3VjY2VzczogJyAr
IGV2ZW50LnRhcmdldC5yZXN1bHQsICcqJyk7CisgICAgICAgIH0KKyAgICAgICAgZ2V0UmVxdWVz
dC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIHBhcmVudC5wb3N0TWVz
c2FnZSgnZGF0YWJhc2UgZXhpc3RzIC0gZ2V0IGl0ZW0gZXJyb3I6ICcgKyBldmVudC50YXJnZXQu
ZXJyb3IubmFtZSArICcgLSAnICsgZXZlbnQudGFyZ2V0LmVycm9yLm1lc3NhZ2UsICcqJyk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsK
KyAgICAgICAgcGFyZW50LnBvc3RNZXNzYWdlKCdkYXRhYmFzZSBlcnJvcjogJyArIGV2ZW50LnRh
cmdldC5lcnJvci5uYW1lICsgJyAtICcgKyBldmVudC50YXJnZXQuZXJyb3IubWVzc2FnZSwgJyon
KTsKKyAgICB9Cit9IGNhdGNoKGVycikgeworICAgIHBhcmVudC5wb3N0TWVzc2FnZSgnZGF0YWJh
c2UgZXJyb3I6ICcgKyBlcnIubmFtZSArICcgLSAnICsgZXJyLm1lc3NhZ2UsICcqJyk7Cit9Cis8
L3NjcmlwdD4KKylURVNUUkVTT1VSQ0UiOworCitURVNUKEluZGV4ZWREQiwgSW5kZXhlZERCVGhp
cmRQYXJ0eUhhc0FjY2VzcykKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gaGFuZGxlciA9
IGFkb3B0TlMoW1tJbmRleGVkREJNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtb
Y29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5k
bGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CisgICAgYXV0byBzY2hlbWVI
YW5kbGVyID0gYWRvcHROUyhbW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7Cisg
ICAgW3NjaGVtZUhhbmRsZXIgc2V0U3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlcjpeKFdLV2ViVmll
dyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKKyAgICAgICAgYXV0byByZXNwb25zZSA9
IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3Qu
VVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5j
b2RpbmdOYW1lOm5pbF0pOworICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9u
c2UuZ2V0KCldOworICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpbTlNEYXRhIGRhdGFXaXRo
Qnl0ZXM6aWZyYW1lQnl0ZXMgbGVuZ3RoOnN0cmxlbihpZnJhbWVCeXRlcyldXTsKKyAgICAgICAg
W3Rhc2sgZGlkRmluaXNoXTsKKyAgICB9XTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hl
bWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiaWZyYW1lIl07CisK
KyAgICBhdXRvIGxvYWRUZXN0UGFnZUluV2ViVmlldyA9IF4oV0tXZWJWaWV3ICp3ZWJWaWV3LCBO
U1N0cmluZyAqZXhwZWN0ZWRSZXN1bHQpIHsKKyAgICAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJp
bmc6bWFpbkZyYW1lU3RyaW5nIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8v
d2Via2l0Lm9yZyJdXTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZl
ZFNjcmlwdE1lc3NhZ2UpOworICAgICAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsK
KyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGV4cGVjdGVkUmVzdWx0LCAoTlNTdHJpbmcgKilbbGFz
dFNjcmlwdE1lc3NhZ2UgYm9keV0pOworICAgIH07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGxvYWRUZXN0
UGFnZUluV2ViVmlldyh3ZWJWaWV3LmdldCgpLCBAImRhdGFiYXNlIGNyZWF0ZWQgLSBwdXQgaXRl
bSBzdWNjZXNzIik7CisKKyAgICBhdXRvIHNlY29uZFdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGxvYWRUZXN0UGFnZUluV2ViVmll
dyhzZWNvbmRXZWJWaWV3LmdldCgpLCBAImRhdGFiYXNlIGV4aXN0cyAtIGdldCBpdGVtIHN1Y2Nl
c3M6IFRlc3RWYWx1ZSIpOworCisgICAgd2ViVmlldyA9IG5pbDsKKyAgICBzZWNvbmRXZWJWaWV3
ID0gbmlsOworICAgIFtjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sIF90ZXJtaW5hdGVO
ZXR3b3JrUHJvY2Vzc107CisKKyAgICAvLyBUaGlyZC1wYXJ0eSBJREIgc3RvcmFnZSBpcyBzdG9y
ZWQgaW4gdGhlIG1lbW9yeSBvZiBuZXR3b3JrIHByb2Nlc3MuCisgICAgYXV0byB0aGlyZFdlYlZp
ZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAg
IGxvYWRUZXN0UGFnZUluV2ViVmlldyh0aGlyZFdlYlZpZXcuZ2V0KCksIEAiZGF0YWJhc2UgY3Jl
YXRlZCAtIHB1dCBpdGVtIHN1Y2Nlc3MiKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlOTQyNmZhZmJmOTZhZTE4N2Nl
MGExYTMxNTg3Y2I4Yjg0ODI2ZGJiLi45YTJjNDRkN2VlMDc1MTEyMTUyM2E0M2ZlMjc4MWM2MGFk
YzEyMDI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDctMjEgIFNpaHVpIExpdSAgPHNp
aHVpX2xpdUBhcHBlLmNvbT4KKworICAgICAgICBBbGxvdyBJbmRleGVkREIgaW4gdGhpcmQtcGFy
dHkgZnJhbWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTQ1ODMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxMjc4NDg3PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0ZXN0IGV4cGVjdGF0
aW9uIGZvciBuZXcgYmVoYXZpb3IuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Ny
b3NzLW9yaWdpbi1pbmRleGVkZGItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMv
c2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWluZGV4ZWRkYi5odG1sOgorICAgICAgICAqIGh0dHAvdGVz
dHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXdvcmtlci1pbmRleGVkZGItZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2RvY3VtZW50LWZvci1jcm9z
cy1vcmlnaW4td29ya2VyLWluZGV4ZWRkYi5odG1sOgorCiAyMDIwLTA3LTIxICBIZWN0b3IgTG9w
ZXogIDxoZWN0b3JfaV9sb3BlekBhcHBsZS5jb20+CiAKICAgICAgICAgWyBpT1MgV0syIF0gZmFz
dC9zY3JvbGxpbmcvaW9zL2F1dG9zY3JvbGwtaW5wdXQtd2hlbi12ZXJ5LXpvb21lZC5odG1sIGlz
IGEgZmxha3kgZmFpbHVyZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9jcm9zcy1vcmlnaW4taW5kZXhlZGRiLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWluZGV4ZWRkYi1leHBlY3RlZC50eHQKaW5k
ZXggYTRkYzEyNTFlOGIzODZhMWVlZWZhNDFiY2E4ZWMzMWU0NjdhMzc2MS4uNDYxMzBjZTZkOWM0
MTA4OTRjNjYwZDI4YmRkNDAzOGYwN2Y4YjU2ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4taW5kZXhlZGRiLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1pbmRleGVkZGIt
ZXhwZWN0ZWQudHh0CkBAIC01LDggKzUsOCBAQCBUaGUgZmlyc3QgaWZyYW1lIGJlbG93IHNob3Vs
ZCByZXR1cm4gYSBzZWN1cml0eSBlcnJvciwgYW5kIHRoZSBzZWNvbmQgc2hvdWxkIHN1YwogLS0t
LS0tLS0KIEZyYW1lOiAnPCEtLWZyYW1lMS0tPicKIC0tLS0tLS0tCi13aW5kb3cuaW5kZXhlZERC
LmRlbGV0ZURhdGFiYXNlKCkgdGhyZXcgYW4gZXhjZXB0aW9uOiBTZWN1cml0eUVycm9yCi13aW5k
b3cuaW5kZXhlZERCLm9wZW4oKSB0aHJldyBhbiBleGNlcHRpb246IFNlY3VyaXR5RXJyb3IKK1N1
Y2Nlc3NmdWxseSBjYWxsZWQgd2luZG93LmluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgpLgorU3Vj
Y2Vzc2Z1bGx5IGNhbGxlZCB3aW5kb3cuaW5kZXhlZERCLm9wZW4oKS4KIAogCiAtLS0tLS0tLQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4t
aW5kZXhlZGRiLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9y
aWdpbi1pbmRleGVkZGIuaHRtbAppbmRleCBmZGUyNjQxMjVkMjAwZDViZmE5Y2VkN2M0NjA0ODBm
YWYyYzdlM2VkLi5kNGFlZjAzNjhlNDNmMWI4NDE5YjlmYTA2MDgxNGVkYjI1ODU4Y2YzIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1pbmRl
eGVkZGIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9y
aWdpbi1pbmRleGVkZGIuaHRtbApAQCAtMTcsNyArMTcsNyBAQAogICAgIDwvc2NyaXB0PgogPC9o
ZWFkPgogPGJvZHk+Ci0gICAgPHA+VGhlIGZpcnN0IGlmcmFtZSBiZWxvdyBzaG91bGQgcmV0dXJu
IGEgc2VjdXJpdHkgZXJyb3IsIGFuZCB0aGUgc2Vjb25kIHNob3VsZCBzdWNjZXNzZnVsbHkgb3Bl
biB0aGUgZGF0YWJhc2UuPC9wPgorICAgIDxwPkJvdGggZnJhbWVzIGNhbiBzdWNjZXNzZnVsbHkg
b3BlbiB0aGUgZGF0YWJhc2UuPC9wPgogICAgIDxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0
OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi1pZnJhbWUtZm9yLWluZGV4ZWRk
Yi5odG1sIiBvbmxvYWQ9ImRlY3JlbWVudCgpIj48L2lmcmFtZT4KICAgICA8aWZyYW1lIHNyYz0i
aHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1vcmlnaW4taWZy
YW1lLWZvci1pbmRleGVkZGIuaHRtbCIgb25sb2FkPSJkZWNyZW1lbnQoKSI+PC9pZnJhbWU+CiA8
L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3Nz
LW9yaWdpbi13b3JrZXItaW5kZXhlZGRiLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXdvcmtlci1pbmRleGVkZGItZXhwZWN0ZWQudHh0
CmluZGV4IDcyOTI1YWFhYjExNGU3YmUwM2MwMGFhMzczM2RhYzliMjBlZWEyMjIuLmZjN2MyZGZj
YTVkM2E5Yjg2YmRjNjAwYjU2ZDZhZDJiYzJlNGNkOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXdvcmtlci1pbmRleGVkZGItZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2lu
LXdvcmtlci1pbmRleGVkZGItZXhwZWN0ZWQudHh0CkBAIC01LDggKzUsOCBAQCBUaGUgZmlyc3Qg
aWZyYW1lIGJlbG93IHNob3VsZCByZXR1cm4gYSBzZWN1cml0eSBlcnJvciwgYW5kIHRoZSBzZWNv
bmQgc2hvdWxkIHN1YwogLS0tLS0tLS0KIEZyYW1lOiAnPCEtLWZyYW1lMS0tPicKIC0tLS0tLS0t
Ci1zZWxmLmluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgpIHRocmV3IGFuIGV4Y2VwdGlvbjogU2Vj
dXJpdHlFcnJvcgotc2VsZi5pbmRleGVkREIub3BlbigpIHRocmV3IGFuIGV4Y2VwdGlvbjogU2Vj
dXJpdHlFcnJvcgorU3VjY2Vzc2Z1bGx5IGNhbGxlZCBzZWxmLmluZGV4ZWREQi5kZWxldGVEYXRh
YmFzZSgpLgorU3VjY2Vzc2Z1bGx5IGNhbGxlZCBzZWxmLmluZGV4ZWREQi5vcGVuKCkuCiAKIAog
LS0tLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVz
b3VyY2VzL2RvY3VtZW50LWZvci1jcm9zcy1vcmlnaW4td29ya2VyLWluZGV4ZWRkYi5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvZG9jdW1lbnQtZm9yLWNy
b3NzLW9yaWdpbi13b3JrZXItaW5kZXhlZGRiLmh0bWwKaW5kZXggZWJkMGIyNzBlYzBjZjBiMzdl
ZmRkZTg2Y2Y5NWM2YTVlYWY4MjYxYy4uOGVmN2MzOWUyMDQ3NmM2NjI2Y2Q4MGRhMzUzOWQ2NTNm
MWY0NjFmNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNv
dXJjZXMvZG9jdW1lbnQtZm9yLWNyb3NzLW9yaWdpbi13b3JrZXItaW5kZXhlZGRiLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvZG9jdW1lbnQtZm9y
LWNyb3NzLW9yaWdpbi13b3JrZXItaW5kZXhlZGRiLmh0bWwKQEAgLTE5LDcgKzE5LDcgQEAgd2lu
ZG93Lm9ubWVzc2FnZSA9IGRlY3JlbWVudDsKIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci0g
ICAgPHA+VGhlIGZpcnN0IGlmcmFtZSBiZWxvdyBzaG91bGQgcmV0dXJuIGEgc2VjdXJpdHkgZXJy
b3IsIGFuZCB0aGUgc2Vjb25kIHNob3VsZCBzdWNjZXNzZnVsbHkgb3BlbiB0aGUgZGF0YWJhc2Uu
PC9wPgorICAgIDxwPkJvdGggZnJhbWVzIGNhbiBzdWNjZXNzZnVsbHkgb3BlbiB0aGUgZGF0YWJh
c2UuPC9wPgogICAgIDxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkv
cmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi1pZnJhbWUtZm9yLXdvcmtlci1pbmRleGVkZGIuaHRtbCI+
PC9pZnJhbWU+CiAgICAgPGlmcmFtZSBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0
eS9yZXNvdXJjZXMvY3Jvc3Mtb3JpZ2luLWlmcmFtZS1mb3Itd29ya2VyLWluZGV4ZWRkYi5odG1s
Ij48L2lmcmFtZT4KIDwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404866</attachid>
            <date>2020-07-21 15:24:16 -0700</date>
            <delta_ts>2020-07-23 00:30:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214583-20200721152415.patch</filename>
            <type>text/plain</type>
            <size>21645</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjJlNDU4ZmUyM2JmMGFh
NmY3ZDRlMmI0MzRmNjQ5OGI3MDQ4ZmIyMS4uYTc4ZmEzODhiYjJmNjQ1MmQwMzBmNDQ4ZTE2ODU5
YTcyOWUxNzhjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIwLTA3LTIxICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgQWxsb3cgSW5kZXhlZERCIGlu
IHRoaXJkLXBhcnR5IGZyYW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE0NTgzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTI3ODQ4Nz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXRjaCBJbmRl
eGVkREIncyBiZWhhdmlvciB3aXRoIGxvY2FsU3RvcmFnZS4gVGhpcmQtcGFydHkgaWZyYW1lcyBu
b3cgaGF2ZSBhY2Nlc3MgdG8gSW5kZXhlZERCIHdpdGggcGFydGl0aW9uZWQKKyAgICAgICAgaW4t
bWVtb3J5IHN0b3JhZ2UuCisKKyAgICAgICAgQVBJIFRlc3Q6IEluZGV4ZWREQi5JbmRleGVkREJU
aGlyZFBhcnR5SGFzQWNjZXNzCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUlkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlm
aWVyOjpJREJEYXRhYmFzZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6bV9pc1RyYW5z
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI6Omlzb2xhdGVk
Q29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI6Omxv
Z2dpbmdTdHJpbmcgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlSWRlbnRpZmllci5oOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVy
OjpoYXNoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllcjo6
b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZp
ZXI6OmlzVHJhbnNpZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlSWRl
bnRpZmllcjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlSWRl
bnRpZmllcjo6ZGVjb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFRocm93U2VjdXJpdHlFeGNlcHRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeTo6b3BlbkludGVybmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkZhY3Rvcnk6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6SURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9N
V2luZG93V2ViRGF0YWJhc2U6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgICogcGFnZS9TZWN1cml0
eU9yaWdpbi5oOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vzc0Rh
dGFiYXNlIGNvbnN0KToKKwogMjAyMC0wNy0yMSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56
YXJvQGdub21lLm9yZz4KIAogICAgICAgICBVcGRhdGUgQ2hyb21lIGFuZCBGaXJlZm94IHZlcnNp
b25zIGluIHVzZXIgYWdlbnQgcXVpcmtzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcAppbmRleCA1NTViMGMx
ODFlY2I2MThhNmRmNDQxODMzMDcyYWRlOGQ2NGQ1NjVhLi5hMDZhODBiZDUwMDg1ZmQzZjRjYmY0
YTU0YjFiZDhlNDA5YTQ4Y2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKQEAgLTM1LDkgKzM1LDEw
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSURCRGF0YWJhc2VJZGVudGlmaWVyOjpJREJE
YXRhYmFzZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIFNlY3VyaXR5T3Jp
Z2luRGF0YSYmIG9wZW5pbmdPcmlnaW4sIFNlY3VyaXR5T3JpZ2luRGF0YSYmIG1haW5GcmFtZU9y
aWdpbikKK0lEQkRhdGFiYXNlSWRlbnRpZmllcjo6SURCRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBTZWN1cml0eU9yaWdpbkRhdGEmJiBvcGVuaW5nT3JpZ2lu
LCBTZWN1cml0eU9yaWdpbkRhdGEmJiBtYWluRnJhbWVPcmlnaW4sIGJvb2wgaXNUcmFuc2llbnQp
CiAgICAgOiBtX2RhdGFiYXNlTmFtZShkYXRhYmFzZU5hbWUpCiAgICAgLCBtX29yaWdpbiB7IFdU
Rk1vdmUob3BlbmluZ09yaWdpbiksIFdURk1vdmUobWFpbkZyYW1lT3JpZ2luKSB9CisgICAgLCBt
X2lzVHJhbnNpZW50KGlzVHJhbnNpZW50KQogewogICAgIC8vIFRoZSBlbXB0eSBzdHJpbmcgaXMg
YSB2YWxpZCBkYXRhYmFzZSBuYW1lLCBidXQgYSBudWxsIHN0cmluZyBpcyBub3QuCiAgICAgQVNT
RVJUKCFkYXRhYmFzZU5hbWUuaXNOdWxsKCkpOwpAQCAtNDksNiArNTAsNyBAQCBJREJEYXRhYmFz
ZUlkZW50aWZpZXIgSURCRGF0YWJhc2VJZGVudGlmaWVyOjppc29sYXRlZENvcHkoKSBjb25zdAog
CiAgICAgaWRlbnRpZmllci5tX2RhdGFiYXNlTmFtZSA9IG1fZGF0YWJhc2VOYW1lLmlzb2xhdGVk
Q29weSgpOwogICAgIGlkZW50aWZpZXIubV9vcmlnaW4gPSBtX29yaWdpbi5pc29sYXRlZENvcHko
KTsKKyAgICBpZGVudGlmaWVyLm1faXNUcmFuc2llbnQgPSBtX2lzVHJhbnNpZW50OwogCiAgICAg
cmV0dXJuIGlkZW50aWZpZXI7CiB9CkBAIC03Myw3ICs3NSw3IEBAIFN0cmluZyBJREJEYXRhYmFz
ZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3QgU2VjdXJp
dHlPcmlnCiAjaWYgIUxPR19ESVNBQkxFRAogU3RyaW5nIElEQkRhdGFiYXNlSWRlbnRpZmllcjo6
bG9nZ2luZ1N0cmluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcobV9kYXRhYmFz
ZU5hbWUsICJAIiwgbV9vcmlnaW4udG9wT3JpZ2luLmRlYnVnU3RyaW5nKCksICI6IiwgbV9vcmln
aW4uY2xpZW50T3JpZ2luLmRlYnVnU3RyaW5nKCkpOworICAgIHJldHVybiBtYWtlU3RyaW5nKG1f
ZGF0YWJhc2VOYW1lLCAiQCIsIG1fb3JpZ2luLnRvcE9yaWdpbi5kZWJ1Z1N0cmluZygpLCAiOiIs
IG1fb3JpZ2luLmNsaWVudE9yaWdpbi5kZWJ1Z1N0cmluZygpLCBtX2lzVHJhbnNpZW50ID8gIiwg
dHJhbnNpZW50IiA6ICIiKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCmluZGV4IGFjNDli
YTEyNzEyYWJkZjIwNDQ3MmE3YjMzNDZiMmZlYmEwYzEzYTguLjNlY2FiOTc5MmQ0YWFhMTMwY2Ex
NzViNTk2Zjk4NTVjNzQ5NmQ5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCkBAIC00NCw3ICs0NCw3IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgSURCRGF0YWJhc2VJ
ZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBTZWN1cml0eU9yaWdpbkRhdGEm
JiBvcGVuaW5nT3JpZ2luLCBTZWN1cml0eU9yaWdpbkRhdGEmJiBtYWluRnJhbWVPcmlnaW4pOwor
ICAgIFdFQkNPUkVfRVhQT1JUIElEQkRhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGRh
dGFiYXNlTmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3BlbmluZ09yaWdpbiwgU2VjdXJpdHlP
cmlnaW5EYXRhJiYgbWFpbkZyYW1lT3JpZ2luLCBib29sIGlzVHJhbnNpZW50ID0gZmFsc2UpOwog
CiAgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCkBAIC01
Nyw4ICs1Nyw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG5hbWVIYXNoID0g
U3RyaW5nSGFzaDo6aGFzaChtX2RhdGFiYXNlTmFtZSk7CiAgICAgICAgIHVuc2lnbmVkIG9yaWdp
bkhhc2ggPSBtX29yaWdpbi5oYXNoKCk7CisgICAgICAgIHVuc2lnbmVkIHRyYW5zaWVudEhhc2gg
PSBtX2lzVHJhbnNpZW50OwogCi0gICAgICAgIHVuc2lnbmVkIGhhc2hDb2Rlc1syXSA9IHsgbmFt
ZUhhc2gsIG9yaWdpbkhhc2ggfTsKKyAgICAgICAgdW5zaWduZWQgaGFzaENvZGVzWzNdID0geyBu
YW1lSGFzaCwgb3JpZ2luSGFzaCwgdHJhbnNpZW50SGFzaCB9OwogICAgICAgICByZXR1cm4gU3Ry
aW5nSGFzaGVyOjpoYXNoTWVtb3J5PHNpemVvZihoYXNoQ29kZXMpPihoYXNoQ29kZXMpOwogICAg
IH0KIApAQCAtNzUsMTEgKzc2LDEyIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIG90aGVyKSBjb25zdAogICAgIHsKLSAgICAgICAg
cmV0dXJuIG90aGVyLm1fZGF0YWJhc2VOYW1lID09IG1fZGF0YWJhc2VOYW1lICYmIG90aGVyLm1f
b3JpZ2luID09IG1fb3JpZ2luOworICAgICAgICByZXR1cm4gb3RoZXIubV9kYXRhYmFzZU5hbWUg
PT0gbV9kYXRhYmFzZU5hbWUgJiYgb3RoZXIubV9vcmlnaW4gPT0gbV9vcmlnaW4gJiYgb3RoZXIu
bV9pc1RyYW5zaWVudCA9PSBtX2lzVHJhbnNpZW50OwogICAgIH0KIAogICAgIGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2VOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhYmFzZU5hbWU7IH0KICAgICBj
b25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9Cisg
ICAgYm9vbCBpc1RyYW5zaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faXNUcmFuc2llbnQ7IH0KIAog
ICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KGNvbnN0IFN0cmluZyYg
cm9vdERpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5nPSJ2MSIpIGNvbnN0Owog
ICAgIHN0YXRpYyBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIHRvcExldmVsT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmIG9wZW5pbmdPcmlnaW4sIGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSwgY29uc3QgU3Ry
aW5nJiB2ZXJzaW9uU3RyaW5nKTsKQEAgLTk2LDYgKzk4LDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBTdHJpbmcgbV9kYXRhYmFzZU5hbWU7CiAgICAgQ2xpZW50T3JpZ2luIG1fb3JpZ2luOwor
ICAgIGJvb2wgbV9pc1RyYW5zaWVudCB7IGZhbHNlIH07CiB9OwogCiBzdHJ1Y3QgSURCRGF0YWJh
c2VJZGVudGlmaWVySGFzaCB7CkBAIC0xMTMsNyArMTE2LDcgQEAgc3RydWN0IElEQkRhdGFiYXNl
SWRlbnRpZmllckhhc2hUcmFpdHMgOiBXVEY6OlNpbXBsZUNsYXNzSGFzaFRyYWl0czxJREJEYXRh
YmFzZUkKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIElEQkRhdGFiYXNlSWRlbnRpZmll
cjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBtX2Rh
dGFiYXNlTmFtZSA8PCBtX29yaWdpbjsKKyAgICBlbmNvZGVyIDw8IG1fZGF0YWJhc2VOYW1lIDw8
IG1fb3JpZ2luIDw8IG1faXNUcmFuc2llbnQ7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
CkBAIC0xMjksOSArMTMyLDE1IEBAIE9wdGlvbmFsPElEQkRhdGFiYXNlSWRlbnRpZmllcj4gSURC
RGF0YWJhc2VJZGVudGlmaWVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIW9y
aWdpbikKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorICAgIE9wdGlvbmFsPGJvb2w+
IGlzVHJhbnNpZW50OworICAgIGRlY29kZXIgPj4gaXNUcmFuc2llbnQ7CisgICAgaWYgKCFpc1Ry
YW5zaWVudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgIElEQkRhdGFiYXNl
SWRlbnRpZmllciBpZGVudGlmaWVyOwogICAgIGlkZW50aWZpZXIubV9kYXRhYmFzZU5hbWUgPSBX
VEZNb3ZlKCpkYXRhYmFzZU5hbWUpOyAvLyBGSVhNRTogV2hlbiBkZWNvZGluZyBmcm9tIElQQywg
ZGF0YWJhc2VOYW1lIGNhbiBiZSBudWxsLCBhbmQgdGhlIG5vbi1lbXB0eSBjb25zdHJ1Y3RvciBh
c3NlcnRzIHRoYXQgdGhpcyBpcyBub3QgdGhlIGNhc2UuCiAgICAgaWRlbnRpZmllci5tX29yaWdp
biA9IFdURk1vdmUoKm9yaWdpbik7CisgICAgaWRlbnRpZmllci5tX2lzVHJhbnNpZW50ID0gKmlz
VHJhbnNpZW50OwogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCmluZGV4IGE0ODcyN2IwMDNiNDg2
Nzc2ZTAxZjViNzQ4MjZkNTY1NTM0YmNiYzMuLjMwNzc1ZWM4OTUwNWU1Y2YzMjVlMGZlMTQ3MWU4
YjNjZmRmMDI5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkZhY3RvcnkuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyBib29sIHNob3VsZFRocm93U2Vj
dXJpdHlFeGNlcHRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmICghY29udGV4dC5zZWN1cml0eU9yaWdp
bigpLT5jYW5BY2Nlc3NEYXRhYmFzZShjb250ZXh0LnRvcE9yaWdpbigpKSkKKyAgICBpZiAoIWNv
bnRleHQuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJhc2UobnVsbHB0cikpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTEsNyArOTEsOCBAQCBF
eGNlcHRpb25PcjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rvcnk6Om9wZW5JbnRlcm5h
bChTY3JpcHRFeGVjdXRpb25Db250ZQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJp
dHlFcnJvciwgIklEQkZhY3Rvcnkub3BlbigpIGNhbGxlZCBpbiBhbiBpbnZhbGlkIHNlY3VyaXR5
IGNvbnRleHQiX3MgfTsKIAogICAgIEFTU0VSVChjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCkpOwot
ICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBkYXRhYmFzZUlkZW50aWZpZXIobmFtZSwgU2VjdXJp
dHlPcmlnaW5EYXRhIHsgY29udGV4dC5zZWN1cml0eU9yaWdpbigpLT5kYXRhKCkgfSwgU2VjdXJp
dHlPcmlnaW5EYXRhIHsgY29udGV4dC50b3BPcmlnaW4oKS5kYXRhKCkgfSk7CisgICAgYm9vbCBp
c1RyYW5zaWVudCA9ICFjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0RhdGFiYXNl
KCZjb250ZXh0LnRvcE9yaWdpbigpKTsKKyAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgZGF0YWJh
c2VJZGVudGlmaWVyKG5hbWUsIFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQuc2VjdXJpdHlP
cmlnaW4oKS0+ZGF0YSgpIH0sIFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQudG9wT3JpZ2lu
KCkuZGF0YSgpIH0sIGlzVHJhbnNpZW50KTsKICAgICBpZiAoIWRhdGFiYXNlSWRlbnRpZmllci5p
c1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJJREJGYWN0
b3J5Lm9wZW4oKSBjYWxsZWQgd2l0aCBhbiBpbnZhbGlkIHNlY3VyaXR5IG9yaWdpbiJfcyB9Owog
CkBAIC0xMTEsNyArMTEyLDggQEAgRXhjZXB0aW9uT3I8UmVmPElEQk9wZW5EQlJlcXVlc3Q+PiBJ
REJGYWN0b3J5OjpkZWxldGVEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db24KICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJJREJGYWN0b3J5LmRlbGV0ZURhdGFiYXNl
KCkgY2FsbGVkIGluIGFuIGludmFsaWQgc2VjdXJpdHkgY29udGV4dCJfcyB9OwogCiAgICAgQVNT
RVJUKGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSk7Ci0gICAgSURCRGF0YWJhc2VJZGVudGlmaWVy
IGRhdGFiYXNlSWRlbnRpZmllcihuYW1lLCBTZWN1cml0eU9yaWdpbkRhdGEgeyBjb250ZXh0LnNl
Y3VyaXR5T3JpZ2luKCktPmRhdGEoKSB9LCBTZWN1cml0eU9yaWdpbkRhdGEgeyBjb250ZXh0LnRv
cE9yaWdpbigpLmRhdGEoKSB9KTsKKyAgICBib29sIGlzVHJhbnNpZW50ID0gIWNvbnRleHQuc2Vj
dXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJhc2UoJmNvbnRleHQudG9wT3JpZ2luKCkpOwor
ICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBkYXRhYmFzZUlkZW50aWZpZXIobmFtZSwgU2VjdXJp
dHlPcmlnaW5EYXRhIHsgY29udGV4dC5zZWN1cml0eU9yaWdpbigpLT5kYXRhKCkgfSwgU2VjdXJp
dHlPcmlnaW5EYXRhIHsgY29udGV4dC50b3BPcmlnaW4oKS5kYXRhKCkgfSwgaXNUcmFuc2llbnQp
OwogICAgIGlmICghZGF0YWJhc2VJZGVudGlmaWVyLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIklEQkZhY3RvcnkuZGVsZXRlRGF0YWJhc2UoKSBjYWxs
ZWQgd2l0aCBhbiBpbnZhbGlkIHNlY3VyaXR5IG9yaWdpbiJfcyB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCmluZGV4
IDFhOTdjNzE0ODE4ZGMxOWEzNGUxOTFlY2Q4ZWE4NTQ5MDA5ODk0MDQuLjMwMmQxYTcwMTJjNGE5
ZjBiNzJlZDViMGY0YzcwMWNlZTQzMDA2ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCkBAIC0xMzMsNiArMTMzLDEw
IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJCYWNraW5nU3RvcmU+IElEQlNlcnZlcjo6Y3JlYXRlQmFj
a2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlCiAgICAgaWYgKGRhdGFiYXNlRGlyZWN0b3J5UGF0
aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lbW9yeUlEQkJhY2tpbmdT
dG9yZT4obV9zZXNzaW9uSUQsIGlkZW50aWZpZXIpOwogCisgICAgQVNTRVJUKCFtX3Nlc3Npb25J
RC5pc0VwaGVtZXJhbCgpKTsKKyAgICBpZiAoaWRlbnRpZmllci5pc1RyYW5zaWVudCgpKQorICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZW1vcnlJREJCYWNraW5nU3RvcmU+KG1fc2Vzc2lvbklE
LCBpZGVudGlmaWVyKTsKKwogICAgIHJldHVybiBtYWtlVW5pcXVlPFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZT4obV9zZXNzaW9uSUQsIGlkZW50aWZpZXIsIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2lu
ZG93V2ViRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
T01XaW5kb3dXZWJEYXRhYmFzZS5jcHAKaW5kZXggMWNjZmVhNjAxMmQ2ZWM1NTgwNTc5M2JmNDNi
YzE1ZjAwMDMwYmZkMy4uOGFjMmFkNmFmNWU0YTNiZmY4NGMyNjc2YzBlMjRlNmJiYzJmM2I1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9ET01XaW5kb3dX
ZWJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
T01XaW5kb3dXZWJEYXRhYmFzZS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgRXhjZXB0aW9uT3I8UmVm
UHRyPERhdGFiYXNlPj4gRE9NV2luZG93V2ViRGF0YWJhc2U6Om9wZW5EYXRhYmFzZShET01XaW5k
b3cmIHdpbmQKICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
U3RvcmFnZSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiV2ViIFNRTCBpcyBkZXByZWNhdGVkLiBQ
bGVhc2UgdXNlIEluZGV4ZWREQiBpbnN0ZWFkLiIpOwogCiAgICAgYXV0byYgc2VjdXJpdHlPcmln
aW4gPSBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKTsKLSAgICBpZiAoIXNlY3VyaXR5T3JpZ2lu
LmNhbkFjY2Vzc0RhdGFiYXNlKGRvY3VtZW50LT50b3BPcmlnaW4oKSkpCisgICAgaWYgKCFzZWN1
cml0eU9yaWdpbi5jYW5BY2Nlc3NEYXRhYmFzZSgmZG9jdW1lbnQtPnRvcE9yaWdpbigpKSkKICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IgfTsKICAgICBhdXRvIHJlc3Vs
dCA9IG1hbmFnZXIub3BlbkRhdGFiYXNlKCp3aW5kb3cuZG9jdW1lbnQoKSwgbmFtZSwgdmVyc2lv
biwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUsIFdURk1vdmUoY3JlYXRpb25DYWxsYmFjaykp
OwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlPcmlnaW4uaAppbmRleCA3ODY3YmNjOWVlYmZkMWQ5N2Y2NzdiMDcyNDkzYTBiZGRiNDA3YzQ3
Li4yMDdmOGE4YWE2MzkwODQwNGIwMDAyNDQ4MGE5YWVlMmRjNGIyNjk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbi5oCkBAIC0xNDgsNyArMTQ4LDcgQEAgcHVibGljOgogCiAgICAg
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkgY29uc3Q7CiAK
LSAgICBib29sIGNhbkFjY2Vzc0RhdGFiYXNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmln
aW4pIGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UoJnRvcE9yaWdpbik7IH07CisgICAg
Ym9vbCBjYW5BY2Nlc3NEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKSBj
b25zdCB7IHJldHVybiBjYW5BY2Nlc3NTdG9yYWdlKHRvcE9yaWdpbik7IH07CiAgICAgYm9vbCBj
YW5BY2Nlc3NTZXNzaW9uU3RvcmFnZShjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luKSBj
b25zdCB7IHJldHVybiBjYW5BY2Nlc3NTdG9yYWdlKCZ0b3BPcmlnaW4sIEFsd2F5c0FsbG93RnJv
bVRoaXJkUGFydHkpOyB9CiAgICAgYm9vbCBjYW5BY2Nlc3NMb2NhbFN0b3JhZ2UoY29uc3QgU2Vj
dXJpdHlPcmlnaW4qIHRvcE9yaWdpbikgY29uc3QgeyByZXR1cm4gY2FuQWNjZXNzU3RvcmFnZSh0
b3BPcmlnaW4pOyB9OwogICAgIGJvb2wgY2FuQWNjZXNzUGx1Z2luU3RvcmFnZShjb25zdCBTZWN1
cml0eU9yaWdpbiYgdG9wT3JpZ2luKSBjb25zdCB7IHJldHVybiBjYW5BY2Nlc3NTdG9yYWdlKCZ0
b3BPcmlnaW4pOyB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggNjI4YTM4MjRmOTY3MjU3MDM4M2EzZDJiOTczMGJjZjk0MzNjNjI4Yy4uNWExNjUz
ZmZmNDhhODgwZGE2ODc4OGVmMmQ4MzU2ODQ2MTJmNTliYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA3LTIx
ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgQWxsb3cgSW5kZXhl
ZERCIGluIHRoaXJkLXBhcnR5IGZyYW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NTgzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTI3ODQ4
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW06Cisg
ICAgICAgIChjYXRjaCk6CisKIDIwMjAtMDctMjEgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRA
YXBwbGUuY29tPgogCiAgICAgICAgIEltYWdlRGlmZjogU2V0IEFMV0FZU19TRUFSQ0hfVVNFUl9Q
QVRIUyB0byBOTwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0KaW5kZXggZjQ4ODBhMThkZDkyM2Ji
MTZmMDExMDcyNTk0YmY3M2FiOWJkYmFhNC4uYTEzOWI1NDAwNzkzZTI2ODE0ZDFiZTJmOTRhZjA1
NWU4YzQ1NDNkOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tCkBAIC0yNyw2ICsyNyw3IEBA
CiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0LmgiCisjaW1w
b3J0ICJUZXN0VVJMU2NoZW1lSGFuZGxlci5oIgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgog
I2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmg+CkBAIC0xNzksMyArMTgwLDc5IEBAIFRF
U1QoSW5kZXhlZERCLCBJbmRleGVkREJEYXRhUmVtb3ZhbCkKICAgICB9XTsKICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7CiB9CisKK3N0YXRpYyBOU1N0cmlu
ZyAqbWFpbkZyYW1lU3RyaW5nID0gQCI8c2NyaXB0PiBmdW5jdGlvbiBwb3N0UmVzdWx0KGV2ZW50
KSB7IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdl
KGV2ZW50LmRhdGEpOyB9IGFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBwb3N0UmVzdWx0LCBm
YWxzZSk7IDwvc2NyaXB0PjxpZnJhbWUgc3JjPSdpZnJhbWU6Ly8nPiI7CisKK3N0YXRpYyBjb25z
dCBjaGFyKiBpZnJhbWVCeXRlcyA9IFIiVEVTVFJFU09VUkNFKAorPHNjcmlwdD4KK3RyeSB7Cisg
ICAgdmFyIHJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oJ0luZGV4ZWREQlRoaXJkUGFy
dHlIYXNBY2Nlc3MnKTsKKyAgICB2YXIgZGIgPSBudWxsOworICAgIHJlcXVlc3Qub251cGdyYWRl
bmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGIgPSBldmVudC50YXJnZXQucmVz
dWx0OworICAgICAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnVGVz
dE9iamVjdFN0b3JlJyk7CisgICAgICAgIHZhciBwdXRSZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0
KCdUZXN0VmFsdWUnLCAnVGVzdEtleScpOworICAgICAgICBwdXRSZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBwYXJlbnQucG9zdE1lc3NhZ2UoJ2RhdGFi
YXNlIGNyZWF0ZWQgLSBwdXQgaXRlbSBzdWNjZXNzJywgJyonKTsKKyAgICAgICAgfQorICAgICAg
ICBwdXRSZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgcGFy
ZW50LnBvc3RNZXNzYWdlKCdkYXRhYmFzZSBjcmVhdGVkIC0gcHV0IGl0ZW0gZXJyb3I6ICcgKyBl
dmVudC50YXJnZXQuZXJyb3IubmFtZSArICcgLSAnICsgZXZlbnQudGFyZ2V0LmVycm9yLm1lc3Nh
Z2UsICcqJyk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbihldmVudCkgeworICAgICAgICBpZiAoZGIpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgdmFyIG9iamVjdFN0b3JlID0g
ZGIudHJhbnNhY3Rpb24oWydUZXN0T2JqZWN0U3RvcmUnXSkub2JqZWN0U3RvcmUoJ1Rlc3RPYmpl
Y3RTdG9yZScpOworICAgICAgICB2YXIgZ2V0UmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldCgnVGVz
dEtleScpOworICAgICAgICBnZXRSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgICAgICAgICBwYXJlbnQucG9zdE1lc3NhZ2UoJ2RhdGFiYXNlIGV4aXN0cyAtIGdldCBp
dGVtIHN1Y2Nlc3M6ICcgKyBldmVudC50YXJnZXQucmVzdWx0LCAnKicpOworICAgICAgICB9Cisg
ICAgICAgIGdldFJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAg
ICBwYXJlbnQucG9zdE1lc3NhZ2UoJ2RhdGFiYXNlIGV4aXN0cyAtIGdldCBpdGVtIGVycm9yOiAn
ICsgZXZlbnQudGFyZ2V0LmVycm9yLm5hbWUgKyAnIC0gJyArIGV2ZW50LnRhcmdldC5lcnJvci5t
ZXNzYWdlLCAnKicpOworICAgICAgICB9CisgICAgfQorICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1
bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIHBhcmVudC5wb3N0TWVzc2FnZSgnZGF0YWJhc2UgZXJy
b3I6ICcgKyBldmVudC50YXJnZXQuZXJyb3IubmFtZSArICcgLSAnICsgZXZlbnQudGFyZ2V0LmVy
cm9yLm1lc3NhZ2UsICcqJyk7CisgICAgfQorfSBjYXRjaChlcnIpIHsKKyAgICBwYXJlbnQucG9z
dE1lc3NhZ2UoJ2RhdGFiYXNlIGVycm9yOiAnICsgZXJyLm5hbWUgKyAnIC0gJyArIGVyci5tZXNz
YWdlLCAnKicpOworfQorPC9zY3JpcHQ+CispVEVTVFJFU09VUkNFIjsKKworVEVTVChJbmRleGVk
REIsIEluZGV4ZWREQlRoaXJkUGFydHlIYXNBY2Nlc3MpCit7CisgICAgYXV0byBjb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAg
ICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbSW5kZXhlZERCTWVzc2FnZUhhbmRsZXIgYWxsb2Nd
IGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRT
Y3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOwor
ICAgIGF1dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1tUZXN0VVJMU2NoZW1lSGFuZGxlciBh
bGxvY10gaW5pdF0pOworICAgIFtzY2hlbWVIYW5kbGVyIHNldFN0YXJ0VVJMU2NoZW1lVGFza0hh
bmRsZXI6XihXS1dlYlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7CisgICAgICAg
IGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhV
Ukw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50
TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKKyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2
ZVJlc3BvbnNlOnJlc3BvbnNlLmdldCgpXTsKKyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6
W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmlmcmFtZUJ5dGVzIGxlbmd0aDpzdHJsZW4oaWZyYW1lQnl0
ZXMpXV07CisgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CisgICAgfV07CisgICAgW2NvbmZpZ3Vy
YXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpzY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVt
ZTpAImlmcmFtZSJdOworCisgICAgYXV0byBsb2FkVGVzdFBhZ2VJbldlYlZpZXcgPSBeKFdLV2Vi
VmlldyAqd2ViVmlldywgTlNTdHJpbmcgKmV4cGVjdGVkUmVzdWx0KSB7CisgICAgICAgIFt3ZWJW
aWV3IGxvYWRIVE1MU3RyaW5nOm1haW5GcmFtZVN0cmluZyBiYXNlVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmciXV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICAgICAgcmVjZWl2ZWRTY3JpcHRN
ZXNzYWdlID0gZmFsc2U7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShleHBlY3RlZFJlc3VsdCwg
KE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKKyAgICB9OworCisgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKKyAgICBsb2FkVGVzdFBhZ2VJbldlYlZpZXcod2ViVmlldy5nZXQoKSwgQCJkYXRhYmFzZSBj
cmVhdGVkIC0gcHV0IGl0ZW0gc3VjY2VzcyIpOworCisgICAgYXV0byBzZWNvbmRXZWJWaWV3ID0g
YWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBsb2Fk
VGVzdFBhZ2VJbldlYlZpZXcoc2Vjb25kV2ViVmlldy5nZXQoKSwgQCJkYXRhYmFzZSBleGlzdHMg
LSBnZXQgaXRlbSBzdWNjZXNzOiBUZXN0VmFsdWUiKTsKKworICAgIHdlYlZpZXcgPSBuaWw7Cisg
ICAgc2Vjb25kV2ViVmlldyA9IG5pbDsKKyAgICBbY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNz
UG9vbCBfdGVybWluYXRlTmV0d29ya1Byb2Nlc3NdOworCisgICAgLy8gVGhpcmQtcGFydHkgSURC
IHN0b3JhZ2UgaXMgc3RvcmVkIGluIHRoZSBtZW1vcnkgb2YgbmV0d29yayBwcm9jZXNzLgorICAg
IGF1dG8gdGhpcmRXZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKKyAgICBsb2FkVGVzdFBhZ2VJbldlYlZpZXcodGhpcmRXZWJWaWV3LmdldCgp
LCBAImRhdGFiYXNlIGNyZWF0ZWQgLSBwdXQgaXRlbSBzdWNjZXNzIik7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzM5
ODFiNjdhNTA3Mzk5YTg1YTcwNTYzMDcyZDg3N2QyOWU0NzU4Yy4uOTU0ZTkwZmFiY2I0MjhiZThm
YTQwNTA0NWQ2NjUyNjhjZGM1MWEyYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA3LTIx
ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgQWxsb3cgSW5kZXhl
ZERCIGluIHRoaXJkLXBhcnR5IGZyYW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NTgzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTI3ODQ4
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRh
dGUgdGVzdCBleHBlY3RhdGlvbiBmb3IgbmV3IGJlaGF2aW9yLgorCisgICAgICAgICogaHR0cC90
ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4taW5kZXhlZGRiLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1pbmRleGVkZGIuaHRtbDoKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi13b3JrZXItaW5kZXhlZGRi
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9k
b2N1bWVudC1mb3ItY3Jvc3Mtb3JpZ2luLXdvcmtlci1pbmRleGVkZGIuaHRtbDoKKwogMjAyMC0w
Ny0yMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBD
YXRjaFNjb3BlIGluIG1pY3JvdGFzayBleGVjdXRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWluZGV4ZWRkYi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1pbmRleGVkZGIt
ZXhwZWN0ZWQudHh0CmluZGV4IGE0ZGMxMjUxZThiMzg2YTFlZWVmYTQxYmNhOGVjMzFlNDY3YTM3
NjEuLjY1ZTRkZmNhZDdkMmIxOWEzMWY0MzA5MDkzNDlhMThkZWQ2Y2Q4YTMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWluZGV4ZWRkYi1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1v
cmlnaW4taW5kZXhlZGRiLWV4cGVjdGVkLnR4dApAQCAtMSwxMiArMSwxMiBAQAotVGhlIGZpcnN0
IGlmcmFtZSBiZWxvdyBzaG91bGQgcmV0dXJuIGEgc2VjdXJpdHkgZXJyb3IsIGFuZCB0aGUgc2Vj
b25kIHNob3VsZCBzdWNjZXNzZnVsbHkgb3BlbiB0aGUgZGF0YWJhc2UuCitCb3RoIGZyYW1lcyBj
YW4gc3VjY2Vzc2Z1bGx5IG9wZW4gdGhlIGRhdGFiYXNlLgogCiAgIAogCiAtLS0tLS0tLQogRnJh
bWU6ICc8IS0tZnJhbWUxLS0+JwogLS0tLS0tLS0KLXdpbmRvdy5pbmRleGVkREIuZGVsZXRlRGF0
YWJhc2UoKSB0aHJldyBhbiBleGNlcHRpb246IFNlY3VyaXR5RXJyb3IKLXdpbmRvdy5pbmRleGVk
REIub3BlbigpIHRocmV3IGFuIGV4Y2VwdGlvbjogU2VjdXJpdHlFcnJvcgorU3VjY2Vzc2Z1bGx5
IGNhbGxlZCB3aW5kb3cuaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCkuCitTdWNjZXNzZnVsbHkg
Y2FsbGVkIHdpbmRvdy5pbmRleGVkREIub3BlbigpLgogCiAKIC0tLS0tLS0tCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1pbmRleGVkZGIu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWluZGV4
ZWRkYi5odG1sCmluZGV4IGZkZTI2NDEyNWQyMDBkNWJmYTljZWQ3YzQ2MDQ4MGZhZjJjN2UzZWQu
LmQ0YWVmMDM2OGU0M2YxYjg0MTliOWZhMDYwODE0ZWRiMjU4NThjZjMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWluZGV4ZWRkYi5odG1s
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWluZGV4
ZWRkYi5odG1sCkBAIC0xNyw3ICsxNyw3IEBACiAgICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9k
eT4KLSAgICA8cD5UaGUgZmlyc3QgaWZyYW1lIGJlbG93IHNob3VsZCByZXR1cm4gYSBzZWN1cml0
eSBlcnJvciwgYW5kIHRoZSBzZWNvbmQgc2hvdWxkIHN1Y2Nlc3NmdWxseSBvcGVuIHRoZSBkYXRh
YmFzZS48L3A+CisgICAgPHA+Qm90aCBmcmFtZXMgY2FuIHN1Y2Nlc3NmdWxseSBvcGVuIHRoZSBk
YXRhYmFzZS48L3A+CiAgICAgPGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1
cml0eS9yZXNvdXJjZXMvY3Jvc3Mtb3JpZ2luLWlmcmFtZS1mb3ItaW5kZXhlZGRiLmh0bWwiIG9u
bG9hZD0iZGVjcmVtZW50KCkiPjwvaWZyYW1lPgogICAgIDxpZnJhbWUgc3JjPSJodHRwOi8vMTI3
LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi1pZnJhbWUtZm9yLWlu
ZGV4ZWRkYi5odG1sIiBvbmxvYWQ9ImRlY3JlbWVudCgpIj48L2lmcmFtZT4KIDwvYm9keT4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXdv
cmtlci1pbmRleGVkZGItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9jcm9zcy1vcmlnaW4td29ya2VyLWluZGV4ZWRkYi1leHBlY3RlZC50eHQKaW5kZXggNzI5
MjVhYWFiMTE0ZTdiZTAzYzAwYWEzNzMzZGFjOWIyMGVlYTIyMi4uM2I3MTFjNWMzYTE0YTdlYTAz
ODJjMDE5ZGQzZjM3NDEyNjQ2NTZlYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4td29ya2VyLWluZGV4ZWRkYi1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4td29ya2VyLWlu
ZGV4ZWRkYi1leHBlY3RlZC50eHQKQEAgLTEsMTIgKzEsMTIgQEAKLVRoZSBmaXJzdCBpZnJhbWUg
YmVsb3cgc2hvdWxkIHJldHVybiBhIHNlY3VyaXR5IGVycm9yLCBhbmQgdGhlIHNlY29uZCBzaG91
bGQgc3VjY2Vzc2Z1bGx5IG9wZW4gdGhlIGRhdGFiYXNlLgorQm90aCBmcmFtZXMgY2FuIHN1Y2Nl
c3NmdWxseSBvcGVuIHRoZSBkYXRhYmFzZS4KIAogICAKIAogLS0tLS0tLS0KIEZyYW1lOiAnPCEt
LWZyYW1lMS0tPicKIC0tLS0tLS0tCi1zZWxmLmluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgpIHRo
cmV3IGFuIGV4Y2VwdGlvbjogU2VjdXJpdHlFcnJvcgotc2VsZi5pbmRleGVkREIub3BlbigpIHRo
cmV3IGFuIGV4Y2VwdGlvbjogU2VjdXJpdHlFcnJvcgorU3VjY2Vzc2Z1bGx5IGNhbGxlZCBzZWxm
LmluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgpLgorU3VjY2Vzc2Z1bGx5IGNhbGxlZCBzZWxmLmlu
ZGV4ZWREQi5vcGVuKCkuCiAKIAogLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2RvY3VtZW50LWZvci1jcm9zcy1vcmlnaW4td29y
a2VyLWluZGV4ZWRkYi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNv
dXJjZXMvZG9jdW1lbnQtZm9yLWNyb3NzLW9yaWdpbi13b3JrZXItaW5kZXhlZGRiLmh0bWwKaW5k
ZXggZWJkMGIyNzBlYzBjZjBiMzdlZmRkZTg2Y2Y5NWM2YTVlYWY4MjYxYy4uOGVmN2MzOWUyMDQ3
NmM2NjI2Y2Q4MGRhMzUzOWQ2NTNmMWY0NjFmNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvZG9jdW1lbnQtZm9yLWNyb3NzLW9yaWdpbi13b3Jr
ZXItaW5kZXhlZGRiLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9y
ZXNvdXJjZXMvZG9jdW1lbnQtZm9yLWNyb3NzLW9yaWdpbi13b3JrZXItaW5kZXhlZGRiLmh0bWwK
QEAgLTE5LDcgKzE5LDcgQEAgd2luZG93Lm9ubWVzc2FnZSA9IGRlY3JlbWVudDsKIDwvc2NyaXB0
PgogPC9oZWFkPgogPGJvZHk+Ci0gICAgPHA+VGhlIGZpcnN0IGlmcmFtZSBiZWxvdyBzaG91bGQg
cmV0dXJuIGEgc2VjdXJpdHkgZXJyb3IsIGFuZCB0aGUgc2Vjb25kIHNob3VsZCBzdWNjZXNzZnVs
bHkgb3BlbiB0aGUgZGF0YWJhc2UuPC9wPgorICAgIDxwPkJvdGggZnJhbWVzIGNhbiBzdWNjZXNz
ZnVsbHkgb3BlbiB0aGUgZGF0YWJhc2UuPC9wPgogICAgIDxpZnJhbWUgc3JjPSJodHRwOi8vbG9j
YWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi1pZnJhbWUtZm9yLXdv
cmtlci1pbmRleGVkZGIuaHRtbCI+PC9pZnJhbWU+CiAgICAgPGlmcmFtZSBzcmM9Imh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3Mtb3JpZ2luLWlmcmFtZS1mb3It
d29ya2VyLWluZGV4ZWRkYi5odG1sIj48L2lmcmFtZT4KIDwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405019</attachid>
            <date>2020-07-23 00:30:05 -0700</date>
            <delta_ts>2020-07-23 14:21:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214583-20200723003004.patch</filename>
            <type>text/plain</type>
            <size>29950</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NzQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzU5NzJjYjU3NGNiZGIy
Yjc4Nzc2Zjk2MTE5MmJkOGViZWQ0YzdjNC4uNjgzOGM5MTE4MWEwNzcwMmQ0OWQ4ZDAzNWI4NTll
ODhlNjJhN2NkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIwLTA3LTIzICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgQWxsb3cgSW5kZXhlZERCIGlu
IHRoaXJkLXBhcnR5IGZyYW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE0NTgzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTI3ODQ4Nz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXRjaCBJbmRl
eGVkREIncyBiZWhhdmlvciB3aXRoIGxvY2FsU3RvcmFnZS4gVGhpcmQtcGFydHkgaWZyYW1lcyBu
b3cgaGF2ZSBhY2Nlc3MgdG8gSW5kZXhlZERCIHdpdGggcGFydGl0aW9uZWQKKyAgICAgICAgaW4t
bWVtb3J5IHN0b3JhZ2UuIFRoZSBwYXJ0aXRpb25pbmcga2V5IGlzIENsaWVudE9yaWdpbiwgd2hp
Y2ggY29uc2lzdHMgb2Ygb3BlbmluZyBvcmlnaW4gYW5kIHRvcCBvcmlnaW4uCisKKyAgICAgICAg
QVBJIFRlc3Q6IEluZGV4ZWREQi5JbmRleGVkREJUaGlyZFBhcnR5RnJhbWVIYXNBY2Nlc3MKKyAg
ICAgICAgICAgICAgICAgIEluZGV4ZWREQi5JbmRleGVkREJUaGlyZFBhcnR5RGF0YVJlbW92YWwK
KyAgICAgICAgICAgICAgICAgIEluZGV4ZWREQi5JbmRleGVkREJUaGlyZFBhcnR5V29ya2VySGFz
QWNjZXNzCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZp
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjpJREJEYXRh
YmFzZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6bV9pc1RyYW5zaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI6OmxvZ2dpbmdTdHJpbmcg
Y29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmll
ci5oOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjpoYXNoIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllcjo6b3BlcmF0b3I9PSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI6OmlzVHJhbnNp
ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllcjo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllcjo6ZGVj
b2RlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnNob3VsZFRocm93U2VjdXJpdHlFeGNlcHRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRmFjdG9yeTo6b3BlbkludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkZh
Y3Rvcnk6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVy
OjpjcmVhdGVCYWNraW5nU3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRE9N
V2luZG93V2ViRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93V2ViRGF0
YWJhc2U6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vzc0RhdGFiYXNlIGNvbnN0
KToKKwogMjAyMC0wNy0yMiAgQ29ucmFkIFNodWx0eiAgPGNvbnJhZF9zaHVsdHpAYXBwbGUuY29t
PgogCiAgICAgICAgIFVwZGF0ZSBtYWNPUyBWZXJzaW9uIG1hY3JvcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2MmI4
MjU2MzAyMTEzMmNjYjU5ODczNWVkMjU3YTY1N2FjMjBlOWViLi5iY2FkOGE0MzM2MjI4ODgyYWVh
YWNiNzViMTBkNWVjMDhiOTViYjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA3
LTIzICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgQWxsb3cgSW5k
ZXhlZERCIGluIHRoaXJkLXBhcnR5IGZyYW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NTgzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTI3
ODQ4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBE
byBubyBhcHBlbmQgZXh0cmEgc3BhY2UgdG8gZGlzcGxheU5hbWUgaWYgaG9zdCBpcyBlbXB0eS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkpOgor
CiAyMDIwLTA3LTIyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAg
IFtDb2NvYV0gQWRkIGZlYXR1cmUgZmxhZyBmb3IgV2ViTSAmIFZQOQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5j
cHAKaW5kZXggNTU1YjBjMTgxZWNiNjE4YTZkZjQ0MTgzMzA3MmFkZThkNjRkNTY1YS4uYTA2YTgw
YmQ1MDA4NWZkM2Y0Y2JmNGE1NGIxYmQ4ZTQwOWE0OGNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3Bw
CkBAIC0zNSw5ICszNSwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUlEQkRhdGFiYXNl
SWRlbnRpZmllcjo6SURCRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VO
YW1lLCBTZWN1cml0eU9yaWdpbkRhdGEmJiBvcGVuaW5nT3JpZ2luLCBTZWN1cml0eU9yaWdpbkRh
dGEmJiBtYWluRnJhbWVPcmlnaW4pCitJREJEYXRhYmFzZUlkZW50aWZpZXI6OklEQkRhdGFiYXNl
SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRh
JiYgb3BlbmluZ09yaWdpbiwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgbWFpbkZyYW1lT3JpZ2luLCBi
b29sIGlzVHJhbnNpZW50KQogICAgIDogbV9kYXRhYmFzZU5hbWUoZGF0YWJhc2VOYW1lKQogICAg
ICwgbV9vcmlnaW4geyBXVEZNb3ZlKG9wZW5pbmdPcmlnaW4pLCBXVEZNb3ZlKG1haW5GcmFtZU9y
aWdpbikgfQorICAgICwgbV9pc1RyYW5zaWVudChpc1RyYW5zaWVudCkKIHsKICAgICAvLyBUaGUg
ZW1wdHkgc3RyaW5nIGlzIGEgdmFsaWQgZGF0YWJhc2UgbmFtZSwgYnV0IGEgbnVsbCBzdHJpbmcg
aXMgbm90LgogICAgIEFTU0VSVCghZGF0YWJhc2VOYW1lLmlzTnVsbCgpKTsKQEAgLTQ5LDYgKzUw
LDcgQEAgSURCRGF0YWJhc2VJZGVudGlmaWVyIElEQkRhdGFiYXNlSWRlbnRpZmllcjo6aXNvbGF0
ZWRDb3B5KCkgY29uc3QKIAogICAgIGlkZW50aWZpZXIubV9kYXRhYmFzZU5hbWUgPSBtX2RhdGFi
YXNlTmFtZS5pc29sYXRlZENvcHkoKTsKICAgICBpZGVudGlmaWVyLm1fb3JpZ2luID0gbV9vcmln
aW4uaXNvbGF0ZWRDb3B5KCk7CisgICAgaWRlbnRpZmllci5tX2lzVHJhbnNpZW50ID0gbV9pc1Ry
YW5zaWVudDsKIAogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQpAQCAtNzMsNyArNzUsNyBAQCBT
dHJpbmcgSURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9S
b290KGNvbnN0IFNlY3VyaXR5T3JpZwogI2lmICFMT0dfRElTQUJMRUQKIFN0cmluZyBJREJEYXRh
YmFzZUlkZW50aWZpZXI6OmxvZ2dpbmdTdHJpbmcoKSBjb25zdAogewotICAgIHJldHVybiBtYWtl
U3RyaW5nKG1fZGF0YWJhc2VOYW1lLCAiQCIsIG1fb3JpZ2luLnRvcE9yaWdpbi5kZWJ1Z1N0cmlu
ZygpLCAiOiIsIG1fb3JpZ2luLmNsaWVudE9yaWdpbi5kZWJ1Z1N0cmluZygpKTsKKyAgICByZXR1
cm4gbWFrZVN0cmluZyhtX2RhdGFiYXNlTmFtZSwgIkAiLCBtX29yaWdpbi50b3BPcmlnaW4uZGVi
dWdTdHJpbmcoKSwgIjoiLCBtX29yaWdpbi5jbGllbnRPcmlnaW4uZGVidWdTdHJpbmcoKSwgbV9p
c1RyYW5zaWVudCA/ICIsIHRyYW5zaWVudCIgOiAiIik7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZp
ZXIuaAppbmRleCBhYzQ5YmExMjcxMmFiZGYyMDQ0NzJhN2IzMzQ2YjJmZWJhMGMxM2E4Li4zZWNh
Yjk3OTJkNGFhYTEzMGNhMTc1YjU5NmY5ODU1Yzc0OTZkOWNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaApA
QCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFdFQkNPUkVfRVhQ
T1JUIElEQkRhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgU2Vj
dXJpdHlPcmlnaW5EYXRhJiYgb3BlbmluZ09yaWdpbiwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgbWFp
bkZyYW1lT3JpZ2luKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBJREJEYXRhYmFzZUlkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIG9wZW5pbmdP
cmlnaW4sIFNlY3VyaXR5T3JpZ2luRGF0YSYmIG1haW5GcmFtZU9yaWdpbiwgYm9vbCBpc1RyYW5z
aWVudCA9IGZhbHNlKTsKIAogICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBpc29sYXRlZENvcHko
KSBjb25zdDsKIApAQCAtNTcsOCArNTcsOSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICB1bnNp
Z25lZCBuYW1lSGFzaCA9IFN0cmluZ0hhc2g6Omhhc2gobV9kYXRhYmFzZU5hbWUpOwogICAgICAg
ICB1bnNpZ25lZCBvcmlnaW5IYXNoID0gbV9vcmlnaW4uaGFzaCgpOworICAgICAgICB1bnNpZ25l
ZCB0cmFuc2llbnRIYXNoID0gbV9pc1RyYW5zaWVudDsKIAotICAgICAgICB1bnNpZ25lZCBoYXNo
Q29kZXNbMl0gPSB7IG5hbWVIYXNoLCBvcmlnaW5IYXNoIH07CisgICAgICAgIHVuc2lnbmVkIGhh
c2hDb2Rlc1szXSA9IHsgbmFtZUhhc2gsIG9yaWdpbkhhc2gsIHRyYW5zaWVudEhhc2ggfTsKICAg
ICAgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxzaXplb2YoaGFzaENvZGVzKT4o
aGFzaENvZGVzKTsKICAgICB9CiAKQEAgLTc1LDExICs3NiwxMiBAQCBwdWJsaWM6CiAKICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBvdGhlcikgY29uc3QK
ICAgICB7Ci0gICAgICAgIHJldHVybiBvdGhlci5tX2RhdGFiYXNlTmFtZSA9PSBtX2RhdGFiYXNl
TmFtZSAmJiBvdGhlci5tX29yaWdpbiA9PSBtX29yaWdpbjsKKyAgICAgICAgcmV0dXJuIG90aGVy
Lm1fZGF0YWJhc2VOYW1lID09IG1fZGF0YWJhc2VOYW1lICYmIG90aGVyLm1fb3JpZ2luID09IG1f
b3JpZ2luICYmIG90aGVyLm1faXNUcmFuc2llbnQgPT0gbV9pc1RyYW5zaWVudDsKICAgICB9CiAK
ICAgICBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJh
c2VOYW1lOyB9CiAgICAgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4oKSBjb25zdCB7IHJldHVy
biBtX29yaWdpbjsgfQorICAgIGJvb2wgaXNUcmFuc2llbnQoKSBjb25zdCB7IHJldHVybiBtX2lz
VHJhbnNpZW50OyB9CiAKICAgICBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9v
dChjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmlu
Zz0idjEiKSBjb25zdDsKICAgICBzdGF0aWMgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UmVsYXRp
dmVUb1Jvb3QoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BMZXZlbE9yaWdpbiwgY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBvcGVuaW5nT3JpZ2luLCBjb25zdCBTdHJpbmcmIHJvb3REaXJl
Y3RvcnksIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZyk7CkBAIC05Niw2ICs5OCw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fZGF0YWJhc2VOYW1lOwogICAgIENsaWVudE9y
aWdpbiBtX29yaWdpbjsKKyAgICBib29sIG1faXNUcmFuc2llbnQgeyBmYWxzZSB9OwogfTsKIAog
c3RydWN0IElEQkRhdGFiYXNlSWRlbnRpZmllckhhc2ggewpAQCAtMTEzLDcgKzExNiw3IEBAIHN0
cnVjdCBJREJEYXRhYmFzZUlkZW50aWZpZXJIYXNoVHJhaXRzIDogV1RGOjpTaW1wbGVDbGFzc0hh
c2hUcmFpdHM8SURCRGF0YWJhc2VJCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBJREJE
YXRhYmFzZUlkZW50aWZpZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAg
IGVuY29kZXIgPDwgbV9kYXRhYmFzZU5hbWUgPDwgbV9vcmlnaW47CisgICAgZW5jb2RlciA8PCBt
X2RhdGFiYXNlTmFtZSA8PCBtX29yaWdpbiA8PCBtX2lzVHJhbnNpZW50OwogfQogCiB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPgpAQCAtMTI5LDkgKzEzMiwxNSBAQCBPcHRpb25hbDxJREJEYXRhYmFz
ZUlkZW50aWZpZXI+IElEQkRhdGFiYXNlSWRlbnRpZmllcjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiAgICAgaWYgKCFvcmlnaW4pCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKKyAg
ICBPcHRpb25hbDxib29sPiBpc1RyYW5zaWVudDsKKyAgICBkZWNvZGVyID4+IGlzVHJhbnNpZW50
OworICAgIGlmICghaXNUcmFuc2llbnQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
ICAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgaWRlbnRpZmllcjsKICAgICBpZGVudGlmaWVyLm1f
ZGF0YWJhc2VOYW1lID0gV1RGTW92ZSgqZGF0YWJhc2VOYW1lKTsgLy8gRklYTUU6IFdoZW4gZGVj
b2RpbmcgZnJvbSBJUEMsIGRhdGFiYXNlTmFtZSBjYW4gYmUgbnVsbCwgYW5kIHRoZSBub24tZW1w
dHkgY29uc3RydWN0b3IgYXNzZXJ0cyB0aGF0IHRoaXMgaXMgbm90IHRoZSBjYXNlLgogICAgIGlk
ZW50aWZpZXIubV9vcmlnaW4gPSBXVEZNb3ZlKCpvcmlnaW4pOworICAgIGlkZW50aWZpZXIubV9p
c1RyYW5zaWVudCA9ICppc1RyYW5zaWVudDsKICAgICByZXR1cm4gaWRlbnRpZmllcjsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAppbmRl
eCBhNDg3MjdiMDAzYjQ4Njc3NmUwMWY1Yjc0ODI2ZDU2NTUzNGJjYmMzLi4zMDc3NWVjODk1MDVl
NWNmMzI1ZTBmZTE0NzFlOGIzY2ZkZjAyOWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcApAQCAtNTQsNyArNTQsNyBAQCBzdGF0aWMgYm9v
bCBzaG91bGRUaHJvd1NlY3VyaXR5RXhjZXB0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoIWNvbnRl
eHQuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJhc2UoY29udGV4dC50b3BPcmlnaW4o
KSkpCisgICAgaWYgKCFjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0RhdGFiYXNl
KG51bGxwdHIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsKQEAg
LTkxLDcgKzkxLDggQEAgRXhjZXB0aW9uT3I8UmVmPElEQk9wZW5EQlJlcXVlc3Q+PiBJREJGYWN0
b3J5OjpvcGVuSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGUKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJJREJGYWN0b3J5Lm9wZW4oKSBjYWxsZWQgaW4gYW4g
aW52YWxpZCBzZWN1cml0eSBjb250ZXh0Il9zIH07CiAKICAgICBBU1NFUlQoY29udGV4dC5zZWN1
cml0eU9yaWdpbigpKTsKLSAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgZGF0YWJhc2VJZGVudGlm
aWVyKG5hbWUsIFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKS0+
ZGF0YSgpIH0sIFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0YSgp
IH0pOworICAgIGJvb2wgaXNUcmFuc2llbnQgPSAhY29udGV4dC5zZWN1cml0eU9yaWdpbigpLT5j
YW5BY2Nlc3NEYXRhYmFzZSgmY29udGV4dC50b3BPcmlnaW4oKSk7CisgICAgSURCRGF0YWJhc2VJ
ZGVudGlmaWVyIGRhdGFiYXNlSWRlbnRpZmllcihuYW1lLCBTZWN1cml0eU9yaWdpbkRhdGEgeyBj
b250ZXh0LnNlY3VyaXR5T3JpZ2luKCktPmRhdGEoKSB9LCBTZWN1cml0eU9yaWdpbkRhdGEgeyBj
b250ZXh0LnRvcE9yaWdpbigpLmRhdGEoKSB9LCBpc1RyYW5zaWVudCk7CiAgICAgaWYgKCFkYXRh
YmFzZUlkZW50aWZpZXIuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlw
ZUVycm9yLCAiSURCRmFjdG9yeS5vcGVuKCkgY2FsbGVkIHdpdGggYW4gaW52YWxpZCBzZWN1cml0
eSBvcmlnaW4iX3MgfTsKIApAQCAtMTExLDcgKzExMiw4IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJP
cGVuREJSZXF1ZXN0Pj4gSURCRmFjdG9yeTo6ZGVsZXRlRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9u
Q29uCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yLCAiSURCRmFjdG9y
eS5kZWxldGVEYXRhYmFzZSgpIGNhbGxlZCBpbiBhbiBpbnZhbGlkIHNlY3VyaXR5IGNvbnRleHQi
X3MgfTsKIAogICAgIEFTU0VSVChjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCkpOwotICAgIElEQkRh
dGFiYXNlSWRlbnRpZmllciBkYXRhYmFzZUlkZW50aWZpZXIobmFtZSwgU2VjdXJpdHlPcmlnaW5E
YXRhIHsgY29udGV4dC5zZWN1cml0eU9yaWdpbigpLT5kYXRhKCkgfSwgU2VjdXJpdHlPcmlnaW5E
YXRhIHsgY29udGV4dC50b3BPcmlnaW4oKS5kYXRhKCkgfSk7CisgICAgYm9vbCBpc1RyYW5zaWVu
dCA9ICFjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0RhdGFiYXNlKCZjb250ZXh0
LnRvcE9yaWdpbigpKTsKKyAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgZGF0YWJhc2VJZGVudGlm
aWVyKG5hbWUsIFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKS0+
ZGF0YSgpIH0sIFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0YSgp
IH0sIGlzVHJhbnNpZW50KTsKICAgICBpZiAoIWRhdGFiYXNlSWRlbnRpZmllci5pc1ZhbGlkKCkp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJJREJGYWN0b3J5LmRlbGV0
ZURhdGFiYXNlKCkgY2FsbGVkIHdpdGggYW4gaW52YWxpZCBzZWN1cml0eSBvcmlnaW4iX3MgfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VydmVyLmNwcAppbmRleCAxYTk3YzcxNDgxOGRjMTlhMzRlMTkxZWNkOGVhODU0OTAwOTg5NDA0
Li4zMDJkMWE3MDEyYzRhOWYwYjcyZWQ1YjBmNGM3MDFjZWU0MzAwNmVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcApA
QCAtMTMzLDYgKzEzMywxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCQmFja2luZ1N0b3JlPiBJREJT
ZXJ2ZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZQogICAgIGlmIChkYXRh
YmFzZURpcmVjdG9yeVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxN
ZW1vcnlJREJCYWNraW5nU3RvcmU+KG1fc2Vzc2lvbklELCBpZGVudGlmaWVyKTsKIAorICAgIEFT
U0VSVCghbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7CisgICAgaWYgKGlkZW50aWZpZXIuaXNU
cmFuc2llbnQoKSkKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5SURCQmFja2luZ1N0
b3JlPihtX3Nlc3Npb25JRCwgaWRlbnRpZmllcik7CisKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxT
UUxpdGVJREJCYWNraW5nU3RvcmU+KG1fc2Vzc2lvbklELCBpZGVudGlmaWVyLCBkYXRhYmFzZURp
cmVjdG9yeVBhdGgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RPTVdpbmRvd1dlYkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwCmluZGV4IDFjY2ZlYTYwMTJk
NmVjNTU4MDU3OTNiZjQzYmMxNWYwMDAzMGJmZDMuLjhhYzJhZDZhZjVlNGEzYmZmODRjMjY3NmMw
ZTI0ZTZiYmMyZjNiNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwCkBAIC00OCw3ICs0OCw3IEBA
IEV4Y2VwdGlvbk9yPFJlZlB0cjxEYXRhYmFzZT4+IERPTVdpbmRvd1dlYkRhdGFiYXNlOjpvcGVu
RGF0YWJhc2UoRE9NV2luZG93JiB3aW5kCiAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2U6OlN0b3JhZ2UsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIldlYiBTUUwg
aXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBJbmRleGVkREIgaW5zdGVhZC4iKTsKIAogICAgIGF1
dG8mIHNlY3VyaXR5T3JpZ2luID0gZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgaWYg
KCFzZWN1cml0eU9yaWdpbi5jYW5BY2Nlc3NEYXRhYmFzZShkb2N1bWVudC0+dG9wT3JpZ2luKCkp
KQorICAgIGlmICghc2VjdXJpdHlPcmlnaW4uY2FuQWNjZXNzRGF0YWJhc2UoJmRvY3VtZW50LT50
b3BPcmlnaW4oKSkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yIH07
CiAgICAgYXV0byByZXN1bHQgPSBtYW5hZ2VyLm9wZW5EYXRhYmFzZSgqd2luZG93LmRvY3VtZW50
KCksIG5hbWUsIHZlcnNpb24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplLCBXVEZNb3ZlKGNy
ZWF0aW9uQ2FsbGJhY2spKTsKICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKaW5kZXggNzg2N2JjYzllZWJmZDFkOTdmNjc3YjA3
MjQ5M2EwYmRkYjQwN2M0Ny4uMjA3ZjhhOGFhNjM5MDg0MDRiMDAwMjQ0ODBhOWFlZTJkYzRiMjY5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaApAQCAtMTQ4LDcgKzE0OCw3IEBA
IHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkb21haW5Gb3JDYWNoZVBhcnRp
dGlvbigpIGNvbnN0OwogCi0gICAgYm9vbCBjYW5BY2Nlc3NEYXRhYmFzZShjb25zdCBTZWN1cml0
eU9yaWdpbiYgdG9wT3JpZ2luKSBjb25zdCB7IHJldHVybiBjYW5BY2Nlc3NTdG9yYWdlKCZ0b3BP
cmlnaW4pOyB9OworICAgIGJvb2wgY2FuQWNjZXNzRGF0YWJhc2UoY29uc3QgU2VjdXJpdHlPcmln
aW4qIHRvcE9yaWdpbikgY29uc3QgeyByZXR1cm4gY2FuQWNjZXNzU3RvcmFnZSh0b3BPcmlnaW4p
OyB9OwogICAgIGJvb2wgY2FuQWNjZXNzU2Vzc2lvblN0b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmln
aW4mIHRvcE9yaWdpbikgY29uc3QgeyByZXR1cm4gY2FuQWNjZXNzU3RvcmFnZSgmdG9wT3JpZ2lu
LCBBbHdheXNBbGxvd0Zyb21UaGlyZFBhcnR5KTsgfQogICAgIGJvb2wgY2FuQWNjZXNzTG9jYWxT
dG9yYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pIGNvbnN0IHsgcmV0dXJuIGNh
bkFjY2Vzc1N0b3JhZ2UodG9wT3JpZ2luKTsgfTsKICAgICBib29sIGNhbkFjY2Vzc1BsdWdpblN0
b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbikgY29uc3QgeyByZXR1cm4gY2Fu
QWNjZXNzU3RvcmFnZSgmdG9wT3JpZ2luKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCAxZGQ1YTNh
OThjMjMzOGVmM2RkYzFkYWYwNmQyMDlhZjc5NDgyOGEzLi4xZGFhYzU0MDIwNTgxZjdhYTdmODE5
YjRiNDUwMmNlNmM3OThiODkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMzExLDcgKzMxMSw4IEBA
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkoT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPCiAgICAgICAgICAgICAgICAgICAgIGlmICghYWxsb3dz
V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2lucykKICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lID0gbWFrZVN0cmlu
ZyhlbnRyeS5vcmlnaW4ucHJvdG9jb2wsICIgIiwgZW50cnkub3JpZ2luLmhvc3QpOworICAgICAg
ICAgICAgICAgICAgICBTdHJpbmcgaG9zdFN0cmluZyA9IGVudHJ5Lm9yaWdpbi5ob3N0LmlzRW1w
dHkoKSA/ICIiIDogbWFrZVN0cmluZygiICIsIGVudHJ5Lm9yaWdpbi5ob3N0KTsKKyAgICAgICAg
ICAgICAgICAgICAgZGlzcGxheU5hbWUgPSBtYWtlU3RyaW5nKGVudHJ5Lm9yaWdpbi5wcm90b2Nv
bCwgaG9zdFN0cmluZyk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgYXV0
byYgcmVjb3JkID0gbV93ZWJzaXRlRGF0YVJlY29yZHMuYWRkKGRpc3BsYXlOYW1lLCBXZWJzaXRl
RGF0YVJlY29yZCB7IH0pLml0ZXJhdG9yLT52YWx1ZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlYzE1YzQ5MWZmNzE1MDllNjA5NTE2MjkyYWNh
OWE1YjQzMDkyYmQzLi43MTMyMzZhZTY3YjU3OGQ3OTc2ZGY2OGVmY2MxYzEwYWEyY2M2YmVlIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMjAtMDctMjMgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBlLmNvbT4KKwor
ICAgICAgICBBbGxvdyBJbmRleGVkREIgaW4gdGhpcmQtcGFydHkgZnJhbWVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ1ODMKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzYxMjc4NDg3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVk
REJQZXJzaXN0ZW5jZS5tbToKKyAgICAgICAgKHBvc3RSZXN1bHQpOgorICAgICAgICAoY2F0Y2gp
OgorCiAyMDIwLTA3LTIyICBDb25yYWQgU2h1bHR6ICA8Y29ucmFkX3NodWx0ekBhcHBsZS5jb20+
CiAKICAgICAgICAgVXBkYXRlIG1hY09TIFZlcnNpb24gbWFjcm9zCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0
ZW5jZS5tbQppbmRleCBmNDg4MGExOGRkOTIzYmIxNmYwMTEwNzI1OTRiZjczYWI5YmRiYWE0Li5i
MzJjZTRhNWY3Mzg2M2FlZGRjYjkxOTBiNWI0MzcwZTM3NDQzYjVlIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCUGVy
c2lzdGVuY2UubW0KQEAgLTI3LDExICsyNywxMyBAQAogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxp
dGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiVGVzdFVSTFNjaGVtZUhhbmRsZXIu
aCIKICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQ
b29sUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJp
dmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+
CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dL
V2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPFdlYktpdC9fV0tVc2VyU3R5bGVTaGVldC5oPgog
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgpAQCAtMTc5LDMgKzE4MSwyMTMgQEAgVEVTVChJbmRl
eGVkREIsIEluZGV4ZWREQkRhdGFSZW1vdmFsKQogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKIH0KKworc3RhdGljIE5TU3RyaW5nICptYWlu
RnJhbWVTdHJpbmcgPSBAIjxzY3JpcHQ+IFwKKyAgICBmdW5jdGlvbiBwb3N0UmVzdWx0KGV2ZW50
KSB7IFwKKyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIu
cG9zdE1lc3NhZ2UoZXZlbnQuZGF0YSk7IFwKKyAgICB9IFwKKyAgICBhZGRFdmVudExpc3RlbmVy
KCdtZXNzYWdlJywgcG9zdFJlc3VsdCwgZmFsc2UpOyBcCisgICAgPC9zY3JpcHQ+IFwKKyAgICA8
aWZyYW1lIHNyYz0naWZyYW1lOi8vJz4iOworCitzdGF0aWMgY29uc3QgY2hhciogaWZyYW1lQnl0
ZXMgPSBSIlRFU1RSRVNPVVJDRSgKKzxzY3JpcHQ+CitmdW5jdGlvbiBwb3N0UmVzdWx0KHJlc3Vs
dCkgeworICAgIGlmICh3aW5kb3cucGFyZW50ICE9IHdpbmRvdy50b3ApIHsKKyAgICAgICAgcGFy
ZW50LnBvc3RNZXNzYWdlKHJlc3VsdCwgJyonKTsKKyAgICB9IGVsc2UgeworICAgICAgICB3aW5k
b3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShyZXN1bHQp
OworICAgIH0KK30KKwordHJ5IHsKKyAgICB2YXIgcmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIu
b3BlbignSW5kZXhlZERCVGhpcmRQYXJ0eUZyYW1lSGFzQWNjZXNzJyk7CisgICAgdmFyIGRiID0g
bnVsbDsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Cisg
ICAgICAgIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgdmFyIG9iamVjdFN0b3Jl
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ1Rlc3RPYmplY3RTdG9yZScpOworICAgICAgICB2YXIg
cHV0UmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgnVGVzdFZhbHVlJywgJ1Rlc3RLZXknKTsKKyAg
ICAgICAgcHV0UmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAg
ICAgcG9zdFJlc3VsdCgnZGF0YWJhc2UgaXMgY3JlYXRlZCAtIHB1dCBpdGVtIHN1Y2Nlc3MnKTsK
KyAgICAgICAgfQorICAgICAgICBwdXRSZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkg
eworICAgICAgICAgICAgcG9zdFJlc3VsdCgnZGF0YWJhc2UgaXMgY3JlYXRlZCAtIHB1dCBpdGVt
IGVycm9yOiAnICsgZXZlbnQudGFyZ2V0LmVycm9yLm5hbWUgKyAnIC0gJyArIGV2ZW50LnRhcmdl
dC5lcnJvci5tZXNzYWdlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGlmIChkYikKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgICAgICB2YXIgb2JqZWN0
U3RvcmUgPSBkYi50cmFuc2FjdGlvbihbJ1Rlc3RPYmplY3RTdG9yZSddKS5vYmplY3RTdG9yZSgn
VGVzdE9iamVjdFN0b3JlJyk7CisgICAgICAgIHZhciBnZXRSZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
Z2V0KCdUZXN0S2V5Jyk7CisgICAgICAgIGdldFJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24o
ZXZlbnQpIHsKKyAgICAgICAgICAgIHBvc3RSZXN1bHQoJ2RhdGFiYXNlIGV4aXN0cyAtIGdldCBp
dGVtIHN1Y2Nlc3M6ICcgKyBldmVudC50YXJnZXQucmVzdWx0KTsKKyAgICAgICAgfQorICAgICAg
ICBnZXRSZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgcG9z
dFJlc3VsdCgnZGF0YWJhc2UgZXhpc3RzIC0gZ2V0IGl0ZW0gZXJyb3I6ICcgKyBldmVudC50YXJn
ZXQuZXJyb3IubmFtZSArICcgLSAnICsgZXZlbnQudGFyZ2V0LmVycm9yLm1lc3NhZ2UpOworICAg
ICAgICB9CisgICAgfQorICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Cisg
ICAgICAgIGlmICghZGIpIHsKKyAgICAgICAgICAgIHBvc3RSZXN1bHQoJ2RhdGFiYXNlIGVycm9y
OiAnICsgZXZlbnQudGFyZ2V0LmVycm9yLm5hbWUgKyAnIC0gJyArIGV2ZW50LnRhcmdldC5lcnJv
ci5tZXNzYWdlKTsKKyAgICAgICAgfQorICAgIH0KK30gY2F0Y2goZXJyKSB7CisgICAgcG9zdFJl
c3VsdCgnZGF0YWJhc2UgZXJyb3I6ICcgKyBlcnIubmFtZSArICcgLSAnICsgZXJyLm1lc3NhZ2Up
OworfQorPC9zY3JpcHQ+CispVEVTVFJFU09VUkNFIjsKKworc3RhdGljIHZvaWQgbG9hZFRlc3RQ
YWdlSW5XZWJWaWV3KFdLV2ViVmlldyAqd2ViVmlldywgTlNTdHJpbmcgKmV4cGVjdGVkUmVzdWx0
KQoreworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOm1haW5GcmFtZVN0cmluZyBiYXNlVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmciXV07CisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAgIHJlY2VpdmVk
U2NyaXB0TWVzc2FnZSA9IGZhbHNlOworICAgIEVYUEVDVF9XS19TVFJFUShleHBlY3RlZFJlc3Vs
dCwgKE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKK30KKworVEVTVChJbmRl
eGVkREIsIEluZGV4ZWREQlRoaXJkUGFydHlGcmFtZUhhc0FjY2VzcykKK3sKKyAgICBhdXRvIGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOworICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tJbmRleGVkREJNZXNzYWdlSGFuZGxl
ciBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xs
ZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5k
bGVyIl07CisgICAgYXV0byBzY2hlbWVIYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RVUkxTY2hlbWVI
YW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW3NjaGVtZUhhbmRsZXIgc2V0U3RhcnRVUkxTY2hl
bWVUYXNrSGFuZGxlcjpeKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsK
KyAgICAgICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBp
bml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3Rl
ZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOworICAgICAgICBbdGFzayBk
aWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UuZ2V0KCldOworICAgICAgICBbdGFzayBkaWRSZWNl
aXZlRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6aWZyYW1lQnl0ZXMgbGVuZ3RoOnN0cmxlbihp
ZnJhbWVCeXRlcyldXTsKKyAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKKyAgICB9XTsKKyAgICBb
Y29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9y
VVJMU2NoZW1lOkAiaWZyYW1lIl07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGxvYWRUZXN0UGFnZUluV2Vi
Vmlldyh3ZWJWaWV3LmdldCgpLCBAImRhdGFiYXNlIGlzIGNyZWF0ZWQgLSBwdXQgaXRlbSBzdWNj
ZXNzIik7CisKKyAgICBhdXRvIHNlY29uZFdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGxvYWRUZXN0UGFnZUluV2ViVmlldyhzZWNv
bmRXZWJWaWV3LmdldCgpLCBAImRhdGFiYXNlIGV4aXN0cyAtIGdldCBpdGVtIHN1Y2Nlc3M6IFRl
c3RWYWx1ZSIpOworCisgICAgd2ViVmlldyA9IG5pbDsKKyAgICBzZWNvbmRXZWJWaWV3ID0gbmls
OworICAgIFtjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sIF90ZXJtaW5hdGVOZXR3b3Jr
UHJvY2Vzc107CisKKyAgICAvLyBUaGlyZC1wYXJ0eSBJREIgc3RvcmFnZSBpcyBzdG9yZWQgaW4g
dGhlIG1lbW9yeSBvZiBuZXR3b3JrIHByb2Nlc3MuCisgICAgYXV0byB0aGlyZFdlYlZpZXcgPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
ODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGxvYWRU
ZXN0UGFnZUluV2ViVmlldyh0aGlyZFdlYlZpZXcuZ2V0KCksIEAiZGF0YWJhc2UgaXMgY3JlYXRl
ZCAtIHB1dCBpdGVtIHN1Y2Nlc3MiKTsKK30KKworVEVTVChJbmRleGVkREIsIEluZGV4ZWREQlRo
aXJkUGFydHlEYXRhUmVtb3ZhbCkKK3sKKyAgICBhdXRvIHdlYnNpdGVEYXRhVHlwZXMgPSBhZG9w
dE5TKFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoQXJyYXk6QFtXS1dlYnNpdGVEYXRhVHlwZUluZGV4
ZWREQkRhdGFiYXNlc11dKTsKKyAgICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKKyAgICBbW1dL
V2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczp3ZWJz
aXRlRGF0YVR5cGVzLmdldCgpIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29t
cGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKKyAg
ICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7CisK
KyAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9y
aWdpbnNdOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtb
SW5kZXhlZERCTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRp
b24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVy
LmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOworICAgIGF1dG8gc2NoZW1lSGFuZGxlciA9IGFk
b3B0TlMoW1tUZXN0VVJMU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtzY2hlbWVI
YW5kbGVyIHNldFN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXI6XihXS1dlYlZpZXcgKiwgaWQ8V0tV
UkxTY2hlbWVUYXNrPiB0YXNrKSB7CisgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtb
TlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlw
ZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpu
aWxdKTsKKyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLmdldCgpXTsK
KyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmlmcmFt
ZUJ5dGVzIGxlbmd0aDpzdHJsZW4oaWZyYW1lQnl0ZXMpXV07CisgICAgICAgIFt0YXNrIGRpZEZp
bmlzaF07CisgICAgfV07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpz
Y2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAImlmcmFtZSJdOworCisgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
KyAgICBsb2FkVGVzdFBhZ2VJbldlYlZpZXcod2ViVmlldy5nZXQoKSwgQCJkYXRhYmFzZSBpcyBj
cmVhdGVkIC0gcHV0IGl0ZW0gc3VjY2VzcyIpOworCisgICAgYXV0byBzZWNvbmRXZWJWaWV3ID0g
YWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbc2Vj
b25kV2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VS
TCBVUkxXaXRoU3RyaW5nOkAiaWZyYW1lOi8vIl1dXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdl
ID0gZmFsc2U7CisgICAgRVhQRUNUX1dLX1NUUkVRKCBAImRhdGFiYXNlIGlzIGNyZWF0ZWQgLSBw
dXQgaXRlbSBzdWNjZXNzIiwgKE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsK
KworICAgIHJlYWR5VG9Db250aW51ZSA9IGZhbHNlOworICAgIFtbV0tXZWJzaXRlRGF0YVN0b3Jl
IGRlZmF1bHREYXRhU3RvcmVdIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOndlYnNpdGVEYXRhVHlw
ZXMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQg
Kj4gKmRhdGFSZWNvcmRzKSB7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgZGF0YVJlY29yZHMuY291
bnQpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoImlmcmFtZSIsIFtbZGF0YVJlY29yZHMgZmly
c3RPYmplY3RdIGRpc3BsYXlOYW1lXSk7CisgICAgICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRl
ZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOndlYnNpdGVEYXRhVHlwZXMuZ2V0KCkg
Zm9yRGF0YVJlY29yZHM6ZGF0YVJlY29yZHMgY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAg
ICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7CisgICAgICAgIH1dOworICAgIH1dOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKKworICAgIGF1dG8g
dGhpcmRXZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKKyAgICBsb2FkVGVzdFBhZ2VJbldlYlZpZXcodGhpcmRXZWJWaWV3LmdldCgpLCBAImRh
dGFiYXNlIGlzIGNyZWF0ZWQgLSBwdXQgaXRlbSBzdWNjZXNzIik7Cit9CisKK3N0YXRpYyBjb25z
dCBjaGFyKiB3b3JrZXJCeXRlcyA9IFIiVEVTVFJFU09VUkNFKAordHJ5IHsKKyAgICB2YXIgcmVx
dWVzdCA9IGluZGV4ZWREQi5vcGVuKCdJbmRleGVkREJUaGlyZFBhcnR5V29ya2VySGFzQWNjZXNz
Jyk7CisgICAgdmFyIGRiID0gbnVsbDsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1
bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAg
ICAgc2VsZi5wb3N0TWVzc2FnZSgnZGF0YWJhc2UgaXMgY3JlYXRlZCcpOworICAgIH0KKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGlmIChkYikKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSgnZGF0YWJhc2UgZXhp
c3RzJyk7CisgICAgfQorICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Cisg
ICAgICAgIGlmICghZGIpIHsKKyAgICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoJ2RhdGFiYXNl
IGVycm9yOiAnICsgZXZlbnQudGFyZ2V0LmVycm9yLm5hbWUgKyAnIC0gJyArIGV2ZW50LnRhcmdl
dC5lcnJvci5tZXNzYWdlKTsKKyAgICAgICAgfQorICAgIH0KK30gY2F0Y2goZXJyKSB7CisgICAg
c2VsZi5wb3N0TWVzc2FnZSgnZGF0YWJhc2UgZXJyb3I6ICcgKyBlcnIubmFtZSArICcgLSAnICsg
ZXJyLm1lc3NhZ2UpOworfQorKVRFU1RSRVNPVVJDRSI7CisKK3N0YXRpYyBjb25zdCBjaGFyKiB3
b3JrZXJGcmFtZUJ5dGVzID0gUiJURVNUUkVTT1VSQ0UoCis8c2NyaXB0PgorICAgIHZhciB3b3Jr
ZXIgPSBuZXcgV29ya2VyKCd3b3JrZXIuanMnKTsKKyAgICB3b3JrZXIub25tZXNzYWdlID0gZnVu
Y3Rpb24oZXZlbnQpIHsKKyAgICAgICAgcGFyZW50LnBvc3RNZXNzYWdlKGV2ZW50LmRhdGEsICcq
Jyk7CisgICAgfTsKKzwvc2NyaXB0PgorKVRFU1RSRVNPVVJDRSI7CisKK1RFU1QoSW5kZXhlZERC
LCBJbmRleGVkREJUaGlyZFBhcnR5V29ya2VySGFzQWNjZXNzKQoreworICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW0luZGV4ZWREQk1lc3NhZ2VIYW5kbGVyIGFs
bG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0g
YWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIi
XTsKKyAgICBhdXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdFVSTFNjaGVtZUhhbmRs
ZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbc2NoZW1lSGFuZGxlciBzZXRTdGFydFVSTFNjaGVtZVRh
c2tIYW5kbGVyOl4oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgeworICAg
ICAgICBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gcmVzcG9uc2U7CisgICAgICAgIFJldGFpblB0
cjxOU0RhdGE+IGRhdGE7CisgICAgICAgIE5TVVJMICpyZXF1ZXN0VVJMID0gdGFzay5yZXF1ZXN0
LlVSTDsKKyAgICAgICAgaWYgKFtyZXF1ZXN0VVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0
cmluZzpAImlmcmFtZTovLyJdKSB7CisgICAgICAgICAgICByZXNwb25zZSA9IGFkb3B0TlMoW1tO
U1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpyZXF1ZXN0VVJMIE1JTUVUeXBlOkAidGV4
dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOwor
ICAgICAgICAgICAgZGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczp3b3JrZXJGcmFtZUJ5dGVz
IGxlbmd0aDpzdHJsZW4od29ya2VyRnJhbWVCeXRlcyldOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJpZnJhbWU6Ly93b3JrZXIuanMiLCByZXF1ZXN0VVJM
LmFic29sdXRlU3RyaW5nKTsKKyAgICAgICAgICAgIHJlc3BvbnNlID0gYWRvcHROUyhbW05TVVJM
UmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnJlcXVlc3RVUkwgTUlNRVR5cGU6QCJ0ZXh0L2ph
dmFzY3JpcHQiIGV4cGVjdGVkQ29udGVudExlbmd0aDowIHRleHRFbmNvZGluZ05hbWU6bmlsXSk7
CisgICAgICAgICAgICBkYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOndvcmtlckJ5dGVzIGxl
bmd0aDpzdHJsZW4od29ya2VyQnl0ZXMpXTsKKyAgICAgICAgfQorICAgICAgICBbdGFzayBkaWRS
ZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UuZ2V0KCldOworICAgICAgICBbdGFzayBkaWRSZWNlaXZl
RGF0YTpkYXRhLmdldCgpXTsKKyAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKKyAgICB9XTsKKyAg
ICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkg
Zm9yVVJMU2NoZW1lOkAiaWZyYW1lIl07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGxvYWRUZXN0UGFnZUlu
V2ViVmlldyh3ZWJWaWV3LmdldCgpLCBAImRhdGFiYXNlIGlzIGNyZWF0ZWQiKTsKKworICAgIGF1
dG8gc2Vjb25kV2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
LmdldCgpXSk7CisgICAgbG9hZFRlc3RQYWdlSW5XZWJWaWV3KHdlYlZpZXcuZ2V0KCksIEAiZGF0
YWJhc2UgZXhpc3RzIik7CisKKyAgICB3ZWJWaWV3ID0gbmlsOworICAgIHNlY29uZFdlYlZpZXcg
PSBuaWw7CisgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgX3Rlcm1pbmF0ZU5l
dHdvcmtQcm9jZXNzXTsKKworICAgIGF1dG8gdGhpcmRXZWJWaWV3ID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBsb2FkVGVzdFBhZ2VJbldlYlZp
ZXcodGhpcmRXZWJWaWV3LmdldCgpLCBAImRhdGFiYXNlIGlzIGNyZWF0ZWQiKTsKK30KKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDQ5MzdjODRiMWUwYTM5M2FiZGI1Y2I1MmE0MDI0NTk3MWM4ODYwZDguLjdjZjhjYWRjNDZj
ODJjMjg1ODViYzdhZjAwMWI1NmZhOWU5NzcwYTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAy
MC0wNy0yMyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGUuY29tPgorCisgICAgICAgIEFsbG93
IEluZGV4ZWREQiBpbiB0aGlyZC1wYXJ0eSBmcmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDU4MworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NjEyNzg0ODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXBkYXRlIHRlc3QgZXhwZWN0YXRpb24gZm9yIG5ldyBiZWhhdmlvci4KKworICAgICAgICAq
IGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWluZGV4ZWRkYi1leHBlY3RlZC50eHQ6
CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4taW5kZXhlZGRiLmh0
bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4td29ya2VyLWlu
ZGV4ZWRkYi1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNv
dXJjZXMvZG9jdW1lbnQtZm9yLWNyb3NzLW9yaWdpbi13b3JrZXItaW5kZXhlZGRiLmh0bWw6CisK
IDIwMjAtMDctMjIgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAg
ICAgW1dpbjEwXSBqcy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5Lmh0bWwgaXMgZnJlcXVl
bnRseSB0aW1pbmcgb3V0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2Nyb3NzLW9yaWdpbi1pbmRleGVkZGItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4taW5kZXhlZGRiLWV4cGVjdGVkLnR4dAppbmRl
eCBhNGRjMTI1MWU4YjM4NmExZWVlZmE0MWJjYThlYzMxZTQ2N2EzNzYxLi42NWU0ZGZjYWQ3ZDJi
MTlhMzFmNDMwOTA5MzQ5YTE4ZGVkNmNkOGEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1pbmRleGVkZGItZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWluZGV4ZWRkYi1l
eHBlY3RlZC50eHQKQEAgLTEsMTIgKzEsMTIgQEAKLVRoZSBmaXJzdCBpZnJhbWUgYmVsb3cgc2hv
dWxkIHJldHVybiBhIHNlY3VyaXR5IGVycm9yLCBhbmQgdGhlIHNlY29uZCBzaG91bGQgc3VjY2Vz
c2Z1bGx5IG9wZW4gdGhlIGRhdGFiYXNlLgorQm90aCBmcmFtZXMgY2FuIHN1Y2Nlc3NmdWxseSBv
cGVuIHRoZSBkYXRhYmFzZS4KIAogICAKIAogLS0tLS0tLS0KIEZyYW1lOiAnPCEtLWZyYW1lMS0t
PicKIC0tLS0tLS0tCi13aW5kb3cuaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCkgdGhyZXcgYW4g
ZXhjZXB0aW9uOiBTZWN1cml0eUVycm9yCi13aW5kb3cuaW5kZXhlZERCLm9wZW4oKSB0aHJldyBh
biBleGNlcHRpb246IFNlY3VyaXR5RXJyb3IKK1N1Y2Nlc3NmdWxseSBjYWxsZWQgd2luZG93Lmlu
ZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgpLgorU3VjY2Vzc2Z1bGx5IGNhbGxlZCB3aW5kb3cuaW5k
ZXhlZERCLm9wZW4oKS4KIAogCiAtLS0tLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4taW5kZXhlZGRiLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1pbmRleGVkZGIuaHRtbAppbmRleCBm
ZGUyNjQxMjVkMjAwZDViZmE5Y2VkN2M0NjA0ODBmYWYyYzdlM2VkLi5kNGFlZjAzNjhlNDNmMWI4
NDE5YjlmYTA2MDgxNGVkYjI1ODU4Y2YzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1pbmRleGVkZGIuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1pbmRleGVkZGIuaHRtbApAQCAtMTcs
NyArMTcsNyBAQAogICAgIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci0gICAgPHA+VGhlIGZp
cnN0IGlmcmFtZSBiZWxvdyBzaG91bGQgcmV0dXJuIGEgc2VjdXJpdHkgZXJyb3IsIGFuZCB0aGUg
c2Vjb25kIHNob3VsZCBzdWNjZXNzZnVsbHkgb3BlbiB0aGUgZGF0YWJhc2UuPC9wPgorICAgIDxw
PkJvdGggZnJhbWVzIGNhbiBzdWNjZXNzZnVsbHkgb3BlbiB0aGUgZGF0YWJhc2UuPC9wPgogICAg
IDxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Ny
b3NzLW9yaWdpbi1pZnJhbWUtZm9yLWluZGV4ZWRkYi5odG1sIiBvbmxvYWQ9ImRlY3JlbWVudCgp
Ij48L2lmcmFtZT4KICAgICA8aWZyYW1lIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3Vy
aXR5L3Jlc291cmNlcy9jcm9zcy1vcmlnaW4taWZyYW1lLWZvci1pbmRleGVkZGIuaHRtbCIgb25s
b2FkPSJkZWNyZW1lbnQoKSI+PC9pZnJhbWU+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi13b3JrZXItaW5kZXhlZGRiLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2lu
LXdvcmtlci1pbmRleGVkZGItZXhwZWN0ZWQudHh0CmluZGV4IDcyOTI1YWFhYjExNGU3YmUwM2Mw
MGFhMzczM2RhYzliMjBlZWEyMjIuLjNiNzExYzVjM2ExNGE3ZWEwMzgyYzAxOWRkM2YzNzQxMjY0
NjU2ZWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mt
b3JpZ2luLXdvcmtlci1pbmRleGVkZGItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXdvcmtlci1pbmRleGVkZGItZXhwZWN0ZWQu
dHh0CkBAIC0xLDEyICsxLDEyIEBACi1UaGUgZmlyc3QgaWZyYW1lIGJlbG93IHNob3VsZCByZXR1
cm4gYSBzZWN1cml0eSBlcnJvciwgYW5kIHRoZSBzZWNvbmQgc2hvdWxkIHN1Y2Nlc3NmdWxseSBv
cGVuIHRoZSBkYXRhYmFzZS4KK0JvdGggZnJhbWVzIGNhbiBzdWNjZXNzZnVsbHkgb3BlbiB0aGUg
ZGF0YWJhc2UuCiAKICAgCiAKIC0tLS0tLS0tCiBGcmFtZTogJzwhLS1mcmFtZTEtLT4nCiAtLS0t
LS0tLQotc2VsZi5pbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoKSB0aHJldyBhbiBleGNlcHRpb246
IFNlY3VyaXR5RXJyb3IKLXNlbGYuaW5kZXhlZERCLm9wZW4oKSB0aHJldyBhbiBleGNlcHRpb246
IFNlY3VyaXR5RXJyb3IKK1N1Y2Nlc3NmdWxseSBjYWxsZWQgc2VsZi5pbmRleGVkREIuZGVsZXRl
RGF0YWJhc2UoKS4KK1N1Y2Nlc3NmdWxseSBjYWxsZWQgc2VsZi5pbmRleGVkREIub3BlbigpLgog
CiAKIC0tLS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3Jlc291cmNlcy9kb2N1bWVudC1mb3ItY3Jvc3Mtb3JpZ2luLXdvcmtlci1pbmRleGVkZGIuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2RvY3VtZW50LWZv
ci1jcm9zcy1vcmlnaW4td29ya2VyLWluZGV4ZWRkYi5odG1sCmluZGV4IGViZDBiMjcwZWMwY2Yw
YjM3ZWZkZGU4NmNmOTVjNmE1ZWFmODI2MWMuLjhlZjdjMzllMjA0NzZjNjYyNmNkODBkYTM1Mzlk
NjUzZjFmNDYxZjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
cmVzb3VyY2VzL2RvY3VtZW50LWZvci1jcm9zcy1vcmlnaW4td29ya2VyLWluZGV4ZWRkYi5odG1s
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2RvY3VtZW50
LWZvci1jcm9zcy1vcmlnaW4td29ya2VyLWluZGV4ZWRkYi5odG1sCkBAIC0xOSw3ICsxOSw3IEBA
IHdpbmRvdy5vbm1lc3NhZ2UgPSBkZWNyZW1lbnQ7CiA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5
PgotICAgIDxwPlRoZSBmaXJzdCBpZnJhbWUgYmVsb3cgc2hvdWxkIHJldHVybiBhIHNlY3VyaXR5
IGVycm9yLCBhbmQgdGhlIHNlY29uZCBzaG91bGQgc3VjY2Vzc2Z1bGx5IG9wZW4gdGhlIGRhdGFi
YXNlLjwvcD4KKyAgICA8cD5Cb3RoIGZyYW1lcyBjYW4gc3VjY2Vzc2Z1bGx5IG9wZW4gdGhlIGRh
dGFiYXNlLjwvcD4KICAgICA8aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3Vy
aXR5L3Jlc291cmNlcy9jcm9zcy1vcmlnaW4taWZyYW1lLWZvci13b3JrZXItaW5kZXhlZGRiLmh0
bWwiPjwvaWZyYW1lPgogICAgIDxpZnJhbWUgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2Vj
dXJpdHkvcmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi1pZnJhbWUtZm9yLXdvcmtlci1pbmRleGVkZGIu
aHRtbCI+PC9pZnJhbWU+CiA8L2JvZHk+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>