<?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>67930</bug_id>
          
          <creation_ts>2011-09-12 05:33:14 -0700</creation_ts>
          <short_desc>Implement flick gesture in Chromium Gesture Recognizer</short_desc>
          <delta_ts>2011-09-29 15:16:08 -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>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Varun Jain">varunjain</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>rjkroege</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>465570</commentid>
    <comment_count>0</comment_count>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2011-09-12 05:33:14 -0700</bug_when>
    <thetext>Implement flick gesture in Chromium Gesture Recognizer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465571</commentid>
    <comment_count>1</comment_count>
      <attachid>107040</attachid>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2011-09-12 05:34:56 -0700</bug_when>
    <thetext>Created attachment 107040
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465600</commentid>
    <comment_count>2</comment_count>
      <attachid>107040</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-09-12 07:48:38 -0700</bug_when>
    <thetext>Comment on attachment 107040
Patch

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

Good start. Please freshen.

&gt; Source/WebCore/page/EventHandler.cpp:2213
&gt; +        // FIXME: Stop flick if one is in progress.

This code is ultimately going to be dispatching events through what https://bugs.webkit.org/show_bug.cgi?id=67822 evolves into. In particular, implementing this FIXME requires dispatching the TapDownType to the target node/frame iff it has refcount &gt; 1. (But if you wade through the review, you&apos;ll see that I have some work ahead on this.)

&gt; Source/WebCore/page/EventHandler.cpp:2227
&gt; +    case PlatformGestureEvent::FlickType:

no. we don&apos;t need another type.

We had decided that a flick starts on scroll end that has a velocity. You ought not to need a FlickType

&gt; Source/WebCore/platform/PlatformGestureEvent.h:44
&gt; +        FlickType,

no. (I said this before.)

&gt; Source/WebCore/platform/chromium/GestureRecognizerChromium.cpp:149
&gt; +    gestures-&gt;append(PlatformGestureEvent(PlatformGestureEvent::FlickType, touchPoint.pos(), touchPoint.screenPos(), m_lastTouchTime, 0.f, 0.f, m_shiftKey, m_ctrlKey, m_altKey, m_metaKey));

no. See above.

&gt; Source/WebCore/platform/chromium/GestureRecognizerChromium.cpp:223
&gt; +        appendScrollGestureEnd(point, gestures);

remove appendFlickGesture, add ScrollEnd with velo.

&gt; Source/WebCore/platform/chromium/PopupContainer.cpp:311
&gt; +    case PlatformGestureEvent::FlickType:

Less new event types make your life easier.

