<?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>159775</bug_id>
          
          <creation_ts>2016-07-14 11:47:09 -0700</creation_ts>
          <short_desc>WebAssembly: support the newer spec</short_desc>
          <delta_ts>2020-11-16 18:35:16 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=170683</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>161709</dependson>
    
    <dependson>162976</dependson>
    
    <dependson>165231</dependson>
    
    <dependson>165856</dependson>
    
    <dependson>165862</dependson>
    
    <dependson>166349</dependson>
    
    <dependson>166442</dependson>
    
    <dependson>169566</dependson>
    
    <dependson>170343</dependson>
    
    <dependson>170360</dependson>
    
    <dependson>170557</dependson>
    
    <dependson>170748</dependson>
    
    <dependson>170773</dependson>
    
    <dependson>170788</dependson>
    
    <dependson>170826</dependson>
    
    <dependson>170970</dependson>
    
    <dependson>170998</dependson>
    
    <dependson>171936</dependson>
    
    <dependson>160603</dependson>
    
    <dependson>160681</dependson>
    
    <dependson>160914</dependson>
    
    <dependson>160928</dependson>
    
    <dependson>161707</dependson>
    
    <dependson>161710</dependson>
    
    <dependson>161727</dependson>
    
    <dependson>161728</dependson>
    
    <dependson>161778</dependson>
    
    <dependson>162693</dependson>
    
    <dependson>163807</dependson>
    
    <dependson>163919</dependson>
    
    <dependson>163959</dependson>
    
    <dependson>164444</dependson>
    
    <dependson>164459</dependson>
    
    <dependson>164724</dependson>
    
    <dependson>165345</dependson>
    
    <dependson>165471</dependson>
    
    <dependson>165805</dependson>
    
    <dependson>165833</dependson>
    
    <dependson>166199</dependson>
    
    <dependson>166295</dependson>
    
    <dependson>168672</dependson>
    
    <dependson>168673</dependson>
    
    <dependson>168694</dependson>
    
    <dependson>168784</dependson>
    
    <dependson>168788</dependson>
    
    <dependson>168822</dependson>
    
    <dependson>168836</dependson>
    
    <dependson>168857</dependson>
    
    <dependson>168861</dependson>
    
    <dependson>169187</dependson>
    
    <dependson>169792</dependson>
    
    <dependson>169794</dependson>
    
    <dependson>169815</dependson>
    
    <dependson>169882</dependson>
    
    <dependson>169890</dependson>
    
    <dependson>169892</dependson>
    
    <dependson>169976</dependson>
    
    <dependson>170137</dependson>
    
    <dependson>170215</dependson>
    
    <dependson>170218</dependson>
    
    <dependson>170219</dependson>
    
    <dependson>170227</dependson>
    
    <dependson>170380</dependson>
    
    <dependson>170628</dependson>
    
    <dependson>170690</dependson>
    
    <dependson>170740</dependson>
    
    <dependson>170774</dependson>
    
    <dependson>170782</dependson>
    
    <dependson>170825</dependson>
    
    <dependson>170909</dependson>
    
    <dependson>171263</dependson>
    
    <dependson>171454</dependson>
    
    <dependson>171537</dependson>
    
    <dependson>171799</dependson>
    
    <dependson>172008</dependson>
          <blocked>146064</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>chi187</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>luke</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mike</cc>
    
    <cc>msaboff</cc>
    
    <cc>ossy</cc>
    
    <cc>saam</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1211069</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-07-14 11:47:09 -0700</bug_when>
    <thetext>We should totes do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242567</commentid>
    <comment_count>1</comment_count>
      <attachid>292244</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-20 13:39:04 -0700</bug_when>
    <thetext>Created attachment 292244
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242571</commentid>
    <comment_count>2</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-20 13:42:07 -0700</bug_when>
    <thetext>Crap, I uploaded this to the wrong bug...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242579</commentid>
    <comment_count>3</comment_count>
      <attachid>292244</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-10-20 13:54:56 -0700</bug_when>
    <thetext>Comment on attachment 292244
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:12
&gt; +        address we need to call to.  For each callsite in the compiling function WASM remembers what

remembers what =&gt; remembers

&gt; Source/JavaScriptCore/ChangeLog:14
&gt; +        each functions callsites are linked to the appropriate entrypoint.

each callsite is linked to the appropriate entrypoint

&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:220
&gt; +    Vector&lt;UnlinkedLocationInfo&gt;&amp; m_unlinkedCalls;

UnlinkedLocationInfo holds a single CodeLocationCall. What&apos;s the &quot;list of of callsites&quot;?

&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:588
&gt; +                    *callSiteLinkLocation = { linkBuffer.locationOf(call), functionIndex };

If m_unlinkedCalls grows enough before this patchpoint generator runs, callSiteLinkLocation becomes a stale pointer. I think you want an index instead of a pointer.

