<?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>31332</bug_id>
          
          <creation_ts>2009-11-10 23:17:39 -0800</creation_ts>
          <short_desc>[Qt] Failing Drag-and-drop tests</short_desc>
          <delta_ts>2014-02-03 03:15:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Other</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>LayoutTestFailure, Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>33055</dependson>
    
    <dependson>33114</dependson>
    
    <dependson>42043</dependson>
          <blocked>26710</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Allan Sandfeld Jensen">allan.jensen</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>aroben</cc>
    
    <cc>cshu</cc>
    
    <cc>eric</cc>
    
    <cc>hausmann</cc>
    
    <cc>jarred</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kent.hansen</cc>
    
    <cc>kling</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>robert</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>162357</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-11-10 23:17:39 -0800</bug_when>
    <thetext>The following drag-and-drop tests fail under the Qt build:

fast/events/drag-parent-node.html
fast/events/drag-and-drop.html
fast/events/drag-and-drop-dataTransfer-types-nocrash.html
fast/events/drag-and-drop-fire-drag-dragover.html

Note these same tests fail in the GTK build as well, see bug #30576.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163983</commentid>
    <comment_count>1</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2009-11-16 07:00:39 -0800</bug_when>
    <thetext>I am interested in doing some research on this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172267</commentid>
    <comment_count>2</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2009-12-16 05:50:45 -0800</bug_when>
    <thetext>http/tests/misc/drag-over-iframe-invalid-source-crash.html now fails as well (times out)

A proper fix for this is being looked into.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174860</commentid>
    <comment_count>3</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2009-12-25 05:54:01 -0800</bug_when>
    <thetext>Seems to me that the timeout in DnD tests is due to a deadlock. QDrag-&gt;start() is a synchronous call. It creates a new event loop and will return only after the mouse is released. We are blocked from continue executing the JavaScript, so the MouseUp event is never received.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175304</commentid>
    <comment_count>4</comment_count>
      <attachid>45573</attachid>
    <who name="Yael">yael</who>
    <bug_when>2009-12-28 14:05:34 -0800</bug_when>
    <thetext>Created attachment 45573
Patch.

With this patch, and enabling the new flag TEST_DRAG_AND_DROP in EventSenderQt.cpp, these 4 tests are passing:
fast/events/drag-parent-node.html
fast/events/drag-and-drop.html
fast/events/drag-and-drop-dataTransfer-types-nocrash.html
fast/events/drag-and-drop-fire-drag-dragover.html

Also, drag-and-drop works much more reliably in QtLauncher. (You cannot initiate a drag from QGVLauncher, only drop).

The problem is that QDrag depends on the system cursor to really move, and I did not think we want running DRT to have a side effect of moving the system cursor.

Qt experts, I would love to hear your thoughts about the QDrag problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175939</commentid>
    <comment_count>5</comment_count>
      <attachid>45667</attachid>
    <who name="Yael">yael</who>
    <bug_when>2009-12-30 09:18:08 -0800</bug_when>
    <thetext>Created attachment 45667
Patch.

I forgot to mention in comment #4 that in order for QDrag to work, the view also needs to be visible. This is reflected in the updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175973</commentid>
    <comment_count>6</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2009-12-30 10:31:55 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Created an attachment (id=45667) [details]
&gt; Patch.
&gt; 
&gt; I forgot to mention in comment #4 that in order for QDrag to work, the view
&gt; also needs to be visible. This is reflected in the updated patch.

although I believe the abreviation in &quot;::sendOrQueEvent&quot; is intentional and not a typo, it&apos;d be better to be avoided, so sendOrQueEvent -&gt; sendOrQueueEvent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187336</commentid>
    <comment_count>7</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2010-02-03 06:28:49 -0800</bug_when>
    <thetext>After fixing 33055 (DnD behavior in QtWebKit) and 33114 (DRT&apos;s leapForward implementation) I am not sure how to proceed. If we set QWebView in DRT to be visible, and we really move the system cursor with the mouse move events, DnD layout tests pass. But of course we do not want to make these changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249576</commentid>
    <comment_count>8</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-07-10 15:57:51 -0700</bug_when>
    <thetext>
Hi Yael,

I&apos;ve been looking at this and I agree that drag and drop can&apos;t work in the layout tests without displaying the mainview. However I don&apos;t think it is failing because it has to move the system cursor.

First of all, I believe EventSenderQt is not properly set up to interact with QDrag-&gt;exec() in trunk at the moment. I&apos;ve made some small changes to it in the attached patch and I believe this allows the final mouseRelease() events to get through to QDrag. This can be tested with the fairly simple drag test fast/events/drag-parent-node.html.

The problem the patch fixes is that both the mouseMove() and the mouseRelease() event need to be posted before EventSenderQt&apos;s event loop is created. As it stands the event loop was getting created with the mouseMove() event with the result that the QDrag event loop could never receive the following MouseButtonRelease event.

With this patch I was able to put a breakpoint in qdnd_x11.cpp in Qt and watch the eventFilter() there catch the final MouseButtonRelease() event in the above test. So I know, even if my approach is wrongheaded in some other way, that at least DnD in Qt is now getting the events it should.

So the patch fixes tests that are interested in ondragstart and ondragend events but the real trick is getting Qt DnD in headless mode to send QtWebKit drop events. And this is where the problem is in my view.

When qdnd_x11.cpp catches the MouseButtonRelease event it always assumes the drag has been cancelled because &apos;willDrop&apos; is always false. It is always false, because it can only be set to true in xdndHandleStatus() and that function is only called if QDragManager::move() detects the window under the cursor is XdndAware.

This can be hacked around up to a point, see the calls I&apos;ve added in DragClientQt, but because such hacks would always have to guess (mostly incorrectly) the resulting drop action of the drag event even that won&apos;t solve enough tests to be a worthwhile workaround.

So to get this working properly in DRT we need to somehow fool QDragManager into treating the area under the cursor as always XdndAware and so let QDrag emit a drop event when the mouse button is released.

Does my analysis seem coherent to you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249577</commentid>
    <comment_count>9</comment_count>
      <attachid>61167</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-07-10 15:59:00 -0700</bug_when>
    <thetext>Created attachment 61167
Getting Mouse Release Events to QDrag</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249629</commentid>
    <comment_count>10</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2010-07-11 09:22:19 -0700</bug_when>
    <thetext>Hi Robert,
I know that moving the system cursor in EventSenderQt is not an OK solution. But, I also saw the problems you have described in QDragManager, and moving the cursor solved them for me. 

I am not sure what others think about adding test code to WebKit, in order to pass tests. Personally, I would prefer to try and avoid that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249908</commentid>
    <comment_count>11</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-07-12 10:45:16 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Hi Robert,
&gt; I know that moving the system cursor in EventSenderQt is not an OK solution. But, I also saw the problems you have described in QDragManager, and moving the cursor solved them for me. 

I&apos;m not disagreeing with that at all - I was just clarifying out loud that the reason it works is because QDragManager uses the QCursor position to find the window underneath it. 

So as you said originally, the window needs to be displayed. I&apos;m adding the reason for it and wanted to be sure that I was on the right track.

&gt; 
&gt; I am not sure what others think about adding test code to WebKit, in order to pass tests. Personally, I would prefer to try and avoid that.

Absolutely. I think there is a simple reason that this problem is unsolvable (in full) unless we display the window during these tests: the Qt::DropAction returned by QDrag::exec() cannot be simulated no matter what we do, it derives from XEvents created by moving the system cursor across the display. Not all drag tests rely on a correct Qt::DropAction - we could always guess Qt::CopyAction for example - but to pass all of them we would definitely need to know for a fact what it actually is.

So we come back to your question: can we display the window during these tests?

If the answer is no, then we will always have to skip some of these. However, we could just send generic drop and drag events to QWebView from EventSenderQt and this would allow us to pass a subset of the tests. Which is a bit rubbish but seems to be the only available alternative.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388493</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-19 07:21:12 -0700</bug_when>
    <thetext>In the past other ports have had to use real events, or show windows in order to pass tests. Then later on folks came along with a eureka moment and found other ways to implement the same.  I&apos;m not sure if the same will heppen for Qt, but it sounds like a partial solution (whichever you choose), even one which can only be run on the bots (because it does things like move the real cursor) seems useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495357</commentid>
    <comment_count>13</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-11-03 04:56:26 -0700</bug_when>
    <thetext>*** Bug 71460 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876443</commentid>
    <comment_count>14</comment_count>
      <attachid>198289</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-04-16 02:44:23 -0700</bug_when>
    <thetext>Created attachment 198289
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876519</commentid>
    <comment_count>15</comment_count>
      <attachid>198319</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-04-16 05:43:13 -0700</bug_when>
    <thetext>Created attachment 198319
Patch

Send both dragEnter and dragMove on the first dragging move. Helps pass 5 more tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879083</commentid>
    <comment_count>16</comment_count>
      <attachid>198319</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-04-22 05:00:27 -0700</bug_when>
    <thetext>Comment on attachment 198319
Patch

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

&gt; Source/WebKit/qt/WebCoreSupport/DragClientQt.cpp:118
&gt; +    if (m_dragData)
&gt; +        delete m_dragData;

This looks like a good fit for OwnPtr or QScopedPointer, which would also avoid leaking m_dragData when the DragClient is destroyed.

&gt; Source/WebKit/qt/WebCoreSupport/DragClientQt.cpp:121
&gt; +    m_dragData = static_cast&lt;ClipboardQt*&gt;(clipboard)-&gt;clipboardData();
&gt; +    m_dropActions = dragOperationsToDropActions(clipboard-&gt;sourceOperation());
&gt; +    static_cast&lt;ClipboardQt*&gt;(clipboard)-&gt;invalidateWritableData();

Placing the invalidateWritableData() call right under the assignment and leave an empty line would improve readability.

&gt; Source/WebKit/qt/WebCoreSupport/DragClientQt.cpp:144
&gt; +    if (m_dragData)
&gt; +        return m_dragData;
&gt; +    return 0;

Isn&apos;t this the same as &quot;return m_dragData;&quot;?

&gt; Source/WebKit/qt/WebCoreSupport/DragClientQt.cpp:151
&gt; +    if (m_dragData)
&gt; +        return m_dropActions;
&gt; +    return Qt::IgnoreAction;

If you set m_dropActions(Qt::IgnoreAction) in the constructor, this would also be equivalent to simply doing &quot;return m_dropAction;&quot;. It could also be inlined in the header.

&gt; Tools/DumpRenderTree/qt/EventSenderQt.cpp:650
&gt; +void EventSender::sendEventInOrder(QEvent* event)

What is defining what have to be sent directly with sendEvent or must go through sendEventInOrder?

&gt; Tools/DumpRenderTree/qt/EventSenderQt.cpp:653
&gt; +        QTest::qWait(m_delay);

Humm, I don&apos;t like using QTest outside of tests, but it seems like it did work like that for a while.

&gt; Tools/DumpRenderTree/qt/EventSenderQt.h:130
&gt; +    int m_delay;

Since you brought it in a wider scope, it would be nice to define its purpose with a sharper name. Something like m_sendEventDelay, m_nextEventDelay, m_dragEventDelay or m_eventLeapForwardDelay would make it more obvious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879085</commentid>
    <comment_count>17</comment_count>
      <attachid>198319</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-04-22 05:04:41 -0700</bug_when>
    <thetext>Comment on attachment 198319
Patch

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

&gt; Tools/DumpRenderTree/qt/EventSenderQt.cpp:658
&gt; +    sendEvent(m_page-&gt;view(), event);
&gt; +    delete event;

Also, since you&apos;re not posting events anymore, you could pass all events on the stack to sendEventInOrder and avoid the confusion already in the code on whether or not the QEvent is getting owned by sendEventInOrder vs. sendEvent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882969</commentid>
    <comment_count>18</comment_count>
      <attachid>198319</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-04-30 01:11:20 -0700</bug_when>
    <thetext>Comment on attachment 198319
Patch

Mark for iteration/feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>975097</commentid>
    <comment_count>19</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2014-02-03 03:15:57 -0800</bug_when>
    <thetext>=== Bulk closing of Qt bugs ===

If you believe that this bug report is still relevant for a non-Qt port of webkit.org, please re-open it and remove [Qt] from the summary.

If you believe that this is still an important QtWebKit bug, please fill a new report at https://bugreports.qt-project.org and add a link to this issue. See http://qt-project.org/wiki/ReportingBugsInQt for additional guidelines.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45573</attachid>
            <date>2009-12-28 14:05:34 -0800</date>
            <delta_ts>2009-12-30 09:18:08 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>31332.patch</filename>
            <type>text/plain</type>
            <size>14894</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwCShyZXZpc2lv
biA1MjIxMykKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiRHJhZ0NsaWVudFF0Lmgi
CiAKICNpbmNsdWRlICJDbGlwYm9hcmRRdC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAicXdlYnBhZ2UuaCIKIAogI2luY2x1
ZGUgPFFEcmFnPgpAQCAtMzUsNiArMzcsMzIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitz
dGF0aWMgaW5saW5lIFF0OjpEcm9wQWN0aW9ucyBkcmFnT3BUb0Ryb3BBY3Rpb25zKHVuc2lnbmVk
IG9wKQoreworICAgIFF0OjpEcm9wQWN0aW9ucyByZXN1bHQgPSBRdDo6SWdub3JlQWN0aW9uOwor
ICAgIGlmIChvcCAmIERyYWdPcGVyYXRpb25Db3B5KQorICAgICAgICByZXN1bHQgPSBRdDo6Q29w
eUFjdGlvbjsKKyAgICBpZiAob3AgJiBEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICAgICAgcmVzdWx0
IHw9IFF0OjpNb3ZlQWN0aW9uOworICAgIGlmIChvcCAmIERyYWdPcGVyYXRpb25HZW5lcmljKQor
ICAgICAgICByZXN1bHQgfD0gUXQ6Ok1vdmVBY3Rpb247CisgICAgaWYgKG9wICYgRHJhZ09wZXJh
dGlvbkxpbmspCisgICAgICAgIHJlc3VsdCB8PSBRdDo6TGlua0FjdGlvbjsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitzdGF0aWMgaW5saW5lIERyYWdPcGVyYXRpb24gZHJvcEFjdGlvblRvRHJh
Z09wKFF0OjpEcm9wQWN0aW9ucyBhY3Rpb24pCit7CisgICAgRHJhZ09wZXJhdGlvbiByZXN1bHQg
PSBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBpZiAoYWN0aW9uICYgUXQ6OkNvcHlBY3Rpb24pCisg
ICAgICAgIHJlc3VsdCA9IERyYWdPcGVyYXRpb25Db3B5OworICAgIGlmIChhY3Rpb24gJiBRdDo6
TGlua0FjdGlvbikKKyAgICAgICAgcmVzdWx0ID0gRHJhZ09wZXJhdGlvbkxpbms7CisgICAgaWYg
KGFjdGlvbiAmIFF0OjpNb3ZlQWN0aW9uKQorICAgICAgICByZXN1bHQgPSBEcmFnT3BlcmF0aW9u
TW92ZTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBEcmFnRGVzdGluYXRpb25BY3Rpb24gRHJh
Z0NsaWVudFF0OjphY3Rpb25NYXNrRm9yRHJhZyhEcmFnRGF0YSopCiB7CiAgICAgcmV0dXJuIERy
YWdEZXN0aW5hdGlvbkFjdGlvbkFueTsKQEAgLTU4LDcgKzg2LDcgQEAKIHsKIH0KIAotdm9pZCBE
cmFnQ2xpZW50UXQ6OnN0YXJ0RHJhZyhEcmFnSW1hZ2VSZWYsIGNvbnN0IEludFBvaW50JiwgY29u
c3QgSW50UG9pbnQmLCBDbGlwYm9hcmQqIGNsaXBib2FyZCwgRnJhbWUqLCBib29sKQordm9pZCBE
cmFnQ2xpZW50UXQ6OnN0YXJ0RHJhZyhEcmFnSW1hZ2VSZWYsIGNvbnN0IEludFBvaW50JiwgY29u
c3QgSW50UG9pbnQmLCBDbGlwYm9hcmQqIGNsaXBib2FyZCwgRnJhbWUqIGZyYW1lLCBib29sKQog
ewogI2lmbmRlZiBRVF9OT19EUkFHQU5ERFJPUAogICAgIFFNaW1lRGF0YSogY2xpcGJvYXJkRGF0
YSA9IHN0YXRpY19jYXN0PENsaXBib2FyZFF0Kj4oY2xpcGJvYXJkKS0+Y2xpcGJvYXJkRGF0YSgp
OwpAQCAtNjYsMTAgKzk0LDE2IEBACiAgICAgUVdpZGdldCogdmlldyA9IG1fd2ViUGFnZS0+dmll
dygpOwogICAgIGlmICh2aWV3KSB7CiAgICAgICAgIFFEcmFnICpkcmFnID0gbmV3IFFEcmFnKHZp
ZXcpOwotICAgICAgICBpZiAoY2xpcGJvYXJkRGF0YS0+aGFzSW1hZ2UoKSkKKyAgICAgICAgaWYg
KGNsaXBib2FyZERhdGEgJiYgY2xpcGJvYXJkRGF0YS0+aGFzSW1hZ2UoKSkKICAgICAgICAgICAg
IGRyYWctPnNldFBpeG1hcChxdmFyaWFudF9jYXN0PFFQaXhtYXA+KGNsaXBib2FyZERhdGEtPmlt
YWdlRGF0YSgpKSk7CisgICAgICAgIERyYWdPcGVyYXRpb24gZHJhZ09wZXJhdGlvbk1hc2sgPSBE
cmFnT3BlcmF0aW9uRXZlcnk7CisgICAgICAgIGNsaXBib2FyZC0+c291cmNlT3BlcmF0aW9uKGRy
YWdPcGVyYXRpb25NYXNrKTsKICAgICAgICAgZHJhZy0+c2V0TWltZURhdGEoY2xpcGJvYXJkRGF0
YSk7Ci0gICAgICAgIGRyYWctPnN0YXJ0KCk7CisgICAgICAgIFF0OjpEcm9wQWN0aW9uIGFjdHVh
bERyb3BBY3Rpb24gPSBkcmFnLT5leGVjKGRyYWdPcFRvRHJvcEFjdGlvbnMoZHJhZ09wZXJhdGlv
bk1hc2spKTsKKworICAgICAgICAvLyBTZW5kIGRyYWdFbmQgZXZlbnQKKyAgICAgICAgUGxhdGZv
cm1Nb3VzZUV2ZW50IG1lKG1fd2ViUGFnZS0+dmlldygpLT5tYXBGcm9tR2xvYmFsKFFDdXJzb3I6
OnBvcygpKSwgUUN1cnNvcjo6cG9zKCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwgMCwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDApOworICAgICAgICBmcmFtZS0+ZXZlbnRIYW5k
bGVyKCktPmRyYWdTb3VyY2VFbmRlZEF0KG1lLCBkcm9wQWN0aW9uVG9EcmFnT3AoYWN0dWFsRHJv
cEFjdGlvbikpOwogICAgIH0KICNlbmRpZgogfQpJbmRleDogV2ViS2l0L3F0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MjYwMikKKysrIFdl
YktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAwOS0x
Mi0yOCAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBGYWlsaW5nIERyYWctYW5k
LWRyb3AgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMxMzMyCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoZHJvcEFj
dGlvblRvRHJhZ09wKToKKyAgICAgICAgKGRyYWdPcFRvRHJvcEFjdGlvbik6CisgICAgICAgIChR
V2ViUGFnZVByaXZhdGU6OmRyYWdFbnRlckV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0
ZTo6ZHJhZ01vdmVFdmVudCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmRyb3BFdmVudCk6
CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
cmFnQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhZ09wVG9Ecm9wQWN0aW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpkcm9wQWN0aW9uVG9EcmFnT3ApOgorICAgICAgICAoV2ViQ29y
ZTo6RHJhZ0NsaWVudFF0OjpzdGFydERyYWcpOgorCiAyMDA5LTEyLTI0ICBHaXJpc2ggUmFtYWty
aXNobmFuICA8Z2lyaXNoQGZvcndhcmRiaWFzLmluPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1
c3Rhdm8gTm9yb25oYS4KSW5kZXg6IFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCShyZXZpc2lvbiA1MjIxMykKKysrIFdl
YktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDMsNyArMzQzLDcg
QEAKICAgICBpZiAoYWN0aW9ucyAmIFF0OjpDb3B5QWN0aW9uKQogICAgICAgICByZXN1bHQgfD0g
RHJhZ09wZXJhdGlvbkNvcHk7CiAgICAgaWYgKGFjdGlvbnMgJiBRdDo6TW92ZUFjdGlvbikKLSAg
ICAgICAgcmVzdWx0IHw9IERyYWdPcGVyYXRpb25Nb3ZlOworICAgICAgICByZXN1bHQgfD0gKERy
YWdPcGVyYXRpb25Nb3ZlIHwgRHJhZ09wZXJhdGlvbkdlbmVyaWMpOwogICAgIGlmIChhY3Rpb25z
ICYgUXQ6OkxpbmtBY3Rpb24pCiAgICAgICAgIHJlc3VsdCB8PSBEcmFnT3BlcmF0aW9uTGluazsK
ICAgICByZXR1cm4gKERyYWdPcGVyYXRpb24pcmVzdWx0OwpAQCAtMzU2LDYgKzM1Niw4IEBACiAg
ICAgICAgIHJlc3VsdCA9IFF0OjpDb3B5QWN0aW9uOwogICAgIGVsc2UgaWYgKGFjdGlvbnMgJiBE
cmFnT3BlcmF0aW9uTW92ZSkKICAgICAgICAgcmVzdWx0ID0gUXQ6Ok1vdmVBY3Rpb247CisgICAg
ZWxzZSBpZiAoYWN0aW9ucyAmIERyYWdPcGVyYXRpb25HZW5lcmljKQorICAgICAgICByZXN1bHQg
PSBRdDo6TW92ZUFjdGlvbjsKICAgICBlbHNlIGlmIChhY3Rpb25zICYgRHJhZ09wZXJhdGlvbkxp
bmspCiAgICAgICAgIHJlc3VsdCA9IFF0OjpMaW5rQWN0aW9uOwogICAgIHJldHVybiByZXN1bHQ7
CkBAIC0xMDg5LDggKzEwOTEsOSBAQAogICAgICAgICAgICAgICAgICAgICAgIGRyb3BBY3Rpb25U
b0RyYWdPcChldi0+cG9zc2libGVBY3Rpb25zKCkpKTsKICAgICBRdDo6RHJvcEFjdGlvbiBhY3Rp
b24gPSBkcmFnT3BUb0Ryb3BBY3Rpb24ocGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+ZHJhZ0VudGVy
ZWQoJmRyYWdEYXRhKSk7CiAgICAgZXYtPnNldERyb3BBY3Rpb24oYWN0aW9uKTsKLSAgICBpZiAo
YWN0aW9uICE9IFF0OjpJZ25vcmVBY3Rpb24pCi0gICAgICAgIGV2LT5hY2NlcHQoKTsKKyAgICAv
LyBXZSBtdXN0IGFjY2VwdCB0aGlzIGV2ZW50IGluIG9yZGVyIHRvIHJlY2VpdmUgdGhlIGRyYWcg
bW92ZSBldmVudHMgdGhhdCBhcmUgc2VudAorICAgIC8vIHdoaWxlIHRoZSBkcmFnIGFuZCBkcm9w
IGFjdGlvbiBpcyBpbiBwcm9ncmVzcy4KKyAgICBldi0+YWNjZXB0KCk7CiAjZW5kaWYKIH0KIApA
QCAtMTEzMCw5ICsxMTMzLDExIEBACiAgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZXYtPm1pbWVEYXRh
KCksIGV2LT5wb3MoKSwgUUN1cnNvcjo6cG9zKCksCiAgICAgICAgICAgICAgICAgICAgICAgZHJv
cEFjdGlvblRvRHJhZ09wKGV2LT5wb3NzaWJsZUFjdGlvbnMoKSkpOwogICAgIFF0OjpEcm9wQWN0
aW9uIGFjdGlvbiA9IGRyYWdPcFRvRHJvcEFjdGlvbihwYWdlLT5kcmFnQ29udHJvbGxlcigpLT5k
cmFnVXBkYXRlZCgmZHJhZ0RhdGEpKTsKKyAgICBtX2xhc3REcm9wQWN0aW9uID0gYWN0aW9uOwog
ICAgIGV2LT5zZXREcm9wQWN0aW9uKGFjdGlvbik7Ci0gICAgaWYgKGFjdGlvbiAhPSBRdDo6SWdu
b3JlQWN0aW9uKQotICAgICAgICBldi0+YWNjZXB0KCk7CisgICAgLy8gV2UgbXVzdCBhY2NlcHQg
dGhpcyBldmVudCBpbiBvcmRlciB0byByZWNlaXZlIHRoZSBkcmFnIG1vdmUgZXZlbnRzIHRoYXQg
YXJlIHNlbnQKKyAgICAvLyB3aGlsZSB0aGUgZHJhZyBhbmQgZHJvcCBhY3Rpb24gaXMgaW4gcHJv
Z3Jlc3MuCisgICAgZXYtPmFjY2VwdCgpOwogI2VuZGlmCiB9CiAKQEAgLTExNDEsOCArMTE0Niw3
IEBACiAjaWZuZGVmIFFUX05PX0RSQUdBTkREUk9QCiAgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZXYt
Pm1pbWVEYXRhKCksIGV2LT5wb3MoKS50b1BvaW50KCksCiAgICAgICAgICAgICBRQ3Vyc29yOjpw
b3MoKSwgZHJvcEFjdGlvblRvRHJhZ09wKGV2LT5wb3NzaWJsZUFjdGlvbnMoKSkpOwotICAgIFF0
OjpEcm9wQWN0aW9uIGFjdGlvbiA9IGRyYWdPcFRvRHJvcEFjdGlvbihwYWdlLT5kcmFnQ29udHJv
bGxlcigpLT5wZXJmb3JtRHJhZygmZHJhZ0RhdGEpKTsKLSAgICBpZiAoYWN0aW9uICE9IFF0OjpJ
Z25vcmVBY3Rpb24pCisgICAgaWYgKHBhZ2UtPmRyYWdDb250cm9sbGVyKCktPnBlcmZvcm1EcmFn
KCZkcmFnRGF0YSkpCiAgICAgICAgIGV2LT5hY2NlcHQoKTsKICNlbmRpZgogfQpAQCAtMTE1MCwx
MCArMTE1NCwxMSBAQAogdm9pZCBRV2ViUGFnZVByaXZhdGU6OmRyb3BFdmVudChRRHJvcEV2ZW50
KiBldikKIHsKICNpZm5kZWYgUVRfTk9fRFJBR0FORERST1AKKyAgICAvLyBPdmVyd3JpdGUgdGhl
IGRlZmF1bHRzIHNldCBieVFEcmFnTWFuYWdlcjo6ZGVmYXVsdEFjdGlvbigpCisgICAgZXYtPnNl
dERyb3BBY3Rpb24obV9sYXN0RHJvcEFjdGlvbik7CiAgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZXYt
Pm1pbWVEYXRhKCksIGV2LT5wb3MoKSwgUUN1cnNvcjo6cG9zKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgZHJvcEFjdGlvblRvRHJhZ09wKGV2LT5wb3NzaWJsZUFjdGlvbnMoKSkpOwotICAgIFF0
OjpEcm9wQWN0aW9uIGFjdGlvbiA9IGRyYWdPcFRvRHJvcEFjdGlvbihwYWdlLT5kcmFnQ29udHJv
bGxlcigpLT5wZXJmb3JtRHJhZygmZHJhZ0RhdGEpKTsKLSAgICBpZiAoYWN0aW9uICE9IFF0OjpJ
Z25vcmVBY3Rpb24pCisgICAgICAgICAgICAgICAgICAgICAgZHJvcEFjdGlvblRvRHJhZ09wKFF0
OjpEcm9wQWN0aW9uKGV2LT5kcm9wQWN0aW9uKCkpKSk7CisgICAgaWYgKHBhZ2UtPmRyYWdDb250
cm9sbGVyKCktPnBlcmZvcm1EcmFnKCZkcmFnRGF0YSkpCiAgICAgICAgIGV2LT5hY2NlcHQoKTsK
ICNlbmRpZgogfQpJbmRleDogV2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmgJKHJldmlzaW9uIDUyMjEzKQorKysgV2ViS2l0
L3F0L0FwaS9xd2VicGFnZV9wLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4MCw2ICsxODAsNyBAQAog
ICAgIFFXaWRnZXQqIGluc3BlY3RvckZyb250ZW5kOwogICAgIFFXZWJJbnNwZWN0b3IqIGluc3Bl
Y3RvcjsKICAgICBib29sIGluc3BlY3RvcklzSW50ZXJuYWxPbmx5OyAvLyBUcnVlIGlmIGNyZWF0
ZWQgdGhyb3VnaCB0aGUgSW5zcGVjdCBjb250ZXh0IG1lbnUgYWN0aW9uCisgICAgUXQ6OkRyb3BB
Y3Rpb24gbV9sYXN0RHJvcEFjdGlvbjsKIAogICAgIHN0YXRpYyBib29sIGRydFJ1bjsKIH07Cklu
ZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwko
cmV2aXNpb24gNTI2MDIpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDEzIEBACisyMDA5LTEyLTI4ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lh
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
UXRdIEZhaWxpbmcgRHJhZy1hbmQtZHJvcCB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzEzMzIKKworICAgICAgICAqIHBhZ2UvcXQvRHJhZ0Nv
bnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y2xlYW51
cEFmdGVyU3lzdGVtRHJhZyk6CisKIDIwMDktMTItMjggIExhc3psbyBHb21ib3MgIDxsYXN6bG8u
MS5nb21ib3NAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCklu
ZGV4OiBXZWJDb3JlL3BhZ2UvcXQvRHJhZ0NvbnRyb2xsZXJRdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wYWdlL3F0L0RyYWdDb250cm9sbGVyUXQuY3BwCShyZXZpc2lvbiA1MjQ5MCkKKysr
IFdlYkNvcmUvcGFnZS9xdC9EcmFnQ29udHJvbGxlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjYsNiArNjYsNyBAQAogCiB2b2lkIERyYWdDb250cm9sbGVyOjpjbGVhbnVwQWZ0ZXJTeXN0ZW1E
cmFnKCkKIHsKKyAgICBkcmFnRW5kZWQoKTsKIH0KIAogfQpJbmRleDogV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWUucHJvCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlLnBybwkocmV2aXNpb24gNTIyMTMp
CisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5wcm8JKHdv
cmtpbmcgY29weSkKQEAgLTIwLDcgKzIwLDcgQEAKIENPTkZJRyArPSBsaW5rX3BrZ2NvbmZpZwog
UEtHQ09ORklHICs9IGZvbnRjb25maWcKIAotUVQgPSBjb3JlIGd1aSBuZXR3b3JrCitRVCA9IGNv
cmUgZ3VpIG5ldHdvcmsgdGVzdGxpYgogbWFjeDogUVQgKz0geG1sCiAKIEhFQURFUlMgPSAkJEJB
U0VESVIvV29ya1F1ZXVlLmggXApJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQv
RXZlbnRTZW5kZXJRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvRXZlbnRTZW5kZXJRdC5jcHAJKHJldmlzaW9uIDUyMjEzKQorKysgV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvRXZlbnRTZW5kZXJRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDYgKzMxLDkgQEAKIAogLy8jaW5jbHVkZSA8UXREZWJ1Zz4KIAorI2luY2x1ZGUgPFFEcmFnPgor
I2luY2x1ZGUgPFF0VGVzdC9RdFRlc3Q+CisKICNkZWZpbmUgS0VZQ09ERV9ERUwgICAgICAgICAx
MjcKICNkZWZpbmUgS0VZQ09ERV9CQUNLU1BBQ0UgICA4CiAjZGVmaW5lIEtFWUNPREVfTEVGVEFS
Uk9XICAgMHhmNzAyCkBAIC0zOCwxMSArNDEsMjkgQEAKICNkZWZpbmUgS0VZQ09ERV9VUEFSUk9X
ICAgICAweGY3MDAKICNkZWZpbmUgS0VZQ09ERV9ET1dOQVJST1cgICAweGY3MDEKIAorI2RlZmlu
ZSBEUlRfTUVTU0FHRV9ET05FIChRRXZlbnQ6OlVzZXIgKyAxKQogCitzdHJ1Y3QgRFJURXZlbnRR
dWUgeworICAgIFFFdmVudCogbV9ldmVudDsKKyAgICBpbnQgbV9kZWxheTsKK307CisKK3N0YXRp
YyBEUlRFdmVudFF1ZSBldmVudFF1ZVsxMDI0XTsKK3N0YXRpYyB1bnNpZ25lZCBlbmRPZlF1ZXVl
Oworc3RhdGljIHVuc2lnbmVkIHN0YXJ0T2ZRdWV1ZTsKKworCiBFdmVudFNlbmRlcjo6RXZlbnRT
ZW5kZXIoUVdlYlBhZ2UqIHBhcmVudCkKICAgICA6IFFPYmplY3QocGFyZW50KQogewogICAgIG1f
cGFnZSA9IHBhcmVudDsKKyAgICBtX3dhaXRpbmdGb3JFdmVudHMgPSBmYWxzZTsKKyAgICBtX21v
dXNlQnV0dG9uRG93biA9IGZhbHNlOworICAgIG1fZHJhZyA9IGZhbHNlOworICAgIG1lbXNldChl
dmVudFF1ZSwgMCwgc2l6ZW9mKGV2ZW50UXVlKSk7CisgICAgZW5kT2ZRdWV1ZSA9IDA7CisgICAg
c3RhcnRPZlF1ZXVlID0gMDsKKyAgICBtX3BhZ2UtPnZpZXcoKS0+aW5zdGFsbEV2ZW50RmlsdGVy
KHRoaXMpOwogfQogCiB2b2lkIEV2ZW50U2VuZGVyOjptb3VzZURvd24oaW50IGJ1dHRvbikKQEAg
LTcwLDggKzkxLDggQEAKICAgICBtX21vdXNlQnV0dG9ucyB8PSBtb3VzZUJ1dHRvbjsKIAogLy8g
ICAgIHFEZWJ1ZygpIDw8ICJFdmVudFNlbmRlcjo6bW91c2VEb3duIiA8PCBmcmFtZTsKLSAgICBR
TW91c2VFdmVudCBldmVudChRRXZlbnQ6Ok1vdXNlQnV0dG9uUHJlc3MsIG1fbW91c2VQb3MsIG1f
bW91c2VQb3MsIG1vdXNlQnV0dG9uLCBtX21vdXNlQnV0dG9ucywgUXQ6Ok5vTW9kaWZpZXIpOwot
ICAgIFFBcHBsaWNhdGlvbjo6c2VuZEV2ZW50KG1fcGFnZSwgJmV2ZW50KTsKKyAgICBRTW91c2VF
dmVudCogZXZlbnQgPSBuZXcgUU1vdXNlRXZlbnQoUUV2ZW50OjpNb3VzZUJ1dHRvblByZXNzLCBt
X21vdXNlUG9zLCBtX21vdXNlUG9zLCBtb3VzZUJ1dHRvbiwgbV9tb3VzZUJ1dHRvbnMsIFF0OjpO
b01vZGlmaWVyKTsKKyAgICBzZW5kT3JRdWVFdmVudChldmVudCk7CiB9CiAKIHZvaWQgRXZlbnRT
ZW5kZXI6Om1vdXNlVXAoaW50IGJ1dHRvbikKQEAgLTk5LDIyICsxMjAsMjEgQEAKICAgICBtX21v
dXNlQnV0dG9ucyAmPSB+bW91c2VCdXR0b247CiAKIC8vICAgICBxRGVidWcoKSA8PCAiRXZlbnRT
ZW5kZXI6Om1vdXNlVXAiIDw8IGZyYW1lOwotICAgIFFNb3VzZUV2ZW50IGV2ZW50KFFFdmVudDo6
TW91c2VCdXR0b25SZWxlYXNlLCBtX21vdXNlUG9zLCBtX21vdXNlUG9zLCBtb3VzZUJ1dHRvbiwg
bV9tb3VzZUJ1dHRvbnMsIFF0OjpOb01vZGlmaWVyKTsKLSAgICBRQXBwbGljYXRpb246OnNlbmRF
dmVudChtX3BhZ2UsICZldmVudCk7CisgICAgUU1vdXNlRXZlbnQqIGV2ZW50ID0gbmV3IFFNb3Vz
ZUV2ZW50KFFFdmVudDo6TW91c2VCdXR0b25SZWxlYXNlLCBtX21vdXNlUG9zLCBtX21vdXNlUG9z
LCBtb3VzZUJ1dHRvbiwgbV9tb3VzZUJ1dHRvbnMsIFF0OjpOb01vZGlmaWVyKTsKKyAgICBzZW5k
T3JRdWVFdmVudChldmVudCk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXI6Om1vdXNlTW92ZVRvKGlu
dCB4LCBpbnQgeSkKIHsKIC8vICAgICBxRGVidWcoKSA8PCAiRXZlbnRTZW5kZXI6Om1vdXNlTW92
ZVRvIiA8PCB4IDw8IHk7CiAgICAgbV9tb3VzZVBvcyA9IFFQb2ludCh4LCB5KTsKLSAgICBRTW91
c2VFdmVudCBldmVudChRRXZlbnQ6Ok1vdXNlTW92ZSwgbV9tb3VzZVBvcywgbV9tb3VzZVBvcywg
UXQ6Ok5vQnV0dG9uLCBtX21vdXNlQnV0dG9ucywgUXQ6Ok5vTW9kaWZpZXIpOwotICAgIFFBcHBs
aWNhdGlvbjo6c2VuZEV2ZW50KG1fcGFnZSwgJmV2ZW50KTsKKyAgICBRTW91c2VFdmVudCogZXZl
bnQgPSBuZXcgUU1vdXNlRXZlbnQoUUV2ZW50OjpNb3VzZU1vdmUsIG1fbW91c2VQb3MsIG1fbW91
c2VQb3MsIFF0OjpOb0J1dHRvbiwgbV9tb3VzZUJ1dHRvbnMsIFF0OjpOb01vZGlmaWVyKTsKKyAg
ICBzZW5kT3JRdWVFdmVudChldmVudCk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXI6OmxlYXBGb3J3
YXJkKGludCBtcykKIHsKLSAgICBtX3RpbWVMZWFwICs9IG1zOwotICAgIC8vcURlYnVnKCkgPDwg
IkV2ZW50U2VuZGVyOjpsZWFwRm9yd2FyZCIgPDwgbXM7CisgICAgZXZlbnRRdWVbZW5kT2ZRdWV1
ZV0ubV9kZWxheSA9IG1zOwogfQogCiB2b2lkIEV2ZW50U2VuZGVyOjprZXlEb3duKGNvbnN0IFFT
dHJpbmcmIHN0cmluZywgY29uc3QgUVN0cmluZ0xpc3QmIG1vZGlmaWVycykKQEAgLTM3MywzICsz
OTMsNzAgQEAKICAgICAgICAgcmV0dXJuIGZyYW1lOwogICAgIHJldHVybiAwOwogfQorCit2b2lk
IEV2ZW50U2VuZGVyOjpzZW5kT3JRdWVFdmVudChRRXZlbnQqIGV2KQoreworICAgIGlmIChlbmRP
ZlF1ZXVlID09IHN0YXJ0T2ZRdWV1ZSAmJiAhZXZlbnRRdWVbZW5kT2ZRdWV1ZV0ubV9kZWxheSAm
JiAhbV9tb3VzZUJ1dHRvbkRvd24pIHsKKyAgICAgICAgUUFwcGxpY2F0aW9uOjpzZW5kRXZlbnQo
bV9wYWdlLT52aWV3KCksIGV2KTsKKyAgICAgICAgZGVsZXRlIGV2OworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGV2ZW50UXVlW2VuZE9mUXVldWUrK10ubV9ldmVudCA9IGV2OworICAgIGV2
ZW50UXVlW2VuZE9mUXVldWVdLm1fZGVsYXkgPSAwOworICAgIHJlcGxheVNhdmVkRXZlbnRzKGV2
LT50eXBlKCkgPT0gUUV2ZW50OjpNb3VzZUJ1dHRvblJlbGVhc2UpOworfQorCit2b2lkIEV2ZW50
U2VuZGVyOjpyZXBsYXlTYXZlZEV2ZW50cyhib29sIGZsdXNoKQoreworICAgIGlmIChzdGFydE9m
UXVldWUgPCBlbmRPZlF1ZXVlKSB7CisgICAgICAgIC8vIEZpcnN0IHNlbmQgYWxsIHRoZSBldmVu
dHMgdGhhdCBhcmUgcmVhZHkgdG8gYmUgc2VudAorICAgICAgICB3aGlsZSAoIWV2ZW50UXVlW3N0
YXJ0T2ZRdWV1ZV0ubV9kZWxheSAmJiBzdGFydE9mUXVldWUgPCBlbmRPZlF1ZXVlKSB7CisgICAg
ICAgICAgICBRRXZlbnQqIGV2ID0gZXZlbnRRdWVbc3RhcnRPZlF1ZXVlKytdLm1fZXZlbnQ7Cisg
ICAgICAgICAgICBRQXBwbGljYXRpb246OnBvc3RFdmVudChtX3BhZ2UtPnZpZXcoKSwgZXYpOyAv
LyBldiBkZWxldGVkIGJ5IHRoZSBzeXN0ZW0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdGFy
dE9mUXVldWUgPT0gZW5kT2ZRdWV1ZSkgeworICAgICAgICAgICAgLy8gUmVzZXQgdGhlIHF1ZXVl
CisgICAgICAgICAgICBzdGFydE9mUXVldWUgPSAwOworICAgICAgICAgICAgZW5kT2ZRdWV1ZSA9
IDA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBRVGVzdDo6cVdhaXQoZXZlbnRRdWVb
c3RhcnRPZlF1ZXVlXS5tX2RlbGF5KTsKKyAgICAgICAgICAgIGV2ZW50UXVlW3N0YXJ0T2ZRdWV1
ZV0ubV9kZWxheSA9IDA7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFmbHVzaCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgLy8gU2VuZCBhIG1hcmtlciBldmVudAorICAgIFFFdmVudCogZHJ0
RXZlbnQgPSBuZXcgUUV2ZW50KChRRXZlbnQ6OlR5cGUpRFJUX01FU1NBR0VfRE9ORSk7CisgICAg
UUFwcGxpY2F0aW9uOjpwb3N0RXZlbnQobV9wYWdlLT52aWV3KCksIGRydEV2ZW50KTsKKyAgICBt
X3dhaXRpbmdGb3JFdmVudHMgPSB0cnVlOworICAgIHdoaWxlIChtX3dhaXRpbmdGb3JFdmVudHMp
CisgICAgICAgIFFUZXN0OjpxV2FpdCg1MCk7Cit9CisKK2Jvb2wgRXZlbnRTZW5kZXI6OmV2ZW50
RmlsdGVyKFFPYmplY3QqIHdhdGNoZWQsIFFFdmVudCogZXZlbnQpCit7CisgICAgaWYgKHdhdGNo
ZWQgIT0gbV9wYWdlLT52aWV3KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBzd2l0Y2gg
KGV2ZW50LT50eXBlKCkpIHsKKyAgICBjYXNlIFFFdmVudDo6TW91c2VCdXR0b25QcmVzczoKKyAg
ICAgICAgbV9tb3VzZUJ1dHRvbkRvd24gPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFFFdmVudDo6TW91c2VNb3ZlOgorICAgICAgICBpZiAobV9tb3VzZUJ1dHRvbkRvd24pCisgICAg
ICAgICAgICBtX2RyYWcgPSB0cnVlOworI2lmZGVmIFRFU1RfRFJBR19BTkRfRFJPUAorICAgICAg
ICBRQ3Vyc29yOjpzZXRQb3MobV9wYWdlLT52aWV3KCktPm1hcFRvR2xvYmFsKHN0YXRpY19jYXN0
PFFNb3VzZUV2ZW50Kj4oZXZlbnQpLT5wb3MoKSkpOworI2VuZGlmCisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUUV2ZW50OjpNb3VzZUJ1dHRvblJlbGVhc2U6CisgICAgICAgIG1fbW91c2VCdXR0
b25Eb3duID0gZmFsc2U7CisgICAgICAgIG1fZHJhZyA9IGZhbHNlOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIERSVF9NRVNTQUdFX0RPTkU6CisgICAgICAgIG1fd2FpdGluZ0ZvckV2ZW50cyA9
IGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRXZlbnRTZW5kZXJRdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVyUXQu
aAkocmV2aXNpb24gNTIyMTMpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9FdmVu
dFNlbmRlclF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAKICAgICBRX09CSkVD
VAogcHVibGljOgogICAgIEV2ZW50U2VuZGVyKFFXZWJQYWdlKiBwYXJlbnQpOworICAgIHZpcnR1
YWwgYm9vbCBldmVudEZpbHRlcihRT2JqZWN0KiB3YXRjaGVkLCBRRXZlbnQqIGV2ZW50KTsKIAog
cHVibGljIHNsb3RzOgogICAgIHZvaWQgbW91c2VEb3duKGludCBidXR0b24gPSAwKTsKQEAgLTY5
LDEwICs3MCwxNSBAQAogCiBwcml2YXRlOgogICAgIHZvaWQgc2VuZFRvdWNoRXZlbnQoUUV2ZW50
OjpUeXBlKTsKKyAgICB2b2lkIHNlbmRPclF1ZUV2ZW50KFFFdmVudCopOworICAgIHZvaWQgcmVw
bGF5U2F2ZWRFdmVudHMoYm9vbCBmbHVzaCk7CiAgICAgUVBvaW50IG1fbW91c2VQb3M7CiAgICAg
UXQ6Ok1vdXNlQnV0dG9ucyBtX21vdXNlQnV0dG9uczsKICAgICBRV2ViUGFnZSogbV9wYWdlOwog
ICAgIGludCBtX3RpbWVMZWFwOworICAgIGJvb2wgbV93YWl0aW5nRm9yRXZlbnRzOworICAgIGJv
b2wgbV9tb3VzZUJ1dHRvbkRvd247CisgICAgYm9vbCBtX2RyYWc7CiAgICAgUVdlYkZyYW1lKiBm
cmFtZVVuZGVyTW91c2UoKSBjb25zdDsKICNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hF
Q0soNCwgNiwgMCkKICAgICBRTGlzdDxRVG91Y2hFdmVudDo6VG91Y2hQb2ludD4gbV90b3VjaFBv
aW50czsKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRU
b29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUyNjAyKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMDktMTItMjggIFlhZWwgQWhhcm9u
ICA8eWFlbC5haGFyb25Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtRdF0gRmFpbGluZyBEcmFnLWFuZC1kcm9wIHRlc3RzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTMzMgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWUucHJvOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVyUXQuY3BwOgorICAgICAgICAoRXZlbnRTZW5kZXI6
OkV2ZW50U2VuZGVyKToKKyAgICAgICAgKEV2ZW50U2VuZGVyOjptb3VzZURvd24pOgorICAgICAg
ICAoRXZlbnRTZW5kZXI6Om1vdXNlVXApOgorICAgICAgICAoRXZlbnRTZW5kZXI6Om1vdXNlTW92
ZVRvKToKKyAgICAgICAgKEV2ZW50U2VuZGVyOjpsZWFwRm9yd2FyZCk6CisgICAgICAgIChFdmVu
dFNlbmRlcjo6c2VuZE9yUXVlRXZlbnQpOgorICAgICAgICAoRXZlbnRTZW5kZXI6OnJlcGxheVNh
dmVkRXZlbnRzKToKKyAgICAgICAgKEV2ZW50U2VuZGVyOjpldmVudEZpbHRlcik6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvcXQvRXZlbnRTZW5kZXJRdC5oOgorCiAyMDA5LTEyLTI4ICBMYXN6
bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBBZGFtIEJhcnRoLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45667</attachid>
            <date>2009-12-30 09:18:08 -0800</date>
            <delta_ts>2013-04-16 02:44:04 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>31332.patch</filename>
            <type>text/plain</type>
            <size>15810</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwCShyZXZpc2lv
