<?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>49432</bug_id>
          
          <creation_ts>2010-11-12 01:40:10 -0800</creation_ts>
          <short_desc>Support JIT_OPTIMIZE_MOD on Thumb-2</short_desc>
          <delta_ts>2010-11-20 14:34:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gabor Loki">loki</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>308438</commentid>
    <comment_count>0</comment_count>
    <who name="Gabor Loki">loki</who>
    <bug_when>2010-11-12 01:40:10 -0800</bug_when>
    <thetext>The current implementation of integer-modulo is not effective on ARM with Thumb-2. The ARM_TRADITIONAL has had JIT_OPTIMIZE_MODJIT_OPTIMIZE_MOD which dramatically increases the performance of integer-modulo. The same algorithm can be used on Thumb-2 JIT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308443</commentid>
    <comment_count>1</comment_count>
      <attachid>73718</attachid>
    <who name="Gabor Loki">loki</who>
    <bug_when>2010-11-12 01:53:29 -0800</bug_when>
    <thetext>Created attachment 73718
Support JIT_OPTIMIZE_MOD on Thumb-2

SunSpider: 1.043x as fast

An artificial modulo test: 6.5x as fast</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308448</commentid>
    <comment_count>2</comment_count>
      <attachid>73721</attachid>
    <who name="Gabor Loki">loki</who>
    <bug_when>2010-11-12 02:01:26 -0800</bug_when>
    <thetext>Created attachment 73721
Support JIT_OPTIMIZE_MOD on Thumb-2

remove an unused condition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311847</commentid>
    <comment_count>3</comment_count>
      <attachid>73721</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-11-19 20:45:16 -0800</bug_when>
    <thetext>Comment on attachment 73721
Support JIT_OPTIMIZE_MOD on Thumb-2

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

Hey Loki,

Looks like a great patch, a couple of small issues.

&gt; JavaScriptCore/jit/JITOpcodes32_64.cpp:1719
&gt; +#if CPU(ARM_THUMB2)
&gt; +    RegisterID regS0 = ARMRegisters::r6;
&gt; +    RegisterID regS1 = ARMRegisters::r7;
&gt; +#endif

I&apos;m not sure about defining these register names up here.  Currently all registers used by the JIT are effectively documented in JSInterfaceJIT.h, if someone wants to use a register they have one place to go look to see if it is used by the JIT, needs preserving in the entry trampolines, etc.  My concern is that a developer won&apos;t know to come look here to discover these registers are used.  I think it would be better to add definitions for regT5 &amp; regT6 in JSInterfaceJIT.h, for ARM &amp; ARMv7.

&gt; JavaScriptCore/assembler/MacroAssemblerARMv7.h:226
&gt; +    void clz(RegisterID src, RegisterID dest)
&gt; +    {
&gt; +        m_assembler.clz(dest, src);
&gt; +    }

I&apos;m not sure about this method.  The first question is should this be in the MacroAssembler interface at all? - do we believe it can be usefully abstracted across a range of platforms? – x86&apos;s BSR has somewhat different semantics, so I&apos;m not sure we&apos;ll want to generally use this call in a cross platform way - but maybe we&apos;d abstract like this (I find BSR a little weird to use), so I&apos;m inclined to lean towards yes, keep this here (the alternative being to just call to m_assembler.clz directly).  But if we keep this, the name should change.  At minimum the operation size should be encoded in the name - clz32() (the name clz is correct at the assembler layer, this is just for the MacroAssemlber layer).  But coding style ask us to steer clear on acronyms &amp; abbreviations (unless they&apos;re particularly standard and conventional), and I think we should probably change clz32 to something more explicit - like countLeadingZeros32().  What do you think?

r+ with these changes, r-ing this patch.

cheers,
G.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311963</commentid>
    <comment_count>4</comment_count>
      <attachid>74486</attachid>
    <who name="Gabor Loki">loki</who>
    <bug_when>2010-11-20 12:08:27 -0800</bug_when>
    <thetext>Created attachment 74486
Support JIT_OPTIMIZE_MOD on Thumb-2

List of changes:
* The clz functions are renamed to countLeadingZeros32 in MacroAssembler interface.
* I was able to remove the two extra temporary registers using one extra space from stack.
* A possible bug was fixed related to ARMv4.
* The performance numbers are not changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311974</commentid>
    <comment_count>5</comment_count>
      <attachid>74486</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-11-20 12:57:39 -0800</bug_when>
    <thetext>Comment on attachment 74486
Support JIT_OPTIMIZE_MOD on Thumb-2

Looks awesome Loki.  Just spotted that:
&gt; #error &quot;JIT_OPTIMIZE_MOD not yet supported on this platform.&quot;
should now be
&gt; #error &quot;JIT_USE_SOFT_MODULO not yet supported on this platform.&quot;
but that&apos;s my bad from an earlier change, and won&apos;t hold your patch up further for this – will fix later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311982</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-20 14:00:07 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 74486:

http/tests/appcache/credential-url.html

Please file bugs against the tests.  These tests were authored by jchaffraix@webkit.org.  The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311983</commentid>
    <comment_count>7</comment_count>
      <attachid>74486</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-20 14:02:58 -0800</bug_when>
    <thetext>Comment on attachment 74486
Support JIT_OPTIMIZE_MOD on Thumb-2

Clearing flags on attachment: 74486

Committed r72481: &lt;http://trac.webkit.org/changeset/72481&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311984</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-20 14:03:03 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311989</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-20 14:34:29 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 74486:

fast/profiler/throw-exception-from-eval.html
fast/workers/storage/use-same-database-in-page-and-workers.html

Please file bugs against the tests.  These tests were authored by dumi@chromium.org, kmccullough@apple.com, oliver@apple.com, and timothy@apple.com.  The commit-queue is continuing to process your patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73718</attachid>
            <date>2010-11-12 01:53:29 -0800</date>
            <delta_ts>2010-11-12 02:01:26 -0800</delta_ts>
            <desc>Support JIT_OPTIMIZE_MOD on Thumb-2</desc>
            <filename>0001-Support-JIT_OPTIMIZE_MOD-on-Thumb-2.patch</filename>
            <type>text/plain</type>
            <size>12996</size>
            <attacher name="Gabor Loki">loki</attacher>
            
              <data encoding="base64">RnJvbSBjMTZiYmIwMjBkZGM0MjUwNjdlNzRkMjU5MmU4ZTdkOWM4MWU5ZGMwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBHYWJvciBMb2tpIDxsb2tpQGluZi51LXN6ZWdlZC5odT4KRGF0
