<?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>179432</bug_id>
          
          <creation_ts>2017-11-08 10:50:39 -0800</creation_ts>
          <short_desc>Support the decoding=&quot;sync/async&quot; syntax for image async attribute</short_desc>
          <delta_ts>2017-12-06 19:36:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>mike</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1369486</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-11-08 10:50:39 -0800</bug_when>
    <thetext>We should support the on/off values for the async attribute, per https://github.com/whatwg/html/issues/1920. This is what Chrome is implementing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369487</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-08 10:51:05 -0800</bug_when>
    <thetext>&lt;rdar://problem/35418350&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369537</commentid>
    <comment_count>2</comment_count>
      <attachid>326351</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-11-08 13:10:21 -0800</bug_when>
    <thetext>Created attachment 326351
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369539</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-11-08 13:11:30 -0800</bug_when>
    <thetext>Let&apos;s hold off until we have consensus.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369561</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-11-08 13:30:30 -0800</bug_when>
    <thetext>https://github.com/whatwg/html/issues/1920</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370133</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-11-09 17:27:56 -0800</bug_when>
    <thetext>Issue has some new naming now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370834</commentid>
    <comment_count>6</comment_count>
      <attachid>326351</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-11-12 22:30:33 -0800</bug_when>
    <thetext>Comment on attachment 326351
Patch

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

Some thoughts on this patch if we come back here to implement this.

&gt; Source/WebCore/html/HTMLImageElement.cpp:230
&gt; +        if (equalLettersIgnoringASCIICase(value, &quot;yes&quot;) || (value.isEmpty() &amp;&amp; !value.isNull()))
&gt; +            m_async = true;
&gt; +        if (equalLettersIgnoringASCIICase(value, &quot;no&quot;))
&gt; +            m_async = false;

This needs to be improved if we decide to do this. The way this code is written if someone removes the async attribute or sets it to a value other than &quot;yes&quot;, &quot;no&quot;, or &quot;&quot;, it will retain a &quot;memory&quot; of the old state. To correctly implement this, the clause needs to always set m_async to some value based on the attribute value, never leave it alone.

Or we can avoid this problem by not having m_async, and have a function that queries the attribute at the time it asks the question. There are two reasons to write code in parseAttribute:

1) If we need to immediately respond when an attribute changes, rather than just letting it affect future behavior.
2) If we need to cache something that is expensive to compute over and over again. The parseAttribute function can either cache the value, or invalidate the cache.

ChangeLog says &quot;on/off&quot;, this code says &quot;yes/no&quot;. Which is right? Why no test?

&gt; Source/WebCore/html/HTMLImageElement.h:99
&gt; +    bool hasAsync() const { return m_async; }

This function name could be improved. What would it mean to say that an image element &quot;has async&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370940</commentid>
    <comment_count>7</comment_count>
      <attachid>326351</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-11-13 10:30:28 -0800</bug_when>
    <thetext>Comment on attachment 326351
Patch

This needs to be updated to match the proposed spec changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373225</commentid>
    <comment_count>8</comment_count>
      <attachid>327218</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-11-17 12:53:02 -0800</bug_when>
    <thetext>Created attachment 327218
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373229</commentid>
    <comment_count>9</comment_count>
      <attachid>327219</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-11-17 13:01:14 -0800</bug_when>
    <thetext>Created attachment 327219
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373264</commentid>
    <comment_count>10</comment_count>
      <attachid>327219</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-11-17 13:43:35 -0800</bug_when>
    <thetext>Comment on attachment 327219
Patch

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

&gt; Source/WebCore/platform/graphics/DecodingOptions.h:59
&gt; +        return hasDecodingMode() &amp;&amp; WTF::get&lt;DecodingMode&gt;(m_decodingModeOrSize) == DecodingMode::Auto;

Don&apos;t you want to return true if !hasDecodingMode()?

&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:327
&gt; +        if ((auto decodingMode = downcast&lt;HTMLImageElement&gt;(element())-&gt;decodingMode()) != DecodingMode::Auto)

This could be downcast&lt;HTMLImageElement&gt;(*element()).decodingMode()

&gt; LayoutTests/fast/images/decoding-attribute-async-small-image.html:2
&gt; +    &lt;img decoding=&quot;async&quot;&gt;

Can we also test setting the attribute on a JS image? var image = new Image(); image.decoding = &apos;async&apos;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373401</commentid>
    <comment_count>11</comment_count>
      <attachid>327267</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-11-17 16:32:19 -0800</bug_when>
    <thetext>Created attachment 327267
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373409</commentid>
    <comment_count>12</comment_count>
      <attachid>327219</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-11-17 16:37:38 -0800</bug_when>
    <thetext>Comment on attachment 327219
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/DecodingOptions.h:59
&gt;&gt; +        return hasDecodingMode() &amp;&amp; WTF::get&lt;DecodingMode&gt;(m_decodingModeOrSize) == DecodingMode::Auto;
&gt; 
&gt; Don&apos;t you want to return true if !hasDecodingMode()?

No because if hasDecodingMode() is false that means hasSize() is true which means this DecodingOptions is Asynchronous. This function is currently used for checking whether the DecodingOptions is initialized or not. Having a DecodingMode equals to Auto means it is not initialized.

&gt;&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:327
&gt;&gt; +        if ((auto decodingMode = downcast&lt;HTMLImageElement&gt;(element())-&gt;decodingMode()) != DecodingMode::Auto)
&gt; 
&gt; This could be downcast&lt;HTMLImageElement&gt;(*element()).decodingMode()

Done.

&gt;&gt; LayoutTests/fast/images/decoding-attribute-async-small-image.html:2
&gt;&gt; +    &lt;img decoding=&quot;async&quot;&gt;
&gt; 
&gt; Can we also test setting the attribute on a JS image? var image = new Image(); image.decoding = &apos;async&apos;?

Done. I also added a test which uses both the &apos;decoding&apos; attribute with the decode() method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374043</commentid>
    <comment_count>13</comment_count>
      <attachid>327267</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-11-21 08:58:38 -0800</bug_when>
    <thetext>Comment on attachment 327267
Patch

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

&gt; Source/WebCore/platform/graphics/DecodingOptions.h:42
&gt; +    DecodingOptions(DecodingMode decodingMode = DecodingMode::Auto)

This constructor should be marked explicit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375073</commentid>
    <comment_count>14</comment_count>
      <attachid>327662</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-11-27 13:02:10 -0800</bug_when>
    <thetext>Created attachment 327662
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375098</commentid>
    <comment_count>15</comment_count>
      <attachid>327670</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-11-27 13:35:41 -0800</bug_when>
    <thetext>Created attachment 327670
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378243</commentid>
    <comment_count>16</comment_count>
      <attachid>327670</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-12-05 11:19:46 -0800</bug_when>
    <thetext>Comment on attachment 327670
Patch

I think we can land this now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378959</commentid>
    <comment_count>17</comment_count>
      <attachid>328664</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-12-06 17:35:43 -0800</bug_when>
    <thetext>Created attachment 328664
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378985</commentid>
    <comment_count>18</comment_count>
      <attachid>328664</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-06 19:36:06 -0800</bug_when>
    <thetext>Comment on attachment 328664
Patch

Clearing flags on attachment: 328664

Committed r225616: &lt;https://trac.webkit.org/changeset/225616&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378986</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-06 19:36:08 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326351</attachid>
            <date>2017-11-08 13:10:21 -0800</date>
            <delta_ts>2017-11-17 12:53:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179432-20171108131020.patch</filename>
            <type>text/plain</type>
            <size>3656</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBlYzIxMWRkMDQ2YTQ3
NzdkN2RjZmJhMTEwYTIxZWM5NGY4MWIxZC4uYjI0ZjUxNGIzNTY3ZTY4NWZlMGQ2MTZiYTZhNTM5
MTgyNTYxYTM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE3LTExLTA4ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9y
dCB0aGUgYXN5bmM9Im9uL29mZiIgc3ludGF4IGZvciBpbWFnZSBhc3luYyBhdHRyaWJ1dGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTQzMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHNob3VsZCBz
dXBwb3J0IHRoZSBvbi9vZmYgdmFsdWVzIGZvciB0aGUgYXN5bmMgYXR0cmlidXRlLCBwZXIKKyAg
ICAgICAgaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9odG1sL2lzc3Vlcy8xOTIwLiBUaGlzIGlz
IHdoYXQgQ2hyb21lIGlzCisgICAgICAgIGltcGxlbWVudGluZy4KKworICAgICAgICAqIGh0bWwv
SFRNTEltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpoYXNBc3luYyBjb25zdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpkZWNvZGluZ01vZGVGb3JJbWFnZURyYXcgY29uc3Qp
OgorCiAyMDE3LTEwLTMxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIgc2hvdWxkIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUg
b2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCBiZDA1
NjgyYWM0YzRmYmI4Y2Q3NjFjYzI2MDNlZjRiY2Q5ZGZhOTczLi5iMWE2MzQyOTVkNzY5NWFhNWRh
NTZkMGYyZTkwMTNlNzRjOWY0ZDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxl
bWVudC5jcHAKQEAgLTIyMyw2ICsyMjMsMTEgQEAgdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHIKICAg
ICAgICAgbV9leHBlcmltZW50YWxJbWFnZU1lbnVFbmFibGVkID0gIXZhbHVlLmlzTnVsbCgpOwog
ICAgICAgICB1cGRhdGVJbWFnZUNvbnRyb2xzKCk7CiAjZW5kaWYKKyAgICB9IGVsc2UgaWYgKG5h
bWUgPT0gYXN5bmNBdHRyKSB7CisgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZSh2YWx1ZSwgInllcyIpIHx8ICh2YWx1ZS5pc0VtcHR5KCkgJiYgIXZhbHVlLmlzTnVsbCgp
KSkKKyAgICAgICAgICAgIG1fYXN5bmMgPSB0cnVlOworICAgICAgICBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJubyIpKQorICAgICAgICAgICAgbV9hc3luYyA9IGZh
bHNlOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChuYW1lID09IG5hbWVBdHRyKSB7CiAgICAg
ICAgICAgICBib29sIHdpbGxIYXZlTmFtZSA9ICF2YWx1ZS5pc051bGwoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKaW5kZXggNWI0NzAyZWVhZDUwMTJmYjIzNzU1NTY0OWVj
YmRkOTk0NmM4MWMwOS4uMmQ2MDg2OWQwNzE1MzJlYWQ3YmVmMDc1ODViNDBkMGI5ZWU1OTJmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKQEAgLTk1LDYgKzk1LDggQEAg
cHVibGljOgogICAgIAogICAgIEhUTUxQaWN0dXJlRWxlbWVudCogcGljdHVyZUVsZW1lbnQoKSBj
b25zdDsKICAgICB2b2lkIHNldFBpY3R1cmVFbGVtZW50KEhUTUxQaWN0dXJlRWxlbWVudCopOwor
ICAgIAorICAgIGJvb2wgaGFzQXN5bmMoKSBjb25zdCB7IHJldHVybiBtX2FzeW5jOyB9CiAKIHBy
b3RlY3RlZDoKICAgICBIVE1MSW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCYsIEhUTUxGb3JtRWxlbWVudCogPSAwKTsKQEAgLTE0Myw2ICsxNDUsNyBAQCBwcml2YXRl
OgogICAgIGZsb2F0IG1faW1hZ2VEZXZpY2VQaXhlbFJhdGlvOwogICAgIGJvb2wgbV9leHBlcmlt
ZW50YWxJbWFnZU1lbnVFbmFibGVkOwogICAgIGJvb2wgbV9oYWROYW1lQmVmb3JlQXR0cmlidXRl
Q2hhbmdlZCB7IGZhbHNlIH07IC8vIEZJWE1FOiBXZSBvbmx5IG5lZWQgdGhpcyBiZWNhdXNlIHBh
cnNlQXR0cmlidXRlKCkgY2FuJ3Qgc2VlIHRoZSBvbGQgdmFsdWUuCisgICAgYm9vbCBtX2FzeW5j
IHsgZmFsc2UgfTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQogICAgIHZvaWQgdXBk
YXRlSW1hZ2VDb250cm9scygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggY2M2NTc1NGQwZjcyMWQ2ZTc0YzlmYjE3YmUzNWNl
NTQyNTA2MTlhMi4uMDJhNmM3OGE4ZWUxMWM3YTMwYmRiNmEwY2FkZjQ1OTQ4ZjMwOGE5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3Bw
CkBAIC0zMjUsNyArMzI1LDcgQEAgRGVjb2RpbmdNb2RlIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpk
ZWNvZGluZ01vZGVGb3JJbWFnZURyYXcoY29uc3QgSW1hZ2UmIGltYWdlLAogI2VuZGlmCiAgICAg
aWYgKGJpdG1hcEltYWdlLmlzTGFyZ2VJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkRm9yVGVzdGlu
ZygpKQogICAgICAgICByZXR1cm4gRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXM7Ci0gICAgaWYg
KGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQoKSkgJiYgZWxlbWVudCgpLT5oYXNBdHRyaWJ1
dGUoYXN5bmNBdHRyKSkKKyAgICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCgpKSAm
JiBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PigqZWxlbWVudCgpKS5oYXNBc3luYygpKQogICAg
ICAgICByZXR1cm4gRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXM7CiAgICAgaWYgKGRvY3VtZW50
KCkuaXNJbWFnZURvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBEZWNvZGluZ01vZGU6OlN5bmNo
cm9ub3VzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327218</attachid>
            <date>2017-11-17 12:53:02 -0800</date>
            <delta_ts>2017-11-17 13:01:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179432-20171117125301.patch</filename>
            <type>text/plain</type>
            <size>14150</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBlYzIxMWRkMDQ2YTQ3
NzdkN2RjZmJhMTEwYTIxZWM5NGY4MWIxZC4uZTA0ODBkNjQzMzk4YmJjNTgyNmFiYTIyMTZhMzVl
YzYxMWZlMjgzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE3LTExLTE3ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9y
dCB0aGUgZGVjb2Rpbmc9InN5bmMvYXN5bmMiIHN5bnRheCBmb3IgaW1hZ2UgYXN5bmMgYXR0cmli
dXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk0
MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdXBw
b3J0IHRoZSBIVE1MRWxlbWVudEltYWdlIGRlY29kaW5nIGF0dHJpYnV0ZSB0byBhbGxvdyBjb250
cm9sbGluZyB0aGUKKyAgICAgICAgZGVjb2Rpbmcgb2YgYW4gaW1hZ2UgYXMgcGVyIGh0dHBzOi8v
Z2l0aHViLmNvbS93aGF0d2cvaHRtbC9wdWxsLzMyMjEuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qv
aW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1hc3luYy1zbWFsbC1pbWFnZS5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2ltYWdlcy9kZWNvZGluZy1hdHRyaWJ1dGUtc3luYy1sYXJnZS1pbWFnZS5o
dG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoKKyAgICAgICAgKiBo
dG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxl
bWVudDo6ZGVjb2RpbmdNb2RlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0RlY29kaW5nT3B0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6RGVj
b2RpbmdPcHRpb25zOjpEZWNvZGluZ09wdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RGVjb2Rp
bmdPcHRpb25zOjppc0F1dG8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGVjb2RpbmdPcHRp
b25zOjppc0FzeW5jaHJvbm91c0NvbXBhdGlibGVXaXRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRlY29kaW5nT3B0aW9uczo6aXNOb25lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94TW9kZWxPYmplY3Q6OmRlY29kaW5nTW9kZUZvckltYWdlRHJhdyBjb25zdCk6IFRoZSB1
c2VyCisgICAgICAgIGNob2ljZXMgc2hvdWxkIGNvbWUgYmVmb3JlIG91ciBoZXVyaXN0aWNzLiBB
bmQgc2luY2UgdGhlIGRlY29kaW5nIGF0dHJpYnV0ZQorICAgICAgICBpcyBwZXIgYW4gaW1hZ2Ug
YW5kIGlzTGFyZ2VJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkRm9yVGVzdGluZygpIGlzIGEgZ2xv
YmFsCisgICAgICAgIHNldHRpbmcsIHRoZSBkZWNvZGluZyBhdHRyaWJ1dGUgc2hvdWxkIGJlIGNo
ZWNrZWQgZmlyc3QuCisKIDIwMTctMTAtMzEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlciBzaG91bGQgYWx3YXlzIHJldHVy
biB0aGUgc2FtZSBvYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dHJpYnV0ZU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMu
aW4KaW5kZXggOTdiNjc0MjczMmExYzZlMWViMGEyNjk4ZDZmOTIzMWQ2NTRhZDAxMS4uMzQ1Mzgx
ODkxMTU3OTg3Y2NmMDU5YWE0Y2VmYmIwNDgyNDg5ODVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KQEAgLTEwNSw2ICsxMDUsNyBAQCBjcm9zc29yaWdpbgog
ZGF0YQogZGF0ZXRpbWUKIGRlY2xhcmUKK2RlY29kaW5nCiBkZWZhdWx0CiBkZWZlcgogZGlyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCBiZDA1NjgyYWM0YzRm
YmI4Y2Q3NjFjYzI2MDNlZjRiY2Q5ZGZhOTczLi42Yjk3YWNmOTcyMGU3MTI2MTY5ZGFhY2U4ZGI5
MWU2N2FiY2M4NTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAK
QEAgLTUzOCw2ICs1MzgsMTYgQEAgYm9vbCBIVE1MSW1hZ2VFbGVtZW50Ojpjb21wbGV0ZSgpIGNv
bnN0CiAgICAgcmV0dXJuIG1faW1hZ2VMb2FkZXIuaW1hZ2VDb21wbGV0ZSgpOwogfQogCitEZWNv
ZGluZ01vZGUgSFRNTEltYWdlRWxlbWVudDo6ZGVjb2RpbmdNb2RlKCkgY29uc3QKK3sKKyAgICBj
b25zdCBBdG9taWNTdHJpbmcmIGRlY29kaW5nTW9kZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oZGVjb2RpbmdBdHRyKTsKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UoZGVjb2RpbmdNb2RlLCAic3luYyIpKQorICAgICAgICByZXR1cm4gRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91czsKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGVj
b2RpbmdNb2RlLCAiYXN5bmMiKSkKKyAgICAgICAgcmV0dXJuIERlY29kaW5nTW9kZTo6QXN5bmNo
cm9ub3VzOworICAgIHJldHVybiBEZWNvZGluZ01vZGU6OkF1dG87Cit9CisgICAgCiB2b2lkIEhU
TUxJbWFnZUVsZW1lbnQ6OmRlY29kZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7
CiAgICAgcmV0dXJuIG1faW1hZ2VMb2FkZXIuZGVjb2RlKFdURk1vdmUocHJvbWlzZSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAppbmRleCA1YjQ3MDJlZWFkNTAxMmZiMjM3
NTU1NjQ5ZWNiZGQ5OTQ2YzgxYzA5Li4zYTExZjBmOGJkZjRlNTNlNDEyNGZhNDFkMjRiNmQ5NWEx
MGNhZmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaApAQCAtMjMsNiAr
MjMsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRlY29kaW5nT3B0aW9ucy5oIgog
I2luY2x1ZGUgIkZvcm1OYW1lZEl0ZW0uaCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCiAj
aW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKQEAgLTc5LDYgKzgwLDggQEAgcHVibGljOgogCiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBjb21wbGV0ZSgpIGNvbnN0OwogCisgICAgRGVjb2RpbmdNb2Rl
IGRlY29kaW5nTW9kZSgpIGNvbnN0OworICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVj
b2RlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogCiAjaWYgUExBVEZPUk0oSU9TKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwKaW5kZXggMTQ4YjkxZDg1M2JlNmU3Y2Fm
YmMwM2Y4NmVlMTVmODUyZTYxODM4Mi4uYWY3MmQzYmM5YTI3OTFkYmVlNGZmOTc2ZDkyNjM3MzI2
MWViYjliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsCkBAIC00
MCw3ICs0MCw3IEBACiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgdXNlTWFwOwog
ICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB2c3BhY2U7CiAgICAgYXR0cmli
dXRlIHVuc2lnbmVkIGxvbmcgd2lkdGg7Ci0gICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBib29sZWFu
IGFzeW5jOworICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRlY29kaW5nOwogCiAg
ICAgLy8gRXh0ZW5zaW9ucwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGNvbXBsZXRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVjb2RpbmdP
cHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZWNvZGluZ09wdGlv
bnMuaAppbmRleCBiY2RjYTE0YjA2ZGQ5OTFmYTZjZjNkMDg1ODUyZTJkZjYzNTAyZDczLi5hMTc3
Zjk2NmMyZDVmNjQwN2YxNWYwYjk1YWQ3N2M0NTZhNTQ2NzkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZWNvZGluZ09wdGlvbnMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZWNvZGluZ09wdGlvbnMuaApAQCAtMzIsMTQgKzMy
LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgRGVjb2RpbmdNb2RlIHsK
LSAgICBOb25lLAorICAgIEF1dG8sCiAgICAgU3luY2hyb25vdXMsCiAgICAgQXN5bmNocm9ub3Vz
CiB9OwogCiBjbGFzcyBEZWNvZGluZ09wdGlvbnMgewogcHVibGljOgotICAgIERlY29kaW5nT3B0
aW9ucyhEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpOb25lKQorICAg
IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2Rl
OjpBdXRvKQogICAgICAgICA6IG1fZGVjb2RpbmdNb2RlT3JTaXplKGRlY29kaW5nTW9kZSkKICAg
ICB7CiAgICAgfQpAQCAtNTQsOSArNTQsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2Rl
Y29kaW5nTW9kZU9yU2l6ZSA9PSBvdGhlci5tX2RlY29kaW5nTW9kZU9yU2l6ZTsKICAgICB9CiAK
LSAgICBib29sIGlzTm9uZSgpIGNvbnN0CisgICAgYm9vbCBpc0F1dG8oKSBjb25zdAogICAgIHsK
LSAgICAgICAgcmV0dXJuIGhhc0RlY29kaW5nTW9kZSgpICYmIFdURjo6Z2V0PERlY29kaW5nTW9k
ZT4obV9kZWNvZGluZ01vZGVPclNpemUpID09IERlY29kaW5nTW9kZTo6Tm9uZTsKKyAgICAgICAg
cmV0dXJuIGhhc0RlY29kaW5nTW9kZSgpICYmIFdURjo6Z2V0PERlY29kaW5nTW9kZT4obV9kZWNv
ZGluZ01vZGVPclNpemUpID09IERlY29kaW5nTW9kZTo6QXV0bzsKICAgICB9CiAgICAgCiAgICAg
Ym9vbCBpc1N5bmNocm9ub3VzKCkgY29uc3QKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBpc0FzeW5jaHJvbm91c0NvbXBhdGlibGVXaXRoKGNvbnN0IERlY29kaW5nT3B0aW9u
cyYgZGVjb2RpbmdPcHRpb25zKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKGlzTm9uZSgpIHx8
IGRlY29kaW5nT3B0aW9ucy5pc05vbmUoKSkKKyAgICAgICAgaWYgKGlzQXV0bygpIHx8IGRlY29k
aW5nT3B0aW9ucy5pc0F1dG8oKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAg
ICAvLyBDb21wYXJpbmcgRGVjb2RpbmdPcHRpb25zIHdpdGggaXNBc3luY2hyb25vdXMoKSBzaG91
bGQgbm90IGhhcHBlbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwCmluZGV4IGNjNjU3NTRkMGY3MjFkNmU3NGM5ZmIxN2JlMzVjZTU0MjUw
NjE5YTIuLjVjZGJkYzA5NWMzMTNhMmY5ZDY3ZjQ1NzI4Y2Q3MzcyNjNlMTFmZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAt
MzIzLDEwICszMjMsMTIgQEAgRGVjb2RpbmdNb2RlIFJlbmRlckJveE1vZGVsT2JqZWN0OjpkZWNv
ZGluZ01vZGVGb3JJbWFnZURyYXcoY29uc3QgSW1hZ2UmIGltYWdlLAogICAgIGlmIChJT1NBcHBs
aWNhdGlvbjo6aXNJQm9va3NTdG9yeXRpbWUoKSkKICAgICAgICAgcmV0dXJuIERlY29kaW5nTW9k
ZTo6U3luY2hyb25vdXM7CiAjZW5kaWYKKyAgICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4oZWxl
bWVudCgpKSkgeworICAgICAgICBpZiAoKGF1dG8gZGVjb2RpbmdNb2RlID0gZG93bmNhc3Q8SFRN
TEltYWdlRWxlbWVudD4oZWxlbWVudCgpKS0+ZGVjb2RpbmdNb2RlKCkpICE9IERlY29kaW5nTW9k
ZTo6QXV0bykKKyAgICAgICAgICAgIHJldHVybiBkZWNvZGluZ01vZGU7CisgICAgfQogICAgIGlm
IChiaXRtYXBJbWFnZS5pc0xhcmdlSW1hZ2VBc3luY0RlY29kaW5nRW5hYmxlZEZvclRlc3Rpbmco
KSkKICAgICAgICAgcmV0dXJuIERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzOwotICAgIGlmIChp
czxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KCkpICYmIGVsZW1lbnQoKS0+aGFzQXR0cmlidXRl
KGFzeW5jQXR0cikpCi0gICAgICAgIHJldHVybiBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91czsK
ICAgICBpZiAoZG9jdW1lbnQoKS5pc0ltYWdlRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIERl
Y29kaW5nTW9kZTo6U3luY2hyb25vdXM7CiAgICAgaWYgKHBhaW50SW5mby5wYWludEJlaGF2aW9y
ICYgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4NTU4MDUwNDNiNjVjNzZjNjMw
YTU0ZmM4ZTFkNTg2YTRjNjBjY2I4Li5iMTA1ZjA4YWRlZGM1MmI4MzY3NTJjZTI2OGZlNmZhYmJi
NzgyYTJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMTEtMTcgIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHRoZSBkZWNv
ZGluZz0ic3luYy9hc3luYyIgc3ludGF4IGZvciBpbWFnZSBhc3luYyBhdHRyaWJ1dGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTQzMgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9pbWFnZXMv
ZGVjb2RpbmctYXR0cmlidXRlLWFzeW5jLXNtYWxsLWltYWdlLWV4cGVjdGVkLmh0bWw6IFJlbmFt
ZWQgZnJvbSBmYXN0L2ltYWdlcy9hc3luYy1hdHRyaWJ1dGUtd2l0aC1zbWFsbC1pbWFnZS1leHBl
Y3RlZC5odG1sLgorICAgICAgICAqIGZhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1hc3lu
Yy1zbWFsbC1pbWFnZS5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMv
YXN5bmMtYXR0cmlidXRlLXdpdGgtc21hbGwtaW1hZ2UuaHRtbC4KKyAgICAgICAgKiBmYXN0L2lt
YWdlcy9kZWNvZGluZy1hdHRyaWJ1dGUtc3luYy1sYXJnZS1pbWFnZS1leHBlY3RlZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9kZWNvZGluZy1hdHRyaWJ1dGUtc3luYy1sYXJn
ZS1pbWFnZS5odG1sOiBBZGRlZC4KKwogMjAxNy0xMC0zMSAgUnlhbiBIYWRkYWQgIDxyeWFuaGFk
ZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBTa2lwIExheW91dFRlc3RzIHRoYXQgcmVs
eSBvbiBtb3VzZSBldmVudHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2Fz
eW5jLWF0dHJpYnV0ZS13aXRoLXNtYWxsLWltYWdlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2ltYWdlcy9hc3luYy1hdHRyaWJ1dGUtd2l0aC1zbWFsbC1pbWFnZS1leHBlY3RlZC5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzhmZjFiZjNjYmU0OWQ4ZmMyYjg2
N2NlMmQzMDM4N2QzYWM1YTMzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2FzeW5jLWF0dHJpYnV0ZS13aXRoLXNt
YWxsLWltYWdlLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTxi
b2R5PgotICAgIDxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW4tMjR4MjQuanBnIj4KLSA8L2JvZHk+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9hc3luYy1hdHRyaWJ1dGUtd2l0
aC1zbWFsbC1pbWFnZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvYXN5bmMtYXR0cmli
dXRlLXdpdGgtc21hbGwtaW1hZ2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ODQ3MjQ5MDVkZjllZTA4ODE5ODBlN2NjNTI5MWEyOWY1NjQ3MmIxYy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9h
c3luYy1hdHRyaWJ1dGUtd2l0aC1zbWFsbC1pbWFnZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MzcgKzAsMCBAQAotPGJvZHk+Ci0gICAgPGltZyBhc3luYz4KLSAgICA8c2NyaXB0PgotICAgICAg
ICBmdW5jdGlvbiBsb2FkSW1hZ2UoaW1hZ2UsIHNyYykgewotICAgICAgICAgICAgcmV0dXJuIG5l
dyBQcm9taXNlKChyZXNvbHZlKSA9PiB7Ci0gICAgICAgICAgICAgICAgaW1hZ2Uub25sb2FkID0g
KCgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2lu
ZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvcmNlIGxheW91
dCBhbmQgZGlzcGxheSBzbyB0aGUgaW1hZ2UgZ2V0cyBkcmF3bi4KLSAgICAgICAgICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0OwotICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIExp
c3RlbiBmb3IgdGhlIHdlYmtpdEltYWdlRnJhbWVSZWFkeSBldmVudCBhZnRlciByZXF1ZXN0aW5n
Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgaW1hZ2UgZGVjb2RpbmcuCi0gICAgICAg
ICAgICAgICAgICAgICAgICBpbWFnZS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRJbWFnZUZyYW1l
UmVhZHkiLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZl
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9LCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwotICAgICAgICAg
ICAgICAgIH0pOwotICAgICAgICAgICAgICAgIGltYWdlLnNyYyA9IHNyYzsKLSAgICAgICAgICAg
IH0pOwotICAgICAgICB9Ci0gICAgICAgIChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgICAgICAgICAg
aW50ZXJuYWxzLmNsZWFyTWVtb3J5Q2FjaGUoKTsKLSAgICAgICAgICAgICAgICBpbnRlcm5hbHMu
c2V0dGluZ3Muc2V0V2Via2l0SW1hZ2VSZWFkeUV2ZW50RW5hYmxlZCh0cnVlKTsKLSAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgICAgIH0KLSAKLSAg
ICAgICAgICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImltZyIpOwotICAg
ICAgICAgICAgbG9hZEltYWdlKGltYWdlLCAicmVzb3VyY2VzL2dyZWVuLTI0eDI0LmpwZyIsIHRy
dWUpLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgICAgICAg
ICB9KTsKLSAgICAgICAgfSkoKTsKLSAgICA8L3NjcmlwdD4KLTwvYm9keT4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1hc3luYy1zbWFsbC1p
bWFnZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0
cmlidXRlLWFzeW5jLXNtYWxsLWltYWdlLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODc4ZmYx
YmYzY2JlNDlkOGZjMmI4NjdjZTJkMzAzODdkM2FjNWEzMwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1hc3luYy1zbWFsbC1pbWFn
ZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMyBAQAorPGJvZHk+CisgICAgPGltZyBzcmM9InJl
c291cmNlcy9ncmVlbi0yNHgyNC5qcGciPgorIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1hc3luYy1zbWFsbC1pbWFnZS5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLWFzeW5jLXNtYWxs
LWltYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmFkZTJiOGQwYmVjMThkMDY0MTMyZGQ3NzA3MGE4YTA0
Y2FjYWFhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29k
aW5nLWF0dHJpYnV0ZS1hc3luYy1zbWFsbC1pbWFnZS5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzxi
b2R5PgorICAgIDxpbWcgZGVjb2Rpbmc9ImFzeW5jIj4KKyAgICA8c2NyaXB0PgorICAgICAgICBm
dW5jdGlvbiBsb2FkSW1hZ2UoaW1hZ2UsIHNyYykgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBQ
cm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgICAgICAgICAgICAgaW1hZ2Uub25sb2FkID0gKCgp
ID0+IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvcmNlIGxheW91dCBh
bmQgZGlzcGxheSBzbyB0aGUgaW1hZ2UgZ2V0cyBkcmF3bi4KKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0OworICAgICAgICAgICAgICAgICAgICAgICAg
dGVzdFJ1bm5lci5kaXNwbGF5KCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIExpc3Rl
biBmb3IgdGhlIHdlYmtpdEltYWdlRnJhbWVSZWFkeSBldmVudCBhZnRlciByZXF1ZXN0aW5nCisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgaW1hZ2UgZGVjb2RpbmcuCisgICAgICAgICAg
ICAgICAgICAgICAgICBpbWFnZS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRJbWFnZUZyYW1lUmVh
ZHkiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICB9LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgICAgIGltYWdlLnNyYyA9IHNyYzsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9CisgICAgICAgIChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzICYmIHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgICAgaW50
ZXJuYWxzLmNsZWFyTWVtb3J5Q2FjaGUoKTsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0
dGluZ3Muc2V0V2Via2l0SW1hZ2VSZWFkeUV2ZW50RW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIH0KKyAKKyAgICAg
ICAgICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImltZyIpOworICAgICAg
ICAgICAgbG9hZEltYWdlKGltYWdlLCAicmVzb3VyY2VzL2dyZWVuLTI0eDI0LmpwZyIsIHRydWUp
LnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSkoKTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1zeW5jLWxhcmdlLWltYWdl
LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGluZy1hdHRyaWJ1
dGUtc3luYy1sYXJnZS1pbWFnZS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3OWYwMzQ4MDFi
MjI5MTUxYzg0NDg0YmNjM2ZlYjdkOTNlYzk2NTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGluZy1hdHRyaWJ1dGUtc3luYy1sYXJnZS1pbWFnZS1leHBl
Y3RlZC5odG1sCkBAIC0wLDAgKzEsMyBAQAorPGJvZHk+CisgICAgPGltZyBzcmM9InJlc291cmNl
cy9ncmVlbi00MDB4NDAwLnBuZyI+CisgPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLXN5bmMtbGFyZ2UtaW1hZ2UuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1zeW5jLWxhcmdlLWltYWdl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjgzYmI1Y2FmNDZiYjdlYmRjODAwYzkwZDc3ZmYyYjkwZDdiMDc3
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0
dHJpYnV0ZS1zeW5jLWxhcmdlLWltYWdlLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPGJvZHk+Cisg
ICAgPGltZyBkZWNvZGluZz0ic3luYyI+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rpb24g
bG9hZEltYWdlKGltYWdlLCBzcmMpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgo
cmVzb2x2ZSkgPT4geworICAgICAgICAgICAgICAgIGltYWdlLm9ubG9hZCA9ICgoKSA9PiB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3JjZSBsYXlvdXQgYW5kIGRpc3Bs
YXkgc28gdGhlIGltYWdlIGdldHMgZHJhd24uCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5ib2R5Lm9mZnNldEhlaWdodDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIuZGlzcGxheSgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IHJlc29sdmUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBpbWFnZS5z
cmMgPSBzcmM7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICAgICAoZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgICAgICAgICAgICAgIGludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKCk7CisgICAg
ICAgICAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldExhcmdlSW1hZ2VBc3luY0RlY29kaW5n
RW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICAgICAgICAgIH0KKyAKKyAgICAgICAgICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoImltZyIpOworICAgICAgICAgICAgbG9hZEltYWdlKGltYWdlLCAicmVzb3Vy
Y2VzL2dyZWVuLTQwMHg0MDAucG5nIiwgdHJ1ZSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KSgpOworICAgIDwvc2Ny
aXB0PgorPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327219</attachid>
            <date>2017-11-17 13:01:14 -0800</date>
            <delta_ts>2017-11-17 16:32:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179432-20171117130113.patch</filename>
            <type>text/plain</type>
            <size>13651</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBlYzIxMWRkMDQ2YTQ3
NzdkN2RjZmJhMTEwYTIxZWM5NGY4MWIxZC4uZTA0ODBkNjQzMzk4YmJjNTgyNmFiYTIyMTZhMzVl
YzYxMWZlMjgzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE3LTExLTE3ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9y
dCB0aGUgZGVjb2Rpbmc9InN5bmMvYXN5bmMiIHN5bnRheCBmb3IgaW1hZ2UgYXN5bmMgYXR0cmli
dXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk0
MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdXBw
b3J0IHRoZSBIVE1MRWxlbWVudEltYWdlIGRlY29kaW5nIGF0dHJpYnV0ZSB0byBhbGxvdyBjb250
cm9sbGluZyB0aGUKKyAgICAgICAgZGVjb2Rpbmcgb2YgYW4gaW1hZ2UgYXMgcGVyIGh0dHBzOi8v
Z2l0aHViLmNvbS93aGF0d2cvaHRtbC9wdWxsLzMyMjEuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qv
aW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1hc3luYy1zbWFsbC1pbWFnZS5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2ltYWdlcy9kZWNvZGluZy1hdHRyaWJ1dGUtc3luYy1sYXJnZS1pbWFnZS5o
dG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoKKyAgICAgICAgKiBo
dG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxl
bWVudDo6ZGVjb2RpbmdNb2RlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0RlY29kaW5nT3B0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6RGVj
b2RpbmdPcHRpb25zOjpEZWNvZGluZ09wdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RGVjb2Rp
bmdPcHRpb25zOjppc0F1dG8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGVjb2RpbmdPcHRp
b25zOjppc0FzeW5jaHJvbm91c0NvbXBhdGlibGVXaXRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRlY29kaW5nT3B0aW9uczo6aXNOb25lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94TW9kZWxPYmplY3Q6OmRlY29kaW5nTW9kZUZvckltYWdlRHJhdyBjb25zdCk6IFRoZSB1
c2VyCisgICAgICAgIGNob2ljZXMgc2hvdWxkIGNvbWUgYmVmb3JlIG91ciBoZXVyaXN0aWNzLiBB
bmQgc2luY2UgdGhlIGRlY29kaW5nIGF0dHJpYnV0ZQorICAgICAgICBpcyBwZXIgYW4gaW1hZ2Ug
YW5kIGlzTGFyZ2VJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkRm9yVGVzdGluZygpIGlzIGEgZ2xv
YmFsCisgICAgICAgIHNldHRpbmcsIHRoZSBkZWNvZGluZyBhdHRyaWJ1dGUgc2hvdWxkIGJlIGNo
ZWNrZWQgZmlyc3QuCisKIDIwMTctMTAtMzEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlciBzaG91bGQgYWx3YXlzIHJldHVy
biB0aGUgc2FtZSBvYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dHJpYnV0ZU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMu
aW4KaW5kZXggOTdiNjc0MjczMmExYzZlMWViMGEyNjk4ZDZmOTIzMWQ2NTRhZDAxMS4uMzQ1Mzgx
ODkxMTU3OTg3Y2NmMDU5YWE0Y2VmYmIwNDgyNDg5ODVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KQEAgLTEwNSw2ICsxMDUsNyBAQCBjcm9zc29yaWdpbgog
ZGF0YQogZGF0ZXRpbWUKIGRlY2xhcmUKK2RlY29kaW5nCiBkZWZhdWx0CiBkZWZlcgogZGlyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCBiZDA1NjgyYWM0YzRm
YmI4Y2Q3NjFjYzI2MDNlZjRiY2Q5ZGZhOTczLi42Yjk3YWNmOTcyMGU3MTI2MTY5ZGFhY2U4ZGI5
MWU2N2FiY2M4NTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAK
QEAgLTUzOCw2ICs1MzgsMTYgQEAgYm9vbCBIVE1MSW1hZ2VFbGVtZW50Ojpjb21wbGV0ZSgpIGNv
bnN0CiAgICAgcmV0dXJuIG1faW1hZ2VMb2FkZXIuaW1hZ2VDb21wbGV0ZSgpOwogfQogCitEZWNv
ZGluZ01vZGUgSFRNTEltYWdlRWxlbWVudDo6ZGVjb2RpbmdNb2RlKCkgY29uc3QKK3sKKyAgICBj
b25zdCBBdG9taWNTdHJpbmcmIGRlY29kaW5nTW9kZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oZGVjb2RpbmdBdHRyKTsKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UoZGVjb2RpbmdNb2RlLCAic3luYyIpKQorICAgICAgICByZXR1cm4gRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91czsKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGVj
b2RpbmdNb2RlLCAiYXN5bmMiKSkKKyAgICAgICAgcmV0dXJuIERlY29kaW5nTW9kZTo6QXN5bmNo
cm9ub3VzOworICAgIHJldHVybiBEZWNvZGluZ01vZGU6OkF1dG87Cit9CisgICAgCiB2b2lkIEhU
TUxJbWFnZUVsZW1lbnQ6OmRlY29kZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7
CiAgICAgcmV0dXJuIG1faW1hZ2VMb2FkZXIuZGVjb2RlKFdURk1vdmUocHJvbWlzZSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAppbmRleCA1YjQ3MDJlZWFkNTAxMmZiMjM3
NTU1NjQ5ZWNiZGQ5OTQ2YzgxYzA5Li4zYTExZjBmOGJkZjRlNTNlNDEyNGZhNDFkMjRiNmQ5NWEx
MGNhZmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaApAQCAtMjMsNiAr
MjMsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRlY29kaW5nT3B0aW9ucy5oIgog
I2luY2x1ZGUgIkZvcm1OYW1lZEl0ZW0uaCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCiAj
aW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKQEAgLTc5LDYgKzgwLDggQEAgcHVibGljOgogCiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBjb21wbGV0ZSgpIGNvbnN0OwogCisgICAgRGVjb2RpbmdNb2Rl
IGRlY29kaW5nTW9kZSgpIGNvbnN0OworICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVj
b2RlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogCiAjaWYgUExBVEZPUk0oSU9TKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwKaW5kZXggMTQ4YjkxZDg1M2JlNmU3Y2Fm
YmMwM2Y4NmVlMTVmODUyZTYxODM4Mi4uYWY3MmQzYmM5YTI3OTFkYmVlNGZmOTc2ZDkyNjM3MzI2
MWViYjliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsCkBAIC00
MCw3ICs0MCw3IEBACiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgdXNlTWFwOwog
ICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB2c3BhY2U7CiAgICAgYXR0cmli
dXRlIHVuc2lnbmVkIGxvbmcgd2lkdGg7Ci0gICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBib29sZWFu
IGFzeW5jOworICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRlY29kaW5nOwogCiAg
ICAgLy8gRXh0ZW5zaW9ucwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGNvbXBsZXRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVjb2RpbmdP
cHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZWNvZGluZ09wdGlv
bnMuaAppbmRleCBiY2RjYTE0YjA2ZGQ5OTFmYTZjZjNkMDg1ODUyZTJkZjYzNTAyZDczLi5hMTc3
Zjk2NmMyZDVmNjQwN2YxNWYwYjk1YWQ3N2M0NTZhNTQ2NzkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZWNvZGluZ09wdGlvbnMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZWNvZGluZ09wdGlvbnMuaApAQCAtMzIsMTQgKzMy
LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgRGVjb2RpbmdNb2RlIHsK
LSAgICBOb25lLAorICAgIEF1dG8sCiAgICAgU3luY2hyb25vdXMsCiAgICAgQXN5bmNocm9ub3Vz
CiB9OwogCiBjbGFzcyBEZWNvZGluZ09wdGlvbnMgewogcHVibGljOgotICAgIERlY29kaW5nT3B0
aW9ucyhEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpOb25lKQorICAg
IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2Rl
OjpBdXRvKQogICAgICAgICA6IG1fZGVjb2RpbmdNb2RlT3JTaXplKGRlY29kaW5nTW9kZSkKICAg
ICB7CiAgICAgfQpAQCAtNTQsOSArNTQsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2Rl
Y29kaW5nTW9kZU9yU2l6ZSA9PSBvdGhlci5tX2RlY29kaW5nTW9kZU9yU2l6ZTsKICAgICB9CiAK
LSAgICBib29sIGlzTm9uZSgpIGNvbnN0CisgICAgYm9vbCBpc0F1dG8oKSBjb25zdAogICAgIHsK
LSAgICAgICAgcmV0dXJuIGhhc0RlY29kaW5nTW9kZSgpICYmIFdURjo6Z2V0PERlY29kaW5nTW9k
ZT4obV9kZWNvZGluZ01vZGVPclNpemUpID09IERlY29kaW5nTW9kZTo6Tm9uZTsKKyAgICAgICAg
cmV0dXJuIGhhc0RlY29kaW5nTW9kZSgpICYmIFdURjo6Z2V0PERlY29kaW5nTW9kZT4obV9kZWNv
ZGluZ01vZGVPclNpemUpID09IERlY29kaW5nTW9kZTo6QXV0bzsKICAgICB9CiAgICAgCiAgICAg
Ym9vbCBpc1N5bmNocm9ub3VzKCkgY29uc3QKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBpc0FzeW5jaHJvbm91c0NvbXBhdGlibGVXaXRoKGNvbnN0IERlY29kaW5nT3B0aW9u
cyYgZGVjb2RpbmdPcHRpb25zKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKGlzTm9uZSgpIHx8
IGRlY29kaW5nT3B0aW9ucy5pc05vbmUoKSkKKyAgICAgICAgaWYgKGlzQXV0bygpIHx8IGRlY29k
aW5nT3B0aW9ucy5pc0F1dG8oKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAg
ICAvLyBDb21wYXJpbmcgRGVjb2RpbmdPcHRpb25zIHdpdGggaXNBc3luY2hyb25vdXMoKSBzaG91
bGQgbm90IGhhcHBlbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwCmluZGV4IGNjNjU3NTRkMGY3MjFkNmU3NGM5ZmIxN2JlMzVjZTU0MjUw
NjE5YTIuLjVjZGJkYzA5NWMzMTNhMmY5ZDY3ZjQ1NzI4Y2Q3MzcyNjNlMTFmZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAt
MzIzLDEwICszMjMsMTIgQEAgRGVjb2RpbmdNb2RlIFJlbmRlckJveE1vZGVsT2JqZWN0OjpkZWNv
ZGluZ01vZGVGb3JJbWFnZURyYXcoY29uc3QgSW1hZ2UmIGltYWdlLAogICAgIGlmIChJT1NBcHBs
aWNhdGlvbjo6aXNJQm9va3NTdG9yeXRpbWUoKSkKICAgICAgICAgcmV0dXJuIERlY29kaW5nTW9k
ZTo6U3luY2hyb25vdXM7CiAjZW5kaWYKKyAgICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4oZWxl
bWVudCgpKSkgeworICAgICAgICBpZiAoKGF1dG8gZGVjb2RpbmdNb2RlID0gZG93bmNhc3Q8SFRN
TEltYWdlRWxlbWVudD4oZWxlbWVudCgpKS0+ZGVjb2RpbmdNb2RlKCkpICE9IERlY29kaW5nTW9k
ZTo6QXV0bykKKyAgICAgICAgICAgIHJldHVybiBkZWNvZGluZ01vZGU7CisgICAgfQogICAgIGlm
IChiaXRtYXBJbWFnZS5pc0xhcmdlSW1hZ2VBc3luY0RlY29kaW5nRW5hYmxlZEZvclRlc3Rpbmco
KSkKICAgICAgICAgcmV0dXJuIERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzOwotICAgIGlmIChp
czxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KCkpICYmIGVsZW1lbnQoKS0+aGFzQXR0cmlidXRl
KGFzeW5jQXR0cikpCi0gICAgICAgIHJldHVybiBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91czsK
ICAgICBpZiAoZG9jdW1lbnQoKS5pc0ltYWdlRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIERl
Y29kaW5nTW9kZTo6U3luY2hyb25vdXM7CiAgICAgaWYgKHBhaW50SW5mby5wYWludEJlaGF2aW9y
ICYgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4NTU4MDUwNDNiNjVjNzZjNjMw
YTU0ZmM4ZTFkNTg2YTRjNjBjY2I4Li5iMTA1ZjA4YWRlZGM1MmI4MzY3NTJjZTI2OGZlNmZhYmJi
NzgyYTJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMTEtMTcgIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHRoZSBkZWNv
ZGluZz0ic3luYy9hc3luYyIgc3ludGF4IGZvciBpbWFnZSBhc3luYyBhdHRyaWJ1dGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTQzMgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9pbWFnZXMv
ZGVjb2RpbmctYXR0cmlidXRlLWFzeW5jLXNtYWxsLWltYWdlLWV4cGVjdGVkLmh0bWw6IFJlbmFt
ZWQgZnJvbSBmYXN0L2ltYWdlcy9hc3luYy1hdHRyaWJ1dGUtd2l0aC1zbWFsbC1pbWFnZS1leHBl
Y3RlZC5odG1sLgorICAgICAgICAqIGZhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1hc3lu
Yy1zbWFsbC1pbWFnZS5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMv
YXN5bmMtYXR0cmlidXRlLXdpdGgtc21hbGwtaW1hZ2UuaHRtbC4KKyAgICAgICAgKiBmYXN0L2lt
YWdlcy9kZWNvZGluZy1hdHRyaWJ1dGUtc3luYy1sYXJnZS1pbWFnZS1leHBlY3RlZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9kZWNvZGluZy1hdHRyaWJ1dGUtc3luYy1sYXJn
ZS1pbWFnZS5odG1sOiBBZGRlZC4KKwogMjAxNy0xMC0zMSAgUnlhbiBIYWRkYWQgIDxyeWFuaGFk
ZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBTa2lwIExheW91dFRlc3RzIHRoYXQgcmVs
eSBvbiBtb3VzZSBldmVudHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2Fz
eW5jLWF0dHJpYnV0ZS13aXRoLXNtYWxsLWltYWdlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2ltYWdlcy9hc3luYy1hdHRyaWJ1dGUtd2l0aC1zbWFsbC1pbWFnZS1leHBlY3RlZC5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzhmZjFiZjNjYmU0OWQ4ZmMyYjg2
N2NlMmQzMDM4N2QzYWM1YTMzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2FzeW5jLWF0dHJpYnV0ZS13aXRoLXNt
YWxsLWltYWdlLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTxi
b2R5PgotICAgIDxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW4tMjR4MjQuanBnIj4KLSA8L2JvZHk+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9hc3luYy1hdHRyaWJ1dGUtd2l0
aC1zbWFsbC1pbWFnZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvYXN5bmMtYXR0cmli
dXRlLXdpdGgtc21hbGwtaW1hZ2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ODQ3MjQ5MDVkZjllZTA4ODE5ODBlN2NjNTI5MWEyOWY1NjQ3MmIxYy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9h
c3luYy1hdHRyaWJ1dGUtd2l0aC1zbWFsbC1pbWFnZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MzcgKzAsMCBAQAotPGJvZHk+Ci0gICAgPGltZyBhc3luYz4KLSAgICA8c2NyaXB0PgotICAgICAg
ICBmdW5jdGlvbiBsb2FkSW1hZ2UoaW1hZ2UsIHNyYykgewotICAgICAgICAgICAgcmV0dXJuIG5l
dyBQcm9taXNlKChyZXNvbHZlKSA9PiB7Ci0gICAgICAgICAgICAgICAgaW1hZ2Uub25sb2FkID0g
KCgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2lu
ZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvcmNlIGxheW91
dCBhbmQgZGlzcGxheSBzbyB0aGUgaW1hZ2UgZ2V0cyBkcmF3bi4KLSAgICAgICAgICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0OwotICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIExp
c3RlbiBmb3IgdGhlIHdlYmtpdEltYWdlRnJhbWVSZWFkeSBldmVudCBhZnRlciByZXF1ZXN0aW5n
Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgaW1hZ2UgZGVjb2RpbmcuCi0gICAgICAg
ICAgICAgICAgICAgICAgICBpbWFnZS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRJbWFnZUZyYW1l
UmVhZHkiLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZl
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9LCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwotICAgICAgICAg
ICAgICAgIH0pOwotICAgICAgICAgICAgICAgIGltYWdlLnNyYyA9IHNyYzsKLSAgICAgICAgICAg
IH0pOwotICAgICAgICB9Ci0gICAgICAgIChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgICAgICAgICAg
aW50ZXJuYWxzLmNsZWFyTWVtb3J5Q2FjaGUoKTsKLSAgICAgICAgICAgICAgICBpbnRlcm5hbHMu
c2V0dGluZ3Muc2V0V2Via2l0SW1hZ2VSZWFkeUV2ZW50RW5hYmxlZCh0cnVlKTsKLSAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgICAgIH0KLSAKLSAg
ICAgICAgICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImltZyIpOwotICAg
ICAgICAgICAgbG9hZEltYWdlKGltYWdlLCAicmVzb3VyY2VzL2dyZWVuLTI0eDI0LmpwZyIsIHRy
dWUpLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgICAgICAg
ICB9KTsKLSAgICAgICAgfSkoKTsKLSAgICA8L3NjcmlwdD4KLTwvYm9keT4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1hc3luYy1zbWFsbC1p
bWFnZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0
cmlidXRlLWFzeW5jLXNtYWxsLWltYWdlLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODc4ZmYx
YmYzY2JlNDlkOGZjMmI4NjdjZTJkMzAzODdkM2FjNWEzMwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1hc3luYy1zbWFsbC1pbWFn
ZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMyBAQAorPGJvZHk+CisgICAgPGltZyBzcmM9InJl
c291cmNlcy9ncmVlbi0yNHgyNC5qcGciPgorIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1hc3luYy1zbWFsbC1pbWFnZS5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLWFzeW5jLXNtYWxs
LWltYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmFkZTJiOGQwYmVjMThkMDY0MTMyZGQ3NzA3MGE4YTA0
Y2FjYWFhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29k
aW5nLWF0dHJpYnV0ZS1hc3luYy1zbWFsbC1pbWFnZS5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzxi
b2R5PgorICAgIDxpbWcgZGVjb2Rpbmc9ImFzeW5jIj4KKyAgICA8c2NyaXB0PgorICAgICAgICBm
dW5jdGlvbiBsb2FkSW1hZ2UoaW1hZ2UsIHNyYykgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBQ
cm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgICAgICAgICAgICAgaW1hZ2Uub25sb2FkID0gKCgp
ID0+IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvcmNlIGxheW91dCBh
bmQgZGlzcGxheSBzbyB0aGUgaW1hZ2UgZ2V0cyBkcmF3bi4KKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0OworICAgICAgICAgICAgICAgICAgICAgICAg
dGVzdFJ1bm5lci5kaXNwbGF5KCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIExpc3Rl
biBmb3IgdGhlIHdlYmtpdEltYWdlRnJhbWVSZWFkeSBldmVudCBhZnRlciByZXF1ZXN0aW5nCisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgaW1hZ2UgZGVjb2RpbmcuCisgICAgICAgICAg
ICAgICAgICAgICAgICBpbWFnZS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRJbWFnZUZyYW1lUmVh
ZHkiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICB9LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgICAgIGltYWdlLnNyYyA9IHNyYzsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9CisgICAgICAgIChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzICYmIHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgICAgaW50
ZXJuYWxzLmNsZWFyTWVtb3J5Q2FjaGUoKTsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0
dGluZ3Muc2V0V2Via2l0SW1hZ2VSZWFkeUV2ZW50RW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIH0KKyAKKyAgICAg
ICAgICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImltZyIpOworICAgICAg
ICAgICAgbG9hZEltYWdlKGltYWdlLCAicmVzb3VyY2VzL2dyZWVuLTI0eDI0LmpwZyIsIHRydWUp
LnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSkoKTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1zeW5jLWxhcmdlLWltYWdl
LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGluZy1hdHRyaWJ1
dGUtc3luYy1sYXJnZS1pbWFnZS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3OWYwMzQ4MDFi
MjI5MTUxYzg0NDg0YmNjM2ZlYjdkOTNlYzk2NTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGluZy1hdHRyaWJ1dGUtc3luYy1sYXJnZS1pbWFnZS1leHBl
Y3RlZC5odG1sCkBAIC0wLDAgKzEsMyBAQAorPGJvZHk+CisgICAgPGltZyBzcmM9InJlc291cmNl
cy9ncmVlbi00MDB4NDAwLnBuZyI+CisgPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLXN5bmMtbGFyZ2UtaW1hZ2UuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1zeW5jLWxhcmdlLWltYWdl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGNiZTcxNGIwMTJhNWFmZWIzODMyMGM2N2IyYjA3NWViNDBkZjhk
OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0
dHJpYnV0ZS1zeW5jLWxhcmdlLWltYWdlLmh0bWwKQEAgLTAsMCArMSwxOSBAQAorPGJvZHk+Cisg
ICAgPGltZyBkZWNvZGluZz0ic3luYyI+CisgICAgPHNjcmlwdD4KKyAgICAgICAgKGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuY2xlYXJNZW1vcnlDYWNoZSgpOworICAg
ICAgICAgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRMYXJnZUltYWdlQXN5bmNEZWNvZGlu
Z0VuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CisgICAgICAgICAgICB9CisgCisgICAgICAgICAgICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCJpbWciKTsKKyAgICAgICAgICAgIGltYWdlLm9ubG9hZCA9ICgoKSA9PiB7
CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgaW1hZ2Uuc3JjID0gInJlc291cmNlcy9ncmVlbi00MDB4NDAwLnBuZyI7CisgICAgICAgIH0p
KCk7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327267</attachid>
            <date>2017-11-17 16:32:19 -0800</date>
            <delta_ts>2017-11-27 13:02:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179432-20171117163218.patch</filename>
            <type>text/plain</type>
            <size>18027</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBlYzIxMWRkMDQ2YTQ3
NzdkN2RjZmJhMTEwYTIxZWM5NGY4MWIxZC4uYmQ2ZTZiZDBjNjZiMmQ2ZWZmOGVmM2RjNTljNWNk
YjQ0ODRhNzhmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE3LTExLTE3ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9y
dCB0aGUgZGVjb2Rpbmc9InN5bmMvYXN5bmMiIHN5bnRheCBmb3IgaW1hZ2UgYXN5bmMgYXR0cmli
dXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk0
MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdXBw
b3J0IHRoZSBIVE1MRWxlbWVudEltYWdlIGRlY29kaW5nIGF0dHJpYnV0ZSB0byBhbGxvdyBjb250
cm9sbGluZyB0aGUKKyAgICAgICAgZGVjb2Rpbmcgb2YgYW4gaW1hZ2UgYXMgcGVyIGh0dHBzOi8v
Z2l0aHViLmNvbS93aGF0d2cvaHRtbC9wdWxsLzMyMjEuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qv
aW1hZ2VzL2RlY29kZS1kZWNvZGluZy1hdHRyaWJ1dGUtYXN5bmMtbGFyZ2UtaW1hZ2UuaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLWFzeW5jLXNtYWxs
LWltYWdlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0
ZS1keW5hbWljLWFzeW5jLXNtYWxsLWltYWdlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvaW1h
Z2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1zeW5jLWxhcmdlLWltYWdlLmh0bWwKKworICAgICAgICAq
IGh0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpkZWNvZGluZ01v
ZGUgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSFRNTEltYWdlRWxlbWVudC5pZGw6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
RGVjb2RpbmdPcHRpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjpEZWNvZGluZ09wdGlvbnM6OkRl
Y29kaW5nT3B0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNvZGluZ09wdGlvbnM6OmlzQXV0
byBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNvZGluZ09wdGlvbnM6OmlzQXN5bmNocm9u
b3VzQ29tcGF0aWJsZVdpdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGVjb2RpbmdPcHRp
b25zOjppc05vbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVj
dDo6ZGVjb2RpbmdNb2RlRm9ySW1hZ2VEcmF3IGNvbnN0KToKKyAgICAgICAgVGhlIGVsZW1lbnQg
YXR0cmlidXRlcyBhbmQgdGhlIGRvY3VtZW50IHNldHRpbmdzIHNob3VsZCBiZSBjaGVja2VkIGJl
Zm9yZQorICAgICAgICBjaGVja2luZyBvdXIgaGV1cmlzdGljcy4gQW5kIHNpbmNlIHRoZSAiZGVj
b2RpbmciIGF0dHJpYnV0ZSBpcyBwZXIgYW4gaW1hZ2UKKyAgICAgICAgYW5kIGlzTGFyZ2VJbWFn
ZUFzeW5jRGVjb2RpbmdFbmFibGVkRm9yVGVzdGluZygpIGlzIGEgZ2xvYmFsIHNldHRpbmcsIHRo
ZQorICAgICAgICBkZWNvZGluZyBhdHRyaWJ1dGUgc2hvdWxkIGJlIGNoZWNrZWQgZmlyc3QuCisK
IDIwMTctMTAtMzEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBu
YXZpZ2F0b3Iuc2VydmljZVdvcmtlciBzaG91bGQgYWx3YXlzIHJldHVybiB0aGUgc2FtZSBvYmpl
Y3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmlu
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KaW5kZXggOTdiNjc0
MjczMmExYzZlMWViMGEyNjk4ZDZmOTIzMWQ2NTRhZDAxMS4uMzQ1MzgxODkxMTU3OTg3Y2NmMDU5
YWE0Y2VmYmIwNDgyNDg5ODVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0cmlidXRlTmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRl
TmFtZXMuaW4KQEAgLTEwNSw2ICsxMDUsNyBAQCBjcm9zc29yaWdpbgogZGF0YQogZGF0ZXRpbWUK
IGRlY2xhcmUKK2RlY29kaW5nCiBkZWZhdWx0CiBkZWZlcgogZGlyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCBiZDA1NjgyYWM0YzRmYmI4Y2Q3NjFjYzI2MDNl
ZjRiY2Q5ZGZhOTczLi42Yjk3YWNmOTcyMGU3MTI2MTY5ZGFhY2U4ZGI5MWU2N2FiY2M4NTk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTUzOCw2ICs1Mzgs
MTYgQEAgYm9vbCBIVE1MSW1hZ2VFbGVtZW50Ojpjb21wbGV0ZSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1faW1hZ2VMb2FkZXIuaW1hZ2VDb21wbGV0ZSgpOwogfQogCitEZWNvZGluZ01vZGUgSFRNTElt
YWdlRWxlbWVudDo6ZGVjb2RpbmdNb2RlKCkgY29uc3QKK3sKKyAgICBjb25zdCBBdG9taWNTdHJp
bmcmIGRlY29kaW5nTW9kZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZGVjb2Rp
bmdBdHRyKTsKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGVjb2RpbmdN
b2RlLCAic3luYyIpKQorICAgICAgICByZXR1cm4gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91czsK
KyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGVjb2RpbmdNb2RlLCAiYXN5
bmMiKSkKKyAgICAgICAgcmV0dXJuIERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzOworICAgIHJl
dHVybiBEZWNvZGluZ01vZGU6OkF1dG87Cit9CisgICAgCiB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6
OmRlY29kZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgcmV0dXJuIG1f
aW1hZ2VMb2FkZXIuZGVjb2RlKFdURk1vdmUocHJvbWlzZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbWFnZUVsZW1lbnQuaAppbmRleCA1YjQ3MDJlZWFkNTAxMmZiMjM3NTU1NjQ5ZWNiZGQ5OTQ2
YzgxYzA5Li4zYTExZjBmOGJkZjRlNTNlNDEyNGZhNDFkMjRiNmQ5NWExMGNhZmQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaApAQCAtMjMsNiArMjMsNyBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgIkRlY29kaW5nT3B0aW9ucy5oIgogI2luY2x1ZGUgIkZvcm1O
YW1lZEl0ZW0uaCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCiAjaW5jbHVkZSAiSFRNTEVs
ZW1lbnQuaCIKQEAgLTc5LDYgKzgwLDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBjb21wbGV0ZSgpIGNvbnN0OwogCisgICAgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSgp
IGNvbnN0OworICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVjb2RlKFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYpOwogCiAjaWYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5pZGwKaW5kZXggMTQ4YjkxZDg1M2JlNmU3Y2FmYmMwM2Y4NmVlMTVmODUy
ZTYxODM4Mi4uYWY3MmQzYmM5YTI3OTFkYmVlNGZmOTc2ZDkyNjM3MzI2MWViYjliNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsCkBAIC00MCw3ICs0MCw3IEBACiAg
ICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgdXNlTWFwOwogICAgIFtSZWZsZWN0XSBh
dHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB2c3BhY2U7CiAgICAgYXR0cmlidXRlIHVuc2lnbmVkIGxv
bmcgd2lkdGg7Ci0gICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBib29sZWFuIGFzeW5jOworICAgIFtS
ZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRlY29kaW5nOwogCiAgICAgLy8gRXh0ZW5zaW9u
cwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGNvbXBsZXRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVjb2RpbmdPcHRpb25zLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZWNvZGluZ09wdGlvbnMuaAppbmRleCBiY2Rj
YTE0YjA2ZGQ5OTFmYTZjZjNkMDg1ODUyZTJkZjYzNTAyZDczLi5hMTc3Zjk2NmMyZDVmNjQwN2Yx
NWYwYjk1YWQ3N2M0NTZhNTQ2NzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9EZWNvZGluZ09wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9EZWNvZGluZ09wdGlvbnMuaApAQCAtMzIsMTQgKzMyLDE0IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgRGVjb2RpbmdNb2RlIHsKLSAgICBOb25lLAorICAg
IEF1dG8sCiAgICAgU3luY2hyb25vdXMsCiAgICAgQXN5bmNocm9ub3VzCiB9OwogCiBjbGFzcyBE
ZWNvZGluZ09wdGlvbnMgewogcHVibGljOgotICAgIERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01v
ZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpOb25lKQorICAgIERlY29kaW5nT3B0aW9u
cyhEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpBdXRvKQogICAgICAg
ICA6IG1fZGVjb2RpbmdNb2RlT3JTaXplKGRlY29kaW5nTW9kZSkKICAgICB7CiAgICAgfQpAQCAt
NTQsOSArNTQsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2RlY29kaW5nTW9kZU9yU2l6
ZSA9PSBvdGhlci5tX2RlY29kaW5nTW9kZU9yU2l6ZTsKICAgICB9CiAKLSAgICBib29sIGlzTm9u
ZSgpIGNvbnN0CisgICAgYm9vbCBpc0F1dG8oKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJu
IGhhc0RlY29kaW5nTW9kZSgpICYmIFdURjo6Z2V0PERlY29kaW5nTW9kZT4obV9kZWNvZGluZ01v
ZGVPclNpemUpID09IERlY29kaW5nTW9kZTo6Tm9uZTsKKyAgICAgICAgcmV0dXJuIGhhc0RlY29k
aW5nTW9kZSgpICYmIFdURjo6Z2V0PERlY29kaW5nTW9kZT4obV9kZWNvZGluZ01vZGVPclNpemUp
ID09IERlY29kaW5nTW9kZTo6QXV0bzsKICAgICB9CiAgICAgCiAgICAgYm9vbCBpc1N5bmNocm9u
b3VzKCkgY29uc3QKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0FzeW5j
aHJvbm91c0NvbXBhdGlibGVXaXRoKGNvbnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRp
b25zKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKGlzTm9uZSgpIHx8IGRlY29kaW5nT3B0aW9u
cy5pc05vbmUoKSkKKyAgICAgICAgaWYgKGlzQXV0bygpIHx8IGRlY29kaW5nT3B0aW9ucy5pc0F1
dG8oKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAvLyBDb21wYXJpbmcg
RGVjb2RpbmdPcHRpb25zIHdpdGggaXNBc3luY2hyb25vdXMoKSBzaG91bGQgbm90IGhhcHBlbi4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3Bw
CmluZGV4IGNjNjU3NTRkMGY3MjFkNmU3NGM5ZmIxN2JlMzVjZTU0MjUwNjE5YTIuLmU0ODU3ZmE4
YzUxOTU5ODk4ODY2NzQzN2EwMGQ4Yzk2MjgyMzk4MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtMzIzLDEwICszMjMsMTMg
QEAgRGVjb2RpbmdNb2RlIFJlbmRlckJveE1vZGVsT2JqZWN0OjpkZWNvZGluZ01vZGVGb3JJbWFn
ZURyYXcoY29uc3QgSW1hZ2UmIGltYWdlLAogICAgIGlmIChJT1NBcHBsaWNhdGlvbjo6aXNJQm9v
a3NTdG9yeXRpbWUoKSkKICAgICAgICAgcmV0dXJuIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXM7
CiAjZW5kaWYKKyAgICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCgpKSkgeworICAg
ICAgICBhdXRvIGRlY29kaW5nTW9kZSA9IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KCplbGVt
ZW50KCkpLmRlY29kaW5nTW9kZSgpOworICAgICAgICBpZiAoZGVjb2RpbmdNb2RlICE9IERlY29k
aW5nTW9kZTo6QXV0bykKKyAgICAgICAgICAgIHJldHVybiBkZWNvZGluZ01vZGU7CisgICAgfQog
ICAgIGlmIChiaXRtYXBJbWFnZS5pc0xhcmdlSW1hZ2VBc3luY0RlY29kaW5nRW5hYmxlZEZvclRl
c3RpbmcoKSkKICAgICAgICAgcmV0dXJuIERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzOwotICAg
IGlmIChpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KCkpICYmIGVsZW1lbnQoKS0+aGFzQXR0
cmlidXRlKGFzeW5jQXR0cikpCi0gICAgICAgIHJldHVybiBEZWNvZGluZ01vZGU6OkFzeW5jaHJv
bm91czsKICAgICBpZiAoZG9jdW1lbnQoKS5pc0ltYWdlRG9jdW1lbnQoKSkKICAgICAgICAgcmV0
dXJuIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXM7CiAgICAgaWYgKHBhaW50SW5mby5wYWludEJl
aGF2aW9yICYgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZykKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4NTU4MDUwNDNiNjVj
NzZjNjMwYTU0ZmM4ZTFkNTg2YTRjNjBjY2I4Li5jMmQzMjRhZWYzYjdkZWNhM2QzMTI4NzZlYWQx
MGU4ZDU2ODFmZTBmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTctMTEtMTcgIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHRo
ZSBkZWNvZGluZz0ic3luYy9hc3luYyIgc3ludGF4IGZvciBpbWFnZSBhc3luYyBhdHRyaWJ1dGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTQzMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9p
bWFnZXMvZGVjb2RlLWRlY29kaW5nLWF0dHJpYnV0ZS1hc3luYy1sYXJnZS1pbWFnZS1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9kZWNvZGUtZGVjb2RpbmctYXR0
cmlidXRlLWFzeW5jLWxhcmdlLWltYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaW1h
Z2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1hc3luYy1zbWFsbC1pbWFnZS1leHBlY3RlZC5odG1sOiBS
ZW5hbWVkIGZyb20gZmFzdC9pbWFnZXMvYXN5bmMtYXR0cmlidXRlLXdpdGgtc21hbGwtaW1hZ2Ut
ZXhwZWN0ZWQuaHRtbC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9kZWNvZGluZy1hdHRyaWJ1dGUt
YXN5bmMtc21hbGwtaW1hZ2UuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvaW1h
Z2VzL2FzeW5jLWF0dHJpYnV0ZS13aXRoLXNtYWxsLWltYWdlLmh0bWwuCisgICAgICAgICogZmFz
dC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLXN5bmMtbGFyZ2UtaW1hZ2UtZXhwZWN0ZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLXN5bmMt
bGFyZ2UtaW1hZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvZGVjb2Rpbmct
YXR0cmlidXRlLWR5bmFtaWMtYXN5bmMtc21hbGwtaW1hZ2UtZXhwZWN0ZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLWR5bmFtaWMtYXN5bmMt
c21hbGwtaW1hZ2UuaHRtbDogQWRkZWQuCisKIDIwMTctMTAtMzEgIFJ5YW4gSGFkZGFkICA8cnlh
bmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gU2tpcCBMYXlvdXRUZXN0cyB0aGF0
IHJlbHkgb24gbW91c2UgZXZlbnRzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdl
cy9hc3luYy1hdHRyaWJ1dGUtd2l0aC1zbWFsbC1pbWFnZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9pbWFnZXMvYXN5bmMtYXR0cmlidXRlLXdpdGgtc21hbGwtaW1hZ2UtZXhwZWN0
ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc4ZmYxYmYzY2JlNDlkOGZj
MmI4NjdjZTJkMzAzODdkM2FjNWEzMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9hc3luYy1hdHRyaWJ1dGUtd2l0
aC1zbWFsbC1pbWFnZS1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBA
Ci08Ym9keT4KLSAgICA8aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuLTI0eDI0LmpwZyI+Ci0gPC9i
b2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvYXN5bmMtYXR0cmlidXRl
LXdpdGgtc21hbGwtaW1hZ2UuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2FzeW5jLWF0
dHJpYnV0ZS13aXRoLXNtYWxsLWltYWdlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDg0NzI0OTA1ZGY5ZWUwODgxOTgwZTdjYzUyOTFhMjlmNTY0NzJiMWMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFn
ZXMvYXN5bmMtYXR0cmlidXRlLXdpdGgtc21hbGwtaW1hZ2UuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDM3ICswLDAgQEAKLTxib2R5PgotICAgIDxpbWcgYXN5bmM+Ci0gICAgPHNjcmlwdD4KLSAg
ICAgICAgZnVuY3Rpb24gbG9hZEltYWdlKGltYWdlLCBzcmMpIHsKLSAgICAgICAgICAgIHJldHVy
biBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewotICAgICAgICAgICAgICAgIGltYWdlLm9ubG9h
ZCA9ICgoKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzICYm
IHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3JjZSBs
YXlvdXQgYW5kIGRpc3BsYXkgc28gdGhlIGltYWdlIGdldHMgZHJhd24uCi0gICAgICAgICAgICAg
ICAgICAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAv
LyBMaXN0ZW4gZm9yIHRoZSB3ZWJraXRJbWFnZUZyYW1lUmVhZHkgZXZlbnQgYWZ0ZXIgcmVxdWVz
dGluZwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGltYWdlIGRlY29kaW5nLgotICAg
ICAgICAgICAgICAgICAgICAgICAgaW1hZ2UuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0SW1hZ2VG
cmFtZVJlYWR5IiwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
b2x2ZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgfSwgZmFsc2UpOwotICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAg
ICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBpbWFnZS5zcmMgPSBzcmM7Ci0gICAgICAg
ICAgICB9KTsKLSAgICAgICAgfQotICAgICAgICAoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBp
ZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICAgICAg
ICAgIGludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKCk7Ci0gICAgICAgICAgICAgICAgaW50ZXJu
YWxzLnNldHRpbmdzLnNldFdlYmtpdEltYWdlUmVhZHlFdmVudEVuYWJsZWQodHJ1ZSk7Ci0gICAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgICAgICB9Ci0g
Ci0gICAgICAgICAgICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJpbWciKTsK
LSAgICAgICAgICAgIGxvYWRJbWFnZShpbWFnZSwgInJlc291cmNlcy9ncmVlbi0yNHgyNC5qcGci
LCB0cnVlKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIH0pKCk7Ci0gICAgPC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtZGVjb2RpbmctYXR0cmlidXRlLWFz
eW5jLWxhcmdlLWltYWdlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9k
ZWNvZGUtZGVjb2RpbmctYXR0cmlidXRlLWFzeW5jLWxhcmdlLWltYWdlLWV4cGVjdGVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMGNiN2RkNzc5NzA3M2U1MGIzMjNjNTU5YmI2NzE5NDM4OWMwZGYwMAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1kZWNvZGluZy1h
dHRyaWJ1dGUtYXN5bmMtbGFyZ2UtaW1hZ2UtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDMgQEAK
Kzxib2R5PgorICAgIDxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW4tNDAweDQwMC5wbmciPgorPC9i
b2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RlLWRlY29kaW5n
LWF0dHJpYnV0ZS1hc3luYy1sYXJnZS1pbWFnZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFn
ZXMvZGVjb2RlLWRlY29kaW5nLWF0dHJpYnV0ZS1hc3luYy1sYXJnZS1pbWFnZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmI4YjdhNmQxMjBmYjE0ZTJjYTVkNDgxOThkMzkyNWQyYTBhMGZlZGMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtZGVjb2RpbmctYXR0cmli
dXRlLWFzeW5jLWxhcmdlLWltYWdlLmh0bWwKQEAgLTAsMCArMSwyMCBAQAorPGJvZHk+CisgICAg
PGltZyBkZWNvZGluZz0iYXN5bmMiPgorICAgIDxzY3JpcHQ+CisgICAgICAgIChmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgICAgICAgICAgICAgaW50ZXJuYWxzLmNsZWFyTWVtb3J5Q2FjaGUoKTsKKyAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIH0KKyAK
KyAgICAgICAgICAgIHZhciBpbWFnZSA9IG5ldyBJbWFnZTsKKyAgICAgICAgICAgIGltYWdlLnNy
YyA9ICJyZXNvdXJjZXMvZ3JlZW4tNDAweDQwMC5wbmciOworICAgICAgICAgICAgaW1hZ2UuZGVj
b2RlKCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgdmFyIG9sZEltYWdlID0gZG9jdW1l
bnQucXVlcnlTZWxlY3RvcigiaW1nIik7CisgICAgICAgICAgICAgICAgb2xkSW1hZ2UucGFyZW50
Tm9kZS5yZXBsYWNlQ2hpbGQoaW1hZ2UsIG9sZEltYWdlKTsKKyAgICAgICAgICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pKCk7CisgICAgPC9zY3JpcHQ+Cis8
L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGluZy1hdHRy
aWJ1dGUtYXN5bmMtc21hbGwtaW1hZ2UtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1hc3luYy1zbWFsbC1pbWFnZS1leHBlY3RlZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRlY2VlMTQxNjk5YTNjYzRjZmQzZjY2ODE1ZmNiYzA5ZmJlZDUwOGYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGluZy1hdHRyaWJ1
dGUtYXN5bmMtc21hbGwtaW1hZ2UtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDMgQEAKKzxib2R5
PgorICAgIDxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW4tMjR4MjQuanBnIj4KKzwvYm9keT4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1hc3lu
Yy1zbWFsbC1pbWFnZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0
cmlidXRlLWFzeW5jLXNtYWxsLWltYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2U1OWQ5NDE1MWRkZmM5
YTg3YWNhNDMyMTU3NDdhMzA1MGU0YjU0YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1hc3luYy1zbWFsbC1pbWFnZS5odG1sCkBA
IC0wLDAgKzEsMzggQEAKKzxib2R5PgorICAgIDxpbWcgZGVjb2Rpbmc9ImFzeW5jIj4KKyAgICA8
c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiBsb2FkSW1hZ2UoaW1hZ2UsIHNyYykgeworICAgICAg
ICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgICAgICAgICAgICAg
aW1hZ2Uub25sb2FkID0gKCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMgJiYgd2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEZvcmNlIGxheW91dCBhbmQgZGlzcGxheSBzbyB0aGUgaW1hZ2UgZ2V0cyBkcmF3bi4KKyAg
ICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0OworICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIExpc3RlbiBmb3IgdGhlIHdlYmtpdEltYWdlRnJhbWVSZWFkeSBldmVudCBh
ZnRlciByZXF1ZXN0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgaW1hZ2UgZGVj
b2RpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZS5hZGRFdmVudExpc3RlbmVyKCJ3
ZWJraXRJbWFnZUZyYW1lUmVhZHkiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9LCBmYWxzZSk7Cisg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2
ZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIGltYWdlLnNyYyA9IHNy
YzsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgKGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuY2xlYXJNZW1vcnlDYWNoZSgpOworICAgICAgICAg
ICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRXZWJraXRJbWFnZVJlYWR5RXZlbnRFbmFibGVk
KHRydWUpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAg
ICAgICAgICAgfQorIAorICAgICAgICAgICAgdmFyIGltYWdlID0gZG9jdW1lbnQucXVlcnlTZWxl
Y3RvcigiaW1nIik7CisgICAgICAgICAgICBsb2FkSW1hZ2UoaW1hZ2UsICJyZXNvdXJjZXMvZ3Jl
ZW4tMjR4MjQuanBnIiwgdHJ1ZSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KSgpOworICAgIDwvc2NyaXB0PgorPC9i
b2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0cmli
dXRlLWR5bmFtaWMtYXN5bmMtc21hbGwtaW1hZ2UtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1keW5hbWljLWFzeW5jLXNtYWxsLWltYWdl
LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGVjZWUxNDE2OTlhM2NjNGNmZDNmNjY4MTVmY2Jj
MDlmYmVkNTA4ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2Rl
Y29kaW5nLWF0dHJpYnV0ZS1keW5hbWljLWFzeW5jLXNtYWxsLWltYWdlLWV4cGVjdGVkLmh0bWwK
QEAgLTAsMCArMSwzIEBACis8Ym9keT4KKyAgICA8aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuLTI0
eDI0LmpwZyI+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9k
ZWNvZGluZy1hdHRyaWJ1dGUtZHluYW1pYy1hc3luYy1zbWFsbC1pbWFnZS5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLWR5bmFtaWMtYXN5bmMtc21hbGwt
aW1hZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lN2Y3YzRiNGEzYTI4NzFhNDUxNWYyNzM4ZDk3MzYwYzc4
NzAxMTFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2Rp
bmctYXR0cmlidXRlLWR5bmFtaWMtYXN5bmMtc21hbGwtaW1hZ2UuaHRtbApAQCAtMCwwICsxLDM5
IEBACis8Ym9keT4KKyAgICA8aW1nIGRlY29kaW5nPSJzeW5jIj4KKyAgICA8c2NyaXB0PgorICAg
ICAgICBmdW5jdGlvbiBsb2FkSW1hZ2UoaW1hZ2UsIHNyYykgeworICAgICAgICAgICAgcmV0dXJu
IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgICAgICAgICAgICAgaW1hZ2Uub25sb2Fk
ID0gKCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYg
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvcmNlIGxh
eW91dCBhbmQgZGlzcGxheSBzbyB0aGUgaW1hZ2UgZ2V0cyBkcmF3bi4KKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0OworICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IExpc3RlbiBmb3IgdGhlIHdlYmtpdEltYWdlRnJhbWVSZWFkeSBldmVudCBhZnRlciByZXF1ZXN0
aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgaW1hZ2UgZGVjb2RpbmcuCisgICAg
ICAgICAgICAgICAgICAgICAgICBpbWFnZS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRJbWFnZUZy
YW1lUmVhZHkiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNv
bHZlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9LCBmYWxzZSk7CisgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIGltYWdlLnNyYyA9IHNyYzsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAg
ICAgICBpbnRlcm5hbHMuY2xlYXJNZW1vcnlDYWNoZSgpOworICAgICAgICAgICAgICAgIGludGVy
bmFscy5zZXR0aW5ncy5zZXRXZWJraXRJbWFnZVJlYWR5RXZlbnRFbmFibGVkKHRydWUpOworICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgfQor
IAorICAgICAgICAgICAgdmFyIGltYWdlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiaW1nIik7
CisgICAgICAgICAgICBpbWFnZS5kZWNvZGluZz0iYXN5bmMiOworICAgICAgICAgICAgbG9hZElt
YWdlKGltYWdlLCAicmVzb3VyY2VzL2dyZWVuLTI0eDI0LmpwZyIsIHRydWUpLnRoZW4oKCkgPT4g
eworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSkoKTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1zeW5jLWxhcmdlLWltYWdlLWV4cGVjdGVkLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGluZy1hdHRyaWJ1dGUtc3luYy1sYXJn
ZS1pbWFnZS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjYjdkZDc3OTcwNzNlNTBiMzIzYzU1
OWJiNjcxOTQzODljMGRmMDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2lt
YWdlcy9kZWNvZGluZy1hdHRyaWJ1dGUtc3luYy1sYXJnZS1pbWFnZS1leHBlY3RlZC5odG1sCkBA
IC0wLDAgKzEsMyBAQAorPGJvZHk+CisgICAgPGltZyBzcmM9InJlc291cmNlcy9ncmVlbi00MDB4
NDAwLnBuZyI+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9k
ZWNvZGluZy1hdHRyaWJ1dGUtc3luYy1sYXJnZS1pbWFnZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLXN5bmMtbGFyZ2UtaW1hZ2UuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40Y2JlNzE0YjAxMmE1YWZlYjM4MzIwYzY3YjJiMDc1ZWI0MGRmOGQ5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLXN5bmMt
bGFyZ2UtaW1hZ2UuaHRtbApAQCAtMCwwICsxLDE5IEBACis8Ym9keT4KKyAgICA8aW1nIGRlY29k
aW5nPSJzeW5jIj4KKyAgICA8c2NyaXB0PgorICAgICAgICAoZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICBpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAg
ICAgICAgICAgIGludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKCk7CisgICAgICAgICAgICAgICAg
aW50ZXJuYWxzLnNldHRpbmdzLnNldExhcmdlSW1hZ2VBc3luY0RlY29kaW5nRW5hYmxlZCh0cnVl
KTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAg
ICAgIH0KKyAKKyAgICAgICAgICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
ImltZyIpOworICAgICAgICAgICAgaW1hZ2Uub25sb2FkID0gKCgpID0+IHsKKyAgICAgICAgICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBpbWFnZS5zcmMg
PSAicmVzb3VyY2VzL2dyZWVuLTQwMHg0MDAucG5nIjsKKyAgICAgICAgfSkoKTsKKyAgICA8L3Nj
cmlwdD4KKzwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327662</attachid>
            <date>2017-11-27 13:02:10 -0800</date>
            <delta_ts>2017-11-27 13:35:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179432-20171127130209.patch</filename>
            <type>text/plain</type>
            <size>26792</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNTE4MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE3LTExLTI3ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCB0