biA1MjYwNikKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiRHJhZ0NsaWVudFF0Lmgi
CiAKICNpbmNsdWRlICJDbGlwYm9hcmRRdC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAicXdlYnBhZ2UuaCIKIAogI2luY2x1
ZGUgPFFEcmFnPgpAQCAtMzUsNiArMzcsMzIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitz
dGF0aWMgaW5saW5lIFF0OjpEcm9wQWN0aW9ucyBkcmFnT3BUb0Ryb3BBY3Rpb25zKHVuc2lnbmVk
IG9wKQoreworICAgIFF0OjpEcm9wQWN0aW9ucyByZXN1bHQgPSBRdDo6SWdub3JlQWN0aW9uOwor
ICAgIGlmIChvcCAmIERyYWdPcGVyYXRpb25Db3B5KQorICAgICAgICByZXN1bHQgPSBRdDo6Q29w
eUFjdGlvbjsKKyAgICBpZiAob3AgJiBEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICAgICAgcmVzdWx0
IHw9IFF0OjpNb3ZlQWN0aW9uOworICAgIGlmIChvcCAmIERyYWdPcGVyYXRpb25HZW5lcmljKQor
ICAgICAgICByZXN1bHQgfD0gUXQ6Ok1vdmVBY3Rpb247CisgICAgaWYgKG9wICYgRHJhZ09wZXJh
dGlvbkxpbmspCisgICAgICAgIHJlc3VsdCB8PSBRdDo6TGlua0FjdGlvbjsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitzdGF0aWMgaW5saW5lIERyYWdPcGVyYXRpb24gZHJvcEFjdGlvblRvRHJh
Z09wKFF0OjpEcm9wQWN0aW9ucyBhY3Rpb24pCit7CisgICAgRHJhZ09wZXJhdGlvbiByZXN1bHQg
PSBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBpZiAoYWN0aW9uICYgUXQ6OkNvcHlBY3Rpb24pCisg
ICAgICAgIHJlc3VsdCA9IERyYWdPcGVyYXRpb25Db3B5OworICAgIGlmIChhY3Rpb24gJiBRdDo6
TGlua0FjdGlvbikKKyAgICAgICAgcmVzdWx0ID0gRHJhZ09wZXJhdGlvbkxpbms7CisgICAgaWYg
KGFjdGlvbiAmIFF0OjpNb3ZlQWN0aW9uKQorICAgICAgICByZXN1bHQgPSBEcmFnT3BlcmF0aW9u
TW92ZTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBEcmFnRGVzdGluYXRpb25BY3Rpb24gRHJh
Z0NsaWVudFF0OjphY3Rpb25NYXNrRm9yRHJhZyhEcmFnRGF0YSopCiB7CiAgICAgcmV0dXJuIERy
YWdEZXN0aW5hdGlvbkFjdGlvbkFueTsKQEAgLTU4LDcgKzg2LDcgQEAKIHsKIH0KIAotdm9pZCBE
cmFnQ2xpZW50UXQ6OnN0YXJ0RHJhZyhEcmFnSW1hZ2VSZWYsIGNvbnN0IEludFBvaW50JiwgY29u
c3QgSW50UG9pbnQmLCBDbGlwYm9hcmQqIGNsaXBib2FyZCwgRnJhbWUqLCBib29sKQordm9pZCBE
cmFnQ2xpZW50UXQ6OnN0YXJ0RHJhZyhEcmFnSW1hZ2VSZWYsIGNvbnN0IEludFBvaW50JiwgY29u
c3QgSW50UG9pbnQmLCBDbGlwYm9hcmQqIGNsaXBib2FyZCwgRnJhbWUqIGZyYW1lLCBib29sKQog
ewogI2lmbmRlZiBRVF9OT19EUkFHQU5ERFJPUAogICAgIFFNaW1lRGF0YSogY2xpcGJvYXJkRGF0
YSA9IHN0YXRpY19jYXN0PENsaXBib2FyZFF0Kj4oY2xpcGJvYXJkKS0+Y2xpcGJvYXJkRGF0YSgp
OwpAQCAtNjYsMTAgKzk0LDE2IEBACiAgICAgUVdpZGdldCogdmlldyA9IG1fd2ViUGFnZS0+dmll
dygpOwogICAgIGlmICh2aWV3KSB7CiAgICAgICAgIFFEcmFnICpkcmFnID0gbmV3IFFEcmFnKHZp
ZXcpOwotICAgICAgICBpZiAoY2xpcGJvYXJkRGF0YS0+aGFzSW1hZ2UoKSkKKyAgICAgICAgaWYg
KGNsaXBib2FyZERhdGEgJiYgY2xpcGJvYXJkRGF0YS0+aGFzSW1hZ2UoKSkKICAgICAgICAgICAg
IGRyYWctPnNldFBpeG1hcChxdmFyaWFudF9jYXN0PFFQaXhtYXA+KGNsaXBib2FyZERhdGEtPmlt
YWdlRGF0YSgpKSk7CisgICAgICAgIERyYWdPcGVyYXRpb24gZHJhZ09wZXJhdGlvbk1hc2sgPSBE
cmFnT3BlcmF0aW9uRXZlcnk7CisgICAgICAgIGNsaXBib2FyZC0+c291cmNlT3BlcmF0aW9uKGRy
YWdPcGVyYXRpb25NYXNrKTsKICAgICAgICAgZHJhZy0+c2V0TWltZURhdGEoY2xpcGJvYXJkRGF0
YSk7Ci0gICAgICAgIGRyYWctPnN0YXJ0KCk7CisgICAgICAgIFF0OjpEcm9wQWN0aW9uIGFjdHVh
bERyb3BBY3Rpb24gPSBkcmFnLT5leGVjKGRyYWdPcFRvRHJvcEFjdGlvbnMoZHJhZ09wZXJhdGlv
bk1hc2spKTsKKworICAgICAgICAvLyBTZW5kIGRyYWdFbmQgZXZlbnQKKyAgICAgICAgUGxhdGZv
cm1Nb3VzZUV2ZW50IG1lKG1fd2ViUGFnZS0+dmlldygpLT5tYXBGcm9tR2xvYmFsKFFDdXJzb3I6
OnBvcygpKSwgUUN1cnNvcjo6cG9zKCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwgMCwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDApOworICAgICAgICBmcmFtZS0+ZXZlbnRIYW5k
bGVyKCktPmRyYWdTb3VyY2VFbmRlZEF0KG1lLCBkcm9wQWN0aW9uVG9EcmFnT3AoYWN0dWFsRHJv
cEFjdGlvbikpOwogICAgIH0KICNlbmRpZgogfQpJbmRleDogV2ViS2l0L3F0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MjY2MykKKysrIFdl
YktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAwOS0x
Mi0zMCAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBGYWlsaW5nIERyYWctYW5k
LWRyb3AgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMxMzMyCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoZHJvcEFj
dGlvblRvRHJhZ09wKToKKyAgICAgICAgKGRyYWdPcFRvRHJvcEFjdGlvbik6CisgICAgICAgIChR
V2ViUGFnZVByaXZhdGU6OmRyYWdFbnRlckV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0
ZTo6ZHJhZ01vdmVFdmVudCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmRyb3BFdmVudCk6
CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
cmFnQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhZ09wVG9Ecm9wQWN0aW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpkcm9wQWN0aW9uVG9EcmFnT3ApOgorICAgICAgICAoV2ViQ29y
ZTo6RHJhZ0NsaWVudFF0OjpzdGFydERyYWcpOgorCiAyMDA5LTEyLTMwICBMYXN6bG8gR29tYm9z
ICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1v
biBIYXVzbWFubi4KSW5kZXg6IFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCShyZXZpc2lvbiA1MjYwNikKKysrIFdlYktp
dC9xdC9BcGkvcXdlYnBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDUsNyArMzQ1LDcgQEAK
ICAgICBpZiAoYWN0aW9ucyAmIFF0OjpDb3B5QWN0aW9uKQogICAgICAgICByZXN1bHQgfD0gRHJh
Z09wZXJhdGlvbkNvcHk7CiAgICAgaWYgKGFjdGlvbnMgJiBRdDo6TW92ZUFjdGlvbikKLSAgICAg
ICAgcmVzdWx0IHw9IERyYWdPcGVyYXRpb25Nb3ZlOworICAgICAgICByZXN1bHQgfD0gKERyYWdP
cGVyYXRpb25Nb3ZlIHwgRHJhZ09wZXJhdGlvbkdlbmVyaWMpOwogICAgIGlmIChhY3Rpb25zICYg
UXQ6OkxpbmtBY3Rpb24pCiAgICAgICAgIHJlc3VsdCB8PSBEcmFnT3BlcmF0aW9uTGluazsKICAg
ICByZXR1cm4gKERyYWdPcGVyYXRpb24pcmVzdWx0OwpAQCAtMzU4LDYgKzM1OCw4IEBACiAgICAg
ICAgIHJlc3VsdCA9IFF0OjpDb3B5QWN0aW9uOwogICAgIGVsc2UgaWYgKGFjdGlvbnMgJiBEcmFn
T3BlcmF0aW9uTW92ZSkKICAgICAgICAgcmVzdWx0ID0gUXQ6Ok1vdmVBY3Rpb247CisgICAgZWxz
ZSBpZiAoYWN0aW9ucyAmIERyYWdPcGVyYXRpb25HZW5lcmljKQorICAgICAgICByZXN1bHQgPSBR
dDo6TW92ZUFjdGlvbjsKICAgICBlbHNlIGlmIChhY3Rpb25zICYgRHJhZ09wZXJhdGlvbkxpbmsp
CiAgICAgICAgIHJlc3VsdCA9IFF0OjpMaW5rQWN0aW9uOwogICAgIHJldHVybiByZXN1bHQ7CkBA
IC0xMDkxLDggKzEwOTMsOSBAQAogICAgICAgICAgICAgICAgICAgICAgIGRyb3BBY3Rpb25Ub0Ry
YWdPcChldi0+cG9zc2libGVBY3Rpb25zKCkpKTsKICAgICBRdDo6RHJvcEFjdGlvbiBhY3Rpb24g
PSBkcmFnT3BUb0Ryb3BBY3Rpb24ocGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+ZHJhZ0VudGVyZWQo
JmRyYWdEYXRhKSk7CiAgICAgZXYtPnNldERyb3BBY3Rpb24oYWN0aW9uKTsKLSAgICBpZiAoYWN0
aW9uICE9IFF0OjpJZ25vcmVBY3Rpb24pCi0gICAgICAgIGV2LT5hY2NlcHQoKTsKKyAgICAvLyBX
ZSBtdXN0IGFjY2VwdCB0aGlzIGV2ZW50IGluIG9yZGVyIHRvIHJlY2VpdmUgdGhlIGRyYWcgbW92
ZSBldmVudHMgdGhhdCBhcmUgc2VudAorICAgIC8vIHdoaWxlIHRoZSBkcmFnIGFuZCBkcm9wIGFj
dGlvbiBpcyBpbiBwcm9ncmVzcy4KKyAgICBldi0+YWNjZXB0KCk7CiAjZW5kaWYKIH0KIApAQCAt
MTEzMiw5ICsxMTM1LDExIEBACiAgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZXYtPm1pbWVEYXRhKCks
IGV2LT5wb3MoKSwgUUN1cnNvcjo6cG9zKCksCiAgICAgICAgICAgICAgICAgICAgICAgZHJvcEFj
dGlvblRvRHJhZ09wKGV2LT5wb3NzaWJsZUFjdGlvbnMoKSkpOwogICAgIFF0OjpEcm9wQWN0aW9u
IGFjdGlvbiA9IGRyYWdPcFRvRHJvcEFjdGlvbihwYWdlLT5kcmFnQ29udHJvbGxlcigpLT5kcmFn
VXBkYXRlZCgmZHJhZ0RhdGEpKTsKKyAgICBtX2xhc3REcm9wQWN0aW9uID0gYWN0aW9uOwogICAg
IGV2LT5zZXREcm9wQWN0aW9uKGFjdGlvbik7Ci0gICAgaWYgKGFjdGlvbiAhPSBRdDo6SWdub3Jl
QWN0aW9uKQotICAgICAgICBldi0+YWNjZXB0KCk7CisgICAgLy8gV2UgbXVzdCBhY2NlcHQgdGhp
cyBldmVudCBpbiBvcmRlciB0byByZWNlaXZlIHRoZSBkcmFnIG1vdmUgZXZlbnRzIHRoYXQgYXJl
IHNlbnQKKyAgICAvLyB3aGlsZSB0aGUgZHJhZyBhbmQgZHJvcCBhY3Rpb24gaXMgaW4gcHJvZ3Jl
c3MuCisgICAgZXYtPmFjY2VwdCgpOwogI2VuZGlmCiB9CiAKQEAgLTExNDMsOCArMTE0OCw3IEBA
CiAjaWZuZGVmIFFUX05PX0RSQUdBTkREUk9QCiAgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZXYtPm1p
bWVEYXRhKCksIGV2LT5wb3MoKS50b1BvaW50KCksCiAgICAgICAgICAgICBRQ3Vyc29yOjpwb3Mo
KSwgZHJvcEFjdGlvblRvRHJhZ09wKGV2LT5wb3NzaWJsZUFjdGlvbnMoKSkpOwotICAgIFF0OjpE
cm9wQWN0aW9uIGFjdGlvbiA9IGRyYWdPcFRvRHJvcEFjdGlvbihwYWdlLT5kcmFnQ29udHJvbGxl
cigpLT5wZXJmb3JtRHJhZygmZHJhZ0RhdGEpKTsKLSAgICBpZiAoYWN0aW9uICE9IFF0OjpJZ25v
cmVBY3Rpb24pCisgICAgaWYgKHBhZ2UtPmRyYWdDb250cm9sbGVyKCktPnBlcmZvcm1EcmFnKCZk
cmFnRGF0YSkpCiAgICAgICAgIGV2LT5hY2NlcHQoKTsKICNlbmRpZgogfQpAQCAtMTE1MiwxMCAr
MTE1NiwxMSBAQAogdm9pZCBRV2ViUGFnZVByaXZhdGU6OmRyb3BFdmVudChRRHJvcEV2ZW50KiBl
dikKIHsKICNpZm5kZWYgUVRfTk9fRFJBR0FORERST1AKKyAgICAvLyBPdmVyd3JpdGUgdGhlIGRl
ZmF1bHRzIHNldCBieVFEcmFnTWFuYWdlcjo6ZGVmYXVsdEFjdGlvbigpCisgICAgZXYtPnNldERy
b3BBY3Rpb24obV9sYXN0RHJvcEFjdGlvbik7CiAgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZXYtPm1p
bWVEYXRhKCksIGV2LT5wb3MoKSwgUUN1cnNvcjo6cG9zKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgZHJvcEFjdGlvblRvRHJhZ09wKGV2LT5wb3NzaWJsZUFjdGlvbnMoKSkpOwotICAgIFF0OjpE
cm9wQWN0aW9uIGFjdGlvbiA9IGRyYWdPcFRvRHJvcEFjdGlvbihwYWdlLT5kcmFnQ29udHJvbGxl
cigpLT5wZXJmb3JtRHJhZygmZHJhZ0RhdGEpKTsKLSAgICBpZiAoYWN0aW9uICE9IFF0OjpJZ25v
cmVBY3Rpb24pCisgICAgICAgICAgICAgICAgICAgICAgZHJvcEFjdGlvblRvRHJhZ09wKFF0OjpE
cm9wQWN0aW9uKGV2LT5kcm9wQWN0aW9uKCkpKSk7CisgICAgaWYgKHBhZ2UtPmRyYWdDb250cm9s
bGVyKCktPnBlcmZvcm1EcmFnKCZkcmFnRGF0YSkpCiAgICAgICAgIGV2LT5hY2NlcHQoKTsKICNl
bmRpZgogfQpJbmRleDogV2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmgJKHJldmlzaW9uIDUyNjA2KQorKysgV2ViS2l0L3F0
L0FwaS9xd2VicGFnZV9wLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4MCw2ICsxODAsNyBAQAogICAg
IFFXaWRnZXQqIGluc3BlY3RvckZyb250ZW5kOwogICAgIFFXZWJJbnNwZWN0b3IqIGluc3BlY3Rv
cjsKICAgICBib29sIGluc3BlY3RvcklzSW50ZXJuYWxPbmx5OyAvLyBUcnVlIGlmIGNyZWF0ZWQg
dGhyb3VnaCB0aGUgSW5zcGVjdCBjb250ZXh0IG1lbnUgYWN0aW9uCisgICAgUXQ6OkRyb3BBY3Rp
b24gbV9sYXN0RHJvcEFjdGlvbjsKIAogICAgIHN0YXRpYyBib29sIGRydFJ1bjsKIH07CkluZGV4
OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2
aXNpb24gNTI2NjMpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEzIEBACisyMDA5LTEyLTMwICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRd
IEZhaWxpbmcgRHJhZy1hbmQtZHJvcCB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzEzMzIKKworICAgICAgICAqIHBhZ2UvcXQvRHJhZ0NvbnRy
b2xsZXJRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y2xlYW51cEFm
dGVyU3lzdGVtRHJhZyk6CisKIDIwMDktMTItMzAgIExhc3psbyBHb21ib3MgIDxsYXN6bG8uMS5n
b21ib3NAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpJ
bmRleDogV2ViQ29yZS9wYWdlL3F0L0RyYWdDb250cm9sbGVyUXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9xdC9EcmFnQ29udHJvbGxlclF0LmNwcAkocmV2aXNpb24gNTI2MDYpCisr
KyBXZWJDb3JlL3BhZ2UvcXQvRHJhZ0NvbnRyb2xsZXJRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY2LDYgKzY2LDcgQEAKIAogdm9pZCBEcmFnQ29udHJvbGxlcjo6Y2xlYW51cEFmdGVyU3lzdGVt
RHJhZygpCiB7CisgICAgZHJhZ0VuZGVkKCk7CiB9CiAKIH0KSW5kZXg6IFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlLnBybwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5wcm8JKHJldmlzaW9uIDUyNjA2
KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWUucHJvCSh3
b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBACiBDT05GSUcgKz0gbGlua19wa2djb25maWcK
IFBLR0NPTkZJRyArPSBmb250Y29uZmlnCiAKLVFUID0gY29yZSBndWkgbmV0d29yaworUVQgPSBj
b3JlIGd1aSBuZXR3b3JrIHRlc3RsaWIKIG1hY3g6IFFUICs9IHhtbAogCiBIRUFERVJTID0gJCRC
QVNFRElSL1dvcmtRdWV1ZS5oIFwKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L0V2ZW50U2VuZGVyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L0V2ZW50U2VuZGVyUXQuY3BwCShyZXZpc2lvbiA1MjYwNikKKysrIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw2ICszMSw5IEBACiAKIC8vI2luY2x1ZGUgPFF0RGVidWc+CiAKKyNpbmNsdWRlIDxRRHJhZz4K
KyNpbmNsdWRlIDxRdFRlc3QvUXRUZXN0PgorCiAjZGVmaW5lIEtFWUNPREVfREVMICAgICAgICAg
MTI3CiAjZGVmaW5lIEtFWUNPREVfQkFDS1NQQUNFICAgOAogI2RlZmluZSBLRVlDT0RFX0xFRlRB
UlJPVyAgIDB4ZjcwMgpAQCAtMzgsMTEgKzQxLDI4IEBACiAjZGVmaW5lIEtFWUNPREVfVVBBUlJP
VyAgICAgMHhmNzAwCiAjZGVmaW5lIEtFWUNPREVfRE9XTkFSUk9XICAgMHhmNzAxCiAKKyNkZWZp
bmUgRFJUX01FU1NBR0VfRE9ORSAoUUV2ZW50OjpVc2VyICsgMSkKIAorc3RydWN0IERSVEV2ZW50
UXVlIHsKKyAgICBRRXZlbnQqIG1fZXZlbnQ7CisgICAgaW50IG1fZGVsYXk7Cit9OworCitzdGF0
aWMgRFJURXZlbnRRdWUgZXZlbnRRdWVbMTAyNF07CitzdGF0aWMgdW5zaWduZWQgZW5kT2ZRdWV1
ZTsKK3N0YXRpYyB1bnNpZ25lZCBzdGFydE9mUXVldWU7CisKIEV2ZW50U2VuZGVyOjpFdmVudFNl
bmRlcihRV2ViUGFnZSogcGFyZW50KQogICAgIDogUU9iamVjdChwYXJlbnQpCiB7CiAgICAgbV9w
YWdlID0gcGFyZW50OworICAgIG1fbW91c2VCdXR0b25Eb3duID0gZmFsc2U7CisgICAgbV9kcmFn
ID0gZmFsc2U7CisgICAgbWVtc2V0KGV2ZW50UXVlLCAwLCBzaXplb2YoZXZlbnRRdWUpKTsKKyAg
ICBlbmRPZlF1ZXVlID0gMDsKKyAgICBzdGFydE9mUXVldWUgPSAwOworICAgIG1fZXZlbnRMb29w
ID0gMDsKKyAgICBtX3BhZ2UtPnZpZXcoKS0+aW5zdGFsbEV2ZW50RmlsdGVyKHRoaXMpOwogfQog
CiB2b2lkIEV2ZW50U2VuZGVyOjptb3VzZURvd24oaW50IGJ1dHRvbikKQEAgLTcwLDggKzkwLDgg
QEAKICAgICBtX21vdXNlQnV0dG9ucyB8PSBtb3VzZUJ1dHRvbjsKIAogLy8gICAgIHFEZWJ1Zygp
IDw8ICJFdmVudFNlbmRlcjo6bW91c2VEb3duIiA8PCBmcmFtZTsKLSAgICBRTW91c2VFdmVudCBl
dmVudChRRXZlbnQ6Ok1vdXNlQnV0dG9uUHJlc3MsIG1fbW91c2VQb3MsIG1fbW91c2VQb3MsIG1v
dXNlQnV0dG9uLCBtX21vdXNlQnV0dG9ucywgUXQ6Ok5vTW9kaWZpZXIpOwotICAgIFFBcHBsaWNh
dGlvbjo6c2VuZEV2ZW50KG1fcGFnZSwgJmV2ZW50KTsKKyAgICBRTW91c2VFdmVudCogZXZlbnQg
PSBuZXcgUU1vdXNlRXZlbnQoUUV2ZW50OjpNb3VzZUJ1dHRvblByZXNzLCBtX21vdXNlUG9zLCBt
X21vdXNlUG9zLCBtb3VzZUJ1dHRvbiwgbV9tb3VzZUJ1dHRvbnMsIFF0OjpOb01vZGlmaWVyKTsK
KyAgICBzZW5kT3JRdWVFdmVudChldmVudCk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXI6Om1vdXNl
VXAoaW50IGJ1dHRvbikKQEAgLTk5LDIxICsxMTksMjEgQEAKICAgICBtX21vdXNlQnV0dG9ucyAm
PSB+bW91c2VCdXR0b247CiAKIC8vICAgICBxRGVidWcoKSA8PCAiRXZlbnRTZW5kZXI6Om1vdXNl
VXAiIDw8IGZyYW1lOwotICAgIFFNb3VzZUV2ZW50IGV2ZW50KFFFdmVudDo6TW91c2VCdXR0b25S
ZWxlYXNlLCBtX21vdXNlUG9zLCBtX21vdXNlUG9zLCBtb3VzZUJ1dHRvbiwgbV9tb3VzZUJ1dHRv
bnMsIFF0OjpOb01vZGlmaWVyKTsKLSAgICBRQXBwbGljYXRpb246OnNlbmRFdmVudChtX3BhZ2Us
ICZldmVudCk7CisgICAgUU1vdXNlRXZlbnQqIGV2ZW50ID0gbmV3IFFNb3VzZUV2ZW50KFFFdmVu
dDo6TW91c2VCdXR0b25SZWxlYXNlLCBtX21vdXNlUG9zLCBtX21vdXNlUG9zLCBtb3VzZUJ1dHRv
biwgbV9tb3VzZUJ1dHRvbnMsIFF0OjpOb01vZGlmaWVyKTsKKyAgICBzZW5kT3JRdWVFdmVudChl
dmVudCk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXI6Om1vdXNlTW92ZVRvKGludCB4LCBpbnQgeSkK
IHsKIC8vICAgICBxRGVidWcoKSA8PCAiRXZlbnRTZW5kZXI6Om1vdXNlTW92ZVRvIiA8PCB4IDw8
IHk7CiAgICAgbV9tb3VzZVBvcyA9IFFQb2ludCh4LCB5KTsKLSAgICBRTW91c2VFdmVudCBldmVu
dChRRXZlbnQ6Ok1vdXNlTW92ZSwgbV9tb3VzZVBvcywgbV9tb3VzZVBvcywgUXQ6Ok5vQnV0dG9u
LCBtX21vdXNlQnV0dG9ucywgUXQ6Ok5vTW9kaWZpZXIpOwotICAgIFFBcHBsaWNhdGlvbjo6c2Vu
ZEV2ZW50KG1fcGFnZSwgJmV2ZW50KTsKKyAgICBRTW91c2VFdmVudCogZXZlbnQgPSBuZXcgUU1v
dXNlRXZlbnQoUUV2ZW50OjpNb3VzZU1vdmUsIG1fbW91c2VQb3MsIG1fbW91c2VQb3MsIFF0OjpO
b0J1dHRvbiwgbV9tb3VzZUJ1dHRvbnMsIFF0OjpOb01vZGlmaWVyKTsKKyAgICBzZW5kT3JRdWVF
dmVudChldmVudCk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXI6OmxlYXBGb3J3YXJkKGludCBtcykK
IHsKLSAgICBtX3RpbWVMZWFwICs9IG1zOworICAgIGV2ZW50UXVlW2VuZE9mUXVldWVdLm1fZGVs
YXkgPSBtczsKICAgICAvL3FEZWJ1ZygpIDw8ICJFdmVudFNlbmRlcjo6bGVhcEZvcndhcmQiIDw8
IG1zOwogfQogCkBAIC0zNzMsMyArMzkzLDczIEBACiAgICAgICAgIHJldHVybiBmcmFtZTsKICAg
ICByZXR1cm4gMDsKIH0KKwordm9pZCBFdmVudFNlbmRlcjo6c2VuZE9yUXVlRXZlbnQoUUV2ZW50
KiBldikKK3sKKyAgICBpZiAoZW5kT2ZRdWV1ZSA9PSBzdGFydE9mUXVldWUgJiYgIWV2ZW50UXVl
W2VuZE9mUXVldWVdLm1fZGVsYXkgJiYgIW1fbW91c2VCdXR0b25Eb3duKSB7CisgICAgICAgIFFB
cHBsaWNhdGlvbjo6c2VuZEV2ZW50KG1fcGFnZS0+dmlldygpLCBldik7CisgICAgICAgIGRlbGV0
ZSBldjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBldmVudFF1ZVtlbmRPZlF1ZXVlKytd
Lm1fZXZlbnQgPSBldjsKKyAgICBldmVudFF1ZVtlbmRPZlF1ZXVlXS5tX2RlbGF5ID0gMDsKKyAg
ICByZXBsYXlTYXZlZEV2ZW50cyhldi0+dHlwZSgpID09IFFFdmVudDo6TW91c2VCdXR0b25SZWxl
YXNlKTsKK30KKwordm9pZCBFdmVudFNlbmRlcjo6cmVwbGF5U2F2ZWRFdmVudHMoYm9vbCBmbHVz
aCkKK3sKKyAgICBpZiAoc3RhcnRPZlF1ZXVlIDwgZW5kT2ZRdWV1ZSkgeworICAgICAgICAvLyBG
aXJzdCBzZW5kIGFsbCB0aGUgZXZlbnRzIHRoYXQgYXJlIHJlYWR5IHRvIGJlIHNlbnQKKyAgICAg
ICAgd2hpbGUgKCFldmVudFF1ZVtzdGFydE9mUXVldWVdLm1fZGVsYXkgJiYgc3RhcnRPZlF1ZXVl
IDwgZW5kT2ZRdWV1ZSkgeworICAgICAgICAgICAgUUV2ZW50KiBldiA9IGV2ZW50UXVlW3N0YXJ0
T2ZRdWV1ZSsrXS5tX2V2ZW50OworICAgICAgICAgICAgUUFwcGxpY2F0aW9uOjpwb3N0RXZlbnQo
bV9wYWdlLT52aWV3KCksIGV2KTsgLy8gZXYgZGVsZXRlZCBieSB0aGUgc3lzdGVtCisgICAgICAg
IH0KKworICAgICAgICBpZiAoc3RhcnRPZlF1ZXVlID09IGVuZE9mUXVldWUpIHsKKyAgICAgICAg
ICAgIC8vIFJlc2V0IHRoZSBxdWV1ZQorICAgICAgICAgICAgc3RhcnRPZlF1ZXVlID0gMDsKKyAg
ICAgICAgICAgIGVuZE9mUXVldWUgPSAwOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
UVRlc3Q6OnFXYWl0KGV2ZW50UXVlW3N0YXJ0T2ZRdWV1ZV0ubV9kZWxheSk7CisgICAgICAgICAg
ICBldmVudFF1ZVtzdGFydE9mUXVldWVdLm1fZGVsYXkgPSAwOworICAgICAgICB9CisgICAgfQor
ICAgIGlmICghZmx1c2gpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFNlbmQgYSBtYXJrZXIg
ZXZlbnQsIGl0IHdpbGwgdGVsbCB1cyB3aGVuIGl0IGlzIHNhZmUgdG8gZXhpdCB0aGUgbmV3IGV2
ZW50IGxvb3AKKyAgICBRRXZlbnQqIGRydEV2ZW50ID0gbmV3IFFFdmVudCgoUUV2ZW50OjpUeXBl
KURSVF9NRVNTQUdFX0RPTkUpOworICAgIFFBcHBsaWNhdGlvbjo6cG9zdEV2ZW50KG1fcGFnZS0+
dmlldygpLCBkcnRFdmVudCk7CisKKyAgICAvLyBTdGFydCBhbiBldmVudCBsb29wIGZvciBhc3lu
YyBoYW5kbGluZyBvZiBEbkQKKyAgICBtX2V2ZW50TG9vcCA9IG5ldyBRRXZlbnRMb29wOworICAg
ICh2b2lkKSBtX2V2ZW50TG9vcC0+ZXhlYygpOworICAgIGRlbGV0ZSBtX2V2ZW50TG9vcDsKKyAg
ICBtX2V2ZW50TG9vcCA9IDA7Cit9CisKK2Jvb2wgRXZlbnRTZW5kZXI6OmV2ZW50RmlsdGVyKFFP
YmplY3QqIHdhdGNoZWQsIFFFdmVudCogZXZlbnQpCit7CisgICAgaWYgKHdhdGNoZWQgIT0gbV9w
YWdlLT52aWV3KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBzd2l0Y2ggKGV2ZW50LT50
eXBlKCkpIHsKKyAgICBjYXNlIFFFdmVudDo6TW91c2VCdXR0b25QcmVzczoKKyAgICAgICAgbV9t
b3VzZUJ1dHRvbkRvd24gPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFFFdmVudDo6
TW91c2VNb3ZlOgorICAgICAgICBpZiAobV9tb3VzZUJ1dHRvbkRvd24pCisgICAgICAgICAgICBt
X2RyYWcgPSB0cnVlOworI2lmZGVmIFRFU1RfRFJBR19BTkRfRFJPUAorICAgICAgICBRQ3Vyc29y
OjpzZXRQb3MobV9wYWdlLT52aWV3KCktPm1hcFRvR2xvYmFsKHN0YXRpY19jYXN0PFFNb3VzZUV2
ZW50Kj4oZXZlbnQpLT5wb3MoKSkpOworI2VuZGlmCisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UUV2ZW50OjpNb3VzZUJ1dHRvblJlbGVhc2U6CisgICAgICAgIG1fbW91c2VCdXR0b25Eb3duID0g
ZmFsc2U7CisgICAgICAgIG1fZHJhZyA9IGZhbHNlOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IERSVF9NRVNTQUdFX0RPTkU6CisgICAgICAgICAgICBtX2V2ZW50TG9vcC0+ZXhpdCgpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQpJbmRleDogV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5jcHAJ
KHJldmlzaW9uIDUyNjA2KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJl
bmRlclRyZWVRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNyw2ICszMTcsOSBAQAogICAgIG1f
bWFpblZpZXctPnJlc2l6ZShRU2l6ZShtYXhWaWV3V2lkdGgsIG1heFZpZXdIZWlnaHQpKTsKICAg
ICBtX3BhZ2UgPSBuZXcgV2ViUGFnZShtX21haW5WaWV3LCB0aGlzKTsKICAgICBtX21haW5WaWV3
LT5zZXRQYWdlKG1fcGFnZSk7CisjaWZkZWYgVEVTVF9EUkFHX0FORF9EUk9QCisgICAgbV9tYWlu
Vmlldy0+c2hvdygpOworI2VuZGlmCiAKICAgICAvLyBjcmVhdGUgb3V0IGNvbnRyb2xsZXJzLiBU
aGlzIGhhcyB0byBiZSBkb25lIGJlZm9yZSBjb25uZWN0RnJhbWUsCiAgICAgLy8gYXMgaXQgZXhw
b3J0cyB0aGVyZSB0byB0aGUgSmF2YVNjcmlwdCBET00gd2luZG93LgpJbmRleDogV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvRXZlbnRTZW5kZXJRdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVyUXQuaAkocmV2aXNpb24gNTI2MDYp
CisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9FdmVudFNlbmRlclF0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgPFFBcHBsaWNhdGlvbj4KICNp
bmNsdWRlIDxRRXZlbnQ+CisjaW5jbHVkZSA8UUV2ZW50TG9vcD4KICNpbmNsdWRlIDxRTW91c2VF
dmVudD4KICNpbmNsdWRlIDxRT2JqZWN0PgogI2luY2x1ZGUgPFFQb2ludD4KQEAgLTQ4LDYgKzQ5
LDcgQEAKICAgICBRX09CSkVDVAogcHVibGljOgogICAgIEV2ZW50U2VuZGVyKFFXZWJQYWdlKiBw
YXJlbnQpOworICAgIHZpcnR1YWwgYm9vbCBldmVudEZpbHRlcihRT2JqZWN0KiB3YXRjaGVkLCBR
RXZlbnQqIGV2ZW50KTsKIAogcHVibGljIHNsb3RzOgogICAgIHZvaWQgbW91c2VEb3duKGludCBi
dXR0b24gPSAwKTsKQEAgLTY5LDEwICs3MSwxNSBAQAogCiBwcml2YXRlOgogICAgIHZvaWQgc2Vu
ZFRvdWNoRXZlbnQoUUV2ZW50OjpUeXBlKTsKKyAgICB2b2lkIHNlbmRPclF1ZUV2ZW50KFFFdmVu
dCopOworICAgIHZvaWQgcmVwbGF5U2F2ZWRFdmVudHMoYm9vbCBmbHVzaCk7CiAgICAgUVBvaW50
IG1fbW91c2VQb3M7CiAgICAgUXQ6Ok1vdXNlQnV0dG9ucyBtX21vdXNlQnV0dG9uczsKICAgICBR
V2ViUGFnZSogbV9wYWdlOwogICAgIGludCBtX3RpbWVMZWFwOworICAgIGJvb2wgbV9tb3VzZUJ1
dHRvbkRvd247CisgICAgYm9vbCBtX2RyYWc7CisgICAgUUV2ZW50TG9vcCogbV9ldmVudExvb3A7
CiAgICAgUVdlYkZyYW1lKiBmcmFtZVVuZGVyTW91c2UoKSBjb25zdDsKICNpZiBRVF9WRVJTSU9O
ID49IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNiwgMCkKICAgICBRTGlzdDxRVG91Y2hFdmVudDo6VG91
Y2hQb2ludD4gbV90b3VjaFBvaW50czsKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUyNjYzKQorKysgV2Vi
S2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMDkt
MTItMzAgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gRmFpbGluZyBEcmFnLWFu
ZC1kcm9wIHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zMTMzMgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWUu
cHJvOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RHVtcFJlbmRlclRyZWU6OkR1bXBSZW5kZXJUcmVlKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9FdmVudFNlbmRlclF0LmNwcDoKKyAgICAgICAgKEV2ZW50
U2VuZGVyOjpFdmVudFNlbmRlcik6CisgICAgICAgIChFdmVudFNlbmRlcjo6bW91c2VEb3duKToK
KyAgICAgICAgKEV2ZW50U2VuZGVyOjptb3VzZVVwKToKKyAgICAgICAgKEV2ZW50U2VuZGVyOjpt
b3VzZU1vdmVUbyk6CisgICAgICAgIChFdmVudFNlbmRlcjo6bGVhcEZvcndhcmQpOgorICAgICAg
ICAoRXZlbnRTZW5kZXI6OnNlbmRPclF1ZUV2ZW50KToKKyAgICAgICAgKEV2ZW50U2VuZGVyOjpy
ZXBsYXlTYXZlZEV2ZW50cyk6CisgICAgICAgIChFdmVudFNlbmRlcjo6ZXZlbnRGaWx0ZXIpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVyUXQuaDoKKwogMjAwOS0xMi0z
MCAgSmFrdWIgV2llY3pvcmVrICA8ZmF3MjE3QGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBIYXVzbWFubi4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61167</attachid>
            <date>2010-07-10 15:59:00 -0700</date>
            <delta_ts>2013-04-16 02:44:10 -0700</delta_ts>
            <desc>Getting Mouse Release Events to QDrag</desc>
            <filename>0001-wip.patch</filename>
            <type>text/plain</type>
            <size>6147</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSBiOGU1MTU2YWFjNWNkZGMxOGZmNzI1NzU5Y2Q1MTU2YzRmNTM0MGZkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSG9nYW4gPHJvYmVydEB3ZWJraXQub3JnPgpEYXRl