&gt; Source/WebKit/chromium/tests/InnerGestureRecognizerTest.cpp:472
&gt; +{

More. Adjusted. With the traces for actual event sequences that I emailed out earlier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465661</commentid>
    <comment_count>3</comment_count>
      <attachid>107062</attachid>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2011-09-12 10:25:44 -0700</bug_when>
    <thetext>Created attachment 107062
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465662</commentid>
    <comment_count>4</comment_count>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2011-09-12 10:28:26 -0700</bug_when>
    <thetext>Removed separate FlickType... PTAL

(In reply to comment #2)
&gt; (From update of attachment 107040 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=107040&amp;action=review
&gt; 
&gt; Good start. Please freshen.
&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:2213
&gt; &gt; +        // FIXME: Stop flick if one is in progress.
&gt; 
&gt; This code is ultimately going to be dispatching events through what https://bugs.webkit.org/show_bug.cgi?id=67822 evolves into. In particular, implementing this FIXME requires dispatching the TapDownType to the target node/frame iff it has refcount &gt; 1. (But if you wade through the review, you&apos;ll see that I have some work ahead on this.)
&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:2227
&gt; &gt; +    case PlatformGestureEvent::FlickType:
&gt; 
&gt; no. we don&apos;t need another type.
&gt; 
&gt; We had decided that a flick starts on scroll end that has a velocity. You ought not to need a FlickType
&gt; 
&gt; &gt; Source/WebCore/platform/PlatformGestureEvent.h:44
&gt; &gt; +        FlickType,
&gt; 
&gt; no. (I said this before.)
&gt; 
&gt; &gt; Source/WebCore/platform/chromium/GestureRecognizerChromium.cpp:149
&gt; &gt; +    gestures-&gt;append(PlatformGestureEvent(PlatformGestureEvent::FlickType, touchPoint.pos(), touchPoint.screenPos(), m_lastTouchTime, 0.f, 0.f, m_shiftKey, m_ctrlKey, m_altKey, m_metaKey));
&gt; 
&gt; no. See above.
&gt; 
&gt; &gt; Source/WebCore/platform/chromium/GestureRecognizerChromium.cpp:223
&gt; &gt; +        appendScrollGestureEnd(point, gestures);
&gt; 
&gt; remove appendFlickGesture, add ScrollEnd with velo.
&gt; 
&gt; &gt; Source/WebCore/platform/chromium/PopupContainer.cpp:311
&gt; &gt; +    case PlatformGestureEvent::FlickType:
&gt; 
&gt; Less new event types make your life easier.
&gt; 
&gt; &gt; Source/WebKit/chromium/tests/InnerGestureRecognizerTest.cpp:472
&gt; &gt; +{
&gt; 
&gt; More. Adjusted. With the traces for actual event sequences that I emailed out earlier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466321</commentid>
    <comment_count>5</comment_count>
      <attachid>107062</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-09-13 08:57:26 -0700</bug_when>
    <thetext>Comment on attachment 107062
Patch

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

looks good to me.

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests. (OOPS!)

Not so! You wrote unit tests. And if you leave this in, the commit queue will bounce the CL.

&gt; Source/WebCore/platform/chromium/GestureRecognizerChromium.cpp:40
&gt; +static const float minFlickSpeed = 1000.0;

I lowered this to 300.f (and you should have the trailing f to avoid a temporary.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475072</commentid>
    <comment_count>6</comment_count>
      <attachid>109088</attachid>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2011-09-28 16:30:34 -0700</bug_when>
    <thetext>Created attachment 109088
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475073</commentid>
    <comment_count>7</comment_count>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2011-09-28 16:30:43 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 107062 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=107062&amp;action=review
&gt; 
&gt; looks good to me.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        No new tests. (OOPS!)
&gt; 
&gt; Not so! You wrote unit tests. And if you leave this in, the commit queue will bounce the CL.

Done

&gt; 
&gt; &gt; Source/WebCore/platform/chromium/GestureRecognizerChromium.cpp:40
&gt; &gt; +static const float minFlickSpeed = 1000.0;
&gt; 
&gt; I lowered this to 300.f (and you should have the trailing f to avoid a temporary.)

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475440</commentid>
    <comment_count>8</comment_count>
      <attachid>109088</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-09-29 08:46:43 -0700</bug_when>
    <thetext>Comment on attachment 109088
Patch

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

&gt; Source/WebCore/platform/chromium/GestureRecognizerChromium.cpp:105
&gt; +    return sqrt(m_xVelocity * m_xVelocity + m_yVelocity * m_yVelocity) &gt; minFlickSpeed;

Whoa, math!

&gt; Source/WebKit/chromium/tests/InnerGestureRecognizerTest.cpp:616
&gt; +        , new TouchPointAndEvent(256, 348, 1308336245.407, PlatformTouchPoint::TouchPressed, WebCore::TouchStart)

These commas are freaky. Can me move them to the right places?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475442</commentid>
    <comment_count>9</comment_count>
      <attachid>109088</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-09-29 08:55:33 -0700</bug_when>
    <thetext>Comment on attachment 109088
Patch

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

&gt; Source/WebCore/platform/chromium/GestureRecognizerChromium.cpp:41
&gt; +static const float minFlickSpeed = 300.f;

I think recent on-device experience suggests that this should be higher.

&gt; Source/WebCore/platform/chromium/GestureRecognizerChromium.cpp:105
&gt; +    return sqrt(m_xVelocity * m_xVelocity + m_yVelocity * m_yVelocity) &gt; minFlickSpeed;

velocities are float. so use sqrtf

&gt; Source/WebCore/platform/chromium/GestureRecognizerChromium.h:96
&gt; +    IntPoint m_lastTouchPosition;

good hygiene would requires these to have initializers and be  included in the reset.

&gt; Source/WebKit/chromium/tests/InnerGestureRecognizerTest.cpp:580
&gt; +struct TouchPointAndEvent {

I wouldn&apos;t have done this like this. I would have just had an array  of structs. But maybe this is nicer. It seems more complex than it needs to be.

I would have done: 
static EventBlah* foo[] = { { ... }, { ... } };
for (int i = 0; i &lt; sizeof(foo) / sizeof(EventBlah*); i++) { /* do stuff */ }

&gt; Source/WebKit/chromium/tests/InnerGestureRecognizerTest.cpp:583
&gt; +        : m_point(x, y, state),

the , goes under the : I think</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475452</commentid>
    <comment_count>10</comment_count>
      <attachid>109167</attachid>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2011-09-29 09:26:04 -0700</bug_when>
    <thetext>Created attachment 109167
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475496</commentid>
    <comment_count>11</comment_count>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2011-09-29 10:08:25 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 109088 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=109088&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/chromium/GestureRecognizerChromium.cpp:105
&gt; &gt; +    return sqrt(m_xVelocity * m_xVelocity + m_yVelocity * m_yVelocity) &gt; minFlickSpeed;
&gt; 
&gt; Whoa, math!
&gt; 
&gt; &gt; Source/WebKit/chromium/tests/InnerGestureRecognizerTest.cpp:616
&gt; &gt; +        , new TouchPointAndEvent(256, 348, 1308336245.407, PlatformTouchPoint::TouchPressed, WebCore::TouchStart)
&gt; 
&gt; These commas are freaky. Can me move them to the right places?

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475498</commentid>
    <comment_count>12</comment_count>
      <attachid>109172</attachid>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2011-09-29 10:08:51 -0700</bug_when>
    <thetext>Created attachment 109172
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475500</commentid>
    <comment_count>13</comment_count>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2011-09-29 10:12:17 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 109088 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=109088&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/chromium/GestureRecognizerChromium.cpp:41
&gt; &gt; +static const float minFlickSpeed = 300.f;
&gt; 
&gt; I think recent on-device experience suggests that this should be higher.
&gt; 
&gt; &gt; Source/WebCore/platform/chromium/GestureRecognizerChromium.cpp:105
&gt; &gt; +    return sqrt(m_xVelocity * m_xVelocity + m_yVelocity * m_yVelocity) &gt; minFlickSpeed;
&gt; 
&gt; velocities are float. so use sqrtf

removed sqrt

&gt; 
&gt; &gt; Source/WebCore/platform/chromium/GestureRecognizerChromium.h:96
&gt; &gt; +    IntPoint m_lastTouchPosition;
&gt; 
&gt; good hygiene would requires these to have initializers and be  included in the reset.
&gt; 

done

&gt; &gt; Source/WebKit/chromium/tests/InnerGestureRecognizerTest.cpp:580
&gt; &gt; +struct TouchPointAndEvent {
&gt; 
&gt; I wouldn&apos;t have done this like this. I would have just had an array  of structs. But maybe this is nicer. It seems more complex than it needs to be.
&gt; 
&gt; I would have done: 
&gt; static EventBlah* foo[] = { { ... }, { ... } };
&gt; for (int i = 0; i &lt; sizeof(foo) / sizeof(EventBlah*); i++) { /* do stuff */ }
&gt; 
&gt; &gt; Source/WebKit/chromium/tests/InnerGestureRecognizerTest.cpp:583
&gt; &gt; +        : m_point(x, y, state),

I think I am missing something. What we have is an array of touch sequences where each sequence is composed of touch events. Each event is defined as a touchPoint and TouchEvent... so thats what the data structures represent. Do you have a better data structure?


&gt; 
&gt; the , goes under the : I think

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475503</commentid>
    <comment_count>14</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-09-29 10:17:49 -0700</bug_when>
    <thetext>OK. You convinced me on the tests. Looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475714</commentid>
    <comment_count>15</comment_count>
      <attachid>109172</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-29 15:16:03 -0700</bug_when>
    <thetext>Comment on attachment 109172
Patch

Clearing flags on attachment: 109172

Committed r96365: &lt;http://trac.webkit.org/changeset/96365&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475715</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-29 15:16:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107040</attachid>
            <date>2011-09-12 05:34:56 -0700</date>
            <delta_ts>2011-09-12 10:25:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67930-20110912083209.patch</filename>
            <type>text/plain</type>
            <size>11735</size>
            <attacher name="Varun Jain">varunjain</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ5MDgKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCA5NDc1ZjUzOTM3MjVmNjUwZDE2NDIwNThmOTBmMzJiMDFmOWM4NjZkLi4yYTI4
ZGVlM2JlYWM5OGQ4MWQ4NDE5MjZlZDg5NjY2MTc3NGMzNGU5IDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDktMTIgIFZhcnVuIEph
aW4gIDx2YXJ1bmphaW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgZmxpY2sgZ2Vz
dHVyZSBpbiBDaHJvbWl1bSBHZXN0dXJlIFJlY29nbml6ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3OTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiAgU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwOgorICAgICAgICAqICBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdl
c3R1cmVFdmVudC5oOgorCiAyMDExLTA5LTA5ICBSYWZhZWwgQW50b2dub2xsaSAgPGFudG9nbm9s
bGlAcHJvZnVzaW9uLm1vYmk+CiAKICAgICAgICAgQWRkIHJlcGxhY2VtZW50IGZ1bmN0aW9ucyBm
b3IgZ2RrIG9uZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggNGU0Njdl
YTJjMTZiMjVlOTliN2IwZjA0NWRiMDdjZWJlZGJlOGI2Yy4uZGEyMTk3MjEyMWEwNmFlMzYzM2E2
ZjVhMTUyNWJlODNkYTVkMDBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApA
QCAtMjIxMCw2ICsyMjEwLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVu
dChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogCiAgICAgc3dpdGNo
IChnZXN0dXJlRXZlbnQudHlwZSgpKSB7CiAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6
VGFwRG93blR5cGU6CisgICAgICAgIC8vIEZJWE1FOiBTdG9wIGZsaWNrIGlmIG9uZSBpcyBpbiBw
cm9ncmVzcy4KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6
VGFwVHlwZTogewogICAgICAgICAvLyBGSVhNRTogUmVmYWN0b3IgdGhpcyBjb2RlIHRvIG5vdCBo
aXQgdGVzdCBtdWx0aXBsZSB0aW1lcyBvbmNlIGhpdCB0ZXN0aW5nIGhhcyBiZWVuIGNvcnJlY3Rl
ZCBhcyBzdWdnZXN0ZWQgYWJvdmUuCkBAIC0yMjIzLDYgKzIyMjQsOCBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0
dXJlRXZlbnQpCiAgICAgfQogICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJsZVRh
cFR5cGU6CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OkZs
aWNrVHlwZToKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6
U2Nyb2xsVXBkYXRlVHlwZTogewogICAgICAgICBjb25zdCBmbG9hdCB0aWNrRGl2aXNvciA9IChm
bG9hdClXaGVlbEV2ZW50Ojp0aWNrTXVsdGlwbGllcjsKICAgICAgICAgLy8gRklYTUU6IFJlcGxh
Y2UgdGhpcyBpbnRlcmltIGltcGxlbWVudGF0aW9uIG9uY2UgdGhlIGFib3ZlIGZpeG1lIGhhcyBi
ZWVuIGFkZHJlc3NlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtR2VzdHVyZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1
cmVFdmVudC5oCmluZGV4IDgzM2M2YTM3YWRkN2I5N2M5MDcyODk3ZDFmNTAxMDEwMmFhNzlmOTAu
LjVmMzM2NzRlY2QyMmU3N2I0ZTQ3MjgxMmE3NDE1MzM0ZGVjYWEyOGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaApAQCAtNDEsNiArNDEsNyBA
QCBwdWJsaWM6CiAgICAgICAgIFRhcFR5cGUsCiAgICAgICAgIFRhcERvd25UeXBlLAogICAgICAg
ICBEb3VibGVUYXBUeXBlLAorICAgICAgICBGbGlja1R5cGUsCiAgICAgfTsKIAogICAgIFBsYXRm
b3JtR2VzdHVyZUV2ZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5jcHAKaW5kZXggN2FiOWQ0
YmM4ZTBhZTY4MGJjMDMyNjVjNzAyYjAyYjc5YjcyMjMwNC4uMTk3MjFhN2U3OTQ3N2EwZjliYzA1
OTk0MDY1MmUzNjVlZDk2OThmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5jcHAKQEAgLTM3
LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIGNvbnN0IGRvdWJsZSBtYXhp
bXVtVG91Y2hEb3duRHVyYXRpb25JblNlY29uZHNGb3JDbGljayA9IDAuODsKIHN0YXRpYyBjb25z
dCBkb3VibGUgbWluaW11bVRvdWNoRG93bkR1cmF0aW9uSW5TZWNvbmRzRm9yQ2xpY2sgPSAwLjAx
Owogc3RhdGljIGNvbnN0IGludCBtYXhpbXVtVG91Y2hNb3ZlSW5QaXhlbHNGb3JDbGljayA9IDIw
Oworc3RhdGljIGNvbnN0IGZsb2F0IG1pbkZsaWNrU3BlZWQgPSAxMDAwLjA7CiAKIEdlc3R1cmVS
ZWNvZ25pemVyQ2hyb21pdW06Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0oKQogICAgIDogbV9m
aXJzdFRvdWNoVGltZSgwLjApCkBAIC0xMDQsNiArMTA1LDExIEBAIGJvb2wgR2VzdHVyZVJlY29n
bml6ZXJDaHJvbWl1bTo6aXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUoY29uc3QgUGxhdGZvcm1Ub3Vj
aFBvaW50CiAgICAgcmV0dXJuIG1hbmhhdHRhbkRpc3RhbmNlIDwgbWF4aW11bVRvdWNoTW92ZUlu
UGl4ZWxzRm9yQ2xpY2s7CiB9CiAKK2Jvb2wgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6aXNP
dmVyTWluRmxpY2tTcGVlZCgpCit7CisgICAgcmV0dXJuIHNxcnQobV94VmVsb2NpdHkgKiBtX3hW
ZWxvY2l0eSArIG1feVZlbG9jaXR5ICogbV95VmVsb2NpdHkpID4gbWluRmxpY2tTcGVlZDsKK30K
Kwogdm9pZCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmRUYXBEb3duR2VzdHVyZUV2
ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwgR2VzdHVyZXMgZ2VzdHVy
ZXMpCiB7CiAgICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9y
bUdlc3R1cmVFdmVudDo6VGFwRG93blR5cGUsIG1fZmlyc3RUb3VjaFBvc2l0aW9uLCBtX2ZpcnN0
VG91Y2hTY3JlZW5Qb3NpdGlvbiwgbV9sYXN0VG91Y2hUaW1lLCAwLmYsIDAuZiwgbV9zaGlmdEtl
eSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7CkBAIC0xMzgsNiArMTQ0LDExIEBA
IFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6OlBhc3NHZXN0dXJlcyBHZXN0dXJlUmVjb2duaXpl
ckNocm9taXVtOjpwcm9jZXNzVG91Y2hFCiAgICAgcmV0dXJuIGdlc3R1cmVzLnJlbGVhc2UoKTsK
IH0KIAordm9pZCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmRGbGlja0dlc3R1cmUo
Y29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBHZXN0dXJlcyBnZXN0dXJlcykK
K3sKKyAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtR2Vz
dHVyZUV2ZW50OjpGbGlja1R5cGUsIHRvdWNoUG9pbnQucG9zKCksIHRvdWNoUG9pbnQuc2NyZWVu
UG9zKCksIG1fbGFzdFRvdWNoVGltZSwgMC5mLCAwLmYsIG1fc2hpZnRLZXksIG1fY3RybEtleSwg
bV9hbHRLZXksIG1fbWV0YUtleSkpOworfQorCiB2b2lkIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21p
dW06OmFwcGVuZFNjcm9sbEdlc3R1cmVCZWdpbihjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHRv
dWNoUG9pbnQsIEdlc3R1cmVzIGdlc3R1cmVzKQogewogICAgIGdlc3R1cmVzLT5hcHBlbmQoUGxh
dGZvcm1HZXN0dXJlRXZlbnQoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZSwg
dG91Y2hQb2ludC5wb3MoKSwgdG91Y2hQb2ludC5zY3JlZW5Qb3MoKSwgbV9sYXN0VG91Y2hUaW1l
LCAwLmYsIDAuZiwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7
CkBAIC0xNTksNiArMTcwLDEzIEBAIHZvaWQgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6YXBw
ZW5kU2Nyb2xsR2VzdHVyZVVwZGF0ZShjb25zdCBQbGF0Zm9ybVRvdWNoUG9pCiAKIHZvaWQgR2Vz
dHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6dXBkYXRlVmFsdWVzKGNvbnN0IGRvdWJsZSB0b3VjaFRp
bWUsIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCkKIHsKKyAgICBpZiAobV9z
dGF0ZSAhPSBOb0dlc3R1cmUgJiYgdG91Y2hQb2ludC5zdGF0ZSgpID09IFBsYXRmb3JtVG91Y2hQ
b2ludDo6VG91Y2hNb3ZlZCkgeworICAgICAgICBkb3VibGUgaW50ZXJ2YWwodG91Y2hUaW1lIC0g
bV9sYXN0VG91Y2hUaW1lKTsKKyAgICAgICAgbV94VmVsb2NpdHkgPSAodG91Y2hQb2ludC5wb3Mo
KS54KCkgLSBtX2xhc3RUb3VjaFBvc2l0aW9uLngoKSkgLyBpbnRlcnZhbDsKKyAgICAgICAgbV95
VmVsb2NpdHkgPSAodG91Y2hQb2ludC5wb3MoKS55KCkgLSBtX2xhc3RUb3VjaFBvc2l0aW9uLnko
KSkgLyBpbnRlcnZhbDsKKyAgICAgICAgbV9sYXN0VG91Y2hQb3NpdGlvbiA9IHRvdWNoUG9pbnQu
cG9zKCk7CisgICAgICAgIG1fbGFzdFRvdWNoU2NyZWVuUG9zaXRpb24gPSB0b3VjaFBvaW50LnNj
cmVlblBvcygpOworICAgIH0KICAgICBpZiAoc3RhdGUoKSA9PSBGaXJzdENsaWNrUmVjZWl2ZWQp
IHsKICAgICAgICAgbV9maXJzdFRvdWNoVGltZSA9IHRvdWNoVGltZTsKICAgICAgICAgbV9sYXN0
Q2xpY2tUaW1lID0gbV9sYXN0VG91Y2hUaW1lOwpAQCAtMTY4LDYgKzE4Niw4IEBAIHZvaWQgR2Vz
dHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6dXBkYXRlVmFsdWVzKGNvbnN0IGRvdWJsZSB0b3VjaFRp
bWUsIGNvbnN0IFBsYXRmCiAgICAgICAgIG1fZmlyc3RUb3VjaFRpbWUgPSB0b3VjaFRpbWU7CiAg
ICAgICAgIG1fZmlyc3RUb3VjaFBvc2l0aW9uID0gdG91Y2hQb2ludC5wb3MoKTsKICAgICAgICAg
bV9maXJzdFRvdWNoU2NyZWVuUG9zaXRpb24gPSB0b3VjaFBvaW50LnNjcmVlblBvcygpOworICAg
ICAgICBtX3hWZWxvY2l0eSA9IDAuMDsKKyAgICAgICAgbV95VmVsb2NpdHkgPSAwLjA7CiAgICAg
fQogfQogCkBAIC0xOTcsNyArMjE3LDEwIEBAIGJvb2wgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1
bTo6dG91Y2hEb3duKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwKIAogYm9v
bCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpzY3JvbGxFbmQoY29uc3QgUGxhdGZvcm1Ub3Vj
aFBvaW50JiBwb2ludCwgR2VzdHVyZXMgZ2VzdHVyZXMpCiB7Ci0gICAgYXBwZW5kU2Nyb2xsR2Vz
dHVyZUVuZChwb2ludCwgZ2VzdHVyZXMpOworICAgIGlmIChpc092ZXJNaW5GbGlja1NwZWVkKCkp
CisgICAgICAgIGFwcGVuZEZsaWNrR2VzdHVyZShwb2ludCwgZ2VzdHVyZXMpOworICAgIGVsc2UK
KyAgICAgICAgYXBwZW5kU2Nyb2xsR2VzdHVyZUVuZChwb2ludCwgZ2VzdHVyZXMpOwogICAgIHNl
dFN0YXRlKE5vR2VzdHVyZSk7CiAgICAgcmVzZXQoKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXpl
ckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVj
b2duaXplckNocm9taXVtLmgKaW5kZXggNGVkZGEzYmMxOTE5MzIwZGEwY2Q4Y2IxZWE3MTNmMjAz
OWQyMzUxZi4uMjhhOTE5ZTU4ZDJlNTY4MmUwZmUzODQ1ZDA0NTYyZjU0MjdkM2QyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJD
aHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVS
ZWNvZ25pemVyQ2hyb21pdW0uaApAQCAtNzEsMTIgKzcxLDE0IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBhcHBlbmRUYXBEb3duR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYsIEdl
c3R1cmVzKTsKICAgICB2b2lkIGFwcGVuZENsaWNrR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3Jt
VG91Y2hQb2ludCYsIEdlc3R1cmVzKTsKICAgICB2b2lkIGFwcGVuZERvdWJsZUNsaWNrR2VzdHVy
ZUV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYsIEdlc3R1cmVzKTsKKyAgICB2b2lkIGFw
cGVuZEZsaWNrR2VzdHVyZShjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmLCBHZXN0dXJlcyk7CiAg
ICAgdm9pZCBhcHBlbmRTY3JvbGxHZXN0dXJlQmVnaW4oY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50
JiwgR2VzdHVyZXMpOwogICAgIHZvaWQgYXBwZW5kU2Nyb2xsR2VzdHVyZUVuZChjb25zdCBQbGF0
Zm9ybVRvdWNoUG9pbnQmLCBHZXN0dXJlcyk7CiAgICAgdm9pZCBhcHBlbmRTY3JvbGxHZXN0dXJl
VXBkYXRlKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYsIEdlc3R1cmVzKTsKICAgICBib29sIGlz
SW5DbGlja1RpbWVXaW5kb3coKTsKICAgICBib29sIGlzSW5TZWNvbmRDbGlja1RpbWVXaW5kb3co
KTsKICAgICBib29sIGlzSW5zaWRlTWFuaGF0dGFuU3F1YXJlKGNvbnN0IFBsYXRmb3JtVG91Y2hQ
b2ludCYpOworICAgIGJvb2wgaXNPdmVyTWluRmxpY2tTcGVlZCgpOwogICAgIHZvaWQgc2V0U3Rh
dGUoU3RhdGUgdmFsdWUpIHsgbV9zdGF0ZSA9IHZhbHVlOyB9CiAgICAgdm9pZCB1cGRhdGVWYWx1
ZXMoZG91YmxlIHRvdWNoVGltZSwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Jik7CiAKQEAgLTk3
LDYgKzk5LDEwIEBAIHByaXZhdGU6CiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBkb3VibGUgbV9s
YXN0VG91Y2hUaW1lOwogICAgIGRvdWJsZSBtX2xhc3RDbGlja1RpbWU7CisgICAgSW50UG9pbnQg
bV9sYXN0VG91Y2hQb3NpdGlvbjsKKyAgICBJbnRQb2ludCBtX2xhc3RUb3VjaFNjcmVlblBvc2l0
aW9uOworICAgIGZsb2F0IG1feFZlbG9jaXR5OworICAgIGZsb2F0IG1feVZlbG9jaXR5OwogCiAg
ICAgYm9vbCBtX2N0cmxLZXk7CiAgICAgYm9vbCBtX2FsdEtleTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwQ29udGFpbmVyLmNwcAppbmRleCA3M2RlZWQz
ZDkwZDZjYWE5YWUzNDg5MWEzMDA2MDY4YTA4YTExYmY5Li5jYmE1Y2FiNzBjNjFlM2NmNjhiNTQ2
NzU5MmVmYjQ1YjM5YjhhZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9Qb3B1cENvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUG9wdXBDb250YWluZXIuY3BwCkBAIC0zMDgsNiArMzA4LDggQEAgYm9vbCBQb3B1
cENvbnRhaW5lcjo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50
JiBnZXN0dXJlRXZlbnQKICAgICB9CiAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91
YmxlVGFwVHlwZToKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVu
dDo6RmxpY2tUeXBlOgorICAgICAgICBicmVhazsKICAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2
ZW50OjpTY3JvbGxVcGRhdGVUeXBlOiB7CiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudCBzeW50
aGV0aWNXaGVlbEV2ZW50KGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xv
YmFsUG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50LmRlbHRhWCgpLCBnZXN0dXJlRXZlbnQuZGVsdGFZ
KCksIGdlc3R1cmVFdmVudC5kZWx0YVgoKSAvIDEyMC4wZiwgZ2VzdHVyZUV2ZW50LmRlbHRhWSgp
IC8gMTIwLjBmLCBTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCwgLyogaXNBY2NlcHRlZCAqLyBmYWxz
ZSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1
cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSk7CiAgICAgICAgIGhhbmRs
ZVdoZWVsRXZlbnQoc3ludGhldGljV2hlZWxFdmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0lubmVyR2VzdHVyZVJlY29nbml6ZXJUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW5uZXJHZXN0dXJlUmVjb2duaXplclRlc3QuY3BwCmlu
ZGV4IGJiZjM0NDExYjllNGViNDUzZGNiNzRkY2U0NGI5MTgyNmIxNGRhMDguLjQ3NWQwZTg5ZDFk
NGNmMjZlMTIxZWI2MDY2N2U1Mzg1ZGE2MDJhMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSW5uZXJHZXN0dXJlUmVjb2duaXplclRlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW5uZXJHZXN0dXJlUmVjb2duaXplclRlc3QuY3BwCkBA
IC00MzAsNiArNDMwLDcgQEAgVEVTVF9GKEdlc3R1cmVSZWNvZ25pemVyVGVzdCwgZ2VzdHVyZVNj
cm9sbEV2ZW50cykKIAogICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hQb2ludCBtb3ZlKDEwLCA1
MCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkKTsKICAgICBCdWlsZGFibGVQbGF0Zm9y
bVRvdWNoRXZlbnQgbW92ZUV2ZW50KFdlYkNvcmU6OlRvdWNoTW92ZSwgbW92ZSk7CisgICAgZ20u
c2V0TGFzdFRvdWNoVGltZShnbS5sYXN0VG91Y2hUaW1lKCkgLSAwLjEpOwogICAgIEdlc3R1cmVz
IGdlc3R1cmVTdGFydChnbS5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKG1vdmVFdmVudCwg
ZmFsc2UpKTsKICAgICBib29sIHNjcm9sbFN0YXJ0ZWQgPSBmYWxzZSwgc2Nyb2xsVXBkYXRlZCA9
IGZhbHNlOwogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZ2VzdHVyZVN0YXJ0LT5z
aXplKCk7IGkrKykgewpAQCAtNDUxLDYgKzQ1Miw3IEBAIFRFU1RfRihHZXN0dXJlUmVjb2duaXpl
clRlc3QsIGdlc3R1cmVTY3JvbGxFdmVudHMpCiAKICAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNo
UG9pbnQgcmVsZWFzZSgxMCwgNTAsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZCk7
CiAgICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaEV2ZW50IHJlbGVhc2VFdmVudChXZWJDb3JlOjpU
b3VjaEVuZCwgcmVsZWFzZSk7CisgICAgZ20uc2V0TGFzdFRvdWNoVGltZShnbS5sYXN0VG91Y2hU
aW1lKCkgLSAwLjEpOwogICAgIGJvb2wgc2Nyb2xsRW5kID0gZmFsc2U7CiAgICAgR2VzdHVyZXMg
Z2VzdHVyZUVuZChnbS5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKHJlbGVhc2VFdmVudCwg
ZmFsc2UpKTsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGdlc3R1cmVFbmQtPnNp
emUoKTsgaSsrKSB7CkBAIC00NjUsMyArNDY3LDQ0IEBAIFRFU1RfRihHZXN0dXJlUmVjb2duaXpl
clRlc3QsIGdlc3R1cmVTY3JvbGxFdmVudHMpCiAgICAgQVNTRVJUX1RSVUUoc2Nyb2xsRW5kKTsK
ICAgICBBU1NFUlRfRVEoR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6Tm9HZXN0dXJlLCBnbS5z
dGF0ZSgpKTsKIH0KKworVEVTVF9GKEdlc3R1cmVSZWNvZ25pemVyVGVzdCwgZmxpY2tHZXN0dXJl
VGVzdCkKK3sKKyAgICBJbnNwZWN0YWJsZUdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0gZ207Cisg
ICAgQVNTRVJUX0VRKEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06Ok5vR2VzdHVyZSwgZ20uc3Rh
dGUoKSk7CisKKyAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQgcHJlc3MoMTAsIDE1LCBQ
bGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZCk7CisgICAgQnVpbGRhYmxlUGxhdGZvcm1U
b3VjaEV2ZW50IHByZXNzRXZlbnQoV2ViQ29yZTo6VG91Y2hTdGFydCwgcHJlc3MpOworICAgIEdl
c3R1cmVzIGdlc3R1cmVTdGFydChnbS5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKHByZXNz
RXZlbnQsIGZhbHNlKSk7CisgICAgQVNTRVJUX0VRKCh1bnNpZ25lZCBpbnQpMSwgZ2VzdHVyZVN0
YXJ0LT5zaXplKCkpOworICAgIEFTU0VSVF9FUShQbGF0Zm9ybUdlc3R1cmVFdmVudDo6VGFwRG93
blR5cGUsICgqZ2VzdHVyZVN0YXJ0KVswXS50eXBlKCkpOworICAgIEFTU0VSVF9FUShHZXN0dXJl
UmVjb2duaXplckNocm9taXVtOjpQZW5kaW5nU3ludGhldGljQ2xpY2ssIGdtLnN0YXRlKCkpOwor
CisgICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50IG1vdmUoMTAsIDUwLCBQbGF0Zm9ybVRv
dWNoUG9pbnQ6OlRvdWNoTW92ZWQpOworICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hFdmVudCBt
b3ZlRXZlbnQoV2ViQ29yZTo6VG91Y2hNb3ZlLCBtb3ZlKTsKKyAgICBHZXN0dXJlcyBnZXN0dXJl
TW92ZShnbS5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKG1vdmVFdmVudCwgZmFsc2UpKTsK
KyAgICBib29sIHNjcm9sbFN0YXJ0ZWQgPSBmYWxzZSwgc2Nyb2xsVXBkYXRlZCA9IGZhbHNlOwor
ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZ2VzdHVyZU1vdmUtPnNpemUoKTsgaSsr
KSB7CisgICAgICAgIHN3aXRjaCAoKCpnZXN0dXJlTW92ZSlbaV0udHlwZSgpKSB7CisgICAgICAg
IGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZToKKyAgICAgICAgICAg
IHNjcm9sbFN0YXJ0ZWQgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0ZVR5cGU6CisgICAgICAgICAgICBzY3Jv
bGxVcGRhdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgQVNTRVJUX1RSVUUoZmFsc2UpOworICAgICAgICB9CisgICAgfQorCisgICAg
QVNTRVJUX1RSVUUoc2Nyb2xsU3RhcnRlZCk7CisgICAgQVNTRVJUX1RSVUUoc2Nyb2xsVXBkYXRl
ZCk7CisgICAgQVNTRVJUX0VRKEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OlNjcm9sbCwgZ20u
c3RhdGUoKSk7CisKKyAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQgcmVsZWFzZSgxMCwg
NTAsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZCk7CisgICAgQnVpbGRhYmxlUGxh
dGZvcm1Ub3VjaEV2ZW50IHJlbGVhc2VFdmVudChXZWJDb3JlOjpUb3VjaEVuZCwgcmVsZWFzZSk7
CisgICAgR2VzdHVyZXMgZ2VzdHVyZUVuZChnbS5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVz
KHJlbGVhc2VFdmVudCwgZmFsc2UpKTsKKyAgICBBU1NFUlRfRVEoKHVuc2lnbmVkIGludCkgMSwg
Z2VzdHVyZUVuZC0+c2l6ZSgpKTsKKyAgICBBU1NFUlRfRVEoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6
OkZsaWNrVHlwZSwgKCpnZXN0dXJlRW5kKVswXS50eXBlKCkpOworICAgIEFTU0VSVF9FUShHZXN0
dXJlUmVjb2duaXplckNocm9taXVtOjpOb0dlc3R1cmUsIGdtLnN0YXRlKCkpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107062</attachid>
            <date>2011-09-12 10:25:44 -0700</date>
            <delta_ts>2011-09-28 16:30:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>gitdiff</filename>
            <type>text/plain</type>
            <size>10508</size>
            <attacher name="Varun Jain">varunjain</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxOTA5MGVkLi5kYTQyMjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTEtMDktMTIgIFZhcnVuIEphaW4gIDx2YXJ1bmphaW5AZ29vZ2xlLmNvbT4KKworICAg
ICAgICBJbXBsZW1lbnQgZmxpY2sgZ2VzdHVyZSBpbiBDaHJvbWl1bSBHZXN0dXJlIFJlY29nbml6
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3OTMw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVj
b2duaXplckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVSZWNvZ25pemVy
Q2hyb21pdW06OmlzT3Zlck1pbkZsaWNrU3BlZWQpOgorICAgICAgICAoV2ViQ29yZTo6R2VzdHVy
ZVJlY29nbml6ZXJDaHJvbWl1bTo6YXBwZW5kU2Nyb2xsR2VzdHVyZUVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjp1cGRhdGVWYWx1ZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6R2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6c2Nyb2xsRW5kKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmg6CisKIDIw
MTEtMDktMTIgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBJ
bXBsZW1lbnQgYSBXZWJLaXRBbmltYXRpb25FdmVudCBjb25zdHJ1Y3RvciBmb3IgVjgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVy
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJl
Y29nbml6ZXJDaHJvbWl1bS5jcHAKaW5kZXggN2FiOWQ0Yi4uNjdmMTk0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29n
bml6ZXJDaHJvbWl1bS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
c3RhdGljIGNvbnN0IGRvdWJsZSBtYXhpbXVtVG91Y2hEb3duRHVyYXRpb25JblNlY29uZHNGb3JD
bGljayA9IDAuODsKIHN0YXRpYyBjb25zdCBkb3VibGUgbWluaW11bVRvdWNoRG93bkR1cmF0aW9u
SW5TZWNvbmRzRm9yQ2xpY2sgPSAwLjAxOwogc3RhdGljIGNvbnN0IGludCBtYXhpbXVtVG91Y2hN
b3ZlSW5QaXhlbHNGb3JDbGljayA9IDIwOworc3RhdGljIGNvbnN0IGZsb2F0IG1pbkZsaWNrU3Bl
ZWQgPSAxMDAwLjA7CiAKIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06Okdlc3R1cmVSZWNvZ25p
emVyQ2hyb21pdW0oKQogICAgIDogbV9maXJzdFRvdWNoVGltZSgwLjApCkBAIC0xMDQsNiArMTA1
LDExIEBAIGJvb2wgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6aXNJbnNpZGVNYW5oYXR0YW5T
cXVhcmUoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50CiAgICAgcmV0dXJuIG1hbmhhdHRhbkRpc3Rh
bmNlIDwgbWF4aW11bVRvdWNoTW92ZUluUGl4ZWxzRm9yQ2xpY2s7CiB9CiAKK2Jvb2wgR2VzdHVy
ZVJlY29nbml6ZXJDaHJvbWl1bTo6aXNPdmVyTWluRmxpY2tTcGVlZCgpCit7CisgICAgcmV0dXJu
IHNxcnQobV94VmVsb2NpdHkgKiBtX3hWZWxvY2l0eSArIG1feVZlbG9jaXR5ICogbV95VmVsb2Np
dHkpID4gbWluRmxpY2tTcGVlZDsKK30KKwogdm9pZCBHZXN0dXJlUmVjb2duaXplckNocm9taXVt
OjphcHBlbmRUYXBEb3duR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91
Y2hQb2ludCwgR2VzdHVyZXMgZ2VzdHVyZXMpCiB7CiAgICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0
Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9ybUdlc3R1cmVFdmVudDo6VGFwRG93blR5cGUsIG1fZmly
c3RUb3VjaFBvc2l0aW9uLCBtX2ZpcnN0VG91Y2hTY3JlZW5Qb3NpdGlvbiwgbV9sYXN0VG91Y2hU
aW1lLCAwLmYsIDAuZiwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5
KSk7CkBAIC0xNDMsOSArMTQ5LDkgQEAgdm9pZCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjph
cHBlbmRTY3JvbGxHZXN0dXJlQmVnaW4oY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW4KICAgICBnZXN0
dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpT
Y3JvbGxCZWdpblR5cGUsIHRvdWNoUG9pbnQucG9zKCksIHRvdWNoUG9pbnQuc2NyZWVuUG9zKCks
IG1fbGFzdFRvdWNoVGltZSwgMC5mLCAwLmYsIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRL
ZXksIG1fbWV0YUtleSkpOwogfQogCi12b2lkIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFw
cGVuZFNjcm9sbEdlc3R1cmVFbmQoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50
LCBHZXN0dXJlcyBnZXN0dXJlcykKK3ZvaWQgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6YXBw
ZW5kU2Nyb2xsR2VzdHVyZUVuZChjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQs
IEdlc3R1cmVzIGdlc3R1cmVzLCBmbG9hdCB4VmVsb2NpdHksIGZsb2F0IHlWZWxvY2l0eSkKIHsK
LSAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtR2VzdHVy
ZUV2ZW50OjpTY3JvbGxFbmRUeXBlLCB0b3VjaFBvaW50LnBvcygpLCB0b3VjaFBvaW50LnNjcmVl
blBvcygpLCBtX2xhc3RUb3VjaFRpbWUsIDAuZiwgMC5mLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXks
IG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKKyAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2Vz
dHVyZUV2ZW50KFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBlLCB0b3VjaFBvaW50
LnBvcygpLCB0b3VjaFBvaW50LnNjcmVlblBvcygpLCBtX2xhc3RUb3VjaFRpbWUsIHhWZWxvY2l0
eSwgeVZlbG9jaXR5LCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkp
KTsKIH0KIAogdm9pZCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmRTY3JvbGxHZXN0
dXJlVXBkYXRlKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwgR2VzdHVyZXMg
Z2VzdHVyZXMpCkBAIC0xNTksNiArMTY1LDEzIEBAIHZvaWQgR2VzdHVyZVJlY29nbml6ZXJDaHJv
bWl1bTo6YXBwZW5kU2Nyb2xsR2VzdHVyZVVwZGF0ZShjb25zdCBQbGF0Zm9ybVRvdWNoUG9pCiAK
IHZvaWQgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6dXBkYXRlVmFsdWVzKGNvbnN0IGRvdWJs
ZSB0b3VjaFRpbWUsIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCkKIHsKKyAg
ICBpZiAobV9zdGF0ZSAhPSBOb0dlc3R1cmUgJiYgdG91Y2hQb2ludC5zdGF0ZSgpID09IFBsYXRm
b3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCkgeworICAgICAgICBkb3VibGUgaW50ZXJ2YWwodG91
Y2hUaW1lIC0gbV9sYXN0VG91Y2hUaW1lKTsKKyAgICAgICAgbV94VmVsb2NpdHkgPSAodG91Y2hQ
b2ludC5wb3MoKS54KCkgLSBtX2xhc3RUb3VjaFBvc2l0aW9uLngoKSkgLyBpbnRlcnZhbDsKKyAg
ICAgICAgbV95VmVsb2NpdHkgPSAodG91Y2hQb2ludC5wb3MoKS55KCkgLSBtX2xhc3RUb3VjaFBv
c2l0aW9uLnkoKSkgLyBpbnRlcnZhbDsKKyAgICAgICAgbV9sYXN0VG91Y2hQb3NpdGlvbiA9IHRv
dWNoUG9pbnQucG9zKCk7CisgICAgICAgIG1fbGFzdFRvdWNoU2NyZWVuUG9zaXRpb24gPSB0b3Vj
aFBvaW50LnNjcmVlblBvcygpOworICAgIH0KICAgICBpZiAoc3RhdGUoKSA9PSBGaXJzdENsaWNr
UmVjZWl2ZWQpIHsKICAgICAgICAgbV9maXJzdFRvdWNoVGltZSA9IHRvdWNoVGltZTsKICAgICAg
ICAgbV9sYXN0Q2xpY2tUaW1lID0gbV9sYXN0VG91Y2hUaW1lOwpAQCAtMTY4LDYgKzE4MSw4IEBA
IHZvaWQgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6dXBkYXRlVmFsdWVzKGNvbnN0IGRvdWJs
ZSB0b3VjaFRpbWUsIGNvbnN0IFBsYXRmCiAgICAgICAgIG1fZmlyc3RUb3VjaFRpbWUgPSB0b3Vj
aFRpbWU7CiAgICAgICAgIG1fZmlyc3RUb3VjaFBvc2l0aW9uID0gdG91Y2hQb2ludC5wb3MoKTsK
ICAgICAgICAgbV9maXJzdFRvdWNoU2NyZWVuUG9zaXRpb24gPSB0b3VjaFBvaW50LnNjcmVlblBv
cygpOworICAgICAgICBtX3hWZWxvY2l0eSA9IDAuMDsKKyAgICAgICAgbV95VmVsb2NpdHkgPSAw
LjA7CiAgICAgfQogfQogCkBAIC0xOTcsNyArMjEyLDEwIEBAIGJvb2wgR2VzdHVyZVJlY29nbml6
ZXJDaHJvbWl1bTo6dG91Y2hEb3duKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2lu
dCwKIAogYm9vbCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpzY3JvbGxFbmQoY29uc3QgUGxh
dGZvcm1Ub3VjaFBvaW50JiBwb2ludCwgR2VzdHVyZXMgZ2VzdHVyZXMpCiB7Ci0gICAgYXBwZW5k
U2Nyb2xsR2VzdHVyZUVuZChwb2ludCwgZ2VzdHVyZXMpOworICAgIGlmIChpc092ZXJNaW5GbGlj
a1NwZWVkKCkpCisgICAgICAgIGFwcGVuZFNjcm9sbEdlc3R1cmVFbmQocG9pbnQsIGdlc3R1cmVz
LCBtX3hWZWxvY2l0eSwgbV95VmVsb2NpdHkpOworICAgIGVsc2UKKyAgICAgICAgYXBwZW5kU2Ny
b2xsR2VzdHVyZUVuZChwb2ludCwgZ2VzdHVyZXMsIDAuZiwgMC5mKTsKICAgICBzZXRTdGF0ZShO
b0dlc3R1cmUpOwogICAgIHJlc2V0KCk7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1
bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJD
aHJvbWl1bS5oCmluZGV4IDRlZGRhM2IuLjEyZGY1M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVt
LmgKQEAgLTcyLDExICs3MiwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgYXBwZW5kQ2xpY2tHZXN0
dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgR2VzdHVyZXMpOwogICAgIHZvaWQg
YXBwZW5kRG91YmxlQ2xpY2tHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Jiwg
R2VzdHVyZXMpOwogICAgIHZvaWQgYXBwZW5kU2Nyb2xsR2VzdHVyZUJlZ2luKGNvbnN0IFBsYXRm
b3JtVG91Y2hQb2ludCYsIEdlc3R1cmVzKTsKLSAgICB2b2lkIGFwcGVuZFNjcm9sbEdlc3R1cmVF
bmQoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgR2VzdHVyZXMpOworICAgIHZvaWQgYXBwZW5k
U2Nyb2xsR2VzdHVyZUVuZChjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmLCBHZXN0dXJlcywgZmxv
YXQsIGZsb2F0KTsKICAgICB2b2lkIGFwcGVuZFNjcm9sbEdlc3R1cmVVcGRhdGUoY29uc3QgUGxh
dGZvcm1Ub3VjaFBvaW50JiwgR2VzdHVyZXMpOwogICAgIGJvb2wgaXNJbkNsaWNrVGltZVdpbmRv
dygpOwogICAgIGJvb2wgaXNJblNlY29uZENsaWNrVGltZVdpbmRvdygpOwogICAgIGJvb2wgaXNJ
bnNpZGVNYW5oYXR0YW5TcXVhcmUoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Jik7CisgICAgYm9v
bCBpc092ZXJNaW5GbGlja1NwZWVkKCk7CiAgICAgdm9pZCBzZXRTdGF0ZShTdGF0ZSB2YWx1ZSkg
eyBtX3N0YXRlID0gdmFsdWU7IH0KICAgICB2b2lkIHVwZGF0ZVZhbHVlcyhkb3VibGUgdG91Y2hU
aW1lLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmKTsKIApAQCAtOTcsNiArOTgsMTAgQEAgcHJp
dmF0ZToKICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIGRvdWJsZSBtX2xhc3RUb3VjaFRpbWU7CiAg
ICAgZG91YmxlIG1fbGFzdENsaWNrVGltZTsKKyAgICBJbnRQb2ludCBtX2xhc3RUb3VjaFBvc2l0
aW9uOworICAgIEludFBvaW50IG1fbGFzdFRvdWNoU2NyZWVuUG9zaXRpb247CisgICAgZmxvYXQg
bV94VmVsb2NpdHk7CisgICAgZmxvYXQgbV95VmVsb2NpdHk7CiAKICAgICBib29sIG1fY3RybEtl
eTsKICAgICBib29sIG1fYWx0S2V5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBlZWZj
ODFhLi5jOGMyYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDExLTA5LTEyICBWYXJ1biBKYWluICA8dmFydW5qYWluQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgSW1wbGVtZW50IGZsaWNrIGdlc3R1cmUgaW4gQ2hyb21pdW0gR2VzdHVyZSBSZWNvZ25pemVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzkzMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMv
SW5uZXJHZXN0dXJlUmVjb2duaXplclRlc3QuY3BwOgorICAgICAgICAoVEVTVF9GKToKKwogMjAx
MS0wOS0xMSAgSmVyZW15IE1vc2tvdmljaCAgPGplcmVteUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgW0Nocm9taXVtXSBDaGFuZ2UgT09QIEZvbnQgbG9hZGluZyBjb2RlIHRvIHVzZSBDR0ZvbnQq
KCkgQVBJcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW5uZXJH
ZXN0dXJlUmVjb2duaXplclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9J
bm5lckdlc3R1cmVSZWNvZ25pemVyVGVzdC5jcHAKaW5kZXggYmJmMzQ0MS4uNzMwNWRlZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Jbm5lckdlc3R1cmVSZWNvZ25p
emVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Jbm5lckdlc3R1
cmVSZWNvZ25pemVyVGVzdC5jcHAKQEAgLTQzMCw2ICs0MzAsNyBAQCBURVNUX0YoR2VzdHVyZVJl
Y29nbml6ZXJUZXN0LCBnZXN0dXJlU2Nyb2xsRXZlbnRzKQogCiAgICAgQnVpbGRhYmxlUGxhdGZv
cm1Ub3VjaFBvaW50IG1vdmUoMTAsIDUwLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQp
OwogICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hFdmVudCBtb3ZlRXZlbnQoV2ViQ29yZTo6VG91
Y2hNb3ZlLCBtb3ZlKTsKKyAgICBnbS5zZXRMYXN0VG91Y2hUaW1lKGdtLmxhc3RUb3VjaFRpbWUo
KSAtIDAuMSk7CiAgICAgR2VzdHVyZXMgZ2VzdHVyZVN0YXJ0KGdtLnByb2Nlc3NUb3VjaEV2ZW50
Rm9yR2VzdHVyZXMobW92ZUV2ZW50LCBmYWxzZSkpOwogICAgIGJvb2wgc2Nyb2xsU3RhcnRlZCA9
IGZhbHNlLCBzY3JvbGxVcGRhdGVkID0gZmFsc2U7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCBnZXN0dXJlU3RhcnQtPnNpemUoKTsgaSsrKSB7CkBAIC00NTEsMTIgKzQ1MiwxNSBA
QCBURVNUX0YoR2VzdHVyZVJlY29nbml6ZXJUZXN0LCBnZXN0dXJlU2Nyb2xsRXZlbnRzKQogCiAg
ICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50IHJlbGVhc2UoMTAsIDUwLCBQbGF0Zm9ybVRv
dWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQpOwogICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hFdmVu
dCByZWxlYXNlRXZlbnQoV2ViQ29yZTo6VG91Y2hFbmQsIHJlbGVhc2UpOworICAgIGdtLnNldExh
c3RUb3VjaFRpbWUoZ20ubGFzdFRvdWNoVGltZSgpIC0gMC4xKTsKICAgICBib29sIHNjcm9sbEVu
ZCA9IGZhbHNlOwogICAgIEdlc3R1cmVzIGdlc3R1cmVFbmQoZ20ucHJvY2Vzc1RvdWNoRXZlbnRG
b3JHZXN0dXJlcyhyZWxlYXNlRXZlbnQsIGZhbHNlKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCBnZXN0dXJlRW5kLT5zaXplKCk7IGkrKykgewogICAgICAgICBzd2l0Y2ggKCgq
Z2VzdHVyZUVuZClbaV0udHlwZSgpKSB7CiAgICAgICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZl
bnQ6OlNjcm9sbEVuZFR5cGU6CiAgICAgICAgICAgICBzY3JvbGxFbmQgPSB0cnVlOworICAgICAg
ICAgICAgQVNTRVJUX0VRKCgqZ2VzdHVyZUVuZClbaV0uZGVsdGFYKCksIDApOworICAgICAgICAg
ICAgQVNTRVJUX0VRKCgqZ2VzdHVyZUVuZClbaV0uZGVsdGFZKCksIDApOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRfVFJVRShmYWxzZSk7
CkBAIC00NjUsMyArNDY5LDQ2IEBAIFRFU1RfRihHZXN0dXJlUmVjb2duaXplclRlc3QsIGdlc3R1
cmVTY3JvbGxFdmVudHMpCiAgICAgQVNTRVJUX1RSVUUoc2Nyb2xsRW5kKTsKICAgICBBU1NFUlRf
RVEoR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6Tm9HZXN0dXJlLCBnbS5zdGF0ZSgpKTsKIH0K
KworVEVTVF9GKEdlc3R1cmVSZWNvZ25pemVyVGVzdCwgZmxpY2tHZXN0dXJlVGVzdCkKK3sKKyAg
ICBJbnNwZWN0YWJsZUdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0gZ207CisgICAgQVNTRVJUX0VR
KEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06Ok5vR2VzdHVyZSwgZ20uc3RhdGUoKSk7CisKKyAg
ICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQgcHJlc3MoMTAsIDE1LCBQbGF0Zm9ybVRvdWNo
UG9pbnQ6OlRvdWNoUHJlc3NlZCk7CisgICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaEV2ZW50IHBy
ZXNzRXZlbnQoV2ViQ29yZTo6VG91Y2hTdGFydCwgcHJlc3MpOworICAgIEdlc3R1cmVzIGdlc3R1
cmVTdGFydChnbS5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKHByZXNzRXZlbnQsIGZhbHNl
KSk7CisgICAgQVNTRVJUX0VRKCh1bnNpZ25lZCBpbnQpMSwgZ2VzdHVyZVN0YXJ0LT5zaXplKCkp
OworICAgIEFTU0VSVF9FUShQbGF0Zm9ybUdlc3R1cmVFdmVudDo6VGFwRG93blR5cGUsICgqZ2Vz
dHVyZVN0YXJ0KVswXS50eXBlKCkpOworICAgIEFTU0VSVF9FUShHZXN0dXJlUmVjb2duaXplckNo
cm9taXVtOjpQZW5kaW5nU3ludGhldGljQ2xpY2ssIGdtLnN0YXRlKCkpOworCisgICAgQnVpbGRh
YmxlUGxhdGZvcm1Ub3VjaFBvaW50IG1vdmUoMTAsIDUwLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRv
dWNoTW92ZWQpOworICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hFdmVudCBtb3ZlRXZlbnQoV2Vi
Q29yZTo6VG91Y2hNb3ZlLCBtb3ZlKTsKKyAgICBHZXN0dXJlcyBnZXN0dXJlTW92ZShnbS5wcm9j
ZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKG1vdmVFdmVudCwgZmFsc2UpKTsKKyAgICBib29sIHNj
cm9sbFN0YXJ0ZWQgPSBmYWxzZSwgc2Nyb2xsVXBkYXRlZCA9IGZhbHNlOworICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgZ2VzdHVyZU1vdmUtPnNpemUoKTsgaSsrKSB7CisgICAgICAg
IHN3aXRjaCAoKCpnZXN0dXJlTW92ZSlbaV0udHlwZSgpKSB7CisgICAgICAgIGNhc2UgUGxhdGZv
cm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZToKKyAgICAgICAgICAgIHNjcm9sbFN0YXJ0
ZWQgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUGxhdGZvcm1HZXN0
dXJlRXZlbnQ6OlNjcm9sbFVwZGF0ZVR5cGU6CisgICAgICAgICAgICBzY3JvbGxVcGRhdGVkID0g
dHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
QVNTRVJUX1RSVUUoZmFsc2UpOworICAgICAgICB9CisgICAgfQorCisgICAgQVNTRVJUX1RSVUUo
c2Nyb2xsU3RhcnRlZCk7CisgICAgQVNTRVJUX1RSVUUoc2Nyb2xsVXBkYXRlZCk7CisgICAgQVNT
RVJUX0VRKEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OlNjcm9sbCwgZ20uc3RhdGUoKSk7CisK
KyAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQgcmVsZWFzZSgxMCwgNTAsIFBsYXRmb3Jt
VG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZCk7CisgICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaEV2
ZW50IHJlbGVhc2VFdmVudChXZWJDb3JlOjpUb3VjaEVuZCwgcmVsZWFzZSk7CisgICAgR2VzdHVy
ZXMgZ2VzdHVyZUVuZChnbS5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKHJlbGVhc2VFdmVu
dCwgZmFsc2UpKTsKKyAgICBBU1NFUlRfRVEoKHVuc2lnbmVkIGludCkgMSwgZ2VzdHVyZUVuZC0+
c2l6ZSgpKTsKKyAgICBBU1NFUlRfRVEoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5
cGUsICgqZ2VzdHVyZUVuZClbMF0udHlwZSgpKTsKKyAgICBBU1NFUlRfR1QoKCpnZXN0dXJlRW5k
KVswXS5kZWx0YVgoKSwgMCk7CisgICAgQVNTRVJUX0dUKCgqZ2VzdHVyZUVuZClbMF0uZGVsdGFZ
KCksIDApOworICAgIEFTU0VSVF9FUShHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpOb0dlc3R1
cmUsIGdtLnN0YXRlKCkpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109088</attachid>
            <date>2011-09-28 16:30:34 -0700</date>
            <delta_ts>2011-09-29 09:25:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67930-20110928192533.patch</filename>
            <type>text/plain</type>
            <size>23603</size>
            <attacher name="Varun Jain">varunjain</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYyNjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMDgwYzgwMDAyZTFkNTIz
MjcyYjM3NDZkZWVkNGRkZWZiYTVjZjZiLi4wZTE5OWE1ODM2NTViYjY5MTA2OTE4OTJhNDQyNDEz
Mjc1NDE3MTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDktMjggIFZhcnVu
IEphaW4gIDx2YXJ1bmphaW5AZ29vZ2xlLmNvbT4KKyAKKyAgICAgICAgIEltcGxlbWVudCBmbGlj
ayBnZXN0dXJlIGluIENocm9taXVtIEdlc3R1cmUgUmVjb2duaXplcgorICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3OTMwCisgCisgICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAKKyAgICAgICAgIFRlc3Q6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSW5uZXJHZXN0dXJlUmVjb2duaXplclRlc3QuY3BwIAorIAorICAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmNwcDoKKyAg
ICAgICAgIChXZWJDb3JlOjpHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjppc092ZXJNaW5GbGlj
a1NwZWVkKToKKyAgICAgICAgIChXZWJDb3JlOjpHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjph
cHBlbmRTY3JvbGxHZXN0dXJlRW5kKToKKyAgICAgICAgIChXZWJDb3JlOjpHZXN0dXJlUmVjb2du
aXplckNocm9taXVtOjp1cGRhdGVWYWx1ZXMpOgorICAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVS
ZWNvZ25pemVyQ2hyb21pdW06OnNjcm9sbEVuZCk6CisgICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uaDoKKwogMjAxMS0wOS0yOCAgU2VyZ2V5IEds
YXp1bm92ICA8c2VyZy5nbGF6dW5vdkBnbWFpbC5jb20+CiAKICAgICAgICAgSmF2YVNjcmlwdCBn
ZW5lcmF0ZWQgZG9jdW1lbnRzIGRvbid0IGluaGVyaXQgdGhlIGNvb2tpZSBVUkwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hy
b21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29n
bml6ZXJDaHJvbWl1bS5jcHAKaW5kZXggZmQ3NDNhNjE5ZWJiOTEzNmY3MGY3OTZkYjkwOTA2ZTE1
ZWNiYmFmMi4uMWU5MTk1MTE5ZmNiOTM1ZWEwMmI0NzcyODdhNDAxNDY3NmU4Zjc2OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVy
ZVJlY29nbml6ZXJDaHJvbWl1bS5jcHAKQEAgLTM4LDYgKzM4LDcgQEAgc3RhdGljIGNvbnN0IGRv
dWJsZSBtYXhpbXVtVG91Y2hEb3duRHVyYXRpb25JblNlY29uZHNGb3JDbGljayA9IDAuODsKIHN0
YXRpYyBjb25zdCBkb3VibGUgbWluaW11bVRvdWNoRG93bkR1cmF0aW9uSW5TZWNvbmRzRm9yQ2xp
Y2sgPSAwLjAxOwogc3RhdGljIGNvbnN0IGRvdWJsZSBtYXhpbXVtU2Vjb25kc0JldHdlZW5Eb3Vi
bGVDbGljayA9IDAuNzsKIHN0YXRpYyBjb25zdCBpbnQgbWF4aW11bVRvdWNoTW92ZUluUGl4ZWxz
Rm9yQ2xpY2sgPSAyMDsKK3N0YXRpYyBjb25zdCBmbG9hdCBtaW5GbGlja1NwZWVkID0gMzAwLmY7
CiAKIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0o
KQogICAgIDogbV9maXJzdFRvdWNoVGltZSgwLjApCkBAIC05OSw2ICsxMDAsMTEgQEAgYm9vbCBH
ZXN0dXJlUmVjb2duaXplckNocm9taXVtOjppc0luc2lkZU1hbmhhdHRhblNxdWFyZShjb25zdCBQ
bGF0Zm9ybVRvdWNoUG9pbnQKICAgICByZXR1cm4gbWFuaGF0dGFuRGlzdGFuY2UgPCBtYXhpbXVt
VG91Y2hNb3ZlSW5QaXhlbHNGb3JDbGljazsKIH0KIAorYm9vbCBHZXN0dXJlUmVjb2duaXplckNo
cm9taXVtOjppc092ZXJNaW5GbGlja1NwZWVkKCkKK3sKKyAgICByZXR1cm4gc3FydChtX3hWZWxv
Y2l0eSAqIG1feFZlbG9jaXR5ICsgbV95VmVsb2NpdHkgKiBtX3lWZWxvY2l0eSkgPiBtaW5GbGlj
a1NwZWVkOworfQorCiB2b2lkIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZFRhcERv
d25HZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBHZXN0
dXJlcyBnZXN0dXJlcykKIHsKICAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2VzdHVyZUV2
ZW50KFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpUYXBEb3duVHlwZSwgbV9maXJzdFRvdWNoUG9zaXRp
b24sIG1fZmlyc3RUb3VjaFNjcmVlblBvc2l0aW9uLCBtX2xhc3RUb3VjaFRpbWUsIDAuZiwgMC5m
LCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKQEAgLTEzOCw5
ICsxNDQsOSBAQCB2b2lkIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZFNjcm9sbEdl
c3R1cmVCZWdpbihjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbgogICAgIGdlc3R1cmVzLT5hcHBlbmQo
UGxhdGZvcm1HZXN0dXJlRXZlbnQoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlw
ZSwgdG91Y2hQb2ludC5wb3MoKSwgdG91Y2hQb2ludC5zY3JlZW5Qb3MoKSwgbV9sYXN0VG91Y2hU
aW1lLCAwLmYsIDAuZiwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5
KSk7CiB9CiAKLXZvaWQgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6YXBwZW5kU2Nyb2xsR2Vz
dHVyZUVuZChjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIEdlc3R1cmVzIGdl
c3R1cmVzKQordm9pZCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmRTY3JvbGxHZXN0
dXJlRW5kKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwgR2VzdHVyZXMgZ2Vz
dHVyZXMsIGZsb2F0IHhWZWxvY2l0eSwgZmxvYXQgeVZlbG9jaXR5KQogewotICAgIGdlc3R1cmVz
LT5hcHBlbmQoUGxhdGZvcm1HZXN0dXJlRXZlbnQoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9s
bEVuZFR5cGUsIHRvdWNoUG9pbnQucG9zKCksIHRvdWNoUG9pbnQuc2NyZWVuUG9zKCksIG1fbGFz
dFRvdWNoVGltZSwgMC5mLCAwLmYsIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1f
bWV0YUtleSkpOworICAgIGdlc3R1cmVzLT5hcHBlbmQoUGxhdGZvcm1HZXN0dXJlRXZlbnQoUGxh
dGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGUsIHRvdWNoUG9pbnQucG9zKCksIHRvdWNo
UG9pbnQuc2NyZWVuUG9zKCksIG1fbGFzdFRvdWNoVGltZSwgeFZlbG9jaXR5LCB5VmVsb2NpdHks
IG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOwogfQogCiB2b2lk
IEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZFNjcm9sbEdlc3R1cmVVcGRhdGUoY29u
c3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBHZXN0dXJlcyBnZXN0dXJlcykKQEAg
LTE1NCwxMSArMTYwLDIwIEBAIHZvaWQgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6YXBwZW5k
U2Nyb2xsR2VzdHVyZVVwZGF0ZShjb25zdCBQbGF0Zm9ybVRvdWNoUG9pCiAKIHZvaWQgR2VzdHVy
ZVJlY29nbml6ZXJDaHJvbWl1bTo6dXBkYXRlVmFsdWVzKGNvbnN0IGRvdWJsZSB0b3VjaFRpbWUs
IGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCkKIHsKKyAgICBpZiAobV9zdGF0
ZSAhPSBOb0dlc3R1cmUgJiYgdG91Y2hQb2ludC5zdGF0ZSgpID09IFBsYXRmb3JtVG91Y2hQb2lu
dDo6VG91Y2hNb3ZlZCkgeworICAgICAgICBkb3VibGUgaW50ZXJ2YWwodG91Y2hUaW1lIC0gbV9s
YXN0VG91Y2hUaW1lKTsKKyAgICAgICAgbV94VmVsb2NpdHkgPSAodG91Y2hQb2ludC5wb3MoKS54
KCkgLSBtX2xhc3RUb3VjaFBvc2l0aW9uLngoKSkgLyBpbnRlcnZhbDsKKyAgICAgICAgbV95VmVs
b2NpdHkgPSAodG91Y2hQb2ludC5wb3MoKS55KCkgLSBtX2xhc3RUb3VjaFBvc2l0aW9uLnkoKSkg
LyBpbnRlcnZhbDsKKyAgICAgICAgbV9sYXN0VG91Y2hQb3NpdGlvbiA9IHRvdWNoUG9pbnQucG9z
KCk7CisgICAgICAgIG1fbGFzdFRvdWNoU2NyZWVuUG9zaXRpb24gPSB0b3VjaFBvaW50LnNjcmVl
blBvcygpOworICAgIH0KICAgICBtX2xhc3RUb3VjaFRpbWUgPSB0b3VjaFRpbWU7CiAgICAgaWYg
KHN0YXRlKCkgPT0gTm9HZXN0dXJlKSB7CiAgICAgICAgIG1fZmlyc3RUb3VjaFRpbWUgPSB0b3Vj
aFRpbWU7CiAgICAgICAgIG1fZmlyc3RUb3VjaFBvc2l0aW9uID0gdG91Y2hQb2ludC5wb3MoKTsK
ICAgICAgICAgbV9maXJzdFRvdWNoU2NyZWVuUG9zaXRpb24gPSB0b3VjaFBvaW50LnNjcmVlblBv
cygpOworICAgICAgICBtX3hWZWxvY2l0eSA9IDAuMDsKKyAgICAgICAgbV95VmVsb2NpdHkgPSAw
LjA7CiAgICAgfQogfQogCkBAIC0xODMsNyArMTk4LDEwIEBAIGJvb2wgR2VzdHVyZVJlY29nbml6
ZXJDaHJvbWl1bTo6dG91Y2hEb3duKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2lu
dCwKIAogYm9vbCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpzY3JvbGxFbmQoY29uc3QgUGxh
dGZvcm1Ub3VjaFBvaW50JiBwb2ludCwgR2VzdHVyZXMgZ2VzdHVyZXMpCiB7Ci0gICAgYXBwZW5k
U2Nyb2xsR2VzdHVyZUVuZChwb2ludCwgZ2VzdHVyZXMpOworICAgIGlmIChpc092ZXJNaW5GbGlj
a1NwZWVkKCkgJiYgcG9pbnQuc3RhdGUoKSAhPSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoQ2Fu
Y2VsbGVkKQorICAgICAgICBhcHBlbmRTY3JvbGxHZXN0dXJlRW5kKHBvaW50LCBnZXN0dXJlcywg
bV94VmVsb2NpdHksIG1feVZlbG9jaXR5KTsKKyAgICBlbHNlCisgICAgICAgIGFwcGVuZFNjcm9s
bEdlc3R1cmVFbmQocG9pbnQsIGdlc3R1cmVzLCAwLmYsIDAuZik7CiAgICAgc2V0U3RhdGUoTm9H
ZXN0dXJlKTsKICAgICByZXNldCgpOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hy
b21pdW0uaAppbmRleCAxZjE1ZDM3YzMxMjE3MDYzMmFjNWUwZGU4OTIwMmIzODM2OGY2NzRkLi42
YzVlOWM1ODkxOWRjYzhmYTU1MzA5N2IwOWRhNWZiYmExOWQ4M2RjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJD
aHJvbWl1bS5oCkBAIC03MCwxMSArNzAsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFwcGVuZENs
aWNrR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYsIEdlc3R1cmVzKTsKICAg
ICB2b2lkIGFwcGVuZERvdWJsZUNsaWNrR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hQ
b2ludCYsIEdlc3R1cmVzKTsKICAgICB2b2lkIGFwcGVuZFNjcm9sbEdlc3R1cmVCZWdpbihjb25z
dCBQbGF0Zm9ybVRvdWNoUG9pbnQmLCBHZXN0dXJlcyk7Ci0gICAgdm9pZCBhcHBlbmRTY3JvbGxH
ZXN0dXJlRW5kKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYsIEdlc3R1cmVzKTsKKyAgICB2b2lk
IGFwcGVuZFNjcm9sbEdlc3R1cmVFbmQoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgR2VzdHVy
ZXMsIGZsb2F0LCBmbG9hdCk7CiAgICAgdm9pZCBhcHBlbmRTY3JvbGxHZXN0dXJlVXBkYXRlKGNv
bnN0IFBsYXRmb3JtVG91Y2hQb2ludCYsIEdlc3R1cmVzKTsKICAgICBib29sIGlzSW5DbGlja1Rp
bWVXaW5kb3coKTsKICAgICBib29sIGlzSW5TZWNvbmRDbGlja1RpbWVXaW5kb3coKTsKICAgICBi
b29sIGlzSW5zaWRlTWFuaGF0dGFuU3F1YXJlKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYpOwor
ICAgIGJvb2wgaXNPdmVyTWluRmxpY2tTcGVlZCgpOwogICAgIHZvaWQgc2V0U3RhdGUoU3RhdGUg
dmFsdWUpIHsgbV9zdGF0ZSA9IHZhbHVlOyB9CiAgICAgdm9pZCB1cGRhdGVWYWx1ZXMoZG91Ymxl
IHRvdWNoVGltZSwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Jik7CiAKQEAgLTkyLDYgKzkzLDEw
IEBAIHByaXZhdGU6CiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBkb3VibGUgbV9sYXN0VG91Y2hU
aW1lOwogICAgIGRvdWJsZSBtX2xhc3RDbGlja1RpbWU7CisgICAgSW50UG9pbnQgbV9sYXN0VG91
Y2hQb3NpdGlvbjsKKyAgICBJbnRQb2ludCBtX2xhc3RUb3VjaFNjcmVlblBvc2l0aW9uOworICAg
IGZsb2F0IG1feFZlbG9jaXR5OworICAgIGZsb2F0IG1feVZlbG9jaXR5OwogCiAgICAgYm9vbCBt
X2N0cmxLZXk7CiAgICAgYm9vbCBtX2FsdEtleTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSW5uZXJHZXN0dXJlUmVjb2duaXplclRlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9Jbm5lckdlc3R1cmVSZWNvZ25pemVyVGVzdC5jcHAKaW5kZXgg
ZDQ5YTM0Y2Q3YTA1MzM1NmY3NjBiMmU3ZWIwYjI1NTAyODkyYjNmOC4uZTlhZDFiODQ1YTJlMGY4
NGU2MTdkOWNjYWNkZGNkZDlhMmE2YWU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9Jbm5lckdlc3R1cmVSZWNvZ25pemVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9Jbm5lckdlc3R1cmVSZWNvZ25pemVyVGVzdC5jcHAKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJHZXN0dXJlUmVjb2duaXplckNocm9taXVtLmgiCiAKICNp
bmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgogCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIApAQCAtNDkzLDYgKzQ5NCw3IEBAIFRFU1RfRihHZXN0dXJlUmVjb2du
aXplclRlc3QsIGdlc3R1cmVTY3JvbGxFdmVudHMpCiAKICAgICBCdWlsZGFibGVQbGF0Zm9ybVRv
dWNoUG9pbnQgbW92ZSgxMCwgNTAsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCk7CiAg
ICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaEV2ZW50IG1vdmVFdmVudChXZWJDb3JlOjpUb3VjaE1v
dmUsIG1vdmUpOworICAgIGdtLnNldExhc3RUb3VjaFRpbWUoZ20ubGFzdFRvdWNoVGltZSgpIC0g
MC4yKTsKICAgICBHZXN0dXJlcyBnZXN0dXJlU3RhcnQoZ20ucHJvY2Vzc1RvdWNoRXZlbnRGb3JH
ZXN0dXJlcyhtb3ZlRXZlbnQsIGZhbHNlKSk7CiAgICAgYm9vbCBzY3JvbGxTdGFydGVkID0gZmFs
c2UsIHNjcm9sbFVwZGF0ZWQgPSBmYWxzZTsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IGdlc3R1cmVTdGFydC0+c2l6ZSgpOyBpKyspIHsKQEAgLTUxNCwxMiArNTE2LDE1IEBAIFRF
U1RfRihHZXN0dXJlUmVjb2duaXplclRlc3QsIGdlc3R1cmVTY3JvbGxFdmVudHMpCiAKICAgICBC
dWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQgcmVsZWFzZSgxMCwgNTAsIFBsYXRmb3JtVG91Y2hQ
b2ludDo6VG91Y2hSZWxlYXNlZCk7CiAgICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaEV2ZW50IHJl
bGVhc2VFdmVudChXZWJDb3JlOjpUb3VjaEVuZCwgcmVsZWFzZSk7CisgICAgZ20uc2V0TGFzdFRv
dWNoVGltZShnbS5sYXN0VG91Y2hUaW1lKCkgLSAwLjIpOwogICAgIGJvb2wgc2Nyb2xsRW5kID0g
ZmFsc2U7CiAgICAgR2VzdHVyZXMgZ2VzdHVyZUVuZChnbS5wcm9jZXNzVG91Y2hFdmVudEZvckdl
c3R1cmVzKHJlbGVhc2VFdmVudCwgZmFsc2UpKTsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MDsgaSA8IGdlc3R1cmVFbmQtPnNpemUoKTsgaSsrKSB7CiAgICAgICAgIHN3aXRjaCAoKCpnZXN0
dXJlRW5kKVtpXS50eXBlKCkpIHsKICAgICAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6
U2Nyb2xsRW5kVHlwZToKICAgICAgICAgICAgIHNjcm9sbEVuZCA9IHRydWU7CisgICAgICAgICAg
ICBBU1NFUlRfRVEoKCpnZXN0dXJlRW5kKVtpXS5kZWx0YVgoKSwgMCk7CisgICAgICAgICAgICBB
U1NFUlRfRVEoKCpnZXN0dXJlRW5kKVtpXS5kZWx0YVkoKSwgMCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKGZhbHNlKTsKQEAg
LTUyOCwzICs1MzMsMjI5IEBAIFRFU1RfRihHZXN0dXJlUmVjb2duaXplclRlc3QsIGdlc3R1cmVT
Y3JvbGxFdmVudHMpCiAgICAgQVNTRVJUX1RSVUUoc2Nyb2xsRW5kKTsKICAgICBBU1NFUlRfRVEo
R2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6Tm9HZXN0dXJlLCBnbS5zdGF0ZSgpKTsKIH0KKwor
VEVTVF9GKEdlc3R1cmVSZWNvZ25pemVyVGVzdCwgZmxpY2tHZXN0dXJlVGVzdCkKK3sKKyAgICBJ
bnNwZWN0YWJsZUdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0gZ207CisgICAgQVNTRVJUX0VRKEdl
c3R1cmVSZWNvZ25pemVyQ2hyb21pdW06Ok5vR2VzdHVyZSwgZ20uc3RhdGUoKSk7CisKKyAgICBC
dWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQgcHJlc3MoMTAsIDE1LCBQbGF0Zm9ybVRvdWNoUG9p
bnQ6OlRvdWNoUHJlc3NlZCk7CisgICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaEV2ZW50IHByZXNz
RXZlbnQoV2ViQ29yZTo6VG91Y2hTdGFydCwgcHJlc3MpOworICAgIEdlc3R1cmVzIGdlc3R1cmVT
dGFydChnbS5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKHByZXNzRXZlbnQsIGZhbHNlKSk7
CisgICAgQVNTRVJUX0VRKCh1bnNpZ25lZCBpbnQpMSwgZ2VzdHVyZVN0YXJ0LT5zaXplKCkpOwor
ICAgIEFTU0VSVF9FUShQbGF0Zm9ybUdlc3R1cmVFdmVudDo6VGFwRG93blR5cGUsICgqZ2VzdHVy
ZVN0YXJ0KVswXS50eXBlKCkpOworICAgIEFTU0VSVF9FUShHZXN0dXJlUmVjb2duaXplckNocm9t
aXVtOjpQZW5kaW5nU3ludGhldGljQ2xpY2ssIGdtLnN0YXRlKCkpOworCisgICAgQnVpbGRhYmxl
UGxhdGZvcm1Ub3VjaFBvaW50IG1vdmUoMTAsIDUwLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNo
TW92ZWQpOworICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hFdmVudCBtb3ZlRXZlbnQoV2ViQ29y
ZTo6VG91Y2hNb3ZlLCBtb3ZlKTsKKyAgICBHZXN0dXJlcyBnZXN0dXJlTW92ZShnbS5wcm9jZXNz
VG91Y2hFdmVudEZvckdlc3R1cmVzKG1vdmVFdmVudCwgZmFsc2UpKTsKKyAgICBib29sIHNjcm9s
bFN0YXJ0ZWQgPSBmYWxzZSwgc2Nyb2xsVXBkYXRlZCA9IGZhbHNlOworICAgIGZvciAodW5zaWdu
ZWQgaW50IGkgPSAwOyBpIDwgZ2VzdHVyZU1vdmUtPnNpemUoKTsgaSsrKSB7CisgICAgICAgIHN3
aXRjaCAoKCpnZXN0dXJlTW92ZSlbaV0udHlwZSgpKSB7CisgICAgICAgIGNhc2UgUGxhdGZvcm1H
ZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZToKKyAgICAgICAgICAgIHNjcm9sbFN0YXJ0ZWQg
PSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJl
RXZlbnQ6OlNjcm9sbFVwZGF0ZVR5cGU6CisgICAgICAgICAgICBzY3JvbGxVcGRhdGVkID0gdHJ1
ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNT
RVJUX1RSVUUoZmFsc2UpOworICAgICAgICB9CisgICAgfQorCisgICAgQVNTRVJUX1RSVUUoc2Ny
b2xsU3RhcnRlZCk7CisgICAgQVNTRVJUX1RSVUUoc2Nyb2xsVXBkYXRlZCk7CisgICAgQVNTRVJU
X0VRKEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OlNjcm9sbCwgZ20uc3RhdGUoKSk7CisKKyAg
ICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQgcmVsZWFzZSgxMCwgNTAsIFBsYXRmb3JtVG91
Y2hQb2ludDo6VG91Y2hSZWxlYXNlZCk7CisgICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaEV2ZW50
IHJlbGVhc2VFdmVudChXZWJDb3JlOjpUb3VjaEVuZCwgcmVsZWFzZSk7CisgICAgR2VzdHVyZXMg
Z2VzdHVyZUVuZChnbS5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKHJlbGVhc2VFdmVudCwg
ZmFsc2UpKTsKKyAgICBBU1NFUlRfRVEoKHVuc2lnbmVkIGludCkgMSwgZ2VzdHVyZUVuZC0+c2l6
ZSgpKTsKKyAgICBBU1NFUlRfRVEoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGUs
ICgqZ2VzdHVyZUVuZClbMF0udHlwZSgpKTsKKyAgICBBU1NFUlRfR1QoKCpnZXN0dXJlRW5kKVsw
XS5kZWx0YVgoKSwgMCk7CisgICAgQVNTRVJUX0dUKCgqZ2VzdHVyZUVuZClbMF0uZGVsdGFZKCks
IDApOworICAgIEFTU0VSVF9FUShHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpOb0dlc3R1cmUs
IGdtLnN0YXRlKCkpOworfQorCitzdHJ1Y3QgVG91Y2hQb2ludEFuZEV2ZW50IHsKK3B1YmxpYzoK
KyAgICBUb3VjaFBvaW50QW5kRXZlbnQoaW50IHgsIGludCB5LCBkb3VibGUgdGltZXN0YW1wLCBQ
bGF0Zm9ybVRvdWNoUG9pbnQ6OlN0YXRlIHN0YXRlLCBXZWJDb3JlOjpUb3VjaEV2ZW50VHlwZSB0
eXBlKQorICAgICAgICA6IG1fcG9pbnQoeCwgeSwgc3RhdGUpLAorICAgICAgICAgIG1fZXZlbnQo
dHlwZSwgbV9wb2ludCwgdGltZXN0YW1wKQorICAgIHsgfQorICAgIEJ1aWxkYWJsZVBsYXRmb3Jt
VG91Y2hQb2ludCBtX3BvaW50OworICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hFdmVudCBtX2V2
ZW50OworfTsKKworY2xhc3MgVG91Y2hTZXF1ZW5jZSB7CitwdWJsaWM6CisgICAgVG91Y2hTZXF1
ZW5jZShpbnQgbiwgLi4uKSA6IG1fbihuKQorICAgIHsKKyAgICAgICAgdmFfbGlzdCBhcmdzOwor
ICAgICAgICB2YV9zdGFydChhcmdzLCBuKTsKKyAgICAgICAgQVNTRVJUKG4gPiAwKTsKKyAgICAg
ICAgbV9kYXRhID0gbmV3IFRvdWNoUG9pbnRBbmRFdmVudCpbbl07CisgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbjsgKytpKQorICAgICAgICAgICAgbV9kYXRhW2ldID0gdmFfYXJnKGFyZ3Ms
IFRvdWNoUG9pbnRBbmRFdmVudCopOworICAgICAgICB2YV9lbmQoYXJncyk7CisgICAgfQorICAg
IH5Ub3VjaFNlcXVlbmNlKCkKKyAgICB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9u
OyArK2kpCisgICAgICAgICAgICBkZWxldGUgbV9kYXRhW2ldOworICAgICAgICBkZWxldGUgbV9k
YXRhOworICAgIH0KKyAgICBpbnQgbV9uOworICAgIFRvdWNoUG9pbnRBbmRFdmVudCoqIG1fZGF0
YTsKK307CisKK2NvbnN0IGludCBudW1iZXJPZkZsaWNrU2FtcGxlcyA9IDExOworVG91Y2hTZXF1
ZW5jZSBzYW1wbGVGbGlja1NlcXVlbmNlW251bWJlck9mRmxpY2tTYW1wbGVzXSA9Cit7CisgICAg
VG91Y2hTZXF1ZW5jZSg4CisgICAgICAgICwgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNTYsIDM0
OCwgMTMwODMzNjI0NS40MDcsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2VkLCBXZWJD
b3JlOjpUb3VjaFN0YXJ0KQorICAgICAgICAsIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoMjU0LCAz
NDUsIDEzMDgzMzYyNDUuNDcwLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQsIFdlYkNv
cmU6OlRvdWNoTW92ZSkKKyAgICAgICAgLCBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDI1MiwgMzM2
LCAxMzA4MzM2MjQ1LjQ4OCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3Jl
OjpUb3VjaE1vdmUpCisgICAgICAgICwgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNDIsIDI2MSwg
MTMwODMzNjI0NS41MDUsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6
VG91Y2hNb3ZlKQorICAgICAgICAsIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoMjQyLCAxNzksIDEz
MDgzMzYyNDUuNTIxLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQsIFdlYkNvcmU6OlRv
dWNoTW92ZSkKKyAgICAgICAgLCBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDI1NSwgMTAwLCAxMzA4
MzM2MjQ1LjUzMywgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3Vj
aE1vdmUpCisgICAgICAgICwgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNjIsIDc0LCAxMzA4MzM2
MjQ1LjU0OSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1v
dmUpCisgICAgICAgICwgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNjIsIDc0LCAxMzA4MzM2MjQ1
LjU2NiwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkLCBXZWJDb3JlOjpUb3VjaEVu
ZCkKKyAgICApLAorICAgIFRvdWNoU2VxdWVuY2UoOAorICAgICAgICAsIG5ldyBUb3VjaFBvaW50
QW5kRXZlbnQoMTc4LCAzMzksIDEzMDgzMzYyNjYuMTgwLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRv
dWNoUHJlc3NlZCwgV2ViQ29yZTo6VG91Y2hTdGFydCkKKyAgICAgICAgLCBuZXcgVG91Y2hQb2lu
dEFuZEV2ZW50KDE3NywgMzM1LCAxMzA4MzM2MjY2LjIxMiwgUGxhdGZvcm1Ub3VjaFBvaW50OjpU
b3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpCisgICAgICAgICwgbmV3IFRvdWNoUG9pbnRB
bmRFdmVudCgxNzIsIDMxNCwgMTMwODMzNjI2Ni4yMjYsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91
Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKQorICAgICAgICAsIG5ldyBUb3VjaFBvaW50QW5k
RXZlbnQoMTYwLCAyNDgsIDEzMDgzMzYyNjYuMjQwLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNo
TW92ZWQsIFdlYkNvcmU6OlRvdWNoTW92ZSkKKyAgICAgICAgLCBuZXcgVG91Y2hQb2ludEFuZEV2
ZW50KDE1NiwgMTk4LCAxMzA4MzM2MjY2LjI1MSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1v
dmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpCisgICAgICAgICwgbmV3IFRvdWNoUG9pbnRBbmRFdmVu
dCgxNjYsIDk5LCAxMzA4MzM2MjY2LjI2NiwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVk
LCBXZWJDb3JlOjpUb3VjaE1vdmUpCisgICAgICAgICwgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgx
NzksIDQxLCAxMzA4MzM2MjY2LjI4MCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBX
ZWJDb3JlOjpUb3VjaE1vdmUpCisgICAgICAgICwgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgxNzks
IDQxLCAxMzA4MzM2MjY2LjI5MSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkLCBX
ZWJDb3JlOjpUb3VjaEVuZCkKKyAgICApLAorICAgIFRvdWNoU2VxdWVuY2UoNworICAgICAgICAs
IG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoMjM4LCAzODYsIDEzMDgzMzYyNzIuMDY4LCBQbGF0Zm9y
bVRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZCwgV2ViQ29yZTo6VG91Y2hTdGFydCkKKyAgICAgICAg
LCBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDIzNywgMzgzLCAxMzA4MzM2MjcyLjEyMSwgUGxhdGZv
cm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpCisgICAgICAgICwg
bmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyMzYsIDM3NCwgMTMwODMzNjI3Mi4xMzgsIFBsYXRmb3Jt
VG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKQorICAgICAgICAsIG5l
dyBUb3VjaFBvaW50QW5kRXZlbnQoMjIzLCAyNjQsIDEzMDgzMzYyNzIuMTU1LCBQbGF0Zm9ybVRv
dWNoUG9pbnQ6OlRvdWNoTW92ZWQsIFdlYkNvcmU6OlRvdWNoTW92ZSkKKyAgICAgICAgLCBuZXcg
VG91Y2hQb2ludEFuZEV2ZW50KDIzMSwgMTY2LCAxMzA4MzM2MjcyLjE3MywgUGxhdGZvcm1Ub3Vj
aFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpCisgICAgICAgICwgbmV3IFRv
dWNoUG9pbnRBbmRFdmVudCgyNDMsIDEwNywgMTMwODMzNjI3Mi4xOTAsIFBsYXRmb3JtVG91Y2hQ
b2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKQorICAgICAgICAsIG5ldyBUb3Vj
aFBvaW50QW5kRXZlbnQoMjQzLCAxMDcsIDEzMDgzMzYyNzIuMjAyLCBQbGF0Zm9ybVRvdWNoUG9p
bnQ6OlRvdWNoUmVsZWFzZWQsIFdlYkNvcmU6OlRvdWNoRW5kKQorICAgICksCisgICAgVG91Y2hT
ZXF1ZW5jZSgxMAorICAgICAgICAsIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoMzM0LCAzNTEsIDEz
MDgzMzYzMTMuNTgxLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZCwgV2ViQ29yZTo6
VG91Y2hTdGFydCkKKyAgICAgICAgLCBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDMzNCwgMzQ4LCAx
MzA4MzM2MzEzLjY5NCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpU
b3VjaE1vdmUpCisgICAgICAgICwgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgzMzUsIDM0NiwgMTMw
ODMzNjMxMy43MTQsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91
Y2hNb3ZlKQorICAgICAgICAsIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoMzM0LCAzNDMsIDEzMDgz
MzYzMTMuNzI3LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQsIFdlYkNvcmU6OlRvdWNo
TW92ZSkKKyAgICAgICAgLCBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDMzMiwgMzM2LCAxMzA4MzM2
MzEzLjczOCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1v
dmUpCisgICAgICAgICwgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgzMjgsIDMxNiwgMTMwODMzNjMx
My43NTMsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3Zl
KQorICAgICAgICAsIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoMzE3LCAyNzcsIDEzMDgzMzYzMTMu
NzcwLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQsIFdlYkNvcmU6OlRvdWNoTW92ZSkK
KyAgICAgICAgLCBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDMwNiwgMjQzLCAxMzA4MzM2MzEzLjc4
NCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpCisg
ICAgICAgICwgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyOTIsIDE5MiwgMTMwODMzNjMxMy43OTks
IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKQorICAg
ICAgICAsIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoMjkyLCAxOTIsIDEzMDgzMzYzMTMuODE1LCBQ
bGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQsIFdlYkNvcmU6OlRvdWNoRW5kKQorICAg
ICksCisgICAgVG91Y2hTZXF1ZW5jZSgxNAorICAgICAgICAsIG5ldyBUb3VjaFBvaW50QW5kRXZl
bnQoOTIsIDExMiwgMTMwODMzNjMyMy45NTUsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVz
c2VkLCBXZWJDb3JlOjpUb3VjaFN0YXJ0KQorICAgICAgICAsIG5ldyBUb3VjaFBvaW50QW5kRXZl
bnQoOTIsIDExNSwgMTMwODMzNjMyNC4wNTYsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3Zl
ZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKQorICAgICAgICAsIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQo
OTEsIDExNiwgMTMwODMzNjMyNC4wNjYsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwg
V2ViQ29yZTo6VG91Y2hNb3ZlKQorICAgICAgICAsIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoOTEs
IDExNywgMTMwODMzNjMyNC4wNzQsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2Vi
Q29yZTo6VG91Y2hNb3ZlKQorICAgICAgICAsIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoOTAsIDEy
MiwgMTMwODMzNjMyNC4wODksIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29y
ZTo6VG91Y2hNb3ZlKQorICAgICAgICAsIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoOTAsIDEyOSwg
MTMwODMzNjMyNC4xMDIsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6
VG91Y2hNb3ZlKQorICAgICAgICAsIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoODksIDE0NywgMTMw
ODMzNjMyNC4xMjAsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91
Y2hNb3ZlKQorICAgICAgICAsIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoODksIDE2MywgMTMwODMz
NjMyNC4xMzUsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hN
b3ZlKQorICAgICAgICAsIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoODksIDE4OCwgMTMwODMzNjMy
NC4xNTEsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3Zl
KQorICAgICAgICAsIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoODksIDIxMywgMTMwODMzNjMyNC4x
NjksIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKQor
ICAgICAgICAsIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoODksIDI1MiwgMTMwODMzNjMyNC4xODks
IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKQorICAg
ICAgICAsIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoOTAsIDI4MywgMTMwODMzNjMyNC4yMDQsIFBs
YXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKQorICAgICAg
ICAsIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoOTEsIDMwOCwgMTMwODMzNjMyNC4yMTgsIFBsYXRm
b3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKQorICAgICAgICAs
IG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoOTEsIDMwOCwgMTMwODMzNjMyNC4yMzAsIFBsYXRmb3Jt
VG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZCwgV2ViQ29yZTo6VG91Y2hFbmQpCisgICAgKSwKKyAg
ICBUb3VjaFNlcXVlbmNlKDUKKyAgICAgICAgLCBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDU1LCAy
NDksIDEzMDgzMzYzNDkuMDkzLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZCwgV2Vi
Q29yZTo6VG91Y2hTdGFydCkKKyAgICAgICAgLCBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDU5LCAy
NDksIDEzMDgzMzYzNDkuMTc5LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQsIFdlYkNv
cmU6OlRvdWNoTW92ZSkKKyAgICAgICAgLCBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDY2LCAyNDgs
IDEzMDgzMzYzNDkuMTkxLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQsIFdlYkNvcmU6
OlRvdWNoTW92ZSkKKyAgICAgICAgLCBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDEyOCwgMjUzLCAx
MzA4MzM2MzQ5LjIwOCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpU
b3VjaE1vdmUpCisgICAgICAgICwgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgxMjgsIDI1MywgMTMw
ODMzNjM0OS4yNTgsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZCwgV2ViQ29yZTo6
VG91Y2hFbmQpCisgICAgKSwKKyAgICBUb3VjaFNlcXVlbmNlKDkKKyAgICAgICAgLCBuZXcgVG91
Y2hQb2ludEFuZEV2ZW50KDM3NiwgMjkwLCAxMzA4MzM2MzUzLjA3MSwgUGxhdGZvcm1Ub3VjaFBv
aW50OjpUb3VjaFByZXNzZWQsIFdlYkNvcmU6OlRvdWNoU3RhcnQpCisgICAgICAgICwgbmV3IFRv
dWNoUG9pbnRBbmRFdmVudCgzNzMsIDI4OCwgMTMwODMzNjM1My4xMjcsIFBsYXRmb3JtVG91Y2hQ
b2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKQorICAgICAgICAsIG5ldyBUb3Vj
aFBvaW50QW5kRXZlbnQoMzcyLCAyODcsIDEzMDgzMzYzNTMuMTQwLCBQbGF0Zm9ybVRvdWNoUG9p
bnQ6OlRvdWNoTW92ZWQsIFdlYkNvcmU6OlRvdWNoTW92ZSkKKyAgICAgICAgLCBuZXcgVG91Y2hQ
b2ludEFuZEV2ZW50KDM1MywgMjgwLCAxMzA4MzM2MzUzLjE1NiwgUGxhdGZvcm1Ub3VjaFBvaW50
OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpCisgICAgICAgICwgbmV3IFRvdWNoUG9p
bnRBbmRFdmVudCgzMTksIDI3MSwgMTMwODMzNjM1My4xNzEsIFBsYXRmb3JtVG91Y2hQb2ludDo6
VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKQorICAgICAgICAsIG5ldyBUb3VjaFBvaW50
QW5kRXZlbnQoMjY0LCAyNTgsIDEzMDgzMzYzNTMuMTg4LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRv
dWNoTW92ZWQsIFdlYkNvcmU6OlRvdWNoTW92ZSkKKyAgICAgICAgLCBuZXcgVG91Y2hQb2ludEFu
ZEV2ZW50KDIxNSwgMjUxLCAxMzA4MzM2MzUzLjIwMCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3Vj
aE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpCisgICAgICAgICwgbmV3IFRvdWNoUG9pbnRBbmRF
dmVudCgxNTEsIDI0NiwgMTMwODMzNjM1My4yMTcsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hN
b3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKQorICAgICAgICAsIG5ldyBUb3VjaFBvaW50QW5kRXZl
bnQoMTUxLCAyNDYsIDEzMDgzMzYzNTMuMjMxLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVs
ZWFzZWQsIFdlYkNvcmU6OlRvdWNoRW5kKQorICAgICksCisgICAgVG91Y2hTZXF1ZW5jZSg1Cisg
ICAgICAgICwgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCg2MCwgMTY2LCAxMzA4MzM2MzU4Ljg5OCwg
UGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFByZXNzZWQsIFdlYkNvcmU6OlRvdWNoU3RhcnQpCisg
ICAgICAgICwgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCg2MywgMTY2LCAxMzA4MzM2MzU4Ljk0NCwg
UGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpCisgICAg
ICAgICwgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCg2OCwgMTY3LCAxMzA4MzM2MzU4Ljk1OCwgUGxh
dGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpCisgICAgICAg
ICwgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgxMTgsIDE3OSwgMTMwODMzNjM1OC45NzEsIFBsYXRm
b3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKQorICAgICAgICAs
IG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoMTE4LCAxNzksIDEzMDgzMzYzNTguOTg0LCBQbGF0Zm9y
bVRvdWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQsIFdlYkNvcmU6OlRvdWNoRW5kKQorICAgICksCisg
ICAgVG91Y2hTZXF1ZW5jZSg1CisgICAgICAgICwgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCg2Niwg
MzE4LCAxMzA4MzM2MzYyLjk5NiwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFByZXNzZWQsIFdl
YkNvcmU6OlRvdWNoU3RhcnQpCisgICAgICAgICwgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCg3MCwg
MzE2LCAxMzA4MzM2MzYzLjA0NiwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJD
b3JlOjpUb3VjaE1vdmUpCisgICAgICAgICwgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCg3NywgMzE0
LCAxMzA4MzM2MzYzLjA1OCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3Jl
OjpUb3VjaE1vdmUpCisgICAgICAgICwgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgxNzksIDI5NSwg
MTMwODMzNjM2My4wODIsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6
VG91Y2hNb3ZlKQorICAgICAgICAsIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoMTc5LCAyOTUsIDEz
MDgzMzYzNjMuMDk2LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQsIFdlYkNvcmU6
OlRvdWNoRW5kKQorICAgICksCisgICAgVG91Y2hTZXF1ZW5jZSgxMQorICAgICAgICAsIG5ldyBU
b3VjaFBvaW50QW5kRXZlbnQoMzQ1LCAzMzMsIDEzMDgzMzYzNjYuNjE4LCBQbGF0Zm9ybVRvdWNo
UG9pbnQ6OlRvdWNoUHJlc3NlZCwgV2ViQ29yZTo6VG91Y2hTdGFydCkKKyAgICAgICAgLCBuZXcg
VG91Y2hQb2ludEFuZEV2ZW50KDM0NCwgMzMwLCAxMzA4MzM2MzY2LjY2NCwgUGxhdGZvcm1Ub3Vj
aFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpCisgICAgICAgICwgbmV3IFRv
dWNoUG9pbnRBbmRFdmVudCgzNDMsIDMyOSwgMTMwODMzNjM2Ni42ODEsIFBsYXRmb3JtVG91Y2hQ
b2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKQorICAgICAgICAsIG5ldyBUb3Vj
aFBvaW50QW5kRXZlbnQoMzM5LCAzMjQsIDEzMDgzMzYzNjYuNjk0LCBQbGF0Zm9ybVRvdWNoUG9p
bnQ6OlRvdWNoTW92ZWQsIFdlYkNvcmU6OlRvdWNoTW92ZSkKKyAgICAgICAgLCBuZXcgVG91Y2hQ
b2ludEFuZEV2ZW50KDMzMiwgMzE3LCAxMzA4MzM2MzY2LjcwOSwgUGxhdGZvcm1Ub3VjaFBvaW50
OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpCisgICAgICAgICwgbmV3IFRvdWNoUG9p
bnRBbmRFdmVudCgzMTIsIDMwMCwgMTMwODMzNjM2Ni43MjgsIFBsYXRmb3JtVG91Y2hQb2ludDo6
VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKQorICAgICAgICAsIG5ldyBUb3VjaFBvaW50
QW5kRXZlbnQoMjc5LCAyNzUsIDEzMDgzMzYzNjYuNzQxLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRv
dWNoTW92ZWQsIFdlYkNvcmU6OlRvdWNoTW92ZSkKKyAgICAgICAgLCBuZXcgVG91Y2hQb2ludEFu
ZEV2ZW50KDI0NiwgMjUxLCAxMzA4MzM2MzY2Ljc1MiwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3Vj
aE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpCisgICAgICAgICwgbmV3IFRvdWNoUG9pbnRBbmRF
dmVudCgxOTgsIDIxOSwgMTMwODMzNjM2Ni43NjksIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hN
b3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKQorICAgICAgICAsIG5ldyBUb3VjaFBvaW50QW5kRXZl
bnQoMTU1LCAxOTYsIDEzMDgzMzYzNjYuNzgzLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92
ZWQsIFdlYkNvcmU6OlRvdWNoTW92ZSkKKyAgICAgICAgLCBuZXcgVG91Y2hQb2ludEFuZEV2ZW50
KDE1NSwgMTk2LCAxMzA4MzM2MzY2Ljc5NCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVh
c2VkLCBXZWJDb3JlOjpUb3VjaEVuZCkKKyAgICApLAorICAgIFRvdWNoU2VxdWVuY2UoNworICAg
ICAgICAsIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoMzMzLCAzNjAsIDEzMDgzMzYzNjkuNTQ3LCBQ
bGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZCwgV2ViQ29yZTo6VG91Y2hTdGFydCkKKyAg
ICAgICAgLCBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDMzMiwgMzU3LCAxMzA4MzM2MzY5LjU5Niwg
UGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpCisgICAg
ICAgICwgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgzMzEsIDM1MywgMTMwODMzNjM2OS42NjEsIFBs
YXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKQorICAgICAg
ICAsIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoMzI2LCAzNDUsIDEzMDgzMzYzNjkuNzEzLCBQbGF0
Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQsIFdlYkNvcmU6OlRvdWNoTW92ZSkKKyAgICAgICAg
LCBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDMxMCwgMzIzLCAxMzA4MzM2MzY5Ljc0OCwgUGxhdGZv
cm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpCisgICAgICAgICwg
bmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNTAsIDI3MiwgMTMwODMzNjM2OS44MDEsIFBsYXRmb3Jt
VG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKQorICAgICAgICAsIG5l
dyBUb3VjaFBvaW50QW5kRXZlbnQoMjUwLCAyNzIsIDEzMDgzMzYzNjkuODQwLCBQbGF0Zm9ybVRv
dWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQsIFdlYkNvcmU6OlRvdWNoRW5kKQorICAgICkKK307CisK
K1RFU1RfRihHZXN0dXJlUmVjb2duaXplclRlc3QsIHNhbXBsZUZsaWNrU2VxdWVuY2VHZXN0dXJl
VGVzdCkKK3sKKyAgICBJbnNwZWN0YWJsZUdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0gZ207Cisg
ICAgQVNTRVJUX0VRKEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06Ok5vR2VzdHVyZSwgZ20uc3Rh
dGUoKSk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bWJlck9mRmxpY2tTYW1wbGVzOyAr
K2kpIHsKKyAgICAgICAgc3RkOjpvc3RyaW5nc3RyZWFtIGZhaWx1cmVNZXNzYWdlQnVpbGRlcjsK
KyAgICAgICAgZmFpbHVyZU1lc3NhZ2VCdWlsZGVyIDw8ICJGYWlsZWQgb24gc2FtcGxlIHNlcXVl
bmNlICIgPDwgaTsKKyAgICAgICAgc3RkOjpzdHJpbmcgZmFpbHVyZU1lc3NhZ2UgPSBmYWlsdXJl
TWVzc2FnZUJ1aWxkZXIuc3RyKCk7CisKKyAgICAgICAgLy8gVGhlcmUgc2hvdWxkIGJlIGF0IGxl
YXN0IDMgZXZlbnRzIChUb3VjaFN0YXJ0LCBUb3VjaE1vdmUsIFRvdWNoRW5kKSBpbiBldmVyeSBz
ZXF1ZW5jZQorICAgICAgICBBU1NFUlRfR1Qoc2FtcGxlRmxpY2tTZXF1ZW5jZVtpXS5tX24sIDMp
IDw8IGZhaWx1cmVNZXNzYWdlOworCisgICAgICAgIC8vIEZpcnN0IGV2ZW50IChUb3VjaFN0YXJ0
KSBzaG91bGQgcHJvZHVjZSBhIFRvdWNoRG93biBnZXN0dXJlCisgICAgICAgIEdlc3R1cmVzIGdl
c3R1cmVTdGFydChnbS5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKHNhbXBsZUZsaWNrU2Vx
dWVuY2VbaV0ubV9kYXRhWzBdLT5tX2V2ZW50LCBmYWxzZSkpOworICAgICAgICBBU1NFUlRfRVEo
KHVuc2lnbmVkIGludCkxLCBnZXN0dXJlU3RhcnQtPnNpemUoKSkgPDwgZmFpbHVyZU1lc3NhZ2U7
CisgICAgICAgIEFTU0VSVF9FUShQbGF0Zm9ybUdlc3R1cmVFdmVudDo6VGFwRG93blR5cGUsICgq
Z2VzdHVyZVN0YXJ0KVswXS50eXBlKCkpIDw8IGZhaWx1cmVNZXNzYWdlOworICAgICAgICBBU1NF
UlRfRVEoR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6UGVuZGluZ1N5bnRoZXRpY0NsaWNrLCBn
bS5zdGF0ZSgpKSA8PCBmYWlsdXJlTWVzc2FnZTsKKworICAgICAgICAvLyBUaGVuIHdlIGhhdmUg
YSBidW5jaCBvZiBUb3VjaE1vdmUgZXZlbnRzCisgICAgICAgIGZvciAoaW50IGogPSAxOyBqIDwg
c2FtcGxlRmxpY2tTZXF1ZW5jZVtpXS5tX24gLSAxOyArK2opCisgICAgICAgICAgICBnbS5wcm9j
ZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKHNhbXBsZUZsaWNrU2VxdWVuY2VbaV0ubV9kYXRhW2pd
LT5tX2V2ZW50LCBmYWxzZSk7CisKKyAgICAgICAgLy8gTGFzdCBldmVudCAoVG91Y2hFbmQpIHNo
b3VsZCBnZW5lcmF0ZSBhIEZsaWNrIGdlc3R1cmUKKyAgICAgICAgR2VzdHVyZXMgZ2VzdHVyZUVu
ZChnbS5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKHNhbXBsZUZsaWNrU2VxdWVuY2VbaV0u
bV9kYXRhW3NhbXBsZUZsaWNrU2VxdWVuY2VbaV0ubV9uIC0gMV0tPm1fZXZlbnQsIGZhbHNlKSk7
CisgICAgICAgIEFTU0VSVF9FUSgodW5zaWduZWQgaW50KSAxLCBnZXN0dXJlRW5kLT5zaXplKCkp
IDw8IGZhaWx1cmVNZXNzYWdlOworICAgICAgICBBU1NFUlRfRVEoUGxhdGZvcm1HZXN0dXJlRXZl
bnQ6OlNjcm9sbEVuZFR5cGUsICgqZ2VzdHVyZUVuZClbMF0udHlwZSgpKSA8PCBmYWlsdXJlTWVz
c2FnZTsKKyAgICAgICAgZG91YmxlIHhWZWxvY2l0eSA9ICgqZ2VzdHVyZUVuZClbMF0uZGVsdGFY
KCk7CisgICAgICAgIGRvdWJsZSB5VmVsb2NpdHkgPSAoKmdlc3R1cmVFbmQpWzBdLmRlbHRhWSgp
OworICAgICAgICBkb3VibGUgdmVsb2NpdHkgPSBzcXJ0KHhWZWxvY2l0eSAqIHhWZWxvY2l0eSAr
IHlWZWxvY2l0eSAqIHlWZWxvY2l0eSk7CisgICAgICAgIEFTU0VSVF9HVCh2ZWxvY2l0eSwgMzAw
KSA8PCBmYWlsdXJlTWVzc2FnZTsKKyAgICAgICAgQVNTRVJUX0VRKEdlc3R1cmVSZWNvZ25pemVy
Q2hyb21pdW06Ok5vR2VzdHVyZSwgZ20uc3RhdGUoKSkgPDwgZmFpbHVyZU1lc3NhZ2U7CisgICAg
fQorfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109167</attachid>
            <date>2011-09-29 09:26:04 -0700</date>
            <delta_ts>2011-09-29 10:08:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67930-20110929122059.patch</filename>
            <type>text/plain</type>
            <size>24247</size>
            <attacher name="Varun Jain">varunjain</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYyNjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMDgwYzgwMDAyZTFkNTIz
MjcyYjM3NDZkZWVkNGRkZWZiYTVjZjZiLi4wZTE5OWE1ODM2NTViYjY5MTA2OTE4OTJhNDQyNDEz
Mjc1NDE3MTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDktMjggIFZhcnVu
IEphaW4gIDx2YXJ1bmphaW5AZ29vZ2xlLmNvbT4KKyAKKyAgICAgICAgIEltcGxlbWVudCBmbGlj
ayBnZXN0dXJlIGluIENocm9taXVtIEdlc3R1cmUgUmVjb2duaXplcgorICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3OTMwCisgCisgICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAKKyAgICAgICAgIFRlc3Q6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSW5uZXJHZXN0dXJlUmVjb2duaXplclRlc3QuY3BwIAorIAorICAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmNwcDoKKyAg
ICAgICAgIChXZWJDb3JlOjpHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjppc092ZXJNaW5GbGlj
a1NwZWVkKToKKyAgICAgICAgIChXZWJDb3JlOjpHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjph
cHBlbmRTY3JvbGxHZXN0dXJlRW5kKToKKyAgICAgICAgIChXZWJDb3JlOjpHZXN0dXJlUmVjb2du
aXplckNocm9taXVtOjp1cGRhdGVWYWx1ZXMpOgorICAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVS
ZWNvZ25pemVyQ2hyb21pdW06OnNjcm9sbEVuZCk6CisgICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uaDoKKwogMjAxMS0wOS0yOCAgU2VyZ2V5IEds
YXp1bm92ICA8c2VyZy5nbGF6dW5vdkBnbWFpbC5jb20+CiAKICAgICAgICAgSmF2YVNjcmlwdCBn
ZW5lcmF0ZWQgZG9jdW1lbnRzIGRvbid0IGluaGVyaXQgdGhlIGNvb2tpZSBVUkwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hy
b21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29n
bml6ZXJDaHJvbWl1bS5jcHAKaW5kZXggZmQ3NDNhNjE5ZWJiOTEzNmY3MGY3OTZkYjkwOTA2ZTE1
ZWNiYmFmMi4uY2Q4OWYxYmQ0ZjU0MWY3OGIyNDhkMjZjODM0MGMzYzU2Y2IzZjAxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVy
ZVJlY29nbml6ZXJDaHJvbWl1bS5jcHAKQEAgLTM4LDExICszOCwxNyBAQCBzdGF0aWMgY29uc3Qg
ZG91YmxlIG1heGltdW1Ub3VjaERvd25EdXJhdGlvbkluU2Vjb25kc0ZvckNsaWNrID0gMC44Owog
c3RhdGljIGNvbnN0IGRvdWJsZSBtaW5pbXVtVG91Y2hEb3duRHVyYXRpb25JblNlY29uZHNGb3JD
bGljayA9IDAuMDE7CiBzdGF0aWMgY29uc3QgZG91YmxlIG1heGltdW1TZWNvbmRzQmV0d2VlbkRv
dWJsZUNsaWNrID0gMC43Owogc3RhdGljIGNvbnN0IGludCBtYXhpbXVtVG91Y2hNb3ZlSW5QaXhl
bHNGb3JDbGljayA9IDIwOworc3RhdGljIGNvbnN0IGZsb2F0IG1pbkZsaWNrU3BlZWRTcXVhcmVk
ID0gOTAwMDAuZjsKIAogR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6R2VzdHVyZVJlY29nbml6
ZXJDaHJvbWl1bSgpCiAgICAgOiBtX2ZpcnN0VG91Y2hUaW1lKDAuMCkKICAgICAsIG1fc3RhdGUo
R2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6Tm9HZXN0dXJlKQogICAgICwgbV9sYXN0VG91Y2hU
aW1lKDAuMCkKKyAgICAsIG1fbGFzdENsaWNrVGltZSgwLjApCisgICAgLCBtX2xhc3RUb3VjaFBv
c2l0aW9uKCkKKyAgICAsIG1fbGFzdFRvdWNoU2NyZWVuUG9zaXRpb24oKQorICAgICwgbV94VmVs
b2NpdHkoMC4wKQorICAgICwgbV95VmVsb2NpdHkoMC4wKQogICAgICwgbV9jdHJsS2V5KGZhbHNl
KQogICAgICwgbV9hbHRLZXkoZmFsc2UpCiAgICAgLCBtX3NoaWZ0S2V5KGZhbHNlKQpAQCAtNzAs
NiArNzYsMTIgQEAgdm9pZCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpyZXNldCgpCiAgICAg
bV9maXJzdFRvdWNoVGltZSA9IDAuMDsKICAgICBtX3N0YXRlID0gR2VzdHVyZVJlY29nbml6ZXJD
aHJvbWl1bTo6Tm9HZXN0dXJlOwogICAgIG1fbGFzdFRvdWNoVGltZSA9IDAuMDsKKyAgICBtX2xh
c3RUb3VjaFBvc2l0aW9uLnNldFgoMCk7CisgICAgbV9sYXN0VG91Y2hQb3NpdGlvbi5zZXRZKDAp
OworICAgIG1fbGFzdFRvdWNoU2NyZWVuUG9zaXRpb24uc2V0WCgwKTsKKyAgICBtX2xhc3RUb3Vj
aFNjcmVlblBvc2l0aW9uLnNldFkoMCk7CisgICAgbV94VmVsb2NpdHkgPSAwLjA7CisgICAgbV95
VmVsb2NpdHkgPSAwLjA7CiB9CiAKIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06On5HZXN0dXJl
UmVjb2duaXplckNocm9taXVtKCkKQEAgLTk5LDYgKzExMSwxMSBAQCBib29sIEdlc3R1cmVSZWNv
Z25pemVyQ2hyb21pdW06OmlzSW5zaWRlTWFuaGF0dGFuU3F1YXJlKGNvbnN0IFBsYXRmb3JtVG91
Y2hQb2ludAogICAgIHJldHVybiBtYW5oYXR0YW5EaXN0YW5jZSA8IG1heGltdW1Ub3VjaE1vdmVJ
blBpeGVsc0ZvckNsaWNrOwogfQogCitib29sIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06Omlz
T3Zlck1pbkZsaWNrU3BlZWQoKQoreworICAgIHJldHVybiAobV94VmVsb2NpdHkgKiBtX3hWZWxv
Y2l0eSArIG1feVZlbG9jaXR5ICogbV95VmVsb2NpdHkpID4gbWluRmxpY2tTcGVlZFNxdWFyZWQ7
Cit9CisKIHZvaWQgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6YXBwZW5kVGFwRG93bkdlc3R1
cmVFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIEdlc3R1cmVzIGdl
c3R1cmVzKQogewogICAgIGdlc3R1cmVzLT5hcHBlbmQoUGxhdGZvcm1HZXN0dXJlRXZlbnQoUGxh
dGZvcm1HZXN0dXJlRXZlbnQ6OlRhcERvd25UeXBlLCBtX2ZpcnN0VG91Y2hQb3NpdGlvbiwgbV9m
aXJzdFRvdWNoU2NyZWVuUG9zaXRpb24sIG1fbGFzdFRvdWNoVGltZSwgMC5mLCAwLmYsIG1fc2hp
ZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOwpAQCAtMTM4LDkgKzE1NSw5
IEBAIHZvaWQgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6YXBwZW5kU2Nyb2xsR2VzdHVyZUJl
Z2luKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2luCiAgICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9y
bUdlc3R1cmVFdmVudChQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlLCB0b3Vj
aFBvaW50LnBvcygpLCB0b3VjaFBvaW50LnNjcmVlblBvcygpLCBtX2xhc3RUb3VjaFRpbWUsIDAu
ZiwgMC5mLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKIH0K
IAotdm9pZCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmRTY3JvbGxHZXN0dXJlRW5k
KGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwgR2VzdHVyZXMgZ2VzdHVyZXMp
Cit2b2lkIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZFNjcm9sbEdlc3R1cmVFbmQo
Y29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBHZXN0dXJlcyBnZXN0dXJlcywg
ZmxvYXQgeFZlbG9jaXR5LCBmbG9hdCB5VmVsb2NpdHkpCiB7Ci0gICAgZ2VzdHVyZXMtPmFwcGVu
ZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlw
ZSwgdG91Y2hQb2ludC5wb3MoKSwgdG91Y2hQb2ludC5zY3JlZW5Qb3MoKSwgbV9sYXN0VG91Y2hU
aW1lLCAwLmYsIDAuZiwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5
KSk7CisgICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9ybUdl
c3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZSwgdG91Y2hQb2ludC5wb3MoKSwgdG91Y2hQb2ludC5z
Y3JlZW5Qb3MoKSwgbV9sYXN0VG91Y2hUaW1lLCB4VmVsb2NpdHksIHlWZWxvY2l0eSwgbV9zaGlm
dEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7CiB9CiAKIHZvaWQgR2VzdHVy
ZVJlY29nbml6ZXJDaHJvbWl1bTo6YXBwZW5kU2Nyb2xsR2VzdHVyZVVwZGF0ZShjb25zdCBQbGF0
Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIEdlc3R1cmVzIGdlc3R1cmVzKQpAQCAtMTU0LDEx
ICsxNzEsMjAgQEAgdm9pZCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmRTY3JvbGxH
ZXN0dXJlVXBkYXRlKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2kKIAogdm9pZCBHZXN0dXJlUmVjb2du
aXplckNocm9taXVtOjp1cGRhdGVWYWx1ZXMoY29uc3QgZG91YmxlIHRvdWNoVGltZSwgY29uc3Qg
UGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50KQogeworICAgIGlmIChtX3N0YXRlICE9IE5v
R2VzdHVyZSAmJiB0b3VjaFBvaW50LnN0YXRlKCkgPT0gUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3Vj
aE1vdmVkKSB7CisgICAgICAgIGRvdWJsZSBpbnRlcnZhbCh0b3VjaFRpbWUgLSBtX2xhc3RUb3Vj
aFRpbWUpOworICAgICAgICBtX3hWZWxvY2l0eSA9ICh0b3VjaFBvaW50LnBvcygpLngoKSAtIG1f
bGFzdFRvdWNoUG9zaXRpb24ueCgpKSAvIGludGVydmFsOworICAgICAgICBtX3lWZWxvY2l0eSA9
ICh0b3VjaFBvaW50LnBvcygpLnkoKSAtIG1fbGFzdFRvdWNoUG9zaXRpb24ueSgpKSAvIGludGVy
dmFsOworICAgICAgICBtX2xhc3RUb3VjaFBvc2l0aW9uID0gdG91Y2hQb2ludC5wb3MoKTsKKyAg
ICAgICAgbV9sYXN0VG91Y2hTY3JlZW5Qb3NpdGlvbiA9IHRvdWNoUG9pbnQuc2NyZWVuUG9zKCk7
CisgICAgfQogICAgIG1fbGFzdFRvdWNoVGltZSA9IHRvdWNoVGltZTsKICAgICBpZiAoc3RhdGUo
KSA9PSBOb0dlc3R1cmUpIHsKICAgICAgICAgbV9maXJzdFRvdWNoVGltZSA9IHRvdWNoVGltZTsK
ICAgICAgICAgbV9maXJzdFRvdWNoUG9zaXRpb24gPSB0b3VjaFBvaW50LnBvcygpOwogICAgICAg
ICBtX2ZpcnN0VG91Y2hTY3JlZW5Qb3NpdGlvbiA9IHRvdWNoUG9pbnQuc2NyZWVuUG9zKCk7Cisg
ICAgICAgIG1feFZlbG9jaXR5ID0gMC4wOworICAgICAgICBtX3lWZWxvY2l0eSA9IDAuMDsKICAg
ICB9CiB9CiAKQEAgLTE4Myw3ICsyMDksMTAgQEAgYm9vbCBHZXN0dXJlUmVjb2duaXplckNocm9t
aXVtOjp0b3VjaERvd24oY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LAogCiBi
b29sIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OnNjcm9sbEVuZChjb25zdCBQbGF0Zm9ybVRv
dWNoUG9pbnQmIHBvaW50LCBHZXN0dXJlcyBnZXN0dXJlcykKIHsKLSAgICBhcHBlbmRTY3JvbGxH
ZXN0dXJlRW5kKHBvaW50LCBnZXN0dXJlcyk7CisgICAgaWYgKGlzT3Zlck1pbkZsaWNrU3BlZWQo
KSAmJiBwb2ludC5zdGF0ZSgpICE9IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hDYW5jZWxsZWQp
CisgICAgICAgIGFwcGVuZFNjcm9sbEdlc3R1cmVFbmQocG9pbnQsIGdlc3R1cmVzLCBtX3hWZWxv
Y2l0eSwgbV95VmVsb2NpdHkpOworICAgIGVsc2UKKyAgICAgICAgYXBwZW5kU2Nyb2xsR2VzdHVy
ZUVuZChwb2ludCwgZ2VzdHVyZXMsIDAuZiwgMC5mKTsKICAgICBzZXRTdGF0ZShOb0dlc3R1cmUp
OwogICAgIHJlc2V0KCk7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5o
CmluZGV4IDFmMTVkMzdjMzEyMTcwNjMyYWM1ZTBkZTg5MjAyYjM4MzY4ZjY3NGQuLjZjNWU5YzU4
OTE5ZGNjOGZhNTUzMDk3YjA5ZGE1ZmJiYTE5ZDgzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVt
LmgKQEAgLTcwLDExICs3MCwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgYXBwZW5kQ2xpY2tHZXN0
dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgR2VzdHVyZXMpOwogICAgIHZvaWQg
YXBwZW5kRG91YmxlQ2xpY2tHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Jiwg
R2VzdHVyZXMpOwogICAgIHZvaWQgYXBwZW5kU2Nyb2xsR2VzdHVyZUJlZ2luKGNvbnN0IFBsYXRm
b3JtVG91Y2hQb2ludCYsIEdlc3R1cmVzKTsKLSAgICB2b2lkIGFwcGVuZFNjcm9sbEdlc3R1cmVF
bmQoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgR2VzdHVyZXMpOworICAgIHZvaWQgYXBwZW5k
U2Nyb2xsR2VzdHVyZUVuZChjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmLCBHZXN0dXJlcywgZmxv
YXQsIGZsb2F0KTsKICAgICB2b2lkIGFwcGVuZFNjcm9sbEdlc3R1cmVVcGRhdGUoY29uc3QgUGxh
dGZvcm1Ub3VjaFBvaW50JiwgR2VzdHVyZXMpOwogICAgIGJvb2wgaXNJbkNsaWNrVGltZVdpbmRv
dygpOwogICAgIGJvb2wgaXNJblNlY29uZENsaWNrVGltZVdpbmRvdygpOwogICAgIGJvb2wgaXNJ
bnNpZGVNYW5oYXR0YW5TcXVhcmUoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Jik7CisgICAgYm9v
bCBpc092ZXJNaW5GbGlja1NwZWVkKCk7CiAgICAgdm9pZCBzZXRTdGF0ZShTdGF0ZSB2YWx1ZSkg
eyBtX3N0YXRlID0gdmFsdWU7IH0KICAgICB2b2lkIHVwZGF0ZVZhbHVlcyhkb3VibGUgdG91Y2hU
aW1lLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmKTsKIApAQCAtOTIsNiArOTMsMTAgQEAgcHJp
dmF0ZToKICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIGRvdWJsZSBtX2xhc3RUb3VjaFRpbWU7CiAg
ICAgZG91YmxlIG1fbGFzdENsaWNrVGltZTsKKyAgICBJbnRQb2ludCBtX2xhc3RUb3VjaFBvc2l0
aW9uOworICAgIEludFBvaW50IG1fbGFzdFRvdWNoU2NyZWVuUG9zaXRpb247CisgICAgZmxvYXQg
bV94VmVsb2NpdHk7CisgICAgZmxvYXQgbV95VmVsb2NpdHk7CiAKICAgICBib29sIG1fY3RybEtl
eTsKICAgICBib29sIG1fYWx0S2V5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9Jbm5lckdlc3R1cmVSZWNvZ25pemVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0lubmVyR2VzdHVyZVJlY29nbml6ZXJUZXN0LmNwcAppbmRleCBkNDlhMzRj
ZDdhMDUzMzU2Zjc2MGIyZTdlYjBiMjU1MDI4OTJiM2Y4Li4wYmY5NmM4MGM3NDNmY2IzYjEwNTIw
MjRhNWNjYjRiMWFlMDJhNzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0lubmVyR2VzdHVyZVJlY29nbml6ZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0lubmVyR2VzdHVyZVJlY29nbml6ZXJUZXN0LmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIkdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uaCIKIAogI2luY2x1ZGUg
PGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8c3RkYXJnLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCkBAIC00OTMsNiArNDk0LDcgQEAgVEVTVF9GKEdlc3R1cmVSZWNvZ25pemVyVGVz
dCwgZ2VzdHVyZVNjcm9sbEV2ZW50cykKIAogICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hQb2lu
dCBtb3ZlKDEwLCA1MCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkKTsKICAgICBCdWls
ZGFibGVQbGF0Zm9ybVRvdWNoRXZlbnQgbW92ZUV2ZW50KFdlYkNvcmU6OlRvdWNoTW92ZSwgbW92
ZSk7CisgICAgZ20uc2V0TGFzdFRvdWNoVGltZShnbS5sYXN0VG91Y2hUaW1lKCkgLSAwLjIpOwog
ICAgIEdlc3R1cmVzIGdlc3R1cmVTdGFydChnbS5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVz
KG1vdmVFdmVudCwgZmFsc2UpKTsKICAgICBib29sIHNjcm9sbFN0YXJ0ZWQgPSBmYWxzZSwgc2Ny
b2xsVXBkYXRlZCA9IGZhbHNlOwogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZ2Vz
dHVyZVN0YXJ0LT5zaXplKCk7IGkrKykgewpAQCAtNTE0LDEyICs1MTYsMTUgQEAgVEVTVF9GKEdl
c3R1cmVSZWNvZ25pemVyVGVzdCwgZ2VzdHVyZVNjcm9sbEV2ZW50cykKIAogICAgIEJ1aWxkYWJs
ZVBsYXRmb3JtVG91Y2hQb2ludCByZWxlYXNlKDEwLCA1MCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpU
b3VjaFJlbGVhc2VkKTsKICAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoRXZlbnQgcmVsZWFzZUV2
ZW50KFdlYkNvcmU6OlRvdWNoRW5kLCByZWxlYXNlKTsKKyAgICBnbS5zZXRMYXN0VG91Y2hUaW1l
KGdtLmxhc3RUb3VjaFRpbWUoKSAtIDAuMik7CiAgICAgYm9vbCBzY3JvbGxFbmQgPSBmYWxzZTsK
ICAgICBHZXN0dXJlcyBnZXN0dXJlRW5kKGdtLnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMo
cmVsZWFzZUV2ZW50LCBmYWxzZSkpOwogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
Z2VzdHVyZUVuZC0+c2l6ZSgpOyBpKyspIHsKICAgICAgICAgc3dpdGNoICgoKmdlc3R1cmVFbmQp
W2ldLnR5cGUoKSkgewogICAgICAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxF
bmRUeXBlOgogICAgICAgICAgICAgc2Nyb2xsRW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIEFTU0VS
VF9FUSgoKmdlc3R1cmVFbmQpW2ldLmRlbHRhWCgpLCAwKTsKKyAgICAgICAgICAgIEFTU0VSVF9F
USgoKmdlc3R1cmVFbmQpW2ldLmRlbHRhWSgpLCAwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX1RSVUUoZmFsc2UpOwpAQCAtNTI4LDMg
KzUzMywyMjkgQEAgVEVTVF9GKEdlc3R1cmVSZWNvZ25pemVyVGVzdCwgZ2VzdHVyZVNjcm9sbEV2
ZW50cykKICAgICBBU1NFUlRfVFJVRShzY3JvbGxFbmQpOwogICAgIEFTU0VSVF9FUShHZXN0dXJl
UmVjb2duaXplckNocm9taXVtOjpOb0dlc3R1cmUsIGdtLnN0YXRlKCkpOwogfQorCitURVNUX0Yo
R2VzdHVyZVJlY29nbml6ZXJUZXN0LCBmbGlja0dlc3R1cmVUZXN0KQoreworICAgIEluc3BlY3Rh
YmxlR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bSBnbTsKKyAgICBBU1NFUlRfRVEoR2VzdHVyZVJl
Y29nbml6ZXJDaHJvbWl1bTo6Tm9HZXN0dXJlLCBnbS5zdGF0ZSgpKTsKKworICAgIEJ1aWxkYWJs
ZVBsYXRmb3JtVG91Y2hQb2ludCBwcmVzcygxMCwgMTUsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91
Y2hQcmVzc2VkKTsKKyAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoRXZlbnQgcHJlc3NFdmVudChX
ZWJDb3JlOjpUb3VjaFN0YXJ0LCBwcmVzcyk7CisgICAgR2VzdHVyZXMgZ2VzdHVyZVN0YXJ0KGdt
LnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMocHJlc3NFdmVudCwgZmFsc2UpKTsKKyAgICBB
U1NFUlRfRVEoKHVuc2lnbmVkIGludCkxLCBnZXN0dXJlU3RhcnQtPnNpemUoKSk7CisgICAgQVNT
RVJUX0VRKFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpUYXBEb3duVHlwZSwgKCpnZXN0dXJlU3RhcnQp
WzBdLnR5cGUoKSk7CisgICAgQVNTRVJUX0VRKEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OlBl
bmRpbmdTeW50aGV0aWNDbGljaywgZ20uc3RhdGUoKSk7CisKKyAgICBCdWlsZGFibGVQbGF0Zm9y
bVRvdWNoUG9pbnQgbW92ZSgxMCwgNTAsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCk7
CisgICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaEV2ZW50IG1vdmVFdmVudChXZWJDb3JlOjpUb3Vj
aE1vdmUsIG1vdmUpOworICAgIEdlc3R1cmVzIGdlc3R1cmVNb3ZlKGdtLnByb2Nlc3NUb3VjaEV2
ZW50Rm9yR2VzdHVyZXMobW92ZUV2ZW50LCBmYWxzZSkpOworICAgIGJvb2wgc2Nyb2xsU3RhcnRl
ZCA9IGZhbHNlLCBzY3JvbGxVcGRhdGVkID0gZmFsc2U7CisgICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCBnZXN0dXJlTW92ZS0+c2l6ZSgpOyBpKyspIHsKKyAgICAgICAgc3dpdGNoICgo
Kmdlc3R1cmVNb3ZlKVtpXS50eXBlKCkpIHsKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVF
dmVudDo6U2Nyb2xsQmVnaW5UeXBlOgorICAgICAgICAgICAgc2Nyb2xsU3RhcnRlZCA9IHRydWU7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6
U2Nyb2xsVXBkYXRlVHlwZToKKyAgICAgICAgICAgIHNjcm9sbFVwZGF0ZWQgPSB0cnVlOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfVFJV
RShmYWxzZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBBU1NFUlRfVFJVRShzY3JvbGxTdGFy
dGVkKTsKKyAgICBBU1NFUlRfVFJVRShzY3JvbGxVcGRhdGVkKTsKKyAgICBBU1NFUlRfRVEoR2Vz
dHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6U2Nyb2xsLCBnbS5zdGF0ZSgpKTsKKworICAgIEJ1aWxk
YWJsZVBsYXRmb3JtVG91Y2hQb2ludCByZWxlYXNlKDEwLCA1MCwgUGxhdGZvcm1Ub3VjaFBvaW50
OjpUb3VjaFJlbGVhc2VkKTsKKyAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoRXZlbnQgcmVsZWFz
ZUV2ZW50KFdlYkNvcmU6OlRvdWNoRW5kLCByZWxlYXNlKTsKKyAgICBHZXN0dXJlcyBnZXN0dXJl
RW5kKGdtLnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMocmVsZWFzZUV2ZW50LCBmYWxzZSkp
OworICAgIEFTU0VSVF9FUSgodW5zaWduZWQgaW50KSAxLCBnZXN0dXJlRW5kLT5zaXplKCkpOwor
ICAgIEFTU0VSVF9FUShQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZSwgKCpnZXN0
dXJlRW5kKVswXS50eXBlKCkpOworICAgIEFTU0VSVF9HVCgoKmdlc3R1cmVFbmQpWzBdLmRlbHRh
WCgpLCAwKTsKKyAgICBBU1NFUlRfR1QoKCpnZXN0dXJlRW5kKVswXS5kZWx0YVkoKSwgMCk7Cisg
ICAgQVNTRVJUX0VRKEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06Ok5vR2VzdHVyZSwgZ20uc3Rh
dGUoKSk7Cit9CisKK3N0cnVjdCBUb3VjaFBvaW50QW5kRXZlbnQgeworcHVibGljOgorICAgIFRv
dWNoUG9pbnRBbmRFdmVudChpbnQgeCwgaW50IHksIGRvdWJsZSB0aW1lc3RhbXAsIFBsYXRmb3Jt
VG91Y2hQb2ludDo6U3RhdGUgc3RhdGUsIFdlYkNvcmU6OlRvdWNoRXZlbnRUeXBlIHR5cGUpCisg
ICAgICAgIDogbV9wb2ludCh4LCB5LCBzdGF0ZSkKKyAgICAgICAgLCBtX2V2ZW50KHR5cGUsIG1f
cG9pbnQsIHRpbWVzdGFtcCkKKyAgICB7IH0KKyAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9p
bnQgbV9wb2ludDsKKyAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoRXZlbnQgbV9ldmVudDsKK307
CisKK2NsYXNzIFRvdWNoU2VxdWVuY2UgeworcHVibGljOgorICAgIFRvdWNoU2VxdWVuY2UoaW50
IG4sIC4uLikgOiBtX24obikKKyAgICB7CisgICAgICAgIHZhX2xpc3QgYXJnczsKKyAgICAgICAg
dmFfc3RhcnQoYXJncywgbik7CisgICAgICAgIEFTU0VSVChuID4gMCk7CisgICAgICAgIG1fZGF0
YSA9IG5ldyBUb3VjaFBvaW50QW5kRXZlbnQqW25dOworICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG47ICsraSkKKyAgICAgICAgICAgIG1fZGF0YVtpXSA9IHZhX2FyZyhhcmdzLCBUb3VjaFBv
aW50QW5kRXZlbnQqKTsKKyAgICAgICAgdmFfZW5kKGFyZ3MpOworICAgIH0KKyAgICB+VG91Y2hT
ZXF1ZW5jZSgpCisgICAgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fbjsgKytpKQor
ICAgICAgICAgICAgZGVsZXRlIG1fZGF0YVtpXTsKKyAgICAgICAgZGVsZXRlIG1fZGF0YTsKKyAg
ICB9CisgICAgaW50IG1fbjsKKyAgICBUb3VjaFBvaW50QW5kRXZlbnQqKiBtX2RhdGE7Cit9Owor
Citjb25zdCBpbnQgbnVtYmVyT2ZGbGlja1NhbXBsZXMgPSAxMTsKK1RvdWNoU2VxdWVuY2Ugc2Ft
cGxlRmxpY2tTZXF1ZW5jZVtudW1iZXJPZkZsaWNrU2FtcGxlc10gPQoreworICAgIFRvdWNoU2Vx
dWVuY2UoOCwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNTYsIDM0OCwgMTMwODMz
NjI0NS40MDcsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2VkLCBXZWJDb3JlOjpUb3Vj
aFN0YXJ0KSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNTQsIDM0NSwgMTMwODMz
NjI0NS40NzAsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hN
b3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNTIsIDMzNiwgMTMwODMzNjI0
NS40ODgsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3Zl
KSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNDIsIDI2MSwgMTMwODMzNjI0NS41
MDUsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKSwK
KyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNDIsIDE3OSwgMTMwODMzNjI0NS41MjEs
IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKSwKKyAg
ICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNTUsIDEwMCwgMTMwODMzNjI0NS41MzMsIFBs
YXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKSwKKyAgICAg
ICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNjIsIDc0LCAxMzA4MzM2MjQ1LjU0OSwgUGxhdGZv
cm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpLAorICAgICAgICBu
ZXcgVG91Y2hQb2ludEFuZEV2ZW50KDI2MiwgNzQsIDEzMDgzMzYyNDUuNTY2LCBQbGF0Zm9ybVRv
dWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQsIFdlYkNvcmU6OlRvdWNoRW5kKQorICAgICksCisgICAg
VG91Y2hTZXF1ZW5jZSg4LAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDE3OCwgMzM5
LCAxMzA4MzM2MjY2LjE4MCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFByZXNzZWQsIFdlYkNv
cmU6OlRvdWNoU3RhcnQpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDE3NywgMzM1
LCAxMzA4MzM2MjY2LjIxMiwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3Jl
OjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDE3MiwgMzE0LCAx
MzA4MzM2MjY2LjIyNiwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpU
b3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDE2MCwgMjQ4LCAxMzA4
MzM2MjY2LjI0MCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3Vj
aE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDE1NiwgMTk4LCAxMzA4MzM2
MjY2LjI1MSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1v
dmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDE2NiwgOTksIDEzMDgzMzYyNjYu
MjY2LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQsIFdlYkNvcmU6OlRvdWNoTW92ZSks
CisgICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoMTc5LCA0MSwgMTMwODMzNjI2Ni4yODAs
IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKSwKKyAg
ICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgxNzksIDQxLCAxMzA4MzM2MjY2LjI5MSwgUGxh
dGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkLCBXZWJDb3JlOjpUb3VjaEVuZCkKKyAgICAp
LAorICAgIFRvdWNoU2VxdWVuY2UoNywKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgy
MzgsIDM4NiwgMTMwODMzNjI3Mi4wNjgsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2Vk
LCBXZWJDb3JlOjpUb3VjaFN0YXJ0KSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgy
MzcsIDM4MywgMTMwODMzNjI3Mi4xMjEsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwg
V2ViQ29yZTo6VG91Y2hNb3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyMzYs
IDM3NCwgMTMwODMzNjI3Mi4xMzgsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2Vi
Q29yZTo6VG91Y2hNb3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyMjMsIDI2
NCwgMTMwODMzNjI3Mi4xNTUsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29y
ZTo6VG91Y2hNb3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyMzEsIDE2Niwg
MTMwODMzNjI3Mi4xNzMsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6
VG91Y2hNb3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNDMsIDEwNywgMTMw
ODMzNjI3Mi4xOTAsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91
Y2hNb3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNDMsIDEwNywgMTMwODMz
NjI3Mi4yMDIsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZCwgV2ViQ29yZTo6VG91
Y2hFbmQpCisgICAgKSwKKyAgICBUb3VjaFNlcXVlbmNlKDEwLAorICAgICAgICBuZXcgVG91Y2hQ
b2ludEFuZEV2ZW50KDMzNCwgMzUxLCAxMzA4MzM2MzEzLjU4MSwgUGxhdGZvcm1Ub3VjaFBvaW50
OjpUb3VjaFByZXNzZWQsIFdlYkNvcmU6OlRvdWNoU3RhcnQpLAorICAgICAgICBuZXcgVG91Y2hQ
b2ludEFuZEV2ZW50KDMzNCwgMzQ4LCAxMzA4MzM2MzEzLjY5NCwgUGxhdGZvcm1Ub3VjaFBvaW50
OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2lu
dEFuZEV2ZW50KDMzNSwgMzQ2LCAxMzA4MzM2MzEzLjcxNCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpU
b3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFu
ZEV2ZW50KDMzNCwgMzQzLCAxMzA4MzM2MzEzLjcyNywgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3Vj
aE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2
ZW50KDMzMiwgMzM2LCAxMzA4MzM2MzEzLjczOCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1v
dmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50
KDMyOCwgMzE2LCAxMzA4MzM2MzEzLjc1MywgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVk
LCBXZWJDb3JlOjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDMx
NywgMjc3LCAxMzA4MzM2MzEzLjc3MCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBX
ZWJDb3JlOjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDMwNiwg
MjQzLCAxMzA4MzM2MzEzLjc4NCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJD
b3JlOjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDI5MiwgMTky
LCAxMzA4MzM2MzEzLjc5OSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3Jl
OjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDI5MiwgMTkyLCAx
MzA4MzM2MzEzLjgxNSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkLCBXZWJDb3Jl
OjpUb3VjaEVuZCkKKyAgICApLAorICAgIFRvdWNoU2VxdWVuY2UoMTQsCisgICAgICAgIG5ldyBU
b3VjaFBvaW50QW5kRXZlbnQoOTIsIDExMiwgMTMwODMzNjMyMy45NTUsIFBsYXRmb3JtVG91Y2hQ
b2ludDo6VG91Y2hQcmVzc2VkLCBXZWJDb3JlOjpUb3VjaFN0YXJ0KSwKKyAgICAgICAgbmV3IFRv
dWNoUG9pbnRBbmRFdmVudCg5MiwgMTE1LCAxMzA4MzM2MzI0LjA1NiwgUGxhdGZvcm1Ub3VjaFBv
aW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQ
b2ludEFuZEV2ZW50KDkxLCAxMTYsIDEzMDgzMzYzMjQuMDY2LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6
OlRvdWNoTW92ZWQsIFdlYkNvcmU6OlRvdWNoTW92ZSksCisgICAgICAgIG5ldyBUb3VjaFBvaW50
QW5kRXZlbnQoOTEsIDExNywgMTMwODMzNjMyNC4wNzQsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91
Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRF
dmVudCg5MCwgMTIyLCAxMzA4MzM2MzI0LjA4OSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1v
dmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50
KDkwLCAxMjksIDEzMDgzMzYzMjQuMTAyLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQs
IFdlYkNvcmU6OlRvdWNoTW92ZSksCisgICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoODks
IDE0NywgMTMwODMzNjMyNC4xMjAsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2Vi
Q29yZTo6VG91Y2hNb3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCg4OSwgMTYz
LCAxMzA4MzM2MzI0LjEzNSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3Jl
OjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDg5LCAxODgsIDEz
MDgzMzYzMjQuMTUxLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQsIFdlYkNvcmU6OlRv
dWNoTW92ZSksCisgICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoODksIDIxMywgMTMwODMz
NjMyNC4xNjksIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hN
b3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCg4OSwgMjUyLCAxMzA4MzM2MzI0
LjE4OSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUp
LAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDkwLCAyODMsIDEzMDgzMzYzMjQuMjA0
LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQsIFdlYkNvcmU6OlRvdWNoTW92ZSksCisg
ICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoOTEsIDMwOCwgMTMwODMzNjMyNC4yMTgsIFBs
YXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKSwKKyAgICAg
ICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCg5MSwgMzA4LCAxMzA4MzM2MzI0LjIzMCwgUGxhdGZv
cm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkLCBXZWJDb3JlOjpUb3VjaEVuZCkKKyAgICApLAor
ICAgIFRvdWNoU2VxdWVuY2UoNSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCg1NSwg
MjQ5LCAxMzA4MzM2MzQ5LjA5MywgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFByZXNzZWQsIFdl
YkNvcmU6OlRvdWNoU3RhcnQpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDU5LCAy
NDksIDEzMDgzMzYzNDkuMTc5LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQsIFdlYkNv
cmU6OlRvdWNoTW92ZSksCisgICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoNjYsIDI0OCwg
MTMwODMzNjM0OS4xOTEsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6
VG91Y2hNb3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgxMjgsIDI1MywgMTMw
ODMzNjM0OS4yMDgsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91
Y2hNb3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgxMjgsIDI1MywgMTMwODMz
NjM0OS4yNTgsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZCwgV2ViQ29yZTo6VG91
Y2hFbmQpCisgICAgKSwKKyAgICBUb3VjaFNlcXVlbmNlKDksCisgICAgICAgIG5ldyBUb3VjaFBv
aW50QW5kRXZlbnQoMzc2LCAyOTAsIDEzMDgzMzYzNTMuMDcxLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6
OlRvdWNoUHJlc3NlZCwgV2ViQ29yZTo6VG91Y2hTdGFydCksCisgICAgICAgIG5ldyBUb3VjaFBv
aW50QW5kRXZlbnQoMzczLCAyODgsIDEzMDgzMzYzNTMuMTI3LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6
OlRvdWNoTW92ZWQsIFdlYkNvcmU6OlRvdWNoTW92ZSksCisgICAgICAgIG5ldyBUb3VjaFBvaW50
QW5kRXZlbnQoMzcyLCAyODcsIDEzMDgzMzYzNTMuMTQwLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRv
dWNoTW92ZWQsIFdlYkNvcmU6OlRvdWNoTW92ZSksCisgICAgICAgIG5ldyBUb3VjaFBvaW50QW5k
RXZlbnQoMzUzLCAyODAsIDEzMDgzMzYzNTMuMTU2LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNo
TW92ZWQsIFdlYkNvcmU6OlRvdWNoTW92ZSksCisgICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZl
bnQoMzE5LCAyNzEsIDEzMDgzMzYzNTMuMTcxLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92
ZWQsIFdlYkNvcmU6OlRvdWNoTW92ZSksCisgICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQo
MjY0LCAyNTgsIDEzMDgzMzYzNTMuMTg4LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQs
IFdlYkNvcmU6OlRvdWNoTW92ZSksCisgICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoMjE1
LCAyNTEsIDEzMDgzMzYzNTMuMjAwLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQsIFdl
YkNvcmU6OlRvdWNoTW92ZSksCisgICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoMTUxLCAy
NDYsIDEzMDgzMzYzNTMuMjE3LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQsIFdlYkNv
cmU6OlRvdWNoTW92ZSksCisgICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoMTUxLCAyNDYs
IDEzMDgzMzYzNTMuMjMxLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQsIFdlYkNv
cmU6OlRvdWNoRW5kKQorICAgICksCisgICAgVG91Y2hTZXF1ZW5jZSg1LAorICAgICAgICBuZXcg
VG91Y2hQb2ludEFuZEV2ZW50KDYwLCAxNjYsIDEzMDgzMzYzNTguODk4LCBQbGF0Zm9ybVRvdWNo
UG9pbnQ6OlRvdWNoUHJlc3NlZCwgV2ViQ29yZTo6VG91Y2hTdGFydCksCisgICAgICAgIG5ldyBU
b3VjaFBvaW50QW5kRXZlbnQoNjMsIDE2NiwgMTMwODMzNjM1OC45NDQsIFBsYXRmb3JtVG91Y2hQ
b2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKSwKKyAgICAgICAgbmV3IFRvdWNo
UG9pbnRBbmRFdmVudCg2OCwgMTY3LCAxMzA4MzM2MzU4Ljk1OCwgUGxhdGZvcm1Ub3VjaFBvaW50
OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2lu
dEFuZEV2ZW50KDExOCwgMTc5LCAxMzA4MzM2MzU4Ljk3MSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpU
b3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFu
ZEV2ZW50KDExOCwgMTc5LCAxMzA4MzM2MzU4Ljk4NCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3Vj
aFJlbGVhc2VkLCBXZWJDb3JlOjpUb3VjaEVuZCkKKyAgICApLAorICAgIFRvdWNoU2VxdWVuY2Uo
NSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCg2NiwgMzE4LCAxMzA4MzM2MzYyLjk5
NiwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFByZXNzZWQsIFdlYkNvcmU6OlRvdWNoU3RhcnQp
LAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDcwLCAzMTYsIDEzMDgzMzYzNjMuMDQ2
LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQsIFdlYkNvcmU6OlRvdWNoTW92ZSksCisg
ICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoNzcsIDMxNCwgMTMwODMzNjM2My4wNTgsIFBs
YXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKSwKKyAgICAg
ICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgxNzksIDI5NSwgMTMwODMzNjM2My4wODIsIFBsYXRm
b3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKSwKKyAgICAgICAg
bmV3IFRvdWNoUG9pbnRBbmRFdmVudCgxNzksIDI5NSwgMTMwODMzNjM2My4wOTYsIFBsYXRmb3Jt
VG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZCwgV2ViQ29yZTo6VG91Y2hFbmQpCisgICAgKSwKKyAg
ICBUb3VjaFNlcXVlbmNlKDExLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDM0NSwg
MzMzLCAxMzA4MzM2MzY2LjYxOCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFByZXNzZWQsIFdl
YkNvcmU6OlRvdWNoU3RhcnQpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDM0NCwg
MzMwLCAxMzA4MzM2MzY2LjY2NCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJD
b3JlOjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDM0MywgMzI5
LCAxMzA4MzM2MzY2LjY4MSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3Jl
OjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDMzOSwgMzI0LCAx
MzA4MzM2MzY2LjY5NCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpU
b3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDMzMiwgMzE3LCAxMzA4
MzM2MzY2LjcwOSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3Vj
aE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDMxMiwgMzAwLCAxMzA4MzM2
MzY2LjcyOCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1v
dmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDI3OSwgMjc1LCAxMzA4MzM2MzY2
Ljc0MSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUp
LAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDI0NiwgMjUxLCAxMzA4MzM2MzY2Ljc1
MiwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpLAor
ICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDE5OCwgMjE5LCAxMzA4MzM2MzY2Ljc2OSwg
UGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpLAorICAg
ICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDE1NSwgMTk2LCAxMzA4MzM2MzY2Ljc4MywgUGxh
dGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpLAorICAgICAg
ICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDE1NSwgMTk2LCAxMzA4MzM2MzY2Ljc5NCwgUGxhdGZv
cm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkLCBXZWJDb3JlOjpUb3VjaEVuZCkKKyAgICApLAor
ICAgIFRvdWNoU2VxdWVuY2UoNywKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgzMzMs
IDM2MCwgMTMwODMzNjM2OS41NDcsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2VkLCBX
ZWJDb3JlOjpUb3VjaFN0YXJ0KSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgzMzIs
IDM1NywgMTMwODMzNjM2OS41OTYsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2Vi
Q29yZTo6VG91Y2hNb3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgzMzEsIDM1
MywgMTMwODMzNjM2OS42NjEsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29y
ZTo6VG91Y2hNb3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgzMjYsIDM0NSwg
MTMwODMzNjM2OS43MTMsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6
VG91Y2hNb3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgzMTAsIDMyMywgMTMw
ODMzNjM2OS43NDgsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91
Y2hNb3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNTAsIDI3MiwgMTMwODMz
NjM2OS44MDEsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hN
b3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNTAsIDI3MiwgMTMwODMzNjM2
OS44NDAsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZCwgV2ViQ29yZTo6VG91Y2hF
bmQpCisgICAgKQorfTsKKworVEVTVF9GKEdlc3R1cmVSZWNvZ25pemVyVGVzdCwgc2FtcGxlRmxp
Y2tTZXF1ZW5jZUdlc3R1cmVUZXN0KQoreworICAgIEluc3BlY3RhYmxlR2VzdHVyZVJlY29nbml6
ZXJDaHJvbWl1bSBnbTsKKyAgICBBU1NFUlRfRVEoR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6
Tm9HZXN0dXJlLCBnbS5zdGF0ZSgpKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtYmVy
T2ZGbGlja1NhbXBsZXM7ICsraSkgeworICAgICAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gZmFpbHVy
ZU1lc3NhZ2VCdWlsZGVyOworICAgICAgICBmYWlsdXJlTWVzc2FnZUJ1aWxkZXIgPDwgIkZhaWxl
ZCBvbiBzYW1wbGUgc2VxdWVuY2UgIiA8PCBpOworICAgICAgICBzdGQ6OnN0cmluZyBmYWlsdXJl
TWVzc2FnZSA9IGZhaWx1cmVNZXNzYWdlQnVpbGRlci5zdHIoKTsKKworICAgICAgICAvLyBUaGVy
ZSBzaG91bGQgYmUgYXQgbGVhc3QgMyBldmVudHMgKFRvdWNoU3RhcnQsIFRvdWNoTW92ZSwgVG91
Y2hFbmQpIGluIGV2ZXJ5IHNlcXVlbmNlCisgICAgICAgIEFTU0VSVF9HVChzYW1wbGVGbGlja1Nl
cXVlbmNlW2ldLm1fbiwgMykgPDwgZmFpbHVyZU1lc3NhZ2U7CisKKyAgICAgICAgLy8gRmlyc3Qg
ZXZlbnQgKFRvdWNoU3RhcnQpIHNob3VsZCBwcm9kdWNlIGEgVG91Y2hEb3duIGdlc3R1cmUKKyAg
ICAgICAgR2VzdHVyZXMgZ2VzdHVyZVN0YXJ0KGdtLnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVy
ZXMoc2FtcGxlRmxpY2tTZXF1ZW5jZVtpXS5tX2RhdGFbMF0tPm1fZXZlbnQsIGZhbHNlKSk7Cisg
ICAgICAgIEFTU0VSVF9FUSgodW5zaWduZWQgaW50KTEsIGdlc3R1cmVTdGFydC0+c2l6ZSgpKSA8
PCBmYWlsdXJlTWVzc2FnZTsKKyAgICAgICAgQVNTRVJUX0VRKFBsYXRmb3JtR2VzdHVyZUV2ZW50
OjpUYXBEb3duVHlwZSwgKCpnZXN0dXJlU3RhcnQpWzBdLnR5cGUoKSkgPDwgZmFpbHVyZU1lc3Nh
Z2U7CisgICAgICAgIEFTU0VSVF9FUShHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpQZW5kaW5n
U3ludGhldGljQ2xpY2ssIGdtLnN0YXRlKCkpIDw8IGZhaWx1cmVNZXNzYWdlOworCisgICAgICAg
IC8vIFRoZW4gd2UgaGF2ZSBhIGJ1bmNoIG9mIFRvdWNoTW92ZSBldmVudHMKKyAgICAgICAgZm9y
IChpbnQgaiA9IDE7IGogPCBzYW1wbGVGbGlja1NlcXVlbmNlW2ldLm1fbiAtIDE7ICsraikKKyAg
ICAgICAgICAgIGdtLnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMoc2FtcGxlRmxpY2tTZXF1
ZW5jZVtpXS5tX2RhdGFbal0tPm1fZXZlbnQsIGZhbHNlKTsKKworICAgICAgICAvLyBMYXN0IGV2
ZW50IChUb3VjaEVuZCkgc2hvdWxkIGdlbmVyYXRlIGEgRmxpY2sgZ2VzdHVyZQorICAgICAgICBH
ZXN0dXJlcyBnZXN0dXJlRW5kKGdtLnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMoc2FtcGxl
RmxpY2tTZXF1ZW5jZVtpXS5tX2RhdGFbc2FtcGxlRmxpY2tTZXF1ZW5jZVtpXS5tX24gLSAxXS0+
bV9ldmVudCwgZmFsc2UpKTsKKyAgICAgICAgQVNTRVJUX0VRKCh1bnNpZ25lZCBpbnQpIDEsIGdl
c3R1cmVFbmQtPnNpemUoKSkgPDwgZmFpbHVyZU1lc3NhZ2U7CisgICAgICAgIEFTU0VSVF9FUShQ
bGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZSwgKCpnZXN0dXJlRW5kKVswXS50eXBl
KCkpIDw8IGZhaWx1cmVNZXNzYWdlOworICAgICAgICBkb3VibGUgeFZlbG9jaXR5ID0gKCpnZXN0
dXJlRW5kKVswXS5kZWx0YVgoKTsKKyAgICAgICAgZG91YmxlIHlWZWxvY2l0eSA9ICgqZ2VzdHVy
ZUVuZClbMF0uZGVsdGFZKCk7CisgICAgICAgIGRvdWJsZSB2ZWxvY2l0eSA9IHNxcnQoeFZlbG9j
aXR5ICogeFZlbG9jaXR5ICsgeVZlbG9jaXR5ICogeVZlbG9jaXR5KTsKKyAgICAgICAgQVNTRVJU
X0dUKHZlbG9jaXR5LCAzMDApIDw8IGZhaWx1cmVNZXNzYWdlOworICAgICAgICBBU1NFUlRfRVEo
R2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6Tm9HZXN0dXJlLCBnbS5zdGF0ZSgpKSA8PCBmYWls
dXJlTWVzc2FnZTsKKyAgICB9Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109172</attachid>
            <date>2011-09-29 10:08:51 -0700</date>
            <delta_ts>2011-09-29 15:16:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67930-20110929130346.patch</filename>
            <type>text/plain</type>
            <size>24253</size>
            <attacher name="Varun Jain">varunjain</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYyNjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMDgwYzgwMDAyZTFkNTIz
MjcyYjM3NDZkZWVkNGRkZWZiYTVjZjZiLi4wZTE5OWE1ODM2NTViYjY5MTA2OTE4OTJhNDQyNDEz
Mjc1NDE3MTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDktMjggIFZhcnVu
IEphaW4gIDx2YXJ1bmphaW5AZ29vZ2xlLmNvbT4KKyAKKyAgICAgICAgIEltcGxlbWVudCBmbGlj
ayBnZXN0dXJlIGluIENocm9taXVtIEdlc3R1cmUgUmVjb2duaXplcgorICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3OTMwCisgCisgICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAKKyAgICAgICAgIFRlc3Q6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSW5uZXJHZXN0dXJlUmVjb2duaXplclRlc3QuY3BwIAorIAorICAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmNwcDoKKyAg
ICAgICAgIChXZWJDb3JlOjpHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjppc092ZXJNaW5GbGlj
a1NwZWVkKToKKyAgICAgICAgIChXZWJDb3JlOjpHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjph
cHBlbmRTY3JvbGxHZXN0dXJlRW5kKToKKyAgICAgICAgIChXZWJDb3JlOjpHZXN0dXJlUmVjb2du
aXplckNocm9taXVtOjp1cGRhdGVWYWx1ZXMpOgorICAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVS
ZWNvZ25pemVyQ2hyb21pdW06OnNjcm9sbEVuZCk6CisgICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uaDoKKwogMjAxMS0wOS0yOCAgU2VyZ2V5IEds
YXp1bm92ICA8c2VyZy5nbGF6dW5vdkBnbWFpbC5jb20+CiAKICAgICAgICAgSmF2YVNjcmlwdCBn
ZW5lcmF0ZWQgZG9jdW1lbnRzIGRvbid0IGluaGVyaXQgdGhlIGNvb2tpZSBVUkwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hy
b21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29n
bml6ZXJDaHJvbWl1bS5jcHAKaW5kZXggZmQ3NDNhNjE5ZWJiOTEzNmY3MGY3OTZkYjkwOTA2ZTE1
ZWNiYmFmMi4uYTBkZTk2NDFlODRkMmJjOWRhNjk5OGU3MmJhMjBmYjI0ZmNhYTA2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVy
ZVJlY29nbml6ZXJDaHJvbWl1bS5jcHAKQEAgLTM4LDExICszOCwxNyBAQCBzdGF0aWMgY29uc3Qg
ZG91YmxlIG1heGltdW1Ub3VjaERvd25EdXJhdGlvbkluU2Vjb25kc0ZvckNsaWNrID0gMC44Owog
c3RhdGljIGNvbnN0IGRvdWJsZSBtaW5pbXVtVG91Y2hEb3duRHVyYXRpb25JblNlY29uZHNGb3JD
bGljayA9IDAuMDE7CiBzdGF0aWMgY29uc3QgZG91YmxlIG1heGltdW1TZWNvbmRzQmV0d2VlbkRv
dWJsZUNsaWNrID0gMC43Owogc3RhdGljIGNvbnN0IGludCBtYXhpbXVtVG91Y2hNb3ZlSW5QaXhl
bHNGb3JDbGljayA9IDIwOworc3RhdGljIGNvbnN0IGZsb2F0IG1pbkZsaWNrU3BlZWRTcXVhcmVk
ID0gNTUwLmYgKiA1NTAuZjsKIAogR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6R2VzdHVyZVJl
Y29nbml6ZXJDaHJvbWl1bSgpCiAgICAgOiBtX2ZpcnN0VG91Y2hUaW1lKDAuMCkKICAgICAsIG1f
c3RhdGUoR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6Tm9HZXN0dXJlKQogICAgICwgbV9sYXN0
VG91Y2hUaW1lKDAuMCkKKyAgICAsIG1fbGFzdENsaWNrVGltZSgwLjApCisgICAgLCBtX2xhc3RU
b3VjaFBvc2l0aW9uKCkKKyAgICAsIG1fbGFzdFRvdWNoU2NyZWVuUG9zaXRpb24oKQorICAgICwg
bV94VmVsb2NpdHkoMC4wKQorICAgICwgbV95VmVsb2NpdHkoMC4wKQogICAgICwgbV9jdHJsS2V5
KGZhbHNlKQogICAgICwgbV9hbHRLZXkoZmFsc2UpCiAgICAgLCBtX3NoaWZ0S2V5KGZhbHNlKQpA
QCAtNzAsNiArNzYsMTIgQEAgdm9pZCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpyZXNldCgp
CiAgICAgbV9maXJzdFRvdWNoVGltZSA9IDAuMDsKICAgICBtX3N0YXRlID0gR2VzdHVyZVJlY29n
bml6ZXJDaHJvbWl1bTo6Tm9HZXN0dXJlOwogICAgIG1fbGFzdFRvdWNoVGltZSA9IDAuMDsKKyAg
ICBtX2xhc3RUb3VjaFBvc2l0aW9uLnNldFgoMCk7CisgICAgbV9sYXN0VG91Y2hQb3NpdGlvbi5z
ZXRZKDApOworICAgIG1fbGFzdFRvdWNoU2NyZWVuUG9zaXRpb24uc2V0WCgwKTsKKyAgICBtX2xh
c3RUb3VjaFNjcmVlblBvc2l0aW9uLnNldFkoMCk7CisgICAgbV94VmVsb2NpdHkgPSAwLjA7Cisg
ICAgbV95VmVsb2NpdHkgPSAwLjA7CiB9CiAKIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06On5H
ZXN0dXJlUmVjb2duaXplckNocm9taXVtKCkKQEAgLTk5LDYgKzExMSwxMSBAQCBib29sIEdlc3R1
cmVSZWNvZ25pemVyQ2hyb21pdW06OmlzSW5zaWRlTWFuaGF0dGFuU3F1YXJlKGNvbnN0IFBsYXRm
b3JtVG91Y2hQb2ludAogICAgIHJldHVybiBtYW5oYXR0YW5EaXN0YW5jZSA8IG1heGltdW1Ub3Vj
aE1vdmVJblBpeGVsc0ZvckNsaWNrOwogfQogCitib29sIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21p
dW06OmlzT3Zlck1pbkZsaWNrU3BlZWQoKQoreworICAgIHJldHVybiAobV94VmVsb2NpdHkgKiBt
X3hWZWxvY2l0eSArIG1feVZlbG9jaXR5ICogbV95VmVsb2NpdHkpID4gbWluRmxpY2tTcGVlZFNx
dWFyZWQ7Cit9CisKIHZvaWQgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6YXBwZW5kVGFwRG93
bkdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIEdlc3R1
cmVzIGdlc3R1cmVzKQogewogICAgIGdlc3R1cmVzLT5hcHBlbmQoUGxhdGZvcm1HZXN0dXJlRXZl
bnQoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcERvd25UeXBlLCBtX2ZpcnN0VG91Y2hQb3NpdGlv
biwgbV9maXJzdFRvdWNoU2NyZWVuUG9zaXRpb24sIG1fbGFzdFRvdWNoVGltZSwgMC5mLCAwLmYs
IG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOwpAQCAtMTM4LDkg
KzE1NSw5IEBAIHZvaWQgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6YXBwZW5kU2Nyb2xsR2Vz
dHVyZUJlZ2luKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2luCiAgICAgZ2VzdHVyZXMtPmFwcGVuZChQ
bGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBl
LCB0b3VjaFBvaW50LnBvcygpLCB0b3VjaFBvaW50LnNjcmVlblBvcygpLCBtX2xhc3RUb3VjaFRp
bWUsIDAuZiwgMC5mLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkp
KTsKIH0KIAotdm9pZCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmRTY3JvbGxHZXN0
dXJlRW5kKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwgR2VzdHVyZXMgZ2Vz
dHVyZXMpCit2b2lkIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZFNjcm9sbEdlc3R1
cmVFbmQoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBHZXN0dXJlcyBnZXN0
dXJlcywgZmxvYXQgeFZlbG9jaXR5LCBmbG9hdCB5VmVsb2NpdHkpCiB7Ci0gICAgZ2VzdHVyZXMt
PmFwcGVuZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xs
RW5kVHlwZSwgdG91Y2hQb2ludC5wb3MoKSwgdG91Y2hQb2ludC5zY3JlZW5Qb3MoKSwgbV9sYXN0
VG91Y2hUaW1lLCAwLmYsIDAuZiwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9t
ZXRhS2V5KSk7CisgICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0
Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZSwgdG91Y2hQb2ludC5wb3MoKSwgdG91Y2hQ
b2ludC5zY3JlZW5Qb3MoKSwgbV9sYXN0VG91Y2hUaW1lLCB4VmVsb2NpdHksIHlWZWxvY2l0eSwg
bV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7CiB9CiAKIHZvaWQg
R2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6YXBwZW5kU2Nyb2xsR2VzdHVyZVVwZGF0ZShjb25z
dCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIEdlc3R1cmVzIGdlc3R1cmVzKQpAQCAt
MTU0LDExICsxNzEsMjAgQEAgdm9pZCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmRT
Y3JvbGxHZXN0dXJlVXBkYXRlKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2kKIAogdm9pZCBHZXN0dXJl
UmVjb2duaXplckNocm9taXVtOjp1cGRhdGVWYWx1ZXMoY29uc3QgZG91YmxlIHRvdWNoVGltZSwg
Y29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50KQogeworICAgIGlmIChtX3N0YXRl
ICE9IE5vR2VzdHVyZSAmJiB0b3VjaFBvaW50LnN0YXRlKCkgPT0gUGxhdGZvcm1Ub3VjaFBvaW50
OjpUb3VjaE1vdmVkKSB7CisgICAgICAgIGRvdWJsZSBpbnRlcnZhbCh0b3VjaFRpbWUgLSBtX2xh
c3RUb3VjaFRpbWUpOworICAgICAgICBtX3hWZWxvY2l0eSA9ICh0b3VjaFBvaW50LnBvcygpLngo
KSAtIG1fbGFzdFRvdWNoUG9zaXRpb24ueCgpKSAvIGludGVydmFsOworICAgICAgICBtX3lWZWxv
Y2l0eSA9ICh0b3VjaFBvaW50LnBvcygpLnkoKSAtIG1fbGFzdFRvdWNoUG9zaXRpb24ueSgpKSAv
IGludGVydmFsOworICAgICAgICBtX2xhc3RUb3VjaFBvc2l0aW9uID0gdG91Y2hQb2ludC5wb3Mo
KTsKKyAgICAgICAgbV9sYXN0VG91Y2hTY3JlZW5Qb3NpdGlvbiA9IHRvdWNoUG9pbnQuc2NyZWVu
UG9zKCk7CisgICAgfQogICAgIG1fbGFzdFRvdWNoVGltZSA9IHRvdWNoVGltZTsKICAgICBpZiAo
c3RhdGUoKSA9PSBOb0dlc3R1cmUpIHsKICAgICAgICAgbV9maXJzdFRvdWNoVGltZSA9IHRvdWNo
VGltZTsKICAgICAgICAgbV9maXJzdFRvdWNoUG9zaXRpb24gPSB0b3VjaFBvaW50LnBvcygpOwog
ICAgICAgICBtX2ZpcnN0VG91Y2hTY3JlZW5Qb3NpdGlvbiA9IHRvdWNoUG9pbnQuc2NyZWVuUG9z
KCk7CisgICAgICAgIG1feFZlbG9jaXR5ID0gMC4wOworICAgICAgICBtX3lWZWxvY2l0eSA9IDAu
MDsKICAgICB9CiB9CiAKQEAgLTE4Myw3ICsyMDksMTAgQEAgYm9vbCBHZXN0dXJlUmVjb2duaXpl
ckNocm9taXVtOjp0b3VjaERvd24oY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50
LAogCiBib29sIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OnNjcm9sbEVuZChjb25zdCBQbGF0
Zm9ybVRvdWNoUG9pbnQmIHBvaW50LCBHZXN0dXJlcyBnZXN0dXJlcykKIHsKLSAgICBhcHBlbmRT
Y3JvbGxHZXN0dXJlRW5kKHBvaW50LCBnZXN0dXJlcyk7CisgICAgaWYgKGlzT3Zlck1pbkZsaWNr
U3BlZWQoKSAmJiBwb2ludC5zdGF0ZSgpICE9IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hDYW5j
ZWxsZWQpCisgICAgICAgIGFwcGVuZFNjcm9sbEdlc3R1cmVFbmQocG9pbnQsIGdlc3R1cmVzLCBt
X3hWZWxvY2l0eSwgbV95VmVsb2NpdHkpOworICAgIGVsc2UKKyAgICAgICAgYXBwZW5kU2Nyb2xs
R2VzdHVyZUVuZChwb2ludCwgZ2VzdHVyZXMsIDAuZiwgMC5mKTsKICAgICBzZXRTdGF0ZShOb0dl
c3R1cmUpOwogICAgIHJlc2V0KCk7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJDaHJv
bWl1bS5oCmluZGV4IDFmMTVkMzdjMzEyMTcwNjMyYWM1ZTBkZTg5MjAyYjM4MzY4ZjY3NGQuLjZj
NWU5YzU4OTE5ZGNjOGZhNTUzMDk3YjA5ZGE1ZmJiYTE5ZDgzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNo
cm9taXVtLmgKQEAgLTcwLDExICs3MCwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgYXBwZW5kQ2xp
Y2tHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgR2VzdHVyZXMpOwogICAg
IHZvaWQgYXBwZW5kRG91YmxlQ2xpY2tHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaFBv
aW50JiwgR2VzdHVyZXMpOwogICAgIHZvaWQgYXBwZW5kU2Nyb2xsR2VzdHVyZUJlZ2luKGNvbnN0
IFBsYXRmb3JtVG91Y2hQb2ludCYsIEdlc3R1cmVzKTsKLSAgICB2b2lkIGFwcGVuZFNjcm9sbEdl
c3R1cmVFbmQoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgR2VzdHVyZXMpOworICAgIHZvaWQg
YXBwZW5kU2Nyb2xsR2VzdHVyZUVuZChjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmLCBHZXN0dXJl
cywgZmxvYXQsIGZsb2F0KTsKICAgICB2b2lkIGFwcGVuZFNjcm9sbEdlc3R1cmVVcGRhdGUoY29u
c3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgR2VzdHVyZXMpOwogICAgIGJvb2wgaXNJbkNsaWNrVGlt
ZVdpbmRvdygpOwogICAgIGJvb2wgaXNJblNlY29uZENsaWNrVGltZVdpbmRvdygpOwogICAgIGJv
b2wgaXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Jik7Cisg
ICAgYm9vbCBpc092ZXJNaW5GbGlja1NwZWVkKCk7CiAgICAgdm9pZCBzZXRTdGF0ZShTdGF0ZSB2
YWx1ZSkgeyBtX3N0YXRlID0gdmFsdWU7IH0KICAgICB2b2lkIHVwZGF0ZVZhbHVlcyhkb3VibGUg
dG91Y2hUaW1lLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmKTsKIApAQCAtOTIsNiArOTMsMTAg
QEAgcHJpdmF0ZToKICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIGRvdWJsZSBtX2xhc3RUb3VjaFRp
bWU7CiAgICAgZG91YmxlIG1fbGFzdENsaWNrVGltZTsKKyAgICBJbnRQb2ludCBtX2xhc3RUb3Vj
aFBvc2l0aW9uOworICAgIEludFBvaW50IG1fbGFzdFRvdWNoU2NyZWVuUG9zaXRpb247CisgICAg
ZmxvYXQgbV94VmVsb2NpdHk7CisgICAgZmxvYXQgbV95VmVsb2NpdHk7CiAKICAgICBib29sIG1f
Y3RybEtleTsKICAgICBib29sIG1fYWx0S2V5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9Jbm5lckdlc3R1cmVSZWNvZ25pemVyVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0lubmVyR2VzdHVyZVJlY29nbml6ZXJUZXN0LmNwcAppbmRleCBk
NDlhMzRjZDdhMDUzMzU2Zjc2MGIyZTdlYjBiMjU1MDI4OTJiM2Y4Li5iNGRkZmM5ZjhiYzY0ODk4
ZTUwOWZhMTg3ZmI4ZGU4OGRkMzRiZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0lubmVyR2VzdHVyZVJlY29nbml6ZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0lubmVyR2VzdHVyZVJlY29nbml6ZXJUZXN0LmNwcApAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIkdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uaCIKIAogI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8c3RkYXJnLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCkBAIC00OTMsNiArNDk0LDcgQEAgVEVTVF9GKEdlc3R1cmVSZWNvZ25p
emVyVGVzdCwgZ2VzdHVyZVNjcm9sbEV2ZW50cykKIAogICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91
Y2hQb2ludCBtb3ZlKDEwLCA1MCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkKTsKICAg
ICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoRXZlbnQgbW92ZUV2ZW50KFdlYkNvcmU6OlRvdWNoTW92
ZSwgbW92ZSk7CisgICAgZ20uc2V0TGFzdFRvdWNoVGltZShnbS5sYXN0VG91Y2hUaW1lKCkgLSAw
LjIpOwogICAgIEdlc3R1cmVzIGdlc3R1cmVTdGFydChnbS5wcm9jZXNzVG91Y2hFdmVudEZvckdl
c3R1cmVzKG1vdmVFdmVudCwgZmFsc2UpKTsKICAgICBib29sIHNjcm9sbFN0YXJ0ZWQgPSBmYWxz
ZSwgc2Nyb2xsVXBkYXRlZCA9IGZhbHNlOwogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBp
IDwgZ2VzdHVyZVN0YXJ0LT5zaXplKCk7IGkrKykgewpAQCAtNTE0LDEyICs1MTYsMTUgQEAgVEVT
VF9GKEdlc3R1cmVSZWNvZ25pemVyVGVzdCwgZ2VzdHVyZVNjcm9sbEV2ZW50cykKIAogICAgIEJ1
aWxkYWJsZVBsYXRmb3JtVG91Y2hQb2ludCByZWxlYXNlKDEwLCA1MCwgUGxhdGZvcm1Ub3VjaFBv
aW50OjpUb3VjaFJlbGVhc2VkKTsKICAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoRXZlbnQgcmVs
ZWFzZUV2ZW50KFdlYkNvcmU6OlRvdWNoRW5kLCByZWxlYXNlKTsKKyAgICBnbS5zZXRMYXN0VG91
Y2hUaW1lKGdtLmxhc3RUb3VjaFRpbWUoKSAtIDAuMik7CiAgICAgYm9vbCBzY3JvbGxFbmQgPSBm
YWxzZTsKICAgICBHZXN0dXJlcyBnZXN0dXJlRW5kKGdtLnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2Vz
dHVyZXMocmVsZWFzZUV2ZW50LCBmYWxzZSkpOwogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAw
OyBpIDwgZ2VzdHVyZUVuZC0+c2l6ZSgpOyBpKyspIHsKICAgICAgICAgc3dpdGNoICgoKmdlc3R1
cmVFbmQpW2ldLnR5cGUoKSkgewogICAgICAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpT
Y3JvbGxFbmRUeXBlOgogICAgICAgICAgICAgc2Nyb2xsRW5kID0gdHJ1ZTsKKyAgICAgICAgICAg
IEFTU0VSVF9FUSgoKmdlc3R1cmVFbmQpW2ldLmRlbHRhWCgpLCAwKTsKKyAgICAgICAgICAgIEFT
U0VSVF9FUSgoKmdlc3R1cmVFbmQpW2ldLmRlbHRhWSgpLCAwKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX1RSVUUoZmFsc2UpOwpAQCAt
NTI4LDMgKzUzMywyMjkgQEAgVEVTVF9GKEdlc3R1cmVSZWNvZ25pemVyVGVzdCwgZ2VzdHVyZVNj
cm9sbEV2ZW50cykKICAgICBBU1NFUlRfVFJVRShzY3JvbGxFbmQpOwogICAgIEFTU0VSVF9FUShH
ZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpOb0dlc3R1cmUsIGdtLnN0YXRlKCkpOwogfQorCitU
RVNUX0YoR2VzdHVyZVJlY29nbml6ZXJUZXN0LCBmbGlja0dlc3R1cmVUZXN0KQoreworICAgIElu
c3BlY3RhYmxlR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bSBnbTsKKyAgICBBU1NFUlRfRVEoR2Vz
dHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6Tm9HZXN0dXJlLCBnbS5zdGF0ZSgpKTsKKworICAgIEJ1
aWxkYWJsZVBsYXRmb3JtVG91Y2hQb2ludCBwcmVzcygxMCwgMTUsIFBsYXRmb3JtVG91Y2hQb2lu
dDo6VG91Y2hQcmVzc2VkKTsKKyAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoRXZlbnQgcHJlc3NF
dmVudChXZWJDb3JlOjpUb3VjaFN0YXJ0LCBwcmVzcyk7CisgICAgR2VzdHVyZXMgZ2VzdHVyZVN0
YXJ0KGdtLnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMocHJlc3NFdmVudCwgZmFsc2UpKTsK
KyAgICBBU1NFUlRfRVEoKHVuc2lnbmVkIGludCkxLCBnZXN0dXJlU3RhcnQtPnNpemUoKSk7Cisg
ICAgQVNTRVJUX0VRKFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpUYXBEb3duVHlwZSwgKCpnZXN0dXJl
U3RhcnQpWzBdLnR5cGUoKSk7CisgICAgQVNTRVJUX0VRKEdlc3R1cmVSZWNvZ25pemVyQ2hyb21p
dW06OlBlbmRpbmdTeW50aGV0aWNDbGljaywgZ20uc3RhdGUoKSk7CisKKyAgICBCdWlsZGFibGVQ
bGF0Zm9ybVRvdWNoUG9pbnQgbW92ZSgxMCwgNTAsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hN
b3ZlZCk7CisgICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaEV2ZW50IG1vdmVFdmVudChXZWJDb3Jl
OjpUb3VjaE1vdmUsIG1vdmUpOworICAgIEdlc3R1cmVzIGdlc3R1cmVNb3ZlKGdtLnByb2Nlc3NU
b3VjaEV2ZW50Rm9yR2VzdHVyZXMobW92ZUV2ZW50LCBmYWxzZSkpOworICAgIGJvb2wgc2Nyb2xs
U3RhcnRlZCA9IGZhbHNlLCBzY3JvbGxVcGRhdGVkID0gZmFsc2U7CisgICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCBnZXN0dXJlTW92ZS0+c2l6ZSgpOyBpKyspIHsKKyAgICAgICAgc3dp
dGNoICgoKmdlc3R1cmVNb3ZlKVtpXS50eXBlKCkpIHsKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUdl
c3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlOgorICAgICAgICAgICAgc2Nyb2xsU3RhcnRlZCA9
IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVF
dmVudDo6U2Nyb2xsVXBkYXRlVHlwZToKKyAgICAgICAgICAgIHNjcm9sbFVwZGF0ZWQgPSB0cnVl
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NF
UlRfVFJVRShmYWxzZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBBU1NFUlRfVFJVRShzY3Jv
bGxTdGFydGVkKTsKKyAgICBBU1NFUlRfVFJVRShzY3JvbGxVcGRhdGVkKTsKKyAgICBBU1NFUlRf
RVEoR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6U2Nyb2xsLCBnbS5zdGF0ZSgpKTsKKworICAg
IEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hQb2ludCByZWxlYXNlKDEwLCA1MCwgUGxhdGZvcm1Ub3Vj
aFBvaW50OjpUb3VjaFJlbGVhc2VkKTsKKyAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoRXZlbnQg
cmVsZWFzZUV2ZW50KFdlYkNvcmU6OlRvdWNoRW5kLCByZWxlYXNlKTsKKyAgICBHZXN0dXJlcyBn
ZXN0dXJlRW5kKGdtLnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMocmVsZWFzZUV2ZW50LCBm
YWxzZSkpOworICAgIEFTU0VSVF9FUSgodW5zaWduZWQgaW50KSAxLCBnZXN0dXJlRW5kLT5zaXpl
KCkpOworICAgIEFTU0VSVF9FUShQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZSwg
KCpnZXN0dXJlRW5kKVswXS50eXBlKCkpOworICAgIEFTU0VSVF9HVCgoKmdlc3R1cmVFbmQpWzBd
LmRlbHRhWCgpLCAwKTsKKyAgICBBU1NFUlRfR1QoKCpnZXN0dXJlRW5kKVswXS5kZWx0YVkoKSwg
MCk7CisgICAgQVNTRVJUX0VRKEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06Ok5vR2VzdHVyZSwg
Z20uc3RhdGUoKSk7Cit9CisKK3N0cnVjdCBUb3VjaFBvaW50QW5kRXZlbnQgeworcHVibGljOgor
ICAgIFRvdWNoUG9pbnRBbmRFdmVudChpbnQgeCwgaW50IHksIGRvdWJsZSB0aW1lc3RhbXAsIFBs
YXRmb3JtVG91Y2hQb2ludDo6U3RhdGUgc3RhdGUsIFdlYkNvcmU6OlRvdWNoRXZlbnRUeXBlIHR5
cGUpCisgICAgICAgIDogbV9wb2ludCh4LCB5LCBzdGF0ZSkKKyAgICAgICAgLCBtX2V2ZW50KHR5
cGUsIG1fcG9pbnQsIHRpbWVzdGFtcCkKKyAgICB7IH0KKyAgICBCdWlsZGFibGVQbGF0Zm9ybVRv
dWNoUG9pbnQgbV9wb2ludDsKKyAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoRXZlbnQgbV9ldmVu
dDsKK307CisKK2NsYXNzIFRvdWNoU2VxdWVuY2UgeworcHVibGljOgorICAgIFRvdWNoU2VxdWVu
Y2UoaW50IG4sIC4uLikgOiBtX24obikKKyAgICB7CisgICAgICAgIHZhX2xpc3QgYXJnczsKKyAg
ICAgICAgdmFfc3RhcnQoYXJncywgbik7CisgICAgICAgIEFTU0VSVChuID4gMCk7CisgICAgICAg
IG1fZGF0YSA9IG5ldyBUb3VjaFBvaW50QW5kRXZlbnQqW25dOworICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IG47ICsraSkKKyAgICAgICAgICAgIG1fZGF0YVtpXSA9IHZhX2FyZyhhcmdzLCBU
b3VjaFBvaW50QW5kRXZlbnQqKTsKKyAgICAgICAgdmFfZW5kKGFyZ3MpOworICAgIH0KKyAgICB+
VG91Y2hTZXF1ZW5jZSgpCisgICAgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fbjsg
KytpKQorICAgICAgICAgICAgZGVsZXRlIG1fZGF0YVtpXTsKKyAgICAgICAgZGVsZXRlIG1fZGF0
YTsKKyAgICB9CisgICAgaW50IG1fbjsKKyAgICBUb3VjaFBvaW50QW5kRXZlbnQqKiBtX2RhdGE7
Cit9OworCitjb25zdCBpbnQgbnVtYmVyT2ZGbGlja1NhbXBsZXMgPSAxMTsKK1RvdWNoU2VxdWVu
Y2Ugc2FtcGxlRmxpY2tTZXF1ZW5jZVtudW1iZXJPZkZsaWNrU2FtcGxlc10gPQoreworICAgIFRv
dWNoU2VxdWVuY2UoOCwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNTYsIDM0OCwg
MTMwODMzNjI0NS40MDcsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2VkLCBXZWJDb3Jl
OjpUb3VjaFN0YXJ0KSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNTQsIDM0NSwg
MTMwODMzNjI0NS40NzAsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6
VG91Y2hNb3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNTIsIDMzNiwgMTMw
ODMzNjI0NS40ODgsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91
Y2hNb3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNDIsIDI2MSwgMTMwODMz
NjI0NS41MDUsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hN
b3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNDIsIDE3OSwgMTMwODMzNjI0
NS41MjEsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3Zl
KSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNTUsIDEwMCwgMTMwODMzNjI0NS41
MzMsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKSwK
KyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNjIsIDc0LCAxMzA4MzM2MjQ1LjU0OSwg
UGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpLAorICAg
ICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDI2MiwgNzQsIDEzMDgzMzYyNDUuNTY2LCBQbGF0
Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQsIFdlYkNvcmU6OlRvdWNoRW5kKQorICAgICks
CisgICAgVG91Y2hTZXF1ZW5jZSg4LAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDE3
OCwgMzM5LCAxMzA4MzM2MjY2LjE4MCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFByZXNzZWQs
IFdlYkNvcmU6OlRvdWNoU3RhcnQpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDE3
NywgMzM1LCAxMzA4MzM2MjY2LjIxMiwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBX
ZWJDb3JlOjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDE3Miwg
MzE0LCAxMzA4MzM2MjY2LjIyNiwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJD
b3JlOjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDE2MCwgMjQ4
LCAxMzA4MzM2MjY2LjI0MCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3Jl
OjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDE1NiwgMTk4LCAx
MzA4MzM2MjY2LjI1MSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpU
b3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDE2NiwgOTksIDEzMDgz
MzYyNjYuMjY2LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQsIFdlYkNvcmU6OlRvdWNo
TW92ZSksCisgICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoMTc5LCA0MSwgMTMwODMzNjI2
Ni4yODAsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3Zl
KSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgxNzksIDQxLCAxMzA4MzM2MjY2LjI5
MSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkLCBXZWJDb3JlOjpUb3VjaEVuZCkK
KyAgICApLAorICAgIFRvdWNoU2VxdWVuY2UoNywKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRF
dmVudCgyMzgsIDM4NiwgMTMwODMzNjI3Mi4wNjgsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQ
cmVzc2VkLCBXZWJDb3JlOjpUb3VjaFN0YXJ0KSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRF
dmVudCgyMzcsIDM4MywgMTMwODMzNjI3Mi4xMjEsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hN
b3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVu
dCgyMzYsIDM3NCwgMTMwODMzNjI3Mi4xMzgsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3Zl
ZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgy
MjMsIDI2NCwgMTMwODMzNjI3Mi4xNTUsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwg
V2ViQ29yZTo6VG91Y2hNb3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyMzEs
IDE2NiwgMTMwODMzNjI3Mi4xNzMsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2Vi
Q29yZTo6VG91Y2hNb3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNDMsIDEw
NywgMTMwODMzNjI3Mi4xOTAsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29y
ZTo6VG91Y2hNb3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNDMsIDEwNywg
MTMwODMzNjI3Mi4yMDIsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZCwgV2ViQ29y
ZTo6VG91Y2hFbmQpCisgICAgKSwKKyAgICBUb3VjaFNlcXVlbmNlKDEwLAorICAgICAgICBuZXcg
VG91Y2hQb2ludEFuZEV2ZW50KDMzNCwgMzUxLCAxMzA4MzM2MzEzLjU4MSwgUGxhdGZvcm1Ub3Vj
aFBvaW50OjpUb3VjaFByZXNzZWQsIFdlYkNvcmU6OlRvdWNoU3RhcnQpLAorICAgICAgICBuZXcg
VG91Y2hQb2ludEFuZEV2ZW50KDMzNCwgMzQ4LCAxMzA4MzM2MzEzLjY5NCwgUGxhdGZvcm1Ub3Vj
aFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91
Y2hQb2ludEFuZEV2ZW50KDMzNSwgMzQ2LCAxMzA4MzM2MzEzLjcxNCwgUGxhdGZvcm1Ub3VjaFBv
aW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQ
b2ludEFuZEV2ZW50KDMzNCwgMzQzLCAxMzA4MzM2MzEzLjcyNywgUGxhdGZvcm1Ub3VjaFBvaW50
OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2lu
dEFuZEV2ZW50KDMzMiwgMzM2LCAxMzA4MzM2MzEzLjczOCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpU
b3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFu
ZEV2ZW50KDMyOCwgMzE2LCAxMzA4MzM2MzEzLjc1MywgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3Vj
aE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2
ZW50KDMxNywgMjc3LCAxMzA4MzM2MzEzLjc3MCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1v
dmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50
KDMwNiwgMjQzLCAxMzA4MzM2MzEzLjc4NCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVk
LCBXZWJDb3JlOjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDI5
MiwgMTkyLCAxMzA4MzM2MzEzLjc5OSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBX
ZWJDb3JlOjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDI5Miwg
MTkyLCAxMzA4MzM2MzEzLjgxNSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkLCBX
ZWJDb3JlOjpUb3VjaEVuZCkKKyAgICApLAorICAgIFRvdWNoU2VxdWVuY2UoMTQsCisgICAgICAg
IG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoOTIsIDExMiwgMTMwODMzNjMyMy45NTUsIFBsYXRmb3Jt
VG91Y2hQb2ludDo6VG91Y2hQcmVzc2VkLCBXZWJDb3JlOjpUb3VjaFN0YXJ0KSwKKyAgICAgICAg
bmV3IFRvdWNoUG9pbnRBbmRFdmVudCg5MiwgMTE1LCAxMzA4MzM2MzI0LjA1NiwgUGxhdGZvcm1U
b3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcg
VG91Y2hQb2ludEFuZEV2ZW50KDkxLCAxMTYsIDEzMDgzMzYzMjQuMDY2LCBQbGF0Zm9ybVRvdWNo
UG9pbnQ6OlRvdWNoTW92ZWQsIFdlYkNvcmU6OlRvdWNoTW92ZSksCisgICAgICAgIG5ldyBUb3Vj
aFBvaW50QW5kRXZlbnQoOTEsIDExNywgMTMwODMzNjMyNC4wNzQsIFBsYXRmb3JtVG91Y2hQb2lu
dDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9p
bnRBbmRFdmVudCg5MCwgMTIyLCAxMzA4MzM2MzI0LjA4OSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpU
b3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFu
ZEV2ZW50KDkwLCAxMjksIDEzMDgzMzYzMjQuMTAyLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNo
TW92ZWQsIFdlYkNvcmU6OlRvdWNoTW92ZSksCisgICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZl
bnQoODksIDE0NywgMTMwODMzNjMyNC4xMjAsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3Zl
ZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCg4
OSwgMTYzLCAxMzA4MzM2MzI0LjEzNSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBX
ZWJDb3JlOjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDg5LCAx
ODgsIDEzMDgzMzYzMjQuMTUxLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQsIFdlYkNv
cmU6OlRvdWNoTW92ZSksCisgICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoODksIDIxMywg
MTMwODMzNjMyNC4xNjksIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6
VG91Y2hNb3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCg4OSwgMjUyLCAxMzA4
MzM2MzI0LjE4OSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3Vj
aE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDkwLCAyODMsIDEzMDgzMzYz
MjQuMjA0LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQsIFdlYkNvcmU6OlRvdWNoTW92
ZSksCisgICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoOTEsIDMwOCwgMTMwODMzNjMyNC4y
MTgsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKSwK
KyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCg5MSwgMzA4LCAxMzA4MzM2MzI0LjIzMCwg
UGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkLCBXZWJDb3JlOjpUb3VjaEVuZCkKKyAg
ICApLAorICAgIFRvdWNoU2VxdWVuY2UoNSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVu
dCg1NSwgMjQ5LCAxMzA4MzM2MzQ5LjA5MywgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFByZXNz
ZWQsIFdlYkNvcmU6OlRvdWNoU3RhcnQpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50
KDU5LCAyNDksIDEzMDgzMzYzNDkuMTc5LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQs
IFdlYkNvcmU6OlRvdWNoTW92ZSksCisgICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoNjYs
IDI0OCwgMTMwODMzNjM0OS4xOTEsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2Vi
Q29yZTo6VG91Y2hNb3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgxMjgsIDI1
MywgMTMwODMzNjM0OS4yMDgsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29y
ZTo6VG91Y2hNb3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgxMjgsIDI1Mywg
MTMwODMzNjM0OS4yNTgsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZCwgV2ViQ29y
ZTo6VG91Y2hFbmQpCisgICAgKSwKKyAgICBUb3VjaFNlcXVlbmNlKDksCisgICAgICAgIG5ldyBU
b3VjaFBvaW50QW5kRXZlbnQoMzc2LCAyOTAsIDEzMDgzMzYzNTMuMDcxLCBQbGF0Zm9ybVRvdWNo
UG9pbnQ6OlRvdWNoUHJlc3NlZCwgV2ViQ29yZTo6VG91Y2hTdGFydCksCisgICAgICAgIG5ldyBU
b3VjaFBvaW50QW5kRXZlbnQoMzczLCAyODgsIDEzMDgzMzYzNTMuMTI3LCBQbGF0Zm9ybVRvdWNo
UG9pbnQ6OlRvdWNoTW92ZWQsIFdlYkNvcmU6OlRvdWNoTW92ZSksCisgICAgICAgIG5ldyBUb3Vj
aFBvaW50QW5kRXZlbnQoMzcyLCAyODcsIDEzMDgzMzYzNTMuMTQwLCBQbGF0Zm9ybVRvdWNoUG9p
bnQ6OlRvdWNoTW92ZWQsIFdlYkNvcmU6OlRvdWNoTW92ZSksCisgICAgICAgIG5ldyBUb3VjaFBv
aW50QW5kRXZlbnQoMzUzLCAyODAsIDEzMDgzMzYzNTMuMTU2LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6
OlRvdWNoTW92ZWQsIFdlYkNvcmU6OlRvdWNoTW92ZSksCisgICAgICAgIG5ldyBUb3VjaFBvaW50
QW5kRXZlbnQoMzE5LCAyNzEsIDEzMDgzMzYzNTMuMTcxLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRv
dWNoTW92ZWQsIFdlYkNvcmU6OlRvdWNoTW92ZSksCisgICAgICAgIG5ldyBUb3VjaFBvaW50QW5k
RXZlbnQoMjY0LCAyNTgsIDEzMDgzMzYzNTMuMTg4LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNo
TW92ZWQsIFdlYkNvcmU6OlRvdWNoTW92ZSksCisgICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZl
bnQoMjE1LCAyNTEsIDEzMDgzMzYzNTMuMjAwLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92
ZWQsIFdlYkNvcmU6OlRvdWNoTW92ZSksCisgICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQo
MTUxLCAyNDYsIDEzMDgzMzYzNTMuMjE3LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQs
IFdlYkNvcmU6OlRvdWNoTW92ZSksCisgICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoMTUx
LCAyNDYsIDEzMDgzMzYzNTMuMjMxLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQs
IFdlYkNvcmU6OlRvdWNoRW5kKQorICAgICksCisgICAgVG91Y2hTZXF1ZW5jZSg1LAorICAgICAg
ICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDYwLCAxNjYsIDEzMDgzMzYzNTguODk4LCBQbGF0Zm9y
bVRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZCwgV2ViQ29yZTo6VG91Y2hTdGFydCksCisgICAgICAg
IG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoNjMsIDE2NiwgMTMwODMzNjM1OC45NDQsIFBsYXRmb3Jt
VG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKSwKKyAgICAgICAgbmV3
IFRvdWNoUG9pbnRBbmRFdmVudCg2OCwgMTY3LCAxMzA4MzM2MzU4Ljk1OCwgUGxhdGZvcm1Ub3Vj
aFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91
Y2hQb2ludEFuZEV2ZW50KDExOCwgMTc5LCAxMzA4MzM2MzU4Ljk3MSwgUGxhdGZvcm1Ub3VjaFBv
aW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQ
b2ludEFuZEV2ZW50KDExOCwgMTc5LCAxMzA4MzM2MzU4Ljk4NCwgUGxhdGZvcm1Ub3VjaFBvaW50
OjpUb3VjaFJlbGVhc2VkLCBXZWJDb3JlOjpUb3VjaEVuZCkKKyAgICApLAorICAgIFRvdWNoU2Vx
dWVuY2UoNSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCg2NiwgMzE4LCAxMzA4MzM2
MzYyLjk5NiwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFByZXNzZWQsIFdlYkNvcmU6OlRvdWNo
U3RhcnQpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDcwLCAzMTYsIDEzMDgzMzYz
NjMuMDQ2LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQsIFdlYkNvcmU6OlRvdWNoTW92
ZSksCisgICAgICAgIG5ldyBUb3VjaFBvaW50QW5kRXZlbnQoNzcsIDMxNCwgMTMwODMzNjM2My4w
NTgsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKSwK
KyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgxNzksIDI5NSwgMTMwODMzNjM2My4wODIs
IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKSwKKyAg
ICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgxNzksIDI5NSwgMTMwODMzNjM2My4wOTYsIFBs
YXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZCwgV2ViQ29yZTo6VG91Y2hFbmQpCisgICAg
KSwKKyAgICBUb3VjaFNlcXVlbmNlKDExLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50
KDM0NSwgMzMzLCAxMzA4MzM2MzY2LjYxOCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFByZXNz
ZWQsIFdlYkNvcmU6OlRvdWNoU3RhcnQpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50
KDM0NCwgMzMwLCAxMzA4MzM2MzY2LjY2NCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVk
LCBXZWJDb3JlOjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDM0
MywgMzI5LCAxMzA4MzM2MzY2LjY4MSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBX
ZWJDb3JlOjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDMzOSwg
MzI0LCAxMzA4MzM2MzY2LjY5NCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJD
b3JlOjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDMzMiwgMzE3
LCAxMzA4MzM2MzY2LjcwOSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3Jl
OjpUb3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDMxMiwgMzAwLCAx
MzA4MzM2MzY2LjcyOCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpU
b3VjaE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDI3OSwgMjc1LCAxMzA4
MzM2MzY2Ljc0MSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3Vj
aE1vdmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDI0NiwgMjUxLCAxMzA4MzM2
MzY2Ljc1MiwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1v
dmUpLAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDE5OCwgMjE5LCAxMzA4MzM2MzY2
Ljc2OSwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUp
LAorICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDE1NSwgMTk2LCAxMzA4MzM2MzY2Ljc4
MywgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBXZWJDb3JlOjpUb3VjaE1vdmUpLAor
ICAgICAgICBuZXcgVG91Y2hQb2ludEFuZEV2ZW50KDE1NSwgMTk2LCAxMzA4MzM2MzY2Ljc5NCwg
UGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkLCBXZWJDb3JlOjpUb3VjaEVuZCkKKyAg
ICApLAorICAgIFRvdWNoU2VxdWVuY2UoNywKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVu
dCgzMzMsIDM2MCwgMTMwODMzNjM2OS41NDcsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVz
c2VkLCBXZWJDb3JlOjpUb3VjaFN0YXJ0KSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVu
dCgzMzIsIDM1NywgMTMwODMzNjM2OS41OTYsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3Zl
ZCwgV2ViQ29yZTo6VG91Y2hNb3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgz
MzEsIDM1MywgMTMwODMzNjM2OS42NjEsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwg
V2ViQ29yZTo6VG91Y2hNb3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgzMjYs
IDM0NSwgMTMwODMzNjM2OS43MTMsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2Vi
Q29yZTo6VG91Y2hNb3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgzMTAsIDMy
MywgMTMwODMzNjM2OS43NDgsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29y
ZTo6VG91Y2hNb3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNTAsIDI3Miwg
MTMwODMzNjM2OS44MDEsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgV2ViQ29yZTo6
VG91Y2hNb3ZlKSwKKyAgICAgICAgbmV3IFRvdWNoUG9pbnRBbmRFdmVudCgyNTAsIDI3MiwgMTMw
ODMzNjM2OS44NDAsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZCwgV2ViQ29yZTo6
VG91Y2hFbmQpCisgICAgKQorfTsKKworVEVTVF9GKEdlc3R1cmVSZWNvZ25pemVyVGVzdCwgc2Ft
cGxlRmxpY2tTZXF1ZW5jZUdlc3R1cmVUZXN0KQoreworICAgIEluc3BlY3RhYmxlR2VzdHVyZVJl
Y29nbml6ZXJDaHJvbWl1bSBnbTsKKyAgICBBU1NFUlRfRVEoR2VzdHVyZVJlY29nbml6ZXJDaHJv
bWl1bTo6Tm9HZXN0dXJlLCBnbS5zdGF0ZSgpKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bnVtYmVyT2ZGbGlja1NhbXBsZXM7ICsraSkgeworICAgICAgICBzdGQ6Om9zdHJpbmdzdHJlYW0g
ZmFpbHVyZU1lc3NhZ2VCdWlsZGVyOworICAgICAgICBmYWlsdXJlTWVzc2FnZUJ1aWxkZXIgPDwg
IkZhaWxlZCBvbiBzYW1wbGUgc2VxdWVuY2UgIiA8PCBpOworICAgICAgICBzdGQ6OnN0cmluZyBm
YWlsdXJlTWVzc2FnZSA9IGZhaWx1cmVNZXNzYWdlQnVpbGRlci5zdHIoKTsKKworICAgICAgICAv
LyBUaGVyZSBzaG91bGQgYmUgYXQgbGVhc3QgMyBldmVudHMgKFRvdWNoU3RhcnQsIFRvdWNoTW92
ZSwgVG91Y2hFbmQpIGluIGV2ZXJ5IHNlcXVlbmNlCisgICAgICAgIEFTU0VSVF9HVChzYW1wbGVG
bGlja1NlcXVlbmNlW2ldLm1fbiwgMykgPDwgZmFpbHVyZU1lc3NhZ2U7CisKKyAgICAgICAgLy8g
Rmlyc3QgZXZlbnQgKFRvdWNoU3RhcnQpIHNob3VsZCBwcm9kdWNlIGEgVG91Y2hEb3duIGdlc3R1
cmUKKyAgICAgICAgR2VzdHVyZXMgZ2VzdHVyZVN0YXJ0KGdtLnByb2Nlc3NUb3VjaEV2ZW50Rm9y
R2VzdHVyZXMoc2FtcGxlRmxpY2tTZXF1ZW5jZVtpXS5tX2RhdGFbMF0tPm1fZXZlbnQsIGZhbHNl
KSk7CisgICAgICAgIEFTU0VSVF9FUSgodW5zaWduZWQgaW50KTEsIGdlc3R1cmVTdGFydC0+c2l6
ZSgpKSA8PCBmYWlsdXJlTWVzc2FnZTsKKyAgICAgICAgQVNTRVJUX0VRKFBsYXRmb3JtR2VzdHVy
ZUV2ZW50OjpUYXBEb3duVHlwZSwgKCpnZXN0dXJlU3RhcnQpWzBdLnR5cGUoKSkgPDwgZmFpbHVy
ZU1lc3NhZ2U7CisgICAgICAgIEFTU0VSVF9FUShHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpQ
ZW5kaW5nU3ludGhldGljQ2xpY2ssIGdtLnN0YXRlKCkpIDw8IGZhaWx1cmVNZXNzYWdlOworCisg
ICAgICAgIC8vIFRoZW4gd2UgaGF2ZSBhIGJ1bmNoIG9mIFRvdWNoTW92ZSBldmVudHMKKyAgICAg
ICAgZm9yIChpbnQgaiA9IDE7IGogPCBzYW1wbGVGbGlja1NlcXVlbmNlW2ldLm1fbiAtIDE7ICsr
aikKKyAgICAgICAgICAgIGdtLnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMoc2FtcGxlRmxp
Y2tTZXF1ZW5jZVtpXS5tX2RhdGFbal0tPm1fZXZlbnQsIGZhbHNlKTsKKworICAgICAgICAvLyBM
YXN0IGV2ZW50IChUb3VjaEVuZCkgc2hvdWxkIGdlbmVyYXRlIGEgRmxpY2sgZ2VzdHVyZQorICAg
ICAgICBHZXN0dXJlcyBnZXN0dXJlRW5kKGdtLnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMo
c2FtcGxlRmxpY2tTZXF1ZW5jZVtpXS5tX2RhdGFbc2FtcGxlRmxpY2tTZXF1ZW5jZVtpXS5tX24g
LSAxXS0+bV9ldmVudCwgZmFsc2UpKTsKKyAgICAgICAgQVNTRVJUX0VRKCh1bnNpZ25lZCBpbnQp
IDEsIGdlc3R1cmVFbmQtPnNpemUoKSkgPDwgZmFpbHVyZU1lc3NhZ2U7CisgICAgICAgIEFTU0VS
VF9FUShQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZSwgKCpnZXN0dXJlRW5kKVsw
XS50eXBlKCkpIDw8IGZhaWx1cmVNZXNzYWdlOworICAgICAgICBkb3VibGUgeFZlbG9jaXR5ID0g
KCpnZXN0dXJlRW5kKVswXS5kZWx0YVgoKTsKKyAgICAgICAgZG91YmxlIHlWZWxvY2l0eSA9ICgq
Z2VzdHVyZUVuZClbMF0uZGVsdGFZKCk7CisgICAgICAgIGRvdWJsZSB2ZWxvY2l0eSA9IHNxcnQo
eFZlbG9jaXR5ICogeFZlbG9jaXR5ICsgeVZlbG9jaXR5ICogeVZlbG9jaXR5KTsKKyAgICAgICAg
QVNTRVJUX0dUKHZlbG9jaXR5LCA1NTApIDw8IGZhaWx1cmVNZXNzYWdlOworICAgICAgICBBU1NF
UlRfRVEoR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6Tm9HZXN0dXJlLCBnbS5zdGF0ZSgpKSA8
PCBmYWlsdXJlTWVzc2FnZTsKKyAgICB9Cit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>