<?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>219546</bug_id>
          
          <creation_ts>2020-12-04 11:29:39 -0800</creation_ts>
          <short_desc>Improve vectorization in SincResampler</short_desc>
          <delta_ts>2020-12-09 03:45:44 -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>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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>psaavedra</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1712088</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-12-04 11:29:39 -0800</bug_when>
    <thetext>Improve vectorization in SincResampler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712091</commentid>
    <comment_count>1</comment_count>
      <attachid>415438</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-12-04 11:42:49 -0800</bug_when>
    <thetext>Created attachment 415438
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712109</commentid>
    <comment_count>2</comment_count>
      <attachid>415442</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-12-04 12:12:20 -0800</bug_when>
    <thetext>Created attachment 415442
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712113</commentid>
    <comment_count>3</comment_count>
      <attachid>415442</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-12-04 12:24:01 -0800</bug_when>
    <thetext>Comment on attachment 415442
Patch

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

How did you test all four versions?

&gt; Source/WebCore/platform/audio/SincResampler.cpp:348
&gt; +    vDSP_dotpr(inputP, 1, k1, 1, &amp;sum1, kernelSize);
&gt; +    vDSP_dotpr(inputP, 1, k2, 1, &amp;sum2, kernelSize);

Is there a reason that we don’t write a 4 different implementations of a &quot;dot product&quot; function instead of having the algorithm differ a level above that?

&gt; Source/WebCore/platform/audio/SincResampler.cpp:351
&gt; +    return static_cast&lt;float&gt;((1.0 - kernelInterpolationFactor) * sum1 + kernelInterpolationFactor * sum2);

Is it important do do this as double and then convert back to float? I notice we do that in both versions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712118</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-12-04 12:32:40 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 415442 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=415442&amp;action=review
&gt; 
&gt; How did you test all four versions?

I have an Intel Mac so I was able to test ACCELERATE, SSE and slow implementations.
The only implementation I could not test was NEON but this implementation is a straight import from Chromium.

CPU(ARM_NEON) does not appear to be true on iPhone unless I tested wrong.

&gt; 
&gt; &gt; Source/WebCore/platform/audio/SincResampler.cpp:348
&gt; &gt; +    vDSP_dotpr(inputP, 1, k1, 1, &amp;sum1, kernelSize);
&gt; &gt; +    vDSP_dotpr(inputP, 1, k2, 1, &amp;sum2, kernelSize);
&gt; 
&gt; Is there a reason that we don’t write a 4 different implementations of a
&gt; &quot;dot product&quot; function instead of having the algorithm differ a level above
&gt; that?

I guess we could do that. I was trying to stay in sync with Chromium here. ACCELERATE() is the only implementation that is not present in Chromium but that I chose to add for better performance on Cocoa platforms.

&gt; 
&gt; &gt; Source/WebCore/platform/audio/SincResampler.cpp:351
&gt; &gt; +    return static_cast&lt;float&gt;((1.0 - kernelInterpolationFactor) * sum1 + kernelInterpolationFactor * sum2);
&gt; 
&gt; Is it important do do this as double and then convert back to float? I
&gt; notice we do that in both versions.

Probably not since our vectorized versions only work with floats. I will test and fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712140</commentid>
    <comment_count>5</comment_count>
      <attachid>415453</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-12-04 13:11:27 -0800</bug_when>
    <thetext>Created attachment 415453
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712164</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-04 14:21:45 -0800</bug_when>
    <thetext>Committed r270457: &lt;https://trac.webkit.org/changeset/270457&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 415453.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712165</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-04 14:22:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/71993191&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713093</commentid>
    <comment_count>8</comment_count>
    <who name="Pablo Saavedra">psaavedra</who>
    <bug_when>2020-12-09 03:45:44 -0800</bug_when>
    <thetext>Maybe related: https://bugs.webkit.org/show_bug.cgi?id=219676?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415438</attachid>
            <date>2020-12-04 11:42:49 -0800</date>
            <delta_ts>2020-12-04 12:12:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219546-20201204114248.patch</filename>
            <type>text/plain</type>
            <size>15836</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzdhNGUxNWEzNTlkNTFm
NWEzNmFlYWVjMjk5Zjc1ZGQ2MDQzOTY3My4uMDM1YjQwMWRiMmYwMGU4MmMxZWM1NzUwOTdhNmVj
ZWJlNGU3Mzc5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEyLTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wcm92ZSB2ZWN0b3JpemF0
aW9uIGluIFNpbmNSZXNhbXBsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxOTU0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBVU0UoQUNDRUxFUkFURSkgdmVjdG9yaXphdGlvbiBsb2dpYyB0byBT
aW5jUmVzYW1wbGVyIGZvciBDb2NvYSBwb3J0cy4KKworICAgICAgICBBbHNvIGltcG9ydCBIQVZF
KEFSTV9ORU9OX0lOVFJJTlNJQ1MpIHZlY3Rvcml6YXRpb24gZnJvbSBCbGluazoKKyAgICAgICAg
LSBodHRwczovL2dpdGh1Yi5jb20vY2hyb21pdW0vY2hyb21pdW0vYmxvYi9tYXN0ZXIvbWVkaWEv
YmFzZS9zaW5jX3Jlc2FtcGxlci5jYworCisgICAgICAgIE1vdmUgY29udm9sdXRpb24gaW1wbGVt
ZW50cyBmcm9tIHByb2Nlc3MoKSB0byBhIHNlcGFyYXRlIGNvbnZvbHZlKCkgZnVuY3Rpb24KKyAg
ICAgICAgZm9yIGNsYXJpdHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1w
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbmNSZXNhbXBsZXI6OlNpbmNSZXNhbXBsZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U2luY1Jlc2FtcGxlcjo6cHJvY2Vzcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTaW5jUmVzYW1wbGVyOjpjb252b2x2ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vU2luY1Jlc2FtcGxlci5oOgorCiAyMDIwLTEyLTA0ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBGbG9hdCBwb3NpdGlvbmluZyBuZWVkcyB0
byBoYXBwZW4gd2hpbGUgYnVpbGRpbmcgdGhlIGxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHAKaW5kZXggMTczYzk0MDE0MjkwMGQyMmEzNjFi
Y2QyYzA0NDNmODcxMDAxYTEzNS4uNTViNzc1NTNmZTM0ODFlNzVmYWE1YTM2N2VmNWEwOWUyODI4
MWVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2Ft
cGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxl
ci5jcHAKQEAgLTM1LDggKzM1LDEyIEBACiAjaW5jbHVkZSAiQXVkaW9CdXMuaCIKICNpbmNsdWRl
IDx3dGYvTWF0aEV4dHJhcy5oPgogCi0jaWYgQ1BVKFg4Nl9TU0UyKQotI2luY2x1ZGUgPGVtbWlu
dHJpbi5oPgorI2lmIFVTRShBQ0NFTEVSQVRFKQorI2luY2x1ZGUgPEFjY2VsZXJhdGUvQWNjZWxl
cmF0ZS5oPgorI2VsaWYgQ1BVKFg4Nl9TU0UyKQorI2luY2x1ZGUgPHhtbWludHJpbi5oPgorI2Vs
aWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQorI2luY2x1ZGUgPGFybV9uZW9uLmg+CiAjZW5k
aWYKIAogLy8gSW5pdGlhbCBpbnB1dCBidWZmZXIgbGF5b3V0LCBkaXZpZGluZyBpbnRvIHJlZ2lv
bnMgcjAgdG8gcjQgKG5vdGU6IHIwLCByMwpAQCAtMTEzLDYgKzExNyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY29uc3RleHByIHVuc2lnbmVkIGtlcm5lbFNpemUgeyAzMiB9OwogY29uc3Rl
eHByIHVuc2lnbmVkIG51bWJlck9mS2VybmVsT2Zmc2V0cyB7IDMyIH07Citjb25zdGV4cHIgdW5z
aWduZWQga2VybmVsU3RvcmFnZVNpemUgeyBrZXJuZWxTaXplICogKG51bWJlck9mS2VybmVsT2Zm
c2V0cyArIDEpIH07CiAKIHN0YXRpYyBzaXplX3QgY2FsY3VsYXRlQ2h1bmtTaXplKHVuc2lnbmVk
IGJsb2NrU2l6ZSwgZG91YmxlIHNjYWxlRmFjdG9yKQogewpAQCAtMTIxLDcgKzEyNiw3IEBAIHN0
YXRpYyBzaXplX3QgY2FsY3VsYXRlQ2h1bmtTaXplKHVuc2lnbmVkIGJsb2NrU2l6ZSwgZG91Ymxl
IHNjYWxlRmFjdG9yKQogCiBTaW5jUmVzYW1wbGVyOjpTaW5jUmVzYW1wbGVyKGRvdWJsZSBzY2Fs
ZUZhY3RvciwgdW5zaWduZWQgcmVxdWVzdEZyYW1lcykKICAgICA6IG1fc2NhbGVGYWN0b3Ioc2Nh
bGVGYWN0b3IpCi0gICAgLCBtX2tlcm5lbFN0b3JhZ2Uoa2VybmVsU2l6ZSAqIChudW1iZXJPZktl
cm5lbE9mZnNldHMgKyAxKSkKKyAgICAsIG1fa2VybmVsU3RvcmFnZShrZXJuZWxTdG9yYWdlU2l6
ZSkKICAgICAsIG1fcmVxdWVzdEZyYW1lcyhyZXF1ZXN0RnJhbWVzKQogICAgICwgbV9pbnB1dEJ1
ZmZlcihtX3JlcXVlc3RGcmFtZXMgKyBrZXJuZWxTaXplKSAvLyBTZWUgaW5wdXQgYnVmZmVyIGxh
eW91dCBhYm92ZS4KICAgICAsIG1fcjEobV9pbnB1dEJ1ZmZlci5kYXRhKCkpCkBAIC0yOTksMjEw
ICszMDQsMTAgQEAgdm9pZCBTaW5jUmVzYW1wbGVyOjpwcm9jZXNzKGZsb2F0KiBkZXN0aW5hdGlv
biwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcywgY29uc3QgRnUKICAgICAgICAgICAgIC8vIEluaXRp
YWxpemUgaW5wdXQgcG9pbnRlciBiYXNlZCBvbiBxdWFudGl6ZWQgbV92aXJ0dWFsU291cmNlSW5k
ZXguCiAgICAgICAgICAgICBmbG9hdCogaW5wdXRQID0gbV9yMSArIHNvdXJjZUluZGV4STsKIAot
ICAgICAgICAgICAgLy8gV2UnbGwgY29tcHV0ZSAiY29udm9sdXRpb25zIiBmb3IgdGhlIHR3byBr
ZXJuZWxzIHdoaWNoIHN0cmFkZGxlIG1fdmlydHVhbFNvdXJjZUluZGV4Ci0gICAgICAgICAgICBm
bG9hdCBzdW0xID0gMDsKLSAgICAgICAgICAgIGZsb2F0IHN1bTIgPSAwOwotCiAgICAgICAgICAg
ICAvLyBGaWd1cmUgb3V0IGhvdyBtdWNoIHRvIHdlaWdodCBlYWNoIGtlcm5lbCdzICJjb252b2x1
dGlvbiIuCiAgICAgICAgICAgICBkb3VibGUga2VybmVsSW50ZXJwb2xhdGlvbkZhY3RvciA9IHZp
cnR1YWxPZmZzZXRJbmRleCAtIG9mZnNldEluZGV4OwogCi0gICAgICAgICAgICAvLyBHZW5lcmF0
ZSBhIHNpbmdsZSBvdXRwdXQgc2FtcGxlLiAKLSAgICAgICAgICAgIGludCBuID0ga2VybmVsU2l6
ZTsKLQotI2RlZmluZSBDT05WT0xWRV9PTkVfU0FNUExFICAgICAgXAotICAgICAgICAgICAgaW5w
dXQgPSAqaW5wdXRQKys7ICAgXAotICAgICAgICAgICAgc3VtMSArPSBpbnB1dCAqICprMTsgXAot
ICAgICAgICAgICAgc3VtMiArPSBpbnB1dCAqICprMjsgXAotICAgICAgICAgICAgKytrMTsgICAg
ICAgICAgICAgICAgXAotICAgICAgICAgICAgKytrMjsKLQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGZsb2F0IGlucHV0OwotCi0jaWYgQ1BVKFg4Nl9TU0UyKQotICAgICAgICAgICAg
ICAgIC8vIElmIHRoZSBzb3VyY2VQIGFkZHJlc3MgaXMgbm90IDE2LWJ5dGUgYWxpZ25lZCwgdGhl
IGZpcnN0IHNldmVyYWwgZnJhbWVzIChhdCBtb3N0IHRocmVlKSBzaG91bGQgYmUgcHJvY2Vzc2Vk
IHNlcGVyYXRlbHkuCi0gICAgICAgICAgICAgICAgd2hpbGUgKChyZWludGVycHJldF9jYXN0PHVp
bnRwdHJfdD4oaW5wdXRQKSAmIDB4MEYpICYmIG4pIHsKLSAgICAgICAgICAgICAgICAgICAgQ09O
Vk9MVkVfT05FX1NBTVBMRQotICAgICAgICAgICAgICAgICAgICBuLS07Ci0gICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgLy8gTm93IHRoZSBpbnB1dFAgaXMgYWxpZ25lZCBhbmQg
c3RhcnQgdG8gYXBwbHkgU1NFLgotICAgICAgICAgICAgICAgIGZsb2F0KiBlbmRQID0gaW5wdXRQ
ICsgbiAtIG4gJSA0OwotICAgICAgICAgICAgICAgIF9fbTEyOCBtSW5wdXQ7Ci0gICAgICAgICAg
ICAgICAgX19tMTI4IG1LMTsKLSAgICAgICAgICAgICAgICBfX20xMjggbUsyOwotICAgICAgICAg
ICAgICAgIF9fbTEyOCBtdWwxOwotICAgICAgICAgICAgICAgIF9fbTEyOCBtdWwyOwotCi0gICAg
ICAgICAgICAgICAgX19tMTI4IHN1bXMxID0gX21tX3NldHplcm9fcHMoKTsKLSAgICAgICAgICAg
ICAgICBfX20xMjggc3VtczIgPSBfbW1fc2V0emVyb19wcygpOwotICAgICAgICAgICAgICAgIGJv
b2wgazFBbGlnbmVkID0gIShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oazEpICYgMHgwRik7
Ci0gICAgICAgICAgICAgICAgYm9vbCBrMkFsaWduZWQgPSAhKHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dHB0cl90PihrMikgJiAweDBGKTsKLQotI2RlZmluZSBMT0FEX0RBVEEobDEsIGwyKSAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBtSW5wdXQgPSBfbW1fbG9hZF9wcyhp
bnB1dFApOyAgICBcCi0gICAgICAgICAgICAgICAgbUsxID0gX21tXyMjbDEjI19wcyhrMSk7ICAg
ICAgICAgXAotICAgICAgICAgICAgICAgIG1LMiA9IF9tbV8jI2wyIyNfcHMoazIpOwotCi0jZGVm
aW5lIENPTlZPTFZFXzRfU0FNUExFUyAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAg
ICAgICAgIG11bDEgPSBfbW1fbXVsX3BzKG1JbnB1dCwgbUsxKTsgIFwKLSAgICAgICAgICAgICAg
ICBtdWwyID0gX21tX211bF9wcyhtSW5wdXQsIG1LMik7ICBcCi0gICAgICAgICAgICAgICAgc3Vt
czEgPSBfbW1fYWRkX3BzKHN1bXMxLCBtdWwxKTsgXAotICAgICAgICAgICAgICAgIHN1bXMyID0g
X21tX2FkZF9wcyhzdW1zMiwgbXVsMik7IFwKLSAgICAgICAgICAgICAgICBpbnB1dFAgKz0gNDsg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgazEgKz0gNDsgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIGsyICs9IDQ7Ci0KLSAgICAgICAgICAg
ICAgICBpZiAoazFBbGlnbmVkICYmIGsyQWxpZ25lZCkgeyAvLyBib3RoIGFsaWduZWQKLSAgICAg
ICAgICAgICAgICAgICAgd2hpbGUgKGlucHV0UCA8IGVuZFApIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIExPQURfREFUQShsb2FkLCBsb2FkKQotICAgICAgICAgICAgICAgICAgICAgICAgQ09O
Vk9MVkVfNF9TQU1QTEVTCi0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKCFrMUFsaWduZWQgJiYgazJBbGlnbmVkKSB7IC8vIG9ubHkgazIgYWxpZ25lZAot
ICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaW5wdXRQIDwgZW5kUCkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgTE9BRF9EQVRBKGxvYWR1LCBsb2FkKQotICAgICAgICAgICAgICAgICAgICAg
ICAgQ09OVk9MVkVfNF9TQU1QTEVTCi0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKGsxQWxpZ25lZCAmJiAhazJBbGlnbmVkKSB7IC8vIG9ubHkgazEgYWxp
Z25lZAotICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaW5wdXRQIDwgZW5kUCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgTE9BRF9EQVRBKGxvYWQsIGxvYWR1KQotICAgICAgICAgICAgICAg
ICAgICAgICAgQ09OVk9MVkVfNF9TQU1QTEVTCi0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICB9IGVsc2UgeyAvLyBib3RoIG5vbi1hbGlnbmVkCi0gICAgICAgICAgICAgICAg
ICAgIHdoaWxlIChpbnB1dFAgPCBlbmRQKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBMT0FE
X0RBVEEobG9hZHUsIGxvYWR1KQotICAgICAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfNF9T
QU1QTEVTCi0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICAvLyBTdW1tYXJpemUgdGhlIFNTRSByZXN1bHRzIHRvIHN1bTEgYW5kIHN1bTIu
Ci0gICAgICAgICAgICAgICAgZmxvYXQqIGdyb3VwU3VtUCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Zmxv
YXQqPigmc3VtczEpOwotICAgICAgICAgICAgICAgIHN1bTEgKz0gZ3JvdXBTdW1QWzBdICsgZ3Jv
dXBTdW1QWzFdICsgZ3JvdXBTdW1QWzJdICsgZ3JvdXBTdW1QWzNdOwotICAgICAgICAgICAgICAg
IGdyb3VwU3VtUCA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPigmc3VtczIpOwotICAgICAgICAg
ICAgICAgIHN1bTIgKz0gZ3JvdXBTdW1QWzBdICsgZ3JvdXBTdW1QWzFdICsgZ3JvdXBTdW1QWzJd
ICsgZ3JvdXBTdW1QWzNdOwotCi0gICAgICAgICAgICAgICAgbiAlPSA0OwotICAgICAgICAgICAg
ICAgIHdoaWxlIChuKSB7Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUK
LSAgICAgICAgICAgICAgICAgICAgbi0tOwotICAgICAgICAgICAgICAgIH0KLSNlbHNlCi0gICAg
ICAgICAgICAgICAgLy8gRklYTUU6IGFkZCBBUk0gTkVPTiBvcHRpbWl6YXRpb25zIGZvciB0aGUg
Zm9sbG93aW5nLiBUaGUgc2NhbGFyIGNvZGUtcGF0aCBjYW4gcHJvYmFibHkgYWxzbyBiZSBvcHRp
bWl6ZWQgYmV0dGVyLgotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIC8vIE9wdGlt
aXplIHNpemUgMzIgYW5kIHNpemUgNjQga2VybmVscyBieSB1bnJvbGxpbmcgdGhlIHdoaWxlIGxv
b3AuCi0gICAgICAgICAgICAgICAgLy8gQSAyMCAtIDMwJSBzcGVlZCBpbXByb3ZlbWVudCB3YXMg
bWVhc3VyZWQgaW4gc29tZSBjYXNlcyBieSB1c2luZyB0aGlzIGFwcHJvYWNoLgotICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChuID09IDMyKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMQotICAgICAgICAgICAgICAgICAgICBDT05WT0xW
RV9PTkVfU0FNUExFIC8vIDIKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBM
RSAvLyAzCi0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gNAotICAg
ICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDUKLSAgICAgICAgICAgICAg
ICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyA2Ci0gICAgICAgICAgICAgICAgICAgIENPTlZP
TFZFX09ORV9TQU1QTEUgLy8gNwotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FN
UExFIC8vIDgKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyA5Ci0g
ICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMTAKLSAgICAgICAgICAg
ICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyAxMQotICAgICAgICAgICAgICAgICAgICBD
T05WT0xWRV9PTkVfU0FNUExFIC8vIDEyCi0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09O
RV9TQU1QTEUgLy8gMTMKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAv
LyAxNAotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDE1Ci0gICAg
ICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMTYKLSAgICAgICAgICAgICAg
ICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyAxNwotICAgICAgICAgICAgICAgICAgICBDT05W
T0xWRV9PTkVfU0FNUExFIC8vIDE4Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9T
QU1QTEUgLy8gMTkKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyAy
MAotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDIxCi0gICAgICAg
ICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMjIKLSAgICAgICAgICAgICAgICAg
ICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyAyMwotICAgICAgICAgICAgICAgICAgICBDT05WT0xW
RV9PTkVfU0FNUExFIC8vIDI0Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1Q
TEUgLy8gMjUKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyAyNgot
ICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDI3Ci0gICAgICAgICAg
ICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMjgKLSAgICAgICAgICAgICAgICAgICAg
Q09OVk9MVkVfT05FX1NBTVBMRSAvLyAyOQotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9P
TkVfU0FNUExFIC8vIDMwCi0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUg
Ly8gMzEKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyAzMgotICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAobiA9PSA2NCkgewotICAgICAgICAgICAgICAgICAgICBD
T05WT0xWRV9PTkVfU0FNUExFIC8vIDEKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05F
X1NBTVBMRSAvLyAyCi0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8g
MwotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDQKLSAgICAgICAg
ICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyA1Ci0gICAgICAgICAgICAgICAgICAg
IENPTlZPTFZFX09ORV9TQU1QTEUgLy8gNgotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9P
TkVfU0FNUExFIC8vIDcKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAv
LyA4Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gOQotICAgICAg
ICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDEwCi0gICAgICAgICAgICAgICAg
ICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMTEKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9M
VkVfT05FX1NBTVBMRSAvLyAxMgotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FN
UExFIC8vIDEzCi0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMTQK
LSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyAxNQotICAgICAgICAg
ICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDE2Ci0gICAgICAgICAgICAgICAgICAg
IENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMTcKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVf
T05FX1NBTVBMRSAvLyAxOAotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExF
IC8vIDE5Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMjAKLSAg
ICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyAyMQotICAgICAgICAgICAg
ICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDIyCi0gICAgICAgICAgICAgICAgICAgIENP
TlZPTFZFX09ORV9TQU1QTEUgLy8gMjMKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05F
X1NBTVBMRSAvLyAyNAotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8v
IDI1Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMjYKLSAgICAg
ICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyAyNwotICAgICAgICAgICAgICAg
ICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDI4Ci0gICAgICAgICAgICAgICAgICAgIENPTlZP
TFZFX09ORV9TQU1QTEUgLy8gMjkKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NB
TVBMRSAvLyAzMAotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDMx
Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMzIKLSAgICAgICAg
ICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyAzMwotICAgICAgICAgICAgICAgICAg
ICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDM0Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZF
X09ORV9TQU1QTEUgLy8gMzUKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBM
RSAvLyAzNgotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDM3Ci0g
ICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMzgKLSAgICAgICAgICAg
ICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyAzOQotICAgICAgICAgICAgICAgICAgICBD
T05WT0xWRV9PTkVfU0FNUExFIC8vIDQwCi0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09O
RV9TQU1QTEUgLy8gNDEKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAv
LyA0MgotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDQzCi0gICAg
ICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gNDQKLSAgICAgICAgICAgICAg
ICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyA0NQotICAgICAgICAgICAgICAgICAgICBDT05W
T0xWRV9PTkVfU0FNUExFIC8vIDQ2Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9T
QU1QTEUgLy8gNDcKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyA0
OAotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDQ5Ci0gICAgICAg
ICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gNTAKLSAgICAgICAgICAgICAgICAg
ICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyA1MQotICAgICAgICAgICAgICAgICAgICBDT05WT0xW
RV9PTkVfU0FNUExFIC8vIDUyCi0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1Q
TEUgLy8gNTMKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyA1NAot
ICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDU1Ci0gICAgICAgICAg
ICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gNTYKLSAgICAgICAgICAgICAgICAgICAg
Q09OVk9MVkVfT05FX1NBTVBMRSAvLyA1NwotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9P
TkVfU0FNUExFIC8vIDU4Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUg
Ly8gNTkKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyA2MAotICAg
ICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDYxCi0gICAgICAgICAgICAg
ICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gNjIKLSAgICAgICAgICAgICAgICAgICAgQ09O
Vk9MVkVfT05FX1NBTVBMRSAvLyA2MwotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVf
U0FNUExFIC8vIDY0Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgd2hpbGUgKG4tLSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm9uLW9wdGltaXpl
ZCB1c2luZyBhY3R1YWwgd2hpbGUgbG9vcC4KLSAgICAgICAgICAgICAgICAgICAgICAgIENPTlZP
TFZFX09ORV9TQU1QTEUKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0K
LSNlbmRpZgotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBMaW5lYXJseSBpbnRlcnBv
bGF0ZSB0aGUgdHdvICJjb252b2x1dGlvbnMiLgotICAgICAgICAgICAgZG91YmxlIHJlc3VsdCA9
ICgxLjAgLSBrZXJuZWxJbnRlcnBvbGF0aW9uRmFjdG9yKSAqIHN1bTEgKyBrZXJuZWxJbnRlcnBv
bGF0aW9uRmFjdG9yICogc3VtMjsKLQotICAgICAgICAgICAgKmRlc3RpbmF0aW9uKysgPSByZXN1
bHQ7CisgICAgICAgICAgICAqZGVzdGluYXRpb24rKyA9IGNvbnZvbHZlKGlucHV0UCwgazEsIGsy
LCBrZXJuZWxJbnRlcnBvbGF0aW9uRmFjdG9yKTsKIAogICAgICAgICAgICAgLy8gQWR2YW5jZSB0
aGUgdmlydHVhbCBpbmRleC4KICAgICAgICAgICAgIG1fdmlydHVhbFNvdXJjZUluZGV4ICs9IG1f
c2NhbGVGYWN0b3I7CkBAIC01MzAsNiArMzM1LDg0IEBAIHZvaWQgU2luY1Jlc2FtcGxlcjo6cHJv
Y2VzcyhmbG9hdCogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MsIGNvbnN0IEZ1
CiAgICAgfQogfQogCitmbG9hdCBTaW5jUmVzYW1wbGVyOjpjb252b2x2ZShjb25zdCBmbG9hdCog
aW5wdXRQLCBjb25zdCBmbG9hdCogazEsIGNvbnN0IGZsb2F0KiBrMiwgZG91YmxlIGtlcm5lbElu
dGVycG9sYXRpb25GYWN0b3IpCit7CisjaWYgVVNFKEFDQ0VMRVJBVEUpCisgICAgZmxvYXQgc3Vt
MTsKKyAgICBmbG9hdCBzdW0yOworICAgIHZEU1BfZG90cHIoaW5wdXRQLCAxLCBrMSwgMSwgJnN1
bTEsIGtlcm5lbFNpemUpOworICAgIHZEU1BfZG90cHIoaW5wdXRQLCAxLCBrMiwgMSwgJnN1bTIs
IGtlcm5lbFNpemUpOworCisgICAgLy8gTGluZWFybHkgaW50ZXJwb2xhdGUgdGhlIHR3byAiY29u
dm9sdXRpb25zIi4KKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KCgxLjAgLSBrZXJuZWxJ
bnRlcnBvbGF0aW9uRmFjdG9yKSAqIHN1bTEgKyBrZXJuZWxJbnRlcnBvbGF0aW9uRmFjdG9yICog
c3VtMik7CisjZWxpZiBDUFUoWDg2X1NTRTIpCisgICAgX19tMTI4IG1faW5wdXQ7CisgICAgX19t
MTI4IG1fc3VtczEgPSBfbW1fc2V0emVyb19wcygpOworICAgIF9fbTEyOCBtX3N1bXMyID0gX21t
X3NldHplcm9fcHMoKTsKKworICAgIC8vIEJhc2VkIG9uIHxpbnB1dFB8IGFsaWdubWVudCwgd2Ug
bmVlZCB0byB1c2UgbG9hZHUgb3IgbG9hZC4KKyAgICBpZiAocmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KGlucHV0UCkgJiAweDBGKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBrZXJuZWxTaXplOyBpICs9IDQpIHsKKyAgICAgICAgICAgIG1faW5wdXQgPSBfbW1fbG9hZHVf
cHMoaW5wdXRQICsgaSk7CisgICAgICAgICAgICBtX3N1bXMxID0gX21tX2FkZF9wcyhtX3N1bXMx
LCBfbW1fbXVsX3BzKG1faW5wdXQsIF9tbV9sb2FkX3BzKGsxICsgaSkpKTsKKyAgICAgICAgICAg
IG1fc3VtczIgPSBfbW1fYWRkX3BzKG1fc3VtczIsIF9tbV9tdWxfcHMobV9pbnB1dCwgX21tX2xv
YWRfcHMoazIgKyBpKSkpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGtlcm5lbFNpemU7IGkgKz0gNCkgeworICAgICAgICAgICAgbV9p
bnB1dCA9IF9tbV9sb2FkX3BzKGlucHV0UCArIGkpOworICAgICAgICAgICAgbV9zdW1zMSA9IF9t
bV9hZGRfcHMobV9zdW1zMSwgX21tX211bF9wcyhtX2lucHV0LCBfbW1fbG9hZF9wcyhrMSArIGkp
KSk7CisgICAgICAgICAgICBtX3N1bXMyID0gX21tX2FkZF9wcyhtX3N1bXMyLCBfbW1fbXVsX3Bz
KG1faW5wdXQsIF9tbV9sb2FkX3BzKGsyICsgaSkpKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IC8vIExpbmVhcmx5IGludGVycG9sYXRlIHRoZSB0d28gImNvbnZvbHV0aW9ucyIuCisgICAgbV9z
dW1zMSA9IF9tbV9tdWxfcHMobV9zdW1zMSwgX21tX3NldF9wczEoc3RhdGljX2Nhc3Q8ZmxvYXQ+
KDEuMCAtIGtlcm5lbEludGVycG9sYXRpb25GYWN0b3IpKSk7CisgICAgbV9zdW1zMiA9IF9tbV9t
dWxfcHMobV9zdW1zMiwgX21tX3NldF9wczEoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGtlcm5lbEludGVy
cG9sYXRpb25GYWN0b3IpKSk7CisgICAgbV9zdW1zMSA9IF9tbV9hZGRfcHMobV9zdW1zMSwgbV9z
dW1zMik7CisKKyAgICAvLyBTdW0gY29tcG9uZW50cyB0b2dldGhlci4KKyAgICBmbG9hdCByZXN1
bHQ7CisgICAgbV9zdW1zMiA9IF9tbV9hZGRfcHMoX21tX21vdmVobF9wcyhtX3N1bXMxLCBtX3N1
bXMxKSwgbV9zdW1zMSk7CisgICAgX21tX3N0b3JlX3NzKCZyZXN1bHQsIF9tbV9hZGRfc3MobV9z
dW1zMiwgX21tX3NodWZmbGVfcHMobV9zdW1zMiwgbV9zdW1zMiwgMSkpKTsKKworICAgIHJldHVy
biByZXN1bHQ7CisjZWxpZiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCisgICAgZmxvYXQzMng0
X3QgbV9pbnB1dDsKKyAgICBmbG9hdDMyeDRfdCBtX3N1bXMxID0gdm1vdnFfbl9mMzIoMCk7Cisg
ICAgZmxvYXQzMng0X3QgbV9zdW1zMiA9IHZtb3ZxX25fZjMyKDApOworCisgICAgY29uc3QgZmxv
YXQqIHVwcGVyID0gaW5wdXRQICsga0tlcm5lbFNpemU7CisgICAgZm9yICg7IGlucHV0UCA8IHVw
cGVyOyApIHsKKyAgICAgICAgbV9pbnB1dCA9IHZsZDFxX2YzMihpbnB1dFApOworICAgICAgICBp
bnB1dFAgKz0gNDsKKyAgICAgICAgbV9zdW1zMSA9IHZtbGFxX2YzMihtX3N1bXMxLCBtX2lucHV0
LCB2bGQxcV9mMzIoazEpKTsKKyAgICAgICAgazEgKz0gNDsKKyAgICAgICAgbV9zdW1zMiA9IHZt
bGFxX2YzMihtX3N1bXMyLCBtX2lucHV0LCB2bGQxcV9mMzIoazIpKTsKKyAgICAgICAgazIgKz0g
NDsKKyAgICB9CisKKyAgICAvLyBMaW5lYXJseSBpbnRlcnBvbGF0ZSB0aGUgdHdvICJjb252b2x1
dGlvbnMiLgorICAgIG1fc3VtczEgPSB2bWxhcV9mMzIodm11bHFfZjMyKG1fc3VtczEsIHZtb3Zx
X25fZjMyKDEuMCAtIGtlcm5lbEludGVycG9sYXRpb25GYWN0b3IpKSwgbV9zdW1zMiwgdm1vdnFf
bl9mMzIoa2VybmVsSW50ZXJwb2xhdGlvbkZhY3RvcikpOworCisgICAgLy8gU3VtIGNvbXBvbmVu
dHMgdG9nZXRoZXIuCisgICAgZmxvYXQzMngyX3QgbV9oYWxmID0gdmFkZF9mMzIodmdldF9oaWdo
X2YzMihtX3N1bXMxKSwgdmdldF9sb3dfZjMyKG1fc3VtczEpKTsKKyAgICByZXR1cm4gdmdldF9s
YW5lX2YzMih2cGFkZF9mMzIobV9oYWxmLCBtX2hhbGYpLCAwKTsKKyNlbHNlCisgICAgZmxvYXQg
c3VtMSA9IDA7CisgICAgZmxvYXQgc3VtMiA9IDA7CisKKyAgICAvLyBHZW5lcmF0ZSBhIHNpbmds
ZSBvdXRwdXQgc2FtcGxlLgorICAgIGludCBuID0ga2VybmVsU2l6ZTsKKyAgICB3aGlsZSAobi0t
KSB7CisgICAgICAgIHN1bTEgKz0gKmlucHV0UCAqICprMSsrOworICAgICAgICBzdW0yICs9ICpp
bnB1dFArKyAqICprMisrOworICAgIH0KKworICAgIC8vIExpbmVhcmx5IGludGVycG9sYXRlIHRo
ZSB0d28gImNvbnZvbHV0aW9ucyIuCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PigoMS4w
IC0ga2VybmVsSW50ZXJwb2xhdGlvbkZhY3RvcikgKiBzdW0xICsga2VybmVsSW50ZXJwb2xhdGlv
bkZhY3RvciAqIHN1bTIpOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9TaW5jUmVzYW1wbGVyLmgKaW5kZXggZDBhNDI4MzJkZjg4ZmYzMzJiNGFiM2M0YTEwZTMx
ZmUyYzNmMjJjOS4uZmVhNGU1NGViNjhiMTQ1MzJmYjJhYTRiNDUxZDlhNGRjYzY3MDMxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaApAQCAtNTks
NiArNTksOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBpbml0aWFsaXplS2VybmVsKCk7CiAgICAg
dm9pZCBjb25zdW1lU291cmNlKGZsb2F0KiBidWZmZXIsIHVuc2lnbmVkIG51bWJlck9mU291cmNl
RnJhbWVzLCBjb25zdCBGdW5jdGlvbjx2b2lkKEF1ZGlvQnVzKiBidXMsIHNpemVfdCBmcmFtZXNU
b1Byb2Nlc3MpPiYgcHJvdmlkZUlucHV0KTsKICAgICB2b2lkIHVwZGF0ZVJlZ2lvbnMoYm9vbCBp
c1NlY29uZExvYWQpOworCisgICAgZmxvYXQgY29udm9sdmUoY29uc3QgZmxvYXQqIGlucHV0UCwg
Y29uc3QgZmxvYXQqIGsxLCBjb25zdCBmbG9hdCogazIsIGRvdWJsZSBrZXJuZWxJbnRlcnBvbGF0
aW9uRmFjdG9yKTsKICAgICAKICAgICBkb3VibGUgbV9zY2FsZUZhY3RvcjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415442</attachid>
            <date>2020-12-04 12:12:20 -0800</date>
            <delta_ts>2020-12-04 13:11:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219546-20201204121219.patch</filename>
            <type>text/plain</type>
            <size>16221</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzdhNGUxNWEzNTlkNTFm
