<?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>80187</bug_id>
          
          <creation_ts>2012-03-02 13:31:31 -0800</creation_ts>
          <short_desc>Add Histograms for reporting on PageCache reject reasons</short_desc>
          <delta_ts>2012-03-07 08:52:41 -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>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Peters">gavinp</reporter>
          <assigned_to name="Gavin Peters">gavinp</assigned_to>
          <cc>abarth</cc>
    
    <cc>beidson</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jar</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>569887</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-03-02 13:31:31 -0800</bug_when>
    <thetext>add Histograms for reporting on PageCache reject reasons</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569890</commentid>
    <comment_count>1</comment_count>
      <attachid>129949</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-03-02 13:35:22 -0800</bug_when>
    <thetext>Created attachment 129949
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569893</commentid>
    <comment_count>2</comment_count>
      <attachid>129950</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-03-02 13:37:21 -0800</bug_when>
    <thetext>Created attachment 129950
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569900</commentid>
    <comment_count>3</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-03-02 13:44:28 -0800</bug_when>
    <thetext>Here&apos;s patches that add histogram reporting to PageCache.cpp, so we can see what is causing pages to not enter the page cache in the field.

I decided to put the logic into the debug-only code for logging page cache decisions.  Histogram reporting is semantically very similar to logging, and the code was already traversing the tree.  The bad news for debug builds in non-Chromium ports is that the histogram reporting section does a few loops in order to call what are ultimately NOPs.  This could be guarded by #ifdefs, but I made a call.  Let me know if I should reverse it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569956</commentid>
    <comment_count>4</comment_count>
      <attachid>129950</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-02 14:43:35 -0800</bug_when>
    <thetext>Comment on attachment 129950
Patch

Attachment 129950 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11802138</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569961</commentid>
    <comment_count>5</comment_count>
      <attachid>129960</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-03-02 14:54:56 -0800</bug_when>
    <thetext>Created attachment 129960
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569962</commentid>
    <comment_count>6</comment_count>
      <attachid>129960</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-03-02 14:56:01 -0800</bug_when>
    <thetext>Comment on attachment 129960
Patch

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

&gt; Source/WebCore/history/PageCache.cpp:89
&gt; +#endif

Is this the correct use of ASSERT_UNUSED?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570021</commentid>
    <comment_count>7</comment_count>
      <attachid>129960</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-02 16:10:47 -0800</bug_when>
    <thetext>Comment on attachment 129960
Patch

Attachment 129960 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11802177</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570025</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-03-02 16:17:59 -0800</bug_when>
    <thetext>I&apos;ll come review this after it passes EWS  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570026</commentid>
    <comment_count>9</comment_count>
      <attachid>129976</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-03-02 16:19:27 -0800</bug_when>
    <thetext>Created attachment 129976
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570027</commentid>
    <comment_count>10</comment_count>
      <attachid>129976</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-03-02 16:20:10 -0800</bug_when>
    <thetext>Comment on attachment 129976
Patch

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

&gt; Source/WebCore/history/PageCache.cpp:88
&gt; +    UNUSED_PARAM(indentLevel);

The answer to was I using it correctly was: No.  This use here should be good, though the build test bots will know best.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570048</commentid>
    <comment_count>11</comment_count>
      <attachid>129982</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-03-02 17:13:29 -0800</bug_when>
    <thetext>Created attachment 129982
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570050</commentid>
    <comment_count>12</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-03-02 17:15:42 -0800</bug_when>
    <thetext>For those of you scoring at home, that is now three uploads just to get a version that compiles.  The lesson is that you should test as many builds as possible before upload; I knew I was doing conditional compilation that would particularly affect the Chromium release build, and I didn&apos;t do that.

Brady, you&apos;re wise to wait on EWS.  I&apos;ll email you out of band once it&apos;s passed, to save you coming back here every two minutes, as you currently must be.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570056</commentid>
    <comment_count>13</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-03-02 17:23:32 -0800</bug_when>
    <thetext>(In reply to comment #12)

&gt; Brady, you&apos;re wise to wait on EWS.  I&apos;ll email you out of band once it&apos;s passed, to save you coming back here every two minutes, as you currently must be.  :)

Nah, I&apos;m just watching my bugzilla emails.  It&apos;s unlikely I&apos;ll get to it this weekend but if I don&apos;t I&apos;ll look Monday morning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571843</commentid>
    <comment_count>14</comment_count>
      <attachid>129982</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-03-06 07:31:11 -0800</bug_when>
    <thetext>Comment on attachment 129982
Patch

I have another upload coming on this, I&apos;ve thought a bit more about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571970</commentid>
    <comment_count>15</comment_count>
      <attachid>130403</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-03-06 10:41:38 -0800</bug_when>
    <thetext>Created attachment 130403
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571980</commentid>
    <comment_count>16</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-03-06 10:47:29 -0800</bug_when>
    <thetext>This latest upload is a merge to trunk (abarth removed the geolocation exclusion yesterday, yay!).  As well, I have pared down and renamed the histograms.  The previous patch had too much of a kitchen-sink approach to histograms; I would like to at least see some statistics uploaded and incrementally add more histograms as we learn more about what is causing PageCache to not be useful.

Also, note the renaming of the &quot;....ByPage&quot; histograms.  The intention there is to make them collate directly next to their earlier Frame related cousins; since the &quot;about:histograms/PageCache&quot; display in Chrome sorts alphabetically, this contributes a lot to making that data more immediately useful.

beidson, abarth: WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572058</commentid>
    <comment_count>17</comment_count>
      <attachid>130403</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-06 12:19:05 -0800</bug_when>
    <thetext>Comment on attachment 130403
Patch

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

&gt; Source/WebCore/history/PageCache.cpp:65
&gt; +enum FrameRejectCause {

FrameRejectCause -&gt; Are we really rejecting frames?  I would try to pick some name that reflects the PageCache...

&gt; Source/WebCore/history/PageCache.cpp:81
&gt; +    frameRejectCause_count,

frameRejectCause_count isn&apos;t really a WebKit-style name.  Maybe numberOfFrameRejectCauses (or whatever you end up calling the type)

&gt; Source/WebCore/history/PageCache.cpp:175
&gt; +    for (int i = 0; i &lt; frameRejectCause_count; ++i)

Missing the { } around the body of this loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572060</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-06 12:19:53 -0800</bug_when>
    <thetext>Those comments probably aren&apos;t overly helpful...  This patch looks fine.  We should just clean it up a bit style-wise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572086</commentid>
    <comment_count>19</comment_count>
      <attachid>130430</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-03-06 13:08:03 -0800</bug_when>
    <thetext>Created attachment 130430
more stylish</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572087</commentid>
    <comment_count>20</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-03-06 13:11:22 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 130403 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=130403&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/history/PageCache.cpp:65
&gt; &gt; +enum FrameRejectCause {
&gt; 
&gt; FrameRejectCause -&gt; Are we really rejecting frames?  I would try to pick some name that reflects the PageCache...

Done.  Behold ReasonFrameCannotBeInPageCache and ReasonPageCannotBeInPageCache.

&gt; 
&gt; &gt; Source/WebCore/history/PageCache.cpp:81
&gt; &gt; +    frameRejectCause_count,
&gt; 
&gt; frameRejectCause_count isn&apos;t really a WebKit-style name.  Maybe numberOfFrameRejectCauses (or whatever you end up calling the type)

Done.  NumberOfReasonsFOOsCannotBeInPageCache.

&gt; &gt; Source/WebCore/history/PageCache.cpp:175
&gt; &gt; +    for (int i = 0; i &lt; frameRejectCause_count; ++i)
&gt; 
&gt; Missing the { } around the body of this loop.

Done.  There were two more of these.

(In reply to comment #18)
&gt; Those comments probably aren&apos;t overly helpful...  This patch looks fine.  We should just clean it up a bit style-wise.

Besides the enumerated style failures above; I also had violations of http://www.webkit.org/coding/coding-style.html#names-enum-members and http://www.webkit.org/coding/coding-style.html#spacing-binary-ternary-op , both fixed now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572100</commentid>
    <comment_count>21</comment_count>
      <attachid>130430</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-06 13:26:28 -0800</bug_when>
    <thetext>Comment on attachment 130430
more stylish

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

&gt; Source/WebCore/history/PageCache.cpp:64
&gt; +// Used in histograms, please only add at the end, and do not remove elements.

We&apos;ll probably end up changing this enum over time as we modify this file.  I guess we&apos;ll end up with unused entries...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572103</commentid>
    <comment_count>22</comment_count>
      <attachid>130430</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-06 13:27:28 -0800</bug_when>
    <thetext>Comment on attachment 130430
more stylish

This looks fine to me.  Please give Brady a chance to leave comments before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572113</commentid>
    <comment_count>23</comment_count>
      <attachid>130434</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-03-06 13:37:45 -0800</bug_when>
    <thetext>Created attachment 130434
more stylish 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572116</commentid>
    <comment_count>24</comment_count>
      <attachid>130434</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-03-06 13:40:29 -0800</bug_when>
    <thetext>Comment on attachment 130434
more stylish 2

Thanks Adam for your review.  I am now waiting for a review from beidson before landing this patch.

I&apos;ve updated the comment above the histogram to be more explicit.  My expectation is that I&apos;ll be watching (and sharing) the results of this histogram telemetry carefully over the next few weeks, so updates of the enums can be quick.  But if these become longer term histograms, then the enums become rather slow to be updatable without collision.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572142</commentid>
    <comment_count>25</comment_count>
      <attachid>130434</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-03-06 14:08:48 -0800</bug_when>
    <thetext>Comment on attachment 130434
more stylish 2

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        add Histograms for reporting on PageCache reject reasons

Nit pick - s/add/Add/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572741</commentid>
    <comment_count>26</comment_count>
      <attachid>130584</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-03-07 03:02:01 -0800</bug_when>
    <thetext>Created attachment 130584
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572743</commentid>
    <comment_count>27</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-03-07 03:03:20 -0800</bug_when>
    <thetext>Thanks Brady for the review.  The patch I&apos;ve uploaded fixes the capitalisation, and will go into cq when I get to my desk in a few hours (~9:00am EST).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572758</commentid>
    <comment_count>28</comment_count>
      <attachid>130588</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-03-07 03:32:09 -0800</bug_when>
    <thetext>Created attachment 130588
fix date too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572871</commentid>
    <comment_count>29</comment_count>
      <attachid>130588</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-03-07 07:16:16 -0800</bug_when>
    <thetext>Comment on attachment 130588
fix date too

cq+, i&apos;m in #webkit and on gtalk as gavinp@google.com</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572923</commentid>
    <comment_count>30</comment_count>
      <attachid>130588</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-07 08:52:35 -0800</bug_when>
    <thetext>Comment on attachment 130588
fix date too

Clearing flags on attachment: 130588

Committed r110057: &lt;http://trac.webkit.org/changeset/110057&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572924</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-07 08:52:41 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129949</attachid>
            <date>2012-03-02 13:35:22 -0800</date>
            <delta_ts>2012-03-02 13:37:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80187-20120302163520.patch</filename>
            <type>text/plain</type>
            <size>13899</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTkxOTRmOGVmYjgyNWNi
NjVkMDE0NDhjNTk3Yjk2YTAxY2E2NTFkYS4uOTQ0YzRjMWZhNTBmODJiODhjMWNiMTg4ZGE1NWUz
OTMyYjI4MWEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTAzLTAyICBHYXZp
biBQZXRlcnMgIDxnYXZpbnBAY2hyb21pdW0ub3JnPgorCisgICAgICAgIGFkZCBIaXN0b2dyYW1z
IGZvciByZXBvcnRpbmcgb24gUGFnZUNhY2hlIHJlamVjdCByZWFzb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDE4NworCisgICAgICAgIEVuaGFu
Y2UgdGhlIFBhZ2VDYWNoZSBkZWJ1ZyBtb2RlIHNvIHRoYXQgaXQgdXNlcyBIaXN0b2dyYW1zIHRv
CisgICAgICAgIHJlcG9ydCBvbiBjYXVzZXMgb2YgZmFpbHVyZS4gIFR1cm4gb24gdGhlIGRlYnVn
IHByaW50aW5nIHBhdGgKKyAgICAgICAgZXZlbiBpbiBub24tZGVidWcgQ2hyb21pdW0gYnVpbGRz
LCBzbyB0aGVzZSBoaXN0b2dyYW1zIHdpbGwKKyAgICAgICAgdXBkYXRlLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgZG9lcyBu
b3QgY2hhbmdlIGJlaGF2aW91ci4KKworICAgICAgICAqIGhpc3RvcnkvUGFnZUNhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6bG9nQ2FuQ2FjaGVGcmFtZURl
Y2lzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmxvZ0NhbkNhY2hlUGFnZURlY2lzaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6Y2FuQ2FjaGUpOgorCiAyMDEyLTAzLTAyICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21p
dW1dIFJlbW92ZSBUUkFDRV9FVkVOVCBmcm9tIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVh
ZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKaW5kZXggNjMxNGNjOGExMjc2ODIy
MjFkZTVjZGEzMTNiODI5NTUyNWE4ZWE2Zi4uMzA0MmQ0YzIyODIwYzExNTA0ODU0ZmRhY2I2MWU4
MGRjNmYzNDFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcApAQCAtNDAsNiAr
NDAsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJD
bGllbnQuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlclN0YXRlTWFjaGluZS5oIgorI2luY2x1ZGUg
Ikhpc3RvZ3JhbVN1cHBvcnQuaCIKICNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC01NiwxMSArNTcsMzIgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgZG91YmxlIGF1dG9yZWxlYXNlSW50ZXJ2YWwg
PSAzOwogCi0jaWZuZGVmIE5ERUJVRworI2lmIFBMQVRGT1JNKENIUk9NSVVNKSB8fCAhZGVmaW5l
ZChOREVCVUcpCiAKICNkZWZpbmUgUENMT0coLi4uKSBMT0coUGFnZUNhY2hlLCAiJSpzJXMiLCBp
bmRlbnRMZXZlbCo0LCAiIiwgbWFrZVN0cmluZyhfX1ZBX0FSR1NfXykudXRmOCgpLmRhdGEoKSkK
ICAgICAKLXN0YXRpYyBib29sIGxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lvbihGcmFtZSogZnJhbWUs
IGludCBpbmRlbnRMZXZlbCkKKy8vIFVzZWQgaW4gaGlzdG9ncmFtcywgcGxlYXNlIG9ubHkgYWRk
IGF0IHRoZSBlbmQsIGFuZCBkbyBub3QgcmVtb3ZlIGVsZW1lbnRzLgorZW51bSBGcmFtZVJlamVj
dENhdXNlIHsKKyAgICBub0RvY3VtZW50TG9hZGVyID0gMCwKKyAgICBtYWluRG9jdW1lbnRFcnJv
ciwKKyAgICBpc0Vycm9yUGFnZSwKKyAgICBoYXNQbHVnaW5zLAorICAgIGlzSHR0cHNBbmRDYWNo
ZUNvbnRyb2xsZWQsCisgICAgaGFzVW5sb2FkTGlzdGVuZXIsCisgICAgaGFzRGF0YWJhc2VIYW5k
bGVzLAorICAgIGhhc1NoYXJlZFdvcmtlcnMsCisgICAgdXNpbmdHZW9sb2NhdGlvbiwKKyAgICBu
b0hpc3RvcnlJdGVtLAorICAgIHF1aWNrUmVkaXJlY3RDb21pbmcsCisgICAgaXNMb2FkaW5nSW5B
UElTZW5zZSwKKyAgICBpc1N0b3BwaW5nLAorICAgIGNhblN1c3BlbmRBY3RpdmVET01PYmplY3Rz
LAorICAgIGRvY3VtZW50TG9hZGVyVXNlc0FwcGxpY2F0aW9uQ2FjaGUsCisgICAgY2xpZW50RGVu
aWVzQ2FjaGluZywKKyAgICBmcmFtZVJlamVjdENhdXNlX2NvdW50LAorfTsKKworc3RhdGljIHVu
c2lnbmVkIGxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lvbihGcmFtZSogZnJhbWUsIGludCBpbmRlbnRM
ZXZlbCkKIHsKICAgICAvLyBPbmx5IGJvdGhlciBsb2dnaW5nIGZvciBmcmFtZXMgdGhhdCBoYXZl
IGFjdHVhbGx5IGxvYWRlZCBhbmQgaGF2ZSBjb250ZW50LgogICAgIGlmIChmcmFtZS0+bG9hZGVy
KCktPnN0YXRlTWFjaGluZSgpLT5jcmVhdGluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkpCkBAIC03
Niw5MCArOTgsMTI1IEBAIHN0YXRpYyBib29sIGxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lvbihGcmFt
ZSogZnJhbWUsIGludCBpbmRlbnRMZXZlbCkKICAgICBlbHNlCiAgICAgICAgIFBDTE9HKCIgRGV0
ZXJtaW5pbmcgaWYgc3ViZnJhbWUgd2l0aCBVUkwgKCIsIGN1cnJlbnRVUkwuc3RyaW5nKCksICIp
IGNhbiBiZSBjYWNoZWQ6Iik7CiAgICAgCi0gICAgYm9vbCBjYW5ub3RDYWNoZSA9IGZhbHNlOwor
ICAgIHVuc2lnbmVkIHJlamVjdENhdXNlcyA9IDA7CiAgICAgCiAgICAgaWYgKCFmcmFtZS0+bG9h
ZGVyKCktPmRvY3VtZW50TG9hZGVyKCkpIHsKICAgICAgICAgUENMT0coIiAgIC1UaGVyZSBpcyBu
byBEb2N1bWVudExvYWRlciBvYmplY3QiKTsKLSAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOwor
ICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBub0RvY3VtZW50TG9hZGVyOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIGlmICghZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5tYWlu
RG9jdW1lbnRFcnJvcigpLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLU1haW4g
ZG9jdW1lbnQgaGFzIGFuIGVycm9yIik7Ci0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7
CisgICAgICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBtYWluRG9jdW1lbnRFcnJvcjsKICAg
ICAgICAgfQogICAgICAgICBpZiAoZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5z
dWJzdGl0dXRlRGF0YSgpLmlzVmFsaWQoKSAmJiBmcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9h
ZGVyKCktPnN1YnN0aXR1dGVEYXRhKCkuZmFpbGluZ1VSTCgpLmlzRW1wdHkoKSkgewogICAgICAg
ICAgICAgUENMT0coIiAgIC1GcmFtZSBpcyBhbiBlcnJvciBwYWdlIik7Ci0gICAgICAgICAgICBj
YW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBpc0Vy
cm9yUGFnZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVu
dExvYWRlcigpLT5zdWJzdGl0dXRlRGF0YSgpLmlzVmFsaWQoKSAmJiBmcmFtZS0+bG9hZGVyKCkt
PmRvY3VtZW50TG9hZGVyKCktPnN1YnN0aXR1dGVEYXRhKCkuZmFpbGluZ1VSTCgpLmlzRW1wdHko
KSkgeworICAgICAgICAgICAgUENMT0coIiAgIC1GcmFtZSBpcyBhbiBlcnJvciBwYWdlIik7Cisg
ICAgICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBpc0Vycm9yUGFnZTsKICAgICAgICAgfQog
ICAgICAgICBpZiAoZnJhbWUtPmxvYWRlcigpLT5zdWJmcmFtZUxvYWRlcigpLT5jb250YWluc1Bs
dWdpbnMoKSAmJiAhZnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS0+cGFnZUNhY2hlU3VwcG9ydHNQ
bHVnaW5zKCkpIHsKICAgICAgICAgICAgIFBDTE9HKCIgICAtRnJhbWUgY29udGFpbnMgcGx1Z2lu
cyIpOwotICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAgcmVqZWN0
Q2F1c2VzIHw9IDEgPDwgaGFzUGx1Z2luczsKICAgICAgICAgfQogICAgICAgICBpZiAoZnJhbWUt
PmRvY3VtZW50KCktPnVybCgpLnByb3RvY29sSXMoImh0dHBzIikKICAgICAgICAgICAgICYmIChm
cmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkuY2FjaGVDb250cm9s
Q29udGFpbnNOb0NhY2hlKCkKICAgICAgICAgICAgICAgICB8fCBmcmFtZS0+bG9hZGVyKCktPmRv
Y3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkuY2FjaGVDb250cm9sQ29udGFpbnNOb1N0b3JlKCkp
KSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLUZyYW1lIGlzIEhUVFBTLCBhbmQgY2FjaGUgY29u
dHJvbCBwcm9oaWJpdHMgY2FjaGluZyBvciBzdG9yaW5nIik7Ci0gICAgICAgICAgICBjYW5ub3RD
YWNoZSA9IHRydWU7CisgICAgICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBpc0h0dHBzQW5k
Q2FjaGVDb250cm9sbGVkOwogICAgICAgICB9CiAgICAgICAgIGlmIChmcmFtZS0+ZG9tV2luZG93
KCkgJiYgZnJhbWUtPmRvbVdpbmRvdygpLT5oYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCku
dW5sb2FkRXZlbnQpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLUZyYW1lIGhhcyBhbiB1bmxv
YWQgZXZlbnQgbGlzdGVuZXIiKTsKLSAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAg
ICAgICAgICAgIHJlamVjdENhdXNlcyB8PSAxIDw8IGhhc1VubG9hZExpc3RlbmVyOwogICAgICAg
ICB9CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICAgICAgaWYgKERhdGFiYXNlQ29udGV4
dDo6aGFzT3BlbkRhdGFiYXNlcyhmcmFtZS0+ZG9jdW1lbnQoKSkpIHsKICAgICAgICAgICAgIFBD
TE9HKCIgICAtRnJhbWUgaGFzIG9wZW4gZGF0YWJhc2UgaGFuZGxlcyIpOwotICAgICAgICAgICAg
Y2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAgcmVqZWN0Q2F1c2VzIHw9IDEgPDwgaGFz
RGF0YWJhc2VIYW5kbGVzOwogICAgICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoU0hBUkVEX1dP
UktFUlMpCiAgICAgICAgIGlmIChTaGFyZWRXb3JrZXJSZXBvc2l0b3J5OjpoYXNTaGFyZWRXb3Jr
ZXJzKGZyYW1lLT5kb2N1bWVudCgpKSkgewogICAgICAgICAgICAgUENMT0coIiAgIC1GcmFtZSBo
YXMgYXNzb2NpYXRlZCBTaGFyZWRXb3JrZXJzIik7Ci0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9
IHRydWU7CisgICAgICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBoYXNTaGFyZWRXb3JrZXJz
OwogICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpLT51c2lu
Z0dlb2xvY2F0aW9uKCkpIHsKICAgICAgICAgICAgIFBDTE9HKCIgICAtRnJhbWUgdXNlcyBHZW9s
b2NhdGlvbiIpOwotICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAg
cmVqZWN0Q2F1c2VzIHw9IDEgPDwgdXNpbmdHZW9sb2NhdGlvbjsKICAgICAgICAgfQogICAgICAg
ICBpZiAoIWZyYW1lLT5sb2FkZXIoKS0+aGlzdG9yeSgpLT5jdXJyZW50SXRlbSgpKSB7CiAgICAg
ICAgICAgICBQQ0xPRygiICAgLU5vIGN1cnJlbnQgaGlzdG9yeSBpdGVtIik7Ci0gICAgICAgICAg
ICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBu
b0hpc3RvcnlJdGVtOwogICAgICAgICB9CiAgICAgICAgIGlmIChmcmFtZS0+bG9hZGVyKCktPnF1
aWNrUmVkaXJlY3RDb21pbmcoKSkgewogICAgICAgICAgICAgUENMT0coIiAgIC1RdWljayByZWRp
cmVjdCBpcyBjb21pbmciKTsKLSAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAg
ICAgICAgIHJlamVjdENhdXNlcyB8PSAxIDw8IHF1aWNrUmVkaXJlY3RDb21pbmc7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+aXNMb2Fk
aW5nSW5BUElTZW5zZSgpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLURvY3VtZW50TG9hZGVy
IGlzIHN0aWxsIGxvYWRpbmcgaW4gQVBJIHNlbnNlIik7Ci0gICAgICAgICAgICBjYW5ub3RDYWNo
ZSA9IHRydWU7CisgICAgICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBpc0xvYWRpbmdJbkFQ
SVNlbnNlOwogICAgICAgICB9CiAgICAgICAgIGlmIChmcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50
TG9hZGVyKCktPmlzU3RvcHBpbmcoKSkgewogICAgICAgICAgICAgUENMT0coIiAgIC1Eb2N1bWVu
dExvYWRlciBpcyBpbiB0aGUgbWlkZGxlIG9mIHN0b3BwaW5nIik7Ci0gICAgICAgICAgICBjYW5u
b3RDYWNoZSA9IHRydWU7CisgICAgICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBpc1N0b3Bw
aW5nOwogICAgICAgICB9CiAgICAgICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCktPmNhblN1c3Bl
bmRBY3RpdmVET01PYmplY3RzKCkpIHsKICAgICAgICAgICAgIFBDTE9HKCIgICAtVGhlIGRvY3Vt
ZW50IGNhbm5vdCBzdXNwZWN0IGl0cyBhY3RpdmUgRE9NIE9iamVjdHMiKTsKLSAgICAgICAgICAg
IGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgICAgIHJlamVjdENhdXNlcyB8PSAxIDw8IGNh
blN1c3BlbmRBY3RpdmVET01PYmplY3RzOwogICAgICAgICB9CiAgICAgICAgIGlmICghZnJhbWUt
PmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5jYW5D
YWNoZUluUGFnZUNhY2hlKCkpIHsKICAgICAgICAgICAgIFBDTE9HKCIgICAtVGhlIERvY3VtZW50
TG9hZGVyIHVzZXMgYW4gYXBwbGljYXRpb24gY2FjaGUiKTsKLSAgICAgICAgICAgIGNhbm5vdENh
Y2hlID0gdHJ1ZTsKKyAgICAgICAgICAgIHJlamVjdENhdXNlcyB8PSAxIDw8IGRvY3VtZW50TG9h
ZGVyVXNlc0FwcGxpY2F0aW9uQ2FjaGU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFmcmFtZS0+
bG9hZGVyKCktPmNsaWVudCgpLT5jYW5DYWNoZVBhZ2UoKSkgewogICAgICAgICAgICAgUENMT0co
IiAgIC1UaGUgY2xpZW50IHNheXMgdGhpcyBmcmFtZSBjYW5ub3QgYmUgY2FjaGVkIik7Ci0gICAg
ICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7IAorICAgICAgICAgICAgcmVqZWN0Q2F1c2VzIHw9
IDEgPDwgY2xpZW50RGVuaWVzQ2FjaGluZzsKICAgICAgICAgfQogICAgIH0KLSAgICAKKworICAg
IEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1lcmF0aW9uKCJQYWdlQ2FjaGUuRnJhbWVS
ZWplY3RlZCIsICEhcmVqZWN0Q2F1c2VzLCAyKTsKKyAgICBpbnQgcmVqZWN0Q291bnQgPSAwOwor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZnJhbWVSZWplY3RDYXVzZV9jb3VudDsgKytpKQorICAg
ICAgICBpZiAocmVqZWN0Q2F1c2VzICYgKDEgPDwgaSkpIHsKKyAgICAgICAgICAgICsrcmVqZWN0
Q291bnQ7CisgICAgICAgICAgICBIaXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJhdGlv
bigiUGFnZUNhY2hlLkZyYW1lUmVqZWN0Q2F1c2UiLCBpLCBmcmFtZVJlamVjdENhdXNlX2NvdW50
KTsKKyAgICAgICAgfQorICAgIEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1lcmF0aW9u
KCJQYWdlQ2FjaGUuRnJhbWVSZWplY3RDYXVzZUNvdW50IiwgcmVqZWN0Q291bnQsIDErZnJhbWVS
ZWplY3RDYXVzZV9jb3VudCk7CisKKyAgICBjb25zdCBjaGFyKiBoaXN0b2dyYW1OYW1lc1tdID0g
eyAiUGFnZUNhY2hlLkZyYW1lUmVqZWN0Q2F1c2VTaW5nbGUiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJQYWdlQ2FjaGUuRnJhbWVSZWplY3RDYXVzZURvdWJsZSIgfTsKKyAgICBj
b25zdCBpbnQgaGlzdG9ncmFtQ291bnQgPSBzaXplb2YoaGlzdG9ncmFtTmFtZXMpIC8gc2l6ZW9m
KGNoYXIqKTsKKyAgICBpZiAocmVqZWN0Q291bnQgPiAxICYmIHJlamVjdENvdW50IDw9IGhpc3Rv
Z3JhbUNvdW50KSB7CisgICAgICAgIGNvbnN0IGNoYXIqIGhpc3RvZ3JhbSA9IGhpc3RvZ3JhbU5h
bWVzW3JlamVjdENvdW50LTFdOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZyYW1lUmVq
ZWN0Q2F1c2VfY291bnQ7ICsraSkKKyAgICAgICAgICAgIGlmIChyZWplY3RDYXVzZXMgJiAoMSA8
PCBpKSkKKyAgICAgICAgICAgICAgICBIaXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJh
dGlvbihoaXN0b2dyYW0sIGksIGZyYW1lUmVqZWN0Q2F1c2VfY291bnQpOworICAgIH0KKwogICAg
IGZvciAoRnJhbWUqIGNoaWxkID0gZnJhbWUtPnRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsg
Y2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2libGluZygpKQotICAgICAgICBpZiAoIWxvZ0Nh
bkNhY2hlRnJhbWVEZWNpc2lvbihjaGlsZCwgaW5kZW50TGV2ZWwgKyAxKSkKLSAgICAgICAgICAg
IGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgcmVqZWN0Q2F1c2VzIHw9IGxvZ0NhbkNhY2hl
RnJhbWVEZWNpc2lvbihjaGlsZCwgaW5kZW50TGV2ZWwgKyAxKTsKICAgICAKLSAgICBQQ0xPRyhj
YW5ub3RDYWNoZSA/ICIgRnJhbWUgQ0FOTk9UIGJlIGNhY2hlZCIgOiAiIEZyYW1lIENBTiBiZSBj
YWNoZWQiKTsKKyAgICBQQ0xPRyhyZWplY3RDYXVzZXMgPyAiIEZyYW1lIENBTk5PVCBiZSBjYWNo
ZWQiIDogIiBGcmFtZSBDQU4gYmUgY2FjaGVkIik7CiAgICAgUENMT0coIistLS0iKTsKICAgICAK
LSAgICByZXR1cm4gIWNhbm5vdENhY2hlOworICAgIHJldHVybiByZWplY3RDYXVzZXM7CiB9Ci0g
ICAgCisKKy8vIFVzZWQgaW4gaGlzdG9ncmFtcywgcGxlYXNlIG9ubHkgYWRkIGF0IHRoZSBlbmQs
IGFuZCBkbyBub3QgcmVtb3ZlIGVsZW1lbnRzLgorZW51bSBQYWdlUmVqZWN0Q2F1c2UgeworICAg
IGZyYW1lUmVqZWN0ZWQgPSAwLAorICAgIGRpc2FibGVkQmFja0ZvcndhcmRMaXN0LAorICAgIGRp
c2FibGVkUGFnZUNhY2hlLAorICAgIHVzZXNEZXZpY2VNb3Rpb24sCisgICAgdXNlc0RldmljZU9y
aWVudGF0aW9uLAorICAgIGlzUmVsb2FkLAorICAgIGlzUmVsb2FkRnJvbU9yaWdpbiwKKyAgICBp
c1NhbWVMb2FkLAorICAgIHBhZ2VSZWplY3RDYXVzZV9jb3VudCwKK307CisKIHN0YXRpYyB2b2lk
IGxvZ0NhbkNhY2hlUGFnZURlY2lzaW9uKFBhZ2UqIHBhZ2UpCiB7CiAgICAgLy8gT25seSBib3Ro
ZXIgbG9nZ2luZyBmb3IgbWFpbiBmcmFtZXMgdGhhdCBoYXZlIGFjdHVhbGx5IGxvYWRlZCBhbmQg
aGF2ZSBjb250ZW50LgpAQCAtMTcyLDQxICsyMjksODQgQEAgc3RhdGljIHZvaWQgbG9nQ2FuQ2Fj
aGVQYWdlRGVjaXNpb24oUGFnZSogcGFnZSkKICAgICBpbnQgaW5kZW50TGV2ZWwgPSAwOyAgICAK
ICAgICBQQ0xPRygiLS0tLS0tLS1cbiBEZXRlcm1pbmluZyBpZiBwYWdlIGNhbiBiZSBjYWNoZWQ6
Iik7CiAgICAgCi0gICAgYm9vbCBjYW5ub3RDYWNoZSA9ICFsb2dDYW5DYWNoZUZyYW1lRGVjaXNp
b24ocGFnZS0+bWFpbkZyYW1lKCksIDEpOworICAgIHVuc2lnbmVkIHJlamVjdENhdXNlcyA9IDA7
CisgICAgdW5zaWduZWQgZnJhbWVSZWplY3RDYXVzZXMgPSBsb2dDYW5DYWNoZUZyYW1lRGVjaXNp
b24ocGFnZS0+bWFpbkZyYW1lKCksIDEpOworICAgIGlmIChmcmFtZVJlamVjdENhdXNlcykKKyAg
ICAgICAgcmVqZWN0Q2F1c2VzIHw9IDEgPDwgZnJhbWVSZWplY3RlZDsKICAgICAKICAgICBpZiAo
IXBhZ2UtPmJhY2tGb3J3YXJkKCktPmlzQWN0aXZlKCkpIHsKICAgICAgICAgUENMT0coIiAgIC1U
aGUgYmFjay9mb3J3YXJkIGxpc3QgaXMgZGlzYWJsZWQgb3IgaGFzIDAgY2FwYWNpdHkiKTsKLSAg
ICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBk
aXNhYmxlZEJhY2tGb3J3YXJkTGlzdDsKICAgICB9CiAgICAgaWYgKCFwYWdlLT5zZXR0aW5ncygp
LT51c2VzUGFnZUNhY2hlKCkpIHsKICAgICAgICAgUENMT0coIiAgIC1QYWdlIHNldHRpbmdzIHNh
eXMgYi9mIGNhY2hlIGRpc2FibGVkIik7Ci0gICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAg
ICAgICAgcmVqZWN0Q2F1c2VzIHw9IDEgPDwgZGlzYWJsZWRQYWdlQ2FjaGU7CiAgICAgfQogI2lm
IEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCiAgICAgaWYgKERldmljZU1vdGlvbkNvbnRyb2xs
ZXI6OmlzQWN0aXZlQXQocGFnZSkpIHsKICAgICAgICAgUENMT0coIiAgIC1QYWdlIGlzIHVzaW5n
IERldmljZU1vdGlvbiIpOwotICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgIHJl
amVjdENhdXNlcyB8PSAxIDw8IHVzZXNEZXZpY2VNb3Rpb247CiAgICAgfQogICAgIGlmIChEZXZp
Y2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OmlzQWN0aXZlQXQocGFnZSkpIHsKICAgICAgICAgUENM
T0coIiAgIC1QYWdlIGlzIHVzaW5nIERldmljZU9yaWVudGF0aW9uIik7Ci0gICAgICAgIGNhbm5v
dENhY2hlID0gdHJ1ZTsKKyAgICAgICAgcmVqZWN0Q2F1c2VzIHw9IDEgPDwgdXNlc0RldmljZU9y
aWVudGF0aW9uOwogICAgIH0KICNlbmRpZgogICAgIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUgPSBw
YWdlLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPmxvYWRUeXBlKCk7CiAgICAgaWYgKGxvYWRUeXBl
ID09IEZyYW1lTG9hZFR5cGVSZWxvYWQpIHsKICAgICAgICAgUENMT0coIiAgIC1Mb2FkIHR5cGUg
aXM6IFJlbG9hZCIpOwotICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgIHJlamVj
dENhdXNlcyB8PSAxIDw8IGlzUmVsb2FkOwogICAgIH0KICAgICBpZiAobG9hZFR5cGUgPT0gRnJh
bWVMb2FkVHlwZVJlbG9hZEZyb21PcmlnaW4pIHsKICAgICAgICAgUENMT0coIiAgIC1Mb2FkIHR5
cGUgaXM6IFJlbG9hZCBmcm9tIG9yaWdpbiIpOwotICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7
CisgICAgICAgIHJlamVjdENhdXNlcyB8PSAxIDw8IGlzUmVsb2FkRnJvbU9yaWdpbjsKICAgICB9
CiAgICAgaWYgKGxvYWRUeXBlID09IEZyYW1lTG9hZFR5cGVTYW1lKSB7CiAgICAgICAgIFBDTE9H
KCIgICAtTG9hZCB0eXBlIGlzOiBTYW1lIik7Ci0gICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsK
KyAgICAgICAgcmVqZWN0Q2F1c2VzIHw9IDEgPDwgaXNTYW1lTG9hZDsKICAgICB9CiAgICAgCi0g
ICAgUENMT0coY2Fubm90Q2FjaGUgPyAiIFBhZ2UgQ0FOTk9UIGJlIGNhY2hlZFxuLS0tLS0tLS0i
IDogIiBQYWdlIENBTiBiZSBjYWNoZWRcbi0tLS0tLS0tIik7CisgICAgUENMT0cocmVqZWN0Q2F1
c2VzID8gIiBQYWdlIENBTk5PVCBiZSBjYWNoZWRcbi0tLS0tLS0tIiA6ICIgUGFnZSBDQU4gYmUg
Y2FjaGVkXG4tLS0tLS0tLSIpOworCisgICAgSGlzdG9ncmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51
bWVyYXRpb24oIlBhZ2VDYWNoZS5QYWdlUmVqZWN0ZWQiLCAhIXJlamVjdENhdXNlcywgMik7Cisg
ICAgaW50IHJlamVjdENvdW50ID0gMDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHBhZ2VSZWpl
Y3RDYXVzZV9jb3VudDsgKytpKQorICAgICAgICBpZiAocmVqZWN0Q2F1c2VzICYgKDEgPDwgaSkp
IHsKKyAgICAgICAgICAgICsrcmVqZWN0Q291bnQ7CisgICAgICAgICAgICBIaXN0b2dyYW1TdXBw
b3J0OjpoaXN0b2dyYW1FbnVtZXJhdGlvbigiUGFnZUNhY2hlLlBhZ2VSZWplY3RDYXVzZSIsIGks
IHBhZ2VSZWplY3RDYXVzZV9jb3VudCk7CisgICAgICAgIH0KKyAgICBIaXN0b2dyYW1TdXBwb3J0
OjpoaXN0b2dyYW1FbnVtZXJhdGlvbigiUGFnZUNhY2hlLlBhZ2VSZWplY3RDYXVzZUNvdW50Iiwg
cmVqZWN0Q291bnQsIDErcGFnZVJlamVjdENhdXNlX2NvdW50KTsKKyAgICBjb25zdCBjaGFyKiBo
aXN0b2dyYW1OYW1lc1tdID0geyAiUGFnZUNhY2hlLlBhZ2VSZWplY3RDYXVzZVNpbmdsZSIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBhZ2VDYWNoZS5QYWdlUmVqZWN0
Q2F1c2VEb3VibGUiIH07CisgICAgY29uc3QgaW50IGhpc3RvZ3JhbUNvdW50ID0gc2l6ZW9mKGhp
c3RvZ3JhbU5hbWVzKSAvIHNpemVvZihjaGFyKik7CisgICAgaWYgKHJlamVjdENvdW50ID4gMSAm
JiByZWplY3RDb3VudCA8PSBoaXN0b2dyYW1Db3VudCkgeworICAgICAgICBjb25zdCBjaGFyKiBo
aXN0b2dyYW0gPSBoaXN0b2dyYW1OYW1lc1tyZWplY3RDb3VudC0xXTsKKyAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBmcmFtZVJlamVjdENhdXNlX2NvdW50OyArK2kpCisgICAgICAgICAgICBp
ZiAocmVqZWN0Q2F1c2VzICYgKDEgPDwgaSkpCisgICAgICAgICAgICAgICAgSGlzdG9ncmFtU3Vw
cG9ydDo6aGlzdG9ncmFtRW51bWVyYXRpb24oaGlzdG9ncmFtLCBpLCBmcmFtZVJlamVjdENhdXNl
X2NvdW50KTsKKyAgICB9CisKKyAgICAvLyBSZXBvcnQgZm9yIGFsbCBzdWJmcmFtZXMgcGVyIHBh
Z2UgYXMgd2VsbC4KKyAgICBpZiAoZnJhbWVSZWplY3RDYXVzZXMpIHsKKyAgICAgICAgSGlzdG9n
cmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51bWVyYXRpb24oIlBhZ2VDYWNoZS5QYWdlRnJhbWVzUmVq
ZWN0ZWQiLCAhIWZyYW1lUmVqZWN0Q2F1c2VzLCAyKTsKKyAgICAgICAgaW50IGZyYW1lUmVqZWN0
Q291bnQgPSAwOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8PSBmcmFtZVJlamVjdENhdXNl
X2NvdW50OyArK2kpCisgICAgICAgICAgICBpZiAoZnJhbWVSZWplY3RDYXVzZXMgJiAoMSA8PCBp
KSkgeworICAgICAgICAgICAgICAgICsrZnJhbWVSZWplY3RDb3VudDsKKyAgICAgICAgICAgICAg
ICBIaXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJhdGlvbigiUGFnZUNhY2hlLlBhZ2VG
cmFtZXNSZWplY3RDYXVzZSIsIGksIGZyYW1lUmVqZWN0Q2F1c2VfY291bnQpOworICAgICAgICAg
ICAgfQorICAgICAgICBIaXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJhdGlvbigiUGFn
ZUNhY2hlLlBhZ2VGcmFtZXNSZWplY3RDYXVzZUNvdW50IiwgZnJhbWVSZWplY3RDb3VudCwgMStm
cmFtZVJlamVjdENhdXNlX2NvdW50KTsKKworICAgICAgICBjb25zdCBjaGFyKiBmcmFtZUhpc3Rv
Z3JhbU5hbWVzW10gPSB7ICJQYWdlQ2FjaGUuUGFnZUZyYW1lc1JlamVjdENhdXNlU2luZ2xlIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGFnZUNhY2hl
LlBhZ2VGcmFtZXNSZWplY3RDYXVzZURvdWJsZSIgfTsKKyAgICAgICAgY29uc3QgaW50IGZyYW1l
SGlzdG9ncmFtQ291bnQgPSBzaXplb2YoZnJhbWVIaXN0b2dyYW1OYW1lcykgLyBzaXplb2YoY2hh
ciopOworICAgICAgICBpZiAoZnJhbWVSZWplY3RDb3VudCA+IDEgJiYgZnJhbWVSZWplY3RDb3Vu
dCA8IGZyYW1lSGlzdG9ncmFtQ291bnQpIHsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIGhpc3Rv
Z3JhbSA9IGZyYW1lSGlzdG9ncmFtTmFtZXNbZnJhbWVSZWplY3RDb3VudC0xXTsKKyAgICAgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZnJhbWVSZWplY3RDYXVzZV9jb3VudDsgKytpKQorICAg
ICAgICAgICAgICAgIGlmIChmcmFtZVJlamVjdENhdXNlcyAmICgxIDw8IGkpKQorICAgICAgICAg
ICAgICAgICAgICBIaXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJhdGlvbihoaXN0b2dy
YW0sIGksIGZyYW1lUmVqZWN0Q2F1c2VfY291bnQpOworICAgICAgICB9CisgICAgfQogfQogCiAj
ZW5kaWYgCkBAIC0yNzAsNyArMzcwLDcgQEAgYm9vbCBQYWdlQ2FjaGU6OmNhbkNhY2hlKFBhZ2Uq
IHBhZ2UpCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0jaWZu
ZGVmIE5ERUJVRworI2lmIFBMQVRGT1JNKENIUk9NSVVNKSB8fCAhZGVmaW5lZChOREVCVUcpCiAg
ICAgbG9nQ2FuQ2FjaGVQYWdlRGVjaXNpb24ocGFnZSk7CiAjZW5kaWYKICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129950</attachid>
            <date>2012-03-02 13:37:21 -0800</date>
            <delta_ts>2012-03-02 14:54:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80187-20120302163719.patch</filename>
            <type>text/plain</type>
            <size>13905</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTkxOTRmOGVmYjgyNWNi
NjVkMDE0NDhjNTk3Yjk2YTAxY2E2NTFkYS4uOTQ0YzRjMWZhNTBmODJiODhjMWNiMTg4ZGE1NWUz
OTMyYjI4MWEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTAzLTAyICBHYXZp
biBQZXRlcnMgIDxnYXZpbnBAY2hyb21pdW0ub3JnPgorCisgICAgICAgIGFkZCBIaXN0b2dyYW1z
IGZvciByZXBvcnRpbmcgb24gUGFnZUNhY2hlIHJlamVjdCByZWFzb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDE4NworCisgICAgICAgIEVuaGFu
Y2UgdGhlIFBhZ2VDYWNoZSBkZWJ1ZyBtb2RlIHNvIHRoYXQgaXQgdXNlcyBIaXN0b2dyYW1zIHRv
CisgICAgICAgIHJlcG9ydCBvbiBjYXVzZXMgb2YgZmFpbHVyZS4gIFR1cm4gb24gdGhlIGRlYnVn
IHByaW50aW5nIHBhdGgKKyAgICAgICAgZXZlbiBpbiBub24tZGVidWcgQ2hyb21pdW0gYnVpbGRz
LCBzbyB0aGVzZSBoaXN0b2dyYW1zIHdpbGwKKyAgICAgICAgdXBkYXRlLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgZG9lcyBu
b3QgY2hhbmdlIGJlaGF2aW91ci4KKworICAgICAgICAqIGhpc3RvcnkvUGFnZUNhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6bG9nQ2FuQ2FjaGVGcmFtZURl
Y2lzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmxvZ0NhbkNhY2hlUGFnZURlY2lzaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6Y2FuQ2FjaGUpOgorCiAyMDEyLTAzLTAyICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21p
dW1dIFJlbW92ZSBUUkFDRV9FVkVOVCBmcm9tIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVh
ZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKaW5kZXggNjMxNGNjOGExMjc2ODIy
MjFkZTVjZGEzMTNiODI5NTUyNWE4ZWE2Zi4uZTc1MGU2MDVkNzYwMzc5ODE0MTQ4OTliZDdjOGE0
YWFjMDk1OThmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcApAQCAtNDAsNiAr
NDAsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJD
bGllbnQuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlclN0YXRlTWFjaGluZS5oIgorI2luY2x1ZGUg
Ikhpc3RvZ3JhbVN1cHBvcnQuaCIKICNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC01NiwxMSArNTcsMzIgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgZG91YmxlIGF1dG9yZWxlYXNlSW50ZXJ2YWwg
PSAzOwogCi0jaWZuZGVmIE5ERUJVRworI2lmIFBMQVRGT1JNKENIUk9NSVVNKSB8fCAhZGVmaW5l
ZChOREVCVUcpCiAKICNkZWZpbmUgUENMT0coLi4uKSBMT0coUGFnZUNhY2hlLCAiJSpzJXMiLCBp
bmRlbnRMZXZlbCo0LCAiIiwgbWFrZVN0cmluZyhfX1ZBX0FSR1NfXykudXRmOCgpLmRhdGEoKSkK
ICAgICAKLXN0YXRpYyBib29sIGxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lvbihGcmFtZSogZnJhbWUs
IGludCBpbmRlbnRMZXZlbCkKKy8vIFVzZWQgaW4gaGlzdG9ncmFtcywgcGxlYXNlIG9ubHkgYWRk
IGF0IHRoZSBlbmQsIGFuZCBkbyBub3QgcmVtb3ZlIGVsZW1lbnRzLgorZW51bSBGcmFtZVJlamVj
dENhdXNlIHsKKyAgICBub0RvY3VtZW50TG9hZGVyID0gMCwKKyAgICBtYWluRG9jdW1lbnRFcnJv
ciwKKyAgICBpc0Vycm9yUGFnZSwKKyAgICBoYXNQbHVnaW5zLAorICAgIGlzSHR0cHNBbmRDYWNo
ZUNvbnRyb2xsZWQsCisgICAgaGFzVW5sb2FkTGlzdGVuZXIsCisgICAgaGFzRGF0YWJhc2VIYW5k
bGVzLAorICAgIGhhc1NoYXJlZFdvcmtlcnMsCisgICAgdXNpbmdHZW9sb2NhdGlvbiwKKyAgICBu
b0hpc3RvcnlJdGVtLAorICAgIHF1aWNrUmVkaXJlY3RDb21pbmcsCisgICAgaXNMb2FkaW5nSW5B
UElTZW5zZSwKKyAgICBpc1N0b3BwaW5nLAorICAgIGNhblN1c3BlbmRBY3RpdmVET01PYmplY3Rz
LAorICAgIGRvY3VtZW50TG9hZGVyVXNlc0FwcGxpY2F0aW9uQ2FjaGUsCisgICAgY2xpZW50RGVu
aWVzQ2FjaGluZywKKyAgICBmcmFtZVJlamVjdENhdXNlX2NvdW50LAorfTsKKworc3RhdGljIHVu
c2lnbmVkIGxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lvbihGcmFtZSogZnJhbWUsIGludCBpbmRlbnRM
ZXZlbCkKIHsKICAgICAvLyBPbmx5IGJvdGhlciBsb2dnaW5nIGZvciBmcmFtZXMgdGhhdCBoYXZl
IGFjdHVhbGx5IGxvYWRlZCBhbmQgaGF2ZSBjb250ZW50LgogICAgIGlmIChmcmFtZS0+bG9hZGVy
KCktPnN0YXRlTWFjaGluZSgpLT5jcmVhdGluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkpCkBAIC03
Niw5MCArOTgsMTI1IEBAIHN0YXRpYyBib29sIGxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lvbihGcmFt
ZSogZnJhbWUsIGludCBpbmRlbnRMZXZlbCkKICAgICBlbHNlCiAgICAgICAgIFBDTE9HKCIgRGV0
ZXJtaW5pbmcgaWYgc3ViZnJhbWUgd2l0aCBVUkwgKCIsIGN1cnJlbnRVUkwuc3RyaW5nKCksICIp
IGNhbiBiZSBjYWNoZWQ6Iik7CiAgICAgCi0gICAgYm9vbCBjYW5ub3RDYWNoZSA9IGZhbHNlOwor
ICAgIHVuc2lnbmVkIHJlamVjdENhdXNlcyA9IDA7CiAgICAgCiAgICAgaWYgKCFmcmFtZS0+bG9h
ZGVyKCktPmRvY3VtZW50TG9hZGVyKCkpIHsKICAgICAgICAgUENMT0coIiAgIC1UaGVyZSBpcyBu
byBEb2N1bWVudExvYWRlciBvYmplY3QiKTsKLSAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOwor
ICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBub0RvY3VtZW50TG9hZGVyOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIGlmICghZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5tYWlu
RG9jdW1lbnRFcnJvcigpLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLU1haW4g
ZG9jdW1lbnQgaGFzIGFuIGVycm9yIik7Ci0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7
CisgICAgICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBtYWluRG9jdW1lbnRFcnJvcjsKICAg
ICAgICAgfQogICAgICAgICBpZiAoZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5z
dWJzdGl0dXRlRGF0YSgpLmlzVmFsaWQoKSAmJiBmcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9h
ZGVyKCktPnN1YnN0aXR1dGVEYXRhKCkuZmFpbGluZ1VSTCgpLmlzRW1wdHkoKSkgewogICAgICAg
ICAgICAgUENMT0coIiAgIC1GcmFtZSBpcyBhbiBlcnJvciBwYWdlIik7Ci0gICAgICAgICAgICBj
YW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBpc0Vy
cm9yUGFnZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVu
dExvYWRlcigpLT5zdWJzdGl0dXRlRGF0YSgpLmlzVmFsaWQoKSAmJiBmcmFtZS0+bG9hZGVyKCkt
PmRvY3VtZW50TG9hZGVyKCktPnN1YnN0aXR1dGVEYXRhKCkuZmFpbGluZ1VSTCgpLmlzRW1wdHko
KSkgeworICAgICAgICAgICAgUENMT0coIiAgIC1GcmFtZSBpcyBhbiBlcnJvciBwYWdlIik7Cisg
ICAgICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBpc0Vycm9yUGFnZTsKICAgICAgICAgfQog
ICAgICAgICBpZiAoZnJhbWUtPmxvYWRlcigpLT5zdWJmcmFtZUxvYWRlcigpLT5jb250YWluc1Bs
dWdpbnMoKSAmJiAhZnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS0+cGFnZUNhY2hlU3VwcG9ydHNQ
bHVnaW5zKCkpIHsKICAgICAgICAgICAgIFBDTE9HKCIgICAtRnJhbWUgY29udGFpbnMgcGx1Z2lu
cyIpOwotICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAgcmVqZWN0
Q2F1c2VzIHw9IDEgPDwgaGFzUGx1Z2luczsKICAgICAgICAgfQogICAgICAgICBpZiAoZnJhbWUt
PmRvY3VtZW50KCktPnVybCgpLnByb3RvY29sSXMoImh0dHBzIikKICAgICAgICAgICAgICYmIChm
cmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkuY2FjaGVDb250cm9s
Q29udGFpbnNOb0NhY2hlKCkKICAgICAgICAgICAgICAgICB8fCBmcmFtZS0+bG9hZGVyKCktPmRv
Y3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkuY2FjaGVDb250cm9sQ29udGFpbnNOb1N0b3JlKCkp
KSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLUZyYW1lIGlzIEhUVFBTLCBhbmQgY2FjaGUgY29u
dHJvbCBwcm9oaWJpdHMgY2FjaGluZyBvciBzdG9yaW5nIik7Ci0gICAgICAgICAgICBjYW5ub3RD
YWNoZSA9IHRydWU7CisgICAgICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBpc0h0dHBzQW5k
Q2FjaGVDb250cm9sbGVkOwogICAgICAgICB9CiAgICAgICAgIGlmIChmcmFtZS0+ZG9tV2luZG93
KCkgJiYgZnJhbWUtPmRvbVdpbmRvdygpLT5oYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCku
dW5sb2FkRXZlbnQpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLUZyYW1lIGhhcyBhbiB1bmxv
YWQgZXZlbnQgbGlzdGVuZXIiKTsKLSAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAg
ICAgICAgICAgIHJlamVjdENhdXNlcyB8PSAxIDw8IGhhc1VubG9hZExpc3RlbmVyOwogICAgICAg
ICB9CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICAgICAgaWYgKERhdGFiYXNlQ29udGV4
dDo6aGFzT3BlbkRhdGFiYXNlcyhmcmFtZS0+ZG9jdW1lbnQoKSkpIHsKICAgICAgICAgICAgIFBD
TE9HKCIgICAtRnJhbWUgaGFzIG9wZW4gZGF0YWJhc2UgaGFuZGxlcyIpOwotICAgICAgICAgICAg
Y2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAgcmVqZWN0Q2F1c2VzIHw9IDEgPDwgaGFz
RGF0YWJhc2VIYW5kbGVzOwogICAgICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoU0hBUkVEX1dP
UktFUlMpCiAgICAgICAgIGlmIChTaGFyZWRXb3JrZXJSZXBvc2l0b3J5OjpoYXNTaGFyZWRXb3Jr
ZXJzKGZyYW1lLT5kb2N1bWVudCgpKSkgewogICAgICAgICAgICAgUENMT0coIiAgIC1GcmFtZSBo
YXMgYXNzb2NpYXRlZCBTaGFyZWRXb3JrZXJzIik7Ci0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9
IHRydWU7CisgICAgICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBoYXNTaGFyZWRXb3JrZXJz
OwogICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpLT51c2lu
Z0dlb2xvY2F0aW9uKCkpIHsKICAgICAgICAgICAgIFBDTE9HKCIgICAtRnJhbWUgdXNlcyBHZW9s
b2NhdGlvbiIpOwotICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAg
cmVqZWN0Q2F1c2VzIHw9IDEgPDwgdXNpbmdHZW9sb2NhdGlvbjsKICAgICAgICAgfQogICAgICAg
ICBpZiAoIWZyYW1lLT5sb2FkZXIoKS0+aGlzdG9yeSgpLT5jdXJyZW50SXRlbSgpKSB7CiAgICAg
ICAgICAgICBQQ0xPRygiICAgLU5vIGN1cnJlbnQgaGlzdG9yeSBpdGVtIik7Ci0gICAgICAgICAg
ICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBu
b0hpc3RvcnlJdGVtOwogICAgICAgICB9CiAgICAgICAgIGlmIChmcmFtZS0+bG9hZGVyKCktPnF1
aWNrUmVkaXJlY3RDb21pbmcoKSkgewogICAgICAgICAgICAgUENMT0coIiAgIC1RdWljayByZWRp
cmVjdCBpcyBjb21pbmciKTsKLSAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAg
ICAgICAgIHJlamVjdENhdXNlcyB8PSAxIDw8IHF1aWNrUmVkaXJlY3RDb21pbmc7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+aXNMb2Fk
aW5nSW5BUElTZW5zZSgpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLURvY3VtZW50TG9hZGVy
IGlzIHN0aWxsIGxvYWRpbmcgaW4gQVBJIHNlbnNlIik7Ci0gICAgICAgICAgICBjYW5ub3RDYWNo
ZSA9IHRydWU7CisgICAgICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBpc0xvYWRpbmdJbkFQ
SVNlbnNlOwogICAgICAgICB9CiAgICAgICAgIGlmIChmcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50
TG9hZGVyKCktPmlzU3RvcHBpbmcoKSkgewogICAgICAgICAgICAgUENMT0coIiAgIC1Eb2N1bWVu
dExvYWRlciBpcyBpbiB0aGUgbWlkZGxlIG9mIHN0b3BwaW5nIik7Ci0gICAgICAgICAgICBjYW5u
b3RDYWNoZSA9IHRydWU7CisgICAgICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBpc1N0b3Bw
aW5nOwogICAgICAgICB9CiAgICAgICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCktPmNhblN1c3Bl
bmRBY3RpdmVET01PYmplY3RzKCkpIHsKICAgICAgICAgICAgIFBDTE9HKCIgICAtVGhlIGRvY3Vt
ZW50IGNhbm5vdCBzdXNwZWN0IGl0cyBhY3RpdmUgRE9NIE9iamVjdHMiKTsKLSAgICAgICAgICAg
IGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgICAgIHJlamVjdENhdXNlcyB8PSAxIDw8IGNh
blN1c3BlbmRBY3RpdmVET01PYmplY3RzOwogICAgICAgICB9CiAgICAgICAgIGlmICghZnJhbWUt
PmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5jYW5D
YWNoZUluUGFnZUNhY2hlKCkpIHsKICAgICAgICAgICAgIFBDTE9HKCIgICAtVGhlIERvY3VtZW50
TG9hZGVyIHVzZXMgYW4gYXBwbGljYXRpb24gY2FjaGUiKTsKLSAgICAgICAgICAgIGNhbm5vdENh
Y2hlID0gdHJ1ZTsKKyAgICAgICAgICAgIHJlamVjdENhdXNlcyB8PSAxIDw8IGRvY3VtZW50TG9h
ZGVyVXNlc0FwcGxpY2F0aW9uQ2FjaGU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFmcmFtZS0+
bG9hZGVyKCktPmNsaWVudCgpLT5jYW5DYWNoZVBhZ2UoKSkgewogICAgICAgICAgICAgUENMT0co
IiAgIC1UaGUgY2xpZW50IHNheXMgdGhpcyBmcmFtZSBjYW5ub3QgYmUgY2FjaGVkIik7Ci0gICAg
ICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7IAorICAgICAgICAgICAgcmVqZWN0Q2F1c2VzIHw9
IDEgPDwgY2xpZW50RGVuaWVzQ2FjaGluZzsKICAgICAgICAgfQogICAgIH0KLSAgICAKKworICAg
IEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1lcmF0aW9uKCJQYWdlQ2FjaGUuRnJhbWVS
ZWplY3RlZCIsICEhcmVqZWN0Q2F1c2VzLCAyKTsKKyAgICBpbnQgcmVqZWN0Q291bnQgPSAwOwor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZnJhbWVSZWplY3RDYXVzZV9jb3VudDsgKytpKQorICAg
ICAgICBpZiAocmVqZWN0Q2F1c2VzICYgKDEgPDwgaSkpIHsKKyAgICAgICAgICAgICsrcmVqZWN0
Q291bnQ7CisgICAgICAgICAgICBIaXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJhdGlv
bigiUGFnZUNhY2hlLkZyYW1lUmVqZWN0Q2F1c2UiLCBpLCBmcmFtZVJlamVjdENhdXNlX2NvdW50
KTsKKyAgICAgICAgfQorICAgIEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1lcmF0aW9u
KCJQYWdlQ2FjaGUuRnJhbWVSZWplY3RDYXVzZUNvdW50IiwgcmVqZWN0Q291bnQsIDErZnJhbWVS
ZWplY3RDYXVzZV9jb3VudCk7CisKKyAgICBjb25zdCBjaGFyKiBoaXN0b2dyYW1OYW1lc1tdID0g
eyAiUGFnZUNhY2hlLkZyYW1lUmVqZWN0Q2F1c2VTaW5nbGUiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJQYWdlQ2FjaGUuRnJhbWVSZWplY3RDYXVzZURvdWJsZSIgfTsK
KyAgICBjb25zdCBpbnQgaGlzdG9ncmFtQ291bnQgPSBzaXplb2YoaGlzdG9ncmFtTmFtZXMpIC8g
c2l6ZW9mKGNoYXIqKTsKKyAgICBpZiAocmVqZWN0Q291bnQgPiAxICYmIHJlamVjdENvdW50IDw9
IGhpc3RvZ3JhbUNvdW50KSB7CisgICAgICAgIGNvbnN0IGNoYXIqIGhpc3RvZ3JhbSA9IGhpc3Rv
Z3JhbU5hbWVzW3JlamVjdENvdW50LTFdOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZy
YW1lUmVqZWN0Q2F1c2VfY291bnQ7ICsraSkKKyAgICAgICAgICAgIGlmIChyZWplY3RDYXVzZXMg
JiAoMSA8PCBpKSkKKyAgICAgICAgICAgICAgICBIaXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1F
bnVtZXJhdGlvbihoaXN0b2dyYW0sIGksIGZyYW1lUmVqZWN0Q2F1c2VfY291bnQpOworICAgIH0K
KwogICAgIGZvciAoRnJhbWUqIGNoaWxkID0gZnJhbWUtPnRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBj
aGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2libGluZygpKQotICAgICAgICBpZiAo
IWxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lvbihjaGlsZCwgaW5kZW50TGV2ZWwgKyAxKSkKLSAgICAg
ICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgcmVqZWN0Q2F1c2VzIHw9IGxvZ0Nh
bkNhY2hlRnJhbWVEZWNpc2lvbihjaGlsZCwgaW5kZW50TGV2ZWwgKyAxKTsKICAgICAKLSAgICBQ
Q0xPRyhjYW5ub3RDYWNoZSA/ICIgRnJhbWUgQ0FOTk9UIGJlIGNhY2hlZCIgOiAiIEZyYW1lIENB
TiBiZSBjYWNoZWQiKTsKKyAgICBQQ0xPRyhyZWplY3RDYXVzZXMgPyAiIEZyYW1lIENBTk5PVCBi
ZSBjYWNoZWQiIDogIiBGcmFtZSBDQU4gYmUgY2FjaGVkIik7CiAgICAgUENMT0coIistLS0iKTsK
ICAgICAKLSAgICByZXR1cm4gIWNhbm5vdENhY2hlOworICAgIHJldHVybiByZWplY3RDYXVzZXM7
CiB9Ci0gICAgCisKKy8vIFVzZWQgaW4gaGlzdG9ncmFtcywgcGxlYXNlIG9ubHkgYWRkIGF0IHRo
ZSBlbmQsIGFuZCBkbyBub3QgcmVtb3ZlIGVsZW1lbnRzLgorZW51bSBQYWdlUmVqZWN0Q2F1c2Ug
eworICAgIGZyYW1lUmVqZWN0ZWQgPSAwLAorICAgIGRpc2FibGVkQmFja0ZvcndhcmRMaXN0LAor
ICAgIGRpc2FibGVkUGFnZUNhY2hlLAorICAgIHVzZXNEZXZpY2VNb3Rpb24sCisgICAgdXNlc0Rl
dmljZU9yaWVudGF0aW9uLAorICAgIGlzUmVsb2FkLAorICAgIGlzUmVsb2FkRnJvbU9yaWdpbiwK
KyAgICBpc1NhbWVMb2FkLAorICAgIHBhZ2VSZWplY3RDYXVzZV9jb3VudCwKK307CisKIHN0YXRp
YyB2b2lkIGxvZ0NhbkNhY2hlUGFnZURlY2lzaW9uKFBhZ2UqIHBhZ2UpCiB7CiAgICAgLy8gT25s
eSBib3RoZXIgbG9nZ2luZyBmb3IgbWFpbiBmcmFtZXMgdGhhdCBoYXZlIGFjdHVhbGx5IGxvYWRl
ZCBhbmQgaGF2ZSBjb250ZW50LgpAQCAtMTcyLDQxICsyMjksODQgQEAgc3RhdGljIHZvaWQgbG9n
Q2FuQ2FjaGVQYWdlRGVjaXNpb24oUGFnZSogcGFnZSkKICAgICBpbnQgaW5kZW50TGV2ZWwgPSAw
OyAgICAKICAgICBQQ0xPRygiLS0tLS0tLS1cbiBEZXRlcm1pbmluZyBpZiBwYWdlIGNhbiBiZSBj
YWNoZWQ6Iik7CiAgICAgCi0gICAgYm9vbCBjYW5ub3RDYWNoZSA9ICFsb2dDYW5DYWNoZUZyYW1l
RGVjaXNpb24ocGFnZS0+bWFpbkZyYW1lKCksIDEpOworICAgIHVuc2lnbmVkIHJlamVjdENhdXNl
cyA9IDA7CisgICAgdW5zaWduZWQgZnJhbWVSZWplY3RDYXVzZXMgPSBsb2dDYW5DYWNoZUZyYW1l
RGVjaXNpb24ocGFnZS0+bWFpbkZyYW1lKCksIDEpOworICAgIGlmIChmcmFtZVJlamVjdENhdXNl
cykKKyAgICAgICAgcmVqZWN0Q2F1c2VzIHw9IDEgPDwgZnJhbWVSZWplY3RlZDsKICAgICAKICAg
ICBpZiAoIXBhZ2UtPmJhY2tGb3J3YXJkKCktPmlzQWN0aXZlKCkpIHsKICAgICAgICAgUENMT0co
IiAgIC1UaGUgYmFjay9mb3J3YXJkIGxpc3QgaXMgZGlzYWJsZWQgb3IgaGFzIDAgY2FwYWNpdHki
KTsKLSAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICByZWplY3RDYXVzZXMgfD0g
MSA8PCBkaXNhYmxlZEJhY2tGb3J3YXJkTGlzdDsKICAgICB9CiAgICAgaWYgKCFwYWdlLT5zZXR0
aW5ncygpLT51c2VzUGFnZUNhY2hlKCkpIHsKICAgICAgICAgUENMT0coIiAgIC1QYWdlIHNldHRp
bmdzIHNheXMgYi9mIGNhY2hlIGRpc2FibGVkIik7Ci0gICAgICAgIGNhbm5vdENhY2hlID0gdHJ1
ZTsKKyAgICAgICAgcmVqZWN0Q2F1c2VzIHw9IDEgPDwgZGlzYWJsZWRQYWdlQ2FjaGU7CiAgICAg
fQogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCiAgICAgaWYgKERldmljZU1vdGlvbkNv
bnRyb2xsZXI6OmlzQWN0aXZlQXQocGFnZSkpIHsKICAgICAgICAgUENMT0coIiAgIC1QYWdlIGlz
IHVzaW5nIERldmljZU1vdGlvbiIpOwotICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAg
ICAgIHJlamVjdENhdXNlcyB8PSAxIDw8IHVzZXNEZXZpY2VNb3Rpb247CiAgICAgfQogICAgIGlm
IChEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OmlzQWN0aXZlQXQocGFnZSkpIHsKICAgICAg
ICAgUENMT0coIiAgIC1QYWdlIGlzIHVzaW5nIERldmljZU9yaWVudGF0aW9uIik7Ci0gICAgICAg
IGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgcmVqZWN0Q2F1c2VzIHw9IDEgPDwgdXNlc0Rl
dmljZU9yaWVudGF0aW9uOwogICAgIH0KICNlbmRpZgogICAgIEZyYW1lTG9hZFR5cGUgbG9hZFR5
cGUgPSBwYWdlLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPmxvYWRUeXBlKCk7CiAgICAgaWYgKGxv
YWRUeXBlID09IEZyYW1lTG9hZFR5cGVSZWxvYWQpIHsKICAgICAgICAgUENMT0coIiAgIC1Mb2Fk
IHR5cGUgaXM6IFJlbG9hZCIpOwotICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAg
IHJlamVjdENhdXNlcyB8PSAxIDw8IGlzUmVsb2FkOwogICAgIH0KICAgICBpZiAobG9hZFR5cGUg
PT0gRnJhbWVMb2FkVHlwZVJlbG9hZEZyb21PcmlnaW4pIHsKICAgICAgICAgUENMT0coIiAgIC1M
b2FkIHR5cGUgaXM6IFJlbG9hZCBmcm9tIG9yaWdpbiIpOwotICAgICAgICBjYW5ub3RDYWNoZSA9
IHRydWU7CisgICAgICAgIHJlamVjdENhdXNlcyB8PSAxIDw8IGlzUmVsb2FkRnJvbU9yaWdpbjsK
ICAgICB9CiAgICAgaWYgKGxvYWRUeXBlID09IEZyYW1lTG9hZFR5cGVTYW1lKSB7CiAgICAgICAg
IFBDTE9HKCIgICAtTG9hZCB0eXBlIGlzOiBTYW1lIik7Ci0gICAgICAgIGNhbm5vdENhY2hlID0g
dHJ1ZTsKKyAgICAgICAgcmVqZWN0Q2F1c2VzIHw9IDEgPDwgaXNTYW1lTG9hZDsKICAgICB9CiAg
ICAgCi0gICAgUENMT0coY2Fubm90Q2FjaGUgPyAiIFBhZ2UgQ0FOTk9UIGJlIGNhY2hlZFxuLS0t
LS0tLS0iIDogIiBQYWdlIENBTiBiZSBjYWNoZWRcbi0tLS0tLS0tIik7CisgICAgUENMT0cocmVq
ZWN0Q2F1c2VzID8gIiBQYWdlIENBTk5PVCBiZSBjYWNoZWRcbi0tLS0tLS0tIiA6ICIgUGFnZSBD
QU4gYmUgY2FjaGVkXG4tLS0tLS0tLSIpOworCisgICAgSGlzdG9ncmFtU3VwcG9ydDo6aGlzdG9n
cmFtRW51bWVyYXRpb24oIlBhZ2VDYWNoZS5QYWdlUmVqZWN0ZWQiLCAhIXJlamVjdENhdXNlcywg
Mik7CisgICAgaW50IHJlamVjdENvdW50ID0gMDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHBh
Z2VSZWplY3RDYXVzZV9jb3VudDsgKytpKQorICAgICAgICBpZiAocmVqZWN0Q2F1c2VzICYgKDEg
PDwgaSkpIHsKKyAgICAgICAgICAgICsrcmVqZWN0Q291bnQ7CisgICAgICAgICAgICBIaXN0b2dy
YW1TdXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJhdGlvbigiUGFnZUNhY2hlLlBhZ2VSZWplY3RDYXVz
ZSIsIGksIHBhZ2VSZWplY3RDYXVzZV9jb3VudCk7CisgICAgICAgIH0KKyAgICBIaXN0b2dyYW1T
dXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJhdGlvbigiUGFnZUNhY2hlLlBhZ2VSZWplY3RDYXVzZUNv
dW50IiwgcmVqZWN0Q291bnQsIDErcGFnZVJlamVjdENhdXNlX2NvdW50KTsKKyAgICBjb25zdCBj
aGFyKiBoaXN0b2dyYW1OYW1lc1tdID0geyAiUGFnZUNhY2hlLlBhZ2VSZWplY3RDYXVzZVNpbmds
ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBhZ2VDYWNoZS5QYWdl
UmVqZWN0Q2F1c2VEb3VibGUiIH07CisgICAgY29uc3QgaW50IGhpc3RvZ3JhbUNvdW50ID0gc2l6
ZW9mKGhpc3RvZ3JhbU5hbWVzKSAvIHNpemVvZihjaGFyKik7CisgICAgaWYgKHJlamVjdENvdW50
ID4gMSAmJiByZWplY3RDb3VudCA8PSBoaXN0b2dyYW1Db3VudCkgeworICAgICAgICBjb25zdCBj
aGFyKiBoaXN0b2dyYW0gPSBoaXN0b2dyYW1OYW1lc1tyZWplY3RDb3VudC0xXTsKKyAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBmcmFtZVJlamVjdENhdXNlX2NvdW50OyArK2kpCisgICAgICAg
ICAgICBpZiAocmVqZWN0Q2F1c2VzICYgKDEgPDwgaSkpCisgICAgICAgICAgICAgICAgSGlzdG9n
cmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51bWVyYXRpb24oaGlzdG9ncmFtLCBpLCBmcmFtZVJlamVj
dENhdXNlX2NvdW50KTsKKyAgICB9CisKKyAgICAvLyBSZXBvcnQgZm9yIGFsbCBzdWJmcmFtZXMg
cGVyIHBhZ2UgYXMgd2VsbC4KKyAgICBpZiAoZnJhbWVSZWplY3RDYXVzZXMpIHsKKyAgICAgICAg
SGlzdG9ncmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51bWVyYXRpb24oIlBhZ2VDYWNoZS5QYWdlRnJh
bWVzUmVqZWN0ZWQiLCAhIWZyYW1lUmVqZWN0Q2F1c2VzLCAyKTsKKyAgICAgICAgaW50IGZyYW1l
UmVqZWN0Q291bnQgPSAwOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8PSBmcmFtZVJlamVj
dENhdXNlX2NvdW50OyArK2kpCisgICAgICAgICAgICBpZiAoZnJhbWVSZWplY3RDYXVzZXMgJiAo
MSA8PCBpKSkgeworICAgICAgICAgICAgICAgICsrZnJhbWVSZWplY3RDb3VudDsKKyAgICAgICAg
ICAgICAgICBIaXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJhdGlvbigiUGFnZUNhY2hl
LlBhZ2VGcmFtZXNSZWplY3RDYXVzZSIsIGksIGZyYW1lUmVqZWN0Q2F1c2VfY291bnQpOworICAg
ICAgICAgICAgfQorICAgICAgICBIaXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJhdGlv
bigiUGFnZUNhY2hlLlBhZ2VGcmFtZXNSZWplY3RDYXVzZUNvdW50IiwgZnJhbWVSZWplY3RDb3Vu
dCwgMStmcmFtZVJlamVjdENhdXNlX2NvdW50KTsKKworICAgICAgICBjb25zdCBjaGFyKiBmcmFt
ZUhpc3RvZ3JhbU5hbWVzW10gPSB7ICJQYWdlQ2FjaGUuUGFnZUZyYW1lc1JlamVjdENhdXNlU2lu
Z2xlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGFn
ZUNhY2hlLlBhZ2VGcmFtZXNSZWplY3RDYXVzZURvdWJsZSIgfTsKKyAgICAgICAgY29uc3QgaW50
IGZyYW1lSGlzdG9ncmFtQ291bnQgPSBzaXplb2YoZnJhbWVIaXN0b2dyYW1OYW1lcykgLyBzaXpl
b2YoY2hhciopOworICAgICAgICBpZiAoZnJhbWVSZWplY3RDb3VudCA+IDEgJiYgZnJhbWVSZWpl
Y3RDb3VudCA8IGZyYW1lSGlzdG9ncmFtQ291bnQpIHsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGhpc3RvZ3JhbSA9IGZyYW1lSGlzdG9ncmFtTmFtZXNbZnJhbWVSZWplY3RDb3VudC0xXTsKKyAg
ICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZnJhbWVSZWplY3RDYXVzZV9jb3VudDsgKytp
KQorICAgICAgICAgICAgICAgIGlmIChmcmFtZVJlamVjdENhdXNlcyAmICgxIDw8IGkpKQorICAg
ICAgICAgICAgICAgICAgICBIaXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJhdGlvbiho
aXN0b2dyYW0sIGksIGZyYW1lUmVqZWN0Q2F1c2VfY291bnQpOworICAgICAgICB9CisgICAgfQog
fQogCiAjZW5kaWYgCkBAIC0yNzAsNyArMzcwLDcgQEAgYm9vbCBQYWdlQ2FjaGU6OmNhbkNhY2hl
KFBhZ2UqIHBhZ2UpCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
Ci0jaWZuZGVmIE5ERUJVRworI2lmIFBMQVRGT1JNKENIUk9NSVVNKSB8fCAhZGVmaW5lZChOREVC
VUcpCiAgICAgbG9nQ2FuQ2FjaGVQYWdlRGVjaXNpb24ocGFnZSk7CiAjZW5kaWYKICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129960</attachid>
            <date>2012-03-02 14:54:56 -0800</date>
            <delta_ts>2012-03-02 16:19:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80187-20120302175454.patch</filename>
            <type>text/plain</type>
            <size>13985</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTkxOTRmOGVmYjgyNWNi
NjVkMDE0NDhjNTk3Yjk2YTAxY2E2NTFkYS4uOTQ0YzRjMWZhNTBmODJiODhjMWNiMTg4ZGE1NWUz
OTMyYjI4MWEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTAzLTAyICBHYXZp
biBQZXRlcnMgIDxnYXZpbnBAY2hyb21pdW0ub3JnPgorCisgICAgICAgIGFkZCBIaXN0b2dyYW1z
IGZvciByZXBvcnRpbmcgb24gUGFnZUNhY2hlIHJlamVjdCByZWFzb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDE4NworCisgICAgICAgIEVuaGFu
Y2UgdGhlIFBhZ2VDYWNoZSBkZWJ1ZyBtb2RlIHNvIHRoYXQgaXQgdXNlcyBIaXN0b2dyYW1zIHRv
CisgICAgICAgIHJlcG9ydCBvbiBjYXVzZXMgb2YgZmFpbHVyZS4gIFR1cm4gb24gdGhlIGRlYnVn
IHByaW50aW5nIHBhdGgKKyAgICAgICAgZXZlbiBpbiBub24tZGVidWcgQ2hyb21pdW0gYnVpbGRz
LCBzbyB0aGVzZSBoaXN0b2dyYW1zIHdpbGwKKyAgICAgICAgdXBkYXRlLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgZG9lcyBu
b3QgY2hhbmdlIGJlaGF2aW91ci4KKworICAgICAgICAqIGhpc3RvcnkvUGFnZUNhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6bG9nQ2FuQ2FjaGVGcmFtZURl
Y2lzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmxvZ0NhbkNhY2hlUGFnZURlY2lzaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6Y2FuQ2FjaGUpOgorCiAyMDEyLTAzLTAyICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21p
dW1dIFJlbW92ZSBUUkFDRV9FVkVOVCBmcm9tIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVh
ZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKaW5kZXggNjMxNGNjOGExMjc2ODIy
MjFkZTVjZGEzMTNiODI5NTUyNWE4ZWE2Zi4uYjExMzgwNWJiYTk2NDI5MjhmOTZiYmM2ZTdlYmU1
NzJlZDI0MzhkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcApAQCAtNDAsNiAr
NDAsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJD
bGllbnQuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlclN0YXRlTWFjaGluZS5oIgorI2luY2x1ZGUg
Ikhpc3RvZ3JhbVN1cHBvcnQuaCIKICNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC01NiwxMiArNTcsMzYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgZG91YmxlIGF1dG9yZWxlYXNlSW50ZXJ2YWwg
PSAzOwogCi0jaWZuZGVmIE5ERUJVRworI2lmIFBMQVRGT1JNKENIUk9NSVVNKSB8fCAhZGVmaW5l
ZChOREVCVUcpCiAKICNkZWZpbmUgUENMT0coLi4uKSBMT0coUGFnZUNhY2hlLCAiJSpzJXMiLCBp
bmRlbnRMZXZlbCo0LCAiIiwgbWFrZVN0cmluZyhfX1ZBX0FSR1NfXykudXRmOCgpLmRhdGEoKSkK
ICAgICAKLXN0YXRpYyBib29sIGxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lvbihGcmFtZSogZnJhbWUs
IGludCBpbmRlbnRMZXZlbCkKKy8vIFVzZWQgaW4gaGlzdG9ncmFtcywgcGxlYXNlIG9ubHkgYWRk
IGF0IHRoZSBlbmQsIGFuZCBkbyBub3QgcmVtb3ZlIGVsZW1lbnRzLgorZW51bSBGcmFtZVJlamVj
dENhdXNlIHsKKyAgICBub0RvY3VtZW50TG9hZGVyID0gMCwKKyAgICBtYWluRG9jdW1lbnRFcnJv
ciwKKyAgICBpc0Vycm9yUGFnZSwKKyAgICBoYXNQbHVnaW5zLAorICAgIGlzSHR0cHNBbmRDYWNo
ZUNvbnRyb2xsZWQsCisgICAgaGFzVW5sb2FkTGlzdGVuZXIsCisgICAgaGFzRGF0YWJhc2VIYW5k
bGVzLAorICAgIGhhc1NoYXJlZFdvcmtlcnMsCisgICAgdXNpbmdHZW9sb2NhdGlvbiwKKyAgICBu
b0hpc3RvcnlJdGVtLAorICAgIHF1aWNrUmVkaXJlY3RDb21pbmcsCisgICAgaXNMb2FkaW5nSW5B
UElTZW5zZSwKKyAgICBpc1N0b3BwaW5nLAorICAgIGNhblN1c3BlbmRBY3RpdmVET01PYmplY3Rz
LAorICAgIGRvY3VtZW50TG9hZGVyVXNlc0FwcGxpY2F0aW9uQ2FjaGUsCisgICAgY2xpZW50RGVu
aWVzQ2FjaGluZywKKyAgICBmcmFtZVJlamVjdENhdXNlX2NvdW50LAorfTsKKworc3RhdGljIHVu
c2lnbmVkIGxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lvbihGcmFtZSogZnJhbWUsIGludCBpbmRlbnRM
ZXZlbCkKIHsKKyNpZmRlZiBOREVCVUcKKyAgICBBU1NFUlRfVU5VU0VEKGluZGVudExldmVsKTsK
KyNlbmRpZgogICAgIC8vIE9ubHkgYm90aGVyIGxvZ2dpbmcgZm9yIGZyYW1lcyB0aGF0IGhhdmUg
YWN0dWFsbHkgbG9hZGVkIGFuZCBoYXZlIGNvbnRlbnQuCiAgICAgaWYgKGZyYW1lLT5sb2FkZXIo
KS0+c3RhdGVNYWNoaW5lKCktPmNyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNzYsOTAgKzEwMSwxMjUgQEAgc3RhdGljIGJvb2wgbG9nQ2Fu
Q2FjaGVGcmFtZURlY2lzaW9uKEZyYW1lKiBmcmFtZSwgaW50IGluZGVudExldmVsKQogICAgIGVs
c2UKICAgICAgICAgUENMT0coIiBEZXRlcm1pbmluZyBpZiBzdWJmcmFtZSB3aXRoIFVSTCAoIiwg
Y3VycmVudFVSTC5zdHJpbmcoKSwgIikgY2FuIGJlIGNhY2hlZDoiKTsKICAgICAKLSAgICBib29s
IGNhbm5vdENhY2hlID0gZmFsc2U7CisgICAgdW5zaWduZWQgcmVqZWN0Q2F1c2VzID0gMDsKICAg
ICAKICAgICBpZiAoIWZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSkgewogICAgICAg
ICBQQ0xPRygiICAgLVRoZXJlIGlzIG5vIERvY3VtZW50TG9hZGVyIG9iamVjdCIpOwotICAgICAg
ICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgIHJlamVjdENhdXNlcyB8PSAxIDw8IG5vRG9j
dW1lbnRMb2FkZXI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFmcmFtZS0+bG9hZGVyKCkt
PmRvY3VtZW50TG9hZGVyKCktPm1haW5Eb2N1bWVudEVycm9yKCkuaXNOdWxsKCkpIHsKICAgICAg
ICAgICAgIFBDTE9HKCIgICAtTWFpbiBkb2N1bWVudCBoYXMgYW4gZXJyb3IiKTsKLSAgICAgICAg
ICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgICAgIHJlamVjdENhdXNlcyB8PSAxIDw8
IG1haW5Eb2N1bWVudEVycm9yOwogICAgICAgICB9CiAgICAgICAgIGlmIChmcmFtZS0+bG9hZGVy
KCktPmRvY3VtZW50TG9hZGVyKCktPnN1YnN0aXR1dGVEYXRhKCkuaXNWYWxpZCgpICYmIGZyYW1l
LT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+c3Vic3RpdHV0ZURhdGEoKS5mYWlsaW5nVVJM
KCkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLUZyYW1lIGlzIGFuIGVycm9y
IHBhZ2UiKTsKLSAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgICAgIHJl
amVjdENhdXNlcyB8PSAxIDw8IGlzRXJyb3JQYWdlOworICAgICAgICB9CisgICAgICAgIGlmIChm
cmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnN1YnN0aXR1dGVEYXRhKCkuaXNWYWxp
ZCgpICYmIGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+c3Vic3RpdHV0ZURhdGEo
KS5mYWlsaW5nVVJMKCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBQQ0xPRygiICAgLUZyYW1l
IGlzIGFuIGVycm9yIHBhZ2UiKTsKKyAgICAgICAgICAgIHJlamVjdENhdXNlcyB8PSAxIDw8IGlz
RXJyb3JQYWdlOwogICAgICAgICB9CiAgICAgICAgIGlmIChmcmFtZS0+bG9hZGVyKCktPnN1YmZy
YW1lTG9hZGVyKCktPmNvbnRhaW5zUGx1Z2lucygpICYmICFmcmFtZS0+cGFnZSgpLT5zZXR0aW5n
cygpLT5wYWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnMoKSkgewogICAgICAgICAgICAgUENMT0coIiAg
IC1GcmFtZSBjb250YWlucyBwbHVnaW5zIik7Ci0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRy
dWU7CisgICAgICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBoYXNQbHVnaW5zOwogICAgICAg
ICB9CiAgICAgICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkucHJvdG9jb2xJcygiaHR0
cHMiKQogICAgICAgICAgICAgJiYgKGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+
cmVzcG9uc2UoKS5jYWNoZUNvbnRyb2xDb250YWluc05vQ2FjaGUoKQogICAgICAgICAgICAgICAg
IHx8IGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKS5jYWNoZUNv
bnRyb2xDb250YWluc05vU3RvcmUoKSkpIHsKICAgICAgICAgICAgIFBDTE9HKCIgICAtRnJhbWUg
aXMgSFRUUFMsIGFuZCBjYWNoZSBjb250cm9sIHByb2hpYml0cyBjYWNoaW5nIG9yIHN0b3Jpbmci
KTsKLSAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgICAgIHJlamVjdENh
dXNlcyB8PSAxIDw8IGlzSHR0cHNBbmRDYWNoZUNvbnRyb2xsZWQ7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKGZyYW1lLT5kb21XaW5kb3coKSAmJiBmcmFtZS0+ZG9tV2luZG93KCktPmhhc0V2ZW50
TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS51bmxvYWRFdmVudCkpIHsKICAgICAgICAgICAgIFBDTE9H
KCIgICAtRnJhbWUgaGFzIGFuIHVubG9hZCBldmVudCBsaXN0ZW5lciIpOwotICAgICAgICAgICAg
Y2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAgcmVqZWN0Q2F1c2VzIHw9IDEgPDwgaGFz
VW5sb2FkTGlzdGVuZXI7CiAgICAgICAgIH0KICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAg
ICAgICBpZiAoRGF0YWJhc2VDb250ZXh0OjpoYXNPcGVuRGF0YWJhc2VzKGZyYW1lLT5kb2N1bWVu
dCgpKSkgewogICAgICAgICAgICAgUENMT0coIiAgIC1GcmFtZSBoYXMgb3BlbiBkYXRhYmFzZSBo
YW5kbGVzIik7Ci0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgICAgICBy
ZWplY3RDYXVzZXMgfD0gMSA8PCBoYXNEYXRhYmFzZUhhbmRsZXM7CiAgICAgICAgIH0KICNlbmRp
ZgogI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKICAgICAgICAgaWYgKFNoYXJlZFdvcmtlclJl
cG9zaXRvcnk6Omhhc1NoYXJlZFdvcmtlcnMoZnJhbWUtPmRvY3VtZW50KCkpKSB7CiAgICAgICAg
ICAgICBQQ0xPRygiICAgLUZyYW1lIGhhcyBhc3NvY2lhdGVkIFNoYXJlZFdvcmtlcnMiKTsKLSAg
ICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgICAgIHJlamVjdENhdXNlcyB8
PSAxIDw8IGhhc1NoYXJlZFdvcmtlcnM7CiAgICAgICAgIH0KICNlbmRpZgogICAgICAgICBpZiAo
ZnJhbWUtPmRvY3VtZW50KCktPnVzaW5nR2VvbG9jYXRpb24oKSkgewogICAgICAgICAgICAgUENM
T0coIiAgIC1GcmFtZSB1c2VzIEdlb2xvY2F0aW9uIik7Ci0gICAgICAgICAgICBjYW5ub3RDYWNo
ZSA9IHRydWU7CisgICAgICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCB1c2luZ0dlb2xvY2F0
aW9uOwogICAgICAgICB9CiAgICAgICAgIGlmICghZnJhbWUtPmxvYWRlcigpLT5oaXN0b3J5KCkt
PmN1cnJlbnRJdGVtKCkpIHsKICAgICAgICAgICAgIFBDTE9HKCIgICAtTm8gY3VycmVudCBoaXN0
b3J5IGl0ZW0iKTsKLSAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgICAg
IHJlamVjdENhdXNlcyB8PSAxIDw8IG5vSGlzdG9yeUl0ZW07CiAgICAgICAgIH0KICAgICAgICAg
aWYgKGZyYW1lLT5sb2FkZXIoKS0+cXVpY2tSZWRpcmVjdENvbWluZygpKSB7CiAgICAgICAgICAg
ICBQQ0xPRygiICAgLVF1aWNrIHJlZGlyZWN0IGlzIGNvbWluZyIpOwotICAgICAgICAgICAgY2Fu
bm90Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAgcmVqZWN0Q2F1c2VzIHw9IDEgPDwgcXVpY2tS
ZWRpcmVjdENvbWluZzsKICAgICAgICAgfQogICAgICAgICBpZiAoZnJhbWUtPmxvYWRlcigpLT5k
b2N1bWVudExvYWRlcigpLT5pc0xvYWRpbmdJbkFQSVNlbnNlKCkpIHsKICAgICAgICAgICAgIFBD
TE9HKCIgICAtRG9jdW1lbnRMb2FkZXIgaXMgc3RpbGwgbG9hZGluZyBpbiBBUEkgc2Vuc2UiKTsK
LSAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgICAgIHJlamVjdENhdXNl
cyB8PSAxIDw8IGlzTG9hZGluZ0luQVBJU2Vuc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGZy
YW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+aXNTdG9wcGluZygpKSB7CiAgICAgICAg
ICAgICBQQ0xPRygiICAgLURvY3VtZW50TG9hZGVyIGlzIGluIHRoZSBtaWRkbGUgb2Ygc3RvcHBp
bmciKTsKLSAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgICAgIHJlamVj
dENhdXNlcyB8PSAxIDw8IGlzU3RvcHBpbmc7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFmcmFt
ZS0+ZG9jdW1lbnQoKS0+Y2FuU3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoKSkgewogICAgICAgICAg
ICAgUENMT0coIiAgIC1UaGUgZG9jdW1lbnQgY2Fubm90IHN1c3BlY3QgaXRzIGFjdGl2ZSBET00g
T2JqZWN0cyIpOwotICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAg
cmVqZWN0Q2F1c2VzIHw9IDEgPDwgY2FuU3VzcGVuZEFjdGl2ZURPTU9iamVjdHM7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKCFmcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPmFwcGxp
Y2F0aW9uQ2FjaGVIb3N0KCktPmNhbkNhY2hlSW5QYWdlQ2FjaGUoKSkgewogICAgICAgICAgICAg
UENMT0coIiAgIC1UaGUgRG9jdW1lbnRMb2FkZXIgdXNlcyBhbiBhcHBsaWNhdGlvbiBjYWNoZSIp
OwotICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAgcmVqZWN0Q2F1
c2VzIHw9IDEgPDwgZG9jdW1lbnRMb2FkZXJVc2VzQXBwbGljYXRpb25DYWNoZTsKICAgICAgICAg
fQogICAgICAgICBpZiAoIWZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmNhbkNhY2hlUGFnZSgp
KSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLVRoZSBjbGllbnQgc2F5cyB0aGlzIGZyYW1lIGNh
bm5vdCBiZSBjYWNoZWQiKTsKLSAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsgCisgICAg
ICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBjbGllbnREZW5pZXNDYWNoaW5nOwogICAgICAg
ICB9CiAgICAgfQotICAgIAorCisgICAgSGlzdG9ncmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51bWVy
YXRpb24oIlBhZ2VDYWNoZS5GcmFtZVJlamVjdGVkIiwgISFyZWplY3RDYXVzZXMsIDIpOworICAg
IGludCByZWplY3RDb3VudCA9IDA7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmcmFtZVJlamVj
dENhdXNlX2NvdW50OyArK2kpCisgICAgICAgIGlmIChyZWplY3RDYXVzZXMgJiAoMSA8PCBpKSkg
eworICAgICAgICAgICAgKytyZWplY3RDb3VudDsKKyAgICAgICAgICAgIEhpc3RvZ3JhbVN1cHBv
cnQ6Omhpc3RvZ3JhbUVudW1lcmF0aW9uKCJQYWdlQ2FjaGUuRnJhbWVSZWplY3RDYXVzZSIsIGks
IGZyYW1lUmVqZWN0Q2F1c2VfY291bnQpOworICAgICAgICB9CisgICAgSGlzdG9ncmFtU3VwcG9y
dDo6aGlzdG9ncmFtRW51bWVyYXRpb24oIlBhZ2VDYWNoZS5GcmFtZVJlamVjdENhdXNlQ291bnQi
LCByZWplY3RDb3VudCwgMStmcmFtZVJlamVjdENhdXNlX2NvdW50KTsKKworICAgIGNvbnN0IGNo
YXIqIGhpc3RvZ3JhbU5hbWVzW10gPSB7ICJQYWdlQ2FjaGUuRnJhbWVSZWplY3RDYXVzZVNpbmds
ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBhZ2VDYWNoZS5GcmFt
ZVJlamVjdENhdXNlRG91YmxlIiB9OworICAgIGNvbnN0IGludCBoaXN0b2dyYW1Db3VudCA9IHNp
emVvZihoaXN0b2dyYW1OYW1lcykgLyBzaXplb2YoY2hhciopOworICAgIGlmIChyZWplY3RDb3Vu
dCA+IDEgJiYgcmVqZWN0Q291bnQgPD0gaGlzdG9ncmFtQ291bnQpIHsKKyAgICAgICAgY29uc3Qg
Y2hhciogaGlzdG9ncmFtID0gaGlzdG9ncmFtTmFtZXNbcmVqZWN0Q291bnQtMV07CisgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgZnJhbWVSZWplY3RDYXVzZV9jb3VudDsgKytpKQorICAgICAg
ICAgICAgaWYgKHJlamVjdENhdXNlcyAmICgxIDw8IGkpKQorICAgICAgICAgICAgICAgIEhpc3Rv
Z3JhbVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1lcmF0aW9uKGhpc3RvZ3JhbSwgaSwgZnJhbWVSZWpl
Y3RDYXVzZV9jb3VudCk7CisgICAgfQorCiAgICAgZm9yIChGcmFtZSogY2hpbGQgPSBmcmFtZS0+
dHJlZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5leHRT
aWJsaW5nKCkpCi0gICAgICAgIGlmICghbG9nQ2FuQ2FjaGVGcmFtZURlY2lzaW9uKGNoaWxkLCBp
bmRlbnRMZXZlbCArIDEpKQotICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAg
ICByZWplY3RDYXVzZXMgfD0gbG9nQ2FuQ2FjaGVGcmFtZURlY2lzaW9uKGNoaWxkLCBpbmRlbnRM
ZXZlbCArIDEpOwogICAgIAotICAgIFBDTE9HKGNhbm5vdENhY2hlID8gIiBGcmFtZSBDQU5OT1Qg
YmUgY2FjaGVkIiA6ICIgRnJhbWUgQ0FOIGJlIGNhY2hlZCIpOworICAgIFBDTE9HKHJlamVjdENh
dXNlcyA/ICIgRnJhbWUgQ0FOTk9UIGJlIGNhY2hlZCIgOiAiIEZyYW1lIENBTiBiZSBjYWNoZWQi
KTsKICAgICBQQ0xPRygiKy0tLSIpOwogICAgIAotICAgIHJldHVybiAhY2Fubm90Q2FjaGU7Cisg
ICAgcmV0dXJuIHJlamVjdENhdXNlczsKIH0KLSAgICAKKworLy8gVXNlZCBpbiBoaXN0b2dyYW1z
LCBwbGVhc2Ugb25seSBhZGQgYXQgdGhlIGVuZCwgYW5kIGRvIG5vdCByZW1vdmUgZWxlbWVudHMu
CitlbnVtIFBhZ2VSZWplY3RDYXVzZSB7CisgICAgZnJhbWVSZWplY3RlZCA9IDAsCisgICAgZGlz
YWJsZWRCYWNrRm9yd2FyZExpc3QsCisgICAgZGlzYWJsZWRQYWdlQ2FjaGUsCisgICAgdXNlc0Rl
dmljZU1vdGlvbiwKKyAgICB1c2VzRGV2aWNlT3JpZW50YXRpb24sCisgICAgaXNSZWxvYWQsCisg
ICAgaXNSZWxvYWRGcm9tT3JpZ2luLAorICAgIGlzU2FtZUxvYWQsCisgICAgcGFnZVJlamVjdENh
dXNlX2NvdW50LAorfTsKKwogc3RhdGljIHZvaWQgbG9nQ2FuQ2FjaGVQYWdlRGVjaXNpb24oUGFn
ZSogcGFnZSkKIHsKICAgICAvLyBPbmx5IGJvdGhlciBsb2dnaW5nIGZvciBtYWluIGZyYW1lcyB0
aGF0IGhhdmUgYWN0dWFsbHkgbG9hZGVkIGFuZCBoYXZlIGNvbnRlbnQuCkBAIC0xNzIsNDEgKzIz
Miw4NCBAQCBzdGF0aWMgdm9pZCBsb2dDYW5DYWNoZVBhZ2VEZWNpc2lvbihQYWdlKiBwYWdlKQog
ICAgIGludCBpbmRlbnRMZXZlbCA9IDA7ICAgIAogICAgIFBDTE9HKCItLS0tLS0tLVxuIERldGVy
bWluaW5nIGlmIHBhZ2UgY2FuIGJlIGNhY2hlZDoiKTsKICAgICAKLSAgICBib29sIGNhbm5vdENh
Y2hlID0gIWxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lvbihwYWdlLT5tYWluRnJhbWUoKSwgMSk7Cisg
ICAgdW5zaWduZWQgcmVqZWN0Q2F1c2VzID0gMDsKKyAgICB1bnNpZ25lZCBmcmFtZVJlamVjdENh
dXNlcyA9IGxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lvbihwYWdlLT5tYWluRnJhbWUoKSwgMSk7Cisg
ICAgaWYgKGZyYW1lUmVqZWN0Q2F1c2VzKQorICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBm
cmFtZVJlamVjdGVkOwogICAgIAogICAgIGlmICghcGFnZS0+YmFja0ZvcndhcmQoKS0+aXNBY3Rp
dmUoKSkgewogICAgICAgICBQQ0xPRygiICAgLVRoZSBiYWNrL2ZvcndhcmQgbGlzdCBpcyBkaXNh
YmxlZCBvciBoYXMgMCBjYXBhY2l0eSIpOwotICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7Cisg
ICAgICAgIHJlamVjdENhdXNlcyB8PSAxIDw8IGRpc2FibGVkQmFja0ZvcndhcmRMaXN0OwogICAg
IH0KICAgICBpZiAoIXBhZ2UtPnNldHRpbmdzKCktPnVzZXNQYWdlQ2FjaGUoKSkgewogICAgICAg
ICBQQ0xPRygiICAgLVBhZ2Ugc2V0dGluZ3Mgc2F5cyBiL2YgY2FjaGUgZGlzYWJsZWQiKTsKLSAg
ICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBk
aXNhYmxlZFBhZ2VDYWNoZTsKICAgICB9CiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikK
ICAgICBpZiAoRGV2aWNlTW90aW9uQ29udHJvbGxlcjo6aXNBY3RpdmVBdChwYWdlKSkgewogICAg
ICAgICBQQ0xPRygiICAgLVBhZ2UgaXMgdXNpbmcgRGV2aWNlTW90aW9uIik7Ci0gICAgICAgIGNh
bm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgcmVqZWN0Q2F1c2VzIHw9IDEgPDwgdXNlc0Rldmlj
ZU1vdGlvbjsKICAgICB9CiAgICAgaWYgKERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6aXNB
Y3RpdmVBdChwYWdlKSkgewogICAgICAgICBQQ0xPRygiICAgLVBhZ2UgaXMgdXNpbmcgRGV2aWNl
T3JpZW50YXRpb24iKTsKLSAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICByZWpl
Y3RDYXVzZXMgfD0gMSA8PCB1c2VzRGV2aWNlT3JpZW50YXRpb247CiAgICAgfQogI2VuZGlmCiAg
ICAgRnJhbWVMb2FkVHlwZSBsb2FkVHlwZSA9IHBhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+
bG9hZFR5cGUoKTsKICAgICBpZiAobG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlwZVJlbG9hZCkgewog
ICAgICAgICBQQ0xPRygiICAgLUxvYWQgdHlwZSBpczogUmVsb2FkIik7Ci0gICAgICAgIGNhbm5v
dENhY2hlID0gdHJ1ZTsKKyAgICAgICAgcmVqZWN0Q2F1c2VzIHw9IDEgPDwgaXNSZWxvYWQ7CiAg
ICAgfQogICAgIGlmIChsb2FkVHlwZSA9PSBGcmFtZUxvYWRUeXBlUmVsb2FkRnJvbU9yaWdpbikg
ewogICAgICAgICBQQ0xPRygiICAgLUxvYWQgdHlwZSBpczogUmVsb2FkIGZyb20gb3JpZ2luIik7
Ci0gICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgcmVqZWN0Q2F1c2VzIHw9IDEg
PDwgaXNSZWxvYWRGcm9tT3JpZ2luOwogICAgIH0KICAgICBpZiAobG9hZFR5cGUgPT0gRnJhbWVM
b2FkVHlwZVNhbWUpIHsKICAgICAgICAgUENMT0coIiAgIC1Mb2FkIHR5cGUgaXM6IFNhbWUiKTsK
LSAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8
PCBpc1NhbWVMb2FkOwogICAgIH0KICAgICAKLSAgICBQQ0xPRyhjYW5ub3RDYWNoZSA/ICIgUGFn
ZSBDQU5OT1QgYmUgY2FjaGVkXG4tLS0tLS0tLSIgOiAiIFBhZ2UgQ0FOIGJlIGNhY2hlZFxuLS0t
LS0tLS0iKTsKKyAgICBQQ0xPRyhyZWplY3RDYXVzZXMgPyAiIFBhZ2UgQ0FOTk9UIGJlIGNhY2hl
ZFxuLS0tLS0tLS0iIDogIiBQYWdlIENBTiBiZSBjYWNoZWRcbi0tLS0tLS0tIik7CisKKyAgICBI
aXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJhdGlvbigiUGFnZUNhY2hlLlBhZ2VSZWpl
Y3RlZCIsICEhcmVqZWN0Q2F1c2VzLCAyKTsKKyAgICBpbnQgcmVqZWN0Q291bnQgPSAwOworICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgcGFnZVJlamVjdENhdXNlX2NvdW50OyArK2kpCisgICAgICAg
IGlmIChyZWplY3RDYXVzZXMgJiAoMSA8PCBpKSkgeworICAgICAgICAgICAgKytyZWplY3RDb3Vu
dDsKKyAgICAgICAgICAgIEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1lcmF0aW9uKCJQ
YWdlQ2FjaGUuUGFnZVJlamVjdENhdXNlIiwgaSwgcGFnZVJlamVjdENhdXNlX2NvdW50KTsKKyAg
ICAgICAgfQorICAgIEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1lcmF0aW9uKCJQYWdl
Q2FjaGUuUGFnZVJlamVjdENhdXNlQ291bnQiLCByZWplY3RDb3VudCwgMStwYWdlUmVqZWN0Q2F1
c2VfY291bnQpOworICAgIGNvbnN0IGNoYXIqIGhpc3RvZ3JhbU5hbWVzW10gPSB7ICJQYWdlQ2Fj
aGUuUGFnZVJlamVjdENhdXNlU2luZ2xlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiUGFnZUNhY2hlLlBhZ2VSZWplY3RDYXVzZURvdWJsZSIgfTsKKyAgICBjb25zdCBp
bnQgaGlzdG9ncmFtQ291bnQgPSBzaXplb2YoaGlzdG9ncmFtTmFtZXMpIC8gc2l6ZW9mKGNoYXIq
KTsKKyAgICBpZiAocmVqZWN0Q291bnQgPiAxICYmIHJlamVjdENvdW50IDw9IGhpc3RvZ3JhbUNv
dW50KSB7CisgICAgICAgIGNvbnN0IGNoYXIqIGhpc3RvZ3JhbSA9IGhpc3RvZ3JhbU5hbWVzW3Jl
amVjdENvdW50LTFdOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZyYW1lUmVqZWN0Q2F1
c2VfY291bnQ7ICsraSkKKyAgICAgICAgICAgIGlmIChyZWplY3RDYXVzZXMgJiAoMSA8PCBpKSkK
KyAgICAgICAgICAgICAgICBIaXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJhdGlvbiho
aXN0b2dyYW0sIGksIGZyYW1lUmVqZWN0Q2F1c2VfY291bnQpOworICAgIH0KKworICAgIC8vIFJl
cG9ydCBmb3IgYWxsIHN1YmZyYW1lcyBwZXIgcGFnZSBhcyB3ZWxsLgorICAgIGlmIChmcmFtZVJl
amVjdENhdXNlcykgeworICAgICAgICBIaXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJh
dGlvbigiUGFnZUNhY2hlLlBhZ2VGcmFtZXNSZWplY3RlZCIsICEhZnJhbWVSZWplY3RDYXVzZXMs
IDIpOworICAgICAgICBpbnQgZnJhbWVSZWplY3RDb3VudCA9IDA7CisgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDw9IGZyYW1lUmVqZWN0Q2F1c2VfY291bnQ7ICsraSkKKyAgICAgICAgICAgIGlm
IChmcmFtZVJlamVjdENhdXNlcyAmICgxIDw8IGkpKSB7CisgICAgICAgICAgICAgICAgKytmcmFt
ZVJlamVjdENvdW50OworICAgICAgICAgICAgICAgIEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3Jh
bUVudW1lcmF0aW9uKCJQYWdlQ2FjaGUuUGFnZUZyYW1lc1JlamVjdENhdXNlIiwgaSwgZnJhbWVS
ZWplY3RDYXVzZV9jb3VudCk7CisgICAgICAgICAgICB9CisgICAgICAgIEhpc3RvZ3JhbVN1cHBv
cnQ6Omhpc3RvZ3JhbUVudW1lcmF0aW9uKCJQYWdlQ2FjaGUuUGFnZUZyYW1lc1JlamVjdENhdXNl
Q291bnQiLCBmcmFtZVJlamVjdENvdW50LCAxK2ZyYW1lUmVqZWN0Q2F1c2VfY291bnQpOworCisg
ICAgICAgIGNvbnN0IGNoYXIqIGZyYW1lSGlzdG9ncmFtTmFtZXNbXSA9IHsgIlBhZ2VDYWNoZS5Q
YWdlRnJhbWVzUmVqZWN0Q2F1c2VTaW5nbGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJQYWdlQ2FjaGUuUGFnZUZyYW1lc1JlamVjdENhdXNlRG91Ymxl
IiB9OworICAgICAgICBjb25zdCBpbnQgZnJhbWVIaXN0b2dyYW1Db3VudCA9IHNpemVvZihmcmFt
ZUhpc3RvZ3JhbU5hbWVzKSAvIHNpemVvZihjaGFyKik7CisgICAgICAgIGlmIChmcmFtZVJlamVj
dENvdW50ID4gMSAmJiBmcmFtZVJlamVjdENvdW50IDwgZnJhbWVIaXN0b2dyYW1Db3VudCkgewor
ICAgICAgICAgICAgY29uc3QgY2hhciogaGlzdG9ncmFtID0gZnJhbWVIaXN0b2dyYW1OYW1lc1tm
cmFtZVJlamVjdENvdW50LTFdOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmcmFt
ZVJlamVjdENhdXNlX2NvdW50OyArK2kpCisgICAgICAgICAgICAgICAgaWYgKGZyYW1lUmVqZWN0
Q2F1c2VzICYgKDEgPDwgaSkpCisgICAgICAgICAgICAgICAgICAgIEhpc3RvZ3JhbVN1cHBvcnQ6
Omhpc3RvZ3JhbUVudW1lcmF0aW9uKGhpc3RvZ3JhbSwgaSwgZnJhbWVSZWplY3RDYXVzZV9jb3Vu
dCk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKICNlbmRpZiAKQEAgLTI3MCw3ICszNzMsNyBAQCBi
b29sIFBhZ2VDYWNoZTo6Y2FuQ2FjaGUoUGFnZSogcGFnZSkKICAgICBpZiAoIXBhZ2UpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAKLSNpZm5kZWYgTkRFQlVHCisjaWYgUExBVEZPUk0oQ0hS
T01JVU0pIHx8ICFkZWZpbmVkKE5ERUJVRykKICAgICBsb2dDYW5DYWNoZVBhZ2VEZWNpc2lvbihw
YWdlKTsKICNlbmRpZgogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129976</attachid>
            <date>2012-03-02 16:19:27 -0800</date>
            <delta_ts>2012-03-02 17:13:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80187-20120302191925.patch</filename>
            <type>text/plain</type>
            <size>13984</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTkxOTRmOGVmYjgyNWNi
NjVkMDE0NDhjNTk3Yjk2YTAxY2E2NTFkYS4uOTQ0YzRjMWZhNTBmODJiODhjMWNiMTg4ZGE1NWUz
OTMyYjI4MWEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTAzLTAyICBHYXZp
biBQZXRlcnMgIDxnYXZpbnBAY2hyb21pdW0ub3JnPgorCisgICAgICAgIGFkZCBIaXN0b2dyYW1z
IGZvciByZXBvcnRpbmcgb24gUGFnZUNhY2hlIHJlamVjdCByZWFzb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDE4NworCisgICAgICAgIEVuaGFu
Y2UgdGhlIFBhZ2VDYWNoZSBkZWJ1ZyBtb2RlIHNvIHRoYXQgaXQgdXNlcyBIaXN0b2dyYW1zIHRv
CisgICAgICAgIHJlcG9ydCBvbiBjYXVzZXMgb2YgZmFpbHVyZS4gIFR1cm4gb24gdGhlIGRlYnVn
IHByaW50aW5nIHBhdGgKKyAgICAgICAgZXZlbiBpbiBub24tZGVidWcgQ2hyb21pdW0gYnVpbGRz
LCBzbyB0aGVzZSBoaXN0b2dyYW1zIHdpbGwKKyAgICAgICAgdXBkYXRlLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgZG9lcyBu
b3QgY2hhbmdlIGJlaGF2aW91ci4KKworICAgICAgICAqIGhpc3RvcnkvUGFnZUNhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6bG9nQ2FuQ2FjaGVGcmFtZURl
Y2lzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmxvZ0NhbkNhY2hlUGFnZURlY2lzaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6Y2FuQ2FjaGUpOgorCiAyMDEyLTAzLTAyICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21p
dW1dIFJlbW92ZSBUUkFDRV9FVkVOVCBmcm9tIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVh
ZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKaW5kZXggNjMxNGNjOGExMjc2ODIy
MjFkZTVjZGEzMTNiODI5NTUyNWE4ZWE2Zi4uNWUzMGE0ZDQ2ZThiMDYyNzU0MzEwOGUxZDJiZTUw
OGE4ZjI1NGZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcApAQCAtNDAsNiAr
NDAsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJD
bGllbnQuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlclN0YXRlTWFjaGluZS5oIgorI2luY2x1ZGUg
Ikhpc3RvZ3JhbVN1cHBvcnQuaCIKICNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC01NiwxMiArNTcsMzYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgZG91YmxlIGF1dG9yZWxlYXNlSW50ZXJ2YWwg
PSAzOwogCi0jaWZuZGVmIE5ERUJVRworI2lmIFBMQVRGT1JNKENIUk9NSVVNKSB8fCAhZGVmaW5l
ZChOREVCVUcpCiAKICNkZWZpbmUgUENMT0coLi4uKSBMT0coUGFnZUNhY2hlLCAiJSpzJXMiLCBp
bmRlbnRMZXZlbCo0LCAiIiwgbWFrZVN0cmluZyhfX1ZBX0FSR1NfXykudXRmOCgpLmRhdGEoKSkK
ICAgICAKLXN0YXRpYyBib29sIGxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lvbihGcmFtZSogZnJhbWUs
IGludCBpbmRlbnRMZXZlbCkKKy8vIFVzZWQgaW4gaGlzdG9ncmFtcywgcGxlYXNlIG9ubHkgYWRk
IGF0IHRoZSBlbmQsIGFuZCBkbyBub3QgcmVtb3ZlIGVsZW1lbnRzLgorZW51bSBGcmFtZVJlamVj
dENhdXNlIHsKKyAgICBub0RvY3VtZW50TG9hZGVyID0gMCwKKyAgICBtYWluRG9jdW1lbnRFcnJv
ciwKKyAgICBpc0Vycm9yUGFnZSwKKyAgICBoYXNQbHVnaW5zLAorICAgIGlzSHR0cHNBbmRDYWNo
ZUNvbnRyb2xsZWQsCisgICAgaGFzVW5sb2FkTGlzdGVuZXIsCisgICAgaGFzRGF0YWJhc2VIYW5k
bGVzLAorICAgIGhhc1NoYXJlZFdvcmtlcnMsCisgICAgdXNpbmdHZW9sb2NhdGlvbiwKKyAgICBu
b0hpc3RvcnlJdGVtLAorICAgIHF1aWNrUmVkaXJlY3RDb21pbmcsCisgICAgaXNMb2FkaW5nSW5B
UElTZW5zZSwKKyAgICBpc1N0b3BwaW5nLAorICAgIGNhblN1c3BlbmRBY3RpdmVET01PYmplY3Rz
LAorICAgIGRvY3VtZW50TG9hZGVyVXNlc0FwcGxpY2F0aW9uQ2FjaGUsCisgICAgY2xpZW50RGVu
aWVzQ2FjaGluZywKKyAgICBmcmFtZVJlamVjdENhdXNlX2NvdW50LAorfTsKKworc3RhdGljIHVu
c2lnbmVkIGxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lvbihGcmFtZSogZnJhbWUsIGludCBpbmRlbnRM
ZXZlbCkKIHsKKyNpZmRlZiBOREVCVUcKKyAgICBVTlVTRURfUEFSQU0oaW5kZW50TGV2ZWwpOwor
I2VuZGlmCiAgICAgLy8gT25seSBib3RoZXIgbG9nZ2luZyBmb3IgZnJhbWVzIHRoYXQgaGF2ZSBh
Y3R1YWxseSBsb2FkZWQgYW5kIGhhdmUgY29udGVudC4KICAgICBpZiAoZnJhbWUtPmxvYWRlcigp
LT5zdGF0ZU1hY2hpbmUoKS0+Y3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC03Niw5MCArMTAxLDEyNSBAQCBzdGF0aWMgYm9vbCBsb2dDYW5D
YWNoZUZyYW1lRGVjaXNpb24oRnJhbWUqIGZyYW1lLCBpbnQgaW5kZW50TGV2ZWwpCiAgICAgZWxz
ZQogICAgICAgICBQQ0xPRygiIERldGVybWluaW5nIGlmIHN1YmZyYW1lIHdpdGggVVJMICgiLCBj
dXJyZW50VVJMLnN0cmluZygpLCAiKSBjYW4gYmUgY2FjaGVkOiIpOwogICAgIAotICAgIGJvb2wg
Y2Fubm90Q2FjaGUgPSBmYWxzZTsKKyAgICB1bnNpZ25lZCByZWplY3RDYXVzZXMgPSAwOwogICAg
IAogICAgIGlmICghZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpKSB7CiAgICAgICAg
IFBDTE9HKCIgICAtVGhlcmUgaXMgbm8gRG9jdW1lbnRMb2FkZXIgb2JqZWN0Iik7Ci0gICAgICAg
IGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgcmVqZWN0Q2F1c2VzIHw9IDEgPDwgbm9Eb2N1
bWVudExvYWRlcjsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoIWZyYW1lLT5sb2FkZXIoKS0+
ZG9jdW1lbnRMb2FkZXIoKS0+bWFpbkRvY3VtZW50RXJyb3IoKS5pc051bGwoKSkgewogICAgICAg
ICAgICAgUENMT0coIiAgIC1NYWluIGRvY3VtZW50IGhhcyBhbiBlcnJvciIpOwotICAgICAgICAg
ICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAgcmVqZWN0Q2F1c2VzIHw9IDEgPDwg
bWFpbkRvY3VtZW50RXJyb3I7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGZyYW1lLT5sb2FkZXIo
KS0+ZG9jdW1lbnRMb2FkZXIoKS0+c3Vic3RpdHV0ZURhdGEoKS5pc1ZhbGlkKCkgJiYgZnJhbWUt
PmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5zdWJzdGl0dXRlRGF0YSgpLmZhaWxpbmdVUkwo
KS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIFBDTE9HKCIgICAtRnJhbWUgaXMgYW4gZXJyb3Ig
cGFnZSIpOwotICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAgcmVq
ZWN0Q2F1c2VzIHw9IDEgPDwgaXNFcnJvclBhZ2U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGZy
YW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+c3Vic3RpdHV0ZURhdGEoKS5pc1ZhbGlk
KCkgJiYgZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5zdWJzdGl0dXRlRGF0YSgp
LmZhaWxpbmdVUkwoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIFBDTE9HKCIgICAtRnJhbWUg
aXMgYW4gZXJyb3IgcGFnZSIpOworICAgICAgICAgICAgcmVqZWN0Q2F1c2VzIHw9IDEgPDwgaXNF
cnJvclBhZ2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGZyYW1lLT5sb2FkZXIoKS0+c3ViZnJh
bWVMb2FkZXIoKS0+Y29udGFpbnNQbHVnaW5zKCkgJiYgIWZyYW1lLT5wYWdlKCktPnNldHRpbmdz
KCktPnBhZ2VDYWNoZVN1cHBvcnRzUGx1Z2lucygpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAg
LUZyYW1lIGNvbnRhaW5zIHBsdWdpbnMiKTsKLSAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1
ZTsKKyAgICAgICAgICAgIHJlamVjdENhdXNlcyB8PSAxIDw8IGhhc1BsdWdpbnM7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5wcm90b2NvbElzKCJodHRw
cyIpCiAgICAgICAgICAgICAmJiAoZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5y
ZXNwb25zZSgpLmNhY2hlQ29udHJvbENvbnRhaW5zTm9DYWNoZSgpCiAgICAgICAgICAgICAgICAg
fHwgZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpLmNhY2hlQ29u
dHJvbENvbnRhaW5zTm9TdG9yZSgpKSkgewogICAgICAgICAgICAgUENMT0coIiAgIC1GcmFtZSBp
cyBIVFRQUywgYW5kIGNhY2hlIGNvbnRyb2wgcHJvaGliaXRzIGNhY2hpbmcgb3Igc3RvcmluZyIp
OwotICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAgcmVqZWN0Q2F1
c2VzIHw9IDEgPDwgaXNIdHRwc0FuZENhY2hlQ29udHJvbGxlZDsKICAgICAgICAgfQogICAgICAg
ICBpZiAoZnJhbWUtPmRvbVdpbmRvdygpICYmIGZyYW1lLT5kb21XaW5kb3coKS0+aGFzRXZlbnRM
aXN0ZW5lcnMoZXZlbnROYW1lcygpLnVubG9hZEV2ZW50KSkgewogICAgICAgICAgICAgUENMT0co
IiAgIC1GcmFtZSBoYXMgYW4gdW5sb2FkIGV2ZW50IGxpc3RlbmVyIik7Ci0gICAgICAgICAgICBj
YW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBoYXNV
bmxvYWRMaXN0ZW5lcjsKICAgICAgICAgfQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAg
ICAgIGlmIChEYXRhYmFzZUNvbnRleHQ6Omhhc09wZW5EYXRhYmFzZXMoZnJhbWUtPmRvY3VtZW50
KCkpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLUZyYW1lIGhhcyBvcGVuIGRhdGFiYXNlIGhh
bmRsZXMiKTsKLSAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgICAgIHJl
amVjdENhdXNlcyB8PSAxIDw8IGhhc0RhdGFiYXNlSGFuZGxlczsKICAgICAgICAgfQogI2VuZGlm
CiAjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQogICAgICAgICBpZiAoU2hhcmVkV29ya2VyUmVw
b3NpdG9yeTo6aGFzU2hhcmVkV29ya2VycyhmcmFtZS0+ZG9jdW1lbnQoKSkpIHsKICAgICAgICAg
ICAgIFBDTE9HKCIgICAtRnJhbWUgaGFzIGFzc29jaWF0ZWQgU2hhcmVkV29ya2VycyIpOwotICAg
ICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAgcmVqZWN0Q2F1c2VzIHw9
IDEgPDwgaGFzU2hhcmVkV29ya2VyczsKICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIGlmIChm
cmFtZS0+ZG9jdW1lbnQoKS0+dXNpbmdHZW9sb2NhdGlvbigpKSB7CiAgICAgICAgICAgICBQQ0xP
RygiICAgLUZyYW1lIHVzZXMgR2VvbG9jYXRpb24iKTsKLSAgICAgICAgICAgIGNhbm5vdENhY2hl
ID0gdHJ1ZTsKKyAgICAgICAgICAgIHJlamVjdENhdXNlcyB8PSAxIDw8IHVzaW5nR2VvbG9jYXRp
b247CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFmcmFtZS0+bG9hZGVyKCktPmhpc3RvcnkoKS0+
Y3VycmVudEl0ZW0oKSkgewogICAgICAgICAgICAgUENMT0coIiAgIC1ObyBjdXJyZW50IGhpc3Rv
cnkgaXRlbSIpOwotICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAg
cmVqZWN0Q2F1c2VzIHw9IDEgPDwgbm9IaXN0b3J5SXRlbTsKICAgICAgICAgfQogICAgICAgICBp
ZiAoZnJhbWUtPmxvYWRlcigpLT5xdWlja1JlZGlyZWN0Q29taW5nKCkpIHsKICAgICAgICAgICAg
IFBDTE9HKCIgICAtUXVpY2sgcmVkaXJlY3QgaXMgY29taW5nIik7Ci0gICAgICAgICAgICBjYW5u
b3RDYWNoZSA9IHRydWU7CisgICAgICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBxdWlja1Jl
ZGlyZWN0Q29taW5nOwogICAgICAgICB9CiAgICAgICAgIGlmIChmcmFtZS0+bG9hZGVyKCktPmRv
Y3VtZW50TG9hZGVyKCktPmlzTG9hZGluZ0luQVBJU2Vuc2UoKSkgewogICAgICAgICAgICAgUENM
T0coIiAgIC1Eb2N1bWVudExvYWRlciBpcyBzdGlsbCBsb2FkaW5nIGluIEFQSSBzZW5zZSIpOwot
ICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAgcmVqZWN0Q2F1c2Vz
IHw9IDEgPDwgaXNMb2FkaW5nSW5BUElTZW5zZTsKICAgICAgICAgfQogICAgICAgICBpZiAoZnJh
bWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5pc1N0b3BwaW5nKCkpIHsKICAgICAgICAg
ICAgIFBDTE9HKCIgICAtRG9jdW1lbnRMb2FkZXIgaXMgaW4gdGhlIG1pZGRsZSBvZiBzdG9wcGlu
ZyIpOwotICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAgcmVqZWN0
Q2F1c2VzIHw9IDEgPDwgaXNTdG9wcGluZzsKICAgICAgICAgfQogICAgICAgICBpZiAoIWZyYW1l
LT5kb2N1bWVudCgpLT5jYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cygpKSB7CiAgICAgICAgICAg
ICBQQ0xPRygiICAgLVRoZSBkb2N1bWVudCBjYW5ub3Qgc3VzcGVjdCBpdHMgYWN0aXZlIERPTSBP
YmplY3RzIik7Ci0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgICAgICBy
ZWplY3RDYXVzZXMgfD0gMSA8PCBjYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0czsKICAgICAgICAg
fQogICAgICAgICBpZiAoIWZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGlj
YXRpb25DYWNoZUhvc3QoKS0+Y2FuQ2FjaGVJblBhZ2VDYWNoZSgpKSB7CiAgICAgICAgICAgICBQ
Q0xPRygiICAgLVRoZSBEb2N1bWVudExvYWRlciB1c2VzIGFuIGFwcGxpY2F0aW9uIGNhY2hlIik7
Ci0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgICAgICByZWplY3RDYXVz
ZXMgfD0gMSA8PCBkb2N1bWVudExvYWRlclVzZXNBcHBsaWNhdGlvbkNhY2hlOwogICAgICAgICB9
CiAgICAgICAgIGlmICghZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+Y2FuQ2FjaGVQYWdlKCkp
IHsKICAgICAgICAgICAgIFBDTE9HKCIgICAtVGhlIGNsaWVudCBzYXlzIHRoaXMgZnJhbWUgY2Fu
bm90IGJlIGNhY2hlZCIpOwotICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOyAKKyAgICAg
ICAgICAgIHJlamVjdENhdXNlcyB8PSAxIDw8IGNsaWVudERlbmllc0NhY2hpbmc7CiAgICAgICAg
IH0KICAgICB9Ci0gICAgCisKKyAgICBIaXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJh
dGlvbigiUGFnZUNhY2hlLkZyYW1lUmVqZWN0ZWQiLCAhIXJlamVjdENhdXNlcywgMik7CisgICAg
aW50IHJlamVjdENvdW50ID0gMDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGZyYW1lUmVqZWN0
Q2F1c2VfY291bnQ7ICsraSkKKyAgICAgICAgaWYgKHJlamVjdENhdXNlcyAmICgxIDw8IGkpKSB7
CisgICAgICAgICAgICArK3JlamVjdENvdW50OworICAgICAgICAgICAgSGlzdG9ncmFtU3VwcG9y
dDo6aGlzdG9ncmFtRW51bWVyYXRpb24oIlBhZ2VDYWNoZS5GcmFtZVJlamVjdENhdXNlIiwgaSwg
ZnJhbWVSZWplY3RDYXVzZV9jb3VudCk7CisgICAgICAgIH0KKyAgICBIaXN0b2dyYW1TdXBwb3J0
OjpoaXN0b2dyYW1FbnVtZXJhdGlvbigiUGFnZUNhY2hlLkZyYW1lUmVqZWN0Q2F1c2VDb3VudCIs
IHJlamVjdENvdW50LCAxK2ZyYW1lUmVqZWN0Q2F1c2VfY291bnQpOworCisgICAgY29uc3QgY2hh
ciogaGlzdG9ncmFtTmFtZXNbXSA9IHsgIlBhZ2VDYWNoZS5GcmFtZVJlamVjdENhdXNlU2luZ2xl
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGFnZUNhY2hlLkZyYW1l
UmVqZWN0Q2F1c2VEb3VibGUiIH07CisgICAgY29uc3QgaW50IGhpc3RvZ3JhbUNvdW50ID0gc2l6
ZW9mKGhpc3RvZ3JhbU5hbWVzKSAvIHNpemVvZihjaGFyKik7CisgICAgaWYgKHJlamVjdENvdW50
ID4gMSAmJiByZWplY3RDb3VudCA8PSBoaXN0b2dyYW1Db3VudCkgeworICAgICAgICBjb25zdCBj
aGFyKiBoaXN0b2dyYW0gPSBoaXN0b2dyYW1OYW1lc1tyZWplY3RDb3VudC0xXTsKKyAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBmcmFtZVJlamVjdENhdXNlX2NvdW50OyArK2kpCisgICAgICAg
ICAgICBpZiAocmVqZWN0Q2F1c2VzICYgKDEgPDwgaSkpCisgICAgICAgICAgICAgICAgSGlzdG9n
cmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51bWVyYXRpb24oaGlzdG9ncmFtLCBpLCBmcmFtZVJlamVj
dENhdXNlX2NvdW50KTsKKyAgICB9CisKICAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IGZyYW1lLT50
cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNp
YmxpbmcoKSkKLSAgICAgICAgaWYgKCFsb2dDYW5DYWNoZUZyYW1lRGVjaXNpb24oY2hpbGQsIGlu
ZGVudExldmVsICsgMSkpCi0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAg
IHJlamVjdENhdXNlcyB8PSBsb2dDYW5DYWNoZUZyYW1lRGVjaXNpb24oY2hpbGQsIGluZGVudExl
dmVsICsgMSk7CiAgICAgCi0gICAgUENMT0coY2Fubm90Q2FjaGUgPyAiIEZyYW1lIENBTk5PVCBi
ZSBjYWNoZWQiIDogIiBGcmFtZSBDQU4gYmUgY2FjaGVkIik7CisgICAgUENMT0cocmVqZWN0Q2F1
c2VzID8gIiBGcmFtZSBDQU5OT1QgYmUgY2FjaGVkIiA6ICIgRnJhbWUgQ0FOIGJlIGNhY2hlZCIp
OwogICAgIFBDTE9HKCIrLS0tIik7CiAgICAgCi0gICAgcmV0dXJuICFjYW5ub3RDYWNoZTsKKyAg
ICByZXR1cm4gcmVqZWN0Q2F1c2VzOwogfQotICAgIAorCisvLyBVc2VkIGluIGhpc3RvZ3JhbXMs
IHBsZWFzZSBvbmx5IGFkZCBhdCB0aGUgZW5kLCBhbmQgZG8gbm90IHJlbW92ZSBlbGVtZW50cy4K
K2VudW0gUGFnZVJlamVjdENhdXNlIHsKKyAgICBmcmFtZVJlamVjdGVkID0gMCwKKyAgICBkaXNh
YmxlZEJhY2tGb3J3YXJkTGlzdCwKKyAgICBkaXNhYmxlZFBhZ2VDYWNoZSwKKyAgICB1c2VzRGV2
aWNlTW90aW9uLAorICAgIHVzZXNEZXZpY2VPcmllbnRhdGlvbiwKKyAgICBpc1JlbG9hZCwKKyAg
ICBpc1JlbG9hZEZyb21PcmlnaW4sCisgICAgaXNTYW1lTG9hZCwKKyAgICBwYWdlUmVqZWN0Q2F1
c2VfY291bnQsCit9OworCiBzdGF0aWMgdm9pZCBsb2dDYW5DYWNoZVBhZ2VEZWNpc2lvbihQYWdl
KiBwYWdlKQogewogICAgIC8vIE9ubHkgYm90aGVyIGxvZ2dpbmcgZm9yIG1haW4gZnJhbWVzIHRo
YXQgaGF2ZSBhY3R1YWxseSBsb2FkZWQgYW5kIGhhdmUgY29udGVudC4KQEAgLTE3Miw0MSArMjMy
LDg0IEBAIHN0YXRpYyB2b2lkIGxvZ0NhbkNhY2hlUGFnZURlY2lzaW9uKFBhZ2UqIHBhZ2UpCiAg
ICAgaW50IGluZGVudExldmVsID0gMDsgICAgCiAgICAgUENMT0coIi0tLS0tLS0tXG4gRGV0ZXJt
aW5pbmcgaWYgcGFnZSBjYW4gYmUgY2FjaGVkOiIpOwogICAgIAotICAgIGJvb2wgY2Fubm90Q2Fj
aGUgPSAhbG9nQ2FuQ2FjaGVGcmFtZURlY2lzaW9uKHBhZ2UtPm1haW5GcmFtZSgpLCAxKTsKKyAg
ICB1bnNpZ25lZCByZWplY3RDYXVzZXMgPSAwOworICAgIHVuc2lnbmVkIGZyYW1lUmVqZWN0Q2F1
c2VzID0gbG9nQ2FuQ2FjaGVGcmFtZURlY2lzaW9uKHBhZ2UtPm1haW5GcmFtZSgpLCAxKTsKKyAg
ICBpZiAoZnJhbWVSZWplY3RDYXVzZXMpCisgICAgICAgIHJlamVjdENhdXNlcyB8PSAxIDw8IGZy
YW1lUmVqZWN0ZWQ7CiAgICAgCiAgICAgaWYgKCFwYWdlLT5iYWNrRm9yd2FyZCgpLT5pc0FjdGl2
ZSgpKSB7CiAgICAgICAgIFBDTE9HKCIgICAtVGhlIGJhY2svZm9yd2FyZCBsaXN0IGlzIGRpc2Fi
bGVkIG9yIGhhcyAwIGNhcGFjaXR5Iik7Ci0gICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAg
ICAgICAgcmVqZWN0Q2F1c2VzIHw9IDEgPDwgZGlzYWJsZWRCYWNrRm9yd2FyZExpc3Q7CiAgICAg
fQogICAgIGlmICghcGFnZS0+c2V0dGluZ3MoKS0+dXNlc1BhZ2VDYWNoZSgpKSB7CiAgICAgICAg
IFBDTE9HKCIgICAtUGFnZSBzZXR0aW5ncyBzYXlzIGIvZiBjYWNoZSBkaXNhYmxlZCIpOwotICAg
ICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgIHJlamVjdENhdXNlcyB8PSAxIDw8IGRp
c2FibGVkUGFnZUNhY2hlOwogICAgIH0KICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQog
ICAgIGlmIChEZXZpY2VNb3Rpb25Db250cm9sbGVyOjppc0FjdGl2ZUF0KHBhZ2UpKSB7CiAgICAg
ICAgIFBDTE9HKCIgICAtUGFnZSBpcyB1c2luZyBEZXZpY2VNb3Rpb24iKTsKLSAgICAgICAgY2Fu
bm90Q2FjaGUgPSB0cnVlOworICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCB1c2VzRGV2aWNl
TW90aW9uOwogICAgIH0KICAgICBpZiAoRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjppc0Fj
dGl2ZUF0KHBhZ2UpKSB7CiAgICAgICAgIFBDTE9HKCIgICAtUGFnZSBpcyB1c2luZyBEZXZpY2VP
cmllbnRhdGlvbiIpOwotICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgIHJlamVj
dENhdXNlcyB8PSAxIDw8IHVzZXNEZXZpY2VPcmllbnRhdGlvbjsKICAgICB9CiAjZW5kaWYKICAg
ICBGcmFtZUxvYWRUeXBlIGxvYWRUeXBlID0gcGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5s
b2FkVHlwZSgpOwogICAgIGlmIChsb2FkVHlwZSA9PSBGcmFtZUxvYWRUeXBlUmVsb2FkKSB7CiAg
ICAgICAgIFBDTE9HKCIgICAtTG9hZCB0eXBlIGlzOiBSZWxvYWQiKTsKLSAgICAgICAgY2Fubm90
Q2FjaGUgPSB0cnVlOworICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBpc1JlbG9hZDsKICAg
ICB9CiAgICAgaWYgKGxvYWRUeXBlID09IEZyYW1lTG9hZFR5cGVSZWxvYWRGcm9tT3JpZ2luKSB7
CiAgICAgICAgIFBDTE9HKCIgICAtTG9hZCB0eXBlIGlzOiBSZWxvYWQgZnJvbSBvcmlnaW4iKTsK
LSAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8
PCBpc1JlbG9hZEZyb21PcmlnaW47CiAgICAgfQogICAgIGlmIChsb2FkVHlwZSA9PSBGcmFtZUxv
YWRUeXBlU2FtZSkgewogICAgICAgICBQQ0xPRygiICAgLUxvYWQgdHlwZSBpczogU2FtZSIpOwot
ICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgIHJlamVjdENhdXNlcyB8PSAxIDw8
IGlzU2FtZUxvYWQ7CiAgICAgfQogICAgIAotICAgIFBDTE9HKGNhbm5vdENhY2hlID8gIiBQYWdl
IENBTk5PVCBiZSBjYWNoZWRcbi0tLS0tLS0tIiA6ICIgUGFnZSBDQU4gYmUgY2FjaGVkXG4tLS0t
LS0tLSIpOworICAgIFBDTE9HKHJlamVjdENhdXNlcyA/ICIgUGFnZSBDQU5OT1QgYmUgY2FjaGVk
XG4tLS0tLS0tLSIgOiAiIFBhZ2UgQ0FOIGJlIGNhY2hlZFxuLS0tLS0tLS0iKTsKKworICAgIEhp
c3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1lcmF0aW9uKCJQYWdlQ2FjaGUuUGFnZVJlamVj
dGVkIiwgISFyZWplY3RDYXVzZXMsIDIpOworICAgIGludCByZWplY3RDb3VudCA9IDA7CisgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBwYWdlUmVqZWN0Q2F1c2VfY291bnQ7ICsraSkKKyAgICAgICAg
aWYgKHJlamVjdENhdXNlcyAmICgxIDw8IGkpKSB7CisgICAgICAgICAgICArK3JlamVjdENvdW50
OworICAgICAgICAgICAgSGlzdG9ncmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51bWVyYXRpb24oIlBh
Z2VDYWNoZS5QYWdlUmVqZWN0Q2F1c2UiLCBpLCBwYWdlUmVqZWN0Q2F1c2VfY291bnQpOworICAg
ICAgICB9CisgICAgSGlzdG9ncmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51bWVyYXRpb24oIlBhZ2VD
YWNoZS5QYWdlUmVqZWN0Q2F1c2VDb3VudCIsIHJlamVjdENvdW50LCAxK3BhZ2VSZWplY3RDYXVz
ZV9jb3VudCk7CisgICAgY29uc3QgY2hhciogaGlzdG9ncmFtTmFtZXNbXSA9IHsgIlBhZ2VDYWNo
ZS5QYWdlUmVqZWN0Q2F1c2VTaW5nbGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJQYWdlQ2FjaGUuUGFnZVJlamVjdENhdXNlRG91YmxlIiB9OworICAgIGNvbnN0IGlu
dCBoaXN0b2dyYW1Db3VudCA9IHNpemVvZihoaXN0b2dyYW1OYW1lcykgLyBzaXplb2YoY2hhciop
OworICAgIGlmIChyZWplY3RDb3VudCA+IDEgJiYgcmVqZWN0Q291bnQgPD0gaGlzdG9ncmFtQ291
bnQpIHsKKyAgICAgICAgY29uc3QgY2hhciogaGlzdG9ncmFtID0gaGlzdG9ncmFtTmFtZXNbcmVq
ZWN0Q291bnQtMV07CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZnJhbWVSZWplY3RDYXVz
ZV9jb3VudDsgKytpKQorICAgICAgICAgICAgaWYgKHJlamVjdENhdXNlcyAmICgxIDw8IGkpKQor
ICAgICAgICAgICAgICAgIEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1lcmF0aW9uKGhp
c3RvZ3JhbSwgaSwgZnJhbWVSZWplY3RDYXVzZV9jb3VudCk7CisgICAgfQorCisgICAgLy8gUmVw
b3J0IGZvciBhbGwgc3ViZnJhbWVzIHBlciBwYWdlIGFzIHdlbGwuCisgICAgaWYgKGZyYW1lUmVq
ZWN0Q2F1c2VzKSB7CisgICAgICAgIEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1lcmF0
aW9uKCJQYWdlQ2FjaGUuUGFnZUZyYW1lc1JlamVjdGVkIiwgISFmcmFtZVJlamVjdENhdXNlcywg
Mik7CisgICAgICAgIGludCBmcmFtZVJlamVjdENvdW50ID0gMDsKKyAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPD0gZnJhbWVSZWplY3RDYXVzZV9jb3VudDsgKytpKQorICAgICAgICAgICAgaWYg
KGZyYW1lUmVqZWN0Q2F1c2VzICYgKDEgPDwgaSkpIHsKKyAgICAgICAgICAgICAgICArK2ZyYW1l
UmVqZWN0Q291bnQ7CisgICAgICAgICAgICAgICAgSGlzdG9ncmFtU3VwcG9ydDo6aGlzdG9ncmFt
RW51bWVyYXRpb24oIlBhZ2VDYWNoZS5QYWdlRnJhbWVzUmVqZWN0Q2F1c2UiLCBpLCBmcmFtZVJl
amVjdENhdXNlX2NvdW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgSGlzdG9ncmFtU3VwcG9y
dDo6aGlzdG9ncmFtRW51bWVyYXRpb24oIlBhZ2VDYWNoZS5QYWdlRnJhbWVzUmVqZWN0Q2F1c2VD
b3VudCIsIGZyYW1lUmVqZWN0Q291bnQsIDErZnJhbWVSZWplY3RDYXVzZV9jb3VudCk7CisKKyAg
ICAgICAgY29uc3QgY2hhciogZnJhbWVIaXN0b2dyYW1OYW1lc1tdID0geyAiUGFnZUNhY2hlLlBh
Z2VGcmFtZXNSZWplY3RDYXVzZVNpbmdsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlBhZ2VDYWNoZS5QYWdlRnJhbWVzUmVqZWN0Q2F1c2VEb3VibGUi
IH07CisgICAgICAgIGNvbnN0IGludCBmcmFtZUhpc3RvZ3JhbUNvdW50ID0gc2l6ZW9mKGZyYW1l
SGlzdG9ncmFtTmFtZXMpIC8gc2l6ZW9mKGNoYXIqKTsKKyAgICAgICAgaWYgKGZyYW1lUmVqZWN0
Q291bnQgPiAxICYmIGZyYW1lUmVqZWN0Q291bnQgPCBmcmFtZUhpc3RvZ3JhbUNvdW50KSB7Cisg
ICAgICAgICAgICBjb25zdCBjaGFyKiBoaXN0b2dyYW0gPSBmcmFtZUhpc3RvZ3JhbU5hbWVzW2Zy
YW1lUmVqZWN0Q291bnQtMV07CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZyYW1l
UmVqZWN0Q2F1c2VfY291bnQ7ICsraSkKKyAgICAgICAgICAgICAgICBpZiAoZnJhbWVSZWplY3RD
YXVzZXMgJiAoMSA8PCBpKSkKKyAgICAgICAgICAgICAgICAgICAgSGlzdG9ncmFtU3VwcG9ydDo6
aGlzdG9ncmFtRW51bWVyYXRpb24oaGlzdG9ncmFtLCBpLCBmcmFtZVJlamVjdENhdXNlX2NvdW50
KTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogI2VuZGlmIApAQCAtMjcwLDcgKzM3Myw3IEBAIGJv
b2wgUGFnZUNhY2hlOjpjYW5DYWNoZShQYWdlKiBwYWdlKQogICAgIGlmICghcGFnZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIAotI2lmbmRlZiBOREVCVUcKKyNpZiBQTEFURk9STShDSFJP
TUlVTSkgfHwgIWRlZmluZWQoTkRFQlVHKQogICAgIGxvZ0NhbkNhY2hlUGFnZURlY2lzaW9uKHBh
Z2UpOwogI2VuZGlmCiAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129982</attachid>
            <date>2012-03-02 17:13:29 -0800</date>
            <delta_ts>2012-03-06 10:41:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80187-20120302201328.patch</filename>
            <type>text/plain</type>
            <size>13996</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTkxOTRmOGVmYjgyNWNi
NjVkMDE0NDhjNTk3Yjk2YTAxY2E2NTFkYS4uOTQ0YzRjMWZhNTBmODJiODhjMWNiMTg4ZGE1NWUz
OTMyYjI4MWEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTAzLTAyICBHYXZp
biBQZXRlcnMgIDxnYXZpbnBAY2hyb21pdW0ub3JnPgorCisgICAgICAgIGFkZCBIaXN0b2dyYW1z
IGZvciByZXBvcnRpbmcgb24gUGFnZUNhY2hlIHJlamVjdCByZWFzb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDE4NworCisgICAgICAgIEVuaGFu
Y2UgdGhlIFBhZ2VDYWNoZSBkZWJ1ZyBtb2RlIHNvIHRoYXQgaXQgdXNlcyBIaXN0b2dyYW1zIHRv
CisgICAgICAgIHJlcG9ydCBvbiBjYXVzZXMgb2YgZmFpbHVyZS4gIFR1cm4gb24gdGhlIGRlYnVn
IHByaW50aW5nIHBhdGgKKyAgICAgICAgZXZlbiBpbiBub24tZGVidWcgQ2hyb21pdW0gYnVpbGRz
LCBzbyB0aGVzZSBoaXN0b2dyYW1zIHdpbGwKKyAgICAgICAgdXBkYXRlLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgZG9lcyBu
b3QgY2hhbmdlIGJlaGF2aW91ci4KKworICAgICAgICAqIGhpc3RvcnkvUGFnZUNhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6bG9nQ2FuQ2FjaGVGcmFtZURl
Y2lzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmxvZ0NhbkNhY2hlUGFnZURlY2lzaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6Y2FuQ2FjaGUpOgorCiAyMDEyLTAzLTAyICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21p
dW1dIFJlbW92ZSBUUkFDRV9FVkVOVCBmcm9tIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVh
ZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKaW5kZXggNjMxNGNjOGExMjc2ODIy
MjFkZTVjZGEzMTNiODI5NTUyNWE4ZWE2Zi4uNjIzZDBmYWY3MzExMDIxZmYzMDUxZWE2MDhhMzJh
YTMyNmU0ZWI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcApAQCAtNDAsNiAr
NDAsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJD
bGllbnQuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlclN0YXRlTWFjaGluZS5oIgorI2luY2x1ZGUg
Ikhpc3RvZ3JhbVN1cHBvcnQuaCIKICNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC01NiwxMiArNTcsMzYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgZG91YmxlIGF1dG9yZWxlYXNlSW50ZXJ2YWwg
PSAzOwogCi0jaWZuZGVmIE5ERUJVRworI2lmIFBMQVRGT1JNKENIUk9NSVVNKSB8fCAhZGVmaW5l
ZChOREVCVUcpCiAKICNkZWZpbmUgUENMT0coLi4uKSBMT0coUGFnZUNhY2hlLCAiJSpzJXMiLCBp
bmRlbnRMZXZlbCo0LCAiIiwgbWFrZVN0cmluZyhfX1ZBX0FSR1NfXykudXRmOCgpLmRhdGEoKSkK
ICAgICAKLXN0YXRpYyBib29sIGxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lvbihGcmFtZSogZnJhbWUs
IGludCBpbmRlbnRMZXZlbCkKKy8vIFVzZWQgaW4gaGlzdG9ncmFtcywgcGxlYXNlIG9ubHkgYWRk
IGF0IHRoZSBlbmQsIGFuZCBkbyBub3QgcmVtb3ZlIGVsZW1lbnRzLgorZW51bSBGcmFtZVJlamVj
dENhdXNlIHsKKyAgICBub0RvY3VtZW50TG9hZGVyID0gMCwKKyAgICBtYWluRG9jdW1lbnRFcnJv
ciwKKyAgICBpc0Vycm9yUGFnZSwKKyAgICBoYXNQbHVnaW5zLAorICAgIGlzSHR0cHNBbmRDYWNo
ZUNvbnRyb2xsZWQsCisgICAgaGFzVW5sb2FkTGlzdGVuZXIsCisgICAgaGFzRGF0YWJhc2VIYW5k
bGVzLAorICAgIGhhc1NoYXJlZFdvcmtlcnMsCisgICAgdXNpbmdHZW9sb2NhdGlvbiwKKyAgICBu
b0hpc3RvcnlJdGVtLAorICAgIHF1aWNrUmVkaXJlY3RDb21pbmcsCisgICAgaXNMb2FkaW5nSW5B
UElTZW5zZSwKKyAgICBpc1N0b3BwaW5nLAorICAgIGNhblN1c3BlbmRBY3RpdmVET01PYmplY3Rz
LAorICAgIGRvY3VtZW50TG9hZGVyVXNlc0FwcGxpY2F0aW9uQ2FjaGUsCisgICAgY2xpZW50RGVu
aWVzQ2FjaGluZywKKyAgICBmcmFtZVJlamVjdENhdXNlX2NvdW50LAorfTsKKworc3RhdGljIHVu
c2lnbmVkIGxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lvbihGcmFtZSogZnJhbWUsIGludCBpbmRlbnRM
ZXZlbCkKIHsKKyNpZmRlZiBOREVCVUcKKyAgICBVTlVTRURfUEFSQU0oaW5kZW50TGV2ZWwpOwor
I2VuZGlmCiAgICAgLy8gT25seSBib3RoZXIgbG9nZ2luZyBmb3IgZnJhbWVzIHRoYXQgaGF2ZSBh
Y3R1YWxseSBsb2FkZWQgYW5kIGhhdmUgY29udGVudC4KICAgICBpZiAoZnJhbWUtPmxvYWRlcigp
LT5zdGF0ZU1hY2hpbmUoKS0+Y3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC03Niw5MCArMTAxLDEyNSBAQCBzdGF0aWMgYm9vbCBsb2dDYW5D
YWNoZUZyYW1lRGVjaXNpb24oRnJhbWUqIGZyYW1lLCBpbnQgaW5kZW50TGV2ZWwpCiAgICAgZWxz
ZQogICAgICAgICBQQ0xPRygiIERldGVybWluaW5nIGlmIHN1YmZyYW1lIHdpdGggVVJMICgiLCBj
dXJyZW50VVJMLnN0cmluZygpLCAiKSBjYW4gYmUgY2FjaGVkOiIpOwogICAgIAotICAgIGJvb2wg
Y2Fubm90Q2FjaGUgPSBmYWxzZTsKKyAgICB1bnNpZ25lZCByZWplY3RDYXVzZXMgPSAwOwogICAg
IAogICAgIGlmICghZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpKSB7CiAgICAgICAg
IFBDTE9HKCIgICAtVGhlcmUgaXMgbm8gRG9jdW1lbnRMb2FkZXIgb2JqZWN0Iik7Ci0gICAgICAg
IGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgcmVqZWN0Q2F1c2VzIHw9IDEgPDwgbm9Eb2N1
bWVudExvYWRlcjsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoIWZyYW1lLT5sb2FkZXIoKS0+
ZG9jdW1lbnRMb2FkZXIoKS0+bWFpbkRvY3VtZW50RXJyb3IoKS5pc051bGwoKSkgewogICAgICAg
ICAgICAgUENMT0coIiAgIC1NYWluIGRvY3VtZW50IGhhcyBhbiBlcnJvciIpOwotICAgICAgICAg
ICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAgcmVqZWN0Q2F1c2VzIHw9IDEgPDwg
bWFpbkRvY3VtZW50RXJyb3I7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGZyYW1lLT5sb2FkZXIo
KS0+ZG9jdW1lbnRMb2FkZXIoKS0+c3Vic3RpdHV0ZURhdGEoKS5pc1ZhbGlkKCkgJiYgZnJhbWUt
PmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5zdWJzdGl0dXRlRGF0YSgpLmZhaWxpbmdVUkwo
KS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIFBDTE9HKCIgICAtRnJhbWUgaXMgYW4gZXJyb3Ig
cGFnZSIpOwotICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAgcmVq
ZWN0Q2F1c2VzIHw9IDEgPDwgaXNFcnJvclBhZ2U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGZy
YW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+c3Vic3RpdHV0ZURhdGEoKS5pc1ZhbGlk
KCkgJiYgZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5zdWJzdGl0dXRlRGF0YSgp
LmZhaWxpbmdVUkwoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIFBDTE9HKCIgICAtRnJhbWUg
aXMgYW4gZXJyb3IgcGFnZSIpOworICAgICAgICAgICAgcmVqZWN0Q2F1c2VzIHw9IDEgPDwgaXNF
cnJvclBhZ2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGZyYW1lLT5sb2FkZXIoKS0+c3ViZnJh
bWVMb2FkZXIoKS0+Y29udGFpbnNQbHVnaW5zKCkgJiYgIWZyYW1lLT5wYWdlKCktPnNldHRpbmdz
KCktPnBhZ2VDYWNoZVN1cHBvcnRzUGx1Z2lucygpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAg
LUZyYW1lIGNvbnRhaW5zIHBsdWdpbnMiKTsKLSAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1
ZTsKKyAgICAgICAgICAgIHJlamVjdENhdXNlcyB8PSAxIDw8IGhhc1BsdWdpbnM7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5wcm90b2NvbElzKCJodHRw
cyIpCiAgICAgICAgICAgICAmJiAoZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5y
ZXNwb25zZSgpLmNhY2hlQ29udHJvbENvbnRhaW5zTm9DYWNoZSgpCiAgICAgICAgICAgICAgICAg
fHwgZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpLmNhY2hlQ29u
dHJvbENvbnRhaW5zTm9TdG9yZSgpKSkgewogICAgICAgICAgICAgUENMT0coIiAgIC1GcmFtZSBp
cyBIVFRQUywgYW5kIGNhY2hlIGNvbnRyb2wgcHJvaGliaXRzIGNhY2hpbmcgb3Igc3RvcmluZyIp
OwotICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAgcmVqZWN0Q2F1
c2VzIHw9IDEgPDwgaXNIdHRwc0FuZENhY2hlQ29udHJvbGxlZDsKICAgICAgICAgfQogICAgICAg
ICBpZiAoZnJhbWUtPmRvbVdpbmRvdygpICYmIGZyYW1lLT5kb21XaW5kb3coKS0+aGFzRXZlbnRM
aXN0ZW5lcnMoZXZlbnROYW1lcygpLnVubG9hZEV2ZW50KSkgewogICAgICAgICAgICAgUENMT0co
IiAgIC1GcmFtZSBoYXMgYW4gdW5sb2FkIGV2ZW50IGxpc3RlbmVyIik7Ci0gICAgICAgICAgICBj
YW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBoYXNV
bmxvYWRMaXN0ZW5lcjsKICAgICAgICAgfQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAg
ICAgIGlmIChEYXRhYmFzZUNvbnRleHQ6Omhhc09wZW5EYXRhYmFzZXMoZnJhbWUtPmRvY3VtZW50
KCkpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLUZyYW1lIGhhcyBvcGVuIGRhdGFiYXNlIGhh
bmRsZXMiKTsKLSAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgICAgIHJl
amVjdENhdXNlcyB8PSAxIDw8IGhhc0RhdGFiYXNlSGFuZGxlczsKICAgICAgICAgfQogI2VuZGlm
CiAjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQogICAgICAgICBpZiAoU2hhcmVkV29ya2VyUmVw
b3NpdG9yeTo6aGFzU2hhcmVkV29ya2VycyhmcmFtZS0+ZG9jdW1lbnQoKSkpIHsKICAgICAgICAg
ICAgIFBDTE9HKCIgICAtRnJhbWUgaGFzIGFzc29jaWF0ZWQgU2hhcmVkV29ya2VycyIpOwotICAg
ICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAgcmVqZWN0Q2F1c2VzIHw9
IDEgPDwgaGFzU2hhcmVkV29ya2VyczsKICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIGlmIChm
cmFtZS0+ZG9jdW1lbnQoKS0+dXNpbmdHZW9sb2NhdGlvbigpKSB7CiAgICAgICAgICAgICBQQ0xP
RygiICAgLUZyYW1lIHVzZXMgR2VvbG9jYXRpb24iKTsKLSAgICAgICAgICAgIGNhbm5vdENhY2hl
ID0gdHJ1ZTsKKyAgICAgICAgICAgIHJlamVjdENhdXNlcyB8PSAxIDw8IHVzaW5nR2VvbG9jYXRp
b247CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFmcmFtZS0+bG9hZGVyKCktPmhpc3RvcnkoKS0+
Y3VycmVudEl0ZW0oKSkgewogICAgICAgICAgICAgUENMT0coIiAgIC1ObyBjdXJyZW50IGhpc3Rv
cnkgaXRlbSIpOwotICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAg
cmVqZWN0Q2F1c2VzIHw9IDEgPDwgbm9IaXN0b3J5SXRlbTsKICAgICAgICAgfQogICAgICAgICBp
ZiAoZnJhbWUtPmxvYWRlcigpLT5xdWlja1JlZGlyZWN0Q29taW5nKCkpIHsKICAgICAgICAgICAg
IFBDTE9HKCIgICAtUXVpY2sgcmVkaXJlY3QgaXMgY29taW5nIik7Ci0gICAgICAgICAgICBjYW5u
b3RDYWNoZSA9IHRydWU7CisgICAgICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBxdWlja1Jl
ZGlyZWN0Q29taW5nOwogICAgICAgICB9CiAgICAgICAgIGlmIChmcmFtZS0+bG9hZGVyKCktPmRv
Y3VtZW50TG9hZGVyKCktPmlzTG9hZGluZ0luQVBJU2Vuc2UoKSkgewogICAgICAgICAgICAgUENM
T0coIiAgIC1Eb2N1bWVudExvYWRlciBpcyBzdGlsbCBsb2FkaW5nIGluIEFQSSBzZW5zZSIpOwot
ICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAgcmVqZWN0Q2F1c2Vz
IHw9IDEgPDwgaXNMb2FkaW5nSW5BUElTZW5zZTsKICAgICAgICAgfQogICAgICAgICBpZiAoZnJh
bWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5pc1N0b3BwaW5nKCkpIHsKICAgICAgICAg
ICAgIFBDTE9HKCIgICAtRG9jdW1lbnRMb2FkZXIgaXMgaW4gdGhlIG1pZGRsZSBvZiBzdG9wcGlu
ZyIpOwotICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAgcmVqZWN0
Q2F1c2VzIHw9IDEgPDwgaXNTdG9wcGluZzsKICAgICAgICAgfQogICAgICAgICBpZiAoIWZyYW1l
LT5kb2N1bWVudCgpLT5jYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cygpKSB7CiAgICAgICAgICAg
ICBQQ0xPRygiICAgLVRoZSBkb2N1bWVudCBjYW5ub3Qgc3VzcGVjdCBpdHMgYWN0aXZlIERPTSBP
YmplY3RzIik7Ci0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgICAgICBy
ZWplY3RDYXVzZXMgfD0gMSA8PCBjYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0czsKICAgICAgICAg
fQogICAgICAgICBpZiAoIWZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGlj
YXRpb25DYWNoZUhvc3QoKS0+Y2FuQ2FjaGVJblBhZ2VDYWNoZSgpKSB7CiAgICAgICAgICAgICBQ
Q0xPRygiICAgLVRoZSBEb2N1bWVudExvYWRlciB1c2VzIGFuIGFwcGxpY2F0aW9uIGNhY2hlIik7
Ci0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgICAgICByZWplY3RDYXVz
ZXMgfD0gMSA8PCBkb2N1bWVudExvYWRlclVzZXNBcHBsaWNhdGlvbkNhY2hlOwogICAgICAgICB9
CiAgICAgICAgIGlmICghZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+Y2FuQ2FjaGVQYWdlKCkp
IHsKICAgICAgICAgICAgIFBDTE9HKCIgICAtVGhlIGNsaWVudCBzYXlzIHRoaXMgZnJhbWUgY2Fu
bm90IGJlIGNhY2hlZCIpOwotICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOyAKKyAgICAg
ICAgICAgIHJlamVjdENhdXNlcyB8PSAxIDw8IGNsaWVudERlbmllc0NhY2hpbmc7CiAgICAgICAg
IH0KICAgICB9Ci0gICAgCisKKyAgICBIaXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJh
dGlvbigiUGFnZUNhY2hlLkZyYW1lUmVqZWN0ZWQiLCAhIXJlamVjdENhdXNlcywgMik7CisgICAg
aW50IHJlamVjdENvdW50ID0gMDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGZyYW1lUmVqZWN0
Q2F1c2VfY291bnQ7ICsraSkKKyAgICAgICAgaWYgKHJlamVjdENhdXNlcyAmICgxIDw8IGkpKSB7
CisgICAgICAgICAgICArK3JlamVjdENvdW50OworICAgICAgICAgICAgSGlzdG9ncmFtU3VwcG9y
dDo6aGlzdG9ncmFtRW51bWVyYXRpb24oIlBhZ2VDYWNoZS5GcmFtZVJlamVjdENhdXNlIiwgaSwg
ZnJhbWVSZWplY3RDYXVzZV9jb3VudCk7CisgICAgICAgIH0KKyAgICBIaXN0b2dyYW1TdXBwb3J0
OjpoaXN0b2dyYW1FbnVtZXJhdGlvbigiUGFnZUNhY2hlLkZyYW1lUmVqZWN0Q2F1c2VDb3VudCIs
IHJlamVjdENvdW50LCAxK2ZyYW1lUmVqZWN0Q2F1c2VfY291bnQpOworCisgICAgY29uc3QgY2hh
ciogaGlzdG9ncmFtTmFtZXNbXSA9IHsgIlBhZ2VDYWNoZS5GcmFtZVJlamVjdENhdXNlU2luZ2xl
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGFnZUNhY2hlLkZyYW1l
UmVqZWN0Q2F1c2VEb3VibGUiIH07CisgICAgY29uc3QgaW50IGhpc3RvZ3JhbUNvdW50ID0gc2l6
ZW9mKGhpc3RvZ3JhbU5hbWVzKSAvIHNpemVvZihjaGFyKik7CisgICAgaWYgKHJlamVjdENvdW50
ID4gMSAmJiByZWplY3RDb3VudCA8PSBoaXN0b2dyYW1Db3VudCkgeworICAgICAgICBjb25zdCBj
aGFyKiBoaXN0b2dyYW0gPSBoaXN0b2dyYW1OYW1lc1tyZWplY3RDb3VudC0xXTsKKyAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBmcmFtZVJlamVjdENhdXNlX2NvdW50OyArK2kpCisgICAgICAg
ICAgICBpZiAocmVqZWN0Q2F1c2VzICYgKDEgPDwgaSkpCisgICAgICAgICAgICAgICAgSGlzdG9n
cmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51bWVyYXRpb24oaGlzdG9ncmFtLCBpLCBmcmFtZVJlamVj
dENhdXNlX2NvdW50KTsKKyAgICB9CisKICAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IGZyYW1lLT50
cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNp
YmxpbmcoKSkKLSAgICAgICAgaWYgKCFsb2dDYW5DYWNoZUZyYW1lRGVjaXNpb24oY2hpbGQsIGlu
ZGVudExldmVsICsgMSkpCi0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAg
IHJlamVjdENhdXNlcyB8PSBsb2dDYW5DYWNoZUZyYW1lRGVjaXNpb24oY2hpbGQsIGluZGVudExl
dmVsICsgMSk7CiAgICAgCi0gICAgUENMT0coY2Fubm90Q2FjaGUgPyAiIEZyYW1lIENBTk5PVCBi
ZSBjYWNoZWQiIDogIiBGcmFtZSBDQU4gYmUgY2FjaGVkIik7CisgICAgUENMT0cocmVqZWN0Q2F1
c2VzID8gIiBGcmFtZSBDQU5OT1QgYmUgY2FjaGVkIiA6ICIgRnJhbWUgQ0FOIGJlIGNhY2hlZCIp
OwogICAgIFBDTE9HKCIrLS0tIik7CiAgICAgCi0gICAgcmV0dXJuICFjYW5ub3RDYWNoZTsKKyAg
ICByZXR1cm4gcmVqZWN0Q2F1c2VzOwogfQotICAgIAorCisvLyBVc2VkIGluIGhpc3RvZ3JhbXMs
IHBsZWFzZSBvbmx5IGFkZCBhdCB0aGUgZW5kLCBhbmQgZG8gbm90IHJlbW92ZSBlbGVtZW50cy4K
K2VudW0gUGFnZVJlamVjdENhdXNlIHsKKyAgICBmcmFtZVJlamVjdGVkID0gMCwKKyAgICBkaXNh
YmxlZEJhY2tGb3J3YXJkTGlzdCwKKyAgICBkaXNhYmxlZFBhZ2VDYWNoZSwKKyAgICB1c2VzRGV2
aWNlTW90aW9uLAorICAgIHVzZXNEZXZpY2VPcmllbnRhdGlvbiwKKyAgICBpc1JlbG9hZCwKKyAg
ICBpc1JlbG9hZEZyb21PcmlnaW4sCisgICAgaXNTYW1lTG9hZCwKKyAgICBwYWdlUmVqZWN0Q2F1
c2VfY291bnQsCit9OworCiBzdGF0aWMgdm9pZCBsb2dDYW5DYWNoZVBhZ2VEZWNpc2lvbihQYWdl
KiBwYWdlKQogewogICAgIC8vIE9ubHkgYm90aGVyIGxvZ2dpbmcgZm9yIG1haW4gZnJhbWVzIHRo
YXQgaGF2ZSBhY3R1YWxseSBsb2FkZWQgYW5kIGhhdmUgY29udGVudC4KQEAgLTE3Miw0MSArMjMy
LDg0IEBAIHN0YXRpYyB2b2lkIGxvZ0NhbkNhY2hlUGFnZURlY2lzaW9uKFBhZ2UqIHBhZ2UpCiAg
ICAgaW50IGluZGVudExldmVsID0gMDsgICAgCiAgICAgUENMT0coIi0tLS0tLS0tXG4gRGV0ZXJt
aW5pbmcgaWYgcGFnZSBjYW4gYmUgY2FjaGVkOiIpOwogICAgIAotICAgIGJvb2wgY2Fubm90Q2Fj
aGUgPSAhbG9nQ2FuQ2FjaGVGcmFtZURlY2lzaW9uKHBhZ2UtPm1haW5GcmFtZSgpLCAxKTsKKyAg
ICB1bnNpZ25lZCByZWplY3RDYXVzZXMgPSAwOworICAgIHVuc2lnbmVkIGZyYW1lUmVqZWN0Q2F1
c2VzID0gbG9nQ2FuQ2FjaGVGcmFtZURlY2lzaW9uKHBhZ2UtPm1haW5GcmFtZSgpLCBpbmRlbnRM
ZXZlbCsxKTsKKyAgICBpZiAoZnJhbWVSZWplY3RDYXVzZXMpCisgICAgICAgIHJlamVjdENhdXNl
cyB8PSAxIDw8IGZyYW1lUmVqZWN0ZWQ7CiAgICAgCiAgICAgaWYgKCFwYWdlLT5iYWNrRm9yd2Fy
ZCgpLT5pc0FjdGl2ZSgpKSB7CiAgICAgICAgIFBDTE9HKCIgICAtVGhlIGJhY2svZm9yd2FyZCBs
aXN0IGlzIGRpc2FibGVkIG9yIGhhcyAwIGNhcGFjaXR5Iik7Ci0gICAgICAgIGNhbm5vdENhY2hl
ID0gdHJ1ZTsKKyAgICAgICAgcmVqZWN0Q2F1c2VzIHw9IDEgPDwgZGlzYWJsZWRCYWNrRm9yd2Fy
ZExpc3Q7CiAgICAgfQogICAgIGlmICghcGFnZS0+c2V0dGluZ3MoKS0+dXNlc1BhZ2VDYWNoZSgp
KSB7CiAgICAgICAgIFBDTE9HKCIgICAtUGFnZSBzZXR0aW5ncyBzYXlzIGIvZiBjYWNoZSBkaXNh
YmxlZCIpOwotICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgIHJlamVjdENhdXNl
cyB8PSAxIDw8IGRpc2FibGVkUGFnZUNhY2hlOwogICAgIH0KICNpZiBFTkFCTEUoREVWSUNFX09S
SUVOVEFUSU9OKQogICAgIGlmIChEZXZpY2VNb3Rpb25Db250cm9sbGVyOjppc0FjdGl2ZUF0KHBh
Z2UpKSB7CiAgICAgICAgIFBDTE9HKCIgICAtUGFnZSBpcyB1c2luZyBEZXZpY2VNb3Rpb24iKTsK
LSAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8
PCB1c2VzRGV2aWNlTW90aW9uOwogICAgIH0KICAgICBpZiAoRGV2aWNlT3JpZW50YXRpb25Db250
cm9sbGVyOjppc0FjdGl2ZUF0KHBhZ2UpKSB7CiAgICAgICAgIFBDTE9HKCIgICAtUGFnZSBpcyB1
c2luZyBEZXZpY2VPcmllbnRhdGlvbiIpOwotICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7Cisg
ICAgICAgIHJlamVjdENhdXNlcyB8PSAxIDw8IHVzZXNEZXZpY2VPcmllbnRhdGlvbjsKICAgICB9
CiAjZW5kaWYKICAgICBGcmFtZUxvYWRUeXBlIGxvYWRUeXBlID0gcGFnZS0+bWFpbkZyYW1lKCkt
PmxvYWRlcigpLT5sb2FkVHlwZSgpOwogICAgIGlmIChsb2FkVHlwZSA9PSBGcmFtZUxvYWRUeXBl
UmVsb2FkKSB7CiAgICAgICAgIFBDTE9HKCIgICAtTG9hZCB0eXBlIGlzOiBSZWxvYWQiKTsKLSAg
ICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBp
c1JlbG9hZDsKICAgICB9CiAgICAgaWYgKGxvYWRUeXBlID09IEZyYW1lTG9hZFR5cGVSZWxvYWRG
cm9tT3JpZ2luKSB7CiAgICAgICAgIFBDTE9HKCIgICAtTG9hZCB0eXBlIGlzOiBSZWxvYWQgZnJv
bSBvcmlnaW4iKTsKLSAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICByZWplY3RD
YXVzZXMgfD0gMSA8PCBpc1JlbG9hZEZyb21PcmlnaW47CiAgICAgfQogICAgIGlmIChsb2FkVHlw
ZSA9PSBGcmFtZUxvYWRUeXBlU2FtZSkgewogICAgICAgICBQQ0xPRygiICAgLUxvYWQgdHlwZSBp
czogU2FtZSIpOwotICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgIHJlamVjdENh
dXNlcyB8PSAxIDw8IGlzU2FtZUxvYWQ7CiAgICAgfQogICAgIAotICAgIFBDTE9HKGNhbm5vdENh
Y2hlID8gIiBQYWdlIENBTk5PVCBiZSBjYWNoZWRcbi0tLS0tLS0tIiA6ICIgUGFnZSBDQU4gYmUg
Y2FjaGVkXG4tLS0tLS0tLSIpOworICAgIFBDTE9HKHJlamVjdENhdXNlcyA/ICIgUGFnZSBDQU5O
T1QgYmUgY2FjaGVkXG4tLS0tLS0tLSIgOiAiIFBhZ2UgQ0FOIGJlIGNhY2hlZFxuLS0tLS0tLS0i
KTsKKworICAgIEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1lcmF0aW9uKCJQYWdlQ2Fj
aGUuUGFnZVJlamVjdGVkIiwgISFyZWplY3RDYXVzZXMsIDIpOworICAgIGludCByZWplY3RDb3Vu
dCA9IDA7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYWdlUmVqZWN0Q2F1c2VfY291bnQ7ICsr
aSkKKyAgICAgICAgaWYgKHJlamVjdENhdXNlcyAmICgxIDw8IGkpKSB7CisgICAgICAgICAgICAr
K3JlamVjdENvdW50OworICAgICAgICAgICAgSGlzdG9ncmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51
bWVyYXRpb24oIlBhZ2VDYWNoZS5QYWdlUmVqZWN0Q2F1c2UiLCBpLCBwYWdlUmVqZWN0Q2F1c2Vf
Y291bnQpOworICAgICAgICB9CisgICAgSGlzdG9ncmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51bWVy
YXRpb24oIlBhZ2VDYWNoZS5QYWdlUmVqZWN0Q2F1c2VDb3VudCIsIHJlamVjdENvdW50LCAxK3Bh
Z2VSZWplY3RDYXVzZV9jb3VudCk7CisgICAgY29uc3QgY2hhciogaGlzdG9ncmFtTmFtZXNbXSA9
IHsgIlBhZ2VDYWNoZS5QYWdlUmVqZWN0Q2F1c2VTaW5nbGUiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJQYWdlQ2FjaGUuUGFnZVJlamVjdENhdXNlRG91YmxlIiB9Owor
ICAgIGNvbnN0IGludCBoaXN0b2dyYW1Db3VudCA9IHNpemVvZihoaXN0b2dyYW1OYW1lcykgLyBz
aXplb2YoY2hhciopOworICAgIGlmIChyZWplY3RDb3VudCA+IDEgJiYgcmVqZWN0Q291bnQgPD0g
aGlzdG9ncmFtQ291bnQpIHsKKyAgICAgICAgY29uc3QgY2hhciogaGlzdG9ncmFtID0gaGlzdG9n
cmFtTmFtZXNbcmVqZWN0Q291bnQtMV07CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZnJh
bWVSZWplY3RDYXVzZV9jb3VudDsgKytpKQorICAgICAgICAgICAgaWYgKHJlamVjdENhdXNlcyAm
ICgxIDw8IGkpKQorICAgICAgICAgICAgICAgIEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3JhbUVu
dW1lcmF0aW9uKGhpc3RvZ3JhbSwgaSwgZnJhbWVSZWplY3RDYXVzZV9jb3VudCk7CisgICAgfQor
CisgICAgLy8gUmVwb3J0IGZvciBhbGwgc3ViZnJhbWVzIHBlciBwYWdlIGFzIHdlbGwuCisgICAg
aWYgKGZyYW1lUmVqZWN0Q2F1c2VzKSB7CisgICAgICAgIEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3Rv
Z3JhbUVudW1lcmF0aW9uKCJQYWdlQ2FjaGUuUGFnZUZyYW1lc1JlamVjdGVkIiwgISFmcmFtZVJl
amVjdENhdXNlcywgMik7CisgICAgICAgIGludCBmcmFtZVJlamVjdENvdW50ID0gMDsKKyAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gZnJhbWVSZWplY3RDYXVzZV9jb3VudDsgKytpKQorICAg
ICAgICAgICAgaWYgKGZyYW1lUmVqZWN0Q2F1c2VzICYgKDEgPDwgaSkpIHsKKyAgICAgICAgICAg
ICAgICArK2ZyYW1lUmVqZWN0Q291bnQ7CisgICAgICAgICAgICAgICAgSGlzdG9ncmFtU3VwcG9y
dDo6aGlzdG9ncmFtRW51bWVyYXRpb24oIlBhZ2VDYWNoZS5QYWdlRnJhbWVzUmVqZWN0Q2F1c2Ui
LCBpLCBmcmFtZVJlamVjdENhdXNlX2NvdW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgSGlz
dG9ncmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51bWVyYXRpb24oIlBhZ2VDYWNoZS5QYWdlRnJhbWVz
UmVqZWN0Q2F1c2VDb3VudCIsIGZyYW1lUmVqZWN0Q291bnQsIDErZnJhbWVSZWplY3RDYXVzZV9j
b3VudCk7CisKKyAgICAgICAgY29uc3QgY2hhciogZnJhbWVIaXN0b2dyYW1OYW1lc1tdID0geyAi
UGFnZUNhY2hlLlBhZ2VGcmFtZXNSZWplY3RDYXVzZVNpbmdsZSIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBhZ2VDYWNoZS5QYWdlRnJhbWVzUmVqZWN0
Q2F1c2VEb3VibGUiIH07CisgICAgICAgIGNvbnN0IGludCBmcmFtZUhpc3RvZ3JhbUNvdW50ID0g
c2l6ZW9mKGZyYW1lSGlzdG9ncmFtTmFtZXMpIC8gc2l6ZW9mKGNoYXIqKTsKKyAgICAgICAgaWYg
KGZyYW1lUmVqZWN0Q291bnQgPiAxICYmIGZyYW1lUmVqZWN0Q291bnQgPCBmcmFtZUhpc3RvZ3Jh
bUNvdW50KSB7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBoaXN0b2dyYW0gPSBmcmFtZUhpc3Rv
Z3JhbU5hbWVzW2ZyYW1lUmVqZWN0Q291bnQtMV07CisgICAgICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IGZyYW1lUmVqZWN0Q2F1c2VfY291bnQ7ICsraSkKKyAgICAgICAgICAgICAgICBpZiAo
ZnJhbWVSZWplY3RDYXVzZXMgJiAoMSA8PCBpKSkKKyAgICAgICAgICAgICAgICAgICAgSGlzdG9n
cmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51bWVyYXRpb24oaGlzdG9ncmFtLCBpLCBmcmFtZVJlamVj
dENhdXNlX2NvdW50KTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogI2VuZGlmIApAQCAtMjcwLDcg
KzM3Myw3IEBAIGJvb2wgUGFnZUNhY2hlOjpjYW5DYWNoZShQYWdlKiBwYWdlKQogICAgIGlmICgh
cGFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotI2lmbmRlZiBOREVCVUcKKyNpZiBQ
TEFURk9STShDSFJPTUlVTSkgfHwgIWRlZmluZWQoTkRFQlVHKQogICAgIGxvZ0NhbkNhY2hlUGFn
ZURlY2lzaW9uKHBhZ2UpOwogI2VuZGlmCiAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130403</attachid>
            <date>2012-03-06 10:41:38 -0800</date>
            <delta_ts>2012-03-06 13:07:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80187-20120306134136.patch</filename>
            <type>text/plain</type>
            <size>11933</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5Nzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVlMWE0NGUyODRmZDdl
NzQ3MDYyMTQ0ZmUxMDcxYWE5NmZlOTgwZi4uYjZmN2VjNGZkY2FhZmE1ZGEzMTM0ZjJkNzc2NWIx
OWRlZTE4ODNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTAzLTA2ICBHYXZp
biBQZXRlcnMgIDxnYXZpbnBAY2hyb21pdW0ub3JnPgorCisgICAgICAgIGFkZCBIaXN0b2dyYW1z
IGZvciByZXBvcnRpbmcgb24gUGFnZUNhY2hlIHJlamVjdCByZWFzb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDE4NworCisgICAgICAgIEVuaGFu
Y2UgdGhlIFBhZ2VDYWNoZSBkZWJ1ZyBtb2RlIHNvIHRoYXQgaXQgdXNlcyBIaXN0b2dyYW1zIHRv
CisgICAgICAgIHJlcG9ydCBvbiBjYXVzZXMgb2YgZmFpbHVyZS4gIFR1cm4gb24gdGhlIGRlYnVn
IHByaW50aW5nIHBhdGgKKyAgICAgICAgZXZlbiBpbiBub24tZGVidWcgQ2hyb21pdW0gYnVpbGRz
LCBzbyB0aGVzZSBoaXN0b2dyYW1zIHdpbGwKKyAgICAgICAgdXBkYXRlLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgZG9lcyBu
b3QgY2hhbmdlIGJlaGF2aW91ci4KKworICAgICAgICAqIGhpc3RvcnkvUGFnZUNhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6bG9nQ2FuQ2FjaGVGcmFtZURl
Y2lzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmxvZ0NhbkNhY2hlUGFnZURlY2lzaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6Y2FuQ2FjaGUpOgorCiAyMDEyLTAzLTA1ICBSb2Ig
QnVpcyAgPHJidWlzQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIFVURiBjaGFycyBw
cmludGVkIGJhY2sgZnJvbSBjb29raWUgdGhyb3VnaCBwaHAgc2hvd3MgYXMgPz8/CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKaW5kZXggMjVhNDgzODVmMmY0NTM5M2ViMGUwZDdjOWM1
MmI1MWI4MGY4MGEzMi4uN2EwYmU3MWRlMDkyYWZhYzk0MTljYjMzZjFmMmI2M2M1Mzg1MTM4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNp
bmNsdWRlICJGcmFtZUxvYWRlclN0YXRlTWFjaGluZS5oIgorI2luY2x1ZGUgIkhpc3RvZ3JhbVN1
cHBvcnQuaCIKICNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCkBAIC01NiwxMiArNTcsMzUgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGF0aWMgY29uc3QgZG91YmxlIGF1dG9yZWxlYXNlSW50ZXJ2YWwgPSAzOwogCi0jaWZu
ZGVmIE5ERUJVRworI2lmIFBMQVRGT1JNKENIUk9NSVVNKSB8fCAhZGVmaW5lZChOREVCVUcpCiAK
ICNkZWZpbmUgUENMT0coLi4uKSBMT0coUGFnZUNhY2hlLCAiJSpzJXMiLCBpbmRlbnRMZXZlbCo0
LCAiIiwgbWFrZVN0cmluZyhfX1ZBX0FSR1NfXykudXRmOCgpLmRhdGEoKSkKICAgICAKLXN0YXRp
YyBib29sIGxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lvbihGcmFtZSogZnJhbWUsIGludCBpbmRlbnRM
ZXZlbCkKKy8vIFVzZWQgaW4gaGlzdG9ncmFtcywgcGxlYXNlIG9ubHkgYWRkIGF0IHRoZSBlbmQs
IGFuZCBkbyBub3QgcmVtb3ZlIGVsZW1lbnRzLgorZW51bSBGcmFtZVJlamVjdENhdXNlIHsKKyAg
ICBub0RvY3VtZW50TG9hZGVyID0gMCwKKyAgICBtYWluRG9jdW1lbnRFcnJvciwKKyAgICBpc0Vy
cm9yUGFnZSwKKyAgICBoYXNQbHVnaW5zLAorICAgIGlzSHR0cHNBbmRDYWNoZUNvbnRyb2xsZWQs
CisgICAgaGFzVW5sb2FkTGlzdGVuZXIsCisgICAgaGFzRGF0YWJhc2VIYW5kbGVzLAorICAgIGhh
c1NoYXJlZFdvcmtlcnMsCisgICAgbm9IaXN0b3J5SXRlbSwKKyAgICBxdWlja1JlZGlyZWN0Q29t
aW5nLAorICAgIGlzTG9hZGluZ0luQVBJU2Vuc2UsCisgICAgaXNTdG9wcGluZywKKyAgICBjYW5T
dXNwZW5kQWN0aXZlRE9NT2JqZWN0cywKKyAgICBkb2N1bWVudExvYWRlclVzZXNBcHBsaWNhdGlv
bkNhY2hlLAorICAgIGNsaWVudERlbmllc0NhY2hpbmcsCisgICAgZnJhbWVSZWplY3RDYXVzZV9j
b3VudCwKK307CisKK3N0YXRpYyB1bnNpZ25lZCBsb2dDYW5DYWNoZUZyYW1lRGVjaXNpb24oRnJh
bWUqIGZyYW1lLCBpbnQgaW5kZW50TGV2ZWwpCiB7CisjaWZkZWYgTkRFQlVHCisgICAgVU5VU0VE
X1BBUkFNKGluZGVudExldmVsKTsKKyNlbmRpZgogICAgIC8vIE9ubHkgYm90aGVyIGxvZ2dpbmcg
Zm9yIGZyYW1lcyB0aGF0IGhhdmUgYWN0dWFsbHkgbG9hZGVkIGFuZCBoYXZlIGNvbnRlbnQuCiAg
ICAgaWYgKGZyYW1lLT5sb2FkZXIoKS0+c3RhdGVNYWNoaW5lKCktPmNyZWF0aW5nSW5pdGlhbEVt
cHR5RG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzUsODcgKzk5LDEwOCBA
QCBzdGF0aWMgYm9vbCBsb2dDYW5DYWNoZUZyYW1lRGVjaXNpb24oRnJhbWUqIGZyYW1lLCBpbnQg
aW5kZW50TGV2ZWwpCiAgICAgICAgIFBDTE9HKCIgRGV0ZXJtaW5pbmcgaWYgZnJhbWUgY2FuIGJl
IGNhY2hlZCBuYXZpZ2F0aW5nIGZyb20gKCIsIGN1cnJlbnRVUkwuc3RyaW5nKCksICIpIHRvICgi
LCBuZXdVUkwuc3RyaW5nKCksICIpOiIpOwogICAgIGVsc2UKICAgICAgICAgUENMT0coIiBEZXRl
cm1pbmluZyBpZiBzdWJmcmFtZSB3aXRoIFVSTCAoIiwgY3VycmVudFVSTC5zdHJpbmcoKSwgIikg
Y2FuIGJlIGNhY2hlZDoiKTsKLSAgICAKLSAgICBib29sIGNhbm5vdENhY2hlID0gZmFsc2U7Cisg
ICAgIAorICAgIHVuc2lnbmVkIHJlamVjdENhdXNlcyA9IDA7CiAgICAgCiAgICAgaWYgKCFmcmFt
ZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkpIHsKICAgICAgICAgUENMT0coIiAgIC1UaGVy
ZSBpcyBubyBEb2N1bWVudExvYWRlciBvYmplY3QiKTsKLSAgICAgICAgY2Fubm90Q2FjaGUgPSB0
cnVlOworICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBub0RvY3VtZW50TG9hZGVyOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIGlmICghZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigp
LT5tYWluRG9jdW1lbnRFcnJvcigpLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAg
LU1haW4gZG9jdW1lbnQgaGFzIGFuIGVycm9yIik7Ci0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9
IHRydWU7CisgICAgICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBtYWluRG9jdW1lbnRFcnJv
cjsKICAgICAgICAgfQogICAgICAgICBpZiAoZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRl
cigpLT5zdWJzdGl0dXRlRGF0YSgpLmlzVmFsaWQoKSAmJiBmcmFtZS0+bG9hZGVyKCktPmRvY3Vt
ZW50TG9hZGVyKCktPnN1YnN0aXR1dGVEYXRhKCkuZmFpbGluZ1VSTCgpLmlzRW1wdHkoKSkgewog
ICAgICAgICAgICAgUENMT0coIiAgIC1GcmFtZSBpcyBhbiBlcnJvciBwYWdlIik7Ci0gICAgICAg
ICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8
PCBpc0Vycm9yUGFnZTsKICAgICAgICAgfQogICAgICAgICBpZiAoZnJhbWUtPmxvYWRlcigpLT5z
dWJmcmFtZUxvYWRlcigpLT5jb250YWluc1BsdWdpbnMoKSAmJiAhZnJhbWUtPnBhZ2UoKS0+c2V0
dGluZ3MoKS0+cGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zKCkpIHsKICAgICAgICAgICAgIFBDTE9H
KCIgICAtRnJhbWUgY29udGFpbnMgcGx1Z2lucyIpOwotICAgICAgICAgICAgY2Fubm90Q2FjaGUg
PSB0cnVlOworICAgICAgICAgICAgcmVqZWN0Q2F1c2VzIHw9IDEgPDwgaGFzUGx1Z2luczsKICAg
ICAgICAgfQogICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnByb3RvY29sSXMo
Imh0dHBzIikKICAgICAgICAgICAgICYmIChmcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVy
KCktPnJlc3BvbnNlKCkuY2FjaGVDb250cm9sQ29udGFpbnNOb0NhY2hlKCkKICAgICAgICAgICAg
ICAgICB8fCBmcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkuY2Fj
aGVDb250cm9sQ29udGFpbnNOb1N0b3JlKCkpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLUZy
YW1lIGlzIEhUVFBTLCBhbmQgY2FjaGUgY29udHJvbCBwcm9oaWJpdHMgY2FjaGluZyBvciBzdG9y
aW5nIik7Ci0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgICAgICByZWpl
Y3RDYXVzZXMgfD0gMSA8PCBpc0h0dHBzQW5kQ2FjaGVDb250cm9sbGVkOwogICAgICAgICB9CiAg
ICAgICAgIGlmIChmcmFtZS0+ZG9tV2luZG93KCkgJiYgZnJhbWUtPmRvbVdpbmRvdygpLT5oYXNF
dmVudExpc3RlbmVycyhldmVudE5hbWVzKCkudW5sb2FkRXZlbnQpKSB7CiAgICAgICAgICAgICBQ
Q0xPRygiICAgLUZyYW1lIGhhcyBhbiB1bmxvYWQgZXZlbnQgbGlzdGVuZXIiKTsKLSAgICAgICAg
ICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgICAgIHJlamVjdENhdXNlcyB8PSAxIDw8
IGhhc1VubG9hZExpc3RlbmVyOwogICAgICAgICB9CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkK
ICAgICAgICAgaWYgKERhdGFiYXNlQ29udGV4dDo6aGFzT3BlbkRhdGFiYXNlcyhmcmFtZS0+ZG9j
dW1lbnQoKSkpIHsKICAgICAgICAgICAgIFBDTE9HKCIgICAtRnJhbWUgaGFzIG9wZW4gZGF0YWJh
c2UgaGFuZGxlcyIpOwotICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICAg
ICAgcmVqZWN0Q2F1c2VzIHw9IDEgPDwgaGFzRGF0YWJhc2VIYW5kbGVzOwogICAgICAgICB9CiAj
ZW5kaWYKICNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCiAgICAgICAgIGlmIChTaGFyZWRXb3Jr
ZXJSZXBvc2l0b3J5OjpoYXNTaGFyZWRXb3JrZXJzKGZyYW1lLT5kb2N1bWVudCgpKSkgewogICAg
ICAgICAgICAgUENMT0coIiAgIC1GcmFtZSBoYXMgYXNzb2NpYXRlZCBTaGFyZWRXb3JrZXJzIik7
Ci0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgICAgICByZWplY3RDYXVz
ZXMgfD0gMSA8PCBoYXNTaGFyZWRXb3JrZXJzOwogICAgICAgICB9CiAjZW5kaWYKICAgICAgICAg
aWYgKCFmcmFtZS0+bG9hZGVyKCktPmhpc3RvcnkoKS0+Y3VycmVudEl0ZW0oKSkgewogICAgICAg
ICAgICAgUENMT0coIiAgIC1ObyBjdXJyZW50IGhpc3RvcnkgaXRlbSIpOwotICAgICAgICAgICAg
Y2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAgcmVqZWN0Q2F1c2VzIHw9IDEgPDwgbm9I
aXN0b3J5SXRlbTsKICAgICAgICAgfQogICAgICAgICBpZiAoZnJhbWUtPmxvYWRlcigpLT5xdWlj
a1JlZGlyZWN0Q29taW5nKCkpIHsKICAgICAgICAgICAgIFBDTE9HKCIgICAtUXVpY2sgcmVkaXJl
Y3QgaXMgY29taW5nIik7Ci0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAg
ICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBxdWlja1JlZGlyZWN0Q29taW5nOwogICAgICAgICB9
CiAgICAgICAgIGlmIChmcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPmlzTG9hZGlu
Z0luQVBJU2Vuc2UoKSkgewogICAgICAgICAgICAgUENMT0coIiAgIC1Eb2N1bWVudExvYWRlciBp
cyBzdGlsbCBsb2FkaW5nIGluIEFQSSBzZW5zZSIpOwotICAgICAgICAgICAgY2Fubm90Q2FjaGUg
PSB0cnVlOworICAgICAgICAgICAgcmVqZWN0Q2F1c2VzIHw9IDEgPDwgaXNMb2FkaW5nSW5BUElT
ZW5zZTsKICAgICAgICAgfQogICAgICAgICBpZiAoZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExv
YWRlcigpLT5pc1N0b3BwaW5nKCkpIHsKICAgICAgICAgICAgIFBDTE9HKCIgICAtRG9jdW1lbnRM
b2FkZXIgaXMgaW4gdGhlIG1pZGRsZSBvZiBzdG9wcGluZyIpOwotICAgICAgICAgICAgY2Fubm90
Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAgcmVqZWN0Q2F1c2VzIHw9IDEgPDwgaXNTdG9wcGlu
ZzsKICAgICAgICAgfQogICAgICAgICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpLT5jYW5TdXNwZW5k
QWN0aXZlRE9NT2JqZWN0cygpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLVRoZSBkb2N1bWVu
dCBjYW5ub3Qgc3VzcGVjdCBpdHMgYWN0aXZlIERPTSBPYmplY3RzIik7Ci0gICAgICAgICAgICBj
YW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBjYW5T
dXNwZW5kQWN0aXZlRE9NT2JqZWN0czsKICAgICAgICAgfQogICAgICAgICBpZiAoIWZyYW1lLT5s
b2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+Y2FuQ2Fj
aGVJblBhZ2VDYWNoZSgpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLVRoZSBEb2N1bWVudExv
YWRlciB1c2VzIGFuIGFwcGxpY2F0aW9uIGNhY2hlIik7Ci0gICAgICAgICAgICBjYW5ub3RDYWNo
ZSA9IHRydWU7CisgICAgICAgICAgICByZWplY3RDYXVzZXMgfD0gMSA8PCBkb2N1bWVudExvYWRl
clVzZXNBcHBsaWNhdGlvbkNhY2hlOwogICAgICAgICB9CiAgICAgICAgIGlmICghZnJhbWUtPmxv
YWRlcigpLT5jbGllbnQoKS0+Y2FuQ2FjaGVQYWdlKCkpIHsKICAgICAgICAgICAgIFBDTE9HKCIg
ICAtVGhlIGNsaWVudCBzYXlzIHRoaXMgZnJhbWUgY2Fubm90IGJlIGNhY2hlZCIpOwotICAgICAg
ICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOyAKKyAgICAgICAgICAgIHJlamVjdENhdXNlcyB8PSAx
IDw8IGNsaWVudERlbmllc0NhY2hpbmc7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKKyAgICBI
aXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJhdGlvbigiUGFnZUNhY2hlLkZyYW1lUmVq
ZWN0ZWQiLCAhIXJlamVjdENhdXNlcywgMik7CisgICAgaW50IHJlamVjdENvdW50ID0gMDsKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGZyYW1lUmVqZWN0Q2F1c2VfY291bnQ7ICsraSkKKyAgICAg
ICAgaWYgKHJlamVjdENhdXNlcyAmICgxIDw8IGkpKSB7CisgICAgICAgICAgICArK3JlamVjdENv
dW50OworICAgICAgICAgICAgSGlzdG9ncmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51bWVyYXRpb24o
IlBhZ2VDYWNoZS5GcmFtZVJlamVjdENhdXNlIiwgaSwgZnJhbWVSZWplY3RDYXVzZV9jb3VudCk7
CisgICAgICAgIH0KKyAgICBIaXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJhdGlvbigi
UGFnZUNhY2hlLkZyYW1lUmVqZWN0Q2F1c2VDb3VudCIsIHJlamVjdENvdW50LCAxK2ZyYW1lUmVq
ZWN0Q2F1c2VfY291bnQpOworCiAgICAgZm9yIChGcmFtZSogY2hpbGQgPSBmcmFtZS0+dHJlZSgp
LT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5leHRTaWJsaW5n
KCkpCi0gICAgICAgIGlmICghbG9nQ2FuQ2FjaGVGcmFtZURlY2lzaW9uKGNoaWxkLCBpbmRlbnRM
ZXZlbCArIDEpKQotICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICByZWpl
Y3RDYXVzZXMgfD0gbG9nQ2FuQ2FjaGVGcmFtZURlY2lzaW9uKGNoaWxkLCBpbmRlbnRMZXZlbCAr
IDEpOwogICAgIAotICAgIFBDTE9HKGNhbm5vdENhY2hlID8gIiBGcmFtZSBDQU5OT1QgYmUgY2Fj
aGVkIiA6ICIgRnJhbWUgQ0FOIGJlIGNhY2hlZCIpOworICAgIFBDTE9HKHJlamVjdENhdXNlcyA/
ICIgRnJhbWUgQ0FOTk9UIGJlIGNhY2hlZCIgOiAiIEZyYW1lIENBTiBiZSBjYWNoZWQiKTsKICAg
ICBQQ0xPRygiKy0tLSIpOwogICAgIAotICAgIHJldHVybiAhY2Fubm90Q2FjaGU7CisgICAgcmV0
dXJuIHJlamVjdENhdXNlczsKIH0KLSAgICAKKworLy8gVXNlZCBpbiBoaXN0b2dyYW1zLCBwbGVh
c2Ugb25seSBhZGQgYXQgdGhlIGVuZCwgYW5kIGRvIG5vdCByZW1vdmUgZWxlbWVudHMuCitlbnVt
IFBhZ2VSZWplY3RDYXVzZSB7CisgICAgZnJhbWVSZWplY3RlZCA9IDAsCisgICAgZGlzYWJsZWRC
YWNrRm9yd2FyZExpc3QsCisgICAgZGlzYWJsZWRQYWdlQ2FjaGUsCisgICAgdXNlc0RldmljZU1v
dGlvbiwKKyAgICB1c2VzRGV2aWNlT3JpZW50YXRpb24sCisgICAgaXNSZWxvYWQsCisgICAgaXNS
ZWxvYWRGcm9tT3JpZ2luLAorICAgIGlzU2FtZUxvYWQsCisgICAgcGFnZVJlamVjdENhdXNlX2Nv
dW50LAorfTsKKwogc3RhdGljIHZvaWQgbG9nQ2FuQ2FjaGVQYWdlRGVjaXNpb24oUGFnZSogcGFn
ZSkKIHsKICAgICAvLyBPbmx5IGJvdGhlciBsb2dnaW5nIGZvciBtYWluIGZyYW1lcyB0aGF0IGhh
dmUgYWN0dWFsbHkgbG9hZGVkIGFuZCBoYXZlIGNvbnRlbnQuCkBAIC0xNjgsNDEgKzIxMyw2NCBA
QCBzdGF0aWMgdm9pZCBsb2dDYW5DYWNoZVBhZ2VEZWNpc2lvbihQYWdlKiBwYWdlKQogICAgIGlu
dCBpbmRlbnRMZXZlbCA9IDA7ICAgIAogICAgIFBDTE9HKCItLS0tLS0tLVxuIERldGVybWluaW5n
IGlmIHBhZ2UgY2FuIGJlIGNhY2hlZDoiKTsKICAgICAKLSAgICBib29sIGNhbm5vdENhY2hlID0g
IWxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lvbihwYWdlLT5tYWluRnJhbWUoKSwgMSk7CisgICAgdW5z
aWduZWQgcmVqZWN0Q2F1c2VzID0gMDsKKyAgICB1bnNpZ25lZCBmcmFtZVJlamVjdENhdXNlcyA9
IGxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lvbihwYWdlLT5tYWluRnJhbWUoKSwgaW5kZW50TGV2ZWwr
MSk7CisgICAgaWYgKGZyYW1lUmVqZWN0Q2F1c2VzKQorICAgICAgICByZWplY3RDYXVzZXMgfD0g
MSA8PCBmcmFtZVJlamVjdGVkOwogICAgIAogICAgIGlmICghcGFnZS0+YmFja0ZvcndhcmQoKS0+
aXNBY3RpdmUoKSkgewogICAgICAgICBQQ0xPRygiICAgLVRoZSBiYWNrL2ZvcndhcmQgbGlzdCBp
cyBkaXNhYmxlZCBvciBoYXMgMCBjYXBhY2l0eSIpOwotICAgICAgICBjYW5ub3RDYWNoZSA9IHRy
dWU7CisgICAgICAgIHJlamVjdENhdXNlcyB8PSAxIDw8IGRpc2FibGVkQmFja0ZvcndhcmRMaXN0
OwogICAgIH0KICAgICBpZiAoIXBhZ2UtPnNldHRpbmdzKCktPnVzZXNQYWdlQ2FjaGUoKSkgewog
ICAgICAgICBQQ0xPRygiICAgLVBhZ2Ugc2V0dGluZ3Mgc2F5cyBiL2YgY2FjaGUgZGlzYWJsZWQi
KTsKLSAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICByZWplY3RDYXVzZXMgfD0g
MSA8PCBkaXNhYmxlZFBhZ2VDYWNoZTsKICAgICB9CiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRB
VElPTikKICAgICBpZiAoRGV2aWNlTW90aW9uQ29udHJvbGxlcjo6aXNBY3RpdmVBdChwYWdlKSkg
ewogICAgICAgICBQQ0xPRygiICAgLVBhZ2UgaXMgdXNpbmcgRGV2aWNlTW90aW9uIik7Ci0gICAg
ICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgcmVqZWN0Q2F1c2VzIHw9IDEgPDwgdXNl
c0RldmljZU1vdGlvbjsKICAgICB9CiAgICAgaWYgKERldmljZU9yaWVudGF0aW9uQ29udHJvbGxl
cjo6aXNBY3RpdmVBdChwYWdlKSkgewogICAgICAgICBQQ0xPRygiICAgLVBhZ2UgaXMgdXNpbmcg
RGV2aWNlT3JpZW50YXRpb24iKTsKLSAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAg
ICByZWplY3RDYXVzZXMgfD0gMSA8PCB1c2VzRGV2aWNlT3JpZW50YXRpb247CiAgICAgfQogI2Vu
ZGlmCiAgICAgRnJhbWVMb2FkVHlwZSBsb2FkVHlwZSA9IHBhZ2UtPm1haW5GcmFtZSgpLT5sb2Fk
ZXIoKS0+bG9hZFR5cGUoKTsKICAgICBpZiAobG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlwZVJlbG9h
ZCkgewogICAgICAgICBQQ0xPRygiICAgLUxvYWQgdHlwZSBpczogUmVsb2FkIik7Ci0gICAgICAg
IGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgcmVqZWN0Q2F1c2VzIHw9IDEgPDwgaXNSZWxv
YWQ7CiAgICAgfQogICAgIGlmIChsb2FkVHlwZSA9PSBGcmFtZUxvYWRUeXBlUmVsb2FkRnJvbU9y
aWdpbikgewogICAgICAgICBQQ0xPRygiICAgLUxvYWQgdHlwZSBpczogUmVsb2FkIGZyb20gb3Jp
Z2luIik7Ci0gICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgcmVqZWN0Q2F1c2Vz
IHw9IDEgPDwgaXNSZWxvYWRGcm9tT3JpZ2luOwogICAgIH0KICAgICBpZiAobG9hZFR5cGUgPT0g
RnJhbWVMb2FkVHlwZVNhbWUpIHsKICAgICAgICAgUENMT0coIiAgIC1Mb2FkIHR5cGUgaXM6IFNh
bWUiKTsKLSAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICByZWplY3RDYXVzZXMg
fD0gMSA8PCBpc1NhbWVMb2FkOwogICAgIH0KICAgICAKLSAgICBQQ0xPRyhjYW5ub3RDYWNoZSA/
ICIgUGFnZSBDQU5OT1QgYmUgY2FjaGVkXG4tLS0tLS0tLSIgOiAiIFBhZ2UgQ0FOIGJlIGNhY2hl
ZFxuLS0tLS0tLS0iKTsKKyAgICBQQ0xPRyhyZWplY3RDYXVzZXMgPyAiIFBhZ2UgQ0FOTk9UIGJl
IGNhY2hlZFxuLS0tLS0tLS0iIDogIiBQYWdlIENBTiBiZSBjYWNoZWRcbi0tLS0tLS0tIik7CisK
KyAgICBIaXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJhdGlvbigiUGFnZUNhY2hlLlBh
Z2VSZWplY3RlZCIsICEhcmVqZWN0Q2F1c2VzLCAyKTsKKyAgICBpbnQgcmVqZWN0Q291bnQgPSAw
OworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFnZVJlamVjdENhdXNlX2NvdW50OyArK2kpCisg
ICAgICAgIGlmIChyZWplY3RDYXVzZXMgJiAoMSA8PCBpKSkgeworICAgICAgICAgICAgKytyZWpl
Y3RDb3VudDsKKyAgICAgICAgICAgIEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1lcmF0
aW9uKCJQYWdlQ2FjaGUuUGFnZVJlamVjdENhdXNlIiwgaSwgcGFnZVJlamVjdENhdXNlX2NvdW50
KTsKKyAgICAgICAgfQorICAgIEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1lcmF0aW9u
KCJQYWdlQ2FjaGUuUGFnZVJlamVjdENhdXNlQ291bnQiLCByZWplY3RDb3VudCwgMStwYWdlUmVq
ZWN0Q2F1c2VfY291bnQpOworCisgICAgLy8gUmVwb3J0IGFsc28gb24gdGhlIGZyYW1lIHJlamVj
dHMgYnkgcGFnZTsgdGhpcyBpcyBkaXN0aW5jdCBmcm9tIHRoZSBwZXIgZnJhbWUgc3RhdGlzdGlj
cyBzaW5jZSBpdCBjb2FsZXNjZXMgdGhlCisgICAgLy8gY2F1c2VzIGZyb20gYWxsIHN1YmZyYW1l
cyB0b2dldGhlci4KKyAgICBIaXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJhdGlvbigi
UGFnZUNhY2hlLkZyYW1lUmVqZWN0ZWRCeVBhZ2UiLCAhIWZyYW1lUmVqZWN0Q2F1c2VzLCAyKTsK
KyAgICBpbnQgZnJhbWVSZWplY3RDb3VudCA9IDA7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0g
ZnJhbWVSZWplY3RDYXVzZV9jb3VudDsgKytpKQorICAgICAgICBpZiAoZnJhbWVSZWplY3RDYXVz
ZXMgJiAoMSA8PCBpKSkgeworICAgICAgICAgICAgKytmcmFtZVJlamVjdENvdW50OworICAgICAg
ICAgICAgSGlzdG9ncmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51bWVyYXRpb24oIlBhZ2VDYWNoZS5G
cmFtZVJlamVjdENhdXNlQnlQYWdlIiwgaSwgZnJhbWVSZWplY3RDYXVzZV9jb3VudCk7CisgICAg
ICAgIH0KKyAgICBIaXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJhdGlvbigiUGFnZUNh
Y2hlLkZyYW1lUmVqZWN0Q2F1c2VDb3VudEJ5UGFnZSIsIGZyYW1lUmVqZWN0Q291bnQsIDErZnJh
bWVSZWplY3RDYXVzZV9jb3VudCk7CiB9CiAKICNlbmRpZiAKQEAgLTI2NSw3ICszMzMsNyBAQCBi
b29sIFBhZ2VDYWNoZTo6Y2FuQ2FjaGUoUGFnZSogcGFnZSkKICAgICBpZiAoIXBhZ2UpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAKLSNpZm5kZWYgTkRFQlVHCisjaWYgUExBVEZPUk0oQ0hS
T01JVU0pIHx8ICFkZWZpbmVkKE5ERUJVRykKICAgICBsb2dDYW5DYWNoZVBhZ2VEZWNpc2lvbihw
YWdlKTsKICNlbmRpZgogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130430</attachid>
            <date>2012-03-06 13:08:03 -0800</date>
            <delta_ts>2012-03-06 13:37:39 -0800</delta_ts>
            <desc>more stylish</desc>
            <filename>bug-80187-20120306160801.patch</filename>
            <type>text/plain</type>
            <size>12257</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5Nzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVlMWE0NGUyODRmZDdl
NzQ3MDYyMTQ0ZmUxMDcxYWE5NmZlOTgwZi4uYjZmN2VjNGZkY2FhZmE1ZGEzMTM0ZjJkNzc2NWIx
OWRlZTE4ODNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTAzLTA2ICBHYXZp
biBQZXRlcnMgIDxnYXZpbnBAY2hyb21pdW0ub3JnPgorCisgICAgICAgIGFkZCBIaXN0b2dyYW1z
IGZvciByZXBvcnRpbmcgb24gUGFnZUNhY2hlIHJlamVjdCByZWFzb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDE4NworCisgICAgICAgIEVuaGFu
Y2UgdGhlIFBhZ2VDYWNoZSBkZWJ1ZyBtb2RlIHNvIHRoYXQgaXQgdXNlcyBIaXN0b2dyYW1zIHRv
CisgICAgICAgIHJlcG9ydCBvbiBjYXVzZXMgb2YgZmFpbHVyZS4gIFR1cm4gb24gdGhlIGRlYnVn
IHByaW50aW5nIHBhdGgKKyAgICAgICAgZXZlbiBpbiBub24tZGVidWcgQ2hyb21pdW0gYnVpbGRz
LCBzbyB0aGVzZSBoaXN0b2dyYW1zIHdpbGwKKyAgICAgICAgdXBkYXRlLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgZG9lcyBu
b3QgY2hhbmdlIGJlaGF2aW91ci4KKworICAgICAgICAqIGhpc3RvcnkvUGFnZUNhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6bG9nQ2FuQ2FjaGVGcmFtZURl
Y2lzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmxvZ0NhbkNhY2hlUGFnZURlY2lzaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6Y2FuQ2FjaGUpOgorCiAyMDEyLTAzLTA1ICBSb2Ig
QnVpcyAgPHJidWlzQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIFVURiBjaGFycyBw
cmludGVkIGJhY2sgZnJvbSBjb29raWUgdGhyb3VnaCBwaHAgc2hvd3MgYXMgPz8/CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKaW5kZXggMjVhNDgzODVmMmY0NTM5M2ViMGUwZDdjOWM1
MmI1MWI4MGY4MGEzMi4uNWI2Mzg4NjUzMzI3NDIxNjM3MGViODQ3NmI1ODYwNDA0OWM5ODQ1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNp
bmNsdWRlICJGcmFtZUxvYWRlclN0YXRlTWFjaGluZS5oIgorI2luY2x1ZGUgIkhpc3RvZ3JhbVN1
cHBvcnQuaCIKICNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCkBAIC01NiwxMiArNTcsMzUgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGF0aWMgY29uc3QgZG91YmxlIGF1dG9yZWxlYXNlSW50ZXJ2YWwgPSAzOwogCi0jaWZu
ZGVmIE5ERUJVRworI2lmIFBMQVRGT1JNKENIUk9NSVVNKSB8fCAhZGVmaW5lZChOREVCVUcpCiAK
ICNkZWZpbmUgUENMT0coLi4uKSBMT0coUGFnZUNhY2hlLCAiJSpzJXMiLCBpbmRlbnRMZXZlbCo0
LCAiIiwgbWFrZVN0cmluZyhfX1ZBX0FSR1NfXykudXRmOCgpLmRhdGEoKSkKICAgICAKLXN0YXRp
YyBib29sIGxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lvbihGcmFtZSogZnJhbWUsIGludCBpbmRlbnRM
ZXZlbCkKKy8vIFVzZWQgaW4gaGlzdG9ncmFtcywgcGxlYXNlIG9ubHkgYWRkIGF0IHRoZSBlbmQs
IGFuZCBkbyBub3QgcmVtb3ZlIGVsZW1lbnRzLgorZW51bSBSZWFzb25GcmFtZUNhbm5vdEJlSW5Q
YWdlQ2FjaGUgeworICAgIE5vRG9jdW1lbnRMb2FkZXIgPSAwLAorICAgIE1haW5Eb2N1bWVudEVy
cm9yLAorICAgIElzRXJyb3JQYWdlLAorICAgIEhhc1BsdWdpbnMsCisgICAgSXNIdHRwc0FuZENh
Y2hlQ29udHJvbGxlZCwKKyAgICBIYXNVbmxvYWRMaXN0ZW5lciwKKyAgICBIYXNEYXRhYmFzZUhh
bmRsZXMsCisgICAgSGFzU2hhcmVkV29ya2VycywKKyAgICBOb0hpc3RvcnlJdGVtLAorICAgIFF1
aWNrUmVkaXJlY3RDb21pbmcsCisgICAgSXNMb2FkaW5nSW5BUElTZW5zZSwKKyAgICBJc1N0b3Bw
aW5nLAorICAgIENhblN1c3BlbmRBY3RpdmVET01PYmplY3RzLAorICAgIERvY3VtZW50TG9hZGVy
VXNlc0FwcGxpY2F0aW9uQ2FjaGUsCisgICAgQ2xpZW50RGVuaWVzQ2FjaGluZywKKyAgICBOdW1i
ZXJPZlJlYXNvbnNGcmFtZXNDYW5ub3RCZUluUGFnZUNhY2hlLAorfTsKKworc3RhdGljIHVuc2ln
bmVkIGxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lvbihGcmFtZSogZnJhbWUsIGludCBpbmRlbnRMZXZl
bCkKIHsKKyNpZmRlZiBOREVCVUcKKyAgICBVTlVTRURfUEFSQU0oaW5kZW50TGV2ZWwpOworI2Vu
ZGlmCiAgICAgLy8gT25seSBib3RoZXIgbG9nZ2luZyBmb3IgZnJhbWVzIHRoYXQgaGF2ZSBhY3R1
YWxseSBsb2FkZWQgYW5kIGhhdmUgY29udGVudC4KICAgICBpZiAoZnJhbWUtPmxvYWRlcigpLT5z
dGF0ZU1hY2hpbmUoKS0+Y3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC03NSw4NyArOTksMTA5IEBAIHN0YXRpYyBib29sIGxvZ0NhbkNhY2hl
RnJhbWVEZWNpc2lvbihGcmFtZSogZnJhbWUsIGludCBpbmRlbnRMZXZlbCkKICAgICAgICAgUENM
T0coIiBEZXRlcm1pbmluZyBpZiBmcmFtZSBjYW4gYmUgY2FjaGVkIG5hdmlnYXRpbmcgZnJvbSAo
IiwgY3VycmVudFVSTC5zdHJpbmcoKSwgIikgdG8gKCIsIG5ld1VSTC5zdHJpbmcoKSwgIik6Iik7
CiAgICAgZWxzZQogICAgICAgICBQQ0xPRygiIERldGVybWluaW5nIGlmIHN1YmZyYW1lIHdpdGgg
VVJMICgiLCBjdXJyZW50VVJMLnN0cmluZygpLCAiKSBjYW4gYmUgY2FjaGVkOiIpOwotICAgIAot
ICAgIGJvb2wgY2Fubm90Q2FjaGUgPSBmYWxzZTsKKyAgICAgCisgICAgdW5zaWduZWQgcmVqZWN0
UmVhc29ucyA9IDA7CiAgICAgCiAgICAgaWYgKCFmcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9h
ZGVyKCkpIHsKICAgICAgICAgUENMT0coIiAgIC1UaGVyZSBpcyBubyBEb2N1bWVudExvYWRlciBv
YmplY3QiKTsKLSAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICByZWplY3RSZWFz
b25zIHw9IDEgPDwgTm9Eb2N1bWVudExvYWRlcjsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAo
IWZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+bWFpbkRvY3VtZW50RXJyb3IoKS5p
c051bGwoKSkgewogICAgICAgICAgICAgUENMT0coIiAgIC1NYWluIGRvY3VtZW50IGhhcyBhbiBl
cnJvciIpOwotICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAgcmVq
ZWN0UmVhc29ucyB8PSAxIDw8IE1haW5Eb2N1bWVudEVycm9yOwogICAgICAgICB9CiAgICAgICAg
IGlmIChmcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnN1YnN0aXR1dGVEYXRhKCku
aXNWYWxpZCgpICYmIGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+c3Vic3RpdHV0
ZURhdGEoKS5mYWlsaW5nVVJMKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAg
LUZyYW1lIGlzIGFuIGVycm9yIHBhZ2UiKTsKLSAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1
ZTsKKyAgICAgICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBJc0Vycm9yUGFnZTsKICAgICAg
ICAgfQogICAgICAgICBpZiAoZnJhbWUtPmxvYWRlcigpLT5zdWJmcmFtZUxvYWRlcigpLT5jb250
YWluc1BsdWdpbnMoKSAmJiAhZnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS0+cGFnZUNhY2hlU3Vw
cG9ydHNQbHVnaW5zKCkpIHsKICAgICAgICAgICAgIFBDTE9HKCIgICAtRnJhbWUgY29udGFpbnMg
cGx1Z2lucyIpOwotICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAg
cmVqZWN0UmVhc29ucyB8PSAxIDw8IEhhc1BsdWdpbnM7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5wcm90b2NvbElzKCJodHRwcyIpCiAgICAgICAgICAg
ICAmJiAoZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpLmNhY2hl
Q29udHJvbENvbnRhaW5zTm9DYWNoZSgpCiAgICAgICAgICAgICAgICAgfHwgZnJhbWUtPmxvYWRl
cigpLT5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpLmNhY2hlQ29udHJvbENvbnRhaW5zTm9T
dG9yZSgpKSkgewogICAgICAgICAgICAgUENMT0coIiAgIC1GcmFtZSBpcyBIVFRQUywgYW5kIGNh
Y2hlIGNvbnRyb2wgcHJvaGliaXRzIGNhY2hpbmcgb3Igc3RvcmluZyIpOwotICAgICAgICAgICAg
Y2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAgcmVqZWN0UmVhc29ucyB8PSAxIDw8IElz
SHR0cHNBbmRDYWNoZUNvbnRyb2xsZWQ7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGZyYW1lLT5k
b21XaW5kb3coKSAmJiBmcmFtZS0+ZG9tV2luZG93KCktPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50
TmFtZXMoKS51bmxvYWRFdmVudCkpIHsKICAgICAgICAgICAgIFBDTE9HKCIgICAtRnJhbWUgaGFz
IGFuIHVubG9hZCBldmVudCBsaXN0ZW5lciIpOwotICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0
cnVlOworICAgICAgICAgICAgcmVqZWN0UmVhc29ucyB8PSAxIDw8IEhhc1VubG9hZExpc3RlbmVy
OwogICAgICAgICB9CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICAgICAgaWYgKERhdGFi
YXNlQ29udGV4dDo6aGFzT3BlbkRhdGFiYXNlcyhmcmFtZS0+ZG9jdW1lbnQoKSkpIHsKICAgICAg
ICAgICAgIFBDTE9HKCIgICAtRnJhbWUgaGFzIG9wZW4gZGF0YWJhc2UgaGFuZGxlcyIpOwotICAg
ICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAgcmVqZWN0UmVhc29ucyB8
PSAxIDw8IEhhc0RhdGFiYXNlSGFuZGxlczsKICAgICAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxF
KFNIQVJFRF9XT1JLRVJTKQogICAgICAgICBpZiAoU2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6aGFz
U2hhcmVkV29ya2VycyhmcmFtZS0+ZG9jdW1lbnQoKSkpIHsKICAgICAgICAgICAgIFBDTE9HKCIg
ICAtRnJhbWUgaGFzIGFzc29jaWF0ZWQgU2hhcmVkV29ya2VycyIpOwotICAgICAgICAgICAgY2Fu
bm90Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAgcmVqZWN0UmVhc29ucyB8PSAxIDw8IEhhc1No
YXJlZFdvcmtlcnM7CiAgICAgICAgIH0KICNlbmRpZgogICAgICAgICBpZiAoIWZyYW1lLT5sb2Fk
ZXIoKS0+aGlzdG9yeSgpLT5jdXJyZW50SXRlbSgpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAg
LU5vIGN1cnJlbnQgaGlzdG9yeSBpdGVtIik7Ci0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRy
dWU7CisgICAgICAgICAgICByZWplY3RSZWFzb25zIHw9IDEgPDwgTm9IaXN0b3J5SXRlbTsKICAg
ICAgICAgfQogICAgICAgICBpZiAoZnJhbWUtPmxvYWRlcigpLT5xdWlja1JlZGlyZWN0Q29taW5n
KCkpIHsKICAgICAgICAgICAgIFBDTE9HKCIgICAtUXVpY2sgcmVkaXJlY3QgaXMgY29taW5nIik7
Ci0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgICAgICByZWplY3RSZWFz
b25zIHw9IDEgPDwgUXVpY2tSZWRpcmVjdENvbWluZzsKICAgICAgICAgfQogICAgICAgICBpZiAo
ZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5pc0xvYWRpbmdJbkFQSVNlbnNlKCkp
IHsKICAgICAgICAgICAgIFBDTE9HKCIgICAtRG9jdW1lbnRMb2FkZXIgaXMgc3RpbGwgbG9hZGlu
ZyBpbiBBUEkgc2Vuc2UiKTsKLSAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAg
ICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBJc0xvYWRpbmdJbkFQSVNlbnNlOwogICAgICAg
ICB9CiAgICAgICAgIGlmIChmcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPmlzU3Rv
cHBpbmcoKSkgewogICAgICAgICAgICAgUENMT0coIiAgIC1Eb2N1bWVudExvYWRlciBpcyBpbiB0
aGUgbWlkZGxlIG9mIHN0b3BwaW5nIik7Ci0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7
CisgICAgICAgICAgICByZWplY3RSZWFzb25zIHw9IDEgPDwgSXNTdG9wcGluZzsKICAgICAgICAg
fQogICAgICAgICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpLT5jYW5TdXNwZW5kQWN0aXZlRE9NT2Jq
ZWN0cygpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLVRoZSBkb2N1bWVudCBjYW5ub3Qgc3Vz
cGVjdCBpdHMgYWN0aXZlIERPTSBPYmplY3RzIik7Ci0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9
IHRydWU7CisgICAgICAgICAgICByZWplY3RSZWFzb25zIHw9IDEgPDwgQ2FuU3VzcGVuZEFjdGl2
ZURPTU9iamVjdHM7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFmcmFtZS0+bG9hZGVyKCktPmRv
Y3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPmNhbkNhY2hlSW5QYWdlQ2Fj
aGUoKSkgewogICAgICAgICAgICAgUENMT0coIiAgIC1UaGUgRG9jdW1lbnRMb2FkZXIgdXNlcyBh
biBhcHBsaWNhdGlvbiBjYWNoZSIpOwotICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOwor
ICAgICAgICAgICAgcmVqZWN0UmVhc29ucyB8PSAxIDw8IERvY3VtZW50TG9hZGVyVXNlc0FwcGxp
Y2F0aW9uQ2FjaGU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFmcmFtZS0+bG9hZGVyKCktPmNs
aWVudCgpLT5jYW5DYWNoZVBhZ2UoKSkgewogICAgICAgICAgICAgUENMT0coIiAgIC1UaGUgY2xp
ZW50IHNheXMgdGhpcyBmcmFtZSBjYW5ub3QgYmUgY2FjaGVkIik7Ci0gICAgICAgICAgICBjYW5u
b3RDYWNoZSA9IHRydWU7IAorICAgICAgICAgICAgcmVqZWN0UmVhc29ucyB8PSAxIDw8IENsaWVu
dERlbmllc0NhY2hpbmc7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKKyAgICBIaXN0b2dyYW1T
dXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJhdGlvbigiUGFnZUNhY2hlLkZyYW1lQ2FjaGVhYmxlIiwg
IXJlamVjdFJlYXNvbnMsIDIpOworICAgIGludCByZWFzb25Db3VudCA9IDA7CisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBOdW1iZXJPZlJlYXNvbnNGcmFtZXNDYW5ub3RCZUluUGFnZUNhY2hlOyAr
K2kpIHsKKyAgICAgICAgaWYgKHJlamVjdFJlYXNvbnMgJiAoMSA8PCBpKSkgeworICAgICAgICAg
ICAgKytyZWFzb25Db3VudDsKKyAgICAgICAgICAgIEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3Jh
bUVudW1lcmF0aW9uKCJQYWdlQ2FjaGUuRnJhbWVSZWplY3RSZWFzb24iLCBpLCBOdW1iZXJPZlJl
YXNvbnNGcmFtZXNDYW5ub3RCZUluUGFnZUNhY2hlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBI
aXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJhdGlvbigiUGFnZUNhY2hlLkZyYW1lUmVq
ZWN0UmVhc29uQ291bnQiLCByZWFzb25Db3VudCwgMSArIE51bWJlck9mUmVhc29uc0ZyYW1lc0Nh
bm5vdEJlSW5QYWdlQ2FjaGUpOworCiAgICAgZm9yIChGcmFtZSogY2hpbGQgPSBmcmFtZS0+dHJl
ZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5leHRTaWJs
aW5nKCkpCi0gICAgICAgIGlmICghbG9nQ2FuQ2FjaGVGcmFtZURlY2lzaW9uKGNoaWxkLCBpbmRl
bnRMZXZlbCArIDEpKQotICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICBy
ZWplY3RSZWFzb25zIHw9IGxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lvbihjaGlsZCwgaW5kZW50TGV2
ZWwgKyAxKTsKICAgICAKLSAgICBQQ0xPRyhjYW5ub3RDYWNoZSA/ICIgRnJhbWUgQ0FOTk9UIGJl
IGNhY2hlZCIgOiAiIEZyYW1lIENBTiBiZSBjYWNoZWQiKTsKKyAgICBQQ0xPRyhyZWplY3RSZWFz
b25zID8gIiBGcmFtZSBDQU5OT1QgYmUgY2FjaGVkIiA6ICIgRnJhbWUgQ0FOIGJlIGNhY2hlZCIp
OwogICAgIFBDTE9HKCIrLS0tIik7CiAgICAgCi0gICAgcmV0dXJuICFjYW5ub3RDYWNoZTsKKyAg
ICByZXR1cm4gcmVqZWN0UmVhc29uczsKIH0KLSAgICAKKworLy8gVXNlZCBpbiBoaXN0b2dyYW1z
LCBwbGVhc2Ugb25seSBhZGQgYXQgdGhlIGVuZCwgYW5kIGRvIG5vdCByZW1vdmUgZWxlbWVudHMu
CitlbnVtIFJlYXNvblBhZ2VDYW5ub3RCZUluUGFnZUNhY2hlIHsKKyAgICBGcmFtZUNhbm5vdEJl
SW5QYWdlQ2FjaGUgPSAwLAorICAgIERpc2FibGVkQmFja0ZvcndhcmRMaXN0LAorICAgIERpc2Fi
bGVkUGFnZUNhY2hlLAorICAgIFVzZXNEZXZpY2VNb3Rpb24sCisgICAgVXNlc0RldmljZU9yaWVu
dGF0aW9uLAorICAgIElzUmVsb2FkLAorICAgIElzUmVsb2FkRnJvbU9yaWdpbiwKKyAgICBJc1Nh
bWVMb2FkLAorICAgIE51bWJlck9mUmVhc29uc1BhZ2VzQ2Fubm90QmVJblBhZ2VDYWNoZSwKK307
CisKIHN0YXRpYyB2b2lkIGxvZ0NhbkNhY2hlUGFnZURlY2lzaW9uKFBhZ2UqIHBhZ2UpCiB7CiAg
ICAgLy8gT25seSBib3RoZXIgbG9nZ2luZyBmb3IgbWFpbiBmcmFtZXMgdGhhdCBoYXZlIGFjdHVh
bGx5IGxvYWRlZCBhbmQgaGF2ZSBjb250ZW50LgpAQCAtMTY4LDQxICsyMTQsNjYgQEAgc3RhdGlj
IHZvaWQgbG9nQ2FuQ2FjaGVQYWdlRGVjaXNpb24oUGFnZSogcGFnZSkKICAgICBpbnQgaW5kZW50
TGV2ZWwgPSAwOyAgICAKICAgICBQQ0xPRygiLS0tLS0tLS1cbiBEZXRlcm1pbmluZyBpZiBwYWdl
IGNhbiBiZSBjYWNoZWQ6Iik7CiAgICAgCi0gICAgYm9vbCBjYW5ub3RDYWNoZSA9ICFsb2dDYW5D
YWNoZUZyYW1lRGVjaXNpb24ocGFnZS0+bWFpbkZyYW1lKCksIDEpOworICAgIHVuc2lnbmVkIHJl
amVjdFJlYXNvbnMgPSAwOworICAgIHVuc2lnbmVkIGZyYW1lUmVqZWN0UmVhc29ucyA9IGxvZ0Nh
bkNhY2hlRnJhbWVEZWNpc2lvbihwYWdlLT5tYWluRnJhbWUoKSwgaW5kZW50TGV2ZWwrMSk7Cisg
ICAgaWYgKGZyYW1lUmVqZWN0UmVhc29ucykKKyAgICAgICAgcmVqZWN0UmVhc29ucyB8PSAxIDw8
IEZyYW1lQ2Fubm90QmVJblBhZ2VDYWNoZTsKICAgICAKICAgICBpZiAoIXBhZ2UtPmJhY2tGb3J3
YXJkKCktPmlzQWN0aXZlKCkpIHsKICAgICAgICAgUENMT0coIiAgIC1UaGUgYmFjay9mb3J3YXJk
IGxpc3QgaXMgZGlzYWJsZWQgb3IgaGFzIDAgY2FwYWNpdHkiKTsKLSAgICAgICAgY2Fubm90Q2Fj
aGUgPSB0cnVlOworICAgICAgICByZWplY3RSZWFzb25zIHw9IDEgPDwgRGlzYWJsZWRCYWNrRm9y
d2FyZExpc3Q7CiAgICAgfQogICAgIGlmICghcGFnZS0+c2V0dGluZ3MoKS0+dXNlc1BhZ2VDYWNo
ZSgpKSB7CiAgICAgICAgIFBDTE9HKCIgICAtUGFnZSBzZXR0aW5ncyBzYXlzIGIvZiBjYWNoZSBk
aXNhYmxlZCIpOwotICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgIHJlamVjdFJl
YXNvbnMgfD0gMSA8PCBEaXNhYmxlZFBhZ2VDYWNoZTsKICAgICB9CiAjaWYgRU5BQkxFKERFVklD
RV9PUklFTlRBVElPTikKICAgICBpZiAoRGV2aWNlTW90aW9uQ29udHJvbGxlcjo6aXNBY3RpdmVB
dChwYWdlKSkgewogICAgICAgICBQQ0xPRygiICAgLVBhZ2UgaXMgdXNpbmcgRGV2aWNlTW90aW9u
Iik7Ci0gICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgcmVqZWN0UmVhc29ucyB8
PSAxIDw8IFVzZXNEZXZpY2VNb3Rpb247CiAgICAgfQogICAgIGlmIChEZXZpY2VPcmllbnRhdGlv
bkNvbnRyb2xsZXI6OmlzQWN0aXZlQXQocGFnZSkpIHsKICAgICAgICAgUENMT0coIiAgIC1QYWdl
IGlzIHVzaW5nIERldmljZU9yaWVudGF0aW9uIik7Ci0gICAgICAgIGNhbm5vdENhY2hlID0gdHJ1
ZTsKKyAgICAgICAgcmVqZWN0UmVhc29ucyB8PSAxIDw8IFVzZXNEZXZpY2VPcmllbnRhdGlvbjsK
ICAgICB9CiAjZW5kaWYKICAgICBGcmFtZUxvYWRUeXBlIGxvYWRUeXBlID0gcGFnZS0+bWFpbkZy
YW1lKCktPmxvYWRlcigpLT5sb2FkVHlwZSgpOwogICAgIGlmIChsb2FkVHlwZSA9PSBGcmFtZUxv
YWRUeXBlUmVsb2FkKSB7CiAgICAgICAgIFBDTE9HKCIgICAtTG9hZCB0eXBlIGlzOiBSZWxvYWQi
KTsKLSAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICByZWplY3RSZWFzb25zIHw9
IDEgPDwgSXNSZWxvYWQ7CiAgICAgfQogICAgIGlmIChsb2FkVHlwZSA9PSBGcmFtZUxvYWRUeXBl
UmVsb2FkRnJvbU9yaWdpbikgewogICAgICAgICBQQ0xPRygiICAgLUxvYWQgdHlwZSBpczogUmVs
b2FkIGZyb20gb3JpZ2luIik7Ci0gICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAg
cmVqZWN0UmVhc29ucyB8PSAxIDw8IElzUmVsb2FkRnJvbU9yaWdpbjsKICAgICB9CiAgICAgaWYg
KGxvYWRUeXBlID09IEZyYW1lTG9hZFR5cGVTYW1lKSB7CiAgICAgICAgIFBDTE9HKCIgICAtTG9h
ZCB0eXBlIGlzOiBTYW1lIik7Ci0gICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAg
cmVqZWN0UmVhc29ucyB8PSAxIDw8IElzU2FtZUxvYWQ7CiAgICAgfQogICAgIAotICAgIFBDTE9H
KGNhbm5vdENhY2hlID8gIiBQYWdlIENBTk5PVCBiZSBjYWNoZWRcbi0tLS0tLS0tIiA6ICIgUGFn
ZSBDQU4gYmUgY2FjaGVkXG4tLS0tLS0tLSIpOworICAgIFBDTE9HKHJlamVjdFJlYXNvbnMgPyAi
IFBhZ2UgQ0FOTk9UIGJlIGNhY2hlZFxuLS0tLS0tLS0iIDogIiBQYWdlIENBTiBiZSBjYWNoZWRc
bi0tLS0tLS0tIik7CisKKyAgICBIaXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJhdGlv
bigiUGFnZUNhY2hlLlBhZ2VDYWNoZWFibGUiLCAhcmVqZWN0UmVhc29ucywgMik7CisgICAgaW50
IHJlYXNvbkNvdW50ID0gMDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE51bWJlck9mUmVhc29u
c1BhZ2VzQ2Fubm90QmVJblBhZ2VDYWNoZTsgKytpKSB7CisgICAgICAgIGlmIChyZWplY3RSZWFz
b25zICYgKDEgPDwgaSkpIHsKKyAgICAgICAgICAgICsrcmVhc29uQ291bnQ7CisgICAgICAgICAg
ICBIaXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJhdGlvbigiUGFnZUNhY2hlLlBhZ2VS
ZWplY3RSZWFzb24iLCBpLCBOdW1iZXJPZlJlYXNvbnNQYWdlc0Nhbm5vdEJlSW5QYWdlQ2FjaGUp
OworICAgICAgICB9CisgICAgfQorICAgIEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1l
cmF0aW9uKCJQYWdlQ2FjaGUuUGFnZVJlamVjdFJlYXNvbkNvdW50IiwgcmVhc29uQ291bnQsIDEg
KyBOdW1iZXJPZlJlYXNvbnNQYWdlc0Nhbm5vdEJlSW5QYWdlQ2FjaGUpOworCisgICAgLy8gUmVw
b3J0IGFsc28gb24gdGhlIGZyYW1lIHJlYXNvbnMgYnkgcGFnZTsgdGhpcyBpcyBkaXN0aW5jdCBm
cm9tIHRoZSBwZXIgZnJhbWUgc3RhdGlzdGljcyBzaW5jZSBpdCBjb2FsZXNjZXMgdGhlCisgICAg
Ly8gY2F1c2VzIGZyb20gYWxsIHN1YmZyYW1lcyB0b2dldGhlci4KKyAgICBIaXN0b2dyYW1TdXBw
b3J0OjpoaXN0b2dyYW1FbnVtZXJhdGlvbigiUGFnZUNhY2hlLkZyYW1lQ2FjaGVhYmxlQnlQYWdl
IiwgIWZyYW1lUmVqZWN0UmVhc29ucywgMik7CisgICAgaW50IGZyYW1lUmVhc29uQ291bnQgPSAw
OworICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IE51bWJlck9mUmVhc29uc0ZyYW1lc0Nhbm5vdEJl
SW5QYWdlQ2FjaGU7ICsraSkgeworICAgICAgICBpZiAoZnJhbWVSZWplY3RSZWFzb25zICYgKDEg
PDwgaSkpIHsKKyAgICAgICAgICAgICsrZnJhbWVSZWFzb25Db3VudDsKKyAgICAgICAgICAgIEhp
c3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1lcmF0aW9uKCJQYWdlQ2FjaGUuRnJhbWVSZWpl
Y3RSZWFzb25CeVBhZ2UiLCBpLCBOdW1iZXJPZlJlYXNvbnNGcmFtZXNDYW5ub3RCZUluUGFnZUNh
Y2hlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBIaXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1F
bnVtZXJhdGlvbigiUGFnZUNhY2hlLkZyYW1lUmVqZWN0UmVhc29uQ291bnRCeVBhZ2UiLCBmcmFt
ZVJlYXNvbkNvdW50LCAxICsgTnVtYmVyT2ZSZWFzb25zRnJhbWVzQ2Fubm90QmVJblBhZ2VDYWNo
ZSk7CiB9CiAKICNlbmRpZiAKQEAgLTI2NSw3ICszMzYsNyBAQCBib29sIFBhZ2VDYWNoZTo6Y2Fu
Q2FjaGUoUGFnZSogcGFnZSkKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAKLSNpZm5kZWYgTkRFQlVHCisjaWYgUExBVEZPUk0oQ0hST01JVU0pIHx8ICFkZWZpbmVk
KE5ERUJVRykKICAgICBsb2dDYW5DYWNoZVBhZ2VEZWNpc2lvbihwYWdlKTsKICNlbmRpZgogICAg
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130434</attachid>
            <date>2012-03-06 13:37:45 -0800</date>
            <delta_ts>2012-03-07 03:01:54 -0800</delta_ts>
            <desc>more stylish 2</desc>
            <filename>bug-80187-20120306163743.patch</filename>
            <type>text/plain</type>
            <size>12606</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5Nzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVlMWE0NGUyODRmZDdl
NzQ3MDYyMTQ0ZmUxMDcxYWE5NmZlOTgwZi4uYjZmN2VjNGZkY2FhZmE1ZGEzMTM0ZjJkNzc2NWIx
OWRlZTE4ODNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTAzLTA2ICBHYXZp
biBQZXRlcnMgIDxnYXZpbnBAY2hyb21pdW0ub3JnPgorCisgICAgICAgIGFkZCBIaXN0b2dyYW1z
IGZvciByZXBvcnRpbmcgb24gUGFnZUNhY2hlIHJlamVjdCByZWFzb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDE4NworCisgICAgICAgIEVuaGFu
Y2UgdGhlIFBhZ2VDYWNoZSBkZWJ1ZyBtb2RlIHNvIHRoYXQgaXQgdXNlcyBIaXN0b2dyYW1zIHRv
CisgICAgICAgIHJlcG9ydCBvbiBjYXVzZXMgb2YgZmFpbHVyZS4gIFR1cm4gb24gdGhlIGRlYnVn
IHByaW50aW5nIHBhdGgKKyAgICAgICAgZXZlbiBpbiBub24tZGVidWcgQ2hyb21pdW0gYnVpbGRz
LCBzbyB0aGVzZSBoaXN0b2dyYW1zIHdpbGwKKyAgICAgICAgdXBkYXRlLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgZG9lcyBu
b3QgY2hhbmdlIGJlaGF2aW91ci4KKworICAgICAgICAqIGhpc3RvcnkvUGFnZUNhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6bG9nQ2FuQ2FjaGVGcmFtZURl
Y2lzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmxvZ0NhbkNhY2hlUGFnZURlY2lzaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6Y2FuQ2FjaGUpOgorCiAyMDEyLTAzLTA1ICBSb2Ig
QnVpcyAgPHJidWlzQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIFVURiBjaGFycyBw
cmludGVkIGJhY2sgZnJvbSBjb29raWUgdGhyb3VnaCBwaHAgc2hvd3MgYXMgPz8/CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKaW5kZXggMjVhNDgzODVmMmY0NTM5M2ViMGUwZDdjOWM1
MmI1MWI4MGY4MGEzMi4uOWYxNzczY2VmZjc4OWQxMGNjMzQ0YTNhMWQ3NDIwNmJlZGVhYWEzYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNp
bmNsdWRlICJGcmFtZUxvYWRlclN0YXRlTWFjaGluZS5oIgorI2luY2x1ZGUgIkhpc3RvZ3JhbVN1
cHBvcnQuaCIKICNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCkBAIC01NiwxMiArNTcsMzYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGF0aWMgY29uc3QgZG91YmxlIGF1dG9yZWxlYXNlSW50ZXJ2YWwgPSAzOwogCi0jaWZu
ZGVmIE5ERUJVRworI2lmIFBMQVRGT1JNKENIUk9NSVVNKSB8fCAhZGVmaW5lZChOREVCVUcpCiAK
ICNkZWZpbmUgUENMT0coLi4uKSBMT0coUGFnZUNhY2hlLCAiJSpzJXMiLCBpbmRlbnRMZXZlbCo0
LCAiIiwgbWFrZVN0cmluZyhfX1ZBX0FSR1NfXykudXRmOCgpLmRhdGEoKSkKICAgICAKLXN0YXRp
YyBib29sIGxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lvbihGcmFtZSogZnJhbWUsIGludCBpbmRlbnRM
ZXZlbCkKKy8vIFVzZWQgaW4gaGlzdG9ncmFtcywgcGxlYXNlIG9ubHkgYWRkIGF0IHRoZSBlbmQs
IGFuZCBkbyBub3QgcmVtb3ZlIGVsZW1lbnRzIChyZW5hbWluZyBlLmcuIHRvICJGb29FbnVtVW51
c2VkMSIgaXMgZmluZSkuCisvLyBUaGlzIGlzIGJlY2F1c2Ugc3RhdGlzdGljcyBtYXkgYmUgZ2F0
aGVyZWQgZnJvbSBoaXN0b2dyYW1zIGJldHdlZW4gdmVyc2lvbnMgb3ZlciB0aW1lLCBhbmQgcmUt
dXNpbmcgdmFsdWVzIGNhdXNlcyBjb2xsaXNpb25zLgorZW51bSBSZWFzb25GcmFtZUNhbm5vdEJl
SW5QYWdlQ2FjaGUgeworICAgIE5vRG9jdW1lbnRMb2FkZXIgPSAwLAorICAgIE1haW5Eb2N1bWVu
dEVycm9yLAorICAgIElzRXJyb3JQYWdlLAorICAgIEhhc1BsdWdpbnMsCisgICAgSXNIdHRwc0Fu
ZENhY2hlQ29udHJvbGxlZCwKKyAgICBIYXNVbmxvYWRMaXN0ZW5lciwKKyAgICBIYXNEYXRhYmFz
ZUhhbmRsZXMsCisgICAgSGFzU2hhcmVkV29ya2VycywKKyAgICBOb0hpc3RvcnlJdGVtLAorICAg
IFF1aWNrUmVkaXJlY3RDb21pbmcsCisgICAgSXNMb2FkaW5nSW5BUElTZW5zZSwKKyAgICBJc1N0
b3BwaW5nLAorICAgIENhblN1c3BlbmRBY3RpdmVET01PYmplY3RzLAorICAgIERvY3VtZW50TG9h
ZGVyVXNlc0FwcGxpY2F0aW9uQ2FjaGUsCisgICAgQ2xpZW50RGVuaWVzQ2FjaGluZywKKyAgICBO
dW1iZXJPZlJlYXNvbnNGcmFtZXNDYW5ub3RCZUluUGFnZUNhY2hlLAorfTsKKworc3RhdGljIHVu
c2lnbmVkIGxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lvbihGcmFtZSogZnJhbWUsIGludCBpbmRlbnRM
ZXZlbCkKIHsKKyNpZmRlZiBOREVCVUcKKyAgICBVTlVTRURfUEFSQU0oaW5kZW50TGV2ZWwpOwor
I2VuZGlmCiAgICAgLy8gT25seSBib3RoZXIgbG9nZ2luZyBmb3IgZnJhbWVzIHRoYXQgaGF2ZSBh
Y3R1YWxseSBsb2FkZWQgYW5kIGhhdmUgY29udGVudC4KICAgICBpZiAoZnJhbWUtPmxvYWRlcigp
LT5zdGF0ZU1hY2hpbmUoKS0+Y3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC03NSw4NyArMTAwLDExMCBAQCBzdGF0aWMgYm9vbCBsb2dDYW5D
YWNoZUZyYW1lRGVjaXNpb24oRnJhbWUqIGZyYW1lLCBpbnQgaW5kZW50TGV2ZWwpCiAgICAgICAg
IFBDTE9HKCIgRGV0ZXJtaW5pbmcgaWYgZnJhbWUgY2FuIGJlIGNhY2hlZCBuYXZpZ2F0aW5nIGZy
b20gKCIsIGN1cnJlbnRVUkwuc3RyaW5nKCksICIpIHRvICgiLCBuZXdVUkwuc3RyaW5nKCksICIp
OiIpOwogICAgIGVsc2UKICAgICAgICAgUENMT0coIiBEZXRlcm1pbmluZyBpZiBzdWJmcmFtZSB3
aXRoIFVSTCAoIiwgY3VycmVudFVSTC5zdHJpbmcoKSwgIikgY2FuIGJlIGNhY2hlZDoiKTsKLSAg
ICAKLSAgICBib29sIGNhbm5vdENhY2hlID0gZmFsc2U7CisgICAgIAorICAgIHVuc2lnbmVkIHJl
amVjdFJlYXNvbnMgPSAwOwogICAgIAogICAgIGlmICghZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVu
dExvYWRlcigpKSB7CiAgICAgICAgIFBDTE9HKCIgICAtVGhlcmUgaXMgbm8gRG9jdW1lbnRMb2Fk
ZXIgb2JqZWN0Iik7Ci0gICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgcmVqZWN0
UmVhc29ucyB8PSAxIDw8IE5vRG9jdW1lbnRMb2FkZXI7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
aWYgKCFmcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPm1haW5Eb2N1bWVudEVycm9y
KCkuaXNOdWxsKCkpIHsKICAgICAgICAgICAgIFBDTE9HKCIgICAtTWFpbiBkb2N1bWVudCBoYXMg
YW4gZXJyb3IiKTsKLSAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgICAg
IHJlamVjdFJlYXNvbnMgfD0gMSA8PCBNYWluRG9jdW1lbnRFcnJvcjsKICAgICAgICAgfQogICAg
ICAgICBpZiAoZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5zdWJzdGl0dXRlRGF0
YSgpLmlzVmFsaWQoKSAmJiBmcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnN1YnN0
aXR1dGVEYXRhKCkuZmFpbGluZ1VSTCgpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgUENMT0co
IiAgIC1GcmFtZSBpcyBhbiBlcnJvciBwYWdlIik7Ci0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9
IHRydWU7CisgICAgICAgICAgICByZWplY3RSZWFzb25zIHw9IDEgPDwgSXNFcnJvclBhZ2U7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKGZyYW1lLT5sb2FkZXIoKS0+c3ViZnJhbWVMb2FkZXIoKS0+
Y29udGFpbnNQbHVnaW5zKCkgJiYgIWZyYW1lLT5wYWdlKCktPnNldHRpbmdzKCktPnBhZ2VDYWNo
ZVN1cHBvcnRzUGx1Z2lucygpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLUZyYW1lIGNvbnRh
aW5zIHBsdWdpbnMiKTsKLSAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAg
ICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBIYXNQbHVnaW5zOwogICAgICAgICB9CiAgICAgICAg
IGlmIChmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKQogICAgICAg
ICAgICAgJiYgKGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKS5j
YWNoZUNvbnRyb2xDb250YWluc05vQ2FjaGUoKQogICAgICAgICAgICAgICAgIHx8IGZyYW1lLT5s
b2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKS5jYWNoZUNvbnRyb2xDb250YWlu
c05vU3RvcmUoKSkpIHsKICAgICAgICAgICAgIFBDTE9HKCIgICAtRnJhbWUgaXMgSFRUUFMsIGFu
ZCBjYWNoZSBjb250cm9sIHByb2hpYml0cyBjYWNoaW5nIG9yIHN0b3JpbmciKTsKLSAgICAgICAg
ICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8
PCBJc0h0dHBzQW5kQ2FjaGVDb250cm9sbGVkOwogICAgICAgICB9CiAgICAgICAgIGlmIChmcmFt
ZS0+ZG9tV2luZG93KCkgJiYgZnJhbWUtPmRvbVdpbmRvdygpLT5oYXNFdmVudExpc3RlbmVycyhl
dmVudE5hbWVzKCkudW5sb2FkRXZlbnQpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLUZyYW1l
IGhhcyBhbiB1bmxvYWQgZXZlbnQgbGlzdGVuZXIiKTsKLSAgICAgICAgICAgIGNhbm5vdENhY2hl
ID0gdHJ1ZTsKKyAgICAgICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBIYXNVbmxvYWRMaXN0
ZW5lcjsKICAgICAgICAgfQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgICAgIGlmIChE
YXRhYmFzZUNvbnRleHQ6Omhhc09wZW5EYXRhYmFzZXMoZnJhbWUtPmRvY3VtZW50KCkpKSB7CiAg
ICAgICAgICAgICBQQ0xPRygiICAgLUZyYW1lIGhhcyBvcGVuIGRhdGFiYXNlIGhhbmRsZXMiKTsK
LSAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgICAgIHJlamVjdFJlYXNv
bnMgfD0gMSA8PCBIYXNEYXRhYmFzZUhhbmRsZXM7CiAgICAgICAgIH0KICNlbmRpZgogI2lmIEVO
QUJMRShTSEFSRURfV09SS0VSUykKICAgICAgICAgaWYgKFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6
Omhhc1NoYXJlZFdvcmtlcnMoZnJhbWUtPmRvY3VtZW50KCkpKSB7CiAgICAgICAgICAgICBQQ0xP
RygiICAgLUZyYW1lIGhhcyBhc3NvY2lhdGVkIFNoYXJlZFdvcmtlcnMiKTsKLSAgICAgICAgICAg
IGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBI
YXNTaGFyZWRXb3JrZXJzOwogICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgaWYgKCFmcmFtZS0+
bG9hZGVyKCktPmhpc3RvcnkoKS0+Y3VycmVudEl0ZW0oKSkgewogICAgICAgICAgICAgUENMT0co
IiAgIC1ObyBjdXJyZW50IGhpc3RvcnkgaXRlbSIpOwotICAgICAgICAgICAgY2Fubm90Q2FjaGUg
PSB0cnVlOworICAgICAgICAgICAgcmVqZWN0UmVhc29ucyB8PSAxIDw8IE5vSGlzdG9yeUl0ZW07
CiAgICAgICAgIH0KICAgICAgICAgaWYgKGZyYW1lLT5sb2FkZXIoKS0+cXVpY2tSZWRpcmVjdENv
bWluZygpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLVF1aWNrIHJlZGlyZWN0IGlzIGNvbWlu
ZyIpOwotICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAgcmVqZWN0
UmVhc29ucyB8PSAxIDw8IFF1aWNrUmVkaXJlY3RDb21pbmc7CiAgICAgICAgIH0KICAgICAgICAg
aWYgKGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+aXNMb2FkaW5nSW5BUElTZW5z
ZSgpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLURvY3VtZW50TG9hZGVyIGlzIHN0aWxsIGxv
YWRpbmcgaW4gQVBJIHNlbnNlIik7Ci0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7Cisg
ICAgICAgICAgICByZWplY3RSZWFzb25zIHw9IDEgPDwgSXNMb2FkaW5nSW5BUElTZW5zZTsKICAg
ICAgICAgfQogICAgICAgICBpZiAoZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5p
c1N0b3BwaW5nKCkpIHsKICAgICAgICAgICAgIFBDTE9HKCIgICAtRG9jdW1lbnRMb2FkZXIgaXMg
aW4gdGhlIG1pZGRsZSBvZiBzdG9wcGluZyIpOwotICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0
cnVlOworICAgICAgICAgICAgcmVqZWN0UmVhc29ucyB8PSAxIDw8IElzU3RvcHBpbmc7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKCFmcmFtZS0+ZG9jdW1lbnQoKS0+Y2FuU3VzcGVuZEFjdGl2ZURP
TU9iamVjdHMoKSkgewogICAgICAgICAgICAgUENMT0coIiAgIC1UaGUgZG9jdW1lbnQgY2Fubm90
IHN1c3BlY3QgaXRzIGFjdGl2ZSBET00gT2JqZWN0cyIpOwotICAgICAgICAgICAgY2Fubm90Q2Fj
aGUgPSB0cnVlOworICAgICAgICAgICAgcmVqZWN0UmVhc29ucyB8PSAxIDw8IENhblN1c3BlbmRB
Y3RpdmVET01PYmplY3RzOwogICAgICAgICB9CiAgICAgICAgIGlmICghZnJhbWUtPmxvYWRlcigp
LT5kb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5jYW5DYWNoZUluUGFn
ZUNhY2hlKCkpIHsKICAgICAgICAgICAgIFBDTE9HKCIgICAtVGhlIERvY3VtZW50TG9hZGVyIHVz
ZXMgYW4gYXBwbGljYXRpb24gY2FjaGUiKTsKLSAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1
ZTsKKyAgICAgICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBEb2N1bWVudExvYWRlclVzZXNB
cHBsaWNhdGlvbkNhY2hlOwogICAgICAgICB9CiAgICAgICAgIGlmICghZnJhbWUtPmxvYWRlcigp
LT5jbGllbnQoKS0+Y2FuQ2FjaGVQYWdlKCkpIHsKICAgICAgICAgICAgIFBDTE9HKCIgICAtVGhl
IGNsaWVudCBzYXlzIHRoaXMgZnJhbWUgY2Fubm90IGJlIGNhY2hlZCIpOwotICAgICAgICAgICAg
Y2Fubm90Q2FjaGUgPSB0cnVlOyAKKyAgICAgICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBD
bGllbnREZW5pZXNDYWNoaW5nOwogICAgICAgICB9CiAgICAgfQotICAgIAorCisgICAgSGlzdG9n
cmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51bWVyYXRpb24oIlBhZ2VDYWNoZS5GcmFtZUNhY2hlYWJs
ZSIsICFyZWplY3RSZWFzb25zLCAyKTsKKyAgICBpbnQgcmVhc29uQ291bnQgPSAwOworICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgTnVtYmVyT2ZSZWFzb25zRnJhbWVzQ2Fubm90QmVJblBhZ2VDYWNo
ZTsgKytpKSB7CisgICAgICAgIGlmIChyZWplY3RSZWFzb25zICYgKDEgPDwgaSkpIHsKKyAgICAg
ICAgICAgICsrcmVhc29uQ291bnQ7CisgICAgICAgICAgICBIaXN0b2dyYW1TdXBwb3J0OjpoaXN0
b2dyYW1FbnVtZXJhdGlvbigiUGFnZUNhY2hlLkZyYW1lUmVqZWN0UmVhc29uIiwgaSwgTnVtYmVy
T2ZSZWFzb25zRnJhbWVzQ2Fubm90QmVJblBhZ2VDYWNoZSk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgSGlzdG9ncmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51bWVyYXRpb24oIlBhZ2VDYWNoZS5GcmFt
ZVJlamVjdFJlYXNvbkNvdW50IiwgcmVhc29uQ291bnQsIDEgKyBOdW1iZXJPZlJlYXNvbnNGcmFt
ZXNDYW5ub3RCZUluUGFnZUNhY2hlKTsKKwogICAgIGZvciAoRnJhbWUqIGNoaWxkID0gZnJhbWUt
PnRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0
U2libGluZygpKQotICAgICAgICBpZiAoIWxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lvbihjaGlsZCwg
aW5kZW50TGV2ZWwgKyAxKSkKLSAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAg
ICAgcmVqZWN0UmVhc29ucyB8PSBsb2dDYW5DYWNoZUZyYW1lRGVjaXNpb24oY2hpbGQsIGluZGVu
dExldmVsICsgMSk7CiAgICAgCi0gICAgUENMT0coY2Fubm90Q2FjaGUgPyAiIEZyYW1lIENBTk5P
VCBiZSBjYWNoZWQiIDogIiBGcmFtZSBDQU4gYmUgY2FjaGVkIik7CisgICAgUENMT0cocmVqZWN0
UmVhc29ucyA/ICIgRnJhbWUgQ0FOTk9UIGJlIGNhY2hlZCIgOiAiIEZyYW1lIENBTiBiZSBjYWNo
ZWQiKTsKICAgICBQQ0xPRygiKy0tLSIpOwogICAgIAotICAgIHJldHVybiAhY2Fubm90Q2FjaGU7
CisgICAgcmV0dXJuIHJlamVjdFJlYXNvbnM7CiB9Ci0gICAgCisKKy8vIFVzZWQgaW4gaGlzdG9n
cmFtcywgcGxlYXNlIG9ubHkgYWRkIGF0IHRoZSBlbmQsIGFuZCBkbyBub3QgcmVtb3ZlIGVsZW1l
bnRzIChyZW5hbWluZyBlLmcuIHRvICJGb29FbnVtVW51c2VkMSIgaXMgZmluZSkuCisvLyBUaGlz
IGlzIGJlY2F1c2Ugc3RhdGlzdGljcyBtYXkgYmUgZ2F0aGVyZWQgZnJvbSBoaXN0b2dyYW1zIGJl
dHdlZW4gdmVyc2lvbnMgb3ZlciB0aW1lLCBhbmQgcmUtdXNpbmcgdmFsdWVzIGNhdXNlcyBjb2xs
aXNpb25zLgorZW51bSBSZWFzb25QYWdlQ2Fubm90QmVJblBhZ2VDYWNoZSB7CisgICAgRnJhbWVD
YW5ub3RCZUluUGFnZUNhY2hlID0gMCwKKyAgICBEaXNhYmxlZEJhY2tGb3J3YXJkTGlzdCwKKyAg
ICBEaXNhYmxlZFBhZ2VDYWNoZSwKKyAgICBVc2VzRGV2aWNlTW90aW9uLAorICAgIFVzZXNEZXZp
Y2VPcmllbnRhdGlvbiwKKyAgICBJc1JlbG9hZCwKKyAgICBJc1JlbG9hZEZyb21PcmlnaW4sCisg
ICAgSXNTYW1lTG9hZCwKKyAgICBOdW1iZXJPZlJlYXNvbnNQYWdlc0Nhbm5vdEJlSW5QYWdlQ2Fj
aGUsCit9OworCiBzdGF0aWMgdm9pZCBsb2dDYW5DYWNoZVBhZ2VEZWNpc2lvbihQYWdlKiBwYWdl
KQogewogICAgIC8vIE9ubHkgYm90aGVyIGxvZ2dpbmcgZm9yIG1haW4gZnJhbWVzIHRoYXQgaGF2
ZSBhY3R1YWxseSBsb2FkZWQgYW5kIGhhdmUgY29udGVudC4KQEAgLTE2OCw0MSArMjE2LDY2IEBA
IHN0YXRpYyB2b2lkIGxvZ0NhbkNhY2hlUGFnZURlY2lzaW9uKFBhZ2UqIHBhZ2UpCiAgICAgaW50
IGluZGVudExldmVsID0gMDsgICAgCiAgICAgUENMT0coIi0tLS0tLS0tXG4gRGV0ZXJtaW5pbmcg
aWYgcGFnZSBjYW4gYmUgY2FjaGVkOiIpOwogICAgIAotICAgIGJvb2wgY2Fubm90Q2FjaGUgPSAh
bG9nQ2FuQ2FjaGVGcmFtZURlY2lzaW9uKHBhZ2UtPm1haW5GcmFtZSgpLCAxKTsKKyAgICB1bnNp
Z25lZCByZWplY3RSZWFzb25zID0gMDsKKyAgICB1bnNpZ25lZCBmcmFtZVJlamVjdFJlYXNvbnMg
PSBsb2dDYW5DYWNoZUZyYW1lRGVjaXNpb24ocGFnZS0+bWFpbkZyYW1lKCksIGluZGVudExldmVs
KzEpOworICAgIGlmIChmcmFtZVJlamVjdFJlYXNvbnMpCisgICAgICAgIHJlamVjdFJlYXNvbnMg
fD0gMSA8PCBGcmFtZUNhbm5vdEJlSW5QYWdlQ2FjaGU7CiAgICAgCiAgICAgaWYgKCFwYWdlLT5i
YWNrRm9yd2FyZCgpLT5pc0FjdGl2ZSgpKSB7CiAgICAgICAgIFBDTE9HKCIgICAtVGhlIGJhY2sv
Zm9yd2FyZCBsaXN0IGlzIGRpc2FibGVkIG9yIGhhcyAwIGNhcGFjaXR5Iik7Ci0gICAgICAgIGNh
bm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgcmVqZWN0UmVhc29ucyB8PSAxIDw8IERpc2FibGVk
QmFja0ZvcndhcmRMaXN0OwogICAgIH0KICAgICBpZiAoIXBhZ2UtPnNldHRpbmdzKCktPnVzZXNQ
YWdlQ2FjaGUoKSkgewogICAgICAgICBQQ0xPRygiICAgLVBhZ2Ugc2V0dGluZ3Mgc2F5cyBiL2Yg
Y2FjaGUgZGlzYWJsZWQiKTsKLSAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICBy
ZWplY3RSZWFzb25zIHw9IDEgPDwgRGlzYWJsZWRQYWdlQ2FjaGU7CiAgICAgfQogI2lmIEVOQUJM
RShERVZJQ0VfT1JJRU5UQVRJT04pCiAgICAgaWYgKERldmljZU1vdGlvbkNvbnRyb2xsZXI6Omlz
QWN0aXZlQXQocGFnZSkpIHsKICAgICAgICAgUENMT0coIiAgIC1QYWdlIGlzIHVzaW5nIERldmlj
ZU1vdGlvbiIpOwotICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgIHJlamVjdFJl
YXNvbnMgfD0gMSA8PCBVc2VzRGV2aWNlTW90aW9uOwogICAgIH0KICAgICBpZiAoRGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyOjppc0FjdGl2ZUF0KHBhZ2UpKSB7CiAgICAgICAgIFBDTE9HKCIg
ICAtUGFnZSBpcyB1c2luZyBEZXZpY2VPcmllbnRhdGlvbiIpOwotICAgICAgICBjYW5ub3RDYWNo
ZSA9IHRydWU7CisgICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBVc2VzRGV2aWNlT3JpZW50
YXRpb247CiAgICAgfQogI2VuZGlmCiAgICAgRnJhbWVMb2FkVHlwZSBsb2FkVHlwZSA9IHBhZ2Ut
Pm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+bG9hZFR5cGUoKTsKICAgICBpZiAobG9hZFR5cGUgPT0g
RnJhbWVMb2FkVHlwZVJlbG9hZCkgewogICAgICAgICBQQ0xPRygiICAgLUxvYWQgdHlwZSBpczog
UmVsb2FkIik7Ci0gICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgcmVqZWN0UmVh
c29ucyB8PSAxIDw8IElzUmVsb2FkOwogICAgIH0KICAgICBpZiAobG9hZFR5cGUgPT0gRnJhbWVM
b2FkVHlwZVJlbG9hZEZyb21PcmlnaW4pIHsKICAgICAgICAgUENMT0coIiAgIC1Mb2FkIHR5cGUg
aXM6IFJlbG9hZCBmcm9tIG9yaWdpbiIpOwotICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7Cisg
ICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBJc1JlbG9hZEZyb21PcmlnaW47CiAgICAgfQog
ICAgIGlmIChsb2FkVHlwZSA9PSBGcmFtZUxvYWRUeXBlU2FtZSkgewogICAgICAgICBQQ0xPRygi
ICAgLUxvYWQgdHlwZSBpczogU2FtZSIpOwotICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7Cisg
ICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBJc1NhbWVMb2FkOwogICAgIH0KICAgICAKLSAg
ICBQQ0xPRyhjYW5ub3RDYWNoZSA/ICIgUGFnZSBDQU5OT1QgYmUgY2FjaGVkXG4tLS0tLS0tLSIg
OiAiIFBhZ2UgQ0FOIGJlIGNhY2hlZFxuLS0tLS0tLS0iKTsKKyAgICBQQ0xPRyhyZWplY3RSZWFz
b25zID8gIiBQYWdlIENBTk5PVCBiZSBjYWNoZWRcbi0tLS0tLS0tIiA6ICIgUGFnZSBDQU4gYmUg
Y2FjaGVkXG4tLS0tLS0tLSIpOworCisgICAgSGlzdG9ncmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51
bWVyYXRpb24oIlBhZ2VDYWNoZS5QYWdlQ2FjaGVhYmxlIiwgIXJlamVjdFJlYXNvbnMsIDIpOwor
ICAgIGludCByZWFzb25Db3VudCA9IDA7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOdW1iZXJP
ZlJlYXNvbnNQYWdlc0Nhbm5vdEJlSW5QYWdlQ2FjaGU7ICsraSkgeworICAgICAgICBpZiAocmVq
ZWN0UmVhc29ucyAmICgxIDw8IGkpKSB7CisgICAgICAgICAgICArK3JlYXNvbkNvdW50OworICAg
ICAgICAgICAgSGlzdG9ncmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51bWVyYXRpb24oIlBhZ2VDYWNo
ZS5QYWdlUmVqZWN0UmVhc29uIiwgaSwgTnVtYmVyT2ZSZWFzb25zUGFnZXNDYW5ub3RCZUluUGFn
ZUNhY2hlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBIaXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dy
YW1FbnVtZXJhdGlvbigiUGFnZUNhY2hlLlBhZ2VSZWplY3RSZWFzb25Db3VudCIsIHJlYXNvbkNv
dW50LCAxICsgTnVtYmVyT2ZSZWFzb25zUGFnZXNDYW5ub3RCZUluUGFnZUNhY2hlKTsKKworICAg
IC8vIFJlcG9ydCBhbHNvIG9uIHRoZSBmcmFtZSByZWFzb25zIGJ5IHBhZ2U7IHRoaXMgaXMgZGlz
dGluY3QgZnJvbSB0aGUgcGVyIGZyYW1lIHN0YXRpc3RpY3Mgc2luY2UgaXQgY29hbGVzY2VzIHRo
ZQorICAgIC8vIGNhdXNlcyBmcm9tIGFsbCBzdWJmcmFtZXMgdG9nZXRoZXIuCisgICAgSGlzdG9n
cmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51bWVyYXRpb24oIlBhZ2VDYWNoZS5GcmFtZUNhY2hlYWJs
ZUJ5UGFnZSIsICFmcmFtZVJlamVjdFJlYXNvbnMsIDIpOworICAgIGludCBmcmFtZVJlYXNvbkNv
dW50ID0gMDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8PSBOdW1iZXJPZlJlYXNvbnNGcmFtZXND
YW5ub3RCZUluUGFnZUNhY2hlOyArK2kpIHsKKyAgICAgICAgaWYgKGZyYW1lUmVqZWN0UmVhc29u
cyAmICgxIDw8IGkpKSB7CisgICAgICAgICAgICArK2ZyYW1lUmVhc29uQ291bnQ7CisgICAgICAg
ICAgICBIaXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJhdGlvbigiUGFnZUNhY2hlLkZy
YW1lUmVqZWN0UmVhc29uQnlQYWdlIiwgaSwgTnVtYmVyT2ZSZWFzb25zRnJhbWVzQ2Fubm90QmVJ
blBhZ2VDYWNoZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgSGlzdG9ncmFtU3VwcG9ydDo6aGlz
dG9ncmFtRW51bWVyYXRpb24oIlBhZ2VDYWNoZS5GcmFtZVJlamVjdFJlYXNvbkNvdW50QnlQYWdl
IiwgZnJhbWVSZWFzb25Db3VudCwgMSArIE51bWJlck9mUmVhc29uc0ZyYW1lc0Nhbm5vdEJlSW5Q
YWdlQ2FjaGUpOwogfQogCiAjZW5kaWYgCkBAIC0yNjUsNyArMzM4LDcgQEAgYm9vbCBQYWdlQ2Fj
aGU6OmNhbkNhY2hlKFBhZ2UqIHBhZ2UpCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgCi0jaWZuZGVmIE5ERUJVRworI2lmIFBMQVRGT1JNKENIUk9NSVVNKSB8fCAh
ZGVmaW5lZChOREVCVUcpCiAgICAgbG9nQ2FuQ2FjaGVQYWdlRGVjaXNpb24ocGFnZSk7CiAjZW5k
aWYKICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130584</attachid>
            <date>2012-03-07 03:02:01 -0800</date>
            <delta_ts>2012-03-07 03:32:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80187-20120307060159.patch</filename>
            <type>text/plain</type>
            <size>12604</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5Nzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVlMWE0NGUyODRmZDdl
NzQ3MDYyMTQ0ZmUxMDcxYWE5NmZlOTgwZi4uZGU4ZWM3MmJkZjBmYmM1MzdhN2UxYjBmMzkzN2Nh
MjY0Yjc4MTJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTAzLTA2ICBHYXZp
biBQZXRlcnMgIDxnYXZpbnBAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBIaXN0b2dyYW1z
IGZvciByZXBvcnRpbmcgb24gUGFnZUNhY2hlIHJlamVjdCByZWFzb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDE4NworCisgICAgICAgIEVuaGFu
Y2UgdGhlIFBhZ2VDYWNoZSBkZWJ1ZyBtb2RlIHNvIHRoYXQgaXQgdXNlcyBIaXN0b2dyYW1zIHRv
CisgICAgICAgIHJlcG9ydCBvbiBjYXVzZXMgb2YgZmFpbHVyZS4gIFR1cm4gb24gdGhlIGRlYnVn
IHByaW50aW5nIHBhdGgKKyAgICAgICAgZXZlbiBpbiBub24tZGVidWcgQ2hyb21pdW0gYnVpbGRz
LCBzbyB0aGVzZSBoaXN0b2dyYW1zIHdpbGwKKyAgICAgICAgdXBkYXRlLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGRvZXMgbm90
IGNoYW5nZSBiZWhhdmlvdXIuCisKKyAgICAgICAgKiBoaXN0b3J5L1BhZ2VDYWNoZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmxvZ0NhbkNhY2hlRnJhbWVEZWNp
c2lvbik6CisgICAgICAgIChXZWJDb3JlOjpsb2dDYW5DYWNoZVBhZ2VEZWNpc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlQ2FjaGU6OmNhbkNhY2hlKToKKwogMjAxMi0wMy0wNSAgUm9iIEJ1
aXMgIDxyYnVpc0ByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBVVEYgY2hhcnMgcHJp
bnRlZCBiYWNrIGZyb20gY29va2llIHRocm91Z2ggcGhwIHNob3dzIGFzID8/PwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9QYWdlQ2FjaGUuY3BwCmluZGV4IDI1YTQ4Mzg1ZjJmNDUzOTNlYjBlMGQ3YzljNTJi
NTFiODBmODBhMzIuLjlmMTc3M2NlZmY3ODlkMTBjYzM0NGEzYTFkNzQyMDZiZWRlYWFhM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNs
dWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuaCIKKyNpbmNsdWRlICJIaXN0b2dyYW1TdXBw
b3J0LmgiCiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgpAQCAtNTYsMTIgKzU3LDM2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogc3RhdGljIGNvbnN0IGRvdWJsZSBhdXRvcmVsZWFzZUludGVydmFsID0gMzsKIAotI2lmbmRl
ZiBOREVCVUcKKyNpZiBQTEFURk9STShDSFJPTUlVTSkgfHwgIWRlZmluZWQoTkRFQlVHKQogCiAj
ZGVmaW5lIFBDTE9HKC4uLikgTE9HKFBhZ2VDYWNoZSwgIiUqcyVzIiwgaW5kZW50TGV2ZWwqNCwg
IiIsIG1ha2VTdHJpbmcoX19WQV9BUkdTX18pLnV0ZjgoKS5kYXRhKCkpCiAgICAgCi1zdGF0aWMg
Ym9vbCBsb2dDYW5DYWNoZUZyYW1lRGVjaXNpb24oRnJhbWUqIGZyYW1lLCBpbnQgaW5kZW50TGV2
ZWwpCisvLyBVc2VkIGluIGhpc3RvZ3JhbXMsIHBsZWFzZSBvbmx5IGFkZCBhdCB0aGUgZW5kLCBh
bmQgZG8gbm90IHJlbW92ZSBlbGVtZW50cyAocmVuYW1pbmcgZS5nLiB0byAiRm9vRW51bVVudXNl
ZDEiIGlzIGZpbmUpLgorLy8gVGhpcyBpcyBiZWNhdXNlIHN0YXRpc3RpY3MgbWF5IGJlIGdhdGhl
cmVkIGZyb20gaGlzdG9ncmFtcyBiZXR3ZWVuIHZlcnNpb25zIG92ZXIgdGltZSwgYW5kIHJlLXVz
aW5nIHZhbHVlcyBjYXVzZXMgY29sbGlzaW9ucy4KK2VudW0gUmVhc29uRnJhbWVDYW5ub3RCZUlu
UGFnZUNhY2hlIHsKKyAgICBOb0RvY3VtZW50TG9hZGVyID0gMCwKKyAgICBNYWluRG9jdW1lbnRF
cnJvciwKKyAgICBJc0Vycm9yUGFnZSwKKyAgICBIYXNQbHVnaW5zLAorICAgIElzSHR0cHNBbmRD
YWNoZUNvbnRyb2xsZWQsCisgICAgSGFzVW5sb2FkTGlzdGVuZXIsCisgICAgSGFzRGF0YWJhc2VI
YW5kbGVzLAorICAgIEhhc1NoYXJlZFdvcmtlcnMsCisgICAgTm9IaXN0b3J5SXRlbSwKKyAgICBR
dWlja1JlZGlyZWN0Q29taW5nLAorICAgIElzTG9hZGluZ0luQVBJU2Vuc2UsCisgICAgSXNTdG9w
cGluZywKKyAgICBDYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cywKKyAgICBEb2N1bWVudExvYWRl
clVzZXNBcHBsaWNhdGlvbkNhY2hlLAorICAgIENsaWVudERlbmllc0NhY2hpbmcsCisgICAgTnVt
YmVyT2ZSZWFzb25zRnJhbWVzQ2Fubm90QmVJblBhZ2VDYWNoZSwKK307CisKK3N0YXRpYyB1bnNp
Z25lZCBsb2dDYW5DYWNoZUZyYW1lRGVjaXNpb24oRnJhbWUqIGZyYW1lLCBpbnQgaW5kZW50TGV2
ZWwpCiB7CisjaWZkZWYgTkRFQlVHCisgICAgVU5VU0VEX1BBUkFNKGluZGVudExldmVsKTsKKyNl
bmRpZgogICAgIC8vIE9ubHkgYm90aGVyIGxvZ2dpbmcgZm9yIGZyYW1lcyB0aGF0IGhhdmUgYWN0
dWFsbHkgbG9hZGVkIGFuZCBoYXZlIGNvbnRlbnQuCiAgICAgaWYgKGZyYW1lLT5sb2FkZXIoKS0+
c3RhdGVNYWNoaW5lKCktPmNyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNzUsODcgKzEwMCwxMTAgQEAgc3RhdGljIGJvb2wgbG9nQ2FuQ2Fj
aGVGcmFtZURlY2lzaW9uKEZyYW1lKiBmcmFtZSwgaW50IGluZGVudExldmVsKQogICAgICAgICBQ
Q0xPRygiIERldGVybWluaW5nIGlmIGZyYW1lIGNhbiBiZSBjYWNoZWQgbmF2aWdhdGluZyBmcm9t
ICgiLCBjdXJyZW50VVJMLnN0cmluZygpLCAiKSB0byAoIiwgbmV3VVJMLnN0cmluZygpLCAiKToi
KTsKICAgICBlbHNlCiAgICAgICAgIFBDTE9HKCIgRGV0ZXJtaW5pbmcgaWYgc3ViZnJhbWUgd2l0
aCBVUkwgKCIsIGN1cnJlbnRVUkwuc3RyaW5nKCksICIpIGNhbiBiZSBjYWNoZWQ6Iik7Ci0gICAg
Ci0gICAgYm9vbCBjYW5ub3RDYWNoZSA9IGZhbHNlOworICAgICAKKyAgICB1bnNpZ25lZCByZWpl
Y3RSZWFzb25zID0gMDsKICAgICAKICAgICBpZiAoIWZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRM
b2FkZXIoKSkgewogICAgICAgICBQQ0xPRygiICAgLVRoZXJlIGlzIG5vIERvY3VtZW50TG9hZGVy
IG9iamVjdCIpOwotICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgIHJlamVjdFJl
YXNvbnMgfD0gMSA8PCBOb0RvY3VtZW50TG9hZGVyOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlm
ICghZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5tYWluRG9jdW1lbnRFcnJvcigp
LmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLU1haW4gZG9jdW1lbnQgaGFzIGFu
IGVycm9yIik7Ci0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgICAgICBy
ZWplY3RSZWFzb25zIHw9IDEgPDwgTWFpbkRvY3VtZW50RXJyb3I7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+c3Vic3RpdHV0ZURhdGEo
KS5pc1ZhbGlkKCkgJiYgZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5zdWJzdGl0
dXRlRGF0YSgpLmZhaWxpbmdVUkwoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIFBDTE9HKCIg
ICAtRnJhbWUgaXMgYW4gZXJyb3IgcGFnZSIpOwotICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0
cnVlOworICAgICAgICAgICAgcmVqZWN0UmVhc29ucyB8PSAxIDw8IElzRXJyb3JQYWdlOwogICAg
ICAgICB9CiAgICAgICAgIGlmIChmcmFtZS0+bG9hZGVyKCktPnN1YmZyYW1lTG9hZGVyKCktPmNv
bnRhaW5zUGx1Z2lucygpICYmICFmcmFtZS0+cGFnZSgpLT5zZXR0aW5ncygpLT5wYWdlQ2FjaGVT
dXBwb3J0c1BsdWdpbnMoKSkgewogICAgICAgICAgICAgUENMT0coIiAgIC1GcmFtZSBjb250YWlu
cyBwbHVnaW5zIik7Ci0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgICAg
ICByZWplY3RSZWFzb25zIHw9IDEgPDwgSGFzUGx1Z2luczsKICAgICAgICAgfQogICAgICAgICBp
ZiAoZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnByb3RvY29sSXMoImh0dHBzIikKICAgICAgICAg
ICAgICYmIChmcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkuY2Fj
aGVDb250cm9sQ29udGFpbnNOb0NhY2hlKCkKICAgICAgICAgICAgICAgICB8fCBmcmFtZS0+bG9h
ZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkuY2FjaGVDb250cm9sQ29udGFpbnNO
b1N0b3JlKCkpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLUZyYW1lIGlzIEhUVFBTLCBhbmQg
Y2FjaGUgY29udHJvbCBwcm9oaWJpdHMgY2FjaGluZyBvciBzdG9yaW5nIik7Ci0gICAgICAgICAg
ICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgICAgICByZWplY3RSZWFzb25zIHw9IDEgPDwg
SXNIdHRwc0FuZENhY2hlQ29udHJvbGxlZDsKICAgICAgICAgfQogICAgICAgICBpZiAoZnJhbWUt
PmRvbVdpbmRvdygpICYmIGZyYW1lLT5kb21XaW5kb3coKS0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZl
bnROYW1lcygpLnVubG9hZEV2ZW50KSkgewogICAgICAgICAgICAgUENMT0coIiAgIC1GcmFtZSBo
YXMgYW4gdW5sb2FkIGV2ZW50IGxpc3RlbmVyIik7Ci0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9
IHRydWU7CisgICAgICAgICAgICByZWplY3RSZWFzb25zIHw9IDEgPDwgSGFzVW5sb2FkTGlzdGVu
ZXI7CiAgICAgICAgIH0KICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgICAgICBpZiAoRGF0
YWJhc2VDb250ZXh0OjpoYXNPcGVuRGF0YWJhc2VzKGZyYW1lLT5kb2N1bWVudCgpKSkgewogICAg
ICAgICAgICAgUENMT0coIiAgIC1GcmFtZSBoYXMgb3BlbiBkYXRhYmFzZSBoYW5kbGVzIik7Ci0g
ICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgICAgICByZWplY3RSZWFzb25z
IHw9IDEgPDwgSGFzRGF0YWJhc2VIYW5kbGVzOwogICAgICAgICB9CiAjZW5kaWYKICNpZiBFTkFC
TEUoU0hBUkVEX1dPUktFUlMpCiAgICAgICAgIGlmIChTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojpo
YXNTaGFyZWRXb3JrZXJzKGZyYW1lLT5kb2N1bWVudCgpKSkgewogICAgICAgICAgICAgUENMT0co
IiAgIC1GcmFtZSBoYXMgYXNzb2NpYXRlZCBTaGFyZWRXb3JrZXJzIik7Ci0gICAgICAgICAgICBj
YW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgICAgICByZWplY3RSZWFzb25zIHw9IDEgPDwgSGFz
U2hhcmVkV29ya2VyczsKICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIGlmICghZnJhbWUtPmxv
YWRlcigpLT5oaXN0b3J5KCktPmN1cnJlbnRJdGVtKCkpIHsKICAgICAgICAgICAgIFBDTE9HKCIg
ICAtTm8gY3VycmVudCBoaXN0b3J5IGl0ZW0iKTsKLSAgICAgICAgICAgIGNhbm5vdENhY2hlID0g
dHJ1ZTsKKyAgICAgICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBOb0hpc3RvcnlJdGVtOwog
ICAgICAgICB9CiAgICAgICAgIGlmIChmcmFtZS0+bG9hZGVyKCktPnF1aWNrUmVkaXJlY3RDb21p
bmcoKSkgewogICAgICAgICAgICAgUENMT0coIiAgIC1RdWljayByZWRpcmVjdCBpcyBjb21pbmci
KTsKLSAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgICAgIHJlamVjdFJl
YXNvbnMgfD0gMSA8PCBRdWlja1JlZGlyZWN0Q29taW5nOwogICAgICAgICB9CiAgICAgICAgIGlm
IChmcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPmlzTG9hZGluZ0luQVBJU2Vuc2Uo
KSkgewogICAgICAgICAgICAgUENMT0coIiAgIC1Eb2N1bWVudExvYWRlciBpcyBzdGlsbCBsb2Fk
aW5nIGluIEFQSSBzZW5zZSIpOwotICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAg
ICAgICAgICAgcmVqZWN0UmVhc29ucyB8PSAxIDw8IElzTG9hZGluZ0luQVBJU2Vuc2U7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+aXNT
dG9wcGluZygpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLURvY3VtZW50TG9hZGVyIGlzIGlu
IHRoZSBtaWRkbGUgb2Ygc3RvcHBpbmciKTsKLSAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1
ZTsKKyAgICAgICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBJc1N0b3BwaW5nOwogICAgICAg
ICB9CiAgICAgICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCktPmNhblN1c3BlbmRBY3RpdmVET01P
YmplY3RzKCkpIHsKICAgICAgICAgICAgIFBDTE9HKCIgICAtVGhlIGRvY3VtZW50IGNhbm5vdCBz
dXNwZWN0IGl0cyBhY3RpdmUgRE9NIE9iamVjdHMiKTsKLSAgICAgICAgICAgIGNhbm5vdENhY2hl
ID0gdHJ1ZTsKKyAgICAgICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBDYW5TdXNwZW5kQWN0
aXZlRE9NT2JqZWN0czsKICAgICAgICAgfQogICAgICAgICBpZiAoIWZyYW1lLT5sb2FkZXIoKS0+
ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+Y2FuQ2FjaGVJblBhZ2VD
YWNoZSgpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLVRoZSBEb2N1bWVudExvYWRlciB1c2Vz
IGFuIGFwcGxpY2F0aW9uIGNhY2hlIik7Ci0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7
CisgICAgICAgICAgICByZWplY3RSZWFzb25zIHw9IDEgPDwgRG9jdW1lbnRMb2FkZXJVc2VzQXBw
bGljYXRpb25DYWNoZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIWZyYW1lLT5sb2FkZXIoKS0+
Y2xpZW50KCktPmNhbkNhY2hlUGFnZSgpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLVRoZSBj
bGllbnQgc2F5cyB0aGlzIGZyYW1lIGNhbm5vdCBiZSBjYWNoZWQiKTsKLSAgICAgICAgICAgIGNh
bm5vdENhY2hlID0gdHJ1ZTsgCisgICAgICAgICAgICByZWplY3RSZWFzb25zIHw9IDEgPDwgQ2xp
ZW50RGVuaWVzQ2FjaGluZzsKICAgICAgICAgfQogICAgIH0KLSAgICAKKworICAgIEhpc3RvZ3Jh
bVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1lcmF0aW9uKCJQYWdlQ2FjaGUuRnJhbWVDYWNoZWFibGUi
LCAhcmVqZWN0UmVhc29ucywgMik7CisgICAgaW50IHJlYXNvbkNvdW50ID0gMDsKKyAgICBmb3Ig
KGludCBpID0gMDsgaSA8IE51bWJlck9mUmVhc29uc0ZyYW1lc0Nhbm5vdEJlSW5QYWdlQ2FjaGU7
ICsraSkgeworICAgICAgICBpZiAocmVqZWN0UmVhc29ucyAmICgxIDw8IGkpKSB7CisgICAgICAg
ICAgICArK3JlYXNvbkNvdW50OworICAgICAgICAgICAgSGlzdG9ncmFtU3VwcG9ydDo6aGlzdG9n
cmFtRW51bWVyYXRpb24oIlBhZ2VDYWNoZS5GcmFtZVJlamVjdFJlYXNvbiIsIGksIE51bWJlck9m
UmVhc29uc0ZyYW1lc0Nhbm5vdEJlSW5QYWdlQ2FjaGUpOworICAgICAgICB9CisgICAgfQorICAg
IEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1lcmF0aW9uKCJQYWdlQ2FjaGUuRnJhbWVS
ZWplY3RSZWFzb25Db3VudCIsIHJlYXNvbkNvdW50LCAxICsgTnVtYmVyT2ZSZWFzb25zRnJhbWVz
Q2Fubm90QmVJblBhZ2VDYWNoZSk7CisKICAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IGZyYW1lLT50
cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNp
YmxpbmcoKSkKLSAgICAgICAgaWYgKCFsb2dDYW5DYWNoZUZyYW1lRGVjaXNpb24oY2hpbGQsIGlu
ZGVudExldmVsICsgMSkpCi0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAg
IHJlamVjdFJlYXNvbnMgfD0gbG9nQ2FuQ2FjaGVGcmFtZURlY2lzaW9uKGNoaWxkLCBpbmRlbnRM
ZXZlbCArIDEpOwogICAgIAotICAgIFBDTE9HKGNhbm5vdENhY2hlID8gIiBGcmFtZSBDQU5OT1Qg
YmUgY2FjaGVkIiA6ICIgRnJhbWUgQ0FOIGJlIGNhY2hlZCIpOworICAgIFBDTE9HKHJlamVjdFJl
YXNvbnMgPyAiIEZyYW1lIENBTk5PVCBiZSBjYWNoZWQiIDogIiBGcmFtZSBDQU4gYmUgY2FjaGVk
Iik7CiAgICAgUENMT0coIistLS0iKTsKICAgICAKLSAgICByZXR1cm4gIWNhbm5vdENhY2hlOwor
ICAgIHJldHVybiByZWplY3RSZWFzb25zOwogfQotICAgIAorCisvLyBVc2VkIGluIGhpc3RvZ3Jh
bXMsIHBsZWFzZSBvbmx5IGFkZCBhdCB0aGUgZW5kLCBhbmQgZG8gbm90IHJlbW92ZSBlbGVtZW50
cyAocmVuYW1pbmcgZS5nLiB0byAiRm9vRW51bVVudXNlZDEiIGlzIGZpbmUpLgorLy8gVGhpcyBp
cyBiZWNhdXNlIHN0YXRpc3RpY3MgbWF5IGJlIGdhdGhlcmVkIGZyb20gaGlzdG9ncmFtcyBiZXR3
ZWVuIHZlcnNpb25zIG92ZXIgdGltZSwgYW5kIHJlLXVzaW5nIHZhbHVlcyBjYXVzZXMgY29sbGlz
aW9ucy4KK2VudW0gUmVhc29uUGFnZUNhbm5vdEJlSW5QYWdlQ2FjaGUgeworICAgIEZyYW1lQ2Fu
bm90QmVJblBhZ2VDYWNoZSA9IDAsCisgICAgRGlzYWJsZWRCYWNrRm9yd2FyZExpc3QsCisgICAg
RGlzYWJsZWRQYWdlQ2FjaGUsCisgICAgVXNlc0RldmljZU1vdGlvbiwKKyAgICBVc2VzRGV2aWNl
T3JpZW50YXRpb24sCisgICAgSXNSZWxvYWQsCisgICAgSXNSZWxvYWRGcm9tT3JpZ2luLAorICAg
IElzU2FtZUxvYWQsCisgICAgTnVtYmVyT2ZSZWFzb25zUGFnZXNDYW5ub3RCZUluUGFnZUNhY2hl
LAorfTsKKwogc3RhdGljIHZvaWQgbG9nQ2FuQ2FjaGVQYWdlRGVjaXNpb24oUGFnZSogcGFnZSkK
IHsKICAgICAvLyBPbmx5IGJvdGhlciBsb2dnaW5nIGZvciBtYWluIGZyYW1lcyB0aGF0IGhhdmUg
YWN0dWFsbHkgbG9hZGVkIGFuZCBoYXZlIGNvbnRlbnQuCkBAIC0xNjgsNDEgKzIxNiw2NiBAQCBz
dGF0aWMgdm9pZCBsb2dDYW5DYWNoZVBhZ2VEZWNpc2lvbihQYWdlKiBwYWdlKQogICAgIGludCBp
bmRlbnRMZXZlbCA9IDA7ICAgIAogICAgIFBDTE9HKCItLS0tLS0tLVxuIERldGVybWluaW5nIGlm
IHBhZ2UgY2FuIGJlIGNhY2hlZDoiKTsKICAgICAKLSAgICBib29sIGNhbm5vdENhY2hlID0gIWxv
Z0NhbkNhY2hlRnJhbWVEZWNpc2lvbihwYWdlLT5tYWluRnJhbWUoKSwgMSk7CisgICAgdW5zaWdu
ZWQgcmVqZWN0UmVhc29ucyA9IDA7CisgICAgdW5zaWduZWQgZnJhbWVSZWplY3RSZWFzb25zID0g
bG9nQ2FuQ2FjaGVGcmFtZURlY2lzaW9uKHBhZ2UtPm1haW5GcmFtZSgpLCBpbmRlbnRMZXZlbCsx
KTsKKyAgICBpZiAoZnJhbWVSZWplY3RSZWFzb25zKQorICAgICAgICByZWplY3RSZWFzb25zIHw9
IDEgPDwgRnJhbWVDYW5ub3RCZUluUGFnZUNhY2hlOwogICAgIAogICAgIGlmICghcGFnZS0+YmFj
a0ZvcndhcmQoKS0+aXNBY3RpdmUoKSkgewogICAgICAgICBQQ0xPRygiICAgLVRoZSBiYWNrL2Zv
cndhcmQgbGlzdCBpcyBkaXNhYmxlZCBvciBoYXMgMCBjYXBhY2l0eSIpOwotICAgICAgICBjYW5u
b3RDYWNoZSA9IHRydWU7CisgICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBEaXNhYmxlZEJh
Y2tGb3J3YXJkTGlzdDsKICAgICB9CiAgICAgaWYgKCFwYWdlLT5zZXR0aW5ncygpLT51c2VzUGFn
ZUNhY2hlKCkpIHsKICAgICAgICAgUENMT0coIiAgIC1QYWdlIHNldHRpbmdzIHNheXMgYi9mIGNh
Y2hlIGRpc2FibGVkIik7Ci0gICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgcmVq
ZWN0UmVhc29ucyB8PSAxIDw8IERpc2FibGVkUGFnZUNhY2hlOwogICAgIH0KICNpZiBFTkFCTEUo
REVWSUNFX09SSUVOVEFUSU9OKQogICAgIGlmIChEZXZpY2VNb3Rpb25Db250cm9sbGVyOjppc0Fj
dGl2ZUF0KHBhZ2UpKSB7CiAgICAgICAgIFBDTE9HKCIgICAtUGFnZSBpcyB1c2luZyBEZXZpY2VN
b3Rpb24iKTsKLSAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICByZWplY3RSZWFz
b25zIHw9IDEgPDwgVXNlc0RldmljZU1vdGlvbjsKICAgICB9CiAgICAgaWYgKERldmljZU9yaWVu
dGF0aW9uQ29udHJvbGxlcjo6aXNBY3RpdmVBdChwYWdlKSkgewogICAgICAgICBQQ0xPRygiICAg
LVBhZ2UgaXMgdXNpbmcgRGV2aWNlT3JpZW50YXRpb24iKTsKLSAgICAgICAgY2Fubm90Q2FjaGUg
PSB0cnVlOworICAgICAgICByZWplY3RSZWFzb25zIHw9IDEgPDwgVXNlc0RldmljZU9yaWVudGF0
aW9uOwogICAgIH0KICNlbmRpZgogICAgIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUgPSBwYWdlLT5t
YWluRnJhbWUoKS0+bG9hZGVyKCktPmxvYWRUeXBlKCk7CiAgICAgaWYgKGxvYWRUeXBlID09IEZy
YW1lTG9hZFR5cGVSZWxvYWQpIHsKICAgICAgICAgUENMT0coIiAgIC1Mb2FkIHR5cGUgaXM6IFJl
bG9hZCIpOwotICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgIHJlamVjdFJlYXNv
bnMgfD0gMSA8PCBJc1JlbG9hZDsKICAgICB9CiAgICAgaWYgKGxvYWRUeXBlID09IEZyYW1lTG9h
ZFR5cGVSZWxvYWRGcm9tT3JpZ2luKSB7CiAgICAgICAgIFBDTE9HKCIgICAtTG9hZCB0eXBlIGlz
OiBSZWxvYWQgZnJvbSBvcmlnaW4iKTsKLSAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAg
ICAgICByZWplY3RSZWFzb25zIHw9IDEgPDwgSXNSZWxvYWRGcm9tT3JpZ2luOwogICAgIH0KICAg
ICBpZiAobG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlwZVNhbWUpIHsKICAgICAgICAgUENMT0coIiAg
IC1Mb2FkIHR5cGUgaXM6IFNhbWUiKTsKLSAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAg
ICAgICByZWplY3RSZWFzb25zIHw9IDEgPDwgSXNTYW1lTG9hZDsKICAgICB9CiAgICAgCi0gICAg
UENMT0coY2Fubm90Q2FjaGUgPyAiIFBhZ2UgQ0FOTk9UIGJlIGNhY2hlZFxuLS0tLS0tLS0iIDog
IiBQYWdlIENBTiBiZSBjYWNoZWRcbi0tLS0tLS0tIik7CisgICAgUENMT0cocmVqZWN0UmVhc29u
cyA/ICIgUGFnZSBDQU5OT1QgYmUgY2FjaGVkXG4tLS0tLS0tLSIgOiAiIFBhZ2UgQ0FOIGJlIGNh
Y2hlZFxuLS0tLS0tLS0iKTsKKworICAgIEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1l
cmF0aW9uKCJQYWdlQ2FjaGUuUGFnZUNhY2hlYWJsZSIsICFyZWplY3RSZWFzb25zLCAyKTsKKyAg
ICBpbnQgcmVhc29uQ291bnQgPSAwOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTnVtYmVyT2ZS
ZWFzb25zUGFnZXNDYW5ub3RCZUluUGFnZUNhY2hlOyArK2kpIHsKKyAgICAgICAgaWYgKHJlamVj
dFJlYXNvbnMgJiAoMSA8PCBpKSkgeworICAgICAgICAgICAgKytyZWFzb25Db3VudDsKKyAgICAg
ICAgICAgIEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1lcmF0aW9uKCJQYWdlQ2FjaGUu
UGFnZVJlamVjdFJlYXNvbiIsIGksIE51bWJlck9mUmVhc29uc1BhZ2VzQ2Fubm90QmVJblBhZ2VD
YWNoZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgSGlzdG9ncmFtU3VwcG9ydDo6aGlzdG9ncmFt
RW51bWVyYXRpb24oIlBhZ2VDYWNoZS5QYWdlUmVqZWN0UmVhc29uQ291bnQiLCByZWFzb25Db3Vu
dCwgMSArIE51bWJlck9mUmVhc29uc1BhZ2VzQ2Fubm90QmVJblBhZ2VDYWNoZSk7CisKKyAgICAv
LyBSZXBvcnQgYWxzbyBvbiB0aGUgZnJhbWUgcmVhc29ucyBieSBwYWdlOyB0aGlzIGlzIGRpc3Rp
bmN0IGZyb20gdGhlIHBlciBmcmFtZSBzdGF0aXN0aWNzIHNpbmNlIGl0IGNvYWxlc2NlcyB0aGUK
KyAgICAvLyBjYXVzZXMgZnJvbSBhbGwgc3ViZnJhbWVzIHRvZ2V0aGVyLgorICAgIEhpc3RvZ3Jh
bVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1lcmF0aW9uKCJQYWdlQ2FjaGUuRnJhbWVDYWNoZWFibGVC
eVBhZ2UiLCAhZnJhbWVSZWplY3RSZWFzb25zLCAyKTsKKyAgICBpbnQgZnJhbWVSZWFzb25Db3Vu
dCA9IDA7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gTnVtYmVyT2ZSZWFzb25zRnJhbWVzQ2Fu
bm90QmVJblBhZ2VDYWNoZTsgKytpKSB7CisgICAgICAgIGlmIChmcmFtZVJlamVjdFJlYXNvbnMg
JiAoMSA8PCBpKSkgeworICAgICAgICAgICAgKytmcmFtZVJlYXNvbkNvdW50OworICAgICAgICAg
ICAgSGlzdG9ncmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51bWVyYXRpb24oIlBhZ2VDYWNoZS5GcmFt
ZVJlamVjdFJlYXNvbkJ5UGFnZSIsIGksIE51bWJlck9mUmVhc29uc0ZyYW1lc0Nhbm5vdEJlSW5Q
YWdlQ2FjaGUpOworICAgICAgICB9CisgICAgfQorICAgIEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3Rv
Z3JhbUVudW1lcmF0aW9uKCJQYWdlQ2FjaGUuRnJhbWVSZWplY3RSZWFzb25Db3VudEJ5UGFnZSIs
IGZyYW1lUmVhc29uQ291bnQsIDEgKyBOdW1iZXJPZlJlYXNvbnNGcmFtZXNDYW5ub3RCZUluUGFn
ZUNhY2hlKTsKIH0KIAogI2VuZGlmIApAQCAtMjY1LDcgKzMzOCw3IEBAIGJvb2wgUGFnZUNhY2hl
OjpjYW5DYWNoZShQYWdlKiBwYWdlKQogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIAotI2lmbmRlZiBOREVCVUcKKyNpZiBQTEFURk9STShDSFJPTUlVTSkgfHwgIWRl
ZmluZWQoTkRFQlVHKQogICAgIGxvZ0NhbkNhY2hlUGFnZURlY2lzaW9uKHBhZ2UpOwogI2VuZGlm
CiAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130588</attachid>
            <date>2012-03-07 03:32:09 -0800</date>
            <delta_ts>2012-03-07 08:52:35 -0800</delta_ts>
            <desc>fix date too</desc>
            <filename>bug-80187-20120307063207.patch</filename>
            <type>text/plain</type>
            <size>12604</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5Nzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVlMWE0NGUyODRmZDdl
NzQ3MDYyMTQ0ZmUxMDcxYWE5NmZlOTgwZi4uYTYyNzNjN2IzMWFkNTA3MTU4NmY4NzZhMmYyYzVk
Mzg0Njk0M2Y1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTAzLTA3ICBHYXZp
biBQZXRlcnMgIDxnYXZpbnBAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBIaXN0b2dyYW1z
IGZvciByZXBvcnRpbmcgb24gUGFnZUNhY2hlIHJlamVjdCByZWFzb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDE4NworCisgICAgICAgIEVuaGFu
Y2UgdGhlIFBhZ2VDYWNoZSBkZWJ1ZyBtb2RlIHNvIHRoYXQgaXQgdXNlcyBIaXN0b2dyYW1zIHRv
CisgICAgICAgIHJlcG9ydCBvbiBjYXVzZXMgb2YgZmFpbHVyZS4gIFR1cm4gb24gdGhlIGRlYnVn
IHByaW50aW5nIHBhdGgKKyAgICAgICAgZXZlbiBpbiBub24tZGVidWcgQ2hyb21pdW0gYnVpbGRz
LCBzbyB0aGVzZSBoaXN0b2dyYW1zIHdpbGwKKyAgICAgICAgdXBkYXRlLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGRvZXMgbm90
IGNoYW5nZSBiZWhhdmlvdXIuCisKKyAgICAgICAgKiBoaXN0b3J5L1BhZ2VDYWNoZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmxvZ0NhbkNhY2hlRnJhbWVEZWNp
c2lvbik6CisgICAgICAgIChXZWJDb3JlOjpsb2dDYW5DYWNoZVBhZ2VEZWNpc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlQ2FjaGU6OmNhbkNhY2hlKToKKwogMjAxMi0wMy0wNSAgUm9iIEJ1
aXMgIDxyYnVpc0ByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBVVEYgY2hhcnMgcHJp
bnRlZCBiYWNrIGZyb20gY29va2llIHRocm91Z2ggcGhwIHNob3dzIGFzID8/PwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9QYWdlQ2FjaGUuY3BwCmluZGV4IDI1YTQ4Mzg1ZjJmNDUzOTNlYjBlMGQ3YzljNTJi
NTFiODBmODBhMzIuLjlmMTc3M2NlZmY3ODlkMTBjYzM0NGEzYTFkNzQyMDZiZWRlYWFhM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNs
dWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuaCIKKyNpbmNsdWRlICJIaXN0b2dyYW1TdXBw
b3J0LmgiCiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgpAQCAtNTYsMTIgKzU3LDM2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogc3RhdGljIGNvbnN0IGRvdWJsZSBhdXRvcmVsZWFzZUludGVydmFsID0gMzsKIAotI2lmbmRl
ZiBOREVCVUcKKyNpZiBQTEFURk9STShDSFJPTUlVTSkgfHwgIWRlZmluZWQoTkRFQlVHKQogCiAj
ZGVmaW5lIFBDTE9HKC4uLikgTE9HKFBhZ2VDYWNoZSwgIiUqcyVzIiwgaW5kZW50TGV2ZWwqNCwg
IiIsIG1ha2VTdHJpbmcoX19WQV9BUkdTX18pLnV0ZjgoKS5kYXRhKCkpCiAgICAgCi1zdGF0aWMg
Ym9vbCBsb2dDYW5DYWNoZUZyYW1lRGVjaXNpb24oRnJhbWUqIGZyYW1lLCBpbnQgaW5kZW50TGV2
ZWwpCisvLyBVc2VkIGluIGhpc3RvZ3JhbXMsIHBsZWFzZSBvbmx5IGFkZCBhdCB0aGUgZW5kLCBh
bmQgZG8gbm90IHJlbW92ZSBlbGVtZW50cyAocmVuYW1pbmcgZS5nLiB0byAiRm9vRW51bVVudXNl
ZDEiIGlzIGZpbmUpLgorLy8gVGhpcyBpcyBiZWNhdXNlIHN0YXRpc3RpY3MgbWF5IGJlIGdhdGhl
cmVkIGZyb20gaGlzdG9ncmFtcyBiZXR3ZWVuIHZlcnNpb25zIG92ZXIgdGltZSwgYW5kIHJlLXVz
aW5nIHZhbHVlcyBjYXVzZXMgY29sbGlzaW9ucy4KK2VudW0gUmVhc29uRnJhbWVDYW5ub3RCZUlu
UGFnZUNhY2hlIHsKKyAgICBOb0RvY3VtZW50TG9hZGVyID0gMCwKKyAgICBNYWluRG9jdW1lbnRF
cnJvciwKKyAgICBJc0Vycm9yUGFnZSwKKyAgICBIYXNQbHVnaW5zLAorICAgIElzSHR0cHNBbmRD
YWNoZUNvbnRyb2xsZWQsCisgICAgSGFzVW5sb2FkTGlzdGVuZXIsCisgICAgSGFzRGF0YWJhc2VI
YW5kbGVzLAorICAgIEhhc1NoYXJlZFdvcmtlcnMsCisgICAgTm9IaXN0b3J5SXRlbSwKKyAgICBR
dWlja1JlZGlyZWN0Q29taW5nLAorICAgIElzTG9hZGluZ0luQVBJU2Vuc2UsCisgICAgSXNTdG9w
cGluZywKKyAgICBDYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cywKKyAgICBEb2N1bWVudExvYWRl
clVzZXNBcHBsaWNhdGlvbkNhY2hlLAorICAgIENsaWVudERlbmllc0NhY2hpbmcsCisgICAgTnVt
YmVyT2ZSZWFzb25zRnJhbWVzQ2Fubm90QmVJblBhZ2VDYWNoZSwKK307CisKK3N0YXRpYyB1bnNp
Z25lZCBsb2dDYW5DYWNoZUZyYW1lRGVjaXNpb24oRnJhbWUqIGZyYW1lLCBpbnQgaW5kZW50TGV2
ZWwpCiB7CisjaWZkZWYgTkRFQlVHCisgICAgVU5VU0VEX1BBUkFNKGluZGVudExldmVsKTsKKyNl
bmRpZgogICAgIC8vIE9ubHkgYm90aGVyIGxvZ2dpbmcgZm9yIGZyYW1lcyB0aGF0IGhhdmUgYWN0
dWFsbHkgbG9hZGVkIGFuZCBoYXZlIGNvbnRlbnQuCiAgICAgaWYgKGZyYW1lLT5sb2FkZXIoKS0+
c3RhdGVNYWNoaW5lKCktPmNyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNzUsODcgKzEwMCwxMTAgQEAgc3RhdGljIGJvb2wgbG9nQ2FuQ2Fj
aGVGcmFtZURlY2lzaW9uKEZyYW1lKiBmcmFtZSwgaW50IGluZGVudExldmVsKQogICAgICAgICBQ
Q0xPRygiIERldGVybWluaW5nIGlmIGZyYW1lIGNhbiBiZSBjYWNoZWQgbmF2aWdhdGluZyBmcm9t
ICgiLCBjdXJyZW50VVJMLnN0cmluZygpLCAiKSB0byAoIiwgbmV3VVJMLnN0cmluZygpLCAiKToi
KTsKICAgICBlbHNlCiAgICAgICAgIFBDTE9HKCIgRGV0ZXJtaW5pbmcgaWYgc3ViZnJhbWUgd2l0
aCBVUkwgKCIsIGN1cnJlbnRVUkwuc3RyaW5nKCksICIpIGNhbiBiZSBjYWNoZWQ6Iik7Ci0gICAg
Ci0gICAgYm9vbCBjYW5ub3RDYWNoZSA9IGZhbHNlOworICAgICAKKyAgICB1bnNpZ25lZCByZWpl
Y3RSZWFzb25zID0gMDsKICAgICAKICAgICBpZiAoIWZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRM
b2FkZXIoKSkgewogICAgICAgICBQQ0xPRygiICAgLVRoZXJlIGlzIG5vIERvY3VtZW50TG9hZGVy
IG9iamVjdCIpOwotICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgIHJlamVjdFJl
YXNvbnMgfD0gMSA8PCBOb0RvY3VtZW50TG9hZGVyOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlm
ICghZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5tYWluRG9jdW1lbnRFcnJvcigp
LmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLU1haW4gZG9jdW1lbnQgaGFzIGFu
IGVycm9yIik7Ci0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgICAgICBy
ZWplY3RSZWFzb25zIHw9IDEgPDwgTWFpbkRvY3VtZW50RXJyb3I7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+c3Vic3RpdHV0ZURhdGEo
KS5pc1ZhbGlkKCkgJiYgZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5zdWJzdGl0
dXRlRGF0YSgpLmZhaWxpbmdVUkwoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIFBDTE9HKCIg
ICAtRnJhbWUgaXMgYW4gZXJyb3IgcGFnZSIpOwotICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0
cnVlOworICAgICAgICAgICAgcmVqZWN0UmVhc29ucyB8PSAxIDw8IElzRXJyb3JQYWdlOwogICAg
ICAgICB9CiAgICAgICAgIGlmIChmcmFtZS0+bG9hZGVyKCktPnN1YmZyYW1lTG9hZGVyKCktPmNv
bnRhaW5zUGx1Z2lucygpICYmICFmcmFtZS0+cGFnZSgpLT5zZXR0aW5ncygpLT5wYWdlQ2FjaGVT
dXBwb3J0c1BsdWdpbnMoKSkgewogICAgICAgICAgICAgUENMT0coIiAgIC1GcmFtZSBjb250YWlu
cyBwbHVnaW5zIik7Ci0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgICAg
ICByZWplY3RSZWFzb25zIHw9IDEgPDwgSGFzUGx1Z2luczsKICAgICAgICAgfQogICAgICAgICBp
ZiAoZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnByb3RvY29sSXMoImh0dHBzIikKICAgICAgICAg
ICAgICYmIChmcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkuY2Fj
aGVDb250cm9sQ29udGFpbnNOb0NhY2hlKCkKICAgICAgICAgICAgICAgICB8fCBmcmFtZS0+bG9h
ZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkuY2FjaGVDb250cm9sQ29udGFpbnNO
b1N0b3JlKCkpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLUZyYW1lIGlzIEhUVFBTLCBhbmQg
Y2FjaGUgY29udHJvbCBwcm9oaWJpdHMgY2FjaGluZyBvciBzdG9yaW5nIik7Ci0gICAgICAgICAg
ICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgICAgICByZWplY3RSZWFzb25zIHw9IDEgPDwg
SXNIdHRwc0FuZENhY2hlQ29udHJvbGxlZDsKICAgICAgICAgfQogICAgICAgICBpZiAoZnJhbWUt
PmRvbVdpbmRvdygpICYmIGZyYW1lLT5kb21XaW5kb3coKS0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZl
bnROYW1lcygpLnVubG9hZEV2ZW50KSkgewogICAgICAgICAgICAgUENMT0coIiAgIC1GcmFtZSBo
YXMgYW4gdW5sb2FkIGV2ZW50IGxpc3RlbmVyIik7Ci0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9
IHRydWU7CisgICAgICAgICAgICByZWplY3RSZWFzb25zIHw9IDEgPDwgSGFzVW5sb2FkTGlzdGVu
ZXI7CiAgICAgICAgIH0KICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgICAgICBpZiAoRGF0
YWJhc2VDb250ZXh0OjpoYXNPcGVuRGF0YWJhc2VzKGZyYW1lLT5kb2N1bWVudCgpKSkgewogICAg
ICAgICAgICAgUENMT0coIiAgIC1GcmFtZSBoYXMgb3BlbiBkYXRhYmFzZSBoYW5kbGVzIik7Ci0g
ICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgICAgICByZWplY3RSZWFzb25z
IHw9IDEgPDwgSGFzRGF0YWJhc2VIYW5kbGVzOwogICAgICAgICB9CiAjZW5kaWYKICNpZiBFTkFC
TEUoU0hBUkVEX1dPUktFUlMpCiAgICAgICAgIGlmIChTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojpo
YXNTaGFyZWRXb3JrZXJzKGZyYW1lLT5kb2N1bWVudCgpKSkgewogICAgICAgICAgICAgUENMT0co
IiAgIC1GcmFtZSBoYXMgYXNzb2NpYXRlZCBTaGFyZWRXb3JrZXJzIik7Ci0gICAgICAgICAgICBj
YW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgICAgICByZWplY3RSZWFzb25zIHw9IDEgPDwgSGFz
U2hhcmVkV29ya2VyczsKICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIGlmICghZnJhbWUtPmxv
YWRlcigpLT5oaXN0b3J5KCktPmN1cnJlbnRJdGVtKCkpIHsKICAgICAgICAgICAgIFBDTE9HKCIg
ICAtTm8gY3VycmVudCBoaXN0b3J5IGl0ZW0iKTsKLSAgICAgICAgICAgIGNhbm5vdENhY2hlID0g
dHJ1ZTsKKyAgICAgICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBOb0hpc3RvcnlJdGVtOwog
ICAgICAgICB9CiAgICAgICAgIGlmIChmcmFtZS0+bG9hZGVyKCktPnF1aWNrUmVkaXJlY3RDb21p
bmcoKSkgewogICAgICAgICAgICAgUENMT0coIiAgIC1RdWljayByZWRpcmVjdCBpcyBjb21pbmci
KTsKLSAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgICAgIHJlamVjdFJl
YXNvbnMgfD0gMSA8PCBRdWlja1JlZGlyZWN0Q29taW5nOwogICAgICAgICB9CiAgICAgICAgIGlm
IChmcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPmlzTG9hZGluZ0luQVBJU2Vuc2Uo
KSkgewogICAgICAgICAgICAgUENMT0coIiAgIC1Eb2N1bWVudExvYWRlciBpcyBzdGlsbCBsb2Fk
aW5nIGluIEFQSSBzZW5zZSIpOwotICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAg
ICAgICAgICAgcmVqZWN0UmVhc29ucyB8PSAxIDw8IElzTG9hZGluZ0luQVBJU2Vuc2U7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+aXNT
dG9wcGluZygpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLURvY3VtZW50TG9hZGVyIGlzIGlu
IHRoZSBtaWRkbGUgb2Ygc3RvcHBpbmciKTsKLSAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1
ZTsKKyAgICAgICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBJc1N0b3BwaW5nOwogICAgICAg
ICB9CiAgICAgICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCktPmNhblN1c3BlbmRBY3RpdmVET01P
YmplY3RzKCkpIHsKICAgICAgICAgICAgIFBDTE9HKCIgICAtVGhlIGRvY3VtZW50IGNhbm5vdCBz
dXNwZWN0IGl0cyBhY3RpdmUgRE9NIE9iamVjdHMiKTsKLSAgICAgICAgICAgIGNhbm5vdENhY2hl
ID0gdHJ1ZTsKKyAgICAgICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBDYW5TdXNwZW5kQWN0
aXZlRE9NT2JqZWN0czsKICAgICAgICAgfQogICAgICAgICBpZiAoIWZyYW1lLT5sb2FkZXIoKS0+
ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+Y2FuQ2FjaGVJblBhZ2VD
YWNoZSgpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLVRoZSBEb2N1bWVudExvYWRlciB1c2Vz
IGFuIGFwcGxpY2F0aW9uIGNhY2hlIik7Ci0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7
CisgICAgICAgICAgICByZWplY3RSZWFzb25zIHw9IDEgPDwgRG9jdW1lbnRMb2FkZXJVc2VzQXBw
bGljYXRpb25DYWNoZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIWZyYW1lLT5sb2FkZXIoKS0+
Y2xpZW50KCktPmNhbkNhY2hlUGFnZSgpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLVRoZSBj
bGllbnQgc2F5cyB0aGlzIGZyYW1lIGNhbm5vdCBiZSBjYWNoZWQiKTsKLSAgICAgICAgICAgIGNh
bm5vdENhY2hlID0gdHJ1ZTsgCisgICAgICAgICAgICByZWplY3RSZWFzb25zIHw9IDEgPDwgQ2xp
ZW50RGVuaWVzQ2FjaGluZzsKICAgICAgICAgfQogICAgIH0KLSAgICAKKworICAgIEhpc3RvZ3Jh
bVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1lcmF0aW9uKCJQYWdlQ2FjaGUuRnJhbWVDYWNoZWFibGUi
LCAhcmVqZWN0UmVhc29ucywgMik7CisgICAgaW50IHJlYXNvbkNvdW50ID0gMDsKKyAgICBmb3Ig
KGludCBpID0gMDsgaSA8IE51bWJlck9mUmVhc29uc0ZyYW1lc0Nhbm5vdEJlSW5QYWdlQ2FjaGU7
ICsraSkgeworICAgICAgICBpZiAocmVqZWN0UmVhc29ucyAmICgxIDw8IGkpKSB7CisgICAgICAg
ICAgICArK3JlYXNvbkNvdW50OworICAgICAgICAgICAgSGlzdG9ncmFtU3VwcG9ydDo6aGlzdG9n
cmFtRW51bWVyYXRpb24oIlBhZ2VDYWNoZS5GcmFtZVJlamVjdFJlYXNvbiIsIGksIE51bWJlck9m
UmVhc29uc0ZyYW1lc0Nhbm5vdEJlSW5QYWdlQ2FjaGUpOworICAgICAgICB9CisgICAgfQorICAg
IEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1lcmF0aW9uKCJQYWdlQ2FjaGUuRnJhbWVS
ZWplY3RSZWFzb25Db3VudCIsIHJlYXNvbkNvdW50LCAxICsgTnVtYmVyT2ZSZWFzb25zRnJhbWVz
Q2Fubm90QmVJblBhZ2VDYWNoZSk7CisKICAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IGZyYW1lLT50
cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNp
YmxpbmcoKSkKLSAgICAgICAgaWYgKCFsb2dDYW5DYWNoZUZyYW1lRGVjaXNpb24oY2hpbGQsIGlu
ZGVudExldmVsICsgMSkpCi0gICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAg
IHJlamVjdFJlYXNvbnMgfD0gbG9nQ2FuQ2FjaGVGcmFtZURlY2lzaW9uKGNoaWxkLCBpbmRlbnRM
ZXZlbCArIDEpOwogICAgIAotICAgIFBDTE9HKGNhbm5vdENhY2hlID8gIiBGcmFtZSBDQU5OT1Qg
YmUgY2FjaGVkIiA6ICIgRnJhbWUgQ0FOIGJlIGNhY2hlZCIpOworICAgIFBDTE9HKHJlamVjdFJl
YXNvbnMgPyAiIEZyYW1lIENBTk5PVCBiZSBjYWNoZWQiIDogIiBGcmFtZSBDQU4gYmUgY2FjaGVk
Iik7CiAgICAgUENMT0coIistLS0iKTsKICAgICAKLSAgICByZXR1cm4gIWNhbm5vdENhY2hlOwor
ICAgIHJldHVybiByZWplY3RSZWFzb25zOwogfQotICAgIAorCisvLyBVc2VkIGluIGhpc3RvZ3Jh
bXMsIHBsZWFzZSBvbmx5IGFkZCBhdCB0aGUgZW5kLCBhbmQgZG8gbm90IHJlbW92ZSBlbGVtZW50
cyAocmVuYW1pbmcgZS5nLiB0byAiRm9vRW51bVVudXNlZDEiIGlzIGZpbmUpLgorLy8gVGhpcyBp
cyBiZWNhdXNlIHN0YXRpc3RpY3MgbWF5IGJlIGdhdGhlcmVkIGZyb20gaGlzdG9ncmFtcyBiZXR3
ZWVuIHZlcnNpb25zIG92ZXIgdGltZSwgYW5kIHJlLXVzaW5nIHZhbHVlcyBjYXVzZXMgY29sbGlz
aW9ucy4KK2VudW0gUmVhc29uUGFnZUNhbm5vdEJlSW5QYWdlQ2FjaGUgeworICAgIEZyYW1lQ2Fu
bm90QmVJblBhZ2VDYWNoZSA9IDAsCisgICAgRGlzYWJsZWRCYWNrRm9yd2FyZExpc3QsCisgICAg
RGlzYWJsZWRQYWdlQ2FjaGUsCisgICAgVXNlc0RldmljZU1vdGlvbiwKKyAgICBVc2VzRGV2aWNl
T3JpZW50YXRpb24sCisgICAgSXNSZWxvYWQsCisgICAgSXNSZWxvYWRGcm9tT3JpZ2luLAorICAg
IElzU2FtZUxvYWQsCisgICAgTnVtYmVyT2ZSZWFzb25zUGFnZXNDYW5ub3RCZUluUGFnZUNhY2hl
LAorfTsKKwogc3RhdGljIHZvaWQgbG9nQ2FuQ2FjaGVQYWdlRGVjaXNpb24oUGFnZSogcGFnZSkK
IHsKICAgICAvLyBPbmx5IGJvdGhlciBsb2dnaW5nIGZvciBtYWluIGZyYW1lcyB0aGF0IGhhdmUg
YWN0dWFsbHkgbG9hZGVkIGFuZCBoYXZlIGNvbnRlbnQuCkBAIC0xNjgsNDEgKzIxNiw2NiBAQCBz
dGF0aWMgdm9pZCBsb2dDYW5DYWNoZVBhZ2VEZWNpc2lvbihQYWdlKiBwYWdlKQogICAgIGludCBp
bmRlbnRMZXZlbCA9IDA7ICAgIAogICAgIFBDTE9HKCItLS0tLS0tLVxuIERldGVybWluaW5nIGlm
IHBhZ2UgY2FuIGJlIGNhY2hlZDoiKTsKICAgICAKLSAgICBib29sIGNhbm5vdENhY2hlID0gIWxv
Z0NhbkNhY2hlRnJhbWVEZWNpc2lvbihwYWdlLT5tYWluRnJhbWUoKSwgMSk7CisgICAgdW5zaWdu
ZWQgcmVqZWN0UmVhc29ucyA9IDA7CisgICAgdW5zaWduZWQgZnJhbWVSZWplY3RSZWFzb25zID0g
bG9nQ2FuQ2FjaGVGcmFtZURlY2lzaW9uKHBhZ2UtPm1haW5GcmFtZSgpLCBpbmRlbnRMZXZlbCsx
KTsKKyAgICBpZiAoZnJhbWVSZWplY3RSZWFzb25zKQorICAgICAgICByZWplY3RSZWFzb25zIHw9
IDEgPDwgRnJhbWVDYW5ub3RCZUluUGFnZUNhY2hlOwogICAgIAogICAgIGlmICghcGFnZS0+YmFj
a0ZvcndhcmQoKS0+aXNBY3RpdmUoKSkgewogICAgICAgICBQQ0xPRygiICAgLVRoZSBiYWNrL2Zv
cndhcmQgbGlzdCBpcyBkaXNhYmxlZCBvciBoYXMgMCBjYXBhY2l0eSIpOwotICAgICAgICBjYW5u
b3RDYWNoZSA9IHRydWU7CisgICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBEaXNhYmxlZEJh
Y2tGb3J3YXJkTGlzdDsKICAgICB9CiAgICAgaWYgKCFwYWdlLT5zZXR0aW5ncygpLT51c2VzUGFn
ZUNhY2hlKCkpIHsKICAgICAgICAgUENMT0coIiAgIC1QYWdlIHNldHRpbmdzIHNheXMgYi9mIGNh
Y2hlIGRpc2FibGVkIik7Ci0gICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgcmVq
ZWN0UmVhc29ucyB8PSAxIDw8IERpc2FibGVkUGFnZUNhY2hlOwogICAgIH0KICNpZiBFTkFCTEUo
REVWSUNFX09SSUVOVEFUSU9OKQogICAgIGlmIChEZXZpY2VNb3Rpb25Db250cm9sbGVyOjppc0Fj
dGl2ZUF0KHBhZ2UpKSB7CiAgICAgICAgIFBDTE9HKCIgICAtUGFnZSBpcyB1c2luZyBEZXZpY2VN
b3Rpb24iKTsKLSAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAgICAgICByZWplY3RSZWFz
b25zIHw9IDEgPDwgVXNlc0RldmljZU1vdGlvbjsKICAgICB9CiAgICAgaWYgKERldmljZU9yaWVu
dGF0aW9uQ29udHJvbGxlcjo6aXNBY3RpdmVBdChwYWdlKSkgewogICAgICAgICBQQ0xPRygiICAg
LVBhZ2UgaXMgdXNpbmcgRGV2aWNlT3JpZW50YXRpb24iKTsKLSAgICAgICAgY2Fubm90Q2FjaGUg
PSB0cnVlOworICAgICAgICByZWplY3RSZWFzb25zIHw9IDEgPDwgVXNlc0RldmljZU9yaWVudGF0
aW9uOwogICAgIH0KICNlbmRpZgogICAgIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUgPSBwYWdlLT5t
YWluRnJhbWUoKS0+bG9hZGVyKCktPmxvYWRUeXBlKCk7CiAgICAgaWYgKGxvYWRUeXBlID09IEZy
YW1lTG9hZFR5cGVSZWxvYWQpIHsKICAgICAgICAgUENMT0coIiAgIC1Mb2FkIHR5cGUgaXM6IFJl
bG9hZCIpOwotICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgIHJlamVjdFJlYXNv
bnMgfD0gMSA8PCBJc1JlbG9hZDsKICAgICB9CiAgICAgaWYgKGxvYWRUeXBlID09IEZyYW1lTG9h
ZFR5cGVSZWxvYWRGcm9tT3JpZ2luKSB7CiAgICAgICAgIFBDTE9HKCIgICAtTG9hZCB0eXBlIGlz
OiBSZWxvYWQgZnJvbSBvcmlnaW4iKTsKLSAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAg
ICAgICByZWplY3RSZWFzb25zIHw9IDEgPDwgSXNSZWxvYWRGcm9tT3JpZ2luOwogICAgIH0KICAg
ICBpZiAobG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlwZVNhbWUpIHsKICAgICAgICAgUENMT0coIiAg
IC1Mb2FkIHR5cGUgaXM6IFNhbWUiKTsKLSAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOworICAg
ICAgICByZWplY3RSZWFzb25zIHw9IDEgPDwgSXNTYW1lTG9hZDsKICAgICB9CiAgICAgCi0gICAg
UENMT0coY2Fubm90Q2FjaGUgPyAiIFBhZ2UgQ0FOTk9UIGJlIGNhY2hlZFxuLS0tLS0tLS0iIDog
IiBQYWdlIENBTiBiZSBjYWNoZWRcbi0tLS0tLS0tIik7CisgICAgUENMT0cocmVqZWN0UmVhc29u
cyA/ICIgUGFnZSBDQU5OT1QgYmUgY2FjaGVkXG4tLS0tLS0tLSIgOiAiIFBhZ2UgQ0FOIGJlIGNh
Y2hlZFxuLS0tLS0tLS0iKTsKKworICAgIEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1l
cmF0aW9uKCJQYWdlQ2FjaGUuUGFnZUNhY2hlYWJsZSIsICFyZWplY3RSZWFzb25zLCAyKTsKKyAg
ICBpbnQgcmVhc29uQ291bnQgPSAwOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTnVtYmVyT2ZS
ZWFzb25zUGFnZXNDYW5ub3RCZUluUGFnZUNhY2hlOyArK2kpIHsKKyAgICAgICAgaWYgKHJlamVj
dFJlYXNvbnMgJiAoMSA8PCBpKSkgeworICAgICAgICAgICAgKytyZWFzb25Db3VudDsKKyAgICAg
ICAgICAgIEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1lcmF0aW9uKCJQYWdlQ2FjaGUu
UGFnZVJlamVjdFJlYXNvbiIsIGksIE51bWJlck9mUmVhc29uc1BhZ2VzQ2Fubm90QmVJblBhZ2VD
YWNoZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgSGlzdG9ncmFtU3VwcG9ydDo6aGlzdG9ncmFt
RW51bWVyYXRpb24oIlBhZ2VDYWNoZS5QYWdlUmVqZWN0UmVhc29uQ291bnQiLCByZWFzb25Db3Vu
dCwgMSArIE51bWJlck9mUmVhc29uc1BhZ2VzQ2Fubm90QmVJblBhZ2VDYWNoZSk7CisKKyAgICAv
LyBSZXBvcnQgYWxzbyBvbiB0aGUgZnJhbWUgcmVhc29ucyBieSBwYWdlOyB0aGlzIGlzIGRpc3Rp
bmN0IGZyb20gdGhlIHBlciBmcmFtZSBzdGF0aXN0aWNzIHNpbmNlIGl0IGNvYWxlc2NlcyB0aGUK
KyAgICAvLyBjYXVzZXMgZnJvbSBhbGwgc3ViZnJhbWVzIHRvZ2V0aGVyLgorICAgIEhpc3RvZ3Jh
bVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1lcmF0aW9uKCJQYWdlQ2FjaGUuRnJhbWVDYWNoZWFibGVC
eVBhZ2UiLCAhZnJhbWVSZWplY3RSZWFzb25zLCAyKTsKKyAgICBpbnQgZnJhbWVSZWFzb25Db3Vu
dCA9IDA7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gTnVtYmVyT2ZSZWFzb25zRnJhbWVzQ2Fu
bm90QmVJblBhZ2VDYWNoZTsgKytpKSB7CisgICAgICAgIGlmIChmcmFtZVJlamVjdFJlYXNvbnMg
JiAoMSA8PCBpKSkgeworICAgICAgICAgICAgKytmcmFtZVJlYXNvbkNvdW50OworICAgICAgICAg
ICAgSGlzdG9ncmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51bWVyYXRpb24oIlBhZ2VDYWNoZS5GcmFt
ZVJlamVjdFJlYXNvbkJ5UGFnZSIsIGksIE51bWJlck9mUmVhc29uc0ZyYW1lc0Nhbm5vdEJlSW5Q
YWdlQ2FjaGUpOworICAgICAgICB9CisgICAgfQorICAgIEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3Rv
Z3JhbUVudW1lcmF0aW9uKCJQYWdlQ2FjaGUuRnJhbWVSZWplY3RSZWFzb25Db3VudEJ5UGFnZSIs
IGZyYW1lUmVhc29uQ291bnQsIDEgKyBOdW1iZXJPZlJlYXNvbnNGcmFtZXNDYW5ub3RCZUluUGFn
ZUNhY2hlKTsKIH0KIAogI2VuZGlmIApAQCAtMjY1LDcgKzMzOCw3IEBAIGJvb2wgUGFnZUNhY2hl
OjpjYW5DYWNoZShQYWdlKiBwYWdlKQogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIAotI2lmbmRlZiBOREVCVUcKKyNpZiBQTEFURk9STShDSFJPTUlVTSkgfHwgIWRl
ZmluZWQoTkRFQlVHKQogICAgIGxvZ0NhbkNhY2hlUGFnZURlY2lzaW9uKHBhZ2UpOwogI2VuZGlm
CiAgICAgCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>