aGUgZGVjb2Rpbmc9InN5bmMvYXN5bmMiIHN5bnRheCBmb3IgaW1hZ2UgYXN5bmMgYXR0cmlidXRl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk0MzIK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBTdXBwb3J0IHRo
ZSBIVE1MRWxlbWVudEltYWdlIGRlY29kaW5nIGF0dHJpYnV0ZSB0byBhbGxvdyBjb250cm9sbGlu
ZyB0aGUKKyAgICAgICAgZGVjb2Rpbmcgb2YgYW4gaW1hZ2UgYXMgcGVyIGh0dHBzOi8vZ2l0aHVi
LmNvbS93aGF0d2cvaHRtbC9wdWxsLzMyMjEuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvaW1hZ2Vz
L2RlY29kZS1kZWNvZGluZy1hdHRyaWJ1dGUtYXN5bmMtbGFyZ2UtaW1hZ2UuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLWFzeW5jLXNtYWxsLWltYWdl
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1keW5h
bWljLWFzeW5jLXNtYWxsLWltYWdlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvaW1hZ2VzL2Rl
Y29kaW5nLWF0dHJpYnV0ZS1zeW5jLWxhcmdlLWltYWdlLmh0bWwKKworICAgICAgICAqIGh0bWwv
SFRNTEF0dHJpYnV0ZU5hbWVzLmluOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpkZWNvZGluZ01vZGUgY29u
c3QpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTEltYWdlRWxlbWVudC5pZGw6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmludGVybmFsU3RhcnRBbmltYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmFkdmFuY2VBbmltYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6OmludGVybmFsQWR2YW5jZUFuaW1hdGlvbik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRGVjb2RpbmdPcHRpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjpE
ZWNvZGluZ09wdGlvbnM6OkRlY29kaW5nT3B0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNv
ZGluZ09wdGlvbnM6OmlzQXV0byBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNvZGluZ09w
dGlvbnM6OmlzQXN5bmNocm9ub3VzQ29tcGF0aWJsZVdpdGggY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGVjb2RpbmdPcHRpb25zOjppc05vbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y2xl
YXJJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVDYWNoZTo6ZnJhbWVBdEluZGV4Q2FjaGVJ
Zk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2RlckNHLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpkZWNvZGluZ01v
ZGVGb3JJbWFnZURyYXcgY29uc3QpOgorICAgICAgICBUaGUgZWxlbWVudCBhdHRyaWJ1dGVzIGFu
ZCB0aGUgZG9jdW1lbnQgc2V0dGluZ3Mgc2hvdWxkIGJlIGNoZWNrZWQgYmVmb3JlCisgICAgICAg
IGNoZWNraW5nIG91ciBoZXVyaXN0aWNzLiBBbmQgc2luY2UgdGhlICJkZWNvZGluZyIgYXR0cmli
dXRlIGlzIHBlciBhbiBpbWFnZQorICAgICAgICBhbmQgaXNMYXJnZUltYWdlQXN5bmNEZWNvZGlu
Z0VuYWJsZWRGb3JUZXN0aW5nKCkgaXMgYSBnbG9iYWwgc2V0dGluZywgdGhlCisgICAgICAgIGRl
Y29kaW5nIGF0dHJpYnV0ZSBzaG91bGQgYmUgY2hlY2tlZCBmaXJzdC4KKwogMjAxNy0xMS0yNyAg
VGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBPbmUgdG9v
IG1hbnkgemVyb2VzIGluIG1hY09TIHZlcnNpb24gbnVtYmVyIGluIEZlYXR1cmVEZWZpbmVzCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgkocmV2aXNpb24g
MjI1MTgxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTEwNSw2ICsxMDUsNyBAQCBjcm9zc29yaWdpbgogZGF0YQogZGF0ZXRp
bWUKIGRlY2xhcmUKK2RlY29kaW5nCiBkZWZhdWx0CiBkZWZlcgogZGlyCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDIyNTE4MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUzOCw2ICs1MzgsMTYgQEAgYm9vbCBIVE1MSW1hZ2VFbGVtZW50Ojpjb21wbGV0ZSgpIGNvbnN0
CiAgICAgcmV0dXJuIG1faW1hZ2VMb2FkZXIuaW1hZ2VDb21wbGV0ZSgpOwogfQogCitEZWNvZGlu
Z01vZGUgSFRNTEltYWdlRWxlbWVudDo6ZGVjb2RpbmdNb2RlKCkgY29uc3QKK3sKKyAgICBjb25z
dCBBdG9taWNTdHJpbmcmIGRlY29kaW5nTW9kZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oZGVjb2RpbmdBdHRyKTsKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoZGVjb2RpbmdNb2RlLCAic3luYyIpKQorICAgICAgICByZXR1cm4gRGVjb2RpbmdNb2RlOjpT
eW5jaHJvbm91czsKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGVjb2Rp
bmdNb2RlLCAiYXN5bmMiKSkKKyAgICAgICAgcmV0dXJuIERlY29kaW5nTW9kZTo6QXN5bmNocm9u
b3VzOworICAgIHJldHVybiBEZWNvZGluZ01vZGU6OkF1dG87Cit9CisgICAgCiB2b2lkIEhUTUxJ
bWFnZUVsZW1lbnQ6OmRlY29kZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAg
ICAgcmV0dXJuIG1faW1hZ2VMb2FkZXIuZGVjb2RlKFdURk1vdmUocHJvbWlzZSkpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgJKHJldmlzaW9uIDIyNTE4MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMyw2ICsyMyw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGVjb2RpbmdPcHRp
b25zLmgiCiAjaW5jbHVkZSAiRm9ybU5hbWVkSXRlbS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlw
ZXMuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgpAQCAtNzksNiArODAsOCBAQCBwdWJsaWM6
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbXBsZXRlKCkgY29uc3Q7CiAKKyAgICBEZWNv
ZGluZ01vZGUgZGVjb2RpbmdNb2RlKCkgY29uc3Q7CisgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkZWNvZGUoUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKICNpZiBQTEFURk9STShJT1Mp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwJKHJldmlzaW9u
IDIyNTE4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERP
TVN0cmluZyB1c2VNYXA7CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHZz
cGFjZTsKICAgICBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB3aWR0aDsKLSAgICBbUmVmbGVjdF0g
YXR0cmlidXRlIGJvb2xlYW4gYXN5bmM7CisgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJp
bmcgZGVjb2Rpbmc7CiAKICAgICAvLyBFeHRlbnNpb25zCiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGJvb2xlYW4gY29tcGxldGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCShyZXZpc2lvbiAyMjUxODEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIxMSw3ICsyMTEsNyBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhp
CiAgICAgICAgIGlmIChtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID09IERlY29kaW5nU3Rh
dHVzOjpEZWNvZGluZykKICAgICAgICAgICAgIHJlc3VsdCA9IEltYWdlRHJhd1Jlc3VsdDo6RGlk
UmVxdWVzdERlY29kaW5nOwogCi0gICAgICAgIGlmICghZnJhbWVIYXNEZWNvZGVkTmF0aXZlSW1h
Z2VDb21wYXRpYmxlV2l0aE9wdGlvbnNBdEluZGV4KG1fY3VycmVudEZyYW1lLCBtX2N1cnJlbnRT
dWJzYW1wbGluZ0xldmVsLCBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91cykpIHsKKyAgICAgICAg
aWYgKCFmcmFtZUhhc0RlY29kZWROYXRpdmVJbWFnZUNvbXBhdGlibGVXaXRoT3B0aW9uc0F0SW5k
ZXgobV9jdXJyZW50RnJhbWUsIG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwsIERlY29kaW5nT3B0
aW9ucyhEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91cykpKSB7CiAgICAgICAgICAgICBpZiAobV9z
aG93RGVidWdCYWNrZ3JvdW5kKQogICAgICAgICAgICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihj
b250ZXh0LCBkZXN0UmVjdCwgQ29sb3IoQ29sb3I6OnllbGxvdykuY29sb3JXaXRoQWxwaGEoMC41
KSwgb3ApOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTIzNCw3ICsyMzQsNyBAQCBJ
bWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpCiAgICAgICAgICAgICBtX3Nv
dXJjZS5kZXN0cm95SW5jb21wbGV0ZURlY29kZWREYXRhKCk7CiAgICAgICAgIAogICAgICAgICBi
b29sIGZyYW1lSXNDb21wYXRpYmxlID0gZnJhbWVIYXNEZWNvZGVkTmF0aXZlSW1hZ2VDb21wYXRp
YmxlV2l0aE9wdGlvbnNBdEluZGV4KG1fY3VycmVudEZyYW1lLCBtX2N1cnJlbnRTdWJzYW1wbGlu
Z0xldmVsLCBEZWNvZGluZ09wdGlvbnMoc2l6ZUZvckRyYXdpbmcpKTsKLSAgICAgICAgYm9vbCBm
cmFtZUlzQmVpbmdEZWNvZGVkID0gZnJhbWVJc0JlaW5nRGVjb2RlZEFuZElzQ29tcGF0aWJsZVdp
dGhPcHRpb25zQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgRGVjb2RpbmdNb2RlOjpBc3luY2hyb25v
dXMpOworICAgICAgICBib29sIGZyYW1lSXNCZWluZ0RlY29kZWQgPSBmcmFtZUlzQmVpbmdEZWNv
ZGVkQW5kSXNDb21wYXRpYmxlV2l0aE9wdGlvbnNBdEluZGV4KG1fY3VycmVudEZyYW1lLCBEZWNv
ZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXMpKTsKICAgICAgICAgCiAgICAg
ICAgIGlmIChmcmFtZUlzQ29tcGF0aWJsZSkgewogICAgICAgICAgICAgaW1hZ2UgPSBmcmFtZUlt
YWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CkBAIC0zNjcsNyArMzY3LDcgQEAgQml0bWFwSW1h
Z2U6OlN0YXJ0QW5pbWF0aW9uU3RhdHVzIEJpdG1hcAogCiAgICAgLy8gRG9uJ3Qgc3RhcnQgYSBu
ZXcgYW5pbWF0aW9uIHVudGlsIHdlIGRyYXcgdGhlIGZyYW1lIHRoYXQgaXMgY3VycmVudGx5IGJl
aW5nIGRlY29kZWQuCiAgICAgc2l6ZV90IG5leHRGcmFtZSA9IChtX2N1cnJlbnRGcmFtZSArIDEp
ICUgZnJhbWVDb3VudCgpOwotICAgIGlmIChmcmFtZUlzQmVpbmdEZWNvZGVkQW5kSXNDb21wYXRp
YmxlV2l0aE9wdGlvbnNBdEluZGV4KG5leHRGcmFtZSwgRGVjb2RpbmdNb2RlOjpBc3luY2hyb25v
dXMpKSB7CisgICAgaWYgKGZyYW1lSXNCZWluZ0RlY29kZWRBbmRJc0NvbXBhdGlibGVXaXRoT3B0
aW9uc0F0SW5kZXgobmV4dEZyYW1lLCBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpBc3lu
Y2hyb25vdXMpKSkgewogICAgICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAg
LSB1cmw6ICVzIFtuZXh0RnJhbWUgPSAlbGQgaXMgYmVpbmcgZGVjb2RlZF0iLCBfX0ZVTkNUSU9O
X18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG5leHRGcmFtZSk7
CiAgICAgICAgIHJldHVybiBTdGFydEFuaW1hdGlvblN0YXR1czo6RGVjb2RpbmdBY3RpdmU7CiAg
ICAgfQpAQCAtNDEwLDcgKzQxMCw3IEBAIEJpdG1hcEltYWdlOjpTdGFydEFuaW1hdGlvblN0YXR1
cyBCaXRtYXAKICAgICAvLyB0aHJvdWdoIHRoZSBjYWxsYmFjayBuZXdGcmFtZU5hdGl2ZUltYWdl
QXZhaWxhYmxlQXRJbmRleCgpLiBPdGhlcndpc2UsIGFkdmFuY2VBbmltYXRpb24oKSB3aWxsIGJl
IGNhbGxlZAogICAgIC8vIHdoZW4gdGhlIHRpbWVyIGZpcmVzIGFuZCBtX2N1cnJlbnRGcmFtZSB3
aWxsIGJlIGFkdmFuY2VkIHRvIG5leHRGcmFtZSBzaW5jZSBpdCBpcyBub3QgYmVpbmcgZGVjb2Rl
ZC4KICAgICBpZiAoc2hvdWxkVXNlQXN5bmNEZWNvZGluZ0ZvckFuaW1hdGVkSW1hZ2VzKCkpIHsK
LSAgICAgICAgaWYgKGZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRp
b25zQXRJbmRleChuZXh0RnJhbWUsIG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwsIHsgfSkpCisg
ICAgICAgIGlmIChmcmFtZUhhc0RlY29kZWROYXRpdmVJbWFnZUNvbXBhdGlibGVXaXRoT3B0aW9u
c0F0SW5kZXgobmV4dEZyYW1lLCBtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsLCBEZWNvZGluZ09w
dGlvbnMoc3RkOjpvcHRpb25hbDxJbnRTaXplPigpKSkpCiAgICAgICAgICAgICBMT0coSW1hZ2Vz
LCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtjYWNoZWRGcmFtZUNvdW50ID0gJWxk
IG5leHRGcmFtZSA9ICVsZF0iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCksICsrbV9jYWNoZWRGcmFtZUNvdW50LCBuZXh0RnJhbWUpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIG1fc291cmNlLnJlcXVlc3RGcmFtZUFzeW5jRGVjb2Rp
bmdBdEluZGV4KG5leHRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCk7CkBAIC00NDUs
NyArNDQ1LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6YWR2YW5jZUFuaW1hdGlvbigpCiAKICAgICAv
LyBEb24ndCBhZHZhbmNlIHRvIG5leHRGcmFtZSB1bmxlc3MgaXRzIGRlY29kaW5nIGhhcyBmaW5p
c2hlZCBvciB3YXMgbm90IHJlcXVpcmVkLgogICAgIHNpemVfdCBuZXh0RnJhbWUgPSAobV9jdXJy
ZW50RnJhbWUgKyAxKSAlIGZyYW1lQ291bnQoKTsKLSAgICBpZiAoIWZyYW1lSXNCZWluZ0RlY29k
ZWRBbmRJc0NvbXBhdGlibGVXaXRoT3B0aW9uc0F0SW5kZXgobmV4dEZyYW1lLCBEZWNvZGluZ01v
ZGU6OkFzeW5jaHJvbm91cykpCisgICAgaWYgKCFmcmFtZUlzQmVpbmdEZWNvZGVkQW5kSXNDb21w
YXRpYmxlV2l0aE9wdGlvbnNBdEluZGV4KG5leHRGcmFtZSwgRGVjb2RpbmdPcHRpb25zKERlY29k
aW5nTW9kZTo6QXN5bmNocm9ub3VzKSkpCiAgICAgICAgIGludGVybmFsQWR2YW5jZUFuaW1hdGlv
bigpOwogICAgIGVsc2UgewogICAgICAgICAvLyBGb3JjZSByZXBhaW50IGlmIHNob3dEZWJ1Z0Jh
Y2tncm91bmQoKSBpcyBvbi4KQEAgLTQ1OCw3ICs0NTgsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjph
ZHZhbmNlQW5pbWF0aW9uKCkKIHZvaWQgQml0bWFwSW1hZ2U6OmludGVybmFsQWR2YW5jZUFuaW1h
dGlvbigpCiB7CiAgICAgbV9jdXJyZW50RnJhbWUgPSAobV9jdXJyZW50RnJhbWUgKyAxKSAlIGZy
YW1lQ291bnQoKTsKLSAgICBBU1NFUlQoIWZyYW1lSXNCZWluZ0RlY29kZWRBbmRJc0NvbXBhdGli
bGVXaXRoT3B0aW9uc0F0SW5kZXgobV9jdXJyZW50RnJhbWUsIERlY29kaW5nTW9kZTo6QXN5bmNo
cm9ub3VzKSk7CisgICAgQVNTRVJUKCFmcmFtZUlzQmVpbmdEZWNvZGVkQW5kSXNDb21wYXRpYmxl
V2l0aE9wdGlvbnNBdEluZGV4KG1fY3VycmVudEZyYW1lLCBEZWNvZGluZ09wdGlvbnMoRGVjb2Rp
bmdNb2RlOjpBc3luY2hyb25vdXMpKSk7CiAKICAgICBkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vz
c2FyeShmYWxzZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rl
Y29kaW5nT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0RlY29kaW5nT3B0aW9ucy5oCShyZXZpc2lvbiAyMjUxODEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZWNvZGluZ09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMzIsMTQgKzMyLDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgRGVj
b2RpbmdNb2RlIHsKLSAgICBOb25lLAorICAgIEF1dG8sCiAgICAgU3luY2hyb25vdXMsCiAgICAg
QXN5bmNocm9ub3VzCiB9OwogCiBjbGFzcyBEZWNvZGluZ09wdGlvbnMgewogcHVibGljOgotICAg
IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2Rl
OjpOb25lKQorICAgIGV4cGxpY2l0IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGUgZGVjb2Rp
bmdNb2RlID0gRGVjb2RpbmdNb2RlOjpBdXRvKQogICAgICAgICA6IG1fZGVjb2RpbmdNb2RlT3JT
aXplKGRlY29kaW5nTW9kZSkKICAgICB7CiAgICAgfQpAQCAtNTQsOSArNTQsOSBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBtX2RlY29kaW5nTW9kZU9yU2l6ZSA9PSBvdGhlci5tX2RlY29kaW5n
TW9kZU9yU2l6ZTsKICAgICB9CiAKLSAgICBib29sIGlzTm9uZSgpIGNvbnN0CisgICAgYm9vbCBp
c0F1dG8oKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGhhc0RlY29kaW5nTW9kZSgpICYm
IFdURjo6Z2V0PERlY29kaW5nTW9kZT4obV9kZWNvZGluZ01vZGVPclNpemUpID09IERlY29kaW5n
TW9kZTo6Tm9uZTsKKyAgICAgICAgcmV0dXJuIGhhc0RlY29kaW5nTW9kZSgpICYmIFdURjo6Z2V0
PERlY29kaW5nTW9kZT4obV9kZWNvZGluZ01vZGVPclNpemUpID09IERlY29kaW5nTW9kZTo6QXV0
bzsKICAgICB9CiAgICAgCiAgICAgYm9vbCBpc1N5bmNocm9ub3VzKCkgY29uc3QKQEAgLTcxLDcg
KzcxLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0FzeW5jaHJvbm91c0NvbXBhdGlibGVXaXRo
KGNvbnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zKSBjb25zdAogICAgIHsKLSAg
ICAgICAgaWYgKGlzTm9uZSgpIHx8IGRlY29kaW5nT3B0aW9ucy5pc05vbmUoKSkKKyAgICAgICAg
aWYgKGlzQXV0bygpIHx8IGRlY29kaW5nT3B0aW9ucy5pc0F1dG8oKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgICAgICAvLyBDb21wYXJpbmcgRGVjb2RpbmdPcHRpb25zIHdpdGgg
aXNBc3luY2hyb25vdXMoKSBzaG91bGQgbm90IGhhcHBlbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCShyZXZpc2lvbiAyMjUxODEp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGZy
YW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBT
dWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIE5hdGl2
ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZl
bCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBE
ZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSA9IDA7CisgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0
ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJz
YW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdP
cHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZv
aWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSA9IDA7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcAko
cmV2aXNpb24gMjI1MTgxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDcgQEAgdW5zaWduZWQgSW1h
Z2VGcmFtZTo6Y2xlYXJJbWFnZSgpCiAKICAgICBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKG1f
bmF0aXZlSW1hZ2UpOwogICAgIG1fbmF0aXZlSW1hZ2UgPSBudWxscHRyOwotICAgIG1fZGVjb2Rp
bmdPcHRpb25zID0geyB9OworICAgIG1fZGVjb2RpbmdPcHRpb25zID0gRGVjb2RpbmdPcHRpb25z
KCk7CiAKICAgICByZXR1cm4gZnJhbWVCeXRlczsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcAkocmV2aXNpb24g
MjI1MTgxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNh
Y2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU4LDcgKzM1OCw3IEBAIGNvbnN0IEltYWdlRnJh
bWUmIEltYWdlRnJhbWVDYWNoZTo6ZnJhbWUKIHsKICAgICBBU1NFUlQoaW5kZXggPCBtX2ZyYW1l
cy5zaXplKCkpOwogICAgIEltYWdlRnJhbWUmIGZyYW1lID0gbV9mcmFtZXNbaW5kZXhdOwotICAg
IGlmICghaXNEZWNvZGVyQXZhaWxhYmxlKCkgfHwgZnJhbWVJc0JlaW5nRGVjb2RlZEFuZElzQ29t
cGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChpbmRleCwgRGVjb2RpbmdNb2RlOjpBc3luY2hyb25v
dXMpKQorICAgIGlmICghaXNEZWNvZGVyQXZhaWxhYmxlKCkgfHwgZnJhbWVJc0JlaW5nRGVjb2Rl
ZEFuZElzQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChpbmRleCwgRGVjb2RpbmdPcHRpb25z
KERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzKSkpCiAgICAgICAgIHJldHVybiBmcmFtZTsKICAg
ICAKICAgICBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWxWYWx1ZSA9IHN1YnNhbXBs
aW5nTGV2ZWwgPyBzdWJzYW1wbGluZ0xldmVsLnZhbHVlKCkgOiBmcmFtZS5zdWJzYW1wbGluZ0xl
dmVsKCk7CkBAIC0zNzgsNyArMzc4LDcgQEAgY29uc3QgSW1hZ2VGcmFtZSYgSW1hZ2VGcmFtZUNh
Y2hlOjpmcmFtZQogICAgICAgICAvLyBXZSBoYXZlIHRvIHBlcmZvcm0gc3luY2hyb25vdXMgaW1h
Z2UgZGVjb2RpbmcgaW4gdGhpcyBjb2RlLiAKICAgICAgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2UgPSBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsVmFsdWUpOwogICAgICAgICAvLyBDbGVhbiB0aGUgb2xkIG5hdGl2ZSBpbWFnZSBh
bmQgc2V0IGEgbmV3IG9uZS4KLSAgICAgICAgY2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoV1RGTW92
ZShuYXRpdmVJbWFnZSksIGluZGV4LCBzdWJzYW1wbGluZ0xldmVsVmFsdWUsIERlY29kaW5nTW9k
ZTo6U3luY2hyb25vdXMpOworICAgICAgICBjYWNoZU5hdGl2ZUltYWdlQXRJbmRleChXVEZNb3Zl
KG5hdGl2ZUltYWdlKSwgaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWxWYWx1ZSwgRGVjb2RpbmdPcHRp
b25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbWFnZURlY29kZXJBVkZPYmpDLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCShy
ZXZpc2lvbiAyMjUxODEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4
LDcgKzc4LDcgQEAgcHVibGljOgogICAgIGJvb2wgZnJhbWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRl
eChzaXplX3QpIGNvbnN0IGZpbmFsOwogICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNp
emVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0
IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6
ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3Qg
RGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpIGZpbmFsOworICAg
IE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxp
bmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9u
cyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwog
CiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWw7CiAgICAg
dm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuaAkocmV2aXNpb24gMjI1MTgxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyAr
NTgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBmcmFtZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4KHNp
emVfdCkgY29uc3QgZmluYWw7CiAgICAgdW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90
LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3QgZmlu
YWw7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3Qs
IFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNv
ZGluZ09wdGlvbnMmID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykgZmluYWw7CisgICAgTmF0
aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xl
dmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9
IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAg
ICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFs
OwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lz
QWxsRGF0YVJlY2VpdmVkOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHJldmlzaW9uIDIyNTE4MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM3NCwxMCArMzc0LDEzIEBAIERlY29kaW5nTW9kZSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
ZGVjb2QKICAgICBpZiAoSU9TQXBwbGljYXRpb246OmlzSUJvb2tzU3Rvcnl0aW1lKCkpCiAgICAg
ICAgIHJldHVybiBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzOwogI2VuZGlmCisgICAgaWYgKGlz
PEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQoKSkpIHsKKyAgICAgICAgYXV0byBkZWNvZGluZ01v
ZGUgPSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PigqZWxlbWVudCgpKS5kZWNvZGluZ01vZGUo
KTsKKyAgICAgICAgaWYgKGRlY29kaW5nTW9kZSAhPSBEZWNvZGluZ01vZGU6OkF1dG8pCisgICAg
ICAgICAgICByZXR1cm4gZGVjb2RpbmdNb2RlOworICAgIH0KICAgICBpZiAoYml0bWFwSW1hZ2Uu
aXNMYXJnZUltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWRGb3JUZXN0aW5nKCkpCiAgICAgICAgIHJl
dHVybiBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91czsKLSAgICBpZiAoaXM8SFRNTEltYWdlRWxl
bWVudD4oZWxlbWVudCgpKSAmJiBlbGVtZW50KCktPmhhc0F0dHJpYnV0ZShhc3luY0F0dHIpKQot
ICAgICAgICByZXR1cm4gRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXM7CiAgICAgaWYgKGRvY3Vt
ZW50KCkuaXNJbWFnZURvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBEZWNvZGluZ01vZGU6OlN5
bmNocm9ub3VzOwogICAgIGlmIChwYWludEluZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZp
b3JTbmFwc2hvdHRpbmcpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjUxODEpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxNy0xMS0yNyAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFN1
cHBvcnQgdGhlIGRlY29kaW5nPSJzeW5jL2FzeW5jIiBzeW50YXggZm9yIGltYWdlIGFzeW5jIGF0
dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc5NDMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBm
YXN0L2ltYWdlcy9hc3luYy1hdHRyaWJ1dGUtd2l0aC1zbWFsbC1pbWFnZS1leHBlY3RlZC5odG1s
OiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvaW1hZ2VzL2FzeW5jLWF0dHJpYnV0ZS13aXRoLXNt
YWxsLWltYWdlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvZGVjb2RlLWRl
Y29kaW5nLWF0dHJpYnV0ZS1hc3luYy1sYXJnZS1pbWFnZS1leHBlY3RlZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2ltYWdlcy9kZWNvZGUtZGVjb2RpbmctYXR0cmlidXRlLWFzeW5jLWxh
cmdlLWltYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaW1hZ2VzL2RlY29kaW5nLWF0
dHJpYnV0ZS1hc3luYy1zbWFsbC1pbWFnZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2ltYWdlcy9kZWNvZGluZy1hdHRyaWJ1dGUtYXN5bmMtc21hbGwtaW1hZ2UuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLWR5bmFtaWMt
YXN5bmMtc21hbGwtaW1hZ2UtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9p
bWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLWR5bmFtaWMtYXN5bmMtc21hbGwtaW1hZ2UuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLXN5bmMtbGFy
Z2UtaW1hZ2UtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvZGVj
b2RpbmctYXR0cmlidXRlLXN5bmMtbGFyZ2UtaW1hZ2UuaHRtbDogQWRkZWQuCisKIDIwMTctMTEt
MjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCB1bnNraXAgc2VydmljZSB3b3JrZXIgdGVzdHMgdGhhdCBhcmUgbm8gbG9uZ2VyIGZsYWt5LgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvYXN5bmMtYXR0cmlidXRlLXdpdGgtc21hbGwt
aW1hZ2UtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdl
cy9hc3luYy1hdHRyaWJ1dGUtd2l0aC1zbWFsbC1pbWFnZS1leHBlY3RlZC5odG1sCShyZXZpc2lv
biAyMjUxODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9hc3luYy1hdHRyaWJ1dGUtd2l0
aC1zbWFsbC1pbWFnZS1leHBlY3RlZC5odG1sCShub25leGlzdGVudCkKQEAgLTEsMyArMCwwIEBA
Ci08Ym9keT4KLSAgICA8aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuLTI0eDI0LmpwZyI+Ci0gPC9i
b2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvYXN5bmMtYXR0cmlidXRlLXdpdGgt
c21hbGwtaW1hZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9h
c3luYy1hdHRyaWJ1dGUtd2l0aC1zbWFsbC1pbWFnZS5odG1sCShyZXZpc2lvbiAyMjUxODEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9hc3luYy1hdHRyaWJ1dGUtd2l0aC1zbWFsbC1pbWFn
ZS5odG1sCShub25leGlzdGVudCkKQEAgLTEsMzcgKzAsMCBAQAotPGJvZHk+Ci0gICAgPGltZyBh
c3luYz4KLSAgICA8c2NyaXB0PgotICAgICAgICBmdW5jdGlvbiBsb2FkSW1hZ2UoaW1hZ2UsIHNy
YykgewotICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7Ci0gICAg
ICAgICAgICAgICAgaW1hZ2Uub25sb2FkID0gKCgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIEZvcmNlIGxheW91dCBhbmQgZGlzcGxheSBzbyB0aGUgaW1hZ2UgZ2V0
cyBkcmF3bi4KLSAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0SGVp
Z2h0OwotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIExpc3RlbiBmb3IgdGhlIHdlYmtpdEltYWdlRnJhbWVS
ZWFkeSBldmVudCBhZnRlciByZXF1ZXN0aW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyB0
aGUgaW1hZ2UgZGVjb2RpbmcuCi0gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZS5hZGRFdmVu
dExpc3RlbmVyKCJ3ZWJraXRJbWFnZUZyYW1lUmVhZHkiLCBmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9
LCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzb2x2ZSgpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIGlt
YWdlLnNyYyA9IHNyYzsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgICAgIChmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy50ZXN0
UnVubmVyKSB7Ci0gICAgICAgICAgICAgICAgaW50ZXJuYWxzLmNsZWFyTWVtb3J5Q2FjaGUoKTsK
LSAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0V2Via2l0SW1hZ2VSZWFkeUV2
ZW50RW5hYmxlZCh0cnVlKTsKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKLSAgICAgICAgICAgIH0KLSAKLSAgICAgICAgICAgIHZhciBpbWFnZSA9IGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoImltZyIpOwotICAgICAgICAgICAgbG9hZEltYWdlKGltYWdlLCAicmVz
b3VyY2VzL2dyZWVuLTI0eDI0LmpwZyIsIHRydWUpLnRoZW4oKCkgPT4gewotICAgICAgICAgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSkoKTsKLSAgICA8L3Nj
cmlwdD4KLTwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1kZWNv
ZGluZy1hdHRyaWJ1dGUtYXN5bmMtbGFyZ2UtaW1hZ2UtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtZGVjb2RpbmctYXR0cmlidXRlLWFz
eW5jLWxhcmdlLWltYWdlLWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9pbWFnZXMvZGVjb2RlLWRlY29kaW5nLWF0dHJpYnV0ZS1hc3luYy1sYXJnZS1pbWFn
ZS1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMyBAQAorPGJvZHk+Cisg
ICAgPGltZyBzcmM9InJlc291cmNlcy9ncmVlbi00MDB4NDAwLnBuZyI+Cis8L2JvZHk+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtZGVjb2RpbmctYXR0cmlidXRlLWFzeW5j
LWxhcmdlLWltYWdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMv
ZGVjb2RlLWRlY29kaW5nLWF0dHJpYnV0ZS1hc3luYy1sYXJnZS1pbWFnZS5odG1sCShub25leGlz
dGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1kZWNvZGluZy1hdHRyaWJ1
dGUtYXN5bmMtbGFyZ2UtaW1hZ2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIwIEBA
Cis8Ym9keT4KKyAgICA8aW1nIGRlY29kaW5nPSJhc3luYyI+CisgICAgPHNjcmlwdD4KKyAgICAg
ICAgKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuY2xlYXJNZW1vcnlD
YWNoZSgpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAg
ICAgICAgICAgfQorIAorICAgICAgICAgICAgdmFyIGltYWdlID0gbmV3IEltYWdlOworICAgICAg
ICAgICAgaW1hZ2Uuc3JjID0gInJlc291cmNlcy9ncmVlbi00MDB4NDAwLnBuZyI7CisgICAgICAg
ICAgICBpbWFnZS5kZWNvZGUoKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICB2YXIgb2xk
SW1hZ2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJpbWciKTsKKyAgICAgICAgICAgICAgICBv
bGRJbWFnZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChpbWFnZSwgb2xkSW1hZ2UpOworICAgICAg
ICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSkoKTsKKyAg
ICA8L3NjcmlwdD4KKzwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29k
aW5nLWF0dHJpYnV0ZS1hc3luYy1zbWFsbC1pbWFnZS1leHBlY3RlZC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1hc3luYy1zbWFs
bC1pbWFnZS1leHBlY3RlZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1hc3luYy1zbWFsbC1pbWFnZS1leHBlY3RlZC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMyBAQAorPGJvZHk+CisgICAgPGltZyBzcmM9InJl
c291cmNlcy9ncmVlbi0yNHgyNC5qcGciPgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLWFzeW5jLXNtYWxsLWltYWdlLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLWFzeW5j
LXNtYWxsLWltYWdlLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbWFn
ZXMvZGVjb2RpbmctYXR0cmlidXRlLWFzeW5jLXNtYWxsLWltYWdlLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwzOCBAQAorPGJvZHk+CisgICAgPGltZyBkZWNvZGluZz0iYXN5bmMiPgor
ICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0aW9uIGxvYWRJbWFnZShpbWFnZSwgc3JjKSB7Cisg
ICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAgICAgICAgICAg
ICAgICBpbWFnZS5vbmxvYWQgPSAoKCkgPT4geworICAgICAgICAgICAgICAgICAgICBpZiAod2lu
ZG93LmludGVybmFscyAmJiB3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gRm9yY2UgbGF5b3V0IGFuZCBkaXNwbGF5IHNvIHRoZSBpbWFnZSBnZXRzIGRyYXdu
LgorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQ7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmRpc3BsYXkoKTsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gTGlzdGVuIGZvciB0aGUgd2Via2l0SW1hZ2VGcmFtZVJlYWR5IGV2
ZW50IGFmdGVyIHJlcXVlc3RpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBpbWFn
ZSBkZWNvZGluZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlLmFkZEV2ZW50TGlzdGVu
ZXIoIndlYmtpdEltYWdlRnJhbWVSZWFkeSIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sIGZhbHNl
KTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXNvbHZlKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgaW1hZ2Uuc3Jj
ID0gc3JjOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICAoZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgICAgICAgICAgICAgIGludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKCk7CisgICAg
ICAgICAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFdlYmtpdEltYWdlUmVhZHlFdmVudEVu
YWJsZWQodHJ1ZSk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CisgICAgICAgICAgICB9CisgCisgICAgICAgICAgICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCJpbWciKTsKKyAgICAgICAgICAgIGxvYWRJbWFnZShpbWFnZSwgInJlc291cmNl
cy9ncmVlbi0yNHgyNC5qcGciLCB0cnVlKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pKCk7CisgICAgPC9zY3JpcHQ+
Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGluZy1hdHRyaWJ1
dGUtZHluYW1pYy1hc3luYy1zbWFsbC1pbWFnZS1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1keW5hbWljLWFzeW5j
LXNtYWxsLWltYWdlLWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLWR5bmFtaWMtYXN5bmMtc21hbGwtaW1hZ2Ut
ZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMgQEAKKzxib2R5PgorICAg
IDxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW4tMjR4MjQuanBnIj4KKzwvYm9keT4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1keW5hbWljLWFzeW5jLXNt
YWxsLWltYWdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVj
b2RpbmctYXR0cmlidXRlLWR5bmFtaWMtYXN5bmMtc21hbGwtaW1hZ2UuaHRtbAkobm9uZXhpc3Rl
bnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGluZy1hdHRyaWJ1dGUtZHluYW1p
Yy1hc3luYy1zbWFsbC1pbWFnZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzkgQEAK
Kzxib2R5PgorICAgIDxpbWcgZGVjb2Rpbmc9InN5bmMiPgorICAgIDxzY3JpcHQ+CisgICAgICAg
IGZ1bmN0aW9uIGxvYWRJbWFnZShpbWFnZSwgc3JjKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3
IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAgICAgICAgICAgICAgICBpbWFnZS5vbmxvYWQgPSAo
KCkgPT4geworICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscyAmJiB3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9yY2UgbGF5b3V0
IGFuZCBkaXNwbGF5IHNvIHRoZSBpbWFnZSBnZXRzIGRyYXduLgorICAgICAgICAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQ7CisgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLmRpc3BsYXkoKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGlz
dGVuIGZvciB0aGUgd2Via2l0SW1hZ2VGcmFtZVJlYWR5IGV2ZW50IGFmdGVyIHJlcXVlc3RpbmcK
KyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBpbWFnZSBkZWNvZGluZy4KKyAgICAgICAg
ICAgICAgICAgICAgICAgIGltYWdlLmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdEltYWdlRnJhbWVS
ZWFkeSIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICAgICAgaW1hZ2Uuc3JjID0gc3JjOworICAgICAgICAgICAg
fSk7CisgICAgICAgIH0KKworICAgICAgICAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAo
d2luZG93LmludGVybmFscyAmJiB3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAg
IGludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKCk7CisgICAgICAgICAgICAgICAgaW50ZXJuYWxz
LnNldHRpbmdzLnNldFdlYmtpdEltYWdlUmVhZHlFdmVudEVuYWJsZWQodHJ1ZSk7CisgICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICB9CisgCisg
ICAgICAgICAgICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJpbWciKTsKKyAg
ICAgICAgICAgIGltYWdlLmRlY29kaW5nPSJhc3luYyI7CisgICAgICAgICAgICBsb2FkSW1hZ2Uo
aW1hZ2UsICJyZXNvdXJjZXMvZ3JlZW4tMjR4MjQuanBnIiwgdHJ1ZSkudGhlbigoKSA9PiB7Cisg
ICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KSgp
OworICAgIDwvc2NyaXB0PgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMv
ZGVjb2RpbmctYXR0cmlidXRlLXN5bmMtbGFyZ2UtaW1hZ2UtZXhwZWN0ZWQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGluZy1hdHRyaWJ1dGUtc3luYy1s
YXJnZS1pbWFnZS1leHBlY3RlZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zh
c3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1zeW5jLWxhcmdlLWltYWdlLWV4cGVjdGVkLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzIEBACis8Ym9keT4KKyAgICA8aW1nIHNyYz0i
cmVzb3VyY2VzL2dyZWVuLTQwMHg0MDAucG5nIj4KKzwvYm9keT4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1zeW5jLWxhcmdlLWltYWdlLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLXN5
bmMtbGFyZ2UtaW1hZ2UuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2lt
YWdlcy9kZWNvZGluZy1hdHRyaWJ1dGUtc3luYy1sYXJnZS1pbWFnZS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTkgQEAKKzxib2R5PgorICAgIDxpbWcgZGVjb2Rpbmc9InN5bmMiPgor
ICAgIDxzY3JpcHQ+CisgICAgICAgIChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzICYmIHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgICAgaW50
ZXJuYWxzLmNsZWFyTWVtb3J5Q2FjaGUoKTsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0
dGluZ3Muc2V0TGFyZ2VJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkKHRydWUpOworICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgfQorIAorICAg
ICAgICAgICAgdmFyIGltYWdlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiaW1nIik7CisgICAg
ICAgICAgICBpbWFnZS5vbmxvYWQgPSAoKCkgPT4geworICAgICAgICAgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGltYWdlLnNyYyA9ICJyZXNvdXJjZXMv
Z3JlZW4tNDAweDQwMC5wbmciOworICAgICAgICB9KSgpOworICAgIDwvc2NyaXB0PgorPC9ib2R5
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327670</attachid>
            <date>2017-11-27 13:35:41 -0800</date>
            <delta_ts>2017-12-06 17:35:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179432-20171127133540.patch</filename>
            <type>text/plain</type>
            <size>28758</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNTE5MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDE3LTExLTI3ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCB0