NWEzNmFlYWVjMjk5Zjc1ZGQ2MDQzOTY3My4uMDM1YjQwMWRiMmYwMGU4MmMxZWM1NzUwOTdhNmVj
ZWJlNGU3Mzc5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEyLTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wcm92ZSB2ZWN0b3JpemF0
aW9uIGluIFNpbmNSZXNhbXBsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxOTU0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBVU0UoQUNDRUxFUkFURSkgdmVjdG9yaXphdGlvbiBsb2dpYyB0byBT
aW5jUmVzYW1wbGVyIGZvciBDb2NvYSBwb3J0cy4KKworICAgICAgICBBbHNvIGltcG9ydCBIQVZF
KEFSTV9ORU9OX0lOVFJJTlNJQ1MpIHZlY3Rvcml6YXRpb24gZnJvbSBCbGluazoKKyAgICAgICAg
LSBodHRwczovL2dpdGh1Yi5jb20vY2hyb21pdW0vY2hyb21pdW0vYmxvYi9tYXN0ZXIvbWVkaWEv
YmFzZS9zaW5jX3Jlc2FtcGxlci5jYworCisgICAgICAgIE1vdmUgY29udm9sdXRpb24gaW1wbGVt
ZW50cyBmcm9tIHByb2Nlc3MoKSB0byBhIHNlcGFyYXRlIGNvbnZvbHZlKCkgZnVuY3Rpb24KKyAg
ICAgICAgZm9yIGNsYXJpdHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1w
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbmNSZXNhbXBsZXI6OlNpbmNSZXNhbXBsZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U2luY1Jlc2FtcGxlcjo6cHJvY2Vzcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTaW5jUmVzYW1wbGVyOjpjb252b2x2ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vU2luY1Jlc2FtcGxlci5oOgorCiAyMDIwLTEyLTA0ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBGbG9hdCBwb3NpdGlvbmluZyBuZWVkcyB0
byBoYXBwZW4gd2hpbGUgYnVpbGRpbmcgdGhlIGxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHAKaW5kZXggMTczYzk0MDE0MjkwMGQyMmEzNjFi
Y2QyYzA0NDNmODcxMDAxYTEzNS4uM2MxZTUyMWRhMTEzMTQ1ODcwYzgxZjc1YmY0MDI0M2Y5OTZh
MDBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2Ft
cGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxl
ci5jcHAKQEAgLTM1LDggKzM1LDEyIEBACiAjaW5jbHVkZSAiQXVkaW9CdXMuaCIKICNpbmNsdWRl
IDx3dGYvTWF0aEV4dHJhcy5oPgogCi0jaWYgQ1BVKFg4Nl9TU0UyKQotI2luY2x1ZGUgPGVtbWlu
dHJpbi5oPgorI2lmIFVTRShBQ0NFTEVSQVRFKQorI2luY2x1ZGUgPEFjY2VsZXJhdGUvQWNjZWxl
cmF0ZS5oPgorI2VsaWYgQ1BVKFg4Nl9TU0UyKQorI2luY2x1ZGUgPHhtbWludHJpbi5oPgorI2Vs
aWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQorI2luY2x1ZGUgPGFybV9uZW9uLmg+CiAjZW5k
aWYKIAogLy8gSW5pdGlhbCBpbnB1dCBidWZmZXIgbGF5b3V0LCBkaXZpZGluZyBpbnRvIHJlZ2lv
bnMgcjAgdG8gcjQgKG5vdGU6IHIwLCByMwpAQCAtMTEzLDYgKzExNyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY29uc3RleHByIHVuc2lnbmVkIGtlcm5lbFNpemUgeyAzMiB9OwogY29uc3Rl
eHByIHVuc2lnbmVkIG51bWJlck9mS2VybmVsT2Zmc2V0cyB7IDMyIH07Citjb25zdGV4cHIgdW5z
aWduZWQga2VybmVsU3RvcmFnZVNpemUgeyBrZXJuZWxTaXplICogKG51bWJlck9mS2VybmVsT2Zm
c2V0cyArIDEpIH07CiAKIHN0YXRpYyBzaXplX3QgY2FsY3VsYXRlQ2h1bmtTaXplKHVuc2lnbmVk
IGJsb2NrU2l6ZSwgZG91YmxlIHNjYWxlRmFjdG9yKQogewpAQCAtMTIxLDcgKzEyNiw3IEBAIHN0
YXRpYyBzaXplX3QgY2FsY3VsYXRlQ2h1bmtTaXplKHVuc2lnbmVkIGJsb2NrU2l6ZSwgZG91Ymxl
IHNjYWxlRmFjdG9yKQogCiBTaW5jUmVzYW1wbGVyOjpTaW5jUmVzYW1wbGVyKGRvdWJsZSBzY2Fs
ZUZhY3RvciwgdW5zaWduZWQgcmVxdWVzdEZyYW1lcykKICAgICA6IG1fc2NhbGVGYWN0b3Ioc2Nh
bGVGYWN0b3IpCi0gICAgLCBtX2tlcm5lbFN0b3JhZ2Uoa2VybmVsU2l6ZSAqIChudW1iZXJPZktl
cm5lbE9mZnNldHMgKyAxKSkKKyAgICAsIG1fa2VybmVsU3RvcmFnZShrZXJuZWxTdG9yYWdlU2l6
ZSkKICAgICAsIG1fcmVxdWVzdEZyYW1lcyhyZXF1ZXN0RnJhbWVzKQogICAgICwgbV9pbnB1dEJ1
ZmZlcihtX3JlcXVlc3RGcmFtZXMgKyBrZXJuZWxTaXplKSAvLyBTZWUgaW5wdXQgYnVmZmVyIGxh
eW91dCBhYm92ZS4KICAgICAsIG1fcjEobV9pbnB1dEJ1ZmZlci5kYXRhKCkpCkBAIC0yOTYsMjEz
ICszMDEsMTcgQEAgdm9pZCBTaW5jUmVzYW1wbGVyOjpwcm9jZXNzKGZsb2F0KiBkZXN0aW5hdGlv
biwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcywgY29uc3QgRnUKICAgICAgICAgICAgIGZsb2F0KiBr
MSA9IG1fa2VybmVsU3RvcmFnZS5kYXRhKCkgKyBvZmZzZXRJbmRleCAqIGtlcm5lbFNpemU7CiAg
ICAgICAgICAgICBmbG9hdCogazIgPSBrMSArIGtlcm5lbFNpemU7CiAKKyAgICAgICAgICAgIC8v
IEVuc3VyZSB8azF8LCB8azJ8IGFyZSAxNi1ieXRlIGFsaWduZWQgZm9yIFNJTUQgdXNhZ2UuIFNo
b3VsZCBhbHdheXMgYmUgdHJ1ZSBzbyBsb25nIGFzIGtlcm5lbFNpemUgaXMgYSBtdWx0aXBsZSBv
ZiAxNi4KKyAgICAgICAgICAgIEFTU0VSVCghKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihr
MSkgJiAweDBGKSk7CisgICAgICAgICAgICBBU1NFUlQoIShyZWludGVycHJldF9jYXN0PHVpbnRw
dHJfdD4oazIpICYgMHgwRikpOworCiAgICAgICAgICAgICAvLyBJbml0aWFsaXplIGlucHV0IHBv
aW50ZXIgYmFzZWQgb24gcXVhbnRpemVkIG1fdmlydHVhbFNvdXJjZUluZGV4LgogICAgICAgICAg
ICAgZmxvYXQqIGlucHV0UCA9IG1fcjEgKyBzb3VyY2VJbmRleEk7CiAKLSAgICAgICAgICAgIC8v
IFdlJ2xsIGNvbXB1dGUgImNvbnZvbHV0aW9ucyIgZm9yIHRoZSB0d28ga2VybmVscyB3aGljaCBz
dHJhZGRsZSBtX3ZpcnR1YWxTb3VyY2VJbmRleAotICAgICAgICAgICAgZmxvYXQgc3VtMSA9IDA7
Ci0gICAgICAgICAgICBmbG9hdCBzdW0yID0gMDsKLQogICAgICAgICAgICAgLy8gRmlndXJlIG91
dCBob3cgbXVjaCB0byB3ZWlnaHQgZWFjaCBrZXJuZWwncyAiY29udm9sdXRpb24iLgogICAgICAg
ICAgICAgZG91YmxlIGtlcm5lbEludGVycG9sYXRpb25GYWN0b3IgPSB2aXJ0dWFsT2Zmc2V0SW5k
ZXggLSBvZmZzZXRJbmRleDsKIAotICAgICAgICAgICAgLy8gR2VuZXJhdGUgYSBzaW5nbGUgb3V0
cHV0IHNhbXBsZS4gCi0gICAgICAgICAgICBpbnQgbiA9IGtlcm5lbFNpemU7Ci0KLSNkZWZpbmUg
Q09OVk9MVkVfT05FX1NBTVBMRSAgICAgIFwKLSAgICAgICAgICAgIGlucHV0ID0gKmlucHV0UCsr
OyAgIFwKLSAgICAgICAgICAgIHN1bTEgKz0gaW5wdXQgKiAqazE7IFwKLSAgICAgICAgICAgIHN1
bTIgKz0gaW5wdXQgKiAqazI7IFwKLSAgICAgICAgICAgICsrazE7ICAgICAgICAgICAgICAgIFwK
LSAgICAgICAgICAgICsrazI7Ci0KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmbG9h
dCBpbnB1dDsKLQotI2lmIENQVShYODZfU1NFMikKLSAgICAgICAgICAgICAgICAvLyBJZiB0aGUg
c291cmNlUCBhZGRyZXNzIGlzIG5vdCAxNi1ieXRlIGFsaWduZWQsIHRoZSBmaXJzdCBzZXZlcmFs
IGZyYW1lcyAoYXQgbW9zdCB0aHJlZSkgc2hvdWxkIGJlIHByb2Nlc3NlZCBzZXBlcmF0ZWx5Lgot
ICAgICAgICAgICAgICAgIHdoaWxlICgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGlucHV0
UCkgJiAweDBGKSAmJiBuKSB7Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1Q
TEUKLSAgICAgICAgICAgICAgICAgICAgbi0tOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgIC8vIE5vdyB0aGUgaW5wdXRQIGlzIGFsaWduZWQgYW5kIHN0YXJ0IHRvIGFwcGx5
IFNTRS4KLSAgICAgICAgICAgICAgICBmbG9hdCogZW5kUCA9IGlucHV0UCArIG4gLSBuICUgNDsK
LSAgICAgICAgICAgICAgICBfX20xMjggbUlucHV0OwotICAgICAgICAgICAgICAgIF9fbTEyOCBt
SzE7Ci0gICAgICAgICAgICAgICAgX19tMTI4IG1LMjsKLSAgICAgICAgICAgICAgICBfX20xMjgg
bXVsMTsKLSAgICAgICAgICAgICAgICBfX20xMjggbXVsMjsKLQotICAgICAgICAgICAgICAgIF9f
bTEyOCBzdW1zMSA9IF9tbV9zZXR6ZXJvX3BzKCk7Ci0gICAgICAgICAgICAgICAgX19tMTI4IHN1
bXMyID0gX21tX3NldHplcm9fcHMoKTsKLSAgICAgICAgICAgICAgICBib29sIGsxQWxpZ25lZCA9
ICEocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGsxKSAmIDB4MEYpOwotICAgICAgICAgICAg
ICAgIGJvb2wgazJBbGlnbmVkID0gIShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oazIpICYg
MHgwRik7Ci0KLSNkZWZpbmUgTE9BRF9EQVRBKGwxLCBsMikgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgICAgICAgICAgICAgbUlucHV0ID0gX21tX2xvYWRfcHMoaW5wdXRQKTsgICAgXAot
ICAgICAgICAgICAgICAgIG1LMSA9IF9tbV8jI2wxIyNfcHMoazEpOyAgICAgICAgIFwKLSAgICAg
ICAgICAgICAgICBtSzIgPSBfbW1fIyNsMiMjX3BzKGsyKTsKLQotI2RlZmluZSBDT05WT0xWRV80
X1NBTVBMRVMgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBtdWwxID0g
X21tX211bF9wcyhtSW5wdXQsIG1LMSk7ICBcCi0gICAgICAgICAgICAgICAgbXVsMiA9IF9tbV9t
dWxfcHMobUlucHV0LCBtSzIpOyAgXAotICAgICAgICAgICAgICAgIHN1bXMxID0gX21tX2FkZF9w
cyhzdW1zMSwgbXVsMSk7IFwKLSAgICAgICAgICAgICAgICBzdW1zMiA9IF9tbV9hZGRfcHMoc3Vt
czIsIG11bDIpOyBcCi0gICAgICAgICAgICAgICAgaW5wdXRQICs9IDQ7ICAgICAgICAgICAgICAg
ICAgICAgXAotICAgICAgICAgICAgICAgIGsxICs9IDQ7ICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICAgICAgICAgICAgICBrMiArPSA0OwotCi0gICAgICAgICAgICAgICAgaWYgKGsxQWxp
Z25lZCAmJiBrMkFsaWduZWQpIHsgLy8gYm90aCBhbGlnbmVkCi0gICAgICAgICAgICAgICAgICAg
IHdoaWxlIChpbnB1dFAgPCBlbmRQKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBMT0FEX0RB
VEEobG9hZCwgbG9hZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIENPTlZPTFZFXzRfU0FNUExF
UwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghazFB
bGlnbmVkICYmIGsyQWxpZ25lZCkgeyAvLyBvbmx5IGsyIGFsaWduZWQKLSAgICAgICAgICAgICAg
ICAgICAgd2hpbGUgKGlucHV0UCA8IGVuZFApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIExP
QURfREFUQShsb2FkdSwgbG9hZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIENPTlZPTFZFXzRf
U0FNUExFUwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlm
IChrMUFsaWduZWQgJiYgIWsyQWxpZ25lZCkgeyAvLyBvbmx5IGsxIGFsaWduZWQKLSAgICAgICAg
ICAgICAgICAgICAgd2hpbGUgKGlucHV0UCA8IGVuZFApIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIExPQURfREFUQShsb2FkLCBsb2FkdSkKLSAgICAgICAgICAgICAgICAgICAgICAgIENPTlZP
TFZFXzRfU0FNUExFUwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBl
bHNlIHsgLy8gYm90aCBub24tYWxpZ25lZAotICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaW5w
dXRQIDwgZW5kUCkgewotICAgICAgICAgICAgICAgICAgICAgICAgTE9BRF9EQVRBKGxvYWR1LCBs
b2FkdSkKLSAgICAgICAgICAgICAgICAgICAgICAgIENPTlZPTFZFXzRfU0FNUExFUwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8g
U3VtbWFyaXplIHRoZSBTU0UgcmVzdWx0cyB0byBzdW0xIGFuZCBzdW0yLgotICAgICAgICAgICAg
ICAgIGZsb2F0KiBncm91cFN1bVAgPSByZWludGVycHJldF9jYXN0PGZsb2F0Kj4oJnN1bXMxKTsK
LSAgICAgICAgICAgICAgICBzdW0xICs9IGdyb3VwU3VtUFswXSArIGdyb3VwU3VtUFsxXSArIGdy
b3VwU3VtUFsyXSArIGdyb3VwU3VtUFszXTsKLSAgICAgICAgICAgICAgICBncm91cFN1bVAgPSBy
ZWludGVycHJldF9jYXN0PGZsb2F0Kj4oJnN1bXMyKTsKLSAgICAgICAgICAgICAgICBzdW0yICs9
IGdyb3VwU3VtUFswXSArIGdyb3VwU3VtUFsxXSArIGdyb3VwU3VtUFsyXSArIGdyb3VwU3VtUFsz
XTsKLQotICAgICAgICAgICAgICAgIG4gJT0gNDsKLSAgICAgICAgICAgICAgICB3aGlsZSAobikg
ewotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFCi0gICAgICAgICAgICAg
ICAgICAgIG4tLTsKLSAgICAgICAgICAgICAgICB9Ci0jZWxzZQotICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBhZGQgQVJNIE5FT04gb3B0aW1pemF0aW9ucyBmb3IgdGhlIGZvbGxvd2luZy4gVGhl
IHNjYWxhciBjb2RlLXBhdGggY2FuIHByb2JhYmx5IGFsc28gYmUgb3B0aW1pemVkIGJldHRlci4K
LSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvLyBPcHRpbWl6ZSBzaXplIDMyIGFu
ZCBzaXplIDY0IGtlcm5lbHMgYnkgdW5yb2xsaW5nIHRoZSB3aGlsZSBsb29wLgotICAgICAgICAg
ICAgICAgIC8vIEEgMjAgLSAzMCUgc3BlZWQgaW1wcm92ZW1lbnQgd2FzIG1lYXN1cmVkIGluIHNv
bWUgY2FzZXMgYnkgdXNpbmcgdGhpcyBhcHByb2FjaC4KLSAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICBpZiAobiA9PSAzMikgewotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9P
TkVfU0FNUExFIC8vIDEKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAv
LyAyCi0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMwotICAgICAg
ICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDQKLSAgICAgICAgICAgICAgICAg
ICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyA1Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZF
X09ORV9TQU1QTEUgLy8gNgotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExF
IC8vIDcKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyA4Ci0gICAg
ICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gOQotICAgICAgICAgICAgICAg
ICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDEwCi0gICAgICAgICAgICAgICAgICAgIENPTlZP
TFZFX09ORV9TQU1QTEUgLy8gMTEKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NB
TVBMRSAvLyAxMgotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDEz
Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMTQKLSAgICAgICAg
ICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyAxNQotICAgICAgICAgICAgICAgICAg
ICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDE2Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZF
X09ORV9TQU1QTEUgLy8gMTcKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBM
RSAvLyAxOAotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDE5Ci0g
ICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMjAKLSAgICAgICAgICAg
ICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyAyMQotICAgICAgICAgICAgICAgICAgICBD
T05WT0xWRV9PTkVfU0FNUExFIC8vIDIyCi0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09O
RV9TQU1QTEUgLy8gMjMKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAv
LyAyNAotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDI1Ci0gICAg
ICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMjYKLSAgICAgICAgICAgICAg
ICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyAyNwotICAgICAgICAgICAgICAgICAgICBDT05W
T0xWRV9PTkVfU0FNUExFIC8vIDI4Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9T
QU1QTEUgLy8gMjkKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyAz
MAotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDMxCi0gICAgICAg
ICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMzIKLSAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKG4gPT0gNjQpIHsKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NB
TVBMRSAvLyAxCi0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMgot
ICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDMKLSAgICAgICAgICAg
ICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyA0Ci0gICAgICAgICAgICAgICAgICAgIENP
TlZPTFZFX09ORV9TQU1QTEUgLy8gNQotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVf
U0FNUExFIC8vIDYKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyA3
Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gOAotICAgICAgICAg
ICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDkKLSAgICAgICAgICAgICAgICAgICAg
Q09OVk9MVkVfT05FX1NBTVBMRSAvLyAxMAotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9P
TkVfU0FNUExFIC8vIDExCi0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUg
Ly8gMTIKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyAxMwotICAg
ICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDE0Ci0gICAgICAgICAgICAg
ICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMTUKLSAgICAgICAgICAgICAgICAgICAgQ09O
Vk9MVkVfT05FX1NBTVBMRSAvLyAxNgotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVf
U0FNUExFIC8vIDE3Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8g
MTgKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyAxOQotICAgICAg
ICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDIwCi0gICAgICAgICAgICAgICAg
ICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMjEKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9M
VkVfT05FX1NBTVBMRSAvLyAyMgotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FN
UExFIC8vIDIzCi0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMjQK
LSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyAyNQotICAgICAgICAg
ICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDI2Ci0gICAgICAgICAgICAgICAgICAg
IENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMjcKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVf
T05FX1NBTVBMRSAvLyAyOAotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExF
IC8vIDI5Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMzAKLSAg
ICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyAzMQotICAgICAgICAgICAg
ICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDMyCi0gICAgICAgICAgICAgICAgICAgIENP
TlZPTFZFX09ORV9TQU1QTEUgLy8gMzMKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05F
X1NBTVBMRSAvLyAzNAotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8v
IDM1Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMzYKLSAgICAg
ICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyAzNwotICAgICAgICAgICAgICAg
ICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDM4Ci0gICAgICAgICAgICAgICAgICAgIENPTlZP
TFZFX09ORV9TQU1QTEUgLy8gMzkKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NB
TVBMRSAvLyA0MAotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDQx
Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gNDIKLSAgICAgICAg
ICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyA0MwotICAgICAgICAgICAgICAgICAg
ICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDQ0Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZF
X09ORV9TQU1QTEUgLy8gNDUKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBM
RSAvLyA0NgotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDQ3Ci0g
ICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gNDgKLSAgICAgICAgICAg
ICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyA0OQotICAgICAgICAgICAgICAgICAgICBD
T05WT0xWRV9PTkVfU0FNUExFIC8vIDUwCi0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09O
RV9TQU1QTEUgLy8gNTEKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAv
LyA1MgotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDUzCi0gICAg
ICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gNTQKLSAgICAgICAgICAgICAg
ICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyA1NQotICAgICAgICAgICAgICAgICAgICBDT05W
T0xWRV9PTkVfU0FNUExFIC8vIDU2Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9T
QU1QTEUgLy8gNTcKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyA1
OAotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDU5Ci0gICAgICAg
ICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gNjAKLSAgICAgICAgICAgICAgICAg
ICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyA2MQotICAgICAgICAgICAgICAgICAgICBDT05WT0xW
RV9PTkVfU0FNUExFIC8vIDYyCi0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1Q
TEUgLy8gNjMKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyA2NAot
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlIChuLS0p
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vbi1vcHRpbWl6ZWQgdXNpbmcgYWN0dWFs
IHdoaWxlIGxvb3AuCi0gICAgICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExF
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0jZW5kaWYKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgLy8gTGluZWFybHkgaW50ZXJwb2xhdGUgdGhlIHR3byAi
Y29udm9sdXRpb25zIi4KLSAgICAgICAgICAgIGRvdWJsZSByZXN1bHQgPSAoMS4wIC0ga2VybmVs
SW50ZXJwb2xhdGlvbkZhY3RvcikgKiBzdW0xICsga2VybmVsSW50ZXJwb2xhdGlvbkZhY3RvciAq
IHN1bTI7Ci0KLSAgICAgICAgICAgICpkZXN0aW5hdGlvbisrID0gcmVzdWx0OworICAgICAgICAg
ICAgKmRlc3RpbmF0aW9uKysgPSBjb252b2x2ZShpbnB1dFAsIGsxLCBrMiwga2VybmVsSW50ZXJw
b2xhdGlvbkZhY3Rvcik7CiAKICAgICAgICAgICAgIC8vIEFkdmFuY2UgdGhlIHZpcnR1YWwgaW5k
ZXguCiAgICAgICAgICAgICBtX3ZpcnR1YWxTb3VyY2VJbmRleCArPSBtX3NjYWxlRmFjdG9yOwpA
QCAtNTMwLDYgKzMzOSw4NCBAQCB2b2lkIFNpbmNSZXNhbXBsZXI6OnByb2Nlc3MoZmxvYXQqIGRl
c3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzLCBjb25zdCBGdQogICAgIH0KIH0KIAor
ZmxvYXQgU2luY1Jlc2FtcGxlcjo6Y29udm9sdmUoY29uc3QgZmxvYXQqIGlucHV0UCwgY29uc3Qg
ZmxvYXQqIGsxLCBjb25zdCBmbG9hdCogazIsIGRvdWJsZSBrZXJuZWxJbnRlcnBvbGF0aW9uRmFj
dG9yKQoreworI2lmIFVTRShBQ0NFTEVSQVRFKQorICAgIGZsb2F0IHN1bTE7CisgICAgZmxvYXQg
c3VtMjsKKyAgICB2RFNQX2RvdHByKGlucHV0UCwgMSwgazEsIDEsICZzdW0xLCBrZXJuZWxTaXpl
KTsKKyAgICB2RFNQX2RvdHByKGlucHV0UCwgMSwgazIsIDEsICZzdW0yLCBrZXJuZWxTaXplKTsK
KworICAgIC8vIExpbmVhcmx5IGludGVycG9sYXRlIHRoZSB0d28gImNvbnZvbHV0aW9ucyIuCisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PigoMS4wIC0ga2VybmVsSW50ZXJwb2xhdGlvbkZh
Y3RvcikgKiBzdW0xICsga2VybmVsSW50ZXJwb2xhdGlvbkZhY3RvciAqIHN1bTIpOworI2VsaWYg
Q1BVKFg4Nl9TU0UyKQorICAgIF9fbTEyOCBtX2lucHV0OworICAgIF9fbTEyOCBtX3N1bXMxID0g
X21tX3NldHplcm9fcHMoKTsKKyAgICBfX20xMjggbV9zdW1zMiA9IF9tbV9zZXR6ZXJvX3BzKCk7
CisKKyAgICAvLyBCYXNlZCBvbiB8aW5wdXRQfCBhbGlnbm1lbnQsIHdlIG5lZWQgdG8gdXNlIGxv
YWR1IG9yIGxvYWQuCisgICAgaWYgKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihpbnB1dFAp
ICYgMHgwRikgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwga2VybmVsU2l6ZTsg
aSArPSA0KSB7CisgICAgICAgICAgICBtX2lucHV0ID0gX21tX2xvYWR1X3BzKGlucHV0UCArIGkp
OworICAgICAgICAgICAgbV9zdW1zMSA9IF9tbV9hZGRfcHMobV9zdW1zMSwgX21tX211bF9wcyht
X2lucHV0LCBfbW1fbG9hZF9wcyhrMSArIGkpKSk7CisgICAgICAgICAgICBtX3N1bXMyID0gX21t
X2FkZF9wcyhtX3N1bXMyLCBfbW1fbXVsX3BzKG1faW5wdXQsIF9tbV9sb2FkX3BzKGsyICsgaSkp
KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBrZXJuZWxTaXplOyBpICs9IDQpIHsKKyAgICAgICAgICAgIG1faW5wdXQgPSBfbW1fbG9h
ZF9wcyhpbnB1dFAgKyBpKTsKKyAgICAgICAgICAgIG1fc3VtczEgPSBfbW1fYWRkX3BzKG1fc3Vt
czEsIF9tbV9tdWxfcHMobV9pbnB1dCwgX21tX2xvYWRfcHMoazEgKyBpKSkpOworICAgICAgICAg
ICAgbV9zdW1zMiA9IF9tbV9hZGRfcHMobV9zdW1zMiwgX21tX211bF9wcyhtX2lucHV0LCBfbW1f
bG9hZF9wcyhrMiArIGkpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBMaW5lYXJseSBp
bnRlcnBvbGF0ZSB0aGUgdHdvICJjb252b2x1dGlvbnMiLgorICAgIG1fc3VtczEgPSBfbW1fbXVs
X3BzKG1fc3VtczEsIF9tbV9zZXRfcHMxKHN0YXRpY19jYXN0PGZsb2F0PigxLjAgLSBrZXJuZWxJ
bnRlcnBvbGF0aW9uRmFjdG9yKSkpOworICAgIG1fc3VtczIgPSBfbW1fbXVsX3BzKG1fc3VtczIs
IF9tbV9zZXRfcHMxKHN0YXRpY19jYXN0PGZsb2F0PihrZXJuZWxJbnRlcnBvbGF0aW9uRmFjdG9y
KSkpOworICAgIG1fc3VtczEgPSBfbW1fYWRkX3BzKG1fc3VtczEsIG1fc3VtczIpOworCisgICAg
Ly8gU3VtIGNvbXBvbmVudHMgdG9nZXRoZXIuCisgICAgZmxvYXQgcmVzdWx0OworICAgIG1fc3Vt
czIgPSBfbW1fYWRkX3BzKF9tbV9tb3ZlaGxfcHMobV9zdW1zMSwgbV9zdW1zMSksIG1fc3VtczEp
OworICAgIF9tbV9zdG9yZV9zcygmcmVzdWx0LCBfbW1fYWRkX3NzKG1fc3VtczIsIF9tbV9zaHVm
ZmxlX3BzKG1fc3VtczIsIG1fc3VtczIsIDEpKSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworI2Vs
aWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQorICAgIGZsb2F0MzJ4NF90IG1faW5wdXQ7Cisg
ICAgZmxvYXQzMng0X3QgbV9zdW1zMSA9IHZtb3ZxX25fZjMyKDApOworICAgIGZsb2F0MzJ4NF90
IG1fc3VtczIgPSB2bW92cV9uX2YzMigwKTsKKworICAgIGNvbnN0IGZsb2F0KiB1cHBlciA9IGlu
cHV0UCArIGtLZXJuZWxTaXplOworICAgIGZvciAoOyBpbnB1dFAgPCB1cHBlcjsgKSB7CisgICAg
ICAgIG1faW5wdXQgPSB2bGQxcV9mMzIoaW5wdXRQKTsKKyAgICAgICAgaW5wdXRQICs9IDQ7Cisg
ICAgICAgIG1fc3VtczEgPSB2bWxhcV9mMzIobV9zdW1zMSwgbV9pbnB1dCwgdmxkMXFfZjMyKGsx
KSk7CisgICAgICAgIGsxICs9IDQ7CisgICAgICAgIG1fc3VtczIgPSB2bWxhcV9mMzIobV9zdW1z
MiwgbV9pbnB1dCwgdmxkMXFfZjMyKGsyKSk7CisgICAgICAgIGsyICs9IDQ7CisgICAgfQorCisg
ICAgLy8gTGluZWFybHkgaW50ZXJwb2xhdGUgdGhlIHR3byAiY29udm9sdXRpb25zIi4KKyAgICBt
X3N1bXMxID0gdm1sYXFfZjMyKHZtdWxxX2YzMihtX3N1bXMxLCB2bW92cV9uX2YzMigxLjAgLSBr
ZXJuZWxJbnRlcnBvbGF0aW9uRmFjdG9yKSksIG1fc3VtczIsIHZtb3ZxX25fZjMyKGtlcm5lbElu
dGVycG9sYXRpb25GYWN0b3IpKTsKKworICAgIC8vIFN1bSBjb21wb25lbnRzIHRvZ2V0aGVyLgor
ICAgIGZsb2F0MzJ4Ml90IG1faGFsZiA9IHZhZGRfZjMyKHZnZXRfaGlnaF9mMzIobV9zdW1zMSks
IHZnZXRfbG93X2YzMihtX3N1bXMxKSk7CisgICAgcmV0dXJuIHZnZXRfbGFuZV9mMzIodnBhZGRf
ZjMyKG1faGFsZiwgbV9oYWxmKSwgMCk7CisjZWxzZQorICAgIGZsb2F0IHN1bTEgPSAwOworICAg
IGZsb2F0IHN1bTIgPSAwOworCisgICAgLy8gR2VuZXJhdGUgYSBzaW5nbGUgb3V0cHV0IHNhbXBs
ZS4KKyAgICBpbnQgbiA9IGtlcm5lbFNpemU7CisgICAgd2hpbGUgKG4tLSkgeworICAgICAgICBz
dW0xICs9ICppbnB1dFAgKiAqazErKzsKKyAgICAgICAgc3VtMiArPSAqaW5wdXRQKysgKiAqazIr
KzsKKyAgICB9CisKKyAgICAvLyBMaW5lYXJseSBpbnRlcnBvbGF0ZSB0aGUgdHdvICJjb252b2x1
dGlvbnMiLgorICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oKDEuMCAtIGtlcm5lbEludGVy
cG9sYXRpb25GYWN0b3IpICogc3VtMSArIGtlcm5lbEludGVycG9sYXRpb25GYWN0b3IgKiBzdW0y
KTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
U2luY1Jlc2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2Ft
cGxlci5oCmluZGV4IGQwYTQyODMyZGY4OGZmMzMyYjRhYjNjNGExMGUzMWZlMmMzZjIyYzkuLmZl
YTRlNTRlYjY4YjE0NTMyZmIyYWE0YjQ1MWQ5YTRkY2M2NzAzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmgKQEAgLTU5LDYgKzU5LDggQEAgcHJv
dGVjdGVkOgogICAgIHZvaWQgaW5pdGlhbGl6ZUtlcm5lbCgpOwogICAgIHZvaWQgY29uc3VtZVNv
dXJjZShmbG9hdCogYnVmZmVyLCB1bnNpZ25lZCBudW1iZXJPZlNvdXJjZUZyYW1lcywgY29uc3Qg
RnVuY3Rpb248dm9pZChBdWRpb0J1cyogYnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKT4mIHBy
b3ZpZGVJbnB1dCk7CiAgICAgdm9pZCB1cGRhdGVSZWdpb25zKGJvb2wgaXNTZWNvbmRMb2FkKTsK
KworICAgIGZsb2F0IGNvbnZvbHZlKGNvbnN0IGZsb2F0KiBpbnB1dFAsIGNvbnN0IGZsb2F0KiBr
MSwgY29uc3QgZmxvYXQqIGsyLCBkb3VibGUga2VybmVsSW50ZXJwb2xhdGlvbkZhY3Rvcik7CiAg
ICAgCiAgICAgZG91YmxlIG1fc2NhbGVGYWN0b3I7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415453</attachid>
            <date>2020-12-04 13:11:27 -0800</date>
            <delta_ts>2020-12-04 14:21:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219546-20201204131127.patch</filename>
            <type>text/plain</type>
            <size>16139</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzdhNGUxNWEzNTlkNTFm
NWEzNmFlYWVjMjk5Zjc1ZGQ2MDQzOTY3My4uNjBlYTU2YzBiYmIyOTY2NDA5OTY4YWZkMWI5Y2M4
MWQ1ZjU5ZmE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEyLTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wcm92ZSB2ZWN0b3JpemF0
aW9uIGluIFNpbmNSZXNhbXBsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxOTU0NgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgIEFkZCBVU0UoQUNDRUxFUkFURSkgdmVjdG9yaXphdGlvbiBsb2dpYyB0byBTaW5j
UmVzYW1wbGVyIGZvciBDb2NvYSBwb3J0cy4KKworICAgICAgICBBbHNvIGltcG9ydCBIQVZFKEFS
TV9ORU9OX0lOVFJJTlNJQ1MpIHZlY3Rvcml6YXRpb24gZnJvbSBCbGluazoKKyAgICAgICAgLSBo
dHRwczovL2dpdGh1Yi5jb20vY2hyb21pdW0vY2hyb21pdW0vYmxvYi9tYXN0ZXIvbWVkaWEvYmFz
ZS9zaW5jX3Jlc2FtcGxlci5jYworCisgICAgICAgIE1vdmUgY29udm9sdXRpb24gaW1wbGVtZW50
cyBmcm9tIHByb2Nlc3MoKSB0byBhIHNlcGFyYXRlIGNvbnZvbHZlKCkgZnVuY3Rpb24KKyAgICAg
ICAgZm9yIGNsYXJpdHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbmNSZXNhbXBsZXI6OlNpbmNSZXNhbXBsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2luY1Jlc2FtcGxlcjo6cHJvY2Vzcyk6CisgICAgICAgIChXZWJD
b3JlOjpTaW5jUmVzYW1wbGVyOjpjb252b2x2ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
U2luY1Jlc2FtcGxlci5oOgorCiAyMDIwLTEyLTA0ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBGbG9hdCBwb3NpdGlvbmluZyBuZWVkcyB0byBo
YXBwZW4gd2hpbGUgYnVpbGRpbmcgdGhlIGxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHAKaW5kZXggMTczYzk0MDE0MjkwMGQyMmEzNjFiY2Qy
YzA0NDNmODcxMDAxYTEzNS4uODQ4ZGU2YmZiZWZkZDM2MzYyY2U1Y2VlNTYyMjQ2M2Y1YmRmOTVh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5j
cHAKQEAgLTM1LDggKzM1LDEyIEBACiAjaW5jbHVkZSAiQXVkaW9CdXMuaCIKICNpbmNsdWRlIDx3
dGYvTWF0aEV4dHJhcy5oPgogCi0jaWYgQ1BVKFg4Nl9TU0UyKQotI2luY2x1ZGUgPGVtbWludHJp
bi5oPgorI2lmIFVTRShBQ0NFTEVSQVRFKQorI2luY2x1ZGUgPEFjY2VsZXJhdGUvQWNjZWxlcmF0
ZS5oPgorI2VsaWYgQ1BVKFg4Nl9TU0UyKQorI2luY2x1ZGUgPHhtbWludHJpbi5oPgorI2VsaWYg
SEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQorI2luY2x1ZGUgPGFybV9uZW9uLmg+CiAjZW5kaWYK
IAogLy8gSW5pdGlhbCBpbnB1dCBidWZmZXIgbGF5b3V0LCBkaXZpZGluZyBpbnRvIHJlZ2lvbnMg
cjAgdG8gcjQgKG5vdGU6IHIwLCByMwpAQCAtMTEzLDYgKzExNyw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY29uc3RleHByIHVuc2lnbmVkIGtlcm5lbFNpemUgeyAzMiB9OwogY29uc3RleHBy
IHVuc2lnbmVkIG51bWJlck9mS2VybmVsT2Zmc2V0cyB7IDMyIH07Citjb25zdGV4cHIgdW5zaWdu
ZWQga2VybmVsU3RvcmFnZVNpemUgeyBrZXJuZWxTaXplICogKG51bWJlck9mS2VybmVsT2Zmc2V0
cyArIDEpIH07CiAKIHN0YXRpYyBzaXplX3QgY2FsY3VsYXRlQ2h1bmtTaXplKHVuc2lnbmVkIGJs
b2NrU2l6ZSwgZG91YmxlIHNjYWxlRmFjdG9yKQogewpAQCAtMTIxLDcgKzEyNiw3IEBAIHN0YXRp
YyBzaXplX3QgY2FsY3VsYXRlQ2h1bmtTaXplKHVuc2lnbmVkIGJsb2NrU2l6ZSwgZG91YmxlIHNj
YWxlRmFjdG9yKQogCiBTaW5jUmVzYW1wbGVyOjpTaW5jUmVzYW1wbGVyKGRvdWJsZSBzY2FsZUZh
Y3RvciwgdW5zaWduZWQgcmVxdWVzdEZyYW1lcykKICAgICA6IG1fc2NhbGVGYWN0b3Ioc2NhbGVG
YWN0b3IpCi0gICAgLCBtX2tlcm5lbFN0b3JhZ2Uoa2VybmVsU2l6ZSAqIChudW1iZXJPZktlcm5l
bE9mZnNldHMgKyAxKSkKKyAgICAsIG1fa2VybmVsU3RvcmFnZShrZXJuZWxTdG9yYWdlU2l6ZSkK
ICAgICAsIG1fcmVxdWVzdEZyYW1lcyhyZXF1ZXN0RnJhbWVzKQogICAgICwgbV9pbnB1dEJ1ZmZl
cihtX3JlcXVlc3RGcmFtZXMgKyBrZXJuZWxTaXplKSAvLyBTZWUgaW5wdXQgYnVmZmVyIGxheW91
dCBhYm92ZS4KICAgICAsIG1fcjEobV9pbnB1dEJ1ZmZlci5kYXRhKCkpCkBAIC0yOTYsMjEzICsz
MDEsMTcgQEAgdm9pZCBTaW5jUmVzYW1wbGVyOjpwcm9jZXNzKGZsb2F0KiBkZXN0aW5hdGlvbiwg
c2l6ZV90IGZyYW1lc1RvUHJvY2VzcywgY29uc3QgRnUKICAgICAgICAgICAgIGZsb2F0KiBrMSA9
IG1fa2VybmVsU3RvcmFnZS5kYXRhKCkgKyBvZmZzZXRJbmRleCAqIGtlcm5lbFNpemU7CiAgICAg
ICAgICAgICBmbG9hdCogazIgPSBrMSArIGtlcm5lbFNpemU7CiAKKyAgICAgICAgICAgIC8vIEVu
c3VyZSB8azF8LCB8azJ8IGFyZSAxNi1ieXRlIGFsaWduZWQgZm9yIFNJTUQgdXNhZ2UuIFNob3Vs
ZCBhbHdheXMgYmUgdHJ1ZSBzbyBsb25nIGFzIGtlcm5lbFNpemUgaXMgYSBtdWx0aXBsZSBvZiAx
Ni4KKyAgICAgICAgICAgIEFTU0VSVCghKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihrMSkg
JiAweDBGKSk7CisgICAgICAgICAgICBBU1NFUlQoIShyZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4oazIpICYgMHgwRikpOworCiAgICAgICAgICAgICAvLyBJbml0aWFsaXplIGlucHV0IHBvaW50
ZXIgYmFzZWQgb24gcXVhbnRpemVkIG1fdmlydHVhbFNvdXJjZUluZGV4LgogICAgICAgICAgICAg
ZmxvYXQqIGlucHV0UCA9IG1fcjEgKyBzb3VyY2VJbmRleEk7CiAKLSAgICAgICAgICAgIC8vIFdl
J2xsIGNvbXB1dGUgImNvbnZvbHV0aW9ucyIgZm9yIHRoZSB0d28ga2VybmVscyB3aGljaCBzdHJh
ZGRsZSBtX3ZpcnR1YWxTb3VyY2VJbmRleAotICAgICAgICAgICAgZmxvYXQgc3VtMSA9IDA7Ci0g
ICAgICAgICAgICBmbG9hdCBzdW0yID0gMDsKLQogICAgICAgICAgICAgLy8gRmlndXJlIG91dCBo
b3cgbXVjaCB0byB3ZWlnaHQgZWFjaCBrZXJuZWwncyAiY29udm9sdXRpb24iLgogICAgICAgICAg
ICAgZG91YmxlIGtlcm5lbEludGVycG9sYXRpb25GYWN0b3IgPSB2aXJ0dWFsT2Zmc2V0SW5kZXgg
LSBvZmZzZXRJbmRleDsKIAotICAgICAgICAgICAgLy8gR2VuZXJhdGUgYSBzaW5nbGUgb3V0cHV0
IHNhbXBsZS4gCi0gICAgICAgICAgICBpbnQgbiA9IGtlcm5lbFNpemU7Ci0KLSNkZWZpbmUgQ09O
Vk9MVkVfT05FX1NBTVBMRSAgICAgIFwKLSAgICAgICAgICAgIGlucHV0ID0gKmlucHV0UCsrOyAg
IFwKLSAgICAgICAgICAgIHN1bTEgKz0gaW5wdXQgKiAqazE7IFwKLSAgICAgICAgICAgIHN1bTIg
Kz0gaW5wdXQgKiAqazI7IFwKLSAgICAgICAgICAgICsrazE7ICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgICAgICsrazI7Ci0KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmbG9hdCBp
bnB1dDsKLQotI2lmIENQVShYODZfU1NFMikKLSAgICAgICAgICAgICAgICAvLyBJZiB0aGUgc291
cmNlUCBhZGRyZXNzIGlzIG5vdCAxNi1ieXRlIGFsaWduZWQsIHRoZSBmaXJzdCBzZXZlcmFsIGZy
YW1lcyAoYXQgbW9zdCB0aHJlZSkgc2hvdWxkIGJlIHByb2Nlc3NlZCBzZXBlcmF0ZWx5LgotICAg
ICAgICAgICAgICAgIHdoaWxlICgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGlucHV0UCkg
JiAweDBGKSAmJiBuKSB7Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUK
LSAgICAgICAgICAgICAgICAgICAgbi0tOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgIC8vIE5vdyB0aGUgaW5wdXRQIGlzIGFsaWduZWQgYW5kIHN0YXJ0IHRvIGFwcGx5IFNT
RS4KLSAgICAgICAgICAgICAgICBmbG9hdCogZW5kUCA9IGlucHV0UCArIG4gLSBuICUgNDsKLSAg
ICAgICAgICAgICAgICBfX20xMjggbUlucHV0OwotICAgICAgICAgICAgICAgIF9fbTEyOCBtSzE7
Ci0gICAgICAgICAgICAgICAgX19tMTI4IG1LMjsKLSAgICAgICAgICAgICAgICBfX20xMjggbXVs
MTsKLSAgICAgICAgICAgICAgICBfX20xMjggbXVsMjsKLQotICAgICAgICAgICAgICAgIF9fbTEy
OCBzdW1zMSA9IF9tbV9zZXR6ZXJvX3BzKCk7Ci0gICAgICAgICAgICAgICAgX19tMTI4IHN1bXMy
ID0gX21tX3NldHplcm9fcHMoKTsKLSAgICAgICAgICAgICAgICBib29sIGsxQWxpZ25lZCA9ICEo
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGsxKSAmIDB4MEYpOwotICAgICAgICAgICAgICAg
IGJvb2wgazJBbGlnbmVkID0gIShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oazIpICYgMHgw
Rik7Ci0KLSNkZWZpbmUgTE9BRF9EQVRBKGwxLCBsMikgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgICAgICAgICAgICAgbUlucHV0ID0gX21tX2xvYWRfcHMoaW5wdXRQKTsgICAgXAotICAg
ICAgICAgICAgICAgIG1LMSA9IF9tbV8jI2wxIyNfcHMoazEpOyAgICAgICAgIFwKLSAgICAgICAg
ICAgICAgICBtSzIgPSBfbW1fIyNsMiMjX3BzKGsyKTsKLQotI2RlZmluZSBDT05WT0xWRV80X1NB
TVBMRVMgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBtdWwxID0gX21t
X211bF9wcyhtSW5wdXQsIG1LMSk7ICBcCi0gICAgICAgICAgICAgICAgbXVsMiA9IF9tbV9tdWxf
cHMobUlucHV0LCBtSzIpOyAgXAotICAgICAgICAgICAgICAgIHN1bXMxID0gX21tX2FkZF9wcyhz
dW1zMSwgbXVsMSk7IFwKLSAgICAgICAgICAgICAgICBzdW1zMiA9IF9tbV9hZGRfcHMoc3VtczIs
IG11bDIpOyBcCi0gICAgICAgICAgICAgICAgaW5wdXRQICs9IDQ7ICAgICAgICAgICAgICAgICAg
ICAgXAotICAgICAgICAgICAgICAgIGsxICs9IDQ7ICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICAgICAgICAgICAgICBrMiArPSA0OwotCi0gICAgICAgICAgICAgICAgaWYgKGsxQWxpZ25l
ZCAmJiBrMkFsaWduZWQpIHsgLy8gYm90aCBhbGlnbmVkCi0gICAgICAgICAgICAgICAgICAgIHdo
aWxlIChpbnB1dFAgPCBlbmRQKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBMT0FEX0RBVEEo
bG9hZCwgbG9hZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIENPTlZPTFZFXzRfU0FNUExFUwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghazFBbGln
bmVkICYmIGsyQWxpZ25lZCkgeyAvLyBvbmx5IGsyIGFsaWduZWQKLSAgICAgICAgICAgICAgICAg
ICAgd2hpbGUgKGlucHV0UCA8IGVuZFApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIExPQURf
REFUQShsb2FkdSwgbG9hZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIENPTlZPTFZFXzRfU0FN
UExFUwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChr
MUFsaWduZWQgJiYgIWsyQWxpZ25lZCkgeyAvLyBvbmx5IGsxIGFsaWduZWQKLSAgICAgICAgICAg
ICAgICAgICAgd2hpbGUgKGlucHV0UCA8IGVuZFApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IExPQURfREFUQShsb2FkLCBsb2FkdSkKLSAgICAgICAgICAgICAgICAgICAgICAgIENPTlZPTFZF
XzRfU0FNUExFUwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNl
IHsgLy8gYm90aCBub24tYWxpZ25lZAotICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaW5wdXRQ
IDwgZW5kUCkgewotICAgICAgICAgICAgICAgICAgICAgICAgTE9BRF9EQVRBKGxvYWR1LCBsb2Fk
dSkKLSAgICAgICAgICAgICAgICAgICAgICAgIENPTlZPTFZFXzRfU0FNUExFUwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gU3Vt
bWFyaXplIHRoZSBTU0UgcmVzdWx0cyB0byBzdW0xIGFuZCBzdW0yLgotICAgICAgICAgICAgICAg
IGZsb2F0KiBncm91cFN1bVAgPSByZWludGVycHJldF9jYXN0PGZsb2F0Kj4oJnN1bXMxKTsKLSAg
ICAgICAgICAgICAgICBzdW0xICs9IGdyb3VwU3VtUFswXSArIGdyb3VwU3VtUFsxXSArIGdyb3Vw
U3VtUFsyXSArIGdyb3VwU3VtUFszXTsKLSAgICAgICAgICAgICAgICBncm91cFN1bVAgPSByZWlu
dGVycHJldF9jYXN0PGZsb2F0Kj4oJnN1bXMyKTsKLSAgICAgICAgICAgICAgICBzdW0yICs9IGdy
b3VwU3VtUFswXSArIGdyb3VwU3VtUFsxXSArIGdyb3VwU3VtUFsyXSArIGdyb3VwU3VtUFszXTsK
LQotICAgICAgICAgICAgICAgIG4gJT0gNDsKLSAgICAgICAgICAgICAgICB3aGlsZSAobikgewot
ICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFCi0gICAgICAgICAgICAgICAg
ICAgIG4tLTsKLSAgICAgICAgICAgICAgICB9Ci0jZWxzZQotICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBhZGQgQVJNIE5FT04gb3B0aW1pemF0aW9ucyBmb3IgdGhlIGZvbGxvd2luZy4gVGhlIHNj
YWxhciBjb2RlLXBhdGggY2FuIHByb2JhYmx5IGFsc28gYmUgb3B0aW1pemVkIGJldHRlci4KLSAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvLyBPcHRpbWl6ZSBzaXplIDMyIGFuZCBz
aXplIDY0IGtlcm5lbHMgYnkgdW5yb2xsaW5nIHRoZSB3aGlsZSBsb29wLgotICAgICAgICAgICAg
ICAgIC8vIEEgMjAgLSAzMCUgc3BlZWQgaW1wcm92ZW1lbnQgd2FzIG1lYXN1cmVkIGluIHNvbWUg
Y2FzZXMgYnkgdXNpbmcgdGhpcyBhcHByb2FjaC4KLSAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICBpZiAobiA9PSAzMikgewotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVf
U0FNUExFIC8vIDEKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyAy
Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMwotICAgICAgICAg
ICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDQKLSAgICAgICAgICAgICAgICAgICAg
Q09OVk9MVkVfT05FX1NBTVBMRSAvLyA1Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09O
RV9TQU1QTEUgLy8gNgotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8v
IDcKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyA4Ci0gICAgICAg
ICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gOQotICAgICAgICAgICAgICAgICAg
ICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDEwCi0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZF
X09ORV9TQU1QTEUgLy8gMTEKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBM
RSAvLyAxMgotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDEzCi0g
ICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMTQKLSAgICAgICAgICAg
ICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyAxNQotICAgICAgICAgICAgICAgICAgICBD
T05WT0xWRV9PTkVfU0FNUExFIC8vIDE2Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09O
RV9TQU1QTEUgLy8gMTcKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAv
LyAxOAotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDE5Ci0gICAg
ICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMjAKLSAgICAgICAgICAgICAg
ICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyAyMQotICAgICAgICAgICAgICAgICAgICBDT05W
T0xWRV9PTkVfU0FNUExFIC8vIDIyCi0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9T
QU1QTEUgLy8gMjMKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyAy
NAotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDI1Ci0gICAgICAg
ICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMjYKLSAgICAgICAgICAgICAgICAg
ICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyAyNwotICAgICAgICAgICAgICAgICAgICBDT05WT0xW
RV9PTkVfU0FNUExFIC8vIDI4Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1Q
TEUgLy8gMjkKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyAzMAot
ICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDMxCi0gICAgICAgICAg
ICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMzIKLSAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKG4gPT0gNjQpIHsKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBM
RSAvLyAxCi0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMgotICAg
ICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDMKLSAgICAgICAgICAgICAg
ICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyA0Ci0gICAgICAgICAgICAgICAgICAgIENPTlZP
TFZFX09ORV9TQU1QTEUgLy8gNQotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FN
UExFIC8vIDYKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyA3Ci0g
ICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gOAotICAgICAgICAgICAg
ICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDkKLSAgICAgICAgICAgICAgICAgICAgQ09O
Vk9MVkVfT05FX1NBTVBMRSAvLyAxMAotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVf
U0FNUExFIC8vIDExCi0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8g
MTIKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyAxMwotICAgICAg
ICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDE0Ci0gICAgICAgICAgICAgICAg
ICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMTUKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9M
VkVfT05FX1NBTVBMRSAvLyAxNgotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FN
UExFIC8vIDE3Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMTgK
LSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyAxOQotICAgICAgICAg
ICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDIwCi0gICAgICAgICAgICAgICAgICAg
IENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMjEKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVf
T05FX1NBTVBMRSAvLyAyMgotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExF
IC8vIDIzCi0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMjQKLSAg
ICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyAyNQotICAgICAgICAgICAg
ICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDI2Ci0gICAgICAgICAgICAgICAgICAgIENP
TlZPTFZFX09ORV9TQU1QTEUgLy8gMjcKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05F
X1NBTVBMRSAvLyAyOAotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8v
IDI5Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMzAKLSAgICAg
ICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyAzMQotICAgICAgICAgICAgICAg
ICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDMyCi0gICAgICAgICAgICAgICAgICAgIENPTlZP
TFZFX09ORV9TQU1QTEUgLy8gMzMKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NB
TVBMRSAvLyAzNAotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDM1
Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gMzYKLSAgICAgICAg
ICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyAzNwotICAgICAgICAgICAgICAgICAg
ICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDM4Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZF
X09ORV9TQU1QTEUgLy8gMzkKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBM
RSAvLyA0MAotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDQxCi0g
ICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gNDIKLSAgICAgICAgICAg
ICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyA0MwotICAgICAgICAgICAgICAgICAgICBD
T05WT0xWRV9PTkVfU0FNUExFIC8vIDQ0Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09O
RV9TQU1QTEUgLy8gNDUKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAv
LyA0NgotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDQ3Ci0gICAg
ICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gNDgKLSAgICAgICAgICAgICAg
ICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyA0OQotICAgICAgICAgICAgICAgICAgICBDT05W
T0xWRV9PTkVfU0FNUExFIC8vIDUwCi0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9T
QU1QTEUgLy8gNTEKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyA1
MgotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDUzCi0gICAgICAg
ICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gNTQKLSAgICAgICAgICAgICAgICAg
ICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyA1NQotICAgICAgICAgICAgICAgICAgICBDT05WT0xW
RV9PTkVfU0FNUExFIC8vIDU2Ci0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1Q
TEUgLy8gNTcKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyA1OAot
ICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFIC8vIDU5Ci0gICAgICAgICAg
ICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUgLy8gNjAKLSAgICAgICAgICAgICAgICAgICAg
Q09OVk9MVkVfT05FX1NBTVBMRSAvLyA2MQotICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9P
TkVfU0FNUExFIC8vIDYyCi0gICAgICAgICAgICAgICAgICAgIENPTlZPTFZFX09ORV9TQU1QTEUg
Ly8gNjMKLSAgICAgICAgICAgICAgICAgICAgQ09OVk9MVkVfT05FX1NBTVBMRSAvLyA2NAotICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlIChuLS0pIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vbi1vcHRpbWl6ZWQgdXNpbmcgYWN0dWFsIHdo
aWxlIGxvb3AuCi0gICAgICAgICAgICAgICAgICAgICAgICBDT05WT0xWRV9PTkVfU0FNUExFCi0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgLy8gTGluZWFybHkgaW50ZXJwb2xhdGUgdGhlIHR3byAiY29u
dm9sdXRpb25zIi4KLSAgICAgICAgICAgIGRvdWJsZSByZXN1bHQgPSAoMS4wIC0ga2VybmVsSW50
ZXJwb2xhdGlvbkZhY3RvcikgKiBzdW0xICsga2VybmVsSW50ZXJwb2xhdGlvbkZhY3RvciAqIHN1
bTI7Ci0KLSAgICAgICAgICAgICpkZXN0aW5hdGlvbisrID0gcmVzdWx0OworICAgICAgICAgICAg
KmRlc3RpbmF0aW9uKysgPSBjb252b2x2ZShpbnB1dFAsIGsxLCBrMiwga2VybmVsSW50ZXJwb2xh
dGlvbkZhY3Rvcik7CiAKICAgICAgICAgICAgIC8vIEFkdmFuY2UgdGhlIHZpcnR1YWwgaW5kZXgu
CiAgICAgICAgICAgICBtX3ZpcnR1YWxTb3VyY2VJbmRleCArPSBtX3NjYWxlRmFjdG9yOwpAQCAt
NTMwLDYgKzMzOSw4NCBAQCB2b2lkIFNpbmNSZXNhbXBsZXI6OnByb2Nlc3MoZmxvYXQqIGRlc3Rp
bmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzLCBjb25zdCBGdQogICAgIH0KIH0KIAorZmxv
YXQgU2luY1Jlc2FtcGxlcjo6Y29udm9sdmUoY29uc3QgZmxvYXQqIGlucHV0UCwgY29uc3QgZmxv
YXQqIGsxLCBjb25zdCBmbG9hdCogazIsIGZsb2F0IGtlcm5lbEludGVycG9sYXRpb25GYWN0b3Ip
Cit7CisjaWYgVVNFKEFDQ0VMRVJBVEUpCisgICAgZmxvYXQgc3VtMTsKKyAgICBmbG9hdCBzdW0y
OworICAgIHZEU1BfZG90cHIoaW5wdXRQLCAxLCBrMSwgMSwgJnN1bTEsIGtlcm5lbFNpemUpOwor
ICAgIHZEU1BfZG90cHIoaW5wdXRQLCAxLCBrMiwgMSwgJnN1bTIsIGtlcm5lbFNpemUpOworCisg
ICAgLy8gTGluZWFybHkgaW50ZXJwb2xhdGUgdGhlIHR3byAiY29udm9sdXRpb25zIi4KKyAgICBy
ZXR1cm4gKDEuMGYgLSBrZXJuZWxJbnRlcnBvbGF0aW9uRmFjdG9yKSAqIHN1bTEgKyBrZXJuZWxJ
bnRlcnBvbGF0aW9uRmFjdG9yICogc3VtMjsKKyNlbGlmIENQVShYODZfU1NFMikKKyAgICBfX20x
MjggbV9pbnB1dDsKKyAgICBfX20xMjggbV9zdW1zMSA9IF9tbV9zZXR6ZXJvX3BzKCk7CisgICAg
X19tMTI4IG1fc3VtczIgPSBfbW1fc2V0emVyb19wcygpOworCisgICAgLy8gQmFzZWQgb24gfGlu
cHV0UHwgYWxpZ25tZW50LCB3ZSBuZWVkIHRvIHVzZSBsb2FkdSBvciBsb2FkLgorICAgIGlmIChy
ZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaW5wdXRQKSAmIDB4MEYpIHsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGtlcm5lbFNpemU7IGkgKz0gNCkgeworICAgICAgICAgICAg
bV9pbnB1dCA9IF9tbV9sb2FkdV9wcyhpbnB1dFAgKyBpKTsKKyAgICAgICAgICAgIG1fc3VtczEg
PSBfbW1fYWRkX3BzKG1fc3VtczEsIF9tbV9tdWxfcHMobV9pbnB1dCwgX21tX2xvYWRfcHMoazEg
KyBpKSkpOworICAgICAgICAgICAgbV9zdW1zMiA9IF9tbV9hZGRfcHMobV9zdW1zMiwgX21tX211
bF9wcyhtX2lucHV0LCBfbW1fbG9hZF9wcyhrMiArIGkpKSk7CisgICAgICAgIH0KKyAgICB9IGVs
c2UgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwga2VybmVsU2l6ZTsgaSArPSA0
KSB7CisgICAgICAgICAgICBtX2lucHV0ID0gX21tX2xvYWRfcHMoaW5wdXRQICsgaSk7CisgICAg
ICAgICAgICBtX3N1bXMxID0gX21tX2FkZF9wcyhtX3N1bXMxLCBfbW1fbXVsX3BzKG1faW5wdXQs
IF9tbV9sb2FkX3BzKGsxICsgaSkpKTsKKyAgICAgICAgICAgIG1fc3VtczIgPSBfbW1fYWRkX3Bz
KG1fc3VtczIsIF9tbV9tdWxfcHMobV9pbnB1dCwgX21tX2xvYWRfcHMoazIgKyBpKSkpOworICAg
ICAgICB9CisgICAgfQorCisgICAgLy8gTGluZWFybHkgaW50ZXJwb2xhdGUgdGhlIHR3byAiY29u
dm9sdXRpb25zIi4KKyAgICBtX3N1bXMxID0gX21tX211bF9wcyhtX3N1bXMxLCBfbW1fc2V0X3Bz
MSgxLjBmIC0ga2VybmVsSW50ZXJwb2xhdGlvbkZhY3RvcikpOworICAgIG1fc3VtczIgPSBfbW1f
bXVsX3BzKG1fc3VtczIsIF9tbV9zZXRfcHMxKGtlcm5lbEludGVycG9sYXRpb25GYWN0b3IpKTsK
KyAgICBtX3N1bXMxID0gX21tX2FkZF9wcyhtX3N1bXMxLCBtX3N1bXMyKTsKKworICAgIC8vIFN1
bSBjb21wb25lbnRzIHRvZ2V0aGVyLgorICAgIGZsb2F0IHJlc3VsdDsKKyAgICBtX3N1bXMyID0g
X21tX2FkZF9wcyhfbW1fbW92ZWhsX3BzKG1fc3VtczEsIG1fc3VtczEpLCBtX3N1bXMxKTsKKyAg
ICBfbW1fc3RvcmVfc3MoJnJlc3VsdCwgX21tX2FkZF9zcyhtX3N1bXMyLCBfbW1fc2h1ZmZsZV9w
cyhtX3N1bXMyLCBtX3N1bXMyLCAxKSkpOworCisgICAgcmV0dXJuIHJlc3VsdDsKKyNlbGlmIEhB
VkUoQVJNX05FT05fSU5UUklOU0lDUykKKyAgICBmbG9hdDMyeDRfdCBtX2lucHV0OworICAgIGZs
b2F0MzJ4NF90IG1fc3VtczEgPSB2bW92cV9uX2YzMigwKTsKKyAgICBmbG9hdDMyeDRfdCBtX3N1
bXMyID0gdm1vdnFfbl9mMzIoMCk7CisKKyAgICBjb25zdCBmbG9hdCogdXBwZXIgPSBpbnB1dFAg
KyBrS2VybmVsU2l6ZTsKKyAgICBmb3IgKDsgaW5wdXRQIDwgdXBwZXI7ICkgeworICAgICAgICBt
X2lucHV0ID0gdmxkMXFfZjMyKGlucHV0UCk7CisgICAgICAgIGlucHV0UCArPSA0OworICAgICAg
ICBtX3N1bXMxID0gdm1sYXFfZjMyKG1fc3VtczEsIG1faW5wdXQsIHZsZDFxX2YzMihrMSkpOwor
ICAgICAgICBrMSArPSA0OworICAgICAgICBtX3N1bXMyID0gdm1sYXFfZjMyKG1fc3VtczIsIG1f
aW5wdXQsIHZsZDFxX2YzMihrMikpOworICAgICAgICBrMiArPSA0OworICAgIH0KKworICAgIC8v
IExpbmVhcmx5IGludGVycG9sYXRlIHRoZSB0d28gImNvbnZvbHV0aW9ucyIuCisgICAgbV9zdW1z
MSA9IHZtbGFxX2YzMih2bXVscV9mMzIobV9zdW1zMSwgdm1vdnFfbl9mMzIoMS4wIC0ga2VybmVs
SW50ZXJwb2xhdGlvbkZhY3RvcikpLCBtX3N1bXMyLCB2bW92cV9uX2YzMihrZXJuZWxJbnRlcnBv
bGF0aW9uRmFjdG9yKSk7CisKKyAgICAvLyBTdW0gY29tcG9uZW50cyB0b2dldGhlci4KKyAgICBm
bG9hdDMyeDJfdCBtX2hhbGYgPSB2YWRkX2YzMih2Z2V0X2hpZ2hfZjMyKG1fc3VtczEpLCB2Z2V0
X2xvd19mMzIobV9zdW1zMSkpOworICAgIHJldHVybiB2Z2V0X2xhbmVfZjMyKHZwYWRkX2YzMiht
X2hhbGYsIG1faGFsZiksIDApOworI2Vsc2UKKyAgICBmbG9hdCBzdW0xID0gMDsKKyAgICBmbG9h
dCBzdW0yID0gMDsKKworICAgIC8vIEdlbmVyYXRlIGEgc2luZ2xlIG91dHB1dCBzYW1wbGUuCisg
ICAgaW50IG4gPSBrZXJuZWxTaXplOworICAgIHdoaWxlIChuLS0pIHsKKyAgICAgICAgc3VtMSAr
PSAqaW5wdXRQICogKmsxKys7CisgICAgICAgIHN1bTIgKz0gKmlucHV0UCsrICogKmsyKys7Cisg
ICAgfQorCisgICAgLy8gTGluZWFybHkgaW50ZXJwb2xhdGUgdGhlIHR3byAiY29udm9sdXRpb25z
Ii4KKyAgICByZXR1cm4gKDEuMGYgLSBrZXJuZWxJbnRlcnBvbGF0aW9uRmFjdG9yKSAqIHN1bTEg
KyBrZXJuZWxJbnRlcnBvbGF0aW9uRmFjdG9yICogc3VtMjsKKyNlbmRpZgorfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oCmluZGV4IGQwYTQyODMyZGY4
OGZmMzMyYjRhYjNjNGExMGUzMWZlMmMzZjIyYzkuLmIxZjY3NzMyNjI3NmU5OWRmNmUzN2Y0NmQy
NTYzMzUyN2VkNzg1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1NpbmNSZXNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5j
UmVzYW1wbGVyLmgKQEAgLTU5LDYgKzU5LDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgaW5pdGlh
bGl6ZUtlcm5lbCgpOwogICAgIHZvaWQgY29uc3VtZVNvdXJjZShmbG9hdCogYnVmZmVyLCB1bnNp
Z25lZCBudW1iZXJPZlNvdXJjZUZyYW1lcywgY29uc3QgRnVuY3Rpb248dm9pZChBdWRpb0J1cyog
YnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKT4mIHByb3ZpZGVJbnB1dCk7CiAgICAgdm9pZCB1
cGRhdGVSZWdpb25zKGJvb2wgaXNTZWNvbmRMb2FkKTsKKworICAgIGZsb2F0IGNvbnZvbHZlKGNv
bnN0IGZsb2F0KiBpbnB1dFAsIGNvbnN0IGZsb2F0KiBrMSwgY29uc3QgZmxvYXQqIGsyLCBmbG9h
dCBrZXJuZWxJbnRlcnBvbGF0aW9uRmFjdG9yKTsKICAgICAKICAgICBkb3VibGUgbV9zY2FsZUZh
Y3RvcjsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>