<?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>130791</bug_id>
          
          <creation_ts>2014-03-26 12:36:05 -0700</creation_ts>
          <short_desc>FTL should use stackmap register liveness</short_desc>
          <delta_ts>2014-04-12 13:42:19 -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>
          <dependson>130792</dependson>
    
    <dependson>130801</dependson>
    
    <dependson>130821</dependson>
    
    <dependson>130924</dependson>
    
    <dependson>130948</dependson>
          <blocked>112840</blocked>
    
    <blocked>130885</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>atrick</cc>
    
    <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>juergen</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>994678</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-26 12:36:05 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994964</commentid>
    <comment_count>1</comment_count>
    <who name="Andrew Trick">atrick</who>
    <bug_when>2014-03-27 10:30:11 -0700</bug_when>
    <thetext>The LLVM side of this is untested. We need a runtime mode that clobbers the dead regs. Ideally we could also have a mode to disable inline caches (cause them to fail) to test as many patchpoint liveouts as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994983</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-27 11:24:18 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; The LLVM side of this is untested. We need a runtime mode that clobbers the dead regs. Ideally we could also have a mode to disable inline caches (cause them to fail) to test as many patchpoint liveouts as possible.

That&apos;s a great idea and it should be easy to add such a mode. I&apos;ll investigate adding it as part of the patch that glues all of this together. Hopefully doing so won&apos;t slow the usual test cycle down too much. I wonder if we could also strengthen this by making the C++ code clobber all registers, ideally with a runtime switch, and even better if it doesn&apos;t involve too many hard-to-maintain hacks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995068</commentid>
    <comment_count>3</comment_count>
    <who name="Andrew Trick">atrick</who>
    <bug_when>2014-03-27 14:51:56 -0700</bug_when>
    <thetext>Regarding LLVM-based clobbering, see http://llvm.org/pr19267.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995229</commentid>
    <comment_count>4</comment_count>
      <attachid>228021</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-27 21:03:21 -0700</bug_when>
    <thetext>Created attachment 228021
work in progress

This doesn&apos;t work yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995233</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-27 21:08:44 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=228021) [details]
&gt; work in progress
&gt; 
&gt; This doesn&apos;t work yet.

deltablue is super unhappy, I will investigate why.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995234</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-27 22:00:26 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; Created an attachment (id=228021) [details] [details]
&gt; &gt; work in progress
&gt; &gt; 
&gt; &gt; This doesn&apos;t work yet.
&gt; 
&gt; deltablue is super unhappy, I will investigate why.

Heh, it&apos;s less likely to fail in a debug build.  Because of course the C++ code will use fewer registers in debug mode. ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995453</commentid>
    <comment_count>7</comment_count>
      <attachid>228084</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-28 14:36:15 -0700</bug_when>
    <thetext>Created attachment 228084
more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000198</commentid>
    <comment_count>8</comment_count>
      <attachid>229207</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-12 11:29:46 -0700</bug_when>
    <thetext>Created attachment 229207
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000199</commentid>
    <comment_count>9</comment_count>
      <attachid>229207</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-04-12 11:33:35 -0700</bug_when>
    <thetext>Comment on attachment 229207
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000224</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-12 13:42:19 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/167187</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228021</attachid>
            <date>2014-03-27 21:03:21 -0700</date>
            <delta_ts>2014-03-28 14:36:15 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>5389</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY2Mzk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBA
CisyMDE0LTAzLTI3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RlRMIHNob3VsZCB1c2Ugc3RhY2ttYXAgcmVnaXN0ZXIgbGl2ZW5lc3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDc5MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZnRsL0ZUTENvbXBpbGUuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OmZpeEZ1bmN0aW9uQmFzZWRPblN0YWNrTWFwcyk6CisgICAgICAg
ICogZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHA6CisgICAgICAgICogZnRsL0ZUTFN0YWNrTWFwcy5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6U3RhY2tNYXBzOjpSZWNvcmQ6OmxvY2F0aW9uU2V0KToK
KyAgICAgICAgKEpTQzo6RlRMOjpTdGFja01hcHM6OlJlY29yZDo6bGl2ZU91dHNTZXQpOgorICAg
ICAgICAoSlNDOjpGVEw6OlN0YWNrTWFwczo6UmVjb3JkOjp1c2VkUmVnaXN0ZXJTZXQpOgorICAg
ICAgICAqIGZ0bC9GVExTdGFja01hcHMuaDoKKwogMjAxNC0wMy0yNyAgT2xpdmVyIEh1bnQgIDxv
bGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgc3ByZWFkIG9wZXJhbmQgaW4gfG5l
d3wgZXhwcmVzc2lvbnMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGls
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxl
LmNwcAkocmV2aXNpb24gMTY2MzU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
b21waWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAwLDkgKzMwMCw3IEBAIHN0YXRpYyB2b2lk
IGZpeEZ1bmN0aW9uQmFzZWRPblN0YWNrTWFwcygKICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBpdGVyLT52YWx1ZS5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgICAgIFN0
YWNrTWFwczo6UmVjb3JkJiByZWNvcmQgPSBpdGVyLT52YWx1ZVtpXTsKICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBVc2UgdGhlIGxpdmVuZXNzIGluZm9ybWF0aW9uIHRo
YXQgTExWTSBnaXZlcyB1cy4KLSAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwNzkxCi0gICAgICAgICAgICAgICAgUmVnaXN0ZXJTZXQg
dXNlZFJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0OjphbGxSZWdpc3RlcnMoKTsKKyAgICAgICAgICAg
ICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gcmVjb3JkLnVzZWRSZWdpc3RlclNldCgp
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIEdQUlJlZyByZXN1bHQgPSByZWNv
cmQubG9jYXRpb25zWzBdLmRpcmVjdEdQUigpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBiYXNl
ID0gcmVjb3JkLmxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKTsKQEAgLTMzOSw5ICszMzcsNyBAQCBz
dGF0aWMgdm9pZCBmaXhGdW5jdGlvbkJhc2VkT25TdGFja01hcHMoCiAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRlci0+dmFsdWUuc2l6ZSgpOyArK2kpIHsKICAgICAgICAg
ICAgICAgICBTdGFja01hcHM6OlJlY29yZCYgcmVjb3JkID0gaXRlci0+dmFsdWVbaV07CiAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gRklYTUU6IFVzZSB0aGUgbGl2ZW5lc3Mg
aW5mb3JtYXRpb24gdGhhdCBMTFZNIGdpdmVzIHVzLgotICAgICAgICAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzA3OTEKLSAgICAgICAgICAgICAg
ICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OmFsbFJlZ2lzdGVycygp
OworICAgICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSByZWNvcmQudXNl
ZFJlZ2lzdGVyU2V0KCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgR1BSUmVn
IGJhc2UgPSByZWNvcmQubG9jYXRpb25zWzBdLmRpcmVjdEdQUigpOwogICAgICAgICAgICAgICAg
IEdQUlJlZyB2YWx1ZSA9IHJlY29yZC5sb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3BwCShyZXZpc2lv
biAxNjYzNTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDkgKzg0LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
c3RhY2tCeXRlc05lZWRlZEZvclJldHVybkFkZHJlc3MgKwogICAgICAgICAgICAgKG1fdXNlZFJl
Z2lzdGVycy5udW1iZXJPZlNldFJlZ2lzdGVycygpIC0gbnVtYmVyT2ZDYWxsaW5nQ29udmVudGlv
blJlZ2lzdGVycykgKiB3b3JkU2l6ZTsKICAgICAgICAgCi0gICAgICAgIHNpemVfdCBzdGFja0Fs
aWdubWVudCA9IDE2OwotICAgICAgICAKLSAgICAgICAgbV9zdGFja0J5dGVzTmVlZGVkID0gKG1f
c3RhY2tCeXRlc05lZWRlZCArIHN0YWNrQWxpZ25tZW50IC0gMSkgJiB+KHN0YWNrQWxpZ25tZW50
IC0gMSk7CisgICAgICAgIG1fc3RhY2tCeXRlc05lZWRlZCA9IChtX3N0YWNrQnl0ZXNOZWVkZWQg
KyBzdGFja0FsaWdubWVudEJ5dGVzKCkgLSAxKSAmIH4oc3RhY2tBbGlnbm1lbnRCeXRlcygpIC0g
MSk7CiAgICAgICAgIAogICAgICAgICBtX2ppdC5zdWJQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIobV9zdGFja0J5dGVzTmVlZGVkKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdp
c3Rlcik7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGFj
a01hcHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3Rh
Y2tNYXBzLmNwcAkocmV2aXNpb24gMTY2MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExTdGFja01hcHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNiArMTQ5LDQ0IEBAIHZv
aWQgU3RhY2tNYXBzOjpSZWNvcmQ6OmR1bXAoUHJpbnRTdHJlYW0KICAgICAgICAgbGlzdER1bXAo
bGl2ZU91dHMpLCAiXSkiKTsKIH0KIAorUmVnaXN0ZXJTZXQgU3RhY2tNYXBzOjpSZWNvcmQ6Omxv
Y2F0aW9uU2V0KCkgY29uc3QKK3sKKyAgICBSZWdpc3RlclNldCByZXN1bHQ7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gbG9jYXRpb25zLnNpemUoKTsgaS0tOykgeworICAgICAgICBSZWcgcmVnID0g
bG9jYXRpb25zW2ldLmR3YXJmUmVnLnJlZygpOworICAgICAgICBpZiAoIXJlZykKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICByZXN1bHQuc2V0KHJlZyk7CisgICAgfQorICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK1JlZ2lzdGVyU2V0IFN0YWNrTWFwczo6UmVjb3JkOjpsaXZlT3V0c1Nl
dCgpIGNvbnN0Cit7CisgICAgUmVnaXN0ZXJTZXQgcmVzdWx0OworICAgIGZvciAodW5zaWduZWQg
aSA9IGxpdmVPdXRzLnNpemUoKTsgaS0tOykgeworICAgICAgICBMaXZlT3V0IGxpdmVPdXQgPSBs
aXZlT3V0c1tpXTsKKyAgICAgICAgUmVnIHJlZyA9IGxpdmVPdXQuZHdhcmZSZWcucmVnKCk7Cisg
ICAgICAgIC8vIEZJWE1FOiBFaXRoZXIgYXNzZXJ0IHRoYXQgc2l6ZSBpcyBub3QgZ3JlYXRlciB0
aGFuIHNpemVvZihwb2ludGVyKSwgb3IgYWN0dWFsbHkKKyAgICAgICAgLy8gc2F2ZSB0aGUgaGln
aCBiaXRzIG9mIHJlZ2lzdGVycy4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzMDg4NQorICAgICAgICBpZiAoIXJlZykgeworICAgICAgICAgICAg
ZGF0YUxvZygiSW52YWxpZCBsaXZlT3V0cyBlbnRyeSBpbjogIiwgKnRoaXMsICJcbiIpOworICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgICAg
ICByZXN1bHQuc2V0KHJlZyk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1JlZ2lz
dGVyU2V0IFN0YWNrTWFwczo6UmVjb3JkOjp1c2VkUmVnaXN0ZXJTZXQoKSBjb25zdAoreworICAg
IFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyAgICByZXN1bHQubWVyZ2UobG9jYXRpb25TZXQoKSk7Cisg
ICAgcmVzdWx0Lm1lcmdlKGxpdmVPdXRzU2V0KCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
IGJvb2wgU3RhY2tNYXBzOjpwYXJzZShEYXRhVmlldyogdmlldykKIHsKICAgICBQYXJzZUNvbnRl
eHQgY29udGV4dDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhY2tNYXBz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGFja01hcHMu
aAkocmV2aXNpb24gMTY2MzU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGFj
a01hcHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRhdGFW
aWV3LmgiCiAjaW5jbHVkZSAiRlRMRFdBUkZSZWdpc3Rlci5oIgogI2luY2x1ZGUgIkdQUkluZm8u
aCIKKyNpbmNsdWRlICJSZWdpc3RlclNldC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAK
IG5hbWVzcGFjZSBKU0MgewpAQCAtMTA2LDYgKzEwNywxMCBAQCBzdHJ1Y3QgU3RhY2tNYXBzIHsK
ICAgICAgICAgCiAgICAgICAgIGJvb2wgcGFyc2UoUGFyc2VDb250ZXh0Jik7CiAgICAgICAgIHZv
aWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworICAgICAgICAKKyAgICAgICAgUmVnaXN0ZXJT
ZXQgbGl2ZU91dHNTZXQoKSBjb25zdDsKKyAgICAgICAgUmVnaXN0ZXJTZXQgbG9jYXRpb25TZXQo
KSBjb25zdDsKKyAgICAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVyU2V0KCkgY29uc3Q7CiAg
ICAgfTsKIAogICAgIHVuc2lnbmVkIHZlcnNpb247Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228084</attachid>
            <date>2014-03-28 14:36:15 -0700</date>
            <delta_ts>2014-04-12 11:29:46 -0700</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>24664</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY2Mzk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBA
CisyMDE0LTAzLTI3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RlRMIHNob3VsZCB1c2Ugc3RhY2ttYXAgcmVnaXN0ZXIgbGl2ZW5lc3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDc5MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZnRsL0ZUTENvbXBpbGUuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OmZpeEZ1bmN0aW9uQmFzZWRPblN0YWNrTWFwcyk6CisgICAgICAg
ICogZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHA6CisgICAgICAgICogZnRsL0ZUTFN0YWNrTWFwcy5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6U3RhY2tNYXBzOjpSZWNvcmQ6OmxvY2F0aW9uU2V0KToK
KyAgICAgICAgKEpTQzo6RlRMOjpTdGFja01hcHM6OlJlY29yZDo6bGl2ZU91dHNTZXQpOgorICAg
ICAgICAoSlNDOjpGVEw6OlN0YWNrTWFwczo6UmVjb3JkOjp1c2VkUmVnaXN0ZXJTZXQpOgorICAg
ICAgICAqIGZ0bC9GVExTdGFja01hcHMuaDoKKwogMjAxNC0wMy0yNyAgT2xpdmVyIEh1bnQgIDxv
bGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgc3ByZWFkIG9wZXJhbmQgaW4gfG5l
d3wgZXhwcmVzc2lvbnMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGls
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxl
LmNwcAkocmV2aXNpb24gMTY2MzU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
b21waWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDYgKzE2MywxMyBAQCB2b2lkIGdlbmVy
YXRlSUNGYXN0UGF0aCgKICAgICB9CiB9CiAKK3N0YXRpYyBSZWdpc3RlclNldCB1c2VkUmVnaXN0
ZXJzRm9yKGNvbnN0IFN0YWNrTWFwczo6UmVjb3JkJiByZWNvcmQpCit7CisgICAgaWYgKE9wdGlv
bnM6OmFzc3VtZUFsbFJlZ3NJbkZUTElDQXJlTGl2ZSgpKQorICAgICAgICByZXR1cm4gUmVnaXN0
ZXJTZXQ6OmFsbFJlZ2lzdGVycygpOworICAgIHJldHVybiByZWNvcmQudXNlZFJlZ2lzdGVyU2V0
KCk7Cit9CisKIHN0YXRpYyB2b2lkIGZpeEZ1bmN0aW9uQmFzZWRPblN0YWNrTWFwcygKICAgICBT
dGF0ZSYgc3RhdGUsIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRDb2RlKiBqaXRDb2RlLCBHZW5l
cmF0ZWRGdW5jdGlvbiBnZW5lcmF0ZWRGdW5jdGlvbiwKICAgICBTdGFja01hcHM6OlJlY29yZE1h
cCYgcmVjb3JkTWFwLCBib29sIGRpZFNlZVVud2luZEluZm8pCkBAIC0zMDAsOSArMzA3LDcgQEAg
c3RhdGljIHZvaWQgZml4RnVuY3Rpb25CYXNlZE9uU3RhY2tNYXBzKAogICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGl0ZXItPnZhbHVlLnNpemUoKTsgKytpKSB7CiAgICAgICAg
ICAgICAgICAgU3RhY2tNYXBzOjpSZWNvcmQmIHJlY29yZCA9IGl0ZXItPnZhbHVlW2ldOwogICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gRklYTUU6IFVzZSB0aGUgbGl2ZW5lc3MgaW5m
b3JtYXRpb24gdGhhdCBMTFZNIGdpdmVzIHVzLgotICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzA3OTEKLSAgICAgICAgICAgICAgICBS
ZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OmFsbFJlZ2lzdGVycygpOwor
ICAgICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB1c2VkUmVnaXN0ZXJz
Rm9yKHJlY29yZCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgR1BSUmVnIHJl
c3VsdCA9IHJlY29yZC5sb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCk7CiAgICAgICAgICAgICAgICAg
R1BSUmVnIGJhc2UgPSByZWNvcmQubG9jYXRpb25zWzFdLmRpcmVjdEdQUigpOwpAQCAtMzM5LDkg
KzM0NCw3IEBAIHN0YXRpYyB2b2lkIGZpeEZ1bmN0aW9uQmFzZWRPblN0YWNrTWFwcygKICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpdGVyLT52YWx1ZS5zaXplKCk7ICsraSkg
ewogICAgICAgICAgICAgICAgIFN0YWNrTWFwczo6UmVjb3JkJiByZWNvcmQgPSBpdGVyLT52YWx1
ZVtpXTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogVXNlIHRo
ZSBsaXZlbmVzcyBpbmZvcm1hdGlvbiB0aGF0IExMVk0gZ2l2ZXMgdXMuCi0gICAgICAgICAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDc5MQotICAg
ICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6YWxs
UmVnaXN0ZXJzKCk7CisgICAgICAgICAgICAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9
IHVzZWRSZWdpc3RlcnNGb3IocmVjb3JkKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBHUFJSZWcgYmFzZSA9IHJlY29yZC5sb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCk7CiAgICAg
ICAgICAgICAgICAgR1BSUmVnIHZhbHVlID0gcmVjb3JkLmxvY2F0aW9uc1sxXS5kaXJlY3RHUFIo
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5j
cHAJKHJldmlzaW9uIDE2NjM1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xv
d1BhdGhDYWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsOCBAQCBwdWJsaWM6CiAg
ICAgICAgIC8vIFdlIGRvbid0IGNhcmUgdGhhdCB5b3UncmUgdXNpbmcgY2FsbGVlLXNhdmUsIHN0
YWNrLCBvciBoYXJkd2FyZSByZWdpc3RlcnMuCiAgICAgICAgIG1fdXNlZFJlZ2lzdGVycy5leGNs
dWRlKFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKICAgICAgICAgbV91c2VkUmVnaXN0
ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7Ci0g
ICAgICAgIG1fdXNlZFJlZ2lzdGVycy5leGNsdWRlKFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVn
aXN0ZXJzKCkpOworICAgICAgICBpZiAoIU9wdGlvbnM6OmNsb2JiZXJBbGxSZWdzSW5GVExJQ1Ns
b3dQYXRoKCkpCisgICAgICAgICAgICBtX3VzZWRSZWdpc3RlcnMuZXhjbHVkZShSZWdpc3RlclNl
dDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKICAgICAgICAgCiAgICAgICAgIC8vIFRoZSByZXR1
cm4gcmVnaXN0ZXIgZG9lc24ndCBuZWVkIHRvIGJlIHNhdmVkLgogICAgICAgICBpZiAobV9yZXR1
cm5SZWdpc3RlciAhPSBJbnZhbGlkR1BSUmVnKQpAQCAtNjcsNyArNjgsOCBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAoc3RkOjptYXgobV9udW1BcmdzLCBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNU
RVJTKSAtIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMpICogd29yZFNpemU7CiAgICAgICAg
IAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBzdGQ6Om1pbihOVU1CRVJfT0ZfQVJHVU1FTlRf
UkVHSVNURVJTLCBudW1BcmdzKTsgaS0tOykKLSAgICAgICAgICAgIG1fY2FsbGluZ0NvbnZlbnRp
b25SZWdpc3RlcnMuc2V0KEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihpKSk7CisgICAgICAg
ICAgICBtX2FyZ3VtZW50UmVnaXN0ZXJzLnNldChHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIo
aSkpOworICAgICAgICBtX2NhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJzLm1lcmdlKG1fYXJndW1l
bnRSZWdpc3RlcnMpOwogICAgICAgICBpZiAocmV0dXJuUmVnaXN0ZXIgIT0gSW52YWxpZEdQUlJl
ZykKICAgICAgICAgICAgIG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMuc2V0KEdQUkluZm86
OnJldHVyblZhbHVlR1BSKTsKICAgICAgICAgbV9jYWxsaW5nQ29udmVudGlvblJlZ2lzdGVycy5m
aWx0ZXIobV91c2VkUmVnaXN0ZXJzKTsKQEAgLTg0LDkgKzg2LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgc3RhY2tCeXRlc05lZWRlZEZvclJldHVybkFkZHJlc3MgKwogICAgICAgICAgICAgKG1f
dXNlZFJlZ2lzdGVycy5udW1iZXJPZlNldFJlZ2lzdGVycygpIC0gbnVtYmVyT2ZDYWxsaW5nQ29u
dmVudGlvblJlZ2lzdGVycykgKiB3b3JkU2l6ZTsKICAgICAgICAgCi0gICAgICAgIHNpemVfdCBz
dGFja0FsaWdubWVudCA9IDE2OwotICAgICAgICAKLSAgICAgICAgbV9zdGFja0J5dGVzTmVlZGVk
ID0gKG1fc3RhY2tCeXRlc05lZWRlZCArIHN0YWNrQWxpZ25tZW50IC0gMSkgJiB+KHN0YWNrQWxp
Z25tZW50IC0gMSk7CisgICAgICAgIG1fc3RhY2tCeXRlc05lZWRlZCA9IChtX3N0YWNrQnl0ZXNO
ZWVkZWQgKyBzdGFja0FsaWdubWVudEJ5dGVzKCkgLSAxKSAmIH4oc3RhY2tBbGlnbm1lbnRCeXRl
cygpIC0gMSk7CiAgICAgICAgIAogICAgICAgICBtX2ppdC5zdWJQdHIoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIobV9zdGFja0J5dGVzTmVlZGVkKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50
ZXJSZWdpc3Rlcik7CiAgICAgICAgIApAQCAtMTMzLDcgKzEzMyw3IEBAIHB1YmxpYzoKICAgICAK
ICAgICBTbG93UGF0aENhbGxLZXkga2V5V2l0aFRhcmdldCh2b2lkKiBjYWxsVGFyZ2V0KSBjb25z
dAogICAgIHsKLSAgICAgICAgcmV0dXJuIFNsb3dQYXRoQ2FsbEtleSh1c2VkUmVnaXN0ZXJzKCks
IGNhbGxUYXJnZXQsIG9mZnNldCgpKTsKKyAgICAgICAgcmV0dXJuIFNsb3dQYXRoQ2FsbEtleSh1
c2VkUmVnaXN0ZXJzKCksIGNhbGxUYXJnZXQsIG1fYXJndW1lbnRSZWdpc3RlcnMsIG9mZnNldCgp
KTsKICAgICB9CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgbWFrZUNhbGwodm9pZCog
Y2FsbFRhcmdldCwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0KiBleGNlcHRpb25UYXJnZXQpCkBA
IC0xNDksNiArMTQ5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTdGF0ZSYgbV9zdGF0ZTsK
ICAgICBSZWdpc3RlclNldCBtX3VzZWRSZWdpc3RlcnM7CisgICAgUmVnaXN0ZXJTZXQgbV9hcmd1
bWVudFJlZ2lzdGVyczsKICAgICBSZWdpc3RlclNldCBtX2NhbGxpbmdDb252ZW50aW9uUmVnaXN0
ZXJzOwogICAgIENDYWxsSGVscGVycyYgbV9qaXQ7CiAgICAgdW5zaWduZWQgbV9udW1BcmdzOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5
LmNwcAkocmV2aXNpb24gMTY2MzU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExT
bG93UGF0aENhbGxLZXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAogdm9pZCBTbG93UGF0aENhbGxLZXk6OmR1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBvdXQucHJpbnQoIjx1c2VkUmVnaXN0ZXJz
ID0gIiwgbV91c2VkUmVnaXN0ZXJzLCAiLCBvZmZzZXQgPSAiLCBtX29mZnNldCwgIiwgY2FsbFRh
cmdldCA9ICIsIFJhd1BvaW50ZXIobV9jYWxsVGFyZ2V0KSwgIj4iKTsKKyAgICBvdXQucHJpbnQo
Ijx1c2VkUmVnaXN0ZXJzID0gIiwgbV91c2VkUmVnaXN0ZXJzLCAiLCBvZmZzZXQgPSAiLCBtX29m
ZnNldCwgIiwgY2FsbFRhcmdldCA9ICIsIFJhd1BvaW50ZXIobV9jYWxsVGFyZ2V0KSwgIiwgYXJn
dW1lbnRSZWdpc3RlcnMgPSAiLCBtX2FyZ3VtZW50UmVnaXN0ZXJzLCAiPiIpOwogfQogCiB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6RlRMCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TFNsb3dQYXRoQ2FsbEtleS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMU2xvd1BhdGhDYWxsS2V5LmgJKHJldmlzaW9uIDE2NjM1OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmgJKHdvcmtpbmcgY29weSkKQEAgLTUw
LDIwICs1MCwyNCBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KICAgICAKLSAgICBTbG93UGF0aENh
bGxLZXkoY29uc3QgUmVnaXN0ZXJTZXQmIHNldCwgdm9pZCogY2FsbFRhcmdldCwgcHRyZGlmZl90
IG9mZnNldCkKKyAgICBTbG93UGF0aENhbGxLZXkoCisgICAgICAgIGNvbnN0IFJlZ2lzdGVyU2V0
JiBzZXQsIHZvaWQqIGNhbGxUYXJnZXQsIGNvbnN0IFJlZ2lzdGVyU2V0JiBhcmd1bWVudFJlZ2lz
dGVycywKKyAgICAgICAgcHRyZGlmZl90IG9mZnNldCkKICAgICAgICAgOiBtX3VzZWRSZWdpc3Rl
cnMoc2V0KQogICAgICAgICAsIG1fY2FsbFRhcmdldChjYWxsVGFyZ2V0KQorICAgICAgICAsIG1f
YXJndW1lbnRSZWdpc3RlcnMoYXJndW1lbnRSZWdpc3RlcnMpCiAgICAgICAgICwgbV9vZmZzZXQo
b2Zmc2V0KQogICAgIHsKICAgICB9CiAgICAgCiAgICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMoKSBjb25zdCB7IHJldHVybiBtX3VzZWRSZWdpc3RlcnM7IH0KICAgICB2b2lkKiBj
YWxsVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsVGFyZ2V0OyB9CisgICAgY29uc3QgUmVn
aXN0ZXJTZXQmIGFyZ3VtZW50UmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9hcmd1bWVudFJl
Z2lzdGVyczsgfQogICAgIHB0cmRpZmZfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNl
dDsgfQogICAgIAogICAgIFNsb3dQYXRoQ2FsbEtleSB3aXRoQ2FsbFRhcmdldCh2b2lkKiBjYWxs
VGFyZ2V0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIFNsb3dQYXRoQ2FsbEtleSh1c2VkUmVnaXN0
ZXJzKCksIGNhbGxUYXJnZXQsIG9mZnNldCgpKTsKKyAgICAgICAgcmV0dXJuIFNsb3dQYXRoQ2Fs
bEtleSh1c2VkUmVnaXN0ZXJzKCksIGNhbGxUYXJnZXQsIGFyZ3VtZW50UmVnaXN0ZXJzKCksIG9m
ZnNldCgpKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7
CkBAIC0xMDIsNiArMTA2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBSZWdpc3RlclNldCBt
X3VzZWRSZWdpc3RlcnM7CiAgICAgdm9pZCogbV9jYWxsVGFyZ2V0OworICAgIFJlZ2lzdGVyU2V0
IG1fYXJndW1lbnRSZWdpc3RlcnM7CiAgICAgcHRyZGlmZl90IG1fb2Zmc2V0OwogfTsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGFja01hcHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhY2tNYXBzLmNwcAkocmV2aXNpb24g
MTY2MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGFja01hcHMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDksNiArMTQ5LDQ0IEBAIHZvaWQgU3RhY2tNYXBzOjpSZWNvcmQ6
OmR1bXAoUHJpbnRTdHJlYW0KICAgICAgICAgbGlzdER1bXAobGl2ZU91dHMpLCAiXSkiKTsKIH0K
IAorUmVnaXN0ZXJTZXQgU3RhY2tNYXBzOjpSZWNvcmQ6OmxvY2F0aW9uU2V0KCkgY29uc3QKK3sK
KyAgICBSZWdpc3RlclNldCByZXN1bHQ7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbG9jYXRpb25z
LnNpemUoKTsgaS0tOykgeworICAgICAgICBSZWcgcmVnID0gbG9jYXRpb25zW2ldLmR3YXJmUmVn
LnJlZygpOworICAgICAgICBpZiAoIXJlZykKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICByZXN1bHQuc2V0KHJlZyk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1JlZ2lz
dGVyU2V0IFN0YWNrTWFwczo6UmVjb3JkOjpsaXZlT3V0c1NldCgpIGNvbnN0Cit7CisgICAgUmVn
aXN0ZXJTZXQgcmVzdWx0OworICAgIGZvciAodW5zaWduZWQgaSA9IGxpdmVPdXRzLnNpemUoKTsg
aS0tOykgeworICAgICAgICBMaXZlT3V0IGxpdmVPdXQgPSBsaXZlT3V0c1tpXTsKKyAgICAgICAg
UmVnIHJlZyA9IGxpdmVPdXQuZHdhcmZSZWcucmVnKCk7CisgICAgICAgIC8vIEZJWE1FOiBFaXRo
ZXIgYXNzZXJ0IHRoYXQgc2l6ZSBpcyBub3QgZ3JlYXRlciB0aGFuIHNpemVvZihwb2ludGVyKSwg
b3IgYWN0dWFsbHkKKyAgICAgICAgLy8gc2F2ZSB0aGUgaGlnaCBiaXRzIG9mIHJlZ2lzdGVycy4K
KyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDg4
NQorICAgICAgICBpZiAoIXJlZykgeworICAgICAgICAgICAgZGF0YUxvZygiSW52YWxpZCBsaXZl
T3V0cyBlbnRyeSBpbjogIiwgKnRoaXMsICJcbiIpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgICAgICByZXN1bHQuc2V0KHJlZyk7Cisg
ICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1JlZ2lzdGVyU2V0IFN0YWNrTWFwczo6UmVj
b3JkOjp1c2VkUmVnaXN0ZXJTZXQoKSBjb25zdAoreworICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsK
KyAgICByZXN1bHQubWVyZ2UobG9jYXRpb25TZXQoKSk7CisgICAgcmVzdWx0Lm1lcmdlKGxpdmVP
dXRzU2V0KCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIGJvb2wgU3RhY2tNYXBzOjpwYXJz
ZShEYXRhVmlldyogdmlldykKIHsKICAgICBQYXJzZUNvbnRleHQgY29udGV4dDsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhY2tNYXBzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGFja01hcHMuaAkocmV2aXNpb24gMTY2MzU4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGFja01hcHMuaAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRhdGFWaWV3LmgiCiAjaW5jbHVkZSAiRlRM
RFdBUkZSZWdpc3Rlci5oIgogI2luY2x1ZGUgIkdQUkluZm8uaCIKKyNpbmNsdWRlICJSZWdpc3Rl
clNldC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAt
MTA2LDYgKzEwNywxMCBAQCBzdHJ1Y3QgU3RhY2tNYXBzIHsKICAgICAgICAgCiAgICAgICAgIGJv
b2wgcGFyc2UoUGFyc2VDb250ZXh0Jik7CiAgICAgICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYp
IGNvbnN0OworICAgICAgICAKKyAgICAgICAgUmVnaXN0ZXJTZXQgbGl2ZU91dHNTZXQoKSBjb25z
dDsKKyAgICAgICAgUmVnaXN0ZXJTZXQgbG9jYXRpb25TZXQoKSBjb25zdDsKKyAgICAgICAgUmVn
aXN0ZXJTZXQgdXNlZFJlZ2lzdGVyU2V0KCkgY29uc3Q7CiAgICAgfTsKIAogICAgIHVuc2lnbmVk
IHZlcnNpb247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCShy
ZXZpc2lvbiAxNjYzNTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw2ICsxMDYsMzMgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIG9zckV4aXRHZW5lcmF0aW9uVAogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCAoIkZUTCBPU1IgZXhpdCBnZW5lcmF0aW9uIHRodW5rIikpOwogfQogCitzdGF0aWMgdm9p
ZCByZWdpc3RlckNsb2JiZXJDaGVjayhBc3NlbWJseUhlbHBlcnMmIGppdCwgUmVnaXN0ZXJTZXQg
ZG9udENsb2JiZXIpCit7CisgICAgaWYgKCFPcHRpb25zOjpjbG9iYmVyQWxsUmVnc0luRlRMSUNT
bG93UGF0aCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgUmVnaXN0ZXJTZXQgY2xvYmJl
ciA9IFJlZ2lzdGVyU2V0OjphbGxSZWdpc3RlcnMoKTsKKyAgICBjbG9iYmVyLmV4Y2x1ZGUoUmVn
aXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7CisgICAgY2xvYmJlci5leGNs
dWRlKFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKKyAgICBjbG9iYmVyLmV4Y2x1ZGUo
ZG9udENsb2JiZXIpOworICAgIAorICAgIEdQUlJlZyBzb21lR1BSOworICAgIGZvciAoUmVnIHJl
ZyA9IFJlZzo6Zmlyc3QoKTsgcmVnIDw9IFJlZzo6bGFzdCgpOyByZWcgPSByZWcubmV4dCgpKSB7
CisgICAgICAgIGlmICghY2xvYmJlci5nZXQocmVnKSB8fCAhcmVnLmlzR1BSKCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVy
czo6VHJ1c3RlZEltbTMyKDB4MTMzN2JlZWYpLCByZWcuZ3ByKCkpOworICAgICAgICBzb21lR1BS
ID0gcmVnLmdwcigpOworICAgIH0KKyAgICAKKyAgICBmb3IgKFJlZyByZWcgPSBSZWc6OmZpcnN0
KCk7IHJlZyA8PSBSZWc6Omxhc3QoKTsgcmVnID0gcmVnLm5leHQoKSkgeworICAgICAgICBpZiAo
IWNsb2JiZXIuZ2V0KHJlZykgfHwgIXJlZy5pc0ZQUigpKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIAorICAgICAgICBqaXQubW92ZTY0VG9Eb3VibGUoc29tZUdQUiwgcmVnLmZwcigp
KTsKKyAgICB9Cit9CisKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBzbG93UGF0aENhbGxUaHVua0dl
bmVyYXRvcihWTSYgdm0sIGNvbnN0IFNsb3dQYXRoQ2FsbEtleSYga2V5KQogewogICAgIEFzc2Vt
Ymx5SGVscGVycyBqaXQoJnZtLCAwKTsKQEAgLTEzNCwxMyArMTYxLDEzIEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBzbG93UGF0aENhbGxUaHVua0cKICAgICAgICAgY3VycmVudE9mZnNldCArPSBz
aXplb2YoZG91YmxlKTsKICAgICB9CiAgICAgCi0gICAgLy8gRklYTUU6IENTdGFjayAtIE5lZWQg
dG8gZG8gc29lbWV0aGluZyBsaWtlIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogICAgIGpp
dC5wcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAg
ICAgaml0LnN0b3JlUHRyKEdQUkluZm86Om5vbkFyZ0dQUjAsIEFzc2VtYmx5SGVscGVyczo6QWRk
cmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGtleS5vZmZzZXQoKSkp
OwogICAgIAorICAgIHJlZ2lzdGVyQ2xvYmJlckNoZWNrKGppdCwga2V5LmFyZ3VtZW50UmVnaXN0
ZXJzKCkpOworICAgIAogICAgIEFzc2VtYmx5SGVscGVyczo6Q2FsbCBjYWxsID0gaml0LmNhbGwo
KTsKIAotICAgIC8vIEZJWE1FOiBDU3RhY2sgLSBOZWVkIHRvIGRvIHNvbWV0aGluZyBsaWtlIGpp
dC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwogICAgIGppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVy
czo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGtleS5vZmZz
ZXQoKSksIEdQUkluZm86Om5vblByZXNlcnZlZE5vblJldHVybkdQUik7CiAgICAgaml0LnJlc3Rv
cmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEdQUkluZm86Om5vblByZXNlcnZlZE5vblJldHVy
bkdQUik7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0
LmNwcAkocmV2aXNpb24gMTY2MzU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdp
c3RlclNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDQzICszMSwzOSBAQAogI2luY2x1ZGUg
IkdQUkluZm8uaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKKyNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CiAKIG5hbWVzcGFjZSBKU0Mg
ewogCiBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKQogewotICAgIFJl
Z2lzdGVyU2V0IHJlc3VsdDsKLSAgICByZXN1bHQuc2V0KE1hY3JvQXNzZW1ibGVyOjpzdGFja1Bv
aW50ZXJSZWdpc3Rlcik7Ci0gICAgcmVzdWx0LnNldChNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2lu
dGVyUmVnaXN0ZXIpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFJlZ2lzdGVyU2V0
KAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsCisgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdpc3Rlcik7CiB9CiAKIFJlZ2lzdGVyU2V0
IFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkKIHsKLSAgICBSZWdpc3Rl
clNldCByZXN1bHQ7CiAjaWYgQ1BVKEFSTTY0KQotICAgIHJlc3VsdC5zZXQoQVJNNjRSZWdpc3Rl
cnM6OmxyKTsKKyAgICByZXR1cm4gUmVnaXN0ZXJTZXQoQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyNl
bHNlCisgICAgcmV0dXJuIFJlZ2lzdGVyU2V0KCk7CiAjZW5kaWYKLSAgICByZXR1cm4gcmVzdWx0
OwogfQogCiBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6cnVudGltZVJlZ2lzdGVycygpCiB7Ci0g
ICAgUmVnaXN0ZXJTZXQgcmVzdWx0OwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgcmVzdWx0LnNl
dChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6dGFnTWFza1JlZ2lzdGVyKTsKKyAgICByZXR1cm4gUmVnaXN0ZXJTZXQoR1BSSW5mbzo6dGFn
VHlwZU51bWJlclJlZ2lzdGVyLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworI2Vsc2UKKyAg
ICByZXR1cm4gUmVnaXN0ZXJTZXQoKTsKICNlbmRpZgotICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
IFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpzcGVjaWFsUmVnaXN0ZXJzKCkKIHsKLSAgICBSZWdp
c3RlclNldCByZXN1bHQ7Ci0gICAgcmVzdWx0Lm1lcmdlKHN0YWNrUmVnaXN0ZXJzKCkpOwotICAg
IHJlc3VsdC5tZXJnZShyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOwotICAgIHJlc3VsdC5t
ZXJnZShydW50aW1lUmVnaXN0ZXJzKCkpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJu
IFJlZ2lzdGVyU2V0KAorICAgICAgICBzdGFja1JlZ2lzdGVycygpLCByZXNlcnZlZEhhcmR3YXJl
UmVnaXN0ZXJzKCksIHJ1bnRpbWVSZWdpc3RlcnMoKSk7CiB9CiAKIFJlZ2lzdGVyU2V0IFJlZ2lz
dGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkKQEAgLTE1NSw3ICsxNTEsMTMgQEAgc2l6ZV90
IFJlZ2lzdGVyU2V0OjpudW1iZXJPZlNldEZQUnMoKSBjbwogCiB2b2lkIFJlZ2lzdGVyU2V0Ojpk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgbV92ZWN0b3IuZHVtcChvdXQpOwor
ICAgIENvbW1hUHJpbnRlciBjb21tYTsKKyAgICBvdXQucHJpbnQoIlsiKTsKKyAgICBmb3IgKFJl
ZyByZWcgPSBSZWc6OmZpcnN0KCk7IHJlZyA8PSBSZWc6Omxhc3QoKTsgcmVnID0gcmVnLm5leHQo
KSkgeworICAgICAgICBpZiAoZ2V0KHJlZykpCisgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEs
IHJlZyk7CisgICAgfQorICAgIG91dC5wcmludCgiXSIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmgJKHJldmlzaW9u
IDE2NjM1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzksNyArMzksMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIFJl
Z2lzdGVyU2V0IHsKIHB1YmxpYzoKLSAgICBSZWdpc3RlclNldCgpIHsgfQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lLi4uIFJlZ3M+CisgICAgZXhwbGljaXQgUmVnaXN0ZXJTZXQoUmVncy4uLiByZWdz
KQorICAgIHsKKyAgICAgICAgc2V0TWFueShyZWdzLi4uKTsKKyAgICB9CiAgICAgCiAgICAgc3Rh
dGljIFJlZ2lzdGVyU2V0IHN0YWNrUmVnaXN0ZXJzKCk7CiAgICAgc3RhdGljIFJlZ2lzdGVyU2V0
IHJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKTsKQEAgLTU1LDcgKzU5LDcgQEAgcHVibGljOgog
ICAgICAgICBBU1NFUlQoISFyZWcpOwogICAgICAgICBtX3ZlY3Rvci5zZXQocmVnLmluZGV4KCks
IHZhbHVlKTsKICAgICB9Ci0KKyAgICAKICAgICB2b2lkIHNldChKU1ZhbHVlUmVncyByZWdzKQog
ICAgIHsKICAgICAgICAgaWYgKHJlZ3MudGFnR1BSKCkgIT0gSW52YWxpZEdQUlJlZykKQEAgLTEw
NSw2ICsxMDksMTYgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVy
biBtX3ZlY3Rvci5oYXNoKCk7IH0KICAgICAKIHByaXZhdGU6CisgICAgdm9pZCBzZXRBbnkoUmVn
IHJlZykgeyBzZXQocmVnKTsgfQorICAgIHZvaWQgc2V0QW55KGNvbnN0IFJlZ2lzdGVyU2V0JiBz
ZXQpIHsgbWVyZ2Uoc2V0KTsgfQorICAgIHZvaWQgc2V0TWFueSgpIHsgfQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFJlZ1R5cGUsIHR5cGVuYW1lLi4uIFJlZ3M+CisgICAgdm9pZCBzZXRNYW55KFJl
Z1R5cGUgcmVnLCBSZWdzLi4uIHJlZ3MpCisgICAgeworICAgICAgICBzZXRBbnkocmVnKTsKKyAg
ICAgICAgc2V0TWFueShyZWdzLi4uKTsKKyAgICB9CisKICAgICBCaXRWZWN0b3IgbV92ZWN0b3I7
CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHJldmlzaW9u
IDE2NjM1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ5MCw2ICs0OTAsOSBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZUdldEJ5SWRT
dHViKAogCiBzdGF0aWMgYm9vbCB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIGJhc2VWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9w
ZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKKyAgICBpZiAo
T3B0aW9uczo6Zm9yY2VJQ0ZhaWx1cmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAog
ICAgIC8vIEZJWE1FOiBXcml0ZSBhIHRlc3QgdGhhdCBwcm92ZXMgd2UgbmVlZCB0byBjaGVjayBm
b3IgcmVjdXJzaW9uIGhlcmUganVzdAogICAgIC8vIGxpa2UgdGhlIGludGVycHJldGVyIGRvZXMs
IHRoZW4gYWRkIGEgY2hlY2sgZm9yIHJlY3Vyc2lvbi4KIApAQCAtMTExMCw2ICsxMTEzLDkgQEAg
c3RhdGljIHZvaWQgZW1pdEN1c3RvbVNldHRlclN0dWIoRXhlY1N0YQogCiBzdGF0aWMgYm9vbCB0
cnlDYWNoZVB1dEJ5SUQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvLCBQdXRLaW5kIHB1dEtpbmQpCiB7CisgICAgaWYgKE9wdGlvbnM6
OmZvcmNlSUNGYWlsdXJlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwogICAgIFZNKiB2bSA9ICZleGVj
LT52bSgpOwogCkBAIC0xMzQwLDYgKzEzNDYsOSBAQCBzdGF0aWMgYm9vbCB0cnlSZXBhdGNoSW4o
CiAgICAgRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBib29sIHdhc0ZvdW5kLAogICAgIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogeworICAgIGlmIChPcHRpb25zOjpmb3JjZUlDRmFpbHVy
ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCiAgICAgaWYgKCFiYXNlLT5zdHJ1Y3R1
cmUoKS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNw
cAkocmV2aXNpb24gMTY2MzU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw3ICsyMDIsNyBAQCBzdGF0aWMgdm9pZCBy
ZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25zKCkKICNpZiAhRU5BQkxFKEZUTF9KSVQpCiAgICAgT3B0
aW9uczo6dXNlRlRMSklUKCkgPSBmYWxzZTsKICNlbmRpZgotICAgIAorCiAgICAgaWYgKE9wdGlv
bnM6OnNob3dEaXNhc3NlbWJseSgpCiAgICAgICAgIHx8IE9wdGlvbnM6OnNob3dERkdEaXNhc3Nl
bWJseSgpCiAgICAgICAgIHx8IE9wdGlvbnM6OnNob3dGVExEaXNhc3NlbWJseSgpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAxNjYzNTgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwMiw2ICsxMDIsNyBAQCB0eXBlZGVmIE9wdGlvblJhbmdlIG9wdGlvblJhbmdlOwogICAg
IHYoYm9vbCwgY3Jhc2hJZkNhbnRBbGxvY2F0ZUpJVE1lbW9yeSwgZmFsc2UpIFwKICAgICBcCiAg
ICAgdihib29sLCBmb3JjZURGR0NvZGVCbG9ja0xpdmVuZXNzLCBmYWxzZSkgXAorICAgIHYoYm9v
bCwgZm9yY2VJQ0ZhaWx1cmUsIGZhbHNlKSBcCiAgICAgXAogICAgIHYoYm9vbCwgZHVtcEdlbmVy
YXRlZEJ5dGVjb2RlcywgZmFsc2UpIFwKICAgICB2KGJvb2wsIGR1bXBCeXRlY29kZUxpdmVuZXNz
UmVzdWx0cywgZmFsc2UpIFwKQEAgLTE1Nyw2ICsxNTgsOCBAQCB0eXBlZGVmIE9wdGlvblJhbmdl
IG9wdGlvblJhbmdlOwogICAgIHYodW5zaWduZWQsIGxsdm1NYXhTdGFja1NpemUsIDEyOCAqIEtC
KSBcCiAgICAgdihib29sLCBsbHZtRGlzYWxsb3dBVlgsIHRydWUpIFwKICAgICB2KGJvb2wsIGZ0
bENyYXNoZXMsIGZhbHNlKSAvKiBmb29sLXByb29mIHdheSBvZiBjaGVja2luZyB0aGF0IHlvdSBl
bmRlZCB1cCBpbiB0aGUgRlRMLiA7LSkgKi9cCisgICAgdihib29sLCBjbG9iYmVyQWxsUmVnc0lu
RlRMSUNTbG93UGF0aCwgIUFTU0VSVF9ESVNBQkxFRCkgXAorICAgIHYoYm9vbCwgYXNzdW1lQWxs
UmVnc0luRlRMSUNBcmVMaXZlLCBmYWxzZSkgXAogICAgIFwKICAgICB2KGJvb2wsIGVuYWJsZUNv
bmN1cnJlbnRKSVQsIHRydWUpIFwKICAgICB2KHVuc2lnbmVkLCBudW1iZXJPZkRGR0NvbXBpbGVy
VGhyZWFkcywgY29tcHV0ZU51bWJlck9mV29ya2VyVGhyZWFkcygyLCAyKSAtIDEpIFwKSW5kZXg6
IFRvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwkocmV2aXNpb24gMTY2MzU4KQorKysgVG9vbHMv
U2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwkod29ya2luZyBjb3B5KQpAQCAtMjUwLDYgKzI1
MCwxMCBAQCBkZWYgcHJlZml4Q29tbWFuZChwcmVmaXgpCiAgICAgImF3ayAiICsgU2hlbGx3b3Jk
cy5zaGVsbGVzY2FwZSgieyBwcmludGYgI3socHJlZml4ICsgJzogJykuaW5zcGVjdH07IHByaW50
IH0iKQogZW5kCiAKK2RlZiByZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocHJlZml4KQorICAgIHBy
ZWZpeENvbW1hbmQocHJlZml4KSArICIgMj4mMSIKK2VuZAorCiBkZWYgcGlwZUFuZFByZWZpeENv
bW1hbmQob3V0cHV0RmlsZW5hbWUsIHByZWZpeCkKICAgICAidGVlICIgKyBTaGVsbHdvcmRzLnNo
ZWxsZXNjYXBlKG91dHB1dEZpbGVuYW1lLnRvX3MpICsgIiB8ICIgKyBwcmVmaXhDb21tYW5kKHBy
ZWZpeCkKIGVuZApAQCAtMjc2LDcgKzI4MCw3IEBAIGRlZiBzaW1wbGVFcnJvckhhbmRsZXIKICAg
ICAgICAgfCBvdXRwLCBwbGFuIHwKICAgICAgICAgb3V0cC5wdXRzICJpZiB0ZXN0IC1lICN7cGxh
bi5mYWlsRmlsZX0iCiAgICAgICAgIG91dHAucHV0cyAidGhlbiIKLSAgICAgICAgb3V0cC5wdXRz
ICIgICAgKGVjaG8gRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlOiBgY2F0ICN7cGxhbi5mYWls
RmlsZX1gKSB8ICIgKyBwcmVmaXhDb21tYW5kKHBsYW4ubmFtZSkgKyAiMT4mMiIKKyAgICAgICAg
b3V0cC5wdXRzICIgICAgKGVjaG8gRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlOiBgY2F0ICN7
cGxhbi5mYWlsRmlsZX1gKSB8ICIgKyByZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocGxhbi5uYW1l
KQogICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAogICAgICAgICBv
dXRwLnB1dHMgImVsc2UiCiAgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3ND
b21tYW5kCkBAIC0yOTMsNyArMjk3LDcgQEAgZGVmIGRpZmZFcnJvckhhbmRsZXIoZXhwZWN0ZWRG
aWxlbmFtZSkKICAgICAgICAgCiAgICAgICAgIG91dHAucHV0cyAiaWYgdGVzdCAtZSAje3BsYW4u
ZmFpbEZpbGV9IgogICAgICAgICBvdXRwLnB1dHMgInRoZW4iCi0gICAgICAgIG91dHAucHV0cyAi
ICAgIChjYXQgI3tvdXRwdXRGaWxlbmFtZX0gJiYgZWNobyBFUlJPUjogVW5leHBlY3RlZCBleGl0
IGNvZGU6IGBjYXQgI3twbGFuLmZhaWxGaWxlfWApIHwgIiArIHByZWZpeENvbW1hbmQocGxhbi5u
YW1lKSArICIxPiYyIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAoY2F0ICN7b3V0cHV0RmlsZW5h
bWV9ICYmIGVjaG8gRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlOiBgY2F0ICN7cGxhbi5mYWls
RmlsZX1gKSB8ICIgKyByZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQogICAgICAg
ICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAogICAgICAgICBvdXRwLnB1dHMg
ImVsaWYgdGVzdCAtZSAuLi8je1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoZXhwZWN0ZWRGaWxlbmFt
ZSl9IgogICAgICAgICBvdXRwLnB1dHMgInRoZW4iCkBAIC0zMDIsMTEgKzMwNiwxMSBAQCBkZWYg
ZGlmZkVycm9ySGFuZGxlcihleHBlY3RlZEZpbGVuYW1lKQogICAgICAgICBvdXRwLnB1dHMgIiAg
ICB0aGVuIgogICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAog
ICAgICAgICBvdXRwLnB1dHMgIiAgICBlbHNlIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAg
KGVjaG8gXCJESUZGIEZBSUxVUkUhXCIgJiYgY2F0ICN7ZGlmZkZpbGVuYW1lfSkgfCAiICsgcHJl
Zml4Q29tbWFuZChwbGFuLm5hbWUpICsgIjE+JjIiCisgICAgICAgIG91dHAucHV0cyAiICAgICAg
ICAoZWNobyBcIkRJRkYgRkFJTFVSRSFcIiAmJiBjYXQgI3tkaWZmRmlsZW5hbWV9KSB8ICIgKyBy
ZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQogICAgICAgICBvdXRwLnB1dHMgIiAg
ICAgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKICAgICAgICAgb3V0cC5wdXRzICIgICAgZmkiCiAg
ICAgICAgIG91dHAucHV0cyAiZWxzZSIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgKGVjaG8gXCJO
TyBFWFBFQ1RBVElPTiFcIiAmJiBjYXQgI3tvdXRwdXRGaWxlbmFtZX0pIHwgIiArIHByZWZpeENv
bW1hbmQocGxhbi5uYW1lKSArICIxPiYyIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAoZWNobyBc
Ik5PIEVYUEVDVEFUSU9OIVwiICYmIGNhdCAje291dHB1dEZpbGVuYW1lfSkgfCAiICsgcmVkaXJl
Y3RBbmRQcmVmaXhDb21tYW5kKHBsYW4ubmFtZSkKICAgICAgICAgb3V0cC5wdXRzICIgICAgIiAr
IHBsYW4uZmFpbENvbW1hbmQKICAgICAgICAgb3V0cC5wdXRzICJmaSIKICAgICB9CkBAIC0zMjEs
MTEgKzMyNSwxMSBAQCBkZWYgbW96aWxsYUVycm9ySGFuZGxlcgogCiAgICAgICAgIG91dHAucHV0
cyAiaWYgdGVzdCAtZSAje3BsYW4uZmFpbEZpbGV9IgogICAgICAgICBvdXRwLnB1dHMgInRoZW4i
Ci0gICAgICAgIG91dHAucHV0cyAiICAgIChjYXQgI3tvdXRwdXRGaWxlbmFtZX0gJiYgZWNobyBF
UlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGU6IGBjYXQgI3twbGFuLmZhaWxGaWxlfWApIHwgIiAr
IHByZWZpeENvbW1hbmQocGxhbi5uYW1lKSArICIxPiYyIgorICAgICAgICBvdXRwLnB1dHMgIiAg
ICAoY2F0ICN7b3V0cHV0RmlsZW5hbWV9ICYmIGVjaG8gRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBj
b2RlOiBgY2F0ICN7cGxhbi5mYWlsRmlsZX1gKSB8ICIgKyByZWRpcmVjdEFuZFByZWZpeENvbW1h
bmQocGxhbi5uYW1lKQogICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWlsQ29tbWFu
ZAogICAgICAgICBvdXRwLnB1dHMgImVsaWYgZ3JlcCAtaSAtcSBmYWlsZWQhICN7b3V0cHV0Rmls
ZW5hbWV9IgogICAgICAgICBvdXRwLnB1dHMgInRoZW4iCi0gICAgICAgIG91dHAucHV0cyAiICAg
IChlY2hvIERldGVjdGVkIGZhaWx1cmVzOiAmJiBjYXQgI3tvdXRwdXRGaWxlbmFtZX0pIHwgIiAr
IHByZWZpeENvbW1hbmQocGxhbi5uYW1lKSArICIxPiYyIgorICAgICAgICBvdXRwLnB1dHMgIiAg
ICAoZWNobyBEZXRlY3RlZCBmYWlsdXJlczogJiYgY2F0ICN7b3V0cHV0RmlsZW5hbWV9KSB8ICIg
KyByZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQogICAgICAgICBvdXRwLnB1dHMg
IiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAogICAgICAgICBvdXRwLnB1dHMgImVsc2UiCiAgICAg
ICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCkBAIC0zNDcsNyArMzUx
LDcgQEAgZGVmIG1vemlsbGFGYWlsRXJyb3JIYW5kbGVyCiAgICAgICAgIG91dHAucHV0cyAidGhl
biIKICAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKICAgICAg
ICAgb3V0cC5wdXRzICJlbHNlIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAoZWNobyBOT1RJQ0U6
IFlvdSBtYWRlIHRoaXMgdGVzdCBwYXNzLCBidXQgaXQgd2FzIGV4cGVjdGVkIHRvIGZhaWwpIHwg
IiArIHByZWZpeENvbW1hbmQocGxhbi5uYW1lKSArICIxPiYyIgorICAgICAgICBvdXRwLnB1dHMg
IiAgICAoZWNobyBOT1RJQ0U6IFlvdSBtYWRlIHRoaXMgdGVzdCBwYXNzLCBidXQgaXQgd2FzIGV4
cGVjdGVkIHRvIGZhaWwpIHwgIiArIHJlZGlyZWN0QW5kUHJlZml4Q29tbWFuZChwbGFuLm5hbWUp
CiAgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCiAgICAgICAgIG91
dHAucHV0cyAiZmkiCiAgICAgfQpAQCAtMzY2LDE3ICszNzAsMTcgQEAgZGVmIG1vemlsbGFFeGl0
M0Vycm9ySGFuZGxlcgogICAgICAgICBvdXRwLnB1dHMgIiAgICB0aGVuIgogICAgICAgICBvdXRw
LnB1dHMgIiAgICAgICAgaWYgZ3JlcCAtaSAtcSBmYWlsZWQhICN7b3V0cHV0RmlsZW5hbWV9Igog
ICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgdGhlbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAg
ICAgICAgICAoZWNobyBEZXRlY3RlZCBmYWlsdXJlczogJiYgY2F0ICN7b3V0cHV0RmlsZW5hbWV9
KSB8ICIgKyBwcmVmaXhDb21tYW5kKHBsYW4ubmFtZSkgKyAiMT4mMiIKKyAgICAgICAgb3V0cC5w
dXRzICIgICAgICAgICAgICAoZWNobyBEZXRlY3RlZCBmYWlsdXJlczogJiYgY2F0ICN7b3V0cHV0
RmlsZW5hbWV9KSB8ICIgKyByZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQogICAg
ICAgICBvdXRwLnB1dHMgIiAgICAgICAgICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCiAgICAgICAg
IG91dHAucHV0cyAiICAgICAgICBlbHNlIgogICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgICAg
ICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCiAgICAgICAgIG91dHAucHV0cyAiICAgICAgICBmaSIK
ICAgICAgICAgb3V0cC5wdXRzICIgICAgZWxzZSIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgICAg
IChjYXQgI3tvdXRwdXRGaWxlbmFtZX0gJiYgZWNobyBFUlJPUjogVW5leHBlY3RlZCBleGl0IGNv
ZGU6IGBjYXQgI3twbGFuLmZhaWxGaWxlfWApIHwgIiArIHByZWZpeENvbW1hbmQocGxhbi5uYW1l
KSArICIxPiYyIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgKGNhdCAje291dHB1dEZpbGVu
YW1lfSAmJiBlY2hvIEVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZTogYGNhdCAje3BsYW4uZmFp
bEZpbGV9YCkgfCAiICsgcmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHBsYW4ubmFtZSkKICAgICAg
ICAgb3V0cC5wdXRzICIgICAgICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCiAgICAgICAgIG91dHAu
cHV0cyAiICAgIGZpIgogICAgICAgICBvdXRwLnB1dHMgImVsc2UiCi0gICAgICAgIG91dHAucHV0
cyAiICAgIChjYXQgI3tvdXRwdXRGaWxlbmFtZX0gJiYgZWNobyBFUlJPUjogVGVzdCBleHBlY3Rl
ZCB0byBmYWlsLCBidXQgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5KSB8ICIgKyBwcmVmaXhDb21tYW5k
KHBsYW4ubmFtZSkgKyAiMT4mMiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgKGNhdCAje291dHB1
dEZpbGVuYW1lfSAmJiBlY2hvIEVSUk9SOiBUZXN0IGV4cGVjdGVkIHRvIGZhaWwsIGJ1dCByZXR1
cm5lZCBzdWNjZXNzZnVsbHkpIHwgIiArIHJlZGlyZWN0QW5kUHJlZml4Q29tbWFuZChwbGFuLm5h
bWUpCiAgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCiAgICAgICAg
IG91dHAucHV0cyAiZmkiCiAgICAgfQpAQCAtNjEwLDYgKzYxNCwxMSBAQCBkZWYgZGVmYXVsdFF1
aWNrUnVuCiAgICAgcnVuRlRMTm9DSklUCiBlbmQKIAorZGVmIGRlZmF1bHRGVExTcG90Q2hlY2sK
KyAgICBkZWZhdWx0UXVpY2tSdW4KKyAgICBydW5GVExOb1NpbXBsZU9wdAorZW5kCisKICMgVGhp
cyBpcyBleHBlY3RlZCB0byBub3QgZG8gZWFnZXIgcnVucyBiZWNhdXNlIGVhZ2VyIHJ1bnMgY2Fu
IGhhdmUgYSBsb3Qgb2YgcmVjb21waWxhdGlvbnMKICMgZm9yIHJlYXNvbnMgdGhhdCBkb24ndCBh
cmlzZSBpbiB0aGUgcmVhbCB3b3JsZC4gSXQncyB1c2VkIGZvciB0ZXN0cyB0aGF0IGFzc2VydCBj
b252ZXJnZW5jZQogIyBieSBjb3VudGluZyByZWNvbXBpbGF0aW9ucy4KQEAgLTYzOSw3ICs2NDgs
NyBAQCBkZWYgcnVuTGF5b3V0VGVzdChraW5kLCAqb3B0aW9ucykKICAgICBwcmVwYXJlRXh0cmFS
ZWxhdGl2ZUZpbGVzKFsiLi4vI3t0ZXN0TmFtZX0tZXhwZWN0ZWQudHh0Il0sICRiZW5jaG1hcmtE
aXJlY3RvcnkpCiAgICAgcHJlcGFyZUV4dHJhQWJzb2x1dGVGaWxlcyhMQVlPVVRURVNUU19QQVRI
LCBbInJlc291cmNlcy9zdGFuZGFsb25lLXByZS5qcyIsICJyZXNvdXJjZXMvc3RhbmRhbG9uZS1w
b3N0LmpzIl0pCiAKLSAgICBhcmdzID0gW3BhdGhUb1ZNLnRvX3NdICsgb3B0aW9ucyArCisgICAg
YXJncyA9IFtwYXRoVG9WTS50b19zXSArIE5PX0ZUTF9PUFRJT05TICsgb3B0aW9ucyArCiAgICAg
ICAgIFsoUGF0aG5hbWUubmV3KCJyZXNvdXJjZXMiKSArICJzdGFuZGFsb25lLXByZS5qcyIpLnRv
X3MsCiAgICAgICAgICAkYmVuY2htYXJrLnRvX3MsCiAgICAgICAgICAoUGF0aG5hbWUubmV3KCJy
ZXNvdXJjZXMiKSArICJzdGFuZGFsb25lLXBvc3QuanMiKS50b19zXQpAQCAtNzIxLDcgKzczMCw3
IEBAIGRlZiBydW5Nb3ppbGxhVGVzdChraW5kLCBtb2RlLCBleHRyYUZpbGUKICAgICAgICAga2lu
ZCA9ICJtb3ppbGxhIgogICAgIGVuZAogICAgIHByZXBhcmVFeHRyYVJlbGF0aXZlRmlsZXMoZXh0
cmFGaWxlcy5tYXB7fHZ8IChQYXRobmFtZSgiLi4iKSArIHYpLnRvX3N9LCAkY29sbGVjdGlvbikK
LSAgICBhcmdzID0gW3BhdGhUb1ZNLnRvX3NdICsgb3B0aW9ucyArIGV4dHJhRmlsZXMubWFwe3x2
fCB2LnRvX3N9ICsgWyRiZW5jaG1hcmsudG9fc10KKyAgICBhcmdzID0gW3BhdGhUb1ZNLnRvX3Nd
ICsgTk9fRlRMX09QVElPTlMgKyBvcHRpb25zICsgZXh0cmFGaWxlcy5tYXB7fHZ8IHYudG9fc30g
KyBbJGJlbmNobWFyay50b19zXQogICAgIGNhc2UgbW9kZQogICAgIHdoZW4gOm5vcm1hbAogICAg
ICAgICBlcnJvckhhbmRsZXIgPSBtb3ppbGxhRXJyb3JIYW5kbGVyCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229207</attachid>
            <date>2014-04-12 11:29:46 -0700</date>
            <delta_ts>2014-04-12 11:33:34 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>6973</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3MTgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBA
CisyMDE0LTA0LTEyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RlRMIHNob3VsZCB1c2Ugc3RhY2ttYXAgcmVnaXN0ZXIgbGl2ZW5lc3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDc5MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgRW5hYmxlIHRoZSBzdGFj
a21hcCByZWdpc3RlciBsaXZlbmVzcyBzdXBwb3J0IGJ5IGZpeGluZyB0aGUgdHdvIGxhc3QgYnVn
czoKKyAgICAgICAgCisgICAgICAgIC0gSWYgZXZlcnl0aGluZyBpcyBkZWFkIGFmdGVyIHRoZSBw
YXRjaHBvaW50IC0gYSBnb29kIHBvc3NpYmlsaXR5IGZvciBhIHB1dF9ieV9pZCAtCisgICAgICAg
ICAgdGhlbiB3ZSBzaG91bGRuJ3QgY3Jhc2ggZHVlIHRvIGEgbnVsbCBzY3JhdGNoIGJ1ZmZlci4K
KyAgICAgICAgCisgICAgICAgIC0gQWx3YXlzIGNvbnNpZGVyIGNhbGxlZS1zYXZlcyBhcyBpZiB0
aGV5IHdlcmUgbGl2ZS4gTW9yZSBwcmVjaXNlbHksIHdlIHNob3VsZAorICAgICAgICAgIGNvbnNp
ZGVyIHRob3NlIGNhbGxlZS1zYXZlcyB0aGF0IGFyZSBub3Qgc2F2ZWQgYnkgdGhlIGVuY2xvc2lu
ZyBmdW5jdGlvbiB0byBiZSBsaXZlLgorICAgICAgICAgIEZvciBub3cgd2UgZG8gdGhlIG11Y2gg
c2ltcGxlciB0aGluZyBhbmQgY29uc2lkZXIgY2FsbGVlLXNhdmVzIHRvIGJlIGFsd2F5cyBsaXZl
CisgICAgICAgICAgc2luY2UgaXQgaGFzIG1pbmltYWwgaW1wYWN0IG9uIHRoZSBzY3JhdGNoIHJl
Z2lzdGVyIGFsbG9jYXRvci4gSXQgd2lsbCBrbm93IG5vdCB0bworICAgICAgICAgIHByZXNlcnZl
IHRob3NlIGZvciBjYWxscywgYW55d2F5LgorICAgICAgICAKKyAgICAgICAgSSB0cmllZCB3cml0
aW5nIGEgdGVzdCBmb3IgdGhlIG51bGwgc2NyYXRjaCBidWZmZXIgdGhpbmcsIGJ1dCBmYWlsZWQu
IEkgd2lsbCBsYW5kIHRoZQorICAgICAgICB0ZXN0IGFueXdheSBzaW5jZSBpdCBzZWVtcyB1c2Vm
dWwuCisKKyAgICAgICAgKiBmdGwvRlRMQ29tcGlsZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
dXNlZFJlZ2lzdGVyc0Zvcik6CisgICAgICAgICogaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRv
ci5jcHA6CisgICAgICAgIChKU0M6OlNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cHJlc2VydmVV
c2VkUmVnaXN0ZXJzVG9TY3JhdGNoQnVmZmVyRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OlNjcmF0
Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVzdG9yZVVzZWRSZWdpc3RlcnNGcm9tU2NyYXRjaEJ1ZmZl
ckZvckNhbGwpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorICAgICAgICAqIHRlc3Rz
L3N0cmVzcy9yZXBlYXRlZC1wdXQtYnktaWQtcmVhbGxvY2F0aW5nLXRyYW5zaXRpb24uanM6IEFk
ZGVkLgorICAgICAgICAoZm9vKToKKwogMjAxNC0wNC0xMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9A
YXBwbGUuY29tPgogCiAgICAgICAgIERGRzo6Rml4dXBQaGFzZSBzaG91bGQgaW5zZXJ0IGNvbnZl
cnNpb24gbm9kZXMgYWZ0ZXIgdGhlIHJlc3Qgb2YgZml4dXAgc28gdGhhdCB3ZSBrbm93IGhvdyB0
aGUgdHlwZXMgc2V0dGxlZApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21w
aWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBp
bGUuY3BwCShyZXZpc2lvbiAxNjcxNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENvbXBpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsNyArMTY3LDcgQEAgc3RhdGljIFJl
Z2lzdGVyU2V0IHVzZWRSZWdpc3RlcnNGb3IoY29ucwogewogICAgIGlmIChPcHRpb25zOjphc3N1
bWVBbGxSZWdzSW5GVExJQ0FyZUxpdmUoKSkKICAgICAgICAgcmV0dXJuIFJlZ2lzdGVyU2V0Ojph
bGxSZWdpc3RlcnMoKTsKLSAgICByZXR1cm4gcmVjb3JkLnVzZWRSZWdpc3RlclNldCgpOworICAg
IHJldHVybiBSZWdpc3RlclNldChyZWNvcmQudXNlZFJlZ2lzdGVyU2V0KCksIFJlZ2lzdGVyU2V0
OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwogfQogCiBzdGF0aWMgdm9pZCBmaXhGdW5jdGlvbkJh
c2VkT25TdGFja01hcHMoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NjcmF0Y2hS
ZWdpc3RlckFsbG9jYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAxNjcxNzIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE0Miw2ICsxNDIsOCBAQCB1bnNpZ25lZCBTY3JhdGNoUmVnaXN0ZXJB
bGxvY2F0b3I6OmRlc2lyCiB2b2lkIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cHJlc2VydmVV
c2VkUmVnaXN0ZXJzVG9TY3JhdGNoQnVmZmVyRm9yQ2FsbChNYWNyb0Fzc2VtYmxlciYgaml0LCBT
Y3JhdGNoQnVmZmVyKiBzY3JhdGNoQnVmZmVyLCBHUFJSZWcgc2NyYXRjaEdQUikKIHsKICAgICBS
ZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdXNlZFJlZ2lzdGVyc0ZvckNhbGwoKTsKKyAgICBp
ZiAoIXVzZWRSZWdpc3RlcnMubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKSkKKyAgICAgICAgcmV0dXJu
OwogICAgIAogICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKICAgICBmb3IgKEdQUlJlZyByZWcgPSBN
YWNyb0Fzc2VtYmxlcjo6Zmlyc3RSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxh
c3RSZWdpc3RlcigpOyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dFJlZ2lzdGVyKHJlZykpIHsK
QEAgLTE2OCw2ICsxNzAsOCBAQCB2b2lkIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cHJlc2Vy
dmVVCiB2b2lkIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVzdG9yZVVzZWRSZWdpc3RlcnNG
cm9tU2NyYXRjaEJ1ZmZlckZvckNhbGwoTWFjcm9Bc3NlbWJsZXImIGppdCwgU2NyYXRjaEJ1ZmZl
ciogc2NyYXRjaEJ1ZmZlciwgR1BSUmVnIHNjcmF0Y2hHUFIpCiB7CiAgICAgUmVnaXN0ZXJTZXQg
dXNlZFJlZ2lzdGVycyA9IHVzZWRSZWdpc3RlcnNGb3JDYWxsKCk7CisgICAgaWYgKCF1c2VkUmVn
aXN0ZXJzLm51bWJlck9mU2V0UmVnaXN0ZXJzKCkpCisgICAgICAgIHJldHVybjsKICAgICAKICAg
ICBpZiAoc2NyYXRjaEdQUiA9PSBJbnZhbGlkR1BSUmVnKSB7CiAgICAgICAgIC8vIEZpbmQgYSBz
Y3JhdGNoIHJlZ2lzdGVyLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuaAkocmV2aXNpb24gMTY3MTcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsNyArMTYwLDcgQEAgdHlwZWRlZiBPcHRp
b25SYW5nZSBvcHRpb25SYW5nZTsKICAgICB2KGJvb2wsIGxsdm1EaXNhbGxvd0FWWCwgdHJ1ZSkg
XAogICAgIHYoYm9vbCwgZnRsQ3Jhc2hlcywgZmFsc2UpIC8qIGZvb2wtcHJvb2Ygd2F5IG9mIGNo
ZWNraW5nIHRoYXQgeW91IGVuZGVkIHVwIGluIHRoZSBGVEwuIDstKSAqL1wKICAgICB2KGJvb2ws
IGNsb2JiZXJBbGxSZWdzSW5GVExJQ1Nsb3dQYXRoLCAhQVNTRVJUX0RJU0FCTEVEKSBcCi0gICAg
dihib29sLCBhc3N1bWVBbGxSZWdzSW5GVExJQ0FyZUxpdmUsIHRydWUpIFwKKyAgICB2KGJvb2ws
IGFzc3VtZUFsbFJlZ3NJbkZUTElDQXJlTGl2ZSwgZmFsc2UpIFwKICAgICB2KGJvb2wsIGVuYWJs
ZUFjY2Vzc0lubGluaW5nLCB0cnVlKSBcCiAgICAgdihib29sLCBlbmFibGVQb2x5dmFyaWFudERl
dmlydHVhbGl6YXRpb24sIHRydWUpIFwKICAgICB2KGJvb2wsIGVuYWJsZVBvbHltb3JwaGljQWNj
ZXNzSW5saW5pbmcsIHRydWUpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvcmVwZWF0ZWQtcHV0LWJ5LWlkLXJlYWxsb2NhdGluZy10cmFuc2l0aW9uLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcmVwZWF0ZWQtcHV0
LWJ5LWlkLXJlYWxsb2NhdGluZy10cmFuc2l0aW9uLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9yZXBlYXRlZC1wdXQtYnktaWQtcmVhbGxvY2F0
aW5nLXRyYW5zaXRpb24uanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NyBAQAorZnVuY3Rp
b24gZm9vKG8pIHsKKyAgICBvLmEgPSAwCisgICAgby5iID0gMQorICAgIG8uYyA9IDIKKyAgICBv
LmQgPSAzCisgICAgby5lID0gNAorICAgIG8uZiA9IDUKKyAgICBvLmcgPSA2CisgICAgby5oID0g
NworICAgIG8uaSA9IDgKKyAgICBvLmogPSA5CisgICAgby5rID0gMTAKKyAgICBvLmwgPSAxMQor
ICAgIG8ubSA9IDEyCisgICAgby5uID0gMTMKKyAgICBvLm8gPSAxNAorICAgIG8ucCA9IDE1Cisg
ICAgby5xID0gMTYKKyAgICBvLnIgPSAxNworICAgIG8ucyA9IDE4CisgICAgby50ID0gMTkKKyAg
ICBvLnUgPSAyMAorICAgIG8udiA9IDIxCisgICAgby53ID0gMjIKKyAgICBvLnggPSAyMworICAg
IG8ueSA9IDI0CisgICAgby56ID0gMjUKK30KKworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgIHZhciBvID0ge307CisgICAgZm9vKG8pOwor
ICAgIGlmIChvLmEgIT0gMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgZm9yIGE6
ICIgKyBvLmE7CisgICAgaWYgKG8uYiAhPSAxKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2
YWx1ZSBmb3IgYjogIiArIG8uYjsKKyAgICBpZiAoby5jICE9IDIpCisgICAgICAgIHRocm93ICJF
cnJvcjogYmFkIHZhbHVlIGZvciBjOiAiICsgby5jOworICAgIGlmIChvLmQgIT0gMykKKyAgICAg
ICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgZm9yIGQ6ICIgKyBvLmQ7CisgICAgaWYgKG8uZSAh
PSA0KQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSBmb3IgZTogIiArIG8uZTsKKyAg
ICBpZiAoby5mICE9IDUpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlIGZvciBmOiAi
ICsgby5mOworICAgIGlmIChvLmcgIT0gNikKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFs
dWUgZm9yIGc6ICIgKyBvLmc7CisgICAgaWYgKG8uaCAhPSA3KQorICAgICAgICB0aHJvdyAiRXJy
b3I6IGJhZCB2YWx1ZSBmb3IgaDogIiArIG8uaDsKKyAgICBpZiAoby5pICE9IDgpCisgICAgICAg
IHRocm93ICJFcnJvcjogYmFkIHZhbHVlIGZvciBpOiAiICsgby5pOworICAgIGlmIChvLmogIT0g
OSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgZm9yIGo6ICIgKyBvLmo7CisgICAg
aWYgKG8uayAhPSAxMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgZm9yIGs6ICIg
KyBvLms7CisgICAgaWYgKG8ubCAhPSAxMSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFs
dWUgZm9yIGw6ICIgKyBvLmw7CisgICAgaWYgKG8ubSAhPSAxMikKKyAgICAgICAgdGhyb3cgIkVy
cm9yOiBiYWQgdmFsdWUgZm9yIG06ICIgKyBvLm07CisgICAgaWYgKG8ubiAhPSAxMykKKyAgICAg
ICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgZm9yIG46ICIgKyBvLm47CisgICAgaWYgKG8ubyAh
PSAxNCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgZm9yIG86ICIgKyBvLm87Cisg
ICAgaWYgKG8ucCAhPSAxNSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgZm9yIHA6
ICIgKyBvLnA7CisgICAgaWYgKG8ucSAhPSAxNikKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQg
dmFsdWUgZm9yIHE6ICIgKyBvLnE7CisgICAgaWYgKG8uciAhPSAxNykKKyAgICAgICAgdGhyb3cg
IkVycm9yOiBiYWQgdmFsdWUgZm9yIHI6ICIgKyBvLnI7CisgICAgaWYgKG8ucyAhPSAxOCkKKyAg
ICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgZm9yIHM6ICIgKyBvLnM7CisgICAgaWYgKG8u
dCAhPSAxOSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgZm9yIHQ6ICIgKyBvLnQ7
CisgICAgaWYgKG8udSAhPSAyMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgZm9y
IHU6ICIgKyBvLnU7CisgICAgaWYgKG8udiAhPSAyMSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBi
YWQgdmFsdWUgZm9yIHY6ICIgKyBvLnY7CisgICAgaWYgKG8udyAhPSAyMikKKyAgICAgICAgdGhy
b3cgIkVycm9yOiBiYWQgdmFsdWUgZm9yIHc6ICIgKyBvLnc7CisgICAgaWYgKG8ueCAhPSAyMykK
KyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgZm9yIHg6ICIgKyBvLng7CisgICAgaWYg
KG8ueSAhPSAyNCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgZm9yIHk6ICIgKyBv
Lnk7CisgICAgaWYgKG8ueiAhPSAyNSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUg
Zm9yIHo6ICIgKyBvLno7Cit9Cg==
</data>
<flag name="review"
          id="253576"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>