aGUgZGVjb2Rpbmc9InN5bmMvYXN5bmMiIHN5bnRheCBmb3IgaW1hZ2UgYXN5bmMgYXR0cmlidXRl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk0MzIK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBTdXBwb3J0IHRo
ZSBIVE1MRWxlbWVudEltYWdlIGRlY29kaW5nIGF0dHJpYnV0ZSB0byBhbGxvdyBjb250cm9sbGlu
ZyB0aGUKKyAgICAgICAgZGVjb2Rpbmcgb2YgYW4gaW1hZ2UgYXMgcGVyIGh0dHBzOi8vZ2l0aHVi
LmNvbS93aGF0d2cvaHRtbC9wdWxsLzMyMjEuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvaW1hZ2Vz
L2RlY29kZS1kZWNvZGluZy1hdHRyaWJ1dGUtYXN5bmMtbGFyZ2UtaW1hZ2UuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLWFzeW5jLXNtYWxsLWltYWdl
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1keW5h
bWljLWFzeW5jLXNtYWxsLWltYWdlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvaW1hZ2VzL2Rl
Y29kaW5nLWF0dHJpYnV0ZS1zeW5jLWxhcmdlLWltYWdlLmh0bWwKKworICAgICAgICAqIGh0bWwv
SFRNTEF0dHJpYnV0ZU5hbWVzLmluOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpkZWNvZGluZ01vZGUgY29u
c3QpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTEltYWdlRWxlbWVudC5pZGw6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmludGVybmFsU3RhcnRBbmltYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmFkdmFuY2VBbmltYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6OmludGVybmFsQWR2YW5jZUFuaW1hdGlvbik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRGVjb2RpbmdPcHRpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjpE
ZWNvZGluZ09wdGlvbnM6OkRlY29kaW5nT3B0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNv
ZGluZ09wdGlvbnM6OmlzQXV0byBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNvZGluZ09w
dGlvbnM6OmlzQXN5bmNocm9ub3VzQ29tcGF0aWJsZVdpdGggY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGVjb2RpbmdPcHRpb25zOjppc05vbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y2xl
YXJJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVDYWNoZTo6ZnJhbWVBdEluZGV4Q2FjaGVJ
Zk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2RlckNHLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVj
b2RlckRpcmVjdDJELmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFi
bGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmRlY29kaW5n
TW9kZUZvckltYWdlRHJhdyBjb25zdCk6CisgICAgICAgIFRoZSBlbGVtZW50IGF0dHJpYnV0ZXMg
YW5kIHRoZSBkb2N1bWVudCBzZXR0aW5ncyBzaG91bGQgYmUgY2hlY2tlZCBiZWZvcmUKKyAgICAg
ICAgY2hlY2tpbmcgb3VyIGhldXJpc3RpY3MuIEFuZCBzaW5jZSB0aGUgImRlY29kaW5nIiBhdHRy
aWJ1dGUgaXMgcGVyIGFuIGltYWdlCisgICAgICAgIGFuZCBpc0xhcmdlSW1hZ2VBc3luY0RlY29k
aW5nRW5hYmxlZEZvclRlc3RpbmcoKSBpcyBhIGdsb2JhbCBzZXR0aW5nLCB0aGUKKyAgICAgICAg
ZGVjb2RpbmcgYXR0cmlidXRlIHNob3VsZCBiZSBjaGVja2VkIGZpcnN0LgorCiAyMDE3LTExLTI3
ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCBmaXggYW4gaW1wcm9wZXIgI2luY2x1ZGUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCShyZXZpc2lvbiAyMjUxODEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTA1
LDYgKzEwNSw3IEBAIGNyb3Nzb3JpZ2luCiBkYXRhCiBkYXRldGltZQogZGVjbGFyZQorZGVjb2Rp
bmcKIGRlZmF1bHQKIGRlZmVyCiBkaXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmNwcAkocmV2aXNpb24gMjI1MTgxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTM4LDYgKzUzOCwxNiBAQCBi
b29sIEhUTUxJbWFnZUVsZW1lbnQ6OmNvbXBsZXRlKCkgY29uc3QKICAgICByZXR1cm4gbV9pbWFn
ZUxvYWRlci5pbWFnZUNvbXBsZXRlKCk7CiB9CiAKK0RlY29kaW5nTW9kZSBIVE1MSW1hZ2VFbGVt
ZW50OjpkZWNvZGluZ01vZGUoKSBjb25zdAoreworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZGVj
b2RpbmdNb2RlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihkZWNvZGluZ0F0dHIp
OworICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkZWNvZGluZ01vZGUsICJz
eW5jIikpCisgICAgICAgIHJldHVybiBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzOworICAgIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkZWNvZGluZ01vZGUsICJhc3luYyIpKQor
ICAgICAgICByZXR1cm4gRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXM7CisgICAgcmV0dXJuIERl
Y29kaW5nTW9kZTo6QXV0bzsKK30KKyAgICAKIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6ZGVjb2Rl
KFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICByZXR1cm4gbV9pbWFnZUxv
YWRlci5kZWNvZGUoV1RGTW92ZShwcm9taXNlKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbWFnZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbWFnZUVsZW1lbnQuaAkocmV2aXNpb24gMjI1MTgxKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEZWNvZGluZ09wdGlvbnMuaCIKICNpbmNsdWRlICJG
b3JtTmFtZWRJdGVtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIkhU
TUxFbGVtZW50LmgiCkBAIC03OSw2ICs4MCw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgY29tcGxldGUoKSBjb25zdDsKIAorICAgIERlY29kaW5nTW9kZSBkZWNvZGluZ01v
ZGUoKSBjb25zdDsKKyAgICAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlY29kZShSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmKTsKIAogI2lmIFBMQVRGT1JNKElPUykKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbAkocmV2aXNpb24gMjI1MTgxKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDAs
NyArNDAsNyBAQAogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVzZU1hcDsKICAg
ICBbUmVmbGVjdF0gYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgdnNwYWNlOwogICAgIGF0dHJpYnV0
ZSB1bnNpZ25lZCBsb25nIHdpZHRoOwotICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgYm9vbGVhbiBh
c3luYzsKKyAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBkZWNvZGluZzsKIAogICAg
IC8vIEV4dGVuc2lvbnMKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBjb21wbGV0ZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHAJKHJldmlzaW9uIDIyNTE4MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0JpdG1hcEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjExLDcgKzIxMSw3IEBAIElt
YWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGkKICAgICAgICAgaWYgKG1fY3Vy
cmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPT0gRGVjb2RpbmdTdGF0dXM6OkRlY29kaW5nKQogICAg
ICAgICAgICAgcmVzdWx0ID0gSW1hZ2VEcmF3UmVzdWx0OjpEaWRSZXF1ZXN0RGVjb2Rpbmc7CiAK
LSAgICAgICAgaWYgKCFmcmFtZUhhc0RlY29kZWROYXRpdmVJbWFnZUNvbXBhdGlibGVXaXRoT3B0
aW9uc0F0SW5kZXgobV9jdXJyZW50RnJhbWUsIG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwsIERl
Y29kaW5nTW9kZTo6QXN5bmNocm9ub3VzKSkgeworICAgICAgICBpZiAoIWZyYW1lSGFzRGVjb2Rl
ZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChtX2N1cnJlbnRGcmFtZSwg
bV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCwgRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6
QXN5bmNocm9ub3VzKSkpIHsKICAgICAgICAgICAgIGlmIChtX3Nob3dEZWJ1Z0JhY2tncm91bmQp
CiAgICAgICAgICAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0LCBD
b2xvcihDb2xvcjo6eWVsbG93KS5jb2xvcldpdGhBbHBoYSgwLjUpLCBvcCk7CiAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwpAQCAtMjM0LDcgKzIzNCw3IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRt
YXBJbWFnZTo6ZHJhdyhHcmFwaGkKICAgICAgICAgICAgIG1fc291cmNlLmRlc3Ryb3lJbmNvbXBs
ZXRlRGVjb2RlZERhdGEoKTsKICAgICAgICAgCiAgICAgICAgIGJvb2wgZnJhbWVJc0NvbXBhdGli
bGUgPSBmcmFtZUhhc0RlY29kZWROYXRpdmVJbWFnZUNvbXBhdGlibGVXaXRoT3B0aW9uc0F0SW5k
ZXgobV9jdXJyZW50RnJhbWUsIG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwsIERlY29kaW5nT3B0
aW9ucyhzaXplRm9yRHJhd2luZykpOwotICAgICAgICBib29sIGZyYW1lSXNCZWluZ0RlY29kZWQg
PSBmcmFtZUlzQmVpbmdEZWNvZGVkQW5kSXNDb21wYXRpYmxlV2l0aE9wdGlvbnNBdEluZGV4KG1f
Y3VycmVudEZyYW1lLCBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91cyk7CisgICAgICAgIGJvb2wg
ZnJhbWVJc0JlaW5nRGVjb2RlZCA9IGZyYW1lSXNCZWluZ0RlY29kZWRBbmRJc0NvbXBhdGlibGVX
aXRoT3B0aW9uc0F0SW5kZXgobV9jdXJyZW50RnJhbWUsIERlY29kaW5nT3B0aW9ucyhEZWNvZGlu
Z01vZGU6OkFzeW5jaHJvbm91cykpOwogICAgICAgICAKICAgICAgICAgaWYgKGZyYW1lSXNDb21w
YXRpYmxlKSB7CiAgICAgICAgICAgICBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVu
dEZyYW1lKTsKQEAgLTM2Nyw3ICszNjcsNyBAQCBCaXRtYXBJbWFnZTo6U3RhcnRBbmltYXRpb25T
dGF0dXMgQml0bWFwCiAKICAgICAvLyBEb24ndCBzdGFydCBhIG5ldyBhbmltYXRpb24gdW50aWwg
d2UgZHJhdyB0aGUgZnJhbWUgdGhhdCBpcyBjdXJyZW50bHkgYmVpbmcgZGVjb2RlZC4KICAgICBz
aXplX3QgbmV4dEZyYW1lID0gKG1fY3VycmVudEZyYW1lICsgMSkgJSBmcmFtZUNvdW50KCk7Ci0g
ICAgaWYgKGZyYW1lSXNCZWluZ0RlY29kZWRBbmRJc0NvbXBhdGlibGVXaXRoT3B0aW9uc0F0SW5k
ZXgobmV4dEZyYW1lLCBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91cykpIHsKKyAgICBpZiAoZnJh
bWVJc0JlaW5nRGVjb2RlZEFuZElzQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChuZXh0RnJh
bWUsIERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91cykpKSB7CiAgICAg
ICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZTo6JXMgLSAlcCAtIHVybDogJXMgW25leHRGcmFt
ZSA9ICVsZCBpcyBiZWluZyBkZWNvZGVkXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJM
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgbmV4dEZyYW1lKTsKICAgICAgICAgcmV0dXJuIFN0
YXJ0QW5pbWF0aW9uU3RhdHVzOjpEZWNvZGluZ0FjdGl2ZTsKICAgICB9CkBAIC00MTAsNyArNDEw
LDcgQEAgQml0bWFwSW1hZ2U6OlN0YXJ0QW5pbWF0aW9uU3RhdHVzIEJpdG1hcAogICAgIC8vIHRo
cm91Z2ggdGhlIGNhbGxiYWNrIG5ld0ZyYW1lTmF0aXZlSW1hZ2VBdmFpbGFibGVBdEluZGV4KCku
IE90aGVyd2lzZSwgYWR2YW5jZUFuaW1hdGlvbigpIHdpbGwgYmUgY2FsbGVkCiAgICAgLy8gd2hl
biB0aGUgdGltZXIgZmlyZXMgYW5kIG1fY3VycmVudEZyYW1lIHdpbGwgYmUgYWR2YW5jZWQgdG8g
bmV4dEZyYW1lIHNpbmNlIGl0IGlzIG5vdCBiZWluZyBkZWNvZGVkLgogICAgIGlmIChzaG91bGRV
c2VBc3luY0RlY29kaW5nRm9yQW5pbWF0ZWRJbWFnZXMoKSkgewotICAgICAgICBpZiAoZnJhbWVI
YXNEZWNvZGVkTmF0aXZlSW1hZ2VDb21wYXRpYmxlV2l0aE9wdGlvbnNBdEluZGV4KG5leHRGcmFt
ZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCwgeyB9KSkKKyAgICAgICAgaWYgKGZyYW1lSGFz
RGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChuZXh0RnJhbWUs
IG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwsIERlY29kaW5nT3B0aW9ucyhzdGQ6Om9wdGlvbmFs
PEludFNpemU+KCkpKSkKICAgICAgICAgICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZTo6JXMg
LSAlcCAtIHVybDogJXMgW2NhY2hlZEZyYW1lQ291bnQgPSAlbGQgbmV4dEZyYW1lID0gJWxkXSIs
IF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwg
KyttX2NhY2hlZEZyYW1lQ291bnQsIG5leHRGcmFtZSk7CiAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgbV9zb3VyY2UucmVxdWVzdEZyYW1lQXN5bmNEZWNvZGluZ0F0SW5kZXgobmV4dEZyYW1l
LCBtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsKTsKQEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lkIEJp
dG1hcEltYWdlOjphZHZhbmNlQW5pbWF0aW9uKCkKIAogICAgIC8vIERvbid0IGFkdmFuY2UgdG8g
bmV4dEZyYW1lIHVubGVzcyBpdHMgZGVjb2RpbmcgaGFzIGZpbmlzaGVkIG9yIHdhcyBub3QgcmVx
dWlyZWQuCiAgICAgc2l6ZV90IG5leHRGcmFtZSA9IChtX2N1cnJlbnRGcmFtZSArIDEpICUgZnJh
bWVDb3VudCgpOwotICAgIGlmICghZnJhbWVJc0JlaW5nRGVjb2RlZEFuZElzQ29tcGF0aWJsZVdp
dGhPcHRpb25zQXRJbmRleChuZXh0RnJhbWUsIERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzKSkK
KyAgICBpZiAoIWZyYW1lSXNCZWluZ0RlY29kZWRBbmRJc0NvbXBhdGlibGVXaXRoT3B0aW9uc0F0
SW5kZXgobmV4dEZyYW1lLCBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpBc3luY2hyb25v
dXMpKSkKICAgICAgICAgaW50ZXJuYWxBZHZhbmNlQW5pbWF0aW9uKCk7CiAgICAgZWxzZSB7CiAg
ICAgICAgIC8vIEZvcmNlIHJlcGFpbnQgaWYgc2hvd0RlYnVnQmFja2dyb3VuZCgpIGlzIG9uLgpA
QCAtNDU4LDcgKzQ1OCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmFkdmFuY2VBbmltYXRpb24oKQog
dm9pZCBCaXRtYXBJbWFnZTo6aW50ZXJuYWxBZHZhbmNlQW5pbWF0aW9uKCkKIHsKICAgICBtX2N1
cnJlbnRGcmFtZSA9IChtX2N1cnJlbnRGcmFtZSArIDEpICUgZnJhbWVDb3VudCgpOwotICAgIEFT
U0VSVCghZnJhbWVJc0JlaW5nRGVjb2RlZEFuZElzQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRl
eChtX2N1cnJlbnRGcmFtZSwgRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXMpKTsKKyAgICBBU1NF
UlQoIWZyYW1lSXNCZWluZ0RlY29kZWRBbmRJc0NvbXBhdGlibGVXaXRoT3B0aW9uc0F0SW5kZXgo
bV9jdXJyZW50RnJhbWUsIERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91
cykpKTsKIAogICAgIGRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KGZhbHNlKTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVjb2RpbmdPcHRpb25zLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVjb2RpbmdPcHRp
b25zLmgJKHJldmlzaW9uIDIyNTE4MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0RlY29kaW5nT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxNCArMzIsMTQgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBEZWNvZGluZ01vZGUgewotICAgIE5v
bmUsCisgICAgQXV0bywKICAgICBTeW5jaHJvbm91cywKICAgICBBc3luY2hyb25vdXMKIH07CiAK
IGNsYXNzIERlY29kaW5nT3B0aW9ucyB7CiBwdWJsaWM6Ci0gICAgRGVjb2RpbmdPcHRpb25zKERl
Y29kaW5nTW9kZSBkZWNvZGluZ01vZGUgPSBEZWNvZGluZ01vZGU6Ok5vbmUpCisgICAgZXhwbGlj
aXQgRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUgPSBEZWNvZGluZ01v
ZGU6OkF1dG8pCiAgICAgICAgIDogbV9kZWNvZGluZ01vZGVPclNpemUoZGVjb2RpbmdNb2RlKQog
ICAgIHsKICAgICB9CkBAIC01NCw5ICs1NCw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1f
ZGVjb2RpbmdNb2RlT3JTaXplID09IG90aGVyLm1fZGVjb2RpbmdNb2RlT3JTaXplOwogICAgIH0K
IAotICAgIGJvb2wgaXNOb25lKCkgY29uc3QKKyAgICBib29sIGlzQXV0bygpIGNvbnN0CiAgICAg
ewotICAgICAgICByZXR1cm4gaGFzRGVjb2RpbmdNb2RlKCkgJiYgV1RGOjpnZXQ8RGVjb2RpbmdN
b2RlPihtX2RlY29kaW5nTW9kZU9yU2l6ZSkgPT0gRGVjb2RpbmdNb2RlOjpOb25lOworICAgICAg
ICByZXR1cm4gaGFzRGVjb2RpbmdNb2RlKCkgJiYgV1RGOjpnZXQ8RGVjb2RpbmdNb2RlPihtX2Rl
Y29kaW5nTW9kZU9yU2l6ZSkgPT0gRGVjb2RpbmdNb2RlOjpBdXRvOwogICAgIH0KICAgICAKICAg
ICBib29sIGlzU3luY2hyb25vdXMoKSBjb25zdApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAK
ICAgICBib29sIGlzQXN5bmNocm9ub3VzQ29tcGF0aWJsZVdpdGgoY29uc3QgRGVjb2RpbmdPcHRp
b25zJiBkZWNvZGluZ09wdGlvbnMpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoaXNOb25lKCkg
fHwgZGVjb2RpbmdPcHRpb25zLmlzTm9uZSgpKQorICAgICAgICBpZiAoaXNBdXRvKCkgfHwgZGVj
b2RpbmdPcHRpb25zLmlzQXV0bygpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
ICAgIC8vIENvbXBhcmluZyBEZWNvZGluZ09wdGlvbnMgd2l0aCBpc0FzeW5jaHJvbm91cygpIHNo
b3VsZCBub3QgaGFwcGVuLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VEZWNvZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VEZWNvZGVyLmgJKHJldmlzaW9uIDIyNTE4MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3
ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZnJhbWVBbGxvd1N1YnNhbXBsaW5n
QXRJbmRleChzaXplX3QpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGZyYW1lQnl0
ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRl
ZmF1bHQpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZl
bDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nTW9kZTo6U3luY2hy
b25vdXMpID0gMDsKKyAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cykpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRFeHBlY3RlZENvbnRl
bnRTaXplKGxvbmcgbG9uZykgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVm
ZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuY3BwCShyZXZpc2lvbiAyMjUxODEpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBAQCB1bnNpZ25lZCBJbWFnZUZyYW1lOjpjbGVhckltYWdl
KCkKIAogICAgIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMobV9uYXRpdmVJbWFnZSk7CiAgICAg
bV9uYXRpdmVJbWFnZSA9IG51bGxwdHI7Ci0gICAgbV9kZWNvZGluZ09wdGlvbnMgPSB7IH07Cisg
ICAgbV9kZWNvZGluZ09wdGlvbnMgPSBEZWNvZGluZ09wdGlvbnMoKTsKIAogICAgIHJldHVybiBm
cmFtZUJ5dGVzOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VGcmFtZUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwCShyZXZpc2lvbiAyMjUxODEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNTgsNyArMzU4LDcgQEAgY29uc3QgSW1hZ2VGcmFtZSYgSW1hZ2VGcmFtZUNhY2hl
OjpmcmFtZQogewogICAgIEFTU0VSVChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSk7CiAgICAgSW1h
Z2VGcmFtZSYgZnJhbWUgPSBtX2ZyYW1lc1tpbmRleF07Ci0gICAgaWYgKCFpc0RlY29kZXJBdmFp
bGFibGUoKSB8fCBmcmFtZUlzQmVpbmdEZWNvZGVkQW5kSXNDb21wYXRpYmxlV2l0aE9wdGlvbnNB
dEluZGV4KGluZGV4LCBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91cykpCisgICAgaWYgKCFpc0Rl
Y29kZXJBdmFpbGFibGUoKSB8fCBmcmFtZUlzQmVpbmdEZWNvZGVkQW5kSXNDb21wYXRpYmxlV2l0
aE9wdGlvbnNBdEluZGV4KGluZGV4LCBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpBc3lu
Y2hyb25vdXMpKSkKICAgICAgICAgcmV0dXJuIGZyYW1lOwogICAgIAogICAgIFN1YnNhbXBsaW5n
TGV2ZWwgc3Vic2FtcGxpbmdMZXZlbFZhbHVlID0gc3Vic2FtcGxpbmdMZXZlbCA/IHN1YnNhbXBs
aW5nTGV2ZWwudmFsdWUoKSA6IGZyYW1lLnN1YnNhbXBsaW5nTGV2ZWwoKTsKQEAgLTM3OCw3ICsz
NzgsNyBAQCBjb25zdCBJbWFnZUZyYW1lJiBJbWFnZUZyYW1lQ2FjaGU6OmZyYW1lCiAgICAgICAg
IC8vIFdlIGhhdmUgdG8gcGVyZm9ybSBzeW5jaHJvbm91cyBpbWFnZSBkZWNvZGluZyBpbiB0aGlz
IGNvZGUuIAogICAgICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSA9IG1fZGVjb2Rlci0+
Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWxWYWx1ZSk7CiAg
ICAgICAgIC8vIENsZWFuIHRoZSBvbGQgbmF0aXZlIGltYWdlIGFuZCBzZXQgYSBuZXcgb25lLgot
ICAgICAgICBjYWNoZU5hdGl2ZUltYWdlQXRJbmRleChXVEZNb3ZlKG5hdGl2ZUltYWdlKSwgaW5k
ZXgsIHN1YnNhbXBsaW5nTGV2ZWxWYWx1ZSwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cyk7Cisg
ICAgICAgIGNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KFdURk1vdmUobmF0aXZlSW1hZ2UpLCBpbmRl
eCwgc3Vic2FtcGxpbmdMZXZlbFZhbHVlLCBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpT
eW5jaHJvbm91cykpOwogICAgICAgICBicmVhazsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgJKHJldmlzaW9uIDIyNTE4MSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdl
RGVjb2RlckFWRk9iakMuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBmcmFtZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCkgY29uc3QgZmlu
YWw7CiAgICAgdW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xl
dmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3QgZmluYWw7CiAKLSAgICBOYXRp
dmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2
ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0g
RGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykgZmluYWw7CisgICAgTmF0aXZlSW1hZ2VQdHIgY3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxp
bmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9u
cyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVj
dGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbDsKICAgICB2b2lkIHNldERhdGEoU2hhcmVk
QnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCShyZXZp
c2lvbiAyMjUxODEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZURlY29kZXJDRy5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdCBmaW5hbDsK
ICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwg
PSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdCBmaW5hbDsKIAotICAgIE5hdGl2ZUlt
YWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9
IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNv
ZGluZ01vZGU6OlN5bmNocm9ub3VzKSBmaW5hbDsKKyAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVG
cmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xl
dmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERl
Y29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RGF0YShTaGFy
ZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERh
dGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJE
aXJlY3QyRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCShyZXZpc2lvbiAyMjUxODEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaAkod29y
a2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBmcmFtZUFsbG93
U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCkgY29uc3QgZmluYWw7CiAgICAgdW5zaWduZWQgZnJh
bWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZl
bDo6RGVmYXVsdCkgY29uc3QgZmluYWw7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVs
OjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJv
bm91cykgY29uc3QgZmluYWw7CisgICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVs
dCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzKSkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVm
ZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVj
ZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVj
b2Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgJKHJldmlzaW9uIDIyNTE4MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE0NCw3ICsxNDQsNyBAQCBwdWJsaWM6CiAKICAgICBTZWNvbmRzIGZy
YW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCkgY29uc3QgZmluYWw7CiAKLSAgICBOYXRpdmVJbWFn
ZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBT
dWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2Rp
bmdNb2RlOjpTeW5jaHJvbm91cykgb3ZlcnJpZGU7CisgICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhE
ZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldElnbm9y
ZUdhbW1hQW5kQ29sb3JQcm9maWxlKGJvb2wgZmxhZykgeyBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQ
cm9maWxlID0gZmxhZzsgfQogICAgIGJvb2wgaWdub3Jlc0dhbW1hQW5kQ29sb3JQcm9maWxlKCkg
Y29uc3QgeyByZXR1cm4gbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZTsgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCShy
ZXZpc2lvbiAyMjUxODEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzQsMTAgKzM3NCwxMyBAQCBEZWNvZGlu
Z01vZGUgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmRlY29kCiAgICAgaWYgKElPU0FwcGxpY2F0aW9u
Ojppc0lCb29rc1N0b3J5dGltZSgpKQogICAgICAgICByZXR1cm4gRGVjb2RpbmdNb2RlOjpTeW5j
aHJvbm91czsKICNlbmRpZgorICAgIGlmIChpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KCkp
KSB7CisgICAgICAgIGF1dG8gZGVjb2RpbmdNb2RlID0gZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVu
dD4oKmVsZW1lbnQoKSkuZGVjb2RpbmdNb2RlKCk7CisgICAgICAgIGlmIChkZWNvZGluZ01vZGUg
IT0gRGVjb2RpbmdNb2RlOjpBdXRvKQorICAgICAgICAgICAgcmV0dXJuIGRlY29kaW5nTW9kZTsK
KyAgICB9CiAgICAgaWYgKGJpdG1hcEltYWdlLmlzTGFyZ2VJbWFnZUFzeW5jRGVjb2RpbmdFbmFi
bGVkRm9yVGVzdGluZygpKQogICAgICAgICByZXR1cm4gRGVjb2RpbmdNb2RlOjpBc3luY2hyb25v
dXM7Ci0gICAgaWYgKGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQoKSkgJiYgZWxlbWVudCgp
LT5oYXNBdHRyaWJ1dGUoYXN5bmNBdHRyKSkKLSAgICAgICAgcmV0dXJuIERlY29kaW5nTW9kZTo6
QXN5bmNocm9ub3VzOwogICAgIGlmIChkb2N1bWVudCgpLmlzSW1hZ2VEb2N1bWVudCgpKQogICAg
ICAgICByZXR1cm4gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91czsKICAgICBpZiAocGFpbnRJbmZv
LnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nKQpJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gMjI1MTgxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTctMTEtMjcgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxs
YXdhQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHRoZSBkZWNvZGluZz0ic3luYy9hc3lu
YyIgc3ludGF4IGZvciBpbWFnZSBhc3luYyBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTQzMgorCisgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgorCisgICAgICAgICogZmFzdC9pbWFnZXMvYXN5bmMtYXR0cmlidXRlLXdp
dGgtc21hbGwtaW1hZ2UtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2lt
YWdlcy9hc3luYy1hdHRyaWJ1dGUtd2l0aC1zbWFsbC1pbWFnZS5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIGZhc3QvaW1hZ2VzL2RlY29kZS1kZWNvZGluZy1hdHRyaWJ1dGUtYXN5bmMtbGFyZ2Ut
aW1hZ2UtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvZGVjb2Rl
LWRlY29kaW5nLWF0dHJpYnV0ZS1hc3luYy1sYXJnZS1pbWFnZS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2ltYWdlcy9kZWNvZGluZy1hdHRyaWJ1dGUtYXN5bmMtc21hbGwtaW1hZ2UtZXhw
ZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0cmli
dXRlLWFzeW5jLXNtYWxsLWltYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaW1hZ2Vz
L2RlY29kaW5nLWF0dHJpYnV0ZS1keW5hbWljLWFzeW5jLXNtYWxsLWltYWdlLWV4cGVjdGVkLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1keW5h
bWljLWFzeW5jLXNtYWxsLWltYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaW1hZ2Vz
L2RlY29kaW5nLWF0dHJpYnV0ZS1zeW5jLWxhcmdlLWltYWdlLWV4cGVjdGVkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1zeW5jLWxhcmdlLWlt
YWdlLmh0bWw6IEFkZGVkLgorCiAyMDE3LTExLTI3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdW5za2lwIHNlcnZpY2Ugd29ya2VyIHRlc3Rz
IHRoYXQgYXJlIG5vIGxvbmdlciBmbGFreS4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW1hZ2Vz
L2FzeW5jLWF0dHJpYnV0ZS13aXRoLXNtYWxsLWltYWdlLWV4cGVjdGVkLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvYXN5bmMtYXR0cmlidXRlLXdpdGgtc21hbGwt
aW1hZ2UtZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMjI1MTgxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9pbWFnZXMvYXN5bmMtYXR0cmlidXRlLXdpdGgtc21hbGwtaW1hZ2UtZXhwZWN0ZWQuaHRtbAko
bm9uZXhpc3RlbnQpCkBAIC0xLDMgKzAsMCBAQAotPGJvZHk+Ci0gICAgPGltZyBzcmM9InJlc291
cmNlcy9ncmVlbi0yNHgyNC5qcGciPgotIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL2FzeW5jLWF0dHJpYnV0ZS13aXRoLXNtYWxsLWltYWdlLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvYXN5bmMtYXR0cmlidXRlLXdpdGgtc21hbGwtaW1h
Z2UuaHRtbAkocmV2aXNpb24gMjI1MTgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvYXN5
bmMtYXR0cmlidXRlLXdpdGgtc21hbGwtaW1hZ2UuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDM3
ICswLDAgQEAKLTxib2R5PgotICAgIDxpbWcgYXN5bmM+Ci0gICAgPHNjcmlwdD4KLSAgICAgICAg
ZnVuY3Rpb24gbG9hZEltYWdlKGltYWdlLCBzcmMpIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcg
UHJvbWlzZSgocmVzb2x2ZSkgPT4gewotICAgICAgICAgICAgICAgIGltYWdlLm9ubG9hZCA9ICgo
KSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRv
dy50ZXN0UnVubmVyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3JjZSBsYXlvdXQg
YW5kIGRpc3BsYXkgc28gdGhlIGltYWdlIGdldHMgZHJhd24uCi0gICAgICAgICAgICAgICAgICAg
ICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIuZGlzcGxheSgpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBMaXN0
ZW4gZm9yIHRoZSB3ZWJraXRJbWFnZUZyYW1lUmVhZHkgZXZlbnQgYWZ0ZXIgcmVxdWVzdGluZwot
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGltYWdlIGRlY29kaW5nLgotICAgICAgICAg
ICAgICAgICAgICAgICAgaW1hZ2UuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0SW1hZ2VGcmFtZVJl
YWR5IiwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgp
OwotICAgICAgICAgICAgICAgICAgICAgICAgfSwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgICAgICBpbWFnZS5zcmMgPSBzcmM7Ci0gICAgICAgICAgICB9
KTsKLSAgICAgICAgfQotICAgICAgICAoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBpZiAod2lu
ZG93LmludGVybmFscyAmJiB3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICAgICAgICAgIGlu
dGVybmFscy5jbGVhck1lbW9yeUNhY2hlKCk7Ci0gICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNl
dHRpbmdzLnNldFdlYmtpdEltYWdlUmVhZHlFdmVudEVuYWJsZWQodHJ1ZSk7Ci0gICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgICAgICB9Ci0gCi0gICAg
ICAgICAgICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJpbWciKTsKLSAgICAg
ICAgICAgIGxvYWRJbWFnZShpbWFnZSwgInJlc291cmNlcy9ncmVlbi0yNHgyNC5qcGciLCB0cnVl
KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICAgICAg
fSk7Ci0gICAgICAgIH0pKCk7Ci0gICAgPC9zY3JpcHQ+Ci08L2JvZHk+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtZGVjb2RpbmctYXR0cmlidXRlLWFzeW5jLWxhcmdlLWlt
YWdlLWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMv
ZGVjb2RlLWRlY29kaW5nLWF0dHJpYnV0ZS1hc3luYy1sYXJnZS1pbWFnZS1leHBlY3RlZC5odG1s
CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1kZWNvZGlu
Zy1hdHRyaWJ1dGUtYXN5bmMtbGFyZ2UtaW1hZ2UtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDMgQEAKKzxib2R5PgorICAgIDxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW4t
NDAweDQwMC5wbmciPgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVj
b2RlLWRlY29kaW5nLWF0dHJpYnV0ZS1hc3luYy1sYXJnZS1pbWFnZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1kZWNvZGluZy1hdHRyaWJ1dGUtYXN5
bmMtbGFyZ2UtaW1hZ2UuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2lt
YWdlcy9kZWNvZGUtZGVjb2RpbmctYXR0cmlidXRlLWFzeW5jLWxhcmdlLWltYWdlLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwyMCBAQAorPGJvZHk+CisgICAgPGltZyBkZWNvZGluZz0i
YXN5bmMiPgorICAgIDxzY3JpcHQ+CisgICAgICAgIChmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAg
ICAgICAgaW50ZXJuYWxzLmNsZWFyTWVtb3J5Q2FjaGUoKTsKKyAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIH0KKyAKKyAgICAgICAgICAgIHZh
ciBpbWFnZSA9IG5ldyBJbWFnZTsKKyAgICAgICAgICAgIGltYWdlLnNyYyA9ICJyZXNvdXJjZXMv
Z3JlZW4tNDAweDQwMC5wbmciOworICAgICAgICAgICAgaW1hZ2UuZGVjb2RlKCkudGhlbigoKSA9
PiB7CisgICAgICAgICAgICAgICAgdmFyIG9sZEltYWdlID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cigiaW1nIik7CisgICAgICAgICAgICAgICAgb2xkSW1hZ2UucGFyZW50Tm9kZS5yZXBsYWNlQ2hp
bGQoaW1hZ2UsIG9sZEltYWdlKTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0pKCk7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGluZy1hdHRyaWJ1dGUtYXN5bmMtc21hbGwtaW1h
Z2UtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9k
ZWNvZGluZy1hdHRyaWJ1dGUtYXN5bmMtc21hbGwtaW1hZ2UtZXhwZWN0ZWQuaHRtbAkobm9uZXhp
c3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGluZy1hdHRyaWJ1dGUtYXN5
bmMtc21hbGwtaW1hZ2UtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMg
QEAKKzxib2R5PgorICAgIDxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW4tMjR4MjQuanBnIj4KKzwv
Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1h
c3luYy1zbWFsbC1pbWFnZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaW1h
Z2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1hc3luYy1zbWFsbC1pbWFnZS5odG1sCShub25leGlzdGVu
dCkKKysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1hc3luYy1z
bWFsbC1pbWFnZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKzxib2R5Pgor
ICAgIDxpbWcgZGVjb2Rpbmc9ImFzeW5jIj4KKyAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlv
biBsb2FkSW1hZ2UoaW1hZ2UsIHNyYykgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNl
KChyZXNvbHZlKSA9PiB7CisgICAgICAgICAgICAgICAgaW1hZ2Uub25sb2FkID0gKCgpID0+IHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvcmNlIGxheW91dCBhbmQgZGlz
cGxheSBzbyB0aGUgaW1hZ2UgZ2V0cyBkcmF3bi4KKyAgICAgICAgICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0OworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5kaXNwbGF5KCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIExpc3RlbiBmb3Ig
dGhlIHdlYmtpdEltYWdlRnJhbWVSZWFkeSBldmVudCBhZnRlciByZXF1ZXN0aW5nCisgICAgICAg
ICAgICAgICAgICAgICAgICAvLyB0aGUgaW1hZ2UgZGVjb2RpbmcuCisgICAgICAgICAgICAgICAg
ICAgICAgICBpbWFnZS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRJbWFnZUZyYW1lUmVhZHkiLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgICAgIGltYWdlLnNyYyA9IHNyYzsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9CisKKyAgICAgICAgKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMgJiYgd2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICBpbnRlcm5h
bHMuY2xlYXJNZW1vcnlDYWNoZSgpOworICAgICAgICAgICAgICAgIGludGVybmFscy5zZXR0aW5n
cy5zZXRXZWJraXRJbWFnZVJlYWR5RXZlbnRFbmFibGVkKHRydWUpOworICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgfQorIAorICAgICAgICAg
ICAgdmFyIGltYWdlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiaW1nIik7CisgICAgICAgICAg
ICBsb2FkSW1hZ2UoaW1hZ2UsICJyZXNvdXJjZXMvZ3JlZW4tMjR4MjQuanBnIiwgdHJ1ZSkudGhl
bigoKSA9PiB7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9KSgpOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLWR5bmFtaWMtYXN5bmMtc21hbGwtaW1hZ2Ut
ZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNv
ZGluZy1hdHRyaWJ1dGUtZHluYW1pYy1hc3luYy1zbWFsbC1pbWFnZS1leHBlY3RlZC5odG1sCShu
b25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0
ZS1keW5hbWljLWFzeW5jLXNtYWxsLWltYWdlLWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwzIEBACis8Ym9keT4KKyAgICA8aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuLTI0
eDI0LmpwZyI+Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGlu
Zy1hdHRyaWJ1dGUtZHluYW1pYy1hc3luYy1zbWFsbC1pbWFnZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1keW5hbWljLWFzeW5j
LXNtYWxsLWltYWdlLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbWFn
ZXMvZGVjb2RpbmctYXR0cmlidXRlLWR5bmFtaWMtYXN5bmMtc21hbGwtaW1hZ2UuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDM5IEBACis8Ym9keT4KKyAgICA8aW1nIGRlY29kaW5nPSJz
eW5jIj4KKyAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiBsb2FkSW1hZ2UoaW1hZ2UsIHNy
YykgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAg
ICAgICAgICAgICAgaW1hZ2Uub25sb2FkID0gKCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIEZvcmNlIGxheW91dCBhbmQgZGlzcGxheSBzbyB0aGUgaW1hZ2UgZ2V0
cyBkcmF3bi4KKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0SGVp
Z2h0OworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIExpc3RlbiBmb3IgdGhlIHdlYmtpdEltYWdlRnJhbWVS
ZWFkeSBldmVudCBhZnRlciByZXF1ZXN0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0
aGUgaW1hZ2UgZGVjb2RpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZS5hZGRFdmVu
dExpc3RlbmVyKCJ3ZWJraXRJbWFnZUZyYW1lUmVhZHkiLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9
LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIGlt
YWdlLnNyYyA9IHNyYzsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgKGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuY2xlYXJNZW1vcnlDYWNoZSgp
OworICAgICAgICAgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRXZWJraXRJbWFnZVJlYWR5
RXZlbnRFbmFibGVkKHRydWUpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworICAgICAgICAgICAgfQorIAorICAgICAgICAgICAgdmFyIGltYWdlID0gZG9jdW1l
bnQucXVlcnlTZWxlY3RvcigiaW1nIik7CisgICAgICAgICAgICBpbWFnZS5kZWNvZGluZz0iYXN5
bmMiOworICAgICAgICAgICAgbG9hZEltYWdlKGltYWdlLCAicmVzb3VyY2VzL2dyZWVuLTI0eDI0
LmpwZyIsIHRydWUpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfSkoKTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1zeW5jLWxhcmdl
LWltYWdlLWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9pbWFn
ZXMvZGVjb2RpbmctYXR0cmlidXRlLXN5bmMtbGFyZ2UtaW1hZ2UtZXhwZWN0ZWQuaHRtbAkobm9u
ZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGluZy1hdHRyaWJ1dGUt
c3luYy1sYXJnZS1pbWFnZS1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MyBAQAorPGJvZHk+CisgICAgPGltZyBzcmM9InJlc291cmNlcy9ncmVlbi00MDB4NDAwLnBuZyI+
Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGluZy1hdHRyaWJ1
dGUtc3luYy1sYXJnZS1pbWFnZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1zeW5jLWxhcmdlLWltYWdlLmh0bWwJKG5vbmV4aXN0
ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLXN5bmMt
bGFyZ2UtaW1hZ2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5IEBACis8Ym9keT4K
KyAgICA8aW1nIGRlY29kaW5nPSJzeW5jIj4KKyAgICA8c2NyaXB0PgorICAgICAgICAoZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgICAgICAgICAgICAgIGludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKCk7Cisg
ICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldExhcmdlSW1hZ2VBc3luY0RlY29k
aW5nRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKKyAgICAgICAgICAgIH0KKyAKKyAgICAgICAgICAgIHZhciBpbWFnZSA9IGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoImltZyIpOworICAgICAgICAgICAgaW1hZ2Uub25sb2FkID0gKCgpID0+
IHsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICBpbWFnZS5zcmMgPSAicmVzb3VyY2VzL2dyZWVuLTQwMHg0MDAucG5nIjsKKyAgICAgICAg
fSkoKTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328664</attachid>
            <date>2017-12-06 17:35:43 -0800</date>
            <delta_ts>2017-12-06 19:36:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179432-20171206173542.patch</filename>
            <type>text/plain</type>
            <size>30353</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNTYwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE3LTEyLTA2ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCB0
