<?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>163250</bug_id>
          
          <creation_ts>2016-10-10 16:08:58 -0700</creation_ts>
          <short_desc>Implement prefers-reduced-motion media query</short_desc>
          <delta_ts>2018-11-07 01:44:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=182169</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>hikezoe.birchill</cc>
    
    <cc>jcraig</cc>
    
    <cc>joesimon817</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1238587</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-10-10 16:08:58 -0700</bug_when>
    <thetext>Implement prefers-reduced-motion media query</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238590</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-10-10 16:09:51 -0700</bug_when>
    <thetext>&lt;rdar://problem/28704129&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238593</commentid>
    <comment_count>2</comment_count>
      <attachid>291178</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-10-10 16:14:31 -0700</bug_when>
    <thetext>Created attachment 291178
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238629</commentid>
    <comment_count>3</comment_count>
      <attachid>291178</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-10 16:59:34 -0700</bug_when>
    <thetext>Comment on attachment 291178
Patch

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

Looks good -- aside from failing to build! :-)  r=me if you fix the minor build issue.

&gt; Source/WebCore/ChangeLog:7
&gt; +        Reviewed by NOBODY (OOPS!).

This fails to build on EFL/GTK (and maybe Windows) since they don&apos;t have an implementation of &quot;platformTheme()&quot;.

It might be enough to just #if/def around PLATFORM(COCOA)?

&gt; Source/WebCore/css/MediaQueryEvaluator.cpp:660
&gt; +{

Maybe:

#if PLATFORM(COCOA)

&gt; Source/WebCore/css/MediaQueryEvaluator.cpp:674
&gt; +    }

#else
    return false;
#endif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238783</commentid>
    <comment_count>4</comment_count>
      <attachid>291178</attachid>
    <who name="James Craig">jcraig</who>
    <bug_when>2016-10-11 01:05:49 -0700</bug_when>
    <thetext>Comment on attachment 291178
Patch

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

&gt; Source/WebCore/css/MediaQueryEvaluator.cpp:670
&gt; +    case CSSValueNone:
&gt; +    case CSSValueReduce:
&gt; +        return userPrefersReducedMotion;
&gt; +    case CSSValueDefault:
&gt; +        return !userPrefersReducedMotion;

I don&apos;t think CSSValueNone should be a synonym of CSSValueReduce. &quot;None&quot; is used frequently in MQ4 to mean indicate no preference, or default value, but the term `none` is ambiguous with some media features.  Since &quot;prefers-reduced-motion: none&quot; could mean either &quot;I expect no motion&quot; or &quot;I expect no preference&quot;— we used the `default` value to reduce ambiguity.

The following should be synonymous (Boolean: True):
&quot;(prefers-reduced-motion)&quot; or &quot;(prefers-reduced-motion: reduce)&quot;

Likewise these should be synonymous (Boolean: False):
&quot;not (prefers-reduced-motion)&quot; or &quot;(prefers-reduced-motion: default)&quot;

Due to the ambiguity in this context, the `none` value should remain undefined/invalid.

See &quot;Enabling Media Features in a Boolean Context&quot;
https://www.w3.org/TR/mediaqueries-4/#mq-boolean-context</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238811</commentid>
    <comment_count>5</comment_count>
      <attachid>291178</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-10-11 04:22:05 -0700</bug_when>
    <thetext>Comment on attachment 291178
Patch

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

&gt;&gt; Source/WebCore/css/MediaQueryEvaluator.cpp:660
&gt;&gt; +{
&gt; 
&gt; Maybe:
&gt; 
&gt; #if PLATFORM(COCOA)

I didn&apos;t want to limit this part to a platform. It should be the theme that does that.

&gt;&gt; Source/WebCore/css/MediaQueryEvaluator.cpp:670
&gt;&gt; +        return !userPrefersReducedMotion;
&gt; 
&gt; I don&apos;t think CSSValueNone should be a synonym of CSSValueReduce. &quot;None&quot; is used frequently in MQ4 to mean indicate no preference, or default value, but the term `none` is ambiguous with some media features.  Since &quot;prefers-reduced-motion: none&quot; could mean either &quot;I expect no motion&quot; or &quot;I expect no preference&quot;— we used the `default` value to reduce ambiguity.
&gt; 
&gt; The following should be synonymous (Boolean: True):
&gt; &quot;(prefers-reduced-motion)&quot; or &quot;(prefers-reduced-motion: reduce)&quot;
&gt; 
&gt; Likewise these should be synonymous (Boolean: False):
&gt; &quot;not (prefers-reduced-motion)&quot; or &quot;(prefers-reduced-motion: default)&quot;
&gt; 
&gt; Due to the ambiguity in this context, the `none` value should remain undefined/invalid.
&gt; 
&gt; See &quot;Enabling Media Features in a Boolean Context&quot;
&gt; https://www.w3.org/TR/mediaqueries-4/#mq-boolean-context

Yeah, I misread that part. In fact, I still find it a bit confusing.

&quot;If the feature would be true for any value other than the number 0, a &lt;dimension&gt; with the value 0, or the keyword none, the media feature evaluates to true. Otherwise, it evaluates to false.&quot;

I didn&apos;t associate the &quot;other than&quot; with the other clauses, so I read that as &quot;If the feature would be true for the keyword none&quot; and figured it meant that none had to evaluate to true. I&apos;ll fix this and the pull request.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238907</commentid>
    <comment_count>6</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2016-10-11 10:08:46 -0700</bug_when>
    <thetext>&gt; &quot;If the feature would be true for any value other than the number 0, a &lt;dimension&gt; with the value 0, or the keyword none, the media feature evaluates to true. Otherwise, it evaluates to false.&quot;

Looks like you would also need to add, &quot;or the keyword default&quot; to this section, and probably an informative note in the default value definition about how it evaluates to false in the Boolean context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238927</commentid>
    <comment_count>7</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2016-10-11 11:38:57 -0700</bug_when>
    <thetext>For clarity, the last comment is about the related CSS PR:
https://github.com/w3c/csswg-drafts/pull/586</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238952</commentid>
    <comment_count>8</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-10-11 12:30:41 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; For clarity, the last comment is about the related CSS PR:
&gt; https://github.com/w3c/csswg-drafts/pull/586

I just updated that to remove &apos;none&apos; and clarify the &apos;default&apos; falsiness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238958</commentid>
    <comment_count>9</comment_count>
      <attachid>291288</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-10-11 12:44:49 -0700</bug_when>
    <thetext>Created attachment 291288
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238968</commentid>
    <comment_count>10</comment_count>
      <attachid>291288</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-10-11 13:13:21 -0700</bug_when>
    <thetext>Comment on attachment 291288
Patch

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

&gt; Source/WebCore/testing/Internals.mm:55
&gt; +#if PLATFORM(IOS)
&gt; +    return UIAccessibilityIsReduceMotionEnabled();
&gt; +#elif PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101200
&gt; +    return [[NSWorkspace sharedWorkspace] accessibilityDisplayShouldReduceMotion];
&gt; +#else
&gt; +    return false;
&gt; +#endif

This is a weird way to test. Shouldn&apos;t we set a flag that makes Theme::userPrefersReducedMotion() return true and test that way?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238970</commentid>
    <comment_count>11</comment_count>
      <attachid>291288</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-10-11 13:20:09 -0700</bug_when>
    <thetext>Comment on attachment 291288
Patch

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

&gt;&gt; Source/WebCore/testing/Internals.mm:55
&gt;&gt; +#endif
&gt; 
&gt; This is a weird way to test. Shouldn&apos;t we set a flag that makes Theme::userPrefersReducedMotion() return true and test that way?

I considered this. However, we can&apos;t know what setting the tester might have. If you&apos;ve already selected reduced motion, then we can&apos;t test the negative case. Basically, we can&apos;t override what the system says, and faking a system result doesn&apos;t test everything. So we either have to have a test that fakes reality but doesn&apos;t check the actual system, or a test that matches reality but doesn&apos;t necessarily check the entire code path. I went for the latter, because at least it can then serve as a manual test.

I also tested manually on macOS and iOS to make sure it works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238992</commentid>
    <comment_count>12</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-10-11 13:57:04 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Comment on attachment 291288 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=291288&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/testing/Internals.mm:55
&gt; &gt;&gt; +#endif
&gt; &gt; 
&gt; &gt; This is a weird way to test. Shouldn&apos;t we set a flag that makes Theme::userPrefersReducedMotion() return true and test that way?
&gt; 
&gt; I considered this. However, we can&apos;t know what setting the tester might
&gt; have.

Right, the test should be independent of the testing device config, which is why forcing a known state via internals is appropriate.

&gt;  faking a system result doesn&apos;t test everything

It does; it tests all the WebKit code, which is what we&apos;re trying to test.

Simon</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238994</commentid>
    <comment_count>13</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-10-11 13:59:48 -0700</bug_when>
    <thetext>&gt; &gt; I considered this. However, we can&apos;t know what setting the tester might
&gt; &gt; have.
&gt; 
&gt; Right, the test should be independent of the testing device config, which is
&gt; why forcing a known state via internals is appropriate.

It is independent of the testing device configuration.

&gt; 
&gt; &gt;  faking a system result doesn&apos;t test everything
&gt; 
&gt; It does; it tests all the WebKit code, which is what we&apos;re trying to test.

OK. I&apos;ll make another test then. I want to keep the existing one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239038</commentid>
    <comment_count>14</comment_count>
      <attachid>291303</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-10-11 15:14:40 -0700</bug_when>
    <thetext>Created attachment 291303
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239044</commentid>
    <comment_count>15</comment_count>
      <attachid>291303</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-10-11 15:26:27 -0700</bug_when>
    <thetext>Comment on attachment 291303
Patch

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

&gt; Source/WebCore/testing/InternalSettings.cpp:709
&gt; +InternalSettings::ForcedPrefersReducedMotionValue InternalSettings::forcedPrefersReducedMotionValue() const
&gt; +{
&gt; +    switch (settings()-&gt;forcedPrefersReducedMotionValue()) {
&gt; +    case Settings::ForcedPrefersReducedMotionValue::System:
&gt; +        return InternalSettings::ForcedPrefersReducedMotionValue::System;
&gt; +    case Settings::ForcedPrefersReducedMotionValue::On:
&gt; +        return InternalSettings::ForcedPrefersReducedMotionValue::On;
&gt; +    case Settings::ForcedPrefersReducedMotionValue::Off:
&gt; +        return InternalSettings::ForcedPrefersReducedMotionValue::Off;
&gt; +    }
&gt; +}
&gt; +
&gt; +void InternalSettings::setForcedPrefersReducedMotionValue(InternalSettings::ForcedPrefersReducedMotionValue value)
&gt; +{
&gt; +    switch (value) {
&gt; +    case InternalSettings::ForcedPrefersReducedMotionValue::System:
&gt; +        settings()-&gt;setForcedPrefersReducedMotionValue(Settings::ForcedPrefersReducedMotionValue::System);
&gt; +        break;
&gt; +    case InternalSettings::ForcedPrefersReducedMotionValue::On:
&gt; +        settings()-&gt;setForcedPrefersReducedMotionValue(Settings::ForcedPrefersReducedMotionValue::On);
&gt; +        break;
&gt; +    case InternalSettings::ForcedPrefersReducedMotionValue::Off:
&gt; +        settings()-&gt;setForcedPrefersReducedMotionValue(Settings::ForcedPrefersReducedMotionValue::Off);
&gt; +        break;
&gt; +    }
&gt; +}

Sad that you have to do manual mapping. But this would be slightly clearer with some C++ conversion operators.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239059</commentid>
    <comment_count>16</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-10-11 15:48:46 -0700</bug_when>
    <thetext>Committed r207173: &lt;http://trac.webkit.org/changeset/207173&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239124</commentid>
    <comment_count>17</comment_count>
      <attachid>291303</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-10-11 18:22:08 -0700</bug_when>
    <thetext>Comment on attachment 291303
Patch

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

&gt; Source/WebCore/testing/InternalSettings.cpp:693
&gt; +    }

The default case is not handled. This broke the Windows build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239131</commentid>
    <comment_count>18</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2016-10-11 18:56:27 -0700</bug_when>
    <thetext>I fix a build break on EFL port since r207173 - https://trac.webkit.org/changeset/207183</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239133</commentid>
    <comment_count>19</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-10-11 19:09:50 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Comment on attachment 291303 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=291303&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/testing/InternalSettings.cpp:693
&gt; &gt; +    }
&gt; 
&gt; The default case is not handled. This broke the Windows build.

c:\cygwin\home\buildbot\slave\win-release\build\source\webcore\testing\internalsettings.cpp(694): error C2220: warning treated as error - no &apos;object&apos; file generated [C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Source\WebCore\WebCoreTestSupport.vcxproj]
c:\cygwin\home\buildbot\slave\win-release\build\source\webcore\testing\internalsettings.cpp(694): warning C4715: &apos;WebCore::InternalSettings::forcedPrefersReducedMotionValue&apos;: not all control paths return a value [C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Source\WebCore\WebCoreTestSupport.vcxproj]

https://build.webkit.org/builders/Apple%20Win%20Release%20%28Build%29/builds/81093</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441792</commentid>
    <comment_count>20</comment_count>
    <who name="Hiroyuki Ikezoe">hikezoe.birchill</who>
    <bug_when>2018-07-12 21:49:08 -0700</bug_when>
    <thetext>I just start implementing this feature in Firefox.  It would be nice to have web-platform test for this.  Would you mind uplifting these tests in wpt?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475924</commentid>
    <comment_count>21</comment_count>
    <who name="Cameron">joesimon817</who>
    <bug_when>2018-11-07 01:44:43 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=291178&amp;action=review

Looks good -- aside from failing to build! :-)  r=me if you fix the minor build issue.

&gt; Source/WebCore/ChangeLog:7
&gt; +        Reviewed by NOBODY (OOPS!).


This fails to build on EFL/GTK (and maybe Windows) since they don&apos;t have an implementation of &quot;platformTheme()&quot;.

It might be enough to just #if/def around PLATFORM(COCOA)?

&gt; Source/WebCore/css/MediaQueryEvaluator.cpp:660
&gt; +{


Maybe: yahoo mail sign up https://www.just4dummies.com/yahoo-mail-sign-up

#if PLATFORM(COCOA)

&gt; Source/WebCore/css/MediaQueryEvaluator.cpp:674
&gt; +    }


#else
    return false;
#endif</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291178</attachid>
            <date>2016-10-10 16:14:31 -0700</date>
            <delta_ts>2016-10-11 12:44:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163250-20161011101107.patch</filename>
            <type>text/plain</type>
            <size>17452</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjFlZTFmYjMwNmFmMmVi
ZTZiNGNkMzIzYzBhOWVkMDA1NzhhNjc0OS4uYjQxNTcxY2JlMjM2OTdlNDIxYjBjMGFiMGZiYTIy
ZDM2NTczNDM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE2LTEwLTEwICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgcHJlZmVycy1y
ZWR1Y2VkLW1vdGlvbiBtZWRpYSBxdWVyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjUwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yODcwNDEy
OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBs
ZW1lbnQgdGhlIHByZWZlcnMtcmVkdWNlZC1tb3Rpb24gbWVkaWEgcXVlcnksIGFzCisgICAgICAg
IGRlc2NyaWJlZCBpbiBodHRwczovL2dpdGh1Yi5jb20vdzNjL2Nzc3dnLWRyYWZ0cy9pc3N1ZXMv
NDQyLgorCisgICAgICAgIFRlc3Q6IGZhc3QvbWVkaWEvbXEtcHJlZmVycy1yZWR1Y2VkLW1vdGlv
bi5odG1sCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9XZWJDb3JlVGVzdFN1cHBvcnQueGNj
b25maWc6IExpbmsgYWdhaW5zdCBBcHBLaXQgYW5kIFVJS2l0LgorCisgICAgICAgICogY3NzL0NT
U1ZhbHVlS2V5d29yZHMuaW46IE5ldyBrZXl3b3JkIGZvciAicmVkdWNlIi4KKworICAgICAgICAq
IGNzcy9NZWRpYUZlYXR1cmVOYW1lcy5oOiBBZGQgcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi4KKyAg
ICAgICAgKiBjc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpw
cmVmZXJzUmVkdWNlZE1vdGlvbkV2YWx1YXRlKToKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV4
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmZWF0dXJlV2l0aFZhbGlkSWRlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6aXNGZWF0dXJlVmFsaWRXaXRob3V0VmFsdWUpOgorCisgICAgICAgICogcGxh
dGZvcm0vVGhlbWUuaDogTmV3IEFQSSB0byBkZXRlY3QgdGhlIHN5c3RlbSBhY2Nlc3NpYmlsaXR5
IHNldHRpbmdzLgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OnVzZXJQcmVmZXJzUmVkdWNlZE1v
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1RoZW1lSU9TLmg6CisgICAgICAgICogcGxh
dGZvcm0vaW9zL1RoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVJT1M6OnVzZXJQ
cmVmZXJzUmVkdWNlZE1vdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmg6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
VGhlbWVNYWM6OnVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbik6CisKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5jcHA6IEV4cG9zZSB0aGUgc2FtZSBBUEkgdG8gaW50ZXJuYWxzLCBzbyB0aGF0
CisgICAgICAgIGEgdGVzdCBjYW4gZXhhbWluZSB0aGUgdmFsdWUgdG9vLgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjp1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24pOgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxz
Ojp1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24pOgorCiAyMDE2LTEwLTEwICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIG1lZGlhIHNvdXJjZSBmcm9tIGxlZ2Fj
eSB0byBuZXcgRE9NIGV4Y2VwdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvbmZp
Z3VyYXRpb25zL1dlYkNvcmVUZXN0U3VwcG9ydC54Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3JlL0Nv
bmZpZ3VyYXRpb25zL1dlYkNvcmVUZXN0U3VwcG9ydC54Y2NvbmZpZwppbmRleCBjOWRhNjU5YzY1
ODU3YzNmZGNkYjc0MjRhY2M2M2QyMWQyNzY0NTc1Li45OTAzNmZkZjM1NGIyYjkwN2Y1MTJjOGJj
NzkxZjMxYjE4NWI4Y2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9u
cy9XZWJDb3JlVGVzdFN1cHBvcnQueGNjb25maWcKKysrIGIvU291cmNlL1dlYkNvcmUvQ29uZmln
dXJhdGlvbnMvV2ViQ29yZVRlc3RTdXBwb3J0LnhjY29uZmlnCkBAIC00OSw2ICs0OSw3IEBAIEVY
RUNVVEFCTEVfUFJFRklYID0gbGliOwogRVhQT1JURURfU1lNQk9MU19GSUxFID0gOwogR0NDX1NZ
TUJPTFNfUFJJVkFURV9FWFRFUk4gPSBZRVM7CiBPVEhFUl9MREZMQUdTID0gJChBU0FOX09USEVS
X0xERkxBR1MpOwotT1RIRVJfTERGTEFHU1tzZGs9aXBob25lb3MqXSA9ICQoQVNBTl9PVEhFUl9M
REZMQUdTKSAtbEFjY2Vzc2liaWxpdHkgLUYkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9QaG9ueVdlYktpdExlZ2FjeTsKLU9USEVSX0xERkxBR1Nbc2RrPWlwaG9u
ZXNpbXVsYXRvcipdID0gJChBU0FOX09USEVSX0xERkxBR1MpIC1sQWNjZXNzaWJpbGl0eSAtRiQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL1Bob255V2ViS2l0TGVn
YWN5OworT1RIRVJfTERGTEFHU1tzZGs9bWFjb3MqXSA9ICQoQVNBTl9PVEhFUl9MREZMQUdTKSAt
ZnJhbWV3b3JrIEFwcEtpdDsKK09USEVSX0xERkxBR1Nbc2RrPWlwaG9uZW9zKl0gPSAkKEFTQU5f
T1RIRVJfTERGTEFHUykgLWZyYW1ld29yayBVSUtpdCAtbEFjY2Vzc2liaWxpdHkgLUYkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9QaG9ueVdlYktpdExlZ2FjeTsK
K09USEVSX0xERkxBR1Nbc2RrPWlwaG9uZXNpbXVsYXRvcipdID0gJChBU0FOX09USEVSX0xERkxB
R1MpIC1mcmFtZXdvcmsgVUlLaXQgLWxBY2Nlc3NpYmlsaXR5IC1GJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvUGhvbnlXZWJLaXRMZWdhY3k7CiBTRUNUX09SREVS
X0ZMQUdTID0gOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29y
ZHMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgppbmRleCA0NTFm
YTkwNjc2NWJlMTJmMWQyNjhjMGFmYmU3NTdiMGE5MGY5YjlhLi5lNjFmZDk3MTc1ZmFkYTc2NDFl
NDg5YTU0Njk5ZTI4MzUxNmZiMzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWVLZXl3b3Jkcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jk
cy5pbgpAQCAtMTMwNCw2ICsxMzA0LDkgQEAgbGFzdAogcDMKIHJlYzIwMjAKIAorLy8gcHJlZmVy
cy1yZWR1Y2VkLW1vdGlvbgorcmVkdWNlCisKICNpZiBkZWZpbmVkKEVOQUJMRV9DU1NfR1JJRF9M
QVlPVVQpICYmIEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQKIC8vIGF1dG8tcmVwZWF0CiBhdXRvLWZp
bGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUZlYXR1cmVOYW1lcy5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmgKaW5kZXggNjI5NzFjMDJmZjJj
Y2NkZmEzNGYyNTU2MDdlYzk0OGQ1NDAxOTBkOS4uNjY0ZDM0ZjFiZDMzMDVlMDMwZThlYWVkOGI2
ZmI3ZGQxMzY3ODdmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVy
ZU5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmgKQEAg
LTY5LDYgKzY5LDcgQEAKICAgICBtYWNybyhtb25vY2hyb21lLCAibW9ub2Nocm9tZSIpIFwKICAg
ICBtYWNybyhvcmllbnRhdGlvbiwgIm9yaWVudGF0aW9uIikgXAogICAgIG1hY3JvKHBvaW50ZXIs
ICJwb2ludGVyIikgXAorICAgIG1hY3JvKHByZWZlcnNSZWR1Y2VkTW90aW9uLCAicHJlZmVycy1y
ZWR1Y2VkLW1vdGlvbiIpIFwKICAgICBtYWNybyhyZXNvbHV0aW9uLCAicmVzb2x1dGlvbiIpIFwK
ICAgICBtYWNybyh0cmFuc2Zvcm0yZCwgIi13ZWJraXQtdHJhbnNmb3JtLTJkIikgXAogICAgIG1h
Y3JvKHRyYW5zZm9ybTNkLCAiLXdlYmtpdC10cmFuc2Zvcm0tM2QiKSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKaW5kZXggNTg0YzhlY2U0YTY3ODI1MzU0NTMx
Y2Y5M2Y1NjA2MjM2YWU3MjQ3ZS4uNGYxZTc1YjU4MzA4YzYyNTE0ZmQ5MDU4ZjJkM2VjNzU4ZGI4
NDg4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcApAQCAt
NDksNiArNDksNyBAQAogI2luY2x1ZGUgIlNjcmVlbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgorI2luY2x1ZGUgIlRoZW1lLmgiCiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KIAogI2lmIEVOQUJMRSgzRF9UUkFOU0ZPUk1TKQpAQCAtNjU1LDYg
KzY1NiwyNCBAQCBzdGF0aWMgYm9vbCBhbnlQb2ludGVyRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVl
LCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJgogICAgIHJldHVybiBwb2ludGVyRXZh
bHVhdGUodmFsdWUsIGNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEsIGZyYW1lLCBwcmVmaXgpOwog
fQogCitzdGF0aWMgYm9vbCBwcmVmZXJzUmVkdWNlZE1vdGlvbkV2YWx1YXRlKENTU1ZhbHVlKiB2
YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsIEZyYW1lJiwgTWVkaWFGZWF0
dXJlUHJlZml4KQoreworICAgIGJvb2wgdXNlclByZWZlcnNSZWR1Y2VkTW90aW9uID0gcGxhdGZv
cm1UaGVtZSgpLT51c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24oKTsKKyAgICBpZiAoIXZhbHVlKQor
ICAgICAgICByZXR1cm4gdXNlclByZWZlcnNSZWR1Y2VkTW90aW9uOworCisgICAgc3dpdGNoIChk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS5nZXRWYWx1ZUlEKCkpIHsKKyAgICBj
YXNlIENTU1ZhbHVlTm9uZToKKyAgICBjYXNlIENTU1ZhbHVlUmVkdWNlOgorICAgICAgICByZXR1
cm4gdXNlclByZWZlcnNSZWR1Y2VkTW90aW9uOworICAgIGNhc2UgQ1NTVmFsdWVEZWZhdWx0Ogor
ICAgICAgICByZXR1cm4gIXVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbjsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KK30KKwogLy8gVXNlIHRoaXMgZnVuY3Rpb24gaW5zdGVhZCBvZiBjYWxsaW5nIGFkZCBkaXJl
Y3RseSB0byBhdm9pZCBpbmxpbmluZy4KIHN0YXRpYyB2b2lkIGFkZChNZWRpYVF1ZXJ5RnVuY3Rp
b25NYXAmIG1hcCwgQXRvbWljU3RyaW5nSW1wbCoga2V5LCBNZWRpYVF1ZXJ5RnVuY3Rpb24gdmFs
dWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5jcHAKaW5kZXggMmZkMThiZWMzZWZk
NDY3NjQ1MjE3Y2RlMDQzOTBmZWE5ODQzNjUxNy4uODBmMmY3N2EwMTFiNmUwNWY0ODg4N2U5YWE2
NTkwYzgwY2U1NGI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlF
eHAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmNwcApAQCAtNTAs
OSArNTAsMTAgQEAgc3RhdGljIGlubGluZSBib29sIGZlYXR1cmVXaXRoVmFsaWRJZGVudChjb25z
dCBBdG9taWNTdHJpbmcmIG1lZGlhRmVhdHVyZSkKICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVk
aWFGZWF0dXJlTmFtZXM6OmFueVBvaW50ZXIKICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFG
ZWF0dXJlTmFtZXM6OmhvdmVyCiAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5h
bWVzOjppbnZlcnRlZENvbG9ycwotICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVO
YW1lczo6cG9pbnRlcjsKKyAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6
OnBvaW50ZXIKKyAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnByZWZl
cnNSZWR1Y2VkTW90aW9uOwogfQotICAgIAorCiBzdGF0aWMgaW5saW5lIGJvb2wgZmVhdHVyZVdp
dGhWYWxpZERlbnNpdHkoY29uc3QgU3RyaW5nJiBtZWRpYUZlYXR1cmUsIGNvbnN0IENTU1BhcnNl
clRva2VuJiB0b2tlbikKIHsKICAgICBpZiAoKHRva2VuLnVuaXRUeXBlKCkgIT0gQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX0RQUFggJiYgdG9rZW4udW5pdFR5cGUoKSAhPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfRFBJICYmIHRva2VuLnVuaXRUeXBlKCkgIT0g
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX0RQQ00pIHx8IHRva2VuLm51bWVyaWNW
YWx1ZSgpIDw9IDApCkBAIC0yMjgsNiArMjI5LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzRmVh
dHVyZVZhbGlkV2l0aG91dFZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbWVkaWFGZWF0dXJlKQog
ICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnZpZXdNb2RlCiAj
ZW5kaWYKICAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpwb2lu
dGVyCisgICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6cHJlZmVy
c1JlZHVjZWRNb3Rpb24KICAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5h
bWVzOjpkZXZpY2VQaXhlbFJhdGlvCiAgICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZl
YXR1cmVOYW1lczo6cmVzb2x1dGlvbgogICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFG
ZWF0dXJlTmFtZXM6OnZpZGVvUGxheWFibGVJbmxpbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9UaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaApp
bmRleCA5NjYzNzczNzdhZWQ5YTUzZmRiN2NlOGRlODE3ZWRiOWE4YjExYjkyLi4zNTg2M2JjODIw
MTRjMzk3N2MzYzY5NGZhNDI3NmMwNTQxMWVmMWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmgK
QEAgLTExMCw2ICsxMTAsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd05hbWVk
SW1hZ2UoY29uc3QgU3RyaW5nJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikg
Y29uc3Q7CiAKKyAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNSZWR1Y2VkTW90aW9uKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbmNl
LCBmcm9tIFJlbmRlclRoZW1lOjphZGp1c3REZWZhdWx0U3R5bGVTaGVldCgpLCB0byBsZXQgZWFj
aCBwbGF0Zm9ybSBhZGp1c3QKICAgICAvLyB0aGUgZGVmYXVsdCBDU1MgcnVsZXMgaW4gaHRtbC5j
c3MuCiAgICAgc3RhdGljIFN0cmluZyBkZWZhdWx0U3R5bGVTaGVldCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvVGhlbWVJT1MuaAppbmRleCA4ZDgwOWYyM2M1ZDBjZjczNDA2NDg3M2IyOWM0
ODY4NjcwNTQ3M2E4Li4zNzdiODIyNmU0YWY4MTNkZjllZjUwZTYyMTcwNDI1OWQ0OGE5ODI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MuaApAQCAtMzQsNiArMzQsOCBAQCBj
bGFzcyBUaGVtZUlPUyA6IHB1YmxpYyBUaGVtZUNvY29hIHsKIHB1YmxpYzoKICAgICBUaGVtZUlP
UygpIHsgfQogICAgIHZpcnR1YWwgflRoZW1lSU9TKCkgeyB9CisKKyAgICBib29sIHVzZXJQcmVm
ZXJzUmVkdWNlZE1vdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tCmluZGV4IGI0NmZj
M2FiMmQ2YzFiMjJlYjZmNWYyZTdkNzAwNTVhMjE1MzI5MGMuLmIxYjBiYzUwMjljMWIwYzA3NTc0
ZDdiYmU1ZDExNGNiNzQzOWE0YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9UaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJ
T1MubW0KQEAgLTI4LDkgKzI4LDEzIEBACiAKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgog
I2ltcG9ydCAiU2Nyb2xsVmlldy5oIgorI2ltcG9ydCAiU29mdExpbmtpbmcuaCIKICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAK
K1NPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCitTT0ZUX0xJTksoVUlLaXQsIFVJQWNjZXNzaWJp
bGl0eUlzUmVkdWNlTW90aW9uRW5hYmxlZCwgQk9PTCwgKHZvaWQpLCAoKSkKKwogdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDMsNCArNDcsOSBAQCBUaGVt
ZSogcGxhdGZvcm1UaGVtZSgpCiAgICAgcmV0dXJuICZ0aGVtZUlPUy5nZXQoKTsKIH0KIAorYm9v
bCBUaGVtZUlPUzo6dXNlclByZWZlcnNSZWR1Y2VkTW90aW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gVUlBY2Nlc3NpYmlsaXR5SXNSZWR1Y2VNb3Rpb25FbmFibGVkKCk7Cit9CisKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgKaW5kZXggM2QwZTE4MzhhZjM0N2FiNWEyMjQ2
ZjE0MGM0ODIzNTc3NTQ1OWEyMS4uZTRjNzI3MTc5YmU4MDc0MmNmNWViYzMzOTk4MmRkYzI4YjJl
N2Q2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgKQEAgLTU1LDYgKzU1
LDggQEAgcHVibGljOgogICAgIHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMm
LCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCB6b29tRmFjdG9yLCBT
Y3JvbGxWaWV3KiwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGZsb2F0IHBhZ2VTY2FsZUZhY3Rv
cikgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbmZsYXRlQ29udHJvbFBhaW50UmVjdChDb250cm9sUGFy
dCwgY29uc3QgQ29udHJvbFN0YXRlcyYsIEZsb2F0UmVjdCYsIGZsb2F0IHpvb21GYWN0b3IpIGNv
bnN0IG92ZXJyaWRlOwogCisgICAgYm9vbCB1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24oKSBjb25z
dCBvdmVycmlkZTsKKwogICAgIC8vIEZJWE1FOiBPbmNlIFJlbmRlclRoZW1lTWFjIGlzIGNvbnZl
cnRlZCBvdmVyIHRvIHVzZSBUaGVtZSB0aGVuIHRoaXMgY2FuIGJlIGludGVybmFsIHRvIFRoZW1l
TWFjLgogICAgIHN0YXRpYyBOU1ZpZXcqIGVuc3VyZWRWaWV3KFNjcm9sbFZpZXcqLCBjb25zdCBD
b250cm9sU3RhdGVzJiwgYm9vbCB1c2VVbnBhcmVudGVkVmlldyA9IGZhbHNlKTsKICAgICBzdGF0
aWMgdm9pZCBzZXRGb2N1c1JpbmdDbGlwUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQppbmRleCAxNTg4ZWFkZTE2MzY3NDQ4ODMzOTA0
NDhjYjQ4ZTE1NjQ3M2U1YmZlLi5jMTZiOWU2ZTNkMDM5NzJkOGRhNzQ5Yjk5ZThmNTVhNzhhOTIx
YzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCkBAIC04NzAsNCAr
ODcwLDEzIEBAIHZvaWQgVGhlbWVNYWM6OnBhaW50KENvbnRyb2xQYXJ0IHBhcnQsIENvbnRyb2xT
dGF0ZXMmIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0JiBjCiAgICAgfQogfQogCitib29sIFRoZW1l
TWFjOjp1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24oKSBjb25zdAoreworI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwCisgICAgcmV0dXJuIFtbTlNXb3Jrc3BhY2Ug
c2hhcmVkV29ya3NwYWNlXSBhY2Nlc3NpYmlsaXR5RGlzcGxheVNob3VsZFJlZHVjZU1vdGlvbl07
CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKaW5kZXggN2JiNTEyNzQwZTZhYmEyMjI3Mzk4YmNmYzUxOTJiYzcz
M2U3N2ZmOC4uZmYwYWIyMjIwOWJiY2ZjMDBjYzNhZGY3NjY4ZDcxMGZhMTk1MjVkYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMzM3OCw0ICszMzc4LDExIEBAIHZvaWQg
SW50ZXJuYWxzOjpzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKFVzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb24gdXNlCiAgICAgcGFnZS0+c2V0VXNlckludGVyZmFjZUxheW91dERpcmVj
dGlvbih1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uID09IFVzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb246OkxUUiA/IFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxU
UiA6IFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OlJUTCk7CiB9CiAKKyNp
ZiAhUExBVEZPUk0oQ09DT0EpCitib29sIEludGVybmFsczo6dXNlclByZWZlcnNSZWR1Y2VkTW90
aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggODViZjMxODlh
MzFiM2Y2OTRhZGY2M2ZlMjZiNmE0MjU5ODk5YzM1Yi4uMzVhOGFiNzAwNTQyNjQyZjg0NDNkNWMz
MDljNTg2MWU2NzNhN2ZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC00OTUs
NiArNDk1LDggQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgVXNlckludGVyZmFjZUxheW91dERp
cmVjdGlvbiB7IExUUiwgUlRMIH07CiAgICAgdm9pZCBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uKFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pOwogCisgICAgYm9vbCB1c2VyUHJl
ZmVyc1JlZHVjZWRNb3Rpb24oKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbnRl
cm5hbHMoRG9jdW1lbnQmKTsKICAgICBEb2N1bWVudCogY29udGV4dERvY3VtZW50KCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggMjE3OWY2OWJjMTk4NjRmNTc3
MTk3NTEwMGM4MzU1ODE3MzBlYTZiZi4uMzcxYjVlMDJlY2IxOTIxOWEyZmRkOTMxNWM1ZTEwYmQx
NjI1YWFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNDY2LDQgKzQ2
Niw2IEBAIGVudW0gVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB7CiAgICAgR0NPYnNlcnZh
dGlvbiBvYnNlcnZlR0MoYW55IG9ic2VydmVkKTsKIAogICAgIHZvaWQgc2V0VXNlckludGVyZmFj
ZUxheW91dERpcmVjdGlvbihVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIHVzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb24pOworCisgICAgYm9vbGVhbiB1c2VyUHJlZmVyc1JlZHVjZWRNb3Rp
b24oKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1tCmluZGV4IDFiOTkyMWMxMTRk
YzE3MDRmMjk0MjJiOTJkOTAzYzAyMDNmNDkzZTEuLjQxOGJjZjc4YTNkNzM4MWJiZGI3NzFiZjVj
Nzc3MzUzNjA4NmFjNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1tCkBAIC0zMiw2
ICszMiwxMCBAQAogI2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgi
CiAKKyNpZiBQTEFURk9STShJT1MpCisjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgorI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIEludGVybmFsczo6dXNlclZpc2libGVTdHJp
bmcoY29uc3QgRE9NVVJMJiB1cmwpCkBAIC0zOSw0ICs0MywxNyBAQCBTdHJpbmcgSW50ZXJuYWxz
Ojp1c2VyVmlzaWJsZVN0cmluZyhjb25zdCBET01VUkwmIHVybCkKICAgICByZXR1cm4gY29udGV4
dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLmNsaWVudCgpLT51c2VyVmlzaWJsZVN0cmlu
Zyh1cmwuaHJlZigpKTsKIH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorYm9vbCBJbnRlcm5hbHM6
OnVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbigpIGNvbnN0Cit7CisjaWYgUExBVEZPUk0oSU9TKQor
ICAgIHJldHVybiBVSUFjY2Vzc2liaWxpdHlJc1JlZHVjZU1vdGlvbkVuYWJsZWQoKTsKKyNlbGlm
IFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEy
MDAKKyAgICByZXR1cm4gW1tOU1dvcmtzcGFjZSBzaGFyZWRXb3Jrc3BhY2VdIGFjY2Vzc2liaWxp
dHlEaXNwbGF5U2hvdWxkUmVkdWNlTW90aW9uXTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOwor
I2VuZGlmCit9CisjZW5kaWYKKwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDcxMjliZGMwZWZkOWQ3OTA4NjYzNjcwYTU1
ODQ5NDZiNTJkMjJhMWMuLjEzOTBhMDRhMTRjMDM4NDg5NDc3NDljYjlkN2QxNzQ4OWNlMmVhODYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNi0xMC0xMCAgRGVhbiBKYWNrc29uICA8ZGlub0Bh
cHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHByZWZlcnMtcmVkdWNlZC1tb3Rpb24gbWVk
aWEgcXVlcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2MzI1MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjg3MDQxMjk+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyB0ZXN0IGZvciB0aGUgcHJl
ZmVycy1yZWR1Y2VkLW1vdGlvbiBxdWVyeSBpcworICAgICAgICB1c2luZyB0aGUgc2FtZSBpbXBs
ZW1lbnRhdGlvbiBhcyB0aGUgZmVhdHVyZSBpdHNlbGYsIHNvCisgICAgICAgIGlzbid0IDEwMCUg
Zm9vbHByb29mLiBJdCBkb2VzIGhvd2V2ZXIgZXhlcmNpc2UgdGhlIE1RIGV2YWx1YXRpb24KKyAg
ICAgICAgYW5kIHRoZSB3aW5kb3cubWF0Y2hNZWRpYSBwYXRocy4KKworICAgICAgICAqIGZhc3Qv
bWVkaWEvbXEtcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L21lZGlhL21xLXByZWZlcnMtcmVkdWNlZC1tb3Rpb24uaHRtbDogQWRkZWQu
CisKIDIwMTYtMTAtMTAgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAg
ICAgICAgTWFya2luZyBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vYWJvcnQtcmVxdWVzdHMtY2Fu
Y2VsbGVkKiB0ZXN0cyBhcyBmbGFreSBvbiBtYWMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L21lZGlhL21xLXByZWZlcnMtcmVkdWNlZC1tb3Rpb24tZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi1leHBlY3RlZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmVjOTZiMTYxOTg4NjliYzcyN2FmNTJjN2JiZWEzYzA5MWFmMGEzZGUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXByZWZlcnMtcmVkdWNl
ZC1tb3Rpb24tZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDM0IEBACis8aHRtbD4KKzxoZWFkPgor
PHRpdGxlPkNTUzQgbWVkaWEgcXVlcnkgdGVzdDogcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi48L3Rp
dGxlPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyNhIHsgY29sb3I6IGJsYWNrOyB9CisjYiB7
IGNvbG9yOiBibGFjazsgfQorI2MgeyBjb2xvcjogYmxhY2s7IH0KKyNkIHsgY29sb3I6IGJsYWNr
OyB9CisjZSB7IGNvbG9yOiBibGFjazsgfQorPC9zdHlsZT4KKzxzY3JpcHQ+Cit3aW5kb3cuYWRk
RXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uICgpIHsKKworICAgIGlmICghd2luZG93Lmlu
dGVybmFscykgeworICAgICAgICBbImEiLCAiYiIsICJjIiwgImQiLCAiZSJdLmZvckVhY2goaWQg
PT4geyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkudGV4dENvbnRlbnQgPSAiVGhpcyBleHBl
Y3RlZCByZXN1bHQgcmVxdWlyZXMgRFJUL1dLVFIuIjsgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAod2luZG93LmludGVybmFscy51c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24o
KSkKKyAgICAgICAgWyJhIiwgImIiLCAiYyIsICJkIl0uZm9yRWFjaChpZCA9PiB7IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKGlkKS5zdHlsZS5jb2xvciA9ICJncmVlbiI7IH0pOworICAgIGVsc2UK
KyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImUiKS5zdHlsZS5jb2xvciA9ICJncmVl
biI7CisKK30sIGZhbHNlKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxwIGlkPSJh
Ij5UaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHRoZSB1c2VyIHJlcXVlc3RlZCByZWR1Y2Vk
IG1vdGlvbi4gQmxhY2sgb3RoZXJ3aXNlLjwvcD4KKyAgPHAgaWQ9ImIiPlRoaXMgdGV4dCBzaG91
bGQgYmUgZ3JlZW4gaWYgdGhlIHVzZXIgcmVxdWVzdGVkIHJlZHVjZWQgbW90aW9uLiBCbGFjayBv
dGhlcndpc2UuPC9wPgorICA8cCBpZD0iYyI+VGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB0
aGUgdXNlciByZXF1ZXN0ZWQgcmVkdWNlZCBtb3Rpb24uIEJsYWNrIG90aGVyd2lzZS48L3A+Cisg
IDxwIGlkPSJkIj5UaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHRoZSB1c2VyIHJlcXVlc3Rl
ZCByZWR1Y2VkIG1vdGlvbi4gQmxhY2sgb3RoZXJ3aXNlLjwvcD4KKyAgPHAgaWQ9ImUiPlRoaXMg
dGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdGhlIHVzZXIgaGFzIG5vdCByZXF1ZXN0ZWQgcmVkdWNl
ZCBtb3Rpb24uIEJsYWNrIG90aGVyd2lzZS48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXByZWZlcnMtcmVkdWNlZC1tb3Rpb24uaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjNhYmMyMGMxMTMyZDFkM2UyOTVkNjc0ZDUxMzk1ODU5NWU2YzZhZWYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXByZWZlcnMtcmVkdWNl
ZC1tb3Rpb24uaHRtbApAQCAtMCwwICsxLDQxIEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNT
UzQgbWVkaWEgcXVlcnkgdGVzdDogcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi48L3RpdGxlPgorPHN0
eWxlIHR5cGU9InRleHQvY3NzIj4KKyNhIHsgY29sb3I6IGJsYWNrOyB9CisjYiB7IGNvbG9yOiBi
bGFjazsgfQorI2MgeyBjb2xvcjogYmxhY2s7IH0KKyNkIHsgY29sb3I6IGJsYWNrOyB9CisjZSB7
IGNvbG9yOiBibGFjazsgfQorCitAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb24pIHsKKyNh
IHsgY29sb3I6IGdyZWVuOyB9Cit9CisKK0BtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjog
bm9uZSkgeworI2IgeyBjb2xvcjogZ3JlZW47IH0KK30KKworQG1lZGlhIChwcmVmZXJzLXJlZHVj
ZWQtbW90aW9uOiByZWR1Y2UpIHsKKyNjIHsgY29sb3I6IGdyZWVuOyB9Cit9CisKK0BtZWRpYSAo
cHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogZGVmYXVsdCkgeworI2UgeyBjb2xvcjogZ3JlZW47IH0K
K30KKzwvc3R5bGU+Cis8c2NyaXB0Pgord2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBm
dW5jdGlvbiAoKSB7CisgICAgaWYgKHdpbmRvdy5tYXRjaE1lZGlhKCIocHJlZmVycy1yZWR1Y2Vk
LW1vdGlvbikiKS5tYXRjaGVzKQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZCIp
LnN0eWxlLmNvbG9yID0gImdyZWVuIjsKK30sIGZhbHNlKTsKKzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+CisgIDxwIGlkPSJhIj5UaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHRoZSB1c2Vy
IHJlcXVlc3RlZCByZWR1Y2VkIG1vdGlvbi4gQmxhY2sgb3RoZXJ3aXNlLjwvcD4KKyAgPHAgaWQ9
ImIiPlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdGhlIHVzZXIgcmVxdWVzdGVkIHJlZHVj
ZWQgbW90aW9uLiBCbGFjayBvdGhlcndpc2UuPC9wPgorICA8cCBpZD0iYyI+VGhpcyB0ZXh0IHNo
b3VsZCBiZSBncmVlbiBpZiB0aGUgdXNlciByZXF1ZXN0ZWQgcmVkdWNlZCBtb3Rpb24uIEJsYWNr
IG90aGVyd2lzZS48L3A+CisgIDxwIGlkPSJkIj5UaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlm
IHRoZSB1c2VyIHJlcXVlc3RlZCByZWR1Y2VkIG1vdGlvbi4gQmxhY2sgb3RoZXJ3aXNlLjwvcD4K
KyAgPHAgaWQ9ImUiPlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdGhlIHVzZXIgaGFzIG5v
dCByZXF1ZXN0ZWQgcmVkdWNlZCBtb3Rpb24uIEJsYWNrIG90aGVyd2lzZS48L3A+Cis8L2JvZHk+
Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291288</attachid>
            <date>2016-10-11 12:44:49 -0700</date>
            <delta_ts>2016-10-11 15:14:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163250-20161012064124.patch</filename>
            <type>text/plain</type>
            <size>17038</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjFlZTFmYjMwNmFmMmVi
ZTZiNGNkMzIzYzBhOWVkMDA1NzhhNjc0OS4uYjQxNTcxY2JlMjM2OTdlNDIxYjBjMGFiMGZiYTIy
ZDM2NTczNDM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE2LTEwLTEwICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgcHJlZmVycy1y
ZWR1Y2VkLW1vdGlvbiBtZWRpYSBxdWVyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjUwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yODcwNDEy
OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBs
ZW1lbnQgdGhlIHByZWZlcnMtcmVkdWNlZC1tb3Rpb24gbWVkaWEgcXVlcnksIGFzCisgICAgICAg
IGRlc2NyaWJlZCBpbiBodHRwczovL2dpdGh1Yi5jb20vdzNjL2Nzc3dnLWRyYWZ0cy9pc3N1ZXMv
NDQyLgorCisgICAgICAgIFRlc3Q6IGZhc3QvbWVkaWEvbXEtcHJlZmVycy1yZWR1Y2VkLW1vdGlv
bi5odG1sCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9XZWJDb3JlVGVzdFN1cHBvcnQueGNj
b25maWc6IExpbmsgYWdhaW5zdCBBcHBLaXQgYW5kIFVJS2l0LgorCisgICAgICAgICogY3NzL0NT
U1ZhbHVlS2V5d29yZHMuaW46IE5ldyBrZXl3b3JkIGZvciAicmVkdWNlIi4KKworICAgICAgICAq
IGNzcy9NZWRpYUZlYXR1cmVOYW1lcy5oOiBBZGQgcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi4KKyAg
ICAgICAgKiBjc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpw
cmVmZXJzUmVkdWNlZE1vdGlvbkV2YWx1YXRlKToKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV4
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmZWF0dXJlV2l0aFZhbGlkSWRlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6aXNGZWF0dXJlVmFsaWRXaXRob3V0VmFsdWUpOgorCisgICAgICAgICogcGxh
dGZvcm0vVGhlbWUuaDogTmV3IEFQSSB0byBkZXRlY3QgdGhlIHN5c3RlbSBhY2Nlc3NpYmlsaXR5
IHNldHRpbmdzLgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OnVzZXJQcmVmZXJzUmVkdWNlZE1v
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1RoZW1lSU9TLmg6CisgICAgICAgICogcGxh
dGZvcm0vaW9zL1RoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVJT1M6OnVzZXJQ
cmVmZXJzUmVkdWNlZE1vdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmg6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
VGhlbWVNYWM6OnVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbik6CisKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5jcHA6IEV4cG9zZSB0aGUgc2FtZSBBUEkgdG8gaW50ZXJuYWxzLCBzbyB0aGF0
CisgICAgICAgIGEgdGVzdCBjYW4gZXhhbWluZSB0aGUgdmFsdWUgdG9vLgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjp1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24pOgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxz
Ojp1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24pOgorCiAyMDE2LTEwLTEwICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIG1lZGlhIHNvdXJjZSBmcm9tIGxlZ2Fj
eSB0byBuZXcgRE9NIGV4Y2VwdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvbmZp
Z3VyYXRpb25zL1dlYkNvcmVUZXN0U3VwcG9ydC54Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3JlL0Nv
bmZpZ3VyYXRpb25zL1dlYkNvcmVUZXN0U3VwcG9ydC54Y2NvbmZpZwppbmRleCBjOWRhNjU5YzY1
ODU3YzNmZGNkYjc0MjRhY2M2M2QyMWQyNzY0NTc1Li45OTAzNmZkZjM1NGIyYjkwN2Y1MTJjOGJj
NzkxZjMxYjE4NWI4Y2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9u
cy9XZWJDb3JlVGVzdFN1cHBvcnQueGNjb25maWcKKysrIGIvU291cmNlL1dlYkNvcmUvQ29uZmln
dXJhdGlvbnMvV2ViQ29yZVRlc3RTdXBwb3J0LnhjY29uZmlnCkBAIC00OSw2ICs0OSw3IEBAIEVY
RUNVVEFCTEVfUFJFRklYID0gbGliOwogRVhQT1JURURfU1lNQk9MU19GSUxFID0gOwogR0NDX1NZ
TUJPTFNfUFJJVkFURV9FWFRFUk4gPSBZRVM7CiBPVEhFUl9MREZMQUdTID0gJChBU0FOX09USEVS
X0xERkxBR1MpOwotT1RIRVJfTERGTEFHU1tzZGs9aXBob25lb3MqXSA9ICQoQVNBTl9PVEhFUl9M
REZMQUdTKSAtbEFjY2Vzc2liaWxpdHkgLUYkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9QaG9ueVdlYktpdExlZ2FjeTsKLU9USEVSX0xERkxBR1Nbc2RrPWlwaG9u
ZXNpbXVsYXRvcipdID0gJChBU0FOX09USEVSX0xERkxBR1MpIC1sQWNjZXNzaWJpbGl0eSAtRiQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL1Bob255V2ViS2l0TGVn
YWN5OworT1RIRVJfTERGTEFHU1tzZGs9bWFjb3MqXSA9ICQoQVNBTl9PVEhFUl9MREZMQUdTKSAt
ZnJhbWV3b3JrIEFwcEtpdDsKK09USEVSX0xERkxBR1Nbc2RrPWlwaG9uZW9zKl0gPSAkKEFTQU5f
T1RIRVJfTERGTEFHUykgLWZyYW1ld29yayBVSUtpdCAtbEFjY2Vzc2liaWxpdHkgLUYkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9QaG9ueVdlYktpdExlZ2FjeTsK
K09USEVSX0xERkxBR1Nbc2RrPWlwaG9uZXNpbXVsYXRvcipdID0gJChBU0FOX09USEVSX0xERkxB
R1MpIC1mcmFtZXdvcmsgVUlLaXQgLWxBY2Nlc3NpYmlsaXR5IC1GJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvUGhvbnlXZWJLaXRMZWdhY3k7CiBTRUNUX09SREVS
X0ZMQUdTID0gOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29y
ZHMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgppbmRleCA0NTFm
YTkwNjc2NWJlMTJmMWQyNjhjMGFmYmU3NTdiMGE5MGY5YjlhLi5lNjFmZDk3MTc1ZmFkYTc2NDFl
NDg5YTU0Njk5ZTI4MzUxNmZiMzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWVLZXl3b3Jkcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jk
cy5pbgpAQCAtMTMwNCw2ICsxMzA0LDkgQEAgbGFzdAogcDMKIHJlYzIwMjAKIAorLy8gcHJlZmVy
cy1yZWR1Y2VkLW1vdGlvbgorcmVkdWNlCisKICNpZiBkZWZpbmVkKEVOQUJMRV9DU1NfR1JJRF9M
QVlPVVQpICYmIEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQKIC8vIGF1dG8tcmVwZWF0CiBhdXRvLWZp
bGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUZlYXR1cmVOYW1lcy5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmgKaW5kZXggNjI5NzFjMDJmZjJj
Y2NkZmEzNGYyNTU2MDdlYzk0OGQ1NDAxOTBkOS4uNjY0ZDM0ZjFiZDMzMDVlMDMwZThlYWVkOGI2
ZmI3ZGQxMzY3ODdmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVy
ZU5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmgKQEAg
LTY5LDYgKzY5LDcgQEAKICAgICBtYWNybyhtb25vY2hyb21lLCAibW9ub2Nocm9tZSIpIFwKICAg
ICBtYWNybyhvcmllbnRhdGlvbiwgIm9yaWVudGF0aW9uIikgXAogICAgIG1hY3JvKHBvaW50ZXIs
ICJwb2ludGVyIikgXAorICAgIG1hY3JvKHByZWZlcnNSZWR1Y2VkTW90aW9uLCAicHJlZmVycy1y
ZWR1Y2VkLW1vdGlvbiIpIFwKICAgICBtYWNybyhyZXNvbHV0aW9uLCAicmVzb2x1dGlvbiIpIFwK
ICAgICBtYWNybyh0cmFuc2Zvcm0yZCwgIi13ZWJraXQtdHJhbnNmb3JtLTJkIikgXAogICAgIG1h
Y3JvKHRyYW5zZm9ybTNkLCAiLXdlYmtpdC10cmFuc2Zvcm0tM2QiKSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKaW5kZXggNTg0YzhlY2U0YTY3ODI1MzU0NTMx
Y2Y5M2Y1NjA2MjM2YWU3MjQ3ZS4uYmJjYTRlMjY4ZWEyNzQ1NDJiZDY2ZjJhNTY5ZTZhMzYxODI4
YWY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcApAQCAt
NDksNiArNDksNyBAQAogI2luY2x1ZGUgIlNjcmVlbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgorI2luY2x1ZGUgIlRoZW1lLmgiCiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KIAogI2lmIEVOQUJMRSgzRF9UUkFOU0ZPUk1TKQpAQCAtNjU1LDYg
KzY1NiwxOSBAQCBzdGF0aWMgYm9vbCBhbnlQb2ludGVyRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVl
LCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJgogICAgIHJldHVybiBwb2ludGVyRXZh
bHVhdGUodmFsdWUsIGNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEsIGZyYW1lLCBwcmVmaXgpOwog
fQogCitzdGF0aWMgYm9vbCBwcmVmZXJzUmVkdWNlZE1vdGlvbkV2YWx1YXRlKENTU1ZhbHVlKiB2
YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsIEZyYW1lJiwgTWVkaWFGZWF0
dXJlUHJlZml4KQoreworI2lmIFVTRShORVdfVEhFTUUpCisgICAgYm9vbCB1c2VyUHJlZmVyc1Jl
ZHVjZWRNb3Rpb24gPSBwbGF0Zm9ybVRoZW1lKCktPnVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbigp
OworI2Vsc2UKKyAgICBib29sIHVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbiA9IGZhbHNlOworI2Vu
ZGlmCisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIHVzZXJQcmVmZXJzUmVkdWNlZE1v
dGlvbjsKKworICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS5n
ZXRWYWx1ZUlEKCkgPT0gKHVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbiA/IENTU1ZhbHVlUmVkdWNl
IDogQ1NTVmFsdWVEZWZhdWx0KTsKK30KKwogLy8gVXNlIHRoaXMgZnVuY3Rpb24gaW5zdGVhZCBv
ZiBjYWxsaW5nIGFkZCBkaXJlY3RseSB0byBhdm9pZCBpbmxpbmluZy4KIHN0YXRpYyB2b2lkIGFk
ZChNZWRpYVF1ZXJ5RnVuY3Rpb25NYXAmIG1hcCwgQXRvbWljU3RyaW5nSW1wbCoga2V5LCBNZWRp
YVF1ZXJ5RnVuY3Rpb24gdmFsdWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
TWVkaWFRdWVyeUV4cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5jcHAK
aW5kZXggMmZkMThiZWMzZWZkNDY3NjQ1MjE3Y2RlMDQzOTBmZWE5ODQzNjUxNy4uODBmMmY3N2Ew
MTFiNmUwNWY0ODg4N2U5YWE2NTkwYzgwY2U1NGI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL01lZGlhUXVlcnlFeHAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1
ZXJ5RXhwLmNwcApAQCAtNTAsOSArNTAsMTAgQEAgc3RhdGljIGlubGluZSBib29sIGZlYXR1cmVX
aXRoVmFsaWRJZGVudChjb25zdCBBdG9taWNTdHJpbmcmIG1lZGlhRmVhdHVyZSkKICAgICB8fCBt
ZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmFueVBvaW50ZXIKICAgICB8fCBtZWRp
YUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmhvdmVyCiAgICAgfHwgbWVkaWFGZWF0dXJl
ID09IE1lZGlhRmVhdHVyZU5hbWVzOjppbnZlcnRlZENvbG9ycwotICAgIHx8IG1lZGlhRmVhdHVy
ZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6cG9pbnRlcjsKKyAgICB8fCBtZWRpYUZlYXR1cmUgPT0g
TWVkaWFGZWF0dXJlTmFtZXM6OnBvaW50ZXIKKyAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFG
ZWF0dXJlTmFtZXM6OnByZWZlcnNSZWR1Y2VkTW90aW9uOwogfQotICAgIAorCiBzdGF0aWMgaW5s
aW5lIGJvb2wgZmVhdHVyZVdpdGhWYWxpZERlbnNpdHkoY29uc3QgU3RyaW5nJiBtZWRpYUZlYXR1
cmUsIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbikKIHsKICAgICBpZiAoKHRva2VuLnVuaXRU
eXBlKCkgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX0RQUFggJiYgdG9rZW4u
dW5pdFR5cGUoKSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfRFBJICYmIHRv
a2VuLnVuaXRUeXBlKCkgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX0RQQ00p
IHx8IHRva2VuLm51bWVyaWNWYWx1ZSgpIDw9IDApCkBAIC0yMjgsNiArMjI5LDcgQEAgc3RhdGlj
IGlubGluZSBib29sIGlzRmVhdHVyZVZhbGlkV2l0aG91dFZhbHVlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbWVkaWFGZWF0dXJlKQogICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJl
TmFtZXM6OnZpZXdNb2RlCiAjZW5kaWYKICAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlh
RmVhdHVyZU5hbWVzOjpwb2ludGVyCisgICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZl
YXR1cmVOYW1lczo6cHJlZmVyc1JlZHVjZWRNb3Rpb24KICAgICAgICAgfHwgbWVkaWFGZWF0dXJl
ID09IE1lZGlhRmVhdHVyZU5hbWVzOjpkZXZpY2VQaXhlbFJhdGlvCiAgICAgICAgIHx8IG1lZGlh
RmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6cmVzb2x1dGlvbgogICAgICAgICB8fCBtZWRp
YUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnZpZGVvUGxheWFibGVJbmxpbmU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVGhlbWUuaAppbmRleCA5NjYzNzczNzdhZWQ5YTUzZmRiN2NlOGRlODE3ZWRiOWE4
YjExYjkyLi4zNTg2M2JjODIwMTRjMzk3N2MzYzY5NGZhNDI3NmMwNTQxMWVmMWIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1RoZW1lLmgKQEAgLTExMCw2ICsxMTAsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIHZvaWQgZHJhd05hbWVkSW1hZ2UoY29uc3QgU3RyaW5nJiwgR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JikgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNS
ZWR1Y2VkTW90aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIC8vIFRoaXMgbWV0
aG9kIGlzIGNhbGxlZCBvbmNlLCBmcm9tIFJlbmRlclRoZW1lOjphZGp1c3REZWZhdWx0U3R5bGVT
aGVldCgpLCB0byBsZXQgZWFjaCBwbGF0Zm9ybSBhZGp1c3QKICAgICAvLyB0aGUgZGVmYXVsdCBD
U1MgcnVsZXMgaW4gaHRtbC5jc3MuCiAgICAgc3RhdGljIFN0cmluZyBkZWZhdWx0U3R5bGVTaGVl
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MuaAppbmRleCA4ZDgwOWYyM2M1
ZDBjZjczNDA2NDg3M2IyOWM0ODY4NjcwNTQ3M2E4Li4zNzdiODIyNmU0YWY4MTNkZjllZjUwZTYy
MTcwNDI1OWQ0OGE5ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
VGhlbWVJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MuaApA
QCAtMzQsNiArMzQsOCBAQCBjbGFzcyBUaGVtZUlPUyA6IHB1YmxpYyBUaGVtZUNvY29hIHsKIHB1
YmxpYzoKICAgICBUaGVtZUlPUygpIHsgfQogICAgIHZpcnR1YWwgflRoZW1lSU9TKCkgeyB9CisK
KyAgICBib29sIHVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1RoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1l
SU9TLm1tCmluZGV4IGI0NmZjM2FiMmQ2YzFiMjJlYjZmNWYyZTdkNzAwNTVhMjE1MzI5MGMuLmIx
YjBiYzUwMjljMWIwYzA3NTc0ZDdiYmU1ZDExNGNiNzQzOWE0YWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0KQEAgLTI4LDkgKzI4LDEzIEBACiAKICNpbXBvcnQgIkdy
YXBoaWNzQ29udGV4dC5oIgogI2ltcG9ydCAiU2Nyb2xsVmlldy5oIgorI2ltcG9ydCAiU29mdExp
bmtpbmcuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CiAKK1NPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCitTT0ZUX0xJTkso
VUlLaXQsIFVJQWNjZXNzaWJpbGl0eUlzUmVkdWNlTW90aW9uRW5hYmxlZCwgQk9PTCwgKHZvaWQp
LCAoKSkKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NDMsNCArNDcsOSBAQCBUaGVtZSogcGxhdGZvcm1UaGVtZSgpCiAgICAgcmV0dXJuICZ0aGVtZUlP
Uy5nZXQoKTsKIH0KIAorYm9vbCBUaGVtZUlPUzo6dXNlclByZWZlcnNSZWR1Y2VkTW90aW9uKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gVUlBY2Nlc3NpYmlsaXR5SXNSZWR1Y2VNb3Rpb25FbmFibGVk
KCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVt
ZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgKaW5kZXggM2Qw
ZTE4MzhhZjM0N2FiNWEyMjQ2ZjE0MGM0ODIzNTc3NTQ1OWEyMS4uZTRjNzI3MTc5YmU4MDc0MmNm
NWViYzMzOTk4MmRkYzI4YjJlN2Q2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1RoZW1lTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1l
TWFjLmgKQEAgLTU1LDYgKzU1LDggQEAgcHVibGljOgogICAgIHZvaWQgcGFpbnQoQ29udHJvbFBh
cnQsIENvbnRyb2xTdGF0ZXMmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBm
bG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KiwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGZs
b2F0IHBhZ2VTY2FsZUZhY3Rvcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbmZsYXRlQ29udHJvbFBh
aW50UmVjdChDb250cm9sUGFydCwgY29uc3QgQ29udHJvbFN0YXRlcyYsIEZsb2F0UmVjdCYsIGZs
b2F0IHpvb21GYWN0b3IpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgYm9vbCB1c2VyUHJlZmVyc1Jl
ZHVjZWRNb3Rpb24oKSBjb25zdCBvdmVycmlkZTsKKwogICAgIC8vIEZJWE1FOiBPbmNlIFJlbmRl
clRoZW1lTWFjIGlzIGNvbnZlcnRlZCBvdmVyIHRvIHVzZSBUaGVtZSB0aGVuIHRoaXMgY2FuIGJl
IGludGVybmFsIHRvIFRoZW1lTWFjLgogICAgIHN0YXRpYyBOU1ZpZXcqIGVuc3VyZWRWaWV3KFNj
cm9sbFZpZXcqLCBjb25zdCBDb250cm9sU3RhdGVzJiwgYm9vbCB1c2VVbnBhcmVudGVkVmlldyA9
IGZhbHNlKTsKICAgICBzdGF0aWMgdm9pZCBzZXRGb2N1c1JpbmdDbGlwUmVjdChjb25zdCBGbG9h
dFJlY3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQppbmRleCAxNTg4
ZWFkZTE2MzY3NDQ4ODMzOTA0NDhjYjQ4ZTE1NjQ3M2U1YmZlLi5jMTZiOWU2ZTNkMDM5NzJkOGRh
NzQ5Yjk5ZThmNTVhNzhhOTIxYzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1l
TWFjLm1tCkBAIC04NzAsNCArODcwLDEzIEBAIHZvaWQgVGhlbWVNYWM6OnBhaW50KENvbnRyb2xQ
YXJ0IHBhcnQsIENvbnRyb2xTdGF0ZXMmIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0JiBjCiAgICAg
fQogfQogCitib29sIFRoZW1lTWFjOjp1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24oKSBjb25zdAor
eworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwCisgICAgcmV0
dXJuIFtbTlNXb3Jrc3BhY2Ugc2hhcmVkV29ya3NwYWNlXSBhY2Nlc3NpYmlsaXR5RGlzcGxheVNo
b3VsZFJlZHVjZU1vdGlvbl07CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQor
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggN2JiNTEyNzQwZTZhYmEy
MjI3Mzk4YmNmYzUxOTJiYzczM2U3N2ZmOC4uZmYwYWIyMjIwOWJiY2ZjMDBjYzNhZGY3NjY4ZDcx
MGZhMTk1MjVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMzM3OCw0
ICszMzc4LDExIEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uKFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gdXNlCiAgICAgcGFnZS0+c2V0VXNlcklu
dGVyZmFjZUxheW91dERpcmVjdGlvbih1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uID09IFVz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUiA/IFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb246OkxUUiA6IFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b246OlJUTCk7CiB9CiAKKyNpZiAhUExBVEZPUk0oQ09DT0EpCitib29sIEludGVybmFsczo6dXNl
clByZWZlcnNSZWR1Y2VkTW90aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9Cisj
ZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKaW5kZXggODViZjMxODlhMzFiM2Y2OTRhZGY2M2ZlMjZiNmE0MjU5ODk5YzM1Yi4uMzVhOGFi
NzAwNTQyNjQyZjg0NDNkNWMzMDljNTg2MWU2NzNhN2ZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oCkBAIC00OTUsNiArNDk1LDggQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgVXNl
ckludGVyZmFjZUxheW91dERpcmVjdGlvbiB7IExUUiwgUlRMIH07CiAgICAgdm9pZCBzZXRVc2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pOwog
CisgICAgYm9vbCB1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24oKSBjb25zdDsKKwogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBJbnRlcm5hbHMoRG9jdW1lbnQmKTsKICAgICBEb2N1bWVudCogY29udGV4
dERvY3VtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXgg
MjE3OWY2OWJjMTk4NjRmNTc3MTk3NTEwMGM4MzU1ODE3MzBlYTZiZi4uMzcxYjVlMDJlY2IxOTIx
OWEyZmRkOTMxNWM1ZTEwYmQxNjI1YWFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbApAQCAtNDY2LDQgKzQ2Niw2IEBAIGVudW0gVXNlckludGVyZmFjZUxheW91dERpcmVjdGlv
biB7CiAgICAgR0NPYnNlcnZhdGlvbiBvYnNlcnZlR0MoYW55IG9ic2VydmVkKTsKIAogICAgIHZv
aWQgc2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uIHVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pOworCisgICAgYm9vbGVhbiB1c2Vy
UHJlZmVyc1JlZHVjZWRNb3Rpb24oKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1t
CmluZGV4IDFiOTkyMWMxMTRkYzE3MDRmMjk0MjJiOTJkOTAzYzAyMDNmNDkzZTEuLjQxOGJjZjc4
YTNkNzM4MWJiZGI3NzFiZjVjNzc3MzUzNjA4NmFjNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLm1tCkBAIC0zMiw2ICszMiwxMCBAQAogI2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgog
I2luY2x1ZGUgIkZyYW1lLmgiCiAKKyNpZiBQTEFURk9STShJT1MpCisjaW1wb3J0IDxVSUtpdC9V
SUtpdC5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIEludGVybmFs
czo6dXNlclZpc2libGVTdHJpbmcoY29uc3QgRE9NVVJMJiB1cmwpCkBAIC0zOSw0ICs0MywxNyBA
QCBTdHJpbmcgSW50ZXJuYWxzOjp1c2VyVmlzaWJsZVN0cmluZyhjb25zdCBET01VUkwmIHVybCkK
ICAgICByZXR1cm4gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLmNsaWVudCgp
LT51c2VyVmlzaWJsZVN0cmluZyh1cmwuaHJlZigpKTsKIH0KIAorI2lmIFBMQVRGT1JNKENPQ09B
KQorYm9vbCBJbnRlcm5hbHM6OnVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbigpIGNvbnN0Cit7Cisj
aWYgUExBVEZPUk0oSU9TKQorICAgIHJldHVybiBVSUFjY2Vzc2liaWxpdHlJc1JlZHVjZU1vdGlv
bkVuYWJsZWQoKTsKKyNlbGlmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEyMDAKKyAgICByZXR1cm4gW1tOU1dvcmtzcGFjZSBzaGFyZWRXb3Jr
c3BhY2VdIGFjY2Vzc2liaWxpdHlEaXNwbGF5U2hvdWxkUmVkdWNlTW90aW9uXTsKKyNlbHNlCisg
ICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisjZW5kaWYKKwogfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDcxMjliZGMw
ZWZkOWQ3OTA4NjYzNjcwYTU1ODQ5NDZiNTJkMjJhMWMuLjEzOTBhMDRhMTRjMDM4NDg5NDc3NDlj
YjlkN2QxNzQ4OWNlMmVhODYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNi0xMC0xMCAgRGVh
biBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHByZWZlcnMt
cmVkdWNlZC1tb3Rpb24gbWVkaWEgcXVlcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MzI1MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjg3MDQx
Mjk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyB0ZXN0IGZvciB0aGUgcHJlZmVycy1yZWR1Y2VkLW1vdGlvbiBxdWVyeSBpcworICAgICAgICB1
c2luZyB0aGUgc2FtZSBpbXBsZW1lbnRhdGlvbiBhcyB0aGUgZmVhdHVyZSBpdHNlbGYsIHNvCisg
ICAgICAgIGlzbid0IDEwMCUgZm9vbHByb29mLiBJdCBkb2VzIGhvd2V2ZXIgZXhlcmNpc2UgdGhl
IE1RIGV2YWx1YXRpb24KKyAgICAgICAgYW5kIHRoZSB3aW5kb3cubWF0Y2hNZWRpYSBwYXRocy4K
KworICAgICAgICAqIGZhc3QvbWVkaWEvbXEtcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLXByZWZlcnMtcmVkdWNlZC1t
b3Rpb24uaHRtbDogQWRkZWQuCisKIDIwMTYtMTAtMTAgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRh
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgTWFya2luZyBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
YWJvcnQtcmVxdWVzdHMtY2FuY2VsbGVkKiB0ZXN0cyBhcyBmbGFreSBvbiBtYWMuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXByZWZlcnMtcmVkdWNlZC1tb3Rpb24tZXhw
ZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcHJlZmVycy1yZWR1Y2VkLW1v
dGlvbi1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwNjU4MTE4ZTFiYjYzZTRlYWNmY2IwZTZl
M2VlNzdiYTI0ZjkwOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlh
L21xLXByZWZlcnMtcmVkdWNlZC1tb3Rpb24tZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDMyIEBA
Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNTUzQgbWVkaWEgcXVlcnkgdGVzdDogcHJlZmVycy1y
ZWR1Y2VkLW1vdGlvbi48L3RpdGxlPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyNhIHsgY29s
b3I6IGJsYWNrOyB9CisjYiB7IGNvbG9yOiBibGFjazsgfQorI2MgeyBjb2xvcjogYmxhY2s7IH0K
KyNkIHsgY29sb3I6IGJsYWNrOyB9Cis8L3N0eWxlPgorPHNjcmlwdD4KK3dpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24gKCkgeworCisgICAgaWYgKCF3aW5kb3cuaW50ZXJu
YWxzKSB7CisgICAgICAgIFsiYSIsICJiIiwgImMiLCAiZCJdLmZvckVhY2goaWQgPT4geyBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZChpZCkudGV4dENvbnRlbnQgPSAiVGhpcyBleHBlY3RlZCByZXN1
bHQgcmVxdWlyZXMgRFJUL1dLVFIuIjsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBpZiAod2luZG93LmludGVybmFscy51c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24oKSkKKyAgICAg
ICAgWyJhIiwgImIiLCAiYyJdLmZvckVhY2goaWQgPT4geyBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZChpZCkuc3R5bGUuY29sb3IgPSAiZ3JlZW4iOyB9KTsKKyAgICBlbHNlCisgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJkIikuc3R5bGUuY29sb3IgPSAiZ3JlZW4iOworCit9LCBmYWxz
ZSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICA8cCBpZD0iYSI+VGhpcyB0ZXh0IHNo
b3VsZCBiZSBncmVlbiBpZiB0aGUgdXNlciByZXF1ZXN0ZWQgcmVkdWNlZCBtb3Rpb24uIEJsYWNr
IG90aGVyd2lzZS48L3A+CisgIDxwIGlkPSJiIj5UaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlm
IHRoZSB1c2VyIHJlcXVlc3RlZCByZWR1Y2VkIG1vdGlvbi4gQmxhY2sgb3RoZXJ3aXNlLjwvcD4K
KyAgPHAgaWQ9ImMiPlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdGhlIHVzZXIgcmVxdWVz
dGVkIHJlZHVjZWQgbW90aW9uLiBCbGFjayBvdGhlcndpc2UuPC9wPgorICA8cCBpZD0iZCI+VGhp
cyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB0aGUgdXNlciBoYXMgbm90IHJlcXVlc3RlZCByZWR1
Y2VkIG1vdGlvbi4gQmxhY2sgb3RoZXJ3aXNlLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1wcmVmZXJzLXJlZHVjZWQtbW90aW9uLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2Y5OTVhZWYzMDcwOGYwZWZkOWQ2M2I5ZDQxMzFhYzBhYjJlNzQ4Zgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcHJlZmVycy1yZWR1
Y2VkLW1vdGlvbi5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+
Q1NTNCBtZWRpYSBxdWVyeSB0ZXN0OiBwcmVmZXJzLXJlZHVjZWQtbW90aW9uLjwvdGl0bGU+Cis8
c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorI2EgeyBjb2xvcjogYmxhY2s7IH0KKyNiIHsgY29sb3I6
IGJsYWNrOyB9CisjYyB7IGNvbG9yOiBibGFjazsgfQorI2QgeyBjb2xvcjogYmxhY2s7IH0KKwor
QG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uKSB7CisjYSB7IGNvbG9yOiBncmVlbjsgfQor
fQorCitAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgeworI2IgeyBjb2xv
cjogZ3JlZW47IH0KK30KKworQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiBkZWZhdWx0
KSB7CisjZCB7IGNvbG9yOiBncmVlbjsgfQorfQorPC9zdHlsZT4KKzxzY3JpcHQ+Cit3aW5kb3cu
YWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uICgpIHsKKyAgICBpZiAod2luZG93Lm1h
dGNoTWVkaWEoIihwcmVmZXJzLXJlZHVjZWQtbW90aW9uKSIpLm1hdGNoZXMpCisgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjIikuc3R5bGUuY29sb3IgPSAiZ3JlZW4iOworfSwgZmFs
c2UpOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHAgaWQ9ImEiPlRoaXMgdGV4dCBz
aG91bGQgYmUgZ3JlZW4gaWYgdGhlIHVzZXIgcmVxdWVzdGVkIHJlZHVjZWQgbW90aW9uLiBCbGFj
ayBvdGhlcndpc2UuPC9wPgorICA8cCBpZD0iYiI+VGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBp
ZiB0aGUgdXNlciByZXF1ZXN0ZWQgcmVkdWNlZCBtb3Rpb24uIEJsYWNrIG90aGVyd2lzZS48L3A+
CisgIDxwIGlkPSJjIj5UaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHRoZSB1c2VyIHJlcXVl
c3RlZCByZWR1Y2VkIG1vdGlvbi4gQmxhY2sgb3RoZXJ3aXNlLjwvcD4KKyAgPHAgaWQ9ImQiPlRo
aXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdGhlIHVzZXIgaGFzIG5vdCByZXF1ZXN0ZWQgcmVk
dWNlZCBtb3Rpb24uIEJsYWNrIG90aGVyd2lzZS48L3A+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291303</attachid>
            <date>2016-10-11 15:14:40 -0700</date>
            <delta_ts>2016-10-11 15:26:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163250-20161012091116.patch</filename>
            <type>text/plain</type>
            <size>26327</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjFlZTFmYjMwNmFmMmVi
ZTZiNGNkMzIzYzBhOWVkMDA1NzhhNjc0OS4uMWE1MmI2NjlkNTFiZDUwOTMxNWRlYmRkNDRkODEz
YzVlYzFkYTM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE2LTEwLTExICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgcHJlZmVycy1y
ZWR1Y2VkLW1vdGlvbiBtZWRpYSBxdWVyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjUwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yODcwNDEy
OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBs
ZW1lbnQgdGhlIHByZWZlcnMtcmVkdWNlZC1tb3Rpb24gbWVkaWEgcXVlcnksIGFzCisgICAgICAg
IGRlc2NyaWJlZCBpbiBodHRwczovL2dpdGh1Yi5jb20vdzNjL2Nzc3dnLWRyYWZ0cy9pc3N1ZXMv
NDQyLgorCisgICAgICAgIFRlc3RzOiBmYXN0L21lZGlhL21xLXByZWZlcnMtcmVkdWNlZC1tb3Rp
b24tZm9yY2VkLXZhbHVlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvbWVkaWEvbXEtcHJlZmVy
cy1yZWR1Y2VkLW1vdGlvbi5odG1sCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9XZWJDb3Jl
VGVzdFN1cHBvcnQueGNjb25maWc6IExpbmsgYWdhaW5zdCBBcHBLaXQgYW5kIFVJS2l0LgorCisg
ICAgICAgICogY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW46IE5ldyBrZXl3b3JkIGZvciAicmVkdWNl
Ii4KKworICAgICAgICAqIGNzcy9NZWRpYUZlYXR1cmVOYW1lcy5oOiBBZGQgcHJlZmVycy1yZWR1
Y2VkLW1vdGlvbi4KKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpwcmVmZXJzUmVkdWNlZE1vdGlvbkV2YWx1YXRlKToKKyAgICAgICAgKiBj
c3MvTWVkaWFRdWVyeUV4cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmZWF0dXJlV2l0aFZhbGlk
SWRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6aXNGZWF0dXJlVmFsaWRXaXRob3V0VmFsdWUpOgor
CisgICAgICAgICogcGxhdGZvcm0vVGhlbWUuaDogTmV3IEFQSSB0byBkZXRlY3QgdGhlIHN5c3Rl
bSBhY2Nlc3NpYmlsaXR5IHNldHRpbmdzLgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OnVzZXJQ
cmVmZXJzUmVkdWNlZE1vdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1RoZW1lSU9TLmg6
CisgICAgICAgICogcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6
VGhlbWVJT1M6OnVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1RoZW1lTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6VGhlbWVNYWM6OnVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbik6CisKKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6IEV4cG9zZSB0aGUgc2FtZSBBUEkgdG8gaW50
ZXJuYWxzLCBzbyB0aGF0CisgICAgICAgIGEgdGVzdCBjYW4gZXhhbWluZSB0aGUgdmFsdWUgdG9v
LgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjp1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24p
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuaWRsOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjp1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24pOgorCisgICAgICAgICog
cGFnZS9TZXR0aW5ncy5oOiBOZXcgc2V0dGluZyB0byBvdmVycmlkZSB0aGUgc3lzdGVtIHZhbHVl
Li4uCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5pbjoKKworICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxTZXR0aW5ncy5jcHA6IC4uLiBwbHVtYmVkIHRocm91Z2ggaW50ZXJuYWxzLgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpCYWNrdXApOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpyZXN0b3JlVG8pOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6Zm9yY2VkUHJlZmVyc1JlZHVjZWRNb3Rpb25WYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpzZXRGb3JjZWRQcmVmZXJz
UmVkdWNlZE1vdGlvblZhbHVlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3Mu
aDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsOgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6dXNlclBy
ZWZlcnNSZWR1Y2VkTW90aW9uKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6dXNlclByZWZlcnNSZWR1Y2VkTW90
aW9uKToKKworCiAyMDE2LTEwLTEwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBNb3ZlIG1lZGlhIHNvdXJjZSBmcm9tIGxlZ2FjeSB0byBuZXcgRE9NIGV4Y2VwdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmVUZXN0
U3VwcG9ydC54Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmVU
ZXN0U3VwcG9ydC54Y2NvbmZpZwppbmRleCBjOWRhNjU5YzY1ODU3YzNmZGNkYjc0MjRhY2M2M2Qy
MWQyNzY0NTc1Li45OTAzNmZkZjM1NGIyYjkwN2Y1MTJjOGJjNzkxZjMxYjE4NWI4Y2EyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3JlVGVzdFN1cHBvcnQu
eGNjb25maWcKKysrIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZVRlc3RT
dXBwb3J0LnhjY29uZmlnCkBAIC00OSw2ICs0OSw3IEBAIEVYRUNVVEFCTEVfUFJFRklYID0gbGli
OwogRVhQT1JURURfU1lNQk9MU19GSUxFID0gOwogR0NDX1NZTUJPTFNfUFJJVkFURV9FWFRFUk4g
PSBZRVM7CiBPVEhFUl9MREZMQUdTID0gJChBU0FOX09USEVSX0xERkxBR1MpOwotT1RIRVJfTERG
TEFHU1tzZGs9aXBob25lb3MqXSA9ICQoQVNBTl9PVEhFUl9MREZMQUdTKSAtbEFjY2Vzc2liaWxp
dHkgLUYkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9QaG9ueVdl
YktpdExlZ2FjeTsKLU9USEVSX0xERkxBR1Nbc2RrPWlwaG9uZXNpbXVsYXRvcipdID0gJChBU0FO
X09USEVSX0xERkxBR1MpIC1sQWNjZXNzaWJpbGl0eSAtRiQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL1Bob255V2ViS2l0TGVnYWN5OworT1RIRVJfTERGTEFHU1tz
ZGs9bWFjb3MqXSA9ICQoQVNBTl9PVEhFUl9MREZMQUdTKSAtZnJhbWV3b3JrIEFwcEtpdDsKK09U
SEVSX0xERkxBR1Nbc2RrPWlwaG9uZW9zKl0gPSAkKEFTQU5fT1RIRVJfTERGTEFHUykgLWZyYW1l
d29yayBVSUtpdCAtbEFjY2Vzc2liaWxpdHkgLUYkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9QaG9ueVdlYktpdExlZ2FjeTsKK09USEVSX0xERkxBR1Nbc2RrPWlw
aG9uZXNpbXVsYXRvcipdID0gJChBU0FOX09USEVSX0xERkxBR1MpIC1mcmFtZXdvcmsgVUlLaXQg
LWxBY2Nlc3NpYmlsaXR5IC1GJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvUGhvbnlXZWJLaXRMZWdhY3k7CiBTRUNUX09SREVSX0ZMQUdTID0gOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4gYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgppbmRleCA0NTFmYTkwNjc2NWJlMTJmMWQyNjhjMGFm
YmU3NTdiMGE5MGY5YjlhLi5lNjFmZDk3MTc1ZmFkYTc2NDFlNDg5YTU0Njk5ZTI4MzUxNmZiMzZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgpAQCAtMTMwNCw2ICsxMzA0
LDkgQEAgbGFzdAogcDMKIHJlYzIwMjAKIAorLy8gcHJlZmVycy1yZWR1Y2VkLW1vdGlvbgorcmVk
dWNlCisKICNpZiBkZWZpbmVkKEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQpICYmIEVOQUJMRV9DU1Nf
R1JJRF9MQVlPVVQKIC8vIGF1dG8tcmVwZWF0CiBhdXRvLWZpbGwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9NZWRpYUZlYXR1cmVOYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL01l
ZGlhRmVhdHVyZU5hbWVzLmgKaW5kZXggNjI5NzFjMDJmZjJjY2NkZmEzNGYyNTU2MDdlYzk0OGQ1
NDAxOTBkOS4uNjY0ZDM0ZjFiZDMzMDVlMDMwZThlYWVkOGI2ZmI3ZGQxMzY3ODdmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmgKQEAgLTY5LDYgKzY5LDcgQEAKICAgICBt
YWNybyhtb25vY2hyb21lLCAibW9ub2Nocm9tZSIpIFwKICAgICBtYWNybyhvcmllbnRhdGlvbiwg
Im9yaWVudGF0aW9uIikgXAogICAgIG1hY3JvKHBvaW50ZXIsICJwb2ludGVyIikgXAorICAgIG1h
Y3JvKHByZWZlcnNSZWR1Y2VkTW90aW9uLCAicHJlZmVycy1yZWR1Y2VkLW1vdGlvbiIpIFwKICAg
ICBtYWNybyhyZXNvbHV0aW9uLCAicmVzb2x1dGlvbiIpIFwKICAgICBtYWNybyh0cmFuc2Zvcm0y
ZCwgIi13ZWJraXQtdHJhbnNmb3JtLTJkIikgXAogICAgIG1hY3JvKHRyYW5zZm9ybTNkLCAiLXdl
YmtpdC10cmFuc2Zvcm0tM2QiKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVk
aWFRdWVyeUV2YWx1YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1
YXRvci5jcHAKaW5kZXggNTg0YzhlY2U0YTY3ODI1MzU0NTMxY2Y5M2Y1NjA2MjM2YWU3MjQ3ZS4u
YzYzOTJiZWExOThmOTUwNzJkNWUwNDllN2FmMjYxZmQ3OTc4NzRkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcApAQCAtNDksNiArNDksNyBAQAogI2luY2x1
ZGUgIlNjcmVlbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNv
bHZlci5oIgorI2luY2x1ZGUgIlRoZW1lLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAog
I2lmIEVOQUJMRSgzRF9UUkFOU0ZPUk1TKQpAQCAtNjU1LDYgKzY1NiwyNSBAQCBzdGF0aWMgYm9v
bCBhbnlQb2ludGVyRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENv
bnZlcnNpb25EYXRhJgogICAgIHJldHVybiBwb2ludGVyRXZhbHVhdGUodmFsdWUsIGNzc1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEsIGZyYW1lLCBwcmVmaXgpOwogfQogCitzdGF0aWMgYm9vbCBwcmVm
ZXJzUmVkdWNlZE1vdGlvbkV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5n
dGhDb252ZXJzaW9uRGF0YSYsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4KQorewor
I2lmIFVTRShORVdfVEhFTUUpCisgICAgYm9vbCB1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24gPSBw
bGF0Zm9ybVRoZW1lKCktPnVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbigpOworI2Vsc2UKKyAgICBi
b29sIHVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbiA9IGZhbHNlOworI2VuZGlmCisKKyAgICBpZiAo
ZnJhbWUuc2V0dGluZ3MoKS5mb3JjZWRQcmVmZXJzUmVkdWNlZE1vdGlvblZhbHVlKCkgPT0gU2V0
dGluZ3M6OkZvcmNlZFByZWZlcnNSZWR1Y2VkTW90aW9uVmFsdWU6Ok9uKQorICAgICAgICB1c2Vy
UHJlZmVyc1JlZHVjZWRNb3Rpb24gPSB0cnVlOworICAgIGVsc2UgaWYgKGZyYW1lLnNldHRpbmdz
KCkuZm9yY2VkUHJlZmVyc1JlZHVjZWRNb3Rpb25WYWx1ZSgpID09IFNldHRpbmdzOjpGb3JjZWRQ
cmVmZXJzUmVkdWNlZE1vdGlvblZhbHVlOjpPZmYpCisgICAgICAgIHVzZXJQcmVmZXJzUmVkdWNl
ZE1vdGlvbiA9IGZhbHNlOworCisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIHVzZXJQ
cmVmZXJzUmVkdWNlZE1vdGlvbjsKKworICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4oKnZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gKHVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbiA/
IENTU1ZhbHVlUmVkdWNlIDogQ1NTVmFsdWVEZWZhdWx0KTsKK30KKwogLy8gVXNlIHRoaXMgZnVu
Y3Rpb24gaW5zdGVhZCBvZiBjYWxsaW5nIGFkZCBkaXJlY3RseSB0byBhdm9pZCBpbmxpbmluZy4K
IHN0YXRpYyB2b2lkIGFkZChNZWRpYVF1ZXJ5RnVuY3Rpb25NYXAmIG1hcCwgQXRvbWljU3RyaW5n
SW1wbCoga2V5LCBNZWRpYVF1ZXJ5RnVuY3Rpb24gdmFsdWUpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVk
aWFRdWVyeUV4cC5jcHAKaW5kZXggMmZkMThiZWMzZWZkNDY3NjQ1MjE3Y2RlMDQzOTBmZWE5ODQz
NjUxNy4uODBmMmY3N2EwMTFiNmUwNWY0ODg4N2U5YWE2NTkwYzgwY2U1NGI4ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmNwcApAQCAtNTAsOSArNTAsMTAgQEAgc3RhdGljIGlubGlu
ZSBib29sIGZlYXR1cmVXaXRoVmFsaWRJZGVudChjb25zdCBBdG9taWNTdHJpbmcmIG1lZGlhRmVh
dHVyZSkKICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmFueVBvaW50
ZXIKICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmhvdmVyCiAgICAg
fHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjppbnZlcnRlZENvbG9ycwotICAg
IHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6cG9pbnRlcjsKKyAgICB8fCBt
ZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnBvaW50ZXIKKyAgICB8fCBtZWRpYUZl
YXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnByZWZlcnNSZWR1Y2VkTW90aW9uOwogfQotICAg
IAorCiBzdGF0aWMgaW5saW5lIGJvb2wgZmVhdHVyZVdpdGhWYWxpZERlbnNpdHkoY29uc3QgU3Ry
aW5nJiBtZWRpYUZlYXR1cmUsIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbikKIHsKICAgICBp
ZiAoKHRva2VuLnVuaXRUeXBlKCkgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NT
X0RQUFggJiYgdG9rZW4udW5pdFR5cGUoKSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVz
OjpDU1NfRFBJICYmIHRva2VuLnVuaXRUeXBlKCkgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRU
eXBlczo6Q1NTX0RQQ00pIHx8IHRva2VuLm51bWVyaWNWYWx1ZSgpIDw9IDApCkBAIC0yMjgsNiAr
MjI5LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzRmVhdHVyZVZhbGlkV2l0aG91dFZhbHVlKGNv
bnN0IEF0b21pY1N0cmluZyYgbWVkaWFGZWF0dXJlKQogICAgICAgICB8fCBtZWRpYUZlYXR1cmUg
PT0gTWVkaWFGZWF0dXJlTmFtZXM6OnZpZXdNb2RlCiAjZW5kaWYKICAgICAgICAgfHwgbWVkaWFG
ZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpwb2ludGVyCisgICAgICAgIHx8IG1lZGlhRmVh
dHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6cHJlZmVyc1JlZHVjZWRNb3Rpb24KICAgICAgICAg
fHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpkZXZpY2VQaXhlbFJhdGlvCiAg
ICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6cmVzb2x1dGlvbgog
ICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnZpZGVvUGxheWFi
bGVJbmxpbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggYzQ1MDNkOGY2ZDc2MDk4NDdhZGZm
YTY5MTM2NWYxYWY3YzdmYjg2Zi4uNzEzYjJmZTU1MWQ0MzA4MWUyNzgzN2ViZDFlZWQ5ZDA0ODI1
NjU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtOTgsNiArOTgsOSBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHBhZ2VEZXN0cm95ZWQoKSB7IG1fcGFnZSA9IG51bGxwdHI7IH0KIAorICAgIGVu
dW0gY2xhc3MgRm9yY2VkUHJlZmVyc1JlZHVjZWRNb3Rpb25WYWx1ZSB7IFN5c3RlbSwgT24sIE9m
ZiB9OworICAgIHN0YXRpYyBjb25zdCBTZXR0aW5nczo6Rm9yY2VkUHJlZmVyc1JlZHVjZWRNb3Rp
b25WYWx1ZSBkZWZhdWx0Rm9yY2VkUHJlZmVyc1JlZHVjZWRNb3Rpb25WYWx1ZSA9IEZvcmNlZFBy
ZWZlcnNSZWR1Y2VkTW90aW9uVmFsdWU6OlN5c3RlbTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0U3RhbmRhcmRGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYsIFVTY3JpcHRDb2Rl
ID0gVVNDUklQVF9DT01NT04pOwogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21pY1N0cmlu
ZyYgc3RhbmRhcmRGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgppbmRleCA4NWZjZGY4MzYxMTgxMWMwNzgwZTYwMTI2
ZjA2MDgyYzEwY2Q5OWFiLi5hNDAxNTQ2ZGQ0ODVkY2I3ZjNmN2FhOTIwYzc4Y2ZmZjEyZjBiZjg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KQEAgLTI4MiwzICsyODIsNSBAQCBpbnB1dEV2ZW50
c0VuYWJsZWQgaW5pdGlhbD1mYWxzZQogCiBxdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudEVuYWJs
ZWQgaW5pdGlhbD1kZWZhdWx0UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRFbmFibGVkCiB5b3VU
dWJlRmxhc2hQbHVnaW5SZXBsYWNlbWVudEVuYWJsZWQgaW5pdGlhbD1kZWZhdWx0WW91VHViZUZs
YXNoUGx1Z2luUmVwbGFjZW1lbnRFbmFibGVkCisKK2ZvcmNlZFByZWZlcnNSZWR1Y2VkTW90aW9u
VmFsdWUgdHlwZT1Gb3JjZWRQcmVmZXJzUmVkdWNlZE1vdGlvblZhbHVlLCBpbml0aWFsPWRlZmF1
bHRGb3JjZWRQcmVmZXJzUmVkdWNlZE1vdGlvblZhbHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9UaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaApp
bmRleCA5NjYzNzczNzdhZWQ5YTUzZmRiN2NlOGRlODE3ZWRiOWE4YjExYjkyLi4zNTg2M2JjODIw
MTRjMzk3N2MzYzY5NGZhNDI3NmMwNTQxMWVmMWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmgK
QEAgLTExMCw2ICsxMTAsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd05hbWVk
SW1hZ2UoY29uc3QgU3RyaW5nJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikg
Y29uc3Q7CiAKKyAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNSZWR1Y2VkTW90aW9uKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbmNl
LCBmcm9tIFJlbmRlclRoZW1lOjphZGp1c3REZWZhdWx0U3R5bGVTaGVldCgpLCB0byBsZXQgZWFj
aCBwbGF0Zm9ybSBhZGp1c3QKICAgICAvLyB0aGUgZGVmYXVsdCBDU1MgcnVsZXMgaW4gaHRtbC5j
c3MuCiAgICAgc3RhdGljIFN0cmluZyBkZWZhdWx0U3R5bGVTaGVldCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvVGhlbWVJT1MuaAppbmRleCA4ZDgwOWYyM2M1ZDBjZjczNDA2NDg3M2IyOWM0
ODY4NjcwNTQ3M2E4Li4zNzdiODIyNmU0YWY4MTNkZjllZjUwZTYyMTcwNDI1OWQ0OGE5ODI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MuaApAQCAtMzQsNiArMzQsOCBAQCBj
bGFzcyBUaGVtZUlPUyA6IHB1YmxpYyBUaGVtZUNvY29hIHsKIHB1YmxpYzoKICAgICBUaGVtZUlP
UygpIHsgfQogICAgIHZpcnR1YWwgflRoZW1lSU9TKCkgeyB9CisKKyAgICBib29sIHVzZXJQcmVm
ZXJzUmVkdWNlZE1vdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tCmluZGV4IGI0NmZj
M2FiMmQ2YzFiMjJlYjZmNWYyZTdkNzAwNTVhMjE1MzI5MGMuLmIxYjBiYzUwMjljMWIwYzA3NTc0
ZDdiYmU1ZDExNGNiNzQzOWE0YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9UaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJ
T1MubW0KQEAgLTI4LDkgKzI4LDEzIEBACiAKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgog
I2ltcG9ydCAiU2Nyb2xsVmlldy5oIgorI2ltcG9ydCAiU29mdExpbmtpbmcuaCIKICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAK
K1NPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCitTT0ZUX0xJTksoVUlLaXQsIFVJQWNjZXNzaWJp
bGl0eUlzUmVkdWNlTW90aW9uRW5hYmxlZCwgQk9PTCwgKHZvaWQpLCAoKSkKKwogdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDMsNCArNDcsOSBAQCBUaGVt
ZSogcGxhdGZvcm1UaGVtZSgpCiAgICAgcmV0dXJuICZ0aGVtZUlPUy5nZXQoKTsKIH0KIAorYm9v
bCBUaGVtZUlPUzo6dXNlclByZWZlcnNSZWR1Y2VkTW90aW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gVUlBY2Nlc3NpYmlsaXR5SXNSZWR1Y2VNb3Rpb25FbmFibGVkKCk7Cit9CisKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgKaW5kZXggM2QwZTE4MzhhZjM0N2FiNWEyMjQ2
ZjE0MGM0ODIzNTc3NTQ1OWEyMS4uZTRjNzI3MTc5YmU4MDc0MmNmNWViYzMzOTk4MmRkYzI4YjJl
N2Q2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgKQEAgLTU1LDYgKzU1
LDggQEAgcHVibGljOgogICAgIHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMm
LCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCB6b29tRmFjdG9yLCBT
Y3JvbGxWaWV3KiwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGZsb2F0IHBhZ2VTY2FsZUZhY3Rv
cikgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbmZsYXRlQ29udHJvbFBhaW50UmVjdChDb250cm9sUGFy
dCwgY29uc3QgQ29udHJvbFN0YXRlcyYsIEZsb2F0UmVjdCYsIGZsb2F0IHpvb21GYWN0b3IpIGNv
bnN0IG92ZXJyaWRlOwogCisgICAgYm9vbCB1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24oKSBjb25z
dCBvdmVycmlkZTsKKwogICAgIC8vIEZJWE1FOiBPbmNlIFJlbmRlclRoZW1lTWFjIGlzIGNvbnZl
cnRlZCBvdmVyIHRvIHVzZSBUaGVtZSB0aGVuIHRoaXMgY2FuIGJlIGludGVybmFsIHRvIFRoZW1l
TWFjLgogICAgIHN0YXRpYyBOU1ZpZXcqIGVuc3VyZWRWaWV3KFNjcm9sbFZpZXcqLCBjb25zdCBD
b250cm9sU3RhdGVzJiwgYm9vbCB1c2VVbnBhcmVudGVkVmlldyA9IGZhbHNlKTsKICAgICBzdGF0
aWMgdm9pZCBzZXRGb2N1c1JpbmdDbGlwUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQppbmRleCAxNTg4ZWFkZTE2MzY3NDQ4ODMzOTA0
NDhjYjQ4ZTE1NjQ3M2U1YmZlLi5jMTZiOWU2ZTNkMDM5NzJkOGRhNzQ5Yjk5ZThmNTVhNzhhOTIx
YzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCkBAIC04NzAsNCAr
ODcwLDEzIEBAIHZvaWQgVGhlbWVNYWM6OnBhaW50KENvbnRyb2xQYXJ0IHBhcnQsIENvbnRyb2xT
dGF0ZXMmIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0JiBjCiAgICAgfQogfQogCitib29sIFRoZW1l
TWFjOjp1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24oKSBjb25zdAoreworI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwCisgICAgcmV0dXJuIFtbTlNXb3Jrc3BhY2Ug
c2hhcmVkV29ya3NwYWNlXSBhY2Nlc3NpYmlsaXR5RGlzcGxheVNob3VsZFJlZHVjZU1vdGlvbl07
CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAppbmRleCBkMjhiNTY4NGJiNjRkMGQ2YmVj
MTI3ZDVhNzNjZjU3ZmZmMTFlMDA4Li5iZDRhZDRkNDgzNTFhNDFjMzdiN2Q3Y2QwZjFhYzJmZGMz
ZDMwOWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGlu
Z3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAK
QEAgLTExNSw2ICsxMTUsNyBAQCBJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OkJhY2t1cChTZXR0
aW5ncyYgc2V0dGluZ3MpCiAgICAgLCBtX3VzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3koc2V0
dGluZ3MudXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeSgpKQogICAgICwgbV9zeXN0ZW1MYXlv
dXREaXJlY3Rpb24oc2V0dGluZ3Muc3lzdGVtTGF5b3V0RGlyZWN0aW9uKCkpCiAgICAgLCBtX3Bk
ZkltYWdlQ2FjaGluZ1BvbGljeShzZXR0aW5ncy5wZGZJbWFnZUNhY2hpbmdQb2xpY3koKSkKKyAg
ICAsIG1fZm9yY2VkUHJlZmVyc1JlZHVjZWRNb3Rpb25WYWx1ZShzZXR0aW5ncy5mb3JjZWRQcmVm
ZXJzUmVkdWNlZE1vdGlvblZhbHVlKCkpCiB7CiB9CiAKQEAgLTE5NCw2ICsxOTUsNyBAQCB2b2lk
IEludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6cmVzdG9yZVRvKFNldHRpbmdzJiBzZXR0aW5ncykK
ICAgICBzZXR0aW5ncy5zZXRVc2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5KG1fdXNlckludGVy
ZmFjZURpcmVjdGlvblBvbGljeSk7CiAgICAgc2V0dGluZ3Muc2V0U3lzdGVtTGF5b3V0RGlyZWN0
aW9uKG1fc3lzdGVtTGF5b3V0RGlyZWN0aW9uKTsKICAgICBzZXR0aW5ncy5zZXRQZGZJbWFnZUNh
Y2hpbmdQb2xpY3kobV9wZGZJbWFnZUNhY2hpbmdQb2xpY3kpOworICAgIHNldHRpbmdzLnNldEZv
cmNlZFByZWZlcnNSZWR1Y2VkTW90aW9uVmFsdWUobV9mb3JjZWRQcmVmZXJzUmVkdWNlZE1vdGlv
blZhbHVlKTsKICAgICBTZXR0aW5nczo6c2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUoZmFsc2Up
OwogfQogCkBAIC02NzksNiArNjgxLDMzIEBAIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0VmFy
aWF0aW9uRm9udHNFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAjZW5k
aWYKIH0KIAorSW50ZXJuYWxTZXR0aW5nczo6Rm9yY2VkUHJlZmVyc1JlZHVjZWRNb3Rpb25WYWx1
ZSBJbnRlcm5hbFNldHRpbmdzOjpmb3JjZWRQcmVmZXJzUmVkdWNlZE1vdGlvblZhbHVlKCkgY29u
c3QKK3sKKyAgICBzd2l0Y2ggKHNldHRpbmdzKCktPmZvcmNlZFByZWZlcnNSZWR1Y2VkTW90aW9u
VmFsdWUoKSkgeworICAgIGNhc2UgU2V0dGluZ3M6OkZvcmNlZFByZWZlcnNSZWR1Y2VkTW90aW9u
VmFsdWU6OlN5c3RlbToKKyAgICAgICAgcmV0dXJuIEludGVybmFsU2V0dGluZ3M6OkZvcmNlZFBy
ZWZlcnNSZWR1Y2VkTW90aW9uVmFsdWU6OlN5c3RlbTsKKyAgICBjYXNlIFNldHRpbmdzOjpGb3Jj
ZWRQcmVmZXJzUmVkdWNlZE1vdGlvblZhbHVlOjpPbjoKKyAgICAgICAgcmV0dXJuIEludGVybmFs
U2V0dGluZ3M6OkZvcmNlZFByZWZlcnNSZWR1Y2VkTW90aW9uVmFsdWU6Ok9uOworICAgIGNhc2Ug
U2V0dGluZ3M6OkZvcmNlZFByZWZlcnNSZWR1Y2VkTW90aW9uVmFsdWU6Ok9mZjoKKyAgICAgICAg
cmV0dXJuIEludGVybmFsU2V0dGluZ3M6OkZvcmNlZFByZWZlcnNSZWR1Y2VkTW90aW9uVmFsdWU6
Ok9mZjsKKyAgICB9Cit9CisKK3ZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0Rm9yY2VkUHJlZmVy
c1JlZHVjZWRNb3Rpb25WYWx1ZShJbnRlcm5hbFNldHRpbmdzOjpGb3JjZWRQcmVmZXJzUmVkdWNl
ZE1vdGlvblZhbHVlIHZhbHVlKQoreworICAgIHN3aXRjaCAodmFsdWUpIHsKKyAgICBjYXNlIElu
dGVybmFsU2V0dGluZ3M6OkZvcmNlZFByZWZlcnNSZWR1Y2VkTW90aW9uVmFsdWU6OlN5c3RlbToK
KyAgICAgICAgc2V0dGluZ3MoKS0+c2V0Rm9yY2VkUHJlZmVyc1JlZHVjZWRNb3Rpb25WYWx1ZShT
ZXR0aW5nczo6Rm9yY2VkUHJlZmVyc1JlZHVjZWRNb3Rpb25WYWx1ZTo6U3lzdGVtKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBJbnRlcm5hbFNldHRpbmdzOjpGb3JjZWRQcmVmZXJzUmVkdWNl
ZE1vdGlvblZhbHVlOjpPbjoKKyAgICAgICAgc2V0dGluZ3MoKS0+c2V0Rm9yY2VkUHJlZmVyc1Jl
ZHVjZWRNb3Rpb25WYWx1ZShTZXR0aW5nczo6Rm9yY2VkUHJlZmVyc1JlZHVjZWRNb3Rpb25WYWx1
ZTo6T24pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGVybmFsU2V0dGluZ3M6OkZvcmNl
ZFByZWZlcnNSZWR1Y2VkTW90aW9uVmFsdWU6Ok9mZjoKKyAgICAgICAgc2V0dGluZ3MoKS0+c2V0
Rm9yY2VkUHJlZmVyc1JlZHVjZWRNb3Rpb25WYWx1ZShTZXR0aW5nczo6Rm9yY2VkUHJlZmVyc1Jl
ZHVjZWRNb3Rpb25WYWx1ZTo6T2ZmKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCiAvLyBJ
ZiB5b3UgYWRkIHRvIHRoaXMgbGlzdCwgbWFrZSBzdXJlIHRoYXQgeW91IHVwZGF0ZSB0aGUgQmFj
a3VwIGNsYXNzIGZvciB0ZXN0IHJlcHJvZHVjYWJpbGl0eSEKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaAppbmRleCAxY2ZhNTA2MDcyMzM0ZDRjNmVkZTRjNTRk
NGU4MjM0YTMxNTY0NzJjLi45YjMyMzBiYmYzYWNmMzhmNDNiY2Y2YmYwMzgxZjI5M2MwYjY2NjE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaApAQCAtMTE1LDYg
KzExNSw3IEBAIHB1YmxpYzoKICAgICAgICAgVXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeSBt
X3VzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3k7CiAgICAgICAgIFRleHREaXJlY3Rpb24gbV9z
eXN0ZW1MYXlvdXREaXJlY3Rpb247CiAgICAgICAgIFBERkltYWdlQ2FjaGluZ1BvbGljeSBtX3Bk
ZkltYWdlQ2FjaGluZ1BvbGljeTsKKyAgICAgICAgU2V0dGluZ3M6OkZvcmNlZFByZWZlcnNSZWR1
Y2VkTW90aW9uVmFsdWUgbV9mb3JjZWRQcmVmZXJzUmVkdWNlZE1vdGlvblZhbHVlOwogICAgIH07
CiAKICAgICBzdGF0aWMgUmVmPEludGVybmFsU2V0dGluZ3M+IGNyZWF0ZShQYWdlKiBwYWdlKQpA
QCAtMTc0LDYgKzE3NSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCB2YXJpYXRpb25Gb250c0VuYWJs
ZWQoRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0VmFyaWF0aW9uRm9udHNFbmFibGVkKGJv
b2wsIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgIGVudW0gY2xhc3MgRm9yY2VkUHJlZmVyc1JlZHVj
ZWRNb3Rpb25WYWx1ZSB7IFN5c3RlbSwgT24sIE9mZiB9OworICAgIEZvcmNlZFByZWZlcnNSZWR1
Y2VkTW90aW9uVmFsdWUgZm9yY2VkUHJlZmVyc1JlZHVjZWRNb3Rpb25WYWx1ZSgpIGNvbnN0Owor
ICAgIHZvaWQgc2V0Rm9yY2VkUHJlZmVyc1JlZHVjZWRNb3Rpb25WYWx1ZShGb3JjZWRQcmVmZXJz
UmVkdWNlZE1vdGlvblZhbHVlKTsKKwogICAgIHN0YXRpYyB2b2lkIHNldEFsbG93c0FueVNTTENl
cnRpZmljYXRlKGJvb2wpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxTZXR0aW5ncy5pZGwKaW5kZXggM2JkNzYyYzAwYWMyNWE5MmYwODJhZDFmNWU4N2JhY2Vj
MjJiYmU1Yi4uNDFjMmE5OTE4NGU0MGYwYzExODkwODlkZmFkY2FjZjZhZWE1ZGFhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCkBAIC0yNCw2ICsyNCw4
IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKK2VudW0gRm9yY2VkUHJlZmVyc1JlZHVjZWRNb3Rpb25W
YWx1ZSB7ICJzeXN0ZW0iLCAib24iLCAib2ZmIiB9OworCiBbCiAgICAgTm9JbnRlcmZhY2VPYmpl
Y3QsCiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCkBAIC04OSw2ICs5MSw4IEBACiAgICAgW01h
eVRocm93TGVnYWN5RXhjZXB0aW9uXSBib29sZWFuIHZhcmlhdGlvbkZvbnRzRW5hYmxlZCgpOwog
ICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBzZXRWYXJpYXRpb25Gb250c0VuYWJs
ZWQoYm9vbGVhbiBlbmFibGVkKTsKIAorICAgIGF0dHJpYnV0ZSBGb3JjZWRQcmVmZXJzUmVkdWNl
ZE1vdGlvblZhbHVlIGZvcmNlZFByZWZlcnNSZWR1Y2VkTW90aW9uVmFsdWU7CisKICAgICB2b2lk
IHNldElucHV0RXZlbnRzRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDdiYjUxMjc0MGU2YWJhMjIyNzM5OGJjZmM1MTky
YmM3MzNlNzdmZjguLmZmMGFiMjIyMDliYmNmYzAwY2MzYWRmNzY2OGQ3MTBmYTE5NTI1ZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTMzNzgsNCArMzM3OCwxMSBAQCB2
b2lkIEludGVybmFsczo6c2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihVc2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uIHVzZQogICAgIHBhZ2UtPnNldFVzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb24odXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiA9PSBVc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uOjpMVFIgPyBXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9u
OjpMVFIgOiBXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOjpSVEwpOwogfQog
CisjaWYgIVBMQVRGT1JNKENPQ09BKQorYm9vbCBJbnRlcm5hbHM6OnVzZXJQcmVmZXJzUmVkdWNl
ZE1vdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDg1YmYz
MTg5YTMxYjNmNjk0YWRmNjNmZTI2YjZhNDI1OTg5OWMzNWIuLjM1YThhYjcwMDU0MjY0MmY4NDQz
ZDVjMzA5YzU4NjFlNjczYTdmZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAt
NDk1LDYgKzQ5NSw4IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFVzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb24geyBMVFIsIFJUTCB9OwogICAgIHZvaWQgc2V0VXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbihVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKTsKIAorICAgIGJvb2wgdXNl
clByZWZlcnNSZWR1Y2VkTW90aW9uKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
SW50ZXJuYWxzKERvY3VtZW50Jik7CiAgICAgRG9jdW1lbnQqIGNvbnRleHREb2N1bWVudCgpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDIxNzlmNjliYzE5ODY0
ZjU3NzE5NzUxMDBjODM1NTgxNzMwZWE2YmYuLjM3MWI1ZTAyZWNiMTkyMTlhMmZkZDkzMTVjNWUx
MGJkMTYyNWFhYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTQ2Niw0
ICs0NjYsNiBAQCBlbnVtIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gewogICAgIEdDT2Jz
ZXJ2YXRpb24gb2JzZXJ2ZUdDKGFueSBvYnNlcnZlZCk7CiAKICAgICB2b2lkIHNldFVzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb24oVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB1c2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKTsKKworICAgIGJvb2xlYW4gdXNlclByZWZlcnNSZWR1Y2Vk
TW90aW9uKCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMubW0gYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5tbQppbmRleCAxYjk5MjFj
MTE0ZGMxNzA0ZjI5NDIyYjkyZDkwM2MwMjAzZjQ5M2UxLi40MThiY2Y3OGEzZDczODFiYmRiNzcx
YmY1Yzc3NzM1MzYwODZhYzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5tbQpAQCAt
MzIsNiArMzIsMTAgQEAKICNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIKICNpbmNsdWRlICJGcmFt
ZS5oIgogCisjaWYgUExBVEZPUk0oSU9TKQorI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBJbnRlcm5hbHM6OnVzZXJWaXNpYmxl
U3RyaW5nKGNvbnN0IERPTVVSTCYgdXJsKQpAQCAtMzksNCArNDMsMTcgQEAgU3RyaW5nIEludGVy
bmFsczo6dXNlclZpc2libGVTdHJpbmcoY29uc3QgRE9NVVJMJiB1cmwpCiAgICAgcmV0dXJuIGNv
bnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5jbGllbnQoKS0+dXNlclZpc2libGVT
dHJpbmcodXJsLmhyZWYoKSk7CiB9CiAKKyNpZiBQTEFURk9STShDT0NPQSkKK2Jvb2wgSW50ZXJu
YWxzOjp1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24oKSBjb25zdAoreworI2lmIFBMQVRGT1JNKElP
UykKKyAgICByZXR1cm4gVUlBY2Nlc3NpYmlsaXR5SXNSZWR1Y2VNb3Rpb25FbmFibGVkKCk7Cisj
ZWxpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTAxMjAwCisgICAgcmV0dXJuIFtbTlNXb3Jrc3BhY2Ugc2hhcmVkV29ya3NwYWNlXSBhY2Nlc3Np
YmlsaXR5RGlzcGxheVNob3VsZFJlZHVjZU1vdGlvbl07CisjZWxzZQorICAgIHJldHVybiBmYWxz
ZTsKKyNlbmRpZgorfQorI2VuZGlmCisKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3MTI5YmRjMGVmZDlkNzkwODY2MzY3
MGE1NTg0OTQ2YjUyZDIyYTFjLi45Mzk2Y2MwMmQ3YTJkYWVlNzRjZjVjMmRkYjJmMjIxNGE2N2Qy
NTU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMTAtMTEgIERlYW4gSmFja3NvbiAgPGRp
bm9AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBwcmVmZXJzLXJlZHVjZWQtbW90aW9u
IG1lZGlhIHF1ZXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjMyNTAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4NzA0MTI5PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE9uZSB0ZXN0IGNoZWNrcyB0
aGUgc3lzdGVtIHZhbHVlLiBUaGUgb3RoZXIgdGVzdCBvdmVycmlkZXMKKyAgICAgICAgdGhlIHN5
c3RlbSB2YWx1ZXMgdG8gbWFrZSBzdXJlIGFzIG11Y2ggYXMgcG9zc2libGUgaXMgd29ya2luZy4K
KworICAgICAgICAqIGZhc3QvbWVkaWEvbXEtcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLXByZWZlcnMtcmVkdWNlZC1t
b3Rpb24tZm9yY2VkLXZhbHVlLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
bWVkaWEvbXEtcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi1mb3JjZWQtdmFsdWUuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9tZWRpYS9tcS1wcmVmZXJzLXJlZHVjZWQtbW90aW9uLmh0bWw6IEFk
ZGVkLgorCiAyMDE2LTEwLTEwICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgog
CiAgICAgICAgIE1hcmtpbmcgc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Fib3J0LXJlcXVlc3Rz
LWNhbmNlbGxlZCogdGVzdHMgYXMgZmxha3kgb24gbWFjLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYS9tcS1wcmVmZXJzLXJlZHVjZWQtbW90aW9uLWV4cGVjdGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXByZWZlcnMtcmVkdWNlZC1tb3Rpb24tZXhwZWN0ZWQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42MDY1ODExOGUxYmI2M2U0ZWFjZmNiMGU2ZTNlZTc3YmEyNGY5MDkw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1wcmVmZXJzLXJl
ZHVjZWQtbW90aW9uLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPGh0bWw+Cis8aGVh
ZD4KKzx0aXRsZT5DU1M0IG1lZGlhIHF1ZXJ5IHRlc3Q6IHByZWZlcnMtcmVkdWNlZC1tb3Rpb24u
PC90aXRsZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisjYSB7IGNvbG9yOiBibGFjazsgfQor
I2IgeyBjb2xvcjogYmxhY2s7IH0KKyNjIHsgY29sb3I6IGJsYWNrOyB9CisjZCB7IGNvbG9yOiBi
bGFjazsgfQorPC9zdHlsZT4KKzxzY3JpcHQ+Cit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9h
ZCIsIGZ1bmN0aW9uICgpIHsKKworICAgIGlmICghd2luZG93LmludGVybmFscykgeworICAgICAg
ICBbImEiLCAiYiIsICJjIiwgImQiXS5mb3JFYWNoKGlkID0+IHsgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoaWQpLnRleHRDb250ZW50ID0gIlRoaXMgZXhwZWN0ZWQgcmVzdWx0IHJlcXVpcmVzIERS
VC9XS1RSLiI7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMudXNlclByZWZlcnNSZWR1Y2VkTW90aW9uKCkpCisgICAgICAgIFsiYSIsICJiIiwg
ImMiXS5mb3JFYWNoKGlkID0+IHsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnN0eWxlLmNv
bG9yID0gImdyZWVuIjsgfSk7CisgICAgZWxzZQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiZCIpLnN0eWxlLmNvbG9yID0gImdyZWVuIjsKKworfSwgZmFsc2UpOworPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHAgaWQ9ImEiPlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4g
aWYgdGhlIHVzZXIgcmVxdWVzdGVkIHJlZHVjZWQgbW90aW9uLiBCbGFjayBvdGhlcndpc2UuPC9w
PgorICA8cCBpZD0iYiI+VGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB0aGUgdXNlciByZXF1
ZXN0ZWQgcmVkdWNlZCBtb3Rpb24uIEJsYWNrIG90aGVyd2lzZS48L3A+CisgIDxwIGlkPSJjIj5U
aGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHRoZSB1c2VyIHJlcXVlc3RlZCByZWR1Y2VkIG1v
dGlvbi4gQmxhY2sgb3RoZXJ3aXNlLjwvcD4KKyAgPHAgaWQ9ImQiPlRoaXMgdGV4dCBzaG91bGQg
YmUgZ3JlZW4gaWYgdGhlIHVzZXIgaGFzIG5vdCByZXF1ZXN0ZWQgcmVkdWNlZCBtb3Rpb24uIEJs
YWNrIG90aGVyd2lzZS48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L21lZGlhL21xLXByZWZlcnMtcmVkdWNlZC1tb3Rpb24tZm9yY2VkLXZhbHVlLWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXByZWZlcnMtcmVkdWNlZC1t
b3Rpb24tZm9yY2VkLXZhbHVlLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTUxYzQ3NGI0OTMy
ZmY0MWMwNTg5YmIxMzg3YjA5M2NhM2Q1NjA3NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWEvbXEtcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi1mb3JjZWQtdmFsdWUtZXhw
ZWN0ZWQuaHRtbApAQCAtMCwwICsxLDE0IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNTUzQg
bWVkaWEgcXVlcnkgdGVzdDogcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi48L3RpdGxlPgorPHN0eWxl
IHR5cGU9InRleHQvY3NzIj4KK3AgeyBjb2xvcjogZ3JlZW47IH0KKzwvc3R5bGU+Cis8L2hlYWQ+
Cis8Ym9keT4KKyAgPHAgaWQ9ImEiPlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uPC9wPgorICA8
cCBpZD0iYiI+VGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi48L3A+CisgIDxwIGlkPSJjIj5UaGlz
IHRleHQgc2hvdWxkIGJlIGdyZWVuLjwvcD4KKyAgPHAgaWQ9ImQiPlRoaXMgdGV4dCBzaG91bGQg
YmUgZ3JlZW4uPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS9tcS1wcmVmZXJzLXJlZHVjZWQtbW90aW9uLWZvcmNlZC12YWx1ZS5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1wcmVmZXJzLXJlZHVjZWQtbW90aW9uLWZvcmNlZC12
YWx1ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjMDk1YTQ3ZGFjYjU3ODMwYTYzOGMyNGM5YjRmYjdkMjY2
NjY5YjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXByZWZl
cnMtcmVkdWNlZC1tb3Rpb24tZm9yY2VkLXZhbHVlLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPGh0
bWw+Cis8aGVhZD4KKzx0aXRsZT5DU1M0IG1lZGlhIHF1ZXJ5IHRlc3Q6IHByZWZlcnMtcmVkdWNl
ZC1tb3Rpb24uPC90aXRsZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitwIHsgY29sb3I6IGJs
YWNrOyB9Cis8L3N0eWxlPgorPHNjcmlwdD4KK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2Fk
IiwgZnVuY3Rpb24gKCkgeworICAgIGlmICghd2luZG93LmludGVybmFscykKKyAgICAgICAgcmV0
dXJuOworCisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5mb3JjZWRQcmVmZXJzUmVkdWNl
ZE1vdGlvblZhbHVlID0gIm9uIjsKKyAgICBpZiAod2luZG93Lm1hdGNoTWVkaWEoIihwcmVmZXJz
LXJlZHVjZWQtbW90aW9uKSIpLm1hdGNoZXMpCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJhIikuc3R5bGUuY29sb3IgPSAiZ3JlZW4iOworICAgIGlmICh3aW5kb3cubWF0Y2hNZWRp
YSgiKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkiKS5tYXRjaGVzKQorICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYiIpLnN0eWxlLmNvbG9yID0gImdyZWVuIjsKKworICAg
IHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3MuZm9yY2VkUHJlZmVyc1JlZHVjZWRNb3Rpb25WYWx1
ZSA9ICJvZmYiOworICAgIGlmICghd2luZG93Lm1hdGNoTWVkaWEoIihwcmVmZXJzLXJlZHVjZWQt
bW90aW9uKSIpLm1hdGNoZXMpCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjIiku
c3R5bGUuY29sb3IgPSAiZ3JlZW4iOworICAgIGlmICh3aW5kb3cubWF0Y2hNZWRpYSgiKHByZWZl
cnMtcmVkdWNlZC1tb3Rpb246IGRlZmF1bHQpIikubWF0Y2hlcykKKyAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImQiKS5zdHlsZS5jb2xvciA9ICJncmVlbiI7Cit9LCBmYWxzZSk7Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICA8cCBpZD0iYSI+VGhpcyB0ZXh0IHNob3VsZCBi
ZSBncmVlbi48L3A+CisgIDxwIGlkPSJiIj5UaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLjwvcD4K
KyAgPHAgaWQ9ImMiPlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uPC9wPgorICA8cCBpZD0iZCI+
VGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXByZWZlcnMtcmVkdWNlZC1tb3Rpb24uaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjNmOTk1YWVmMzA3MDhmMGVmZDlkNjNiOWQ0MTMxYWMwYWIyZTc0OGYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXByZWZlcnMtcmVkdWNl
ZC1tb3Rpb24uaHRtbApAQCAtMCwwICsxLDM1IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNT
UzQgbWVkaWEgcXVlcnkgdGVzdDogcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi48L3RpdGxlPgorPHN0
eWxlIHR5cGU9InRleHQvY3NzIj4KKyNhIHsgY29sb3I6IGJsYWNrOyB9CisjYiB7IGNvbG9yOiBi
bGFjazsgfQorI2MgeyBjb2xvcjogYmxhY2s7IH0KKyNkIHsgY29sb3I6IGJsYWNrOyB9CisKK0Bt
ZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbikgeworI2EgeyBjb2xvcjogZ3JlZW47IH0KK30K
KworQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsKKyNiIHsgY29sb3I6
IGdyZWVuOyB9Cit9CisKK0BtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogZGVmYXVsdCkg
eworI2QgeyBjb2xvcjogZ3JlZW47IH0KK30KKzwvc3R5bGU+Cis8c2NyaXB0Pgord2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbiAoKSB7CisgICAgaWYgKHdpbmRvdy5tYXRj
aE1lZGlhKCIocHJlZmVycy1yZWR1Y2VkLW1vdGlvbikiKS5tYXRjaGVzKQorICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiYyIpLnN0eWxlLmNvbG9yID0gImdyZWVuIjsKK30sIGZhbHNl
KTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxwIGlkPSJhIj5UaGlzIHRleHQgc2hv
dWxkIGJlIGdyZWVuIGlmIHRoZSB1c2VyIHJlcXVlc3RlZCByZWR1Y2VkIG1vdGlvbi4gQmxhY2sg
b3RoZXJ3aXNlLjwvcD4KKyAgPHAgaWQ9ImIiPlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYg
dGhlIHVzZXIgcmVxdWVzdGVkIHJlZHVjZWQgbW90aW9uLiBCbGFjayBvdGhlcndpc2UuPC9wPgor
ICA8cCBpZD0iYyI+VGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB0aGUgdXNlciByZXF1ZXN0
ZWQgcmVkdWNlZCBtb3Rpb24uIEJsYWNrIG90aGVyd2lzZS48L3A+CisgIDxwIGlkPSJkIj5UaGlz
IHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHRoZSB1c2VyIGhhcyBub3QgcmVxdWVzdGVkIHJlZHVj
ZWQgbW90aW9uLiBCbGFjayBvdGhlcndpc2UuPC9wPgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="314441"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>