ZTogRnJpLCAxMiBOb3YgMjAxMCAxMDo0Nzo0NSArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIFN1cHBv
cnQgSklUX09QVElNSVpFX01PRCBvbiBUaHVtYi0yCgpTaWduZWQtb2ZmLWJ5OiBHYWJvciBMb2tp
IDxsb2tpQGluZi51LXN6ZWdlZC5odT4KLS0tCiBKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAyNyArKysrKysrCiBKYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQVJNdjdBc3NlbWJsZXIuaCAgICAgIHwgICAgOCArKwogSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNLmggICB8ICAgMTQgKysrKwogSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCB8ICAgMTcgKysrKysKIEphdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcCAgICAgICAgICAgICAgfCAgIDgyIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgICAgICAgICB8ICAg
OTEgKysrKysrKysrKysrKysrKysrKysrKysrCiBKYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMu
Y3BwICAgICAgICAgICAgICAgIHwgICAgMSAtCiBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0u
aCAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogOCBmaWxlcyBjaGFuZ2VkLCAxNTggaW5zZXJ0
aW9ucygrKSwgODQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDhmNjYzZmYuLjFhNzhiMGEg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMC0xMS0xMiAgR2Fib3IgTG9raSAgPGxv
a2lAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTdXBwb3J0IEpJVF9PUFRJTUlaRV9NT0Qgb24gVGh1bWItMgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDk0MzIKKworICAgICAgICBSZXdy
aXRlIHRoZSBzb2Z0IG1vZHVsbyBvcGVyYXRpb24gaW50byBtYWNyb2Fzc2VtYmxlciBmb3JtLCBh
bmQgbW92ZSBpdAorICAgICAgICB0byBKU1ZhbHVlMzJfNjQgc2VjdGlvbi4KKyAgICAgICAgQWRk
IHN1cHBvcnQgZm9yIHNvZnQgbW9kdWxvIG9uIFRodW1iLTIgSklUIGFsc28uCisKKyAgICAgICAg
KiBhc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJs
ZXI6OmNseik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmg6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpjbHopOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTo6cmVsYXRpdmVUYWJsZUp1bXApOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmNs
eik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnJlbGF0aXZlVGFibGVKdW1w
KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVDVElNYWNoaW5lVHJhbXBvbGluZXMpOgorICAgICAgICAqIGppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnNvZnRNb2R1bG8pOgorICAgICAgICAq
IGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6SklUVGh1bmtzKToK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMC0xMS0wOCAgQWRhbSBSb2JlbiAgPGFy
b2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUm9sbCBvdXQgcjcxNTMyCmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaCBiL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCmluZGV4IDM3YjY1MGIuLmE0MDIwOGEgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCisrKyBiL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCkBAIC02OTQsNiArNjk0LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgT1BfTFNSX3JlZ19UMiAgID0gMHhGQTIwLAogICAgICAgICBP
UF9BU1JfcmVnX1QyICAgPSAweEZBNDAsCiAgICAgICAgIE9QX1JPUl9yZWdfVDIgICA9IDB4RkE2
MCwKKyAgICAgICAgT1BfQ0xaICAgICAgICAgID0gMHhGQUIwLAogICAgICAgICBPUF9TTVVMTF9U
MSAgICAgPSAweEZCODAsCiAgICAgfSBPcGNvZGVJRDE7CiAKQEAgLTk0Nyw2ICs5NDgsMTMgQEAg
cHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVXb3JkT3A4SW1tOChPUF9CS1BULCBpbW0p
OwogICAgIH0KIAorICAgIHZvaWQgY2x6KFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm0pCisg
ICAgeworICAgICAgICBBU1NFUlQoIUJhZFJlZyhyZCkpOworICAgICAgICBBU1NFUlQoIUJhZFJl
ZyhybSkpOworICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3JkT3AxMlJlZzRGb3VyRm91cnMoT1Bf
Q0xaLCBybSwgRm91ckZvdXJzKDB4ZiwgcmQsIDgsIHJtKSk7CisgICAgfQorCiAgICAgdm9pZCBj
bW4oUmVnaXN0ZXJJRCBybiwgQVJNVGh1bWJJbW1lZGlhdGUgaW1tKQogICAgIHsKICAgICAgICAg
QVNTRVJUKHJuICE9IEFSTVJlZ2lzdGVyczo6cGMpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmggYi9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAppbmRleCA0OWM4N2MwLi45MjIwMTI0IDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAorKysgYi9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaApAQCAtMjI4LDYgKzIyOCwx
MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmVvcnNfcihkZXN0LCBkZXN0LCBtX2Fz
c2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzApKTsKICAgICB9CiAK
KyAgICB2b2lkIGNseihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuY2x6X3IoZGVzdCwgc3JjKTsKKyAgICB9CisKICAgICB2b2lkIGxv
YWQ4KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci5kYXRhVHJhbnNmZXIzMih0cnVlLCBkZXN0LCBhZGRyZXNzLmJhc2Us
IGFkZHJlc3Mub2Zmc2V0LCB0cnVlKTsKQEAgLTcxMCw2ICs3MTUsMTUgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgQVJNUmVnaXN0ZXJzOjpTMSwgcmlnaHQpOwogICAg
IH0KIAorICAgIHZvaWQgcmVsYXRpdmVUYWJsZUp1bXAoUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHNjYWxlID49IDAgJiYgc2NhbGUgPD0gMzEpOwor
ICAgICAgICBtX2Fzc2VtYmxlci5hZGRfcihBUk1SZWdpc3RlcnM6OnBjLCBBUk1SZWdpc3RlcnM6
OnBjLCBtX2Fzc2VtYmxlci5sc2woaW5kZXgsIHNjYWxlKSwgQVJNQXNzZW1ibGVyOjpORSk7CisK
KyAgICAgICAgLy8gTk9QIHRoZSBkZWZhdWx0IHByZWZldGNoaW5nCisgICAgICAgIG1fYXNzZW1i
bGVyLm1vdl9yKEFSTVJlZ2lzdGVyczo6cjAsIEFSTVJlZ2lzdGVyczo6cjApOworICAgIH0KKwog
ICAgIENhbGwgY2FsbCgpCiAgICAgewogI2lmIFdURl9BUk1fQVJDSF9BVF9MRUFTVCg1KQpkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBi
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKaW5kZXggZmU1
ZDA1Mi4uZTc2YzQwYyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNdjcuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk12Ny5oCkBAIC0yMjAsNiArMjIwLDExIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAg
IH0KIAorICAgIHZvaWQgY2x6KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5jbHooZGVzdCwgc3JjKTsKKyAgICB9CisKICAgICB2b2lk
IGxzaGlmdDMyKFJlZ2lzdGVySUQgc2hpZnRfYW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewogICAgICAgICAvLyBDbGFtcCB0aGUgc2hpZnQgdG8gdGhlIHJhbmdlIDAuLjMxCkBAIC0xMDc0
LDYgKzEwNzksMTggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNv
bmQpKTsKICAgICB9CiAgICAgCisgICAgdm9pZCByZWxhdGl2ZVRhYmxlSnVtcChSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBBU1NFUlQoc2NhbGUgPj0gMCAmJiBz
Y2FsZSA8PSAzMSk7CisKKyAgICAgICAgLy8gZGF0YVRlbXBSZWdpc3RlciB3aWxsIHBvaW50IGFm
dGVyIHRoZSBqdW1wIGlmIGluZGV4IHJlZ2lzdGVyIGNvbnRhaW5zIHplcm8KKyAgICAgICAgbW92
ZShBUk1SZWdpc3RlcnM6OnBjLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIuYWRkKGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIEFSTVRodW1iSW1tZWRp
YXRlOjptYWtlRW5jb2RlZEltbSg5KSk7CisKKyAgICAgICAgU2hpZnRUeXBlQW5kQW1vdW50IHNo
aWZ0KFNSVHlwZV9MU0wsIHNjYWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkKGRhdGFUZW1w
UmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGluZGV4LCBzaGlmdCk7CisgICAgICAgIGp1bXAo
ZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgfQogCiAgICAgLy8gTWlzY2VsbGFuZW91cyBvcGVyYXRp
b25zOgogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggNzQxNzBjMS4uYzcyOWNhNyAx
MDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtNDYsMTAgKzQ2LDYgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUNUSU1hY2hpbmVUcmFtcG9saW5lcyhS
ZWZQdHI8RXhlY3V0YWJsZVBvb2w+KiBleGVjdXRhYmxlUG9vbCwgSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBUcmFtcG9saW5lU3RydWN0dXJlICp0cmFtcG9saW5lcykKIHsKLSNpZiBFTkFCTEUo
SklUX1VTRV9TT0ZUX01PRFVMTykKLSAgICBMYWJlbCBzb2Z0TW9kQmVnaW4gPSBhbGlnbigpOwot
ICAgIHNvZnRNb2R1bG8oKTsKLSNlbmRpZgogI2lmIEVOQUJMRShKSVRfT1BUSU1JWkVfUFJPUEVS
VFlfQUNDRVNTKQogICAgIC8vICgyKSBUaGUgc2Vjb25kIGZ1bmN0aW9uIHByb3ZpZGVzIGZhc3Qg
cHJvcGVydHkgYWNjZXNzIGZvciBzdHJpbmcgbGVuZ3RoCiAgICAgTGFiZWwgc3RyaW5nTGVuZ3Ro
QmVnaW4gPSBhbGlnbigpOwpAQCAtMTg1LDkgKzE4MSw2IEBAIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZUNUSU1hY2hpbmVUcmFtcG9saW5lcyhSZWZQdHI8RXhlY3V0YWJsZVBvb2w+KiBleGVjdXRh
YmxlCiAgICAgdHJhbXBvbGluZXMtPmN0aVZpcnR1YWxDb25zdHJ1Y3QgPSBwYXRjaEJ1ZmZlci50
cmFtcG9saW5lQXQodmlydHVhbENvbnN0cnVjdEJlZ2luKTsKICAgICB0cmFtcG9saW5lcy0+Y3Rp
TmF0aXZlQ2FsbCA9IHBhdGNoQnVmZmVyLnRyYW1wb2xpbmVBdChuYXRpdmVDYWxsVGh1bmspOwog
ICAgIHRyYW1wb2xpbmVzLT5jdGlOYXRpdmVDb25zdHJ1Y3QgPSBwYXRjaEJ1ZmZlci50cmFtcG9s
aW5lQXQobmF0aXZlQ29uc3RydWN0VGh1bmspOwotI2lmIEVOQUJMRShKSVRfVVNFX1NPRlRfTU9E
VUxPKQotICAgIHRyYW1wb2xpbmVzLT5jdGlTb2Z0TW9kdWxvID0gcGF0Y2hCdWZmZXIudHJhbXBv
bGluZUF0KHNvZnRNb2RCZWdpbik7Ci0jZW5kaWYKICNpZiBFTkFCTEUoSklUX09QVElNSVpFX1BS
T1BFUlRZX0FDQ0VTUykKICAgICB0cmFtcG9saW5lcy0+Y3RpU3RyaW5nTGVuZ3RoVHJhbXBvbGlu
ZSA9IHBhdGNoQnVmZmVyLnRyYW1wb2xpbmVBdChzdHJpbmdMZW5ndGhCZWdpbik7CiAjZW5kaWYK
QEAgLTE3NDgsODEgKzE3NDEsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuYyhJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBsYXp5SnVtcC5saW5rKHRoaXMpOwog
fQogCi0vLyBGb3IgYm90aCBKU1ZhbHVlMzJfNjQgYW5kIEpTVmFsdWUzMgotI2lmIEVOQUJMRShK
SVRfVVNFX1NPRlRfTU9EVUxPKQotI2lmIENQVShBUk1fVFJBRElUSU9OQUwpCi12b2lkIEpJVDo6
c29mdE1vZHVsbygpCi17Ci0gICAgcHVzaChyZWdTMCk7Ci0gICAgcHVzaChyZWdTMSk7Ci0gICAg
cHVzaChyZWdUMSk7Ci0gICAgcHVzaChyZWdUMyk7Ci0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAg
ICBtX2Fzc2VtYmxlci5tb3ZfcihyZWdUMywgcmVnVDIpOwotICAgIG1fYXNzZW1ibGVyLm1vdl9y
KHJlZ1QyLCByZWdUMCk7Ci0jZWxzZQotICAgIG1fYXNzZW1ibGVyLm1vdl9yKHJlZ1QzLCBtX2Fz
c2VtYmxlci5hc3IocmVnVDIsIDEpKTsKLSAgICBtX2Fzc2VtYmxlci5tb3ZfcihyZWdUMiwgbV9h
c3NlbWJsZXIuYXNyKHJlZ1QwLCAxKSk7Ci0jZW5kaWYKLSAgICBtX2Fzc2VtYmxlci5tb3Zfcihy
ZWdUMSwgQVJNQXNzZW1ibGVyOjpnZXRPcDIoMCkpOwotICAgIAotICAgIG1fYXNzZW1ibGVyLnRl
cV9yKHJlZ1QzLCBBUk1Bc3NlbWJsZXI6OmdldE9wMigwKSk7Ci0gICAgbV9hc3NlbWJsZXIucnNi
X3IocmVnVDMsIHJlZ1QzLCBBUk1Bc3NlbWJsZXI6OmdldE9wMigwKSwgQVJNQXNzZW1ibGVyOjpN
SSk7Ci0gICAgbV9hc3NlbWJsZXIuZW9yX3IocmVnVDEsIHJlZ1QxLCBBUk1Bc3NlbWJsZXI6Omdl
dE9wMigxKSwgQVJNQXNzZW1ibGVyOjpNSSk7Ci0gICAgCi0gICAgbV9hc3NlbWJsZXIudGVxX3Io
cmVnVDIsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyKDApKTsKLSAgICBtX2Fzc2VtYmxlci5yc2Jfcihy
ZWdUMiwgcmVnVDIsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyKDApLCBBUk1Bc3NlbWJsZXI6Ok1JKTsK
LSAgICBtX2Fzc2VtYmxlci5lb3JfcihyZWdUMSwgcmVnVDEsIEFSTUFzc2VtYmxlcjo6Z2V0T3Ay
KDIpLCBBUk1Bc3NlbWJsZXI6Ok1JKTsKLSAgICAKLSAgICBKdW1wIGV4aXRCcmFuY2ggPSBicmFu
Y2gzMihMZXNzVGhhbiwgcmVnVDIsIHJlZ1QzKTsKLQotICAgIG1fYXNzZW1ibGVyLnN1Yl9yKHJl
Z1MxLCByZWdUMywgQVJNQXNzZW1ibGVyOjpnZXRPcDIoMSkpOwotICAgIG1fYXNzZW1ibGVyLnRz
dF9yKHJlZ1MxLCByZWdUMyk7Ci0gICAgbV9hc3NlbWJsZXIuYW5kX3IocmVnVDIsIHJlZ1QyLCBy
ZWdTMSwgQVJNQXNzZW1ibGVyOjpFUSk7Ci0gICAgbV9hc3NlbWJsZXIuYW5kX3IocmVnVDAsIHJl
Z1MxLCByZWdUMyk7Ci0gICAgSnVtcCBleGl0QnJhbmNoMiA9IGJyYW5jaFRlc3QzMihaZXJvLCBy
ZWdUMCk7Ci0gICAgCi0gICAgbV9hc3NlbWJsZXIuY2x6X3IocmVnUzEsIHJlZ1QyKTsKLSAgICBt
X2Fzc2VtYmxlci5jbHpfcihyZWdTMCwgcmVnVDMpOwotICAgIG1fYXNzZW1ibGVyLnN1Yl9yKHJl
Z1MwLCByZWdTMCwgcmVnUzEpOwotCi0gICAgbV9hc3NlbWJsZXIucnNic19yKHJlZ1MwLCByZWdT
MCwgQVJNQXNzZW1ibGVyOjpnZXRPcDIoMzEpKTsKLQotICAgIG1fYXNzZW1ibGVyLm1vdl9yKHJl
Z1MwLCBtX2Fzc2VtYmxlci5sc2wocmVnUzAsIDEpLCBBUk1Bc3NlbWJsZXI6Ok5FKTsKLQotICAg
IG1fYXNzZW1ibGVyLmFkZF9yKEFSTVJlZ2lzdGVyczo6cGMsIEFSTVJlZ2lzdGVyczo6cGMsIG1f
YXNzZW1ibGVyLmxzbChyZWdTMCwgMiksIEFSTUFzc2VtYmxlcjo6TkUpOwotICAgIG1fYXNzZW1i
bGVyLm1vdl9yKHJlZ1QwLCByZWdUMCk7Ci0gICAgCi0gICAgZm9yIChpbnQgaSA9IDMxOyBpID4g
MDsgLS1pKSB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmNtcF9yKHJlZ1QyLCBtX2Fzc2VtYmxlci5s
c2wocmVnVDMsIGkpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuc3ViX3IocmVnVDIsIHJlZ1QyLCBt
X2Fzc2VtYmxlci5sc2wocmVnVDMsIGkpLCBBUk1Bc3NlbWJsZXI6OkNTKTsKLSAgICB9Ci0KLSAg
ICBtX2Fzc2VtYmxlci5jbXBfcihyZWdUMiwgcmVnVDMpOwotICAgIG1fYXNzZW1ibGVyLnN1Yl9y
KHJlZ1QyLCByZWdUMiwgcmVnVDMsIEFSTUFzc2VtYmxlcjo6Q1MpOwotICAgIAotICAgIGV4aXRC
cmFuY2gubGluayh0aGlzKTsKLSAgICBleGl0QnJhbmNoMi5saW5rKHRoaXMpOwotICAgIAotICAg
IG1fYXNzZW1ibGVyLnRlcV9yKHJlZ1QxLCBBUk1Bc3NlbWJsZXI6OmdldE9wMigwKSk7Ci0gICAg
bV9hc3NlbWJsZXIucnNiX3IocmVnVDIsIHJlZ1QyLCBBUk1Bc3NlbWJsZXI6OmdldE9wMigwKSwg
QVJNQXNzZW1ibGVyOjpHVCk7Ci0gICAgCi0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBtX2Fz
c2VtYmxlci5tb3ZfcihyZWdUMCwgcmVnVDIpOwotI2Vsc2UKLSAgICBtX2Fzc2VtYmxlci5tb3Zf
cihyZWdUMCwgbV9hc3NlbWJsZXIubHNsKHJlZ1QyLCAxKSk7Ci0gICAgbV9hc3NlbWJsZXIuZW9y
X3IocmVnVDAsIHJlZ1QwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMigxKSk7Ci0jZW5kaWYKLSAgICBw
b3AocmVnVDMpOwotICAgIHBvcChyZWdUMSk7Ci0gICAgcG9wKHJlZ1MxKTsKLSAgICBwb3AocmVn
UzApOwotICAgIHJldCgpOwotfQotI2Vsc2UKLSNlcnJvciAiSklUX09QVElNSVpFX01PRCBub3Qg
eWV0IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLiIKLSNlbmRpZiAvLyBDUFUoQVJNX1RSQURJ
VElPTkFMKQotI2VuZGlmCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShK
SVQpCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBi
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDhlMDIyNmQuLjA2
NzY1MzUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3Bw
CisrKyBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC0xNzEwLDYg
KzE3MTAsOTcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9hcmd1bWVudF9ieV92YWwoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG8KICAgICBzdHViQ2FsbC5jYWxsKGRz
dCk7CiB9CiAKKyNpZiBFTkFCTEUoSklUX1VTRV9TT0ZUX01PRFVMTykKK3ZvaWQgSklUOjpzb2Z0
TW9kdWxvKCkKK3sKKyNpZiBDUFUoQVJNX1RIVU1CMikKKyAgICBSZWdpc3RlcklEIHJlZ1MwID0g
QVJNUmVnaXN0ZXJzOjpyNjsKKyAgICBSZWdpc3RlcklEIHJlZ1MxID0gQVJNUmVnaXN0ZXJzOjpy
NzsKKyNlbmRpZgorICAgIHB1c2gocmVnUzApOworICAgIHB1c2gocmVnUzEpOworICAgIHB1c2go
cmVnVDEpOworICAgIHB1c2gocmVnVDMpOworICAgIG1vdmUocmVnVDIsIHJlZ1QzKTsKKyAgICBt
b3ZlKHJlZ1QwLCByZWdUMik7CisgICAgbW92ZShJbW0zMigwKSwgcmVnVDEpOworCisgICAgSnVt
cCBwb3NpdGl2ZVJlZ1QzID0gYnJhbmNoMzIoR3JlYXRlclRoYW5PckVxdWFsLCByZWdUMywgSW1t
MzIoMCkpOworICAgIG5lZzMyKHJlZ1QzKTsKKyAgICB4b3IzMihJbW0zMigxKSwgcmVnVDEpOwor
ICAgIHBvc2l0aXZlUmVnVDMubGluayh0aGlzKTsKKworICAgIEp1bXAgcG9zaXRpdmVSZWdUMiA9
IGJyYW5jaDMyKEdyZWF0ZXJUaGFuT3JFcXVhbCwgcmVnVDIsIEltbTMyKDApKTsKKyAgICBuZWcz
MihyZWdUMik7CisgICAgeG9yMzIoSW1tMzIoMiksIHJlZ1QxKTsKKyAgICBwb3NpdGl2ZVJlZ1Qy
LmxpbmsodGhpcyk7CisKKyAgICBKdW1wIGV4aXRCcmFuY2ggPSBicmFuY2gzMihMZXNzVGhhbiwg
cmVnVDIsIHJlZ1QzKTsKKworICAgIG1vdmUocmVnVDMsIHJlZ1MxKTsKKyAgICBzdWIzMihJbW0z
MigxKSwgcmVnUzEpOworICAgIEp1bXAgcG93ZXJPZlR3byA9IGJyYW5jaFRlc3QzMihOb3RFcXVh
bCwgcmVnUzEsIHJlZ1QzKTsKKyAgICBhbmQzMihyZWdTMSwgcmVnVDIpOworICAgIHBvd2VyT2ZU
d28ubGluayh0aGlzKTsKKworICAgIG1vdmUocmVnUzEsIHJlZ1QwKTsKKyAgICBhbmQzMihyZWdU
MywgcmVnVDApOworCisgICAgSnVtcCBleGl0QnJhbmNoMiA9IGJyYW5jaFRlc3QzMihaZXJvLCBy
ZWdUMCk7CisKKyAgICBjbHoocmVnVDIsIHJlZ1MxKTsKKyAgICBjbHoocmVnVDMsIHJlZ1MwKTsK
KyAgICBzdWIzMihyZWdTMSwgcmVnUzApOworCisgICAgSnVtcCB1c2VGdWxsVGFibGUgPSBicmFu
Y2gzMihFcXVhbCwgcmVnUzAsIEltbTMyKDMxKSk7CisKKyAgICBuZWczMihyZWdTMCk7CisgICAg
YWRkMzIoSW1tMzIoMzEpLCByZWdTMCk7CisKKyAgICBpbnQgZWxlbWVudFNpemVCeVNoaWZ0ID0g
LTE7CisjaWYgQ1BVKEFSTSkKKyAgICBlbGVtZW50U2l6ZUJ5U2hpZnQgPSAzOworI2Vsc2UKKyNl
cnJvciAiSklUX09QVElNSVpFX01PRCBub3QgeWV0IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3Jt
LiIKKyNlbmRpZgorICAgIHJlbGF0aXZlVGFibGVKdW1wKHJlZ1MwLCBlbGVtZW50U2l6ZUJ5U2hp
ZnQpOworCisgICAgdXNlRnVsbFRhYmxlLmxpbmsodGhpcyk7CisgICAgZm9yIChpbnQgaSA9IDMx
OyBpID4gMDsgLS1pKSB7CisjaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkKKyAgICAgICAgbV9hc3Nl
bWJsZXIuY21wX3IocmVnVDIsIG1fYXNzZW1ibGVyLmxzbChyZWdUMywgaSkpOworICAgICAgICBt
X2Fzc2VtYmxlci5zdWJfcihyZWdUMiwgcmVnVDIsIG1fYXNzZW1ibGVyLmxzbChyZWdUMywgaSks
IEFSTUFzc2VtYmxlcjo6Q1MpOworI2VsaWYgQ1BVKEFSTV9USFVNQjIpCisgICAgICAgIFNoaWZ0
VHlwZUFuZEFtb3VudCBzaGlmdChTUlR5cGVfTFNMLCBpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIu
c3ViX1MocmVnUzAsIHJlZ1QyLCByZWdUMywgc2hpZnQpOworICAgICAgICBtX2Fzc2VtYmxlci5p
dChBUk12N0Fzc2VtYmxlcjo6Q29uZGl0aW9uQ1MpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3Yo
cmVnVDIsIHJlZ1MwKTsKKyNlbHNlCisjZXJyb3IgIkpJVF9PUFRJTUlaRV9NT0Qgbm90IHlldCBz
dXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4iCisjZW5kaWYKKyAgICB9CisKKyAgICBKdW1wIGxv
d2VyID0gYnJhbmNoMzIoQmVsb3csIHJlZ1QyLCByZWdUMyk7CisgICAgc3ViMzIocmVnVDMsIHJl
Z1QyKTsKKyAgICBsb3dlci5saW5rKHRoaXMpOworCisgICAgZXhpdEJyYW5jaC5saW5rKHRoaXMp
OworICAgIGV4aXRCcmFuY2gyLmxpbmsodGhpcyk7CisKKyAgICBKdW1wIG5lZ2F0aXZlT3JaZXJv
ID0gYnJhbmNoMzIoTGVzc1RoYW5PckVxdWFsLCByZWdUMSwgSW1tMzIoMCkpOworICAgIG5lZzMy
KHJlZ1QyKTsKKyAgICBuZWdhdGl2ZU9yWmVyby5saW5rKHRoaXMpOworCisgICAgbW92ZShyZWdU
MiwgcmVnVDApOworCisgICAgcG9wKHJlZ1QzKTsKKyAgICBwb3AocmVnVDEpOworICAgIHBvcChy
ZWdTMSk7CisgICAgcG9wKHJlZ1MwKTsKKyAgICByZXQoKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUo
SklUX1VTRV9TT0ZUX01PRFVMTykKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBV
U0UoSlNWQUxVRTMyXzY0KQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJz
LmNwcCBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKaW5kZXggODk2YjkzZC4uNTNl
MzVmZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAorKysgYi9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBAIC04MDEsNyArODAxLDYgQEAgSklUVGh1
bmtzOjpKSVRUaHVua3MoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogCiAgICAgQVNTRVJUKE9C
SkVDVF9PRkZTRVRPRihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgcmVnaXN0ZXJGaWxlKSA9PSBSRUdJ
U1RFUl9GSUxFX09GRlNFVCk7CiAgICAgQVNTRVJUKE9CSkVDVF9PRkZTRVRPRihzdHJ1Y3QgSklU
U3RhY2tGcmFtZSwgY2FsbEZyYW1lKSA9PSBDQUxMRlJBTUVfT0ZGU0VUKTsKLSAgICBBU1NFUlQo
T0JKRUNUX09GRlNFVE9GKHN0cnVjdCBKSVRTdGFja0ZyYW1lLCBleGNlcHRpb24pID09IEVYQ0VQ
VElPTl9PRkZTRVQpOwogICAgIC8vIFRoZSBmaWZ0aCBhcmd1bWVudCBpcyB0aGUgZmlyc3QgaXRl
bSBhbHJlYWR5IG9uIHRoZSBzdGFjay4KICAgICBBU1NFUlQoT0JKRUNUX09GRlNFVE9GKHN0cnVj
dCBKSVRTdGFja0ZyYW1lLCBlbmFibGVkUHJvZmlsZXJSZWZlcmVuY2UpID09IEVOQUJMRV9QUk9G
SUxFUl9SRUZFUkVOQ0VfT0ZGU0VUKTsKIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3Rm
L1BsYXRmb3JtLmggYi9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAppbmRleCAzZWRhMmRh
Li5lOWY0M2Q5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAorKysg
Yi9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaApAQCAtOTY4LDcgKzk2OCw3IEBACiAKIC8q
IENvbmZpZ3VyZSB0aGUgSklUICovCiAjaWYgRU5BQkxFKEpJVCkKLSAgICAjaWYgQ1BVKEFSTV9U
UkFESVRJT05BTCkKKyAgICAjaWYgQ1BVKEFSTSkKICAgICAjaWYgIWRlZmluZWQoRU5BQkxFX0pJ
VF9VU0VfU09GVF9NT0RVTE8pICYmIFdURl9BUk1fQVJDSF9BVF9MRUFTVCg1KQogICAgICNkZWZp
bmUgRU5BQkxFX0pJVF9VU0VfU09GVF9NT0RVTE8gMQogICAgICNlbmRpZgotLSAKMS43LjAuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73721</attachid>
            <date>2010-11-12 02:01:26 -0800</date>
            <delta_ts>2010-11-20 12:08:27 -0800</delta_ts>
            <desc>Support JIT_OPTIMIZE_MOD on Thumb-2</desc>
            <filename>0001-Support-JIT_OPTIMIZE_MOD-on-Thumb-2.patch</filename>
            <type>text/plain</type>
            <size>12978</size>
            <attacher name="Gabor Loki">loki</attacher>
            
              <data encoding="base64">RnJvbSBlOWJjN2U1NTdmMGUzZjI4YzA0MGUwMTU4ODdiZWJlNzY4ODg3MTdhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBHYWJvciBMb2tpIDxsb2tpQGluZi51LXN6ZWdlZC5odT4KRGF0
