<?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>147269</bug_id>
          
          <creation_ts>2015-07-24 11:46:54 -0700</creation_ts>
          <short_desc>[iOS] REGRESSION(r168075): Fullscreen web video doesn&apos;t pause on screen lock</short_desc>
          <delta_ts>2015-07-28 15:31:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, Regression</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jeremyj-wk</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jonlee</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1112041</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-07-24 11:46:54 -0700</bug_when>
    <thetext>When a video is playing in full screen mode and the device is locked, the video continues playing. PiP (picture in picture) mode overrides the EnterBackground notification and just ignores it and does not suspend the video playing.

Media elements should pause when the application is going to EnterBackground under lock regardless whether it is in full screen or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112042</commentid>
    <comment_count>1</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-07-24 11:47:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/19892014&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112054</commentid>
    <comment_count>2</comment_count>
      <attachid>257467</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-07-24 12:19:28 -0700</bug_when>
    <thetext>Created attachment 257467
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112062</commentid>
    <comment_count>3</comment_count>
      <attachid>257470</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-07-24 12:50:30 -0700</bug_when>
    <thetext>Created attachment 257470
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112074</commentid>
    <comment_count>4</comment_count>
      <attachid>257473</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-07-24 13:34:15 -0700</bug_when>
    <thetext>Created attachment 257473
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112484</commentid>
    <comment_count>5</comment_count>
      <attachid>257473</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-07-27 13:12:58 -0700</bug_when>
    <thetext>Comment on attachment 257473
Patch

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

&gt; Source/WebCore/platform/audio/PlatformMediaSession.cpp:99
&gt; +void PlatformMediaSession::endSuspend(EndInterruptionFlags flags)
&gt; +{
&gt; +    State stateToRestore = m_stateToRestore;
&gt; +    m_stateToRestore = Idle;
&gt; +    setState(Paused);
&gt; +
&gt; +    bool shouldResume = flags &amp; MayResumePlaying &amp;&amp; stateToRestore == Playing;
&gt; +    client().mayResumePlayback(shouldResume);
&gt; +}

This refactoring looks unnecessary, as endSuspend() isn&apos;t called from anywhere other than endInterruption().

&gt; Source/WebCore/platform/audio/PlatformMediaSession.cpp:121
&gt; +    if (!m_interruptionCount) {
&gt; +        ASSERT(false);

This ASSERT(false) is weird.  I think you may want a ASSERT_NOT_REACHED().

&gt; Source/WebCore/platform/audio/PlatformMediaSession.cpp:122
&gt; +        ++m_interruptionCount;

So, if m_interruptionCount == 0, m_interruptionCount will not increment?  Won&apos;t this lead to a mismatch when endInterruption() is called?

&gt; Source/WebCore/platform/audio/PlatformMediaSession.cpp:124
&gt; +    } else if (shouldInterrupt(type))
&gt; +        return;

Wait, so if we shouldInterrupt(type), we return early without calling beginSuspend()?

All this is super confusing, and not obvious from the written logic. If this is correct, we&apos;re going to need to add some explanatory comments, or re-write the logic so it&apos;s less confusing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112533</commentid>
    <comment_count>6</comment_count>
      <attachid>257473</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-07-27 15:30:11 -0700</bug_when>
    <thetext>Comment on attachment 257473
Patch

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

&gt;&gt; Source/WebCore/platform/audio/PlatformMediaSession.cpp:121
&gt;&gt; +        ASSERT(false);
&gt; 
&gt; This ASSERT(false) is weird.  I think you may want a ASSERT_NOT_REACHED().

ASSERT_NOT_REACHED() is used instead of ASSERT(false).

&gt;&gt; Source/WebCore/platform/audio/PlatformMediaSession.cpp:122
&gt;&gt; +        ++m_interruptionCount;
&gt; 
&gt; So, if m_interruptionCount == 0, m_interruptionCount will not increment?  Won&apos;t this lead to a mismatch when endInterruption() is called?

Logic is simplified. beginInterruption() has to be called before calling forceInterruption(). forceInterruption() will not increment m_interruptionCount. And if m_interruptionCount is zero, forceInterruption() will assert and return.

&gt;&gt; Source/WebCore/platform/audio/PlatformMediaSession.cpp:124
&gt;&gt; +        return;
&gt; 
&gt; Wait, so if we shouldInterrupt(type), we return early without calling beginSuspend()?
&gt; 
&gt; All this is super confusing, and not obvious from the written logic. If this is correct, we&apos;re going to need to add some explanatory comments, or re-write the logic so it&apos;s less confusing.

I am going to add a comment before this if-statemnet saying: &quot;The purpose of this function is to override the decision which was made by beginInterruption(). If it was decided to interrupt the media session there, nothing should be done here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112535</commentid>
    <comment_count>7</comment_count>
      <attachid>257601</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-07-27 15:30:27 -0700</bug_when>
    <thetext>Created attachment 257601
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112540</commentid>
    <comment_count>8</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-07-27 15:36:37 -0700</bug_when>
    <thetext>Unfortunately this patch does not fix the PiP case with locking the device. When the HTML5 video element is playing in full screen mode and the Home button is pressed, the media control goes into PiP mode. This is the case where media control is minimized and the Springboard is the foreground application. If the device is locked, MobileSafari application does not receive any notification for being deactivated. It seems it is a UIKit issue and I am not sure if it should be addressed separately or addressed in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112557</commentid>
    <comment_count>9</comment_count>
      <attachid>257601</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-07-27 15:54:18 -0700</bug_when>
    <thetext>Comment on attachment 257601
Patch

Make this patch WIP till I figure out the solution for the PiP locking case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112708</commentid>
    <comment_count>10</comment_count>
      <attachid>257601</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-07-28 08:41:27 -0700</bug_when>
    <thetext>Comment on attachment 257601
Patch

Since the time for iOS 9 is now limited, let&apos;s have this one reviewed while finding an incremental fix for the Picture-in-Picture case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112825</commentid>
    <comment_count>11</comment_count>
      <attachid>257601</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-07-28 13:07:27 -0700</bug_when>
    <thetext>Comment on attachment 257601
Patch

This looks fine to me, but I am not a WK2 reviewer so someone else will have to give the official r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112844</commentid>
    <comment_count>12</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-07-28 13:39:29 -0700</bug_when>
    <thetext>Re-setting the r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112851</commentid>
    <comment_count>13</comment_count>
      <attachid>257601</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-07-28 13:49:12 -0700</bug_when>
    <thetext>Comment on attachment 257601
Patch

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

&gt; Source/WebCore/ChangeLog:19
&gt; +        (WebCore::PlatformMediaSession::shouldInterrupt): Move the condition 

Can we update this Changelog to match the new names of the functions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112856</commentid>
    <comment_count>14</comment_count>
      <attachid>257601</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-07-28 13:58:02 -0700</bug_when>
    <thetext>Comment on attachment 257601
Patch

