<?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>182782</bug_id>
          
          <creation_ts>2018-02-14 02:14:18 -0800</creation_ts>
          <short_desc>[FTL] Support ArrayPush for ArrayStorage</short_desc>
          <delta_ts>2018-02-19 21:03:30 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1399005</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-14 02:14:18 -0800</bug_when>
    <thetext>[FTL] Support ArrayPush for ArrayStorage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399006</commentid>
    <comment_count>1</comment_count>
      <attachid>333776</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-14 02:14:58 -0800</bug_when>
    <thetext>Created attachment 333776
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399007</commentid>
    <comment_count>2</comment_count>
      <attachid>333776</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-14 02:17:51 -0800</bug_when>
    <thetext>Comment on attachment 333776
Patch

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

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4478
&gt; +        case Array::ArrayStorage: {

ArrayStorage case is similar to Int32/Contiguous/Double. But it has various slightly different things.
For example, ArrayStorage_vector has offset while the other arrays&apos;s storage does not have offset.
And we should check largestPositiveInt32Length.
In addition, we need to increment ArrayStorage_numValuesInVector.

So, we just create the completely different path for ArrayStorage in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399020</commentid>
    <comment_count>3</comment_count>
      <attachid>333782</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-14 03:37:05 -0800</bug_when>
    <thetext>Created attachment 333782
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399025</commentid>
    <comment_count>4</comment_count>
      <attachid>333785</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-14 03:59:22 -0800</bug_when>
    <thetext>Created attachment 333785
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400624</commentid>
    <comment_count>5</comment_count>
      <attachid>333785</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-19 19:18:28 -0800</bug_when>
    <thetext>Comment on attachment 333785
Patch

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

r=me

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4478
&gt; +        case Array::ArrayStorage: {

Is SlowPutArrayStorage not possible?

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4488
&gt; +                LValue prevLength = m_out.load32(storage, m_heaps.Butterfly_publicLength);
&gt; +                // Refuse to handle bizarre lengths.
&gt; +                speculate(Uncountable, noValue(), nullptr, m_out.above(prevLength, m_out.constInt32(largestPositiveInt32Length)));

You can move this code above the if since you do it below too.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4497
&gt; +                    unsure(slowPath), unsure(fastPath));

You can probably use likely/unlikely here

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4535
&gt; +            m_out.branch(beyondVectorLength, unsure(slowPath), unsure(fastPath));

you can probably use likely/unlikely here.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4563
&gt; +            m_out.branch(beyondVectorLength, unsure(slowCallPath), unsure(continuation));

could probably use likely/unlikely here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400655</commentid>
    <comment_count>6</comment_count>
      <attachid>333785</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-19 20:55:10 -0800</bug_when>
    <thetext>Comment on attachment 333785
Patch

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

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4478
&gt;&gt; +        case Array::ArrayStorage: {
&gt; 
&gt; Is SlowPutArrayStorage not possible?

Currently we do not support SlowPutArrayStorage for ArrayPush/ArrayPop (in DFGByteCodeParser).
And we cannot extend this support for SlowPutArrayStorage mechanically since ArrayPush for SlowPutArrayStorage can be reentrant while the other cases are not... so use of scratch buffer should be careful.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4488
&gt;&gt; +                speculate(Uncountable, noValue(), nullptr, m_out.above(prevLength, m_out.constInt32(largestPositiveInt32Length)));
&gt; 
&gt; You can move this code above the if since you do it below too.

Moved.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4497
&gt;&gt; +                    unsure(slowPath), unsure(fastPath));
&gt; 
&gt; You can probably use likely/unlikely here

Fixed.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4535
&gt;&gt; +            m_out.branch(beyondVectorLength, unsure(slowPath), unsure(fastPath));
&gt; 
&gt; you can probably use likely/unlikely here.

Fixed.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4563
&gt;&gt; +            m_out.branch(beyondVectorLength, unsure(slowCallPath), unsure(continuation));
&gt; 
&gt; could probably use likely/unlikely here.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400658</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-19 21:02:02 -0800</bug_when>
    <thetext>Committed r228728: &lt;https://trac.webkit.org/changeset/228728&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400659</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-02-19 21:03:30 -0800</bug_when>
    <thetext>&lt;rdar://problem/37696911&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333776</attachid>
            <date>2018-02-14 02:14:58 -0800</date>
            <delta_ts>2018-02-14 03:37:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182782-20180214191457.patch</filename>
            <type>text/plain</type>
            <size>8407</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4NDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NmUxYWNmMmJiZWMyOTM0ZWUyNGNjM2E2YTIzY2M4OTcwM2IzNzZhLi4xNzI5YmUyYmYyZGYyODNm
OGJlM2UzNjUwYjQyZDMyNTU1NTZiMzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxOC0wMi0xNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRlRMXSBTdXBwb3J0IEFycmF5UHVzaCBmb3IgQXJyYXlTdG9yYWdl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI3ODIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
dGNoIGFkZHMgc3VwcG9ydCBmb3IgQXJyYXlQdXNoKEFycmF5U3RvcmFnZSkuIFdlIGp1c3QgcG9y
dCBBcnJheVB1c2goQXJyYXlTdG9yYWdlKSBpbiBERkcgdG8gRlRMLgorCisgICAgICAgICogZnRs
L0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwv
RlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZUFycmF5UHVzaCk6CisKIDIwMTgtMDItMTMgIFNhYW0gQmFyYXRpICA8c2JhcmF0
aUBhcHBsZS5jb20+CiAKICAgICAgICAgcHV0RGlyZWN0SW5kZXhTbG93T3JCZXlvbmRWZWN0b3JM
ZW5ndGggbmVlZHMgdG8gY29udmVydCB0byBkaWN0aW9uYXJ5IGluZGV4aW5nIG1vZGUgYWx3YXlz
IGlmIGF0dHJpYnV0ZXMgYXJlIHByZXNlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKaW5kZXggMDcyNTA1ZWQyMmNkNjhi
MTY3ZGE3NTVmYmU4NzVmYTEwZWFhYTg3Yy4uOTcxMDFiMjUyZjhiMDcxYzY4MTEyNzhhZDVlMjhl
ZWQ5MjVmN2I0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBGVEwgewogCiAjZGVmaW5lIEZPUl9FQUNIX0FCU1RSQUNUX0ZJRUxEKG1hY3Jv
KSBcCiAgICAgbWFjcm8oQXJyYXlCdWZmZXJfZGF0YSwgQXJyYXlCdWZmZXI6Om9mZnNldE9mRGF0
YSgpKSBcCisgICAgbWFjcm8oQXJyYXlTdG9yYWdlX251bVZhbHVlc0luVmVjdG9yLCBBcnJheVN0
b3JhZ2U6Om51bVZhbHVlc0luVmVjdG9yT2Zmc2V0KCkpIFwKICAgICBtYWNybyhCdXR0ZXJmbHlf
YXJyYXlCdWZmZXIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZBcnJheUJ1ZmZlcigpKSBcCiAgICAgbWFj
cm8oQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0
aCgpKSBcCiAgICAgbWFjcm8oQnV0dGVyZmx5X3ZlY3Rvckxlbmd0aCwgQnV0dGVyZmx5OjpvZmZz
ZXRPZlZlY3Rvckxlbmd0aCgpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAKaW5kZXggNDk5NWUzZDI1Yjc1NjNlYWUzOTdjNzMyMjgwOWI3NmU4MTVh
MGU4ZC4uNGE4ZjFiYmEwZDYwMDgwNWFmYzgxMGRlOTI3ZWJkN2I4ZmFhMGFjMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMzMxLDYgKzMz
MSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAg
IGNhc2UgSW5pdGlhbGl6ZUVudHJ5cG9pbnRBcmd1bWVudHM6CiAgICAgY2FzZSBDUFVJbnRyaW5z
aWM6CiAgICAgY2FzZSBHZXRBcnJheU1hc2s6CisgICAgY2FzZSBBcnJheVB1c2g6CiAgICAgICAg
IC8vIFRoZXNlIGFyZSBPSy4KICAgICAgICAgYnJlYWs7CiAKQEAgLTQ0NSw3ICs0NDYsNiBAQCBp
bmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEFycmF5UHVzaDoKICAgICBjYXNlIEFycmF5UG9wOgogICAgICAgICBzd2l0Y2ggKG5vZGUtPmFy
cmF5TW9kZSgpLnR5cGUoKSkgewogICAgICAgICBjYXNlIEFycmF5OjpJbnQzMjoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBkMGYyNWM3NzNj
ZjQ4OTdiMjdkMDU2MTllZmZiZTA2YzdkMjk1ODE5Li41MzE0YWEyNDUwZDU5NzY3NmRhMmM0Mjhm
NGMyNDYxMzE3MWI4MmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCkBAIC00NDc1LDYgKzQ0NzUsMTAzIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEFycmF5OjpB
cnJheVN0b3JhZ2U6IHsKKyAgICAgICAgICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSByZXN1
bHQgb2YgQXJyYXlQdXNoIGlzIEludDMyIGluIEFJLgorICAgICAgICAgICAgaW50MzJfdCBsYXJn
ZXN0UG9zaXRpdmVJbnQzMkxlbmd0aCA9IDB4N2ZmZmZmZmYgLSBlbGVtZW50Q291bnQ7CisgICAg
ICAgICAgICBpZiAoZWxlbWVudENvdW50ID09IDEpIHsKKyAgICAgICAgICAgICAgICBFZGdlJiBl
bGVtZW50ID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIGVsZW1lbnRPZmZzZXQpOworCisg
ICAgICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShlbGVtZW50KTsKKworICAg
ICAgICAgICAgICAgIExWYWx1ZSBwcmV2TGVuZ3RoID0gbV9vdXQubG9hZDMyKHN0b3JhZ2UsIG1f
aGVhcHMuQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCk7CisgICAgICAgICAgICAgICAgLy8gUmVmdXNl
IHRvIGhhbmRsZSBiaXphcnJlIGxlbmd0aHMuCisgICAgICAgICAgICAgICAgc3BlY3VsYXRlKFVu
Y291bnRhYmxlLCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmFib3ZlKHByZXZMZW5ndGgsIG1f
b3V0LmNvbnN0SW50MzIobGFyZ2VzdFBvc2l0aXZlSW50MzJMZW5ndGgpKSk7CisKKyAgICAgICAg
ICAgICAgICBMQmFzaWNCbG9jayBmYXN0UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd1BhdGggPSBtX291dC5uZXdCbG9jaygpOworICAgICAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisK
KyAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICAgICAgICAgIG1fb3V0
LmFib3ZlT3JFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZXZMZW5ndGgsIG1fb3V0
LmxvYWQzMihzdG9yYWdlLCBtX2hlYXBzLkJ1dHRlcmZseV92ZWN0b3JMZW5ndGgpKSwKKyAgICAg
ICAgICAgICAgICAgICAgdW5zdXJlKHNsb3dQYXRoKSwgdW5zdXJlKGZhc3RQYXRoKSk7CisKKyAg
ICAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGZhc3RQ
YXRoLCBzbG93UGF0aCk7CisgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCgKKyAgICAgICAg
ICAgICAgICAgICAgdmFsdWUsIG1fb3V0LmJhc2VJbmRleChtX2hlYXBzLkFycmF5U3RvcmFnZV92
ZWN0b3IsIHN0b3JhZ2UsIG1fb3V0Lnplcm9FeHRQdHIocHJldkxlbmd0aCkpKTsKKyAgICAgICAg
ICAgICAgICBMVmFsdWUgbmV3TGVuZ3RoID0gbV9vdXQuYWRkKHByZXZMZW5ndGgsIG1fb3V0Lmlu
dDMyT25lKTsKKyAgICAgICAgICAgICAgICBtX291dC5zdG9yZTMyKG5ld0xlbmd0aCwgc3RvcmFn
ZSwgbV9oZWFwcy5CdXR0ZXJmbHlfcHVibGljTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBtX291
dC5zdG9yZTMyKAorICAgICAgICAgICAgICAgICAgICBtX291dC5hZGQobV9vdXQubG9hZDMyKHN0
b3JhZ2UsIG1faGVhcHMuQXJyYXlTdG9yYWdlX251bVZhbHVlc0luVmVjdG9yKSwgbV9vdXQuaW50
MzJPbmUpLAorICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLCBtX2hlYXBzLkFycmF5U3RvcmFn
ZV9udW1WYWx1ZXNJblZlY3Rvcik7CisKKyAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBm
YXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGJveEludDMyKG5ld0xlbmd0aCkpOworICAgICAgICAg
ICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOworICAgICAgICAgICAgICAgIFZhbHVl
RnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3IoCisgICAgICAgICAgICAgICAgICAg
IHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkFycmF5UHVzaCksIG1fY2Fs
bEZyYW1lLCB2YWx1ZSwgYmFzZSkpOworICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKKworICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwg
bGFzdE5leHQpOworICAgICAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBm
YXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBMVmFsdWUgcHJldkxlbmd0aCA9IG1fb3V0LmxvYWQzMihz
dG9yYWdlLCBtX2hlYXBzLkJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpOworICAgICAgICAgICAgLy8g
UmVmdXNlIHRvIGhhbmRsZSBiaXphcnJlIGxlbmd0aHMuCisgICAgICAgICAgICBzcGVjdWxhdGUo
VW5jb3VudGFibGUsIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQuYWJvdmUocHJldkxlbmd0aCwg
bV9vdXQuY29uc3RJbnQzMihsYXJnZXN0UG9zaXRpdmVJbnQzMkxlbmd0aCkpKTsKKworICAgICAg
ICAgICAgTFZhbHVlIG5ld0xlbmd0aCA9IG1fb3V0LmFkZChwcmV2TGVuZ3RoLCBtX291dC5jb25z
dEludDMyKGVsZW1lbnRDb3VudCkpOworCisgICAgICAgICAgICBMQmFzaWNCbG9jayBmYXN0UGF0
aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBzZXR1cCA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FsbFBhdGggPSBtX291
dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9v
dXQubmV3QmxvY2soKTsKKworICAgICAgICAgICAgTFZhbHVlIGJleW9uZFZlY3Rvckxlbmd0aCA9
IG1fb3V0LmFib3ZlKG5ld0xlbmd0aCwgbV9vdXQubG9hZDMyKHN0b3JhZ2UsIG1faGVhcHMuQnV0
dGVyZmx5X3ZlY3Rvckxlbmd0aCkpOworCisgICAgICAgICAgICBtX291dC5icmFuY2goYmV5b25k
VmVjdG9yTGVuZ3RoLCB1bnN1cmUoc2xvd1BhdGgpLCB1bnN1cmUoZmFzdFBhdGgpKTsKKworICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhmYXN0UGF0aCwg
c2xvd1BhdGgpOworICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihuZXdMZW5ndGgsIHN0b3JhZ2Us
IG1faGVhcHMuQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCk7CisgICAgICAgICAgICBtX291dC5zdG9y
ZTMyKAorICAgICAgICAgICAgICAgIG1fb3V0LmFkZChtX291dC5sb2FkMzIoc3RvcmFnZSwgbV9o
ZWFwcy5BcnJheVN0b3JhZ2VfbnVtVmFsdWVzSW5WZWN0b3IpLCBtX291dC5jb25zdEludDMyKGVs
ZW1lbnRDb3VudCkpLAorICAgICAgICAgICAgICAgIHN0b3JhZ2UsIG1faGVhcHMuQXJyYXlTdG9y
YWdlX251bVZhbHVlc0luVmVjdG9yKTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RC
dWZmZXJSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuYmFzZUluZGV4KHN0b3JhZ2UsIG1fb3V0
Lnplcm9FeHRQdHIocHJldkxlbmd0aCksIFNjYWxlRWlnaHQsIEFycmF5U3RvcmFnZTo6dmVjdG9y
T2Zmc2V0KCkpKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoc2V0dXApOworCisgICAgICAgICAg
ICBtX291dC5hcHBlbmRUbyhzbG93UGF0aCwgc2V0dXApOworICAgICAgICAgICAgc2l6ZV90IHNj
cmF0Y2hTaXplID0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIGVsZW1lbnRDb3VudDsKKyAgICAg
ICAgICAgIEFTU0VSVChzY3JhdGNoU2l6ZSk7CisgICAgICAgICAgICBTY3JhdGNoQnVmZmVyKiBz
Y3JhdGNoQnVmZmVyID0gdm0oKS5zY3JhdGNoQnVmZmVyRm9yU2l6ZShzY3JhdGNoU2l6ZSk7Cisg
ICAgICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0cihzY3JhdGNoU2l6ZSks
IG1fb3V0LmFic29sdXRlKHNjcmF0Y2hCdWZmZXItPmFkZHJlc3NPZkFjdGl2ZUxlbmd0aCgpKSk7
CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93QnVmZmVyUmVzdWx0ID0gbV9vdXQuYW5j
aG9yKG1fb3V0LmNvbnN0SW50UHRyKHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRj
aEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKSkpOworICAgICAgICAgICAgbV9vdXQuanVtcChzZXR1cCk7
CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNldHVwLCBzbG93Q2FsbFBhdGgpOworICAg
ICAgICAgICAgTFZhbHVlIGJ1ZmZlciA9IG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0QnVm
ZmVyUmVzdWx0LCBzbG93QnVmZmVyUmVzdWx0KTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQg
ZWxlbWVudEluZGV4ID0gMDsgZWxlbWVudEluZGV4IDwgZWxlbWVudENvdW50OyArK2VsZW1lbnRJ
bmRleCkgeworICAgICAgICAgICAgICAgIEVkZ2UmIGVsZW1lbnQgPSBtX2dyYXBoLnZhckFyZ0No
aWxkKG1fbm9kZSwgZWxlbWVudEluZGV4ICsgZWxlbWVudE9mZnNldCk7CisKKyAgICAgICAgICAg
ICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKGVsZW1lbnQpOworICAgICAgICAgICAgICAg
IG1fb3V0LnN0b3JlNjQodmFsdWUsIG1fb3V0LmJhc2VJbmRleChtX2hlYXBzLnZhcmlhYmxlcywg
YnVmZmVyLCBtX291dC5jb25zdEludDMyKGVsZW1lbnRJbmRleCksIGpzTnVtYmVyKGVsZW1lbnRJ
bmRleCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RS
ZXN1bHQgPSBtX291dC5hbmNob3IoYm94SW50MzIobmV3TGVuZ3RoKSk7CisKKyAgICAgICAgICAg
IG1fb3V0LmJyYW5jaChiZXlvbmRWZWN0b3JMZW5ndGgsIHVuc3VyZShzbG93Q2FsbFBhdGgpLCB1
bnN1cmUoY29udGludWF0aW9uKSk7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dD
YWxsUGF0aCwgY29udGludWF0aW9uKTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dS
ZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uQXJyYXlQdXNoTXVsdGlwbGUpLCBtX2NhbGxGcmFtZSwgYmFzZSwgYnVmZmVyLCBtX291dC5j
b25zdEludDMyKGVsZW1lbnRDb3VudCkpKTsKKyAgICAgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1f
b3V0LmNvbnN0SW50UHRyKDApLCBtX291dC5hYnNvbHV0ZShzY3JhdGNoQnVmZmVyLT5hZGRyZXNz
T2ZBY3RpdmVMZW5ndGgoKSkpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsK
KyAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBmYXN0UmVzdWx0LCBzbG93
UmVzdWx0KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkJhZCBhcnJheSB0
eXBlIik7CiAgICAgICAgICAgICByZXR1cm47Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333782</attachid>
            <date>2018-02-14 03:37:05 -0800</date>
            <delta_ts>2018-02-14 03:59:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182782-20180214203704.patch</filename>
            <type>text/plain</type>
            <size>12990</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4NDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NmUxYWNmMmJiZWMyOTM0ZWUyNGNjM2E2YTIzY2M4OTcwM2IzNzZhLi4xNzI5YmUyYmYyZGYyODNm
OGJlM2UzNjUwYjQyZDMyNTU1NTZiMzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxOC0wMi0xNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRlRMXSBTdXBwb3J0IEFycmF5UHVzaCBmb3IgQXJyYXlTdG9yYWdl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI3ODIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
dGNoIGFkZHMgc3VwcG9ydCBmb3IgQXJyYXlQdXNoKEFycmF5U3RvcmFnZSkuIFdlIGp1c3QgcG9y
dCBBcnJheVB1c2goQXJyYXlTdG9yYWdlKSBpbiBERkcgdG8gRlRMLgorCisgICAgICAgICogZnRs
L0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwv
RlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZUFycmF5UHVzaCk6CisKIDIwMTgtMDItMTMgIFNhYW0gQmFyYXRpICA8c2JhcmF0
aUBhcHBsZS5jb20+CiAKICAgICAgICAgcHV0RGlyZWN0SW5kZXhTbG93T3JCZXlvbmRWZWN0b3JM
ZW5ndGggbmVlZHMgdG8gY29udmVydCB0byBkaWN0aW9uYXJ5IGluZGV4aW5nIG1vZGUgYWx3YXlz
IGlmIGF0dHJpYnV0ZXMgYXJlIHByZXNlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKaW5kZXggMDcyNTA1ZWQyMmNkNjhi
MTY3ZGE3NTVmYmU4NzVmYTEwZWFhYTg3Yy4uOTcxMDFiMjUyZjhiMDcxYzY4MTEyNzhhZDVlMjhl
ZWQ5MjVmN2I0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBGVEwgewogCiAjZGVmaW5lIEZPUl9FQUNIX0FCU1RSQUNUX0ZJRUxEKG1hY3Jv
KSBcCiAgICAgbWFjcm8oQXJyYXlCdWZmZXJfZGF0YSwgQXJyYXlCdWZmZXI6Om9mZnNldE9mRGF0
YSgpKSBcCisgICAgbWFjcm8oQXJyYXlTdG9yYWdlX251bVZhbHVlc0luVmVjdG9yLCBBcnJheVN0
b3JhZ2U6Om51bVZhbHVlc0luVmVjdG9yT2Zmc2V0KCkpIFwKICAgICBtYWNybyhCdXR0ZXJmbHlf
YXJyYXlCdWZmZXIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZBcnJheUJ1ZmZlcigpKSBcCiAgICAgbWFj
cm8oQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0
aCgpKSBcCiAgICAgbWFjcm8oQnV0dGVyZmx5X3ZlY3Rvckxlbmd0aCwgQnV0dGVyZmx5OjpvZmZz
ZXRPZlZlY3Rvckxlbmd0aCgpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAKaW5kZXggNDk5NWUzZDI1Yjc1NjNlYWUzOTdjNzMyMjgwOWI3NmU4MTVh
MGU4ZC4uNGE4ZjFiYmEwZDYwMDgwNWFmYzgxMGRlOTI3ZWJkN2I4ZmFhMGFjMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMzMxLDYgKzMz
MSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAg
IGNhc2UgSW5pdGlhbGl6ZUVudHJ5cG9pbnRBcmd1bWVudHM6CiAgICAgY2FzZSBDUFVJbnRyaW5z
aWM6CiAgICAgY2FzZSBHZXRBcnJheU1hc2s6CisgICAgY2FzZSBBcnJheVB1c2g6CiAgICAgICAg
IC8vIFRoZXNlIGFyZSBPSy4KICAgICAgICAgYnJlYWs7CiAKQEAgLTQ0NSw3ICs0NDYsNiBAQCBp
bmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEFycmF5UHVzaDoKICAgICBjYXNlIEFycmF5UG9wOgogICAgICAgICBzd2l0Y2ggKG5vZGUtPmFy
cmF5TW9kZSgpLnR5cGUoKSkgewogICAgICAgICBjYXNlIEFycmF5OjpJbnQzMjoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBkMGYyNWM3NzNj
ZjQ4OTdiMjdkMDU2MTllZmZiZTA2YzdkMjk1ODE5Li41MzE0YWEyNDUwZDU5NzY3NmRhMmM0Mjhm
NGMyNDYxMzE3MWI4MmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCkBAIC00NDc1LDYgKzQ0NzUsMTAzIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEFycmF5OjpB
cnJheVN0b3JhZ2U6IHsKKyAgICAgICAgICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSByZXN1
bHQgb2YgQXJyYXlQdXNoIGlzIEludDMyIGluIEFJLgorICAgICAgICAgICAgaW50MzJfdCBsYXJn
ZXN0UG9zaXRpdmVJbnQzMkxlbmd0aCA9IDB4N2ZmZmZmZmYgLSBlbGVtZW50Q291bnQ7CisgICAg
ICAgICAgICBpZiAoZWxlbWVudENvdW50ID09IDEpIHsKKyAgICAgICAgICAgICAgICBFZGdlJiBl
bGVtZW50ID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIGVsZW1lbnRPZmZzZXQpOworCisg
ICAgICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShlbGVtZW50KTsKKworICAg
ICAgICAgICAgICAgIExWYWx1ZSBwcmV2TGVuZ3RoID0gbV9vdXQubG9hZDMyKHN0b3JhZ2UsIG1f
aGVhcHMuQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCk7CisgICAgICAgICAgICAgICAgLy8gUmVmdXNl
IHRvIGhhbmRsZSBiaXphcnJlIGxlbmd0aHMuCisgICAgICAgICAgICAgICAgc3BlY3VsYXRlKFVu
Y291bnRhYmxlLCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmFib3ZlKHByZXZMZW5ndGgsIG1f
b3V0LmNvbnN0SW50MzIobGFyZ2VzdFBvc2l0aXZlSW50MzJMZW5ndGgpKSk7CisKKyAgICAgICAg
ICAgICAgICBMQmFzaWNCbG9jayBmYXN0UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd1BhdGggPSBtX291dC5uZXdCbG9jaygpOworICAgICAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisK
KyAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICAgICAgICAgIG1fb3V0
LmFib3ZlT3JFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZXZMZW5ndGgsIG1fb3V0
LmxvYWQzMihzdG9yYWdlLCBtX2hlYXBzLkJ1dHRlcmZseV92ZWN0b3JMZW5ndGgpKSwKKyAgICAg
ICAgICAgICAgICAgICAgdW5zdXJlKHNsb3dQYXRoKSwgdW5zdXJlKGZhc3RQYXRoKSk7CisKKyAg
ICAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGZhc3RQ
YXRoLCBzbG93UGF0aCk7CisgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCgKKyAgICAgICAg
ICAgICAgICAgICAgdmFsdWUsIG1fb3V0LmJhc2VJbmRleChtX2hlYXBzLkFycmF5U3RvcmFnZV92
ZWN0b3IsIHN0b3JhZ2UsIG1fb3V0Lnplcm9FeHRQdHIocHJldkxlbmd0aCkpKTsKKyAgICAgICAg
ICAgICAgICBMVmFsdWUgbmV3TGVuZ3RoID0gbV9vdXQuYWRkKHByZXZMZW5ndGgsIG1fb3V0Lmlu
dDMyT25lKTsKKyAgICAgICAgICAgICAgICBtX291dC5zdG9yZTMyKG5ld0xlbmd0aCwgc3RvcmFn
ZSwgbV9oZWFwcy5CdXR0ZXJmbHlfcHVibGljTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBtX291
dC5zdG9yZTMyKAorICAgICAgICAgICAgICAgICAgICBtX291dC5hZGQobV9vdXQubG9hZDMyKHN0
b3JhZ2UsIG1faGVhcHMuQXJyYXlTdG9yYWdlX251bVZhbHVlc0luVmVjdG9yKSwgbV9vdXQuaW50
MzJPbmUpLAorICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLCBtX2hlYXBzLkFycmF5U3RvcmFn
ZV9udW1WYWx1ZXNJblZlY3Rvcik7CisKKyAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBm
YXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGJveEludDMyKG5ld0xlbmd0aCkpOworICAgICAgICAg
ICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOworICAgICAgICAgICAgICAgIFZhbHVl
RnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3IoCisgICAgICAgICAgICAgICAgICAg
IHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkFycmF5UHVzaCksIG1fY2Fs
bEZyYW1lLCB2YWx1ZSwgYmFzZSkpOworICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKKworICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwg
bGFzdE5leHQpOworICAgICAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBm
YXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBMVmFsdWUgcHJldkxlbmd0aCA9IG1fb3V0LmxvYWQzMihz
dG9yYWdlLCBtX2hlYXBzLkJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpOworICAgICAgICAgICAgLy8g
UmVmdXNlIHRvIGhhbmRsZSBiaXphcnJlIGxlbmd0aHMuCisgICAgICAgICAgICBzcGVjdWxhdGUo
VW5jb3VudGFibGUsIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQuYWJvdmUocHJldkxlbmd0aCwg
bV9vdXQuY29uc3RJbnQzMihsYXJnZXN0UG9zaXRpdmVJbnQzMkxlbmd0aCkpKTsKKworICAgICAg
ICAgICAgTFZhbHVlIG5ld0xlbmd0aCA9IG1fb3V0LmFkZChwcmV2TGVuZ3RoLCBtX291dC5jb25z
dEludDMyKGVsZW1lbnRDb3VudCkpOworCisgICAgICAgICAgICBMQmFzaWNCbG9jayBmYXN0UGF0
aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBzZXR1cCA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FsbFBhdGggPSBtX291
dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9v
dXQubmV3QmxvY2soKTsKKworICAgICAgICAgICAgTFZhbHVlIGJleW9uZFZlY3Rvckxlbmd0aCA9
IG1fb3V0LmFib3ZlKG5ld0xlbmd0aCwgbV9vdXQubG9hZDMyKHN0b3JhZ2UsIG1faGVhcHMuQnV0
dGVyZmx5X3ZlY3Rvckxlbmd0aCkpOworCisgICAgICAgICAgICBtX291dC5icmFuY2goYmV5b25k
VmVjdG9yTGVuZ3RoLCB1bnN1cmUoc2xvd1BhdGgpLCB1bnN1cmUoZmFzdFBhdGgpKTsKKworICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhmYXN0UGF0aCwg
c2xvd1BhdGgpOworICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihuZXdMZW5ndGgsIHN0b3JhZ2Us
IG1faGVhcHMuQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCk7CisgICAgICAgICAgICBtX291dC5zdG9y
ZTMyKAorICAgICAgICAgICAgICAgIG1fb3V0LmFkZChtX291dC5sb2FkMzIoc3RvcmFnZSwgbV9o
ZWFwcy5BcnJheVN0b3JhZ2VfbnVtVmFsdWVzSW5WZWN0b3IpLCBtX291dC5jb25zdEludDMyKGVs
ZW1lbnRDb3VudCkpLAorICAgICAgICAgICAgICAgIHN0b3JhZ2UsIG1faGVhcHMuQXJyYXlTdG9y
YWdlX251bVZhbHVlc0luVmVjdG9yKTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RC
dWZmZXJSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuYmFzZUluZGV4KHN0b3JhZ2UsIG1fb3V0
Lnplcm9FeHRQdHIocHJldkxlbmd0aCksIFNjYWxlRWlnaHQsIEFycmF5U3RvcmFnZTo6dmVjdG9y
T2Zmc2V0KCkpKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoc2V0dXApOworCisgICAgICAgICAg
ICBtX291dC5hcHBlbmRUbyhzbG93UGF0aCwgc2V0dXApOworICAgICAgICAgICAgc2l6ZV90IHNj
cmF0Y2hTaXplID0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIGVsZW1lbnRDb3VudDsKKyAgICAg
ICAgICAgIEFTU0VSVChzY3JhdGNoU2l6ZSk7CisgICAgICAgICAgICBTY3JhdGNoQnVmZmVyKiBz
Y3JhdGNoQnVmZmVyID0gdm0oKS5zY3JhdGNoQnVmZmVyRm9yU2l6ZShzY3JhdGNoU2l6ZSk7Cisg
ICAgICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0cihzY3JhdGNoU2l6ZSks
IG1fb3V0LmFic29sdXRlKHNjcmF0Y2hCdWZmZXItPmFkZHJlc3NPZkFjdGl2ZUxlbmd0aCgpKSk7
CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93QnVmZmVyUmVzdWx0ID0gbV9vdXQuYW5j
aG9yKG1fb3V0LmNvbnN0SW50UHRyKHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRj
aEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKSkpOworICAgICAgICAgICAgbV9vdXQuanVtcChzZXR1cCk7
CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNldHVwLCBzbG93Q2FsbFBhdGgpOworICAg
ICAgICAgICAgTFZhbHVlIGJ1ZmZlciA9IG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0QnVm
ZmVyUmVzdWx0LCBzbG93QnVmZmVyUmVzdWx0KTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQg
ZWxlbWVudEluZGV4ID0gMDsgZWxlbWVudEluZGV4IDwgZWxlbWVudENvdW50OyArK2VsZW1lbnRJ
bmRleCkgeworICAgICAgICAgICAgICAgIEVkZ2UmIGVsZW1lbnQgPSBtX2dyYXBoLnZhckFyZ0No
aWxkKG1fbm9kZSwgZWxlbWVudEluZGV4ICsgZWxlbWVudE9mZnNldCk7CisKKyAgICAgICAgICAg
ICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKGVsZW1lbnQpOworICAgICAgICAgICAgICAg
IG1fb3V0LnN0b3JlNjQodmFsdWUsIG1fb3V0LmJhc2VJbmRleChtX2hlYXBzLnZhcmlhYmxlcywg
YnVmZmVyLCBtX291dC5jb25zdEludDMyKGVsZW1lbnRJbmRleCksIGpzTnVtYmVyKGVsZW1lbnRJ
bmRleCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RS
ZXN1bHQgPSBtX291dC5hbmNob3IoYm94SW50MzIobmV3TGVuZ3RoKSk7CisKKyAgICAgICAgICAg
IG1fb3V0LmJyYW5jaChiZXlvbmRWZWN0b3JMZW5ndGgsIHVuc3VyZShzbG93Q2FsbFBhdGgpLCB1
bnN1cmUoY29udGludWF0aW9uKSk7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dD
YWxsUGF0aCwgY29udGludWF0aW9uKTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dS
ZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uQXJyYXlQdXNoTXVsdGlwbGUpLCBtX2NhbGxGcmFtZSwgYmFzZSwgYnVmZmVyLCBtX291dC5j
b25zdEludDMyKGVsZW1lbnRDb3VudCkpKTsKKyAgICAgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1f
b3V0LmNvbnN0SW50UHRyKDApLCBtX291dC5hYnNvbHV0ZShzY3JhdGNoQnVmZmVyLT5hZGRyZXNz
T2ZBY3RpdmVMZW5ndGgoKSkpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsK
KyAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBmYXN0UmVzdWx0LCBzbG93
UmVzdWx0KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkJhZCBhcnJheSB0
eXBlIik7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxv
ZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNlNzZiZTc0YjRmOWMzYWNjYjA4ZDk4YTIxMWEz
NmFiZDE1N2FmOTcuLjM4NmFmNzU0ODA3NGI5MGZkYzZkNWZiMzRiZGI1MWFjODFmYzBkY2MgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjIgQEAKKzIwMTgtMDItMTQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0ZUTF0gU3VwcG9ydCBBcnJheVB1c2ggZm9yIEFycmF5U3RvcmFn
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyNzgy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhpc3Rp
bmcgYXJyYXktcHVzaC1tdWx0aXBsZS1zdG9yYWdlLmpzIGNvdmVycyBBcnJheVB1c2goQXJyYXlT
dG9yYWdlKSBtdWx0aXBsZSBhcmd1bWVudHMgY2FzZS4KKworICAgICAgICAqIHN0cmVzcy9hcnJh
eS1wdXNoLWFycmF5LXN0b3JhZ2UtYmV5b25kLWludDMyLmpzOiBBZGRlZC4KKyAgICAgICAgKHNo
b3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9hcnJheS1wdXNoLWFy
cmF5LXN0b3JhZ2UuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVz
dCk6CisgICAgICAgICogc3RyZXNzL2FycmF5LXB1c2gtbXVsdGlwbGUtYXJyYXktc3RvcmFnZS1i
ZXlvbmQtaW50MzIuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVz
dCk6CisKIDIwMTgtMDItMTMgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAg
ICAgICAgcHV0RGlyZWN0SW5kZXhTbG93T3JCZXlvbmRWZWN0b3JMZW5ndGggbmVlZHMgdG8gY29u
dmVydCB0byBkaWN0aW9uYXJ5IGluZGV4aW5nIG1vZGUgYWx3YXlzIGlmIGF0dHJpYnV0ZXMgYXJl
IHByZXNlbnQKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FycmF5LXB1c2gtYXJyYXktc3Rv
cmFnZS1iZXlvbmQtaW50MzIuanMgYi9KU1Rlc3RzL3N0cmVzcy9hcnJheS1wdXNoLWFycmF5LXN0
b3JhZ2UtYmV5b25kLWludDMyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyZjQ5NzlkNWQ2YzYwMDU3NjUwOTlk
ZTZkZGRkMzE5NDMwNzAwMGMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hcnJh
eS1wdXNoLWFycmF5LXN0b3JhZ2UtYmV5b25kLWludDMyLmpzCkBAIC0wLDAgKzEsMjcgQEAKK2Z1
bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgaWYgKGFjdHVhbCAhPT0g
ZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFs
KTsKK30KKworZnVuY3Rpb24gdGVzdChhcnJheSwgdmFsMSkKK3sKKyAgICByZXR1cm4gYXJyYXku
cHVzaCh2YWwxKTsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFl
NTsgKytpKSB7CisgICAgdmFyIGFycmF5ID0gWyJDb2NvYSJdOworICAgIGVuc3VyZUFycmF5U3Rv
cmFnZShhcnJheSk7CisgICAgYXJyYXkubGVuZ3RoID0gMjsKKyAgICBzaG91bGRCZSh0ZXN0KGFy
cmF5LCAiQ29jb2EiKSwgMyk7CisgICAgc2hvdWxkQmUoYXJyYXlbMF0sICJDb2NvYSIpOworICAg
IHNob3VsZEJlKGFycmF5WzFdLCB1bmRlZmluZWQpOworICAgIHNob3VsZEJlKGFycmF5WzJdLCAi
Q29jb2EiKTsKK30KKwordmFyIGFycmF5ID0gWyJDb2NvYSJdOworZW5zdXJlQXJyYXlTdG9yYWdl
KGFycmF5KTsKK2FycmF5Lmxlbmd0aCA9IDB4N2ZmZmZmZmY7CitzaG91bGRCZSh0ZXN0KGFycmF5
LCAiQ29jb2EiKSwgMHg3ZmZmZmZmZiArIDEpOworc2hvdWxkQmUoYXJyYXlbMHg3ZmZmZmZmZl0s
ICJDb2NvYSIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXJyYXktcHVzaC1hcnJheS1z
dG9yYWdlLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXJyYXktcHVzaC1hcnJheS1zdG9yYWdlLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg4N2FhMGQ3OTZhNmU3NzE1Njc4ZGIxMzc3YjZjYjc5NTczZGQ2OWYKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hcnJheS1wdXNoLWFycmF5LXN0b3JhZ2UuanMK
QEAgLTAsMCArMSw0MCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sK
KyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdi
YWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KGFycmF5LCB2YWwxKQor
eworICAgIHJldHVybiBhcnJheS5wdXNoKHZhbDEpOworfQorbm9JbmxpbmUodGVzdCk7CisKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICB2YXIgYXJyYXkgPSBbIkNvY29hIl07
CisgICAgZW5zdXJlQXJyYXlTdG9yYWdlKGFycmF5KTsKKyAgICBzaG91bGRCZSh0ZXN0KGFycmF5
LCAiQ29jb2EiKSwgMik7CisgICAgc2hvdWxkQmUoYXJyYXlbMF0sICJDb2NvYSIpOworICAgIHNo
b3VsZEJlKGFycmF5WzFdLCAiQ29jb2EiKTsKKyAgICBzaG91bGRCZShhcnJheVsyXSwgdW5kZWZp
bmVkKTsKKyAgICBzaG91bGRCZShhcnJheVszXSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShh
cnJheVs0XSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZSh0ZXN0KGFycmF5LCAiQ2FwcHVjY2lu
byIpLCAzKTsKKyAgICBzaG91bGRCZShhcnJheVswXSwgIkNvY29hIik7CisgICAgc2hvdWxkQmUo
YXJyYXlbMV0sICJDb2NvYSIpOworICAgIHNob3VsZEJlKGFycmF5WzJdLCAiQ2FwcHVjY2lubyIp
OworICAgIHNob3VsZEJlKGFycmF5WzNdLCB1bmRlZmluZWQpOworICAgIHNob3VsZEJlKGFycmF5
WzRdLCB1bmRlZmluZWQpOworICAgIHNob3VsZEJlKHRlc3QoYXJyYXksICJNYXRjaGEiKSwgNCk7
CisgICAgc2hvdWxkQmUoYXJyYXlbMF0sICJDb2NvYSIpOworICAgIHNob3VsZEJlKGFycmF5WzFd
LCAiQ29jb2EiKTsKKyAgICBzaG91bGRCZShhcnJheVsyXSwgIkNhcHB1Y2Npbm8iKTsKKyAgICBz
aG91bGRCZShhcnJheVszXSwgIk1hdGNoYSIpOworICAgIHNob3VsZEJlKGFycmF5WzRdLCB1bmRl
ZmluZWQpOworICAgIHNob3VsZEJlKHRlc3QoYXJyYXksICJNYXRjaGEiKSwgNSk7CisgICAgc2hv
dWxkQmUoYXJyYXlbMF0sICJDb2NvYSIpOworICAgIHNob3VsZEJlKGFycmF5WzFdLCAiQ29jb2Ei
KTsKKyAgICBzaG91bGRCZShhcnJheVsyXSwgIkNhcHB1Y2Npbm8iKTsKKyAgICBzaG91bGRCZShh
cnJheVszXSwgIk1hdGNoYSIpOworICAgIHNob3VsZEJlKGFycmF5WzRdLCAiTWF0Y2hhIik7Cit9
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hcnJheS1wdXNoLW11bHRpcGxlLWFycmF5LXN0
b3JhZ2UtYmV5b25kLWludDMyLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXJyYXktcHVzaC1tdWx0aXBs
ZS1hcnJheS1zdG9yYWdlLWJleW9uZC1pbnQzMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YWYxMTk4M2FjYzdj
N2NhZTUxMjM5OGE3YzRhNDFlNTRlOTdlMWM0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvYXJyYXktcHVzaC1tdWx0aXBsZS1hcnJheS1zdG9yYWdlLWJleW9uZC1pbnQzMi5qcwpA
QCAtMCwwICsxLDI5IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQorewor
ICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Jh
ZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoYXJyYXksIHZhbDEsIHZh
bDIpCit7CisgICAgcmV0dXJuIGFycmF5LnB1c2godmFsMSwgdmFsMik7Cit9Citub0lubGluZSh0
ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAgIHZhciBhcnJheSA9
IFsiQ29jb2EiXTsKKyAgICBlbnN1cmVBcnJheVN0b3JhZ2UoYXJyYXkpOworICAgIGFycmF5Lmxl
bmd0aCA9IDI7CisgICAgc2hvdWxkQmUodGVzdChhcnJheSwgIkNvY29hIiwgIkNhcHB1Y2Npbm8i
KSwgNCk7CisgICAgc2hvdWxkQmUoYXJyYXlbMF0sICJDb2NvYSIpOworICAgIHNob3VsZEJlKGFy
cmF5WzFdLCB1bmRlZmluZWQpOworICAgIHNob3VsZEJlKGFycmF5WzJdLCAiQ29jb2EiKTsKKyAg
ICBzaG91bGRCZShhcnJheVszXSwgIkNhcHB1Y2Npbm8iKTsKK30KKwordmFyIGFycmF5ID0gWyJD
b2NvYSJdOworZW5zdXJlQXJyYXlTdG9yYWdlKGFycmF5KTsKK2FycmF5Lmxlbmd0aCA9IDB4N2Zm
ZmZmZmYgLSAxOworc2hvdWxkQmUodGVzdChhcnJheSwgIkNvY29hIiwgIkNhcHB1Y2Npbm8iKSwg
MHg3ZmZmZmZmZiArIDEpOworc2hvdWxkQmUoYXJyYXlbMHg3ZmZmZmZmZiAtIDFdLCAiQ29jb2Ei
KTsKK3Nob3VsZEJlKGFycmF5WzB4N2ZmZmZmZmYgLSAwXSwgIkNhcHB1Y2Npbm8iKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333785</attachid>
            <date>2018-02-14 03:59:22 -0800</date>
            <delta_ts>2018-02-19 19:18:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182782-20180214205921.patch</filename>
            <type>text/plain</type>
            <size>14247</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4NDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NmUxYWNmMmJiZWMyOTM0ZWUyNGNjM2E2YTIzY2M4OTcwM2IzNzZhLi4xNzI5YmUyYmYyZGYyODNm
OGJlM2UzNjUwYjQyZDMyNTU1NTZiMzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxOC0wMi0xNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRlRMXSBTdXBwb3J0IEFycmF5UHVzaCBmb3IgQXJyYXlTdG9yYWdl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI3ODIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
dGNoIGFkZHMgc3VwcG9ydCBmb3IgQXJyYXlQdXNoKEFycmF5U3RvcmFnZSkuIFdlIGp1c3QgcG9y
dCBBcnJheVB1c2goQXJyYXlTdG9yYWdlKSBpbiBERkcgdG8gRlRMLgorCisgICAgICAgICogZnRs
L0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwv
RlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZUFycmF5UHVzaCk6CisKIDIwMTgtMDItMTMgIFNhYW0gQmFyYXRpICA8c2JhcmF0
aUBhcHBsZS5jb20+CiAKICAgICAgICAgcHV0RGlyZWN0SW5kZXhTbG93T3JCZXlvbmRWZWN0b3JM
ZW5ndGggbmVlZHMgdG8gY29udmVydCB0byBkaWN0aW9uYXJ5IGluZGV4aW5nIG1vZGUgYWx3YXlz
IGlmIGF0dHJpYnV0ZXMgYXJlIHByZXNlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKaW5kZXggMDcyNTA1ZWQyMmNkNjhi
MTY3ZGE3NTVmYmU4NzVmYTEwZWFhYTg3Yy4uOTcxMDFiMjUyZjhiMDcxYzY4MTEyNzhhZDVlMjhl
ZWQ5MjVmN2I0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBGVEwgewogCiAjZGVmaW5lIEZPUl9FQUNIX0FCU1RSQUNUX0ZJRUxEKG1hY3Jv
KSBcCiAgICAgbWFjcm8oQXJyYXlCdWZmZXJfZGF0YSwgQXJyYXlCdWZmZXI6Om9mZnNldE9mRGF0
YSgpKSBcCisgICAgbWFjcm8oQXJyYXlTdG9yYWdlX251bVZhbHVlc0luVmVjdG9yLCBBcnJheVN0
b3JhZ2U6Om51bVZhbHVlc0luVmVjdG9yT2Zmc2V0KCkpIFwKICAgICBtYWNybyhCdXR0ZXJmbHlf
YXJyYXlCdWZmZXIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZBcnJheUJ1ZmZlcigpKSBcCiAgICAgbWFj
cm8oQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0
aCgpKSBcCiAgICAgbWFjcm8oQnV0dGVyZmx5X3ZlY3Rvckxlbmd0aCwgQnV0dGVyZmx5OjpvZmZz
ZXRPZlZlY3Rvckxlbmd0aCgpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAKaW5kZXggNDk5NWUzZDI1Yjc1NjNlYWUzOTdjNzMyMjgwOWI3NmU4MTVh
MGU4ZC4uNGE4ZjFiYmEwZDYwMDgwNWFmYzgxMGRlOTI3ZWJkN2I4ZmFhMGFjMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMzMxLDYgKzMz
MSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAg
IGNhc2UgSW5pdGlhbGl6ZUVudHJ5cG9pbnRBcmd1bWVudHM6CiAgICAgY2FzZSBDUFVJbnRyaW5z
aWM6CiAgICAgY2FzZSBHZXRBcnJheU1hc2s6CisgICAgY2FzZSBBcnJheVB1c2g6CiAgICAgICAg
IC8vIFRoZXNlIGFyZSBPSy4KICAgICAgICAgYnJlYWs7CiAKQEAgLTQ0NSw3ICs0NDYsNiBAQCBp
bmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEFycmF5UHVzaDoKICAgICBjYXNlIEFycmF5UG9wOgogICAgICAgICBzd2l0Y2ggKG5vZGUtPmFy
cmF5TW9kZSgpLnR5cGUoKSkgewogICAgICAgICBjYXNlIEFycmF5OjpJbnQzMjoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBkMGYyNWM3NzNj
ZjQ4OTdiMjdkMDU2MTllZmZiZTA2YzdkMjk1ODE5Li41MzE0YWEyNDUwZDU5NzY3NmRhMmM0Mjhm
NGMyNDYxMzE3MWI4MmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCkBAIC00NDc1LDYgKzQ0NzUsMTAzIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEFycmF5OjpB
cnJheVN0b3JhZ2U6IHsKKyAgICAgICAgICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSByZXN1
bHQgb2YgQXJyYXlQdXNoIGlzIEludDMyIGluIEFJLgorICAgICAgICAgICAgaW50MzJfdCBsYXJn
ZXN0UG9zaXRpdmVJbnQzMkxlbmd0aCA9IDB4N2ZmZmZmZmYgLSBlbGVtZW50Q291bnQ7CisgICAg
ICAgICAgICBpZiAoZWxlbWVudENvdW50ID09IDEpIHsKKyAgICAgICAgICAgICAgICBFZGdlJiBl
bGVtZW50ID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIGVsZW1lbnRPZmZzZXQpOworCisg
ICAgICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShlbGVtZW50KTsKKworICAg
ICAgICAgICAgICAgIExWYWx1ZSBwcmV2TGVuZ3RoID0gbV9vdXQubG9hZDMyKHN0b3JhZ2UsIG1f
aGVhcHMuQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCk7CisgICAgICAgICAgICAgICAgLy8gUmVmdXNl
IHRvIGhhbmRsZSBiaXphcnJlIGxlbmd0aHMuCisgICAgICAgICAgICAgICAgc3BlY3VsYXRlKFVu
Y291bnRhYmxlLCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmFib3ZlKHByZXZMZW5ndGgsIG1f
b3V0LmNvbnN0SW50MzIobGFyZ2VzdFBvc2l0aXZlSW50MzJMZW5ndGgpKSk7CisKKyAgICAgICAg
ICAgICAgICBMQmFzaWNCbG9jayBmYXN0UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd1BhdGggPSBtX291dC5uZXdCbG9jaygpOworICAgICAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisK
KyAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICAgICAgICAgIG1fb3V0
LmFib3ZlT3JFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZXZMZW5ndGgsIG1fb3V0
LmxvYWQzMihzdG9yYWdlLCBtX2hlYXBzLkJ1dHRlcmZseV92ZWN0b3JMZW5ndGgpKSwKKyAgICAg
ICAgICAgICAgICAgICAgdW5zdXJlKHNsb3dQYXRoKSwgdW5zdXJlKGZhc3RQYXRoKSk7CisKKyAg
ICAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGZhc3RQ
YXRoLCBzbG93UGF0aCk7CisgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCgKKyAgICAgICAg
ICAgICAgICAgICAgdmFsdWUsIG1fb3V0LmJhc2VJbmRleChtX2hlYXBzLkFycmF5U3RvcmFnZV92
ZWN0b3IsIHN0b3JhZ2UsIG1fb3V0Lnplcm9FeHRQdHIocHJldkxlbmd0aCkpKTsKKyAgICAgICAg
ICAgICAgICBMVmFsdWUgbmV3TGVuZ3RoID0gbV9vdXQuYWRkKHByZXZMZW5ndGgsIG1fb3V0Lmlu
dDMyT25lKTsKKyAgICAgICAgICAgICAgICBtX291dC5zdG9yZTMyKG5ld0xlbmd0aCwgc3RvcmFn
ZSwgbV9oZWFwcy5CdXR0ZXJmbHlfcHVibGljTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBtX291
dC5zdG9yZTMyKAorICAgICAgICAgICAgICAgICAgICBtX291dC5hZGQobV9vdXQubG9hZDMyKHN0
b3JhZ2UsIG1faGVhcHMuQXJyYXlTdG9yYWdlX251bVZhbHVlc0luVmVjdG9yKSwgbV9vdXQuaW50
MzJPbmUpLAorICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLCBtX2hlYXBzLkFycmF5U3RvcmFn
ZV9udW1WYWx1ZXNJblZlY3Rvcik7CisKKyAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBm
YXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGJveEludDMyKG5ld0xlbmd0aCkpOworICAgICAgICAg
ICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOworICAgICAgICAgICAgICAgIFZhbHVl
RnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3IoCisgICAgICAgICAgICAgICAgICAg
IHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkFycmF5UHVzaCksIG1fY2Fs
bEZyYW1lLCB2YWx1ZSwgYmFzZSkpOworICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKKworICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwg
bGFzdE5leHQpOworICAgICAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBm
YXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBMVmFsdWUgcHJldkxlbmd0aCA9IG1fb3V0LmxvYWQzMihz
dG9yYWdlLCBtX2hlYXBzLkJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpOworICAgICAgICAgICAgLy8g
UmVmdXNlIHRvIGhhbmRsZSBiaXphcnJlIGxlbmd0aHMuCisgICAgICAgICAgICBzcGVjdWxhdGUo
VW5jb3VudGFibGUsIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQuYWJvdmUocHJldkxlbmd0aCwg
bV9vdXQuY29uc3RJbnQzMihsYXJnZXN0UG9zaXRpdmVJbnQzMkxlbmd0aCkpKTsKKworICAgICAg
ICAgICAgTFZhbHVlIG5ld0xlbmd0aCA9IG1fb3V0LmFkZChwcmV2TGVuZ3RoLCBtX291dC5jb25z
dEludDMyKGVsZW1lbnRDb3VudCkpOworCisgICAgICAgICAgICBMQmFzaWNCbG9jayBmYXN0UGF0
aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBzZXR1cCA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FsbFBhdGggPSBtX291
dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9v
dXQubmV3QmxvY2soKTsKKworICAgICAgICAgICAgTFZhbHVlIGJleW9uZFZlY3Rvckxlbmd0aCA9
IG1fb3V0LmFib3ZlKG5ld0xlbmd0aCwgbV9vdXQubG9hZDMyKHN0b3JhZ2UsIG1faGVhcHMuQnV0
dGVyZmx5X3ZlY3Rvckxlbmd0aCkpOworCisgICAgICAgICAgICBtX291dC5icmFuY2goYmV5b25k
VmVjdG9yTGVuZ3RoLCB1bnN1cmUoc2xvd1BhdGgpLCB1bnN1cmUoZmFzdFBhdGgpKTsKKworICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhmYXN0UGF0aCwg
c2xvd1BhdGgpOworICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihuZXdMZW5ndGgsIHN0b3JhZ2Us
IG1faGVhcHMuQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCk7CisgICAgICAgICAgICBtX291dC5zdG9y
ZTMyKAorICAgICAgICAgICAgICAgIG1fb3V0LmFkZChtX291dC5sb2FkMzIoc3RvcmFnZSwgbV9o
ZWFwcy5BcnJheVN0b3JhZ2VfbnVtVmFsdWVzSW5WZWN0b3IpLCBtX291dC5jb25zdEludDMyKGVs
ZW1lbnRDb3VudCkpLAorICAgICAgICAgICAgICAgIHN0b3JhZ2UsIG1faGVhcHMuQXJyYXlTdG9y
YWdlX251bVZhbHVlc0luVmVjdG9yKTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RC
dWZmZXJSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuYmFzZUluZGV4KHN0b3JhZ2UsIG1fb3V0
Lnplcm9FeHRQdHIocHJldkxlbmd0aCksIFNjYWxlRWlnaHQsIEFycmF5U3RvcmFnZTo6dmVjdG9y
T2Zmc2V0KCkpKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoc2V0dXApOworCisgICAgICAgICAg
ICBtX291dC5hcHBlbmRUbyhzbG93UGF0aCwgc2V0dXApOworICAgICAgICAgICAgc2l6ZV90IHNj
cmF0Y2hTaXplID0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIGVsZW1lbnRDb3VudDsKKyAgICAg
ICAgICAgIEFTU0VSVChzY3JhdGNoU2l6ZSk7CisgICAgICAgICAgICBTY3JhdGNoQnVmZmVyKiBz
Y3JhdGNoQnVmZmVyID0gdm0oKS5zY3JhdGNoQnVmZmVyRm9yU2l6ZShzY3JhdGNoU2l6ZSk7Cisg
ICAgICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0cihzY3JhdGNoU2l6ZSks
IG1fb3V0LmFic29sdXRlKHNjcmF0Y2hCdWZmZXItPmFkZHJlc3NPZkFjdGl2ZUxlbmd0aCgpKSk7
CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93QnVmZmVyUmVzdWx0ID0gbV9vdXQuYW5j
aG9yKG1fb3V0LmNvbnN0SW50UHRyKHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRj
aEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKSkpOworICAgICAgICAgICAgbV9vdXQuanVtcChzZXR1cCk7
CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNldHVwLCBzbG93Q2FsbFBhdGgpOworICAg
ICAgICAgICAgTFZhbHVlIGJ1ZmZlciA9IG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0QnVm
ZmVyUmVzdWx0LCBzbG93QnVmZmVyUmVzdWx0KTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQg
ZWxlbWVudEluZGV4ID0gMDsgZWxlbWVudEluZGV4IDwgZWxlbWVudENvdW50OyArK2VsZW1lbnRJ
bmRleCkgeworICAgICAgICAgICAgICAgIEVkZ2UmIGVsZW1lbnQgPSBtX2dyYXBoLnZhckFyZ0No
aWxkKG1fbm9kZSwgZWxlbWVudEluZGV4ICsgZWxlbWVudE9mZnNldCk7CisKKyAgICAgICAgICAg
ICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKGVsZW1lbnQpOworICAgICAgICAgICAgICAg
IG1fb3V0LnN0b3JlNjQodmFsdWUsIG1fb3V0LmJhc2VJbmRleChtX2hlYXBzLnZhcmlhYmxlcywg
YnVmZmVyLCBtX291dC5jb25zdEludDMyKGVsZW1lbnRJbmRleCksIGpzTnVtYmVyKGVsZW1lbnRJ
bmRleCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RS
ZXN1bHQgPSBtX291dC5hbmNob3IoYm94SW50MzIobmV3TGVuZ3RoKSk7CisKKyAgICAgICAgICAg
IG1fb3V0LmJyYW5jaChiZXlvbmRWZWN0b3JMZW5ndGgsIHVuc3VyZShzbG93Q2FsbFBhdGgpLCB1
bnN1cmUoY29udGludWF0aW9uKSk7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dD
YWxsUGF0aCwgY29udGludWF0aW9uKTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dS
ZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uQXJyYXlQdXNoTXVsdGlwbGUpLCBtX2NhbGxGcmFtZSwgYmFzZSwgYnVmZmVyLCBtX291dC5j
b25zdEludDMyKGVsZW1lbnRDb3VudCkpKTsKKyAgICAgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1f
b3V0LmNvbnN0SW50UHRyKDApLCBtX291dC5hYnNvbHV0ZShzY3JhdGNoQnVmZmVyLT5hZGRyZXNz
T2ZBY3RpdmVMZW5ndGgoKSkpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsK
KyAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBmYXN0UmVzdWx0LCBzbG93
UmVzdWx0KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkJhZCBhcnJheSB0
eXBlIik7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxv
ZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNlNzZiZTc0YjRmOWMzYWNjYjA4ZDk4YTIxMWEz
NmFiZDE1N2FmOTcuLjk3YTYzZWE2NjUwOWExNzg3Njk4NTk1YjlhYWE0NjIxZWE3MDBlOTkgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjUgQEAKKzIwMTgtMDItMTQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0ZUTF0gU3VwcG9ydCBBcnJheVB1c2ggZm9yIEFycmF5U3RvcmFn
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyNzgy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhpc3Rp
bmcgYXJyYXktcHVzaC1tdWx0aXBsZS1zdG9yYWdlLmpzIGNvdmVycyBBcnJheVB1c2goQXJyYXlT
dG9yYWdlKSBtdWx0aXBsZSBhcmd1bWVudHMgY2FzZS4KKworICAgICAgICAqIHN0cmVzcy9hcnJh
eS1wdXNoLWFycmF5LXN0b3JhZ2UtYmV5b25kLWludDMyLmpzOiBBZGRlZC4KKyAgICAgICAgKHNo
b3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9hcnJheS1wdXNoLWFy
cmF5LXN0b3JhZ2UuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVz
dCk6CisgICAgICAgICogc3RyZXNzL2FycmF5LXB1c2gtbXVsdGlwbGUtYXJyYXktc3RvcmFnZS1i
ZXlvbmQtaW50MzIuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVz
dCk6CisgICAgICAgICogc3RyZXNzL2FycmF5LXB1c2gtbXVsdGlwbGUtc3RvcmFnZS1jb250aW51
b3VzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorCiAy
MDE4LTAyLTEzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIHB1
dERpcmVjdEluZGV4U2xvd09yQmV5b25kVmVjdG9yTGVuZ3RoIG5lZWRzIHRvIGNvbnZlcnQgdG8g
ZGljdGlvbmFyeSBpbmRleGluZyBtb2RlIGFsd2F5cyBpZiBhdHRyaWJ1dGVzIGFyZSBwcmVzZW50
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hcnJheS1wdXNoLWFycmF5LXN0b3JhZ2UtYmV5
b25kLWludDMyLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXJyYXktcHVzaC1hcnJheS1zdG9yYWdlLWJl
eW9uZC1pbnQzMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MmY0OTc5ZDVkNmM2MDA1NzY1MDk5ZGU2ZGRkZDMx
OTQzMDcwMDBjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXJyYXktcHVzaC1h
cnJheS1zdG9yYWdlLWJleW9uZC1pbnQzMi5qcwpAQCAtMCwwICsxLDI3IEBACitmdW5jdGlvbiBz
aG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVk
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisK
K2Z1bmN0aW9uIHRlc3QoYXJyYXksIHZhbDEpCit7CisgICAgcmV0dXJuIGFycmF5LnB1c2godmFs
MSk7Cit9Citub0lubGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkg
eworICAgIHZhciBhcnJheSA9IFsiQ29jb2EiXTsKKyAgICBlbnN1cmVBcnJheVN0b3JhZ2UoYXJy
YXkpOworICAgIGFycmF5Lmxlbmd0aCA9IDI7CisgICAgc2hvdWxkQmUodGVzdChhcnJheSwgIkNv
Y29hIiksIDMpOworICAgIHNob3VsZEJlKGFycmF5WzBdLCAiQ29jb2EiKTsKKyAgICBzaG91bGRC
ZShhcnJheVsxXSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShhcnJheVsyXSwgIkNvY29hIik7
Cit9CisKK3ZhciBhcnJheSA9IFsiQ29jb2EiXTsKK2Vuc3VyZUFycmF5U3RvcmFnZShhcnJheSk7
CithcnJheS5sZW5ndGggPSAweDdmZmZmZmZmOworc2hvdWxkQmUodGVzdChhcnJheSwgIkNvY29h
IiksIDB4N2ZmZmZmZmYgKyAxKTsKK3Nob3VsZEJlKGFycmF5WzB4N2ZmZmZmZmZdLCAiQ29jb2Ei
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FycmF5LXB1c2gtYXJyYXktc3RvcmFnZS5q
cyBiL0pTVGVzdHMvc3RyZXNzL2FycmF5LXB1c2gtYXJyYXktc3RvcmFnZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44ODdhYTBkNzk2YTZlNzcxNTY3OGRiMTM3N2I2Y2I3OTU3M2RkNjlmCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvYXJyYXktcHVzaC1hcnJheS1zdG9yYWdlLmpzCkBAIC0wLDAg
KzEsNDAgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgaWYg
KGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVl
OiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gdGVzdChhcnJheSwgdmFsMSkKK3sKKyAgICBy
ZXR1cm4gYXJyYXkucHVzaCh2YWwxKTsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBp
ID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgdmFyIGFycmF5ID0gWyJDb2NvYSJdOworICAgIGVu
c3VyZUFycmF5U3RvcmFnZShhcnJheSk7CisgICAgc2hvdWxkQmUodGVzdChhcnJheSwgIkNvY29h
IiksIDIpOworICAgIHNob3VsZEJlKGFycmF5WzBdLCAiQ29jb2EiKTsKKyAgICBzaG91bGRCZShh
cnJheVsxXSwgIkNvY29hIik7CisgICAgc2hvdWxkQmUoYXJyYXlbMl0sIHVuZGVmaW5lZCk7Cisg
ICAgc2hvdWxkQmUoYXJyYXlbM10sIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUoYXJyYXlbNF0s
IHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUodGVzdChhcnJheSwgIkNhcHB1Y2Npbm8iKSwgMyk7
CisgICAgc2hvdWxkQmUoYXJyYXlbMF0sICJDb2NvYSIpOworICAgIHNob3VsZEJlKGFycmF5WzFd
LCAiQ29jb2EiKTsKKyAgICBzaG91bGRCZShhcnJheVsyXSwgIkNhcHB1Y2Npbm8iKTsKKyAgICBz
aG91bGRCZShhcnJheVszXSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShhcnJheVs0XSwgdW5k
ZWZpbmVkKTsKKyAgICBzaG91bGRCZSh0ZXN0KGFycmF5LCAiTWF0Y2hhIiksIDQpOworICAgIHNo
b3VsZEJlKGFycmF5WzBdLCAiQ29jb2EiKTsKKyAgICBzaG91bGRCZShhcnJheVsxXSwgIkNvY29h
Iik7CisgICAgc2hvdWxkQmUoYXJyYXlbMl0sICJDYXBwdWNjaW5vIik7CisgICAgc2hvdWxkQmUo
YXJyYXlbM10sICJNYXRjaGEiKTsKKyAgICBzaG91bGRCZShhcnJheVs0XSwgdW5kZWZpbmVkKTsK
KyAgICBzaG91bGRCZSh0ZXN0KGFycmF5LCAiTWF0Y2hhIiksIDUpOworICAgIHNob3VsZEJlKGFy
cmF5WzBdLCAiQ29jb2EiKTsKKyAgICBzaG91bGRCZShhcnJheVsxXSwgIkNvY29hIik7CisgICAg
c2hvdWxkQmUoYXJyYXlbMl0sICJDYXBwdWNjaW5vIik7CisgICAgc2hvdWxkQmUoYXJyYXlbM10s
ICJNYXRjaGEiKTsKKyAgICBzaG91bGRCZShhcnJheVs0XSwgIk1hdGNoYSIpOworfQpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvYXJyYXktcHVzaC1tdWx0aXBsZS1hcnJheS1zdG9yYWdlLWJl
eW9uZC1pbnQzMi5qcyBiL0pTVGVzdHMvc3RyZXNzL2FycmF5LXB1c2gtbXVsdGlwbGUtYXJyYXkt
c3RvcmFnZS1iZXlvbmQtaW50MzIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2FmMTE5ODNhY2M3YzdjYWU1MTIz
OThhN2M0YTQxZTU0ZTk3ZTFjNAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Fy
cmF5LXB1c2gtbXVsdGlwbGUtYXJyYXktc3RvcmFnZS1iZXlvbmQtaW50MzIuanMKQEAgLTAsMCAr
MSwyOSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6
ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KGFycmF5LCB2YWwxLCB2YWwyKQorewor
ICAgIHJldHVybiBhcnJheS5wdXNoKHZhbDEsIHZhbDIpOworfQorbm9JbmxpbmUodGVzdCk7CisK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICB2YXIgYXJyYXkgPSBbIkNvY29h
Il07CisgICAgZW5zdXJlQXJyYXlTdG9yYWdlKGFycmF5KTsKKyAgICBhcnJheS5sZW5ndGggPSAy
OworICAgIHNob3VsZEJlKHRlc3QoYXJyYXksICJDb2NvYSIsICJDYXBwdWNjaW5vIiksIDQpOwor
ICAgIHNob3VsZEJlKGFycmF5WzBdLCAiQ29jb2EiKTsKKyAgICBzaG91bGRCZShhcnJheVsxXSwg
dW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShhcnJheVsyXSwgIkNvY29hIik7CisgICAgc2hvdWxk
QmUoYXJyYXlbM10sICJDYXBwdWNjaW5vIik7Cit9CisKK3ZhciBhcnJheSA9IFsiQ29jb2EiXTsK
K2Vuc3VyZUFycmF5U3RvcmFnZShhcnJheSk7CithcnJheS5sZW5ndGggPSAweDdmZmZmZmZmIC0g
MTsKK3Nob3VsZEJlKHRlc3QoYXJyYXksICJDb2NvYSIsICJDYXBwdWNjaW5vIiksIDB4N2ZmZmZm
ZmYgKyAxKTsKK3Nob3VsZEJlKGFycmF5WzB4N2ZmZmZmZmYgLSAxXSwgIkNvY29hIik7CitzaG91
bGRCZShhcnJheVsweDdmZmZmZmZmIC0gMF0sICJDYXBwdWNjaW5vIik7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9hcnJheS1wdXNoLW11bHRpcGxlLXN0b3JhZ2UtY29udGludW91cy5qcyBi
L0pTVGVzdHMvc3RyZXNzL2FycmF5LXB1c2gtbXVsdGlwbGUtc3RvcmFnZS1jb250aW51b3VzLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjY2M2M5OTkyOGYwM2I1Y2FiZTE4ODhjMTZkZmVmY2JhN2UwOGU5MmQKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hcnJheS1wdXNoLW11bHRpcGxlLXN0b3Jh
Z2UtY29udGludW91cy5qcwpAQCAtMCwwICsxLDMxIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1
YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRl
c3QoYXJyYXksIHZhbDEsIHZhbDIsIHZhbDMpCit7CisgICAgcmV0dXJuIGFycmF5LnB1c2godmFs
MSwgdmFsMiwgdmFsMyk7Cit9Citub0lubGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkg
PCAxZTU7ICsraSkgeworICAgIHZhciBhcnJheSA9IFtdOworICAgIGVuc3VyZUFycmF5U3RvcmFn
ZShhcnJheSk7CisgICAgc2hvdWxkQmUodGVzdChhcnJheSwgIkNvY29hIiwgIkNhcHB1Y2Npbm8i
LCAiTWF0Y2hhIiksIDMpOworICAgIHNob3VsZEJlKGFycmF5WzBdLCAiQ29jb2EiKTsKKyAgICBz
aG91bGRCZShhcnJheVsxXSwgIkNhcHB1Y2Npbm8iKTsKKyAgICBzaG91bGRCZShhcnJheVsyXSwg
Ik1hdGNoYSIpOworfQorCit2YXIgYXJyYXkgPSBbXTsKK2Vuc3VyZUFycmF5U3RvcmFnZShhcnJh
eSk7Citmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgc2hvdWxkQmUodGVzdChh
cnJheSwgIkNvY29hIiwgIkNhcHB1Y2Npbm8iLCAiTWF0Y2hhIiksIDMgKiAoaSArIDEpKTsKK30K
K2ZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICBzaG91bGRCZShhcnJheVszICog
aSArIDBdLCAiQ29jb2EiKTsKKyAgICBzaG91bGRCZShhcnJheVszICogaSArIDFdLCAiQ2FwcHVj
Y2lubyIpOworICAgIHNob3VsZEJlKGFycmF5WzMgKiBpICsgMl0sICJNYXRjaGEiKTsKK30K
</data>
<flag name="review"
          id="352640"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>