<?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>71310</bug_id>
          
          <creation_ts>2011-11-01 12:39:22 -0700</creation_ts>
          <short_desc>[Qt][WK2] Add support for touch event testing to WebKitTestRunner</short_desc>
          <delta_ts>2011-11-02 02:57:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Hausmann">hausmann</reporter>
          <assigned_to name="Simon Hausmann">hausmann</assigned_to>
          <cc>kenneth</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>494073</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-11-01 12:39:22 -0700</bug_when>
    <thetext>[Qt][WK2] Add support for touch event testing to WebKitTestRunner</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494077</commentid>
    <comment_count>1</comment_count>
      <attachid>113205</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-11-01 12:47:35 -0700</bug_when>
    <thetext>Created attachment 113205
Patch work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494506</commentid>
    <comment_count>2</comment_count>
      <attachid>113290</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-11-02 02:01:28 -0700</bug_when>
    <thetext>Created attachment 113290
[Qt][WK2] Add support for touch event testing to WebKitTestRunner</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494508</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-02 02:04:37 -0700</bug_when>
    <thetext>Attachment 113290 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/plat...&quot; exit_code: 1

Tools/WebKitTestRunner/EventSenderProxy.h:55:  The parameter name &quot;modifier&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/WebKitTestRunner/EventSenderProxy.h:71:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494510</commentid>
    <comment_count>4</comment_count>
      <attachid>113292</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-11-02 02:07:05 -0700</bug_when>
    <thetext>Created attachment 113292
[Qt][WK2] Add support for touch event testing to WebKitTestRunner</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494511</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-11-02 02:15:24 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=113290&amp;action=review

&gt; Source/WebKit2/ChangeLog:15
&gt; +        (QtDesktopWebPageProxy::handleTouchEvent): Forward touch events to WebPagePRoxy.

Spelling issue

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:963
&gt; +        if (m_shouldSendEventsSynchronously) {

Make it more obvious that this is for testing only?

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.h:512
&gt; +    void touchEventSyncForTesting(const WebTouchEvent&amp;, bool&amp;);

it is not obvious what the bool means here. I would add &apos;handled&apos;

&gt; Tools/WebKitTestRunner/EventSenderProxy.h:54
&gt; +    void updateTouchPoint(int index, int x, int y);

isn;t it more an id than an index? At least Lars told me that iOS uses ids and not indices

&gt; Tools/WebKitTestRunner/qt/EventSenderProxyQt.cpp:325
&gt; +    if (index &lt; 0 || index &gt;= m_touchPoints.count())

Shouldn&apos;t this be an assert?

&gt; Tools/WebKitTestRunner/qt/EventSenderProxyQt.cpp:363
&gt; +    for (int i = 0; i &lt; m_touchPoints.count(); ++i)
&gt; +        if (m_touchPoints[i].state() != Qt::TouchPointReleased) {
&gt; +            sendTouchEvent(QEvent::TouchUpdate);
&gt; +            return;
&gt; +        }

Bad coding style... add braces</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494520</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-11-02 02:44:44 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=113290&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:15
&gt; &gt; +        (QtDesktopWebPageProxy::handleTouchEvent): Forward touch events to WebPagePRoxy.
&gt; 
&gt; Spelling issue

Oops. fixing :)

&gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:963
&gt; &gt; +        if (m_shouldSendEventsSynchronously) {
&gt; 
&gt; Make it more obvious that this is for testing only?

Hmm, this is just the same pattern that&apos;s also used for mouse events when testing. It&apos;s set through
WKPageSetShouldSendEventsSynchronously from WTR.
 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.h:512
&gt; &gt; +    void touchEventSyncForTesting(const WebTouchEvent&amp;, bool&amp;);
&gt; 
&gt; it is not obvious what the bool means here. I would add &apos;handled&apos;

Yeah, it&apos;s handled. I copied the signature from mouseEventSyncForTesting, but I can add the handled.
 
&gt; &gt; Tools/WebKitTestRunner/EventSenderProxy.h:54
&gt; &gt; +    void updateTouchPoint(int index, int x, int y);
&gt; 
&gt; isn;t it more an id than an index? At least Lars told me that iOS uses ids and not indices

No, this one is actually an index, not the touch point id.

The API works like this:

addTouchPoint(10, 10); // gets index 0
addTouchPoint(20, 20); // second touch point at index 1
touchStart();
updateTouchPoint(1, 30, 30); // Move second touch point to 30, 30
...
 
&gt; &gt; Tools/WebKitTestRunner/qt/EventSenderProxyQt.cpp:325
&gt; &gt; +    if (index &lt; 0 || index &gt;= m_touchPoints.count())
&gt; 
&gt; Shouldn&apos;t this be an assert?

Hmm, I guess so. I&apos;ll change it :)

&gt; &gt; Tools/WebKitTestRunner/qt/EventSenderProxyQt.cpp:363
&gt; &gt; +    for (int i = 0; i &lt; m_touchPoints.count(); ++i)
&gt; &gt; +        if (m_touchPoints[i].state() != Qt::TouchPointReleased) {
&gt; &gt; +            sendTouchEvent(QEvent::TouchUpdate);
&gt; &gt; +            return;
&gt; &gt; +        }
&gt; 
&gt; Bad coding style... add braces

Uh, I agree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494522</commentid>
    <comment_count>7</comment_count>
      <attachid>113295</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-11-02 02:48:59 -0700</bug_when>
    <thetext>Created attachment 113295
[Qt][WK2] Add support for touch event testing to WebKitTestRunner</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494524</commentid>
    <comment_count>8</comment_count>
      <attachid>113295</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-11-02 02:50:41 -0700</bug_when>
    <thetext>Comment on attachment 113295
[Qt][WK2] Add support for touch event testing to WebKitTestRunner

Great stuff, r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494527</commentid>
    <comment_count>9</comment_count>
      <attachid>113295</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-11-02 02:57:36 -0700</bug_when>
    <thetext>Comment on attachment 113295
[Qt][WK2] Add support for touch event testing to WebKitTestRunner

Clearing flags on attachment: 113295

Committed r99051: &lt;http://trac.webkit.org/changeset/99051&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494528</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-11-02 02:57:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113205</attachid>
            <date>2011-11-01 12:47:35 -0700</date>
            <delta_ts>2011-11-02 02:01:23 -0700</delta_ts>
            <desc>Patch work in progress</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>23958</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0LXdrMi9Ta2lwcGVkIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQtd2syL1NraXBwZWQKaW5kZXggODVlZTQ1Yy4uMzU4MzQwNCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL1NraXBwZWQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQtd2syL1NraXBwZWQKQEAgLTMwMSw5ICszMDEsNiBAQCBodHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L2JhZC1zdWItcHJvdG9jb2wtbm9uLWFzY2lpLmh0
bWwKICMgRXZlbnRTZW5kZXIubW91c2VNb3ZlVG8gaXMgbm90IHlldCBzdXBwb3J0ZWQKIHN2Zy9k
eW5hbWljLXVwZGF0ZXMKIAotIyBldmVudFNlbmRlci5jbGVhclRvdWNoUG9pbnRzIGlzIHVuaW1w
bGVtZW50ZWQKLWZhc3QvZXZlbnRzL3RvdWNoCi0KICMgbGF5b3V0VGVzdENvbnRyb2xsZXIuaWdu
b3JlRGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0cyBpcyB1bmltcGxlbWVudGVk
CiBmYXN0L25vdGlmaWNhdGlvbnMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAppbmRleCAzYzZjMzIzLi5iNDAzYTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtOTYwLDcgKzk2MCwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiBldmVudCkKICAg
ICBpZiAobV9uZWVkVG91Y2hFdmVudHMpIHsKICAgICAgICAgbV90b3VjaEV2ZW50UXVldWUuYXBw
ZW5kKGV2ZW50KTsKICAgICAgICAgcHJvY2VzcygpLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0
YXJ0KCk7Ci0gICAgICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hF
dmVudChldmVudCksIG1fcGFnZUlEKTsKKyAgICAgICAgaWYgKG1fc2hvdWxkU2VuZEV2ZW50c1N5
bmNocm9ub3VzbHkpIHsKKyAgICAgICAgICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOworICAgICAg
ICAgICAgcHJvY2VzcygpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudFN5
bmNGb3JUZXN0aW5nKGV2ZW50KSwgTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnRTeW5jRm9y
VGVzdGluZzo6UmVwbHkoaGFuZGxlZCksIG1fcGFnZUlEKTsKKyAgICAgICAgICAgIGRpZFJlY2Vp
dmVFdmVudChldmVudC50eXBlKCksIGhhbmRsZWQpOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudChldmVudCks
IG1fcGFnZUlEKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAobV90b3VjaEV2ZW50UXVldWUu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBib29sIGlzRXZlbnRIYW5kbGVkID0gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXREZXNrdG9wV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERlc2t0b3BXZWJQYWdlUHJv
eHkuY3BwCmluZGV4IDM4OGI2MDIuLjcxOWY3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9RdERlc2t0b3BXZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9RdERlc2t0b3BXZWJQYWdlUHJveHkuY3BwCkBAIC0xMTYsNiArMTE2
LDEzIEBAIGJvb2wgUXREZXNrdG9wV2ViUGFnZVByb3h5OjpoYW5kbGVFdmVudChRRXZlbnQqIGV2
KQogICAgICAgICByZXR1cm4gaGFuZGxlRHJhZ01vdmVFdmVudChyZWludGVycHJldF9jYXN0PFFE
cmFnTW92ZUV2ZW50Kj4oZXYpKTsKICAgICBjYXNlIFFFdmVudDo6RHJvcDoKICAgICAgICAgcmV0
dXJuIGhhbmRsZURyb3BFdmVudChyZWludGVycHJldF9jYXN0PFFEcm9wRXZlbnQqPihldikpOwor
ICAgIC8vIFRvdWNoIGV2ZW50cyBvbmx5IGZvciBXZWJLaXRUZXN0UnVubmVyCisgICAgY2FzZSBR
RXZlbnQ6OlRvdWNoQmVnaW46CisgICAgY2FzZSBRRXZlbnQ6OlRvdWNoVXBkYXRlOgorICAgIGNh
c2UgUUV2ZW50OjpUb3VjaEVuZDoKKyAgICAgICAgcmV0dXJuIGhhbmRsZVRvdWNoRXZlbnQoc3Rh
dGljX2Nhc3Q8UVRvdWNoRXZlbnQqPihldikpOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICByZXR1cm4gUXRXZWJQYWdlUHJveHk6OmhhbmRsZUV2ZW50KGV2KTsKIH0K
QEAgLTIzOCw2ICsyNDUsMTMgQEAgYm9vbCBRdERlc2t0b3BXZWJQYWdlUHJveHk6OmhhbmRsZURy
b3BFdmVudChRRHJvcEV2ZW50KiBldikKICAgICByZXR1cm4gYWNjZXB0ZWQ7CiB9CiAKK2Jvb2wg
UXREZXNrdG9wV2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2ZW50KFFUb3VjaEV2ZW50KiBldmVu
dCkKK3sKKyAgICBtX3dlYlBhZ2VQcm94eS0+aGFuZGxlVG91Y2hFdmVudChOYXRpdmVXZWJUb3Vj
aEV2ZW50KGV2ZW50KSk7CisgICAgZXZlbnQtPmFjY2VwdCgpOworICAgIHJldHVybiB0cnVlOwor
fQorCiB2b2lkIFF0RGVza3RvcFdlYlBhZ2VQcm94eTo6dGltZXJFdmVudChRVGltZXJFdmVudCog
ZXYpCiB7CiAgICAgaW50IHRpbWVySWQgPSBldi0+dGltZXJJZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RGVza3RvcFdlYlBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RGVza3RvcFdlYlBhZ2VQcm94eS5oCmluZGV4IDc1ZDEw
YzcuLmY3MzkwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERl
c2t0b3BXZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRE
ZXNrdG9wV2ViUGFnZVByb3h5LmgKQEAgLTYxLDYgKzYxLDcgQEAgcHJpdmF0ZToKICAgICBib29s
IGhhbmRsZURyYWdMZWF2ZUV2ZW50KFFEcmFnTGVhdmVFdmVudCopOwogICAgIGJvb2wgaGFuZGxl
RHJhZ01vdmVFdmVudChRRHJhZ01vdmVFdmVudCopOwogICAgIGJvb2wgaGFuZGxlRHJvcEV2ZW50
KFFEcm9wRXZlbnQqKTsKKyAgICBib29sIGhhbmRsZVRvdWNoRXZlbnQoUVRvdWNoRXZlbnQqKTsK
IAogICAgIFFQb2ludCBtX3RyaXBsZUNsaWNrOwogICAgIFFCYXNpY1RpbWVyIG1fdHJpcGxlQ2xp
Y2tUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAppbmRleCBjMWRkZDhkLi41Mzk1ZWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xMzIzLDYgKzEzMjMsMTIgQEAgdm9pZCBXZWJQYWdl
Ojp0b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmIHRvdWNoRXZlbnQpCiAKICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVFdmVudChzdGF0aWNfY2FzdDx1aW50
MzJfdD4odG91Y2hFdmVudC50eXBlKCkpLCBoYW5kbGVkKSk7CiB9CisKK3ZvaWQgV2ViUGFnZTo6
dG91Y2hFdmVudFN5bmNGb3JUZXN0aW5nKGNvbnN0IFdlYlRvdWNoRXZlbnQmIHRvdWNoRXZlbnQs
IGJvb2wmIGhhbmRsZWQpCit7CisgICAgQ3VycmVudEV2ZW50IGN1cnJlbnRFdmVudCh0b3VjaEV2
ZW50KTsKKyAgICBoYW5kbGVkID0gaGFuZGxlVG91Y2hFdmVudCh0b3VjaEV2ZW50LCBtX3BhZ2Uu
Z2V0KCkpOworfQogI2VuZGlmCiAKIHZvaWQgV2ViUGFnZTo6c2Nyb2xsKFBhZ2UqIHBhZ2UsIFNj
cm9sbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMWIxODk2
Yi4uNzIyZjRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCkBAIC01MDksNiArNTA5LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCiAgICAgdm9pZCB0b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmKTsKKyAg
ICB2b2lkIHRvdWNoRXZlbnRTeW5jRm9yVGVzdGluZyhjb25zdCBXZWJUb3VjaEV2ZW50JiwgYm9v
bCYpOwogI2VuZGlmCiAgICAgdm9pZCBjb250ZXh0TWVudUhpZGRlbigpIHsgbV9pc1Nob3dpbmdD
b250ZXh0TWVudSA9IGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNWFiNzE5ZC4uYjBmZWQxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KQEAgLTQzLDYgKzQzLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAjZW5k
aWYKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIFRvdWNoRXZlbnQoV2ViS2l0OjpXZWJU
b3VjaEV2ZW50IGV2ZW50KQorICAgIFRvdWNoRXZlbnRTeW5jRm9yVGVzdGluZyhXZWJLaXQ6Oldl
YlRvdWNoRXZlbnQgZXZlbnQpIC0+IChib29sIGhhbmRsZWQpCiAjZW5kaWYKIAogICAgIENvbnRl
eHRNZW51SGlkZGVuKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRT
ZW5kZXJQcm94eS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgK
aW5kZXggMjJkOWFjYi4uOTQ1ZmZlOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9FdmVudFNlbmRlclByb3h5LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNl
bmRlclByb3h5LmgKQEAgLTQ4LDYgKzQ4LDE1IEBAIHB1YmxpYzoKIAogICAgIHZvaWQga2V5RG93
bihXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMsIHVuc2lnbmVkIGxvY2F0aW9uKTsK
IAorICAgIC8vIFRvdWNoIGV2ZW50cy4KKyAgICB2b2lkIGFkZFRvdWNoUG9pbnQoaW50IHgsIGlu
dCB5KTsKKyAgICB2b2lkIHVwZGF0ZVRvdWNoUG9pbnQoaW50IGluZGV4LCBpbnQgeCwgaW50IHkp
OworICAgIHZvaWQgc2V0VG91Y2hNb2RpZmllcihXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVyLCBi
b29sIGVuYWJsZSk7CisgICAgdm9pZCB0b3VjaFN0YXJ0KCk7CisgICAgdm9pZCB0b3VjaE1vdmUo
KTsKKyAgICB2b2lkIHRvdWNoRW5kKCk7CisgICAgdm9pZCBjbGVhclRvdWNoUG9pbnRzKCk7Cisg
ICAgdm9pZCByZWxlYXNlVG91Y2hQb2ludChpbnQgaW5kZXgpOwogcHJpdmF0ZToKICAgICBUZXN0
Q29udHJvbGxlciogbV90ZXN0Q29udHJvbGxlcjsKIApAQCAtNTUsNiArNjQsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgdXBkYXRlQ2xpY2tDb3VudEZvckJ1dHRvbihpbnQgYnV0dG9uKTsKIAogI2lm
IFBMQVRGT1JNKFFUKQorICAgIHZvaWQgc2VuZFRvdWNoRXZlbnQoUUV2ZW50OjpUeXBlIHR5cGUp
OwogICAgIHZvaWQgc2VuZE9yUXVldWVFdmVudChRRXZlbnQqKTsKICAgICB2b2lkIHJlcGxheVNh
dmVkRXZlbnRzKCk7CiAjZW5kaWYKQEAgLTcwLDYgKzgwLDEwIEBAIHByaXZhdGU6CiAgICAgaW50
IGV2ZW50TnVtYmVyOwogI2VsaWYgUExBVEZPUk0oUVQpCiAgICAgUXQ6Ok1vdXNlQnV0dG9ucyBt
X21vdXNlQnV0dG9uczsKKworICAgIFFMaXN0PFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50PiBtX3Rv
dWNoUG9pbnRzOworICAgIFF0OjpLZXlib2FyZE1vZGlmaWVycyBtX3RvdWNoTW9kaWZpZXJzOwor
ICAgIGJvb2wgbV90b3VjaEFjdGl2ZTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9FdmVudFNlbmRpbmdDb250
cm9sbGVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5pZGwKaW5kZXggNjZjNGY3MS4uYTdhNTFiNSAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9F
dmVudFNlbmRpbmdDb250cm9sbGVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRsCkBAIC00MSw2
ICs0MSwxNiBAQCBtb2R1bGUgV1RSIHsKICAgICAgICAgdm9pZCB6b29tUGFnZUluKCk7CiAgICAg
ICAgIHZvaWQgem9vbVBhZ2VPdXQoKTsKICAgICAgICAgdm9pZCBzY2FsZVBhZ2VCeShpbiBkb3Vi
bGUgc2NhbGUsIGluIGRvdWJsZSB4LCBpbiBkb3VibGUgeSk7CisKKyAgICAgICAgLy8gVG91Y2gg
ZXZlbnRzLgorICAgICAgICB2b2lkIGFkZFRvdWNoUG9pbnQoaW4gbG9uZyB4LCBpbiBsb25nIHkp
OworICAgICAgICB2b2lkIHVwZGF0ZVRvdWNoUG9pbnQoaW4gbG9uZyBpbmRleCwgaW4gbG9uZyB4
LCBpbiBsb25nIHkpOworICAgICAgICB2b2lkIHNldFRvdWNoTW9kaWZpZXIoaW4gRE9NU3RyaW5n
IG1vZGlmaWVyLCBpbiBib29sZWFuIGVuYWJsZSk7CisgICAgICAgIHZvaWQgdG91Y2hTdGFydCgp
OworICAgICAgICB2b2lkIHRvdWNoTW92ZSgpOworICAgICAgICB2b2lkIHRvdWNoRW5kKCk7Cisg
ICAgICAgIHZvaWQgY2xlYXJUb3VjaFBvaW50cygpOworICAgICAgICB2b2lkIHJlbGVhc2VUb3Vj
aFBvaW50KGluIGxvbmcgaW5kZXgpOwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIuY3BwCmluZGV4IDQxMjY1ZWIuLjRlMjE5NmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250
cm9sbGVyLmNwcApAQCAtMzIzLDYgKzMyMywxNDQgQEAgdm9pZCBFdmVudFNlbmRpbmdDb250cm9s
bGVyOjpzY2FsZVBhZ2VCeShkb3VibGUgc2NhbGUsIGRvdWJsZSB4LCBkb3VibGUgeSkKICAgICBX
S0J1bmRsZVBhZ2VTZXRTY2FsZUF0T3JpZ2luKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdl
KCktPnBhZ2UoKSwgc2NhbGUsIG9yaWdpbik7CiB9CiAKK3ZvaWQgRXZlbnRTZW5kaW5nQ29udHJv
bGxlcjo6YWRkVG91Y2hQb2ludChpbnQgeCwgaW50IHkpCit7CisgICAgV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIkV2ZW50U2VuZGVyIikpOworICAgIFdLUmV0YWluUHRyPFdLTXV0YWJs
ZURpY3Rpb25hcnlSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkoQWRvcHRXSywgV0tNdXRhYmxl
RGljdGlvbmFyeUNyZWF0ZSgpKTsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdWJN
ZXNzYWdlS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTdWJNZXNz
YWdlIikpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdWJNZXNzYWdlTmFtZShBZG9w
dFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQWRkVG91Y2hQb2ludCIpKTsKKyAg
ICBXS0RpY3Rpb25hcnlBZGRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIHN1Yk1l
c3NhZ2VLZXkuZ2V0KCksIHN1Yk1lc3NhZ2VOYW1lLmdldCgpKTsKKworICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiB4S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiWCIpKTsKKyAgICBXS1JldGFpblB0cjxXS1VJbnQ2NFJlZj4geFJlZiA9IFdLVUludDY0Q3Jl
YXRlKHgpOworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5n
ZXQoKSwgeEtleS5nZXQoKSwgeFJlZi5nZXQoKSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4geUtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlkiKSk7
CisgICAgV0tSZXRhaW5QdHI8V0tVSW50NjRSZWY+IHlSZWYgPSBXS1VJbnQ2NENyZWF0ZSh5KTsK
KyAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIHlL
ZXkuZ2V0KCksIHlSZWYuZ2V0KCkpOworCisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNz
YWdlKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdl
TmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7Cit9CisKK3ZvaWQg
RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6dXBkYXRlVG91Y2hQb2ludChpbnQgaW5kZXgsIGludCB4
LCBpbnQgeSkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gRXZlbnRTZW5kZXJNZXNz
YWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRXZlbnRTZW5k
ZXIiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gRXZlbnRTZW5k
ZXJNZXNzYWdlQm9keShBZG9wdFdLLCBXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOworCisg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHN1Yk1lc3NhZ2VLZXkoQWRvcHRXSywgV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlN1Yk1lc3NhZ2UiKSk7CisgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IHN1Yk1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJVcGRhdGVUb3VjaFBvaW50IikpOworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0o
RXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgc3ViTWVzc2FnZUtleS5nZXQoKSwgc3ViTWVz
c2FnZU5hbWUuZ2V0KCkpOworCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGluZGV4S2V5
ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSW5kZXgiKSk7CisgICAg
V0tSZXRhaW5QdHI8V0tVSW50NjRSZWY+IGluZGV4UmVmID0gV0tVSW50NjRDcmVhdGUoaW5kZXgp
OworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwg
aW5kZXhLZXkuZ2V0KCksIGluZGV4UmVmLmdldCgpKTsKKworICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiB4S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiWCIp
KTsKKyAgICBXS1JldGFpblB0cjxXS1VJbnQ2NFJlZj4geFJlZiA9IFdLVUludDY0Q3JlYXRlKHgp
OworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwg
eEtleS5nZXQoKSwgeFJlZi5nZXQoKSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
eUtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlkiKSk7CisgICAg
V0tSZXRhaW5QdHI8V0tVSW50NjRSZWY+IHlSZWYgPSBXS1VJbnQ2NENyZWF0ZSh5KTsKKyAgICBX
S0RpY3Rpb25hcnlBZGRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIHlLZXkuZ2V0
KCksIHlSZWYuZ2V0KCkpOworCisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKElu
amVjdGVkQnVuZGxlOjpzaGFyZWQoKS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5n
ZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7Cit9CisKK3ZvaWQgRXZlbnRT
ZW5kaW5nQ29udHJvbGxlcjo6c2V0VG91Y2hNb2RpZmllcihjb25zdCBKU1N0cmluZ1JlZiAmbW9k
aWZpZXIsIGJvb2wgZW5hYmxlKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBFdmVu
dFNlbmRlck1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJFdmVudFNlbmRlciIpKTsKKyAgICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVm
PiBFdmVudFNlbmRlck1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLTXV0YWJsZURpY3Rpb25hcnlDcmVh
dGUoKSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3ViTWVzc2FnZUtleShBZG9w
dFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU3ViTWVzc2FnZSIpKTsKKyAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3ViTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldFRvdWNoTW9kaWZpZXIiKSk7CisgICAgV0tEaWN0aW9u
YXJ5QWRkSXRlbShFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCBzdWJNZXNzYWdlS2V5Lmdl
dCgpLCBzdWJNZXNzYWdlTmFtZS5nZXQoKSk7CisKKyAgICBXS0V2ZW50TW9kaWZpZXJzIG1vZCA9
IDA7CisgICAgaWYgKEpTU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobW9kaWZpZXIsICJjdHJs
IikpCisgICAgICAgIG1vZCA9IGtXS0V2ZW50TW9kaWZpZXJzQ29udHJvbEtleTsKKyAgICBpZiAo
SlNTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtb2RpZmllciwgInNoaWZ0IikpCisgICAgICAg
IG1vZCA9IGtXS0V2ZW50TW9kaWZpZXJzU2hpZnRLZXk7CisgICAgaWYgKEpTU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcobW9kaWZpZXIsICJhbHQiKSkKKyAgICAgICAgbW9kID0ga1dLRXZlbnRN
b2RpZmllcnNBbHRLZXk7CisgICAgaWYgKEpTU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobW9k
aWZpZXIsICJtZXRhIikpCisgICAgICAgIG1vZCA9IGtXS0V2ZW50TW9kaWZpZXJzTWV0YUtleTsK
KworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtb2RpZmllcktleSA9IGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIk1vZGlmaWVyIikpOworICAgIFdLUmV0YWluUHRy
PFdLVUludDY0UmVmPiBtb2RpZmllclJlZiA9IFdLVUludDY0Q3JlYXRlKG1vZCk7CisgICAgV0tE
aWN0aW9uYXJ5QWRkSXRlbShFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCBtb2RpZmllcktl
eS5nZXQoKSwgbW9kaWZpZXJSZWYuZ2V0KCkpOworCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IGVuYWJsZUtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkVu
YWJsZSIpKTsKKyAgICBXS1JldGFpblB0cjxXS1VJbnQ2NFJlZj4gZW5hYmxlUmVmID0gV0tVSW50
NjRDcmVhdGUoZW5hYmxlKTsKKyAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKEV2ZW50U2VuZGVyTWVz
c2FnZUJvZHkuZ2V0KCksIGVuYWJsZUtleS5nZXQoKSwgZW5hYmxlUmVmLmdldCgpKTsKKworICAg
IFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCku
YnVuZGxlKCksIEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2Fn
ZUJvZHkuZ2V0KCksIDApOworfQorCit2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnRvdWNo
U3RhcnQoKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBFdmVudFNlbmRlck1lc3Nh
Z2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFdmVudFNlbmRl
ciIpKTsKKyAgICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBFdmVudFNlbmRl
ck1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CisKKyAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3ViTWVzc2FnZUtleShBZG9wdFdLLCBXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU3ViTWVzc2FnZSIpKTsKKyAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gc3ViTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIlRvdWNoU3RhcnQiKSk7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShFdmVudFNl
bmRlck1lc3NhZ2VCb2R5LmdldCgpLCBzdWJNZXNzYWdlS2V5LmdldCgpLCBzdWJNZXNzYWdlTmFt
ZS5nZXQoKSk7CisKKyAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRC
dW5kbGU6OnNoYXJlZCgpLmJ1bmRsZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBF
dmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKK30KKwordm9pZCBFdmVudFNlbmRpbmdD
b250cm9sbGVyOjp0b3VjaE1vdmUoKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBF
dmVudFNlbmRlck1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJFdmVudFNlbmRlciIpKTsKKyAgICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5
UmVmPiBFdmVudFNlbmRlck1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLTXV0YWJsZURpY3Rpb25hcnlD
cmVhdGUoKSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3ViTWVzc2FnZUtleShB
ZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU3ViTWVzc2FnZSIpKTsKKyAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3ViTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlRvdWNoTW92ZSIpKTsKKyAgICBXS0RpY3Rpb25hcnlB
ZGRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIHN1Yk1lc3NhZ2VLZXkuZ2V0KCks
IHN1Yk1lc3NhZ2VOYW1lLmdldCgpKTsKKworICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVz
c2FnZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIEV2ZW50U2VuZGVyTWVzc2Fn
ZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDApOworfQorCit2b2lk
IEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnRvdWNoRW5kKCkKK3sKKyAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gRXZlbnRTZW5kZXJNZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiRXZlbnRTZW5kZXIiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tNdXRh
YmxlRGljdGlvbmFyeVJlZj4gRXZlbnRTZW5kZXJNZXNzYWdlQm9keShBZG9wdFdLLCBXS011dGFi
bGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOworCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHN1
Yk1lc3NhZ2VLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlN1Yk1l
c3NhZ2UiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHN1Yk1lc3NhZ2VOYW1lKEFk
b3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJUb3VjaEVuZCIpKTsKKyAgICBX
S0RpY3Rpb25hcnlBZGRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIHN1Yk1lc3Nh
Z2VLZXkuZ2V0KCksIHN1Yk1lc3NhZ2VOYW1lLmdldCgpKTsKKworICAgIFdLQnVuZGxlUG9zdFN5
bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIEV2ZW50
U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDAp
OworfQorCit2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmNsZWFyVG91Y2hQb2ludHMoKQor
eworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBFdmVudFNlbmRlck1lc3NhZ2VOYW1lKEFk
b3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFdmVudFNlbmRlciIpKTsKKyAg
ICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBFdmVudFNlbmRlck1lc3NhZ2VC
b2R5KEFkb3B0V0ssIFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CisKKyAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gc3ViTWVzc2FnZUtleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiU3ViTWVzc2FnZSIpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gc3ViTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IkNsZWFyVG91Y2hQb2ludHMiKSk7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShFdmVudFNlbmRl
ck1lc3NhZ2VCb2R5LmdldCgpLCBzdWJNZXNzYWdlS2V5LmdldCgpLCBzdWJNZXNzYWdlTmFtZS5n
ZXQoKSk7CisKKyAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5k
bGU6OnNoYXJlZCgpLmJ1bmRsZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVu
dFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKK30KKwordm9pZCBFdmVudFNlbmRpbmdDb250
cm9sbGVyOjpyZWxlYXNlVG91Y2hQb2ludChpbnQgaW5kZXgpCit7CisgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIkV2ZW50U2VuZGVyIikpOworICAgIFdLUmV0YWluUHRyPFdLTXV0
YWJsZURpY3Rpb25hcnlSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkoQWRvcHRXSywgV0tNdXRh
YmxlRGljdGlvbmFyeUNyZWF0ZSgpKTsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBz
dWJNZXNzYWdlS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTdWJN
ZXNzYWdlIikpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdWJNZXNzYWdlTmFtZShB
ZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUmVsZWFzZVRvdWNoUG9pbnQi
KSk7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgp
LCBzdWJNZXNzYWdlS2V5LmdldCgpLCBzdWJNZXNzYWdlTmFtZS5nZXQoKSk7CisKKyAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gaW5kZXhLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJJbmRleCIpKTsKKyAgICBXS1JldGFpblB0cjxXS1VJbnQ2NFJlZj4gaW5k
ZXhSZWYgPSBXS1VJbnQ2NENyZWF0ZShpbmRleCk7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShF
dmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCBpbmRleEtleS5nZXQoKSwgaW5kZXhSZWYuZ2V0
KCkpOworCisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRT
ZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7Cit9CisKIC8vIE9iamVjdCBDcmVhdGlvbgogCiB2
b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6Om1ha2VXaW5kb3dPYmplY3QoSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2JqZWN0UmVmIHdpbmRvd09iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVu
dFNlbmRpbmdDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaAppbmRleCA1YTZmYTFhLi45NzUzZmQzIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaApAQCAtNjIsNiArNjIsMTYgQEAgcHVibGljOgogICAg
IHZvaWQgem9vbVBhZ2VPdXQoKTsKICAgICB2b2lkIHNjYWxlUGFnZUJ5KGRvdWJsZSBzY2FsZSwg
ZG91YmxlIHgsIGRvdWJsZSB5KTsKIAorICAgIC8vIFRvdWNoIGV2ZW50cy4KKyAgICB2b2lkIGFk
ZFRvdWNoUG9pbnQoaW50IHgsIGludCB5KTsKKyAgICB2b2lkIHVwZGF0ZVRvdWNoUG9pbnQoaW50
IGluZGV4LCBpbnQgeCwgaW50IHkpOworICAgIHZvaWQgc2V0VG91Y2hNb2RpZmllcihjb25zdCBK
U1N0cmluZ1JlZiAmbW9kaWZpZXIsIGJvb2wgZW5hYmxlKTsKKyAgICB2b2lkIHRvdWNoU3RhcnQo
KTsKKyAgICB2b2lkIHRvdWNoTW92ZSgpOworICAgIHZvaWQgdG91Y2hFbmQoKTsKKyAgICB2b2lk
IGNsZWFyVG91Y2hQb2ludHMoKTsKKyAgICB2b2lkIHJlbGVhc2VUb3VjaFBvaW50KGludCBpbmRl
eCk7CisKIHByaXZhdGU6CiAgICAgRXZlbnRTZW5kaW5nQ29udHJvbGxlcigpOwogCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGJlZmVhMGQuLmEyOTA0NTEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC02MTksNiAr
NjE5LDc3IEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdENvbnRyb2xsZXI6OmRpZFJlY2Vp
dmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgICAgICByZXR1cm4gMDsK
ICAgICAgICAgfQogI2VuZGlmCisKKyNpZiBQTEFURk9STShRVCkKKyAgICAgICAgaWYgKFdLU3Ry
aW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJBZGRUb3VjaFBvaW50Iikp
IHsKKyAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB4S2V5ID0gYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiWCIpKTsKKyAgICAgICAgICAgIGludCB4ID0g
c3RhdGljX2Nhc3Q8aW50PihXS1VJbnQ2NEdldFZhbHVlKHN0YXRpY19jYXN0PFdLVUludDY0UmVm
PihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgeEtleS5n
ZXQoKSkpKSk7CisKKyAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB5S2V5ID0g
YWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiWSIpKTsKKyAgICAgICAgICAg
IGludCB5ID0gc3RhdGljX2Nhc3Q8aW50PihXS1VJbnQ2NEdldFZhbHVlKHN0YXRpY19jYXN0PFdL
VUludDY0UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFy
eSwgeUtleS5nZXQoKSkpKSk7CisKKyAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+YWRk
VG91Y2hQb2ludCh4LCB5KTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJV
cGRhdGVUb3VjaFBvaW50IikpIHsKKyAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiBpbmRleEtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkluZGV4
IikpOworICAgICAgICAgICAgaW50IGluZGV4ID0gc3RhdGljX2Nhc3Q8aW50PihXS1VJbnQ2NEdl
dFZhbHVlKHN0YXRpY19jYXN0PFdLVUludDY0UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5
KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgaW5kZXhLZXkuZ2V0KCkpKSkpOworCisgICAgICAgICAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4geEtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIlgiKSk7CisgICAgICAgICAgICBpbnQgeCA9IHN0YXRpY19jYXN0PGlu
dD4oV0tVSW50NjRHZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1VJbnQ2NFJlZj4oV0tEaWN0aW9uYXJ5
R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIHhLZXkuZ2V0KCkpKSkpOworCisg
ICAgICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4geUtleSA9IGFkb3B0V0soV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlkiKSk7CisgICAgICAgICAgICBpbnQgeSA9IHN0YXRp
Y19jYXN0PGludD4oV0tVSW50NjRHZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1VJbnQ2NFJlZj4oV0tE
aWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIHlLZXkuZ2V0KCkp
KSkpOworCisgICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPnVwZGF0ZVRvdWNoUG9pbnQo
aW5kZXgsIHgsIHkpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIlNldFRv
dWNoTW9kaWZpZXIiKSkgeworICAgICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1v
ZGlmaWVyS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTW9kaWZp
ZXIiKSk7CisgICAgICAgICAgICBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVyID0gc3RhdGljX2Nh
c3Q8V0tFdmVudE1vZGlmaWVycz4oV0tVSW50NjRHZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1VJbnQ2
NFJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIG1v
ZGlmaWVyS2V5LmdldCgpKSkpKTsKKworICAgICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IGVuYWJsZUtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkVu
YWJsZSIpKTsKKyAgICAgICAgICAgIGJvb2wgZW5hYmxlID0gc3RhdGljX2Nhc3Q8Ym9vbD4oV0tV
SW50NjRHZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1VJbnQ2NFJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRl
bUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIGVuYWJsZUtleS5nZXQoKSkpKSk7CisKKyAg
ICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+c2V0VG91Y2hNb2RpZmllcihtb2RpZmllciwg
ZW5hYmxlKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJUb3VjaFN0YXJ0
IikpIHsKKyAgICAgICAgICAgIFdLUGFnZVNldFNob3VsZFNlbmRFdmVudHNTeW5jaHJvbm91c2x5
KG1haW5XZWJWaWV3KCktPnBhZ2UoKSwgdHJ1ZSk7CisgICAgICAgICAgICBtX2V2ZW50U2VuZGVy
UHJveHktPnRvdWNoU3RhcnQoKTsKKyAgICAgICAgICAgIFdLUGFnZVNldFNob3VsZFNlbmRFdmVu
dHNTeW5jaHJvbm91c2x5KG1haW5XZWJWaWV3KCktPnBhZ2UoKSwgZmFsc2UpOworICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIlRvdWNoTW92ZSIpKSB7CisgICAgICAgICAgICBX
S1BhZ2VTZXRTaG91bGRTZW5kRXZlbnRzU3luY2hyb25vdXNseShtYWluV2ViVmlldygpLT5wYWdl
KCksIHRydWUpOworICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT50b3VjaE1vdmUoKTsK
KyAgICAgICAgICAgIFdLUGFnZVNldFNob3VsZFNlbmRFdmVudHNTeW5jaHJvbm91c2x5KG1haW5X
ZWJWaWV3KCktPnBhZ2UoKSwgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdl
TmFtZSwgIlRvdWNoRW5kIikpIHsKKyAgICAgICAgICAgIFdLUGFnZVNldFNob3VsZFNlbmRFdmVu
dHNTeW5jaHJvbm91c2x5KG1haW5XZWJWaWV3KCktPnBhZ2UoKSwgdHJ1ZSk7CisgICAgICAgICAg
ICBtX2V2ZW50U2VuZGVyUHJveHktPnRvdWNoRW5kKCk7CisgICAgICAgICAgICBXS1BhZ2VTZXRT
aG91bGRTZW5kRXZlbnRzU3luY2hyb25vdXNseShtYWluV2ViVmlldygpLT5wYWdlKCksIGZhbHNl
KTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFdLU3Ry
aW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJDbGVhclRvdWNoUG9pbnRz
IikpIHsKKyAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+Y2xlYXJUb3VjaFBvaW50cygp
OworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBpZiAoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIlJlbGVhc2VUb3VjaFBvaW50
IikpIHsKKyAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBpbmRleEtleSA9IGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkluZGV4IikpOworICAgICAgICAg
ICAgaW50IGluZGV4ID0gc3RhdGljX2Nhc3Q8aW50PihXS1VJbnQ2NEdldFZhbHVlKHN0YXRpY19j
YXN0PFdLVUludDY0UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGlj
dGlvbmFyeSwgaW5kZXhLZXkuZ2V0KCkpKSkpOworICAgICAgICAgICAgbV9ldmVudFNlbmRlclBy
b3h5LT5yZWxlYXNlVG91Y2hQb2ludChpbmRleCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgfQorI2VuZGlmCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICNl
bmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9FdmVudFNlbmRlclBy
b3h5UXQuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9FdmVudFNlbmRlclByb3h5UXQu
Y3BwCmluZGV4IGExYWViMDUuLmY3NDE3NmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvcXQvRXZlbnRTZW5kZXJQcm94eVF0LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL3F0L0V2ZW50U2VuZGVyUHJveHlRdC5jcHAKQEAgLTYyLDYgKzYyLDcgQEAgRXZlbnRTZW5k
ZXJQcm94eTo6RXZlbnRTZW5kZXJQcm94eShUZXN0Q29udHJvbGxlciogdGVzdENvbnRyb2xsZXIp
CiAgICAgLCBtX2NsaWNrUG9zaXRpb24oKQogICAgICwgbV9jbGlja0J1dHRvbihrV0tFdmVudE1v
dXNlQnV0dG9uTm9CdXR0b24pCiAgICAgLCBtX21vdXNlQnV0dG9ucygwKQorICAgICwgbV90b3Vj
aEFjdGl2ZShmYWxzZSkKIHsKICAgICBtZW1zZXQoZXZlbnRRdWV1ZSwgMCwgc2l6ZW9mKGV2ZW50
UXVldWUpKTsKICAgICBlbmRPZlF1ZXVlID0gMDsKQEAgLTMwNSw2ICszMDYsOTMgQEAgdm9pZCBF
dmVudFNlbmRlclByb3h5OjpsZWFwRm9yd2FyZChpbnQgbXMpCiAgICAgZXZlbnRRdWV1ZVtlbmRP
ZlF1ZXVlXS5tX2RlbGF5ID0gbXM7CiB9CiAKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6YWRkVG91
Y2hQb2ludChpbnQgeCwgaW50IHkpCit7CisgICAgY29uc3QgaW50IGlkID0gbV90b3VjaFBvaW50
cy5pc0VtcHR5KCkgPyAwIDogbV90b3VjaFBvaW50cy5sYXN0KCkuaWQoKSArIDE7CisgICAgY29u
c3QgUVBvaW50RiBwb3MoeCwgeSk7CisgICAgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQgcG9pbnQo
aWQpOworICAgIHBvaW50LnNldFBvcyhwb3MpOworICAgIHBvaW50LnNldFN0YXJ0UG9zKHBvcyk7
CisgICAgcG9pbnQuc2V0U3RhdGUoUXQ6OlRvdWNoUG9pbnRQcmVzc2VkKTsKKyAgICBtX3RvdWNo
UG9pbnRzLmFwcGVuZChwb2ludCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6dXBkYXRl
VG91Y2hQb2ludChpbnQgaW5kZXgsIGludCB4LCBpbnQgeSkKK3sKKyAgICBpZiAoaW5kZXggPCAw
IHx8IGluZGV4ID49IG1fdG91Y2hQb2ludHMuY291bnQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQgJnAgPSBtX3RvdWNoUG9pbnRzW2luZGV4XTsKKyAg
ICBwLnNldFBvcyhRUG9pbnRGKHgsIHkpKTsKKyAgICBwLnNldFN0YXRlKFF0OjpUb3VjaFBvaW50
TW92ZWQpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnNldFRvdWNoTW9kaWZpZXIoV0tF
dmVudE1vZGlmaWVycyBtb2RpZmllciwgYm9vbCBlbmFibGUpCit7CisgICAgUXQ6OktleWJvYXJk
TW9kaWZpZXJzIG1vZCA9IGdldE1vZGlmaWVycyhtb2RpZmllcik7CisKKyAgICBpZiAoZW5hYmxl
KQorICAgICAgICBtX3RvdWNoTW9kaWZpZXJzIHw9IG1vZDsKKyAgICBlbHNlCisgICAgICAgIG1f
dG91Y2hNb2RpZmllcnMgJj0gfm1vZDsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojp0b3Vj
aFN0YXJ0KCkKK3sKKyAgICBpZiAoIW1fdG91Y2hBY3RpdmUpIHsKKyAgICAgICAgc2VuZFRvdWNo
RXZlbnQoUUV2ZW50OjpUb3VjaEJlZ2luKTsKKyAgICAgICAgbV90b3VjaEFjdGl2ZSA9IHRydWU7
CisgICAgfSBlbHNlCisgICAgICAgIHNlbmRUb3VjaEV2ZW50KFFFdmVudDo6VG91Y2hVcGRhdGUp
OworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnRvdWNoTW92ZSgpCit7CisgICAgc2VuZFRv
dWNoRXZlbnQoUUV2ZW50OjpUb3VjaFVwZGF0ZSk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94
eTo6dG91Y2hFbmQoKQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV90b3VjaFBvaW50cy5j
b3VudCgpOyArK2kpCisgICAgICAgIGlmIChtX3RvdWNoUG9pbnRzW2ldLnN0YXRlKCkgIT0gUXQ6
OlRvdWNoUG9pbnRSZWxlYXNlZCkgeworICAgICAgICAgICAgc2VuZFRvdWNoRXZlbnQoUUV2ZW50
OjpUb3VjaFVwZGF0ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICBzZW5k
VG91Y2hFdmVudChRRXZlbnQ6OlRvdWNoRW5kKTsKKyAgICBtX3RvdWNoQWN0aXZlID0gZmFsc2U7
Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6Y2xlYXJUb3VjaFBvaW50cygpCit7CisgICAg
bV90b3VjaFBvaW50cy5jbGVhcigpOworICAgIG1fdG91Y2hNb2RpZmllcnMgPSBRdDo6S2V5Ym9h
cmRNb2RpZmllcnMoKTsKKyAgICBtX3RvdWNoQWN0aXZlID0gZmFsc2U7Cit9CisKK3ZvaWQgRXZl
bnRTZW5kZXJQcm94eTo6cmVsZWFzZVRvdWNoUG9pbnQoaW50IGluZGV4KQoreworICAgIGlmIChp
bmRleCA8IDAgfHwgaW5kZXggPj0gbV90b3VjaFBvaW50cy5jb3VudCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX3RvdWNoUG9pbnRzW2luZGV4XS5zZXRTdGF0ZShRdDo6VG91Y2hQb2ludFJl
bGVhc2VkKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjpzZW5kVG91Y2hFdmVudChRRXZl
bnQ6OlR5cGUgdHlwZSkKK3sKKyAgICBRVG91Y2hFdmVudCBldmVudCh0eXBlLCBRVG91Y2hFdmVu
dDo6VG91Y2hTY3JlZW4sIG1fdG91Y2hNb2RpZmllcnMpOworICAgIGV2ZW50LnNldFRvdWNoUG9p
bnRzKG1fdG91Y2hQb2ludHMpOworICAgIG1fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCkt
PnNlbmRFdmVudCgmZXZlbnQpOworICAgIFFMaXN0PFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50Pjo6
SXRlcmF0b3IgaXQgPSBtX3RvdWNoUG9pbnRzLmJlZ2luKCk7CisgICAgd2hpbGUgKGl0ICE9IG1f
dG91Y2hQb2ludHMuZW5kKCkpIHsKKyAgICAgICAgaWYgKGl0LT5zdGF0ZSgpID09IFF0OjpUb3Vj
aFBvaW50UmVsZWFzZWQpCisgICAgICAgICAgICBpdCA9IG1fdG91Y2hQb2ludHMuZXJhc2UoaXQp
OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGl0LT5zZXRTdGF0ZShRdDo6VG91Y2hQb2lu
dFN0YXRpb25hcnkpOworICAgICAgICAgICAgKytpdDsKKyAgICAgICAgfQorICAgIH0KK30KKwog
dm9pZCBFdmVudFNlbmRlclByb3h5OjpzZW5kT3JRdWV1ZUV2ZW50KFFFdmVudCogZXZlbnQpCiB7
CiAgICAgaWYgKGVuZE9mUXVldWUgPT0gc3RhcnRPZlF1ZXVlICYmICFldmVudFF1ZXVlW2VuZE9m
UXVldWVdLm1fZGVsYXkpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113290</attachid>
            <date>2011-11-02 02:01:28 -0700</date>
            <delta_ts>2011-11-02 02:07:00 -0700</delta_ts>
            <desc>[Qt][WK2] Add support for touch event testing to WebKitTestRunner</desc>
            <filename>bug-71310-20111102100128.patch</filename>
            <type>text/plain</type>
            <size>33094</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTg5ODMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzZTBmOTljZjVkY2FmYTJk
OGE2M2YzMWMzZmJmZDQzNTM1YTk4NjdjLi43YzQ1ODU5MDAxM2M5YmUyNGZiOWQ2NjE3NzQ5ZjZj
OTg5MWUwZDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMTEtMDIgIFNpbW9u
IEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFtRdF1bV0sy
XSBBZGQgc3VwcG9ydCBmb3IgdG91Y2ggZXZlbnQgdGVzdGluZyB0byBXZWJLaXRUZXN0UnVubmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTMxMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFu
ZGxlVG91Y2hFdmVudCk6IEFkZCBzdXBwb3J0IGZvciBtX3Nob3VsZFNlbmRFdmVudHNTeW5jaHJv
bm91c2x5LgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdERlc2t0b3BXZWJQYWdlUHJveHkuY3Bw
OgorICAgICAgICAoUXREZXNrdG9wV2ViUGFnZVByb3h5OjpoYW5kbGVFdmVudCk6IEhhbmRsZSBw
bGFpbiB0b3VjaCBldmVudHMgaW4gdGhlIGRlc2t0b3AgcGFnZSBwcm94eSBieQorICAgICAgICBm
b3J3YXJkaW5nIHRoZW0gYXBwcm9wcmlhdGVseS4gV2Ugd2lsbCByZWNlaXZlIHRoZW0gZnJvbSBX
VFIgdGhyb3VnaCA6OmV2ZW50LCBidXQgd2Ugd29uJ3QKKyAgICAgICAgcmVjZWl2ZSB0aGVtIGZy
b20gUVF1aWNrQ2FudmFzIChpLmUuIHRoZSB1c2VyKSBiZWNhdXNlIHRoYXQgZG9lc24ndCB1c2Vz
IDo6ZXZlbnQgYnV0IG9ubHkKKyAgICAgICAgZGVkaWNhdGVkIGZvb0V2ZW50KCkgaGFuZGxlcnMs
IG9mIHdoaWNoIHdlIGRvbid0IHJlLWltcGxlbWVudCB0aGUgdG91Y2ggdmVyc2lvbi4KKyAgICAg
ICAgKFF0RGVza3RvcFdlYlBhZ2VQcm94eTo6aGFuZGxlVG91Y2hFdmVudCk6IEZvcndhcmQgdG91
Y2ggZXZlbnRzIHRvIFdlYlBhZ2VQUm94eS4KKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXREZXNr
dG9wV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp0b3VjaEV2ZW50U3luY0ZvclRlc3Rpbmcp
OiBBZGQgc3VwcG9ydCBmb3Igc3luY2hyb25vdXMgdG91Y2ggZXZlbnQgdGVzdGluZywKKyAgICAg
ICAgc2ltaWxhciB0byB0aGUgd2F5IGl0J3MgZG9uZSBmb3IgbW91c2UgZXZlbnRzLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6IERpdHRvLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOiBEaXR0by4KKwogMjAxMS0xMS0wMSAg
QW5kcmFzIEJlY3NpICA8YW5kcmFzLmJlY3NpQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdW1dL
Ml0gTWFrZSBBUEkgdGVzdHMgbGVzcyBub2lzeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCAzYzZjMzIzNzY0MzYwNjU0YzY4NWVmNDg1NDAxMDRkZjczODJi
YjNjLi5iNDAzYTRiZjViOWI5YzlhOWFkMDBlODAxMTJjNzAyNDY4MWZhMWQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtOTYwLDcgKzk2MCwxMiBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2
ZW50JiBldmVudCkKICAgICBpZiAobV9uZWVkVG91Y2hFdmVudHMpIHsKICAgICAgICAgbV90b3Vj
aEV2ZW50UXVldWUuYXBwZW5kKGV2ZW50KTsKICAgICAgICAgcHJvY2VzcygpLT5yZXNwb25zaXZl
bmVzc1RpbWVyKCktPnN0YXJ0KCk7Ci0gICAgICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6VG91Y2hFdmVudChldmVudCksIG1fcGFnZUlEKTsKKyAgICAgICAgaWYgKG1fc2hv
dWxkU2VuZEV2ZW50c1N5bmNocm9ub3VzbHkpIHsKKyAgICAgICAgICAgIGJvb2wgaGFuZGxlZCA9
IGZhbHNlOworICAgICAgICAgICAgcHJvY2VzcygpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFn
ZTo6VG91Y2hFdmVudFN5bmNGb3JUZXN0aW5nKGV2ZW50KSwgTWVzc2FnZXM6OldlYlBhZ2U6OlRv
dWNoRXZlbnRTeW5jRm9yVGVzdGluZzo6UmVwbHkoaGFuZGxlZCksIG1fcGFnZUlEKTsKKyAgICAg
ICAgICAgIGRpZFJlY2VpdmVFdmVudChldmVudC50eXBlKCksIGhhbmRsZWQpOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VG91
Y2hFdmVudChldmVudCksIG1fcGFnZUlEKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAobV90
b3VjaEV2ZW50UXVldWUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBib29sIGlzRXZlbnRIYW5k
bGVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRE
ZXNrdG9wV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERl
c2t0b3BXZWJQYWdlUHJveHkuY3BwCmluZGV4IDM4OGI2MDJkYjk4N2RmYjU5Yzk0ZTA5MjZjYWM2
MzQ5NWE1YzQwYzUuLjcxOWY3YmQ4MDg1NTcxZTM4NjE0MzFjNWFmMzQ5Mzc0MzQ5YmZjZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERlc2t0b3BXZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERlc2t0b3BXZWJQYWdl
UHJveHkuY3BwCkBAIC0xMTYsNiArMTE2LDEzIEBAIGJvb2wgUXREZXNrdG9wV2ViUGFnZVByb3h5
OjpoYW5kbGVFdmVudChRRXZlbnQqIGV2KQogICAgICAgICByZXR1cm4gaGFuZGxlRHJhZ01vdmVF
dmVudChyZWludGVycHJldF9jYXN0PFFEcmFnTW92ZUV2ZW50Kj4oZXYpKTsKICAgICBjYXNlIFFF
dmVudDo6RHJvcDoKICAgICAgICAgcmV0dXJuIGhhbmRsZURyb3BFdmVudChyZWludGVycHJldF9j
YXN0PFFEcm9wRXZlbnQqPihldikpOworICAgIC8vIFRvdWNoIGV2ZW50cyBvbmx5IGZvciBXZWJL
aXRUZXN0UnVubmVyCisgICAgY2FzZSBRRXZlbnQ6OlRvdWNoQmVnaW46CisgICAgY2FzZSBRRXZl
bnQ6OlRvdWNoVXBkYXRlOgorICAgIGNhc2UgUUV2ZW50OjpUb3VjaEVuZDoKKyAgICAgICAgcmV0
dXJuIGhhbmRsZVRvdWNoRXZlbnQoc3RhdGljX2Nhc3Q8UVRvdWNoRXZlbnQqPihldikpOworICAg
IGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gUXRXZWJQYWdlUHJv
eHk6OmhhbmRsZUV2ZW50KGV2KTsKIH0KQEAgLTIzOCw2ICsyNDUsMTMgQEAgYm9vbCBRdERlc2t0
b3BXZWJQYWdlUHJveHk6OmhhbmRsZURyb3BFdmVudChRRHJvcEV2ZW50KiBldikKICAgICByZXR1
cm4gYWNjZXB0ZWQ7CiB9CiAKK2Jvb2wgUXREZXNrdG9wV2ViUGFnZVByb3h5OjpoYW5kbGVUb3Vj
aEV2ZW50KFFUb3VjaEV2ZW50KiBldmVudCkKK3sKKyAgICBtX3dlYlBhZ2VQcm94eS0+aGFuZGxl
VG91Y2hFdmVudChOYXRpdmVXZWJUb3VjaEV2ZW50KGV2ZW50KSk7CisgICAgZXZlbnQtPmFjY2Vw
dCgpOworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIFF0RGVza3RvcFdlYlBhZ2VQcm94eTo6
dGltZXJFdmVudChRVGltZXJFdmVudCogZXYpCiB7CiAgICAgaW50IHRpbWVySWQgPSBldi0+dGlt
ZXJJZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RGVza3Rv
cFdlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RGVza3RvcFdl
YlBhZ2VQcm94eS5oCmluZGV4IDc1ZDEwYzczMGJiYmZiOTJiYTBkYWYzY2FmZDUxYWVmNmMyMjQ2
YzEuLmY3MzkwODZhMWMwMjdiMDIyOGU1NWFlZDQ1ZTA4Y2M2NmZiZGYyMGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERlc2t0b3BXZWJQYWdlUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXREZXNrdG9wV2ViUGFnZVByb3h5LmgKQEAg
LTYxLDYgKzYxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGhhbmRsZURyYWdMZWF2ZUV2ZW50KFFE
cmFnTGVhdmVFdmVudCopOwogICAgIGJvb2wgaGFuZGxlRHJhZ01vdmVFdmVudChRRHJhZ01vdmVF
dmVudCopOwogICAgIGJvb2wgaGFuZGxlRHJvcEV2ZW50KFFEcm9wRXZlbnQqKTsKKyAgICBib29s
IGhhbmRsZVRvdWNoRXZlbnQoUVRvdWNoRXZlbnQqKTsKIAogICAgIFFQb2ludCBtX3RyaXBsZUNs
aWNrOwogICAgIFFCYXNpY1RpbWVyIG1fdHJpcGxlQ2xpY2tUaW1lcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBjMWRkZDhkZjE4NGVhNDRi
ZWFkOGYzYmYxY2Y4MzM5Y2M3M2NlNDk0Li41Mzk1ZWEzNzNmMDU4MzA1MDgxNTNkMGJhNDhiMzc2
M2I4OTU1ODc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCkBAIC0xMzIzLDYgKzEzMjMsMTIgQEAgdm9pZCBXZWJQYWdlOjp0b3VjaEV2ZW50KGNv
bnN0IFdlYlRvdWNoRXZlbnQmIHRvdWNoRXZlbnQpCiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZFJlY2VpdmVFdmVudChzdGF0aWNfY2FzdDx1aW50MzJfdD4odG91Y2hFdmVu
dC50eXBlKCkpLCBoYW5kbGVkKSk7CiB9CisKK3ZvaWQgV2ViUGFnZTo6dG91Y2hFdmVudFN5bmNG
b3JUZXN0aW5nKGNvbnN0IFdlYlRvdWNoRXZlbnQmIHRvdWNoRXZlbnQsIGJvb2wmIGhhbmRsZWQp
Cit7CisgICAgQ3VycmVudEV2ZW50IGN1cnJlbnRFdmVudCh0b3VjaEV2ZW50KTsKKyAgICBoYW5k
bGVkID0gaGFuZGxlVG91Y2hFdmVudCh0b3VjaEV2ZW50LCBtX3BhZ2UuZ2V0KCkpOworfQogI2Vu
ZGlmCiAKIHZvaWQgV2ViUGFnZTo6c2Nyb2xsKFBhZ2UqIHBhZ2UsIFNjcm9sbERpcmVjdGlvbiBk
aXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMWIxODk2YmVmNWU1ZjM3ODM0MGM2
MDZmZTA3N2Q3NzA0OGQ0ZWQxMC4uNzIyZjRlYWQ0YWE0N2U4ZGY1MjBlMTk4MDM2NzFhYzc5OTAy
ODc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBA
IC01MDksNiArNTA5LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCiAgICAgdm9pZCB0b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmKTsKKyAgICB2b2lk
IHRvdWNoRXZlbnRTeW5jRm9yVGVzdGluZyhjb25zdCBXZWJUb3VjaEV2ZW50JiwgYm9vbCYpOwog
I2VuZGlmCiAgICAgdm9pZCBjb250ZXh0TWVudUhpZGRlbigpIHsgbV9pc1Nob3dpbmdDb250ZXh0
TWVudSA9IGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNWFiNzE5ZDhlZGZiZTFiOWUyMGZlY2My
NzkwYmUxNGZhNzQ2N2Q4Yi4uYjBmZWQxYWMwOWI2ZjUyZjMwN2YzN2UyNWMzMjU5OTk4NDc1YTc5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KQEAgLTQzLDYgKzQzLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAj
ZW5kaWYKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIFRvdWNoRXZlbnQoV2ViS2l0OjpX
ZWJUb3VjaEV2ZW50IGV2ZW50KQorICAgIFRvdWNoRXZlbnRTeW5jRm9yVGVzdGluZyhXZWJLaXQ6
OldlYlRvdWNoRXZlbnQgZXZlbnQpIC0+IChib29sIGhhbmRsZWQpCiAjZW5kaWYKIAogICAgIENv
bnRleHRNZW51SGlkZGVuKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCA3Nzg5MDNhNjIyZDM4NDI2MGE1YzhkYzZjYzE1Y2RjMWQwMzYwNjk4Li41
MGZjMzJiMWIxODVhNTNhOGM2MTE4MGVmNGI5MzU0MjQyMzgxOWMwIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTEt
MTEtMDIgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAg
ICAgIFtRdF1bV0syXSBBZGQgc3VwcG9ydCBmb3IgdG91Y2ggZXZlbnQgdGVzdGluZyB0byBXZWJL
aXRUZXN0UnVubmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MTMxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9EZXJpdmVkU291cmNlcy5wcm86IEJ1aWxkIHN5c3RlbSBm
b28gdG8gZW5zdXJlIHRoZSBFTkFCTEVfVE9VQ0hfRVZFTlRTCisgICAgICAgIGRlZmluZSB3b3Jr
cyBpbiBFdmVudFNlbmRpbmdDb250cm9sbGVyLmlkbAorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvRXZlbnRTZW5kZXJQcm94eS5oOiBBZGQgZGVjbGFyYXRpb25zIGZvciBRdCBpbXBsZW1lbnRh
dGlvbnMgb2YgdG91Y2gKKyAgICAgICAgaGFuZGxlcnMuCisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9FdmVudFNlbmRpbmdDb250cm9sbGVyLmlkbDog
QWRkIHRvdWNoIGZ1bmN0aW9ucworICAgICAgICByZXF1aXJlZCBieSB0ZXN0cy4KKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIu
Y3BwOiBGb3J3YXJkIHRvdWNoIG1lc3NhZ2VzIHRvIHRoZQorICAgICAgICB1aSBwcm9jZXNzLgor
ICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjphZGRUb3VjaFBvaW50KToKKyAg
ICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6dXBkYXRlVG91Y2hQb2ludCk6Cisg
ICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnNldFRvdWNoTW9kaWZpZXIpOgor
ICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjp0b3VjaFN0YXJ0KToKKyAgICAg
ICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6dG91Y2hNb3ZlKToKKyAgICAgICAgKFdU
Ujo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6dG91Y2hFbmQpOgorICAgICAgICAoV1RSOjpFdmVu
dFNlbmRpbmdDb250cm9sbGVyOjpjbGVhclRvdWNoUG9pbnRzKToKKyAgICAgICAgKFdUUjo6RXZl
bnRTZW5kaW5nQ29udHJvbGxlcjo6cmVsZWFzZVRvdWNoUG9pbnQpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvcXQvSW5qZWN0ZWRCdW5kbGUu
cHJvOiBJbmNsdWRlIGZlYXR1cmVzLnByaSBmb3IgZmVhdHVyZQorICAgICAgICBkZWZpbmVzLgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZSk6IEZvcndhcmQgaW5jb21pbmcKKyAgICAgICAgdG91Y2ggbWVzc2FnZXMgdG8g
dGhlIEV2ZW50U2VuZGVyUHJveHkuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9xdC9FdmVu
dFNlbmRlclByb3h5UXQuY3BwOiBJbXBsZW1lbnQgdG91Y2ggdGVzdCBoYXJuZXNzIGZ1bmN0aW9u
cy4KKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6RXZlbnRTZW5kZXJQcm94eSk6Cisg
ICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmFkZFRvdWNoUG9pbnQpOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRlclByb3h5Ojp1cGRhdGVUb3VjaFBvaW50KToKKyAgICAgICAgKFdUUjo6
RXZlbnRTZW5kZXJQcm94eTo6c2V0VG91Y2hNb2RpZmllcik6CisgICAgICAgIChXVFI6OkV2ZW50
U2VuZGVyUHJveHk6OnRvdWNoU3RhcnQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5
Ojp0b3VjaE1vdmUpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojp0b3VjaEVuZCk6
CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmNsZWFyVG91Y2hQb2ludHMpOgorICAg
ICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpyZWxlYXNlVG91Y2hQb2ludCk6CisgICAgICAg
IChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnNlbmRUb3VjaEV2ZW50KToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL3F0L1dlYktpdFRlc3RSdW5uZXIucHJvOiBJbmNsdWRlIGZlYXR1cmVzLnBy
aSBmb3IgZmVhdHVyZSBkZWZpbmVzLgorCiAyMDExLTExLTAxICBTaW1vbiBIYXVzbWFubiAgPHNp
bW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdW1dLMl0gRml4IGJ1aWxkIG9m
IFdlYktpdFRlc3RSdW5uZXIgd2l0aCBFTEYgc3ltYm9sIHZpc2liaWxpdHkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRGVyaXZlZFNvdXJjZXMucHJvIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9EZXJpdmVkU291cmNlcy5wcm8KaW5kZXggZWRhMjM5ZThlYzE0NWQ5YmM0NmYz
MmExMWQyZGI0YWUyNGJhMTAyZi4uMjBjMzBkYjY4YThjZWM1NDY5OGFhNGYyMGUxNjc5M2Q2YzUx
NGExMCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9EZXJpdmVkU291cmNlcy5w
cm8KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9EZXJpdmVkU291cmNlcy5wcm8KQEAgLTM3
LDYgKzM3LDggQEAgZGVmaW5lVGVzdChhZGRFeHRyYUNvbXBpbGVyKSB7CiAKIFNSQ19ST09UX0RJ
UiA9ICQkcmVwbGFjZShQV0QsIC9Ub29scy9XZWJLaXRUZXN0UnVubmVyLCAiIikKIAoraW5jbHVk
ZSgkJFNSQ19ST09UX0RJUi9Tb3VyY2UvV2ViQ29yZS9mZWF0dXJlcy5wcmkpICMgZm9yIEVOQUJM
RV9UT1VDSF9FVkVOVFMKKwogIyBNYWtlIHN1cmUgZm9yd2FyZGVkIGhlYWRlcnMgbmVlZGVkIGJ5
IHRoaXMgcHJvamVjdCBhcmUgcHJlc2VudAogZndoZWFkZXJfZ2VuZXJhdG9yLmNvbW1hbmRzID0g
cGVybCAkJHtTUkNfUk9PVF9ESVJ9L1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvZ2VuZXJhdGUtZm9y
d2FyZGluZy1oZWFkZXJzLnBsICQke1NSQ19ST09UX0RJUn0vVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ciAkJHtPVVRQVVRfRElSfS9pbmNsdWRlIHF0CiBmd2hlYWRlcl9nZW5lcmF0b3IuZGVwZW5kcyAg
PSAkJHtTUkNfUk9PVF9ESVJ9L1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvZ2VuZXJhdGUtZm9yd2Fy
ZGluZy1oZWFkZXJzLnBsCkBAIC00Nyw3ICs0OSw3IEBAIFFNQUtFX0VYVFJBX1RBUkdFVFMgICAg
ICAgICArPSBmd2hlYWRlcl9nZW5lcmF0b3IKIGlkbC5vdXRwdXQgPSAkJHtHRU5FUkFURURfU09V
UkNFU19ESVJ9L0pTJHtRTUFLRV9GSUxFX0JBU0V9LmNwcAogaWRsLmlucHV0ID0gSURMX0JJTkRJ
TkdTCiBpZGwud2tTY3JpcHQgPSAkJFBXRC8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsCi1pZGwuY29tbWFuZHMgPSBwZXJsIC1JJCRQV0Qv
Li4vLi4vU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cyAtSSQkUFdEL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzICQkaWRsLndrU2NyaXB0IC0tZGVmaW5lcyBcIlwiIC0tZ2VuZXJhdG9yIFRl
c3RSdW5uZXIgLS1pbmNsdWRlICQkUFdEL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzIC0tb3V0cHV0
RGlyICQkR0VORVJBVEVEX1NPVVJDRVNfRElSIC0tcHJlcHJvY2Vzc29yIFwiJCR7UU1BS0VfTU9D
fSAtRVwiICR7UU1BS0VfRklMRV9OQU1FfQoraWRsLmNvbW1hbmRzID0gcGVybCAtSSQkUFdELy4u
Ly4uL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMgLUkkJFBXRC9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncyAkJGlkbC53a1NjcmlwdCAtLWRlZmluZXMgXCIkJHtGRUFUVVJFX0RFRklORVNf
SkFWQVNDUklQVH1cIiAtLWdlbmVyYXRvciBUZXN0UnVubmVyIC0taW5jbHVkZSAkJFBXRC9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncyAtLW91dHB1dERpciAkJEdFTkVSQVRFRF9TT1VSQ0VTX0RJUiAt
LXByZXByb2Nlc3NvciBcIiQke1FNQUtFX01PQ30gLUVcIiAke1FNQUtFX0ZJTEVfTkFNRX0KIGlk
bC5kZXBlbmRzID0gJCRQV0QvLi4vLi4vU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yLnBtIFwKICAgICAgICAgICAgICAgJCRQV0QvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvQ29kZUdlbmVyYXRvclRlc3RSdW5uZXIucG0gXAogICAgICAgICAgICAgICAkJFBXRC8u
Li8uLi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbSBcCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCmluZGV4IDIyZDlhY2I1MzIzODhm
YTM4N2RmYTFmMTlkNjU3ZjExZTk1MTQ5ZDEuLmYzYTAxNzZkNTRmN2M4YThkMTY3N2FiZjM3NGNj
YzhlNTI3NWRiYWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5k
ZXJQcm94eS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5o
CkBAIC00OCw2ICs0OCwxOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGtleURvd24oV0tTdHJpbmdS
ZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzLCB1bnNpZ25lZCBsb2NhdGlvbik7CiAKKyNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQorICAgIC8vIFRvdWNoIGV2ZW50cy4KKyAgICB2b2lkIGFkZFRvdWNo
UG9pbnQoaW50IHgsIGludCB5KTsKKyAgICB2b2lkIHVwZGF0ZVRvdWNoUG9pbnQoaW50IGluZGV4
LCBpbnQgeCwgaW50IHkpOworICAgIHZvaWQgc2V0VG91Y2hNb2RpZmllcihXS0V2ZW50TW9kaWZp
ZXJzIG1vZGlmaWVyLCBib29sIGVuYWJsZSk7CisgICAgdm9pZCB0b3VjaFN0YXJ0KCk7CisgICAg
dm9pZCB0b3VjaE1vdmUoKTsKKyAgICB2b2lkIHRvdWNoRW5kKCk7CisgICAgdm9pZCBjbGVhclRv
dWNoUG9pbnRzKCk7CisgICAgdm9pZCByZWxlYXNlVG91Y2hQb2ludChpbnQgaW5kZXgpOworI2Vu
ZGlmCisKIHByaXZhdGU6CiAgICAgVGVzdENvbnRyb2xsZXIqIG1fdGVzdENvbnRyb2xsZXI7CiAK
QEAgLTU1LDYgKzY3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUNsaWNrQ291bnRGb3JC
dXR0b24oaW50IGJ1dHRvbik7CiAKICNpZiBQTEFURk9STShRVCkKKyNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQorICAgIHZvaWQgc2VuZFRvdWNoRXZlbnQoUUV2ZW50OjpUeXBlIHR5cGUpOworI2Vu
ZGlmCiAgICAgdm9pZCBzZW5kT3JRdWV1ZUV2ZW50KFFFdmVudCopOwogICAgIHZvaWQgcmVwbGF5
U2F2ZWRFdmVudHMoKTsKICNlbmRpZgpAQCAtNzAsNiArODUsMTIgQEAgcHJpdmF0ZToKICAgICBp
bnQgZXZlbnROdW1iZXI7CiAjZWxpZiBQTEFURk9STShRVCkKICAgICBRdDo6TW91c2VCdXR0b25z
IG1fbW91c2VCdXR0b25zOworCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBRTGlzdDxR
VG91Y2hFdmVudDo6VG91Y2hQb2ludD4gbV90b3VjaFBvaW50czsKKyAgICBRdDo6S2V5Ym9hcmRN
b2RpZmllcnMgbV90b3VjaE1vZGlmaWVyczsKKyAgICBib29sIG1fdG91Y2hBY3RpdmU7CisjZW5k
aWYKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9FdmVudFNlbmRpbmdDb250cm9sbGVyLmlkbCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvRXZlbnRTZW5kaW5nQ29udHJv
bGxlci5pZGwKaW5kZXggNjZjNGY3MWU5Yjg2NDk0YjAwNTNlZDFlZTFmNmMwMWIxNzA2MzA0YS4u
ZDY5MTRmYzEzNWE3ZTU0YzUzMTk2NzZiZDcyZDc1MjRkODkzMDFkOSAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9FdmVudFNlbmRpbmdD
b250cm9sbGVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRsCkBAIC00MSw2ICs0MSwxOCBAQCBt
b2R1bGUgV1RSIHsKICAgICAgICAgdm9pZCB6b29tUGFnZUluKCk7CiAgICAgICAgIHZvaWQgem9v
bVBhZ2VPdXQoKTsKICAgICAgICAgdm9pZCBzY2FsZVBhZ2VCeShpbiBkb3VibGUgc2NhbGUsIGlu
IGRvdWJsZSB4LCBpbiBkb3VibGUgeSk7CisKKyNpZiBkZWZpbmVkKEVOQUJMRV9UT1VDSF9FVkVO
VFMpICYmIEVOQUJMRV9UT1VDSF9FVkVOVFMKKyAgICAgICAgLy8gVG91Y2ggZXZlbnRzLgorICAg
ICAgICB2b2lkIGFkZFRvdWNoUG9pbnQoaW4gbG9uZyB4LCBpbiBsb25nIHkpOworICAgICAgICB2
b2lkIHVwZGF0ZVRvdWNoUG9pbnQoaW4gbG9uZyBpbmRleCwgaW4gbG9uZyB4LCBpbiBsb25nIHkp
OworICAgICAgICB2b2lkIHNldFRvdWNoTW9kaWZpZXIoaW4gRE9NU3RyaW5nIG1vZGlmaWVyLCBp
biBib29sZWFuIGVuYWJsZSk7CisgICAgICAgIHZvaWQgdG91Y2hTdGFydCgpOworICAgICAgICB2
b2lkIHRvdWNoTW92ZSgpOworICAgICAgICB2b2lkIHRvdWNoRW5kKCk7CisgICAgICAgIHZvaWQg
Y2xlYXJUb3VjaFBvaW50cygpOworICAgICAgICB2b2lkIHJlbGVhc2VUb3VjaFBvaW50KGluIGxv
bmcgaW5kZXgpOworI2VuZGlmCiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxl
ci5jcHAKaW5kZXggNDEyNjVlYmU4NjdmYjZkMzU0MjgxYmJjMmNmZWRiYjY5M2U2MzRhOS4uZDU4
NGQzMzFhZmY3OTMzZjhmMDVjYmNlMjJjMjVlNzdlZjg5M2EwOCAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIuY3BwCkBAIC0zMjMsNiArMzIzLDE0NiBAQCB2b2lkIEV2ZW50U2VuZGluZ0Nv
bnRyb2xsZXI6OnNjYWxlUGFnZUJ5KGRvdWJsZSBzY2FsZSwgZG91YmxlIHgsIGRvdWJsZSB5KQog
ICAgIFdLQnVuZGxlUGFnZVNldFNjYWxlQXRPcmlnaW4oSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgp
LnBhZ2UoKS0+cGFnZSgpLCBzY2FsZSwgb3JpZ2luKTsKIH0KIAorI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCit2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmFkZFRvdWNoUG9pbnQoaW50IHgs
IGludCB5KQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBFdmVudFNlbmRlck1lc3Nh
Z2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFdmVudFNlbmRl
ciIpKTsKKyAgICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBFdmVudFNlbmRl
ck1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CisKKyAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3ViTWVzc2FnZUtleShBZG9wdFdLLCBXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU3ViTWVzc2FnZSIpKTsKKyAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gc3ViTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIkFkZFRvdWNoUG9pbnQiKSk7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShFdmVu
dFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCBzdWJNZXNzYWdlS2V5LmdldCgpLCBzdWJNZXNzYWdl
TmFtZS5nZXQoKSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4geEtleSA9IGFkb3B0
V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlgiKSk7CisgICAgV0tSZXRhaW5QdHI8
V0tVSW50NjRSZWY+IHhSZWYgPSBXS1VJbnQ2NENyZWF0ZSh4KTsKKyAgICBXS0RpY3Rpb25hcnlB
ZGRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIHhLZXkuZ2V0KCksIHhSZWYuZ2V0
KCkpOworCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHlLZXkgPSBhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJZIikpOworICAgIFdLUmV0YWluUHRyPFdLVUludDY0
UmVmPiB5UmVmID0gV0tVSW50NjRDcmVhdGUoeSk7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShF
dmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCB5S2V5LmdldCgpLCB5UmVmLmdldCgpKTsKKwor
ICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVk
KCkuYnVuZGxlKCksIEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVz
c2FnZUJvZHkuZ2V0KCksIDApOworfQorCit2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnVw
ZGF0ZVRvdWNoUG9pbnQoaW50IGluZGV4LCBpbnQgeCwgaW50IHkpCit7CisgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIkV2ZW50U2VuZGVyIikpOworICAgIFdLUmV0YWluUHRyPFdL
TXV0YWJsZURpY3Rpb25hcnlSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkoQWRvcHRXSywgV0tN
dXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKTsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiBzdWJNZXNzYWdlS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJT
dWJNZXNzYWdlIikpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdWJNZXNzYWdlTmFt
ZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVXBkYXRlVG91Y2hQb2lu
dCIpKTsKKyAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0
KCksIHN1Yk1lc3NhZ2VLZXkuZ2V0KCksIHN1Yk1lc3NhZ2VOYW1lLmdldCgpKTsKKworICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBpbmRleEtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIkluZGV4IikpOworICAgIFdLUmV0YWluUHRyPFdLVUludDY0UmVmPiBp
bmRleFJlZiA9IFdLVUludDY0Q3JlYXRlKGluZGV4KTsKKyAgICBXS0RpY3Rpb25hcnlBZGRJdGVt
KEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIGluZGV4S2V5LmdldCgpLCBpbmRleFJlZi5n
ZXQoKSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4geEtleSA9IGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlgiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tVSW50
NjRSZWY+IHhSZWYgPSBXS1VJbnQ2NENyZWF0ZSh4KTsKKyAgICBXS0RpY3Rpb25hcnlBZGRJdGVt
KEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIHhLZXkuZ2V0KCksIHhSZWYuZ2V0KCkpOwor
CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHlLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJZIikpOworICAgIFdLUmV0YWluUHRyPFdLVUludDY0UmVmPiB5
UmVmID0gV0tVSW50NjRDcmVhdGUoeSk7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShFdmVudFNl
bmRlck1lc3NhZ2VCb2R5LmdldCgpLCB5S2V5LmdldCgpLCB5UmVmLmdldCgpKTsKKworICAgIFdL
QnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVu
ZGxlKCksIEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJv
ZHkuZ2V0KCksIDApOworfQorCit2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnNldFRvdWNo
TW9kaWZpZXIoY29uc3QgSlNTdHJpbmdSZWYgJm1vZGlmaWVyLCBib29sIGVuYWJsZSkKK3sKKyAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gRXZlbnRTZW5kZXJNZXNzYWdlTmFtZShBZG9wdFdL
LCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRXZlbnRTZW5kZXIiKSk7CisgICAgV0tS
ZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gRXZlbnRTZW5kZXJNZXNzYWdlQm9keShB
ZG9wdFdLLCBXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOworCisgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IHN1Yk1lc3NhZ2VLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIlN1Yk1lc3NhZ2UiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHN1
Yk1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRU
b3VjaE1vZGlmaWVyIikpOworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNz
YWdlQm9keS5nZXQoKSwgc3ViTWVzc2FnZUtleS5nZXQoKSwgc3ViTWVzc2FnZU5hbWUuZ2V0KCkp
OworCisgICAgV0tFdmVudE1vZGlmaWVycyBtb2QgPSAwOworICAgIGlmIChKU1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKG1vZGlmaWVyLCAiY3RybCIpKQorICAgICAgICBtb2QgPSBrV0tFdmVu
dE1vZGlmaWVyc0NvbnRyb2xLZXk7CisgICAgaWYgKEpTU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJp
bmcobW9kaWZpZXIsICJzaGlmdCIpKQorICAgICAgICBtb2QgPSBrV0tFdmVudE1vZGlmaWVyc1No
aWZ0S2V5OworICAgIGlmIChKU1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1vZGlmaWVyLCAi
YWx0IikpCisgICAgICAgIG1vZCA9IGtXS0V2ZW50TW9kaWZpZXJzQWx0S2V5OworICAgIGlmIChK
U1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1vZGlmaWVyLCAibWV0YSIpKQorICAgICAgICBt
b2QgPSBrV0tFdmVudE1vZGlmaWVyc01ldGFLZXk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gbW9kaWZpZXJLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJNb2RpZmllciIpKTsKKyAgICBXS1JldGFpblB0cjxXS1VJbnQ2NFJlZj4gbW9kaWZpZXJSZWYg
PSBXS1VJbnQ2NENyZWF0ZShtb2QpOworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5k
ZXJNZXNzYWdlQm9keS5nZXQoKSwgbW9kaWZpZXJLZXkuZ2V0KCksIG1vZGlmaWVyUmVmLmdldCgp
KTsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBlbmFibGVLZXkgPSBhZG9wdFdLKFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFbmFibGUiKSk7CisgICAgV0tSZXRhaW5QdHI8
V0tVSW50NjRSZWY+IGVuYWJsZVJlZiA9IFdLVUludDY0Q3JlYXRlKGVuYWJsZSk7CisgICAgV0tE
aWN0aW9uYXJ5QWRkSXRlbShFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCBlbmFibGVLZXku
Z2V0KCksIGVuYWJsZVJlZi5nZXQoKSk7CisKKyAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01l
c3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmJ1bmRsZSgpLCBFdmVudFNlbmRlck1lc3Nh
Z2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKK30KKwordm9p
ZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjp0b3VjaFN0YXJ0KCkKK3sKKyAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gRXZlbnRTZW5kZXJNZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiRXZlbnRTZW5kZXIiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tN
dXRhYmxlRGljdGlvbmFyeVJlZj4gRXZlbnRTZW5kZXJNZXNzYWdlQm9keShBZG9wdFdLLCBXS011
dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOworCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IHN1Yk1lc3NhZ2VLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlN1
Yk1lc3NhZ2UiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHN1Yk1lc3NhZ2VOYW1l
KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJUb3VjaFN0YXJ0IikpOwor
ICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgc3Vi
TWVzc2FnZUtleS5nZXQoKSwgc3ViTWVzc2FnZU5hbWUuZ2V0KCkpOworCisgICAgV0tCdW5kbGVQ
b3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5idW5kbGUoKSwg
RXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQo
KSwgMCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6dG91Y2hNb3ZlKCkKK3sK
KyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gRXZlbnRTZW5kZXJNZXNzYWdlTmFtZShBZG9w
dFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRXZlbnRTZW5kZXIiKSk7CisgICAg
V0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gRXZlbnRTZW5kZXJNZXNzYWdlQm9k
eShBZG9wdFdLLCBXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOworCisgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IHN1Yk1lc3NhZ2VLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIlN1Yk1lc3NhZ2UiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IHN1Yk1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJU
b3VjaE1vdmUiKSk7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShFdmVudFNlbmRlck1lc3NhZ2VC
b2R5LmdldCgpLCBzdWJNZXNzYWdlS2V5LmdldCgpLCBzdWJNZXNzYWdlTmFtZS5nZXQoKSk7CisK
KyAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNoYXJl
ZCgpLmJ1bmRsZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1l
c3NhZ2VCb2R5LmdldCgpLCAwKTsKK30KKwordm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjp0
b3VjaEVuZCgpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IEV2ZW50U2VuZGVyTWVz
c2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkV2ZW50U2Vu
ZGVyIikpOworICAgIFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IEV2ZW50U2Vu
ZGVyTWVzc2FnZUJvZHkoQWRvcHRXSywgV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKTsKKwor
ICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdWJNZXNzYWdlS2V5KEFkb3B0V0ssIFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTdWJNZXNzYWdlIikpOworICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiBzdWJNZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiVG91Y2hFbmQiKSk7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShFdmVudFNl
bmRlck1lc3NhZ2VCb2R5LmdldCgpLCBzdWJNZXNzYWdlS2V5LmdldCgpLCBzdWJNZXNzYWdlTmFt
ZS5nZXQoKSk7CisKKyAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRC
dW5kbGU6OnNoYXJlZCgpLmJ1bmRsZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBF
dmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKK30KKwordm9pZCBFdmVudFNlbmRpbmdD
b250cm9sbGVyOjpjbGVhclRvdWNoUG9pbnRzKCkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gRXZlbnRTZW5kZXJNZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiRXZlbnRTZW5kZXIiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGlj
dGlvbmFyeVJlZj4gRXZlbnRTZW5kZXJNZXNzYWdlQm9keShBZG9wdFdLLCBXS011dGFibGVEaWN0
aW9uYXJ5Q3JlYXRlKCkpOworCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHN1Yk1lc3Nh
Z2VLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlN1Yk1lc3NhZ2Ui
KSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHN1Yk1lc3NhZ2VOYW1lKEFkb3B0V0ss
IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDbGVhclRvdWNoUG9pbnRzIikpOworICAg
IFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgc3ViTWVz
c2FnZUtleS5nZXQoKSwgc3ViTWVzc2FnZU5hbWUuZ2V0KCkpOworCisgICAgV0tCdW5kbGVQb3N0
U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5idW5kbGUoKSwgRXZl
bnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwg
MCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6cmVsZWFzZVRvdWNoUG9pbnQo
aW50IGluZGV4KQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBFdmVudFNlbmRlck1l
c3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFdmVudFNl
bmRlciIpKTsKKyAgICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBFdmVudFNl
bmRlck1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CisK
KyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3ViTWVzc2FnZUtleShBZG9wdFdLLCBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU3ViTWVzc2FnZSIpKTsKKyAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gc3ViTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIlJlbGVhc2VUb3VjaFBvaW50IikpOworICAgIFdLRGljdGlvbmFyeUFkZEl0
ZW0oRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgc3ViTWVzc2FnZUtleS5nZXQoKSwgc3Vi
TWVzc2FnZU5hbWUuZ2V0KCkpOworCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGluZGV4
S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSW5kZXgiKSk7Cisg
ICAgV0tSZXRhaW5QdHI8V0tVSW50NjRSZWY+IGluZGV4UmVmID0gV0tVSW50NjRDcmVhdGUoaW5k
ZXgpOworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQo
KSwgaW5kZXhLZXkuZ2V0KCksIGluZGV4UmVmLmdldCgpKTsKKworICAgIFdLQnVuZGxlUG9zdFN5
bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIEV2ZW50
U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDAp
OworfQorI2VuZGlmCisKIC8vIE9iamVjdCBDcmVhdGlvbgogCiB2b2lkIEV2ZW50U2VuZGluZ0Nv
bnRyb2xsZXI6Om1ha2VXaW5kb3dPYmplY3QoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIHdpbmRvd09iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVy
LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0Nv
bnRyb2xsZXIuaAppbmRleCA1YTZmYTFhOTZiNzI2NGI1NTM5Zjg2MjNkMjkzMTAwZDIzMzFkYjdk
Li41NjcyNGNjYTA2ZDk0Yjg0NWE2ZGE1OWE0YzVhYzczMGY3NTczODEzIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xs
ZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXIuaApAQCAtNjIsNiArNjIsMTggQEAgcHVibGljOgogICAgIHZvaWQgem9v
bVBhZ2VPdXQoKTsKICAgICB2b2lkIHNjYWxlUGFnZUJ5KGRvdWJsZSBzY2FsZSwgZG91YmxlIHgs
IGRvdWJsZSB5KTsKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgLy8gVG91Y2ggZXZl
bnRzLgorICAgIHZvaWQgYWRkVG91Y2hQb2ludChpbnQgeCwgaW50IHkpOworICAgIHZvaWQgdXBk
YXRlVG91Y2hQb2ludChpbnQgaW5kZXgsIGludCB4LCBpbnQgeSk7CisgICAgdm9pZCBzZXRUb3Vj
aE1vZGlmaWVyKGNvbnN0IEpTU3RyaW5nUmVmICZtb2RpZmllciwgYm9vbCBlbmFibGUpOworICAg
IHZvaWQgdG91Y2hTdGFydCgpOworICAgIHZvaWQgdG91Y2hNb3ZlKCk7CisgICAgdm9pZCB0b3Vj
aEVuZCgpOworICAgIHZvaWQgY2xlYXJUb3VjaFBvaW50cygpOworICAgIHZvaWQgcmVsZWFzZVRv
dWNoUG9pbnQoaW50IGluZGV4KTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIEV2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIoKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9xdC9JbmplY3RlZEJ1bmRsZS5wcm8gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL3F0L0luamVjdGVkQnVuZGxlLnBybwppbmRleCA2MTZhZGMzOTIxNjI0
ZTJlNmQwNDk0Nzg5ZDcyM2UwZmUxODAxMjNlLi45ZTYwMWNlNzlhMmQ4N2NkZTJjMzg4YTExMmQ1
YmYxZDc1ZTA0NTFjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL3F0L0luamVjdGVkQnVuZGxlLnBybworKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL3F0L0luamVjdGVkQnVuZGxlLnBybwpAQCAtNTIsNiArNTIsOCBAQCBw
cmVwZW5kSmF2YVNjcmlwdENvcmVMaWIoLi4vLi4vLi4vSmF2YVNjcmlwdENvcmUpCiBpbmNsdWRl
KC4uLy4uLy4uLy4uL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJpKQogcHJlcGVuZFdlYktpdDJM
aWIoLi4vLi4vLi4vV2ViS2l0MikKIAoraW5jbHVkZSguLi8uLi8uLi8uLi9Tb3VyY2UvV2ViQ29y
ZS9mZWF0dXJlcy5wcmkpICMgRm9yIEVOQUJMRV9UT1VDSF9FVkVOVFMKKwogSU5DTFVERVBBVEgg
PSBcCiAgICAgJCRQV0QgXAogICAgICQkUFdELy4uIFwKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAKaW5kZXggYmVmZWEwZGFkYTIwMTRhMjU1ZWVmYWU4MTIwZmM1ZGE1
NzhiZGIzYy4uYzFmODM5NjMwMjNjNDRmZGFmNWVmZTM0ZDNiZGUwMjY2Y2Q5OGNkNiAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTYxOSw2ICs2MTksNzcg
QEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNo
cm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICB9CiAjZW5kaWYKKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgICAgIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiQWRkVG91Y2hQb2ludCIp
KSB7CisgICAgICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4geEtleSA9IGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlgiKSk7CisgICAgICAgICAgICBpbnQgeCA9
IHN0YXRpY19jYXN0PGludD4oV0tVSW50NjRHZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1VJbnQ2NFJl
Zj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIHhLZXku
Z2V0KCkpKSkpOworCisgICAgICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4geUtleSA9
IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlkiKSk7CisgICAgICAgICAg
ICBpbnQgeSA9IHN0YXRpY19jYXN0PGludD4oV0tVSW50NjRHZXRWYWx1ZShzdGF0aWNfY2FzdDxX
S1VJbnQ2NFJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25h
cnksIHlLZXkuZ2V0KCkpKSkpOworCisgICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPmFk
ZFRvdWNoUG9pbnQoeCwgeSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAi
VXBkYXRlVG91Y2hQb2ludCIpKSB7CisgICAgICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gaW5kZXhLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJJbmRl
eCIpKTsKKyAgICAgICAgICAgIGludCBpbmRleCA9IHN0YXRpY19jYXN0PGludD4oV0tVSW50NjRH
ZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1VJbnQ2NFJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktl
eShtZXNzYWdlQm9keURpY3Rpb25hcnksIGluZGV4S2V5LmdldCgpKSkpKTsKKworICAgICAgICAg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHhLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJYIikpOworICAgICAgICAgICAgaW50IHggPSBzdGF0aWNfY2FzdDxp
bnQ+KFdLVUludDY0R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+KFdLRGljdGlvbmFy
eUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCB4S2V5LmdldCgpKSkpKTsKKwor
ICAgICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHlLZXkgPSBhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJZIikpOworICAgICAgICAgICAgaW50IHkgPSBzdGF0
aWNfY2FzdDxpbnQ+KFdLVUludDY0R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+KFdL
RGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCB5S2V5LmdldCgp
KSkpKTsKKworICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT51cGRhdGVUb3VjaFBvaW50
KGluZGV4LCB4LCB5KTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJTZXRU
b3VjaE1vZGlmaWVyIikpIHsKKyAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBt
b2RpZmllcktleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIk1vZGlm
aWVyIikpOworICAgICAgICAgICAgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllciA9IHN0YXRpY19j
YXN0PFdLRXZlbnRNb2RpZmllcnM+KFdLVUludDY0R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tVSW50
NjRSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBt
b2RpZmllcktleS5nZXQoKSkpKSk7CisKKyAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBlbmFibGVLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJF
bmFibGUiKSk7CisgICAgICAgICAgICBib29sIGVuYWJsZSA9IHN0YXRpY19jYXN0PGJvb2w+KFdL
VUludDY0R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+KFdLRGljdGlvbmFyeUdldEl0
ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBlbmFibGVLZXkuZ2V0KCkpKSkpOworCisg
ICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPnNldFRvdWNoTW9kaWZpZXIobW9kaWZpZXIs
IGVuYWJsZSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiVG91Y2hTdGFy
dCIpKSB7CisgICAgICAgICAgICBXS1BhZ2VTZXRTaG91bGRTZW5kRXZlbnRzU3luY2hyb25vdXNs
eShtYWluV2ViVmlldygpLT5wYWdlKCksIHRydWUpOworICAgICAgICAgICAgbV9ldmVudFNlbmRl
clByb3h5LT50b3VjaFN0YXJ0KCk7CisgICAgICAgICAgICBXS1BhZ2VTZXRTaG91bGRTZW5kRXZl
bnRzU3luY2hyb25vdXNseShtYWluV2ViVmlldygpLT5wYWdlKCksIGZhbHNlKTsKKyAgICAgICAg
ICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRv
VVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJUb3VjaE1vdmUiKSkgeworICAgICAgICAgICAg
V0tQYWdlU2V0U2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3VzbHkobWFpbldlYlZpZXcoKS0+cGFn
ZSgpLCB0cnVlKTsKKyAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+dG91Y2hNb3ZlKCk7
CisgICAgICAgICAgICBXS1BhZ2VTZXRTaG91bGRTZW5kRXZlbnRzU3luY2hyb25vdXNseShtYWlu
V2ViVmlldygpLT5wYWdlKCksIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2Fn
ZU5hbWUsICJUb3VjaEVuZCIpKSB7CisgICAgICAgICAgICBXS1BhZ2VTZXRTaG91bGRTZW5kRXZl
bnRzU3luY2hyb25vdXNseShtYWluV2ViVmlldygpLT5wYWdlKCksIHRydWUpOworICAgICAgICAg
ICAgbV9ldmVudFNlbmRlclByb3h5LT50b3VjaEVuZCgpOworICAgICAgICAgICAgV0tQYWdlU2V0
U2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3VzbHkobWFpbldlYlZpZXcoKS0+cGFnZSgpLCBmYWxz
ZSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiQ2xlYXJUb3VjaFBvaW50
cyIpKSB7CisgICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPmNsZWFyVG91Y2hQb2ludHMo
KTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFdLU3Ry
aW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJSZWxlYXNlVG91Y2hQb2lu
dCIpKSB7CisgICAgICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gaW5kZXhLZXkgPSBh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJJbmRleCIpKTsKKyAgICAgICAg
ICAgIGludCBpbmRleCA9IHN0YXRpY19jYXN0PGludD4oV0tVSW50NjRHZXRWYWx1ZShzdGF0aWNf
Y2FzdDxXS1VJbnQ2NFJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURp
Y3Rpb25hcnksIGluZGV4S2V5LmdldCgpKSkpKTsKKyAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQ
cm94eS0+cmVsZWFzZVRvdWNoUG9pbnQoaW5kZXgpOworICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIH0KKyNlbmRpZgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvRXZlbnRTZW5kZXJQ
cm94eVF0LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvRXZlbnRTZW5kZXJQcm94eVF0
LmNwcAppbmRleCBhMWFlYjA1N2U2YjI0NzRkNjc2MmQ1ZGI5ZTFiZTIyZjI0NTA1MWE1Li45ZGFm
YWUxNWEwMTM1YTgxOTc0Y2ZmNTI0NjMxNzY2NjNhZmY3N2U5IDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL3F0L0V2ZW50U2VuZGVyUHJveHlRdC5jcHAKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9xdC9FdmVudFNlbmRlclByb3h5UXQuY3BwCkBAIC02Miw2ICs2Miw5IEBA
IEV2ZW50U2VuZGVyUHJveHk6OkV2ZW50U2VuZGVyUHJveHkoVGVzdENvbnRyb2xsZXIqIHRlc3RD
b250cm9sbGVyKQogICAgICwgbV9jbGlja1Bvc2l0aW9uKCkKICAgICAsIG1fY2xpY2tCdXR0b24o
a1dLRXZlbnRNb3VzZUJ1dHRvbk5vQnV0dG9uKQogICAgICwgbV9tb3VzZUJ1dHRvbnMoMCkKKyNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgICwgbV90b3VjaEFjdGl2ZShmYWxzZSkKKyNlbmRp
ZgogewogICAgIG1lbXNldChldmVudFF1ZXVlLCAwLCBzaXplb2YoZXZlbnRRdWV1ZSkpOwogICAg
IGVuZE9mUXVldWUgPSAwOwpAQCAtMzA1LDYgKzMwOCw5NSBAQCB2b2lkIEV2ZW50U2VuZGVyUHJv
eHk6OmxlYXBGb3J3YXJkKGludCBtcykKICAgICBldmVudFF1ZXVlW2VuZE9mUXVldWVdLm1fZGVs
YXkgPSBtczsKIH0KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCit2b2lkIEV2ZW50U2VuZGVy
UHJveHk6OmFkZFRvdWNoUG9pbnQoaW50IHgsIGludCB5KQoreworICAgIGNvbnN0IGludCBpZCA9
IG1fdG91Y2hQb2ludHMuaXNFbXB0eSgpID8gMCA6IG1fdG91Y2hQb2ludHMubGFzdCgpLmlkKCkg
KyAxOworICAgIGNvbnN0IFFQb2ludEYgcG9zKHgsIHkpOworICAgIFFUb3VjaEV2ZW50OjpUb3Vj
aFBvaW50IHBvaW50KGlkKTsKKyAgICBwb2ludC5zZXRQb3MocG9zKTsKKyAgICBwb2ludC5zZXRT
dGFydFBvcyhwb3MpOworICAgIHBvaW50LnNldFN0YXRlKFF0OjpUb3VjaFBvaW50UHJlc3NlZCk7
CisgICAgbV90b3VjaFBvaW50cy5hcHBlbmQocG9pbnQpOworfQorCit2b2lkIEV2ZW50U2VuZGVy
UHJveHk6OnVwZGF0ZVRvdWNoUG9pbnQoaW50IGluZGV4LCBpbnQgeCwgaW50IHkpCit7CisgICAg
aWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBtX3RvdWNoUG9pbnRzLmNvdW50KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50ICZwID0gbV90b3VjaFBvaW50
c1tpbmRleF07CisgICAgcC5zZXRQb3MoUVBvaW50Rih4LCB5KSk7CisgICAgcC5zZXRTdGF0ZShR
dDo6VG91Y2hQb2ludE1vdmVkKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjpzZXRUb3Vj
aE1vZGlmaWVyKFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXIsIGJvb2wgZW5hYmxlKQoreworICAg
IFF0OjpLZXlib2FyZE1vZGlmaWVycyBtb2QgPSBnZXRNb2RpZmllcnMobW9kaWZpZXIpOworCisg
ICAgaWYgKGVuYWJsZSkKKyAgICAgICAgbV90b3VjaE1vZGlmaWVycyB8PSBtb2Q7CisgICAgZWxz
ZQorICAgICAgICBtX3RvdWNoTW9kaWZpZXJzICY9IH5tb2Q7Cit9CisKK3ZvaWQgRXZlbnRTZW5k
ZXJQcm94eTo6dG91Y2hTdGFydCgpCit7CisgICAgaWYgKCFtX3RvdWNoQWN0aXZlKSB7CisgICAg
ICAgIHNlbmRUb3VjaEV2ZW50KFFFdmVudDo6VG91Y2hCZWdpbik7CisgICAgICAgIG1fdG91Y2hB
Y3RpdmUgPSB0cnVlOworICAgIH0gZWxzZQorICAgICAgICBzZW5kVG91Y2hFdmVudChRRXZlbnQ6
OlRvdWNoVXBkYXRlKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojp0b3VjaE1vdmUoKQor
eworICAgIHNlbmRUb3VjaEV2ZW50KFFFdmVudDo6VG91Y2hVcGRhdGUpOworfQorCit2b2lkIEV2
ZW50U2VuZGVyUHJveHk6OnRvdWNoRW5kKCkKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1f
dG91Y2hQb2ludHMuY291bnQoKTsgKytpKQorICAgICAgICBpZiAobV90b3VjaFBvaW50c1tpXS5z
dGF0ZSgpICE9IFF0OjpUb3VjaFBvaW50UmVsZWFzZWQpIHsKKyAgICAgICAgICAgIHNlbmRUb3Vj
aEV2ZW50KFFFdmVudDo6VG91Y2hVcGRhdGUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgc2VuZFRvdWNoRXZlbnQoUUV2ZW50OjpUb3VjaEVuZCk7CisgICAgbV90b3VjaEFj
dGl2ZSA9IGZhbHNlOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmNsZWFyVG91Y2hQb2lu
dHMoKQoreworICAgIG1fdG91Y2hQb2ludHMuY2xlYXIoKTsKKyAgICBtX3RvdWNoTW9kaWZpZXJz
ID0gUXQ6OktleWJvYXJkTW9kaWZpZXJzKCk7CisgICAgbV90b3VjaEFjdGl2ZSA9IGZhbHNlOwor
fQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJlbGVhc2VUb3VjaFBvaW50KGludCBpbmRleCkK
K3sKKyAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IG1fdG91Y2hQb2ludHMuY291bnQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV90b3VjaFBvaW50c1tpbmRleF0uc2V0U3RhdGUoUXQ6
OlRvdWNoUG9pbnRSZWxlYXNlZCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6c2VuZFRv
dWNoRXZlbnQoUUV2ZW50OjpUeXBlIHR5cGUpCit7CisgICAgUVRvdWNoRXZlbnQgZXZlbnQodHlw
ZSwgUVRvdWNoRXZlbnQ6OlRvdWNoU2NyZWVuLCBtX3RvdWNoTW9kaWZpZXJzKTsKKyAgICBldmVu
dC5zZXRUb3VjaFBvaW50cyhtX3RvdWNoUG9pbnRzKTsKKyAgICBtX3Rlc3RDb250cm9sbGVyLT5t
YWluV2ViVmlldygpLT5zZW5kRXZlbnQoJmV2ZW50KTsKKyAgICBRTGlzdDxRVG91Y2hFdmVudDo6
VG91Y2hQb2ludD46Okl0ZXJhdG9yIGl0ID0gbV90b3VjaFBvaW50cy5iZWdpbigpOworICAgIHdo
aWxlIChpdCAhPSBtX3RvdWNoUG9pbnRzLmVuZCgpKSB7CisgICAgICAgIGlmIChpdC0+c3RhdGUo
KSA9PSBRdDo6VG91Y2hQb2ludFJlbGVhc2VkKQorICAgICAgICAgICAgaXQgPSBtX3RvdWNoUG9p
bnRzLmVyYXNlKGl0KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpdC0+c2V0U3RhdGUo
UXQ6OlRvdWNoUG9pbnRTdGF0aW9uYXJ5KTsKKyAgICAgICAgICAgICsraXQ7CisgICAgICAgIH0K
KyAgICB9Cit9CisjZW5kaWYKKwogdm9pZCBFdmVudFNlbmRlclByb3h5OjpzZW5kT3JRdWV1ZUV2
ZW50KFFFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGVuZE9mUXVldWUgPT0gc3RhcnRPZlF1ZXVl
ICYmICFldmVudFF1ZXVlW2VuZE9mUXVldWVdLm1fZGVsYXkpIHsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvcXQvV2ViS2l0VGVzdFJ1bm5lci5wcm8gYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL3F0L1dlYktpdFRlc3RSdW5uZXIucHJvCmluZGV4IDZmYWRjZWIxNDhmMmUyZjA5
MmNmNjJiNDIyMjJhODc0ZDQyMDQ1NmMuLjRiNjliN2E2Y2M4MDRlOTRhY2ZiMTNmNTk5ZjBhNTI5
MTA4NjFlMzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvV2ViS2l0VGVz
dFJ1bm5lci5wcm8KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9XZWJLaXRUZXN0UnVu
bmVyLnBybwpAQCAtOCw2ICs4LDggQEAgR0VORVJBVEVEX1NPVVJDRVNfRElSID0gLi4vZ2VuZXJh
dGVkCiAKIGluY2x1ZGUoLi4vLi4vLi4vU291cmNlL1dlYktpdC5wcmkpCiAKK2luY2x1ZGUoLi4v
Li4vLi4vLi4vU291cmNlL1dlYkNvcmUvZmVhdHVyZXMucHJpKSAjIEZvciBFTkFCTEVfVE9VQ0hf
RVZFTlRTCisKIERFRklORVMgKz0gVVNFX1NZU1RFTV9NQUxMT0M9MQogREVGSU5FUyAtPSBRVF9B
U0NJSV9DQVNUX1dBUk5JTkdTCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkZmYwMDhkMTc2YTJlNWRlOWNhYjMyODEwYTE0
NWRhMTExOTY4OGYxLi5jMGNkYjU5NzgzODAwZWFhMzhlMzk1OWZhYjk0NmQyOGEzMjE0ODliIDEw
MDc1NQotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMTEtMDIgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24u
aGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFtRdF1bV0syXSBBZGQgc3VwcG9ydCBmb3Ig
dG91Y2ggZXZlbnQgdGVzdGluZyB0byBXZWJLaXRUZXN0UnVubmVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTMxMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vcXQtd2syL1NraXBwZWQ6
IFVuc2tpcCB0b3VjaCB0ZXN0cyB0aGF0IGFyZSBwYXNzaW5nIG5vdy4KKwogMjAxMS0xMS0wMSAg
TGVhbmRybyBQZXJlaXJhICA8bGVhbmRyb0Bwcm9mdXNpb24ubW9iaT4KIAogICAgICAgICBbRUZM
XSBVbnJldmlld2VkLiBBZGQgc29tZSBwaXhlbCBiYXNlbGluZXMgZm9yIHRlc3RzIGluIGZhc3Qv
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL1NraXBwZWQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC13azIvU2tpcHBlZAppbmRleCA4NWVlNDVjZTAyODk5Mjk5NzU4
NWUzNDAyYmFkNTAzY2M3MzYwMTI1Li4zNTgzNDA0MDYzNGRmMTk3ODVlMDNiNjAwZTM3YTZmYzA4
ZjQ1ODgwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC13azIvU2tpcHBlZAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC13azIvU2tpcHBlZApAQCAtMzAxLDkgKzMwMSw2
IEBAIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYvYmFkLXN1Yi1wcm90b2NvbC1u
b24tYXNjaWkuaHRtbAogIyBFdmVudFNlbmRlci5tb3VzZU1vdmVUbyBpcyBub3QgeWV0IHN1cHBv
cnRlZAogc3ZnL2R5bmFtaWMtdXBkYXRlcwogCi0jIGV2ZW50U2VuZGVyLmNsZWFyVG91Y2hQb2lu
dHMgaXMgdW5pbXBsZW1lbnRlZAotZmFzdC9ldmVudHMvdG91Y2gKLQogIyBsYXlvdXRUZXN0Q29u
dHJvbGxlci5pZ25vcmVEZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzIGlzIHVu
aW1wbGVtZW50ZWQKIGZhc3Qvbm90aWZpY2F0aW9ucwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113292</attachid>
            <date>2011-11-02 02:07:05 -0700</date>
            <delta_ts>2011-11-02 02:48:54 -0700</delta_ts>
            <desc>[Qt][WK2] Add support for touch event testing to WebKitTestRunner</desc>
            <filename>bug-71310-20111102100705.patch</filename>
            <type>text/plain</type>
            <size>33080</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTg5ODMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzZTBmOTljZjVkY2FmYTJk
OGE2M2YzMWMzZmJmZDQzNTM1YTk4NjdjLi43YzQ1ODU5MDAxM2M5YmUyNGZiOWQ2NjE3NzQ5ZjZj
OTg5MWUwZDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMTEtMDIgIFNpbW9u
IEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFtRdF1bV0sy
XSBBZGQgc3VwcG9ydCBmb3IgdG91Y2ggZXZlbnQgdGVzdGluZyB0byBXZWJLaXRUZXN0UnVubmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTMxMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFu
ZGxlVG91Y2hFdmVudCk6IEFkZCBzdXBwb3J0IGZvciBtX3Nob3VsZFNlbmRFdmVudHNTeW5jaHJv
bm91c2x5LgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdERlc2t0b3BXZWJQYWdlUHJveHkuY3Bw
OgorICAgICAgICAoUXREZXNrdG9wV2ViUGFnZVByb3h5OjpoYW5kbGVFdmVudCk6IEhhbmRsZSBw
bGFpbiB0b3VjaCBldmVudHMgaW4gdGhlIGRlc2t0b3AgcGFnZSBwcm94eSBieQorICAgICAgICBm
b3J3YXJkaW5nIHRoZW0gYXBwcm9wcmlhdGVseS4gV2Ugd2lsbCByZWNlaXZlIHRoZW0gZnJvbSBX
VFIgdGhyb3VnaCA6OmV2ZW50LCBidXQgd2Ugd29uJ3QKKyAgICAgICAgcmVjZWl2ZSB0aGVtIGZy
b20gUVF1aWNrQ2FudmFzIChpLmUuIHRoZSB1c2VyKSBiZWNhdXNlIHRoYXQgZG9lc24ndCB1c2Vz
IDo6ZXZlbnQgYnV0IG9ubHkKKyAgICAgICAgZGVkaWNhdGVkIGZvb0V2ZW50KCkgaGFuZGxlcnMs
IG9mIHdoaWNoIHdlIGRvbid0IHJlLWltcGxlbWVudCB0aGUgdG91Y2ggdmVyc2lvbi4KKyAgICAg
ICAgKFF0RGVza3RvcFdlYlBhZ2VQcm94eTo6aGFuZGxlVG91Y2hFdmVudCk6IEZvcndhcmQgdG91
Y2ggZXZlbnRzIHRvIFdlYlBhZ2VQUm94eS4KKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXREZXNr
dG9wV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp0b3VjaEV2ZW50U3luY0ZvclRlc3Rpbmcp
OiBBZGQgc3VwcG9ydCBmb3Igc3luY2hyb25vdXMgdG91Y2ggZXZlbnQgdGVzdGluZywKKyAgICAg
ICAgc2ltaWxhciB0byB0aGUgd2F5IGl0J3MgZG9uZSBmb3IgbW91c2UgZXZlbnRzLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6IERpdHRvLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOiBEaXR0by4KKwogMjAxMS0xMS0wMSAg
QW5kcmFzIEJlY3NpICA8YW5kcmFzLmJlY3NpQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdW1dL
Ml0gTWFrZSBBUEkgdGVzdHMgbGVzcyBub2lzeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCAzYzZjMzIzNzY0MzYwNjU0YzY4NWVmNDg1NDAxMDRkZjczODJi
YjNjLi5iNDAzYTRiZjViOWI5YzlhOWFkMDBlODAxMTJjNzAyNDY4MWZhMWQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtOTYwLDcgKzk2MCwxMiBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2
ZW50JiBldmVudCkKICAgICBpZiAobV9uZWVkVG91Y2hFdmVudHMpIHsKICAgICAgICAgbV90b3Vj
aEV2ZW50UXVldWUuYXBwZW5kKGV2ZW50KTsKICAgICAgICAgcHJvY2VzcygpLT5yZXNwb25zaXZl
bmVzc1RpbWVyKCktPnN0YXJ0KCk7Ci0gICAgICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6VG91Y2hFdmVudChldmVudCksIG1fcGFnZUlEKTsKKyAgICAgICAgaWYgKG1fc2hv
dWxkU2VuZEV2ZW50c1N5bmNocm9ub3VzbHkpIHsKKyAgICAgICAgICAgIGJvb2wgaGFuZGxlZCA9
IGZhbHNlOworICAgICAgICAgICAgcHJvY2VzcygpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFn
ZTo6VG91Y2hFdmVudFN5bmNGb3JUZXN0aW5nKGV2ZW50KSwgTWVzc2FnZXM6OldlYlBhZ2U6OlRv
dWNoRXZlbnRTeW5jRm9yVGVzdGluZzo6UmVwbHkoaGFuZGxlZCksIG1fcGFnZUlEKTsKKyAgICAg
ICAgICAgIGRpZFJlY2VpdmVFdmVudChldmVudC50eXBlKCksIGhhbmRsZWQpOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VG91
Y2hFdmVudChldmVudCksIG1fcGFnZUlEKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAobV90
b3VjaEV2ZW50UXVldWUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBib29sIGlzRXZlbnRIYW5k
bGVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRE
ZXNrdG9wV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERl
c2t0b3BXZWJQYWdlUHJveHkuY3BwCmluZGV4IDM4OGI2MDJkYjk4N2RmYjU5Yzk0ZTA5MjZjYWM2
MzQ5NWE1YzQwYzUuLjcxOWY3YmQ4MDg1NTcxZTM4NjE0MzFjNWFmMzQ5Mzc0MzQ5YmZjZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERlc2t0b3BXZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERlc2t0b3BXZWJQYWdl
UHJveHkuY3BwCkBAIC0xMTYsNiArMTE2LDEzIEBAIGJvb2wgUXREZXNrdG9wV2ViUGFnZVByb3h5
OjpoYW5kbGVFdmVudChRRXZlbnQqIGV2KQogICAgICAgICByZXR1cm4gaGFuZGxlRHJhZ01vdmVF
dmVudChyZWludGVycHJldF9jYXN0PFFEcmFnTW92ZUV2ZW50Kj4oZXYpKTsKICAgICBjYXNlIFFF
dmVudDo6RHJvcDoKICAgICAgICAgcmV0dXJuIGhhbmRsZURyb3BFdmVudChyZWludGVycHJldF9j
YXN0PFFEcm9wRXZlbnQqPihldikpOworICAgIC8vIFRvdWNoIGV2ZW50cyBvbmx5IGZvciBXZWJL
aXRUZXN0UnVubmVyCisgICAgY2FzZSBRRXZlbnQ6OlRvdWNoQmVnaW46CisgICAgY2FzZSBRRXZl
bnQ6OlRvdWNoVXBkYXRlOgorICAgIGNhc2UgUUV2ZW50OjpUb3VjaEVuZDoKKyAgICAgICAgcmV0
dXJuIGhhbmRsZVRvdWNoRXZlbnQoc3RhdGljX2Nhc3Q8UVRvdWNoRXZlbnQqPihldikpOworICAg
IGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gUXRXZWJQYWdlUHJv
eHk6OmhhbmRsZUV2ZW50KGV2KTsKIH0KQEAgLTIzOCw2ICsyNDUsMTMgQEAgYm9vbCBRdERlc2t0
b3BXZWJQYWdlUHJveHk6OmhhbmRsZURyb3BFdmVudChRRHJvcEV2ZW50KiBldikKICAgICByZXR1
cm4gYWNjZXB0ZWQ7CiB9CiAKK2Jvb2wgUXREZXNrdG9wV2ViUGFnZVByb3h5OjpoYW5kbGVUb3Vj
aEV2ZW50KFFUb3VjaEV2ZW50KiBldmVudCkKK3sKKyAgICBtX3dlYlBhZ2VQcm94eS0+aGFuZGxl
VG91Y2hFdmVudChOYXRpdmVXZWJUb3VjaEV2ZW50KGV2ZW50KSk7CisgICAgZXZlbnQtPmFjY2Vw
dCgpOworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIFF0RGVza3RvcFdlYlBhZ2VQcm94eTo6
dGltZXJFdmVudChRVGltZXJFdmVudCogZXYpCiB7CiAgICAgaW50IHRpbWVySWQgPSBldi0+dGlt
ZXJJZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RGVza3Rv
cFdlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RGVza3RvcFdl
YlBhZ2VQcm94eS5oCmluZGV4IDc1ZDEwYzczMGJiYmZiOTJiYTBkYWYzY2FmZDUxYWVmNmMyMjQ2
YzEuLmY3MzkwODZhMWMwMjdiMDIyOGU1NWFlZDQ1ZTA4Y2M2NmZiZGYyMGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERlc2t0b3BXZWJQYWdlUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXREZXNrdG9wV2ViUGFnZVByb3h5LmgKQEAg
LTYxLDYgKzYxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGhhbmRsZURyYWdMZWF2ZUV2ZW50KFFE
cmFnTGVhdmVFdmVudCopOwogICAgIGJvb2wgaGFuZGxlRHJhZ01vdmVFdmVudChRRHJhZ01vdmVF
dmVudCopOwogICAgIGJvb2wgaGFuZGxlRHJvcEV2ZW50KFFEcm9wRXZlbnQqKTsKKyAgICBib29s
IGhhbmRsZVRvdWNoRXZlbnQoUVRvdWNoRXZlbnQqKTsKIAogICAgIFFQb2ludCBtX3RyaXBsZUNs
aWNrOwogICAgIFFCYXNpY1RpbWVyIG1fdHJpcGxlQ2xpY2tUaW1lcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBjMWRkZDhkZjE4NGVhNDRi
ZWFkOGYzYmYxY2Y4MzM5Y2M3M2NlNDk0Li41Mzk1ZWEzNzNmMDU4MzA1MDgxNTNkMGJhNDhiMzc2
M2I4OTU1ODc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCkBAIC0xMzIzLDYgKzEzMjMsMTIgQEAgdm9pZCBXZWJQYWdlOjp0b3VjaEV2ZW50KGNv
bnN0IFdlYlRvdWNoRXZlbnQmIHRvdWNoRXZlbnQpCiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZFJlY2VpdmVFdmVudChzdGF0aWNfY2FzdDx1aW50MzJfdD4odG91Y2hFdmVu
dC50eXBlKCkpLCBoYW5kbGVkKSk7CiB9CisKK3ZvaWQgV2ViUGFnZTo6dG91Y2hFdmVudFN5bmNG
b3JUZXN0aW5nKGNvbnN0IFdlYlRvdWNoRXZlbnQmIHRvdWNoRXZlbnQsIGJvb2wmIGhhbmRsZWQp
Cit7CisgICAgQ3VycmVudEV2ZW50IGN1cnJlbnRFdmVudCh0b3VjaEV2ZW50KTsKKyAgICBoYW5k
bGVkID0gaGFuZGxlVG91Y2hFdmVudCh0b3VjaEV2ZW50LCBtX3BhZ2UuZ2V0KCkpOworfQogI2Vu
ZGlmCiAKIHZvaWQgV2ViUGFnZTo6c2Nyb2xsKFBhZ2UqIHBhZ2UsIFNjcm9sbERpcmVjdGlvbiBk
aXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMWIxODk2YmVmNWU1ZjM3ODM0MGM2
MDZmZTA3N2Q3NzA0OGQ0ZWQxMC4uNzIyZjRlYWQ0YWE0N2U4ZGY1MjBlMTk4MDM2NzFhYzc5OTAy
ODc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBA
IC01MDksNiArNTA5LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCiAgICAgdm9pZCB0b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmKTsKKyAgICB2b2lk
IHRvdWNoRXZlbnRTeW5jRm9yVGVzdGluZyhjb25zdCBXZWJUb3VjaEV2ZW50JiwgYm9vbCYpOwog
I2VuZGlmCiAgICAgdm9pZCBjb250ZXh0TWVudUhpZGRlbigpIHsgbV9pc1Nob3dpbmdDb250ZXh0
TWVudSA9IGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNWFiNzE5ZDhlZGZiZTFiOWUyMGZlY2My
NzkwYmUxNGZhNzQ2N2Q4Yi4uYjBmZWQxYWMwOWI2ZjUyZjMwN2YzN2UyNWMzMjU5OTk4NDc1YTc5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KQEAgLTQzLDYgKzQzLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAj
ZW5kaWYKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIFRvdWNoRXZlbnQoV2ViS2l0OjpX
ZWJUb3VjaEV2ZW50IGV2ZW50KQorICAgIFRvdWNoRXZlbnRTeW5jRm9yVGVzdGluZyhXZWJLaXQ6
OldlYlRvdWNoRXZlbnQgZXZlbnQpIC0+IChib29sIGhhbmRsZWQpCiAjZW5kaWYKIAogICAgIENv
bnRleHRNZW51SGlkZGVuKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCA3Nzg5MDNhNjIyZDM4NDI2MGE1YzhkYzZjYzE1Y2RjMWQwMzYwNjk4Li41
MGZjMzJiMWIxODVhNTNhOGM2MTE4MGVmNGI5MzU0MjQyMzgxOWMwIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTEt
MTEtMDIgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAg
ICAgIFtRdF1bV0syXSBBZGQgc3VwcG9ydCBmb3IgdG91Y2ggZXZlbnQgdGVzdGluZyB0byBXZWJL
aXRUZXN0UnVubmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MTMxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9EZXJpdmVkU291cmNlcy5wcm86IEJ1aWxkIHN5c3RlbSBm
b28gdG8gZW5zdXJlIHRoZSBFTkFCTEVfVE9VQ0hfRVZFTlRTCisgICAgICAgIGRlZmluZSB3b3Jr
cyBpbiBFdmVudFNlbmRpbmdDb250cm9sbGVyLmlkbAorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvRXZlbnRTZW5kZXJQcm94eS5oOiBBZGQgZGVjbGFyYXRpb25zIGZvciBRdCBpbXBsZW1lbnRh
dGlvbnMgb2YgdG91Y2gKKyAgICAgICAgaGFuZGxlcnMuCisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9FdmVudFNlbmRpbmdDb250cm9sbGVyLmlkbDog
QWRkIHRvdWNoIGZ1bmN0aW9ucworICAgICAgICByZXF1aXJlZCBieSB0ZXN0cy4KKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIu
Y3BwOiBGb3J3YXJkIHRvdWNoIG1lc3NhZ2VzIHRvIHRoZQorICAgICAgICB1aSBwcm9jZXNzLgor
ICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjphZGRUb3VjaFBvaW50KToKKyAg
ICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6dXBkYXRlVG91Y2hQb2ludCk6Cisg
ICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnNldFRvdWNoTW9kaWZpZXIpOgor
ICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjp0b3VjaFN0YXJ0KToKKyAgICAg
ICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6dG91Y2hNb3ZlKToKKyAgICAgICAgKFdU
Ujo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6dG91Y2hFbmQpOgorICAgICAgICAoV1RSOjpFdmVu
dFNlbmRpbmdDb250cm9sbGVyOjpjbGVhclRvdWNoUG9pbnRzKToKKyAgICAgICAgKFdUUjo6RXZl
bnRTZW5kaW5nQ29udHJvbGxlcjo6cmVsZWFzZVRvdWNoUG9pbnQpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvcXQvSW5qZWN0ZWRCdW5kbGUu
cHJvOiBJbmNsdWRlIGZlYXR1cmVzLnByaSBmb3IgZmVhdHVyZQorICAgICAgICBkZWZpbmVzLgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZSk6IEZvcndhcmQgaW5jb21pbmcKKyAgICAgICAgdG91Y2ggbWVzc2FnZXMgdG8g
dGhlIEV2ZW50U2VuZGVyUHJveHkuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9xdC9FdmVu
dFNlbmRlclByb3h5UXQuY3BwOiBJbXBsZW1lbnQgdG91Y2ggdGVzdCBoYXJuZXNzIGZ1bmN0aW9u
cy4KKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6RXZlbnRTZW5kZXJQcm94eSk6Cisg
ICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmFkZFRvdWNoUG9pbnQpOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRlclByb3h5Ojp1cGRhdGVUb3VjaFBvaW50KToKKyAgICAgICAgKFdUUjo6
RXZlbnRTZW5kZXJQcm94eTo6c2V0VG91Y2hNb2RpZmllcik6CisgICAgICAgIChXVFI6OkV2ZW50
U2VuZGVyUHJveHk6OnRvdWNoU3RhcnQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5
Ojp0b3VjaE1vdmUpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojp0b3VjaEVuZCk6
CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmNsZWFyVG91Y2hQb2ludHMpOgorICAg
ICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpyZWxlYXNlVG91Y2hQb2ludCk6CisgICAgICAg
IChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnNlbmRUb3VjaEV2ZW50KToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL3F0L1dlYktpdFRlc3RSdW5uZXIucHJvOiBJbmNsdWRlIGZlYXR1cmVzLnBy
aSBmb3IgZmVhdHVyZSBkZWZpbmVzLgorCiAyMDExLTExLTAxICBTaW1vbiBIYXVzbWFubiAgPHNp
bW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdW1dLMl0gRml4IGJ1aWxkIG9m
IFdlYktpdFRlc3RSdW5uZXIgd2l0aCBFTEYgc3ltYm9sIHZpc2liaWxpdHkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRGVyaXZlZFNvdXJjZXMucHJvIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9EZXJpdmVkU291cmNlcy5wcm8KaW5kZXggZWRhMjM5ZThlYzE0NWQ5YmM0NmYz
MmExMWQyZGI0YWUyNGJhMTAyZi4uMjBjMzBkYjY4YThjZWM1NDY5OGFhNGYyMGUxNjc5M2Q2YzUx
NGExMCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9EZXJpdmVkU291cmNlcy5w
cm8KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9EZXJpdmVkU291cmNlcy5wcm8KQEAgLTM3
LDYgKzM3LDggQEAgZGVmaW5lVGVzdChhZGRFeHRyYUNvbXBpbGVyKSB7CiAKIFNSQ19ST09UX0RJ
UiA9ICQkcmVwbGFjZShQV0QsIC9Ub29scy9XZWJLaXRUZXN0UnVubmVyLCAiIikKIAoraW5jbHVk
ZSgkJFNSQ19ST09UX0RJUi9Tb3VyY2UvV2ViQ29yZS9mZWF0dXJlcy5wcmkpICMgZm9yIEVOQUJM
RV9UT1VDSF9FVkVOVFMKKwogIyBNYWtlIHN1cmUgZm9yd2FyZGVkIGhlYWRlcnMgbmVlZGVkIGJ5
IHRoaXMgcHJvamVjdCBhcmUgcHJlc2VudAogZndoZWFkZXJfZ2VuZXJhdG9yLmNvbW1hbmRzID0g
cGVybCAkJHtTUkNfUk9PVF9ESVJ9L1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvZ2VuZXJhdGUtZm9y
d2FyZGluZy1oZWFkZXJzLnBsICQke1NSQ19ST09UX0RJUn0vVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ciAkJHtPVVRQVVRfRElSfS9pbmNsdWRlIHF0CiBmd2hlYWRlcl9nZW5lcmF0b3IuZGVwZW5kcyAg
PSAkJHtTUkNfUk9PVF9ESVJ9L1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvZ2VuZXJhdGUtZm9yd2Fy
ZGluZy1oZWFkZXJzLnBsCkBAIC00Nyw3ICs0OSw3IEBAIFFNQUtFX0VYVFJBX1RBUkdFVFMgICAg
ICAgICArPSBmd2hlYWRlcl9nZW5lcmF0b3IKIGlkbC5vdXRwdXQgPSAkJHtHRU5FUkFURURfU09V
UkNFU19ESVJ9L0pTJHtRTUFLRV9GSUxFX0JBU0V9LmNwcAogaWRsLmlucHV0ID0gSURMX0JJTkRJ
TkdTCiBpZGwud2tTY3JpcHQgPSAkJFBXRC8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsCi1pZGwuY29tbWFuZHMgPSBwZXJsIC1JJCRQV0Qv
Li4vLi4vU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cyAtSSQkUFdEL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzICQkaWRsLndrU2NyaXB0IC0tZGVmaW5lcyBcIlwiIC0tZ2VuZXJhdG9yIFRl
c3RSdW5uZXIgLS1pbmNsdWRlICQkUFdEL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzIC0tb3V0cHV0
RGlyICQkR0VORVJBVEVEX1NPVVJDRVNfRElSIC0tcHJlcHJvY2Vzc29yIFwiJCR7UU1BS0VfTU9D
fSAtRVwiICR7UU1BS0VfRklMRV9OQU1FfQoraWRsLmNvbW1hbmRzID0gcGVybCAtSSQkUFdELy4u
Ly4uL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMgLUkkJFBXRC9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncyAkJGlkbC53a1NjcmlwdCAtLWRlZmluZXMgXCIkJHtGRUFUVVJFX0RFRklORVNf
SkFWQVNDUklQVH1cIiAtLWdlbmVyYXRvciBUZXN0UnVubmVyIC0taW5jbHVkZSAkJFBXRC9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncyAtLW91dHB1dERpciAkJEdFTkVSQVRFRF9TT1VSQ0VTX0RJUiAt
LXByZXByb2Nlc3NvciBcIiQke1FNQUtFX01PQ30gLUVcIiAke1FNQUtFX0ZJTEVfTkFNRX0KIGlk
bC5kZXBlbmRzID0gJCRQV0QvLi4vLi4vU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yLnBtIFwKICAgICAgICAgICAgICAgJCRQV0QvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvQ29kZUdlbmVyYXRvclRlc3RSdW5uZXIucG0gXAogICAgICAgICAgICAgICAkJFBXRC8u
Li8uLi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbSBcCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCmluZGV4IDIyZDlhY2I1MzIzODhm
YTM4N2RmYTFmMTlkNjU3ZjExZTk1MTQ5ZDEuLmNhYjA5M2E1MzdjMTc5YzQyMGU2ZjI2NjJlMzlh
YTg4MmQ0NzA2YmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5k
ZXJQcm94eS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5o
CkBAIC00OCw2ICs0OCwxOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGtleURvd24oV0tTdHJpbmdS
ZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzLCB1bnNpZ25lZCBsb2NhdGlvbik7CiAKKyNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQorICAgIC8vIFRvdWNoIGV2ZW50cy4KKyAgICB2b2lkIGFkZFRvdWNo
UG9pbnQoaW50IHgsIGludCB5KTsKKyAgICB2b2lkIHVwZGF0ZVRvdWNoUG9pbnQoaW50IGluZGV4
LCBpbnQgeCwgaW50IHkpOworICAgIHZvaWQgc2V0VG91Y2hNb2RpZmllcihXS0V2ZW50TW9kaWZp
ZXJzLCBib29sIGVuYWJsZSk7CisgICAgdm9pZCB0b3VjaFN0YXJ0KCk7CisgICAgdm9pZCB0b3Vj
aE1vdmUoKTsKKyAgICB2b2lkIHRvdWNoRW5kKCk7CisgICAgdm9pZCBjbGVhclRvdWNoUG9pbnRz
KCk7CisgICAgdm9pZCByZWxlYXNlVG91Y2hQb2ludChpbnQgaW5kZXgpOworI2VuZGlmCisKIHBy
aXZhdGU6CiAgICAgVGVzdENvbnRyb2xsZXIqIG1fdGVzdENvbnRyb2xsZXI7CiAKQEAgLTU1LDYg
KzY3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUNsaWNrQ291bnRGb3JCdXR0b24oaW50
IGJ1dHRvbik7CiAKICNpZiBQTEFURk9STShRVCkKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQor
ICAgIHZvaWQgc2VuZFRvdWNoRXZlbnQoUUV2ZW50OjpUeXBlKTsKKyNlbmRpZgogICAgIHZvaWQg
c2VuZE9yUXVldWVFdmVudChRRXZlbnQqKTsKICAgICB2b2lkIHJlcGxheVNhdmVkRXZlbnRzKCk7
CiAjZW5kaWYKQEAgLTcwLDYgKzg1LDEyIEBAIHByaXZhdGU6CiAgICAgaW50IGV2ZW50TnVtYmVy
OwogI2VsaWYgUExBVEZPUk0oUVQpCiAgICAgUXQ6Ok1vdXNlQnV0dG9ucyBtX21vdXNlQnV0dG9u
czsKKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgUUxpc3Q8UVRvdWNoRXZlbnQ6OlRv
dWNoUG9pbnQ+IG1fdG91Y2hQb2ludHM7CisgICAgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1fdG91
Y2hNb2RpZmllcnM7CisgICAgYm9vbCBtX3RvdWNoQWN0aXZlOworI2VuZGlmCiAjZW5kaWYKIH07
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRsCmluZGV4
IDY2YzRmNzFlOWI4NjQ5NGIwMDUzZWQxZWUxZjZjMDFiMTcwNjMwNGEuLmQ2OTE0ZmMxMzVhN2U1
NGM1MzE5Njc2YmQ3MmQ3NTI0ZDg5MzAxZDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5pZGwK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9FdmVu
dFNlbmRpbmdDb250cm9sbGVyLmlkbApAQCAtNDEsNiArNDEsMTggQEAgbW9kdWxlIFdUUiB7CiAg
ICAgICAgIHZvaWQgem9vbVBhZ2VJbigpOwogICAgICAgICB2b2lkIHpvb21QYWdlT3V0KCk7CiAg
ICAgICAgIHZvaWQgc2NhbGVQYWdlQnkoaW4gZG91YmxlIHNjYWxlLCBpbiBkb3VibGUgeCwgaW4g
ZG91YmxlIHkpOworCisjaWYgZGVmaW5lZChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAmJiBFTkFCTEVf
VE9VQ0hfRVZFTlRTCisgICAgICAgIC8vIFRvdWNoIGV2ZW50cy4KKyAgICAgICAgdm9pZCBhZGRU
b3VjaFBvaW50KGluIGxvbmcgeCwgaW4gbG9uZyB5KTsKKyAgICAgICAgdm9pZCB1cGRhdGVUb3Vj
aFBvaW50KGluIGxvbmcgaW5kZXgsIGluIGxvbmcgeCwgaW4gbG9uZyB5KTsKKyAgICAgICAgdm9p
ZCBzZXRUb3VjaE1vZGlmaWVyKGluIERPTVN0cmluZyBtb2RpZmllciwgaW4gYm9vbGVhbiBlbmFi
bGUpOworICAgICAgICB2b2lkIHRvdWNoU3RhcnQoKTsKKyAgICAgICAgdm9pZCB0b3VjaE1vdmUo
KTsKKyAgICAgICAgdm9pZCB0b3VjaEVuZCgpOworICAgICAgICB2b2lkIGNsZWFyVG91Y2hQb2lu
dHMoKTsKKyAgICAgICAgdm9pZCByZWxlYXNlVG91Y2hQb2ludChpbiBsb25nIGluZGV4KTsKKyNl
bmRpZgogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDQx
MjY1ZWJlODY3ZmI2ZDM1NDI4MWJiYzJjZmVkYmI2OTNlNjM0YTkuLmQ1ODRkMzMxYWZmNzkzM2Y4
ZjA1Y2JjZTIyYzI1ZTc3ZWY4OTNhMDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNw
cApAQCAtMzIzLDYgKzMyMywxNDYgQEAgdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpzY2Fs
ZVBhZ2VCeShkb3VibGUgc2NhbGUsIGRvdWJsZSB4LCBkb3VibGUgeSkKICAgICBXS0J1bmRsZVBh
Z2VTZXRTY2FsZUF0T3JpZ2luKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2Uo
KSwgc2NhbGUsIG9yaWdpbik7CiB9CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQordm9pZCBF
dmVudFNlbmRpbmdDb250cm9sbGVyOjphZGRUb3VjaFBvaW50KGludCB4LCBpbnQgeSkKK3sKKyAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gRXZlbnRTZW5kZXJNZXNzYWdlTmFtZShBZG9wdFdL
LCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRXZlbnRTZW5kZXIiKSk7CisgICAgV0tS
ZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gRXZlbnRTZW5kZXJNZXNzYWdlQm9keShB
ZG9wdFdLLCBXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOworCisgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IHN1Yk1lc3NhZ2VLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIlN1Yk1lc3NhZ2UiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHN1
Yk1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBZGRU
b3VjaFBvaW50IikpOworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdl
Qm9keS5nZXQoKSwgc3ViTWVzc2FnZUtleS5nZXQoKSwgc3ViTWVzc2FnZU5hbWUuZ2V0KCkpOwor
CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHhLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJYIikpOworICAgIFdLUmV0YWluUHRyPFdLVUludDY0UmVmPiB4
UmVmID0gV0tVSW50NjRDcmVhdGUoeCk7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShFdmVudFNl
bmRlck1lc3NhZ2VCb2R5LmdldCgpLCB4S2V5LmdldCgpLCB4UmVmLmdldCgpKTsKKworICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiB5S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiWSIpKTsKKyAgICBXS1JldGFpblB0cjxXS1VJbnQ2NFJlZj4geVJlZiA9IFdL
VUludDY0Q3JlYXRlKHkpOworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNz
YWdlQm9keS5nZXQoKSwgeUtleS5nZXQoKSwgeVJlZi5nZXQoKSk7CisKKyAgICBXS0J1bmRsZVBv
c3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmJ1bmRsZSgpLCBF
dmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgp
LCAwKTsKK30KKwordm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjp1cGRhdGVUb3VjaFBvaW50
KGludCBpbmRleCwgaW50IHgsIGludCB5KQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiBFdmVudFNlbmRlck1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJFdmVudFNlbmRlciIpKTsKKyAgICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9u
YXJ5UmVmPiBFdmVudFNlbmRlck1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLTXV0YWJsZURpY3Rpb25h
cnlDcmVhdGUoKSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3ViTWVzc2FnZUtl
eShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU3ViTWVzc2FnZSIpKTsK
KyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3ViTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlVwZGF0ZVRvdWNoUG9pbnQiKSk7CisgICAgV0tE
aWN0aW9uYXJ5QWRkSXRlbShFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCBzdWJNZXNzYWdl
S2V5LmdldCgpLCBzdWJNZXNzYWdlTmFtZS5nZXQoKSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gaW5kZXhLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJJbmRleCIpKTsKKyAgICBXS1JldGFpblB0cjxXS1VJbnQ2NFJlZj4gaW5kZXhSZWYgPSBXS1VJ
bnQ2NENyZWF0ZShpbmRleCk7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShFdmVudFNlbmRlck1l
c3NhZ2VCb2R5LmdldCgpLCBpbmRleEtleS5nZXQoKSwgaW5kZXhSZWYuZ2V0KCkpOworCisgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHhLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJYIikpOworICAgIFdLUmV0YWluUHRyPFdLVUludDY0UmVmPiB4UmVmID0g
V0tVSW50NjRDcmVhdGUoeCk7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShFdmVudFNlbmRlck1l
c3NhZ2VCb2R5LmdldCgpLCB4S2V5LmdldCgpLCB4UmVmLmdldCgpKTsKKworICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiB5S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiWSIpKTsKKyAgICBXS1JldGFpblB0cjxXS1VJbnQ2NFJlZj4geVJlZiA9IFdLVUludDY0
Q3JlYXRlKHkpOworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdlQm9k
eS5nZXQoKSwgeUtleS5nZXQoKSwgeVJlZi5nZXQoKSk7CisKKyAgICBXS0J1bmRsZVBvc3RTeW5j
aHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmJ1bmRsZSgpLCBFdmVudFNl
bmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsK
K30KKwordm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpzZXRUb3VjaE1vZGlmaWVyKGNvbnN0
IEpTU3RyaW5nUmVmICZtb2RpZmllciwgYm9vbCBlbmFibGUpCit7CisgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIkV2ZW50U2VuZGVyIikpOworICAgIFdLUmV0YWluUHRyPFdLTXV0
YWJsZURpY3Rpb25hcnlSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkoQWRvcHRXSywgV0tNdXRh
YmxlRGljdGlvbmFyeUNyZWF0ZSgpKTsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBz
dWJNZXNzYWdlS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTdWJN
ZXNzYWdlIikpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdWJNZXNzYWdlTmFtZShB
ZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0VG91Y2hNb2RpZmllciIp
KTsKKyAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCks
IHN1Yk1lc3NhZ2VLZXkuZ2V0KCksIHN1Yk1lc3NhZ2VOYW1lLmdldCgpKTsKKworICAgIFdLRXZl
bnRNb2RpZmllcnMgbW9kID0gMDsKKyAgICBpZiAoSlNTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmlu
Zyhtb2RpZmllciwgImN0cmwiKSkKKyAgICAgICAgbW9kID0ga1dLRXZlbnRNb2RpZmllcnNDb250
cm9sS2V5OworICAgIGlmIChKU1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1vZGlmaWVyLCAi
c2hpZnQiKSkKKyAgICAgICAgbW9kID0ga1dLRXZlbnRNb2RpZmllcnNTaGlmdEtleTsKKyAgICBp
ZiAoSlNTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtb2RpZmllciwgImFsdCIpKQorICAgICAg
ICBtb2QgPSBrV0tFdmVudE1vZGlmaWVyc0FsdEtleTsKKyAgICBpZiAoSlNTdHJpbmdJc0VxdWFs
VG9VVEY4Q1N0cmluZyhtb2RpZmllciwgIm1ldGEiKSkKKyAgICAgICAgbW9kID0ga1dLRXZlbnRN
b2RpZmllcnNNZXRhS2V5OworCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1vZGlmaWVy
S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTW9kaWZpZXIiKSk7
CisgICAgV0tSZXRhaW5QdHI8V0tVSW50NjRSZWY+IG1vZGlmaWVyUmVmID0gV0tVSW50NjRDcmVh
dGUobW9kKTsKKyAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHku
Z2V0KCksIG1vZGlmaWVyS2V5LmdldCgpLCBtb2RpZmllclJlZi5nZXQoKSk7CisKKyAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gZW5hYmxlS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiRW5hYmxlIikpOworICAgIFdLUmV0YWluUHRyPFdLVUludDY0UmVmPiBl
bmFibGVSZWYgPSBXS1VJbnQ2NENyZWF0ZShlbmFibGUpOworICAgIFdLRGljdGlvbmFyeUFkZEl0
ZW0oRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgZW5hYmxlS2V5LmdldCgpLCBlbmFibGVS
ZWYuZ2V0KCkpOworCisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVk
QnVuZGxlOjpzaGFyZWQoKS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwg
RXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kaW5n
Q29udHJvbGxlcjo6dG91Y2hTdGFydCgpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIkV2ZW50U2VuZGVyIikpOworICAgIFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25h
cnlSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkoQWRvcHRXSywgV0tNdXRhYmxlRGljdGlvbmFy
eUNyZWF0ZSgpKTsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdWJNZXNzYWdlS2V5
KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTdWJNZXNzYWdlIikpOwor
ICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdWJNZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVG91Y2hTdGFydCIpKTsKKyAgICBXS0RpY3Rpb25h
cnlBZGRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIHN1Yk1lc3NhZ2VLZXkuZ2V0
KCksIHN1Yk1lc3NhZ2VOYW1lLmdldCgpKTsKKworICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3Vz
TWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIEV2ZW50U2VuZGVyTWVz
c2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDApOworfQorCit2
b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnRvdWNoTW92ZSgpCit7CisgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIkV2ZW50U2VuZGVyIikpOworICAgIFdLUmV0YWluUHRyPFdL
TXV0YWJsZURpY3Rpb25hcnlSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkoQWRvcHRXSywgV0tN
dXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKTsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiBzdWJNZXNzYWdlS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJT
dWJNZXNzYWdlIikpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdWJNZXNzYWdlTmFt
ZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVG91Y2hNb3ZlIikpOwor
ICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgc3Vi
TWVzc2FnZUtleS5nZXQoKSwgc3ViTWVzc2FnZU5hbWUuZ2V0KCkpOworCisgICAgV0tCdW5kbGVQ
b3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5idW5kbGUoKSwg
RXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQo
KSwgMCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6dG91Y2hFbmQoKQorewor
ICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBFdmVudFNlbmRlck1lc3NhZ2VOYW1lKEFkb3B0
V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFdmVudFNlbmRlciIpKTsKKyAgICBX
S1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBFdmVudFNlbmRlck1lc3NhZ2VCb2R5
KEFkb3B0V0ssIFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CisKKyAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gc3ViTWVzc2FnZUtleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiU3ViTWVzc2FnZSIpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
c3ViTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlRv
dWNoRW5kIikpOworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdlQm9k
eS5nZXQoKSwgc3ViTWVzc2FnZUtleS5nZXQoKSwgc3ViTWVzc2FnZU5hbWUuZ2V0KCkpOworCisg
ICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaGFyZWQo
KS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNz
YWdlQm9keS5nZXQoKSwgMCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6Y2xl
YXJUb3VjaFBvaW50cygpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IEV2ZW50U2Vu
ZGVyTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkV2
ZW50U2VuZGVyIikpOworICAgIFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IEV2
ZW50U2VuZGVyTWVzc2FnZUJvZHkoQWRvcHRXSywgV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgp
KTsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdWJNZXNzYWdlS2V5KEFkb3B0V0ss
IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTdWJNZXNzYWdlIikpOworICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiBzdWJNZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiQ2xlYXJUb3VjaFBvaW50cyIpKTsKKyAgICBXS0RpY3Rpb25hcnlB
ZGRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIHN1Yk1lc3NhZ2VLZXkuZ2V0KCks
IHN1Yk1lc3NhZ2VOYW1lLmdldCgpKTsKKworICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVz
c2FnZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIEV2ZW50U2VuZGVyTWVzc2Fn
ZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDApOworfQorCit2b2lk
IEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnJlbGVhc2VUb3VjaFBvaW50KGludCBpbmRleCkKK3sK
KyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gRXZlbnRTZW5kZXJNZXNzYWdlTmFtZShBZG9w
dFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRXZlbnRTZW5kZXIiKSk7CisgICAg
V0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gRXZlbnRTZW5kZXJNZXNzYWdlQm9k
eShBZG9wdFdLLCBXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOworCisgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IHN1Yk1lc3NhZ2VLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIlN1Yk1lc3NhZ2UiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IHN1Yk1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJS
ZWxlYXNlVG91Y2hQb2ludCIpKTsKKyAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKEV2ZW50U2VuZGVy
TWVzc2FnZUJvZHkuZ2V0KCksIHN1Yk1lc3NhZ2VLZXkuZ2V0KCksIHN1Yk1lc3NhZ2VOYW1lLmdl
dCgpKTsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBpbmRleEtleSA9IGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkluZGV4IikpOworICAgIFdLUmV0YWluUHRy
PFdLVUludDY0UmVmPiBpbmRleFJlZiA9IFdLVUludDY0Q3JlYXRlKGluZGV4KTsKKyAgICBXS0Rp
Y3Rpb25hcnlBZGRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIGluZGV4S2V5Lmdl
dCgpLCBpbmRleFJlZi5nZXQoKSk7CisKKyAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3Nh
Z2UoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmJ1bmRsZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VO
YW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKK30KKyNlbmRpZgor
CiAvLyBPYmplY3QgQ3JlYXRpb24KIAogdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjptYWtl
V2luZG93T2JqZWN0KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB3aW5kb3dPYmpl
Y3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmgKaW5k
ZXggNWE2ZmExYTk2YjcyNjRiNTUzOWY4NjIzZDI5MzEwMGQyMzMxZGI3ZC4uNTY3MjRjY2EwNmQ5
NGI4NDVhNmRhNTlhNGM1YWM3MzBmNzU3MzgxMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmgKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVy
LmgKQEAgLTYyLDYgKzYyLDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIHpvb21QYWdlT3V0KCk7CiAg
ICAgdm9pZCBzY2FsZVBhZ2VCeShkb3VibGUgc2NhbGUsIGRvdWJsZSB4LCBkb3VibGUgeSk7CiAK
KyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIC8vIFRvdWNoIGV2ZW50cy4KKyAgICB2b2lk
IGFkZFRvdWNoUG9pbnQoaW50IHgsIGludCB5KTsKKyAgICB2b2lkIHVwZGF0ZVRvdWNoUG9pbnQo
aW50IGluZGV4LCBpbnQgeCwgaW50IHkpOworICAgIHZvaWQgc2V0VG91Y2hNb2RpZmllcihjb25z
dCBKU1N0cmluZ1JlZiAmbW9kaWZpZXIsIGJvb2wgZW5hYmxlKTsKKyAgICB2b2lkIHRvdWNoU3Rh
cnQoKTsKKyAgICB2b2lkIHRvdWNoTW92ZSgpOworICAgIHZvaWQgdG91Y2hFbmQoKTsKKyAgICB2
b2lkIGNsZWFyVG91Y2hQb2ludHMoKTsKKyAgICB2b2lkIHJlbGVhc2VUb3VjaFBvaW50KGludCBp
bmRleCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBFdmVudFNlbmRpbmdDb250cm9sbGVyKCk7
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvcXQv
SW5qZWN0ZWRCdW5kbGUucHJvIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9xdC9JbmplY3RlZEJ1bmRsZS5wcm8KaW5kZXggNjE2YWRjMzkyMTYyNGUyZTZkMDQ5NDc4OWQ3
MjNlMGZlMTgwMTIzZS4uOWU2MDFjZTc5YTJkODdjZGUyYzM4OGExMTJkNWJmMWQ3NWUwNDUxYyAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9xdC9Jbmpl
Y3RlZEJ1bmRsZS5wcm8KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9xdC9JbmplY3RlZEJ1bmRsZS5wcm8KQEAgLTUyLDYgKzUyLDggQEAgcHJlcGVuZEphdmFTY3Jp
cHRDb3JlTGliKC4uLy4uLy4uL0phdmFTY3JpcHRDb3JlKQogaW5jbHVkZSguLi8uLi8uLi8uLi9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnByaSkKIHByZXBlbmRXZWJLaXQyTGliKC4uLy4uLy4uL1dl
YktpdDIpCiAKK2luY2x1ZGUoLi4vLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZmVhdHVyZXMucHJp
KSAjIEZvciBFTkFCTEVfVE9VQ0hfRVZFTlRTCisKIElOQ0xVREVQQVRIID0gXAogICAgICQkUFdE
IFwKICAgICAkJFBXRC8uLiBcCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwCmluZGV4IGJlZmVhMGRhZGEyMDE0YTI1NWVlZmFlODEyMGZjNWRhNTc4YmRiM2MuLmMxZjgz
OTYzMDIzYzQ0ZmRhZjVlZmUzNGQzYmRlMDI2NmNkOThjZDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC02MTksNiArNjE5LDc3IEBAIFdLUmV0YWluUHRy
PFdLVHlwZVJlZj4gVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VG
cm9tSW5qZWN0ZWRCCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogI2VuZGlmCisK
KyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIkFkZFRvdWNoUG9pbnQiKSkgeworICAgICAgICAg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHhLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJYIikpOworICAgICAgICAgICAgaW50IHggPSBzdGF0aWNfY2FzdDxp
bnQ+KFdLVUludDY0R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+KFdLRGljdGlvbmFy
eUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCB4S2V5LmdldCgpKSkpKTsKKwor
ICAgICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHlLZXkgPSBhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJZIikpOworICAgICAgICAgICAgaW50IHkgPSBzdGF0
aWNfY2FzdDxpbnQ+KFdLVUludDY0R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+KFdL
RGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCB5S2V5LmdldCgp
KSkpKTsKKworICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT5hZGRUb3VjaFBvaW50KHgs
IHkpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBpZiAoV0tT
dHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIlVwZGF0ZVRvdWNoUG9p
bnQiKSkgeworICAgICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGluZGV4S2V5ID0g
YWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSW5kZXgiKSk7CisgICAgICAg
ICAgICBpbnQgaW5kZXggPSBzdGF0aWNfY2FzdDxpbnQ+KFdLVUludDY0R2V0VmFsdWUoc3RhdGlj
X2Nhc3Q8V0tVSW50NjRSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlE
aWN0aW9uYXJ5LCBpbmRleEtleS5nZXQoKSkpKSk7CisKKyAgICAgICAgICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiB4S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiWCIpKTsKKyAgICAgICAgICAgIGludCB4ID0gc3RhdGljX2Nhc3Q8aW50PihXS1VJbnQ2NEdl
dFZhbHVlKHN0YXRpY19jYXN0PFdLVUludDY0UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5
KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgeEtleS5nZXQoKSkpKSk7CisKKyAgICAgICAgICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiB5S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiWSIpKTsKKyAgICAgICAgICAgIGludCB5ID0gc3RhdGljX2Nhc3Q8aW50PihX
S1VJbnQ2NEdldFZhbHVlKHN0YXRpY19jYXN0PFdLVUludDY0UmVmPihXS0RpY3Rpb25hcnlHZXRJ
dGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgeUtleS5nZXQoKSkpKSk7CisKKyAgICAg
ICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+dXBkYXRlVG91Y2hQb2ludChpbmRleCwgeCwgeSk7
CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiU2V0VG91Y2hNb2RpZmllciIp
KSB7CisgICAgICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbW9kaWZpZXJLZXkgPSBh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJNb2RpZmllciIpKTsKKyAgICAg
ICAgICAgIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXIgPSBzdGF0aWNfY2FzdDxXS0V2ZW50TW9k
aWZpZXJzPihXS1VJbnQ2NEdldFZhbHVlKHN0YXRpY19jYXN0PFdLVUludDY0UmVmPihXS0RpY3Rp
b25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgbW9kaWZpZXJLZXkuZ2V0
KCkpKSkpOworCisgICAgICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZW5hYmxlS2V5
ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRW5hYmxlIikpOworICAg
ICAgICAgICAgYm9vbCBlbmFibGUgPSBzdGF0aWNfY2FzdDxib29sPihXS1VJbnQ2NEdldFZhbHVl
KHN0YXRpY19jYXN0PFdLVUludDY0UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3Nh
Z2VCb2R5RGljdGlvbmFyeSwgZW5hYmxlS2V5LmdldCgpKSkpKTsKKworICAgICAgICAgICAgbV9l
dmVudFNlbmRlclByb3h5LT5zZXRUb3VjaE1vZGlmaWVyKG1vZGlmaWVyLCBlbmFibGUpOworICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIlRvdWNoU3RhcnQiKSkgeworICAgICAg
ICAgICAgV0tQYWdlU2V0U2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3VzbHkobWFpbldlYlZpZXco
KS0+cGFnZSgpLCB0cnVlKTsKKyAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+dG91Y2hT
dGFydCgpOworICAgICAgICAgICAgV0tQYWdlU2V0U2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3Vz
bHkobWFpbldlYlZpZXcoKS0+cGFnZSgpLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1
Yk1lc3NhZ2VOYW1lLCAiVG91Y2hNb3ZlIikpIHsKKyAgICAgICAgICAgIFdLUGFnZVNldFNob3Vs
ZFNlbmRFdmVudHNTeW5jaHJvbm91c2x5KG1haW5XZWJWaWV3KCktPnBhZ2UoKSwgdHJ1ZSk7Cisg
ICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPnRvdWNoTW92ZSgpOworICAgICAgICAgICAg
V0tQYWdlU2V0U2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3VzbHkobWFpbldlYlZpZXcoKS0+cGFn
ZSgpLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiVG91Y2hF
bmQiKSkgeworICAgICAgICAgICAgV0tQYWdlU2V0U2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3Vz
bHkobWFpbldlYlZpZXcoKS0+cGFnZSgpLCB0cnVlKTsKKyAgICAgICAgICAgIG1fZXZlbnRTZW5k
ZXJQcm94eS0+dG91Y2hFbmQoKTsKKyAgICAgICAgICAgIFdLUGFnZVNldFNob3VsZFNlbmRFdmVu
dHNTeW5jaHJvbm91c2x5KG1haW5XZWJWaWV3KCktPnBhZ2UoKSwgZmFsc2UpOworICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIkNsZWFyVG91Y2hQb2ludHMiKSkgeworICAgICAg
ICAgICAgbV9ldmVudFNlbmRlclByb3h5LT5jbGVhclRvdWNoUG9pbnRzKCk7CisgICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiUmVsZWFzZVRvdWNoUG9pbnQiKSkgeworICAgICAg
ICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGluZGV4S2V5ID0gYWRvcHRXSyhXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSW5kZXgiKSk7CisgICAgICAgICAgICBpbnQgaW5kZXgg
PSBzdGF0aWNfY2FzdDxpbnQ+KFdLVUludDY0R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tVSW50NjRS
ZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBpbmRl
eEtleS5nZXQoKSkpKSk7CisgICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPnJlbGVhc2VU
b3VjaFBvaW50KGluZGV4KTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisjZW5k
aWYKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L0V2ZW50U2VuZGVyUHJveHlRdC5jcHAgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL3F0L0V2ZW50U2VuZGVyUHJveHlRdC5jcHAKaW5kZXggYTFh
ZWIwNTdlNmIyNDc0ZDY3NjJkNWRiOWUxYmUyMmYyNDUwNTFhNS4uOWRhZmFlMTVhMDEzNWE4MTk3
NGNmZjUyNDYzMTc2NjYzYWZmNzdlOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9xdC9FdmVudFNlbmRlclByb3h5UXQuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
cXQvRXZlbnRTZW5kZXJQcm94eVF0LmNwcApAQCAtNjIsNiArNjIsOSBAQCBFdmVudFNlbmRlclBy
b3h5OjpFdmVudFNlbmRlclByb3h5KFRlc3RDb250cm9sbGVyKiB0ZXN0Q29udHJvbGxlcikKICAg
ICAsIG1fY2xpY2tQb3NpdGlvbigpCiAgICAgLCBtX2NsaWNrQnV0dG9uKGtXS0V2ZW50TW91c2VC
dXR0b25Ob0J1dHRvbikKICAgICAsIG1fbW91c2VCdXR0b25zKDApCisjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKKyAgICAsIG1fdG91Y2hBY3RpdmUoZmFsc2UpCisjZW5kaWYKIHsKICAgICBtZW1z
ZXQoZXZlbnRRdWV1ZSwgMCwgc2l6ZW9mKGV2ZW50UXVldWUpKTsKICAgICBlbmRPZlF1ZXVlID0g
MDsKQEAgLTMwNSw2ICszMDgsOTUgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5OjpsZWFwRm9yd2Fy
ZChpbnQgbXMpCiAgICAgZXZlbnRRdWV1ZVtlbmRPZlF1ZXVlXS5tX2RlbGF5ID0gbXM7CiB9CiAK
KyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQordm9pZCBFdmVudFNlbmRlclByb3h5OjphZGRUb3Vj
aFBvaW50KGludCB4LCBpbnQgeSkKK3sKKyAgICBjb25zdCBpbnQgaWQgPSBtX3RvdWNoUG9pbnRz
LmlzRW1wdHkoKSA/IDAgOiBtX3RvdWNoUG9pbnRzLmxhc3QoKS5pZCgpICsgMTsKKyAgICBjb25z
dCBRUG9pbnRGIHBvcyh4LCB5KTsKKyAgICBRVG91Y2hFdmVudDo6VG91Y2hQb2ludCBwb2ludChp
ZCk7CisgICAgcG9pbnQuc2V0UG9zKHBvcyk7CisgICAgcG9pbnQuc2V0U3RhcnRQb3MocG9zKTsK
KyAgICBwb2ludC5zZXRTdGF0ZShRdDo6VG91Y2hQb2ludFByZXNzZWQpOworICAgIG1fdG91Y2hQ
b2ludHMuYXBwZW5kKHBvaW50KTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojp1cGRhdGVU
b3VjaFBvaW50KGludCBpbmRleCwgaW50IHgsIGludCB5KQoreworICAgIGlmIChpbmRleCA8IDAg
fHwgaW5kZXggPj0gbV90b3VjaFBvaW50cy5jb3VudCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBRVG91Y2hFdmVudDo6VG91Y2hQb2ludCAmcCA9IG1fdG91Y2hQb2ludHNbaW5kZXhdOworICAg
IHAuc2V0UG9zKFFQb2ludEYoeCwgeSkpOworICAgIHAuc2V0U3RhdGUoUXQ6OlRvdWNoUG9pbnRN
b3ZlZCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6c2V0VG91Y2hNb2RpZmllcihXS0V2
ZW50TW9kaWZpZXJzIG1vZGlmaWVyLCBib29sIGVuYWJsZSkKK3sKKyAgICBRdDo6S2V5Ym9hcmRN
b2RpZmllcnMgbW9kID0gZ2V0TW9kaWZpZXJzKG1vZGlmaWVyKTsKKworICAgIGlmIChlbmFibGUp
CisgICAgICAgIG1fdG91Y2hNb2RpZmllcnMgfD0gbW9kOworICAgIGVsc2UKKyAgICAgICAgbV90
b3VjaE1vZGlmaWVycyAmPSB+bW9kOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnRvdWNo
U3RhcnQoKQoreworICAgIGlmICghbV90b3VjaEFjdGl2ZSkgeworICAgICAgICBzZW5kVG91Y2hF
dmVudChRRXZlbnQ6OlRvdWNoQmVnaW4pOworICAgICAgICBtX3RvdWNoQWN0aXZlID0gdHJ1ZTsK
KyAgICB9IGVsc2UKKyAgICAgICAgc2VuZFRvdWNoRXZlbnQoUUV2ZW50OjpUb3VjaFVwZGF0ZSk7
Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6dG91Y2hNb3ZlKCkKK3sKKyAgICBzZW5kVG91
Y2hFdmVudChRRXZlbnQ6OlRvdWNoVXBkYXRlKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5
Ojp0b3VjaEVuZCgpCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX3RvdWNoUG9pbnRzLmNv
dW50KCk7ICsraSkKKyAgICAgICAgaWYgKG1fdG91Y2hQb2ludHNbaV0uc3RhdGUoKSAhPSBRdDo6
VG91Y2hQb2ludFJlbGVhc2VkKSB7CisgICAgICAgICAgICBzZW5kVG91Y2hFdmVudChRRXZlbnQ6
OlRvdWNoVXBkYXRlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIHNlbmRU
b3VjaEV2ZW50KFFFdmVudDo6VG91Y2hFbmQpOworICAgIG1fdG91Y2hBY3RpdmUgPSBmYWxzZTsK
K30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjpjbGVhclRvdWNoUG9pbnRzKCkKK3sKKyAgICBt
X3RvdWNoUG9pbnRzLmNsZWFyKCk7CisgICAgbV90b3VjaE1vZGlmaWVycyA9IFF0OjpLZXlib2Fy
ZE1vZGlmaWVycygpOworICAgIG1fdG91Y2hBY3RpdmUgPSBmYWxzZTsKK30KKwordm9pZCBFdmVu
dFNlbmRlclByb3h5OjpyZWxlYXNlVG91Y2hQb2ludChpbnQgaW5kZXgpCit7CisgICAgaWYgKGlu
ZGV4IDwgMCB8fCBpbmRleCA+PSBtX3RvdWNoUG9pbnRzLmNvdW50KCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fdG91Y2hQb2ludHNbaW5kZXhdLnNldFN0YXRlKFF0OjpUb3VjaFBvaW50UmVs
ZWFzZWQpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnNlbmRUb3VjaEV2ZW50KFFFdmVu
dDo6VHlwZSB0eXBlKQoreworICAgIFFUb3VjaEV2ZW50IGV2ZW50KHR5cGUsIFFUb3VjaEV2ZW50
OjpUb3VjaFNjcmVlbiwgbV90b3VjaE1vZGlmaWVycyk7CisgICAgZXZlbnQuc2V0VG91Y2hQb2lu
dHMobV90b3VjaFBvaW50cyk7CisgICAgbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+
c2VuZEV2ZW50KCZldmVudCk7CisgICAgUUxpc3Q8UVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQ+OjpJ
dGVyYXRvciBpdCA9IG1fdG91Y2hQb2ludHMuYmVnaW4oKTsKKyAgICB3aGlsZSAoaXQgIT0gbV90
b3VjaFBvaW50cy5lbmQoKSkgeworICAgICAgICBpZiAoaXQtPnN0YXRlKCkgPT0gUXQ6OlRvdWNo
UG9pbnRSZWxlYXNlZCkKKyAgICAgICAgICAgIGl0ID0gbV90b3VjaFBvaW50cy5lcmFzZShpdCk7
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaXQtPnNldFN0YXRlKFF0OjpUb3VjaFBvaW50
U3RhdGlvbmFyeSk7CisgICAgICAgICAgICArK2l0OworICAgICAgICB9CisgICAgfQorfQorI2Vu
ZGlmCisKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6c2VuZE9yUXVldWVFdmVudChRRXZlbnQqIGV2
ZW50KQogewogICAgIGlmIChlbmRPZlF1ZXVlID09IHN0YXJ0T2ZRdWV1ZSAmJiAhZXZlbnRRdWV1
ZVtlbmRPZlF1ZXVlXS5tX2RlbGF5KSB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL3F0L1dlYktpdFRlc3RSdW5uZXIucHJvIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9X
ZWJLaXRUZXN0UnVubmVyLnBybwppbmRleCA2ZmFkY2ViMTQ4ZjJlMmYwOTJjZjYyYjQyMjIyYTg3
NGQ0MjA0NTZjLi40YjY5YjdhNmNjODA0ZTk0YWNmYjEzZjU5OWYwYTUyOTEwODYxZTMyIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1dlYktpdFRlc3RSdW5uZXIucHJvCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvV2ViS2l0VGVzdFJ1bm5lci5wcm8KQEAgLTgs
NiArOCw4IEBAIEdFTkVSQVRFRF9TT1VSQ0VTX0RJUiA9IC4uL2dlbmVyYXRlZAogCiBpbmNsdWRl
KC4uLy4uLy4uL1NvdXJjZS9XZWJLaXQucHJpKQogCitpbmNsdWRlKC4uLy4uLy4uLy4uL1NvdXJj
ZS9XZWJDb3JlL2ZlYXR1cmVzLnByaSkgIyBGb3IgRU5BQkxFX1RPVUNIX0VWRU5UUworCiBERUZJ
TkVTICs9IFVTRV9TWVNURU1fTUFMTE9DPTEKIERFRklORVMgLT0gUVRfQVNDSUlfQ0FTVF9XQVJO
SU5HUwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggZGZmMDA4ZDE3NmEyZTVkZTljYWIzMjgxMGExNDVkYTExMTk2ODhmMS4u
YzBjZGI1OTc4MzgwMGVhYTM4ZTM5NTlmYWI5NDZkMjhhMzIxNDg5YiAxMDA3NTUKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyIEBACisyMDExLTExLTAyICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lh
LmNvbT4KKworICAgICAgICBbUXRdW1dLMl0gQWRkIHN1cHBvcnQgZm9yIHRvdWNoIGV2ZW50IHRl
c3RpbmcgdG8gV2ViS2l0VGVzdFJ1bm5lcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzEzMTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL3F0LXdrMi9Ta2lwcGVkOiBVbnNraXAgdG91Y2gg
dGVzdHMgdGhhdCBhcmUgcGFzc2luZyBub3cuCisKIDIwMTEtMTEtMDEgIExlYW5kcm8gUGVyZWly
YSAgPGxlYW5kcm9AcHJvZnVzaW9uLm1vYmk+CiAKICAgICAgICAgW0VGTF0gVW5yZXZpZXdlZC4g
QWRkIHNvbWUgcGl4ZWwgYmFzZWxpbmVzIGZvciB0ZXN0cyBpbiBmYXN0Ly4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3F0LXdrMi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQtd2syL1NraXBwZWQKaW5kZXggODVlZTQ1Y2UwMjg5OTI5OTc1ODVlMzQwMmJhZDUwM2Nj
NzM2MDEyNS4uMzU4MzQwNDA2MzRkZjE5Nzg1ZTAzYjYwMGUzN2E2ZmMwOGY0NTg4MCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL1NraXBwZWQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vcXQtd2syL1NraXBwZWQKQEAgLTMwMSw5ICszMDEsNiBAQCBodHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L2JhZC1zdWItcHJvdG9jb2wtbm9uLWFzY2lpLmh0bWwK
ICMgRXZlbnRTZW5kZXIubW91c2VNb3ZlVG8gaXMgbm90IHlldCBzdXBwb3J0ZWQKIHN2Zy9keW5h
bWljLXVwZGF0ZXMKIAotIyBldmVudFNlbmRlci5jbGVhclRvdWNoUG9pbnRzIGlzIHVuaW1wbGVt
ZW50ZWQKLWZhc3QvZXZlbnRzL3RvdWNoCi0KICMgbGF5b3V0VGVzdENvbnRyb2xsZXIuaWdub3Jl
RGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0cyBpcyB1bmltcGxlbWVudGVkCiBm
YXN0L25vdGlmaWNhdGlvbnMKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113295</attachid>
            <date>2011-11-02 02:48:59 -0700</date>
            <delta_ts>2011-11-02 02:57:35 -0700</delta_ts>
            <desc>[Qt][WK2] Add support for touch event testing to WebKitTestRunner</desc>
            <filename>bug-71310-20111102104859.patch</filename>
            <type>text/plain</type>
            <size>33155</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkwNDkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA5YzlhZGY4MzNjNjFmZTI4