ZTogRnJpLCAxMiBOb3YgMjAxMCAxMDo1NjowNSArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIFN1cHBv
cnQgSklUX09QVElNSVpFX01PRCBvbiBUaHVtYi0yCgpTaWduZWQtb2ZmLWJ5OiBHYWJvciBMb2tp
IDxsb2tpQGluZi51LXN6ZWdlZC5odT4KLS0tCiBKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAyNyArKysrKysrCiBKYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQVJNdjdBc3NlbWJsZXIuaCAgICAgIHwgICAgOCArKwogSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNLmggICB8ICAgMTQgKysrKwogSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCB8ICAgMTcgKysrKysKIEphdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcCAgICAgICAgICAgICAgfCAgIDgyIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgICAgICAgICB8ICAg
OTEgKysrKysrKysrKysrKysrKysrKysrKysrCiBKYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMu
Y3BwICAgICAgICAgICAgICAgIHwgICAgMSAtCiBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0u
aCAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogOCBmaWxlcyBjaGFuZ2VkLCAxNTggaW5zZXJ0
aW9ucygrKSwgODQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDhmNjYzZmYuLjFhNzhiMGEg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMC0xMS0xMiAgR2Fib3IgTG9raSAgPGxv
a2lAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTdXBwb3J0IEpJVF9PUFRJTUlaRV9NT0Qgb24gVGh1bWItMgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDk0MzIKKworICAgICAgICBSZXdy
aXRlIHRoZSBzb2Z0IG1vZHVsbyBvcGVyYXRpb24gaW50byBtYWNyb2Fzc2VtYmxlciBmb3JtLCBh
bmQgbW92ZSBpdAorICAgICAgICB0byBKU1ZhbHVlMzJfNjQgc2VjdGlvbi4KKyAgICAgICAgQWRk
IHN1cHBvcnQgZm9yIHNvZnQgbW9kdWxvIG9uIFRodW1iLTIgSklUIGFsc28uCisKKyAgICAgICAg
KiBhc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJs
ZXI6OmNseik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmg6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpjbHopOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTo6cmVsYXRpdmVUYWJsZUp1bXApOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmNs
eik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnJlbGF0aXZlVGFibGVKdW1w
KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVDVElNYWNoaW5lVHJhbXBvbGluZXMpOgorICAgICAgICAqIGppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnNvZnRNb2R1bG8pOgorICAgICAgICAq
IGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6SklUVGh1bmtzKToK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMC0xMS0wOCAgQWRhbSBSb2JlbiAgPGFy
b2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUm9sbCBvdXQgcjcxNTMyCmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaCBiL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCmluZGV4IDM3YjY1MGIuLmE0MDIwOGEgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCisrKyBiL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCkBAIC02OTQsNiArNjk0LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgT1BfTFNSX3JlZ19UMiAgID0gMHhGQTIwLAogICAgICAgICBP
UF9BU1JfcmVnX1QyICAgPSAweEZBNDAsCiAgICAgICAgIE9QX1JPUl9yZWdfVDIgICA9IDB4RkE2
MCwKKyAgICAgICAgT1BfQ0xaICAgICAgICAgID0gMHhGQUIwLAogICAgICAgICBPUF9TTVVMTF9U
MSAgICAgPSAweEZCODAsCiAgICAgfSBPcGNvZGVJRDE7CiAKQEAgLTk0Nyw2ICs5NDgsMTMgQEAg
cHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVXb3JkT3A4SW1tOChPUF9CS1BULCBpbW0p
OwogICAgIH0KIAorICAgIHZvaWQgY2x6KFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm0pCisg
ICAgeworICAgICAgICBBU1NFUlQoIUJhZFJlZyhyZCkpOworICAgICAgICBBU1NFUlQoIUJhZFJl
ZyhybSkpOworICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3JkT3AxMlJlZzRGb3VyRm91cnMoT1Bf
Q0xaLCBybSwgRm91ckZvdXJzKDB4ZiwgcmQsIDgsIHJtKSk7CisgICAgfQorCiAgICAgdm9pZCBj
bW4oUmVnaXN0ZXJJRCBybiwgQVJNVGh1bWJJbW1lZGlhdGUgaW1tKQogICAgIHsKICAgICAgICAg
QVNTRVJUKHJuICE9IEFSTVJlZ2lzdGVyczo6cGMpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmggYi9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAppbmRleCA0OWM4N2MwLi4xYjA2NmZkIDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAorKysgYi9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaApAQCAtMjI4LDYgKzIyOCwx
MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmVvcnNfcihkZXN0LCBkZXN0LCBtX2Fz
c2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzApKTsKICAgICB9CiAK
KyAgICB2b2lkIGNseihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuY2x6X3IoZGVzdCwgc3JjKTsKKyAgICB9CisKICAgICB2b2lkIGxv
YWQ4KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci5kYXRhVHJhbnNmZXIzMih0cnVlLCBkZXN0LCBhZGRyZXNzLmJhc2Us
IGFkZHJlc3Mub2Zmc2V0LCB0cnVlKTsKQEAgLTcxMCw2ICs3MTUsMTUgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgQVJNUmVnaXN0ZXJzOjpTMSwgcmlnaHQpOwogICAg
IH0KIAorICAgIHZvaWQgcmVsYXRpdmVUYWJsZUp1bXAoUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHNjYWxlID49IDAgJiYgc2NhbGUgPD0gMzEpOwor
ICAgICAgICBtX2Fzc2VtYmxlci5hZGRfcihBUk1SZWdpc3RlcnM6OnBjLCBBUk1SZWdpc3RlcnM6
OnBjLCBtX2Fzc2VtYmxlci5sc2woaW5kZXgsIHNjYWxlKSk7CisKKyAgICAgICAgLy8gTk9QIHRo
ZSBkZWZhdWx0IHByZWZldGNoaW5nCisgICAgICAgIG1fYXNzZW1ibGVyLm1vdl9yKEFSTVJlZ2lz
dGVyczo6cjAsIEFSTVJlZ2lzdGVyczo6cjApOworICAgIH0KKwogICAgIENhbGwgY2FsbCgpCiAg
ICAgewogI2lmIFdURl9BUk1fQVJDSF9BVF9MRUFTVCg1KQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBiL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKaW5kZXggZmU1ZDA1Mi4uZTc2YzQwYyAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAor
KysgYi9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0y
MjAsNiArMjIwLDExIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgY2x6
KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5jbHooZGVzdCwgc3JjKTsKKyAgICB9CisKICAgICB2b2lkIGxzaGlmdDMyKFJlZ2lzdGVy
SUQgc2hpZnRfYW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICAvLyBDbGFt
cCB0aGUgc2hpZnQgdG8gdGhlIHJhbmdlIDAuLjMxCkBAIC0xMDc0LDYgKzEwNzksMTggQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKICAgICB9CiAgICAg
CisgICAgdm9pZCByZWxhdGl2ZVRhYmxlSnVtcChSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBBU1NFUlQoc2NhbGUgPj0gMCAmJiBzY2FsZSA8PSAzMSk7CisKKyAg
ICAgICAgLy8gZGF0YVRlbXBSZWdpc3RlciB3aWxsIHBvaW50IGFmdGVyIHRoZSBqdW1wIGlmIGlu
ZGV4IHJlZ2lzdGVyIGNvbnRhaW5zIHplcm8KKyAgICAgICAgbW92ZShBUk1SZWdpc3RlcnM6OnBj
LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkKGRhdGFUZW1wUmVn
aXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIEFSTVRodW1iSW1tZWRpYXRlOjptYWtlRW5jb2RlZElt
bSg5KSk7CisKKyAgICAgICAgU2hpZnRUeXBlQW5kQW1vdW50IHNoaWZ0KFNSVHlwZV9MU0wsIHNj
YWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkKGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1w
UmVnaXN0ZXIsIGluZGV4LCBzaGlmdCk7CisgICAgICAgIGp1bXAoZGF0YVRlbXBSZWdpc3Rlcik7
CisgICAgfQogCiAgICAgLy8gTWlzY2VsbGFuZW91cyBvcGVyYXRpb25zOgogCmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAKaW5kZXggNzQxNzBjMS4uYzcyOWNhNyAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcApAQCAtNDYsMTAgKzQ2LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZUNUSU1hY2hpbmVUcmFtcG9saW5lcyhSZWZQdHI8RXhlY3V0YWJsZVBv
b2w+KiBleGVjdXRhYmxlUG9vbCwgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBUcmFtcG9saW5l
U3RydWN0dXJlICp0cmFtcG9saW5lcykKIHsKLSNpZiBFTkFCTEUoSklUX1VTRV9TT0ZUX01PRFVM
TykKLSAgICBMYWJlbCBzb2Z0TW9kQmVnaW4gPSBhbGlnbigpOwotICAgIHNvZnRNb2R1bG8oKTsK
LSNlbmRpZgogI2lmIEVOQUJMRShKSVRfT1BUSU1JWkVfUFJPUEVSVFlfQUNDRVNTKQogICAgIC8v
ICgyKSBUaGUgc2Vjb25kIGZ1bmN0aW9uIHByb3ZpZGVzIGZhc3QgcHJvcGVydHkgYWNjZXNzIGZv
ciBzdHJpbmcgbGVuZ3RoCiAgICAgTGFiZWwgc3RyaW5nTGVuZ3RoQmVnaW4gPSBhbGlnbigpOwpA
QCAtMTg1LDkgKzE4MSw2IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUNUSU1hY2hpbmVUcmFt
cG9saW5lcyhSZWZQdHI8RXhlY3V0YWJsZVBvb2w+KiBleGVjdXRhYmxlCiAgICAgdHJhbXBvbGlu
ZXMtPmN0aVZpcnR1YWxDb25zdHJ1Y3QgPSBwYXRjaEJ1ZmZlci50cmFtcG9saW5lQXQodmlydHVh
bENvbnN0cnVjdEJlZ2luKTsKICAgICB0cmFtcG9saW5lcy0+Y3RpTmF0aXZlQ2FsbCA9IHBhdGNo
QnVmZmVyLnRyYW1wb2xpbmVBdChuYXRpdmVDYWxsVGh1bmspOwogICAgIHRyYW1wb2xpbmVzLT5j
dGlOYXRpdmVDb25zdHJ1Y3QgPSBwYXRjaEJ1ZmZlci50cmFtcG9saW5lQXQobmF0aXZlQ29uc3Ry
dWN0VGh1bmspOwotI2lmIEVOQUJMRShKSVRfVVNFX1NPRlRfTU9EVUxPKQotICAgIHRyYW1wb2xp
bmVzLT5jdGlTb2Z0TW9kdWxvID0gcGF0Y2hCdWZmZXIudHJhbXBvbGluZUF0KHNvZnRNb2RCZWdp
bik7Ci0jZW5kaWYKICNpZiBFTkFCTEUoSklUX09QVElNSVpFX1BST1BFUlRZX0FDQ0VTUykKICAg
ICB0cmFtcG9saW5lcy0+Y3RpU3RyaW5nTGVuZ3RoVHJhbXBvbGluZSA9IHBhdGNoQnVmZmVyLnRy
YW1wb2xpbmVBdChzdHJpbmdMZW5ndGhCZWdpbik7CiAjZW5kaWYKQEAgLTE3NDgsODEgKzE3NDEs
NiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgICAgICBsYXp5SnVtcC5saW5rKHRoaXMpOwogfQogCi0vLyBGb3IgYm90aCBK
U1ZhbHVlMzJfNjQgYW5kIEpTVmFsdWUzMgotI2lmIEVOQUJMRShKSVRfVVNFX1NPRlRfTU9EVUxP
KQotI2lmIENQVShBUk1fVFJBRElUSU9OQUwpCi12b2lkIEpJVDo6c29mdE1vZHVsbygpCi17Ci0g
ICAgcHVzaChyZWdTMCk7Ci0gICAgcHVzaChyZWdTMSk7Ci0gICAgcHVzaChyZWdUMSk7Ci0gICAg
cHVzaChyZWdUMyk7Ci0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBtX2Fzc2VtYmxlci5tb3Zf
cihyZWdUMywgcmVnVDIpOwotICAgIG1fYXNzZW1ibGVyLm1vdl9yKHJlZ1QyLCByZWdUMCk7Ci0j
ZWxzZQotICAgIG1fYXNzZW1ibGVyLm1vdl9yKHJlZ1QzLCBtX2Fzc2VtYmxlci5hc3IocmVnVDIs
IDEpKTsKLSAgICBtX2Fzc2VtYmxlci5tb3ZfcihyZWdUMiwgbV9hc3NlbWJsZXIuYXNyKHJlZ1Qw
LCAxKSk7Ci0jZW5kaWYKLSAgICBtX2Fzc2VtYmxlci5tb3ZfcihyZWdUMSwgQVJNQXNzZW1ibGVy
OjpnZXRPcDIoMCkpOwotICAgIAotICAgIG1fYXNzZW1ibGVyLnRlcV9yKHJlZ1QzLCBBUk1Bc3Nl
bWJsZXI6OmdldE9wMigwKSk7Ci0gICAgbV9hc3NlbWJsZXIucnNiX3IocmVnVDMsIHJlZ1QzLCBB
Uk1Bc3NlbWJsZXI6OmdldE9wMigwKSwgQVJNQXNzZW1ibGVyOjpNSSk7Ci0gICAgbV9hc3NlbWJs
ZXIuZW9yX3IocmVnVDEsIHJlZ1QxLCBBUk1Bc3NlbWJsZXI6OmdldE9wMigxKSwgQVJNQXNzZW1i
bGVyOjpNSSk7Ci0gICAgCi0gICAgbV9hc3NlbWJsZXIudGVxX3IocmVnVDIsIEFSTUFzc2VtYmxl
cjo6Z2V0T3AyKDApKTsKLSAgICBtX2Fzc2VtYmxlci5yc2JfcihyZWdUMiwgcmVnVDIsIEFSTUFz
c2VtYmxlcjo6Z2V0T3AyKDApLCBBUk1Bc3NlbWJsZXI6Ok1JKTsKLSAgICBtX2Fzc2VtYmxlci5l
b3JfcihyZWdUMSwgcmVnVDEsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyKDIpLCBBUk1Bc3NlbWJsZXI6
Ok1JKTsKLSAgICAKLSAgICBKdW1wIGV4aXRCcmFuY2ggPSBicmFuY2gzMihMZXNzVGhhbiwgcmVn
VDIsIHJlZ1QzKTsKLQotICAgIG1fYXNzZW1ibGVyLnN1Yl9yKHJlZ1MxLCByZWdUMywgQVJNQXNz
ZW1ibGVyOjpnZXRPcDIoMSkpOwotICAgIG1fYXNzZW1ibGVyLnRzdF9yKHJlZ1MxLCByZWdUMyk7
Ci0gICAgbV9hc3NlbWJsZXIuYW5kX3IocmVnVDIsIHJlZ1QyLCByZWdTMSwgQVJNQXNzZW1ibGVy
OjpFUSk7Ci0gICAgbV9hc3NlbWJsZXIuYW5kX3IocmVnVDAsIHJlZ1MxLCByZWdUMyk7Ci0gICAg
SnVtcCBleGl0QnJhbmNoMiA9IGJyYW5jaFRlc3QzMihaZXJvLCByZWdUMCk7Ci0gICAgCi0gICAg
bV9hc3NlbWJsZXIuY2x6X3IocmVnUzEsIHJlZ1QyKTsKLSAgICBtX2Fzc2VtYmxlci5jbHpfcihy
ZWdTMCwgcmVnVDMpOwotICAgIG1fYXNzZW1ibGVyLnN1Yl9yKHJlZ1MwLCByZWdTMCwgcmVnUzEp
OwotCi0gICAgbV9hc3NlbWJsZXIucnNic19yKHJlZ1MwLCByZWdTMCwgQVJNQXNzZW1ibGVyOjpn
ZXRPcDIoMzEpKTsKLQotICAgIG1fYXNzZW1ibGVyLm1vdl9yKHJlZ1MwLCBtX2Fzc2VtYmxlci5s
c2wocmVnUzAsIDEpLCBBUk1Bc3NlbWJsZXI6Ok5FKTsKLQotICAgIG1fYXNzZW1ibGVyLmFkZF9y
KEFSTVJlZ2lzdGVyczo6cGMsIEFSTVJlZ2lzdGVyczo6cGMsIG1fYXNzZW1ibGVyLmxzbChyZWdT
MCwgMiksIEFSTUFzc2VtYmxlcjo6TkUpOwotICAgIG1fYXNzZW1ibGVyLm1vdl9yKHJlZ1QwLCBy
ZWdUMCk7Ci0gICAgCi0gICAgZm9yIChpbnQgaSA9IDMxOyBpID4gMDsgLS1pKSB7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLmNtcF9yKHJlZ1QyLCBtX2Fzc2VtYmxlci5sc2wocmVnVDMsIGkpKTsKLSAg
ICAgICAgbV9hc3NlbWJsZXIuc3ViX3IocmVnVDIsIHJlZ1QyLCBtX2Fzc2VtYmxlci5sc2wocmVn
VDMsIGkpLCBBUk1Bc3NlbWJsZXI6OkNTKTsKLSAgICB9Ci0KLSAgICBtX2Fzc2VtYmxlci5jbXBf
cihyZWdUMiwgcmVnVDMpOwotICAgIG1fYXNzZW1ibGVyLnN1Yl9yKHJlZ1QyLCByZWdUMiwgcmVn
VDMsIEFSTUFzc2VtYmxlcjo6Q1MpOwotICAgIAotICAgIGV4aXRCcmFuY2gubGluayh0aGlzKTsK
LSAgICBleGl0QnJhbmNoMi5saW5rKHRoaXMpOwotICAgIAotICAgIG1fYXNzZW1ibGVyLnRlcV9y
KHJlZ1QxLCBBUk1Bc3NlbWJsZXI6OmdldE9wMigwKSk7Ci0gICAgbV9hc3NlbWJsZXIucnNiX3Io
cmVnVDIsIHJlZ1QyLCBBUk1Bc3NlbWJsZXI6OmdldE9wMigwKSwgQVJNQXNzZW1ibGVyOjpHVCk7
Ci0gICAgCi0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBtX2Fzc2VtYmxlci5tb3ZfcihyZWdU
MCwgcmVnVDIpOwotI2Vsc2UKLSAgICBtX2Fzc2VtYmxlci5tb3ZfcihyZWdUMCwgbV9hc3NlbWJs
ZXIubHNsKHJlZ1QyLCAxKSk7Ci0gICAgbV9hc3NlbWJsZXIuZW9yX3IocmVnVDAsIHJlZ1QwLCBB
Uk1Bc3NlbWJsZXI6OmdldE9wMigxKSk7Ci0jZW5kaWYKLSAgICBwb3AocmVnVDMpOwotICAgIHBv
cChyZWdUMSk7Ci0gICAgcG9wKHJlZ1MxKTsKLSAgICBwb3AocmVnUzApOwotICAgIHJldCgpOwot
fQotI2Vsc2UKLSNlcnJvciAiSklUX09QVElNSVpFX01PRCBub3QgeWV0IHN1cHBvcnRlZCBvbiB0
aGlzIHBsYXRmb3JtLiIKLSNlbmRpZiAvLyBDUFUoQVJNX1RSQURJVElPTkFMKQotI2VuZGlmCiB9
IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDhlMDIyNmQuLjA2NzY1MzUgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC0xNzEwLDYgKzE3MTAsOTcgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2dldF9hcmd1bWVudF9ieV92YWwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG8KICAgICBzdHViQ2FsbC5jYWxsKGRzdCk7CiB9CiAKKyNpZiBFTkFC
TEUoSklUX1VTRV9TT0ZUX01PRFVMTykKK3ZvaWQgSklUOjpzb2Z0TW9kdWxvKCkKK3sKKyNpZiBD
UFUoQVJNX1RIVU1CMikKKyAgICBSZWdpc3RlcklEIHJlZ1MwID0gQVJNUmVnaXN0ZXJzOjpyNjsK
KyAgICBSZWdpc3RlcklEIHJlZ1MxID0gQVJNUmVnaXN0ZXJzOjpyNzsKKyNlbmRpZgorICAgIHB1
c2gocmVnUzApOworICAgIHB1c2gocmVnUzEpOworICAgIHB1c2gocmVnVDEpOworICAgIHB1c2go
cmVnVDMpOworICAgIG1vdmUocmVnVDIsIHJlZ1QzKTsKKyAgICBtb3ZlKHJlZ1QwLCByZWdUMik7
CisgICAgbW92ZShJbW0zMigwKSwgcmVnVDEpOworCisgICAgSnVtcCBwb3NpdGl2ZVJlZ1QzID0g
YnJhbmNoMzIoR3JlYXRlclRoYW5PckVxdWFsLCByZWdUMywgSW1tMzIoMCkpOworICAgIG5lZzMy
KHJlZ1QzKTsKKyAgICB4b3IzMihJbW0zMigxKSwgcmVnVDEpOworICAgIHBvc2l0aXZlUmVnVDMu
bGluayh0aGlzKTsKKworICAgIEp1bXAgcG9zaXRpdmVSZWdUMiA9IGJyYW5jaDMyKEdyZWF0ZXJU
aGFuT3JFcXVhbCwgcmVnVDIsIEltbTMyKDApKTsKKyAgICBuZWczMihyZWdUMik7CisgICAgeG9y
MzIoSW1tMzIoMiksIHJlZ1QxKTsKKyAgICBwb3NpdGl2ZVJlZ1QyLmxpbmsodGhpcyk7CisKKyAg
ICBKdW1wIGV4aXRCcmFuY2ggPSBicmFuY2gzMihMZXNzVGhhbiwgcmVnVDIsIHJlZ1QzKTsKKwor
ICAgIG1vdmUocmVnVDMsIHJlZ1MxKTsKKyAgICBzdWIzMihJbW0zMigxKSwgcmVnUzEpOworICAg
IEp1bXAgcG93ZXJPZlR3byA9IGJyYW5jaFRlc3QzMihOb3RFcXVhbCwgcmVnUzEsIHJlZ1QzKTsK
KyAgICBhbmQzMihyZWdTMSwgcmVnVDIpOworICAgIHBvd2VyT2ZUd28ubGluayh0aGlzKTsKKwor
ICAgIG1vdmUocmVnUzEsIHJlZ1QwKTsKKyAgICBhbmQzMihyZWdUMywgcmVnVDApOworCisgICAg
SnVtcCBleGl0QnJhbmNoMiA9IGJyYW5jaFRlc3QzMihaZXJvLCByZWdUMCk7CisKKyAgICBjbHoo
cmVnVDIsIHJlZ1MxKTsKKyAgICBjbHoocmVnVDMsIHJlZ1MwKTsKKyAgICBzdWIzMihyZWdTMSwg
cmVnUzApOworCisgICAgSnVtcCB1c2VGdWxsVGFibGUgPSBicmFuY2gzMihFcXVhbCwgcmVnUzAs
IEltbTMyKDMxKSk7CisKKyAgICBuZWczMihyZWdTMCk7CisgICAgYWRkMzIoSW1tMzIoMzEpLCBy
ZWdTMCk7CisKKyAgICBpbnQgZWxlbWVudFNpemVCeVNoaWZ0ID0gLTE7CisjaWYgQ1BVKEFSTSkK
KyAgICBlbGVtZW50U2l6ZUJ5U2hpZnQgPSAzOworI2Vsc2UKKyNlcnJvciAiSklUX09QVElNSVpF
X01PRCBub3QgeWV0IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLiIKKyNlbmRpZgorICAgIHJl
bGF0aXZlVGFibGVKdW1wKHJlZ1MwLCBlbGVtZW50U2l6ZUJ5U2hpZnQpOworCisgICAgdXNlRnVs
bFRhYmxlLmxpbmsodGhpcyk7CisgICAgZm9yIChpbnQgaSA9IDMxOyBpID4gMDsgLS1pKSB7Cisj
aWYgQ1BVKEFSTV9UUkFESVRJT05BTCkKKyAgICAgICAgbV9hc3NlbWJsZXIuY21wX3IocmVnVDIs
IG1fYXNzZW1ibGVyLmxzbChyZWdUMywgaSkpOworICAgICAgICBtX2Fzc2VtYmxlci5zdWJfcihy
ZWdUMiwgcmVnVDIsIG1fYXNzZW1ibGVyLmxzbChyZWdUMywgaSksIEFSTUFzc2VtYmxlcjo6Q1Mp
OworI2VsaWYgQ1BVKEFSTV9USFVNQjIpCisgICAgICAgIFNoaWZ0VHlwZUFuZEFtb3VudCBzaGlm
dChTUlR5cGVfTFNMLCBpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViX1MocmVnUzAsIHJlZ1Qy
LCByZWdUMywgc2hpZnQpOworICAgICAgICBtX2Fzc2VtYmxlci5pdChBUk12N0Fzc2VtYmxlcjo6
Q29uZGl0aW9uQ1MpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3YocmVnVDIsIHJlZ1MwKTsKKyNl
bHNlCisjZXJyb3IgIkpJVF9PUFRJTUlaRV9NT0Qgbm90IHlldCBzdXBwb3J0ZWQgb24gdGhpcyBw
bGF0Zm9ybS4iCisjZW5kaWYKKyAgICB9CisKKyAgICBKdW1wIGxvd2VyID0gYnJhbmNoMzIoQmVs
b3csIHJlZ1QyLCByZWdUMyk7CisgICAgc3ViMzIocmVnVDMsIHJlZ1QyKTsKKyAgICBsb3dlci5s
aW5rKHRoaXMpOworCisgICAgZXhpdEJyYW5jaC5saW5rKHRoaXMpOworICAgIGV4aXRCcmFuY2gy
LmxpbmsodGhpcyk7CisKKyAgICBKdW1wIG5lZ2F0aXZlT3JaZXJvID0gYnJhbmNoMzIoTGVzc1Ro
YW5PckVxdWFsLCByZWdUMSwgSW1tMzIoMCkpOworICAgIG5lZzMyKHJlZ1QyKTsKKyAgICBuZWdh
dGl2ZU9yWmVyby5saW5rKHRoaXMpOworCisgICAgbW92ZShyZWdUMiwgcmVnVDApOworCisgICAg
cG9wKHJlZ1QzKTsKKyAgICBwb3AocmVnVDEpOworICAgIHBvcChyZWdTMSk7CisgICAgcG9wKHJl
Z1MwKTsKKyAgICByZXQoKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoSklUX1VTRV9TT0ZUX01PRFVM
TykKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQpk
aWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcCBiL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdHVicy5jcHAKaW5kZXggODk2YjkzZC4uNTNlMzVmZSAxMDA2NDQKLS0tIGEv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUU3R1YnMuY3BwCkBAIC04MDEsNyArODAxLDYgQEAgSklUVGh1bmtzOjpKSVRUaHVua3MoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogCiAgICAgQVNTRVJUKE9CSkVDVF9PRkZTRVRPRihzdHJ1
Y3QgSklUU3RhY2tGcmFtZSwgcmVnaXN0ZXJGaWxlKSA9PSBSRUdJU1RFUl9GSUxFX09GRlNFVCk7
CiAgICAgQVNTRVJUKE9CSkVDVF9PRkZTRVRPRihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgY2FsbEZy
YW1lKSA9PSBDQUxMRlJBTUVfT0ZGU0VUKTsKLSAgICBBU1NFUlQoT0JKRUNUX09GRlNFVE9GKHN0
cnVjdCBKSVRTdGFja0ZyYW1lLCBleGNlcHRpb24pID09IEVYQ0VQVElPTl9PRkZTRVQpOwogICAg
IC8vIFRoZSBmaWZ0aCBhcmd1bWVudCBpcyB0aGUgZmlyc3QgaXRlbSBhbHJlYWR5IG9uIHRoZSBz
dGFjay4KICAgICBBU1NFUlQoT0JKRUNUX09GRlNFVE9GKHN0cnVjdCBKSVRTdGFja0ZyYW1lLCBl
bmFibGVkUHJvZmlsZXJSZWZlcmVuY2UpID09IEVOQUJMRV9QUk9GSUxFUl9SRUZFUkVOQ0VfT0ZG
U0VUKTsKIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmggYi9KYXZh
U2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAppbmRleCAzZWRhMmRhLi5lOWY0M2Q5IDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAorKysgYi9KYXZhU2NyaXB0Q29yZS93
dGYvUGxhdGZvcm0uaApAQCAtOTY4LDcgKzk2OCw3IEBACiAKIC8qIENvbmZpZ3VyZSB0aGUgSklU
ICovCiAjaWYgRU5BQkxFKEpJVCkKLSAgICAjaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkKKyAgICAj
aWYgQ1BVKEFSTSkKICAgICAjaWYgIWRlZmluZWQoRU5BQkxFX0pJVF9VU0VfU09GVF9NT0RVTE8p
ICYmIFdURl9BUk1fQVJDSF9BVF9MRUFTVCg1KQogICAgICNkZWZpbmUgRU5BQkxFX0pJVF9VU0Vf
U09GVF9NT0RVTE8gMQogICAgICNlbmRpZgotLSAKMS43LjAuNAoK
</data>
<flag name="review"
          id="64209"
          type_id="1"
          status="-"
          setter="barraclough"
    />
    <flag name="commit-queue"
          id="64210"
          type_id="3"
          status="-"
          setter="barraclough"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74486</attachid>
            <date>2010-11-20 12:08:27 -0800</date>
            <delta_ts>2010-11-20 14:02:58 -0800</delta_ts>
            <desc>Support JIT_OPTIMIZE_MOD on Thumb-2</desc>
            <filename>0001-Support-JIT_OPTIMIZE_MOD-on-Thumb-2.patch</filename>
            <type>text/plain</type>
            <size>14363</size>
            <attacher name="Gabor Loki">loki</attacher>
            
              <data encoding="base64">RnJvbSAxNTM0NzI4ZmQyMDdkNDhiOTBlZjMyNzY5MzU0Y2JiZWIzMzhhMTE4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBHYWJvciBMb2tpIDxsb2tpQGluZi51LXN6ZWdlZC5odT4KRGF0