&gt; Source/JavaScriptCore/wasm/WASMFormat.h:131
&gt; +struct UnlinkedLocationInfo {

Can we call this UnlinkedCall or UnlinkedWASMCall or UnlinkedCallInfo? &apos;Location&apos; is pretty vague.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263686</commentid>
    <comment_count>4</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-01-03 20:39:10 -0800</bug_when>
    <thetext>*** Bug 161728 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292244</attachid>
            <date>2016-10-20 13:39:04 -0700</date>
            <delta_ts>2016-10-20 13:42:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159775-20161020133526.patch</filename>
            <type>text/plain</type>
            <size>32671</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MDUyNDQ2MWY2YzQ5MzI5ZWE1MGQ3Y2FlNjc3ZTVjZGI5MjFjZWE1Li41YTE1YjViY2Q5Y2YyZGFm
ODE3ZDk2N2ZjYzQ0ZDUyOTQxMDViNjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxNi0xMC0yMCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBXZSBzaG91bGQgc3VwcG9ydCB0aGUgbmV3ZXIgV2ViQXNzZW1ibHkg
c3BlYy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
OTc3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBXQVNNIGNhbGxzLiBTaW5jZSBtb3N0IG9mIHRoZSB3b3JrIGZvciB0aGlz
IHdhcyBhbHJlYWR5IGRvbmUgd2hlbiB3ZSBhZGRlZAorICAgICAgICBXQVNNIE1lbW9yeSwgdGhp
cyBpcyBtb3N0bHkganVzdCBjbGVhbnVwIHdvcmsuICBUaGUgbWFpbiBpbnRlcmVzdGluZyBwYXJ0
IG9mIHRoaXMgcGF0Y2ggaXMKKyAgICAgICAgaG93IHdlIGxpbmsgY2FsbHMgdG8gb3RoZXIgV0FT
TSBmdW5jdGlvbnMgaW4gdGhlIHNhbWUgbW9kdWxlLiBTaW5jZSBhIFdBU00gY2FsbGVlIG1heSBu
b3QKKyAgICAgICAgaGF2ZSBiZWVuIGNvbXBpbGVkIGJ5IHRoZSB0aW1lIGN1cnJlbnQgZnVuY3Rp
b24gaGFzIHN0YXJ0ZWQgY29tcGlsYXRpb24gd2UgZG9uJ3Qga25vdyB3aGF0CisgICAgICAgIGFk
ZHJlc3Mgd2UgbmVlZCB0byBjYWxsIHRvLiAgRm9yIGVhY2ggY2FsbHNpdGUgaW4gdGhlIGNvbXBp
bGluZyBmdW5jdGlvbiBXQVNNIHJlbWVtYmVycyB3aGF0CisgICAgICAgIHRoZSBDb2RlTG9jYXRp
b25DYWxsIGFuZCB0aGUgdGFyZ2V0IGZ1bmN0aW9uIGluZGV4LiBPbmNlIGFsbCBXQVNNIGZ1bmN0
aW9ucyBhcmUgY29tcGlsZWQsCisgICAgICAgIGVhY2ggZnVuY3Rpb25zIGNhbGxzaXRlcyBhcmUg
bGlua2VkIHRvIHRoZSBhcHByb3ByaWF0ZSBlbnRyeXBvaW50LgorCisgICAgICAgICogdGVzdFdB
U00uY3BwOgorICAgICAgICAocnVuV0FTTVRlc3RzKToKKyAgICAgICAgKiB3YXNtL1dBU01CM0lS
R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V0FTTTo6Y3JlYXRlSlNXcmFwcGVyKToKKyAg
ICAgICAgKEpTQzo6V0FTTTo6cGFyc2VBbmRDb21waWxlKToKKyAgICAgICAgKiB3YXNtL1dBU01C
M0lSR2VuZXJhdG9yLmg6CisgICAgICAgICogd2FzbS9XQVNNQ2FsbGluZ0NvbnZlbnRpb24uaDoK
KyAgICAgICAgKEpTQzo6V0FTTTo6Q2FsbGluZ0NvbnZlbnRpb246OmxvYWRBcmd1bWVudHMpOgor
ICAgICAgICAoSlNDOjpXQVNNOjpDYWxsaW5nQ29udmVudGlvbjo6c2V0dXBDYWxsKToKKyAgICAg
ICAgKEpTQzo6V0FTTTo6Q2FsbGluZ0NvbnZlbnRpb246Oml0ZXJhdGUpOiBEZWxldGVkLgorICAg
ICAgICAqIHdhc20vV0FTTUZvcm1hdC5oOgorICAgICAgICAqIHdhc20vV0FTTUZ1bmN0aW9uUGFy
c2VyLmg6CisgICAgICAgIChKU0M6OldBU006OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpGdW5j
dGlvblBhcnNlcik6CisgICAgICAgIChKU0M6OldBU006OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+
OjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6V0FTTTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4
dD46OnBhcnNlRXhwcmVzc2lvbik6CisgICAgICAgICogd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6V0FTTTo6TW9kdWxlUGFyc2VyOjpwYXJzZSk6CisgICAgICAgICog
d2FzbS9XQVNNT3BzLmg6CisgICAgICAgICogd2FzbS9XQVNNUGFyc2VyLmg6CisgICAgICAgIChK
U0M6OldBU006OlBhcnNlcjo6cGFyc2VWYXJVSW50MzIpOgorICAgICAgICAoSlNDOjpXQVNNOjpQ
YXJzZXI6OnBhcnNlVmFyVUludDY0KToKKyAgICAgICAgKiB3YXNtL1dBU01QbGFuLmNwcDoKKyAg
ICAgICAgKEpTQzo6V0FTTTo6UGxhbjo6UGxhbik6CisKIDIwMTYtMTAtMTggIFl1c3VrZSBTdXp1
a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0RPTUpJVF0gTm90IGVtaXQg
ZXhjZXB0aW9uIGNhc2UgaWYgaXQgaXMgbm90IG5lY2Vzc2FyeQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA2YzE3Y2M2NDZiMzli
ZjZjYjBhODg1NWU0NzIyNjNhOGNiNjJiNmM5Li4yMWYzOTczMDBmNjEyZDdlOWRhOTBkN2Y4YzVh
MzU3MmZmY2RlNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE2LTEwLTIwICBLZWl0aCBNaWxs
ZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIFdlIHNob3VsZCBzdXBwb3J0
IHRoZSBuZXdlciBXZWJBc3NlbWJseSBzcGVjLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5Nzc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSBuZXcgZGVjb2RlVUludDY0LiBBbHNvLCBhZGRl
ZCBXVEY6OkxFQkRlY29kZXIgbmFtZXNwYWNlLgorCisgICAgICAgICogd3RmL0xFQkRlY29kZXIu
aDoKKyAgICAgICAgKFdURjo6TEVCRGVjb2Rlcjo6ZGVjb2RlVUludCk6CisgICAgICAgIChXVEY6
OkxFQkRlY29kZXI6OmRlY29kZVVJbnQzMik6CisgICAgICAgIChXVEY6OkxFQkRlY29kZXI6OmRl
Y29kZVVJbnQ2NCk6CisgICAgICAgIChXVEY6OkxFQkRlY29kZXI6OmRlY29kZUludDMyKToKKyAg
ICAgICAgKGRlY29kZVVJbnQzMik6IERlbGV0ZWQuCisgICAgICAgIChkZWNvZGVJbnQzMik6IERl
bGV0ZWQuCisKIDIwMTYtMTAtMTcgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CiAKICAgICAgICAgSW1wbGVtZW50IERPTVJlY3QvRE9NUmVjdFJlYWRPbmx5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFdBU00uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RXQVNNLmNwcAppbmRleCAyYzNjOWZhYjZiMzBiZGZmOWQ5MzFkNGEyYTdhYzQ4
NjkwOWFlYWY1Li5kZmNlNzMzZmJiZWQ5YzBiMjgyZGJmNjhjN2UyM2RlMTNlYzg5YzJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFdBU00uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0V0FTTS5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBTdGF0aWNMb2Nr
IGNyYXNoTG9jazsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvciA9IFZlY3Rvcjx1aW50
OF90PiBpbml0OyBcCiAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdGFydE9mZnNldDsgXAogICAg
ICAgICB1aW50MzJfdCByZXN1bHQ7IFwKLSAgICAgICAgYm9vbCBzdGF0dXMgPSBkZWNvZGVVSW50
MzIodmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSwgb2Zmc2V0LCByZXN1bHQpOyBcCisgICAg
ICAgIGJvb2wgc3RhdHVzID0gV1RGOjpMRUJEZWNvZGVyOjpkZWNvZGVVSW50MzIodmVjdG9yLmRh
dGEoKSwgdmVjdG9yLnNpemUoKSwgb2Zmc2V0LCByZXN1bHQpOyBcCiAgICAgICAgIENIRUNLX0VR
KHN0YXR1cywgZXhwZWN0ZWRTdGF0dXMpOyBcCiAgICAgICAgIGlmIChleHBlY3RlZFN0YXR1cykg
eyBcCiAgICAgICAgICAgICBDSEVDS19FUShyZXN1bHQsIGV4cGVjdGVkUmVzdWx0KTsgXApAQCAt
MTgzLDcgKzE4Myw3IEBAIFN0YXRpY0xvY2sgY3Jhc2hMb2NrOwogICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gdmVjdG9yID0gVmVjdG9yPHVpbnQ4X3Q+IGluaXQ7IFwKICAgICAgICAgc2l6ZV90IG9m
ZnNldCA9IHN0YXJ0T2Zmc2V0OyBcCiAgICAgICAgIGludDMyX3QgcmVzdWx0OyBcCi0gICAgICAg
IGJvb2wgc3RhdHVzID0gZGVjb2RlSW50MzIodmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSwg
b2Zmc2V0LCByZXN1bHQpOyBcCisgICAgICAgIGJvb2wgc3RhdHVzID0gV1RGOjpMRUJEZWNvZGVy
OjpkZWNvZGVJbnQzMih2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpLCBvZmZzZXQsIHJlc3Vs
dCk7IFwKICAgICAgICAgQ0hFQ0tfRVEoc3RhdHVzLCBleHBlY3RlZFN0YXR1cyk7IFwKICAgICAg
ICAgaWYgKGV4cGVjdGVkU3RhdHVzKSB7IFwKICAgICAgICAgICAgIGludDMyX3QgZXhwZWN0ZWQg
PSBleHBlY3RlZFJlc3VsdDsgXApAQCAtMjQ0LDYgKzI0NCwxMDEgQEAgc3RhdGljIHZvaWQgcnVu
V0FTTVRlc3RzKCkKIHsKICAgICB7CiAgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgorICAgICAg
ICAvLyAgICAobW9kdWxlCisgICAgICAgIC8vICAgICAobWVtb3J5IDEpCisgICAgICAgIC8vICAg
ICAoZnVuYyAkZmFjIChleHBvcnQgImZhYyIpIChwYXJhbSBpNjQpIChyZXN1bHQgaTY0KQorICAg
ICAgICAvLyAgICAgIChpZiAoaTY0LmVxeiAoZ2V0X2xvY2FsIDApKQorICAgICAgICAvLyAgICAg
ICAocmV0dXJuIChpNjQuY29uc3QgMSkpCisgICAgICAgIC8vICAgICAgICkKKyAgICAgICAgLy8g
ICAgICAocmV0dXJuIChpNjQubXVsIChnZXRfbG9jYWwgMCkgKGNhbGwgJGZhYyAoaTY0LnN1YiAo
Z2V0X2xvY2FsIDApIChpNjQuY29uc3QgMSkpKSkpCisgICAgICAgIC8vICAgICAgKQorICAgICAg
ICAvLyAgICAgKQorICAgICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAg
ICAgMHgwMCwgMHg2MSwgMHg3MywgMHg2ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwg
MHg4NiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4
MDEsIDB4MDIsIDB4MDEsIDB4MDIsIDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAs
IDB4MDEsIDB4MDAsIDB4MDUsIDB4ODMsIDB4ODAsIDB4ODAsCisgICAgICAgICAgICAweDgwLCAw
eDAwLCAweDAxLCAweDAwLCAweDAxLCAweDA3LCAweDg3LCAweDgwLCAweDgwLCAweDgwLCAweDAw
LCAweDAxLCAweDAzLCAweDY2LCAweDYxLCAweDYzLAorICAgICAgICAgICAgMHgwMCwgMHgwMCwg
MHgwYSwgMHg5ZSwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHg5OCwgMHg4MCwgMHg4
MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgxNCwKKyAgICAgICAgICAgIDB4MDAsIDB4MTEsIDB4MDAs
IDB4NjgsIDB4MDMsIDB4MDAsIDB4MTEsIDB4MDEsIDB4MDksIDB4MGYsIDB4MTQsIDB4MDAsIDB4
MTQsIDB4MDAsIDB4MTEsIDB4MDEsCisgICAgICAgICAgICAweDVjLCAweDE2LCAweDAwLCAweDVk
LCAweDA5LCAweDBmCisgICAgICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9y
KTsKKyAgICAgICAgaWYgKHBsYW4ucmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFsw
XSkgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29y
cmVjdGx5LiIpOworICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICBDSEVDS19FUShpbnZva2U8aW50Pigq
cGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMCkgfSksIDEpOworICAgICAgICBD
SEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3go
MSkgfSksIDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0t
PmpzRW50cnlQb2ludCwgeyBib3goMikgfSksIDIpOworICAgICAgICBDSEVDS19FUShpbnZva2U8
aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goNCkgfSksIDI0KTsKKyAg
ICB9CisKKyAgICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgorICAgICAgICAvLyAgICAo
bW9kdWxlCisgICAgICAgIC8vICAgICAobWVtb3J5IDEpCisgICAgICAgIC8vICAgICAoZnVuYyAo
ZXhwb3J0ICJkb3VibGUiKSAocGFyYW0gaTY0KSAocmVzdWx0IGk2NCkgKHJldHVybiAoY2FsbCAx
IChnZXRfbG9jYWwgMCkgKGdldF9sb2NhbCAwKSkpKQorICAgICAgICAvLyAgICAgKGZ1bmMgJHN1
bSAocGFyYW0gaTY0KSAocGFyYW0gaTY0KSAocmVzdWx0IGk2NCkgKHJldHVybiAoaTY0LmFkZCAo
Z2V0X2xvY2FsIDApIChnZXRfbG9jYWwgMSkpKSkKKyAgICAgICAgLy8gICAgICkKKyAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IHZlY3RvciA9IHsKKyAgICAgICAgICAgIDB4MDAsIDB4NjEsIDB4NzMs
IDB4NmQsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4OGMsIDB4ODAsIDB4ODAsIDB4
ODAsIDB4MDAsIDB4MDIsIDB4NDAsCisgICAgICAgICAgICAweDAxLCAweDAyLCAweDAxLCAweDAy
LCAweDQwLCAweDAyLCAweDAyLCAweDAyLCAweDAxLCAweDAyLCAweDAzLCAweDgzLCAweDgwLCAw
eDgwLCAweDgwLCAweDAwLAorICAgICAgICAgICAgMHgwMiwgMHgwMCwgMHgwMSwgMHgwNSwgMHg4
MywgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMSwgMHgwNywgMHg4YSwg
MHg4MCwgMHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDYsIDB4NjQsIDB4
NmYsIDB4NzUsIDB4NjIsIDB4NmMsIDB4NjUsIDB4MDAsIDB4MDAsIDB4MGEsIDB4OWMsIDB4ODAs
IDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDAwLCAweDAyLCAweDg5LCAweDgwLCAweDgwLCAw
eDgwLCAweDAwLCAweDAwLCAweDE0LCAweDAwLCAweDE0LCAweDAwLCAweDE2LCAweDAxLCAweDA5
LAorICAgICAgICAgICAgMHgwZiwgMHg4OCwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwg
MHgxNCwgMHgwMCwgMHgxNCwgMHgwMSwgMHg1YiwgMHgwOSwgMHgwZgorICAgICAgICB9OworCisg
ICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJlc3VsdC5z
aXplKCkgIT0gMiB8fCAhcGxhbi5yZXN1bHRbMF0gfHwgIXBsYW4ucmVzdWx0WzFdKSB7CisgICAg
ICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7
CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGVzdCB0aGlz
IGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3Vs
dFsxXS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSwgYm94KDApIH0pLCAwKTsKKyAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzFdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEw
MCksIGJveCgwKSB9KSwgMTAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4u
cmVzdWx0WzFdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpLCBib3goMTUpIH0pLCAxNik7CisgICAg
ICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7
IGJveCgwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3Vs
dFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApIH0pLCAyMDApOworICAgICAgICBDSEVDS19F
UShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSkgfSks
IDIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2VuZXJhdGVkIGZyb206CisgICAgICAg
IC8vICAgIChtb2R1bGUKKyAgICAgICAgLy8gICAgIChtZW1vcnkgMSkKKyAgICAgICAgLy8gICAg
IChmdW5jICRpZCAocGFyYW0gJHZhbHVlIGkzMikgKHJlc3VsdCBpMzIpIChyZXR1cm4gKGdldF9s
b2NhbCAkdmFsdWUpKSkKKyAgICAgICAgLy8gICAgIChmdW5jIChleHBvcnQgImlkLWNhbGwiKSAo
cGFyYW0gJHZhbHVlIGkzMikgKHJlc3VsdCBpMzIpIChyZXR1cm4gKGNhbGwgJGlkIChnZXRfbG9j
YWwgJHZhbHVlKSkpKQorICAgICAgICAvLyAgICAgKQorICAgICAgICBWZWN0b3I8dWludDhfdD4g
dmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3MywgMHg2ZCwgMHgwYywgMHgw
MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwg
MHg0MCwKKyAgICAgICAgICAgIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDMsIDB4ODMsIDB4
ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDUsIDB4ODMsIDB4ODAs
CisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDA3LCAw
eDhiLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDA3LCAweDY5LCAweDY0LAorICAg
ICAgICAgICAgMHgyZCwgMHg2MywgMHg2MSwgMHg2YywgMHg2YywgMHgwMCwgMHgwMSwgMHgwYSwg
MHg5NywgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMiwgMHg4NSwgMHg4MCwKKyAgICAgICAg
ICAgIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDAsIDB4MDksIDB4MGYsIDB4ODcs
IDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDAsCisgICAgICAgICAgICAw
eDE2LCAweDAwLCAweDA5LCAweDBmCisgICAgICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2
bSwgdmVjdG9yKTsKKyAgICAgICAgaWYgKHBsYW4ucmVzdWx0LnNpemUoKSAhPSAyIHx8ICFwbGFu
LnJlc3VsdFswXSB8fCAhcGxhbi5yZXN1bHRbMV0pIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigi
TW9kdWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgIENSQVNI
KCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KKyAg
ICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzFdLT5qc0VudHJ5UG9pbnQs
IHsgYm94KDApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVz
dWx0WzFdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCkgfSksIDEwMCk7CisgICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFsxXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSB9
KSwgMSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNF
bnRyeVBvaW50LCB7IGJveCgwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+
KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApIH0pLCAxMDApOworICAg
ICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwg
eyBib3goMSkgfSksIDEpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2VuZXJhdGVkIGZy
b206CiAgICAgICAgIC8vIChtb2R1bGUKICAgICAgICAgLy8gIChtZW1vcnkgMSkKICAgICAgICAg
Ly8gIChmdW5jIChleHBvcnQgImkzMl9sb2FkOF9zIikgKHBhcmFtICRpIGkzMikgKHBhcmFtICRw
dHIgaTMyKSAocmVzdWx0IGkzMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dBU01CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dB
U01CM0lSR2VuZXJhdG9yLmNwcAppbmRleCA2ODY1NTFjYTRmZTIyOWI2ZjIyYTE4NmY2OWU0N2M2
NWE4OWE2MjcyLi5hZmE1MWFmZDIyYTM2YmM5ZWE0ZDFiODNjNjRjMWM0NzhiYTk2NDg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQjNJUkdlbmVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0b3IuY3BwCkBA
IC0xNzAsNyArMTcwLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgVmVjdG9yPFZhcmlhYmxlKiwg
MT4gUmVzdWx0TGlzdDsKICAgICBzdGF0aWMgY29uc3RleHByIEV4cHJlc3Npb25UeXBlIGVtcHR5
RXhwcmVzc2lvbiA9IG51bGxwdHI7CiAKLSAgICBCM0lSR2VuZXJhdG9yKE1lbW9yeSosIFByb2Nl
ZHVyZSYpOworICAgIEIzSVJHZW5lcmF0b3IoTWVtb3J5KiwgUHJvY2VkdXJlJiwgVmVjdG9yPFVu
bGlua2VkTG9jYXRpb25JbmZvPiYgdW5saW5rZWRDYWxscyk7CiAKICAgICB2b2lkIGFkZEFyZ3Vt
ZW50cyhjb25zdCBWZWN0b3I8VHlwZT4mKTsKICAgICB2b2lkIGFkZExvY2FsKFR5cGUsIHVpbnQz
Ml90KTsKQEAgLTE5OCw2ICsxOTgsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9S
RVRVUk4gYWRkQnJhbmNoKENvbnRyb2xEYXRhJiwgRXhwcmVzc2lvblR5cGUgY29uZGl0aW9uLCBj
b25zdCBFeHByZXNzaW9uTGlzdCYgcmV0dXJuVmFsdWVzKTsKICAgICBib29sIFdBUk5fVU5VU0VE
X1JFVFVSTiBlbmRCbG9jayhDb250cm9sRGF0YSYsIEV4cHJlc3Npb25MaXN0JiBleHByZXNzaW9u
U3RhY2spOwogCisgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbCh1bnNpZ25lZCBj
YWxsZWVJbmRleCwgY29uc3QgRnVuY3Rpb25JbmZvcm1hdGlvbiYsIFZlY3RvcjxFeHByZXNzaW9u
VHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOworCiAgICAgYm9vbCBpc0NvbnRp
bnVhdGlvblJlYWNoYWJsZShDb250cm9sRGF0YSYpOwogCiAgICAgdm9pZCBkdW1wKGNvbnN0IFZl
Y3RvcjxDb250cm9sVHlwZT4mIGNvbnRyb2xTdGFjaywgY29uc3QgRXhwcmVzc2lvbkxpc3QmIGV4
cHJlc3Npb25TdGFjayk7CkBAIC0yMTQsMTMgKzIxNiwxNiBAQCBwcml2YXRlOgogICAgIFByb2Nl
ZHVyZSYgbV9wcm9jOwogICAgIEJhc2ljQmxvY2sqIG1fY3VycmVudEJsb2NrOwogICAgIFZlY3Rv
cjxWYXJpYWJsZSo+IG1fbG9jYWxzOworICAgIC8vIG1fdW5saW5rZWRDYWxscyBpcyBhIG1hcHBp
bmcgZnJvbSBhIGZ1bmN0aW9uJ3MgaW5kZXggdG8gYSBsaXN0IG9mIGNhbGxzaXRlcyB0aGF0IG5l
ZWQgdG8gYmUgbGlua2VkLgorICAgIFZlY3RvcjxVbmxpbmtlZExvY2F0aW9uSW5mbz4mIG1fdW5s
aW5rZWRDYWxsczsKICAgICBHUFJSZWcgbV9tZW1vcnlCYXNlR1BSOwogICAgIEdQUlJlZyBtX21l
bW9yeVNpemVHUFI7CiB9OwogCi1CM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKE1lbW9yeSog
bWVtb3J5LCBQcm9jZWR1cmUmIHByb2NlZHVyZSkKK0IzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0
b3IoTWVtb3J5KiBtZW1vcnksIFByb2NlZHVyZSYgcHJvY2VkdXJlLCBWZWN0b3I8VW5saW5rZWRM
b2NhdGlvbkluZm8+JiB1bmxpbmtlZENhbGxzKQogICAgIDogbV9tZW1vcnkobWVtb3J5KQogICAg
ICwgbV9wcm9jKHByb2NlZHVyZSkKKyAgICAsIG1fdW5saW5rZWRDYWxscyh1bmxpbmtlZENhbGxz
KQogewogICAgIG1fY3VycmVudEJsb2NrID0gbV9wcm9jLmFkZEJsb2NrKCk7CiAKQEAgLTIzMSwx
MyArMjM2LDEzIEBAIEIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IoTWVtb3J5KiBtZW1vcnks
IFByb2NlZHVyZSYgcHJvY2VkdXJlKQogICAgICAgICBtX21lbW9yeVNpemVHUFIgPSBtX21lbW9y
eS0+cGlubmVkUmVnaXN0ZXJzKCkuc2l6ZVJlZ2lzdGVyc1swXS5zaXplUmVnaXN0ZXI7CiAgICAg
ICAgIGZvciAoY29uc3QgUGlubmVkU2l6ZVJlZ2lzdGVySW5mbyYgaW5mbyA6IG1fbWVtb3J5LT5w
aW5uZWRSZWdpc3RlcnMoKS5zaXplUmVnaXN0ZXJzKQogICAgICAgICAgICAgbV9wcm9jLnBpblJl
Z2lzdGVyKGluZm8uc2l6ZVJlZ2lzdGVyKTsKLSAgICB9CiAKLSAgICBtX3Byb2Muc2V0V2FzbUJv
dW5kc0NoZWNrR2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBwaW5uZWRH
UFIsIHVuc2lnbmVkKSB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQocGlubmVkR1BSLCBtX21lbW9y
eVNpemVHUFIgPT0gcGlubmVkR1BSKTsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHVu
d2luZCB0aGUgc3RhY2sgYW5kIHRocm93IGEgSlMgZXhjZXB0aW9uLiBTZWU6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMzNTEKLSAgICAgICAgaml0LmJyZWFrcG9p
bnQoKTsKLSAgICB9KTsKKyAgICAgICAgbV9wcm9jLnNldFdhc21Cb3VuZHNDaGVja0dlbmVyYXRv
cihbPV0gKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgcGlubmVkR1BSLCB1bnNpZ25lZCkgewor
ICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChwaW5uZWRHUFIsIG1fbWVtb3J5U2l6ZUdQUiA9PSBw
aW5uZWRHUFIpOworICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHVud2luZCB0aGUg
c3RhY2sgYW5kIHRocm93IGEgSlMgZXhjZXB0aW9uLiBTZWU6IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMzNTEKKyAgICAgICAgICAgIGppdC5icmVha3BvaW50KCk7
CisgICAgICAgIH0pOworICAgIH0KIH0KIAogdm9pZCBCM0lSR2VuZXJhdG9yOjphZGRMb2NhbChU
eXBlIHR5cGUsIHVpbnQzMl90IGNvdW50KQpAQCAtMjUxLDcgKzI1Niw3IEBAIHZvaWQgQjNJUkdl
bmVyYXRvcjo6YWRkQXJndW1lbnRzKGNvbnN0IFZlY3RvcjxUeXBlPiYgdHlwZXMpCiB7CiAgICAg
QVNTRVJUKCFtX2xvY2Fscy5zaXplKCkpOwogICAgIG1fbG9jYWxzLmdyb3codHlwZXMuc2l6ZSgp
KTsKLSAgICBqc2NDYWxsaW5nQ29udmVudGlvbigpLml0ZXJhdGUodHlwZXMsIG1fcHJvYywgbV9j
dXJyZW50QmxvY2ssIE9yaWdpbigpLAorICAgIGpzY0NhbGxpbmdDb252ZW50aW9uKCkubG9hZEFy
Z3VtZW50cyh0eXBlcywgbV9wcm9jLCBtX2N1cnJlbnRCbG9jaywgT3JpZ2luKCksCiAgICAgICAg
IFsmXSAoRXhwcmVzc2lvblR5cGUgYXJndW1lbnQsIHVuc2lnbmVkIGkpIHsKICAgICAgICAgICAg
IFZhcmlhYmxlKiBhcmd1bWVudFZhcmlhYmxlID0gbV9wcm9jLmFkZFZhcmlhYmxlKGFyZ3VtZW50
LT50eXBlKCkpOwogICAgICAgICAgICAgbV9sb2NhbHNbaV0gPSBhcmd1bWVudFZhcmlhYmxlOwpA
QCAtNTYxLDYgKzU2NiwzMiBAQCBib29sIEIzSVJHZW5lcmF0b3I6OmVuZEJsb2NrKENvbnRyb2xE
YXRhJiBkYXRhLCBFeHByZXNzaW9uTGlzdCYgZXhwcmVzc2lvblN0YWNrKQogICAgIHJldHVybiB0
cnVlOwogfQogCitib29sIEIzSVJHZW5lcmF0b3I6OmFkZENhbGwodW5zaWduZWQgZnVuY3Rpb25J
bmRleCwgY29uc3QgRnVuY3Rpb25JbmZvcm1hdGlvbiYgaW5mbywgVmVjdG9yPEV4cHJlc3Npb25U
eXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKK3sKKyAgICBBU1NFUlQoaW5mby5z
aWduYXR1cmUtPmFyZ3VtZW50cy5zaXplKCkgPT0gYXJncy5zaXplKCkpOworCisgICAgVHlwZSBy
ZXR1cm5UeXBlID0gaW5mby5zaWduYXR1cmUtPnJldHVyblR5cGU7CisKKyAgICBtX3VubGlua2Vk
Q2FsbHMuZ3JvdyhtX3VubGlua2VkQ2FsbHMuc2l6ZSgpICsgMSk7CisgICAgVW5saW5rZWRMb2Nh
dGlvbkluZm8qIGNhbGxTaXRlTGlua0xvY2F0aW9uID0gJm1fdW5saW5rZWRDYWxscy5sYXN0KCk7
CisgICAgcmVzdWx0ID0ganNjQ2FsbGluZ0NvbnZlbnRpb24oKS5zZXR1cENhbGwobV9wcm9jLCBt
X2N1cnJlbnRCbG9jaywgT3JpZ2luKCksIGFyZ3MsIHRvQjNUeXBlKHJldHVyblR5cGUpLAorICAg
ICAgICBbJl0gKFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCkgeworICAgICAgICAgICAgcGF0
Y2hwb2ludC0+ZWZmZWN0cy53cml0ZXNQaW5uZWQgPSB0cnVlOworICAgICAgICAgICAgcGF0Y2hw
b2ludC0+ZWZmZWN0cy5yZWFkc1Bpbm5lZCA9IHRydWU7CisKKyAgICAgICAgICAgIHBhdGNocG9p
bnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNo
UmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKworICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Q2FsbCBjYWxsID0gaml0LmNhbGwoKTsKKworICAgICAgICAgICAgICAgIGppdC5h
ZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgKmNhbGxTaXRlTGlua0xvY2F0aW9uID0geyBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoY2Fs
bCksIGZ1bmN0aW9uSW5kZXggfTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBCM0lSR2VuZXJhdG9y
Ojppc0NvbnRpbnVhdGlvblJlYWNoYWJsZShDb250cm9sRGF0YSYgZGF0YSkKIHsKICAgICAvLyBJ
ZiBub3RoaW5nIHRhcmdldHMgdGhlIGNvbnRpbnVhdGlvbiBvZiB0aGUgY3VycmVudCBibG9jayB0
aGVuIHdlIGRvbid0IHdhbnQgdG8gY3JlYXRlCkBAIC02NDIsMTggKzY3MywyNyBAQCBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPENvbXBpbGF0aW9uPiBjcmVhdGVKU1dyYXBwZXIoVk0mIHZtLCBjb25z
dCBTaWduYXR1cmUqIHNpZwogCiAgICAgLy8gR2V0IG91ciBhcmd1bWVudHMuCiAgICAgVmVjdG9y
PFZhbHVlKj4gYXJndW1lbnRzOwotICAgIGpzY0NhbGxpbmdDb252ZW50aW9uKCkuaXRlcmF0ZShz
aWduYXR1cmUtPmFyZ3VtZW50cywgcHJvYywgYmxvY2ssIE9yaWdpbigpLCBbJl0gKFZhbHVlKiBh
cmd1bWVudCwgdW5zaWduZWQpIHsKKyAgICBqc2NDYWxsaW5nQ29udmVudGlvbigpLmxvYWRBcmd1
bWVudHMoc2lnbmF0dXJlLT5hcmd1bWVudHMsIHByb2MsIGJsb2NrLCBPcmlnaW4oKSwgWyZdIChW
YWx1ZSogYXJndW1lbnQsIHVuc2lnbmVkKSB7CiAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoYXJn
dW1lbnQpOwogICAgIH0pOwogCiAgICAgLy8gTW92ZSB0aGUgYXJndW1lbnRzIGludG8gcGxhY2Uu
Ci0gICAgVmFsdWUqIHJlc3VsdCA9IGpzY0NhbGxpbmdDb252ZW50aW9uKCkuc2V0dXBDYWxsKHBy
b2MsIGJsb2NrLCBPcmlnaW4oKSwgbWFpbkZ1bmN0aW9uLCBhcmd1bWVudHMsIHRvQjNUeXBlKHNp
Z25hdHVyZS0+cmV0dXJuVHlwZSksIFsmXSAoUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50KSB7
CisgICAgVmFsdWUqIHJlc3VsdCA9IGpzY0NhbGxpbmdDb252ZW50aW9uKCkuc2V0dXBDYWxsKHBy
b2MsIGJsb2NrLCBPcmlnaW4oKSwgYXJndW1lbnRzLCB0b0IzVHlwZShzaWduYXR1cmUtPnJldHVy
blR5cGUpLCBbJl0gKFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCkgewogICAgICAgICBpZiAo
bWVtb3J5KSB7CiAgICAgICAgICAgICBBU1NFUlQoc2l6ZXMuc2l6ZSgpID09IG1lbW9yeS0+cGlu
bmVkUmVnaXN0ZXJzKCkuc2l6ZVJlZ2lzdGVycy5zaXplKCkpOwogICAgICAgICAgICAgcGF0Y2hw
b2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYmFzZU1lbW9yeSwgVmFsdWVSZXA6OnJlZyht
ZW1vcnktPnBpbm5lZFJlZ2lzdGVycygpLmJhc2VNZW1vcnlQb2ludGVyKSkpOwogICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemVzLnNpemUoKTsgKytpKQogICAgICAgICAg
ICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKHNpemVzW2ldLCBWYWx1
ZVJlcDo6cmVnKG1lbW9yeS0+cGlubmVkUmVnaXN0ZXJzKCkuc2l6ZVJlZ2lzdGVyc1tpXS5zaXpl
UmVnaXN0ZXIpKSk7CiAgICAgICAgIH0KKworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0
b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxv
d1NjcmF0Y2goaml0KTsKKworICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGwgPSBq
aXQuY2FsbCgpOworICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYg
bGlua0J1ZmZlcikgeworICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhjYWxsLCBGdW5j
dGlvblB0cihtYWluRnVuY3Rpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSkpOworICAgICAgICAgICAg
fSk7CisgICAgICAgIH0pOwogICAgIH0pOwogCiAgICAgLy8gUmV0dXJuIHRoZSByZXN1bHQsIGlm
IG5lZWRlZC4KQEAgLTY2NSwxMSArNzA1LDEzIEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q29t
cGlsYXRpb24+IGNyZWF0ZUpTV3JhcHBlcihWTSYgdm0sIGNvbnN0IFNpZ25hdHVyZSogc2lnCiAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29tcGlsYXRpb24+KHZtLCBwcm9jKTsKIH0KIAot
c3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uQ29tcGlsYXRpb24+IHBhcnNlQW5kQ29tcGlsZShWTSYg
dm0sIFZlY3Rvcjx1aW50OF90PiYgc291cmNlLCBNZW1vcnkqIG1lbW9yeSwgRnVuY3Rpb25JbmZv
cm1hdGlvbiBpbmZvLCB1bnNpZ25lZCBvcHRMZXZlbCkKK3N0ZDo6dW5pcXVlX3B0cjxGdW5jdGlv
bkNvbXBpbGF0aW9uPiBwYXJzZUFuZENvbXBpbGUoVk0mIHZtLCBWZWN0b3I8dWludDhfdD4mIHNv
dXJjZSwgTWVtb3J5KiBtZW1vcnksIEZ1bmN0aW9uSW5mb3JtYXRpb24gaW5mbywgY29uc3QgVmVj
dG9yPEZ1bmN0aW9uSW5mb3JtYXRpb24+JiBmdW5jdGlvbnMsIHVuc2lnbmVkIG9wdExldmVsKQog
eworICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbkNvbXBpbGF0aW9u
PigpOworCiAgICAgUHJvY2VkdXJlIHByb2NlZHVyZTsKLSAgICBCM0lSR2VuZXJhdG9yIGNvbnRl
eHQobWVtb3J5LCBwcm9jZWR1cmUpOwotICAgIEZ1bmN0aW9uUGFyc2VyPEIzSVJHZW5lcmF0b3I+
IHBhcnNlcihjb250ZXh0LCBzb3VyY2UsIGluZm8pOworICAgIEIzSVJHZW5lcmF0b3IgY29udGV4
dChtZW1vcnksIHByb2NlZHVyZSwgcmVzdWx0LT51bmxpbmtlZENhbGxzKTsKKyAgICBGdW5jdGlv
blBhcnNlcjxCM0lSR2VuZXJhdG9yPiBwYXJzZXIoY29udGV4dCwgc291cmNlLCBpbmZvLCBmdW5j
dGlvbnMpOwogICAgIGlmICghcGFyc2VyLnBhcnNlKCkpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAKQEAgLTY3OSw3ICs3MjEsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8RnVu
Y3Rpb25Db21waWxhdGlvbj4gcGFyc2VBbmRDb21waWxlKFZNJiB2bSwgVmVjdG9yPHVpbnQ4X3Q+
JiBzbwogICAgIGZpeFNTQShwcm9jZWR1cmUpOwogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBk
YXRhTG9nKCJQb3N0IFNTQTogIiwgcHJvY2VkdXJlKTsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6
bWFrZV91bmlxdWU8RnVuY3Rpb25Db21waWxhdGlvbj4oKTsKIAogICAgIHJlc3VsdC0+Y29kZSA9
IHN0ZDo6bWFrZV91bmlxdWU8Q29tcGlsYXRpb24+KHZtLCBwcm9jZWR1cmUsIG9wdExldmVsKTsK
ICAgICByZXN1bHQtPmpzRW50cnlQb2ludCA9IGNyZWF0ZUpTV3JhcHBlcih2bSwgaW5mby5zaWdu
YXR1cmUsIHJlc3VsdC0+Y29kZS0+Y29kZSgpLCBtZW1vcnkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dBU01CM0lSR2VuZXJhdG9yLmgKaW5kZXggZjgyODJkMGM5NTVjMjZmN2U3
YzAxMjQ1Nzk3Yjk5MTZkNGRiOTA0OC4uZGZiYzgzZjIxMjZmOTJjN2JiNjk5MjNhOWU3NDc3NDEz
Y2Y1ZTk3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJH
ZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQjNJUkdlbmVy
YXRvci5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV0FTTSB7
CiAKIGNsYXNzIE1lbW9yeTsKIAotc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uQ29tcGlsYXRpb24+
IHBhcnNlQW5kQ29tcGlsZShWTSYsIFZlY3Rvcjx1aW50OF90PiYsIE1lbW9yeSosIEZ1bmN0aW9u
SW5mb3JtYXRpb24sIHVuc2lnbmVkIG9wdExldmVsID0gMSk7CitzdGQ6OnVuaXF1ZV9wdHI8RnVu
Y3Rpb25Db21waWxhdGlvbj4gcGFyc2VBbmRDb21waWxlKFZNJiwgVmVjdG9yPHVpbnQ4X3Q+Jiwg
TWVtb3J5KiwgRnVuY3Rpb25JbmZvcm1hdGlvbiwgY29uc3QgVmVjdG9yPEZ1bmN0aW9uSW5mb3Jt
YXRpb24+JiwgdW5zaWduZWQgb3B0TGV2ZWwgPSAxKTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OldBU00KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUNhbGxp
bmdDb252ZW50aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQ2FsbGluZ0Nv
bnZlbnRpb24uaAppbmRleCA2MTM1ZjczNzA1YWU5YjZiYTAwMDQ5ZjRjMjA2NGVkOWVhN2U1MGIx
Li4yZGJmNDBmOWJlZTExNzhkY2RiN2Y1ZGNlNjg2MTI3YzNmNDhhODVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQ2FsbGluZ0NvbnZlbnRpb24uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQ2FsbGluZ0NvbnZlbnRpb24uaApAQCAtNTUs
NyArNTUsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rv
cj4KLSAgICB2b2lkIGl0ZXJhdGUoY29uc3QgVmVjdG9yPFR5cGU+JiBhcmd1bWVudFR5cGVzLCBC
Mzo6UHJvY2VkdXJlJiBwcm9jLCBCMzo6QmFzaWNCbG9jayogYmxvY2ssIEIzOjpPcmlnaW4gb3Jp
Z2luLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKSBjb25zdAorICAgIHZvaWQgbG9hZEFyZ3VtZW50
cyhjb25zdCBWZWN0b3I8VHlwZT4mIGFyZ3VtZW50VHlwZXMsIEIzOjpQcm9jZWR1cmUmIHByb2Ms
IEIzOjpCYXNpY0Jsb2NrKiBibG9jaywgQjM6Ok9yaWdpbiBvcmlnaW4sIGNvbnN0IEZ1bmN0b3Im
IGZ1bmN0b3IpIGNvbnN0CiAgICAgewogICAgICAgICB1bnNpZ25lZCBjdXJyZW50T2Zmc2V0ID0g
aGVhZGVyU2l6ZTsKICAgICAgICAgQjM6OlZhbHVlKiBmcmFtZVBvaW50ZXIgPSBibG9jay0+YXBw
ZW5kTmV3PEIzOjpWYWx1ZT4ocHJvYywgQjM6OkZyYW1lUG9pbnRlciwgb3JpZ2luKTsKQEAgLTc0
LDggKzc0LDkgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAgLy8gSXQncyBleHBl
Y3RlZCB0aGF0IHRoZSBwYWNocG9pbnRGdW5jdG9yIHNldHMgdGhlIGdlbmVyYXRvciBmb3IgdGhl
IGNhbGwgb3BlcmF0aW9uLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgQjM6
OlZhbHVlKiBzZXR1cENhbGwoQjM6OlByb2NlZHVyZSYgcHJvYywgQjM6OkJhc2ljQmxvY2sqIGJs
b2NrLCBCMzo6T3JpZ2luIG9yaWdpbiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHRhcmdldCwgY29u
c3QgVmVjdG9yPEIzOjpWYWx1ZSo+JiBhcmd1bWVudHMsIEIzOjpUeXBlIHJldHVyblR5cGUsIGNv
bnN0IEZ1bmN0b3ImIHBhdGNocG9pbnRGdW5jdG9yKSBjb25zdAorICAgIEIzOjpWYWx1ZSogc2V0
dXBDYWxsKEIzOjpQcm9jZWR1cmUmIHByb2MsIEIzOjpCYXNpY0Jsb2NrKiBibG9jaywgQjM6Ok9y
aWdpbiBvcmlnaW4sIGNvbnN0IFZlY3RvcjxCMzo6VmFsdWUqPiYgYXJndW1lbnRzLCBCMzo6VHlw
ZSByZXR1cm5UeXBlLCBjb25zdCBGdW5jdG9yJiBwYXRjaHBvaW50RnVuY3RvcikgY29uc3QKICAg
ICB7CiAgICAgICAgIHNpemVfdCBzdGFja0FyZ3VtZW50Q291bnQgPSBhcmd1bWVudHMuc2l6ZSgp
IDwgbV9yZWdpc3RlckFyZ3VtZW50cy5zaXplKCkgPyAwIDogYXJndW1lbnRzLnNpemUoKSAtIG1f
cmVnaXN0ZXJBcmd1bWVudHMuc2l6ZSgpOwogICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSBoZWFk
ZXJTaXplIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpOwpAQCAtOTMsMTYgKzk0LDEwIEBAIHB1
YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9p
bnQgPSBibG9jay0+YXBwZW5kTmV3PEIzOjpQYXRjaHBvaW50VmFsdWU+KHByb2MsIHJldHVyblR5
cGUsIG9yaWdpbik7CisgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXJFYXJseShSZWdpc3RlclNl
dDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVy
TGF0ZShSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKSk7CiAgICAgICAg
IHBhdGNocG9pbnQtPmFwcGVuZFZlY3Rvcihjb25zdHJhaW5lZEFyZ3VtZW50cyk7CiAgICAgICAg
IHBhdGNocG9pbnRGdW5jdG9yKHBhdGNocG9pbnQpOwotICAgICAgICBwYXRjaHBvaW50LT5zZXRH
ZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYpIHsKLSAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2Fn
ZSBhbGxvd1NjcmF0Y2goaml0KTsKLQotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNh
bGwgPSBqaXQuY2FsbCgpOwotICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1
ZmZlciYgbGlua0J1ZmZlcikgewotICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhjYWxs
LCBGdW5jdGlvblB0cih0YXJnZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwotICAgICAgICAgICAg
fSk7Ci0gICAgICAgIH0pOwogCiAgICAgICAgIGlmIChyZXR1cm5UeXBlID09IEIzOjpWb2lkKQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XQVNNRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNN
Rm9ybWF0LmgKaW5kZXggMWUxMDgxMGQzZmY2ZWUwYTg3NjRiMzJiMzZlODA1NmRkMzQ1YTZjMy4u
MGMwNmMwYjg4YTgwY2E2YjRhNDdmMjgwNzFlN2ViNzFlYmZjYTQ5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dBU01Gb3JtYXQuaApAQCAtNDYsNiArNDYsNyBAQAogCiAjaW5jbHVkZSAi
QjNDb21waWxhdGlvbi5oIgogI2luY2x1ZGUgIkIzVHlwZS5oIgorI2luY2x1ZGUgIkNvZGVMb2Nh
dGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIApAQCAtMTI3LDcgKzEyOCwxMyBAQCBzdHJ1Y3QgRnVuY3Rpb25JbmZvcm1hdGlv
biB7CiAgICAgc2l6ZV90IGVuZDsKIH07CiAKK3N0cnVjdCBVbmxpbmtlZExvY2F0aW9uSW5mbyB7
CisgICAgQ29kZUxvY2F0aW9uQ2FsbCBjYWxsTG9jYXRpb247CisgICAgc2l6ZV90IGZ1bmN0aW9u
SW5kZXg7Cit9OworCiBzdHJ1Y3QgRnVuY3Rpb25Db21waWxhdGlvbiB7CisgICAgVmVjdG9yPFVu
bGlua2VkTG9jYXRpb25JbmZvPiB1bmxpbmtlZENhbGxzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxC
Mzo6Q29tcGlsYXRpb24+IGNvZGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEIzOjpDb21waWxhdGlv
bj4ganNFbnRyeVBvaW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dBU01GdW5jdGlvblBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FT
TUZ1bmN0aW9uUGFyc2VyLmgKaW5kZXggNDQ3MWEyY2Y1NzE3ODE4MjU5NTI0MmQwMzk0ZjQ3Njll
NzllM2JjNy4uNDUyZTI4YjU2OTkyYjVkYWJjNzcwOTYzZDVhZDg0NzQwMDZjNmI3NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTQ0
LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ29udGV4dDo6RXhwcmVz
c2lvblR5cGUgRXhwcmVzc2lvblR5cGU7CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDb250ZXh0OjpD
b250cm9sVHlwZSBDb250cm9sVHlwZTsKIAotICAgIEZ1bmN0aW9uUGFyc2VyKENvbnRleHQmLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIHNvdXJjZUJ1ZmZlciwgY29uc3QgRnVuY3Rpb25JbmZvcm1h
dGlvbiYpOworICAgIEZ1bmN0aW9uUGFyc2VyKENvbnRleHQmLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIHNvdXJjZUJ1ZmZlciwgY29uc3QgRnVuY3Rpb25JbmZvcm1hdGlvbiYsIGNvbnN0IFZlY3Rv
cjxGdW5jdGlvbkluZm9ybWF0aW9uPiYgZnVuY3Rpb25zKTsKIAogICAgIGJvb2wgV0FSTl9VTlVT
RURfUkVUVVJOIHBhcnNlKCk7CiAKQEAgLTYwLDE0ICs2MCwxNiBAQCBwcml2YXRlOgogICAgIFZl
Y3RvcjxFeHByZXNzaW9uVHlwZSwgMT4gbV9leHByZXNzaW9uU3RhY2s7CiAgICAgVmVjdG9yPENv
bnRyb2xUeXBlPiBtX2NvbnRyb2xTdGFjazsKICAgICBjb25zdCBTaWduYXR1cmUmIG1fc2lnbmF0
dXJlOworICAgIGNvbnN0IFZlY3RvcjxGdW5jdGlvbkluZm9ybWF0aW9uPiYgbV9mdW5jdGlvbnM7
CiAgICAgdW5zaWduZWQgbV91bnJlYWNoYWJsZUJsb2NrcyB7IDAgfTsKIH07CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIENvbnRleHQ+Ci1GdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6RnVuY3Rpb25QYXJz
ZXIoQ29udGV4dCYgY29udGV4dCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzb3VyY2VCdWZmZXIs
IGNvbnN0IEZ1bmN0aW9uSW5mb3JtYXRpb24mIGluZm8pCitGdW5jdGlvblBhcnNlcjxDb250ZXh0
Pjo6RnVuY3Rpb25QYXJzZXIoQ29udGV4dCYgY29udGV4dCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBzb3VyY2VCdWZmZXIsIGNvbnN0IEZ1bmN0aW9uSW5mb3JtYXRpb24mIGluZm8sIGNvbnN0IFZl
Y3RvcjxGdW5jdGlvbkluZm9ybWF0aW9uPiYgZnVuY3Rpb25zKQogICAgIDogUGFyc2VyKHNvdXJj
ZUJ1ZmZlciwgaW5mby5zdGFydCwgaW5mby5lbmQpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkK
ICAgICAsIG1fc2lnbmF0dXJlKCppbmZvLnNpZ25hdHVyZSkKKyAgICAsIG1fZnVuY3Rpb25zKGZ1
bmN0aW9ucykKIHsKICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0YUxvZ0xuKCJQYXJzaW5n
IGZ1bmN0aW9uIHN0YXJ0aW5nIGF0OiAiLCBpbmZvLnN0YXJ0LCAiIGVuZGluZyBhdDogIiwgaW5m
by5lbmQpOwpAQCAtMTAxLDggKzEwMywxMSBAQCBib29sIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+
OjpwYXJzZUJsb2NrKCkKIHsKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICB1aW50OF90IG9w
OwotICAgICAgICBpZiAoIXBhcnNlVUludDcob3ApIHx8ICFpc1ZhbGlkT3BUeXBlKG9wKSkKKyAg
ICAgICAgaWYgKCFwYXJzZVVJbnQ3KG9wKSB8fCAhaXNWYWxpZE9wVHlwZShvcCkpIHsKKyAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIFdURjo6ZGF0YUxvZ0xuKCJhdHRl
bXB0ZWQgdG8gZGVjb2RlIGludmFsaWQgb3A6ICIsIFJhd1BvaW50ZXIocmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4ob3ApKSwgIiBhdCBvZmZzZXQ6ICIsIFJhd1BvaW50ZXIocmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4obV9vZmZzZXQpKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KIAogICAgICAgICBpZiAodmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZ0xuKCJwcm9j
ZXNzaW5nIG9wICgiLCBtX3VucmVhY2hhYmxlQmxvY2tzLCAiKTogIiwgIFJhd1BvaW50ZXIocmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4ob3ApKSwgIiBhdCBvZmZzZXQ6ICIsIFJhd1BvaW50ZXIocmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4obV9vZmZzZXQpKSk7CkBAIC0xOTMsNiArMTk4LDE0IEBAIGJv
b2wgRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbihPcFR5cGUgb3ApCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIGNhc2UgT3BUeXBlOjpJNjRDb25zdDog
eworICAgICAgICB1aW50NjRfdCBjb25zdGFudDsKKyAgICAgICAgaWYgKCFwYXJzZVZhclVJbnQ2
NChjb25zdGFudCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIG1fZXhwcmVz
c2lvblN0YWNrLmFwcGVuZChtX2NvbnRleHQuYWRkQ29uc3RhbnQoSTY0LCBjb25zdGFudCkpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBjYXNlIE9wVHlwZTo6R2V0TG9jYWw6
IHsKICAgICAgICAgdWludDMyX3QgaW5kZXg7CiAgICAgICAgIGlmICghcGFyc2VWYXJVSW50MzIo
aW5kZXgpKQpAQCAtMjEzLDYgKzIyNiwzMCBAQCBib29sIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+
OjpwYXJzZUV4cHJlc3Npb24oT3BUeXBlIG9wKQogICAgICAgICByZXR1cm4gbV9jb250ZXh0LnNl
dExvY2FsKGluZGV4LCB2YWx1ZSk7CiAgICAgfQogCisgICAgY2FzZSBPcFR5cGU6OkNhbGw6IHsK
KyAgICAgICAgdWludDMyX3QgZnVuY3Rpb25JbmRleDsKKyAgICAgICAgaWYgKCFwYXJzZVZhclVJ
bnQzMihmdW5jdGlvbkluZGV4KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAg
ICBpZiAoZnVuY3Rpb25JbmRleCA+PSBtX2Z1bmN0aW9ucy5zaXplKCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgY29uc3QgRnVuY3Rpb25JbmZvcm1hdGlvbiYgaW5mbyA9
IG1fZnVuY3Rpb25zW2Z1bmN0aW9uSW5kZXhdOworCisgICAgICAgIFZlY3RvcjxFeHByZXNzaW9u
VHlwZT4gYXJnczsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGluZm8uc2lnbmF0
dXJlLT5hcmd1bWVudHMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBhcmdzLmFwcGVuZChtX2V4
cHJlc3Npb25TdGFjay50YWtlTGFzdCgpKTsKKworICAgICAgICBFeHByZXNzaW9uVHlwZSByZXN1
bHQgPSBDb250ZXh0OjplbXB0eUV4cHJlc3Npb247CisgICAgICAgIGlmICghbV9jb250ZXh0LmFk
ZENhbGwoZnVuY3Rpb25JbmRleCwgaW5mbywgYXJncywgcmVzdWx0KSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICBpZiAocmVzdWx0ICE9IENvbnRleHQ6OmVtcHR5RXhwcmVz
c2lvbikKKyAgICAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmFwcGVuZChyZXN1bHQpOworCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIGNhc2UgT3BUeXBlOjpCbG9jazogewog
ICAgICAgICBUeXBlIGlubGluZVNpZ25hdHVyZTsKICAgICAgICAgaWYgKCFwYXJzZVZhbHVlVHlw
ZShpbmxpbmVTaWduYXR1cmUpKQpAQCAtMjgxLDEyICszMTgsMTIgQEAgYm9vbCBGdW5jdGlvblBh
cnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKE9wVHlwZSBvcCkKICAgICBjYXNlIE9wVHlw
ZTo6QnJUYWJsZToKICAgICBjYXNlIE9wVHlwZTo6Tm9wOgogICAgIGNhc2UgT3BUeXBlOjpEcm9w
OgotICAgIGNhc2UgT3BUeXBlOjpJNjRDb25zdDoKICAgICBjYXNlIE9wVHlwZTo6RjMyQ29uc3Q6
CiAgICAgY2FzZSBPcFR5cGU6OkY2NENvbnN0OgogICAgIGNhc2UgT3BUeXBlOjpUZWVMb2NhbDoK
ICAgICBjYXNlIE9wVHlwZTo6R2V0R2xvYmFsOgogICAgIGNhc2UgT3BUeXBlOjpTZXRHbG9iYWw6
CisgICAgY2FzZSBPcFR5cGU6OkNhbGxJbmRpcmVjdDoKICAgICAgICAgLy8gRklYTUU6IE5vdCB5
ZXQgaW1wbGVtZW50ZWQuCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuY3BwCmluZGV4IGRjZGU3NGNj
MWE1MTRiMzMwYzhmZjFkNzZkZTczZWIxMWNmMTQzMmYuLjBlNzk2YmY4MzlhZWFjNjFiNjViNzZh
YTI2MjJlM2QyZTExMTM0MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dBU01Nb2R1bGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dB
U01Nb2R1bGVQYXJzZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBAIGJvb2wgTW9kdWxlUGFyc2VyOjpw
YXJzZSgpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICAvLyBN
YWtlIHN1cmUgd2UgY2FuIHJlYWQgdXAgdG8gdGhlIHNlY3Rpb24ncyBzaXplLgotICAgICAgICAg
ICAgaWYgKG1fb2Zmc2V0ICsgc2VjdGlvbk5hbWVMZW5ndGggKyBtYXhMRUJCeXRlTGVuZ3RoID49
IG1fc291cmNlTGVuZ3RoKQorICAgICAgICAgICAgaWYgKG1fb2Zmc2V0ICsgc2VjdGlvbk5hbWVM
ZW5ndGggKyBXVEY6OkxFQkRlY29kZXI6Om1heDMyQml0TEVCQnl0ZUxlbmd0aCA+PSBtX3NvdXJj
ZUxlbmd0aCkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgICAgIC8v
IFdlIGRvbid0IHN1cHBvcnQgYW55IGN1c3RvbSBzZWN0aW9ucyB5ZXQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNT3BzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XQVNNT3BzLmgKaW5kZXggNmQzNDg4Y2Y0OTgwNDMzZTkwNGJhZTAwNTQ0NDgzN2Nh
ZDAwMmU0YS4uNjZmNzI4OTRiNWY4YmJiMjBmOGI4ZTAxNzdkMTI4ZGM3NzFhYmM2NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU9wcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dBU01PcHMuaApAQCAtNDIsNyArNDIsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIFdBU00gewogICAgIG1hY3JvKFNldExvY2FsLCAweDE1LCBPb3BzKSBc
CiAgICAgbWFjcm8oVGVlTG9jYWwsIDB4MTksIE9vcHMpIFwKICAgICBtYWNybyhHZXRHbG9iYWws
IDB4YmIsIE9vcHMpIFwKLSAgICBtYWNybyhTZXRHbG9iYWwsIDB4YmMsIE9vcHMpCisgICAgbWFj
cm8oU2V0R2xvYmFsLCAweGJjLCBPb3BzKSBcCisgICAgbWFjcm8oQ2FsbCwgMHgxNiwgT29wcykg
XAorICAgIG1hY3JvKENhbGxJbmRpcmVjdCwgMHgxNywgT29wcykKIAogI2RlZmluZSBGT1JfRUFD
SF9XQVNNX0NPTlRST0xfRkxPV19PUChtYWNybykgXAogICAgIG1hY3JvKFVucmVhY2hhYmxlLCAw
eDAsIE9vcHMpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Q
YXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01QYXJzZXIuaAppbmRleCA1
MzY5YjZmOGRhYjViYzA2NjUxMTliY2M1MDUwZjVjNzUzYzM0MWIzLi4xYjc5MTg2ZjVlZDdhNTlh
OTZkNjAyM2U1NWFjMDRjMGY1ZmVjMjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XQVNNUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FT
TVBhcnNlci5oCkBAIC00Niw3ICs0Niw4IEBAIHByb3RlY3RlZDoKICAgICBib29sIFdBUk5fVU5V
U0VEX1JFVFVSTiBwYXJzZVZhclVJbnQxKHVpbnQ4X3QmIHJlc3VsdCk7CiAgICAgYm9vbCBXQVJO
X1VOVVNFRF9SRVRVUk4gcGFyc2VVSW50Nyh1aW50OF90JiByZXN1bHQpOwogICAgIGJvb2wgV0FS
Tl9VTlVTRURfUkVUVVJOIHBhcnNlVUludDMyKHVpbnQzMl90JiByZXN1bHQpOwotICAgIGJvb2wg
V0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlVmFyVUludDMyKHVpbnQzMl90JiByZXN1bHQpIHsgcmV0
dXJuIGRlY29kZVVJbnQzMihtX3NvdXJjZS5kYXRhKCksIG1fc291cmNlTGVuZ3RoLCBtX29mZnNl
dCwgcmVzdWx0KTsgfQorICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlVmFyVUludDMy
KHVpbnQzMl90JiByZXN1bHQpIHsgcmV0dXJuIFdURjo6TEVCRGVjb2Rlcjo6ZGVjb2RlVUludDMy
KG1fc291cmNlLmRhdGEoKSwgbV9zb3VyY2VMZW5ndGgsIG1fb2Zmc2V0LCByZXN1bHQpOyB9Cisg
ICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VWYXJVSW50NjQodWludDY0X3QmIHJlc3Vs
dCkgeyByZXR1cm4gV1RGOjpMRUJEZWNvZGVyOjpkZWNvZGVVSW50NjQobV9zb3VyY2UuZGF0YSgp
LCBtX3NvdXJjZUxlbmd0aCwgbV9vZmZzZXQsIHJlc3VsdCk7IH0KIAogCiAgICAgYm9vbCBXQVJO
X1VOVVNFRF9SRVRVUk4gcGFyc2VWYWx1ZVR5cGUoVHlwZSYgcmVzdWx0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01QbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dBU01QbGFuLmNwcAppbmRleCBhMDgzNzM4NTg0ZDU2NjkyNmEyNTIyZGI5
MWNkNmM5NGY4ZTZhNjBiLi5iYTI5OGZmNTUxMWZjNWY3Y2IwNWM3YzNjZDgyNWI2MjM2NDFjNDk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUGxhbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVBsYW4uY3BwCkBAIC01NCw4ICs1NCwx
NiBAQCBQbGFuOjpQbGFuKFZNJiB2bSwgVmVjdG9yPHVpbnQ4X3Q+IHNvdXJjZSkKICAgICBmb3Ig
KGNvbnN0IEZ1bmN0aW9uSW5mb3JtYXRpb24mIGluZm8gOiBtb2R1bGVQYXJzZXIuZnVuY3Rpb25J
bmZvcm1hdGlvbigpKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxv
Z0xuKCJQcm9jZXNzaW5nIGZ1bmNpb24gc3RhcnRpbmcgYXQ6ICIsIGluZm8uc3RhcnQsICIgYW5k
IGVuZGluZyBhdDogIiwgaW5mby5lbmQpOwotICAgICAgICByZXN1bHQuYXBwZW5kKHBhcnNlQW5k
Q29tcGlsZSh2bSwgc291cmNlLCBtb2R1bGVQYXJzZXIubWVtb3J5KCkuZ2V0KCksIGluZm8pKTsK
KyAgICAgICAgcmVzdWx0LmFwcGVuZChwYXJzZUFuZENvbXBpbGUodm0sIHNvdXJjZSwgbW9kdWxl
UGFyc2VyLm1lbW9yeSgpLmdldCgpLCBpbmZvLCBtb2R1bGVQYXJzZXIuZnVuY3Rpb25JbmZvcm1h
dGlvbigpKSk7CiAgICAgfQorCisgICAgLy8gUGF0Y2ggdGhlIGNhbGwgc2l0ZXMgZm9yIGVhY2gg
ZnVuY3Rpb24uCisgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25Db21waWxhdGlvbj4m
IGZ1bmN0aW9uUHRyIDogcmVzdWx0KSB7CisgICAgICAgIEZ1bmN0aW9uQ29tcGlsYXRpb24qIGZ1
bmN0aW9uID0gZnVuY3Rpb25QdHIuZ2V0KCk7CisgICAgICAgIGZvciAoYXV0byYgY2FsbCA6IGZ1
bmN0aW9uLT51bmxpbmtlZENhbGxzKQorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0
Y2hDYWxsKGNhbGwuY2FsbExvY2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbChyZXN1bHRbY2FsbC5m
dW5jdGlvbkluZGV4XS0+Y29kZS0+Y29kZSgpKSk7CisgICAgfQorCiAgICAgbWVtb3J5ID0gV1RG
TW92ZShtb2R1bGVQYXJzZXIubWVtb3J5KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9MRUJEZWNvZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9MRUJEZWNvZGVyLmgKaW5kZXggMzZk
Y2NhMmRiMGM0NmFmYmUzMWM4YzEwODhjZTNhOGFjZTIxMWJjMy4uMTY1MGEyM2JlZmZiZWQyM2Q5
OWRkODIyYTlkM2QwYTZkM2RiMjRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTEVCRGVj
b2Rlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0xFQkRlY29kZXIuaApAQCAtMzIsMTQgKzMyLDE1
IEBACiAvLyBTZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTEVCMTI4IGZvciBtb3Jl
IGluZm9ybWF0aW9uIGFib3V0IHRoZQogLy8gTEVCIGZvcm1hdC4KIAotY29uc3Qgc2l6ZV90IG1h
eExFQkJ5dGVMZW5ndGggPSA1OworbmFtZXNwYWNlIFdURiB7IG5hbWVzcGFjZSBMRUJEZWNvZGVy
IHsKIAotaW5saW5lIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZVVJbnQzMihjb25zdCB1
aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiBy
ZXN1bHQpCit0ZW1wbGF0ZTxzaXplX3QgbWF4Qnl0ZUxlbmd0aCwgdHlwZW5hbWUgVD4KK2lubGlu
ZSBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVVSW50KGNvbnN0IHVpbnQ4X3QqIGJ5dGVz
LCBzaXplX3QgbGVuZ3RoLCBzaXplX3QmIG9mZnNldCwgVCYgcmVzdWx0KQogewogICAgIEFTU0VS
VChsZW5ndGggPiBvZmZzZXQpOwogICAgIHJlc3VsdCA9IDA7CiAgICAgdW5zaWduZWQgc2hpZnQg
PSAwOwotICAgIHNpemVfdCBsYXN0ID0gc3RkOjptaW4obWF4TEVCQnl0ZUxlbmd0aCwgbGVuZ3Ro
IC0gb2Zmc2V0IC0gMSk7CisgICAgc2l6ZV90IGxhc3QgPSBzdGQ6Om1pbihtYXhCeXRlTGVuZ3Ro
LCBsZW5ndGggLSBvZmZzZXQgLSAxKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyB0cnVlOyAr
K2kpIHsKICAgICAgICAgdWludDhfdCBieXRlID0gYnl0ZXNbb2Zmc2V0KytdOwogICAgICAgICBy
ZXN1bHQgfD0gKGJ5dGUgJiAweDdmKSA8PCBzaGlmdDsKQEAgLTUzLDEyICs1NCwyNSBAQCBpbmxp
bmUgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlVUludDMyKGNvbnN0IHVpbnQ4X3QqIGJ5
dGVzLCBzaXplX3QgbGVuZ3RoLAogICAgIHJldHVybiB0cnVlOwogfQogCitjb25zdCBzaXplX3Qg
bWF4MzJCaXRMRUJCeXRlTGVuZ3RoID0gNTsKK2NvbnN0IHNpemVfdCBtYXg2NEJpdExFQkJ5dGVM
ZW5ndGggPSAxMDsKKworaW5saW5lIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZVVJbnQz
Mihjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCwgc2l6ZV90JiBvZmZzZXQsIHVp
bnQzMl90JiByZXN1bHQpCit7CisgICAgcmV0dXJuIGRlY29kZVVJbnQ8bWF4MzJCaXRMRUJCeXRl
TGVuZ3RoLCB1aW50MzJfdD4oYnl0ZXMsIGxlbmd0aCwgb2Zmc2V0LCByZXN1bHQpOworfQorCitp
bmxpbmUgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlVUludDY0KGNvbnN0IHVpbnQ4X3Qq
IGJ5dGVzLCBzaXplX3QgbGVuZ3RoLCBzaXplX3QmIG9mZnNldCwgdWludDY0X3QmIHJlc3VsdCkK
K3sKKyAgICByZXR1cm4gZGVjb2RlVUludDxtYXg2NEJpdExFQkJ5dGVMZW5ndGgsIHVpbnQ2NF90
PihieXRlcywgbGVuZ3RoLCBvZmZzZXQsIHJlc3VsdCk7Cit9CisKIGlubGluZSBib29sIFdBUk5f
VU5VU0VEX1JFVFVSTiBkZWNvZGVJbnQzMihjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxl
bmd0aCwgc2l6ZV90JiBvZmZzZXQsIGludDMyX3QmIHJlc3VsdCkKIHsKICAgICBBU1NFUlQobGVu
Z3RoID4gb2Zmc2V0KTsKICAgICByZXN1bHQgPSAwOwogICAgIHVuc2lnbmVkIHNoaWZ0ID0gMDsK
LSAgICBzaXplX3QgbGFzdCA9IHN0ZDo6bWluKG1heExFQkJ5dGVMZW5ndGgsIGxlbmd0aCAtIG9m
ZnNldCAtIDEpOworICAgIHNpemVfdCBsYXN0ID0gc3RkOjptaW4obWF4MzJCaXRMRUJCeXRlTGVu
Z3RoLCBsZW5ndGggLSBvZmZzZXQgLSAxKTsKICAgICB1aW50OF90IGJ5dGU7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgdHJ1ZTsgKytpKSB7CiAgICAgICAgIGJ5dGUgPSBieXRlc1tvZmZzZXQr
K107CkBAIC03NCwzICs4OCw1IEBAIGlubGluZSBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNv
ZGVJbnQzMihjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCwKICAgICAgICAgcmVz
dWx0IHw9ICgoLTF1KSA8PCBzaGlmdCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CisKK30gfSAvLyBX
VEY6OkxFQkRlY29kZXIKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggY2E4MzFiM2VhMGZlNzRlNDA5NmFjZDdlMTEwYjQ2NjNlZWFiYzEzNC4u
NTkyNGI1MzMxNmViOWMxNWFmZmVkOGQ5NjEzNGE2OTczMDNjZjAwNyAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxNi0xMC0yMCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZSBzaG91bGQgc3VwcG9ydCB0aGUgbmV3ZXIgV2ViQXNzZW1ibHkgc3BlYy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTc3NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBtZW1iZXJzIG9m
IHRoZSBDYWxsIGNhdGVnb3J5IHRvIHRoZSBXQVNNT3BzIHNwZWNpYWwgZ3JvdXAuCisKKyAgICAg
ICAgKiB3YXNtL2dlbmVyYXRlLXdhc21vcHMtaGVhZGVyLmpzOgorCiAyMDE2LTEwLTE4ICBDYWl0
bGluIFBvdHRlciAgPGNhaXRwQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ10gRVM2IE1ldGhv
ZCBmdW5jdGlvbnMgc2hvdWxkIG5vdCBoYXZlIHByb3RvdHlwZQpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy93YXNtL2dlbmVyYXRlLXdhc21vcHMtaGVhZGVyLmpzIGIvSlNUZXN0cy93YXNtL2dlbmVyYXRl
LXdhc21vcHMtaGVhZGVyLmpzCmluZGV4IDczODViYmYxNjE5NDhkY2IyYzBiOTM3OTAxOTBhY2Q2
Nzg0ZjM4ZWEuLmI5YTQyNTI5ZmU1MGZhNDY4Yzg0ZTJiN2EyMTE4M2JmYzA2NGVmOTQgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvd2FzbS9nZW5lcmF0ZS13YXNtb3BzLWhlYWRlci5qcworKysgYi9KU1Rl
c3RzL3dhc20vZ2VuZXJhdGUtd2FzbW9wcy1oZWFkZXIuanMKQEAgLTI5LDcgKzI5LDcgQEAgZnVu
Y3Rpb24qIG9wY29kZU1hY3JvaXplcihmaWx0ZXIpIHsKIAogY29uc3QgZGVmaW5lcyA9IFsKICAg
ICAiI2RlZmluZSBGT1JfRUFDSF9XQVNNX1NQRUNJQUxfT1AobWFjcm8pIiwKLSAgICAuLi5vcGNv
ZGVNYWNyb2l6ZXIob3AgPT4gb3AuY2F0ZWdvcnkgPT09ICJzcGVjaWFsIiksCisgICAgLi4ub3Bj
b2RlTWFjcm9pemVyKG9wID0+IG9wLmNhdGVnb3J5ID09PSAic3BlY2lhbCIgfHwgb3AuY2F0ZWdv
cnkgPT09ICJjYWxsIiksCiAgICAgIlxuXG4jZGVmaW5lIEZPUl9FQUNIX1dBU01fQ09OVFJPTF9G
TE9XX09QKG1hY3JvKSIsCiAgICAgLi4ub3Bjb2RlTWFjcm9pemVyKG9wID0+IG9wLmNhdGVnb3J5
ID09PSAiY29udHJvbCIpLAogICAgICJcblxuI2RlZmluZSBGT1JfRUFDSF9XQVNNX1VOQVJZX09Q
KG1hY3JvKSIsCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>