<?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>157062</bug_id>
          
          <creation_ts>2016-04-27 00:05:06 -0700</creation_ts>
          <short_desc>Purge PassRefPtr in Modules/battery</short_desc>
          <delta_ts>2016-05-26 16:52:19 -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>WebKit 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="Gyuyoung Kim">gyuyoung.kim</reporter>
          <assigned_to name="Gyuyoung Kim">gyuyoung.kim</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1187673</commentid>
    <comment_count>0</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2016-04-27 00:05:06 -0700</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187674</commentid>
    <comment_count>1</comment_count>
      <attachid>277452</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2016-04-27 00:06:43 -0700</bug_when>
    <thetext>Created attachment 277452
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188143</commentid>
    <comment_count>2</comment_count>
      <attachid>277452</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-04-27 22:53:15 -0700</bug_when>
    <thetext>Comment on attachment 277452
Patch

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

This isn&apos;t compiled on mac, right?

&gt; Source/WebCore/Modules/battery/BatteryController.cpp:84
&gt; -void BatteryController::didChangeBatteryStatus(const AtomicString&amp; eventType, PassRefPtr&lt;BatteryStatus&gt; batteryStatus)
&gt; +void BatteryController::didChangeBatteryStatus(const AtomicString&amp; eventType, RefPtr&lt;BatteryStatus&gt;&amp;&amp; batteryStatus)

That&apos;s a lot of copyRef.  If you made this a RefPtr&lt;BatteryStatus&gt;&amp;, it could probably eliminate a lot of them.

&gt; Source/WebKit2/WebProcess/Battery/WebBatteryManager.cpp:78
&gt; -    RefPtr&lt;BatteryStatus&gt; status = BatteryStatus::create(data.isCharging, data.chargingTime, data.dischargingTime, data.level);
&gt; +    Ref&lt;BatteryStatus&gt; status = BatteryStatus::create(data.isCharging, data.chargingTime, data.dischargingTime, data.level);

auto

&gt; Source/WebKit2/WebProcess/Battery/WebBatteryManager.cpp:88
&gt; -    RefPtr&lt;BatteryStatus&gt; status = BatteryStatus::create(data.isCharging, data.chargingTime, data.dischargingTime, data.level);
&gt; +    Ref&lt;BatteryStatus&gt; status = BatteryStatus::create(data.isCharging, data.chargingTime, data.dischargingTime, data.level);

auto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188527</commentid>
    <comment_count>3</comment_count>
      <attachid>277452</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-28 23:50:11 -0700</bug_when>
    <thetext>Comment on attachment 277452
Patch

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

&gt; Source/WebCore/Modules/battery/BatteryController.cpp:51
&gt; -        batteryManager-&gt;updateBatteryStatus(m_batteryStatus);
&gt; +        batteryManager-&gt;updateBatteryStatus(WTFMove(m_batteryStatus));

This looks wrong. The old code would not null out m_batteryStatus, but this new code will.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1195725</commentid>
    <comment_count>4</comment_count>
      <attachid>279624</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2016-05-23 22:10:34 -0700</bug_when>
    <thetext>Created attachment 279624
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1195746</commentid>
    <comment_count>5</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2016-05-23 23:27:33 -0700</bug_when>
    <thetext>Sorry for too late update. I&apos;m busy at work lately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1195845</commentid>
    <comment_count>6</comment_count>
      <attachid>279624</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-24 08:40:08 -0700</bug_when>
    <thetext>Comment on attachment 279624
Patch

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

&gt; Source/WebCore/Modules/battery/BatteryClient.h:38
&gt; +void provideBatteryTo(Page*, BatteryClient&amp;);

Should be Page&amp; also.

&gt; Source/WebCore/Modules/battery/BatteryController.cpp:65
&gt;      RefPtr&lt;BatteryStatus&gt; status = batteryStatus;

No need for a local variable now that we are no longer using PassRefPtr.

&gt; Source/WebCore/Modules/battery/BatteryController.cpp:81
&gt;      m_batteryStatus = status.release();

This should be WTFMove instead of release(). The release() function creates a PassRefPtr.

&gt; Source/WebCore/Modules/battery/BatteryController.cpp:87
&gt;      RefPtr&lt;BatteryStatus&gt; battery = batteryStatus;

No need for this local variable once we are no longer using PassRefPtr.

&gt; Source/WebCore/Modules/battery/BatteryController.h:40
&gt; +    void updateBatteryStatus(RefPtr&lt;BatteryStatus&gt;&amp;);

This is wrong; should be RefPtr&lt;BatteryStatus&gt;&amp;&amp;.

&gt; Source/WebCore/Modules/battery/BatteryController.h:41
&gt; +    void didChangeBatteryStatus(const AtomicString&amp; eventType, RefPtr&lt;BatteryStatus&gt;&amp;);

This is wrong; should be BatteryStatus*, not RefPtr.

&gt; Source/WebCore/Modules/battery/BatteryManager.cpp:88
&gt;      m_batteryStatus = batteryStatus;

Needs WTFMove.

&gt; Source/WebCore/Modules/battery/BatteryManager.h:49
&gt; +    void didChangeBatteryStatus(Event&amp;, RefPtr&lt;BatteryStatus&gt;&amp;);

This is wrong; should be RefPtr&lt;BatteryStatus&gt;&amp;&amp;.

&gt; Source/WebCore/Modules/battery/BatteryManager.h:50
&gt; +    void updateBatteryStatus(RefPtr&lt;BatteryStatus&gt;&amp;);

This is wrong; should be BatteryStatus*, not RefPtr.

&gt; Source/WebCore/testing/Internals.cpp:1564
&gt; -    BatteryController::from(document-&gt;page())-&gt;didChangeBatteryStatus(eventType, BatteryStatus::create(charging, chargingTime, dischargingTime, level));
&gt; +    RefPtr&lt;BatteryStatus&gt; status = BatteryStatus::create(charging, chargingTime, dischargingTime, level);
&gt; +    BatteryController::from(document-&gt;page())-&gt;didChangeBatteryStatus(eventType, status);

Why the change? The code reads better on a single line, and the use of RefPtr is incorrect here; should be Ref, I think. Normally we’d use auto. But it should just work all on one line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196113</commentid>
    <comment_count>7</comment_count>
      <attachid>279735</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2016-05-24 18:15:09 -0700</bug_when>
    <thetext>Created attachment 279735
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196219</commentid>
    <comment_count>8</comment_count>
      <attachid>279735</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-05-24 23:19:31 -0700</bug_when>
    <thetext>Comment on attachment 279735
Patch

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

