<?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>113624</bug_id>
          
          <creation_ts>2013-03-29 16:15:52 -0700</creation_ts>
          <short_desc>FTL should support double variables</short_desc>
          <delta_ts>2013-04-28 18:04:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>112840</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>866464</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-03-29 16:15:52 -0700</bug_when>
    <thetext>FTL should support double variables</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882253</commentid>
    <comment_count>1</comment_count>
      <attachid>199919</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-27 15:50:51 -0700</bug_when>
    <thetext>Created attachment 199919
the patch

Still need to test it more, so not ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882255</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-27 15:59:03 -0700</bug_when>
    <thetext>Heh.  Looping over an array to sum up some doubles just got 50% faster.


[pizlo@dethklok OpenSource] DYLD_FRAMEWORK_PATH=WebKitBuild/Release/ WebKitBuild/Release/jsc --useExperimentalFTL=false test10.js
Warmup: 1000 iterations took 3.915071487426758 ms.
Warmup: 10000 iterations took 33.653974533081055 ms.
Measurement: 100000 iterations took 329.6809196472168 ms.
[pizlo@dethklok OpenSource] DYLD_FRAMEWORK_PATH=WebKitBuild/Release/ WebKitBuild/Release/jsc --useExperimentalFTL=true test10.js
Warmup: 1000 iterations took 8.111000061035156 ms.
Warmup: 10000 iterations took 22.084951400756836 ms.
Measurement: 100000 iterations took 220.31879425048828 ms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882260</commentid>
    <comment_count>3</comment_count>
      <attachid>199921</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-27 16:12:08 -0700</bug_when>
    <thetext>Created attachment 199921
the patch

Note, for this to work on Darwin, I&apos;ll need to fix LLVM&apos;s MCJIT on Darwin.  Lol.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882271</commentid>
    <comment_count>4</comment_count>
      <attachid>199921</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-27 17:44:01 -0700</bug_when>
    <thetext>Comment on attachment 199921
the patch

r=me

Now all we need is for Darwin to become a supported platform for LLVM...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882368</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-28 00:07:58 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 199921 [details])
&gt; r=me
&gt; 
&gt; Now all we need is for Darwin to become a supported platform for LLVM...

Lol.

I will wait with landing this until I have that figured out.  I&apos;ve got a backlog of concurrent DFG stuff to do anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882433</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-28 17:36:27 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 199921 [details] [details])
&gt; &gt; r=me
&gt; &gt; 
&gt; &gt; Now all we need is for Darwin to become a supported platform for LLVM...
&gt; 
&gt; Lol.
&gt; 
&gt; I will wait with landing this until I have that figured out.  I&apos;ve got a backlog of concurrent DFG stuff to do anyway.

And I &quot;fixed&quot; it.  All that is needed is to switch the MCJIT to CodeModel::Small.  This required exposing more things via the C API; I&apos;ll attach the patch here and try to land it in LLVM trunk soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882434</commentid>
    <comment_count>7</comment_count>
      <attachid>199976</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-28 17:37:49 -0700</bug_when>
    <thetext>Created attachment 199976
latest MCJIT patch

This includes my previous MCJIT patch since it&apos;s still in a land-rollout pattern. ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882440</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-28 18:04:15 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/149264</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199919</attachid>
            <date>2013-04-27 15:50:51 -0700</date>
            <delta_ts>2013-04-27 16:12:08 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>33603</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ5MjQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg3IEBA