OiBTYXQsIDEwIEp1bCAyMDEwIDE5OjQ0OjE3ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gd2lwCgot
LS0KIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwICAgICAgIHwgICAx
MCArKysrKysrKysrCiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmggICAg
ICAgICB8ICAgIDIgKysKIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVy
UXQuY3BwIHwgICAxOCArKysrKysrKysrKysrKysrLS0KIDMgZmlsZXMgY2hhbmdlZCwgMjggaW5z
ZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmNwcCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFn
Q2xpZW50UXQuY3BwCmluZGV4IDUyMjI5ZGMuLjI5ZjljMTkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwCisrKyBiL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwCkBAIC0yNyw5ICsyNywxMyBAQAogI2luY2x1ZGUgIkRy
YWdDbGllbnRRdC5oIgogCiAjaW5jbHVkZSAiQ2xpcGJvYXJkUXQuaCIKKyNpbmNsdWRlICJEcmFn
Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIkRyYWdEYXRhLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIK
KyNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5j
bHVkZSAicXdlYnBhZ2UuaCIKKyNpbmNsdWRlICJxd2VicGFnZV9wLmgiCiAKICNpbmNsdWRlIDxR
RHJhZz4KICNpbmNsdWRlIDxRTWltZURhdGE+CkBAIC0xMDAsNiArMTA0LDEyIEBAIHZvaWQgRHJh
Z0NsaWVudFF0OjpzdGFydERyYWcoRHJhZ0ltYWdlUmVmLCBjb25zdCBJbnRQb2ludCYsIGNvbnN0
IEludFBvaW50JiwgQ2xpCiAgICAgICAgIGRyYWctPnNldE1pbWVEYXRhKGNsaXBib2FyZERhdGEp
OwogICAgICAgICBRdDo6RHJvcEFjdGlvbiBhY3R1YWxEcm9wQWN0aW9uID0gZHJhZy0+ZXhlYyhk
cmFnT3BlcmF0aW9uc1RvRHJvcEFjdGlvbnMoZHJhZ09wZXJhdGlvbk1hc2spKTsKIAorICAgICAg
ICBpZiAoUVdlYlBhZ2VQcml2YXRlOjpkcnRSdW4pIHsKKyAgICAgICAgICAgICBEcmFnRGF0YSBk
cmFnRGF0YShkcmFnLT5taW1lRGF0YSgpLCBtX3dlYlBhZ2UtPnZpZXcoKS0+bWFwRnJvbUdsb2Jh
bChRQ3Vyc29yOjpwb3MoKSksIFFDdXJzb3I6OnBvcygpLCBkcm9wQWN0aW9uVG9EcmFnT3BlcmF0
aW9uKGFjdHVhbERyb3BBY3Rpb24pKTsKKyAgICAgICAgICAgICBmcmFtZS0+cGFnZSgpLT5kcmFn
Q29udHJvbGxlcigpLT5kcmFnRW50ZXJlZCgmZHJhZ0RhdGEpOworICAgICAgICAgICAgIGZyYW1l
LT5wYWdlKCktPmRyYWdDb250cm9sbGVyKCktPnBlcmZvcm1EcmFnKCZkcmFnRGF0YSk7CisgICAg
ICAgIH0KKwogICAgICAgICAvLyBTZW5kIGRyYWdFbmQgZXZlbnQKICAgICAgICAgUGxhdGZvcm1N
b3VzZUV2ZW50IG1lKG1fd2ViUGFnZS0+dmlldygpLT5tYXBGcm9tR2xvYmFsKFFDdXJzb3I6OnBv
cygpKSwgUUN1cnNvcjo6cG9zKCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwgMCwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDApOwogICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVy
KCktPmRyYWdTb3VyY2VFbmRlZEF0KG1lLCBkcm9wQWN0aW9uVG9EcmFnT3BlcmF0aW9uKGFjdHVh
bERyb3BBY3Rpb24pKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFn
Q2xpZW50UXQuaCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuaAppbmRl
eCA0YzgzMTkxLi5lZDMyZGZlIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RHJhZ0NsaWVudFF0LmgKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRR
dC5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJEcmFnQ2xpZW50LmgiCiBjbGFzcyBR
V2ViUGFnZTsKK2NsYXNzIFFEcmFnOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEcmFn
Q2xpZW50UXQgOiBwdWJsaWMgRHJhZ0NsaWVudCB7CkBAIC0zOCw2ICszOSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VB
Y3Rpb24sIGNvbnN0IEludFBvaW50JiwgQ2xpcGJvYXJkKik7ICAgIAogICAgIHZpcnR1YWwgdm9p
ZCBzdGFydERyYWcoRHJhZ0ltYWdlUmVmIGRyYWdJbWFnZSwgY29uc3QgSW50UG9pbnQmIGRyYWdJ
bWFnZU9yaWdpbiwgY29uc3QgSW50UG9pbnQmIGV2ZW50UG9zLCBDbGlwYm9hcmQqLCBGcmFtZSos
IGJvb2wgbGlua0RyYWcgPSBmYWxzZSk7CiAgICAgdmlydHVhbCBEcmFnSW1hZ2VSZWYgY3JlYXRl
RHJhZ0ltYWdlRm9yTGluayhLVVJMJiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgRnJhbWUqKTsKKwog
cHJpdmF0ZToKICAgICBRV2ViUGFnZSogbV93ZWJQYWdlOwogfTsKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVyUXQuY3BwIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvRXZlbnRTZW5kZXJRdC5jcHAKaW5kZXggMWU0OTViMS4uNjU1MzQ2
MyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRXZlbnRTZW5kZXJR
dC5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRXZlbnRTZW5kZXJRdC5j
cHAKQEAgLTUzNiwxNCArNTM2LDIwIEBAIHZvaWQgRXZlbnRTZW5kZXI6OnNlbmRPclF1ZXVlRXZl
bnQoUUV2ZW50KiBldmVudCkKICAgICAvLyAyLiBBIGRlbGF5IHdhcyBzZXQtdXAgYnkgbGVhcEZv
cndhcmQoKS4KICAgICAvLyAzLiBBIGNhbGwgdG8gbW91c2VNb3ZlVG8gd2hpbGUgdGhlIG1vdXNl
IGJ1dHRvbiBpcyBwcmVzc2VkIGNvdWxkIGluaXRpYXRlIGEgZHJhZyBvcGVyYXRpb24sIGFuZCB0
aGF0IGRvZXMgbm90IHJldHVybiB1bnRpbCBtb3VzZVVwIGlzIHByb2Nlc3NlZC4gCiAgICAgLy8g
VG8gYmUgc2FmZSBhbmQgYXZvaWQgYSBkZWFkbG9jaywgdGhpcyBldmVudCBpcyBxdWV1ZWQuCi0g
ICAgaWYgKGVuZE9mUXVldWUgPT0gc3RhcnRPZlF1ZXVlICYmICFldmVudFF1ZXVlW2VuZE9mUXVl
dWVdLm1fZGVsYXkgJiYgKCEobV9tb3VzZUJ1dHRvblByZXNzZWQgJiYgKG1fZXZlbnRMb29wICYm
IGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpNb3VzZUJ1dHRvblJlbGVhc2UpKSkpIHsKKyAgICBp
ZiAoZW5kT2ZRdWV1ZSA9PSBzdGFydE9mUXVldWUgJiYgIWV2ZW50UXVldWVbZW5kT2ZRdWV1ZV0u
bV9kZWxheSAmJiAhKG1fbW91c2VCdXR0b25QcmVzc2VkICYmIGV2ZW50LT50eXBlKCkgPT0gUUV2
ZW50OjpNb3VzZU1vdmUpKSB7CiAgICAgICAgIHNlbmRFdmVudChtX3BhZ2UtPnZpZXcoKSwgZXZl
bnQpOwogICAgICAgICBkZWxldGUgZXZlbnQ7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyAg
ICAvLyBUaGUgZXZlbnQgZ2V0cyBhZGRlZCB0byB0aGUgcXVldWUKICAgICBldmVudFF1ZXVlW2Vu
ZE9mUXVldWUrK10ubV9ldmVudCA9IGV2ZW50OwogICAgIGV2ZW50UXVldWVbZW5kT2ZRdWV1ZV0u
bV9kZWxheSA9IDA7Ci0gICAgcmVwbGF5U2F2ZWRFdmVudHMoZXZlbnQtPnR5cGUoKSAhPSBRRXZl
bnQ6Ok1vdXNlTW92ZSk7CisKKyAgICAvLyBpZiBpdCB3YXMgYSBtb3VzZU1vdmUgZXZlbnQgYW5k
IHRoZSBtb3VzZSBidXR0b24gaXMgcHJlc3NlZCB0aGVuIGEgZHJhZyBvcGVyYXRpb24gaXMgc3Rh
cnRpbmcsCisgICAgLy8gc28ganVzdCBzdG9yZSB0aGUgZXZlbnQgZm9yIG5vdyBhbmQgcG9zdCBp
dCBhbG9uZyB3aXRoIHRoZSBtb3VzZVJlbGVhc2UgZXZlbnQgd2hlbiB0aGF0IGFycml2ZXMuCisg
ICAgaWYgKCEobV9tb3VzZUJ1dHRvblByZXNzZWQgJiYgZXZlbnQtPnR5cGUoKSA9PSBRRXZlbnQ6
Ok1vdXNlTW92ZSkpCisgICAgICAgIHJlcGxheVNhdmVkRXZlbnRzKGV2ZW50LT50eXBlKCkgPT0g
UUV2ZW50OjpNb3VzZUJ1dHRvblJlbGVhc2UpOwogfQogCiB2b2lkIEV2ZW50U2VuZGVyOjpyZXBs
YXlTYXZlZEV2ZW50cyhib29sIGZsdXNoKQpAQCAtNTUyLDYgKzU1OCw3IEBAIHZvaWQgRXZlbnRT
ZW5kZXI6OnJlcGxheVNhdmVkRXZlbnRzKGJvb2wgZmx1c2gpCiAgICAgICAgIC8vIEZpcnN0IHNl
bmQgYWxsIHRoZSBldmVudHMgdGhhdCBhcmUgcmVhZHkgdG8gYmUgc2VudAogICAgICAgICB3aGls
ZSAoIWV2ZW50UXVldWVbc3RhcnRPZlF1ZXVlXS5tX2RlbGF5ICYmIHN0YXJ0T2ZRdWV1ZSA8IGVu
ZE9mUXVldWUpIHsKICAgICAgICAgICAgIFFFdmVudCogZXYgPSBldmVudFF1ZXVlW3N0YXJ0T2ZR
dWV1ZSsrXS5tX2V2ZW50OworICAgICAgICAgICAgcURlYnVnKCkgPDwgInJlcGxheVNhdmVkRXZl
bnRzIC0gcG9zdGluZyBldmVudCB0eXBlICIgPDwgZXYtPnR5cGUoKTsKICAgICAgICAgICAgIHBv
c3RFdmVudChtX3BhZ2UtPnZpZXcoKSwgZXYpOwogICAgICAgICB9CiAgICAgICAgIGlmIChzdGFy
dE9mUXVldWUgPT0gZW5kT2ZRdWV1ZSkgewpAQCAtNTYzLDEzICs1NzAsMTcgQEAgdm9pZCBFdmVu
dFNlbmRlcjo6cmVwbGF5U2F2ZWRFdmVudHMoYm9vbCBmbHVzaCkKICAgICAgICAgICAgIGV2ZW50
UXVldWVbc3RhcnRPZlF1ZXVlXS5tX2RlbGF5ID0gMDsKICAgICAgICAgfQogICAgIH0KKyAgICBx
RGVidWcoKSA8PCAiZmx1c2ggaXMgIiA8PCBmbHVzaDsKKwogICAgIGlmICghZmx1c2gpCiAgICAg
ICAgIHJldHVybjsKIAorICAgIAogICAgIC8vIFNlbmQgYSBtYXJrZXIgZXZlbnQsIGl0IHdpbGwg
dGVsbCB1cyB3aGVuIGl0IGlzIHNhZmUgdG8gZXhpdCB0aGUgbmV3IGV2ZW50IGxvb3AKICAgICBR
RXZlbnQqIGRydEV2ZW50ID0gbmV3IFFFdmVudCgoUUV2ZW50OjpUeXBlKURSVF9NRVNTQUdFX0RP
TkUpOwogICAgIFFBcHBsaWNhdGlvbjo6cG9zdEV2ZW50KG1fcGFnZS0+dmlldygpLCBkcnRFdmVu
dCk7CiAKKyAgICBxRGVidWcoKSA8PCAic3RhcnRpbmcgZXZlbnQgbG9vcC4iOwogICAgIC8vIFN0
YXJ0IGFuIGV2ZW50IGxvb3AgZm9yIGFzeW5jIGhhbmRsaW5nIG9mIERyYWcgJiBEcm9wCiAgICAg
bV9ldmVudExvb3AgPSBuZXcgUUV2ZW50TG9vcDsKICAgICBtX2V2ZW50TG9vcC0+ZXhlYygpOwpA
QCAtNTc5LDYgKzU5MCw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6OnJlcGxheVNhdmVkRXZlbnRzKGJv
b2wgZmx1c2gpCiAKIGJvb2wgRXZlbnRTZW5kZXI6OmV2ZW50RmlsdGVyKFFPYmplY3QqIHdhdGNo
ZWQsIFFFdmVudCogZXZlbnQpCiB7CisgICAgcURlYnVnKCkgPDwgZXZlbnQtPnR5cGUoKTsKICAg
ICBpZiAod2F0Y2hlZCAhPSBtX3BhZ2UtPnZpZXcoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIHN3aXRjaCAoZXZlbnQtPnR5cGUoKSkgewpAQCAtNTkyLDYgKzYwNCw3IEBAIGJvb2wgRXZl
bnRTZW5kZXI6OmV2ZW50RmlsdGVyKFFPYmplY3QqIHdhdGNoZWQsIFFFdmVudCogZXZlbnQpCiAg
ICAgY2FzZSBRRXZlbnQ6OkdyYXBoaWNzU2NlbmVNb3VzZU1vdmU6CiAgICAgICAgIGlmIChtX21v
dXNlQnV0dG9uUHJlc3NlZCkKICAgICAgICAgICAgIG1fZHJhZyA9IHRydWU7CisgICAgICAgIFFD
dXJzb3I6OnNldFBvcyhtX3BhZ2UtPnZpZXcoKS0+bWFwVG9HbG9iYWwoc3RhdGljX2Nhc3Q8UU1v
dXNlRXZlbnQqPihldmVudCktPnBvcygpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUUV2
ZW50OjpNb3VzZUJ1dHRvblJlbGVhc2U6CiAgICAgY2FzZSBRRXZlbnQ6OkdyYXBoaWNzU2NlbmVN
b3VzZVJlbGVhc2U6CkBAIC01OTksNiArNjEyLDcgQEAgYm9vbCBFdmVudFNlbmRlcjo6ZXZlbnRG
aWx0ZXIoUU9iamVjdCogd2F0Y2hlZCwgUUV2ZW50KiBldmVudCkKICAgICAgICAgbV9kcmFnID0g
ZmFsc2U7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRFJUX01FU1NBR0VfRE9ORToKKyAgICAg
ICAgbV9tb3VzZUJ1dHRvblByZXNzZWQgPSBmYWxzZTsKICAgICAgICAgbV9ldmVudExvb3AtPmV4
aXQoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotLSAKMS43LjAuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198289</attachid>
            <date>2013-04-16 02:44:23 -0700</date>
            <delta_ts>2013-04-16 05:43:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-31332-20130416114356.patch</filename>
            <type>text/plain</type>
            <size>29848</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4NTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGFkNTVjYTM4ZmRi
