<?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>93270</bug_id>
          
          <creation_ts>2012-08-06 07:40:56 -0700</creation_ts>
          <short_desc>[EFL] Remove PlatformTouchEventEfl and PlatformTouchPointEfl</short_desc>
          <delta_ts>2012-08-20 04:50:21 -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>WebKit EFL</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>
          <dependson>94466</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryuan Choi">ryuan.choi</reporter>
          <assigned_to name="Ryuan Choi">ryuan.choi</assigned_to>
          <cc>dpranke</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>688124</commentid>
    <comment_count>0</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-06 07:40:56 -0700</bug_when>
    <thetext>In order to remove WebKit dependency from WebCore, 
codes of PlatformTouchEventEfl and PlatformTouchPointEfl should be moved to WebKit/Efl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688145</commentid>
    <comment_count>1</comment_count>
      <attachid>156697</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-06 08:07:14 -0700</bug_when>
    <thetext>Created attachment 156697
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688819</commentid>
    <comment_count>2</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-06 22:22:33 -0700</bug_when>
    <thetext>I wonder if we should move touch event implementation from WebCore to WebKit. Can&apos;t we share this with WK2 ?  As you know, blackberry port also implemented this in WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688841</commentid>
    <comment_count>3</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-06 22:56:28 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I wonder if we should move touch event implementation from WebCore to WebKit. Can&apos;t we share this with WK2 ?  As you know, blackberry port also implemented this in WebCore.

WebKit2 also has own conversion logic for Touch event and it is more complicated because of IPC.
So, WebKit2 indirectly converts port specific structure to PlatformTouchEvent.

But, PlatformTouchEventEfl and PlatformTouchPointEfl initialize PlatformTouchEvent directly from Ewk_TouchEvent which is WebKit1/Efl API.

As a result, we can not share this logic and I think that WebCore should not depends on WebKit.

For touch event for WebKit2/Efl, you can see the Bug 90662.

Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688866</commentid>
    <comment_count>4</comment_count>
      <attachid>156697</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-06 23:26:20 -0700</bug_when>
    <thetext>Comment on attachment 156697
Patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        Ewk_Touch_XXX to PlatformTouchXXX.

