<?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>17897</bug_id>
          
          <creation_ts>2008-03-17 12:07:55 -0700</creation_ts>
          <short_desc>Not Rendering Images Imported from XHTML Document</short_desc>
          <delta_ts>2008-12-08 15:20:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://weston.ruter.net/projects/test-pages/images-adopted-from-xhtml/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Weston Ruter">weston</reporter>
          <assigned_to name="Julien Chaffraix">jchaffraix</assigned_to>
          <cc>ap</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>74134</commentid>
    <comment_count>0</comment_count>
    <who name="Weston Ruter">weston</who>
    <bug_when>2008-03-17 12:07:55 -0700</bug_when>
    <thetext>If an XMLHttpRequest is made for an XHTML document (with MIME type application/xml+xhtml) and an element containing images in the responseXML document is inserted into the requesting page, the images are not able to load. If, however, the same page is loaded in the browser (without the XHR request) then the images are displayed successfully.

There is a workaround, however, to this issue. After appending the element, simply re-set each image&apos;s src DOM or content attribute.

var imgs = div.getElementsByTagName(&apos;img&apos;);
for(var i = 0; i &lt; imgs.length; i++){
    imgs[i].src = imgs[i].src;
}

See associated URL for example of issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74228</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-03-18 01:39:39 -0700</bug_when>
    <thetext>Confirmed with r31120.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75622</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-03-28 03:47:54 -0700</bug_when>
    <thetext>&lt;rdar://problem/5827614&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83275</commentid>
    <comment_count>3</comment_count>
    <who name="Weston Ruter">weston</who>
    <bug_when>2008-06-13 15:33:37 -0700</bug_when>
    <thetext>The example URL went 404, as well some of the test images. I fixed them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87704</commentid>
    <comment_count>4</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2008-08-02 18:07:40 -0700</bug_when>
    <thetext>I have been able to find the root of this issue:

- the images are not loaded as we load them in a document that is not rendered (because it is loaded via XMLHttpRequest).

- when inserting the images into a rendered document, we do not call their loader to fetch the images so nothing appear on the screen.

- modifying the src attribute forces us to fetch the images by calling the loader.

Taking the bug as I have a fix that I will attach here tomorrow, once I have tested it a bit more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89198</commentid>
    <comment_count>5</comment_count>
      <attachid>22964</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2008-08-24 06:20:33 -0700</bug_when>
    <thetext>Created attachment 22964
Bug fix: fetch image when inserted if necessary and add an error flag in the loader

Sorry for the delay. The patch caused a test failure that I could not determine whether it was caused by the patch or was just rampant.

I seems that it is not failing anymore in ToT so it is not the patch&apos;s fault (already filed bug20366 for the test failure under some conditions).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89336</commentid>
    <comment_count>6</comment_count>
      <attachid>22964</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-25 20:55:21 -0700</bug_when>
    <thetext>Comment on attachment 22964
Bug fix: fetch image when inserted if necessary and add an error flag in the loader

So are new HTMLImageLoader objects created every time a load is issued?  Otherwise I fear your patch will break things like:

image.src = &quot;willfail.png&quot;
// first load returns an error, possibly from the error callback we do:
image.src = &quot;willwork.png&quot;

Also, I&apos;m not a big fan of functions being declared in the middle of function calls:

 26                 icon.addEventListener(&quot;load&quot;, function () {
 27                     var console = document.getElementById(&apos;console&apos;);
 28                     // If the image was loaded correctly, then height and width are not
 29                     // zero.
 30                     if (icon.height &amp;&amp; icon.width)
 31                         console.innerHTML = &quot;PASSED&quot;;
 32                     else
 33                         console.innerHTML = &quot;FAILED&quot;;
 34 
 35                     if (window.layoutTestController)
 36                         layoutTestController.notifyDone();
 37 
 38                 }, true);

I&apos;d rather see that declared in a local variable and used instead of as part of that function call.

Marking r- for now.  If you are convinced that the &quot;load works after error case&quot; is OK (i.e. that we already have a test case which checks that and it passes), then you can go ahead and land this.  Otherwise we&apos;ll need a test case to prove that the &quot;load a new url after the first one fails&quot; case works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89394</commentid>
    <comment_count>7</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2008-08-26 09:55:25 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 22964 [edit])
&gt; So are new HTMLImageLoader objects created every time a load is issued?

It is created once and reused between loads.
 
&gt; Otherwise I fear your patch will break things like:
&gt; 
&gt; image.src = &quot;willfail.png&quot;
&gt; // first load returns an error, possibly from the error callback we do:
&gt; image.src = &quot;willwork.png&quot;

Actually your test case will work as we return an small image when we try to load a non-existent image.
But you are right, there is an issue if the loader had an error. I will fix that, provide a test case and correct the misleading comment.


&gt; Also, I&apos;m not a big fan of functions being declared in the middle of function
&gt; calls:
&gt; 
&gt;  26                 icon.addEventListener(&quot;load&quot;, function () {
&gt;  27                     var console = document.getElementById(&apos;console&apos;);
&gt;  28                     // If the image was loaded correctly, then height and
&gt; width are not
&gt;  29                     // zero.
&gt;  30                     if (icon.height &amp;&amp; icon.width)
&gt;  31                         console.innerHTML = &quot;PASSED&quot;;
&gt;  32                     else
&gt;  33                         console.innerHTML = &quot;FAILED&quot;;
&gt;  34 
&gt;  35                     if (window.layoutTestController)
&gt;  36                         layoutTestController.notifyDone();
&gt;  37 
&gt;  38                 }, true);
&gt; 
&gt; I&apos;d rather see that declared in a local variable and used instead of as part of
&gt; that function call.

Having anonymous function is fine by me, but I will  make the change you are requesting as it is a standalone method that could easily be extracted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89397</commentid>
    <comment_count>8</comment_count>
      <attachid>23003</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2008-08-26 10:14:20 -0700</bug_when>
    <thetext>Created attachment 23003
Updated patch: tackles Eric&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89670</commentid>
    <comment_count>9</comment_count>
      <attachid>23003</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-28 13:24:58 -0700</bug_when>
    <thetext>Comment on attachment 23003
Updated patch: tackles Eric&apos;s comments

I&apos;m still slightly concerned by this patch as it might break existing callers of updateFromElement(), or future callers who don&apos;t know about this &quot;don&apos;t do anything if I&apos;ve ever seen an error&quot; behavior.  One way to address that would be to have updateFromElement take a flag which was used to trigger this kind of clear.  Another would be to ASSERT in updateElement that the current source was the same as the previous source, or simply to only not re-try in updateFromElement when the current source was the same and there was already an error.  Another way would be to just give updateFromElement a better name! (the current one is bad because it&apos;s so generic)

Hum... I just still think we can make this API clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90362</commentid>
    <comment_count>10</comment_count>
      <attachid>23215</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2008-09-06 07:02:38 -0700</bug_when>
    <thetext>Created attachment 23215
Updated patch: Store source url and check it when determining if the loader is in error

&gt; Hum... I just still think we can make this API clearer.

Sure, I have removed the awkward part and stored the source url so that we can determine if it is the same request we are doing (and abort it if it was in error).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93937</commentid>
    <comment_count>11</comment_count>
      <attachid>23215</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-10-03 12:44:14 -0700</bug_when>
    <thetext>Comment on attachment 23215
Updated patch: Store source url and check it when determining if the loader is in error

&gt; // our loader may have not fetched the image so do it now.

Should have a comma before &quot;so do it now&quot;.

&gt; // If we do not have an image here, it means that an error
&gt; // occurred (cross-site violation...).

I don&apos;t understand the meaning of &quot;...&quot; in this comment.

  class HTMLImageLoader : public CachedResourceClient {
+
  public:

Why are you adding a blank line here? We normally don&apos;t do that. The other blank line you added seems fine.

I&apos;m not sure the behavior here is right. If changing the URL triggers a new load, it&apos;s possible that re-setting the URL to the same value also should trigger a new load. We should test this in other browsers to be sure we match their behavior.

I&apos;m going to say r=me because I think it&apos;s OK to land this patch as-is. But I&apos;d really like to see us test that &quot;does changing the URL to the same value trigger a load&quot; question, because I think it may be needed to match the behavior of other web browsers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94233</commentid>
    <comment_count>12</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2008-10-06 09:28:53 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 23215 [edit])
&gt; &gt; // our loader may have not fetched the image so do it now.
&gt; 
&gt; Should have a comma before &quot;so do it now&quot;.

Sure.
&gt; 
&gt; &gt; // If we do not have an image here, it means that an error
&gt; &gt; // occurred (cross-site violation...).
&gt; 
&gt; I don&apos;t understand the meaning of &quot;...&quot; in this comment.

I do not know all the possible errors that could occur here. I guess I could just remove it.