aGUgZGVjb2Rpbmc9InN5bmMvYXN5bmMiIHN5bnRheCBmb3IgaW1hZ2UgYXN5bmMgYXR0cmlidXRl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk0MzIK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBTdXBwb3J0IHRo
ZSBIVE1MRWxlbWVudEltYWdlIGRlY29kaW5nIGF0dHJpYnV0ZSB0byBhbGxvdyBjb250cm9sbGlu
ZyB0aGUKKyAgICAgICAgZGVjb2Rpbmcgb2YgYW4gaW1hZ2UgYXMgcGVyOgorICAgICAgICAgICAg
ICAgIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvaHRtbC9wdWxsLzMyMjEKKyAgICAgICAgICAg
ICAgICBodHRwczovL3doYXRwci5vcmcvaHRtbC8zMjIxL2ltYWdlcy5odG1sI2RlY29kaW5nLWlt
YWdlcworCisgICAgICAgIFRlc3RzOiBmYXN0L2ltYWdlcy9kZWNvZGUtZGVjb2RpbmctYXR0cmli
dXRlLWFzeW5jLWxhcmdlLWltYWdlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvaW1hZ2VzL2Rl
Y29kaW5nLWF0dHJpYnV0ZS1hc3luYy1zbWFsbC1pbWFnZS5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2ltYWdlcy9kZWNvZGluZy1hdHRyaWJ1dGUtZHluYW1pYy1hc3luYy1zbWFsbC1pbWFnZS5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2ltYWdlcy9kZWNvZGluZy1hdHRyaWJ1dGUtc3luYy1s
YXJnZS1pbWFnZS5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoK
KyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEltYWdlRWxlbWVudDo6ZGVjb2RpbmdNb2RlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hU
TUxJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjppbnRlcm5hbFN0YXJ0QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjphZHZhbmNlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjppbnRl
cm5hbEFkdmFuY2VBbmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0RlY29k
aW5nT3B0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6RGVjb2RpbmdPcHRpb25zOjpEZWNvZGlu
Z09wdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RGVjb2RpbmdPcHRpb25zOjppc0F1dG8gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RGVjb2RpbmdPcHRpb25zOjppc0FzeW5jaHJvbm91c0Nv
bXBhdGlibGVXaXRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY29kaW5nT3B0aW9uczo6
aXNOb25lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmNsZWFySW1hZ2UpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
U291cmNlOjpmcmFtZUF0SW5kZXhDYWNoZUlmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6ZGVjb2RpbmdNb2RlRm9ySW1hZ2VEcmF3IGNvbnN0KToKKyAgICAg
ICAgVGhlIGVsZW1lbnQgYXR0cmlidXRlcyBhbmQgdGhlIGRvY3VtZW50IHNldHRpbmdzIHNob3Vs
ZCBiZSBjaGVja2VkIGJlZm9yZQorICAgICAgICBjaGVja2luZyBvdXIgaGV1cmlzdGljcy4gQW5k
IHNpbmNlIHRoZSAiZGVjb2RpbmciIGF0dHJpYnV0ZSBpcyBwZXIgYW4gaW1hZ2UKKyAgICAgICAg
YW5kIGlzTGFyZ2VJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkRm9yVGVzdGluZygpIGlzIGEgZ2xv
YmFsIHNldHRpbmcsIHRoZQorICAgICAgICBkZWNvZGluZyBhdHRyaWJ1dGUgc2hvdWxkIGJlIGNo
ZWNrZWQgZmlyc3QuCisKIDIwMTctMTItMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggYnVpbGQgYWZ0ZXIgcjIyNTU3Ny4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCShyZXZpc2lvbiAyMjU2
MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtMTA1LDYgKzEwNSw3IEBAIGNyb3Nzb3JpZ2luCiBkYXRhCiBkYXRldGltZQog
ZGVjbGFyZQorZGVjb2RpbmcKIGRlZmF1bHQKIGRlZmVyCiBkaXIKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMjI1NjA0KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTM4
LDYgKzUzOCwxNiBAQCBib29sIEhUTUxJbWFnZUVsZW1lbnQ6OmNvbXBsZXRlKCkgY29uc3QKICAg
ICByZXR1cm4gbV9pbWFnZUxvYWRlci5pbWFnZUNvbXBsZXRlKCk7CiB9CiAKK0RlY29kaW5nTW9k
ZSBIVE1MSW1hZ2VFbGVtZW50OjpkZWNvZGluZ01vZGUoKSBjb25zdAoreworICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgZGVjb2RpbmdNb2RlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihkZWNvZGluZ0F0dHIpOworICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShk
ZWNvZGluZ01vZGUsICJzeW5jIikpCisgICAgICAgIHJldHVybiBEZWNvZGluZ01vZGU6OlN5bmNo
cm9ub3VzOworICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkZWNvZGluZ01v
ZGUsICJhc3luYyIpKQorICAgICAgICByZXR1cm4gRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXM7
CisgICAgcmV0dXJuIERlY29kaW5nTW9kZTo6QXV0bzsKK30KKyAgICAKIHZvaWQgSFRNTEltYWdl
RWxlbWVudDo6ZGVjb2RlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBy
ZXR1cm4gbV9pbWFnZUxvYWRlci5kZWNvZGUoV1RGTW92ZShwcm9taXNlKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAkocmV2aXNpb24gMjI1NjA0KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDYgKzIzLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEZWNvZGluZ09wdGlvbnMu
aCIKICNpbmNsdWRlICJGb3JtTmFtZWRJdGVtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5o
IgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCkBAIC03OSw2ICs4MCw4IEBAIHB1YmxpYzoKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29tcGxldGUoKSBjb25zdDsKIAorICAgIERlY29kaW5n
TW9kZSBkZWNvZGluZ01vZGUoKSBjb25zdDsKKyAgICAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRlY29kZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAogI2lmIFBMQVRGT1JNKElPUykKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbAkocmV2aXNpb24gMjI1
NjA0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQAogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIHVzZU1hcDsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgdnNwYWNl
OwogICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHdpZHRoOwotICAgIFtSZWZsZWN0XSBhdHRy
aWJ1dGUgYm9vbGVhbiBhc3luYzsKKyAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBk
ZWNvZGluZzsKIAogICAgIC8vIEV4dGVuc2lvbnMKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9v
bGVhbiBjb21wbGV0ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5jcHAJKHJldmlzaW9uIDIyNTYwNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE4
LDcgKzIxOCw3IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGkKICAg
ICAgICAgaWYgKG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPT0gRGVjb2RpbmdTdGF0dXM6
OkRlY29kaW5nKQogICAgICAgICAgICAgcmVzdWx0ID0gSW1hZ2VEcmF3UmVzdWx0OjpEaWRSZXF1
ZXN0RGVjb2Rpbmc7CiAKLSAgICAgICAgaWYgKCFmcmFtZUhhc0RlY29kZWROYXRpdmVJbWFnZUNv
bXBhdGlibGVXaXRoT3B0aW9uc0F0SW5kZXgobV9jdXJyZW50RnJhbWUsIG1fY3VycmVudFN1YnNh
bXBsaW5nTGV2ZWwsIERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzKSkgeworICAgICAgICBpZiAo
IWZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleCht
X2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCwgRGVjb2RpbmdPcHRpb25z
KERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzKSkpIHsKICAgICAgICAgICAgIGlmIChtX3Nob3dE
ZWJ1Z0JhY2tncm91bmQpCiAgICAgICAgICAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRl
eHQsIGRlc3RSZWN0LCBDb2xvcihDb2xvcjo6eWVsbG93KS5jb2xvcldpdGhBbHBoYSgwLjUpLCBv
cCk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjQxLDcgKzI0MSw3IEBAIEltYWdl
RHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGkKICAgICAgICAgICAgIG1fc291cmNl
LT5kZXN0cm95SW5jb21wbGV0ZURlY29kZWREYXRhKCk7CiAgICAgICAgIAogICAgICAgICBib29s
IGZyYW1lSXNDb21wYXRpYmxlID0gZnJhbWVIYXNEZWNvZGVkTmF0aXZlSW1hZ2VDb21wYXRpYmxl
V2l0aE9wdGlvbnNBdEluZGV4KG1fY3VycmVudEZyYW1lLCBtX2N1cnJlbnRTdWJzYW1wbGluZ0xl
dmVsLCBEZWNvZGluZ09wdGlvbnMoc2l6ZUZvckRyYXdpbmcpKTsKLSAgICAgICAgYm9vbCBmcmFt
ZUlzQmVpbmdEZWNvZGVkID0gZnJhbWVJc0JlaW5nRGVjb2RlZEFuZElzQ29tcGF0aWJsZVdpdGhP
cHRpb25zQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXMp
OworICAgICAgICBib29sIGZyYW1lSXNCZWluZ0RlY29kZWQgPSBmcmFtZUlzQmVpbmdEZWNvZGVk
QW5kSXNDb21wYXRpYmxlV2l0aE9wdGlvbnNBdEluZGV4KG1fY3VycmVudEZyYW1lLCBEZWNvZGlu
Z09wdGlvbnMoRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXMpKTsKICAgICAgICAgCiAgICAgICAg
IGlmIChmcmFtZUlzQ29tcGF0aWJsZSkgewogICAgICAgICAgICAgaW1hZ2UgPSBmcmFtZUltYWdl
QXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CkBAIC0zOTQsNyArMzk0LDcgQEAgQml0bWFwSW1hZ2U6
OlN0YXJ0QW5pbWF0aW9uU3RhdHVzIEJpdG1hcAogCiAgICAgLy8gRG9uJ3Qgc3RhcnQgYSBuZXcg
YW5pbWF0aW9uIHVudGlsIHdlIGRyYXcgdGhlIGZyYW1lIHRoYXQgaXMgY3VycmVudGx5IGJlaW5n
IGRlY29kZWQuCiAgICAgc2l6ZV90IG5leHRGcmFtZSA9IChtX2N1cnJlbnRGcmFtZSArIDEpICUg
ZnJhbWVDb3VudCgpOwotICAgIGlmIChmcmFtZUlzQmVpbmdEZWNvZGVkQW5kSXNDb21wYXRpYmxl
V2l0aE9wdGlvbnNBdEluZGV4KG5leHRGcmFtZSwgRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXMp
KSB7CisgICAgaWYgKGZyYW1lSXNCZWluZ0RlY29kZWRBbmRJc0NvbXBhdGlibGVXaXRoT3B0aW9u
c0F0SW5kZXgobmV4dEZyYW1lLCBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpBc3luY2hy
b25vdXMpKSkgewogICAgICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1
cmw6ICVzIFtuZXh0RnJhbWUgPSAlbGQgaXMgYmVpbmcgZGVjb2RlZF0iLCBfX0ZVTkNUSU9OX18s
IHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG5leHRGcmFtZSk7CiAg
ICAgICAgIHJldHVybiBTdGFydEFuaW1hdGlvblN0YXR1czo6RGVjb2RpbmdBY3RpdmU7CiAgICAg
fQpAQCAtNDM3LDcgKzQzNyw3IEBAIEJpdG1hcEltYWdlOjpTdGFydEFuaW1hdGlvblN0YXR1cyBC
aXRtYXAKICAgICAvLyB0aHJvdWdoIHRoZSBjYWxsYmFjayBuZXdGcmFtZU5hdGl2ZUltYWdlQXZh
aWxhYmxlQXRJbmRleCgpLiBPdGhlcndpc2UsIGFkdmFuY2VBbmltYXRpb24oKSB3aWxsIGJlIGNh
bGxlZAogICAgIC8vIHdoZW4gdGhlIHRpbWVyIGZpcmVzIGFuZCBtX2N1cnJlbnRGcmFtZSB3aWxs
IGJlIGFkdmFuY2VkIHRvIG5leHRGcmFtZSBzaW5jZSBpdCBpcyBub3QgYmVpbmcgZGVjb2RlZC4K
ICAgICBpZiAoc2hvdWxkVXNlQXN5bmNEZWNvZGluZ0ZvckFuaW1hdGVkSW1hZ2VzKCkpIHsKLSAg
ICAgICAgaWYgKGZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRpb25z
QXRJbmRleChuZXh0RnJhbWUsIG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwsIHsgfSkpCisgICAg
ICAgIGlmIChmcmFtZUhhc0RlY29kZWROYXRpdmVJbWFnZUNvbXBhdGlibGVXaXRoT3B0aW9uc0F0
SW5kZXgobmV4dEZyYW1lLCBtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsLCBEZWNvZGluZ09wdGlv
bnMoc3RkOjpvcHRpb25hbDxJbnRTaXplPigpKSkpCiAgICAgICAgICAgICBMT0coSW1hZ2VzLCAi
Qml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtjYWNoZWRGcmFtZUNvdW50ID0gJWxkIG5l
eHRGcmFtZSA9ICVsZF0iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCksICsrbV9jYWNoZWRGcmFtZUNvdW50LCBuZXh0RnJhbWUpOwogICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgIG1fc291cmNlLT5yZXF1ZXN0RnJhbWVBc3luY0RlY29kaW5n
QXRJbmRleChuZXh0RnJhbWUsIG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwpOwpAQCAtNDcyLDcg
KzQ3Miw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmFkdmFuY2VBbmltYXRpb24oKQogCiAgICAgLy8g
RG9uJ3QgYWR2YW5jZSB0byBuZXh0RnJhbWUgdW5sZXNzIGl0cyBkZWNvZGluZyBoYXMgZmluaXNo
ZWQgb3Igd2FzIG5vdCByZXF1aXJlZC4KICAgICBzaXplX3QgbmV4dEZyYW1lID0gKG1fY3VycmVu
dEZyYW1lICsgMSkgJSBmcmFtZUNvdW50KCk7Ci0gICAgaWYgKCFmcmFtZUlzQmVpbmdEZWNvZGVk
QW5kSXNDb21wYXRpYmxlV2l0aE9wdGlvbnNBdEluZGV4KG5leHRGcmFtZSwgRGVjb2RpbmdNb2Rl
OjpBc3luY2hyb25vdXMpKQorICAgIGlmICghZnJhbWVJc0JlaW5nRGVjb2RlZEFuZElzQ29tcGF0
aWJsZVdpdGhPcHRpb25zQXRJbmRleChuZXh0RnJhbWUsIERlY29kaW5nT3B0aW9ucyhEZWNvZGlu
Z01vZGU6OkFzeW5jaHJvbm91cykpKQogICAgICAgICBpbnRlcm5hbEFkdmFuY2VBbmltYXRpb24o
KTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gRm9yY2UgcmVwYWludCBpZiBzaG93RGVidWdCYWNr
Z3JvdW5kKCkgaXMgb24uCkBAIC00ODUsNyArNDg1LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6YWR2
YW5jZUFuaW1hdGlvbigpCiB2b2lkIEJpdG1hcEltYWdlOjppbnRlcm5hbEFkdmFuY2VBbmltYXRp
b24oKQogewogICAgIG1fY3VycmVudEZyYW1lID0gKG1fY3VycmVudEZyYW1lICsgMSkgJSBmcmFt
ZUNvdW50KCk7Ci0gICAgQVNTRVJUKCFmcmFtZUlzQmVpbmdEZWNvZGVkQW5kSXNDb21wYXRpYmxl
V2l0aE9wdGlvbnNBdEluZGV4KG1fY3VycmVudEZyYW1lLCBEZWNvZGluZ01vZGU6OkFzeW5jaHJv
bm91cykpOworICAgIEFTU0VSVCghZnJhbWVJc0JlaW5nRGVjb2RlZEFuZElzQ29tcGF0aWJsZVdp
dGhPcHRpb25zQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgRGVjb2RpbmdPcHRpb25zKERlY29kaW5n
TW9kZTo6QXN5bmNocm9ub3VzKSkpOwogCiAgICAgZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3Nh
cnkoZmFsc2UpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZWNv
ZGluZ09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9EZWNvZGluZ09wdGlvbnMuaAkocmV2aXNpb24gMjI1NjA0KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVjb2RpbmdPcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDE0ICszMiwxNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIERlY29k
aW5nTW9kZSB7Ci0gICAgTm9uZSwKKyAgICBBdXRvLAogICAgIFN5bmNocm9ub3VzLAogICAgIEFz
eW5jaHJvbm91cwogfTsKIAogY2xhc3MgRGVjb2RpbmdPcHRpb25zIHsKIHB1YmxpYzoKLSAgICBE
ZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSA9IERlY29kaW5nTW9kZTo6
Tm9uZSkKKyAgICBleHBsaWNpdCBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlIGRlY29kaW5n
TW9kZSA9IERlY29kaW5nTW9kZTo6QXV0bykKICAgICAgICAgOiBtX2RlY29kaW5nTW9kZU9yU2l6
ZShkZWNvZGluZ01vZGUpCiAgICAgewogICAgIH0KQEAgLTU0LDkgKzU0LDkgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gbV9kZWNvZGluZ01vZGVPclNpemUgPT0gb3RoZXIubV9kZWNvZGluZ01v
ZGVPclNpemU7CiAgICAgfQogCi0gICAgYm9vbCBpc05vbmUoKSBjb25zdAorICAgIGJvb2wgaXNB
dXRvKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBoYXNEZWNvZGluZ01vZGUoKSAmJiBX
VEY6OmdldDxEZWNvZGluZ01vZGU+KG1fZGVjb2RpbmdNb2RlT3JTaXplKSA9PSBEZWNvZGluZ01v
ZGU6Ok5vbmU7CisgICAgICAgIHJldHVybiBoYXNEZWNvZGluZ01vZGUoKSAmJiBXVEY6OmdldDxE
ZWNvZGluZ01vZGU+KG1fZGVjb2RpbmdNb2RlT3JTaXplKSA9PSBEZWNvZGluZ01vZGU6OkF1dG87
CiAgICAgfQogICAgIAogICAgIGJvb2wgaXNTeW5jaHJvbm91cygpIGNvbnN0CkBAIC03MSw3ICs3
MSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNBc3luY2hyb25vdXNDb21wYXRpYmxlV2l0aChj
b25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucykgY29uc3QKICAgICB7Ci0gICAg
ICAgIGlmIChpc05vbmUoKSB8fCBkZWNvZGluZ09wdGlvbnMuaXNOb25lKCkpCisgICAgICAgIGlm
IChpc0F1dG8oKSB8fCBkZWNvZGluZ09wdGlvbnMuaXNBdXRvKCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAgICAgLy8gQ29tcGFyaW5nIERlY29kaW5nT3B0aW9ucyB3aXRoIGlz
QXN5bmNocm9ub3VzKCkgc2hvdWxkIG5vdCBoYXBwZW4uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAkocmV2aXNpb24gMjI1NjA0KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBmcmFt
ZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
dW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vi
c2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBOYXRpdmVJ
bWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwg
PSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVj
b2RpbmdNb2RlOjpTeW5jaHJvbm91cykgPSAwOworICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIg
Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2Ft
cGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0
aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lk
IHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
c2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgPSAwOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5jcHAJKHJl
dmlzaW9uIDIyNTYwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
RnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBAIHVuc2lnbmVkIEltYWdl
RnJhbWU6OmNsZWFySW1hZ2UoKQogCiAgICAgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhtX25h
dGl2ZUltYWdlKTsKICAgICBtX25hdGl2ZUltYWdlID0gbnVsbHB0cjsKLSAgICBtX2RlY29kaW5n
T3B0aW9ucyA9IHsgfTsKKyAgICBtX2RlY29kaW5nT3B0aW9ucyA9IERlY29kaW5nT3B0aW9ucygp
OwogCiAgICAgcmV0dXJuIGZyYW1lQnl0ZXM7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCShyZXZpc2lvbiAyMjU2MDQpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDIzICsyNywxNCBAQAogI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCiAK
ICNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgogI2luY2x1ZGUg
IkltYWdlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiVVJMLmgi
Ci0jaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KLQotI2lmIFVTRShDRykKLSNpbmNsdWRl
ICJJbWFnZURlY29kZXJDRy5oIgotI2VsaWYgVVNFKERJUkVDVDJEKQotI2luY2x1ZGUgIkltYWdl
RGVjb2RlckRpcmVjdDJELmgiCi0jaW5jbHVkZSA8V2luQ29kZWMuaD4KLSNlbHNlCi0jaW5jbHVk
ZSAiSW1hZ2VEZWNvZGVyLmgiCi0jZW5kaWYKLQogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGht
ZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KKyNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTQwNiw3ICszOTcsNyBAQCBjb25zdCBJbWFnZUZyYW1lJiBJbWFnZVNvdXJjZTo6
ZnJhbWVBdEluCiB7CiAgICAgQVNTRVJUKGluZGV4IDwgbV9mcmFtZXMuc2l6ZSgpKTsKICAgICBJ
bWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVzW2luZGV4XTsKLSAgICBpZiAoIWlzRGVjb2RlckF2
YWlsYWJsZSgpIHx8IGZyYW1lSXNCZWluZ0RlY29kZWRBbmRJc0NvbXBhdGlibGVXaXRoT3B0aW9u
c0F0SW5kZXgoaW5kZXgsIERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzKSkKKyAgICBpZiAoIWlz
RGVjb2RlckF2YWlsYWJsZSgpIHx8IGZyYW1lSXNCZWluZ0RlY29kZWRBbmRJc0NvbXBhdGlibGVX
aXRoT3B0aW9uc0F0SW5kZXgoaW5kZXgsIERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OkFz
eW5jaHJvbm91cykpKQogICAgICAgICByZXR1cm4gZnJhbWU7CiAKICAgICBTdWJzYW1wbGluZ0xl
dmVsIHN1YnNhbXBsaW5nTGV2ZWxWYWx1ZSA9IHN1YnNhbXBsaW5nTGV2ZWwgPyBzdWJzYW1wbGlu
Z0xldmVsLnZhbHVlKCkgOiBmcmFtZS5zdWJzYW1wbGluZ0xldmVsKCk7CkBAIC00MjYsNyArNDE3
LDcgQEAgY29uc3QgSW1hZ2VGcmFtZSYgSW1hZ2VTb3VyY2U6OmZyYW1lQXRJbgogICAgICAgICAv
LyBXZSBoYXZlIHRvIHBlcmZvcm0gc3luY2hyb25vdXMgaW1hZ2UgZGVjb2RpbmcgaW4gdGhpcyBj
b2RlLgogICAgICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSA9IG1fZGVjb2Rlci0+Y3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWxWYWx1ZSk7CiAgICAg
ICAgIC8vIENsZWFuIHRoZSBvbGQgbmF0aXZlIGltYWdlIGFuZCBzZXQgYSBuZXcgb25lLgotICAg
ICAgICBjYWNoZU5hdGl2ZUltYWdlQXRJbmRleChXVEZNb3ZlKG5hdGl2ZUltYWdlKSwgaW5kZXgs
IHN1YnNhbXBsaW5nTGV2ZWxWYWx1ZSwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cyk7CisgICAg
ICAgIGNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KFdURk1vdmUobmF0aXZlSW1hZ2UpLCBpbmRleCwg
c3Vic2FtcGxpbmdMZXZlbFZhbHVlLCBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5j
aHJvbm91cykpOwogICAgICAgICBicmVhazsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgJKHJldmlzaW9uIDIyNTYwNCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVj
b2RlckFWRk9iakMuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBmcmFtZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCkgY29uc3QgZmluYWw7
CiAgICAgdW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVs
ID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3QgZmluYWw7CiAKLSAgICBOYXRpdmVJ
bWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwg
PSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVj
b2RpbmdNb2RlOjpTeW5jaHJvbm91cykgZmluYWw7CisgICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhE
ZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVk
Q29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbDsKICAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVm
ZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCShyZXZpc2lv
biAyMjU2MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBi
b29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdCBmaW5hbDsKICAg
ICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBT
dWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdCBmaW5hbDsKIAotICAgIE5hdGl2ZUltYWdl
UHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGlu
Z01vZGU6OlN5bmNocm9ub3VzKSBmaW5hbDsKKyAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVs
OjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29k
aW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RGF0YShTaGFyZWRC
dWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFS
ZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJl
Y3QyRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCShyZXZpc2lvbiAyMjU2MDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBmcmFtZUFsbG93U3Vi
c2FtcGxpbmdBdEluZGV4KHNpemVfdCkgY29uc3QgZmluYWw7CiAgICAgdW5zaWduZWQgZnJhbWVC
eXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6
RGVmYXVsdCkgY29uc3QgZmluYWw7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpE
ZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91
cykgY29uc3QgZmluYWw7CisgICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwg
Y29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5
bmNocm9ub3VzKSkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVy
JiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2
ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgJKHJldmlzaW9uIDIyNTYwNCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE0Niw3ICsxNDYsNyBAQCBwdWJsaWM6CiAKICAgICBTZWNvbmRzIGZyYW1l
RHVyYXRpb25BdEluZGV4KHNpemVfdCkgY29uc3QgZmluYWw7CiAKLSAgICBOYXRpdmVJbWFnZVB0
ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJz
YW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdN
b2RlOjpTeW5jaHJvbm91cykgb3ZlcnJpZGU7CisgICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZl
bDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNv
ZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldElnbm9yZUdh
bW1hQW5kQ29sb3JQcm9maWxlKGJvb2wgZmxhZykgeyBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9m
aWxlID0gZmxhZzsgfQogICAgIGJvb2wgaWdub3Jlc0dhbW1hQW5kQ29sb3JQcm9maWxlKCkgY29u
c3QgeyByZXR1cm4gbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZTsgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCShyZXZp
c2lvbiAyMjU2MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzQsMTAgKzM3NCwxMyBAQCBEZWNvZGluZ01v
ZGUgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmRlY29kCiAgICAgaWYgKElPU0FwcGxpY2F0aW9uOjpp
c0lCb29rc1N0b3J5dGltZSgpKQogICAgICAgICByZXR1cm4gRGVjb2RpbmdNb2RlOjpTeW5jaHJv
bm91czsKICNlbmRpZgorICAgIGlmIChpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KCkpKSB7
CisgICAgICAgIGF1dG8gZGVjb2RpbmdNb2RlID0gZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4o
KmVsZW1lbnQoKSkuZGVjb2RpbmdNb2RlKCk7CisgICAgICAgIGlmIChkZWNvZGluZ01vZGUgIT0g
RGVjb2RpbmdNb2RlOjpBdXRvKQorICAgICAgICAgICAgcmV0dXJuIGRlY29kaW5nTW9kZTsKKyAg
ICB9CiAgICAgaWYgKGJpdG1hcEltYWdlLmlzTGFyZ2VJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVk
Rm9yVGVzdGluZygpKQogICAgICAgICByZXR1cm4gRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXM7
Ci0gICAgaWYgKGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQoKSkgJiYgZWxlbWVudCgpLT5o
YXNBdHRyaWJ1dGUoYXN5bmNBdHRyKSkKLSAgICAgICAgcmV0dXJuIERlY29kaW5nTW9kZTo6QXN5
bmNocm9ub3VzOwogICAgIGlmIChkb2N1bWVudCgpLmlzSW1hZ2VEb2N1bWVudCgpKQogICAgICAg
ICByZXR1cm4gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91czsKICAgICBpZiAocGFpbnRJbmZvLnBh
aW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nKQpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gMjI1NjA0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjEgQEAKKzIwMTctMTItMDYgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdh
QGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHRoZSBkZWNvZGluZz0ic3luYy9hc3luYyIg
c3ludGF4IGZvciBpbWFnZSBhc3luYyBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTQzMgorCisgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgorCisgICAgICAgICogZmFzdC9pbWFnZXMvYXN5bmMtYXR0cmlidXRlLXdpdGgt
c21hbGwtaW1hZ2UtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdl
cy9hc3luYy1hdHRyaWJ1dGUtd2l0aC1zbWFsbC1pbWFnZS5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIGZhc3QvaW1hZ2VzL2RlY29kZS1kZWNvZGluZy1hdHRyaWJ1dGUtYXN5bmMtbGFyZ2UtaW1h
Z2UtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvZGVjb2RlLWRl
Y29kaW5nLWF0dHJpYnV0ZS1hc3luYy1sYXJnZS1pbWFnZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2ltYWdlcy9kZWNvZGluZy1hdHRyaWJ1dGUtYXN5bmMtc21hbGwtaW1hZ2UtZXhwZWN0
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRl
LWFzeW5jLXNtYWxsLWltYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaW1hZ2VzL2Rl
Y29kaW5nLWF0dHJpYnV0ZS1keW5hbWljLWFzeW5jLXNtYWxsLWltYWdlLWV4cGVjdGVkLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1keW5hbWlj
LWFzeW5jLXNtYWxsLWltYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaW1hZ2VzL2Rl
Y29kaW5nLWF0dHJpYnV0ZS1zeW5jLWxhcmdlLWltYWdlLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1zeW5jLWxhcmdlLWltYWdl
Lmh0bWw6IEFkZGVkLgorCiAyMDE3LTEyLTA2ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBw
bGUuY29tPgogCiAgICAgICAgIE1hcmsgd2ViZ2wvMS4wLjIvY29uZm9ybWFuY2UvdGV4dHVyZXMv
Z2wtdGV4aW1hZ2UuaHRtbCBhcyBmYWlsaW5nIGFnYWluLgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9pbWFnZXMvYXN5bmMtYXR0cmlidXRlLXdpdGgtc21hbGwtaW1hZ2UtZXhwZWN0ZWQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9hc3luYy1hdHRyaWJ1dGUtd2l0
aC1zbWFsbC1pbWFnZS1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAyMjU2MDQpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy9hc3luYy1hdHRyaWJ1dGUtd2l0aC1zbWFsbC1pbWFnZS1leHBlY3Rl
ZC5odG1sCShub25leGlzdGVudCkKQEAgLTEsMyArMCwwIEBACi08Ym9keT4KLSAgICA8aW1nIHNy
Yz0icmVzb3VyY2VzL2dyZWVuLTI0eDI0LmpwZyI+Ci0gPC9ib2R5PgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9pbWFnZXMvYXN5bmMtYXR0cmlidXRlLXdpdGgtc21hbGwtaW1hZ2UuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9hc3luYy1hdHRyaWJ1dGUtd2l0aC1z
bWFsbC1pbWFnZS5odG1sCShyZXZpc2lvbiAyMjU2MDQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2lt
YWdlcy9hc3luYy1hdHRyaWJ1dGUtd2l0aC1zbWFsbC1pbWFnZS5odG1sCShub25leGlzdGVudCkK
QEAgLTEsMzcgKzAsMCBAQAotPGJvZHk+Ci0gICAgPGltZyBhc3luYz4KLSAgICA8c2NyaXB0Pgot
ICAgICAgICBmdW5jdGlvbiBsb2FkSW1hZ2UoaW1hZ2UsIHNyYykgewotICAgICAgICAgICAgcmV0
dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7Ci0gICAgICAgICAgICAgICAgaW1hZ2Uub25s
b2FkID0gKCgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMg
JiYgd2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvcmNl
IGxheW91dCBhbmQgZGlzcGxheSBzbyB0aGUgaW1hZ2UgZ2V0cyBkcmF3bi4KLSAgICAgICAgICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0OwotICAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAg
IC8vIExpc3RlbiBmb3IgdGhlIHdlYmtpdEltYWdlRnJhbWVSZWFkeSBldmVudCBhZnRlciByZXF1
ZXN0aW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgaW1hZ2UgZGVjb2RpbmcuCi0g
ICAgICAgICAgICAgICAgICAgICAgICBpbWFnZS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRJbWFn
ZUZyYW1lUmVhZHkiLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9LCBmYWxzZSk7Ci0gICAgICAgICAg
ICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwotICAg
ICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIGltYWdlLnNyYyA9IHNyYzsKLSAgICAg
ICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgICAgIChmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgICAg
ICAgICAgaW50ZXJuYWxzLmNsZWFyTWVtb3J5Q2FjaGUoKTsKLSAgICAgICAgICAgICAgICBpbnRl
cm5hbHMuc2V0dGluZ3Muc2V0V2Via2l0SW1hZ2VSZWFkeUV2ZW50RW5hYmxlZCh0cnVlKTsKLSAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgICAgIH0K
LSAKLSAgICAgICAgICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImltZyIp
OwotICAgICAgICAgICAgbG9hZEltYWdlKGltYWdlLCAicmVzb3VyY2VzL2dyZWVuLTI0eDI0Lmpw
ZyIsIHRydWUpLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAg
ICAgICAgICB9KTsKLSAgICAgICAgfSkoKTsKLSAgICA8L3NjcmlwdD4KLTwvYm9keT4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1kZWNvZGluZy1hdHRyaWJ1dGUtYXN5bmMt
bGFyZ2UtaW1hZ2UtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ltYWdlcy9kZWNvZGUtZGVjb2RpbmctYXR0cmlidXRlLWFzeW5jLWxhcmdlLWltYWdlLWV4cGVj
dGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2Rl
LWRlY29kaW5nLWF0dHJpYnV0ZS1hc3luYy1sYXJnZS1pbWFnZS1leHBlY3RlZC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNCBAQAorPGJvZHk+CisgICAgPHA+VGhpcyB0ZXN0IGVuc3Vy
ZXMgaWYgdGhlIHNyYyBvZiBhbiBpbWFnZSB3aXRoIGRlY29kaW5nPSJhc3luYyIgaXMgc2V0IHRv
IHRoZSBzcmMgb2YgYSBkZWNvZGVkIGltYWdlLCBubyBmdXJ0aGVyIGRlY29kaW5nIHdpbGwgYmUg
cmVxdWVzdGVkLjwvcD4KKyAgICA8aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuLTQwMHg0MDAucG5n
Ij4KKzwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZS1kZWNvZGlu
Zy1hdHRyaWJ1dGUtYXN5bmMtbGFyZ2UtaW1hZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGUtZGVjb2RpbmctYXR0cmlidXRlLWFzeW5jLWxhcmdlLWlt
YWdlLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2Rl
LWRlY29kaW5nLWF0dHJpYnV0ZS1hc3luYy1sYXJnZS1pbWFnZS5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMjAgQEAKKzxib2R5PgorICAgIDxwPlRoaXMgdGVzdCBlbnN1cmVzIGlmIHRo
ZSBzcmMgb2YgYW4gaW1hZ2Ugd2l0aCBkZWNvZGluZz0iYXN5bmMiIGlzIHNldCB0byB0aGUgc3Jj
IG9mIGEgZGVjb2RlZCBpbWFnZSwgbm8gZnVydGhlciBkZWNvZGluZyB3aWxsIGJlIHJlcXVlc3Rl
ZC48L3A+CisgICAgPGltZyBkZWNvZGluZz0iYXN5bmMiPgorICAgIDxzY3JpcHQ+CisgICAgICAg
IChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgICAgaW50ZXJuYWxzLmNsZWFyTWVtb3J5Q2Fj
aGUoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIGltYWdlID0gbmV3IEltYWdlOworICAgICAgICAg
ICAgaW1hZ2Uuc3JjID0gInJlc291cmNlcy9ncmVlbi00MDB4NDAwLnBuZyI7CisgICAgICAgICAg
ICBpbWFnZS5kZWNvZGUoKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCJpbWciKS5zcmMgPSBpbWFnZS5zcmM7CisgICAgICAgICAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KSgpOworICAgIDwvc2NyaXB0Pgor
PC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRl
LWFzeW5jLXNtYWxsLWltYWdlLWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLWFzeW5jLXNtYWxsLWltYWdlLWV4cGVj
dGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2Rp
bmctYXR0cmlidXRlLWFzeW5jLXNtYWxsLWltYWdlLWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0IEBACis8Ym9keT4KKyAgICA8cD5UaGlzIHRlc3QgZW5zdXJlcyBhbiBp
bWFnZSB3aXRoIGRlY29kaW5nPSJhc3luYyIgd2lsbCBiZSBkZWNvZGVkIGFzeW5jaHJvbm91c2x5
IHJlZ2FyZGxlc3Mgb2YgaXRzIHNpemUuPC9wPgorICAgIDxpbWcgc3JjPSJyZXNvdXJjZXMvZ3Jl
ZW4tMjR4MjQuanBnIj4KKzwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2Rl
Y29kaW5nLWF0dHJpYnV0ZS1hc3luYy1zbWFsbC1pbWFnZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1hc3luYy1zbWFsbC1pbWFn
ZS5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kaW5n
LWF0dHJpYnV0ZS1hc3luYy1zbWFsbC1pbWFnZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMzkgQEAKKzxib2R5PgorICAgIDxwPlRoaXMgdGVzdCBlbnN1cmVzIGFuIGltYWdlIHdpdGgg
ZGVjb2Rpbmc9ImFzeW5jIiB3aWxsIGJlIGRlY29kZWQgYXN5bmNocm9ub3VzbHkgcmVnYXJkbGVz
cyBvZiBpdHMgc2l6ZS48L3A+CisgICAgPGltZyBkZWNvZGluZz0iYXN5bmMiPgorICAgIDxzY3Jp
cHQ+CisgICAgICAgIGZ1bmN0aW9uIGxvYWRJbWFnZShpbWFnZSwgc3JjKSB7CisgICAgICAgICAg
ICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAgICAgICAgICAgICAgICBpbWFn
ZS5vbmxvYWQgPSAoKCkgPT4geworICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmludGVy
bmFscyAmJiB3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Rm9yY2UgbGF5b3V0IGFuZCBkaXNwbGF5IHNvIHRoZSBpbWFnZSBnZXRzIGRyYXduLgorICAgICAg
ICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQ7CisgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLmRpc3BsYXkoKTsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gTGlzdGVuIGZvciB0aGUgd2Via2l0SW1hZ2VGcmFtZVJlYWR5IGV2ZW50IGFmdGVy
IHJlcXVlc3RpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBpbWFnZSBkZWNvZGlu
Zy4KKyAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlLmFkZEV2ZW50TGlzdGVuZXIoIndlYmtp
dEltYWdlRnJhbWVSZWFkeSIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sIGZhbHNlKTsKKyAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgaW1hZ2Uuc3JjID0gc3JjOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICAoZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICAgICAgICAgIGludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKCk7CisgICAgICAgICAgICAg
ICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFdlYmtpdEltYWdlUmVhZHlFdmVudEVuYWJsZWQodHJ1
ZSk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAg
ICAgICB9CisgCisgICAgICAgICAgICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9y
KCJpbWciKTsKKyAgICAgICAgICAgIGxvYWRJbWFnZShpbWFnZSwgInJlc291cmNlcy9ncmVlbi0y
NHgyNC5qcGciLCB0cnVlKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pKCk7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGluZy1hdHRyaWJ1dGUtZHluYW1p
Yy1hc3luYy1zbWFsbC1pbWFnZS1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1keW5hbWljLWFzeW5jLXNtYWxsLWlt
YWdlLWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbWFn
ZXMvZGVjb2RpbmctYXR0cmlidXRlLWR5bmFtaWMtYXN5bmMtc21hbGwtaW1hZ2UtZXhwZWN0ZWQu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAKKzxib2R5PgorCTxwPlRoaXMgdGVz
dCBlbnN1cmVzIGlmIHRoZSBkZWNvZGluZyBhdHRyaWJ1dGUgb2YgYW4gaW1hZ2UgaXMgc2V0IGR5
bmFtaWNhbGx5IHRvICJhc3luYyIsIHRoZSBpbWFnZSB3aWxsIGJlIGRlY29kZWQgYXN5bmNocm9u
b3VzbHkgcmVnYXJkbGVzcyBvZiBpdHMgc2l6ZS48L3A+CisgICAgPGltZyBzcmM9InJlc291cmNl
cy9ncmVlbi0yNHgyNC5qcGciPgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9pbWFn
ZXMvZGVjb2RpbmctYXR0cmlidXRlLWR5bmFtaWMtYXN5bmMtc21hbGwtaW1hZ2UuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGluZy1hdHRyaWJ1dGUtZHlu
YW1pYy1hc3luYy1zbWFsbC1pbWFnZS5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1keW5hbWljLWFzeW5jLXNtYWxsLWltYWdl
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MCBAQAorPGJvZHk+CisgICAgPHA+VGhp
cyB0ZXN0IGVuc3VyZXMgaWYgdGhlIGRlY29kaW5nIGF0dHJpYnV0ZSBvZiBhbiBpbWFnZSBpcyBz
ZXQgZHluYW1pY2FsbHkgdG8gImFzeW5jIiwgdGhlIGltYWdlIHdpbGwgYmUgZGVjb2RlZCBhc3lu
Y2hyb25vdXNseSByZWdhcmRsZXNzIG9mIGl0cyBzaXplLjwvcD4KKyAgICA8aW1nIGRlY29kaW5n
PSJzeW5jIj4KKyAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiBsb2FkSW1hZ2UoaW1hZ2Us
IHNyYykgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7Cisg
ICAgICAgICAgICAgICAgaW1hZ2Uub25sb2FkID0gKCgpID0+IHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIEZvcmNlIGxheW91dCBhbmQgZGlzcGxheSBzbyB0aGUgaW1hZ2Ug
Z2V0cyBkcmF3bi4KKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0
SGVpZ2h0OworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIC8vIExpc3RlbiBmb3IgdGhlIHdlYmtpdEltYWdlRnJh
bWVSZWFkeSBldmVudCBhZnRlciByZXF1ZXN0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAv
LyB0aGUgaW1hZ2UgZGVjb2RpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZS5hZGRF
dmVudExpc3RlbmVyKCJ3ZWJraXRJbWFnZUZyYW1lUmVhZHkiLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAg
IGltYWdlLnNyYyA9IHNyYzsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAg
KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuY2xlYXJNZW1vcnlDYWNo
ZSgpOworICAgICAgICAgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRXZWJraXRJbWFnZVJl
YWR5RXZlbnRFbmFibGVkKHRydWUpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOworICAgICAgICAgICAgfQorIAorICAgICAgICAgICAgdmFyIGltYWdlID0gZG9j
dW1lbnQucXVlcnlTZWxlY3RvcigiaW1nIik7CisgICAgICAgICAgICBpbWFnZS5kZWNvZGluZz0i
YXN5bmMiOworICAgICAgICAgICAgbG9hZEltYWdlKGltYWdlLCAicmVzb3VyY2VzL2dyZWVuLTI0
eDI0LmpwZyIsIHRydWUpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSkoKTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1zeW5jLWxh
cmdlLWltYWdlLWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9p
bWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLXN5bmMtbGFyZ2UtaW1hZ2UtZXhwZWN0ZWQuaHRtbAko
bm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGluZy1hdHRyaWJ1
dGUtc3luYy1sYXJnZS1pbWFnZS1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNCBAQAorPGJvZHk+CisJPHA+VGhpcyB0ZXN0IGVuc3VyZXMgYW4gaW1hZ2Ugd2l0aCBkZWNv
ZGluZz0ic3luYyIgd2lsbCBiZSBkZWNvZGVkIHN5bmNocm9ub3VzbHkgcmVnYXJkbGVzcyBvZiBp
dHMgc2l6ZS48L3A+CisgICAgPGltZyBzcmM9InJlc291cmNlcy9ncmVlbi00MDB4NDAwLnBuZyI+
Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGluZy1hdHRyaWJ1
dGUtc3luYy1sYXJnZS1pbWFnZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1zeW5jLWxhcmdlLWltYWdlLmh0bWwJKG5vbmV4aXN0
ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLXN5bmMt
bGFyZ2UtaW1hZ2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIwIEBACis8Ym9keT4K
KyAgICA8cD5UaGlzIHRlc3QgZW5zdXJlcyBhbiBpbWFnZSB3aXRoIGRlY29kaW5nPSJzeW5jIiB3
aWxsIGJlIGRlY29kZWQgc3luY2hyb25vdXNseSByZWdhcmRsZXNzIG9mIGl0cyBzaXplLjwvcD4K
KyAgICA8aW1nIGRlY29kaW5nPSJzeW5jIj4KKyAgICA8c2NyaXB0PgorICAgICAgICAoZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgICAgICAgICAgICAgIGludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKCk7Cisg
ICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldExhcmdlSW1hZ2VBc3luY0RlY29k
aW5nRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIGltYWdlID0gZG9jdW1lbnQu
cXVlcnlTZWxlY3RvcigiaW1nIik7CisgICAgICAgICAgICBpbWFnZS5vbmxvYWQgPSAoKCkgPT4g
eworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIGltYWdlLnNyYyA9ICJyZXNvdXJjZXMvZ3JlZW4tNDAweDQwMC5wbmciOworICAgICAgICB9
KSgpOworICAgIDwvc2NyaXB0PgorPC9ib2R5Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>