NTAzOWExZWM5YTViMjdkNjhkZTBhNjM3YThhNTAuLmEyMDhmODk5YWNjYzE3ZjJlNTM0MGU1MzIx
ZTI3MjIyMzFhMzRmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTMtMDQt
MTYgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAg
ICAgICAgW1F0XSBGYWlsaW5nIERyYWctYW5kLWRyb3AgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMzMyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50cyBhIG1vY2sgRHJhZ0NsaWVu
dCB0aGF0IHN0b3JlcyB0aGUgZHJhZ2dlZCBkYXRhCisgICAgICAgIGxvY2FsbHksIHNvIHRoYXQg
RFJUIGNhbiBhY2Nlc3MgaXQgdG8gc2VuZCBRRHJhZyBldmVudHMuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NsaWVu
dE1vY2s6OnN0YXJ0RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ2xpZW50TW9jazo6ZW5k
RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ2xpZW50TW9jazo6ZHJhZ0RhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0NsaWVudE1vY2s6OmRyb3BBY3Rpb25zKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuaDoKKyAgICAgICAgKERyYWdDbGllbnRRdCk6Cisg
ICAgICAgIChEcmFnQ2xpZW50TW9jayk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ2xpZW50TW9j
azo6RHJhZ0NsaWVudE1vY2spOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpjdXJy
ZW50RHJhZ0RhdGEpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmN1cnJlbnRE
cm9wQWN0aW9ucyk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZW5kQ3VycmVu
dERyYWcpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcDoKKyAgICAg
ICAgKFFXZWJQYWdlQWRhcHRlcjo6aW5pdGlhbGl6ZVdlYkNvcmVQYWdlKToKKwogMjAxMy0wNC0x
MSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KIAogICAg
ICAgICBbUXRdIEV2ZW50SGFuZGxlciBzaG91bGQgaGFuZGxlIFNwYWNlIGFuZCBCYWNrU3BhY2Ug
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRR
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRRdC5jcHAK
aW5kZXggMmUwZDA1ZWQxMjM0OGYwNGVmNzk0ZjA1MmFiM2FlNjlhMTI5MzRiNi4uN2EwNzEyNzg1
YjQ4NGFlMjQxMDllYWEyMjRmYTdiZmQ4Mzk5ZTU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmNwcApAQCAtMTEyLDUgKzExMiw0MyBAQCB2
b2lkIERyYWdDbGllbnRRdDo6c3RhcnREcmFnKERyYWdJbWFnZVJlZiBkcmFnSW1hZ2UsIGNvbnN0
IEludFBvaW50JiwgY29uc3QgSW50UAogI2VuZGlmCiB9CiAKK3ZvaWQgRHJhZ0NsaWVudE1vY2s6
OnN0YXJ0RHJhZyhEcmFnSW1hZ2VSZWYsIGNvbnN0IEludFBvaW50JiwgY29uc3QgSW50UG9pbnQm
LCBDbGlwYm9hcmQqIGNsaXBib2FyZCwgRnJhbWUqIGZyYW1lLCBib29sKQoreworICAgIGlmICht
X2RyYWdEYXRhKQorICAgICAgICBkZWxldGUgbV9kcmFnRGF0YTsKKyAgICBtX2RyYWdEYXRhID0g
c3RhdGljX2Nhc3Q8Q2xpcGJvYXJkUXQqPihjbGlwYm9hcmQpLT5jbGlwYm9hcmREYXRhKCk7Cisg
ICAgbV9kcm9wQWN0aW9ucyA9IGRyYWdPcGVyYXRpb25zVG9Ecm9wQWN0aW9ucyhjbGlwYm9hcmQt
PnNvdXJjZU9wZXJhdGlvbigpKTsKKyAgICBzdGF0aWNfY2FzdDxDbGlwYm9hcmRRdCo+KGNsaXBi
b2FyZCktPmludmFsaWRhdGVXcml0YWJsZURhdGEoKTsKKyAgICBtX2RyYWdTdGFydEZyYW1lID0g
ZnJhbWU7Cit9CisKK3ZvaWQgRHJhZ0NsaWVudE1vY2s6OmVuZERyYWcoUXQ6OkRyb3BBY3Rpb24g
YWNjZXB0ZWRBY3Rpb24pCit7CisgICAgaWYgKG1fZHJhZ0RhdGEpCisgICAgICAgIGRlbGV0ZSBt
X2RyYWdEYXRhOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuOworICAgIG1fZHJhZ0RhdGEgPSAw
OworICAgIG1fZHJvcEFjdGlvbnMgPSBRdDo6SWdub3JlQWN0aW9uOworCisgICAgLy8gU2VuZCBk
cmFnRW5kIGV2ZW50CisgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1lKG1fY2hyb21lQ2xpZW50LT5z
Y3JlZW5Ub1Jvb3RWaWV3KFFDdXJzb3I6OnBvcygpKSwgUUN1cnNvcjo6cG9zKCksIExlZnRCdXR0
b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCAwKTsKKyAgICBtX2RyYWdTdGFydEZyYW1lLT5ldmVudEhhbmRsZXIoKS0+ZHJhZ1NvdXJj
ZUVuZGVkQXQobWUsIGRyb3BBY3Rpb25Ub0RyYWdPcGVyYXRpb24oYWNjZXB0ZWRBY3Rpb24pKTsK
KyAgICBtX2RyYWdTdGFydEZyYW1lLT5wYWdlKCktPmRyYWdDb250cm9sbGVyKCktPmRyYWdFbmRl
ZCgpOworfQorCitjb25zdCBRTWltZURhdGEqIERyYWdDbGllbnRNb2NrOjpkcmFnRGF0YSgpCit7
CisgICAgaWYgKG1fZHJhZ0RhdGEpCisgICAgICAgIHJldHVybiBtX2RyYWdEYXRhOworICAgIHJl
dHVybiAwOworfQorCitRdDo6RHJvcEFjdGlvbnMgRHJhZ0NsaWVudE1vY2s6OmRyb3BBY3Rpb25z
KCkKK3sKKyAgICBpZiAobV9kcmFnRGF0YSkKKyAgICAgICAgcmV0dXJuIG1fZHJvcEFjdGlvbnM7
CisgICAgcmV0dXJuIFF0OjpJZ25vcmVBY3Rpb247Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVu
dFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRRdC5oCmlu
ZGV4IGFhOGI4MDg1YjgxNTBmMGExNjQzNGRjMzY0NTVmYWM1MWQ3YzJlM2UuLmY2OGU4NjYxZDMz
ZTRhNmY0ZGJjN2E1MzMzNTdiM2ZmYjU5MDk0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuaApAQCAtMjgsOSArMjgsMTYgQEAKIAogI2luY2x1
ZGUgIkRyYWdDbGllbnQuaCIKIAorI2luY2x1ZGUgPHFuYW1lc3BhY2UuaD4KKworUVRfQkVHSU5f
TkFNRVNQQUNFCitjbGFzcyBRTWltZURhdGE7CitRVF9FTkRfTkFNRVNQQUNFCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2hyb21lQ2xpZW50OworY2xhc3MgRnJhbWU7CiAKIGNsYXNz
IERyYWdDbGllbnRRdCA6IHB1YmxpYyBEcmFnQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTQxLDEwICs0
OCwyMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VB
Y3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKTsKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IEludFBvaW50
JiwgQ2xpcGJvYXJkKik7ICAgIAogICAgIHZpcnR1YWwgdm9pZCBzdGFydERyYWcoRHJhZ0ltYWdl
UmVmLCBjb25zdCBJbnRQb2ludCYgZHJhZ0ltYWdlT3JpZ2luLCBjb25zdCBJbnRQb2ludCYgZXZl
bnRQb3MsIENsaXBib2FyZCosIEZyYW1lKiwgYm9vbCBsaW5rRHJhZyA9IGZhbHNlKTsKLXByaXZh
dGU6Citwcm90ZWN0ZWQ6CiAgICAgQ2hyb21lQ2xpZW50KiBtX2Nocm9tZUNsaWVudDsKIH07CiAK
K2NsYXNzIERyYWdDbGllbnRNb2NrIDogcHVibGljIERyYWdDbGllbnRRdCB7CitwdWJsaWM6Cisg
ICAgRHJhZ0NsaWVudE1vY2soQ2hyb21lQ2xpZW50KiBjaHJvbWVDbGllbnQpIDogRHJhZ0NsaWVu
dFF0KGNocm9tZUNsaWVudCksIG1fZHJhZ0RhdGEoMCkgeyB9OworICAgIHZpcnR1YWwgdm9pZCBz
dGFydERyYWcoRHJhZ0ltYWdlUmVmLCBjb25zdCBJbnRQb2ludCYgZHJhZ0ltYWdlT3JpZ2luLCBj
b25zdCBJbnRQb2ludCYgZXZlbnRQb3MsIENsaXBib2FyZCosIEZyYW1lKiwgYm9vbCBsaW5rRHJh
ZyA9IGZhbHNlKTsKKyAgICBjb25zdCBRTWltZURhdGEqIGRyYWdEYXRhKCk7CisgICAgUXQ6OkRy
b3BBY3Rpb25zIGRyb3BBY3Rpb25zKCk7CisgICAgdm9pZCBlbmREcmFnKFF0OjpEcm9wQWN0aW9u
KTsKK3ByaXZhdGU6CisgICAgUU1pbWVEYXRhKiBtX2RyYWdEYXRhOworICAgIFF0OjpEcm9wQWN0
aW9ucyBtX2Ryb3BBY3Rpb25zOworICAgIEZyYW1lICptX2RyYWdTdGFydEZyYW1lOworfTsKKwog
fQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKaW5kZXggMTExMDBkYzZhM2EzYmI0MjJh
OGExMTljZDAzMmU3MzA3ZGYzZDY4My4uYzBjOGZhZjA4M2RjZGI4YTViZTEzZjA2M2ZkNmY4YzAy
OWU5NWIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKQEAgLTM0LDYgKzM0LDggQEAKICNpbmNs
dWRlICJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJEZXZpY2VPcmll
bnRhdGlvbkRhdGEuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgorI2luY2x1ZGUgIkRy
YWdDbGllbnRRdC5oIgorI2luY2x1ZGUgIkRyYWdDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRWRp
dG9yLmgiCiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50UXQuaCIKICNpbmNsdWRlICJFbGVtZW50Lmgi
CkBAIC05MDQsMyArOTA2LDIxIEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmdldEpT
V2luZG93T2JqZWN0KFFXZWJGcmFtZUFkYXB0ZXIqIGFkYXB0ZXIsIEpTQ29uCiAgICAgKm9iamVj
dCA9IHRvUmVmKHdpbmRvdyk7CiAgICAgKmNvbnRleHQgPSB0b1JlZih3aW5kb3ctPmdsb2JhbEV4
ZWMoKSk7CiB9CisKK2NvbnN0IFFNaW1lRGF0YSogRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmN1
cnJlbnREcmFnRGF0YShRV2ViUGFnZUFkYXB0ZXIqIGFkYXB0b3IpCit7CisgICAgRHJhZ0NsaWVu
dE1vY2sqIGRyYWdDbGllbnQgPSBzdGF0aWNfY2FzdDxEcmFnQ2xpZW50TW9jayo+KGFkYXB0b3It
PnBhZ2UtPmRyYWdDb250cm9sbGVyKCktPmNsaWVudCgpKTsKKyAgICByZXR1cm4gZHJhZ0NsaWVu
dC0+ZHJhZ0RhdGEoKTsKK30KKworUXQ6OkRyb3BBY3Rpb25zIER1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0OjpjdXJyZW50RHJvcEFjdGlvbnMoUVdlYlBhZ2VBZGFwdGVyKiBhZGFwdG9yKQoreworICAg
IERyYWdDbGllbnRNb2NrKiBkcmFnQ2xpZW50ID0gc3RhdGljX2Nhc3Q8RHJhZ0NsaWVudE1vY2sq
PihhZGFwdG9yLT5wYWdlLT5kcmFnQ29udHJvbGxlcigpLT5jbGllbnQoKSk7CisgICAgcmV0dXJu
IGRyYWdDbGllbnQtPmRyb3BBY3Rpb25zKCk7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQ6OmVuZEN1cnJlbnREcmFnKFFXZWJQYWdlQWRhcHRlciogYWRhcHRvciwgUXQ6OkRyb3BB
Y3Rpb24gYWNjZXB0ZWRBY3Rpb24pCit7CisgICAgRHJhZ0NsaWVudE1vY2sqIGRyYWdDbGllbnQg
PSBzdGF0aWNfY2FzdDxEcmFnQ2xpZW50TW9jayo+KGFkYXB0b3ItPnBhZ2UtPmRyYWdDb250cm9s
bGVyKCktPmNsaWVudCgpKTsKKyAgICByZXR1cm4gZHJhZ0NsaWVudC0+ZW5kRHJhZyhhY2NlcHRl
ZEFjdGlvbik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKaW5kZXggMDE5MjNlMjU1ZTRjOWNjZTQwMzQz
NmNjNWE3YTIzMzEyNTZmZGZhOC4uNjdjNjBjZTZiYjU4OGQ2ZDY0Nzk0OGQxODgxMTdjNDFhZWUw
NzczOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaApAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBRV2ViSGlz
dG9yeUl0ZW07CiBjbGFzcyBRV2ViU2NyaXB0V29ybGQ7CiAKIFFUX0JFR0lOX05BTUVTUEFDRQor
Y2xhc3MgUU1pbWVEYXRhOwogY2xhc3MgUVVybDsKIFFUX0VORF9OQU1FU1BBQ0UKIApAQCAtMjA3
LDYgKzIwOCwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGlzYWJsZURlZmF1bHRUeXBl
c2V0dGluZ0ZlYXR1cmVzKCk7CiAKICAgICBzdGF0aWMgdm9pZCBnZXRKU1dpbmRvd09iamVjdChR
V2ViRnJhbWVBZGFwdGVyKiwgSlNDb250ZXh0UmVmKiwgSlNPYmplY3RSZWYqKTsKKworICAgIHN0
YXRpYyBjb25zdCBRTWltZURhdGEqIGN1cnJlbnREcmFnRGF0YShRV2ViUGFnZUFkYXB0ZXIqKTsK
KyAgICBzdGF0aWMgUXQ6OkRyb3BBY3Rpb25zIGN1cnJlbnREcm9wQWN0aW9ucyhRV2ViUGFnZUFk
YXB0ZXIqKTsKKyAgICBzdGF0aWMgdm9pZCBlbmRDdXJyZW50RHJhZyhRV2ViUGFnZUFkYXB0ZXIq
LCBRdDo6RHJvcEFjdGlvbik7CiB9OwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcAppbmRleCBmOGNmYmFlODEzNDM4
MzU5Yzc4YjJmYzc2MjUwNTZmZTUxYmI2ZGE4Li43MmI4ZGEyMzQwNTlmYWU5MjFiMmQ2ZGZkNjA1
OGZiNGU4ODQ2MTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L1FXZWJQYWdlQWRhcHRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9RV2ViUGFnZUFkYXB0ZXIuY3BwCkBAIC0xODAsMTQgKzE4MCwxNSBAQCBRV2ViUGFnZUFkYXB0
ZXI6OlFXZWJQYWdlQWRhcHRlcigpCiAKIHZvaWQgUVdlYlBhZ2VBZGFwdGVyOjppbml0aWFsaXpl
V2ViQ29yZVBhZ2UoKQogewotI2lmIEVOQUJMRShHRU9MT0NBVElPTikgfHwgRU5BQkxFKERFVklD
RV9PUklFTlRBVElPTikKICAgICBjb25zdCBib29sIHVzZU1vY2sgPSBRV2ViUGFnZUFkYXB0ZXI6
OmRydFJ1bjsKLSNlbmRpZgogICAgIFBhZ2U6OlBhZ2VDbGllbnRzIHBhZ2VDbGllbnRzOwogICAg
IHBhZ2VDbGllbnRzLmNocm9tZUNsaWVudCA9IG5ldyBDaHJvbWVDbGllbnRRdCh0aGlzKTsKICAg
ICBwYWdlQ2xpZW50cy5jb250ZXh0TWVudUNsaWVudCA9IG5ldyBDb250ZXh0TWVudUNsaWVudFF0
KCk7CiAgICAgcGFnZUNsaWVudHMuZWRpdG9yQ2xpZW50ID0gbmV3IEVkaXRvckNsaWVudFF0KHRo
aXMpOwotICAgIHBhZ2VDbGllbnRzLmRyYWdDbGllbnQgPSBuZXcgRHJhZ0NsaWVudFF0KHBhZ2VD
bGllbnRzLmNocm9tZUNsaWVudCk7CisgICAgaWYgKHVzZU1vY2spCisgICAgICAgIHBhZ2VDbGll
bnRzLmRyYWdDbGllbnQgPSBuZXcgRHJhZ0NsaWVudE1vY2socGFnZUNsaWVudHMuY2hyb21lQ2xp
ZW50KTsKKyAgICBlbHNlCisgICAgICAgIHBhZ2VDbGllbnRzLmRyYWdDbGllbnQgPSBuZXcgRHJh
Z0NsaWVudFF0KHBhZ2VDbGllbnRzLmNocm9tZUNsaWVudCk7CiAgICAgcGFnZUNsaWVudHMuaW5z
cGVjdG9yQ2xpZW50ID0gbmV3IEluc3BlY3RvckNsaWVudFF0KHRoaXMpOwogICAgIHBhZ2UgPSBu
ZXcgUGFnZShwYWdlQ2xpZW50cyk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCBhNzU1NmIwMzBjZTIyYWZmOWU1NWVjMmQzODAwNGM0ZDU1YTRm
ZDY1Li44MTY5ZGIwZWIxNWYzMThjZjk1YzY5ZDgwZDBmYTc5MzgwNmVhMWMxIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAK
KzIwMTMtMDQtMTYgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5j
b20+CisKKyAgICAgICAgW1F0XSBGYWlsaW5nIERyYWctYW5kLWRyb3AgdGVzdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMzMyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5zdGVhZCBvZiB0cnlpbmcg
dG8gd29yayB0b2dldGhlciB3aXRoIHRoZSBibG9ja2luZyBRRHJhZywKKyAgICAgICAgd2Ugbm93
IHNlbmQgdGhlIFFEcmFnIGV2ZW50cyBtYW51YWxseS4gVGhpcyBtZWFucyB3ZSBnaXZlCisgICAg
ICAgIHVwIG9uIHRlc3RpbmcgaG93IFFEcmFnIGFuZCBXZWJDb3JlIHdvcmtzIHRvZ2V0aGVyLiBX
ZSBkbworICAgICAgICBob3dldmVyIGdldCB0byB0ZXN0IGhvdyB3ZWxsIERyYWcnbidEcm9wIHdv
cmtzIGluIFdlYkNvcmUuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9FdmVudFNlbmRl
clF0LmNwcDoKKyAgICAgICAgKEV2ZW50U2VuZGVyOjpFdmVudFNlbmRlcik6CisgICAgICAgIChF
dmVudFNlbmRlcjo6bW91c2VEb3duKToKKyAgICAgICAgKEV2ZW50U2VuZGVyOjptb3VzZVVwKToK
KyAgICAgICAgKEV2ZW50U2VuZGVyOjptb3VzZU1vdmVUbyk6CisgICAgICAgIChFdmVudFNlbmRl
cjo6YmVnaW5EcmFnV2l0aEZpbGVzKToKKyAgICAgICAgKEV2ZW50U2VuZGVyOjpjb250aW51b3Vz
TW91c2VTY3JvbGxCeSk6CisgICAgICAgIChFdmVudFNlbmRlcjo6bGVhcEZvcndhcmQpOgorICAg
ICAgICAoRXZlbnRTZW5kZXI6OnNlbmRUb3VjaEV2ZW50KToKKyAgICAgICAgKEV2ZW50U2VuZGVy
OjpzZW5kRXZlbnRJbk9yZGVyKToKKyAgICAgICAgKEV2ZW50U2VuZGVyOjpldmVudEZpbHRlcik6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvRXZlbnRTZW5kZXJRdC5oOgorICAgICAgICAo
RXZlbnRTZW5kZXIpOgorCiAyMDEzLTA0LTE2ICBNaWtlIFdlc3QgIDxta3dzdEBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCB1cGRhdGUgdG8gdGhlIHdhdGNobGlzdC4KZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVyUXQuY3BwIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvRXZlbnRTZW5kZXJRdC5jcHAKaW5kZXggMzUyZjFkZTk4NjlkMDU0
N2NhNWYyNzU5NjA0YWI2MTcyZDIwM2RlYS4uYzBhOWNmMzRjMDZlZmY1N2NjZWYwNmI4NTgzN2Q0
NjJmM2M3MWIxMyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRXZlbnRTZW5k
ZXJRdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRXZlbnRTZW5kZXJRdC5jcHAK
QEAgLTQ3LDE3ICs0Nyw2IEBACiAvLyBIZW5jZSBRdCBEUlQgYWRvcHRzIGEgZml4ZWQgem9vbS1m
YWN0b3IgKDEuMikgZm9yIGNvbXBhdGliaWxpdHkuCiAjZGVmaW5lIFpPT01fU1RFUCAgICAgICAg
ICAgMS4yCiAKLSNkZWZpbmUgRFJUX01FU1NBR0VfRE9ORSAoUUV2ZW50OjpVc2VyICsgMSkKLQot
c3RydWN0IERSVEV2ZW50UXVldWUgewotICAgIFFFdmVudCogbV9ldmVudDsKLSAgICBpbnQgbV9k
ZWxheTsKLX07Ci0KLXN0YXRpYyBEUlRFdmVudFF1ZXVlIGV2ZW50UXVldWVbMTAyNF07Ci1zdGF0
aWMgdW5zaWduZWQgZW5kT2ZRdWV1ZTsKLXN0YXRpYyB1bnNpZ25lZCBzdGFydE9mUXVldWU7Ci0K
IEV2ZW50U2VuZGVyOjpFdmVudFNlbmRlcihRV2ViUGFnZSogcGFyZW50KQogICAgIDogUU9iamVj
dChwYXJlbnQpCiAjaWZuZGVmIFFUX05PX0dFU1RVUkVTCkBAIC02OCwxMiArNTcsMTEgQEAgRXZl
bnRTZW5kZXI6OkV2ZW50U2VuZGVyKFFXZWJQYWdlKiBwYXJlbnQpCiAgICAgbV9wYWdlID0gcGFy
ZW50OwogICAgIG1fbW91c2VCdXR0b25QcmVzc2VkID0gZmFsc2U7CiAgICAgbV9kcmFnID0gZmFs
c2U7Ci0gICAgbWVtc2V0KGV2ZW50UXVldWUsIDAsIHNpemVvZihldmVudFF1ZXVlKSk7Ci0gICAg
ZW5kT2ZRdWV1ZSA9IDA7Ci0gICAgc3RhcnRPZlF1ZXVlID0gMDsKKyAgICBtX2Ryb3BQb3NzaWJs
ZSA9IGZhbHNlOwogICAgIG1fZXZlbnRMb29wID0gMDsKICAgICBtX2N1cnJlbnRCdXR0b24gPSAw
OwogICAgIG1fY3VycmVudERyYWdBY3Rpb25zQWxsb3dlZCA9IDA7CisgICAgbV9kZWxheSA9IDA7
CiAgICAgcmVzZXRDbGlja0NvdW50KCk7CiAgICAgbV9wYWdlLT52aWV3KCktPmluc3RhbGxFdmVu
dEZpbHRlcih0aGlzKTsKICAgICAvLyBUaGlzIGlzIGEgaGFjayB0aGF0IHdvcmtzIGJlY2F1c2Ug
d2Ugbm9ybWFsbHkgc2Nyb2xsIDYwIHBpeGVscyAoMyoyMCkgcGVyIHRpY2ssIGJ1dCBBcHBsZSBz
Y3JvbGxzIDEyMC4KQEAgLTE0Niw3ICsxMzQsNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjptb3VzZURv
d24oaW50IGJ1dHRvbiwgY29uc3QgUVN0cmluZ0xpc3QmIG1vZGlmaWVycykKICAgICAgICAgICAg
ICAgICAgICAgbW91c2VCdXR0b24sIG1fbW91c2VCdXR0b25zLCBtb2RpZnMpOwogICAgIH0KIAot
ICAgIHNlbmRPclF1ZXVlRXZlbnQoZXZlbnQpOworICAgIHNlbmRFdmVudEluT3JkZXIoZXZlbnQp
OwogCiAgICAgbV9jbGlja1RpbWVyLnN0YXJ0KFFBcHBsaWNhdGlvbjo6ZG91YmxlQ2xpY2tJbnRl
cnZhbCgpLCB0aGlzKTsKIH0KQEAgLTE3NSw3ICsxNjMsNiBAQCB2b2lkIEV2ZW50U2VuZGVyOjpt
b3VzZVVwKGludCBidXR0b24pCiAKICAgICBtX21vdXNlQnV0dG9ucyAmPSB+bW91c2VCdXR0b247
CiAKLS8vICAgICBxRGVidWcoKSA8PCAiRXZlbnRTZW5kZXI6Om1vdXNlVXAiIDw8IGZyYW1lOwog
ICAgIFFFdmVudCogZXZlbnQ7CiAgICAgaWYgKGlzR3JhcGhpY3NCYXNlZCgpKSB7CiAgICAgICAg
IGV2ZW50ID0gY3JlYXRlR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQoUUV2ZW50OjpHcmFwaGljc1Nj
ZW5lTW91c2VSZWxlYXNlLApAQCAtMTg1LDE5ICsxNzIsMzMgQEAgdm9pZCBFdmVudFNlbmRlcjo6
bW91c2VVcChpbnQgYnV0dG9uKQogICAgICAgICAgICAgICAgICAgICBtX21vdXNlUG9zLCBtX21v
dXNlUG9zLCBtb3VzZUJ1dHRvbiwgbV9tb3VzZUJ1dHRvbnMsIFF0OjpOb01vZGlmaWVyKTsKICAg
ICB9CiAKLSAgICBzZW5kT3JRdWV1ZUV2ZW50KGV2ZW50KTsKKyAgICBzZW5kRXZlbnRJbk9yZGVy
KGV2ZW50KTsKKworICAgIGNvbnN0IFFNaW1lRGF0YSogY3VycmVudERyYWdEYXRhID0gRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQ6OmN1cnJlbnREcmFnRGF0YShtX3BhZ2UtPmhhbmRsZSgpKTsKKyAg
ICBpZiAoY3VycmVudERyYWdEYXRhKSB7CisgICAgICAgIFF0OjpEcm9wQWN0aW9uIGFjY2VwdGVk
QWN0aW9uID0gUXQ6Oklnbm9yZUFjdGlvbjsKKyAgICAgICAgaWYgKG1fZHJvcFBvc3NpYmxlKSB7
CisgICAgICAgICAgICBRRHJvcEV2ZW50KiBkcm9wRXZlbnQgPSBuZXcgUURyb3BFdmVudChtX21v
dXNlUG9zLCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Y3VycmVudERyb3BBY3Rpb25zKG1fcGFn
ZS0+aGFuZGxlKCkpLCBjdXJyZW50RHJhZ0RhdGEsIG1fbW91c2VCdXR0b25zLCAgUXQ6Ok5vTW9k
aWZpZXIpOworICAgICAgICAgICAgc2VuZEV2ZW50KG1fcGFnZSwgZHJvcEV2ZW50KTsKKyAgICAg
ICAgICAgIGlmIChkcm9wRXZlbnQtPmlzQWNjZXB0ZWQoKSkKKyAgICAgICAgICAgICAgICBhY2Nl
cHRlZEFjdGlvbiA9IGRyb3BFdmVudC0+ZHJvcEFjdGlvbigpOworICAgICAgICAgICAgbV9kcm9w
UG9zc2libGUgPSBmYWxzZTsKKyAgICAgICAgICAgIGRlbGV0ZSBkcm9wRXZlbnQ7CisgICAgICAg
IH0KKyAgICAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmVuZEN1cnJlbnREcmFnKG1fcGFn
ZS0+aGFuZGxlKCksIGFjY2VwdGVkQWN0aW9uKTsKKyAgICAgICAgbV9kcmFnID0gZmFsc2U7Cisg
ICAgfQogCiAgICAgaWYgKG1fY3VycmVudERyYWdEYXRhLnVybHMoKS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGV2ZW50ID0gbmV3IFFEcm9wRXZlbnQobV9tb3VzZVBvcywgbV9j
dXJyZW50RHJhZ0FjdGlvbnNBbGxvd2VkLCAmbV9jdXJyZW50RHJhZ0RhdGEsIG1fbW91c2VCdXR0
b25zLCBRdDo6Tm9Nb2RpZmllcik7Ci0gICAgc2VuZEV2ZW50KG1fcGFnZSwgZXZlbnQpOworICAg
IFFEcm9wRXZlbnQgZHJvcEV2ZW50KG1fbW91c2VQb3MsIG1fY3VycmVudERyYWdBY3Rpb25zQWxs
b3dlZCwgJm1fY3VycmVudERyYWdEYXRhLCBtX21vdXNlQnV0dG9ucywgUXQ6Ok5vTW9kaWZpZXIp
OworICAgIHNlbmRFdmVudChtX3BhZ2UsICZkcm9wRXZlbnQpOwogICAgIG1fY3VycmVudERyYWdE
YXRhLmNsZWFyKCk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXI6Om1vdXNlTW92ZVRvKGludCB4LCBp
bnQgeSkKIHsKLS8vICAgICBxRGVidWcoKSA8PCAiRXZlbnRTZW5kZXI6Om1vdXNlTW92ZVRvIiA8
PCB4IDw8IHk7CiAgICAgbV9tb3VzZVBvcyA9IFFQb2ludCh4LCB5KTsKIAogICAgIFFFdmVudCog
ZXZlbnQ7CkBAIC0yMDksMTQgKzIxMCwyNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjptb3VzZU1vdmVU
byhpbnQgeCwgaW50IHkpCiAgICAgICAgICAgICAgICAgICAgIG1fbW91c2VQb3MsIG1fbW91c2VQ
b3MsIFF0OjpOb0J1dHRvbiwgbV9tb3VzZUJ1dHRvbnMsIFF0OjpOb01vZGlmaWVyKTsKICAgICB9
CiAKLSAgICBzZW5kT3JRdWV1ZUV2ZW50KGV2ZW50KTsKKyAgICBzZW5kRXZlbnRJbk9yZGVyKGV2
ZW50KTsKKworICAgIGNvbnN0IFFNaW1lRGF0YSogY3VycmVudERyYWdEYXRhID0gRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQ6OmN1cnJlbnREcmFnRGF0YShtX3BhZ2UtPmhhbmRsZSgpKTsKKyAgICBp
ZiAoY3VycmVudERyYWdEYXRhKSB7CisgICAgICAgIFFEcmFnTW92ZUV2ZW50KiBkcmFnRXZlbnQ7
CisgICAgICAgIGlmICghbV9kcmFnKSB7CisgICAgICAgICAgICBkcmFnRXZlbnQgPSBuZXcgUURy
YWdFbnRlckV2ZW50KG1fbW91c2VQb3MsIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpjdXJyZW50
RHJvcEFjdGlvbnMobV9wYWdlLT5oYW5kbGUoKSksIGN1cnJlbnREcmFnRGF0YSwgbV9tb3VzZUJ1
dHRvbnMsIFF0OjpOb01vZGlmaWVyKTsKKyAgICAgICAgICAgIG1fZHJhZyA9IHRydWU7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgZHJhZ0V2ZW50ID0gbmV3IFFEcmFnTW92ZUV2ZW50KG1f
bW91c2VQb3MsIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpjdXJyZW50RHJvcEFjdGlvbnMobV9w
YWdlLT5oYW5kbGUoKSksIGN1cnJlbnREcmFnRGF0YSwgbV9tb3VzZUJ1dHRvbnMsIFF0OjpOb01v
ZGlmaWVyKTsKKyAgICAgICAgc2VuZEV2ZW50KG1fcGFnZSwgZHJhZ0V2ZW50KTsKKyAgICAgICAg
bV9kcm9wUG9zc2libGUgPSBkcmFnRXZlbnQtPmlzQWNjZXB0ZWQoKTsKKyAgICAgICAgZGVsZXRl
IGRyYWdFdmVudDsKKyAgICB9CiAKICAgICBpZiAobV9jdXJyZW50RHJhZ0RhdGEudXJscygpLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUXQ6Ok1vdXNlQnV0dG9ucyBtb3VzZUJ1
dHRvbnMgPSBtX21vdXNlQnV0dG9ucyB8IFF0OjpMZWZ0QnV0dG9uOwotICAgIGV2ZW50ID0gbmV3
IFFEcmFnTW92ZUV2ZW50KG1fbW91c2VQb3MsIG1fY3VycmVudERyYWdBY3Rpb25zQWxsb3dlZCwg
Jm1fY3VycmVudERyYWdEYXRhLCBtb3VzZUJ1dHRvbnMsIFF0OjpOb01vZGlmaWVyKTsKLSAgICBz
ZW5kRXZlbnQobV9wYWdlLCBldmVudCk7CisgICAgUURyYWdNb3ZlRXZlbnQgZHJhZ0V2ZW50KG1f
bW91c2VQb3MsIG1fY3VycmVudERyYWdBY3Rpb25zQWxsb3dlZCwgJm1fY3VycmVudERyYWdEYXRh
LCBtb3VzZUJ1dHRvbnMsIFF0OjpOb01vZGlmaWVyKTsKKyAgICBzZW5kRXZlbnQobV9wYWdlLCAm
ZHJhZ0V2ZW50KTsKIH0KIAogLy8gU2ltdWxhdGVzIGEgbW91c2UgZG93biBldmVudCBmb3IgZHJh
ZyB3aXRob3V0IHNlbmRpbmcgYW4gYWN0dWFsIG1vdXNlIGRvd24gZXZlbnQuCkBAIC0yMzMsOCAr
MjQ3LDggQEAgdm9pZCBFdmVudFNlbmRlcjo6YmVnaW5EcmFnV2l0aEZpbGVzKGNvbnN0IFFTdHJp
bmdMaXN0JiBmaWxlcykKICAgICBtX2N1cnJlbnREcmFnRGF0YS5zZXRVcmxzKGZpbGVVcmxzKTsK
ICAgICBtX2N1cnJlbnREcmFnQWN0aW9uc0FsbG93ZWQgPSBRdDo6Q29weUFjdGlvbjsKICAgICBR
dDo6TW91c2VCdXR0b25zIG1vdXNlQnV0dG9ucyA9IG1fbW91c2VCdXR0b25zIHwgUXQ6OkxlZnRC
dXR0b247Ci0gICAgUURyYWdFbnRlckV2ZW50KiBldmVudCA9IG5ldyBRRHJhZ0VudGVyRXZlbnQo
bV9tb3VzZVBvcywgbV9jdXJyZW50RHJhZ0FjdGlvbnNBbGxvd2VkLCAmbV9jdXJyZW50RHJhZ0Rh
dGEsIG1vdXNlQnV0dG9ucywgUXQ6Ok5vTW9kaWZpZXIpOwotICAgIHNlbmRFdmVudChtX3BhZ2Us
IGV2ZW50KTsKKyAgICBRRHJhZ0VudGVyRXZlbnQgZXZlbnQobV9tb3VzZVBvcywgbV9jdXJyZW50
RHJhZ0FjdGlvbnNBbGxvd2VkLCAmbV9jdXJyZW50RHJhZ0RhdGEsIG1vdXNlQnV0dG9ucywgUXQ6
Ok5vTW9kaWZpZXIpOworICAgIHNlbmRFdmVudChtX3BhZ2UsICZldmVudCk7CiB9CiAKICNpZm5k
ZWYgUVRfTk9fV0hFRUxFVkVOVApAQCAtMjU5LDcgKzI3Myw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6
OmNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5KGludCB4LCBpbnQgeSkKICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICBldmVudCA9IG5ldyBRV2hlZWxFdmVudChtX21vdXNlUG9zLCBtX21vdXNlUG9z
LCAoeCAqIDEyMCkgLyB0aWNrU3RlcCwgbV9tb3VzZUJ1dHRvbnMsIFF0OjpOb01vZGlmaWVyLCBR
dDo6SG9yaXpvbnRhbCk7CiAKLSAgICAgICAgc2VuZE9yUXVldWVFdmVudChldmVudCk7CisgICAg
ICAgIHNlbmRFdmVudEluT3JkZXIoZXZlbnQpOwogICAgIH0KICAgICBpZiAoeSkgewogICAgICAg
ICBRRXZlbnQqIGV2ZW50OwpAQCAtMjY5LDE1ICsyODMsMTQgQEAgdm9pZCBFdmVudFNlbmRlcjo6
Y29udGludW91c01vdXNlU2Nyb2xsQnkoaW50IHgsIGludCB5KQogICAgICAgICB9IGVsc2UKICAg
ICAgICAgICAgIGV2ZW50ID0gbmV3IFFXaGVlbEV2ZW50KG1fbW91c2VQb3MsIG1fbW91c2VQb3Ms
ICh5ICogMTIwKSAvIHRpY2tTdGVwLCBtX21vdXNlQnV0dG9ucywgUXQ6Ok5vTW9kaWZpZXIsIFF0
OjpWZXJ0aWNhbCk7CiAKLSAgICAgICAgc2VuZE9yUXVldWVFdmVudChldmVudCk7CisgICAgICAg
IHNlbmRFdmVudEluT3JkZXIoZXZlbnQpOwogICAgIH0KIH0KICNlbmRpZgogCiB2b2lkIEV2ZW50
U2VuZGVyOjpsZWFwRm9yd2FyZChpbnQgbXMpCiB7Ci0gICAgZXZlbnRRdWV1ZVtlbmRPZlF1ZXVl
XS5tX2RlbGF5ID0gbXM7Ci0gICAgLy9xRGVidWcoKSA8PCAiRXZlbnRTZW5kZXI6OmxlYXBGb3J3
YXJkIiA8PCBtczsKKyAgICBtX2RlbGF5ID0gbXM7CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXI6Omtl
eURvd24oY29uc3QgUVN0cmluZyYgc3RyaW5nLCBjb25zdCBRU3RyaW5nTGlzdCYgbW9kaWZpZXJz
LCB1bnNpZ25lZCBpbnQgbG9jYXRpb24pCkBAIC01NTUsOSArNTY4LDkgQEAgdm9pZCBFdmVudFNl
bmRlcjo6c2VuZFRvdWNoRXZlbnQoUUV2ZW50OjpUeXBlIHR5cGUpCiAgICAgICAgIFFXaW5kb3dT
eXN0ZW1JbnRlcmZhY2U6OnJlZ2lzdGVyVG91Y2hEZXZpY2UoZGV2aWNlKTsKICAgICB9CiAKLSAg
ICBRVG91Y2hFdmVudCBldmVudCh0eXBlLCBkZXZpY2UsIG1fdG91Y2hNb2RpZmllcnMpOwotICAg
IGV2ZW50LnNldFRvdWNoUG9pbnRzKG1fdG91Y2hQb2ludHMpOwotICAgIHNlbmRFdmVudChtX3Bh
Z2UsICZldmVudCk7CisgICAgUVRvdWNoRXZlbnQqIGV2ZW50ID0gbmV3IFFUb3VjaEV2ZW50KHR5
cGUsIGRldmljZSwgbV90b3VjaE1vZGlmaWVycyk7CisgICAgZXZlbnQtPnNldFRvdWNoUG9pbnRz
KG1fdG91Y2hQb2ludHMpOworICAgIHNlbmRFdmVudEluT3JkZXIoZXZlbnQpOwogICAgIFFMaXN0
PFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50Pjo6SXRlcmF0b3IgaXQgPSBtX3RvdWNoUG9pbnRzLmJl
Z2luKCk7CiAgICAgd2hpbGUgKGl0ICE9IG1fdG91Y2hQb2ludHMuZW5kKCkpIHsKICAgICAgICAg
aWYgKGl0LT5zdGF0ZSgpID09IFF0OjpUb3VjaFBvaW50UmVsZWFzZWQpCkBAIC02MzYsNTIgKzY0
OSwxNSBAQCByZWRvOgogICAgIHJldHVybiAwOwogfQogCi12b2lkIEV2ZW50U2VuZGVyOjpzZW5k
T3JRdWV1ZUV2ZW50KFFFdmVudCogZXZlbnQpCi17Ci0gICAgLy8gTW91c2UgbW92ZSBldmVudHMg
YXJlIHF1ZXVlZCBpZgotICAgIC8vIDEuIEEgcHJldmlvdXMgZXZlbnQgd2FzIHF1ZXVlZC4KLSAg
ICAvLyAyLiBBIGRlbGF5IHdhcyBzZXQtdXAgYnkgbGVhcEZvcndhcmQoKS4KLSAgICAvLyAzLiBB
IGNhbGwgdG8gbW91c2VNb3ZlVG8gd2hpbGUgdGhlIG1vdXNlIGJ1dHRvbiBpcyBwcmVzc2VkIGNv
dWxkIGluaXRpYXRlIGEgZHJhZyBvcGVyYXRpb24sIGFuZCB0aGF0IGRvZXMgbm90IHJldHVybiB1
bnRpbCBtb3VzZVVwIGlzIHByb2Nlc3NlZC4KLSAgICAvLyBUbyBiZSBzYWZlIGFuZCBhdm9pZCBh
IGRlYWRsb2NrLCB0aGlzIGV2ZW50IGlzIHF1ZXVlZC4KLSAgICBpZiAoZW5kT2ZRdWV1ZSA9PSBz
dGFydE9mUXVldWUgJiYgIWV2ZW50UXVldWVbZW5kT2ZRdWV1ZV0ubV9kZWxheSAmJiAoIShtX21v
dXNlQnV0dG9uUHJlc3NlZCAmJiAobV9ldmVudExvb3AgJiYgZXZlbnQtPnR5cGUoKSA9PSBRRXZl
bnQ6Ok1vdXNlQnV0dG9uUmVsZWFzZSkpKSkgewotICAgICAgICBzZW5kRXZlbnQobV9wYWdlLT52
aWV3KCksIGV2ZW50KTsKLSAgICAgICAgZGVsZXRlIGV2ZW50OwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGV2ZW50UXVldWVbZW5kT2ZRdWV1ZSsrXS5tX2V2ZW50ID0gZXZlbnQ7Ci0gICAg
ZXZlbnRRdWV1ZVtlbmRPZlF1ZXVlXS5tX2RlbGF5ID0gMDsKLSAgICByZXBsYXlTYXZlZEV2ZW50
cyhldmVudC0+dHlwZSgpICE9IFFFdmVudDo6TW91c2VNb3ZlKTsKLX0KLQotdm9pZCBFdmVudFNl
bmRlcjo6cmVwbGF5U2F2ZWRFdmVudHMoYm9vbCBmbHVzaCkKK3ZvaWQgRXZlbnRTZW5kZXI6OnNl
bmRFdmVudEluT3JkZXIoUUV2ZW50KiBldmVudCkKIHsKLSAgICBpZiAoc3RhcnRPZlF1ZXVlIDwg
ZW5kT2ZRdWV1ZSkgewotICAgICAgICAvLyBGaXJzdCBzZW5kIGFsbCB0aGUgZXZlbnRzIHRoYXQg
YXJlIHJlYWR5IHRvIGJlIHNlbnQKLSAgICAgICAgd2hpbGUgKCFldmVudFF1ZXVlW3N0YXJ0T2ZR
dWV1ZV0ubV9kZWxheSAmJiBzdGFydE9mUXVldWUgPCBlbmRPZlF1ZXVlKSB7Ci0gICAgICAgICAg
ICBRRXZlbnQqIGV2ID0gZXZlbnRRdWV1ZVtzdGFydE9mUXVldWUrK10ubV9ldmVudDsKLSAgICAg
ICAgICAgIHBvc3RFdmVudChtX3BhZ2UtPnZpZXcoKSwgZXYpOwotICAgICAgICB9Ci0gICAgICAg
IGlmIChzdGFydE9mUXVldWUgPT0gZW5kT2ZRdWV1ZSkgewotICAgICAgICAgICAgLy8gUmVzZXQg
dGhlIHF1ZXVlCi0gICAgICAgICAgICBzdGFydE9mUXVldWUgPSAwOwotICAgICAgICAgICAgZW5k
T2ZRdWV1ZSA9IDA7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBRVGVzdDo6cVdhaXQo
ZXZlbnRRdWV1ZVtzdGFydE9mUXVldWVdLm1fZGVsYXkpOwotICAgICAgICAgICAgZXZlbnRRdWV1
ZVtzdGFydE9mUXVldWVdLm1fZGVsYXkgPSAwOwotICAgICAgICB9CisgICAgaWYgKG1fZGVsYXkp
IHsKKyAgICAgICAgUVRlc3Q6OnFXYWl0KG1fZGVsYXkpOworICAgICAgICBtX2RlbGF5ID0gMDsK
ICAgICB9Ci0gICAgaWYgKCFmbHVzaCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gU2VuZCBh
IG1hcmtlciBldmVudCwgaXQgd2lsbCB0ZWxsIHVzIHdoZW4gaXQgaXMgc2FmZSB0byBleGl0IHRo
ZSBuZXcgZXZlbnQgbG9vcAotICAgIFFFdmVudCogZHJ0RXZlbnQgPSBuZXcgUUV2ZW50KChRRXZl
bnQ6OlR5cGUpRFJUX01FU1NBR0VfRE9ORSk7Ci0gICAgUUFwcGxpY2F0aW9uOjpwb3N0RXZlbnQo
bV9wYWdlLT52aWV3KCksIGRydEV2ZW50KTsKIAotICAgIC8vIFN0YXJ0IGFuIGV2ZW50IGxvb3Ag
Zm9yIGFzeW5jIGhhbmRsaW5nIG9mIERyYWcgJiBEcm9wCi0gICAgbV9ldmVudExvb3AgPSBuZXcg
UUV2ZW50TG9vcDsKLSAgICBtX2V2ZW50TG9vcC0+ZXhlYygpOwotICAgIGRlbGV0ZSBtX2V2ZW50
TG9vcDsKLSAgICBtX2V2ZW50TG9vcCA9IDA7CisgICAgc2VuZEV2ZW50KG1fcGFnZS0+dmlldygp
LCBldmVudCk7CisgICAgZGVsZXRlIGV2ZW50OwogfQogCiBib29sIEV2ZW50U2VuZGVyOjpldmVu
dEZpbHRlcihRT2JqZWN0KiB3YXRjaGVkLCBRRXZlbnQqIGV2ZW50KQpAQCAtNjk3LDE3ICs2NzMs
MTEgQEAgYm9vbCBFdmVudFNlbmRlcjo6ZXZlbnRGaWx0ZXIoUU9iamVjdCogd2F0Y2hlZCwgUUV2
ZW50KiBldmVudCkKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBRRXZlbnQ6Ok1vdXNlTW92ZToK
ICAgICBjYXNlIFFFdmVudDo6R3JhcGhpY3NTY2VuZU1vdXNlTW92ZToKLSAgICAgICAgaWYgKG1f
bW91c2VCdXR0b25QcmVzc2VkKQotICAgICAgICAgICAgbV9kcmFnID0gdHJ1ZTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBRRXZlbnQ6Ok1vdXNlQnV0dG9uUmVsZWFzZToKICAgICBjYXNlIFFF
dmVudDo6R3JhcGhpY3NTY2VuZU1vdXNlUmVsZWFzZToKICAgICAgICAgbV9tb3VzZUJ1dHRvblBy
ZXNzZWQgPSBmYWxzZTsKLSAgICAgICAgbV9kcmFnID0gZmFsc2U7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgRFJUX01FU1NBR0VfRE9ORToKLSAgICAgICAgbV9ldmVudExvb3AtPmV4aXQoKTsK
LSAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVyUXQuaCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVyUXQuaAppbmRleCBhZDEzY2FkYjZkMjAyNTI2M2M0
OWE3NTlmZDRhNzNiMTNmOTExNDE5Li5jZDQ0YTczMGQ1NThlMTU3ZjZiZDZlZmVjMjM3MjMyMWRi
OWNhNzc2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9FdmVudFNlbmRlclF0
LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRXZlbnRTZW5kZXJRdC5oCkBAIC0xMDQs
OCArMTA0LDcgQEAgcHJpdmF0ZToKIAogcHJpdmF0ZToKICAgICB2b2lkIHNlbmRUb3VjaEV2ZW50
KFFFdmVudDo6VHlwZSk7Ci0gICAgdm9pZCBzZW5kT3JRdWV1ZUV2ZW50KFFFdmVudCopOwotICAg
IHZvaWQgcmVwbGF5U2F2ZWRFdmVudHMoYm9vbCBmbHVzaCk7CisgICAgdm9pZCBzZW5kRXZlbnRJ
bk9yZGVyKFFFdmVudCopOwogICAgIFFQb2ludCBtX21vdXNlUG9zOwogICAgIFFQb2ludCBtX2Ns
aWNrUG9zOwogICAgIFFQb2ludCBtX3RvdWNoUG9pbnRSYWRpdXM7CkBAIC0xMTUsNiArMTE0LDcg
QEAgcHJpdmF0ZToKICAgICBpbnQgbV9jdXJyZW50QnV0dG9uOwogICAgIGJvb2wgbV9tb3VzZUJ1
dHRvblByZXNzZWQ7CiAgICAgYm9vbCBtX2RyYWc7CisgICAgYm9vbCBtX2Ryb3BQb3NzaWJsZTsK
ICAgICBRTWltZURhdGEgbV9jdXJyZW50RHJhZ0RhdGE7CiAgICAgUXQ6OkRyb3BBY3Rpb25zIG1f
Y3VycmVudERyYWdBY3Rpb25zQWxsb3dlZDsKICAgICBRRXZlbnRMb29wKiBtX2V2ZW50TG9vcDsK
QEAgLTEyNyw2ICsxMjcsNyBAQCBwcml2YXRlOgogICAgIFFUYXBBbmRIb2xkR2VzdHVyZSBtX3Rh
cEFuZEhvbGRHZXN0dXJlOwogICAgIFFMaXN0PFFHZXN0dXJlKj4gbV9nZXN0dXJlczsKICNlbmRp
ZgorICAgIGludCBtX2RlbGF5OwogICAgIGJvb2wgbV90b3VjaEFjdGl2ZTsKIH07CiAjZW5kaWYg
Ly8gIEV2ZW50U2VuZGVyUXRfaApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg3OGNkZTRmNzgyMTA5NmY0NzU0M2YzNmIyNjU2
OWQ1NDlmN2YxZWEuLjY4OGY1MTBiZTNhZTM5ZTk2NmU2MWY3MjIyYmYyMmEyZjkwYjE3MzAgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wNC0xNiAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8
YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRdIEZhaWxpbmcgRHJhZy1hbmQt
ZHJvcCB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzEzMzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDbGVhbnVwIHNraXBwZWQgRHJhZyduJ0Ryb3AgZXZlbnRzLiBTb21lIHN0aWxsIGZhaWwgYW5k
IG5lZWRzIGludmVzdGlnYXRpbmcsCisgICAgICAgIGJ1dCBtb3JlIHRoYW4gaGFsZiBoYXZlIGJl
ZW4gdW5za2lwcGVkIG5vdy4KKworICAgICAgICAqIHBsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlv
bnM6CisKIDIwMTMtMDQtMTYgIFBhbiBEZW5nICA8cGFuLmRlbmdAaW50ZWwuY29tPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFtOZXR3b3JrXSBDb3ZlciB0aGUgdHlwZSBvZiBwcmVmbGlnaHQg
eGhyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZDQyYzU5
MjMzMjdhZmM2OTE1NzU5NDY1MjE2OWU0MmZlMTg5Nzk4NC4uY2EzYWJjOWQyOWUwMmU4MzI5ZmI3
OWM3NzdlZjRlZDcxMzM0OWFlMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0
YXRpb25zCkBAIC00NzgsMTEwICs0NzgsNzggQEAgaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
VHlwZU9wdGlvbnMKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICMKICMgICAgICAgRHJhZyBhbmQgRHJv
cCBTdXBwb3J0IGluIERSVC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ICMKLSMgRHJhZyBuIGRyb3Agc3VwcG9ydCBvbiBEUlQg
Y2Fubm90IHdvcmsgYXQgdGhlIG1vbWVudCBiZWNhdXNlIFF0J3MgZHJhZyduJ2Ryb3AKLSMgcmVs
aWVzIG9uIGFuIFggZXZlbnQgZ2V0dGluZyB0byB0aGUgbWFpbiB3aW5kb3cuIEluIHRoZSBhYnNl
bmNlIG9mIGJlaW5nIGFibGUKLSMgdG8gcmVjZWl2ZSB0aGlzIGV2ZW50LCBydW5uaW5nIHdpbmRv
d2xlc3MsIERSVCBjYW5ub3QgdGVsbCB3aGF0IGlzIGJlaW5nIGRyb3BwZWQgYW5kIHdoZXJlLgot
IyBCdWc6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTMzMgotCi1o
dHRwL3Rlc3RzL21pc2MvYnViYmxlLWRyYWctZXZlbnRzLmh0bWwKLWh0dHAvdGVzdHMvc2VjdXJp
dHkvZHJhZy1vdmVyLXJlbW90ZS1jb250ZW50LWlmcmFtZS5odG1sCi1odHRwL3Rlc3RzL2xvY2Fs
L2RyYWctb3Zlci1yZW1vdGUtY29udGVudC5odG1sCisKIGh0dHAvdGVzdHMvbG9jYWwvZmlsZWFw
aQotaHR0cC90ZXN0cy9zZWN1cml0eS9kcmFnLWRyb3Atc2FtZS11bmlxdWUtb3JpZ2luLmh0bWwK
LQotZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGFUcmFuc2Zlci1zZXREYXRhLWdldERhdGEuaHRtbAot
ZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctZHJvcC11cmwtd2l0aC1zdHlsZS5odG1sCi1lZGl0aW5n
L3Bhc3RlYm9hcmQvZmlsZS1kcmFnLXRvLWVkaXRhYmxlLmh0bWwKLWVkaXRpbmcvcGFzdGVib2Fy
ZC9maWxlLWlucHV0LWZpbGVzLWFjY2Vzcy5odG1sCi1mYXN0L2V2ZW50cy9wcmV2ZW50LWRyYWct
dG8tbmF2aWdhdGUuaHRtbAotZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9sb25nLXByZXNzLW9u
LWRyYWdnYWJsZS1lbGVtZW50LXRyaWdnZXJzLWRyYWcuaHRtbAotZmFzdC9mb3Jtcy9maWxlL2lu
cHV0LWZpbGUtcmUtcmVuZGVyLmh0bWwKLWh0dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJvYXJkL2Ns
aXBib2FyZC1maWxlLWFjY2Vzcy5odG1sCi0KLWVkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWltYWdl
LWluLWFib3V0LWJsYW5rLWZyYW1lLmh0bWwKLWVkaXRpbmcvcGFzdGVib2FyZC9maWxlcy1kdXJp
bmctcGFnZS1kcmFncy5odG1sCi1lZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1kcm9wLWxpc3QuaHRt
bAotZWRpdGluZy9wYXN0ZWJvYXJkLzQ5NDcxMzAuaHRtbAotZWRpdGluZy9wYXN0ZWJvYXJkL2Nv
cHktc3RhbmRhbG9uZS1pbWFnZS5odG1sCi1lZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1kcm9wLWRl
YWQtZnJhbWUuaHRtbAotZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctZHJvcC1pbnB1dC10ZXh0YXJl
YS5odG1sCi1lZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1kcm9wLWlucHV0LWluLXN2Zy5zdmcKLWVk
aXRpbmcvcGFzdGVib2FyZC9kcmFnLWRyb3AtaWZyYW1lLXJlZnJlc2gtY3Jhc2guaHRtbAotZWRp
dGluZy9wYXN0ZWJvYXJkL2RyYWctZHJvcC1tb2RpZmllcy1wYWdlLmh0bWwKLWVkaXRpbmcvcGFz
dGVib2FyZC9kcmFnLWRyb3AtdXJsLXRleHQuaHRtbAotZWRpdGluZy9wYXN0ZWJvYXJkL2Ryb3At
ZmlsZS1zdmcuaHRtbAotZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctaW1hZ2UtdG8tY29udGVudGVk
aXRhYmxlLWluLWlmcmFtZS5odG1sCi1lZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1zZWxlY3RlZC1p
bWFnZS10by1jb250ZW50ZWRpdGFibGUuaHRtbAotZWRpdGluZy9wYXN0ZWJvYXJkL2Ryb3AtbGlu
ay5odG1sCi1lZGl0aW5nL3Bhc3RlYm9hcmQvZHJvcC10ZXh0LXdpdGhvdXQtc2VsZWN0aW9uLmh0
bWwKLWVkaXRpbmcvcGFzdGVib2FyZC9lbWFjcy1jdHJsLWEtay15Lmh0bWwKLWVkaXRpbmcvcGFz
dGVib2FyZC9lbWFjcy1jdHJsLWstd2l0aC1tb3ZlLmh0bWwKLWVkaXRpbmcvcGFzdGVib2FyZC9l
bWFjcy1jdHJsLWsteS0wMDEuaHRtbAotZWRpdGluZy9wYXN0ZWJvYXJkL3NtYXJ0LWRyYWctZHJv
cC5odG1sCi1lZGl0aW5nL3Bhc3RlYm9hcmQvc3ViZnJhbWUtZHJhZ25kcm9wLTEuaHRtbAotZWRp
dGluZy9wYXN0ZWJvYXJkL2dldC1kYXRhLXRleHQtcGxhaW4tZHJvcC5odG1sCi1lZGl0aW5nL3Bh
c3RlYm9hcmQvZHJvcC10ZXh0LWV2ZW50cy5odG1sCi1lZGl0aW5nL3Bhc3RlYm9hcmQvZHJvcC10
ZXh0LWV2ZW50cy1zaWRlZWZmZWN0Lmh0bWwKLWVkaXRpbmcvcGFzdGVib2FyZC9kcm9wLXRleHQt
ZXZlbnRzLXNpZGVlZmZlY3QtY3Jhc2guaHRtbAotZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctYW5k
LWRyb3AtaW1hZ2UtY29udGVudGVkaXRhYmxlLmh0bWwKLWVkaXRpbmcvcGFzdGVib2FyZC9kcmFn
LWFuZC1kcm9wLWlucHV0aW1hZ2UtY29udGVudGVkaXRhYmxlLmh0bWwKLWVkaXRpbmcvcGFzdGVi
b2FyZC9kcmFnLWFuZC1kcm9wLW9iamVjdGltYWdlLWNvbnRlbnRlZGl0YWJsZS5odG1sCiAKICMg
ZGF0YS10cmFuc2Zlci1pdGVtcyBpcyBub3QgYSBkZWZhdWx0IGJ1aWxkIG9wdGlvbgogIyBTZWUg
YnVnIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDA2OAotZWRpdGlu
Zy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMuaHRtbAotZWRpdGluZy9wYXN0ZWJvYXJk
L2RhdGEtdHJhbnNmZXItaXRlbXMtZHJhZy1kcm9wLWZpbGUuaHRtbAotZWRpdGluZy9wYXN0ZWJv
YXJkL2RhdGEtdHJhbnNmZXItaXRlbXMtZHJhZy1kcm9wLWVudHJ5Lmh0bWwKLWVkaXRpbmcvcGFz
dGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW1zLWRyYWctZHJvcC1zdHJpbmcuaHRtbAotZmFzdC9l
dmVudHMvY2xpcGJvYXJkLWRhdGFUcmFuc2Zlckl0ZW1MaXN0Lmh0bWwKLWZhc3QvZXZlbnRzL2Ry
YWctZGF0YVRyYW5zZmVySXRlbUxpc3QuaHRtbAotZmFzdC9ldmVudHMvZHJhZy1kYXRhVHJhbnNm
ZXJJdGVtTGlzdC1maWxlLWhhbmRsaW5nLmh0bWwKLQotIyBQYXN0ZUJvYXJkOjpwbGFpblRleHQo
KSBkb2VzIG5vdCBzdXBwb3J0IGZpbGUgbmFtZXMuCi1lZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1m
aWxlcy10by1lZGl0YWJsZS1lbGVtZW50Lmh0bWwKLQotIyBNaXNzaW5nIGRyYWcgJiBkcm9wIGZ1
bmN0aW9uYWxpdHkgaW4gRFJUCi1lZGl0aW5nL3Bhc3RlYm9hcmQvZHJvcC1pbnB1dHRleHQtYWNx
dWlyZXMtc3R5bGUuaHRtbAotZmFzdC9jc3MvdXNlci1kcmFnLW5vbmUuaHRtbAotc3ZnL2FzLWlt
YWdlL2RyYWctc3ZnLWFzLWltYWdlLmh0bWwKLWZhc3QvZm9ybXMvcmFuZ2Uvc2xpZGVyLWRlbGV0
ZS13aGlsZS1kcmFnZ2luZy10aHVtYi5odG1sCi1mYXN0L2Zvcm1zL3NlbGVjdC1tdWx0aXBsZS1l
bGVtZW50cy13aXRoLW1vdXNlLWRyYWctd2l0aC1vcHRpb25zLWxlc3MtdGhhbi1zaXplLmh0bWwK
K2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW1zLmh0bWwgWyBTa2lwIF0KK2Vk
aXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW1zLWRyYWctZHJvcC1maWxlLmh0bWwg
WyBTa2lwIF0KK2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW1zLWRyYWctZHJv
cC1lbnRyeS5odG1sIFsgU2tpcCBdCitlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1p
dGVtcy1kcmFnLWRyb3Atc3RyaW5nLmh0bWwgWyBTa2lwIF0KK2Zhc3QvZXZlbnRzL2NsaXBib2Fy
ZC1kYXRhVHJhbnNmZXJJdGVtTGlzdC5odG1sIFsgU2tpcCBdCitmYXN0L2V2ZW50cy9kcmFnLWRh
dGFUcmFuc2Zlckl0ZW1MaXN0Lmh0bWwgWyBTa2lwIF0KK2Zhc3QvZXZlbnRzL2RyYWctZGF0YVRy
YW5zZmVySXRlbUxpc3QtZmlsZS1oYW5kbGluZy5odG1sIFsgU2tpcCBdCitmYXN0L2V2ZW50cy9k
cmFnLWFuZC1kcm9wLXN1YmZyYW1lLWRhdGFUcmFuc2Zlci5odG1sIFsgU2tpcCBdCiAKICMgQ3Vz
dG9tIE1JTUUgdHlwZSBzdXBwb3J0IGluIERhdGFUcmFuc2ZlciBub3QgeWV0IGltcGxlbWVudGVk
LgotZWRpdGluZy9wYXN0ZWJvYXJkL2NsaXBib2FyZC1jdXN0b21EYXRhLmh0bWwKLWZhc3QvZXZl
bnRzL2RyYWctY3VzdG9tRGF0YS5odG1sCitlZGl0aW5nL3Bhc3RlYm9hcmQvY2xpcGJvYXJkLWN1
c3RvbURhdGEuaHRtbCBbIFNraXAgXQorZmFzdC9ldmVudHMvZHJhZy1jdXN0b21EYXRhLmh0bWwg
WyBTa2lwIF0KIAogIyBFdmVudFNlbmRlcjo6ZHVtcEZpbGVuYW1lQmVpbmdEcmFnZ2VkIG5vdCBp
bXBsZW1lbnRlZC4KICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYx
ODI4Ci1mYXN0L2V2ZW50cy9kcmFnLWltYWdlLWZpbGVuYW1lLmh0bWwKLQotIyAtLS0tLS0tIG1p
c3NpbmcgZHJhZy1hbmQtZHJvcCBzdXBwb3J0Ci0jIFNlZSBidWcgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMzMyCi1mYXN0L2V2ZW50cy9kcmFnLXBhcmVudC1ub2Rl
Lmh0bWwKLWZhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AuaHRtbAotZmFzdC9ldmVudHMvZHJhZy1h
bmQtZHJvcC1kYXRhVHJhbnNmZXItdHlwZXMtbm9jcmFzaC5odG1sCi1mYXN0L2V2ZW50cy9kcmFn
LWFuZC1kcm9wLWZpcmUtZHJhZy1kcmFnb3Zlci5odG1sCi1mYXN0L2V2ZW50cy9kcmFnLWFuZC1k
cm9wLXN1YmZyYW1lLWRhdGFUcmFuc2Zlci5odG1sCi1mYXN0L2V2ZW50cy9kcmFnLWxpbmsuaHRt
bAotZmFzdC9ldmVudHMvZHJhZy10ZXh0LXdpdGgtY2xlYXIuaHRtbAotZmFzdC9ldmVudHMvb25k
cm9wLXRleHQtaHRtbC5odG1sCi1mYXN0L2V2ZW50cy9kcm9wLWhhbmRsZXItc2hvdWxkLW5vdC1z
dG9wLW5hdmlnYXRlLmh0bWwKLWZhc3QvZXZlbnRzL2Ryb3B6b25lLTAwMS5odG1sCi1mYXN0L2V2
ZW50cy9kcm9wem9uZS0wMDIuaHRtbAotZmFzdC9ldmVudHMvZHJvcHpvbmUtMDAzLmh0bWwKLWZh
c3QvZXZlbnRzL2Ryb3B6b25lLTAwNC5odG1sCi1mYXN0L2V2ZW50cy9kcm9wem9uZS0wMDUuaHRt
bAotZmFzdC9ldmVudHMvZHJvcC13aXRoLWZpbGUtcGF0aHMuaHRtbAotZmFzdC9ldmVudHMvbW92
aW5nLXRleHQtc2hvdWxkLWZpcmUtZHJvcC1hbmQtZHJhZ2VuZC1ldmVudHMuaHRtbAotZmFzdC9l
dmVudHMvbW92aW5nLXRleHQtc2hvdWxkLWZpcmUtZHJvcC1hbmQtZHJhZ2VuZC1ldmVudHMtMi5o
dG1sCi1mYXN0L2V2ZW50cy9pbnB1dC1lbGVtZW50LWRpc3BsYXktbm9uZS1pbi1kcmFnbGVhdmUt
Y3Jhc2guaHRtbAotZmFzdC9ldmVudHMvb25seS12YWxpZC1kcm9wLXRhcmdldHMtcmVjZWl2ZS1m
aWxlLWRyb3AuaHRtbAorZmFzdC9ldmVudHMvZHJhZy1pbWFnZS1maWxlbmFtZS5odG1sIFsgU2tp
cCBdCisKKyMgVGVzdHMgd2l0aCB2YXJ5aW5nIGRlZ3JlZXMgb2YgZmFpbHVyZSBhZnRlciBkcmFn
LWFuZC1kcm9wIHdhcyBpbXBsZW1lbnRlZCBpbiBEUlQ6CisjIE5lZWRzIHRvIGJlIGludmVzdGln
YXRlZC4KKyMgQSBmZXcgbG9va3MgbGlrZSB0aGV5IGp1c3QgbmVlZCBuZXcgYmFzZWxpbmUsIHNv
bWUgY291bGQgYmUgaXNzdWVzIHdpdGggRFJULCAKKyMgYW5kIHRoZSByZXN0IGFyZSBwcm9iYWJs
eSByZWFsIGJ1Z3MgaW4gb3VyIERyYWcnbidEcm9wIGltcGxlbWVudGF0aW9uLgorZWRpdGluZy9w
YXN0ZWJvYXJkL2RhdGFUcmFuc2Zlci1zZXREYXRhLWdldERhdGEuaHRtbCBbIEZhaWx1cmUgXQor
ZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctZHJvcC1saXN0Lmh0bWwgWyBGYWlsdXJlIF0KK2VkaXRp
bmcvcGFzdGVib2FyZC9lbWFjcy1jdHJsLWstd2l0aC1tb3ZlLmh0bWwgWyBGYWlsdXJlIF0KK2Vk
aXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8tZWRpdGFibGUuaHRtbCBbIEZhaWx1cmUgXQor
ZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtaW5wdXQtZmlsZXMtYWNjZXNzLmh0bWwgWyBGYWlsdXJl
IF0KK2VkaXRpbmcvcGFzdGVib2FyZC9maWxlcy1kdXJpbmctcGFnZS1kcmFncy5odG1sIFsgRmFp
bHVyZSBdCitlZGl0aW5nL3Bhc3RlYm9hcmQvZ2V0LWRhdGEtdGV4dC1wbGFpbi1kcm9wLmh0bWwg
WyBGYWlsdXJlIF0KK2h0dHAvdGVzdHMvbG9jYWwvZHJhZy1vdmVyLXJlbW90ZS1jb250ZW50Lmh0
bWwgWyBGYWlsdXJlIF0KK2h0dHAvdGVzdHMvbWlzYy9idWJibGUtZHJhZy1ldmVudHMuaHRtbCBb
IEZhaWx1cmUgXQoraHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvY2xpcGJvYXJkLWZpbGUt
YWNjZXNzLmh0bWwgWyBGYWlsdXJlIF0KK2h0dHAvdGVzdHMvc2VjdXJpdHkvZHJhZy1vdmVyLXJl
bW90ZS1jb250ZW50LWlmcmFtZS5odG1sIFsgRmFpbHVyZSBdCitmYXN0L2V2ZW50cy9kcmFnLWFu
ZC1kcm9wLmh0bWwgWyBGYWlsdXJlIF0KK2Zhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtZmlyZS1k
cmFnLWRyYWdvdmVyLmh0bWwgWyBGYWlsdXJlIF0KK2Zhc3QvZXZlbnRzL2Ryb3B6b25lLTAwMS5o
dG1sIFsgRmFpbHVyZSBdCitmYXN0L2V2ZW50cy9kcm9wem9uZS0wMDIuaHRtbCBbIEZhaWx1cmUg
XQorZmFzdC9ldmVudHMvZHJvcHpvbmUtMDAzLmh0bWwgWyBGYWlsdXJlIF0KK2Zhc3QvZXZlbnRz
L2Ryb3B6b25lLTAwNC5odG1sIFsgRmFpbHVyZSBdCitmYXN0L2V2ZW50cy9kcm9wem9uZS0wMDUu
aHRtbCBbIEZhaWx1cmUgXQorZmFzdC9ldmVudHMvZHJvcC13aXRoLWZpbGUtcGF0aHMuaHRtbCBb
IEZhaWx1cmUgXQorZmFzdC9ldmVudHMvaW5wdXQtZWxlbWVudC1kaXNwbGF5LW5vbmUtaW4tZHJh
Z2xlYXZlLWNyYXNoLmh0bWwgWyBGYWlsdXJlIF0KK2Zhc3QvZXZlbnRzL29uZHJvcC10ZXh0LWh0
bWwuaHRtbCBbIEZhaWx1cmUgXQorZmFzdC9ldmVudHMvb25seS12YWxpZC1kcm9wLXRhcmdldHMt
cmVjZWl2ZS1maWxlLWRyb3AuaHRtbCBbIEZhaWx1cmUgXQorZmFzdC9ldmVudHMvcHJldmVudC1k
cmFnLXRvLW5hdmlnYXRlLmh0bWwgWyBGYWlsdXJlIF0KK2Zhc3QvZm9ybXMvcmFuZ2Uvc2xpZGVy
LWRlbGV0ZS13aGlsZS1kcmFnZ2luZy10aHVtYi5odG1sIFsgRmFpbHVyZSBdCitmYXN0L2Zvcm1z
L3NlbGVjdC1tdWx0aXBsZS1lbGVtZW50cy13aXRoLW1vdXNlLWRyYWctd2l0aC1vcHRpb25zLWxl
c3MtdGhhbi1zaXplLmh0bWwgWyBGYWlsdXJlIF0KIAotIyBOZXcgdGVzdCBhZGRlZCBpbiByMTQ1
MTk1IGlzIGZhaWxpbmcKLXdlYmtpdC5vcmcvYi8xMTE4NTMgZWRpdGluZy9wYXN0ZWJvYXJkL2Ns
ZWFudXAtb24tbW92ZS5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTExODUzIGVkaXRpbmcv
cGFzdGVib2FyZC9kcmFnLWxpc3QtaXRlbS5odG1sIFsgU2tpcCBdCisjIFBhc3RlQm9hcmQ6OnBs
YWluVGV4dCgpIGRvZXMgbm90IHN1cHBvcnQgZmlsZSBuYW1lcy4KK2VkaXRpbmcvcGFzdGVib2Fy
ZC9kcmFnLWZpbGVzLXRvLWVkaXRhYmxlLWVsZW1lbnQuaHRtbCBbIEZhaWx1cmUgXQogCi13ZWJr
aXQub3JnL2IvMTEzMTI2IGVkaXRpbmcvcGFzdGVib2FyZC9jYW4tcmVhZC1pbi1kcmFnc3RhcnQt
ZXZlbnQuaHRtbCBbIFNraXAgXQorIyBOZXcgdGVzdCBhZGRlZCBpbiByMTQ1MTk1IGlzIGZhaWxp
bmcKK3dlYmtpdC5vcmcvYi8xMTE4NTMgZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctbGlzdC1pdGVt
Lmh0bWwgWyBGYWlsdXJlIF0KKworIyBUZXN0cyB3aXRoIG1pc3NpbmcgYmFzZWxpbmVzIGFmdGVy
IGRyYWctYW5kLWRyb3Agd2FzIGltcGxlbWVudGVkIGluIERSVDoKKyMgTmVlZHMgdG8gYmUgaW52
ZXN0aWdhdGVkLgorZWRpdGluZy9wYXN0ZWJvYXJkLzQ5NDcxMzAuaHRtbCBbIE1pc3NpbmcgXQor
ZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktc3RhbmRhbG9uZS1pbWFnZS5odG1sIFsgTWlzc2luZyBd
CitlZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1kcm9wLWRlYWQtZnJhbWUuaHRtbCBbIE1pc3Npbmcg
XQorZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctZHJvcC1tb2RpZmllcy1wYWdlLmh0bWwgWyBNaXNz
aW5nIF0KK2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWltYWdlLXRvLWNvbnRlbnRlZGl0YWJsZS1p
bi1pZnJhbWUuaHRtbCBbIE1pc3NpbmcgXQorZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctc2VsZWN0
ZWQtaW1hZ2UtdG8tY29udGVudGVkaXRhYmxlLmh0bWwgWyBNaXNzaW5nIF0KK2VkaXRpbmcvcGFz
dGVib2FyZC9kcm9wLXRleHQtd2l0aG91dC1zZWxlY3Rpb24uaHRtbCBbIE1pc3NpbmcgXQorZWRp
dGluZy9wYXN0ZWJvYXJkL2VtYWNzLWN0cmwtYS1rLXkuaHRtbCBbIE1pc3NpbmcgXQorZWRpdGlu
Zy9wYXN0ZWJvYXJkL2VtYWNzLWN0cmwtay15LTAwMS5odG1sIFsgTWlzc2luZyBdCitlZGl0aW5n
L3Bhc3RlYm9hcmQvc21hcnQtZHJhZy1kcm9wLmh0bWwgWyBNaXNzaW5nIF0KK2VkaXRpbmcvcGFz
dGVib2FyZC9zdWJmcmFtZS1kcmFnbmRyb3AtMS5odG1sIFsgTWlzc2luZyBdCitmYXN0L2Zvcm1z
L2ZpbGUvaW5wdXQtZmlsZS1yZS1yZW5kZXIuaHRtbCBbIE1pc3NpbmcgXQogCiAjID09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PSAjCiAjICAgICAgIEZhaWxpbmcgSFRUUCB0ZXN0cy4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198319</attachid>
            <date>2013-04-16 05:43:13 -0700</date>
            <delta_ts>2013-04-30 01:11:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-31332-20130416144246.patch</filename>
            <type>text/plain</type>
            <size>29498</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4NTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGFkNTVjYTM4ZmRi