CisyMDEzLTA0LTI3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RlRMIHNob3VsZCBzdXBwb3J0IGRvdWJsZSB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzYyNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgTWFkZSBhbGwgb2YgdGhlIG9wZXJh
dGlvbnMgdGhhdCB0aGUgRlRMIGFscmVhZHkgc3VwcG9ydHMsIGFsc28gc3VwcG9ydCBkb3VibGVz
LgorICAgICAgICBPU1IgZXhpdCBhbHJlYWR5IGJhc2ljYWxseSBoYWQgZXZlcnl0aGluZyBpdCBu
ZWVkZWQsIHNvIG5vIGNoYW5nZXMgdGhlcmUuIFRoaXMKKyAgICAgICAgbW9zdGx5IGp1c3QgZ2x1
ZXMgdG9nZXRoZXIgYml0cyBvZiBERkcgSVIgdG8gTExWTSBJUiwgaW4gYSBzdHJhaWdodC1mb3J3
YXJkIHdheS4KKworICAgICAgICAqIGZ0bC9GVExBYmJyZXZpYXRpb25zLmg6CisgICAgICAgIChG
VEwpOgorICAgICAgICAoSlNDOjpGVEw6OmRvdWJsZVR5cGUpOgorICAgICAgICAoSlNDOjpGVEw6
OmNvbnN0UmVhbCk6CisgICAgICAgIChKU0M6OkZUTDo6YnVpbGRQaGkpOgorICAgICAgICAoSlND
OjpGVEw6OmFkZEluY29taW5nKToKKyAgICAgICAgKEpTQzo6RlRMOjpidWlsZEZBZGQpOgorICAg
ICAgICAoSlNDOjpGVEw6OmJ1aWxkRlN1Yik6CisgICAgICAgIChKU0M6OkZUTDo6YnVpbGRGTXVs
KToKKyAgICAgICAgKEpTQzo6RlRMOjpidWlsZEZOZWcpOgorICAgICAgICAoSlNDOjpGVEw6OmJ1
aWxkU0lUb0ZQKToKKyAgICAgICAgKEpTQzo6RlRMOjpidWlsZFVJVG9GUCk6CisgICAgICAgIChK
U0M6OkZUTDo6YnVpbGRCaXRDYXN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpidWlsZEZDbXApOgor
ICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNh
bkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExDb21tb25WYWx1ZXMuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6OkNvbW1vblZhbHVlczo6Q29tbW9uVmFsdWVzKToKKyAgICAgICAgKiBmdGwvRlRM
Q29tbW9uVmFsdWVzLmg6CisgICAgICAgIChDb21tb25WYWx1ZXMpOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
Okxvd2VyREZHVG9MTFZNKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6bG93
ZXIpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlR2V0TG9jYWwp
OgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlU2V0TG9jYWwpOgor
ICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQWRkKToKKyAgICAgICAg
KEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFyaXRoU3ViKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFyaXRoTXVsKToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFyaXRoTmVnYXRlKToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVVJbnQzMlRvTnVtYmVyKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNvbXBhcmVFcSk6CisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVDb21wYXJlTGVzcyk6CisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06Omxvd0RvdWJsZSk6CisgICAgICAgIChMb3dlckRGR1RvTExWTSk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06Omxvd0pTVmFsdWUpOgorICAgICAg
ICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjppc0NlbGxPck1pc2MpOgorICAgICAgICAoSlND
OjpGVEw6Okxvd2VyREZHVG9MTFZNOjp1bmJveERvdWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6
TG93ZXJERkdUb0xMVk06OmJveERvdWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdU
b0xMVk06OnNwZWN1bGF0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnNw
ZWN1bGF0ZU51bWJlcik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnNwZWN1
bGF0ZVJlYWxOdW1iZXIpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjphcHBl
bmRPU1JFeGl0KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6YWRkRXhpdEFy
Z3VtZW50Rm9yTm9kZSk6CisgICAgICAgICogZnRsL0ZUTE91dHB1dC5oOgorICAgICAgICAoSlND
OjpGVEw6Ok91dHB1dDo6Y29uc3REb3VibGUpOgorICAgICAgICAoT3V0cHV0KToKKyAgICAgICAg
KEpTQzo6RlRMOjpPdXRwdXQ6OnBoaSk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3Vi
bGVBZGQpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlU3ViKToKKyAgICAgICAg
KEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZU11bCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0
Ojpkb3VibGVOZWcpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6aW50VG9GUCk6CisgICAg
ICAgIChKU0M6OkZUTDo6T3V0cHV0OjppbnRUb0RvdWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6
T3V0cHV0Ojp1bnNpZ25lZFRvRlApOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6dW5zaWdu
ZWRUb0RvdWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpiaXRDYXN0KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmxvYWREb3VibGUpOgorICAgICAgICAoSlNDOjpGVEw6Ok91
dHB1dDo6c3RvcmVEb3VibGUpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlRXF1
YWwpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlTm90RXF1YWxPclVub3JkZXJl
ZCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVMZXNzVGhhbik6CisgICAgICAg
IChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVMZXNzVGhhbk9yRXF1YWwpOgorICAgICAgICAoSlND
OjpGVEw6Ok91dHB1dDo6ZG91YmxlR3JlYXRlclRoYW4pOgorICAgICAgICAoSlNDOjpGVEw6Ok91
dHB1dDo6ZG91YmxlR3JlYXRlclRoYW5PckVxdWFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRw
dXQ6OmRvdWJsZUVxdWFsT3JVbm9yZGVyZWQpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6
ZG91YmxlTm90RXF1YWwpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlTGVzc1Ro
YW5PclVub3JkZXJlZCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVMZXNzVGhh
bk9yRXF1YWxPclVub3JkZXJlZCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVH
cmVhdGVyVGhhbk9yVW5vcmRlcmVkKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJs
ZUdyZWF0ZXJUaGFuT3JFcXVhbE9yVW5vcmRlcmVkKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRw
dXQ6OnRlc3RJc1plcm82NCk6CisKIDIwMTMtMDQtMjYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFw
cGxlLmNvbT4KIAogICAgICAgICBmb3VydGhUaWVyOiBXYXRjaHBvaW50U2V0IHNob3VsZCBtYWtl
IHJhY3kgdXNlcyBlYXNpZXIgdG8gcmVhc29uIGFib3V0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEFiYnJldmlhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEFiYnJldmlhdGlvbnMuaAkocmV2aXNpb24gMTQ5MjM5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYmJyZXZpYXRpb25zLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDYgKzQ3LDcgQEAgdHlwZWRlZiBMTFZNQmFzaWNCbG9ja1JlZiBMQmFzaWNCbG9jazsK
IHR5cGVkZWYgTExWTUJ1aWxkZXJSZWYgTEJ1aWxkZXI7CiB0eXBlZGVmIExMVk1DYWxsQ29udiBM
Q2FsbENvbnY7CiB0eXBlZGVmIExMVk1JbnRQcmVkaWNhdGUgTEludFByZWRpY2F0ZTsKK3R5cGVk
ZWYgTExWTVJlYWxQcmVkaWNhdGUgTFJlYWxQcmVkaWNhdGU7CiB0eXBlZGVmIExMVk1MaW5rYWdl
IExMaW5rYWdlOwogdHlwZWRlZiBMTFZNTW9kdWxlUmVmIExNb2R1bGU7CiB0eXBlZGVmIExMVk1U
eXBlUmVmIExUeXBlOwpAQCAtNTcsNiArNTgsNyBAQCBzdGF0aWMgaW5saW5lIExUeXBlIGludDFU
eXBlKCkgeyByZXR1cm4gCiBzdGF0aWMgaW5saW5lIExUeXBlIGludDMyVHlwZSgpIHsgcmV0dXJu
IExMVk1JbnQzMlR5cGUoKTsgfQogc3RhdGljIGlubGluZSBMVHlwZSBpbnQ2NFR5cGUoKSB7IHJl
dHVybiBMTFZNSW50NjRUeXBlKCk7IH0KIHN0YXRpYyBpbmxpbmUgTFR5cGUgaW50UHRyVHlwZSgp
IHsgcmV0dXJuIExMVk1JbnQ2NFR5cGUoKTsgfQorc3RhdGljIGlubGluZSBMVHlwZSBkb3VibGVU
eXBlKCkgeyByZXR1cm4gTExWTURvdWJsZVR5cGUoKTsgfQogCiBzdGF0aWMgaW5saW5lIExUeXBl
IHBvaW50ZXJUeXBlKExUeXBlIHR5cGUpIHsgcmV0dXJuIExMVk1Qb2ludGVyVHlwZSh0eXBlLCAw
KTsgfQogCkBAIC0xMzQsMTcgKzEzNiw1OCBAQCBzdGF0aWMgaW5saW5lIExWYWx1ZSBnZXRQYXJh
bShMVmFsdWUgZnVuCiAKIGVudW0gQml0RXh0ZW5zaW9uIHsgWmVyb0V4dGVuZCwgU2lnbkV4dGVu
ZCB9Owogc3RhdGljIGlubGluZSBMVmFsdWUgY29uc3RJbnQoTFR5cGUgdHlwZSwgdW5zaWduZWQg
bG9uZyBsb25nIHZhbHVlLCBCaXRFeHRlbnNpb24gZXh0ZW5zaW9uKSB7IHJldHVybiBMTFZNQ29u
c3RJbnQodHlwZSwgdmFsdWUsIGV4dGVuc2lvbiA9PSBTaWduRXh0ZW5kKTsgfQorc3RhdGljIGlu
bGluZSBMVmFsdWUgY29uc3RSZWFsKExUeXBlIHR5cGUsIGRvdWJsZSB2YWx1ZSkgeyByZXR1cm4g
TExWTUNvbnN0UmVhbCh0eXBlLCB2YWx1ZSk7IH0KIHN0YXRpYyBpbmxpbmUgTFZhbHVlIGNvbnN0
SW50VG9QdHIoTFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBlKSB7IHJldHVybiBMTFZNQ29uc3RJbnRU
b1B0cih2YWx1ZSwgdHlwZSk7IH0KIHN0YXRpYyBpbmxpbmUgTFZhbHVlIGNvbnN0Qml0Q2FzdChM
VmFsdWUgdmFsdWUsIExUeXBlIHR5cGUpIHsgcmV0dXJuIExMVk1Db25zdEJpdENhc3QodmFsdWUs
IHR5cGUpOyB9CiAKIHN0YXRpYyBpbmxpbmUgTEJhc2ljQmxvY2sgYXBwZW5kQmFzaWNCbG9jayhM
VmFsdWUgZnVuY3Rpb24sIGNvbnN0IGNoYXIqIG5hbWUgPSAiIikgeyByZXR1cm4gTExWTUFwcGVu
ZEJhc2ljQmxvY2soZnVuY3Rpb24sIG5hbWUpOyB9CiBzdGF0aWMgaW5saW5lIExCYXNpY0Jsb2Nr
IGluc2VydEJhc2ljQmxvY2soTEJhc2ljQmxvY2sgYmVmb3JlQmFzaWNCbG9jaywgY29uc3QgY2hh
ciogbmFtZSA9ICIiKSB7IHJldHVybiBMTFZNSW5zZXJ0QmFzaWNCbG9jayhiZWZvcmVCYXNpY0Js
b2NrLCBuYW1lKTsgfQogCitzdGF0aWMgaW5saW5lIExWYWx1ZSBidWlsZFBoaShMQnVpbGRlciBi
dWlsZGVyLCBMVHlwZSB0eXBlKSB7IHJldHVybiBMTFZNQnVpbGRQaGkoYnVpbGRlciwgdHlwZSwg
IiIpOyB9CitzdGF0aWMgaW5saW5lIHZvaWQgYWRkSW5jb21pbmcoTFZhbHVlIHBoaSwgY29uc3Qg
TFZhbHVlKiB2YWx1ZXMsIGNvbnN0IExCYXNpY0Jsb2NrKiBibG9ja3MsIHVuc2lnbmVkIG51bVBy
ZWRlY2Vzc29ycykKK3sKKyAgICBMTFZNQWRkSW5jb21pbmcocGhpLCBjb25zdF9jYXN0PExWYWx1
ZSo+KHZhbHVlcyksIGNvbnN0X2Nhc3Q8TEJhc2ljQmxvY2sqPihibG9ja3MpLCBudW1QcmVkZWNl
c3NvcnMpOworfQordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVWZWN0b3JUeXBlLCB0eXBlbmFtZSBC
bG9ja1ZlY3RvclR5cGU+CitzdGF0aWMgaW5saW5lIHZvaWQgYWRkSW5jb21pbmcoTFZhbHVlIHBo
aSwgY29uc3QgVmFsdWVWZWN0b3JUeXBlJiB2YWx1ZXMsIGNvbnN0IEJsb2NrVmVjdG9yVHlwZSYg
YmxvY2tzKQoreworICAgIEFTU0VSVCh2YWx1ZXMuc2l6ZSgpID09IGJsb2Nrcy5zaXplKCkpOwor
ICAgIGFkZEluY29taW5nKHBoaSwgdmFsdWVzLmJlZ2luKCksIGJsb2Nrcy5iZWdpbigpLCB2YWx1
ZXMuc2l6ZSgpKTsKK30KK3N0YXRpYyBpbmxpbmUgdm9pZCBhZGRJbmNvbWluZyhMVmFsdWUgcGhp
LCBMVmFsdWUgdmFsdWUxLCBMQmFzaWNCbG9jayBibG9jazEpCit7CisgICAgYWRkSW5jb21pbmco
cGhpLCAmdmFsdWUxLCAmYmxvY2sxLCAxKTsKK30KK3N0YXRpYyBpbmxpbmUgdm9pZCBhZGRJbmNv
bWluZyhMVmFsdWUgcGhpLCBMVmFsdWUgdmFsdWUxLCBMQmFzaWNCbG9jayBibG9jazEsIExWYWx1
ZSB2YWx1ZTIsIExCYXNpY0Jsb2NrIGJsb2NrMikKK3sKKyAgICBMVmFsdWUgdmFsdWVzW10gPSB7
IHZhbHVlMSwgdmFsdWUyIH07CisgICAgTEJhc2ljQmxvY2sgYmxvY2tzW10gPSB7IGJsb2NrMSwg
YmxvY2syIH07CisgICAgYWRkSW5jb21pbmcocGhpLCB2YWx1ZXMsIGJsb2NrcywgMik7Cit9Citz
dGF0aWMgaW5saW5lIExWYWx1ZSBidWlsZFBoaShMQnVpbGRlciBidWlsZGVyLCBMVHlwZSB0eXBl
LCBMVmFsdWUgdmFsdWUxLCBMQmFzaWNCbG9jayBibG9jazEpCit7CisgICAgTFZhbHVlIHJlc3Vs
dCA9IGJ1aWxkUGhpKGJ1aWxkZXIsIHR5cGUpOworICAgIGFkZEluY29taW5nKHJlc3VsdCwgdmFs
dWUxLCBibG9jazEpOworICAgIHJldHVybiByZXN1bHQ7Cit9CitzdGF0aWMgaW5saW5lIExWYWx1
ZSBidWlsZFBoaSgKKyAgICBMQnVpbGRlciBidWlsZGVyLCBMVHlwZSB0eXBlLCBMVmFsdWUgdmFs
dWUxLCBMQmFzaWNCbG9jayBibG9jazEsIExWYWx1ZSB2YWx1ZTIsCisgICAgTEJhc2ljQmxvY2sg
YmxvY2syKQoreworICAgIExWYWx1ZSByZXN1bHQgPSBidWlsZFBoaShidWlsZGVyLCB0eXBlKTsK
KyAgICBhZGRJbmNvbWluZyhyZXN1bHQsIHZhbHVlMSwgYmxvY2sxLCB2YWx1ZTIsIGJsb2NrMik7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRBbGxv
Y2EoTEJ1aWxkZXIgYnVpbGRlciwgTFR5cGUgdHlwZSkgeyByZXR1cm4gTExWTUJ1aWxkQWxsb2Nh
KGJ1aWxkZXIsIHR5cGUsICIiKTsgfQogc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRBZGQoTEJ1
aWxkZXIgYnVpbGRlciwgTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gTExWTUJ1
aWxkQWRkKGJ1aWxkZXIsIGxlZnQsIHJpZ2h0LCAiIik7IH0KIHN0YXRpYyBpbmxpbmUgTFZhbHVl
IGJ1aWxkU3ViKExCdWlsZGVyIGJ1aWxkZXIsIExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsg
cmV0dXJuIExMVk1CdWlsZFN1YihidWlsZGVyLCBsZWZ0LCByaWdodCwgIiIpOyB9CiBzdGF0aWMg
aW5saW5lIExWYWx1ZSBidWlsZE11bChMQnVpbGRlciBidWlsZGVyLCBMVmFsdWUgbGVmdCwgTFZh
bHVlIHJpZ2h0KSB7IHJldHVybiBMTFZNQnVpbGRNdWwoYnVpbGRlciwgbGVmdCwgcmlnaHQsICIi
KTsgfQogc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGROZWcoTEJ1aWxkZXIgYnVpbGRlciwgTFZh
bHVlIHZhbHVlKSB7IHJldHVybiBMTFZNQnVpbGROZWcoYnVpbGRlciwgdmFsdWUsICIiKTsgfQor
c3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRGQWRkKExCdWlsZGVyIGJ1aWxkZXIsIExWYWx1ZSBs
ZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIExMVk1CdWlsZEZBZGQoYnVpbGRlciwgbGVmdCwg
cmlnaHQsICIiKTsgfQorc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRGU3ViKExCdWlsZGVyIGJ1
aWxkZXIsIExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIExMVk1CdWlsZEZTdWIo
YnVpbGRlciwgbGVmdCwgcmlnaHQsICIiKTsgfQorc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRG
TXVsKExCdWlsZGVyIGJ1aWxkZXIsIExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJu
IExMVk1CdWlsZEZNdWwoYnVpbGRlciwgbGVmdCwgcmlnaHQsICIiKTsgfQorc3RhdGljIGlubGlu
ZSBMVmFsdWUgYnVpbGRGTmVnKExCdWlsZGVyIGJ1aWxkZXIsIExWYWx1ZSB2YWx1ZSkgeyByZXR1
cm4gTExWTUJ1aWxkRk5lZyhidWlsZGVyLCB2YWx1ZSwgIiIpOyB9CiBzdGF0aWMgaW5saW5lIExW
YWx1ZSBidWlsZEFuZChMQnVpbGRlciBidWlsZGVyLCBMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0
KSB7IHJldHVybiBMTFZNQnVpbGRBbmQoYnVpbGRlciwgbGVmdCwgcmlnaHQsICIiKTsgfQogc3Rh
dGljIGlubGluZSBMVmFsdWUgYnVpbGRPcihMQnVpbGRlciBidWlsZGVyLCBMVmFsdWUgbGVmdCwg
TFZhbHVlIHJpZ2h0KSB7IHJldHVybiBMTFZNQnVpbGRPcihidWlsZGVyLCBsZWZ0LCByaWdodCwg
IiIpOyB9CiBzdGF0aWMgaW5saW5lIExWYWx1ZSBidWlsZFhvcihMQnVpbGRlciBidWlsZGVyLCBM
VmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBMTFZNQnVpbGRYb3IoYnVpbGRlciwg
bGVmdCwgcmlnaHQsICIiKTsgfQpAQCAtMTU0LDEwICsxOTcsMTQgQEAgc3RhdGljIGlubGluZSBM
VmFsdWUgYnVpbGRMU2hyKExCdWlsZGVyIAogc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRMb2Fk
KExCdWlsZGVyIGJ1aWxkZXIsIExWYWx1ZSBwb2ludGVyKSB7IHJldHVybiBMTFZNQnVpbGRMb2Fk
KGJ1aWxkZXIsIHBvaW50ZXIsICIiKTsgfQogc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRTdG9y
ZShMQnVpbGRlciBidWlsZGVyLCBMVmFsdWUgdmFsdWUsIExWYWx1ZSBwb2ludGVyKSB7IHJldHVy
biBMTFZNQnVpbGRTdG9yZShidWlsZGVyLCB2YWx1ZSwgcG9pbnRlcik7IH0KIHN0YXRpYyBpbmxp
bmUgTFZhbHVlIGJ1aWxkWkV4dChMQnVpbGRlciBidWlsZGVyLCBMVmFsdWUgdmFsdWUsIExUeXBl
IHR5cGUpIHsgcmV0dXJuIExMVk1CdWlsZFpFeHQoYnVpbGRlciwgdmFsdWUsIHR5cGUsICIiKTsg
fQorc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRTSVRvRlAoTEJ1aWxkZXIgYnVpbGRlciwgTFZh
bHVlIHZhbHVlLCBMVHlwZSB0eXBlKSB7IHJldHVybiBMTFZNQnVpbGRTSVRvRlAoYnVpbGRlciwg
dmFsdWUsIHR5cGUsICIiKTsgfQorc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRVSVRvRlAoTEJ1
aWxkZXIgYnVpbGRlciwgTFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBlKSB7IHJldHVybiBMTFZNQnVp
bGRVSVRvRlAoYnVpbGRlciwgdmFsdWUsIHR5cGUsICIiKTsgfQogc3RhdGljIGlubGluZSBMVmFs
dWUgYnVpbGRJbnRDYXN0KExCdWlsZGVyIGJ1aWxkZXIsIExWYWx1ZSB2YWx1ZSwgTFR5cGUgdHlw
ZSkgeyByZXR1cm4gTExWTUJ1aWxkSW50Q2FzdChidWlsZGVyLCB2YWx1ZSwgdHlwZSwgIiIpOyB9
CiBzdGF0aWMgaW5saW5lIExWYWx1ZSBidWlsZEludFRvUHRyKExCdWlsZGVyIGJ1aWxkZXIsIExW
YWx1ZSB2YWx1ZSwgTFR5cGUgdHlwZSkgeyByZXR1cm4gTExWTUJ1aWxkSW50VG9QdHIoYnVpbGRl
ciwgdmFsdWUsIHR5cGUsICIiKTsgfQogc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRQdHJUb0lu
dChMQnVpbGRlciBidWlsZGVyLCBMVmFsdWUgdmFsdWUsIExUeXBlIHR5cGUpIHsgcmV0dXJuIExM
Vk1CdWlsZFB0clRvSW50KGJ1aWxkZXIsIHZhbHVlLCB0eXBlLCAiIik7IH0KK3N0YXRpYyBpbmxp
bmUgTFZhbHVlIGJ1aWxkQml0Q2FzdChMQnVpbGRlciBidWlsZGVyLCBMVmFsdWUgdmFsdWUsIExU
eXBlIHR5cGUpIHsgcmV0dXJuIExMVk1CdWlsZEJpdENhc3QoYnVpbGRlciwgdmFsdWUsIHR5cGUs
ICIiKTsgfQogc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRJQ21wKExCdWlsZGVyIGJ1aWxkZXIs
IExJbnRQcmVkaWNhdGUgY29uZCwgTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4g
TExWTUJ1aWxkSUNtcChidWlsZGVyLCBjb25kLCBsZWZ0LCByaWdodCwgIiIpOyB9CitzdGF0aWMg
aW5saW5lIExWYWx1ZSBidWlsZEZDbXAoTEJ1aWxkZXIgYnVpbGRlciwgTFJlYWxQcmVkaWNhdGUg
Y29uZCwgTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gTExWTUJ1aWxkRkNtcChi
dWlsZGVyLCBjb25kLCBsZWZ0LCByaWdodCwgIiIpOyB9CiBzdGF0aWMgaW5saW5lIExWYWx1ZSBi
dWlsZENhbGwoTEJ1aWxkZXIgYnVpbGRlciwgTFZhbHVlIGZ1bmN0aW9uLCBjb25zdCBMVmFsdWUq
IGFyZ3MsIHVuc2lnbmVkIG51bUFyZ3MpCiB7CiAgICAgcmV0dXJuIExMVk1CdWlsZENhbGwoYnVp
bGRlciwgZnVuY3Rpb24sIGNvbnN0X2Nhc3Q8TFZhbHVlKj4oYXJncyksIG51bUFyZ3MsICIiKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJ
KHJldmlzaW9uIDE0OTIzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsOSBAQCBib29sIGNhbkNvbXBp
bGUoR3JhcGgmIGdyYXBoKQogICAgICAgICAgICAgICAgIGNhc2UgVW50eXBlZFVzZToKICAgICAg
ICAgICAgICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICAgICAgICAgIGNhc2UgS25vd25JbnQz
MlVzZToKKyAgICAgICAgICAgICAgICBjYXNlIE51bWJlclVzZToKKyAgICAgICAgICAgICAgICBj
YXNlIEtub3duTnVtYmVyVXNlOgorICAgICAgICAgICAgICAgIGNhc2UgUmVhbE51bWJlclVzZToK
ICAgICAgICAgICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBD
ZWxsVXNlOgogICAgICAgICAgICAgICAgIGNhc2UgS25vd25DZWxsVXNlOgpAQCAtOTAsMjIgKzkz
LDEzIEBAIGJvb2wgY2FuQ29tcGlsZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgICAgICBjYXNlIFB1
dEJ5T2Zmc2V0OgogICAgICAgICAgICAgY2FzZSBHZXRHbG9iYWxWYXI6CiAgICAgICAgICAgICBj
YXNlIFB1dEdsb2JhbFZhcjoKLSAgICAgICAgICAgICAgICAvLyBUaGVzZSBhcmUgT0suCi0gICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFZhbHVlQWRkOgogICAgICAgICAg
ICAgY2FzZSBBcml0aEFkZDoKICAgICAgICAgICAgIGNhc2UgQXJpdGhTdWI6CiAgICAgICAgICAg
ICBjYXNlIEFyaXRoTXVsOgotICAgICAgICAgICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5k
KCkgPT0gSW50MzJVc2UpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGNhc2UgQXJpdGhOZWdhdGU6Ci0gICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBJbnQzMlVzZSkKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgY2FzZSBVSW50MzJUb051bWJlcjoKLSAgICAgICAgICAgICAgICBpZiAoIW5vZGVD
YW5TcGVjdWxhdGVJbnRlZ2VyKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgLy8gVGhlc2UgYXJlIE9LLgog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoK
ICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgewpAQCAt
MTIwLDYgKzExNCw3IEBAIGJvb2wgY2FuQ29tcGlsZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgICAg
ICBjYXNlIEdldEJ5VmFsOgogICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+YXJyYXlNb2Rl
KCkudHlwZSgpKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50MzI6CisgICAgICAg
ICAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgogICAgICAgICAgICAgICAgIGNhc2UgQXJyYXk6
OkNvbnRpZ3VvdXM6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IGRlZmF1bHQ6CkBAIC0xMzYsMTIgKzEzMSwxNiBAQCBib29sIGNhbkNvbXBpbGUoR3JhcGgmIGdy
YXBoKQogICAgICAgICAgICAgY2FzZSBDb21wYXJlRXE6CiAgICAgICAgICAgICAgICAgaWYgKG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNlKSkK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmlz
QmluYXJ5VXNlS2luZChPYmplY3RVc2UpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBjYXNlIENvbXBhcmVMZXNz
OgogICAgICAgICAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJVc2UpKQog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKE51bWJlclVzZSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGNhc2UgQnJhbmNoOgogICAg
ICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQm9vbGVhblVzZSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5jcHAJ
KHJldmlzaW9uIDE0OTIzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9u
VmFsdWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYsMTEgQEAgQ29tbW9uVmFsdWVz
OjpDb21tb25WYWx1ZXMoKQogICAgICwgaW50MzIoaW50MzJUeXBlKCkpCiAgICAgLCBpbnQ2NChp
bnQ2NFR5cGUoKSkKICAgICAsIGludFB0cihpbnRQdHJUeXBlKCkpCisgICAgLCBkb3VibGVUeXBl
KEZUTDo6ZG91YmxlVHlwZSgpKQogICAgICwgcmVmMzIocG9pbnRlclR5cGUoaW50MzIpKQogICAg
ICwgcmVmNjQocG9pbnRlclR5cGUoaW50NjQpKQogICAgICwgcmVmUHRyKHBvaW50ZXJUeXBlKGlu
dFB0cikpCisgICAgLCByZWZEb3VibGUocG9pbnRlclR5cGUoZG91YmxlVHlwZSkpCiAgICAgLCBi
b29sZWFuVHJ1ZShjb25zdEludChib29sZWFuLCB0cnVlLCBaZXJvRXh0ZW5kKSkKICAgICAsIGJv
b2xlYW5GYWxzZShjb25zdEludChib29sZWFuLCBmYWxzZSwgWmVyb0V4dGVuZCkpCiAgICAgLCBp
bnQzMlplcm8oY29uc3RJbnQoaW50MzIsIDAsIFNpZ25FeHRlbmQpKQpAQCAtNTAsNiArNTIsNyBA
QCBDb21tb25WYWx1ZXM6OkNvbW1vblZhbHVlcygpCiAgICAgLCBpbnRQdHJGb3VyKGNvbnN0SW50
KGludFB0ciwgNCwgU2lnbkV4dGVuZCkpCiAgICAgLCBpbnRQdHJFaWdodChjb25zdEludChpbnRQ
dHIsIDgsIFNpZ25FeHRlbmQpKQogICAgICwgaW50UHRyUHRyKGNvbnN0SW50KGludFB0ciwgc2l6
ZW9mKHZvaWQqKSwgU2lnbkV4dGVuZCkpCisgICAgLCBkb3VibGVaZXJvKGNvbnN0UmVhbChkb3Vi
bGVUeXBlLCAwKSkKICAgICAsIG1fbW9kdWxlKDApCiB7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmgJKHJldmlzaW9uIDE0OTIzOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDkgKzQ4LDExIEBAIHB1YmxpYzoKICAgICBjb25zdCBMVHlwZSBpbnQzMjsKICAgICBj
b25zdCBMVHlwZSBpbnQ2NDsKICAgICBjb25zdCBMVHlwZSBpbnRQdHI7CisgICAgY29uc3QgTFR5
cGUgZG91YmxlVHlwZTsKICAgICBjb25zdCBMVHlwZSByZWYzMjsKICAgICBjb25zdCBMVHlwZSBy
ZWY2NDsKICAgICBjb25zdCBMVHlwZSByZWZQdHI7CisgICAgY29uc3QgTFR5cGUgcmVmRG91Ymxl
OwogICAgIGNvbnN0IExWYWx1ZSBib29sZWFuVHJ1ZTsKICAgICBjb25zdCBMVmFsdWUgYm9vbGVh
bkZhbHNlOwogICAgIGNvbnN0IExWYWx1ZSBpbnQzMlplcm87CkBAIC02Miw2ICs2NCw3IEBAIHB1
YmxpYzoKICAgICBjb25zdCBMVmFsdWUgaW50UHRyRm91cjsKICAgICBjb25zdCBMVmFsdWUgaW50
UHRyRWlnaHQ7CiAgICAgY29uc3QgTFZhbHVlIGludFB0clB0cjsKKyAgICBjb25zdCBMVmFsdWUg
ZG91YmxlWmVybzsKICAgICAKICAgICBMTW9kdWxlIG1fbW9kdWxlOwogfTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lv
biAxNDkyMzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZN
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQCBwdWJsaWM6CiAgICAgICAgICwg
bV9sb2NhbHNCb29sZWFuKE9wZXJhbmRzTGlrZSwgc3RhdGUuZ3JhcGgubV9ibG9ja3NbMF0tPnZh
cmlhYmxlc0F0SGVhZCkKICAgICAgICAgLCBtX2xvY2FsczMyKE9wZXJhbmRzTGlrZSwgc3RhdGUu
Z3JhcGgubV9ibG9ja3NbMF0tPnZhcmlhYmxlc0F0SGVhZCkKICAgICAgICAgLCBtX2xvY2FsczY0
KE9wZXJhbmRzTGlrZSwgc3RhdGUuZ3JhcGgubV9ibG9ja3NbMF0tPnZhcmlhYmxlc0F0SGVhZCkK
KyAgICAgICAgLCBtX2xvY2Fsc0RvdWJsZShPcGVyYW5kc0xpa2UsIHN0YXRlLmdyYXBoLm1fYmxv
Y2tzWzBdLT52YXJpYWJsZXNBdEhlYWQpCiAgICAgICAgICwgbV92YWx1ZVNvdXJjZXMoT3BlcmFu
ZHNMaWtlLCBzdGF0ZS5ncmFwaC5tX2Jsb2Nrc1swXS0+dmFyaWFibGVzQXRIZWFkKQogICAgICAg
ICAsIG1fbGFzdFNldE9wZXJhbmQoc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSkKICAg
ICAgICAgLCBtX2V4aXRUaHVua0dlbmVyYXRvcihzdGF0ZSkKQEAgLTg2LDYgKzg3LDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgbV9sb2NhbHNCb29sZWFuW2luZGV4XSA9IGJ1aWxkQWxsb2NhKG1f
b3V0Lm1fYnVpbGRlciwgbV9vdXQuYm9vbGVhbik7CiAgICAgICAgICAgICBtX2xvY2FsczMyW2lu
ZGV4XSA9IGJ1aWxkQWxsb2NhKG1fb3V0Lm1fYnVpbGRlciwgbV9vdXQuaW50MzIpOwogICAgICAg
ICAgICAgbV9sb2NhbHM2NFtpbmRleF0gPSBidWlsZEFsbG9jYShtX291dC5tX2J1aWxkZXIsIG1f
b3V0LmludDY0KTsKKyAgICAgICAgICAgIG1fbG9jYWxzRG91YmxlW2luZGV4XSA9IGJ1aWxkQWxs
b2NhKG1fb3V0Lm1fYnVpbGRlciwgbV9vdXQuZG91YmxlVHlwZSk7CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIG1faW5pdGlhbGl6YXRpb24gPSBhcHBlbmRCYXNpY0Jsb2NrKG1fZnRsU3Rh
dGUuZnVuY3Rpb24pOwpAQCAtNDIyLDkgKzQyNCw4IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAg
ICAgICBpZiAodmFyaWFibGUtPnNob3VsZFVuYm94SWZQb3NzaWJsZSgpKSB7CiAgICAgICAgICAg
ICBpZiAodmFyaWFibGUtPnNob3VsZFVzZURvdWJsZUZvcm1hdCgpKSB7Ci0gICAgICAgICAgICAg
ICAgLy8gRklYTUU6IGltcGxlbWVudCBkb3VibGVzIGluIEZUTC4KLSAgICAgICAgICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzNjI0Ci0gICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICBt
X2RvdWJsZVZhbHVlcy5hZGQobV9ub2RlLCBtX291dC5nZXQobV9sb2NhbHNEb3VibGUub3BlcmFu
ZCh2YXJpYWJsZS0+bG9jYWwoKSkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIExvY2FscyB0aGF0IGFyZSBtYXJr
ZWQgc2hvdWxkVW5ib3hJZlBvc3NpYmxlKCkgdGhhdCBhcmVuJ3QgYWxzbyBmb3JjZWQgdG8KQEAg
LTQ1Niw5ICs0NTcsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIGlmICh2YXJpYWJs
ZS0+c2hvdWxkVW5ib3hJZlBvc3NpYmxlKCkpIHsKICAgICAgICAgICAgIGlmICh2YXJpYWJsZS0+
c2hvdWxkVXNlRG91YmxlRm9ybWF0KCkpIHsKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogaW1w
bGVtZW50IGRvdWJsZXMgaW4gRlRMLgotICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM2MjQKLSAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxv
d0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBtX291dC5zZXQodmFs
dWUsIG1fbG9jYWxzRG91YmxlLm9wZXJhbmQodmFyaWFibGUtPmxvY2FsKCkpKTsKKyAgICAgICAg
ICAgICAgICBpZiAobmVlZHNGbHVzaGluZykgeworICAgICAgICAgICAgICAgICAgICBtX291dC5z
dG9yZURvdWJsZSh2YWx1ZSwgYWRkcmVzc0Zvcih2YXJpYWJsZS0+bG9jYWwoKSkpOworICAgICAg
ICAgICAgICAgICAgICBtX3ZhbHVlU291cmNlcy5vcGVyYW5kKHZhcmlhYmxlLT5sb2NhbCgpKSA9
IFZhbHVlU291cmNlKERvdWJsZUluSlNTdGFjayk7CisgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNTUyLDYg
KzU1NiwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgICAgIAorICAgICAgICBjYXNlIE51bWJlclVzZTogeworICAgICAgICAgICAgbV9kb3VibGVW
YWx1ZXMuYWRkKAorICAgICAgICAgICAgICAgIG1fbm9kZSwKKyAgICAgICAgICAgICAgICBtX291
dC5kb3VibGVBZGQobG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dEb3VibGUobV9ub2Rl
LT5jaGlsZDIoKSkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAg
ICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTU3Niw2ICs1ODcsMTMgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAgY2Fz
ZSBOdW1iZXJVc2U6IHsKKyAgICAgICAgICAgIG1fZG91YmxlVmFsdWVzLmFkZCgKKyAgICAgICAg
ICAgICAgICBtX25vZGUsCisgICAgICAgICAgICAgICAgbV9vdXQuZG91YmxlU3ViKGxvd0RvdWJs
ZShtX25vZGUtPmNoaWxkMSgpKSwgbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAg
YnJlYWs7CkBAIC02MTMsNiArNjMxLDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICAgICAgCisgICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAg
ICAgICAgICBtX2RvdWJsZVZhbHVlcy5hZGQoCisgICAgICAgICAgICAgICAgbV9ub2RlLAorICAg
ICAgICAgICAgICAgIG1fb3V0LmRvdWJsZU11bChsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSks
IGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMigpKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjQwLDYgKzY2
NSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
ICAgIAorICAgICAgICBjYXNlIE51bWJlclVzZTogeworICAgICAgICAgICAgbV9kb3VibGVWYWx1
ZXMuYWRkKG1fbm9kZSwgbV9vdXQuZG91YmxlTmVnKGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgp
KSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtNjkzLDE1ICs3MjMsMTMgQEAgcHJpdmF0ZToKICAgICAKICAg
ICB2b2lkIGNvbXBpbGVVSW50MzJUb051bWJlcigpCiAgICAgeworICAgICAgICBMVmFsdWUgdmFs
dWUgPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKwogICAgICAgICBpZiAoIW5vZGVDYW5T
cGVjdWxhdGVJbnRlZ2VyKG1fbm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpIHsKLSAgICAgICAgICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQgZG91YmxlcyBpbiBGVEwuCi0gICAgICAgICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzNjI0Ci0gICAgICAgICAgICAK
LSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBt
X2RvdWJsZVZhbHVlcy5hZGQobV9ub2RlLCBtX291dC51bnNpZ25lZFRvRG91YmxlKHZhbHVlKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIExWYWx1
ZSB2YWx1ZSA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBzcGVjdWxhdGVG
b3J3YXJkKAogICAgICAgICAgICAgT3ZlcmZsb3csIG5vVmFsdWUoKSwgMCwgbV9vdXQubGVzc1Ro
YW4odmFsdWUsIG1fb3V0LmludDMyWmVybyksCiAgICAgICAgICAgICBGb3JtYXR0ZWRWYWx1ZShW
YWx1ZUZvcm1hdFVJbnQzMiwgdmFsdWUpKTsKQEAgLTgyMSw2ICs4NDksMzYgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAgY2Fz
ZSBBcnJheTo6RG91YmxlOiB7CisgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS5p
c0luQm91bmRzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS5p
c1NhbmVDaGFpbigpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
c3RydWN0dXJlIHRyYW5zaXRpb24gd2F0Y2hwb2ludHMuCisgICAgICAgICAgICAgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM2NDcKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGUoCisgICAg
ICAgICAgICAgICAgICAgIE91dE9mQm91bmRzLCBub1ZhbHVlKCksIDAsCisgICAgICAgICAgICAg
ICAgICAgIG1fb3V0LmFib3ZlT3JFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4
LCBtX291dC5sb2FkMzIoc3RvcmFnZSwgbV9oZWFwcy5CdXR0ZXJmbHlfcHVibGljTGVuZ3RoKSkp
OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291
dC5sb2FkRG91YmxlKG1fb3V0LmJhc2VJbmRleCgKKyAgICAgICAgICAgICAgICAgICAgbV9oZWFw
cy5pbmRleGVkRG91YmxlUHJvcGVydGllcywKKyAgICAgICAgICAgICAgICAgICAgc3RvcmFnZSwg
bV9vdXQuemVyb0V4dChpbmRleCwgbV9vdXQuaW50UHRyKSwKKyAgICAgICAgICAgICAgICAgICAg
bV9zdGF0ZS5mb3JOb2RlKG1fbm9kZS0+Y2hpbGQyKCkpLm1fdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBpZiAoIW1fbm9kZS0+YXJyYXlNb2RlKCkuaXNTYW5lQ2hh
aW4oKSkgeworICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGUoCisgICAgICAgICAgICAgICAg
ICAgICAgICBMb2FkRnJvbUhvbGUsIG5vVmFsdWUoKSwgMCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1fb3V0LmRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQocmVzdWx0LCByZXN1bHQpKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbV9kb3VibGVWYWx1ZXMuYWRkKG1fbm9k
ZSwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTg3NCw2ICs5MzIsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KE51bWJlclVzZSkpIHsKKyAgICAgICAgICAgIG1fYm9vbGVhblZhbHVlcy5hZGQoCisgICAgICAg
ICAgICAgICAgbV9ub2RlLAorICAgICAgICAgICAgICAgIG1fb3V0LmRvdWJsZUVxdWFsKGxvd0Rv
dWJsZShtX25vZGUtPmNoaWxkMSgpKSwgbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQyKCkpKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChP
YmplY3RVc2UpKSB7CiAgICAgICAgICAgICBtX2Jvb2xlYW5WYWx1ZXMuYWRkKAogICAgICAgICAg
ICAgICAgIG1fbm9kZSwKQEAgLTg5Myw2ICs5NTcsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKE51bWJlclVzZSkpIHsKKyAgICAgICAgICAgIG1fYm9vbGVhblZhbHVlcy5hZGQo
CisgICAgICAgICAgICAgICAgbV9ub2RlLAorICAgICAgICAgICAgICAgIG1fb3V0LmRvdWJsZUxl
c3NUaGFuKGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSwgbG93RG91YmxlKG1fbm9kZS0+Y2hp
bGQyKCkpKSk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgfQogICAgIApAQCAtMTA0Miw2ICsxMTEyLDUzIEBAIHByaXZhdGU6
CiAgICAgICAgIHJldHVybiBtX291dC5ib29sZWFuRmFsc2U7CiAgICAgfQogICAgIAorICAgIExW
YWx1ZSBsb3dEb3VibGUoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBB
dXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VE
KG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGlzRG91YmxlKGVkZ2Uu
dXNlS2luZCgpKSk7CisgICAgICAgIAorICAgICAgICBpZiAoTFZhbHVlIHJlc3VsdCA9IG1fZG91
YmxlVmFsdWVzLmdldChlZGdlLm5vZGUoKSkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICAKKyAgICAgICAgaWYgKExWYWx1ZSBpbnRSZXN1bHQgPSBtX2ludDMyVmFsdWVzLmdl
dChlZGdlLm5vZGUoKSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5pbnRU
b0RvdWJsZShpbnRSZXN1bHQpOworICAgICAgICAgICAgbV9kb3VibGVWYWx1ZXMuYWRkKGVkZ2Uu
bm9kZSgpLCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgaWYgKExWYWx1ZSBib3hlZFJlc3VsdCA9IG1fanNWYWx1ZVZhbHVl
cy5nZXQoZWRnZS5ub2RlKCkpKSB7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBpbnRDYXNlID0g
RlRMX05FV19CTE9DSyhtX291dCwgKCJEb3VibGUgdW5ib3hpbmcgaW50IGNhc2UiKSk7CisgICAg
ICAgICAgICBMQmFzaWNCbG9jayBkb3VibGVDYXNlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJE
b3VibGUgdW5ib3hpbmcgZG91YmxlIGNhc2UiKSk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBj
b250aW51YXRpb24gPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkRvdWJsZSB1bmJveGluZyBjb250
aW51YXRpb24iKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc05v
dEludDMyKGJveGVkUmVzdWx0KSwgZG91YmxlQ2FzZSwgaW50Q2FzZSk7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaW50Q2Fz
ZSwgZG91YmxlQ2FzZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIExWYWx1ZSBpbnRUb0Rv
dWJsZSA9IG1fb3V0LmludFRvRG91YmxlKHVuYm94SW50MzIoYm94ZWRSZXN1bHQpKTsKKyAgICAg
ICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oZG91YmxlQ2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCisgICAgICAgICAgICAgICAganNWYWx1ZVZh
bHVlKGJveGVkUmVzdWx0KSwgZWRnZSwgU3BlY051bWJlciwgaXNDZWxsT3JNaXNjKGJveGVkUmVz
dWx0KSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkRG91YmxlID0g
dW5ib3hEb3VibGUoYm94ZWRSZXN1bHQpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOworICAgICAgICAgICAgCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51
YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTFZhbHVlIHJlc3Vs
dCA9IG1fb3V0LnBoaSgKKyAgICAgICAgICAgICAgICBtX291dC5kb3VibGVUeXBlLCBpbnRUb0Rv
dWJsZSwgaW50Q2FzZSwgdW5ib3hlZERvdWJsZSwgZG91YmxlQ2FzZSk7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIG1fZG91YmxlVmFsdWVzLmFkZChlZGdlLm5vZGUoKSwgcmVzdWx0KTsKKyAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCEobV9zdGF0ZS5mb3JOb2RlKGVkZ2UpLm1fdHlwZSAmIFNwZWNOdW1iZXIp
KTsKKyAgICAgICAgdGVybWluYXRlKFVuY291bnRhYmxlKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0
LmRvdWJsZVplcm87CisgICAgfQorICAgIAogICAgIExWYWx1ZSBsb3dKU1ZhbHVlKEVkZ2UgZWRn
ZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0
aW9uKQogICAgIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKQEAgLTEw
NjEsNiArMTE3OCwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICAgICAgfQogICAgICAgICAKKyAgICAgICAgaWYgKExWYWx1ZSB1bmJveGVkUmVzdWx0ID0gbV9k
b3VibGVWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKSkgeworICAgICAgICAgICAgTFZhbHVlIHJlc3Vs
dCA9IGJveERvdWJsZSh1bmJveGVkUmVzdWx0KTsKKyAgICAgICAgICAgIG1fanNWYWx1ZVZhbHVl
cy5hZGQoZWRnZS5ub2RlKCksIHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICB9CisgICAgICAgIAogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0xMDg4LDYgKzEyMTEsMTkgQEAgcHJpdmF0
ZToKICAgICAgICAgcmV0dXJuIG1fb3V0LmFkZChtX291dC56ZXJvRXh0KHZhbHVlLCBtX291dC5p
bnQ2NCksIG1fdGFnVHlwZU51bWJlcik7CiAgICAgfQogICAgIAorICAgIExWYWx1ZSBpc0NlbGxP
ck1pc2MoTFZhbHVlIGpzVmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gbV9vdXQudGVzdElz
WmVybzY0KGpzVmFsdWUsIG1fdGFnVHlwZU51bWJlcik7CisgICAgfQorICAgIExWYWx1ZSB1bmJv
eERvdWJsZShMVmFsdWUganNWYWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBtX291dC5iaXRD
YXN0KG1fb3V0LmFkZChqc1ZhbHVlLCBtX3RhZ1R5cGVOdW1iZXIpLCBtX291dC5kb3VibGVUeXBl
KTsKKyAgICB9CisgICAgTFZhbHVlIGJveERvdWJsZShMVmFsdWUgZG91YmxlVmFsdWUpCisgICAg
eworICAgICAgICByZXR1cm4gbV9vdXQuc3ViKG1fb3V0LmJpdENhc3QoZG91YmxlVmFsdWUsIG1f
b3V0LmludDY0KSwgbV90YWdUeXBlTnVtYmVyKTsKKyAgICB9CisgICAgCiAgICAgTFZhbHVlIGlz
Tm90Q2VsbChMVmFsdWUganNWYWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBtX291dC50ZXN0
Tm9uWmVybzY0KGpzVmFsdWUsIG1fdGFnTWFzayk7CkBAIC0xMTE3LDYgKzEyNTMsNyBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIFVudHlwZWRVc2U6CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBLbm93bkludDMyVXNlOgorICAgICAgICBjYXNlIEtub3duTnVtYmVyVXNlOgogICAg
ICAgICAgICAgQVNTRVJUKCFtX3N0YXRlLm5lZWRzVHlwZUNoZWNrKGVkZ2UpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIEludDMyVXNlOgpAQCAtMTEzMSw2ICsxMjY4LDEyIEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgT2JqZWN0VXNlOgogICAgICAgICAgICAgc3BlY3VsYXRl
T2JqZWN0KGVkZ2UpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUmVhbE51bWJl
clVzZToKKyAgICAgICAgICAgIHNwZWN1bGF0ZVJlYWxOdW1iZXIoZWRnZSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBOdW1iZXJVc2U6CisgICAgICAgICAgICBzcGVjdWxhdGVO
dW1iZXIoZWRnZSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KQEAgLTExNjUs
NiArMTMwOCwyNyBAQCBwcml2YXRlOgogICAgICAgICBzcGVjdWxhdGVPYmplY3QoZWRnZSwgbG93
Q2VsbChlZGdlKSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgc3BlY3VsYXRlTnVtYmVyKEVkZ2Ug
ZWRnZSkKKyAgICB7CisgICAgICAgIC8vIERvIGFuIGVhcmx5IHJldHVybiBoZXJlIGJlY2F1c2Ug
bG93RG91YmxlKCkgY2FuIGNyZWF0ZSBhIGxvdCBvZiBjb250cm9sIGZsb3cuCisgICAgICAgIGlm
ICghbV9zdGF0ZS5uZWVkc1R5cGVDaGVjayhlZGdlKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgCisgICAgICAgIGxvd0RvdWJsZShlZGdlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBz
cGVjdWxhdGVSZWFsTnVtYmVyKEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAgIC8vIERvIGFuIGVh
cmx5IHJldHVybiBoZXJlIGJlY2F1c2UgbG93RG91YmxlKCkgY2FuIGNyZWF0ZSBhIGxvdCBvZiBj
b250cm9sIGZsb3cuCisgICAgICAgIGlmICghbV9zdGF0ZS5uZWVkc1R5cGVDaGVjayhlZGdlKSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxv
d0RvdWJsZShlZGdlKTsKKyAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCisgICAgICAgICAgICBkb3Vi
bGVWYWx1ZSh2YWx1ZSksIGVkZ2UsIFNwZWNSZWFsTnVtYmVyLAorICAgICAgICAgICAgbV9vdXQu
ZG91YmxlTm90RXF1YWxPclVub3JkZXJlZCh2YWx1ZSwgdmFsdWUpKTsKKyAgICB9CisgICAgCiAg
ICAgYm9vbCBpc0xpdmUoTm9kZSogbm9kZSkKICAgICB7CiAgICAgICAgIEhhc2hNYXA8Tm9kZSos
IHVuc2lnbmVkPjo6aXRlcmF0b3IgaXRlciA9IG1fdGltZVRvTGl2ZS5maW5kKG5vZGUpOwpAQCAt
MTMxNSw5ICsxNDc5LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgZXhpdCwgYXJn
dW1lbnRzLCBpLCBWYWx1ZUZvcm1hdEJvb2xlYW4sIG1fb3V0LmdldChtX2xvY2Fsc0Jvb2xlYW5b
aV0pKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRG91YmxlSW5M
b2NhbHM6Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBkb3VibGVzIGluIEZU
TC4KLSAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTEzNjI0Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgICAgICAgICBhZGRFeGl0QXJndW1lbnQoCisgICAgICAgICAgICAgICAgICAg
IGV4aXQsIGFyZ3VtZW50cywgaSwgVmFsdWVGb3JtYXREb3VibGUsIG1fb3V0LmdldChtX2xvY2Fs
c0RvdWJsZVtpXSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBB
cmd1bWVudHNTb3VyY2U6CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBQaGFu
dG9tQXJndW1lbnRzLgpAQCAtMTQ1NCw4ICsxNjE3LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgZG91YmxlcyBpbiB0aGUgRlRMLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTEzNjI0CisgICAgICAgIGlmIChMVmFsdWUgcmVzdWx0ID0gbV9k
b3VibGVWYWx1ZXMuZ2V0KG5vZGUpKSB7CisgICAgICAgICAgICBhZGRFeGl0QXJndW1lbnQoZXhp
dCwgYXJndW1lbnRzLCBpbmRleCwgVmFsdWVGb3JtYXREb3VibGUsIHJlc3VsdCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIH0KICAgICAKQEAgLTE2MDAsMTEgKzE3NjYsMTMgQEAgcHJpdmF0ZToKICAg
ICBIYXNoTWFwPE5vZGUqLCBMVmFsdWU+IG1fanNWYWx1ZVZhbHVlczsKICAgICBIYXNoTWFwPE5v
ZGUqLCBMVmFsdWU+IG1fYm9vbGVhblZhbHVlczsKICAgICBIYXNoTWFwPE5vZGUqLCBMVmFsdWU+
IG1fc3RvcmFnZVZhbHVlczsKKyAgICBIYXNoTWFwPE5vZGUqLCBMVmFsdWU+IG1fZG91YmxlVmFs
dWVzOwogICAgIEhhc2hNYXA8Tm9kZSosIHVuc2lnbmVkPiBtX3RpbWVUb0xpdmU7CiAgICAgCiAg
ICAgT3BlcmFuZHM8TFZhbHVlPiBtX2xvY2Fsc0Jvb2xlYW47CiAgICAgT3BlcmFuZHM8TFZhbHVl
PiBtX2xvY2FsczMyOwogICAgIE9wZXJhbmRzPExWYWx1ZT4gbV9sb2NhbHM2NDsKKyAgICBPcGVy
YW5kczxMVmFsdWU+IG1fbG9jYWxzRG91YmxlOwogICAgIAogICAgIE9wZXJhbmRzPFZhbHVlU291
cmNlPiBtX3ZhbHVlU291cmNlczsKICAgICBpbnQgbV9sYXN0U2V0T3BlcmFuZDsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAkocmV2aXNpb24gMTQ5MjM5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA5
LDExICsxMDksMjggQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgTFZh
bHVlIGNvbnN0SW50UHRyKFQgdmFsdWUpIHsgcmV0dXJuIGNvbnN0SW50KGludFB0ciwgYml0d2lz
ZV9jYXN0PGludHB0cl90Pih2YWx1ZSksIFNpZ25FeHRlbmQpOyB9CiAgICAgTFZhbHVlIGNvbnN0
SW50NjQoaW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gY29uc3RJbnQoaW50NjQsIHZhbHVlLCBTaWdu
RXh0ZW5kKTsgfQorICAgIExWYWx1ZSBjb25zdERvdWJsZShkb3VibGUgdmFsdWUpIHsgcmV0dXJu
IGNvbnN0UmVhbChkb3VibGVUeXBlLCB2YWx1ZSk7IH0KKyAgICAKKyAgICBMVmFsdWUgcGhpKExU
eXBlIHR5cGUpIHsgcmV0dXJuIGJ1aWxkUGhpKG1fYnVpbGRlciwgdHlwZSk7IH0KKyAgICBMVmFs
dWUgcGhpKExUeXBlIHR5cGUsIExWYWx1ZSB2YWx1ZTEsIExCYXNpY0Jsb2NrIGJsb2NrMSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBidWlsZFBoaShtX2J1aWxkZXIsIHR5cGUsIHZhbHVlMSwgYmxv
Y2sxKTsKKyAgICB9CisgICAgTFZhbHVlIHBoaShMVHlwZSB0eXBlLCBMVmFsdWUgdmFsdWUxLCBM
QmFzaWNCbG9jayBibG9jazEsIExWYWx1ZSB2YWx1ZTIsIExCYXNpY0Jsb2NrIGJsb2NrMikKKyAg
ICB7CisgICAgICAgIHJldHVybiBidWlsZFBoaShtX2J1aWxkZXIsIHR5cGUsIHZhbHVlMSwgYmxv
Y2sxLCB2YWx1ZTIsIGJsb2NrMik7CisgICAgfQogICAgIAogICAgIExWYWx1ZSBhZGQoTFZhbHVl
IGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gYnVpbGRBZGQobV9idWlsZGVyLCBsZWZ0LCBy
aWdodCk7IH0KICAgICBMVmFsdWUgc3ViKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0
dXJuIGJ1aWxkU3ViKG1fYnVpbGRlciwgbGVmdCwgcmlnaHQpOyB9CiAgICAgTFZhbHVlIG11bChM
VmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBidWlsZE11bChtX2J1aWxkZXIsIGxl
ZnQsIHJpZ2h0KTsgfQogICAgIExWYWx1ZSBuZWcoTFZhbHVlIHZhbHVlKSB7IHJldHVybiBidWls
ZE5lZyhtX2J1aWxkZXIsIHZhbHVlKTsgfQorCisgICAgTFZhbHVlIGRvdWJsZUFkZChMVmFsdWUg
bGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBidWlsZEZBZGQobV9idWlsZGVyLCBsZWZ0LCBy
aWdodCk7IH0KKyAgICBMVmFsdWUgZG91YmxlU3ViKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQp
IHsgcmV0dXJuIGJ1aWxkRlN1YihtX2J1aWxkZXIsIGxlZnQsIHJpZ2h0KTsgfQorICAgIExWYWx1
ZSBkb3VibGVNdWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gYnVpbGRGTXVs
KG1fYnVpbGRlciwgbGVmdCwgcmlnaHQpOyB9CisgICAgTFZhbHVlIGRvdWJsZU5lZyhMVmFsdWUg
dmFsdWUpIHsgcmV0dXJuIGJ1aWxkRk5lZyhtX2J1aWxkZXIsIHZhbHVlKTsgfQorCiAgICAgTFZh
bHVlIGJpdEFuZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBidWlsZEFuZCht
X2J1aWxkZXIsIGxlZnQsIHJpZ2h0KTsgfQogICAgIExWYWx1ZSBiaXRPcihMVmFsdWUgbGVmdCwg
TFZhbHVlIHJpZ2h0KSB7IHJldHVybiBidWlsZE9yKG1fYnVpbGRlciwgbGVmdCwgcmlnaHQpOyB9
CiAgICAgTFZhbHVlIGJpdFhvcihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBi
dWlsZFhvcihtX2J1aWxkZXIsIGxlZnQsIHJpZ2h0KTsgfQpAQCAtMTM1LDkgKzE1MiwxNCBAQCBw
dWJsaWM6CiAgICAgfQogICAgIAogICAgIExWYWx1ZSB6ZXJvRXh0KExWYWx1ZSB2YWx1ZSwgTFR5
cGUgdHlwZSkgeyByZXR1cm4gYnVpbGRaRXh0KG1fYnVpbGRlciwgdmFsdWUsIHR5cGUpOyB9Cisg
ICAgTFZhbHVlIGludFRvRlAoTFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBlKSB7IHJldHVybiBidWls
ZFNJVG9GUChtX2J1aWxkZXIsIHZhbHVlLCB0eXBlKTsgfQorICAgIExWYWx1ZSBpbnRUb0RvdWJs
ZShMVmFsdWUgdmFsdWUpIHsgcmV0dXJuIGludFRvRlAodmFsdWUsIGRvdWJsZVR5cGUpOyB9Cisg
ICAgTFZhbHVlIHVuc2lnbmVkVG9GUChMVmFsdWUgdmFsdWUsIExUeXBlIHR5cGUpIHsgcmV0dXJu
IGJ1aWxkVUlUb0ZQKG1fYnVpbGRlciwgdmFsdWUsIHR5cGUpOyB9CisgICAgTFZhbHVlIHVuc2ln
bmVkVG9Eb3VibGUoTFZhbHVlIHZhbHVlKSB7IHJldHVybiB1bnNpZ25lZFRvRlAodmFsdWUsIGRv
dWJsZVR5cGUpOyB9CiAgICAgTFZhbHVlIGludENhc3QoTFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBl
KSB7IHJldHVybiBidWlsZEludENhc3QobV9idWlsZGVyLCB2YWx1ZSwgdHlwZSk7IH0KICAgICBM
VmFsdWUgY2FzdFRvSW50MzIoTFZhbHVlIHZhbHVlKSB7IHJldHVybiBpbnRDYXN0KHZhbHVlLCBp
bnQzMik7IH0KICAgICBMVmFsdWUgaW50VG9QdHIoTFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBlKSB7
IHJldHVybiBidWlsZEludFRvUHRyKG1fYnVpbGRlciwgdmFsdWUsIHR5cGUpOyB9CisgICAgTFZh
bHVlIGJpdENhc3QoTFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBlKSB7IHJldHVybiBidWlsZEJpdENh
c3QobV9idWlsZGVyLCB2YWx1ZSwgdHlwZSk7IH0KICAgICAKICAgICBMVmFsdWUgZ2V0KExWYWx1
ZSByZWZlcmVuY2UpIHsgcmV0dXJuIGJ1aWxkTG9hZChtX2J1aWxkZXIsIHJlZmVyZW5jZSk7IH0K
ICAgICBMVmFsdWUgc2V0KExWYWx1ZSB2YWx1ZSwgTFZhbHVlIHJlZmVyZW5jZSkgeyByZXR1cm4g
YnVpbGRTdG9yZShtX2J1aWxkZXIsIHZhbHVlLCByZWZlcmVuY2UpOyB9CkBAIC0xNTcsOSArMTc5
LDExIEBAIHB1YmxpYzoKICAgICBMVmFsdWUgbG9hZDMyKFR5cGVkUG9pbnRlciBwb2ludGVyKSB7
IHJldHVybiBsb2FkKHBvaW50ZXIsIHJlZjMyKTsgfQogICAgIExWYWx1ZSBsb2FkNjQoVHlwZWRQ
b2ludGVyIHBvaW50ZXIpIHsgcmV0dXJuIGxvYWQocG9pbnRlciwgcmVmNjQpOyB9CiAgICAgTFZh
bHVlIGxvYWRQdHIoVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgcmV0dXJuIGxvYWQocG9pbnRlciwg
cmVmUHRyKTsgfQorICAgIExWYWx1ZSBsb2FkRG91YmxlKFR5cGVkUG9pbnRlciBwb2ludGVyKSB7
IHJldHVybiBsb2FkKHBvaW50ZXIsIHJlZkRvdWJsZSk7IH0KICAgICB2b2lkIHN0b3JlMzIoTFZh
bHVlIHZhbHVlLCBUeXBlZFBvaW50ZXIgcG9pbnRlcikgeyBzdG9yZSh2YWx1ZSwgcG9pbnRlciwg
cmVmMzIpOyB9CiAgICAgdm9pZCBzdG9yZTY0KExWYWx1ZSB2YWx1ZSwgVHlwZWRQb2ludGVyIHBv
aW50ZXIpIHsgc3RvcmUodmFsdWUsIHBvaW50ZXIsIHJlZjY0KTsgfQogICAgIHZvaWQgc3RvcmVQ
dHIoTFZhbHVlIHZhbHVlLCBUeXBlZFBvaW50ZXIgcG9pbnRlcikgeyBzdG9yZSh2YWx1ZSwgcG9p
bnRlciwgcmVmUHRyKTsgfQorICAgIHZvaWQgc3RvcmVEb3VibGUoTFZhbHVlIHZhbHVlLCBUeXBl
ZFBvaW50ZXIgcG9pbnRlcikgeyBzdG9yZSh2YWx1ZSwgcG9pbnRlciwgcmVmRG91YmxlKTsgfQog
CiAgICAgTFZhbHVlIGFkZFB0cihMVmFsdWUgdmFsdWUsIHB0cmRpZmZfdCBpbW1lZGlhdGUgPSAw
KQogICAgIHsKQEAgLTIzOSw5ICsyNjMsMjMgQEAgcHVibGljOgogICAgIExWYWx1ZSBsZXNzVGhh
bihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBidWlsZElDbXAobV9idWlsZGVy
LCBMTFZNSW50U0xULCBsZWZ0LCByaWdodCk7IH0KICAgICBMVmFsdWUgbGVzc1RoYW5PckVxdWFs
KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIGJ1aWxkSUNtcChtX2J1aWxkZXIs
IExMVk1JbnRTTEUsIGxlZnQsIHJpZ2h0KTsgfQogICAgIAorICAgIExWYWx1ZSBkb3VibGVFcXVh
bChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBidWlsZEZDbXAobV9idWlsZGVy
LCBMTFZNUmVhbE9FUSwgbGVmdCwgcmlnaHQpOyB9CisgICAgTFZhbHVlIGRvdWJsZU5vdEVxdWFs
T3JVbm9yZGVyZWQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gYnVpbGRGQ21w
KG1fYnVpbGRlciwgTExWTVJlYWxVTkUsIGxlZnQsIHJpZ2h0KTsgfQorICAgIExWYWx1ZSBkb3Vi
bGVMZXNzVGhhbihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBidWlsZEZDbXAo
bV9idWlsZGVyLCBMTFZNUmVhbE9MVCwgbGVmdCwgcmlnaHQpOyB9CisgICAgTFZhbHVlIGRvdWJs
ZUxlc3NUaGFuT3JFcXVhbChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBidWls
ZEZDbXAobV9idWlsZGVyLCBMTFZNUmVhbE9MRSwgbGVmdCwgcmlnaHQpOyB9CisgICAgTFZhbHVl
IGRvdWJsZUdyZWF0ZXJUaGFuKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIGJ1
aWxkRkNtcChtX2J1aWxkZXIsIExMVk1SZWFsT0dULCBsZWZ0LCByaWdodCk7IH0KKyAgICBMVmFs
dWUgZG91YmxlR3JlYXRlclRoYW5PckVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsg
cmV0dXJuIGJ1aWxkRkNtcChtX2J1aWxkZXIsIExMVk1SZWFsT0dFLCBsZWZ0LCByaWdodCk7IH0K
KyAgICBMVmFsdWUgZG91YmxlRXF1YWxPclVub3JkZXJlZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJp
Z2h0KSB7IHJldHVybiBidWlsZEZDbXAobV9idWlsZGVyLCBMTFZNUmVhbFVFUSwgbGVmdCwgcmln
aHQpOyB9CisgICAgTFZhbHVlIGRvdWJsZU5vdEVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmln
aHQpIHsgcmV0dXJuIGJ1aWxkRkNtcChtX2J1aWxkZXIsIExMVk1SZWFsT05FLCBsZWZ0LCByaWdo
dCk7IH0KKyAgICBMVmFsdWUgZG91YmxlTGVzc1RoYW5PclVub3JkZXJlZChMVmFsdWUgbGVmdCwg
TFZhbHVlIHJpZ2h0KSB7IHJldHVybiBidWlsZEZDbXAobV9idWlsZGVyLCBMTFZNUmVhbFVMVCwg
bGVmdCwgcmlnaHQpOyB9CisgICAgTFZhbHVlIGRvdWJsZUxlc3NUaGFuT3JFcXVhbE9yVW5vcmRl
cmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIGJ1aWxkRkNtcChtX2J1aWxk
ZXIsIExMVk1SZWFsVUxFLCBsZWZ0LCByaWdodCk7IH0KKyAgICBMVmFsdWUgZG91YmxlR3JlYXRl
clRoYW5PclVub3JkZXJlZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBidWls
ZEZDbXAobV9idWlsZGVyLCBMTFZNUmVhbFVHVCwgbGVmdCwgcmlnaHQpOyB9CisgICAgTFZhbHVl
IGRvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbE9yVW5vcmRlcmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUg
cmlnaHQpIHsgcmV0dXJuIGJ1aWxkRkNtcChtX2J1aWxkZXIsIExMVk1SZWFsVUdFLCBsZWZ0LCBy
aWdodCk7IH0KKyAgICAKICAgICBMVmFsdWUgaXNaZXJvNjQoTFZhbHVlIHZhbHVlKSB7IHJldHVy
biBlcXVhbCh2YWx1ZSwgaW50NjRaZXJvKTsgfQogICAgIExWYWx1ZSBub3RaZXJvNjQoTFZhbHVl
IHZhbHVlKSB7IHJldHVybiBub3RFcXVhbCh2YWx1ZSwgaW50NjRaZXJvKTsgfQogICAgIAorICAg
IExWYWx1ZSB0ZXN0SXNaZXJvNjQoTFZhbHVlIHZhbHVlLCBMVmFsdWUgbWFzaykgeyByZXR1cm4g
aXNaZXJvNjQoYml0QW5kKHZhbHVlLCBtYXNrKSk7IH0KICAgICBMVmFsdWUgdGVzdE5vblplcm82
NChMVmFsdWUgdmFsdWUsIExWYWx1ZSBtYXNrKSB7IHJldHVybiBub3RaZXJvNjQoYml0QW5kKHZh
bHVlLCBtYXNrKSk7IH0KICAgICAKICAgICBMVmFsdWUgc2VsZWN0KExWYWx1ZSB2YWx1ZSwgTFZh
bHVlIHRha2VuLCBMVmFsdWUgbm90VGFrZW4pIHsgcmV0dXJuIGJ1aWxkU2VsZWN0KG1fYnVpbGRl
ciwgdmFsdWUsIHRha2VuLCBub3RUYWtlbik7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199921</attachid>
            <date>2013-04-27 16:12:08 -0700</date>
            <delta_ts>2013-04-27 17:44:01 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>33774</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ5MjQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg3IEBA
