<?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>176016</bug_id>
          
          <creation_ts>2017-08-28 01:43:01 -0700</creation_ts>
          <short_desc>Implement HTMLImageElement.decode() method</short_desc>
          <delta_ts>2017-09-11 14:15:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Images</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=176732</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jonlee</cc>
    
    <cc>kling</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1342776</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-08-28 01:43:01 -0700</bug_when>
    <thetext>The specs is: https://html.spec.whatwg.org/multipage/embedded-content.html#dom-img-decode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342778</commentid>
    <comment_count>1</comment_count>
      <attachid>319170</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-08-28 01:50:21 -0700</bug_when>
    <thetext>Created attachment 319170
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342851</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-28 10:02:10 -0700</bug_when>
    <thetext>&lt;rdar://problem/34111882&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342864</commentid>
    <comment_count>3</comment_count>
      <attachid>319185</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-08-28 11:15:53 -0700</bug_when>
    <thetext>Created attachment 319185
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342867</commentid>
    <comment_count>4</comment_count>
      <attachid>319185</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-08-28 11:19:35 -0700</bug_when>
    <thetext>Comment on attachment 319185
Patch

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

&gt; Source/WebCore/loader/ImageLoader.cpp:390
&gt; +void ImageLoader::decode(Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
&gt; +{
&gt; +    m_decodingPromise = WTFMove(promise);
&gt; +
&gt; +    if (m_image-&gt;errorOccurred()) {
&gt; +        decodeError();
&gt; +        return;
&gt; +    }
&gt; +
&gt; +    if (m_image-&gt;image() &amp;&amp; m_imageComplete)
&gt; +        decode();
&gt; +}

What happens if you call image.decode() twice in a row? Won&apos;t this override m_decodingPromise?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342871</commentid>
    <comment_count>5</comment_count>
      <attachid>319185</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-08-28 11:27:19 -0700</bug_when>
    <thetext>Comment on attachment 319185
Patch

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

&gt; Source/WebCore/html/HTMLImageElement.cpp:544
&gt; +void HTMLImageElement::decode(Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
&gt; +{
&gt; +    return m_imageLoader.decode(WTFMove(promise));
&gt; +}

This doesn&apos;t seem to implement https://html.spec.whatwg.org/multipage/embedded-content.html#dom-img-decode-2.  Specifically checking for no src or a srcset attributes / src with empty string.  Is the idea that the lower levels will handle this intrinsically? You should also add tests for more of the error conditions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342942</commentid>
    <comment_count>6</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-08-28 14:15:22 -0700</bug_when>
    <thetext>*** Bug 175714 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343032</commentid>
    <comment_count>7</comment_count>
      <attachid>319232</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-08-28 19:28:54 -0700</bug_when>
    <thetext>Created attachment 319232
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343034</commentid>
    <comment_count>8</comment_count>
      <attachid>319185</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-08-28 19:32:52 -0700</bug_when>
    <thetext>Comment on attachment 319185
Patch

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

&gt;&gt; Source/WebCore/html/HTMLImageElement.cpp:544
&gt;&gt; +}
&gt; 
&gt; This doesn&apos;t seem to implement https://html.spec.whatwg.org/multipage/embedded-content.html#dom-img-decode-2.  Specifically checking for no src or a srcset attributes / src with empty string.  Is the idea that the lower levels will handle this intrinsically? You should also add tests for more of the error conditions.

Error cases are handled in ImageLoader::decode(). The reason is the ImageLoader has all the information we need to either resolve or reject the promise.

&gt;&gt; Source/WebCore/loader/ImageLoader.cpp:390
&gt;&gt; +}
&gt; 
&gt; What happens if you call image.decode() twice in a row? Won&apos;t this override m_decodingPromise?

The promises are now collected in a Vector. When the decode() succeeds, all the promises are resolved. When the decode() fails all the promise are rejected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346991</commentid>
    <comment_count>9</comment_count>
      <attachid>319232</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-09-08 16:27:36 -0700</bug_when>
    <thetext>Comment on attachment 319232
Patch

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

&gt; Source/WebCore/ChangeLog:14
&gt; +        -- If the image frame is already decoded, the promise will be resolved
&gt; +        before return.

Is this correct, or should we resolve the promise on the next event loop?

&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:510
&gt; +    if (m_decodeCallback)
&gt; +        return;
&gt; +
&gt; +    m_decodeCallback = WTFMove(callback);

I&apos;m not sure why you early return if there&apos;s already a callback?

&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:522
&gt; +        }

Maybe return here, or do if (canAnimate()) { ... return; }

&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:571
&gt; +    // Call the m_decodeCallback only if the image frame was decoded with the native size.

If not, will we do another decode to satisfy the promise?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347031</commentid>
    <comment_count>10</comment_count>
      <attachid>320326</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-09-08 18:32:43 -0700</bug_when>
    <thetext>Created attachment 320326
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347032</commentid>
    <comment_count>11</comment_count>
      <attachid>319232</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-09-08 18:42:11 -0700</bug_when>
    <thetext>Comment on attachment 319232
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:14
&gt;&gt; +        before return.
&gt; 
&gt; Is this correct, or should we resolve the promise on the next event loop?

If we delay resolving  the promise till the next event loop, we can&apos;t guarantee the availability of the decoded frame at that time.

&gt;&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:510
&gt;&gt; +    m_decodeCallback = WTFMove(callback);
&gt; 
&gt; I&apos;m not sure why you early return if there&apos;s already a callback?

I think you are right. I renamed m_decodeCallback to m_decodingCallbacks and I made it Vector&lt;Function&lt;void()&gt;, 1&gt;. BitmapImage::decode() will append all the callbacks to m_decodingCallbacks. When the frame finishes decoding, all the m_decodingCallbacks will be called one after another. I think this case can be hit if more than one HTMLImageElement reference the same Image object. In this case, their callbacks will be different and they have all have to be called back.

&gt;&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:522
&gt;&gt; +        }
&gt; 
&gt; Maybe return here, or do if (canAnimate()) { ... return; }

Done.

&gt;&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:571
&gt;&gt; +    // Call the m_decodeCallback only if the image frame was decoded with the native size.
&gt; 
&gt; If not, will we do another decode to satisfy the promise?

Yes. BitmapImage::decode() will make a new decoding request if the image frame was decoded with a size different from the native size. This decoding is the one we should make the callbacks for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347035</commentid>
    <comment_count>12</comment_count>
      <attachid>320328</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-09-08 18:45:35 -0700</bug_when>
    <thetext>Created attachment 320328
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347042</commentid>
    <comment_count>13</comment_count>
      <attachid>320328</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-08 20:09:13 -0700</bug_when>
    <thetext>Comment on attachment 320328
Patch

Clearing flags on attachment: 320328

Committed r221805: &lt;http://trac.webkit.org/changeset/221805&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347043</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-08 20:09:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347282</commentid>
    <comment_count>15</comment_count>
      <attachid>320328</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-09-10 14:27:33 -0700</bug_when>
    <thetext>Comment on attachment 320328
Patch

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