&gt; Source/WebKit2/WebProcess/Battery/WebBatteryManager.cpp:92
&gt;      for (auto* page : m_pageSet) {
&gt;          if (page-&gt;corePage())
&gt; -            BatteryController::from(page-&gt;corePage())-&gt;updateBatteryStatus(status.get());
&gt; +            BatteryController::from(page-&gt;corePage())-&gt;updateBatteryStatus(WTFMove(status));

Because this could happen more than once, this needs to use copyRef.  It will not have the intended behavior after the first page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196253</commentid>
    <comment_count>9</comment_count>
      <attachid>279751</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2016-05-25 02:21:59 -0700</bug_when>
    <thetext>Created attachment 279751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196254</commentid>
    <comment_count>10</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2016-05-25 02:25:09 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 279735 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=279735&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Battery/WebBatteryManager.cpp:92
&gt; &gt;      for (auto* page : m_pageSet) {
&gt; &gt;          if (page-&gt;corePage())
&gt; &gt; -            BatteryController::from(page-&gt;corePage())-&gt;updateBatteryStatus(status.get());
&gt; &gt; +            BatteryController::from(page-&gt;corePage())-&gt;updateBatteryStatus(WTFMove(status));
&gt; 
&gt; Because this could happen more than once, this needs to use copyRef.  It
&gt; will not have the intended behavior after the first page.

yes, it can cause a crash. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196262</commentid>
    <comment_count>11</comment_count>
      <attachid>279751</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-25 03:29:54 -0700</bug_when>
    <thetext>Comment on attachment 279751
Patch

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

&gt; Source/WebKit2/WebProcess/Battery/WebBatteryManager.cpp:78
&gt; +    auto status = BatteryStatus::create(data.isCharging, data.chargingTime, data.dischargingTime, data.level);

The storage model of this code seems quite peculiar. It’s so strange that we create a temporary BatteryStatus and call didChangeBatteryStatus and then throw it away. It’s not stored anywhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196598</commentid>
    <comment_count>12</comment_count>
      <attachid>279751</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2016-05-25 18:44:52 -0700</bug_when>
    <thetext>Comment on attachment 279751
Patch

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

&gt;&gt; Source/WebKit2/WebProcess/Battery/WebBatteryManager.cpp:78
&gt;&gt; +    auto status = BatteryStatus::create(data.isCharging, data.chargingTime, data.dischargingTime, data.level);
&gt; 
&gt; The storage model of this code seems quite peculiar. It’s so strange that we create a temporary BatteryStatus and call didChangeBatteryStatus and then throw it away. It’s not stored anywhere?

Previous implementation had been passed a pointer from here to BatteryManager class. Then BatteryManager manages it using a RefPtr. I thought that this is fine because BatteryManager will maintain the *BatteryStatus*. But now, as your question, it would be better to pass an ownership of the *BatteryStatus* to BatteryManager.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196599</commentid>
    <comment_count>13</comment_count>
      <attachid>279848</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2016-05-25 18:46:26 -0700</bug_when>
    <thetext>Created attachment 279848
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196912</commentid>
    <comment_count>14</comment_count>
      <attachid>279848</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-26 16:52:15 -0700</bug_when>
    <thetext>Comment on attachment 279848
Patch

Clearing flags on attachment: 279848

Committed r201440: &lt;http://trac.webkit.org/changeset/201440&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196913</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-26 16:52:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277452</attachid>
            <date>2016-04-27 00:06:43 -0700</date>
            <delta_ts>2016-05-23 22:10:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157062-20160427160711.patch</filename>
            <type>text/plain</type>
            <size>10366</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTMzMWIzZDU4ZmFmODAw
YzMwZjc4OTg4MTFiNjI0ZTRjNThkMDg1NC4uZWZhYTc5NTUwZWZlYWUxMGU0OTkxZmViZmNkZTIw
ZTAzM2IwMjlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE2LTA0LTI2ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBQdXJnZSBQYXNz
UmVmUHRyIGluIE1vZHVsZXMvYmF0dGVyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MDYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXNlIFJlZlB0cjw+JiYgdG8gcmVkdWNlIHVzZXMgb2YgUGFzc1Jl
ZlB0ciBpbiBXZWJLaXQuCisKKyAgICAgICAgKiBNb2R1bGVzL2JhdHRlcnkvQmF0dGVyeUNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmF0dGVyeUNvbnRyb2xsZXI6OmFkZExpc3Rl
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkJhdHRlcnlDb250cm9sbGVyOjp1cGRhdGVCYXR0ZXJ5
U3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkJhdHRlcnlDb250cm9sbGVyOjpkaWRDaGFuZ2VC
YXR0ZXJ5U3RhdHVzKToKKyAgICAgICAgKiBNb2R1bGVzL2JhdHRlcnkvQmF0dGVyeUNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2JhdHRlcnkvQmF0dGVyeU1hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QmF0dGVyeU1hbmFnZXI6OmRpZENoYW5nZUJhdHRlcnlTdGF0dXMpOgor
ICAgICAgICAoV2ViQ29yZTo6QmF0dGVyeU1hbmFnZXI6OnVwZGF0ZUJhdHRlcnlTdGF0dXMpOgor
ICAgICAgICAqIE1vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5TWFuYWdlci5oOgorICAgICAgICAqIE1v
ZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5U3RhdHVzLmg6CisKIDIwMTYtMDQtMjYgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViIElETF0gU3BlY2lmeSBkZWZhdWx0
IHZhbHVlcyBmb3Igb3B0aW9uYWwgcGFyYW1ldGVycyBvZiB0eXBlICd1bnNpZ25lZCBsb25nJwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IGY5NjBmNDZjZWVhM2I5OGZkY2FlYTY1Mzk4YmQ5Y2IwMDA4M2FiNDQuLjZm
YWY4MDYxY2NlZjc2Yjg1YTU5MWNiZWJlN2IyMzkwNTkyOWExNTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNi0wNC0yNiAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUHVyZ2UgUGFzc1JlZlB0ciBpbiBNb2R1bGVzL2JhdHRlcnkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzA2MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBSZWZQdHI8
PiYmIHRvIHJlZHVjZSB1c2VzIG9mIFBhc3NSZWZQdHIgaW4gV2ViS2l0LgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9CYXR0ZXJ5L1dlYkJhdHRlcnlNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQmF0dGVyeU1hbmFnZXI6OmRpZENoYW5nZUJhdHRlcnlTdGF0dXMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJCYXR0ZXJ5TWFuYWdlcjo6dXBkYXRlQmF0dGVyeVN0YXR1cyk6CisKIDIwMTYt
MDQtMjYgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIENoZWNrIHRv
IG1ha2Ugc3VyZSBzaG91bGRSZXF1ZXN0Q2FuZGlkYXRlcygpIGJlZm9yZSByZXF1ZXN0aW5nIGNh
bmRpZGF0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0
ZXJ5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvQmF0dGVy
eUNvbnRyb2xsZXIuY3BwCmluZGV4IDI1MjE1Yzk3MDQ2Y2U5ZmUyYmZhYjFlMGI0ZDAxZDE0YWIx
MzViOGQuLjk4MTQwZDVmY2IzMWEwNzEzOTAyZTQ4YjE4ZDE4NGM4YTk2MGZhNDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5Q29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlDb250cm9sbGVyLmNw
cApAQCAtNDgsNyArNDgsNyBAQCB2b2lkIEJhdHRlcnlDb250cm9sbGVyOjphZGRMaXN0ZW5lcihC
YXR0ZXJ5TWFuYWdlciogYmF0dGVyeU1hbmFnZXIpCiAgICAgbV9jbGllbnQtPnN0YXJ0VXBkYXRp
bmcoKTsKIAogICAgIGlmIChtX2JhdHRlcnlTdGF0dXMpCi0gICAgICAgIGJhdHRlcnlNYW5hZ2Vy
LT51cGRhdGVCYXR0ZXJ5U3RhdHVzKG1fYmF0dGVyeVN0YXR1cyk7CisgICAgICAgIGJhdHRlcnlN
YW5hZ2VyLT51cGRhdGVCYXR0ZXJ5U3RhdHVzKFdURk1vdmUobV9iYXR0ZXJ5U3RhdHVzKSk7CiB9
CiAKIHZvaWQgQmF0dGVyeUNvbnRyb2xsZXI6OnJlbW92ZUxpc3RlbmVyKEJhdHRlcnlNYW5hZ2Vy
KiBiYXR0ZXJ5TWFuYWdlcikKQEAgLTYxLDMzICs2MSwzMSBAQCB2b2lkIEJhdHRlcnlDb250cm9s
bGVyOjpyZW1vdmVMaXN0ZW5lcihCYXR0ZXJ5TWFuYWdlciogYmF0dGVyeU1hbmFnZXIpCiAgICAg
ICAgIG1fY2xpZW50LT5zdG9wVXBkYXRpbmcoKTsKIH0KIAotdm9pZCBCYXR0ZXJ5Q29udHJvbGxl
cjo6dXBkYXRlQmF0dGVyeVN0YXR1cyhQYXNzUmVmUHRyPEJhdHRlcnlTdGF0dXM+IGJhdHRlcnlT
dGF0dXMpCit2b2lkIEJhdHRlcnlDb250cm9sbGVyOjp1cGRhdGVCYXR0ZXJ5U3RhdHVzKFJlZlB0
cjxCYXR0ZXJ5U3RhdHVzPiYmIGJhdHRlcnlTdGF0dXMpCiB7Ci0gICAgUmVmUHRyPEJhdHRlcnlT
dGF0dXM+IHN0YXR1cyA9IGJhdHRlcnlTdGF0dXM7CiAgICAgaWYgKG1fYmF0dGVyeVN0YXR1cykg
ewotICAgICAgICBpZiAobV9iYXR0ZXJ5U3RhdHVzLT5jaGFyZ2luZygpICE9IHN0YXR1cy0+Y2hh
cmdpbmcoKSkKLSAgICAgICAgICAgIGRpZENoYW5nZUJhdHRlcnlTdGF0dXMoV2ViQ29yZTo6ZXZl
bnROYW1lcygpLmNoYXJnaW5nY2hhbmdlRXZlbnQsIHN0YXR1cyk7Ci0gICAgICAgIGVsc2UgaWYg
KHN0YXR1cy0+Y2hhcmdpbmcoKSAmJiBtX2JhdHRlcnlTdGF0dXMtPmNoYXJnaW5nVGltZSgpICE9
IHN0YXR1cy0+Y2hhcmdpbmdUaW1lKCkpCi0gICAgICAgICAgICBkaWRDaGFuZ2VCYXR0ZXJ5U3Rh
dHVzKFdlYkNvcmU6OmV2ZW50TmFtZXMoKS5jaGFyZ2luZ3RpbWVjaGFuZ2VFdmVudCwgc3RhdHVz
KTsKLSAgICAgICAgZWxzZSBpZiAoIXN0YXR1cy0+Y2hhcmdpbmcoKSAmJiBtX2JhdHRlcnlTdGF0
dXMtPmRpc2NoYXJnaW5nVGltZSgpICE9IHN0YXR1cy0+ZGlzY2hhcmdpbmdUaW1lKCkpCi0gICAg
ICAgICAgICBkaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKFdlYkNvcmU6OmV2ZW50TmFtZXMoKS5kaXNj
aGFyZ2luZ3RpbWVjaGFuZ2VFdmVudCwgc3RhdHVzKTsKLQotICAgICAgICBpZiAobV9iYXR0ZXJ5
U3RhdHVzLT5sZXZlbCgpICE9IHN0YXR1cy0+bGV2ZWwoKSkKLSAgICAgICAgICAgIGRpZENoYW5n
ZUJhdHRlcnlTdGF0dXMoV2ViQ29yZTo6ZXZlbnROYW1lcygpLmxldmVsY2hhbmdlRXZlbnQsIHN0
YXR1cyk7CisgICAgICAgIGlmIChtX2JhdHRlcnlTdGF0dXMtPmNoYXJnaW5nKCkgIT0gYmF0dGVy
eVN0YXR1cy0+Y2hhcmdpbmcoKSkKKyAgICAgICAgICAgIGRpZENoYW5nZUJhdHRlcnlTdGF0dXMo
V2ViQ29yZTo6ZXZlbnROYW1lcygpLmNoYXJnaW5nY2hhbmdlRXZlbnQsIGJhdHRlcnlTdGF0dXMu
Y29weVJlZigpKTsKKyAgICAgICAgZWxzZSBpZiAoYmF0dGVyeVN0YXR1cy0+Y2hhcmdpbmcoKSAm
JiBtX2JhdHRlcnlTdGF0dXMtPmNoYXJnaW5nVGltZSgpICE9IGJhdHRlcnlTdGF0dXMtPmNoYXJn
aW5nVGltZSgpKQorICAgICAgICAgICAgZGlkQ2hhbmdlQmF0dGVyeVN0YXR1cyhXZWJDb3JlOjpl
dmVudE5hbWVzKCkuY2hhcmdpbmd0aW1lY2hhbmdlRXZlbnQsIGJhdHRlcnlTdGF0dXMuY29weVJl
ZigpKTsKKyAgICAgICAgZWxzZSBpZiAoIWJhdHRlcnlTdGF0dXMtPmNoYXJnaW5nKCkgJiYgbV9i
YXR0ZXJ5U3RhdHVzLT5kaXNjaGFyZ2luZ1RpbWUoKSAhPSBiYXR0ZXJ5U3RhdHVzLT5kaXNjaGFy
Z2luZ1RpbWUoKSkKKyAgICAgICAgICAgIGRpZENoYW5nZUJhdHRlcnlTdGF0dXMoV2ViQ29yZTo6
ZXZlbnROYW1lcygpLmRpc2NoYXJnaW5ndGltZWNoYW5nZUV2ZW50LCBiYXR0ZXJ5U3RhdHVzLmNv
cHlSZWYoKSk7CisKKyAgICAgICAgaWYgKG1fYmF0dGVyeVN0YXR1cy0+bGV2ZWwoKSAhPSBiYXR0
ZXJ5U3RhdHVzLT5sZXZlbCgpKQorICAgICAgICAgICAgZGlkQ2hhbmdlQmF0dGVyeVN0YXR1cyhX
ZWJDb3JlOjpldmVudE5hbWVzKCkubGV2ZWxjaGFuZ2VFdmVudCwgYmF0dGVyeVN0YXR1cy5jb3B5
UmVmKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGZvciAoYXV0byYgbGlzdGVuZXIgOiBtX2xp
c3RlbmVycykKLSAgICAgICAgICAgIGxpc3RlbmVyLT51cGRhdGVCYXR0ZXJ5U3RhdHVzKHN0YXR1
cyk7CisgICAgICAgICAgICBsaXN0ZW5lci0+dXBkYXRlQmF0dGVyeVN0YXR1cyhiYXR0ZXJ5U3Rh
dHVzLmNvcHlSZWYoKSk7CiAgICAgfQogCi0gICAgbV9iYXR0ZXJ5U3RhdHVzID0gc3RhdHVzLnJl
bGVhc2UoKTsKKyAgICBtX2JhdHRlcnlTdGF0dXMgPSBXVEZNb3ZlKGJhdHRlcnlTdGF0dXMpOwog
fQogCi12b2lkIEJhdHRlcnlDb250cm9sbGVyOjpkaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEJhdHRlcnlTdGF0dXM+IGJhdHRl
cnlTdGF0dXMpCit2b2lkIEJhdHRlcnlDb250cm9sbGVyOjpkaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVz
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8QmF0dGVyeVN0YXR1cz4mJiBi
YXR0ZXJ5U3RhdHVzKQogewogICAgIFJlZjxFdmVudD4gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2
ZW50VHlwZSwgZmFsc2UsIGZhbHNlKTsKLSAgICBSZWZQdHI8QmF0dGVyeVN0YXR1cz4gYmF0dGVy
eSA9IGJhdHRlcnlTdGF0dXM7CiAgICAgZm9yIChhdXRvJiBsaXN0ZW5lciA6IG1fbGlzdGVuZXJz
KQotICAgICAgICBsaXN0ZW5lci0+ZGlkQ2hhbmdlQmF0dGVyeVN0YXR1cyhldmVudCwgYmF0dGVy
eSk7CisgICAgICAgIGxpc3RlbmVyLT5kaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKGV2ZW50LCBiYXR0
ZXJ5U3RhdHVzLmNvcHlSZWYoKSk7CiB9CiAKIGNvbnN0IGNoYXIqIEJhdHRlcnlDb250cm9sbGVy
OjpzdXBwbGVtZW50TmFtZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Jh
dHRlcnkvQmF0dGVyeUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVy
eS9CYXR0ZXJ5Q29udHJvbGxlci5oCmluZGV4IGQwYmU5NGE3NThjMTE4ODRiMmM5MDdhZDMwNzEx
MDM1MTJjZjQ3YzQuLjQ2YzhmNDA3OWVjNTQ4ZGMwNDA0ZjA1Y2I3YzRmY2JmYTE5ODdhNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5Q29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5Q29udHJvbGxl
ci5oCkBAIC0zNyw4ICszNyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkTGlzdGVuZXIoQmF0
dGVyeU1hbmFnZXIqKTsKICAgICB2b2lkIHJlbW92ZUxpc3RlbmVyKEJhdHRlcnlNYW5hZ2VyKik7
Ci0gICAgdm9pZCB1cGRhdGVCYXR0ZXJ5U3RhdHVzKFBhc3NSZWZQdHI8QmF0dGVyeVN0YXR1cz4p
OwotICAgIHZvaWQgZGlkQ2hhbmdlQmF0dGVyeVN0YXR1cyhjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgUGFzc1JlZlB0cjxCYXR0ZXJ5U3RhdHVzPik7CisgICAgdm9pZCB1cGRhdGVCYXR0
ZXJ5U3RhdHVzKFJlZlB0cjxCYXR0ZXJ5U3RhdHVzPiYmKTsKKyAgICB2b2lkIGRpZENoYW5nZUJh
dHRlcnlTdGF0dXMoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxCYXR0ZXJ5
U3RhdHVzPiYmKTsKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwog
ICAgIHN0YXRpYyBCYXR0ZXJ5Q29udHJvbGxlciogZnJvbShQYWdlKiBwYWdlKSB7IHJldHVybiBz
dGF0aWNfY2FzdDxCYXR0ZXJ5Q29udHJvbGxlcio+KFN1cHBsZW1lbnQ8UGFnZT46OmZyb20ocGFn
ZSwgc3VwcGxlbWVudE5hbWUoKSkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2JhdHRlcnkvQmF0dGVyeU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9i
YXR0ZXJ5L0JhdHRlcnlNYW5hZ2VyLmNwcAppbmRleCA0MDQ5YTQ1M2Y0ZTExYmFjNTM5ZGFjMmU4
ZWRkMDJlODFhYzdmOWE1Li4wNzYzZGYwZmIxMDQ4NTM1OTQyNjU4YjM2YmU4ZGQ2OTdjZTIyMmY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvQmF0dGVyeU1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5TWFuYWdl
ci5jcHAKQEAgLTc3LDE1ICs3NywxNSBAQCBkb3VibGUgQmF0dGVyeU1hbmFnZXI6OmxldmVsKCkK
ICAgICByZXR1cm4gbV9iYXR0ZXJ5U3RhdHVzID8gbV9iYXR0ZXJ5U3RhdHVzLT5sZXZlbCgpIDog
MTsKIH0KIAotdm9pZCBCYXR0ZXJ5TWFuYWdlcjo6ZGlkQ2hhbmdlQmF0dGVyeVN0YXR1cyhFdmVu
dCYgZXZlbnQsIFBhc3NSZWZQdHI8QmF0dGVyeVN0YXR1cz4gYmF0dGVyeVN0YXR1cykKK3ZvaWQg
QmF0dGVyeU1hbmFnZXI6OmRpZENoYW5nZUJhdHRlcnlTdGF0dXMoRXZlbnQmIGV2ZW50LCBSZWZQ
dHI8QmF0dGVyeVN0YXR1cz4mJiBiYXR0ZXJ5U3RhdHVzKQogewotICAgIHVwZGF0ZUJhdHRlcnlT
dGF0dXMoYmF0dGVyeVN0YXR1cyk7CisgICAgdXBkYXRlQmF0dGVyeVN0YXR1cyhXVEZNb3ZlKGJh
dHRlcnlTdGF0dXMpKTsKICAgICBkaXNwYXRjaEV2ZW50KGV2ZW50KTsKIH0KIAotdm9pZCBCYXR0
ZXJ5TWFuYWdlcjo6dXBkYXRlQmF0dGVyeVN0YXR1cyhQYXNzUmVmUHRyPEJhdHRlcnlTdGF0dXM+
IGJhdHRlcnlTdGF0dXMpCit2b2lkIEJhdHRlcnlNYW5hZ2VyOjp1cGRhdGVCYXR0ZXJ5U3RhdHVz
KFJlZlB0cjxCYXR0ZXJ5U3RhdHVzPiYmIGJhdHRlcnlTdGF0dXMpCiB7Ci0gICAgbV9iYXR0ZXJ5
U3RhdHVzID0gYmF0dGVyeVN0YXR1czsKKyAgICBtX2JhdHRlcnlTdGF0dXMgPSBXVEZNb3ZlKGJh
dHRlcnlTdGF0dXMpOwogfQogCiBib29sIEJhdHRlcnlNYW5hZ2VyOjpjYW5TdXNwZW5kRm9yRG9j
dW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYmF0dGVyeS9CYXR0ZXJ5TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0
ZXJ5L0JhdHRlcnlNYW5hZ2VyLmgKaW5kZXggYTc0ZGFjZjVjZTRmMDk1YThkMWQ0MzRkMDFiOGI0
YjIxMmIwM2IyMS4uYjg0ZmFlM2VmNmJmMzQ5NzEyNDk4YmIxMDRjNmEyZWEwMWNiMzVhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlNYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlNYW5hZ2VyLmgKQEAg
LTQ2LDggKzQ2LDggQEAgcHVibGljOgogICAgIGRvdWJsZSBkaXNjaGFyZ2luZ1RpbWUoKTsKICAg
ICBkb3VibGUgbGV2ZWwoKTsKIAotICAgIHZvaWQgZGlkQ2hhbmdlQmF0dGVyeVN0YXR1cyhFdmVu
dCYsIFBhc3NSZWZQdHI8QmF0dGVyeVN0YXR1cz4pOwotICAgIHZvaWQgdXBkYXRlQmF0dGVyeVN0
YXR1cyhQYXNzUmVmUHRyPEJhdHRlcnlTdGF0dXM+KTsKKyAgICB2b2lkIGRpZENoYW5nZUJhdHRl
cnlTdGF0dXMoRXZlbnQmLCBSZWZQdHI8QmF0dGVyeVN0YXR1cz4mJik7CisgICAgdm9pZCB1cGRh
dGVCYXR0ZXJ5U3RhdHVzKFJlZlB0cjxCYXR0ZXJ5U3RhdHVzPiYmKTsKICAgICB2b2lkIGJhdHRl
cnlDb250cm9sbGVyRGVzdHJveWVkKCkgeyBtX2JhdHRlcnlDb250cm9sbGVyID0gbnVsbHB0cjsg
fQogCiAgICAgdXNpbmcgUmVmQ291bnRlZDxCYXR0ZXJ5TWFuYWdlcj46OnJlZjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5U3RhdHVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvQmF0dGVyeVN0YXR1cy5oCmluZGV4IDUxNGE4ZmJi
OGFhYTVlNGMzZDU4Y2EwYWE2NTU5NWFiMGQ4NmNhN2MuLmY1ODRlZTcyOWI5YmM5NWY5MzgxZGI4
NTY2ZmQzZjM5OGJlOTJmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0
dGVyeS9CYXR0ZXJ5U3RhdHVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5
L0JhdHRlcnlTdGF0dXMuaApAQCAtMjIsNyArMjIsNyBAQAogCiAjaWYgRU5BQkxFKEJBVFRFUllf
U1RBVFVTKQogCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9CYXR0ZXJ5L1dlYkJhdHRlcnlN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQmF0dGVyeS9XZWJCYXR0ZXJ5
TWFuYWdlci5jcHAKaW5kZXggZGFlNTIzYmJiYTNiMTlkMGJlNDNjZTVkN2ZlNmUyODVlZTEzMzFh
MS4uNTZiOWZmMjEzZGMzZDg4NWJiZGUyMGYzMWE5ZDI1OGU3ZjQ2MGNhNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9CYXR0ZXJ5L1dlYkJhdHRlcnlNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0JhdHRlcnkvV2ViQmF0dGVyeU1hbmFnZXIu
Y3BwCkBAIC03NSwyMSArNzUsMjEgQEAgdm9pZCBXZWJCYXR0ZXJ5TWFuYWdlcjo6dW5yZWdpc3Rl
cldlYlBhZ2UoV2ViUGFnZSogcGFnZSkKIAogdm9pZCBXZWJCYXR0ZXJ5TWFuYWdlcjo6ZGlkQ2hh
bmdlQmF0dGVyeVN0YXR1cyhjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25z
dCBXZWJCYXR0ZXJ5U3RhdHVzOjpEYXRhJiBkYXRhKQogewotICAgIFJlZlB0cjxCYXR0ZXJ5U3Rh
dHVzPiBzdGF0dXMgPSBCYXR0ZXJ5U3RhdHVzOjpjcmVhdGUoZGF0YS5pc0NoYXJnaW5nLCBkYXRh
LmNoYXJnaW5nVGltZSwgZGF0YS5kaXNjaGFyZ2luZ1RpbWUsIGRhdGEubGV2ZWwpOworICAgIFJl
ZjxCYXR0ZXJ5U3RhdHVzPiBzdGF0dXMgPSBCYXR0ZXJ5U3RhdHVzOjpjcmVhdGUoZGF0YS5pc0No
YXJnaW5nLCBkYXRhLmNoYXJnaW5nVGltZSwgZGF0YS5kaXNjaGFyZ2luZ1RpbWUsIGRhdGEubGV2
ZWwpOwogCiAgICAgZm9yIChhdXRvKiBwYWdlIDogbV9wYWdlU2V0KSB7CiAgICAgICAgIGlmIChw
YWdlLT5jb3JlUGFnZSgpKQotICAgICAgICAgICAgQmF0dGVyeUNvbnRyb2xsZXI6OmZyb20ocGFn
ZS0+Y29yZVBhZ2UoKSktPmRpZENoYW5nZUJhdHRlcnlTdGF0dXMoZXZlbnRUeXBlLCBzdGF0dXMu
Z2V0KCkpOworICAgICAgICAgICAgQmF0dGVyeUNvbnRyb2xsZXI6OmZyb20ocGFnZS0+Y29yZVBh
Z2UoKSktPmRpZENoYW5nZUJhdHRlcnlTdGF0dXMoZXZlbnRUeXBlLCBXVEZNb3ZlKHN0YXR1cykp
OwogICAgIH0KIH0KIAogdm9pZCBXZWJCYXR0ZXJ5TWFuYWdlcjo6dXBkYXRlQmF0dGVyeVN0YXR1
cyhjb25zdCBXZWJCYXR0ZXJ5U3RhdHVzOjpEYXRhJiBkYXRhKQogewotICAgIFJlZlB0cjxCYXR0
ZXJ5U3RhdHVzPiBzdGF0dXMgPSBCYXR0ZXJ5U3RhdHVzOjpjcmVhdGUoZGF0YS5pc0NoYXJnaW5n
LCBkYXRhLmNoYXJnaW5nVGltZSwgZGF0YS5kaXNjaGFyZ2luZ1RpbWUsIGRhdGEubGV2ZWwpOwor
ICAgIFJlZjxCYXR0ZXJ5U3RhdHVzPiBzdGF0dXMgPSBCYXR0ZXJ5U3RhdHVzOjpjcmVhdGUoZGF0
YS5pc0NoYXJnaW5nLCBkYXRhLmNoYXJnaW5nVGltZSwgZGF0YS5kaXNjaGFyZ2luZ1RpbWUsIGRh
dGEubGV2ZWwpOwogCiAgICAgZm9yIChhdXRvKiBwYWdlIDogbV9wYWdlU2V0KSB7CiAgICAgICAg
IGlmIChwYWdlLT5jb3JlUGFnZSgpKQotICAgICAgICAgICAgQmF0dGVyeUNvbnRyb2xsZXI6OmZy
b20ocGFnZS0+Y29yZVBhZ2UoKSktPnVwZGF0ZUJhdHRlcnlTdGF0dXMoc3RhdHVzLmdldCgpKTsK
KyAgICAgICAgICAgIEJhdHRlcnlDb250cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT51
cGRhdGVCYXR0ZXJ5U3RhdHVzKFdURk1vdmUoc3RhdHVzKSk7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279624</attachid>
            <date>2016-05-23 22:10:34 -0700</date>
            <delta_ts>2016-05-24 18:15:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157062-20160524141139.patch</filename>
            <type>text/plain</type>
            <size>11492</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxMjc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDUyMzk0OTNkMTk3MDIw
YmE4ZDYwNTdhNDhhN2VkMzgzZGNiMGJjMC4uNTc4ZTgwNjA2ODRmMTYwN2MyNmJiODQ3ZGQwYWM3
MjZiNGQ1ZDU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE2LTA1LTIzICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBQdXJnZSBQYXNz
UmVmUHRyIGluIE1vZHVsZXMvYmF0dGVyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MDYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXNlIFJlZlB0cjw+JiB0byByZWR1Y2UgdXNlcyBvZiBQYXNzUmVm
UHRyIGluIFdlYktpdC4KKworICAgICAgICAqIE1vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5Q2xpZW50
Lmg6CisgICAgICAgICogTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJhdHRlcnlDb250cm9sbGVyOjpCYXR0ZXJ5Q29udHJvbGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXR0ZXJ5Q29udHJvbGxlcjo6fkJhdHRlcnlDb250cm9sbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkJhdHRlcnlDb250cm9sbGVyOjphZGRMaXN0ZW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpCYXR0ZXJ5Q29udHJvbGxlcjo6cmVtb3ZlTGlzdGVuZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6QmF0dGVyeUNvbnRyb2xsZXI6OnVwZGF0ZUJhdHRlcnlTdGF0dXMpOgorICAg
ICAgICAoV2ViQ29yZTo6QmF0dGVyeUNvbnRyb2xsZXI6OmRpZENoYW5nZUJhdHRlcnlTdGF0dXMp
OgorICAgICAgICAoV2ViQ29yZTo6cHJvdmlkZUJhdHRlcnlUbyk6CisgICAgICAgICogTW9kdWxl
cy9iYXR0ZXJ5L0JhdHRlcnlDb250cm9sbGVyLmg6CisgICAgICAgICogTW9kdWxlcy9iYXR0ZXJ5
L0JhdHRlcnlNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhdHRlcnlNYW5hZ2VyOjpk
aWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkJhdHRlcnlNYW5hZ2Vy
Ojp1cGRhdGVCYXR0ZXJ5U3RhdHVzKToKKyAgICAgICAgKiBNb2R1bGVzL2JhdHRlcnkvQmF0dGVy
eU1hbmFnZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2JhdHRlcnkvQmF0dGVyeVN0YXR1cy5oOgor
ICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6c2V0QmF0dGVyeVN0YXR1cyk6CisKIDIwMTYtMDUtMjIgIEJyYWR5IEVpZHNvbiAgPGJl
aWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgdG8gQysrMTQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
NWFiZWFmOTcxNWFlMzM0Yjk4MmUzZGRjN2FlY2VlZTdhYTYzMTVjZC4uOWNkMWFkNzU4ZTY2ZDFm
NTg3ZGFjZjhkZTM2MzY3Y2MzMDdhZTBjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisy
MDE2LTA1LTIzICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBQdXJnZSBQYXNzUmVmUHRyIGluIE1vZHVsZXMvYmF0dGVyeQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MDYyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFJlZlB0cjw+JiB0byByZWR1Y2Ug
dXNlcyBvZiBQYXNzUmVmUHRyIGluIFdlYktpdC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvQmF0
dGVyeS9XZWJCYXR0ZXJ5TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhdHRlcnlN
YW5hZ2VyOjpkaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmF0
dGVyeU1hbmFnZXI6OnVwZGF0ZUJhdHRlcnlTdGF0dXMpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9zaG91bGREaXNwYXRjaEZh
a2VNb3VzZU1vdmVFdmVudHMpOgorCiAyMDE2LTA1LTIzICBNaWd1ZWwgR29tZXogIDxtYWdvbWV6
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1RocmVhZGVkQ29tcG9zaXRvcl0gRW5zdXJlIHRoYXQg
dGhlIEJpdG1hcFRleHR1cmUgdXNlZCBieSBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGUgbWF0
Y2hlcyB0aGUgb3BhY2l0eSBvZiB0aGUgcGFpbnRlZCBzdXJmYWNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvQmF0dGVyeUNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlDbGllbnQuaAppbmRleCAyYzg3YTQ0YmIwYmEwODFl
MWVhZWE1NTY4YjMyMjZlYzQyYzQyM2FiLi4xMmU1YmNmNzAzOGY5ZGMxNzRkZDkzNzhlMzVmZTBh
MzdkYjZmZWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvQmF0
dGVyeUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5
Q2xpZW50LmgKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBiYXR0
ZXJ5Q29udHJvbGxlckRlc3Ryb3llZCgpID0gMDsKIH07CiAKLXZvaWQgcHJvdmlkZUJhdHRlcnlU
byhQYWdlKiwgQmF0dGVyeUNsaWVudCopOwordm9pZCBwcm92aWRlQmF0dGVyeVRvKFBhZ2UqLCBC
YXR0ZXJ5Q2xpZW50Jik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9iYXR0ZXJ5L0JhdHRlcnlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YmF0dGVyeS9CYXR0ZXJ5Q29udHJvbGxlci5jcHAKaW5kZXggMjUyMTVjOTcwNDZjZTlmZTJiZmFi
MWUwYjRkMDFkMTRhYjEzNWI4ZC4uZTA2NzMzNzM5NjEwZDM0Mzc5OTc5MmJkODY2YzZiNTQ1ODg3
YzkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvQmF0dGVy
eUNvbnRyb2xsZXIuY3BwCkBAIC0yOSwyMyArMjksMjIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1CYXR0ZXJ5Q29udHJvbGxlcjo6QmF0dGVyeUNvbnRyb2xsZXIoQmF0dGVyeUNsaWVudCog
Y2xpZW50KQorQmF0dGVyeUNvbnRyb2xsZXI6OkJhdHRlcnlDb250cm9sbGVyKEJhdHRlcnlDbGll
bnQmIGNsaWVudCkKICAgICA6IG1fY2xpZW50KGNsaWVudCkKIHsKLSAgICBBU1NFUlQobV9jbGll
bnQpOwogfQogCiBCYXR0ZXJ5Q29udHJvbGxlcjo6fkJhdHRlcnlDb250cm9sbGVyKCkKIHsKICAg
ICBmb3IgKGF1dG8mIGxpc3RlbmVyIDogbV9saXN0ZW5lcnMpCiAgICAgICAgIGxpc3RlbmVyLT5i
YXR0ZXJ5Q29udHJvbGxlckRlc3Ryb3llZCgpOwotICAgIG1fY2xpZW50LT5iYXR0ZXJ5Q29udHJv
bGxlckRlc3Ryb3llZCgpOworICAgIG1fY2xpZW50LmJhdHRlcnlDb250cm9sbGVyRGVzdHJveWVk
KCk7CiB9CiAKIHZvaWQgQmF0dGVyeUNvbnRyb2xsZXI6OmFkZExpc3RlbmVyKEJhdHRlcnlNYW5h
Z2VyKiBiYXR0ZXJ5TWFuYWdlcikKIHsKICAgICBtX2xpc3RlbmVycy5hcHBlbmQoYmF0dGVyeU1h
bmFnZXIpOwotICAgIG1fY2xpZW50LT5zdGFydFVwZGF0aW5nKCk7CisgICAgbV9jbGllbnQuc3Rh
cnRVcGRhdGluZygpOwogCiAgICAgaWYgKG1fYmF0dGVyeVN0YXR1cykKICAgICAgICAgYmF0dGVy
eU1hbmFnZXItPnVwZGF0ZUJhdHRlcnlTdGF0dXMobV9iYXR0ZXJ5U3RhdHVzKTsKQEAgLTU4LDEw
ICs1NywxMCBAQCB2b2lkIEJhdHRlcnlDb250cm9sbGVyOjpyZW1vdmVMaXN0ZW5lcihCYXR0ZXJ5
TWFuYWdlciogYmF0dGVyeU1hbmFnZXIpCiAgICAgICAgIHJldHVybjsKICAgICBtX2xpc3RlbmVy
cy5yZW1vdmUocG9zKTsKICAgICBpZiAobV9saXN0ZW5lcnMuaXNFbXB0eSgpKQotICAgICAgICBt
X2NsaWVudC0+c3RvcFVwZGF0aW5nKCk7CisgICAgICAgIG1fY2xpZW50LnN0b3BVcGRhdGluZygp
OwogfQogCi12b2lkIEJhdHRlcnlDb250cm9sbGVyOjp1cGRhdGVCYXR0ZXJ5U3RhdHVzKFBhc3NS
ZWZQdHI8QmF0dGVyeVN0YXR1cz4gYmF0dGVyeVN0YXR1cykKK3ZvaWQgQmF0dGVyeUNvbnRyb2xs
ZXI6OnVwZGF0ZUJhdHRlcnlTdGF0dXMoUmVmUHRyPEJhdHRlcnlTdGF0dXM+JiBiYXR0ZXJ5U3Rh
dHVzKQogewogICAgIFJlZlB0cjxCYXR0ZXJ5U3RhdHVzPiBzdGF0dXMgPSBiYXR0ZXJ5U3RhdHVz
OwogICAgIGlmIChtX2JhdHRlcnlTdGF0dXMpIHsKQEAgLTgyLDcgKzgxLDcgQEAgdm9pZCBCYXR0
ZXJ5Q29udHJvbGxlcjo6dXBkYXRlQmF0dGVyeVN0YXR1cyhQYXNzUmVmUHRyPEJhdHRlcnlTdGF0
dXM+IGJhdHRlcnlTdGEKICAgICBtX2JhdHRlcnlTdGF0dXMgPSBzdGF0dXMucmVsZWFzZSgpOwog
fQogCi12b2lkIEJhdHRlcnlDb250cm9sbGVyOjpkaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEJhdHRlcnlTdGF0dXM+IGJhdHRl
cnlTdGF0dXMpCit2b2lkIEJhdHRlcnlDb250cm9sbGVyOjpkaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVz
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8QmF0dGVyeVN0YXR1cz4mIGJh
dHRlcnlTdGF0dXMpCiB7CiAgICAgUmVmPEV2ZW50PiBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZl
bnRUeXBlLCBmYWxzZSwgZmFsc2UpOwogICAgIFJlZlB0cjxCYXR0ZXJ5U3RhdHVzPiBiYXR0ZXJ5
ID0gYmF0dGVyeVN0YXR1czsKQEAgLTk1LDcgKzk0LDcgQEAgY29uc3QgY2hhciogQmF0dGVyeUNv
bnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCkKICAgICByZXR1cm4gIkJhdHRlcnlDb250cm9sbGVy
IjsKIH0KIAotdm9pZCBwcm92aWRlQmF0dGVyeVRvKFBhZ2UqIHBhZ2UsIEJhdHRlcnlDbGllbnQq
IGNsaWVudCkKK3ZvaWQgcHJvdmlkZUJhdHRlcnlUbyhQYWdlKiBwYWdlLCBCYXR0ZXJ5Q2xpZW50
JiBjbGllbnQpCiB7CiAgICAgU3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRvKHBhZ2UsIEJhdHRl
cnlDb250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPEJhdHRlcnlD
b250cm9sbGVyPihjbGllbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYmF0dGVyeS9CYXR0ZXJ5Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9i
YXR0ZXJ5L0JhdHRlcnlDb250cm9sbGVyLmgKaW5kZXggZDBiZTk0YTc1OGMxMTg4NGIyYzkwN2Fk
MzA3MTEwMzUxMmNmNDdjNC4uMmU1OGVhNjhiZmVhYzhlNjk4NmMxMDFjMDlhZmIzYjc2ZWMzYTlm
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlDb250
cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlDb250
cm9sbGVyLmgKQEAgLTMyLDEzICszMiwxMyBAQCBjbGFzcyBCYXR0ZXJ5Q2xpZW50OwogCiBjbGFz
cyBCYXR0ZXJ5Q29udHJvbGxlciA6IHB1YmxpYyBTdXBwbGVtZW50PFBhZ2U+IHsKIHB1YmxpYzoK
LSAgICBleHBsaWNpdCBCYXR0ZXJ5Q29udHJvbGxlcihCYXR0ZXJ5Q2xpZW50Kik7CisgICAgZXhw
bGljaXQgQmF0dGVyeUNvbnRyb2xsZXIoQmF0dGVyeUNsaWVudCYpOwogICAgIH5CYXR0ZXJ5Q29u
dHJvbGxlcigpOwogCiAgICAgdm9pZCBhZGRMaXN0ZW5lcihCYXR0ZXJ5TWFuYWdlciopOwogICAg
IHZvaWQgcmVtb3ZlTGlzdGVuZXIoQmF0dGVyeU1hbmFnZXIqKTsKLSAgICB2b2lkIHVwZGF0ZUJh
dHRlcnlTdGF0dXMoUGFzc1JlZlB0cjxCYXR0ZXJ5U3RhdHVzPik7Ci0gICAgdm9pZCBkaWRDaGFu
Z2VCYXR0ZXJ5U3RhdHVzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRy
PEJhdHRlcnlTdGF0dXM+KTsKKyAgICB2b2lkIHVwZGF0ZUJhdHRlcnlTdGF0dXMoUmVmUHRyPEJh
dHRlcnlTdGF0dXM+Jik7CisgICAgdm9pZCBkaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8QmF0dGVyeVN0YXR1cz4mKTsKIAogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogICAgIHN0YXRpYyBCYXR0ZXJ5Q29u
dHJvbGxlciogZnJvbShQYWdlKiBwYWdlKSB7IHJldHVybiBzdGF0aWNfY2FzdDxCYXR0ZXJ5Q29u
dHJvbGxlcio+KFN1cHBsZW1lbnQ8UGFnZT46OmZyb20ocGFnZSwgc3VwcGxlbWVudE5hbWUoKSkp
OyB9CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBWZWN0
b3I8QmF0dGVyeU1hbmFnZXIqPiBMaXN0ZW5lclZlY3RvcjsKIAotICAgIEJhdHRlcnlDbGllbnQq
IG1fY2xpZW50OworICAgIEJhdHRlcnlDbGllbnQmIG1fY2xpZW50OwogICAgIExpc3RlbmVyVmVj
dG9yIG1fbGlzdGVuZXJzOwogCiAgICAgUmVmUHRyPEJhdHRlcnlTdGF0dXM+IG1fYmF0dGVyeVN0
YXR1czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvQmF0dGVyeU1hbmFn
ZXIuY3BwCmluZGV4IDQwNDlhNDUzZjRlMTFiYWM1MzlkYWMyZThlZGQwMmU4MWFjN2Y5YTUuLjFi
Y2NjZGI3N2VlMjExOTgzMDhiNGFiYjQ2YmNjYjZmNTc0YThiNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5TWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlNYW5hZ2VyLmNwcApAQCAtNzcsMTMgKzc3
LDEzIEBAIGRvdWJsZSBCYXR0ZXJ5TWFuYWdlcjo6bGV2ZWwoKQogICAgIHJldHVybiBtX2JhdHRl
cnlTdGF0dXMgPyBtX2JhdHRlcnlTdGF0dXMtPmxldmVsKCkgOiAxOwogfQogCi12b2lkIEJhdHRl
cnlNYW5hZ2VyOjpkaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKEV2ZW50JiBldmVudCwgUGFzc1JlZlB0
cjxCYXR0ZXJ5U3RhdHVzPiBiYXR0ZXJ5U3RhdHVzKQordm9pZCBCYXR0ZXJ5TWFuYWdlcjo6ZGlk
Q2hhbmdlQmF0dGVyeVN0YXR1cyhFdmVudCYgZXZlbnQsIFJlZlB0cjxCYXR0ZXJ5U3RhdHVzPiYg
YmF0dGVyeVN0YXR1cykKIHsKICAgICB1cGRhdGVCYXR0ZXJ5U3RhdHVzKGJhdHRlcnlTdGF0dXMp
OwogICAgIGRpc3BhdGNoRXZlbnQoZXZlbnQpOwogfQogCi12b2lkIEJhdHRlcnlNYW5hZ2VyOjp1
cGRhdGVCYXR0ZXJ5U3RhdHVzKFBhc3NSZWZQdHI8QmF0dGVyeVN0YXR1cz4gYmF0dGVyeVN0YXR1
cykKK3ZvaWQgQmF0dGVyeU1hbmFnZXI6OnVwZGF0ZUJhdHRlcnlTdGF0dXMoUmVmUHRyPEJhdHRl
cnlTdGF0dXM+JiBiYXR0ZXJ5U3RhdHVzKQogewogICAgIG1fYmF0dGVyeVN0YXR1cyA9IGJhdHRl
cnlTdGF0dXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkv
QmF0dGVyeU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5
TWFuYWdlci5oCmluZGV4IGE3NGRhY2Y1Y2U0ZjA5NWE4ZDFkNDM0ZDAxYjhiNGIyMTJiMDNiMjEu
LmFkNzUwMTlkMjVlNzA2MTczMjk3NTk4MTExMTM5NDRlODc4MzRjZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5TWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5TWFuYWdlci5oCkBAIC00Niw4ICs0Niw4
IEBAIHB1YmxpYzoKICAgICBkb3VibGUgZGlzY2hhcmdpbmdUaW1lKCk7CiAgICAgZG91YmxlIGxl
dmVsKCk7CiAKLSAgICB2b2lkIGRpZENoYW5nZUJhdHRlcnlTdGF0dXMoRXZlbnQmLCBQYXNzUmVm
UHRyPEJhdHRlcnlTdGF0dXM+KTsKLSAgICB2b2lkIHVwZGF0ZUJhdHRlcnlTdGF0dXMoUGFzc1Jl
ZlB0cjxCYXR0ZXJ5U3RhdHVzPik7CisgICAgdm9pZCBkaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKEV2
ZW50JiwgUmVmUHRyPEJhdHRlcnlTdGF0dXM+Jik7CisgICAgdm9pZCB1cGRhdGVCYXR0ZXJ5U3Rh
dHVzKFJlZlB0cjxCYXR0ZXJ5U3RhdHVzPiYpOwogICAgIHZvaWQgYmF0dGVyeUNvbnRyb2xsZXJE
ZXN0cm95ZWQoKSB7IG1fYmF0dGVyeUNvbnRyb2xsZXIgPSBudWxscHRyOyB9CiAKICAgICB1c2lu
ZyBSZWZDb3VudGVkPEJhdHRlcnlNYW5hZ2VyPjo6cmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlTdGF0dXMuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5U3RhdHVzLmgKaW5kZXggNTE0YThmYmI4YWFhNWU0YzNkNThj
YTBhYTY1NTk1YWIwZDg2Y2E3Yy4uZjU4NGVlNzI5YjliYzk1ZjkzODFkYjg1NjZmZDNmMzk4YmU5
MmY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlT
dGF0dXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvQmF0dGVyeVN0YXR1
cy5oCkBAIC0yMiw3ICsyMiw3IEBACiAKICNpZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCiAKLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKaW5kZXggZDQ5NDRjZTU0YjBiOTcyZjVhMjgxNzJjZDVhZWY1Mjhk
YmJmODMzNi4uNThjOTg0NWFmZTViNjA2MDk2MDNjYWUwYzM0YmRjNWUxZDQ0ZTc4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTU2MCw3ICsxNTYwLDggQEAgdm9pZCBJ
bnRlcm5hbHM6OnNldEJhdHRlcnlTdGF0dXMoY29uc3QgU3RyaW5nJiBldmVudFR5cGUsIGJvb2wg
Y2hhcmdpbmcsIGRvdWJsZQogICAgIH0KIAogI2lmIEVOQUJMRShCQVRURVJZX1NUQVRVUykKLSAg
ICBCYXR0ZXJ5Q29udHJvbGxlcjo6ZnJvbShkb2N1bWVudC0+cGFnZSgpKS0+ZGlkQ2hhbmdlQmF0
dGVyeVN0YXR1cyhldmVudFR5cGUsIEJhdHRlcnlTdGF0dXM6OmNyZWF0ZShjaGFyZ2luZywgY2hh
cmdpbmdUaW1lLCBkaXNjaGFyZ2luZ1RpbWUsIGxldmVsKSk7CisgICAgUmVmUHRyPEJhdHRlcnlT
dGF0dXM+IHN0YXR1cyA9IEJhdHRlcnlTdGF0dXM6OmNyZWF0ZShjaGFyZ2luZywgY2hhcmdpbmdU
aW1lLCBkaXNjaGFyZ2luZ1RpbWUsIGxldmVsKTsKKyAgICBCYXR0ZXJ5Q29udHJvbGxlcjo6ZnJv
bShkb2N1bWVudC0+cGFnZSgpKS0+ZGlkQ2hhbmdlQmF0dGVyeVN0YXR1cyhldmVudFR5cGUsIHN0
YXR1cyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShldmVudFR5cGUpOwogICAgIFVOVVNFRF9Q
QVJBTShjaGFyZ2luZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Jh
dHRlcnkvV2ViQmF0dGVyeU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9C
YXR0ZXJ5L1dlYkJhdHRlcnlNYW5hZ2VyLmNwcAppbmRleCBkYWU1MjNiYmJhM2IxOWQwYmU0M2Nl
NWQ3ZmU2ZTI4NWVlMTMzMWExLi5hMWQwM2IwNDhhMTAzNDNiODAxYTljNTExYzUxZWNiMTFiNTU5
YTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0JhdHRlcnkvV2ViQmF0
dGVyeU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQmF0dGVyeS9X
ZWJCYXR0ZXJ5TWFuYWdlci5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBXZWJCYXR0ZXJ5TWFu
YWdlcjo6ZGlkQ2hhbmdlQmF0dGVyeVN0YXR1cyhjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgZXZl
bnRUeXAKIAogICAgIGZvciAoYXV0byogcGFnZSA6IG1fcGFnZVNldCkgewogICAgICAgICBpZiAo
cGFnZS0+Y29yZVBhZ2UoKSkKLSAgICAgICAgICAgIEJhdHRlcnlDb250cm9sbGVyOjpmcm9tKHBh
Z2UtPmNvcmVQYWdlKCkpLT5kaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKGV2ZW50VHlwZSwgc3RhdHVz
LmdldCgpKTsKKyAgICAgICAgICAgIEJhdHRlcnlDb250cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQ
YWdlKCkpLT5kaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKGV2ZW50VHlwZSwgc3RhdHVzKTsKICAgICB9
CiB9CiAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBXZWJCYXR0ZXJ5TWFuYWdlcjo6dXBkYXRlQmF0
dGVyeVN0YXR1cyhjb25zdCBXZWJCYXR0ZXJ5U3RhdHVzOjpEYXRhJiBkYXRhKQogCiAgICAgZm9y
IChhdXRvKiBwYWdlIDogbV9wYWdlU2V0KSB7CiAgICAgICAgIGlmIChwYWdlLT5jb3JlUGFnZSgp
KQotICAgICAgICAgICAgQmF0dGVyeUNvbnRyb2xsZXI6OmZyb20ocGFnZS0+Y29yZVBhZ2UoKSkt
PnVwZGF0ZUJhdHRlcnlTdGF0dXMoc3RhdHVzLmdldCgpKTsKKyAgICAgICAgICAgIEJhdHRlcnlD
b250cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT51cGRhdGVCYXR0ZXJ5U3RhdHVzKHN0
YXR1cyk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKaW5kZXggNzFmNDkyNTgwM2NiOWI2ZmVlOGRjMmQ4NDdiOGQwNmY0NmJmNmE2
Zi4uZDQ1ZWIyZmE0NGFiOGM3NTgwM2YzNDY2NmI4M2RkZTlkNTYwNWIyMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNDMyLDcgKzQzMiw3
IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIG1fZHJhd2luZ0FyZWEtPnVwZGF0ZVByZWZl
cmVuY2VzKHBhcmFtZXRlcnMuc3RvcmUpOwogCiAjaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQot
ICAgIFdlYkNvcmU6OnByb3ZpZGVCYXR0ZXJ5VG8obV9wYWdlLmdldCgpLCBuZXcgV2ViQmF0dGVy
eUNsaWVudCh0aGlzKSk7CisgICAgV2ViQ29yZTo6cHJvdmlkZUJhdHRlcnlUbyhtX3BhZ2UuZ2V0
KCksICpuZXcgV2ViQmF0dGVyeUNsaWVudCh0aGlzKSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoR0VP
TE9DQVRJT04pCiAgICAgV2ViQ29yZTo6cHJvdmlkZUdlb2xvY2F0aW9uVG8obV9wYWdlLmdldCgp
LCBuZXcgV2ViR2VvbG9jYXRpb25DbGllbnQodGhpcykpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279735</attachid>
            <date>2016-05-24 18:15:09 -0700</date>
            <delta_ts>2016-05-25 02:21:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157062-20160525101615.patch</filename>
            <type>text/plain</type>
            <size>14081</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxMzE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDZmMzgwMmRiMTRmNjU5
NzQzZjA4ZThlMzkyOTNlMGM1YmJkNTdiNS4uODQ5NDVkMmViMWVmNDdlNzFlMmFkNGQwODY1MGIz
YjMxM2VmNWI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE2LTA1LTIzICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBQdXJnZSBQYXNz
UmVmUHRyIGluIE1vZHVsZXMvYmF0dGVyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MDYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXNlIFJlZlB0cjw+JiB0byByZWR1Y2UgdXNlcyBvZiBQYXNzUmVm
UHRyIGluIFdlYktpdC4KKworICAgICAgICAqIE1vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5Q2xpZW50
Lmg6CisgICAgICAgICogTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJhdHRlcnlDb250cm9sbGVyOjpCYXR0ZXJ5Q29udHJvbGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXR0ZXJ5Q29udHJvbGxlcjo6fkJhdHRlcnlDb250cm9sbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkJhdHRlcnlDb250cm9sbGVyOjphZGRMaXN0ZW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpCYXR0ZXJ5Q29udHJvbGxlcjo6cmVtb3ZlTGlzdGVuZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6QmF0dGVyeUNvbnRyb2xsZXI6OnVwZGF0ZUJhdHRlcnlTdGF0dXMpOgorICAg
ICAgICAoV2ViQ29yZTo6QmF0dGVyeUNvbnRyb2xsZXI6OmRpZENoYW5nZUJhdHRlcnlTdGF0dXMp
OgorICAgICAgICAoV2ViQ29yZTo6cHJvdmlkZUJhdHRlcnlUbyk6CisgICAgICAgICogTW9kdWxl
cy9iYXR0ZXJ5L0JhdHRlcnlDb250cm9sbGVyLmg6CisgICAgICAgICogTW9kdWxlcy9iYXR0ZXJ5
L0JhdHRlcnlNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhdHRlcnlNYW5hZ2VyOjpk
aWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkJhdHRlcnlNYW5hZ2Vy
Ojp1cGRhdGVCYXR0ZXJ5U3RhdHVzKToKKyAgICAgICAgKiBNb2R1bGVzL2JhdHRlcnkvQmF0dGVy
eU1hbmFnZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2JhdHRlcnkvQmF0dGVyeVN0YXR1cy5oOgor
ICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6c2V0QmF0dGVyeVN0YXR1cyk6CisKIDIwMTYtMDUtMjMgIFphbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBDaGFuZ2luZyBib3JkZXIgY29sb3IgYW5kIHNpemUg
c2ltdWx0YW5lb3VzbHkgZmFpbHMgdG8gcmVwYWludC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyOTA5OGI2MDQw
YTI1ZTJiMzIzNzRmOTM4YzkxMThlZTliOGQyMWIzLi4wNDY4MTMzOGU0OTU5YmVlOWExNmYyOTA1
OGJmNDkxODljYmJkYTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTYtMDUtMjMg
IEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUB3ZWJraXQub3JnPgorCisgICAgICAgIFB1cmdl
IFBhc3NSZWZQdHIgaW4gTW9kdWxlcy9iYXR0ZXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTcwNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgUmVmUHRyPD4mIHRvIHJlZHVjZSB1c2VzIG9mIFBh
c3NSZWZQdHIgaW4gV2ViS2l0LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9CYXR0ZXJ5L1dlYkJh
dHRlcnlNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmF0dGVyeU1hbmFnZXI6OmRp
ZENoYW5nZUJhdHRlcnlTdGF0dXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYXR0ZXJ5TWFuYWdl
cjo6dXBkYXRlQmF0dGVyeVN0YXR1cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX3Nob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92
ZUV2ZW50cyk6CisKIDIwMTYtMDUtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBHZW5lcmF0ZSBiaW5kaW5ncyBjb2RlIGZvciBFdmVudFRhcmdldC5hZGRFdmVu
dExpc3RlbmVyKCkgLyByZW1vdmVFdmVudExpc3RlbmVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2JhdHRlcnkvQmF0dGVyeUNsaWVudC5oCmluZGV4IDJjODdhNDRiYjBiYTA4MWUxZWFl
YTU1NjhiMzIyNmVjNDJjNDIzYWIuLjk0ZmJiNTBjMjkxNTgyYzg5NmIwMGFhNmI2M2ViYmZkYTJi
MzM0NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlDbGll
bnQuaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJhdHRlcnlD
b250cm9sbGVyRGVzdHJveWVkKCkgPSAwOwogfTsKIAotdm9pZCBwcm92aWRlQmF0dGVyeVRvKFBh
Z2UqLCBCYXR0ZXJ5Q2xpZW50Kik7Cit2b2lkIHByb3ZpZGVCYXR0ZXJ5VG8oUGFnZSYsIEJhdHRl
cnlDbGllbnQmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Jh
dHRlcnkvQmF0dGVyeUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0
ZXJ5L0JhdHRlcnlDb250cm9sbGVyLmNwcAppbmRleCAyNTIxNWM5NzA0NmNlOWZlMmJmYWIxZTBi
NGQwMWQxNGFiMTM1YjhkLi4wZmM0YjU1NWQ1OWYzMmZlMzU0ZWNhNmM2NWM1MmIxZmFlMTQ1MTA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvQmF0dGVyeUNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5Q29u
dHJvbGxlci5jcHAKQEAgLTI5LDI2ICsyOSwyNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUJhdHRlcnlDb250cm9sbGVyOjpCYXR0ZXJ5Q29udHJvbGxlcihCYXR0ZXJ5Q2xpZW50KiBjbGll
bnQpCitCYXR0ZXJ5Q29udHJvbGxlcjo6QmF0dGVyeUNvbnRyb2xsZXIoQmF0dGVyeUNsaWVudCYg
Y2xpZW50KQogICAgIDogbV9jbGllbnQoY2xpZW50KQogewotICAgIEFTU0VSVChtX2NsaWVudCk7
CiB9CiAKIEJhdHRlcnlDb250cm9sbGVyOjp+QmF0dGVyeUNvbnRyb2xsZXIoKQogewogICAgIGZv
ciAoYXV0byYgbGlzdGVuZXIgOiBtX2xpc3RlbmVycykKICAgICAgICAgbGlzdGVuZXItPmJhdHRl
cnlDb250cm9sbGVyRGVzdHJveWVkKCk7Ci0gICAgbV9jbGllbnQtPmJhdHRlcnlDb250cm9sbGVy
RGVzdHJveWVkKCk7CisgICAgbV9jbGllbnQuYmF0dGVyeUNvbnRyb2xsZXJEZXN0cm95ZWQoKTsK
IH0KIAogdm9pZCBCYXR0ZXJ5Q29udHJvbGxlcjo6YWRkTGlzdGVuZXIoQmF0dGVyeU1hbmFnZXIq
IGJhdHRlcnlNYW5hZ2VyKQogewogICAgIG1fbGlzdGVuZXJzLmFwcGVuZChiYXR0ZXJ5TWFuYWdl
cik7Ci0gICAgbV9jbGllbnQtPnN0YXJ0VXBkYXRpbmcoKTsKKyAgICBtX2NsaWVudC5zdGFydFVw
ZGF0aW5nKCk7CiAKICAgICBpZiAobV9iYXR0ZXJ5U3RhdHVzKQotICAgICAgICBiYXR0ZXJ5TWFu
YWdlci0+dXBkYXRlQmF0dGVyeVN0YXR1cyhtX2JhdHRlcnlTdGF0dXMpOworICAgICAgICBiYXR0
ZXJ5TWFuYWdlci0+dXBkYXRlQmF0dGVyeVN0YXR1cyhtX2JhdHRlcnlTdGF0dXMuZ2V0KCkpOwog
fQogCiB2b2lkIEJhdHRlcnlDb250cm9sbGVyOjpyZW1vdmVMaXN0ZW5lcihCYXR0ZXJ5TWFuYWdl
ciogYmF0dGVyeU1hbmFnZXIpCkBAIC01OCwzNiArNTcsMzQgQEAgdm9pZCBCYXR0ZXJ5Q29udHJv
bGxlcjo6cmVtb3ZlTGlzdGVuZXIoQmF0dGVyeU1hbmFnZXIqIGJhdHRlcnlNYW5hZ2VyKQogICAg
ICAgICByZXR1cm47CiAgICAgbV9saXN0ZW5lcnMucmVtb3ZlKHBvcyk7CiAgICAgaWYgKG1fbGlz
dGVuZXJzLmlzRW1wdHkoKSkKLSAgICAgICAgbV9jbGllbnQtPnN0b3BVcGRhdGluZygpOworICAg
ICAgICBtX2NsaWVudC5zdG9wVXBkYXRpbmcoKTsKIH0KIAotdm9pZCBCYXR0ZXJ5Q29udHJvbGxl
cjo6dXBkYXRlQmF0dGVyeVN0YXR1cyhQYXNzUmVmUHRyPEJhdHRlcnlTdGF0dXM+IGJhdHRlcnlT
dGF0dXMpCit2b2lkIEJhdHRlcnlDb250cm9sbGVyOjp1cGRhdGVCYXR0ZXJ5U3RhdHVzKFJlZlB0
cjxCYXR0ZXJ5U3RhdHVzPiYmIGJhdHRlcnlTdGF0dXMpCiB7Ci0gICAgUmVmUHRyPEJhdHRlcnlT
dGF0dXM+IHN0YXR1cyA9IGJhdHRlcnlTdGF0dXM7CiAgICAgaWYgKG1fYmF0dGVyeVN0YXR1cykg
ewotICAgICAgICBpZiAobV9iYXR0ZXJ5U3RhdHVzLT5jaGFyZ2luZygpICE9IHN0YXR1cy0+Y2hh
cmdpbmcoKSkKLSAgICAgICAgICAgIGRpZENoYW5nZUJhdHRlcnlTdGF0dXMoV2ViQ29yZTo6ZXZl
bnROYW1lcygpLmNoYXJnaW5nY2hhbmdlRXZlbnQsIHN0YXR1cyk7Ci0gICAgICAgIGVsc2UgaWYg
KHN0YXR1cy0+Y2hhcmdpbmcoKSAmJiBtX2JhdHRlcnlTdGF0dXMtPmNoYXJnaW5nVGltZSgpICE9
IHN0YXR1cy0+Y2hhcmdpbmdUaW1lKCkpCi0gICAgICAgICAgICBkaWRDaGFuZ2VCYXR0ZXJ5U3Rh
dHVzKFdlYkNvcmU6OmV2ZW50TmFtZXMoKS5jaGFyZ2luZ3RpbWVjaGFuZ2VFdmVudCwgc3RhdHVz
KTsKLSAgICAgICAgZWxzZSBpZiAoIXN0YXR1cy0+Y2hhcmdpbmcoKSAmJiBtX2JhdHRlcnlTdGF0
dXMtPmRpc2NoYXJnaW5nVGltZSgpICE9IHN0YXR1cy0+ZGlzY2hhcmdpbmdUaW1lKCkpCi0gICAg
ICAgICAgICBkaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKFdlYkNvcmU6OmV2ZW50TmFtZXMoKS5kaXNj
aGFyZ2luZ3RpbWVjaGFuZ2VFdmVudCwgc3RhdHVzKTsKLQotICAgICAgICBpZiAobV9iYXR0ZXJ5
U3RhdHVzLT5sZXZlbCgpICE9IHN0YXR1cy0+bGV2ZWwoKSkKLSAgICAgICAgICAgIGRpZENoYW5n
ZUJhdHRlcnlTdGF0dXMoV2ViQ29yZTo6ZXZlbnROYW1lcygpLmxldmVsY2hhbmdlRXZlbnQsIHN0
YXR1cyk7CisgICAgICAgIGlmIChtX2JhdHRlcnlTdGF0dXMtPmNoYXJnaW5nKCkgIT0gYmF0dGVy
eVN0YXR1cy0+Y2hhcmdpbmcoKSkKKyAgICAgICAgICAgIGRpZENoYW5nZUJhdHRlcnlTdGF0dXMo
V2ViQ29yZTo6ZXZlbnROYW1lcygpLmNoYXJnaW5nY2hhbmdlRXZlbnQsIGJhdHRlcnlTdGF0dXMu
Z2V0KCkpOworICAgICAgICBlbHNlIGlmIChiYXR0ZXJ5U3RhdHVzLT5jaGFyZ2luZygpICYmIG1f
YmF0dGVyeVN0YXR1cy0+Y2hhcmdpbmdUaW1lKCkgIT0gYmF0dGVyeVN0YXR1cy0+Y2hhcmdpbmdU
aW1lKCkpCisgICAgICAgICAgICBkaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKFdlYkNvcmU6OmV2ZW50
TmFtZXMoKS5jaGFyZ2luZ3RpbWVjaGFuZ2VFdmVudCwgYmF0dGVyeVN0YXR1cy5nZXQoKSk7Cisg
ICAgICAgIGVsc2UgaWYgKCFiYXR0ZXJ5U3RhdHVzLT5jaGFyZ2luZygpICYmIG1fYmF0dGVyeVN0
YXR1cy0+ZGlzY2hhcmdpbmdUaW1lKCkgIT0gYmF0dGVyeVN0YXR1cy0+ZGlzY2hhcmdpbmdUaW1l
KCkpCisgICAgICAgICAgICBkaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKFdlYkNvcmU6OmV2ZW50TmFt
ZXMoKS5kaXNjaGFyZ2luZ3RpbWVjaGFuZ2VFdmVudCwgYmF0dGVyeVN0YXR1cy5nZXQoKSk7CisK
KyAgICAgICAgaWYgKG1fYmF0dGVyeVN0YXR1cy0+bGV2ZWwoKSAhPSBiYXR0ZXJ5U3RhdHVzLT5s
ZXZlbCgpKQorICAgICAgICAgICAgZGlkQ2hhbmdlQmF0dGVyeVN0YXR1cyhXZWJDb3JlOjpldmVu
dE5hbWVzKCkubGV2ZWxjaGFuZ2VFdmVudCwgYmF0dGVyeVN0YXR1cy5nZXQoKSk7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgZm9yIChhdXRvJiBsaXN0ZW5lciA6IG1fbGlzdGVuZXJzKQotICAgICAg
ICAgICAgbGlzdGVuZXItPnVwZGF0ZUJhdHRlcnlTdGF0dXMoc3RhdHVzKTsKKyAgICAgICAgICAg
IGxpc3RlbmVyLT51cGRhdGVCYXR0ZXJ5U3RhdHVzKGJhdHRlcnlTdGF0dXMuZ2V0KCkpOwogICAg
IH0KIAotICAgIG1fYmF0dGVyeVN0YXR1cyA9IHN0YXR1cy5yZWxlYXNlKCk7CisgICAgbV9iYXR0
ZXJ5U3RhdHVzID0gV1RGTW92ZShiYXR0ZXJ5U3RhdHVzKTsKIH0KIAotdm9pZCBCYXR0ZXJ5Q29u
dHJvbGxlcjo6ZGlkQ2hhbmdlQmF0dGVyeVN0YXR1cyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUGFzc1JlZlB0cjxCYXR0ZXJ5U3RhdHVzPiBiYXR0ZXJ5U3RhdHVzKQordm9pZCBCYXR0
ZXJ5Q29udHJvbGxlcjo6ZGlkQ2hhbmdlQmF0dGVyeVN0YXR1cyhjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgQmF0dGVyeVN0YXR1cyogYmF0dGVyeVN0YXR1cykKIHsKICAgICBSZWY8RXZl
bnQ+IGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGZhbHNlLCBmYWxzZSk7Ci0gICAg
UmVmUHRyPEJhdHRlcnlTdGF0dXM+IGJhdHRlcnkgPSBiYXR0ZXJ5U3RhdHVzOwogICAgIGZvciAo
YXV0byYgbGlzdGVuZXIgOiBtX2xpc3RlbmVycykKLSAgICAgICAgbGlzdGVuZXItPmRpZENoYW5n
ZUJhdHRlcnlTdGF0dXMoZXZlbnQsIGJhdHRlcnkpOworICAgICAgICBsaXN0ZW5lci0+ZGlkQ2hh
bmdlQmF0dGVyeVN0YXR1cyhldmVudCwgYmF0dGVyeVN0YXR1cyk7CiB9CiAKIGNvbnN0IGNoYXIq
IEJhdHRlcnlDb250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpCkBAIC05NSw5ICs5Miw5IEBAIGNv
bnN0IGNoYXIqIEJhdHRlcnlDb250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpCiAgICAgcmV0dXJu
ICJCYXR0ZXJ5Q29udHJvbGxlciI7CiB9CiAKLXZvaWQgcHJvdmlkZUJhdHRlcnlUbyhQYWdlKiBw
YWdlLCBCYXR0ZXJ5Q2xpZW50KiBjbGllbnQpCit2b2lkIHByb3ZpZGVCYXR0ZXJ5VG8oUGFnZSYg
cGFnZSwgQmF0dGVyeUNsaWVudCYgY2xpZW50KQogewotICAgIFN1cHBsZW1lbnQ8UGFnZT46OnBy
b3ZpZGVUbyhwYWdlLCBCYXR0ZXJ5Q29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjpt
YWtlX3VuaXF1ZTxCYXR0ZXJ5Q29udHJvbGxlcj4oY2xpZW50KSk7CisgICAgU3VwcGxlbWVudDxQ
YWdlPjo6cHJvdmlkZVRvKCZwYWdlLCBCYXR0ZXJ5Q29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUo
KSwgc3RkOjptYWtlX3VuaXF1ZTxCYXR0ZXJ5Q29udHJvbGxlcj4oY2xpZW50KSk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5Q29udHJv
bGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlDb250cm9sbGVy
LmgKaW5kZXggZDBiZTk0YTc1OGMxMTg4NGIyYzkwN2FkMzA3MTEwMzUxMmNmNDdjNC4uNDVhYzQw
MjkwZTY0MTQyMzQ1ZjcyMmM2YzgyNWY2OThhOGMwNmRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlDb250cm9sbGVyLmgKQEAgLTMyLDEzICszMiwx
MyBAQCBjbGFzcyBCYXR0ZXJ5Q2xpZW50OwogCiBjbGFzcyBCYXR0ZXJ5Q29udHJvbGxlciA6IHB1
YmxpYyBTdXBwbGVtZW50PFBhZ2U+IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBCYXR0ZXJ5Q29u
dHJvbGxlcihCYXR0ZXJ5Q2xpZW50Kik7CisgICAgZXhwbGljaXQgQmF0dGVyeUNvbnRyb2xsZXIo
QmF0dGVyeUNsaWVudCYpOwogICAgIH5CYXR0ZXJ5Q29udHJvbGxlcigpOwogCiAgICAgdm9pZCBh
ZGRMaXN0ZW5lcihCYXR0ZXJ5TWFuYWdlciopOwogICAgIHZvaWQgcmVtb3ZlTGlzdGVuZXIoQmF0
dGVyeU1hbmFnZXIqKTsKLSAgICB2b2lkIHVwZGF0ZUJhdHRlcnlTdGF0dXMoUGFzc1JlZlB0cjxC
YXR0ZXJ5U3RhdHVzPik7Ci0gICAgdm9pZCBkaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEJhdHRlcnlTdGF0dXM+KTsKKyAgICB2
b2lkIHVwZGF0ZUJhdHRlcnlTdGF0dXMoUmVmUHRyPEJhdHRlcnlTdGF0dXM+JiYpOworICAgIHZv
aWQgZGlkQ2hhbmdlQmF0dGVyeVN0YXR1cyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
QmF0dGVyeVN0YXR1cyopOwogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1l
KCk7CiAgICAgc3RhdGljIEJhdHRlcnlDb250cm9sbGVyKiBmcm9tKFBhZ2UqIHBhZ2UpIHsgcmV0
dXJuIHN0YXRpY19jYXN0PEJhdHRlcnlDb250cm9sbGVyKj4oU3VwcGxlbWVudDxQYWdlPjo6ZnJv
bShwYWdlLCBzdXBwbGVtZW50TmFtZSgpKSk7IH0KQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICB0eXBlZGVmIFZlY3RvcjxCYXR0ZXJ5TWFuYWdlcio+IExpc3RlbmVyVmVj
dG9yOwogCi0gICAgQmF0dGVyeUNsaWVudCogbV9jbGllbnQ7CisgICAgQmF0dGVyeUNsaWVudCYg
bV9jbGllbnQ7CiAgICAgTGlzdGVuZXJWZWN0b3IgbV9saXN0ZW5lcnM7CiAKICAgICBSZWZQdHI8
QmF0dGVyeVN0YXR1cz4gbV9iYXR0ZXJ5U3RhdHVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5TWFuYWdlci5jcHAKaW5kZXggNDA0OWE0NTNmNGUxMWJhYzUz
OWRhYzJlOGVkZDAyZTgxYWM3ZjlhNS4uMDQ1MDI0NjJlMTcwYmRmZmU4ZmQzODc4Y2U2NjQ3NzNl
ZGQxMjUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRl
cnlNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvQmF0dGVy
eU1hbmFnZXIuY3BwCkBAIC03NywxMyArNzcsMTMgQEAgZG91YmxlIEJhdHRlcnlNYW5hZ2VyOjps
ZXZlbCgpCiAgICAgcmV0dXJuIG1fYmF0dGVyeVN0YXR1cyA/IG1fYmF0dGVyeVN0YXR1cy0+bGV2
ZWwoKSA6IDE7CiB9CiAKLXZvaWQgQmF0dGVyeU1hbmFnZXI6OmRpZENoYW5nZUJhdHRlcnlTdGF0
dXMoRXZlbnQmIGV2ZW50LCBQYXNzUmVmUHRyPEJhdHRlcnlTdGF0dXM+IGJhdHRlcnlTdGF0dXMp
Cit2b2lkIEJhdHRlcnlNYW5hZ2VyOjpkaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKEV2ZW50JiBldmVu
dCwgQmF0dGVyeVN0YXR1cyogYmF0dGVyeVN0YXR1cykKIHsKICAgICB1cGRhdGVCYXR0ZXJ5U3Rh
dHVzKGJhdHRlcnlTdGF0dXMpOwogICAgIGRpc3BhdGNoRXZlbnQoZXZlbnQpOwogfQogCi12b2lk
IEJhdHRlcnlNYW5hZ2VyOjp1cGRhdGVCYXR0ZXJ5U3RhdHVzKFBhc3NSZWZQdHI8QmF0dGVyeVN0
YXR1cz4gYmF0dGVyeVN0YXR1cykKK3ZvaWQgQmF0dGVyeU1hbmFnZXI6OnVwZGF0ZUJhdHRlcnlT
dGF0dXMoQmF0dGVyeVN0YXR1cyogYmF0dGVyeVN0YXR1cykKIHsKICAgICBtX2JhdHRlcnlTdGF0
dXMgPSBiYXR0ZXJ5U3RhdHVzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9iYXR0ZXJ5L0JhdHRlcnlNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRl
cnkvQmF0dGVyeU1hbmFnZXIuaAppbmRleCBhNzRkYWNmNWNlNGYwOTVhOGQxZDQzNGQwMWI4YjRi
MjEyYjAzYjIxLi4yYWZhOGEzNGJhMWMzZmRlZGYyOWNkNTlkNDgzNWVkNWFlOWQ4NzU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvQmF0dGVyeU1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvQmF0dGVyeU1hbmFnZXIuaApAQCAt
NDYsOCArNDYsOCBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGRpc2NoYXJnaW5nVGltZSgpOwogICAg
IGRvdWJsZSBsZXZlbCgpOwogCi0gICAgdm9pZCBkaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKEV2ZW50
JiwgUGFzc1JlZlB0cjxCYXR0ZXJ5U3RhdHVzPik7Ci0gICAgdm9pZCB1cGRhdGVCYXR0ZXJ5U3Rh
dHVzKFBhc3NSZWZQdHI8QmF0dGVyeVN0YXR1cz4pOworICAgIHZvaWQgZGlkQ2hhbmdlQmF0dGVy
eVN0YXR1cyhFdmVudCYsIEJhdHRlcnlTdGF0dXMqKTsKKyAgICB2b2lkIHVwZGF0ZUJhdHRlcnlT
dGF0dXMoQmF0dGVyeVN0YXR1cyopOwogICAgIHZvaWQgYmF0dGVyeUNvbnRyb2xsZXJEZXN0cm95
ZWQoKSB7IG1fYmF0dGVyeUNvbnRyb2xsZXIgPSBudWxscHRyOyB9CiAKICAgICB1c2luZyBSZWZD
b3VudGVkPEJhdHRlcnlNYW5hZ2VyPjo6cmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlTdGF0dXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YmF0dGVyeS9CYXR0ZXJ5U3RhdHVzLmgKaW5kZXggNTE0YThmYmI4YWFhNWU0YzNkNThjYTBhYTY1
NTk1YWIwZDg2Y2E3Yy4uZjU4NGVlNzI5YjliYzk1ZjkzODFkYjg1NjZmZDNmMzk4YmU5MmY5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlTdGF0dXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvQmF0dGVyeVN0YXR1cy5oCkBA
IC0yMiw3ICsyMiw3IEBACiAKICNpZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCiAKLSNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKaW5kZXggZDQ5NDRjZTU0YjBiOTcyZjVhMjgxNzJjZDVhZWY1MjhkYmJmODMz
Ni4uZTZhZGQ1YTY1ZWRkM2VkMzE5YzExOWVmY2U1Y2Q2Yjc3MDIwYmYyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTU2MCw3ICsxNTYwLDcgQEAgdm9pZCBJbnRlcm5h
bHM6OnNldEJhdHRlcnlTdGF0dXMoY29uc3QgU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2hhcmdp
bmcsIGRvdWJsZQogICAgIH0KIAogI2lmIEVOQUJMRShCQVRURVJZX1NUQVRVUykKLSAgICBCYXR0
ZXJ5Q29udHJvbGxlcjo6ZnJvbShkb2N1bWVudC0+cGFnZSgpKS0+ZGlkQ2hhbmdlQmF0dGVyeVN0
YXR1cyhldmVudFR5cGUsIEJhdHRlcnlTdGF0dXM6OmNyZWF0ZShjaGFyZ2luZywgY2hhcmdpbmdU
aW1lLCBkaXNjaGFyZ2luZ1RpbWUsIGxldmVsKSk7CisgICAgQmF0dGVyeUNvbnRyb2xsZXI6OmZy
b20oZG9jdW1lbnQtPnBhZ2UoKSktPmRpZENoYW5nZUJhdHRlcnlTdGF0dXMoZXZlbnRUeXBlLCBC
YXR0ZXJ5U3RhdHVzOjpjcmVhdGUoY2hhcmdpbmcsIGNoYXJnaW5nVGltZSwgZGlzY2hhcmdpbmdU
aW1lLCBsZXZlbCkucHRyKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZXZlbnRUeXBlKTsK
ICAgICBVTlVTRURfUEFSQU0oY2hhcmdpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9CYXR0ZXJ5L1dlYkJhdHRlcnlNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvQmF0dGVyeS9XZWJCYXR0ZXJ5TWFuYWdlci5jcHAKaW5kZXggZGFlNTIzYmJi
YTNiMTlkMGJlNDNjZTVkN2ZlNmUyODVlZTEzMzFhMS4uZWMxMjM1OGZlNWIwZDY4ZTgwYjMxMGM5
ZjE0MjUwOTNhZWM4MmRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9C
YXR0ZXJ5L1dlYkJhdHRlcnlNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0JhdHRlcnkvV2ViQmF0dGVyeU1hbmFnZXIuY3BwCkBAIC03NSwyMSArNzUsMjEgQEAgdm9p
ZCBXZWJCYXR0ZXJ5TWFuYWdlcjo6dW5yZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSogcGFnZSkKIAog
dm9pZCBXZWJCYXR0ZXJ5TWFuYWdlcjo6ZGlkQ2hhbmdlQmF0dGVyeVN0YXR1cyhjb25zdCBXVEY6
OkF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBXZWJCYXR0ZXJ5U3RhdHVzOjpEYXRhJiBk
YXRhKQogewotICAgIFJlZlB0cjxCYXR0ZXJ5U3RhdHVzPiBzdGF0dXMgPSBCYXR0ZXJ5U3RhdHVz
OjpjcmVhdGUoZGF0YS5pc0NoYXJnaW5nLCBkYXRhLmNoYXJnaW5nVGltZSwgZGF0YS5kaXNjaGFy
Z2luZ1RpbWUsIGRhdGEubGV2ZWwpOworICAgIGF1dG8gc3RhdHVzID0gQmF0dGVyeVN0YXR1czo6
Y3JlYXRlKGRhdGEuaXNDaGFyZ2luZywgZGF0YS5jaGFyZ2luZ1RpbWUsIGRhdGEuZGlzY2hhcmdp
bmdUaW1lLCBkYXRhLmxldmVsKTsKIAogICAgIGZvciAoYXV0byogcGFnZSA6IG1fcGFnZVNldCkg
ewogICAgICAgICBpZiAocGFnZS0+Y29yZVBhZ2UoKSkKLSAgICAgICAgICAgIEJhdHRlcnlDb250
cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5kaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKGV2
ZW50VHlwZSwgc3RhdHVzLmdldCgpKTsKKyAgICAgICAgICAgIEJhdHRlcnlDb250cm9sbGVyOjpm
cm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5kaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKGV2ZW50VHlwZSwg
c3RhdHVzLnB0cigpKTsKICAgICB9CiB9CiAKIHZvaWQgV2ViQmF0dGVyeU1hbmFnZXI6OnVwZGF0
ZUJhdHRlcnlTdGF0dXMoY29uc3QgV2ViQmF0dGVyeVN0YXR1czo6RGF0YSYgZGF0YSkKIHsKLSAg
ICBSZWZQdHI8QmF0dGVyeVN0YXR1cz4gc3RhdHVzID0gQmF0dGVyeVN0YXR1czo6Y3JlYXRlKGRh
dGEuaXNDaGFyZ2luZywgZGF0YS5jaGFyZ2luZ1RpbWUsIGRhdGEuZGlzY2hhcmdpbmdUaW1lLCBk
YXRhLmxldmVsKTsKKyAgICBhdXRvIHN0YXR1cyA9IEJhdHRlcnlTdGF0dXM6OmNyZWF0ZShkYXRh
LmlzQ2hhcmdpbmcsIGRhdGEuY2hhcmdpbmdUaW1lLCBkYXRhLmRpc2NoYXJnaW5nVGltZSwgZGF0
YS5sZXZlbCk7CiAKICAgICBmb3IgKGF1dG8qIHBhZ2UgOiBtX3BhZ2VTZXQpIHsKICAgICAgICAg
aWYgKHBhZ2UtPmNvcmVQYWdlKCkpCi0gICAgICAgICAgICBCYXR0ZXJ5Q29udHJvbGxlcjo6ZnJv
bShwYWdlLT5jb3JlUGFnZSgpKS0+dXBkYXRlQmF0dGVyeVN0YXR1cyhzdGF0dXMuZ2V0KCkpOwor
ICAgICAgICAgICAgQmF0dGVyeUNvbnRyb2xsZXI6OmZyb20ocGFnZS0+Y29yZVBhZ2UoKSktPnVw
ZGF0ZUJhdHRlcnlTdGF0dXMoV1RGTW92ZShzdGF0dXMpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBkZjYzNDA3YmEz
NTQyNWJiODQ3MWYzMWYwOTE1NWJiMzQxMDU1NWViLi42NzhkMTMxZGE4ZGMyMGYyNGIzYzQ2ODYw
MjFhYWNhNWVlOTJiZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC00MzIsNyArNDMyLDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAg
ICAgbV9kcmF3aW5nQXJlYS0+dXBkYXRlUHJlZmVyZW5jZXMocGFyYW1ldGVycy5zdG9yZSk7CiAK
ICNpZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCi0gICAgV2ViQ29yZTo6cHJvdmlkZUJhdHRlcnlU
byhtX3BhZ2UuZ2V0KCksIG5ldyBXZWJCYXR0ZXJ5Q2xpZW50KHRoaXMpKTsKKyAgICBXZWJDb3Jl
Ojpwcm92aWRlQmF0dGVyeVRvKCptX3BhZ2UsICpuZXcgV2ViQmF0dGVyeUNsaWVudCh0aGlzKSk7
CiAjZW5kaWYKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCiAgICAgV2ViQ29yZTo6cHJvdmlkZUdl
b2xvY2F0aW9uVG8obV9wYWdlLmdldCgpLCBuZXcgV2ViR2VvbG9jYXRpb25DbGllbnQodGhpcykp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279751</attachid>
            <date>2016-05-25 02:21:59 -0700</date>
            <delta_ts>2016-05-25 18:46:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157062-20160525182306.patch</filename>
            <type>text/plain</type>
            <size>14082</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxMzE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDZmMzgwMmRiMTRmNjU5
NzQzZjA4ZThlMzkyOTNlMGM1YmJkNTdiNS4uODQ5NDVkMmViMWVmNDdlNzFlMmFkNGQwODY1MGIz
YjMxM2VmNWI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE2LTA1LTIzICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBQdXJnZSBQYXNz
UmVmUHRyIGluIE1vZHVsZXMvYmF0dGVyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MDYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXNlIFJlZlB0cjw+JiB0byByZWR1Y2UgdXNlcyBvZiBQYXNzUmVm
UHRyIGluIFdlYktpdC4KKworICAgICAgICAqIE1vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5Q2xpZW50
Lmg6CisgICAgICAgICogTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJhdHRlcnlDb250cm9sbGVyOjpCYXR0ZXJ5Q29udHJvbGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXR0ZXJ5Q29udHJvbGxlcjo6fkJhdHRlcnlDb250cm9sbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkJhdHRlcnlDb250cm9sbGVyOjphZGRMaXN0ZW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpCYXR0ZXJ5Q29udHJvbGxlcjo6cmVtb3ZlTGlzdGVuZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6QmF0dGVyeUNvbnRyb2xsZXI6OnVwZGF0ZUJhdHRlcnlTdGF0dXMpOgorICAg
ICAgICAoV2ViQ29yZTo6QmF0dGVyeUNvbnRyb2xsZXI6OmRpZENoYW5nZUJhdHRlcnlTdGF0dXMp
OgorICAgICAgICAoV2ViQ29yZTo6cHJvdmlkZUJhdHRlcnlUbyk6CisgICAgICAgICogTW9kdWxl
cy9iYXR0ZXJ5L0JhdHRlcnlDb250cm9sbGVyLmg6CisgICAgICAgICogTW9kdWxlcy9iYXR0ZXJ5
L0JhdHRlcnlNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhdHRlcnlNYW5hZ2VyOjpk
aWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkJhdHRlcnlNYW5hZ2Vy
Ojp1cGRhdGVCYXR0ZXJ5U3RhdHVzKToKKyAgICAgICAgKiBNb2R1bGVzL2JhdHRlcnkvQmF0dGVy
eU1hbmFnZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2JhdHRlcnkvQmF0dGVyeVN0YXR1cy5oOgor
ICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6c2V0QmF0dGVyeVN0YXR1cyk6CisKIDIwMTYtMDUtMjMgIFphbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBDaGFuZ2luZyBib3JkZXIgY29sb3IgYW5kIHNpemUg
c2ltdWx0YW5lb3VzbHkgZmFpbHMgdG8gcmVwYWludC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyOTA5OGI2MDQw
YTI1ZTJiMzIzNzRmOTM4YzkxMThlZTliOGQyMWIzLi4wNDY4MTMzOGU0OTU5YmVlOWExNmYyOTA1
OGJmNDkxODljYmJkYTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTYtMDUtMjMg
IEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUB3ZWJraXQub3JnPgorCisgICAgICAgIFB1cmdl
IFBhc3NSZWZQdHIgaW4gTW9kdWxlcy9iYXR0ZXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTcwNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgUmVmUHRyPD4mIHRvIHJlZHVjZSB1c2VzIG9mIFBh
c3NSZWZQdHIgaW4gV2ViS2l0LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9CYXR0ZXJ5L1dlYkJh
dHRlcnlNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmF0dGVyeU1hbmFnZXI6OmRp
ZENoYW5nZUJhdHRlcnlTdGF0dXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYXR0ZXJ5TWFuYWdl
cjo6dXBkYXRlQmF0dGVyeVN0YXR1cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX3Nob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92
ZUV2ZW50cyk6CisKIDIwMTYtMDUtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBHZW5lcmF0ZSBiaW5kaW5ncyBjb2RlIGZvciBFdmVudFRhcmdldC5hZGRFdmVu
dExpc3RlbmVyKCkgLyByZW1vdmVFdmVudExpc3RlbmVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2JhdHRlcnkvQmF0dGVyeUNsaWVudC5oCmluZGV4IDJjODdhNDRiYjBiYTA4MWUxZWFl
YTU1NjhiMzIyNmVjNDJjNDIzYWIuLjk0ZmJiNTBjMjkxNTgyYzg5NmIwMGFhNmI2M2ViYmZkYTJi
MzM0NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlDbGll
bnQuaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJhdHRlcnlD
b250cm9sbGVyRGVzdHJveWVkKCkgPSAwOwogfTsKIAotdm9pZCBwcm92aWRlQmF0dGVyeVRvKFBh
Z2UqLCBCYXR0ZXJ5Q2xpZW50Kik7Cit2b2lkIHByb3ZpZGVCYXR0ZXJ5VG8oUGFnZSYsIEJhdHRl
cnlDbGllbnQmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Jh
dHRlcnkvQmF0dGVyeUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0
ZXJ5L0JhdHRlcnlDb250cm9sbGVyLmNwcAppbmRleCAyNTIxNWM5NzA0NmNlOWZlMmJmYWIxZTBi
NGQwMWQxNGFiMTM1YjhkLi4wZmM0YjU1NWQ1OWYzMmZlMzU0ZWNhNmM2NWM1MmIxZmFlMTQ1MTA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvQmF0dGVyeUNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5Q29u
dHJvbGxlci5jcHAKQEAgLTI5LDI2ICsyOSwyNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUJhdHRlcnlDb250cm9sbGVyOjpCYXR0ZXJ5Q29udHJvbGxlcihCYXR0ZXJ5Q2xpZW50KiBjbGll
bnQpCitCYXR0ZXJ5Q29udHJvbGxlcjo6QmF0dGVyeUNvbnRyb2xsZXIoQmF0dGVyeUNsaWVudCYg
Y2xpZW50KQogICAgIDogbV9jbGllbnQoY2xpZW50KQogewotICAgIEFTU0VSVChtX2NsaWVudCk7
CiB9CiAKIEJhdHRlcnlDb250cm9sbGVyOjp+QmF0dGVyeUNvbnRyb2xsZXIoKQogewogICAgIGZv
ciAoYXV0byYgbGlzdGVuZXIgOiBtX2xpc3RlbmVycykKICAgICAgICAgbGlzdGVuZXItPmJhdHRl
cnlDb250cm9sbGVyRGVzdHJveWVkKCk7Ci0gICAgbV9jbGllbnQtPmJhdHRlcnlDb250cm9sbGVy
RGVzdHJveWVkKCk7CisgICAgbV9jbGllbnQuYmF0dGVyeUNvbnRyb2xsZXJEZXN0cm95ZWQoKTsK
IH0KIAogdm9pZCBCYXR0ZXJ5Q29udHJvbGxlcjo6YWRkTGlzdGVuZXIoQmF0dGVyeU1hbmFnZXIq
IGJhdHRlcnlNYW5hZ2VyKQogewogICAgIG1fbGlzdGVuZXJzLmFwcGVuZChiYXR0ZXJ5TWFuYWdl
cik7Ci0gICAgbV9jbGllbnQtPnN0YXJ0VXBkYXRpbmcoKTsKKyAgICBtX2NsaWVudC5zdGFydFVw
ZGF0aW5nKCk7CiAKICAgICBpZiAobV9iYXR0ZXJ5U3RhdHVzKQotICAgICAgICBiYXR0ZXJ5TWFu
YWdlci0+dXBkYXRlQmF0dGVyeVN0YXR1cyhtX2JhdHRlcnlTdGF0dXMpOworICAgICAgICBiYXR0
ZXJ5TWFuYWdlci0+dXBkYXRlQmF0dGVyeVN0YXR1cyhtX2JhdHRlcnlTdGF0dXMuZ2V0KCkpOwog
fQogCiB2b2lkIEJhdHRlcnlDb250cm9sbGVyOjpyZW1vdmVMaXN0ZW5lcihCYXR0ZXJ5TWFuYWdl
ciogYmF0dGVyeU1hbmFnZXIpCkBAIC01OCwzNiArNTcsMzQgQEAgdm9pZCBCYXR0ZXJ5Q29udHJv
bGxlcjo6cmVtb3ZlTGlzdGVuZXIoQmF0dGVyeU1hbmFnZXIqIGJhdHRlcnlNYW5hZ2VyKQogICAg
ICAgICByZXR1cm47CiAgICAgbV9saXN0ZW5lcnMucmVtb3ZlKHBvcyk7CiAgICAgaWYgKG1fbGlz
dGVuZXJzLmlzRW1wdHkoKSkKLSAgICAgICAgbV9jbGllbnQtPnN0b3BVcGRhdGluZygpOworICAg
ICAgICBtX2NsaWVudC5zdG9wVXBkYXRpbmcoKTsKIH0KIAotdm9pZCBCYXR0ZXJ5Q29udHJvbGxl
cjo6dXBkYXRlQmF0dGVyeVN0YXR1cyhQYXNzUmVmUHRyPEJhdHRlcnlTdGF0dXM+IGJhdHRlcnlT
dGF0dXMpCit2b2lkIEJhdHRlcnlDb250cm9sbGVyOjp1cGRhdGVCYXR0ZXJ5U3RhdHVzKFJlZlB0
cjxCYXR0ZXJ5U3RhdHVzPiYmIGJhdHRlcnlTdGF0dXMpCiB7Ci0gICAgUmVmUHRyPEJhdHRlcnlT
dGF0dXM+IHN0YXR1cyA9IGJhdHRlcnlTdGF0dXM7CiAgICAgaWYgKG1fYmF0dGVyeVN0YXR1cykg
ewotICAgICAgICBpZiAobV9iYXR0ZXJ5U3RhdHVzLT5jaGFyZ2luZygpICE9IHN0YXR1cy0+Y2hh
cmdpbmcoKSkKLSAgICAgICAgICAgIGRpZENoYW5nZUJhdHRlcnlTdGF0dXMoV2ViQ29yZTo6ZXZl
bnROYW1lcygpLmNoYXJnaW5nY2hhbmdlRXZlbnQsIHN0YXR1cyk7Ci0gICAgICAgIGVsc2UgaWYg
KHN0YXR1cy0+Y2hhcmdpbmcoKSAmJiBtX2JhdHRlcnlTdGF0dXMtPmNoYXJnaW5nVGltZSgpICE9
IHN0YXR1cy0+Y2hhcmdpbmdUaW1lKCkpCi0gICAgICAgICAgICBkaWRDaGFuZ2VCYXR0ZXJ5U3Rh
dHVzKFdlYkNvcmU6OmV2ZW50TmFtZXMoKS5jaGFyZ2luZ3RpbWVjaGFuZ2VFdmVudCwgc3RhdHVz
KTsKLSAgICAgICAgZWxzZSBpZiAoIXN0YXR1cy0+Y2hhcmdpbmcoKSAmJiBtX2JhdHRlcnlTdGF0
dXMtPmRpc2NoYXJnaW5nVGltZSgpICE9IHN0YXR1cy0+ZGlzY2hhcmdpbmdUaW1lKCkpCi0gICAg
ICAgICAgICBkaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKFdlYkNvcmU6OmV2ZW50TmFtZXMoKS5kaXNj
aGFyZ2luZ3RpbWVjaGFuZ2VFdmVudCwgc3RhdHVzKTsKLQotICAgICAgICBpZiAobV9iYXR0ZXJ5
U3RhdHVzLT5sZXZlbCgpICE9IHN0YXR1cy0+bGV2ZWwoKSkKLSAgICAgICAgICAgIGRpZENoYW5n
ZUJhdHRlcnlTdGF0dXMoV2ViQ29yZTo6ZXZlbnROYW1lcygpLmxldmVsY2hhbmdlRXZlbnQsIHN0
YXR1cyk7CisgICAgICAgIGlmIChtX2JhdHRlcnlTdGF0dXMtPmNoYXJnaW5nKCkgIT0gYmF0dGVy
eVN0YXR1cy0+Y2hhcmdpbmcoKSkKKyAgICAgICAgICAgIGRpZENoYW5nZUJhdHRlcnlTdGF0dXMo
V2ViQ29yZTo6ZXZlbnROYW1lcygpLmNoYXJnaW5nY2hhbmdlRXZlbnQsIGJhdHRlcnlTdGF0dXMu
Z2V0KCkpOworICAgICAgICBlbHNlIGlmIChiYXR0ZXJ5U3RhdHVzLT5jaGFyZ2luZygpICYmIG1f
YmF0dGVyeVN0YXR1cy0+Y2hhcmdpbmdUaW1lKCkgIT0gYmF0dGVyeVN0YXR1cy0+Y2hhcmdpbmdU
aW1lKCkpCisgICAgICAgICAgICBkaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKFdlYkNvcmU6OmV2ZW50
TmFtZXMoKS5jaGFyZ2luZ3RpbWVjaGFuZ2VFdmVudCwgYmF0dGVyeVN0YXR1cy5nZXQoKSk7Cisg
ICAgICAgIGVsc2UgaWYgKCFiYXR0ZXJ5U3RhdHVzLT5jaGFyZ2luZygpICYmIG1fYmF0dGVyeVN0
YXR1cy0+ZGlzY2hhcmdpbmdUaW1lKCkgIT0gYmF0dGVyeVN0YXR1cy0+ZGlzY2hhcmdpbmdUaW1l
KCkpCisgICAgICAgICAgICBkaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKFdlYkNvcmU6OmV2ZW50TmFt
ZXMoKS5kaXNjaGFyZ2luZ3RpbWVjaGFuZ2VFdmVudCwgYmF0dGVyeVN0YXR1cy5nZXQoKSk7CisK
KyAgICAgICAgaWYgKG1fYmF0dGVyeVN0YXR1cy0+bGV2ZWwoKSAhPSBiYXR0ZXJ5U3RhdHVzLT5s
ZXZlbCgpKQorICAgICAgICAgICAgZGlkQ2hhbmdlQmF0dGVyeVN0YXR1cyhXZWJDb3JlOjpldmVu
dE5hbWVzKCkubGV2ZWxjaGFuZ2VFdmVudCwgYmF0dGVyeVN0YXR1cy5nZXQoKSk7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgZm9yIChhdXRvJiBsaXN0ZW5lciA6IG1fbGlzdGVuZXJzKQotICAgICAg
ICAgICAgbGlzdGVuZXItPnVwZGF0ZUJhdHRlcnlTdGF0dXMoc3RhdHVzKTsKKyAgICAgICAgICAg
IGxpc3RlbmVyLT51cGRhdGVCYXR0ZXJ5U3RhdHVzKGJhdHRlcnlTdGF0dXMuZ2V0KCkpOwogICAg
IH0KIAotICAgIG1fYmF0dGVyeVN0YXR1cyA9IHN0YXR1cy5yZWxlYXNlKCk7CisgICAgbV9iYXR0
ZXJ5U3RhdHVzID0gV1RGTW92ZShiYXR0ZXJ5U3RhdHVzKTsKIH0KIAotdm9pZCBCYXR0ZXJ5Q29u
dHJvbGxlcjo6ZGlkQ2hhbmdlQmF0dGVyeVN0YXR1cyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUGFzc1JlZlB0cjxCYXR0ZXJ5U3RhdHVzPiBiYXR0ZXJ5U3RhdHVzKQordm9pZCBCYXR0
ZXJ5Q29udHJvbGxlcjo6ZGlkQ2hhbmdlQmF0dGVyeVN0YXR1cyhjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgQmF0dGVyeVN0YXR1cyogYmF0dGVyeVN0YXR1cykKIHsKICAgICBSZWY8RXZl
bnQ+IGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGZhbHNlLCBmYWxzZSk7Ci0gICAg
UmVmUHRyPEJhdHRlcnlTdGF0dXM+IGJhdHRlcnkgPSBiYXR0ZXJ5U3RhdHVzOwogICAgIGZvciAo
YXV0byYgbGlzdGVuZXIgOiBtX2xpc3RlbmVycykKLSAgICAgICAgbGlzdGVuZXItPmRpZENoYW5n
ZUJhdHRlcnlTdGF0dXMoZXZlbnQsIGJhdHRlcnkpOworICAgICAgICBsaXN0ZW5lci0+ZGlkQ2hh
bmdlQmF0dGVyeVN0YXR1cyhldmVudCwgYmF0dGVyeVN0YXR1cyk7CiB9CiAKIGNvbnN0IGNoYXIq
IEJhdHRlcnlDb250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpCkBAIC05NSw5ICs5Miw5IEBAIGNv
bnN0IGNoYXIqIEJhdHRlcnlDb250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpCiAgICAgcmV0dXJu
ICJCYXR0ZXJ5Q29udHJvbGxlciI7CiB9CiAKLXZvaWQgcHJvdmlkZUJhdHRlcnlUbyhQYWdlKiBw
YWdlLCBCYXR0ZXJ5Q2xpZW50KiBjbGllbnQpCit2b2lkIHByb3ZpZGVCYXR0ZXJ5VG8oUGFnZSYg
cGFnZSwgQmF0dGVyeUNsaWVudCYgY2xpZW50KQogewotICAgIFN1cHBsZW1lbnQ8UGFnZT46OnBy
b3ZpZGVUbyhwYWdlLCBCYXR0ZXJ5Q29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjpt
YWtlX3VuaXF1ZTxCYXR0ZXJ5Q29udHJvbGxlcj4oY2xpZW50KSk7CisgICAgU3VwcGxlbWVudDxQ
YWdlPjo6cHJvdmlkZVRvKCZwYWdlLCBCYXR0ZXJ5Q29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUo
KSwgc3RkOjptYWtlX3VuaXF1ZTxCYXR0ZXJ5Q29udHJvbGxlcj4oY2xpZW50KSk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5Q29udHJv
bGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlDb250cm9sbGVy
LmgKaW5kZXggZDBiZTk0YTc1OGMxMTg4NGIyYzkwN2FkMzA3MTEwMzUxMmNmNDdjNC4uNDVhYzQw
MjkwZTY0MTQyMzQ1ZjcyMmM2YzgyNWY2OThhOGMwNmRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlDb250cm9sbGVyLmgKQEAgLTMyLDEzICszMiwx
MyBAQCBjbGFzcyBCYXR0ZXJ5Q2xpZW50OwogCiBjbGFzcyBCYXR0ZXJ5Q29udHJvbGxlciA6IHB1
YmxpYyBTdXBwbGVtZW50PFBhZ2U+IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBCYXR0ZXJ5Q29u
dHJvbGxlcihCYXR0ZXJ5Q2xpZW50Kik7CisgICAgZXhwbGljaXQgQmF0dGVyeUNvbnRyb2xsZXIo
QmF0dGVyeUNsaWVudCYpOwogICAgIH5CYXR0ZXJ5Q29udHJvbGxlcigpOwogCiAgICAgdm9pZCBh
ZGRMaXN0ZW5lcihCYXR0ZXJ5TWFuYWdlciopOwogICAgIHZvaWQgcmVtb3ZlTGlzdGVuZXIoQmF0
dGVyeU1hbmFnZXIqKTsKLSAgICB2b2lkIHVwZGF0ZUJhdHRlcnlTdGF0dXMoUGFzc1JlZlB0cjxC
YXR0ZXJ5U3RhdHVzPik7Ci0gICAgdm9pZCBkaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEJhdHRlcnlTdGF0dXM+KTsKKyAgICB2
b2lkIHVwZGF0ZUJhdHRlcnlTdGF0dXMoUmVmUHRyPEJhdHRlcnlTdGF0dXM+JiYpOworICAgIHZv
aWQgZGlkQ2hhbmdlQmF0dGVyeVN0YXR1cyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
QmF0dGVyeVN0YXR1cyopOwogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1l
KCk7CiAgICAgc3RhdGljIEJhdHRlcnlDb250cm9sbGVyKiBmcm9tKFBhZ2UqIHBhZ2UpIHsgcmV0
dXJuIHN0YXRpY19jYXN0PEJhdHRlcnlDb250cm9sbGVyKj4oU3VwcGxlbWVudDxQYWdlPjo6ZnJv
bShwYWdlLCBzdXBwbGVtZW50TmFtZSgpKSk7IH0KQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICB0eXBlZGVmIFZlY3RvcjxCYXR0ZXJ5TWFuYWdlcio+IExpc3RlbmVyVmVj
dG9yOwogCi0gICAgQmF0dGVyeUNsaWVudCogbV9jbGllbnQ7CisgICAgQmF0dGVyeUNsaWVudCYg
bV9jbGllbnQ7CiAgICAgTGlzdGVuZXJWZWN0b3IgbV9saXN0ZW5lcnM7CiAKICAgICBSZWZQdHI8
QmF0dGVyeVN0YXR1cz4gbV9iYXR0ZXJ5U3RhdHVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5TWFuYWdlci5jcHAKaW5kZXggNDA0OWE0NTNmNGUxMWJhYzUz
OWRhYzJlOGVkZDAyZTgxYWM3ZjlhNS4uMDQ1MDI0NjJlMTcwYmRmZmU4ZmQzODc4Y2U2NjQ3NzNl
ZGQxMjUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRl
cnlNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvQmF0dGVy
eU1hbmFnZXIuY3BwCkBAIC03NywxMyArNzcsMTMgQEAgZG91YmxlIEJhdHRlcnlNYW5hZ2VyOjps
ZXZlbCgpCiAgICAgcmV0dXJuIG1fYmF0dGVyeVN0YXR1cyA/IG1fYmF0dGVyeVN0YXR1cy0+bGV2
ZWwoKSA6IDE7CiB9CiAKLXZvaWQgQmF0dGVyeU1hbmFnZXI6OmRpZENoYW5nZUJhdHRlcnlTdGF0
dXMoRXZlbnQmIGV2ZW50LCBQYXNzUmVmUHRyPEJhdHRlcnlTdGF0dXM+IGJhdHRlcnlTdGF0dXMp
Cit2b2lkIEJhdHRlcnlNYW5hZ2VyOjpkaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKEV2ZW50JiBldmVu
dCwgQmF0dGVyeVN0YXR1cyogYmF0dGVyeVN0YXR1cykKIHsKICAgICB1cGRhdGVCYXR0ZXJ5U3Rh
dHVzKGJhdHRlcnlTdGF0dXMpOwogICAgIGRpc3BhdGNoRXZlbnQoZXZlbnQpOwogfQogCi12b2lk
IEJhdHRlcnlNYW5hZ2VyOjp1cGRhdGVCYXR0ZXJ5U3RhdHVzKFBhc3NSZWZQdHI8QmF0dGVyeVN0
YXR1cz4gYmF0dGVyeVN0YXR1cykKK3ZvaWQgQmF0dGVyeU1hbmFnZXI6OnVwZGF0ZUJhdHRlcnlT
dGF0dXMoQmF0dGVyeVN0YXR1cyogYmF0dGVyeVN0YXR1cykKIHsKICAgICBtX2JhdHRlcnlTdGF0
dXMgPSBiYXR0ZXJ5U3RhdHVzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9iYXR0ZXJ5L0JhdHRlcnlNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRl
cnkvQmF0dGVyeU1hbmFnZXIuaAppbmRleCBhNzRkYWNmNWNlNGYwOTVhOGQxZDQzNGQwMWI4YjRi
MjEyYjAzYjIxLi4yYWZhOGEzNGJhMWMzZmRlZGYyOWNkNTlkNDgzNWVkNWFlOWQ4NzU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvQmF0dGVyeU1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvQmF0dGVyeU1hbmFnZXIuaApAQCAt
NDYsOCArNDYsOCBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGRpc2NoYXJnaW5nVGltZSgpOwogICAg
IGRvdWJsZSBsZXZlbCgpOwogCi0gICAgdm9pZCBkaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKEV2ZW50
JiwgUGFzc1JlZlB0cjxCYXR0ZXJ5U3RhdHVzPik7Ci0gICAgdm9pZCB1cGRhdGVCYXR0ZXJ5U3Rh
dHVzKFBhc3NSZWZQdHI8QmF0dGVyeVN0YXR1cz4pOworICAgIHZvaWQgZGlkQ2hhbmdlQmF0dGVy
eVN0YXR1cyhFdmVudCYsIEJhdHRlcnlTdGF0dXMqKTsKKyAgICB2b2lkIHVwZGF0ZUJhdHRlcnlT
dGF0dXMoQmF0dGVyeVN0YXR1cyopOwogICAgIHZvaWQgYmF0dGVyeUNvbnRyb2xsZXJEZXN0cm95
ZWQoKSB7IG1fYmF0dGVyeUNvbnRyb2xsZXIgPSBudWxscHRyOyB9CiAKICAgICB1c2luZyBSZWZD
b3VudGVkPEJhdHRlcnlNYW5hZ2VyPjo6cmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlTdGF0dXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YmF0dGVyeS9CYXR0ZXJ5U3RhdHVzLmgKaW5kZXggNTE0YThmYmI4YWFhNWU0YzNkNThjYTBhYTY1
NTk1YWIwZDg2Y2E3Yy4uZjU4NGVlNzI5YjliYzk1ZjkzODFkYjg1NjZmZDNmMzk4YmU5MmY5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlTdGF0dXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvQmF0dGVyeVN0YXR1cy5oCkBA
IC0yMiw3ICsyMiw3IEBACiAKICNpZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCiAKLSNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKaW5kZXggZDQ5NDRjZTU0YjBiOTcyZjVhMjgxNzJjZDVhZWY1MjhkYmJmODMz
Ni4uZTZhZGQ1YTY1ZWRkM2VkMzE5YzExOWVmY2U1Y2Q2Yjc3MDIwYmYyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTU2MCw3ICsxNTYwLDcgQEAgdm9pZCBJbnRlcm5h
bHM6OnNldEJhdHRlcnlTdGF0dXMoY29uc3QgU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2hhcmdp
bmcsIGRvdWJsZQogICAgIH0KIAogI2lmIEVOQUJMRShCQVRURVJZX1NUQVRVUykKLSAgICBCYXR0
ZXJ5Q29udHJvbGxlcjo6ZnJvbShkb2N1bWVudC0+cGFnZSgpKS0+ZGlkQ2hhbmdlQmF0dGVyeVN0
YXR1cyhldmVudFR5cGUsIEJhdHRlcnlTdGF0dXM6OmNyZWF0ZShjaGFyZ2luZywgY2hhcmdpbmdU
aW1lLCBkaXNjaGFyZ2luZ1RpbWUsIGxldmVsKSk7CisgICAgQmF0dGVyeUNvbnRyb2xsZXI6OmZy
b20oZG9jdW1lbnQtPnBhZ2UoKSktPmRpZENoYW5nZUJhdHRlcnlTdGF0dXMoZXZlbnRUeXBlLCBC
YXR0ZXJ5U3RhdHVzOjpjcmVhdGUoY2hhcmdpbmcsIGNoYXJnaW5nVGltZSwgZGlzY2hhcmdpbmdU
aW1lLCBsZXZlbCkucHRyKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZXZlbnRUeXBlKTsK
ICAgICBVTlVTRURfUEFSQU0oY2hhcmdpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9CYXR0ZXJ5L1dlYkJhdHRlcnlNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvQmF0dGVyeS9XZWJCYXR0ZXJ5TWFuYWdlci5jcHAKaW5kZXggZGFlNTIzYmJi
YTNiMTlkMGJlNDNjZTVkN2ZlNmUyODVlZTEzMzFhMS4uZmVmNjQzZmIxZGRlY2YxNzhmYzY1Yjdh
OTcxNzA3ZDk2MDhkNmFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9C
YXR0ZXJ5L1dlYkJhdHRlcnlNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0JhdHRlcnkvV2ViQmF0dGVyeU1hbmFnZXIuY3BwCkBAIC03NSwyMSArNzUsMjEgQEAgdm9p
ZCBXZWJCYXR0ZXJ5TWFuYWdlcjo6dW5yZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSogcGFnZSkKIAog
dm9pZCBXZWJCYXR0ZXJ5TWFuYWdlcjo6ZGlkQ2hhbmdlQmF0dGVyeVN0YXR1cyhjb25zdCBXVEY6
OkF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBXZWJCYXR0ZXJ5U3RhdHVzOjpEYXRhJiBk
YXRhKQogewotICAgIFJlZlB0cjxCYXR0ZXJ5U3RhdHVzPiBzdGF0dXMgPSBCYXR0ZXJ5U3RhdHVz
OjpjcmVhdGUoZGF0YS5pc0NoYXJnaW5nLCBkYXRhLmNoYXJnaW5nVGltZSwgZGF0YS5kaXNjaGFy
Z2luZ1RpbWUsIGRhdGEubGV2ZWwpOworICAgIGF1dG8gc3RhdHVzID0gQmF0dGVyeVN0YXR1czo6
Y3JlYXRlKGRhdGEuaXNDaGFyZ2luZywgZGF0YS5jaGFyZ2luZ1RpbWUsIGRhdGEuZGlzY2hhcmdp
bmdUaW1lLCBkYXRhLmxldmVsKTsKIAogICAgIGZvciAoYXV0byogcGFnZSA6IG1fcGFnZVNldCkg
ewogICAgICAgICBpZiAocGFnZS0+Y29yZVBhZ2UoKSkKLSAgICAgICAgICAgIEJhdHRlcnlDb250
cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5kaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKGV2
ZW50VHlwZSwgc3RhdHVzLmdldCgpKTsKKyAgICAgICAgICAgIEJhdHRlcnlDb250cm9sbGVyOjpm
cm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5kaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKGV2ZW50VHlwZSwg
c3RhdHVzLnB0cigpKTsKICAgICB9CiB9CiAKIHZvaWQgV2ViQmF0dGVyeU1hbmFnZXI6OnVwZGF0
ZUJhdHRlcnlTdGF0dXMoY29uc3QgV2ViQmF0dGVyeVN0YXR1czo6RGF0YSYgZGF0YSkKIHsKLSAg
ICBSZWZQdHI8QmF0dGVyeVN0YXR1cz4gc3RhdHVzID0gQmF0dGVyeVN0YXR1czo6Y3JlYXRlKGRh
dGEuaXNDaGFyZ2luZywgZGF0YS5jaGFyZ2luZ1RpbWUsIGRhdGEuZGlzY2hhcmdpbmdUaW1lLCBk
YXRhLmxldmVsKTsKKyAgICBhdXRvIHN0YXR1cyA9IEJhdHRlcnlTdGF0dXM6OmNyZWF0ZShkYXRh
LmlzQ2hhcmdpbmcsIGRhdGEuY2hhcmdpbmdUaW1lLCBkYXRhLmRpc2NoYXJnaW5nVGltZSwgZGF0
YS5sZXZlbCk7CiAKICAgICBmb3IgKGF1dG8qIHBhZ2UgOiBtX3BhZ2VTZXQpIHsKICAgICAgICAg
aWYgKHBhZ2UtPmNvcmVQYWdlKCkpCi0gICAgICAgICAgICBCYXR0ZXJ5Q29udHJvbGxlcjo6ZnJv
bShwYWdlLT5jb3JlUGFnZSgpKS0+dXBkYXRlQmF0dGVyeVN0YXR1cyhzdGF0dXMuZ2V0KCkpOwor
ICAgICAgICAgICAgQmF0dGVyeUNvbnRyb2xsZXI6OmZyb20ocGFnZS0+Y29yZVBhZ2UoKSktPnVw
ZGF0ZUJhdHRlcnlTdGF0dXMoc3RhdHVzLmNvcHlSZWYoKSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZGY2MzQwN2Jh
MzU0MjViYjg0NzFmMzFmMDkxNTViYjM0MTA1NTVlYi4uNjc4ZDEzMWRhOGRjMjBmMjRiM2M0Njg2
MDIxYWFjYTVlZTkyYmQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcApAQCAtNDMyLDcgKzQzMiw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0
X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQog
ICAgIG1fZHJhd2luZ0FyZWEtPnVwZGF0ZVByZWZlcmVuY2VzKHBhcmFtZXRlcnMuc3RvcmUpOwog
CiAjaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQotICAgIFdlYkNvcmU6OnByb3ZpZGVCYXR0ZXJ5
VG8obV9wYWdlLmdldCgpLCBuZXcgV2ViQmF0dGVyeUNsaWVudCh0aGlzKSk7CisgICAgV2ViQ29y
ZTo6cHJvdmlkZUJhdHRlcnlUbygqbV9wYWdlLCAqbmV3IFdlYkJhdHRlcnlDbGllbnQodGhpcykp
OwogI2VuZGlmCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogICAgIFdlYkNvcmU6OnByb3ZpZGVH
ZW9sb2NhdGlvblRvKG1fcGFnZS5nZXQoKSwgbmV3IFdlYkdlb2xvY2F0aW9uQ2xpZW50KHRoaXMp
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279848</attachid>
            <date>2016-05-25 18:46:26 -0700</date>
            <delta_ts>2016-05-26 16:52:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157062-20160526104733.patch</filename>
            <type>text/plain</type>
            <size>13518</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxMzE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDZmMzgwMmRiMTRmNjU5
NzQzZjA4ZThlMzkyOTNlMGM1YmJkNTdiNS4uYWY4MDc1MzQ1YTE1OGZjMWI5Yzg1MDFmYmU5NjU3
ZWYxZjY3Y2ViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE2LTA1LTIzICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBQdXJnZSBQYXNz
UmVmUHRyIGluIE1vZHVsZXMvYmF0dGVyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MDYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgVXNlIFJlZlB0cjw+JiB0byByZWR1Y2UgdXNlcyBvZiBQYXNzUmVmUHRy
IGluIFdlYktpdC4KKworICAgICAgICAqIE1vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5Q2xpZW50Lmg6
CisgICAgICAgICogTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkJhdHRlcnlDb250cm9sbGVyOjpCYXR0ZXJ5Q29udHJvbGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpCYXR0ZXJ5Q29udHJvbGxlcjo6fkJhdHRlcnlDb250cm9sbGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhdHRlcnlDb250cm9sbGVyOjphZGRMaXN0ZW5lcik6CisgICAgICAg
IChXZWJDb3JlOjpCYXR0ZXJ5Q29udHJvbGxlcjo6cmVtb3ZlTGlzdGVuZXIpOgorICAgICAgICAo
V2ViQ29yZTo6QmF0dGVyeUNvbnRyb2xsZXI6OnVwZGF0ZUJhdHRlcnlTdGF0dXMpOgorICAgICAg
ICAoV2ViQ29yZTo6QmF0dGVyeUNvbnRyb2xsZXI6OmRpZENoYW5nZUJhdHRlcnlTdGF0dXMpOgor
ICAgICAgICAoV2ViQ29yZTo6cHJvdmlkZUJhdHRlcnlUbyk6CisgICAgICAgICogTW9kdWxlcy9i
YXR0ZXJ5L0JhdHRlcnlDb250cm9sbGVyLmg6CisgICAgICAgICogTW9kdWxlcy9iYXR0ZXJ5L0Jh
dHRlcnlNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhdHRlcnlNYW5hZ2VyOjpkaWRD
aGFuZ2VCYXR0ZXJ5U3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkJhdHRlcnlNYW5hZ2VyOjp1
cGRhdGVCYXR0ZXJ5U3RhdHVzKToKKyAgICAgICAgKiBNb2R1bGVzL2JhdHRlcnkvQmF0dGVyeU1h
bmFnZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2JhdHRlcnkvQmF0dGVyeVN0YXR1cy5oOgorICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFs
czo6c2V0QmF0dGVyeVN0YXR1cyk6CisKIDIwMTYtMDUtMjMgIFphbGFuIEJ1anRhcyAgPHphbGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBDaGFuZ2luZyBib3JkZXIgY29sb3IgYW5kIHNpemUgc2lt
dWx0YW5lb3VzbHkgZmFpbHMgdG8gcmVwYWludC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyOTA5OGI2MDQwYTI1
ZTJiMzIzNzRmOTM4YzkxMThlZTliOGQyMWIzLi5hNDgwZDVmNWU4MjRiYWUxOTQ3NDk0NGRmOGZm
NDM1NTdmZDI2YTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTYtMDUtMjMgIEd5
dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUB3ZWJraXQub3JnPgorCisgICAgICAgIFB1cmdlIFBh
c3NSZWZQdHIgaW4gTW9kdWxlcy9iYXR0ZXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTcwNjIKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KKworICAgICAgICBVc2UgUmVmUHRyPD4mIHRvIHJlZHVjZSB1c2VzIG9mIFBhc3NSZWZQ
dHIgaW4gV2ViS2l0LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9CYXR0ZXJ5L1dlYkJhdHRlcnlN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmF0dGVyeU1hbmFnZXI6OmRpZENoYW5n
ZUJhdHRlcnlTdGF0dXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYXR0ZXJ5TWFuYWdlcjo6dXBk
YXRlQmF0dGVyeVN0YXR1cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjptX3Nob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50
cyk6CisKIDIwMTYtMDUtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBHZW5lcmF0ZSBiaW5kaW5ncyBjb2RlIGZvciBFdmVudFRhcmdldC5hZGRFdmVudExpc3Rl
bmVyKCkgLyByZW1vdmVFdmVudExpc3RlbmVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2JhdHRlcnkvQmF0dGVyeUNsaWVudC5oCmluZGV4IDJjODdhNDRiYjBiYTA4MWUxZWFlYTU1Njhi
MzIyNmVjNDJjNDIzYWIuLjk0ZmJiNTBjMjkxNTgyYzg5NmIwMGFhNmI2M2ViYmZkYTJiMzM0NTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5Q2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlDbGllbnQuaApA
QCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJhdHRlcnlDb250cm9s
bGVyRGVzdHJveWVkKCkgPSAwOwogfTsKIAotdm9pZCBwcm92aWRlQmF0dGVyeVRvKFBhZ2UqLCBC
YXR0ZXJ5Q2xpZW50Kik7Cit2b2lkIHByb3ZpZGVCYXR0ZXJ5VG8oUGFnZSYsIEJhdHRlcnlDbGll
bnQmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkv
QmF0dGVyeUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0Jh
dHRlcnlDb250cm9sbGVyLmNwcAppbmRleCAyNTIxNWM5NzA0NmNlOWZlMmJmYWIxZTBiNGQwMWQx
NGFiMTM1YjhkLi5jYjM1MWU5Mjc4NTQ3YjFjNTNmZmQwNDQ3NzYxMzMyYjM2Y2Y3MWZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvQmF0dGVyeUNvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5Q29udHJvbGxl
ci5jcHAKQEAgLTI5LDI2ICsyOSwyNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUJhdHRl
cnlDb250cm9sbGVyOjpCYXR0ZXJ5Q29udHJvbGxlcihCYXR0ZXJ5Q2xpZW50KiBjbGllbnQpCitC
YXR0ZXJ5Q29udHJvbGxlcjo6QmF0dGVyeUNvbnRyb2xsZXIoQmF0dGVyeUNsaWVudCYgY2xpZW50
KQogICAgIDogbV9jbGllbnQoY2xpZW50KQogewotICAgIEFTU0VSVChtX2NsaWVudCk7CiB9CiAK
IEJhdHRlcnlDb250cm9sbGVyOjp+QmF0dGVyeUNvbnRyb2xsZXIoKQogewogICAgIGZvciAoYXV0
byYgbGlzdGVuZXIgOiBtX2xpc3RlbmVycykKICAgICAgICAgbGlzdGVuZXItPmJhdHRlcnlDb250
cm9sbGVyRGVzdHJveWVkKCk7Ci0gICAgbV9jbGllbnQtPmJhdHRlcnlDb250cm9sbGVyRGVzdHJv
eWVkKCk7CisgICAgbV9jbGllbnQuYmF0dGVyeUNvbnRyb2xsZXJEZXN0cm95ZWQoKTsKIH0KIAog
dm9pZCBCYXR0ZXJ5Q29udHJvbGxlcjo6YWRkTGlzdGVuZXIoQmF0dGVyeU1hbmFnZXIqIGJhdHRl
cnlNYW5hZ2VyKQogewogICAgIG1fbGlzdGVuZXJzLmFwcGVuZChiYXR0ZXJ5TWFuYWdlcik7Ci0g
ICAgbV9jbGllbnQtPnN0YXJ0VXBkYXRpbmcoKTsKKyAgICBtX2NsaWVudC5zdGFydFVwZGF0aW5n
KCk7CiAKICAgICBpZiAobV9iYXR0ZXJ5U3RhdHVzKQotICAgICAgICBiYXR0ZXJ5TWFuYWdlci0+
dXBkYXRlQmF0dGVyeVN0YXR1cyhtX2JhdHRlcnlTdGF0dXMpOworICAgICAgICBiYXR0ZXJ5TWFu
YWdlci0+dXBkYXRlQmF0dGVyeVN0YXR1cyhXVEZNb3ZlKG1fYmF0dGVyeVN0YXR1cykpOwogfQog
CiB2b2lkIEJhdHRlcnlDb250cm9sbGVyOjpyZW1vdmVMaXN0ZW5lcihCYXR0ZXJ5TWFuYWdlciog
YmF0dGVyeU1hbmFnZXIpCkBAIC01OCwzNiArNTcsMzQgQEAgdm9pZCBCYXR0ZXJ5Q29udHJvbGxl
cjo6cmVtb3ZlTGlzdGVuZXIoQmF0dGVyeU1hbmFnZXIqIGJhdHRlcnlNYW5hZ2VyKQogICAgICAg
ICByZXR1cm47CiAgICAgbV9saXN0ZW5lcnMucmVtb3ZlKHBvcyk7CiAgICAgaWYgKG1fbGlzdGVu
ZXJzLmlzRW1wdHkoKSkKLSAgICAgICAgbV9jbGllbnQtPnN0b3BVcGRhdGluZygpOworICAgICAg
ICBtX2NsaWVudC5zdG9wVXBkYXRpbmcoKTsKIH0KIAotdm9pZCBCYXR0ZXJ5Q29udHJvbGxlcjo6
dXBkYXRlQmF0dGVyeVN0YXR1cyhQYXNzUmVmUHRyPEJhdHRlcnlTdGF0dXM+IGJhdHRlcnlTdGF0
dXMpCit2b2lkIEJhdHRlcnlDb250cm9sbGVyOjp1cGRhdGVCYXR0ZXJ5U3RhdHVzKFJlZlB0cjxC
YXR0ZXJ5U3RhdHVzPiYmIGJhdHRlcnlTdGF0dXMpCiB7Ci0gICAgUmVmUHRyPEJhdHRlcnlTdGF0
dXM+IHN0YXR1cyA9IGJhdHRlcnlTdGF0dXM7CiAgICAgaWYgKG1fYmF0dGVyeVN0YXR1cykgewot
ICAgICAgICBpZiAobV9iYXR0ZXJ5U3RhdHVzLT5jaGFyZ2luZygpICE9IHN0YXR1cy0+Y2hhcmdp
bmcoKSkKLSAgICAgICAgICAgIGRpZENoYW5nZUJhdHRlcnlTdGF0dXMoV2ViQ29yZTo6ZXZlbnRO
YW1lcygpLmNoYXJnaW5nY2hhbmdlRXZlbnQsIHN0YXR1cyk7Ci0gICAgICAgIGVsc2UgaWYgKHN0
YXR1cy0+Y2hhcmdpbmcoKSAmJiBtX2JhdHRlcnlTdGF0dXMtPmNoYXJnaW5nVGltZSgpICE9IHN0
YXR1cy0+Y2hhcmdpbmdUaW1lKCkpCi0gICAgICAgICAgICBkaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVz
KFdlYkNvcmU6OmV2ZW50TmFtZXMoKS5jaGFyZ2luZ3RpbWVjaGFuZ2VFdmVudCwgc3RhdHVzKTsK
LSAgICAgICAgZWxzZSBpZiAoIXN0YXR1cy0+Y2hhcmdpbmcoKSAmJiBtX2JhdHRlcnlTdGF0dXMt
PmRpc2NoYXJnaW5nVGltZSgpICE9IHN0YXR1cy0+ZGlzY2hhcmdpbmdUaW1lKCkpCi0gICAgICAg
ICAgICBkaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKFdlYkNvcmU6OmV2ZW50TmFtZXMoKS5kaXNjaGFy
Z2luZ3RpbWVjaGFuZ2VFdmVudCwgc3RhdHVzKTsKLQotICAgICAgICBpZiAobV9iYXR0ZXJ5U3Rh
dHVzLT5sZXZlbCgpICE9IHN0YXR1cy0+bGV2ZWwoKSkKLSAgICAgICAgICAgIGRpZENoYW5nZUJh
dHRlcnlTdGF0dXMoV2ViQ29yZTo6ZXZlbnROYW1lcygpLmxldmVsY2hhbmdlRXZlbnQsIHN0YXR1
cyk7CisgICAgICAgIGlmIChtX2JhdHRlcnlTdGF0dXMtPmNoYXJnaW5nKCkgIT0gYmF0dGVyeVN0
YXR1cy0+Y2hhcmdpbmcoKSkKKyAgICAgICAgICAgIGRpZENoYW5nZUJhdHRlcnlTdGF0dXMoV2Vi
Q29yZTo6ZXZlbnROYW1lcygpLmNoYXJnaW5nY2hhbmdlRXZlbnQsIGJhdHRlcnlTdGF0dXMuZ2V0
KCkpOworICAgICAgICBlbHNlIGlmIChiYXR0ZXJ5U3RhdHVzLT5jaGFyZ2luZygpICYmIG1fYmF0
dGVyeVN0YXR1cy0+Y2hhcmdpbmdUaW1lKCkgIT0gYmF0dGVyeVN0YXR1cy0+Y2hhcmdpbmdUaW1l
KCkpCisgICAgICAgICAgICBkaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKFdlYkNvcmU6OmV2ZW50TmFt
ZXMoKS5jaGFyZ2luZ3RpbWVjaGFuZ2VFdmVudCwgYmF0dGVyeVN0YXR1cy5nZXQoKSk7CisgICAg
ICAgIGVsc2UgaWYgKCFiYXR0ZXJ5U3RhdHVzLT5jaGFyZ2luZygpICYmIG1fYmF0dGVyeVN0YXR1
cy0+ZGlzY2hhcmdpbmdUaW1lKCkgIT0gYmF0dGVyeVN0YXR1cy0+ZGlzY2hhcmdpbmdUaW1lKCkp
CisgICAgICAgICAgICBkaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKFdlYkNvcmU6OmV2ZW50TmFtZXMo
KS5kaXNjaGFyZ2luZ3RpbWVjaGFuZ2VFdmVudCwgYmF0dGVyeVN0YXR1cy5nZXQoKSk7CisKKyAg
ICAgICAgaWYgKG1fYmF0dGVyeVN0YXR1cy0+bGV2ZWwoKSAhPSBiYXR0ZXJ5U3RhdHVzLT5sZXZl
bCgpKQorICAgICAgICAgICAgZGlkQ2hhbmdlQmF0dGVyeVN0YXR1cyhXZWJDb3JlOjpldmVudE5h
bWVzKCkubGV2ZWxjaGFuZ2VFdmVudCwgYmF0dGVyeVN0YXR1cy5nZXQoKSk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgZm9yIChhdXRvJiBsaXN0ZW5lciA6IG1fbGlzdGVuZXJzKQotICAgICAgICAg
ICAgbGlzdGVuZXItPnVwZGF0ZUJhdHRlcnlTdGF0dXMoc3RhdHVzKTsKKyAgICAgICAgICAgIGxp
c3RlbmVyLT51cGRhdGVCYXR0ZXJ5U3RhdHVzKGJhdHRlcnlTdGF0dXMuY29weVJlZigpKTsKICAg
ICB9CiAKLSAgICBtX2JhdHRlcnlTdGF0dXMgPSBzdGF0dXMucmVsZWFzZSgpOworICAgIG1fYmF0
dGVyeVN0YXR1cyA9IFdURk1vdmUoYmF0dGVyeVN0YXR1cyk7CiB9CiAKLXZvaWQgQmF0dGVyeUNv
bnRyb2xsZXI6OmRpZENoYW5nZUJhdHRlcnlTdGF0dXMoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIFBhc3NSZWZQdHI8QmF0dGVyeVN0YXR1cz4gYmF0dGVyeVN0YXR1cykKK3ZvaWQgQmF0
dGVyeUNvbnRyb2xsZXI6OmRpZENoYW5nZUJhdHRlcnlTdGF0dXMoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFJlZlB0cjxCYXR0ZXJ5U3RhdHVzPiYmIGJhdHRlcnlTdGF0dXMpCiB7CiAg
ICAgUmVmPEV2ZW50PiBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBmYWxzZSwgZmFs
c2UpOwotICAgIFJlZlB0cjxCYXR0ZXJ5U3RhdHVzPiBiYXR0ZXJ5ID0gYmF0dGVyeVN0YXR1czsK
ICAgICBmb3IgKGF1dG8mIGxpc3RlbmVyIDogbV9saXN0ZW5lcnMpCi0gICAgICAgIGxpc3RlbmVy
LT5kaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKGV2ZW50LCBiYXR0ZXJ5KTsKKyAgICAgICAgbGlzdGVu
ZXItPmRpZENoYW5nZUJhdHRlcnlTdGF0dXMoZXZlbnQsIGJhdHRlcnlTdGF0dXMuY29weVJlZigp
KTsKIH0KIAogY29uc3QgY2hhciogQmF0dGVyeUNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCkK
QEAgLTk1LDkgKzkyLDkgQEAgY29uc3QgY2hhciogQmF0dGVyeUNvbnRyb2xsZXI6OnN1cHBsZW1l
bnROYW1lKCkKICAgICByZXR1cm4gIkJhdHRlcnlDb250cm9sbGVyIjsKIH0KIAotdm9pZCBwcm92
aWRlQmF0dGVyeVRvKFBhZ2UqIHBhZ2UsIEJhdHRlcnlDbGllbnQqIGNsaWVudCkKK3ZvaWQgcHJv
dmlkZUJhdHRlcnlUbyhQYWdlJiBwYWdlLCBCYXR0ZXJ5Q2xpZW50JiBjbGllbnQpCiB7Ci0gICAg
U3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRvKHBhZ2UsIEJhdHRlcnlDb250cm9sbGVyOjpzdXBw
bGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPEJhdHRlcnlDb250cm9sbGVyPihjbGllbnQp
KTsKKyAgICBTdXBwbGVtZW50PFBhZ2U+Ojpwcm92aWRlVG8oJnBhZ2UsIEJhdHRlcnlDb250cm9s
bGVyOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPEJhdHRlcnlDb250cm9sbGVy
PihjbGllbnQpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9i
YXR0ZXJ5L0JhdHRlcnlDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRl
cnkvQmF0dGVyeUNvbnRyb2xsZXIuaAppbmRleCBkMGJlOTRhNzU4YzExODg0YjJjOTA3YWQzMDcx
MTAzNTEyY2Y0N2M0Li4yMWEwMmNkMDQ0Nzc3MWQ5ZTlkNDA2YWJlODJmYjA1MTM3NzIzODYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvQmF0dGVyeUNvbnRyb2xs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvQmF0dGVyeUNvbnRyb2xs
ZXIuaApAQCAtMzIsMTMgKzMyLDEzIEBAIGNsYXNzIEJhdHRlcnlDbGllbnQ7CiAKIGNsYXNzIEJh
dHRlcnlDb250cm9sbGVyIDogcHVibGljIFN1cHBsZW1lbnQ8UGFnZT4gewogcHVibGljOgotICAg
IGV4cGxpY2l0IEJhdHRlcnlDb250cm9sbGVyKEJhdHRlcnlDbGllbnQqKTsKKyAgICBleHBsaWNp
dCBCYXR0ZXJ5Q29udHJvbGxlcihCYXR0ZXJ5Q2xpZW50Jik7CiAgICAgfkJhdHRlcnlDb250cm9s
bGVyKCk7CiAKICAgICB2b2lkIGFkZExpc3RlbmVyKEJhdHRlcnlNYW5hZ2VyKik7CiAgICAgdm9p
ZCByZW1vdmVMaXN0ZW5lcihCYXR0ZXJ5TWFuYWdlciopOwotICAgIHZvaWQgdXBkYXRlQmF0dGVy
eVN0YXR1cyhQYXNzUmVmUHRyPEJhdHRlcnlTdGF0dXM+KTsKLSAgICB2b2lkIGRpZENoYW5nZUJh
dHRlcnlTdGF0dXMoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8QmF0
dGVyeVN0YXR1cz4pOworICAgIHZvaWQgdXBkYXRlQmF0dGVyeVN0YXR1cyhSZWZQdHI8QmF0dGVy
eVN0YXR1cz4mJik7CisgICAgdm9pZCBkaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8QmF0dGVyeVN0YXR1cz4mJik7CiAKICAgICBzdGF0
aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKICAgICBzdGF0aWMgQmF0dGVyeUNvbnRy
b2xsZXIqIGZyb20oUGFnZSogcGFnZSkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QmF0dGVyeUNvbnRy
b2xsZXIqPihTdXBwbGVtZW50PFBhZ2U+Ojpmcm9tKHBhZ2UsIHN1cHBsZW1lbnROYW1lKCkpKTsg
fQpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHR5cGVkZWYgVmVjdG9y
PEJhdHRlcnlNYW5hZ2VyKj4gTGlzdGVuZXJWZWN0b3I7CiAKLSAgICBCYXR0ZXJ5Q2xpZW50KiBt
X2NsaWVudDsKKyAgICBCYXR0ZXJ5Q2xpZW50JiBtX2NsaWVudDsKICAgICBMaXN0ZW5lclZlY3Rv
ciBtX2xpc3RlbmVyczsKIAogICAgIFJlZlB0cjxCYXR0ZXJ5U3RhdHVzPiBtX2JhdHRlcnlTdGF0
dXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvQmF0dGVyeU1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlNYW5hZ2Vy
LmNwcAppbmRleCA0MDQ5YTQ1M2Y0ZTExYmFjNTM5ZGFjMmU4ZWRkMDJlODFhYzdmOWE1Li4wNzYz
ZGYwZmIxMDQ4NTM1OTQyNjU4YjM2YmU4ZGQ2OTdjZTIyMmY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvQmF0dGVyeU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5TWFuYWdlci5jcHAKQEAgLTc3LDE1ICs3Nywx
NSBAQCBkb3VibGUgQmF0dGVyeU1hbmFnZXI6OmxldmVsKCkKICAgICByZXR1cm4gbV9iYXR0ZXJ5
U3RhdHVzID8gbV9iYXR0ZXJ5U3RhdHVzLT5sZXZlbCgpIDogMTsKIH0KIAotdm9pZCBCYXR0ZXJ5
TWFuYWdlcjo6ZGlkQ2hhbmdlQmF0dGVyeVN0YXR1cyhFdmVudCYgZXZlbnQsIFBhc3NSZWZQdHI8
QmF0dGVyeVN0YXR1cz4gYmF0dGVyeVN0YXR1cykKK3ZvaWQgQmF0dGVyeU1hbmFnZXI6OmRpZENo
YW5nZUJhdHRlcnlTdGF0dXMoRXZlbnQmIGV2ZW50LCBSZWZQdHI8QmF0dGVyeVN0YXR1cz4mJiBi
YXR0ZXJ5U3RhdHVzKQogewotICAgIHVwZGF0ZUJhdHRlcnlTdGF0dXMoYmF0dGVyeVN0YXR1cyk7
CisgICAgdXBkYXRlQmF0dGVyeVN0YXR1cyhXVEZNb3ZlKGJhdHRlcnlTdGF0dXMpKTsKICAgICBk
aXNwYXRjaEV2ZW50KGV2ZW50KTsKIH0KIAotdm9pZCBCYXR0ZXJ5TWFuYWdlcjo6dXBkYXRlQmF0
dGVyeVN0YXR1cyhQYXNzUmVmUHRyPEJhdHRlcnlTdGF0dXM+IGJhdHRlcnlTdGF0dXMpCit2b2lk
IEJhdHRlcnlNYW5hZ2VyOjp1cGRhdGVCYXR0ZXJ5U3RhdHVzKFJlZlB0cjxCYXR0ZXJ5U3RhdHVz
PiYmIGJhdHRlcnlTdGF0dXMpCiB7Ci0gICAgbV9iYXR0ZXJ5U3RhdHVzID0gYmF0dGVyeVN0YXR1
czsKKyAgICBtX2JhdHRlcnlTdGF0dXMgPSBXVEZNb3ZlKGJhdHRlcnlTdGF0dXMpOwogfQogCiBi
b29sIEJhdHRlcnlNYW5hZ2VyOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5TWFu
YWdlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlNYW5hZ2VyLmgK
aW5kZXggYTc0ZGFjZjVjZTRmMDk1YThkMWQ0MzRkMDFiOGI0YjIxMmIwM2IyMS4uYjg0ZmFlM2Vm
NmJmMzQ5NzEyNDk4YmIxMDRjNmEyZWEwMWNiMzVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlNYW5hZ2VyLmgKQEAgLTQ2LDggKzQ2LDggQEAgcHVibGlj
OgogICAgIGRvdWJsZSBkaXNjaGFyZ2luZ1RpbWUoKTsKICAgICBkb3VibGUgbGV2ZWwoKTsKIAot
ICAgIHZvaWQgZGlkQ2hhbmdlQmF0dGVyeVN0YXR1cyhFdmVudCYsIFBhc3NSZWZQdHI8QmF0dGVy
eVN0YXR1cz4pOwotICAgIHZvaWQgdXBkYXRlQmF0dGVyeVN0YXR1cyhQYXNzUmVmUHRyPEJhdHRl
cnlTdGF0dXM+KTsKKyAgICB2b2lkIGRpZENoYW5nZUJhdHRlcnlTdGF0dXMoRXZlbnQmLCBSZWZQ
dHI8QmF0dGVyeVN0YXR1cz4mJik7CisgICAgdm9pZCB1cGRhdGVCYXR0ZXJ5U3RhdHVzKFJlZlB0
cjxCYXR0ZXJ5U3RhdHVzPiYmKTsKICAgICB2b2lkIGJhdHRlcnlDb250cm9sbGVyRGVzdHJveWVk
KCkgeyBtX2JhdHRlcnlDb250cm9sbGVyID0gbnVsbHB0cjsgfQogCiAgICAgdXNpbmcgUmVmQ291
bnRlZDxCYXR0ZXJ5TWFuYWdlcj46OnJlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5U3RhdHVzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Jh
dHRlcnkvQmF0dGVyeVN0YXR1cy5oCmluZGV4IDUxNGE4ZmJiOGFhYTVlNGMzZDU4Y2EwYWE2NTU5
NWFiMGQ4NmNhN2MuLmY1ODRlZTcyOWI5YmM5NWY5MzgxZGI4NTY2ZmQzZjM5OGJlOTJmOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5U3RhdHVzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlTdGF0dXMuaApAQCAt
MjIsNyArMjIsNyBAQAogCiAjaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQogCi0jaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9CYXR0ZXJ5L1dlYkJhdHRlcnlNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvQmF0dGVyeS9XZWJCYXR0ZXJ5TWFuYWdlci5jcHAKaW5kZXggZGFl
NTIzYmJiYTNiMTlkMGJlNDNjZTVkN2ZlNmUyODVlZTEzMzFhMS4uZmVmNjQzZmIxZGRlY2YxNzhm
YzY1YjdhOTcxNzA3ZDk2MDhkNmFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9CYXR0ZXJ5L1dlYkJhdHRlcnlNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0JhdHRlcnkvV2ViQmF0dGVyeU1hbmFnZXIuY3BwCkBAIC03NSwyMSArNzUsMjEg
QEAgdm9pZCBXZWJCYXR0ZXJ5TWFuYWdlcjo6dW5yZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSogcGFn
ZSkKIAogdm9pZCBXZWJCYXR0ZXJ5TWFuYWdlcjo6ZGlkQ2hhbmdlQmF0dGVyeVN0YXR1cyhjb25z
dCBXVEY6OkF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBXZWJCYXR0ZXJ5U3RhdHVzOjpE
YXRhJiBkYXRhKQogewotICAgIFJlZlB0cjxCYXR0ZXJ5U3RhdHVzPiBzdGF0dXMgPSBCYXR0ZXJ5
U3RhdHVzOjpjcmVhdGUoZGF0YS5pc0NoYXJnaW5nLCBkYXRhLmNoYXJnaW5nVGltZSwgZGF0YS5k
aXNjaGFyZ2luZ1RpbWUsIGRhdGEubGV2ZWwpOworICAgIGF1dG8gc3RhdHVzID0gQmF0dGVyeVN0
YXR1czo6Y3JlYXRlKGRhdGEuaXNDaGFyZ2luZywgZGF0YS5jaGFyZ2luZ1RpbWUsIGRhdGEuZGlz
Y2hhcmdpbmdUaW1lLCBkYXRhLmxldmVsKTsKIAogICAgIGZvciAoYXV0byogcGFnZSA6IG1fcGFn
ZVNldCkgewogICAgICAgICBpZiAocGFnZS0+Y29yZVBhZ2UoKSkKLSAgICAgICAgICAgIEJhdHRl
cnlDb250cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5kaWRDaGFuZ2VCYXR0ZXJ5U3Rh
dHVzKGV2ZW50VHlwZSwgc3RhdHVzLmdldCgpKTsKKyAgICAgICAgICAgIEJhdHRlcnlDb250cm9s
bGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5kaWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKGV2ZW50
VHlwZSwgc3RhdHVzLnB0cigpKTsKICAgICB9CiB9CiAKIHZvaWQgV2ViQmF0dGVyeU1hbmFnZXI6
OnVwZGF0ZUJhdHRlcnlTdGF0dXMoY29uc3QgV2ViQmF0dGVyeVN0YXR1czo6RGF0YSYgZGF0YSkK
IHsKLSAgICBSZWZQdHI8QmF0dGVyeVN0YXR1cz4gc3RhdHVzID0gQmF0dGVyeVN0YXR1czo6Y3Jl
YXRlKGRhdGEuaXNDaGFyZ2luZywgZGF0YS5jaGFyZ2luZ1RpbWUsIGRhdGEuZGlzY2hhcmdpbmdU
aW1lLCBkYXRhLmxldmVsKTsKKyAgICBhdXRvIHN0YXR1cyA9IEJhdHRlcnlTdGF0dXM6OmNyZWF0
ZShkYXRhLmlzQ2hhcmdpbmcsIGRhdGEuY2hhcmdpbmdUaW1lLCBkYXRhLmRpc2NoYXJnaW5nVGlt
ZSwgZGF0YS5sZXZlbCk7CiAKICAgICBmb3IgKGF1dG8qIHBhZ2UgOiBtX3BhZ2VTZXQpIHsKICAg
ICAgICAgaWYgKHBhZ2UtPmNvcmVQYWdlKCkpCi0gICAgICAgICAgICBCYXR0ZXJ5Q29udHJvbGxl
cjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgpKS0+dXBkYXRlQmF0dGVyeVN0YXR1cyhzdGF0dXMuZ2V0
KCkpOworICAgICAgICAgICAgQmF0dGVyeUNvbnRyb2xsZXI6OmZyb20ocGFnZS0+Y29yZVBhZ2Uo
KSktPnVwZGF0ZUJhdHRlcnlTdGF0dXMoc3RhdHVzLmNvcHlSZWYoKSk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZGY2
MzQwN2JhMzU0MjViYjg0NzFmMzFmMDkxNTViYjM0MTA1NTVlYi4uNjc4ZDEzMWRhOGRjMjBmMjRi
M2M0Njg2MDIxYWFjYTVlZTkyYmQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNDMyLDcgKzQzMiw3IEBAIFdlYlBhZ2U6OldlYlBhZ2Uo
dWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQogICAgIG1fZHJhd2luZ0FyZWEtPnVwZGF0ZVByZWZlcmVuY2VzKHBhcmFtZXRlcnMuc3Rv
cmUpOwogCiAjaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQotICAgIFdlYkNvcmU6OnByb3ZpZGVC
YXR0ZXJ5VG8obV9wYWdlLmdldCgpLCBuZXcgV2ViQmF0dGVyeUNsaWVudCh0aGlzKSk7CisgICAg
V2ViQ29yZTo6cHJvdmlkZUJhdHRlcnlUbygqbV9wYWdlLCAqbmV3IFdlYkJhdHRlcnlDbGllbnQo
dGhpcykpOwogI2VuZGlmCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogICAgIFdlYkNvcmU6OnBy
b3ZpZGVHZW9sb2NhdGlvblRvKG1fcGFnZS5nZXQoKSwgbmV3IFdlYkdlb2xvY2F0aW9uQ2xpZW50
KHRoaXMpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>