<?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>64583</bug_id>
          
          <creation_ts>2011-07-14 22:23:36 -0700</creation_ts>
          <short_desc>WIP: Add CSS property to control printing of backgrounds for individual elements.</short_desc>
          <delta_ts>2011-11-01 18:23:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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="Luke Macpherson">macpherson</reporter>
          <assigned_to name="Luke Macpherson">macpherson</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eoconnor</cc>
    
    <cc>eric</cc>
    
    <cc>gregsimon</cc>
    
    <cc>hyatt</cc>
    
    <cc>ifette</cc>
    
    <cc>macpherson</cc>
    
    <cc>mikelawther</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tabatkins</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>437550</commentid>
    <comment_count>0</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-07-14 22:23:36 -0700</bug_when>
    <thetext>WIP: Add CSS property to control printing of backgrounds for individual elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437552</commentid>
    <comment_count>1</comment_count>
      <attachid>100931</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-07-14 22:26:58 -0700</bug_when>
    <thetext>Created attachment 100931
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437609</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-07-15 00:34:03 -0700</bug_when>
    <thetext>Is this feature on standards track? Please also see &lt;http://www.webkit.org/coding/adding-features.html&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438316</commentid>
    <comment_count>3</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-07-17 16:12:27 -0700</bug_when>
    <thetext>This is just proof-of-concept for me to play with right now, not sure when it will land, or if it will be in this form. Just using this bug to track my changes.

If you&apos;re interested in the CSS WG discussion of background printing, see:
http://lists.w3.org/Archives/Public/www-style/2011Feb/0626.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438345</commentid>
    <comment_count>4</comment_count>
      <attachid>101127</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-07-17 22:53:40 -0700</bug_when>
    <thetext>Created attachment 101127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461578</commentid>
    <comment_count>5</comment_count>
    <who name="Tab Atkins">tabatkins</who>
    <bug_when>2011-09-02 15:26:48 -0700</bug_when>
    <thetext>Further, the CSSWG resolved two weeks ago to pursue a proposal for controlling the printing of backgrounds (and potentially other visual effects): &lt;http://lists.w3.org/Archives/Public/www-style/2011Aug/0645.html&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464514</commentid>
    <comment_count>6</comment_count>
      <attachid>106819</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-09-08 17:13:29 -0700</bug_when>
    <thetext>Created attachment 106819
Done except body background printing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464557</commentid>
    <comment_count>7</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-09-08 18:21:42 -0700</bug_when>
    <thetext>I can&apos;t see why backgrounds set on the body of the document and on iframe bodies are never printed. 
I notice that on Safari right now these backgrounds are never printed, even if the print backgrounds checkbox is ticked on the print dialog.
Does anyone know where the code for suppressing backgrounds in that case is located?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471296</commentid>
    <comment_count>8</comment_count>
      <attachid>108258</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-09-21 17:29:32 -0700</bug_when>
    <thetext>Created attachment 108258
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475262</commentid>
    <comment_count>9</comment_count>
      <attachid>108258</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-28 23:49:42 -0700</bug_when>
    <thetext>Comment on attachment 108258
Patch

This patch isn&apos;t ready for review without either feature guards or information about what standards this implements, how this relates to other browsers, etc.  The implementation seems reasonable.  We don&apos;t commit commented out code.  I&apos;m not sure what else you&apos;d like commented on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475426</commentid>
    <comment_count>10</comment_count>
    <who name="Tab Atkins">tabatkins</who>
    <bug_when>2011-09-29 07:39:03 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 108258 [details])
&gt; This patch isn&apos;t ready for review without either feature guards or information about what standards this implements, how this relates to other browsers, etc.  The implementation seems reasonable.  We don&apos;t commit commented out code.  I&apos;m not sure what else you&apos;d like commented on.

The CSSWG resolved to include this property (undecided on final name) here: &lt;http://lists.w3.org/Archives/Public/www-style/2011Aug/0645.html&gt;.  It will go into the Paged Media spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475873</commentid>
    <comment_count>11</comment_count>
    <who name="Ian Fette">ifette</who>
    <bug_when>2011-09-29 21:37:02 -0700</bug_when>
    <thetext>Eric, can you explain what you feel next steps would be to get this landed? This has caused pain for web developers for years, and is one of the top issues for Google Docs right now (they effectively implement highlighting as a span with a bg color, and lack of this support means that highlighting doesn&apos;t print in their docs). Yes, you can save from within docs to a PDF as a workaround, but this is a giant hack, not a great user experience, and negates a lot of the work being done around paged media to give people more control natively over printing without having to resort to generating a PDF. As Tab mentions, I first brought this up on www-style months ago. After much back and forth discussion not really leading anywhere, the WG finally agreed that it would be good to move forward and get implementation experience, which is what we&apos;re attempting to do here. What do you feel needs to happen to let this patch land? Is it just the commented out code in CSSStyleSelector.cpp or is there something else that holds this up?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475917</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-29 23:00:20 -0700</bug_when>
    <thetext>I think there has been some minor misunderstanding here.

I should have phrased my comment in the positive, instead of the negative.

This patch is very simple and presumably pretty non-controvertial.

There are technical difficulties with this patch.  The idea is probably sound, just needs justification in the ChagneLog.  I will attempt to enumerate the troubles with landing this patch as-is in hopes to give Luke a list of action items to move forward with.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475921</commentid>
    <comment_count>13</comment_count>
      <attachid>108258</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-29 23:08:04 -0700</bug_when>
    <thetext>Comment on attachment 108258
Patch

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

This concept seems fine.  But this patch as-is cannot land without another iteration.  It&apos;s most important that you include tests (or justification why testing is impossible) as well as comments in the ChangeLog explaining the rational for this change.  Those two factors (along with the obvious technical nits) will make a second review simple.

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests. (OOPS!)

This patch cannot be landed with this OOPS (the pre-commit hook will refuse it).  In general all patches require tests.  So this patch will need tests before it can be landed.

The ChangeLog should also make it clear to the reviewer why we&apos;re adding this functionality, who else implements it, what spec it follows, or if there is no spec yet, link to some working-group discussion about how this is a good idea.  Or some justification as to why we&apos;re adding it.  That doesn&apos;t mean to assume that adding it is bad!  Just that having a paper trail for any feature makes it much easier for others to undersatnd the reasoning during review or at a later time.

&gt; Source/WebCore/css/CSSStyleSelector.cpp:993
&gt; +//        documentStyle-&gt;setForceBackgroundsToWhite(document-&gt;body() &amp;&amp; document-&gt;body()-&gt;renderStyle() &amp;&amp; document-&gt;body()-&gt;renderStyle()-&gt;forceBackgroundsToWhite());
&gt; +//        if (document-&gt;printing() &amp;&amp; !settings-&gt;shouldPrintBackgrounds())
&gt; +//            documentStyle-&gt;setForceBackgroundsToWhite(true);

As project policy, we do not commit commented out code.  I assume you just meant to remove this.

&gt; Source/WebCore/css/CSSValueKeywords.in:770
&gt; +economy
&gt; +exact

I believe it&apos;s OK to have these be non-prefixed since the CSS property itself has a -webkit- prefix.

&gt; Source/WebCore/rendering/style/RenderStyle.h:205
&gt; -        bool _force_backgrounds_to_white : 1;
&gt; +        ColorAdjust m_colorAdjust : ColorAdjustBits;

This scares me.  How do we know that we&apos;re not overflowing 64-bits when we adjust the ColorAdjustBits size?  Do we have compile-time size guards for this object (like we do for some other objects?)  If we overflow to the next word, we could end up causing a large memory regression.

&gt; Source/WebCore/rendering/style/RenderStyleConstants.h:39
&gt; +static const size_t ColorAdjustBits = 1;

Is this the new style to have a constant for this bit size?  I agree that it reads nicer, but without compile time object size guards I think we could get ourselves in trouble.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476105</commentid>
    <comment_count>14</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-09-30 08:42:03 -0700</bug_when>
    <thetext>What spec is this from? Can you point me to a draft? If this isn&apos;t even in a draft yet, then I don&apos;t want it in WebKit yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476108</commentid>
    <comment_count>15</comment_count>
      <attachid>108258</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-09-30 08:46:55 -0700</bug_when>
    <thetext>Comment on attachment 108258
Patch

&quot;economy&quot; and &quot;exact&quot; and the property name are all terrible. I don&apos;t know if this is from a spec or who came up with the terminology, but none of these terms mean anything. An author would have no idea what this property is even supposed to do from these terms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476169</commentid>
    <comment_count>16</comment_count>
    <who name="Tab Atkins">tabatkins</who>
    <bug_when>2011-09-30 10:45:20 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; What spec is this from? Can you point me to a draft? If this isn&apos;t even in a draft yet, then I don&apos;t want it in WebKit yet.

As I pointed out in comment #10, the CSSWG resolved to pursue this idea and requests implementation experience.  This patch aligns with the preferred solution hashed out over a lot of painful arguing in the WG.  The names are WIP.

This will go into Paged Media, but Hakon is blocking at the moment.  An implementation, as requested by the WG, will help with this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476174</commentid>
    <comment_count>17</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-09-30 10:51:15 -0700</bug_when>
    <thetext>See thread starting at http://lists.w3.org/Archives/Public/www-style/2011Aug/0436.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480779</commentid>
    <comment_count>18</comment_count>
      <attachid>110316</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-10-09 19:14:11 -0700</bug_when>
    <thetext>Created attachment 110316
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480814</commentid>
    <comment_count>19</comment_count>
      <attachid>110316</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-09 21:12:11 -0700</bug_when>
    <thetext>Comment on attachment 110316
Patch

Attachment 110316 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10007854

New failing tests:
svg/css/getComputedStyle-basic.xhtml
fast/css/getComputedStyle/computed-style.html
fast/css/getComputedStyle/computed-style-without-renderer.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481040</commentid>
    <comment_count>20</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-10-10 11:47:12 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #14)
&gt; &gt; What spec is this from? Can you point me to a draft? If this isn&apos;t even in a draft yet, then I don&apos;t want it in WebKit yet.
&gt; 
&gt; As I pointed out in comment #10, the CSSWG resolved to pursue this idea and requests implementation experience.  This patch aligns with the preferred solution hashed out over a lot of painful arguing in the WG.  The names are WIP.
&gt; 

I strongly disagree with introducing this property into WebKit and largely agree with Hakon. Hint properties just don&apos;t work well.

As sleazy Web sites discover the property, they&apos;ll start setting it on elements to force the backgrounds to print, and then the UI default will just have to shift from &quot;honor the property&quot; to &quot;never honor the property&quot; again. Then users will have to find and toggle some obscure switch in Preferences for the property to even be useful.

&gt; This will go into Paged Media, but Hakon is blocking at the moment.  An implementation, as requested by the WG, will help with this.

What data are you trying to collect? Are you wanting to ship it with Chrome to see what happens? Are you wanting to produce nightlies with it turned on? I guess I&apos;m not clear on how an implementation helps much when there&apos;s a fundamental disagreement regarding property abuse.

One final note: please be careful about making posts with language like &quot;WebKit is interested in...&quot; In this case, you really meant &quot;Google is interested in...&quot; and there&apos;s no reason not to be honest about it. I say &quot;Apple wants...&quot; or &quot;Apple is interested in...&quot; all the time when talking about properties that we&apos;re working on, and don&apos;t try to speak for all of WebKit unless I know there&apos;s consensus.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481154</commentid>
    <comment_count>21</comment_count>
    <who name="Tab Atkins">tabatkins</who>
    <bug_when>2011-10-10 14:17:52 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; As sleazy Web sites discover the property, they&apos;ll start setting it on elements to force the backgrounds to print, and then the UI default will just have to shift from &quot;honor the property&quot; to &quot;never honor the property&quot; again. Then users will have to find and toggle some obscure switch in Preferences for the property to even be useful.

Sleazy web-sites, for some definition of &quot;sleazy&quot;, can already do this.  Google Maps, for example, achieves striped backgrounds on its printed directions by positioning an element behind alternating steps, and setting a large border of the chosen color on it.  Since borders are printed, it looks like a background.  You can get images the same way by using the &lt;img&gt; tag.

This is obviously pretty ridiculous.  Since there are good use-cases for this functionality, it would be cool to expose it.

It&apos;s possible that it will end up becoming just as polluted as &apos;background&apos; already is.  If it does, shrug, we tried, and we&apos;ll never try again.  However, the initial pollution was basically certain, while this is not - it&apos;s got a better chance of succeeding.


&gt; &gt; This will go into Paged Media, but Hakon is blocking at the moment.  An implementation, as requested by the WG, will help with this.
&gt; 
&gt; What data are you trying to collect? Are you wanting to ship it with Chrome to see what happens? Are you wanting to produce nightlies with it turned on? I guess I&apos;m not clear on how an implementation helps much when there&apos;s a fundamental disagreement regarding property abuse.

The data we&apos;re looking for is &quot;how to get Hakon to stop blocking&quot;.  A decent fraction of the WG wants this, and another fraction at least doesn&apos;t hate it.  This was the compromise from a pretty annoying argument - get an impl first, then it&apos;ll go into a spec.


&gt; One final note: please be careful about making posts with language like &quot;WebKit is interested in...&quot; In this case, you really meant &quot;Google is interested in...&quot; and there&apos;s no reason not to be honest about it. I say &quot;Apple wants...&quot; or &quot;Apple is interested in...&quot; all the time when talking about properties that we&apos;re working on, and don&apos;t try to speak for all of WebKit unless I know there&apos;s consensus.

Sorry, force of habit.  I usually consider myself working on Webkit, with the Chrome affiliation a mere formality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481243</commentid>
    <comment_count>22</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-10-10 15:43:38 -0700</bug_when>
    <thetext>I&apos;d just like to take a moment to advocate for the usefulness of this property. There are, like it or not, an exceptional number of places that background is used to convey important information to the user. There are also many places that backgrounds are used in a purely aesthetic way, and are therefore not required to understand the meaning of the page. Both of these are frequently and necessarily used within a single page. For example, even on this page, a green background on style or red background on cr-linux convey important information, while the grey background on add an attachment adds litte information. Simply toggling the backgrounds on and off for the entire page does not sufficiently capture this nuanced use of backgrounds to convey information to the user. Therefore there is a real and important use case for adding a property that encapsulates the knowledge the web author has about which backgrounds convey information, and which are purely aesthetic.

&gt; As sleazy Web sites discover the property, they&apos;ll start setting it on elements to force the backgrounds to print, and then the UI default will just have to shift from &quot;honor the property&quot; to &quot;never honor the property&quot; again. Then users will have to find and toggle some obscure switch in Preferences for the property to even be useful.

I don&apos;t concede this adversarial view of web authors, particularly for web pages where the user has already decided that they find the information useful and require a hard copy. Perhaps naively, I don&apos;t think we should prevent web authors from improving the usefulness and accessibility of their content by allowing offline consumption on the basis that a &quot;sleazy Web site&quot; wants to waste the user&apos;s ink.