&gt; Source/WebCore/loader/ImageLoader.cpp:389
&gt; +    if (attr.isNull() || stripLeadingAndTrailingHTMLSpaces(attr).isEmpty()) {

There is no need for the attr.isNull() check here. The other check will also return true in that case. Should just remove it.

&gt; Source/WebCore/loader/ImageLoader.cpp:402
&gt; +    for (auto&amp; promise : m_decodingPromises)
&gt; +        promise-&gt;reject(Exception { EncodingError, WTFMove(message) });

If there is more than one promise, this will move the same String twice, and so it won’t work. I think it will crash. Need a test case that covers this.

Also, is there something that guarantees we will not reenter this while rejecting the promises? Can rejecting a promise run arbitrary JavaScript code? What prevents modification of m_decodingPromises while iterating it?

&gt; Source/WebCore/loader/ImageLoader.h:98
&gt; +    void decodeError(String&amp;&amp;);

Every caller of this function passes a const char*. Having it take a String&amp;&amp; instead means all those call sites have repeated code to allocate the String.

I think this function should either take a const char* argument or an ASCIILiteral argument rather than a String&amp;&amp; argument.

&gt; Source/WebCore/platform/graphics/BitmapImage.h:216
&gt; +    Vector&lt;Function&lt;void()&gt;, 1&gt; m_decodingCallbacks;

An empty vector is pretty huge; maybe we should consider optimizing so we aren’t always carrying an empty vector around. One way is to use std::unique_ptr to hold the vector. There are probably other good ways. Or maybe a BitmapImage is already a huge object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347295</commentid>
    <comment_count>16</comment_count>
      <attachid>320328</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-09-10 15:05:45 -0700</bug_when>
    <thetext>Comment on attachment 320328
Patch

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

&gt;&gt; Source/WebCore/loader/ImageLoader.cpp:402
&gt;&gt; +        promise-&gt;reject(Exception { EncodingError, WTFMove(message) });
&gt; 
&gt; If there is more than one promise, this will move the same String twice, and so it won’t work. I think it will crash. Need a test case that covers this.
&gt; 
&gt; Also, is there something that guarantees we will not reenter this while rejecting the promises? Can rejecting a promise run arbitrary JavaScript code? What prevents modification of m_decodingPromises while iterating it?

No, it won’t crash. We’ll just pass an exception with a null string. Not sure how that looks in JavaScript. Again, need a test case covering it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347606</commentid>
    <comment_count>17</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-09-11 14:15:09 -0700</bug_when>
    <thetext>The followup bug is https://bugs.webkit.org/show_bug.cgi?id=176732</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319170</attachid>
            <date>2017-08-28 01:50:21 -0700</date>
            <delta_ts>2017-08-28 11:15:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176016-20170828015020.patch</filename>
            <type>text/plain</type>
            <size>24654</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMDg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDhhMDVlNDVjMjZiNzMy
ZWI0ZWJkNTc5ZDFiM2RiMzlmMGJlYTY5Mi4uNGU4ZTAwZDU4NDZiYWJiZTQ5Njc5ODAxMmNhOTU3
MTlhOWFjZjI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE3LTA4LTI4ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVt
ZW50IGltZy5kZWNvb2RlKCkgbWV0aG9kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzYwMTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGUgc3BlY3MgaXM6CisgICAgICAgIGh0dHBzOi8vaHRtbC5zcGVj
LndoYXR3Zy5vcmcvbXVsdGlwYWdlL2VtYmVkZGVkLWNvbnRlbnQuaHRtbCNkb20taW1nLWRlY29k
ZS4KKworICAgICAgICBUZXN0czogZmFzdC9pbWFnZXMvZGVjb2RlLWFuaW1hdGVkLWltYWdlLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvaW1hZ2VzL2RlY29kZS1yZW5kZXItYW5pbWF0ZWQtaW1h
Z2UuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9pbWFnZXMvZGVjb2RlLXJlbmRlci1zdGF0aWMt
aW1hZ2UuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9pbWFnZXMvZGVjb2RlLXN0YXRpYy1pbWFn
ZS1yZWplY3QuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9pbWFnZXMvZGVjb2RlLXN0YXRpYy1p
bWFnZS1yZXNvbHZlLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpkZWNvZGUpOgorICAgICAgICAq
IGh0bWwvSFRNTEltYWdlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVu
dC5pZGw6CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUxvYWRlcjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpkZWNvZGVF
cnJvcik6CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUxvYWRlcjo6aGFzUGVuZGluZ0RlY29kZVByb21pc2UgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjppbnRlcm5hbFN0YXJ0QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjppbnRlcm5hbEFkdmFuY2VBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aW1h
Z2VGcmFtZUF2YWlsYWJsZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlOjpkZWNvZGUpOgorCiAyMDE3LTA4LTIzICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFRyeSB0byBmaXggdGhlIFdpbkNh
aXJvIGJ1aWxkIGFmdGVyIHIyMjEwNjgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1l
bnQuY3BwCmluZGV4IDM4ZmYzYzllMDQyZjVhN2Q4MDc2YTc5NThlNDk3NjMyOGVhOThlZDUuLjhj
MWY1NmZkNzRmODQyNzBmYjZlNDFmM2MxYjg1MDE0MWE3MzBiMzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtNTM4LDYgKzUzOCwxMSBAQCBib29sIEhUTUxJ
bWFnZUVsZW1lbnQ6OmNvbXBsZXRlKCkgY29uc3QKICAgICByZXR1cm4gbV9pbWFnZUxvYWRlci5p
bWFnZUNvbXBsZXRlKCk7CiB9CiAKK3ZvaWQgSFRNTEltYWdlRWxlbWVudDo6ZGVjb2RlKFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3sKKyAgICByZXR1cm4gbV9pbWFnZUxvYWRlci5k
ZWNvZGUoV1RGTW92ZShwcm9taXNlKSk7Cit9CisKIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6YWRk
U3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CiB7
CiAgICAgSFRNTEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKaW5kZXggYmZiZGU5MGYzYzUzNjc3Nzhm
YTk4NGVkZWVkY2Q5N2RjZjFmYmFlNS4uY2U5NjVlMTk1MjM5ODM1MDU0MTY3ODEyZGJjMjdmZTVm
YjgzODc3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKQEAgLTc5LDYg
Kzc5LDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb21wbGV0ZSgpIGNv
bnN0OwogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWNvZGUoUmVmPERlZmVycmVkUHJvbWlz
ZT4mJik7CisKICNpZiBQTEFURk9STShJT1MpCiAgICAgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VD
bGlja0V2ZW50cygpIG92ZXJyaWRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmlkbAppbmRleCAwOTdmMmE0NTRhY2I2MjE2NTk0MGNkMTllYjdmNWUyNmE4MzUy
MjIyLi42Y2QxNmEzN2I2NDU0NGIwYzkwZGJjNzNhNDQxMjEwMDRmNDM4ZmJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwKQEAgLTQ4LDUgKzQ4LDcgQEAKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBuYXR1cmFsV2lkdGg7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGxvbmcgeDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyB5OworCisgICAgUHJvbWlz
ZTx2b2lkPiBkZWNvZGUoKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9JbWFnZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3Bw
CmluZGV4IDE2NWM5MTk5ZjdkZjEzNTZmNDBkZDM3YjAzN2MyMTljMmE2MGZjN2EuLjQ3M2M4MDZk
MTEwN2ZmZGRhYjNiYTg3NWQwYzI4MTdiZDkyOGI2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0lt
YWdlTG9hZGVyLmNwcApAQCAtMjkxLDYgKzI5MSw5IEBAIHZvaWQgSW1hZ2VMb2FkZXI6Om5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFN0cmluZz4gY29uc29sZU1lc3NhZ2UoTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwo
IkNyb3NzLW9yaWdpbiBpbWFnZSBsb2FkIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2Ug
U2hhcmluZyBwb2xpY3kuIikpOwogICAgICAgICBlbGVtZW50KCkuZG9jdW1lbnQoKS5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwg
Y29uc29sZU1lc3NhZ2UpOwogCisgICAgICAgIGlmIChoYXNQZW5kaW5nRGVjb2RlUHJvbWlzZSgp
KQorICAgICAgICAgICAgZGVjb2RlRXJyb3IoKTsKKyAgICAgICAgCiAgICAgICAgIEFTU0VSVCgh
bV9oYXNQZW5kaW5nTG9hZEV2ZW50KTsKIAogICAgICAgICAvLyBPbmx5IGNvbnNpZGVyIHVwZGF0
aW5nIHRoZSBwcm90ZWN0aW9uIHJlZi1jb3VudCBvZiB0aGUgRWxlbWVudCBpbW1lZGlhdGVseSBi
ZWZvcmUgcmV0dXJuaW5nCkBAIC0zMDAsNiArMzAzLDggQEAgdm9pZCBJbWFnZUxvYWRlcjo6bm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgIH0KIAogICAgIGlmICht
X2ltYWdlLT53YXNDYW5jZWxlZCgpKSB7CisgICAgICAgIGlmIChoYXNQZW5kaW5nRGVjb2RlUHJv
bWlzZSgpKQorICAgICAgICAgICAgZGVjb2RlRXJyb3IoKTsKICAgICAgICAgbV9oYXNQZW5kaW5n
TG9hZEV2ZW50ID0gZmFsc2U7CiAgICAgICAgIC8vIE9ubHkgY29uc2lkZXIgdXBkYXRpbmcgdGhl
IHByb3RlY3Rpb24gcmVmLWNvdW50IG9mIHRoZSBFbGVtZW50IGltbWVkaWF0ZWx5IGJlZm9yZSBy
ZXR1cm5pbmcKICAgICAgICAgLy8gZnJvbSB0aGlzIGZ1bmN0aW9uIGFzIGRvaW5nIHNvIG1pZ2h0
IHJlc3VsdCBpbiB0aGUgZGVzdHJ1Y3Rpb24gb2YgdGhpcyBJbWFnZUxvYWRlci4KQEAgLTMwNyw2
ICszMTIsOCBAQCB2b2lkIEltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoaGFzUGVuZGlu
Z0RlY29kZVByb21pc2UoKSkKKyAgICAgICAgZGVjb2RlKCk7CiAgICAgbG9hZEV2ZW50U2VuZGVy
KCkuZGlzcGF0Y2hFdmVudFNvb24oKnRoaXMpOwogfQogCkBAIC0zNjksNiArMzc2LDQwIEBAIHZv
aWQgSW1hZ2VMb2FkZXI6OnVwZGF0ZWRIYXNQZW5kaW5nRXZlbnQoKQogICAgIH0gICAKIH0KIAor
dm9pZCBJbWFnZUxvYWRlcjo6ZGVjb2RlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkK
K3sKKyAgICBtX2RlY29kaW5nUHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSk7CisKKyAgICBpZiAo
bV9pbWFnZS0+ZXJyb3JPY2N1cnJlZCgpKSB7CisgICAgICAgIGRlY29kZUVycm9yKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9pbWFnZS0+aW1hZ2UoKSAmJiBtX2ltYWdl
Q29tcGxldGUpCisgICAgICAgIGRlY29kZSgpOworfQorCit2b2lkIEltYWdlTG9hZGVyOjpkZWNv
ZGVFcnJvcigpCit7CisgICAgQVNTRVJUKGhhc1BlbmRpbmdEZWNvZGVQcm9taXNlKCkpOworICAg
IG1fZGVjb2RpbmdQcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgRW5jb2RpbmdFcnJvciwgIklu
dmFsaWQgaW1hZ2UuIiB9KTsKKyAgICBtX2RlY29kaW5nUHJvbWlzZSA9IG51bGxwdHI7Cit9CisK
K3ZvaWQgSW1hZ2VMb2FkZXI6OmRlY29kZSgpCit7CisgICAgQVNTRVJUKGhhc1BlbmRpbmdEZWNv
ZGVQcm9taXNlKCkpOworICAgIGlmIChtX2ltYWdlLT5lcnJvck9jY3VycmVkKCkpIHsKKyAgICAg
ICAgZGVjb2RlRXJyb3IoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEltYWdlKiBp
bWFnZSA9IG1faW1hZ2UtPmltYWdlKCk7CisgICAgaW1hZ2UtPmRlY29kZShbcHJvbWlzZSA9IFdU
Rk1vdmUobV9kZWNvZGluZ1Byb21pc2UpXSgpIG11dGFibGUgeworICAgICAgICBwcm9taXNlLT5y
ZXNvbHZlKCk7CisgICAgfSk7Cit9CisKIHZvaWQgSW1hZ2VMb2FkZXI6OnRpbWVyRmlyZWQoKQog
ewogICAgIG1fcHJvdGVjdGVkRWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFn
ZUxvYWRlci5oCmluZGV4IDc3MTc2NjdmNjc3MGRlNzQ2M2I0ODYwYTBlNzA4NGZjNTA3OTEzOWQu
LmYxZDUxYzM4YjZmOWFlNmI3YjNkYTI3NGE3NzEwNTc2ZmRjYjc2ZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9JbWFnZUxvYWRlci5oCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJDYWNoZWRJ
bWFnZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVk
ZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCkBAIC01OCw2ICs1OSw4IEBAIHB1YmxpYzoKIAog
ICAgIENhY2hlZEltYWdlKiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0K
ICAgICB2b2lkIGNsZWFySW1hZ2UoKTsgLy8gQ2FuY2VscyBwZW5kaW5nIGJlZm9yZWxvYWQgYW5k
IGxvYWQgZXZlbnRzLCBhbmQgZG9lc24ndCBkaXNwYXRjaCBuZXcgb25lcy4KKyAgICAKKyAgICB2
b2lkIGRlY29kZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAogICAgIHZvaWQgc2V0TG9hZE1h
bnVhbGx5KGJvb2wgbG9hZE1hbnVhbGx5KSB7IG1fbG9hZE1hbnVhbGx5ID0gbG9hZE1hbnVhbGx5
OyB9CiAKQEAgLTkwLDYgKzkzLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckltYWdlV2l0
aG91dENvbnNpZGVyaW5nUGVuZGluZ0xvYWRFdmVudCgpOwogICAgIHZvaWQgY2xlYXJGYWlsZWRM
b2FkVVJMKCk7CiAKKyAgICBib29sIGhhc1BlbmRpbmdEZWNvZGVQcm9taXNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZWNvZGluZ1Byb21pc2U7IH0KKyAgICB2b2lkIGRlY29kZUVycm9yKCk7CisgICAg
dm9pZCBkZWNvZGUoKTsKKyAgICAKICAgICB2b2lkIHRpbWVyRmlyZWQoKTsKIAogICAgIEVsZW1l
bnQmIG1fZWxlbWVudDsKQEAgLTk3LDYgKzEwNCw3IEBAIHByaXZhdGU6CiAgICAgVGltZXIgbV9k
ZXJlZkVsZW1lbnRUaW1lcjsKICAgICBSZWZQdHI8RWxlbWVudD4gbV9wcm90ZWN0ZWRFbGVtZW50
OwogICAgIEF0b21pY1N0cmluZyBtX2ZhaWxlZExvYWRVUkw7CisgICAgUmVmUHRyPERlZmVycmVk
UHJvbWlzZT4gbV9kZWNvZGluZ1Byb21pc2U7CiAgICAgYm9vbCBtX2hhc1BlbmRpbmdCZWZvcmVM
b2FkRXZlbnQgOiAxOwogICAgIGJvb2wgbV9oYXNQZW5kaW5nTG9hZEV2ZW50IDogMTsKICAgICBi
b29sIG1faGFzUGVuZGluZ0Vycm9yRXZlbnQgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IDVjMDhlNGIwMDYyNzdmMGQ0MWE2
NTlhMTY3Zjc2ZjM3OWMyNGY4OTYuLjM0ZDljNzMzNmM5YzYxZjA2ZDA4YjNmMWIzMGJmNTU1ZTY1
NGEwMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5jcHAKQEAgLTQwOSwxMSArNDA5LDExIEBAIEJpdG1hcEltYWdlOjpTdGFydEFuaW1hdGlv
blN0YXR1cyBCaXRtYXBJbWFnZTo6aW50ZXJuYWxTdGFydEFuaW1hdGlvbigpCiAgICAgLy8gaXQg
d2lsbCBiZSBkZWNvZGVkIG9uIGEgc2VwYXJhdGUgd29yayBxdWV1ZS4gV2hlbiBkZWNvZGluZyBu
ZXh0RnJhbWUgZmluaXNoZXMsIHdlIHdpbGwgYmUgbm90aWZpZWQKICAgICAvLyB0aHJvdWdoIHRo
ZSBjYWxsYmFjayBuZXdGcmFtZU5hdGl2ZUltYWdlQXZhaWxhYmxlQXRJbmRleCgpLiBPdGhlcndp
c2UsIGFkdmFuY2VBbmltYXRpb24oKSB3aWxsIGJlIGNhbGxlZAogICAgIC8vIHdoZW4gdGhlIHRp
bWVyIGZpcmVzIGFuZCBtX2N1cnJlbnRGcmFtZSB3aWxsIGJlIGFkdmFuY2VkIHRvIG5leHRGcmFt
ZSBzaW5jZSBpdCBpcyBub3QgYmVpbmcgZGVjb2RlZC4KLSAgICBpZiAoc2hvdWxkVXNlQXN5bmNE
ZWNvZGluZ0ZvckFuaW1hdGVkSW1hZ2VzKCkpIHsKKyAgICBpZiAobV9kZWNvZGVDYWxsYmFjayB8
fCBzaG91bGRVc2VBc3luY0RlY29kaW5nRm9yQW5pbWF0ZWRJbWFnZXMoKSkgewogICAgICAgICBp
ZiAoZnJhbWVIYXNEZWNvZGVkTmF0aXZlSW1hZ2VDb21wYXRpYmxlV2l0aE9wdGlvbnNBdEluZGV4
KG5leHRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCwgeyB9KSkKICAgICAgICAgICAg
IExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZTo6JXMgLSAlcCAtIHVybDogJXMgW2NhY2hlZEZyYW1l
Q291bnQgPSAlbGQgbmV4dEZyYW1lID0gJWxkXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNl
VVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgKyttX2NhY2hlZEZyYW1lQ291bnQsIG5leHRG
cmFtZSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgbV9zb3VyY2UucmVxdWVzdEZyYW1l
QXN5bmNEZWNvZGluZ0F0SW5kZXgobmV4dEZyYW1lLCBtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVs
KTsKKyAgICAgICAgICAgIG1fc291cmNlLnJlcXVlc3RGcmFtZUFzeW5jRGVjb2RpbmdBdEluZGV4
KG5leHRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCwgc3RkOjpvcHRpb25hbDxJbnRT
aXplPigpKTsKICAgICAgICAgICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBEZWNv
ZGluZ1N0YXR1czo6RGVjb2Rpbmc7CiAgICAgICAgICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1h
Z2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtyZXF1ZXN0aW5nIGFzeW5jIGRlY29kaW5nIGZvciBuZXh0
RnJhbWUgPSAlbGRdIiwgX19GVU5DVElPTl9fLCB0aGlzLCBzb3VyY2VVUkwoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpLCBuZXh0RnJhbWUpOwogICAgICAgICB9CkBAIC00NjUsNiArNDY1LDExIEBA
IHZvaWQgQml0bWFwSW1hZ2U6OmludGVybmFsQWR2YW5jZUFuaW1hdGlvbigpCiAgICAgRGVjb2Rp
bmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMgPSBmcmFtZURlY29kaW5nU3RhdHVzQXRJbmRleChtX2N1
cnJlbnRGcmFtZSk7CiAgICAgc2V0Q3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXNJZk5lY2Vzc2Fy
eShkZWNvZGluZ1N0YXR1cyk7CiAgICAgCisgICAgaWYgKG1fZGVjb2RlQ2FsbGJhY2spIHsKKyAg
ICAgICAgbV9kZWNvZGVDYWxsYmFjaygpOworICAgICAgICBtX2RlY29kZUNhbGxiYWNrID0gbnVs
bHB0cjsKKyAgICB9CisKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQogICAgICAgICBpbWFnZU9i
c2VydmVyKCktPmltYWdlRnJhbWVBdmFpbGFibGUoKnRoaXMsIEltYWdlQW5pbWF0aW5nU3RhdGU6
OlllcywgbnVsbHB0ciwgZGVjb2RpbmdTdGF0dXMpOwogCkBAIC00OTcsNiArNTAyLDQxIEBAIHZv
aWQgQml0bWFwSW1hZ2U6OnJlc2V0QW5pbWF0aW9uKCkKICAgICBkZXN0cm95RGVjb2RlZERhdGFJ
Zk5lY2Vzc2FyeSh0cnVlKTsKIH0KIAordm9pZCBCaXRtYXBJbWFnZTo6ZGVjb2RlKFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQoreworICAgIGlmIChtX2RlY29kZUNhbGxiYWNrKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX2RlY29kZUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayk7CisKKyAgICBpZiAoIWNhbkFuaW1hdGUoKSkgeworICAgICAgICBib29sIGZyYW1lSXNDb21w
YXRpYmxlID0gZnJhbWVIYXNEZWNvZGVkTmF0aXZlSW1hZ2VDb21wYXRpYmxlV2l0aE9wdGlvbnNB
dEluZGV4KG1fY3VycmVudEZyYW1lLCBtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsLCBzdGQ6Om9w
dGlvbmFsPEludFNpemU+KCkpOworICAgICAgICBib29sIGZyYW1lSXNCZWluZ0RlY29kZWQgPSBm
cmFtZUlzQmVpbmdEZWNvZGVkQW5kSXNDb21wYXRpYmxlV2l0aE9wdGlvbnNBdEluZGV4KG1fY3Vy
cmVudEZyYW1lLCBzdGQ6Om9wdGlvbmFsPEludFNpemU+KCkpOworICAgIAorICAgICAgICBpZiAo
ZnJhbWVJc0NvbXBhdGlibGUpIHsKKyAgICAgICAgICAgIG1fZGVjb2RlQ2FsbGJhY2soKTsKKyAg
ICAgICAgICAgIG1fZGVjb2RlQ2FsbGJhY2sgPSBudWxscHRyOworICAgICAgICB9IGVsc2UgaWYg
KCFmcmFtZUlzQmVpbmdEZWNvZGVkKSB7CisgICAgICAgICAgICBtX3NvdXJjZS5yZXF1ZXN0RnJh
bWVBc3luY0RlY29kaW5nQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxp
bmdMZXZlbCwgc3RkOjpvcHRpb25hbDxJbnRTaXplPigpKTsKKyAgICAgICAgICAgIG1fY3VycmVu
dEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6RGVjb2Rpbmc7CisgICAgICAg
IH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIW1fZGVzaXJlZEZyYW1lU3RhcnRUaW1lKSB7
CisgICAgICAgICAgICBib29sIGZyYW1lSXNDb21wYXRpYmxlID0gZnJhbWVIYXNEZWNvZGVkTmF0
aXZlSW1hZ2VDb21wYXRpYmxlV2l0aE9wdGlvbnNBdEluZGV4KG1fY3VycmVudEZyYW1lLCBtX2N1
cnJlbnRTdWJzYW1wbGluZ0xldmVsLCBzdGQ6Om9wdGlvbmFsPEludFNpemU+KCkpOworICAgICAg
ICAgICAgYm9vbCBmcmFtZUlzQmVpbmdEZWNvZGVkID0gZnJhbWVJc0JlaW5nRGVjb2RlZEFuZElz
Q29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgc3RkOjpvcHRpb25h
bDxJbnRTaXplPigpKTsKKworICAgICAgICAgICAgaWYgKGZyYW1lSXNDb21wYXRpYmxlKQorICAg
ICAgICAgICAgICAgIGludGVybmFsU3RhcnRBbmltYXRpb24oKTsKKyAgICAgICAgICAgIGVsc2Ug
aWYgKCFmcmFtZUlzQmVpbmdEZWNvZGVkKSB7CisgICAgICAgICAgICAgICAgbV9zb3VyY2UucmVx
dWVzdEZyYW1lQXN5bmNEZWNvZGluZ0F0SW5kZXgobV9jdXJyZW50RnJhbWUsIG1fY3VycmVudFN1
YnNhbXBsaW5nTGV2ZWwsIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4oKSk7CisgICAgICAgICAgICAg
ICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpEZWNvZGlu
ZzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBpbnRlcm5hbFN0
YXJ0QW5pbWF0aW9uKCk7CisgICAgfQorCit9CisKIHZvaWQgQml0bWFwSW1hZ2U6OmltYWdlRnJh
bWVBdmFpbGFibGVBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAgICBMT0coSW1hZ2VzLCAiQml0
bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtyZXF1ZXN0ZWQgZnJhbWUgJWxkIGlzIG5vdyBh
dmFpbGFibGVdIiwgX19GVU5DVElPTl9fLCB0aGlzLCBzb3VyY2VVUkwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCBpbmRleCk7CkBAIC01MjcsNyArNTY3LDEyIEBAIHZvaWQgQml0bWFwSW1hZ2U6
OmltYWdlRnJhbWVBdmFpbGFibGVBdEluZGV4KHNpemVfdCBpbmRleCkKICAgICAKICAgICBpZiAo
bV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9PSBEZWNvZGluZ1N0YXR1czo6Q29tcGxldGUp
CiAgICAgICAgICsrbV9kZWNvZGVDb3VudEZvclRlc3Rpbmc7Ci0KKyAgICAKKyAgICBpZiAobV9k
ZWNvZGVDYWxsYmFjaykgeworICAgICAgICBtX2RlY29kZUNhbGxiYWNrKCk7CisgICAgICAgIG1f
ZGVjb2RlQ2FsbGJhY2sgPSBudWxscHRyOworICAgIH0KKyAgICAKICAgICBpZiAoaW1hZ2VPYnNl
cnZlcigpKQogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmltYWdlRnJhbWVBdmFpbGFibGUoKnRo
aXMsIEltYWdlQW5pbWF0aW5nU3RhdGU6Ok5vLCBudWxscHRyLCBkZWNvZGluZ1N0YXR1cyk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAppbmRl
eCA1YTZkZTA5MTVmZjRjYzgyNjE4OWZlZjcxOGE4OGI2MzE5MTU3NzkwLi5hOGZjZTY0NmMxZmJj
YzFhODIxZjZhMzMwMzgxMjkxMGE3ZGEwYjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKQEAgLTE3OCw3ICsxNzgsOCBAQCBwcm90ZWN0ZWQ6
CiAgICAgLy8gYXV0b21hdGljYWxseSBwYXVzZSBvbmNlIGFsbCBvYnNlcnZlcnMgbm8gbG9uZ2Vy
IHdhbnQgdG8gcmVuZGVyIHRoZSBpbWFnZSBhbnl3aGVyZS4KICAgICB2b2lkIHN0b3BBbmltYXRp
b24oKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc2V0QW5pbWF0aW9uKCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBpbWFnZUZyYW1lQXZhaWxhYmxlQXRJbmRleChzaXplX3QpIG92ZXJyaWRlOworICAgIAor
ICAgIHZvaWQgZGVjb2RlKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKSBvdmVycmlkZTsKIAogICAg
IC8vIEhhbmRsZSBwbGF0Zm9ybS1zcGVjaWZpYyBkYXRhCiAgICAgdm9pZCBpbnZhbGlkYXRlUGxh
dGZvcm1EYXRhKCk7CkBAIC0xOTcsNiArMTk4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGNhbkRl
c3Ryb3lEZWNvZGVkRGF0YSgpOwogICAgIHZvaWQgc2V0Q3VycmVudEZyYW1lRGVjb2RpbmdTdGF0
dXNJZk5lY2Vzc2FyeShEZWNvZGluZ1N0YXR1cyk7CiAgICAgYm9vbCBpc0JpdG1hcEltYWdlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgaW1hZ2VGcmFtZUF2YWls
YWJsZUF0SW5kZXgoc2l6ZV90KSBvdmVycmlkZTsKICAgICB2b2lkIGR1bXAoV1RGOjpUZXh0U3Ry
ZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBBbmltYXRlZCBpbWFnZXMgb3ZlciBhIGNl
cnRhaW4gc2l6ZSBhcmUgY29uc2lkZXJlZCBsYXJnZSBlbm91Z2ggdGhhdCB3ZSdsbCBvbmx5IGhh
bmcgb24gdG8gb25lIGZyYW1lIGF0IGEgdGltZS4KQEAgLTIxMCw2ICsyMTIsNyBAQCBwcml2YXRl
OgogICAgIHN0ZDo6dW5pcXVlX3B0cjxUaW1lcj4gbV9mcmFtZVRpbWVyOwogICAgIFJlcGV0aXRp
b25Db3VudCBtX3JlcGV0aXRpb25zQ29tcGxldGUgeyBSZXBldGl0aW9uQ291bnROb25lIH07IC8v
IEhvdyBtYW55IHJlcGV0aXRpb25zIHdlJ3ZlIGZpbmlzaGVkLgogICAgIE1vbm90b25pY1RpbWUg
bV9kZXNpcmVkRnJhbWVTdGFydFRpbWU7IC8vIFRoZSBzeXN0ZW0gdGltZSBhdCB3aGljaCB3ZSBo
b3BlIHRvIHNlZSB0aGUgbmV4dCBjYWxsIHRvIHN0YXJ0QW5pbWF0aW9uKCkuCisgICAgV1RGOjpG
dW5jdGlvbjx2b2lkKCk+IG1fZGVjb2RlQ2FsbGJhY2s7CiAKICAgICBTZWNvbmRzIG1fZnJhbWVE
ZWNvZGluZ0R1cmF0aW9uRm9yVGVzdGluZzsKICAgICBNb25vdG9uaWNUaW1lIG1fZGVzaXJlZEZy
YW1lRGVjb2RlVGltZUZvclRlc3Rpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaAppbmRleCA1MDI5Njg0NjA0N2I5OWQ5MmRlMjkyM2Q1ODI5MGU5ZDdkOTE1OWRkLi5j
YWM3NzJmNDg5ODg0NTY4MzE4NTVmMjM4NDgyOGIzZjcwYWI2ZDgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTEzNiw3ICsxMzYsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGVBdEluZGV4KHNpemVfdCkgeyB9CiAg
ICAgdmlydHVhbCBib29sIGlzQW5pbWF0aW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICBib29sIGFuaW1hdGlvblBlbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGlvblN0YXJ0
VGltZXIuaXNBY3RpdmUoKTsgfQotICAgIAorICAgIHZpcnR1YWwgdm9pZCBkZWNvZGUoV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYpIHsgfQorCiAgICAgLy8gVHlwaWNhbGx5IHRoZSBDYWNoZWRJbWFn
ZSB0aGF0IG93bnMgdXMuCiAgICAgSW1hZ2VPYnNlcnZlciogaW1hZ2VPYnNlcnZlcigpIGNvbnN0
IHsgcmV0dXJuIG1faW1hZ2VPYnNlcnZlcjsgfQogICAgIHZvaWQgc2V0SW1hZ2VPYnNlcnZlcihJ
bWFnZU9ic2VydmVyKiBvYnNlcnZlcikgeyBtX2ltYWdlT2JzZXJ2ZXIgPSBvYnNlcnZlcjsgfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDRlYjRhYzc1MmM5ZDg5MGIyMWY0ZGM2ODEzOGJkNjcyZTdmY2JiY2UuLmI2Zjg4YTlk
MzkwYWQyYzc0MjViYTZkOTA5NzA2YmMxY2IzZTg0YjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAor
MjAxNy0wOC0yOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgor
CisgICAgICAgIEltcGxlbWVudCBpbWcuZGVjb29kZSgpIG1ldGhvZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MDE2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2ltYWdlcy9kZWNvZGUtYW5p
bWF0ZWQtaW1hZ2UtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMv
ZGVjb2RlLWFuaW1hdGVkLWltYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaW1hZ2Vz
L2RlY29kZS1yZW5kZXItYW5pbWF0ZWQtaW1hZ2UtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9pbWFnZXMvZGVjb2RlLXJlbmRlci1hbmltYXRlZC1pbWFnZS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9kZWNvZGUtcmVuZGVyLXN0YXRpYy1pbWFnZS1leHBl
Y3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9kZWNvZGUtcmVuZGVyLXN0
YXRpYy1pbWFnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9kZWNvZGUtc3Rh
dGljLWltYWdlLXJlamVjdC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2lt
YWdlcy9kZWNvZGUtc3RhdGljLWltYWdlLXJlamVjdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2ltYWdlcy9kZWNvZGUtc3RhdGljLWltYWdlLXJlc29sdmUtZXhwZWN0ZWQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvZGVjb2RlLXN0YXRpYy1pbWFnZS1yZXNvbHZlLmh0
bWw6IEFkZGVkLgorCiAyMDE3LTA4LTIzICBNYXR0IExld2lzICA8amxld2lzM0BhcHBsZS5jb20+
CiAKICAgICAgICAgTWFya2VkIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93
ZWJhcHBhcGlzL3RpbWVycy90eXBlLWxvbmctc2V0dGltZW91dC5odG1sIGFzIGZsYWt5LgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RlLWFuaW1hdGVkLWltYWdlLWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtYW5pbWF0ZWQtaW1h
Z2UtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOWM1ZGRkNzRjMDZlZDdkNWJkOTBkMjI5NWIy
NTYxOWNjNzRkOWYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMv
ZGVjb2RlLWFuaW1hdGVkLWltYWdlLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPHN0
eWxlPgorICAgIGRpdiB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAx
MDBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgfQorPC9zdHlsZT4K
Kzxib2R5PgorICAgIDxkaXY+PC9kaXY+Cis8L2JvZHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RlLWFuaW1hdGVk
LWltYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtYW5pbWF0ZWQtaW1h
Z2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41MTk1NTc1NzI1Y2IwY2MzY2UxMTQ1NzMxMzhjZmY3NTUzZWY5
NTI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RlLWFu
aW1hdGVkLWltYWdlLmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPHN0eWxlPgorICAgIGNhbnZhcyB7
CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9Cis8
L3N0eWxlPgorPGJvZHk+CisgICAgPGNhbnZhcz48L2NhbnZhcz4KKyAgICA8c2NyaXB0PgorICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICAgICAgdmFyIGltYWdlID0gbmV3IEltYWdlOworICAgICAgICBpbWFn
ZS5zcmMgPSAicmVzb3VyY2VzL2FuaW1hdGVkLXJlZC1ncmVlbi1ibHVlLXJlcGVhdC0yLmdpZiI7
CisgICAgICAgIGltYWdlLmRlY29kZSgpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgaW1hZ2Uu
ZGVjb2RlKCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IGNhbnZhcyA9IGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOworICAgICAgICAgICAgICAgIGxldCBjb250ZXh0
ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7CisgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3
SW1hZ2UoaW1hZ2UsIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisgICAgICAg
ICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICA8
L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2Rl
Y29kZS1yZW5kZXItYW5pbWF0ZWQtaW1hZ2UtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvaW1hZ2VzL2RlY29kZS1yZW5kZXItYW5pbWF0ZWQtaW1hZ2UtZXhwZWN0ZWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lZGRhODc4NTA5ZTQ3MmIxNDU4M2FhNzE3NzBmODhkZDZhMDA0NThhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RlLXJlbmRlci1hbmltYXRl
ZC1pbWFnZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxzdHlsZT4KKyAgICBkaXYg
eworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAg
IGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgfQorPC9zdHlsZT4KKzxib2R5PgorICAgIDxk
aXY+PC9kaXY+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9k
ZWNvZGUtcmVuZGVyLWFuaW1hdGVkLWltYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdl
cy9kZWNvZGUtcmVuZGVyLWFuaW1hdGVkLWltYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWU5YTE1YTgy
MThkZjQ3MWRjM2RjYWQ2ZTU2ZGJkZWQ4ZTExMjUzYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1yZW5kZXItYW5pbWF0ZWQtaW1hZ2UuaHRtbApAQCAt
MCwwICsxLDUxIEBACisgPHN0eWxlPgorICAgICBkaXYgeworICAgICAgICB3aWR0aDogMTAwcHg7
CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorICAgIGNhbnZhcyB7CisgICAgICAgIHdp
ZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgYmFja2dyb3VuZC1j
b2xvcjogYmxhY2s7CisgICAgfQorICAgIGltZyB7CisgICAgICAgIG1heC13aWR0aDogMTAwJTsK
KyAgICAgICAgbWF4LWhlaWdodDogMTAwJTsKKyAgICB9Cis8L3N0eWxlPgorPGJvZHk+CisgICAg
PGNhbnZhcz48L2NhbnZhcz4KKyAgICA8ZGl2PjwvZGl2PgorICAgIDxzY3JpcHQ+CisgICAgICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAg
ICBpbnRlcm5hbHMuY2xlYXJNZW1vcnlDYWNoZSgpOworICAgICAgICAgICAgaW50ZXJuYWxzLnNl
dHRpbmdzLnNldFdlYmtpdEltYWdlUmVhZHlFdmVudEVuYWJsZWQodHJ1ZSk7CisgICAgICAgICAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBp
bWFnZSA9IG5ldyBJbWFnZTsKKyAgICAgICAgdmFyIHBhcmVudCA9IGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoImRpdiIpOworICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoaW1hZ2UpOworCisgICAg
ICAgIGltYWdlLm9ubG9hZCA9ICgoKSA9PiB7CisgICAgICAgICAgICBpZiAod2luZG93LmludGVy
bmFscyAmJiB3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgIC8vIEZvcmNlIGxh
eW91dCBhbmQgZGlzcGxheSBzbyB0aGUgaW1hZ2UgZ2V0cyBkcmF3bi4KKyAgICAgICAgICAgICAg
ICBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
LmRpc3BsYXkoKTsKKworICAgICAgICAgICAgICAgIGltYWdlLmFkZEV2ZW50TGlzdGVuZXIoIndl
YmtpdEltYWdlRnJhbWVSZWFkeSIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UuZGVj
b2RlKCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNhbnZh
cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDAsIGNhbnZh
cy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFy
ZW50LnJlbW92ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAg
ICAgIH0sIDApOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICB9
KTsKKyAgICAgICAgaW1hZ2Uuc3JjID0gInJlc291cmNlcy9hbmltYXRlZC1yZWQtZ3JlZW4tYmx1
ZS1yZXBlYXQtMi5naWYiOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RlLXJlbmRlci1zdGF0aWMtaW1hZ2UtZXhwZWN0ZWQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1yZW5kZXItc3RhdGljLWltYWdl
LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDA0ODNkMWI1ZTBjOTdkMDZkYzM2MzExYjhkODM5
YzFlYmVjOTA2MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2Rl
Y29kZS1yZW5kZXItc3RhdGljLWltYWdlLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMCBAQAor
PHN0eWxlPgorICAgIGRpdiB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0
OiAyMDBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgfQorPC9zdHls
ZT4KKzxib2R5PgorICAgIDxkaXY+PC9kaXY+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtcmVuZGVyLXN0YXRpYy1pbWFnZS5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RlLXJlbmRlci1zdGF0aWMtaW1hZ2UuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDg3OTgzOWQ5YWRlYjIxZjcxZDMxNmU2MmJhYTI0NjEyNTBmODkyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RlLXJlbmRlci1zdGF0aWMtaW1h
Z2UuaHRtbApAQCAtMCwwICsxLDQ4IEBACis8c3R5bGU+CisgICAgZGl2IHsKKyAgICAgICAgd2lk
dGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKyAgICBpbWcgeworICAg
ICAgICBtYXgtd2lkdGg6IDEwMCU7CisgICAgICAgIG1heC1oZWlnaHQ6IDEwMCU7CisgICAgfQor
PC9zdHlsZT4KKzxib2R5PgorICAgIDxkaXY+PC9kaXY+CisgICAgPHNjcmlwdD4KKyAgICAgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAg
IGludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKCk7CisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0
dGluZ3Muc2V0V2Via2l0SW1hZ2VSZWFkeUV2ZW50RW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAg
IGludGVybmFscy5zZXR0aW5ncy5zZXRMYXJnZUltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWQodHJ1
ZSk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQor
CisgICAgICAgIHZhciBpbWFnZSA9IG5ldyBJbWFnZTsKKyAgICAgICAgdmFyIHBhcmVudCA9IGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdiIpOworICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQo
aW1hZ2UpOworCisgICAgICAgIGltYWdlLm9ubG9hZCA9ICgoKSA9PiB7CisgICAgICAgICAgICBp
ZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAg
ICAgIC8vIEZvcmNlIGFzeW5jIGltYWdlIGRlY29kaW5nIGZvciB0aGlzIGltYWdlLgorICAgICAg
ICAgICAgICAgIGludGVybmFscy5zZXRMYXJnZUltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWRGb3JU
ZXN0aW5nKGltYWdlLCB0cnVlKTsKKworICAgICAgICAgICAgICAgIC8vIEZvcmNlIGxheW91dCBh
bmQgZGlzcGxheSBzbyB0aGUgaW1hZ2UgZ2V0cyBkcmF3bi4KKyAgICAgICAgICAgICAgICBkb2N1
bWVudC5ib2R5Lm9mZnNldEhlaWdodDsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmRpc3Bs
YXkoKTsKKworICAgICAgICAgICAgICAgIGltYWdlLmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdElt
YWdlRnJhbWVSZWFkeSIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kaXNw
bGF5KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZS5kZWNvZGUoKS50aGVuKCgpID0+
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuc3R5bGUud2lkdGggPSAiMjAw
cHgiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5zdHlsZS5oZWlnaHQgPSAi
MjAwcHgiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIH0s
IDApOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAg
ICAgICAgaW1hZ2Uuc3JjID0gInJlc291cmNlcy9ncmVlbi00MDB4NDAwLnBuZyI7CisgICAgPC9z
Y3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNv
ZGUtc3RhdGljLWltYWdlLXJlamVjdC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9p
bWFnZXMvZGVjb2RlLXN0YXRpYy1pbWFnZS1yZWplY3QtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40OTU2NTI5NDY0MzZjZWUzZTNlNGYxMzhmN2YwMDllOTljOTFhZGMyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RlLXN0YXRpYy1pbWFnZS1yZWplY3Qt
ZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDExIEBACis8c3R5bGU+CisgICAgZGl2IHsKKyAgICAg
ICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiByZWQ7CisgICAgfQorPC9zdHlsZT4KKzxib2R5PgorICAgIDxkaXY+PC9kaXY+
CisgICAgPGgyPkVuY29kaW5nRXJyb3I6IEludmFsaWQgaW1hZ2UuPC9oMj4KKzwvYm9keT4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1zdGF0aWMtaW1hZ2UtcmVq
ZWN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtc3RhdGljLWltYWdlLXJl
amVjdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1MjIwZmRmZjkyMDBkNjUxY2RkODNiYmUwNjdkOWM5MmEz
Njk4YjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUt
c3RhdGljLWltYWdlLXJlamVjdC5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzxzdHlsZT4KKyAgICBj
YW52YXMgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7Cisg
ICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKKyAgICB9Cis8L3N0eWxlPgorPGJvZHk+Cisg
ICAgPGNhbnZhcz48L2NhbnZhcz4KKyAgICA8ZGl2PjwvZGl2PgorICAgIDxzY3JpcHQ+CisgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOworICAgICAgICB2YXIgaW1hZ2UgPSBuZXcgSW1hZ2U7CisgICAgICAgIGltYWdl
LnNyYyA9ICJyZXNvdXJjZXMvZ3JlZW4tNDAweDQwMCI7CisgICAgICAgIGltYWdlLmRlY29kZSgp
LmNhdGNoKChlKSA9PiB7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYi
KS5pbm5lckhUTUwgPSAgIjxoMj4iICsgZSArICI8aDI+IjsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
KyAgICAgICAgfSk7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtc3RhdGljLWltYWdlLXJlc29sdmUtZXhwZWN0ZWQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1zdGF0aWMtaW1hZ2UtcmVzb2x2ZS1l
eHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5YzVkZGQ3NGMwNmVkN2Q1YmQ5MGQyMjk1YjI1NjE5
Y2M3NGQ5ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNv
ZGUtc3RhdGljLWltYWdlLXJlc29sdmUtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEwIEBACis8
c3R5bGU+CisgICAgZGl2IHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6
IDEwMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICB9Cis8L3N0eWxl
PgorPGJvZHk+CisgICAgPGRpdj48L2Rpdj4KKzwvYm9keT4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtc3RhdGlj
LWltYWdlLXJlc29sdmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1zdGF0
aWMtaW1hZ2UtcmVzb2x2ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4MTg0NWI4NDA5NzNiZTQ0MDBkNTQz
NjJkMjM2MTczYWRkYjRmYWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2lt
YWdlcy9kZWNvZGUtc3RhdGljLWltYWdlLXJlc29sdmUuaHRtbApAQCAtMCwwICsxLDIzIEBACis8
c3R5bGU+CisgICAgY2FudmFzIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWln
aHQ6IDEwMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgICAgfQorPC9zdHls
ZT4KKzxib2R5PgorICAgIDxjYW52YXM+PC9jYW52YXM+CisgICAgPHNjcmlwdD4KKyAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CisgICAgICAgIHZhciBpbWFnZSA9IG5ldyBJbWFnZTsKKyAgICAgICAgaW1hZ2Uuc3Jj
ID0gInJlc291cmNlcy9ncmVlbi00MDB4NDAwLnBuZyI7CisgICAgICAgIGltYWdlLmRlY29kZSgp
LnRoZW4oKCkgPT4geworICAgICAgICAgICAgbGV0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoImNhbnZhcyIpOworICAgICAgICAgICAgbGV0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29u
dGV4dCgiMmQiKTsKKyAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCAwLCAwLCBj
YW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAg
ICB9KTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319185</attachid>
            <date>2017-08-28 11:15:53 -0700</date>
            <delta_ts>2017-08-28 19:28:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176016-20170828111553.patch</filename>
            <type>text/plain</type>
            <size>26456</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMDg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDhhMDVlNDVjMjZiNzMy
ZWI0ZWJkNTc5ZDFiM2RiMzlmMGJlYTY5Mi4uMDkxZGIwYmEzNDBlMzdiZDBjZDA5NDQ0MDY0N2Fm
ZGQxMzg0ZjliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE3LTA4LTI4ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVt
ZW50IGltZy5kZWNvb2RlKCkgbWV0aG9kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzYwMTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGUgc3BlY3MgaXM6CisgICAgICAgIGh0dHBzOi8vaHRtbC5zcGVj
LndoYXR3Zy5vcmcvbXVsdGlwYWdlL2VtYmVkZGVkLWNvbnRlbnQuaHRtbCNkb20taW1nLWRlY29k
ZS4KKworICAgICAgICAtLSBpbWcuZGVjb2RlKCkgd2FpdHMgdGlsbCBsb2FkaW5nIHRoZSBpbWFn
ZSBmaW5pc2hlcy4gT3RoZXJ3aXNlIGl0IHN0YXJ0cworICAgICAgICBpbW1lZGlhdGVseS4KKyAg
ICAgICAgLS0gSWYgdGhlIGltYWdlIGZyYW1lIGlzIGFscmVhZHkgZGVjb2RlZCwgdGhlIHByb21p
c2Ugd2lsbCBiZSByZXNvbHZlZAorICAgICAgICBiZWZvcmUgcmV0dXJuLgorICAgICAgICAtLSBJ
ZiBhbiBlcnJvciBoYXBwZW5zIGluIGxvYWRpbmcgdGhlIGltYWdlIG9yIGRlY29kaW5nIHRoZSBp
bWFnZSBmcmFtZSwKKyAgICAgICAgdGhlIHByb21pc2Ugd2lsbCBiZSByZWplY3RlZCB3aXRoICdF
bmNvZGluZ0Vycm9yJyBleGNlcHRpb24uCisgICAgICAgIC0tIEFuaW1hdGVkIGltYWdlIHJlc29s
dmVzIHRoZSBwcm9taXNlIHdoZW4gdGhlIG5leHQgZnJhbWUgaXMgZGVjb2RlZCBhbmQgCisgICAg
ICAgIHRoZSBhbmltYXRpb24gaXMgYWR2YW5jZWQgaXQuIElmIHRoZSBpbWFnZSBpcyBub3QgZGlz
cGxheWVkLCBkZWNvZGUoKSB3aWxsCisgICAgICAgIHJlcXVlc3QgdGhlIGRlY29kaW5nIHRoZSBm
aXJzdCBmcmFtZSBhbmQgc3RhcnQgYW5pbWF0aW5nIHRoZSBpbWFnZS4KKworICAgICAgICBUZXN0
czogZmFzdC9pbWFnZXMvZGVjb2RlLWFuaW1hdGVkLWltYWdlLmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvaW1hZ2VzL2RlY29kZS1yZW5kZXItYW5pbWF0ZWQtaW1hZ2UuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9pbWFnZXMvZGVjb2RlLXJlbmRlci1zdGF0aWMtaW1hZ2UuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9pbWFnZXMvZGVjb2RlLXN0YXRpYy1pbWFnZS1yZWplY3QuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9pbWFnZXMvZGVjb2RlLXN0YXRpYy1pbWFnZS1yZXNvbHZlLmh0bWwK
KworICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW1hZ2VFbGVtZW50OjpkZWNvZGUpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxl
bWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5pZGw6CisgICAgICAgICog
bG9hZGVyL0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpu
b3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6ZGVjb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpkZWNvZGVFcnJvcik6CisgICAgICAgICog
bG9hZGVyL0ltYWdlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6aGFz
UGVuZGluZ0RlY29kZVByb21pc2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjppbnRlcm5h
bFN0YXJ0QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjppbnRlcm5h
bEFkdmFuY2VBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRlY29k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aW1hZ2VGcmFtZUF2YWlsYWJsZUF0
SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
OjpkZWNvZGUpOgorCiAyMDE3LTA4LTIzICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBw
bGUuY29tPgogCiAgICAgICAgIFRyeSB0byBmaXggdGhlIFdpbkNhaXJvIGJ1aWxkIGFmdGVyIHIy
MjEwNjgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDM4ZmYz
YzllMDQyZjVhN2Q4MDc2YTc5NThlNDk3NjMyOGVhOThlZDUuLjhjMWY1NmZkNzRmODQyNzBmYjZl
NDFmM2MxYjg1MDE0MWE3MzBiMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmNwcApAQCAtNTM4LDYgKzUzOCwxMSBAQCBib29sIEhUTUxJbWFnZUVsZW1lbnQ6OmNvbXBs
ZXRlKCkgY29uc3QKICAgICByZXR1cm4gbV9pbWFnZUxvYWRlci5pbWFnZUNvbXBsZXRlKCk7CiB9
CiAKK3ZvaWQgSFRNTEltYWdlRWxlbWVudDo6ZGVjb2RlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYg
cHJvbWlzZSkKK3sKKyAgICByZXR1cm4gbV9pbWFnZUxvYWRlci5kZWNvZGUoV1RGTW92ZShwcm9t
aXNlKSk7Cit9CisKIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1
dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CiB7CiAgICAgSFRNTEVsZW1lbnQ6
OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW1hZ2VFbGVtZW50LmgKaW5kZXggYmZiZGU5MGYzYzUzNjc3NzhmYTk4NGVkZWVkY2Q5N2RjZjFm
YmFlNS4uY2U5NjVlMTk1MjM5ODM1MDU0MTY3ODEyZGJjMjdmZTVmYjgzODc3NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKQEAgLTc5LDYgKzc5LDggQEAgcHVibGljOgog
CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb21wbGV0ZSgpIGNvbnN0OwogCisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkZWNvZGUoUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CisKICNpZiBQTEFU
Rk9STShJT1MpCiAgICAgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIG92ZXJy
aWRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVs
ZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbAppbmRl
eCAwOTdmMmE0NTRhY2I2MjE2NTk0MGNkMTllYjdmNWUyNmE4MzUyMjIyLi42Y2QxNmEzN2I2NDU0
NGIwYzkwZGJjNzNhNDQxMjEwMDRmNDM4ZmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlRWxlbWVudC5pZGwKQEAgLTQ4LDUgKzQ4LDcgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
bG9uZyBuYXR1cmFsV2lkdGg7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgeDsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgbG9uZyB5OworCisgICAgUHJvbWlzZTx2b2lkPiBkZWNvZGUoKTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCmluZGV4IDE2NWM5MTk5Zjdk
ZjEzNTZmNDBkZDM3YjAzN2MyMTljMmE2MGZjN2EuLjQ3M2M4MDZkMTEwN2ZmZGRhYjNiYTg3NWQw
YzI4MTdiZDkyOGI2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcApAQCAt
MjkxLDYgKzI5MSw5IEBAIHZvaWQgSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSkKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
Y29uc29sZU1lc3NhZ2UoTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIkNyb3NzLW9yaWdpbiBpbWFn
ZSBsb2FkIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3kuIikp
OwogICAgICAgICBlbGVtZW50KCkuZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgY29uc29sZU1lc3NhZ2UpOwog
CisgICAgICAgIGlmIChoYXNQZW5kaW5nRGVjb2RlUHJvbWlzZSgpKQorICAgICAgICAgICAgZGVj
b2RlRXJyb3IoKTsKKyAgICAgICAgCiAgICAgICAgIEFTU0VSVCghbV9oYXNQZW5kaW5nTG9hZEV2
ZW50KTsKIAogICAgICAgICAvLyBPbmx5IGNvbnNpZGVyIHVwZGF0aW5nIHRoZSBwcm90ZWN0aW9u
IHJlZi1jb3VudCBvZiB0aGUgRWxlbWVudCBpbW1lZGlhdGVseSBiZWZvcmUgcmV0dXJuaW5nCkBA
IC0zMDAsNiArMzAzLDggQEAgdm9pZCBJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlKQogICAgIH0KIAogICAgIGlmIChtX2ltYWdlLT53YXNDYW5jZWxl
ZCgpKSB7CisgICAgICAgIGlmIChoYXNQZW5kaW5nRGVjb2RlUHJvbWlzZSgpKQorICAgICAgICAg
ICAgZGVjb2RlRXJyb3IoKTsKICAgICAgICAgbV9oYXNQZW5kaW5nTG9hZEV2ZW50ID0gZmFsc2U7
CiAgICAgICAgIC8vIE9ubHkgY29uc2lkZXIgdXBkYXRpbmcgdGhlIHByb3RlY3Rpb24gcmVmLWNv
dW50IG9mIHRoZSBFbGVtZW50IGltbWVkaWF0ZWx5IGJlZm9yZSByZXR1cm5pbmcKICAgICAgICAg
Ly8gZnJvbSB0aGlzIGZ1bmN0aW9uIGFzIGRvaW5nIHNvIG1pZ2h0IHJlc3VsdCBpbiB0aGUgZGVz
dHJ1Y3Rpb24gb2YgdGhpcyBJbWFnZUxvYWRlci4KQEAgLTMwNyw2ICszMTIsOCBAQCB2b2lkIElt
YWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoaGFzUGVuZGluZ0RlY29kZVByb21pc2UoKSkK
KyAgICAgICAgZGVjb2RlKCk7CiAgICAgbG9hZEV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hFdmVudFNv
b24oKnRoaXMpOwogfQogCkBAIC0zNjksNiArMzc2LDQwIEBAIHZvaWQgSW1hZ2VMb2FkZXI6OnVw
ZGF0ZWRIYXNQZW5kaW5nRXZlbnQoKQogICAgIH0gICAKIH0KIAordm9pZCBJbWFnZUxvYWRlcjo6
ZGVjb2RlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3sKKyAgICBtX2RlY29kaW5n
UHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSk7CisKKyAgICBpZiAobV9pbWFnZS0+ZXJyb3JPY2N1
cnJlZCgpKSB7CisgICAgICAgIGRlY29kZUVycm9yKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAobV9pbWFnZS0+aW1hZ2UoKSAmJiBtX2ltYWdlQ29tcGxldGUpCisgICAgICAg
IGRlY29kZSgpOworfQorCit2b2lkIEltYWdlTG9hZGVyOjpkZWNvZGVFcnJvcigpCit7CisgICAg
QVNTRVJUKGhhc1BlbmRpbmdEZWNvZGVQcm9taXNlKCkpOworICAgIG1fZGVjb2RpbmdQcm9taXNl
LT5yZWplY3QoRXhjZXB0aW9uIHsgRW5jb2RpbmdFcnJvciwgIkludmFsaWQgaW1hZ2UuIiB9KTsK
KyAgICBtX2RlY29kaW5nUHJvbWlzZSA9IG51bGxwdHI7Cit9CisKK3ZvaWQgSW1hZ2VMb2FkZXI6
OmRlY29kZSgpCit7CisgICAgQVNTRVJUKGhhc1BlbmRpbmdEZWNvZGVQcm9taXNlKCkpOworICAg
IGlmIChtX2ltYWdlLT5lcnJvck9jY3VycmVkKCkpIHsKKyAgICAgICAgZGVjb2RlRXJyb3IoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEltYWdlKiBpbWFnZSA9IG1faW1hZ2UtPmlt
YWdlKCk7CisgICAgaW1hZ2UtPmRlY29kZShbcHJvbWlzZSA9IFdURk1vdmUobV9kZWNvZGluZ1By
b21pc2UpXSgpIG11dGFibGUgeworICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CisgICAgfSk7
Cit9CisKIHZvaWQgSW1hZ2VMb2FkZXI6OnRpbWVyRmlyZWQoKQogewogICAgIG1fcHJvdGVjdGVk
RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1h
Z2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCmluZGV4IDc3
MTc2NjdmNjc3MGRlNzQ2M2I0ODYwYTBlNzA4NGZjNTA3OTEzOWQuLmYxZDUxYzM4YjZmOWFlNmI3
YjNkYTI3NGE3NzEwNTc2ZmRjYjc2ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9JbWFnZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5o
CkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJDYWNoZWRJbWFnZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVm
ZXJyZWQuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0
cmluZy5oPgogCkBAIC01OCw2ICs1OSw4IEBAIHB1YmxpYzoKIAogICAgIENhY2hlZEltYWdlKiBp
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KICAgICB2b2lkIGNsZWFySW1h
Z2UoKTsgLy8gQ2FuY2VscyBwZW5kaW5nIGJlZm9yZWxvYWQgYW5kIGxvYWQgZXZlbnRzLCBhbmQg
ZG9lc24ndCBkaXNwYXRjaCBuZXcgb25lcy4KKyAgICAKKyAgICB2b2lkIGRlY29kZShSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmKTsKIAogICAgIHZvaWQgc2V0TG9hZE1hbnVhbGx5KGJvb2wgbG9hZE1h
bnVhbGx5KSB7IG1fbG9hZE1hbnVhbGx5ID0gbG9hZE1hbnVhbGx5OyB9CiAKQEAgLTkwLDYgKzkz
LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckltYWdlV2l0aG91dENvbnNpZGVyaW5nUGVu
ZGluZ0xvYWRFdmVudCgpOwogICAgIHZvaWQgY2xlYXJGYWlsZWRMb2FkVVJMKCk7CiAKKyAgICBi
b29sIGhhc1BlbmRpbmdEZWNvZGVQcm9taXNlKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGluZ1By
b21pc2U7IH0KKyAgICB2b2lkIGRlY29kZUVycm9yKCk7CisgICAgdm9pZCBkZWNvZGUoKTsKKyAg
ICAKICAgICB2b2lkIHRpbWVyRmlyZWQoKTsKIAogICAgIEVsZW1lbnQmIG1fZWxlbWVudDsKQEAg
LTk3LDYgKzEwNCw3IEBAIHByaXZhdGU6CiAgICAgVGltZXIgbV9kZXJlZkVsZW1lbnRUaW1lcjsK
ICAgICBSZWZQdHI8RWxlbWVudD4gbV9wcm90ZWN0ZWRFbGVtZW50OwogICAgIEF0b21pY1N0cmlu
ZyBtX2ZhaWxlZExvYWRVUkw7CisgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9kZWNvZGlu
Z1Byb21pc2U7CiAgICAgYm9vbCBtX2hhc1BlbmRpbmdCZWZvcmVMb2FkRXZlbnQgOiAxOwogICAg
IGJvb2wgbV9oYXNQZW5kaW5nTG9hZEV2ZW50IDogMTsKICAgICBib29sIG1faGFzUGVuZGluZ0Vy
cm9yRXZlbnQgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuY3BwCmluZGV4IDVjMDhlNGIwMDYyNzdmMGQ0MWE2NTlhMTY3Zjc2ZjM3OWMyNGY4
OTYuLjgxZWFkMmNmMThkY2VkM2QzZDZmMDhmMmRkMDAyOWNlOTE1NmNkN2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTQ2NSw2
ICs0NjUsMTEgQEAgdm9pZCBCaXRtYXBJbWFnZTo6aW50ZXJuYWxBZHZhbmNlQW5pbWF0aW9uKCkK
ICAgICBEZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVjb2RpbmdTdGF0dXNB
dEluZGV4KG1fY3VycmVudEZyYW1lKTsKICAgICBzZXRDdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1
c0lmTmVjZXNzYXJ5KGRlY29kaW5nU3RhdHVzKTsKICAgICAKKyAgICBpZiAobV9kZWNvZGVDYWxs
YmFjaykgeworICAgICAgICBtX2RlY29kZUNhbGxiYWNrKCk7CisgICAgICAgIG1fZGVjb2RlQ2Fs
bGJhY2sgPSBudWxscHRyOworICAgIH0KKwogICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCiAgICAg
ICAgIGltYWdlT2JzZXJ2ZXIoKS0+aW1hZ2VGcmFtZUF2YWlsYWJsZSgqdGhpcywgSW1hZ2VBbmlt
YXRpbmdTdGF0ZTo6WWVzLCBudWxscHRyLCBkZWNvZGluZ1N0YXR1cyk7CiAKQEAgLTQ5Nyw2ICs1
MDIsNDEgQEAgdm9pZCBCaXRtYXBJbWFnZTo6cmVzZXRBbmltYXRpb24oKQogICAgIGRlc3Ryb3lE
ZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KHRydWUpOwogfQogCit2b2lkIEJpdG1hcEltYWdlOjpkZWNv
ZGUoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCit7CisgICAgaWYgKG1fZGVjb2Rl
Q2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIG1fZGVjb2RlQ2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKTsKKworICAgIGlmICghY2FuQW5pbWF0ZSgpKSB7CisgICAgICAgIGJvb2wg
ZnJhbWVJc0NvbXBhdGlibGUgPSBmcmFtZUhhc0RlY29kZWROYXRpdmVJbWFnZUNvbXBhdGlibGVX
aXRoT3B0aW9uc0F0SW5kZXgobV9jdXJyZW50RnJhbWUsIG1fY3VycmVudFN1YnNhbXBsaW5nTGV2
ZWwsIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4oKSk7CisgICAgICAgIGJvb2wgZnJhbWVJc0JlaW5n
RGVjb2RlZCA9IGZyYW1lSXNCZWluZ0RlY29kZWRBbmRJc0NvbXBhdGlibGVXaXRoT3B0aW9uc0F0
SW5kZXgobV9jdXJyZW50RnJhbWUsIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4oKSk7CisgICAgCisg
ICAgICAgIGlmIChmcmFtZUlzQ29tcGF0aWJsZSkgeworICAgICAgICAgICAgbV9kZWNvZGVDYWxs
YmFjaygpOworICAgICAgICAgICAgbV9kZWNvZGVDYWxsYmFjayA9IG51bGxwdHI7CisgICAgICAg
IH0gZWxzZSBpZiAoIWZyYW1lSXNCZWluZ0RlY29kZWQpIHsKKyAgICAgICAgICAgIG1fc291cmNl
LnJlcXVlc3RGcmFtZUFzeW5jRGVjb2RpbmdBdEluZGV4KG1fY3VycmVudEZyYW1lLCBtX2N1cnJl
bnRTdWJzYW1wbGluZ0xldmVsLCBzdGQ6Om9wdGlvbmFsPEludFNpemU+KCkpOworICAgICAgICAg
ICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpEZWNvZGlu
ZzsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFRoZSBhbmltYXRlZCBpbWFn
ZSBtYXkgbm90IGJlIGRpc3BsYXllZC4gSW4gdGhpcyBjYXNlLCBlaXRoZXIgdGhlIGZpcnN0IGZy
YW1lIGhhcyBub3QgYmVlbiBkZWNvZGVkIHlldCBvciB0aGUgYW5pbWF0aW9uIGhhcyBub3Qgc3Rh
cnRlZCB5ZXQuCisgICAgICAgIGlmICghbV9kZXNpcmVkRnJhbWVTdGFydFRpbWUpIHsKKyAgICAg
ICAgICAgIGJvb2wgZnJhbWVJc0NvbXBhdGlibGUgPSBmcmFtZUhhc0RlY29kZWROYXRpdmVJbWFn
ZUNvbXBhdGlibGVXaXRoT3B0aW9uc0F0SW5kZXgobV9jdXJyZW50RnJhbWUsIG1fY3VycmVudFN1
YnNhbXBsaW5nTGV2ZWwsIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4oKSk7CisgICAgICAgICAgICBi
b29sIGZyYW1lSXNCZWluZ0RlY29kZWQgPSBmcmFtZUlzQmVpbmdEZWNvZGVkQW5kSXNDb21wYXRp
YmxlV2l0aE9wdGlvbnNBdEluZGV4KG1fY3VycmVudEZyYW1lLCBzdGQ6Om9wdGlvbmFsPEludFNp
emU+KCkpOworCisgICAgICAgICAgICBpZiAoZnJhbWVJc0NvbXBhdGlibGUpCisgICAgICAgICAg
ICAgICAgaW50ZXJuYWxTdGFydEFuaW1hdGlvbigpOworICAgICAgICAgICAgZWxzZSBpZiAoIWZy
YW1lSXNCZWluZ0RlY29kZWQpIHsKKyAgICAgICAgICAgICAgICBtX3NvdXJjZS5yZXF1ZXN0RnJh
bWVBc3luY0RlY29kaW5nQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxp
bmdMZXZlbCwgc3RkOjpvcHRpb25hbDxJbnRTaXplPigpKTsKKyAgICAgICAgICAgICAgICBtX2N1
cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkRlY29kaW5nOworICAg
ICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGludGVybmFsU3RhcnRBbmlt
YXRpb24oKTsKKyAgICB9Cit9CisKIHZvaWQgQml0bWFwSW1hZ2U6OmltYWdlRnJhbWVBdmFpbGFi
bGVBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6
OiVzIC0gJXAgLSB1cmw6ICVzIFtyZXF1ZXN0ZWQgZnJhbWUgJWxkIGlzIG5vdyBhdmFpbGFibGVd
IiwgX19GVU5DVElPTl9fLCB0aGlzLCBzb3VyY2VVUkwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
LCBpbmRleCk7CkBAIC01MjcsNyArNTY3LDEzIEBAIHZvaWQgQml0bWFwSW1hZ2U6OmltYWdlRnJh
bWVBdmFpbGFibGVBdEluZGV4KHNpemVfdCBpbmRleCkKICAgICAKICAgICBpZiAobV9jdXJyZW50
RnJhbWVEZWNvZGluZ1N0YXR1cyA9PSBEZWNvZGluZ1N0YXR1czo6Q29tcGxldGUpCiAgICAgICAg
ICsrbV9kZWNvZGVDb3VudEZvclRlc3Rpbmc7Ci0KKyAgICAKKyAgICAvLyBDYWxsIHRoZSBtX2Rl
Y29kZUNhbGxiYWNrIG9ubHkgaWYgdGhlIGltYWdlIGZyYW1lIHdhcyBkZWNvZGVkIHdpdGggdGhl
IG5hdGl2ZSBzaXplLgorICAgIGlmIChtX2RlY29kZUNhbGxiYWNrICYmIGZyYW1lSGFzRGVjb2Rl
ZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChtX2N1cnJlbnRGcmFtZSwg
bV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCwgc3RkOjpvcHRpb25hbDxJbnRTaXplPigpKSkgewor
ICAgICAgICBtX2RlY29kZUNhbGxiYWNrKCk7CisgICAgICAgIG1fZGVjb2RlQ2FsbGJhY2sgPSBu
dWxscHRyOworICAgIH0KKyAgICAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQogICAgICAgICBp
bWFnZU9ic2VydmVyKCktPmltYWdlRnJhbWVBdmFpbGFibGUoKnRoaXMsIEltYWdlQW5pbWF0aW5n
U3RhdGU6Ok5vLCBudWxscHRyLCBkZWNvZGluZ1N0YXR1cyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAppbmRleCA1YTZkZTA5MTVmZjRjYzgy
NjE4OWZlZjcxOGE4OGI2MzE5MTU3NzkwLi4yYmU5NWE1NWJiYjM3NjIzNDFiMTQxYjE4ZmZmN2Zm
ZDc0NjAwZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmgKQEAgLTE3OCw4ICsxNzgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gYXV0b21hdGlj
YWxseSBwYXVzZSBvbmNlIGFsbCBvYnNlcnZlcnMgbm8gbG9uZ2VyIHdhbnQgdG8gcmVuZGVyIHRo
ZSBpbWFnZSBhbnl3aGVyZS4KICAgICB2b2lkIHN0b3BBbmltYXRpb24oKSBvdmVycmlkZTsKICAg
ICB2b2lkIHJlc2V0QW5pbWF0aW9uKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbWFnZUZyYW1lQXZh
aWxhYmxlQXRJbmRleChzaXplX3QpIG92ZXJyaWRlOwotCisgICAgCiAgICAgLy8gSGFuZGxlIHBs
YXRmb3JtLXNwZWNpZmljIGRhdGEKICAgICB2b2lkIGludmFsaWRhdGVQbGF0Zm9ybURhdGEoKTsK
IApAQCAtMTk3LDYgKzE5Niw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5EZXN0cm95RGVjb2Rl
ZERhdGEoKTsKICAgICB2b2lkIHNldEN1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzSWZOZWNlc3Nh
cnkoRGVjb2RpbmdTdGF0dXMpOwogICAgIGJvb2wgaXNCaXRtYXBJbWFnZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIGRlY29kZShXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBpbWFnZUZyYW1lQXZhaWxhYmxlQXRJbmRleChzaXpl
X3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZHVtcChXVEY6OlRleHRTdHJlYW0mKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIC8vIEFuaW1hdGVkIGltYWdlcyBvdmVyIGEgY2VydGFpbiBzaXplIGFyZSBj
b25zaWRlcmVkIGxhcmdlIGVub3VnaCB0aGF0IHdlJ2xsIG9ubHkgaGFuZyBvbiB0byBvbmUgZnJh
bWUgYXQgYSB0aW1lLgpAQCAtMjEwLDYgKzIxMSw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFRpbWVyPiBtX2ZyYW1lVGltZXI7CiAgICAgUmVwZXRpdGlvbkNvdW50IG1fcmVwZXRp
dGlvbnNDb21wbGV0ZSB7IFJlcGV0aXRpb25Db3VudE5vbmUgfTsgLy8gSG93IG1hbnkgcmVwZXRp
dGlvbnMgd2UndmUgZmluaXNoZWQuCiAgICAgTW9ub3RvbmljVGltZSBtX2Rlc2lyZWRGcmFtZVN0
YXJ0VGltZTsgLy8gVGhlIHN5c3RlbSB0aW1lIGF0IHdoaWNoIHdlIGhvcGUgdG8gc2VlIHRoZSBu
ZXh0IGNhbGwgdG8gc3RhcnRBbmltYXRpb24oKS4KKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4g
bV9kZWNvZGVDYWxsYmFjazsKIAogICAgIFNlY29uZHMgbV9mcmFtZURlY29kaW5nRHVyYXRpb25G
b3JUZXN0aW5nOwogICAgIE1vbm90b25pY1RpbWUgbV9kZXNpcmVkRnJhbWVEZWNvZGVUaW1lRm9y
VGVzdGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDUw
Mjk2ODQ2MDQ3Yjk5ZDkyZGUyOTIzZDU4MjkwZTlkN2Q5MTU5ZGQuLmU2N2VlOWExY2Q1YzEyMjJm
Mjc0ZWYzMTE5MjI2ZjQyOGE0M2E2N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuaApAQCAtMTMzLDEwICsxMzMsMTIgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRB
bmltYXRpb25Bc3luY2hyb25vdXNseSgpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wQW5pbWF0aW9u
KCkge30KICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltYXRpb24oKSB7fQotICAgIHZpcnR1YWwg
dm9pZCBpbWFnZUZyYW1lQXZhaWxhYmxlQXRJbmRleChzaXplX3QpIHsgfQogICAgIHZpcnR1YWwg
Ym9vbCBpc0FuaW1hdGluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBhbmlt
YXRpb25QZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9hbmltYXRpb25TdGFydFRpbWVyLmlzQWN0
aXZlKCk7IH0KLSAgICAKKworICAgIHZpcnR1YWwgdm9pZCBkZWNvZGUoV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBpbWFnZUZyYW1lQXZhaWxhYmxlQXRJbmRl
eChzaXplX3QpIHsgfQorCiAgICAgLy8gVHlwaWNhbGx5IHRoZSBDYWNoZWRJbWFnZSB0aGF0IG93
bnMgdXMuCiAgICAgSW1hZ2VPYnNlcnZlciogaW1hZ2VPYnNlcnZlcigpIGNvbnN0IHsgcmV0dXJu
IG1faW1hZ2VPYnNlcnZlcjsgfQogICAgIHZvaWQgc2V0SW1hZ2VPYnNlcnZlcihJbWFnZU9ic2Vy
dmVyKiBvYnNlcnZlcikgeyBtX2ltYWdlT2JzZXJ2ZXIgPSBvYnNlcnZlcjsgfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDRl
YjRhYzc1MmM5ZDg5MGIyMWY0ZGM2ODEzOGJkNjcyZTdmY2JiY2UuLmI2Zjg4YTlkMzkwYWQyYzc0
MjViYTZkOTA5NzA2YmMxY2IzZTg0YjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxNy0wOC0y
OCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAg
IEltcGxlbWVudCBpbWcuZGVjb29kZSgpIG1ldGhvZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MDE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2ltYWdlcy9kZWNvZGUtYW5pbWF0ZWQtaW1h
Z2UtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvZGVjb2RlLWFu
aW1hdGVkLWltYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaW1hZ2VzL2RlY29kZS1y
ZW5kZXItYW5pbWF0ZWQtaW1hZ2UtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9pbWFnZXMvZGVjb2RlLXJlbmRlci1hbmltYXRlZC1pbWFnZS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2ltYWdlcy9kZWNvZGUtcmVuZGVyLXN0YXRpYy1pbWFnZS1leHBlY3RlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9kZWNvZGUtcmVuZGVyLXN0YXRpYy1pbWFn
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9kZWNvZGUtc3RhdGljLWltYWdl
LXJlamVjdC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9kZWNv
ZGUtc3RhdGljLWltYWdlLXJlamVjdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdl
cy9kZWNvZGUtc3RhdGljLWltYWdlLXJlc29sdmUtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9pbWFnZXMvZGVjb2RlLXN0YXRpYy1pbWFnZS1yZXNvbHZlLmh0bWw6IEFkZGVk
LgorCiAyMDE3LTA4LTIzICBNYXR0IExld2lzICA8amxld2lzM0BhcHBsZS5jb20+CiAKICAgICAg
ICAgTWFya2VkIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlz
L3RpbWVycy90eXBlLWxvbmctc2V0dGltZW91dC5odG1sIGFzIGZsYWt5LgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RlLWFuaW1hdGVkLWltYWdlLWV4cGVjdGVkLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtYW5pbWF0ZWQtaW1hZ2UtZXhwZWN0
ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40YjcwYzI1OGZlZmUyNmE0ZWNhMWIxN2FkM2M4M2NhMDAwOTMw
Mzc3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RlLWFu
aW1hdGVkLWltYWdlLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPHN0eWxlPgorICAg
IGRpdiB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAg
ICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgfQorPC9zdHlsZT4KKzxib2R5Pgor
CTxwPlRoaXMgdGVzdHMgY2FsbGluZyBkZWNvZGUoKSBtdWx0aXBsZSB0aW1lcyBmb3IgYW4gYW5p
bWF0ZWQgaW1hZ2UuPC9wPgorICAgIDxkaXY+PC9kaXY+Cis8L2JvZHk+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2Rl
LWFuaW1hdGVkLWltYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtYW5p
bWF0ZWQtaW1hZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTUzMjBhNWQzYWEzMGRjMjMwMWNjOGEyODZh
ZjlkMGY2MTZjZWExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMv
ZGVjb2RlLWFuaW1hdGVkLWltYWdlLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPHN0eWxlPgorICAg
IGNhbnZhcyB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsK
KyAgICB9Cis8L3N0eWxlPgorPGJvZHk+CisgICAgPHA+VGhpcyB0ZXN0cyBjYWxsaW5nIGRlY29k
ZSgpIG11bHRpcGxlIHRpbWVzIGZvciBhbiBhbmltYXRlZCBpbWFnZS48L3A+CisgICAgPGNhbnZh
cz48L2NhbnZhcz4KKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgdmFyIGlt
YWdlID0gbmV3IEltYWdlOworICAgICAgICBpbWFnZS5zcmMgPSAicmVzb3VyY2VzL2FuaW1hdGVk
LXJlZC1ncmVlbi1ibHVlLXJlcGVhdC0yLmdpZiI7CisgICAgICAgIC8vIEZpcnN0IGRlY29kZSgp
IHdpbGwgZGVjb2RlIHRoZSByZWQgZnJhbWUuCisgICAgICAgIGltYWdlLmRlY29kZSgpLnRoZW4o
KCkgPT4geworICAgICAgICAgICAgLy8gU2Vjb25kIGRlY29kZSgpIHdpbGwgZGVjb2RlIHRoZSBn
cmVlbiBmcmFtZS4KKyAgICAgICAgICAgIGltYWdlLmRlY29kZSgpLnRoZW4oKCkgPT4geworICAg
ICAgICAgICAgICAgIGxldCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMi
KTsKKyAgICAgICAgICAgICAgICBsZXQgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIp
OworICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCAwLCAwLCBjYW52YXMu
d2lkdGgsIGNhbnZhcy5oZWlnaHQpOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtcmVuZGVyLWFuaW1hdGVkLWltYWdl
LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtcmVuZGVyLWFu
aW1hdGVkLWltYWdlLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjUwNTBiN2ZmODA0MjgwMjlk
MmQ0MTY0MDQ3MWViYmMzZTJjM2Q5MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvaW1hZ2VzL2RlY29kZS1yZW5kZXItYW5pbWF0ZWQtaW1hZ2UtZXhwZWN0ZWQuaHRtbApAQCAt
MCwwICsxLDExIEBACis8c3R5bGU+CisgICAgZGl2IHsKKyAgICAgICAgd2lkdGg6IDEwMHB4Owor
ICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOwor
ICAgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKwk8cD5UaGlzIHRlc3RzIGNhbGxpbmcgZGVjb2RlKCkg
Zm9yIGEgYW5pbWF0ZWQgaW1hZ2Ugd2hpY2ggaXMgYWxzbyBhbiBlbGVtZW50IGluIHRoZSBET00g
dHJlZS48L3A+CisgICAgPGRpdj48L2Rpdj4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1yZW5kZXItYW5pbWF0ZWQtaW1hZ2UuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1yZW5kZXItYW5pbWF0ZWQtaW1hZ2UuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mNmM2OTI1MTA4ZDg0MzhhMGM1MzU0ZmY5MGQ5Yjk2M2MxYWM5NTEwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RlLXJlbmRlci1hbmltYXRl
ZC1pbWFnZS5odG1sCkBAIC0wLDAgKzEsNTUgQEAKKyA8c3R5bGU+CisgICAgIGRpdiB7CisgICAg
ICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9CisgICAgY2Fu
dmFzIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAg
ICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsKKyAgICB9CisgICAgaW1nIHsKKyAgICAgICAg
bWF4LXdpZHRoOiAxMDAlOworICAgICAgICBtYXgtaGVpZ2h0OiAxMDAlOworICAgIH0KKzwvc3R5
bGU+Cis8Ym9keT4KKyAgICA8cD5UaGlzIHRlc3RzIGNhbGxpbmcgZGVjb2RlKCkgZm9yIGEgYW5p
bWF0ZWQgaW1hZ2Ugd2hpY2ggaXMgYWxzbyBhbiBlbGVtZW50IGluIHRoZSBET00gdHJlZS48L3A+
CisgICAgPGNhbnZhcz48L2NhbnZhcz4KKyAgICA8ZGl2PjwvZGl2PgorICAgIDxzY3JpcHQ+Cisg
ICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
ICAgICAgICBpbnRlcm5hbHMuY2xlYXJNZW1vcnlDYWNoZSgpOworICAgICAgICAgICAgaW50ZXJu
YWxzLnNldHRpbmdzLnNldFdlYmtpdEltYWdlUmVhZHlFdmVudEVuYWJsZWQodHJ1ZSk7CisgICAg
ICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAg
IHZhciBpbWFnZSA9IG5ldyBJbWFnZTsKKyAgICAgICAgdmFyIHBhcmVudCA9IGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoImRpdiIpOworICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoaW1hZ2UpOwor
CisgICAgICAgIGltYWdlLm9ubG9hZCA9ICgoKSA9PiB7CisgICAgICAgICAgICBpZiAod2luZG93
LmludGVybmFscyAmJiB3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgIC8vIEZv
cmNlIGxheW91dCBhbmQgZGlzcGxheSBzbyB0aGUgaW1hZ2UgZ2V0cyBkcmF3bi4gVGhlIGltYWdl
IHdpbGwgZHJhdyBpdHMgcmVkIGZyYW1lLgorICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHku
b2Zmc2V0SGVpZ2h0OworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOworCisg
ICAgICAgICAgICAgICAgLy8gV2FpdCB0aWxsIGRlY29kaW5nIHRoZSBuZXh0IChncmVlbikgZnJh
bWUgZmluaXNoZXMgYW5kIHRoZSBhbmltYXRpb24gYWR2YW5jZXMgdG8gaXQuCisgICAgICAgICAg
ICAgICAgaW1hZ2UuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0SW1hZ2VGcmFtZVJlYWR5IiwgZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXF1ZXN0IGRlY29kaW5nIHRoZSBuZXh0IChibHVl
KSBmcmFtZS4gV2FpdCB0aWxsIGRlY29kaW5nIGZpbmlzaGVzIGFuZCB0aGUKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGFuaW1hdGlvbiBhZHZhbmNlcyB0byBpdC4KKyAgICAgICAgICAgICAg
ICAgICAgICAgIGltYWdlLmRlY29kZSgpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29udGV4dCA9IGNhbnZhcy5nZXRDb250
ZXh0KCIyZCIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdl
KGltYWdlLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBhcmVudC5yZW1vdmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIGltYWdlLnNyYyA9ICJyZXNvdXJjZXMvYW5p
bWF0ZWQtcmVkLWdyZWVuLWJsdWUtcmVwZWF0LTIuZ2lmIjsKKyAgICA8L3NjcmlwdD4KKzwvYm9k
eT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1yZW5kZXItc3Rh
dGljLWltYWdlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUt
cmVuZGVyLXN0YXRpYy1pbWFnZS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiNWNlNjYzZjc5
ZGE3YjFkMzZmZjg2YzdmNWI4ODA2N2I5M2ZmN2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtcmVuZGVyLXN0YXRpYy1pbWFnZS1leHBlY3RlZC5odG1s
CkBAIC0wLDAgKzEsMTEgQEAKKzxzdHlsZT4KKyAgICBkaXYgeworICAgICAgICB3aWR0aDogMjAw
cHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdy
ZWVuOworICAgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKwk8cD5UaGlzIHRlc3RzIGNhbGxpbmcgZGVj
b2RlKCkgZm9yIGEgc3RhdGljIGltYWdlIHdoaWNoIGlzIGFsc28gYW4gZWxlbWVudCBpbiB0aGUg
RE9NIHRyZWUuPC9wPgorICAgIDxkaXY+PC9kaXY+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtcmVuZGVyLXN0YXRpYy1pbWFnZS5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RlLXJlbmRlci1zdGF0aWMtaW1hZ2UuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42YzJiMTQ4NTBjMThkNTZkN2JmMzFiNmFiYTI3NjBhZDc3OWEyNGQyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RlLXJlbmRlci1zdGF0aWMt
aW1hZ2UuaHRtbApAQCAtMCwwICsxLDU2IEBACis8c3R5bGU+CisgICAgZGl2IHsKKyAgICAgICAg
d2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKyAgICBpbWcgewor
ICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CisgICAgICAgIG1heC1oZWlnaHQ6IDEwMCU7CisgICAg
fQorPC9zdHlsZT4KKzxib2R5PgorICAgIDxwPlRoaXMgdGVzdHMgY2FsbGluZyBkZWNvZGUoKSBm
b3IgYSBzdGF0aWMgaW1hZ2Ugd2hpY2ggaXMgYWxzbyBhbiBlbGVtZW50IGluIHRoZSBET00gdHJl
ZS48L3A+CisgICAgPGRpdj48L2Rpdj4KKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93
LmludGVybmFscyAmJiB3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgaW50ZXJuYWxz
LmNsZWFyTWVtb3J5Q2FjaGUoKTsKKyAgICAgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRX
ZWJraXRJbWFnZVJlYWR5RXZlbnRFbmFibGVkKHRydWUpOworICAgICAgICAgICAgaW50ZXJuYWxz
LnNldHRpbmdzLnNldExhcmdlSW1hZ2VBc3luY0RlY29kaW5nRW5hYmxlZCh0cnVlKTsKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAg
dmFyIGltYWdlID0gbmV3IEltYWdlOworICAgICAgICB2YXIgcGFyZW50ID0gZG9jdW1lbnQucXVl
cnlTZWxlY3RvcigiZGl2Iik7CisgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChpbWFnZSk7CisK
KyAgICAgICAgaW1hZ2Uub25sb2FkID0gKCgpID0+IHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzICYmIHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgICAgLy8gRm9y
Y2UgYXN5bmMgaW1hZ2UgZGVjb2RpbmcgZm9yIHRoaXMgaW1hZ2UuCisgICAgICAgICAgICAgICAg
aW50ZXJuYWxzLnNldExhcmdlSW1hZ2VBc3luY0RlY29kaW5nRW5hYmxlZEZvclRlc3RpbmcoaW1h
Z2UsIHRydWUpOworCisgICAgICAgICAgICAgICAgLy8gRm9yY2UgbGF5b3V0IGFuZCBkaXNwbGF5
IHNvIHRoZSBpbWFnZSBnZXRzIGRyYXduLgorICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHku
b2Zmc2V0SGVpZ2h0OworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOworCisg
ICAgICAgICAgICAgICAgLy8gdGVzdFJ1bm5lci5kaXNwbGF5KCkgcmVxdWVzdHMgYW4gYXN5bmMg
aW1hZ2UgZGVjb2RpbmcuIFdhaXQgdGlsbCBpdCBmaW5pc2hlcy4KKyAgICAgICAgICAgICAgICBp
bWFnZS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRJbWFnZUZyYW1lUmVhZHkiLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRXhlY3V0ZSB0aGlzIGNvZGUgaW4gdGhlIG5leHQg
bG9vcCBydW4uCisgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmRpc3BsYXkoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFRoZSBpbWFnZSBmcmFtZSB3YXMgZGVjb2RlZCBmb3IgdGhlIHJlbmRl
cmVyIHdoaWNoIGlzICgxMDB4MTAwKS4gVGhpcworICAgICAgICAgICAgICAgICAgICAgICAgLy8g
ZGVjb2RlKCkgd2lsbCByZXF1ZXN0IGEgbmV3IGRlY29kaW5nIHdpdGggdGhlIG5hdGl2ZSBzaXpl
IHdoaWNoIGlzICg0MDB4NDAwKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlLmRlY29k
ZSgpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5zdHls
ZS53aWR0aCA9ICIyMDBweCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LnN0
eWxlLmhlaWdodCA9ICIyMDBweCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm8g
ZXh0cmEgZGVjb2RpbmcgaXMgcmVxdWlyZWQgdG8gZGlzcGxheSB0aGUgaW1hZ2UgYWZ0ZXIgY2hh
bmdpbmcgaXRzIHNpemUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGltYWdl
IGZyYW1lIHdhcyBkZWNvZGVkIHdpdGggdGhlIG5hdGl2ZSBzaXplIHdoaWNoIGlzIHRoZSBtYXhp
bXVtIHNpemUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0IGFuIGltYWdlIGNh
biBiZSBkZWNvZGVkIHdpdGguCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
ICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0pOworICAgICAgICBpbWFnZS5zcmMgPSAicmVzb3VyY2VzL2dyZWVuLTQwMHg0MDAucG5n
IjsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL2RlY29kZS1zdGF0aWMtaW1hZ2UtcmVqZWN0LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtc3RhdGljLWltYWdlLXJlamVjdC1leHBlY3RlZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQxMzljZWY5ZjEzNjZiNGY0OTg0YTFkMGIzYTY1OTc0Njg4ZDgyZTMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtc3RhdGljLWlt
YWdlLXJlamVjdC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzxzdHlsZT4KKyAgICBk
aXYgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAg
ICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKKyAgICB9Cis8L3N0eWxlPgorPGJvZHk+CisgICAg
PHA+VGhpcyB0ZXN0cyByZWplY3RpbmcgdGhlIGRlY29kZSgpIHByb21pc2Ugd2hlbiBsb2FkaW5n
IHRoZSBpbWFnZSBmYWlsczwvcD4KKyAgICA8ZGl2PjwvZGl2PgorICAgIDxoMj5FbmNvZGluZ0Vy
cm9yOiBJbnZhbGlkIGltYWdlLjwvaDI+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2ltYWdlcy9kZWNvZGUtc3RhdGljLWltYWdlLXJlamVjdC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9pbWFnZXMvZGVjb2RlLXN0YXRpYy1pbWFnZS1yZWplY3QuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lYTQ0YTNiOGNmZjVmOTA2YWM0ZDgxYTNmMDQ0MDVhYzY1NTY2M2UyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RlLXN0YXRpYy1pbWFnZS1yZWplY3Qu
aHRtbApAQCAtMCwwICsxLDIzIEBACis8c3R5bGU+CisgICAgY2FudmFzIHsKKyAgICAgICAgd2lk
dGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNv
bG9yOiByZWQ7CisgICAgfQorPC9zdHlsZT4KKzxib2R5PgorICAgIDxwPlRoaXMgdGVzdHMgcmVq
ZWN0aW5nIHRoZSBkZWNvZGUoKSBwcm9taXNlIHdoZW4gbG9hZGluZyB0aGUgaW1hZ2UgZmFpbHM8
L3A+CisgICAgPGNhbnZhcz48L2NhbnZhcz4KKyAgICA8ZGl2PjwvZGl2PgorICAgIDxzY3JpcHQ+
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOworICAgICAgICB2YXIgaW1hZ2UgPSBuZXcgSW1hZ2U7CisgICAgICAg
IGltYWdlLnNyYyA9ICJ3cm9uZ25hbWUucG5nIjsKKyAgICAgICAgaW1hZ2UuZGVjb2RlKCkuY2F0
Y2goKGUpID0+IHsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdiIpLmlu
bmVySFRNTCA9ICAiPGgyPiIgKyBlICsgIjxoMj4iOworICAgICAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAg
ICAgICB9KTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvaW1hZ2VzL2RlY29kZS1zdGF0aWMtaW1hZ2UtcmVzb2x2ZS1leHBlY3RlZC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RlLXN0YXRpYy1pbWFnZS1yZXNvbHZlLWV4cGVj
dGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDdjNjQ2NTZmMjY3MjYyM2NhOTYxNjc0MDIyN2U4NGUzODc2
MDkwZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1z
dGF0aWMtaW1hZ2UtcmVzb2x2ZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzxzdHls
ZT4KKyAgICBkaXYgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAw
cHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgIH0KKzwvc3R5bGU+Cis8
Ym9keT4KKyAgICA8cD5UaGlzIHRlc3RzIHJlc29sdmluZyB0aGUgZGVjb2RlKCkgcHJvbWlzZSB3
aGVuIGxvYWRpbmcgYW5kIGRlY29kaW5nIGEgc3RhdGljIGltYWdlIHN1Y2NlZWRzLjwvcD4KKyAg
ICA8ZGl2PjwvZGl2PgorPC9ib2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1zdGF0aWMtaW1hZ2UtcmVzb2x2
ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RlLXN0YXRpYy1pbWFnZS1yZXNv
bHZlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdmOGEzODBhMzU0YzNmODU0YTZlYmZkN2QyYTU4OGMwZjU1
ZDUxOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1z
dGF0aWMtaW1hZ2UtcmVzb2x2ZS5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxzdHlsZT4KKyAgICBj
YW52YXMgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7Cisg
ICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKKyAgICB9Cis8L3N0eWxlPgorPGJvZHk+Cisg
ICAgPHA+VGhpcyB0ZXN0cyByZXNvbHZpbmcgdGhlIGRlY29kZSgpIHByb21pc2Ugd2hlbiBsb2Fk
aW5nIGFuZCBkZWNvZGluZyBhIHN0YXRpYyBpbWFnZSBzdWNjZWVkcy48L3A+CisgICAgPGNhbnZh
cz48L2NhbnZhcz4KKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgdmFyIGlt
YWdlID0gbmV3IEltYWdlOworICAgICAgICBpbWFnZS5zcmMgPSAicmVzb3VyY2VzL2dyZWVuLTQw
MHg0MDAucG5nIjsKKyAgICAgICAgaW1hZ2UuZGVjb2RlKCkudGhlbigoKSA9PiB7CisgICAgICAg
ICAgICBsZXQgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFzIik7CisgICAg
ICAgICAgICBsZXQgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOworICAgICAgICAg
ICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhl
aWdodCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0pOworICAgIDwvc2NyaXB0Pgor
PC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319232</attachid>
            <date>2017-08-28 19:28:54 -0700</date>
            <delta_ts>2017-09-08 18:32:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176016-20170828192853.patch</filename>
            <type>text/plain</type>
            <size>27868</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMDg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDhhMDVlNDVjMjZiNzMy
ZWI0ZWJkNTc5ZDFiM2RiMzlmMGJlYTY5Mi4uOTg2ZjA0ZjFkMzhlZWQ1YzNmZGU5OTRlNzUwZTk5
OGMwNzEzNjVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE3LTA4LTI4ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVt
ZW50IEhUTUxJbWFnZUVsZW1lbnQuZGVjb29kZSgpIG1ldGhvZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MDE2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHNwZWNzIGlzOgorICAgICAgICBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9lbWJlZGRlZC1jb250ZW50Lmh0bWwj
ZG9tLWltZy1kZWNvZGUuCisKKyAgICAgICAgLS0gaW1nLmRlY29kZSgpIHdhaXRzIHRpbGwgbG9h
ZGluZyB0aGUgaW1hZ2UgZmluaXNoZXMuIE90aGVyd2lzZSBpdCBzdGFydHMKKyAgICAgICAgaW1t
ZWRpYXRlbHkuCisgICAgICAgIC0tIElmIHRoZSBpbWFnZSBmcmFtZSBpcyBhbHJlYWR5IGRlY29k
ZWQsIHRoZSBwcm9taXNlIHdpbGwgYmUgcmVzb2x2ZWQKKyAgICAgICAgYmVmb3JlIHJldHVybi4K
KyAgICAgICAgLS0gSWYgYW4gZXJyb3IgaGFwcGVucyBpbiBsb2FkaW5nIHRoZSBpbWFnZSBvciBk
ZWNvZGluZyB0aGUgaW1hZ2UgZnJhbWUsCisgICAgICAgIHRoZSBwcm9taXNlIHdpbGwgYmUgcmVq
ZWN0ZWQgd2l0aCAnRW5jb2RpbmdFcnJvcicgZXhjZXB0aW9uLgorICAgICAgICAtLSBBbmltYXRl
ZCBpbWFnZSByZXNvbHZlcyB0aGUgcHJvbWlzZSB3aGVuIHRoZSBuZXh0IGZyYW1lIGlzIGRlY29k
ZWQgYW5kIAorICAgICAgICB0aGUgYW5pbWF0aW9uIGlzIGFkdmFuY2VkIGl0LiBJZiB0aGUgaW1h
Z2UgaXMgbm90IGRpc3BsYXllZCwgZGVjb2RlKCkgd2lsbAorICAgICAgICByZXF1ZXN0IHRoZSBk
ZWNvZGluZyB0aGUgZmlyc3QgZnJhbWUgYW5kIHN0YXJ0IGFuaW1hdGluZyB0aGUgaW1hZ2UuCisK
KyAgICAgICAgVGVzdHM6IGZhc3QvaW1hZ2VzL2RlY29kZS1hbmltYXRlZC1pbWFnZS5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2ltYWdlcy9kZWNvZGUtcmVuZGVyLWFuaW1hdGVkLWltYWdlLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvaW1hZ2VzL2RlY29kZS1yZW5kZXItc3RhdGljLWltYWdl
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvaW1hZ2VzL2RlY29kZS1zdGF0aWMtaW1hZ2UtcmVq
ZWN0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvaW1hZ2VzL2RlY29kZS1zdGF0aWMtaW1hZ2Ut
cmVzb2x2ZS5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6ZGVjb2RlKToKKyAgICAgICAgKiBodG1s
L0hUTUxJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRs
OgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2Fk
ZXI6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6ZGVjb2RlRXJyb3Ip
OgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VMb2FkZXI6Omhhc1BlbmRpbmdEZWNvZGVQcm9taXNlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6aW50ZXJuYWxTdGFydEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6aW50ZXJuYWxBZHZhbmNlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmltYWdlRnJh
bWVBdmFpbGFibGVBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZTo6ZGVjb2RlKToKKwogMjAxNy0wOC0yMyAgVGltIEhvcnRvbiAgPHRpbW90
aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBUcnkgdG8gZml4IHRoZSBXaW5DYWlybyBi
dWlsZCBhZnRlciByMjIxMDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNw
cAppbmRleCAzOGZmM2M5ZTA0MmY1YTdkODA3NmE3OTU4ZTQ5NzYzMjhlYTk4ZWQ1Li44YzFmNTZm
ZDc0Zjg0MjcwZmI2ZTQxZjNjMWI4NTAxNDFhNzMwYjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTUzOCw2ICs1MzgsMTEgQEAgYm9vbCBIVE1MSW1hZ2VF
bGVtZW50Ojpjb21wbGV0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW1hZ2VMb2FkZXIuaW1hZ2VD
b21wbGV0ZSgpOwogfQogCit2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmRlY29kZShSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UpCit7CisgICAgcmV0dXJuIG1faW1hZ2VMb2FkZXIuZGVjb2Rl
KFdURk1vdmUocHJvbWlzZSkpOworfQorCiB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmFkZFN1YnJl
c291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAg
IEhUTUxFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHModXJscyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCmluZGV4IGJmYmRlOTBmM2M1MzY3Nzc4ZmE5ODRl
ZGVlZGNkOTdkY2YxZmJhZTUuLmNlOTY1ZTE5NTIzOTgzNTA1NDE2NzgxMmRiYzI3ZmU1ZmI4Mzg3
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCkBAIC03OSw2ICs3OSw4
IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29tcGxldGUoKSBjb25zdDsK
IAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVjb2RlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYp
OworCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tF
dmVudHMoKSBvdmVycmlkZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxl
bWVudC5pZGwKaW5kZXggMDk3ZjJhNDU0YWNiNjIxNjU5NDBjZDE5ZWI3ZjVlMjZhODM1MjIyMi4u
NmNkMTZhMzdiNjQ1NDRiMGM5MGRiYzczYTQ0MTIxMDA0ZjQzOGZiZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsCkBAIC00OCw1ICs0OCw3IEBACiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGxvbmcgbmF0dXJhbFdpZHRoOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBs
b25nIHg7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgeTsKKworICAgIFByb21pc2U8dm9p
ZD4gZGVjb2RlKCk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1h
Z2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAppbmRl
eCAxNjVjOTE5OWY3ZGYxMzU2ZjQwZGQzN2IwMzdjMjE5YzJhNjBmYzdhLi41MjJiZTFlNzI2MTYx
ZTEzZGZhNjI0Yzc1MDEwZDBjYjg0ZTZlNzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxv
YWRlci5jcHAKQEAgLTI5MSw2ICsyOTEsOSBAQCB2b2lkIEltYWdlTG9hZGVyOjpub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxTdHJpbmc+IGNvbnNvbGVNZXNzYWdlKE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJDcm9z
cy1vcmlnaW4gaW1hZ2UgbG9hZCBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJp
bmcgcG9saWN5LiIpKTsKICAgICAgICAgZWxlbWVudCgpLmRvY3VtZW50KCkuYWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGNvbnNv
bGVNZXNzYWdlKTsKIAorICAgICAgICBpZiAoaGFzUGVuZGluZ0RlY29kZVByb21pc2VzKCkpCisg
ICAgICAgICAgICBkZWNvZGVFcnJvcigiQWNjZXNzIGNvbnRyb2wgZXJyb3IuIik7CisgICAgICAg
IAogICAgICAgICBBU1NFUlQoIW1faGFzUGVuZGluZ0xvYWRFdmVudCk7CiAKICAgICAgICAgLy8g
T25seSBjb25zaWRlciB1cGRhdGluZyB0aGUgcHJvdGVjdGlvbiByZWYtY291bnQgb2YgdGhlIEVs
ZW1lbnQgaW1tZWRpYXRlbHkgYmVmb3JlIHJldHVybmluZwpAQCAtMzAwLDYgKzMwMyw4IEBAIHZv
aWQgSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkK
ICAgICB9CiAKICAgICBpZiAobV9pbWFnZS0+d2FzQ2FuY2VsZWQoKSkgeworICAgICAgICBpZiAo
aGFzUGVuZGluZ0RlY29kZVByb21pc2VzKCkpCisgICAgICAgICAgICBkZWNvZGVFcnJvcigiTG9h
ZGluZyB3YXMgY2FuY2VsZWQuIik7CiAgICAgICAgIG1faGFzUGVuZGluZ0xvYWRFdmVudCA9IGZh
bHNlOwogICAgICAgICAvLyBPbmx5IGNvbnNpZGVyIHVwZGF0aW5nIHRoZSBwcm90ZWN0aW9uIHJl
Zi1jb3VudCBvZiB0aGUgRWxlbWVudCBpbW1lZGlhdGVseSBiZWZvcmUgcmV0dXJuaW5nCiAgICAg
ICAgIC8vIGZyb20gdGhpcyBmdW5jdGlvbiBhcyBkb2luZyBzbyBtaWdodCByZXN1bHQgaW4gdGhl
IGRlc3RydWN0aW9uIG9mIHRoaXMgSW1hZ2VMb2FkZXIuCkBAIC0zMDcsNiArMzEyLDggQEAgdm9p
ZCBJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKGhhc1BlbmRpbmdEZWNvZGVQcm9taXNl
cygpKQorICAgICAgICBkZWNvZGUoKTsKICAgICBsb2FkRXZlbnRTZW5kZXIoKS5kaXNwYXRjaEV2
ZW50U29vbigqdGhpcyk7CiB9CiAKQEAgLTM2OSw2ICszNzYsNTkgQEAgdm9pZCBJbWFnZUxvYWRl
cjo6dXBkYXRlZEhhc1BlbmRpbmdFdmVudCgpCiAgICAgfSAgIAogfQogCit2b2lkIEltYWdlTG9h
ZGVyOjpkZWNvZGUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQoreworICAgIG1fZGVj
b2RpbmdQcm9taXNlcy5hcHBlbmQoV1RGTW92ZShwcm9taXNlKSk7CisgICAgCisgICAgaWYgKCFl
bGVtZW50KCkuZG9jdW1lbnQoKS5kb21XaW5kb3coKSkgeworICAgICAgICBkZWNvZGVFcnJvcigi
SW5hY3RpdmUgZG9jdW1lbnQuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAg
QXRvbWljU3RyaW5nIGF0dHIgPSBlbGVtZW50KCkuaW1hZ2VTb3VyY2VVUkwoKTsKKyAgICBpZiAo
YXR0ci5pc051bGwoKSB8fCBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0ciku
aXNFbXB0eSgpKSB7CisgICAgICAgIGRlY29kZUVycm9yKCJNaXNzaW5nIHNvdXJjZSBVUkwuIik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKG1faW1hZ2VDb21wbGV0ZSkK
KyAgICAgICAgZGVjb2RlKCk7Cit9CisKK3ZvaWQgSW1hZ2VMb2FkZXI6OmRlY29kZUVycm9yKFN0
cmluZyYmIG1lc3NhZ2UpCit7CisgICAgQVNTRVJUKGhhc1BlbmRpbmdEZWNvZGVQcm9taXNlcygp
KTsKKyAgICBmb3IgKGF1dG8mIHByb21pc2UgOiBtX2RlY29kaW5nUHJvbWlzZXMpCisgICAgICAg
IHByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBFbmNvZGluZ0Vycm9yLCBXVEZNb3ZlKG1lc3Nh
Z2UpIH0pOworICAgIG1fZGVjb2RpbmdQcm9taXNlcy5jbGVhcigpOworfQorCit2b2lkIEltYWdl
TG9hZGVyOjpkZWNvZGUoKQoreworICAgIEFTU0VSVChoYXNQZW5kaW5nRGVjb2RlUHJvbWlzZXMo
KSk7CisgICAgCisgICAgaWYgKCFlbGVtZW50KCkuZG9jdW1lbnQoKS5kb21XaW5kb3coKSkgewor
ICAgICAgICBkZWNvZGVFcnJvcigiSW5hY3RpdmUgZG9jdW1lbnQuIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBJbWFnZSogaW1hZ2UgPSBtX2ltYWdlLT5pbWFnZSgpOworICAgIGlm
ICghaW1hZ2UgfHwgbV9pbWFnZS0+ZXJyb3JPY2N1cnJlZCgpKSB7CisgICAgICAgIGRlY29kZUVy
cm9yKCJMb2FkaW5nIGVycm9yLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KCFpbWFnZS0+aXNCaXRtYXBJbWFnZSgpKSB7CisgICAgICAgIGRlY29kZUVycm9yKCJJbnZhbGlk
IGltYWdlIHR5cGUuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaW1hZ2Ut
PmRlY29kZShbcHJvbWlzZXMgPSBXVEZNb3ZlKG1fZGVjb2RpbmdQcm9taXNlcyldKCkgbXV0YWJs
ZSB7CisgICAgICAgIGZvciAoYXV0byYgcHJvbWlzZSA6IHByb21pc2VzKQorICAgICAgICAgICAg
cHJvbWlzZS0+cmVzb2x2ZSgpOworICAgIH0pOworfQorCiB2b2lkIEltYWdlTG9hZGVyOjp0aW1l
ckZpcmVkKCkKIHsKICAgICBtX3Byb3RlY3RlZEVsZW1lbnQgPSBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvSW1hZ2VMb2FkZXIuaAppbmRleCA3NzE3NjY3ZjY3NzBkZTc0NjNiNDg2MGEwZTcwODRm
YzUwNzkxMzlkLi5kMDM5OTAyNTk3MmRjZGQ4MzRjYjYxMWMyYTU4MjZmN2Q2ZWJmOWE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaApAQCAtMjQsNyArMjQsOSBAQAogCiAjaW5jbHVk
ZSAiQ2FjaGVkSW1hZ2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5o
IgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIK
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU4LDYgKzYwLDggQEAgcHVibGljOgogCiAg
ICAgQ2FjaGVkSW1hZ2UqIGltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsgfQog
ICAgIHZvaWQgY2xlYXJJbWFnZSgpOyAvLyBDYW5jZWxzIHBlbmRpbmcgYmVmb3JlbG9hZCBhbmQg
bG9hZCBldmVudHMsIGFuZCBkb2Vzbid0IGRpc3BhdGNoIG5ldyBvbmVzLgorICAgIAorICAgIHZv
aWQgZGVjb2RlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogCiAgICAgdm9pZCBzZXRMb2FkTWFu
dWFsbHkoYm9vbCBsb2FkTWFudWFsbHkpIHsgbV9sb2FkTWFudWFsbHkgPSBsb2FkTWFudWFsbHk7
IH0KIApAQCAtOTAsNiArOTQsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFySW1hZ2VXaXRo
b3V0Q29uc2lkZXJpbmdQZW5kaW5nTG9hZEV2ZW50KCk7CiAgICAgdm9pZCBjbGVhckZhaWxlZExv
YWRVUkwoKTsKIAorICAgIGJvb2wgaGFzUGVuZGluZ0RlY29kZVByb21pc2VzKCkgY29uc3QgeyBy
ZXR1cm4gIW1fZGVjb2RpbmdQcm9taXNlcy5pc0VtcHR5KCk7IH0KKyAgICB2b2lkIGRlY29kZUVy
cm9yKFN0cmluZyYmKTsKKyAgICB2b2lkIGRlY29kZSgpOworICAgIAogICAgIHZvaWQgdGltZXJG
aXJlZCgpOwogCiAgICAgRWxlbWVudCYgbV9lbGVtZW50OwpAQCAtOTcsNiArMTA1LDcgQEAgcHJp
dmF0ZToKICAgICBUaW1lciBtX2RlcmVmRWxlbWVudFRpbWVyOwogICAgIFJlZlB0cjxFbGVtZW50
PiBtX3Byb3RlY3RlZEVsZW1lbnQ7CiAgICAgQXRvbWljU3RyaW5nIG1fZmFpbGVkTG9hZFVSTDsK
KyAgICBWZWN0b3I8UmVmUHRyPERlZmVycmVkUHJvbWlzZT4sIDE+IG1fZGVjb2RpbmdQcm9taXNl
czsKICAgICBib29sIG1faGFzUGVuZGluZ0JlZm9yZUxvYWRFdmVudCA6IDE7CiAgICAgYm9vbCBt
X2hhc1BlbmRpbmdMb2FkRXZlbnQgOiAxOwogICAgIGJvb2wgbV9oYXNQZW5kaW5nRXJyb3JFdmVu
dCA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHAKaW5kZXggNWMwOGU0YjAwNjI3N2YwZDQxYTY1OWExNjdmNzZmMzc5YzI0Zjg5Ni4uMWQ3
ZmNhYjY0YjVhNDNhYjFiMzUyOWNiY2Q0ZDNmMmZhMTJhNWIzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtNDY1LDYgKzQ2NSwx
MSBAQCB2b2lkIEJpdG1hcEltYWdlOjppbnRlcm5hbEFkdmFuY2VBbmltYXRpb24oKQogICAgIERl
Y29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzID0gZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgo
bV9jdXJyZW50RnJhbWUpOwogICAgIHNldEN1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzSWZOZWNl
c3NhcnkoZGVjb2RpbmdTdGF0dXMpOwogICAgIAorICAgIGlmIChtX2RlY29kZUNhbGxiYWNrKSB7
CisgICAgICAgIG1fZGVjb2RlQ2FsbGJhY2soKTsKKyAgICAgICAgbV9kZWNvZGVDYWxsYmFjayA9
IG51bGxwdHI7CisgICAgfQorCiAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgaW1h
Z2VPYnNlcnZlcigpLT5pbWFnZUZyYW1lQXZhaWxhYmxlKCp0aGlzLCBJbWFnZUFuaW1hdGluZ1N0
YXRlOjpZZXMsIG51bGxwdHIsIGRlY29kaW5nU3RhdHVzKTsKIApAQCAtNDk3LDYgKzUwMiw0MSBA
QCB2b2lkIEJpdG1hcEltYWdlOjpyZXNldEFuaW1hdGlvbigpCiAgICAgZGVzdHJveURlY29kZWRE
YXRhSWZOZWNlc3NhcnkodHJ1ZSk7CiB9CiAKK3ZvaWQgQml0bWFwSW1hZ2U6OmRlY29kZShXVEY6
OkZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAobV9kZWNvZGVDYWxsYmFj
aykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kZWNvZGVDYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spOworCisgICAgaWYgKCFjYW5BbmltYXRlKCkpIHsKKyAgICAgICAgYm9vbCBmcmFtZUlz
Q29tcGF0aWJsZSA9IGZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRp
b25zQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCwgc3Rk
OjpvcHRpb25hbDxJbnRTaXplPigpKTsKKyAgICAgICAgYm9vbCBmcmFtZUlzQmVpbmdEZWNvZGVk
ID0gZnJhbWVJc0JlaW5nRGVjb2RlZEFuZElzQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleCht
X2N1cnJlbnRGcmFtZSwgc3RkOjpvcHRpb25hbDxJbnRTaXplPigpKTsKKyAgICAKKyAgICAgICAg
aWYgKGZyYW1lSXNDb21wYXRpYmxlKSB7CisgICAgICAgICAgICBtX2RlY29kZUNhbGxiYWNrKCk7
CisgICAgICAgICAgICBtX2RlY29kZUNhbGxiYWNrID0gbnVsbHB0cjsKKyAgICAgICAgfSBlbHNl
IGlmICghZnJhbWVJc0JlaW5nRGVjb2RlZCkgeworICAgICAgICAgICAgbV9zb3VyY2UucmVxdWVz
dEZyYW1lQXN5bmNEZWNvZGluZ0F0SW5kZXgobV9jdXJyZW50RnJhbWUsIG1fY3VycmVudFN1YnNh
bXBsaW5nTGV2ZWwsIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4oKSk7CisgICAgICAgICAgICBtX2N1
cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkRlY29kaW5nOworICAg
ICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gVGhlIGFuaW1hdGVkIGltYWdlIG1heSBu
b3QgYmUgZGlzcGxheWVkLiBJbiB0aGlzIGNhc2UsIGVpdGhlciB0aGUgZmlyc3QgZnJhbWUgaGFz
IG5vdCBiZWVuIGRlY29kZWQgeWV0IG9yIHRoZSBhbmltYXRpb24gaGFzIG5vdCBzdGFydGVkIHll
dC4KKyAgICAgICAgaWYgKCFtX2Rlc2lyZWRGcmFtZVN0YXJ0VGltZSkgeworICAgICAgICAgICAg
Ym9vbCBmcmFtZUlzQ29tcGF0aWJsZSA9IGZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0
aWJsZVdpdGhPcHRpb25zQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxp
bmdMZXZlbCwgc3RkOjpvcHRpb25hbDxJbnRTaXplPigpKTsKKyAgICAgICAgICAgIGJvb2wgZnJh
bWVJc0JlaW5nRGVjb2RlZCA9IGZyYW1lSXNCZWluZ0RlY29kZWRBbmRJc0NvbXBhdGlibGVXaXRo
T3B0aW9uc0F0SW5kZXgobV9jdXJyZW50RnJhbWUsIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4oKSk7
CisKKyAgICAgICAgICAgIGlmIChmcmFtZUlzQ29tcGF0aWJsZSkKKyAgICAgICAgICAgICAgICBp
bnRlcm5hbFN0YXJ0QW5pbWF0aW9uKCk7CisgICAgICAgICAgICBlbHNlIGlmICghZnJhbWVJc0Jl
aW5nRGVjb2RlZCkgeworICAgICAgICAgICAgICAgIG1fc291cmNlLnJlcXVlc3RGcmFtZUFzeW5j
RGVjb2RpbmdBdEluZGV4KG1fY3VycmVudEZyYW1lLCBtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVs
LCBzdGQ6Om9wdGlvbmFsPEludFNpemU+KCkpOworICAgICAgICAgICAgICAgIG1fY3VycmVudEZy
YW1lRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6RGVjb2Rpbmc7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgaW50ZXJuYWxTdGFydEFuaW1hdGlvbigp
OworICAgIH0KK30KKwogdm9pZCBCaXRtYXBJbWFnZTo6aW1hZ2VGcmFtZUF2YWlsYWJsZUF0SW5k
ZXgoc2l6ZV90IGluZGV4KQogewogICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZTo6JXMgLSAl
cCAtIHVybDogJXMgW3JlcXVlc3RlZCBmcmFtZSAlbGQgaXMgbm93IGF2YWlsYWJsZV0iLCBfX0ZV
TkNUSU9OX18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGluZGV4
KTsKQEAgLTUyNCwxMCArNTY0LDE2IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmltYWdlRnJhbWVBdmFp
bGFibGVBdEluZGV4KHNpemVfdCBpbmRleCkKIAogICAgIERlY29kaW5nU3RhdHVzIGRlY29kaW5n
U3RhdHVzID0gZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgobV9jdXJyZW50RnJhbWUpOwogICAg
IHNldEN1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzSWZOZWNlc3NhcnkoZGVjb2RpbmdTdGF0dXMp
OwotICAgIAorCiAgICAgaWYgKG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPT0gRGVjb2Rp
bmdTdGF0dXM6OkNvbXBsZXRlKQogICAgICAgICArK21fZGVjb2RlQ291bnRGb3JUZXN0aW5nOwog
CisgICAgLy8gQ2FsbCB0aGUgbV9kZWNvZGVDYWxsYmFjayBvbmx5IGlmIHRoZSBpbWFnZSBmcmFt
ZSB3YXMgZGVjb2RlZCB3aXRoIHRoZSBuYXRpdmUgc2l6ZS4KKyAgICBpZiAobV9kZWNvZGVDYWxs
YmFjayAmJiBmcmFtZUhhc0RlY29kZWROYXRpdmVJbWFnZUNvbXBhdGlibGVXaXRoT3B0aW9uc0F0
SW5kZXgobV9jdXJyZW50RnJhbWUsIG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwsIHN0ZDo6b3B0
aW9uYWw8SW50U2l6ZT4oKSkpIHsKKyAgICAgICAgbV9kZWNvZGVDYWxsYmFjaygpOworICAgICAg
ICBtX2RlY29kZUNhbGxiYWNrID0gbnVsbHB0cjsKKyAgICB9CisKICAgICBpZiAoaW1hZ2VPYnNl
cnZlcigpKQogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmltYWdlRnJhbWVBdmFpbGFibGUoKnRo
aXMsIEltYWdlQW5pbWF0aW5nU3RhdGU6Ok5vLCBudWxscHRyLCBkZWNvZGluZ1N0YXR1cyk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAppbmRl
eCA1YTZkZTA5MTVmZjRjYzgyNjE4OWZlZjcxOGE4OGI2MzE5MTU3NzkwLi4yYmU5NWE1NWJiYjM3
NjIzNDFiMTQxYjE4ZmZmN2ZmZDc0NjAwZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKQEAgLTE3OCw4ICsxNzgsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgLy8gYXV0b21hdGljYWxseSBwYXVzZSBvbmNlIGFsbCBvYnNlcnZlcnMgbm8gbG9uZ2Vy
IHdhbnQgdG8gcmVuZGVyIHRoZSBpbWFnZSBhbnl3aGVyZS4KICAgICB2b2lkIHN0b3BBbmltYXRp
b24oKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc2V0QW5pbWF0aW9uKCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBpbWFnZUZyYW1lQXZhaWxhYmxlQXRJbmRleChzaXplX3QpIG92ZXJyaWRlOwotCisgICAg
CiAgICAgLy8gSGFuZGxlIHBsYXRmb3JtLXNwZWNpZmljIGRhdGEKICAgICB2b2lkIGludmFsaWRh
dGVQbGF0Zm9ybURhdGEoKTsKIApAQCAtMTk3LDYgKzE5Niw4IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBjYW5EZXN0cm95RGVjb2RlZERhdGEoKTsKICAgICB2b2lkIHNldEN1cnJlbnRGcmFtZURlY29k
aW5nU3RhdHVzSWZOZWNlc3NhcnkoRGVjb2RpbmdTdGF0dXMpOwogICAgIGJvb2wgaXNCaXRtYXBJ
bWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIGRlY29kZShX
VEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBpbWFnZUZyYW1lQXZh
aWxhYmxlQXRJbmRleChzaXplX3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZHVtcChXVEY6OlRleHRT
dHJlYW0mKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIEFuaW1hdGVkIGltYWdlcyBvdmVyIGEg
Y2VydGFpbiBzaXplIGFyZSBjb25zaWRlcmVkIGxhcmdlIGVub3VnaCB0aGF0IHdlJ2xsIG9ubHkg
aGFuZyBvbiB0byBvbmUgZnJhbWUgYXQgYSB0aW1lLgpAQCAtMjEwLDYgKzIxMSw3IEBAIHByaXZh
dGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRpbWVyPiBtX2ZyYW1lVGltZXI7CiAgICAgUmVwZXRp
dGlvbkNvdW50IG1fcmVwZXRpdGlvbnNDb21wbGV0ZSB7IFJlcGV0aXRpb25Db3VudE5vbmUgfTsg
Ly8gSG93IG1hbnkgcmVwZXRpdGlvbnMgd2UndmUgZmluaXNoZWQuCiAgICAgTW9ub3RvbmljVGlt
ZSBtX2Rlc2lyZWRGcmFtZVN0YXJ0VGltZTsgLy8gVGhlIHN5c3RlbSB0aW1lIGF0IHdoaWNoIHdl
IGhvcGUgdG8gc2VlIHRoZSBuZXh0IGNhbGwgdG8gc3RhcnRBbmltYXRpb24oKS4KKyAgICBXVEY6
OkZ1bmN0aW9uPHZvaWQoKT4gbV9kZWNvZGVDYWxsYmFjazsKIAogICAgIFNlY29uZHMgbV9mcmFt
ZURlY29kaW5nRHVyYXRpb25Gb3JUZXN0aW5nOwogICAgIE1vbm90b25pY1RpbWUgbV9kZXNpcmVk
RnJhbWVEZWNvZGVUaW1lRm9yVGVzdGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5oCmluZGV4IDUwMjk2ODQ2MDQ3Yjk5ZDkyZGUyOTIzZDU4MjkwZTlkN2Q5MTU5ZGQu
LmU2N2VlOWExY2Q1YzEyMjJmMjc0ZWYzMTE5MjI2ZjQyOGE0M2E2N2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMTMzLDEwICsxMzMsMTIgQEAgcHVibGlj
OgogICAgIHZvaWQgc3RhcnRBbmltYXRpb25Bc3luY2hyb25vdXNseSgpOwogICAgIHZpcnR1YWwg
dm9pZCBzdG9wQW5pbWF0aW9uKCkge30KICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltYXRpb24o
KSB7fQotICAgIHZpcnR1YWwgdm9pZCBpbWFnZUZyYW1lQXZhaWxhYmxlQXRJbmRleChzaXplX3Qp
IHsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0FuaW1hdGluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgYm9vbCBhbmltYXRpb25QZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9hbmltYXRp
b25TdGFydFRpbWVyLmlzQWN0aXZlKCk7IH0KLSAgICAKKworICAgIHZpcnR1YWwgdm9pZCBkZWNv
ZGUoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBpbWFnZUZy
YW1lQXZhaWxhYmxlQXRJbmRleChzaXplX3QpIHsgfQorCiAgICAgLy8gVHlwaWNhbGx5IHRoZSBD
YWNoZWRJbWFnZSB0aGF0IG93bnMgdXMuCiAgICAgSW1hZ2VPYnNlcnZlciogaW1hZ2VPYnNlcnZl
cigpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VPYnNlcnZlcjsgfQogICAgIHZvaWQgc2V0SW1hZ2VP
YnNlcnZlcihJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikgeyBtX2ltYWdlT2JzZXJ2ZXIgPSBvYnNl
cnZlcjsgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDRlYjRhYzc1MmM5ZDg5MGIyMWY0ZGM2ODEzOGJkNjcyZTdmY2JiY2Uu
LmMwMjQxMjM5YTU2OTNjYzVkMTliNzgyZTBhNDNiZDA1ZDBkNzNjZTggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMSBAQAorMjAxNy0wOC0yOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBw
bGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBIVE1MSW1hZ2VFbGVtZW50LmRlY29vZGUoKSBt
ZXRob2QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NjAxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
ZmFzdC9pbWFnZXMvZGVjb2RlLWFuaW1hdGVkLWltYWdlLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvaW1hZ2VzL2RlY29kZS1hbmltYXRlZC1pbWFnZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2ltYWdlcy9kZWNvZGUtcmVuZGVyLWFuaW1hdGVkLWltYWdlLWV4cGVj
dGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaW1hZ2VzL2RlY29kZS1yZW5kZXItYW5p
bWF0ZWQtaW1hZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvZGVjb2RlLXJl
bmRlci1zdGF0aWMtaW1hZ2UtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9p
bWFnZXMvZGVjb2RlLXJlbmRlci1zdGF0aWMtaW1hZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9pbWFnZXMvZGVjb2RlLXN0YXRpYy1pbWFnZS1yZWplY3QtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9kZWNvZGUtc3RhdGljLWltYWdlLXJlamVjdC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9kZWNvZGUtc3RhdGljLWltYWdlLXJlc29s
dmUtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvZGVjb2RlLXN0
YXRpYy1pbWFnZS1yZXNvbHZlLmh0bWw6IEFkZGVkLgorCiAyMDE3LTA4LTIzICBNYXR0IExld2lz
ICA8amxld2lzM0BhcHBsZS5jb20+CiAKICAgICAgICAgTWFya2VkIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3RpbWVycy90eXBlLWxvbmctc2V0dGltZW91
dC5odG1sIGFzIGZsYWt5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVj
b2RlLWFuaW1hdGVkLWltYWdlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdl
cy9kZWNvZGUtYW5pbWF0ZWQtaW1hZ2UtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjcwYzI1
OGZlZmUyNmE0ZWNhMWIxN2FkM2M4M2NhMDAwOTMwMzc3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RlLWFuaW1hdGVkLWltYWdlLWV4cGVjdGVkLmh0bWwK
QEAgLTAsMCArMSwxMSBAQAorPHN0eWxlPgorICAgIGRpdiB7CisgICAgICAgIHdpZHRoOiAxMDBw
eDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3Jl
ZW47CisgICAgfQorPC9zdHlsZT4KKzxib2R5PgorCTxwPlRoaXMgdGVzdHMgY2FsbGluZyBkZWNv
ZGUoKSBtdWx0aXBsZSB0aW1lcyBmb3IgYW4gYW5pbWF0ZWQgaW1hZ2UuPC9wPgorICAgIDxkaXY+
PC9kaXY+Cis8L2JvZHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RlLWFuaW1hdGVkLWltYWdlLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtYW5pbWF0ZWQtaW1hZ2UuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wMTUzMjBhNWQzYWEzMGRjMjMwMWNjOGEyODZhZjlkMGY2MTZjZWExCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RlLWFuaW1hdGVkLWltYWdlLmh0bWwK
QEAgLTAsMCArMSwyNyBAQAorPHN0eWxlPgorICAgIGNhbnZhcyB7CisgICAgICAgIHdpZHRoOiAx
MDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9Cis8L3N0eWxlPgorPGJvZHk+Cisg
ICAgPHA+VGhpcyB0ZXN0cyBjYWxsaW5nIGRlY29kZSgpIG11bHRpcGxlIHRpbWVzIGZvciBhbiBh
bmltYXRlZCBpbWFnZS48L3A+CisgICAgPGNhbnZhcz48L2NhbnZhcz4KKyAgICA8c2NyaXB0Pgor
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICAgICAgdmFyIGltYWdlID0gbmV3IEltYWdlOworICAgICAgICBp
bWFnZS5zcmMgPSAicmVzb3VyY2VzL2FuaW1hdGVkLXJlZC1ncmVlbi1ibHVlLXJlcGVhdC0yLmdp
ZiI7CisgICAgICAgIC8vIEZpcnN0IGRlY29kZSgpIHdpbGwgZGVjb2RlIHRoZSByZWQgZnJhbWUu
CisgICAgICAgIGltYWdlLmRlY29kZSgpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgLy8gU2Vj
b25kIGRlY29kZSgpIHdpbGwgZGVjb2RlIHRoZSBncmVlbiBmcmFtZS4KKyAgICAgICAgICAgIGlt
YWdlLmRlY29kZSgpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGxldCBjYW52YXMgPSBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKKyAgICAgICAgICAgICAgICBsZXQgY29u
dGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOworICAgICAgICAgICAgICAgIGNvbnRleHQu
ZHJhd0ltYWdlKGltYWdlLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOworICAg
ICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7Cisg
ICAgPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdl
cy9kZWNvZGUtcmVuZGVyLWFuaW1hdGVkLWltYWdlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2ltYWdlcy9kZWNvZGUtcmVuZGVyLWFuaW1hdGVkLWltYWdlLWV4cGVjdGVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjUwNTBiN2ZmODA0MjgwMjlkMmQ0MTY0MDQ3MWViYmMzZTJjM2Q5MQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1yZW5kZXItYW5p
bWF0ZWQtaW1hZ2UtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDExIEBACis8c3R5bGU+CisgICAg
ZGl2IHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAg
ICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOworICAgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKwk8
cD5UaGlzIHRlc3RzIGNhbGxpbmcgZGVjb2RlKCkgZm9yIGEgYW5pbWF0ZWQgaW1hZ2Ugd2hpY2gg
aXMgYWxzbyBhbiBlbGVtZW50IGluIHRoZSBET00gdHJlZS48L3A+CisgICAgPGRpdj48L2Rpdj4K
KzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1yZW5k
ZXItYW5pbWF0ZWQtaW1hZ2UuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1y
ZW5kZXItYW5pbWF0ZWQtaW1hZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNmM2OTI1MTA4ZDg0MzhhMGM1
MzU0ZmY5MGQ5Yjk2M2MxYWM5NTEwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9pbWFnZXMvZGVjb2RlLXJlbmRlci1hbmltYXRlZC1pbWFnZS5odG1sCkBAIC0wLDAgKzEsNTUg
QEAKKyA8c3R5bGU+CisgICAgIGRpdiB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAg
aGVpZ2h0OiAxMDBweDsKKyAgICB9CisgICAgY2FudmFzIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4
OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFj
azsKKyAgICB9CisgICAgaW1nIHsKKyAgICAgICAgbWF4LXdpZHRoOiAxMDAlOworICAgICAgICBt
YXgtaGVpZ2h0OiAxMDAlOworICAgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKyAgICA8cD5UaGlzIHRl
c3RzIGNhbGxpbmcgZGVjb2RlKCkgZm9yIGEgYW5pbWF0ZWQgaW1hZ2Ugd2hpY2ggaXMgYWxzbyBh
biBlbGVtZW50IGluIHRoZSBET00gdHJlZS48L3A+CisgICAgPGNhbnZhcz48L2NhbnZhcz4KKyAg
ICA8ZGl2PjwvZGl2PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxz
ICYmIHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICBpbnRlcm5hbHMuY2xlYXJNZW1v
cnlDYWNoZSgpOworICAgICAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFdlYmtpdEltYWdl
UmVhZHlFdmVudEVuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBpbWFnZSA9IG5ldyBJbWFnZTsKKyAg
ICAgICAgdmFyIHBhcmVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdiIpOworICAgICAg
ICBwYXJlbnQuYXBwZW5kQ2hpbGQoaW1hZ2UpOworCisgICAgICAgIGltYWdlLm9ubG9hZCA9ICgo
KSA9PiB7CisgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgICAgICAgICAgICAgIC8vIEZvcmNlIGxheW91dCBhbmQgZGlzcGxheSBzbyB0
aGUgaW1hZ2UgZ2V0cyBkcmF3bi4gVGhlIGltYWdlIHdpbGwgZHJhdyBpdHMgcmVkIGZyYW1lLgor
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0OworICAgICAgICAgICAg
ICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOworCisgICAgICAgICAgICAgICAgLy8gV2FpdCB0aWxs
IGRlY29kaW5nIHRoZSBuZXh0IChncmVlbikgZnJhbWUgZmluaXNoZXMgYW5kIHRoZSBhbmltYXRp
b24gYWR2YW5jZXMgdG8gaXQuCisgICAgICAgICAgICAgICAgaW1hZ2UuYWRkRXZlbnRMaXN0ZW5l
cigid2Via2l0SW1hZ2VGcmFtZVJlYWR5IiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBS
ZXF1ZXN0IGRlY29kaW5nIHRoZSBuZXh0IChibHVlKSBmcmFtZS4gV2FpdCB0aWxsIGRlY29kaW5n
IGZpbmlzaGVzIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuaW1hdGlvbiBh
ZHZhbmNlcyB0byBpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlLmRlY29kZSgpLnRo
ZW4oKCkgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjYW52YXMgPSBkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCAwLCAwLCBjYW52YXMud2lkdGgs
IGNhbnZhcy5oZWlnaHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5yZW1v
dmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICB9LCAw
KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAg
ICAgIGltYWdlLnNyYyA9ICJyZXNvdXJjZXMvYW5pbWF0ZWQtcmVkLWdyZWVuLWJsdWUtcmVwZWF0
LTIuZ2lmIjsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvaW1hZ2VzL2RlY29kZS1yZW5kZXItc3RhdGljLWltYWdlLWV4cGVjdGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtcmVuZGVyLXN0YXRpYy1pbWFnZS1leHBlY3Rl
ZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjNiNWNlNjYzZjc5ZGE3YjFkMzZmZjg2YzdmNWI4ODA2N2I5M2Zm
N2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtcmVu
ZGVyLXN0YXRpYy1pbWFnZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzxzdHlsZT4K
KyAgICBkaXYgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7
CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgIH0KKzwvc3R5bGU+Cis8Ym9k
eT4KKwk8cD5UaGlzIHRlc3RzIGNhbGxpbmcgZGVjb2RlKCkgZm9yIGEgc3RhdGljIGltYWdlIHdo
aWNoIGlzIGFsc28gYW4gZWxlbWVudCBpbiB0aGUgRE9NIHRyZWUuPC9wPgorICAgIDxkaXY+PC9k
aXY+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUt
cmVuZGVyLXN0YXRpYy1pbWFnZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2Rl
LXJlbmRlci1zdGF0aWMtaW1hZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YzJiMTQ4NTBjMThkNTZkN2Jm
MzFiNmFiYTI3NjBhZDc3OWEyNGQyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9pbWFnZXMvZGVjb2RlLXJlbmRlci1zdGF0aWMtaW1hZ2UuaHRtbApAQCAtMCwwICsxLDU2IEBA
Cis8c3R5bGU+CisgICAgZGl2IHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWln
aHQ6IDEwMHB4OworICAgIH0KKyAgICBpbWcgeworICAgICAgICBtYXgtd2lkdGg6IDEwMCU7Cisg
ICAgICAgIG1heC1oZWlnaHQ6IDEwMCU7CisgICAgfQorPC9zdHlsZT4KKzxib2R5PgorICAgIDxw
PlRoaXMgdGVzdHMgY2FsbGluZyBkZWNvZGUoKSBmb3IgYSBzdGF0aWMgaW1hZ2Ugd2hpY2ggaXMg
YWxzbyBhbiBlbGVtZW50IGluIHRoZSBET00gdHJlZS48L3A+CisgICAgPGRpdj48L2Rpdj4KKyAg
ICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgICAgICAgICAgaW50ZXJuYWxzLmNsZWFyTWVtb3J5Q2FjaGUoKTsKKyAgICAg
ICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRXZWJraXRJbWFnZVJlYWR5RXZlbnRFbmFibGVk
KHRydWUpOworICAgICAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldExhcmdlSW1hZ2VBc3lu
Y0RlY29kaW5nRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGltYWdlID0gbmV3IEltYWdlOworICAg
ICAgICB2YXIgcGFyZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2Iik7CisgICAgICAg
IHBhcmVudC5hcHBlbmRDaGlsZChpbWFnZSk7CisKKyAgICAgICAgaW1hZ2Uub25sb2FkID0gKCgp
ID0+IHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgICAgICAgICAgICAgLy8gRm9yY2UgYXN5bmMgaW1hZ2UgZGVjb2RpbmcgZm9y
IHRoaXMgaW1hZ2UuCisgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldExhcmdlSW1hZ2VBc3lu
Y0RlY29kaW5nRW5hYmxlZEZvclRlc3RpbmcoaW1hZ2UsIHRydWUpOworCisgICAgICAgICAgICAg
ICAgLy8gRm9yY2UgbGF5b3V0IGFuZCBkaXNwbGF5IHNvIHRoZSBpbWFnZSBnZXRzIGRyYXduLgor
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0OworICAgICAgICAgICAg
ICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOworCisgICAgICAgICAgICAgICAgLy8gdGVzdFJ1bm5l
ci5kaXNwbGF5KCkgcmVxdWVzdHMgYW4gYXN5bmMgaW1hZ2UgZGVjb2RpbmcuIFdhaXQgdGlsbCBp
dCBmaW5pc2hlcy4KKyAgICAgICAgICAgICAgICBpbWFnZS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJr
aXRJbWFnZUZyYW1lUmVhZHkiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8g
RXhlY3V0ZSB0aGlzIGNvZGUgaW4gdGhlIG5leHQgbG9vcCBydW4uCisgICAgICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLmRpc3BsYXkoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBpbWFnZSBm
cmFtZSB3YXMgZGVjb2RlZCBmb3IgdGhlIHJlbmRlcmVyIHdoaWNoIGlzICgxMDB4MTAwKS4gVGhp
cworICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVjb2RlKCkgd2lsbCByZXF1ZXN0IGEgbmV3
IGRlY29kaW5nIHdpdGggdGhlIG5hdGl2ZSBzaXplIHdoaWNoIGlzICg0MDB4NDAwKS4KKyAgICAg
ICAgICAgICAgICAgICAgICAgIGltYWdlLmRlY29kZSgpLnRoZW4oKCkgPT4geworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmVudC5zdHlsZS53aWR0aCA9ICIyMDBweCI7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFyZW50LnN0eWxlLmhlaWdodCA9ICIyMDBweCI7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm8gZXh0cmEgZGVjb2RpbmcgaXMgcmVxdWlyZWQg
dG8gZGlzcGxheSB0aGUgaW1hZ2UgYWZ0ZXIgY2hhbmdpbmcgaXRzIHNpemUuCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gVGhlIGltYWdlIGZyYW1lIHdhcyBkZWNvZGVkIHdpdGggdGhl
IG5hdGl2ZSBzaXplIHdoaWNoIGlzIHRoZSBtYXhpbXVtIHNpemUKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyB0aGF0IGFuIGltYWdlIGNhbiBiZSBkZWNvZGVkIHdpdGguCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgICBpbWFnZS5zcmMg
PSAicmVzb3VyY2VzL2dyZWVuLTQwMHg0MDAucG5nIjsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1zdGF0aWMtaW1hZ2Ut
cmVqZWN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1zdGF0
aWMtaW1hZ2UtcmVqZWN0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZmIyMWQzZTI0MDg5YWY3
ODkyN2ZjMjU2YzFjMGNhMmFlZjAzMDhiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9pbWFnZXMvZGVjb2RlLXN0YXRpYy1pbWFnZS1yZWplY3QtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTIgQEAKK1Rlc3QgcmVqZWN0aW5nIHRoZSBkZWNvZGUoKSBwcm9taXNlIHdoZW4gbG9h
ZGluZyB0aGUgaW1hZ2UgZmFpbHMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitG
YWlsZWQgdG8gZGVjb2RlIGltYWdlIHdpdGggbm8gc291cmNlLiBSZXN1bHQgaXM6IEVuY29kaW5n
RXJyb3I6IE1pc3Npbmcgc291cmNlIFVSTC4KK0ZhaWxlZCB0byBkZWNvZGUgaW1hZ2Ugd2l0aCBu
b24tZXhpc3RlbnQgc291cmNlLiBSZXN1bHQgaXM6IEVuY29kaW5nRXJyb3I6IExvYWRpbmcgZXJy
b3IuCitGYWlsZWQgdG8gZGVjb2RlIGltYWdlIHdpdGggdW5zdXBwb3J0ZWQgaW1hZ2UgZm9ybWF0
LiBSZXN1bHQgaXM6IEVuY29kaW5nRXJyb3I6IExvYWRpbmcgZXJyb3IuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RlLXN0YXRpYy1pbWFnZS1yZWplY3QuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1zdGF0aWMtaW1hZ2UtcmVqZWN0Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODFiYWFiMWZiYjNlMGE0NmNlZmU5YzM2MThhMTQ5YzU1NmY3MDU5MQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1zdGF0aWMtaW1hZ2UtcmVq
ZWN0Lmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAg
ICA8ZGl2PjwvZGl2PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0IHJl
amVjdGluZyB0aGUgZGVjb2RlKCkgcHJvbWlzZSB3aGVuIGxvYWRpbmcgdGhlIGltYWdlIGZhaWxz
LiIpOworICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaW1hZ2Ug
PSBuZXcgSW1hZ2U7CisgICAgICAgIGltYWdlLmRlY29kZSgpCisgICAgICAgIC5jYXRjaChyZWFz
b24gPT4geworICAgICAgICAgICAgZGVidWcoIkZhaWxlZCB0byBkZWNvZGUgaW1hZ2Ugd2l0aCBu
byBzb3VyY2UuIFJlc3VsdCBpczogIiArIHJlYXNvbik7CisgICAgICAgICAgICBpbWFnZS5zcmMg
PSAid3JvbmduYW1lLnBuZyI7CisgICAgICAgICAgICByZXR1cm4gaW1hZ2UuZGVjb2RlKCk7Cisg
ICAgICAgIH0pCisgICAgICAgIC5jYXRjaChyZWFzb24gPT4geworICAgICAgICAgICAgZGVidWco
IkZhaWxlZCB0byBkZWNvZGUgaW1hZ2Ugd2l0aCBub24tZXhpc3RlbnQgc291cmNlLiBSZXN1bHQg
aXM6ICIgKyByZWFzb24pOworICAgICAgICAgICAgaW1hZ2Uuc3JjID0gIjEwMHgxMDAtcmVkLnBz
ZCI7CisgICAgICAgICAgICByZXR1cm4gaW1hZ2UuZGVjb2RlKCk7CisgICAgICAgIH0pCisgICAg
ICAgIC5jYXRjaChyZWFzb24gPT4geworICAgICAgICAgICAgZGVidWcoIkZhaWxlZCB0byBkZWNv
ZGUgaW1hZ2Ugd2l0aCB1bnN1cHBvcnRlZCBpbWFnZSBmb3JtYXQuIFJlc3VsdCBpczogIiArIHJl
YXNvbik7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfSk7CisgICAgPC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMv
ZGVjb2RlLXN0YXRpYy1pbWFnZS1yZXNvbHZlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2ltYWdlcy9kZWNvZGUtc3RhdGljLWltYWdlLXJlc29sdmUtZXhwZWN0ZWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kN2M2NDY1NmYyNjcyNjIzY2E5NjE2NzQwMjI3ZTg0ZTM4NzYwOTBlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RlLXN0YXRpYy1pbWFnZS1y
ZXNvbHZlLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPHN0eWxlPgorICAgIGRpdiB7
CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAg
YmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgfQorPC9zdHlsZT4KKzxib2R5PgorICAgIDxw
PlRoaXMgdGVzdHMgcmVzb2x2aW5nIHRoZSBkZWNvZGUoKSBwcm9taXNlIHdoZW4gbG9hZGluZyBh
bmQgZGVjb2RpbmcgYSBzdGF0aWMgaW1hZ2Ugc3VjY2VlZHMuPC9wPgorICAgIDxkaXY+PC9kaXY+
Cis8L2JvZHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RlLXN0YXRpYy1pbWFnZS1yZXNvbHZlLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtc3RhdGljLWltYWdlLXJlc29sdmUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mN2Y4YTM4MGEzNTRjM2Y4NTRhNmViZmQ3ZDJhNTg4YzBmNTVkNTE4Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RlLXN0YXRpYy1pbWFnZS1y
ZXNvbHZlLmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPHN0eWxlPgorICAgIGNhbnZhcyB7CisgICAg
ICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgYmFja2dy
b3VuZC1jb2xvcjogcmVkOworICAgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKyAgICA8cD5UaGlzIHRl
c3RzIHJlc29sdmluZyB0aGUgZGVjb2RlKCkgcHJvbWlzZSB3aGVuIGxvYWRpbmcgYW5kIGRlY29k
aW5nIGEgc3RhdGljIGltYWdlIHN1Y2NlZWRzLjwvcD4KKyAgICA8Y2FudmFzPjwvY2FudmFzPgor
ICAgIDxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB2YXIgaW1hZ2UgPSBuZXcgSW1h
Z2U7CisgICAgICAgIGltYWdlLnNyYyA9ICJyZXNvdXJjZXMvZ3JlZW4tNDAweDQwMC5wbmciOwor
ICAgICAgICBpbWFnZS5kZWNvZGUoKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIGxldCBjYW52
YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKKyAgICAgICAgICAgIGxldCBj
b250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7CisgICAgICAgICAgICBjb250ZXh0LmRy
YXdJbWFnZShpbWFnZSwgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKKyAgICAgICAgfSk7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320326</attachid>
            <date>2017-09-08 18:32:43 -0700</date>
            <delta_ts>2017-09-08 18:45:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176016-20170908183242.patch</filename>
            <type>text/plain</type>
            <size>26862</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMTgwMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE3LTA5LTA4ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IEhUTUxJbWFnZUVsZW1lbnQuZGVjb29kZSgpIG1ldGhvZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MDE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gRnJhc2VyLgorCisgICAgICAgIFRoZSBzcGVjcyBpczoKKyAgICAgICAgaHR0cHM6Ly9o
dG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZW1iZWRkZWQtY29udGVudC5odG1sI2RvbS1p
bWctZGVjb2RlLgorCisgICAgICAgIC0tIGltZy5kZWNvZGUoKSB3YWl0cyB0aWxsIGxvYWRpbmcg
dGhlIGltYWdlIGZpbmlzaGVzLiBPdGhlcndpc2UgaXQgc3RhcnRzCisgICAgICAgIGRlY29kaW5n
IHRoZSBpbWFnZSBpbW1lZGlhdGVseS4KKyAgICAgICAgLS0gSWYgdGhlIGltYWdlIGZyYW1lIGlz
IGFscmVhZHkgZGVjb2RlZCwgdGhlIHByb21pc2Ugd2lsbCBiZSByZXNvbHZlZAorICAgICAgICBi
ZWZvcmUgcmV0dXJuLgorICAgICAgICAtLSBJZiBhbiBlcnJvciBoYXBwZW5zIGluIGxvYWRpbmcg
dGhlIGltYWdlIG9yIGRlY29kaW5nIHRoZSBpbWFnZSBmcmFtZSwKKyAgICAgICAgdGhlIHByb21p
c2Ugd2lsbCBiZSByZWplY3RlZCB3aXRoICdFbmNvZGluZ0Vycm9yJyBleGNlcHRpb24uCisgICAg
ICAgIC0tIEFuaW1hdGVkIGltYWdlIHJlc29sdmVzIHRoZSBwcm9taXNlIHdoZW4gdGhlIG5leHQg
ZnJhbWUgaXMgZGVjb2RlZCBhbmQgCisgICAgICAgIHRoZSBhbmltYXRpb24gaXMgYWR2YW5jZWQg
aXQuIElmIHRoZSBpbWFnZSBpcyBub3QgZGlzcGxheWVkLCBkZWNvZGUoKSB3aWxsCisgICAgICAg
IHJlcXVlc3QgdGhlIGRlY29kaW5nIHRoZSBmaXJzdCBmcmFtZSBhbmQgc3RhcnQgYW5pbWF0aW5n
IHRoZSBpbWFnZS4KKworICAgICAgICBUZXN0czogZmFzdC9pbWFnZXMvZGVjb2RlLWFuaW1hdGVk
LWltYWdlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvaW1hZ2VzL2RlY29kZS1yZW5kZXItYW5p
bWF0ZWQtaW1hZ2UuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9pbWFnZXMvZGVjb2RlLXJlbmRl
ci1zdGF0aWMtaW1hZ2UuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9pbWFnZXMvZGVjb2RlLXN0
YXRpYy1pbWFnZS1yZWplY3QuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9pbWFnZXMvZGVjb2Rl
LXN0YXRpYy1pbWFnZS1yZXNvbHZlLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpkZWNvZGUpOgor
ICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTElt
YWdlRWxlbWVudC5pZGw6CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUxvYWRlcjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVy
OjpkZWNvZGVFcnJvcik6CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6aGFzUGVuZGluZ0RlY29kZVByb21pc2UgY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjppbnRlcm5hbFN0YXJ0QW5pbWF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjppbnRlcm5hbEFkdmFuY2VBbmltYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6aW1hZ2VGcmFtZUF2YWlsYWJsZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkZWNvZGUpOgorCiAyMDE3LTA5LTA4ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMjIxNzczLgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMjE4MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzgsNiArNTM4LDExIEBAIGJv
b2wgSFRNTEltYWdlRWxlbWVudDo6Y29tcGxldGUoKSBjb25zdAogICAgIHJldHVybiBtX2ltYWdl
TG9hZGVyLmltYWdlQ29tcGxldGUoKTsKIH0KIAordm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpkZWNv
ZGUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQoreworICAgIHJldHVybiBtX2ltYWdl
TG9hZGVyLmRlY29kZShXVEZNb3ZlKHByb21pc2UpKTsKK30KKwogdm9pZCBIVE1MSW1hZ2VFbGVt
ZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscykg
Y29uc3QKIHsKICAgICBIVE1MRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKHVy
bHMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgJKHJldmlzaW9u
IDIyMTgwMikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03OSw2ICs3OSw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgY29tcGxldGUoKSBjb25zdDsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVjb2Rl
KFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOworCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGJvb2wg
d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBvdmVycmlkZTsKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsCShyZXZpc2lvbiAyMjE4MDIp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC00OCw1ICs0OCw3IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgbmF0dXJh
bFdpZHRoOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIHg7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGxvbmcgeTsKKworICAgIFByb21pc2U8dm9pZD4gZGVjb2RlKCk7CiB9OwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAJKHJldmlzaW9uIDIyMTgwMikKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5MSw2ICsyOTEsOSBAQCB2b2lkIEltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRS
CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGNvbnNvbGVNZXNzYWdlKE1B
S0VfU1RBVElDX1NUUklOR19JTVBMKCJDcm9zcy1vcmlnaW4gaW1hZ2UgbG9hZCBkZW5pZWQgYnkg
Q3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcgcG9saWN5LiIpKTsKICAgICAgICAgZWxlbWVu
dCgpLmRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHks
IE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGNvbnNvbGVNZXNzYWdlKTsKIAorICAgICAgICBpZiAoaGFz
UGVuZGluZ0RlY29kZVByb21pc2VzKCkpCisgICAgICAgICAgICBkZWNvZGVFcnJvcigiQWNjZXNz
IGNvbnRyb2wgZXJyb3IuIik7CisgICAgICAgIAogICAgICAgICBBU1NFUlQoIW1faGFzUGVuZGlu
Z0xvYWRFdmVudCk7CiAKICAgICAgICAgLy8gT25seSBjb25zaWRlciB1cGRhdGluZyB0aGUgcHJv
dGVjdGlvbiByZWYtY291bnQgb2YgdGhlIEVsZW1lbnQgaW1tZWRpYXRlbHkgYmVmb3JlIHJldHVy
bmluZwpAQCAtMzAwLDYgKzMwMyw4IEBAIHZvaWQgSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVk
KENhY2hlZFIKICAgICB9CiAKICAgICBpZiAobV9pbWFnZS0+d2FzQ2FuY2VsZWQoKSkgeworICAg
ICAgICBpZiAoaGFzUGVuZGluZ0RlY29kZVByb21pc2VzKCkpCisgICAgICAgICAgICBkZWNvZGVF
cnJvcigiTG9hZGluZyB3YXMgY2FuY2VsZWQuIik7CiAgICAgICAgIG1faGFzUGVuZGluZ0xvYWRF
dmVudCA9IGZhbHNlOwogICAgICAgICAvLyBPbmx5IGNvbnNpZGVyIHVwZGF0aW5nIHRoZSBwcm90
ZWN0aW9uIHJlZi1jb3VudCBvZiB0aGUgRWxlbWVudCBpbW1lZGlhdGVseSBiZWZvcmUgcmV0dXJu
aW5nCiAgICAgICAgIC8vIGZyb20gdGhpcyBmdW5jdGlvbiBhcyBkb2luZyBzbyBtaWdodCByZXN1
bHQgaW4gdGhlIGRlc3RydWN0aW9uIG9mIHRoaXMgSW1hZ2VMb2FkZXIuCkBAIC0zMDcsNiArMzEy
LDggQEAgdm9pZCBJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUgogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCisgICAgaWYgKGhhc1BlbmRpbmdEZWNvZGVQcm9taXNlcygpKQorICAg
ICAgICBkZWNvZGUoKTsKICAgICBsb2FkRXZlbnRTZW5kZXIoKS5kaXNwYXRjaEV2ZW50U29vbigq
dGhpcyk7CiB9CiAKQEAgLTM2OSw2ICszNzYsNTkgQEAgdm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRl
ZEhhc1BlbmRpbmdFdmVudAogICAgIH0gICAKIH0KIAordm9pZCBJbWFnZUxvYWRlcjo6ZGVjb2Rl
KFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3sKKyAgICBtX2RlY29kaW5nUHJvbWlz
ZXMuYXBwZW5kKFdURk1vdmUocHJvbWlzZSkpOworICAgIAorICAgIGlmICghZWxlbWVudCgpLmRv
Y3VtZW50KCkuZG9tV2luZG93KCkpIHsKKyAgICAgICAgZGVjb2RlRXJyb3IoIkluYWN0aXZlIGRv
Y3VtZW50LiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIEF0b21pY1N0cmlu
ZyBhdHRyID0gZWxlbWVudCgpLmltYWdlU291cmNlVVJMKCk7CisgICAgaWYgKGF0dHIuaXNOdWxs
KCkgfHwgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHIpLmlzRW1wdHkoKSkg
eworICAgICAgICBkZWNvZGVFcnJvcigiTWlzc2luZyBzb3VyY2UgVVJMLiIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChtX2ltYWdlQ29tcGxldGUpCisgICAgICAgIGRl
Y29kZSgpOworfQorCit2b2lkIEltYWdlTG9hZGVyOjpkZWNvZGVFcnJvcihTdHJpbmcmJiBtZXNz
YWdlKQoreworICAgIEFTU0VSVChoYXNQZW5kaW5nRGVjb2RlUHJvbWlzZXMoKSk7CisgICAgZm9y
IChhdXRvJiBwcm9taXNlIDogbV9kZWNvZGluZ1Byb21pc2VzKQorICAgICAgICBwcm9taXNlLT5y
ZWplY3QoRXhjZXB0aW9uIHsgRW5jb2RpbmdFcnJvciwgV1RGTW92ZShtZXNzYWdlKSB9KTsKKyAg
ICBtX2RlY29kaW5nUHJvbWlzZXMuY2xlYXIoKTsKK30KKwordm9pZCBJbWFnZUxvYWRlcjo6ZGVj
b2RlKCkKK3sKKyAgICBBU1NFUlQoaGFzUGVuZGluZ0RlY29kZVByb21pc2VzKCkpOworICAgIAor
ICAgIGlmICghZWxlbWVudCgpLmRvY3VtZW50KCkuZG9tV2luZG93KCkpIHsKKyAgICAgICAgZGVj
b2RlRXJyb3IoIkluYWN0aXZlIGRvY3VtZW50LiIpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgSW1hZ2UqIGltYWdlID0gbV9pbWFnZS0+aW1hZ2UoKTsKKyAgICBpZiAoIWltYWdlIHx8
IG1faW1hZ2UtPmVycm9yT2NjdXJyZWQoKSkgeworICAgICAgICBkZWNvZGVFcnJvcigiTG9hZGlu
ZyBlcnJvci4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghaW1hZ2UtPmlz
Qml0bWFwSW1hZ2UoKSkgeworICAgICAgICBkZWNvZGVFcnJvcigiSW52YWxpZCBpbWFnZSB0eXBl
LiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGltYWdlLT5kZWNvZGUoW3By
b21pc2VzID0gV1RGTW92ZShtX2RlY29kaW5nUHJvbWlzZXMpXSgpIG11dGFibGUgeworICAgICAg
ICBmb3IgKGF1dG8mIHByb21pc2UgOiBwcm9taXNlcykKKyAgICAgICAgICAgIHByb21pc2UtPnJl
c29sdmUoKTsKKyAgICB9KTsKK30KKwogdm9pZCBJbWFnZUxvYWRlcjo6dGltZXJGaXJlZCgpCiB7
CiAgICAgbV9wcm90ZWN0ZWRFbGVtZW50ID0gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9JbWFnZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9JbWFnZUxvYWRlci5oCShyZXZpc2lvbiAyMjE4MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvSW1hZ2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsOSBAQAogCiAjaW5j
bHVkZSAiQ2FjaGVkSW1hZ2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRs
ZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiVGltZXIu
aCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU4LDYgKzYwLDggQEAgcHVibGljOgog
CiAgICAgQ2FjaGVkSW1hZ2UqIGltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsg
fQogICAgIHZvaWQgY2xlYXJJbWFnZSgpOyAvLyBDYW5jZWxzIHBlbmRpbmcgYmVmb3JlbG9hZCBh
bmQgbG9hZCBldmVudHMsIGFuZCBkb2Vzbid0IGRpc3BhdGNoIG5ldyBvbmVzLgorICAgIAorICAg
IHZvaWQgZGVjb2RlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogCiAgICAgdm9pZCBzZXRMb2Fk
TWFudWFsbHkoYm9vbCBsb2FkTWFudWFsbHkpIHsgbV9sb2FkTWFudWFsbHkgPSBsb2FkTWFudWFs
bHk7IH0KIApAQCAtOTAsNiArOTQsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFySW1hZ2VX
aXRob3V0Q29uc2lkZXJpbmdQZW5kaW5nTG9hZEV2ZW50KCk7CiAgICAgdm9pZCBjbGVhckZhaWxl
ZExvYWRVUkwoKTsKIAorICAgIGJvb2wgaGFzUGVuZGluZ0RlY29kZVByb21pc2VzKCkgY29uc3Qg
eyByZXR1cm4gIW1fZGVjb2RpbmdQcm9taXNlcy5pc0VtcHR5KCk7IH0KKyAgICB2b2lkIGRlY29k
ZUVycm9yKFN0cmluZyYmKTsKKyAgICB2b2lkIGRlY29kZSgpOworICAgIAogICAgIHZvaWQgdGlt
ZXJGaXJlZCgpOwogCiAgICAgRWxlbWVudCYgbV9lbGVtZW50OwpAQCAtOTcsNiArMTA1LDcgQEAg
cHJpdmF0ZToKICAgICBUaW1lciBtX2RlcmVmRWxlbWVudFRpbWVyOwogICAgIFJlZlB0cjxFbGVt
ZW50PiBtX3Byb3RlY3RlZEVsZW1lbnQ7CiAgICAgQXRvbWljU3RyaW5nIG1fZmFpbGVkTG9hZFVS
TDsKKyAgICBWZWN0b3I8UmVmUHRyPERlZmVycmVkUHJvbWlzZT4sIDE+IG1fZGVjb2RpbmdQcm9t
aXNlczsKICAgICBib29sIG1faGFzUGVuZGluZ0JlZm9yZUxvYWRFdmVudCA6IDE7CiAgICAgYm9v
bCBtX2hhc1BlbmRpbmdMb2FkRXZlbnQgOiAxOwogICAgIGJvb2wgbV9oYXNQZW5kaW5nRXJyb3JF
dmVudCA6IDE7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwCShyZXZpc2lvbiAyMjE4MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2NCw3ICs0
NjQsOSBAQCB2b2lkIEJpdG1hcEltYWdlOjppbnRlcm5hbEFkdmFuY2VBbmltYXRpCiAKICAgICBE
ZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4
KG1fY3VycmVudEZyYW1lKTsKICAgICBzZXRDdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1c0lmTmVj
ZXNzYXJ5KGRlY29kaW5nU3RhdHVzKTsKLSAgICAKKworICAgIGNhbGxEZWNvZGluZ0NhbGxiYWNr
cygpOworCiAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNlcnZlcigp
LT5pbWFnZUZyYW1lQXZhaWxhYmxlKCp0aGlzLCBJbWFnZUFuaW1hdGluZ1N0YXRlOjpZZXMsIG51
bGxwdHIsIGRlY29kaW5nU3RhdHVzKTsKIApAQCAtNDk3LDYgKzQ5OSw0NyBAQCB2b2lkIEJpdG1h
cEltYWdlOjpyZXNldEFuaW1hdGlvbigpCiAgICAgZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3Nh
cnkodHJ1ZSk7CiB9CiAKK3ZvaWQgQml0bWFwSW1hZ2U6OmRlY29kZShXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiBjYWxsYmFjaykKK3sKKyAgICBtX2RlY29kaW5nQ2FsbGJhY2tzLmFwcGVuZChXVEZN
b3ZlKGNhbGxiYWNrKSk7CisKKyAgICBpZiAoY2FuQW5pbWF0ZSgpKSAgeworICAgICAgICBpZiAo
bV9kZXNpcmVkRnJhbWVTdGFydFRpbWUpIHsKKyAgICAgICAgICAgIGludGVybmFsU3RhcnRBbmlt
YXRpb24oKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRo
ZSBhbmltYXRlZCBpbWFnZSBoYXMgbm90IGJlZW4gZGlzcGxheWVkLiBJbiB0aGlzIGNhc2UsIGVp
dGhlciB0aGUgZmlyc3QgZnJhbWUgaGFzIG5vdCBiZWVuIGRlY29kZWQgeWV0IG9yIHRoZSBhbmlt
YXRpb24gaGFzIG5vdCBzdGFydGVkIHlldC4KKyAgICAgICAgYm9vbCBmcmFtZUlzQ29tcGF0aWJs
ZSA9IGZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRl
eChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCwgc3RkOjpvcHRpb25h
bDxJbnRTaXplPigpKTsKKyAgICAgICAgYm9vbCBmcmFtZUlzQmVpbmdEZWNvZGVkID0gZnJhbWVJ
c0JlaW5nRGVjb2RlZEFuZElzQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChtX2N1cnJlbnRG
cmFtZSwgc3RkOjpvcHRpb25hbDxJbnRTaXplPigpKTsKKworICAgICAgICBpZiAoZnJhbWVJc0Nv
bXBhdGlibGUpCisgICAgICAgICAgICBpbnRlcm5hbFN0YXJ0QW5pbWF0aW9uKCk7CisgICAgICAg
IGVsc2UgaWYgKCFmcmFtZUlzQmVpbmdEZWNvZGVkKSB7CisgICAgICAgICAgICBtX3NvdXJjZS5y
ZXF1ZXN0RnJhbWVBc3luY0RlY29kaW5nQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50
U3Vic2FtcGxpbmdMZXZlbCwgc3RkOjpvcHRpb25hbDxJbnRTaXplPigpKTsKKyAgICAgICAgICAg
IG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6RGVjb2Rpbmc7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGJvb2wgZnJhbWVJc0Nv
bXBhdGlibGUgPSBmcmFtZUhhc0RlY29kZWROYXRpdmVJbWFnZUNvbXBhdGlibGVXaXRoT3B0aW9u
c0F0SW5kZXgobV9jdXJyZW50RnJhbWUsIG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwsIHN0ZDo6
b3B0aW9uYWw8SW50U2l6ZT4oKSk7CisgICAgYm9vbCBmcmFtZUlzQmVpbmdEZWNvZGVkID0gZnJh
bWVJc0JlaW5nRGVjb2RlZEFuZElzQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChtX2N1cnJl
bnRGcmFtZSwgc3RkOjpvcHRpb25hbDxJbnRTaXplPigpKTsKKyAgICAKKyAgICBpZiAoZnJhbWVJ
c0NvbXBhdGlibGUpCisgICAgICAgIGNhbGxEZWNvZGluZ0NhbGxiYWNrcygpOworICAgIGVsc2Ug
aWYgKCFmcmFtZUlzQmVpbmdEZWNvZGVkKSB7CisgICAgICAgIG1fc291cmNlLnJlcXVlc3RGcmFt
ZUFzeW5jRGVjb2RpbmdBdEluZGV4KG1fY3VycmVudEZyYW1lLCBtX2N1cnJlbnRTdWJzYW1wbGlu
Z0xldmVsLCBzdGQ6Om9wdGlvbmFsPEludFNpemU+KCkpOworICAgICAgICBtX2N1cnJlbnRGcmFt
ZURlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkRlY29kaW5nOworICAgIH0KK30KKwor
dm9pZCBCaXRtYXBJbWFnZTo6Y2FsbERlY29kaW5nQ2FsbGJhY2tzKCkKK3sKKyAgICBmb3IgKGF1
dG8mIGRlY29kaW5nQ2FsbGJhY2sgOiBtX2RlY29kaW5nQ2FsbGJhY2tzKQorICAgICAgICBkZWNv
ZGluZ0NhbGxiYWNrKCk7CisgICAgbV9kZWNvZGluZ0NhbGxiYWNrcy5jbGVhcigpOworfQorCiB2
b2lkIEJpdG1hcEltYWdlOjppbWFnZUZyYW1lQXZhaWxhYmxlQXRJbmRleChzaXplX3QgaW5kZXgp
CiB7CiAgICAgTE9HKEltYWdlcywgIkJpdG1hcEltYWdlOjolcyAtICVwIC0gdXJsOiAlcyBbcmVx
dWVzdGVkIGZyYW1lICVsZCBpcyBub3cgYXZhaWxhYmxlXSIsIF9fRlVOQ1RJT05fXywgdGhpcywg
c291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgaW5kZXgpOwpAQCAtNTI0LDEwICs1
NjcsMTQgQEAgdm9pZCBCaXRtYXBJbWFnZTo6aW1hZ2VGcmFtZUF2YWlsYWJsZUF0SQogCiAgICAg
RGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMgPSBmcmFtZURlY29kaW5nU3RhdHVzQXRJbmRl
eChtX2N1cnJlbnRGcmFtZSk7CiAgICAgc2V0Q3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXNJZk5l
Y2Vzc2FyeShkZWNvZGluZ1N0YXR1cyk7Ci0gICAgCisKICAgICBpZiAobV9jdXJyZW50RnJhbWVE
ZWNvZGluZ1N0YXR1cyA9PSBEZWNvZGluZ1N0YXR1czo6Q29tcGxldGUpCiAgICAgICAgICsrbV9k
ZWNvZGVDb3VudEZvclRlc3Rpbmc7CiAKKyAgICAvLyBDYWxsIG1fZGVjb2RpbmdDYWxsYmFja3Mg
b25seSBpZiB0aGUgaW1hZ2UgZnJhbWUgd2FzIGRlY29kZWQgd2l0aCB0aGUgbmF0aXZlIHNpemUu
CisgICAgaWYgKGZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRpb25z
QXRJbmRleChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCwgc3RkOjpv
cHRpb25hbDxJbnRTaXplPigpKSkKKyAgICAgICAgY2FsbERlY29kaW5nQ2FsbGJhY2tzKCk7CisK
ICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmltYWdl
RnJhbWVBdmFpbGFibGUoKnRoaXMsIEltYWdlQW5pbWF0aW5nU3RhdGU6Ok5vLCBudWxscHRyLCBk
ZWNvZGluZ1N0YXR1cyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmgJKHJldmlzaW9uIDIyMTgwMikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3OCw4
ICsxNzgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gYXV0b21hdGljYWxseSBwYXVzZSBvbmNlIGFs
bCBvYnNlcnZlcnMgbm8gbG9uZ2VyIHdhbnQgdG8gcmVuZGVyIHRoZSBpbWFnZSBhbnl3aGVyZS4K
ICAgICB2b2lkIHN0b3BBbmltYXRpb24oKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc2V0QW5pbWF0
aW9uKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbWFnZUZyYW1lQXZhaWxhYmxlQXRJbmRleChzaXpl
X3QpIG92ZXJyaWRlOwotCisgICAgCiAgICAgLy8gSGFuZGxlIHBsYXRmb3JtLXNwZWNpZmljIGRh
dGEKICAgICB2b2lkIGludmFsaWRhdGVQbGF0Zm9ybURhdGEoKTsKIApAQCAtMTk3LDYgKzE5Niw5
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5EZXN0cm95RGVjb2RlZERhdGEoKTsKICAgICB2b2lk
IHNldEN1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzSWZOZWNlc3NhcnkoRGVjb2RpbmdTdGF0dXMp
OwogICAgIGJvb2wgaXNCaXRtYXBJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KKyAgICB2b2lkIGRlY29kZShXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBjYWxsRGVjb2RpbmdDYWxsYmFja3MoKTsKKyAgICB2b2lkIGltYWdlRnJhbWVBdmFp
bGFibGVBdEluZGV4KHNpemVfdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkdW1wKFdURjo6VGV4dFN0
cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gQW5pbWF0ZWQgaW1hZ2VzIG92ZXIgYSBj
ZXJ0YWluIHNpemUgYXJlIGNvbnNpZGVyZWQgbGFyZ2UgZW5vdWdoIHRoYXQgd2UnbGwgb25seSBo
YW5nIG9uIHRvIG9uZSBmcmFtZSBhdCBhIHRpbWUuCkBAIC0yMTEsNiArMjEzLDcgQEAgcHJpdmF0
ZToKICAgICBSZXBldGl0aW9uQ291bnQgbV9yZXBldGl0aW9uc0NvbXBsZXRlIHsgUmVwZXRpdGlv
bkNvdW50Tm9uZSB9OyAvLyBIb3cgbWFueSByZXBldGl0aW9ucyB3ZSd2ZSBmaW5pc2hlZC4KICAg
ICBNb25vdG9uaWNUaW1lIG1fZGVzaXJlZEZyYW1lU3RhcnRUaW1lOyAvLyBUaGUgc3lzdGVtIHRp
bWUgYXQgd2hpY2ggd2UgaG9wZSB0byBzZWUgdGhlIG5leHQgY2FsbCB0byBzdGFydEFuaW1hdGlv
bigpLgogCisgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4sIDE+IG1fZGVjb2RpbmdDYWxsYmFj
a3M7CiAgICAgU2Vjb25kcyBtX2ZyYW1lRGVjb2RpbmdEdXJhdGlvbkZvclRlc3Rpbmc7CiAgICAg
TW9ub3RvbmljVGltZSBtX2Rlc2lyZWRGcmFtZURlY29kZVRpbWVGb3JUZXN0aW5nOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgJKHJldmlzaW9uIDIyMTgw
MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMywxMCArMTMzLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0QW5pbWF0
aW9uQXN5bmNocm9ub3VzbHkoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcEFuaW1hdGlvbigpIHt9
CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0QW5pbWF0aW9uKCkge30KLSAgICB2aXJ0dWFsIHZvaWQg
aW1hZ2VGcmFtZUF2YWlsYWJsZUF0SW5kZXgoc2l6ZV90KSB7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNBbmltYXRpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgYW5pbWF0aW9u
UGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0aW9uU3RhcnRUaW1lci5pc0FjdGl2ZSgp
OyB9Ci0gICAgCisKKyAgICB2aXJ0dWFsIHZvaWQgZGVjb2RlKFdURjo6RnVuY3Rpb248dm9pZCgp
PiYmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZUF0SW5kZXgoc2l6
ZV90KSB7IH0KKwogICAgIC8vIFR5cGljYWxseSB0aGUgQ2FjaGVkSW1hZ2UgdGhhdCBvd25zIHVz
LgogICAgIEltYWdlT2JzZXJ2ZXIqIGltYWdlT2JzZXJ2ZXIoKSBjb25zdCB7IHJldHVybiBtX2lt
YWdlT2JzZXJ2ZXI7IH0KICAgICB2b2lkIHNldEltYWdlT2JzZXJ2ZXIoSW1hZ2VPYnNlcnZlciog
b2JzZXJ2ZXIpIHsgbV9pbWFnZU9ic2VydmVyID0gb2JzZXJ2ZXI7IH0KSW5kZXg6IExheW91dFRl
c3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDIyMTgwMikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDIxIEBACisyMDE3LTA5LTA4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3
YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEhUTUxJbWFnZUVsZW1lbnQuZGVjb29k
ZSgpIG1ldGhvZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc2MDE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAg
ICogZmFzdC9pbWFnZXMvZGVjb2RlLWFuaW1hdGVkLWltYWdlLWV4cGVjdGVkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvaW1hZ2VzL2RlY29kZS1hbmltYXRlZC1pbWFnZS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9kZWNvZGUtcmVuZGVyLWFuaW1hdGVkLWltYWdlLWV4
cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaW1hZ2VzL2RlY29kZS1yZW5kZXIt
YW5pbWF0ZWQtaW1hZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvZGVjb2Rl
LXJlbmRlci1zdGF0aWMtaW1hZ2UtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9pbWFnZXMvZGVjb2RlLXJlbmRlci1zdGF0aWMtaW1hZ2UuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9pbWFnZXMvZGVjb2RlLXN0YXRpYy1pbWFnZS1yZWplY3QtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9kZWNvZGUtc3RhdGljLWltYWdlLXJlamVjdC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9kZWNvZGUtc3RhdGljLWltYWdlLXJl
c29sdmUtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvZGVjb2Rl
LXN0YXRpYy1pbWFnZS1yZXNvbHZlLmh0bWw6IEFkZGVkLgorCiAyMDE3LTA5LTA4ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggZHVwbGljYXRlIGVu
dHJ5IHdhcm5pbmdzIG9uIFdpbmRvd3MuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9k
ZWNvZGUtYW5pbWF0ZWQtaW1hZ2UtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtYW5pbWF0ZWQtaW1hZ2UtZXhwZWN0ZWQuaHRtbAkobm9u
ZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtYW5pbWF0ZWQtaW1h
Z2UtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACis8c3R5bGU+
CisgICAgZGl2IHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4
OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICB9Cis8L3N0eWxlPgorPGJv
ZHk+CisJPHA+VGhpcyB0ZXN0cyBjYWxsaW5nIGRlY29kZSgpIG11bHRpcGxlIHRpbWVzIGZvciBh
biBhbmltYXRlZCBpbWFnZS48L3A+CisgICAgPGRpdj48L2Rpdj4KKzwvYm9keT4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUt
YW5pbWF0ZWQtaW1hZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdl
cy9kZWNvZGUtYW5pbWF0ZWQtaW1hZ2UuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2ltYWdlcy9kZWNvZGUtYW5pbWF0ZWQtaW1hZ2UuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDI3IEBACis8c3R5bGU+CisgICAgY2FudmFzIHsKKyAgICAgICAgd2lkdGg6IDEw
MHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKyAg
ICA8cD5UaGlzIHRlc3RzIGNhbGxpbmcgZGVjb2RlKCkgbXVsdGlwbGUgdGltZXMgZm9yIGFuIGFu
aW1hdGVkIGltYWdlLjwvcD4KKyAgICA8Y2FudmFzPjwvY2FudmFzPgorICAgIDxzY3JpcHQ+Cisg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworICAgICAgICB2YXIgaW1hZ2UgPSBuZXcgSW1hZ2U7CisgICAgICAgIGlt
YWdlLnNyYyA9ICJyZXNvdXJjZXMvYW5pbWF0ZWQtcmVkLWdyZWVuLWJsdWUtcmVwZWF0LTIuZ2lm
IjsKKyAgICAgICAgLy8gRmlyc3QgZGVjb2RlKCkgd2lsbCBkZWNvZGUgdGhlIHJlZCBmcmFtZS4K
KyAgICAgICAgaW1hZ2UuZGVjb2RlKCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAvLyBTZWNv
bmQgZGVjb2RlKCkgd2lsbCBkZWNvZGUgdGhlIGdyZWVuIGZyYW1lLgorICAgICAgICAgICAgaW1h
Z2UuZGVjb2RlKCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IGNhbnZhcyA9IGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOworICAgICAgICAgICAgICAgIGxldCBjb250
ZXh0ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7CisgICAgICAgICAgICAgICAgY29udGV4dC5k
cmF3SW1hZ2UoaW1hZ2UsIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisgICAg
ICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAg
ICA8L3NjcmlwdD4KKzwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29k
ZS1yZW5kZXItYW5pbWF0ZWQtaW1hZ2UtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtcmVuZGVyLWFuaW1hdGVkLWltYWdlLWV4cGVjdGVk
Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RlLXJl
bmRlci1hbmltYXRlZC1pbWFnZS1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTEgQEAKKzxzdHlsZT4KKyAgICBkaXYgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAg
ICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAg
fQorPC9zdHlsZT4KKzxib2R5PgorCTxwPlRoaXMgdGVzdHMgY2FsbGluZyBkZWNvZGUoKSBmb3Ig
YSBhbmltYXRlZCBpbWFnZSB3aGljaCBpcyBhbHNvIGFuIGVsZW1lbnQgaW4gdGhlIERPTSB0cmVl
LjwvcD4KKyAgICA8ZGl2PjwvZGl2PgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9p
bWFnZXMvZGVjb2RlLXJlbmRlci1hbmltYXRlZC1pbWFnZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1yZW5kZXItYW5pbWF0ZWQtaW1hZ2UuaHRtbAko
bm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtcmVuZGVyLWFu
aW1hdGVkLWltYWdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NSBAQAorIDxzdHls
ZT4KKyAgICAgZGl2IHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEw
MHB4OworICAgIH0KKyAgICBjYW52YXMgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAg
IGhlaWdodDogMTAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrOworICAgIH0K
KyAgICBpbWcgeworICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CisgICAgICAgIG1heC1oZWlnaHQ6
IDEwMCU7CisgICAgfQorPC9zdHlsZT4KKzxib2R5PgorICAgIDxwPlRoaXMgdGVzdHMgY2FsbGlu
ZyBkZWNvZGUoKSBmb3IgYSBhbmltYXRlZCBpbWFnZSB3aGljaCBpcyBhbHNvIGFuIGVsZW1lbnQg
aW4gdGhlIERPTSB0cmVlLjwvcD4KKyAgICA8Y2FudmFzPjwvY2FudmFzPgorICAgIDxkaXY+PC9k
aXY+CisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIGludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKCk7
CisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0V2Via2l0SW1hZ2VSZWFkeUV2ZW50
RW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgICAgICB9CisKKyAgICAgICAgdmFyIGltYWdlID0gbmV3IEltYWdlOworICAgICAgICB2YXIg
cGFyZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2Iik7CisgICAgICAgIHBhcmVudC5h
cHBlbmRDaGlsZChpbWFnZSk7CisKKyAgICAgICAgaW1hZ2Uub25sb2FkID0gKCgpID0+IHsKKyAg
ICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgICAgICAgICAgICAgLy8gRm9yY2UgbGF5b3V0IGFuZCBkaXNwbGF5IHNvIHRoZSBpbWFnZSBn
ZXRzIGRyYXduLiBUaGUgaW1hZ2Ugd2lsbCBkcmF3IGl0cyByZWQgZnJhbWUuCisgICAgICAgICAg
ICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQ7CisgICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5kaXNwbGF5KCk7CisKKyAgICAgICAgICAgICAgICAvLyBXYWl0IHRpbGwgZGVjb2Rpbmcg
dGhlIG5leHQgKGdyZWVuKSBmcmFtZSBmaW5pc2hlcyBhbmQgdGhlIGFuaW1hdGlvbiBhZHZhbmNl
cyB0byBpdC4KKyAgICAgICAgICAgICAgICBpbWFnZS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRJ
bWFnZUZyYW1lUmVhZHkiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlcXVlc3QgZGVj
b2RpbmcgdGhlIG5leHQgKGJsdWUpIGZyYW1lLiBXYWl0IHRpbGwgZGVjb2RpbmcgZmluaXNoZXMg
YW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5pbWF0aW9uIGFkdmFuY2VzIHRv
IGl0LgorICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UuZGVjb2RlKCkudGhlbigoKSA9PiB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoImNhbnZhcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250
ZXh0ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhl
aWdodCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LnJlbW92ZSgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIH0sIDApOworICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgaW1hZ2Uu
c3JjID0gInJlc291cmNlcy9hbmltYXRlZC1yZWQtZ3JlZW4tYmx1ZS1yZXBlYXQtMi5naWYiOwor
ICAgIDwvc2NyaXB0PgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVj
b2RlLXJlbmRlci1zdGF0aWMtaW1hZ2UtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtcmVuZGVyLXN0YXRpYy1pbWFnZS1leHBlY3RlZC5o
dG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1yZW5k
ZXItc3RhdGljLWltYWdlLWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MSBAQAorPHN0eWxlPgorICAgIGRpdiB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAg
aGVpZ2h0OiAyMDBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgfQor
PC9zdHlsZT4KKzxib2R5PgorCTxwPlRoaXMgdGVzdHMgY2FsbGluZyBkZWNvZGUoKSBmb3IgYSBz
dGF0aWMgaW1hZ2Ugd2hpY2ggaXMgYWxzbyBhbiBlbGVtZW50IGluIHRoZSBET00gdHJlZS48L3A+
CisgICAgPGRpdj48L2Rpdj4KKzwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW1hZ2Vz
L2RlY29kZS1yZW5kZXItc3RhdGljLWltYWdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9pbWFnZXMvZGVjb2RlLXJlbmRlci1zdGF0aWMtaW1hZ2UuaHRtbAkobm9uZXhpc3Rl
bnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtcmVuZGVyLXN0YXRpYy1pbWFn
ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKKzxzdHlsZT4KKyAgICBkaXYg
eworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQor
ICAgIGltZyB7CisgICAgICAgIG1heC13aWR0aDogMTAwJTsKKyAgICAgICAgbWF4LWhlaWdodDog
MTAwJTsKKyAgICB9Cis8L3N0eWxlPgorPGJvZHk+CisgICAgPHA+VGhpcyB0ZXN0cyBjYWxsaW5n
IGRlY29kZSgpIGZvciBhIHN0YXRpYyBpbWFnZSB3aGljaCBpcyBhbHNvIGFuIGVsZW1lbnQgaW4g
dGhlIERPTSB0cmVlLjwvcD4KKyAgICA8ZGl2PjwvZGl2PgorICAgIDxzY3JpcHQ+CisgICAgICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAg
ICBpbnRlcm5hbHMuY2xlYXJNZW1vcnlDYWNoZSgpOworICAgICAgICAgICAgaW50ZXJuYWxzLnNl
dHRpbmdzLnNldFdlYmtpdEltYWdlUmVhZHlFdmVudEVuYWJsZWQodHJ1ZSk7CisgICAgICAgICAg
ICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0TGFyZ2VJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkKHRy
dWUpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0K
KworICAgICAgICB2YXIgaW1hZ2UgPSBuZXcgSW1hZ2U7CisgICAgICAgIHZhciBwYXJlbnQgPSBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYiKTsKKyAgICAgICAgcGFyZW50LmFwcGVuZENoaWxk
KGltYWdlKTsKKworICAgICAgICBpbWFnZS5vbmxvYWQgPSAoKCkgPT4geworICAgICAgICAgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAg
ICAgICAvLyBGb3JjZSBhc3luYyBpbWFnZSBkZWNvZGluZyBmb3IgdGhpcyBpbWFnZS4KKyAgICAg
ICAgICAgICAgICBpbnRlcm5hbHMuc2V0TGFyZ2VJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkRm9y
VGVzdGluZyhpbWFnZSwgdHJ1ZSk7CisKKyAgICAgICAgICAgICAgICAvLyBGb3JjZSBsYXlvdXQg
YW5kIGRpc3BsYXkgc28gdGhlIGltYWdlIGdldHMgZHJhd24uCisgICAgICAgICAgICAgICAgZG9j
dW1lbnQuYm9keS5vZmZzZXRIZWlnaHQ7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kaXNw
bGF5KCk7CisKKyAgICAgICAgICAgICAgICAvLyB0ZXN0UnVubmVyLmRpc3BsYXkoKSByZXF1ZXN0
cyBhbiBhc3luYyBpbWFnZSBkZWNvZGluZy4gV2FpdCB0aWxsIGl0IGZpbmlzaGVzLgorICAgICAg
ICAgICAgICAgIGltYWdlLmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdEltYWdlRnJhbWVSZWFkeSIs
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAvLyBFeGVjdXRlIHRoaXMgY29kZSBp
biB0aGUgbmV4dCBsb29wIHJ1bi4KKyAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGltYWdlIGZyYW1lIHdhcyBkZWNvZGVkIGZv
ciB0aGUgcmVuZGVyZXIgd2hpY2ggaXMgKDEwMHgxMDApLiBUaGlzCisgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBkZWNvZGUoKSB3aWxsIHJlcXVlc3QgYSBuZXcgZGVjb2Rpbmcgd2l0aCB0aGUg
bmF0aXZlIHNpemUgd2hpY2ggaXMgKDQwMHg0MDApLgorICAgICAgICAgICAgICAgICAgICAgICAg
aW1hZ2UuZGVjb2RlKCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFyZW50LnN0eWxlLndpZHRoID0gIjIwMHB4IjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwYXJlbnQuc3R5bGUuaGVpZ2h0ID0gIjIwMHB4IjsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBObyBleHRyYSBkZWNvZGluZyBpcyByZXF1aXJlZCB0byBkaXNwbGF5IHRoZSBpbWFn
ZSBhZnRlciBjaGFuZ2luZyBpdHMgc2l6ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBUaGUgaW1hZ2UgZnJhbWUgd2FzIGRlY29kZWQgd2l0aCB0aGUgbmF0aXZlIHNpemUgd2hpY2gg
aXMgdGhlIG1heGltdW0gc2l6ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQg
YW4gaW1hZ2UgY2FuIGJlIGRlY29kZWQgd2l0aC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIGltYWdlLnNyYyA9ICJyZXNvdXJjZXMvZ3JlZW4t
NDAweDQwMC5wbmciOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9pbWFnZXMvZGVjb2RlLXN0YXRpYy1pbWFnZS1yZWplY3QtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1zdGF0aWMtaW1hZ2UtcmVq
ZWN0LWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdl
cy9kZWNvZGUtc3RhdGljLWltYWdlLXJlamVjdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMiBAQAorVGVzdCByZWplY3RpbmcgdGhlIGRlY29kZSgpIHByb21pc2Ugd2hl
biBsb2FkaW5nIHRoZSBpbWFnZSBmYWlscy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK0ZhaWxlZCB0byBkZWNvZGUgaW1hZ2Ugd2l0aCBubyBzb3VyY2UuIFJlc3VsdCBpczogRW5j
b2RpbmdFcnJvcjogTWlzc2luZyBzb3VyY2UgVVJMLgorRmFpbGVkIHRvIGRlY29kZSBpbWFnZSB3
aXRoIG5vbi1leGlzdGVudCBzb3VyY2UuIFJlc3VsdCBpczogRW5jb2RpbmdFcnJvcjogTG9hZGlu
ZyBlcnJvci4KK0ZhaWxlZCB0byBkZWNvZGUgaW1hZ2Ugd2l0aCB1bnN1cHBvcnRlZCBpbWFnZSBm
b3JtYXQuIFJlc3VsdCBpczogRW5jb2RpbmdFcnJvcjogTG9hZGluZyBlcnJvci4KK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtc3RhdGljLWltYWdlLXJlamVjdC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1zdGF0aWMtaW1hZ2UtcmVqZWN0
Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RlLXN0
YXRpYy1pbWFnZS1yZWplY3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4IEBACis8
aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXY+PC9kaXY+CisgICAgPHNjcmlwdD4K
KyAgICAgICAgZGVzY3JpcHRpb24oIlRlc3QgcmVqZWN0aW5nIHRoZSBkZWNvZGUoKSBwcm9taXNl
IHdoZW4gbG9hZGluZyB0aGUgaW1hZ2UgZmFpbHMuIik7CisgICAgICAgIGpzVGVzdElzQXN5bmMg
PSB0cnVlOworCisgICAgICAgIHZhciBpbWFnZSA9IG5ldyBJbWFnZTsKKyAgICAgICAgaW1hZ2Uu
ZGVjb2RlKCkKKyAgICAgICAgLmNhdGNoKHJlYXNvbiA9PiB7CisgICAgICAgICAgICBkZWJ1Zygi
RmFpbGVkIHRvIGRlY29kZSBpbWFnZSB3aXRoIG5vIHNvdXJjZS4gUmVzdWx0IGlzOiAiICsgcmVh
c29uKTsKKyAgICAgICAgICAgIGltYWdlLnNyYyA9ICJ3cm9uZ25hbWUucG5nIjsKKyAgICAgICAg
ICAgIHJldHVybiBpbWFnZS5kZWNvZGUoKTsKKyAgICAgICAgfSkKKyAgICAgICAgLmNhdGNoKHJl
YXNvbiA9PiB7CisgICAgICAgICAgICBkZWJ1ZygiRmFpbGVkIHRvIGRlY29kZSBpbWFnZSB3aXRo
IG5vbi1leGlzdGVudCBzb3VyY2UuIFJlc3VsdCBpczogIiArIHJlYXNvbik7CisgICAgICAgICAg
ICBpbWFnZS5zcmMgPSAiMTAweDEwMC1yZWQucHNkIjsKKyAgICAgICAgICAgIHJldHVybiBpbWFn
ZS5kZWNvZGUoKTsKKyAgICAgICAgfSkKKyAgICAgICAgLmNhdGNoKHJlYXNvbiA9PiB7CisgICAg
ICAgICAgICBkZWJ1ZygiRmFpbGVkIHRvIGRlY29kZSBpbWFnZSB3aXRoIHVuc3VwcG9ydGVkIGlt
YWdlIGZvcm1hdC4gUmVzdWx0IGlzOiAiICsgcmVhc29uKTsKKyAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICB9KTsKKyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtc3RhdGljLWltYWdlLXJlc29sdmUtZXhwZWN0
ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtc3Rh
dGljLWltYWdlLXJlc29sdmUtZXhwZWN0ZWQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtc3RhdGljLWltYWdlLXJlc29sdmUtZXhwZWN0ZWQuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACis8c3R5bGU+CisgICAgZGl2IHsKKyAg
ICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICB9Cis8L3N0eWxlPgorPGJvZHk+CisgICAgPHA+VGhp
cyB0ZXN0cyByZXNvbHZpbmcgdGhlIGRlY29kZSgpIHByb21pc2Ugd2hlbiBsb2FkaW5nIGFuZCBk
ZWNvZGluZyBhIHN0YXRpYyBpbWFnZSBzdWNjZWVkcy48L3A+CisgICAgPGRpdj48L2Rpdj4KKzwv
Ym9keT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2ltYWdlcy9kZWNvZGUtc3RhdGljLWltYWdlLXJlc29sdmUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtc3RhdGljLWltYWdlLXJlc29sdmUuaHRtbAko
bm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtc3RhdGljLWlt
YWdlLXJlc29sdmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI0IEBACis8c3R5bGU+
CisgICAgY2FudmFzIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEw
MHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgICAgfQorPC9zdHlsZT4KKzxi
b2R5PgorICAgIDxwPlRoaXMgdGVzdHMgcmVzb2x2aW5nIHRoZSBkZWNvZGUoKSBwcm9taXNlIHdo
ZW4gbG9hZGluZyBhbmQgZGVjb2RpbmcgYSBzdGF0aWMgaW1hZ2Ugc3VjY2VlZHMuPC9wPgorICAg
IDxjYW52YXM+PC9jYW52YXM+CisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAg
IHZhciBpbWFnZSA9IG5ldyBJbWFnZTsKKyAgICAgICAgaW1hZ2Uuc3JjID0gInJlc291cmNlcy9n
cmVlbi00MDB4NDAwLnBuZyI7CisgICAgICAgIGltYWdlLmRlY29kZSgpLnRoZW4oKCkgPT4gewor
ICAgICAgICAgICAgbGV0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIp
OworICAgICAgICAgICAgbGV0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKKyAg
ICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCAwLCAwLCBjYW52YXMud2lkdGgsIGNh
bnZhcy5oZWlnaHQpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9KTsKKyAgICA8L3Nj
cmlwdD4KKzwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320328</attachid>
            <date>2017-09-08 18:45:35 -0700</date>
            <delta_ts>2017-09-08 20:09:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176016-20170908184535.patch</filename>
            <type>text/plain</type>
            <size>26862</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMTgwMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE3LTA5LTA4ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IEhUTUxJbWFnZUVsZW1lbnQuZGVjb29kZSgpIG1ldGhvZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MDE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gRnJhc2VyLgorCisgICAgICAgIFRoZSBzcGVjcyBpczoKKyAgICAgICAgaHR0cHM6Ly9o
dG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZW1iZWRkZWQtY29udGVudC5odG1sI2RvbS1p
bWctZGVjb2RlLgorCisgICAgICAgIC0tIGltZy5kZWNvZGUoKSB3YWl0cyB0aWxsIGxvYWRpbmcg
dGhlIGltYWdlIGZpbmlzaGVzLiBPdGhlcndpc2UgaXQgc3RhcnRzCisgICAgICAgIGRlY29kaW5n
IHRoZSBpbWFnZSBpbW1lZGlhdGVseS4KKyAgICAgICAgLS0gSWYgdGhlIGltYWdlIGZyYW1lIGlz
IGFscmVhZHkgZGVjb2RlZCwgdGhlIHByb21pc2Ugd2lsbCBiZSByZXNvbHZlZAorICAgICAgICBi
ZWZvcmUgcmV0dXJuLgorICAgICAgICAtLSBJZiBhbiBlcnJvciBoYXBwZW5zIGluIGxvYWRpbmcg
dGhlIGltYWdlIG9yIGRlY29kaW5nIHRoZSBpbWFnZSBmcmFtZSwKKyAgICAgICAgdGhlIHByb21p
c2Ugd2lsbCBiZSByZWplY3RlZCB3aXRoICdFbmNvZGluZ0Vycm9yJyBleGNlcHRpb24uCisgICAg
ICAgIC0tIEFuaW1hdGVkIGltYWdlIHJlc29sdmVzIHRoZSBwcm9taXNlIHdoZW4gdGhlIG5leHQg
ZnJhbWUgaXMgZGVjb2RlZCBhbmQgCisgICAgICAgIHRoZSBhbmltYXRpb24gaXMgYWR2YW5jZWQg
aXQuIElmIHRoZSBpbWFnZSBpcyBub3QgZGlzcGxheWVkLCBkZWNvZGUoKSB3aWxsCisgICAgICAg
IHJlcXVlc3QgdGhlIGRlY29kaW5nIHRoZSBmaXJzdCBmcmFtZSBhbmQgc3RhcnQgYW5pbWF0aW5n
IHRoZSBpbWFnZS4KKworICAgICAgICBUZXN0czogZmFzdC9pbWFnZXMvZGVjb2RlLWFuaW1hdGVk
LWltYWdlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvaW1hZ2VzL2RlY29kZS1yZW5kZXItYW5p
bWF0ZWQtaW1hZ2UuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9pbWFnZXMvZGVjb2RlLXJlbmRl
ci1zdGF0aWMtaW1hZ2UuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9pbWFnZXMvZGVjb2RlLXN0
YXRpYy1pbWFnZS1yZWplY3QuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9pbWFnZXMvZGVjb2Rl
LXN0YXRpYy1pbWFnZS1yZXNvbHZlLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpkZWNvZGUpOgor
ICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTElt
YWdlRWxlbWVudC5pZGw6CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUxvYWRlcjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVy
OjpkZWNvZGVFcnJvcik6CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6aGFzUGVuZGluZ0RlY29kZVByb21pc2UgY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjppbnRlcm5hbFN0YXJ0QW5pbWF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjppbnRlcm5hbEFkdmFuY2VBbmltYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6aW1hZ2VGcmFtZUF2YWlsYWJsZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkZWNvZGUpOgorCiAyMDE3LTA5LTA4ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMjIxNzczLgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMjE4MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzgsNiArNTM4LDExIEBAIGJv
b2wgSFRNTEltYWdlRWxlbWVudDo6Y29tcGxldGUoKSBjb25zdAogICAgIHJldHVybiBtX2ltYWdl
TG9hZGVyLmltYWdlQ29tcGxldGUoKTsKIH0KIAordm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpkZWNv
ZGUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQoreworICAgIHJldHVybiBtX2ltYWdl
TG9hZGVyLmRlY29kZShXVEZNb3ZlKHByb21pc2UpKTsKK30KKwogdm9pZCBIVE1MSW1hZ2VFbGVt
ZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscykg
Y29uc3QKIHsKICAgICBIVE1MRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKHVy
bHMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgJKHJldmlzaW9u
IDIyMTgwMikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03OSw2ICs3OSw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgY29tcGxldGUoKSBjb25zdDsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVjb2Rl
KFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOworCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGJvb2wg
d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBvdmVycmlkZTsKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsCShyZXZpc2lvbiAyMjE4MDIp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC00OCw1ICs0OCw3IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgbmF0dXJh
bFdpZHRoOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIHg7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGxvbmcgeTsKKworICAgIFByb21pc2U8dm9pZD4gZGVjb2RlKCk7CiB9OwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAJKHJldmlzaW9uIDIyMTgwMikKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5MSw2ICsyOTEsOSBAQCB2b2lkIEltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRS
CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGNvbnNvbGVNZXNzYWdlKE1B
S0VfU1RBVElDX1NUUklOR19JTVBMKCJDcm9zcy1vcmlnaW4gaW1hZ2UgbG9hZCBkZW5pZWQgYnkg
Q3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcgcG9saWN5LiIpKTsKICAgICAgICAgZWxlbWVu
dCgpLmRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHks
IE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGNvbnNvbGVNZXNzYWdlKTsKIAorICAgICAgICBpZiAoaGFz
UGVuZGluZ0RlY29kZVByb21pc2VzKCkpCisgICAgICAgICAgICBkZWNvZGVFcnJvcigiQWNjZXNz
IGNvbnRyb2wgZXJyb3IuIik7CisgICAgICAgIAogICAgICAgICBBU1NFUlQoIW1faGFzUGVuZGlu
Z0xvYWRFdmVudCk7CiAKICAgICAgICAgLy8gT25seSBjb25zaWRlciB1cGRhdGluZyB0aGUgcHJv
dGVjdGlvbiByZWYtY291bnQgb2YgdGhlIEVsZW1lbnQgaW1tZWRpYXRlbHkgYmVmb3JlIHJldHVy
bmluZwpAQCAtMzAwLDYgKzMwMyw4IEBAIHZvaWQgSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVk
KENhY2hlZFIKICAgICB9CiAKICAgICBpZiAobV9pbWFnZS0+d2FzQ2FuY2VsZWQoKSkgeworICAg
ICAgICBpZiAoaGFzUGVuZGluZ0RlY29kZVByb21pc2VzKCkpCisgICAgICAgICAgICBkZWNvZGVF
cnJvcigiTG9hZGluZyB3YXMgY2FuY2VsZWQuIik7CiAgICAgICAgIG1faGFzUGVuZGluZ0xvYWRF
dmVudCA9IGZhbHNlOwogICAgICAgICAvLyBPbmx5IGNvbnNpZGVyIHVwZGF0aW5nIHRoZSBwcm90
ZWN0aW9uIHJlZi1jb3VudCBvZiB0aGUgRWxlbWVudCBpbW1lZGlhdGVseSBiZWZvcmUgcmV0dXJu
aW5nCiAgICAgICAgIC8vIGZyb20gdGhpcyBmdW5jdGlvbiBhcyBkb2luZyBzbyBtaWdodCByZXN1
bHQgaW4gdGhlIGRlc3RydWN0aW9uIG9mIHRoaXMgSW1hZ2VMb2FkZXIuCkBAIC0zMDcsNiArMzEy
LDggQEAgdm9pZCBJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUgogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCisgICAgaWYgKGhhc1BlbmRpbmdEZWNvZGVQcm9taXNlcygpKQorICAg
ICAgICBkZWNvZGUoKTsKICAgICBsb2FkRXZlbnRTZW5kZXIoKS5kaXNwYXRjaEV2ZW50U29vbigq
dGhpcyk7CiB9CiAKQEAgLTM2OSw2ICszNzYsNTkgQEAgdm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRl
ZEhhc1BlbmRpbmdFdmVudAogICAgIH0gICAKIH0KIAordm9pZCBJbWFnZUxvYWRlcjo6ZGVjb2Rl
KFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3sKKyAgICBtX2RlY29kaW5nUHJvbWlz
ZXMuYXBwZW5kKFdURk1vdmUocHJvbWlzZSkpOworICAgIAorICAgIGlmICghZWxlbWVudCgpLmRv
Y3VtZW50KCkuZG9tV2luZG93KCkpIHsKKyAgICAgICAgZGVjb2RlRXJyb3IoIkluYWN0aXZlIGRv
Y3VtZW50LiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIEF0b21pY1N0cmlu
ZyBhdHRyID0gZWxlbWVudCgpLmltYWdlU291cmNlVVJMKCk7CisgICAgaWYgKGF0dHIuaXNOdWxs
KCkgfHwgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHIpLmlzRW1wdHkoKSkg
eworICAgICAgICBkZWNvZGVFcnJvcigiTWlzc2luZyBzb3VyY2UgVVJMLiIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChtX2ltYWdlQ29tcGxldGUpCisgICAgICAgIGRl
Y29kZSgpOworfQorCit2b2lkIEltYWdlTG9hZGVyOjpkZWNvZGVFcnJvcihTdHJpbmcmJiBtZXNz
YWdlKQoreworICAgIEFTU0VSVChoYXNQZW5kaW5nRGVjb2RlUHJvbWlzZXMoKSk7CisgICAgZm9y
IChhdXRvJiBwcm9taXNlIDogbV9kZWNvZGluZ1Byb21pc2VzKQorICAgICAgICBwcm9taXNlLT5y
ZWplY3QoRXhjZXB0aW9uIHsgRW5jb2RpbmdFcnJvciwgV1RGTW92ZShtZXNzYWdlKSB9KTsKKyAg
ICBtX2RlY29kaW5nUHJvbWlzZXMuY2xlYXIoKTsKK30KKwordm9pZCBJbWFnZUxvYWRlcjo6ZGVj
b2RlKCkKK3sKKyAgICBBU1NFUlQoaGFzUGVuZGluZ0RlY29kZVByb21pc2VzKCkpOworICAgIAor
ICAgIGlmICghZWxlbWVudCgpLmRvY3VtZW50KCkuZG9tV2luZG93KCkpIHsKKyAgICAgICAgZGVj
b2RlRXJyb3IoIkluYWN0aXZlIGRvY3VtZW50LiIpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgSW1hZ2UqIGltYWdlID0gbV9pbWFnZS0+aW1hZ2UoKTsKKyAgICBpZiAoIWltYWdlIHx8
IG1faW1hZ2UtPmVycm9yT2NjdXJyZWQoKSkgeworICAgICAgICBkZWNvZGVFcnJvcigiTG9hZGlu
ZyBlcnJvci4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghaW1hZ2UtPmlz
Qml0bWFwSW1hZ2UoKSkgeworICAgICAgICBkZWNvZGVFcnJvcigiSW52YWxpZCBpbWFnZSB0eXBl
LiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGltYWdlLT5kZWNvZGUoW3By
b21pc2VzID0gV1RGTW92ZShtX2RlY29kaW5nUHJvbWlzZXMpXSgpIG11dGFibGUgeworICAgICAg
ICBmb3IgKGF1dG8mIHByb21pc2UgOiBwcm9taXNlcykKKyAgICAgICAgICAgIHByb21pc2UtPnJl
c29sdmUoKTsKKyAgICB9KTsKK30KKwogdm9pZCBJbWFnZUxvYWRlcjo6dGltZXJGaXJlZCgpCiB7
CiAgICAgbV9wcm90ZWN0ZWRFbGVtZW50ID0gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9JbWFnZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9JbWFnZUxvYWRlci5oCShyZXZpc2lvbiAyMjE4MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvSW1hZ2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsOSBAQAogCiAjaW5j
bHVkZSAiQ2FjaGVkSW1hZ2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRs
ZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiVGltZXIu
aCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU4LDYgKzYwLDggQEAgcHVibGljOgog
CiAgICAgQ2FjaGVkSW1hZ2UqIGltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsg
fQogICAgIHZvaWQgY2xlYXJJbWFnZSgpOyAvLyBDYW5jZWxzIHBlbmRpbmcgYmVmb3JlbG9hZCBh
bmQgbG9hZCBldmVudHMsIGFuZCBkb2Vzbid0IGRpc3BhdGNoIG5ldyBvbmVzLgorICAgIAorICAg
IHZvaWQgZGVjb2RlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogCiAgICAgdm9pZCBzZXRMb2Fk
TWFudWFsbHkoYm9vbCBsb2FkTWFudWFsbHkpIHsgbV9sb2FkTWFudWFsbHkgPSBsb2FkTWFudWFs
bHk7IH0KIApAQCAtOTAsNiArOTQsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFySW1hZ2VX
aXRob3V0Q29uc2lkZXJpbmdQZW5kaW5nTG9hZEV2ZW50KCk7CiAgICAgdm9pZCBjbGVhckZhaWxl
ZExvYWRVUkwoKTsKIAorICAgIGJvb2wgaGFzUGVuZGluZ0RlY29kZVByb21pc2VzKCkgY29uc3Qg
eyByZXR1cm4gIW1fZGVjb2RpbmdQcm9taXNlcy5pc0VtcHR5KCk7IH0KKyAgICB2b2lkIGRlY29k
ZUVycm9yKFN0cmluZyYmKTsKKyAgICB2b2lkIGRlY29kZSgpOworICAgIAogICAgIHZvaWQgdGlt
ZXJGaXJlZCgpOwogCiAgICAgRWxlbWVudCYgbV9lbGVtZW50OwpAQCAtOTcsNiArMTA1LDcgQEAg
cHJpdmF0ZToKICAgICBUaW1lciBtX2RlcmVmRWxlbWVudFRpbWVyOwogICAgIFJlZlB0cjxFbGVt
ZW50PiBtX3Byb3RlY3RlZEVsZW1lbnQ7CiAgICAgQXRvbWljU3RyaW5nIG1fZmFpbGVkTG9hZFVS
TDsKKyAgICBWZWN0b3I8UmVmUHRyPERlZmVycmVkUHJvbWlzZT4sIDE+IG1fZGVjb2RpbmdQcm9t
aXNlczsKICAgICBib29sIG1faGFzUGVuZGluZ0JlZm9yZUxvYWRFdmVudCA6IDE7CiAgICAgYm9v
bCBtX2hhc1BlbmRpbmdMb2FkRXZlbnQgOiAxOwogICAgIGJvb2wgbV9oYXNQZW5kaW5nRXJyb3JF
dmVudCA6IDE7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwCShyZXZpc2lvbiAyMjE4MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2NCw3ICs0
NjQsOSBAQCB2b2lkIEJpdG1hcEltYWdlOjppbnRlcm5hbEFkdmFuY2VBbmltYXRpCiAKICAgICBE
ZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4
KG1fY3VycmVudEZyYW1lKTsKICAgICBzZXRDdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1c0lmTmVj
ZXNzYXJ5KGRlY29kaW5nU3RhdHVzKTsKLSAgICAKKworICAgIGNhbGxEZWNvZGluZ0NhbGxiYWNr
cygpOworCiAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNlcnZlcigp
LT5pbWFnZUZyYW1lQXZhaWxhYmxlKCp0aGlzLCBJbWFnZUFuaW1hdGluZ1N0YXRlOjpZZXMsIG51
bGxwdHIsIGRlY29kaW5nU3RhdHVzKTsKIApAQCAtNDk3LDYgKzQ5OSw0NyBAQCB2b2lkIEJpdG1h
cEltYWdlOjpyZXNldEFuaW1hdGlvbigpCiAgICAgZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3Nh
cnkodHJ1ZSk7CiB9CiAKK3ZvaWQgQml0bWFwSW1hZ2U6OmRlY29kZShXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiBjYWxsYmFjaykKK3sKKyAgICBtX2RlY29kaW5nQ2FsbGJhY2tzLmFwcGVuZChXVEZN
b3ZlKGNhbGxiYWNrKSk7CisKKyAgICBpZiAoY2FuQW5pbWF0ZSgpKSAgeworICAgICAgICBpZiAo
bV9kZXNpcmVkRnJhbWVTdGFydFRpbWUpIHsKKyAgICAgICAgICAgIGludGVybmFsU3RhcnRBbmlt
YXRpb24oKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRo
ZSBhbmltYXRlZCBpbWFnZSBoYXMgbm90IGJlZW4gZGlzcGxheWVkLiBJbiB0aGlzIGNhc2UsIGVp
dGhlciB0aGUgZmlyc3QgZnJhbWUgaGFzIG5vdCBiZWVuIGRlY29kZWQgeWV0IG9yIHRoZSBhbmlt
YXRpb24gaGFzIG5vdCBzdGFydGVkIHlldC4KKyAgICAgICAgYm9vbCBmcmFtZUlzQ29tcGF0aWJs
ZSA9IGZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRl
eChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCwgc3RkOjpvcHRpb25h
bDxJbnRTaXplPigpKTsKKyAgICAgICAgYm9vbCBmcmFtZUlzQmVpbmdEZWNvZGVkID0gZnJhbWVJ
c0JlaW5nRGVjb2RlZEFuZElzQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChtX2N1cnJlbnRG
cmFtZSwgc3RkOjpvcHRpb25hbDxJbnRTaXplPigpKTsKKworICAgICAgICBpZiAoZnJhbWVJc0Nv
bXBhdGlibGUpCisgICAgICAgICAgICBpbnRlcm5hbFN0YXJ0QW5pbWF0aW9uKCk7CisgICAgICAg
IGVsc2UgaWYgKCFmcmFtZUlzQmVpbmdEZWNvZGVkKSB7CisgICAgICAgICAgICBtX3NvdXJjZS5y
ZXF1ZXN0RnJhbWVBc3luY0RlY29kaW5nQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50
U3Vic2FtcGxpbmdMZXZlbCwgc3RkOjpvcHRpb25hbDxJbnRTaXplPigpKTsKKyAgICAgICAgICAg
IG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6RGVjb2Rpbmc7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGJvb2wgZnJhbWVJc0Nv
bXBhdGlibGUgPSBmcmFtZUhhc0RlY29kZWROYXRpdmVJbWFnZUNvbXBhdGlibGVXaXRoT3B0aW9u
c0F0SW5kZXgobV9jdXJyZW50RnJhbWUsIG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwsIHN0ZDo6
b3B0aW9uYWw8SW50U2l6ZT4oKSk7CisgICAgYm9vbCBmcmFtZUlzQmVpbmdEZWNvZGVkID0gZnJh
bWVJc0JlaW5nRGVjb2RlZEFuZElzQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChtX2N1cnJl
bnRGcmFtZSwgc3RkOjpvcHRpb25hbDxJbnRTaXplPigpKTsKKyAgICAKKyAgICBpZiAoZnJhbWVJ
c0NvbXBhdGlibGUpCisgICAgICAgIGNhbGxEZWNvZGluZ0NhbGxiYWNrcygpOworICAgIGVsc2Ug
aWYgKCFmcmFtZUlzQmVpbmdEZWNvZGVkKSB7CisgICAgICAgIG1fc291cmNlLnJlcXVlc3RGcmFt
ZUFzeW5jRGVjb2RpbmdBdEluZGV4KG1fY3VycmVudEZyYW1lLCBtX2N1cnJlbnRTdWJzYW1wbGlu
Z0xldmVsLCBzdGQ6Om9wdGlvbmFsPEludFNpemU+KCkpOworICAgICAgICBtX2N1cnJlbnRGcmFt
ZURlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkRlY29kaW5nOworICAgIH0KK30KKwor
dm9pZCBCaXRtYXBJbWFnZTo6Y2FsbERlY29kaW5nQ2FsbGJhY2tzKCkKK3sKKyAgICBmb3IgKGF1
dG8mIGRlY29kaW5nQ2FsbGJhY2sgOiBtX2RlY29kaW5nQ2FsbGJhY2tzKQorICAgICAgICBkZWNv
ZGluZ0NhbGxiYWNrKCk7CisgICAgbV9kZWNvZGluZ0NhbGxiYWNrcy5jbGVhcigpOworfQorCiB2
b2lkIEJpdG1hcEltYWdlOjppbWFnZUZyYW1lQXZhaWxhYmxlQXRJbmRleChzaXplX3QgaW5kZXgp
CiB7CiAgICAgTE9HKEltYWdlcywgIkJpdG1hcEltYWdlOjolcyAtICVwIC0gdXJsOiAlcyBbcmVx
dWVzdGVkIGZyYW1lICVsZCBpcyBub3cgYXZhaWxhYmxlXSIsIF9fRlVOQ1RJT05fXywgdGhpcywg
c291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgaW5kZXgpOwpAQCAtNTI0LDEwICs1
NjcsMTQgQEAgdm9pZCBCaXRtYXBJbWFnZTo6aW1hZ2VGcmFtZUF2YWlsYWJsZUF0SQogCiAgICAg
RGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMgPSBmcmFtZURlY29kaW5nU3RhdHVzQXRJbmRl
eChtX2N1cnJlbnRGcmFtZSk7CiAgICAgc2V0Q3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXNJZk5l
Y2Vzc2FyeShkZWNvZGluZ1N0YXR1cyk7Ci0gICAgCisKICAgICBpZiAobV9jdXJyZW50RnJhbWVE
ZWNvZGluZ1N0YXR1cyA9PSBEZWNvZGluZ1N0YXR1czo6Q29tcGxldGUpCiAgICAgICAgICsrbV9k
ZWNvZGVDb3VudEZvclRlc3Rpbmc7CiAKKyAgICAvLyBDYWxsIG1fZGVjb2RpbmdDYWxsYmFja3Mg
b25seSBpZiB0aGUgaW1hZ2UgZnJhbWUgd2FzIGRlY29kZWQgd2l0aCB0aGUgbmF0aXZlIHNpemUu
CisgICAgaWYgKGZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRpb25z
QXRJbmRleChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCwgc3RkOjpv
cHRpb25hbDxJbnRTaXplPigpKSkKKyAgICAgICAgY2FsbERlY29kaW5nQ2FsbGJhY2tzKCk7CisK
ICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmltYWdl
RnJhbWVBdmFpbGFibGUoKnRoaXMsIEltYWdlQW5pbWF0aW5nU3RhdGU6Ok5vLCBudWxscHRyLCBk
ZWNvZGluZ1N0YXR1cyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmgJKHJldmlzaW9uIDIyMTgwMikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3OCw4
ICsxNzgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gYXV0b21hdGljYWxseSBwYXVzZSBvbmNlIGFs
bCBvYnNlcnZlcnMgbm8gbG9uZ2VyIHdhbnQgdG8gcmVuZGVyIHRoZSBpbWFnZSBhbnl3aGVyZS4K
ICAgICB2b2lkIHN0b3BBbmltYXRpb24oKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc2V0QW5pbWF0
aW9uKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbWFnZUZyYW1lQXZhaWxhYmxlQXRJbmRleChzaXpl
X3QpIG92ZXJyaWRlOwotCisgICAgCiAgICAgLy8gSGFuZGxlIHBsYXRmb3JtLXNwZWNpZmljIGRh
dGEKICAgICB2b2lkIGludmFsaWRhdGVQbGF0Zm9ybURhdGEoKTsKIApAQCAtMTk3LDYgKzE5Niw5
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5EZXN0cm95RGVjb2RlZERhdGEoKTsKICAgICB2b2lk
IHNldEN1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzSWZOZWNlc3NhcnkoRGVjb2RpbmdTdGF0dXMp
OwogICAgIGJvb2wgaXNCaXRtYXBJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KKyAgICB2b2lkIGRlY29kZShXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBjYWxsRGVjb2RpbmdDYWxsYmFja3MoKTsKKyAgICB2b2lkIGltYWdlRnJhbWVBdmFp
bGFibGVBdEluZGV4KHNpemVfdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkdW1wKFdURjo6VGV4dFN0
cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gQW5pbWF0ZWQgaW1hZ2VzIG92ZXIgYSBj
ZXJ0YWluIHNpemUgYXJlIGNvbnNpZGVyZWQgbGFyZ2UgZW5vdWdoIHRoYXQgd2UnbGwgb25seSBo
YW5nIG9uIHRvIG9uZSBmcmFtZSBhdCBhIHRpbWUuCkBAIC0yMTEsNiArMjEzLDcgQEAgcHJpdmF0
ZToKICAgICBSZXBldGl0aW9uQ291bnQgbV9yZXBldGl0aW9uc0NvbXBsZXRlIHsgUmVwZXRpdGlv
bkNvdW50Tm9uZSB9OyAvLyBIb3cgbWFueSByZXBldGl0aW9ucyB3ZSd2ZSBmaW5pc2hlZC4KICAg
ICBNb25vdG9uaWNUaW1lIG1fZGVzaXJlZEZyYW1lU3RhcnRUaW1lOyAvLyBUaGUgc3lzdGVtIHRp
bWUgYXQgd2hpY2ggd2UgaG9wZSB0byBzZWUgdGhlIG5leHQgY2FsbCB0byBzdGFydEFuaW1hdGlv
bigpLgogCisgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4sIDE+IG1fZGVjb2RpbmdDYWxsYmFj
a3M7CiAgICAgU2Vjb25kcyBtX2ZyYW1lRGVjb2RpbmdEdXJhdGlvbkZvclRlc3Rpbmc7CiAgICAg
TW9ub3RvbmljVGltZSBtX2Rlc2lyZWRGcmFtZURlY29kZVRpbWVGb3JUZXN0aW5nOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgJKHJldmlzaW9uIDIyMTgw
MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMywxMCArMTMzLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0QW5pbWF0
aW9uQXN5bmNocm9ub3VzbHkoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcEFuaW1hdGlvbigpIHt9
CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0QW5pbWF0aW9uKCkge30KLSAgICB2aXJ0dWFsIHZvaWQg
aW1hZ2VGcmFtZUF2YWlsYWJsZUF0SW5kZXgoc2l6ZV90KSB7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNBbmltYXRpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgYW5pbWF0aW9u
UGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0aW9uU3RhcnRUaW1lci5pc0FjdGl2ZSgp
OyB9Ci0gICAgCisKKyAgICB2aXJ0dWFsIHZvaWQgZGVjb2RlKFdURjo6RnVuY3Rpb248dm9pZCgp
PiYmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZUF0SW5kZXgoc2l6
ZV90KSB7IH0KKwogICAgIC8vIFR5cGljYWxseSB0aGUgQ2FjaGVkSW1hZ2UgdGhhdCBvd25zIHVz
LgogICAgIEltYWdlT2JzZXJ2ZXIqIGltYWdlT2JzZXJ2ZXIoKSBjb25zdCB7IHJldHVybiBtX2lt
YWdlT2JzZXJ2ZXI7IH0KICAgICB2b2lkIHNldEltYWdlT2JzZXJ2ZXIoSW1hZ2VPYnNlcnZlciog
b2JzZXJ2ZXIpIHsgbV9pbWFnZU9ic2VydmVyID0gb2JzZXJ2ZXI7IH0KSW5kZXg6IExheW91dFRl
c3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDIyMTgwMikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDIxIEBACisyMDE3LTA5LTA4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3
YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEhUTUxJbWFnZUVsZW1lbnQuZGVjb29k
ZSgpIG1ldGhvZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc2MDE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAg
ICogZmFzdC9pbWFnZXMvZGVjb2RlLWFuaW1hdGVkLWltYWdlLWV4cGVjdGVkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvaW1hZ2VzL2RlY29kZS1hbmltYXRlZC1pbWFnZS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9kZWNvZGUtcmVuZGVyLWFuaW1hdGVkLWltYWdlLWV4
cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaW1hZ2VzL2RlY29kZS1yZW5kZXIt
YW5pbWF0ZWQtaW1hZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvZGVjb2Rl
LXJlbmRlci1zdGF0aWMtaW1hZ2UtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9pbWFnZXMvZGVjb2RlLXJlbmRlci1zdGF0aWMtaW1hZ2UuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9pbWFnZXMvZGVjb2RlLXN0YXRpYy1pbWFnZS1yZWplY3QtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9kZWNvZGUtc3RhdGljLWltYWdlLXJlamVjdC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9kZWNvZGUtc3RhdGljLWltYWdlLXJl
c29sdmUtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvZGVjb2Rl
LXN0YXRpYy1pbWFnZS1yZXNvbHZlLmh0bWw6IEFkZGVkLgorCiAyMDE3LTA5LTA4ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggZHVwbGljYXRlIGVu
dHJ5IHdhcm5pbmdzIG9uIFdpbmRvd3MuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9k
ZWNvZGUtYW5pbWF0ZWQtaW1hZ2UtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtYW5pbWF0ZWQtaW1hZ2UtZXhwZWN0ZWQuaHRtbAkobm9u
ZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtYW5pbWF0ZWQtaW1h
Z2UtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACis8c3R5bGU+
CisgICAgZGl2IHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4
OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICB9Cis8L3N0eWxlPgorPGJv
ZHk+CisJPHA+VGhpcyB0ZXN0cyBjYWxsaW5nIGRlY29kZSgpIG11bHRpcGxlIHRpbWVzIGZvciBh
biBhbmltYXRlZCBpbWFnZS48L3A+CisgICAgPGRpdj48L2Rpdj4KKzwvYm9keT4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUt
YW5pbWF0ZWQtaW1hZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdl
cy9kZWNvZGUtYW5pbWF0ZWQtaW1hZ2UuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2ltYWdlcy9kZWNvZGUtYW5pbWF0ZWQtaW1hZ2UuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDI3IEBACis8c3R5bGU+CisgICAgY2FudmFzIHsKKyAgICAgICAgd2lkdGg6IDEw
MHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKyAg
ICA8cD5UaGlzIHRlc3RzIGNhbGxpbmcgZGVjb2RlKCkgbXVsdGlwbGUgdGltZXMgZm9yIGFuIGFu
aW1hdGVkIGltYWdlLjwvcD4KKyAgICA8Y2FudmFzPjwvY2FudmFzPgorICAgIDxzY3JpcHQ+Cisg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworICAgICAgICB2YXIgaW1hZ2UgPSBuZXcgSW1hZ2U7CisgICAgICAgIGlt
YWdlLnNyYyA9ICJyZXNvdXJjZXMvYW5pbWF0ZWQtcmVkLWdyZWVuLWJsdWUtcmVwZWF0LTIuZ2lm
IjsKKyAgICAgICAgLy8gRmlyc3QgZGVjb2RlKCkgd2lsbCBkZWNvZGUgdGhlIHJlZCBmcmFtZS4K
KyAgICAgICAgaW1hZ2UuZGVjb2RlKCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAvLyBTZWNv
bmQgZGVjb2RlKCkgd2lsbCBkZWNvZGUgdGhlIGdyZWVuIGZyYW1lLgorICAgICAgICAgICAgaW1h
Z2UuZGVjb2RlKCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IGNhbnZhcyA9IGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOworICAgICAgICAgICAgICAgIGxldCBjb250
ZXh0ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7CisgICAgICAgICAgICAgICAgY29udGV4dC5k
cmF3SW1hZ2UoaW1hZ2UsIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisgICAg
ICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAg
ICA8L3NjcmlwdD4KKzwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29k
ZS1yZW5kZXItYW5pbWF0ZWQtaW1hZ2UtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtcmVuZGVyLWFuaW1hdGVkLWltYWdlLWV4cGVjdGVk
Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RlLXJl
bmRlci1hbmltYXRlZC1pbWFnZS1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTEgQEAKKzxzdHlsZT4KKyAgICBkaXYgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAg
ICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAg
fQorPC9zdHlsZT4KKzxib2R5PgorCTxwPlRoaXMgdGVzdHMgY2FsbGluZyBkZWNvZGUoKSBmb3Ig
YSBhbmltYXRlZCBpbWFnZSB3aGljaCBpcyBhbHNvIGFuIGVsZW1lbnQgaW4gdGhlIERPTSB0cmVl
LjwvcD4KKyAgICA8ZGl2PjwvZGl2PgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9p
bWFnZXMvZGVjb2RlLXJlbmRlci1hbmltYXRlZC1pbWFnZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1yZW5kZXItYW5pbWF0ZWQtaW1hZ2UuaHRtbAko
bm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtcmVuZGVyLWFu
aW1hdGVkLWltYWdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NSBAQAorIDxzdHls
ZT4KKyAgICAgZGl2IHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEw
MHB4OworICAgIH0KKyAgICBjYW52YXMgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAg
IGhlaWdodDogMTAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrOworICAgIH0K
KyAgICBpbWcgeworICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CisgICAgICAgIG1heC1oZWlnaHQ6
IDEwMCU7CisgICAgfQorPC9zdHlsZT4KKzxib2R5PgorICAgIDxwPlRoaXMgdGVzdHMgY2FsbGlu
ZyBkZWNvZGUoKSBmb3IgYSBhbmltYXRlZCBpbWFnZSB3aGljaCBpcyBhbHNvIGFuIGVsZW1lbnQg
aW4gdGhlIERPTSB0cmVlLjwvcD4KKyAgICA8Y2FudmFzPjwvY2FudmFzPgorICAgIDxkaXY+PC9k
aXY+CisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIGludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKCk7
CisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0V2Via2l0SW1hZ2VSZWFkeUV2ZW50
RW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgICAgICB9CisKKyAgICAgICAgdmFyIGltYWdlID0gbmV3IEltYWdlOworICAgICAgICB2YXIg
cGFyZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2Iik7CisgICAgICAgIHBhcmVudC5h
cHBlbmRDaGlsZChpbWFnZSk7CisKKyAgICAgICAgaW1hZ2Uub25sb2FkID0gKCgpID0+IHsKKyAg
ICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgICAgICAgICAgICAgLy8gRm9yY2UgbGF5b3V0IGFuZCBkaXNwbGF5IHNvIHRoZSBpbWFnZSBn
ZXRzIGRyYXduLiBUaGUgaW1hZ2Ugd2lsbCBkcmF3IGl0cyByZWQgZnJhbWUuCisgICAgICAgICAg
ICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQ7CisgICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5kaXNwbGF5KCk7CisKKyAgICAgICAgICAgICAgICAvLyBXYWl0IHRpbGwgZGVjb2Rpbmcg
dGhlIG5leHQgKGdyZWVuKSBmcmFtZSBmaW5pc2hlcyBhbmQgdGhlIGFuaW1hdGlvbiBhZHZhbmNl
cyB0byBpdC4KKyAgICAgICAgICAgICAgICBpbWFnZS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRJ
bWFnZUZyYW1lUmVhZHkiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlcXVlc3QgZGVj
b2RpbmcgdGhlIG5leHQgKGJsdWUpIGZyYW1lLiBXYWl0IHRpbGwgZGVjb2RpbmcgZmluaXNoZXMg
YW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5pbWF0aW9uIGFkdmFuY2VzIHRv
IGl0LgorICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UuZGVjb2RlKCkudGhlbigoKSA9PiB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoImNhbnZhcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250
ZXh0ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhl
aWdodCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LnJlbW92ZSgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIH0sIDApOworICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgaW1hZ2Uu
c3JjID0gInJlc291cmNlcy9hbmltYXRlZC1yZWQtZ3JlZW4tYmx1ZS1yZXBlYXQtMi5naWYiOwor
ICAgIDwvc2NyaXB0PgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVj
b2RlLXJlbmRlci1zdGF0aWMtaW1hZ2UtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtcmVuZGVyLXN0YXRpYy1pbWFnZS1leHBlY3RlZC5o
dG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1yZW5k
ZXItc3RhdGljLWltYWdlLWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MSBAQAorPHN0eWxlPgorICAgIGRpdiB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAg
aGVpZ2h0OiAyMDBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgfQor
PC9zdHlsZT4KKzxib2R5PgorCTxwPlRoaXMgdGVzdHMgY2FsbGluZyBkZWNvZGUoKSBmb3IgYSBz
dGF0aWMgaW1hZ2Ugd2hpY2ggaXMgYWxzbyBhbiBlbGVtZW50IGluIHRoZSBET00gdHJlZS48L3A+
CisgICAgPGRpdj48L2Rpdj4KKzwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW1hZ2Vz
L2RlY29kZS1yZW5kZXItc3RhdGljLWltYWdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9pbWFnZXMvZGVjb2RlLXJlbmRlci1zdGF0aWMtaW1hZ2UuaHRtbAkobm9uZXhpc3Rl
bnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtcmVuZGVyLXN0YXRpYy1pbWFn
ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKKzxzdHlsZT4KKyAgICBkaXYg
eworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQor
ICAgIGltZyB7CisgICAgICAgIG1heC13aWR0aDogMTAwJTsKKyAgICAgICAgbWF4LWhlaWdodDog
MTAwJTsKKyAgICB9Cis8L3N0eWxlPgorPGJvZHk+CisgICAgPHA+VGhpcyB0ZXN0cyBjYWxsaW5n
IGRlY29kZSgpIGZvciBhIHN0YXRpYyBpbWFnZSB3aGljaCBpcyBhbHNvIGFuIGVsZW1lbnQgaW4g
dGhlIERPTSB0cmVlLjwvcD4KKyAgICA8ZGl2PjwvZGl2PgorICAgIDxzY3JpcHQ+CisgICAgICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAg
ICBpbnRlcm5hbHMuY2xlYXJNZW1vcnlDYWNoZSgpOworICAgICAgICAgICAgaW50ZXJuYWxzLnNl
dHRpbmdzLnNldFdlYmtpdEltYWdlUmVhZHlFdmVudEVuYWJsZWQodHJ1ZSk7CisgICAgICAgICAg
ICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0TGFyZ2VJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkKHRy
dWUpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0K
KworICAgICAgICB2YXIgaW1hZ2UgPSBuZXcgSW1hZ2U7CisgICAgICAgIHZhciBwYXJlbnQgPSBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYiKTsKKyAgICAgICAgcGFyZW50LmFwcGVuZENoaWxk
KGltYWdlKTsKKworICAgICAgICBpbWFnZS5vbmxvYWQgPSAoKCkgPT4geworICAgICAgICAgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAg
ICAgICAvLyBGb3JjZSBhc3luYyBpbWFnZSBkZWNvZGluZyBmb3IgdGhpcyBpbWFnZS4KKyAgICAg
ICAgICAgICAgICBpbnRlcm5hbHMuc2V0TGFyZ2VJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkRm9y
VGVzdGluZyhpbWFnZSwgdHJ1ZSk7CisKKyAgICAgICAgICAgICAgICAvLyBGb3JjZSBsYXlvdXQg
YW5kIGRpc3BsYXkgc28gdGhlIGltYWdlIGdldHMgZHJhd24uCisgICAgICAgICAgICAgICAgZG9j
dW1lbnQuYm9keS5vZmZzZXRIZWlnaHQ7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kaXNw
bGF5KCk7CisKKyAgICAgICAgICAgICAgICAvLyB0ZXN0UnVubmVyLmRpc3BsYXkoKSByZXF1ZXN0
cyBhbiBhc3luYyBpbWFnZSBkZWNvZGluZy4gV2FpdCB0aWxsIGl0IGZpbmlzaGVzLgorICAgICAg
ICAgICAgICAgIGltYWdlLmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdEltYWdlRnJhbWVSZWFkeSIs
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAvLyBFeGVjdXRlIHRoaXMgY29kZSBp
biB0aGUgbmV4dCBsb29wIHJ1bi4KKyAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGltYWdlIGZyYW1lIHdhcyBkZWNvZGVkIGZv
ciB0aGUgcmVuZGVyZXIgd2hpY2ggaXMgKDEwMHgxMDApLiBUaGlzCisgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBkZWNvZGUoKSB3aWxsIHJlcXVlc3QgYSBuZXcgZGVjb2Rpbmcgd2l0aCB0aGUg
bmF0aXZlIHNpemUgd2hpY2ggaXMgKDQwMHg0MDApLgorICAgICAgICAgICAgICAgICAgICAgICAg
aW1hZ2UuZGVjb2RlKCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFyZW50LnN0eWxlLndpZHRoID0gIjIwMHB4IjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwYXJlbnQuc3R5bGUuaGVpZ2h0ID0gIjIwMHB4IjsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBObyBleHRyYSBkZWNvZGluZyBpcyByZXF1aXJlZCB0byBkaXNwbGF5IHRoZSBpbWFn
ZSBhZnRlciBjaGFuZ2luZyBpdHMgc2l6ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBUaGUgaW1hZ2UgZnJhbWUgd2FzIGRlY29kZWQgd2l0aCB0aGUgbmF0aXZlIHNpemUgd2hpY2gg
aXMgdGhlIG1heGltdW0gc2l6ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQg
YW4gaW1hZ2UgY2FuIGJlIGRlY29kZWQgd2l0aC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIGltYWdlLnNyYyA9ICJyZXNvdXJjZXMvZ3JlZW4t
NDAweDQwMC5wbmciOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9pbWFnZXMvZGVjb2RlLXN0YXRpYy1pbWFnZS1yZWplY3QtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1zdGF0aWMtaW1hZ2UtcmVq
ZWN0LWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdl
cy9kZWNvZGUtc3RhdGljLWltYWdlLXJlamVjdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMiBAQAorVGVzdCByZWplY3RpbmcgdGhlIGRlY29kZSgpIHByb21pc2Ugd2hl
biBsb2FkaW5nIHRoZSBpbWFnZSBmYWlscy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK0ZhaWxlZCB0byBkZWNvZGUgaW1hZ2Ugd2l0aCBubyBzb3VyY2UuIFJlc3VsdCBpczogRW5j
b2RpbmdFcnJvcjogTWlzc2luZyBzb3VyY2UgVVJMLgorRmFpbGVkIHRvIGRlY29kZSBpbWFnZSB3
aXRoIG5vbi1leGlzdGVudCBzb3VyY2UuIFJlc3VsdCBpczogRW5jb2RpbmdFcnJvcjogTG9hZGlu
ZyBlcnJvci4KK0ZhaWxlZCB0byBkZWNvZGUgaW1hZ2Ugd2l0aCB1bnN1cHBvcnRlZCBpbWFnZSBm
b3JtYXQuIFJlc3VsdCBpczogRW5jb2RpbmdFcnJvcjogTG9hZGluZyBlcnJvci4KK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtc3RhdGljLWltYWdlLXJlamVjdC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1zdGF0aWMtaW1hZ2UtcmVqZWN0
Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RlLXN0
YXRpYy1pbWFnZS1yZWplY3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4IEBACis8
aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXY+PC9kaXY+CisgICAgPHNjcmlwdD4K
KyAgICAgICAgZGVzY3JpcHRpb24oIlRlc3QgcmVqZWN0aW5nIHRoZSBkZWNvZGUoKSBwcm9taXNl
IHdoZW4gbG9hZGluZyB0aGUgaW1hZ2UgZmFpbHMuIik7CisgICAgICAgIGpzVGVzdElzQXN5bmMg
PSB0cnVlOworCisgICAgICAgIHZhciBpbWFnZSA9IG5ldyBJbWFnZTsKKyAgICAgICAgaW1hZ2Uu
ZGVjb2RlKCkKKyAgICAgICAgLmNhdGNoKHJlYXNvbiA9PiB7CisgICAgICAgICAgICBkZWJ1Zygi
RmFpbGVkIHRvIGRlY29kZSBpbWFnZSB3aXRoIG5vIHNvdXJjZS4gUmVzdWx0IGlzOiAiICsgcmVh
c29uKTsKKyAgICAgICAgICAgIGltYWdlLnNyYyA9ICJ3cm9uZ25hbWUucG5nIjsKKyAgICAgICAg
ICAgIHJldHVybiBpbWFnZS5kZWNvZGUoKTsKKyAgICAgICAgfSkKKyAgICAgICAgLmNhdGNoKHJl
YXNvbiA9PiB7CisgICAgICAgICAgICBkZWJ1ZygiRmFpbGVkIHRvIGRlY29kZSBpbWFnZSB3aXRo
IG5vbi1leGlzdGVudCBzb3VyY2UuIFJlc3VsdCBpczogIiArIHJlYXNvbik7CisgICAgICAgICAg
ICBpbWFnZS5zcmMgPSAiMTAweDEwMC1yZWQucHNkIjsKKyAgICAgICAgICAgIHJldHVybiBpbWFn
ZS5kZWNvZGUoKTsKKyAgICAgICAgfSkKKyAgICAgICAgLmNhdGNoKHJlYXNvbiA9PiB7CisgICAg
ICAgICAgICBkZWJ1ZygiRmFpbGVkIHRvIGRlY29kZSBpbWFnZSB3aXRoIHVuc3VwcG9ydGVkIGlt
YWdlIGZvcm1hdC4gUmVzdWx0IGlzOiAiICsgcmVhc29uKTsKKyAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICB9KTsKKyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtc3RhdGljLWltYWdlLXJlc29sdmUtZXhwZWN0
ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtc3Rh
dGljLWltYWdlLXJlc29sdmUtZXhwZWN0ZWQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtc3RhdGljLWltYWdlLXJlc29sdmUtZXhwZWN0ZWQuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACis8c3R5bGU+CisgICAgZGl2IHsKKyAg
ICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICB9Cis8L3N0eWxlPgorPGJvZHk+CisgICAgPHA+VGhp
cyB0ZXN0cyByZXNvbHZpbmcgdGhlIGRlY29kZSgpIHByb21pc2Ugd2hlbiBsb2FkaW5nIGFuZCBk
ZWNvZGluZyBhIHN0YXRpYyBpbWFnZSBzdWNjZWVkcy48L3A+CisgICAgPGRpdj48L2Rpdj4KKzwv
Ym9keT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2ltYWdlcy9kZWNvZGUtc3RhdGljLWltYWdlLXJlc29sdmUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtc3RhdGljLWltYWdlLXJlc29sdmUuaHRtbAko
bm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtc3RhdGljLWlt
YWdlLXJlc29sdmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI0IEBACis8c3R5bGU+
CisgICAgY2FudmFzIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEw
MHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgICAgfQorPC9zdHlsZT4KKzxi
b2R5PgorICAgIDxwPlRoaXMgdGVzdHMgcmVzb2x2aW5nIHRoZSBkZWNvZGUoKSBwcm9taXNlIHdo
ZW4gbG9hZGluZyBhbmQgZGVjb2RpbmcgYSBzdGF0aWMgaW1hZ2Ugc3VjY2VlZHMuPC9wPgorICAg
IDxjYW52YXM+PC9jYW52YXM+CisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAg
IHZhciBpbWFnZSA9IG5ldyBJbWFnZTsKKyAgICAgICAgaW1hZ2Uuc3JjID0gInJlc291cmNlcy9n
cmVlbi00MDB4NDAwLnBuZyI7CisgICAgICAgIGltYWdlLmRlY29kZSgpLnRoZW4oKCkgPT4gewor
ICAgICAgICAgICAgbGV0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIp
OworICAgICAgICAgICAgbGV0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKKyAg
ICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCAwLCAwLCBjYW52YXMud2lkdGgsIGNh
bnZhcy5oZWlnaHQpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9KTsKKyAgICA8L3Nj
cmlwdD4KKzwvYm9keT4K
</data>

          </attachment>
      

    </bug>

</bugzilla>