<?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>229325</bug_id>
          
          <creation_ts>2021-08-20 00:58:21 -0700</creation_ts>
          <short_desc>Decoding webm file with more than 2 channels will fail</short_desc>
          <delta_ts>2026-03-05 15:02:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Audio</component>
          <version>Other</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>
          
          <blocked>227111</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jean-Yves Avenard [:jya]">jean-yves.avenard</reporter>
          <assigned_to name="Jean-Yves Avenard [:jya]">jean-yves.avenard</assigned_to>
          <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hartman.wiki</cc>
    
    <cc>jer.noble</cc>
    
    <cc>padenot</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1785726</commentid>
    <comment_count>0</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-08-20 00:58:21 -0700</bug_when>
    <thetext>Decoding of webm with more than 2 channels will fail with a decoding error.

STR:
1- Open https://jyavenard.github.io/htmltests/tests/webaudio/decodeAudioData.html
2- Select opus-mapping2.webm in the drop down list
3- press play

Result: will show a decoding error as context.decodeAudioData return an error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785727</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-20 00:58:49 -0700</bug_when>
    <thetext>&lt;rdar://problem/82160691&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791327</commentid>
    <comment_count>2</comment_count>
      <attachid>437580</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-09-07 19:19:20 -0700</bug_when>
    <thetext>Created attachment 437580
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791502</commentid>
    <comment_count>3</comment_count>
      <attachid>437580</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-09-08 09:42:28 -0700</bug_when>
    <thetext>Comment on attachment 437580
Patch

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

&gt; Source/WebCore/platform/graphics/cocoa/WebMAudioUtilitiesCocoa.mm:175
&gt; +        setVorbisChannelMap(layout, cookie.channelCount);

Why do you set the *Vorbis* channel map with an Opus cookie? A comment would be helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791649</commentid>
    <comment_count>4</comment_count>
      <attachid>437580</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-09-08 15:41:45 -0700</bug_when>
    <thetext>Comment on attachment 437580
Patch

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

&gt; Source/WebCore/platform/graphics/cocoa/WebMAudioUtilitiesCocoa.mm:176
&gt; +        m_channelLayout = layout;

https://datatracker.ietf.org/doc/html/rfc7845#section-5.1.1.2

mapping family one uses the vorbis layout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791900</commentid>
    <comment_count>5</comment_count>
      <attachid>437580</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-09-09 08:32:00 -0700</bug_when>
    <thetext>Comment on attachment 437580
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/cocoa/WebMAudioUtilitiesCocoa.mm:176
&gt;&gt; +        m_channelLayout = layout;
&gt; 
&gt; https://datatracker.ietf.org/doc/html/rfc7845#section-5.1.1.2
&gt; 
&gt; mapping family one uses the vorbis layout.

Yes, my point is that someone unfamiliar with the RFC may be confused by code so a comment would be helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854916</commentid>
    <comment_count>6</comment_count>
    <who name="Derk-Jan Hartman">hartman.wiki</who>
    <bug_when>2022-03-24 16:15:33 -0700</bug_when>
    <thetext>This problem still exists:
Example: https://upload.wikimedia.org/wikipedia/commons/d/d3/Elephants_Dream_%282006%29.120p.vp9.opus.multichannel.webm

No downsampling occurs and video playback fails. Because canPlayType passes, no fallback can occur to another source (like webm vp8, vorbis) either, creating a broken experience for the user.

This is unfortunate as multichannel is supported by the format and it means that for Wikimedia we will now have to downsample all our derivatives/transcodes to stereo, if we do not want such files to break on macOS. This denies users of Chrome and Firefox the benefit of proper multichannel sound.

