<?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>149438</bug_id>
          
          <creation_ts>2015-09-21 18:05:18 -0700</creation_ts>
          <short_desc>Always use the compiler&apos;s CAS implementation and get rid of ENABLE(COMPARE_AND_SWAP)</short_desc>
          <delta_ts>2015-09-21 21:34:56 -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>Web Template Framework</component>
          <version>Other</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>149436</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1127865</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-09-21 18:05:18 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127870</commentid>
    <comment_count>1</comment_count>
      <attachid>261710</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-09-21 18:12:55 -0700</bug_when>
    <thetext>Created attachment 261710
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127883</commentid>
    <comment_count>2</comment_count>
      <attachid>261712</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-09-21 18:29:51 -0700</bug_when>
    <thetext>Created attachment 261712
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127901</commentid>
    <comment_count>3</comment_count>
      <attachid>261712</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-09-21 19:33:25 -0700</bug_when>
    <thetext>Comment on attachment 261712
the patch

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

r=me with build fix.

&gt; Source/WebCore/platform/text/TextBreakIterator.cpp:815
&gt;      return WTF::weakCompareAndSwap(reinterpret_cast&lt;void**&gt;(&amp;nonSharedCharacterBreakIterator), expected, newValue);

I think if you remove the reinterpret_cast here, the build breakage will be fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127916</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-09-21 21:00:45 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 261712 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=261712&amp;action=review
&gt; 
&gt; r=me with build fix.
&gt; 
&gt; &gt; Source/WebCore/platform/text/TextBreakIterator.cpp:815
&gt; &gt;      return WTF::weakCompareAndSwap(reinterpret_cast&lt;void**&gt;(&amp;nonSharedCharacterBreakIterator), expected, newValue);
&gt; 
&gt; I think if you remove the reinterpret_cast here, the build breakage will be
&gt; fixed.

Yup, that worked!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127918</commentid>
    <comment_count>5</comment_count>
      <attachid>261719</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-09-21 21:01:27 -0700</bug_when>
    <thetext>Created attachment 261719
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127924</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-09-21 21:34:56 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/190103</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261710</attachid>
            <date>2015-09-21 18:12:55 -0700</date>
            <delta_ts>2015-09-21 18:29:51 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>12905</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwMDk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBA
CisyMDE1LTA5LTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QWx3YXlzIHVzZSB0aGUgY29tcGlsZXIncyBDQVMgaW1wbGVtZW50YXRpb24gYW5kIGdldCByaWQg
b2YgRU5BQkxFKENPTVBBUkVfQU5EX1NXQVApCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk0MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
SGVhcDo6cmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGVw
cmVjYXRlZFJlcG9ydEV4dHJhTWVtb3J5KToKKwogMjAxNS0wOS0yMSAgQ29tbWl0IFF1ZXVlICA8
Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjE5MDA4Ni4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMu
aAkocmV2aXNpb24gMTkwMDc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDE1ICsxNzEsMTEgQEAgaW5saW5lIHZvaWQg
SGVhcDo6cmVwb3J0RXh0cmFNZW1vcnlWaXNpdAogCiAgICAgc2l6ZV90KiBjb3VudGVyID0gJm1f
ZXh0cmFNZW1vcnlTaXplOwogICAgIAotI2lmIEVOQUJMRShDT01QQVJFX0FORF9TV0FQKQogICAg
IGZvciAoOzspIHsKICAgICAgICAgc2l6ZV90IG9sZFNpemUgPSAqY291bnRlcjsKLSAgICAgICAg
aWYgKFdURjo6d2Vha0NvbXBhcmVBbmRTd2FwU2l6ZShjb3VudGVyLCBvbGRTaXplLCBvbGRTaXpl
ICsgc2l6ZSkpCisgICAgICAgIGlmIChXVEY6OndlYWtDb21wYXJlQW5kU3dhcChjb3VudGVyLCBv
bGRTaXplLCBvbGRTaXplICsgc2l6ZSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQotI2Vs
c2UKLSAgICAoKmNvdW50ZXIpICs9IHNpemU7Ci0jZW5kaWYKIH0KIAogaW5saW5lIHZvaWQgSGVh
cDo6ZGVwcmVjYXRlZFJlcG9ydEV4dHJhTWVtb3J5KHNpemVfdCBzaXplKQpJbmRleDogU291cmNl
L1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlz
aW9uIDE5MDA5NSkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTUtMDktMjEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
KworICAgICAgICBBbHdheXMgdXNlIHRoZSBjb21waWxlcidzIENBUyBpbXBsZW1lbnRhdGlvbiBh
bmQgZ2V0IHJpZCBvZiBFTkFCTEUoQ09NUEFSRV9BTkRfU1dBUCkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTQzOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0F0b21pY3MuaDogTWFrZSB3ZWFr
Q29tcGFyZUFuZFN3YXAoKSBqdXN0IGZvcndhcmQgdG8gdGhlIHN5c3RlbSBDQVMgdmlhIFdURjo6
QXRvbWljLgorICAgICAgICAoV1RGOjp3ZWFrQ29tcGFyZUFuZFN3YXApOgorICAgICAgICAoV1RG
Ojp3ZWFrQ29tcGFyZUFuZFN3YXBVSW50UHRyKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6d2Vh
a0NvbXBhcmVBbmRTd2FwU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL0JpdG1hcC5oOiBT
bWFsbCBjaGFuZ2VzIHRvIHVzZSB0aGUgbmV3IEFQSS4KKyAgICAgICAgKFdURjo6V29yZFR5cGU+
Ojpjb25jdXJyZW50VGVzdEFuZFNldCk6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6IFJlbW92
ZSBFTkFCTEUoQ09NUEFSRV9BTkRfU1dBUCkKKwogMjAxNS0wOS0yMSAgQ3NhYmEgT3N6dHJvZ29u
w6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBvbGQgR0NDIGNydWZ0IGZy
b20gd3RmL1N0ZExpYkV4dHJhcy5oCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQXRvbWljcy5oCShyZXZpc2lvbiAxOTAwNzcpCisr
KyBTb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMywxNDYgKzEx
MywxMSBAQCBzdHJ1Y3QgQXRvbWljIHsKICAgICBzdGQ6OmF0b21pYzxUPiB2YWx1ZTsKIH07CiAK
LSNpZiBPUyhXSU5ET1dTKQotaW5saW5lIGJvb2wgd2Vha0NvbXBhcmVBbmRTd2FwKHZvbGF0aWxl
IHVuc2lnbmVkKiBsb2NhdGlvbiwgdW5zaWduZWQgZXhwZWN0ZWQsIHVuc2lnbmVkIG5ld1ZhbHVl
KQotewotICAgIHJldHVybiBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZShyZWludGVycHJldF9j
YXN0PExPTkcgdm9sYXRpbGUqPihsb2NhdGlvbiksIHN0YXRpY19jYXN0PExPTkc+KG5ld1ZhbHVl
KSwgc3RhdGljX2Nhc3Q8TE9ORz4oZXhwZWN0ZWQpKSA9PSBzdGF0aWNfY2FzdDxMT05HPihleHBl
Y3RlZCk7Ci19Ci0KLWlubGluZSBib29sIHdlYWtDb21wYXJlQW5kU3dhcCh2b2lkKnZvbGF0aWxl
KiBsb2NhdGlvbiwgdm9pZCogZXhwZWN0ZWQsIHZvaWQqIG5ld1ZhbHVlKQotewotICAgIHJldHVy
biBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZVBvaW50ZXIobG9jYXRpb24sIG5ld1ZhbHVlLCBl
eHBlY3RlZCkgPT0gZXhwZWN0ZWQ7Ci19Ci0jZWxzZSAvLyBPUyhXSU5ET1dTKSAtLT4gbm90IHdp
bmRvd3MKLWlubGluZSBib29sIHdlYWtDb21wYXJlQW5kU3dhcCh2b2xhdGlsZSB1bnNpZ25lZCog
bG9jYXRpb24sIHVuc2lnbmVkIGV4cGVjdGVkLCB1bnNpZ25lZCBuZXdWYWx1ZSkgCi17Ci0jaWYg
RU5BQkxFKENPTVBBUkVfQU5EX1NXQVApCi0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKLSAg
ICB1bnNpZ25lZCBjaGFyIHJlc3VsdDsKLSAgICBhc20gdm9sYXRpbGUoCi0gICAgICAgICJsb2Nr
OyBjbXB4Y2hnbCAlMywgJTJcblx0IgotICAgICAgICAic2V0ZSAlMSIKLSAgICAgICAgOiAiK2Ei
KGV4cGVjdGVkKSwgIj1xIihyZXN1bHQpLCAiK20iKCpsb2NhdGlvbikKLSAgICAgICAgOiAiciIo
bmV3VmFsdWUpCi0gICAgICAgIDogIm1lbW9yeSIKLSAgICAgICAgKTsKLSNlbGlmIENQVShBUk1f
VEhVTUIyKQotICAgIHVuc2lnbmVkIHRtcDsKLSAgICB1bnNpZ25lZCByZXN1bHQ7Ci0gICAgYXNt
IHZvbGF0aWxlKAotICAgICAgICAibW92dyAlMSwgIzFcblx0IgotICAgICAgICAibGRyZXggJTIs
ICUwXG5cdCIKLSAgICAgICAgImNtcCAlMywgJTJcblx0IgotICAgICAgICAiYm5lLm4gMGZcblx0
IgotICAgICAgICAic3RyZXggJTEsICU0LCAlMFxuXHQiCi0gICAgICAgICIwOiIKLSAgICAgICAg
OiAiK1EiKCpsb2NhdGlvbiksICI9JnIiKHJlc3VsdCksICI9JnIiKHRtcCkKLSAgICAgICAgOiAi
ciIoZXhwZWN0ZWQpLCAiciIobmV3VmFsdWUpCi0gICAgICAgIDogIm1lbW9yeSIpOwotICAgIHJl
c3VsdCA9ICFyZXN1bHQ7Ci0jZWxpZiBDUFUoQVJNNjQpICYmIENPTVBJTEVSKEdDQ19PUl9DTEFO
RykKLSAgICB1bnNpZ25lZCB0bXA7Ci0gICAgdW5zaWduZWQgcmVzdWx0OwotICAgIGFzbSB2b2xh
dGlsZSgKLSAgICAgICAgIm1vdiAldzEsICMxXG5cdCIKLSAgICAgICAgImxkeHIgJXcyLCBbJTBd
XG5cdCIKLSAgICAgICAgImNtcCAldzMsICV3MlxuXHQiCi0gICAgICAgICJiLm5lIDBmXG5cdCIK
LSAgICAgICAgInN0eHIgJXcxLCAldzQsIFslMF1cblx0IgotICAgICAgICAiMDoiCi0gICAgICAg
IDogIityIihsb2NhdGlvbiksICI9JnIiKHJlc3VsdCksICI9JnIiKHRtcCkKLSAgICAgICAgOiAi
ciIoZXhwZWN0ZWQpLCAiciIobmV3VmFsdWUpCi0gICAgICAgIDogIm1lbW9yeSIpOwotICAgIHJl
c3VsdCA9ICFyZXN1bHQ7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgdW5zaWduZWQgdG1wOwotICAg
IHVuc2lnbmVkIHJlc3VsdDsKLSAgICBhc20gdm9sYXRpbGUoCi0gICAgICAgICJtb3YgJXcxLCAj
MVxuXHQiCi0gICAgICAgICJsZHhyICV3MiwgJTBcblx0IgotICAgICAgICAiY21wICV3MywgJXcy
XG5cdCIKLSAgICAgICAgImIubmUgMGZcblx0IgotICAgICAgICAic3R4ciAldzEsICV3NCwgJTBc
blx0IgotICAgICAgICAiMDoiCi0gICAgICAgIDogIittIigqbG9jYXRpb24pLCAiPSZyIihyZXN1
bHQpLCAiPSZyIih0bXApCi0gICAgICAgIDogInIiKGV4cGVjdGVkKSwgInIiKG5ld1ZhbHVlKQot
ICAgICAgICA6ICJtZW1vcnkiKTsKLSAgICByZXN1bHQgPSAhcmVzdWx0OwotI2Vsc2UKLSNlcnJv
ciAiQmFkIGFyY2hpdGVjdHVyZSBmb3IgY29tcGFyZSBhbmQgc3dhcC4iCi0jZW5kaWYKLSAgICBy
ZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVO
VVNFRF9QQVJBTShleHBlY3RlZCk7Ci0gICAgVU5VU0VEX1BBUkFNKG5ld1ZhbHVlKTsKLSAgICBD
UkFTSCgpOwotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotfQotCi1pbmxpbmUgYm9vbCB3ZWFr
Q29tcGFyZUFuZFN3YXAodm9pZCp2b2xhdGlsZSogbG9jYXRpb24sIHZvaWQqIGV4cGVjdGVkLCB2
b2lkKiBuZXdWYWx1ZSkKLXsKLSNpZiBFTkFCTEUoQ09NUEFSRV9BTkRfU1dBUCkKLSNpZiBDUFUo
WDg2XzY0KQotICAgIGJvb2wgcmVzdWx0OwotICAgIGFzbSB2b2xhdGlsZSgKLSAgICAgICAgImxv
Y2s7IGNtcHhjaGdxICUzLCAlMlxuXHQiCi0gICAgICAgICJzZXRlICUxIgotICAgICAgICA6ICIr
YSIoZXhwZWN0ZWQpLCAiPXEiKHJlc3VsdCksICIrbSIoKmxvY2F0aW9uKQotICAgICAgICA6ICJy
IihuZXdWYWx1ZSkKLSAgICAgICAgOiAibWVtb3J5IgotICAgICAgICApOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci0jZWxpZiBDUFUoQVJNNjQpICYmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKLSAgICBi
b29sIHJlc3VsdDsKLSAgICB2b2lkKiB0bXA7Ci0gICAgYXNtIHZvbGF0aWxlKAotICAgICAgICAi
bW92ICV3MSwgIzFcblx0IgotICAgICAgICAibGR4ciAleDIsIFslMF1cblx0IgotICAgICAgICAi
Y21wICV4MywgJXgyXG5cdCIKLSAgICAgICAgImIubmUgMGZcblx0IgotICAgICAgICAic3R4ciAl
dzEsICV4NCwgWyUwXVxuXHQiCi0gICAgICAgICIwOiIKLSAgICAgICAgOiAiK3IiKGxvY2F0aW9u
KSwgIj0mciIocmVzdWx0KSwgIj0mciIodG1wKQotICAgICAgICA6ICJyIihleHBlY3RlZCksICJy
IihuZXdWYWx1ZSkKLSAgICAgICAgOiAibWVtb3J5Iik7Ci0gICAgcmV0dXJuICFyZXN1bHQ7Ci0j
ZWxpZiBDUFUoQVJNNjQpCi0gICAgYm9vbCByZXN1bHQ7Ci0gICAgdm9pZCogdG1wOwotICAgIGFz
bSB2b2xhdGlsZSgKLSAgICAgICAgIm1vdiAldzEsICMxXG5cdCIKLSAgICAgICAgImxkeHIgJXgy
LCAlMFxuXHQiCi0gICAgICAgICJjbXAgJXgzLCAleDJcblx0IgotICAgICAgICAiYi5uZSAwZlxu
XHQiCi0gICAgICAgICJzdHhyICV3MSwgJXg0LCAlMFxuXHQiCi0gICAgICAgICIwOiIKLSAgICAg
ICAgOiAiK20iKCpsb2NhdGlvbiksICI9JnIiKHJlc3VsdCksICI9JnIiKHRtcCkKLSAgICAgICAg
OiAiciIoZXhwZWN0ZWQpLCAiciIobmV3VmFsdWUpCi0gICAgICAgIDogIm1lbW9yeSIpOwotICAg
IHJldHVybiAhcmVzdWx0OwotI2Vsc2UKLSAgICByZXR1cm4gd2Vha0NvbXBhcmVBbmRTd2FwKGJp
dHdpc2VfY2FzdDx1bnNpZ25lZCo+KGxvY2F0aW9uKSwgYml0d2lzZV9jYXN0PHVuc2lnbmVkPihl
eHBlY3RlZCksIGJpdHdpc2VfY2FzdDx1bnNpZ25lZD4obmV3VmFsdWUpKTsKLSNlbmRpZgotI2Vs
c2UgLy8gRU5BQkxFKENPTVBBUkVfQU5EX1NXQVApCi0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9u
KTsKLSAgICBVTlVTRURfUEFSQU0oZXhwZWN0ZWQpOwotICAgIFVOVVNFRF9QQVJBTShuZXdWYWx1
ZSk7Ci0gICAgQ1JBU0goKTsKLSAgICByZXR1cm4gMDsKLSNlbmRpZiAvLyBFTkFCTEUoQ09NUEFS
RV9BTkRfU1dBUCkKLX0KLSNlbmRpZiAvLyBPUyhXSU5ET1dTKSAoZW5kIG9mIHRoZSBub3Qtd2lu
ZG93cyBjYXNlKQotCi1pbmxpbmUgYm9vbCB3ZWFrQ29tcGFyZUFuZFN3YXBVSW50UHRyKHZvbGF0
aWxlIHVpbnRwdHJfdCogbG9jYXRpb24sIHVpbnRwdHJfdCBleHBlY3RlZCwgdWludHB0cl90IG5l
d1ZhbHVlKQotewotICAgIHJldHVybiB3ZWFrQ29tcGFyZUFuZFN3YXAocmVpbnRlcnByZXRfY2Fz
dDx2b2lkKnZvbGF0aWxlKj4obG9jYXRpb24pLCByZWludGVycHJldF9jYXN0PHZvaWQqPihleHBl
Y3RlZCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG5ld1ZhbHVlKSk7Ci19Ci0KLWlubGluZSBi
b29sIHdlYWtDb21wYXJlQW5kU3dhcFNpemUodm9sYXRpbGUgc2l6ZV90KiBsb2NhdGlvbiwgc2l6
ZV90IGV4cGVjdGVkLCBzaXplX3QgbmV3VmFsdWUpCisvLyBUaGlzIGlzIGEgd2VhayBDQVMgZnVu
Y3Rpb24gdGhhdCB0YWtlcyBhIGRpcmVjdCBwb2ludGVyIGFuZCBoYXMgbm8gcG9ydGFibGUgZmVu
Y2luZyBndWFyYW50ZWVzLgordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSBib29sIHdlYWtD
b21wYXJlQW5kU3dhcCh2b2xhdGlsZSBUKiBsb2NhdGlvbiwgVCBleHBlY3RlZCwgVCBuZXdWYWx1
ZSkKIHsKLSAgICByZXR1cm4gd2Vha0NvbXBhcmVBbmRTd2FwKHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCp2b2xhdGlsZSo+KGxvY2F0aW9uKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZXhwZWN0ZWQp
LCByZWludGVycHJldF9jYXN0PHZvaWQqPihuZXdWYWx1ZSkpOworICAgIHJldHVybiBiaXR3aXNl
X2Nhc3Q8QXRvbWljPFQ+Kj4obG9jYXRpb24pLT5jb21wYXJlRXhjaGFuZ2VXZWFrKGV4cGVjdGVk
LCBuZXdWYWx1ZSwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CiB9CiAKIC8vIEp1c3QgYSBj
b21waWxlciBmZW5jZS4gSGFzIG5vIGVmZmVjdCBvbiB0aGUgaGFyZHdhcmUsIGJ1dCB0ZWxscyB0
aGUgY29tcGlsZXIKQEAgLTMyMiw2OSArMTg3LDYgQEAgaW5saW5lIHZvaWQgbWVtb3J5QmFycmll
ckJlZm9yZVVubG9jaygpIAogCiAjZW5kaWYKIAotaW5saW5lIGJvb2wgd2Vha0NvbXBhcmVBbmRT
d2FwKHVpbnQ4X3QqIGxvY2F0aW9uLCB1aW50OF90IGV4cGVjdGVkLCB1aW50OF90IG5ld1ZhbHVl
KQotewotI2lmIEVOQUJMRShDT01QQVJFX0FORF9TV0FQKQotI2lmICFPUyhXSU5ET1dTKSAmJiAo
Q1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkpCi0gICAgdW5zaWduZWQgY2hhciByZXN1bHQ7Ci0gICAg
YXNtIHZvbGF0aWxlKAotICAgICAgICAibG9jazsgY21weGNoZ2IgJTMsICUyXG5cdCIKLSAgICAg
ICAgInNldGUgJTEiCi0gICAgICAgIDogIithIihleHBlY3RlZCksICI9cSIocmVzdWx0KSwgIitt
IigqbG9jYXRpb24pCi0gICAgICAgIDogInEiKG5ld1ZhbHVlKQotICAgICAgICA6ICJtZW1vcnki
Ci0gICAgICAgICk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbGlmIE9TKFdJTkRPV1MpICYmIENQ
VShYODYpCi0gICAgLy8gRklYTUU6IFdlIG5lZWQgYSA2NC1iaXQgQVNNIGltcGxlbWVudGF0aW9u
LCBidXQgdGhpcyBjYW5ub3QgYmUgaW5saW5lIGR1ZSB0bwotICAgIC8vIE1pY3Jvc29mdCdzIGRl
Y2lzaW9uIHRvIGV4Y2x1ZGUgaXQgZnJvbSB0aGUgY29tcGlsZXIuCi0gICAgYm9vbCByZXN1bHQg
PSBmYWxzZTsKLQotICAgIF9fYXNtIHsKLSAgICAgICAgbW92IGFsLCBleHBlY3RlZAotICAgICAg
ICBtb3YgZWR4LCBsb2NhdGlvbgotICAgICAgICBtb3YgY2wsIG5ld1ZhbHVlCi0gICAgICAgIGxv
Y2sgY21weGNoZyBieXRlIHB0cltlZHhdLCBjbAotICAgICAgICBzZXR6IHJlc3VsdAotICAgIH0K
LQotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIHVpbnRwdHJfdCBsb2NhdGlvblZhbHVl
ID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4obG9jYXRpb24pOwotICAgIHVpbnRwdHJfdCBhbGln
bmVkTG9jYXRpb25WYWx1ZSA9IGxvY2F0aW9uVmFsdWUgJiB+KHNpemVvZih1bnNpZ25lZCkgLSAx
KTsKLSAgICB1aW50cHRyX3QgbG9jYXRpb25PZmZzZXQgPSBsb2NhdGlvblZhbHVlIC0gYWxpZ25l
ZExvY2F0aW9uVmFsdWU7Ci0gICAgQVNTRVJUKGxvY2F0aW9uT2Zmc2V0IDwgc2l6ZW9mKHVuc2ln
bmVkKSk7Ci0gICAgdW5zaWduZWQqIGFsaWduZWRMb2NhdGlvbiA9IGJpdHdpc2VfY2FzdDx1bnNp
Z25lZCo+KGFsaWduZWRMb2NhdGlvblZhbHVlKTsKLSAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGlz
IGxvYWQgaXMgYWx3YXlzIGlzc3VlZCBhbmQgbmV2ZXIgb3B0aW1pemVkIGF3YXkuCi0gICAgdW5z
aWduZWQgb2xkQWxpZ25lZFZhbHVlID0gKmNvbnN0X2Nhc3Q8dm9sYXRpbGUgdW5zaWduZWQqPihh
bGlnbmVkTG9jYXRpb24pOwotCi0gICAgc3RydWN0IFNwbGljZXIgewotICAgICAgICBzdGF0aWMg
dW5zaWduZWQgc3BsaWNlKHVuc2lnbmVkIHZhbHVlLCB1aW50OF90IGJ5dGUsIHVpbnRwdHJfdCBi
eXRlSW5kZXgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHVuaW9uIHsKLSAgICAgICAgICAgICAg
ICB1bnNpZ25lZCB3b3JkOwotICAgICAgICAgICAgICAgIHVpbnQ4X3QgYnl0ZXNbc2l6ZW9mKHVu
c2lnbmVkKV07Ci0gICAgICAgICAgICB9IHU7Ci0gICAgICAgICAgICB1LndvcmQgPSB2YWx1ZTsK
LSAgICAgICAgICAgIHUuYnl0ZXNbYnl0ZUluZGV4XSA9IGJ5dGU7Ci0gICAgICAgICAgICByZXR1
cm4gdS53b3JkOwotICAgICAgICB9Ci0gICAgfTsKLSAgICAKLSAgICB1bnNpZ25lZCBleHBlY3Rl
ZEFsaWduZWRWYWx1ZSA9IFNwbGljZXI6OnNwbGljZShvbGRBbGlnbmVkVmFsdWUsIGV4cGVjdGVk
LCBsb2NhdGlvbk9mZnNldCk7Ci0gICAgdW5zaWduZWQgbmV3QWxpZ25lZFZhbHVlID0gU3BsaWNl
cjo6c3BsaWNlKG9sZEFsaWduZWRWYWx1ZSwgbmV3VmFsdWUsIGxvY2F0aW9uT2Zmc2V0KTsKLQot
ICAgIHJldHVybiB3ZWFrQ29tcGFyZUFuZFN3YXAoYWxpZ25lZExvY2F0aW9uLCBleHBlY3RlZEFs
aWduZWRWYWx1ZSwgbmV3QWxpZ25lZFZhbHVlKTsKLSNlbmRpZgotI2Vsc2UKLSAgICBVTlVTRURf
UEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShleHBlY3RlZCk7Ci0gICAgVU5VU0VE
X1BBUkFNKG5ld1ZhbHVlKTsKLSAgICBDUkFTSCgpOwotICAgIHJldHVybiBmYWxzZTsKLSNlbmRp
ZgotfQotCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpBdG9taWM7CkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9CaXRtYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9CaXRt
YXAuaAkocmV2aXNpb24gMTkwMDc3KQorKysgU291cmNlL1dURi93dGYvQml0bWFwLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEyNCw3ICsxMjQsNyBAQCBpbmxpbmUgYm9vbCBCaXRtYXA8c2l6ZSwgYXRv
bWljTW9kZSwgV29yCiAgICAgICAgIG9sZFZhbHVlID0gKndvcmRQdHI7CiAgICAgICAgIGlmIChv
bGRWYWx1ZSAmIG1hc2spCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9IHdoaWxlICgh
d2Vha0NvbXBhcmVBbmRTd2FwKHdvcmRQdHIsIG9sZFZhbHVlLCBvbGRWYWx1ZSB8IG1hc2spKTsK
KyAgICB9IHdoaWxlICghd2Vha0NvbXBhcmVBbmRTd2FwKHdvcmRQdHIsIG9sZFZhbHVlLCBzdGF0
aWNfY2FzdDxXb3JkVHlwZT4ob2xkVmFsdWUgfCBtYXNrKSkpOwogICAgIHJldHVybiBmYWxzZTsK
IH0KIApAQCAtMTQ0LDcgKzE0NCw3IEBAIGlubGluZSBib29sIEJpdG1hcDxzaXplLCBhdG9taWNN
b2RlLCBXb3IKICAgICAgICAgb2xkVmFsdWUgPSAqd29yZFB0cjsKICAgICAgICAgaWYgKCEob2xk
VmFsdWUgJiBtYXNrKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9IHdoaWxlICgh
d2Vha0NvbXBhcmVBbmRTd2FwKHdvcmRQdHIsIG9sZFZhbHVlLCBvbGRWYWx1ZSAmIH5tYXNrKSk7
CisgICAgfSB3aGlsZSAoIXdlYWtDb21wYXJlQW5kU3dhcCh3b3JkUHRyLCBvbGRWYWx1ZSwgc3Rh
dGljX2Nhc3Q8V29yZFR5cGU+KG9sZFZhbHVlICYgfm1hc2spKSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMTkwMDc3KQorKysgU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtOTc1LDExICs5NzUsNyBAQAogI2RlZmlu
ZSBVU0VfSU1MQU5HX0ZPTlRfTElOSzIgMQogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChFTkFCTEVf
Q09NUEFSRV9BTkRfU1dBUCkgJiYgKE9TKFdJTkRPV1MpIHx8IChDT01QSUxFUihHQ0NfT1JfQ0xB
TkcpICYmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNX1RIVU1CMikgfHwgQ1BV
KEFSTTY0KSkpKQotI2RlZmluZSBFTkFCTEVfQ09NUEFSRV9BTkRfU1dBUCAxCi0jZW5kaWYKLQot
I2lmICFkZWZpbmVkKEVOQUJMRV9QQVJBTExFTF9HQykgJiYgKE9TKERBUldJTikgfHwgUExBVEZP
Uk0oRUZMKSB8fCBQTEFURk9STShHVEspKSAmJiBFTkFCTEUoQ09NUEFSRV9BTkRfU1dBUCkKKyNp
ZiAhZGVmaW5lZChFTkFCTEVfUEFSQUxMRUxfR0MpICYmIChPUyhEQVJXSU4pIHx8IFBMQVRGT1JN
KEVGTCkgfHwgUExBVEZPUk0oR1RLKSkKICNkZWZpbmUgRU5BQkxFX1BBUkFMTEVMX0dDIDEKICNl
bmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTAwOTUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxNS0wOS0yMSAg
RmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEFsd2F5cyB1c2UgdGhl
IGNvbXBpbGVyJ3MgQ0FTIGltcGxlbWVudGF0aW9uIGFuZCBnZXQgcmlkIG9mIEVOQUJMRShDT01Q
QVJFX0FORF9TV0FQKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQ5NDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2Ugbm8gbmV3IGJlaGF2aW9yLgorCisgICAgICAgICog
cGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
b21wYXJlQW5kU3dhcE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6Tm9uU2hhcmVkQ2hhcmFj
dGVyQnJlYWtJdGVyYXRvcik6CisKIDIwMTUtMDktMjEgIEd3YW5nIFlvb24gSHdhbmcgIDx5b29u
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1RocmVhZGVkIENvbXBvc2l0b3JdIE1vZGlmaWVkIHRv
IHVzZSByZWZlcmVuY2Ugb2YgR3JhcGhpY3NDb250ZXh0IGluc3RlYWQgb2YgcG9pbnRlcgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRv
ci5jcHAJKHJldmlzaW9uIDE5MDA3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
VGV4dEJyZWFrSXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MTIsMTYgKzgxMiw3IEBA
IHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogbm9uU2hhcmVkQ2hhcmEKIAogc3RhdGljIGlubGlu
ZSBib29sIGNvbXBhcmVBbmRTd2FwTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihUZXh0
QnJlYWtJdGVyYXRvciogZXhwZWN0ZWQsIFRleHRCcmVha0l0ZXJhdG9yKiBuZXdWYWx1ZSkKIHsK
LSNpZiBFTkFCTEUoQ09NUEFSRV9BTkRfU1dBUCkKICAgICByZXR1cm4gV1RGOjp3ZWFrQ29tcGFy
ZUFuZFN3YXAocmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZub25TaGFyZWRDaGFyYWN0ZXJCcmVh
a0l0ZXJhdG9yKSwgZXhwZWN0ZWQsIG5ld1ZhbHVlKTsKLSNlbHNlCi0gICAgc3RhdGljIFN0YXRp
Y0xvY2sgbm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvck11dGV4OwotICAgIHN0ZDo6bG9j
a19ndWFyZDxTdGF0aWNMb2NrPiBsb2NrZXIobm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRv
ck11dGV4KTsKLSAgICBpZiAobm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciAhPSBleHBl
Y3RlZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG5vblNoYXJlZENoYXJhY3RlckJyZWFr
SXRlcmF0b3IgPSBuZXdWYWx1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgogfQogCiBOb25T
aGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOjpOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJh
dG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261712</attachid>
            <date>2015-09-21 18:29:51 -0700</date>
            <delta_ts>2015-09-21 21:01:27 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>13531</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwMDk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBA
CisyMDE1LTA5LTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QWx3YXlzIHVzZSB0aGUgY29tcGlsZXIncyBDQVMgaW1wbGVtZW50YXRpb24gYW5kIGdldCByaWQg
b2YgRU5BQkxFKENPTVBBUkVfQU5EX1NXQVApCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk0MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
SGVhcDo6cmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGVw
cmVjYXRlZFJlcG9ydEV4dHJhTWVtb3J5KToKKwogMjAxNS0wOS0yMSAgQ29tbWl0IFF1ZXVlICA8
Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjE5MDA4Ni4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ29tcGFy
ZUFuZFN3YXBUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L3Rlc3RzL0NvbXBhcmVBbmRTd2FwVGVzdC5jcHAJKHJldmlzaW9uIDE5MDA3NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ29tcGFyZUFuZFN3YXBUZXN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBpbmxpbmUgYm9vbCBCaXRtYXA6OmNvbmN1cnJlbnRU
ZXN0QW5kU2V0CiAgICAgICAgIG9sZFZhbHVlID0gKndvcmRQdHI7CiAgICAgICAgIGlmIChvbGRW
YWx1ZSAmIG1hc2spCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9IHdoaWxlICghV1RG
Ojp3ZWFrQ29tcGFyZUFuZFN3YXAod29yZFB0ciwgb2xkVmFsdWUsIG9sZFZhbHVlIHwgbWFzaykp
OworICAgIH0gd2hpbGUgKCFXVEY6OndlYWtDb21wYXJlQW5kU3dhcCh3b3JkUHRyLCBvbGRWYWx1
ZSwgc3RhdGljX2Nhc3Q8dWludDhfdD4ob2xkVmFsdWUgfCBtYXNrKSkpOwogICAgIHJldHVybiBm
YWxzZTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5o
CShyZXZpc2lvbiAxOTAwNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5s
aW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsMTUgKzE3MSwxMSBAQCBpbmxpbmUgdm9pZCBI
ZWFwOjpyZXBvcnRFeHRyYU1lbW9yeVZpc2l0CiAKICAgICBzaXplX3QqIGNvdW50ZXIgPSAmbV9l
eHRyYU1lbW9yeVNpemU7CiAgICAgCi0jaWYgRU5BQkxFKENPTVBBUkVfQU5EX1NXQVApCiAgICAg
Zm9yICg7OykgewogICAgICAgICBzaXplX3Qgb2xkU2l6ZSA9ICpjb3VudGVyOwotICAgICAgICBp
ZiAoV1RGOjp3ZWFrQ29tcGFyZUFuZFN3YXBTaXplKGNvdW50ZXIsIG9sZFNpemUsIG9sZFNpemUg
KyBzaXplKSkKKyAgICAgICAgaWYgKFdURjo6d2Vha0NvbXBhcmVBbmRTd2FwKGNvdW50ZXIsIG9s
ZFNpemUsIG9sZFNpemUgKyBzaXplKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9Ci0jZWxz
ZQotICAgICgqY291bnRlcikgKz0gc2l6ZTsKLSNlbmRpZgogfQogCiBpbmxpbmUgdm9pZCBIZWFw
OjpkZXByZWNhdGVkUmVwb3J0RXh0cmFNZW1vcnkoc2l6ZV90IHNpemUpCkluZGV4OiBTb3VyY2Uv
V1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNp
b24gMTkwMDk1KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxOCBAQAorMjAxNS0wOS0yMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgor
CisgICAgICAgIEFsd2F5cyB1c2UgdGhlIGNvbXBpbGVyJ3MgQ0FTIGltcGxlbWVudGF0aW9uIGFu
ZCBnZXQgcmlkIG9mIEVOQUJMRShDT01QQVJFX0FORF9TV0FQKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NDM4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvQXRvbWljcy5oOiBNYWtlIHdlYWtD
b21wYXJlQW5kU3dhcCgpIGp1c3QgZm9yd2FyZCB0byB0aGUgc3lzdGVtIENBUyB2aWEgV1RGOjpB
dG9taWMuCisgICAgICAgIChXVEY6OndlYWtDb21wYXJlQW5kU3dhcCk6CisgICAgICAgIChXVEY6
OndlYWtDb21wYXJlQW5kU3dhcFVJbnRQdHIpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjp3ZWFr
Q29tcGFyZUFuZFN3YXBTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvQml0bWFwLmg6IFNt
YWxsIGNoYW5nZXMgdG8gdXNlIHRoZSBuZXcgQVBJLgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46
OmNvbmN1cnJlbnRUZXN0QW5kU2V0KToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDogUmVtb3Zl
IEVOQUJMRShDT01QQVJFX0FORF9TV0FQKQorCiAyMDE1LTA5LTIxICBDc2FiYSBPc3p0cm9nb27D
oWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIG9sZCBHQ0MgY3J1ZnQgZnJv
bSB3dGYvU3RkTGliRXh0cmFzLmgKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0F0b21pY3MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmgJKHJldmlzaW9uIDE5MDA3NykKKysr
IFNvdXJjZS9XVEYvd3RmL0F0b21pY3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDE0NiArMTEz
LDExIEBAIHN0cnVjdCBBdG9taWMgewogICAgIHN0ZDo6YXRvbWljPFQ+IHZhbHVlOwogfTsKIAot
I2lmIE9TKFdJTkRPV1MpCi1pbmxpbmUgYm9vbCB3ZWFrQ29tcGFyZUFuZFN3YXAodm9sYXRpbGUg
dW5zaWduZWQqIGxvY2F0aW9uLCB1bnNpZ25lZCBleHBlY3RlZCwgdW5zaWduZWQgbmV3VmFsdWUp
Ci17Ci0gICAgcmV0dXJuIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKHJlaW50ZXJwcmV0X2Nh
c3Q8TE9ORyB2b2xhdGlsZSo+KGxvY2F0aW9uKSwgc3RhdGljX2Nhc3Q8TE9ORz4obmV3VmFsdWUp
LCBzdGF0aWNfY2FzdDxMT05HPihleHBlY3RlZCkpID09IHN0YXRpY19jYXN0PExPTkc+KGV4cGVj
dGVkKTsKLX0KLQotaW5saW5lIGJvb2wgd2Vha0NvbXBhcmVBbmRTd2FwKHZvaWQqdm9sYXRpbGUq
IGxvY2F0aW9uLCB2b2lkKiBleHBlY3RlZCwgdm9pZCogbmV3VmFsdWUpCi17Ci0gICAgcmV0dXJu
IEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlUG9pbnRlcihsb2NhdGlvbiwgbmV3VmFsdWUsIGV4
cGVjdGVkKSA9PSBleHBlY3RlZDsKLX0KLSNlbHNlIC8vIE9TKFdJTkRPV1MpIC0tPiBub3Qgd2lu
ZG93cwotaW5saW5lIGJvb2wgd2Vha0NvbXBhcmVBbmRTd2FwKHZvbGF0aWxlIHVuc2lnbmVkKiBs
b2NhdGlvbiwgdW5zaWduZWQgZXhwZWN0ZWQsIHVuc2lnbmVkIG5ld1ZhbHVlKSAKLXsKLSNpZiBF
TkFCTEUoQ09NUEFSRV9BTkRfU1dBUCkKLSNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQotICAg
IHVuc2lnbmVkIGNoYXIgcmVzdWx0OwotICAgIGFzbSB2b2xhdGlsZSgKLSAgICAgICAgImxvY2s7
IGNtcHhjaGdsICUzLCAlMlxuXHQiCi0gICAgICAgICJzZXRlICUxIgotICAgICAgICA6ICIrYSIo
ZXhwZWN0ZWQpLCAiPXEiKHJlc3VsdCksICIrbSIoKmxvY2F0aW9uKQotICAgICAgICA6ICJyIihu
ZXdWYWx1ZSkKLSAgICAgICAgOiAibWVtb3J5IgotICAgICAgICApOwotI2VsaWYgQ1BVKEFSTV9U
SFVNQjIpCi0gICAgdW5zaWduZWQgdG1wOwotICAgIHVuc2lnbmVkIHJlc3VsdDsKLSAgICBhc20g
dm9sYXRpbGUoCi0gICAgICAgICJtb3Z3ICUxLCAjMVxuXHQiCi0gICAgICAgICJsZHJleCAlMiwg
JTBcblx0IgotICAgICAgICAiY21wICUzLCAlMlxuXHQiCi0gICAgICAgICJibmUubiAwZlxuXHQi
Ci0gICAgICAgICJzdHJleCAlMSwgJTQsICUwXG5cdCIKLSAgICAgICAgIjA6IgotICAgICAgICA6
ICIrUSIoKmxvY2F0aW9uKSwgIj0mciIocmVzdWx0KSwgIj0mciIodG1wKQotICAgICAgICA6ICJy
IihleHBlY3RlZCksICJyIihuZXdWYWx1ZSkKLSAgICAgICAgOiAibWVtb3J5Iik7Ci0gICAgcmVz
dWx0ID0gIXJlc3VsdDsKLSNlbGlmIENQVShBUk02NCkgJiYgQ09NUElMRVIoR0NDX09SX0NMQU5H
KQotICAgIHVuc2lnbmVkIHRtcDsKLSAgICB1bnNpZ25lZCByZXN1bHQ7Ci0gICAgYXNtIHZvbGF0
aWxlKAotICAgICAgICAibW92ICV3MSwgIzFcblx0IgotICAgICAgICAibGR4ciAldzIsIFslMF1c
blx0IgotICAgICAgICAiY21wICV3MywgJXcyXG5cdCIKLSAgICAgICAgImIubmUgMGZcblx0Igot
ICAgICAgICAic3R4ciAldzEsICV3NCwgWyUwXVxuXHQiCi0gICAgICAgICIwOiIKLSAgICAgICAg
OiAiK3IiKGxvY2F0aW9uKSwgIj0mciIocmVzdWx0KSwgIj0mciIodG1wKQotICAgICAgICA6ICJy
IihleHBlY3RlZCksICJyIihuZXdWYWx1ZSkKLSAgICAgICAgOiAibWVtb3J5Iik7Ci0gICAgcmVz
dWx0ID0gIXJlc3VsdDsKLSNlbGlmIENQVShBUk02NCkKLSAgICB1bnNpZ25lZCB0bXA7Ci0gICAg
dW5zaWduZWQgcmVzdWx0OwotICAgIGFzbSB2b2xhdGlsZSgKLSAgICAgICAgIm1vdiAldzEsICMx
XG5cdCIKLSAgICAgICAgImxkeHIgJXcyLCAlMFxuXHQiCi0gICAgICAgICJjbXAgJXczLCAldzJc
blx0IgotICAgICAgICAiYi5uZSAwZlxuXHQiCi0gICAgICAgICJzdHhyICV3MSwgJXc0LCAlMFxu
XHQiCi0gICAgICAgICIwOiIKLSAgICAgICAgOiAiK20iKCpsb2NhdGlvbiksICI9JnIiKHJlc3Vs
dCksICI9JnIiKHRtcCkKLSAgICAgICAgOiAiciIoZXhwZWN0ZWQpLCAiciIobmV3VmFsdWUpCi0g
ICAgICAgIDogIm1lbW9yeSIpOwotICAgIHJlc3VsdCA9ICFyZXN1bHQ7Ci0jZWxzZQotI2Vycm9y
ICJCYWQgYXJjaGl0ZWN0dXJlIGZvciBjb21wYXJlIGFuZCBzd2FwLiIKLSNlbmRpZgotICAgIHJl
dHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5V
U0VEX1BBUkFNKGV4cGVjdGVkKTsKLSAgICBVTlVTRURfUEFSQU0obmV3VmFsdWUpOwotICAgIENS
QVNIKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLWlubGluZSBib29sIHdlYWtD
b21wYXJlQW5kU3dhcCh2b2lkKnZvbGF0aWxlKiBsb2NhdGlvbiwgdm9pZCogZXhwZWN0ZWQsIHZv
aWQqIG5ld1ZhbHVlKQotewotI2lmIEVOQUJMRShDT01QQVJFX0FORF9TV0FQKQotI2lmIENQVShY
ODZfNjQpCi0gICAgYm9vbCByZXN1bHQ7Ci0gICAgYXNtIHZvbGF0aWxlKAotICAgICAgICAibG9j
azsgY21weGNoZ3EgJTMsICUyXG5cdCIKLSAgICAgICAgInNldGUgJTEiCi0gICAgICAgIDogIith
IihleHBlY3RlZCksICI9cSIocmVzdWx0KSwgIittIigqbG9jYXRpb24pCi0gICAgICAgIDogInIi
KG5ld1ZhbHVlKQotICAgICAgICA6ICJtZW1vcnkiCi0gICAgICAgICk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLSNlbGlmIENQVShBUk02NCkgJiYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQotICAgIGJv
b2wgcmVzdWx0OwotICAgIHZvaWQqIHRtcDsKLSAgICBhc20gdm9sYXRpbGUoCi0gICAgICAgICJt
b3YgJXcxLCAjMVxuXHQiCi0gICAgICAgICJsZHhyICV4MiwgWyUwXVxuXHQiCi0gICAgICAgICJj
bXAgJXgzLCAleDJcblx0IgotICAgICAgICAiYi5uZSAwZlxuXHQiCi0gICAgICAgICJzdHhyICV3
MSwgJXg0LCBbJTBdXG5cdCIKLSAgICAgICAgIjA6IgotICAgICAgICA6ICIrciIobG9jYXRpb24p
LCAiPSZyIihyZXN1bHQpLCAiPSZyIih0bXApCi0gICAgICAgIDogInIiKGV4cGVjdGVkKSwgInIi
KG5ld1ZhbHVlKQotICAgICAgICA6ICJtZW1vcnkiKTsKLSAgICByZXR1cm4gIXJlc3VsdDsKLSNl
bGlmIENQVShBUk02NCkKLSAgICBib29sIHJlc3VsdDsKLSAgICB2b2lkKiB0bXA7Ci0gICAgYXNt
IHZvbGF0aWxlKAotICAgICAgICAibW92ICV3MSwgIzFcblx0IgotICAgICAgICAibGR4ciAleDIs
ICUwXG5cdCIKLSAgICAgICAgImNtcCAleDMsICV4MlxuXHQiCi0gICAgICAgICJiLm5lIDBmXG5c
dCIKLSAgICAgICAgInN0eHIgJXcxLCAleDQsICUwXG5cdCIKLSAgICAgICAgIjA6IgotICAgICAg
ICA6ICIrbSIoKmxvY2F0aW9uKSwgIj0mciIocmVzdWx0KSwgIj0mciIodG1wKQotICAgICAgICA6
ICJyIihleHBlY3RlZCksICJyIihuZXdWYWx1ZSkKLSAgICAgICAgOiAibWVtb3J5Iik7Ci0gICAg
cmV0dXJuICFyZXN1bHQ7Ci0jZWxzZQotICAgIHJldHVybiB3ZWFrQ29tcGFyZUFuZFN3YXAoYml0
d2lzZV9jYXN0PHVuc2lnbmVkKj4obG9jYXRpb24pLCBiaXR3aXNlX2Nhc3Q8dW5zaWduZWQ+KGV4
cGVjdGVkKSwgYml0d2lzZV9jYXN0PHVuc2lnbmVkPihuZXdWYWx1ZSkpOwotI2VuZGlmCi0jZWxz
ZSAvLyBFTkFCTEUoQ09NUEFSRV9BTkRfU1dBUCkKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24p
OwotICAgIFVOVVNFRF9QQVJBTShleHBlY3RlZCk7Ci0gICAgVU5VU0VEX1BBUkFNKG5ld1ZhbHVl
KTsKLSAgICBDUkFTSCgpOwotICAgIHJldHVybiAwOwotI2VuZGlmIC8vIEVOQUJMRShDT01QQVJF
X0FORF9TV0FQKQotfQotI2VuZGlmIC8vIE9TKFdJTkRPV1MpIChlbmQgb2YgdGhlIG5vdC13aW5k
b3dzIGNhc2UpCi0KLWlubGluZSBib29sIHdlYWtDb21wYXJlQW5kU3dhcFVJbnRQdHIodm9sYXRp
bGUgdWludHB0cl90KiBsb2NhdGlvbiwgdWludHB0cl90IGV4cGVjdGVkLCB1aW50cHRyX3QgbmV3
VmFsdWUpCi17Ci0gICAgcmV0dXJuIHdlYWtDb21wYXJlQW5kU3dhcChyZWludGVycHJldF9jYXN0
PHZvaWQqdm9sYXRpbGUqPihsb2NhdGlvbiksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGV4cGVj
dGVkKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obmV3VmFsdWUpKTsKLX0KLQotaW5saW5lIGJv
b2wgd2Vha0NvbXBhcmVBbmRTd2FwU2l6ZSh2b2xhdGlsZSBzaXplX3QqIGxvY2F0aW9uLCBzaXpl
X3QgZXhwZWN0ZWQsIHNpemVfdCBuZXdWYWx1ZSkKKy8vIFRoaXMgaXMgYSB3ZWFrIENBUyBmdW5j
dGlvbiB0aGF0IHRha2VzIGEgZGlyZWN0IHBvaW50ZXIgYW5kIGhhcyBubyBwb3J0YWJsZSBmZW5j
aW5nIGd1YXJhbnRlZXMuCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoraW5saW5lIGJvb2wgd2Vha0Nv
bXBhcmVBbmRTd2FwKHZvbGF0aWxlIFQqIGxvY2F0aW9uLCBUIGV4cGVjdGVkLCBUIG5ld1ZhbHVl
KQogewotICAgIHJldHVybiB3ZWFrQ29tcGFyZUFuZFN3YXAocmVpbnRlcnByZXRfY2FzdDx2b2lk
KnZvbGF0aWxlKj4obG9jYXRpb24pLCByZWludGVycHJldF9jYXN0PHZvaWQqPihleHBlY3RlZCks
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG5ld1ZhbHVlKSk7CisgICAgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxBdG9taWM8VD4qPihsb2NhdGlvbiktPmNvbXBhcmVFeGNoYW5nZVdlYWsoZXhwZWN0ZWQs
IG5ld1ZhbHVlLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKIH0KIAogLy8gSnVzdCBhIGNv
bXBpbGVyIGZlbmNlLiBIYXMgbm8gZWZmZWN0IG9uIHRoZSBoYXJkd2FyZSwgYnV0IHRlbGxzIHRo
ZSBjb21waWxlcgpAQCAtMzIyLDY5ICsxODcsNiBAQCBpbmxpbmUgdm9pZCBtZW1vcnlCYXJyaWVy
QmVmb3JlVW5sb2NrKCkgCiAKICNlbmRpZgogCi1pbmxpbmUgYm9vbCB3ZWFrQ29tcGFyZUFuZFN3
YXAodWludDhfdCogbG9jYXRpb24sIHVpbnQ4X3QgZXhwZWN0ZWQsIHVpbnQ4X3QgbmV3VmFsdWUp
Ci17Ci0jaWYgRU5BQkxFKENPTVBBUkVfQU5EX1NXQVApCi0jaWYgIU9TKFdJTkRPV1MpICYmIChD
UFUoWDg2KSB8fCBDUFUoWDg2XzY0KSkKLSAgICB1bnNpZ25lZCBjaGFyIHJlc3VsdDsKLSAgICBh
c20gdm9sYXRpbGUoCi0gICAgICAgICJsb2NrOyBjbXB4Y2hnYiAlMywgJTJcblx0IgotICAgICAg
ICAic2V0ZSAlMSIKLSAgICAgICAgOiAiK2EiKGV4cGVjdGVkKSwgIj1xIihyZXN1bHQpLCAiK20i
KCpsb2NhdGlvbikKLSAgICAgICAgOiAicSIobmV3VmFsdWUpCi0gICAgICAgIDogIm1lbW9yeSIK
LSAgICAgICAgKTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2VsaWYgT1MoV0lORE9XUykgJiYgQ1BV
KFg4NikKLSAgICAvLyBGSVhNRTogV2UgbmVlZCBhIDY0LWJpdCBBU00gaW1wbGVtZW50YXRpb24s
IGJ1dCB0aGlzIGNhbm5vdCBiZSBpbmxpbmUgZHVlIHRvCi0gICAgLy8gTWljcm9zb2Z0J3MgZGVj
aXNpb24gdG8gZXhjbHVkZSBpdCBmcm9tIHRoZSBjb21waWxlci4KLSAgICBib29sIHJlc3VsdCA9
IGZhbHNlOwotCi0gICAgX19hc20gewotICAgICAgICBtb3YgYWwsIGV4cGVjdGVkCi0gICAgICAg
IG1vdiBlZHgsIGxvY2F0aW9uCi0gICAgICAgIG1vdiBjbCwgbmV3VmFsdWUKLSAgICAgICAgbG9j
ayBjbXB4Y2hnIGJ5dGUgcHRyW2VkeF0sIGNsCi0gICAgICAgIHNldHogcmVzdWx0Ci0gICAgfQot
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgdWludHB0cl90IGxvY2F0aW9uVmFsdWUg
PSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihsb2NhdGlvbik7Ci0gICAgdWludHB0cl90IGFsaWdu
ZWRMb2NhdGlvblZhbHVlID0gbG9jYXRpb25WYWx1ZSAmIH4oc2l6ZW9mKHVuc2lnbmVkKSAtIDEp
OwotICAgIHVpbnRwdHJfdCBsb2NhdGlvbk9mZnNldCA9IGxvY2F0aW9uVmFsdWUgLSBhbGlnbmVk
TG9jYXRpb25WYWx1ZTsKLSAgICBBU1NFUlQobG9jYXRpb25PZmZzZXQgPCBzaXplb2YodW5zaWdu
ZWQpKTsKLSAgICB1bnNpZ25lZCogYWxpZ25lZExvY2F0aW9uID0gYml0d2lzZV9jYXN0PHVuc2ln
bmVkKj4oYWxpZ25lZExvY2F0aW9uVmFsdWUpOwotICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoaXMg
bG9hZCBpcyBhbHdheXMgaXNzdWVkIGFuZCBuZXZlciBvcHRpbWl6ZWQgYXdheS4KLSAgICB1bnNp
Z25lZCBvbGRBbGlnbmVkVmFsdWUgPSAqY29uc3RfY2FzdDx2b2xhdGlsZSB1bnNpZ25lZCo+KGFs
aWduZWRMb2NhdGlvbik7Ci0KLSAgICBzdHJ1Y3QgU3BsaWNlciB7Ci0gICAgICAgIHN0YXRpYyB1
bnNpZ25lZCBzcGxpY2UodW5zaWduZWQgdmFsdWUsIHVpbnQ4X3QgYnl0ZSwgdWludHB0cl90IGJ5
dGVJbmRleCkKLSAgICAgICAgewotICAgICAgICAgICAgdW5pb24gewotICAgICAgICAgICAgICAg
IHVuc2lnbmVkIHdvcmQ7Ci0gICAgICAgICAgICAgICAgdWludDhfdCBieXRlc1tzaXplb2YodW5z
aWduZWQpXTsKLSAgICAgICAgICAgIH0gdTsKLSAgICAgICAgICAgIHUud29yZCA9IHZhbHVlOwot
ICAgICAgICAgICAgdS5ieXRlc1tieXRlSW5kZXhdID0gYnl0ZTsKLSAgICAgICAgICAgIHJldHVy
biB1LndvcmQ7Ci0gICAgICAgIH0KLSAgICB9OwotICAgIAotICAgIHVuc2lnbmVkIGV4cGVjdGVk
QWxpZ25lZFZhbHVlID0gU3BsaWNlcjo6c3BsaWNlKG9sZEFsaWduZWRWYWx1ZSwgZXhwZWN0ZWQs
IGxvY2F0aW9uT2Zmc2V0KTsKLSAgICB1bnNpZ25lZCBuZXdBbGlnbmVkVmFsdWUgPSBTcGxpY2Vy
OjpzcGxpY2Uob2xkQWxpZ25lZFZhbHVlLCBuZXdWYWx1ZSwgbG9jYXRpb25PZmZzZXQpOwotCi0g
ICAgcmV0dXJuIHdlYWtDb21wYXJlQW5kU3dhcChhbGlnbmVkTG9jYXRpb24sIGV4cGVjdGVkQWxp
Z25lZFZhbHVlLCBuZXdBbGlnbmVkVmFsdWUpOwotI2VuZGlmCi0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGV4cGVjdGVkKTsKLSAgICBVTlVTRURf
UEFSQU0obmV3VmFsdWUpOwotICAgIENSQVNIKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlm
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OkF0b21pYzsKSW5kZXg6IFNv
dXJjZS9XVEYvd3RmL0JpdG1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0JpdG1h
cC5oCShyZXZpc2lvbiAxOTAwNzcpCisrKyBTb3VyY2UvV1RGL3d0Zi9CaXRtYXAuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBAIGlubGluZSBib29sIEJpdG1hcDxzaXplLCBhdG9t
aWNNb2RlLCBXb3IKICAgICAgICAgb2xkVmFsdWUgPSAqd29yZFB0cjsKICAgICAgICAgaWYgKG9s
ZFZhbHVlICYgbWFzaykKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0gd2hpbGUgKCF3
ZWFrQ29tcGFyZUFuZFN3YXAod29yZFB0ciwgb2xkVmFsdWUsIG9sZFZhbHVlIHwgbWFzaykpOwor
ICAgIH0gd2hpbGUgKCF3ZWFrQ29tcGFyZUFuZFN3YXAod29yZFB0ciwgb2xkVmFsdWUsIHN0YXRp
Y19jYXN0PFdvcmRUeXBlPihvbGRWYWx1ZSB8IG1hc2spKSk7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCkBAIC0xNDQsNyArMTQ0LDcgQEAgaW5saW5lIGJvb2wgQml0bWFwPHNpemUsIGF0b21pY01v
ZGUsIFdvcgogICAgICAgICBvbGRWYWx1ZSA9ICp3b3JkUHRyOwogICAgICAgICBpZiAoIShvbGRW
YWx1ZSAmIG1hc2spKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0gd2hpbGUgKCF3
ZWFrQ29tcGFyZUFuZFN3YXAod29yZFB0ciwgb2xkVmFsdWUsIG9sZFZhbHVlICYgfm1hc2spKTsK
KyAgICB9IHdoaWxlICghd2Vha0NvbXBhcmVBbmRTd2FwKHdvcmRQdHIsIG9sZFZhbHVlLCBzdGF0
aWNfY2FzdDxXb3JkVHlwZT4ob2xkVmFsdWUgJiB+bWFzaykpKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAxOTAwNzcpCisrKyBTb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NzUsMTEgKzk3NSw3IEBACiAjZGVmaW5l
IFVTRV9JTUxBTkdfRk9OVF9MSU5LMiAxCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEVOQUJMRV9D
T01QQVJFX0FORF9TV0FQKSAmJiAoT1MoV0lORE9XUykgfHwgKENPTVBJTEVSKEdDQ19PUl9DTEFO
RykgJiYgKENQVShYODYpIHx8IENQVShYODZfNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBDUFUo
QVJNNjQpKSkpCi0jZGVmaW5lIEVOQUJMRV9DT01QQVJFX0FORF9TV0FQIDEKLSNlbmRpZgotCi0j
aWYgIWRlZmluZWQoRU5BQkxFX1BBUkFMTEVMX0dDKSAmJiAoT1MoREFSV0lOKSB8fCBQTEFURk9S
TShFRkwpIHx8IFBMQVRGT1JNKEdUSykpICYmIEVOQUJMRShDT01QQVJFX0FORF9TV0FQKQorI2lm
ICFkZWZpbmVkKEVOQUJMRV9QQVJBTExFTF9HQykgJiYgKE9TKERBUldJTikgfHwgUExBVEZPUk0o
RUZMKSB8fCBQTEFURk9STShHVEspKQogI2RlZmluZSBFTkFCTEVfUEFSQUxMRUxfR0MgMQogI2Vu
ZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDA5NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE1LTA5LTIxICBG
aWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgQWx3YXlzIHVzZSB0aGUg
Y29tcGlsZXIncyBDQVMgaW1wbGVtZW50YXRpb24gYW5kIGdldCByaWQgb2YgRU5BQkxFKENPTVBB
UkVfQU5EX1NXQVApCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDk0MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSBubyBuZXcgYmVoYXZpb3IuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNv
bXBhcmVBbmRTd2FwTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcik6CisgICAgICAgIChX
ZWJDb3JlOjpOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOjpOb25TaGFyZWRDaGFyYWN0
ZXJCcmVha0l0ZXJhdG9yKToKKwogMjAxNS0wOS0yMSAgR3dhbmcgWW9vbiBId2FuZyAgPHlvb25A
aWdhbGlhLmNvbT4KIAogICAgICAgICBbVGhyZWFkZWQgQ29tcG9zaXRvcl0gTW9kaWZpZWQgdG8g
dXNlIHJlZmVyZW5jZSBvZiBHcmFwaGljc0NvbnRleHQgaW5zdGVhZCBvZiBwb2ludGVyCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9y
LmNwcAkocmV2aXNpb24gMTkwMDc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0QnJlYWtJdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxMiwxNiArODEyLDcgQEAg
c3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBub25TaGFyZWRDaGFyYQogCiBzdGF0aWMgaW5saW5l
IGJvb2wgY29tcGFyZUFuZFN3YXBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKFRleHRC
cmVha0l0ZXJhdG9yKiBleHBlY3RlZCwgVGV4dEJyZWFrSXRlcmF0b3IqIG5ld1ZhbHVlKQogewot
I2lmIEVOQUJMRShDT01QQVJFX0FORF9TV0FQKQogICAgIHJldHVybiBXVEY6OndlYWtDb21wYXJl
QW5kU3dhcChyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJm5vblNoYXJlZENoYXJhY3RlckJyZWFr
SXRlcmF0b3IpLCBleHBlY3RlZCwgbmV3VmFsdWUpOwotI2Vsc2UKLSAgICBzdGF0aWMgU3RhdGlj
TG9jayBub25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yTXV0ZXg7Ci0gICAgc3RkOjpsb2Nr
X2d1YXJkPFN0YXRpY0xvY2s+IGxvY2tlcihub25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9y
TXV0ZXgpOwotICAgIGlmIChub25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yICE9IGV4cGVj
dGVkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJ
dGVyYXRvciA9IG5ld1ZhbHVlOwotICAgIHJldHVybiB0cnVlOwotI2VuZGlmCiB9CiAKIE5vblNo
YXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0
b3IoU3RyaW5nVmlldyBzdHJpbmcpCg==
</data>
<flag name="review"
          id="286904"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261719</attachid>
            <date>2015-09-21 21:01:27 -0700</date>
            <delta_ts>2015-09-21 21:01:27 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>13604</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwMDk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBA
CisyMDE1LTA5LTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QWx3YXlzIHVzZSB0aGUgY29tcGlsZXIncyBDQVMgaW1wbGVtZW50YXRpb24gYW5kIGdldCByaWQg
b2YgRU5BQkxFKENPTVBBUkVfQU5EX1NXQVApCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk0MzgKKworICAgICAgICBSZXZpZXdlZCBieSBNYXJrIExh
bS4KKworICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6
cmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGVwcmVjYXRl
ZFJlcG9ydEV4dHJhTWVtb3J5KToKKwogMjAxNS0wOS0yMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0
LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE5
MDA4Ni4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ29tcGFyZUFuZFN3
YXBUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3Rz
L0NvbXBhcmVBbmRTd2FwVGVzdC5jcHAJKHJldmlzaW9uIDE5MDA3NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvdGVzdHMvQ29tcGFyZUFuZFN3YXBUZXN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjMsNyArNjMsNyBAQCBpbmxpbmUgYm9vbCBCaXRtYXA6OmNvbmN1cnJlbnRUZXN0QW5k
U2V0CiAgICAgICAgIG9sZFZhbHVlID0gKndvcmRQdHI7CiAgICAgICAgIGlmIChvbGRWYWx1ZSAm
IG1hc2spCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9IHdoaWxlICghV1RGOjp3ZWFr
Q29tcGFyZUFuZFN3YXAod29yZFB0ciwgb2xkVmFsdWUsIG9sZFZhbHVlIHwgbWFzaykpOworICAg
IH0gd2hpbGUgKCFXVEY6OndlYWtDb21wYXJlQW5kU3dhcCh3b3JkUHRyLCBvbGRWYWx1ZSwgc3Rh
dGljX2Nhc3Q8dWludDhfdD4ob2xkVmFsdWUgfCBtYXNrKSkpOwogICAgIHJldHVybiBmYWxzZTsK
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCShyZXZp
c2lvbiAxOTAwNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsMTUgKzE3MSwxMSBAQCBpbmxpbmUgdm9pZCBIZWFwOjpy
ZXBvcnRFeHRyYU1lbW9yeVZpc2l0CiAKICAgICBzaXplX3QqIGNvdW50ZXIgPSAmbV9leHRyYU1l
bW9yeVNpemU7CiAgICAgCi0jaWYgRU5BQkxFKENPTVBBUkVfQU5EX1NXQVApCiAgICAgZm9yICg7
OykgewogICAgICAgICBzaXplX3Qgb2xkU2l6ZSA9ICpjb3VudGVyOwotICAgICAgICBpZiAoV1RG
Ojp3ZWFrQ29tcGFyZUFuZFN3YXBTaXplKGNvdW50ZXIsIG9sZFNpemUsIG9sZFNpemUgKyBzaXpl
KSkKKyAgICAgICAgaWYgKFdURjo6d2Vha0NvbXBhcmVBbmRTd2FwKGNvdW50ZXIsIG9sZFNpemUs
IG9sZFNpemUgKyBzaXplKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9Ci0jZWxzZQotICAg
ICgqY291bnRlcikgKz0gc2l6ZTsKLSNlbmRpZgogfQogCiBpbmxpbmUgdm9pZCBIZWFwOjpkZXBy
ZWNhdGVkUmVwb3J0RXh0cmFNZW1vcnkoc2l6ZV90IHNpemUpCkluZGV4OiBTb3VyY2UvV1RGL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTkw
MDk1KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
OCBAQAorMjAxNS0wOS0yMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAg
ICAgIEFsd2F5cyB1c2UgdGhlIGNvbXBpbGVyJ3MgQ0FTIGltcGxlbWVudGF0aW9uIGFuZCBnZXQg
cmlkIG9mIEVOQUJMRShDT01QQVJFX0FORF9TV0FQKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFy
ayBMYW0uCisKKyAgICAgICAgKiB3dGYvQXRvbWljcy5oOiBNYWtlIHdlYWtDb21wYXJlQW5kU3dh
cCgpIGp1c3QgZm9yd2FyZCB0byB0aGUgc3lzdGVtIENBUyB2aWEgV1RGOjpBdG9taWMuCisgICAg
ICAgIChXVEY6OndlYWtDb21wYXJlQW5kU3dhcCk6CisgICAgICAgIChXVEY6OndlYWtDb21wYXJl
QW5kU3dhcFVJbnRQdHIpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjp3ZWFrQ29tcGFyZUFuZFN3
YXBTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvQml0bWFwLmg6IFNtYWxsIGNoYW5nZXMg
dG8gdXNlIHRoZSBuZXcgQVBJLgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmNvbmN1cnJlbnRU
ZXN0QW5kU2V0KToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDogUmVtb3ZlIEVOQUJMRShDT01Q
QVJFX0FORF9TV0FQKQorCiAyMDE1LTA5LTIxICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIG9sZCBHQ0MgY3J1ZnQgZnJvbSB3dGYvU3RkTGli
RXh0cmFzLmgKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0F0b21pY3MuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi9BdG9taWNzLmgJKHJldmlzaW9uIDE5MDA3NykKKysrIFNvdXJjZS9XVEYv
d3RmL0F0b21pY3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDE0NiArMTEzLDExIEBAIHN0cnVj
dCBBdG9taWMgewogICAgIHN0ZDo6YXRvbWljPFQ+IHZhbHVlOwogfTsKIAotI2lmIE9TKFdJTkRP
V1MpCi1pbmxpbmUgYm9vbCB3ZWFrQ29tcGFyZUFuZFN3YXAodm9sYXRpbGUgdW5zaWduZWQqIGxv
Y2F0aW9uLCB1bnNpZ25lZCBleHBlY3RlZCwgdW5zaWduZWQgbmV3VmFsdWUpCi17Ci0gICAgcmV0
dXJuIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKHJlaW50ZXJwcmV0X2Nhc3Q8TE9ORyB2b2xh
dGlsZSo+KGxvY2F0aW9uKSwgc3RhdGljX2Nhc3Q8TE9ORz4obmV3VmFsdWUpLCBzdGF0aWNfY2Fz
dDxMT05HPihleHBlY3RlZCkpID09IHN0YXRpY19jYXN0PExPTkc+KGV4cGVjdGVkKTsKLX0KLQot
aW5saW5lIGJvb2wgd2Vha0NvbXBhcmVBbmRTd2FwKHZvaWQqdm9sYXRpbGUqIGxvY2F0aW9uLCB2
b2lkKiBleHBlY3RlZCwgdm9pZCogbmV3VmFsdWUpCi17Ci0gICAgcmV0dXJuIEludGVybG9ja2Vk
Q29tcGFyZUV4Y2hhbmdlUG9pbnRlcihsb2NhdGlvbiwgbmV3VmFsdWUsIGV4cGVjdGVkKSA9PSBl
eHBlY3RlZDsKLX0KLSNlbHNlIC8vIE9TKFdJTkRPV1MpIC0tPiBub3Qgd2luZG93cwotaW5saW5l
IGJvb2wgd2Vha0NvbXBhcmVBbmRTd2FwKHZvbGF0aWxlIHVuc2lnbmVkKiBsb2NhdGlvbiwgdW5z
aWduZWQgZXhwZWN0ZWQsIHVuc2lnbmVkIG5ld1ZhbHVlKSAKLXsKLSNpZiBFTkFCTEUoQ09NUEFS
RV9BTkRfU1dBUCkKLSNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQotICAgIHVuc2lnbmVkIGNo
YXIgcmVzdWx0OwotICAgIGFzbSB2b2xhdGlsZSgKLSAgICAgICAgImxvY2s7IGNtcHhjaGdsICUz
LCAlMlxuXHQiCi0gICAgICAgICJzZXRlICUxIgotICAgICAgICA6ICIrYSIoZXhwZWN0ZWQpLCAi
PXEiKHJlc3VsdCksICIrbSIoKmxvY2F0aW9uKQotICAgICAgICA6ICJyIihuZXdWYWx1ZSkKLSAg
ICAgICAgOiAibWVtb3J5IgotICAgICAgICApOwotI2VsaWYgQ1BVKEFSTV9USFVNQjIpCi0gICAg
dW5zaWduZWQgdG1wOwotICAgIHVuc2lnbmVkIHJlc3VsdDsKLSAgICBhc20gdm9sYXRpbGUoCi0g
ICAgICAgICJtb3Z3ICUxLCAjMVxuXHQiCi0gICAgICAgICJsZHJleCAlMiwgJTBcblx0IgotICAg
ICAgICAiY21wICUzLCAlMlxuXHQiCi0gICAgICAgICJibmUubiAwZlxuXHQiCi0gICAgICAgICJz
dHJleCAlMSwgJTQsICUwXG5cdCIKLSAgICAgICAgIjA6IgotICAgICAgICA6ICIrUSIoKmxvY2F0
aW9uKSwgIj0mciIocmVzdWx0KSwgIj0mciIodG1wKQotICAgICAgICA6ICJyIihleHBlY3RlZCks
ICJyIihuZXdWYWx1ZSkKLSAgICAgICAgOiAibWVtb3J5Iik7Ci0gICAgcmVzdWx0ID0gIXJlc3Vs
dDsKLSNlbGlmIENQVShBUk02NCkgJiYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQotICAgIHVuc2ln
bmVkIHRtcDsKLSAgICB1bnNpZ25lZCByZXN1bHQ7Ci0gICAgYXNtIHZvbGF0aWxlKAotICAgICAg
ICAibW92ICV3MSwgIzFcblx0IgotICAgICAgICAibGR4ciAldzIsIFslMF1cblx0IgotICAgICAg
ICAiY21wICV3MywgJXcyXG5cdCIKLSAgICAgICAgImIubmUgMGZcblx0IgotICAgICAgICAic3R4
ciAldzEsICV3NCwgWyUwXVxuXHQiCi0gICAgICAgICIwOiIKLSAgICAgICAgOiAiK3IiKGxvY2F0
aW9uKSwgIj0mciIocmVzdWx0KSwgIj0mciIodG1wKQotICAgICAgICA6ICJyIihleHBlY3RlZCks
ICJyIihuZXdWYWx1ZSkKLSAgICAgICAgOiAibWVtb3J5Iik7Ci0gICAgcmVzdWx0ID0gIXJlc3Vs
dDsKLSNlbGlmIENQVShBUk02NCkKLSAgICB1bnNpZ25lZCB0bXA7Ci0gICAgdW5zaWduZWQgcmVz
dWx0OwotICAgIGFzbSB2b2xhdGlsZSgKLSAgICAgICAgIm1vdiAldzEsICMxXG5cdCIKLSAgICAg
ICAgImxkeHIgJXcyLCAlMFxuXHQiCi0gICAgICAgICJjbXAgJXczLCAldzJcblx0IgotICAgICAg
ICAiYi5uZSAwZlxuXHQiCi0gICAgICAgICJzdHhyICV3MSwgJXc0LCAlMFxuXHQiCi0gICAgICAg
ICIwOiIKLSAgICAgICAgOiAiK20iKCpsb2NhdGlvbiksICI9JnIiKHJlc3VsdCksICI9JnIiKHRt
cCkKLSAgICAgICAgOiAiciIoZXhwZWN0ZWQpLCAiciIobmV3VmFsdWUpCi0gICAgICAgIDogIm1l
bW9yeSIpOwotICAgIHJlc3VsdCA9ICFyZXN1bHQ7Ci0jZWxzZQotI2Vycm9yICJCYWQgYXJjaGl0
ZWN0dXJlIGZvciBjb21wYXJlIGFuZCBzd2FwLiIKLSNlbmRpZgotICAgIHJldHVybiByZXN1bHQ7
Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGV4
cGVjdGVkKTsKLSAgICBVTlVTRURfUEFSQU0obmV3VmFsdWUpOwotICAgIENSQVNIKCk7Ci0gICAg
cmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLWlubGluZSBib29sIHdlYWtDb21wYXJlQW5kU3dh
cCh2b2lkKnZvbGF0aWxlKiBsb2NhdGlvbiwgdm9pZCogZXhwZWN0ZWQsIHZvaWQqIG5ld1ZhbHVl
KQotewotI2lmIEVOQUJMRShDT01QQVJFX0FORF9TV0FQKQotI2lmIENQVShYODZfNjQpCi0gICAg
Ym9vbCByZXN1bHQ7Ci0gICAgYXNtIHZvbGF0aWxlKAotICAgICAgICAibG9jazsgY21weGNoZ3Eg
JTMsICUyXG5cdCIKLSAgICAgICAgInNldGUgJTEiCi0gICAgICAgIDogIithIihleHBlY3RlZCks
ICI9cSIocmVzdWx0KSwgIittIigqbG9jYXRpb24pCi0gICAgICAgIDogInIiKG5ld1ZhbHVlKQot
ICAgICAgICA6ICJtZW1vcnkiCi0gICAgICAgICk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbGlm
IENQVShBUk02NCkgJiYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQotICAgIGJvb2wgcmVzdWx0Owot
ICAgIHZvaWQqIHRtcDsKLSAgICBhc20gdm9sYXRpbGUoCi0gICAgICAgICJtb3YgJXcxLCAjMVxu
XHQiCi0gICAgICAgICJsZHhyICV4MiwgWyUwXVxuXHQiCi0gICAgICAgICJjbXAgJXgzLCAleDJc
blx0IgotICAgICAgICAiYi5uZSAwZlxuXHQiCi0gICAgICAgICJzdHhyICV3MSwgJXg0LCBbJTBd
XG5cdCIKLSAgICAgICAgIjA6IgotICAgICAgICA6ICIrciIobG9jYXRpb24pLCAiPSZyIihyZXN1
bHQpLCAiPSZyIih0bXApCi0gICAgICAgIDogInIiKGV4cGVjdGVkKSwgInIiKG5ld1ZhbHVlKQot
ICAgICAgICA6ICJtZW1vcnkiKTsKLSAgICByZXR1cm4gIXJlc3VsdDsKLSNlbGlmIENQVShBUk02
NCkKLSAgICBib29sIHJlc3VsdDsKLSAgICB2b2lkKiB0bXA7Ci0gICAgYXNtIHZvbGF0aWxlKAot
ICAgICAgICAibW92ICV3MSwgIzFcblx0IgotICAgICAgICAibGR4ciAleDIsICUwXG5cdCIKLSAg
ICAgICAgImNtcCAleDMsICV4MlxuXHQiCi0gICAgICAgICJiLm5lIDBmXG5cdCIKLSAgICAgICAg
InN0eHIgJXcxLCAleDQsICUwXG5cdCIKLSAgICAgICAgIjA6IgotICAgICAgICA6ICIrbSIoKmxv
Y2F0aW9uKSwgIj0mciIocmVzdWx0KSwgIj0mciIodG1wKQotICAgICAgICA6ICJyIihleHBlY3Rl
ZCksICJyIihuZXdWYWx1ZSkKLSAgICAgICAgOiAibWVtb3J5Iik7Ci0gICAgcmV0dXJuICFyZXN1
bHQ7Ci0jZWxzZQotICAgIHJldHVybiB3ZWFrQ29tcGFyZUFuZFN3YXAoYml0d2lzZV9jYXN0PHVu
c2lnbmVkKj4obG9jYXRpb24pLCBiaXR3aXNlX2Nhc3Q8dW5zaWduZWQ+KGV4cGVjdGVkKSwgYml0
d2lzZV9jYXN0PHVuc2lnbmVkPihuZXdWYWx1ZSkpOwotI2VuZGlmCi0jZWxzZSAvLyBFTkFCTEUo
Q09NUEFSRV9BTkRfU1dBUCkKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNF
RF9QQVJBTShleHBlY3RlZCk7Ci0gICAgVU5VU0VEX1BBUkFNKG5ld1ZhbHVlKTsKLSAgICBDUkFT
SCgpOwotICAgIHJldHVybiAwOwotI2VuZGlmIC8vIEVOQUJMRShDT01QQVJFX0FORF9TV0FQKQot
fQotI2VuZGlmIC8vIE9TKFdJTkRPV1MpIChlbmQgb2YgdGhlIG5vdC13aW5kb3dzIGNhc2UpCi0K
LWlubGluZSBib29sIHdlYWtDb21wYXJlQW5kU3dhcFVJbnRQdHIodm9sYXRpbGUgdWludHB0cl90
KiBsb2NhdGlvbiwgdWludHB0cl90IGV4cGVjdGVkLCB1aW50cHRyX3QgbmV3VmFsdWUpCi17Ci0g
ICAgcmV0dXJuIHdlYWtDb21wYXJlQW5kU3dhcChyZWludGVycHJldF9jYXN0PHZvaWQqdm9sYXRp
bGUqPihsb2NhdGlvbiksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGV4cGVjdGVkKSwgcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4obmV3VmFsdWUpKTsKLX0KLQotaW5saW5lIGJvb2wgd2Vha0NvbXBh
cmVBbmRTd2FwU2l6ZSh2b2xhdGlsZSBzaXplX3QqIGxvY2F0aW9uLCBzaXplX3QgZXhwZWN0ZWQs
IHNpemVfdCBuZXdWYWx1ZSkKKy8vIFRoaXMgaXMgYSB3ZWFrIENBUyBmdW5jdGlvbiB0aGF0IHRh
a2VzIGEgZGlyZWN0IHBvaW50ZXIgYW5kIGhhcyBubyBwb3J0YWJsZSBmZW5jaW5nIGd1YXJhbnRl
ZXMuCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoraW5saW5lIGJvb2wgd2Vha0NvbXBhcmVBbmRTd2Fw
KHZvbGF0aWxlIFQqIGxvY2F0aW9uLCBUIGV4cGVjdGVkLCBUIG5ld1ZhbHVlKQogewotICAgIHJl
dHVybiB3ZWFrQ29tcGFyZUFuZFN3YXAocmVpbnRlcnByZXRfY2FzdDx2b2lkKnZvbGF0aWxlKj4o
bG9jYXRpb24pLCByZWludGVycHJldF9jYXN0PHZvaWQqPihleHBlY3RlZCksIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KG5ld1ZhbHVlKSk7CisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxBdG9taWM8
VD4qPihsb2NhdGlvbiktPmNvbXBhcmVFeGNoYW5nZVdlYWsoZXhwZWN0ZWQsIG5ld1ZhbHVlLCBz
dGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKIH0KIAogLy8gSnVzdCBhIGNvbXBpbGVyIGZlbmNl
LiBIYXMgbm8gZWZmZWN0IG9uIHRoZSBoYXJkd2FyZSwgYnV0IHRlbGxzIHRoZSBjb21waWxlcgpA
QCAtMzIyLDY5ICsxODcsNiBAQCBpbmxpbmUgdm9pZCBtZW1vcnlCYXJyaWVyQmVmb3JlVW5sb2Nr
KCkgCiAKICNlbmRpZgogCi1pbmxpbmUgYm9vbCB3ZWFrQ29tcGFyZUFuZFN3YXAodWludDhfdCog
bG9jYXRpb24sIHVpbnQ4X3QgZXhwZWN0ZWQsIHVpbnQ4X3QgbmV3VmFsdWUpCi17Ci0jaWYgRU5B
QkxFKENPTVBBUkVfQU5EX1NXQVApCi0jaWYgIU9TKFdJTkRPV1MpICYmIChDUFUoWDg2KSB8fCBD
UFUoWDg2XzY0KSkKLSAgICB1bnNpZ25lZCBjaGFyIHJlc3VsdDsKLSAgICBhc20gdm9sYXRpbGUo
Ci0gICAgICAgICJsb2NrOyBjbXB4Y2hnYiAlMywgJTJcblx0IgotICAgICAgICAic2V0ZSAlMSIK
LSAgICAgICAgOiAiK2EiKGV4cGVjdGVkKSwgIj1xIihyZXN1bHQpLCAiK20iKCpsb2NhdGlvbikK
LSAgICAgICAgOiAicSIobmV3VmFsdWUpCi0gICAgICAgIDogIm1lbW9yeSIKLSAgICAgICAgKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotI2VsaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4NikKLSAgICAv
LyBGSVhNRTogV2UgbmVlZCBhIDY0LWJpdCBBU00gaW1wbGVtZW50YXRpb24sIGJ1dCB0aGlzIGNh
bm5vdCBiZSBpbmxpbmUgZHVlIHRvCi0gICAgLy8gTWljcm9zb2Z0J3MgZGVjaXNpb24gdG8gZXhj
bHVkZSBpdCBmcm9tIHRoZSBjb21waWxlci4KLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotCi0g
ICAgX19hc20gewotICAgICAgICBtb3YgYWwsIGV4cGVjdGVkCi0gICAgICAgIG1vdiBlZHgsIGxv
Y2F0aW9uCi0gICAgICAgIG1vdiBjbCwgbmV3VmFsdWUKLSAgICAgICAgbG9jayBjbXB4Y2hnIGJ5
dGUgcHRyW2VkeF0sIGNsCi0gICAgICAgIHNldHogcmVzdWx0Ci0gICAgfQotCi0gICAgcmV0dXJu
IHJlc3VsdDsKLSNlbHNlCi0gICAgdWludHB0cl90IGxvY2F0aW9uVmFsdWUgPSBiaXR3aXNlX2Nh
c3Q8dWludHB0cl90Pihsb2NhdGlvbik7Ci0gICAgdWludHB0cl90IGFsaWduZWRMb2NhdGlvblZh
bHVlID0gbG9jYXRpb25WYWx1ZSAmIH4oc2l6ZW9mKHVuc2lnbmVkKSAtIDEpOwotICAgIHVpbnRw
dHJfdCBsb2NhdGlvbk9mZnNldCA9IGxvY2F0aW9uVmFsdWUgLSBhbGlnbmVkTG9jYXRpb25WYWx1
ZTsKLSAgICBBU1NFUlQobG9jYXRpb25PZmZzZXQgPCBzaXplb2YodW5zaWduZWQpKTsKLSAgICB1
bnNpZ25lZCogYWxpZ25lZExvY2F0aW9uID0gYml0d2lzZV9jYXN0PHVuc2lnbmVkKj4oYWxpZ25l
ZExvY2F0aW9uVmFsdWUpOwotICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoaXMgbG9hZCBpcyBhbHdh
eXMgaXNzdWVkIGFuZCBuZXZlciBvcHRpbWl6ZWQgYXdheS4KLSAgICB1bnNpZ25lZCBvbGRBbGln
bmVkVmFsdWUgPSAqY29uc3RfY2FzdDx2b2xhdGlsZSB1bnNpZ25lZCo+KGFsaWduZWRMb2NhdGlv
bik7Ci0KLSAgICBzdHJ1Y3QgU3BsaWNlciB7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBzcGxp
Y2UodW5zaWduZWQgdmFsdWUsIHVpbnQ4X3QgYnl0ZSwgdWludHB0cl90IGJ5dGVJbmRleCkKLSAg
ICAgICAgewotICAgICAgICAgICAgdW5pb24gewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIHdv
cmQ7Ci0gICAgICAgICAgICAgICAgdWludDhfdCBieXRlc1tzaXplb2YodW5zaWduZWQpXTsKLSAg
ICAgICAgICAgIH0gdTsKLSAgICAgICAgICAgIHUud29yZCA9IHZhbHVlOwotICAgICAgICAgICAg
dS5ieXRlc1tieXRlSW5kZXhdID0gYnl0ZTsKLSAgICAgICAgICAgIHJldHVybiB1LndvcmQ7Ci0g
ICAgICAgIH0KLSAgICB9OwotICAgIAotICAgIHVuc2lnbmVkIGV4cGVjdGVkQWxpZ25lZFZhbHVl
ID0gU3BsaWNlcjo6c3BsaWNlKG9sZEFsaWduZWRWYWx1ZSwgZXhwZWN0ZWQsIGxvY2F0aW9uT2Zm
c2V0KTsKLSAgICB1bnNpZ25lZCBuZXdBbGlnbmVkVmFsdWUgPSBTcGxpY2VyOjpzcGxpY2Uob2xk
QWxpZ25lZFZhbHVlLCBuZXdWYWx1ZSwgbG9jYXRpb25PZmZzZXQpOwotCi0gICAgcmV0dXJuIHdl
YWtDb21wYXJlQW5kU3dhcChhbGlnbmVkTG9jYXRpb24sIGV4cGVjdGVkQWxpZ25lZFZhbHVlLCBu
ZXdBbGlnbmVkVmFsdWUpOwotI2VuZGlmCi0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlv
bik7Ci0gICAgVU5VU0VEX1BBUkFNKGV4cGVjdGVkKTsKLSAgICBVTlVTRURfUEFSQU0obmV3VmFs
dWUpOwotICAgIENSQVNIKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KIH0gLy8g
bmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OkF0b21pYzsKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L0JpdG1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0JpdG1hcC5oCShyZXZpc2lv
biAxOTAwNzcpCisrKyBTb3VyY2UvV1RGL3d0Zi9CaXRtYXAuaAkod29ya2luZyBjb3B5KQpAQCAt
MTI0LDcgKzEyNCw3IEBAIGlubGluZSBib29sIEJpdG1hcDxzaXplLCBhdG9taWNNb2RlLCBXb3IK
ICAgICAgICAgb2xkVmFsdWUgPSAqd29yZFB0cjsKICAgICAgICAgaWYgKG9sZFZhbHVlICYgbWFz
aykKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0gd2hpbGUgKCF3ZWFrQ29tcGFyZUFu
ZFN3YXAod29yZFB0ciwgb2xkVmFsdWUsIG9sZFZhbHVlIHwgbWFzaykpOworICAgIH0gd2hpbGUg
KCF3ZWFrQ29tcGFyZUFuZFN3YXAod29yZFB0ciwgb2xkVmFsdWUsIHN0YXRpY19jYXN0PFdvcmRU
eXBlPihvbGRWYWx1ZSB8IG1hc2spKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xNDQs
NyArMTQ0LDcgQEAgaW5saW5lIGJvb2wgQml0bWFwPHNpemUsIGF0b21pY01vZGUsIFdvcgogICAg
ICAgICBvbGRWYWx1ZSA9ICp3b3JkUHRyOwogICAgICAgICBpZiAoIShvbGRWYWx1ZSAmIG1hc2sp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0gd2hpbGUgKCF3ZWFrQ29tcGFyZUFu
ZFN3YXAod29yZFB0ciwgb2xkVmFsdWUsIG9sZFZhbHVlICYgfm1hc2spKTsKKyAgICB9IHdoaWxl
ICghd2Vha0NvbXBhcmVBbmRTd2FwKHdvcmRQdHIsIG9sZFZhbHVlLCBzdGF0aWNfY2FzdDxXb3Jk
VHlwZT4ob2xkVmFsdWUgJiB+bWFzaykpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDog
U291cmNlL1dURi93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybS5oCShyZXZpc2lvbiAxOTAwNzcpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5o
CSh3b3JraW5nIGNvcHkpCkBAIC05NzUsMTEgKzk3NSw3IEBACiAjZGVmaW5lIFVTRV9JTUxBTkdf
Rk9OVF9MSU5LMiAxCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEVOQUJMRV9DT01QQVJFX0FORF9T
V0FQKSAmJiAoT1MoV0lORE9XUykgfHwgKENPTVBJTEVSKEdDQ19PUl9DTEFORykgJiYgKENQVShY
ODYpIHx8IENQVShYODZfNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNNjQpKSkpCi0j
ZGVmaW5lIEVOQUJMRV9DT01QQVJFX0FORF9TV0FQIDEKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQo
RU5BQkxFX1BBUkFMTEVMX0dDKSAmJiAoT1MoREFSV0lOKSB8fCBQTEFURk9STShFRkwpIHx8IFBM
QVRGT1JNKEdUSykpICYmIEVOQUJMRShDT01QQVJFX0FORF9TV0FQKQorI2lmICFkZWZpbmVkKEVO
QUJMRV9QQVJBTExFTF9HQykgJiYgKE9TKERBUldJTikgfHwgUExBVEZPUk0oRUZMKSB8fCBQTEFU
Rk9STShHVEspKQogI2RlZmluZSBFTkFCTEVfUEFSQUxMRUxfR0MgMQogI2VuZGlmCiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE5MDA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE1LTA5LTIxICBGaWxpcCBQaXpsbyAg
PGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgQWx3YXlzIHVzZSB0aGUgY29tcGlsZXIncyBD
QVMgaW1wbGVtZW50YXRpb24gYW5kIGdldCByaWQgb2YgRU5BQkxFKENPTVBBUkVfQU5EX1NXQVAp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk0MzgK
KworICAgICAgICBSZXZpZXdlZCBieSBNYXJrIExhbS4KKworICAgICAgICBObyBuZXcgdGVzdHMg
YmVjYXVzZSBubyBuZXcgYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRC
cmVha0l0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXBhcmVBbmRTd2FwTm9uU2hh
cmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpOb25TaGFyZWRD
aGFyYWN0ZXJCcmVha0l0ZXJhdG9yOjpOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKToK
KwogMjAxNS0wOS0yMSAgR3dhbmcgWW9vbiBId2FuZyAgPHlvb25AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbVGhyZWFkZWQgQ29tcG9zaXRvcl0gTW9kaWZpZWQgdG8gdXNlIHJlZmVyZW5jZSBvZiBH
cmFwaGljc0NvbnRleHQgaW5zdGVhZCBvZiBwb2ludGVyCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcAkocmV2aXNpb24gMTkw
MDc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTgxMiwxNiArODEyLDcgQEAgc3RhdGljIFRleHRCcmVha0l0
ZXJhdG9yKiBub25TaGFyZWRDaGFyYQogCiBzdGF0aWMgaW5saW5lIGJvb2wgY29tcGFyZUFuZFN3
YXBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKiBleHBl
Y3RlZCwgVGV4dEJyZWFrSXRlcmF0b3IqIG5ld1ZhbHVlKQogewotI2lmIEVOQUJMRShDT01QQVJF
X0FORF9TV0FQKQotICAgIHJldHVybiBXVEY6OndlYWtDb21wYXJlQW5kU3dhcChyZWludGVycHJl
dF9jYXN0PHZvaWQqKj4oJm5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IpLCBleHBlY3Rl
ZCwgbmV3VmFsdWUpOwotI2Vsc2UKLSAgICBzdGF0aWMgU3RhdGljTG9jayBub25TaGFyZWRDaGFy
YWN0ZXJCcmVha0l0ZXJhdG9yTXV0ZXg7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRpY0xvY2s+
IGxvY2tlcihub25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yTXV0ZXgpOwotICAgIGlmIChu
b25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yICE9IGV4cGVjdGVkKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgbm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciA9IG5ld1ZhbHVl
OwotICAgIHJldHVybiB0cnVlOwotI2VuZGlmCisgICAgcmV0dXJuIFdURjo6d2Vha0NvbXBhcmVB
bmRTd2FwKCZub25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yLCBleHBlY3RlZCwgbmV3VmFs
dWUpOwogfQogCiBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOjpOb25TaGFyZWRDaGFy
YWN0ZXJCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>