I think it is good to mention that PlatformTouchEventEfl can&apos;t be shared with WK2.

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:981
&gt; +class WebKitPlatformTouchPoint : public WebCore::PlatformTouchPoint {

It looks this class can be moved to new file. For example, ewk_touch_event_private.h and so on.

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:992
&gt; +class WebKitPlatformTouchEvent : public WebCore::PlatformTouchEvent {

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688956</commentid>
    <comment_count>5</comment_count>
      <attachid>156894</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-07 01:49:29 -0700</bug_when>
    <thetext>Created attachment 156894
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688976</commentid>
    <comment_count>6</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-07 02:21:03 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 156697 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=156697&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:12
&gt; &gt; +        Ewk_Touch_XXX to PlatformTouchXXX.
&gt; 
&gt; I think it is good to mention that PlatformTouchEventEfl can&apos;t be shared with WK2.
&gt; 
I add comment little bit more.

&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:981
&gt; &gt; +class WebKitPlatformTouchPoint : public WebCore::PlatformTouchPoint {
&gt; 
&gt; It looks this class can be moved to new file. For example, ewk_touch_event_private.h and so on.

I added ewk_touch_event.cpp which includes WebKitPlatformTouchPoint and WebKitPlatformTouchEvent, because WebKitPlatformTouchPoint is simple and only used in WebKitPlatformTouchEvent.

&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:992
&gt; &gt; +class WebKitPlatformTouchEvent : public WebCore::PlatformTouchEvent {
&gt; 
&gt; Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688977</commentid>
    <comment_count>7</comment_count>
      <attachid>156894</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-07 02:22:30 -0700</bug_when>
    <thetext>Comment on attachment 156894
Patch

Looks fine. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689098</commentid>
    <comment_count>8</comment_count>
      <attachid>156894</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-08-07 06:30:01 -0700</bug_when>
    <thetext>Comment on attachment 156894
Patch

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

&gt; Source/WebKit/efl/ewk/ewk_touch_event.cpp:27
&gt; +#include &quot;ewk_touch_event.h&quot;

Isn&apos;t this a private header that should end in &quot;_private.h&quot;?

&gt; Source/WebKit/efl/ewk/ewk_touch_event.cpp:41
&gt; +    {
&gt; +        m_id = id;
&gt; +        m_state = state;
&gt; +        m_screenPos = windowPos;
&gt; +        m_pos = windowPos;
&gt; +    }

You can move these to the constructor&apos;s initialization list.

&gt; Source/WebKit/efl/ewk/ewk_touch_event.h:35
&gt; +class WebKitPlatformTouchEvent : public WebCore::PlatformTouchEvent {
&gt; +public:
&gt; +    WebKitPlatformTouchEvent(const Eina_List* points, const WebCore::IntPoint&amp; pos, Ewk_Touch_Event_Type action, unsigned modifiers);
&gt; +};

Even for private headers and constructions, we normally hide the classes in the .cpp files and provide EFL-style functions in the headers which create them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689119</commentid>
    <comment_count>9</comment_count>
      <attachid>156935</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-07 07:18:03 -0700</bug_when>
    <thetext>Created attachment 156935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689121</commentid>
    <comment_count>10</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-07 07:20:18 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 156894 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=156894&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_touch_event.cpp:27
&gt; &gt; +#include &quot;ewk_touch_event.h&quot;
&gt; 
&gt; Isn&apos;t this a private header that should end in &quot;_private.h&quot;?
&gt; 
OK, I did.

&gt; &gt; Source/WebKit/efl/ewk/ewk_touch_event.cpp:41
&gt; &gt; +    {
&gt; &gt; +        m_id = id;
&gt; &gt; +        m_state = state;
&gt; &gt; +        m_screenPos = windowPos;
&gt; &gt; +        m_pos = windowPos;
&gt; &gt; +    }
&gt; 
&gt; You can move these to the constructor&apos;s initialization list.
Because these are members of parent class, I can&apos;t move them to initialization list.

&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_touch_event.h:35
&gt; &gt; +class WebKitPlatformTouchEvent : public WebCore::PlatformTouchEvent {
&gt; &gt; +public:
&gt; &gt; +    WebKitPlatformTouchEvent(const Eina_List* points, const WebCore::IntPoint&amp; pos, Ewk_Touch_Event_Type action, unsigned modifiers);
&gt; &gt; +};
&gt; 
&gt; Even for private headers and constructions, we normally hide the classes in the .cpp files and provide EFL-style functions in the headers which create them.

I tried like you mentioned.

Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689465</commentid>
    <comment_count>11</comment_count>
      <attachid>156935</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-08-07 15:15:57 -0700</bug_when>
    <thetext>Comment on attachment 156935
Patch

rs=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689614</commentid>
    <comment_count>12</comment_count>
      <attachid>156935</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-07 16:52:34 -0700</bug_when>
    <thetext>Comment on attachment 156935
Patch

Clearing flags on attachment: 156935

Committed r124945: &lt;http://trac.webkit.org/changeset/124945&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689615</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-07 16:52:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689717</commentid>
    <comment_count>14</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-08-07 18:25:27 -0700</bug_when>
    <thetext>fwiw, we forgot to remove the files from Chromium&apos;s WebCore.gypi, so this broke the Chromium win build. Fixed in http://trac.webkit.org/changeset/124965, hopefully.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689729</commentid>
    <comment_count>15</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-07 18:35:44 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; fwiw, we forgot to remove the files from Chromium&apos;s WebCore.gypi, so this broke the Chromium win build. Fixed in http://trac.webkit.org/changeset/124965, hopefully.

Oops, sorry I didn&apos;t know it.
I will remember.
Thank you for your information and fixing.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156697</attachid>
            <date>2012-08-06 08:07:14 -0700</date>
            <delta_ts>2012-08-07 01:49:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93270-20120807000649.patch</filename>
            <type>text/plain</type>
            <size>13280</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2VhZWY5NGQ2MzhlMTVj
ZTg5YTg1ZTIzZTFlMDcyODhiOWIyMTUxMi4uZGMwZDAwYjA1MGJkN2NhODJhMGMwNTU2Njk5OGQz
NjRkYThjMzU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTA4LTA2ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXSBSZW1vdmUg
UGxhdGZvcm1Ub3VjaEV2ZW50RWZsIGFuZCBQbGF0Zm9ybVRvdWNoUG9pbnRFZmwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzMjcwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGxhdGZvcm1Ub3VjaEV2ZW50
RWZsIHVzZXMgRXdrX1RvdWNoX1BvaW50LCBvbmUgb2YgV2ViS2l0MS9FZmwgc3RydWN0dXJlLgor
CisgICAgICAgIEluIG9yZGVyIHRvIHJlbW92ZSBXZWJLaXQgZGVwZW5kZW5jeSBmcm9tIFdlYkNv
cmUsIHRoaXMgcGF0Y2ggcmVtb3ZlcyBFZmwKKyAgICAgICAgc3BlY2lmaWMgY29kZXMgZnJvbSBQ
bGF0Zm9ybVRvdWNoWFhYIGFuZCBhZGRzIHRoZSBjbGFzc2VzIHdoaWNoIGNvbnZlcnQKKyAgICAg
ICAgRXdrX1RvdWNoX1hYWCB0byBQbGF0Zm9ybVRvdWNoWFhYLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cy4gSnVzdCBhIHJlZmFjdG9yaW5nLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6
IFJlbW92ZWQgUGxhdGZvcm1Ub3VjaEV2ZW50RWZsLmNwcCBhbmQgUGxhdGZvcm1Ub3VjaFBvaW50
RWZsLmNwcAorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtVG91Y2hFdmVudC5oOiBSZW1vdmVk
IEVmbCBzcGVjaWZpYyBjb2Rlcy4KKyAgICAgICAgKFBsYXRmb3JtVG91Y2hFdmVudCk6CisgICAg
ICAgICogcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50Lmg6IERpdHRvLgorICAgICAgICAoUGxh
dGZvcm1Ub3VjaFBvaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvUGxhdGZvcm1Ub3VjaEV2
ZW50RWZsLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvUGxhdGZvcm1Ub3Vj
aFBvaW50RWZsLmNwcDogUmVtb3ZlZC4KKwogMjAxMi0wOC0wNiAgQW5kcmVhcyBLbGluZyAgPGts
aW5nQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUGFzcyBwcmVzZW50YXRpb25hbCBhdHRyaWJ1dGUg
U3R5bGVQcm9wZXJ0eVNldHMgYnkgY29uc3QgcG9pbnRlciB3aGVyZSBwb3NzaWJsZS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0No
YW5nZUxvZwppbmRleCA0ZTE3YTYzZjYyODc1MmUzODJhMWYxODE5Njc3YTJhNjdiYmVhODUzLi5m
MWFmNGQxMGNhNWM1Yjg0MDdlZjllZDBjZDk0ZDFmN2M2YmUzN2YwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDgtMDYgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNh
bXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdIFJlbW92ZSBQbGF0Zm9ybVRvdWNoRXZlbnRFZmwg
YW5kIFBsYXRmb3JtVG91Y2hQb2ludEVmbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTMyNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0UGxh
dGZvcm1Ub3VjaFBvaW50KTogQWRkZWQgdG8gaW5pdGlhbGl6ZSBtZW1iZXJzIG9mIFBsYXRmb3Jt
VG91Y2hQb2ludC4KKyAgICAgICAgKFdlYktpdFBsYXRmb3JtVG91Y2hQb2ludDo6V2ViS2l0UGxh
dGZvcm1Ub3VjaFBvaW50KToKKyAgICAgICAgKFdlYktpdFBsYXRmb3JtVG91Y2hFdmVudCk6IEFk
ZGVkIHRvIGluaXRpYWxpemUgbWVtYmVycyBvZiBQbGF0Zm9ybVRvdWNoRXZlbnQuCisgICAgICAg
IChXZWJLaXRQbGF0Zm9ybVRvdWNoRXZlbnQ6OldlYktpdFBsYXRmb3JtVG91Y2hFdmVudCk6Cisg
ICAgICAgIChld2tfZnJhbWVfZmVlZF90b3VjaF9ldmVudCk6CisgICAgICAgIFVzZWQgV2ViS2l0
UGxhdGZvcm1Ub3VjaEV2ZW50IGluc3RlYWQgb2YgUGxhdGZvcm1Ub3VjaEV2ZW50LgorCiAyMDEy
LTA4LTA2ICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29t
PgogCiAgICAgICAgIFtFRkxdIFtHVEtdIFJlZ2lzdGVyIFByb3RvY29sIEhhbmRsZXIgQ2xpZW50
IGlzIG5ldmVyIGRlbGV0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZs
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggZThjMzJkODMw
OTFjY2RjNzE4ZWZjOTZhMzQ2ZjAyNWJjNDVkNDI3NC4uMDUzZjViOWVjM2JmYjVjMzdiNzVjYWRk
ZmMxNDg5OWU1NDJjMGNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwu
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTE0LDcgKzE0
LDYgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICIke1dFQkNP
UkVfRElSfS9wbGF0Zm9ybS90ZXh0L2VmbCIKICAgIiR7V0VCQ09SRV9ESVJ9L3BsdWdpbnMvZWZs
IgogICAiJHtXRUJLSVRfRElSfS9lZmwvV2ViQ29yZVN1cHBvcnQiCi0gICIke1dFQktJVF9ESVJ9
L2VmbC9ld2siCiApCiAKIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwpAQCAtNDcsOCArNDYs
NiBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgcGxhdGZvcm0vZWZsL1BsYXRmb3Jt
S2V5Ym9hcmRFdmVudEVmbC5jcHAKICAgcGxhdGZvcm0vZWZsL1BsYXRmb3JtTW91c2VFdmVudEVm
bC5jcHAKICAgcGxhdGZvcm0vZWZsL1BsYXRmb3JtU2NyZWVuRWZsLmNwcAotICBwbGF0Zm9ybS9l
ZmwvUGxhdGZvcm1Ub3VjaEV2ZW50RWZsLmNwcAotICBwbGF0Zm9ybS9lZmwvUGxhdGZvcm1Ub3Vj
aFBvaW50RWZsLmNwcAogICBwbGF0Zm9ybS9lZmwvUGxhdGZvcm1XaGVlbEV2ZW50RWZsLmNwcAog
ICBwbGF0Zm9ybS9lZmwvUG9wdXBNZW51RWZsLmNwcAogICBwbGF0Zm9ybS9lZmwvUmVmUHRyRWZs
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaEV2
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoRXZlbnQuaAppbmRl
eCBkYmZlYzIyZGE0NjkzMGEyOGExZTA0OGY3NDNiZjczNTVlNjdmYzc1Li44Nzg0ZGE1ODdiNDAy
ODhiOGE3N2M4MTc1OTI2ZDc1MjUxM2IxMDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVRvdWNoRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVRvdWNoRXZlbnQuaApAQCAtMzIsMTAgKzMyLDYgQEAgY2xhc3MgUVRvdWNoRXZl
bnQ7CiBRVF9FTkRfTkFNRVNQQUNFCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEVGTCkKLXR5cGVk
ZWYgc3RydWN0IF9FaW5hX0xpc3QgRWluYV9MaXN0OwotI2VuZGlmCi0KICNpZiBQTEFURk9STShC
TEFDS0JFUlJZKQogbmFtZXNwYWNlIEJsYWNrQmVycnkgewogbmFtZXNwYWNlIFBsYXRmb3JtIHsK
QEAgLTYwLDkgKzU2LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSNpZiBQTEFURk9STShF
RkwpCi0gICAgUGxhdGZvcm1Ub3VjaEV2ZW50KGNvbnN0IEVpbmFfTGlzdCosIGNvbnN0IEludFBv
aW50LCBQbGF0Zm9ybUV2ZW50OjpUeXBlLCBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcnMpOwotI2Vs
aWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKKyNpZiBQTEFURk9STShCTEFDS0JFUlJZKQogICAgIGV4
cGxpY2l0IFBsYXRmb3JtVG91Y2hFdmVudChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VG91Y2hFdmVu
dCopOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtVG91Y2hQb2ludC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBv
aW50LmgKaW5kZXggMGI2NTE0MDczYTA3ODU4N2YxZmI3MDdkNzNkZjMwOWY4ZmQ0YTEzZS4uZWI0
MjAxNTA3OGIzZDRhNzljMzk4MDMxYmJhZjQ4M2I1YzMyODBhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50LmgKQEAgLTYyLDkgKzYyLDcgQEAgcHVibGlj
OgogICAgIHsKICAgICB9CiAKLSNpZiBQTEFURk9STShFRkwpCi0gICAgUGxhdGZvcm1Ub3VjaFBv
aW50KHVuc2lnbmVkIGlkLCBjb25zdCBJbnRQb2ludCYgd2luZG93UG9zLCBTdGF0ZSk7Ci0jZWxp
ZiBQTEFURk9STShCTEFDS0JFUlJZKQorI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCiAgICAgUGxh
dGZvcm1Ub3VjaFBvaW50KGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpUb3VjaFBvaW50Jik7
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRm
b3JtVG91Y2hFdmVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZv
cm1Ub3VjaEV2ZW50RWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjEzMTZk
MjdkNzM0ZjQ4MmYwNzUxYzI2YzJjYjkxNzdlYzZlNDVmMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxh
dGZvcm1Ub3VjaEV2ZW50RWZsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiUGxhdGZvcm1Ub3VjaEV2ZW50LmgiCi0KLSNpbmNsdWRlICJld2tfZnJhbWUuaCIKLSNpbmNs
dWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KLQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotUGxhdGZvcm1Ub3VjaEV2ZW50OjpQbGF0Zm9ybVRvdWNoRXZl
bnQoY29uc3QgRWluYV9MaXN0KiBwb2ludHMsIGNvbnN0IEludFBvaW50IHBvcywgUGxhdGZvcm1F
dmVudDo6VHlwZSB0eXBlLCBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzKQotICAg
IDogUGxhdGZvcm1FdmVudCh0eXBlLCBtb2RpZmllcnMsIGN1cnJlbnRUaW1lKCkpCi17Ci0gICAg
Y29uc3QgRWluYV9MaXN0KiBsaXN0OwotICAgIHZvaWQqIGl0ZW07Ci0KLSAgICBFSU5BX0xJU1Rf
Rk9SRUFDSChwb2ludHMsIGxpc3QsIGl0ZW0pIHsKLSAgICAgICAgRXdrX1RvdWNoX1BvaW50KiBw
b2ludCA9IHN0YXRpY19jYXN0PEV3a19Ub3VjaF9Qb2ludCo+KGl0ZW0pOwotICAgICAgICBJbnRQ
b2ludCBwbnQgPSBJbnRQb2ludChwb2ludC0+eCAtIHBvcy54KCksIHBvaW50LT55IC0gcG9zLnko
KSk7Ci0gICAgICAgIG1fdG91Y2hQb2ludHMuYXBwZW5kKFBsYXRmb3JtVG91Y2hQb2ludChwb2lu
dC0+aWQsIHBudCwgc3RhdGljX2Nhc3Q8UGxhdGZvcm1Ub3VjaFBvaW50OjpTdGF0ZT4ocG9pbnQt
PnN0YXRlKSkpOwotICAgIH0KLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVRvdWNoUG9pbnRFZmwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtVG91Y2hQb2ludEVmbC5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGIxODFmNjg3Mjk3NzdlMTNjNzBhNzJjODJlZGI5MDRhZGM0MmI3
YmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtVG91Y2hQb2ludEVmbC5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ft
c3VuZyBFbGVjdHJvbmljcwotICoKLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtVG91Y2hQb2ludC5oIgotCi0jaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QbGF0Zm9ybVRv
dWNoUG9pbnQ6OlBsYXRmb3JtVG91Y2hQb2ludCh1bnNpZ25lZCBpZCwgY29uc3QgSW50UG9pbnQm
IHdpbmRvd1BvcywgU3RhdGUgc3RhdGUpCi0gICAgOiBtX2lkKGlkKQotICAgICwgbV9zdGF0ZShz
dGF0ZSkKLSAgICAsIG1fc2NyZWVuUG9zKHdpbmRvd1BvcykKLSAgICAsIG1fcG9zKHdpbmRvd1Bv
cykgeyB9Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX2ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCmluZGV4
IGZiYTQ2MGVjMDI0ODM0MjBjZDk2ODI2ODY2MzlkNzE5ODdiNTdhNzcuLjQ2YzM4ZWFjYmNiM2Q2
MmY0ZDIwNDQ5MTFjNGMwNjRmNGMzZGM0NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUu
Y3BwCkBAIC05NzgsNiArOTc4LDYwIEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV9t
b3ZlKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgRXZhc19FdmVudF9Nb3VzCiAgICAgcmV0
dXJuIHNtYXJ0RGF0YS0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5tb3VzZU1vdmVkKGV2ZW50KTsK
IH0KIAorY2xhc3MgV2ViS2l0UGxhdGZvcm1Ub3VjaFBvaW50IDogcHVibGljIFdlYkNvcmU6OlBs
YXRmb3JtVG91Y2hQb2ludCB7CitwdWJsaWM6CisgICAgV2ViS2l0UGxhdGZvcm1Ub3VjaFBvaW50
KHVuc2lnbmVkIGlkLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgd2luZG93UG9zLCBXZWJDb3Jl
OjpQbGF0Zm9ybVRvdWNoUG9pbnQ6OlN0YXRlIHN0YXRlKQorICAgIHsKKyAgICAgICAgbV9pZCA9
IGlkOworICAgICAgICBtX3N0YXRlID0gc3RhdGU7CisgICAgICAgIG1fc2NyZWVuUG9zID0gd2lu
ZG93UG9zOworICAgICAgICBtX3BvcyA9IHdpbmRvd1BvczsKKyAgICB9Cit9OworCitjbGFzcyBX
ZWJLaXRQbGF0Zm9ybVRvdWNoRXZlbnQgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaEV2
ZW50IHsKK3B1YmxpYzoKKyAgICBXZWJLaXRQbGF0Zm9ybVRvdWNoRXZlbnQoY29uc3QgRWluYV9M
aXN0KiBwb2ludHMsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3MsIEV3a19Ub3VjaF9FdmVu
dF9UeXBlIGFjdGlvbiwgdW5zaWduZWQgbW9kaWZpZXJzKQorICAgIHsKKyAgICAgICAgc3dpdGNo
IChhY3Rpb24pIHsKKyAgICAgICAgY2FzZSBFV0tfVE9VQ0hfU1RBUlQ6CisgICAgICAgICAgICBt
X3R5cGUgPSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaFN0YXJ0OworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRVdLX1RPVUNIX01PVkU6CisgICAgICAgICAgICBtX3R5cGUg
PSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaE1vdmU7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBFV0tfVE9VQ0hfRU5EOgorICAgICAgICAgICAgbV90eXBlID0gV2ViQ29y
ZTo6UGxhdGZvcm1FdmVudDo6VG91Y2hFbmQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBFV0tfVE9VQ0hfQ0FOQ0VMOgorICAgICAgICAgICAgbV90eXBlID0gV2ViQ29yZTo6UGxh
dGZvcm1FdmVudDo6VG91Y2hDYW5jZWw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAobW9kaWZpZXJzICYgRUNPUkVfRVZFTlRfTU9E
SUZJRVJfQUxUKQorICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gV2ViQ29yZTo6UGxhdGZvcm1F
dmVudDo6QWx0S2V5OworICAgICAgICBpZiAobW9kaWZpZXJzICYgRUNPUkVfRVZFTlRfTU9ESUZJ
RVJfQ1RSTCkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IFdlYkNvcmU6OlBsYXRmb3JtRXZl
bnQ6OkN0cmxLZXk7CisgICAgICAgIGlmIChtb2RpZmllcnMgJiBFQ09SRV9FVkVOVF9NT0RJRklF
Ul9TSElGVCkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IFdlYkNvcmU6OlBsYXRmb3JtRXZl
bnQ6OlNoaWZ0S2V5OworICAgICAgICBpZiAobW9kaWZpZXJzICYgRUNPUkVfRVZFTlRfTU9ESUZJ
RVJfV0lOKQorICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gV2ViQ29yZTo6UGxhdGZvcm1FdmVu
dDo6TWV0YUtleTsKKworICAgICAgICBtX3RpbWVzdGFtcCA9IGN1cnJlbnRUaW1lKCk7CisKKyAg
ICAgICAgY29uc3QgRWluYV9MaXN0KiBsaXN0OworICAgICAgICB2b2lkKiBpdGVtOworICAgICAg
ICBFSU5BX0xJU1RfRk9SRUFDSChwb2ludHMsIGxpc3QsIGl0ZW0pIHsKKyAgICAgICAgICAgIEV3
a19Ub3VjaF9Qb2ludCogcG9pbnQgPSBzdGF0aWNfY2FzdDxFd2tfVG91Y2hfUG9pbnQqPihpdGVt
KTsKKyAgICAgICAgICAgIFdlYkNvcmU6OkludFBvaW50IHBudCA9IFdlYkNvcmU6OkludFBvaW50
KHBvaW50LT54IC0gcG9zLngoKSwgcG9pbnQtPnkgLSBwb3MueSgpKTsKKyAgICAgICAgICAgIG1f
dG91Y2hQb2ludHMuYXBwZW5kKFdlYktpdFBsYXRmb3JtVG91Y2hQb2ludChwb2ludC0+aWQsIHBu
dCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGxhdGZvcm1Ub3VjaFBvaW50OjpTdGF0ZT4ocG9pbnQt
PnN0YXRlKSkpOworICAgICAgICB9CisgICAgfQorfTsKKwogRWluYV9Cb29sIGV3a19mcmFtZV9m
ZWVkX3RvdWNoX2V2ZW50KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdrX1RvdWNoX0V2ZW50X1R5
cGUgYWN0aW9uLCBFaW5hX0xpc3QqIHBvaW50cywgdW5zaWduZWQgbW9kaWZpZXJzKQogewogI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCkBAIC05OTAsMzYgKzEwNDQsNyBAQCBFaW5hX0Jvb2wgZXdr
X2ZyYW1lX2ZlZWRfdG91Y2hfZXZlbnQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFd2tfVG91Y2hf
RXZlbnRfVHlwZQogICAgIEV2YXNfQ29vcmQgeCwgeTsKICAgICBldmFzX29iamVjdF9nZW9tZXRy
eV9nZXQoc21hcnREYXRhLT52aWV3LCAmeCwgJnksIDAsIDApOwogCi0gICAgV2ViQ29yZTo6UGxh
dGZvcm1FdmVudDo6VHlwZSB0eXBlOwotICAgIHN3aXRjaCAoYWN0aW9uKSB7Ci0gICAgY2FzZSBF
V0tfVE9VQ0hfU1RBUlQ6Ci0gICAgICAgIHR5cGUgPSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpU
b3VjaFN0YXJ0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEVXS19UT1VDSF9NT1ZFOgotICAg
ICAgICB0eXBlID0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6VG91Y2hNb3ZlOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEVXS19UT1VDSF9FTkQ6Ci0gICAgICAgIHR5cGUgPSBXZWJDb3JlOjpQ
bGF0Zm9ybUV2ZW50OjpUb3VjaEVuZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFV0tfVE9V
Q0hfQ0FOQ0VMOgotICAgICAgICB0eXBlID0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6VG91Y2hD
YW5jZWw7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgdW5zaWduZWQg
dG91Y2hNb2RpZmllcnMgPSAwOwotICAgIGlmIChtb2RpZmllcnMgJiBFQ09SRV9FVkVOVF9NT0RJ
RklFUl9BTFQpCi0gICAgICAgIHRvdWNoTW9kaWZpZXJzIHw9IFdlYkNvcmU6OlBsYXRmb3JtRXZl
bnQ6OkFsdEtleTsKLSAgICBpZiAobW9kaWZpZXJzICYgRUNPUkVfRVZFTlRfTU9ESUZJRVJfQ1RS
TCkKLSAgICAgICAgdG91Y2hNb2RpZmllcnMgfD0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6Q3Ry
bEtleTsKLSAgICBpZiAobW9kaWZpZXJzICYgRUNPUkVfRVZFTlRfTU9ESUZJRVJfU0hJRlQpCi0g
ICAgICAgIHRvdWNoTW9kaWZpZXJzIHw9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlNoaWZ0S2V5
OwotICAgIGlmIChtb2RpZmllcnMgJiBFQ09SRV9FVkVOVF9NT0RJRklFUl9XSU4pCi0gICAgICAg
IHRvdWNoTW9kaWZpZXJzIHw9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Ok1ldGFLZXk7Ci0KLSAg
ICBXZWJDb3JlOjpQbGF0Zm9ybVRvdWNoRXZlbnQgdG91Y2hFdmVudChwb2ludHMsIFdlYkNvcmU6
OkludFBvaW50KHgsIHkpLCB0eXBlLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50
OjpNb2RpZmllcnM+KHRvdWNoTW9kaWZpZXJzKSk7CisgICAgV2ViS2l0UGxhdGZvcm1Ub3VjaEV2
ZW50IHRvdWNoRXZlbnQocG9pbnRzLCBXZWJDb3JlOjpJbnRQb2ludCh4LCB5KSwgYWN0aW9uLCBt
b2RpZmllcnMpOwogICAgIHJldHVybiBzbWFydERhdGEtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+
aGFuZGxlVG91Y2hFdmVudCh0b3VjaEV2ZW50KTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156894</attachid>
            <date>2012-08-07 01:49:29 -0700</date>
            <delta_ts>2012-08-07 07:17:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93270-20120807174904.patch</filename>
            <type>text/plain</type>
            <size>18139</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0ODU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDliZmQ0ZWRhYmIzNTkz
YzE2MjljZDM2YjQxZDBiZDg5Y2E2YjEyMi4uNmRlMDBmZDI4NmFhMDAxOGQ3Y2IzOTk0MWExNWNi
NmE3MDFmMzA3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA4LTA3ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXSBSZW1vdmUg
UGxhdGZvcm1Ub3VjaEV2ZW50RWZsIGFuZCBQbGF0Zm9ybVRvdWNoUG9pbnRFZmwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzMjcwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGxhdGZvcm1Ub3VjaEV2ZW50
RWZsIGFuZCBQbGF0Zm9ybVRvdWNoUG9pbnRFZmwgaW5pdGlhbGl6ZSBQbGF0Zm9ybVRvdWNoRXZl
bnQKKyAgICAgICAgZGlyZWN0bHkgZnJvbSBFd2tfVG91Y2hFdmVudCB3aGljaCBpcyBXZWJLaXQx
L0VmbCBBUEkgYW5kIHRoZXkgY2FuIG5vdCBiZQorICAgICAgICBzaGFyZWQgd2l0aCBXZWJLaXQy
L0VmbC4KKworICAgICAgICBJbiBvcmRlciB0byByZW1vdmUgdGhpcyBXZWJLaXQgZGVwZW5kZW5j
eSBmcm9tIFdlYkNvcmUsIHRoaXMgcGF0Y2ggcmVtb3ZlcyBFZmwKKyAgICAgICAgc3BlY2lmaWMg
Y29kZXMgZnJvbSBQbGF0Zm9ybVRvdWNoWFhYIGFuZCBhZGRzIHRoZSBjbGFzc2VzIHdoaWNoIGNv
bnZlcnQKKyAgICAgICAgRXdrX1RvdWNoX1hYWCB0byBQbGF0Zm9ybVRvdWNoWFhYLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cy4gSnVzdCBhIHJlZmFjdG9yaW5nLgorCisgICAgICAgICogUGxhdGZv
cm1FZmwuY21ha2U6IFJlbW92ZWQgUGxhdGZvcm1Ub3VjaEV2ZW50RWZsLmNwcCBhbmQgUGxhdGZv
cm1Ub3VjaFBvaW50RWZsLmNwcAorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtVG91Y2hFdmVu
dC5oOiBSZW1vdmVkIEVmbCBzcGVjaWZpYyBjb2Rlcy4KKyAgICAgICAgKFBsYXRmb3JtVG91Y2hF
dmVudCk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50Lmg6IERpdHRvLgor
ICAgICAgICAoUGxhdGZvcm1Ub3VjaFBvaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvUGxh
dGZvcm1Ub3VjaEV2ZW50RWZsLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwv
UGxhdGZvcm1Ub3VjaFBvaW50RWZsLmNwcDogUmVtb3ZlZC4KKwogMjAxMi0wOC0wNiAgU2hlcmlm
ZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjEyNDc4MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTZlZjE0MDZlNjA4ZjJlZWVlZDA1
YjFlYWE5YTQyZjE4ZjBjMjY3OC4uNDM4MDM0NzA2YjgwZWY4NDlkNzkyNDNhZjEwN2Y4MTI3Mzcz
YTFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wOC0wNyAgUnl1YW4gQ2hvaSAg
PHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gUmVtb3ZlIFBsYXRmb3Jt
VG91Y2hFdmVudEVmbCBhbmQgUGxhdGZvcm1Ub3VjaFBvaW50RWZsCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzI3MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IEFkZGVk
IGV3a190b3VjaF9ldmVudC5jcHAKKwogMjAxMi0wOC0wMSAgQW50b25pbyBHb21lcyAgPGFnb21l
c0ByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBJbXBsZW1lbnQgSW5SZWdpb25TY3Jv
bGxlciBjbGFzcyBhcyBhIGluLXJlZ2lvbiBzY3JvbGwgY29udHJvbGxlcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CmluZGV4IDRlMTdhNjNmNjI4NzUyZTM4MmExZjE4MTk2NzdhMmE2N2JiZWE4NTMuLjMxODFjYjQ2
NzczMjAwNjllZDkyMWViNmQ5NjNiOWQyYWRjMWIyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxMi0wOC0wNyAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5j
b20+CisKKyAgICAgICAgW0VGTF0gUmVtb3ZlIFBsYXRmb3JtVG91Y2hFdmVudEVmbCBhbmQgUGxh
dGZvcm1Ub3VjaFBvaW50RWZsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MzI3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6CisgICAgICAgIChld2tfZnJhbWVfZmVlZF90
b3VjaF9ldmVudCk6CisgICAgICAgIFVzZWQgV2ViS2l0UGxhdGZvcm1Ub3VjaEV2ZW50IGluc3Rl
YWQgb2YgUGxhdGZvcm1Ub3VjaEV2ZW50LgorICAgICAgICAqIGV3ay9ld2tfdG91Y2hfZXZlbnQu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdFBsYXRmb3JtVG91Y2hQb2ludCk6CisgICAgICAg
IChXZWJLaXRQbGF0Zm9ybVRvdWNoUG9pbnQ6OldlYktpdFBsYXRmb3JtVG91Y2hQb2ludCk6Cisg
ICAgICAgIEFkZGVkIHRvIGluaXRpYWxpemUgbWVtYmVycyBvZiBQbGF0Zm9ybVRvdWNoUG9pbnQu
CisgICAgICAgIChXZWJLaXRQbGF0Zm9ybVRvdWNoRXZlbnQ6OldlYktpdFBsYXRmb3JtVG91Y2hF
dmVudCk6CisgICAgICAgIEFkZGVkIHRvIGluaXRpYWxpemUgbWVtYmVycyBvZiBQbGF0Zm9ybVRv
dWNoRXZlbnQuCisgICAgICAgICogZXdrL2V3a190b3VjaF9ldmVudC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdFBsYXRmb3JtVG91Y2hFdmVudCk6CisKIDIwMTItMDgtMDYgIE1pa2hhaWwgUG96
ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0g
W0dUS10gUmVnaXN0ZXIgUHJvdG9jb2wgSGFuZGxlciBDbGllbnQgaXMgbmV2ZXIgZGVsZXRlZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBlOGMzMmQ4MzA5MWNjZGM3MThlZmM5NmEzNDZm
MDI1YmM0NWQ0Mjc0Li4wNTNmNWI5ZWMzYmZiNWMzN2I3NWNhZGRmYzE0ODk5ZTU0MmMwY2VhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTQsNyArMTQsNiBAQCBMSVNUKEFQUEVORCBX
ZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL3Rl
eHQvZWZsIgogICAiJHtXRUJDT1JFX0RJUn0vcGx1Z2lucy9lZmwiCiAgICIke1dFQktJVF9ESVJ9
L2VmbC9XZWJDb3JlU3VwcG9ydCIKLSAgIiR7V0VCS0lUX0RJUn0vZWZsL2V3ayIKICkKIAogTElT
VChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCkBAIC00Nyw4ICs0Niw2IEBAIExJU1QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUwogICBwbGF0Zm9ybS9lZmwvUGxhdGZvcm1LZXlib2FyZEV2ZW50RWZsLmNw
cAogICBwbGF0Zm9ybS9lZmwvUGxhdGZvcm1Nb3VzZUV2ZW50RWZsLmNwcAogICBwbGF0Zm9ybS9l
ZmwvUGxhdGZvcm1TY3JlZW5FZmwuY3BwCi0gIHBsYXRmb3JtL2VmbC9QbGF0Zm9ybVRvdWNoRXZl
bnRFZmwuY3BwCi0gIHBsYXRmb3JtL2VmbC9QbGF0Zm9ybVRvdWNoUG9pbnRFZmwuY3BwCiAgIHBs
YXRmb3JtL2VmbC9QbGF0Zm9ybVdoZWVsRXZlbnRFZmwuY3BwCiAgIHBsYXRmb3JtL2VmbC9Qb3B1
cE1lbnVFZmwuY3BwCiAgIHBsYXRmb3JtL2VmbC9SZWZQdHJFZmwuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoRXZlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtVG91Y2hFdmVudC5oCmluZGV4IGRiZmVjMjJkYTQ2OTMwYTI4
YTFlMDQ4Zjc0M2JmNzM1NWU2N2ZjNzUuLjg3ODRkYTU4N2I0MDI4OGI4YTc3YzgxNzU5MjZkNzUy
NTEzYjEwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtVG91
Y2hFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtVG91Y2hFdmVu
dC5oCkBAIC0zMiwxMCArMzIsNiBAQCBjbGFzcyBRVG91Y2hFdmVudDsKIFFUX0VORF9OQU1FU1BB
Q0UKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oRUZMKQotdHlwZWRlZiBzdHJ1Y3QgX0VpbmFfTGlz
dCBFaW5hX0xpc3Q7Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCiBuYW1lc3Bh
Y2UgQmxhY2tCZXJyeSB7CiBuYW1lc3BhY2UgUGxhdGZvcm0gewpAQCAtNjAsOSArNTYsNyBAQCBw
dWJsaWM6CiAgICAgewogICAgIH0KIAotI2lmIFBMQVRGT1JNKEVGTCkKLSAgICBQbGF0Zm9ybVRv
dWNoRXZlbnQoY29uc3QgRWluYV9MaXN0KiwgY29uc3QgSW50UG9pbnQsIFBsYXRmb3JtRXZlbnQ6
OlR5cGUsIFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVycyk7Ci0jZWxpZiBQTEFURk9STShCTEFDS0JF
UlJZKQorI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCiAgICAgZXhwbGljaXQgUGxhdGZvcm1Ub3Vj
aEV2ZW50KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpUb3VjaEV2ZW50Kik7CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoUG9pbnQuaAppbmRleCAwYjY1MTQw
NzNhMDc4NTg3ZjFmYjcwN2Q3M2RmMzA5ZjhmZDRhMTNlLi5lYjQyMDE1MDc4YjNkNGE3OWMzOTgw
MzFiYmFmNDgzYjVjMzI4MGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVRvdWNoUG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVRvdWNoUG9pbnQuaApAQCAtNjIsOSArNjIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAot
I2lmIFBMQVRGT1JNKEVGTCkKLSAgICBQbGF0Zm9ybVRvdWNoUG9pbnQodW5zaWduZWQgaWQsIGNv
bnN0IEludFBvaW50JiB3aW5kb3dQb3MsIFN0YXRlKTsKLSNlbGlmIFBMQVRGT1JNKEJMQUNLQkVS
UlkpCisjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKICAgICBQbGF0Zm9ybVRvdWNoUG9pbnQoY29u
c3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlRvdWNoUG9pbnQmKTsKICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1Ub3VjaEV2ZW50RWZsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVRvdWNoRXZlbnRFZmwuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MTMxNmQyN2Q3MzRmNDgyZjA3NTFjMjZj
MmNiOTE3N2VjNmU0NWYxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVRvdWNoRXZlbnRFZmwu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVRvdWNoRXZl
bnQuaCIKLQotI2luY2x1ZGUgImV3a19mcmFtZS5oIgotI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgotCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1QbGF0Zm9ybVRvdWNoRXZlbnQ6OlBsYXRmb3JtVG91Y2hFdmVudChjb25zdCBFaW5hX0xpc3Qq
IHBvaW50cywgY29uc3QgSW50UG9pbnQgcG9zLCBQbGF0Zm9ybUV2ZW50OjpUeXBlIHR5cGUsIFBs
YXRmb3JtRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMpCi0gICAgOiBQbGF0Zm9ybUV2ZW50KHR5
cGUsIG1vZGlmaWVycywgY3VycmVudFRpbWUoKSkKLXsKLSAgICBjb25zdCBFaW5hX0xpc3QqIGxp
c3Q7Ci0gICAgdm9pZCogaXRlbTsKLQotICAgIEVJTkFfTElTVF9GT1JFQUNIKHBvaW50cywgbGlz
dCwgaXRlbSkgewotICAgICAgICBFd2tfVG91Y2hfUG9pbnQqIHBvaW50ID0gc3RhdGljX2Nhc3Q8
RXdrX1RvdWNoX1BvaW50Kj4oaXRlbSk7Ci0gICAgICAgIEludFBvaW50IHBudCA9IEludFBvaW50
KHBvaW50LT54IC0gcG9zLngoKSwgcG9pbnQtPnkgLSBwb3MueSgpKTsKLSAgICAgICAgbV90b3Vj
aFBvaW50cy5hcHBlbmQoUGxhdGZvcm1Ub3VjaFBvaW50KHBvaW50LT5pZCwgcG50LCBzdGF0aWNf
Y2FzdDxQbGF0Zm9ybVRvdWNoUG9pbnQ6OlN0YXRlPihwb2ludC0+c3RhdGUpKSk7Ci0gICAgfQot
fQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZs
L1BsYXRmb3JtVG91Y2hQb2ludEVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
UGxhdGZvcm1Ub3VjaFBvaW50RWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YjE4MWY2ODcyOTc3N2UxM2M3MGE3MmM4MmVkYjkwNGFkYzQyYjdiZS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvUGxhdGZvcm1Ub3VjaFBvaW50RWZsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0g
KgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiUGxhdGZvcm1Ub3VjaFBvaW50LmgiCi0KLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBsYXRmb3JtVG91Y2hQb2ludDo6UGxhdGZvcm1U
b3VjaFBvaW50KHVuc2lnbmVkIGlkLCBjb25zdCBJbnRQb2ludCYgd2luZG93UG9zLCBTdGF0ZSBz
dGF0ZSkKLSAgICA6IG1faWQoaWQpCi0gICAgLCBtX3N0YXRlKHN0YXRlKQotICAgICwgbV9zY3Jl
ZW5Qb3Mod2luZG93UG9zKQotICAgICwgbV9wb3Mod2luZG93UG9zKSB7IH0KLQotfQotCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGE3MDA1MjI4ZjU1NmRhYWY2NmIyMjg3ZmVi
NTZhOTM5ZmQ4OTMxMTguLmI1ZWQxYmFmZjg0NDYyNTVmNTUyOTNjZDBjYmM4ZTNjM2IzMDM5YjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTM2LDYgKzEzNiw3IEBAIExJU1QoQVBQRU5E
IFdlYktpdF9TT1VSQ0VTCiAgICAgZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHAK
ICAgICBlZmwvZXdrL2V3a190aWxlZF9tYXRyaXguY3BwCiAgICAgZWZsL2V3ay9ld2tfdGlsZWRf
bW9kZWwuY3BwCisgICAgZWZsL2V3ay9ld2tfdG91Y2hfZXZlbnQuY3BwCiAgICAgZWZsL2V3ay9l
d2tfdXRpbC5jcHAKICAgICBlZmwvZXdrL2V3a192aWV3LmNwcAogICAgIGVmbC9ld2svZXdrX3Zp
ZXdfc2luZ2xlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAppbmRleCBmYmE0NjBl
YzAyNDgzNDIwY2Q5NjgyNjg2NjM5ZDcxOTg3YjU3YTc3Li5hZWRlMzJmMjU2ODNlODYxY2U0MDJi
NDU1MmE4YjRjNjg0YzNiNWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X2ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcApAQCAt
NTcsNiArNTcsNyBAQAogI2luY2x1ZGUgImV3a19pbnRlbnRfcHJpdmF0ZS5oIgogI2luY2x1ZGUg
ImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3NlY3VyaXR5X29yaWdpbl9wcml2YXRlLmgi
CisjaW5jbHVkZSAiZXdrX3RvdWNoX2V2ZW50LmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0
ZS5oIgogI2luY2x1ZGUgPEVjb3JlX0lucHV0Lmg+CiAjaW5jbHVkZSA8RWluYS5oPgpAQCAtOTkw
LDM2ICs5OTEsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfdG91Y2hfZXZlbnQoRXZhc19P
YmplY3QqIGV3a0ZyYW1lLCBFd2tfVG91Y2hfRXZlbnRfVHlwZQogICAgIEV2YXNfQ29vcmQgeCwg
eTsKICAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQoc21hcnREYXRhLT52aWV3LCAmeCwgJnks
IDAsIDApOwogCi0gICAgV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6VHlwZSB0eXBlOwotICAgIHN3
aXRjaCAoYWN0aW9uKSB7Ci0gICAgY2FzZSBFV0tfVE9VQ0hfU1RBUlQ6Ci0gICAgICAgIHR5cGUg
PSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaFN0YXJ0OwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEVXS19UT1VDSF9NT1ZFOgotICAgICAgICB0eXBlID0gV2ViQ29yZTo6UGxhdGZvcm1F
dmVudDo6VG91Y2hNb3ZlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEVXS19UT1VDSF9FTkQ6
Ci0gICAgICAgIHR5cGUgPSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaEVuZDsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBFV0tfVE9VQ0hfQ0FOQ0VMOgotICAgICAgICB0eXBlID0gV2Vi
Q29yZTo6UGxhdGZvcm1FdmVudDo6VG91Y2hDYW5jZWw7Ci0gICAgICAgIGJyZWFrOwotICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgdG91Y2hNb2RpZmllcnMgPSAwOwotICAgIGlmICht
b2RpZmllcnMgJiBFQ09SRV9FVkVOVF9NT0RJRklFUl9BTFQpCi0gICAgICAgIHRvdWNoTW9kaWZp
ZXJzIHw9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OkFsdEtleTsKLSAgICBpZiAobW9kaWZpZXJz
ICYgRUNPUkVfRVZFTlRfTU9ESUZJRVJfQ1RSTCkKLSAgICAgICAgdG91Y2hNb2RpZmllcnMgfD0g
V2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6Q3RybEtleTsKLSAgICBpZiAobW9kaWZpZXJzICYgRUNP
UkVfRVZFTlRfTU9ESUZJRVJfU0hJRlQpCi0gICAgICAgIHRvdWNoTW9kaWZpZXJzIHw9IFdlYkNv
cmU6OlBsYXRmb3JtRXZlbnQ6OlNoaWZ0S2V5OwotICAgIGlmIChtb2RpZmllcnMgJiBFQ09SRV9F
VkVOVF9NT0RJRklFUl9XSU4pCi0gICAgICAgIHRvdWNoTW9kaWZpZXJzIHw9IFdlYkNvcmU6OlBs
YXRmb3JtRXZlbnQ6Ok1ldGFLZXk7Ci0KLSAgICBXZWJDb3JlOjpQbGF0Zm9ybVRvdWNoRXZlbnQg
dG91Y2hFdmVudChwb2ludHMsIFdlYkNvcmU6OkludFBvaW50KHgsIHkpLCB0eXBlLCBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcnM+KHRvdWNoTW9kaWZpZXJzKSk7
CisgICAgV2ViS2l0UGxhdGZvcm1Ub3VjaEV2ZW50IHRvdWNoRXZlbnQocG9pbnRzLCBXZWJDb3Jl
OjpJbnRQb2ludCh4LCB5KSwgYWN0aW9uLCBtb2RpZmllcnMpOwogICAgIHJldHVybiBzbWFydERh
dGEtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlVG91Y2hFdmVudCh0b3VjaEV2ZW50KTsK
ICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a190b3VjaF9ldmVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RvdWNo
X2V2ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NzUxYTUzZDY0MDEwMTA3OTQzZGYzZTk1NDMwZWIzYTU5
OGJhNzk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190b3Vj
aF9ldmVudC5jcHAKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBT
YW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
ImV3a190b3VjaF9ldmVudC5oIgorCisjaW5jbHVkZSAiUGxhdGZvcm1Ub3VjaFBvaW50LmgiCisj
aW5jbHVkZSA8RWNvcmVfSW5wdXQuaD4KKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKwor
Y2xhc3MgV2ViS2l0UGxhdGZvcm1Ub3VjaFBvaW50IDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3Jt
VG91Y2hQb2ludCB7CitwdWJsaWM6CisgICAgV2ViS2l0UGxhdGZvcm1Ub3VjaFBvaW50KHVuc2ln
bmVkIGlkLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgd2luZG93UG9zLCBXZWJDb3JlOjpQbGF0
Zm9ybVRvdWNoUG9pbnQ6OlN0YXRlIHN0YXRlKQorICAgIHsKKyAgICAgICAgbV9pZCA9IGlkOwor
ICAgICAgICBtX3N0YXRlID0gc3RhdGU7CisgICAgICAgIG1fc2NyZWVuUG9zID0gd2luZG93UG9z
OworICAgICAgICBtX3BvcyA9IHdpbmRvd1BvczsKKyAgICB9Cit9OworCitXZWJLaXRQbGF0Zm9y
bVRvdWNoRXZlbnQ6OldlYktpdFBsYXRmb3JtVG91Y2hFdmVudChjb25zdCBFaW5hX0xpc3QqIHBv
aW50cywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvcywgRXdrX1RvdWNoX0V2ZW50X1R5cGUg
YWN0aW9uLCB1bnNpZ25lZCBtb2RpZmllcnMpCit7CisgICAgc3dpdGNoIChhY3Rpb24pIHsKKyAg
ICBjYXNlIEVXS19UT1VDSF9TVEFSVDoKKyAgICAgICAgbV90eXBlID0gV2ViQ29yZTo6UGxhdGZv
cm1FdmVudDo6VG91Y2hTdGFydDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFV0tfVE9VQ0hf
TU9WRToKKyAgICAgICAgbV90eXBlID0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6VG91Y2hNb3Zl
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEVXS19UT1VDSF9FTkQ6CisgICAgICAgIG1fdHlw
ZSA9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlRvdWNoRW5kOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEVXS19UT1VDSF9DQU5DRUw6CisgICAgICAgIG1fdHlwZSA9IFdlYkNvcmU6OlBsYXRm
b3JtRXZlbnQ6OlRvdWNoQ2FuY2VsOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
aWYgKG1vZGlmaWVycyAmIEVDT1JFX0VWRU5UX01PRElGSUVSX0FMVCkKKyAgICAgICAgbV9tb2Rp
ZmllcnMgfD0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6QWx0S2V5OworICAgIGlmIChtb2RpZmll
cnMgJiBFQ09SRV9FVkVOVF9NT0RJRklFUl9DVFJMKQorICAgICAgICBtX21vZGlmaWVycyB8PSBX
ZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpDdHJsS2V5OworICAgIGlmIChtb2RpZmllcnMgJiBFQ09S
RV9FVkVOVF9NT0RJRklFUl9TSElGVCkKKyAgICAgICAgbV9tb2RpZmllcnMgfD0gV2ViQ29yZTo6
UGxhdGZvcm1FdmVudDo6U2hpZnRLZXk7CisgICAgaWYgKG1vZGlmaWVycyAmIEVDT1JFX0VWRU5U
X01PRElGSUVSX1dJTikKKyAgICAgICAgbV9tb2RpZmllcnMgfD0gV2ViQ29yZTo6UGxhdGZvcm1F
dmVudDo6TWV0YUtleTsKKworICAgIG1fdGltZXN0YW1wID0gY3VycmVudFRpbWUoKTsKKworICAg
IGNvbnN0IEVpbmFfTGlzdCogbGlzdDsKKyAgICB2b2lkKiBpdGVtOworICAgIEVJTkFfTElTVF9G
T1JFQUNIKHBvaW50cywgbGlzdCwgaXRlbSkgeworICAgICAgICBFd2tfVG91Y2hfUG9pbnQqIHBv
aW50ID0gc3RhdGljX2Nhc3Q8RXdrX1RvdWNoX1BvaW50Kj4oaXRlbSk7CisgICAgICAgIFdlYkNv
cmU6OkludFBvaW50IHBudCA9IFdlYkNvcmU6OkludFBvaW50KHBvaW50LT54IC0gcG9zLngoKSwg
cG9pbnQtPnkgLSBwb3MueSgpKTsKKyAgICAgICAgbV90b3VjaFBvaW50cy5hcHBlbmQoV2ViS2l0
UGxhdGZvcm1Ub3VjaFBvaW50KHBvaW50LT5pZCwgcG50LCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpQ
bGF0Zm9ybVRvdWNoUG9pbnQ6OlN0YXRlPihwb2ludC0+c3RhdGUpKSk7CisgICAgfQorfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190b3VjaF9ldmVudC5oIGIvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a190b3VjaF9ldmVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmMzEzOGFhNjdk
MTllZDYxOGRlZjE2YmFkOWI2Y2NlZDc0MTlkYzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3RvdWNoX2V2ZW50LmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBl
d2tfdG91Y2hfZXZlbnRfaAorI2RlZmluZSBld2tfdG91Y2hfZXZlbnRfaAorCisjaW5jbHVkZSAi
UGxhdGZvcm1Ub3VjaEV2ZW50LmgiCisjaW5jbHVkZSAiZXdrX2ZyYW1lLmgiCisKK2NsYXNzIFdl
YktpdFBsYXRmb3JtVG91Y2hFdmVudCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVRvdWNoRXZl
bnQgeworcHVibGljOgorICAgIFdlYktpdFBsYXRmb3JtVG91Y2hFdmVudChjb25zdCBFaW5hX0xp
c3QqIHBvaW50cywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvcywgRXdrX1RvdWNoX0V2ZW50
X1R5cGUgYWN0aW9uLCB1bnNpZ25lZCBtb2RpZmllcnMpOworfTsKKworI2VuZGlmIC8vIGV3a190
b3VjaF9ldmVudF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156935</attachid>
            <date>2012-08-07 07:18:03 -0700</date>
            <delta_ts>2012-08-07 16:52:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93270-20120807231737.patch</filename>
            <type>text/plain</type>
            <size>18804</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0ODc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTQzN2Q1NmYwZWE2NWMw
NzBhY2IxZDBkMDMzMmVlN2IxMTVjYzdmMy4uOTM2ZmMxMjRjY2EwZDc0ZDYzNTI1MzZiOTc5MDhj
NDExN2YyNGIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA4LTA3ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXSBSZW1vdmUg
UGxhdGZvcm1Ub3VjaEV2ZW50RWZsIGFuZCBQbGF0Zm9ybVRvdWNoUG9pbnRFZmwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzMjcwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGxhdGZvcm1Ub3VjaEV2ZW50
RWZsIGFuZCBQbGF0Zm9ybVRvdWNoUG9pbnRFZmwgaW5pdGlhbGl6ZSBQbGF0Zm9ybVRvdWNoRXZl
bnQKKyAgICAgICAgZGlyZWN0bHkgZnJvbSBFd2tfVG91Y2hFdmVudCB3aGljaCBpcyBXZWJLaXQx
L0VmbCBBUEkgYW5kIHRoZXkgY2FuIG5vdCBiZQorICAgICAgICBzaGFyZWQgd2l0aCBXZWJLaXQy
L0VmbC4KKworICAgICAgICBJbiBvcmRlciB0byByZW1vdmUgdGhpcyBXZWJLaXQgZGVwZW5kZW5j
eSBmcm9tIFdlYkNvcmUsIHRoaXMgcGF0Y2ggcmVtb3ZlcyBFZmwKKyAgICAgICAgc3BlY2lmaWMg
Y29kZXMgZnJvbSBQbGF0Zm9ybVRvdWNoWFhYIGFuZCBhZGRzIHRoZSBjbGFzc2VzIHdoaWNoIGNv
bnZlcnQKKyAgICAgICAgRXdrX1RvdWNoX1hYWCB0byBQbGF0Zm9ybVRvdWNoWFhYLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cy4gSnVzdCBhIHJlZmFjdG9yaW5nLgorCisgICAgICAgICogUGxhdGZv
cm1FZmwuY21ha2U6IFJlbW92ZWQgUGxhdGZvcm1Ub3VjaEV2ZW50RWZsLmNwcCBhbmQgUGxhdGZv
cm1Ub3VjaFBvaW50RWZsLmNwcAorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtVG91Y2hFdmVu
dC5oOiBSZW1vdmVkIEVmbCBzcGVjaWZpYyBjb2Rlcy4KKyAgICAgICAgKFBsYXRmb3JtVG91Y2hF
dmVudCk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50Lmg6IERpdHRvLgor
ICAgICAgICAoUGxhdGZvcm1Ub3VjaFBvaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvUGxh
dGZvcm1Ub3VjaEV2ZW50RWZsLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwv
UGxhdGZvcm1Ub3VjaFBvaW50RWZsLmNwcDogUmVtb3ZlZC4KKwogMjAxMi0wOC0wNiAgQW5kcmV5
IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IGltcGxlbWVudCByZXVzYWJsZSBwcm9ncmVzcyBiYXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNjFjNDAyMTE0MzRm
YTQ0NzJhMzUzOTc3NGQ3NjRlNWJhMTUwYWYwZC4uOWI3MGI3Y2Y4MWRkZjA1NTcwMDQxMjM0OWU1
ZjUyZWEwOWRiNmI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wOC0wNyAgUnl1
YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gUmVtb3Zl
IFBsYXRmb3JtVG91Y2hFdmVudEVmbCBhbmQgUGxhdGZvcm1Ub3VjaFBvaW50RWZsCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzI3MAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21h
a2U6IEFkZGVkIGV3a190b3VjaF9ldmVudC5jcHAKKwogMjAxMi0wOC0wNyAgTWlraGFpbCBQb3pk
bnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4KIAogICAgICAgICBDVVNUT01f
U0NIRU1FX0hBTkRMRVIgZmxhZyBzaG91bGQgZGVwZW5kIG9uIFJFR0lTVEVSX1BST1RPQ09MX0hB
TkRMRVIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCA4NDgwYTk5NGNkMDM4NzEzMTQ5YzQ3MDNjYzY2ODhk
NWVkOGNkMjNkLi5iODAwNGFmMzRkZDdiN2VlMzgzZjRhNzgwZmNhY2Q1YTY5YTMzMDA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMDgtMDcgIFJ5dWFuIENob2kgIDxy
eXVhbi5jaG9pQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdIFJlbW92ZSBQbGF0Zm9ybVRv
dWNoRXZlbnRFZmwgYW5kIFBsYXRmb3JtVG91Y2hQb2ludEVmbAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTMyNzAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgorICAgICAg
ICAoZXdrX2ZyYW1lX2ZlZWRfdG91Y2hfZXZlbnQpOgorICAgICAgICAqIGV3ay9ld2tfdG91Y2hf
ZXZlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdFBsYXRmb3JtVG91Y2hQb2ludCk6Cisg
ICAgICAgIChXZWJLaXRQbGF0Zm9ybVRvdWNoUG9pbnQ6OldlYktpdFBsYXRmb3JtVG91Y2hQb2lu
dCk6CisgICAgICAgIEFkZGVkIHRvIGluaXRpYWxpemUgbWVtYmVycyBvZiBQbGF0Zm9ybVRvdWNo
UG9pbnQuCisgICAgICAgIChXZWJLaXRQbGF0Zm9ybVRvdWNoRXZlbnQpOgorICAgICAgICAoV2Vi
S2l0UGxhdGZvcm1Ub3VjaEV2ZW50OjpXZWJLaXRQbGF0Zm9ybVRvdWNoRXZlbnQpOgorICAgICAg
ICBBZGRlZCB0byBpbml0aWFsaXplIG1lbWJlcnMgb2YgUGxhdGZvcm1Ub3VjaEV2ZW50LgorICAg
ICAgICAoRVdLUHJpdmF0ZSk6CisgICAgICAgIChFV0tQcml2YXRlOjpwbGF0Zm9ybVRvdWNoRXZl
bnQpOgorICAgICAgICBDb252ZXJ0ZWQgRXdrX1RvdWNoX0V2ZW50IHRvIFBsYXRmb3JtVG91Y2hF
dmVudC4KKyAgICAgICAgKiBld2svZXdrX3RvdWNoX2V2ZW50X3ByaXZhdGUuaDogCisgICAgICAg
IChFV0tQcml2YXRlKToKKwogMjAxMi0wOC0wNyAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFp
bC5wb3pkbnlha292QGludGVsLmNvbT4KIAogICAgICAgICBDVVNUT01fU0NIRU1FX0hBTkRMRVIg
ZmxhZyBzaG91bGQgZGVwZW5kIG9uIFJFR0lTVEVSX1BST1RPQ09MX0hBTkRMRVIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1FZmwuY21ha2UKaW5kZXggZThjMzJkODMwOTFjY2RjNzE4ZWZjOTZhMzQ2ZjAyNWJjNDVk
NDI3NC4uMDUzZjViOWVjM2JmYjVjMzdiNzVjYWRkZmMxNDg5OWU1NDJjMGNlYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1FZmwuY21ha2UKQEAgLTE0LDcgKzE0LDYgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9J
TkNMVURFX0RJUkVDVE9SSUVTCiAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS90ZXh0L2VmbCIK
ICAgIiR7V0VCQ09SRV9ESVJ9L3BsdWdpbnMvZWZsIgogICAiJHtXRUJLSVRfRElSfS9lZmwvV2Vi
Q29yZVN1cHBvcnQiCi0gICIke1dFQktJVF9ESVJ9L2VmbC9ld2siCiApCiAKIExJU1QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUwpAQCAtNDcsOCArNDYsNiBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMKICAgcGxhdGZvcm0vZWZsL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEVmbC5jcHAKICAgcGxh
dGZvcm0vZWZsL1BsYXRmb3JtTW91c2VFdmVudEVmbC5jcHAKICAgcGxhdGZvcm0vZWZsL1BsYXRm
b3JtU2NyZWVuRWZsLmNwcAotICBwbGF0Zm9ybS9lZmwvUGxhdGZvcm1Ub3VjaEV2ZW50RWZsLmNw
cAotICBwbGF0Zm9ybS9lZmwvUGxhdGZvcm1Ub3VjaFBvaW50RWZsLmNwcAogICBwbGF0Zm9ybS9l
ZmwvUGxhdGZvcm1XaGVlbEV2ZW50RWZsLmNwcAogICBwbGF0Zm9ybS9lZmwvUG9wdXBNZW51RWZs
LmNwcAogICBwbGF0Zm9ybS9lZmwvUmVmUHRyRWZsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVRvdWNoRXZlbnQuaAppbmRleCBkYmZlYzIyZGE0NjkzMGEyOGExZTA0OGY3
NDNiZjczNTVlNjdmYzc1Li44Nzg0ZGE1ODdiNDAyODhiOGE3N2M4MTc1OTI2ZDc1MjUxM2IxMDhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoRXZlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoRXZlbnQuaApAQCAt
MzIsMTAgKzMyLDYgQEAgY2xhc3MgUVRvdWNoRXZlbnQ7CiBRVF9FTkRfTkFNRVNQQUNFCiAjZW5k
aWYKIAotI2lmIFBMQVRGT1JNKEVGTCkKLXR5cGVkZWYgc3RydWN0IF9FaW5hX0xpc3QgRWluYV9M
aXN0OwotI2VuZGlmCi0KICNpZiBQTEFURk9STShCTEFDS0JFUlJZKQogbmFtZXNwYWNlIEJsYWNr
QmVycnkgewogbmFtZXNwYWNlIFBsYXRmb3JtIHsKQEAgLTYwLDkgKzU2LDcgQEAgcHVibGljOgog
ICAgIHsKICAgICB9CiAKLSNpZiBQTEFURk9STShFRkwpCi0gICAgUGxhdGZvcm1Ub3VjaEV2ZW50
KGNvbnN0IEVpbmFfTGlzdCosIGNvbnN0IEludFBvaW50LCBQbGF0Zm9ybUV2ZW50OjpUeXBlLCBQ
bGF0Zm9ybUV2ZW50OjpNb2RpZmllcnMpOwotI2VsaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKKyNp
ZiBQTEFURk9STShCTEFDS0JFUlJZKQogICAgIGV4cGxpY2l0IFBsYXRmb3JtVG91Y2hFdmVudChC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6VG91Y2hFdmVudCopOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtVG91Y2hQb2ludC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50LmgKaW5kZXggMGI2NTE0MDczYTA3ODU4
N2YxZmI3MDdkNzNkZjMwOWY4ZmQ0YTEzZS4uZWI0MjAxNTA3OGIzZDRhNzljMzk4MDMxYmJhZjQ4
M2I1YzMyODBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1U
b3VjaFBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBv
aW50LmgKQEAgLTYyLDkgKzYyLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSNpZiBQTEFU
Rk9STShFRkwpCi0gICAgUGxhdGZvcm1Ub3VjaFBvaW50KHVuc2lnbmVkIGlkLCBjb25zdCBJbnRQ
b2ludCYgd2luZG93UG9zLCBTdGF0ZSk7Ci0jZWxpZiBQTEFURk9STShCTEFDS0JFUlJZKQorI2lm
IFBMQVRGT1JNKEJMQUNLQkVSUlkpCiAgICAgUGxhdGZvcm1Ub3VjaFBvaW50KGNvbnN0IEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpUb3VjaFBvaW50Jik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtVG91Y2hFdmVudEVmbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1Ub3VjaEV2ZW50RWZsLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjEzMTZkMjdkNzM0ZjQ4MmYwNzUxYzI2YzJjYjkxNzdl
YzZlNDVmMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1Ub3VjaEV2ZW50RWZsLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAx
MCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1Ub3VjaEV2ZW50LmgiCi0K
LSNpbmNsdWRlICJld2tfZnJhbWUuaCIKLSNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KLQot
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUGxhdGZv
cm1Ub3VjaEV2ZW50OjpQbGF0Zm9ybVRvdWNoRXZlbnQoY29uc3QgRWluYV9MaXN0KiBwb2ludHMs
IGNvbnN0IEludFBvaW50IHBvcywgUGxhdGZvcm1FdmVudDo6VHlwZSB0eXBlLCBQbGF0Zm9ybUV2
ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzKQotICAgIDogUGxhdGZvcm1FdmVudCh0eXBlLCBtb2Rp
ZmllcnMsIGN1cnJlbnRUaW1lKCkpCi17Ci0gICAgY29uc3QgRWluYV9MaXN0KiBsaXN0OwotICAg
IHZvaWQqIGl0ZW07Ci0KLSAgICBFSU5BX0xJU1RfRk9SRUFDSChwb2ludHMsIGxpc3QsIGl0ZW0p
IHsKLSAgICAgICAgRXdrX1RvdWNoX1BvaW50KiBwb2ludCA9IHN0YXRpY19jYXN0PEV3a19Ub3Vj
aF9Qb2ludCo+KGl0ZW0pOwotICAgICAgICBJbnRQb2ludCBwbnQgPSBJbnRQb2ludChwb2ludC0+
eCAtIHBvcy54KCksIHBvaW50LT55IC0gcG9zLnkoKSk7Ci0gICAgICAgIG1fdG91Y2hQb2ludHMu
YXBwZW5kKFBsYXRmb3JtVG91Y2hQb2ludChwb2ludC0+aWQsIHBudCwgc3RhdGljX2Nhc3Q8UGxh
dGZvcm1Ub3VjaFBvaW50OjpTdGF0ZT4ocG9pbnQtPnN0YXRlKSkpOwotICAgIH0KLX0KLQotfQot
Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9y
bVRvdWNoUG9pbnRFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3Jt
VG91Y2hQb2ludEVmbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxODFmNjg3
Mjk3NzdlMTNjNzBhNzJjODJlZGI5MDRhZGM0MmI3YmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRm
b3JtVG91Y2hQb2ludEVmbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcwotICoKLSAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlBsYXRmb3JtVG91Y2hQb2ludC5oIgotCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1QbGF0Zm9ybVRvdWNoUG9pbnQ6OlBsYXRmb3JtVG91Y2hQb2lu
dCh1bnNpZ25lZCBpZCwgY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvcywgU3RhdGUgc3RhdGUpCi0g
ICAgOiBtX2lkKGlkKQotICAgICwgbV9zdGF0ZShzdGF0ZSkKLSAgICAsIG1fc2NyZWVuUG9zKHdp
bmRvd1BvcykKLSAgICAsIG1fcG9zKHdpbmRvd1BvcykgeyB9Ci0KLX0KLQotI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybUVmbC5jbWFrZQppbmRleCA2MDFiMmRkMDNkZGY3OGUwMDJmNWEwODE2NGZmZTExYjRm
OGMzYjJlLi4xNzA2Y2RhM2FkNDYwMDNjMGRlY2FhZjViNTU3NzdiMTc1ZmIwZDRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm1FZmwuY21ha2UKQEAgLTEzNiw2ICsxMzYsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXRf
U09VUkNFUwogICAgIGVmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwCiAgICAgZWZs
L2V3ay9ld2tfdGlsZWRfbWF0cml4LmNwcAogICAgIGVmbC9ld2svZXdrX3RpbGVkX21vZGVsLmNw
cAorICAgIGVmbC9ld2svZXdrX3RvdWNoX2V2ZW50LmNwcAogICAgIGVmbC9ld2svZXdrX3V0aWwu
Y3BwCiAgICAgZWZsL2V3ay9ld2tfdmlldy5jcHAKICAgICBlZmwvZXdrL2V3a192aWV3X3Npbmds
ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwIGIv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKaW5kZXggZmJhNDYwZWMwMjQ4MzQy
MGNkOTY4MjY4NjYzOWQ3MTk4N2I1N2E3Ny4uZThmZWM2ZDYzMTczNjhkYTYxZTZkNTMxNDc5Mzgw
OWE2NjFmZDM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKQEAgLTU3LDYgKzU3
LDcgQEAKICNpbmNsdWRlICJld2tfaW50ZW50X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfcHJp
dmF0ZS5oIgogI2luY2x1ZGUgImV3a19zZWN1cml0eV9vcmlnaW5fcHJpdmF0ZS5oIgorI2luY2x1
ZGUgImV3a190b3VjaF9ldmVudF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0
ZS5oIgogI2luY2x1ZGUgPEVjb3JlX0lucHV0Lmg+CiAjaW5jbHVkZSA8RWluYS5oPgpAQCAtOTkw
LDM3ICs5OTEsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfdG91Y2hfZXZlbnQoRXZhc19P
YmplY3QqIGV3a0ZyYW1lLCBFd2tfVG91Y2hfRXZlbnRfVHlwZQogICAgIEV2YXNfQ29vcmQgeCwg
eTsKICAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQoc21hcnREYXRhLT52aWV3LCAmeCwgJnks
IDAsIDApOwogCi0gICAgV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6VHlwZSB0eXBlOwotICAgIHN3
aXRjaCAoYWN0aW9uKSB7Ci0gICAgY2FzZSBFV0tfVE9VQ0hfU1RBUlQ6Ci0gICAgICAgIHR5cGUg
PSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaFN0YXJ0OwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEVXS19UT1VDSF9NT1ZFOgotICAgICAgICB0eXBlID0gV2ViQ29yZTo6UGxhdGZvcm1F
dmVudDo6VG91Y2hNb3ZlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEVXS19UT1VDSF9FTkQ6
Ci0gICAgICAgIHR5cGUgPSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaEVuZDsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBFV0tfVE9VQ0hfQ0FOQ0VMOgotICAgICAgICB0eXBlID0gV2Vi
Q29yZTo6UGxhdGZvcm1FdmVudDo6VG91Y2hDYW5jZWw7Ci0gICAgICAgIGJyZWFrOwotICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgdG91Y2hNb2RpZmllcnMgPSAwOwotICAgIGlmICht
b2RpZmllcnMgJiBFQ09SRV9FVkVOVF9NT0RJRklFUl9BTFQpCi0gICAgICAgIHRvdWNoTW9kaWZp
ZXJzIHw9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OkFsdEtleTsKLSAgICBpZiAobW9kaWZpZXJz
ICYgRUNPUkVfRVZFTlRfTU9ESUZJRVJfQ1RSTCkKLSAgICAgICAgdG91Y2hNb2RpZmllcnMgfD0g
V2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6Q3RybEtleTsKLSAgICBpZiAobW9kaWZpZXJzICYgRUNP
UkVfRVZFTlRfTU9ESUZJRVJfU0hJRlQpCi0gICAgICAgIHRvdWNoTW9kaWZpZXJzIHw9IFdlYkNv
cmU6OlBsYXRmb3JtRXZlbnQ6OlNoaWZ0S2V5OwotICAgIGlmIChtb2RpZmllcnMgJiBFQ09SRV9F
VkVOVF9NT0RJRklFUl9XSU4pCi0gICAgICAgIHRvdWNoTW9kaWZpZXJzIHw9IFdlYkNvcmU6OlBs
YXRmb3JtRXZlbnQ6Ok1ldGFLZXk7Ci0KLSAgICBXZWJDb3JlOjpQbGF0Zm9ybVRvdWNoRXZlbnQg
dG91Y2hFdmVudChwb2ludHMsIFdlYkNvcmU6OkludFBvaW50KHgsIHkpLCB0eXBlLCBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcnM+KHRvdWNoTW9kaWZpZXJzKSk7
Ci0gICAgcmV0dXJuIHNtYXJ0RGF0YS0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVUb3Vj
aEV2ZW50KHRvdWNoRXZlbnQpOworICAgIHJldHVybiBzbWFydERhdGEtPmZyYW1lLT5ldmVudEhh
bmRsZXIoKS0+aGFuZGxlVG91Y2hFdmVudChFV0tQcml2YXRlOjpwbGF0Zm9ybVRvdWNoRXZlbnQo
eCwgeSwgcG9pbnRzLCBhY3Rpb24sIG1vZGlmaWVycykpOwogI2Vsc2UKICAgICByZXR1cm4gZmFs
c2U7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdG91Y2hf
ZXZlbnQuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190b3VjaF9ldmVudC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDY5NWQ0MWFkZjgxMzZmM2ZjM2NlNjliNzRjMmU3Nzk5MjEyZGVjZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdG91Y2hfZXZlbnQuY3BwCkBA
IC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJv
bmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlBsYXRmb3JtVG91
Y2hQb2ludC5oIgorI2luY2x1ZGUgImV3a190b3VjaF9ldmVudF9wcml2YXRlLmgiCisjaW5jbHVk
ZSA8RWNvcmVfSW5wdXQuaD4KKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKworY2xhc3Mg
V2ViS2l0UGxhdGZvcm1Ub3VjaFBvaW50IDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtVG91Y2hQ
b2ludCB7CitwdWJsaWM6CisgICAgV2ViS2l0UGxhdGZvcm1Ub3VjaFBvaW50KHVuc2lnbmVkIGlk
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgd2luZG93UG9zLCBXZWJDb3JlOjpQbGF0Zm9ybVRv
dWNoUG9pbnQ6OlN0YXRlIHN0YXRlKQorICAgIHsKKyAgICAgICAgbV9pZCA9IGlkOworICAgICAg
ICBtX3N0YXRlID0gc3RhdGU7CisgICAgICAgIG1fc2NyZWVuUG9zID0gd2luZG93UG9zOworICAg
ICAgICBtX3BvcyA9IHdpbmRvd1BvczsKKyAgICB9Cit9OworCitjbGFzcyBXZWJLaXRQbGF0Zm9y
bVRvdWNoRXZlbnQgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaEV2ZW50IHsKK3B1Ymxp
YzoKKyAgICBXZWJLaXRQbGF0Zm9ybVRvdWNoRXZlbnQoY29uc3QgRWluYV9MaXN0KiBwb2ludHMs
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3MsIEV3a19Ub3VjaF9FdmVudF9UeXBlIGFjdGlv
biwgdW5zaWduZWQgbW9kaWZpZXJzKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChhY3Rpb24pIHsK
KyAgICAgICAgY2FzZSBFV0tfVE9VQ0hfU1RBUlQ6CisgICAgICAgICAgICBtX3R5cGUgPSBXZWJD
b3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaFN0YXJ0OworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgRVdLX1RPVUNIX01PVkU6CisgICAgICAgICAgICBtX3R5cGUgPSBXZWJDb3JlOjpQ
bGF0Zm9ybUV2ZW50OjpUb3VjaE1vdmU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBFV0tfVE9VQ0hfRU5EOgorICAgICAgICAgICAgbV90eXBlID0gV2ViQ29yZTo6UGxhdGZvcm1F
dmVudDo6VG91Y2hFbmQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFV0tfVE9V
Q0hfQ0FOQ0VMOgorICAgICAgICAgICAgbV90eXBlID0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6
VG91Y2hDYW5jZWw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKworICAgICAgICBpZiAobW9kaWZpZXJzICYgRUNPUkVfRVZFTlRfTU9ESUZJRVJfQUxUKQor
ICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6QWx0S2V5
OworICAgICAgICBpZiAobW9kaWZpZXJzICYgRUNPUkVfRVZFTlRfTU9ESUZJRVJfQ1RSTCkKKyAg
ICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OkN0cmxLZXk7
CisgICAgICAgIGlmIChtb2RpZmllcnMgJiBFQ09SRV9FVkVOVF9NT0RJRklFUl9TSElGVCkKKyAg
ICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlNoaWZ0S2V5
OworICAgICAgICBpZiAobW9kaWZpZXJzICYgRUNPUkVfRVZFTlRfTU9ESUZJRVJfV0lOKQorICAg
ICAgICAgICAgbV9tb2RpZmllcnMgfD0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6TWV0YUtleTsK
KworICAgICAgICBtX3RpbWVzdGFtcCA9IGN1cnJlbnRUaW1lKCk7CisKKyAgICAgICAgY29uc3Qg
RWluYV9MaXN0KiBsaXN0OworICAgICAgICB2b2lkKiBpdGVtOworICAgICAgICBFSU5BX0xJU1Rf
Rk9SRUFDSChwb2ludHMsIGxpc3QsIGl0ZW0pIHsKKyAgICAgICAgICAgIEV3a19Ub3VjaF9Qb2lu
dCogcG9pbnQgPSBzdGF0aWNfY2FzdDxFd2tfVG91Y2hfUG9pbnQqPihpdGVtKTsKKyAgICAgICAg
ICAgIFdlYkNvcmU6OkludFBvaW50IHBudCA9IFdlYkNvcmU6OkludFBvaW50KHBvaW50LT54IC0g
cG9zLngoKSwgcG9pbnQtPnkgLSBwb3MueSgpKTsKKyAgICAgICAgICAgIG1fdG91Y2hQb2ludHMu
YXBwZW5kKFdlYktpdFBsYXRmb3JtVG91Y2hQb2ludChwb2ludC0+aWQsIHBudCwgc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6UGxhdGZvcm1Ub3VjaFBvaW50OjpTdGF0ZT4ocG9pbnQtPnN0YXRlKSkpOwor
ICAgICAgICB9CisgICAgfQorfTsKKworbmFtZXNwYWNlIEVXS1ByaXZhdGUgeworCitXZWJDb3Jl
OjpQbGF0Zm9ybVRvdWNoRXZlbnQgcGxhdGZvcm1Ub3VjaEV2ZW50KEV2YXNfQ29vcmQgeCwgRXZh
c19Db29yZCB5LCBFaW5hX0xpc3QqIHBvaW50cywgRXdrX1RvdWNoX0V2ZW50X1R5cGUgYWN0aW9u
LCB1bnNpZ25lZCBtb2RpZmllcnMpCit7CisgICAgcmV0dXJuIFdlYktpdFBsYXRmb3JtVG91Y2hF
dmVudChwb2ludHMsIFdlYkNvcmU6OkludFBvaW50KHgsIHkpLCBhY3Rpb24sIG1vZGlmaWVycyk7
Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdG91Y2hfZXZl
bnRfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190b3VjaF9ldmVudF9wcml2
YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMGY3NzM3YTg4ZWNhOWI5YjY4NWFjYzljNzM1NTYzYzI2Zjg4ZDhk
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdG91Y2hfZXZl
bnRfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
U2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgZXdrX3RvdWNoX2V2ZW50X3ByaXZh
dGVfaAorI2RlZmluZSBld2tfdG91Y2hfZXZlbnRfcHJpdmF0ZV9oCisKKyNpbmNsdWRlICJQbGF0
Zm9ybVRvdWNoRXZlbnQuaCIKKyNpbmNsdWRlICJld2tfZnJhbWUuaCIKKworbmFtZXNwYWNlIEVX
S1ByaXZhdGUgeworV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaEV2ZW50IHBsYXRmb3JtVG91Y2hFdmVu
dChFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRWluYV9MaXN0KiBwb2ludHMsIEV3a19Ub3Vj
aF9FdmVudF9UeXBlIGFjdGlvbiwgdW5zaWduZWQgbW9kaWZpZXJzKTsKK30gLy8gbmFtZXNwYWNl
IEVXS1ByaXZhdGUKKworI2VuZGlmIC8vIGV3a190b3VjaF9ldmVudF9wcml2YXRlX2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>