&gt;   class HTMLImageLoader : public CachedResourceClient {
&gt; +
&gt;   public:
&gt; 
&gt; Why are you adding a blank line here? We normally don&apos;t do that. The other
&gt; blank line you added seems fine.

My bad, I got confused. It will be changed.

&gt; I&apos;m not sure the behavior here is right. If changing the URL triggers a new
&gt; load, it&apos;s possible that re-setting the URL to the same value also should
&gt; trigger a new load. We should test this in other browsers to be sure we match
&gt; their behavior.
&gt; 
&gt; I&apos;m going to say r=me because I think it&apos;s OK to land this patch as-is. But I&apos;d
&gt; really like to see us test that &quot;does changing the URL to the same value
&gt; trigger a load&quot; question, because I think it may be needed to match the
&gt; behavior of other web browsers.
&gt; 

The patch has rotten and the HTMLImageLoader has been shared with SVG in the ImageLoader so I will need to update it. I will try your use case and add the required test case while updating it. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94321</commentid>
    <comment_count>13</comment_count>
      <attachid>23215</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-10-06 18:25:08 -0700</bug_when>
    <thetext>Comment on attachment 23215
Updated patch: Store source url and check it when determining if the loader is in error

Patch has rotten, clearing review flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97884</commentid>
    <comment_count>14</comment_count>
      <attachid>24957</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2008-11-06 16:30:40 -0800</bug_when>
    <thetext>Created attachment 24957
New iteration: Tackles Darin&apos;s comments and match FF &amp; Opera

I have done a bit of testing as asked by Darin: Opera and FF both try to load the new url even if it is the same as the previous one (I could not test on IE).

The attached patch makes us to match FF and Opera. I have added a test case to check that we try to load the image even if it was in error and we set the &apos;src&apos; attribute to the existing value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98092</commentid>
    <comment_count>15</comment_count>
      <attachid>24957</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-09 11:58:34 -0800</bug_when>
    <thetext>Comment on attachment 24957
New iteration: Tackles Darin&apos;s comments and match FF &amp; Opera

&gt; -            m_imageLoader-&gt;updateFromElement();
&gt; +            m_imageLoader-&gt;updateFromElement(true);

The reason I don&apos;t like boolean arguments to functions like this is it&apos;s so hard to understand them at the call site. It would be a lot nicer if that argument had a name like TryAgain instead of just being true, or if this was a separate function with a sensible name, even if it only ends up being a boolean argument anyway.

&gt; -void ImageLoader::updateFromElement()
&gt; +void ImageLoader::updateFromElement(bool shouldIgnorePreviousLoadFailure)

You could also call this shouldTryLoadingAgain, or shouldRetryLoad. Perhaps a bit less precise but also maybe a little easier to understand.

&gt; +    AtomicString m_sourceURL;
&gt;      bool m_firedLoad : 1;
&gt;      bool m_imageComplete : 1;
&gt;      bool m_loadManually : 1;
&gt; +    bool m_hadError : 1;

After reading the logic carefully, I realize that you only need to store the old URL in the case where the load failed. I think we could change this to work that way. Then you could have m_failedLoadURL instead of m_sourceURL and not bother with m_hadError at all. I think the logic would stay simple and clear in that case.

r=me as-is, but we could consider making a little further improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98402</commentid>
    <comment_count>16</comment_count>
      <attachid>25079</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2008-11-11 17:12:01 -0800</bug_when>
    <thetext>Created attachment 25079
Another round: Remove the boolean and 

&gt; The reason I don&apos;t like boolean arguments to functions like this is it&apos;s so
&gt; hard to understand them at the call site. It would be a lot nicer if that
&gt; argument had a name like TryAgain instead of just being true, or if this was a
&gt; separate function with a sensible name, even if it only ends up being a boolean
&gt; argument anyway.

&gt; After reading the logic carefully, I realize that you only need to store the
&gt; old URL in the case where the load failed. I think we could change this to &gt; work
&gt; that way. Then you could have m_failedLoadURL instead of m_sourceURL and not
&gt; bother with m_hadError at all. I think the logic would stay simple and clear &gt; in
&gt; that case.

I have given it some thought and rewritten the error handling part to remove the m_hadError bool (as you were rightly pointing out). I also used this iteration to remove the boolean and add a method updateFromElementIgnoringPreviousError. This should address the two previous comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101497</commentid>
    <comment_count>17</comment_count>
      <attachid>25079</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-12-05 09:30:46 -0800</bug_when>
    <thetext>Comment on attachment 25079
Another round: Remove the boolean and 

I&apos;m going to say review+ on this. I think the comments are too repetitive, but this is otherwise very good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101868</commentid>
    <comment_count>18</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2008-12-08 15:20:27 -0800</bug_when>
    <thetext>Landed the patch in r39104 after having factored out the comments into ImageLoader.h and tweaked the svg test case to avoid adding a platform specific test case.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22964</attachid>
            <date>2008-08-24 06:20:33 -0700</date>
            <delta_ts>2008-11-06 16:30:40 -0800</delta_ts>
            <desc>Bug fix: fetch image when inserted if necessary and add an error flag in the loader</desc>
            <filename>ImageLoader.patch</filename>
            <type>text/plain</type>
            <size>13105</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTkwMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMDgtMDgtMjMgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQnVnIDE3ODk3OiBOb3QgUmVuZGVyaW5nIEltYWdlcyBJbXBvcnRlZCBmcm9tIFhIVE1M
IERvY3VtZW50CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODI3NjE0PgorCisgICAgICAgIFdo
ZW4gd2Ugd2VyZSBsb2FkaW5nIGRvY3VtZW50IGluY2x1ZGluZyBpbWFnZXMgd2l0aCBYTUxIdHRw
UmVxdWVzdCwgdGhlIGltYWdlcworICAgICAgICB3b3VsZCBub3QgYmUgZmV0Y2hlZCBhcyB0aGV5
IHdvdWxkIG5vdCBiZSBkaXNwbGF5ZWQuIEhvd2V2ZXIgaWYgd2UgaW5zZXJ0ZWQgc3VjaAorICAg
ICAgICBhbiBpbWFnZSBlbGVtZW50IGludG8gYSByZW5kZXJlciBkb2N1bWVudCwgd2Ugd291bGQg
bm90IGZldGNoIHRoZSBpbWFnZSBhbmQgdGh1cyBuZXZlcgorICAgICAgICBkaXNwbGF5IGl0Lgor
CisgICAgICAgIE5vdyB3ZSBjaGVjayBpZiB0aGUgaW1hZ2UgaGFzIGJlZW4gbG9hZGVkIHdoZW4g
aW5zZXJ0aW5nIGFuIEhUTUxJbWFnZUVsZW1lbnQuCisgICAgICAgIFRvIGF2b2lkIGRvaW5nIHNl
dmVyYWwgdXNlbGVzcyBsb2FkaW5nIGF0dGVtcHRzLCB0aGUgaW1hZ2UgbG9hZGVyIG5vdyBoYXMg
YW4gZXJyb3IKKyAgICAgICAgZmxhZy4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1pbWFnZS1ub3QtbG9hZGVkLXN2Zy5zdmcKKyAgICAg
ICAgICAgICAgIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtaW1hZ2Ut
bm90LWxvYWRlZC5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQp
OgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbWFnZUxvYWRlcjo6SFRNTEltYWdlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbWFnZUxvYWRlcjo6c2V0SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlTG9h
ZGVyOjp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VMb2Fk
ZXI6OmRpc3BhdGNoTG9hZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUxvYWRl
cjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlTG9hZGVyLmg6CisK
IDIwMDgtMDgtMjMgIENhbWVyb24gWndhcmljaCAgPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CiAK
ICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgTWFyayBSb3dlLgpJbmRleDogV2ViQ29yZS9odG1s
L0hUTUxJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmNwcAkocmV2aXNpb24gMzU5MDApCisrKyBXZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NSw2ICsxOTUsMTEgQEAgdm9pZCBIVE1M
SW1hZ2VFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bQogICAgICAgICBkb2N1bWVudC0+YWRkRXh0
cmFOYW1lZEl0ZW0obV9pZCk7CiAgICAgfQogCisgICAgLy8gSWYgd2UgaGF2ZSBiZWVuIGluc2Vy
dGVkIGZyb20gYSByZW5kZXJlci1sZXNzIGRvY3VtZW50LAorICAgIC8vIG91ciBsb2FkZXIgbWF5
IGhhdmUgbm90IGZldGNoZWQgdGhlIGltYWdlIHNvIGRvIGl0IG5vdy4KKyAgICBpZiAoIW1faW1h
Z2VMb2FkZXIuaW1hZ2UoKSkKKyAgICAgICAgbV9pbWFnZUxvYWRlci51cGRhdGVGcm9tRWxlbWVu
dCgpOworCiAgICAgSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCk7CiB9CiAKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9IVE1MSW1hZ2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VMb2FkZXIuY3BwCShyZXZpc2lvbiAzNTkwMCkKKysrIFdlYkNvcmUv
aHRtbC9IVE1MSW1hZ2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBA
IEhUTUxJbWFnZUxvYWRlcjo6SFRNTEltYWdlTG9hZGVyKEVsZW1lbnQKICAgICAsIG1fZmlyZWRM
b2FkKHRydWUpCiAgICAgLCBtX2ltYWdlQ29tcGxldGUodHJ1ZSkKICAgICAsIG1fbG9hZE1hbnVh
bGx5KGZhbHNlKQorICAgICwgbV9oYWRFcnJvcihmYWxzZSkKIHsKIH0KIApAQCAtNTcsNiArNTgs
NyBAQCBIVE1MSW1hZ2VMb2FkZXI6On5IVE1MSW1hZ2VMb2FkZXIoKQogCiB2b2lkIEhUTUxJbWFn
ZUxvYWRlcjo6c2V0SW1hZ2UoQ2FjaGVkSW1hZ2UgKm5ld0ltYWdlKQogeworICAgIEFTU0VSVCgh
bV9oYWRFcnJvcik7CiAgICAgQ2FjaGVkSW1hZ2UgKm9sZEltYWdlID0gbV9pbWFnZTsKICAgICBp
ZiAobmV3SW1hZ2UgIT0gb2xkSW1hZ2UpIHsKICAgICAgICAgc2V0TG9hZGluZ0ltYWdlKG5ld0lt
YWdlKTsKQEAgLTgyLDYgKzg0LDkgQEAgdm9pZCBIVE1MSW1hZ2VMb2FkZXI6OnNldExvYWRpbmdJ
bWFnZShDYQogCiB2b2lkIEhUTUxJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQoKQogewor
ICAgIGlmIChtX2hhZEVycm9yKQorICAgICAgICByZXR1cm47CisKICAgICAvLyBJZiB3ZSdyZSBu
b3QgbWFraW5nIHJlbmRlcmVycyBmb3IgdGhlIHBhZ2UsIHRoZW4gZG9uJ3QgbG9hZCBpbWFnZXMu
ICBXZSBkb24ndCB3YW50IHRvIHNsb3cKICAgICAvLyBkb3duIHRoZSByYXcgSFRNTCBwYXJzaW5n
IGNhc2UgYnkgbG9hZGluZyBpbWFnZXMgd2UgZG9uJ3QgaW50ZW5kIHRvIGRpc3BsYXkuCiAgICAg
RWxlbWVudCogZWxlbSA9IGVsZW1lbnQoKTsKQEAgLTEwNSw2ICsxMTAsMTEgQEAgdm9pZCBIVE1M
SW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50KAogICAgICAgICAgICAgZG9jLT5kb2NMb2Fk
ZXIoKS0+bV9kb2NSZXNvdXJjZXMuc2V0KG5ld0ltYWdlLT51cmwoKSwgbmV3SW1hZ2UpOwogICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgIG5ld0ltYWdlID0gZG9jLT5kb2NMb2FkZXIoKS0+cmVx
dWVzdEltYWdlKHBhcnNlVVJMKGF0dHIpKTsKKworICAgICAgICAvLyBJZiB3ZSBkbyBub3QgaGF2
ZSBhbiBpbWFnZSBoZXJlLCBpdCBtZWFucyB0aGF0IGFuIGVycm9yCisgICAgICAgIC8vIG9jY3Vy
cmVkIChjcm9zcy1zaXRlIHZpb2xhdGlvbiwgcmVzb3VyY2Ugbm90IGZvdW5kLi4uKQorICAgICAg
ICBpZiAoIW5ld0ltYWdlKQorICAgICAgICAgICAgbV9oYWRFcnJvciA9IHRydWU7CiAgICAgfQog
ICAgIAogICAgIENhY2hlZEltYWdlICpvbGRJbWFnZSA9IG1faW1hZ2U7CkBAIC0xMjcsNiArMTM3
LDcgQEAgdm9pZCBIVE1MSW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50KAogCiB2b2lkIEhU
TUxJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hMb2FkRXZlbnQoKQogeworICAgIEFTU0VSVCghbV9oYWRF
cnJvcik7CiAgICAgaWYgKCFoYXZlRmlyZWRMb2FkRXZlbnQoKSAmJiBpbWFnZSgpKSB7CiAgICAg
ICAgIHNldEhhdmVGaXJlZExvYWRFdmVudCh0cnVlKTsKICAgICAgICAgZWxlbWVudCgpLT5kaXNw
YXRjaEhUTUxFdmVudChpbWFnZSgpLT5lcnJvck9jY3VycmVkKCkgPyBlcnJvckV2ZW50IDogbG9h
ZEV2ZW50LCBmYWxzZSwgZmFsc2UpOwpAQCAtMTM1LDYgKzE0Niw3IEBAIHZvaWQgSFRNTEltYWdl
TG9hZGVyOjpkaXNwYXRjaExvYWRFdmVudCgKIAogdm9pZCBIVE1MSW1hZ2VMb2FkZXI6Om5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlICppbWFnZSkKIHsKKyAgICBBU1NFUlQoIW1faGFkRXJy
b3IpOwogICAgIG1faW1hZ2VDb21wbGV0ZSA9IHRydWU7CiAgICAgRWxlbWVudCogZWxlbSA9IGVs
ZW1lbnQoKTsKICAgICBEb2N1bWVudCogZG9jID0gZWxlbS0+ZG9jdW1lbnQoKTsKSW5kZXg6IFdl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTEltYWdlTG9hZGVyLmgJKHJldmlzaW9uIDM1OTAwKQorKysgV2ViQ29yZS9odG1sL0hUTUxJ
bWFnZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2ZpcmVkTG9hZCA6IDE7CiAgICAgYm9vbCBtX2ltYWdlQ29tcGxldGUgOiAxOwog
ICAgIGJvb2wgbV9sb2FkTWFudWFsbHkgOiAxOworICAgIGJvb2wgbV9oYWRFcnJvciA6IDE7CiB9
OwogCiB9IC8vbmFtZXNwYWNlCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzNTkwMCkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDA4LTA4LTIz
ICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3QgY2FzZSBmb3IgYnVnIDE3
ODk3OiBOb3QgUmVuZGVyaW5nIEltYWdlcyBJbXBvcnRlZCBmcm9tIFhIVE1MIERvY3VtZW50Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODI3NjE0PgorCisgICAgICAgIFRlc3QgdGhhdCBhbiBp
bWFnZSBsb2FkZWQgYnkgYW4gWE1MSHR0cFJlcXVlc3QgYW5kIGluc2VydGVkIGludG8gYSBYSFRN
TCBvciBTVkcgRG9jdW1lbnQKKyAgICAgICAgaXMgcHJvcGVybHkgcmVuZGVyZWQuCisKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9sb2FkLWljb24uc3ZnOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9sb2Fk
LWljb24ueGh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
eG1saHR0cHJlcXVlc3QtaW1hZ2Utbm90LWxvYWRlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtaW1hZ2Utbm90
LWxvYWRlZC1zdmcuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L3htbGh0dHByZXF1ZXN0LWltYWdlLW5vdC1sb2FkZWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Q6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0
LWltYWdlLW5vdC1sb2FkZWQtc3ZnLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMDgtMDgtMjMg
IERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
YXZlIEh5YXR0LgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94
bWxodHRwcmVxdWVzdC1pbWFnZS1ub3QtbG9hZGVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWlt
YWdlLW5vdC1sb2FkZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1pbWFnZS1ub3QtbG9hZGVk
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitUZXN0IGNhc2UgZm9y
IGJ1ZyAxNzg5NyA6IE5vdCBSZW5kZXJpbmcgSW1hZ2VzIEltcG9ydGVkIGZyb20gWEhUTUwgRG9j
dW1lbnQKKworUEFTU0VECkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L3htbGh0dHByZXF1ZXN0LWltYWdlLW5vdC1sb2FkZWQtc3ZnLnN2Zwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWlt
YWdlLW5vdC1sb2FkZWQtc3ZnLnN2ZwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtaW1hZ2Utbm90LWxvYWRlZC1zdmcu
c3ZnCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVu
Y29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAx
LjAvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL0RURC9zdmcxMC5kdGQiPgorPHN2ZyB3
aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgICA8c2Ny
aXB0IHR5cGU9InRleHQvZWNtYXNjcmlwdCI+IDwhW0NEQVRBWworICAgICAgICB2YXIgeGhyID0g
bmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgICAgIHhoci5vcGVuKCdHRVQnLCAncmVzb3VyY2Vz
L2xvYWQtaWNvbi5zdmcnKTsKKyAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0
aW9uKCl7CisgICAgICAgICAgICBpZih4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CisgICAgICAgICAg
ICAgICAgdmFyIGcgPSB4aHIucmVzcG9uc2VYTUwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2cnKVsw
XTsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5h
ZG9wdE5vZGUoZyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhdGNoKGUp
e30KKworICAgICAgICAgICAgICAgIHZhciBpY29uID0gZy5nZXRFbGVtZW50c0J5VGFnTmFtZSgn
aW1hZ2UnKVswXTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1h
Z2UnKS5hcHBlbmRDaGlsZChnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAg
eGhyLnNlbmQobnVsbCk7CitdXT4gPC9zY3JpcHQ+CisgICAgPHRleHQgeD0iMCIgeT0iMjAiPiBU
ZXN0IGNhc2UgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzg5NyI+IGJ1ZyAxNzg5NyA8L2E+OiAgTm90IFJlbmRlcmluZyBJbWFnZXMgSW1wb3J0
ZWQgZnJvbSBYSFRNTCBEb2N1bWVudCA8L3RleHQ+CisgICAgPHRleHQgeT0iNDAiPiBZb3Ugc2hv
dWxkIHNlZSBhIGdyZWVuIDUwIHggMjUwIGJveC4gPC90ZXh0PgorICAgIDxnIGlkPSdpbWFnZScg
eT0iNjAiIHdpZHRoPSIyNTAiIGhlaWdodD0iNTAiPiA8L2c+Cis8L3N2Zz4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtaW1hZ2Utbm90
LWxvYWRlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtaW1hZ2Utbm90LWxvYWRlZC5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVz
dC1pbWFnZS1ub3QtbG9hZGVkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8dGl0bGU+U2FmYXJpIElzc3VlOiBOb3QgUmVuZGVy
aW5nIEltYWdlcyBJbXBvcnRlZCBmcm9tIFhIVE1MIERvY3VtZW50PC90aXRsZT4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxwPiBUZXN0IGNhc2UgZm9yIDxhIGhyZWY9Imh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg5NyI+IGJ1ZyAxNzg5NyA8L2E+
OiAgTm90IFJlbmRlcmluZyBJbWFnZXMgSW1wb3J0ZWQgZnJvbSBYSFRNTCBEb2N1bWVudCA8L3A+
CisgICAgICAgIDxkaXYgaWQ9J2NvbnNvbGUnPkZBSUxFRCAoZGlkIG5vdCBsb2FkIHRoZSBpbWFn
ZSk8L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0naW1hZ2UnIHN0eWxlPSJkaXNwbGF5OiBub25lIj4g
PC9kaXY+CisgICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHhociA9IG5ldyBY
TUxIdHRwUmVxdWVzdCgpOworICAgICAgICB4aHIub3BlbignR0VUJywgJ3Jlc291cmNlcy9sb2Fk
LWljb24ueGh0bWwnKTsKKyAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9u
KCl7CisgICAgICAgICAgICBpZih4aHIucmVhZHlTdGF0ZSA9PSA0ICYmIHhoci5zdGF0dXMgPT0g
MjAwKSB7CisgICAgICAgICAgICAgICAgdmFyIGRpdiA9IHhoci5yZXNwb25zZVhNTC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgnZGl2JylbMF07CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuYWRvcHROb2RlKGRpdik7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGNhdGNoKGUpe30KKworICAgICAgICAgICAgICAgIHZhciBpY29uID0g
ZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbWcnKVswXTsKKyAgICAgICAgICAgICAgICBpY29u
LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
ICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKTsKKyAg
ICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGltYWdlIHdhcyBsb2FkZWQgY29ycmVjdGx5LCB0
aGVuIGhlaWdodCBhbmQgd2lkdGggYXJlIG5vdAorICAgICAgICAgICAgICAgICAgICAvLyB6ZXJv
LgorICAgICAgICAgICAgICAgICAgICBpZiAoaWNvbi5oZWlnaHQgJiYgaWNvbi53aWR0aCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MID0gIlBBU1NFRCI7CisgICAg
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuaW5u
ZXJIVE1MID0gIkZBSUxFRCI7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKKworICAgICAgICAgICAgICAgIH0sIHRydWUpOworCisgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltYWdlJykuYXBwZW5kQ2hpbGQo
ZGl2KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgeGhyLnNlbmQobnVsbCk7
CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2xvYWQtaWNvbi5zdmcKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJj
ZXMvbG9hZC1pY29uLnN2ZwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2xvYWQtaWNvbi5zdmcJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhRE9D
VFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4wLy9FTiIgImh0dHA6Ly93d3cudzMu
b3JnL1RSL1NWRy9EVEQvc3ZnMTAuZHRkIj4KKzxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAw
JSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgICAgPGcgeD0iMCIgeT0iNjAiIHdpZHRoPSIyNTAi
IGhlaWdodD0iNTAiPgorICAgICAgICA8IS0tIHRoZSBwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBw
YXJlbnQgZGlyZWN0b3J5IC0tPgorICAgICAgICA8aW1hZ2UgeGxpbms6aHJlZj0iLi4vc2VjdXJp
dHkvcmVzb3VyY2VzL2dyZWVuMjUweDUwLnBuZyIgeD0iMCIgeT0iNjAiIHdpZHRoPSIyNTAiIGhl
aWdodD0iNTAiIGFsdD0iaWNvbiIgaWQ9Imljb24iLz4KKyAgICA8L2c+Cis8L3N2Zz4KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2xvYWQtaWNv
bi54aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L3Jlc291cmNlcy9sb2FkLWljb24ueGh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9sb2FkLWljb24ueGh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDx0aXRsZT5UZXN0IFhIVE1MIERvY3VtZW50IGNvbnRhaW5pbmcg
SW1hZ2VzPC90aXRsZT4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxkaXY+Cisg
ICAgICAgICAgICA8IS0tIHRoZSBwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBwYXJlbnQgZGlyZWN0
b3J5IC0tPgorICAgICAgICAgICAgPGltZyBzcmM9Ii4uL3NlY3VyaXR5L3Jlc291cmNlcy9ncmVl
bjI1MHg1MC5wbmciIGFsdD0iaWNvbiIgaWQ9Imljb24iLz4KKyAgICAgICAgPC9kaXY+CisgICAg
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtaW1hZ2Utbm90LWxvYWRlZC1zdmctZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWltYWdlLW5vdC1sb2FkZWQtc3ZnLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWltYWdlLW5vdC1sb2FkZWQtc3Zn
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOSBAQAorbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXll
ciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyU1ZHUm9vdCB7c3ZnfSBhdCAoMCw2KSBz
aXplIDUzNHgxMDQKKyAgICBSZW5kZXJTVkdUZXh0IHt0ZXh0fSBhdCAoMCwyMCkgc2l6ZSA1MzR4
MTggY29udGFpbnMgMSBjaHVuayhzKQorICAgICAgUmVuZGVyU1ZHSW5saW5lVGV4dCB7I3RleHR9
IGF0ICgwLC0xNCkgc2l6ZSA4NHgxOAorICAgICAgICBjaHVuayAxIHRleHQgcnVuIDEgYXQgKDAu
MDAsMjAuMDApIHN0YXJ0T2Zmc2V0IDAgZW5kT2Zmc2V0IDE0IHdpZHRoIDg0LjAwOiAiVGVzdCBj
YXNlIGZvciAiCisgICAgICBSZW5kZXJTVkdJbmxpbmUge2F9IGF0ICgwLDApIHNpemUgNzJ4MTgK
KyAgICAgICAgUmVuZGVyU1ZHSW5saW5lVGV4dCB7I3RleHR9IGF0ICg4NCwtMTQpIHNpemUgNzJ4
MTgKKyAgICAgICAgICBjaHVuayAxIHRleHQgcnVuIDIgYXQgKDg0LjAwLDIwLjAwKSBzdGFydE9m
ZnNldCAwIGVuZE9mZnNldCAxMCB3aWR0aCA3Mi4wMDogImJ1ZyAxNzg5NyAiCisgICAgICBSZW5k
ZXJTVkdJbmxpbmVUZXh0IHsjdGV4dH0gYXQgKDE1NiwtMTQpIHNpemUgMzc4eDE4CisgICAgICAg
IGNodW5rIDEgdGV4dCBydW4gMyBhdCAoMTU2LjAwLDIwLjAwKSBzdGFydE9mZnNldCAwIGVuZE9m
ZnNldCAyIHdpZHRoIDguMDA6ICI6ICIKKyAgICAgICAgY2h1bmsgMSB0ZXh0IHJ1biA0IGF0ICgx
NjQuMDAsMjAuMDApIHN0YXJ0T2Zmc2V0IDAgZW5kT2Zmc2V0IDQ5IHdpZHRoIDM3MC4wMDogIk5v
dCBSZW5kZXJpbmcgSW1hZ2VzIEltcG9ydGVkIGZyb20gWEhUTUwgRG9jdW1lbnQiCisgICAgUmVu
ZGVyU1ZHVGV4dCB7dGV4dH0gYXQgKDAsNDApIHNpemUgMjQweDE4IGNvbnRhaW5zIDEgY2h1bmso
cykKKyAgICAgIFJlbmRlclNWR0lubGluZVRleHQgeyN0ZXh0fSBhdCAoMCwtMTQpIHNpemUgMjQw
eDE4CisgICAgICAgIGNodW5rIDEgdGV4dCBydW4gMSBhdCAoMC4wMCw0MC4wMCkgc3RhcnRPZmZz
ZXQgMCBlbmRPZmZzZXQgMzYgd2lkdGggMjQwLjAwOiAiWW91IHNob3VsZCBzZWUgYSBncmVlbiA1
MCB4IDI1MCBib3guIgorICAgIFJlbmRlclNWR0NvbnRhaW5lciB7Z30gYXQgKDAsNjApIHNpemUg
MjUweDUwCisgICAgICBSZW5kZXJTVkdDb250YWluZXIge2d9IGF0ICgwLDYwKSBzaXplIDI1MHg1
MAorICAgICAgICBSZW5kZXJJbWFnZSB7aW1hZ2V9IGF0ICgwLDApIHNpemUgMjUweDUwCg==
</data>
<flag name="review"
          id="10222"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23003</attachid>
            <date>2008-08-26 10:14:20 -0700</date>
            <delta_ts>2008-11-06 16:30:40 -0800</delta_ts>
            <desc>Updated patch: tackles Eric&apos;s comments</desc>
            <filename>ImageLoader-updated.patch</filename>
            <type>text/plain</type>
            <size>17380</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTkzMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzggQEAKKzIwMDgtMDgtMjYgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQnVnIDE3ODk3OiBOb3QgUmVuZGVyaW5nIEltYWdlcyBJbXBvcnRlZCBmcm9tIFhIVE1M
IERvY3VtZW50CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODI3NjE0PgorCisgICAgICAgIFdo
ZW4gd2Ugd2VyZSBsb2FkaW5nIGRvY3VtZW50IGluY2x1ZGluZyBpbWFnZXMgd2l0aCBYTUxIdHRw
UmVxdWVzdCwgdGhlIGltYWdlcworICAgICAgICB3b3VsZCBub3QgYmUgZmV0Y2hlZCBhcyB0aGV5
IHdvdWxkIG5vdCBiZSBkaXNwbGF5ZWQuIEhvd2V2ZXIgaWYgd2UgaW5zZXJ0ZWQgc3VjaAorICAg
ICAgICBhbiBpbWFnZSBlbGVtZW50IGludG8gYSByZW5kZXJlciBkb2N1bWVudCwgd2Ugd291bGQg
bm90IGZldGNoIHRoZSBpbWFnZSBhbmQgdGh1cyBuZXZlcgorICAgICAgICBkaXNwbGF5IGl0Lgor
CisgICAgICAgIE5vdyB3ZSBjaGVjayBpZiB0aGUgaW1hZ2UgaGFzIGJlZW4gbG9hZGVkIHdoZW4g
aW5zZXJ0aW5nIGFuIEhUTUxJbWFnZUVsZW1lbnQuCisgICAgICAgIFRvIGF2b2lkIGRvaW5nIHNl
dmVyYWwgdXNlbGVzcyBsb2FkaW5nIGF0dGVtcHRzLCB0aGUgaW1hZ2UgbG9hZGVyIG5vdyBoYXMg
YW4gZXJyb3IKKyAgICAgICAgZmxhZy4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9taXNj
L2ltYWdlLWJsb2NrZWQtc3JjLWNoYW5nZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWltYWdlLW5vdC1sb2FkZWQtc3ZnLnN2Zwor
ICAgICAgICAgICAgICAgaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1p
bWFnZS1ub3QtbG9hZGVkLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZSk6IENsZWFyIHRoZSBoYWRFcnJvciBmbGFnCisgICAgICAgIHNvIHRoYXQgc3JjIGF0dHJp
YnV0ZSBjaGFuZ2UgbGVhZCB0byBmZXRjaGluZyB0aGUgcmVzb3VyY2UgZXZlbiBpZiBzb21lIGVy
cm9yCisgICAgICAgIG9jY3VycmVkIGZvciB0aGUgcHJldmlvdXMgcmVzb3VyY2UuCisKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KToKKyAg
ICAgICAgKiBodG1sL0hUTUxJbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW1hZ2VMb2FkZXI6OkhUTUxJbWFnZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1h
Z2VMb2FkZXI6OnNldEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUxvYWRlcjo6
dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlTG9hZGVyOjpk
aXNwYXRjaExvYWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VMb2FkZXI6Om5v
dGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUxvYWRlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEltYWdlTG9hZGVyOjpjbGVhckhhZEVycm9yKToKKwogMjAwOC0wOC0y
NSAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbi4KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAJKHJldmlz
aW9uIDM1OTMwKQorKysgV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05MCw5ICs5MCwxMSBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmliCiAgICAgaWYgKGF0dHJOYW1lID09IGFsdEF0dHIpIHsKICAgICAgICAgaWYgKHJl
bmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+aXNJbWFnZSgpKQogICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8UmVuZGVySW1hZ2UqPihyZW5kZXJlcigpKS0+dXBkYXRlQWx0VGV4dCgpOwotICAgIH0gZWxz
ZSBpZiAoYXR0ck5hbWUgPT0gc3JjQXR0cikKKyAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IHNy
Y0F0dHIpIHsKKyAgICAgICAgLy8gQ2xlYXIgbG9hZGVyIGVycm9yIHNvIHRoYXQgaXQgZG9lcyBs
b2FkIHRoZSBuZXcgc3JjLgorICAgICAgICBtX2ltYWdlTG9hZGVyLmNsZWFySGFkRXJyb3IoKTsK
ICAgICAgICAgbV9pbWFnZUxvYWRlci51cGRhdGVGcm9tRWxlbWVudCgpOwotICAgIGVsc2UgaWYg
KGF0dHJOYW1lID09IHdpZHRoQXR0cikKKyAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IHdpZHRo
QXR0cikKICAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5V2lkdGgsIGF0dHIt
PnZhbHVlKCkpOwogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGhlaWdodEF0dHIpCiAgICAgICAg
IGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0eUhlaWdodCwgYXR0ci0+dmFsdWUoKSk7CkBA
IC0xOTUsNiArMTk3LDExIEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9j
dW0KICAgICAgICAgZG9jdW1lbnQtPmFkZEV4dHJhTmFtZWRJdGVtKG1faWQpOwogICAgIH0KIAor
ICAgIC8vIElmIHdlIGhhdmUgYmVlbiBpbnNlcnRlZCBmcm9tIGEgcmVuZGVyZXItbGVzcyBkb2N1
bWVudCwKKyAgICAvLyBvdXIgbG9hZGVyIG1heSBoYXZlIG5vdCBmZXRjaGVkIHRoZSBpbWFnZSBz
byBkbyBpdCBub3cuCisgICAgaWYgKCFtX2ltYWdlTG9hZGVyLmltYWdlKCkpCisgICAgICAgIG1f
aW1hZ2VMb2FkZXIudXBkYXRlRnJvbUVsZW1lbnQoKTsKKwogICAgIEhUTUxFbGVtZW50OjppbnNl
cnRlZEludG9Eb2N1bWVudCgpOwogfQogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9h
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVyLmNwcAko
cmV2aXNpb24gMzU5MzApCisrKyBXZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQCBIVE1MSW1hZ2VMb2FkZXI6OkhUTUxJbWFnZUxv
YWRlcihFbGVtZW50CiAgICAgLCBtX2ZpcmVkTG9hZCh0cnVlKQogICAgICwgbV9pbWFnZUNvbXBs
ZXRlKHRydWUpCiAgICAgLCBtX2xvYWRNYW51YWxseShmYWxzZSkKKyAgICAsIG1faGFkRXJyb3Io
ZmFsc2UpCiB7CiB9CiAKQEAgLTU3LDYgKzU4LDcgQEAgSFRNTEltYWdlTG9hZGVyOjp+SFRNTElt
YWdlTG9hZGVyKCkKIAogdm9pZCBIVE1MSW1hZ2VMb2FkZXI6OnNldEltYWdlKENhY2hlZEltYWdl
ICpuZXdJbWFnZSkKIHsKKyAgICBBU1NFUlQoIW1faGFkRXJyb3IpOwogICAgIENhY2hlZEltYWdl
ICpvbGRJbWFnZSA9IG1faW1hZ2U7CiAgICAgaWYgKG5ld0ltYWdlICE9IG9sZEltYWdlKSB7CiAg
ICAgICAgIHNldExvYWRpbmdJbWFnZShuZXdJbWFnZSk7CkBAIC04Miw2ICs4NCw5IEBAIHZvaWQg
SFRNTEltYWdlTG9hZGVyOjpzZXRMb2FkaW5nSW1hZ2UoQ2EKIAogdm9pZCBIVE1MSW1hZ2VMb2Fk
ZXI6OnVwZGF0ZUZyb21FbGVtZW50KCkKIHsKKyAgICBpZiAobV9oYWRFcnJvcikKKyAgICAgICAg
cmV0dXJuOworCiAgICAgLy8gSWYgd2UncmUgbm90IG1ha2luZyByZW5kZXJlcnMgZm9yIHRoZSBw
YWdlLCB0aGVuIGRvbid0IGxvYWQgaW1hZ2VzLiAgV2UgZG9uJ3Qgd2FudCB0byBzbG93CiAgICAg
Ly8gZG93biB0aGUgcmF3IEhUTUwgcGFyc2luZyBjYXNlIGJ5IGxvYWRpbmcgaW1hZ2VzIHdlIGRv
bid0IGludGVuZCB0byBkaXNwbGF5LgogICAgIEVsZW1lbnQqIGVsZW0gPSBlbGVtZW50KCk7CkBA
IC0xMDUsNiArMTEwLDExIEBAIHZvaWQgSFRNTEltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVu
dCgKICAgICAgICAgICAgIGRvYy0+ZG9jTG9hZGVyKCktPm1fZG9jUmVzb3VyY2VzLnNldChuZXdJ
bWFnZS0+dXJsKCksIG5ld0ltYWdlKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBuZXdJ
bWFnZSA9IGRvYy0+ZG9jTG9hZGVyKCktPnJlcXVlc3RJbWFnZShwYXJzZVVSTChhdHRyKSk7CisK
KyAgICAgICAgLy8gSWYgd2UgZG8gbm90IGhhdmUgYW4gaW1hZ2UgaGVyZSwgaXQgbWVhbnMgdGhh
dCBhbiBlcnJvcgorICAgICAgICAvLyBvY2N1cnJlZCAoY3Jvc3Mtc2l0ZSB2aW9sYXRpb24uLi4p
LgorICAgICAgICBpZiAoIW5ld0ltYWdlKQorICAgICAgICAgICAgbV9oYWRFcnJvciA9IHRydWU7
CiAgICAgfQogICAgIAogICAgIENhY2hlZEltYWdlICpvbGRJbWFnZSA9IG1faW1hZ2U7CkBAIC0x
MjcsNiArMTM3LDcgQEAgdm9pZCBIVE1MSW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50KAog
CiB2b2lkIEhUTUxJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hMb2FkRXZlbnQoKQogeworICAgIEFTU0VS
VCghbV9oYWRFcnJvcik7CiAgICAgaWYgKCFoYXZlRmlyZWRMb2FkRXZlbnQoKSAmJiBpbWFnZSgp
KSB7CiAgICAgICAgIHNldEhhdmVGaXJlZExvYWRFdmVudCh0cnVlKTsKICAgICAgICAgZWxlbWVu
dCgpLT5kaXNwYXRjaEhUTUxFdmVudChpbWFnZSgpLT5lcnJvck9jY3VycmVkKCkgPyBlcnJvckV2
ZW50IDogbG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpOwpAQCAtMTM1LDYgKzE0Niw3IEBAIHZvaWQg
SFRNTEltYWdlTG9hZGVyOjpkaXNwYXRjaExvYWRFdmVudCgKIAogdm9pZCBIVE1MSW1hZ2VMb2Fk
ZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlICppbWFnZSkKIHsKKyAgICBBU1NFUlQo
IW1faGFkRXJyb3IpOwogICAgIG1faW1hZ2VDb21wbGV0ZSA9IHRydWU7CiAgICAgRWxlbWVudCog
ZWxlbSA9IGVsZW1lbnQoKTsKICAgICBEb2N1bWVudCogZG9jID0gZWxlbS0+ZG9jdW1lbnQoKTsK
SW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSW1hZ2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvSFRNTEltYWdlTG9hZGVyLmgJKHJldmlzaW9uIDM1OTMwKQorKysgV2ViQ29yZS9o
dG1sL0hUTUxJbWFnZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw5IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKTsK
IAogICAgIGJvb2wgaGF2ZUZpcmVkTG9hZEV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9maXJlZExv
YWQ7IH0KKworICAgIHZvaWQgY2xlYXJIYWRFcnJvcigpIHsgbV9oYWRFcnJvciA9IGZhbHNlOyB9
CisKIHByb3RlY3RlZDoKICAgICB2b2lkIHNldExvYWRpbmdJbWFnZShDYWNoZWRJbWFnZSopOwog
ICAgIApAQCAtNjMsNiArNjYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9maXJlZExvYWQgOiAx
OwogICAgIGJvb2wgbV9pbWFnZUNvbXBsZXRlIDogMTsKICAgICBib29sIG1fbG9hZE1hbnVhbGx5
IDogMTsKKyAgICBib29sIG1faGFkRXJyb3IgOiAxOwogfTsKIAogfSAvL25hbWVzcGFjZQpJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMzU5MzEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAwOC0wOC0yNiAgSnVsaWVuIENoYWZmcmFpeCAgPGpj
aGFmZnJhaXhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUZXN0cyBjYXNlcyBmb3IgYnVnIDE3ODk3OiBOb3QgUmVuZGVyaW5nIElt
YWdlcyBJbXBvcnRlZCBmcm9tIFhIVE1MIERvY3VtZW50CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS81ODI3NjE0PgorCisgICAgICAgIC0geG1saHR0cHJlcXVlc3QtaW1hZ2Utbm90LWxvYWRlZCo6
IHRlc3QgdGhhdCBhbiBpbWFnZSBsb2FkZWQgYnkgYW4gWE1MSHR0cFJlcXVlc3QgYW5kIGluc2Vy
dGVkIGludG8gYSBYSFRNTCBvciBTVkcgRG9jdW1lbnQKKyAgICAgICAgaXMgcHJvcGVybHkgcmVu
ZGVyZWQuCisKKyAgICAgICAgLSBpbWFnZS1ibG9ja2VkLXNyYy1jaGFuZ2UuaHRtbDogdGVzdHMg
dGhhdCBhbiBpbWFnZSB0aGF0IHdhcyBpbiBlcnJvciBpcyByZXNwb25kaW5nIHRvIHNyYyBhdHRy
aWJ1dGUgY2hhbmdlLgorCisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL2ltYWdlLWJsb2NrZWQt
c3JjLWNoYW5nZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlz
Yy9pbWFnZS1ibG9ja2VkLXNyYy1jaGFuZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvbG9hZC1pY29uLnN2ZzogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvbG9hZC1pY29uLnhodG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1
ZXN0LWltYWdlLW5vdC1sb2FkZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWltYWdlLW5vdC1sb2FkZWQtc3Zn
LnN2ZzogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRw
cmVxdWVzdC1pbWFnZS1ub3QtbG9hZGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1pbWFnZS1ub3Qt
bG9hZGVkLXN2Zy1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDA4LTA4LTI1ICBKdWxpZW4gQ2hh
ZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
cmluLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2ltYWdlLWJsb2NrZWQtc3Jj
LWNoYW5nZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9taXNjL2ltYWdlLWJsb2NrZWQtc3JjLWNoYW5nZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvaW1hZ2UtYmxvY2tlZC1zcmMtY2hhbmdl
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitDT05TT0xFIE1FU1NB
R0U6IGxpbmUgMDogTm90IGFsbG93ZWQgdG8gbG9hZCBsb2NhbCByZXNvdXJjZTogY29tcGFzcy5q
cGcKK1Rlc3QgY2FzZSBmb3IgYnVnIDE3ODk3IDogTm90IFJlbmRlcmluZyBJbWFnZXMgSW1wb3J0
ZWQgZnJvbSBYSFRNTCBEb2N1bWVudAorCitZb3Ugc2hvdWxkIHNlZSBQQVNTRUQgb25jZSBhbmQg
MjUwIHggNTAgZ3JlZW4gYm94LiBUaGUgY29uc29sZSBzaG91bGQgYWxzbyBzaG93IGEgYmxvY2tl
ZCBhdHRlbXB0IHRvIGxvYWQgYSBsb2NhbCByZXNvdXJjZS4KKworUEFTU0VECisKKwpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2ltYWdlLWJsb2NrZWQtc3JjLWNoYW5nZS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9pbWFnZS1ibG9ja2Vk
LXNyYy1jaGFuZ2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
bWlzYy9pbWFnZS1ibG9ja2VkLXNyYy1jaGFuZ2UuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw0NiBAQAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2VjbWFz
Y3JpcHQiPgorICAgICAgICBmdW5jdGlvbiBsb2dTdWNjZXNzT3JGYWlsdXJlKCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29u
c29sZScpOworICAgICAgICAgICAgdmFyIGltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2ltYWdlJyk7CisKKyAgICAgICAgICAgIGlmIChpbWFnZS5oZWlnaHQgJiYgaW1hZ2Uud2lkdGgp
CisgICAgICAgICAgICAgICAgY29uc29sZS5pbm5lckhUTUwgPSAiUEFTU0VEIjsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjb25zb2xlLmlubmVySFRNTCA9ICJGQUlMRUQiOwor
CisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoYW5nZVNyYygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFyIGlt
YWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltYWdlJyk7CisKKyAgICAgICAgICAgIGlm
IChpbWFnZS5oZWlnaHQgfHwgaW1hZ2Uud2lkdGgpIHsKKyAgICAgICAgICAgICAgICBjb25zb2xl
LmlubmVySFRNTCA9ICJGQUlMRUQiOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaW1hZ2Uuc3JjID0gIi4uL3NlY3VyaXR5L3Jlc291cmNlcy9n
cmVlbjI1MHg1MC5wbmciOworCisgICAgICAgICAgICAvLyBUaGUgaW1hZ2UgbWF5IG5vdCBiZSBs
b2FkZWQsIHNvIGp1c3Qgd2FpdCBhIGxpdHRsZQorICAgICAgICAgICAgLy8gYmVmb3JlIGNoZWNr
aW5nIGlmIGl0IHdhcyBsb2FkZWQuCisgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgibG9n
U3VjY2Vzc09yRmFpbHVyZSgpIiwgMTAwKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9ImNoYW5nZVNyYygpIj4KKyAgICAgICAgPHA+IFRl
c3QgY2FzZSBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3ODk3Ij4gYnVnIDE3ODk3IDwvYT46ICBOb3QgUmVuZGVyaW5nIEltYWdlcyBJbXBvcnRl
ZCBmcm9tIFhIVE1MIERvY3VtZW50IDwvcD4KKyAgICAgICAgPHA+IFlvdSBzaG91bGQgc2VlIFBB
U1NFRCBvbmNlIGFuZCAyNTAgeCA1MCBncmVlbiBib3guIFRoZSBjb25zb2xlIHNob3VsZCBhbHNv
IHNob3cgYSBibG9ja2VkIGF0dGVtcHQgdG8gbG9hZCBhIGxvY2FsIHJlc291cmNlLjwvcD4KKyAg
ICAgICAgPHAgaWQ9J2NvbnNvbGUnPiA8L3A+CisgICAgICAgIDwhLS0gVGhpcyBpbWFnZSBzaG91
bGQgYmUgYmxvY2tlZCAoc2VlIHNlY3VyaXR5L2xvY2FsLWltYWdlLWZyb20tcmVtb3RlLmh0bWwp
IC0tPgorICAgICAgICA8aW1nIGlkPSdpbWFnZScgc3JjPSJmaWxlOi8vL3RtcC9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9jb21wYXNzLmpwZyIvPgorICAgIDwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
eG1saHR0cHJlcXVlc3QtaW1hZ2Utbm90LWxvYWRlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1p
bWFnZS1ub3QtbG9hZGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtaW1hZ2Utbm90LWxvYWRl
ZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBAQAorVGVzdCBjYXNlIGZv
ciBidWcgMTc4OTcgOiBOb3QgUmVuZGVyaW5nIEltYWdlcyBJbXBvcnRlZCBmcm9tIFhIVE1MIERv
Y3VtZW50CisKK1lvdSBzaG91bGQgc2VlIFBBU1NFRCBvbmNlLgorCitQQVNTRUQKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtaW1hZ2Ut
bm90LWxvYWRlZC1zdmcuc3ZnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtaW1hZ2Utbm90LWxvYWRlZC1zdmcuc3ZnCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxo
dHRwcmVxdWVzdC1pbWFnZS1ub3QtbG9hZGVkLXN2Zy5zdmcJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMjQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZ
UEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMC8vRU4iICJodHRwOi8vd3d3LnczLm9y
Zy9UUi9TVkcvRFREL3N2ZzEwLmR0ZCI+Cis8c3ZnIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUi
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9lY21hc2NyaXB0
Ij4gPCFbQ0RBVEFbCisgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAg
ICAgICAgeGhyLm9wZW4oJ0dFVCcsICdyZXNvdXJjZXMvbG9hZC1pY29uLnN2ZycpOworICAgICAg
ICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKXsKKyAgICAgICAgICAgIGlmKHho
ci5yZWFkeVN0YXRlID09IDQpIHsKKyAgICAgICAgICAgICAgICB2YXIgZyA9IHhoci5yZXNwb25z
ZVhNTC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZycpWzBdOworICAgICAgICAgICAgICAgIHRyeSB7
CisgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkb3B0Tm9kZShnKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgY2F0Y2goZSl7fQorCisgICAgICAgICAgICAgICAgdmFy
IGljb24gPSBnLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbWFnZScpWzBdOworICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWFnZScpLmFwcGVuZENoaWxkKGcpOworICAg
ICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICB4aHIuc2VuZChudWxsKTsKK11dPiA8L3Nj
cmlwdD4KKyAgICA8dGV4dCB4PSIwIiB5PSIyMCI+IFRlc3QgY2FzZSBmb3IgPGEgaHJlZj0iaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODk3Ij4gYnVnIDE3ODk3IDwv
YT46ICBOb3QgUmVuZGVyaW5nIEltYWdlcyBJbXBvcnRlZCBmcm9tIFhIVE1MIERvY3VtZW50IDwv
dGV4dD4KKyAgICA8dGV4dCB5PSI0MCI+IFlvdSBzaG91bGQgc2VlIGEgZ3JlZW4gNTAgeCAyNTAg
Ym94LiA8L3RleHQ+CisgICAgPGcgaWQ9J2ltYWdlJyB5PSI2MCIgd2lkdGg9IjI1MCIgaGVpZ2h0
PSI1MCI+IDwvZz4KKzwvc3ZnPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC94bWxodHRwcmVxdWVzdC1pbWFnZS1ub3QtbG9hZGVkLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1p
bWFnZS1ub3QtbG9hZGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWltYWdlLW5vdC1sb2FkZWQuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDx0aXRsZT5TYWZhcmkgSXNzdWU6IE5vdCBSZW5kZXJpbmcgSW1hZ2VzIEltcG9ydGVkIGZyb20g
WEhUTUwgRG9jdW1lbnQ8L3RpdGxlPgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAg
PHA+IFRlc3QgY2FzZSBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3ODk3Ij4gYnVnIDE3ODk3IDwvYT46ICBOb3QgUmVuZGVyaW5nIEltYWdlcyBJ
bXBvcnRlZCBmcm9tIFhIVE1MIERvY3VtZW50IDwvcD4KKyAgICAgICAgPHA+IFlvdSBzaG91bGQg
c2VlIFBBU1NFRCBvbmNlLiA8L3A+CisgICAgICAgIDxkaXYgaWQ9J2NvbnNvbGUnPkZBSUxFRCAo
ZGlkIG5vdCBsb2FkIHRoZSBpbWFnZSk8L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0naW1hZ2UnIHN0
eWxlPSJkaXNwbGF5OiBub25lIj4gPC9kaXY+CisgICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KKworICAgICAgICBmdW5jdGlvbiBsb2dTdWNjZXNzT3JGYWlsdXJlKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnY29uc29sZScpOworICAgICAgICAgICAgLy8gSWYgdGhlIGltYWdlIHdhcyBsb2FkZWQgY29y
cmVjdGx5LCB0aGVuIGhlaWdodAorICAgICAgICAgICAgLy8gYW5kIHdpZHRoIGFyZSBub3QgemVy
by4KKyAgICAgICAgICAgIGlmIChpY29uLmhlaWdodCAmJiBpY29uLndpZHRoKQorICAgICAgICAg
ICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MID0gIlBBU1NFRCI7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgY29uc29sZS5pbm5lckhUTUwgPSAiRkFJTEVEIjsKKworICAgICAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0
dHBSZXF1ZXN0KCk7CisgICAgICAgIHhoci5vcGVuKCdHRVQnLCAncmVzb3VyY2VzL2xvYWQtaWNv
bi54aHRtbCcpOworICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKXsK
KyAgICAgICAgICAgIGlmKHhoci5yZWFkeVN0YXRlID09IDQgJiYgeGhyLnN0YXR1cyA9PSAyMDAp
IHsKKyAgICAgICAgICAgICAgICB2YXIgZGl2ID0geGhyLnJlc3BvbnNlWE1MLmdldEVsZW1lbnRz
QnlUYWdOYW1lKCdkaXYnKVswXTsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5hZG9wdE5vZGUoZGl2KTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgY2F0Y2goZSl7fQorCisgICAgICAgICAgICAgICAgdmFyIGljb24gPSBkaXYu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ2ltZycpWzBdOworICAgICAgICAgICAgICAgIGljb24uYWRk
RXZlbnRMaXN0ZW5lcigibG9hZCIsIGxvZ1N1Y2Nlc3NPckZhaWx1cmUsIHRydWUpOworCisgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltYWdlJykuYXBwZW5kQ2hpbGQo
ZGl2KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgeGhyLnNlbmQobnVsbCk7
CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2xvYWQtaWNvbi5zdmcKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJj
ZXMvbG9hZC1pY29uLnN2ZwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2xvYWQtaWNvbi5zdmcJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhRE9D
VFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4wLy9FTiIgImh0dHA6Ly93d3cudzMu
b3JnL1RSL1NWRy9EVEQvc3ZnMTAuZHRkIj4KKzxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAw
JSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgICAgPGcgeD0iMCIgeT0iNjAiIHdpZHRoPSIyNTAi
IGhlaWdodD0iNTAiPgorICAgICAgICA8IS0tIHRoZSBwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBw
YXJlbnQgZGlyZWN0b3J5IC0tPgorICAgICAgICA8aW1hZ2UgeGxpbms6aHJlZj0iLi4vc2VjdXJp
dHkvcmVzb3VyY2VzL2dyZWVuMjUweDUwLnBuZyIgeD0iMCIgeT0iNjAiIHdpZHRoPSIyNTAiIGhl
aWdodD0iNTAiIGFsdD0iaWNvbiIgaWQ9Imljb24iLz4KKyAgICA8L2c+Cis8L3N2Zz4KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2xvYWQtaWNv
bi54aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L3Jlc291cmNlcy9sb2FkLWljb24ueGh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9sb2FkLWljb24ueGh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDx0aXRsZT5UZXN0IFhIVE1MIERvY3VtZW50IGNvbnRhaW5pbmcg
SW1hZ2VzPC90aXRsZT4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxkaXY+Cisg
ICAgICAgICAgICA8IS0tIHRoZSBwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBwYXJlbnQgZGlyZWN0
b3J5IC0tPgorICAgICAgICAgICAgPGltZyBzcmM9Ii4uL3NlY3VyaXR5L3Jlc291cmNlcy9ncmVl
bjI1MHg1MC5wbmciIGFsdD0iaWNvbiIgaWQ9Imljb24iLz4KKyAgICAgICAgPC9kaXY+CisgICAg
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtaW1hZ2Utbm90LWxvYWRlZC1zdmctZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWltYWdlLW5vdC1sb2FkZWQtc3ZnLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWltYWdlLW5vdC1sb2FkZWQtc3Zn
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOSBAQAorbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXll
ciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyU1ZHUm9vdCB7c3ZnfSBhdCAoMCw2KSBz
aXplIDUzNHgxMDQKKyAgICBSZW5kZXJTVkdUZXh0IHt0ZXh0fSBhdCAoMCwyMCkgc2l6ZSA1MzR4
MTggY29udGFpbnMgMSBjaHVuayhzKQorICAgICAgUmVuZGVyU1ZHSW5saW5lVGV4dCB7I3RleHR9
IGF0ICgwLC0xNCkgc2l6ZSA4NHgxOAorICAgICAgICBjaHVuayAxIHRleHQgcnVuIDEgYXQgKDAu
MDAsMjAuMDApIHN0YXJ0T2Zmc2V0IDAgZW5kT2Zmc2V0IDE0IHdpZHRoIDg0LjAwOiAiVGVzdCBj
YXNlIGZvciAiCisgICAgICBSZW5kZXJTVkdJbmxpbmUge2F9IGF0ICgwLDApIHNpemUgNzJ4MTgK
KyAgICAgICAgUmVuZGVyU1ZHSW5saW5lVGV4dCB7I3RleHR9IGF0ICg4NCwtMTQpIHNpemUgNzJ4
MTgKKyAgICAgICAgICBjaHVuayAxIHRleHQgcnVuIDIgYXQgKDg0LjAwLDIwLjAwKSBzdGFydE9m
ZnNldCAwIGVuZE9mZnNldCAxMCB3aWR0aCA3Mi4wMDogImJ1ZyAxNzg5NyAiCisgICAgICBSZW5k
ZXJTVkdJbmxpbmVUZXh0IHsjdGV4dH0gYXQgKDE1NiwtMTQpIHNpemUgMzc4eDE4CisgICAgICAg
IGNodW5rIDEgdGV4dCBydW4gMyBhdCAoMTU2LjAwLDIwLjAwKSBzdGFydE9mZnNldCAwIGVuZE9m
ZnNldCAyIHdpZHRoIDguMDA6ICI6ICIKKyAgICAgICAgY2h1bmsgMSB0ZXh0IHJ1biA0IGF0ICgx
NjQuMDAsMjAuMDApIHN0YXJ0T2Zmc2V0IDAgZW5kT2Zmc2V0IDQ5IHdpZHRoIDM3MC4wMDogIk5v
dCBSZW5kZXJpbmcgSW1hZ2VzIEltcG9ydGVkIGZyb20gWEhUTUwgRG9jdW1lbnQiCisgICAgUmVu
ZGVyU1ZHVGV4dCB7dGV4dH0gYXQgKDAsNDApIHNpemUgMjQweDE4IGNvbnRhaW5zIDEgY2h1bmso
cykKKyAgICAgIFJlbmRlclNWR0lubGluZVRleHQgeyN0ZXh0fSBhdCAoMCwtMTQpIHNpemUgMjQw
eDE4CisgICAgICAgIGNodW5rIDEgdGV4dCBydW4gMSBhdCAoMC4wMCw0MC4wMCkgc3RhcnRPZmZz
ZXQgMCBlbmRPZmZzZXQgMzYgd2lkdGggMjQwLjAwOiAiWW91IHNob3VsZCBzZWUgYSBncmVlbiA1
MCB4IDI1MCBib3guIgorICAgIFJlbmRlclNWR0NvbnRhaW5lciB7Z30gYXQgKDAsNjApIHNpemUg
MjUweDUwCisgICAgICBSZW5kZXJTVkdDb250YWluZXIge2d9IGF0ICgwLDYwKSBzaXplIDI1MHg1
MAorICAgICAgICBSZW5kZXJJbWFnZSB7aW1hZ2V9IGF0ICgwLDApIHNpemUgMjUweDUwCg==
</data>
<flag name="review"
          id="10238"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23215</attachid>
            <date>2008-09-06 07:02:38 -0700</date>
            <delta_ts>2008-11-06 16:30:40 -0800</delta_ts>
            <desc>Updated patch: Store source url and check it when determining if the loader is in error</desc>
            <filename>ImageLoader-updated2.patch</filename>
            <type>text/plain</type>
            <size>17269</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNjEyOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMDgtMDgtMzAgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQnVnIDE3ODk3OiBOb3QgUmVuZGVyaW5nIEltYWdlcyBJbXBvcnRlZCBmcm9tIFhIVE1M
IERvY3VtZW50CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODI3NjE0PgorCisgICAgICAgIFdo
ZW4gd2Ugd2VyZSBsb2FkaW5nIGRvY3VtZW50IGluY2x1ZGluZyBpbWFnZXMgd2l0aCBYTUxIdHRw
UmVxdWVzdCwgdGhlIGltYWdlcworICAgICAgICB3b3VsZCBub3QgYmUgZmV0Y2hlZCBhcyB0aGV5
IHdvdWxkIG5vdCBiZSBkaXNwbGF5ZWQuIEhvd2V2ZXIgaWYgd2UgaW5zZXJ0ZWQgc3VjaAorICAg
ICAgICBhbiBpbWFnZSBlbGVtZW50IGludG8gYSByZW5kZXJlZCBkb2N1bWVudCwgd2Ugd291bGQg
bm90IGZldGNoIHRoZSBpbWFnZSBhbmQgdGh1cyBuZXZlcgorICAgICAgICBkaXNwbGF5IGl0Lgor
CisgICAgICAgIE5vdyB3ZSBjaGVjayBpZiB0aGUgaW1hZ2UgaGFzIGJlZW4gbG9hZGVkIHdoZW4g
aW5zZXJ0aW5nIGFuIEhUTUxJbWFnZUVsZW1lbnQuCisgICAgICAgIFRoZSBpbWFnZSBsb2FkZXIg
bm93IGhhcyBhbiBlcnJvciBmbGFnIGFuZCBzdG9yZSB0aGUgc291cmNlIHVybCB0byBhdm9pZCBk
b2luZworICAgICAgICBzZXZlcmFsIGF0dGVtcHQgd2hlbiB3ZSBrbm93IHRoYXQgdGhlIGltYWdl
IGlzIGluIGVycm9yLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL21pc2MvaW1hZ2UtYmxv
Y2tlZC1zcmMtY2hhbmdlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QveG1saHR0cHJlcXVlc3QtaW1hZ2Utbm90LWxvYWRlZC1zdmcuc3ZnCisgICAgICAgICAg
ICAgICBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWltYWdlLW5vdC1s
b2FkZWQuaHRtbAorCisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KToKKyAg
ICAgICAgKiBodG1sL0hUTUxJbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW1hZ2VMb2FkZXI6OkhUTUxJbWFnZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1h
Z2VMb2FkZXI6OnNldEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUxvYWRlcjo6
dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlTG9hZGVyOjpk
aXNwYXRjaExvYWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VMb2FkZXI6Om5v
dGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUxvYWRlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEltYWdlTG9hZGVyOjpjbGVhckhhZEVycm9yKToKKwogMjAwOC0wOS0w
NSAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBBbHAgVG9rZXIuCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCShyZXZp
c2lvbiAzNjEyOCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTk1LDYgKzE5NSwxMSBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6Omluc2Vy
dGVkSW50b0RvY3VtCiAgICAgICAgIGRvY3VtZW50LT5hZGRFeHRyYU5hbWVkSXRlbShtX2lkKTsK
ICAgICB9CiAKKyAgICAvLyBJZiB3ZSBoYXZlIGJlZW4gaW5zZXJ0ZWQgZnJvbSBhIHJlbmRlcmVy
LWxlc3MgZG9jdW1lbnQsCisgICAgLy8gb3VyIGxvYWRlciBtYXkgaGF2ZSBub3QgZmV0Y2hlZCB0
aGUgaW1hZ2Ugc28gZG8gaXQgbm93LgorICAgIGlmICghbV9pbWFnZUxvYWRlci5pbWFnZSgpKQor
ICAgICAgICBtX2ltYWdlTG9hZGVyLnVwZGF0ZUZyb21FbGVtZW50KCk7CisKICAgICBIVE1MRWxl
bWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9odG1sL0hU
TUxJbWFnZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJbWFnZUxv
YWRlci5jcHAJKHJldmlzaW9uIDM2MTI4KQorKysgV2ViQ29yZS9odG1sL0hUTUxJbWFnZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAgSFRNTEltYWdlTG9hZGVyOjpI
VE1MSW1hZ2VMb2FkZXIoRWxlbWVudAogICAgICwgbV9maXJlZExvYWQodHJ1ZSkKICAgICAsIG1f
aW1hZ2VDb21wbGV0ZSh0cnVlKQogICAgICwgbV9sb2FkTWFudWFsbHkoZmFsc2UpCisgICAgLCBt
X2hhZEVycm9yKGZhbHNlKQogewogfQogCkBAIC01Nyw2ICs1OCw3IEBAIEhUTUxJbWFnZUxvYWRl
cjo6fkhUTUxJbWFnZUxvYWRlcigpCiAKIHZvaWQgSFRNTEltYWdlTG9hZGVyOjpzZXRJbWFnZShD
YWNoZWRJbWFnZSAqbmV3SW1hZ2UpCiB7CisgICAgQVNTRVJUKCFtX2hhZEVycm9yKTsKICAgICBD
YWNoZWRJbWFnZSAqb2xkSW1hZ2UgPSBtX2ltYWdlLmdldCgpOwogICAgIGlmIChuZXdJbWFnZSAh
PSBvbGRJbWFnZSkgewogICAgICAgICBzZXRMb2FkaW5nSW1hZ2UobmV3SW1hZ2UpOwpAQCAtOTEs
NiArOTMsOSBAQCB2b2lkIEhUTUxJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQoCiAKICAg
ICBBdG9taWNTdHJpbmcgYXR0ciA9IGVsZW0tPmdldEF0dHJpYnV0ZShlbGVtLT5pbWFnZVNvdXJj
ZUF0dHJpYnV0ZU5hbWUoKSk7CiAgICAgCisgICAgaWYgKG1faGFkRXJyb3IgJiYgYXR0ciA9PSBt
X3NvdXJjZVVSTCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgLy8gRG8gbm90IGxvYWQgYW55IGlt
YWdlIGlmIHRoZSAnc3JjJyBhdHRyaWJ1dGUgaXMgbWlzc2luZyBvciBpZiBpdCBpcwogICAgIC8v
IGFuIGVtcHR5IHN0cmluZyByZWZlcnJpbmcgdG8gYSBsb2NhbCBmaWxlLiBUaGUgbGF0dGVyIGNv
bmRpdGlvbiBpcwogICAgIC8vIGEgcXVpcmsgdGhhdCBwcmVzZXJ2ZXMgb2xkIGJlaGF2aW9yIHRo
YXQgRGFzaGJvYXJkIHdpZGdldHMKQEAgLTEwNSw2ICsxMTAsMTEgQEAgdm9pZCBIVE1MSW1hZ2VM
b2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50KAogICAgICAgICAgICAgZG9jLT5kb2NMb2FkZXIoKS0+
bV9kb2NSZXNvdXJjZXMuc2V0KG5ld0ltYWdlLT51cmwoKSwgbmV3SW1hZ2UpOwogICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgIG5ld0ltYWdlID0gZG9jLT5kb2NMb2FkZXIoKS0+cmVxdWVzdElt
YWdlKHBhcnNlVVJMKGF0dHIpKTsKKworICAgICAgICAvLyBJZiB3ZSBkbyBub3QgaGF2ZSBhbiBp
bWFnZSBoZXJlLCBpdCBtZWFucyB0aGF0IGFuIGVycm9yCisgICAgICAgIC8vIG9jY3VycmVkIChj
cm9zcy1zaXRlIHZpb2xhdGlvbi4uLikuCisgICAgICAgIG1faGFkRXJyb3IgPSAhbmV3SW1hZ2U7
CisgICAgICAgIG1fc291cmNlVVJMID0gYXR0cjsKICAgICB9CiAgICAgCiAgICAgQ2FjaGVkSW1h
Z2UgKm9sZEltYWdlID0gbV9pbWFnZS5nZXQoKTsKQEAgLTEyNyw2ICsxMzcsNyBAQCB2b2lkIEhU
TUxJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQoCiAKIHZvaWQgSFRNTEltYWdlTG9hZGVy
OjpkaXNwYXRjaExvYWRFdmVudCgpCiB7CisgICAgQVNTRVJUKCFtX2hhZEVycm9yKTsKICAgICBp
ZiAoIWhhdmVGaXJlZExvYWRFdmVudCgpICYmIGltYWdlKCkpIHsKICAgICAgICAgc2V0SGF2ZUZp
cmVkTG9hZEV2ZW50KHRydWUpOwogICAgICAgICBlbGVtZW50KCktPmRpc3BhdGNoSFRNTEV2ZW50
KGltYWdlKCktPmVycm9yT2NjdXJyZWQoKSA/IGVycm9yRXZlbnQgOiBsb2FkRXZlbnQsIGZhbHNl
LCBmYWxzZSk7CkBAIC0xMzUsNiArMTQ2LDcgQEAgdm9pZCBIVE1MSW1hZ2VMb2FkZXI6OmRpc3Bh
dGNoTG9hZEV2ZW50KAogCiB2b2lkIEhUTUxJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UgKmltYWdlKQogeworICAgIEFTU0VSVCghbV9oYWRFcnJvcik7CiAgICAgbV9p
bWFnZUNvbXBsZXRlID0gdHJ1ZTsKICAgICBFbGVtZW50KiBlbGVtID0gZWxlbWVudCgpOwogICAg
IERvY3VtZW50KiBkb2MgPSBlbGVtLT5kb2N1bWVudCgpOwpJbmRleDogV2ViQ29yZS9odG1sL0hU
TUxJbWFnZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSW1hZ2VMb2Fk
ZXIuaAkocmV2aXNpb24gMzYxMjgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw0IEBACiAvKgotICogVGhpcyBmaWxlIGlzIHBhcnQg
b2YgdGhlIERPTSBpbXBsZW1lbnRhdGlvbiBmb3IgS0RFLgotICoKICAqIENvcHlyaWdodCAoQykg
MTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFu
dHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogQ29weXJpZ2h0IChDKSAyMDA0IEFw
cGxlIENvbXB1dGVyLCBJbmMuCkBAIC0yNSw2ICsyMyw3IEBACiAjaWZuZGVmIEhUTUxJbWFnZUxv
YWRlcl9oCiAjZGVmaW5lIEhUTUxJbWFnZUxvYWRlcl9oCiAKKyNpbmNsdWRlICJBdG9taWNTdHJp
bmcuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlSGFuZGxlLmgiCiAKQEAgLTMzLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgRWxlbWVudDsKIAogY2xhc3MgSFRNTEltYWdlTG9hZGVyIDogcHVibGljIENhY2hl
ZFJlc291cmNlQ2xpZW50IHsKKwogcHVibGljOgogICAgIEhUTUxJbWFnZUxvYWRlcihFbGVtZW50
Kik7CiAgICAgdmlydHVhbCB+SFRNTEltYWdlTG9hZGVyKCk7CkBAIC01Myw2ICs1Myw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKTsK
IAogICAgIGJvb2wgaGF2ZUZpcmVkTG9hZEV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9maXJlZExv
YWQ7IH0KKwogcHJvdGVjdGVkOgogICAgIHZvaWQgc2V0TG9hZGluZ0ltYWdlKENhY2hlZEltYWdl
Kik7CiAgICAgCkBAIC02MSw5ICs2MiwxMSBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIEVs
ZW1lbnQqIG1fZWxlbWVudDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4g
bV9pbWFnZTsKKyAgICBBdG9taWNTdHJpbmcgbV9zb3VyY2VVUkw7CiAgICAgYm9vbCBtX2ZpcmVk
TG9hZCA6IDE7CiAgICAgYm9vbCBtX2ltYWdlQ29tcGxldGUgOiAxOwogICAgIGJvb2wgbV9sb2Fk
TWFudWFsbHkgOiAxOworICAgIGJvb2wgbV9oYWRFcnJvciA6IDE7CiB9OwogCiB9IC8vbmFtZXNw
YWNlCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzNjEyOCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDA4LTA4LTMwICBKdWxpZW4gQ2hhZmZy
YWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIGNhc2VzIGZvciBidWcgMTc4OTc6IE5vdCBSZW5k
ZXJpbmcgSW1hZ2VzIEltcG9ydGVkIGZyb20gWEhUTUwgRG9jdW1lbnQKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzU4Mjc2MTQ+CisKKyAgICAgICAgLSB4bWxodHRwcmVxdWVzdC1pbWFnZS1ub3Qt
bG9hZGVkKjogdGVzdCB0aGF0IGFuIGltYWdlIGxvYWRlZCBieSBhbiBYTUxIdHRwUmVxdWVzdCBh
bmQgaW5zZXJ0ZWQgaW50byBhIFhIVE1MIG9yIFNWRyBEb2N1bWVudAorICAgICAgICBpcyBwcm9w
ZXJseSByZW5kZXJlZC4KKworICAgICAgICAtIGltYWdlLWJsb2NrZWQtc3JjLWNoYW5nZS5odG1s
OiB0ZXN0cyB0aGF0IGFuIGltYWdlIHRoYXQgd2FzIGluIGVycm9yIGlzIHJlc3BvbmRpbmcgdG8g
c3JjIGF0dHJpYnV0ZSBjaGFuZ2UuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvaW1hZ2Ut
YmxvY2tlZC1zcmMtY2hhbmdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9taXNjL2ltYWdlLWJsb2NrZWQtc3JjLWNoYW5nZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9sb2FkLWljb24uc3ZnOiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9sb2FkLWlj
b24ueGh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1s
aHR0cHJlcXVlc3QtaW1hZ2Utbm90LWxvYWRlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtaW1hZ2Utbm90LWxv
YWRlZC1zdmcuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3htbGh0dHByZXF1ZXN0LWltYWdlLW5vdC1sb2FkZWQuaHRtbDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vbWFjL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Q6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWlt
YWdlLW5vdC1sb2FkZWQtc3ZnLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMDgtMDktMDQgIERh
biBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBCZXRo
IERha2luLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2ltYWdlLWJsb2NrZWQt
c3JjLWNoYW5nZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9taXNjL2ltYWdlLWJsb2NrZWQtc3JjLWNoYW5nZS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvaW1hZ2UtYmxvY2tlZC1zcmMtY2hh
bmdlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitDT05TT0xFIE1F
U1NBR0U6IGxpbmUgMDogTm90IGFsbG93ZWQgdG8gbG9hZCBsb2NhbCByZXNvdXJjZTogY29tcGFz
cy5qcGcKK1Rlc3QgY2FzZSBmb3IgYnVnIDE3ODk3IDogTm90IFJlbmRlcmluZyBJbWFnZXMgSW1w
b3J0ZWQgZnJvbSBYSFRNTCBEb2N1bWVudAorCitZb3Ugc2hvdWxkIHNlZSBQQVNTRUQgb25jZSBh
bmQgMjUwIHggNTAgZ3JlZW4gYm94LiBUaGUgY29uc29sZSBzaG91bGQgYWxzbyBzaG93IGEgYmxv
Y2tlZCBhdHRlbXB0IHRvIGxvYWQgYSBsb2NhbCByZXNvdXJjZS4KKworUEFTU0VECisKKwpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2ltYWdlLWJsb2NrZWQtc3JjLWNoYW5nZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9pbWFnZS1ibG9j
a2VkLXNyYy1jaGFuZ2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbWlzYy9pbWFnZS1ibG9ja2VkLXNyYy1jaGFuZ2UuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0NiBAQAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2Vj
bWFzY3JpcHQiPgorICAgICAgICBmdW5jdGlvbiBsb2dTdWNjZXNzT3JGYWlsdXJlKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y29uc29sZScpOworICAgICAgICAgICAgdmFyIGltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2ltYWdlJyk7CisKKyAgICAgICAgICAgIGlmIChpbWFnZS5oZWlnaHQgJiYgaW1hZ2Uud2lk
dGgpCisgICAgICAgICAgICAgICAgY29uc29sZS5pbm5lckhUTUwgPSAiUEFTU0VEIjsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjb25zb2xlLmlubmVySFRNTCA9ICJGQUlMRUQi
OworCisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoYW5nZVNyYygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFy
IGltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltYWdlJyk7CisKKyAgICAgICAgICAg
IGlmIChpbWFnZS5oZWlnaHQgfHwgaW1hZ2Uud2lkdGgpIHsKKyAgICAgICAgICAgICAgICBjb25z
b2xlLmlubmVySFRNTCA9ICJGQUlMRUQiOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaW1hZ2Uuc3JjID0gIi4uL3NlY3VyaXR5L3Jlc291cmNl
cy9ncmVlbjI1MHg1MC5wbmciOworCisgICAgICAgICAgICAvLyBUaGUgaW1hZ2UgbWF5IG5vdCBi
ZSBsb2FkZWQsIHNvIGp1c3Qgd2FpdCBhIGxpdHRsZQorICAgICAgICAgICAgLy8gYmVmb3JlIGNo
ZWNraW5nIGlmIGl0IHdhcyBsb2FkZWQuCisgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgi
bG9nU3VjY2Vzc09yRmFpbHVyZSgpIiwgMTAwKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0Pgor
ICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9ImNoYW5nZVNyYygpIj4KKyAgICAgICAgPHA+
IFRlc3QgY2FzZSBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3ODk3Ij4gYnVnIDE3ODk3IDwvYT46ICBOb3QgUmVuZGVyaW5nIEltYWdlcyBJbXBv
cnRlZCBmcm9tIFhIVE1MIERvY3VtZW50IDwvcD4KKyAgICAgICAgPHA+IFlvdSBzaG91bGQgc2Vl
IFBBU1NFRCBvbmNlIGFuZCAyNTAgeCA1MCBncmVlbiBib3guIFRoZSBjb25zb2xlIHNob3VsZCBh
bHNvIHNob3cgYSBibG9ja2VkIGF0dGVtcHQgdG8gbG9hZCBhIGxvY2FsIHJlc291cmNlLjwvcD4K
KyAgICAgICAgPHAgaWQ9J2NvbnNvbGUnPiA8L3A+CisgICAgICAgIDwhLS0gVGhpcyBpbWFnZSBz
aG91bGQgYmUgYmxvY2tlZCAoc2VlIHNlY3VyaXR5L2xvY2FsLWltYWdlLWZyb20tcmVtb3RlLmh0
bWwpIC0tPgorICAgICAgICA8aW1nIGlkPSdpbWFnZScgc3JjPSJmaWxlOi8vL3RtcC9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9jb21wYXNzLmpwZyIvPgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3QveG1saHR0cHJlcXVlc3QtaW1hZ2Utbm90LWxvYWRlZC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVz
dC1pbWFnZS1ub3QtbG9hZGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtaW1hZ2Utbm90LWxv
YWRlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBAQAorVGVzdCBjYXNl
IGZvciBidWcgMTc4OTcgOiBOb3QgUmVuZGVyaW5nIEltYWdlcyBJbXBvcnRlZCBmcm9tIFhIVE1M
IERvY3VtZW50CisKK1lvdSBzaG91bGQgc2VlIFBBU1NFRCBvbmNlLgorCitQQVNTRUQKSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtaW1h
Z2Utbm90LWxvYWRlZC1zdmcuc3ZnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtaW1hZ2Utbm90LWxvYWRlZC1zdmcuc3Zn
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94
bWxodHRwcmVxdWVzdC1pbWFnZS1ub3QtbG9hZGVkLXN2Zy5zdmcJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURP
Q1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMC8vRU4iICJodHRwOi8vd3d3Lncz
Lm9yZy9UUi9TVkcvRFREL3N2ZzEwLmR0ZCI+Cis8c3ZnIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEw
MCUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9lY21hc2Ny
aXB0Ij4gPCFbQ0RBVEFbCisgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsK
KyAgICAgICAgeGhyLm9wZW4oJ0dFVCcsICdyZXNvdXJjZXMvbG9hZC1pY29uLnN2ZycpOworICAg
ICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKXsKKyAgICAgICAgICAgIGlm
KHhoci5yZWFkeVN0YXRlID09IDQpIHsKKyAgICAgICAgICAgICAgICB2YXIgZyA9IHhoci5yZXNw
b25zZVhNTC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZycpWzBdOworICAgICAgICAgICAgICAgIHRy
eSB7CisgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkb3B0Tm9kZShnKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgY2F0Y2goZSl7fQorCisgICAgICAgICAgICAgICAg
dmFyIGljb24gPSBnLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbWFnZScpWzBdOworICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWFnZScpLmFwcGVuZENoaWxkKGcpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICB4aHIuc2VuZChudWxsKTsKK11dPiA8
L3NjcmlwdD4KKyAgICA8dGV4dCB4PSIwIiB5PSIyMCI+IFRlc3QgY2FzZSBmb3IgPGEgaHJlZj0i
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODk3Ij4gYnVnIDE3ODk3
IDwvYT46ICBOb3QgUmVuZGVyaW5nIEltYWdlcyBJbXBvcnRlZCBmcm9tIFhIVE1MIERvY3VtZW50
IDwvdGV4dD4KKyAgICA8dGV4dCB5PSI0MCI+IFlvdSBzaG91bGQgc2VlIGEgZ3JlZW4gNTAgeCAy
NTAgYm94LiA8L3RleHQ+CisgICAgPGcgaWQ9J2ltYWdlJyB5PSI2MCIgd2lkdGg9IjI1MCIgaGVp
Z2h0PSI1MCI+IDwvZz4KKzwvc3ZnPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1pbWFnZS1ub3QtbG9hZGVkLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVz
dC1pbWFnZS1ub3QtbG9hZGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWltYWdlLW5vdC1sb2FkZWQuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAg
ICAgIDx0aXRsZT5TYWZhcmkgSXNzdWU6IE5vdCBSZW5kZXJpbmcgSW1hZ2VzIEltcG9ydGVkIGZy
b20gWEhUTUwgRG9jdW1lbnQ8L3RpdGxlPgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAg
ICAgPHA+IFRlc3QgY2FzZSBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3ODk3Ij4gYnVnIDE3ODk3IDwvYT46ICBOb3QgUmVuZGVyaW5nIEltYWdl
cyBJbXBvcnRlZCBmcm9tIFhIVE1MIERvY3VtZW50IDwvcD4KKyAgICAgICAgPHA+IFlvdSBzaG91
bGQgc2VlIFBBU1NFRCBvbmNlLiA8L3A+CisgICAgICAgIDxkaXYgaWQ9J2NvbnNvbGUnPkZBSUxF
RCAoZGlkIG5vdCBsb2FkIHRoZSBpbWFnZSk8L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0naW1hZ2Un
IHN0eWxlPSJkaXNwbGF5OiBub25lIj4gPC9kaXY+CisgICAgICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KKworICAgICAgICBmdW5jdGlvbiBsb2dTdWNjZXNzT3JGYWlsdXJlKCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnY29uc29sZScpOworICAgICAgICAgICAgLy8gSWYgdGhlIGltYWdlIHdhcyBsb2FkZWQg
Y29ycmVjdGx5LCB0aGVuIGhlaWdodAorICAgICAgICAgICAgLy8gYW5kIHdpZHRoIGFyZSBub3Qg
emVyby4KKyAgICAgICAgICAgIGlmIChpY29uLmhlaWdodCAmJiBpY29uLndpZHRoKQorICAgICAg
ICAgICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MID0gIlBBU1NFRCI7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgY29uc29sZS5pbm5lckhUTUwgPSAiRkFJTEVEIjsKKworICAgICAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgeGhyID0gbmV3IFhN
TEh0dHBSZXF1ZXN0KCk7CisgICAgICAgIHhoci5vcGVuKCdHRVQnLCAncmVzb3VyY2VzL2xvYWQt
aWNvbi54aHRtbCcpOworICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24o
KXsKKyAgICAgICAgICAgIGlmKHhoci5yZWFkeVN0YXRlID09IDQgJiYgeGhyLnN0YXR1cyA9PSAy
MDApIHsKKyAgICAgICAgICAgICAgICB2YXIgZGl2ID0geGhyLnJlc3BvbnNlWE1MLmdldEVsZW1l
bnRzQnlUYWdOYW1lKCdkaXYnKVswXTsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAg
ICAgICAgICAgICBkb2N1bWVudC5hZG9wdE5vZGUoZGl2KTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgY2F0Y2goZSl7fQorCisgICAgICAgICAgICAgICAgdmFyIGljb24gPSBk
aXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2ltZycpWzBdOworICAgICAgICAgICAgICAgIGljb24u
YWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGxvZ1N1Y2Nlc3NPckZhaWx1cmUsIHRydWUpOworCisg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltYWdlJykuYXBwZW5kQ2hp
bGQoZGl2KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgeGhyLnNlbmQobnVs
bCk7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2xvYWQtaWNvbi5zdmcK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNv
dXJjZXMvbG9hZC1pY29uLnN2ZwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2xvYWQtaWNvbi5zdmcJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwh
RE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4wLy9FTiIgImh0dHA6Ly93d3cu
dzMub3JnL1RSL1NWRy9EVEQvc3ZnMTAuZHRkIj4KKzxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0i
MTAwJSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgICAgPGcgeD0iMCIgeT0iNjAiIHdpZHRoPSIy
NTAiIGhlaWdodD0iNTAiPgorICAgICAgICA8IS0tIHRoZSBwYXRoIGlzIHJlbGF0aXZlIHRvIHRo
ZSBwYXJlbnQgZGlyZWN0b3J5IC0tPgorICAgICAgICA8aW1hZ2UgeGxpbms6aHJlZj0iLi4vc2Vj
dXJpdHkvcmVzb3VyY2VzL2dyZWVuMjUweDUwLnBuZyIgeD0iMCIgeT0iNjAiIHdpZHRoPSIyNTAi
IGhlaWdodD0iNTAiIGFsdD0iaWNvbiIgaWQ9Imljb24iLz4KKyAgICA8L2c+Cis8L3N2Zz4KSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2xvYWQt
aWNvbi54aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L3Jlc291cmNlcy9sb2FkLWljb24ueGh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9sb2FkLWljb24ueGh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+
CisgICAgPGhlYWQ+CisgICAgICAgIDx0aXRsZT5UZXN0IFhIVE1MIERvY3VtZW50IGNvbnRhaW5p
bmcgSW1hZ2VzPC90aXRsZT4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxkaXY+
CisgICAgICAgICAgICA8IS0tIHRoZSBwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBwYXJlbnQgZGly
ZWN0b3J5IC0tPgorICAgICAgICAgICAgPGltZyBzcmM9Ii4uL3NlY3VyaXR5L3Jlc291cmNlcy9n
cmVlbjI1MHg1MC5wbmciIGFsdD0iaWNvbiIgaWQ9Imljb24iLz4KKyAgICAgICAgPC9kaXY+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2h0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtaW1hZ2Utbm90LWxvYWRlZC1zdmct
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWltYWdlLW5vdC1sb2FkZWQtc3Zn
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWltYWdlLW5vdC1sb2FkZWQt
c3ZnLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOSBAQAorbGF5ZXIgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCits
YXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyU1ZHUm9vdCB7c3ZnfSBhdCAoMCw2
KSBzaXplIDUzNHgxMDQKKyAgICBSZW5kZXJTVkdUZXh0IHt0ZXh0fSBhdCAoMCwyMCkgc2l6ZSA1
MzR4MTggY29udGFpbnMgMSBjaHVuayhzKQorICAgICAgUmVuZGVyU1ZHSW5saW5lVGV4dCB7I3Rl
eHR9IGF0ICgwLC0xNCkgc2l6ZSA4NHgxOAorICAgICAgICBjaHVuayAxIHRleHQgcnVuIDEgYXQg
KDAuMDAsMjAuMDApIHN0YXJ0T2Zmc2V0IDAgZW5kT2Zmc2V0IDE0IHdpZHRoIDg0LjAwOiAiVGVz
dCBjYXNlIGZvciAiCisgICAgICBSZW5kZXJTVkdJbmxpbmUge2F9IGF0ICgwLDApIHNpemUgNzJ4
MTgKKyAgICAgICAgUmVuZGVyU1ZHSW5saW5lVGV4dCB7I3RleHR9IGF0ICg4NCwtMTQpIHNpemUg
NzJ4MTgKKyAgICAgICAgICBjaHVuayAxIHRleHQgcnVuIDIgYXQgKDg0LjAwLDIwLjAwKSBzdGFy
dE9mZnNldCAwIGVuZE9mZnNldCAxMCB3aWR0aCA3Mi4wMDogImJ1ZyAxNzg5NyAiCisgICAgICBS
ZW5kZXJTVkdJbmxpbmVUZXh0IHsjdGV4dH0gYXQgKDE1NiwtMTQpIHNpemUgMzc4eDE4CisgICAg
ICAgIGNodW5rIDEgdGV4dCBydW4gMyBhdCAoMTU2LjAwLDIwLjAwKSBzdGFydE9mZnNldCAwIGVu
ZE9mZnNldCAyIHdpZHRoIDguMDA6ICI6ICIKKyAgICAgICAgY2h1bmsgMSB0ZXh0IHJ1biA0IGF0
ICgxNjQuMDAsMjAuMDApIHN0YXJ0T2Zmc2V0IDAgZW5kT2Zmc2V0IDQ5IHdpZHRoIDM3MC4wMDog
Ik5vdCBSZW5kZXJpbmcgSW1hZ2VzIEltcG9ydGVkIGZyb20gWEhUTUwgRG9jdW1lbnQiCisgICAg
UmVuZGVyU1ZHVGV4dCB7dGV4dH0gYXQgKDAsNDApIHNpemUgMjQweDE4IGNvbnRhaW5zIDEgY2h1
bmsocykKKyAgICAgIFJlbmRlclNWR0lubGluZVRleHQgeyN0ZXh0fSBhdCAoMCwtMTQpIHNpemUg
MjQweDE4CisgICAgICAgIGNodW5rIDEgdGV4dCBydW4gMSBhdCAoMC4wMCw0MC4wMCkgc3RhcnRP
ZmZzZXQgMCBlbmRPZmZzZXQgMzYgd2lkdGggMjQwLjAwOiAiWW91IHNob3VsZCBzZWUgYSBncmVl
biA1MCB4IDI1MCBib3guIgorICAgIFJlbmRlclNWR0NvbnRhaW5lciB7Z30gYXQgKDAsNjApIHNp
emUgMjUweDUwCisgICAgICBSZW5kZXJTVkdDb250YWluZXIge2d9IGF0ICgwLDYwKSBzaXplIDI1
MHg1MAorICAgICAgICBSZW5kZXJJbWFnZSB7aW1hZ2V9IGF0ICgwLDApIHNpemUgMjUweDUwCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24957</attachid>
            <date>2008-11-06 16:30:40 -0800</date>
            <delta_ts>2008-11-11 17:12:01 -0800</delta_ts>
            <desc>New iteration: Tackles Darin&apos;s comments and match FF &amp; Opera</desc>
            <filename>ImageLoader-force-load-when-src-set.patch</filename>
            <type>text/plain</type>
            <size>22542</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODIwMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTYgQEAKKzIwMDgtMTEtMDYgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQnVnIDE3ODk3OiBOb3QgUmVuZGVyaW5nIEltYWdlcyBJbXBvcnRlZCBmcm9tIFhIVE1M
IERvY3VtZW50CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODI3NjE0PgorCisgICAgICAgIFdo
ZW4gd2Ugd2VyZSBsb2FkaW5nIGRvY3VtZW50IGluY2x1ZGluZyBpbWFnZXMgd2l0aCBYTUxIdHRw
UmVxdWVzdCwgdGhlIGltYWdlcworICAgICAgICB3b3VsZCBub3QgYmUgZmV0Y2hlZCBhcyB0aGV5
IHdvdWxkIG5vdCBiZSBkaXNwbGF5ZWQuIEhvd2V2ZXIgaWYgd2UgaW5zZXJ0ZWQgc3VjaAorICAg
ICAgICBhbiBpbWFnZSBlbGVtZW50IGludG8gYSByZW5kZXJlZCBkb2N1bWVudCwgd2Ugd291bGQg
bm90IGZldGNoIHRoZSBpbWFnZSBhbmQgdGh1cyBuZXZlcgorICAgICAgICBkaXNwbGF5IGl0Lgor
CisgICAgICAgIE5vdyB3ZSBjaGVjayBpZiB0aGUgaW1hZ2UgaGFzIGJlZW4gbG9hZGVkIHdoZW4g
aW5zZXJ0aW5nIGFuIEhUTUxJbWFnZUVsZW1lbnQuCisgICAgICAgIFRoZSBpbWFnZSBsb2FkZXIg
bm93IGhhcyBhbiBlcnJvciBmbGFnIGFuZCBzdG9yZSB0aGUgc291cmNlIHVybCB0byBhdm9pZCBk
b2luZworICAgICAgICBzZXZlcmFsIGF0dGVtcHQgd2hlbiB3ZSBrbm93IHRoYXQgdGhlIGltYWdl
IGlzIGluIGVycm9yLiBUaGlzIGNhbiBiZSBvdmVycmlkZW4KKyAgICAgICAgd2hlbiB0aGUgdXJs
IGhhcyBjaGFuZ2VkLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL21pc2MvaW1hZ2UtYmxv
Y2tlZC1zcmMtY2hhbmdlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvbWlzYy9pbWFn
ZS1ibG9ja2VkLXNyYy1uby1jaGFuZ2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1pbWFnZS1ub3QtbG9hZGVkLXN2Zy5zdmcKKyAg
ICAgICAgICAgICAgIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtaW1h
Z2Utbm90LWxvYWRlZC5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVtYmVkRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUpOiBGb3JjZSB1cGRhdGVGcm9tRWxlbWVudCB0byBpZ25vcmUKKyAgICAgICAgYSBwcmV2aW91
cyBlcnJvci4KKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50
KTogQ2FsbCB1cGRhdGVGcm9tRWxlbWVudAorICAgICAgICBpZiB3ZSBkbyBub3QgaGF2ZSBhbiBp
bWFnZS4KKworICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6IEZvcmNlIHVw
ZGF0ZUZyb21FbGVtZW50IHRvIGlnbm9yZQorICAgICAgICBhIHByZXZpb3VzIGVycm9yLgorICAg
ICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE9iamVjdEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKTogRm9yY2UgdXBkYXRlRnJvbUVs
ZW1lbnQgdG8gaWdub3JlCisgICAgICAgIGEgcHJldmlvdXMgZXJyb3IuCisgICAgICAgICogaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKTogRm9yY2UgdXBkYXRlRnJvbUVsZW1lbnQgdG8gaWdu
b3JlCisgICAgICAgIGEgcHJldmlvdXMgZXJyb3IuCisKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OkltYWdlTG9hZGVyKTog
QWRkZWQgYXNzZXJ0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnNldEltYWdl
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1l
bnQpOiBBZGRlZCBhIGJvb2xlYW4gcGFyYW1ldGVyIGFuZCBhIGNoZWNrIGZvcgorICAgICAgICBs
b2FkIGVycm9yICh0byBhdm9pZCBkaXNwbGF5aW5nIG11bHRpcGxlIGVycm9ycyBpbiB0aGUgY29u
c29sZSBmb3IgYSBzaW5nbGUgaW1hZ2UgbG9hZCkuCisKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
TG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6IEFkZGVkIGFzc2VydGlvbi4KKyAgICAgICAgKiBsb2Fk
ZXIvSW1hZ2VMb2FkZXIuaDoKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6IEZv
cmNlIHVwZGF0ZUZyb21FbGVtZW50IHRvIGlnbm9yZQorICAgICAgICBhIHByZXZpb3VzIGVycm9y
LgorCisKIDIwMDgtMTEtMDYgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBCZXRoIERha2luLgpJbmRleDogV2ViQ29yZS9odG1sL0hU
TUxFbWJlZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRW1iZWRF
bGVtZW50LmNwcAkocmV2aXNpb24gMzgxODcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEhUTUxFbWJl
ZEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmliCiAgICAgICAgIGlmIChyZW5kZXJlcigpICYmIGlz
SW1hZ2VUeXBlKCkpIHsKICAgICAgICAgICAgIGlmICghbV9pbWFnZUxvYWRlcikKICAgICAgICAg
ICAgICAgICBtX2ltYWdlTG9hZGVyLnNldChuZXcgSFRNTEltYWdlTG9hZGVyKHRoaXMpKTsKLSAg
ICAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7CisgICAgICAgICAg
ICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudCh0cnVlKTsKICAgICAgICAgfQogICAg
IH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGhpZGRlbkF0dHIpIHsKICAgICAgICAgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKHZhbHVlLnN0cmluZygpLCAieWVzIikgfHwgZXF1YWxJZ25vcmluZ0Nh
c2UodmFsdWUuc3RyaW5nKCksICJ0cnVlIikpIHsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDM4MTg3KQorKysgV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWIKICAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIo
KS0+aXNJbWFnZSgpKQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVySW1hZ2UqPihyZW5k
ZXJlcigpKS0+dXBkYXRlQWx0VGV4dCgpOwogICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gc3Jj
QXR0cikKLSAgICAgICAgbV9pbWFnZUxvYWRlci51cGRhdGVGcm9tRWxlbWVudCgpOworICAgICAg
ICBtX2ltYWdlTG9hZGVyLnVwZGF0ZUZyb21FbGVtZW50KHRydWUpOwogICAgIGVsc2UgaWYgKGF0
dHJOYW1lID09IHdpZHRoQXR0cikKICAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3Bl
cnR5V2lkdGgsIGF0dHItPnZhbHVlKCkpOwogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGhlaWdo
dEF0dHIpCkBAIC0xOTQsNiArMTk0LDExIEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6aW5zZXJ0
ZWRJbnRvRG9jdW0KICAgICAgICAgZG9jdW1lbnQtPmFkZEV4dHJhTmFtZWRJdGVtKG1faWQpOwog
ICAgIH0KIAorICAgIC8vIElmIHdlIGhhdmUgYmVlbiBpbnNlcnRlZCBmcm9tIGEgcmVuZGVyZXIt
bGVzcyBkb2N1bWVudCwKKyAgICAvLyBvdXIgbG9hZGVyIG1heSBoYXZlIG5vdCBmZXRjaGVkIHRo
ZSBpbWFnZSwgc28gZG8gaXQgbm93LgorICAgIGlmICghbV9pbWFnZUxvYWRlci5pbWFnZSgpKQor
ICAgICAgICBtX2ltYWdlTG9hZGVyLnVwZGF0ZUZyb21FbGVtZW50KCk7CisKICAgICBIVE1MRWxl
bWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcAkocmV2aXNpb24gMzgxODcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0Niw3ICs2NDYsNyBAQCB2b2lkIEhUTUxJbnB1
dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmliCiAgICAgICAgIGlmIChyZW5kZXJlcigpICYmIGlu
cHV0VHlwZSgpID09IElNQUdFKSB7CiAgICAgICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXIpCiAg
ICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlci5zZXQobmV3IEhUTUxJbWFnZUxvYWRlcih0aGlz
KSk7Ci0gICAgICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudCgpOworICAg
ICAgICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJvbUVsZW1lbnQodHJ1ZSk7CiAgICAgICAg
IH0KICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSB1c2VtYXBBdHRyIHx8CiAgICAgICAg
ICAgICAgICBhdHRyLT5uYW1lKCkgPT0gYWNjZXNza2V5QXR0cikgewpJbmRleDogV2ViQ29yZS9o
dG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRN
TE9iamVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAzODE4NykKKysrIFdlYkNvcmUvaHRtbC9IVE1M
T2JqZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBI
VE1MT2JqZWN0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaQogICAgICAgICBpZiAocmVuZGVyZXIo
KSAmJiBpc0ltYWdlVHlwZSgpKSB7CiAgICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQogICAg
ICAgICAgICAgICBtX2ltYWdlTG9hZGVyLnNldChuZXcgSFRNTEltYWdlTG9hZGVyKHRoaXMpKTsK
LSAgICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudCgpOworICAgICAgICAg
IG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50KHRydWUpOwogICAgICAgICB9CiAgICAg
fSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gY2xhc3NpZEF0dHIpIHsKICAgICAgICAgbV9jbGFz
c0lkID0gdmFsOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAkocmV2aXNpb24gMzgx
ODcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YgogICAgICAgICBpZiAobV9zaG91bGRTaG93UG9zdGVySW1hZ2UpIHsKICAgICAgICAgICAgIGlm
ICghbV9pbWFnZUxvYWRlcikKICAgICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyLnNldChuZXcg
SFRNTEltYWdlTG9hZGVyKHRoaXMpKTsKLSAgICAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0
ZUZyb21FbGVtZW50KCk7CisgICAgICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxl
bWVudCh0cnVlKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gd2lkdGhB
dHRyKQogICAgICAgICBhZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+
dmFsdWUoKSk7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCShyZXZpc2lvbiAzODE4NykKKysr
IFdlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiAr
MzcsNyBAQCBJbWFnZUxvYWRlcjo6SW1hZ2VMb2FkZXIoRWxlbWVudCogZWx0KQogICAgICwgbV9m
aXJlZExvYWQodHJ1ZSkKICAgICAsIG1faW1hZ2VDb21wbGV0ZSh0cnVlKQogICAgICwgbV9sb2Fk
TWFudWFsbHkoZmFsc2UpCisgICAgLCBtX2hhZEVycm9yKGZhbHNlKQogewogfQogCkBAIC00OSw2
ICs1MCw3IEBAIEltYWdlTG9hZGVyOjp+SW1hZ2VMb2FkZXIoKQogCiB2b2lkIEltYWdlTG9hZGVy
OjpzZXRJbWFnZShDYWNoZWRJbWFnZSogbmV3SW1hZ2UpCiB7CisgICAgQVNTRVJUKCFtX2hhZEVy
cm9yKTsKICAgICBDYWNoZWRJbWFnZSogb2xkSW1hZ2UgPSBtX2ltYWdlLmdldCgpOwogICAgIGlm
IChuZXdJbWFnZSAhPSBvbGRJbWFnZSkgewogICAgICAgICBzZXRMb2FkaW5nSW1hZ2UobmV3SW1h
Z2UpOwpAQCAtNzUsNyArNzcsNyBAQCB2b2lkIEltYWdlTG9hZGVyOjpzZXRMb2FkaW5nSW1hZ2Uo
Q2FjaGVkCiAgICAgbV9pbWFnZSA9IGxvYWRpbmdJbWFnZTsKIH0KIAotdm9pZCBJbWFnZUxvYWRl
cjo6dXBkYXRlRnJvbUVsZW1lbnQoKQordm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1l
bnQoYm9vbCBzaG91bGRJZ25vcmVQcmV2aW91c0xvYWRGYWlsdXJlKQogewogICAgIC8vIElmIHdl
J3JlIG5vdCBtYWtpbmcgcmVuZGVyZXJzIGZvciB0aGUgcGFnZSwgdGhlbiBkb24ndCBsb2FkIGlt
YWdlcy4gIFdlIGRvbid0IHdhbnQgdG8gc2xvdwogICAgIC8vIGRvd24gdGhlIHJhdyBIVE1MIHBh
cnNpbmcgY2FzZSBieSBsb2FkaW5nIGltYWdlcyB3ZSBkb24ndCBpbnRlbmQgdG8gZGlzcGxheS4K
QEAgLTg2LDYgKzg4LDkgQEAgdm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQoKQog
CiAgICAgQXRvbWljU3RyaW5nIGF0dHIgPSBlbGVtLT5nZXRBdHRyaWJ1dGUoZWxlbS0+aW1hZ2VT
b3VyY2VBdHRyaWJ1dGVOYW1lKCkpOwogCisgICAgaWYgKCFzaG91bGRJZ25vcmVQcmV2aW91c0xv
YWRGYWlsdXJlICYmIG1faGFkRXJyb3IgJiYgYXR0ciA9PSBtX3NvdXJjZVVSTCkKKyAgICAgICAg
cmV0dXJuOworCiAgICAgLy8gRG8gbm90IGxvYWQgYW55IGltYWdlIGlmIHRoZSAnc3JjJyBhdHRy
aWJ1dGUgaXMgbWlzc2luZyBvciBpZiBpdCBpcwogICAgIC8vIGFuIGVtcHR5IHN0cmluZyByZWZl
cnJpbmcgdG8gYSBsb2NhbCBmaWxlLiBUaGUgbGF0dGVyIGNvbmRpdGlvbiBpcwogICAgIC8vIGEg
cXVpcmsgdGhhdCBwcmVzZXJ2ZXMgb2xkIGJlaGF2aW9yIHRoYXQgRGFzaGJvYXJkIHdpZGdldHMK
QEAgLTEwMCw2ICsxMDUsMTEgQEAgdm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQo
KQogICAgICAgICAgICAgZG9jLT5kb2NMb2FkZXIoKS0+bV9kb2NSZXNvdXJjZXMuc2V0KG5ld0lt
YWdlLT51cmwoKSwgbmV3SW1hZ2UpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG5ld0lt
YWdlID0gZG9jLT5kb2NMb2FkZXIoKS0+cmVxdWVzdEltYWdlKHNvdXJjZVVSSShhdHRyKSk7CisK
KyAgICAgICAgLy8gSWYgd2UgZG8gbm90IGhhdmUgYW4gaW1hZ2UgaGVyZSwgaXQgbWVhbnMgdGhh
dCBhIGNyb3NzLXNpdGUKKyAgICAgICAgLy8gdmlvbGF0aW9uIG9jY3VycmVkLgorICAgICAgICBt
X2hhZEVycm9yID0gIW5ld0ltYWdlOworICAgICAgICBtX3NvdXJjZVVSTCA9IGF0dHI7CiAgICAg
fQogICAgIAogICAgIENhY2hlZEltYWdlKiBvbGRJbWFnZSA9IG1faW1hZ2UuZ2V0KCk7CkBAIC0x
MjEsNiArMTMxLDcgQEAgdm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQoKQogCiB2
b2lkIEltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSAqaW1hZ2UpCiB7
CisgICAgQVNTRVJUKCFtX2hhZEVycm9yKTsKICAgICBtX2ltYWdlQ29tcGxldGUgPSB0cnVlOwog
CiAgICAgRWxlbWVudCogZWxlbSA9IGVsZW1lbnQoKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0lt
YWdlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaAko
cmV2aXNpb24gMzgxODcpCisrKyBXZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYgKzEsNCBAQAogLyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBE
T00gaW1wbGVtZW50YXRpb24gZm9yIEtERS4KLSAqCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFy
cyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2
aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21w
dXRlciwgSW5jLgpAQCAtMjUsMTIgKzIzLDEyIEBACiAjaWZuZGVmIEltYWdlTG9hZGVyX2gKICNk
ZWZpbmUgSW1hZ2VMb2FkZXJfaAogCisjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCiAjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRs
ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEF0b21pY1N0cmluZzsKIGNsYXNz
IEVsZW1lbnQ7CiAKIGNsYXNzIEltYWdlTG9hZGVyIDogcHVibGljIENhY2hlZFJlc291cmNlQ2xp
ZW50IHsKQEAgLTM4LDcgKzM2LDcgQEAgcHVibGljOgogICAgIEltYWdlTG9hZGVyKEVsZW1lbnQq
KTsKICAgICB2aXJ0dWFsIH5JbWFnZUxvYWRlcigpOwogCi0gICAgdm9pZCB1cGRhdGVGcm9tRWxl
bWVudCgpOworICAgIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoYm9vbCBzaG91bGRJZ25vcmVQcmV2
aW91c0xvYWRGYWlsdXJlID0gZmFsc2UpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTG9h
ZEV2ZW50KCkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJjZVVSSShjb25zdCBBdG9taWNT
dHJpbmcmKSBjb25zdCA9IDA7CkBAIC02Myw5ICs2MSwxMSBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRl
OgogICAgIEVsZW1lbnQqIG1fZWxlbWVudDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRJbWFnZT4gbV9pbWFnZTsKKyAgICBBdG9taWNTdHJpbmcgbV9zb3VyY2VVUkw7CiAgICAgYm9v
bCBtX2ZpcmVkTG9hZCA6IDE7CiAgICAgYm9vbCBtX2ltYWdlQ29tcGxldGUgOiAxOwogICAgIGJv
b2wgbV9sb2FkTWFudWFsbHkgOiAxOworICAgIGJvb2wgbV9oYWRFcnJvciA6IDE7CiB9OwogCiB9
CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDM4MTg3KQorKysgV2ViQ29y
ZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDcgKzEwOCw3
IEBAIHZvaWQgU1ZHSW1hZ2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2UKICAgICAgICAgcmVu
ZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiAKICAgICAgICAgaWYgKGlzVVJJQXR0cmli
dXRlKQotICAgICAgICAgICAgbV9pbWFnZUxvYWRlci51cGRhdGVGcm9tRWxlbWVudCgpOworICAg
ICAgICAgICAgbV9pbWFnZUxvYWRlci51cGRhdGVGcm9tRWxlbWVudCh0cnVlKTsKICAgICB9CiB9
CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDM4MjAxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMDgtMTEtMDYgIEp1bGllbiBDaGFmZnJh
aXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgY2FzZXMgZm9yIGJ1ZyAxNzg5NzogTm90IFJlbmRl
cmluZyBJbWFnZXMgSW1wb3J0ZWQgZnJvbSBYSFRNTCBEb2N1bWVudAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTgyNzYxND4KKworICAgICAgICAtIHhtbGh0dHByZXF1ZXN0LWltYWdlLW5vdC1s
b2FkZWQqOiB0ZXN0IHRoYXQgYW4gaW1hZ2UgbG9hZGVkIGJ5IGFuIFhNTEh0dHBSZXF1ZXN0IGFu
ZCBpbnNlcnRlZCBpbnRvIGEgWEhUTUwgb3IgU1ZHIERvY3VtZW50CisgICAgICAgIGlzIHByb3Bl
cmx5IHJlbmRlcmVkLgorCisgICAgICAgIC0gaW1hZ2UtYmxvY2tlZC1zcmMtY2hhbmdlLmh0bWwg
YW5kIGltYWdlLWJsb2NrZWQtc3JjLW5vLWNoYW5nZS5odG1sOiB0ZXN0cyB0aGF0IGFuIGltYWdl
IHRoYXQgd2FzIGluIGVycm9yIGlzIHJlc3BvbmRpbmcgdG8gc3JjIGF0dHJpYnV0ZSBjaGFuZ2UK
KyAgICAgICAgICAod2hldGhlciBpdCBkb2VzIHJlYWxseSBjaGFuZ2UgdGhlIHVybCBvciBub3Qp
LgorCisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL2ltYWdlLWJsb2NrZWQtc3JjLWNoYW5nZS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9pbWFnZS1ibG9j
a2VkLXNyYy1jaGFuZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL2lt
YWdlLWJsb2NrZWQtc3JjLW5vLWNoYW5nZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvbWlzYy9pbWFnZS1ibG9ja2VkLXNyYy1uby1jaGFuZ2UuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvbG9hZC1pY29u
LnN2ZzogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJj
ZXMvbG9hZC1pY29uLnhodG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWltYWdlLW5vdC1sb2FkZWQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWlt
YWdlLW5vdC1sb2FkZWQtc3ZnLnN2ZzogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1pbWFnZS1ub3QtbG9hZGVkLmh0bWw6IEFkZGVkLgor
CiAyMDA4LTExLTA2ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgQmV0aCBEYWtpbi4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbWlzYy9pbWFnZS1ibG9ja2VkLXNyYy1jaGFuZ2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9pbWFnZS1ibG9ja2VkLXNyYy1jaGFuZ2Ut
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNj
L2ltYWdlLWJsb2NrZWQtc3JjLWNoYW5nZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsOCBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IE5vdCBhbGxvd2VkIHRvIGxvYWQg
bG9jYWwgcmVzb3VyY2U6IGNvbXBhc3MuanBnCitUZXN0IGNhc2UgZm9yIGJ1ZyAxNzg5NyA6IE5v
dCBSZW5kZXJpbmcgSW1hZ2VzIEltcG9ydGVkIGZyb20gWEhUTUwgRG9jdW1lbnQKKworWW91IHNo
b3VsZCBzZWUgUEFTU0VEIG9uY2UgYW5kIDI1MCB4IDUwIGdyZWVuIGJveC4gVGhlIGNvbnNvbGUg
c2hvdWxkIGFsc28gc2hvdyBhIGJsb2NrZWQgYXR0ZW1wdCB0byBsb2FkIGEgbG9jYWwgcmVzb3Vy
Y2UuCisKK1BBU1NFRAorCisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9pbWFn
ZS1ibG9ja2VkLXNyYy1jaGFuZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL21pc2MvaW1hZ2UtYmxvY2tlZC1zcmMtY2hhbmdlLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvaW1hZ2UtYmxvY2tlZC1zcmMtY2hhbmdlLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKKzxodG1sPgorICAgIDxoZWFkPgorICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9lY21hc2NyaXB0Ij4KKyAgICAgICAgZnVuY3Rpb24gbG9nU3Vj
Y2Vzc09yRmFpbHVyZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBjb25zb2xlID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKTsKKyAgICAgICAgICAgIHZhciBpbWFnZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWFnZScpOworCisgICAgICAgICAgICBpZiAoaW1h
Z2UuaGVpZ2h0ICYmIGltYWdlLndpZHRoKQorICAgICAgICAgICAgICAgIGNvbnNvbGUuaW5uZXJI
VE1MID0gIlBBU1NFRCI7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY29uc29s
ZS5pbm5lckhUTUwgPSAiRkFJTEVEIjsKKworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGFuZ2VTcmMoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
ICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdp
bWFnZScpOworCisgICAgICAgICAgICBpZiAoaW1hZ2UuaGVpZ2h0IHx8IGltYWdlLndpZHRoKSB7
CisgICAgICAgICAgICAgICAgY29uc29sZS5pbm5lckhUTUwgPSAiRkFJTEVEIjsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGltYWdlLnNyYyA9
ICIuLi9zZWN1cml0eS9yZXNvdXJjZXMvZ3JlZW4yNTB4NTAucG5nIjsKKworICAgICAgICAgICAg
Ly8gVGhlIGltYWdlIG1heSBub3QgYmUgbG9hZGVkLCBzbyBqdXN0IHdhaXQgYSBsaXR0bGUKKyAg
ICAgICAgICAgIC8vIGJlZm9yZSBjaGVja2luZyBpZiBpdCB3YXMgbG9hZGVkLgorICAgICAgICAg
ICAgd2luZG93LnNldFRpbWVvdXQoImxvZ1N1Y2Nlc3NPckZhaWx1cmUoKSIsIDEwMCk7CisgICAg
ICAgIH0KKyAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJjaGFu
Z2VTcmMoKSI+CisgICAgICAgIDxwPiBUZXN0IGNhc2UgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg5NyI+IGJ1ZyAxNzg5NyA8L2E+OiAgTm90
IFJlbmRlcmluZyBJbWFnZXMgSW1wb3J0ZWQgZnJvbSBYSFRNTCBEb2N1bWVudCA8L3A+CisgICAg
ICAgIDxwPiBZb3Ugc2hvdWxkIHNlZSBQQVNTRUQgb25jZSBhbmQgMjUwIHggNTAgZ3JlZW4gYm94
LiBUaGUgY29uc29sZSBzaG91bGQgYWxzbyBzaG93IGEgYmxvY2tlZCBhdHRlbXB0IHRvIGxvYWQg
YSBsb2NhbCByZXNvdXJjZS48L3A+CisgICAgICAgIDxwIGlkPSdjb25zb2xlJz4gPC9wPgorICAg
ICAgICA8IS0tIFRoaXMgaW1hZ2Ugc2hvdWxkIGJlIGJsb2NrZWQgKHNlZSBzZWN1cml0eS9sb2Nh
bC1pbWFnZS1mcm9tLXJlbW90ZS5odG1sKSAtLT4KKyAgICAgICAgPGltZyBpZD0naW1hZ2UnIHNy
Yz0iZmlsZTovLy90bXAvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMv
Y29tcGFzcy5qcGciLz4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL21pc2MvaW1hZ2UtYmxvY2tlZC1zcmMtbm8tY2hhbmdlLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvaW1hZ2UtYmxvY2tlZC1z
cmMtbm8tY2hhbmdlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbWlzYy9pbWFnZS1ibG9ja2VkLXNyYy1uby1jaGFuZ2UtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBOb3Qg
YWxsb3dlZCB0byBsb2FkIGxvY2FsIHJlc291cmNlOiBjb21wYXNzLmpwZworQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDA6IE5vdCBhbGxvd2VkIHRvIGxvYWQgbG9jYWwgcmVzb3VyY2U6IGNvbXBhc3Mu
anBnCitUZXN0IGNhc2UgZm9yIGJ1ZyAxNzg5NyA6IE5vdCBSZW5kZXJpbmcgSW1hZ2VzIEltcG9y
dGVkIGZyb20gWEhUTUwgRG9jdW1lbnQKKworVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHNldHRpbmcg
YW4gaW1hZ2UgdXJsIHNob3VsZCBsZWFkIHRvIGxvYWQgZXZlbiBpZiB0aGUgaW1hZ2Ugd2FzIGlu
IGVycm9yIGFuZCB0aGUgdXJsIGlzIG5vdCBjaGFuZ2VkLgorCitGb3IgdGhpcyB0ZXN0IHRvIHBh
c3MsIHlvdSBzaG91bGQgc2VlIDIgbWVzc2FnZXMgaW4gdGhlIGNvbnNvbGUKKworCkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvaW1hZ2UtYmxvY2tlZC1zcmMtbm8tY2hhbmdlLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2ltYWdlLWJsb2Nr
ZWQtc3JjLW5vLWNoYW5nZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9taXNjL2ltYWdlLWJsb2NrZWQtc3JjLW5vLWNoYW5nZS5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDI5IEBACis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICA8c2NyaXB0IHR5cGU9InRl
eHQvZWNtYXNjcmlwdCI+CisgICAgICAgIGZ1bmN0aW9uIGNoYW5nZVNyYygpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgICAgICB2
YXIgaW1hZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1hZ2UnKTsKKworICAgICAgICAg
ICAgaWYgKGltYWdlLmhlaWdodCB8fCBpbWFnZS53aWR0aCkgeworICAgICAgICAgICAgICAgIGNv
bnNvbGUuaW5uZXJIVE1MID0gIkZBSUxFRCI7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBXZSByZXNldCB0aGUgaW1hZ2Ugc3JjIHRvIHRo
ZSBzYW1lIHVybCB0byBjaGVjayB0aGF0IGl0IHdhcyAKKyAgICAgICAgICAgIGltYWdlLnNyYyA9
ICJmaWxlOi8vL3RtcC9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9j
b21wYXNzLmpwZyI7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAg
PGJvZHkgb25sb2FkPSJjaGFuZ2VTcmMoKSI+CisgICAgICAgIDxwPiBUZXN0IGNhc2UgZm9yIDxh
IGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg5NyI+IGJ1
ZyAxNzg5NyA8L2E+OiAgTm90IFJlbmRlcmluZyBJbWFnZXMgSW1wb3J0ZWQgZnJvbSBYSFRNTCBE
b2N1bWVudCA8L3A+CisgICAgICAgIDxwPiBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgc2V0dGluZyBh
biBpbWFnZSB1cmwgc2hvdWxkIGxlYWQgdG8gbG9hZCBldmVuIGlmIHRoZSBpbWFnZSB3YXMgaW4g
ZXJyb3IgYW5kIHRoZSB1cmwgaXMgbm90IGNoYW5nZWQuIDwvcD4KKyAgICAgICAgPHA+IEZvciB0
aGlzIHRlc3QgdG8gcGFzcywgeW91IHNob3VsZCBzZWUgMiBtZXNzYWdlcyBpbiB0aGUgY29uc29s
ZSA8L3A+CisgICAgICAgIDxwIGlkPSdjb25zb2xlJz4gPC9wPgorICAgICAgICA8IS0tIFRoaXMg
aW1hZ2Ugc2hvdWxkIGJlIGJsb2NrZWQgKHNlZSBzZWN1cml0eS9sb2NhbC1pbWFnZS1mcm9tLXJl
bW90ZS5odG1sKSAtLT4KKyAgICAgICAgPGltZyBpZD0naW1hZ2UnIHNyYz0iZmlsZTovLy90bXAv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvY29tcGFzcy5qcGciLz4K
KyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWltYWdlLW5vdC1sb2FkZWQtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0
cHJlcXVlc3QtaW1hZ2Utbm90LWxvYWRlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWltYWdl
LW5vdC1sb2FkZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKK1Rl
c3QgY2FzZSBmb3IgYnVnIDE3ODk3IDogTm90IFJlbmRlcmluZyBJbWFnZXMgSW1wb3J0ZWQgZnJv
bSBYSFRNTCBEb2N1bWVudAorCitZb3Ugc2hvdWxkIHNlZSBQQVNTRUQgb25jZS4KKworUEFTU0VE
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1
ZXN0LWltYWdlLW5vdC1sb2FkZWQtc3ZnLnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWltYWdlLW5vdC1sb2FkZWQt
c3ZnLnN2ZwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QveG1saHR0cHJlcXVlc3QtaW1hZ2Utbm90LWxvYWRlZC1zdmcuc3ZnCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDI0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/
PgorPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjAvL0VOIiAiaHR0cDov
L3d3dy53My5vcmcvVFIvU1ZHL0RURC9zdmcxMC5kdGQiPgorPHN2ZyB3aWR0aD0iMTAwJSIgaGVp
Z2h0PSIxMDAlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQv
ZWNtYXNjcmlwdCI+IDwhW0NEQVRBWworICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1
ZXN0KCk7CisgICAgICAgIHhoci5vcGVuKCdHRVQnLCAncmVzb3VyY2VzL2xvYWQtaWNvbi5zdmcn
KTsKKyAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCl7CisgICAgICAg
ICAgICBpZih4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CisgICAgICAgICAgICAgICAgdmFyIGcgPSB4
aHIucmVzcG9uc2VYTUwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2cnKVswXTsKKyAgICAgICAgICAg
ICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5hZG9wdE5vZGUoZyk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhdGNoKGUpe30KKworICAgICAgICAg
ICAgICAgIHZhciBpY29uID0gZy5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW1hZ2UnKVswXTsKKyAg
ICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1hZ2UnKS5hcHBlbmRDaGls
ZChnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgeGhyLnNlbmQobnVsbCk7
CitdXT4gPC9zY3JpcHQ+CisgICAgPHRleHQgeD0iMCIgeT0iMjAiPiBUZXN0IGNhc2UgZm9yIDxh
IGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg5NyI+IGJ1
ZyAxNzg5NyA8L2E+OiAgTm90IFJlbmRlcmluZyBJbWFnZXMgSW1wb3J0ZWQgZnJvbSBYSFRNTCBE
b2N1bWVudCA8L3RleHQ+CisgICAgPHRleHQgeT0iNDAiPiBZb3Ugc2hvdWxkIHNlZSBhIGdyZWVu
IDUwIHggMjUwIGJveC4gPC90ZXh0PgorICAgIDxnIGlkPSdpbWFnZScgeT0iNjAiIHdpZHRoPSIy
NTAiIGhlaWdodD0iNTAiPiA8L2c+Cis8L3N2Zz4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtaW1hZ2Utbm90LWxvYWRlZC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0
cHJlcXVlc3QtaW1hZ2Utbm90LWxvYWRlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1pbWFnZS1ub3QtbG9h
ZGVkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKzxodG1sPgorICAgIDxoZWFk
PgorICAgICAgICA8dGl0bGU+U2FmYXJpIElzc3VlOiBOb3QgUmVuZGVyaW5nIEltYWdlcyBJbXBv
cnRlZCBmcm9tIFhIVE1MIERvY3VtZW50PC90aXRsZT4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+
CisgICAgICAgIDxwPiBUZXN0IGNhc2UgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg5NyI+IGJ1ZyAxNzg5NyA8L2E+OiAgTm90IFJlbmRlcmlu
ZyBJbWFnZXMgSW1wb3J0ZWQgZnJvbSBYSFRNTCBEb2N1bWVudCA8L3A+CisgICAgICAgIDxwPiBZ
b3Ugc2hvdWxkIHNlZSBQQVNTRUQgb25jZS4gPC9wPgorICAgICAgICA8ZGl2IGlkPSdjb25zb2xl
Jz5GQUlMRUQgKGRpZCBub3QgbG9hZCB0aGUgaW1hZ2UpPC9kaXY+CisgICAgICAgIDxkaXYgaWQ9
J2ltYWdlJyBzdHlsZT0iZGlzcGxheTogbm9uZSI+IDwvZGl2PgorICAgICAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCI+CisKKyAgICAgICAgZnVuY3Rpb24gbG9nU3VjY2Vzc09yRmFp
bHVyZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKTsKKyAgICAgICAgICAgIC8vIElmIHRoZSBpbWFnZSB3YXMg
bG9hZGVkIGNvcnJlY3RseSwgdGhlbiBoZWlnaHQKKyAgICAgICAgICAgIC8vIGFuZCB3aWR0aCBh
cmUgbm90IHplcm8uCisgICAgICAgICAgICBpZiAoaWNvbi5oZWlnaHQgJiYgaWNvbi53aWR0aCkK
KyAgICAgICAgICAgICAgICBjb25zb2xlLmlubmVySFRNTCA9ICJQQVNTRUQiOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MID0gIkZBSUxFRCI7CisK
KyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHhociA9
IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgICAgICB4aHIub3BlbignR0VUJywgJ3Jlc291cmNl
cy9sb2FkLWljb24ueGh0bWwnKTsKKyAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1
bmN0aW9uKCl7CisgICAgICAgICAgICBpZih4aHIucmVhZHlTdGF0ZSA9PSA0ICYmIHhoci5zdGF0
dXMgPT0gMjAwKSB7CisgICAgICAgICAgICAgICAgdmFyIGRpdiA9IHhoci5yZXNwb25zZVhNTC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2JylbMF07CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYWRvcHROb2RlKGRpdik7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGNhdGNoKGUpe30KKworICAgICAgICAgICAgICAgIHZhciBp
Y29uID0gZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbWcnKVswXTsKKyAgICAgICAgICAgICAg
ICBpY29uLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBsb2dTdWNjZXNzT3JGYWlsdXJlLCB0cnVl
KTsKKworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWFnZScpLmFw
cGVuZENoaWxkKGRpdik7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIHhoci5z
ZW5kKG51bGwpOworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9sb2FkLWlj
b24uc3ZnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3QvcmVzb3VyY2VzL2xvYWQtaWNvbi5zdmcJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9sb2FkLWljb24uc3ZnCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04
Ij8+Cis8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMC8vRU4iICJodHRw
Oi8vd3d3LnczLm9yZy9UUi9TVkcvRFREL3N2ZzEwLmR0ZCI+Cis8c3ZnIHdpZHRoPSIxMDAlIiBo
ZWlnaHQ9IjEwMCUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICAgIDxnIHg9IjAiIHk9IjYwIiB3
aWR0aD0iMjUwIiBoZWlnaHQ9IjUwIj4KKyAgICAgICAgPCEtLSB0aGUgcGF0aCBpcyByZWxhdGl2
ZSB0byB0aGUgcGFyZW50IGRpcmVjdG9yeSAtLT4KKyAgICAgICAgPGltYWdlIHhsaW5rOmhyZWY9
Ii4uL3NlY3VyaXR5L3Jlc291cmNlcy9ncmVlbjI1MHg1MC5wbmciIHg9IjAiIHk9IjYwIiB3aWR0
aD0iMjUwIiBoZWlnaHQ9IjUwIiBhbHQ9Imljb24iIGlkPSJpY29uIi8+CisgICAgPC9nPgorPC9z
dmc+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNl
cy9sb2FkLWljb24ueGh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvbG9hZC1pY29uLnhodG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvbG9hZC1pY29u
LnhodG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAi
Pz4KKzwhRE9DVFlQRSBodG1sPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGh0bWwiPgorICAgIDxoZWFkPgorICAgICAgICA8dGl0bGU+VGVzdCBYSFRNTCBEb2N1bWVudCBj
b250YWluaW5nIEltYWdlczwvdGl0bGU+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAg
ICA8ZGl2PgorICAgICAgICAgICAgPCEtLSB0aGUgcGF0aCBpcyByZWxhdGl2ZSB0byB0aGUgcGFy
ZW50IGRpcmVjdG9yeSAtLT4KKyAgICAgICAgICAgIDxpbWcgc3JjPSIuLi9zZWN1cml0eS9yZXNv
dXJjZXMvZ3JlZW4yNTB4NTAucG5nIiBhbHQ9Imljb24iIGlkPSJpY29uIi8+CisgICAgICAgIDwv
ZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="11455"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25079</attachid>
            <date>2008-11-11 17:12:01 -0800</date>
            <delta_ts>2008-12-05 09:30:46 -0800</delta_ts>
            <desc>Another round: Remove the boolean and </desc>
            <filename>ImageLoader-force-load-when-src-set-better.patch</filename>
            <type>text/plain</type>
            <size>22980</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODMyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTMgQEAKKzIwMDgtMTEtMTEgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQnVnIDE3ODk3OiBOb3QgUmVuZGVyaW5nIEltYWdlcyBJbXBvcnRlZCBmcm9tIFhIVE1M
IERvY3VtZW50CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODI3NjE0PgorCisgICAgICAgIFdo
ZW4gd2Ugd2VyZSBsb2FkaW5nIGRvY3VtZW50IHdpdGggWE1MSHR0cFJlcXVlc3QgdGhhdCBjb250
YWluZWQgaW1hZ2VzLCB0aGUgaW1hZ2VzCisgICAgICAgIHdvdWxkIG5vdCBiZSBmZXRjaGVkIGFz
IHRoZXkgd291bGQgbm90IGJlIGRpc3BsYXllZC4gSG93ZXZlciBpZiB3ZSBpbnNlcnRlZCBzdWNo
CisgICAgICAgIGFuIGltYWdlIGVsZW1lbnQgaW50byBhIHJlbmRlcmVkIGRvY3VtZW50LCB3ZSB3
b3VsZCBub3QgZmV0Y2ggdGhlIGltYWdlIGFuZCB0aHVzIG5ldmVyCisgICAgICAgIGRpc3BsYXkg
aXQuCisKKyAgICAgICAgTm93IHdlIGNoZWNrIGlmIHRoZSBpbWFnZSBoYXMgYmVlbiBsb2FkZWQg
d2hlbiB3ZSBpbnNlcnQgYW4gSFRNTEltYWdlRWxlbWVudCBpbnRvIGEKKyAgICAgICAgZG9jdW1l
bnQuCisgICAgICAgIFRvIGVuYWJsZSB0aGlzLCB0aGUgaW1hZ2UgbG9hZGVyIGhhcyBhbiBlcnJv
ciBmbGFnLiBUbyBhdm9pZCBkb2luZyBzZXZlcmFsIGF0dGVtcHRzCisgICAgICAgIHdoZW4gd2Ug
a25vdyB0aGF0IHRoZSBpbWFnZSBpcyBpbiBlcnJvciwgd2Ugc3RvcmUgdGhlIGZhaWxlZCBVUkwu
CisgICAgICAgIEhvd2V2ZXIgRmlyZWZveCBhbmQgT3BlcmEgaWdub3JlIGVycm9ycyB3aGVuIHRo
ZSAnc3JjJyBhdHRyaWJ1dGUgY2hhbmdlcyBhbmQgdGh1cworICAgICAgICB3ZSBhbHNvIGhhdmUg
YW4gdXBkYXRlRnJvbUVsZW1lbnRJZ25vcmluZ1ByZXZpb3VzRXJyb3IgdG8gbWF0Y2ggdGhlIG90
aGVyIGJyb3dzZXIuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvbWlzYy9pbWFnZS1ibG9j
a2VkLXNyYy1jaGFuZ2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9taXNjL2ltYWdl
LWJsb2NrZWQtc3JjLW5vLWNoYW5nZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWltYWdlLW5vdC1sb2FkZWQtc3ZnLnN2ZworICAg
ICAgICAgICAgICAgaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1pbWFn
ZS1ub3QtbG9hZGVkLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW1iZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZSk6IENoYW5nZWQgdG8gY2FsbCB1cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJv
ci4KKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEltYWdlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KTogQ2Fs
bCB1cGRhdGVGcm9tRWxlbWVudCBpZiB3ZSBkbyBub3QgaGF2ZQorICAgICAgICBhbiBpbWFnZS4K
KworICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6IENoYW5nZWQgdG8gY2Fs
bCB1cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvci4KKyAgICAgICAgKiBodG1s
L0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPYmplY3RFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTFZp
ZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZSk6IERpdHRvLgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6c2V0SW1hZ2UpOiBBZGRlZCBhbiBh
c3NlcnRpb24uCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1l
bnQpOiBBZGRlZCBhIGNoZWNrIGZvciBsb2FkIGVycm9yICh0byBhdm9pZCBkaXNwbGF5aW5nCisg
ICAgICAgIG11bHRpcGxlIGVycm9ycyBpbiB0aGUgY29uc29sZSBmb3IgYSBzaW5nbGUgaW1hZ2Ug
bG9hZCkuCisKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVu
dElnbm9yaW5nUHJldmlvdXNFcnJvcik6IFRoaXMgbWV0aG9kIGNsZWFycyBwcmV2aW91cyBlcnJv
cgorICAgICAgICBiZWZvcmUgY2FsbGluZyB1cGRhdGVGcm9tRWxlbWVudC4KKworICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKTogQWRkZWQgYW4gYXNzZXJ0aW9u
LgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5oOgorICAgICAgICAqIHN2Zy9TVkdJbWFn
ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKTogQ2hhbmdlZCB0byBjYWxsIHVwZGF0ZUZyb21FbGVtZW50SWdub3JpbmdQ
cmV2aW91c0Vycm9yLgorCiAyMDA4LTExLTExICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KSW5kZXg6IFdlYkNvcmUvaHRt
bC9IVE1MRW1iZWRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEVt
YmVkRWxlbWVudC5jcHAJKHJldmlzaW9uIDM4MzE4KQorKysgV2ViQ29yZS9odG1sL0hUTUxFbWJl
ZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDEwIEBAIHZvaWQgSFRN
TEVtYmVkRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKICAgICAgICAgaWYgKHJlbmRlcmVyKCkg
JiYgaXNJbWFnZVR5cGUoKSkgewogICAgICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQogICAg
ICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIuc2V0KG5ldyBIVE1MSW1hZ2VMb2FkZXIodGhpcykp
OwotICAgICAgICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKKworICAg
ICAgICAgICAgLy8gVGhlIEltYWdlTG9hZGVyIFVSTCB3YXMgbW9kaWZpZWQgc28gdG8gbWF0Y2gg
RmlyZWZveCBhbmQgT3BlcmEsCisgICAgICAgICAgICAvLyBqdXN0IGZvcmNlIHRoZSB1cGRhdGUu
CisgICAgICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJl
dmlvdXNFcnJvcigpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
aGlkZGVuQXR0cikgewogICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUuc3RyaW5n
KCksICJ5ZXMiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZS5zdHJpbmcoKSwgInRydWUiKSkg
ewpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMzgzMTgpCisrKyBX
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDcg
KzkwLDkgQEAgdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYgogICAgICAg
ICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc0ltYWdlKCkpCiAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxSZW5kZXJJbWFnZSo+KHJlbmRlcmVyKCkpLT51cGRhdGVBbHRUZXh0KCk7CiAg
ICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSBzcmNBdHRyKQotICAgICAgICBtX2ltYWdlTG9hZGVy
LnVwZGF0ZUZyb21FbGVtZW50KCk7CisgICAgICAgIC8vIFRoZSBJbWFnZUxvYWRlciBVUkwgd2Fz
IG1vZGlmaWVkIHNvIHRvIG1hdGNoIEZpcmVmb3ggYW5kIE9wZXJhLAorICAgICAgICAvLyBqdXN0
IGZvcmNlIHRoZSB1cGRhdGUuCisgICAgICAgIG1faW1hZ2VMb2FkZXIudXBkYXRlRnJvbUVsZW1l
bnRJZ25vcmluZ1ByZXZpb3VzRXJyb3IoKTsKICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSB3aWR0
aEF0dHIpCiAgICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0eVdpZHRoLCBhdHRy
LT52YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBoZWlnaHRBdHRyKQpAQCAtMTk0
LDYgKzE5NiwxMSBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtCiAg
ICAgICAgIGRvY3VtZW50LT5hZGRFeHRyYU5hbWVkSXRlbShtX2lkKTsKICAgICB9CiAKKyAgICAv
LyBJZiB3ZSBoYXZlIGJlZW4gaW5zZXJ0ZWQgZnJvbSBhIHJlbmRlcmVyLWxlc3MgZG9jdW1lbnQs
CisgICAgLy8gb3VyIGxvYWRlciBtYXkgaGF2ZSBub3QgZmV0Y2hlZCB0aGUgaW1hZ2UsIHNvIGRv
IGl0IG5vdy4KKyAgICBpZiAoIW1faW1hZ2VMb2FkZXIuaW1hZ2UoKSkKKyAgICAgICAgbV9pbWFn
ZUxvYWRlci51cGRhdGVGcm9tRWxlbWVudCgpOworCiAgICAgSFRNTEVsZW1lbnQ6Omluc2VydGVk
SW50b0RvY3VtZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHJl
dmlzaW9uIDM4MzE4KQorKysgV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NDYsNyArNjQ2LDEwIEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWIKICAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgaW5wdXRUeXBlKCkgPT0g
SU1BR0UpIHsKICAgICAgICAgICAgIGlmICghbV9pbWFnZUxvYWRlcikKICAgICAgICAgICAgICAg
ICBtX2ltYWdlTG9hZGVyLnNldChuZXcgSFRNTEltYWdlTG9hZGVyKHRoaXMpKTsKLSAgICAgICAg
ICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7CisKKyAgICAgICAgICAgIC8v
IFRoZSBJbWFnZUxvYWRlciBVUkwgd2FzIG1vZGlmaWVkIHNvIHRvIG1hdGNoIEZpcmVmb3ggYW5k
IE9wZXJhLAorICAgICAgICAgICAgLy8ganVzdCBmb3JjZSB0aGUgdXBkYXRlLgorICAgICAgICAg
ICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJvbUVsZW1lbnRJZ25vcmluZ1ByZXZpb3VzRXJyb3Io
KTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHVzZW1hcEF0dHIg
fHwKICAgICAgICAgICAgICAgIGF0dHItPm5hbWUoKSA9PSBhY2Nlc3NrZXlBdHRyKSB7CkluZGV4
OiBXZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDM4MzE4KQorKysgV2ViQ29y
ZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYs
MTAgQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaQogICAgICAgICBp
ZiAocmVuZGVyZXIoKSAmJiBpc0ltYWdlVHlwZSgpKSB7CiAgICAgICAgICAgaWYgKCFtX2ltYWdl
TG9hZGVyKQogICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyLnNldChuZXcgSFRNTEltYWdlTG9h
ZGVyKHRoaXMpKTsKLSAgICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudCgp
OworCisgICAgICAgICAgLy8gVGhlIEltYWdlTG9hZGVyIFVSTCB3YXMgbW9kaWZpZWQgc28gdG8g
bWF0Y2ggRmlyZWZveCBhbmQgT3BlcmEsCisgICAgICAgICAgLy8ganVzdCBmb3JjZSB0aGUgdXBk
YXRlLgorICAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50SWdub3JpbmdQ
cmV2aW91c0Vycm9yKCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9
PSBjbGFzc2lkQXR0cikgewogICAgICAgICBtX2NsYXNzSWQgPSB2YWw7CkluZGV4OiBXZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hU
TUxWaWRlb0VsZW1lbnQuY3BwCShyZXZpc2lvbiAzODMxOCkKKysrIFdlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsNyArOTIsMTAgQEAgdm9pZCBI
VE1MVmlkZW9FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYgogICAgICAgICBpZiAobV9zaG91bGRT
aG93UG9zdGVySW1hZ2UpIHsKICAgICAgICAgICAgIGlmICghbV9pbWFnZUxvYWRlcikKICAgICAg
ICAgICAgICAgICBtX2ltYWdlTG9hZGVyLnNldChuZXcgSFRNTEltYWdlTG9hZGVyKHRoaXMpKTsK
LSAgICAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7CisKKyAgICAg
ICAgICAgIC8vIFRoZSBJbWFnZUxvYWRlciBVUkwgd2FzIG1vZGlmaWVkIHNvIHRvIG1hdGNoIEZp
cmVmb3ggYW5kIE9wZXJhLAorICAgICAgICAgICAgLy8ganVzdCBmb3JjZSB0aGUgdXBkYXRlLgor
ICAgICAgICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJvbUVsZW1lbnRJZ25vcmluZ1ByZXZp
b3VzRXJyb3IoKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gd2lkdGhB
dHRyKQogICAgICAgICBhZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+
dmFsdWUoKSk7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCShyZXZpc2lvbiAzODMxOCkKKysr
IFdlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNiAr
NDksNyBAQCBJbWFnZUxvYWRlcjo6fkltYWdlTG9hZGVyKCkKIAogdm9pZCBJbWFnZUxvYWRlcjo6
c2V0SW1hZ2UoQ2FjaGVkSW1hZ2UqIG5ld0ltYWdlKQogeworICAgIEFTU0VSVChtX2ZhaWxlZExv
YWRVUkwuaXNFbXB0eSgpKTsKICAgICBDYWNoZWRJbWFnZSogb2xkSW1hZ2UgPSBtX2ltYWdlLmdl
dCgpOwogICAgIGlmIChuZXdJbWFnZSAhPSBvbGRJbWFnZSkgewogICAgICAgICBzZXRMb2FkaW5n
SW1hZ2UobmV3SW1hZ2UpOwpAQCAtODYsNiArODcsOSBAQCB2b2lkIEltYWdlTG9hZGVyOjp1cGRh
dGVGcm9tRWxlbWVudCgpCiAKICAgICBBdG9taWNTdHJpbmcgYXR0ciA9IGVsZW0tPmdldEF0dHJp
YnV0ZShlbGVtLT5pbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSk7CiAKKyAgICBpZiAoYXR0ciA9
PSBtX2ZhaWxlZExvYWRVUkwpCisgICAgICAgIHJldHVybjsKKwogICAgIC8vIERvIG5vdCBsb2Fk
IGFueSBpbWFnZSBpZiB0aGUgJ3NyYycgYXR0cmlidXRlIGlzIG1pc3Npbmcgb3IgaWYgaXQgaXMK
ICAgICAvLyBhbiBlbXB0eSBzdHJpbmcgcmVmZXJyaW5nIHRvIGEgbG9jYWwgZmlsZS4gVGhlIGxh
dHRlciBjb25kaXRpb24gaXMKICAgICAvLyBhIHF1aXJrIHRoYXQgcHJlc2VydmVzIG9sZCBiZWhh
dmlvciB0aGF0IERhc2hib2FyZCB3aWRnZXRzCkBAIC0xMDAsNiArMTA0LDEwIEBAIHZvaWQgSW1h
Z2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICAgICAgICAgIGRvYy0+ZG9jTG9hZGVy
KCktPm1fZG9jUmVzb3VyY2VzLnNldChuZXdJbWFnZS0+dXJsKCksIG5ld0ltYWdlKTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBuZXdJbWFnZSA9IGRvYy0+ZG9jTG9hZGVyKCktPnJlcXVl
c3RJbWFnZShzb3VyY2VVUkkoYXR0cikpOworCisgICAgICAgIC8vIElmIHdlIGRvIG5vdCBoYXZl
IGFuIGltYWdlIGhlcmUsIGl0IG1lYW5zIHRoYXQgYSBjcm9zcy1zaXRlCisgICAgICAgIC8vIHZp
b2xhdGlvbiBvY2N1cnJlZC4KKyAgICAgICAgbV9mYWlsZWRMb2FkVVJMID0gIW5ld0ltYWdlID8g
YXR0ciA6IEF0b21pY1N0cmluZygpOwogICAgIH0KICAgICAKICAgICBDYWNoZWRJbWFnZSogb2xk
SW1hZ2UgPSBtX2ltYWdlLmdldCgpOwpAQCAtMTE5LDggKzEyNywxNiBAQCB2b2lkIEltYWdlTG9h
ZGVyOjp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgfQogfQogCit2b2lkIEltYWdlTG9hZGVyOjp1
cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigpCit7CisgICAgLy8gQ2xlYXIg
cHJldmlvdXMgZXJyb3IuCisgICAgbV9mYWlsZWRMb2FkVVJMID0gQXRvbWljU3RyaW5nKCk7Cisg
ICAgdXBkYXRlRnJvbUVsZW1lbnQoKTsKK30KKwogdm9pZCBJbWFnZUxvYWRlcjo6bm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UgKmltYWdlKQogeworICAgIEFTU0VSVChtX2ZhaWxlZExvYWRV
UkwuaXNFbXB0eSgpKTsKICAgICBtX2ltYWdlQ29tcGxldGUgPSB0cnVlOwogCiAgICAgRWxlbWVu
dCogZWxlbSA9IGVsZW1lbnQoKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaAkocmV2aXNpb24gMzgz
MTgpCisrKyBXZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYgKzEsNCBAQAogLyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBET00gaW1wbGVtZW50
YXRpb24gZm9yIEtERS4KLSAqCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25v
bGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlz
dG9Aa2RlLm9yZykKICAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLgpA
QCAtMjUsMTIgKzIzLDEyIEBACiAjaWZuZGVmIEltYWdlTG9hZGVyX2gKICNkZWZpbmUgSW1hZ2VM
b2FkZXJfaAogCisjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVz
b3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEF0b21pY1N0cmluZzsKIGNsYXNzIEVsZW1lbnQ7CiAK
IGNsYXNzIEltYWdlTG9hZGVyIDogcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsKQEAgLTM5
LDYgKzM3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkltYWdlTG9hZGVyKCk7CiAKICAgICB2
b2lkIHVwZGF0ZUZyb21FbGVtZW50KCk7CisgICAgdm9pZCB1cGRhdGVGcm9tRWxlbWVudElnbm9y
aW5nUHJldmlvdXNFcnJvcigpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTG9hZEV2ZW50
KCkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJjZVVSSShjb25zdCBBdG9taWNTdHJpbmcm
KSBjb25zdCA9IDA7CkBAIC02Myw2ICs2Miw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAg
RWxlbWVudCogbV9lbGVtZW50OwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdl
PiBtX2ltYWdlOworICAgIEF0b21pY1N0cmluZyBtX2ZhaWxlZExvYWRVUkw7CiAgICAgYm9vbCBt
X2ZpcmVkTG9hZCA6IDE7CiAgICAgYm9vbCBtX2ltYWdlQ29tcGxldGUgOiAxOwogICAgIGJvb2wg
bV9sb2FkTWFudWFsbHkgOiAxOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lv
biAzODMxOCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwOCw3ICsxMDgsOSBAQCB2b2lkIFNWR0ltYWdlRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlCiAgICAgICAgIHJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0KHRydWUpOwogCiAgICAg
ICAgIGlmIChpc1VSSUF0dHJpYnV0ZSkKLSAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIudXBkYXRl
RnJvbUVsZW1lbnQoKTsKKyAgICAgICAgICAgIC8vIFRoZSBJbWFnZUxvYWRlciBVUkwgd2FzIG1v
ZGlmaWVkIHNvIHRvIG1hdGNoIEZpcmVmb3ggYW5kIE9wZXJhLAorICAgICAgICAgICAgLy8ganVz
dCBmb3JjZSB0aGUgdXBkYXRlLgorICAgICAgICAgICAgbV9pbWFnZUxvYWRlci51cGRhdGVGcm9t
RWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigpOwogICAgIH0KIH0KIApJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gMzgzMjMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyNiBAQAorMjAwOC0xMS0xMSAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhA
d2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0cyBjYXNlcyBmb3IgYnVnIDE3ODk3OiBOb3QgUmVuZGVyaW5nIEltYWdlcyBJbXBv
cnRlZCBmcm9tIFhIVE1MIERvY3VtZW50CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODI3NjE0
PgorCisgICAgICAgIC0geG1saHR0cHJlcXVlc3QtaW1hZ2Utbm90LWxvYWRlZCo6IHRlc3QgdGhh
dCBhbiBpbWFnZSBsb2FkZWQgYnkgYW4gWE1MSHR0cFJlcXVlc3QgYW5kIGluc2VydGVkIGludG8g
YSBYSFRNTCBvciBTVkcgRG9jdW1lbnQKKyAgICAgICAgaXMgcHJvcGVybHkgcmVuZGVyZWQuCisK
KyAgICAgICAgLSBpbWFnZS1ibG9ja2VkLXNyYy1jaGFuZ2UuaHRtbCBhbmQgaW1hZ2UtYmxvY2tl
ZC1zcmMtbm8tY2hhbmdlLmh0bWw6IHRlc3RzIHRoYXQgYW4gaW1hZ2UgdGhhdCB3YXMgaW4gZXJy
b3IgaXMgcmVzcG9uZGluZyB0byBzcmMgYXR0cmlidXRlIGNoYW5nZQorICAgICAgICAgICh3aGV0
aGVyIGl0IGRvZXMgcmVhbGx5IGNoYW5nZSB0aGUgdXJsIG9yIG5vdCkuCisKKyAgICAgICAgKiBo
dHRwL3Rlc3RzL21pc2MvaW1hZ2UtYmxvY2tlZC1zcmMtY2hhbmdlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL2ltYWdlLWJsb2NrZWQtc3JjLWNoYW5nZS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvaW1hZ2UtYmxvY2tlZC1zcmMt
bm8tY2hhbmdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9taXNj
L2ltYWdlLWJsb2NrZWQtc3JjLW5vLWNoYW5nZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9sb2FkLWljb24uc3ZnOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9sb2FkLWljb24ueGh0
bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJl
cXVlc3QtaW1hZ2Utbm90LWxvYWRlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtaW1hZ2Utbm90LWxvYWRlZC1z
dmcuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0
dHByZXF1ZXN0LWltYWdlLW5vdC1sb2FkZWQuaHRtbDogQWRkZWQuCisKIDIwMDgtMTEtMTAgIEdl
b2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9pbWFnZS1ibG9j
a2VkLXNyYy1jaGFuZ2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbWlzYy9pbWFnZS1ibG9ja2VkLXNyYy1jaGFuZ2UtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2ltYWdlLWJsb2NrZWQtc3Jj
LWNoYW5nZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDA6IE5vdCBhbGxvd2VkIHRvIGxvYWQgbG9jYWwgcmVzb3VyY2U6IGNv
bXBhc3MuanBnCitUZXN0IGNhc2UgZm9yIGJ1ZyAxNzg5NyA6IE5vdCBSZW5kZXJpbmcgSW1hZ2Vz
IEltcG9ydGVkIGZyb20gWEhUTUwgRG9jdW1lbnQKKworWW91IHNob3VsZCBzZWUgUEFTU0VEIG9u
Y2UgYW5kIDI1MCB4IDUwIGdyZWVuIGJveC4gVGhlIGNvbnNvbGUgc2hvdWxkIGFsc28gc2hvdyBh
IGJsb2NrZWQgYXR0ZW1wdCB0byBsb2FkIGEgbG9jYWwgcmVzb3VyY2UuCisKK1BBU1NFRAorCisK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9pbWFnZS1ibG9ja2VkLXNyYy1jaGFu
Z2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvaW1hZ2Ut
YmxvY2tlZC1zcmMtY2hhbmdlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL21pc2MvaW1hZ2UtYmxvY2tlZC1zcmMtY2hhbmdlLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNDYgQEAKKzxodG1sPgorICAgIDxoZWFkPgorICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9lY21hc2NyaXB0Ij4KKyAgICAgICAgZnVuY3Rpb24gbG9nU3VjY2Vzc09yRmFpbHVyZSgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvbnNvbGUnKTsKKyAgICAgICAgICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdpbWFnZScpOworCisgICAgICAgICAgICBpZiAoaW1hZ2UuaGVpZ2h0ICYmIGltYWdl
LndpZHRoKQorICAgICAgICAgICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MID0gIlBBU1NFRCI7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY29uc29sZS5pbm5lckhUTUwgPSAiRkFJ
TEVEIjsKKworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGFuZ2VTcmMoKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHZhciBpbWFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWFnZScpOworCisgICAgICAg
ICAgICBpZiAoaW1hZ2UuaGVpZ2h0IHx8IGltYWdlLndpZHRoKSB7CisgICAgICAgICAgICAgICAg
Y29uc29sZS5pbm5lckhUTUwgPSAiRkFJTEVEIjsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGltYWdlLnNyYyA9ICIuLi9zZWN1cml0eS9yZXNv
dXJjZXMvZ3JlZW4yNTB4NTAucG5nIjsKKworICAgICAgICAgICAgLy8gVGhlIGltYWdlIG1heSBu
b3QgYmUgbG9hZGVkLCBzbyBqdXN0IHdhaXQgYSBsaXR0bGUKKyAgICAgICAgICAgIC8vIGJlZm9y
ZSBjaGVja2luZyBpZiBpdCB3YXMgbG9hZGVkLgorICAgICAgICAgICAgd2luZG93LnNldFRpbWVv
dXQoImxvZ1N1Y2Nlc3NPckZhaWx1cmUoKSIsIDEwMCk7CisgICAgICAgIH0KKyAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJjaGFuZ2VTcmMoKSI+CisgICAgICAg
IDxwPiBUZXN0IGNhc2UgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzg5NyI+IGJ1ZyAxNzg5NyA8L2E+OiAgTm90IFJlbmRlcmluZyBJbWFnZXMg
SW1wb3J0ZWQgZnJvbSBYSFRNTCBEb2N1bWVudCA8L3A+CisgICAgICAgIDxwPiBZb3Ugc2hvdWxk
IHNlZSBQQVNTRUQgb25jZSBhbmQgMjUwIHggNTAgZ3JlZW4gYm94LiBUaGUgY29uc29sZSBzaG91
bGQgYWxzbyBzaG93IGEgYmxvY2tlZCBhdHRlbXB0IHRvIGxvYWQgYSBsb2NhbCByZXNvdXJjZS48
L3A+CisgICAgICAgIDxwIGlkPSdjb25zb2xlJz4gPC9wPgorICAgICAgICA8IS0tIFRoaXMgaW1h
Z2Ugc2hvdWxkIGJlIGJsb2NrZWQgKHNlZSBzZWN1cml0eS9sb2NhbC1pbWFnZS1mcm9tLXJlbW90
ZS5odG1sKSAtLT4KKyAgICAgICAgPGltZyBpZD0naW1hZ2UnIHNyYz0iZmlsZTovLy90bXAvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvY29tcGFzcy5qcGciLz4KKyAg
ICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvaW1h
Z2UtYmxvY2tlZC1zcmMtbm8tY2hhbmdlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvaW1hZ2UtYmxvY2tlZC1zcmMtbm8tY2hhbmdlLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9pbWFn
ZS1ibG9ja2VkLXNyYy1uby1jaGFuZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDkgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBOb3QgYWxsb3dlZCB0byBsb2FkIGxv
Y2FsIHJlc291cmNlOiBjb21wYXNzLmpwZworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IE5vdCBh
bGxvd2VkIHRvIGxvYWQgbG9jYWwgcmVzb3VyY2U6IGNvbXBhc3MuanBnCitUZXN0IGNhc2UgZm9y
IGJ1ZyAxNzg5NyA6IE5vdCBSZW5kZXJpbmcgSW1hZ2VzIEltcG9ydGVkIGZyb20gWEhUTUwgRG9j
dW1lbnQKKworVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHNldHRpbmcgYW4gaW1hZ2UgdXJsIHNob3Vs
ZCBsZWFkIHRvIGxvYWQgZXZlbiBpZiB0aGUgaW1hZ2Ugd2FzIGluIGVycm9yIGFuZCB0aGUgdXJs
IGlzIG5vdCBjaGFuZ2VkLgorCitGb3IgdGhpcyB0ZXN0IHRvIHBhc3MsIHlvdSBzaG91bGQgc2Vl
IDIgbWVzc2FnZXMgaW4gdGhlIGNvbnNvbGUKKworCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL21pc2MvaW1hZ2UtYmxvY2tlZC1zcmMtbm8tY2hhbmdlLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2ltYWdlLWJsb2NrZWQtc3JjLW5vLWNoYW5nZS5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2ltYWdlLWJs
b2NrZWQtc3JjLW5vLWNoYW5nZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI5IEBACis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvZWNtYXNjcmlwdCI+Cisg
ICAgICAgIGZ1bmN0aW9uIGNoYW5nZVNyYygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgICAgICB2YXIgaW1hZ2UgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnaW1hZ2UnKTsKKworICAgICAgICAgICAgaWYgKGltYWdlLmhlaWdo
dCB8fCBpbWFnZS53aWR0aCkgeworICAgICAgICAgICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MID0g
IkZBSUxFRCI7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBXZSByZXNldCB0aGUgaW1hZ2Ugc3JjIHRvIHRoZSBzYW1lIHVybCB0byBjaGVj
ayB0aGF0IGl0IHdhcyAKKyAgICAgICAgICAgIGltYWdlLnNyYyA9ICJmaWxlOi8vL3RtcC9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9jb21wYXNzLmpwZyI7CisgICAg
ICAgIH0KKyAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJjaGFu
Z2VTcmMoKSI+CisgICAgICAgIDxwPiBUZXN0IGNhc2UgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg5NyI+IGJ1ZyAxNzg5NyA8L2E+OiAgTm90
IFJlbmRlcmluZyBJbWFnZXMgSW1wb3J0ZWQgZnJvbSBYSFRNTCBEb2N1bWVudCA8L3A+CisgICAg
ICAgIDxwPiBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgc2V0dGluZyBhbiBpbWFnZSB1cmwgc2hvdWxk
IGxlYWQgdG8gbG9hZCBldmVuIGlmIHRoZSBpbWFnZSB3YXMgaW4gZXJyb3IgYW5kIHRoZSB1cmwg
aXMgbm90IGNoYW5nZWQuIDwvcD4KKyAgICAgICAgPHA+IEZvciB0aGlzIHRlc3QgdG8gcGFzcywg
eW91IHNob3VsZCBzZWUgMiBtZXNzYWdlcyBpbiB0aGUgY29uc29sZSA8L3A+CisgICAgICAgIDxw
IGlkPSdjb25zb2xlJz4gPC9wPgorICAgICAgICA8IS0tIFRoaXMgaW1hZ2Ugc2hvdWxkIGJlIGJs
b2NrZWQgKHNlZSBzZWN1cml0eS9sb2NhbC1pbWFnZS1mcm9tLXJlbW90ZS5odG1sKSAtLT4KKyAg
ICAgICAgPGltZyBpZD0naW1hZ2UnIHNyYz0iZmlsZTovLy90bXAvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvY29tcGFzcy5qcGciLz4KKyAgICA8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHBy
ZXF1ZXN0LWltYWdlLW5vdC1sb2FkZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtaW1hZ2Utbm90
LWxvYWRlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWltYWdlLW5vdC1sb2FkZWQtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKK1Rlc3QgY2FzZSBmb3IgYnVnIDE3
ODk3IDogTm90IFJlbmRlcmluZyBJbWFnZXMgSW1wb3J0ZWQgZnJvbSBYSFRNTCBEb2N1bWVudAor
CitZb3Ugc2hvdWxkIHNlZSBQQVNTRUQgb25jZS4KKworUEFTU0VECkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWltYWdlLW5vdC1sb2Fk
ZWQtc3ZnLnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWltYWdlLW5vdC1sb2FkZWQtc3ZnLnN2ZwkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVl
c3QtaW1hZ2Utbm90LWxvYWRlZC1zdmcuc3ZnCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI0IEBA
Cis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIHN2ZyBQ
VUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjAvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvU1ZH
L0RURC9zdmcxMC5kdGQiPgorPHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvZWNtYXNjcmlwdCI+IDwhW0NE
QVRBWworICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgICAgIHho
ci5vcGVuKCdHRVQnLCAncmVzb3VyY2VzL2xvYWQtaWNvbi5zdmcnKTsKKyAgICAgICAgeGhyLm9u
cmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCl7CisgICAgICAgICAgICBpZih4aHIucmVhZHlT
dGF0ZSA9PSA0KSB7CisgICAgICAgICAgICAgICAgdmFyIGcgPSB4aHIucmVzcG9uc2VYTUwuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoJ2cnKVswXTsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAg
ICAgICAgICAgICAgICBkb2N1bWVudC5hZG9wdE5vZGUoZyk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGNhdGNoKGUpe30KKworICAgICAgICAgICAgICAgIHZhciBpY29uID0g
Zy5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW1hZ2UnKVswXTsKKyAgICAgICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnaW1hZ2UnKS5hcHBlbmRDaGlsZChnKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfTsKKyAgICAgICAgeGhyLnNlbmQobnVsbCk7CitdXT4gPC9zY3JpcHQ+Cisg
ICAgPHRleHQgeD0iMCIgeT0iMjAiPiBUZXN0IGNhc2UgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg5NyI+IGJ1ZyAxNzg5NyA8L2E+OiAgTm90
IFJlbmRlcmluZyBJbWFnZXMgSW1wb3J0ZWQgZnJvbSBYSFRNTCBEb2N1bWVudCA8L3RleHQ+Cisg
ICAgPHRleHQgeT0iNDAiPiBZb3Ugc2hvdWxkIHNlZSBhIGdyZWVuIDUwIHggMjUwIGJveC4gPC90
ZXh0PgorICAgIDxnIGlkPSdpbWFnZScgeT0iNjAiIHdpZHRoPSIyNTAiIGhlaWdodD0iNTAiPiA8
L2c+Cis8L3N2Zz4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
eG1saHR0cHJlcXVlc3QtaW1hZ2Utbm90LWxvYWRlZC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtaW1hZ2Utbm90
LWxvYWRlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1pbWFnZS1ub3QtbG9hZGVkLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNTAgQEAKKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8dGl0bGU+
U2FmYXJpIElzc3VlOiBOb3QgUmVuZGVyaW5nIEltYWdlcyBJbXBvcnRlZCBmcm9tIFhIVE1MIERv
Y3VtZW50PC90aXRsZT4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxwPiBUZXN0
IGNhc2UgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzg5NyI+IGJ1ZyAxNzg5NyA8L2E+OiAgTm90IFJlbmRlcmluZyBJbWFnZXMgSW1wb3J0ZWQg
ZnJvbSBYSFRNTCBEb2N1bWVudCA8L3A+CisgICAgICAgIDxwPiBZb3Ugc2hvdWxkIHNlZSBQQVNT
RUQgb25jZS4gPC9wPgorICAgICAgICA8ZGl2IGlkPSdjb25zb2xlJz5GQUlMRUQgKGRpZCBub3Qg
bG9hZCB0aGUgaW1hZ2UpPC9kaXY+CisgICAgICAgIDxkaXYgaWQ9J2ltYWdlJyBzdHlsZT0iZGlz
cGxheTogbm9uZSI+IDwvZGl2PgorICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCI+CisKKyAgICAgICAgZnVuY3Rpb24gbG9nU3VjY2Vzc09yRmFpbHVyZSgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNv
bGUnKTsKKyAgICAgICAgICAgIC8vIElmIHRoZSBpbWFnZSB3YXMgbG9hZGVkIGNvcnJlY3RseSwg
dGhlbiBoZWlnaHQKKyAgICAgICAgICAgIC8vIGFuZCB3aWR0aCBhcmUgbm90IHplcm8uCisgICAg
ICAgICAgICBpZiAoaWNvbi5oZWlnaHQgJiYgaWNvbi53aWR0aCkKKyAgICAgICAgICAgICAgICBj
b25zb2xlLmlubmVySFRNTCA9ICJQQVNTRUQiOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MID0gIkZBSUxFRCI7CisKKyAgICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVz
dCgpOworICAgICAgICB4aHIub3BlbignR0VUJywgJ3Jlc291cmNlcy9sb2FkLWljb24ueGh0bWwn
KTsKKyAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCl7CisgICAgICAg
ICAgICBpZih4aHIucmVhZHlTdGF0ZSA9PSA0ICYmIHhoci5zdGF0dXMgPT0gMjAwKSB7CisgICAg
ICAgICAgICAgICAgdmFyIGRpdiA9IHhoci5yZXNwb25zZVhNTC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgnZGl2JylbMF07CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQuYWRvcHROb2RlKGRpdik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGNhdGNoKGUpe30KKworICAgICAgICAgICAgICAgIHZhciBpY29uID0gZGl2LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCdpbWcnKVswXTsKKyAgICAgICAgICAgICAgICBpY29uLmFkZEV2ZW50TGlz
dGVuZXIoImxvYWQiLCBsb2dTdWNjZXNzT3JGYWlsdXJlLCB0cnVlKTsKKworICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWFnZScpLmFwcGVuZENoaWxkKGRpdik7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIHhoci5zZW5kKG51bGwpOworICAgICAg
ICA8L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9sb2FkLWljb24uc3ZnCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2xvYWQt
aWNvbi5zdmcJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L3Jlc291cmNlcy9sb2FkLWljb24uc3ZnCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgg
QEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgc3Zn
IFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9T
VkcvRFREL3N2ZzEwLmR0ZCI+Cis8c3ZnIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICAgIDxnIHg9IjAiIHk9IjYwIiB3aWR0aD0iMjUwIiBoZWlnaHQ9
IjUwIj4KKyAgICAgICAgPCEtLSB0aGUgcGF0aCBpcyByZWxhdGl2ZSB0byB0aGUgcGFyZW50IGRp
cmVjdG9yeSAtLT4KKyAgICAgICAgPGltYWdlIHhsaW5rOmhyZWY9Ii4uL3NlY3VyaXR5L3Jlc291
cmNlcy9ncmVlbjI1MHg1MC5wbmciIHg9IjAiIHk9IjYwIiB3aWR0aD0iMjUwIiBoZWlnaHQ9IjUw
IiBhbHQ9Imljb24iIGlkPSJpY29uIi8+CisgICAgPC9nPgorPC9zdmc+CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9sb2FkLWljb24ueGh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNv
dXJjZXMvbG9hZC1pY29uLnhodG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvbG9hZC1pY29uLnhodG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDEzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzwhRE9DVFlQRSBodG1s
PgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorICAgIDxoZWFk
PgorICAgICAgICA8dGl0bGU+VGVzdCBYSFRNTCBEb2N1bWVudCBjb250YWluaW5nIEltYWdlczwv
dGl0bGU+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8ZGl2PgorICAgICAgICAg
ICAgPCEtLSB0aGUgcGF0aCBpcyByZWxhdGl2ZSB0byB0aGUgcGFyZW50IGRpcmVjdG9yeSAtLT4K
KyAgICAgICAgICAgIDxpbWcgc3JjPSIuLi9zZWN1cml0eS9yZXNvdXJjZXMvZ3JlZW4yNTB4NTAu
cG5nIiBhbHQ9Imljb24iIGlkPSJpY29uIi8+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4K
KzwvaHRtbD4K
</data>
<flag name="review"
          id="11539"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>