NTAzOWExZWM5YTViMjdkNjhkZTBhNjM3YThhNTAuLmEyMDhmODk5YWNjYzE3ZjJlNTM0MGU1MzIx
ZTI3MjIyMzFhMzRmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTMtMDQt
MTYgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAg
ICAgICAgW1F0XSBGYWlsaW5nIERyYWctYW5kLWRyb3AgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMzMyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50cyBhIG1vY2sgRHJhZ0NsaWVu
dCB0aGF0IHN0b3JlcyB0aGUgZHJhZ2dlZCBkYXRhCisgICAgICAgIGxvY2FsbHksIHNvIHRoYXQg
RFJUIGNhbiBhY2Nlc3MgaXQgdG8gc2VuZCBRRHJhZyBldmVudHMuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NsaWVu
dE1vY2s6OnN0YXJ0RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ2xpZW50TW9jazo6ZW5k
RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ2xpZW50TW9jazo6ZHJhZ0RhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0NsaWVudE1vY2s6OmRyb3BBY3Rpb25zKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuaDoKKyAgICAgICAgKERyYWdDbGllbnRRdCk6Cisg
ICAgICAgIChEcmFnQ2xpZW50TW9jayk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ2xpZW50TW9j
azo6RHJhZ0NsaWVudE1vY2spOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpjdXJy
ZW50RHJhZ0RhdGEpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmN1cnJlbnRE
cm9wQWN0aW9ucyk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZW5kQ3VycmVu
dERyYWcpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcDoKKyAgICAg
ICAgKFFXZWJQYWdlQWRhcHRlcjo6aW5pdGlhbGl6ZVdlYkNvcmVQYWdlKToKKwogMjAxMy0wNC0x
MSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KIAogICAg
ICAgICBbUXRdIEV2ZW50SGFuZGxlciBzaG91bGQgaGFuZGxlIFNwYWNlIGFuZCBCYWNrU3BhY2Ug
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRR
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRRdC5jcHAK
aW5kZXggMmUwZDA1ZWQxMjM0OGYwNGVmNzk0ZjA1MmFiM2FlNjlhMTI5MzRiNi4uN2EwNzEyNzg1
YjQ4NGFlMjQxMDllYWEyMjRmYTdiZmQ4Mzk5ZTU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmNwcApAQCAtMTEyLDUgKzExMiw0MyBAQCB2
b2lkIERyYWdDbGllbnRRdDo6c3RhcnREcmFnKERyYWdJbWFnZVJlZiBkcmFnSW1hZ2UsIGNvbnN0
IEludFBvaW50JiwgY29uc3QgSW50UAogI2VuZGlmCiB9CiAKK3ZvaWQgRHJhZ0NsaWVudE1vY2s6
OnN0YXJ0RHJhZyhEcmFnSW1hZ2VSZWYsIGNvbnN0IEludFBvaW50JiwgY29uc3QgSW50UG9pbnQm
LCBDbGlwYm9hcmQqIGNsaXBib2FyZCwgRnJhbWUqIGZyYW1lLCBib29sKQoreworICAgIGlmICht
X2RyYWdEYXRhKQorICAgICAgICBkZWxldGUgbV9kcmFnRGF0YTsKKyAgICBtX2RyYWdEYXRhID0g
c3RhdGljX2Nhc3Q8Q2xpcGJvYXJkUXQqPihjbGlwYm9hcmQpLT5jbGlwYm9hcmREYXRhKCk7Cisg
ICAgbV9kcm9wQWN0aW9ucyA9IGRyYWdPcGVyYXRpb25zVG9Ecm9wQWN0aW9ucyhjbGlwYm9hcmQt
PnNvdXJjZU9wZXJhdGlvbigpKTsKKyAgICBzdGF0aWNfY2FzdDxDbGlwYm9hcmRRdCo+KGNsaXBi
b2FyZCktPmludmFsaWRhdGVXcml0YWJsZURhdGEoKTsKKyAgICBtX2RyYWdTdGFydEZyYW1lID0g
ZnJhbWU7Cit9CisKK3ZvaWQgRHJhZ0NsaWVudE1vY2s6OmVuZERyYWcoUXQ6OkRyb3BBY3Rpb24g
YWNjZXB0ZWRBY3Rpb24pCit7CisgICAgaWYgKG1fZHJhZ0RhdGEpCisgICAgICAgIGRlbGV0ZSBt
X2RyYWdEYXRhOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuOworICAgIG1fZHJhZ0RhdGEgPSAw
OworICAgIG1fZHJvcEFjdGlvbnMgPSBRdDo6SWdub3JlQWN0aW9uOworCisgICAgLy8gU2VuZCBk
cmFnRW5kIGV2ZW50CisgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1lKG1fY2hyb21lQ2xpZW50LT5z
Y3JlZW5Ub1Jvb3RWaWV3KFFDdXJzb3I6OnBvcygpKSwgUUN1cnNvcjo6cG9zKCksIExlZnRCdXR0
b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCAwKTsKKyAgICBtX2RyYWdTdGFydEZyYW1lLT5ldmVudEhhbmRsZXIoKS0+ZHJhZ1NvdXJj
ZUVuZGVkQXQobWUsIGRyb3BBY3Rpb25Ub0RyYWdPcGVyYXRpb24oYWNjZXB0ZWRBY3Rpb24pKTsK
KyAgICBtX2RyYWdTdGFydEZyYW1lLT5wYWdlKCktPmRyYWdDb250cm9sbGVyKCktPmRyYWdFbmRl
ZCgpOworfQorCitjb25zdCBRTWltZURhdGEqIERyYWdDbGllbnRNb2NrOjpkcmFnRGF0YSgpCit7
CisgICAgaWYgKG1fZHJhZ0RhdGEpCisgICAgICAgIHJldHVybiBtX2RyYWdEYXRhOworICAgIHJl
dHVybiAwOworfQorCitRdDo6RHJvcEFjdGlvbnMgRHJhZ0NsaWVudE1vY2s6OmRyb3BBY3Rpb25z
KCkKK3sKKyAgICBpZiAobV9kcmFnRGF0YSkKKyAgICAgICAgcmV0dXJuIG1fZHJvcEFjdGlvbnM7
CisgICAgcmV0dXJuIFF0OjpJZ25vcmVBY3Rpb247Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVu
dFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRRdC5oCmlu
ZGV4IGFhOGI4MDg1YjgxNTBmMGExNjQzNGRjMzY0NTVmYWM1MWQ3YzJlM2UuLmY2OGU4NjYxZDMz
ZTRhNmY0ZGJjN2E1MzMzNTdiM2ZmYjU5MDk0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuaApAQCAtMjgsOSArMjgsMTYgQEAKIAogI2luY2x1
ZGUgIkRyYWdDbGllbnQuaCIKIAorI2luY2x1ZGUgPHFuYW1lc3BhY2UuaD4KKworUVRfQkVHSU5f
TkFNRVNQQUNFCitjbGFzcyBRTWltZURhdGE7CitRVF9FTkRfTkFNRVNQQUNFCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2hyb21lQ2xpZW50OworY2xhc3MgRnJhbWU7CiAKIGNsYXNz
IERyYWdDbGllbnRRdCA6IHB1YmxpYyBEcmFnQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTQxLDEwICs0
OCwyMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VB
Y3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKTsKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IEludFBvaW50
JiwgQ2xpcGJvYXJkKik7ICAgIAogICAgIHZpcnR1YWwgdm9pZCBzdGFydERyYWcoRHJhZ0ltYWdl
UmVmLCBjb25zdCBJbnRQb2ludCYgZHJhZ0ltYWdlT3JpZ2luLCBjb25zdCBJbnRQb2ludCYgZXZl
bnRQb3MsIENsaXBib2FyZCosIEZyYW1lKiwgYm9vbCBsaW5rRHJhZyA9IGZhbHNlKTsKLXByaXZh
dGU6Citwcm90ZWN0ZWQ6CiAgICAgQ2hyb21lQ2xpZW50KiBtX2Nocm9tZUNsaWVudDsKIH07CiAK
K2NsYXNzIERyYWdDbGllbnRNb2NrIDogcHVibGljIERyYWdDbGllbnRRdCB7CitwdWJsaWM6Cisg
ICAgRHJhZ0NsaWVudE1vY2soQ2hyb21lQ2xpZW50KiBjaHJvbWVDbGllbnQpIDogRHJhZ0NsaWVu
dFF0KGNocm9tZUNsaWVudCksIG1fZHJhZ0RhdGEoMCkgeyB9OworICAgIHZpcnR1YWwgdm9pZCBz
dGFydERyYWcoRHJhZ0ltYWdlUmVmLCBjb25zdCBJbnRQb2ludCYgZHJhZ0ltYWdlT3JpZ2luLCBj
b25zdCBJbnRQb2ludCYgZXZlbnRQb3MsIENsaXBib2FyZCosIEZyYW1lKiwgYm9vbCBsaW5rRHJh
ZyA9IGZhbHNlKTsKKyAgICBjb25zdCBRTWltZURhdGEqIGRyYWdEYXRhKCk7CisgICAgUXQ6OkRy
b3BBY3Rpb25zIGRyb3BBY3Rpb25zKCk7CisgICAgdm9pZCBlbmREcmFnKFF0OjpEcm9wQWN0aW9u
KTsKK3ByaXZhdGU6CisgICAgUU1pbWVEYXRhKiBtX2RyYWdEYXRhOworICAgIFF0OjpEcm9wQWN0
aW9ucyBtX2Ryb3BBY3Rpb25zOworICAgIEZyYW1lICptX2RyYWdTdGFydEZyYW1lOworfTsKKwog
fQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKaW5kZXggMTExMDBkYzZhM2EzYmI0MjJh
OGExMTljZDAzMmU3MzA3ZGYzZDY4My4uYzBjOGZhZjA4M2RjZGI4YTViZTEzZjA2M2ZkNmY4YzAy
OWU5NWIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKQEAgLTM0LDYgKzM0LDggQEAKICNpbmNs
dWRlICJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJEZXZpY2VPcmll
bnRhdGlvbkRhdGEuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgorI2luY2x1ZGUgIkRy
YWdDbGllbnRRdC5oIgorI2luY2x1ZGUgIkRyYWdDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRWRp
dG9yLmgiCiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50UXQuaCIKICNpbmNsdWRlICJFbGVtZW50Lmgi
CkBAIC05MDQsMyArOTA2LDIxIEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmdldEpT
V2luZG93T2JqZWN0KFFXZWJGcmFtZUFkYXB0ZXIqIGFkYXB0ZXIsIEpTQ29uCiAgICAgKm9iamVj
dCA9IHRvUmVmKHdpbmRvdyk7CiAgICAgKmNvbnRleHQgPSB0b1JlZih3aW5kb3ctPmdsb2JhbEV4
ZWMoKSk7CiB9CisKK2NvbnN0IFFNaW1lRGF0YSogRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmN1
cnJlbnREcmFnRGF0YShRV2ViUGFnZUFkYXB0ZXIqIGFkYXB0b3IpCit7CisgICAgRHJhZ0NsaWVu
dE1vY2sqIGRyYWdDbGllbnQgPSBzdGF0aWNfY2FzdDxEcmFnQ2xpZW50TW9jayo+KGFkYXB0b3It
PnBhZ2UtPmRyYWdDb250cm9sbGVyKCktPmNsaWVudCgpKTsKKyAgICByZXR1cm4gZHJhZ0NsaWVu
dC0+ZHJhZ0RhdGEoKTsKK30KKworUXQ6OkRyb3BBY3Rpb25zIER1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0OjpjdXJyZW50RHJvcEFjdGlvbnMoUVdlYlBhZ2VBZGFwdGVyKiBhZGFwdG9yKQoreworICAg
IERyYWdDbGllbnRNb2NrKiBkcmFnQ2xpZW50ID0gc3RhdGljX2Nhc3Q8RHJhZ0NsaWVudE1vY2sq
PihhZGFwdG9yLT5wYWdlLT5kcmFnQ29udHJvbGxlcigpLT5jbGllbnQoKSk7CisgICAgcmV0dXJu
IGRyYWdDbGllbnQtPmRyb3BBY3Rpb25zKCk7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQ6OmVuZEN1cnJlbnREcmFnKFFXZWJQYWdlQWRhcHRlciogYWRhcHRvciwgUXQ6OkRyb3BB
Y3Rpb24gYWNjZXB0ZWRBY3Rpb24pCit7CisgICAgRHJhZ0NsaWVudE1vY2sqIGRyYWdDbGllbnQg
PSBzdGF0aWNfY2FzdDxEcmFnQ2xpZW50TW9jayo+KGFkYXB0b3ItPnBhZ2UtPmRyYWdDb250cm9s
bGVyKCktPmNsaWVudCgpKTsKKyAgICByZXR1cm4gZHJhZ0NsaWVudC0+ZW5kRHJhZyhhY2NlcHRl
ZEFjdGlvbik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKaW5kZXggMDE5MjNlMjU1ZTRjOWNjZTQwMzQz
NmNjNWE3YTIzMzEyNTZmZGZhOC4uNjdjNjBjZTZiYjU4OGQ2ZDY0Nzk0OGQxODgxMTdjNDFhZWUw
NzczOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaApAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBRV2ViSGlz
dG9yeUl0ZW07CiBjbGFzcyBRV2ViU2NyaXB0V29ybGQ7CiAKIFFUX0JFR0lOX05BTUVTUEFDRQor
Y2xhc3MgUU1pbWVEYXRhOwogY2xhc3MgUVVybDsKIFFUX0VORF9OQU1FU1BBQ0UKIApAQCAtMjA3
LDYgKzIwOCwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGlzYWJsZURlZmF1bHRUeXBl
c2V0dGluZ0ZlYXR1cmVzKCk7CiAKICAgICBzdGF0aWMgdm9pZCBnZXRKU1dpbmRvd09iamVjdChR
V2ViRnJhbWVBZGFwdGVyKiwgSlNDb250ZXh0UmVmKiwgSlNPYmplY3RSZWYqKTsKKworICAgIHN0
YXRpYyBjb25zdCBRTWltZURhdGEqIGN1cnJlbnREcmFnRGF0YShRV2ViUGFnZUFkYXB0ZXIqKTsK
KyAgICBzdGF0aWMgUXQ6OkRyb3BBY3Rpb25zIGN1cnJlbnREcm9wQWN0aW9ucyhRV2ViUGFnZUFk
YXB0ZXIqKTsKKyAgICBzdGF0aWMgdm9pZCBlbmRDdXJyZW50RHJhZyhRV2ViUGFnZUFkYXB0ZXIq
LCBRdDo6RHJvcEFjdGlvbik7CiB9OwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcAppbmRleCBmOGNmYmFlODEzNDM4
MzU5Yzc4YjJmYzc2MjUwNTZmZTUxYmI2ZGE4Li43MmI4ZGEyMzQwNTlmYWU5MjFiMmQ2ZGZkNjA1
OGZiNGU4ODQ2MTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L1FXZWJQYWdlQWRhcHRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9RV2ViUGFnZUFkYXB0ZXIuY3BwCkBAIC0xODAsMTQgKzE4MCwxNSBAQCBRV2ViUGFnZUFkYXB0
ZXI6OlFXZWJQYWdlQWRhcHRlcigpCiAKIHZvaWQgUVdlYlBhZ2VBZGFwdGVyOjppbml0aWFsaXpl
V2ViQ29yZVBhZ2UoKQogewotI2lmIEVOQUJMRShHRU9MT0NBVElPTikgfHwgRU5BQkxFKERFVklD
RV9PUklFTlRBVElPTikKICAgICBjb25zdCBib29sIHVzZU1vY2sgPSBRV2ViUGFnZUFkYXB0ZXI6
OmRydFJ1bjsKLSNlbmRpZgogICAgIFBhZ2U6OlBhZ2VDbGllbnRzIHBhZ2VDbGllbnRzOwogICAg
IHBhZ2VDbGllbnRzLmNocm9tZUNsaWVudCA9IG5ldyBDaHJvbWVDbGllbnRRdCh0aGlzKTsKICAg
ICBwYWdlQ2xpZW50cy5jb250ZXh0TWVudUNsaWVudCA9IG5ldyBDb250ZXh0TWVudUNsaWVudFF0
KCk7CiAgICAgcGFnZUNsaWVudHMuZWRpdG9yQ2xpZW50ID0gbmV3IEVkaXRvckNsaWVudFF0KHRo
aXMpOwotICAgIHBhZ2VDbGllbnRzLmRyYWdDbGllbnQgPSBuZXcgRHJhZ0NsaWVudFF0KHBhZ2VD
bGllbnRzLmNocm9tZUNsaWVudCk7CisgICAgaWYgKHVzZU1vY2spCisgICAgICAgIHBhZ2VDbGll
bnRzLmRyYWdDbGllbnQgPSBuZXcgRHJhZ0NsaWVudE1vY2socGFnZUNsaWVudHMuY2hyb21lQ2xp
ZW50KTsKKyAgICBlbHNlCisgICAgICAgIHBhZ2VDbGllbnRzLmRyYWdDbGllbnQgPSBuZXcgRHJh
Z0NsaWVudFF0KHBhZ2VDbGllbnRzLmNocm9tZUNsaWVudCk7CiAgICAgcGFnZUNsaWVudHMuaW5z
cGVjdG9yQ2xpZW50ID0gbmV3IEluc3BlY3RvckNsaWVudFF0KHRoaXMpOwogICAgIHBhZ2UgPSBu
ZXcgUGFnZShwYWdlQ2xpZW50cyk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCBhNzU1NmIwMzBjZTIyYWZmOWU1NWVjMmQzODAwNGM0ZDU1YTRm
ZDY1Li44MTY5ZGIwZWIxNWYzMThjZjk1YzY5ZDgwZDBmYTc5MzgwNmVhMWMxIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAK
KzIwMTMtMDQtMTYgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5j
b20+CisKKyAgICAgICAgW1F0XSBGYWlsaW5nIERyYWctYW5kLWRyb3AgdGVzdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMzMyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5zdGVhZCBvZiB0cnlpbmcg
dG8gd29yayB0b2dldGhlciB3aXRoIHRoZSBibG9ja2luZyBRRHJhZywKKyAgICAgICAgd2Ugbm93
IHNlbmQgdGhlIFFEcmFnIGV2ZW50cyBtYW51YWxseS4gVGhpcyBtZWFucyB3ZSBnaXZlCisgICAg
ICAgIHVwIG9uIHRlc3RpbmcgaG93IFFEcmFnIGFuZCBXZWJDb3JlIHdvcmtzIHRvZ2V0aGVyLiBX
ZSBkbworICAgICAgICBob3dldmVyIGdldCB0byB0ZXN0IGhvdyB3ZWxsIERyYWcnbidEcm9wIHdv
cmtzIGluIFdlYkNvcmUuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9FdmVudFNlbmRl
clF0LmNwcDoKKyAgICAgICAgKEV2ZW50U2VuZGVyOjpFdmVudFNlbmRlcik6CisgICAgICAgIChF
dmVudFNlbmRlcjo6bW91c2VEb3duKToKKyAgICAgICAgKEV2ZW50U2VuZGVyOjptb3VzZVVwKToK
KyAgICAgICAgKEV2ZW50U2VuZGVyOjptb3VzZU1vdmVUbyk6CisgICAgICAgIChFdmVudFNlbmRl
cjo6YmVnaW5EcmFnV2l0aEZpbGVzKToKKyAgICAgICAgKEV2ZW50U2VuZGVyOjpjb250aW51b3Vz
TW91c2VTY3JvbGxCeSk6CisgICAgICAgIChFdmVudFNlbmRlcjo6bGVhcEZvcndhcmQpOgorICAg
ICAgICAoRXZlbnRTZW5kZXI6OnNlbmRUb3VjaEV2ZW50KToKKyAgICAgICAgKEV2ZW50U2VuZGVy
OjpzZW5kRXZlbnRJbk9yZGVyKToKKyAgICAgICAgKEV2ZW50U2VuZGVyOjpldmVudEZpbHRlcik6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvRXZlbnRTZW5kZXJRdC5oOgorICAgICAgICAo
RXZlbnRTZW5kZXIpOgorCiAyMDEzLTA0LTE2ICBNaWtlIFdlc3QgIDxta3dzdEBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCB1cGRhdGUgdG8gdGhlIHdhdGNobGlzdC4KZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVyUXQuY3BwIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvRXZlbnRTZW5kZXJRdC5jcHAKaW5kZXggMzUyZjFkZTk4NjlkMDU0
N2NhNWYyNzU5NjA0YWI2MTcyZDIwM2RlYS4uZDZhMWFiN2RlZjNlM2E3YjA1ZWIxNDk1ODNmNGE4
MzI1MmE5ZWU1NSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRXZlbnRTZW5k
ZXJRdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRXZlbnRTZW5kZXJRdC5jcHAK
QEAgLTQ3LDE3ICs0Nyw2IEBACiAvLyBIZW5jZSBRdCBEUlQgYWRvcHRzIGEgZml4ZWQgem9vbS1m
YWN0b3IgKDEuMikgZm9yIGNvbXBhdGliaWxpdHkuCiAjZGVmaW5lIFpPT01fU1RFUCAgICAgICAg
ICAgMS4yCiAKLSNkZWZpbmUgRFJUX01FU1NBR0VfRE9ORSAoUUV2ZW50OjpVc2VyICsgMSkKLQot
c3RydWN0IERSVEV2ZW50UXVldWUgewotICAgIFFFdmVudCogbV9ldmVudDsKLSAgICBpbnQgbV9k
ZWxheTsKLX07Ci0KLXN0YXRpYyBEUlRFdmVudFF1ZXVlIGV2ZW50UXVldWVbMTAyNF07Ci1zdGF0
aWMgdW5zaWduZWQgZW5kT2ZRdWV1ZTsKLXN0YXRpYyB1bnNpZ25lZCBzdGFydE9mUXVldWU7Ci0K
IEV2ZW50U2VuZGVyOjpFdmVudFNlbmRlcihRV2ViUGFnZSogcGFyZW50KQogICAgIDogUU9iamVj
dChwYXJlbnQpCiAjaWZuZGVmIFFUX05PX0dFU1RVUkVTCkBAIC02OCwxMiArNTcsMTEgQEAgRXZl
bnRTZW5kZXI6OkV2ZW50U2VuZGVyKFFXZWJQYWdlKiBwYXJlbnQpCiAgICAgbV9wYWdlID0gcGFy
ZW50OwogICAgIG1fbW91c2VCdXR0b25QcmVzc2VkID0gZmFsc2U7CiAgICAgbV9kcmFnID0gZmFs
c2U7Ci0gICAgbWVtc2V0KGV2ZW50UXVldWUsIDAsIHNpemVvZihldmVudFF1ZXVlKSk7Ci0gICAg
ZW5kT2ZRdWV1ZSA9IDA7Ci0gICAgc3RhcnRPZlF1ZXVlID0gMDsKKyAgICBtX2Ryb3BQb3NzaWJs
ZSA9IGZhbHNlOwogICAgIG1fZXZlbnRMb29wID0gMDsKICAgICBtX2N1cnJlbnRCdXR0b24gPSAw
OwogICAgIG1fY3VycmVudERyYWdBY3Rpb25zQWxsb3dlZCA9IDA7CisgICAgbV9kZWxheSA9IDA7
CiAgICAgcmVzZXRDbGlja0NvdW50KCk7CiAgICAgbV9wYWdlLT52aWV3KCktPmluc3RhbGxFdmVu
dEZpbHRlcih0aGlzKTsKICAgICAvLyBUaGlzIGlzIGEgaGFjayB0aGF0IHdvcmtzIGJlY2F1c2Ug
d2Ugbm9ybWFsbHkgc2Nyb2xsIDYwIHBpeGVscyAoMyoyMCkgcGVyIHRpY2ssIGJ1dCBBcHBsZSBz
Y3JvbGxzIDEyMC4KQEAgLTE0Niw3ICsxMzQsNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjptb3VzZURv
d24oaW50IGJ1dHRvbiwgY29uc3QgUVN0cmluZ0xpc3QmIG1vZGlmaWVycykKICAgICAgICAgICAg
ICAgICAgICAgbW91c2VCdXR0b24sIG1fbW91c2VCdXR0b25zLCBtb2RpZnMpOwogICAgIH0KIAot
ICAgIHNlbmRPclF1ZXVlRXZlbnQoZXZlbnQpOworICAgIHNlbmRFdmVudEluT3JkZXIoZXZlbnQp
OwogCiAgICAgbV9jbGlja1RpbWVyLnN0YXJ0KFFBcHBsaWNhdGlvbjo6ZG91YmxlQ2xpY2tJbnRl
cnZhbCgpLCB0aGlzKTsKIH0KQEAgLTE3NSw3ICsxNjMsNiBAQCB2b2lkIEV2ZW50U2VuZGVyOjpt
b3VzZVVwKGludCBidXR0b24pCiAKICAgICBtX21vdXNlQnV0dG9ucyAmPSB+bW91c2VCdXR0b247
CiAKLS8vICAgICBxRGVidWcoKSA8PCAiRXZlbnRTZW5kZXI6Om1vdXNlVXAiIDw8IGZyYW1lOwog
ICAgIFFFdmVudCogZXZlbnQ7CiAgICAgaWYgKGlzR3JhcGhpY3NCYXNlZCgpKSB7CiAgICAgICAg
IGV2ZW50ID0gY3JlYXRlR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQoUUV2ZW50OjpHcmFwaGljc1Nj
ZW5lTW91c2VSZWxlYXNlLApAQCAtMTg1LDE5ICsxNzIsMzIgQEAgdm9pZCBFdmVudFNlbmRlcjo6
bW91c2VVcChpbnQgYnV0dG9uKQogICAgICAgICAgICAgICAgICAgICBtX21vdXNlUG9zLCBtX21v
dXNlUG9zLCBtb3VzZUJ1dHRvbiwgbV9tb3VzZUJ1dHRvbnMsIFF0OjpOb01vZGlmaWVyKTsKICAg
ICB9CiAKLSAgICBzZW5kT3JRdWV1ZUV2ZW50KGV2ZW50KTsKKyAgICBzZW5kRXZlbnRJbk9yZGVy
KGV2ZW50KTsKKworICAgIGNvbnN0IFFNaW1lRGF0YSogY3VycmVudERyYWdEYXRhID0gRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQ6OmN1cnJlbnREcmFnRGF0YShtX3BhZ2UtPmhhbmRsZSgpKTsKKyAg
ICBpZiAoY3VycmVudERyYWdEYXRhKSB7CisgICAgICAgIFF0OjpEcm9wQWN0aW9uIGFjY2VwdGVk
QWN0aW9uID0gUXQ6Oklnbm9yZUFjdGlvbjsKKyAgICAgICAgaWYgKG1fZHJvcFBvc3NpYmxlKSB7
CisgICAgICAgICAgICBRRHJvcEV2ZW50IGRyb3BFdmVudChtX21vdXNlUG9zLCBEdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdDo6Y3VycmVudERyb3BBY3Rpb25zKG1fcGFnZS0+aGFuZGxlKCkpLCBjdXJy
ZW50RHJhZ0RhdGEsIG1fbW91c2VCdXR0b25zLCAgUXQ6Ok5vTW9kaWZpZXIpOworICAgICAgICAg
ICAgc2VuZEV2ZW50KG1fcGFnZSwgJmRyb3BFdmVudCk7CisgICAgICAgICAgICBpZiAoZHJvcEV2
ZW50LmlzQWNjZXB0ZWQoKSkKKyAgICAgICAgICAgICAgICBhY2NlcHRlZEFjdGlvbiA9IGRyb3BF
dmVudC5kcm9wQWN0aW9uKCk7CisgICAgICAgICAgICBtX2Ryb3BQb3NzaWJsZSA9IGZhbHNlOwor
ICAgICAgICB9CisgICAgICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjplbmRDdXJyZW50RHJh
ZyhtX3BhZ2UtPmhhbmRsZSgpLCBhY2NlcHRlZEFjdGlvbik7CisgICAgICAgIG1fZHJhZyA9IGZh
bHNlOworICAgIH0KIAogICAgIGlmIChtX2N1cnJlbnREcmFnRGF0YS51cmxzKCkuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBldmVudCA9IG5ldyBRRHJvcEV2ZW50KG1fbW91c2VQ
b3MsIG1fY3VycmVudERyYWdBY3Rpb25zQWxsb3dlZCwgJm1fY3VycmVudERyYWdEYXRhLCBtX21v
dXNlQnV0dG9ucywgUXQ6Ok5vTW9kaWZpZXIpOwotICAgIHNlbmRFdmVudChtX3BhZ2UsIGV2ZW50
KTsKKyAgICBRRHJvcEV2ZW50IGRyb3BFdmVudChtX21vdXNlUG9zLCBtX2N1cnJlbnREcmFnQWN0
aW9uc0FsbG93ZWQsICZtX2N1cnJlbnREcmFnRGF0YSwgbV9tb3VzZUJ1dHRvbnMsIFF0OjpOb01v
ZGlmaWVyKTsKKyAgICBzZW5kRXZlbnQobV9wYWdlLCAmZHJvcEV2ZW50KTsKICAgICBtX2N1cnJl
bnREcmFnRGF0YS5jbGVhcigpOwogfQogCiB2b2lkIEV2ZW50U2VuZGVyOjptb3VzZU1vdmVUbyhp
bnQgeCwgaW50IHkpCiB7Ci0vLyAgICAgcURlYnVnKCkgPDwgIkV2ZW50U2VuZGVyOjptb3VzZU1v
dmVUbyIgPDwgeCA8PCB5OwogICAgIG1fbW91c2VQb3MgPSBRUG9pbnQoeCwgeSk7CiAKICAgICBR
RXZlbnQqIGV2ZW50OwpAQCAtMjA5LDE0ICsyMDksMjYgQEAgdm9pZCBFdmVudFNlbmRlcjo6bW91
c2VNb3ZlVG8oaW50IHgsIGludCB5KQogICAgICAgICAgICAgICAgICAgICBtX21vdXNlUG9zLCBt
X21vdXNlUG9zLCBRdDo6Tm9CdXR0b24sIG1fbW91c2VCdXR0b25zLCBRdDo6Tm9Nb2RpZmllcik7
CiAgICAgfQogCi0gICAgc2VuZE9yUXVldWVFdmVudChldmVudCk7CisgICAgc2VuZEV2ZW50SW5P
cmRlcihldmVudCk7CisKKyAgICBjb25zdCBRTWltZURhdGEqIGN1cnJlbnREcmFnRGF0YSA9IER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpjdXJyZW50RHJhZ0RhdGEobV9wYWdlLT5oYW5kbGUoKSk7
CisgICAgaWYgKGN1cnJlbnREcmFnRGF0YSkgeworICAgICAgICBpZiAoIW1fZHJhZykgeworICAg
ICAgICAgICAgUURyYWdFbnRlckV2ZW50IGRyYWdFbnRlcihtX21vdXNlUG9zLCBEdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdDo6Y3VycmVudERyb3BBY3Rpb25zKG1fcGFnZS0+aGFuZGxlKCkpLCBjdXJy
ZW50RHJhZ0RhdGEsIG1fbW91c2VCdXR0b25zLCBRdDo6Tm9Nb2RpZmllcik7CisgICAgICAgICAg
ICBtX2RyYWcgPSB0cnVlOworICAgICAgICAgICAgc2VuZEV2ZW50KG1fcGFnZSwgJmRyYWdFbnRl
cik7CisgICAgICAgIH0KKyAgICAgICAgUURyYWdNb3ZlRXZlbnQgZHJhZ01vdmUobV9tb3VzZVBv
cywgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmN1cnJlbnREcm9wQWN0aW9ucyhtX3BhZ2UtPmhh
bmRsZSgpKSwgY3VycmVudERyYWdEYXRhLCBtX21vdXNlQnV0dG9ucywgUXQ6Ok5vTW9kaWZpZXIp
OworICAgICAgICBzZW5kRXZlbnQobV9wYWdlLCAmZHJhZ01vdmUpOworICAgICAgICBtX2Ryb3BQ
b3NzaWJsZSA9IGRyYWdNb3ZlLmlzQWNjZXB0ZWQoKSAmJiBkcmFnTW92ZS5kcm9wQWN0aW9uKCkg
IT0gUXQ6Oklnbm9yZUFjdGlvbjsKKyAgICB9CiAKICAgICBpZiAobV9jdXJyZW50RHJhZ0RhdGEu
dXJscygpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUXQ6Ok1vdXNlQnV0dG9u
cyBtb3VzZUJ1dHRvbnMgPSBtX21vdXNlQnV0dG9ucyB8IFF0OjpMZWZ0QnV0dG9uOwotICAgIGV2
ZW50ID0gbmV3IFFEcmFnTW92ZUV2ZW50KG1fbW91c2VQb3MsIG1fY3VycmVudERyYWdBY3Rpb25z
QWxsb3dlZCwgJm1fY3VycmVudERyYWdEYXRhLCBtb3VzZUJ1dHRvbnMsIFF0OjpOb01vZGlmaWVy
KTsKLSAgICBzZW5kRXZlbnQobV9wYWdlLCBldmVudCk7CisgICAgUURyYWdNb3ZlRXZlbnQgZHJh
Z0V2ZW50KG1fbW91c2VQb3MsIG1fY3VycmVudERyYWdBY3Rpb25zQWxsb3dlZCwgJm1fY3VycmVu
dERyYWdEYXRhLCBtb3VzZUJ1dHRvbnMsIFF0OjpOb01vZGlmaWVyKTsKKyAgICBzZW5kRXZlbnQo
bV9wYWdlLCAmZHJhZ0V2ZW50KTsKIH0KIAogLy8gU2ltdWxhdGVzIGEgbW91c2UgZG93biBldmVu
dCBmb3IgZHJhZyB3aXRob3V0IHNlbmRpbmcgYW4gYWN0dWFsIG1vdXNlIGRvd24gZXZlbnQuCkBA
IC0yMzMsOCArMjQ1LDggQEAgdm9pZCBFdmVudFNlbmRlcjo6YmVnaW5EcmFnV2l0aEZpbGVzKGNv
bnN0IFFTdHJpbmdMaXN0JiBmaWxlcykKICAgICBtX2N1cnJlbnREcmFnRGF0YS5zZXRVcmxzKGZp
bGVVcmxzKTsKICAgICBtX2N1cnJlbnREcmFnQWN0aW9uc0FsbG93ZWQgPSBRdDo6Q29weUFjdGlv
bjsKICAgICBRdDo6TW91c2VCdXR0b25zIG1vdXNlQnV0dG9ucyA9IG1fbW91c2VCdXR0b25zIHwg
UXQ6OkxlZnRCdXR0b247Ci0gICAgUURyYWdFbnRlckV2ZW50KiBldmVudCA9IG5ldyBRRHJhZ0Vu
dGVyRXZlbnQobV9tb3VzZVBvcywgbV9jdXJyZW50RHJhZ0FjdGlvbnNBbGxvd2VkLCAmbV9jdXJy
ZW50RHJhZ0RhdGEsIG1vdXNlQnV0dG9ucywgUXQ6Ok5vTW9kaWZpZXIpOwotICAgIHNlbmRFdmVu
dChtX3BhZ2UsIGV2ZW50KTsKKyAgICBRRHJhZ0VudGVyRXZlbnQgZXZlbnQobV9tb3VzZVBvcywg
bV9jdXJyZW50RHJhZ0FjdGlvbnNBbGxvd2VkLCAmbV9jdXJyZW50RHJhZ0RhdGEsIG1vdXNlQnV0
dG9ucywgUXQ6Ok5vTW9kaWZpZXIpOworICAgIHNlbmRFdmVudChtX3BhZ2UsICZldmVudCk7CiB9
CiAKICNpZm5kZWYgUVRfTk9fV0hFRUxFVkVOVApAQCAtMjU5LDcgKzI3MSw3IEBAIHZvaWQgRXZl
bnRTZW5kZXI6OmNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5KGludCB4LCBpbnQgeSkKICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICBldmVudCA9IG5ldyBRV2hlZWxFdmVudChtX21vdXNlUG9zLCBt
X21vdXNlUG9zLCAoeCAqIDEyMCkgLyB0aWNrU3RlcCwgbV9tb3VzZUJ1dHRvbnMsIFF0OjpOb01v
ZGlmaWVyLCBRdDo6SG9yaXpvbnRhbCk7CiAKLSAgICAgICAgc2VuZE9yUXVldWVFdmVudChldmVu
dCk7CisgICAgICAgIHNlbmRFdmVudEluT3JkZXIoZXZlbnQpOwogICAgIH0KICAgICBpZiAoeSkg
ewogICAgICAgICBRRXZlbnQqIGV2ZW50OwpAQCAtMjY5LDE1ICsyODEsMTQgQEAgdm9pZCBFdmVu
dFNlbmRlcjo6Y29udGludW91c01vdXNlU2Nyb2xsQnkoaW50IHgsIGludCB5KQogICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgIGV2ZW50ID0gbmV3IFFXaGVlbEV2ZW50KG1fbW91c2VQb3MsIG1f
bW91c2VQb3MsICh5ICogMTIwKSAvIHRpY2tTdGVwLCBtX21vdXNlQnV0dG9ucywgUXQ6Ok5vTW9k
aWZpZXIsIFF0OjpWZXJ0aWNhbCk7CiAKLSAgICAgICAgc2VuZE9yUXVldWVFdmVudChldmVudCk7
CisgICAgICAgIHNlbmRFdmVudEluT3JkZXIoZXZlbnQpOwogICAgIH0KIH0KICNlbmRpZgogCiB2
b2lkIEV2ZW50U2VuZGVyOjpsZWFwRm9yd2FyZChpbnQgbXMpCiB7Ci0gICAgZXZlbnRRdWV1ZVtl
bmRPZlF1ZXVlXS5tX2RlbGF5ID0gbXM7Ci0gICAgLy9xRGVidWcoKSA8PCAiRXZlbnRTZW5kZXI6
OmxlYXBGb3J3YXJkIiA8PCBtczsKKyAgICBtX2RlbGF5ID0gbXM7CiB9CiAKIHZvaWQgRXZlbnRT
ZW5kZXI6OmtleURvd24oY29uc3QgUVN0cmluZyYgc3RyaW5nLCBjb25zdCBRU3RyaW5nTGlzdCYg
bW9kaWZpZXJzLCB1bnNpZ25lZCBpbnQgbG9jYXRpb24pCkBAIC01NTUsOSArNTY2LDkgQEAgdm9p
ZCBFdmVudFNlbmRlcjo6c2VuZFRvdWNoRXZlbnQoUUV2ZW50OjpUeXBlIHR5cGUpCiAgICAgICAg
IFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OnJlZ2lzdGVyVG91Y2hEZXZpY2UoZGV2aWNlKTsKICAg
ICB9CiAKLSAgICBRVG91Y2hFdmVudCBldmVudCh0eXBlLCBkZXZpY2UsIG1fdG91Y2hNb2RpZmll
cnMpOwotICAgIGV2ZW50LnNldFRvdWNoUG9pbnRzKG1fdG91Y2hQb2ludHMpOwotICAgIHNlbmRF
dmVudChtX3BhZ2UsICZldmVudCk7CisgICAgUVRvdWNoRXZlbnQqIGV2ZW50ID0gbmV3IFFUb3Vj
aEV2ZW50KHR5cGUsIGRldmljZSwgbV90b3VjaE1vZGlmaWVycyk7CisgICAgZXZlbnQtPnNldFRv
dWNoUG9pbnRzKG1fdG91Y2hQb2ludHMpOworICAgIHNlbmRFdmVudEluT3JkZXIoZXZlbnQpOwog
ICAgIFFMaXN0PFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50Pjo6SXRlcmF0b3IgaXQgPSBtX3RvdWNo
UG9pbnRzLmJlZ2luKCk7CiAgICAgd2hpbGUgKGl0ICE9IG1fdG91Y2hQb2ludHMuZW5kKCkpIHsK
ICAgICAgICAgaWYgKGl0LT5zdGF0ZSgpID09IFF0OjpUb3VjaFBvaW50UmVsZWFzZWQpCkBAIC02
MzYsNTIgKzY0NywxNSBAQCByZWRvOgogICAgIHJldHVybiAwOwogfQogCi12b2lkIEV2ZW50U2Vu
ZGVyOjpzZW5kT3JRdWV1ZUV2ZW50KFFFdmVudCogZXZlbnQpCi17Ci0gICAgLy8gTW91c2UgbW92
ZSBldmVudHMgYXJlIHF1ZXVlZCBpZgotICAgIC8vIDEuIEEgcHJldmlvdXMgZXZlbnQgd2FzIHF1
ZXVlZC4KLSAgICAvLyAyLiBBIGRlbGF5IHdhcyBzZXQtdXAgYnkgbGVhcEZvcndhcmQoKS4KLSAg
ICAvLyAzLiBBIGNhbGwgdG8gbW91c2VNb3ZlVG8gd2hpbGUgdGhlIG1vdXNlIGJ1dHRvbiBpcyBw
cmVzc2VkIGNvdWxkIGluaXRpYXRlIGEgZHJhZyBvcGVyYXRpb24sIGFuZCB0aGF0IGRvZXMgbm90
IHJldHVybiB1bnRpbCBtb3VzZVVwIGlzIHByb2Nlc3NlZC4KLSAgICAvLyBUbyBiZSBzYWZlIGFu
ZCBhdm9pZCBhIGRlYWRsb2NrLCB0aGlzIGV2ZW50IGlzIHF1ZXVlZC4KLSAgICBpZiAoZW5kT2ZR
dWV1ZSA9PSBzdGFydE9mUXVldWUgJiYgIWV2ZW50UXVldWVbZW5kT2ZRdWV1ZV0ubV9kZWxheSAm
JiAoIShtX21vdXNlQnV0dG9uUHJlc3NlZCAmJiAobV9ldmVudExvb3AgJiYgZXZlbnQtPnR5cGUo
KSA9PSBRRXZlbnQ6Ok1vdXNlQnV0dG9uUmVsZWFzZSkpKSkgewotICAgICAgICBzZW5kRXZlbnQo
bV9wYWdlLT52aWV3KCksIGV2ZW50KTsKLSAgICAgICAgZGVsZXRlIGV2ZW50OwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIGV2ZW50UXVldWVbZW5kT2ZRdWV1ZSsrXS5tX2V2ZW50ID0gZXZl
bnQ7Ci0gICAgZXZlbnRRdWV1ZVtlbmRPZlF1ZXVlXS5tX2RlbGF5ID0gMDsKLSAgICByZXBsYXlT
YXZlZEV2ZW50cyhldmVudC0+dHlwZSgpICE9IFFFdmVudDo6TW91c2VNb3ZlKTsKLX0KLQotdm9p
ZCBFdmVudFNlbmRlcjo6cmVwbGF5U2F2ZWRFdmVudHMoYm9vbCBmbHVzaCkKK3ZvaWQgRXZlbnRT
ZW5kZXI6OnNlbmRFdmVudEluT3JkZXIoUUV2ZW50KiBldmVudCkKIHsKLSAgICBpZiAoc3RhcnRP
ZlF1ZXVlIDwgZW5kT2ZRdWV1ZSkgewotICAgICAgICAvLyBGaXJzdCBzZW5kIGFsbCB0aGUgZXZl
bnRzIHRoYXQgYXJlIHJlYWR5IHRvIGJlIHNlbnQKLSAgICAgICAgd2hpbGUgKCFldmVudFF1ZXVl
W3N0YXJ0T2ZRdWV1ZV0ubV9kZWxheSAmJiBzdGFydE9mUXVldWUgPCBlbmRPZlF1ZXVlKSB7Ci0g
ICAgICAgICAgICBRRXZlbnQqIGV2ID0gZXZlbnRRdWV1ZVtzdGFydE9mUXVldWUrK10ubV9ldmVu
dDsKLSAgICAgICAgICAgIHBvc3RFdmVudChtX3BhZ2UtPnZpZXcoKSwgZXYpOwotICAgICAgICB9
Ci0gICAgICAgIGlmIChzdGFydE9mUXVldWUgPT0gZW5kT2ZRdWV1ZSkgewotICAgICAgICAgICAg
Ly8gUmVzZXQgdGhlIHF1ZXVlCi0gICAgICAgICAgICBzdGFydE9mUXVldWUgPSAwOwotICAgICAg
ICAgICAgZW5kT2ZRdWV1ZSA9IDA7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBRVGVz
dDo6cVdhaXQoZXZlbnRRdWV1ZVtzdGFydE9mUXVldWVdLm1fZGVsYXkpOwotICAgICAgICAgICAg
ZXZlbnRRdWV1ZVtzdGFydE9mUXVldWVdLm1fZGVsYXkgPSAwOwotICAgICAgICB9CisgICAgaWYg
KG1fZGVsYXkpIHsKKyAgICAgICAgUVRlc3Q6OnFXYWl0KG1fZGVsYXkpOworICAgICAgICBtX2Rl
bGF5ID0gMDsKICAgICB9Ci0gICAgaWYgKCFmbHVzaCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Ly8gU2VuZCBhIG1hcmtlciBldmVudCwgaXQgd2lsbCB0ZWxsIHVzIHdoZW4gaXQgaXMgc2FmZSB0
byBleGl0IHRoZSBuZXcgZXZlbnQgbG9vcAotICAgIFFFdmVudCogZHJ0RXZlbnQgPSBuZXcgUUV2
ZW50KChRRXZlbnQ6OlR5cGUpRFJUX01FU1NBR0VfRE9ORSk7Ci0gICAgUUFwcGxpY2F0aW9uOjpw
b3N0RXZlbnQobV9wYWdlLT52aWV3KCksIGRydEV2ZW50KTsKIAotICAgIC8vIFN0YXJ0IGFuIGV2
ZW50IGxvb3AgZm9yIGFzeW5jIGhhbmRsaW5nIG9mIERyYWcgJiBEcm9wCi0gICAgbV9ldmVudExv
b3AgPSBuZXcgUUV2ZW50TG9vcDsKLSAgICBtX2V2ZW50TG9vcC0+ZXhlYygpOwotICAgIGRlbGV0
ZSBtX2V2ZW50TG9vcDsKLSAgICBtX2V2ZW50TG9vcCA9IDA7CisgICAgc2VuZEV2ZW50KG1fcGFn
ZS0+dmlldygpLCBldmVudCk7CisgICAgZGVsZXRlIGV2ZW50OwogfQogCiBib29sIEV2ZW50U2Vu
ZGVyOjpldmVudEZpbHRlcihRT2JqZWN0KiB3YXRjaGVkLCBRRXZlbnQqIGV2ZW50KQpAQCAtNjk3
LDE3ICs2NzEsMTEgQEAgYm9vbCBFdmVudFNlbmRlcjo6ZXZlbnRGaWx0ZXIoUU9iamVjdCogd2F0
Y2hlZCwgUUV2ZW50KiBldmVudCkKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBRRXZlbnQ6Ok1v
dXNlTW92ZToKICAgICBjYXNlIFFFdmVudDo6R3JhcGhpY3NTY2VuZU1vdXNlTW92ZToKLSAgICAg
ICAgaWYgKG1fbW91c2VCdXR0b25QcmVzc2VkKQotICAgICAgICAgICAgbV9kcmFnID0gdHJ1ZTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBRRXZlbnQ6Ok1vdXNlQnV0dG9uUmVsZWFzZToKICAg
ICBjYXNlIFFFdmVudDo6R3JhcGhpY3NTY2VuZU1vdXNlUmVsZWFzZToKICAgICAgICAgbV9tb3Vz
ZUJ1dHRvblByZXNzZWQgPSBmYWxzZTsKLSAgICAgICAgbV9kcmFnID0gZmFsc2U7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgRFJUX01FU1NBR0VfRE9ORToKLSAgICAgICAgbV9ldmVudExvb3At
PmV4aXQoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsK
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVyUXQuaCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVyUXQuaAppbmRleCBhZDEzY2FkYjZk
MjAyNTI2M2M0OWE3NTlmZDRhNzNiMTNmOTExNDE5Li5jZDQ0YTczMGQ1NThlMTU3ZjZiZDZlZmVj
MjM3MjMyMWRiOWNhNzc2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9FdmVu
dFNlbmRlclF0LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRXZlbnRTZW5kZXJRdC5o
CkBAIC0xMDQsOCArMTA0LDcgQEAgcHJpdmF0ZToKIAogcHJpdmF0ZToKICAgICB2b2lkIHNlbmRU
b3VjaEV2ZW50KFFFdmVudDo6VHlwZSk7Ci0gICAgdm9pZCBzZW5kT3JRdWV1ZUV2ZW50KFFFdmVu
dCopOwotICAgIHZvaWQgcmVwbGF5U2F2ZWRFdmVudHMoYm9vbCBmbHVzaCk7CisgICAgdm9pZCBz
ZW5kRXZlbnRJbk9yZGVyKFFFdmVudCopOwogICAgIFFQb2ludCBtX21vdXNlUG9zOwogICAgIFFQ
b2ludCBtX2NsaWNrUG9zOwogICAgIFFQb2ludCBtX3RvdWNoUG9pbnRSYWRpdXM7CkBAIC0xMTUs
NiArMTE0LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9jdXJyZW50QnV0dG9uOwogICAgIGJvb2wg
bV9tb3VzZUJ1dHRvblByZXNzZWQ7CiAgICAgYm9vbCBtX2RyYWc7CisgICAgYm9vbCBtX2Ryb3BQ
b3NzaWJsZTsKICAgICBRTWltZURhdGEgbV9jdXJyZW50RHJhZ0RhdGE7CiAgICAgUXQ6OkRyb3BB
Y3Rpb25zIG1fY3VycmVudERyYWdBY3Rpb25zQWxsb3dlZDsKICAgICBRRXZlbnRMb29wKiBtX2V2
ZW50TG9vcDsKQEAgLTEyNyw2ICsxMjcsNyBAQCBwcml2YXRlOgogICAgIFFUYXBBbmRIb2xkR2Vz
dHVyZSBtX3RhcEFuZEhvbGRHZXN0dXJlOwogICAgIFFMaXN0PFFHZXN0dXJlKj4gbV9nZXN0dXJl
czsKICNlbmRpZgorICAgIGludCBtX2RlbGF5OwogICAgIGJvb2wgbV90b3VjaEFjdGl2ZTsKIH07
CiAjZW5kaWYgLy8gIEV2ZW50U2VuZGVyUXRfaApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg3OGNkZTRmNzgyMTA5NmY0NzU0
M2YzNmIyNjU2OWQ1NDlmN2YxZWEuLjY4OGY1MTBiZTNhZTM5ZTk2NmU2MWY3MjIyYmYyMmEyZjkw
YjE3MzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wNC0xNiAgQWxsYW4gU2FuZGZlbGQg
SmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRdIEZhaWxpbmcg
RHJhZy1hbmQtZHJvcCB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzEzMzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDbGVhbnVwIHNraXBwZWQgRHJhZyduJ0Ryb3AgZXZlbnRzLiBTb21lIHN0aWxs
IGZhaWwgYW5kIG5lZWRzIGludmVzdGlnYXRpbmcsCisgICAgICAgIGJ1dCBtb3JlIHRoYW4gaGFs
ZiBoYXZlIGJlZW4gdW5za2lwcGVkIG5vdy4KKworICAgICAgICAqIHBsYXRmb3JtL3F0L1Rlc3RF
eHBlY3RhdGlvbnM6CisKIDIwMTMtMDQtMTYgIFBhbiBEZW5nICA8cGFuLmRlbmdAaW50ZWwuY29t
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtOZXR3b3JrXSBDb3ZlciB0aGUgdHlwZSBvZiBw
cmVmbGlnaHQgeGhyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggZDQyYzU5MjMzMjdhZmM2OTE1NzU5NDY1MjE2OWU0MmZlMTg5Nzk4NC4uMjQ3OTI4M2IzYmFj
YWY1MjhhOWY0YjBjMTI5NDk3MGIxMDQ3ZjU3ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9U
ZXN0RXhwZWN0YXRpb25zCkBAIC00NzgsMTEwICs0NzgsNzMgQEAgaHR0cC90ZXN0cy9zZWN1cml0
eS9jb250ZW50VHlwZU9wdGlvbnMKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICMKICMgICAgICAgRHJh
ZyBhbmQgRHJvcCBTdXBwb3J0IGluIERSVC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICMKLSMgRHJhZyBuIGRyb3Agc3VwcG9y
dCBvbiBEUlQgY2Fubm90IHdvcmsgYXQgdGhlIG1vbWVudCBiZWNhdXNlIFF0J3MgZHJhZyduJ2Ry
b3AKLSMgcmVsaWVzIG9uIGFuIFggZXZlbnQgZ2V0dGluZyB0byB0aGUgbWFpbiB3aW5kb3cuIElu
IHRoZSBhYnNlbmNlIG9mIGJlaW5nIGFibGUKLSMgdG8gcmVjZWl2ZSB0aGlzIGV2ZW50LCBydW5u
aW5nIHdpbmRvd2xlc3MsIERSVCBjYW5ub3QgdGVsbCB3aGF0IGlzIGJlaW5nIGRyb3BwZWQgYW5k
IHdoZXJlLgotIyBCdWc6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
MTMzMgotCi1odHRwL3Rlc3RzL21pc2MvYnViYmxlLWRyYWctZXZlbnRzLmh0bWwKLWh0dHAvdGVz
dHMvc2VjdXJpdHkvZHJhZy1vdmVyLXJlbW90ZS1jb250ZW50LWlmcmFtZS5odG1sCi1odHRwL3Rl
c3RzL2xvY2FsL2RyYWctb3Zlci1yZW1vdGUtY29udGVudC5odG1sCisKIGh0dHAvdGVzdHMvbG9j
YWwvZmlsZWFwaQotaHR0cC90ZXN0cy9zZWN1cml0eS9kcmFnLWRyb3Atc2FtZS11bmlxdWUtb3Jp
Z2luLmh0bWwKLQotZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGFUcmFuc2Zlci1zZXREYXRhLWdldERh
dGEuaHRtbAotZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctZHJvcC11cmwtd2l0aC1zdHlsZS5odG1s
Ci1lZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1kcmFnLXRvLWVkaXRhYmxlLmh0bWwKLWVkaXRpbmcv
cGFzdGVib2FyZC9maWxlLWlucHV0LWZpbGVzLWFjY2Vzcy5odG1sCi1mYXN0L2V2ZW50cy9wcmV2
ZW50LWRyYWctdG8tbmF2aWdhdGUuaHRtbAotZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9sb25n
LXByZXNzLW9uLWRyYWdnYWJsZS1lbGVtZW50LXRyaWdnZXJzLWRyYWcuaHRtbAotZmFzdC9mb3Jt
cy9maWxlL2lucHV0LWZpbGUtcmUtcmVuZGVyLmh0bWwKLWh0dHAvdGVzdHMvc2VjdXJpdHkvY2xp
cGJvYXJkL2NsaXBib2FyZC1maWxlLWFjY2Vzcy5odG1sCi0KLWVkaXRpbmcvcGFzdGVib2FyZC9k
cmFnLWltYWdlLWluLWFib3V0LWJsYW5rLWZyYW1lLmh0bWwKLWVkaXRpbmcvcGFzdGVib2FyZC9m
aWxlcy1kdXJpbmctcGFnZS1kcmFncy5odG1sCi1lZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1kcm9w
LWxpc3QuaHRtbAotZWRpdGluZy9wYXN0ZWJvYXJkLzQ5NDcxMzAuaHRtbAotZWRpdGluZy9wYXN0
ZWJvYXJkL2NvcHktc3RhbmRhbG9uZS1pbWFnZS5odG1sCi1lZGl0aW5nL3Bhc3RlYm9hcmQvZHJh
Zy1kcm9wLWRlYWQtZnJhbWUuaHRtbAotZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctZHJvcC1pbnB1
dC10ZXh0YXJlYS5odG1sCi1lZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1kcm9wLWlucHV0LWluLXN2
Zy5zdmcKLWVkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWRyb3AtaWZyYW1lLXJlZnJlc2gtY3Jhc2gu
aHRtbAotZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctZHJvcC1tb2RpZmllcy1wYWdlLmh0bWwKLWVk
aXRpbmcvcGFzdGVib2FyZC9kcmFnLWRyb3AtdXJsLXRleHQuaHRtbAotZWRpdGluZy9wYXN0ZWJv
YXJkL2Ryb3AtZmlsZS1zdmcuaHRtbAotZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctaW1hZ2UtdG8t
Y29udGVudGVkaXRhYmxlLWluLWlmcmFtZS5odG1sCi1lZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1z
ZWxlY3RlZC1pbWFnZS10by1jb250ZW50ZWRpdGFibGUuaHRtbAotZWRpdGluZy9wYXN0ZWJvYXJk
L2Ryb3AtbGluay5odG1sCi1lZGl0aW5nL3Bhc3RlYm9hcmQvZHJvcC10ZXh0LXdpdGhvdXQtc2Vs
ZWN0aW9uLmh0bWwKLWVkaXRpbmcvcGFzdGVib2FyZC9lbWFjcy1jdHJsLWEtay15Lmh0bWwKLWVk
aXRpbmcvcGFzdGVib2FyZC9lbWFjcy1jdHJsLWstd2l0aC1tb3ZlLmh0bWwKLWVkaXRpbmcvcGFz
dGVib2FyZC9lbWFjcy1jdHJsLWsteS0wMDEuaHRtbAotZWRpdGluZy9wYXN0ZWJvYXJkL3NtYXJ0
LWRyYWctZHJvcC5odG1sCi1lZGl0aW5nL3Bhc3RlYm9hcmQvc3ViZnJhbWUtZHJhZ25kcm9wLTEu
aHRtbAotZWRpdGluZy9wYXN0ZWJvYXJkL2dldC1kYXRhLXRleHQtcGxhaW4tZHJvcC5odG1sCi1l
ZGl0aW5nL3Bhc3RlYm9hcmQvZHJvcC10ZXh0LWV2ZW50cy5odG1sCi1lZGl0aW5nL3Bhc3RlYm9h
cmQvZHJvcC10ZXh0LWV2ZW50cy1zaWRlZWZmZWN0Lmh0bWwKLWVkaXRpbmcvcGFzdGVib2FyZC9k
cm9wLXRleHQtZXZlbnRzLXNpZGVlZmZlY3QtY3Jhc2guaHRtbAotZWRpdGluZy9wYXN0ZWJvYXJk
L2RyYWctYW5kLWRyb3AtaW1hZ2UtY29udGVudGVkaXRhYmxlLmh0bWwKLWVkaXRpbmcvcGFzdGVi
b2FyZC9kcmFnLWFuZC1kcm9wLWlucHV0aW1hZ2UtY29udGVudGVkaXRhYmxlLmh0bWwKLWVkaXRp
bmcvcGFzdGVib2FyZC9kcmFnLWFuZC1kcm9wLW9iamVjdGltYWdlLWNvbnRlbnRlZGl0YWJsZS5o
dG1sCiAKICMgZGF0YS10cmFuc2Zlci1pdGVtcyBpcyBub3QgYSBkZWZhdWx0IGJ1aWxkIG9wdGlv
bgogIyBTZWUgYnVnIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDA2
OAotZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMuaHRtbAotZWRpdGluZy9w
YXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMtZHJhZy1kcm9wLWZpbGUuaHRtbAotZWRpdGlu
Zy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMtZHJhZy1kcm9wLWVudHJ5Lmh0bWwKLWVk
aXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW1zLWRyYWctZHJvcC1zdHJpbmcuaHRt
bAotZmFzdC9ldmVudHMvY2xpcGJvYXJkLWRhdGFUcmFuc2Zlckl0ZW1MaXN0Lmh0bWwKLWZhc3Qv
ZXZlbnRzL2RyYWctZGF0YVRyYW5zZmVySXRlbUxpc3QuaHRtbAotZmFzdC9ldmVudHMvZHJhZy1k
YXRhVHJhbnNmZXJJdGVtTGlzdC1maWxlLWhhbmRsaW5nLmh0bWwKLQotIyBQYXN0ZUJvYXJkOjpw
bGFpblRleHQoKSBkb2VzIG5vdCBzdXBwb3J0IGZpbGUgbmFtZXMuCi1lZGl0aW5nL3Bhc3RlYm9h
cmQvZHJhZy1maWxlcy10by1lZGl0YWJsZS1lbGVtZW50Lmh0bWwKLQotIyBNaXNzaW5nIGRyYWcg
JiBkcm9wIGZ1bmN0aW9uYWxpdHkgaW4gRFJUCi1lZGl0aW5nL3Bhc3RlYm9hcmQvZHJvcC1pbnB1
dHRleHQtYWNxdWlyZXMtc3R5bGUuaHRtbAotZmFzdC9jc3MvdXNlci1kcmFnLW5vbmUuaHRtbAot
c3ZnL2FzLWltYWdlL2RyYWctc3ZnLWFzLWltYWdlLmh0bWwKLWZhc3QvZm9ybXMvcmFuZ2Uvc2xp
ZGVyLWRlbGV0ZS13aGlsZS1kcmFnZ2luZy10aHVtYi5odG1sCi1mYXN0L2Zvcm1zL3NlbGVjdC1t
dWx0aXBsZS1lbGVtZW50cy13aXRoLW1vdXNlLWRyYWctd2l0aC1vcHRpb25zLWxlc3MtdGhhbi1z
aXplLmh0bWwKK2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW1zLmh0bWwgWyBT
a2lwIF0KK2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW1zLWRyYWctZHJvcC1m
aWxlLmh0bWwgWyBTa2lwIF0KK2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW1z
LWRyYWctZHJvcC1lbnRyeS5odG1sIFsgU2tpcCBdCitlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10
cmFuc2Zlci1pdGVtcy1kcmFnLWRyb3Atc3RyaW5nLmh0bWwgWyBTa2lwIF0KK2Zhc3QvZXZlbnRz
L2NsaXBib2FyZC1kYXRhVHJhbnNmZXJJdGVtTGlzdC5odG1sIFsgU2tpcCBdCitmYXN0L2V2ZW50
cy9kcmFnLWRhdGFUcmFuc2Zlckl0ZW1MaXN0Lmh0bWwgWyBTa2lwIF0KK2Zhc3QvZXZlbnRzL2Ry
YWctZGF0YVRyYW5zZmVySXRlbUxpc3QtZmlsZS1oYW5kbGluZy5odG1sIFsgU2tpcCBdCitmYXN0
L2V2ZW50cy9kcmFnLWFuZC1kcm9wLXN1YmZyYW1lLWRhdGFUcmFuc2Zlci5odG1sIFsgU2tpcCBd
CiAKICMgQ3VzdG9tIE1JTUUgdHlwZSBzdXBwb3J0IGluIERhdGFUcmFuc2ZlciBub3QgeWV0IGlt
cGxlbWVudGVkLgotZWRpdGluZy9wYXN0ZWJvYXJkL2NsaXBib2FyZC1jdXN0b21EYXRhLmh0bWwK
LWZhc3QvZXZlbnRzL2RyYWctY3VzdG9tRGF0YS5odG1sCitlZGl0aW5nL3Bhc3RlYm9hcmQvY2xp
cGJvYXJkLWN1c3RvbURhdGEuaHRtbCBbIFNraXAgXQorZmFzdC9ldmVudHMvZHJhZy1jdXN0b21E
YXRhLmh0bWwgWyBTa2lwIF0KIAogIyBFdmVudFNlbmRlcjo6ZHVtcEZpbGVuYW1lQmVpbmdEcmFn
Z2VkIG5vdCBpbXBsZW1lbnRlZC4KICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTYxODI4Ci1mYXN0L2V2ZW50cy9kcmFnLWltYWdlLWZpbGVuYW1lLmh0bWwKLQotIyAt
LS0tLS0tIG1pc3NpbmcgZHJhZy1hbmQtZHJvcCBzdXBwb3J0Ci0jIFNlZSBidWcgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMzMyCi1mYXN0L2V2ZW50cy9kcmFnLXBh
cmVudC1ub2RlLmh0bWwKLWZhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AuaHRtbAotZmFzdC9ldmVu
dHMvZHJhZy1hbmQtZHJvcC1kYXRhVHJhbnNmZXItdHlwZXMtbm9jcmFzaC5odG1sCi1mYXN0L2V2
ZW50cy9kcmFnLWFuZC1kcm9wLWZpcmUtZHJhZy1kcmFnb3Zlci5odG1sCi1mYXN0L2V2ZW50cy9k
cmFnLWFuZC1kcm9wLXN1YmZyYW1lLWRhdGFUcmFuc2Zlci5odG1sCi1mYXN0L2V2ZW50cy9kcmFn
LWxpbmsuaHRtbAotZmFzdC9ldmVudHMvZHJhZy10ZXh0LXdpdGgtY2xlYXIuaHRtbAotZmFzdC9l
dmVudHMvb25kcm9wLXRleHQtaHRtbC5odG1sCi1mYXN0L2V2ZW50cy9kcm9wLWhhbmRsZXItc2hv
dWxkLW5vdC1zdG9wLW5hdmlnYXRlLmh0bWwKLWZhc3QvZXZlbnRzL2Ryb3B6b25lLTAwMS5odG1s
Ci1mYXN0L2V2ZW50cy9kcm9wem9uZS0wMDIuaHRtbAotZmFzdC9ldmVudHMvZHJvcHpvbmUtMDAz
Lmh0bWwKLWZhc3QvZXZlbnRzL2Ryb3B6b25lLTAwNC5odG1sCi1mYXN0L2V2ZW50cy9kcm9wem9u
ZS0wMDUuaHRtbAotZmFzdC9ldmVudHMvZHJvcC13aXRoLWZpbGUtcGF0aHMuaHRtbAotZmFzdC9l
dmVudHMvbW92aW5nLXRleHQtc2hvdWxkLWZpcmUtZHJvcC1hbmQtZHJhZ2VuZC1ldmVudHMuaHRt
bAotZmFzdC9ldmVudHMvbW92aW5nLXRleHQtc2hvdWxkLWZpcmUtZHJvcC1hbmQtZHJhZ2VuZC1l
dmVudHMtMi5odG1sCi1mYXN0L2V2ZW50cy9pbnB1dC1lbGVtZW50LWRpc3BsYXktbm9uZS1pbi1k
cmFnbGVhdmUtY3Jhc2guaHRtbAotZmFzdC9ldmVudHMvb25seS12YWxpZC1kcm9wLXRhcmdldHMt
cmVjZWl2ZS1maWxlLWRyb3AuaHRtbAorZmFzdC9ldmVudHMvZHJhZy1pbWFnZS1maWxlbmFtZS5o
dG1sIFsgU2tpcCBdCisKKyMgVGVzdHMgd2l0aCB2YXJ5aW5nIGRlZ3JlZXMgb2YgZmFpbHVyZSBh
ZnRlciBkcmFnLWFuZC1kcm9wIHdhcyBpbXBsZW1lbnRlZCBpbiBEUlQ6CisjIE5lZWRzIHRvIGJl
IGludmVzdGlnYXRlZC4KKyMgQSBmZXcgbG9va3MgbGlrZSB0aGV5IGp1c3QgbmVlZCBuZXcgYmFz
ZWxpbmUsIHNvbWUgY291bGQgYmUgaXNzdWVzIHdpdGggRFJULCAKKyMgYW5kIHRoZSByZXN0IGFy
ZSBwcm9iYWJseSByZWFsIGJ1Z3MgaW4gb3VyIERyYWcnbidEcm9wIGltcGxlbWVudGF0aW9uLgor
ZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGFUcmFuc2Zlci1zZXREYXRhLWdldERhdGEuaHRtbCBbIEZh
aWx1cmUgXQorZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctZHJvcC1saXN0Lmh0bWwgWyBGYWlsdXJl
IF0KK2VkaXRpbmcvcGFzdGVib2FyZC9lbWFjcy1jdHJsLWstd2l0aC1tb3ZlLmh0bWwgWyBGYWls
dXJlIF0KK2VkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8tZWRpdGFibGUuaHRtbCBbIEZh
aWx1cmUgXQorZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtaW5wdXQtZmlsZXMtYWNjZXNzLmh0bWwg
WyBGYWlsdXJlIF0KK2VkaXRpbmcvcGFzdGVib2FyZC9maWxlcy1kdXJpbmctcGFnZS1kcmFncy5o
dG1sIFsgRmFpbHVyZSBdCitodHRwL3Rlc3RzL21pc2MvYnViYmxlLWRyYWctZXZlbnRzLmh0bWwg
WyBGYWlsdXJlIF0KK2h0dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJvYXJkL2NsaXBib2FyZC1maWxl
LWFjY2Vzcy5odG1sIFsgRmFpbHVyZSBdCitmYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLmh0bWwg
WyBGYWlsdXJlIF0KK2Zhc3QvZXZlbnRzL2Ryb3Atd2l0aC1maWxlLXBhdGhzLmh0bWwgWyBGYWls
dXJlIF0KK2Zhc3QvZXZlbnRzL2Ryb3B6b25lLTAwMS5odG1sIFsgRmFpbHVyZSBdCitmYXN0L2V2
ZW50cy9kcm9wem9uZS0wMDIuaHRtbCBbIEZhaWx1cmUgXQorZmFzdC9ldmVudHMvZHJvcHpvbmUt
MDAzLmh0bWwgWyBGYWlsdXJlIF0KK2Zhc3QvZXZlbnRzL2Ryb3B6b25lLTAwNC5odG1sIFsgRmFp
bHVyZSBdCitmYXN0L2V2ZW50cy9kcm9wem9uZS0wMDUuaHRtbCBbIEZhaWx1cmUgXQorZmFzdC9l
dmVudHMvaW5wdXQtZWxlbWVudC1kaXNwbGF5LW5vbmUtaW4tZHJhZ2xlYXZlLWNyYXNoLmh0bWwg
WyBGYWlsdXJlIF0KK2Zhc3QvZXZlbnRzL29ubHktdmFsaWQtZHJvcC10YXJnZXRzLXJlY2VpdmUt
ZmlsZS1kcm9wLmh0bWwgWyBGYWlsdXJlIF0KK2Zhc3QvZXZlbnRzL3ByZXZlbnQtZHJhZy10by1u
YXZpZ2F0ZS5odG1sIFsgRmFpbHVyZSBdCitmYXN0L2Zvcm1zL3JhbmdlL3NsaWRlci1kZWxldGUt
d2hpbGUtZHJhZ2dpbmctdGh1bWIuaHRtbCBbIEZhaWx1cmUgXQorZmFzdC9mb3Jtcy9zZWxlY3Qt
bXVsdGlwbGUtZWxlbWVudHMtd2l0aC1tb3VzZS1kcmFnLXdpdGgtb3B0aW9ucy1sZXNzLXRoYW4t
c2l6ZS5odG1sIFsgRmFpbHVyZSBdCiAKLSMgTmV3IHRlc3QgYWRkZWQgaW4gcjE0NTE5NSBpcyBm
YWlsaW5nCi13ZWJraXQub3JnL2IvMTExODUzIGVkaXRpbmcvcGFzdGVib2FyZC9jbGVhbnVwLW9u
LW1vdmUuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzExMTg1MyBlZGl0aW5nL3Bhc3RlYm9h
cmQvZHJhZy1saXN0LWl0ZW0uaHRtbCBbIFNraXAgXQorIyBQYXN0ZUJvYXJkOjpwbGFpblRleHQo
KSBkb2VzIG5vdCBzdXBwb3J0IGZpbGUgbmFtZXMuCitlZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1m
aWxlcy10by1lZGl0YWJsZS1lbGVtZW50Lmh0bWwgWyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9i
LzExMzEyNiBlZGl0aW5nL3Bhc3RlYm9hcmQvY2FuLXJlYWQtaW4tZHJhZ3N0YXJ0LWV2ZW50Lmh0
bWwgWyBTa2lwIF0KKyMgTmV3IHRlc3QgYWRkZWQgaW4gcjE0NTE5NSBpcyBmYWlsaW5nCit3ZWJr
aXQub3JnL2IvMTExODUzIGVkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWxpc3QtaXRlbS5odG1sIFsg
RmFpbHVyZSBdCisKKyMgVGVzdHMgd2l0aCBtaXNzaW5nIGJhc2VsaW5lcyBhZnRlciBkcmFnLWFu
ZC1kcm9wIHdhcyBpbXBsZW1lbnRlZCBpbiBEUlQ6CisjIE5lZWRzIHRvIGJlIGludmVzdGlnYXRl
ZC4KK2VkaXRpbmcvcGFzdGVib2FyZC80OTQ3MTMwLmh0bWwgWyBNaXNzaW5nIF0KK2VkaXRpbmcv
cGFzdGVib2FyZC9jb3B5LXN0YW5kYWxvbmUtaW1hZ2UuaHRtbCBbIE1pc3NpbmcgXQorZWRpdGlu
Zy9wYXN0ZWJvYXJkL2RyYWctZHJvcC1kZWFkLWZyYW1lLmh0bWwgWyBNaXNzaW5nIF0KK2VkaXRp
bmcvcGFzdGVib2FyZC9kcmFnLWRyb3AtbW9kaWZpZXMtcGFnZS5odG1sIFsgTWlzc2luZyBdCitl
ZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1pbWFnZS10by1jb250ZW50ZWRpdGFibGUtaW4taWZyYW1l
Lmh0bWwgWyBNaXNzaW5nIF0KK2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLXNlbGVjdGVkLWltYWdl
LXRvLWNvbnRlbnRlZGl0YWJsZS5odG1sIFsgTWlzc2luZyBdCitlZGl0aW5nL3Bhc3RlYm9hcmQv
ZHJvcC10ZXh0LXdpdGhvdXQtc2VsZWN0aW9uLmh0bWwgWyBNaXNzaW5nIF0KK2VkaXRpbmcvcGFz
dGVib2FyZC9lbWFjcy1jdHJsLWEtay15Lmh0bWwgWyBNaXNzaW5nIF0KK2VkaXRpbmcvcGFzdGVi
b2FyZC9lbWFjcy1jdHJsLWsteS0wMDEuaHRtbCBbIE1pc3NpbmcgXQorZWRpdGluZy9wYXN0ZWJv
YXJkL3NtYXJ0LWRyYWctZHJvcC5odG1sIFsgTWlzc2luZyBdCitlZGl0aW5nL3Bhc3RlYm9hcmQv
c3ViZnJhbWUtZHJhZ25kcm9wLTEuaHRtbCBbIE1pc3NpbmcgXQorZmFzdC9mb3Jtcy9maWxlL2lu
cHV0LWZpbGUtcmUtcmVuZGVyLmh0bWwgWyBNaXNzaW5nIF0KIAogIyA9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0gIwogIyAgICAgICBGYWlsaW5nIEhUVFAgdGVzdHMuICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIwo=
</data>
<flag name="review"
          id="220077"
          type_id="1"
          status="-"
          setter="jturcotte"
    />
          </attachment>
      

    </bug>

</bugzilla>