CisyMDEzLTA0LTI3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RlRMIHNob3VsZCBzdXBwb3J0IGRvdWJsZSB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzYyNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgTWFkZSBhbGwgb2YgdGhlIG9wZXJh
dGlvbnMgdGhhdCB0aGUgRlRMIGFscmVhZHkgc3VwcG9ydHMsIGFsc28gc3VwcG9ydCBkb3VibGVz
LgorICAgICAgICBPU1IgZXhpdCBhbHJlYWR5IGJhc2ljYWxseSBoYWQgZXZlcnl0aGluZyBpdCBu
ZWVkZWQsIHNvIG5vIGNoYW5nZXMgdGhlcmUuIFRoaXMKKyAgICAgICAgbW9zdGx5IGp1c3QgZ2x1
ZXMgdG9nZXRoZXIgYml0cyBvZiBERkcgSVIgdG8gTExWTSBJUiwgaW4gYSBzdHJhaWdodC1mb3J3
YXJkIHdheS4KKworICAgICAgICAqIGZ0bC9GVExBYmJyZXZpYXRpb25zLmg6CisgICAgICAgIChG
VEwpOgorICAgICAgICAoSlNDOjpGVEw6OmRvdWJsZVR5cGUpOgorICAgICAgICAoSlNDOjpGVEw6
OmNvbnN0UmVhbCk6CisgICAgICAgIChKU0M6OkZUTDo6YnVpbGRQaGkpOgorICAgICAgICAoSlND
OjpGVEw6OmFkZEluY29taW5nKToKKyAgICAgICAgKEpTQzo6RlRMOjpidWlsZEZBZGQpOgorICAg
ICAgICAoSlNDOjpGVEw6OmJ1aWxkRlN1Yik6CisgICAgICAgIChKU0M6OkZUTDo6YnVpbGRGTXVs
KToKKyAgICAgICAgKEpTQzo6RlRMOjpidWlsZEZOZWcpOgorICAgICAgICAoSlNDOjpGVEw6OmJ1
aWxkU0lUb0ZQKToKKyAgICAgICAgKEpTQzo6RlRMOjpidWlsZFVJVG9GUCk6CisgICAgICAgIChK
U0M6OkZUTDo6YnVpbGRCaXRDYXN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpidWlsZEZDbXApOgor
ICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNh
bkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExDb21tb25WYWx1ZXMuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6OkNvbW1vblZhbHVlczo6Q29tbW9uVmFsdWVzKToKKyAgICAgICAgKiBmdGwvRlRM
Q29tbW9uVmFsdWVzLmg6CisgICAgICAgIChDb21tb25WYWx1ZXMpOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
Okxvd2VyREZHVG9MTFZNKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6bG93
ZXIpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlR2V0TG9jYWwp
OgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlU2V0TG9jYWwpOgor
ICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQWRkKToKKyAgICAgICAg
KEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFyaXRoU3ViKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFyaXRoTXVsKToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFyaXRoTmVnYXRlKToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVVJbnQzMlRvTnVtYmVyKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNvbXBhcmVFcSk6CisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVDb21wYXJlTGVzcyk6CisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06Omxvd0RvdWJsZSk6CisgICAgICAgIChMb3dlckRGR1RvTExWTSk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06Omxvd0pTVmFsdWUpOgorICAgICAg
ICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjppc0NlbGxPck1pc2MpOgorICAgICAgICAoSlND
OjpGVEw6Okxvd2VyREZHVG9MTFZNOjp1bmJveERvdWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6
TG93ZXJERkdUb0xMVk06OmJveERvdWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdU
b0xMVk06OnNwZWN1bGF0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnNw
ZWN1bGF0ZU51bWJlcik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnNwZWN1
bGF0ZVJlYWxOdW1iZXIpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjphcHBl
bmRPU1JFeGl0KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6YWRkRXhpdEFy
Z3VtZW50Rm9yTm9kZSk6CisgICAgICAgICogZnRsL0ZUTE91dHB1dC5oOgorICAgICAgICAoSlND
OjpGVEw6Ok91dHB1dDo6Y29uc3REb3VibGUpOgorICAgICAgICAoT3V0cHV0KToKKyAgICAgICAg
KEpTQzo6RlRMOjpPdXRwdXQ6OnBoaSk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3Vi
bGVBZGQpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlU3ViKToKKyAgICAgICAg
KEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZU11bCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0
Ojpkb3VibGVOZWcpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6aW50VG9GUCk6CisgICAg
ICAgIChKU0M6OkZUTDo6T3V0cHV0OjppbnRUb0RvdWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6
T3V0cHV0Ojp1bnNpZ25lZFRvRlApOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6dW5zaWdu
ZWRUb0RvdWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpiaXRDYXN0KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmxvYWREb3VibGUpOgorICAgICAgICAoSlNDOjpGVEw6Ok91
dHB1dDo6c3RvcmVEb3VibGUpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlRXF1
YWwpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlTm90RXF1YWxPclVub3JkZXJl
ZCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVMZXNzVGhhbik6CisgICAgICAg
IChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVMZXNzVGhhbk9yRXF1YWwpOgorICAgICAgICAoSlND
OjpGVEw6Ok91dHB1dDo6ZG91YmxlR3JlYXRlclRoYW4pOgorICAgICAgICAoSlNDOjpGVEw6Ok91
dHB1dDo6ZG91YmxlR3JlYXRlclRoYW5PckVxdWFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRw
dXQ6OmRvdWJsZUVxdWFsT3JVbm9yZGVyZWQpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6
ZG91YmxlTm90RXF1YWwpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlTGVzc1Ro
YW5PclVub3JkZXJlZCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVMZXNzVGhh
bk9yRXF1YWxPclVub3JkZXJlZCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVH
cmVhdGVyVGhhbk9yVW5vcmRlcmVkKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJs
ZUdyZWF0ZXJUaGFuT3JFcXVhbE9yVW5vcmRlcmVkKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRw
dXQ6OnRlc3RJc1plcm82NCk6CisKIDIwMTMtMDQtMjYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFw
cGxlLmNvbT4KIAogICAgICAgICBmb3VydGhUaWVyOiBXYXRjaHBvaW50U2V0IHNob3VsZCBtYWtl
IHJhY3kgdXNlcyBlYXNpZXIgdG8gcmVhc29uIGFib3V0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEFiYnJldmlhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEFiYnJldmlhdGlvbnMuaAkocmV2aXNpb24gMTQ5MjM5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYmJyZXZpYXRpb25zLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDYgKzQ3LDcgQEAgdHlwZWRlZiBMTFZNQmFzaWNCbG9ja1JlZiBMQmFzaWNCbG9jazsK
IHR5cGVkZWYgTExWTUJ1aWxkZXJSZWYgTEJ1aWxkZXI7CiB0eXBlZGVmIExMVk1DYWxsQ29udiBM
Q2FsbENvbnY7CiB0eXBlZGVmIExMVk1JbnRQcmVkaWNhdGUgTEludFByZWRpY2F0ZTsKK3R5cGVk
ZWYgTExWTVJlYWxQcmVkaWNhdGUgTFJlYWxQcmVkaWNhdGU7CiB0eXBlZGVmIExMVk1MaW5rYWdl
IExMaW5rYWdlOwogdHlwZWRlZiBMTFZNTW9kdWxlUmVmIExNb2R1bGU7CiB0eXBlZGVmIExMVk1U
eXBlUmVmIExUeXBlOwpAQCAtNTcsNiArNTgsNyBAQCBzdGF0aWMgaW5saW5lIExUeXBlIGludDFU
eXBlKCkgeyByZXR1cm4gCiBzdGF0aWMgaW5saW5lIExUeXBlIGludDMyVHlwZSgpIHsgcmV0dXJu
IExMVk1JbnQzMlR5cGUoKTsgfQogc3RhdGljIGlubGluZSBMVHlwZSBpbnQ2NFR5cGUoKSB7IHJl
dHVybiBMTFZNSW50NjRUeXBlKCk7IH0KIHN0YXRpYyBpbmxpbmUgTFR5cGUgaW50UHRyVHlwZSgp
IHsgcmV0dXJuIExMVk1JbnQ2NFR5cGUoKTsgfQorc3RhdGljIGlubGluZSBMVHlwZSBkb3VibGVU
eXBlKCkgeyByZXR1cm4gTExWTURvdWJsZVR5cGUoKTsgfQogCiBzdGF0aWMgaW5saW5lIExUeXBl
IHBvaW50ZXJUeXBlKExUeXBlIHR5cGUpIHsgcmV0dXJuIExMVk1Qb2ludGVyVHlwZSh0eXBlLCAw
KTsgfQogCkBAIC0xMzQsMTcgKzEzNiw1OCBAQCBzdGF0aWMgaW5saW5lIExWYWx1ZSBnZXRQYXJh
bShMVmFsdWUgZnVuCiAKIGVudW0gQml0RXh0ZW5zaW9uIHsgWmVyb0V4dGVuZCwgU2lnbkV4dGVu
ZCB9Owogc3RhdGljIGlubGluZSBMVmFsdWUgY29uc3RJbnQoTFR5cGUgdHlwZSwgdW5zaWduZWQg
bG9uZyBsb25nIHZhbHVlLCBCaXRFeHRlbnNpb24gZXh0ZW5zaW9uKSB7IHJldHVybiBMTFZNQ29u
c3RJbnQodHlwZSwgdmFsdWUsIGV4dGVuc2lvbiA9PSBTaWduRXh0ZW5kKTsgfQorc3RhdGljIGlu
bGluZSBMVmFsdWUgY29uc3RSZWFsKExUeXBlIHR5cGUsIGRvdWJsZSB2YWx1ZSkgeyByZXR1cm4g
TExWTUNvbnN0UmVhbCh0eXBlLCB2YWx1ZSk7IH0KIHN0YXRpYyBpbmxpbmUgTFZhbHVlIGNvbnN0
SW50VG9QdHIoTFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBlKSB7IHJldHVybiBMTFZNQ29uc3RJbnRU
b1B0cih2YWx1ZSwgdHlwZSk7IH0KIHN0YXRpYyBpbmxpbmUgTFZhbHVlIGNvbnN0Qml0Q2FzdChM
VmFsdWUgdmFsdWUsIExUeXBlIHR5cGUpIHsgcmV0dXJuIExMVk1Db25zdEJpdENhc3QodmFsdWUs
IHR5cGUpOyB9CiAKIHN0YXRpYyBpbmxpbmUgTEJhc2ljQmxvY2sgYXBwZW5kQmFzaWNCbG9jayhM
VmFsdWUgZnVuY3Rpb24sIGNvbnN0IGNoYXIqIG5hbWUgPSAiIikgeyByZXR1cm4gTExWTUFwcGVu
ZEJhc2ljQmxvY2soZnVuY3Rpb24sIG5hbWUpOyB9CiBzdGF0aWMgaW5saW5lIExCYXNpY0Jsb2Nr
IGluc2VydEJhc2ljQmxvY2soTEJhc2ljQmxvY2sgYmVmb3JlQmFzaWNCbG9jaywgY29uc3QgY2hh
ciogbmFtZSA9ICIiKSB7IHJldHVybiBMTFZNSW5zZXJ0QmFzaWNCbG9jayhiZWZvcmVCYXNpY0Js
b2NrLCBuYW1lKTsgfQogCitzdGF0aWMgaW5saW5lIExWYWx1ZSBidWlsZFBoaShMQnVpbGRlciBi
dWlsZGVyLCBMVHlwZSB0eXBlKSB7IHJldHVybiBMTFZNQnVpbGRQaGkoYnVpbGRlciwgdHlwZSwg
IiIpOyB9CitzdGF0aWMgaW5saW5lIHZvaWQgYWRkSW5jb21pbmcoTFZhbHVlIHBoaSwgY29uc3Qg
TFZhbHVlKiB2YWx1ZXMsIGNvbnN0IExCYXNpY0Jsb2NrKiBibG9ja3MsIHVuc2lnbmVkIG51bVBy
ZWRlY2Vzc29ycykKK3sKKyAgICBMTFZNQWRkSW5jb21pbmcocGhpLCBjb25zdF9jYXN0PExWYWx1
ZSo+KHZhbHVlcyksIGNvbnN0X2Nhc3Q8TEJhc2ljQmxvY2sqPihibG9ja3MpLCBudW1QcmVkZWNl
c3NvcnMpOworfQordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVWZWN0b3JUeXBlLCB0eXBlbmFtZSBC
bG9ja1ZlY3RvclR5cGU+CitzdGF0aWMgaW5saW5lIHZvaWQgYWRkSW5jb21pbmcoTFZhbHVlIHBo
aSwgY29uc3QgVmFsdWVWZWN0b3JUeXBlJiB2YWx1ZXMsIGNvbnN0IEJsb2NrVmVjdG9yVHlwZSYg
YmxvY2tzKQoreworICAgIEFTU0VSVCh2YWx1ZXMuc2l6ZSgpID09IGJsb2Nrcy5zaXplKCkpOwor
ICAgIGFkZEluY29taW5nKHBoaSwgdmFsdWVzLmJlZ2luKCksIGJsb2Nrcy5iZWdpbigpLCB2YWx1
ZXMuc2l6ZSgpKTsKK30KK3N0YXRpYyBpbmxpbmUgdm9pZCBhZGRJbmNvbWluZyhMVmFsdWUgcGhp
LCBMVmFsdWUgdmFsdWUxLCBMQmFzaWNCbG9jayBibG9jazEpCit7CisgICAgYWRkSW5jb21pbmco
cGhpLCAmdmFsdWUxLCAmYmxvY2sxLCAxKTsKK30KK3N0YXRpYyBpbmxpbmUgdm9pZCBhZGRJbmNv
bWluZyhMVmFsdWUgcGhpLCBMVmFsdWUgdmFsdWUxLCBMQmFzaWNCbG9jayBibG9jazEsIExWYWx1
ZSB2YWx1ZTIsIExCYXNpY0Jsb2NrIGJsb2NrMikKK3sKKyAgICBMVmFsdWUgdmFsdWVzW10gPSB7
IHZhbHVlMSwgdmFsdWUyIH07CisgICAgTEJhc2ljQmxvY2sgYmxvY2tzW10gPSB7IGJsb2NrMSwg
YmxvY2syIH07CisgICAgYWRkSW5jb21pbmcocGhpLCB2YWx1ZXMsIGJsb2NrcywgMik7Cit9Citz
dGF0aWMgaW5saW5lIExWYWx1ZSBidWlsZFBoaShMQnVpbGRlciBidWlsZGVyLCBMVHlwZSB0eXBl
LCBMVmFsdWUgdmFsdWUxLCBMQmFzaWNCbG9jayBibG9jazEpCit7CisgICAgTFZhbHVlIHJlc3Vs
dCA9IGJ1aWxkUGhpKGJ1aWxkZXIsIHR5cGUpOworICAgIGFkZEluY29taW5nKHJlc3VsdCwgdmFs
dWUxLCBibG9jazEpOworICAgIHJldHVybiByZXN1bHQ7Cit9CitzdGF0aWMgaW5saW5lIExWYWx1
ZSBidWlsZFBoaSgKKyAgICBMQnVpbGRlciBidWlsZGVyLCBMVHlwZSB0eXBlLCBMVmFsdWUgdmFs
dWUxLCBMQmFzaWNCbG9jayBibG9jazEsIExWYWx1ZSB2YWx1ZTIsCisgICAgTEJhc2ljQmxvY2sg
YmxvY2syKQoreworICAgIExWYWx1ZSByZXN1bHQgPSBidWlsZFBoaShidWlsZGVyLCB0eXBlKTsK
KyAgICBhZGRJbmNvbWluZyhyZXN1bHQsIHZhbHVlMSwgYmxvY2sxLCB2YWx1ZTIsIGJsb2NrMik7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRBbGxv
Y2EoTEJ1aWxkZXIgYnVpbGRlciwgTFR5cGUgdHlwZSkgeyByZXR1cm4gTExWTUJ1aWxkQWxsb2Nh
KGJ1aWxkZXIsIHR5cGUsICIiKTsgfQogc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRBZGQoTEJ1
aWxkZXIgYnVpbGRlciwgTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gTExWTUJ1
aWxkQWRkKGJ1aWxkZXIsIGxlZnQsIHJpZ2h0LCAiIik7IH0KIHN0YXRpYyBpbmxpbmUgTFZhbHVl
IGJ1aWxkU3ViKExCdWlsZGVyIGJ1aWxkZXIsIExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsg
cmV0dXJuIExMVk1CdWlsZFN1YihidWlsZGVyLCBsZWZ0LCByaWdodCwgIiIpOyB9CiBzdGF0aWMg
aW5saW5lIExWYWx1ZSBidWlsZE11bChMQnVpbGRlciBidWlsZGVyLCBMVmFsdWUgbGVmdCwgTFZh
bHVlIHJpZ2h0KSB7IHJldHVybiBMTFZNQnVpbGRNdWwoYnVpbGRlciwgbGVmdCwgcmlnaHQsICIi
KTsgfQogc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGROZWcoTEJ1aWxkZXIgYnVpbGRlciwgTFZh
bHVlIHZhbHVlKSB7IHJldHVybiBMTFZNQnVpbGROZWcoYnVpbGRlciwgdmFsdWUsICIiKTsgfQor
c3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRGQWRkKExCdWlsZGVyIGJ1aWxkZXIsIExWYWx1ZSBs
ZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIExMVk1CdWlsZEZBZGQoYnVpbGRlciwgbGVmdCwg
cmlnaHQsICIiKTsgfQorc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRGU3ViKExCdWlsZGVyIGJ1
aWxkZXIsIExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIExMVk1CdWlsZEZTdWIo
YnVpbGRlciwgbGVmdCwgcmlnaHQsICIiKTsgfQorc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRG
TXVsKExCdWlsZGVyIGJ1aWxkZXIsIExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJu
IExMVk1CdWlsZEZNdWwoYnVpbGRlciwgbGVmdCwgcmlnaHQsICIiKTsgfQorc3RhdGljIGlubGlu
ZSBMVmFsdWUgYnVpbGRGTmVnKExCdWlsZGVyIGJ1aWxkZXIsIExWYWx1ZSB2YWx1ZSkgeyByZXR1
cm4gTExWTUJ1aWxkRk5lZyhidWlsZGVyLCB2YWx1ZSwgIiIpOyB9CiBzdGF0aWMgaW5saW5lIExW
YWx1ZSBidWlsZEFuZChMQnVpbGRlciBidWlsZGVyLCBMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0
KSB7IHJldHVybiBMTFZNQnVpbGRBbmQoYnVpbGRlciwgbGVmdCwgcmlnaHQsICIiKTsgfQogc3Rh
dGljIGlubGluZSBMVmFsdWUgYnVpbGRPcihMQnVpbGRlciBidWlsZGVyLCBMVmFsdWUgbGVmdCwg
TFZhbHVlIHJpZ2h0KSB7IHJldHVybiBMTFZNQnVpbGRPcihidWlsZGVyLCBsZWZ0LCByaWdodCwg
IiIpOyB9CiBzdGF0aWMgaW5saW5lIExWYWx1ZSBidWlsZFhvcihMQnVpbGRlciBidWlsZGVyLCBM
VmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBMTFZNQnVpbGRYb3IoYnVpbGRlciwg
bGVmdCwgcmlnaHQsICIiKTsgfQpAQCAtMTU0LDEwICsxOTcsMTQgQEAgc3RhdGljIGlubGluZSBM
VmFsdWUgYnVpbGRMU2hyKExCdWlsZGVyIAogc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRMb2Fk
KExCdWlsZGVyIGJ1aWxkZXIsIExWYWx1ZSBwb2ludGVyKSB7IHJldHVybiBMTFZNQnVpbGRMb2Fk
KGJ1aWxkZXIsIHBvaW50ZXIsICIiKTsgfQogc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRTdG9y
ZShMQnVpbGRlciBidWlsZGVyLCBMVmFsdWUgdmFsdWUsIExWYWx1ZSBwb2ludGVyKSB7IHJldHVy
biBMTFZNQnVpbGRTdG9yZShidWlsZGVyLCB2YWx1ZSwgcG9pbnRlcik7IH0KIHN0YXRpYyBpbmxp
bmUgTFZhbHVlIGJ1aWxkWkV4dChMQnVpbGRlciBidWlsZGVyLCBMVmFsdWUgdmFsdWUsIExUeXBl
IHR5cGUpIHsgcmV0dXJuIExMVk1CdWlsZFpFeHQoYnVpbGRlciwgdmFsdWUsIHR5cGUsICIiKTsg
fQorc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRTSVRvRlAoTEJ1aWxkZXIgYnVpbGRlciwgTFZh
bHVlIHZhbHVlLCBMVHlwZSB0eXBlKSB7IHJldHVybiBMTFZNQnVpbGRTSVRvRlAoYnVpbGRlciwg
dmFsdWUsIHR5cGUsICIiKTsgfQorc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRVSVRvRlAoTEJ1
aWxkZXIgYnVpbGRlciwgTFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBlKSB7IHJldHVybiBMTFZNQnVp
bGRVSVRvRlAoYnVpbGRlciwgdmFsdWUsIHR5cGUsICIiKTsgfQogc3RhdGljIGlubGluZSBMVmFs
dWUgYnVpbGRJbnRDYXN0KExCdWlsZGVyIGJ1aWxkZXIsIExWYWx1ZSB2YWx1ZSwgTFR5cGUgdHlw
ZSkgeyByZXR1cm4gTExWTUJ1aWxkSW50Q2FzdChidWlsZGVyLCB2YWx1ZSwgdHlwZSwgIiIpOyB9
CiBzdGF0aWMgaW5saW5lIExWYWx1ZSBidWlsZEludFRvUHRyKExCdWlsZGVyIGJ1aWxkZXIsIExW
YWx1ZSB2YWx1ZSwgTFR5cGUgdHlwZSkgeyByZXR1cm4gTExWTUJ1aWxkSW50VG9QdHIoYnVpbGRl
ciwgdmFsdWUsIHR5cGUsICIiKTsgfQogc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRQdHJUb0lu
dChMQnVpbGRlciBidWlsZGVyLCBMVmFsdWUgdmFsdWUsIExUeXBlIHR5cGUpIHsgcmV0dXJuIExM
Vk1CdWlsZFB0clRvSW50KGJ1aWxkZXIsIHZhbHVlLCB0eXBlLCAiIik7IH0KK3N0YXRpYyBpbmxp
bmUgTFZhbHVlIGJ1aWxkQml0Q2FzdChMQnVpbGRlciBidWlsZGVyLCBMVmFsdWUgdmFsdWUsIExU
eXBlIHR5cGUpIHsgcmV0dXJuIExMVk1CdWlsZEJpdENhc3QoYnVpbGRlciwgdmFsdWUsIHR5cGUs
ICIiKTsgfQogc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRJQ21wKExCdWlsZGVyIGJ1aWxkZXIs
IExJbnRQcmVkaWNhdGUgY29uZCwgTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4g
TExWTUJ1aWxkSUNtcChidWlsZGVyLCBjb25kLCBsZWZ0LCByaWdodCwgIiIpOyB9CitzdGF0aWMg
aW5saW5lIExWYWx1ZSBidWlsZEZDbXAoTEJ1aWxkZXIgYnVpbGRlciwgTFJlYWxQcmVkaWNhdGUg
Y29uZCwgTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gTExWTUJ1aWxkRkNtcChi
dWlsZGVyLCBjb25kLCBsZWZ0LCByaWdodCwgIiIpOyB9CiBzdGF0aWMgaW5saW5lIExWYWx1ZSBi
dWlsZENhbGwoTEJ1aWxkZXIgYnVpbGRlciwgTFZhbHVlIGZ1bmN0aW9uLCBjb25zdCBMVmFsdWUq
IGFyZ3MsIHVuc2lnbmVkIG51bUFyZ3MpCiB7CiAgICAgcmV0dXJuIExMVk1CdWlsZENhbGwoYnVp
bGRlciwgZnVuY3Rpb24sIGNvbnN0X2Nhc3Q8TFZhbHVlKj4oYXJncyksIG51bUFyZ3MsICIiKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJ
KHJldmlzaW9uIDE0OTIzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsOSBAQCBib29sIGNhbkNvbXBp
bGUoR3JhcGgmIGdyYXBoKQogICAgICAgICAgICAgICAgIGNhc2UgVW50eXBlZFVzZToKICAgICAg
ICAgICAgICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICAgICAgICAgIGNhc2UgS25vd25JbnQz
MlVzZToKKyAgICAgICAgICAgICAgICBjYXNlIE51bWJlclVzZToKKyAgICAgICAgICAgICAgICBj
YXNlIEtub3duTnVtYmVyVXNlOgorICAgICAgICAgICAgICAgIGNhc2UgUmVhbE51bWJlclVzZToK
ICAgICAgICAgICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBD
ZWxsVXNlOgogICAgICAgICAgICAgICAgIGNhc2UgS25vd25DZWxsVXNlOgpAQCAtOTAsMjIgKzkz
LDEzIEBAIGJvb2wgY2FuQ29tcGlsZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgICAgICBjYXNlIFB1
dEJ5T2Zmc2V0OgogICAgICAgICAgICAgY2FzZSBHZXRHbG9iYWxWYXI6CiAgICAgICAgICAgICBj
YXNlIFB1dEdsb2JhbFZhcjoKLSAgICAgICAgICAgICAgICAvLyBUaGVzZSBhcmUgT0suCi0gICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFZhbHVlQWRkOgogICAgICAgICAg
ICAgY2FzZSBBcml0aEFkZDoKICAgICAgICAgICAgIGNhc2UgQXJpdGhTdWI6CiAgICAgICAgICAg
ICBjYXNlIEFyaXRoTXVsOgotICAgICAgICAgICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5k
KCkgPT0gSW50MzJVc2UpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGNhc2UgQXJpdGhOZWdhdGU6Ci0gICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBJbnQzMlVzZSkKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgY2FzZSBVSW50MzJUb051bWJlcjoKLSAgICAgICAgICAgICAgICBpZiAoIW5vZGVD
YW5TcGVjdWxhdGVJbnRlZ2VyKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgLy8gVGhlc2UgYXJlIE9LLgog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoK
ICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgewpAQCAt
MTIwLDYgKzExNCw3IEBAIGJvb2wgY2FuQ29tcGlsZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgICAg
ICBjYXNlIEdldEJ5VmFsOgogICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+YXJyYXlNb2Rl
KCkudHlwZSgpKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50MzI6CisgICAgICAg
ICAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgogICAgICAgICAgICAgICAgIGNhc2UgQXJyYXk6
OkNvbnRpZ3VvdXM6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IGRlZmF1bHQ6CkBAIC0xMzYsMTIgKzEzMSwxNiBAQCBib29sIGNhbkNvbXBpbGUoR3JhcGgmIGdy
YXBoKQogICAgICAgICAgICAgY2FzZSBDb21wYXJlRXE6CiAgICAgICAgICAgICAgICAgaWYgKG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNlKSkK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmlz
QmluYXJ5VXNlS2luZChPYmplY3RVc2UpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBjYXNlIENvbXBhcmVMZXNz
OgogICAgICAgICAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJVc2UpKQog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKE51bWJlclVzZSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGNhc2UgQnJhbmNoOgogICAg
ICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQm9vbGVhblVzZSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5jcHAJ
KHJldmlzaW9uIDE0OTIzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9u
VmFsdWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYsMTEgQEAgQ29tbW9uVmFsdWVz
OjpDb21tb25WYWx1ZXMoKQogICAgICwgaW50MzIoaW50MzJUeXBlKCkpCiAgICAgLCBpbnQ2NChp
bnQ2NFR5cGUoKSkKICAgICAsIGludFB0cihpbnRQdHJUeXBlKCkpCisgICAgLCBkb3VibGVUeXBl
KEZUTDo6ZG91YmxlVHlwZSgpKQogICAgICwgcmVmMzIocG9pbnRlclR5cGUoaW50MzIpKQogICAg
ICwgcmVmNjQocG9pbnRlclR5cGUoaW50NjQpKQogICAgICwgcmVmUHRyKHBvaW50ZXJUeXBlKGlu
dFB0cikpCisgICAgLCByZWZEb3VibGUocG9pbnRlclR5cGUoZG91YmxlVHlwZSkpCiAgICAgLCBi
b29sZWFuVHJ1ZShjb25zdEludChib29sZWFuLCB0cnVlLCBaZXJvRXh0ZW5kKSkKICAgICAsIGJv
b2xlYW5GYWxzZShjb25zdEludChib29sZWFuLCBmYWxzZSwgWmVyb0V4dGVuZCkpCiAgICAgLCBp
bnQzMlplcm8oY29uc3RJbnQoaW50MzIsIDAsIFNpZ25FeHRlbmQpKQpAQCAtNTAsNiArNTIsNyBA
QCBDb21tb25WYWx1ZXM6OkNvbW1vblZhbHVlcygpCiAgICAgLCBpbnRQdHJGb3VyKGNvbnN0SW50
KGludFB0ciwgNCwgU2lnbkV4dGVuZCkpCiAgICAgLCBpbnRQdHJFaWdodChjb25zdEludChpbnRQ
dHIsIDgsIFNpZ25FeHRlbmQpKQogICAgICwgaW50UHRyUHRyKGNvbnN0SW50KGludFB0ciwgc2l6
ZW9mKHZvaWQqKSwgU2lnbkV4dGVuZCkpCisgICAgLCBkb3VibGVaZXJvKGNvbnN0UmVhbChkb3Vi
bGVUeXBlLCAwKSkKICAgICAsIG1fbW9kdWxlKDApCiB7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmgJKHJldmlzaW9uIDE0OTIzOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDkgKzQ4LDExIEBAIHB1YmxpYzoKICAgICBjb25zdCBMVHlwZSBpbnQzMjsKICAgICBj
b25zdCBMVHlwZSBpbnQ2NDsKICAgICBjb25zdCBMVHlwZSBpbnRQdHI7CisgICAgY29uc3QgTFR5
cGUgZG91YmxlVHlwZTsKICAgICBjb25zdCBMVHlwZSByZWYzMjsKICAgICBjb25zdCBMVHlwZSBy
ZWY2NDsKICAgICBjb25zdCBMVHlwZSByZWZQdHI7CisgICAgY29uc3QgTFR5cGUgcmVmRG91Ymxl
OwogICAgIGNvbnN0IExWYWx1ZSBib29sZWFuVHJ1ZTsKICAgICBjb25zdCBMVmFsdWUgYm9vbGVh
bkZhbHNlOwogICAgIGNvbnN0IExWYWx1ZSBpbnQzMlplcm87CkBAIC02Miw2ICs2NCw3IEBAIHB1
YmxpYzoKICAgICBjb25zdCBMVmFsdWUgaW50UHRyRm91cjsKICAgICBjb25zdCBMVmFsdWUgaW50
UHRyRWlnaHQ7CiAgICAgY29uc3QgTFZhbHVlIGludFB0clB0cjsKKyAgICBjb25zdCBMVmFsdWUg
ZG91YmxlWmVybzsKICAgICAKICAgICBMTW9kdWxlIG1fbW9kdWxlOwogfTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lv
biAxNDkyMzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZN
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQCBwdWJsaWM6CiAgICAgICAgICwg
bV9sb2NhbHNCb29sZWFuKE9wZXJhbmRzTGlrZSwgc3RhdGUuZ3JhcGgubV9ibG9ja3NbMF0tPnZh
cmlhYmxlc0F0SGVhZCkKICAgICAgICAgLCBtX2xvY2FsczMyKE9wZXJhbmRzTGlrZSwgc3RhdGUu
Z3JhcGgubV9ibG9ja3NbMF0tPnZhcmlhYmxlc0F0SGVhZCkKICAgICAgICAgLCBtX2xvY2FsczY0
KE9wZXJhbmRzTGlrZSwgc3RhdGUuZ3JhcGgubV9ibG9ja3NbMF0tPnZhcmlhYmxlc0F0SGVhZCkK
KyAgICAgICAgLCBtX2xvY2Fsc0RvdWJsZShPcGVyYW5kc0xpa2UsIHN0YXRlLmdyYXBoLm1fYmxv
Y2tzWzBdLT52YXJpYWJsZXNBdEhlYWQpCiAgICAgICAgICwgbV92YWx1ZVNvdXJjZXMoT3BlcmFu
ZHNMaWtlLCBzdGF0ZS5ncmFwaC5tX2Jsb2Nrc1swXS0+dmFyaWFibGVzQXRIZWFkKQogICAgICAg
ICAsIG1fbGFzdFNldE9wZXJhbmQoc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSkKICAg
ICAgICAgLCBtX2V4aXRUaHVua0dlbmVyYXRvcihzdGF0ZSkKQEAgLTg2LDYgKzg3LDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgbV9sb2NhbHNCb29sZWFuW2luZGV4XSA9IGJ1aWxkQWxsb2NhKG1f
b3V0Lm1fYnVpbGRlciwgbV9vdXQuYm9vbGVhbik7CiAgICAgICAgICAgICBtX2xvY2FsczMyW2lu
ZGV4XSA9IGJ1aWxkQWxsb2NhKG1fb3V0Lm1fYnVpbGRlciwgbV9vdXQuaW50MzIpOwogICAgICAg
ICAgICAgbV9sb2NhbHM2NFtpbmRleF0gPSBidWlsZEFsbG9jYShtX291dC5tX2J1aWxkZXIsIG1f
b3V0LmludDY0KTsKKyAgICAgICAgICAgIG1fbG9jYWxzRG91YmxlW2luZGV4XSA9IGJ1aWxkQWxs
b2NhKG1fb3V0Lm1fYnVpbGRlciwgbV9vdXQuZG91YmxlVHlwZSk7CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIG1faW5pdGlhbGl6YXRpb24gPSBhcHBlbmRCYXNpY0Jsb2NrKG1fZnRsU3Rh
dGUuZnVuY3Rpb24pOwpAQCAtNDIyLDkgKzQyNCw4IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAg
ICAgICBpZiAodmFyaWFibGUtPnNob3VsZFVuYm94SWZQb3NzaWJsZSgpKSB7CiAgICAgICAgICAg
ICBpZiAodmFyaWFibGUtPnNob3VsZFVzZURvdWJsZUZvcm1hdCgpKSB7Ci0gICAgICAgICAgICAg
ICAgLy8gRklYTUU6IGltcGxlbWVudCBkb3VibGVzIGluIEZUTC4KLSAgICAgICAgICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzNjI0Ci0gICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICBt
X2RvdWJsZVZhbHVlcy5hZGQobV9ub2RlLCBtX291dC5nZXQobV9sb2NhbHNEb3VibGUub3BlcmFu
ZCh2YXJpYWJsZS0+bG9jYWwoKSkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIExvY2FscyB0aGF0IGFyZSBtYXJr
ZWQgc2hvdWxkVW5ib3hJZlBvc3NpYmxlKCkgdGhhdCBhcmVuJ3QgYWxzbyBmb3JjZWQgdG8KQEAg
LTQ1Niw5ICs0NTcsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIGlmICh2YXJpYWJs
ZS0+c2hvdWxkVW5ib3hJZlBvc3NpYmxlKCkpIHsKICAgICAgICAgICAgIGlmICh2YXJpYWJsZS0+
c2hvdWxkVXNlRG91YmxlRm9ybWF0KCkpIHsKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogaW1w
bGVtZW50IGRvdWJsZXMgaW4gRlRMLgotICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM2MjQKLSAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxv
d0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBtX291dC5zZXQodmFs
dWUsIG1fbG9jYWxzRG91YmxlLm9wZXJhbmQodmFyaWFibGUtPmxvY2FsKCkpKTsKKyAgICAgICAg
ICAgICAgICBpZiAobmVlZHNGbHVzaGluZykgeworICAgICAgICAgICAgICAgICAgICBtX291dC5z
dG9yZURvdWJsZSh2YWx1ZSwgYWRkcmVzc0Zvcih2YXJpYWJsZS0+bG9jYWwoKSkpOworICAgICAg
ICAgICAgICAgICAgICBtX3ZhbHVlU291cmNlcy5vcGVyYW5kKHZhcmlhYmxlLT5sb2NhbCgpKSA9
IFZhbHVlU291cmNlKERvdWJsZUluSlNTdGFjayk7CisgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNTUyLDYg
KzU1NiwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgICAgIAorICAgICAgICBjYXNlIE51bWJlclVzZTogeworICAgICAgICAgICAgbV9kb3VibGVW
YWx1ZXMuYWRkKAorICAgICAgICAgICAgICAgIG1fbm9kZSwKKyAgICAgICAgICAgICAgICBtX291
dC5kb3VibGVBZGQobG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dEb3VibGUobV9ub2Rl
LT5jaGlsZDIoKSkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAg
ICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTU3Niw2ICs1ODcsMTMgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAgY2Fz
ZSBOdW1iZXJVc2U6IHsKKyAgICAgICAgICAgIG1fZG91YmxlVmFsdWVzLmFkZCgKKyAgICAgICAg
ICAgICAgICBtX25vZGUsCisgICAgICAgICAgICAgICAgbV9vdXQuZG91YmxlU3ViKGxvd0RvdWJs
ZShtX25vZGUtPmNoaWxkMSgpKSwgbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAg
YnJlYWs7CkBAIC02MTMsNiArNjMxLDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICAgICAgCisgICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAg
ICAgICAgICBtX2RvdWJsZVZhbHVlcy5hZGQoCisgICAgICAgICAgICAgICAgbV9ub2RlLAorICAg
ICAgICAgICAgICAgIG1fb3V0LmRvdWJsZU11bChsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSks
IGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMigpKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjQwLDYgKzY2
NSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
ICAgIAorICAgICAgICBjYXNlIE51bWJlclVzZTogeworICAgICAgICAgICAgbV9kb3VibGVWYWx1
ZXMuYWRkKG1fbm9kZSwgbV9vdXQuZG91YmxlTmVnKGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgp
KSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtNjkzLDE1ICs3MjMsMTMgQEAgcHJpdmF0ZToKICAgICAKICAg
ICB2b2lkIGNvbXBpbGVVSW50MzJUb051bWJlcigpCiAgICAgeworICAgICAgICBMVmFsdWUgdmFs
dWUgPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKwogICAgICAgICBpZiAoIW5vZGVDYW5T
cGVjdWxhdGVJbnRlZ2VyKG1fbm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpIHsKLSAgICAgICAgICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQgZG91YmxlcyBpbiBGVEwuCi0gICAgICAgICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzNjI0Ci0gICAgICAgICAgICAK
LSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBt
X2RvdWJsZVZhbHVlcy5hZGQobV9ub2RlLCBtX291dC51bnNpZ25lZFRvRG91YmxlKHZhbHVlKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIExWYWx1
ZSB2YWx1ZSA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBzcGVjdWxhdGVG
b3J3YXJkKAogICAgICAgICAgICAgT3ZlcmZsb3csIG5vVmFsdWUoKSwgMCwgbV9vdXQubGVzc1Ro
YW4odmFsdWUsIG1fb3V0LmludDMyWmVybyksCiAgICAgICAgICAgICBGb3JtYXR0ZWRWYWx1ZShW
YWx1ZUZvcm1hdFVJbnQzMiwgdmFsdWUpKTsKQEAgLTgyMSw2ICs4NDksMzYgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAgY2Fz
ZSBBcnJheTo6RG91YmxlOiB7CisgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS5p
c0luQm91bmRzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS5p
c1NhbmVDaGFpbigpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
c3RydWN0dXJlIHRyYW5zaXRpb24gd2F0Y2hwb2ludHMuCisgICAgICAgICAgICAgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM2NDcKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGUoCisgICAg
ICAgICAgICAgICAgICAgIE91dE9mQm91bmRzLCBub1ZhbHVlKCksIDAsCisgICAgICAgICAgICAg
ICAgICAgIG1fb3V0LmFib3ZlT3JFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4
LCBtX291dC5sb2FkMzIoc3RvcmFnZSwgbV9oZWFwcy5CdXR0ZXJmbHlfcHVibGljTGVuZ3RoKSkp
OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291
dC5sb2FkRG91YmxlKG1fb3V0LmJhc2VJbmRleCgKKyAgICAgICAgICAgICAgICAgICAgbV9oZWFw
cy5pbmRleGVkRG91YmxlUHJvcGVydGllcywKKyAgICAgICAgICAgICAgICAgICAgc3RvcmFnZSwg
bV9vdXQuemVyb0V4dChpbmRleCwgbV9vdXQuaW50UHRyKSwKKyAgICAgICAgICAgICAgICAgICAg
bV9zdGF0ZS5mb3JOb2RlKG1fbm9kZS0+Y2hpbGQyKCkpLm1fdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBpZiAoIW1fbm9kZS0+YXJyYXlNb2RlKCkuaXNTYW5lQ2hh
aW4oKSkgeworICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGUoCisgICAgICAgICAgICAgICAg
ICAgICAgICBMb2FkRnJvbUhvbGUsIG5vVmFsdWUoKSwgMCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1fb3V0LmRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQocmVzdWx0LCByZXN1bHQpKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbV9kb3VibGVWYWx1ZXMuYWRkKG1fbm9k
ZSwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTg3NCw2ICs5MzIsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KE51bWJlclVzZSkpIHsKKyAgICAgICAgICAgIG1fYm9vbGVhblZhbHVlcy5hZGQoCisgICAgICAg
ICAgICAgICAgbV9ub2RlLAorICAgICAgICAgICAgICAgIG1fb3V0LmRvdWJsZUVxdWFsKGxvd0Rv
dWJsZShtX25vZGUtPmNoaWxkMSgpKSwgbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQyKCkpKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChP
YmplY3RVc2UpKSB7CiAgICAgICAgICAgICBtX2Jvb2xlYW5WYWx1ZXMuYWRkKAogICAgICAgICAg
ICAgICAgIG1fbm9kZSwKQEAgLTg5Myw2ICs5NTcsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKE51bWJlclVzZSkpIHsKKyAgICAgICAgICAgIG1fYm9vbGVhblZhbHVlcy5hZGQo
CisgICAgICAgICAgICAgICAgbV9ub2RlLAorICAgICAgICAgICAgICAgIG1fb3V0LmRvdWJsZUxl
c3NUaGFuKGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSwgbG93RG91YmxlKG1fbm9kZS0+Y2hp
bGQyKCkpKSk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgfQogICAgIApAQCAtMTA0Miw2ICsxMTEyLDU3IEBAIHByaXZhdGU6
CiAgICAgICAgIHJldHVybiBtX291dC5ib29sZWFuRmFsc2U7CiAgICAgfQogICAgIAorICAgIExW
YWx1ZSBsb3dEb3VibGUoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBB
dXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VE
KG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGlzRG91YmxlKGVkZ2Uu
dXNlS2luZCgpKSk7CisgICAgICAgIAorICAgICAgICBpZiAoTFZhbHVlIHJlc3VsdCA9IG1fZG91
YmxlVmFsdWVzLmdldChlZGdlLm5vZGUoKSkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICAKKyAgICAgICAgaWYgKExWYWx1ZSBpbnRSZXN1bHQgPSBtX2ludDMyVmFsdWVzLmdl
dChlZGdlLm5vZGUoKSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5pbnRU
b0RvdWJsZShpbnRSZXN1bHQpOworICAgICAgICAgICAgbV9kb3VibGVWYWx1ZXMuYWRkKGVkZ2Uu
bm9kZSgpLCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgaWYgKExWYWx1ZSBib3hlZFJlc3VsdCA9IG1fanNWYWx1ZVZhbHVl
cy5nZXQoZWRnZS5ub2RlKCkpKSB7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBpbnRDYXNlID0g
RlRMX05FV19CTE9DSyhtX291dCwgKCJEb3VibGUgdW5ib3hpbmcgaW50IGNhc2UiKSk7CisgICAg
ICAgICAgICBMQmFzaWNCbG9jayBkb3VibGVDYXNlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJE
b3VibGUgdW5ib3hpbmcgZG91YmxlIGNhc2UiKSk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBj
b250aW51YXRpb24gPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkRvdWJsZSB1bmJveGluZyBjb250
aW51YXRpb24iKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc05v
dEludDMyKGJveGVkUmVzdWx0KSwgZG91YmxlQ2FzZSwgaW50Q2FzZSk7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaW50Q2Fz
ZSwgZG91YmxlQ2FzZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIExWYWx1ZSBpbnRUb0Rv
dWJsZSA9IG1fb3V0LmludFRvRG91YmxlKHVuYm94SW50MzIoYm94ZWRSZXN1bHQpKTsKKyAgICAg
ICAgICAgIExCYXNpY0Jsb2NrIGludFRvRG91YmxlQmxvY2sgPSBtX291dC5tX2Jsb2NrOworICAg
ICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhkb3VibGVDYXNlLCBjb250aW51YXRpb24pOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBGVExfVFlQRV9DSEVDSygKKyAgICAgICAgICAgICAgICBqc1ZhbHVl
VmFsdWUoYm94ZWRSZXN1bHQpLCBlZGdlLCBTcGVjTnVtYmVyLCBpc0NlbGxPck1pc2MoYm94ZWRS
ZXN1bHQpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWREb3VibGUg
PSB1bmJveERvdWJsZShib3hlZFJlc3VsdCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayB1bmJv
eGVkRG91YmxlQmxvY2sgPSBtX291dC5tX2Jsb2NrOworICAgICAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOworICAgICAgICAgICAgCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhj
b250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTFZhbHVl
IHJlc3VsdCA9IG1fb3V0LnBoaSgKKyAgICAgICAgICAgICAgICBtX291dC5kb3VibGVUeXBlLAor
ICAgICAgICAgICAgICAgIGludFRvRG91YmxlLCBpbnRUb0RvdWJsZUJsb2NrLAorICAgICAgICAg
ICAgICAgIHVuYm94ZWREb3VibGUsIHVuYm94ZWREb3VibGVCbG9jayk7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIG1fZG91YmxlVmFsdWVzLmFkZChlZGdlLm5vZGUoKSwgcmVzdWx0KTsKKyAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCEobV9zdGF0ZS5mb3JOb2RlKGVkZ2UpLm1fdHlwZSAmIFNwZWNOdW1iZXIp
KTsKKyAgICAgICAgdGVybWluYXRlKFVuY291bnRhYmxlKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0
LmRvdWJsZVplcm87CisgICAgfQorICAgIAogICAgIExWYWx1ZSBsb3dKU1ZhbHVlKEVkZ2UgZWRn
ZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0
aW9uKQogICAgIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKQEAgLTEw
NjEsNiArMTE4MiwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICAgICAgfQogICAgICAgICAKKyAgICAgICAgaWYgKExWYWx1ZSB1bmJveGVkUmVzdWx0ID0gbV9k
b3VibGVWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKSkgeworICAgICAgICAgICAgTFZhbHVlIHJlc3Vs
dCA9IGJveERvdWJsZSh1bmJveGVkUmVzdWx0KTsKKyAgICAgICAgICAgIG1fanNWYWx1ZVZhbHVl
cy5hZGQoZWRnZS5ub2RlKCksIHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICB9CisgICAgICAgIAogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0xMDg4LDYgKzEyMTUsMTkgQEAgcHJpdmF0
ZToKICAgICAgICAgcmV0dXJuIG1fb3V0LmFkZChtX291dC56ZXJvRXh0KHZhbHVlLCBtX291dC5p
bnQ2NCksIG1fdGFnVHlwZU51bWJlcik7CiAgICAgfQogICAgIAorICAgIExWYWx1ZSBpc0NlbGxP
ck1pc2MoTFZhbHVlIGpzVmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gbV9vdXQudGVzdElz
WmVybzY0KGpzVmFsdWUsIG1fdGFnVHlwZU51bWJlcik7CisgICAgfQorICAgIExWYWx1ZSB1bmJv
eERvdWJsZShMVmFsdWUganNWYWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBtX291dC5iaXRD
YXN0KG1fb3V0LmFkZChqc1ZhbHVlLCBtX3RhZ1R5cGVOdW1iZXIpLCBtX291dC5kb3VibGVUeXBl
KTsKKyAgICB9CisgICAgTFZhbHVlIGJveERvdWJsZShMVmFsdWUgZG91YmxlVmFsdWUpCisgICAg
eworICAgICAgICByZXR1cm4gbV9vdXQuc3ViKG1fb3V0LmJpdENhc3QoZG91YmxlVmFsdWUsIG1f
b3V0LmludDY0KSwgbV90YWdUeXBlTnVtYmVyKTsKKyAgICB9CisgICAgCiAgICAgTFZhbHVlIGlz
Tm90Q2VsbChMVmFsdWUganNWYWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBtX291dC50ZXN0
Tm9uWmVybzY0KGpzVmFsdWUsIG1fdGFnTWFzayk7CkBAIC0xMTE3LDYgKzEyNTcsNyBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIFVudHlwZWRVc2U6CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBLbm93bkludDMyVXNlOgorICAgICAgICBjYXNlIEtub3duTnVtYmVyVXNlOgogICAg
ICAgICAgICAgQVNTRVJUKCFtX3N0YXRlLm5lZWRzVHlwZUNoZWNrKGVkZ2UpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIEludDMyVXNlOgpAQCAtMTEzMSw2ICsxMjcyLDEyIEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgT2JqZWN0VXNlOgogICAgICAgICAgICAgc3BlY3VsYXRl
T2JqZWN0KGVkZ2UpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUmVhbE51bWJl
clVzZToKKyAgICAgICAgICAgIHNwZWN1bGF0ZVJlYWxOdW1iZXIoZWRnZSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBOdW1iZXJVc2U6CisgICAgICAgICAgICBzcGVjdWxhdGVO
dW1iZXIoZWRnZSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KQEAgLTExNjUs
NiArMTMxMiwyNyBAQCBwcml2YXRlOgogICAgICAgICBzcGVjdWxhdGVPYmplY3QoZWRnZSwgbG93
Q2VsbChlZGdlKSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgc3BlY3VsYXRlTnVtYmVyKEVkZ2Ug
ZWRnZSkKKyAgICB7CisgICAgICAgIC8vIERvIGFuIGVhcmx5IHJldHVybiBoZXJlIGJlY2F1c2Ug
bG93RG91YmxlKCkgY2FuIGNyZWF0ZSBhIGxvdCBvZiBjb250cm9sIGZsb3cuCisgICAgICAgIGlm
ICghbV9zdGF0ZS5uZWVkc1R5cGVDaGVjayhlZGdlKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgCisgICAgICAgIGxvd0RvdWJsZShlZGdlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBz
cGVjdWxhdGVSZWFsTnVtYmVyKEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAgIC8vIERvIGFuIGVh
cmx5IHJldHVybiBoZXJlIGJlY2F1c2UgbG93RG91YmxlKCkgY2FuIGNyZWF0ZSBhIGxvdCBvZiBj
b250cm9sIGZsb3cuCisgICAgICAgIGlmICghbV9zdGF0ZS5uZWVkc1R5cGVDaGVjayhlZGdlKSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxv
d0RvdWJsZShlZGdlKTsKKyAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCisgICAgICAgICAgICBkb3Vi
bGVWYWx1ZSh2YWx1ZSksIGVkZ2UsIFNwZWNSZWFsTnVtYmVyLAorICAgICAgICAgICAgbV9vdXQu
ZG91YmxlTm90RXF1YWxPclVub3JkZXJlZCh2YWx1ZSwgdmFsdWUpKTsKKyAgICB9CisgICAgCiAg
ICAgYm9vbCBpc0xpdmUoTm9kZSogbm9kZSkKICAgICB7CiAgICAgICAgIEhhc2hNYXA8Tm9kZSos
IHVuc2lnbmVkPjo6aXRlcmF0b3IgaXRlciA9IG1fdGltZVRvTGl2ZS5maW5kKG5vZGUpOwpAQCAt
MTMxNSw5ICsxNDgzLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgZXhpdCwgYXJn
dW1lbnRzLCBpLCBWYWx1ZUZvcm1hdEJvb2xlYW4sIG1fb3V0LmdldChtX2xvY2Fsc0Jvb2xlYW5b
aV0pKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRG91YmxlSW5M
b2NhbHM6Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBkb3VibGVzIGluIEZU
TC4KLSAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTEzNjI0Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgICAgICAgICBhZGRFeGl0QXJndW1lbnQoCisgICAgICAgICAgICAgICAgICAg
IGV4aXQsIGFyZ3VtZW50cywgaSwgVmFsdWVGb3JtYXREb3VibGUsIG1fb3V0LmdldChtX2xvY2Fs
c0RvdWJsZVtpXSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBB
cmd1bWVudHNTb3VyY2U6CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBQaGFu
dG9tQXJndW1lbnRzLgpAQCAtMTQ1NCw4ICsxNjIxLDExIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgZG91YmxlcyBpbiB0aGUgRlRMLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTEzNjI0CisgICAgICAgIGlmIChMVmFsdWUgcmVzdWx0ID0gbV9k
b3VibGVWYWx1ZXMuZ2V0KG5vZGUpKSB7CisgICAgICAgICAgICBhZGRFeGl0QXJndW1lbnQoZXhp
dCwgYXJndW1lbnRzLCBpbmRleCwgVmFsdWVGb3JtYXREb3VibGUsIHJlc3VsdCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIH0KICAgICAKQEAgLTE2MDAsMTEgKzE3NzAsMTMgQEAgcHJpdmF0ZToKICAg
ICBIYXNoTWFwPE5vZGUqLCBMVmFsdWU+IG1fanNWYWx1ZVZhbHVlczsKICAgICBIYXNoTWFwPE5v
ZGUqLCBMVmFsdWU+IG1fYm9vbGVhblZhbHVlczsKICAgICBIYXNoTWFwPE5vZGUqLCBMVmFsdWU+
IG1fc3RvcmFnZVZhbHVlczsKKyAgICBIYXNoTWFwPE5vZGUqLCBMVmFsdWU+IG1fZG91YmxlVmFs
dWVzOwogICAgIEhhc2hNYXA8Tm9kZSosIHVuc2lnbmVkPiBtX3RpbWVUb0xpdmU7CiAgICAgCiAg
ICAgT3BlcmFuZHM8TFZhbHVlPiBtX2xvY2Fsc0Jvb2xlYW47CiAgICAgT3BlcmFuZHM8TFZhbHVl
PiBtX2xvY2FsczMyOwogICAgIE9wZXJhbmRzPExWYWx1ZT4gbV9sb2NhbHM2NDsKKyAgICBPcGVy
YW5kczxMVmFsdWU+IG1fbG9jYWxzRG91YmxlOwogICAgIAogICAgIE9wZXJhbmRzPFZhbHVlU291
cmNlPiBtX3ZhbHVlU291cmNlczsKICAgICBpbnQgbV9sYXN0U2V0T3BlcmFuZDsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAkocmV2aXNpb24gMTQ5MjM5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA5
LDExICsxMDksMjggQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgTFZh
bHVlIGNvbnN0SW50UHRyKFQgdmFsdWUpIHsgcmV0dXJuIGNvbnN0SW50KGludFB0ciwgYml0d2lz
ZV9jYXN0PGludHB0cl90Pih2YWx1ZSksIFNpZ25FeHRlbmQpOyB9CiAgICAgTFZhbHVlIGNvbnN0
SW50NjQoaW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gY29uc3RJbnQoaW50NjQsIHZhbHVlLCBTaWdu
RXh0ZW5kKTsgfQorICAgIExWYWx1ZSBjb25zdERvdWJsZShkb3VibGUgdmFsdWUpIHsgcmV0dXJu
IGNvbnN0UmVhbChkb3VibGVUeXBlLCB2YWx1ZSk7IH0KKyAgICAKKyAgICBMVmFsdWUgcGhpKExU
eXBlIHR5cGUpIHsgcmV0dXJuIGJ1aWxkUGhpKG1fYnVpbGRlciwgdHlwZSk7IH0KKyAgICBMVmFs
dWUgcGhpKExUeXBlIHR5cGUsIExWYWx1ZSB2YWx1ZTEsIExCYXNpY0Jsb2NrIGJsb2NrMSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBidWlsZFBoaShtX2J1aWxkZXIsIHR5cGUsIHZhbHVlMSwgYmxv
Y2sxKTsKKyAgICB9CisgICAgTFZhbHVlIHBoaShMVHlwZSB0eXBlLCBMVmFsdWUgdmFsdWUxLCBM
QmFzaWNCbG9jayBibG9jazEsIExWYWx1ZSB2YWx1ZTIsIExCYXNpY0Jsb2NrIGJsb2NrMikKKyAg
ICB7CisgICAgICAgIHJldHVybiBidWlsZFBoaShtX2J1aWxkZXIsIHR5cGUsIHZhbHVlMSwgYmxv
Y2sxLCB2YWx1ZTIsIGJsb2NrMik7CisgICAgfQogICAgIAogICAgIExWYWx1ZSBhZGQoTFZhbHVl
IGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gYnVpbGRBZGQobV9idWlsZGVyLCBsZWZ0LCBy
aWdodCk7IH0KICAgICBMVmFsdWUgc3ViKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0
dXJuIGJ1aWxkU3ViKG1fYnVpbGRlciwgbGVmdCwgcmlnaHQpOyB9CiAgICAgTFZhbHVlIG11bChM
VmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBidWlsZE11bChtX2J1aWxkZXIsIGxl
ZnQsIHJpZ2h0KTsgfQogICAgIExWYWx1ZSBuZWcoTFZhbHVlIHZhbHVlKSB7IHJldHVybiBidWls
ZE5lZyhtX2J1aWxkZXIsIHZhbHVlKTsgfQorCisgICAgTFZhbHVlIGRvdWJsZUFkZChMVmFsdWUg
bGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBidWlsZEZBZGQobV9idWlsZGVyLCBsZWZ0LCBy
aWdodCk7IH0KKyAgICBMVmFsdWUgZG91YmxlU3ViKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQp
IHsgcmV0dXJuIGJ1aWxkRlN1YihtX2J1aWxkZXIsIGxlZnQsIHJpZ2h0KTsgfQorICAgIExWYWx1
ZSBkb3VibGVNdWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gYnVpbGRGTXVs
KG1fYnVpbGRlciwgbGVmdCwgcmlnaHQpOyB9CisgICAgTFZhbHVlIGRvdWJsZU5lZyhMVmFsdWUg
dmFsdWUpIHsgcmV0dXJuIGJ1aWxkRk5lZyhtX2J1aWxkZXIsIHZhbHVlKTsgfQorCiAgICAgTFZh
bHVlIGJpdEFuZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBidWlsZEFuZCht
X2J1aWxkZXIsIGxlZnQsIHJpZ2h0KTsgfQogICAgIExWYWx1ZSBiaXRPcihMVmFsdWUgbGVmdCwg
TFZhbHVlIHJpZ2h0KSB7IHJldHVybiBidWlsZE9yKG1fYnVpbGRlciwgbGVmdCwgcmlnaHQpOyB9
CiAgICAgTFZhbHVlIGJpdFhvcihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBi
dWlsZFhvcihtX2J1aWxkZXIsIGxlZnQsIHJpZ2h0KTsgfQpAQCAtMTM1LDkgKzE1MiwxNCBAQCBw
dWJsaWM6CiAgICAgfQogICAgIAogICAgIExWYWx1ZSB6ZXJvRXh0KExWYWx1ZSB2YWx1ZSwgTFR5
cGUgdHlwZSkgeyByZXR1cm4gYnVpbGRaRXh0KG1fYnVpbGRlciwgdmFsdWUsIHR5cGUpOyB9Cisg
ICAgTFZhbHVlIGludFRvRlAoTFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBlKSB7IHJldHVybiBidWls
ZFNJVG9GUChtX2J1aWxkZXIsIHZhbHVlLCB0eXBlKTsgfQorICAgIExWYWx1ZSBpbnRUb0RvdWJs
ZShMVmFsdWUgdmFsdWUpIHsgcmV0dXJuIGludFRvRlAodmFsdWUsIGRvdWJsZVR5cGUpOyB9Cisg
ICAgTFZhbHVlIHVuc2lnbmVkVG9GUChMVmFsdWUgdmFsdWUsIExUeXBlIHR5cGUpIHsgcmV0dXJu
IGJ1aWxkVUlUb0ZQKG1fYnVpbGRlciwgdmFsdWUsIHR5cGUpOyB9CisgICAgTFZhbHVlIHVuc2ln
bmVkVG9Eb3VibGUoTFZhbHVlIHZhbHVlKSB7IHJldHVybiB1bnNpZ25lZFRvRlAodmFsdWUsIGRv
dWJsZVR5cGUpOyB9CiAgICAgTFZhbHVlIGludENhc3QoTFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBl
KSB7IHJldHVybiBidWlsZEludENhc3QobV9idWlsZGVyLCB2YWx1ZSwgdHlwZSk7IH0KICAgICBM
VmFsdWUgY2FzdFRvSW50MzIoTFZhbHVlIHZhbHVlKSB7IHJldHVybiBpbnRDYXN0KHZhbHVlLCBp
bnQzMik7IH0KICAgICBMVmFsdWUgaW50VG9QdHIoTFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBlKSB7
IHJldHVybiBidWlsZEludFRvUHRyKG1fYnVpbGRlciwgdmFsdWUsIHR5cGUpOyB9CisgICAgTFZh
bHVlIGJpdENhc3QoTFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBlKSB7IHJldHVybiBidWlsZEJpdENh
c3QobV9idWlsZGVyLCB2YWx1ZSwgdHlwZSk7IH0KICAgICAKICAgICBMVmFsdWUgZ2V0KExWYWx1
ZSByZWZlcmVuY2UpIHsgcmV0dXJuIGJ1aWxkTG9hZChtX2J1aWxkZXIsIHJlZmVyZW5jZSk7IH0K
ICAgICBMVmFsdWUgc2V0KExWYWx1ZSB2YWx1ZSwgTFZhbHVlIHJlZmVyZW5jZSkgeyByZXR1cm4g
YnVpbGRTdG9yZShtX2J1aWxkZXIsIHZhbHVlLCByZWZlcmVuY2UpOyB9CkBAIC0xNTcsOSArMTc5
LDExIEBAIHB1YmxpYzoKICAgICBMVmFsdWUgbG9hZDMyKFR5cGVkUG9pbnRlciBwb2ludGVyKSB7
IHJldHVybiBsb2FkKHBvaW50ZXIsIHJlZjMyKTsgfQogICAgIExWYWx1ZSBsb2FkNjQoVHlwZWRQ
b2ludGVyIHBvaW50ZXIpIHsgcmV0dXJuIGxvYWQocG9pbnRlciwgcmVmNjQpOyB9CiAgICAgTFZh
bHVlIGxvYWRQdHIoVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgcmV0dXJuIGxvYWQocG9pbnRlciwg
cmVmUHRyKTsgfQorICAgIExWYWx1ZSBsb2FkRG91YmxlKFR5cGVkUG9pbnRlciBwb2ludGVyKSB7
IHJldHVybiBsb2FkKHBvaW50ZXIsIHJlZkRvdWJsZSk7IH0KICAgICB2b2lkIHN0b3JlMzIoTFZh
bHVlIHZhbHVlLCBUeXBlZFBvaW50ZXIgcG9pbnRlcikgeyBzdG9yZSh2YWx1ZSwgcG9pbnRlciwg
cmVmMzIpOyB9CiAgICAgdm9pZCBzdG9yZTY0KExWYWx1ZSB2YWx1ZSwgVHlwZWRQb2ludGVyIHBv
aW50ZXIpIHsgc3RvcmUodmFsdWUsIHBvaW50ZXIsIHJlZjY0KTsgfQogICAgIHZvaWQgc3RvcmVQ
dHIoTFZhbHVlIHZhbHVlLCBUeXBlZFBvaW50ZXIgcG9pbnRlcikgeyBzdG9yZSh2YWx1ZSwgcG9p
bnRlciwgcmVmUHRyKTsgfQorICAgIHZvaWQgc3RvcmVEb3VibGUoTFZhbHVlIHZhbHVlLCBUeXBl
ZFBvaW50ZXIgcG9pbnRlcikgeyBzdG9yZSh2YWx1ZSwgcG9pbnRlciwgcmVmRG91YmxlKTsgfQog
CiAgICAgTFZhbHVlIGFkZFB0cihMVmFsdWUgdmFsdWUsIHB0cmRpZmZfdCBpbW1lZGlhdGUgPSAw
KQogICAgIHsKQEAgLTIzOSw5ICsyNjMsMjMgQEAgcHVibGljOgogICAgIExWYWx1ZSBsZXNzVGhh
bihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBidWlsZElDbXAobV9idWlsZGVy
LCBMTFZNSW50U0xULCBsZWZ0LCByaWdodCk7IH0KICAgICBMVmFsdWUgbGVzc1RoYW5PckVxdWFs
KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIGJ1aWxkSUNtcChtX2J1aWxkZXIs
IExMVk1JbnRTTEUsIGxlZnQsIHJpZ2h0KTsgfQogICAgIAorICAgIExWYWx1ZSBkb3VibGVFcXVh
bChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBidWlsZEZDbXAobV9idWlsZGVy
LCBMTFZNUmVhbE9FUSwgbGVmdCwgcmlnaHQpOyB9CisgICAgTFZhbHVlIGRvdWJsZU5vdEVxdWFs
T3JVbm9yZGVyZWQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gYnVpbGRGQ21w
KG1fYnVpbGRlciwgTExWTVJlYWxVTkUsIGxlZnQsIHJpZ2h0KTsgfQorICAgIExWYWx1ZSBkb3Vi
bGVMZXNzVGhhbihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBidWlsZEZDbXAo
bV9idWlsZGVyLCBMTFZNUmVhbE9MVCwgbGVmdCwgcmlnaHQpOyB9CisgICAgTFZhbHVlIGRvdWJs
ZUxlc3NUaGFuT3JFcXVhbChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBidWls
ZEZDbXAobV9idWlsZGVyLCBMTFZNUmVhbE9MRSwgbGVmdCwgcmlnaHQpOyB9CisgICAgTFZhbHVl
IGRvdWJsZUdyZWF0ZXJUaGFuKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIGJ1
aWxkRkNtcChtX2J1aWxkZXIsIExMVk1SZWFsT0dULCBsZWZ0LCByaWdodCk7IH0KKyAgICBMVmFs
dWUgZG91YmxlR3JlYXRlclRoYW5PckVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsg
cmV0dXJuIGJ1aWxkRkNtcChtX2J1aWxkZXIsIExMVk1SZWFsT0dFLCBsZWZ0LCByaWdodCk7IH0K
KyAgICBMVmFsdWUgZG91YmxlRXF1YWxPclVub3JkZXJlZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJp
Z2h0KSB7IHJldHVybiBidWlsZEZDbXAobV9idWlsZGVyLCBMTFZNUmVhbFVFUSwgbGVmdCwgcmln
aHQpOyB9CisgICAgTFZhbHVlIGRvdWJsZU5vdEVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmln
aHQpIHsgcmV0dXJuIGJ1aWxkRkNtcChtX2J1aWxkZXIsIExMVk1SZWFsT05FLCBsZWZ0LCByaWdo
dCk7IH0KKyAgICBMVmFsdWUgZG91YmxlTGVzc1RoYW5PclVub3JkZXJlZChMVmFsdWUgbGVmdCwg
TFZhbHVlIHJpZ2h0KSB7IHJldHVybiBidWlsZEZDbXAobV9idWlsZGVyLCBMTFZNUmVhbFVMVCwg
bGVmdCwgcmlnaHQpOyB9CisgICAgTFZhbHVlIGRvdWJsZUxlc3NUaGFuT3JFcXVhbE9yVW5vcmRl
cmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIGJ1aWxkRkNtcChtX2J1aWxk
ZXIsIExMVk1SZWFsVUxFLCBsZWZ0LCByaWdodCk7IH0KKyAgICBMVmFsdWUgZG91YmxlR3JlYXRl
clRoYW5PclVub3JkZXJlZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBidWls
ZEZDbXAobV9idWlsZGVyLCBMTFZNUmVhbFVHVCwgbGVmdCwgcmlnaHQpOyB9CisgICAgTFZhbHVl
IGRvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbE9yVW5vcmRlcmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUg
cmlnaHQpIHsgcmV0dXJuIGJ1aWxkRkNtcChtX2J1aWxkZXIsIExMVk1SZWFsVUdFLCBsZWZ0LCBy
aWdodCk7IH0KKyAgICAKICAgICBMVmFsdWUgaXNaZXJvNjQoTFZhbHVlIHZhbHVlKSB7IHJldHVy
biBlcXVhbCh2YWx1ZSwgaW50NjRaZXJvKTsgfQogICAgIExWYWx1ZSBub3RaZXJvNjQoTFZhbHVl
IHZhbHVlKSB7IHJldHVybiBub3RFcXVhbCh2YWx1ZSwgaW50NjRaZXJvKTsgfQogICAgIAorICAg
IExWYWx1ZSB0ZXN0SXNaZXJvNjQoTFZhbHVlIHZhbHVlLCBMVmFsdWUgbWFzaykgeyByZXR1cm4g
aXNaZXJvNjQoYml0QW5kKHZhbHVlLCBtYXNrKSk7IH0KICAgICBMVmFsdWUgdGVzdE5vblplcm82
NChMVmFsdWUgdmFsdWUsIExWYWx1ZSBtYXNrKSB7IHJldHVybiBub3RaZXJvNjQoYml0QW5kKHZh
bHVlLCBtYXNrKSk7IH0KICAgICAKICAgICBMVmFsdWUgc2VsZWN0KExWYWx1ZSB2YWx1ZSwgTFZh
bHVlIHRha2VuLCBMVmFsdWUgbm90VGFrZW4pIHsgcmV0dXJuIGJ1aWxkU2VsZWN0KG1fYnVpbGRl
ciwgdmFsdWUsIHRha2VuLCBub3RUYWtlbik7IH0K
</data>
<flag name="review"
          id="221428"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199976</attachid>
            <date>2013-04-28 17:37:49 -0700</date>
            <delta_ts>2013-04-28 17:37:49 -0700</delta_ts>
            <desc>latest MCJIT patch</desc>
            <filename>mcjit.patch</filename>
            <type>text/plain</type>
            <size>19046</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IGluY2x1ZGUvbGx2bS9XcmFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gaW5jbHVkZS9sbHZtL1dy