OWVjNWNkYjQ3MDgzYjFhYzQ2ZTNkMDM5Li4zMmI0NGZiMWU1YTI5NjRkMjFiNDVhZGJkOTE1MTM3
NzI2NWMwMjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjcgQEAKIDIwMTEtMTEtMDIgIFNpbW9u
IEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgogCisgICAgICAgIFtRdF1bV0sy
XSBBZGQgc3VwcG9ydCBmb3IgdG91Y2ggZXZlbnQgdGVzdGluZyB0byBXZWJLaXRUZXN0UnVubmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTMxMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFu
ZGxlVG91Y2hFdmVudCk6IEFkZCBzdXBwb3J0IGZvciBtX3Nob3VsZFNlbmRFdmVudHNTeW5jaHJv
bm91c2x5LgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdERlc2t0b3BXZWJQYWdlUHJveHkuY3Bw
OgorICAgICAgICAoUXREZXNrdG9wV2ViUGFnZVByb3h5OjpoYW5kbGVFdmVudCk6IEhhbmRsZSBw
bGFpbiB0b3VjaCBldmVudHMgaW4gdGhlIGRlc2t0b3AgcGFnZSBwcm94eSBieQorICAgICAgICBm
b3J3YXJkaW5nIHRoZW0gYXBwcm9wcmlhdGVseS4gV2Ugd2lsbCByZWNlaXZlIHRoZW0gZnJvbSBX
VFIgdGhyb3VnaCA6OmV2ZW50LCBidXQgd2Ugd29uJ3QKKyAgICAgICAgcmVjZWl2ZSB0aGVtIGZy
b20gUVF1aWNrQ2FudmFzIChpLmUuIHRoZSB1c2VyKSBiZWNhdXNlIHRoYXQgZG9lc24ndCB1c2Vz
IDo6ZXZlbnQgYnV0IG9ubHkKKyAgICAgICAgZGVkaWNhdGVkIGZvb0V2ZW50KCkgaGFuZGxlcnMs
IG9mIHdoaWNoIHdlIGRvbid0IHJlLWltcGxlbWVudCB0aGUgdG91Y2ggdmVyc2lvbi4KKyAgICAg
ICAgKFF0RGVza3RvcFdlYlBhZ2VQcm94eTo6aGFuZGxlVG91Y2hFdmVudCk6IEZvcndhcmQgdG91
Y2ggZXZlbnRzIHRvIFdlYlBhZ2VQcm94eS4KKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXREZXNr
dG9wV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp0b3VjaEV2ZW50U3luY0ZvclRlc3Rpbmcp
OiBBZGQgc3VwcG9ydCBmb3Igc3luY2hyb25vdXMgdG91Y2ggZXZlbnQgdGVzdGluZywKKyAgICAg
ICAgc2ltaWxhciB0byB0aGUgd2F5IGl0J3MgZG9uZSBmb3IgbW91c2UgZXZlbnRzLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6IERpdHRvLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOiBEaXR0by4KKworMjAxMS0xMS0wMiAg
U2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisKICAgICAgICAgW1dL
Ml0gUmVtb3ZlIHVudXNlZC9kdXBsaWNhdGVkIG1vZGlmaWVycyBtZW1iZXIgZnJvbSBXZWJUb3Vj
aEV2ZW50CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MTM1MwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDNj
NmMzMjM3NjQzNjA2NTRjNjg1ZWY0ODU0MDEwNGRmNzM4MmJiM2MuLmI0MDNhNGJmNWI5YjljOWE5
YWQwMGU4MDExMmM3MDI0NjgxZmExZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC05NjAsNyArOTYwLDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5k
bGVUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50KQogICAgIGlmICht
X25lZWRUb3VjaEV2ZW50cykgewogICAgICAgICBtX3RvdWNoRXZlbnRRdWV1ZS5hcHBlbmQoZXZl
bnQpOwogICAgICAgICBwcm9jZXNzKCktPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3RhcnQoKTsK
LSAgICAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50KGV2
ZW50KSwgbV9wYWdlSUQpOworICAgICAgICBpZiAobV9zaG91bGRTZW5kRXZlbnRzU3luY2hyb25v
dXNseSkgeworICAgICAgICAgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CisgICAgICAgICAgICBw
cm9jZXNzKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50U3luY0ZvclRl
c3RpbmcoZXZlbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudFN5bmNGb3JUZXN0aW5n
OjpSZXBseShoYW5kbGVkKSwgbV9wYWdlSUQpOworICAgICAgICAgICAgZGlkUmVjZWl2ZUV2ZW50
KGV2ZW50LnR5cGUoKSwgaGFuZGxlZCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcHJv
Y2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50KGV2ZW50KSwgbV9wYWdl
SUQpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChtX3RvdWNoRXZlbnRRdWV1ZS5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIGJvb2wgaXNFdmVudEhhbmRsZWQgPSBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERlc2t0b3BXZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RGVza3RvcFdlYlBhZ2VQcm94eS5jcHAK
aW5kZXggMzg4YjYwMmRiOTg3ZGZiNTljOTRlMDkyNmNhYzYzNDk1YTVjNDBjNS4uNzE5ZjdiZDgw
ODU1NzFlMzg2MTQzMWM1YWYzNDkzNzQzNDliZmNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1F0RGVza3RvcFdlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1F0RGVza3RvcFdlYlBhZ2VQcm94eS5jcHAKQEAgLTExNiw2ICsx
MTYsMTMgQEAgYm9vbCBRdERlc2t0b3BXZWJQYWdlUHJveHk6OmhhbmRsZUV2ZW50KFFFdmVudCog
ZXYpCiAgICAgICAgIHJldHVybiBoYW5kbGVEcmFnTW92ZUV2ZW50KHJlaW50ZXJwcmV0X2Nhc3Q8
UURyYWdNb3ZlRXZlbnQqPihldikpOwogICAgIGNhc2UgUUV2ZW50OjpEcm9wOgogICAgICAgICBy
ZXR1cm4gaGFuZGxlRHJvcEV2ZW50KHJlaW50ZXJwcmV0X2Nhc3Q8UURyb3BFdmVudCo+KGV2KSk7
CisgICAgLy8gVG91Y2ggZXZlbnRzIG9ubHkgZm9yIFdlYktpdFRlc3RSdW5uZXIKKyAgICBjYXNl
IFFFdmVudDo6VG91Y2hCZWdpbjoKKyAgICBjYXNlIFFFdmVudDo6VG91Y2hVcGRhdGU6CisgICAg
Y2FzZSBRRXZlbnQ6OlRvdWNoRW5kOgorICAgICAgICByZXR1cm4gaGFuZGxlVG91Y2hFdmVudChz
dGF0aWNfY2FzdDxRVG91Y2hFdmVudCo+KGV2KSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIHJldHVybiBRdFdlYlBhZ2VQcm94eTo6aGFuZGxlRXZlbnQoZXYpOwog
fQpAQCAtMjM4LDYgKzI0NSwxMyBAQCBib29sIFF0RGVza3RvcFdlYlBhZ2VQcm94eTo6aGFuZGxl
RHJvcEV2ZW50KFFEcm9wRXZlbnQqIGV2KQogICAgIHJldHVybiBhY2NlcHRlZDsKIH0KIAorYm9v
bCBRdERlc2t0b3BXZWJQYWdlUHJveHk6OmhhbmRsZVRvdWNoRXZlbnQoUVRvdWNoRXZlbnQqIGV2
ZW50KQoreworICAgIG1fd2ViUGFnZVByb3h5LT5oYW5kbGVUb3VjaEV2ZW50KE5hdGl2ZVdlYlRv
dWNoRXZlbnQoZXZlbnQpKTsKKyAgICBldmVudC0+YWNjZXB0KCk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKIHZvaWQgUXREZXNrdG9wV2ViUGFnZVByb3h5Ojp0aW1lckV2ZW50KFFUaW1lckV2ZW50
KiBldikKIHsKICAgICBpbnQgdGltZXJJZCA9IGV2LT50aW1lcklkKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXREZXNrdG9wV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXREZXNrdG9wV2ViUGFnZVByb3h5LmgKaW5kZXggNzVk
MTBjNzMwYmJiZmI5MmJhMGRhZjNjYWZkNTFhZWY2YzIyNDZjMS4uZjczOTA4NmExYzAyN2IwMjI4
ZTU1YWVkNDVlMDhjYzY2ZmJkZjIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0RGVza3RvcFdlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9RdERlc2t0b3BXZWJQYWdlUHJveHkuaApAQCAtNjEsNiArNjEsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgaGFuZGxlRHJhZ0xlYXZlRXZlbnQoUURyYWdMZWF2ZUV2ZW50Kik7CiAgICAg
Ym9vbCBoYW5kbGVEcmFnTW92ZUV2ZW50KFFEcmFnTW92ZUV2ZW50Kik7CiAgICAgYm9vbCBoYW5k
bGVEcm9wRXZlbnQoUURyb3BFdmVudCopOworICAgIGJvb2wgaGFuZGxlVG91Y2hFdmVudChRVG91
Y2hFdmVudCopOwogCiAgICAgUVBvaW50IG1fdHJpcGxlQ2xpY2s7CiAgICAgUUJhc2ljVGltZXIg
bV90cmlwbGVDbGlja1RpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCmluZGV4IGMxZGRkOGRmMTg0ZWE0NGJlYWQ4ZjNiZjFjZjgzMzljYzczY2U0
OTQuLjUzOTVlYTM3M2YwNTgzMDUwODE1M2QwYmE0OGIzNzYzYjg5NTU4NzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTEzMjMsNiArMTMy
MywxMiBAQCB2b2lkIFdlYlBhZ2U6OnRvdWNoRXZlbnQoY29uc3QgV2ViVG91Y2hFdmVudCYgdG91
Y2hFdmVudCkKIAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUV2
ZW50KHN0YXRpY19jYXN0PHVpbnQzMl90Pih0b3VjaEV2ZW50LnR5cGUoKSksIGhhbmRsZWQpKTsK
IH0KKwordm9pZCBXZWJQYWdlOjp0b3VjaEV2ZW50U3luY0ZvclRlc3RpbmcoY29uc3QgV2ViVG91
Y2hFdmVudCYgdG91Y2hFdmVudCwgYm9vbCYgaGFuZGxlZCkKK3sKKyAgICBDdXJyZW50RXZlbnQg
Y3VycmVudEV2ZW50KHRvdWNoRXZlbnQpOworICAgIGhhbmRsZWQgPSBoYW5kbGVUb3VjaEV2ZW50
KHRvdWNoRXZlbnQsIG1fcGFnZS5nZXQoKSk7Cit9CiAjZW5kaWYKIAogdm9pZCBXZWJQYWdlOjpz
Y3JvbGwoUGFnZSogcGFnZSwgU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVs
YXJpdHkgZ3JhbnVsYXJpdHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAppbmRleCAxYjE4OTZiZWY1ZTVmMzc4MzQwYzYwNmZlMDc3ZDc3MDQ4ZDRlZDEwLi41
YTNiZmFhNTY1MmUwZDE4NzQyYzA5NmEzZDVjMGU3MTk3YmRmYTkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTUwOSw2ICs1MDksNyBAQCBwcml2
YXRlOgogI2VuZGlmCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICB2b2lkIHRvdWNoRXZl
bnQoY29uc3QgV2ViVG91Y2hFdmVudCYpOworICAgIHZvaWQgdG91Y2hFdmVudFN5bmNGb3JUZXN0
aW5nKGNvbnN0IFdlYlRvdWNoRXZlbnQmLCBib29sJiBoYW5kbGVkKTsKICNlbmRpZgogICAgIHZv
aWQgY29udGV4dE1lbnVIaWRkZW4oKSB7IG1faXNTaG93aW5nQ29udGV4dE1lbnUgPSBmYWxzZTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCmluZGV4IDVhYjcxOWQ4ZWRmYmUxYjllMjBmZWNjMjc5MGJlMTRmYTc0Njdk
OGIuLmIwZmVkMWFjMDliNmY1MmYzMDdmMzdlMjVjMzI1OTk5ODQ3NWE3OWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CkBAIC00Myw2ICs0Myw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogI2VuZGlmCiAjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKICAgICBUb3VjaEV2ZW50KFdlYktpdDo6V2ViVG91Y2hFdmVudCBl
dmVudCkKKyAgICBUb3VjaEV2ZW50U3luY0ZvclRlc3RpbmcoV2ViS2l0OjpXZWJUb3VjaEV2ZW50
IGV2ZW50KSAtPiAoYm9vbCBoYW5kbGVkKQogI2VuZGlmCiAKICAgICBDb250ZXh0TWVudUhpZGRl
bigpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
ZmNiODIyYzM2MTM0ODllZmNmMzQ2MzQyMmExYmRmMTBmMTg4NjU1My4uODg0YjI5MzZjMDcwZjJh
NGE0YTJmNmNhMmExNTQ0YzVjYmRhN2Y2ZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDExLTExLTAyICBTaW1vbiBI
YXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdW1dLMl0g
QWRkIHN1cHBvcnQgZm9yIHRvdWNoIGV2ZW50IHRlc3RpbmcgdG8gV2ViS2l0VGVzdFJ1bm5lcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEzMTAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvRGVyaXZlZFNvdXJjZXMucHJvOiBCdWlsZCBzeXN0ZW0gZm9vIHRvIGVuc3VyZSB0
aGUgRU5BQkxFX1RPVUNIX0VWRU5UUworICAgICAgICBkZWZpbmUgd29ya3MgaW4gRXZlbnRTZW5k
aW5nQ29udHJvbGxlci5pZGwKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVy
UHJveHkuaDogQWRkIGRlY2xhcmF0aW9ucyBmb3IgUXQgaW1wbGVtZW50YXRpb25zIG9mIHRvdWNo
CisgICAgICAgIGhhbmRsZXJzLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5pZGw6IEFkZCB0b3VjaCBmdW5j
dGlvbnMKKyAgICAgICAgcmVxdWlyZWQgYnkgdGVzdHMuCisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcDogRm9yd2FyZCB0
b3VjaCBtZXNzYWdlcyB0byB0aGUKKyAgICAgICAgdWkgcHJvY2Vzcy4KKyAgICAgICAgKFdUUjo6
RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6YWRkVG91Y2hQb2ludCk6CisgICAgICAgIChXVFI6OkV2
ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnVwZGF0ZVRvdWNoUG9pbnQpOgorICAgICAgICAoV1RSOjpF
dmVudFNlbmRpbmdDb250cm9sbGVyOjpzZXRUb3VjaE1vZGlmaWVyKToKKyAgICAgICAgKFdUUjo6
RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6dG91Y2hTdGFydCk6CisgICAgICAgIChXVFI6OkV2ZW50
U2VuZGluZ0NvbnRyb2xsZXI6OnRvdWNoTW92ZSk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGlu
Z0NvbnRyb2xsZXI6OnRvdWNoRW5kKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJv
bGxlcjo6Y2xlYXJUb3VjaFBvaW50cyk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRy
b2xsZXI6OnJlbGVhc2VUb3VjaFBvaW50KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3F0L0luamVjdGVkQnVuZGxlLnBybzogSW5jbHVkZSBm
ZWF0dXJlcy5wcmkgZm9yIGZlYXR1cmUKKyAgICAgICAgZGVmaW5lcy4KKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOiBG
b3J3YXJkIGluY29taW5nCisgICAgICAgIHRvdWNoIG1lc3NhZ2VzIHRvIHRoZSBFdmVudFNlbmRl
clByb3h5LgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvcXQvRXZlbnRTZW5kZXJQcm94eVF0
LmNwcDogSW1wbGVtZW50IHRvdWNoIHRlc3QgaGFybmVzcyBmdW5jdGlvbnMuCisgICAgICAgIChX
VFI6OkV2ZW50U2VuZGVyUHJveHk6OkV2ZW50U2VuZGVyUHJveHkpOgorICAgICAgICAoV1RSOjpF
dmVudFNlbmRlclByb3h5OjphZGRUb3VjaFBvaW50KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5k
ZXJQcm94eTo6dXBkYXRlVG91Y2hQb2ludCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJv
eHk6OnNldFRvdWNoTW9kaWZpZXIpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojp0
b3VjaFN0YXJ0KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6dG91Y2hNb3ZlKToK
KyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6dG91Y2hFbmQpOgorICAgICAgICAoV1RS
OjpFdmVudFNlbmRlclByb3h5OjpjbGVhclRvdWNoUG9pbnRzKToKKyAgICAgICAgKFdUUjo6RXZl
bnRTZW5kZXJQcm94eTo6cmVsZWFzZVRvdWNoUG9pbnQpOgorICAgICAgICAoV1RSOjpFdmVudFNl
bmRlclByb3h5OjpzZW5kVG91Y2hFdmVudCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9x
dC9XZWJLaXRUZXN0UnVubmVyLnBybzogSW5jbHVkZSBmZWF0dXJlcy5wcmkgZm9yIGZlYXR1cmUg
ZGVmaW5lcy4KKwogMjAxMS0xMS0wMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIHJlc29sdmUtQ2hhbmdlTG9ncyAtLWhlbHAgc2hvdWxkIGJlIGZhc3Rlci4KZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRGVyaXZlZFNvdXJjZXMucHJvIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9EZXJpdmVkU291cmNlcy5wcm8KaW5kZXggZWRhMjM5ZThlYzE0NWQ5
YmM0NmYzMmExMWQyZGI0YWUyNGJhMTAyZi4uMjBjMzBkYjY4YThjZWM1NDY5OGFhNGYyMGUxNjc5
M2Q2YzUxNGExMCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9EZXJpdmVkU291
cmNlcy5wcm8KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9EZXJpdmVkU291cmNlcy5wcm8K
QEAgLTM3LDYgKzM3LDggQEAgZGVmaW5lVGVzdChhZGRFeHRyYUNvbXBpbGVyKSB7CiAKIFNSQ19S
T09UX0RJUiA9ICQkcmVwbGFjZShQV0QsIC9Ub29scy9XZWJLaXRUZXN0UnVubmVyLCAiIikKIAor
aW5jbHVkZSgkJFNSQ19ST09UX0RJUi9Tb3VyY2UvV2ViQ29yZS9mZWF0dXJlcy5wcmkpICMgZm9y
IEVOQUJMRV9UT1VDSF9FVkVOVFMKKwogIyBNYWtlIHN1cmUgZm9yd2FyZGVkIGhlYWRlcnMgbmVl
ZGVkIGJ5IHRoaXMgcHJvamVjdCBhcmUgcHJlc2VudAogZndoZWFkZXJfZ2VuZXJhdG9yLmNvbW1h
bmRzID0gcGVybCAkJHtTUkNfUk9PVF9ESVJ9L1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvZ2VuZXJh
dGUtZm9yd2FyZGluZy1oZWFkZXJzLnBsICQke1NSQ19ST09UX0RJUn0vVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lciAkJHtPVVRQVVRfRElSfS9pbmNsdWRlIHF0CiBmd2hlYWRlcl9nZW5lcmF0b3IuZGVw
ZW5kcyAgPSAkJHtTUkNfUk9PVF9ESVJ9L1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvZ2VuZXJhdGUt
Zm9yd2FyZGluZy1oZWFkZXJzLnBsCkBAIC00Nyw3ICs0OSw3IEBAIFFNQUtFX0VYVFJBX1RBUkdF
VFMgICAgICAgICArPSBmd2hlYWRlcl9nZW5lcmF0b3IKIGlkbC5vdXRwdXQgPSAkJHtHRU5FUkFU
RURfU09VUkNFU19ESVJ9L0pTJHtRTUFLRV9GSUxFX0JBU0V9LmNwcAogaWRsLmlucHV0ID0gSURM
X0JJTkRJTkdTCiBpZGwud2tTY3JpcHQgPSAkJFBXRC8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsCi1pZGwuY29tbWFuZHMgPSBwZXJsIC1J
JCRQV0QvLi4vLi4vU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cyAtSSQkUFdEL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzICQkaWRsLndrU2NyaXB0IC0tZGVmaW5lcyBcIlwiIC0tZ2VuZXJh
dG9yIFRlc3RSdW5uZXIgLS1pbmNsdWRlICQkUFdEL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzIC0t
b3V0cHV0RGlyICQkR0VORVJBVEVEX1NPVVJDRVNfRElSIC0tcHJlcHJvY2Vzc29yIFwiJCR7UU1B
S0VfTU9DfSAtRVwiICR7UU1BS0VfRklMRV9OQU1FfQoraWRsLmNvbW1hbmRzID0gcGVybCAtSSQk
UFdELy4uLy4uL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMgLUkkJFBXRC9JbmplY3Rl
ZEJ1bmRsZS9CaW5kaW5ncyAkJGlkbC53a1NjcmlwdCAtLWRlZmluZXMgXCIkJHtGRUFUVVJFX0RF
RklORVNfSkFWQVNDUklQVH1cIiAtLWdlbmVyYXRvciBUZXN0UnVubmVyIC0taW5jbHVkZSAkJFBX
RC9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncyAtLW91dHB1dERpciAkJEdFTkVSQVRFRF9TT1VSQ0VT
X0RJUiAtLXByZXByb2Nlc3NvciBcIiQke1FNQUtFX01PQ30gLUVcIiAke1FNQUtFX0ZJTEVfTkFN
RX0KIGlkbC5kZXBlbmRzID0gJCRQV0QvLi4vLi4vU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yLnBtIFwKICAgICAgICAgICAgICAgJCRQV0QvSW5qZWN0ZWRCdW5k
bGUvQmluZGluZ3MvQ29kZUdlbmVyYXRvclRlc3RSdW5uZXIucG0gXAogICAgICAgICAgICAgICAk
JFBXRC8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbSBc
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCmluZGV4IDIyZDlhY2I1
MzIzODhmYTM4N2RmYTFmMTlkNjU3ZjExZTk1MTQ5ZDEuLmNhYjA5M2E1MzdjMTc5YzQyMGU2ZjI2
NjJlMzlhYTg4MmQ0NzA2YmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZl
bnRTZW5kZXJQcm94eS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQ
cm94eS5oCkBAIC00OCw2ICs0OCwxOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGtleURvd24oV0tT
dHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzLCB1bnNpZ25lZCBsb2NhdGlvbik7CiAKKyNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIC8vIFRvdWNoIGV2ZW50cy4KKyAgICB2b2lkIGFk
ZFRvdWNoUG9pbnQoaW50IHgsIGludCB5KTsKKyAgICB2b2lkIHVwZGF0ZVRvdWNoUG9pbnQoaW50
IGluZGV4LCBpbnQgeCwgaW50IHkpOworICAgIHZvaWQgc2V0VG91Y2hNb2RpZmllcihXS0V2ZW50
TW9kaWZpZXJzLCBib29sIGVuYWJsZSk7CisgICAgdm9pZCB0b3VjaFN0YXJ0KCk7CisgICAgdm9p
ZCB0b3VjaE1vdmUoKTsKKyAgICB2b2lkIHRvdWNoRW5kKCk7CisgICAgdm9pZCBjbGVhclRvdWNo
UG9pbnRzKCk7CisgICAgdm9pZCByZWxlYXNlVG91Y2hQb2ludChpbnQgaW5kZXgpOworI2VuZGlm
CisKIHByaXZhdGU6CiAgICAgVGVzdENvbnRyb2xsZXIqIG1fdGVzdENvbnRyb2xsZXI7CiAKQEAg
LTU1LDYgKzY3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUNsaWNrQ291bnRGb3JCdXR0
b24oaW50IGJ1dHRvbik7CiAKICNpZiBQTEFURk9STShRVCkKKyNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQorICAgIHZvaWQgc2VuZFRvdWNoRXZlbnQoUUV2ZW50OjpUeXBlKTsKKyNlbmRpZgogICAg
IHZvaWQgc2VuZE9yUXVldWVFdmVudChRRXZlbnQqKTsKICAgICB2b2lkIHJlcGxheVNhdmVkRXZl
bnRzKCk7CiAjZW5kaWYKQEAgLTcwLDYgKzg1LDEyIEBAIHByaXZhdGU6CiAgICAgaW50IGV2ZW50
TnVtYmVyOwogI2VsaWYgUExBVEZPUk0oUVQpCiAgICAgUXQ6Ok1vdXNlQnV0dG9ucyBtX21vdXNl
QnV0dG9uczsKKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgUUxpc3Q8UVRvdWNoRXZl
bnQ6OlRvdWNoUG9pbnQ+IG1fdG91Y2hQb2ludHM7CisgICAgUXQ6OktleWJvYXJkTW9kaWZpZXJz
IG1fdG91Y2hNb2RpZmllcnM7CisgICAgYm9vbCBtX3RvdWNoQWN0aXZlOworI2VuZGlmCiAjZW5k
aWYKIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQmluZGluZ3MvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRs
CmluZGV4IDY2YzRmNzFlOWI4NjQ5NGIwMDUzZWQxZWUxZjZjMDFiMTcwNjMwNGEuLmQ2OTE0ZmMx
MzVhN2U1NGM1MzE5Njc2YmQ3MmQ3NTI0ZDg5MzAxZDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvRXZlbnRTZW5kaW5nQ29udHJvbGxl
ci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9FdmVudFNlbmRpbmdDb250cm9sbGVyLmlkbApAQCAtNDEsNiArNDEsMTggQEAgbW9kdWxlIFdU
UiB7CiAgICAgICAgIHZvaWQgem9vbVBhZ2VJbigpOwogICAgICAgICB2b2lkIHpvb21QYWdlT3V0
KCk7CiAgICAgICAgIHZvaWQgc2NhbGVQYWdlQnkoaW4gZG91YmxlIHNjYWxlLCBpbiBkb3VibGUg
eCwgaW4gZG91YmxlIHkpOworCisjaWYgZGVmaW5lZChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAmJiBF
TkFCTEVfVE9VQ0hfRVZFTlRTCisgICAgICAgIC8vIFRvdWNoIGV2ZW50cy4KKyAgICAgICAgdm9p
ZCBhZGRUb3VjaFBvaW50KGluIGxvbmcgeCwgaW4gbG9uZyB5KTsKKyAgICAgICAgdm9pZCB1cGRh
dGVUb3VjaFBvaW50KGluIGxvbmcgaW5kZXgsIGluIGxvbmcgeCwgaW4gbG9uZyB5KTsKKyAgICAg
ICAgdm9pZCBzZXRUb3VjaE1vZGlmaWVyKGluIERPTVN0cmluZyBtb2RpZmllciwgaW4gYm9vbGVh
biBlbmFibGUpOworICAgICAgICB2b2lkIHRvdWNoU3RhcnQoKTsKKyAgICAgICAgdm9pZCB0b3Vj
aE1vdmUoKTsKKyAgICAgICAgdm9pZCB0b3VjaEVuZCgpOworICAgICAgICB2b2lkIGNsZWFyVG91
Y2hQb2ludHMoKTsKKyAgICAgICAgdm9pZCByZWxlYXNlVG91Y2hQb2ludChpbiBsb25nIGluZGV4
KTsKKyNlbmRpZgogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCmlu
ZGV4IDQxMjY1ZWJlODY3ZmI2ZDM1NDI4MWJiYzJjZmVkYmI2OTNlNjM0YTkuLmQ1ODRkMzMxYWZm
NzkzM2Y4ZjA1Y2JjZTIyYzI1ZTc3ZWY4OTNhMDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9s
bGVyLmNwcApAQCAtMzIzLDYgKzMyMywxNDYgQEAgdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVy
OjpzY2FsZVBhZ2VCeShkb3VibGUgc2NhbGUsIGRvdWJsZSB4LCBkb3VibGUgeSkKICAgICBXS0J1
bmRsZVBhZ2VTZXRTY2FsZUF0T3JpZ2luKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCkt
PnBhZ2UoKSwgc2NhbGUsIG9yaWdpbik7CiB9CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQor
dm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjphZGRUb3VjaFBvaW50KGludCB4LCBpbnQgeSkK
K3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gRXZlbnRTZW5kZXJNZXNzYWdlTmFtZShB
ZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRXZlbnRTZW5kZXIiKSk7Cisg
ICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gRXZlbnRTZW5kZXJNZXNzYWdl
Qm9keShBZG9wdFdLLCBXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOworCisgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IHN1Yk1lc3NhZ2VLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIlN1Yk1lc3NhZ2UiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IHN1Yk1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJBZGRUb3VjaFBvaW50IikpOworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJN
ZXNzYWdlQm9keS5nZXQoKSwgc3ViTWVzc2FnZUtleS5nZXQoKSwgc3ViTWVzc2FnZU5hbWUuZ2V0
KCkpOworCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHhLZXkgPSBhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJYIikpOworICAgIFdLUmV0YWluUHRyPFdLVUludDY0
UmVmPiB4UmVmID0gV0tVSW50NjRDcmVhdGUoeCk7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShF
dmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCB4S2V5LmdldCgpLCB4UmVmLmdldCgpKTsKKwor
ICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB5S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiWSIpKTsKKyAgICBXS1JldGFpblB0cjxXS1VJbnQ2NFJlZj4geVJl
ZiA9IFdLVUludDY0Q3JlYXRlKHkpOworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5k
ZXJNZXNzYWdlQm9keS5nZXQoKSwgeUtleS5nZXQoKSwgeVJlZi5nZXQoKSk7CisKKyAgICBXS0J1
bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmJ1bmRs
ZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5
LmdldCgpLCAwKTsKK30KKwordm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjp1cGRhdGVUb3Vj
aFBvaW50KGludCBpbmRleCwgaW50IHgsIGludCB5KQoreworICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBFdmVudFNlbmRlck1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJFdmVudFNlbmRlciIpKTsKKyAgICBXS1JldGFpblB0cjxXS011dGFibGVE
aWN0aW9uYXJ5UmVmPiBFdmVudFNlbmRlck1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLTXV0YWJsZURp
Y3Rpb25hcnlDcmVhdGUoKSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3ViTWVz
c2FnZUtleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU3ViTWVzc2Fn
ZSIpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3ViTWVzc2FnZU5hbWUoQWRvcHRX
SywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlVwZGF0ZVRvdWNoUG9pbnQiKSk7Cisg
ICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCBzdWJN
ZXNzYWdlS2V5LmdldCgpLCBzdWJNZXNzYWdlTmFtZS5nZXQoKSk7CisKKyAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gaW5kZXhLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJJbmRleCIpKTsKKyAgICBXS1JldGFpblB0cjxXS1VJbnQ2NFJlZj4gaW5kZXhSZWYg
PSBXS1VJbnQ2NENyZWF0ZShpbmRleCk7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShFdmVudFNl
bmRlck1lc3NhZ2VCb2R5LmdldCgpLCBpbmRleEtleS5nZXQoKSwgaW5kZXhSZWYuZ2V0KCkpOwor
CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHhLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJYIikpOworICAgIFdLUmV0YWluUHRyPFdLVUludDY0UmVmPiB4
UmVmID0gV0tVSW50NjRDcmVhdGUoeCk7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShFdmVudFNl
bmRlck1lc3NhZ2VCb2R5LmdldCgpLCB4S2V5LmdldCgpLCB4UmVmLmdldCgpKTsKKworICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiB5S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiWSIpKTsKKyAgICBXS1JldGFpblB0cjxXS1VJbnQ2NFJlZj4geVJlZiA9IFdL
VUludDY0Q3JlYXRlKHkpOworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNz
YWdlQm9keS5nZXQoKSwgeUtleS5nZXQoKSwgeVJlZi5nZXQoKSk7CisKKyAgICBXS0J1bmRsZVBv
c3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmJ1bmRsZSgpLCBF
dmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgp
LCAwKTsKK30KKwordm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpzZXRUb3VjaE1vZGlmaWVy
KGNvbnN0IEpTU3RyaW5nUmVmICZtb2RpZmllciwgYm9vbCBlbmFibGUpCit7CisgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkV2ZW50U2VuZGVyIikpOworICAgIFdLUmV0YWluUHRy
PFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkoQWRvcHRXSywg
V0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKTsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBzdWJNZXNzYWdlS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJTdWJNZXNzYWdlIikpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdWJNZXNzYWdl
TmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0VG91Y2hNb2Rp
ZmllciIpKTsKKyAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHku
Z2V0KCksIHN1Yk1lc3NhZ2VLZXkuZ2V0KCksIHN1Yk1lc3NhZ2VOYW1lLmdldCgpKTsKKworICAg
IFdLRXZlbnRNb2RpZmllcnMgbW9kID0gMDsKKyAgICBpZiAoSlNTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhtb2RpZmllciwgImN0cmwiKSkKKyAgICAgICAgbW9kID0ga1dLRXZlbnRNb2RpZmll
cnNDb250cm9sS2V5OworICAgIGlmIChKU1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1vZGlm
aWVyLCAic2hpZnQiKSkKKyAgICAgICAgbW9kID0ga1dLRXZlbnRNb2RpZmllcnNTaGlmdEtleTsK
KyAgICBpZiAoSlNTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtb2RpZmllciwgImFsdCIpKQor
ICAgICAgICBtb2QgPSBrV0tFdmVudE1vZGlmaWVyc0FsdEtleTsKKyAgICBpZiAoSlNTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhtb2RpZmllciwgIm1ldGEiKSkKKyAgICAgICAgbW9kID0ga1dL
RXZlbnRNb2RpZmllcnNNZXRhS2V5OworCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1v
ZGlmaWVyS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTW9kaWZp
ZXIiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tVSW50NjRSZWY+IG1vZGlmaWVyUmVmID0gV0tVSW50
NjRDcmVhdGUobW9kKTsKKyAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKEV2ZW50U2VuZGVyTWVzc2Fn
ZUJvZHkuZ2V0KCksIG1vZGlmaWVyS2V5LmdldCgpLCBtb2RpZmllclJlZi5nZXQoKSk7CisKKyAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZW5hYmxlS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiRW5hYmxlIikpOworICAgIFdLUmV0YWluUHRyPFdLVUludDY0
UmVmPiBlbmFibGVSZWYgPSBXS1VJbnQ2NENyZWF0ZShlbmFibGUpOworICAgIFdLRGljdGlvbmFy
eUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgZW5hYmxlS2V5LmdldCgpLCBl
bmFibGVSZWYuZ2V0KCkpOworCisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKElu
amVjdGVkQnVuZGxlOjpzaGFyZWQoKS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5n
ZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7Cit9CisKK3ZvaWQgRXZlbnRT
ZW5kaW5nQ29udHJvbGxlcjo6dG91Y2hTdGFydCgpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIkV2ZW50U2VuZGVyIikpOworICAgIFdLUmV0YWluUHRyPFdLTXV0YWJsZURp
Y3Rpb25hcnlSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkoQWRvcHRXSywgV0tNdXRhYmxlRGlj
dGlvbmFyeUNyZWF0ZSgpKTsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdWJNZXNz
YWdlS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTdWJNZXNzYWdl
IikpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdWJNZXNzYWdlTmFtZShBZG9wdFdL
LCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVG91Y2hTdGFydCIpKTsKKyAgICBXS0Rp
Y3Rpb25hcnlBZGRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIHN1Yk1lc3NhZ2VL
ZXkuZ2V0KCksIHN1Yk1lc3NhZ2VOYW1lLmdldCgpKTsKKworICAgIFdLQnVuZGxlUG9zdFN5bmNo
cm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIEV2ZW50U2Vu
ZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDApOwor
fQorCit2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnRvdWNoTW92ZSgpCit7CisgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkV2ZW50U2VuZGVyIikpOworICAgIFdLUmV0YWlu
UHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkoQWRvcHRX
SywgV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKTsKKworICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBzdWJNZXNzYWdlS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJTdWJNZXNzYWdlIikpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdWJNZXNz
YWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVG91Y2hNb3Zl
IikpOworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQo
KSwgc3ViTWVzc2FnZUtleS5nZXQoKSwgc3ViTWVzc2FnZU5hbWUuZ2V0KCkpOworCisgICAgV0tC
dW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5idW5k
bGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9k
eS5nZXQoKSwgMCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6dG91Y2hFbmQo
KQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBFdmVudFNlbmRlck1lc3NhZ2VOYW1l
KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFdmVudFNlbmRlciIpKTsK
KyAgICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBFdmVudFNlbmRlck1lc3Nh
Z2VCb2R5KEFkb3B0V0ssIFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CisKKyAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gc3ViTWVzc2FnZUtleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiU3ViTWVzc2FnZSIpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gc3ViTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIlRvdWNoRW5kIikpOworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNz
YWdlQm9keS5nZXQoKSwgc3ViTWVzc2FnZUtleS5nZXQoKSwgc3ViTWVzc2FnZU5hbWUuZ2V0KCkp
OworCisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpz
aGFyZWQoKS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5k
ZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxl
cjo6Y2xlYXJUb3VjaFBvaW50cygpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IEV2
ZW50U2VuZGVyTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIkV2ZW50U2VuZGVyIikpOworICAgIFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlS
ZWY+IEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkoQWRvcHRXSywgV0tNdXRhYmxlRGljdGlvbmFyeUNy
ZWF0ZSgpKTsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdWJNZXNzYWdlS2V5KEFk
b3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTdWJNZXNzYWdlIikpOworICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdWJNZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2xlYXJUb3VjaFBvaW50cyIpKTsKKyAgICBXS0RpY3Rp
b25hcnlBZGRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIHN1Yk1lc3NhZ2VLZXku
Z2V0KCksIHN1Yk1lc3NhZ2VOYW1lLmdldCgpKTsKKworICAgIFdLQnVuZGxlUG9zdFN5bmNocm9u
b3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIEV2ZW50U2VuZGVy
TWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDApOworfQor
Cit2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnJlbGVhc2VUb3VjaFBvaW50KGludCBpbmRl
eCkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gRXZlbnRTZW5kZXJNZXNzYWdlTmFt
ZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRXZlbnRTZW5kZXIiKSk7
CisgICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gRXZlbnRTZW5kZXJNZXNz
YWdlQm9keShBZG9wdFdLLCBXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOworCisgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHN1Yk1lc3NhZ2VLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIlN1Yk1lc3NhZ2UiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IHN1Yk1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJSZWxlYXNlVG91Y2hQb2ludCIpKTsKKyAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKEV2ZW50
U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIHN1Yk1lc3NhZ2VLZXkuZ2V0KCksIHN1Yk1lc3NhZ2VO
YW1lLmdldCgpKTsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBpbmRleEtleSA9IGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkluZGV4IikpOworICAgIFdLUmV0
YWluUHRyPFdLVUludDY0UmVmPiBpbmRleFJlZiA9IFdLVUludDY0Q3JlYXRlKGluZGV4KTsKKyAg
ICBXS0RpY3Rpb25hcnlBZGRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIGluZGV4
S2V5LmdldCgpLCBpbmRleFJlZi5nZXQoKSk7CisKKyAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91
c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmJ1bmRsZSgpLCBFdmVudFNlbmRlck1l
c3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKK30KKyNl
bmRpZgorCiAvLyBPYmplY3QgQ3JlYXRpb24KIAogdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVy
OjptYWtlV2luZG93T2JqZWN0KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB3aW5k
b3dPYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVy
LmgKaW5kZXggNWE2ZmExYTk2YjcyNjRiNTUzOWY4NjIzZDI5MzEwMGQyMzMxZGI3ZC4uNTY3MjRj
Y2EwNmQ5NGI4NDVhNmRhNTlhNGM1YWM3MzBmNzU3MzgxMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmgKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250
cm9sbGVyLmgKQEAgLTYyLDYgKzYyLDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIHpvb21QYWdlT3V0
KCk7CiAgICAgdm9pZCBzY2FsZVBhZ2VCeShkb3VibGUgc2NhbGUsIGRvdWJsZSB4LCBkb3VibGUg
eSk7CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIC8vIFRvdWNoIGV2ZW50cy4KKyAg
ICB2b2lkIGFkZFRvdWNoUG9pbnQoaW50IHgsIGludCB5KTsKKyAgICB2b2lkIHVwZGF0ZVRvdWNo
UG9pbnQoaW50IGluZGV4LCBpbnQgeCwgaW50IHkpOworICAgIHZvaWQgc2V0VG91Y2hNb2RpZmll
cihjb25zdCBKU1N0cmluZ1JlZiAmbW9kaWZpZXIsIGJvb2wgZW5hYmxlKTsKKyAgICB2b2lkIHRv
dWNoU3RhcnQoKTsKKyAgICB2b2lkIHRvdWNoTW92ZSgpOworICAgIHZvaWQgdG91Y2hFbmQoKTsK
KyAgICB2b2lkIGNsZWFyVG91Y2hQb2ludHMoKTsKKyAgICB2b2lkIHJlbGVhc2VUb3VjaFBvaW50
KGludCBpbmRleCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBFdmVudFNlbmRpbmdDb250cm9s
bGVyKCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvcXQvSW5qZWN0ZWRCdW5kbGUucHJvIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9xdC9JbmplY3RlZEJ1bmRsZS5wcm8KaW5kZXggNjE2YWRjMzkyMTYyNGUyZTZkMDQ5
NDc4OWQ3MjNlMGZlMTgwMTIzZS4uOWU2MDFjZTc5YTJkODdjZGUyYzM4OGExMTJkNWJmMWQ3NWUw
NDUxYyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9x
dC9JbmplY3RlZEJ1bmRsZS5wcm8KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9xdC9JbmplY3RlZEJ1bmRsZS5wcm8KQEAgLTUyLDYgKzUyLDggQEAgcHJlcGVuZEph
dmFTY3JpcHRDb3JlTGliKC4uLy4uLy4uL0phdmFTY3JpcHRDb3JlKQogaW5jbHVkZSguLi8uLi8u
Li8uLi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnByaSkKIHByZXBlbmRXZWJLaXQyTGliKC4uLy4u
Ly4uL1dlYktpdDIpCiAKK2luY2x1ZGUoLi4vLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZmVhdHVy
ZXMucHJpKSAjIEZvciBFTkFCTEVfVE9VQ0hfRVZFTlRTCisKIElOQ0xVREVQQVRIID0gXAogICAg
ICQkUFdEIFwKICAgICAkJFBXRC8uLiBcCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCmluZGV4IGJlZmVhMGRhZGEyMDE0YTI1NWVlZmFlODEyMGZjNWRhNTc4YmRiM2Mu
LmMxZjgzOTYzMDIzYzQ0ZmRhZjVlZmUzNGQzYmRlMDI2NmNkOThjZDYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC02MTksNiArNjE5LDc3IEBAIFdLUmV0
YWluUHRyPFdLVHlwZVJlZj4gVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01l
c3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogI2Vu
ZGlmCisKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgICAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIkFkZFRvdWNoUG9pbnQiKSkgeworICAg
ICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHhLZXkgPSBhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJYIikpOworICAgICAgICAgICAgaW50IHggPSBzdGF0aWNf
Y2FzdDxpbnQ+KFdLVUludDY0R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+KFdLRGlj
dGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCB4S2V5LmdldCgpKSkp
KTsKKworICAgICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHlLZXkgPSBhZG9wdFdL
KFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJZIikpOworICAgICAgICAgICAgaW50IHkg
PSBzdGF0aWNfY2FzdDxpbnQ+KFdLVUludDY0R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tVSW50NjRS
ZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCB5S2V5
LmdldCgpKSkpKTsKKworICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT5hZGRUb3VjaFBv
aW50KHgsIHkpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIlVwZGF0ZVRv
dWNoUG9pbnQiKSkgeworICAgICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGluZGV4
S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSW5kZXgiKSk7Cisg
ICAgICAgICAgICBpbnQgaW5kZXggPSBzdGF0aWNfY2FzdDxpbnQ+KFdLVUludDY0R2V0VmFsdWUo
c3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2Fn
ZUJvZHlEaWN0aW9uYXJ5LCBpbmRleEtleS5nZXQoKSkpKSk7CisKKyAgICAgICAgICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiB4S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiWCIpKTsKKyAgICAgICAgICAgIGludCB4ID0gc3RhdGljX2Nhc3Q8aW50PihXS1VJ
bnQ2NEdldFZhbHVlKHN0YXRpY19jYXN0PFdLVUludDY0UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVt
Rm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgeEtleS5nZXQoKSkpKSk7CisKKyAgICAgICAg
ICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB5S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiWSIpKTsKKyAgICAgICAgICAgIGludCB5ID0gc3RhdGljX2Nhc3Q8
aW50PihXS1VJbnQ2NEdldFZhbHVlKHN0YXRpY19jYXN0PFdLVUludDY0UmVmPihXS0RpY3Rpb25h
cnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgeUtleS5nZXQoKSkpKSk7CisK
KyAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+dXBkYXRlVG91Y2hQb2ludChpbmRleCwg
eCwgeSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiU2V0VG91Y2hNb2Rp
ZmllciIpKSB7CisgICAgICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbW9kaWZpZXJL
ZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJNb2RpZmllciIpKTsK
KyAgICAgICAgICAgIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXIgPSBzdGF0aWNfY2FzdDxXS0V2
ZW50TW9kaWZpZXJzPihXS1VJbnQ2NEdldFZhbHVlKHN0YXRpY19jYXN0PFdLVUludDY0UmVmPihX
S0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgbW9kaWZpZXJL
ZXkuZ2V0KCkpKSkpOworCisgICAgICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZW5h
YmxlS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRW5hYmxlIikp
OworICAgICAgICAgICAgYm9vbCBlbmFibGUgPSBzdGF0aWNfY2FzdDxib29sPihXS1VJbnQ2NEdl
dFZhbHVlKHN0YXRpY19jYXN0PFdLVUludDY0UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5
KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgZW5hYmxlS2V5LmdldCgpKSkpKTsKKworICAgICAgICAg
ICAgbV9ldmVudFNlbmRlclByb3h5LT5zZXRUb3VjaE1vZGlmaWVyKG1vZGlmaWVyLCBlbmFibGUp
OworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBpZiAoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIlRvdWNoU3RhcnQiKSkgewor
ICAgICAgICAgICAgV0tQYWdlU2V0U2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3VzbHkobWFpbldl
YlZpZXcoKS0+cGFnZSgpLCB0cnVlKTsKKyAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+
dG91Y2hTdGFydCgpOworICAgICAgICAgICAgV0tQYWdlU2V0U2hvdWxkU2VuZEV2ZW50c1N5bmNo
cm9ub3VzbHkobWFpbldlYlZpZXcoKS0+cGFnZSgpLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKHN1Yk1lc3NhZ2VOYW1lLCAiVG91Y2hNb3ZlIikpIHsKKyAgICAgICAgICAgIFdLUGFnZVNl
dFNob3VsZFNlbmRFdmVudHNTeW5jaHJvbm91c2x5KG1haW5XZWJWaWV3KCktPnBhZ2UoKSwgdHJ1
ZSk7CisgICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPnRvdWNoTW92ZSgpOworICAgICAg
ICAgICAgV0tQYWdlU2V0U2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3VzbHkobWFpbldlYlZpZXco
KS0+cGFnZSgpLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAi
VG91Y2hFbmQiKSkgeworICAgICAgICAgICAgV0tQYWdlU2V0U2hvdWxkU2VuZEV2ZW50c1N5bmNo
cm9ub3VzbHkobWFpbldlYlZpZXcoKS0+cGFnZSgpLCB0cnVlKTsKKyAgICAgICAgICAgIG1fZXZl
bnRTZW5kZXJQcm94eS0+dG91Y2hFbmQoKTsKKyAgICAgICAgICAgIFdLUGFnZVNldFNob3VsZFNl
bmRFdmVudHNTeW5jaHJvbm91c2x5KG1haW5XZWJWaWV3KCktPnBhZ2UoKSwgZmFsc2UpOworICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIkNsZWFyVG91Y2hQb2ludHMiKSkgewor
ICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT5jbGVhclRvdWNoUG9pbnRzKCk7CisgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiUmVsZWFzZVRvdWNoUG9pbnQiKSkgewor
ICAgICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGluZGV4S2V5ID0gYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSW5kZXgiKSk7CisgICAgICAgICAgICBpbnQg
aW5kZXggPSBzdGF0aWNfY2FzdDxpbnQ+KFdLVUludDY0R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tV
SW50NjRSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5
LCBpbmRleEtleS5nZXQoKSkpKSk7CisgICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPnJl
bGVhc2VUb3VjaFBvaW50KGluZGV4KTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9
CisjZW5kaWYKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L0V2ZW50U2VuZGVyUHJveHlRdC5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L0V2ZW50U2VuZGVyUHJveHlRdC5jcHAKaW5k
ZXggYTFhZWIwNTdlNmIyNDc0ZDY3NjJkNWRiOWUxYmUyMmYyNDUwNTFhNS4uYzU4NTYxNjJhYWQ5
MmM1YzA5MWUxMjMxNjY3NDVlMjgxODZiMTVhMSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9xdC9FdmVudFNlbmRlclByb3h5UXQuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvcXQvRXZlbnRTZW5kZXJQcm94eVF0LmNwcApAQCAtNjIsNiArNjIsOSBAQCBFdmVudFNl
bmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5KFRlc3RDb250cm9sbGVyKiB0ZXN0Q29udHJvbGxl
cikKICAgICAsIG1fY2xpY2tQb3NpdGlvbigpCiAgICAgLCBtX2NsaWNrQnV0dG9uKGtXS0V2ZW50
TW91c2VCdXR0b25Ob0J1dHRvbikKICAgICAsIG1fbW91c2VCdXR0b25zKDApCisjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKKyAgICAsIG1fdG91Y2hBY3RpdmUoZmFsc2UpCisjZW5kaWYKIHsKICAg
ICBtZW1zZXQoZXZlbnRRdWV1ZSwgMCwgc2l6ZW9mKGV2ZW50UXVldWUpKTsKICAgICBlbmRPZlF1
ZXVlID0gMDsKQEAgLTMwNSw2ICszMDgsOTQgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5OjpsZWFw
Rm9yd2FyZChpbnQgbXMpCiAgICAgZXZlbnRRdWV1ZVtlbmRPZlF1ZXVlXS5tX2RlbGF5ID0gbXM7
CiB9CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQordm9pZCBFdmVudFNlbmRlclByb3h5Ojph
ZGRUb3VjaFBvaW50KGludCB4LCBpbnQgeSkKK3sKKyAgICBjb25zdCBpbnQgaWQgPSBtX3RvdWNo
UG9pbnRzLmlzRW1wdHkoKSA/IDAgOiBtX3RvdWNoUG9pbnRzLmxhc3QoKS5pZCgpICsgMTsKKyAg
ICBjb25zdCBRUG9pbnRGIHBvcyh4LCB5KTsKKyAgICBRVG91Y2hFdmVudDo6VG91Y2hQb2ludCBw
b2ludChpZCk7CisgICAgcG9pbnQuc2V0UG9zKHBvcyk7CisgICAgcG9pbnQuc2V0U3RhcnRQb3Mo
cG9zKTsKKyAgICBwb2ludC5zZXRTdGF0ZShRdDo6VG91Y2hQb2ludFByZXNzZWQpOworICAgIG1f
dG91Y2hQb2ludHMuYXBwZW5kKHBvaW50KTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojp1
cGRhdGVUb3VjaFBvaW50KGludCBpbmRleCwgaW50IHgsIGludCB5KQoreworICAgIEFTU0VSVChp
bmRleCA+PSAwICYmIGluZGV4IDwgbV90b3VjaFBvaW50cy5jb3VudCgpKTsKKyAgICBRVG91Y2hF
dmVudDo6VG91Y2hQb2ludCAmcCA9IG1fdG91Y2hQb2ludHNbaW5kZXhdOworICAgIHAuc2V0UG9z
KFFQb2ludEYoeCwgeSkpOworICAgIHAuc2V0U3RhdGUoUXQ6OlRvdWNoUG9pbnRNb3ZlZCk7Cit9
CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6c2V0VG91Y2hNb2RpZmllcihXS0V2ZW50TW9kaWZp
ZXJzIG1vZGlmaWVyLCBib29sIGVuYWJsZSkKK3sKKyAgICBRdDo6S2V5Ym9hcmRNb2RpZmllcnMg
bW9kID0gZ2V0TW9kaWZpZXJzKG1vZGlmaWVyKTsKKworICAgIGlmIChlbmFibGUpCisgICAgICAg
IG1fdG91Y2hNb2RpZmllcnMgfD0gbW9kOworICAgIGVsc2UKKyAgICAgICAgbV90b3VjaE1vZGlm
aWVycyAmPSB+bW9kOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnRvdWNoU3RhcnQoKQor
eworICAgIGlmICghbV90b3VjaEFjdGl2ZSkgeworICAgICAgICBzZW5kVG91Y2hFdmVudChRRXZl
bnQ6OlRvdWNoQmVnaW4pOworICAgICAgICBtX3RvdWNoQWN0aXZlID0gdHJ1ZTsKKyAgICB9IGVs
c2UKKyAgICAgICAgc2VuZFRvdWNoRXZlbnQoUUV2ZW50OjpUb3VjaFVwZGF0ZSk7Cit9CisKK3Zv
aWQgRXZlbnRTZW5kZXJQcm94eTo6dG91Y2hNb3ZlKCkKK3sKKyAgICBzZW5kVG91Y2hFdmVudChR
RXZlbnQ6OlRvdWNoVXBkYXRlKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojp0b3VjaEVu
ZCgpCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX3RvdWNoUG9pbnRzLmNvdW50KCk7ICsr
aSkgeworICAgICAgICBpZiAobV90b3VjaFBvaW50c1tpXS5zdGF0ZSgpICE9IFF0OjpUb3VjaFBv
aW50UmVsZWFzZWQpIHsKKyAgICAgICAgICAgIHNlbmRUb3VjaEV2ZW50KFFFdmVudDo6VG91Y2hV
cGRhdGUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIHNlbmRU
b3VjaEV2ZW50KFFFdmVudDo6VG91Y2hFbmQpOworICAgIG1fdG91Y2hBY3RpdmUgPSBmYWxzZTsK
K30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjpjbGVhclRvdWNoUG9pbnRzKCkKK3sKKyAgICBt
X3RvdWNoUG9pbnRzLmNsZWFyKCk7CisgICAgbV90b3VjaE1vZGlmaWVycyA9IFF0OjpLZXlib2Fy
ZE1vZGlmaWVycygpOworICAgIG1fdG91Y2hBY3RpdmUgPSBmYWxzZTsKK30KKwordm9pZCBFdmVu
dFNlbmRlclByb3h5OjpyZWxlYXNlVG91Y2hQb2ludChpbnQgaW5kZXgpCit7CisgICAgaWYgKGlu
ZGV4IDwgMCB8fCBpbmRleCA+PSBtX3RvdWNoUG9pbnRzLmNvdW50KCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fdG91Y2hQb2ludHNbaW5kZXhdLnNldFN0YXRlKFF0OjpUb3VjaFBvaW50UmVs
ZWFzZWQpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnNlbmRUb3VjaEV2ZW50KFFFdmVu
dDo6VHlwZSB0eXBlKQoreworICAgIFFUb3VjaEV2ZW50IGV2ZW50KHR5cGUsIFFUb3VjaEV2ZW50
OjpUb3VjaFNjcmVlbiwgbV90b3VjaE1vZGlmaWVycyk7CisgICAgZXZlbnQuc2V0VG91Y2hQb2lu
dHMobV90b3VjaFBvaW50cyk7CisgICAgbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+
c2VuZEV2ZW50KCZldmVudCk7CisgICAgUUxpc3Q8UVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQ+OjpJ
dGVyYXRvciBpdCA9IG1fdG91Y2hQb2ludHMuYmVnaW4oKTsKKyAgICB3aGlsZSAoaXQgIT0gbV90
b3VjaFBvaW50cy5lbmQoKSkgeworICAgICAgICBpZiAoaXQtPnN0YXRlKCkgPT0gUXQ6OlRvdWNo
UG9pbnRSZWxlYXNlZCkKKyAgICAgICAgICAgIGl0ID0gbV90b3VjaFBvaW50cy5lcmFzZShpdCk7
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaXQtPnNldFN0YXRlKFF0OjpUb3VjaFBvaW50
U3RhdGlvbmFyeSk7CisgICAgICAgICAgICArK2l0OworICAgICAgICB9CisgICAgfQorfQorI2Vu
ZGlmCisKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6c2VuZE9yUXVldWVFdmVudChRRXZlbnQqIGV2
ZW50KQogewogICAgIGlmIChlbmRPZlF1ZXVlID09IHN0YXJ0T2ZRdWV1ZSAmJiAhZXZlbnRRdWV1
ZVtlbmRPZlF1ZXVlXS5tX2RlbGF5KSB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL3F0L1dlYktpdFRlc3RSdW5uZXIucHJvIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9X
ZWJLaXRUZXN0UnVubmVyLnBybwppbmRleCA2ZmFkY2ViMTQ4ZjJlMmYwOTJjZjYyYjQyMjIyYTg3
NGQ0MjA0NTZjLi40YjY5YjdhNmNjODA0ZTk0YWNmYjEzZjU5OWYwYTUyOTEwODYxZTMyIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1dlYktpdFRlc3RSdW5uZXIucHJvCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvV2ViS2l0VGVzdFJ1bm5lci5wcm8KQEAgLTgs
NiArOCw4IEBAIEdFTkVSQVRFRF9TT1VSQ0VTX0RJUiA9IC4uL2dlbmVyYXRlZAogCiBpbmNsdWRl
KC4uLy4uLy4uL1NvdXJjZS9XZWJLaXQucHJpKQogCitpbmNsdWRlKC4uLy4uLy4uLy4uL1NvdXJj
ZS9XZWJDb3JlL2ZlYXR1cmVzLnByaSkgIyBGb3IgRU5BQkxFX1RPVUNIX0VWRU5UUworCiBERUZJ
TkVTICs9IFVTRV9TWVNURU1fTUFMTE9DPTEKIERFRklORVMgLT0gUVRfQVNDSUlfQ0FTVF9XQVJO
SU5HUwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggMmQzNmNiMThmYTI3MTFhNjg1ZmJlZjRhNjJmYzY1YmEwYzBiZWZjNS4u
YWFiYmVkNjI2ZmY4NzRjZmQ3NTk2NGNhMDdiNTQwZTllOTJmMDEzMCAxMDA3NTUKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyIEBACisyMDExLTExLTAyICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lh
LmNvbT4KKworICAgICAgICBbUXRdW1dLMl0gQWRkIHN1cHBvcnQgZm9yIHRvdWNoIGV2ZW50IHRl
c3RpbmcgdG8gV2ViS2l0VGVzdFJ1bm5lcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzEzMTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL3F0LXdrMi9Ta2lwcGVkOiBVbnNraXAgdG91Y2gg
dGVzdHMgdGhhdCBhcmUgcGFzc2luZyBub3cuCisKIDIwMTEtMTEtMDIgIEdhYm9yIFJhcGNzYW55
aSAgPHJnYWJvckB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gVW5yZXZpZXdlZCBnYXJkZW5p
bmcuIFVuc2tpcCB0aGUgUXQgbW9iaWxpdHkgdGVzdHMgYmVjYXVzZSB0aGV5IGFyZSB3b3JraW5n
IG5vdy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0LXdrMi9Ta2lwcGVkIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL1NraXBwZWQKaW5kZXggODVlZTQ1Y2UwMjg5OTI5
OTc1ODVlMzQwMmJhZDUwM2NjNzM2MDEyNS4uMzU4MzQwNDA2MzRkZjE5Nzg1ZTAzYjYwMGUzN2E2
ZmMwOGY0NTg4MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL1NraXBw
ZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL1NraXBwZWQKQEAgLTMwMSw5ICsz
MDEsNiBAQCBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L2JhZC1zdWItcHJvdG9j
b2wtbm9uLWFzY2lpLmh0bWwKICMgRXZlbnRTZW5kZXIubW91c2VNb3ZlVG8gaXMgbm90IHlldCBz
dXBwb3J0ZWQKIHN2Zy9keW5hbWljLXVwZGF0ZXMKIAotIyBldmVudFNlbmRlci5jbGVhclRvdWNo
UG9pbnRzIGlzIHVuaW1wbGVtZW50ZWQKLWZhc3QvZXZlbnRzL3RvdWNoCi0KICMgbGF5b3V0VGVz
dENvbnRyb2xsZXIuaWdub3JlRGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0cyBp
cyB1bmltcGxlbWVudGVkCiBmYXN0L25vdGlmaWNhdGlvbnMKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>