I do concede that in order to maintain precisely the same functionality that it has right now, Safari would need to use a tri-state of &quot;print all backgrounds&quot;, &quot;print no backgrounds&quot; and &quot;print only important backgrounds&quot;, however I anticipate that ultimately &quot;print only important backgrounds&quot; will become vastly more likely and useful than the other options - to the point that in Chrome we intend to make it the only option.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481252</commentid>
    <comment_count>23</comment_count>
    <who name="Ian Fette">ifette</who>
    <bug_when>2011-10-10 16:03:30 -0700</bug_when>
    <thetext>For what it&apos;s worth, we&apos;ve been trying to solve this problem in Chrome since before the February email to css-style (http://lists.w3.org/Archives/Public/www-style/2011Feb/0626.html). We&apos;ve done a lot of work in Docs to fix up printing from HTML so that we don&apos;t have to generate a PDF and get people to print the PDF (which is a giant hack). The same problem presents itself in other Google apps. 

People don&apos;t connect &quot;printing background colors and images&quot; with &quot;I have a word in this sentence highlighted and it&apos;s not printing out that way, wtf?!?!&quot;. From our perspective, we can&apos;t expect users to make that connection and figure out they need to check the box. I suspect very few users could even find the box, much less understand what it means. In Chrome, a group of people wanted to solve this by just flipping the pref to &quot;always print background colors and images.&quot; I personally felt this would be a bad solution as we would inevitably get random crap printing that the site author never intended to print (many people either don&apos;t consider what happens when you print, or they assume that all browsers by default don&apos;t print backgrounds.) I argued for getting some better way to let site authors express their intent -- that they have considered printing and that something really ought to be printed. This seemed a better way forward. Yes, malicious / crap sites can still do the &quot;wrong&quot; thing, but they can cause bad print output in tons of other ways simpler than this.

This is the best approach we could come up with to resolve long standing issues around printing, and we would really like to be able to move forward with the approach and see what happens. It solves a very real need that our users and users of many other websites are having, without side effects to rendering of existing content.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481262</commentid>
    <comment_count>24</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-10-10 16:14:07 -0700</bug_when>
    <thetext>How do we distinguish between outputting to a printer (and thus preferring to omit backgrounds), and printing to a PDF, which may never be printed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481264</commentid>
    <comment_count>25</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-10-10 16:19:39 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; How do we distinguish between outputting to a printer (and thus preferring to omit backgrounds), and printing to a PDF, which may never be printed?

You can toggle setShouldPrintBackgrounds on the Settings object if you want to force them on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487747</commentid>
    <comment_count>26</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-10-20 11:51:55 -0700</bug_when>
    <thetext>Thanks for the examples of where you might need this property. I admit that those are compelling use cases.

Those use cases have convinced me that it is ok to proceed with experimentation here, although I would like us to pick a syntax that is a bit less bizarre.

color-adjust: economy | exact

is - in my opinion - needlessly obfuscating the feature. We know this is about saving ink and is print-specific, so can&apos;t we get &quot;printer&quot; or &quot;print&quot; into the property name to make that clear?

Even just printer-color-adjust would be a big improvement.

Are we avoiding using the term &quot;background&quot; explicitly because we might want to avoid printing other things like box-shadow? I don&apos;t think we necessarily have to fear the term &quot;background&quot; and think printer-background-adjust would be even better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487851</commentid>
    <comment_count>27</comment_count>
    <who name="Tab Atkins">tabatkins</who>
    <bug_when>2011-10-20 13:52:18 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; Thanks for the examples of where you might need this property. I admit that those are compelling use cases.
&gt; 
&gt; Those use cases have convinced me that it is ok to proceed with experimentation here, although I would like us to pick a syntax that is a bit less bizarre.

Awesome, thanks Hyatt!


&gt; color-adjust: economy | exact
&gt; 
&gt; is - in my opinion - needlessly obfuscating the feature. We know this is about saving ink and is print-specific, so can&apos;t we get &quot;printer&quot; or &quot;print&quot; into the property name to make that clear?
&gt; 
&gt; Even just printer-color-adjust would be a big improvement.
&gt; 
&gt; Are we avoiding using the term &quot;background&quot; explicitly because we might want to avoid printing other things like box-shadow? I don&apos;t think we necessarily have to fear the term &quot;background&quot; and think printer-background-adjust would be even better.

We actually already know for a *fact* that this will be used for more things than just backgrounds - IE currently suppresses box-shadow on printing, and has indicated that it should toggle with this property as well.  Other properties such as border-image have a strong chance of making their way onto the &quot;blocked unless important&quot; list as well.  So, I don&apos;t think that &apos;background&apos; should appear in the property&apos;s name.

I advocated for a somewhat further generic name on the assumption that platforms other than printing, with their own feature economy that differs from typical screens, may want to use this.  For example, an AMOLED screen.  I wouldn&apos;t be horribly sad if this line of argument got rejected, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488047</commentid>
    <comment_count>28</comment_count>
      <attachid>111884</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-10-20 17:57:03 -0700</bug_when>
    <thetext>Created attachment 111884
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488111</commentid>
    <comment_count>29</comment_count>
      <attachid>111884</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-20 20:20:32 -0700</bug_when>
    <thetext>Comment on attachment 111884
Patch

Attachment 111884 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10182684

New failing tests:
svg/css/getComputedStyle-basic.xhtml
fast/css/getComputedStyle/computed-style.html
fast/css/getComputedStyle/computed-style-without-renderer.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489079</commentid>
    <comment_count>30</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-10-23 16:55:00 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; (From update of attachment 111884 [details])
&gt; Attachment 111884 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/10182684
&gt; 
&gt; New failing tests:
&gt; svg/css/getComputedStyle-basic.xhtml
&gt; fast/css/getComputedStyle/computed-style.html
&gt; fast/css/getComputedStyle/computed-style-without-renderer.html

I think the chromium queue has failed to patch for some reason I don&apos;t understand. I don&apos;t think there is anything wrong with the patch though?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489081</commentid>
    <comment_count>31</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-23 17:10:28 -0700</bug_when>
    <thetext>&gt; I think the chromium queue has failed to patch for some reason I don&apos;t understand. I don&apos;t think there is anything wrong with the patch though?

Have you tried running those tests?  It seems very likely that your patch will cause them to fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489087</commentid>
    <comment_count>32</comment_count>
      <attachid>112131</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-10-23 17:57:57 -0700</bug_when>
    <thetext>Created attachment 112131
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494133</commentid>
    <comment_count>33</comment_count>
      <attachid>112131</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-11-01 14:08:24 -0700</bug_when>
    <thetext>Comment on attachment 112131
Patch

Lacking any further objections from others, this change looks reasonable to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494306</commentid>
    <comment_count>34</comment_count>
      <attachid>113258</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-11-01 16:47:22 -0700</bug_when>
    <thetext>Created attachment 113258
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494387</commentid>
    <comment_count>35</comment_count>
      <attachid>113258</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-01 18:23:26 -0700</bug_when>
    <thetext>Comment on attachment 113258
Patch for landing

Clearing flags on attachment: 113258

Committed r99022: &lt;http://trac.webkit.org/changeset/99022&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494388</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-01 18:23:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100931</attachid>
            <date>2011-07-14 22:26:58 -0700</date>
            <delta_ts>2011-07-17 22:53:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64583-20110715152655.patch</filename>
            <type>text/plain</type>
            <size>6339</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkxMDQ4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMDctMTQgIEx1a2UgTWFj
cGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBXSVA6IEFkZCBD
U1MgcHJvcGVydHkgdG8gY29udHJvbCBwcmludGluZyBvZiBiYWNrZ3JvdW5kcyBmb3IgaW5kaXZp
ZHVhbCBlbGVtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY0NTgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsdWUpOgorICAgICAg
ICAqIGNzcy9DU1NQcm9wZXJ0eU5hbWVzLmluOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVj
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRG9j
dW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0
eSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVk
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkluaGVyaXRlZEZsYWdzOjppbml0aWFsRm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUpOgor
CiAyMDExLTA3LTE0ICBLZW5pY2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICA8aW5wdXQgZm9ybT0ieCI+IHNob3VsZCBub3QgYXNzb2NpYXRlIHRoZSBpbnB1dCB3
aXRoIGFueSBmb3JtcyB3aGVuIHRoZXJlIGlzIG5vICBmb3JtIHdpdGggaWQ9IngiCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cAkocmV2aXNpb24gOTA5ODApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3Miw2ICsxNzcyLDcgQEAgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlYwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TWFza1JlcGVhdFk6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQ
ZXJzcGVjdGl2ZU9yaWdpblg6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVj
dGl2ZU9yaWdpblk6CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQcmludEJhY2tncm91
bmRzOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZToKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblg6CiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZOgpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAJKHJldmlzaW9uIDkwOTgwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NDksNiArMTY0OSwxMCBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBiCiAgICAgICAgIGlmICh2YWx1ZS0+aWQgPT0gQ1NTVmFs
dWVWaXNpYmxlIHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUhpZGRlbikKICAgICAgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFByaW50QmFja2dyb3VuZHM6CisgICAgICAgIGlmICh2YWx1ZS0+aWQgPT0gQ1NTVmFs
dWVWaXNpYmxlIHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUhpZGRlbikKKyAgICAgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFBlcnNwZWN0aXZlOgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lKQogICAg
ICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5TmFtZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NT
U1Byb3BlcnR5TmFtZXMuaW4JKHJldmlzaW9uIDkwOTgwKQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5TmFtZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI5Niw2ICsyOTYsNyBAQCB6
LWluZGV4CiAtd2Via2l0LXBlcnNwZWN0aXZlLW9yaWdpbgogLXdlYmtpdC1wZXJzcGVjdGl2ZS1v
cmlnaW4teAogLXdlYmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW4teQorLXdlYmtpdC1wcmludC1iYWNr
Z3JvdW5kcwogLXdlYmtpdC1ydGwtb3JkZXJpbmcKIC13ZWJraXQtdGV4dC1jb21iaW5lCiAtZXB1
Yi10ZXh0LWNvbWJpbmUgPSAtd2Via2l0LXRleHQtY29tYmluZQpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gOTA5ODApCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNzIsOCAr
MTI3Miw4IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0b3IKICAgICBm
b250RGVzY3JpcHRpb24uc2V0VXNlUHJpbnRlckZvbnQoZG9jdW1lbnQtPnByaW50aW5nKCkpOwog
ICAgIGlmIChTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudC0+c2V0dGluZ3MoKSkgewogICAg
ICAgICBmb250RGVzY3JpcHRpb24uc2V0UmVuZGVyaW5nTW9kZShzZXR0aW5ncy0+Zm9udFJlbmRl
cmluZ01vZGUoKSk7Ci0gICAgICAgIGlmIChkb2N1bWVudC0+cHJpbnRpbmcoKSAmJiAhc2V0dGlu
Z3MtPnNob3VsZFByaW50QmFja2dyb3VuZHMoKSkKLSAgICAgICAgICAgIGRvY3VtZW50U3R5bGUt
PnNldEZvcmNlQmFja2dyb3VuZHNUb1doaXRlKHRydWUpOworLy8gICAgICAgIGlmIChkb2N1bWVu
dC0+cHJpbnRpbmcoKSAmJiAhc2V0dGluZ3MtPnNob3VsZFByaW50QmFja2dyb3VuZHMoKSkKKy8v
ICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS0+c2V0Rm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUodHJ1
ZSk7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc3RkZm9udCA9IHNldHRpbmdzLT5zdGFu
ZGFyZEZvbnRGYW1pbHkoKTsKICAgICAgICAgaWYgKCFzdGRmb250LmlzRW1wdHkoKSkgewogICAg
ICAgICAgICAgZm9udERlc2NyaXB0aW9uLmZpcnN0RmFtaWx5KCkuc2V0RmFtaWx5KHN0ZGZvbnQp
OwpAQCAtNDk4MSw2ICs0OTgxLDE2IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9w
ZXJ0eShpbnQKICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckZpdChCb3JkZXJGaXRMaW5l
cyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBy
aW50QmFja2dyb3VuZHM6IHsKKyAgICAgICAgaWYgKG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+cHJp
bnRpbmcoKSkgeworICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoZm9yY2VC
YWNrZ3JvdW5kc1RvV2hpdGUsIEZvcmNlQmFja2dyb3VuZHNUb1doaXRlKTsKKyAgICAgICAgICAg
IGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUhpZGRlbikKKyAgICAg
ICAgICAgICAgICBtX3N0eWxlLT5zZXRGb3JjZUJhY2tncm91bmRzVG9XaGl0ZSh0cnVlKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRGb3JjZUJhY2tncm91
bmRzVG9XaGl0ZShmYWxzZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFNpemVBZGp1c3Q6IHsKICAgICAgICAgSEFORExF
X0lOSEVSSVRfQU5EX0lOSVRJQUwodGV4dFNpemVBZGp1c3QsIFRleHRTaXplQWRqdXN0KQogICAg
ICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlIHx8ICFwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkg
cmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwCShyZXZpc2lvbiA5MDk4MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwNyw2ICs2
MDcsMTAgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZQogICAgIENv
bG9yIGJnQ29sb3IgPSBjb2xvcjsKICAgICBTdHlsZUltYWdlKiBiZ0ltYWdlID0gYmdMYXllci0+
aW1hZ2UoKTsKICAgICBib29sIHNob3VsZFBhaW50QmFja2dyb3VuZEltYWdlID0gYmdJbWFnZSAm
JiBiZ0ltYWdlLT5jYW5SZW5kZXIoc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKTsKKworICAgIGlm
IChzdHlsZSgpLT5mb3JjZUJhY2tncm91bmRzVG9XaGl0ZSgpKSB7CisgICAgICAgIHByaW50Zigi
cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCB3aXRoIGZvcmNlIGJhY2tncm91bmQgdG8gd2hpdGVcbiIp
OworICAgIH0KICAgICAKICAgICAvLyBXaGVuIHRoaXMgc3R5bGUgZmxhZyBpcyBzZXQsIGNoYW5n
ZSBleGlzdGluZyBiYWNrZ3JvdW5kIGNvbG9ycyBhbmQgaW1hZ2VzIHRvIGEgc29saWQgd2hpdGUg
YmFja2dyb3VuZC4KICAgICAvLyBJZiB0aGVyZSdzIG5vIGJnIGNvbG9yIG9yIGltYWdlLCBsZWF2
ZSBpdCB1bnRvdWNoZWQgdG8gYXZvaWQgYWZmZWN0aW5nIHRyYW5zcGFyZW5jeS4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCShyZXZpc2lvbiA5
MDk4MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzQxLDYgKzEzNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFRl
eHRFbXBoYXNpc1Bvc2l0aW9uIGluaXRpYWxUZXh0RW1waGFzaXNQb3NpdGlvbigpIHsgcmV0dXJu
IFRleHRFbXBoYXNpc1Bvc2l0aW9uT3ZlcjsgfQogICAgIHN0YXRpYyBMaW5lQm94Q29udGFpbiBp
bml0aWFsTGluZUJveENvbnRhaW4oKSB7IHJldHVybiBMaW5lQm94Q29udGFpbkJsb2NrIHwgTGlu
ZUJveENvbnRhaW5JbmxpbmUgfCBMaW5lQm94Q29udGFpblJlcGxhY2VkOyB9CiAgICAgc3RhdGlj
IEVJbWFnZVJlbmRlcmluZyBpbml0aWFsSW1hZ2VSZW5kZXJpbmcoKSB7IHJldHVybiBJbWFnZVJl
bmRlcmluZ0F1dG87IH0KKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsRm9yY2VCYWNrZ3JvdW5kc1Rv
V2hpdGUoKSB7IHJldHVybiBmYWxzZTsgfQogCiAjaWYgRU5BQkxFKENTU19SRUdJT05TKQogICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYWxGbG93VGhyZWFkKCkgeyByZXR1cm4g
bnVsbEF0b207IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101127</attachid>
            <date>2011-07-17 22:53:40 -0700</date>
            <delta_ts>2011-09-08 17:13:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64583-20110718155338.patch</filename>
            <type>text/plain</type>
            <size>5350</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkxMTcxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMDctMTcgIEx1a2UgTWFj
cGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBXSVA6IEFkZCBD
U1MgcHJvcGVydHkgdG8gY29udHJvbCBwcmludGluZyBvZiBiYWNrZ3JvdW5kcyBmb3IgaW5kaXZp
ZHVhbCBlbGVtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY0NTgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsdWUpOgorICAgICAg
ICAqIGNzcy9DU1NQcm9wZXJ0eU5hbWVzLmluOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVj
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRG9j
dW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0
eSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVk
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkluaGVyaXRlZEZsYWdzOjppbml0aWFsRm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUpOgor
CiAyMDExLTA3LTE3ICBMdWtlIE1hY3BoZXJzb24gICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgSW1wbGVtZW50IENTU1Byb3BlcnR5Q3Vyc29yIGluIENTU1N0eWxlQXBwbHlQ
cm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDkxMTcxKQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NzIs
NiArMTc3Miw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWMKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZOgogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YOgogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZOgorICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0UHJpbnRCYWNrZ3JvdW5kOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0
cm9rZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblg6CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZOgpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDkxMTcxKQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NDksNiArMTY0OSwxMCBAQCBi
b29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBiCiAgICAgICAgIGlmICh2YWx1
ZS0+aWQgPT0gQ1NTVmFsdWVWaXNpYmxlIHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUhpZGRlbikK
ICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFByaW50QmFja2dyb3VuZDoKKyAgICAgICAgaWYgKHZhbHVl
LT5pZCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgdmFsdWUtPmlkID09IENTU1ZhbHVlSGlkZGVuKQor
ICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOworICAgICAgICBicmVhazsKICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmU6CiAgICAgICAgIGlmIChpZCA9PSBDU1NW
YWx1ZU5vbmUpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgkocmV2aXNpb24gOTExNzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjk2
LDYgKzI5Niw3IEBAIHotaW5kZXgKIC13ZWJraXQtcGVyc3BlY3RpdmUtb3JpZ2luCiAtd2Via2l0
LXBlcnNwZWN0aXZlLW9yaWdpbi14CiAtd2Via2l0LXBlcnNwZWN0aXZlLW9yaWdpbi15Cistd2Vi
a2l0LXByaW50LWJhY2tncm91bmQKIC13ZWJraXQtcnRsLW9yZGVyaW5nCiAtd2Via2l0LXRleHQt
Y29tYmluZQogLWVwdWItdGV4dC1jb21iaW5lID0gLXdlYmtpdC10ZXh0LWNvbWJpbmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDkxMTcxKQor
KysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjcyLDYgKzEyNzIsNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNl
bGVjdG9yCiAgICAgZm9udERlc2NyaXB0aW9uLnNldFVzZVByaW50ZXJGb250KGRvY3VtZW50LT5w
cmludGluZygpKTsKICAgICBpZiAoU2V0dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQtPnNldHRp
bmdzKCkpIHsKICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFJlbmRlcmluZ01vZGUoc2V0dGlu
Z3MtPmZvbnRSZW5kZXJpbmdNb2RlKCkpOworICAgICAgICBkb2N1bWVudFN0eWxlLT5zZXRGb3Jj
ZUJhY2tncm91bmRzVG9XaGl0ZShkb2N1bWVudC0+Ym9keSgpICYmIGRvY3VtZW50LT5ib2R5KCkt
PnJlbmRlclN0eWxlKCktPmZvcmNlQmFja2dyb3VuZHNUb1doaXRlKCkpOwogICAgICAgICBpZiAo
ZG9jdW1lbnQtPnByaW50aW5nKCkgJiYgIXNldHRpbmdzLT5zaG91bGRQcmludEJhY2tncm91bmRz
KCkpCiAgICAgICAgICAgICBkb2N1bWVudFN0eWxlLT5zZXRGb3JjZUJhY2tncm91bmRzVG9XaGl0
ZSh0cnVlKTsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzdGRmb250ID0gc2V0dGluZ3Mt
PnN0YW5kYXJkRm9udEZhbWlseSgpOwpAQCAtNDkxNCw2ICs0OTE1LDE2IEBAIHZvaWQgQ1NTU3R5
bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJv
cmRlckZpdChCb3JkZXJGaXRMaW5lcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFByaW50QmFja2dyb3VuZDogeworICAgICAgICBpZiAobV9lbGVt
ZW50LT5kb2N1bWVudCgpLT5wcmludGluZygpKSB7CisgICAgICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9BTkRfSU5JVElBTChmb3JjZUJhY2tncm91bmRzVG9XaGl0ZSwgRm9yY2VCYWNrZ3JvdW5kc1Rv
V2hpdGUpOworICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENT
U1ZhbHVlSGlkZGVuKQorICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEZvcmNlQmFja2dyb3Vu
ZHNUb1doaXRlKHRydWUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1fc3R5
bGUtPnNldEZvcmNlQmFja2dyb3VuZHNUb1doaXRlKGZhbHNlKTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm47CisgICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVz
dDogewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0ZXh0U2l6ZUFkanVzdCwg
VGV4dFNpemVBZGp1c3QpCiAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUgfHwgIXByaW1pdGl2
ZVZhbHVlLT5nZXRJZGVudCgpKSByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkocmV2aXNpb24gOTExNzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTM0
MSw2ICsxMzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBUZXh0RW1waGFzaXNQb3NpdGlvbiBp
bml0aWFsVGV4dEVtcGhhc2lzUG9zaXRpb24oKSB7IHJldHVybiBUZXh0RW1waGFzaXNQb3NpdGlv
bk92ZXI7IH0KICAgICBzdGF0aWMgTGluZUJveENvbnRhaW4gaW5pdGlhbExpbmVCb3hDb250YWlu
KCkgeyByZXR1cm4gTGluZUJveENvbnRhaW5CbG9jayB8IExpbmVCb3hDb250YWluSW5saW5lIHwg
TGluZUJveENvbnRhaW5SZXBsYWNlZDsgfQogICAgIHN0YXRpYyBFSW1hZ2VSZW5kZXJpbmcgaW5p
dGlhbEltYWdlUmVuZGVyaW5nKCkgeyByZXR1cm4gSW1hZ2VSZW5kZXJpbmdBdXRvOyB9CisgICAg
c3RhdGljIGJvb2wgaW5pdGlhbEZvcmNlQmFja2dyb3VuZHNUb1doaXRlKCkgeyByZXR1cm4gZmFs
c2U7IH0KIAogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKICAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiBpbml0aWFsRmxvd1RocmVhZCgpIHsgcmV0dXJuIG51bGxBdG9tOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106819</attachid>
            <date>2011-09-08 17:13:29 -0700</date>
            <delta_ts>2011-09-21 17:29:23 -0700</delta_ts>
            <desc>Done except body background printing.</desc>
            <filename>bug-64583-20110909101327.patch</filename>
            <type>text/plain</type>
            <size>14782</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0NzMzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMDktMDYgIEx1a2UgTWFj
cGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBXSVA6IEFkZCBD
U1MgcHJvcGVydHkgdG8gY29udHJvbCBwcmludGluZyBvZiBiYWNrZ3JvdW5kcyBmb3IgaW5kaXZp
ZHVhbCBlbGVtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY0NTgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsdWUpOgorICAgICAg
ICAqIGNzcy9DU1NQcm9wZXJ0eU5hbWVzLmluOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVj
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRG9j
dW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0
eSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVk
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkluaGVyaXRlZEZsYWdzOjppbml0aWFsRm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUpOgor
CiAyMDExLTA5LTA3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByOTQ3MTQgYW5kIHI5NDcyMy4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCShyZXZpc2lvbiA5NDczMykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTY1LDYgKzExNjUsOCBA
QCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjCiAgICAgICAgICAgICBy
ZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlVmFsdWUoc3R5bGUtPmNsZWFyKCkpOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q29sb3I6CiAgICAgICAgICAgICByZXR1cm4gcHJpbWl0
aXZlVmFsdWVDYWNoZS0+Y3JlYXRlQ29sb3JWYWx1ZShtX2FsbG93VmlzaXRlZFN0eWxlID8gc3R5
bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKS5yZ2IoKSA6IHN0eWxl
LT5jb2xvcigpLnJnYigpKTsKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbG9yQWRq
dXN0OgorICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZShzdHlsZS0+Y29sb3JBZGp1c3QoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRDb2x1bW5Db3VudDoKICAgICAgICAgICAgIGlmIChzdHlsZS0+aGFzQXV0b0NvbHVt
bkNvdW50KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1dG8pOwpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5jcHAJKHJldmlzaW9uIDk0NzMzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MDAsNiArMTcwMCwxMCBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBiCiAgICAgICAgIGlmICh2YWx1ZS0+aWQgPT0gQ1NT
VmFsdWVWaXNpYmxlIHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUhpZGRlbikKICAgICAgICAgICAg
IHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdENvbG9yQWRqdXN0OgorICAgICAgICBpZiAodmFsdWUtPmlkID09IENTU1ZhbHVl
RXhhY3QgfHwgdmFsdWUtPmlkID09IENTU1ZhbHVlRWNvbm9teSkKKyAgICAgICAgICAgIHZhbGlk
UHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFBlcnNwZWN0aXZlOgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lKQogICAgICAg
ICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCShyZXZpc2lvbiA5NDczMykKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEzNCw2ICsxMzQsMzUgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6
Om9wZQogICAgIHJldHVybiAwLjBmOwogfQogCisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShDb2xvckFkanVzdCB2YWx1ZSkKKyAgICA6IG1f
dHlwZShDU1NfSURFTlQpCisgICAgLCBtX2hhc0NhY2hlZENTU1RleHQoZmFsc2UpCit7CisgICAg
c3dpdGNoICh2YWx1ZSkgeworICAgIGNhc2UgQ29sb3JBZGp1c3RFeGFjdDoKKyAgICAgICAgbV92
YWx1ZS5pZGVudCA9IENTU1ZhbHVlRXhhY3Q7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29s
b3JBZGp1c3RFY29ub215OgorICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTVmFsdWVFY29ub215
OworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1p
dGl2ZVZhbHVlOjpvcGVyYXRvciBDb2xvckFkanVzdCgpIGNvbnN0Cit7CisgICAgc3dpdGNoICht
X3ZhbHVlLmlkZW50KSB7CisgICAgY2FzZSBDU1NWYWx1ZUVjb25vbXk6CisgICAgICAgIHJldHVy
biBDb2xvckFkanVzdEVjb25vbXk7CisgICAgY2FzZSBDU1NWYWx1ZUV4YWN0OgorICAgICAgICBy
ZXR1cm4gQ29sb3JBZGp1c3RFeGFjdDsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIENvbG9yQWRqdXN0RWNvbm9teTsKKyAgICB9Cit9
CisKKwogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZh
bHVlKEVCb3JkZXJTdHlsZSBlKQogICAgIDogbV90eXBlKENTU19JREVOVCkKICAgICAsIG1faGFz
Q2FjaGVkQ1NTVGV4dChmYWxzZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0
eU5hbWVzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5h
bWVzLmluCShyZXZpc2lvbiA5NDczMykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0
eU5hbWVzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMsNiArMjMzLDcgQEAgei1pbmRleAogLXdl
YmtpdC1ib3gtcGFjawogLXdlYmtpdC1ib3gtcmVmbGVjdAogLXdlYmtpdC1ib3gtc2hhZG93Cist
d2Via2l0LWNvbG9yLWFkanVzdAogLXdlYmtpdC1jb2xvci1jb3JyZWN0aW9uCiAtd2Via2l0LWNv
bHVtbi1icmVhay1hZnRlcgogLXdlYmtpdC1jb2x1bW4tYnJlYWstYmVmb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA5NDczMykKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTA4Miw4ICsxMDgyLDkgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rv
cgogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRVc2VQcmludGVyRm9udChkb2N1bWVudC0+cHJpbnRp
bmcoKSk7CiAgICAgaWYgKFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50LT5zZXR0aW5ncygp
KSB7CiAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRSZW5kZXJpbmdNb2RlKHNldHRpbmdzLT5m
b250UmVuZGVyaW5nTW9kZSgpKTsKLSAgICAgICAgaWYgKGRvY3VtZW50LT5wcmludGluZygpICYm
ICFzZXR0aW5ncy0+c2hvdWxkUHJpbnRCYWNrZ3JvdW5kcygpKQotICAgICAgICAgICAgZG9jdW1l
bnRTdHlsZS0+c2V0Rm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUodHJ1ZSk7CisvLyAgICAgICAgZG9j
dW1lbnRTdHlsZS0+c2V0Rm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUoZG9jdW1lbnQtPmJvZHkoKSAm
JiBkb2N1bWVudC0+Ym9keSgpLT5yZW5kZXJTdHlsZSgpICYmIGRvY3VtZW50LT5ib2R5KCktPnJl
bmRlclN0eWxlKCktPmZvcmNlQmFja2dyb3VuZHNUb1doaXRlKCkpOworLy8gICAgICAgIGlmIChk
b2N1bWVudC0+cHJpbnRpbmcoKSAmJiAhc2V0dGluZ3MtPnNob3VsZFByaW50QmFja2dyb3VuZHMo
KSkKKy8vICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS0+c2V0Rm9yY2VCYWNrZ3JvdW5kc1RvV2hp
dGUodHJ1ZSk7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc3RkZm9udCA9IHNldHRpbmdz
LT5zdGFuZGFyZEZvbnRGYW1pbHkoKTsKICAgICAgICAgaWYgKCFzdGRmb250LmlzRW1wdHkoKSkg
ewogICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2Ny
aXB0aW9uOjpTdGFuZGFyZEZhbWlseSk7CkBAIC0zMzUwLDYgKzMzNTEsOSBAQCB2b2lkIENTU1N0
eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJveFNp
emluZzoKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShi
b3hTaXppbmcsIEJveFNpemluZyk7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Q29sb3JBZGp1c3Q6CisgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFM
X0FORF9QUklNSVRJVkUoY29sb3JBZGp1c3QsIENvbG9yQWRqdXN0KTsKKyAgICAgICAgcmV0dXJu
OwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5TcGFuOiB7CiAgICAgICAgIEhBTkRM
RV9JTkhFUklUX0FORF9JTklUSUFMKGNvbHVtblNwYW4sIENvbHVtblNwYW4pCiAgICAgICAgIG1f
c3R5bGUtPnNldENvbHVtblNwYW4ocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFs
dWVBbGwpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4JKHJldmlz
aW9uIDk0NzMzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTc2Niw2ICs3NjYsMTAgQEAgb3B0aW1pemVMZWdpYmlsaXR5CiBnZW9t
ZXRyaWNQcmVjaXNpb24KIAogLy8gLXdlYmtpdC1jb2xvci1jb3JyZWN0aW9uCitlY29ub215Citl
eGFjdAorCisvLyAtd2Via2l0LWNvbG9yLWNvcnJlY3Rpb24KIC8vZGVmYXVsdAogc1JHQgogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCShyZXZpc2lv
biA5NDczMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIlJlbmRlclJ1YnlSdW4u
aCIKICNpbmNsdWRlICJSZW5kZXJSdWJ5VGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgi
CisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTVkdUZXh0UnVuUmVuZGVyaW5nQ29u
dGV4dC5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJicmVha19saW5lcy5oIgpAQCAt
NTc1LDIwICs1NzYsMjggQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBh
aQogICAgIH0gZWxzZSB7CiAgICAgICAgIHRleHRGaWxsQ29sb3IgPSBzdHlsZVRvVXNlLT52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yKTsKICAgICAg
ICAgCisgICAgICAgIGJvb2wgZm9yY2VCYWNrZ3JvdW5kVG9XaGl0ZSA9IGZhbHNlOworICAgICAg
ICBpZiAoaXNQcmludGluZykgeworICAgICAgICAgICAgaWYgKHN0eWxlVG9Vc2UtPmNvbG9yQWRq
dXN0KCkgPT0gQ29sb3JBZGp1c3RFY29ub215KQorICAgICAgICAgICAgICAgIGZvcmNlQmFja2dy
b3VuZFRvV2hpdGUgPSB0cnVlOworICAgICAgICAgICAgaWYgKHRleHRSZW5kZXJlcigpLT5kb2N1
bWVudCgpLT5zZXR0aW5ncygpICYmIHRleHRSZW5kZXJlcigpLT5kb2N1bWVudCgpLT5zZXR0aW5n
cygpLT5zaG91bGRQcmludEJhY2tncm91bmRzKCkpCisgICAgICAgICAgICAgICAgZm9yY2VCYWNr
Z3JvdW5kVG9XaGl0ZSA9IGZhbHNlOworICAgICAgICB9CisKICAgICAgICAgLy8gTWFrZSB0aGUg
dGV4dCBmaWxsIGNvbG9yIGxlZ2libGUgYWdhaW5zdCBhIHdoaXRlIGJhY2tncm91bmQKLSAgICAg
ICAgaWYgKHN0eWxlVG9Vc2UtPmZvcmNlQmFja2dyb3VuZHNUb1doaXRlKCkpCisgICAgICAgIGlm
IChmb3JjZUJhY2tncm91bmRUb1doaXRlKQogICAgICAgICAgICAgdGV4dEZpbGxDb2xvciA9IGNv
cnJlY3RlZFRleHRDb2xvcih0ZXh0RmlsbENvbG9yLCBDb2xvcjo6d2hpdGUpOwogCiAgICAgICAg
IHRleHRTdHJva2VDb2xvciA9IHN0eWxlVG9Vc2UtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvcik7CiAgICAgICAgIAogICAgICAgICAvLyBNYWtl
IHRoZSB0ZXh0IHN0cm9rZSBjb2xvciBsZWdpYmxlIGFnYWluc3QgYSB3aGl0ZSBiYWNrZ3JvdW5k
Ci0gICAgICAgIGlmIChzdHlsZVRvVXNlLT5mb3JjZUJhY2tncm91bmRzVG9XaGl0ZSgpKQorICAg
ICAgICBpZiAoZm9yY2VCYWNrZ3JvdW5kVG9XaGl0ZSkKICAgICAgICAgICAgIHRleHRTdHJva2VD
b2xvciA9IGNvcnJlY3RlZFRleHRDb2xvcih0ZXh0U3Ryb2tlQ29sb3IsIENvbG9yOjp3aGl0ZSk7
CiAKICAgICAgICAgZW1waGFzaXNNYXJrQ29sb3IgPSBzdHlsZVRvVXNlLT52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvcik7CiAgICAgICAgIAog
ICAgICAgICAvLyBNYWtlIHRoZSB0ZXh0IHN0cm9rZSBjb2xvciBsZWdpYmxlIGFnYWluc3QgYSB3
aGl0ZSBiYWNrZ3JvdW5kCi0gICAgICAgIGlmIChzdHlsZVRvVXNlLT5mb3JjZUJhY2tncm91bmRz
VG9XaGl0ZSgpKQorICAgICAgICBpZiAoZm9yY2VCYWNrZ3JvdW5kVG9XaGl0ZSkKICAgICAgICAg
ICAgIGVtcGhhc2lzTWFya0NvbG9yID0gY29ycmVjdGVkVGV4dENvbG9yKGVtcGhhc2lzTWFya0Nv
bG9yLCBDb2xvcjo6d2hpdGUpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCShyZXZpc2lvbiA5NDczMykKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKICNp
bmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKyNpbmNsdWRl
ICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiB1c2luZyBuYW1l
c3BhY2Ugc3RkOwpAQCAtNjEzLDE0ICs2MTQsMjIgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnRGaWxsTGF5ZQogICAgIENvbG9yIGJnQ29sb3IgPSBjb2xvcjsKICAgICBTdHlsZUlt
YWdlKiBiZ0ltYWdlID0gYmdMYXllci0+aW1hZ2UoKTsKICAgICBib29sIHNob3VsZFBhaW50QmFj
a2dyb3VuZEltYWdlID0gYmdJbWFnZSAmJiBiZ0ltYWdlLT5jYW5SZW5kZXIoc3R5bGUoKS0+ZWZm
ZWN0aXZlWm9vbSgpKTsKLSAgICAKLSAgICAvLyBXaGVuIHRoaXMgc3R5bGUgZmxhZyBpcyBzZXQs
IGNoYW5nZSBleGlzdGluZyBiYWNrZ3JvdW5kIGNvbG9ycyBhbmQgaW1hZ2VzIHRvIGEgc29saWQg
d2hpdGUgYmFja2dyb3VuZC4KKyAgICBib29sIGZvcmNlQmFja2dyb3VuZFRvV2hpdGUgPSBmYWxz
ZTsKKyAgICBpZiAoZG9jdW1lbnQoKS0+cHJpbnRpbmcoKSkgeworICAgICAgICBpZiAoc3R5bGUo
KS0+Y29sb3JBZGp1c3QoKSA9PSBDb2xvckFkanVzdEVjb25vbXkpCisgICAgICAgICAgICBmb3Jj
ZUJhY2tncm91bmRUb1doaXRlID0gdHJ1ZTsKKyAgICAgICAgaWYgKGRvY3VtZW50KCktPnNldHRp
bmdzKCkgJiYgZG9jdW1lbnQoKS0+c2V0dGluZ3MoKS0+c2hvdWxkUHJpbnRCYWNrZ3JvdW5kcygp
KQorICAgICAgICAgICAgZm9yY2VCYWNrZ3JvdW5kVG9XaGl0ZSA9IGZhbHNlOworICAgIH0KKwor
ICAgIC8vIFdoZW4gcHJpbnRpbmcgYmFja2dyb3VuZHMgaXMgZGlzYWJsZWQgb3IgdXNpbmcgZWNv
bm9teSBtb2RlLAorICAgIC8vIGNoYW5nZSBleGlzdGluZyBiYWNrZ3JvdW5kIGNvbG9ycyBhbmQg
aW1hZ2VzIHRvIGEgc29saWQgd2hpdGUgYmFja2dyb3VuZC4KICAgICAvLyBJZiB0aGVyZSdzIG5v
IGJnIGNvbG9yIG9yIGltYWdlLCBsZWF2ZSBpdCB1bnRvdWNoZWQgdG8gYXZvaWQgYWZmZWN0aW5n
IHRyYW5zcGFyZW5jeS4KICAgICAvLyBXZSBkb24ndCB0cnkgdG8gYXZvaWQgbG9hZGluZyB0aGUg
YmFja2dyb3VuZCBpbWFnZXMsIGJlY2F1c2UgdGhpcyBzdHlsZSBmbGFnIGlzIG9ubHkgc2V0CiAg
ICAgLy8gd2hlbiBwcmludGluZywgYW5kIGF0IHRoYXQgcG9pbnQgd2UndmUgYWxyZWFkeSBsb2Fk
ZWQgdGhlIGJhY2tncm91bmQgaW1hZ2VzIGFueXdheS4gKFRvIGF2b2lkCiAgICAgLy8gbG9hZGlu
ZyB0aGUgYmFja2dyb3VuZCBpbWFnZXMgd2UnZCBoYXZlIHRvIGRvIHRoaXMgY2hlY2sgd2hlbiBh
cHBseWluZyBzdHlsZXMgcmF0aGVyIHRoYW4KICAgICAvLyB3aGlsZSByZW5kZXJpbmcuKQotICAg
IGlmIChzdHlsZSgpLT5mb3JjZUJhY2tncm91bmRzVG9XaGl0ZSgpKSB7CisgICAgaWYgKGZvcmNl
QmFja2dyb3VuZFRvV2hpdGUpIHsKICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGNhbid0IHJldXNl
IHRoaXMgdmFyaWFibGUgYmVsb3cgYmVjYXVzZSB0aGUgYmdDb2xvciBtaWdodCBiZSBjaGFuZ2Vk
CiAgICAgICAgIGJvb2wgc2hvdWxkUGFpbnRCYWNrZ3JvdW5kQ29sb3IgPSAhYmdMYXllci0+bmV4
dCgpICYmIGJnQ29sb3IuaXNWYWxpZCgpICYmIGJnQ29sb3IuYWxwaGEoKSA+IDA7CiAgICAgICAg
IGlmIChzaG91bGRQYWludEJhY2tncm91bmRJbWFnZSB8fCBzaG91bGRQYWludEJhY2tncm91bmRD
b2xvcikgewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwCShyZXZpc2lvbiA5NDczMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2MSw3ICs1NjEsNyBAQCBT
dHlsZURpZmZlcmVuY2UgUmVuZGVyU3R5bGU6OmRpZmYoY29uc3QgCiAgICAgaWYgKGluaGVyaXRl
ZC0+Y29sb3IgIT0gb3RoZXItPmluaGVyaXRlZC0+Y29sb3IKICAgICAgICAgfHwgaW5oZXJpdGVk
X2ZsYWdzLl92aXNpYmlsaXR5ICE9IG90aGVyLT5pbmhlcml0ZWRfZmxhZ3MuX3Zpc2liaWxpdHkK
ICAgICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2RlY29yYXRpb25zICE9IG90aGVyLT5p
bmhlcml0ZWRfZmxhZ3MuX3RleHRfZGVjb3JhdGlvbnMKLSAgICAgICAgfHwgaW5oZXJpdGVkX2Zs
YWdzLl9mb3JjZV9iYWNrZ3JvdW5kc190b193aGl0ZSAhPSBvdGhlci0+aW5oZXJpdGVkX2ZsYWdz
Ll9mb3JjZV9iYWNrZ3JvdW5kc190b193aGl0ZQorICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3Mu
bV9jb2xvckFkanVzdCAhPSBvdGhlci0+aW5oZXJpdGVkX2ZsYWdzLm1fY29sb3JBZGp1c3QKICAg
ICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl9pbnNpZGVMaW5rICE9IG90aGVyLT5pbmhlcml0ZWRf
ZmxhZ3MuX2luc2lkZUxpbmsKICAgICAgICAgfHwgc3Vycm91bmQtPmJvcmRlciAhPSBvdGhlci0+
c3Vycm91bmQtPmJvcmRlcgogICAgICAgICB8fCAqbV9iYWNrZ3JvdW5kLmdldCgpICE9ICpvdGhl
ci0+bV9iYWNrZ3JvdW5kLmdldCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaAkocmV2aXNpb24gOTQ3MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDcgKzE3
Nyw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgICAgICAmJiAoX3doaXRlX3NwYWNlID09IG90
aGVyLl93aGl0ZV9zcGFjZSkKICAgICAgICAgICAgICAgICAmJiAoX2JveF9kaXJlY3Rpb24gPT0g
b3RoZXIuX2JveF9kaXJlY3Rpb24pCiAgICAgICAgICAgICAgICAgJiYgKG1fcnRsT3JkZXJpbmcg
PT0gb3RoZXIubV9ydGxPcmRlcmluZykKLSAgICAgICAgICAgICAgICAmJiAoX2ZvcmNlX2JhY2tn
cm91bmRzX3RvX3doaXRlID09IG90aGVyLl9mb3JjZV9iYWNrZ3JvdW5kc190b193aGl0ZSkKKyAg
ICAgICAgICAgICAgICAmJiAobV9jb2xvckFkanVzdCA9PSBvdGhlci5tX2NvbG9yQWRqdXN0KQog
ICAgICAgICAgICAgICAgICYmIChfcG9pbnRlckV2ZW50cyA9PSBvdGhlci5fcG9pbnRlckV2ZW50
cykKICAgICAgICAgICAgICAgICAmJiAoX2luc2lkZUxpbmsgPT0gb3RoZXIuX2luc2lkZUxpbmsp
CiAgICAgICAgICAgICAgICAgJiYgKG1fd3JpdGluZ01vZGUgPT0gb3RoZXIubV93cml0aW5nTW9k
ZSk7CkBAIC0yMDIsNyArMjAyLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAKICAgICAgICAgLy8g
bm9uIENTUzIgaW5oZXJpdGVkCiAgICAgICAgIHVuc2lnbmVkIG1fcnRsT3JkZXJpbmcgOiAxOyAv
LyBPcmRlcgotICAgICAgICBib29sIF9mb3JjZV9iYWNrZ3JvdW5kc190b193aGl0ZSA6IDE7Cisg
ICAgICAgIENvbG9yQWRqdXN0IG1fY29sb3JBZGp1c3QgOiBDb2xvckFkanVzdEJpdHM7CiAgICAg
ICAgIHVuc2lnbmVkIF9wb2ludGVyRXZlbnRzIDogNDsgLy8gRVBvaW50ZXJFdmVudHMKICAgICAg
ICAgdW5zaWduZWQgX2luc2lkZUxpbmsgOiAyOyAvLyBFSW5zaWRlTGluawogICAgICAgICAvLyA0
MyBiaXRzCkBAIC0yODIsNyArMjgyLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBpbmhlcml0ZWRf
ZmxhZ3MuX3doaXRlX3NwYWNlID0gaW5pdGlhbFdoaXRlU3BhY2UoKTsKICAgICAgICAgaW5oZXJp
dGVkX2ZsYWdzLm1fcnRsT3JkZXJpbmcgPSBpbml0aWFsUlRMT3JkZXJpbmcoKTsKICAgICAgICAg
aW5oZXJpdGVkX2ZsYWdzLl9ib3hfZGlyZWN0aW9uID0gaW5pdGlhbEJveERpcmVjdGlvbigpOwot
ICAgICAgICBpbmhlcml0ZWRfZmxhZ3MuX2ZvcmNlX2JhY2tncm91bmRzX3RvX3doaXRlID0gZmFs
c2U7CisgICAgICAgIGluaGVyaXRlZF9mbGFncy5tX2NvbG9yQWRqdXN0ID0gaW5pdGlhbENvbG9y
QWRqdXN0KCk7CiAgICAgICAgIGluaGVyaXRlZF9mbGFncy5fcG9pbnRlckV2ZW50cyA9IGluaXRp
YWxQb2ludGVyRXZlbnRzKCk7CiAgICAgICAgIGluaGVyaXRlZF9mbGFncy5faW5zaWRlTGluayA9
IE5vdEluc2lkZUxpbms7CiAgICAgICAgIGluaGVyaXRlZF9mbGFncy5tX3dyaXRpbmdNb2RlID0g
aW5pdGlhbFdyaXRpbmdNb2RlKCk7CkBAIC0xMDI5LDggKzEwMjksOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRJbnNpZGVMaW5rKEVJbnNpZGVMaW5rIGluc2lkZUxpbmspIHsgaW5oZXJpdGVkX2Zs
YWdzLl9pbnNpZGVMaW5rID0gaW5zaWRlTGluazsgfQogICAgIHZvaWQgc2V0SXNMaW5rKGJvb2wg
YikgeyBub25pbmhlcml0ZWRfZmxhZ3MuX2lzTGluayA9IGI7IH0KIAotICAgIGJvb2wgZm9yY2VC
YWNrZ3JvdW5kc1RvV2hpdGUoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWRfZmxhZ3MuX2ZvcmNl
X2JhY2tncm91bmRzX3RvX3doaXRlOyB9Ci0gICAgdm9pZCBzZXRGb3JjZUJhY2tncm91bmRzVG9X
aGl0ZShib29sIGI9dHJ1ZSkgeyBpbmhlcml0ZWRfZmxhZ3MuX2ZvcmNlX2JhY2tncm91bmRzX3Rv
X3doaXRlID0gYjsgfQorICAgIENvbG9yQWRqdXN0IGNvbG9yQWRqdXN0KCkgY29uc3QgeyByZXR1
cm4gaW5oZXJpdGVkX2ZsYWdzLm1fY29sb3JBZGp1c3Q7IH0KKyAgICB2b2lkIHNldENvbG9yQWRq
dXN0KENvbG9yQWRqdXN0IHZhbHVlKSB7IGluaGVyaXRlZF9mbGFncy5tX2NvbG9yQWRqdXN0ID0g
dmFsdWU7IH0KIAogICAgIGJvb2wgaGFzQXV0b1pJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94
LT5oYXNBdXRvWkluZGV4KCk7IH0KICAgICB2b2lkIHNldEhhc0F1dG9aSW5kZXgoKSB7IFNFVF9W
QVIobV9ib3gsIG1faGFzQXV0b1pJbmRleCwgdHJ1ZSk7IFNFVF9WQVIobV9ib3gsIG1fekluZGV4
LCAwKSB9CkBAIC0xNDA4LDYgKzE0MDgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEVJbWFnZVJl
bmRlcmluZyBpbml0aWFsSW1hZ2VSZW5kZXJpbmcoKSB7IHJldHVybiBJbWFnZVJlbmRlcmluZ0F1
dG87IH0KICAgICBzdGF0aWMgU3R5bGVJbWFnZSogaW5pdGlhbEJvcmRlckltYWdlU291cmNlKCkg
eyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBTdHlsZUltYWdlKiBpbml0aWFsTWFza0JveEltYWdl
U291cmNlKCkgeyByZXR1cm4gMDsgfQorICAgIHN0YXRpYyBDb2xvckFkanVzdCBpbml0aWFsQ29s
b3JBZGp1c3QoKSB7IHJldHVybiBDb2xvckFkanVzdEVjb25vbXk7IH0KIAogICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIGluaXRpYWxGbG93VGhyZWFkKCkgeyByZXR1cm4gbnVsbEF0b207
IH0KICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWFsUmVnaW9uVGhyZWFkKCkg
eyByZXR1cm4gbnVsbEF0b207IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCShyZXZpc2lvbiA5NDczMykKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgKiBp
biBDU1NWYWx1ZUtleXdvcmRzLmluLCBvdGhlcndpc2Ugc29tZSBvcHRpbWl6YXRpb25zIGluIHRo
ZSBwYXJzZXIgd2lsbCBmYWlsLAogICogYW5kIHByb2R1Y2UgaW52YWxpZCByZXN1bHRzLgogICov
CitzdGF0aWMgY29uc3Qgc2l6ZV90IENvbG9yQWRqdXN0Qml0cyA9IDE7CitlbnVtIENvbG9yQWRq
dXN0IHsKKyAgICBDb2xvckFkanVzdEVjb25vbXksCisgICAgQ29sb3JBZGp1c3RFeGFjdAorfTsK
IAogLy8gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gc3R5bGVzLiAgVGhlIGZvbGxvd2luZyB2
YWx1ZXMgYXJlIHVzZWQ6CiAvLyAoMSkgU3R5bGVEaWZmZXJlbmNlRXF1YWwgLSBUaGUgdHdvIHN0
eWxlcyBhcmUgaWRlbnRpY2FsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108258</attachid>
            <date>2011-09-21 17:29:32 -0700</date>
            <delta_ts>2011-10-09 19:14:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64583-20110922102929.patch</filename>
            <type>text/plain</type>
            <size>14794</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1NTk1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMDktMjAgIEx1a2UgTWFj
cGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBXSVA6IEFkZCBD
U1MgcHJvcGVydHkgdG8gY29udHJvbCBwcmludGluZyBvZiBiYWNrZ3JvdW5kcyBmb3IgaW5kaXZp
ZHVhbCBlbGVtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY0NTgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsdWUpOgorICAgICAg
ICAqIGNzcy9DU1NQcm9wZXJ0eU5hbWVzLmluOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVj
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRG9j
dW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0
eSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVk
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkluaGVyaXRlZEZsYWdzOjppbml0aWFsRm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUpOgor
CiAyMDExLTA5LTIwICBSYWNoZWwgQmx1bSAgPGdyb2J5QGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBTdXBwb3J0IGZvciBtdWx0aXBsZSA8bGluayByZWw9Imljb24iPiBmYXZpY29uIGVsZW1lbnRz
LgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHAJKHJldmlzaW9uIDk1NTk1KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNjksNiArMTE2
OSw4IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWMKICAgICAgICAg
ICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVWYWx1ZShzdHlsZS0+Y2xlYXIo
KSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlDb2xvcjoKICAgICAgICAgICAgIHJldHVybiBw
cmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVDb2xvclZhbHVlKG1fYWxsb3dWaXNpdGVkU3R5bGUg
PyBzdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLnJnYigpIDog
c3R5bGUtPmNvbG9yKCkucmdiKCkpOworICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29s
b3JBZGp1c3Q6CisgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRl
SWRlbnRpZmllclZhbHVlKHN0eWxlLT5jb2xvckFkanVzdCgpKTsKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdENvbHVtbkNvdW50OgogICAgICAgICAgICAgaWYgKHN0eWxlLT5oYXNBdXRv
Q29sdW1uQ291bnQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNo
ZS0+Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmNwcAkocmV2aXNpb24gOTU1OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcxMCw2ICsxNzEwLDEwIEBAIGJvb2wgQ1NT
UGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGIKICAgICAgICAgaWYgKHZhbHVlLT5pZCA9
PSBDU1NWYWx1ZVZpc2libGUgfHwgdmFsdWUtPmlkID09IENTU1ZhbHVlSGlkZGVuKQogICAgICAg
ICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Q29sb3JBZGp1c3Q6CisgICAgICAgIGlmICh2YWx1ZS0+aWQgPT0gQ1NT
VmFsdWVFeGFjdCB8fCB2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVFY29ub215KQorICAgICAgICAgICAg
dmFsaWRQcmltaXRpdmUgPSB0cnVlOworICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0UGVyc3BlY3RpdmU6CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUpCiAg
ICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgJKHJldmlzaW9uIDk1NTk1KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAkod29ya2luZyBj
b3B5KQpAQCAtMTM0LDYgKzEzNCwzNSBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVW
YWx1ZTo6b3BlCiAgICAgcmV0dXJuIDAuMGY7CiB9CiAKKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKENvbG9yQWRqdXN0IHZhbHVlKQorICAg
IDogbV90eXBlKENTU19JREVOVCkKKyAgICAsIG1faGFzQ2FjaGVkQ1NTVGV4dChmYWxzZSkKK3sK
KyAgICBzd2l0Y2ggKHZhbHVlKSB7CisgICAgY2FzZSBDb2xvckFkanVzdEV4YWN0OgorICAgICAg
ICBtX3ZhbHVlLmlkZW50ID0gQ1NTVmFsdWVFeGFjdDsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDb2xvckFkanVzdEVjb25vbXk6CisgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NWYWx1ZUVj
b25vbXk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIENvbG9yQWRqdXN0KCkgY29uc3QKK3sKKyAgICBzd2l0
Y2ggKG1fdmFsdWUuaWRlbnQpIHsKKyAgICBjYXNlIENTU1ZhbHVlRWNvbm9teToKKyAgICAgICAg
cmV0dXJuIENvbG9yQWRqdXN0RWNvbm9teTsKKyAgICBjYXNlIENTU1ZhbHVlRXhhY3Q6CisgICAg
ICAgIHJldHVybiBDb2xvckFkanVzdEV4YWN0OworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gQ29sb3JBZGp1c3RFY29ub215OworICAg
IH0KK30KKworCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0
aXZlVmFsdWUoRUJvcmRlclN0eWxlIGUpCiAgICAgOiBtX3R5cGUoQ1NTX0lERU5UKQogICAgICwg
bV9oYXNDYWNoZWRDU1NUZXh0KGZhbHNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
b3BlcnR5TmFtZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3Bl
cnR5TmFtZXMuaW4JKHJldmlzaW9uIDk1NTk1KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
b3BlcnR5TmFtZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIzNSw2ICsyMzUsNyBAQCB6LWluZGV4
CiAtd2Via2l0LWJveC1wYWNrCiAtd2Via2l0LWJveC1yZWZsZWN0CiAtd2Via2l0LWJveC1zaGFk
b3cKKy13ZWJraXQtY29sb3ItYWRqdXN0CiAtd2Via2l0LWNvbG9yLWNvcnJlY3Rpb24KIC13ZWJr
aXQtY29sdW1uLWJyZWFrLWFmdGVyCiAtd2Via2l0LWNvbHVtbi1icmVhay1iZWZvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDk1NTk1KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05ODgsOCArOTg4LDkgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxl
Y3RvcgogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRVc2VQcmludGVyRm9udChkb2N1bWVudC0+cHJp
bnRpbmcoKSk7CiAgICAgaWYgKFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50LT5zZXR0aW5n
cygpKSB7CiAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRSZW5kZXJpbmdNb2RlKHNldHRpbmdz
LT5mb250UmVuZGVyaW5nTW9kZSgpKTsKLSAgICAgICAgaWYgKGRvY3VtZW50LT5wcmludGluZygp
ICYmICFzZXR0aW5ncy0+c2hvdWxkUHJpbnRCYWNrZ3JvdW5kcygpKQotICAgICAgICAgICAgZG9j
dW1lbnRTdHlsZS0+c2V0Rm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUodHJ1ZSk7CisvLyAgICAgICAg
ZG9jdW1lbnRTdHlsZS0+c2V0Rm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUoZG9jdW1lbnQtPmJvZHko
KSAmJiBkb2N1bWVudC0+Ym9keSgpLT5yZW5kZXJTdHlsZSgpICYmIGRvY3VtZW50LT5ib2R5KCkt
PnJlbmRlclN0eWxlKCktPmZvcmNlQmFja2dyb3VuZHNUb1doaXRlKCkpOworLy8gICAgICAgIGlm
IChkb2N1bWVudC0+cHJpbnRpbmcoKSAmJiAhc2V0dGluZ3MtPnNob3VsZFByaW50QmFja2dyb3Vu
ZHMoKSkKKy8vICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS0+c2V0Rm9yY2VCYWNrZ3JvdW5kc1Rv
V2hpdGUodHJ1ZSk7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc3RkZm9udCA9IHNldHRp
bmdzLT5zdGFuZGFyZEZvbnRGYW1pbHkoKTsKICAgICAgICAgaWYgKCFzdGRmb250LmlzRW1wdHko
KSkgewogICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERl
c2NyaXB0aW9uOjpTdGFuZGFyZEZhbWlseSk7CkBAIC0zMjMwLDYgKzMyMzEsOSBAQCB2b2lkIENT
U1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJv
eFNpemluZzoKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElW
RShib3hTaXppbmcsIEJveFNpemluZyk7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Q29sb3JBZGp1c3Q6CisgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklU
SUFMX0FORF9QUklNSVRJVkUoY29sb3JBZGp1c3QsIENvbG9yQWRqdXN0KTsKKyAgICAgICAgcmV0
dXJuOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5TcGFuOiB7CiAgICAgICAgIEhB
TkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGNvbHVtblNwYW4sIENvbHVtblNwYW4pCiAgICAgICAg
IG1fc3R5bGUtPnNldENvbHVtblNwYW4ocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NT
VmFsdWVBbGwpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4JKHJl
dmlzaW9uIDk1NTk1KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4J
KHdvcmtpbmcgY29weSkKQEAgLTc2NSw2ICs3NjUsMTAgQEAgb3B0aW1pemVTcGVlZAogb3B0aW1p
emVMZWdpYmlsaXR5CiBnZW9tZXRyaWNQcmVjaXNpb24KIAorLy8gLXdlYmtpdC1jb2xvci1hZGp1
c3QKK2Vjb25vbXkKK2V4YWN0CisKIC8vIC13ZWJraXQtY29sb3ItY29ycmVjdGlvbgogLy9kZWZh
dWx0CiBzUkdCCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3gu
Y3BwCShyZXZpc2lvbiA5NTU5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIlJl
bmRlclJ1YnlSdW4uaCIKICNpbmNsdWRlICJSZW5kZXJSdWJ5VGV4dC5oIgogI2luY2x1ZGUgIlJl
bmRlclRoZW1lLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTVkdUZXh0UnVu
UmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJicmVha19s
aW5lcy5oIgpAQCAtNTc1LDIwICs1NzYsMjggQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQ
YWludEluZm8mIHBhaQogICAgIH0gZWxzZSB7CiAgICAgICAgIHRleHRGaWxsQ29sb3IgPSBzdHls
ZVRvVXNlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENv
bG9yKTsKICAgICAgICAgCisgICAgICAgIGJvb2wgZm9yY2VCYWNrZ3JvdW5kVG9XaGl0ZSA9IGZh
bHNlOworICAgICAgICBpZiAoaXNQcmludGluZykgeworICAgICAgICAgICAgaWYgKHN0eWxlVG9V
c2UtPmNvbG9yQWRqdXN0KCkgPT0gQ29sb3JBZGp1c3RFY29ub215KQorICAgICAgICAgICAgICAg
IGZvcmNlQmFja2dyb3VuZFRvV2hpdGUgPSB0cnVlOworICAgICAgICAgICAgaWYgKHRleHRSZW5k
ZXJlcigpLT5kb2N1bWVudCgpLT5zZXR0aW5ncygpICYmIHRleHRSZW5kZXJlcigpLT5kb2N1bWVu
dCgpLT5zZXR0aW5ncygpLT5zaG91bGRQcmludEJhY2tncm91bmRzKCkpCisgICAgICAgICAgICAg
ICAgZm9yY2VCYWNrZ3JvdW5kVG9XaGl0ZSA9IGZhbHNlOworICAgICAgICB9CisKICAgICAgICAg
Ly8gTWFrZSB0aGUgdGV4dCBmaWxsIGNvbG9yIGxlZ2libGUgYWdhaW5zdCBhIHdoaXRlIGJhY2tn
cm91bmQKLSAgICAgICAgaWYgKHN0eWxlVG9Vc2UtPmZvcmNlQmFja2dyb3VuZHNUb1doaXRlKCkp
CisgICAgICAgIGlmIChmb3JjZUJhY2tncm91bmRUb1doaXRlKQogICAgICAgICAgICAgdGV4dEZp
bGxDb2xvciA9IGNvcnJlY3RlZFRleHRDb2xvcih0ZXh0RmlsbENvbG9yLCBDb2xvcjo6d2hpdGUp
OwogCiAgICAgICAgIHRleHRTdHJva2VDb2xvciA9IHN0eWxlVG9Vc2UtPnZpc2l0ZWREZXBlbmRl
bnRDb2xvcihDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvcik7CiAgICAgICAgIAogICAg
ICAgICAvLyBNYWtlIHRoZSB0ZXh0IHN0cm9rZSBjb2xvciBsZWdpYmxlIGFnYWluc3QgYSB3aGl0
ZSBiYWNrZ3JvdW5kCi0gICAgICAgIGlmIChzdHlsZVRvVXNlLT5mb3JjZUJhY2tncm91bmRzVG9X
aGl0ZSgpKQorICAgICAgICBpZiAoZm9yY2VCYWNrZ3JvdW5kVG9XaGl0ZSkKICAgICAgICAgICAg
IHRleHRTdHJva2VDb2xvciA9IGNvcnJlY3RlZFRleHRDb2xvcih0ZXh0U3Ryb2tlQ29sb3IsIENv
bG9yOjp3aGl0ZSk7CiAKICAgICAgICAgZW1waGFzaXNNYXJrQ29sb3IgPSBzdHlsZVRvVXNlLT52
aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvcik7
CiAgICAgICAgIAogICAgICAgICAvLyBNYWtlIHRoZSB0ZXh0IHN0cm9rZSBjb2xvciBsZWdpYmxl
IGFnYWluc3QgYSB3aGl0ZSBiYWNrZ3JvdW5kCi0gICAgICAgIGlmIChzdHlsZVRvVXNlLT5mb3Jj
ZUJhY2tncm91bmRzVG9XaGl0ZSgpKQorICAgICAgICBpZiAoZm9yY2VCYWNrZ3JvdW5kVG9XaGl0
ZSkKICAgICAgICAgICAgIGVtcGhhc2lzTWFya0NvbG9yID0gY29ycmVjdGVkVGV4dENvbG9yKGVt
cGhhc2lzTWFya0NvbG9yLCBDb2xvcjo6d2hpdGUpOwogICAgIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCShyZXZpc2lv
biA5NTU5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJSZW5kZXJJ
bmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcu
aCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgog
CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtNjEzLDE0ICs2MTQsMjIgQEAgdm9pZCBSZW5kZXJC
b3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZQogICAgIENvbG9yIGJnQ29sb3IgPSBjb2xvcjsK
ICAgICBTdHlsZUltYWdlKiBiZ0ltYWdlID0gYmdMYXllci0+aW1hZ2UoKTsKICAgICBib29sIHNo
b3VsZFBhaW50QmFja2dyb3VuZEltYWdlID0gYmdJbWFnZSAmJiBiZ0ltYWdlLT5jYW5SZW5kZXIo
c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKTsKLSAgICAKLSAgICAvLyBXaGVuIHRoaXMgc3R5bGUg
ZmxhZyBpcyBzZXQsIGNoYW5nZSBleGlzdGluZyBiYWNrZ3JvdW5kIGNvbG9ycyBhbmQgaW1hZ2Vz
IHRvIGEgc29saWQgd2hpdGUgYmFja2dyb3VuZC4KKyAgICBib29sIGZvcmNlQmFja2dyb3VuZFRv
V2hpdGUgPSBmYWxzZTsKKyAgICBpZiAoZG9jdW1lbnQoKS0+cHJpbnRpbmcoKSkgeworICAgICAg
ICBpZiAoc3R5bGUoKS0+Y29sb3JBZGp1c3QoKSA9PSBDb2xvckFkanVzdEVjb25vbXkpCisgICAg
ICAgICAgICBmb3JjZUJhY2tncm91bmRUb1doaXRlID0gdHJ1ZTsKKyAgICAgICAgaWYgKGRvY3Vt
ZW50KCktPnNldHRpbmdzKCkgJiYgZG9jdW1lbnQoKS0+c2V0dGluZ3MoKS0+c2hvdWxkUHJpbnRC
YWNrZ3JvdW5kcygpKQorICAgICAgICAgICAgZm9yY2VCYWNrZ3JvdW5kVG9XaGl0ZSA9IGZhbHNl
OworICAgIH0KKworICAgIC8vIFdoZW4gcHJpbnRpbmcgYmFja2dyb3VuZHMgaXMgZGlzYWJsZWQg
b3IgdXNpbmcgZWNvbm9teSBtb2RlLAorICAgIC8vIGNoYW5nZSBleGlzdGluZyBiYWNrZ3JvdW5k
IGNvbG9ycyBhbmQgaW1hZ2VzIHRvIGEgc29saWQgd2hpdGUgYmFja2dyb3VuZC4KICAgICAvLyBJ
ZiB0aGVyZSdzIG5vIGJnIGNvbG9yIG9yIGltYWdlLCBsZWF2ZSBpdCB1bnRvdWNoZWQgdG8gYXZv
aWQgYWZmZWN0aW5nIHRyYW5zcGFyZW5jeS4KICAgICAvLyBXZSBkb24ndCB0cnkgdG8gYXZvaWQg
bG9hZGluZyB0aGUgYmFja2dyb3VuZCBpbWFnZXMsIGJlY2F1c2UgdGhpcyBzdHlsZSBmbGFnIGlz
IG9ubHkgc2V0CiAgICAgLy8gd2hlbiBwcmludGluZywgYW5kIGF0IHRoYXQgcG9pbnQgd2UndmUg
YWxyZWFkeSBsb2FkZWQgdGhlIGJhY2tncm91bmQgaW1hZ2VzIGFueXdheS4gKFRvIGF2b2lkCiAg
ICAgLy8gbG9hZGluZyB0aGUgYmFja2dyb3VuZCBpbWFnZXMgd2UnZCBoYXZlIHRvIGRvIHRoaXMg
Y2hlY2sgd2hlbiBhcHBseWluZyBzdHlsZXMgcmF0aGVyIHRoYW4KICAgICAvLyB3aGlsZSByZW5k
ZXJpbmcuKQotICAgIGlmIChzdHlsZSgpLT5mb3JjZUJhY2tncm91bmRzVG9XaGl0ZSgpKSB7Cisg
ICAgaWYgKGZvcmNlQmFja2dyb3VuZFRvV2hpdGUpIHsKICAgICAgICAgLy8gTm90ZSB0aGF0IHdl
IGNhbid0IHJldXNlIHRoaXMgdmFyaWFibGUgYmVsb3cgYmVjYXVzZSB0aGUgYmdDb2xvciBtaWdo
dCBiZSBjaGFuZ2VkCiAgICAgICAgIGJvb2wgc2hvdWxkUGFpbnRCYWNrZ3JvdW5kQ29sb3IgPSAh
YmdMYXllci0+bmV4dCgpICYmIGJnQ29sb3IuaXNWYWxpZCgpICYmIGJnQ29sb3IuYWxwaGEoKSA+
IDA7CiAgICAgICAgIGlmIChzaG91bGRQYWludEJhY2tncm91bmRJbWFnZSB8fCBzaG91bGRQYWlu
dEJhY2tncm91bmRDb2xvcikgewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuY3BwCShyZXZpc2lvbiA5NTU5NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2MSw3
ICs1NjEsNyBAQCBTdHlsZURpZmZlcmVuY2UgUmVuZGVyU3R5bGU6OmRpZmYoY29uc3QgCiAgICAg
aWYgKGluaGVyaXRlZC0+Y29sb3IgIT0gb3RoZXItPmluaGVyaXRlZC0+Y29sb3IKICAgICAgICAg
fHwgaW5oZXJpdGVkX2ZsYWdzLl92aXNpYmlsaXR5ICE9IG90aGVyLT5pbmhlcml0ZWRfZmxhZ3Mu
X3Zpc2liaWxpdHkKICAgICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2RlY29yYXRpb25z
ICE9IG90aGVyLT5pbmhlcml0ZWRfZmxhZ3MuX3RleHRfZGVjb3JhdGlvbnMKLSAgICAgICAgfHwg
aW5oZXJpdGVkX2ZsYWdzLl9mb3JjZV9iYWNrZ3JvdW5kc190b193aGl0ZSAhPSBvdGhlci0+aW5o
ZXJpdGVkX2ZsYWdzLl9mb3JjZV9iYWNrZ3JvdW5kc190b193aGl0ZQorICAgICAgICB8fCBpbmhl
cml0ZWRfZmxhZ3MubV9jb2xvckFkanVzdCAhPSBvdGhlci0+aW5oZXJpdGVkX2ZsYWdzLm1fY29s
b3JBZGp1c3QKICAgICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl9pbnNpZGVMaW5rICE9IG90aGVy
LT5pbmhlcml0ZWRfZmxhZ3MuX2luc2lkZUxpbmsKICAgICAgICAgfHwgc3Vycm91bmQtPmJvcmRl
ciAhPSBvdGhlci0+c3Vycm91bmQtPmJvcmRlcgogICAgICAgICB8fCAqbV9iYWNrZ3JvdW5kLmdl
dCgpICE9ICpvdGhlci0+bV9iYWNrZ3JvdW5kLmdldCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkocmV2aXNpb24gOTU1OTUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTc3LDcgKzE3Nyw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgICAgICAmJiAoX3doaXRl
X3NwYWNlID09IG90aGVyLl93aGl0ZV9zcGFjZSkKICAgICAgICAgICAgICAgICAmJiAoX2JveF9k
aXJlY3Rpb24gPT0gb3RoZXIuX2JveF9kaXJlY3Rpb24pCiAgICAgICAgICAgICAgICAgJiYgKG1f
cnRsT3JkZXJpbmcgPT0gb3RoZXIubV9ydGxPcmRlcmluZykKLSAgICAgICAgICAgICAgICAmJiAo
X2ZvcmNlX2JhY2tncm91bmRzX3RvX3doaXRlID09IG90aGVyLl9mb3JjZV9iYWNrZ3JvdW5kc190
b193aGl0ZSkKKyAgICAgICAgICAgICAgICAmJiAobV9jb2xvckFkanVzdCA9PSBvdGhlci5tX2Nv
bG9yQWRqdXN0KQogICAgICAgICAgICAgICAgICYmIChfcG9pbnRlckV2ZW50cyA9PSBvdGhlci5f
cG9pbnRlckV2ZW50cykKICAgICAgICAgICAgICAgICAmJiAoX2luc2lkZUxpbmsgPT0gb3RoZXIu
X2luc2lkZUxpbmspCiAgICAgICAgICAgICAgICAgJiYgKG1fd3JpdGluZ01vZGUgPT0gb3RoZXIu
bV93cml0aW5nTW9kZSk7CkBAIC0yMDIsNyArMjAyLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAK
ICAgICAgICAgLy8gbm9uIENTUzIgaW5oZXJpdGVkCiAgICAgICAgIHVuc2lnbmVkIG1fcnRsT3Jk
ZXJpbmcgOiAxOyAvLyBPcmRlcgotICAgICAgICBib29sIF9mb3JjZV9iYWNrZ3JvdW5kc190b193
aGl0ZSA6IDE7CisgICAgICAgIENvbG9yQWRqdXN0IG1fY29sb3JBZGp1c3QgOiBDb2xvckFkanVz
dEJpdHM7CiAgICAgICAgIHVuc2lnbmVkIF9wb2ludGVyRXZlbnRzIDogNDsgLy8gRVBvaW50ZXJF
dmVudHMKICAgICAgICAgdW5zaWduZWQgX2luc2lkZUxpbmsgOiAyOyAvLyBFSW5zaWRlTGluawog
ICAgICAgICAvLyA0MyBiaXRzCkBAIC0yODIsNyArMjgyLDcgQEAgcHJvdGVjdGVkOgogICAgICAg
ICBpbmhlcml0ZWRfZmxhZ3MuX3doaXRlX3NwYWNlID0gaW5pdGlhbFdoaXRlU3BhY2UoKTsKICAg
ICAgICAgaW5oZXJpdGVkX2ZsYWdzLm1fcnRsT3JkZXJpbmcgPSBpbml0aWFsUlRMT3JkZXJpbmco
KTsKICAgICAgICAgaW5oZXJpdGVkX2ZsYWdzLl9ib3hfZGlyZWN0aW9uID0gaW5pdGlhbEJveERp
cmVjdGlvbigpOwotICAgICAgICBpbmhlcml0ZWRfZmxhZ3MuX2ZvcmNlX2JhY2tncm91bmRzX3Rv
X3doaXRlID0gZmFsc2U7CisgICAgICAgIGluaGVyaXRlZF9mbGFncy5tX2NvbG9yQWRqdXN0ID0g
aW5pdGlhbENvbG9yQWRqdXN0KCk7CiAgICAgICAgIGluaGVyaXRlZF9mbGFncy5fcG9pbnRlckV2
ZW50cyA9IGluaXRpYWxQb2ludGVyRXZlbnRzKCk7CiAgICAgICAgIGluaGVyaXRlZF9mbGFncy5f
aW5zaWRlTGluayA9IE5vdEluc2lkZUxpbms7CiAgICAgICAgIGluaGVyaXRlZF9mbGFncy5tX3dy
aXRpbmdNb2RlID0gaW5pdGlhbFdyaXRpbmdNb2RlKCk7CkBAIC0xMDYwLDggKzEwNjAsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRJbnNpZGVMaW5rKEVJbnNpZGVMaW5rIGluc2lkZUxpbmspIHsg
aW5oZXJpdGVkX2ZsYWdzLl9pbnNpZGVMaW5rID0gaW5zaWRlTGluazsgfQogICAgIHZvaWQgc2V0
SXNMaW5rKGJvb2wgYikgeyBub25pbmhlcml0ZWRfZmxhZ3MuX2lzTGluayA9IGI7IH0KIAotICAg
IGJvb2wgZm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWRf
ZmxhZ3MuX2ZvcmNlX2JhY2tncm91bmRzX3RvX3doaXRlOyB9Ci0gICAgdm9pZCBzZXRGb3JjZUJh
Y2tncm91bmRzVG9XaGl0ZShib29sIGI9dHJ1ZSkgeyBpbmhlcml0ZWRfZmxhZ3MuX2ZvcmNlX2Jh
Y2tncm91bmRzX3RvX3doaXRlID0gYjsgfQorICAgIENvbG9yQWRqdXN0IGNvbG9yQWRqdXN0KCkg
Y29uc3QgeyByZXR1cm4gaW5oZXJpdGVkX2ZsYWdzLm1fY29sb3JBZGp1c3Q7IH0KKyAgICB2b2lk
IHNldENvbG9yQWRqdXN0KENvbG9yQWRqdXN0IHZhbHVlKSB7IGluaGVyaXRlZF9mbGFncy5tX2Nv
bG9yQWRqdXN0ID0gdmFsdWU7IH0KIAogICAgIGJvb2wgaGFzQXV0b1pJbmRleCgpIGNvbnN0IHsg
cmV0dXJuIG1fYm94LT5oYXNBdXRvWkluZGV4KCk7IH0KICAgICB2b2lkIHNldEhhc0F1dG9aSW5k
ZXgoKSB7IFNFVF9WQVIobV9ib3gsIG1faGFzQXV0b1pJbmRleCwgdHJ1ZSk7IFNFVF9WQVIobV9i
b3gsIG1fekluZGV4LCAwKSB9CkBAIC0xNDQwLDYgKzE0NDAsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEVJbWFnZVJlbmRlcmluZyBpbml0aWFsSW1hZ2VSZW5kZXJpbmcoKSB7IHJldHVybiBJbWFn
ZVJlbmRlcmluZ0F1dG87IH0KICAgICBzdGF0aWMgU3R5bGVJbWFnZSogaW5pdGlhbEJvcmRlcklt
YWdlU291cmNlKCkgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBTdHlsZUltYWdlKiBpbml0aWFs
TWFza0JveEltYWdlU291cmNlKCkgeyByZXR1cm4gMDsgfQorICAgIHN0YXRpYyBDb2xvckFkanVz
dCBpbml0aWFsQ29sb3JBZGp1c3QoKSB7IHJldHVybiBDb2xvckFkanVzdEVjb25vbXk7IH0KIAog
ICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYWxGbG93VGhyZWFkKCkgeyByZXR1
cm4gbnVsbEF0b207IH0KICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWFsUmVn
aW9uVGhyZWFkKCkgeyByZXR1cm4gbnVsbEF0b207IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCShyZXZpc2lv
biA5NTU5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNv
bnN0YW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiwxMSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgKiBpbiBDU1NWYWx1ZUtleXdvcmRzLmluLCBvdGhlcndpc2Ugc29tZSBvcHRpbWl6
YXRpb25zIGluIHRoZSBwYXJzZXIgd2lsbCBmYWlsLAogICogYW5kIHByb2R1Y2UgaW52YWxpZCBy
ZXN1bHRzLgogICovCitzdGF0aWMgY29uc3Qgc2l6ZV90IENvbG9yQWRqdXN0Qml0cyA9IDE7Citl
bnVtIENvbG9yQWRqdXN0IHsKKyAgICBDb2xvckFkanVzdEVjb25vbXksCisgICAgQ29sb3JBZGp1
c3RFeGFjdAorfTsKIAogLy8gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gc3R5bGVzLiAgVGhl
IGZvbGxvd2luZyB2YWx1ZXMgYXJlIHVzZWQ6CiAvLyAoMSkgU3R5bGVEaWZmZXJlbmNlRXF1YWwg
LSBUaGUgdHdvIHN0eWxlcyBhcmUgaWRlbnRpY2FsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110316</attachid>
            <date>2011-10-09 19:14:11 -0700</date>
            <delta_ts>2011-10-20 17:56:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64583-20111010131408.patch</filename>
            <type>text/plain</type>
            <size>17465</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk2OTAxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMTAtMDYgIEx1a2UgTWFj
cGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBXSVA6IEFkZCBD
U1MgcHJvcGVydHkgdG8gY29udHJvbCBwcmludGluZyBvZiBiYWNrZ3JvdW5kcyBmb3IgaW5kaXZp
ZHVhbCBlbGVtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY0NTgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkZWQgdGVzdCBMYXlvdXRUZXN0cy9mYXN0L2Nzcy93ZWJraXQtY29sb3ItYWRqdXN0
Lmh0bWwsCisgICAgICAgIFVwZGF0ZWQgdGVzdHMgdW5kZXIgTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Z2V0Q29tcHV0ZWRTdHlsZQorCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246
OmdldFByb3BlcnR5Q1NTVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NT
UHJvcGVydHlOYW1lcy5pbjoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckRvY3VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmhl
cml0ZWRGbGFnczo6aW5pdGlhbEZvcmNlQmFja2dyb3VuZHNUb1doaXRlKToKKwogMjAxMS0xMC0w
NiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjk2ODk2LgpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDk2OTAx
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE5NSw2ICsxOTUsNyBAQCBzdGF0aWMgY29uc3QgaW50IGNvbXB1
dGVkUHJvcGVydGllc1tdID0gCiAgICAgQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrLAogICAgIENT
U1Byb3BlcnR5V2Via2l0Qm94UmVmbGVjdCwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRv
dywKKyAgICBDU1NQcm9wZXJ0eVdlYmtpdENvbG9yQWRqdXN0LAogICAgIENTU1Byb3BlcnR5V2Vi
a2l0Q29sb3JDb3JyZWN0aW9uLAogICAgIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtBZnRl
ciwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQmVmb3JlLApAQCAtMTMzNCw2ICsx
MzM1LDggQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlYwogICAgICAg
ICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZVZhbHVlKHN0eWxlLT5jbGVh
cigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9yOgogICAgICAgICAgICAgcmV0dXJu
IHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZUNvbG9yVmFsdWUobV9hbGxvd1Zpc2l0ZWRTdHls
ZSA/IHN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikucmdiKCkg
OiBzdHlsZS0+Y29sb3IoKS5yZ2IoKSk7CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRD
b2xvckFkanVzdDoKKyAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVh
dGVWYWx1ZShzdHlsZS0+Y29sb3JBZGp1c3QoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5Db3VudDoKICAgICAgICAgICAgIGlmIChzdHlsZS0+aGFzQXV0b0NvbHVtbkNv
dW50KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1dG8pOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAJKHJldmlzaW9uIDk2OTAxKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MDQsNiArMTcwNCwxMCBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBiCiAgICAgICAgIGlmICh2YWx1ZS0+aWQgPT0gQ1NTVmFs
dWVWaXNpYmxlIHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUhpZGRlbikKICAgICAgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdENvbG9yQWRqdXN0OgorICAgICAgICBpZiAodmFsdWUtPmlkID09IENTU1ZhbHVlRXhh
Y3QgfHwgdmFsdWUtPmlkID09IENTU1ZhbHVlRWNvbm9teSkKKyAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFBlcnNwZWN0aXZlOgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAg
ICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCShyZXZpc2lvbiA5NjkwMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzNCw2ICsxMzQsMzUgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9w
ZQogICAgIHJldHVybiAwLjBmOwogfQogCisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShDb2xvckFkanVzdCB2YWx1ZSkKKyAgICA6IG1fdHlw
ZShDU1NfSURFTlQpCisgICAgLCBtX2hhc0NhY2hlZENTU1RleHQoZmFsc2UpCit7CisgICAgc3dp
dGNoICh2YWx1ZSkgeworICAgIGNhc2UgQ29sb3JBZGp1c3RFeGFjdDoKKyAgICAgICAgbV92YWx1
ZS5pZGVudCA9IENTU1ZhbHVlRXhhY3Q7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29sb3JB
ZGp1c3RFY29ub215OgorICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTVmFsdWVFY29ub215Owor
ICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2
ZVZhbHVlOjpvcGVyYXRvciBDb2xvckFkanVzdCgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3Zh
bHVlLmlkZW50KSB7CisgICAgY2FzZSBDU1NWYWx1ZUVjb25vbXk6CisgICAgICAgIHJldHVybiBD
b2xvckFkanVzdEVjb25vbXk7CisgICAgY2FzZSBDU1NWYWx1ZUV4YWN0OgorICAgICAgICByZXR1
cm4gQ29sb3JBZGp1c3RFeGFjdDsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIENvbG9yQWRqdXN0RWNvbm9teTsKKyAgICB9Cit9CisK
KwogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVl
KEVCb3JkZXJTdHlsZSBlKQogICAgIDogbV90eXBlKENTU19JREVOVCkKICAgICAsIG1faGFzQ2Fj
aGVkQ1NTVGV4dChmYWxzZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5h
bWVzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVz
LmluCShyZXZpc2lvbiA5NjkwMSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5h
bWVzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMzUsNiArMjM1LDcgQEAgei1pbmRleAogLXdlYmtp
dC1ib3gtcGFjawogLXdlYmtpdC1ib3gtcmVmbGVjdAogLXdlYmtpdC1ib3gtc2hhZG93Cistd2Vi
a2l0LWNvbG9yLWFkanVzdAogLXdlYmtpdC1jb2xvci1jb3JyZWN0aW9uCiAtd2Via2l0LWNvbHVt
bi1icmVhay1hZnRlcgogLXdlYmtpdC1jb2x1bW4tYnJlYWstYmVmb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA5NjkwMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAy
NSw4ICsxMDI1LDYgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcgog
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRVc2VQcmludGVyRm9udChkb2N1bWVudC0+cHJpbnRpbmco
KSk7CiAgICAgaWYgKFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50LT5zZXR0aW5ncygpKSB7
CiAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRSZW5kZXJpbmdNb2RlKHNldHRpbmdzLT5mb250
UmVuZGVyaW5nTW9kZSgpKTsKLSAgICAgICAgaWYgKGRvY3VtZW50LT5wcmludGluZygpICYmICFz
ZXR0aW5ncy0+c2hvdWxkUHJpbnRCYWNrZ3JvdW5kcygpKQotICAgICAgICAgICAgZG9jdW1lbnRT
dHlsZS0+c2V0Rm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUodHJ1ZSk7CiAgICAgICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgc3RkZm9udCA9IHNldHRpbmdzLT5zdGFuZGFyZEZvbnRGYW1pbHkoKTsKICAg
ICAgICAgaWYgKCFzdGRmb250LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgZm9udERlc2NyaXB0
aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9uOjpTdGFuZGFyZEZhbWlseSk7CkBA
IC0zMzI1LDYgKzMzMjMsOSBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHko
aW50CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJveFNpemluZzoKICAgICAgICAgSEFORExFX0lOSEVS
SVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShib3hTaXppbmcsIEJveFNpemluZyk7CiAgICAg
ICAgIHJldHVybjsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sb3JBZGp1c3Q6CisgICAg
ICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUoY29sb3JBZGp1c3Qs
IENvbG9yQWRqdXN0KTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRDb2x1bW5TcGFuOiB7CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGNvbHVt
blNwYW4sIENvbHVtblNwYW4pCiAgICAgICAgIG1fc3R5bGUtPnNldENvbHVtblNwYW4ocHJpbWl0
aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVBbGwpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4JKHJldmlzaW9uIDk2OTAxKQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTc1Nyw2ICs3NTcs
MTAgQEAgb3B0aW1pemVTcGVlZAogb3B0aW1pemVMZWdpYmlsaXR5CiBnZW9tZXRyaWNQcmVjaXNp
b24KIAorLy8gLXdlYmtpdC1jb2xvci1hZGp1c3QKK2Vjb25vbXkKK2V4YWN0CisKIC8vIC13ZWJr
aXQtY29sb3ItY29ycmVjdGlvbgogLy9kZWZhdWx0CiBzUkdCCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCShyZXZpc2lvbiA5NjkwMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIlJlbmRlclJ1YnlSdW4uaCIKICNpbmNsdWRlICJSZW5k
ZXJSdWJ5VGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCisjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKICNpbmNsdWRlICJTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUg
IlRleHQuaCIKICNpbmNsdWRlICJicmVha19saW5lcy5oIgpAQCAtNTc1LDIwICs1NzYsMjggQEAg
dm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaQogICAgIH0gZWxzZSB7CiAg
ICAgICAgIHRleHRGaWxsQ29sb3IgPSBzdHlsZVRvVXNlLT52aXNpdGVkRGVwZW5kZW50Q29sb3Io
Q1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yKTsKICAgICAgICAgCisgICAgICAgIGJvb2wg
Zm9yY2VCYWNrZ3JvdW5kVG9XaGl0ZSA9IGZhbHNlOworICAgICAgICBpZiAoaXNQcmludGluZykg
eworICAgICAgICAgICAgaWYgKHN0eWxlVG9Vc2UtPmNvbG9yQWRqdXN0KCkgPT0gQ29sb3JBZGp1
c3RFY29ub215KQorICAgICAgICAgICAgICAgIGZvcmNlQmFja2dyb3VuZFRvV2hpdGUgPSB0cnVl
OworICAgICAgICAgICAgaWYgKHRleHRSZW5kZXJlcigpLT5kb2N1bWVudCgpLT5zZXR0aW5ncygp
ICYmIHRleHRSZW5kZXJlcigpLT5kb2N1bWVudCgpLT5zZXR0aW5ncygpLT5zaG91bGRQcmludEJh
Y2tncm91bmRzKCkpCisgICAgICAgICAgICAgICAgZm9yY2VCYWNrZ3JvdW5kVG9XaGl0ZSA9IGZh
bHNlOworICAgICAgICB9CisKICAgICAgICAgLy8gTWFrZSB0aGUgdGV4dCBmaWxsIGNvbG9yIGxl
Z2libGUgYWdhaW5zdCBhIHdoaXRlIGJhY2tncm91bmQKLSAgICAgICAgaWYgKHN0eWxlVG9Vc2Ut
PmZvcmNlQmFja2dyb3VuZHNUb1doaXRlKCkpCisgICAgICAgIGlmIChmb3JjZUJhY2tncm91bmRU
b1doaXRlKQogICAgICAgICAgICAgdGV4dEZpbGxDb2xvciA9IGNvcnJlY3RlZFRleHRDb2xvcih0
ZXh0RmlsbENvbG9yLCBDb2xvcjo6d2hpdGUpOwogCiAgICAgICAgIHRleHRTdHJva2VDb2xvciA9
IHN0eWxlVG9Vc2UtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eVdlYmtpdFRleHRT
dHJva2VDb2xvcik7CiAgICAgICAgIAogICAgICAgICAvLyBNYWtlIHRoZSB0ZXh0IHN0cm9rZSBj
b2xvciBsZWdpYmxlIGFnYWluc3QgYSB3aGl0ZSBiYWNrZ3JvdW5kCi0gICAgICAgIGlmIChzdHls
ZVRvVXNlLT5mb3JjZUJhY2tncm91bmRzVG9XaGl0ZSgpKQorICAgICAgICBpZiAoZm9yY2VCYWNr
Z3JvdW5kVG9XaGl0ZSkKICAgICAgICAgICAgIHRleHRTdHJva2VDb2xvciA9IGNvcnJlY3RlZFRl
eHRDb2xvcih0ZXh0U3Ryb2tlQ29sb3IsIENvbG9yOjp3aGl0ZSk7CiAKICAgICAgICAgZW1waGFz
aXNNYXJrQ29sb3IgPSBzdHlsZVRvVXNlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RW1waGFzaXNDb2xvcik7CiAgICAgICAgIAogICAgICAgICAvLyBNYWtlIHRo
ZSB0ZXh0IHN0cm9rZSBjb2xvciBsZWdpYmxlIGFnYWluc3QgYSB3aGl0ZSBiYWNrZ3JvdW5kCi0g
ICAgICAgIGlmIChzdHlsZVRvVXNlLT5mb3JjZUJhY2tncm91bmRzVG9XaGl0ZSgpKQorICAgICAg
ICBpZiAoZm9yY2VCYWNrZ3JvdW5kVG9XaGl0ZSkKICAgICAgICAgICAgIGVtcGhhc2lzTWFya0Nv
bG9yID0gY29ycmVjdGVkVGV4dENvbG9yKGVtcGhhc2lzTWFya0NvbG9yLCBDb2xvcjo6d2hpdGUp
OwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwCShyZXZpc2lvbiA5NjkwMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYg
KzM2LDcgQEAKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJMYXll
ci5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtNjMw
LDE0ICs2MzEsMjIgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZQog
ICAgIENvbG9yIGJnQ29sb3IgPSBjb2xvcjsKICAgICBTdHlsZUltYWdlKiBiZ0ltYWdlID0gYmdM
YXllci0+aW1hZ2UoKTsKICAgICBib29sIHNob3VsZFBhaW50QmFja2dyb3VuZEltYWdlID0gYmdJ
bWFnZSAmJiBiZ0ltYWdlLT5jYW5SZW5kZXIoc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKTsKLSAg
ICAKLSAgICAvLyBXaGVuIHRoaXMgc3R5bGUgZmxhZyBpcyBzZXQsIGNoYW5nZSBleGlzdGluZyBi
YWNrZ3JvdW5kIGNvbG9ycyBhbmQgaW1hZ2VzIHRvIGEgc29saWQgd2hpdGUgYmFja2dyb3VuZC4K
KyAgICBib29sIGZvcmNlQmFja2dyb3VuZFRvV2hpdGUgPSBmYWxzZTsKKyAgICBpZiAoZG9jdW1l
bnQoKS0+cHJpbnRpbmcoKSkgeworICAgICAgICBpZiAoc3R5bGUoKS0+Y29sb3JBZGp1c3QoKSA9
PSBDb2xvckFkanVzdEVjb25vbXkpCisgICAgICAgICAgICBmb3JjZUJhY2tncm91bmRUb1doaXRl
ID0gdHJ1ZTsKKyAgICAgICAgaWYgKGRvY3VtZW50KCktPnNldHRpbmdzKCkgJiYgZG9jdW1lbnQo
KS0+c2V0dGluZ3MoKS0+c2hvdWxkUHJpbnRCYWNrZ3JvdW5kcygpKQorICAgICAgICAgICAgZm9y
Y2VCYWNrZ3JvdW5kVG9XaGl0ZSA9IGZhbHNlOworICAgIH0KKworICAgIC8vIFdoZW4gcHJpbnRp
bmcgYmFja2dyb3VuZHMgaXMgZGlzYWJsZWQgb3IgdXNpbmcgZWNvbm9teSBtb2RlLAorICAgIC8v
IGNoYW5nZSBleGlzdGluZyBiYWNrZ3JvdW5kIGNvbG9ycyBhbmQgaW1hZ2VzIHRvIGEgc29saWQg
d2hpdGUgYmFja2dyb3VuZC4KICAgICAvLyBJZiB0aGVyZSdzIG5vIGJnIGNvbG9yIG9yIGltYWdl
LCBsZWF2ZSBpdCB1bnRvdWNoZWQgdG8gYXZvaWQgYWZmZWN0aW5nIHRyYW5zcGFyZW5jeS4KICAg
ICAvLyBXZSBkb24ndCB0cnkgdG8gYXZvaWQgbG9hZGluZyB0aGUgYmFja2dyb3VuZCBpbWFnZXMs
IGJlY2F1c2UgdGhpcyBzdHlsZSBmbGFnIGlzIG9ubHkgc2V0CiAgICAgLy8gd2hlbiBwcmludGlu
ZywgYW5kIGF0IHRoYXQgcG9pbnQgd2UndmUgYWxyZWFkeSBsb2FkZWQgdGhlIGJhY2tncm91bmQg
aW1hZ2VzIGFueXdheS4gKFRvIGF2b2lkCiAgICAgLy8gbG9hZGluZyB0aGUgYmFja2dyb3VuZCBp
bWFnZXMgd2UnZCBoYXZlIHRvIGRvIHRoaXMgY2hlY2sgd2hlbiBhcHBseWluZyBzdHlsZXMgcmF0
aGVyIHRoYW4KICAgICAvLyB3aGlsZSByZW5kZXJpbmcuKQotICAgIGlmIChzdHlsZSgpLT5mb3Jj
ZUJhY2tncm91bmRzVG9XaGl0ZSgpKSB7CisgICAgaWYgKGZvcmNlQmFja2dyb3VuZFRvV2hpdGUp
IHsKICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGNhbid0IHJldXNlIHRoaXMgdmFyaWFibGUgYmVs
b3cgYmVjYXVzZSB0aGUgYmdDb2xvciBtaWdodCBiZSBjaGFuZ2VkCiAgICAgICAgIGJvb2wgc2hv
dWxkUGFpbnRCYWNrZ3JvdW5kQ29sb3IgPSAhYmdMYXllci0+bmV4dCgpICYmIGJnQ29sb3IuaXNW
YWxpZCgpICYmIGJnQ29sb3IuYWxwaGEoKSA+IDA7CiAgICAgICAgIGlmIChzaG91bGRQYWludEJh
Y2tncm91bmRJbWFnZSB8fCBzaG91bGRQYWludEJhY2tncm91bmRDb2xvcikgewpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCShyZXZpc2lv
biA5NjkwMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU2Nyw3ICs1NjcsNyBAQCBTdHlsZURpZmZlcmVuY2UgUmVu
ZGVyU3R5bGU6OmRpZmYoY29uc3QgCiAgICAgaWYgKGluaGVyaXRlZC0+Y29sb3IgIT0gb3RoZXIt
PmluaGVyaXRlZC0+Y29sb3IKICAgICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl92aXNpYmlsaXR5
ICE9IG90aGVyLT5pbmhlcml0ZWRfZmxhZ3MuX3Zpc2liaWxpdHkKICAgICAgICAgfHwgaW5oZXJp
dGVkX2ZsYWdzLl90ZXh0X2RlY29yYXRpb25zICE9IG90aGVyLT5pbmhlcml0ZWRfZmxhZ3MuX3Rl
eHRfZGVjb3JhdGlvbnMKLSAgICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl9mb3JjZV9iYWNrZ3Jv
dW5kc190b193aGl0ZSAhPSBvdGhlci0+aW5oZXJpdGVkX2ZsYWdzLl9mb3JjZV9iYWNrZ3JvdW5k
c190b193aGl0ZQorICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3MubV9jb2xvckFkanVzdCAhPSBv
dGhlci0+aW5oZXJpdGVkX2ZsYWdzLm1fY29sb3JBZGp1c3QKICAgICAgICAgfHwgaW5oZXJpdGVk
X2ZsYWdzLl9pbnNpZGVMaW5rICE9IG90aGVyLT5pbmhlcml0ZWRfZmxhZ3MuX2luc2lkZUxpbmsK
ICAgICAgICAgfHwgc3Vycm91bmQtPmJvcmRlciAhPSBvdGhlci0+c3Vycm91bmQtPmJvcmRlcgog
ICAgICAgICB8fCAqbV9iYWNrZ3JvdW5kLmdldCgpICE9ICpvdGhlci0+bV9iYWNrZ3JvdW5kLmdl
dCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aAkocmV2aXNpb24gOTY5MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTgzLDcgKzE4Myw3IEBAIHByb3RlY3RlZDoK
ICAgICAgICAgICAgICAgICAmJiAoX3doaXRlX3NwYWNlID09IG90aGVyLl93aGl0ZV9zcGFjZSkK
ICAgICAgICAgICAgICAgICAmJiAoX2JveF9kaXJlY3Rpb24gPT0gb3RoZXIuX2JveF9kaXJlY3Rp
b24pCiAgICAgICAgICAgICAgICAgJiYgKG1fcnRsT3JkZXJpbmcgPT0gb3RoZXIubV9ydGxPcmRl
cmluZykKLSAgICAgICAgICAgICAgICAmJiAoX2ZvcmNlX2JhY2tncm91bmRzX3RvX3doaXRlID09
IG90aGVyLl9mb3JjZV9iYWNrZ3JvdW5kc190b193aGl0ZSkKKyAgICAgICAgICAgICAgICAmJiAo
bV9jb2xvckFkanVzdCA9PSBvdGhlci5tX2NvbG9yQWRqdXN0KQogICAgICAgICAgICAgICAgICYm
IChfcG9pbnRlckV2ZW50cyA9PSBvdGhlci5fcG9pbnRlckV2ZW50cykKICAgICAgICAgICAgICAg
ICAmJiAoX2luc2lkZUxpbmsgPT0gb3RoZXIuX2luc2lkZUxpbmspCiAgICAgICAgICAgICAgICAg
JiYgKG1fd3JpdGluZ01vZGUgPT0gb3RoZXIubV93cml0aW5nTW9kZSk7CkBAIC0yMDgsNyArMjA4
LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAKICAgICAgICAgLy8gbm9uIENTUzIgaW5oZXJpdGVk
CiAgICAgICAgIHVuc2lnbmVkIG1fcnRsT3JkZXJpbmcgOiAxOyAvLyBPcmRlcgotICAgICAgICBi
b29sIF9mb3JjZV9iYWNrZ3JvdW5kc190b193aGl0ZSA6IDE7CisgICAgICAgIENvbG9yQWRqdXN0
IG1fY29sb3JBZGp1c3QgOiBDb2xvckFkanVzdEJpdHM7CiAgICAgICAgIHVuc2lnbmVkIF9wb2lu
dGVyRXZlbnRzIDogNDsgLy8gRVBvaW50ZXJFdmVudHMKICAgICAgICAgdW5zaWduZWQgX2luc2lk
ZUxpbmsgOiAyOyAvLyBFSW5zaWRlTGluawogICAgICAgICAvLyA0MyBiaXRzCkBAIC0yODgsNyAr
Mjg4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBpbmhlcml0ZWRfZmxhZ3MuX3doaXRlX3NwYWNl
ID0gaW5pdGlhbFdoaXRlU3BhY2UoKTsKICAgICAgICAgaW5oZXJpdGVkX2ZsYWdzLm1fcnRsT3Jk
ZXJpbmcgPSBpbml0aWFsUlRMT3JkZXJpbmcoKTsKICAgICAgICAgaW5oZXJpdGVkX2ZsYWdzLl9i
b3hfZGlyZWN0aW9uID0gaW5pdGlhbEJveERpcmVjdGlvbigpOwotICAgICAgICBpbmhlcml0ZWRf
ZmxhZ3MuX2ZvcmNlX2JhY2tncm91bmRzX3RvX3doaXRlID0gZmFsc2U7CisgICAgICAgIGluaGVy
aXRlZF9mbGFncy5tX2NvbG9yQWRqdXN0ID0gaW5pdGlhbENvbG9yQWRqdXN0KCk7CiAgICAgICAg
IGluaGVyaXRlZF9mbGFncy5fcG9pbnRlckV2ZW50cyA9IGluaXRpYWxQb2ludGVyRXZlbnRzKCk7
CiAgICAgICAgIGluaGVyaXRlZF9mbGFncy5faW5zaWRlTGluayA9IE5vdEluc2lkZUxpbms7CiAg
ICAgICAgIGluaGVyaXRlZF9mbGFncy5tX3dyaXRpbmdNb2RlID0gaW5pdGlhbFdyaXRpbmdNb2Rl
KCk7CkBAIC0xMDc0LDggKzEwNzQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJbnNpZGVMaW5r
KEVJbnNpZGVMaW5rIGluc2lkZUxpbmspIHsgaW5oZXJpdGVkX2ZsYWdzLl9pbnNpZGVMaW5rID0g
aW5zaWRlTGluazsgfQogICAgIHZvaWQgc2V0SXNMaW5rKGJvb2wgYikgeyBub25pbmhlcml0ZWRf
ZmxhZ3MuX2lzTGluayA9IGI7IH0KIAotICAgIGJvb2wgZm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUo
KSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWRfZmxhZ3MuX2ZvcmNlX2JhY2tncm91bmRzX3RvX3do
aXRlOyB9Ci0gICAgdm9pZCBzZXRGb3JjZUJhY2tncm91bmRzVG9XaGl0ZShib29sIGI9dHJ1ZSkg
eyBpbmhlcml0ZWRfZmxhZ3MuX2ZvcmNlX2JhY2tncm91bmRzX3RvX3doaXRlID0gYjsgfQorICAg
IENvbG9yQWRqdXN0IGNvbG9yQWRqdXN0KCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkX2ZsYWdz
Lm1fY29sb3JBZGp1c3Q7IH0KKyAgICB2b2lkIHNldENvbG9yQWRqdXN0KENvbG9yQWRqdXN0IHZh
bHVlKSB7IGluaGVyaXRlZF9mbGFncy5tX2NvbG9yQWRqdXN0ID0gdmFsdWU7IH0KIAogICAgIGJv
b2wgaGFzQXV0b1pJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94LT5oYXNBdXRvWkluZGV4KCk7
IH0KICAgICB2b2lkIHNldEhhc0F1dG9aSW5kZXgoKSB7IFNFVF9WQVIobV9ib3gsIG1faGFzQXV0
b1pJbmRleCwgdHJ1ZSk7IFNFVF9WQVIobV9ib3gsIG1fekluZGV4LCAwKSB9CkBAIC0xNDYyLDYg
KzE0NjIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEVJbWFnZVJlbmRlcmluZyBpbml0aWFsSW1h
Z2VSZW5kZXJpbmcoKSB7IHJldHVybiBJbWFnZVJlbmRlcmluZ0F1dG87IH0KICAgICBzdGF0aWMg
U3R5bGVJbWFnZSogaW5pdGlhbEJvcmRlckltYWdlU291cmNlKCkgeyByZXR1cm4gMDsgfQogICAg
IHN0YXRpYyBTdHlsZUltYWdlKiBpbml0aWFsTWFza0JveEltYWdlU291cmNlKCkgeyByZXR1cm4g
MDsgfQorICAgIHN0YXRpYyBDb2xvckFkanVzdCBpbml0aWFsQ29sb3JBZGp1c3QoKSB7IHJldHVy
biBDb2xvckFkanVzdEVjb25vbXk7IH0KIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IGluaXRpYWxGbG93VGhyZWFkKCkgeyByZXR1cm4gbnVsbEF0b207IH0KICAgICBzdGF0aWMgY29u
c3QgQXRvbWljU3RyaW5nJiBpbml0aWFsUmVnaW9uVGhyZWFkKCkgeyByZXR1cm4gbnVsbEF0b207
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0
YW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZUNvbnN0YW50cy5oCShyZXZpc2lvbiA5NjkwMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Niw2ICszNiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgKiBpbiBDU1NWYWx1ZUtleXdvcmRz
LmluLCBvdGhlcndpc2Ugc29tZSBvcHRpbWl6YXRpb25zIGluIHRoZSBwYXJzZXIgd2lsbCBmYWls
LAogICogYW5kIHByb2R1Y2UgaW52YWxpZCByZXN1bHRzLgogICovCitzdGF0aWMgY29uc3Qgc2l6
ZV90IENvbG9yQWRqdXN0Qml0cyA9IDE7CitlbnVtIENvbG9yQWRqdXN0IHsKKyAgICBDb2xvckFk
anVzdEVjb25vbXksCisgICAgQ29sb3JBZGp1c3RFeGFjdAorfTsKIAogLy8gVGhlIGRpZmZlcmVu
Y2UgYmV0d2VlbiB0d28gc3R5bGVzLiAgVGhlIGZvbGxvd2luZyB2YWx1ZXMgYXJlIHVzZWQ6CiAv
LyAoMSkgU3R5bGVEaWZmZXJlbmNlRXF1YWwgLSBUaGUgdHdvIHN0eWxlcyBhcmUgaWRlbnRpY2Fs
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy93ZWJraXQtY29sb3ItYWRqdXN0LWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy93ZWJraXQtY29sb3ItYWRq
dXN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3dl
YmtpdC1jb2xvci1hZGp1c3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIg
QEAKK1NVQ0NFU1MKK1NVQ0NFU1MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3dlYmtpdC1j
b2xvci1hZGp1c3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy93ZWJr
aXQtY29sb3ItYWRqdXN0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy93ZWJraXQtY29sb3ItYWRqdXN0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjggQEAK
KzxoZWFkPgorPHNjcmlwdD4KK3ZhciBvdXRwdXQgPSBbXTsKKworZnVuY3Rpb24gdGVzdChpZCwg
ZXhwZWN0ZWQpIHsKKyAgICB2YXIgYWRqdXN0ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpKS53ZWJraXRDb2xvckFkanVzdDsKKyAgICBpZiAoYWRq
dXN0ID09IGV4cGVjdGVkKQorICAgICAgICBvdXRwdXQucHVzaCgiU1VDQ0VTUyIpOworICAgIGVs
c2UKKyAgICAgICAgb3V0cHV0LnB1c2goIkZBSUxVUkUuICAtd2Via2l0LWNvbG9yLWFkanVzdCB3
YXMgIiArIGFkanVzdCArICIsIGl0IHNob3VsZCBoYXZlIGJlZW4gIiArIGV4cGVjdGVkKTsKK30K
KworZnVuY3Rpb24gcnVuVGVzdHMoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KworICAgIHRlc3QoImVjb25vbXkiLCAiZWNvbm9teSIpOworICAgIHRlc3QoImV4YWN0IiwgImV4
YWN0Iik7CisKKyAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9IG91dHB1dC5qb2luKCJcbiIp
OworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9uTG9hZD0icnVuVGVzdHMoKTsiIHN0
eWxlPSJ3aGl0ZS1zcGFjZTogcHJlLXdyYXA7Ij4KKzxkaXYgaWQ9ImVjb25vbXkiIHN0eWxlPSIt
d2Via2l0LWNvbG9yLWFkanVzdDplY29ub215OyI+PC9kaXY+Cis8ZGl2IGlkPSJleGFjdCIgc3R5
bGU9Ii13ZWJraXQtY29sb3ItYWRqdXN0OmV4YWN0OyI+PC9kaXY+Cis8L2JvZHk+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxlLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0
eWxlL2NvbXB1dGVkLXN0eWxlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTY5MDEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxlLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDYgKzEzMCw3IEBAIHpvb206IDE7CiAtd2Via2l0
LWJveC1wYWNrOiBzdGFydDsKIC13ZWJraXQtYm94LXJlZmxlY3Q6IG5vbmU7CiAtd2Via2l0LWJv
eC1zaGFkb3c6IG5vbmU7Cistd2Via2l0LWNvbG9yLWFkanVzdDogZWNvbm9teTsKIC13ZWJraXQt
Y29sb3ItY29ycmVjdGlvbjogZGVmYXVsdDsKIC13ZWJraXQtY29sdW1uLWJyZWFrLWFmdGVyOiBh
dXRvOwogLXdlYmtpdC1jb2x1bW4tYnJlYWstYmVmb3JlOiBhdXRvOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS13aXRob3V0LXJlbmRl
cmVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRD
b21wdXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxlLXdpdGhvdXQtcmVuZGVyZXItZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiA5NjkwMSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5
bGUvY29tcHV0ZWQtc3R5bGUtd2l0aG91dC1yZW5kZXJlci1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTEyOSw2ICsxMjksNyBAQCBDb21wdXRlZCBzdHlsZSBvZiBhbiBlbGVtZW50IHdo
b3NlIHBhcmVuCiAgICAgLXdlYmtpdC1ib3gtcGFjazogc3RhcnQKICAgICAtd2Via2l0LWJveC1y
ZWZsZWN0OiBub25lCiAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lCisgICAgLXdlYmtpdC1j
b2xvci1hZGp1c3Q6IGVjb25vbXkKICAgICAtd2Via2l0LWNvbG9yLWNvcnJlY3Rpb246IGRlZmF1
bHQKICAgICAtd2Via2l0LWNvbHVtbi1icmVhay1hZnRlcjogYXV0bwogICAgIC13ZWJraXQtY29s
dW1uLWJyZWFrLWJlZm9yZTogYXV0bwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111884</attachid>
            <date>2011-10-20 17:57:03 -0700</date>
            <delta_ts>2011-10-23 17:57:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64583-20111021115700.patch</filename>
            <type>text/plain</type>
            <size>19404</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4MDMxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMTAtMjAgIEx1a2UgTWFj
cGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBXSVA6IEFkZCBD
U1MgcHJvcGVydHkgdG8gY29udHJvbCBwcmludGluZyBvZiBiYWNrZ3JvdW5kcyBmb3IgaW5kaXZp
ZHVhbCBlbGVtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY0NTgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkZWQgdGVzdCBMYXlvdXRUZXN0cy9mYXN0L2Nzcy93ZWJraXQtY29sb3ItYWRqdXN0
Lmh0bWwsCisgICAgICAgIFVwZGF0ZWQgdGVzdHMgdW5kZXIgTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Z2V0Q29tcHV0ZWRTdHlsZQorICAgICAgICBVcGRhdGVkIHRlc3QgdW5kZXIgTGF5b3V0VGVzdHMv
c3ZnL2NzcworCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3Bl
cnR5Q1NTVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlO
YW1lcy5pbjoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckRvY3VtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6CisgICAgICAgICogcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFn
czo6aW5pdGlhbEZvcmNlQmFja2dyb3VuZHNUb1doaXRlKToKKwogMjAxMS0xMC0yMCAgUmF5bW9u
ZCBUb3kgIDxydG95QGdvb2dsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IFNTRSBkZW5vcm1h
bCBkaXNhYmxlciBmb3Igd2luZG93cy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiA5ODAzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNDksNiArMjQ5LDcgQEAgc3RhdGljIGNvbnN0IGludCBjb21wdXRlZFByb3Bl
cnRpZXNbXSA9IAogICAgIENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsCiAgICAgQ1NTUHJvcGVy
dHlXZWJraXRQZXJzcGVjdGl2ZSwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3Jp
Z2luLAorICAgIENTU1Byb3BlcnR5V2Via2l0UHJpbnRDb2xvckFkanVzdCwKICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nLAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgQ1NT
UHJvcGVydHlXZWJraXRUYXBIaWdobGlnaHRDb2xvciwKQEAgLTEzMzQsNiArMTMzNSw4IEBAIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWMKICAgICAgICAgICAgIHJldHVy
biBwcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVWYWx1ZShzdHlsZS0+Y2xlYXIoKSk7CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlDb2xvcjoKICAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVW
YWx1ZUNhY2hlLT5jcmVhdGVDb2xvclZhbHVlKG1fYWxsb3dWaXNpdGVkU3R5bGUgPyBzdHlsZS0+
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLnJnYigpIDogc3R5bGUtPmNv
bG9yKCkucmdiKCkpOworICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UHJpbnRDb2xvckFk
anVzdDoKKyAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVWYWx1
ZShzdHlsZS0+cHJpbnRDb2xvckFkanVzdCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtbkNvdW50OgogICAgICAgICAgICAgaWYgKHN0eWxlLT5oYXNBdXRvQ29sdW1uQ291
bnQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRl
SWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmNwcAkocmV2aXNpb24gOTgwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTY5NSw2ICsxNjk1LDEwIEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVZhbHVlKGludCBwcm9wSWQsIGIKICAgICAgICAgaWYgKHZhbHVlLT5pZCA9PSBDU1NWYWx1
ZVZpc2libGUgfHwgdmFsdWUtPmlkID09IENTU1ZhbHVlSGlkZGVuKQogICAgICAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0UHJpbnRDb2xvckFkanVzdDoKKyAgICAgICAgaWYgKHZhbHVlLT5pZCA9PSBDU1NWYWx1
ZUV4YWN0IHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUVjb25vbXkpCisgICAgICAgICAgICB2YWxp
ZFByaW1pdGl2ZSA9IHRydWU7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRQZXJzcGVjdGl2ZToKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkKICAgICAg
ICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAkocmV2aXNpb24gOTgwMzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzAsNiArMTMwLDM1IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVl
OjpvcGUKICAgICByZXR1cm4gMC4wZjsKIH0KIAorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoUHJpbnRDb2xvckFkanVzdCB2YWx1ZSkKKyAg
ICA6IG1fdHlwZShDU1NfSURFTlQpCisgICAgLCBtX2hhc0NhY2hlZENTU1RleHQoZmFsc2UpCit7
CisgICAgc3dpdGNoICh2YWx1ZSkgeworICAgIGNhc2UgUHJpbnRDb2xvckFkanVzdEV4YWN0Ogor
ICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTVmFsdWVFeGFjdDsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBQcmludENvbG9yQWRqdXN0RWNvbm9teToKKyAgICAgICAgbV92YWx1ZS5pZGVudCA9
IENTU1ZhbHVlRWNvbm9teTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+
IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgUHJpbnRDb2xvckFkanVzdCgpIGNv
bnN0Cit7CisgICAgc3dpdGNoIChtX3ZhbHVlLmlkZW50KSB7CisgICAgY2FzZSBDU1NWYWx1ZUVj
b25vbXk6CisgICAgICAgIHJldHVybiBQcmludENvbG9yQWRqdXN0RWNvbm9teTsKKyAgICBjYXNl
IENTU1ZhbHVlRXhhY3Q6CisgICAgICAgIHJldHVybiBQcmludENvbG9yQWRqdXN0RXhhY3Q7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVy
biBQcmludENvbG9yQWRqdXN0RWNvbm9teTsKKyAgICB9Cit9CisKKwogdGVtcGxhdGU8PiBpbmxp
bmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVCb3JkZXJTdHlsZSBlKQog
ICAgIDogbV90eXBlKENTU19JREVOVCkKICAgICAsIG1faGFzQ2FjaGVkQ1NTVGV4dChmYWxzZSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCShyZXZpc2lvbiA5ODAz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCSh3b3JraW5nIGNv
cHkpCkBAIC0zMTgsNiArMzE4LDcgQEAgei1pbmRleAogLXdlYmtpdC1wZXJzcGVjdGl2ZS1vcmln
aW4KIC13ZWJraXQtcGVyc3BlY3RpdmUtb3JpZ2luLXgKIC13ZWJraXQtcGVyc3BlY3RpdmUtb3Jp
Z2luLXkKKy13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0CiAtd2Via2l0LXJ0bC1vcmRlcmluZwog
LXdlYmtpdC10ZXh0LWNvbWJpbmUKIC1lcHViLXRleHQtY29tYmluZSA9IC13ZWJraXQtdGV4dC1j
b21iaW5lCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZp
c2lvbiA5ODAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTE1Nyw4ICsxMTU3LDYgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHls
ZT4gQ1NTU3R5bGVTZWxlY3RvcgogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRVc2VQcmludGVyRm9u
dChkb2N1bWVudC0+cHJpbnRpbmcoKSk7CiAgICAgaWYgKFNldHRpbmdzKiBzZXR0aW5ncyA9IGRv
Y3VtZW50LT5zZXR0aW5ncygpKSB7CiAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRSZW5kZXJp
bmdNb2RlKHNldHRpbmdzLT5mb250UmVuZGVyaW5nTW9kZSgpKTsKLSAgICAgICAgaWYgKGRvY3Vt
ZW50LT5wcmludGluZygpICYmICFzZXR0aW5ncy0+c2hvdWxkUHJpbnRCYWNrZ3JvdW5kcygpKQot
ICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS0+c2V0Rm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUodHJ1
ZSk7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc3RkZm9udCA9IHNldHRpbmdzLT5zdGFu
ZGFyZEZvbnRGYW1pbHkoKTsKICAgICAgICAgaWYgKCFzdGRmb250LmlzRW1wdHkoKSkgewogICAg
ICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9u
OjpTdGFuZGFyZEZhbWlseSk7CkBAIC0zMjMxLDYgKzMyMjksOSBAQCB2b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJveFNpemluZzoK
ICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShib3hTaXpp
bmcsIEJveFNpemluZyk7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0UHJpbnRDb2xvckFkanVzdDoKKyAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxf
QU5EX1BSSU1JVElWRShwcmludENvbG9yQWRqdXN0LCBQcmludENvbG9yQWRqdXN0KTsKKyAgICAg
ICAgcmV0dXJuOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5TcGFuOiB7CiAgICAg
ICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGNvbHVtblNwYW4sIENvbHVtblNwYW4pCiAg
ICAgICAgIG1fc3R5bGUtPnNldENvbHVtblNwYW4ocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkg
PT0gQ1NTVmFsdWVBbGwpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29y
ZHMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMu
aW4JKHJldmlzaW9uIDk4MDMxKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29y
ZHMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTc1Nyw2ICs3NTcsMTAgQEAgb3B0aW1pemVTcGVlZAog
b3B0aW1pemVMZWdpYmlsaXR5CiBnZW9tZXRyaWNQcmVjaXNpb24KIAorLy8gLXdlYmtpdC1jb2xv
ci1hZGp1c3QKK2Vjb25vbXkKK2V4YWN0CisKIC8vIC13ZWJraXQtY29sb3ItY29ycmVjdGlvbgog
Ly9kZWZhdWx0CiBzUkdCCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guY3BwCShyZXZpc2lvbiA5ODAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVUZXh0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1
ZGUgIlJlbmRlclJ1YnlSdW4uaCIKICNpbmNsdWRlICJSZW5kZXJSdWJ5VGV4dC5oIgogI2luY2x1
ZGUgIlJlbmRlclRoZW1lLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTVkdU
ZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJi
cmVha19saW5lcy5oIgpAQCAtNTc1LDIwICs1NzYsMjggQEAgdm9pZCBJbmxpbmVUZXh0Qm94Ojpw
YWludChQYWludEluZm8mIHBhaQogICAgIH0gZWxzZSB7CiAgICAgICAgIHRleHRGaWxsQ29sb3Ig
PSBzdHlsZVRvVXNlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlXZWJraXRUZXh0
RmlsbENvbG9yKTsKICAgICAgICAgCisgICAgICAgIGJvb2wgZm9yY2VCYWNrZ3JvdW5kVG9XaGl0
ZSA9IGZhbHNlOworICAgICAgICBpZiAoaXNQcmludGluZykgeworICAgICAgICAgICAgaWYgKHN0
eWxlVG9Vc2UtPnByaW50Q29sb3JBZGp1c3QoKSA9PSBQcmludENvbG9yQWRqdXN0RWNvbm9teSkK
KyAgICAgICAgICAgICAgICBmb3JjZUJhY2tncm91bmRUb1doaXRlID0gdHJ1ZTsKKyAgICAgICAg
ICAgIGlmICh0ZXh0UmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSAmJiB0ZXh0UmVu
ZGVyZXIoKS0+ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKS0+c2hvdWxkUHJpbnRCYWNrZ3JvdW5kcygp
KQorICAgICAgICAgICAgICAgIGZvcmNlQmFja2dyb3VuZFRvV2hpdGUgPSBmYWxzZTsKKyAgICAg
ICAgfQorCiAgICAgICAgIC8vIE1ha2UgdGhlIHRleHQgZmlsbCBjb2xvciBsZWdpYmxlIGFnYWlu
c3QgYSB3aGl0ZSBiYWNrZ3JvdW5kCi0gICAgICAgIGlmIChzdHlsZVRvVXNlLT5mb3JjZUJhY2tn
cm91bmRzVG9XaGl0ZSgpKQorICAgICAgICBpZiAoZm9yY2VCYWNrZ3JvdW5kVG9XaGl0ZSkKICAg
ICAgICAgICAgIHRleHRGaWxsQ29sb3IgPSBjb3JyZWN0ZWRUZXh0Q29sb3IodGV4dEZpbGxDb2xv
ciwgQ29sb3I6OndoaXRlKTsKIAogICAgICAgICB0ZXh0U3Ryb2tlQ29sb3IgPSBzdHlsZVRvVXNl
LT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3Ip
OwogICAgICAgICAKICAgICAgICAgLy8gTWFrZSB0aGUgdGV4dCBzdHJva2UgY29sb3IgbGVnaWJs
ZSBhZ2FpbnN0IGEgd2hpdGUgYmFja2dyb3VuZAotICAgICAgICBpZiAoc3R5bGVUb1VzZS0+Zm9y
Y2VCYWNrZ3JvdW5kc1RvV2hpdGUoKSkKKyAgICAgICAgaWYgKGZvcmNlQmFja2dyb3VuZFRvV2hp
dGUpCiAgICAgICAgICAgICB0ZXh0U3Ryb2tlQ29sb3IgPSBjb3JyZWN0ZWRUZXh0Q29sb3IodGV4
dFN0cm9rZUNvbG9yLCBDb2xvcjo6d2hpdGUpOwogCiAgICAgICAgIGVtcGhhc2lzTWFya0NvbG9y
ID0gc3R5bGVUb1VzZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5V2Via2l0VGV4
dEVtcGhhc2lzQ29sb3IpOwogICAgICAgICAKICAgICAgICAgLy8gTWFrZSB0aGUgdGV4dCBzdHJv
a2UgY29sb3IgbGVnaWJsZSBhZ2FpbnN0IGEgd2hpdGUgYmFja2dyb3VuZAotICAgICAgICBpZiAo
c3R5bGVUb1VzZS0+Zm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUoKSkKKyAgICAgICAgaWYgKGZvcmNl
QmFja2dyb3VuZFRvV2hpdGUpCiAgICAgICAgICAgICBlbXBoYXNpc01hcmtDb2xvciA9IGNvcnJl
Y3RlZFRleHRDb2xvcihlbXBoYXNpc01hcmtDb2xvciwgQ29sb3I6OndoaXRlKTsKICAgICB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcAkocmV2aXNpb24gOTgwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAj
aW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNs
dWRlICJSZW5kZXJWaWV3LmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlIDx3dGYv
Q3VycmVudFRpbWUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTYxMywxMyArNjE0LDIy
IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWUKICAgICBTdHlsZUlt
YWdlKiBiZ0ltYWdlID0gYmdMYXllci0+aW1hZ2UoKTsKICAgICBib29sIHNob3VsZFBhaW50QmFj
a2dyb3VuZEltYWdlID0gYmdJbWFnZSAmJiBiZ0ltYWdlLT5jYW5SZW5kZXIodGhpcywgc3R5bGUo
KS0+ZWZmZWN0aXZlWm9vbSgpKTsKICAgICAKLSAgICAvLyBXaGVuIHRoaXMgc3R5bGUgZmxhZyBp
cyBzZXQsIGNoYW5nZSBleGlzdGluZyBiYWNrZ3JvdW5kIGNvbG9ycyBhbmQgaW1hZ2VzIHRvIGEg
c29saWQgd2hpdGUgYmFja2dyb3VuZC4KKyAgICBib29sIGZvcmNlQmFja2dyb3VuZFRvV2hpdGUg
PSBmYWxzZTsKKyAgICBpZiAoZG9jdW1lbnQoKS0+cHJpbnRpbmcoKSkgeworICAgICAgICBpZiAo
c3R5bGUoKS0+cHJpbnRDb2xvckFkanVzdCgpID09IFByaW50Q29sb3JBZGp1c3RFY29ub215KQor
ICAgICAgICAgICAgZm9yY2VCYWNrZ3JvdW5kVG9XaGl0ZSA9IHRydWU7CisgICAgICAgIGlmIChk
b2N1bWVudCgpLT5zZXR0aW5ncygpICYmIGRvY3VtZW50KCktPnNldHRpbmdzKCktPnNob3VsZFBy
aW50QmFja2dyb3VuZHMoKSkKKyAgICAgICAgICAgIGZvcmNlQmFja2dyb3VuZFRvV2hpdGUgPSBm
YWxzZTsKKyAgICB9CisKKyAgICAvLyBXaGVuIHByaW50aW5nIGJhY2tncm91bmRzIGlzIGRpc2Fi
bGVkIG9yIHVzaW5nIGVjb25vbXkgbW9kZSwKKyAgICAvLyBjaGFuZ2UgZXhpc3RpbmcgYmFja2dy
b3VuZCBjb2xvcnMgYW5kIGltYWdlcyB0byBhIHNvbGlkIHdoaXRlIGJhY2tncm91bmQuCiAgICAg
Ly8gSWYgdGhlcmUncyBubyBiZyBjb2xvciBvciBpbWFnZSwgbGVhdmUgaXQgdW50b3VjaGVkIHRv
IGF2b2lkIGFmZmVjdGluZyB0cmFuc3BhcmVuY3kuCiAgICAgLy8gV2UgZG9uJ3QgdHJ5IHRvIGF2
b2lkIGxvYWRpbmcgdGhlIGJhY2tncm91bmQgaW1hZ2VzLCBiZWNhdXNlIHRoaXMgc3R5bGUgZmxh
ZyBpcyBvbmx5IHNldAogICAgIC8vIHdoZW4gcHJpbnRpbmcsIGFuZCBhdCB0aGF0IHBvaW50IHdl
J3ZlIGFscmVhZHkgbG9hZGVkIHRoZSBiYWNrZ3JvdW5kIGltYWdlcyBhbnl3YXkuIChUbyBhdm9p
ZAogICAgIC8vIGxvYWRpbmcgdGhlIGJhY2tncm91bmQgaW1hZ2VzIHdlJ2QgaGF2ZSB0byBkbyB0
aGlzIGNoZWNrIHdoZW4gYXBwbHlpbmcgc3R5bGVzIHJhdGhlciB0aGFuCiAgICAgLy8gd2hpbGUg
cmVuZGVyaW5nLikKLSAgICBpZiAoc3R5bGUoKS0+Zm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUoKSkg
eworICAgIGlmIChmb3JjZUJhY2tncm91bmRUb1doaXRlKSB7CiAgICAgICAgIC8vIE5vdGUgdGhh
dCB3ZSBjYW4ndCByZXVzZSB0aGlzIHZhcmlhYmxlIGJlbG93IGJlY2F1c2UgdGhlIGJnQ29sb3Ig
bWlnaHQgYmUgY2hhbmdlZAogICAgICAgICBib29sIHNob3VsZFBhaW50QmFja2dyb3VuZENvbG9y
ID0gIWJnTGF5ZXItPm5leHQoKSAmJiBiZ0NvbG9yLmlzVmFsaWQoKSAmJiBiZ0NvbG9yLmFscGhh
KCkgPiAwOwogICAgICAgICBpZiAoc2hvdWxkUGFpbnRCYWNrZ3JvdW5kSW1hZ2UgfHwgc2hvdWxk
UGFpbnRCYWNrZ3JvdW5kQ29sb3IpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkocmV2aXNpb24gOTgwMzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NjYsNyArNTY2LDcgQEAgU3R5bGVEaWZmZXJlbmNlIFJlbmRlclN0eWxlOjpkaWZmKGNvbnN0IAog
ICAgIGlmIChpbmhlcml0ZWQtPmNvbG9yICE9IG90aGVyLT5pbmhlcml0ZWQtPmNvbG9yCiAgICAg
ICAgIHx8IGluaGVyaXRlZF9mbGFncy5fdmlzaWJpbGl0eSAhPSBvdGhlci0+aW5oZXJpdGVkX2Zs
YWdzLl92aXNpYmlsaXR5CiAgICAgICAgIHx8IGluaGVyaXRlZF9mbGFncy5fdGV4dF9kZWNvcmF0
aW9ucyAhPSBvdGhlci0+aW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2RlY29yYXRpb25zCi0gICAgICAg
IHx8IGluaGVyaXRlZF9mbGFncy5fZm9yY2VfYmFja2dyb3VuZHNfdG9fd2hpdGUgIT0gb3RoZXIt
PmluaGVyaXRlZF9mbGFncy5fZm9yY2VfYmFja2dyb3VuZHNfdG9fd2hpdGUKKyAgICAgICAgfHwg
aW5oZXJpdGVkX2ZsYWdzLm1fcHJpbnRDb2xvckFkanVzdCAhPSBvdGhlci0+aW5oZXJpdGVkX2Zs
YWdzLm1fcHJpbnRDb2xvckFkanVzdAogICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3MuX2luc2lk
ZUxpbmsgIT0gb3RoZXItPmluaGVyaXRlZF9mbGFncy5faW5zaWRlTGluawogICAgICAgICB8fCBz
dXJyb3VuZC0+Ym9yZGVyICE9IG90aGVyLT5zdXJyb3VuZC0+Ym9yZGVyCiAgICAgICAgIHx8ICpt
X2JhY2tncm91bmQuZ2V0KCkgIT0gKm90aGVyLT5tX2JhY2tncm91bmQuZ2V0KCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCShyZXZpc2lvbiA5
ODAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xODMsNyArMTgzLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAg
ICAgICYmIChfd2hpdGVfc3BhY2UgPT0gb3RoZXIuX3doaXRlX3NwYWNlKQogICAgICAgICAgICAg
ICAgICYmIChfYm94X2RpcmVjdGlvbiA9PSBvdGhlci5fYm94X2RpcmVjdGlvbikKICAgICAgICAg
ICAgICAgICAmJiAobV9ydGxPcmRlcmluZyA9PSBvdGhlci5tX3J0bE9yZGVyaW5nKQotICAgICAg
ICAgICAgICAgICYmIChfZm9yY2VfYmFja2dyb3VuZHNfdG9fd2hpdGUgPT0gb3RoZXIuX2ZvcmNl
X2JhY2tncm91bmRzX3RvX3doaXRlKQorICAgICAgICAgICAgICAgICYmIChtX3ByaW50Q29sb3JB
ZGp1c3QgPT0gb3RoZXIubV9wcmludENvbG9yQWRqdXN0KQogICAgICAgICAgICAgICAgICYmIChf
cG9pbnRlckV2ZW50cyA9PSBvdGhlci5fcG9pbnRlckV2ZW50cykKICAgICAgICAgICAgICAgICAm
JiAoX2luc2lkZUxpbmsgPT0gb3RoZXIuX2luc2lkZUxpbmspCiAgICAgICAgICAgICAgICAgJiYg
KG1fd3JpdGluZ01vZGUgPT0gb3RoZXIubV93cml0aW5nTW9kZSk7CkBAIC0yMDgsNyArMjA4LDcg
QEAgcHJvdGVjdGVkOgogICAgICAgICAKICAgICAgICAgLy8gbm9uIENTUzIgaW5oZXJpdGVkCiAg
ICAgICAgIHVuc2lnbmVkIGNoYXIgbV9ydGxPcmRlcmluZyA6IDE7IC8vIE9yZGVyCi0gICAgICAg
IGJvb2wgX2ZvcmNlX2JhY2tncm91bmRzX3RvX3doaXRlIDogMTsKKyAgICAgICAgdW5zaWduZWQg
Y2hhciBtX3ByaW50Q29sb3JBZGp1c3QgOiBQcmludENvbG9yQWRqdXN0Qml0czsKICAgICAgICAg
dW5zaWduZWQgY2hhciBfcG9pbnRlckV2ZW50cyA6IDQ7IC8vIEVQb2ludGVyRXZlbnRzCiAgICAg
ICAgIHVuc2lnbmVkIGNoYXIgX2luc2lkZUxpbmsgOiAyOyAvLyBFSW5zaWRlTGluawogICAgICAg
ICAvLyA0MyBiaXRzCkBAIC0yODgsNyArMjg4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBpbmhl
cml0ZWRfZmxhZ3MuX3doaXRlX3NwYWNlID0gaW5pdGlhbFdoaXRlU3BhY2UoKTsKICAgICAgICAg
aW5oZXJpdGVkX2ZsYWdzLm1fcnRsT3JkZXJpbmcgPSBpbml0aWFsUlRMT3JkZXJpbmcoKTsKICAg
ICAgICAgaW5oZXJpdGVkX2ZsYWdzLl9ib3hfZGlyZWN0aW9uID0gaW5pdGlhbEJveERpcmVjdGlv
bigpOwotICAgICAgICBpbmhlcml0ZWRfZmxhZ3MuX2ZvcmNlX2JhY2tncm91bmRzX3RvX3doaXRl
ID0gZmFsc2U7CisgICAgICAgIGluaGVyaXRlZF9mbGFncy5tX3ByaW50Q29sb3JBZGp1c3QgPSBp
bml0aWFsUHJpbnRDb2xvckFkanVzdCgpOwogICAgICAgICBpbmhlcml0ZWRfZmxhZ3MuX3BvaW50
ZXJFdmVudHMgPSBpbml0aWFsUG9pbnRlckV2ZW50cygpOwogICAgICAgICBpbmhlcml0ZWRfZmxh
Z3MuX2luc2lkZUxpbmsgPSBOb3RJbnNpZGVMaW5rOwogICAgICAgICBpbmhlcml0ZWRfZmxhZ3Mu
bV93cml0aW5nTW9kZSA9IGluaXRpYWxXcml0aW5nTW9kZSgpOwpAQCAtMTA3Myw4ICsxMDczLDgg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0SW5zaWRlTGluayhFSW5zaWRlTGluayBpbnNpZGVMaW5r
KSB7IGluaGVyaXRlZF9mbGFncy5faW5zaWRlTGluayA9IGluc2lkZUxpbms7IH0KICAgICB2b2lk
IHNldElzTGluayhib29sIGIpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLl9pc0xpbmsgPSBiOyB9CiAK
LSAgICBib29sIGZvcmNlQmFja2dyb3VuZHNUb1doaXRlKCkgY29uc3QgeyByZXR1cm4gaW5oZXJp
dGVkX2ZsYWdzLl9mb3JjZV9iYWNrZ3JvdW5kc190b193aGl0ZTsgfQotICAgIHZvaWQgc2V0Rm9y
Y2VCYWNrZ3JvdW5kc1RvV2hpdGUoYm9vbCBiPXRydWUpIHsgaW5oZXJpdGVkX2ZsYWdzLl9mb3Jj
ZV9iYWNrZ3JvdW5kc190b193aGl0ZSA9IGI7IH0KKyAgICBQcmludENvbG9yQWRqdXN0IHByaW50
Q29sb3JBZGp1c3QoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQcmludENvbG9yQWRqdXN0
Pihpbmhlcml0ZWRfZmxhZ3MubV9wcmludENvbG9yQWRqdXN0KTsgfQorICAgIHZvaWQgc2V0UHJp
bnRDb2xvckFkanVzdChQcmludENvbG9yQWRqdXN0IHZhbHVlKSB7IGluaGVyaXRlZF9mbGFncy5t
X3ByaW50Q29sb3JBZGp1c3QgPSB2YWx1ZTsgfQogCiAgICAgYm9vbCBoYXNBdXRvWkluZGV4KCkg
Y29uc3QgeyByZXR1cm4gbV9ib3gtPmhhc0F1dG9aSW5kZXgoKTsgfQogICAgIHZvaWQgc2V0SGFz
QXV0b1pJbmRleCgpIHsgU0VUX1ZBUihtX2JveCwgbV9oYXNBdXRvWkluZGV4LCB0cnVlKTsgU0VU
X1ZBUihtX2JveCwgbV96SW5kZXgsIDApIH0KQEAgLTE0NjAsNiArMTQ2MCw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgRUltYWdlUmVuZGVyaW5nIGluaXRpYWxJbWFnZVJlbmRlcmluZygpIHsgcmV0
dXJuIEltYWdlUmVuZGVyaW5nQXV0bzsgfQogICAgIHN0YXRpYyBTdHlsZUltYWdlKiBpbml0aWFs
Qm9yZGVySW1hZ2VTb3VyY2UoKSB7IHJldHVybiAwOyB9CiAgICAgc3RhdGljIFN0eWxlSW1hZ2Uq
IGluaXRpYWxNYXNrQm94SW1hZ2VTb3VyY2UoKSB7IHJldHVybiAwOyB9CisgICAgc3RhdGljIFBy
aW50Q29sb3JBZGp1c3QgaW5pdGlhbFByaW50Q29sb3JBZGp1c3QoKSB7IHJldHVybiBQcmludENv
bG9yQWRqdXN0RWNvbm9teTsgfQogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgaW5p
dGlhbEZsb3dUaHJlYWQoKSB7IHJldHVybiBudWxsQXRvbTsgfQogICAgIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIGluaXRpYWxSZWdpb25UaHJlYWQoKSB7IHJldHVybiBudWxsQXRvbTsgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlQ29uc3RhbnRzLmgJKHJldmlzaW9uIDk4MDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYg
KzM2LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAqIGluIENTU1ZhbHVlS2V5d29yZHMuaW4s
IG90aGVyd2lzZSBzb21lIG9wdGltaXphdGlvbnMgaW4gdGhlIHBhcnNlciB3aWxsIGZhaWwsCiAg
KiBhbmQgcHJvZHVjZSBpbnZhbGlkIHJlc3VsdHMuCiAgKi8KK3N0YXRpYyBjb25zdCBzaXplX3Qg
UHJpbnRDb2xvckFkanVzdEJpdHMgPSAxOworZW51bSBQcmludENvbG9yQWRqdXN0IHsKKyAgICBQ
cmludENvbG9yQWRqdXN0RWNvbm9teSwKKyAgICBQcmludENvbG9yQWRqdXN0RXhhY3QKK307CiAK
IC8vIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIHN0eWxlcy4gIFRoZSBmb2xsb3dpbmcgdmFs
dWVzIGFyZSB1c2VkOgogLy8gKDEpIFN0eWxlRGlmZmVyZW5jZUVxdWFsIC0gVGhlIHR3byBzdHls
ZXMgYXJlIGlkZW50aWNhbApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3Mvd2Via2l0LWNvbG9y
LWFkanVzdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
d2Via2l0LWNvbG9yLWFkanVzdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2Nzcy93ZWJraXQtY29sb3ItYWRqdXN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyIEBACitTVUNDRVNTCitTVUNDRVNTCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy93ZWJraXQtY29sb3ItYWRqdXN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9jc3Mvd2Via2l0LWNvbG9yLWFkanVzdC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9jc3Mvd2Via2l0LWNvbG9yLWFkanVzdC5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDI4IEBACis8aGVhZD4KKzxzY3JpcHQ+Cit2YXIgb3V0cHV0ID0gW107CisKK2Z1
bmN0aW9uIHRlc3QoaWQsIGV4cGVjdGVkKSB7CisgICAgdmFyIGFkanVzdCA9IHdpbmRvdy5nZXRD
b21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSkud2Via2l0UHJpbnRDb2xv
ckFkanVzdDsKKyAgICBpZiAoYWRqdXN0ID09IGV4cGVjdGVkKQorICAgICAgICBvdXRwdXQucHVz
aCgiU1VDQ0VTUyIpOworICAgIGVsc2UKKyAgICAgICAgb3V0cHV0LnB1c2goIkZBSUxVUkUuICAt
d2Via2l0LXByaW50LWNvbG9yLWFkanVzdCB3YXMgIiArIGFkanVzdCArICIsIGl0IHNob3VsZCBo
YXZlIGJlZW4gIiArIGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdHMoKSB7CisgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgd2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIHRlc3QoImVjb25vbXkiLCAiZWNvbm9t
eSIpOworICAgIHRlc3QoImV4YWN0IiwgImV4YWN0Iik7CisKKyAgICBkb2N1bWVudC5ib2R5Lmlu
bmVySFRNTCA9IG91dHB1dC5qb2luKCJcbiIpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IG9uTG9hZD0icnVuVGVzdHMoKTsiIHN0eWxlPSJ3aGl0ZS1zcGFjZTogcHJlLXdyYXA7Ij4K
KzxkaXYgaWQ9ImVjb25vbXkiIHN0eWxlPSItd2Via2l0LXByaW50LWNvbG9yLWFkanVzdDplY29u
b215OyI+PC9kaXY+Cis8ZGl2IGlkPSJleGFjdCIgc3R5bGU9Ii13ZWJraXQtcHJpbnQtY29sb3It
YWRqdXN0OmV4YWN0OyI+PC9kaXY+Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy9nZXRDb21wdXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxl
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTgwMzEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9n
ZXRDb21wdXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMTc1LDYgKzE3NSw3IEBAIHpvb206IDE7CiAtd2Via2l0LW5ic3AtbW9kZTogbm9ybWFs
OwogLXdlYmtpdC1wZXJzcGVjdGl2ZTogbm9uZTsKIC13ZWJraXQtcGVyc3BlY3RpdmUtb3JpZ2lu
OiAzOTJweCAyODhweDsKKy13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OiBlY29ub215OwogLXdl
YmtpdC1ydGwtb3JkZXJpbmc6IGxvZ2ljYWw7CiAtd2Via2l0LXRleHQtY29tYmluZTogbm9uZTsK
IC13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3Q6IG5vbmU7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxlLXdpdGhvdXQtcmVu
ZGVyZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2dl
dENvbXB1dGVkU3R5bGUvY29tcHV0ZWQtc3R5bGUtd2l0aG91dC1yZW5kZXJlci1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDk4MDMxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRT
dHlsZS9jb21wdXRlZC1zdHlsZS13aXRob3V0LXJlbmRlcmVyLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMTc0LDYgKzE3NCw3IEBAIENvbXB1dGVkIHN0eWxlIG9mIGFuIGVsZW1lbnQg
d2hvc2UgcGFyZW4KICAgICAtd2Via2l0LW5ic3AtbW9kZTogbm9ybWFsCiAgICAgLXdlYmtpdC1w
ZXJzcGVjdGl2ZTogbm9uZQogICAgIC13ZWJraXQtcGVyc3BlY3RpdmUtb3JpZ2luOiA1MCUgNTAl
CisgICAgLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6IGVjb25vbXkKICAgICAtd2Via2l0LXJ0
bC1vcmRlcmluZzogbG9naWNhbAogICAgIC13ZWJraXQtdGV4dC1jb21iaW5lOiBub25lCiAgICAg
LXdlYmtpdC10ZXh0LWRlY29yYXRpb25zLWluLWVmZmVjdDogbm9uZQpJbmRleDogTGF5b3V0VGVz
dHMvc3ZnL2Nzcy9nZXRDb21wdXRlZFN0eWxlLWJhc2ljLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9zdmcvY3NzL2dldENvbXB1dGVkU3R5bGUtYmFzaWMtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA5ODAzMSkKKysrIExheW91dFRlc3RzL3N2Zy9jc3MvZ2V0Q29tcHV0ZWRT
dHlsZS1iYXNpYy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM0OCw2ICszNDgsOCBA
QCByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtcGVyCiByZWN0OiBzdHlsZS5n
ZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtcGVyc3BlY3RpdmUpIDogW29iamVjdCBDU1NQcmlt
aXRpdmVWYWx1ZV0KIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtpdC1wZXJzcGVj
dGl2ZS1vcmlnaW4pIDogMHB4IDBweAogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgt
d2Via2l0LXBlcnNwZWN0aXZlLW9yaWdpbikgOiBbb2JqZWN0IENTU1ZhbHVlTGlzdF0KK3JlY3Q6
IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3QpIDogZWNv
bm9teQorcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LXByaW50LWNvbG9y
LWFkanVzdCkgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVlXQogcmVjdDogc3R5bGUuZ2V0UHJv
cGVydHlWYWx1ZSgtd2Via2l0LXJ0bC1vcmRlcmluZykgOiBsb2dpY2FsCiByZWN0OiBzdHlsZS5n
ZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtcnRsLW9yZGVyaW5nKSA6IFtvYmplY3QgQ1NTUHJp
bWl0aXZlVmFsdWVdCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtdGV4dC1j
b21iaW5lKSA6IG5vbmUKQEAgLTgyOCw2ICs4MzAsOCBAQCBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZh
bHVlKC13ZWJraXQtcGVyc3BlCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQt
cGVyc3BlY3RpdmUpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KIGc6IHN0eWxlLmdldFBy
b3BlcnR5VmFsdWUoLXdlYmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW4pIDogMHB4IDBweAogZzogc3R5
bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LXBlcnNwZWN0aXZlLW9yaWdpbikgOiBbb2Jq
ZWN0IENTU1ZhbHVlTGlzdF0KK2c6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtpdC1wcmlu
dC1jb2xvci1hZGp1c3QpIDogZWNvbm9teQorZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgt
d2Via2l0LXByaW50LWNvbG9yLWFkanVzdCkgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVlXQog
Zzogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LXJ0bC1vcmRlcmluZykgOiBsb2dpY2Fs
CiBnOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtcnRsLW9yZGVyaW5nKSA6IFtv
YmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVdCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJr
aXQtdGV4dC1jb21iaW5lKSA6IG5vbmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112131</attachid>
            <date>2011-10-23 17:57:57 -0700</date>
            <delta_ts>2011-11-01 16:47:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64583-20111024115755.patch</filename>
            <type>text/plain</type>
            <size>22441</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4MjAzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMTAtMjMgIEx1a2UgTWFj
cGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBXSVA6IEFkZCBD
U1MgcHJvcGVydHkgdG8gY29udHJvbCBwcmludGluZyBvZiBiYWNrZ3JvdW5kcyBmb3IgaW5kaXZp
ZHVhbCBlbGVtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY0NTgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkZWQgdGVzdCBMYXlvdXRUZXN0cy9mYXN0L2Nzcy93ZWJraXQtY29sb3ItYWRqdXN0
Lmh0bWwsCisgICAgICAgIFVwZGF0ZWQgdGVzdHMgdW5kZXIgTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Z2V0Q29tcHV0ZWRTdHlsZQorICAgICAgICBVcGRhdGVkIHRlc3QgdW5kZXIgTGF5b3V0VGVzdHMv
c3ZnL2NzcworCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3Bl
cnR5Q1NTVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlO
YW1lcy5pbjoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckRvY3VtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6CisgICAgICAgICogcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFn
czo6aW5pdGlhbEZvcmNlQmFja2dyb3VuZHNUb1doaXRlKToKKwogMjAxMS0xMC0yMyAgTWFyayBI
YWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBnZXRD
b25zdHJ1Y3REYXRhVmlydHVhbApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDk4MjAzKQorKysgU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI0OSw2ICsyNDksNyBAQCBzdGF0aWMgY29uc3QgaW50IGNvbXB1dGVkUHJvcGVydGll
c1tdID0gCiAgICAgQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwKICAgICBDU1NQcm9wZXJ0eVdl
YmtpdFBlcnNwZWN0aXZlLAogICAgIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW4s
CisgICAgQ1NTUHJvcGVydHlXZWJraXRQcmludENvbG9yQWRqdXN0LAogICAgIENTU1Byb3BlcnR5
V2Via2l0UnRsT3JkZXJpbmcsCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdFRhcEhpZ2hsaWdodENvbG9yLApAQCAtMTMzNCw2ICsxMzM1LDggQEAgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlYwogICAgICAgICAgICAgcmV0dXJuIHBy
aW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZVZhbHVlKHN0eWxlLT5jbGVhcigpKTsKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUNvbG9yOgogICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVl
Q2FjaGUtPmNyZWF0ZUNvbG9yVmFsdWUobV9hbGxvd1Zpc2l0ZWRTdHlsZSA/IHN0eWxlLT52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikucmdiKCkgOiBzdHlsZS0+Y29sb3Io
KS5yZ2IoKSk7CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQcmludENvbG9yQWRqdXN0
OgorICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZVZhbHVlKHN0
eWxlLT5wcmludENvbG9yQWRqdXN0KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Q29sdW1uQ291bnQ6CiAgICAgICAgICAgICBpZiAoc3R5bGUtPmhhc0F1dG9Db2x1bW5Db3VudCgp
KQogICAgICAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3Bw
CShyZXZpc2lvbiA5ODIwMykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjk1LDYgKzE2OTUsMTAgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNl
VmFsdWUoaW50IHByb3BJZCwgYgogICAgICAgICBpZiAodmFsdWUtPmlkID09IENTU1ZhbHVlVmlz
aWJsZSB8fCB2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVIaWRkZW4pCiAgICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRQcmludENvbG9yQWRqdXN0OgorICAgICAgICBpZiAodmFsdWUtPmlkID09IENTU1ZhbHVlRXhh
Y3QgfHwgdmFsdWUtPmlkID09IENTU1ZhbHVlRWNvbm9teSkKKyAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFBlcnNwZWN0aXZlOgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAg
ICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCShyZXZpc2lvbiA5ODIwMykKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzMCw2ICsxMzAsMzUgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9w
ZQogICAgIHJldHVybiAwLjBmOwogfQogCisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShQcmludENvbG9yQWRqdXN0IHZhbHVlKQorICAgIDog
bV90eXBlKENTU19JREVOVCkKKyAgICAsIG1faGFzQ2FjaGVkQ1NTVGV4dChmYWxzZSkKK3sKKyAg
ICBzd2l0Y2ggKHZhbHVlKSB7CisgICAgY2FzZSBQcmludENvbG9yQWRqdXN0RXhhY3Q6CisgICAg
ICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NWYWx1ZUV4YWN0OworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFByaW50Q29sb3JBZGp1c3RFY29ub215OgorICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NT
VmFsdWVFY29ub215OworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gaW5s
aW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBQcmludENvbG9yQWRqdXN0KCkgY29uc3QK
K3sKKyAgICBzd2l0Y2ggKG1fdmFsdWUuaWRlbnQpIHsKKyAgICBjYXNlIENTU1ZhbHVlRWNvbm9t
eToKKyAgICAgICAgcmV0dXJuIFByaW50Q29sb3JBZGp1c3RFY29ub215OworICAgIGNhc2UgQ1NT
VmFsdWVFeGFjdDoKKyAgICAgICAgcmV0dXJuIFByaW50Q29sb3JBZGp1c3RFeGFjdDsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFBy
aW50Q29sb3JBZGp1c3RFY29ub215OworICAgIH0KK30KKworCiB0ZW1wbGF0ZTw+IGlubGluZSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRUJvcmRlclN0eWxlIGUpCiAgICAg
OiBtX3R5cGUoQ1NTX0lERU5UKQogICAgICwgbV9oYXNDYWNoZWRDU1NUZXh0KGZhbHNlKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4JKHJldmlzaW9uIDk4MjAzKQor
KysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4JKHdvcmtpbmcgY29weSkK
QEAgLTMxOCw2ICszMTgsNyBAQCB6LWluZGV4CiAtd2Via2l0LXBlcnNwZWN0aXZlLW9yaWdpbgog
LXdlYmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW4teAogLXdlYmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW4t
eQorLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3QKIC13ZWJraXQtcnRsLW9yZGVyaW5nCiAtd2Vi
a2l0LXRleHQtY29tYmluZQogLWVwdWItdGV4dC1jb21iaW5lID0gLXdlYmtpdC10ZXh0LWNvbWJp
bmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9u
IDk4MjAzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTU3LDggKzExNTcsNiBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBD
U1NTdHlsZVNlbGVjdG9yCiAgICAgZm9udERlc2NyaXB0aW9uLnNldFVzZVByaW50ZXJGb250KGRv
Y3VtZW50LT5wcmludGluZygpKTsKICAgICBpZiAoU2V0dGluZ3MqIHNldHRpbmdzID0gZG9jdW1l
bnQtPnNldHRpbmdzKCkpIHsKICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFJlbmRlcmluZ01v
ZGUoc2V0dGluZ3MtPmZvbnRSZW5kZXJpbmdNb2RlKCkpOwotICAgICAgICBpZiAoZG9jdW1lbnQt
PnByaW50aW5nKCkgJiYgIXNldHRpbmdzLT5zaG91bGRQcmludEJhY2tncm91bmRzKCkpCi0gICAg
ICAgICAgICBkb2N1bWVudFN0eWxlLT5zZXRGb3JjZUJhY2tncm91bmRzVG9XaGl0ZSh0cnVlKTsK
ICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzdGRmb250ID0gc2V0dGluZ3MtPnN0YW5kYXJk
Rm9udEZhbWlseSgpOwogICAgICAgICBpZiAoIXN0ZGZvbnQuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVzY3JpcHRpb246OlN0
YW5kYXJkRmFtaWx5KTsKQEAgLTMyMzEsNiArMzIyOSw5IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rv
cjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICBjYXNlIENTU1Byb3BlcnR5Qm94U2l6aW5nOgogICAg
ICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKGJveFNpemluZywg
Qm94U2l6aW5nKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQ
cmludENvbG9yQWRqdXN0OgorICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRf
UFJJTUlUSVZFKHByaW50Q29sb3JBZGp1c3QsIFByaW50Q29sb3JBZGp1c3QpOworICAgICAgICBy
ZXR1cm47CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblNwYW46IHsKICAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoY29sdW1uU3BhbiwgQ29sdW1uU3BhbikKICAgICAg
ICAgbV9zdHlsZS0+c2V0Q29sdW1uU3BhbihwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBD
U1NWYWx1ZUFsbCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5p
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgko
cmV2aXNpb24gOTgyMDMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5p
bgkod29ya2luZyBjb3B5KQpAQCAtNzU3LDYgKzc1NywxMCBAQCBvcHRpbWl6ZVNwZWVkCiBvcHRp
bWl6ZUxlZ2liaWxpdHkKIGdlb21ldHJpY1ByZWNpc2lvbgogCisvLyAtd2Via2l0LWNvbG9yLWFk
anVzdAorZWNvbm9teQorZXhhY3QKKwogLy8gLXdlYmtpdC1jb2xvci1jb3JyZWN0aW9uCiAvL2Rl
ZmF1bHQKIHNSR0IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJv
eC5jcHAJKHJldmlzaW9uIDk4MjAzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZVRleHRCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAi
UmVuZGVyUnVieVJ1bi5oIgogI2luY2x1ZGUgIlJlbmRlclJ1YnlUZXh0LmgiCiAjaW5jbHVkZSAi
UmVuZGVyVGhlbWUuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNWR1RleHRS
dW5SZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgImJyZWFr
X2xpbmVzLmgiCkBAIC01NzUsMjAgKzU3NiwyOCBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50
KFBhaW50SW5mbyYgcGFpCiAgICAgfSBlbHNlIHsKICAgICAgICAgdGV4dEZpbGxDb2xvciA9IHN0
eWxlVG9Vc2UtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxs
Q29sb3IpOwogICAgICAgICAKKyAgICAgICAgYm9vbCBmb3JjZUJhY2tncm91bmRUb1doaXRlID0g
ZmFsc2U7CisgICAgICAgIGlmIChpc1ByaW50aW5nKSB7CisgICAgICAgICAgICBpZiAoc3R5bGVU
b1VzZS0+cHJpbnRDb2xvckFkanVzdCgpID09IFByaW50Q29sb3JBZGp1c3RFY29ub215KQorICAg
ICAgICAgICAgICAgIGZvcmNlQmFja2dyb3VuZFRvV2hpdGUgPSB0cnVlOworICAgICAgICAgICAg
aWYgKHRleHRSZW5kZXJlcigpLT5kb2N1bWVudCgpLT5zZXR0aW5ncygpICYmIHRleHRSZW5kZXJl
cigpLT5kb2N1bWVudCgpLT5zZXR0aW5ncygpLT5zaG91bGRQcmludEJhY2tncm91bmRzKCkpCisg
ICAgICAgICAgICAgICAgZm9yY2VCYWNrZ3JvdW5kVG9XaGl0ZSA9IGZhbHNlOworICAgICAgICB9
CisKICAgICAgICAgLy8gTWFrZSB0aGUgdGV4dCBmaWxsIGNvbG9yIGxlZ2libGUgYWdhaW5zdCBh
IHdoaXRlIGJhY2tncm91bmQKLSAgICAgICAgaWYgKHN0eWxlVG9Vc2UtPmZvcmNlQmFja2dyb3Vu
ZHNUb1doaXRlKCkpCisgICAgICAgIGlmIChmb3JjZUJhY2tncm91bmRUb1doaXRlKQogICAgICAg
ICAgICAgdGV4dEZpbGxDb2xvciA9IGNvcnJlY3RlZFRleHRDb2xvcih0ZXh0RmlsbENvbG9yLCBD
b2xvcjo6d2hpdGUpOwogCiAgICAgICAgIHRleHRTdHJva2VDb2xvciA9IHN0eWxlVG9Vc2UtPnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvcik7CiAg
ICAgICAgIAogICAgICAgICAvLyBNYWtlIHRoZSB0ZXh0IHN0cm9rZSBjb2xvciBsZWdpYmxlIGFn
YWluc3QgYSB3aGl0ZSBiYWNrZ3JvdW5kCi0gICAgICAgIGlmIChzdHlsZVRvVXNlLT5mb3JjZUJh
Y2tncm91bmRzVG9XaGl0ZSgpKQorICAgICAgICBpZiAoZm9yY2VCYWNrZ3JvdW5kVG9XaGl0ZSkK
ICAgICAgICAgICAgIHRleHRTdHJva2VDb2xvciA9IGNvcnJlY3RlZFRleHRDb2xvcih0ZXh0U3Ry
b2tlQ29sb3IsIENvbG9yOjp3aGl0ZSk7CiAKICAgICAgICAgZW1waGFzaXNNYXJrQ29sb3IgPSBz
dHlsZVRvVXNlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1w
aGFzaXNDb2xvcik7CiAgICAgICAgIAogICAgICAgICAvLyBNYWtlIHRoZSB0ZXh0IHN0cm9rZSBj
b2xvciBsZWdpYmxlIGFnYWluc3QgYSB3aGl0ZSBiYWNrZ3JvdW5kCi0gICAgICAgIGlmIChzdHls
ZVRvVXNlLT5mb3JjZUJhY2tncm91bmRzVG9XaGl0ZSgpKQorICAgICAgICBpZiAoZm9yY2VCYWNr
Z3JvdW5kVG9XaGl0ZSkKICAgICAgICAgICAgIGVtcGhhc2lzTWFya0NvbG9yID0gY29ycmVjdGVk
VGV4dENvbG9yKGVtcGhhc2lzTWFya0NvbG9yLCBDb2xvcjo6d2hpdGUpOwogICAgIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
Y3BwCShyZXZpc2lvbiA5ODIwMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNs
dWRlICJSZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUg
IlJlbmRlclZpZXcuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtNjEzLDEzICs2MTQsMjIgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZQogICAgIFN0eWxlSW1hZ2Uq
IGJnSW1hZ2UgPSBiZ0xheWVyLT5pbWFnZSgpOwogICAgIGJvb2wgc2hvdWxkUGFpbnRCYWNrZ3Jv
dW5kSW1hZ2UgPSBiZ0ltYWdlICYmIGJnSW1hZ2UtPmNhblJlbmRlcih0aGlzLCBzdHlsZSgpLT5l
ZmZlY3RpdmVab29tKCkpOwogICAgIAotICAgIC8vIFdoZW4gdGhpcyBzdHlsZSBmbGFnIGlzIHNl
dCwgY2hhbmdlIGV4aXN0aW5nIGJhY2tncm91bmQgY29sb3JzIGFuZCBpbWFnZXMgdG8gYSBzb2xp
ZCB3aGl0ZSBiYWNrZ3JvdW5kLgorICAgIGJvb2wgZm9yY2VCYWNrZ3JvdW5kVG9XaGl0ZSA9IGZh
bHNlOworICAgIGlmIChkb2N1bWVudCgpLT5wcmludGluZygpKSB7CisgICAgICAgIGlmIChzdHls
ZSgpLT5wcmludENvbG9yQWRqdXN0KCkgPT0gUHJpbnRDb2xvckFkanVzdEVjb25vbXkpCisgICAg
ICAgICAgICBmb3JjZUJhY2tncm91bmRUb1doaXRlID0gdHJ1ZTsKKyAgICAgICAgaWYgKGRvY3Vt
ZW50KCktPnNldHRpbmdzKCkgJiYgZG9jdW1lbnQoKS0+c2V0dGluZ3MoKS0+c2hvdWxkUHJpbnRC
YWNrZ3JvdW5kcygpKQorICAgICAgICAgICAgZm9yY2VCYWNrZ3JvdW5kVG9XaGl0ZSA9IGZhbHNl
OworICAgIH0KKworICAgIC8vIFdoZW4gcHJpbnRpbmcgYmFja2dyb3VuZHMgaXMgZGlzYWJsZWQg
b3IgdXNpbmcgZWNvbm9teSBtb2RlLAorICAgIC8vIGNoYW5nZSBleGlzdGluZyBiYWNrZ3JvdW5k
IGNvbG9ycyBhbmQgaW1hZ2VzIHRvIGEgc29saWQgd2hpdGUgYmFja2dyb3VuZC4KICAgICAvLyBJ
ZiB0aGVyZSdzIG5vIGJnIGNvbG9yIG9yIGltYWdlLCBsZWF2ZSBpdCB1bnRvdWNoZWQgdG8gYXZv
aWQgYWZmZWN0aW5nIHRyYW5zcGFyZW5jeS4KICAgICAvLyBXZSBkb24ndCB0cnkgdG8gYXZvaWQg
bG9hZGluZyB0aGUgYmFja2dyb3VuZCBpbWFnZXMsIGJlY2F1c2UgdGhpcyBzdHlsZSBmbGFnIGlz
IG9ubHkgc2V0CiAgICAgLy8gd2hlbiBwcmludGluZywgYW5kIGF0IHRoYXQgcG9pbnQgd2UndmUg
YWxyZWFkeSBsb2FkZWQgdGhlIGJhY2tncm91bmQgaW1hZ2VzIGFueXdheS4gKFRvIGF2b2lkCiAg
ICAgLy8gbG9hZGluZyB0aGUgYmFja2dyb3VuZCBpbWFnZXMgd2UnZCBoYXZlIHRvIGRvIHRoaXMg
Y2hlY2sgd2hlbiBhcHBseWluZyBzdHlsZXMgcmF0aGVyIHRoYW4KICAgICAvLyB3aGlsZSByZW5k
ZXJpbmcuKQotICAgIGlmIChzdHlsZSgpLT5mb3JjZUJhY2tncm91bmRzVG9XaGl0ZSgpKSB7Cisg
ICAgaWYgKGZvcmNlQmFja2dyb3VuZFRvV2hpdGUpIHsKICAgICAgICAgLy8gTm90ZSB0aGF0IHdl
IGNhbid0IHJldXNlIHRoaXMgdmFyaWFibGUgYmVsb3cgYmVjYXVzZSB0aGUgYmdDb2xvciBtaWdo
dCBiZSBjaGFuZ2VkCiAgICAgICAgIGJvb2wgc2hvdWxkUGFpbnRCYWNrZ3JvdW5kQ29sb3IgPSAh
YmdMYXllci0+bmV4dCgpICYmIGJnQ29sb3IuaXNWYWxpZCgpICYmIGJnQ29sb3IuYWxwaGEoKSA+
IDA7CiAgICAgICAgIGlmIChzaG91bGRQYWludEJhY2tncm91bmRJbWFnZSB8fCBzaG91bGRQYWlu
dEJhY2tncm91bmRDb2xvcikgewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuY3BwCShyZXZpc2lvbiA5ODIwMykKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2Niw3
ICs1NjYsNyBAQCBTdHlsZURpZmZlcmVuY2UgUmVuZGVyU3R5bGU6OmRpZmYoY29uc3QgCiAgICAg
aWYgKGluaGVyaXRlZC0+Y29sb3IgIT0gb3RoZXItPmluaGVyaXRlZC0+Y29sb3IKICAgICAgICAg
fHwgaW5oZXJpdGVkX2ZsYWdzLl92aXNpYmlsaXR5ICE9IG90aGVyLT5pbmhlcml0ZWRfZmxhZ3Mu
X3Zpc2liaWxpdHkKICAgICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2RlY29yYXRpb25z
ICE9IG90aGVyLT5pbmhlcml0ZWRfZmxhZ3MuX3RleHRfZGVjb3JhdGlvbnMKLSAgICAgICAgfHwg
aW5oZXJpdGVkX2ZsYWdzLl9mb3JjZV9iYWNrZ3JvdW5kc190b193aGl0ZSAhPSBvdGhlci0+aW5o
ZXJpdGVkX2ZsYWdzLl9mb3JjZV9iYWNrZ3JvdW5kc190b193aGl0ZQorICAgICAgICB8fCBpbmhl
cml0ZWRfZmxhZ3MubV9wcmludENvbG9yQWRqdXN0ICE9IG90aGVyLT5pbmhlcml0ZWRfZmxhZ3Mu
bV9wcmludENvbG9yQWRqdXN0CiAgICAgICAgIHx8IGluaGVyaXRlZF9mbGFncy5faW5zaWRlTGlu
ayAhPSBvdGhlci0+aW5oZXJpdGVkX2ZsYWdzLl9pbnNpZGVMaW5rCiAgICAgICAgIHx8IHN1cnJv
dW5kLT5ib3JkZXIgIT0gb3RoZXItPnN1cnJvdW5kLT5ib3JkZXIKICAgICAgICAgfHwgKm1fYmFj
a2dyb3VuZC5nZXQoKSAhPSAqb3RoZXItPm1fYmFja2dyb3VuZC5nZXQoKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHJldmlzaW9uIDk4MjAz
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE4Myw3ICsxODMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICAgICAg
JiYgKF93aGl0ZV9zcGFjZSA9PSBvdGhlci5fd2hpdGVfc3BhY2UpCiAgICAgICAgICAgICAgICAg
JiYgKF9ib3hfZGlyZWN0aW9uID09IG90aGVyLl9ib3hfZGlyZWN0aW9uKQogICAgICAgICAgICAg
ICAgICYmIChtX3J0bE9yZGVyaW5nID09IG90aGVyLm1fcnRsT3JkZXJpbmcpCi0gICAgICAgICAg
ICAgICAgJiYgKF9mb3JjZV9iYWNrZ3JvdW5kc190b193aGl0ZSA9PSBvdGhlci5fZm9yY2VfYmFj
a2dyb3VuZHNfdG9fd2hpdGUpCisgICAgICAgICAgICAgICAgJiYgKG1fcHJpbnRDb2xvckFkanVz
dCA9PSBvdGhlci5tX3ByaW50Q29sb3JBZGp1c3QpCiAgICAgICAgICAgICAgICAgJiYgKF9wb2lu
dGVyRXZlbnRzID09IG90aGVyLl9wb2ludGVyRXZlbnRzKQogICAgICAgICAgICAgICAgICYmIChf
aW5zaWRlTGluayA9PSBvdGhlci5faW5zaWRlTGluaykKICAgICAgICAgICAgICAgICAmJiAobV93
cml0aW5nTW9kZSA9PSBvdGhlci5tX3dyaXRpbmdNb2RlKTsKQEAgLTIwOCw3ICsyMDgsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgIAogICAgICAgICAvLyBub24gQ1NTMiBpbmhlcml0ZWQKICAgICAg
ICAgdW5zaWduZWQgY2hhciBtX3J0bE9yZGVyaW5nIDogMTsgLy8gT3JkZXIKLSAgICAgICAgYm9v
bCBfZm9yY2VfYmFja2dyb3VuZHNfdG9fd2hpdGUgOiAxOworICAgICAgICB1bnNpZ25lZCBjaGFy
IG1fcHJpbnRDb2xvckFkanVzdCA6IFByaW50Q29sb3JBZGp1c3RCaXRzOwogICAgICAgICB1bnNp
Z25lZCBjaGFyIF9wb2ludGVyRXZlbnRzIDogNDsgLy8gRVBvaW50ZXJFdmVudHMKICAgICAgICAg
dW5zaWduZWQgY2hhciBfaW5zaWRlTGluayA6IDI7IC8vIEVJbnNpZGVMaW5rCiAgICAgICAgIC8v
IDQzIGJpdHMKQEAgLTI4OCw3ICsyODgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGluaGVyaXRl
ZF9mbGFncy5fd2hpdGVfc3BhY2UgPSBpbml0aWFsV2hpdGVTcGFjZSgpOwogICAgICAgICBpbmhl
cml0ZWRfZmxhZ3MubV9ydGxPcmRlcmluZyA9IGluaXRpYWxSVExPcmRlcmluZygpOwogICAgICAg
ICBpbmhlcml0ZWRfZmxhZ3MuX2JveF9kaXJlY3Rpb24gPSBpbml0aWFsQm94RGlyZWN0aW9uKCk7
Ci0gICAgICAgIGluaGVyaXRlZF9mbGFncy5fZm9yY2VfYmFja2dyb3VuZHNfdG9fd2hpdGUgPSBm
YWxzZTsKKyAgICAgICAgaW5oZXJpdGVkX2ZsYWdzLm1fcHJpbnRDb2xvckFkanVzdCA9IGluaXRp
YWxQcmludENvbG9yQWRqdXN0KCk7CiAgICAgICAgIGluaGVyaXRlZF9mbGFncy5fcG9pbnRlckV2
ZW50cyA9IGluaXRpYWxQb2ludGVyRXZlbnRzKCk7CiAgICAgICAgIGluaGVyaXRlZF9mbGFncy5f
aW5zaWRlTGluayA9IE5vdEluc2lkZUxpbms7CiAgICAgICAgIGluaGVyaXRlZF9mbGFncy5tX3dy
aXRpbmdNb2RlID0gaW5pdGlhbFdyaXRpbmdNb2RlKCk7CkBAIC0xMDczLDggKzEwNzMsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRJbnNpZGVMaW5rKEVJbnNpZGVMaW5rIGluc2lkZUxpbmspIHsg
aW5oZXJpdGVkX2ZsYWdzLl9pbnNpZGVMaW5rID0gaW5zaWRlTGluazsgfQogICAgIHZvaWQgc2V0
SXNMaW5rKGJvb2wgYikgeyBub25pbmhlcml0ZWRfZmxhZ3MuX2lzTGluayA9IGI7IH0KIAotICAg
IGJvb2wgZm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWRf
ZmxhZ3MuX2ZvcmNlX2JhY2tncm91bmRzX3RvX3doaXRlOyB9Ci0gICAgdm9pZCBzZXRGb3JjZUJh
Y2tncm91bmRzVG9XaGl0ZShib29sIGI9dHJ1ZSkgeyBpbmhlcml0ZWRfZmxhZ3MuX2ZvcmNlX2Jh
Y2tncm91bmRzX3RvX3doaXRlID0gYjsgfQorICAgIFByaW50Q29sb3JBZGp1c3QgcHJpbnRDb2xv
ckFkanVzdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFByaW50Q29sb3JBZGp1c3Q+KGlu
aGVyaXRlZF9mbGFncy5tX3ByaW50Q29sb3JBZGp1c3QpOyB9CisgICAgdm9pZCBzZXRQcmludENv
bG9yQWRqdXN0KFByaW50Q29sb3JBZGp1c3QgdmFsdWUpIHsgaW5oZXJpdGVkX2ZsYWdzLm1fcHJp
bnRDb2xvckFkanVzdCA9IHZhbHVlOyB9CiAKICAgICBib29sIGhhc0F1dG9aSW5kZXgoKSBjb25z
dCB7IHJldHVybiBtX2JveC0+aGFzQXV0b1pJbmRleCgpOyB9CiAgICAgdm9pZCBzZXRIYXNBdXRv
WkluZGV4KCkgeyBTRVRfVkFSKG1fYm94LCBtX2hhc0F1dG9aSW5kZXgsIHRydWUpOyBTRVRfVkFS
KG1fYm94LCBtX3pJbmRleCwgMCkgfQpAQCAtMTQ2MCw2ICsxNDYwLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBFSW1hZ2VSZW5kZXJpbmcgaW5pdGlhbEltYWdlUmVuZGVyaW5nKCkgeyByZXR1cm4g
SW1hZ2VSZW5kZXJpbmdBdXRvOyB9CiAgICAgc3RhdGljIFN0eWxlSW1hZ2UqIGluaXRpYWxCb3Jk
ZXJJbWFnZVNvdXJjZSgpIHsgcmV0dXJuIDA7IH0KICAgICBzdGF0aWMgU3R5bGVJbWFnZSogaW5p
dGlhbE1hc2tCb3hJbWFnZVNvdXJjZSgpIHsgcmV0dXJuIDA7IH0KKyAgICBzdGF0aWMgUHJpbnRD
b2xvckFkanVzdCBpbml0aWFsUHJpbnRDb2xvckFkanVzdCgpIHsgcmV0dXJuIFByaW50Q29sb3JB
ZGp1c3RFY29ub215OyB9CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWFs
Rmxvd1RocmVhZCgpIHsgcmV0dXJuIG51bGxBdG9tOyB9CiAgICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyYgaW5pdGlhbFJlZ2lvblRocmVhZCgpIHsgcmV0dXJuIG51bGxBdG9tOyB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVD
b25zdGFudHMuaAkocmV2aXNpb24gOTgyMDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYs
MTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICogaW4gQ1NTVmFsdWVLZXl3b3Jkcy5pbiwgb3Ro
ZXJ3aXNlIHNvbWUgb3B0aW1pemF0aW9ucyBpbiB0aGUgcGFyc2VyIHdpbGwgZmFpbCwKICAqIGFu
ZCBwcm9kdWNlIGludmFsaWQgcmVzdWx0cy4KICAqLworc3RhdGljIGNvbnN0IHNpemVfdCBQcmlu
dENvbG9yQWRqdXN0Qml0cyA9IDE7CitlbnVtIFByaW50Q29sb3JBZGp1c3QgeworICAgIFByaW50
Q29sb3JBZGp1c3RFY29ub215LAorICAgIFByaW50Q29sb3JBZGp1c3RFeGFjdAorfTsKIAogLy8g
VGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gc3R5bGVzLiAgVGhlIGZvbGxvd2luZyB2YWx1ZXMg
YXJlIHVzZWQ6CiAvLyAoMSkgU3R5bGVEaWZmZXJlbmNlRXF1YWwgLSBUaGUgdHdvIHN0eWxlcyBh
cmUgaWRlbnRpY2FsCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy93ZWJraXQtY29sb3ItYWRq
dXN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy93ZWJr
aXQtY29sb3ItYWRqdXN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvY3NzL3dlYmtpdC1jb2xvci1hZGp1c3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDIgQEAKK1NVQ0NFU1MKK1NVQ0NFU1MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Y3NzL3dlYmtpdC1jb2xvci1hZGp1c3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy93ZWJraXQtY29sb3ItYWRqdXN0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2Nzcy93ZWJraXQtY29sb3ItYWRqdXN0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjggQEAKKzxoZWFkPgorPHNjcmlwdD4KK3ZhciBvdXRwdXQgPSBbXTsKKworZnVuY3Rp
b24gdGVzdChpZCwgZXhwZWN0ZWQpIHsKKyAgICB2YXIgYWRqdXN0ID0gd2luZG93LmdldENvbXB1
dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpKS53ZWJraXRQcmludENvbG9yQWRq
dXN0OworICAgIGlmIChhZGp1c3QgPT0gZXhwZWN0ZWQpCisgICAgICAgIG91dHB1dC5wdXNoKCJT
VUNDRVNTIik7CisgICAgZWxzZQorICAgICAgICBvdXRwdXQucHVzaCgiRkFJTFVSRS4gIC13ZWJr
aXQtcHJpbnQtY29sb3ItYWRqdXN0IHdhcyAiICsgYWRqdXN0ICsgIiwgaXQgc2hvdWxkIGhhdmUg
YmVlbiAiICsgZXhwZWN0ZWQpOworfQorCitmdW5jdGlvbiBydW5UZXN0cygpIHsKKyAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgdGVzdCgiZWNvbm9teSIsICJlY29ub215Iik7
CisgICAgdGVzdCgiZXhhY3QiLCAiZXhhY3QiKTsKKworICAgIGRvY3VtZW50LmJvZHkuaW5uZXJI
VE1MID0gb3V0cHV0LmpvaW4oIlxuIik7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkg
b25Mb2FkPSJydW5UZXN0cygpOyIgc3R5bGU9IndoaXRlLXNwYWNlOiBwcmUtd3JhcDsiPgorPGRp
diBpZD0iZWNvbm9teSIgc3R5bGU9Ii13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OmVjb25vbXk7
Ij48L2Rpdj4KKzxkaXYgaWQ9ImV4YWN0IiBzdHlsZT0iLXdlYmtpdC1wcmludC1jb2xvci1hZGp1
c3Q6ZXhhY3Q7Ij48L2Rpdj4KKzwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2dl
dENvbXB1dGVkU3R5bGUvY29tcHV0ZWQtc3R5bGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvY29tcHV0ZWQtc3R5bGUtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiA5ODIwMykKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENv
bXB1dGVkU3R5bGUvY29tcHV0ZWQtc3R5bGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xNzUsNiArMTc1LDcgQEAgem9vbTogMTsKIC13ZWJraXQtbmJzcC1tb2RlOiBub3JtYWw7CiAt
d2Via2l0LXBlcnNwZWN0aXZlOiBub25lOwogLXdlYmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW46IDM5
MnB4IDI4OHB4OworLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6IGVjb25vbXk7CiAtd2Via2l0
LXJ0bC1vcmRlcmluZzogbG9naWNhbDsKIC13ZWJraXQtdGV4dC1jb21iaW5lOiBub25lOwogLXdl
YmtpdC10ZXh0LWRlY29yYXRpb25zLWluLWVmZmVjdDogbm9uZTsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvY29tcHV0ZWQtc3R5bGUtd2l0aG91dC1yZW5kZXJl
ci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29t
cHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS13aXRob3V0LXJlbmRlcmVyLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gOTgyMDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxl
L2NvbXB1dGVkLXN0eWxlLXdpdGhvdXQtcmVuZGVyZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xNzQsNiArMTc0LDcgQEAgQ29tcHV0ZWQgc3R5bGUgb2YgYW4gZWxlbWVudCB3aG9z
ZSBwYXJlbgogICAgIC13ZWJraXQtbmJzcC1tb2RlOiBub3JtYWwKICAgICAtd2Via2l0LXBlcnNw
ZWN0aXZlOiBub25lCiAgICAgLXdlYmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW46IDUwJSA1MCUKKyAg
ICAtd2Via2l0LXByaW50LWNvbG9yLWFkanVzdDogZWNvbm9teQogICAgIC13ZWJraXQtcnRsLW9y
ZGVyaW5nOiBsb2dpY2FsCiAgICAgLXdlYmtpdC10ZXh0LWNvbWJpbmU6IG5vbmUKICAgICAtd2Vi
a2l0LXRleHQtZGVjb3JhdGlvbnMtaW4tZWZmZWN0OiBub25lCkluZGV4OiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1z
dHlsZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0td2luL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvY29tcHV0ZWQtc3R5bGUtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiA5ODIwMykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
LXdpbi9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxlLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMTc1LDYgKzE3NSw3IEBAIHpvb206IDE7CiAtd2Via2l0LW5i
c3AtbW9kZTogbm9ybWFsOwogLXdlYmtpdC1wZXJzcGVjdGl2ZTogbm9uZTsKIC13ZWJraXQtcGVy
c3BlY3RpdmUtb3JpZ2luOiAzOTJweCAyODhweDsKKy13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0
OiBlY29ub215OwogLXdlYmtpdC1ydGwtb3JkZXJpbmc6IGxvZ2ljYWw7CiAtd2Via2l0LXRleHQt
Y29tYmluZTogbm9uZTsKIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3Q6IG5vbmU7
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9jc3MvZ2V0Q29t
cHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS13aXRob3V0LXJlbmRlcmVyLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9jc3Mv
Z2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS13aXRob3V0LXJlbmRlcmVyLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gOTgyMDMpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13
aW4vZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS13aXRob3V0LXJlbmRl
cmVyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDYgKzE3NCw3IEBAIENvbXB1
dGVkIHN0eWxlIG9mIGFuIGVsZW1lbnQgd2hvc2UgcGFyZW4KICAgICAtd2Via2l0LW5ic3AtbW9k
ZTogbm9ybWFsCiAgICAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogbm9uZQogICAgIC13ZWJraXQtcGVy
c3BlY3RpdmUtb3JpZ2luOiA1MCUgNTAlCisgICAgLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6
IGVjb25vbXkKICAgICAtd2Via2l0LXJ0bC1vcmRlcmluZzogbG9naWNhbAogICAgIC13ZWJraXQt
dGV4dC1jb21iaW5lOiBub25lCiAgICAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb25zLWluLWVmZmVj
dDogbm9uZQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL3N2Zy9jc3Mv
Z2V0Q29tcHV0ZWRTdHlsZS1iYXNpYy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL3N2Zy9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS1iYXNp
Yy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDk4MjAzKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0td2luL3N2Zy9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS1iYXNpYy1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTM0OCw2ICszNDgsOCBAQCByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0
eVZhbHVlKC13ZWJraXQtcGVyCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJr
aXQtcGVyc3BlY3RpdmUpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KIHJlY3Q6IHN0eWxl
LmdldFByb3BlcnR5VmFsdWUoLXdlYmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW4pIDogMHB4IDBweAog
cmVjdDogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LXBlcnNwZWN0aXZlLW9yaWdp
bikgOiBbb2JqZWN0IENTU1ZhbHVlTGlzdF0KK3JlY3Q6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUo
LXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3QpIDogZWNvbm9teQorcmVjdDogc3R5bGUuZ2V0UHJv
cGVydHlDU1NWYWx1ZSgtd2Via2l0LXByaW50LWNvbG9yLWFkanVzdCkgOiBbb2JqZWN0IENTU1By
aW1pdGl2ZVZhbHVlXQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LXJ0bC1v
cmRlcmluZykgOiBsb2dpY2FsCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJr
aXQtcnRsLW9yZGVyaW5nKSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVdCiByZWN0OiBzdHls
ZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtdGV4dC1jb21iaW5lKSA6IG5vbmUKQEAgLTgyOCw2
ICs4MzAsOCBAQCBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtcGVyc3BlCiBnOiBz
dHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtcGVyc3BlY3RpdmUpIDogW29iamVjdCBD
U1NQcmltaXRpdmVWYWx1ZV0KIGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtpdC1wZXJz
cGVjdGl2ZS1vcmlnaW4pIDogMHB4IDBweAogZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgt
d2Via2l0LXBlcnNwZWN0aXZlLW9yaWdpbikgOiBbb2JqZWN0IENTU1ZhbHVlTGlzdF0KK2c6IHN0
eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3QpIDogZWNvbm9t
eQorZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LXByaW50LWNvbG9yLWFkanVz
dCkgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVlXQogZzogc3R5bGUuZ2V0UHJvcGVydHlWYWx1
ZSgtd2Via2l0LXJ0bC1vcmRlcmluZykgOiBsb2dpY2FsCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eUNT
U1ZhbHVlKC13ZWJraXQtcnRsLW9yZGVyaW5nKSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVd
CiBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtdGV4dC1jb21iaW5lKSA6IG5vbmUK
SW5kZXg6IExheW91dFRlc3RzL3N2Zy9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS1iYXNpYy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2Nzcy9nZXRDb21wdXRlZFN0eWxl
LWJhc2ljLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTgyMDMpCisrKyBMYXlvdXRUZXN0cy9zdmcv
Y3NzL2dldENvbXB1dGVkU3R5bGUtYmFzaWMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0zNDgsNiArMzQ4LDggQEAgcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LXBl
cgogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LXBlcnNwZWN0aXZlKSA6
IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVdCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVl
KC13ZWJraXQtcGVyc3BlY3RpdmUtb3JpZ2luKSA6IDBweCAwcHgKIHJlY3Q6IHN0eWxlLmdldFBy
b3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW4pIDogW29iamVjdCBDU1NW
YWx1ZUxpc3RdCityZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtcHJpbnQtY29s
b3ItYWRqdXN0KSA6IGVjb25vbXkKK3JlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdl
YmtpdC1wcmludC1jb2xvci1hZGp1c3QpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KIHJl
Y3Q6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtpdC1ydGwtb3JkZXJpbmcpIDogbG9naWNh
bAogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LXJ0bC1vcmRlcmluZykg
OiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVlXQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1
ZSgtd2Via2l0LXRleHQtY29tYmluZSkgOiBub25lCkBAIC04MjgsNiArODMwLDggQEAgZzogc3R5
bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LXBlcnNwZQogZzogc3R5bGUuZ2V0UHJvcGVydHlD
U1NWYWx1ZSgtd2Via2l0LXBlcnNwZWN0aXZlKSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVd
CiBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtcGVyc3BlY3RpdmUtb3JpZ2luKSA6
IDBweCAwcHgKIGc6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC1wZXJzcGVjdGl2
ZS1vcmlnaW4pIDogW29iamVjdCBDU1NWYWx1ZUxpc3RdCitnOiBzdHlsZS5nZXRQcm9wZXJ0eVZh
bHVlKC13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0KSA6IGVjb25vbXkKK2c6IHN0eWxlLmdldFBy
b3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3QpIDogW29iamVjdCBDU1NQ
cmltaXRpdmVWYWx1ZV0KIGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtpdC1ydGwtb3Jk
ZXJpbmcpIDogbG9naWNhbAogZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LXJ0
bC1vcmRlcmluZykgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVlXQogZzogc3R5bGUuZ2V0UHJv
cGVydHlWYWx1ZSgtd2Via2l0LXRleHQtY29tYmluZSkgOiBub25lCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113258</attachid>
            <date>2011-11-01 16:47:22 -0700</date>
            <delta_ts>2011-11-01 18:23:26 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-64583-20111102104719.patch</filename>
            <type>text/plain</type>
            <size>22990</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5MDA1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMTEtMDEgIEx1a2UgTWFj
cGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBXSVA6IEFkZCBD
U1MgcHJvcGVydHkgdG8gY29udHJvbCBwcmludGluZyBvZiBiYWNrZ3JvdW5kcyBmb3IgaW5kaXZp
ZHVhbCBlbGVtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY0NTgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAg
ICAgQWRkZWQgdGVzdCBMYXlvdXRUZXN0cy9mYXN0L2Nzcy93ZWJraXQtY29sb3ItYWRqdXN0Lmh0
bWwsCisgICAgICAgIFVwZGF0ZWQgdGVzdHMgdW5kZXIgTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0
Q29tcHV0ZWRTdHlsZQorICAgICAgICBVcGRhdGVkIHRlc3QgdW5kZXIgTGF5b3V0VGVzdHMvc3Zn
L2NzcworCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5
Q1NTVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlOYW1l
cy5pbjoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckRvY3VtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6
aW5pdGlhbEZvcmNlQmFja2dyb3VuZHNUb1doaXRlKToKKwogMjAxMS0xMS0wMSAgWGlhb21laSBK
aSAgPHhqaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVmYWN0b3I6IGNoYW5nZSBTY3JvbGxh
YmxlOjptX3Njcm9sbE9yaWdpbiBmcm9tIHByb3RlY3RlZCB0byBwcml2YXRlLgpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJ
KHJldmlzaW9uIDk5MDA1KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MSw2ICsyNTEsNyBAQCBzdGF0aWMg
Y29uc3QgaW50IGNvbXB1dGVkUHJvcGVydGllc1tdID0gCiAgICAgQ1NTUHJvcGVydHlXZWJraXRO
YnNwTW9kZSwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlLAogICAgIENTU1Byb3Bl
cnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW4sCisgICAgQ1NTUHJvcGVydHlXZWJraXRQcmludENv
bG9yQWRqdXN0LAogICAgIENTU1Byb3BlcnR5V2Via2l0UnRsT3JkZXJpbmcsCiAjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRhcEhpZ2hsaWdodENvbG9yLApA
QCAtMTMzNiw2ICsxMzM3LDggQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHls
ZURlYwogICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZVZhbHVl
KHN0eWxlLT5jbGVhcigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9yOgogICAgICAg
ICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZUNvbG9yVmFsdWUobV9hbGxv
d1Zpc2l0ZWRTdHlsZSA/IHN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlD
b2xvcikucmdiKCkgOiBzdHlsZS0+Y29sb3IoKS5yZ2IoKSk7CisgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRQcmludENvbG9yQWRqdXN0OgorICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2
ZVZhbHVlQ2FjaGUtPmNyZWF0ZVZhbHVlKHN0eWxlLT5wcmludENvbG9yQWRqdXN0KCkpOwogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQXhpczoKICAgICAgICAgICAgIHJldHVy
biBwcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVWYWx1ZShzdHlsZS0+Y29sdW1uQXhpcygpKTsK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkNvdW50OgpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDk5MDA1KQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OTksNiArMTY5OSwxMCBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBiCiAgICAgICAgIGlmICh2YWx1ZS0+
aWQgPT0gQ1NTVmFsdWVWaXNpYmxlIHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUhpZGRlbikKICAg
ICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFByaW50Q29sb3JBZGp1c3Q6CisgICAgICAgIGlmICh2YWx1ZS0+
aWQgPT0gQ1NTVmFsdWVFeGFjdCB8fCB2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVFY29ub215KQorICAg
ICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOworICAgICAgICBicmVhazsKICAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmU6CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1
ZU5vbmUpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgJKHJldmlzaW9uIDk5
MDA1KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAko
d29ya2luZyBjb3B5KQpAQCAtMTU1LDYgKzE1NSwzNSBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6b3BlCiAgICAgcmV0dXJuIENvbHVtblNwYW5PbmU7CiB9CiAKKwordGVt
cGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFByaW50
Q29sb3JBZGp1c3QgdmFsdWUpCisgICAgOiBtX3R5cGUoQ1NTX0lERU5UKQorICAgICwgbV9oYXND
YWNoZWRDU1NUZXh0KGZhbHNlKQoreworICAgIHN3aXRjaCAodmFsdWUpIHsKKyAgICBjYXNlIFBy
aW50Q29sb3JBZGp1c3RFeGFjdDoKKyAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU1ZhbHVlRXhh
Y3Q7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHJpbnRDb2xvckFkanVzdEVjb25vbXk6Cisg
ICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NWYWx1ZUVjb25vbXk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9y
IFByaW50Q29sb3JBZGp1c3QoKSBjb25zdAoreworICAgIHN3aXRjaCAobV92YWx1ZS5pZGVudCkg
eworICAgIGNhc2UgQ1NTVmFsdWVFY29ub215OgorICAgICAgICByZXR1cm4gUHJpbnRDb2xvckFk
anVzdEVjb25vbXk7CisgICAgY2FzZSBDU1NWYWx1ZUV4YWN0OgorICAgICAgICByZXR1cm4gUHJp
bnRDb2xvckFkanVzdEV4YWN0OworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gUHJpbnRDb2xvckFkanVzdEVjb25vbXk7CisgICAgfQor
fQorCisKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVW
YWx1ZShFQm9yZGVyU3R5bGUgZSkKICAgICA6IG1fdHlwZShDU1NfSURFTlQpCiAgICAgLCBtX2hh
c0NhY2hlZENTU1RleHQoZmFsc2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVy
dHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAJ
KHJldmlzaW9uIDk5MDA1KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzM0LDYgKzMzNCw3IEBAIGJvb2wgQ1NTUHJvcGVydHk6OmlzSW5o
ZXJpdGVkUHJvcGVydHkodW4KICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrOgog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lR3JpZDoKICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TmJzcE1vZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFByaW50Q29sb3JBZGp1
c3Q6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nOgogICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRUZXh0Q29tYmluZToKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4
dERlY29yYXRpb25zSW5FZmZlY3Q6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVy
dHlOYW1lcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlO
YW1lcy5pbgkocmV2aXNpb24gOTkwMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVy
dHlOYW1lcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzIwLDYgKzMyMCw3IEBAIHotaW5kZXgKIC13
ZWJraXQtcGVyc3BlY3RpdmUtb3JpZ2luCiAtd2Via2l0LXBlcnNwZWN0aXZlLW9yaWdpbi14CiAt
d2Via2l0LXBlcnNwZWN0aXZlLW9yaWdpbi15Cistd2Via2l0LXByaW50LWNvbG9yLWFkanVzdAog
LXdlYmtpdC1ydGwtb3JkZXJpbmcKIC13ZWJraXQtdGV4dC1jb21iaW5lCiAtZXB1Yi10ZXh0LWNv
bWJpbmUgPSAtd2Via2l0LXRleHQtY29tYmluZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
dHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gOTkwMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNjcsOCArMTE2Nyw2IEBA
IFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0b3IKICAgICBmb250RGVzY3Jp
cHRpb24uc2V0VXNlUHJpbnRlckZvbnQoZG9jdW1lbnQtPnByaW50aW5nKCkpOwogICAgIGlmIChT
ZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudC0+c2V0dGluZ3MoKSkgewogICAgICAgICBmb250
RGVzY3JpcHRpb24uc2V0UmVuZGVyaW5nTW9kZShzZXR0aW5ncy0+Zm9udFJlbmRlcmluZ01vZGUo
KSk7Ci0gICAgICAgIGlmIChkb2N1bWVudC0+cHJpbnRpbmcoKSAmJiAhc2V0dGluZ3MtPnNob3Vs
ZFByaW50QmFja2dyb3VuZHMoKSkKLSAgICAgICAgICAgIGRvY3VtZW50U3R5bGUtPnNldEZvcmNl
QmFja2dyb3VuZHNUb1doaXRlKHRydWUpOwogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHN0
ZGZvbnQgPSBzZXR0aW5ncy0+c3RhbmRhcmRGb250RmFtaWx5KCk7CiAgICAgICAgIGlmICghc3Rk
Zm9udC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmlj
RmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6U3RhbmRhcmRGYW1pbHkpOwpAQCAtMzY0Niw2ICszNjQ0
LDkgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1TdHlsZToKICAgICAgICAgSEFORExFX0lOSEVSSVRf
QU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRSh0cmFuc2Zvcm1TdHlsZTNELCBUcmFuc2Zvcm1TdHls
ZTNEKQogICAgICAgICByZXR1cm47CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFByaW50Q29s
b3JBZGp1c3Q6CisgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJ
VkUocHJpbnRDb2xvckFkanVzdCwgUHJpbnRDb2xvckFkanVzdCk7CisgICAgICAgIHJldHVybjsK
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmU6IHsKICAgICAgICAgSEFORExF
X0lOSEVSSVRfQU5EX0lOSVRJQUwocGVyc3BlY3RpdmUsIFBlcnNwZWN0aXZlKQogICAgICAgICBp
ZiAocHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFs
dWVOb25lKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgkocmV2
aXNpb24gOTkwMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgko
d29ya2luZyBjb3B5KQpAQCAtNzU3LDYgKzc1NywxMCBAQCBvcHRpbWl6ZVNwZWVkCiBvcHRpbWl6
ZUxlZ2liaWxpdHkKIGdlb21ldHJpY1ByZWNpc2lvbgogCisvLyAtd2Via2l0LWNvbG9yLWFkanVz
dAorZWNvbm9teQorZXhhY3QKKwogLy8gLXdlYmtpdC1jb2xvci1jb3JyZWN0aW9uCiAvL2RlZmF1
bHQKIHNSR0IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5j
cHAJKHJldmlzaW9uIDk5MDA1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiUmVu
ZGVyUnVieVJ1bi5oIgogI2luY2x1ZGUgIlJlbmRlclJ1YnlUZXh0LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVGhlbWUuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNWR1RleHRSdW5S
ZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgImJyZWFrX2xp
bmVzLmgiCkBAIC01NzUsMjAgKzU3NiwyOCBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBh
aW50SW5mbyYgcGFpCiAgICAgfSBlbHNlIHsKICAgICAgICAgdGV4dEZpbGxDb2xvciA9IHN0eWxl
VG9Vc2UtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29s
b3IpOwogICAgICAgICAKKyAgICAgICAgYm9vbCBmb3JjZUJhY2tncm91bmRUb1doaXRlID0gZmFs
c2U7CisgICAgICAgIGlmIChpc1ByaW50aW5nKSB7CisgICAgICAgICAgICBpZiAoc3R5bGVUb1Vz
ZS0+cHJpbnRDb2xvckFkanVzdCgpID09IFByaW50Q29sb3JBZGp1c3RFY29ub215KQorICAgICAg
ICAgICAgICAgIGZvcmNlQmFja2dyb3VuZFRvV2hpdGUgPSB0cnVlOworICAgICAgICAgICAgaWYg
KHRleHRSZW5kZXJlcigpLT5kb2N1bWVudCgpLT5zZXR0aW5ncygpICYmIHRleHRSZW5kZXJlcigp
LT5kb2N1bWVudCgpLT5zZXR0aW5ncygpLT5zaG91bGRQcmludEJhY2tncm91bmRzKCkpCisgICAg
ICAgICAgICAgICAgZm9yY2VCYWNrZ3JvdW5kVG9XaGl0ZSA9IGZhbHNlOworICAgICAgICB9CisK
ICAgICAgICAgLy8gTWFrZSB0aGUgdGV4dCBmaWxsIGNvbG9yIGxlZ2libGUgYWdhaW5zdCBhIHdo
aXRlIGJhY2tncm91bmQKLSAgICAgICAgaWYgKHN0eWxlVG9Vc2UtPmZvcmNlQmFja2dyb3VuZHNU
b1doaXRlKCkpCisgICAgICAgIGlmIChmb3JjZUJhY2tncm91bmRUb1doaXRlKQogICAgICAgICAg
ICAgdGV4dEZpbGxDb2xvciA9IGNvcnJlY3RlZFRleHRDb2xvcih0ZXh0RmlsbENvbG9yLCBDb2xv
cjo6d2hpdGUpOwogCiAgICAgICAgIHRleHRTdHJva2VDb2xvciA9IHN0eWxlVG9Vc2UtPnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvcik7CiAgICAg
ICAgIAogICAgICAgICAvLyBNYWtlIHRoZSB0ZXh0IHN0cm9rZSBjb2xvciBsZWdpYmxlIGFnYWlu
c3QgYSB3aGl0ZSBiYWNrZ3JvdW5kCi0gICAgICAgIGlmIChzdHlsZVRvVXNlLT5mb3JjZUJhY2tn
cm91bmRzVG9XaGl0ZSgpKQorICAgICAgICBpZiAoZm9yY2VCYWNrZ3JvdW5kVG9XaGl0ZSkKICAg
ICAgICAgICAgIHRleHRTdHJva2VDb2xvciA9IGNvcnJlY3RlZFRleHRDb2xvcih0ZXh0U3Ryb2tl
Q29sb3IsIENvbG9yOjp3aGl0ZSk7CiAKICAgICAgICAgZW1waGFzaXNNYXJrQ29sb3IgPSBzdHls
ZVRvVXNlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFz
aXNDb2xvcik7CiAgICAgICAgIAogICAgICAgICAvLyBNYWtlIHRoZSB0ZXh0IHN0cm9rZSBjb2xv
ciBsZWdpYmxlIGFnYWluc3QgYSB3aGl0ZSBiYWNrZ3JvdW5kCi0gICAgICAgIGlmIChzdHlsZVRv
VXNlLT5mb3JjZUJhY2tncm91bmRzVG9XaGl0ZSgpKQorICAgICAgICBpZiAoZm9yY2VCYWNrZ3Jv
dW5kVG9XaGl0ZSkKICAgICAgICAgICAgIGVtcGhhc2lzTWFya0NvbG9yID0gY29ycmVjdGVkVGV4
dENvbG9yKGVtcGhhc2lzTWFya0NvbG9yLCBDb2xvcjo6d2hpdGUpOwogICAgIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3Bw
CShyZXZpc2lvbiA5OTAwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRl
ICJSZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJl
bmRlclZpZXcuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50
VGltZS5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtNjEzLDEzICs2MTQsMjIgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZQogICAgIFN0eWxlSW1hZ2UqIGJn
SW1hZ2UgPSBiZ0xheWVyLT5pbWFnZSgpOwogICAgIGJvb2wgc2hvdWxkUGFpbnRCYWNrZ3JvdW5k
SW1hZ2UgPSBiZ0ltYWdlICYmIGJnSW1hZ2UtPmNhblJlbmRlcih0aGlzLCBzdHlsZSgpLT5lZmZl
Y3RpdmVab29tKCkpOwogICAgIAotICAgIC8vIFdoZW4gdGhpcyBzdHlsZSBmbGFnIGlzIHNldCwg
Y2hhbmdlIGV4aXN0aW5nIGJhY2tncm91bmQgY29sb3JzIGFuZCBpbWFnZXMgdG8gYSBzb2xpZCB3
aGl0ZSBiYWNrZ3JvdW5kLgorICAgIGJvb2wgZm9yY2VCYWNrZ3JvdW5kVG9XaGl0ZSA9IGZhbHNl
OworICAgIGlmIChkb2N1bWVudCgpLT5wcmludGluZygpKSB7CisgICAgICAgIGlmIChzdHlsZSgp
LT5wcmludENvbG9yQWRqdXN0KCkgPT0gUHJpbnRDb2xvckFkanVzdEVjb25vbXkpCisgICAgICAg
ICAgICBmb3JjZUJhY2tncm91bmRUb1doaXRlID0gdHJ1ZTsKKyAgICAgICAgaWYgKGRvY3VtZW50
KCktPnNldHRpbmdzKCkgJiYgZG9jdW1lbnQoKS0+c2V0dGluZ3MoKS0+c2hvdWxkUHJpbnRCYWNr
Z3JvdW5kcygpKQorICAgICAgICAgICAgZm9yY2VCYWNrZ3JvdW5kVG9XaGl0ZSA9IGZhbHNlOwor
ICAgIH0KKworICAgIC8vIFdoZW4gcHJpbnRpbmcgYmFja2dyb3VuZHMgaXMgZGlzYWJsZWQgb3Ig
dXNpbmcgZWNvbm9teSBtb2RlLAorICAgIC8vIGNoYW5nZSBleGlzdGluZyBiYWNrZ3JvdW5kIGNv
bG9ycyBhbmQgaW1hZ2VzIHRvIGEgc29saWQgd2hpdGUgYmFja2dyb3VuZC4KICAgICAvLyBJZiB0
aGVyZSdzIG5vIGJnIGNvbG9yIG9yIGltYWdlLCBsZWF2ZSBpdCB1bnRvdWNoZWQgdG8gYXZvaWQg
YWZmZWN0aW5nIHRyYW5zcGFyZW5jeS4KICAgICAvLyBXZSBkb24ndCB0cnkgdG8gYXZvaWQgbG9h
ZGluZyB0aGUgYmFja2dyb3VuZCBpbWFnZXMsIGJlY2F1c2UgdGhpcyBzdHlsZSBmbGFnIGlzIG9u
bHkgc2V0CiAgICAgLy8gd2hlbiBwcmludGluZywgYW5kIGF0IHRoYXQgcG9pbnQgd2UndmUgYWxy
ZWFkeSBsb2FkZWQgdGhlIGJhY2tncm91bmQgaW1hZ2VzIGFueXdheS4gKFRvIGF2b2lkCiAgICAg
Ly8gbG9hZGluZyB0aGUgYmFja2dyb3VuZCBpbWFnZXMgd2UnZCBoYXZlIHRvIGRvIHRoaXMgY2hl
Y2sgd2hlbiBhcHBseWluZyBzdHlsZXMgcmF0aGVyIHRoYW4KICAgICAvLyB3aGlsZSByZW5kZXJp
bmcuKQotICAgIGlmIChzdHlsZSgpLT5mb3JjZUJhY2tncm91bmRzVG9XaGl0ZSgpKSB7CisgICAg
aWYgKGZvcmNlQmFja2dyb3VuZFRvV2hpdGUpIHsKICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGNh
bid0IHJldXNlIHRoaXMgdmFyaWFibGUgYmVsb3cgYmVjYXVzZSB0aGUgYmdDb2xvciBtaWdodCBi
ZSBjaGFuZ2VkCiAgICAgICAgIGJvb2wgc2hvdWxkUGFpbnRCYWNrZ3JvdW5kQ29sb3IgPSAhYmdM
YXllci0+bmV4dCgpICYmIGJnQ29sb3IuaXNWYWxpZCgpICYmIGJnQ29sb3IuYWxwaGEoKSA+IDA7
CiAgICAgICAgIGlmIChzaG91bGRQYWludEJhY2tncm91bmRJbWFnZSB8fCBzaG91bGRQYWludEJh
Y2tncm91bmRDb2xvcikgewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuY3BwCShyZXZpc2lvbiA5OTAwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5Nyw3ICs1
OTcsNyBAQCBTdHlsZURpZmZlcmVuY2UgUmVuZGVyU3R5bGU6OmRpZmYoY29uc3QgCiAgICAgaWYg
KGluaGVyaXRlZC0+Y29sb3IgIT0gb3RoZXItPmluaGVyaXRlZC0+Y29sb3IKICAgICAgICAgfHwg
aW5oZXJpdGVkX2ZsYWdzLl92aXNpYmlsaXR5ICE9IG90aGVyLT5pbmhlcml0ZWRfZmxhZ3MuX3Zp
c2liaWxpdHkKICAgICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2RlY29yYXRpb25zICE9
IG90aGVyLT5pbmhlcml0ZWRfZmxhZ3MuX3RleHRfZGVjb3JhdGlvbnMKLSAgICAgICAgfHwgaW5o
ZXJpdGVkX2ZsYWdzLl9mb3JjZV9iYWNrZ3JvdW5kc190b193aGl0ZSAhPSBvdGhlci0+aW5oZXJp
dGVkX2ZsYWdzLl9mb3JjZV9iYWNrZ3JvdW5kc190b193aGl0ZQorICAgICAgICB8fCBpbmhlcml0
ZWRfZmxhZ3MubV9wcmludENvbG9yQWRqdXN0ICE9IG90aGVyLT5pbmhlcml0ZWRfZmxhZ3MubV9w
cmludENvbG9yQWRqdXN0CiAgICAgICAgIHx8IGluaGVyaXRlZF9mbGFncy5faW5zaWRlTGluayAh
PSBvdGhlci0+aW5oZXJpdGVkX2ZsYWdzLl9pbnNpZGVMaW5rCiAgICAgICAgIHx8IHN1cnJvdW5k
LT5ib3JkZXIgIT0gb3RoZXItPnN1cnJvdW5kLT5ib3JkZXIKICAgICAgICAgfHwgKm1fYmFja2dy
b3VuZC5nZXQoKSAhPSAqb3RoZXItPm1fYmFja2dyb3VuZC5nZXQoKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHJldmlzaW9uIDk5MDA1KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE4NCw3ICsxODQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICAgICAgJiYg
KF93aGl0ZV9zcGFjZSA9PSBvdGhlci5fd2hpdGVfc3BhY2UpCiAgICAgICAgICAgICAgICAgJiYg
KF9ib3hfZGlyZWN0aW9uID09IG90aGVyLl9ib3hfZGlyZWN0aW9uKQogICAgICAgICAgICAgICAg
ICYmIChtX3J0bE9yZGVyaW5nID09IG90aGVyLm1fcnRsT3JkZXJpbmcpCi0gICAgICAgICAgICAg
ICAgJiYgKF9mb3JjZV9iYWNrZ3JvdW5kc190b193aGl0ZSA9PSBvdGhlci5fZm9yY2VfYmFja2dy
b3VuZHNfdG9fd2hpdGUpCisgICAgICAgICAgICAgICAgJiYgKG1fcHJpbnRDb2xvckFkanVzdCA9
PSBvdGhlci5tX3ByaW50Q29sb3JBZGp1c3QpCiAgICAgICAgICAgICAgICAgJiYgKF9wb2ludGVy
RXZlbnRzID09IG90aGVyLl9wb2ludGVyRXZlbnRzKQogICAgICAgICAgICAgICAgICYmIChfaW5z
aWRlTGluayA9PSBvdGhlci5faW5zaWRlTGluaykKICAgICAgICAgICAgICAgICAmJiAobV93cml0
aW5nTW9kZSA9PSBvdGhlci5tX3dyaXRpbmdNb2RlKTsKQEAgLTIwOSw3ICsyMDksNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgICAgIAogICAgICAgICAvLyBub24gQ1NTMiBpbmhlcml0ZWQKICAgICAgICAg
dW5zaWduZWQgY2hhciBtX3J0bE9yZGVyaW5nIDogMTsgLy8gT3JkZXIKLSAgICAgICAgYm9vbCBf
Zm9yY2VfYmFja2dyb3VuZHNfdG9fd2hpdGUgOiAxOworICAgICAgICB1bnNpZ25lZCBjaGFyIG1f
cHJpbnRDb2xvckFkanVzdCA6IFByaW50Q29sb3JBZGp1c3RCaXRzOwogICAgICAgICB1bnNpZ25l
ZCBjaGFyIF9wb2ludGVyRXZlbnRzIDogNDsgLy8gRVBvaW50ZXJFdmVudHMKICAgICAgICAgdW5z
aWduZWQgY2hhciBfaW5zaWRlTGluayA6IDI7IC8vIEVJbnNpZGVMaW5rCiAgICAgICAgIC8vIDQz
IGJpdHMKQEAgLTI5MCw3ICsyOTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGluaGVyaXRlZF9m
bGFncy5fd2hpdGVfc3BhY2UgPSBpbml0aWFsV2hpdGVTcGFjZSgpOwogICAgICAgICBpbmhlcml0
ZWRfZmxhZ3MubV9ydGxPcmRlcmluZyA9IGluaXRpYWxSVExPcmRlcmluZygpOwogICAgICAgICBp
bmhlcml0ZWRfZmxhZ3MuX2JveF9kaXJlY3Rpb24gPSBpbml0aWFsQm94RGlyZWN0aW9uKCk7Ci0g
ICAgICAgIGluaGVyaXRlZF9mbGFncy5fZm9yY2VfYmFja2dyb3VuZHNfdG9fd2hpdGUgPSBmYWxz
ZTsKKyAgICAgICAgaW5oZXJpdGVkX2ZsYWdzLm1fcHJpbnRDb2xvckFkanVzdCA9IGluaXRpYWxQ
cmludENvbG9yQWRqdXN0KCk7CiAgICAgICAgIGluaGVyaXRlZF9mbGFncy5fcG9pbnRlckV2ZW50
cyA9IGluaXRpYWxQb2ludGVyRXZlbnRzKCk7CiAgICAgICAgIGluaGVyaXRlZF9mbGFncy5faW5z
aWRlTGluayA9IE5vdEluc2lkZUxpbms7CiAgICAgICAgIGluaGVyaXRlZF9mbGFncy5tX3dyaXRp
bmdNb2RlID0gaW5pdGlhbFdyaXRpbmdNb2RlKCk7CkBAIC0xMDgzLDggKzEwODMsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRJbnNpZGVMaW5rKEVJbnNpZGVMaW5rIGluc2lkZUxpbmspIHsgaW5o
ZXJpdGVkX2ZsYWdzLl9pbnNpZGVMaW5rID0gaW5zaWRlTGluazsgfQogICAgIHZvaWQgc2V0SXNM
aW5rKGJvb2wgYikgeyBub25pbmhlcml0ZWRfZmxhZ3MuX2lzTGluayA9IGI7IH0KIAotICAgIGJv
b2wgZm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWRfZmxh
Z3MuX2ZvcmNlX2JhY2tncm91bmRzX3RvX3doaXRlOyB9Ci0gICAgdm9pZCBzZXRGb3JjZUJhY2tn
cm91bmRzVG9XaGl0ZShib29sIGI9dHJ1ZSkgeyBpbmhlcml0ZWRfZmxhZ3MuX2ZvcmNlX2JhY2tn
cm91bmRzX3RvX3doaXRlID0gYjsgfQorICAgIFByaW50Q29sb3JBZGp1c3QgcHJpbnRDb2xvckFk
anVzdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFByaW50Q29sb3JBZGp1c3Q+KGluaGVy
aXRlZF9mbGFncy5tX3ByaW50Q29sb3JBZGp1c3QpOyB9CisgICAgdm9pZCBzZXRQcmludENvbG9y
QWRqdXN0KFByaW50Q29sb3JBZGp1c3QgdmFsdWUpIHsgaW5oZXJpdGVkX2ZsYWdzLm1fcHJpbnRD
b2xvckFkanVzdCA9IHZhbHVlOyB9CiAKICAgICBib29sIGhhc0F1dG9aSW5kZXgoKSBjb25zdCB7
IHJldHVybiBtX2JveC0+aGFzQXV0b1pJbmRleCgpOyB9CiAgICAgdm9pZCBzZXRIYXNBdXRvWklu
ZGV4KCkgeyBTRVRfVkFSKG1fYm94LCBtX2hhc0F1dG9aSW5kZXgsIHRydWUpOyBTRVRfVkFSKG1f
Ym94LCBtX3pJbmRleCwgMCkgfQpAQCAtMTQ3Niw2ICsxNDc2LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBFSW1hZ2VSZW5kZXJpbmcgaW5pdGlhbEltYWdlUmVuZGVyaW5nKCkgeyByZXR1cm4gSW1h
Z2VSZW5kZXJpbmdBdXRvOyB9CiAgICAgc3RhdGljIFN0eWxlSW1hZ2UqIGluaXRpYWxCb3JkZXJJ
bWFnZVNvdXJjZSgpIHsgcmV0dXJuIDA7IH0KICAgICBzdGF0aWMgU3R5bGVJbWFnZSogaW5pdGlh
bE1hc2tCb3hJbWFnZVNvdXJjZSgpIHsgcmV0dXJuIDA7IH0KKyAgICBzdGF0aWMgUHJpbnRDb2xv
ckFkanVzdCBpbml0aWFsUHJpbnRDb2xvckFkanVzdCgpIHsgcmV0dXJuIFByaW50Q29sb3JBZGp1
c3RFY29ub215OyB9CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWFsTGlu
ZUdyaWQoKSB7IHJldHVybiBudWxsQXRvbTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAkocmV2aXNpb24g
OTkwMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25z
dGFudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsMTEgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICogaW4gQ1NTVmFsdWVLZXl3b3Jkcy5pbiwgb3RoZXJ3aXNlIHNvbWUgb3B0aW1pemF0
aW9ucyBpbiB0aGUgcGFyc2VyIHdpbGwgZmFpbCwKICAqIGFuZCBwcm9kdWNlIGludmFsaWQgcmVz
dWx0cy4KICAqLworc3RhdGljIGNvbnN0IHNpemVfdCBQcmludENvbG9yQWRqdXN0Qml0cyA9IDE7
CitlbnVtIFByaW50Q29sb3JBZGp1c3QgeworICAgIFByaW50Q29sb3JBZGp1c3RFY29ub215LAor
ICAgIFByaW50Q29sb3JBZGp1c3RFeGFjdAorfTsKIAogLy8gVGhlIGRpZmZlcmVuY2UgYmV0d2Vl
biB0d28gc3R5bGVzLiAgVGhlIGZvbGxvd2luZyB2YWx1ZXMgYXJlIHVzZWQ6CiAvLyAoMSkgU3R5
bGVEaWZmZXJlbmNlRXF1YWwgLSBUaGUgdHdvIHN0eWxlcyBhcmUgaWRlbnRpY2FsCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy93ZWJraXQtY29sb3ItYWRqdXN0LWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy93ZWJraXQtY29sb3ItYWRqdXN0LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3dlYmtpdC1jb2xv
ci1hZGp1c3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIgQEAKK1NVQ0NF
U1MKK1NVQ0NFU1MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3dlYmtpdC1jb2xvci1hZGp1
c3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy93ZWJraXQtY29sb3It
YWRqdXN0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy93ZWJraXQt
Y29sb3ItYWRqdXN0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjggQEAKKzxoZWFkPgor
PHNjcmlwdD4KK3ZhciBvdXRwdXQgPSBbXTsKKworZnVuY3Rpb24gdGVzdChpZCwgZXhwZWN0ZWQp
IHsKKyAgICB2YXIgYWRqdXN0ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoaWQpKS53ZWJraXRQcmludENvbG9yQWRqdXN0OworICAgIGlmIChhZGp1c3Qg
PT0gZXhwZWN0ZWQpCisgICAgICAgIG91dHB1dC5wdXNoKCJTVUNDRVNTIik7CisgICAgZWxzZQor
ICAgICAgICBvdXRwdXQucHVzaCgiRkFJTFVSRS4gIC13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0
IHdhcyAiICsgYWRqdXN0ICsgIiwgaXQgc2hvdWxkIGhhdmUgYmVlbiAiICsgZXhwZWN0ZWQpOwor
fQorCitmdW5jdGlvbiBydW5UZXN0cygpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworCisgICAgdGVzdCgiZWNvbm9teSIsICJlY29ub215Iik7CisgICAgdGVzdCgiZXhhY3QiLCAi
ZXhhY3QiKTsKKworICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gb3V0cHV0LmpvaW4oIlxu
Iik7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25Mb2FkPSJydW5UZXN0cygpOyIg
c3R5bGU9IndoaXRlLXNwYWNlOiBwcmUtd3JhcDsiPgorPGRpdiBpZD0iZWNvbm9teSIgc3R5bGU9
Ii13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OmVjb25vbXk7Ij48L2Rpdj4KKzxkaXYgaWQ9ImV4
YWN0IiBzdHlsZT0iLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6ZXhhY3Q7Ij48L2Rpdj4KKzwv
Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvY29tcHV0
ZWQtc3R5bGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3Nz
L2dldENvbXB1dGVkU3R5bGUvY29tcHV0ZWQtc3R5bGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5
OTAwNSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvY29tcHV0ZWQt
c3R5bGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsNiArMTc3LDcgQEAgem9v
bTogMTsKIC13ZWJraXQtbmJzcC1tb2RlOiBub3JtYWw7CiAtd2Via2l0LXBlcnNwZWN0aXZlOiBu
b25lOwogLXdlYmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW46IDM5MnB4IDI4OHB4OworLXdlYmtpdC1w
cmludC1jb2xvci1hZGp1c3Q6IGVjb25vbXk7CiAtd2Via2l0LXJ0bC1vcmRlcmluZzogbG9naWNh
bDsKIC13ZWJraXQtdGV4dC1jb21iaW5lOiBub25lOwogLXdlYmtpdC10ZXh0LWRlY29yYXRpb25z
LWluLWVmZmVjdDogbm9uZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVk
U3R5bGUvY29tcHV0ZWQtc3R5bGUtd2l0aG91dC1yZW5kZXJlci1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1z
dHlsZS13aXRob3V0LXJlbmRlcmVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTkwMDUpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxlLXdpdGhv
dXQtcmVuZGVyZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNzYsNiArMTc2LDcg
QEAgQ29tcHV0ZWQgc3R5bGUgb2YgYW4gZWxlbWVudCB3aG9zZSBwYXJlbgogICAgIC13ZWJraXQt
bmJzcC1tb2RlOiBub3JtYWwKICAgICAtd2Via2l0LXBlcnNwZWN0aXZlOiBub25lCiAgICAgLXdl
YmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW46IDUwJSA1MCUKKyAgICAtd2Via2l0LXByaW50LWNvbG9y
LWFkanVzdDogZWNvbm9teQogICAgIC13ZWJraXQtcnRsLW9yZGVyaW5nOiBsb2dpY2FsCiAgICAg
LXdlYmtpdC10ZXh0LWNvbWJpbmU6IG5vbmUKICAgICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbnMt
aW4tZWZmZWN0OiBub25lCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4v
ZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvY3NzL2dl
dENvbXB1dGVkU3R5bGUvY29tcHV0ZWQtc3R5bGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5OTAw
NSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2Nzcy9nZXRDb21w
dXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MTc3LDYgKzE3Nyw3IEBAIHpvb206IDE7CiAtd2Via2l0LW5ic3AtbW9kZTogbm9ybWFsOwogLXdl
YmtpdC1wZXJzcGVjdGl2ZTogbm9uZTsKIC13ZWJraXQtcGVyc3BlY3RpdmUtb3JpZ2luOiAzOTJw
eCAyODhweDsKKy13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OiBlY29ub215OwogLXdlYmtpdC1y
dGwtb3JkZXJpbmc6IGxvZ2ljYWw7CiAtd2Via2l0LXRleHQtY29tYmluZTogbm9uZTsKIC13ZWJr
aXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3Q6IG5vbmU7CkluZGV4OiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1z
dHlsZS13aXRob3V0LXJlbmRlcmVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21w
dXRlZC1zdHlsZS13aXRob3V0LXJlbmRlcmVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTkwMDUp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9jc3MvZ2V0Q29tcHV0
ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS13aXRob3V0LXJlbmRlcmVyLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMTc2LDYgKzE3Niw3IEBAIENvbXB1dGVkIHN0eWxlIG9mIGFuIGVsZW1l
bnQgd2hvc2UgcGFyZW4KICAgICAtd2Via2l0LW5ic3AtbW9kZTogbm9ybWFsCiAgICAgLXdlYmtp
dC1wZXJzcGVjdGl2ZTogbm9uZQogICAgIC13ZWJraXQtcGVyc3BlY3RpdmUtb3JpZ2luOiA1MCUg
NTAlCisgICAgLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6IGVjb25vbXkKICAgICAtd2Via2l0
LXJ0bC1vcmRlcmluZzogbG9naWNhbAogICAgIC13ZWJraXQtdGV4dC1jb21iaW5lOiBub25lCiAg
ICAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb25zLWluLWVmZmVjdDogbm9uZQpJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL3N2Zy9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS1iYXNp
Yy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0td2luL3N2Zy9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS1iYXNpYy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDk5MDA1KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL3N2Zy9jc3Mv
Z2V0Q29tcHV0ZWRTdHlsZS1iYXNpYy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM1
Miw2ICszNTIsOCBAQCByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtcGVyCiBy
ZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtcGVyc3BlY3RpdmUpIDogW29i
amVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdl
YmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW4pIDogMHB4IDBweAogcmVjdDogc3R5bGUuZ2V0UHJvcGVy
dHlDU1NWYWx1ZSgtd2Via2l0LXBlcnNwZWN0aXZlLW9yaWdpbikgOiBbb2JqZWN0IENTU1ZhbHVl
TGlzdF0KK3JlY3Q6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtpdC1wcmludC1jb2xvci1h
ZGp1c3QpIDogZWNvbm9teQorcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0
LXByaW50LWNvbG9yLWFkanVzdCkgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVlXQogcmVjdDog
c3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LXJ0bC1vcmRlcmluZykgOiBsb2dpY2FsCiBy
ZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtcnRsLW9yZGVyaW5nKSA6IFtv
YmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVdCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13
ZWJraXQtdGV4dC1jb21iaW5lKSA6IG5vbmUKQEAgLTgzNiw2ICs4MzgsOCBAQCBnOiBzdHlsZS5n
ZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtcGVyc3BlCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1Zh
bHVlKC13ZWJraXQtcGVyc3BlY3RpdmUpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KIGc6
IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW4pIDogMHB4
IDBweAogZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LXBlcnNwZWN0aXZlLW9y
aWdpbikgOiBbb2JqZWN0IENTU1ZhbHVlTGlzdF0KK2c6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUo
LXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3QpIDogZWNvbm9teQorZzogc3R5bGUuZ2V0UHJvcGVy
dHlDU1NWYWx1ZSgtd2Via2l0LXByaW50LWNvbG9yLWFkanVzdCkgOiBbb2JqZWN0IENTU1ByaW1p
dGl2ZVZhbHVlXQogZzogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LXJ0bC1vcmRlcmlu
ZykgOiBsb2dpY2FsCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtcnRsLW9y
ZGVyaW5nKSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVdCiBnOiBzdHlsZS5nZXRQcm9wZXJ0
eVZhbHVlKC13ZWJraXQtdGV4dC1jb21iaW5lKSA6IG5vbmUKSW5kZXg6IExheW91dFRlc3RzL3N2
Zy9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS1iYXNpYy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvc3ZnL2Nzcy9nZXRDb21wdXRlZFN0eWxlLWJhc2ljLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gOTkwMDUpCisrKyBMYXlvdXRUZXN0cy9zdmcvY3NzL2dldENvbXB1dGVkU3R5bGUt
YmFzaWMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zNTIsNiArMzUyLDggQEAgcmVj
dDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LXBlcgogcmVjdDogc3R5bGUuZ2V0UHJv
cGVydHlDU1NWYWx1ZSgtd2Via2l0LXBlcnNwZWN0aXZlKSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZl
VmFsdWVdCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtcGVyc3BlY3RpdmUt
b3JpZ2luKSA6IDBweCAwcHgKIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdlYmtp
dC1wZXJzcGVjdGl2ZS1vcmlnaW4pIDogW29iamVjdCBDU1NWYWx1ZUxpc3RdCityZWN0OiBzdHls
ZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0KSA6IGVjb25vbXkK
K3JlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC1wcmludC1jb2xvci1hZGp1
c3QpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5
VmFsdWUoLXdlYmtpdC1ydGwtb3JkZXJpbmcpIDogbG9naWNhbAogcmVjdDogc3R5bGUuZ2V0UHJv
cGVydHlDU1NWYWx1ZSgtd2Via2l0LXJ0bC1vcmRlcmluZykgOiBbb2JqZWN0IENTU1ByaW1pdGl2
ZVZhbHVlXQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LXRleHQtY29tYmlu
ZSkgOiBub25lCkBAIC04MzYsNiArODM4LDggQEAgZzogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgt
d2Via2l0LXBlcnNwZQogZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LXBlcnNw
ZWN0aXZlKSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVdCiBnOiBzdHlsZS5nZXRQcm9wZXJ0
eVZhbHVlKC13ZWJraXQtcGVyc3BlY3RpdmUtb3JpZ2luKSA6IDBweCAwcHgKIGc6IHN0eWxlLmdl
dFByb3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW4pIDogW29iamVjdCBD
U1NWYWx1ZUxpc3RdCitnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtcHJpbnQtY29s
b3ItYWRqdXN0KSA6IGVjb25vbXkKK2c6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdlYmtp
dC1wcmludC1jb2xvci1hZGp1c3QpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KIGc6IHN0
eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtpdC1ydGwtb3JkZXJpbmcpIDogbG9naWNhbAogZzog
c3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LXJ0bC1vcmRlcmluZykgOiBbb2JqZWN0
IENTU1ByaW1pdGl2ZVZhbHVlXQogZzogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LXRl
eHQtY29tYmluZSkgOiBub25lCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>