YXAuaAkocmV2aXNpb24gMTgwNjg5KQorKysgaW5jbHVkZS9sbHZtL1dyYXAuaAkod29ya2luZyBj
b3B5KQpAQCAtMTUsMTEgKzE1LDEzIEBACiAjZGVmaW5lIExMVk1fV1JBUF9ICiAKICNpbmNsdWRl
ICJsbHZtLWMvQ29yZS5oIgorI2luY2x1ZGUgImxsdm0tYy9UYXJnZXRNYWNoaW5lLmgiCiAjaW5j
bHVkZSAibGx2bS9JUi9CYXNpY0Jsb2NrLmgiCiAjaW5jbHVkZSAibGx2bS9JUi9JUkJ1aWxkZXIu
aCIKICNpbmNsdWRlICJsbHZtL0lSL01vZHVsZS5oIgogI2luY2x1ZGUgImxsdm0vSVIvVHlwZS5o
IgogI2luY2x1ZGUgImxsdm0vUGFzc1JlZ2lzdHJ5LmgiCisjaW5jbHVkZSAibGx2bS9TdXBwb3J0
L0NvZGVHZW4uaCIKIAogLyogV2hlbiBpbmNsdWRlZCBpbnRvIGEgQysrIHNvdXJjZSBmaWxlLCBh
bHNvIGRlY2xhcmVzICd3cmFwJyBhbmQgJ3Vud3JhcCcKICAgaGVscGVycyB0byBwZXJmb3JtIG9w
YXF1ZSByZWZlcmVuY2U8LS0+cG9pbnRlciBjb252ZXJzaW9ucy4gVGhlc2UgaGVscGVycwpAQCAt
MTE5LDYgKzEyMSw0MiBAQAogICBpbmxpbmUgTExWTVZhbHVlUmVmICp3cmFwKGNvbnN0IFZhbHVl
ICoqVmFscykgewogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PExMVk1WYWx1ZVJlZio+KGNv
bnN0X2Nhc3Q8VmFsdWUqKj4oVmFscykpOwogICB9CisKKyAgaW5saW5lIENvZGVNb2RlbDo6TW9k
ZWwgdW53cmFwKExMVk1Db2RlTW9kZWwgTW9kZWwpIHsKKyAgICBzd2l0Y2ggKE1vZGVsKSB7Cisg
ICAgICBjYXNlIExMVk1Db2RlTW9kZWxEZWZhdWx0OgorICAgICAgICByZXR1cm4gQ29kZU1vZGVs
OjpEZWZhdWx0OworICAgICAgY2FzZSBMTFZNQ29kZU1vZGVsSklURGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuIENvZGVNb2RlbDo6SklURGVmYXVsdDsKKyAgICAgIGNhc2UgTExWTUNvZGVNb2RlbFNt
YWxsOgorICAgICAgICByZXR1cm4gQ29kZU1vZGVsOjpTbWFsbDsKKyAgICAgIGNhc2UgTExWTUNv
ZGVNb2RlbEtlcm5lbDoKKyAgICAgICAgcmV0dXJuIENvZGVNb2RlbDo6S2VybmVsOworICAgICAg
Y2FzZSBMTFZNQ29kZU1vZGVsTWVkaXVtOgorICAgICAgICByZXR1cm4gQ29kZU1vZGVsOjpNZWRp
dW07CisgICAgICBjYXNlIExMVk1Db2RlTW9kZWxMYXJnZToKKyAgICAgICAgcmV0dXJuIENvZGVN
b2RlbDo6TGFyZ2U7CisgICAgfQorICAgIHJldHVybiBDb2RlTW9kZWw6OkRlZmF1bHQ7CisgIH0K
KworICBpbmxpbmUgTExWTUNvZGVNb2RlbCB3cmFwKENvZGVNb2RlbDo6TW9kZWwgTW9kZWwpIHsK
KyAgICBzd2l0Y2ggKE1vZGVsKSB7CisgICAgICBjYXNlIENvZGVNb2RlbDo6RGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIExMVk1Db2RlTW9kZWxEZWZhdWx0OworICAgICAgY2FzZSBDb2RlTW9kZWw6
OkpJVERlZmF1bHQ6CisgICAgICAgIHJldHVybiBMTFZNQ29kZU1vZGVsSklURGVmYXVsdDsKKyAg
ICAgIGNhc2UgQ29kZU1vZGVsOjpTbWFsbDoKKyAgICAgICAgcmV0dXJuIExMVk1Db2RlTW9kZWxT
bWFsbDsKKyAgICAgIGNhc2UgQ29kZU1vZGVsOjpLZXJuZWw6CisgICAgICAgIHJldHVybiBMTFZN
Q29kZU1vZGVsS2VybmVsOworICAgICAgY2FzZSBDb2RlTW9kZWw6Ok1lZGl1bToKKyAgICAgICAg
cmV0dXJuIExMVk1Db2RlTW9kZWxNZWRpdW07CisgICAgICBjYXNlIENvZGVNb2RlbDo6TGFyZ2U6
CisgICAgICAgIHJldHVybiBMTFZNQ29kZU1vZGVsTGFyZ2U7CisgICAgfQorICAgIGxsdm1fdW5y
ZWFjaGFibGUoIkJhZCBDb2RlTW9kZWwhIik7CisgIH0KIH0KIAogI2VuZGlmCkluZGV4OiBpbmNs
dWRlL2xsdm0tYy9FeGVjdXRpb25FbmdpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBpbmNsdWRlL2xsdm0t
Yy9FeGVjdXRpb25FbmdpbmUuaAkocmV2aXNpb24gMTgwNjg5KQorKysgaW5jbHVkZS9sbHZtLWMv
RXhlY3V0aW9uRW5naW5lLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDcgQEAKIAogI2lu
Y2x1ZGUgImxsdm0tYy9Db3JlLmgiCiAjaW5jbHVkZSAibGx2bS1jL1RhcmdldC5oIgorI2luY2x1
ZGUgImxsdm0tYy9UYXJnZXRNYWNoaW5lLmgiCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJu
ICJDIiB7CkBAIC0zNCwxMSArMzUsMTkgQEAKICAqLwogCiB2b2lkIExMVk1MaW5rSW5KSVQodm9p
ZCk7Cit2b2lkIExMVk1MaW5rSW5NQ0pJVCh2b2lkKTsKIHZvaWQgTExWTUxpbmtJbkludGVycHJl
dGVyKHZvaWQpOwogCiB0eXBlZGVmIHN0cnVjdCBMTFZNT3BhcXVlR2VuZXJpY1ZhbHVlICpMTFZN
R2VuZXJpY1ZhbHVlUmVmOwogdHlwZWRlZiBzdHJ1Y3QgTExWTU9wYXF1ZUV4ZWN1dGlvbkVuZ2lu
ZSAqTExWTUV4ZWN1dGlvbkVuZ2luZVJlZjsKIAorc3RydWN0IExMVk1NQ0pJVENvbXBpbGVyT3B0
aW9ucyB7CisgIHVuc2lnbmVkIE9wdExldmVsOworICBMTFZNQ29kZU1vZGVsIENvZGVNb2RlbDsK
KyAgTExWTUJvb2wgTm9GcmFtZVBvaW50ZXJFbGltOworICBMTFZNQm9vbCBFbmFibGVGYXN0SVNl
bDsKK307CisKIC8qPT09LS0gT3BlcmF0aW9ucyBvbiBnZW5lcmljIHZhbHVlcyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PSovCiAKIExMVk1HZW5lcmljVmFsdWVSZWYg
TExWTUNyZWF0ZUdlbmVyaWNWYWx1ZU9mSW50KExMVk1UeXBlUmVmIFR5LApAQCAtNzUsNiArODQs
MzAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBP
cHRMZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoq
T3V0RXJyb3IpOwogCit2b2lkIExMVk1Jbml0aWFsaXplTUNKSVRDb21waWxlck9wdGlvbnMoc3Ry
dWN0IExMVk1NQ0pJVENvbXBpbGVyT3B0aW9ucyAqT3B0aW9ucywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgU2l6ZU9mT3B0aW9ucyk7CisKKy8qKgorICog
Q3JlYXRlIGFuIE1DSklUIGV4ZWN1dGlvbiBlbmdpbmUgZm9yIGEgbW9kdWxlLCB3aXRoIHRoZSBn
aXZlbiBvcHRpb25zLiBJdCBpcworICogdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjYWxsZXIg
dG8gZW5zdXJlIHRoYXQgYWxsIGZpZWxkcyBpbiBPcHRpb25zIHVwIHRvCisgKiB0aGUgZ2l2ZW4g
U2l6ZU9mT3B0aW9ucyBhcmUgaW5pdGlhbGl6ZWQuIEl0IGlzIGNvcnJlY3QgdG8gcGFzcyBhIHNt
YWxsZXIgdmFsdWUKKyAqIG9mIFNpemVPZk9wdGlvbnMgdGhhdCBvbWl0cyBzb21lIGZpZWxkcy4g
VGhlIGNhbm9uaWNhbCB3YXkgb2YgdXNpbmcgdGhpcyBpczoKKyAqCisgKiBMTFZNTUNKSVRDb21w
aWxlck9wdGlvbnMgb3B0aW9uczsKKyAqIExMVk1Jbml0aWFsaXplTUNKSVRDb21waWxlck9wdGlv
bnMoJm9wdGlvbnMsIHNpemVvZihvcHRpb25zKSk7CisgKiAuLi4gZmlsbCBpbiB0aG9zZSBvcHRp
b25zIHlvdSBjYXJlIGFib3V0CisgKiBMTFZNQ3JlYXRlTUNKSVRDb21waWxlckZvck1vZHVsZSgm
aml0LCBtb2QsICZvcHRpb25zLCBzaXplb2Yob3B0aW9ucyksICZlcnJvcik7CisgKgorICogTm90
ZSB0aGF0IHRoaXMgaXMgYWxzbyBjb3JyZWN0LCB0aG91Z2ggcG9zc2libHkgc3Vib3B0aW1hbDoK
KyAqCisgKiBMTFZNQ3JlYXRlTUNKSVRDb21waWxlckZvck1vZHVsZSgmaml0LCBtb2QsIDAsIDAs
ICZlcnJvcik7CisgKi8KK0xMVk1Cb29sIExMVk1DcmVhdGVNQ0pJVENvbXBpbGVyRm9yTW9kdWxl
KExMVk1FeGVjdXRpb25FbmdpbmVSZWYgKk91dEpJVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIExMVk1Nb2R1bGVSZWYgTSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBMTFZNTUNKSVRDb21waWxlck9wdGlvbnMgKk9w
dGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
U2l6ZU9mT3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXIgKipPdXRFcnJvcik7CisKIC8qKiBEZXByZWNhdGVkOiBVc2UgTExWTUNyZWF0ZUV4ZWN1
dGlvbkVuZ2luZUZvck1vZHVsZSBpbnN0ZWFkLiAqLwogTExWTUJvb2wgTExWTUNyZWF0ZUV4ZWN1
dGlvbkVuZ2luZShMTFZNRXhlY3V0aW9uRW5naW5lUmVmICpPdXRFRSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTExWTU1vZHVsZVByb3ZpZGVyUmVmIE1QLApJbmRleDogbGli
L0V4ZWN1dGlvbkVuZ2luZS9FeGVjdXRpb25FbmdpbmVCaW5kaW5ncy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gbGliL0V4ZWN1dGlvbkVuZ2luZS9FeGVjdXRpb25FbmdpbmVCaW5kaW5ncy5jcHAJKHJldmlz
aW9uIDE4MDY4OSkKKysrIGxpYi9FeGVjdXRpb25FbmdpbmUvRXhlY3V0aW9uRW5naW5lQmluZGlu
Z3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsNiArMTUyLDU5IEBACiAgIHJldHVybiAxOwog
fQogCit2b2lkIExMVk1Jbml0aWFsaXplTUNKSVRDb21waWxlck9wdGlvbnMoTExWTU1DSklUQ29t
cGlsZXJPcHRpb25zICpQYXNzZWRPcHRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBTaXplT2ZQYXNzZWRPcHRpb25zKSB7CisgIExMVk1NQ0pJVENv
bXBpbGVyT3B0aW9ucyBvcHRpb25zOworICBvcHRpb25zLk9wdExldmVsID0gMDsKKyAgb3B0aW9u
cy5Db2RlTW9kZWwgPSBMTFZNQ29kZU1vZGVsSklURGVmYXVsdDsKKyAgb3B0aW9ucy5Ob0ZyYW1l
UG9pbnRlckVsaW0gPSBmYWxzZTsKKyAgb3B0aW9ucy5FbmFibGVGYXN0SVNlbCA9IGZhbHNlOwor
ICAKKyAgbWVtY3B5KFBhc3NlZE9wdGlvbnMsICZvcHRpb25zLCBzdGQ6Om1pbihzaXplb2Yob3B0
aW9ucyksIFNpemVPZlBhc3NlZE9wdGlvbnMpKTsKK30KKworTExWTUJvb2wgTExWTUNyZWF0ZU1D
SklUQ29tcGlsZXJGb3JNb2R1bGUoTExWTUV4ZWN1dGlvbkVuZ2luZVJlZiAqT3V0SklULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExWTU1vZHVsZVJlZiBNLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExWTU1DSklUQ29tcGls
ZXJPcHRpb25zICpQYXNzZWRPcHRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IFNpemVPZlBhc3NlZE9wdGlvbnMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqT3V0RXJyb3IpIHsKKyAgTExWTU1DSklU
Q29tcGlsZXJPcHRpb25zIG9wdGlvbnM7CisgIC8vIElmIHRoZSB1c2VyIHBhc3NlZCBhIGxhcmdl
ciBzaXplZCBvcHRpb25zIHN0cnVjdCwgdGhlbiB0aGV5IHdlcmUgY29tcGlsZWQKKyAgLy8gYWdh
aW5zdCBhIG5ld2VyIExMVk0uIFRlbGwgdGhlbSB0aGF0IHNvbWV0aGluZyBpcyB3cm9uZy4KKyAg
aWYgKFNpemVPZlBhc3NlZE9wdGlvbnMgPiBzaXplb2Yob3B0aW9ucykpIHsKKyAgICAqT3V0RXJy
b3IgPSBzdHJkdXAoCisgICAgICAiUmVmdXNpbmcgdG8gdXNlIG9wdGlvbnMgc3RydWN0IHRoYXQg
aXMgbGFyZ2VyIHRoYW4gbXkgb3duOyBhc3N1bWluZyBMTFZNICIKKyAgICAgICJsaWJyYXJ5IG1p
c21hdGNoLiIpOworICAgIHJldHVybiAxOworICB9CisgIAorICAvLyBEZWZlbmQgYWdhaW5zdCB0
aGUgdXNlciBoYXZpbmcgYW4gb2xkIHZlcnNpb24gb2YgdGhlIEFQSSBieSBlbnN1cmluZyB0aGF0
CisgIC8vIGFueSBmaWVsZHMgdGhleSBkaWRuJ3Qgc2VlIGFyZSBjbGVhcmVkLiBXZSBtdXN0IGRl
ZmVuZCBhZ2FpbnN0IGZpZWxkcyBiZWluZworICAvLyBzZXQgdG8gdGhlIGJpdHdpc2UgZXF1aXZh
bGVudCBvZiB6ZXJvLCBhbmQgYXNzdW1lIHRoYXQgdGhpcyBtZWFucyAiZG8gdGhlCisgIC8vIGRl
ZmF1bHQiIGFzIGlmIHRoYXQgb3B0aW9uIGhhZG4ndCBiZWVuIGF2YWlsYWJsZS4KKyAgTExWTUlu
aXRpYWxpemVNQ0pJVENvbXBpbGVyT3B0aW9ucygmb3B0aW9ucywgc2l6ZW9mKG9wdGlvbnMpKTsK
KyAgbWVtY3B5KCZvcHRpb25zLCBQYXNzZWRPcHRpb25zLCBTaXplT2ZQYXNzZWRPcHRpb25zKTsK
KyAgCisgIFRhcmdldE9wdGlvbnMgdGFyZ2V0T3B0aW9uczsKKyAgdGFyZ2V0T3B0aW9ucy5Ob0Zy
YW1lUG9pbnRlckVsaW0gPSBvcHRpb25zLk5vRnJhbWVQb2ludGVyRWxpbTsKKyAgdGFyZ2V0T3B0
aW9ucy5FbmFibGVGYXN0SVNlbCA9IG9wdGlvbnMuRW5hYmxlRmFzdElTZWw7CisKKyAgc3RkOjpz
dHJpbmcgRXJyb3I7CisgIEVuZ2luZUJ1aWxkZXIgYnVpbGRlcih1bndyYXAoTSkpOworICBidWls
ZGVyLnNldEVuZ2luZUtpbmQoRW5naW5lS2luZDo6SklUKQorICAgICAgICAgLnNldEVycm9yU3Ry
KCZFcnJvcikKKyAgICAgICAgIC5zZXRVc2VNQ0pJVCh0cnVlKQorICAgICAgICAgLnNldE9wdExl
dmVsKChDb2RlR2VuT3B0OjpMZXZlbClvcHRpb25zLk9wdExldmVsKQorICAgICAgICAgLnNldENv
ZGVNb2RlbCh1bndyYXAob3B0aW9ucy5Db2RlTW9kZWwpKQorICAgICAgICAgLnNldFRhcmdldE9w
dGlvbnModGFyZ2V0T3B0aW9ucyk7CisgIGlmIChFeGVjdXRpb25FbmdpbmUgKkpJVCA9IGJ1aWxk
ZXIuY3JlYXRlKCkpIHsKKyAgICAqT3V0SklUID0gd3JhcChKSVQpOworICAgIHJldHVybiAwOwor
ICB9CisgICpPdXRFcnJvciA9IHN0cmR1cChFcnJvci5jX3N0cigpKTsKKyAgcmV0dXJuIDE7Cit9
CisKIExMVk1Cb29sIExMVk1DcmVhdGVFeGVjdXRpb25FbmdpbmUoTExWTUV4ZWN1dGlvbkVuZ2lu
ZVJlZiAqT3V0RUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1Nb2R1
bGVQcm92aWRlclJlZiBNUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh
ciAqKk91dEVycm9yKSB7CkBAIC0xOTYsNiArMjQ5LDggQEAKIGludCBMTFZNUnVuRnVuY3Rpb25B
c01haW4oTExWTUV4ZWN1dGlvbkVuZ2luZVJlZiBFRSwgTExWTVZhbHVlUmVmIEYsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIEFyZ0MsIGNvbnN0IGNoYXIgKiBjb25zdCAqQXJn
ViwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIGNvbnN0ICpFbnZQKSB7
CisgIHVud3JhcChFRSktPmZpbmFsaXplT2JqZWN0KCk7CisgIAogICBzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4gQXJnVmVjOwogICBmb3IgKHVuc2lnbmVkIEkgPSAwOyBJICE9IEFyZ0M7ICsrSSkK
ICAgICBBcmdWZWMucHVzaF9iYWNrKEFyZ1ZbSV0pOwpAQCAtMjA2LDYgKzI2MSw4IEBACiBMTFZN
R2VuZXJpY1ZhbHVlUmVmIExMVk1SdW5GdW5jdGlvbihMTFZNRXhlY3V0aW9uRW5naW5lUmVmIEVF
LCBMTFZNVmFsdWVSZWYgRiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIE51bUFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZN
R2VuZXJpY1ZhbHVlUmVmICpBcmdzKSB7CisgIHVud3JhcChFRSktPmZpbmFsaXplT2JqZWN0KCk7
CisgIAogICBzdGQ6OnZlY3RvcjxHZW5lcmljVmFsdWU+IEFyZ1ZlYzsKICAgQXJnVmVjLnJlc2Vy
dmUoTnVtQXJncyk7CiAgIGZvciAodW5zaWduZWQgSSA9IDA7IEkgIT0gTnVtQXJnczsgKytJKQpA
QCAtMjY4LDUgKzMyNSw3IEBACiB9CiAKIHZvaWQgKkxMVk1HZXRQb2ludGVyVG9HbG9iYWwoTExW
TUV4ZWN1dGlvbkVuZ2luZVJlZiBFRSwgTExWTVZhbHVlUmVmIEdsb2JhbCkgeworICB1bndyYXAo
RUUpLT5maW5hbGl6ZU9iamVjdCgpOworICAKICAgcmV0dXJuIHVud3JhcChFRSktPmdldFBvaW50
ZXJUb0dsb2JhbCh1bndyYXA8R2xvYmFsVmFsdWU+KEdsb2JhbCkpOwogfQpJbmRleDogbGliL0V4
ZWN1dGlvbkVuZ2luZS9NQ0pJVC9NQ0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGliL0V4ZWN1dGlv
bkVuZ2luZS9NQ0pJVC9NQ0pJVC5jcHAJKHJldmlzaW9uIDE4MDY4OSkKKysrIGxpYi9FeGVjdXRp
b25FbmdpbmUvTUNKSVQvTUNKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNCw2ICsxNCw3IEBA
CiAjaW5jbHVkZSAibGx2bS9FeGVjdXRpb25FbmdpbmUvTUNKSVQuaCIKICNpbmNsdWRlICJsbHZt
L0V4ZWN1dGlvbkVuZ2luZS9PYmplY3RCdWZmZXIuaCIKICNpbmNsdWRlICJsbHZtL0V4ZWN1dGlv
bkVuZ2luZS9PYmplY3RJbWFnZS5oIgorI2luY2x1ZGUgImxsdm0vRXhlY3V0aW9uRW5naW5lL1Nl
Y3Rpb25NZW1vcnlNYW5hZ2VyLmgiCiAjaW5jbHVkZSAibGx2bS9JUi9EYXRhTGF5b3V0LmgiCiAj
aW5jbHVkZSAibGx2bS9JUi9EZXJpdmVkVHlwZXMuaCIKICNpbmNsdWRlICJsbHZtL0lSL0Z1bmN0
aW9uLmgiCkBAIC01MSw3ICs1Miw3IEBACiAKIE1DSklUOjpNQ0pJVChNb2R1bGUgKm0sIFRhcmdl
dE1hY2hpbmUgKnRtLCBSVER5bGRNZW1vcnlNYW5hZ2VyICpNTSwKICAgICAgICAgICAgICBib29s
IEFsbG9jYXRlR1ZzV2l0aENvZGUpCi0gIDogRXhlY3V0aW9uRW5naW5lKG0pLCBUTSh0bSksIEN0
eCgwKSwgTWVtTWdyKE1NKSwgRHlsZChNTSksCisgIDogRXhlY3V0aW9uRW5naW5lKG0pLCBUTSh0
bSksIEN0eCgwKSwgTWVtTWdyKE1NID8gTU0gOiBuZXcgU2VjdGlvbk1lbW9yeU1hbmFnZXIoKSks
IER5bGQoTWVtTWdyKSwKICAgICBJc0xvYWRlZChmYWxzZSksIE0obSksIE9iakNhY2hlKDApICB7
CiAKICAgc2V0RGF0YUxheW91dChUTS0+Z2V0RGF0YUxheW91dCgpKTsKSW5kZXg6IGxpYi9UYXJn
ZXQvVGFyZ2V0TWFjaGluZUMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpYi9UYXJnZXQvVGFyZ2V0TWFj
aGluZUMuY3BwCShyZXZpc2lvbiAxODA2ODkpCisrKyBsaWIvVGFyZ2V0L1RhcmdldE1hY2hpbmVD
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDI5ICsxMDcsOSBAQAogICAgICAgYnJlYWs7CiAg
IH0KIAotICBDb2RlTW9kZWw6Ok1vZGVsIENNOwotICBzd2l0Y2ggKENvZGVNb2RlbCkgewotICAg
IGNhc2UgTExWTUNvZGVNb2RlbEpJVERlZmF1bHQ6Ci0gICAgICBDTSA9IENvZGVNb2RlbDo6SklU
RGVmYXVsdDsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgTExWTUNvZGVNb2RlbFNtYWxsOgotICAg
ICAgQ00gPSBDb2RlTW9kZWw6OlNtYWxsOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMTFZNQ29k
ZU1vZGVsS2VybmVsOgotICAgICAgQ00gPSBDb2RlTW9kZWw6Oktlcm5lbDsKLSAgICAgIGJyZWFr
OwotICAgIGNhc2UgTExWTUNvZGVNb2RlbE1lZGl1bToKLSAgICAgIENNID0gQ29kZU1vZGVsOjpN
ZWRpdW07Ci0gICAgICBicmVhazsKLSAgICBjYXNlIExMVk1Db2RlTW9kZWxMYXJnZToKLSAgICAg
IENNID0gQ29kZU1vZGVsOjpMYXJnZTsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAg
ICBDTSA9IENvZGVNb2RlbDo6RGVmYXVsdDsKLSAgICAgIGJyZWFrOwotICB9CisgIENvZGVNb2Rl
bDo6TW9kZWwgQ00gPSB1bndyYXAoQ29kZU1vZGVsKTsKKwogICBDb2RlR2VuT3B0OjpMZXZlbCBP
TDsKLQogICBzd2l0Y2ggKExldmVsKSB7CiAgICAgY2FzZSBMTFZNQ29kZUdlbkxldmVsTm9uZToK
ICAgICAgIE9MID0gQ29kZUdlbk9wdDo6Tm9uZTsKSW5kZXg6IHVuaXR0ZXN0cy9FeGVjdXRpb25F
bmdpbmUvTUNKSVQvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdW5pdHRlc3RzL0V4ZWN1
dGlvbkVuZ2luZS9NQ0pJVC9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTgwNjg5KQorKysgdW5p
dHRlc3RzL0V4ZWN1dGlvbkVuZ2luZS9NQ0pJVC9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtOSw2ICs5LDcgQEAKIAogc2V0KE1DSklUVGVzdHNTb3VyY2VzCiAgIE1DSklUVGVzdC5j
cHAKKyAgTUNKSVRDQVBJVGVzdC5jcHAKICAgTUNKSVRNZW1vcnlNYW5hZ2VyVGVzdC5jcHAKICAg
TUNKSVRPYmplY3RDYWNoZVRlc3QuY3BwCiAgICkKSW5kZXg6IHVuaXR0ZXN0cy9FeGVjdXRpb25F
bmdpbmUvTUNKSVQvTUNKSVRDQVBJVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdW5pdHRlc3RzL0V4
ZWN1dGlvbkVuZ2luZS9NQ0pJVC9NQ0pJVENBUElUZXN0LmNwcAkocmV2aXNpb24gMCkKKysrIHVu
aXR0ZXN0cy9FeGVjdXRpb25FbmdpbmUvTUNKSVQvTUNKSVRDQVBJVGVzdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw5MyBAQAorLy89PT0tIE1DSklUVGVzdC5jcHAgLSBVbml0IHRlc3Rz
IGZvciB0aGUgTUNKSVQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKy8vCisvLyAg
ICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCisvLwor
Ly8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlu
b2lzIE9wZW4gU291cmNlCisvLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMu
CisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKy8vCisvLyBUaGlzIHRlc3Qgc3VpdGUgdmVy
aWZpZXMgYmFzaWMgTUNKSVQgZnVuY3Rpb25hbGl0eSB3aGVuIGludm9rZWQgZm9ybSB0aGUgQwor
Ly8gQVBJLgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKyNpbmNsdWRlICJsbHZtLWMv
QW5hbHlzaXMuaCIKKyNpbmNsdWRlICJsbHZtLWMvQ29yZS5oIgorI2luY2x1ZGUgImxsdm0tYy9F
eGVjdXRpb25FbmdpbmUuaCIKKyNpbmNsdWRlICJsbHZtLWMvVGFyZ2V0LmgiCisjaW5jbHVkZSAi
bGx2bS1jL1RyYW5zZm9ybXMvU2NhbGFyLmgiCisjaW5jbHVkZSAibGx2bS9TdXBwb3J0L0hvc3Qu
aCIKKyNpbmNsdWRlICJNQ0pJVFRlc3RBUElDb21tb24uaCIKKyNpbmNsdWRlICJndGVzdC9ndGVz
dC5oIgorCit1c2luZyBuYW1lc3BhY2UgbGx2bTsKKworY2xhc3MgTUNKSVRDQVBJVGVzdCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0LCBwdWJsaWMgTUNKSVRUZXN0QVBJQ29tbW9uIHsKK3Byb3RlY3Rl
ZDoKKyAgTUNKSVRDQVBJVGVzdCgpIHsKKyAgICAvLyBUaGUgYXJjaGl0ZWN0dXJlcyBiZWxvdyBh
cmUga25vd24gdG8gYmUgY29tcGF0aWJsZSB3aXRoIE1DSklUIGFzIHRoZXkKKyAgICAvLyBhcmUg
Y29waWVkIGZyb20gdGVzdC9FeGVjdXRpb25FbmdpbmUvTUNKSVQvbGl0LmxvY2FsLmNmZyBhbmQg
c2hvdWxkIGJlCisgICAgLy8ga2VwdCBpbiBzeW5jLgorICAgIFN1cHBvcnRlZEFyY2hzLnB1c2hf
YmFjayhUcmlwbGU6OmFybSk7CisgICAgU3VwcG9ydGVkQXJjaHMucHVzaF9iYWNrKFRyaXBsZTo6
bWlwcyk7CisgICAgU3VwcG9ydGVkQXJjaHMucHVzaF9iYWNrKFRyaXBsZTo6eDg2KTsKKyAgICBT
dXBwb3J0ZWRBcmNocy5wdXNoX2JhY2soVHJpcGxlOjp4ODZfNjQpOworCisgICAgLy8gVGhlIG9w
ZXJhdGluZyBzeXN0ZW1zIGJlbG93IGFyZSBrbm93biB0byBiZSBzdWZmaWNpZW50bHkgaW5jb21w
YXRpYmxlCisgICAgLy8gdGhhdCB0aGV5IHdpbGwgZmFpbCB0aGUgTUNKSVQgQyBBUEkgdGVzdHMu
CisgICAgVW5zdXBwb3J0ZWRPU3MucHVzaF9iYWNrKFRyaXBsZTo6Q3lnd2luKTsKKyAgfQorfTsK
KworVEVTVF9GKE1DSklUQ0FQSVRlc3QsIHNpbXBsZV9mdW5jdGlvbikgeworICBTS0lQX1VOU1VQ
UE9SVEVEX1BMQVRGT1JNOworICAKKyAgY2hhciAqZXJyb3IgPSAwOworICAKKyAgLy8gQ3JlYXRl
cyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyA0MiwgY29tcGlsZXMgaXQsIGFuZCBydW5zIGl0Lgor
ICAKKyAgTExWTU1vZHVsZVJlZiBtb2R1bGUgPSBMTFZNTW9kdWxlQ3JlYXRlV2l0aE5hbWUoInNp
bXBsZV9tb2R1bGUiKTsKKyAgCisgIExMVk1WYWx1ZVJlZiBmdW5jdGlvbiA9IExMVk1BZGRGdW5j
dGlvbigKKyAgICBtb2R1bGUsICJzaW1wbGVfZnVuY3Rpb24iLCBMTFZNRnVuY3Rpb25UeXBlKExM
Vk1JbnQzMlR5cGUoKSwgMCwgMCwgMCkpOworICBMTFZNU2V0RnVuY3Rpb25DYWxsQ29udihmdW5j
dGlvbiwgTExWTUNDYWxsQ29udik7CisgIAorICBMTFZNQmFzaWNCbG9ja1JlZiBlbnRyeSA9IExM
Vk1BcHBlbmRCYXNpY0Jsb2NrKGZ1bmN0aW9uLCAiZW50cnkiKTsKKyAgTExWTUJ1aWxkZXJSZWYg
YnVpbGRlciA9IExMVk1DcmVhdGVCdWlsZGVyKCk7CisgIExMVk1Qb3NpdGlvbkJ1aWxkZXJBdEVu
ZChidWlsZGVyLCBlbnRyeSk7CisgIExMVk1CdWlsZFJldChidWlsZGVyLCBMTFZNQ29uc3RJbnQo
TExWTUludDMyVHlwZSgpLCA0MiwgMCkpOworICAKKyAgTExWTVZlcmlmeU1vZHVsZShtb2R1bGUs
IExMVk1BYm9ydFByb2Nlc3NBY3Rpb24sICZlcnJvcik7CisgIExMVk1EaXNwb3NlTWVzc2FnZShl
cnJvcik7CisgIAorICBMTFZNRGlzcG9zZUJ1aWxkZXIoYnVpbGRlcik7CisgIAorICBMTFZNTUNK
SVRDb21waWxlck9wdGlvbnMgb3B0aW9uczsKKyAgbWVtc2V0KCZvcHRpb25zLCAwLCBzaXplb2Yo
b3B0aW9ucykpOworICBvcHRpb25zLk9wdExldmVsID0gMjsKKyAgb3B0aW9ucy5Ob0ZyYW1lUG9p
bnRlckVsaW0gPSBmYWxzZTsgLy8gSnVzdCBlbnN1cmUgdGhhdCB0aGlzIGZpZWxkIHN0aWxsIGV4
aXN0cy4KKyAgCisgIExMVk1FeGVjdXRpb25FbmdpbmVSZWYgZW5naW5lOworICBBU1NFUlRfRVEo
CisgICAgMCwgTExWTUNyZWF0ZU1DSklUQ29tcGlsZXJGb3JNb2R1bGUoJmVuZ2luZSwgbW9kdWxl
LCAmb3B0aW9ucywgc2l6ZW9mKG9wdGlvbnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZlcnJvcikpOworICAKKyAgTExWTVBhc3NNYW5hZ2VyUmVmIHBhc3MgPSBM
TFZNQ3JlYXRlUGFzc01hbmFnZXIoKTsKKyAgTExWTUFkZFRhcmdldERhdGEoTExWTUdldEV4ZWN1
dGlvbkVuZ2luZVRhcmdldERhdGEoZW5naW5lKSwgcGFzcyk7CisgIExMVk1BZGRDb25zdGFudFBy
b3BhZ2F0aW9uUGFzcyhwYXNzKTsKKyAgTExWTUFkZEluc3RydWN0aW9uQ29tYmluaW5nUGFzcyhw
YXNzKTsKKyAgTExWTVJ1blBhc3NNYW5hZ2VyKHBhc3MsIG1vZHVsZSk7CisgIExMVk1EaXNwb3Nl
UGFzc01hbmFnZXIocGFzcyk7CisgIAorICB1bmlvbiB7CisgICAgdm9pZCAqcmF3OworICAgIGlu
dCAoKnVzYWJsZSkoKTsKKyAgfSBmdW5jdGlvblBvaW50ZXI7CisgIGZ1bmN0aW9uUG9pbnRlci5y
YXcgPSBMTFZNR2V0UG9pbnRlclRvR2xvYmFsKGVuZ2luZSwgZnVuY3Rpb24pOworICAKKyAgRVhQ
RUNUX0VRKDQyLCBmdW5jdGlvblBvaW50ZXIudXNhYmxlKCkpOworICAKKyAgTExWTURpc3Bvc2VF
eGVjdXRpb25FbmdpbmUoZW5naW5lKTsKK30KKwpJbmRleDogdW5pdHRlc3RzL0V4ZWN1dGlvbkVu
Z2luZS9NQ0pJVC9NQ0pJVFRlc3RBUElDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB1bml0dGVzdHMv
RXhlY3V0aW9uRW5naW5lL01DSklUL01DSklUVGVzdEFQSUNvbW1vbi5oCShyZXZpc2lvbiAwKQor
KysgdW5pdHRlc3RzL0V4ZWN1dGlvbkVuZ2luZS9NQ0pJVC9NQ0pJVFRlc3RBUElDb21tb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc3IEBACisvLz09PS0gTUNKSVRUZXN0QmFzZS5oIC0g
Q29tbW9uIGJhc2UgY2xhc3MgZm9yIE1DSklUIFVuaXQgdGVzdHMgIC0tLS0tLS0tLS09PT0vLwor
Ly8KKy8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1
cmUKKy8vCisvLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkg
b2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKKy8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3Ig
ZGV0YWlscy4KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy8KKy8vIFRoaXMgY2xhc3Mg
aW1wbGVtZW50cyBmdW5jdGlvbmFsaXR5IHNoYXJlZCBieSBib3RoIE1DSklUIEMgQVBJIHRlc3Rz
LCBhbmQKKy8vIHRoZSBDKysgQVBJIHRlc3RzLgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8v
CisKKyNpZm5kZWYgTUNKSVRfVEVTVF9BUElfQ09NTU9OX0gKKyNkZWZpbmUgTUNKSVRfVEVTVF9B
UElfQ09NTU9OX0gKKworI2luY2x1ZGUgImxsdm0vQURUL1NtYWxsVmVjdG9yLmgiCisjaW5jbHVk
ZSAibGx2bS9BRFQvVHJpcGxlLmgiCisjaW5jbHVkZSAibGx2bS9TdXBwb3J0L0hvc3QuaCIKKyNp
bmNsdWRlICJsbHZtL1N1cHBvcnQvVGFyZ2V0U2VsZWN0LmgiCisKKy8vIFVzZWQgdG8gc2tpcCB0
ZXN0cyBvbiB1bnN1cHBvcnRlZCBhcmNoaXRlY3R1cmVzIGFuZCBvcGVyYXRpbmcgc3lzdGVtcy4K
Ky8vIFRvIHNraXAgYSB0ZXN0LCBhZGQgdGhpcyBtYWNybyBhdCB0aGUgdG9wIG9mIGEgdGVzdC1j
YXNlIGluIGEgc3VpdGUgdGhhdAorLy8gaW5oZXJpdHMgZnJvbSBNQ0pJVFRlc3RCYXNlLiBTZWUg
TUNKSVRUZXN0LmNwcCBmb3IgZXhhbXBsZXMuCisjZGVmaW5lIFNLSVBfVU5TVVBQT1JURURfUExB
VEZPUk0gXAorICBkbyBcCisgICAgaWYgKCFBcmNoU3VwcG9ydHNNQ0pJVCgpIHx8ICFPU1N1cHBv
cnRzTUNKSVQoKSkgXAorICAgICAgcmV0dXJuOyBcCisgIHdoaWxlKDApCisKK25hbWVzcGFjZSBs
bHZtIHsKKworY2xhc3MgTUNKSVRUZXN0QVBJQ29tbW9uIHsKK3Byb3RlY3RlZDoKKyAgTUNKSVRU
ZXN0QVBJQ29tbW9uKCkKKyAgICA6IEhvc3RUcmlwbGUoc3lzOjpnZXRQcm9jZXNzVHJpcGxlKCkp
CisgIHsKKyAgICBJbml0aWFsaXplTmF0aXZlVGFyZ2V0KCk7CisgICAgSW5pdGlhbGl6ZU5hdGl2
ZVRhcmdldEFzbVByaW50ZXIoKTsKKworI2lmZGVmIExMVk1fT05fV0lOMzIKKyAgICAvLyBPbiBX
aW5kb3dzLCBnZW5lcmF0ZSBFTEYgb2JqZWN0cyBieSBzcGVjaWZ5aW5nICItZWxmIiBpbiB0cmlw
bGUKKyAgICBIb3N0VHJpcGxlICs9ICItZWxmIjsKKyNlbmRpZiAvLyBMTFZNX09OX1dJTjMyCisg
ICAgSG9zdFRyaXBsZSA9IFRyaXBsZTo6bm9ybWFsaXplKEhvc3RUcmlwbGUpOworICB9CisKKyAg
Ly8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgaG9zdCBhcmNoaXRlY3R1cmUgaXMga25vd24gdG8gc3Vw
cG9ydCBNQ0pJVAorICBib29sIEFyY2hTdXBwb3J0c01DSklUKCkgeworICAgIFRyaXBsZSBIb3N0
KEhvc3RUcmlwbGUpOworICAgIGlmIChzdGQ6OmZpbmQoU3VwcG9ydGVkQXJjaHMuYmVnaW4oKSwg
U3VwcG9ydGVkQXJjaHMuZW5kKCksIEhvc3QuZ2V0QXJjaCgpKQorICAgICAgICA9PSBTdXBwb3J0
ZWRBcmNocy5lbmQoKSkgeworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4g
dHJ1ZTsKKyAgfQorCisgIC8vLyBSZXR1cm5zIHRydWUgaWYgdGhlIGhvc3QgT1MgaXMga25vd24g
dG8gc3VwcG9ydCBNQ0pJVAorICBib29sIE9TU3VwcG9ydHNNQ0pJVCgpIHsKKyAgICBUcmlwbGUg
SG9zdChIb3N0VHJpcGxlKTsKKyAgICBpZiAoc3RkOjpmaW5kKFVuc3VwcG9ydGVkT1NzLmJlZ2lu
KCksIFVuc3VwcG9ydGVkT1NzLmVuZCgpLCBIb3N0LmdldE9TKCkpCisgICAgICAgID09IFVuc3Vw
cG9ydGVkT1NzLmVuZCgpKSB7CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJu
IGZhbHNlOworICB9CisKKyAgc3RkOjpzdHJpbmcgSG9zdFRyaXBsZTsKKyAgU21hbGxWZWN0b3I8
VHJpcGxlOjpBcmNoVHlwZSwgND4gU3VwcG9ydGVkQXJjaHM7CisgIFNtYWxsVmVjdG9yPFRyaXBs
ZTo6T1NUeXBlLCA0PiBVbnN1cHBvcnRlZE9TczsKK307CisKK30gLy8gbmFtZXNwYWNlIGxsdm0K
KworI2VuZGlmIC8vIE1DSklUX1RFU1RfQVBJX0NPTU1PTl9ICisKSW5kZXg6IHVuaXR0ZXN0cy9F
eGVjdXRpb25FbmdpbmUvTUNKSVQvTUNKSVRUZXN0QmFzZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHVuaXR0
ZXN0cy9FeGVjdXRpb25FbmdpbmUvTUNKSVQvTUNKSVRUZXN0QmFzZS5oCShyZXZpc2lvbiAxODA2
ODkpCisrKyB1bml0dGVzdHMvRXhlY3V0aW9uRW5naW5lL01DSklUL01DSklUVGVzdEJhc2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMTcsOCArMTcsNiBAQAogI2lmbmRlZiBNQ0pJVF9URVNUX0JBU0Vf
SAogI2RlZmluZSBNQ0pJVF9URVNUX0JBU0VfSAogCi0jaW5jbHVkZSAibGx2bS9BRFQvU21hbGxW
ZWN0b3IuaCIKLSNpbmNsdWRlICJsbHZtL0FEVC9UcmlwbGUuaCIKICNpbmNsdWRlICJsbHZtL0Nv
bmZpZy9jb25maWcuaCIKICNpbmNsdWRlICJsbHZtL0V4ZWN1dGlvbkVuZ2luZS9FeGVjdXRpb25F
bmdpbmUuaCIKICNpbmNsdWRlICJsbHZtL0V4ZWN1dGlvbkVuZ2luZS9TZWN0aW9uTWVtb3J5TWFu
YWdlci5oIgpAQCAtMjgsMjEgKzI2LDExIEBACiAjaW5jbHVkZSAibGx2bS9JUi9Nb2R1bGUuaCIK
ICNpbmNsdWRlICJsbHZtL0lSL1R5cGVCdWlsZGVyLmgiCiAjaW5jbHVkZSAibGx2bS9TdXBwb3J0
L0NvZGVHZW4uaCIKLSNpbmNsdWRlICJsbHZtL1N1cHBvcnQvSG9zdC5oIgotI2luY2x1ZGUgImxs
dm0vU3VwcG9ydC9UYXJnZXRTZWxlY3QuaCIKKyNpbmNsdWRlICJNQ0pJVFRlc3RBUElDb21tb24u
aCIKIAotLy8gVXNlZCB0byBza2lwIHRlc3RzIG9uIHVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZXMg
YW5kIG9wZXJhdGluZyBzeXN0ZW1zLgotLy8gVG8gc2tpcCBhIHRlc3QsIGFkZCB0aGlzIG1hY3Jv
IGF0IHRoZSB0b3Agb2YgYSB0ZXN0LWNhc2UgaW4gYSBzdWl0ZSB0aGF0Ci0vLyBpbmhlcml0cyBm
cm9tIE1DSklUVGVzdEJhc2UuIFNlZSBNQ0pJVFRlc3QuY3BwIGZvciBleGFtcGxlcy4KLSNkZWZp
bmUgU0tJUF9VTlNVUFBPUlRFRF9QTEFURk9STSBcCi0gIGRvIFwKLSAgICBpZiAoIUFyY2hTdXBw
b3J0c01DSklUKCkgfHwgIU9TU3VwcG9ydHNNQ0pJVCgpKSBcCi0gICAgICByZXR1cm47IFwKLSAg
d2hpbGUoMCk7Ci0KIG5hbWVzcGFjZSBsbHZtIHsKIAotY2xhc3MgTUNKSVRUZXN0QmFzZSB7Citj
bGFzcyBNQ0pJVFRlc3RCYXNlIDogcHVibGljIE1DSklUVGVzdEFQSUNvbW1vbiB7CiBwcm90ZWN0
ZWQ6CiAKICAgTUNKSVRUZXN0QmFzZSgpCkBAIC01MiwxNyArNDAsNyBAQAogICAgICwgTUFyY2go
IiIpCiAgICAgLCBCdWlsZGVyKENvbnRleHQpCiAgICAgLCBNTShuZXcgU2VjdGlvbk1lbW9yeU1h
bmFnZXIpCi0gICAgLCBIb3N0VHJpcGxlKHN5czo6Z2V0UHJvY2Vzc1RyaXBsZSgpKQogICB7Ci0g
ICAgSW5pdGlhbGl6ZU5hdGl2ZVRhcmdldCgpOwotICAgIEluaXRpYWxpemVOYXRpdmVUYXJnZXRB
c21QcmludGVyKCk7Ci0KLSNpZmRlZiBMTFZNX09OX1dJTjMyCi0gICAgLy8gT24gV2luZG93cywg
Z2VuZXJhdGUgRUxGIG9iamVjdHMgYnkgc3BlY2lmeWluZyAiLWVsZiIgaW4gdHJpcGxlCi0gICAg
SG9zdFRyaXBsZSArPSAiLWVsZiI7Ci0jZW5kaWYgLy8gTExWTV9PTl9XSU4zMgotICAgIEhvc3RU
cmlwbGUgPSBUcmlwbGU6Om5vcm1hbGl6ZShIb3N0VHJpcGxlKTsKLQogICAgIC8vIFRoZSBhcmNo
aXRlY3R1cmVzIGJlbG93IGFyZSBrbm93biB0byBiZSBjb21wYXRpYmxlIHdpdGggTUNKSVQgYXMg
dGhleQogICAgIC8vIGFyZSBjb3BpZWQgZnJvbSB0ZXN0L0V4ZWN1dGlvbkVuZ2luZS9NQ0pJVC9s
aXQubG9jYWwuY2ZnIGFuZCBzaG91bGQgYmUKICAgICAvLyBrZXB0IGluIHN5bmMuCkBAIC03OCwy
NiArNTYsNiBAQAogICAgIFVuc3VwcG9ydGVkT1NzLnB1c2hfYmFjayhUcmlwbGU6OkRhcndpbik7
CiAgIH0KIAotICAvLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBob3N0IGFyY2hpdGVjdHVyZSBpcyBr
bm93biB0byBzdXBwb3J0IE1DSklUCi0gIGJvb2wgQXJjaFN1cHBvcnRzTUNKSVQoKSB7Ci0gICAg
VHJpcGxlIEhvc3QoSG9zdFRyaXBsZSk7Ci0gICAgaWYgKHN0ZDo6ZmluZChTdXBwb3J0ZWRBcmNo
cy5iZWdpbigpLCBTdXBwb3J0ZWRBcmNocy5lbmQoKSwgSG9zdC5nZXRBcmNoKCkpCi0gICAgICAg
ID09IFN1cHBvcnRlZEFyY2hzLmVuZCgpKSB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
ICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgLy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgaG9zdCBP
UyBpcyBrbm93biB0byBzdXBwb3J0IE1DSklUCi0gIGJvb2wgT1NTdXBwb3J0c01DSklUKCkgewot
ICAgIFRyaXBsZSBIb3N0KEhvc3RUcmlwbGUpOwotICAgIGlmIChzdGQ6OmZpbmQoVW5zdXBwb3J0
ZWRPU3MuYmVnaW4oKSwgVW5zdXBwb3J0ZWRPU3MuZW5kKCksIEhvc3QuZ2V0T1MoKSkKLSAgICAg
ICAgPT0gVW5zdXBwb3J0ZWRPU3MuZW5kKCkpIHsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQogICBNb2R1bGUgKmNyZWF0ZUVtcHR5TW9kdWxlKFN0
cmluZ1JlZiBOYW1lKSB7CiAgICAgTW9kdWxlICogTSA9IG5ldyBNb2R1bGUoTmFtZSwgQ29udGV4
dCk7CiAgICAgTS0+c2V0VGFyZ2V0VHJpcGxlKFRyaXBsZTo6bm9ybWFsaXplKEhvc3RUcmlwbGUp
KTsKQEAgLTIzMiwxMCArMTkwLDYgQEAKICAgSVJCdWlsZGVyPD4gQnVpbGRlcjsKICAgSklUTWVt
b3J5TWFuYWdlciAqTU07CiAKLSAgc3RkOjpzdHJpbmcgSG9zdFRyaXBsZTsKLSAgU21hbGxWZWN0
b3I8VHJpcGxlOjpBcmNoVHlwZSwgND4gU3VwcG9ydGVkQXJjaHM7Ci0gIFNtYWxsVmVjdG9yPFRy
aXBsZTo6T1NUeXBlLCA0PiBVbnN1cHBvcnRlZE9TczsKLQogICBPd25pbmdQdHI8TW9kdWxlPiBN
OwogfTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>