Last tested on Safari 15.4 and STP 142, macOS 12.3 on a MacBook Pro from 2021.
Wikimedia ticket: https://phabricator.wikimedia.org/T304624</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854994</commentid>
    <comment_count>7</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-03-24 19:42:34 -0700</bug_when>
    <thetext>(In reply to Derk-Jan Hartman from comment #6)
&gt; This problem still exists:
&gt; Example:
&gt; https://upload.wikimedia.org/wikipedia/commons/d/d3/
&gt; Elephants_Dream_%282006%29.120p.vp9.opus.multichannel.webm
&gt; 

It still exists because it hasn’t been fixed. 

The framework decoder unfortunately lacks the ability to decode more than 2 channels file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1994762</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2023-11-25 13:53:33 -0800</bug_when>
    <thetext>*** Bug 241220 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2181102</commentid>
    <comment_count>9</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2026-02-12 21:33:53 -0800</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/58593</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2187556</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2026-03-05 15:01:57 -0800</bug_when>
    <thetext>Committed 308749@main (4bf9354c493c): &lt;https://commits.webkit.org/308749@main&gt;

Reviewed commits have been landed. Closing PR #58593 and removing active labels.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437580</attachid>
            <date>2021-09-07 19:19:20 -0700</date>
            <delta_ts>2021-09-07 19:19:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229325-20210908121919.patch</filename>
            <type>text/plain</type>
            <size>24887</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjFhZGZiODZjYTVkNWU3
MjIzYzkwYTdiMTQ3NTBjOTg3MzAxODNkOC4uNGIxYzM5YTk4YmI2M2RkMzhiN2Q0OWU0MzFlNzE1
NWI2NmMxZGNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTA5LTA3ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGVjb2Rpbmcgd2VibSBm
aWxlIHdpdGggbW9yZSB0aGFuIDIgY2hhbm5lbHMgd2lsbCBmYWlsCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkzMjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXSVA7IHRoaXMgdGhlb3JldGljYWxseSBo
YXMgZXZlcnl0aGluZyB0byBkZWNvZGUgbXVsdGktY2hhbm5lbHMgdm9yYmlzIGFuZCBvcHVzLgor
ICAgICAgICBIb3dldmVyLCB0aGUgdW5kZXJseWluZyBDb3JlTWVkaWEgZGVjb2RlciBkb2Vzbid0
IHN1cHBvcnQgdGhlIHByaW1pdGl2ZSBzbyBpdCdzIG5vbi1mdW5jdGlvbmFsLgorICAgICAgICBL
ZWVwaW5nIGl0IGZvciBmdXR1cmUgcmVmZXJlbmNlcy4KKyAgICAgICAgTm8gbmV3IHRlc3RzIChP
T1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJD
b2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmRlY29kZVdlYk1E
YXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9NZWRpYVV0aWxpdGllcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9NZWRpYVV0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpXZWJNQXVkaW9DaGFubmVsTGF5b3V0SG9sZGVyOjpXZWJNQXVkaW9DaGFubmVs
TGF5b3V0SG9sZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1BdWRpb0NoYW5uZWxMYXlvdXRI
b2xkZXI6OnNldFZvcmJpc0NoYW5uZWxNYXApOgorICAgICAgICAoV2ViQ29yZTo6V2ViTUF1ZGlv
Q2hhbm5lbExheW91dEhvbGRlcjo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJN
QXVkaW9DaGFubmVsTGF5b3V0SG9sZGVyOjphbGxvY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJNQXVkaW9DaGFubmVsTGF5b3V0SG9sZGVyOjp+V2ViTUF1ZGlvQ2hhbm5lbExheW91dEhvbGRl
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJNQXVkaW9DaGFubmVsTGF5b3V0SG9sZGVyOjpvcGVy
YXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkZv
ckZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZU9wdXNQcml2YXRlRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVPcHVzQXVkaW9Gb3JtYXREZXNjcmlwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVWb3JiaXNBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKToKKwogMjAyMS0w
OC0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgICAnU2hv
dyBOZXh0IEZyYW1lJyBhbmQgJ1Nob3cgUHJldmlvdXMgRnJhbWUnIGtleWJvYXJkIHNob3J0Y3V0
cyBzZWVtIG91dCBvZiBjb250ZXh0IGFuZCBvbmx5IHBhdXNlIHZpZGVvCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZwppbmRleCBmMWI3YzhmZjA4NDVlZWRiNDM1YzExYWViMjFmZGNlODQxOTI2NTNhLi4wYzVkODgw
M2Y5ODJhMzMyZDgxMzY4NjdiODQyZDIwMjY5Yzk0MDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAyMS0wOS0wNyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUu
Y29tPgorCisgICAgICAgIERlY29kaW5nIHdlYm0gZmlsZSB3aXRoIG1vcmUgdGhhbiAyIGNoYW5u
ZWxzIHdpbGwgZmFpbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI5MzI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwOgorICAgICAgICAqIHBhbC9jZi9D
b3JlTWVkaWFTb2Z0TGluay5oOiBBZGQgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0Q2hhbm5l
bExheW91dAorCiAyMDIxLTA4LTEwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcAppbmRleCA0YTNlOTBjZDQ0MDY3NzU5
MjEyMmYxNmZhNTE4YWE1NGU5NTdjY2M5Li5hMTkxNzgxNDczZGNhYzc2YzViMDQxNTU2OTE4NDE0
NzBkM2EyMjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRp
YVNvZnRMaW5rLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNv
ZnRMaW5rLmNwcApAQCAtMTk1LDYgKzE5NSw3IEBAIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09V
UkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBrQ01UaW1lYmFzZU5vdGlmaWNhdGlvCiAK
IFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlh
LCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JS
ZWYgYWxsb2NhdG9yLCBjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGFzYmQsIHNp
emVfdCBsYXlvdXRTaXplLCBjb25zdCBBdWRpb0NoYW5uZWxMYXlvdXQqIGxheW91dCwgc2l6ZV90
IG1hZ2ljQ29va2llU2l6ZSwgY29uc3Qgdm9pZCogbWFnaWNDb29raWUsIENGRGljdGlvbmFyeVJl
ZiBleHRlbnNpb25zLCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25SZWYqIG91dERlc2MpLCAoYWxs
b2NhdG9yLCBhc2JkLCBsYXlvdXRTaXplLCBsYXlvdXQsIG1hZ2ljQ29va2llU2l6ZSwgbWFnaWND
b29raWUsIGV4dGVuc2lvbnMsIG91dERlc2MpLCBQQUxfRVhQT1JUKQogU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9Gb3JtYXRE
ZXNjcmlwdGlvbkdldE1hZ2ljQ29va2llLCBjb25zdCB2b2lkKiwgKENNQXVkaW9Gb3JtYXREZXNj
cmlwdGlvblJlZiBkZXNjLCBzaXplX3QqIHNpemVPdXQpLCAoZGVzYywgc2l6ZU91dCksIFBBTF9F
WFBPUlQpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENv
cmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0Q2hhbm5lbExheW91dCwgY29uc3Qg
QXVkaW9DaGFubmVsTGF5b3V0KiwgKENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjLCBz
aXplX3QqIHNpemVPdXQpLCAoZGVzYywgc2l6ZU91dCksIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Zv
cm1hdERlc2NyaXB0aW9uR2V0U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiwgY29uc3QgQXVkaW9TdHJl
YW1CYXNpY0Rlc2NyaXB0aW9uKiwgKENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjKSwg
KGRlc2MpLCBQQUxfRVhQT1JUKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9F
WFBPUlQoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFJpY2hlc3RE
ZWNvZGFibGVGb3JtYXQsIGNvbnN0IEF1ZGlvRm9ybWF0TGlzdEl0ZW0qLCAoQ01BdWRpb0Zvcm1h
dERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYyksIFBBTF9FWFBPUlQpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaCBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaAppbmRleCA4OGU2Mjk1YjNjM2Vl
NTIzYTU3N2Q3MjY2NDEwZDFiMDQ2NmZjMTVlLi5kNGZmMDQ2OGMzMThjMmYzNDVkYTk4NDU5ZmU3
MTQ5YjM3NWI0M2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVN
ZWRpYVNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFT
b2Z0TGluay5oCkBAIC0zMjIsNiArMzIyLDggQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFE
RVIoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZSwgT1MKICNk
ZWZpbmUgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlIHNvZnRMaW5rX0NvcmVNZWRpYV9D
TUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVB
REVSKFBBTCwgQ29yZU1lZGlhLCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRNYWdpY0Nvb2tp
ZSwgY29uc3Qgdm9pZCosIChDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYywgc2l6ZV90
KiBzaXplT3V0KSwgKGRlc2MsIHNpemVPdXQpKQogI2RlZmluZSBDTUF1ZGlvRm9ybWF0RGVzY3Jp
cHRpb25HZXRNYWdpY0Nvb2tpZSBzb2Z0TGlua19Db3JlTWVkaWFfQ01BdWRpb0Zvcm1hdERlc2Ny
aXB0aW9uR2V0TWFnaWNDb29raWUKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwg
Q29yZU1lZGlhLCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRDaGFubmVsTGF5b3V0LCBjb25z
dCBBdWRpb0NoYW5uZWxMYXlvdXQqLCAoQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2Ms
IHNpemVfdCogc2l6ZU91dCksIChkZXNjLCBzaXplT3V0KSkKKyNkZWZpbmUgQ01BdWRpb0Zvcm1h
dERlc2NyaXB0aW9uR2V0Q2hhbm5lbExheW91dCBzb2Z0TGlua19Db3JlTWVkaWFfQ01BdWRpb0Zv
cm1hdERlc2NyaXB0aW9uR2V0Q2hhbm5lbExheW91dAogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9I
RUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFN0cmVhbUJh
c2ljRGVzY3JpcHRpb24sIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiosIChDTUF1
ZGlvRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYyksIChkZXNjKSkKICNkZWZpbmUgQ01BdWRpb0Zv
cm1hdERlc2NyaXB0aW9uR2V0U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzb2Z0TGlua19Db3JlTWVk
aWFfQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0U3RyZWFtQmFzaWNEZXNjcmlwdGlvbgogU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9Gb3JtYXRE
ZXNjcmlwdGlvbkdldFJpY2hlc3REZWNvZGFibGVGb3JtYXQsIGNvbnN0IEF1ZGlvRm9ybWF0TGlz
dEl0ZW0qLCAoQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFk
ZXJDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Zp
bGVSZWFkZXJDb2NvYS5jcHAKaW5kZXggOWNjNGZiMjFlOWE5ZDU0MmVlNmI1OWQwNmE2OGQ5Mzhm
YWU1M2FjMS4uMTM3NzUwYTdjNWViOWEyOGFkYWNiYTcwM2Q5MTA4MjE1ZDdiMjFhNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVy
Q29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlv
RmlsZVJlYWRlckNvY29hLmNwcApAQCAtMzE4LDYgKzMxOCwxMSBAQCBzdGQ6Om9wdGlvbmFsPHNp
emVfdD4gQXVkaW9GaWxlUmVhZGVyOjpkZWNvZGVXZWJNRGF0YShBdWRpb0J1ZmZlckxpc3QmIGJ1
ZmZlckxpcwogICAgIGlmIChtYWdpY0Nvb2tpZSAmJiBtYWdpY0Nvb2tpZVNpemUpCiAgICAgICAg
IFBBTDo6QXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eShjb252ZXJ0ZXIsIGtBdWRpb0NvbnZlcnRl
ckRlY29tcHJlc3Npb25NYWdpY0Nvb2tpZSwgbWFnaWNDb29raWVTaXplLCBtYWdpY0Nvb2tpZSk7
CiAKKyAgICBzaXplX3QgbGF5b3V0U2l6ZSA9IDA7CisgICAgY29uc3QgQXVkaW9DaGFubmVsTGF5
b3V0KiBsYXlvdXQgPSBQQUw6OkNNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldENoYW5uZWxMYXlv
dXQoZm9ybWF0RGVzY3JpcHRpb24sICZsYXlvdXRTaXplKTsKKyAgICBpZiAobGF5b3V0ICYmIGxh
eW91dFNpemUpCisgICAgICAgIFBBTDo6QXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eShjb252ZXJ0
ZXIsIGtBdWRpb0NvbnZlcnRlcklucHV0Q2hhbm5lbExheW91dCwgbGF5b3V0U2l6ZSwgbGF5b3V0
KTsKKwogICAgIEF1ZGlvQ29udmVydGVyUHJpbWVJbmZvIHByaW1lSW5mbyA9IHsgVUludDMyKG1f
d2VibURhdGEtPm1fdHJhY2stPmNvZGVjRGVsYXkoKS52YWx1ZV9vcihNZWRpYVRpbWUoKSkudG9E
b3VibGUoKSAqIG91dEZvcm1hdC5tU2FtcGxlUmF0ZSksIDAgfTsKICAgICBJTkZPX0xPRyhMT0dJ
REVOVElGSUVSLCAiV2lsbCBkcm9wICV1IGxlYWRpbmcgZnJhbWVzIG91dCBvZiAlbGx1IiwgcHJp
bWVJbmZvLmxlYWRpbmdGcmFtZXMsIG51bWJlck9mRnJhbWVzKTsKICAgICBQQUw6OkF1ZGlvQ29u
dmVydGVyU2V0UHJvcGVydHkoY29udmVydGVyLCBrQXVkaW9Db252ZXJ0ZXJQcmltZUluZm8sIHNp
emVvZihwcmltZUluZm8pLCAmcHJpbWVJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL01lZGlhVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL01lZGlhVXRpbGl0aWVzLmNwcAppbmRleCA3ODQ3NGQ4ZTVhNWFjMDcwMzUzMzU5
OTBjZGRmOGFmY2Q4MDU2MTk2Li4zMjE3MTIwY2Q4YTA0NGE3OGUzZTM3YThmMWQzNTMyZDY3NDRi
YmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9NZWRpYVV0aWxp
dGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTWVkaWFVdGlsaXRp
ZXMuY3BwCkBAIC0zMywxMSArMzMsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZXRh
aW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRlQXVkaW9Gb3JtYXREZXNjcmlwdGlv
bihjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IG1hZ2lj
Q29va2llU2l6ZSwgY29uc3Qgdm9pZCogbWFnaWNDb29raWUpCitSZXRhaW5QdHI8Q01Gb3JtYXRE
ZXNjcmlwdGlvblJlZj4gY3JlYXRlQXVkaW9Gb3JtYXREZXNjcmlwdGlvbihjb25zdCBBdWRpb1N0
cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IG1hZ2ljQ29va2llU2l6ZSwgY29u
c3Qgdm9pZCogbWFnaWNDb29raWUsIHNpemVfdCBsYXlvdXRTaXplLCBBdWRpb0NoYW5uZWxMYXlv
dXQqIGxheW91dCkKIHsKICAgICBhdXRvIGJhc2ljRGVzY3JpcHRpb24gPSBXVEY6OmdldDxjb25z
dCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qPihkZXNjcmlwdGlvbi5wbGF0Zm9ybURlc2Ny
aXB0aW9uKCkuZGVzY3JpcHRpb24pOwogICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0
ID0gbnVsbHB0cjsKLSAgICBhdXRvIGVycm9yID0gUEFMOjpDTUF1ZGlvRm9ybWF0RGVzY3JpcHRp
b25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYmFzaWNEZXNjcmlwdGlvbiwgMCwgbnVsbHB0
ciwgbWFnaWNDb29raWVTaXplLCBtYWdpY0Nvb2tpZSwgbnVsbHB0ciwgJmZvcm1hdCk7CisgICAg
YXV0byBlcnJvciA9IFBBTDo6Q01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGJhc2ljRGVzY3JpcHRpb24sIGxheW91dFNpemUsIGxheW91dCwgbWFnaWND
b29raWVTaXplLCBtYWdpY0Nvb2tpZSwgbnVsbHB0ciwgJmZvcm1hdCk7CiAgICAgaWYgKGVycm9y
KSB7CiAgICAgICAgIExPR19FUlJPUigiY3JlYXRlQXVkaW9Gb3JtYXREZXNjcmlwdGlvbiBmYWls
ZWQgd2l0aCAlZCIsIGVycm9yKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9NZWRpYVV0aWxpdGllcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTWVkaWFVdGlsaXRpZXMuaAppbmRleCA5MTcwOGVhMjJh
ZDRiNWJiYzdlZjg5ZDRjYjVkYjM1OTlkOGU2MjVlLi43ODNmNGZhMTg5ZTFkYzc1NzAxMDAzODY4
NTgwNzQ1Y2UzNjg5ZDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9NZWRpYVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01l
ZGlhVXRpbGl0aWVzLmgKQEAgLTMwLDEzICszMCwxNCBAQAogCiB0eXBlZGVmIGNvbnN0IHN0cnVj
dCBvcGFxdWVDTUZvcm1hdERlc2NyaXB0aW9uKiBDTUZvcm1hdERlc2NyaXB0aW9uUmVmOwogdHlw
ZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIqIENNU2FtcGxlQnVmZmVyUmVmOwordHlw
ZWRlZiBzdHJ1Y3QgQXVkaW9DaGFubmVsTGF5b3V0IEF1ZGlvQ2hhbm5lbExheW91dDsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb1N0cmVhbURlc2NyaXB0aW9uOwogY2xhc3Mg
UGxhdGZvcm1BdWRpb0RhdGE7CiAKLVJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBj
cmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24m
LCBzaXplX3QgbWFnaWNDb29raWVTaXplID0gMCwgY29uc3Qgdm9pZCogbWFnaWNDb29raWUgPSBu
dWxscHRyKTsKK1JldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBjcmVhdGVBdWRpb0Zv
cm1hdERlc2NyaXB0aW9uKGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QgbWFn
aWNDb29raWVTaXplID0gMCwgY29uc3Qgdm9pZCogbWFnaWNDb29raWUgPSBudWxscHRyLCBzaXpl
X3QgbGF5b3V0U2l6ZSA9IDAsIEF1ZGlvQ2hhbm5lbExheW91dCogPSBudWxscHRyKTsKIFJldGFp
blB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXIoY29uc3QgUGxh
dGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgQ01UaW1lLCBz
aXplX3Qgc2FtcGxlQ291bnQpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRp
ZXNDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1
ZGlvVXRpbGl0aWVzQ29jb2EuaAppbmRleCA4NzEwNGQ4YjdiMzU3YzE2MGI2ZGNjYzQxYmZlMWY4
OWUwYTZjMjcxLi5jMDI2NTU5M2VjMGI4NWQzZDgyNGQ0NjM2YzNhZWNiMjZkZjVmNmM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9V
dGlsaXRpZXNDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLmgKQEAgLTQ1LDYgKzQ1LDkgQEAgc3RydWN0IE9w
dXNDb29raWVDb250ZW50cyB7CiAgICAgdWludDMyX3Qgc2FtcGxlUmF0ZSB7IDAgfTsKICAgICBp
bnQxNl90IG91dHB1dEdhaW4geyAwIH07CiAgICAgdWludDhfdCBtYXBwaW5nRmFtaWx5IHsgMCB9
OworICAgIHVpbnQ4X3QgbWFwcGluZ1RhYmxlWzI1NV0geyAwIH07IC8vIENoYW5uZWwgbWFwcGlu
ZyB0YWJsZS4KKyAgICB1aW50OF90IHN0cmVhbUNvdW50IHsgMCB9OyAvLyBOdW1iZXIgb2YgcGFj
a2VkIHN0cmVhbXMgaW4gZWFjaCBwYWNrZXQuCisgICAgdWludDhfdCBjb3VwbGVkQ291bnQgeyAw
IH07IC8vIE51bWJlciBvZiBwYWNrZWQgY291cGxlZCBzdHJlYW1zIGluIGVhY2ggcGFja2V0Lgog
ICAgIHVpbnQ4X3QgY29uZmlnIHsgMCB9OwogICAgIFNlY29uZHMgZnJhbWVEdXJhdGlvbiB7IDBf
cyB9OwogICAgIGludDMyX3QgYmFuZHdpZHRoIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRp
ZXNDb2NvYS5tbQppbmRleCAwZTFlYjFiNzk4YTNjN2VhNjdlYWI3NWJhMzZlNTg1YWRkOGMxMGEz
Li42OWJjMmMyNmVmNWJhYTQ1OGIyYWMxNGJmMDFiM2RjOGY3NTEyOTY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRpZXND
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJN
QXVkaW9VdGlsaXRpZXNDb2NvYS5tbQpAQCAtMzYsNyArMzYsOSBAQAogI2ltcG9ydCA8QXVkaW9U
b29sYm94L0F1ZGlvQ29tcG9uZW50Lmg+CiAjaW1wb3J0IDxBdWRpb1Rvb2xib3gvQXVkaW9Gb3Jt
YXQuaD4KICNpbXBvcnQgPENvcmVNZWRpYS9DTUZvcm1hdERlc2NyaXB0aW9uLmg+CisjaW1wb3J0
IDxjbWF0aD4KICNpbXBvcnQgPGRsZmNuLmg+CisjaW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5oPgog
I2ltcG9ydCA8d3RmL0ZsaXBCeXRlcy5oPgogI2ltcG9ydCA8d3RmL1NlY29uZHMuaD4KICNpZiBF
TkFCTEUoT1BVUykKQEAgLTcxLDcgKzczLDE2MyBAQCBzdGF0aWMgYm9vbCByZWdpc3RlckRlY29k
ZXJGYWN0b3J5KGNvbnN0IGNoYXIqIGRlY29kZXJOYW1lLCBPU1R5cGUgZGVjb2RlclR5cGUpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlv
blJlZj4gY3JlYXRlQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkZvckZvcm1hdChPU1R5cGUgZm9ybWF0
SUQsIFZlY3Rvcjx1aW50OF90PiYmIG1hZ2ljQ29va2llKQorY2xhc3MgV2ViTUF1ZGlvQ2hhbm5l
bExheW91dEhvbGRlciBmaW5hbCB7CitwdWJsaWM6CisgICAgV2ViTUF1ZGlvQ2hhbm5lbExheW91
dEhvbGRlcigpID0gZGVmYXVsdDsKKyAgICBleHBsaWNpdCBXZWJNQXVkaW9DaGFubmVsTGF5b3V0
SG9sZGVyKGNvbnN0IE9wdXNDb29raWVDb250ZW50cyYpOworICAgIGV4cGxpY2l0IFdlYk1BdWRp
b0NoYW5uZWxMYXlvdXRIb2xkZXIodWludDMyX3QgY2hhbm5lbENvdW50KTsKKyAgICB+V2ViTUF1
ZGlvQ2hhbm5lbExheW91dEhvbGRlcigpOworICAgIFdlYk1BdWRpb0NoYW5uZWxMYXlvdXRIb2xk
ZXImIG9wZXJhdG9yPShXZWJNQXVkaW9DaGFubmVsTGF5b3V0SG9sZGVyJiYpOworICAgIEF1ZGlv
Q2hhbm5lbExheW91dCogbGF5b3V0KCkgY29uc3QgeyByZXR1cm4gbV9jaGFubmVsTGF5b3V0OyB9
CisgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKK3ByaXZhdGU6CisgICAgdm9pZCBzZXRWb3JiaXND
aGFubmVsTWFwKEF1ZGlvQ2hhbm5lbExheW91dCosIHVpbnQzMl90IGNoYW5uZWxDb3VudCk7Cisg
ICAgQXVkaW9DaGFubmVsTGF5b3V0KiBhbGxvY2F0ZSh1aW50MzJfdCBjaGFubmVsQ291bnQpOwor
CisgICAgQXVkaW9DaGFubmVsTGF5b3V0KiBtX2NoYW5uZWxMYXlvdXQgeyBudWxscHRyIH07Cit9
OworCitXZWJNQXVkaW9DaGFubmVsTGF5b3V0SG9sZGVyOjpXZWJNQXVkaW9DaGFubmVsTGF5b3V0
SG9sZGVyKHVpbnQzMl90IGNoYW5uZWxDb3VudCkKK3sKKyAgICBpZiAoY2hhbm5lbENvdW50ID4g
OCkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8qIGxheW91dCA9IGFsbG9jYXRlKGNoYW5uZWxD
b3VudCA8PSAyID8gMSA6IGNoYW5uZWxDb3VudCk7CisgICAgaWYgKCFsYXlvdXQpCisgICAgICAg
IHJldHVybjsKKyAgICBzZXRWb3JiaXNDaGFubmVsTWFwKGxheW91dCwgY2hhbm5lbENvdW50KTsK
KyAgICBtX2NoYW5uZWxMYXlvdXQgPSBsYXlvdXQ7Cit9CisKK3ZvaWQgV2ViTUF1ZGlvQ2hhbm5l
bExheW91dEhvbGRlcjo6c2V0Vm9yYmlzQ2hhbm5lbE1hcChBdWRpb0NoYW5uZWxMYXlvdXQqIGxh
eW91dCwgdWludDMyX3QgY2hhbm5lbENvdW50KQoreworICAgIGxheW91dC0+bUNoYW5uZWxCaXRt
YXAgPSAwOworICAgIGlmIChjaGFubmVsQ291bnQgPD0gMikgeworICAgICAgICBsYXlvdXQtPm1O
dW1iZXJDaGFubmVsRGVzY3JpcHRpb25zID0gMDsKKyAgICAgICAgbGF5b3V0LT5tQ2hhbm5lbExh
eW91dFRhZyA9IGNoYW5uZWxDb3VudCA9PSAyID8ga0F1ZGlvQ2hhbm5lbExheW91dFRhZ19TdGVy
ZW8gOiBrQXVkaW9DaGFubmVsTGFiZWxfTW9ubzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIFJFTEVBU0VfQVNTRVJUKGxheW91dC0+bU51bWJlckNoYW5uZWxEZXNjcmlwdGlvbnMgPT0g
Y2hhbm5lbENvdW50KTsKKworICAgIGxheW91dC0+bUNoYW5uZWxMYXlvdXRUYWcgPSBrQXVkaW9D
aGFubmVsTGF5b3V0VGFnX1VzZUNoYW5uZWxEZXNjcmlwdGlvbnM7CisKKyAgICBhdXRvIHNldERl
c2NyaXB0aW9uID0gW10oQXVkaW9DaGFubmVsRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBBdWRp
b0NoYW5uZWxMYWJlbCBsYWJlbCkgeworICAgICAgICBkZXNjcmlwdGlvbi5tQ2hhbm5lbEZsYWdz
ID0ga0F1ZGlvQ2hhbm5lbEZsYWdzX0FsbE9mZjsKKyAgICAgICAgZGVzY3JpcHRpb24ubUNvb3Jk
aW5hdGVzWzBdID0gMDsKKyAgICAgICAgZGVzY3JpcHRpb24ubUNvb3JkaW5hdGVzWzFdID0gMDsK
KyAgICAgICAgZGVzY3JpcHRpb24ubUNvb3JkaW5hdGVzWzJdID0gMDsKKyAgICAgICAgZGVzY3Jp
cHRpb24ubUNoYW5uZWxMYWJlbCA9IGxhYmVsOworICAgIH07CisKKyAgICBzd2l0Y2ggKGNoYW5u
ZWxDb3VudCkgeworICAgIC8vIEFzIHBlciBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2Rv
Yy9odG1sL3JmYzc4NDUjc2VjdGlvbi01LjEuMS4yIENoYW5uZWwgTWFwcGluZyBGYW1pbHkgMQor
ICAgIGNhc2UgMzoKKyAgICAgICAgc2V0RGVzY3JpcHRpb24obGF5b3V0LT5tQ2hhbm5lbERlc2Ny
aXB0aW9uc1swXSwga0F1ZGlvQ2hhbm5lbExhYmVsX0xlZnQpOworICAgICAgICBzZXREZXNjcmlw
dGlvbihsYXlvdXQtPm1DaGFubmVsRGVzY3JpcHRpb25zWzFdLCBrQXVkaW9DaGFubmVsTGFiZWxf
Q2VudGVyKTsKKyAgICAgICAgc2V0RGVzY3JpcHRpb24obGF5b3V0LT5tQ2hhbm5lbERlc2NyaXB0
aW9uc1syXSwga0F1ZGlvQ2hhbm5lbExhYmVsX1JpZ2h0KTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSA0OgorICAgICAgICBzZXREZXNjcmlwdGlvbihsYXlvdXQtPm1DaGFubmVsRGVzY3JpcHRp
b25zWzBdLCBrQXVkaW9DaGFubmVsTGFiZWxfTGVmdCk7CisgICAgICAgIHNldERlc2NyaXB0aW9u
KGxheW91dC0+bUNoYW5uZWxEZXNjcmlwdGlvbnNbMV0sIGtBdWRpb0NoYW5uZWxMYWJlbF9DZW50
ZXIpOworICAgICAgICBzZXREZXNjcmlwdGlvbihsYXlvdXQtPm1DaGFubmVsRGVzY3JpcHRpb25z
WzJdLCBrQXVkaW9DaGFubmVsTGFiZWxfUmVhclN1cnJvdW5kTGVmdCk7CisgICAgICAgIHNldERl
c2NyaXB0aW9uKGxheW91dC0+bUNoYW5uZWxEZXNjcmlwdGlvbnNbM10sIGtBdWRpb0NoYW5uZWxM
YWJlbF9SZWFyU3Vycm91bmRSaWdodCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgNjoKKyAg
ICAgICAgc2V0RGVzY3JpcHRpb24obGF5b3V0LT5tQ2hhbm5lbERlc2NyaXB0aW9uc1s1XSwga0F1
ZGlvQ2hhbm5lbExhYmVsX0xGRVNjcmVlbik7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNh
c2UgNToKKyAgICAgICAgc2V0RGVzY3JpcHRpb24obGF5b3V0LT5tQ2hhbm5lbERlc2NyaXB0aW9u
c1swXSwga0F1ZGlvQ2hhbm5lbExhYmVsX0xlZnQpOworICAgICAgICBzZXREZXNjcmlwdGlvbihs
YXlvdXQtPm1DaGFubmVsRGVzY3JpcHRpb25zWzFdLCBrQXVkaW9DaGFubmVsTGFiZWxfQ2VudGVy
KTsKKyAgICAgICAgc2V0RGVzY3JpcHRpb24obGF5b3V0LT5tQ2hhbm5lbERlc2NyaXB0aW9uc1sy
XSwga0F1ZGlvQ2hhbm5lbExhYmVsX1JpZ2h0KTsKKyAgICAgICAgc2V0RGVzY3JpcHRpb24obGF5
b3V0LT5tQ2hhbm5lbERlc2NyaXB0aW9uc1szXSwga0F1ZGlvQ2hhbm5lbExhYmVsX1JlYXJTdXJy
b3VuZExlZnQpOworICAgICAgICBzZXREZXNjcmlwdGlvbihsYXlvdXQtPm1DaGFubmVsRGVzY3Jp
cHRpb25zWzRdLCBrQXVkaW9DaGFubmVsTGFiZWxfUmVhclN1cnJvdW5kUmlnaHQpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIDc6CisgICAgICAgIHNldERlc2NyaXB0aW9uKGxheW91dC0+bUNo
YW5uZWxEZXNjcmlwdGlvbnNbMF0sIGtBdWRpb0NoYW5uZWxMYWJlbF9MZWZ0KTsKKyAgICAgICAg
c2V0RGVzY3JpcHRpb24obGF5b3V0LT5tQ2hhbm5lbERlc2NyaXB0aW9uc1sxXSwga0F1ZGlvQ2hh
bm5lbExhYmVsX0NlbnRlcik7CisgICAgICAgIHNldERlc2NyaXB0aW9uKGxheW91dC0+bUNoYW5u
ZWxEZXNjcmlwdGlvbnNbMl0sIGtBdWRpb0NoYW5uZWxMYWJlbF9SaWdodCk7CisgICAgICAgIHNl
dERlc2NyaXB0aW9uKGxheW91dC0+bUNoYW5uZWxEZXNjcmlwdGlvbnNbM10sIGtBdWRpb0NoYW5u
ZWxMYWJlbF9MZWZ0U3Vycm91bmQpOworICAgICAgICBzZXREZXNjcmlwdGlvbihsYXlvdXQtPm1D
aGFubmVsRGVzY3JpcHRpb25zWzRdLCBrQXVkaW9DaGFubmVsTGFiZWxfUmlnaHRTdXJyb3VuZCk7
CisgICAgICAgIHNldERlc2NyaXB0aW9uKGxheW91dC0+bUNoYW5uZWxEZXNjcmlwdGlvbnNbNV0s
IGtBdWRpb0NoYW5uZWxMYWJlbF9DZW50ZXJTdXJyb3VuZCk7CisgICAgICAgIHNldERlc2NyaXB0
aW9uKGxheW91dC0+bUNoYW5uZWxEZXNjcmlwdGlvbnNbNl0sIGtBdWRpb0NoYW5uZWxMYWJlbF9M
RkVTY3JlZW4pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDg6CisgICAgICAgIHNldERlc2Ny
aXB0aW9uKGxheW91dC0+bUNoYW5uZWxEZXNjcmlwdGlvbnNbMF0sIGtBdWRpb0NoYW5uZWxMYWJl
bF9MZWZ0KTsKKyAgICAgICAgc2V0RGVzY3JpcHRpb24obGF5b3V0LT5tQ2hhbm5lbERlc2NyaXB0
aW9uc1sxXSwga0F1ZGlvQ2hhbm5lbExhYmVsX0NlbnRlcik7CisgICAgICAgIHNldERlc2NyaXB0
aW9uKGxheW91dC0+bUNoYW5uZWxEZXNjcmlwdGlvbnNbMl0sIGtBdWRpb0NoYW5uZWxMYWJlbF9S
aWdodCk7CisgICAgICAgIHNldERlc2NyaXB0aW9uKGxheW91dC0+bUNoYW5uZWxEZXNjcmlwdGlv
bnNbM10sIGtBdWRpb0NoYW5uZWxMYWJlbF9MZWZ0U3Vycm91bmQpOworICAgICAgICBzZXREZXNj
cmlwdGlvbihsYXlvdXQtPm1DaGFubmVsRGVzY3JpcHRpb25zWzRdLCBrQXVkaW9DaGFubmVsTGFi
ZWxfUmlnaHRTdXJyb3VuZCk7CisgICAgICAgIHNldERlc2NyaXB0aW9uKGxheW91dC0+bUNoYW5u
ZWxEZXNjcmlwdGlvbnNbNV0sIGtBdWRpb0NoYW5uZWxMYWJlbF9SZWFyU3Vycm91bmRMZWZ0KTsK
KyAgICAgICAgc2V0RGVzY3JpcHRpb24obGF5b3V0LT5tQ2hhbm5lbERlc2NyaXB0aW9uc1s2XSwg
a0F1ZGlvQ2hhbm5lbExhYmVsX1JlYXJTdXJyb3VuZFJpZ2h0KTsKKyAgICAgICAgc2V0RGVzY3Jp
cHRpb24obGF5b3V0LT5tQ2hhbm5lbERlc2NyaXB0aW9uc1s3XSwga0F1ZGlvQ2hhbm5lbExhYmVs
X0xGRVNjcmVlbik7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworV2ViTUF1ZGlvQ2hhbm5l
bExheW91dEhvbGRlcjo6V2ViTUF1ZGlvQ2hhbm5lbExheW91dEhvbGRlcihjb25zdCBPcHVzQ29v
a2llQ29udGVudHMmIGNvb2tpZSkKK3sKKyAgICBpZiAoY29va2llLm1hcHBpbmdGYW1pbHkgPT0g
MSkgeworICAgICAgICBhdXRvKiBsYXlvdXQgPSBhbGxvY2F0ZShjb29raWUuY2hhbm5lbENvdW50
IDw9IDIgPyAxOiBjb29raWUuY2hhbm5lbENvdW50IDw9IDIpOworICAgICAgICBpZiAoIWxheW91
dCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc2V0Vm9yYmlzQ2hhbm5lbE1hcChsYXlv
dXQsIGNvb2tpZS5jaGFubmVsQ291bnQpOworICAgICAgICBtX2NoYW5uZWxMYXlvdXQgPSBsYXlv
dXQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvKiBsYXlvdXQgPSBhbGxvY2F0
ZSgxKTsKKyAgICBpZiAoIWxheW91dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbGF5b3V0LT5t
Q2hhbm5lbEJpdG1hcCA9IDA7CisgICAgbGF5b3V0LT5tTnVtYmVyQ2hhbm5lbERlc2NyaXB0aW9u
cyA9IDA7CisgICAgaWYgKCFjb29raWUubWFwcGluZ0ZhbWlseSkKKyAgICAgICAgbGF5b3V0LT5t
Q2hhbm5lbExheW91dFRhZyA9IGNvb2tpZS5jaGFubmVsQ291bnQgPT0gMiA/IGtBdWRpb0NoYW5u
ZWxMYXlvdXRUYWdfU3RlcmVvIDoga0F1ZGlvQ2hhbm5lbExhYmVsX01vbm87CisgICAgZWxzZQor
ICAgICAgICBsYXlvdXQtPm1DaGFubmVsTGF5b3V0VGFnID0ga0F1ZGlvQ2hhbm5lbExheW91dFRh
Z19EaXNjcmV0ZUluT3JkZXIgfCBjb29raWUuY2hhbm5lbENvdW50OworICAgIG1fY2hhbm5lbExh
eW91dCA9IGxheW91dDsKK30KKworc2l6ZV90IFdlYk1BdWRpb0NoYW5uZWxMYXlvdXRIb2xkZXI6
OnNpemUoKSBjb25zdAoreworICAgIGlmICghbV9jaGFubmVsTGF5b3V0KQorICAgICAgICByZXR1
cm4gMDsKKyAgICBpZiAoIW1fY2hhbm5lbExheW91dC0+bU51bWJlckNoYW5uZWxEZXNjcmlwdGlv
bnMpCisgICAgICAgIHJldHVybiBzaXplb2YoQXVkaW9DaGFubmVsTGF5b3V0KTsKKyAgICByZXR1
cm4gc2l6ZW9mKEF1ZGlvQ2hhbm5lbExheW91dCkgLSBzaXplb2YoQXVkaW9DaGFubmVsRGVzY3Jp
cHRpb24pICsgbV9jaGFubmVsTGF5b3V0LT5tTnVtYmVyQ2hhbm5lbERlc2NyaXB0aW9ucyAgKiBz
aXplb2YoQXVkaW9DaGFubmVsRGVzY3JpcHRpb24pOworfQorCitBdWRpb0NoYW5uZWxMYXlvdXQq
IFdlYk1BdWRpb0NoYW5uZWxMYXlvdXRIb2xkZXI6OmFsbG9jYXRlKHVpbnQzMl90IGNoYW5uZWxD
b3VudCkKK3sKKyAgICBpZiAoIWNoYW5uZWxDb3VudCB8fCBjaGFubmVsQ291bnQgPiAyNTUpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIHNpemVfdCBjaGFubmVsTGF5b3V0U2l6ZSA9IHNp
emVvZihBdWRpb0NoYW5uZWxMYXlvdXQpIC0gc2l6ZW9mKEF1ZGlvQ2hhbm5lbERlc2NyaXB0aW9u
KSArIGNoYW5uZWxDb3VudCAgKiBzaXplb2YoQXVkaW9DaGFubmVsRGVzY3JpcHRpb24pOworICAg
IGF1dG8gYWxsb2NhdGVkID0gdHJ5RmFzdENhbGxvYygxLCBjaGFubmVsTGF5b3V0U2l6ZSk7Cisg
ICAgQXVkaW9DaGFubmVsTGF5b3V0KiBsYXlvdXQ7CisgICAgaWYgKCFhbGxvY2F0ZWQuZ2V0VmFs
dWUobGF5b3V0KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBsYXlvdXQtPm1OdW1i
ZXJDaGFubmVsRGVzY3JpcHRpb25zID0gY2hhbm5lbENvdW50OworICAgIHJldHVybiBsYXlvdXQ7
Cit9CisKK1dlYk1BdWRpb0NoYW5uZWxMYXlvdXRIb2xkZXI6On5XZWJNQXVkaW9DaGFubmVsTGF5
b3V0SG9sZGVyKCkKK3sKKyAgICBpZiAobV9jaGFubmVsTGF5b3V0KQorICAgICAgICBmYXN0RnJl
ZShtX2NoYW5uZWxMYXlvdXQpOworfQorCitXZWJNQXVkaW9DaGFubmVsTGF5b3V0SG9sZGVyJiBX
ZWJNQXVkaW9DaGFubmVsTGF5b3V0SG9sZGVyOjpvcGVyYXRvcj0oV2ViTUF1ZGlvQ2hhbm5lbExh
eW91dEhvbGRlciYmIG90aGVyKQoreworICAgIGlmIChtX2NoYW5uZWxMYXlvdXQpCisgICAgICAg
IGZhc3RGcmVlKG1fY2hhbm5lbExheW91dCk7CisgICAgbV9jaGFubmVsTGF5b3V0ID0gb3RoZXIu
bV9jaGFubmVsTGF5b3V0OworICAgIG90aGVyLm1fY2hhbm5lbExheW91dCA9IG51bGxwdHI7Cisg
ICAgcmV0dXJuICp0aGlzOworfQorCisKK3N0YXRpYyBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlw
dGlvblJlZj4gY3JlYXRlQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkZvckZvcm1hdChPU1R5cGUgZm9y
bWF0SUQsIFZlY3Rvcjx1aW50OF90PiYmIG1hZ2ljQ29va2llLCBXZWJNQXVkaW9DaGFubmVsTGF5
b3V0SG9sZGVyJiYgbGF5b3V0KQogewogICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBh
c2JkIHsgfTsKICAgICBhc2JkLm1Gb3JtYXRJRCA9IGZvcm1hdElEOwpAQCAtODEsOCArMjM5LDkg
QEAgc3RhdGljIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBjcmVhdGVBdWRpb0Zv
cm1hdERlc2NyaXB0aW9uRm9yRm9ybWF0KE8KICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVk
aWEsICJjcmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0aW9uRm9yRm9ybWF0IGZhaWxlZCB3aXRoIGVy
cm9yICVkICglLjRzKSIsIGVycm9yLCAoY2hhciAqKSZlcnJvcik7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KLQotICAgIHJldHVybiBjcmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0aW9u
KENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihhc2JkKSwgbWFnaWNDb29raWUuc2l6ZSgpLCBtYWdp
Y0Nvb2tpZS5kYXRhKCkpOworICAgIGlmICghbGF5b3V0LmxheW91dCgpKQorICAgICAgICBsYXlv
dXQgPSBXZWJNQXVkaW9DaGFubmVsTGF5b3V0SG9sZGVyKGFzYmQubUNoYW5uZWxzUGVyRnJhbWUp
OworICAgIHJldHVybiBjcmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKENBQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbihhc2JkKSwgbWFnaWNDb29raWUuc2l6ZSgpLCBtYWdpY0Nvb2tpZS5kYXRhKCks
IGxheW91dC5zaXplKCksIGxheW91dC5sYXlvdXQoKSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFZP
UkJJUykgfHwgRU5BQkxFKE9QVVMpCiAKQEAgLTE4NiwxMCArMzQ1LDEwIEBAIGJvb2wgcGFyc2VP
cHVzUHJpdmF0ZURhdGEoc2l6ZV90IGNvZGVjUHJpdmF0ZVNpemUsIGNvbnN0IHZvaWQqIGNvZGVj
UHJpdmF0ZURhdGEsCiAgICAgLy8gICAgICArLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0r
LSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKwogICAgIC8vICAgICAgfCAgICAgICAg
ICAgICAgICAgICAgIElucHV0IFNhbXBsZSBSYXRlIChIeikgICAgICAgICAgICAgICAgICAgIHwK
ICAgICAvLyAgICAgICstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSst
Ky0rLSstKy0rLSstKy0rLSstKy0rCi0gICAgLy8gICAgICB8ICAgT3V0cHV0IEdhaW4gKFE3Ljgg
aW4gZEIpICAgIHwgTWFwcGluZyBGYW1pbHl8ICAgICAgICAgICAgICAgfAotICAgIC8vICAgICAg
Ky0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKyAgICAgICAg
ICAgICAgIDoKLSAgICAvLyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gICAgLy8gICAgICB8ICAgICAgICAgICAg
ICAgT3B0aW9uYWwgQ2hhbm5lbCBNYXBwaW5nIFRhYmxlICAgICAgICAgICAgICAgICAgfAorICAg
IC8vICAgICAgfCAgIE91dHB1dCBHYWluIChRNy44IGluIGRCKSAgICB8IE1hcHBpbmcgRmFtaWx5
fCAgU3RyZWFtIENvdW50IHwKKyAgICAvLyAgICAgICstKy0rLSstKy0rLSstKy0rLSstKy0rLSst
Ky0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rCisgICAgLy8gICAgICB8IENv
dXBsZWQgQ291bnQgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfAorICAgIC8vICAgICAgKy0rLSstKy0rLSstKy0rLSsgICAgICAgT3B0aW9uYWwgQ2hhbm5l
bCBNYXBwaW5nIFRhYmxlLi4uICAgICAgIHwKICAgICAvLyAgICAgIHwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgLy8g
ICAgICArLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSst
Ky0rLSstKy0rLSstKwogCkBAIC0yMjMsNiArMzgyLDczIEBAIGJvb2wgcGFyc2VPcHVzUHJpdmF0
ZURhdGEoc2l6ZV90IGNvZGVjUHJpdmF0ZVNpemUsIGNvbnN0IHZvaWQqIGNvZGVjUHJpdmF0ZURh
dGEsCiAgICAgLy8gNy4gQ2hhbm5lbCBNYXBwaW5nIEZhbWlseSAoOCBiaXRzLCB1bnNpZ25lZCk6
CiAgICAgY29va2llLm1hcHBpbmdGYW1pbHkgPSAqKHByaXZhdGVEYXRhUHRyICsgMTgpOwogCisg
ICAgaWYgKCFjb29raWUubWFwcGluZ0ZhbWlseSkgeworICAgICAgICAvLyBNYXBwaW5nIGZhbWls
eSAwIG9ubHkgYWxsb3dzIHR3byBjaGFubmVscworICAgICAgICBpZiAoY29va2llLmNoYW5uZWxD
b3VudCA+IDIpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiSW52YWxp
ZCBPcHVzIGZpbGU6IHRvbyBtYW55IGNoYW5uZWxzICgldSkgZm9yIG1hcHBpbmcgZmFtaWx5IDAu
IiwgdWludDMyX3QoY29va2llLmNoYW5uZWxDb3VudCkpOworICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisgICAgICAgIGNvb2tpZS5zdHJlYW1Db3VudD0gMTsKKyAgICAgICAg
Y29va2llLmNvdXBsZWRDb3VudCA9IGNvb2tpZS5jaGFubmVsQ291bnQgLSAxOworICAgICAgICBj
b29raWUubWFwcGluZ1RhYmxlWzBdID0gMDsKKyAgICAgICAgY29va2llLm1hcHBpbmdUYWJsZVsx
XSA9IDE7CisgICAgfSBlbHNlIGlmIChjb29raWUubWFwcGluZ0ZhbWlseSA9PSAxKSB7CisgICAg
ICAgIGlmIChjb29raWUuY2hhbm5lbENvdW50ID4gOCkgeworICAgICAgICAgICAgLy8gQ3VycmVu
dGx5IG9ubHkgdXAgdG8gOCBjaGFubmVscyBhcmUgZGVmaW5lZCBmb3IgbWFwcGluZyBmYW1pbHkg
MQorICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJJbnZhbGlkIE9wdXMgZmls
ZTogdG9vIG1hbnkgY2hhbm5lbHMgKCV1KSBmb3IgbWFwcGluZyBmYW1pbHkgMS4iLCB1aW50MzJf
dChjb29raWUuY2hhbm5lbENvdW50KSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICAgICAgY29va2llLnN0cmVhbUNvdW50ID0gcHJpdmF0ZURhdGFQdHJbMTldOwor
ICAgICAgICBjb29raWUuY291cGxlZENvdW50ID0gcHJpdmF0ZURhdGFQdHJbMjBdOworICAgIH0g
ZWxzZSB7CisgICAgICAgIC8vIFRoZSByZW1haW5pbmcgY2hhbm5lbCBtYXBwaW5nIGZhbWlsaWVz
ICgyLi4uMjU0KSBhcmUgcmVzZXJ2ZWQuIEEKKyAgICAgICAgLy8gZGVtdXhlciBpbXBsZW1lbnRh
dGlvbiBlbmNvdW50ZXJpbmcgYSByZXNlcnZlZCAnY2hhbm5lbCBtYXBwaW5nCisgICAgICAgIC8v
IGZhbWlseScgdmFsdWUgU0hPVUxEIGFjdCBhcyB0aG91Z2ggdGhlIHZhbHVlIGlzIDI1NS4KKwor
ICAgICAgICBpZiAoY29va2llLm1hcHBpbmdGYW1pbHkgPT0gMikgeworICAgICAgICAgICAgLy8g
aHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9kcmFmdC1pZXRmLWNvZGVjLWFt
Ymlzb25pY3MtMDgjc2VjdGlvbi0zLjEKKyAgICAgICAgICAgIGF1dG8gaXNWYWxpZE1hcHBpbmdU
b0NoYW5uZWxzQ291bnQgPSBbXSh1aW50OF90IGNoYW5uZWxzKSAtPiBib29sIHsKKyAgICAgICAg
ICAgICAgICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1jb2RlYy1h
bWJpc29uaWNzLTA4I3BhZ2UtNAorICAgICAgICAgICAgICAgIC8vIEZvciBib3RoIGNoYW5uZWwg
bWFwcGluZyBmYW1pbHkgMiBhbmQgZmFtaWx5IDMsIHRoZSBhbGxvd2VkIG51bWJlcnMKKyAgICAg
ICAgICAgICAgICAvLyBvZiBjaGFubmVsczogKDEgKyBuKV4yICsgMmogZm9yIG4gPSAwLCAxLCAu
Li4sIDE0IGFuZCBqID0gMCBvciAxLAorICAgICAgICAgICAgICAgIC8vIHdoZXJlIG4gZGVub3Rl
cyB0aGUgKGhpZ2hlc3QpIGFtYmlzb25pYyBvcmRlciBhbmQgaiBkZW5vdGVzIHdoZXRoZXIKKyAg
ICAgICAgICAgICAgICAvLyBvciBub3QgdGhlcmUgaXMgYSBzZXBhcmF0ZSBub24tZGllZ2V0aWMg
c3RlcmVvIHN0cmVhbSBFeHBsaWNpdGx5IHRoZQorICAgICAgICAgICAgICAgIC8vIGFsbG93ZWQg
bnVtYmVyIG9mIGNoYW5uZWxzIGFyZSAxLCAzLCA0LCA2LCA5LCAxMSwgMTYsIDE4LCAyNSwgMjcs
IDM2LAorICAgICAgICAgICAgICAgIC8vIDM4LCA0OSwgNTEsIDY0LCA2NiwgODEsIDgzLCAxMDAs
IDEwMiwgMTIxLCAxMjMsIDE0NCwgMTQ2LCAxNjksIDE3MSwKKyAgICAgICAgICAgICAgICAvLyAx
OTYsIDE5OCwgMjI1LCBhbmQgMjI3LgorCisgICAgICAgICAgICAgICAgLy8gV2UgdXNlIHRoZSBw
cm9wZXJ0eSB0aGF0IGludChzcXJ0KG4pKSA9PSBpbnQoc3FydChuKzIpKSBmb3IgbiAhPSAzCisg
ICAgICAgICAgICAgICAgLy8gd2hpY2ggaXMgaGFuZGxlZCBieSB0aGUgdGVzdCBuXjIgKyAyICE9
IGNoYW5uZWwKKyAgICAgICAgICAgICAgICBpZiAoY2hhbm5lbHMgPCAxIHx8IGNoYW5uZWxzID4g
MjI3KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
ZG91YmxlIHZhbCA9IHNxcnQoY2hhbm5lbHMpOworICAgICAgICAgICAgICAgIGludDMyX3QgdmFs
SW50ID0gaW50MzJfdCh2YWwpOworICAgICAgICAgICAgICAgIHJldHVybiB2YWwgPT0gdmFsSW50
IHx8IHZhbEludCAqIHZhbEludCArIDIgPT0gY2hhbm5lbHM7CisgICAgICAgICAgICB9OworCisg
ICAgICAgICAgICBpZiAoIWlzVmFsaWRNYXBwaW5nVG9DaGFubmVsc0NvdW50KGNvb2tpZS5jaGFu
bmVsQ291bnQpKSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJJ
bnZhbGlkIE9wdXMgZmlsZTogaW52YWxpZCBjaGFubmVsIGNvdW50ICgldSkgZm9yIGNoYW5uZWwg
bWFwcGluZyAyIiwgdWludDMyX3QoY29va2llLmNoYW5uZWxDb3VudCkpOworICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAo
Y29kZWNQcml2YXRlU2l6ZSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPigyMSArIGNvb2tpZS5jaGFu
bmVsQ291bnQpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkludmFs
aWQgT3B1cyBmaWxlOiBjaGFubmVsIG1hcHBpbmcgJXUsIGJ1dCBubyBjaGFubmVsIG1hcHBpbmcg
dGFibGUiLCB1aW50MzJfdChjb29raWUubWFwcGluZ0ZhbWlseSkpOworICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGNvb2tpZS5zdHJlYW1Db3VudCA9IHByaXZh
dGVEYXRhUHRyWzE5XTsKKyAgICAgICAgY29va2llLmNvdXBsZWRDb3VudCA9IHByaXZhdGVEYXRh
UHRyWzIwXTsKKyAgICAgICAgZm9yICh1aW50OF90IGkgPSAwOyBpIDwgY29va2llLmNoYW5uZWxD
b3VudDsgaSsrKQorICAgICAgICAgICAgY29va2llLm1hcHBpbmdUYWJsZVtpXSA9IHByaXZhdGVE
YXRhUHRyWzIxICsgaV07CisgICAgfQorICAgIGlmIChjb29raWUuc3RyZWFtQ291bnQgPCAxKSB7
CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiSW52YWxpZCBPcHVzIGZpbGU6IG5v
IHN0cmVhbXMiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAoY29va2ll
LmNvdXBsZWRDb3VudCA+IGNvb2tpZS5zdHJlYW1Db3VudCkgeworICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihNZWRpYSwgIkludmFsaWQgT3B1cyBmaWxlOiBtb3JlIGNvdXBsZWQgc3RyZWFtcyAo
JXUpIHRoYW4gdG90YWwgc3RyZWFtcyAoJXUpIiwgdWludDMyX3QoY29va2llLmNvdXBsZWRDb3Vu
dCksIHVpbnQzMl90KGNvb2tpZS5zdHJlYW1Db3VudCkpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCiAgICAgYXV0byBmcmFtZVB0ciA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihmcmFtZURhdGEpOwogCiAgICAgaWYgKGZyYW1lU2l6ZSA8IDEpCkBAIC0zNjcsNyArNTkzLDcg
QEAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IGNyZWF0ZU9wdXNBdWRpb0Zvcm1h
dERlc2NyaXB0aW9uKGNvbnN0IE9wdXNDb28KICAgICBpZiAoIWNvb2tpZURhdGEuc2l6ZSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBjcmVhdGVBdWRpb0Zvcm1hdERl
c2NyaXB0aW9uRm9yRm9ybWF0KCdvcHVzJywgV1RGTW92ZShjb29raWVEYXRhKSk7CisgICAgcmV0
dXJuIGNyZWF0ZUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25Gb3JGb3JtYXQoJ29wdXMnLCBXVEZNb3Zl
KGNvb2tpZURhdGEpLCBXZWJNQXVkaW9DaGFubmVsTGF5b3V0SG9sZGVyKGNvb2tpZUNvbnRlbnRz
KSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb29raWVDb250ZW50cyk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC00NzAsNyArNjk2LDcgQEAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRp
b25SZWY+IGNyZWF0ZVZvcmJpc0F1ZGlvRm9ybWF0RGVzY3JpcHRpb24oc2l6ZV90IHByaXYKICAg
ICBpZiAoIWNvb2tpZURhdGEuc2l6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBjcmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0aW9uRm9yRm9ybWF0KCd2b3JiJywgV1RG
TW92ZShjb29raWVEYXRhKSk7CisgICAgcmV0dXJuIGNyZWF0ZUF1ZGlvRm9ybWF0RGVzY3JpcHRp
b25Gb3JGb3JtYXQoJ3ZvcmInLCBXVEZNb3ZlKGNvb2tpZURhdGEpLCBXZWJNQXVkaW9DaGFubmVs
TGF5b3V0SG9sZGVyKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocHJpdmF0ZURhdGFTaXpl
KTsKICAgICBVTlVTRURfUEFSQU0ocHJpdmF0ZURhdGEpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>