ZTogU2F0LCAyMCBOb3YgMjAxMCAyMDo1ODozNSArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIFN1cHBv
cnQgSklUX09QVElNSVpFX01PRCBvbiBUaHVtYi0yCgpTaWduZWQtb2ZmLWJ5OiBHYWJvciBMb2tp
IDxsb2tpQGluZi51LXN6ZWdlZC5odT4KLS0tCiBKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAyOSArKysrKysrKwogSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0FSTXY3QXNzZW1ibGVyLmggICAgICB8ICAgIDggKysKIEphdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTS5oICAgfCAgIDIwICsrKysrCiBKYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIHwgICAxNyArKysrKwogSmF2YVNjcmlwdENv
cmUvaml0L0pJVEFyaXRobWV0aWMuY3BwICAgICAgICAgICB8ICAgMTIgLS0tCiBKYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgICAgICAgICAgICAgIHwgICA4MiAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIEphdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwICAgICAgICAg
fCAgIDkwICsrKysrKysrKysrKysrKysrKysrKysrKwogSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0
dWJzLmNwcCAgICAgICAgICAgICAgICB8ICAgIDEgLQogSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRm
b3JtLmggICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIDkgZmlsZXMgY2hhbmdlZCwgMTY1IGlu
c2VydGlvbnMoKyksIDk2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAxMDIyZDM1Li5hMjI0
MmQ1IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTAtMTEtMjAgIEdhYm9yIExva2kg
IDxsb2tpQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgU3VwcG9ydCBKSVRfT1BUSU1JWkVfTU9EIG9uIFRodW1iLTIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5NDMyCisKKyAgICAgICAg
UmV3cml0ZSB0aGUgc29mdCBtb2R1bG8gb3BlcmF0aW9uIGludG8gbWFjcm9hc3NlbWJsZXIgZm9y
bSwgYW5kIG1vdmUgaXQKKyAgICAgICAgdG8gSlNWYWx1ZTMyXzY0IHNlY3Rpb24uCisgICAgICAg
IEFkZCBzdXBwb3J0IGZvciBzb2Z0IG1vZHVsbyBvbiBUaHVtYi0yIEpJVCBhbHNvLgorCisgICAg
ICAgICogYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFSTXY3QXNz
ZW1ibGVyOjpjbHopOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6Y291bnRMZWFkaW5nWmVyb3MzMik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpyZWxhdGl2ZVRhYmxlSnVtcCk6CisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaDoKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk12Nzo6Y291bnRMZWFkaW5nWmVyb3MzMik6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyQVJNdjc6OnJlbGF0aXZlVGFibGVKdW1wKToKKyAgICAgICAgKiBqaXQvSklU
QXJpdGhtZXRpYy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9tb2QpOgorICAgICAg
ICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGls
ZUNUSU1hY2hpbmVUcmFtcG9saW5lcyk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6c29mdE1vZHVsbyk6CisgICAgICAgICogaml0L0pJVFN0
dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjpKSVRUaHVua3MpOgorICAgICAgICAq
IHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDEwLTExLTE5ICBXaWxsaWFtIENoYW4gIDx3aWxsY2hhbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCmRpZmYgLS1n
aXQgYS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaCBiL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCmluZGV4IDM3YjY1MGIuLmE0MDIwOGEg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCisr
KyBiL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCkBAIC02OTQsNiAr
Njk0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgT1BfTFNSX3JlZ19UMiAgID0gMHhGQTIwLAogICAg
ICAgICBPUF9BU1JfcmVnX1QyICAgPSAweEZBNDAsCiAgICAgICAgIE9QX1JPUl9yZWdfVDIgICA9
IDB4RkE2MCwKKyAgICAgICAgT1BfQ0xaICAgICAgICAgID0gMHhGQUIwLAogICAgICAgICBPUF9T
TVVMTF9UMSAgICAgPSAweEZCODAsCiAgICAgfSBPcGNvZGVJRDE7CiAKQEAgLTk0Nyw2ICs5NDgs
MTMgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVXb3JkT3A4SW1tOChPUF9CS1BU
LCBpbW0pOwogICAgIH0KIAorICAgIHZvaWQgY2x6KFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQg
cm0pCisgICAgeworICAgICAgICBBU1NFUlQoIUJhZFJlZyhyZCkpOworICAgICAgICBBU1NFUlQo
IUJhZFJlZyhybSkpOworICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3JkT3AxMlJlZzRGb3VyRm91
cnMoT1BfQ0xaLCBybSwgRm91ckZvdXJzKDB4ZiwgcmQsIDgsIHJtKSk7CisgICAgfQorCiAgICAg
dm9pZCBjbW4oUmVnaXN0ZXJJRCBybiwgQVJNVGh1bWJJbW1lZGlhdGUgaW1tKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKHJuICE9IEFSTVJlZ2lzdGVyczo6cGMpOwpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmggYi9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAppbmRleCA0OWM4N2MwLi5hYjYxMDRkIDEwMDY0
NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaApAQCAtMjI4LDYg
KzIyOCwxNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmVvcnNfcihkZXN0LCBkZXN0
LCBtX2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzApKTsKICAg
ICB9CiAKKyAgICB2b2lkIGNvdW50TGVhZGluZ1plcm9zMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisjaWYgV1RGX0FSTV9BUkNIX0FUX0xFQVNUKDUpCisgICAgICAg
IG1fYXNzZW1ibGVyLmNsel9yKGRlc3QsIHNyYyk7CisjZWxzZQorICAgICAgICBVTlVTRURfUEFS
QU0oc3JjKTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKGRlc3QpOworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyNlbmRpZgorICAgIH0KKwogICAgIHZvaWQgbG9hZDgoSW1wbGljaXRBZGRy
ZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVy
LmRhdGFUcmFuc2ZlcjMyKHRydWUsIGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQs
IHRydWUpOwpAQCAtNzEwLDYgKzcyMSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFu
Y2gzMihjb25kLCBBUk1SZWdpc3RlcnM6OlMxLCByaWdodCk7CiAgICAgfQogCisgICAgdm9pZCBy
ZWxhdGl2ZVRhYmxlSnVtcChSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAg
ICAgICBBU1NFUlQoc2NhbGUgPj0gMCAmJiBzY2FsZSA8PSAzMSk7CisgICAgICAgIG1fYXNzZW1i
bGVyLmFkZF9yKEFSTVJlZ2lzdGVyczo6cGMsIEFSTVJlZ2lzdGVyczo6cGMsIG1fYXNzZW1ibGVy
LmxzbChpbmRleCwgc2NhbGUpKTsKKworICAgICAgICAvLyBOT1AgdGhlIGRlZmF1bHQgcHJlZmV0
Y2hpbmcKKyAgICAgICAgbV9hc3NlbWJsZXIubW92X3IoQVJNUmVnaXN0ZXJzOjpyMCwgQVJNUmVn
aXN0ZXJzOjpyMCk7CisgICAgfQorCiAgICAgQ2FsbCBjYWxsKCkKICAgICB7CiAjaWYgV1RGX0FS
TV9BUkNIX0FUX0xFQVNUKDUpCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGIvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNdjcuaAppbmRleCBmZTVkMDUyLi5kNWI0Y2U3IDEwMDY0NAotLS0gYS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKQEAgLTIyMCw2ICsyMjAsMTEgQEAg
cHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCBjb3VudExlYWRpbmdaZXJvczMy
KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5jbHooZGVzdCwgc3JjKTsKKyAgICB9CisKICAgICB2b2lkIGxzaGlmdDMyKFJlZ2lzdGVy
SUQgc2hpZnRfYW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICAvLyBDbGFt
cCB0aGUgc2hpZnQgdG8gdGhlIHJhbmdlIDAuLjMxCkBAIC0xMDc0LDYgKzEwNzksMTggQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKICAgICB9CiAgICAg
CisgICAgdm9pZCByZWxhdGl2ZVRhYmxlSnVtcChSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBBU1NFUlQoc2NhbGUgPj0gMCAmJiBzY2FsZSA8PSAzMSk7CisKKyAg
ICAgICAgLy8gZGF0YVRlbXBSZWdpc3RlciB3aWxsIHBvaW50IGFmdGVyIHRoZSBqdW1wIGlmIGlu
ZGV4IHJlZ2lzdGVyIGNvbnRhaW5zIHplcm8KKyAgICAgICAgbW92ZShBUk1SZWdpc3RlcnM6OnBj
LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkKGRhdGFUZW1wUmVn
aXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIEFSTVRodW1iSW1tZWRpYXRlOjptYWtlRW5jb2RlZElt
bSg5KSk7CisKKyAgICAgICAgU2hpZnRUeXBlQW5kQW1vdW50IHNoaWZ0KFNSVHlwZV9MU0wsIHNj
YWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkKGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1w
UmVnaXN0ZXIsIGluZGV4LCBzaGlmdCk7CisgICAgICAgIGp1bXAoZGF0YVRlbXBSZWdpc3Rlcik7
CisgICAgfQogCiAgICAgLy8gTWlzY2VsbGFuZW91cyBvcGVyYXRpb25zOgogCmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQXJpdGhtZXRpYy5jcHAKaW5kZXggZjBhMDQ5YS4uY2QwNWY1MSAxMDA2NDQKLS0tIGEv
SmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCisrKyBiL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRBcml0aG1ldGljLmNwcApAQCAtOTE2LDIyICs5MTYsMTAgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfbW9kKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgdW5zaWduZWQg
b3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICB1bnNpZ25lZCBvcDIg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCi0jaWYgRU5BQkxFKEpJVF9VU0Vf
U09GVF9NT0RVTE8pCi0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMob3AxLCByZWdUMCwgb3Ay
LCByZWdUMik7Ci0gICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tZWRpYXRlSW50ZWdlcihyZWdU
MCk7Ci0gICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tZWRpYXRlSW50ZWdlcihyZWdUMik7Ci0K
LSAgICBhZGRTbG93Q2FzZShicmFuY2gzMihFcXVhbCwgcmVnVDIsIEltbTMyKDEpKSk7Ci0KLSAg
ICBlbWl0TmFrZWRDYWxsKG1fZ2xvYmFsRGF0YS0+aml0U3R1YnMtPmN0aVNvZnRNb2R1bG8oKSk7
Ci0KLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCwgcmVnVDApOwotI2Vsc2UKICAg
ICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfbW9kKTsKICAgICBzdHViQ2FsbC5h
ZGRBcmd1bWVudChvcDEsIHJlZ1QyKTsKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDIsIHJl
Z1QyKTsKICAgICBzdHViQ2FsbC5jYWxsKHJlc3VsdCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBKSVQ6
OmVtaXRTbG93X29wX21vZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
CmluZGV4IGQ3ODM1ODEuLjY2Mjg1YWUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAg
LTQ2LDEwICs0Niw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVDVElNYWNoaW5lVHJhbXBvbGluZXMoUmVmUHRyPEV4ZWN1dGFibGVQb29sPiogZXhlY3V0YWJs
ZVBvb2wsIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgVHJhbXBvbGluZVN0cnVjdHVyZSAqdHJh
bXBvbGluZXMpCiB7Ci0jaWYgRU5BQkxFKEpJVF9VU0VfU09GVF9NT0RVTE8pCi0gICAgTGFiZWwg
c29mdE1vZEJlZ2luID0gYWxpZ24oKTsKLSAgICBzb2Z0TW9kdWxvKCk7Ci0jZW5kaWYKICNpZiBF
TkFCTEUoSklUX09QVElNSVpFX1BST1BFUlRZX0FDQ0VTUykKICAgICAvLyAoMikgVGhlIHNlY29u
ZCBmdW5jdGlvbiBwcm92aWRlcyBmYXN0IHByb3BlcnR5IGFjY2VzcyBmb3Igc3RyaW5nIGxlbmd0
aAogICAgIExhYmVsIHN0cmluZ0xlbmd0aEJlZ2luID0gYWxpZ24oKTsKQEAgLTE4NSw5ICsxODEs
NiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVDVElNYWNoaW5lVHJhbXBvbGluZXMoUmVmUHRy
PEV4ZWN1dGFibGVQb29sPiogZXhlY3V0YWJsZQogICAgIHRyYW1wb2xpbmVzLT5jdGlWaXJ0dWFs
Q29uc3RydWN0ID0gcGF0Y2hCdWZmZXIudHJhbXBvbGluZUF0KHZpcnR1YWxDb25zdHJ1Y3RCZWdp
bik7CiAgICAgdHJhbXBvbGluZXMtPmN0aU5hdGl2ZUNhbGwgPSBwYXRjaEJ1ZmZlci50cmFtcG9s
aW5lQXQobmF0aXZlQ2FsbFRodW5rKTsKICAgICB0cmFtcG9saW5lcy0+Y3RpTmF0aXZlQ29uc3Ry
dWN0ID0gcGF0Y2hCdWZmZXIudHJhbXBvbGluZUF0KG5hdGl2ZUNvbnN0cnVjdFRodW5rKTsKLSNp
ZiBFTkFCTEUoSklUX1VTRV9TT0ZUX01PRFVMTykKLSAgICB0cmFtcG9saW5lcy0+Y3RpU29mdE1v
ZHVsbyA9IHBhdGNoQnVmZmVyLnRyYW1wb2xpbmVBdChzb2Z0TW9kQmVnaW4pOwotI2VuZGlmCiAj
aWYgRU5BQkxFKEpJVF9PUFRJTUlaRV9QUk9QRVJUWV9BQ0NFU1MpCiAgICAgdHJhbXBvbGluZXMt
PmN0aVN0cmluZ0xlbmd0aFRyYW1wb2xpbmUgPSBwYXRjaEJ1ZmZlci50cmFtcG9saW5lQXQoc3Ry
aW5nTGVuZ3RoQmVnaW4pOwogI2VuZGlmCkBAIC0xNzc3LDgxICsxNzcwLDYgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAg
ICAgbGF6eUp1bXAubGluayh0aGlzKTsKIH0KIAotLy8gRm9yIGJvdGggSlNWYWx1ZTMyXzY0IGFu
ZCBKU1ZhbHVlMzIKLSNpZiBFTkFCTEUoSklUX1VTRV9TT0ZUX01PRFVMTykKLSNpZiBDUFUoQVJN
X1RSQURJVElPTkFMKQotdm9pZCBKSVQ6OnNvZnRNb2R1bG8oKQotewotICAgIHB1c2gocmVnUzAp
OwotICAgIHB1c2gocmVnUzEpOwotICAgIHB1c2gocmVnVDEpOwotICAgIHB1c2gocmVnVDMpOwot
I2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgbV9hc3NlbWJsZXIubW92X3IocmVnVDMsIHJlZ1Qy
KTsKLSAgICBtX2Fzc2VtYmxlci5tb3ZfcihyZWdUMiwgcmVnVDApOwotI2Vsc2UKLSAgICBtX2Fz
c2VtYmxlci5tb3ZfcihyZWdUMywgbV9hc3NlbWJsZXIuYXNyKHJlZ1QyLCAxKSk7Ci0gICAgbV9h
c3NlbWJsZXIubW92X3IocmVnVDIsIG1fYXNzZW1ibGVyLmFzcihyZWdUMCwgMSkpOwotI2VuZGlm
Ci0gICAgbV9hc3NlbWJsZXIubW92X3IocmVnVDEsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyKDApKTsK
LSAgICAKLSAgICBtX2Fzc2VtYmxlci50ZXFfcihyZWdUMywgQVJNQXNzZW1ibGVyOjpnZXRPcDIo
MCkpOwotICAgIG1fYXNzZW1ibGVyLnJzYl9yKHJlZ1QzLCByZWdUMywgQVJNQXNzZW1ibGVyOjpn
ZXRPcDIoMCksIEFSTUFzc2VtYmxlcjo6TUkpOwotICAgIG1fYXNzZW1ibGVyLmVvcl9yKHJlZ1Qx
LCByZWdUMSwgQVJNQXNzZW1ibGVyOjpnZXRPcDIoMSksIEFSTUFzc2VtYmxlcjo6TUkpOwotICAg
IAotICAgIG1fYXNzZW1ibGVyLnRlcV9yKHJlZ1QyLCBBUk1Bc3NlbWJsZXI6OmdldE9wMigwKSk7
Ci0gICAgbV9hc3NlbWJsZXIucnNiX3IocmVnVDIsIHJlZ1QyLCBBUk1Bc3NlbWJsZXI6OmdldE9w
MigwKSwgQVJNQXNzZW1ibGVyOjpNSSk7Ci0gICAgbV9hc3NlbWJsZXIuZW9yX3IocmVnVDEsIHJl
Z1QxLCBBUk1Bc3NlbWJsZXI6OmdldE9wMigyKSwgQVJNQXNzZW1ibGVyOjpNSSk7Ci0gICAgCi0g
ICAgSnVtcCBleGl0QnJhbmNoID0gYnJhbmNoMzIoTGVzc1RoYW4sIHJlZ1QyLCByZWdUMyk7Ci0K
LSAgICBtX2Fzc2VtYmxlci5zdWJfcihyZWdTMSwgcmVnVDMsIEFSTUFzc2VtYmxlcjo6Z2V0T3Ay
KDEpKTsKLSAgICBtX2Fzc2VtYmxlci50c3RfcihyZWdTMSwgcmVnVDMpOwotICAgIG1fYXNzZW1i
bGVyLmFuZF9yKHJlZ1QyLCByZWdUMiwgcmVnUzEsIEFSTUFzc2VtYmxlcjo6RVEpOwotICAgIG1f
YXNzZW1ibGVyLmFuZF9yKHJlZ1QwLCByZWdTMSwgcmVnVDMpOwotICAgIEp1bXAgZXhpdEJyYW5j
aDIgPSBicmFuY2hUZXN0MzIoWmVybywgcmVnVDApOwotICAgIAotICAgIG1fYXNzZW1ibGVyLmNs
el9yKHJlZ1MxLCByZWdUMik7Ci0gICAgbV9hc3NlbWJsZXIuY2x6X3IocmVnUzAsIHJlZ1QzKTsK
LSAgICBtX2Fzc2VtYmxlci5zdWJfcihyZWdTMCwgcmVnUzAsIHJlZ1MxKTsKLQotICAgIG1fYXNz
ZW1ibGVyLnJzYnNfcihyZWdTMCwgcmVnUzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyKDMxKSk7Ci0K
LSAgICBtX2Fzc2VtYmxlci5tb3ZfcihyZWdTMCwgbV9hc3NlbWJsZXIubHNsKHJlZ1MwLCAxKSwg
QVJNQXNzZW1ibGVyOjpORSk7Ci0KLSAgICBtX2Fzc2VtYmxlci5hZGRfcihBUk1SZWdpc3RlcnM6
OnBjLCBBUk1SZWdpc3RlcnM6OnBjLCBtX2Fzc2VtYmxlci5sc2wocmVnUzAsIDIpLCBBUk1Bc3Nl
bWJsZXI6Ok5FKTsKLSAgICBtX2Fzc2VtYmxlci5tb3ZfcihyZWdUMCwgcmVnVDApOwotICAgIAot
ICAgIGZvciAoaW50IGkgPSAzMTsgaSA+IDA7IC0taSkgewotICAgICAgICBtX2Fzc2VtYmxlci5j
bXBfcihyZWdUMiwgbV9hc3NlbWJsZXIubHNsKHJlZ1QzLCBpKSk7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLnN1Yl9yKHJlZ1QyLCByZWdUMiwgbV9hc3NlbWJsZXIubHNsKHJlZ1QzLCBpKSwgQVJNQXNz
ZW1ibGVyOjpDUyk7Ci0gICAgfQotCi0gICAgbV9hc3NlbWJsZXIuY21wX3IocmVnVDIsIHJlZ1Qz
KTsKLSAgICBtX2Fzc2VtYmxlci5zdWJfcihyZWdUMiwgcmVnVDIsIHJlZ1QzLCBBUk1Bc3NlbWJs
ZXI6OkNTKTsKLSAgICAKLSAgICBleGl0QnJhbmNoLmxpbmsodGhpcyk7Ci0gICAgZXhpdEJyYW5j
aDIubGluayh0aGlzKTsKLSAgICAKLSAgICBtX2Fzc2VtYmxlci50ZXFfcihyZWdUMSwgQVJNQXNz
ZW1ibGVyOjpnZXRPcDIoMCkpOwotICAgIG1fYXNzZW1ibGVyLnJzYl9yKHJlZ1QyLCByZWdUMiwg
QVJNQXNzZW1ibGVyOjpnZXRPcDIoMCksIEFSTUFzc2VtYmxlcjo6R1QpOwotICAgIAotI2lmIFVT
RShKU1ZBTFVFMzJfNjQpCi0gICAgbV9hc3NlbWJsZXIubW92X3IocmVnVDAsIHJlZ1QyKTsKLSNl
bHNlCi0gICAgbV9hc3NlbWJsZXIubW92X3IocmVnVDAsIG1fYXNzZW1ibGVyLmxzbChyZWdUMiwg
MSkpOwotICAgIG1fYXNzZW1ibGVyLmVvcl9yKHJlZ1QwLCByZWdUMCwgQVJNQXNzZW1ibGVyOjpn
ZXRPcDIoMSkpOwotI2VuZGlmCi0gICAgcG9wKHJlZ1QzKTsKLSAgICBwb3AocmVnVDEpOwotICAg
IHBvcChyZWdTMSk7Ci0gICAgcG9wKHJlZ1MwKTsKLSAgICByZXQoKTsKLX0KLSNlbHNlCi0jZXJy
b3IgIkpJVF9PUFRJTUlaRV9NT0Qgbm90IHlldCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4i
Ci0jZW5kaWYgLy8gQ1BVKEFSTV9UUkFESVRJT05BTCkKLSNlbmRpZgogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcAppbmRleCAwNzY2NDlkLi5hMmJiMTU5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2RlczMyXzY0LmNwcApAQCAtMTc0MCw2ICsxNzQwLDk2IEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF9nZXRfYXJndW1lbnRfYnlfdmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvCiAgICAgc3R1YkNhbGwuY2FsbChkc3QpOwogfQogCisjaWYgRU5BQkxFKEpJVF9VU0VfU09G
VF9NT0RVTE8pCit2b2lkIEpJVDo6c29mdE1vZHVsbygpCit7CisgICAgcHVzaChyZWdUMSk7Cisg
ICAgcHVzaChyZWdUMyk7CisgICAgbW92ZShyZWdUMiwgcmVnVDMpOworICAgIG1vdmUocmVnVDAs
IHJlZ1QyKTsKKyAgICBtb3ZlKEltbTMyKDApLCByZWdUMSk7CisKKyAgICAvLyBDaGVjayBmb3Ig
bmVnYXRpdmUgcmVzdWx0IHJlbWluZGVyCisgICAgSnVtcCBwb3NpdGl2ZVJlZ1QzID0gYnJhbmNo
MzIoR3JlYXRlclRoYW5PckVxdWFsLCByZWdUMywgSW1tMzIoMCkpOworICAgIG5lZzMyKHJlZ1Qz
KTsKKyAgICB4b3IzMihJbW0zMigxKSwgcmVnVDEpOworICAgIHBvc2l0aXZlUmVnVDMubGluayh0
aGlzKTsKKworICAgIEp1bXAgcG9zaXRpdmVSZWdUMiA9IGJyYW5jaDMyKEdyZWF0ZXJUaGFuT3JF
cXVhbCwgcmVnVDIsIEltbTMyKDApKTsKKyAgICBuZWczMihyZWdUMik7CisgICAgeG9yMzIoSW1t
MzIoMiksIHJlZ1QxKTsKKyAgICBwb3NpdGl2ZVJlZ1QyLmxpbmsodGhpcyk7CisKKyAgICAvLyBT
YXZlIHRoZSBjb25kaXRpb24gZm9yIG5lZ2F0aXZlIHJlbWluZGVyCisgICAgcHVzaChyZWdUMSk7
CisKKyAgICBKdW1wIGV4aXRCcmFuY2ggPSBicmFuY2gzMihMZXNzVGhhbiwgcmVnVDIsIHJlZ1Qz
KTsKKworICAgIC8vIFBvd2VyIG9mIHR3byBmYXN0IGNhc2UKKyAgICBtb3ZlKHJlZ1QzLCByZWdU
MCk7CisgICAgc3ViMzIoSW1tMzIoMSksIHJlZ1QwKTsKKyAgICBKdW1wIHBvd2VyT2ZUd28gPSBi
cmFuY2hUZXN0MzIoTm90RXF1YWwsIHJlZ1QwLCByZWdUMyk7CisgICAgYW5kMzIocmVnVDAsIHJl
Z1QyKTsKKyAgICBwb3dlck9mVHdvLmxpbmsodGhpcyk7CisKKyAgICBhbmQzMihyZWdUMywgcmVn
VDApOworCisgICAgSnVtcCBleGl0QnJhbmNoMiA9IGJyYW5jaFRlc3QzMihaZXJvLCByZWdUMCk7
CisKKyAgICBjb3VudExlYWRpbmdaZXJvczMyKHJlZ1QyLCByZWdUMCk7CisgICAgY291bnRMZWFk
aW5nWmVyb3MzMihyZWdUMywgcmVnVDEpOworICAgIHN1YjMyKHJlZ1QwLCByZWdUMSk7CisKKyAg
ICBKdW1wIHVzZUZ1bGxUYWJsZSA9IGJyYW5jaDMyKEVxdWFsLCByZWdUMSwgSW1tMzIoMzEpKTsK
KworICAgIG5lZzMyKHJlZ1QxKTsKKyAgICBhZGQzMihJbW0zMigzMSksIHJlZ1QxKTsKKworICAg
IGludCBlbGVtZW50U2l6ZUJ5U2hpZnQgPSAtMTsKKyNpZiBDUFUoQVJNKQorICAgIGVsZW1lbnRT
aXplQnlTaGlmdCA9IDM7CisjZWxzZQorI2Vycm9yICJKSVRfT1BUSU1JWkVfTU9EIG5vdCB5ZXQg
c3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uIgorI2VuZGlmCisgICAgcmVsYXRpdmVUYWJsZUp1
bXAocmVnVDEsIGVsZW1lbnRTaXplQnlTaGlmdCk7CisKKyAgICB1c2VGdWxsVGFibGUubGluayh0
aGlzKTsKKyAgICAvLyBNb2R1bG8gdGFibGUKKyAgICBmb3IgKGludCBpID0gMzE7IGkgPiAwOyAt
LWkpIHsKKyNpZiBDUFUoQVJNX1RSQURJVElPTkFMKQorICAgICAgICBtX2Fzc2VtYmxlci5jbXBf
cihyZWdUMiwgbV9hc3NlbWJsZXIubHNsKHJlZ1QzLCBpKSk7CisgICAgICAgIG1fYXNzZW1ibGVy
LnN1Yl9yKHJlZ1QyLCByZWdUMiwgbV9hc3NlbWJsZXIubHNsKHJlZ1QzLCBpKSwgQVJNQXNzZW1i
bGVyOjpDUyk7CisjZWxpZiBDUFUoQVJNX1RIVU1CMikKKyAgICAgICAgU2hpZnRUeXBlQW5kQW1v
dW50IHNoaWZ0KFNSVHlwZV9MU0wsIGkpOworICAgICAgICBtX2Fzc2VtYmxlci5zdWJfUyhyZWdU
MSwgcmVnVDIsIHJlZ1QzLCBzaGlmdCk7CisgICAgICAgIG1fYXNzZW1ibGVyLml0KEFSTXY3QXNz
ZW1ibGVyOjpDb25kaXRpb25DUyk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdihyZWdUMiwgcmVn
VDEpOworI2Vsc2UKKyNlcnJvciAiSklUX09QVElNSVpFX01PRCBub3QgeWV0IHN1cHBvcnRlZCBv
biB0aGlzIHBsYXRmb3JtLiIKKyNlbmRpZgorICAgIH0KKworICAgIEp1bXAgbG93ZXIgPSBicmFu
Y2gzMihCZWxvdywgcmVnVDIsIHJlZ1QzKTsKKyAgICBzdWIzMihyZWdUMywgcmVnVDIpOworICAg
IGxvd2VyLmxpbmsodGhpcyk7CisKKyAgICBleGl0QnJhbmNoLmxpbmsodGhpcyk7CisgICAgZXhp
dEJyYW5jaDIubGluayh0aGlzKTsKKworICAgIC8vIENoZWNrIGZvciBuZWdhdGl2ZSByZW1pbmRl
cgorICAgIHBvcChyZWdUMSk7CisgICAgSnVtcCBwb3NpdGl2ZVJlc3VsdCA9IGJyYW5jaDMyKEVx
dWFsLCByZWdUMSwgSW1tMzIoMCkpOworICAgIG5lZzMyKHJlZ1QyKTsKKyAgICBwb3NpdGl2ZVJl
c3VsdC5saW5rKHRoaXMpOworCisgICAgbW92ZShyZWdUMiwgcmVnVDApOworCisgICAgcG9wKHJl
Z1QzKTsKKyAgICBwb3AocmVnVDEpOworICAgIHJldCgpOworfQorI2VuZGlmIC8vIEVOQUJMRShK
SVRfVVNFX1NPRlRfTU9EVUxPKQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFVT
RShKU1ZBTFVFMzJfNjQpCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMu
Y3BwIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAppbmRleCBiMjM0YTI1Li4wOTdk
NTViIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCisrKyBiL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKQEAgLTgwMSw3ICs4MDEsNiBAQCBKSVRUaHVu
a3M6OkpJVFRodW5rcyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiAKICAgICBBU1NFUlQoT0JK
RUNUX09GRlNFVE9GKHN0cnVjdCBKSVRTdGFja0ZyYW1lLCByZWdpc3RlckZpbGUpID09IFJFR0lT
VEVSX0ZJTEVfT0ZGU0VUKTsKICAgICBBU1NFUlQoT0JKRUNUX09GRlNFVE9GKHN0cnVjdCBKSVRT
dGFja0ZyYW1lLCBjYWxsRnJhbWUpID09IENBTExGUkFNRV9PRkZTRVQpOwotICAgIEFTU0VSVChP
QkpFQ1RfT0ZGU0VUT0Yoc3RydWN0IEpJVFN0YWNrRnJhbWUsIGV4Y2VwdGlvbikgPT0gRVhDRVBU
SU9OX09GRlNFVCk7CiAgICAgLy8gVGhlIGZpZnRoIGFyZ3VtZW50IGlzIHRoZSBmaXJzdCBpdGVt
IGFscmVhZHkgb24gdGhlIHN0YWNrLgogICAgIEFTU0VSVChPQkpFQ1RfT0ZGU0VUT0Yoc3RydWN0
IEpJVFN0YWNrRnJhbWUsIGVuYWJsZWRQcm9maWxlclJlZmVyZW5jZSkgPT0gRU5BQkxFX1BST0ZJ
TEVSX1JFRkVSRU5DRV9PRkZTRVQpOwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYv
UGxhdGZvcm0uaCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IGU2NTcyOWYu
LjJmZjgwMTkgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCisrKyBi
L0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCkBAIC05ODMsNyArOTgzLDcgQEAKIAogLyog
Q29uZmlndXJlIHRoZSBKSVQgKi8KICNpZiBFTkFCTEUoSklUKQotICAgICNpZiBDUFUoQVJNX1RS
QURJVElPTkFMKQorICAgICNpZiBDUFUoQVJNKQogICAgICNpZiAhZGVmaW5lZChFTkFCTEVfSklU
X1VTRV9TT0ZUX01PRFVMTykgJiYgV1RGX0FSTV9BUkNIX0FUX0xFQVNUKDUpCiAgICAgI2RlZmlu
ZSBFTkFCTEVfSklUX1VTRV9TT0ZUX01PRFVMTyAxCiAgICAgI2VuZGlmCi0tIAoxLjcuMC40Cgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>