I also give this an unofficial r+. (Unofficial due to the WebKit2 changes.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112859</commentid>
    <comment_count>15</comment_count>
      <attachid>257680</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-07-28 14:05:23 -0700</bug_when>
    <thetext>Created attachment 257680
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112860</commentid>
    <comment_count>16</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-07-28 14:09:15 -0700</bug_when>
    <thetext>Change(In reply to comment #13)
&gt; Comment on attachment 257601 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=257601&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:19
&gt; &gt; +        (WebCore::PlatformMediaSession::shouldInterrupt): Move the condition 
&gt; 
&gt; Can we update this Changelog to match the new names of the functions?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112878</commentid>
    <comment_count>17</comment_count>
      <attachid>257680</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-07-28 14:35:20 -0700</bug_when>
    <thetext>Comment on attachment 257680
Patch

r=me as WK2 owner given Eric and Jer&apos;s approval.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112901</commentid>
    <comment_count>18</comment_count>
      <attachid>257680</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-28 15:31:21 -0700</bug_when>
    <thetext>Comment on attachment 257680
Patch

Clearing flags on attachment: 257680

Committed r187522: &lt;http://trac.webkit.org/changeset/187522&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112902</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-28 15:31:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257467</attachid>
            <date>2015-07-24 12:19:28 -0700</date>
            <delta_ts>2015-07-24 12:50:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147269-20150724121811.patch</filename>
            <type>text/plain</type>
            <size>17761</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NzM0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE1LTA3LTI0ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gUkVH
UkVTU0lPTihyMTY4MDc1KTogRnVsbHNjcmVlbiB3ZWIgdmlkZW8gZG9lc24ndCBwYXVzZSBvbiBz
Y3JlZW4gbG9jaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ3MjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTWVkaWEgZWxlbWVudHMgc2hvdWxkIHBhdXNlIHdoZW4gdGhlIGFwcGxpY2F0aW9uIGlzIGdv
aW5nIHRvIEVudGVyQmFja2dyb3VuZAorICAgICAgICB1bmRlciBsb2NrIHJlZ2FyZGxlc3Mgd2hl
dGhlciBpdCBpcyBpbiBmdWxsIHNjcmVlbiBvciBub3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpiZWdpblN1c3BlbmQpOiBUaGlzIGNvZGUgd2FzIG1vdmVkIGZyb20gCisgICAgICAg
IGJlZ2luSW50ZXJydXB0aW9uKCkuCisgICAgICAgICAgICAgICAgCisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6ZW5kU3VzcGVuZCk6IFRoaXMgY29kZSB3YXMgbW92ZWQg
ZnJvbSAKKyAgICAgICAgZW5kSW50ZXJydXB0aW9uKCkuCisgICAgICAgIAorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OnNob3VsZEludGVycnVwdCk6IE1vdmUgdGhlIGNv
bmRpdGlvbiAKKyAgICAgICAgd2hpY2ggYWxsb3dzIHRoZSBtZWRpYSBzZXNzaW9uIGludGVycnVw
dGlvbiB0byBhIHNlcGFyYXRlIGZ1bmN0aW9uLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbik6IENhbGwgdGhlIGZ1bmN0
aW9ucworICAgICAgICBzaG91bGRJbnRlcnJ1cHQoKSBhbmQgYmVnaW5TdXNwZW5kKCkuCisgICAg
ICAgIAorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmZvcmNlSW50ZXJy
dXB0aW9uKTogVGhpcyBmdW5jdGlvbiB3aWxsCisgICAgICAgIGJlIGNhbGxlZCBmcm9tIFBsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKQor
ICAgICAgICB0byBvdmVycmlkZSB0aGUgZGVjaXNpb24gd2hpY2ggaXMgbWFkZSBieSBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRpb24oKQorICAgICAgICBpZiB0aGUgYXBwbGlj
YXRpb24gaXNTdXNwZW5kZWRVbmRlckxvY2suCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVNlc3Npb246OmVuZEludGVycnVwdGlvbik6IENhbGwgdGhlIGZ1bmN0aW9u
CisgICAgICAgIGVuZFN1c3BlbmQoKS4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKToKKyAgICAg
ICAgW1VJQXBwIGlzU3VzcGVuZGVkVW5kZXJMb2NrXSBpcyBvbmx5IHZhbGlkIHdoZW4gaXQgaXMg
Y2FsbGVkIHdoZW4gdGhlCisgICAgICAgIFVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmRO
b3RpZmljYXRpb24gaXMgcmVjZWl2ZWQuIFdlIG5lZWQgdG8gZm9yY2UKKyAgICAgICAgaW50ZXJy
dXB0aW5nIHRoZSBtZWRpYSBzZXNzaW9ucyBpZiB0aGUgYXBwbGljYXRpb24gaXNTdXNwZW5kZWRV
bmRlckxvY2sKKyAgICAgICAgYW5kIFVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZp
Y2F0aW9uIHdhcyBpZ25vcmVkIGJlY2F1c2Ugb2YgUGlQLgorCisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbToKKyAgICAgICAgKC1bV2ViTWVkaWFT
ZXNzaW9uSGVscGVyIGluaXRXaXRoQ2FsbGJhY2s6XSk6CisgICAgICAgICgtW1dlYk1lZGlhU2Vz
c2lvbkhlbHBlciBhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDpdKTogTGlzdGVuIHRvIAor
ICAgICAgICBVSUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uIGFuZCBt
YWtlIGEgY2FsbCBvbiB0aGUgd2ViCisgICAgICAgIHRocmVhZCB0byBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCkgCisgICAgICAgIGFu
ZCBwYXNzIHRoZSBpc1N1c3BlbmRlZFVuZGVyTG9jayBmbGFnIHdoaWNoIGlzIHF1ZXJpZWQgb24g
dGhlIFVJUHJvY2Vzcy4KKwogMjAxNS0wNy0yNCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9A
YXBwbGUuY29tPgogCiAgICAgICAgIENTUyAiY29udGVudCIgcHJvcGVydHkgaXMgbWlzc2luZyBp
biBnZXRDb21wdXRlZFN0eWxlcwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcAkocmV2aXNpb24gMTg3MjMyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03OSwxMyArNzksOCBAQCB2b2lkIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpzZXRTdGF0ZShTdGF0CiAgICAgbV9zdGF0ZSA9IHN0YXRlOwogfQogCi12b2lkIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbihJbnRlcnJ1cHRpb25UeXBlIHR5cGUp
Cit2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpiZWdpblN1c3BlbmQoKQogewotICAgIExPRyhN
ZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbiglcCksIHN0YXRl
ID0gJXMsIGludGVycnVwdGlvbiBjb3VudCA9ICVpIiwgdGhpcywgc3RhdGVOYW1lKG1fc3RhdGUp
LCBtX2ludGVycnVwdGlvbkNvdW50KTsKLQotICAgIGlmICgrK21faW50ZXJydXB0aW9uQ291bnQg
PiAxIHx8ICh0eXBlID09IEVudGVyaW5nQmFja2dyb3VuZCAmJiBjbGllbnQoKS5vdmVycmlkZUJh
Y2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKCkpKQotICAgICAgICByZXR1cm47Ci0KICAgICBt
X3N0YXRlVG9SZXN0b3JlID0gc3RhdGUoKTsKICAgICBtX25vdGlmeWluZ0NsaWVudCA9IHRydWU7
CiAgICAgc2V0U3RhdGUoSW50ZXJydXB0ZWQpOwpAQCAtOTMsNiArODgsNDQgQEAgdm9pZCBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cAogICAgIG1fbm90aWZ5aW5nQ2xpZW50ID0g
ZmFsc2U7CiB9CiAKK3ZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OmVuZFN1c3BlbmQoRW5kSW50
ZXJydXB0aW9uRmxhZ3MgZmxhZ3MpCit7CisgICAgU3RhdGUgc3RhdGVUb1Jlc3RvcmUgPSBtX3N0
YXRlVG9SZXN0b3JlOworICAgIG1fc3RhdGVUb1Jlc3RvcmUgPSBJZGxlOworICAgIHNldFN0YXRl
KFBhdXNlZCk7CisKKyAgICBib29sIHNob3VsZFJlc3VtZSA9IGZsYWdzICYgTWF5UmVzdW1lUGxh
eWluZyAmJiBzdGF0ZVRvUmVzdG9yZSA9PSBQbGF5aW5nOworICAgIGNsaWVudCgpLm1heVJlc3Vt
ZVBsYXliYWNrKHNob3VsZFJlc3VtZSk7Cit9CisKK2Jvb2wgUGxhdGZvcm1NZWRpYVNlc3Npb246
OnNob3VsZEludGVycnVwdChJbnRlcnJ1cHRpb25UeXBlIHR5cGUpCit7CisgICAgcmV0dXJuIHR5
cGUgIT0gRW50ZXJpbmdCYWNrZ3JvdW5kIHx8ICFjbGllbnQoKS5vdmVycmlkZUJhY2tncm91bmRQ
bGF5YmFja1Jlc3RyaWN0aW9uKCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OmJl
Z2luSW50ZXJydXB0aW9uKEludGVycnVwdGlvblR5cGUgdHlwZSkKK3sKKyAgICBMT0coTWVkaWEs
ICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRpb24oJXApLCBzdGF0ZSA9ICVz
LCBpbnRlcnJ1cHRpb24gY291bnQgPSAlaSIsIHRoaXMsIHN0YXRlTmFtZShtX3N0YXRlKSwgbV9p
bnRlcnJ1cHRpb25Db3VudCk7CisKKyAgICBpZiAoKyttX2ludGVycnVwdGlvbkNvdW50ID4gMSB8
fCAhc2hvdWxkSW50ZXJydXB0KHR5cGUpKQorICAgICAgICByZXR1cm47CisKKyAgICBiZWdpblN1
c3BlbmQoKTsKK30KKwordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Zm9yY2VJbnRlcnJ1cHRp
b24oSW50ZXJydXB0aW9uVHlwZSB0eXBlKQoreworICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpmb3JjZUludGVycnVwdGlvbiglcCksIHN0YXRlID0gJXMsIGludGVycnVwdGlv
biBjb3VudCA9ICVpIiwgdGhpcywgc3RhdGVOYW1lKG1fc3RhdGUpLCBtX2ludGVycnVwdGlvbkNv
dW50KTsKKworICAgIGlmICghbV9pbnRlcnJ1cHRpb25Db3VudCkgeworICAgICAgICBBU1NFUlQo
ZmFsc2UpOworICAgICAgICArK21faW50ZXJydXB0aW9uQ291bnQ7CisgICAgfSBlbHNlIGlmIChz
aG91bGRJbnRlcnJ1cHQodHlwZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGJlZ2luU3VzcGVu
ZCgpOworfQorCiB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjplbmRJbnRlcnJ1cHRpb24oRW5k
SW50ZXJydXB0aW9uRmxhZ3MgZmxhZ3MpCiB7CiAgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRp
YVNlc3Npb246OmVuZEludGVycnVwdGlvbiglcCkgLSBmbGFncyA9ICVpLCBzdGF0ZVRvUmVzdG9y
ZSA9ICVzLCBpbnRlcnJ1cHRpb24gY291bnQgPSAlaSIsIHRoaXMsIChpbnQpZmxhZ3MsIHN0YXRl
TmFtZShtX3N0YXRlVG9SZXN0b3JlKSwgbV9pbnRlcnJ1cHRpb25Db3VudCk7CkBAIC0xMDUsMTIg
KzEzOCw3IEBAIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OmVuZEludGVycnVwdGkKICAgICBp
ZiAoLS1tX2ludGVycnVwdGlvbkNvdW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBTdGF0ZSBz
dGF0ZVRvUmVzdG9yZSA9IG1fc3RhdGVUb1Jlc3RvcmU7Ci0gICAgbV9zdGF0ZVRvUmVzdG9yZSA9
IElkbGU7Ci0gICAgc2V0U3RhdGUoUGF1c2VkKTsKLQotICAgIGJvb2wgc2hvdWxkUmVzdW1lID0g
ZmxhZ3MgJiBNYXlSZXN1bWVQbGF5aW5nICYmIHN0YXRlVG9SZXN0b3JlID09IFBsYXlpbmc7Ci0g
ICAgY2xpZW50KCkubWF5UmVzdW1lUGxheWJhY2soc2hvdWxkUmVzdW1lKTsKKyAgICBlbmRTdXNw
ZW5kKGZsYWdzKTsKIH0KIAogYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbEJl
Z2luUGxheWJhY2soKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZv
cm1NZWRpYVNlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCShyZXZpc2lvbiAxODcyMzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC03OSwxMSArNzksMTggQEAgcHVibGljOgogICAgICAgICBOb0ZsYWdzID0gMCwKICAg
ICAgICAgTWF5UmVzdW1lUGxheWluZyA9IDEgPDwgMCwKICAgICB9OworCisgICAgdm9pZCBiZWdp
blN1c3BlbmQoKTsKKyAgICB2b2lkIGVuZFN1c3BlbmQoRW5kSW50ZXJydXB0aW9uRmxhZ3MpOwor
CisgICAgYm9vbCBzaG91bGRJbnRlcnJ1cHQoSW50ZXJydXB0aW9uVHlwZSk7CiAgICAgdm9pZCBi
ZWdpbkludGVycnVwdGlvbihJbnRlcnJ1cHRpb25UeXBlKTsKKyAgICB2b2lkIGZvcmNlSW50ZXJy
dXB0aW9uKEludGVycnVwdGlvblR5cGUpOwogICAgIHZvaWQgZW5kSW50ZXJydXB0aW9uKEVuZElu
dGVycnVwdGlvbkZsYWdzKTsKIAogICAgIHZvaWQgYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kKCkgY29uc3Q7CiAgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckJhY2tncm91bmQoKSBj
b25zdDsKKyAgICB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKGJvb2wgaXNTdXNw
ZW5kZWRVbmRlckxvY2spIGNvbnN0OwogCiAgICAgYm9vbCBjbGllbnRXaWxsQmVnaW5QbGF5YmFj
aygpOwogICAgIGJvb2wgY2xpZW50V2lsbFBhdXNlUGxheWJhY2soKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyLmNwcAkocmV2aXNpb24gMTg3MjMyKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgzLDYgKzI4MywyMCBAQCB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6
YXBwbGljCiAgICAgfQogfQogCit2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6YXBw
bGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoYm9vbCBpc1N1c3BlbmRlZFVuZGVyTG9jaykgY29u
c3QKK3sKKyAgICBMT0coTWVkaWEsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFwcGxp
Y2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kIik7CisKKyAgICBpZiAoIWlzU3VzcGVuZGVkVW5kZXJM
b2NrKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8UGxhdGZvcm1NZWRpYVNlc3Npb24q
PiBzZXNzaW9ucyA9IG1fc2Vzc2lvbnM7CisgICAgZm9yIChhdXRvKiBzZXNzaW9uIDogc2Vzc2lv
bnMpIHsKKyAgICAgICAgaWYgKG1fcmVzdHJpY3Rpb25zW3Nlc3Npb24tPm1lZGlhVHlwZSgpXSAm
IEJhY2tncm91bmRQcm9jZXNzUGxheWJhY2tSZXN0cmljdGVkKQorICAgICAgICAgICAgc2Vzc2lv
bi0+Zm9yY2VJbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkVudGVyaW5nQmFja2dy
b3VuZCk7CisgICAgfQorfQorCiB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6YXBw
bGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCkgY29uc3QKIHsKICAgICBMT0coTWVkaWEsICJQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3Vu
ZCIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgJKHJldmlzaW9uIDE4NzIzMikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCkgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckJhY2tncm91bmQoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5k
KGJvb2wgaXNTdXNwZW5kZWRVbmRlckxvY2spIGNvbnN0OwogCiAgICAgdm9pZCBzdG9wQWxsTWVk
aWFQbGF5YmFja0ZvckRvY3VtZW50KGNvbnN0IERvY3VtZW50Kik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzdG9wQWxsTWVkaWFQbGF5YmFja0ZvclByb2Nlc3MoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1h
bmFnZXJJT1MuaAkocmV2aXNpb24gMTg3MjMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaAkod29ya2luZyBjb3B5KQpAQCAtMzcs
NiArMzcsNyBAQCBPQkpDX0NMQVNTIFdlYk1lZGlhU2Vzc2lvbkhlbHBlcjsKIGV4dGVybiBOU1N0
cmluZyogV2ViVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb247CiBleHRl
cm4gTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kTm90aWZpY2F0
aW9uOwogZXh0ZXJuIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90
aWZpY2F0aW9uOworZXh0ZXJuIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNr
Z3JvdW5kTm90aWZpY2F0aW9uOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9T
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRp
YVNlc3Npb25NYW5hZ2VySU9TLm1tCShyZXZpc2lvbiAxODcyMzIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQkod29ya2luZyBj
b3B5KQpAQCAtNDEsNiArNDEsNyBAQAogI2ltcG9ydCA8TWVkaWFQbGF5ZXIvTVBOb3dQbGF5aW5n
SW5mb0NlbnRlci5oPgogI2ltcG9ydCA8TWVkaWFQbGF5ZXIvTVBWb2x1bWVWaWV3Lmg+CiAjaW1w
b3J0IDxVSUtpdC9VSUFwcGxpY2F0aW9uLmg+CisjaW1wb3J0IDxVSUtpdC9VSUFwcGxpY2F0aW9u
X1ByaXZhdGUuaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgogI2ltcG9ydCA8d3RmL1JBTVNp
emUuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTYxLDExICs2MiwxMyBAQCBTT0ZU
X0xJTktfQ0xBU1MoVUlLaXQsIFVJQXBwbGljYXRpb24pCiBTT0ZUX0xJTktfUE9JTlRFUihVSUtp
dCwgVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24sIE5TU3RyaW5nICop
CiBTT0ZUX0xJTktfUE9JTlRFUihVSUtpdCwgVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91
bmROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihVSUtpdCwgVUlB
cHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZU5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKK1NPRlRf
TElOS19QT0lOVEVSKFVJS2l0LCBVSUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZp
Y2F0aW9uLCBOU1N0cmluZyAqKQogCiAjZGVmaW5lIFVJQXBwbGljYXRpb24gZ2V0VUlBcHBsaWNh
dGlvbkNsYXNzKCkKICNkZWZpbmUgVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmlj
YXRpb24gZ2V0VUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24oKQogI2Rl
ZmluZSBVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbiBnZXRVSUFw
cGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbigpCiAjZGVmaW5lIFVJQXBw
bGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24gZ2V0VUlBcHBsaWNhdGlvbkRpZEJl
Y29tZUFjdGl2ZU5vdGlmaWNhdGlvbigpCisjZGVmaW5lIFVJQXBwbGljYXRpb25EaWRFbnRlckJh
Y2tncm91bmROb3RpZmljYXRpb24gZ2V0VUlBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZE5v
dGlmaWNhdGlvbigpCiAKIFNPRlRfTElOS19GUkFNRVdPUksoTWVkaWFQbGF5ZXIpCiBTT0ZUX0xJ
TktfQ0xBU1MoTWVkaWFQbGF5ZXIsIE1QQVZSb3V0aW5nQ29udHJvbGxlcikKQEAgLTg3LDYgKzkw
LDcgQEAgU09GVF9MSU5LX1BPSU5URVIoTWVkaWFQbGF5ZXIsIE1QVm9sdW1lVgogV0VCQ09SRV9F
WFBPUlQgTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0
aW9uID0gQCJXZWJVSUFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZU5vdGlmaWNhdGlvbiI7CiBX
RUJDT1JFX0VYUE9SVCBOU1N0cmluZyogV2ViVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91
bmROb3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kTm90
aWZpY2F0aW9uIjsKIFdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uRGlk
QmVjb21lQWN0aXZlTm90aWZpY2F0aW9uID0gQCJXZWJVSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0
aXZlTm90aWZpY2F0aW9uIjsKK1dFQkNPUkVfRVhQT1JUIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0
aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uID0gQCJXZWJVSUFwcGxpY2F0aW9uRGlk
RW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uIjsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKQEAgLTEwMyw2ICsxMDcsNyBAQCAtICh2b2lkKWNsZWFyQ2FsbGJhY2s7CiAtICh2b2lkKWlu
dGVycnVwdGlvbjooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247CiAtICh2b2lkKWFwcGxp
Y2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZDooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247
CiAtICh2b2lkKWFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZTooTlNOb3RpZmljYXRpb24gKilu
b3RpZmljYXRpb247CistICh2b2lkKWFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kOihOU05v
dGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKIC0gKEJPT0wpaGFzV2lyZWxlc3NUYXJnZXRzQXZh
aWxhYmxlOwogLSAodm9pZClzdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzOwogLSAodm9pZClz
dG9wTW9uaXRvcmluZ0FpclBsYXlSb3V0ZXM7CkBAIC0yOTMsNiArMjk4LDggQEAgLSAoaWQpaW5p
dFdpdGhDYWxsYmFjazooTWVkaWFTZXNzaW9uTWFuYQogICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6
c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmU6KSBuYW1l
OldlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07
CiAgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNh
dGlvbldpbGxSZXNpZ25BY3RpdmU6KSBuYW1lOlVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZl
Tm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwogICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBz
ZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlOikgbmFtZTpXZWJV
SUFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKKyAg
ICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9u
RGlkRW50ZXJCYWNrZ3JvdW5kOikgbmFtZTpVSUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5k
Tm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOworICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBz
ZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQ6KSBuYW1lOldl
YlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07
CiAKICAgICBbc2VsZiBhbGxvY2F0ZVZvbHVtZVZpZXddOwogCkBAIC00NDgsNyArNDU1LDcgQEAg
LSAodm9pZClhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6KE5TTgogICAgIFdlYlRocmVhZFJ1
biheewogICAgICAgICBpZiAoIV9jYWxsYmFjaykKICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgCisKICAgICAgICAgX2NhbGxiYWNrLT5hcHBsaWNhdGlvbldpbGxFbnRlckJhY2tncm91bmQo
KTsKICAgICB9KTsKIH0KQEAgLTQ2OSw2ICs0NzYsMjMgQEAgLSAodm9pZCl3aXJlbGVzc1JvdXRl
c0F2YWlsYWJsZURpZENoYW5nZQogICAgICAgICBfY2FsbGJhY2stPmV4dGVybmFsT3V0cHV0RGV2
aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKCk7CiAgICAgfSk7CiB9CisKKy0gKHZvaWQpYXBwbGljYXRp
b25EaWRFbnRlckJhY2tncm91bmQ6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCit7Cisg
ICAgaWYgKCFfY2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIExPRyhNZWRpYSwgIi1b
V2ViTWVkaWFTZXNzaW9uSGVscGVyIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kXSIpOwor
CisgICAgQk9PTCBpc1N1c3BlbmRlZFVuZGVyTG9jayA9IFtbW25vdGlmaWNhdGlvbiB1c2VySW5m
b10gb2JqZWN0Rm9yS2V5OkAiaXNTdXNwZW5kZWRVbmRlckxvY2siXSBib29sVmFsdWVdOworCisg
ICAgV2ViVGhyZWFkUnVuKF57CisgICAgICAgIGlmICghX2NhbGxiYWNrKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIF9jYWxsYmFjay0+YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91
bmQoaXNTdXNwZW5kZWRVbmRlckxvY2spOworICAgIH0pOworfQogQGVuZAogCiAjZW5kaWYgLy8g
UExBVEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTg3MzQ5KQorKysgU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTUt
MDctMjQgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAg
ICAgICBbaU9TXSBSRUdSRVNTSU9OKHIxNjgwNzUpOiBGdWxsc2NyZWVuIHdlYiB2aWRlbyBkb2Vz
bid0IHBhdXNlIG9uIHNjcmVlbiBsb2NrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDcyNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNZWRpYSBlbGVtZW50cyBzaG91bGQgcGF1c2Ugd2hlbiB0aGUgYXBw
bGljYXRpb24gaXMgZ29pbmcgdG8gRW50ZXJCYWNrZ3JvdW5kCisgICAgICAgIHVuZGVyIGxvY2sg
cmVnYXJkbGVzcyB3aGV0aGVyIGl0IGlzIGluIGZ1bGwgc2NyZWVuIG9yIG5vdC4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKToKKyAgICAgICAgW1VJ
QXBwIGlzU3VzcGVuZGVkVW5kZXJMb2NrXSBjYW4gb25seSBiZSBjYWxsZWQgaW4gdGhlIFVJUHJv
Y2Vzcy4gV2UgbmVlZAorICAgICAgICB0byBjYWxsIGl0IGhlcmUgYW5kIHBhc3MgdG8gdGhlIFdl
YlBhZ2UgaW4gdGhlIFdlYlByb2Nlc3MgYXMgcGFydCBvZiB0aGUKKyAgICAgICAgQXBwbGljYXRp
b25EaWRFbnRlckJhY2tncm91bmQgbWVzc2FnZS4KKyAgICAgICAgCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjogQWRkIHRoZSBuZXcgcGFyYW1ldGVyOgorICAgICAgICAnaXNTdXNw
ZW5kZWRVbmRlckxvY2snIHRvIHRoZSBBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCBtZXNz
YWdlLgorICAgICAgICAKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNr
Z3JvdW5kKTogT24gaU9TLCB0aGUgV2ViUGFnZSBuZWVkcworICAgICAgICB0byBub3RpZnkgdGhl
IE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MgdGhhdCBpdCByZWNlaXZlcyB0aGUgbWVzc2FnZSAKKyAg
ICAgICAgQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQuCisKIDIwMTUtMDctMjQgIFNpbW9u
IEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVjb2RlLm5ldCBn
ZXRzIGludG8gYSBjb250aW51YWwgcmVzaXplIGxvb3AgaW4gc3BsaXQgZnVsbHNjcmVlbgpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0J
KHJldmlzaW9uIDE4NzIzMikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0ICJS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uLmgiCisjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAiVXNlckRhdGEuaCIK
ICNpbXBvcnQgIlZpZXdVcGRhdGVEaXNwYXRjaGVyTWVzc2FnZXMuaCIKICNpbXBvcnQgIldLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlckludGVybmFsLmgiCkBAIC02MDYsNyArNjA3LDggQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZFVwZGF0ZUJsb2NrU2VsZWN0aQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKQogewotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6QXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKSwgbV9w
YWdlSUQpOworICAgIGJvb2wgaXNTdXNwZW5kZWRVbmRlckxvY2sgPSBbVUlBcHAgaXNTdXNwZW5k
ZWRVbmRlckxvY2tdOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QXBw
bGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoaXNTdXNwZW5kZWRVbmRlckxvY2spLCBtX3BhZ2VJ
RCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91
bmQoKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CShyZXZpc2lvbiAxODcyMzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03OTgsNyArNzk4LDcgQEAgcHVibGljOgogICAg
IGJvb2wgc2NhbGVXYXNTZXRCeVVJUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fc2NhbGVXYXNT
ZXRCeVVJUHJvY2VzczsgfQogICAgIHZvaWQgd2lsbFN0YXJ0VXNlclRyaWdnZXJlZFpvb21pbmco
KTsKICAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZSgpOwotICAgIHZvaWQgYXBw
bGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKTsKKyAgICB2b2lkIGFwcGxpY2F0aW9uRGlkRW50
ZXJCYWNrZ3JvdW5kKGJvb2wgaXNTdXNwZW5kZWRVbmRlckxvY2spOwogICAgIHZvaWQgYXBwbGlj
YXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCk7CiAgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29t
ZUFjdGl2ZSgpOwogICAgIHZvaWQgem9vbVRvUmVjdChXZWJDb3JlOjpGbG9hdFJlY3QsIGRvdWJs
ZSBtaW5pbXVtU2NhbGUsIGRvdWJsZSBtYXhpbXVtU2NhbGUpOwpJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJl
dmlzaW9uIDE4NzIzMikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldEFzc2lzdGVkTm9kZVZhbHVlQXNO
dW1iZXIoZG91YmxlIHZhbHVlKQogICAgIFNldEFzc2lzdGVkTm9kZVNlbGVjdGVkSW5kZXgodWlu
dDMyX3QgaW5kZXgsIGJvb2wgYWxsb3dNdWx0aXBsZVNlbGVjdGlvbikKICAgICBBcHBsaWNhdGlv
bldpbGxSZXNpZ25BY3RpdmUoKQotICAgIEFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCkK
KyAgICBBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChib29sIGlzU3VzcGVuZGVkVW5kZXJM
b2NrKQogICAgIEFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpCiAgICAgQXBwbGljYXRp
b25EaWRCZWNvbWVBY3RpdmUoKQogICAgIENvbnRlbnRTaXplQ2F0ZWdvcnlEaWRDaGFuZ2UoU3Ry
aW5nIGNvbnRlbnRTaXplQ2F0ZWdvcnkpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCShyZXZpc2lvbiAxODcyMzIpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI4MzgsOCArMjgzOCwxMCBAQCB2b2lkIFdlYlBhZ2U6OnZvbGF0aWxp
dHlUaW1lckZpcmVkKCkKICAgICBtX3ZvbGF0aWxpdHlUaW1lci5zdG9wKCk7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKQordm9pZCBXZWJQYWdlOjph
cHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChib29sIGlzU3VzcGVuZGVkVW5kZXJMb2NrKQog
eworICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNh
dGlvbk5hbWU6V2ViVUlBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZE5vdGlmaWNhdGlvbiBv
YmplY3Q6bmlsIHVzZXJJbmZvOkB7QCJpc1N1c3BlbmRlZFVuZGVyTG9jayI6IFtOU051bWJlciBu
dW1iZXJXaXRoQm9vbDppc1N1c3BlbmRlZFVuZGVyTG9ja119XTsKKwogICAgIHNldExheWVyVHJl
ZVN0YXRlSXNGcm96ZW4odHJ1ZSk7CiAgICAgaWYgKG1hcmtMYXllcnNWb2xhdGlsZUltbWVkaWF0
ZWx5SWZQb3NzaWJsZSgpKQogICAgICAgICByZXR1cm47Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257470</attachid>
            <date>2015-07-24 12:50:30 -0700</date>
            <delta_ts>2015-07-24 13:34:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147269-20150724124913.patch</filename>
            <type>text/plain</type>
            <size>17505</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NzM0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE1LTA3LTI0ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gUkVH
UkVTU0lPTihyMTY4MDc1KTogRnVsbHNjcmVlbiB3ZWIgdmlkZW8gZG9lc24ndCBwYXVzZSBvbiBz
Y3JlZW4gbG9jaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ3MjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTWVkaWEgZWxlbWVudHMgc2hvdWxkIHBhdXNlIHdoZW4gdGhlIGFwcGxpY2F0aW9uIGlzIGdv
aW5nIHRvIEVudGVyQmFja2dyb3VuZAorICAgICAgICB1bmRlciBsb2NrIHJlZ2FyZGxlc3Mgd2hl
dGhlciBpdCBpcyBpbiBmdWxsIHNjcmVlbiBvciBub3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpiZWdpblN1c3BlbmQpOiBUaGlzIGNvZGUgd2FzIG1vdmVkIGZyb20gCisgICAgICAg
IGJlZ2luSW50ZXJydXB0aW9uKCkuCisgICAgICAgICAgICAgICAgCisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6ZW5kU3VzcGVuZCk6IFRoaXMgY29kZSB3YXMgbW92ZWQg
ZnJvbSAKKyAgICAgICAgZW5kSW50ZXJydXB0aW9uKCkuCisgICAgICAgIAorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OnNob3VsZEludGVycnVwdCk6IE1vdmUgdGhlIGNv
bmRpdGlvbiAKKyAgICAgICAgd2hpY2ggYWxsb3dzIHRoZSBtZWRpYSBzZXNzaW9uIGludGVycnVw
dGlvbiB0byBhIHNlcGFyYXRlIGZ1bmN0aW9uLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbik6IENhbGwgdGhlIGZ1bmN0
aW9ucworICAgICAgICBzaG91bGRJbnRlcnJ1cHQoKSBhbmQgYmVnaW5TdXNwZW5kKCkuCisgICAg
ICAgIAorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmZvcmNlSW50ZXJy
dXB0aW9uKTogVGhpcyBmdW5jdGlvbiB3aWxsCisgICAgICAgIGJlIGNhbGxlZCBmcm9tIFBsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKQor
ICAgICAgICB0byBvdmVycmlkZSB0aGUgZGVjaXNpb24gd2hpY2ggaXMgbWFkZSBieSBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRpb24oKQorICAgICAgICBpZiB0aGUgYXBwbGlj
YXRpb24gaXNTdXNwZW5kZWRVbmRlckxvY2suCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVNlc3Npb246OmVuZEludGVycnVwdGlvbik6IENhbGwgdGhlIGZ1bmN0aW9u
CisgICAgICAgIGVuZFN1c3BlbmQoKS4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKToKKyAgICAg
ICAgW1VJQXBwIGlzU3VzcGVuZGVkVW5kZXJMb2NrXSBpcyBvbmx5IHZhbGlkIHdoZW4gaXQgaXMg
Y2FsbGVkIHdoZW4gdGhlCisgICAgICAgIFVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmRO
b3RpZmljYXRpb24gaXMgcmVjZWl2ZWQuIFdlIG5lZWQgdG8gZm9yY2UKKyAgICAgICAgaW50ZXJy
dXB0aW5nIHRoZSBtZWRpYSBzZXNzaW9ucyBpZiB0aGUgYXBwbGljYXRpb24gaXNTdXNwZW5kZWRV
bmRlckxvY2sKKyAgICAgICAgYW5kIFVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZp
Y2F0aW9uIHdhcyBpZ25vcmVkIGJlY2F1c2Ugb2YgUGlQLgorCisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbToKKyAgICAgICAgKC1bV2ViTWVkaWFT
ZXNzaW9uSGVscGVyIGluaXRXaXRoQ2FsbGJhY2s6XSk6CisgICAgICAgICgtW1dlYk1lZGlhU2Vz
c2lvbkhlbHBlciBhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDpdKTogTGlzdGVuIHRvIAor
ICAgICAgICBVSUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uIGFuZCBt
YWtlIGEgY2FsbCBvbiB0aGUgd2ViCisgICAgICAgIHRocmVhZCB0byBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCkgCisgICAgICAgIGFu
ZCBwYXNzIHRoZSBpc1N1c3BlbmRlZFVuZGVyTG9jayBmbGFnIHdoaWNoIGlzIHF1ZXJpZWQgb24g
dGhlIFVJUHJvY2Vzcy4KKwogMjAxNS0wNy0yNCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9A
YXBwbGUuY29tPgogCiAgICAgICAgIENTUyAiY29udGVudCIgcHJvcGVydHkgaXMgbWlzc2luZyBp
biBnZXRDb21wdXRlZFN0eWxlcwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcAkocmV2aXNpb24gMTg3MjMyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03OSwxMyArNzksOCBAQCB2b2lkIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpzZXRTdGF0ZShTdGF0CiAgICAgbV9zdGF0ZSA9IHN0YXRlOwogfQogCi12b2lkIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbihJbnRlcnJ1cHRpb25UeXBlIHR5cGUp
Cit2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpiZWdpblN1c3BlbmQoKQogewotICAgIExPRyhN
ZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbiglcCksIHN0YXRl
ID0gJXMsIGludGVycnVwdGlvbiBjb3VudCA9ICVpIiwgdGhpcywgc3RhdGVOYW1lKG1fc3RhdGUp
LCBtX2ludGVycnVwdGlvbkNvdW50KTsKLQotICAgIGlmICgrK21faW50ZXJydXB0aW9uQ291bnQg
PiAxIHx8ICh0eXBlID09IEVudGVyaW5nQmFja2dyb3VuZCAmJiBjbGllbnQoKS5vdmVycmlkZUJh
Y2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKCkpKQotICAgICAgICByZXR1cm47Ci0KICAgICBt
X3N0YXRlVG9SZXN0b3JlID0gc3RhdGUoKTsKICAgICBtX25vdGlmeWluZ0NsaWVudCA9IHRydWU7
CiAgICAgc2V0U3RhdGUoSW50ZXJydXB0ZWQpOwpAQCAtOTMsNiArODgsNDQgQEAgdm9pZCBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cAogICAgIG1fbm90aWZ5aW5nQ2xpZW50ID0g
ZmFsc2U7CiB9CiAKK3ZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OmVuZFN1c3BlbmQoRW5kSW50
ZXJydXB0aW9uRmxhZ3MgZmxhZ3MpCit7CisgICAgU3RhdGUgc3RhdGVUb1Jlc3RvcmUgPSBtX3N0
YXRlVG9SZXN0b3JlOworICAgIG1fc3RhdGVUb1Jlc3RvcmUgPSBJZGxlOworICAgIHNldFN0YXRl
KFBhdXNlZCk7CisKKyAgICBib29sIHNob3VsZFJlc3VtZSA9IGZsYWdzICYgTWF5UmVzdW1lUGxh
eWluZyAmJiBzdGF0ZVRvUmVzdG9yZSA9PSBQbGF5aW5nOworICAgIGNsaWVudCgpLm1heVJlc3Vt
ZVBsYXliYWNrKHNob3VsZFJlc3VtZSk7Cit9CisKK2Jvb2wgUGxhdGZvcm1NZWRpYVNlc3Npb246
OnNob3VsZEludGVycnVwdChJbnRlcnJ1cHRpb25UeXBlIHR5cGUpCit7CisgICAgcmV0dXJuIHR5
cGUgIT0gRW50ZXJpbmdCYWNrZ3JvdW5kIHx8ICFjbGllbnQoKS5vdmVycmlkZUJhY2tncm91bmRQ
bGF5YmFja1Jlc3RyaWN0aW9uKCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OmJl
Z2luSW50ZXJydXB0aW9uKEludGVycnVwdGlvblR5cGUgdHlwZSkKK3sKKyAgICBMT0coTWVkaWEs
ICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRpb24oJXApLCBzdGF0ZSA9ICVz
LCBpbnRlcnJ1cHRpb24gY291bnQgPSAlaSIsIHRoaXMsIHN0YXRlTmFtZShtX3N0YXRlKSwgbV9p
bnRlcnJ1cHRpb25Db3VudCk7CisKKyAgICBpZiAoKyttX2ludGVycnVwdGlvbkNvdW50ID4gMSB8
fCAhc2hvdWxkSW50ZXJydXB0KHR5cGUpKQorICAgICAgICByZXR1cm47CisKKyAgICBiZWdpblN1
c3BlbmQoKTsKK30KKwordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Zm9yY2VJbnRlcnJ1cHRp
b24oSW50ZXJydXB0aW9uVHlwZSB0eXBlKQoreworICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpmb3JjZUludGVycnVwdGlvbiglcCksIHN0YXRlID0gJXMsIGludGVycnVwdGlv
biBjb3VudCA9ICVpIiwgdGhpcywgc3RhdGVOYW1lKG1fc3RhdGUpLCBtX2ludGVycnVwdGlvbkNv
dW50KTsKKworICAgIGlmICghbV9pbnRlcnJ1cHRpb25Db3VudCkgeworICAgICAgICBBU1NFUlQo
ZmFsc2UpOworICAgICAgICArK21faW50ZXJydXB0aW9uQ291bnQ7CisgICAgfSBlbHNlIGlmIChz
aG91bGRJbnRlcnJ1cHQodHlwZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGJlZ2luU3VzcGVu
ZCgpOworfQorCiB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjplbmRJbnRlcnJ1cHRpb24oRW5k
SW50ZXJydXB0aW9uRmxhZ3MgZmxhZ3MpCiB7CiAgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRp
YVNlc3Npb246OmVuZEludGVycnVwdGlvbiglcCkgLSBmbGFncyA9ICVpLCBzdGF0ZVRvUmVzdG9y
ZSA9ICVzLCBpbnRlcnJ1cHRpb24gY291bnQgPSAlaSIsIHRoaXMsIChpbnQpZmxhZ3MsIHN0YXRl
TmFtZShtX3N0YXRlVG9SZXN0b3JlKSwgbV9pbnRlcnJ1cHRpb25Db3VudCk7CkBAIC0xMDUsMTIg
KzEzOCw3IEBAIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OmVuZEludGVycnVwdGkKICAgICBp
ZiAoLS1tX2ludGVycnVwdGlvbkNvdW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBTdGF0ZSBz
dGF0ZVRvUmVzdG9yZSA9IG1fc3RhdGVUb1Jlc3RvcmU7Ci0gICAgbV9zdGF0ZVRvUmVzdG9yZSA9
IElkbGU7Ci0gICAgc2V0U3RhdGUoUGF1c2VkKTsKLQotICAgIGJvb2wgc2hvdWxkUmVzdW1lID0g
ZmxhZ3MgJiBNYXlSZXN1bWVQbGF5aW5nICYmIHN0YXRlVG9SZXN0b3JlID09IFBsYXlpbmc7Ci0g
ICAgY2xpZW50KCkubWF5UmVzdW1lUGxheWJhY2soc2hvdWxkUmVzdW1lKTsKKyAgICBlbmRTdXNw
ZW5kKGZsYWdzKTsKIH0KIAogYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbEJl
Z2luUGxheWJhY2soKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZv
cm1NZWRpYVNlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCShyZXZpc2lvbiAxODcyMzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC03OSwxMSArNzksMTggQEAgcHVibGljOgogICAgICAgICBOb0ZsYWdzID0gMCwKICAg
ICAgICAgTWF5UmVzdW1lUGxheWluZyA9IDEgPDwgMCwKICAgICB9OworCisgICAgdm9pZCBiZWdp
blN1c3BlbmQoKTsKKyAgICB2b2lkIGVuZFN1c3BlbmQoRW5kSW50ZXJydXB0aW9uRmxhZ3MpOwor
CisgICAgYm9vbCBzaG91bGRJbnRlcnJ1cHQoSW50ZXJydXB0aW9uVHlwZSk7CiAgICAgdm9pZCBi
ZWdpbkludGVycnVwdGlvbihJbnRlcnJ1cHRpb25UeXBlKTsKKyAgICB2b2lkIGZvcmNlSW50ZXJy
dXB0aW9uKEludGVycnVwdGlvblR5cGUpOwogICAgIHZvaWQgZW5kSW50ZXJydXB0aW9uKEVuZElu
dGVycnVwdGlvbkZsYWdzKTsKIAogICAgIHZvaWQgYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kKCkgY29uc3Q7CiAgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckJhY2tncm91bmQoKSBj
b25zdDsKKyAgICB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKGJvb2wgaXNTdXNw
ZW5kZWRVbmRlckxvY2spIGNvbnN0OwogCiAgICAgYm9vbCBjbGllbnRXaWxsQmVnaW5QbGF5YmFj
aygpOwogICAgIGJvb2wgY2xpZW50V2lsbFBhdXNlUGxheWJhY2soKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyLmNwcAkocmV2aXNpb24gMTg3MjMyKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgzLDYgKzI4MywyMCBAQCB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6
YXBwbGljCiAgICAgfQogfQogCit2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6YXBw
bGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoYm9vbCBpc1N1c3BlbmRlZFVuZGVyTG9jaykgY29u
c3QKK3sKKyAgICBMT0coTWVkaWEsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFwcGxp
Y2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kIik7CisKKyAgICBpZiAoIWlzU3VzcGVuZGVkVW5kZXJM
b2NrKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8UGxhdGZvcm1NZWRpYVNlc3Npb24q
PiBzZXNzaW9ucyA9IG1fc2Vzc2lvbnM7CisgICAgZm9yIChhdXRvKiBzZXNzaW9uIDogc2Vzc2lv
bnMpIHsKKyAgICAgICAgaWYgKG1fcmVzdHJpY3Rpb25zW3Nlc3Npb24tPm1lZGlhVHlwZSgpXSAm
IEJhY2tncm91bmRQcm9jZXNzUGxheWJhY2tSZXN0cmljdGVkKQorICAgICAgICAgICAgc2Vzc2lv
bi0+Zm9yY2VJbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkVudGVyaW5nQmFja2dy
b3VuZCk7CisgICAgfQorfQorCiB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6YXBw
bGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCkgY29uc3QKIHsKICAgICBMT0coTWVkaWEsICJQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3Vu
ZCIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgJKHJldmlzaW9uIDE4NzIzMikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCkgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckJhY2tncm91bmQoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5k
KGJvb2wgaXNTdXNwZW5kZWRVbmRlckxvY2spIGNvbnN0OwogCiAgICAgdm9pZCBzdG9wQWxsTWVk
aWFQbGF5YmFja0ZvckRvY3VtZW50KGNvbnN0IERvY3VtZW50Kik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzdG9wQWxsTWVkaWFQbGF5YmFja0ZvclByb2Nlc3MoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1h
bmFnZXJJT1MuaAkocmV2aXNpb24gMTg3MjMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaAkod29ya2luZyBjb3B5KQpAQCAtMzcs
NiArMzcsNyBAQCBPQkpDX0NMQVNTIFdlYk1lZGlhU2Vzc2lvbkhlbHBlcjsKIGV4dGVybiBOU1N0
cmluZyogV2ViVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb247CiBleHRl
cm4gTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kTm90aWZpY2F0
aW9uOwogZXh0ZXJuIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90
aWZpY2F0aW9uOworZXh0ZXJuIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNr
Z3JvdW5kTm90aWZpY2F0aW9uOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9T
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRp
YVNlc3Npb25NYW5hZ2VySU9TLm1tCShyZXZpc2lvbiAxODcyMzIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQkod29ya2luZyBj
b3B5KQpAQCAtNjEsMTEgKzYxLDEzIEBAIFNPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlBcHBsaWNh
dGlvbikKIFNPRlRfTElOS19QT0lOVEVSKFVJS2l0LCBVSUFwcGxpY2F0aW9uV2lsbFJlc2lnbkFj
dGl2ZU5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKFVJS2l0LCBV
SUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikK
IFNPRlRfTElOS19QT0lOVEVSKFVJS2l0LCBVSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90
aWZpY2F0aW9uLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVIoVUlLaXQsIFVJQXBwbGlj
YXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCiAKICNkZWZp
bmUgVUlBcHBsaWNhdGlvbiBnZXRVSUFwcGxpY2F0aW9uQ2xhc3MoKQogI2RlZmluZSBVSUFwcGxp
Y2F0aW9uV2lsbFJlc2lnbkFjdGl2ZU5vdGlmaWNhdGlvbiBnZXRVSUFwcGxpY2F0aW9uV2lsbFJl
c2lnbkFjdGl2ZU5vdGlmaWNhdGlvbigpCiAjZGVmaW5lIFVJQXBwbGljYXRpb25XaWxsRW50ZXJG
b3JlZ3JvdW5kTm90aWZpY2F0aW9uIGdldFVJQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5k
Tm90aWZpY2F0aW9uKCkKICNkZWZpbmUgVUlBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZU5vdGlm
aWNhdGlvbiBnZXRVSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uKCkKKyNk
ZWZpbmUgVUlBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZE5vdGlmaWNhdGlvbiBnZXRVSUFw
cGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uKCkKIAogU09GVF9MSU5LX0ZS
QU1FV09SSyhNZWRpYVBsYXllcikKIFNPRlRfTElOS19DTEFTUyhNZWRpYVBsYXllciwgTVBBVlJv
dXRpbmdDb250cm9sbGVyKQpAQCAtODcsNiArODksNyBAQCBTT0ZUX0xJTktfUE9JTlRFUihNZWRp
YVBsYXllciwgTVBWb2x1bWVWCiBXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyogV2ViVUlBcHBsaWNh
dGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25XaWxs
UmVzaWduQWN0aXZlTm90aWZpY2F0aW9uIjsKIFdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nKiBXZWJV
SUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbiA9IEAiV2ViVUlBcHBs
aWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24iOwogV0VCQ09SRV9FWFBPUlQg
TlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24gPSBA
IldlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24iOworV0VCQ09SRV9F
WFBPUlQgTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmlj
YXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24i
OwogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTAzLDYgKzEwNiw3IEBAIC0gKHZv
aWQpY2xlYXJDYWxsYmFjazsKIC0gKHZvaWQpaW50ZXJydXB0aW9uOihOU05vdGlmaWNhdGlvbiAq
KW5vdGlmaWNhdGlvbjsKIC0gKHZvaWQpYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kOihO
U05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKIC0gKHZvaWQpYXBwbGljYXRpb25XaWxsUmVz
aWduQWN0aXZlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKKy0gKHZvaWQpYXBwbGlj
YXRpb25EaWRFbnRlckJhY2tncm91bmQ6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwog
LSAoQk9PTCloYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGU7CiAtICh2b2lkKXN0YXJ0TW9uaXRv
cmluZ0FpclBsYXlSb3V0ZXM7CiAtICh2b2lkKXN0b3BNb25pdG9yaW5nQWlyUGxheVJvdXRlczsK
QEAgLTI5Myw2ICsyOTcsOCBAQCAtIChpZClpbml0V2l0aENhbGxiYWNrOihNZWRpYVNlc3Npb25N
YW5hCiAgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBs
aWNhdGlvbkRpZEJlY29tZUFjdGl2ZTopIG5hbWU6V2ViVUlBcHBsaWNhdGlvbkRpZEJlY29tZUFj
dGl2ZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNl
bGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZTopIG5hbWU6
VUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CiAg
ICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlv
bldpbGxSZXNpZ25BY3RpdmU6KSBuYW1lOldlYlVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZl
Tm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOworICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBz
ZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQ6KSBuYW1lOlVJ
QXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07Cisg
ICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlv
bkRpZEVudGVyQmFja2dyb3VuZDopIG5hbWU6V2ViVUlBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dy
b3VuZE5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKIAogICAgIFtzZWxmIGFsbG9jYXRlVm9sdW1l
Vmlld107CiAKQEAgLTQ0OCw3ICs0NTQsNyBAQCAtICh2b2lkKWFwcGxpY2F0aW9uV2lsbFJlc2ln
bkFjdGl2ZTooTlNOCiAgICAgV2ViVGhyZWFkUnVuKF57CiAgICAgICAgIGlmICghX2NhbGxiYWNr
KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKwogICAgICAgICBfY2FsbGJhY2stPmFw
cGxpY2F0aW9uV2lsbEVudGVyQmFja2dyb3VuZCgpOwogICAgIH0pOwogfQpAQCAtNDY5LDYgKzQ3
NSwyMyBAQCAtICh2b2lkKXdpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlCiAgICAgICAg
IF9jYWxsYmFjay0+ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoKTsKICAg
ICB9KTsKIH0KKworLSAodm9pZClhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDooTlNOb3Rp
ZmljYXRpb24gKilub3RpZmljYXRpb24KK3sKKyAgICBpZiAoIV9jYWxsYmFjaykKKyAgICAgICAg
cmV0dXJuOworCisgICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGlj
YXRpb25EaWRFbnRlckJhY2tncm91bmRdIik7CisKKyAgICBCT09MIGlzU3VzcGVuZGVkVW5kZXJM
b2NrID0gW1tbbm90aWZpY2F0aW9uIHVzZXJJbmZvXSBvYmplY3RGb3JLZXk6QCJpc1N1c3BlbmRl
ZFVuZGVyTG9jayJdIGJvb2xWYWx1ZV07CisKKyAgICBXZWJUaHJlYWRSdW4oXnsKKyAgICAgICAg
aWYgKCFfY2FsbGJhY2spCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgX2NhbGxiYWNr
LT5hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChpc1N1c3BlbmRlZFVuZGVyTG9jayk7Cisg
ICAgfSk7Cit9CiBAZW5kCiAKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxODczNDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAxNS0wNy0yNCAgU2FpZCBBYm91LUhhbGxhd2EgIDxz
YWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFJFR1JFU1NJT04ocjE2ODA3
NSk6IEZ1bGxzY3JlZW4gd2ViIHZpZGVvIGRvZXNuJ3QgcGF1c2Ugb24gc2NyZWVuIGxvY2sKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzI2OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1lZGlhIGVsZW1l
bnRzIHNob3VsZCBwYXVzZSB3aGVuIHRoZSBhcHBsaWNhdGlvbiBpcyBnb2luZyB0byBFbnRlckJh
Y2tncm91bmQKKyAgICAgICAgdW5kZXIgbG9jayByZWdhcmRsZXNzIHdoZXRoZXIgaXQgaXMgaW4g
ZnVsbCBzY3JlZW4gb3Igbm90LgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXBwbGljYXRpb25EaWRF
bnRlckJhY2tncm91bmQpOgorICAgICAgICBbVUlBcHAgaXNTdXNwZW5kZWRVbmRlckxvY2tdIGNh
biBvbmx5IGJlIGNhbGxlZCBpbiB0aGUgVUlQcm9jZXNzLiBXZSBuZWVkCisgICAgICAgIHRvIGNh
bGwgaXQgaGVyZSBhbmQgcGFzcyB0byB0aGUgV2ViUGFnZSBpbiB0aGUgV2ViUHJvY2VzcyBhcyBw
YXJ0IG9mIHRoZQorICAgICAgICBBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCBtZXNzYWdl
LgorICAgICAgICAKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOiBBZGQgdGhlIG5l
dyBwYXJhbWV0ZXI6CisgICAgICAgICdpc1N1c3BlbmRlZFVuZGVyTG9jaycgdG8gdGhlIEFwcGxp
Y2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kIG1lc3NhZ2UuCisgICAgICAgIAorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQpOiBPbiBpT1MsIHRoZSBXZWJQYWdl
IG5lZWRzCisgICAgICAgIHRvIG5vdGlmeSB0aGUgTWVkaWFTZXNzaW9uTWFuYWdlcklPUyB0aGF0
IGl0IHJlY2VpdmVzIHRoZSBtZXNzYWdlIAorICAgICAgICBBcHBsaWNhdGlvbkRpZEVudGVyQmFj
a2dyb3VuZC4KKwogMjAxNS0wNy0yNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZWNvZGUubmV0IGdldHMgaW50byBhIGNvbnRpbnVhbCByZXNpemUg
bG9vcCBpbiBzcGxpdCBmdWxsc2NyZWVuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQkocmV2aXNpb24gMTg3MjMyKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0JKHdvcmtpbmcgY29weSkK
QEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHkuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5o
IgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCIKKyNpbXBvcnQgIlVJS2l0
U1BJLmgiCiAjaW1wb3J0ICJVc2VyRGF0YS5oIgogI2ltcG9ydCAiVmlld1VwZGF0ZURpc3BhdGNo
ZXJNZXNzYWdlcy5oIgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVySW50ZXJu
YWwuaCIKQEAgLTYwNiw3ICs2MDcsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkVXBkYXRlQmxv
Y2tTZWxlY3RpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dy
b3VuZCgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBcHBsaWNh
dGlvbkRpZEVudGVyQmFja2dyb3VuZCgpLCBtX3BhZ2VJRCk7CisgICAgYm9vbCBpc1N1c3BlbmRl
ZFVuZGVyTG9jayA9IFtVSUFwcCBpc1N1c3BlbmRlZFVuZGVyTG9ja107CisgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChp
c1N1c3BlbmRlZFVuZGVyTG9jayksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDE4NzIzMikKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTc5OCw3ICs3OTgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzY2FsZVdhc1NldEJ5VUlQcm9jZXNz
KCkgY29uc3QgeyByZXR1cm4gbV9zY2FsZVdhc1NldEJ5VUlQcm9jZXNzOyB9CiAgICAgdm9pZCB3
aWxsU3RhcnRVc2VyVHJpZ2dlcmVkWm9vbWluZygpOwogICAgIHZvaWQgYXBwbGljYXRpb25XaWxs
UmVzaWduQWN0aXZlKCk7Ci0gICAgdm9pZCBhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCgp
OworICAgIHZvaWQgYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoYm9vbCBpc1N1c3BlbmRl
ZFVuZGVyTG9jayk7CiAgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoKTsK
ICAgICB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CiAgICAgdm9pZCB6b29tVG9S
ZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCwgZG91YmxlIG1pbmltdW1TY2FsZSwgZG91YmxlIG1heGlt
dW1TY2FsZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTg3MjMyKQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTg5LDcgKzg5LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7
CiAgICAgU2V0QXNzaXN0ZWROb2RlVmFsdWVBc051bWJlcihkb3VibGUgdmFsdWUpCiAgICAgU2V0
QXNzaXN0ZWROb2RlU2VsZWN0ZWRJbmRleCh1aW50MzJfdCBpbmRleCwgYm9vbCBhbGxvd011bHRp
cGxlU2VsZWN0aW9uKQogICAgIEFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZSgpCi0gICAgQXBw
bGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKQorICAgIEFwcGxpY2F0aW9uRGlkRW50ZXJCYWNr
Z3JvdW5kKGJvb2wgaXNTdXNwZW5kZWRVbmRlckxvY2spCiAgICAgQXBwbGljYXRpb25XaWxsRW50
ZXJGb3JlZ3JvdW5kKCkKICAgICBBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCiAgICAgQ29u
dGVudFNpemVDYXRlZ29yeURpZENoYW5nZShTdHJpbmcgY29udGVudFNpemVDYXRlZ29yeSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0JKHJldmlzaW9uIDE4NzIzMikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgzOCw4ICsyODM4
LDEwIEBAIHZvaWQgV2ViUGFnZTo6dm9sYXRpbGl0eVRpbWVyRmlyZWQoKQogICAgIG1fdm9sYXRp
bGl0eVRpbWVyLnN0b3AoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjphcHBsaWNhdGlvbkRpZEVudGVy
QmFja2dyb3VuZCgpCit2b2lkIFdlYlBhZ2U6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5k
KGJvb2wgaXNTdXNwZW5kZWRVbmRlckxvY2spCiB7CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRl
ciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpXZWJVSUFwcGxpY2F0aW9uRGlk
RW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uIG9iamVjdDpuaWwgdXNlckluZm86QHtAImlzU3Vz
cGVuZGVkVW5kZXJMb2NrIjogW05TTnVtYmVyIG51bWJlcldpdGhCb29sOmlzU3VzcGVuZGVkVW5k
ZXJMb2NrXX1dOworCiAgICAgc2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbih0cnVlKTsKICAgICBp
ZiAobWFya0xheWVyc1ZvbGF0aWxlSW1tZWRpYXRlbHlJZlBvc3NpYmxlKCkpCiAgICAgICAgIHJl
dHVybjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257473</attachid>
            <date>2015-07-24 13:34:15 -0700</date>
            <delta_ts>2015-07-27 15:30:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147269-20150724133258.patch</filename>
            <type>text/plain</type>
            <size>18033</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NzM0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE1LTA3LTI0ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gUkVH
UkVTU0lPTihyMTY4MDc1KTogRnVsbHNjcmVlbiB3ZWIgdmlkZW8gZG9lc24ndCBwYXVzZSBvbiBz
Y3JlZW4gbG9jaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ3MjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTWVkaWEgZWxlbWVudHMgc2hvdWxkIHBhdXNlIHdoZW4gdGhlIGFwcGxpY2F0aW9uIGlzIGdv
aW5nIHRvIEVudGVyQmFja2dyb3VuZAorICAgICAgICB1bmRlciBsb2NrIHJlZ2FyZGxlc3Mgd2hl
dGhlciBpdCBpcyBpbiBmdWxsIHNjcmVlbiBvciBub3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpiZWdpblN1c3BlbmQpOiBUaGlzIGNvZGUgd2FzIG1vdmVkIGZyb20gCisgICAgICAg
IGJlZ2luSW50ZXJydXB0aW9uKCkuCisgICAgICAgICAgICAgICAgCisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6ZW5kU3VzcGVuZCk6IFRoaXMgY29kZSB3YXMgbW92ZWQg
ZnJvbSAKKyAgICAgICAgZW5kSW50ZXJydXB0aW9uKCkuCisgICAgICAgIAorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OnNob3VsZEludGVycnVwdCk6IE1vdmUgdGhlIGNv
bmRpdGlvbiAKKyAgICAgICAgd2hpY2ggYWxsb3dzIHRoZSBtZWRpYSBzZXNzaW9uIGludGVycnVw
dGlvbiB0byBhIHNlcGFyYXRlIGZ1bmN0aW9uLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbik6IENhbGwgdGhlIGZ1bmN0
aW9ucworICAgICAgICBzaG91bGRJbnRlcnJ1cHQoKSBhbmQgYmVnaW5TdXNwZW5kKCkuCisgICAg
ICAgIAorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmZvcmNlSW50ZXJy
dXB0aW9uKTogVGhpcyBmdW5jdGlvbiB3aWxsCisgICAgICAgIGJlIGNhbGxlZCBmcm9tIFBsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKQor
ICAgICAgICB0byBvdmVycmlkZSB0aGUgZGVjaXNpb24gd2hpY2ggaXMgbWFkZSBieSBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRpb24oKQorICAgICAgICBpZiB0aGUgYXBwbGlj
YXRpb24gaXNTdXNwZW5kZWRVbmRlckxvY2suCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVNlc3Npb246OmVuZEludGVycnVwdGlvbik6IENhbGwgdGhlIGZ1bmN0aW9u
CisgICAgICAgIGVuZFN1c3BlbmQoKS4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKToKKyAgICAg
ICAgW1VJQXBwIGlzU3VzcGVuZGVkVW5kZXJMb2NrXSBpcyBvbmx5IHZhbGlkIHdoZW4gaXQgaXMg
Y2FsbGVkIHdoZW4gdGhlCisgICAgICAgIFVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmRO
b3RpZmljYXRpb24gaXMgcmVjZWl2ZWQuIFdlIG5lZWQgdG8gZm9yY2UKKyAgICAgICAgaW50ZXJy
dXB0aW5nIHRoZSBtZWRpYSBzZXNzaW9ucyBpZiB0aGUgYXBwbGljYXRpb24gaXNTdXNwZW5kZWRV
bmRlckxvY2sKKyAgICAgICAgYW5kIFVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZp
Y2F0aW9uIHdhcyBpZ25vcmVkIGJlY2F1c2Ugb2YgUGlQLgorCisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbToKKyAgICAgICAgKC1bV2ViTWVkaWFT
ZXNzaW9uSGVscGVyIGluaXRXaXRoQ2FsbGJhY2s6XSk6CisgICAgICAgICgtW1dlYk1lZGlhU2Vz
c2lvbkhlbHBlciBhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDpdKTogTGlzdGVuIHRvIAor
ICAgICAgICBVSUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uIGFuZCBt
YWtlIGEgY2FsbCBvbiB0aGUgd2ViCisgICAgICAgIHRocmVhZCB0byBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCkgCisgICAgICAgIGFu
ZCBwYXNzIHRoZSBpc1N1c3BlbmRlZFVuZGVyTG9jayBmbGFnIHdoaWNoIGlzIHF1ZXJpZWQgb24g
dGhlIFVJUHJvY2Vzcy4KKwogMjAxNS0wNy0yNCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9A
YXBwbGUuY29tPgogCiAgICAgICAgIENTUyAiY29udGVudCIgcHJvcGVydHkgaXMgbWlzc2luZyBp
biBnZXRDb21wdXRlZFN0eWxlcwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcAkocmV2aXNpb24gMTg3MjMyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03OSwxMyArNzksOCBAQCB2b2lkIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpzZXRTdGF0ZShTdGF0CiAgICAgbV9zdGF0ZSA9IHN0YXRlOwogfQogCi12b2lkIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbihJbnRlcnJ1cHRpb25UeXBlIHR5cGUp
Cit2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpiZWdpblN1c3BlbmQoKQogewotICAgIExPRyhN
ZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbiglcCksIHN0YXRl
ID0gJXMsIGludGVycnVwdGlvbiBjb3VudCA9ICVpIiwgdGhpcywgc3RhdGVOYW1lKG1fc3RhdGUp
LCBtX2ludGVycnVwdGlvbkNvdW50KTsKLQotICAgIGlmICgrK21faW50ZXJydXB0aW9uQ291bnQg
PiAxIHx8ICh0eXBlID09IEVudGVyaW5nQmFja2dyb3VuZCAmJiBjbGllbnQoKS5vdmVycmlkZUJh
Y2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKCkpKQotICAgICAgICByZXR1cm47Ci0KICAgICBt
X3N0YXRlVG9SZXN0b3JlID0gc3RhdGUoKTsKICAgICBtX25vdGlmeWluZ0NsaWVudCA9IHRydWU7
CiAgICAgc2V0U3RhdGUoSW50ZXJydXB0ZWQpOwpAQCAtOTMsNiArODgsNDQgQEAgdm9pZCBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cAogICAgIG1fbm90aWZ5aW5nQ2xpZW50ID0g
ZmFsc2U7CiB9CiAKK3ZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OmVuZFN1c3BlbmQoRW5kSW50
ZXJydXB0aW9uRmxhZ3MgZmxhZ3MpCit7CisgICAgU3RhdGUgc3RhdGVUb1Jlc3RvcmUgPSBtX3N0
YXRlVG9SZXN0b3JlOworICAgIG1fc3RhdGVUb1Jlc3RvcmUgPSBJZGxlOworICAgIHNldFN0YXRl
KFBhdXNlZCk7CisKKyAgICBib29sIHNob3VsZFJlc3VtZSA9IGZsYWdzICYgTWF5UmVzdW1lUGxh
eWluZyAmJiBzdGF0ZVRvUmVzdG9yZSA9PSBQbGF5aW5nOworICAgIGNsaWVudCgpLm1heVJlc3Vt
ZVBsYXliYWNrKHNob3VsZFJlc3VtZSk7Cit9CisKK2Jvb2wgUGxhdGZvcm1NZWRpYVNlc3Npb246
OnNob3VsZEludGVycnVwdChJbnRlcnJ1cHRpb25UeXBlIHR5cGUpCit7CisgICAgcmV0dXJuIHR5
cGUgIT0gRW50ZXJpbmdCYWNrZ3JvdW5kIHx8ICFjbGllbnQoKS5vdmVycmlkZUJhY2tncm91bmRQ
bGF5YmFja1Jlc3RyaWN0aW9uKCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OmJl
Z2luSW50ZXJydXB0aW9uKEludGVycnVwdGlvblR5cGUgdHlwZSkKK3sKKyAgICBMT0coTWVkaWEs
ICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRpb24oJXApLCBzdGF0ZSA9ICVz
LCBpbnRlcnJ1cHRpb24gY291bnQgPSAlaSIsIHRoaXMsIHN0YXRlTmFtZShtX3N0YXRlKSwgbV9p
bnRlcnJ1cHRpb25Db3VudCk7CisKKyAgICBpZiAoKyttX2ludGVycnVwdGlvbkNvdW50ID4gMSB8
fCAhc2hvdWxkSW50ZXJydXB0KHR5cGUpKQorICAgICAgICByZXR1cm47CisKKyAgICBiZWdpblN1
c3BlbmQoKTsKK30KKwordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Zm9yY2VJbnRlcnJ1cHRp
b24oSW50ZXJydXB0aW9uVHlwZSB0eXBlKQoreworICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpmb3JjZUludGVycnVwdGlvbiglcCksIHN0YXRlID0gJXMsIGludGVycnVwdGlv
biBjb3VudCA9ICVpIiwgdGhpcywgc3RhdGVOYW1lKG1fc3RhdGUpLCBtX2ludGVycnVwdGlvbkNv
dW50KTsKKworICAgIGlmICghbV9pbnRlcnJ1cHRpb25Db3VudCkgeworICAgICAgICBBU1NFUlQo
ZmFsc2UpOworICAgICAgICArK21faW50ZXJydXB0aW9uQ291bnQ7CisgICAgfSBlbHNlIGlmIChz
aG91bGRJbnRlcnJ1cHQodHlwZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGJlZ2luU3VzcGVu
ZCgpOworfQorCiB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjplbmRJbnRlcnJ1cHRpb24oRW5k
SW50ZXJydXB0aW9uRmxhZ3MgZmxhZ3MpCiB7CiAgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRp
YVNlc3Npb246OmVuZEludGVycnVwdGlvbiglcCkgLSBmbGFncyA9ICVpLCBzdGF0ZVRvUmVzdG9y
ZSA9ICVzLCBpbnRlcnJ1cHRpb24gY291bnQgPSAlaSIsIHRoaXMsIChpbnQpZmxhZ3MsIHN0YXRl
TmFtZShtX3N0YXRlVG9SZXN0b3JlKSwgbV9pbnRlcnJ1cHRpb25Db3VudCk7CkBAIC0xMDUsMTIg
KzEzOCw3IEBAIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OmVuZEludGVycnVwdGkKICAgICBp
ZiAoLS1tX2ludGVycnVwdGlvbkNvdW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBTdGF0ZSBz
dGF0ZVRvUmVzdG9yZSA9IG1fc3RhdGVUb1Jlc3RvcmU7Ci0gICAgbV9zdGF0ZVRvUmVzdG9yZSA9
IElkbGU7Ci0gICAgc2V0U3RhdGUoUGF1c2VkKTsKLQotICAgIGJvb2wgc2hvdWxkUmVzdW1lID0g
ZmxhZ3MgJiBNYXlSZXN1bWVQbGF5aW5nICYmIHN0YXRlVG9SZXN0b3JlID09IFBsYXlpbmc7Ci0g
ICAgY2xpZW50KCkubWF5UmVzdW1lUGxheWJhY2soc2hvdWxkUmVzdW1lKTsKKyAgICBlbmRTdXNw
ZW5kKGZsYWdzKTsKIH0KIAogYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbEJl
Z2luUGxheWJhY2soKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZv
cm1NZWRpYVNlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCShyZXZpc2lvbiAxODcyMzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC03OSwxMSArNzksMTggQEAgcHVibGljOgogICAgICAgICBOb0ZsYWdzID0gMCwKICAg
ICAgICAgTWF5UmVzdW1lUGxheWluZyA9IDEgPDwgMCwKICAgICB9OworCisgICAgdm9pZCBiZWdp
blN1c3BlbmQoKTsKKyAgICB2b2lkIGVuZFN1c3BlbmQoRW5kSW50ZXJydXB0aW9uRmxhZ3MpOwor
CisgICAgYm9vbCBzaG91bGRJbnRlcnJ1cHQoSW50ZXJydXB0aW9uVHlwZSk7CiAgICAgdm9pZCBi
ZWdpbkludGVycnVwdGlvbihJbnRlcnJ1cHRpb25UeXBlKTsKKyAgICB2b2lkIGZvcmNlSW50ZXJy
dXB0aW9uKEludGVycnVwdGlvblR5cGUpOwogICAgIHZvaWQgZW5kSW50ZXJydXB0aW9uKEVuZElu
dGVycnVwdGlvbkZsYWdzKTsKIAogICAgIHZvaWQgYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kKCkgY29uc3Q7CiAgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckJhY2tncm91bmQoKSBj
b25zdDsKKyAgICB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKGJvb2wgaXNTdXNw
ZW5kZWRVbmRlckxvY2spIGNvbnN0OwogCiAgICAgYm9vbCBjbGllbnRXaWxsQmVnaW5QbGF5YmFj
aygpOwogICAgIGJvb2wgY2xpZW50V2lsbFBhdXNlUGxheWJhY2soKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyLmNwcAkocmV2aXNpb24gMTg3MjMyKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgzLDYgKzI4MywyMCBAQCB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6
YXBwbGljCiAgICAgfQogfQogCit2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6YXBw
bGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoYm9vbCBpc1N1c3BlbmRlZFVuZGVyTG9jaykgY29u
c3QKK3sKKyAgICBMT0coTWVkaWEsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFwcGxp
Y2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kIik7CisKKyAgICBpZiAoIWlzU3VzcGVuZGVkVW5kZXJM
b2NrKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8UGxhdGZvcm1NZWRpYVNlc3Npb24q
PiBzZXNzaW9ucyA9IG1fc2Vzc2lvbnM7CisgICAgZm9yIChhdXRvKiBzZXNzaW9uIDogc2Vzc2lv
bnMpIHsKKyAgICAgICAgaWYgKG1fcmVzdHJpY3Rpb25zW3Nlc3Npb24tPm1lZGlhVHlwZSgpXSAm
IEJhY2tncm91bmRQcm9jZXNzUGxheWJhY2tSZXN0cmljdGVkKQorICAgICAgICAgICAgc2Vzc2lv
bi0+Zm9yY2VJbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkVudGVyaW5nQmFja2dy
b3VuZCk7CisgICAgfQorfQorCiB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6YXBw
bGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCkgY29uc3QKIHsKICAgICBMT0coTWVkaWEsICJQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3Vu
ZCIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgJKHJldmlzaW9uIDE4NzIzMikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCkgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckJhY2tncm91bmQoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5k
KGJvb2wgaXNTdXNwZW5kZWRVbmRlckxvY2spIGNvbnN0OwogCiAgICAgdm9pZCBzdG9wQWxsTWVk
aWFQbGF5YmFja0ZvckRvY3VtZW50KGNvbnN0IERvY3VtZW50Kik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzdG9wQWxsTWVkaWFQbGF5YmFja0ZvclByb2Nlc3MoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1h
bmFnZXJJT1MuaAkocmV2aXNpb24gMTg3MjMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaAkod29ya2luZyBjb3B5KQpAQCAtMzcs
NiArMzcsNyBAQCBPQkpDX0NMQVNTIFdlYk1lZGlhU2Vzc2lvbkhlbHBlcjsKIGV4dGVybiBOU1N0
cmluZyogV2ViVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb247CiBleHRl
cm4gTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kTm90aWZpY2F0
aW9uOwogZXh0ZXJuIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90
aWZpY2F0aW9uOworZXh0ZXJuIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNr
Z3JvdW5kTm90aWZpY2F0aW9uOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9T
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRp
YVNlc3Npb25NYW5hZ2VySU9TLm1tCShyZXZpc2lvbiAxODcyMzIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQkod29ya2luZyBj
b3B5KQpAQCAtNjEsMTEgKzYxLDEzIEBAIFNPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlBcHBsaWNh
dGlvbikKIFNPRlRfTElOS19QT0lOVEVSKFVJS2l0LCBVSUFwcGxpY2F0aW9uV2lsbFJlc2lnbkFj
dGl2ZU5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKFVJS2l0LCBV
SUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikK
IFNPRlRfTElOS19QT0lOVEVSKFVJS2l0LCBVSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90
aWZpY2F0aW9uLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVIoVUlLaXQsIFVJQXBwbGlj
YXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCiAKICNkZWZp
bmUgVUlBcHBsaWNhdGlvbiBnZXRVSUFwcGxpY2F0aW9uQ2xhc3MoKQogI2RlZmluZSBVSUFwcGxp
Y2F0aW9uV2lsbFJlc2lnbkFjdGl2ZU5vdGlmaWNhdGlvbiBnZXRVSUFwcGxpY2F0aW9uV2lsbFJl
c2lnbkFjdGl2ZU5vdGlmaWNhdGlvbigpCiAjZGVmaW5lIFVJQXBwbGljYXRpb25XaWxsRW50ZXJG
b3JlZ3JvdW5kTm90aWZpY2F0aW9uIGdldFVJQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5k
Tm90aWZpY2F0aW9uKCkKICNkZWZpbmUgVUlBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZU5vdGlm
aWNhdGlvbiBnZXRVSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uKCkKKyNk
ZWZpbmUgVUlBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZE5vdGlmaWNhdGlvbiBnZXRVSUFw
cGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uKCkKIAogU09GVF9MSU5LX0ZS
QU1FV09SSyhNZWRpYVBsYXllcikKIFNPRlRfTElOS19DTEFTUyhNZWRpYVBsYXllciwgTVBBVlJv
dXRpbmdDb250cm9sbGVyKQpAQCAtODcsNiArODksNyBAQCBTT0ZUX0xJTktfUE9JTlRFUihNZWRp
YVBsYXllciwgTVBWb2x1bWVWCiBXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyogV2ViVUlBcHBsaWNh
dGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25XaWxs
UmVzaWduQWN0aXZlTm90aWZpY2F0aW9uIjsKIFdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nKiBXZWJV
SUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbiA9IEAiV2ViVUlBcHBs
aWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24iOwogV0VCQ09SRV9FWFBPUlQg
TlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24gPSBA
IldlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24iOworV0VCQ09SRV9F
WFBPUlQgTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmlj
YXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24i
OwogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTAzLDYgKzEwNiw3IEBAIC0gKHZv
aWQpY2xlYXJDYWxsYmFjazsKIC0gKHZvaWQpaW50ZXJydXB0aW9uOihOU05vdGlmaWNhdGlvbiAq
KW5vdGlmaWNhdGlvbjsKIC0gKHZvaWQpYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kOihO
U05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKIC0gKHZvaWQpYXBwbGljYXRpb25XaWxsUmVz
aWduQWN0aXZlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKKy0gKHZvaWQpYXBwbGlj
YXRpb25EaWRFbnRlckJhY2tncm91bmQ6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwog
LSAoQk9PTCloYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGU7CiAtICh2b2lkKXN0YXJ0TW9uaXRv
cmluZ0FpclBsYXlSb3V0ZXM7CiAtICh2b2lkKXN0b3BNb25pdG9yaW5nQWlyUGxheVJvdXRlczsK
QEAgLTI5Myw2ICsyOTcsOCBAQCAtIChpZClpbml0V2l0aENhbGxiYWNrOihNZWRpYVNlc3Npb25N
YW5hCiAgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBs
aWNhdGlvbkRpZEJlY29tZUFjdGl2ZTopIG5hbWU6V2ViVUlBcHBsaWNhdGlvbkRpZEJlY29tZUFj
dGl2ZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNl
bGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZTopIG5hbWU6
VUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CiAg
ICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlv
bldpbGxSZXNpZ25BY3RpdmU6KSBuYW1lOldlYlVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZl
Tm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOworICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBz
ZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQ6KSBuYW1lOlVJ
QXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07Cisg
ICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlv
bkRpZEVudGVyQmFja2dyb3VuZDopIG5hbWU6V2ViVUlBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dy
b3VuZE5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKIAogICAgIFtzZWxmIGFsbG9jYXRlVm9sdW1l
Vmlld107CiAKQEAgLTQ0OCw3ICs0NTQsNyBAQCAtICh2b2lkKWFwcGxpY2F0aW9uV2lsbFJlc2ln
bkFjdGl2ZTooTlNOCiAgICAgV2ViVGhyZWFkUnVuKF57CiAgICAgICAgIGlmICghX2NhbGxiYWNr
KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKwogICAgICAgICBfY2FsbGJhY2stPmFw
cGxpY2F0aW9uV2lsbEVudGVyQmFja2dyb3VuZCgpOwogICAgIH0pOwogfQpAQCAtNDY5LDYgKzQ3
NSwyMyBAQCAtICh2b2lkKXdpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlCiAgICAgICAg
IF9jYWxsYmFjay0+ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoKTsKICAg
ICB9KTsKIH0KKworLSAodm9pZClhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDooTlNOb3Rp
ZmljYXRpb24gKilub3RpZmljYXRpb24KK3sKKyAgICBpZiAoIV9jYWxsYmFjaykKKyAgICAgICAg
cmV0dXJuOworCisgICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGlj
YXRpb25EaWRFbnRlckJhY2tncm91bmRdIik7CisKKyAgICBCT09MIGlzU3VzcGVuZGVkVW5kZXJM
b2NrID0gW1tbbm90aWZpY2F0aW9uIHVzZXJJbmZvXSBvYmplY3RGb3JLZXk6QCJpc1N1c3BlbmRl
ZFVuZGVyTG9jayJdIGJvb2xWYWx1ZV07CisKKyAgICBXZWJUaHJlYWRSdW4oXnsKKyAgICAgICAg
aWYgKCFfY2FsbGJhY2spCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgX2NhbGxiYWNr
LT5hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChpc1N1c3BlbmRlZFVuZGVyTG9jayk7Cisg
ICAgfSk7Cit9CiBAZW5kCiAKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxODczNTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwzMCBAQAorMjAxNS0wNy0yNCAgU2FpZCBBYm91LUhhbGxhd2EgIDxz
YWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFJFR1JFU1NJT04ocjE2ODA3
NSk6IEZ1bGxzY3JlZW4gd2ViIHZpZGVvIGRvZXNuJ3QgcGF1c2Ugb24gc2NyZWVuIGxvY2sKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzI2OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1lZGlhIGVsZW1l
bnRzIHNob3VsZCBwYXVzZSB3aGVuIHRoZSBhcHBsaWNhdGlvbiBpcyBnb2luZyB0byBFbnRlckJh
Y2tncm91bmQKKyAgICAgICAgdW5kZXIgbG9jayByZWdhcmRsZXNzIHdoZXRoZXIgaXQgaXMgaW4g
ZnVsbCBzY3JlZW4gb3Igbm90LgorCisgICAgICAgICogUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQ
SS5oOiBGb3J3YXJkIGRlY2xhcmUgW1VJQXBwbGljYXRpb24gaXNTdXNwZW5kZWRVbmRlckxvY2td
LgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQpOgor
ICAgICAgICBbVUlBcHAgaXNTdXNwZW5kZWRVbmRlckxvY2tdIGNhbiBvbmx5IGJlIGNhbGxlZCBp
biB0aGUgVUlQcm9jZXNzLiBXZSBuZWVkCisgICAgICAgIHRvIGNhbGwgaXQgaGVyZSBhbmQgcGFz
cyB0byB0aGUgV2ViUGFnZSBpbiB0aGUgV2ViUHJvY2VzcyBhcyBwYXJ0IG9mIHRoZQorICAgICAg
ICBBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCBtZXNzYWdlLgorICAgICAgICAKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOiBBZGQgdGhlIG5ldyBwYXJhbWV0ZXI6CisgICAg
ICAgICdpc1N1c3BlbmRlZFVuZGVyTG9jaycgdG8gdGhlIEFwcGxpY2F0aW9uRGlkRW50ZXJCYWNr
Z3JvdW5kIG1lc3NhZ2UuCisgICAgICAgIAorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXBwbGljYXRpb25E
aWRFbnRlckJhY2tncm91bmQpOiBPbiBpT1MsIHRoZSBXZWJQYWdlIG5lZWRzCisgICAgICAgIHRv
IG5vdGlmeSB0aGUgTWVkaWFTZXNzaW9uTWFuYWdlcklPUyB0aGF0IGl0IHJlY2VpdmVzIHRoZSBt
ZXNzYWdlIAorICAgICAgICBBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZC4KKwogMjAxNS0w
Ny0yNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgcnVudGltZSBmbGFncyBmb3Igc3ltYm9scwpJbmRleDogU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAkocmV2aXNpb24gMTg3MjMyKQorKysgU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2
ICs5Niw3IEBACiAtIChVSUludGVyZmFjZU9yaWVudGF0aW9uKWludGVyZmFjZU9yaWVudGF0aW9u
OwogLSAodm9pZClfY2FuY2VsQWxsVG91Y2hlczsKIC0gKENHRmxvYXQpc3RhdHVzQmFySGVpZ2h0
OworLSAoQk9PTClpc1N1c3BlbmRlZFVuZGVyTG9jazsKIEBlbmQKIAogdHlwZWRlZiBOU19FTlVN
KE5TSW50ZWdlciwgVUlEYXRlUGlja2VyUHJpdmF0ZU1vZGUpICB7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQkocmV2aXNpb24gMTg3
MjMyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0J
KHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHkuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHlNZXNzYWdlcy5oIgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCIK
KyNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0ICJVc2VyRGF0YS5oIgogI2ltcG9ydCAiVmll
d1VwZGF0ZURpc3BhdGNoZXJNZXNzYWdlcy5oIgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRD
b250cm9sbGVySW50ZXJuYWwuaCIKQEAgLTYwNiw3ICs2MDcsOCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkVXBkYXRlQmxvY2tTZWxlY3RpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjphcHBsaWNhdGlv
bkRpZEVudGVyQmFja2dyb3VuZCgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCgpLCBtX3BhZ2VJRCk7CisgICAg
Ym9vbCBpc1N1c3BlbmRlZFVuZGVyTG9jayA9IFtVSUFwcCBpc1N1c3BlbmRlZFVuZGVyTG9ja107
CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBcHBsaWNhdGlvbkRpZEVu
dGVyQmFja2dyb3VuZChpc1N1c3BlbmRlZFVuZGVyTG9jayksIG1fcGFnZUlEKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDE4
NzIzMikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTc5OCw3ICs3OTgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzY2FsZVdh
c1NldEJ5VUlQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9zY2FsZVdhc1NldEJ5VUlQcm9jZXNz
OyB9CiAgICAgdm9pZCB3aWxsU3RhcnRVc2VyVHJpZ2dlcmVkWm9vbWluZygpOwogICAgIHZvaWQg
YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCk7Ci0gICAgdm9pZCBhcHBsaWNhdGlvbkRpZEVu
dGVyQmFja2dyb3VuZCgpOworICAgIHZvaWQgYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQo
Ym9vbCBpc1N1c3BlbmRlZFVuZGVyTG9jayk7CiAgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRl
ckZvcmVncm91bmQoKTsKICAgICB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CiAg
ICAgdm9pZCB6b29tVG9SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCwgZG91YmxlIG1pbmltdW1TY2Fs
ZSwgZG91YmxlIG1heGltdW1TY2FsZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTg3MjMy
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBM
ZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0QXNzaXN0ZWROb2RlVmFsdWVBc051bWJlcihkb3VibGUg
dmFsdWUpCiAgICAgU2V0QXNzaXN0ZWROb2RlU2VsZWN0ZWRJbmRleCh1aW50MzJfdCBpbmRleCwg
Ym9vbCBhbGxvd011bHRpcGxlU2VsZWN0aW9uKQogICAgIEFwcGxpY2F0aW9uV2lsbFJlc2lnbkFj
dGl2ZSgpCi0gICAgQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKQorICAgIEFwcGxpY2F0
aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKGJvb2wgaXNTdXNwZW5kZWRVbmRlckxvY2spCiAgICAgQXBw
bGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCkKICAgICBBcHBsaWNhdGlvbkRpZEJlY29tZUFj
dGl2ZSgpCiAgICAgQ29udGVudFNpemVDYXRlZ29yeURpZENoYW5nZShTdHJpbmcgY29udGVudFNp
emVDYXRlZ29yeSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHJldmlzaW9uIDE4NzIzMikKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjgzOCw4ICsyODM4LDEwIEBAIHZvaWQgV2ViUGFnZTo6dm9sYXRpbGl0eVRpbWVyRmlyZWQo
KQogICAgIG1fdm9sYXRpbGl0eVRpbWVyLnN0b3AoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjphcHBs
aWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCgpCit2b2lkIFdlYlBhZ2U6OmFwcGxpY2F0aW9uRGlk
RW50ZXJCYWNrZ3JvdW5kKGJvb2wgaXNTdXNwZW5kZWRVbmRlckxvY2spCiB7CisgICAgW1tOU05v
dGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpXZWJV
SUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uIG9iamVjdDpuaWwgdXNl
ckluZm86QHtAImlzU3VzcGVuZGVkVW5kZXJMb2NrIjogW05TTnVtYmVyIG51bWJlcldpdGhCb29s
OmlzU3VzcGVuZGVkVW5kZXJMb2NrXX1dOworCiAgICAgc2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3pl
bih0cnVlKTsKICAgICBpZiAobWFya0xheWVyc1ZvbGF0aWxlSW1tZWRpYXRlbHlJZlBvc3NpYmxl
KCkpCiAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257601</attachid>
            <date>2015-07-27 15:30:27 -0700</date>
            <delta_ts>2015-07-28 14:05:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147269-20150727152907.patch</filename>
            <type>text/plain</type>
            <size>17681</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NzM2NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE1LTA3LTI0ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gUkVH
UkVTU0lPTihyMTY4MDc1KTogRnVsbHNjcmVlbiB3ZWIgdmlkZW8gZG9lc24ndCBwYXVzZSBvbiBz
Y3JlZW4gbG9jaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ3MjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTWVkaWEgZWxlbWVudHMgc2hvdWxkIHBhdXNlIHdoZW4gdGhlIGFwcGxpY2F0aW9uIGlzIGdv
aW5nIHRvIEVudGVyQmFja2dyb3VuZAorICAgICAgICB1bmRlciBsb2NrIHJlZ2FyZGxlc3Mgd2hl
dGhlciBpdCBpcyBpbiBmdWxsIHNjcmVlbiBvciBub3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpiZWdpblN1c3BlbmQpOiBUaGlzIGNvZGUgd2FzIG1vdmVkIGZyb20gCisgICAgICAg
IGJlZ2luSW50ZXJydXB0aW9uKCkuCisgICAgICAgICAgICAgICAgCisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6ZW5kU3VzcGVuZCk6IFRoaXMgY29kZSB3YXMgbW92ZWQg
ZnJvbSAKKyAgICAgICAgZW5kSW50ZXJydXB0aW9uKCkuCisgICAgICAgIAorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OnNob3VsZEludGVycnVwdCk6IE1vdmUgdGhlIGNv
bmRpdGlvbiAKKyAgICAgICAgd2hpY2ggYWxsb3dzIHRoZSBtZWRpYSBzZXNzaW9uIGludGVycnVw
dGlvbiB0byBhIHNlcGFyYXRlIGZ1bmN0aW9uLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbik6IENhbGwgdGhlIGZ1bmN0
aW9ucworICAgICAgICBzaG91bGRJbnRlcnJ1cHQoKSBhbmQgYmVnaW5TdXNwZW5kKCkuCisgICAg
ICAgIAorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmZvcmNlSW50ZXJy
dXB0aW9uKTogVGhpcyBmdW5jdGlvbiB3aWxsCisgICAgICAgIGJlIGNhbGxlZCBmcm9tIFBsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKQor
ICAgICAgICB0byBvdmVycmlkZSB0aGUgZGVjaXNpb24gd2hpY2ggaXMgbWFkZSBieSBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRpb24oKQorICAgICAgICBpZiB0aGUgYXBwbGlj
YXRpb24gaXNTdXNwZW5kZWRVbmRlckxvY2suCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVNlc3Npb246OmVuZEludGVycnVwdGlvbik6IENhbGwgdGhlIGZ1bmN0aW9u
CisgICAgICAgIGVuZFN1c3BlbmQoKS4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKToKKyAgICAg
ICAgW1VJQXBwIGlzU3VzcGVuZGVkVW5kZXJMb2NrXSBpcyBvbmx5IHZhbGlkIHdoZW4gaXQgaXMg
Y2FsbGVkIHdoZW4gdGhlCisgICAgICAgIFVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmRO
b3RpZmljYXRpb24gaXMgcmVjZWl2ZWQuIFdlIG5lZWQgdG8gZm9yY2UKKyAgICAgICAgaW50ZXJy
dXB0aW5nIHRoZSBtZWRpYSBzZXNzaW9ucyBpZiB0aGUgYXBwbGljYXRpb24gaXNTdXNwZW5kZWRV
bmRlckxvY2sKKyAgICAgICAgYW5kIFVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZp
Y2F0aW9uIHdhcyBpZ25vcmVkIGJlY2F1c2Ugb2YgUGlQLgorCisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbToKKyAgICAgICAgKC1bV2ViTWVkaWFT
ZXNzaW9uSGVscGVyIGluaXRXaXRoQ2FsbGJhY2s6XSk6CisgICAgICAgICgtW1dlYk1lZGlhU2Vz
c2lvbkhlbHBlciBhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDpdKTogTGlzdGVuIHRvIAor
ICAgICAgICBVSUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uIGFuZCBt
YWtlIGEgY2FsbCBvbiB0aGUgd2ViCisgICAgICAgIHRocmVhZCB0byBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCkgCisgICAgICAgIGFu
ZCBwYXNzIHRoZSBpc1N1c3BlbmRlZFVuZGVyTG9jayBmbGFnIHdoaWNoIGlzIHF1ZXJpZWQgb24g
dGhlIFVJUHJvY2Vzcy4KKwogMjAxNS0wNy0yNCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgV0VCQ09SRV9FWFBPUlQgZnJvbSBQYWdlOjphbGxv
d3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2soKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcAkocmV2aXNp
b24gMTg3MzY0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRp
YVNlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSwxMyArNzksOCBAQCB2b2lkIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpzZXRTdGF0ZShTdGF0CiAgICAgbV9zdGF0ZSA9IHN0YXRlOwogfQog
Ci12b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbihJbnRlcnJ1cHRp
b25UeXBlIHR5cGUpCit2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpkb0ludGVycnVwdGlvbigp
CiB7Ci0gICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRpYVNlc3Npb246OmJlZ2luSW50ZXJydXB0
aW9uKCVwKSwgc3RhdGUgPSAlcywgaW50ZXJydXB0aW9uIGNvdW50ID0gJWkiLCB0aGlzLCBzdGF0
ZU5hbWUobV9zdGF0ZSksIG1faW50ZXJydXB0aW9uQ291bnQpOwotCi0gICAgaWYgKCsrbV9pbnRl
cnJ1cHRpb25Db3VudCA+IDEgfHwgKHR5cGUgPT0gRW50ZXJpbmdCYWNrZ3JvdW5kICYmIGNsaWVu
dCgpLm92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oKSkpCi0gICAgICAgIHJl
dHVybjsKLQogICAgIG1fc3RhdGVUb1Jlc3RvcmUgPSBzdGF0ZSgpOwogICAgIG1fbm90aWZ5aW5n
Q2xpZW50ID0gdHJ1ZTsKICAgICBzZXRTdGF0ZShJbnRlcnJ1cHRlZCk7CkBAIC05Myw2ICs4OCw0
MCBAQCB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpiZWdpbkludGVycnVwCiAgICAgbV9ub3Rp
ZnlpbmdDbGllbnQgPSBmYWxzZTsKIH0KIAorYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6c2hv
dWxkRG9JbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSB0eXBlKQoreworICAgIHJldHVybiB0
eXBlICE9IEVudGVyaW5nQmFja2dyb3VuZCB8fCAhY2xpZW50KCkub3ZlcnJpZGVCYWNrZ3JvdW5k
UGxheWJhY2tSZXN0cmljdGlvbigpOworfQorCit2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpi
ZWdpbkludGVycnVwdGlvbihJbnRlcnJ1cHRpb25UeXBlIHR5cGUpCit7CisgICAgTE9HKE1lZGlh
LCAiUGxhdGZvcm1NZWRpYVNlc3Npb246OmJlZ2luSW50ZXJydXB0aW9uKCVwKSwgc3RhdGUgPSAl
cywgaW50ZXJydXB0aW9uIGNvdW50ID0gJWkiLCB0aGlzLCBzdGF0ZU5hbWUobV9zdGF0ZSksIG1f
aW50ZXJydXB0aW9uQ291bnQpOworCisgICAgaWYgKCsrbV9pbnRlcnJ1cHRpb25Db3VudCA+IDEg
fHwgIXNob3VsZERvSW50ZXJydXB0aW9uKHR5cGUpKQorICAgICAgICByZXR1cm47CisKKyAgICBk
b0ludGVycnVwdGlvbigpOworfQorCit2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpmb3JjZUlu
dGVycnVwdGlvbihJbnRlcnJ1cHRpb25UeXBlIHR5cGUpCit7CisgICAgTE9HKE1lZGlhLCAiUGxh
dGZvcm1NZWRpYVNlc3Npb246OmZvcmNlSW50ZXJydXB0aW9uKCVwKSwgc3RhdGUgPSAlcywgaW50
ZXJydXB0aW9uIGNvdW50ID0gJWkiLCB0aGlzLCBzdGF0ZU5hbWUobV9zdGF0ZSksIG1faW50ZXJy
dXB0aW9uQ291bnQpOworCisgICAgLy8gYmVnaW5JbnRlcnJ1cHRpb24oKSBtdXN0IGhhdmUgYmVl
biBjYWxsZWQgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4KKyAgICBpZiAoIW1faW50ZXJy
dXB0aW9uQ291bnQpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyBUaGUgcHVycG9zZSBvZiB0aGlzIGZ1bmN0aW9uIGlzIHRv
IG92ZXJyaWRlIHRoZSBkZWNpc2lvbiB3aGljaCB3YXMgbWFkZSBieQorICAgIC8vIGJlZ2luSW50
ZXJydXB0aW9uKCkuIElmIGl0IHdhcyBkZWNpZGVkIHRvIGludGVycnVwdCB0aGUgbWVkaWEgc2Vz
c2lvbiB0aGVyZSwKKyAgICAvLyB0aGVuIG5vdGhpbmcgc2hvdWxkIGJlIGRvbmUgaGVyZS4KKyAg
ICBpZiAoc2hvdWxkRG9JbnRlcnJ1cHRpb24odHlwZSkpCisgICAgICAgIHJldHVybjsKKworICAg
IGRvSW50ZXJydXB0aW9uKCk7Cit9CisKIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OmVuZElu
dGVycnVwdGlvbihFbmRJbnRlcnJ1cHRpb25GbGFncyBmbGFncykKIHsKICAgICBMT0coTWVkaWEs
ICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6ZW5kSW50ZXJydXB0aW9uKCVwKSAtIGZsYWdzID0gJWks
IHN0YXRlVG9SZXN0b3JlID0gJXMsIGludGVycnVwdGlvbiBjb3VudCA9ICVpIiwgdGhpcywgKGlu
dClmbGFncywgc3RhdGVOYW1lKG1fc3RhdGVUb1Jlc3RvcmUpLCBtX2ludGVycnVwdGlvbkNvdW50
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNz
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZv
cm1NZWRpYVNlc3Npb24uaAkocmV2aXNpb24gMTg3MzY0KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtNzks
MTEgKzc5LDE2IEBAIHB1YmxpYzoKICAgICAgICAgTm9GbGFncyA9IDAsCiAgICAgICAgIE1heVJl
c3VtZVBsYXlpbmcgPSAxIDw8IDAsCiAgICAgfTsKKworICAgIHZvaWQgZG9JbnRlcnJ1cHRpb24o
KTsKKyAgICBib29sIHNob3VsZERvSW50ZXJydXB0aW9uKEludGVycnVwdGlvblR5cGUpOwogICAg
IHZvaWQgYmVnaW5JbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSk7CisgICAgdm9pZCBmb3Jj
ZUludGVycnVwdGlvbihJbnRlcnJ1cHRpb25UeXBlKTsKICAgICB2b2lkIGVuZEludGVycnVwdGlv
bihFbmRJbnRlcnJ1cHRpb25GbGFncyk7CiAKICAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVy
Rm9yZWdyb3VuZCgpIGNvbnN0OwogICAgIHZvaWQgYXBwbGljYXRpb25XaWxsRW50ZXJCYWNrZ3Jv
dW5kKCkgY29uc3Q7CisgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChib29s
IGlzU3VzcGVuZGVkVW5kZXJMb2NrKSBjb25zdDsKIAogICAgIGJvb2wgY2xpZW50V2lsbEJlZ2lu
UGxheWJhY2soKTsKICAgICBib29sIGNsaWVudFdpbGxQYXVzZVBsYXliYWNrKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlci5jcHAJKHJldmlzaW9uIDE4NzM2NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4Myw2ICsyODMsMjAgQEAgdm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXI6OmFwcGxpYwogICAgIH0KIH0KIAordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKGJvb2wgaXNTdXNwZW5kZWRVbmRlckxv
Y2spIGNvbnN0Cit7CisgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
OjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCIpOworCisgICAgaWYgKCFpc1N1c3BlbmRl
ZFVuZGVyTG9jaykKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPFBsYXRmb3JtTWVkaWFT
ZXNzaW9uKj4gc2Vzc2lvbnMgPSBtX3Nlc3Npb25zOworICAgIGZvciAoYXV0byogc2Vzc2lvbiA6
IHNlc3Npb25zKSB7CisgICAgICAgIGlmIChtX3Jlc3RyaWN0aW9uc1tzZXNzaW9uLT5tZWRpYVR5
cGUoKV0gJiBCYWNrZ3JvdW5kUHJvY2Vzc1BsYXliYWNrUmVzdHJpY3RlZCkKKyAgICAgICAgICAg
IHNlc3Npb24tPmZvcmNlSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbnRlcmlu
Z0JhY2tncm91bmQpOworICAgIH0KK30KKwogdm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpIGNvbnN0CiB7CiAgICAgTE9HKE1l
ZGlhLCAiUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjphcHBsaWNhdGlvbldpbGxFbnRlckZv
cmVncm91bmQiKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oCShyZXZpc2lvbiAxODczNjQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbGljYXRpb25XaWxsRW50ZXJCYWNrZ3JvdW5k
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBsaWNhdGlvbkRpZEVudGVyQmFj
a2dyb3VuZChib29sIGlzU3VzcGVuZGVkVW5kZXJMb2NrKSBjb25zdDsKIAogICAgIHZvaWQgc3Rv
cEFsbE1lZGlhUGxheWJhY2tGb3JEb2N1bWVudChjb25zdCBEb2N1bWVudCopOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc3RvcEFsbE1lZGlhUGxheWJhY2tGb3JQcm9jZXNzKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNl
c3Npb25NYW5hZ2VySU9TLmgJKHJldmlzaW9uIDE4NzM2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDYgKzM3LDcgQEAgT0JKQ19DTEFTUyBXZWJNZWRpYVNlc3Npb25IZWxwZXI7CiBleHRl
cm4gTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9u
OwogZXh0ZXJuIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5v
dGlmaWNhdGlvbjsKIGV4dGVybiBOU1N0cmluZyogV2ViVUlBcHBsaWNhdGlvbkRpZEJlY29tZUFj
dGl2ZU5vdGlmaWNhdGlvbjsKK2V4dGVybiBOU1N0cmluZyogV2ViVUlBcHBsaWNhdGlvbkRpZEVu
dGVyQmFja2dyb3VuZE5vdGlmaWNhdGlvbjsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFu
YWdlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQkocmV2aXNpb24gMTg3MzY0KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0JKHdv
cmtpbmcgY29weSkKQEAgLTYxLDExICs2MSwxMyBAQCBTT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJ
QXBwbGljYXRpb24pCiBTT0ZUX0xJTktfUE9JTlRFUihVSUtpdCwgVUlBcHBsaWNhdGlvbldpbGxS
ZXNpZ25BY3RpdmVOb3RpZmljYXRpb24sIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihV
SUtpdCwgVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24sIE5TU3Ry
aW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihVSUtpdCwgVUlBcHBsaWNhdGlvbkRpZEJlY29tZUFj
dGl2ZU5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSKFVJS2l0LCBV
SUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQog
CiAjZGVmaW5lIFVJQXBwbGljYXRpb24gZ2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkKICNkZWZpbmUg
VUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gZ2V0VUlBcHBsaWNhdGlv
bldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24oKQogI2RlZmluZSBVSUFwcGxpY2F0aW9uV2ls
bEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbiBnZXRVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9y
ZWdyb3VuZE5vdGlmaWNhdGlvbigpCiAjZGVmaW5lIFVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3Rp
dmVOb3RpZmljYXRpb24gZ2V0VUlBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZU5vdGlmaWNhdGlv
bigpCisjZGVmaW5lIFVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24g
Z2V0VUlBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZE5vdGlmaWNhdGlvbigpCiAKIFNPRlRf
TElOS19GUkFNRVdPUksoTWVkaWFQbGF5ZXIpCiBTT0ZUX0xJTktfQ0xBU1MoTWVkaWFQbGF5ZXIs
IE1QQVZSb3V0aW5nQ29udHJvbGxlcikKQEAgLTg3LDYgKzg5LDcgQEAgU09GVF9MSU5LX1BPSU5U
RVIoTWVkaWFQbGF5ZXIsIE1QVm9sdW1lVgogV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqIFdlYlVJ
QXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uID0gQCJXZWJVSUFwcGxpY2F0
aW9uV2lsbFJlc2lnbkFjdGl2ZU5vdGlmaWNhdGlvbiI7CiBXRUJDT1JFX0VYUE9SVCBOU1N0cmlu
ZyogV2ViVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24gPSBAIldl
YlVJQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kTm90aWZpY2F0aW9uIjsKIFdFQkNPUkVf
RVhQT1JUIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0
aW9uID0gQCJXZWJVSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uIjsKK1dF
QkNPUkVfRVhQT1JUIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5k
Tm90aWZpY2F0aW9uID0gQCJXZWJVSUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZp
Y2F0aW9uIjsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTEwMyw2ICsxMDYsNyBA
QCAtICh2b2lkKWNsZWFyQ2FsbGJhY2s7CiAtICh2b2lkKWludGVycnVwdGlvbjooTlNOb3RpZmlj
YXRpb24gKilub3RpZmljYXRpb247CiAtICh2b2lkKWFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdy
b3VuZDooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247CiAtICh2b2lkKWFwcGxpY2F0aW9u
V2lsbFJlc2lnbkFjdGl2ZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247CistICh2b2lk
KWFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNh
dGlvbjsKIC0gKEJPT0wpaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlOwogLSAodm9pZClzdGFy
dE1vbml0b3JpbmdBaXJQbGF5Um91dGVzOwogLSAodm9pZClzdG9wTW9uaXRvcmluZ0FpclBsYXlS
b3V0ZXM7CkBAIC0yOTMsNiArMjk3LDggQEAgLSAoaWQpaW5pdFdpdGhDYWxsYmFjazooTWVkaWFT
ZXNzaW9uTWFuYQogICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0
b3IoYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmU6KSBuYW1lOldlYlVJQXBwbGljYXRpb25EaWRC
ZWNvbWVBY3RpdmVOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CiAgICAgW2NlbnRlciBhZGRPYnNl
cnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6
KSBuYW1lOlVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uIG9iamVjdDpu
aWxdOwogICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBw
bGljYXRpb25XaWxsUmVzaWduQWN0aXZlOikgbmFtZTpXZWJVSUFwcGxpY2F0aW9uV2lsbFJlc2ln
bkFjdGl2ZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKKyAgICBbY2VudGVyIGFkZE9ic2VydmVy
OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kOikg
bmFtZTpVSUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uIG9iamVjdDpu
aWxdOworICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBw
bGljYXRpb25EaWRFbnRlckJhY2tncm91bmQ6KSBuYW1lOldlYlVJQXBwbGljYXRpb25EaWRFbnRl
ckJhY2tncm91bmROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CiAKICAgICBbc2VsZiBhbGxvY2F0
ZVZvbHVtZVZpZXddOwogCkBAIC00NDgsNyArNDU0LDcgQEAgLSAodm9pZClhcHBsaWNhdGlvbldp
bGxSZXNpZ25BY3RpdmU6KE5TTgogICAgIFdlYlRocmVhZFJ1biheewogICAgICAgICBpZiAoIV9j
YWxsYmFjaykKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisKICAgICAgICAgX2NhbGxi
YWNrLT5hcHBsaWNhdGlvbldpbGxFbnRlckJhY2tncm91bmQoKTsKICAgICB9KTsKIH0KQEAgLTQ2
OSw2ICs0NzUsMjMgQEAgLSAodm9pZCl3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZQog
ICAgICAgICBfY2FsbGJhY2stPmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdl
KCk7CiAgICAgfSk7CiB9CisKKy0gKHZvaWQpYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQ6
KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCit7CisgICAgaWYgKCFfY2FsbGJhY2spCisg
ICAgICAgIHJldHVybjsKKworICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVy
IGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kXSIpOworCisgICAgQk9PTCBpc1N1c3BlbmRl
ZFVuZGVyTG9jayA9IFtbW25vdGlmaWNhdGlvbiB1c2VySW5mb10gb2JqZWN0Rm9yS2V5OkAiaXNT
dXNwZW5kZWRVbmRlckxvY2siXSBib29sVmFsdWVdOworCisgICAgV2ViVGhyZWFkUnVuKF57Cisg
ICAgICAgIGlmICghX2NhbGxiYWNrKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIF9j
YWxsYmFjay0+YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoaXNTdXNwZW5kZWRVbmRlckxv
Y2spOworICAgIH0pOworfQogQGVuZAogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpJbmRleDog
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwkocmV2aXNpb24gMTg3MzY0KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTUtMDctMjQgIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBSRUdSRVNTSU9O
KHIxNjgwNzUpOiBGdWxsc2NyZWVuIHdlYiB2aWRlbyBkb2Vzbid0IHBhdXNlIG9uIHNjcmVlbiBs
b2NrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDcy
NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNZWRp
YSBlbGVtZW50cyBzaG91bGQgcGF1c2Ugd2hlbiB0aGUgYXBwbGljYXRpb24gaXMgZ29pbmcgdG8g
RW50ZXJCYWNrZ3JvdW5kCisgICAgICAgIHVuZGVyIGxvY2sgcmVnYXJkbGVzcyB3aGV0aGVyIGl0
IGlzIGluIGZ1bGwgc2NyZWVuIG9yIG5vdC4KKworICAgICAgICAqIFBsYXRmb3JtL3NwaS9pb3Mv
VUlLaXRTUEkuaDogRm9yd2FyZCBkZWNsYXJlIFtVSUFwcGxpY2F0aW9uIGlzU3VzcGVuZGVkVW5k
ZXJMb2NrXS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3Jv
dW5kKToKKyAgICAgICAgW1VJQXBwIGlzU3VzcGVuZGVkVW5kZXJMb2NrXSBjYW4gb25seSBiZSBj
YWxsZWQgaW4gdGhlIFVJUHJvY2Vzcy4gV2UgbmVlZAorICAgICAgICB0byBjYWxsIGl0IGhlcmUg
YW5kIHBhc3MgdG8gdGhlIFdlYlBhZ2UgaW4gdGhlIFdlYlByb2Nlc3MgYXMgcGFydCBvZiB0aGUK
KyAgICAgICAgQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQgbWVzc2FnZS4KKyAgICAgICAg
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjogQWRkIHRoZSBuZXcgcGFyYW1ldGVy
OgorICAgICAgICAnaXNTdXNwZW5kZWRVbmRlckxvY2snIHRvIHRoZSBBcHBsaWNhdGlvbkRpZEVu
dGVyQmFja2dyb3VuZCBtZXNzYWdlLgorICAgICAgICAKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFwcGxp
Y2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKTogT24gaU9TLCB0aGUgV2ViUGFnZSBuZWVkcworICAg
ICAgICB0byBub3RpZnkgdGhlIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MgdGhhdCBpdCByZWNlaXZl
cyB0aGUgbWVzc2FnZSAKKyAgICAgICAgQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQuCisK
IDIwMTUtMDctMjQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBOZXR3b3JraW5nIHByb2Nlc3MgY3Jhc2ggaW4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCB3aGlsZSBhdHRlbXB0aW5n
IHRvIGRvd25sb2FkIGEgYmxvYgpJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vc3BpL2lv
cy9VSUtpdFNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3NwaS9p
b3MvVUlLaXRTUEkuaAkocmV2aXNpb24gMTg3MzY0KQorKysgU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vc3BpL2lvcy9VSUtpdFNQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDcgQEAK
IC0gKFVJSW50ZXJmYWNlT3JpZW50YXRpb24paW50ZXJmYWNlT3JpZW50YXRpb247CiAtICh2b2lk
KV9jYW5jZWxBbGxUb3VjaGVzOwogLSAoQ0dGbG9hdClzdGF0dXNCYXJIZWlnaHQ7CistIChCT09M
KWlzU3VzcGVuZGVkVW5kZXJMb2NrOwogQGVuZAogCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2Vy
LCBVSURhdGVQaWNrZXJQcml2YXRlTW9kZSkgIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCShyZXZpc2lvbiAxODczNjQpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eS5oIgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3Nh
Z2VzLmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oIgorI2ltcG9ydCAi
VUlLaXRTUEkuaCIKICNpbXBvcnQgIlVzZXJEYXRhLmgiCiAjaW1wb3J0ICJWaWV3VXBkYXRlRGlz
cGF0Y2hlck1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJJ
bnRlcm5hbC5oIgpAQCAtNjA2LDcgKzYwNyw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRVcGRh
dGVCbG9ja1NlbGVjdGkKIAogdm9pZCBXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uRGlkRW50ZXJC
YWNrZ3JvdW5kKCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFw
cGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCksIG1fcGFnZUlEKTsKKyAgICBib29sIGlzU3Vz
cGVuZGVkVW5kZXJMb2NrID0gW1VJQXBwIGlzU3VzcGVuZGVkVW5kZXJMb2NrXTsKKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3Jv
dW5kKGlzU3VzcGVuZGVkVW5kZXJMb2NrKSwgbV9wYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMTg3MzY0KQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtODA0LDcgKzgwNCw3IEBAIHB1YmxpYzoKICAgICBib29sIHNjYWxlV2FzU2V0QnlVSVBy
b2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlV2FzU2V0QnlVSVByb2Nlc3M7IH0KICAgICB2
b2lkIHdpbGxTdGFydFVzZXJUcmlnZ2VyZWRab29taW5nKCk7CiAgICAgdm9pZCBhcHBsaWNhdGlv
bldpbGxSZXNpZ25BY3RpdmUoKTsKLSAgICB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3Jv
dW5kKCk7CisgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChib29sIGlzU3Vz
cGVuZGVkVW5kZXJMb2NrKTsKICAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3Vu
ZCgpOwogICAgIHZvaWQgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKICAgICB2b2lkIHpv
b21Ub1JlY3QoV2ViQ29yZTo6RmxvYXRSZWN0LCBkb3VibGUgbWluaW11bVNjYWxlLCBkb3VibGUg
bWF4aW11bVNjYWxlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxODczNjQpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtODksNyArODksNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2Vp
dmVyIHsKICAgICBTZXRBc3Npc3RlZE5vZGVWYWx1ZUFzTnVtYmVyKGRvdWJsZSB2YWx1ZSkKICAg
ICBTZXRBc3Npc3RlZE5vZGVTZWxlY3RlZEluZGV4KHVpbnQzMl90IGluZGV4LCBib29sIGFsbG93
TXVsdGlwbGVTZWxlY3Rpb24pCiAgICAgQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCkKLSAg
ICBBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCgpCisgICAgQXBwbGljYXRpb25EaWRFbnRl
ckJhY2tncm91bmQoYm9vbCBpc1N1c3BlbmRlZFVuZGVyTG9jaykKICAgICBBcHBsaWNhdGlvbldp
bGxFbnRlckZvcmVncm91bmQoKQogICAgIEFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKICAg
ICBDb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlKFN0cmluZyBjb250ZW50U2l6ZUNhdGVnb3J5
KQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbQkocmV2aXNpb24gMTg3MzY0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yODQwLDgg
KzI4NDAsMTAgQEAgdm9pZCBXZWJQYWdlOjp2b2xhdGlsaXR5VGltZXJGaXJlZCgpCiAgICAgbV92
b2xhdGlsaXR5VGltZXIuc3RvcCgpOwogfQogCi12b2lkIFdlYlBhZ2U6OmFwcGxpY2F0aW9uRGlk
RW50ZXJCYWNrZ3JvdW5kKCkKK3ZvaWQgV2ViUGFnZTo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tn
cm91bmQoYm9vbCBpc1N1c3BlbmRlZFVuZGVyTG9jaykKIHsKKyAgICBbW05TTm90aWZpY2F0aW9u
Q2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOldlYlVJQXBwbGljYXRp
b25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24gb2JqZWN0Om5pbCB1c2VySW5mbzpAe0Ai
aXNTdXNwZW5kZWRVbmRlckxvY2siOiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6aXNTdXNwZW5k
ZWRVbmRlckxvY2tdfV07CisKICAgICBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKHRydWUpOwog
ICAgIGlmIChtYXJrTGF5ZXJzVm9sYXRpbGVJbW1lZGlhdGVseUlmUG9zc2libGUoKSkKICAgICAg
ICAgcmV0dXJuOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257680</attachid>
            <date>2015-07-28 14:05:23 -0700</date>
            <delta_ts>2015-07-28 15:31:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147269-20150728140401.patch</filename>
            <type>text/plain</type>
            <size>17477</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NzUxMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDE1LTA3LTI4ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gUkVH
UkVTU0lPTihyMTY4MDc1KTogRnVsbHNjcmVlbiB3ZWIgdmlkZW8gZG9lc24ndCBwYXVzZSBvbiBz
Y3JlZW4gbG9jaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ3MjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTWVkaWEgZWxlbWVudHMgc2hvdWxkIHBhdXNlIHdoZW4gdGhlIGFwcGxpY2F0aW9uIGlzIGdv
aW5nIHRvIEVudGVyQmFja2dyb3VuZAorICAgICAgICB1bmRlciBsb2NrIHJlZ2FyZGxlc3Mgd2hl
dGhlciBpdCBpcyBpbiBmdWxsIHNjcmVlbiBvciBub3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpkb0ludGVycnVwdGlvbik6IFRoaXMgY29kZSB3YXMgbW92ZWQgZnJvbSAKKyAgICAg
ICAgYmVnaW5JbnRlcnJ1cHRpb24oKS4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpzaG91bGREb0ludGVycnVwdGlvbik6IE1vdmUgdGhl
IGNvbmRpdGlvbiAKKyAgICAgICAgd2hpY2ggYWxsb3dzIHRoZSBtZWRpYSBzZXNzaW9uIGludGVy
cnVwdGlvbiB0byBhIHNlcGFyYXRlIGZ1bmN0aW9uLgorICAgICAgICAKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbik6IENhbGwgdGhlIGZ1
bmN0aW9ucworICAgICAgICBzaG91bGREb0ludGVycnVwdGlvbigpIGFuZCBkb0ludGVycnVwdGlv
bigpLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpm
b3JjZUludGVycnVwdGlvbik6IFRoaXMgZnVuY3Rpb24gd2lsbAorICAgICAgICBiZSBjYWxsZWQg
ZnJvbSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNr
Z3JvdW5kKCkKKyAgICAgICAgdG8gb3ZlcnJpZGUgdGhlIGRlY2lzaW9uIHdoaWNoIGlzIG1hZGUg
YnkgUGxhdGZvcm1NZWRpYVNlc3Npb246OmJlZ2luSW50ZXJydXB0aW9uKCkKKyAgICAgICAgaWYg
dGhlIGFwcGxpY2F0aW9uIGlzU3VzcGVuZGVkVW5kZXJMb2NrLgorICAgICAgICAKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjphcHBsaWNhdGlvbkRpZEVu
dGVyQmFja2dyb3VuZCk6CisgICAgICAgIFtVSUFwcCBpc1N1c3BlbmRlZFVuZGVyTG9ja10gaXMg
b25seSB2YWxpZCB3aGVuIGl0IGlzIGNhbGxlZCB3aGVuIHRoZQorICAgICAgICBVSUFwcGxpY2F0
aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uIGlzIHJlY2VpdmVkLiBXZSBuZWVkIHRv
IGZvcmNlCisgICAgICAgIGludGVycnVwdGluZyB0aGUgbWVkaWEgc2Vzc2lvbnMgaWYgdGhlIGFw
cGxpY2F0aW9uIGlzU3VzcGVuZGVkVW5kZXJMb2NrCisgICAgICAgIGFuZCBVSUFwcGxpY2F0aW9u
V2lsbFJlc2lnbkFjdGl2ZU5vdGlmaWNhdGlvbiB3YXMgaWdub3JlZCBiZWNhdXNlIG9mIFBpUC4K
KworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmg6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW06
CisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBpbml0V2l0aENhbGxiYWNrOl0pOgor
ICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGljYXRpb25EaWRFbnRlckJhY2tn
cm91bmQ6XSk6IExpc3RlbiB0byAKKyAgICAgICAgVUlBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dy
b3VuZE5vdGlmaWNhdGlvbiBhbmQgbWFrZSBhIGNhbGwgb24gdGhlIHdlYgorICAgICAgICB0aHJl
YWQgdG8gUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjphcHBsaWNhdGlvbkRpZEVudGVyQmFj
a2dyb3VuZCgpIAorICAgICAgICBhbmQgcGFzcyB0aGUgaXNTdXNwZW5kZWRVbmRlckxvY2sgZmxh
ZyB3aGljaCBpcyBxdWVyaWVkIG9uIHRoZSBVSVByb2Nlc3MuCisKIDIwMTUtMDctMjggIFNhaWQg
QWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBDcmFzaCBo
YXBwZW5zIHdoZW4gY2FsbGluZyByZW1vdmVFdmVudExpc3RlbmVyIGZvciBhbiBTVkcgZWxlbWVu
dCB3aGljaCBoYXMgYW4gaW5zdGFuY2UgaW5zaWRlIGEgPGRlZnM+IGVsZW1lbnQgb2Ygc2hhZG93
IHRyZWUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFT
ZXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Q
bGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDE4NzUxMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzksMTMgKzc5LDggQEAgdm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6c2V0U3RhdGUo
U3RhdAogICAgIG1fc3RhdGUgPSBzdGF0ZTsKIH0KIAotdm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6YmVnaW5JbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSB0eXBlKQordm9pZCBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6ZG9JbnRlcnJ1cHRpb24oKQogewotICAgIExPRyhNZWRpYSwgIlBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbiglcCksIHN0YXRlID0gJXMsIGludGVy
cnVwdGlvbiBjb3VudCA9ICVpIiwgdGhpcywgc3RhdGVOYW1lKG1fc3RhdGUpLCBtX2ludGVycnVw
dGlvbkNvdW50KTsKLQotICAgIGlmICgrK21faW50ZXJydXB0aW9uQ291bnQgPiAxIHx8ICh0eXBl
ID09IEVudGVyaW5nQmFja2dyb3VuZCAmJiBjbGllbnQoKS5vdmVycmlkZUJhY2tncm91bmRQbGF5
YmFja1Jlc3RyaWN0aW9uKCkpKQotICAgICAgICByZXR1cm47Ci0KICAgICBtX3N0YXRlVG9SZXN0
b3JlID0gc3RhdGUoKTsKICAgICBtX25vdGlmeWluZ0NsaWVudCA9IHRydWU7CiAgICAgc2V0U3Rh
dGUoSW50ZXJydXB0ZWQpOwpAQCAtOTMsNiArODgsNDAgQEAgdm9pZCBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6YmVnaW5JbnRlcnJ1cAogICAgIG1fbm90aWZ5aW5nQ2xpZW50ID0gZmFsc2U7CiB9CiAK
K2Jvb2wgUGxhdGZvcm1NZWRpYVNlc3Npb246OnNob3VsZERvSW50ZXJydXB0aW9uKEludGVycnVw
dGlvblR5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4gdHlwZSAhPSBFbnRlcmluZ0JhY2tncm91bmQg
fHwgIWNsaWVudCgpLm92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oKTsKK30K
Kwordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRpb24oSW50ZXJydXB0
aW9uVHlwZSB0eXBlKQoreworICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpi
ZWdpbkludGVycnVwdGlvbiglcCksIHN0YXRlID0gJXMsIGludGVycnVwdGlvbiBjb3VudCA9ICVp
IiwgdGhpcywgc3RhdGVOYW1lKG1fc3RhdGUpLCBtX2ludGVycnVwdGlvbkNvdW50KTsKKworICAg
IGlmICgrK21faW50ZXJydXB0aW9uQ291bnQgPiAxIHx8ICFzaG91bGREb0ludGVycnVwdGlvbih0
eXBlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZG9JbnRlcnJ1cHRpb24oKTsKK30KKwordm9p
ZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Zm9yY2VJbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlw
ZSB0eXBlKQoreworICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpmb3JjZUlu
dGVycnVwdGlvbiglcCksIHN0YXRlID0gJXMsIGludGVycnVwdGlvbiBjb3VudCA9ICVpIiwgdGhp
cywgc3RhdGVOYW1lKG1fc3RhdGUpLCBtX2ludGVycnVwdGlvbkNvdW50KTsKKworICAgIC8vIGJl
Z2luSW50ZXJydXB0aW9uKCkgbXVzdCBoYXZlIGJlZW4gY2FsbGVkIGJlZm9yZSBjYWxsaW5nIHRo
aXMgZnVuY3Rpb24uCisgICAgaWYgKCFtX2ludGVycnVwdGlvbkNvdW50KSB7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gVGhl
IHB1cnBvc2Ugb2YgdGhpcyBmdW5jdGlvbiBpcyB0byBvdmVycmlkZSB0aGUgZGVjaXNpb24gd2hp
Y2ggd2FzIG1hZGUgYnkKKyAgICAvLyBiZWdpbkludGVycnVwdGlvbigpLiBJZiBpdCB3YXMgZGVj
aWRlZCB0byBpbnRlcnJ1cHQgdGhlIG1lZGlhIHNlc3Npb24gdGhlcmUsCisgICAgLy8gdGhlbiBu
b3RoaW5nIHNob3VsZCBiZSBkb25lIGhlcmUuCisgICAgaWYgKHNob3VsZERvSW50ZXJydXB0aW9u
KHR5cGUpKQorICAgICAgICByZXR1cm47CisKKyAgICBkb0ludGVycnVwdGlvbigpOworfQorCiB2
b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjplbmRJbnRlcnJ1cHRpb24oRW5kSW50ZXJydXB0aW9u
RmxhZ3MgZmxhZ3MpCiB7CiAgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRpYVNlc3Npb246OmVu
ZEludGVycnVwdGlvbiglcCkgLSBmbGFncyA9ICVpLCBzdGF0ZVRvUmVzdG9yZSA9ICVzLCBpbnRl
cnJ1cHRpb24gY291bnQgPSAlaSIsIHRoaXMsIChpbnQpZmxhZ3MsIHN0YXRlTmFtZShtX3N0YXRl
VG9SZXN0b3JlKSwgbV9pbnRlcnJ1cHRpb25Db3VudCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgJKHJldmlzaW9u
IDE4NzUxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFT
ZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDExICs3OSwxNiBAQCBwdWJsaWM6CiAgICAg
ICAgIE5vRmxhZ3MgPSAwLAogICAgICAgICBNYXlSZXN1bWVQbGF5aW5nID0gMSA8PCAwLAogICAg
IH07CisKKyAgICB2b2lkIGRvSW50ZXJydXB0aW9uKCk7CisgICAgYm9vbCBzaG91bGREb0ludGVy
cnVwdGlvbihJbnRlcnJ1cHRpb25UeXBlKTsKICAgICB2b2lkIGJlZ2luSW50ZXJydXB0aW9uKElu
dGVycnVwdGlvblR5cGUpOworICAgIHZvaWQgZm9yY2VJbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9u
VHlwZSk7CiAgICAgdm9pZCBlbmRJbnRlcnJ1cHRpb24oRW5kSW50ZXJydXB0aW9uRmxhZ3MpOwog
CiAgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoKSBjb25zdDsKICAgICB2
b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyQmFja2dyb3VuZCgpIGNvbnN0OworICAgIHZvaWQgYXBw
bGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoYm9vbCBpc1N1c3BlbmRlZFVuZGVyTG9jaykgY29u
c3Q7CiAKICAgICBib29sIGNsaWVudFdpbGxCZWdpblBsYXliYWNrKCk7CiAgICAgYm9vbCBjbGll
bnRXaWxsUGF1c2VQbGF5YmFjaygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCShy
ZXZpc2lvbiAxODc1MTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODMsNiArMjgzLDIw
IEBAIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjphcHBsaWMKICAgICB9CiB9CiAK
K3ZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjphcHBsaWNhdGlvbkRpZEVudGVyQmFj
a2dyb3VuZChib29sIGlzU3VzcGVuZGVkVW5kZXJMb2NrKSBjb25zdAoreworICAgIExPRyhNZWRp
YSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tn
cm91bmQiKTsKKworICAgIGlmICghaXNTdXNwZW5kZWRVbmRlckxvY2spCisgICAgICAgIHJldHVy
bjsKKworICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbio+IHNlc3Npb25zID0gbV9zZXNz
aW9uczsKKyAgICBmb3IgKGF1dG8qIHNlc3Npb24gOiBzZXNzaW9ucykgeworICAgICAgICBpZiAo
bV9yZXN0cmljdGlvbnNbc2Vzc2lvbi0+bWVkaWFUeXBlKCldICYgQmFja2dyb3VuZFByb2Nlc3NQ
bGF5YmFja1Jlc3RyaWN0ZWQpCisgICAgICAgICAgICBzZXNzaW9uLT5mb3JjZUludGVycnVwdGlv
bihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW50ZXJpbmdCYWNrZ3JvdW5kKTsKKyAgICB9Cit9CisK
IHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjphcHBsaWNhdGlvbldpbGxFbnRlckZv
cmVncm91bmQoKSBjb25zdAogewogICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kIik7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXIuaAkocmV2aXNpb24gMTg3NTEwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU2LDYgKzU2LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBsaWNh
dGlvbldpbGxFbnRlckZvcmVncm91bmQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFwcGxpY2F0aW9uV2lsbEVudGVyQmFja2dyb3VuZCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoYm9vbCBpc1N1c3BlbmRlZFVu
ZGVyTG9jaykgY29uc3Q7CiAKICAgICB2b2lkIHN0b3BBbGxNZWRpYVBsYXliYWNrRm9yRG9jdW1l
bnQoY29uc3QgRG9jdW1lbnQqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BBbGxNZWRp
YVBsYXliYWNrRm9yUHJvY2VzcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oCShyZXZpc2lv
biAxODc1MTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNz
aW9uTWFuYWdlcklPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBAIE9CSkNfQ0xB
U1MgV2ViTWVkaWFTZXNzaW9uSGVscGVyOwogZXh0ZXJuIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0
aW9uV2lsbFJlc2lnbkFjdGl2ZU5vdGlmaWNhdGlvbjsKIGV4dGVybiBOU1N0cmluZyogV2ViVUlB
cHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb247CiBleHRlcm4gTlNTdHJp
bmcqIFdlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb247CitleHRlcm4g
TlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb247
CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1Mu
bW0JKHJldmlzaW9uIDE4NzUxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lv
cy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MSwxMSArNjEs
MTMgQEAgU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSUFwcGxpY2F0aW9uKQogU09GVF9MSU5LX1BP
SU5URVIoVUlLaXQsIFVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uLCBO
U1N0cmluZyAqKQogU09GVF9MSU5LX1BPSU5URVIoVUlLaXQsIFVJQXBwbGljYXRpb25XaWxsRW50
ZXJGb3JlZ3JvdW5kTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX1BPSU5URVIo
VUlLaXQsIFVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24sIE5TU3RyaW5n
ICopCitTT0ZUX0xJTktfUE9JTlRFUihVSUtpdCwgVUlBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dy
b3VuZE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKIAogI2RlZmluZSBVSUFwcGxpY2F0aW9uIGdl
dFVJQXBwbGljYXRpb25DbGFzcygpCiAjZGVmaW5lIFVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0
aXZlTm90aWZpY2F0aW9uIGdldFVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0
aW9uKCkKICNkZWZpbmUgVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRp
b24gZ2V0VUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24oKQogI2Rl
ZmluZSBVSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uIGdldFVJQXBwbGlj
YXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24oKQorI2RlZmluZSBVSUFwcGxpY2F0aW9u
RGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uIGdldFVJQXBwbGljYXRpb25EaWRFbnRlckJh
Y2tncm91bmROb3RpZmljYXRpb24oKQogCiBTT0ZUX0xJTktfRlJBTUVXT1JLKE1lZGlhUGxheWVy
KQogU09GVF9MSU5LX0NMQVNTKE1lZGlhUGxheWVyLCBNUEFWUm91dGluZ0NvbnRyb2xsZXIpCkBA
IC04Nyw2ICs4OSw3IEBAIFNPRlRfTElOS19QT0lOVEVSKE1lZGlhUGxheWVyLCBNUFZvbHVtZVYK
IFdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2
ZU5vdGlmaWNhdGlvbiA9IEAiV2ViVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmlj
YXRpb24iOwogV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25XaWxsRW50
ZXJGb3JlZ3JvdW5kTm90aWZpY2F0aW9uID0gQCJXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9y
ZWdyb3VuZE5vdGlmaWNhdGlvbiI7CiBXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyogV2ViVUlBcHBs
aWNhdGlvbkRpZEJlY29tZUFjdGl2ZU5vdGlmaWNhdGlvbiA9IEAiV2ViVUlBcHBsaWNhdGlvbkRp
ZEJlY29tZUFjdGl2ZU5vdGlmaWNhdGlvbiI7CitXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyogV2Vi
VUlBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZE5vdGlmaWNhdGlvbiA9IEAiV2ViVUlBcHBs
aWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZE5vdGlmaWNhdGlvbiI7CiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCkBAIC0xMDMsNiArMTA2LDcgQEAgLSAodm9pZCljbGVhckNhbGxiYWNrOwog
LSAodm9pZClpbnRlcnJ1cHRpb246KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwogLSAo
dm9pZClhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQ6KE5TTm90aWZpY2F0aW9uICopbm90
aWZpY2F0aW9uOwogLSAodm9pZClhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6KE5TTm90aWZp
Y2F0aW9uICopbm90aWZpY2F0aW9uOworLSAodm9pZClhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dy
b3VuZDooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247CiAtIChCT09MKWhhc1dpcmVsZXNz
VGFyZ2V0c0F2YWlsYWJsZTsKIC0gKHZvaWQpc3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRlczsK
IC0gKHZvaWQpc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVzOwpAQCAtMjkzLDYgKzI5Nyw4IEBA
IC0gKGlkKWluaXRXaXRoQ2FsbGJhY2s6KE1lZGlhU2Vzc2lvbk1hbmEKICAgICBbY2VudGVyIGFk
ZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0
aXZlOikgbmFtZTpXZWJVSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uIG9i
amVjdDpuaWxdOwogICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0
b3IoYXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlOikgbmFtZTpVSUFwcGxpY2F0aW9uV2lsbFJl
c2lnbkFjdGl2ZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKICAgICBbY2VudGVyIGFkZE9ic2Vy
dmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZTop
IG5hbWU6V2ViVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gb2JqZWN0
Om5pbF07CisgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcihh
cHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDopIG5hbWU6VUlBcHBsaWNhdGlvbkRpZEVudGVy
QmFja2dyb3VuZE5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKKyAgICBbY2VudGVyIGFkZE9ic2Vy
dmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5k
OikgbmFtZTpXZWJVSUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uIG9i
amVjdDpuaWxdOwogCiAgICAgW3NlbGYgYWxsb2NhdGVWb2x1bWVWaWV3XTsKIApAQCAtNDQ4LDcg
KzQ1NCw3IEBAIC0gKHZvaWQpYXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlOihOU04KICAgICBX
ZWJUaHJlYWRSdW4oXnsKICAgICAgICAgaWYgKCFfY2FsbGJhY2spCiAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIAorCiAgICAgICAgIF9jYWxsYmFjay0+YXBwbGljYXRpb25XaWxsRW50ZXJC
YWNrZ3JvdW5kKCk7CiAgICAgfSk7CiB9CkBAIC00NjksNiArNDc1LDIzIEBAIC0gKHZvaWQpd2ly
ZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2UKICAgICAgICAgX2NhbGxiYWNrLT5leHRlcm5h
bE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSgpOwogICAgIH0pOwogfQorCistICh2b2lk
KWFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNh
dGlvbgoreworICAgIGlmICghX2NhbGxiYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICBMT0co
TWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dy
b3VuZF0iKTsKKworICAgIEJPT0wgaXNTdXNwZW5kZWRVbmRlckxvY2sgPSBbW1tub3RpZmljYXRp
b24gdXNlckluZm9dIG9iamVjdEZvcktleTpAImlzU3VzcGVuZGVkVW5kZXJMb2NrIl0gYm9vbFZh
bHVlXTsKKworICAgIFdlYlRocmVhZFJ1biheeworICAgICAgICBpZiAoIV9jYWxsYmFjaykKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBfY2FsbGJhY2stPmFwcGxpY2F0aW9uRGlkRW50
ZXJCYWNrZ3JvdW5kKGlzU3VzcGVuZGVkVW5kZXJMb2NrKTsKKyAgICB9KTsKK30KIEBlbmQKIAog
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NzUxMCkK
KysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMw
IEBACisyMDE1LTA3LTI4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5j
b20+CisKKyAgICAgICAgW2lPU10gUkVHUkVTU0lPTihyMTY4MDc1KTogRnVsbHNjcmVlbiB3ZWIg
dmlkZW8gZG9lc24ndCBwYXVzZSBvbiBzY3JlZW4gbG9jaworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3MjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVkaWEgZWxlbWVudHMgc2hvdWxkIHBhdXNlIHdo
ZW4gdGhlIGFwcGxpY2F0aW9uIGlzIGdvaW5nIHRvIEVudGVyQmFja2dyb3VuZAorICAgICAgICB1
bmRlciBsb2NrIHJlZ2FyZGxlc3Mgd2hldGhlciBpdCBpcyBpbiBmdWxsIHNjcmVlbiBvciBub3Qu
CisKKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmg6IEZvcndhcmQgZGVjbGFy
ZSBbVUlBcHBsaWNhdGlvbiBpc1N1c3BlbmRlZFVuZGVyTG9ja10uCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCk6CisgICAgICAgIFtVSUFwcCBpc1N1
c3BlbmRlZFVuZGVyTG9ja10gY2FuIG9ubHkgYmUgY2FsbGVkIGluIHRoZSBVSVByb2Nlc3MuIFdl
IG5lZWQKKyAgICAgICAgdG8gY2FsbCBpdCBoZXJlIGFuZCBwYXNzIGl0IHRvIHRoZSBXZWJQYWdl
IGluIHRoZSBXZWJQcm9jZXNzIGFzIHBhcnQgb2YgdGhlCisgICAgICAgIEFwcGxpY2F0aW9uRGlk
RW50ZXJCYWNrZ3JvdW5kIG1lc3NhZ2UuCisgICAgICAgIAorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW46IEFkZCB0aGUgbmV3IHBhcmFtZXRlcjoKKyAgICAgICAgJ2lzU3VzcGVuZGVk
VW5kZXJMb2NrJyB0byB0aGUgQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQgbWVzc2FnZS4K
KyAgICAgICAgCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3Vu
ZCk6IE9uIGlPUywgdGhlIFdlYlBhZ2UgbmVlZHMKKyAgICAgICAgdG8gbm90aWZ5IHRoZSBNZWRp
YVNlc3Npb25NYW5hZ2VySU9TIHRoYXQgaXQgcmVjZWl2ZWQgdGhlIG1lc3NhZ2UgCisgICAgICAg
IEFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kLgorCiAyMDE1LTA3LTI3ICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFBhdGhBcHBsaWVyRnVuY3Rp
b24gc2hvdWxkIHRha2UgYSByZWZlcmVuY2UgdG8gYSBQYXRoRWxlbWVudApJbmRleDogU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAkocmV2aXNpb24gMTg3NTEwKQor
KysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDEsNiArMTAxLDcgQEAKIC0gKFVJSW50ZXJmYWNlT3JpZW50YXRpb24paW50ZXJm
YWNlT3JpZW50YXRpb247CiAtICh2b2lkKV9jYW5jZWxBbGxUb3VjaGVzOwogLSAoQ0dGbG9hdClz
dGF0dXNCYXJIZWlnaHQ7CistIChCT09MKWlzU3VzcGVuZGVkVW5kZXJMb2NrOwogQGVuZAogCiB0
eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBVSURhdGVQaWNrZXJQcml2YXRlTW9kZSkgIHsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
CShyZXZpc2lvbiAxODc1MTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCAi
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oIgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbi5oIgorI2ltcG9ydCAiVUlLaXRTUEkuaCIKICNpbXBvcnQgIlVzZXJEYXRhLmgi
CiAjaW1wb3J0ICJWaWV3VXBkYXRlRGlzcGF0Y2hlck1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXS0Jy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXJJbnRlcm5hbC5oIgpAQCAtNjA2LDcgKzYwNyw4IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRVcGRhdGVCbG9ja1NlbGVjdGkKIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCksIG1f
cGFnZUlEKTsKKyAgICBib29sIGlzU3VzcGVuZGVkVW5kZXJMb2NrID0gW1VJQXBwIGlzU3VzcGVu
ZGVkVW5kZXJMb2NrXTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFw
cGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKGlzU3VzcGVuZGVkVW5kZXJMb2NrKSwgbV9wYWdl
SUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAkocmV2aXNpb24gMTg3NTEwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtODA0LDcgKzgwNCw3IEBAIHB1YmxpYzoKICAg
ICBib29sIHNjYWxlV2FzU2V0QnlVSVByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlV2Fz
U2V0QnlVSVByb2Nlc3M7IH0KICAgICB2b2lkIHdpbGxTdGFydFVzZXJUcmlnZ2VyZWRab29taW5n
KCk7CiAgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUoKTsKLSAgICB2b2lkIGFw
cGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCk7CisgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEVu
dGVyQmFja2dyb3VuZChib29sIGlzU3VzcGVuZGVkVW5kZXJMb2NrKTsKICAgICB2b2lkIGFwcGxp
Y2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpOwogICAgIHZvaWQgYXBwbGljYXRpb25EaWRCZWNv
bWVBY3RpdmUoKTsKICAgICB2b2lkIHpvb21Ub1JlY3QoV2ViQ29yZTo6RmxvYXRSZWN0LCBkb3Vi
bGUgbWluaW11bVNjYWxlLCBkb3VibGUgbWF4aW11bVNjYWxlKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShy
ZXZpc2lvbiAxODc1MTApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQCBtZXNzYWdl
cyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRBc3Npc3RlZE5vZGVWYWx1ZUFz
TnVtYmVyKGRvdWJsZSB2YWx1ZSkKICAgICBTZXRBc3Npc3RlZE5vZGVTZWxlY3RlZEluZGV4KHVp
bnQzMl90IGluZGV4LCBib29sIGFsbG93TXVsdGlwbGVTZWxlY3Rpb24pCiAgICAgQXBwbGljYXRp
b25XaWxsUmVzaWduQWN0aXZlKCkKLSAgICBBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCgp
CisgICAgQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoYm9vbCBpc1N1c3BlbmRlZFVuZGVy
TG9jaykKICAgICBBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoKQogICAgIEFwcGxpY2F0
aW9uRGlkQmVjb21lQWN0aXZlKCkKICAgICBDb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlKFN0
cmluZyBjb250ZW50U2l6ZUNhdGVnb3J5KQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkocmV2aXNpb24gMTg3NTEwKQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yODQxLDggKzI4NDEsMTAgQEAgdm9pZCBXZWJQYWdlOjp2b2xhdGls
aXR5VGltZXJGaXJlZCgpCiAgICAgbV92b2xhdGlsaXR5VGltZXIuc3RvcCgpOwogfQogCi12b2lk
IFdlYlBhZ2U6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCkKK3ZvaWQgV2ViUGFnZTo6
YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoYm9vbCBpc1N1c3BlbmRlZFVuZGVyTG9jaykK
IHsKKyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmlj
YXRpb25OYW1lOldlYlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24g
b2JqZWN0Om5pbCB1c2VySW5mbzpAe0AiaXNTdXNwZW5kZWRVbmRlckxvY2siOiBbTlNOdW1iZXIg
bnVtYmVyV2l0aEJvb2w6aXNTdXNwZW5kZWRVbmRlckxvY2tdfV07CisKICAgICBzZXRMYXllclRy
ZWVTdGF0ZUlzRnJvemVuKHRydWUpOwogICAgIGlmIChtYXJrTGF5ZXJzVm9sYXRpbGVJbW1lZGlh
dGVseUlmUG9zc2libGUoKSkKICAgICAgICAgcmV0dXJuOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>