<?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>139395</bug_id>
          
          <creation_ts>2014-12-08 07:07:46 -0800</creation_ts>
          <short_desc>Move WebCore/platform/text to std::unique_ptr</short_desc>
          <delta_ts>2014-12-15 09:17:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>128007</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Gyuyoung Kim">gyuyoung.kim</reporter>
          <assigned_to name="Gyuyoung Kim">gyuyoung.kim</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1053371</commentid>
    <comment_count>0</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-12-08 07:07:46 -0800</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053372</commentid>
    <comment_count>1</comment_count>
      <attachid>242808</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-12-08 07:09:40 -0800</bug_when>
    <thetext>Created attachment 242808
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053635</commentid>
    <comment_count>2</comment_count>
      <attachid>242876</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-12-08 20:52:01 -0800</bug_when>
    <thetext>Created attachment 242876
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054000</commentid>
    <comment_count>3</comment_count>
      <attachid>242978</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-12-09 16:59:36 -0800</bug_when>
    <thetext>Created attachment 242978
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054387</commentid>
    <comment_count>4</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-12-10 19:08:50 -0800</bug_when>
    <thetext>CC&apos;ing Darin. Could you take a look this ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054769</commentid>
    <comment_count>5</comment_count>
      <attachid>242978</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-12-11 23:53:03 -0800</bug_when>
    <thetext>Comment on attachment 242978
Patch

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

&gt; Source/WebCore/platform/text/LocaleICU.cpp:167
&gt; +std::unique_ptr&lt;Vector&lt;String&gt; &gt; LocaleICU::createLabelVector(const UDateFormat* dateFormat, UDateFormatSymbolType type, int32_t startIndex, int32_t size)

nit: please remove the space between Vector&lt;String&gt; and the last &gt;.

&gt; Source/WebCore/platform/text/LocaleICU.cpp:193
&gt; +static std::unique_ptr&lt;Vector&lt;String&gt; &gt; createFallbackMonthLabels()

Ditto.  Remove extra space.

&gt; Source/WebCore/platform/text/LocaleICU.cpp:217
&gt; +static std::unique_ptr&lt;Vector&lt;String&gt; &gt; createFallbackAMPMLabels()

Ditto.  Remove extra space.

&gt; Source/WebCore/platform/text/LocaleICU.cpp:333
&gt; -        if (OwnPtr&lt;Vector&lt;String&gt; &gt; labels = createLabelVector(m_shortDateFormat, UDAT_SHORT_MONTHS, UCAL_JANUARY, 12)) {
&gt; +        auto labels = createLabelVector(m_shortDateFormat, UDAT_SHORT_MONTHS, UCAL_JANUARY, 12)) {

Strange.  How did this build?  The “if (” is missing.

&gt; Source/WebCore/platform/text/mac/LocaleMac.h:50
&gt; +    static std::unique_ptr&lt;LocaleMac&gt; create(NSLocale*);

I think no one calls this now that Locale::create() constructs LocaleMac directly with a make_unique.  If no one calls this anymore, please remove it (and the impl in the cpp file as well).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054773</commentid>
    <comment_count>6</comment_count>
      <attachid>243182</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-12-12 00:05:49 -0800</bug_when>
    <thetext>Created attachment 243182
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054774</commentid>
    <comment_count>7</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-12-12 00:07:20 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 242978 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=242978&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/text/LocaleICU.cpp:167
&gt; &gt; +std::unique_ptr&lt;Vector&lt;String&gt; &gt; LocaleICU::createLabelVector(const UDateFormat* dateFormat, UDateFormatSymbolType type, int32_t startIndex, int32_t size)
&gt; 
&gt; nit: please remove the space between Vector&lt;String&gt; and the last &gt;.
&gt; 
&gt; &gt; Source/WebCore/platform/text/LocaleICU.cpp:193
&gt; &gt; +static std::unique_ptr&lt;Vector&lt;String&gt; &gt; createFallbackMonthLabels()
&gt; 
&gt; Ditto.  Remove extra space.
&gt; 
&gt; &gt; Source/WebCore/platform/text/LocaleICU.cpp:217
&gt; &gt; +static std::unique_ptr&lt;Vector&lt;String&gt; &gt; createFallbackAMPMLabels()
&gt; 
&gt; Ditto.  Remove extra space.

All done.

&gt; &gt; Source/WebCore/platform/text/LocaleICU.cpp:333
&gt; &gt; -        if (OwnPtr&lt;Vector&lt;String&gt; &gt; labels = createLabelVector(m_shortDateFormat, UDAT_SHORT_MONTHS, UCAL_JANUARY, 12)) {
&gt; &gt; +        auto labels = createLabelVector(m_shortDateFormat, UDAT_SHORT_MONTHS, UCAL_JANUARY, 12)) {
&gt; 
&gt; Strange.  How did this build?  The “if (” is missing.

Weird. Anyway, fixed.

&gt; &gt; Source/WebCore/platform/text/mac/LocaleMac.h:50
&gt; &gt; +    static std::unique_ptr&lt;LocaleMac&gt; create(NSLocale*);
&gt; 
&gt; I think no one calls this now that Locale::create() constructs LocaleMac
&gt; directly with a make_unique.  If no one calls this anymore, please remove it
&gt; (and the impl in the cpp file as well).

Yes, If no one calls it. it should be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054776</commentid>
    <comment_count>8</comment_count>
      <attachid>243182</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-12-12 00:20:31 -0800</bug_when>
    <thetext>Comment on attachment 243182
Patch

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

Better but there’s a few other bits I missed last time.

&gt; Source/WebCore/platform/text/LocaleICU.h:78
&gt; +    std::unique_ptr&lt;Vector&lt;String&gt; &gt; createLabelVector(const UDateFormat*, UDateFormatSymbolType, int32_t startIndex, int32_t size);

Please remove the empty space.

&gt; Source/WebCore/platform/text/LocaleICU.h:89
&gt; +    std::unique_ptr&lt;Vector&lt;String&gt; &gt; m_monthLabels;

Please remove the empty space.

&gt; Source/WebCore/platform/text/win/LocaleWin.cpp:149
&gt;      return LocaleWin::create(LCIDFromLocale(locale));

For consistency, let’s change this to:
    return std::make_unique&lt;LocaleWin&gt;(LCIDFromLocale(locale));

&gt; Source/WebCore/platform/text/win/LocaleWin.cpp:161
&gt; -PassOwnPtr&lt;LocaleWin&gt; LocaleWin::create(LCID lcid)
&gt; +std::unique_ptr&lt;LocaleWin&gt; LocaleWin::create(LCID lcid)
&gt;  {
&gt; -    return adoptPtr(new LocaleWin(lcid));
&gt; +    return std::make_unique&lt;LocaleWin&gt;(lcid);
&gt;  }

For consistency, let’s remove this.

&gt; Source/WebCore/platform/text/win/LocaleWin.h:47
&gt; -    static PassOwnPtr&lt;LocaleWin&gt; create(LCID);
&gt; +    static std::unique_ptr&lt;LocaleWin&gt; create(LCID);

For consistency, let’s remove this and make the constructor public as is done in other ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054822</commentid>
    <comment_count>9</comment_count>
      <attachid>243195</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-12-12 05:58:04 -0800</bug_when>
    <thetext>Created attachment 243195
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054823</commentid>
    <comment_count>10</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-12-12 05:58:41 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 243182 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=243182&amp;action=review
&gt; 
&gt; Better but there’s a few other bits I missed last time.
&gt; 
&gt; &gt; Source/WebCore/platform/text/LocaleICU.h:78
&gt; &gt; +    std::unique_ptr&lt;Vector&lt;String&gt; &gt; createLabelVector(const UDateFormat*, UDateFormatSymbolType, int32_t startIndex, int32_t size);
&gt; 
&gt; Please remove the empty space.
&gt; 
&gt; &gt; Source/WebCore/platform/text/LocaleICU.h:89
&gt; &gt; +    std::unique_ptr&lt;Vector&lt;String&gt; &gt; m_monthLabels;
&gt; 
&gt; Please remove the empty space.
&gt; 
&gt; &gt; Source/WebCore/platform/text/win/LocaleWin.cpp:149
&gt; &gt;      return LocaleWin::create(LCIDFromLocale(locale));
&gt; 
&gt; For consistency, let’s change this to:
&gt;     return std::make_unique&lt;LocaleWin&gt;(LCIDFromLocale(locale));
&gt; 
&gt; &gt; Source/WebCore/platform/text/win/LocaleWin.cpp:161
&gt; &gt; -PassOwnPtr&lt;LocaleWin&gt; LocaleWin::create(LCID lcid)
&gt; &gt; +std::unique_ptr&lt;LocaleWin&gt; LocaleWin::create(LCID lcid)
&gt; &gt;  {
&gt; &gt; -    return adoptPtr(new LocaleWin(lcid));
&gt; &gt; +    return std::make_unique&lt;LocaleWin&gt;(lcid);
&gt; &gt;  }
&gt; 
&gt; For consistency, let’s remove this.
&gt; 
&gt; &gt; Source/WebCore/platform/text/win/LocaleWin.h:47
&gt; &gt; -    static PassOwnPtr&lt;LocaleWin&gt; create(LCID);
&gt; &gt; +    static std::unique_ptr&lt;LocaleWin&gt; create(LCID);
&gt; 
&gt; For consistency, let’s remove this and make the constructor public as is
&gt; done in other ports.

Ok, Fixed all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054841</commentid>
    <comment_count>11</comment_count>
      <attachid>243195</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-12-12 09:40:51 -0800</bug_when>
    <thetext>Comment on attachment 243195
Patch

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

&gt; Source/WebCore/platform/text/win/LocaleWin.cpp:149
&gt; +    return std::make_unique&lt;LCIDFromLocale&gt;(locale);

This is wrong.  It should be:
    return std::make_unique&lt;LocaleWin&gt;(LCIDFromLocale(locale));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055397</commentid>
    <comment_count>12</comment_count>
      <attachid>243248</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-12-13 00:01:19 -0800</bug_when>
    <thetext>Created attachment 243248
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055398</commentid>
    <comment_count>13</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-12-13 00:01:48 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Comment on attachment 243195 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=243195&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/text/win/LocaleWin.cpp:149
&gt; &gt; +    return std::make_unique&lt;LCIDFromLocale&gt;(locale);
&gt; 
&gt; This is wrong.  It should be:
&gt;     return std::make_unique&lt;LocaleWin&gt;(LCIDFromLocale(locale));

Oh, my stupid mistake. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055463</commentid>
    <comment_count>14</comment_count>
      <attachid>243248</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-12-13 19:01:43 -0800</bug_when>
    <thetext>Comment on attachment 243248
Patch

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

&gt; Source/WebCore/platform/text/LineBreakIteratorPoolICU.h:45
&gt; +    LineBreakIteratorPool() { } 
&gt; +

This line of code can and should just be omitted. The only reason we needed a declaration for the empty constructor before was to make it private, since it’s public by default. Leaving this out should give us what we want.

&gt; Source/WebCore/platform/text/LocaleICU.cpp:167
&gt; +std::unique_ptr&lt;Vector&lt;String&gt;&gt; LocaleICU::createLabelVector(const UDateFormat* dateFormat, UDateFormatSymbolType type, int32_t startIndex, int32_t size)

This function should really just return a Vector, not a unique_ptr&lt;Vector&gt;. But that’s something someone else can fix later, I guess.

&gt; Source/WebCore/platform/text/LocaleICU.cpp:193
&gt; +static std::unique_ptr&lt;Vector&lt;String&gt;&gt; createFallbackMonthLabels()

As with the above, this function should return a Vector, not a std::unique_ptr&lt;Vector&gt;.

&gt; Source/WebCore/platform/text/LocaleICU.cpp:217
&gt; +static std::unique_ptr&lt;Vector&lt;String&gt;&gt; createFallbackAMPMLabels()

As with the above, this function should return a Vector, not a std::unique_ptr&lt;Vector&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055497</commentid>
    <comment_count>15</comment_count>
      <attachid>243269</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-12-14 07:35:06 -0800</bug_when>
    <thetext>Created attachment 243269
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055498</commentid>
    <comment_count>16</comment_count>
      <attachid>243248</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-12-14 07:37:41 -0800</bug_when>
    <thetext>Comment on attachment 243248
Patch

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

&gt;&gt; Source/WebCore/platform/text/LineBreakIteratorPoolICU.h:45
&gt;&gt; +
&gt; 
&gt; This line of code can and should just be omitted. The only reason we needed a declaration for the empty constructor before was to make it private, since it’s public by default. Leaving this out should give us what we want.

yes, we don&apos;t need to keep empty constructor as public. Removed.

&gt;&gt; Source/WebCore/platform/text/LocaleICU.cpp:167
&gt;&gt; +std::unique_ptr&lt;Vector&lt;String&gt;&gt; LocaleICU::createLabelVector(const UDateFormat* dateFormat, UDateFormatSymbolType type, int32_t startIndex, int32_t size)
&gt; 
&gt; This function should really just return a Vector, not a unique_ptr&lt;Vector&gt;. But that’s something someone else can fix later, I guess.

Let me file a new bug for handling your comment in near future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055501</commentid>
    <comment_count>17</comment_count>
      <attachid>243272</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-12-14 08:06:06 -0800</bug_when>
    <thetext>Created attachment 243272
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055513</commentid>
    <comment_count>18</comment_count>
      <attachid>243272</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-12-14 17:04:37 -0800</bug_when>
    <thetext>Comment on attachment 243272
Patch

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

&gt; Source/WebCore/platform/text/LineBreakIteratorPoolICU.h:44
&gt; +    LineBreakIteratorPool() { }

It’s still here, but you said you removed it. Did something go wrong?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055526</commentid>
    <comment_count>19</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-12-14 18:13:51 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; Comment on attachment 243272 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=243272&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/text/LineBreakIteratorPoolICU.h:44
&gt; &gt; +    LineBreakIteratorPool() { }
&gt; 
&gt; It’s still here, but you said you removed it. Did something go wrong?

Because there were a build break on EFL and GTK port when I removed it as below,

WTF_MAKE_NONCOPYABLE seems that LineBreakIteratorPool class doesn&apos;t allow to make a default constructor implicitly. Thus LineBreakIteratorPool seems to need to have it explicitly.


../../Source/WebCore/platform/text/LineBreakIteratorPoolICU.h:49:18:   required from here
../../Source/WTF/wtf/ThreadSpecific.h:258:9: error: no matching function for call to ‘WebCore::LineBreakIteratorPool::LineBreakIteratorPool()’
         new (NotNull, ptr) T;
         ^
../../Source/WTF/wtf/ThreadSpecific.h:258:9: note: candidate is:
In file included from ../../Source/WebCore/platform/text/TextBreakIterator.cpp:25:0:
../../Source/WebCore/platform/text/LineBreakIteratorPoolICU.h:42:14: note: WebCore::LineBreakIteratorPool::LineBreakIteratorPool(const WebCore::LineBreakIteratorPool&amp;) &lt;deleted&gt;
     WTF_MAKE_NONCOPYABLE(LineBreakIteratorPool);
              ^
../../Source/WebCore/platform/text/LineBreakIteratorPoolICU.h:42:14: note:   candidate expects 1 argument, 0 provided</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055633</commentid>
    <comment_count>20</comment_count>
      <attachid>243272</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-15 09:17:08 -0800</bug_when>
    <thetext>Comment on attachment 243272
Patch

Clearing flags on attachment: 243272

Committed r177280: &lt;http://trac.webkit.org/changeset/177280&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055635</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-15 09:17:14 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242808</attachid>
            <date>2014-12-08 07:09:40 -0800</date>
            <delta_ts>2014-12-08 20:51:56 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-139395-20141209001017.patch</filename>
            <type>text/plain</type>
            <size>6250</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc2ODk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGU1YTQxMDE2NDI5OGRl
NmM3ZDdlYjI3M2FmYjkzOWViMWUzZmRlYy4uNTQ0ZWE5Nzc3ZDVlZGNkZDIxMmU0MDE5MGY4NDU4
MjQyYWIzYWI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE0LTEyLTA4ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgTW92ZSBXZWJD
b3JlL3BsYXRmb3JtL3RleHQgdG8gc3RkOjp1bmlxdWVfcHRyIAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5Mzk1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oOgorICAgICAg
ICAoV2ViQ29yZTo6TGluZUJyZWFrSXRlcmF0b3JQb29sOjpjcmVhdGUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TGluZUJyZWFrSXRlcmF0b3JQb29sOjpMaW5lQnJlYWtJdGVyYXRvclBv
b2wpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxvY2FsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2Fs
ZUlDVTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xvY2FsZUlD
VS5oOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpMb2Nh
bGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVNYWM6OmNyZWF0ZSk6CisKIDIw
MTQtMTItMDUgIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25nQGFwcGxlLmNvbT4KIAogICAgICAgICBb
V2luXSBwcm9qIGZpbGVzIGNvcHlpbmcgb3ZlciB0b28gbWFueSByZXNvdXJjZXMuLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJ
Q1UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29s
SUNVLmgKaW5kZXggNjc0YTA2ZDM3Y2NkOTk3M2QxNDZkYzhlNGYyZTU0YjcwOWE0NWQxMS4uYTU3
YmViODBiMGQxZWJmZDg1Y2U1YzY0YTk4OWNiMTQ2Mzk2MWE1NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oCkBA
IC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSA8dW5pY29kZS91YnJrLmg+CiAjaW5jbHVkZSA8d3Rm
L0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpA
QCAtNDIsMTQgKzQxLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExpbmVCcmVha0l0
ZXJhdG9yUG9vbCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTGluZUJyZWFrSXRlcmF0b3JQ
b29sKTsKIHB1YmxpYzoKKyAgICBMaW5lQnJlYWtJdGVyYXRvclBvb2woKTsKKwogICAgIHN0YXRp
YyBMaW5lQnJlYWtJdGVyYXRvclBvb2wmIHNoYXJlZFBvb2woKQogICAgIHsKICAgICAgICAgc3Rh
dGljIFdURjo6VGhyZWFkU3BlY2lmaWM8TGluZUJyZWFrSXRlcmF0b3JQb29sPiogcG9vbCA9IG5l
dyBXVEY6OlRocmVhZFNwZWNpZmljPExpbmVCcmVha0l0ZXJhdG9yUG9vbD47CiAgICAgICAgIHJl
dHVybiAqKnBvb2w7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NPd25QdHI8TGluZUJyZWFrSXRl
cmF0b3JQb29sPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFB0cihuZXcgTGluZUJyZWFrSXRlcmF0
b3JQb29sKTsgfQotCiAgICAgc3RhdGljIFN0cmluZyBtYWtlTG9jYWxlV2l0aEJyZWFrS2V5d29y
ZChjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUp
CiAgICAgewogICAgICAgICBTdHJpbmdCdWlsZGVyIGxvY2FsZVdpdGhLZXl3b3JkOwpAQCAtMTEz
LDggKzExMiw2IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgTGluZUJyZWFrSXRl
cmF0b3JQb29sKCkgeyB9Ci0KICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNhcGFjaXR5ID0gNDsK
IAogICAgIHR5cGVkZWYgc3RkOjpwYWlyPEF0b21pY1N0cmluZywgVGV4dEJyZWFrSXRlcmF0b3Iq
PiBFbnRyeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxl
SUNVLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcAppbmRl
eCBhMWU2NTllNzA1NmQ1NzFkNTkyOGYwODQ0NTc1ZWE3Njc1YjQxNGUyLi4wMTE1OWZjOThkNDc0
ZjRmZTU4YjJmNGNjNGZlMjU2NzM2Y2FkOGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9Mb2NhbGVJQ1UuY3BwCkBAIC00NCw5ICs0NCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxMb2NhbGU+IExvY2FsZTo6Y3Jl
YXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQorc3RkOjp1bmlxdWVfcHRyPExvY2FsZT4g
TG9jYWxlOjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUpCiB7Ci0gICAgcmV0dXJu
IExvY2FsZUlDVTo6Y3JlYXRlKGxvY2FsZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMb2NhbGVJQ1U+KGxvY2FsZVN0cmluZyk7CiB9CiAKIExv
Y2FsZUlDVTo6TG9jYWxlSUNVKGNvbnN0IGNoYXIqIGxvY2FsZSkKQEAgLTczLDExICs3Myw2IEBA
IExvY2FsZUlDVTo6fkxvY2FsZUlDVSgpCiAjZW5kaWYKIH0KIAotUGFzc093blB0cjxMb2NhbGVJ
Q1U+IExvY2FsZUlDVTo6Y3JlYXRlKGNvbnN0IGNoYXIqIGxvY2FsZVN0cmluZykKLXsKLSAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IExvY2FsZUlDVShsb2NhbGVTdHJpbmcpKTsKLX0KLQogU3RyaW5n
IExvY2FsZUlDVTo6ZGVjaW1hbFN5bWJvbChVTnVtYmVyRm9ybWF0U3ltYm9sIHN5bWJvbCkKIHsK
ICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0xvY2FsZUlDVS5oCmluZGV4IDE1MTk3MTBkOWViZmIzODAwNTU1ZGYwODQyNGFm
ZDFkMDI0ZGE2NTAuLjk3MTgyMjYxMTA4MDIxZGIwYjZiYWEwZjA3MGEyMDNiYjg0YzFmNTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuaApAQCAtNDYsNyArNDYsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBhbmQgTG9jYWxpemVkTnVtYmVySUNVVGVzdC5jcHAu
CiBjbGFzcyBMb2NhbGVJQ1UgOiBwdWJsaWMgTG9jYWxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc093blB0cjxMb2NhbGVJQ1U+IGNyZWF0ZShjb25zdCBjaGFyKiBsb2NhbGVTdHJpbmcpOwor
ICAgIGV4cGxpY2l0IExvY2FsZUlDVShjb25zdCBjaGFyKik7CiAgICAgdmlydHVhbCB+TG9jYWxl
SUNVKCk7CiAKICNpZiBFTkFCTEUoREFURV9BTkRfVElNRV9JTlBVVF9UWVBFUykKQEAgLTY1LDcg
KzY1LDYgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTG9jYWxl
SUNVKGNvbnN0IGNoYXIqKTsKICAgICBTdHJpbmcgZGVjaW1hbFN5bWJvbChVTnVtYmVyRm9ybWF0
U3ltYm9sKTsKICAgICBTdHJpbmcgZGVjaW1hbFRleHRBdHRyaWJ1dGUoVU51bWJlckZvcm1hdFRl
eHRBdHRyaWJ1dGUpOwogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplTG9jYWxlRGF0YSgpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9y
bUxvY2FsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5o
CmluZGV4IGVmODUyMmM4OTU0Mjc0NTRkM2RiMWJiMDNiMzVjNDAyNzRkNmQ5OWUuLjVhNDVlNTk2
YjBmMGY0M2UxMzQxZmNkZjBmOGNjNDczMjcwZTFmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1BsYXRmb3JtTG9jYWxlLmgKQEAgLTQxLDggKzQxLDggQEAgY2xhc3MgTG9j
YWxlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMb2NhbGUpOwogCiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NPd25QdHI8TG9jYWxlPiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2Nh
bGVJZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgUGFzc093blB0cjxMb2NhbGU+IGNyZWF0ZURlZmF1
bHQoKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExvY2FsZT4gY3JlYXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmllcik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxMb2NhbGU+IGNyZWF0ZURlZmF1bHQoKTsKIAogICAgIC8vIENvbnZlcnRzIHRoZSBzcGVjaWZp
ZWQgbnVtYmVyIHN0cmluZyB0byBhbm90aGVyIG51bWJlciBzdHJpbmcgbG9jYWxpemVkCiAgICAg
Ly8gZm9yIHRoaXMgTG9jYWxlIGxvY2FsZS4gVGhlIGlucHV0IHN0cmluZyBtdXN0IGNvbmZvcm0g
dG8gSFRNTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9j
YWxlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1t
CmluZGV4IGMzNzI0YzllZmRjOWMzYzhlZGIxNGRlNWM2YmFkMTI3MmM0YzYzNTYuLmVmYmE4NWE5
MDc2ZGEwZmRlMmEwYmRiNDBhYWZkZjcwYmNjYTNkNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0KQEAgLTY3LDkgKzY3LDkgQEAgc3RhdGljIFJl
dGFpblB0cjxOU0xvY2FsZT4gZGV0ZXJtaW5lTG9jYWxlKGNvbnN0IFN0cmluZyYgbG9jYWxlKQog
ICAgICByZXR1cm4gYWRvcHROUyhbW05TTG9jYWxlIGFsbG9jXSBpbml0V2l0aExvY2FsZUlkZW50
aWZpZXI6bG9jYWxlXSk7CiB9CiAKLVBhc3NPd25QdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShj
b25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSkKK3N0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IExvY2Fs
ZTo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQogewotICAgIHJldHVybiBMb2Nh
bGVNYWM6OmNyZWF0ZShkZXRlcm1pbmVMb2NhbGUobG9jYWxlLnN0cmluZygpKS5nZXQoKSk7Cisg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TG9jYWxlTWFjPihkZXRlcm1pbmVMb2NhbGUobG9j
YWxlLnN0cmluZygpKS5nZXQoKSk7CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0
dGVyPiBjcmVhdGVEYXRlVGltZUZvcm1hdHRlcihOU0xvY2FsZSogbG9jYWxlLCBOU0NhbGVuZGFy
KiBjYWxlbmRhciwgTlNEYXRlRm9ybWF0dGVyU3R5bGUgZGF0ZVN0eWxlLCBOU0RhdGVGb3JtYXR0
ZXJTdHlsZSB0aW1lU3R5bGUpCkBAIC0xMDYsNyArMTA2LDcgQEAgTG9jYWxlTWFjOjp+TG9jYWxl
TWFjKCkKIAogUGFzc093blB0cjxMb2NhbGVNYWM+IExvY2FsZU1hYzo6Y3JlYXRlKE5TTG9jYWxl
KiBsb2NhbGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBMb2NhbGVNYWMobG9jYWxlKSk7
CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyApOwogfQogCiBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0
dGVyPiBMb2NhbGVNYWM6OnNob3J0RGF0ZUZvcm1hdHRlcigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242876</attachid>
            <date>2014-12-08 20:52:01 -0800</date>
            <delta_ts>2014-12-09 16:59:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-139395-20141209135239.patch</filename>
            <type>text/plain</type>
            <size>20911</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3MDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjkxNDJhYmUzNGVmNTRh
ZjBkNWRlOTBiMDZkM2E4OWYxODViYjY0MC4uNTIwNjQ2YTdiNmRjNGQwM2ZjY2M2ZWE4NDNkNGZk
YWVlOTE4NGFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE0LTEyLTA4ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgTW92ZSBXZWJD
b3JlL3BsYXRmb3JtL3RleHQgdG8gc3RkOjp1bmlxdWVfcHRyIAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5Mzk1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXMgYSBzdGVwIHRvIHVzZSBzdGQ6OnVuaXF1
ZV9wdHI8PiwgdGhpcyBwYXRjaCByZXBsYWNlcyBPd25QdHJ8UGFzc093blB0ciB3aXRoCisgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjw+IHwgc3RkOjptYWtlX3VuaXF1ZTw+LgorCisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9MaW5lQnJlYWtJdGVyYXRv
clBvb2xJQ1UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVCcmVha0l0ZXJhdG9yUG9vbDo6TGlu
ZUJyZWFrSXRlcmF0b3JQb29sKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVCcmVha0l0ZXJhdG9y
UG9vbDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xvY2FsZUlD
VS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpMb2NhbGVJQ1U6OmNyZWF0ZUxhYmVsVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUZhbGxiYWNrTW9udGhMYWJlbHMpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmFsbGJh
Y2tBTVBNTGFiZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZUlDVTo6aW5pdGlhbGl6ZURh
dGVUaW1lRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZUlDVTo6c2hvcnRNb250aExh
YmVscyk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVJQ1U6OmNyZWF0ZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpMb2NhbGVJQ1U6OnN0YW5kQWxvbmVNb250aExhYmVscyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVJQ1U6OnNob3J0U3RhbmRBbG9uZU1vbnRoTGFi
ZWxzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
b2NhbGU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5o
OgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxlOjpjcmVhdGVEZWZhdWx0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4
dC9UZXh0Q29kZWNVVEYxNi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2Rp
bmcuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Okxv
Y2FsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZU1hYzo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVXaW46OmNyZWF0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4
dC93aW4vVGV4dENvZGVjV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5ld1RleHRDb2RlY1dp
bik6CisKIDIwMTQtMTItMDggIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtBcHBsZV0gVXNlIEFjY2VsZXJhdGUgZnJhbWV3b3JrIHRvIHNwZWVkLXVwIEZFR2F1c3Np
YW5CbHVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDhmM2IyMmM2OGQwOTBhYzk2OTlhNDViMTA2
ZDk2NWE4ZDFmOGRlMjEuLjNlNGM0YzdmNmI1YTZmY2IwMGQ1M2I2Y2MwOTg2MTU4NDU3ZWJhYzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xNjc4LDcgKzE2NzgsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9kaWREaXNwYXRjaFZpZXdwb3J0UHJvcGVydGllc0NoYW5nZWQ7CiAjZW5kaWYKIAot
ICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcsIE93blB0cjxMb2NhbGU+PiBMb2NhbGVJ
ZGVudGlmaWVyVG9Mb2NhbGVNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZywg
c3RkOjp1bmlxdWVfcHRyPExvY2FsZT4+IExvY2FsZUlkZW50aWZpZXJUb0xvY2FsZU1hcDsKICAg
ICBMb2NhbGVJZGVudGlmaWVyVG9Mb2NhbGVNYXAgbV9sb2NhbGVDYWNoZTsKIAogI2lmIEVOQUJM
RShURU1QTEFURV9FTEVNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKaW5kZXggNjc0YTA2ZDM3Y2NkOTk3M2Qx
NDZkYzhlNGYyZTU0YjcwOWE0NWQxMS4uZjhiNThkNmYzNjM4NzgxOTQxMjI3NDNkMDg2YmY5YjI0
NDE3MDljZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9MaW5lQnJl
YWtJdGVyYXRvclBvb2xJQ1UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xp
bmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSA8dW5p
Y29kZS91YnJrLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZFNwZWNpZmljLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtNDIsMTQgKzQxLDE0IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIExpbmVCcmVha0l0ZXJhdG9yUG9vbCB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoTGluZUJyZWFrSXRlcmF0b3JQb29sKTsKIHB1YmxpYzoKKyAgICBMaW5lQnJlYWtJ
dGVyYXRvclBvb2woKSB7IH0gCisKICAgICBzdGF0aWMgTGluZUJyZWFrSXRlcmF0b3JQb29sJiBz
aGFyZWRQb29sKCkKICAgICB7CiAgICAgICAgIHN0YXRpYyBXVEY6OlRocmVhZFNwZWNpZmljPExp
bmVCcmVha0l0ZXJhdG9yUG9vbD4qIHBvb2wgPSBuZXcgV1RGOjpUaHJlYWRTcGVjaWZpYzxMaW5l
QnJlYWtJdGVyYXRvclBvb2w+OwogICAgICAgICByZXR1cm4gKipwb29sOwogICAgIH0KIAotICAg
IHN0YXRpYyBQYXNzT3duUHRyPExpbmVCcmVha0l0ZXJhdG9yUG9vbD4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRQdHIobmV3IExpbmVCcmVha0l0ZXJhdG9yUG9vbCk7IH0KLQogICAgIHN0YXRpYyBT
dHJpbmcgbWFrZUxvY2FsZVdpdGhCcmVha0tleXdvcmQoY29uc3QgQXRvbWljU3RyaW5nJiBsb2Nh
bGUsIExpbmVCcmVha0l0ZXJhdG9yTW9kZSBtb2RlKQogICAgIHsKICAgICAgICAgU3RyaW5nQnVp
bGRlciBsb2NhbGVXaXRoS2V5d29yZDsKQEAgLTExMyw4ICsxMTIsNiBAQCBwdWJsaWM6CiAgICAg
fQogCiBwcml2YXRlOgotICAgIExpbmVCcmVha0l0ZXJhdG9yUG9vbCgpIHsgfQotCiAgICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBjYXBhY2l0eSA9IDQ7CiAKICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxB
dG9taWNTdHJpbmcsIFRleHRCcmVha0l0ZXJhdG9yKj4gRW50cnk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAKaW5kZXggYTFlNjU5ZTcwNTZkNTcxZDU5MjhmMDg0
NDU3NWVhNzY3NWI0MTRlMi4uOWYzMDEwYzA5ODA3NjVlNzExOWUxMjUwYmZhNjk3OTZhYmYwMjA5
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcApAQCAtMzYs
NyArMzYsNiBAQAogI2luY2x1ZGUgPHVuaWNvZGUvdWRhdHBnLmg+CiAjaW5jbHVkZSA8dW5pY29k
ZS91bG9jLmg+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBpY3U7CkBAIC00NCw5ICs0Myw5IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNv
bnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQorc3RkOjp1bmlxdWVfcHRyPExvY2FsZT4gTG9jYWxl
OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUpCiB7Ci0gICAgcmV0dXJuIExvY2Fs
ZUlDVTo6Y3JlYXRlKGxvY2FsZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxMb2NhbGVJQ1U+KGxvY2FsZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKIH0KIAogTG9jYWxlSUNVOjpMb2NhbGVJQ1UoY29uc3QgY2hhciogbG9jYWxlKQpAQCAtNzMs
MTEgKzcyLDYgQEAgTG9jYWxlSUNVOjp+TG9jYWxlSUNVKCkKICNlbmRpZgogfQogCi1QYXNzT3du
UHRyPExvY2FsZUlDVT4gTG9jYWxlSUNVOjpjcmVhdGUoY29uc3QgY2hhciogbG9jYWxlU3RyaW5n
KQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgTG9jYWxlSUNVKGxvY2FsZVN0cmluZykpOwot
fQotCiBTdHJpbmcgTG9jYWxlSUNVOjpkZWNpbWFsU3ltYm9sKFVOdW1iZXJGb3JtYXRTeW1ib2wg
c3ltYm9sKQogewogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwpAQCAtMTcw
LDM5ICsxNjQsMzkgQEAgc3RhdGljIFN0cmluZyBnZXREYXRlRm9ybWF0UGF0dGVybihjb25zdCBV
RGF0ZUZvcm1hdCogZGF0ZUZvcm1hdCkKICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChidWZmZXIp
OwogfQogCi1QYXNzT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gTG9jYWxlSUNVOjpjcmVhdGVMYWJl
bFZlY3Rvcihjb25zdCBVRGF0ZUZvcm1hdCogZGF0ZUZvcm1hdCwgVURhdGVGb3JtYXRTeW1ib2xU
eXBlIHR5cGUsIGludDMyX3Qgc3RhcnRJbmRleCwgaW50MzJfdCBzaXplKQorc3RkOjp1bmlxdWVf
cHRyPFZlY3RvcjxTdHJpbmc+ID4gTG9jYWxlSUNVOjpjcmVhdGVMYWJlbFZlY3Rvcihjb25zdCBV
RGF0ZUZvcm1hdCogZGF0ZUZvcm1hdCwgVURhdGVGb3JtYXRTeW1ib2xUeXBlIHR5cGUsIGludDMy
X3Qgc3RhcnRJbmRleCwgaW50MzJfdCBzaXplKQogewogICAgIGlmICghZGF0ZUZvcm1hdCkKLSAg
ICAgICAgcmV0dXJuIFBhc3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPigpOworICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICBpZiAodWRhdF9jb3Vu
dFN5bWJvbHMoZGF0ZUZvcm1hdCwgdHlwZSkgIT0gc3RhcnRJbmRleCArIHNpemUpCi0gICAgICAg
IHJldHVybiBQYXNzT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4oKTsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAKLSAgICBPd25QdHI8VmVjdG9yPFN0
cmluZz4gPiBsYWJlbHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFN0cmluZz4oKSk7CisgICAgYXV0
byBsYWJlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgIGxhYmVs
cy0+cmVzZXJ2ZUNhcGFjaXR5KHNpemUpOwogICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IHNp
emU7ICsraSkgewogICAgICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAg
ICAgICAgaW50MzJfdCBsZW5ndGggPSB1ZGF0X2dldFN5bWJvbHMoZGF0ZUZvcm1hdCwgdHlwZSwg
c3RhcnRJbmRleCArIGksIDAsIDAsICZzdGF0dXMpOwogICAgICAgICBpZiAoc3RhdHVzICE9IFVf
QlVGRkVSX09WRVJGTE9XX0VSUk9SKQotICAgICAgICAgICAgcmV0dXJuIFBhc3NPd25QdHI8VmVj
dG9yPFN0cmluZz4gPigpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVj
dG9yPFN0cmluZz4+KCk7CiAgICAgICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKGxlbmd0aCk7CiAg
ICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICAgICAgdWRhdF9nZXRTeW1ib2xzKGRh
dGVGb3JtYXQsIHR5cGUsIHN0YXJ0SW5kZXggKyBpLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgsICZz
dGF0dXMpOwogICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgICAgICByZXR1
cm4gUGFzc093blB0cjxWZWN0b3I8U3RyaW5nPiA+KCk7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICAgICAgbGFiZWxzLT5hcHBlbmQo
U3RyaW5nOjphZG9wdChidWZmZXIpKTsKICAgICB9Ci0gICAgcmV0dXJuIGxhYmVscy5yZWxlYXNl
KCk7CisgICAgcmV0dXJuIFdURjo6bW92ZShsYWJlbHMpOwogfQogI2VuZGlmCiAKICNpZiBFTkFC
TEUoREFURV9BTkRfVElNRV9JTlBVVF9UWVBFUykKLXN0YXRpYyBQYXNzT3duUHRyPFZlY3RvcjxT
dHJpbmc+ID4gY3JlYXRlRmFsbGJhY2tNb250aExhYmVscygpCitzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFZlY3RvcjxTdHJpbmc+ID4gY3JlYXRlRmFsbGJhY2tNb250aExhYmVscygpCiB7Ci0gICAg
T3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gbGFiZWxzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxTdHJp
bmc+KCkpOworICAgIGF1dG8gbGFiZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5n
Pj4oKTsKICAgICBsYWJlbHMtPnJlc2VydmVDYXBhY2l0eShXVEZfQVJSQVlfTEVOR1RIKFdURjo6
bW9udGhGdWxsTmFtZSkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlf
TEVOR1RIKFdURjo6bW9udGhGdWxsTmFtZSk7ICsraSkKICAgICAgICAgbGFiZWxzLT5hcHBlbmQo
V1RGOjptb250aEZ1bGxOYW1lW2ldKTsKLSAgICByZXR1cm4gbGFiZWxzLnJlbGVhc2UoKTsKKyAg
ICByZXR1cm4gV1RGOjptb3ZlKGxhYmVscyk7CiB9CiAKIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBM
b2NhbGVJQ1U6Om1vbnRoTGFiZWxzKCkKQEAgLTIyMCwxMyArMjE0LDEzIEBAIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBMb2NhbGVJQ1U6Om1vbnRoTGFiZWxzKCkKICNlbmRpZgogCiAjaWYgRU5BQkxF
KERBVEVfQU5EX1RJTUVfSU5QVVRfVFlQRVMpCi1zdGF0aWMgUGFzc093blB0cjxWZWN0b3I8U3Ry
aW5nPiA+IGNyZWF0ZUZhbGxiYWNrQU1QTUxhYmVscygpCitzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFZlY3RvcjxTdHJpbmc+ID4gY3JlYXRlRmFsbGJhY2tBTVBNTGFiZWxzKCkKIHsKLSAgICBPd25Q
dHI8VmVjdG9yPFN0cmluZz4gPiBsYWJlbHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFN0cmluZz4o
KSk7CisgICAgYXV0byBsYWJlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+Pigp
OwogICAgIGxhYmVscy0+cmVzZXJ2ZUNhcGFjaXR5KDIpOwogICAgIGxhYmVscy0+YXBwZW5kKCJB
TSIpOwogICAgIGxhYmVscy0+YXBwZW5kKCJQTSIpOwotICAgIHJldHVybiBsYWJlbHMucmVsZWFz
ZSgpOworICAgIHJldHVybiBXVEY6Om1vdmUobGFiZWxzKTsKIH0KIAogdm9pZCBMb2NhbGVJQ1U6
OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdCgpCkBAIC0yNTEsNyArMjQ1LDcgQEAgdm9pZCBMb2Nh
bGVJQ1U6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdCgpCiAgICAgbV9kYXRlVGltZUZvcm1hdFdp
dGhvdXRTZWNvbmRzID0gZ2V0RGF0ZUZvcm1hdFBhdHRlcm4oZGF0ZVRpbWVGb3JtYXRXaXRob3V0
U2Vjb25kcyk7CiAgICAgdWRhdF9jbG9zZShkYXRlVGltZUZvcm1hdFdpdGhvdXRTZWNvbmRzKTsK
IAotICAgIE93blB0cjxWZWN0b3I8U3RyaW5nPiA+IHRpbWVBTVBNTGFiZWxzID0gY3JlYXRlTGFi
ZWxWZWN0b3IobV9tZWRpdW1UaW1lRm9ybWF0LCBVREFUX0FNX1BNUywgVUNBTF9BTSwgMik7Cisg
ICAgYXV0byB0aW1lQU1QTUxhYmVscyA9IGNyZWF0ZUxhYmVsVmVjdG9yKG1fbWVkaXVtVGltZUZv
cm1hdCwgVURBVF9BTV9QTVMsIFVDQUxfQU0sIDIpOwogICAgIGlmICghdGltZUFNUE1MYWJlbHMp
CiAgICAgICAgIHRpbWVBTVBNTGFiZWxzID0gY3JlYXRlRmFsbGJhY2tBTVBNTGFiZWxzKCk7CiAg
ICAgbV90aW1lQU1QTUxhYmVscyA9ICp0aW1lQU1QTUxhYmVsczsKQEAgLTMzNiw3ICszMzAsNyBA
QCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgTG9jYWxlSUNVOjpzaG9ydE1vbnRoTGFiZWxzKCkKICAg
ICBpZiAoIW1fc2hvcnRNb250aExhYmVscy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBtX3No
b3J0TW9udGhMYWJlbHM7CiAgICAgaWYgKGluaXRpYWxpemVTaG9ydERhdGVGb3JtYXQoKSkgewot
ICAgICAgICBpZiAoT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gbGFiZWxzID0gY3JlYXRlTGFiZWxW
ZWN0b3IobV9zaG9ydERhdGVGb3JtYXQsIFVEQVRfU0hPUlRfTU9OVEhTLCBVQ0FMX0pBTlVBUlks
IDEyKSkgeworICAgICAgICBhdXRvIGxhYmVscyA9IGNyZWF0ZUxhYmVsVmVjdG9yKG1fc2hvcnRE
YXRlRm9ybWF0LCBVREFUX1NIT1JUX01PTlRIUywgVUNBTF9KQU5VQVJZLCAxMikpIHsKICAgICAg
ICAgICAgIG1fc2hvcnRNb250aExhYmVscyA9ICpsYWJlbHM7CiAgICAgICAgICAgICByZXR1cm4g
bV9zaG9ydE1vbnRoTGFiZWxzOwogICAgICAgICB9CkBAIC0zNTIsNyArMzQ2LDcgQEAgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIExvY2FsZUlDVTo6c3RhbmRBbG9uZU1vbnRoTGFiZWxzKCkKICAgICBp
ZiAoIW1fc3RhbmRBbG9uZU1vbnRoTGFiZWxzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG1f
c3RhbmRBbG9uZU1vbnRoTGFiZWxzOwogICAgIGlmIChpbml0aWFsaXplU2hvcnREYXRlRm9ybWF0
KCkpIHsKLSAgICAgICAgaWYgKE93blB0cjxWZWN0b3I8U3RyaW5nPiA+IGxhYmVscyA9IGNyZWF0
ZUxhYmVsVmVjdG9yKG1fc2hvcnREYXRlRm9ybWF0LCBVREFUX1NUQU5EQUxPTkVfTU9OVEhTLCBV
Q0FMX0pBTlVBUlksIDEyKSkgeworICAgICAgICBpZiAoYXV0byBsYWJlbHMgPSBjcmVhdGVMYWJl
bFZlY3RvcihtX3Nob3J0RGF0ZUZvcm1hdCwgVURBVF9TVEFOREFMT05FX01PTlRIUywgVUNBTF9K
QU5VQVJZLCAxMikpIHsKICAgICAgICAgICAgIG1fc3RhbmRBbG9uZU1vbnRoTGFiZWxzID0gKmxh
YmVsczsKICAgICAgICAgICAgIHJldHVybiBtX3N0YW5kQWxvbmVNb250aExhYmVsczsKICAgICAg
ICAgfQpAQCAtMzY2LDcgKzM2MCw3IEBAIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBMb2NhbGVJQ1U6
OnNob3J0U3RhbmRBbG9uZU1vbnRoTGFiZWxzKCkKICAgICBpZiAoIW1fc2hvcnRTdGFuZEFsb25l
TW9udGhMYWJlbHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbV9zaG9ydFN0YW5kQWxvbmVN
b250aExhYmVsczsKICAgICBpZiAoaW5pdGlhbGl6ZVNob3J0RGF0ZUZvcm1hdCgpKSB7Ci0gICAg
ICAgIGlmIChPd25QdHI8VmVjdG9yPFN0cmluZz4gPiBsYWJlbHMgPSBjcmVhdGVMYWJlbFZlY3Rv
cihtX3Nob3J0RGF0ZUZvcm1hdCwgVURBVF9TVEFOREFMT05FX1NIT1JUX01PTlRIUywgVUNBTF9K
QU5VQVJZLCAxMikpIHsKKyAgICAgICAgaWYgKGF1dG8gbGFiZWxzID0gY3JlYXRlTGFiZWxWZWN0
b3IobV9zaG9ydERhdGVGb3JtYXQsIFVEQVRfU1RBTkRBTE9ORV9TSE9SVF9NT05USFMsIFVDQUxf
SkFOVUFSWSwgMTIpKSB7CiAgICAgICAgICAgICBtX3Nob3J0U3RhbmRBbG9uZU1vbnRoTGFiZWxz
ID0gKmxhYmVsczsKICAgICAgICAgICAgIHJldHVybiBtX3Nob3J0U3RhbmRBbG9uZU1vbnRoTGFi
ZWxzOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L0xvY2FsZUlDVS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuaApp
bmRleCAxNTE5NzEwZDllYmZiMzgwMDU1NWRmMDg0MjRhZmQxZDAyNGRhNjUwLi5jNTQ1ZWI1Yjc5
MTA5ZDY1MGIxMzZmOWMzODIyZGFhMGY4YTdiNzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvTG9jYWxlSUNVLmgKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlIDx1bmljb2RlL3Vk
YXQuaD4KICNpbmNsdWRlIDx1bmljb2RlL3VudW0uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQ2LDcgKzQ1LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogLy8gYW5kIExvY2FsaXplZE51bWJlcklDVVRlc3QuY3BwLgogY2xh
c3MgTG9jYWxlSUNVIDogcHVibGljIExvY2FsZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NP
d25QdHI8TG9jYWxlSUNVPiBjcmVhdGUoY29uc3QgY2hhciogbG9jYWxlU3RyaW5nKTsKKyAgICBl
eHBsaWNpdCBMb2NhbGVJQ1UoY29uc3QgY2hhciopOwogICAgIHZpcnR1YWwgfkxvY2FsZUlDVSgp
OwogCiAjaWYgRU5BQkxFKERBVEVfQU5EX1RJTUVfSU5QVVRfVFlQRVMpCkBAIC02NSw3ICs2NCw2
IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IExvY2FsZUlDVShj
b25zdCBjaGFyKik7CiAgICAgU3RyaW5nIGRlY2ltYWxTeW1ib2woVU51bWJlckZvcm1hdFN5bWJv
bCk7CiAgICAgU3RyaW5nIGRlY2ltYWxUZXh0QXR0cmlidXRlKFVOdW1iZXJGb3JtYXRUZXh0QXR0
cmlidXRlKTsKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUxvY2FsZURhdGEoKSBvdmVycmlk
ZTsKQEAgLTc3LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICBVRGF0ZUZvcm1hdCogb3BlbkRhdGVG
b3JtYXQoVURhdGVGb3JtYXRTdHlsZSB0aW1lU3R5bGUsIFVEYXRlRm9ybWF0U3R5bGUgZGF0ZVN0
eWxlKSBjb25zdDsKIAogI2lmIEVOQUJMRShEQVRFX0FORF9USU1FX0lOUFVUX1RZUEVTKQotICAg
IFBhc3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPiBjcmVhdGVMYWJlbFZlY3Rvcihjb25zdCBVRGF0
ZUZvcm1hdCosIFVEYXRlRm9ybWF0U3ltYm9sVHlwZSwgaW50MzJfdCBzdGFydEluZGV4LCBpbnQz
Ml90IHNpemUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RyaW5nPiA+IGNyZWF0ZUxh
YmVsVmVjdG9yKGNvbnN0IFVEYXRlRm9ybWF0KiwgVURhdGVGb3JtYXRTeW1ib2xUeXBlLCBpbnQz
Ml90IHN0YXJ0SW5kZXgsIGludDMyX3Qgc2l6ZSk7CiAgICAgdm9pZCBpbml0aWFsaXplRGF0ZVRp
bWVGb3JtYXQoKTsKICNlbmRpZgogCkBAIC04OCw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2RpZENyZWF0ZVNob3J0RGF0ZUZvcm1hdDsKIAogI2lmIEVOQUJMRShEQVRFX0FORF9USU1F
X0lOUFVUX1RZUEVTKQotICAgIE93blB0cjxWZWN0b3I8U3RyaW5nPiA+IG1fbW9udGhMYWJlbHM7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+ID4gbV9tb250aExhYmVsczsKICAg
ICBTdHJpbmcgbV9kYXRlRm9ybWF0OwogICAgIFN0cmluZyBtX21vbnRoRm9ybWF0OwogICAgIFN0
cmluZyBtX3Nob3J0TW9udGhGb3JtYXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9M
b2NhbGVOb25lLmNwcAppbmRleCA5NjE4MzNlNDJkZDgwN2RiNTZjMGE5MWJkOWI0NmViYzJlY2U5
ZWM4Li5lYTE4YTdiNjg1YTI5OWRhYWY4MzQxODVmMzAzZTAzN2I3NjNhZDM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHAKQEAgLTI2LDcgKzI2LDYgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxvY2FsZS5oIgogI2luY2x1
ZGUgPHd0Zi9EYXRlTWF0aC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNTYsOSArNTUsOSBAQCBwcml2YXRlOgogI2VuZGlmCiB9Owog
Ci1QYXNzT3duUHRyPExvY2FsZT4gTG9jYWxlOjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJikK
K3N0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmlu
ZyYpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBMb2NhbGVOb25lKCkpOworICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPExvY2FsZU5vbmU+KCk7CiB9CiAKIExvY2FsZU5vbmU6On5Mb2Nh
bGVOb25lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZv
cm1Mb2NhbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUu
aAppbmRleCBlZjg1MjJjODk1NDI3NDU0ZDNkYjFiYjAzYjM1YzQwMjc0ZDZkOTllLi5jMmQyNTNk
Y2Q1OTQ3MTY5MzVjZDI0NGU3MWE3ZjJjZWZjZDczMDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3JtTG9jYWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNs
dWRlICJEYXRlQ29tcG9uZW50cy5oIgogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCi0jaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNDEsOCArNDAsOCBAQCBjbGFzcyBMb2NhbGUgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKExvY2FsZSk7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093
blB0cjxMb2NhbGU+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIp
OwotICAgIHN0YXRpYyBQYXNzT3duUHRyPExvY2FsZT4gY3JlYXRlRGVmYXVsdCgpOworICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBs
b2NhbGVJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExvY2FsZT4gY3Jl
YXRlRGVmYXVsdCgpOwogCiAgICAgLy8gQ29udmVydHMgdGhlIHNwZWNpZmllZCBudW1iZXIgc3Ry
aW5nIHRvIGFub3RoZXIgbnVtYmVyIHN0cmluZyBsb2NhbGl6ZWQKICAgICAvLyBmb3IgdGhpcyBM
b2NhbGUgbG9jYWxlLiBUaGUgaW5wdXQgc3RyaW5nIG11c3QgY29uZm9ybSB0byBIVE1MCkBAIC0x
NTAsNyArMTQ5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzTG9jYWxlRGF0YTsKIH07CiAK
LWlubGluZSBQYXNzT3duUHRyPExvY2FsZT4gTG9jYWxlOjpjcmVhdGVEZWZhdWx0KCkKK2lubGlu
ZSBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZURlZmF1bHQoKQogewogICAg
IHJldHVybiBMb2NhbGU6OmNyZWF0ZShkZWZhdWx0TGFuZ3VhZ2UoKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAKaW5kZXggNDY3M2Jl
MDBmNTRhZThjZWM5ZWUwOWQ2MDMyYWNmNmZjY2UxM2ZjMC4uN2E5MTAwMmZjYTU3YjBkMGJlZTgy
ZGIxYzdhNjUxY2JhYjhjMjFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dENvZGVjTGF0aW4xLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIlRleHRD
b2RlY0xhdGluMS5oIgogCiAjaW5jbHVkZSAiVGV4dENvZGVjQVNDSUlGYXN0UGF0aC5oIgotI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0
Q29kZWNVVEYxNi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VU
RjE2LmNwcAppbmRleCAxOTVhYmE0OGNhNWE3YTg0NzgwMGU2YzFkNTFhNjYzNzFhN2M0YWFiLi42
ZTVkNDQxNTNmMDBkN2I0YTA0MmRmZjlmMTY2NjQxNjIzZTI3OGNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcApAQCAtMjYsNyArMjYsNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRleHRDb2RlY1VURjE2LmgiCiAKLSNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dEVuY29kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5n
LmNwcAppbmRleCBkYjgyYmQ3NTkwZjg1N2Y3Yzc5MzIxOGZlZDQ1Y2RmYjAyOTgxOTQyLi4wNWRh
ODRiZjkzMTNkNWQ0MDA3MGYyYWI0NjdjZGY3NjBhN2Y4NjI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5j
bHVkZSAiVGV4dENvZGVjLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nUmVnaXN0cnkuaCIKICNp
bmNsdWRlIDx1bmljb2RlL3Vub3JtLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L21hYy9Mb2NhbGVNYWMuaAppbmRleCA1M2E2ZGI3YTk4ZTgxZmY3YWUyYmQzM2NlNWEy
ZmRhMzE5M2UwMWJmLi4zMDNjZDUxZDVjMDMwYzQ4YmM4YjMyMzI2ODhhZjZkYzdkMDc0ZjA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMuaApAQCAtNDcs
NyArNDcsOSBAQCBjbGFzcyBEYXRlQ29tcG9uZW50czsKIAogY2xhc3MgTG9jYWxlTWFjIDogcHVi
bGljIExvY2FsZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TG9jYWxlTWFjPiBj
cmVhdGUoTlNMb2NhbGUqKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExvY2FsZU1hYz4g
Y3JlYXRlKE5TTG9jYWxlKik7CisKKyAgICBleHBsaWNpdCBMb2NhbGVNYWMoTlNMb2NhbGUqKTsK
ICAgICB+TG9jYWxlTWFjKCk7CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC03MCw3ICs3Miw2IEBA
IHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IExvY2FsZU1hYyhOU0xv
Y2FsZSopOwogICAgIFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+IHNob3J0RGF0ZUZvcm1hdHRl
cigpOwogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplTG9jYWxlRGF0YSgpIG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0KaW5kZXgg
YzM3MjRjOWVmZGM5YzNjOGVkYjE0ZGU1YzZiYWQxMjcyYzRjNjM1Ni4uMGUwYTQzMGQ3ZDRmNzkx
YTQyZDg3NmRlYTEzYjk1MDlhMTdjZGQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvbWFjL0xvY2FsZU1hYy5tbQpAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIkxhbmd1
YWdlLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9EYXRl
TWF0aC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtNjcsOSAr
NjYsOSBAQCBzdGF0aWMgUmV0YWluUHRyPE5TTG9jYWxlPiBkZXRlcm1pbmVMb2NhbGUoY29uc3Qg
U3RyaW5nJiBsb2NhbGUpCiAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNMb2NhbGUgYWxsb2NdIGlu
aXRXaXRoTG9jYWxlSWRlbnRpZmllcjpsb2NhbGVdKTsKIH0KIAotUGFzc093blB0cjxMb2NhbGU+
IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQorc3RkOjp1bmlxdWVf
cHRyPExvY2FsZT4gTG9jYWxlOjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUpCiB7
Ci0gICAgcmV0dXJuIExvY2FsZU1hYzo6Y3JlYXRlKGRldGVybWluZUxvY2FsZShsb2NhbGUuc3Ry
aW5nKCkpLmdldCgpKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMb2NhbGVNYWM+KGRl
dGVybWluZUxvY2FsZShsb2NhbGUuc3RyaW5nKCkpLmdldCgpKTsKIH0KIAogc3RhdGljIFJldGFp
blB0cjxOU0RhdGVGb3JtYXR0ZXI+IGNyZWF0ZURhdGVUaW1lRm9ybWF0dGVyKE5TTG9jYWxlKiBs
b2NhbGUsIE5TQ2FsZW5kYXIqIGNhbGVuZGFyLCBOU0RhdGVGb3JtYXR0ZXJTdHlsZSBkYXRlU3R5
bGUsIE5TRGF0ZUZvcm1hdHRlclN0eWxlIHRpbWVTdHlsZSkKQEAgLTEwNCw5ICsxMDMsOSBAQCBM
b2NhbGVNYWM6On5Mb2NhbGVNYWMoKQogewogfQogCi1QYXNzT3duUHRyPExvY2FsZU1hYz4gTG9j
YWxlTWFjOjpjcmVhdGUoTlNMb2NhbGUqIGxvY2FsZSkKK3N0ZDo6dW5pcXVlX3B0cjxMb2NhbGVN
YWM+IExvY2FsZU1hYzo6Y3JlYXRlKE5TTG9jYWxlKiBsb2NhbGUpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBMb2NhbGVNYWMobG9jYWxlKSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8TG9jYWxlTWFjPihsb2NhbGUpOwogfQogCiBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBM
b2NhbGVNYWM6OnNob3J0RGF0ZUZvcm1hdHRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcAppbmRleCBhMTZlMzA3YmM0NmYzY2E2MTk2
ZDdhMGVmMDkwYmI1YmFkMGQ1ZWY5Li40N2E2YTk2OTE5NzkzZWRkNTI0YzQ4ZTg1ZjA1Njk4ZGEx
NmE0YmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0
Q29kZWNNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRD
b2RlY01hYy5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJDaGFyc2V0RGF0YS5oIgog
I2luY2x1ZGUgIlRocmVhZEdsb2JhbERhdGEuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcApp
bmRleCBhYjAzNmFhMGQxMDBlMDFhNDA5YzExYzcxYWExZjBkNzk0ZjQ1NDAzLi4zY2U5OTNjMDU2
Mzc3NjQ5ZTU0YzdlY2U4ZTYyMGUxYTFhMWE1ZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAKQEAgLTQwLDggKzQwLDYgQEAKICNpbmNsdWRl
IDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTE0Niw3ICsxNDQsNyBAQCBzdGF0aWMg
TENJRCBMQ0lERnJvbUxvY2FsZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSkKICAgICByZXR1
cm4gbGNpZDsKIH0KIAotUGFzc093blB0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgbG9jYWxlKQorc3RkOjp1bmlxdWVfcHRyPExvY2FsZT4gTG9jYWxlOjpjcmVh
dGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUpCiB7CiAgICAgcmV0dXJuIExvY2FsZVdpbjo6
Y3JlYXRlKExDSURGcm9tTG9jYWxlKGxvY2FsZSkpOwogfQpAQCAtMTU3LDkgKzE1NSw5IEBAIGlu
bGluZSBMb2NhbGVXaW46OkxvY2FsZVdpbihMQ0lEIGxjaWQpCiB7CiB9CiAKLVBhc3NPd25QdHI8
TG9jYWxlV2luPiBMb2NhbGVXaW46OmNyZWF0ZShMQ0lEIGxjaWQpCitzdGQ6OnVuaXF1ZV9wdHI8
TG9jYWxlV2luPiBMb2NhbGVXaW46OmNyZWF0ZShMQ0lEIGxjaWQpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBMb2NhbGVXaW4obGNpZCkpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PExvY2FsZVdpbj4obGNpZCk7CiB9CiAKIExvY2FsZVdpbjo6fkxvY2FsZVdpbigpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5oCmluZGV4IGVkY2VlZmE4YWMz
YzY1OWVmYzU2NzFmMWYzZjlkZTI0YTVlYjVkMzAuLmI4ZGVmN2UxODZiNTIyNGNkZTNjYzAwZTk1
ZTBkMzgyZDNjNzZiNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
d2luL0xvY2FsZVdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xv
Y2FsZVdpbi5oCkBAIC00NCw3ICs0NCw3IEBAIHN0cnVjdCBEYXRlRm9ybWF0VG9rZW47CiAKIGNs
YXNzIExvY2FsZVdpbiA6IHB1YmxpYyBMb2NhbGUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
T3duUHRyPExvY2FsZVdpbj4gY3JlYXRlKExDSUQpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8TG9jYWxlV2luPiBjcmVhdGUoTENJRCk7CiAgICAgfkxvY2FsZVdpbigpOwogI2lmIEVOQUJM
RShEQVRFX0FORF9USU1FX0lOUFVUX1RZUEVTKQogICAgIHZpcnR1YWwgU3RyaW5nIGRhdGVGb3Jt
YXQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
d2luL1RleHRDb2RlY1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9U
ZXh0Q29kZWNXaW4uY3BwCmluZGV4IGE1YmNhNzBiNDgyNzIzMWZiNzIyMjBlNmExMzNjYTI2MGZl
YmRmM2UuLmEzYTY1YWQ3NjAzNDBjNjUyZTNlMmJkZmZkODAyNDNjMTQ5NTZiZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL1RleHRDb2RlY1dpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcApAQCAt
MTI5LDkgKzEyOSw5IEBAIHN0YXRpYyBVSU5UIGdldENvZGVQYWdlKGNvbnN0IGNoYXIqIG5hbWUp
CiAgICAgcmV0dXJuIGkgPT0gY2hhcnNldHMuZW5kKCkgPyBDUF9BQ1AgOiBpLT52YWx1ZS5tX2Nv
ZGVQYWdlOwogfQogCi1zdGF0aWMgUGFzc093blB0cjxUZXh0Q29kZWM+IG5ld1RleHRDb2RlY1dp
bihjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBjb25zdCB2b2lkKikKK3N0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8VGV4dENvZGVjPiBuZXdUZXh0Q29kZWNXaW4oY29uc3QgVGV4dEVuY29kaW5n
JiBlbmNvZGluZywgY29uc3Qgdm9pZCopCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0
Q29kZWNXaW4oZ2V0Q29kZVBhZ2UoZW5jb2RpbmcubmFtZSgpKSkpOworICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFRleHRDb2RlY1dpbj4oZ2V0Q29kZVBhZ2UoZW5jb2RpbmcubmFtZSgpKSk7
CiB9CiAKIFRleHRDb2RlY1dpbjo6VGV4dENvZGVjV2luKFVJTlQgY29kZVBhZ2UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242978</attachid>
            <date>2014-12-09 16:59:36 -0800</date>
            <delta_ts>2014-12-12 00:05:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-139395-20141210100015.patch</filename>
            <type>text/plain</type>
            <size>20890</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3MDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTJkZjhhZmRlYzAxZDA1
YWVjOTdhNGJjMTJkN2VhN2Q5ODFiZDYyNC4uNmE5NDgxNjkwYTczOTVlZjdiZDNjNTg3NWY4MDY1
MGE5NjQwZjczOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE0LTEyLTA5ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgTW92ZSBXZWJD
b3JlL3BsYXRmb3JtL3RleHQgdG8gc3RkOjp1bmlxdWVfcHRyIAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5Mzk1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXMgYSBzdGVwIHRvIHVzZSBzdGQ6OnVuaXF1
ZV9wdHI8PiwgdGhpcyBwYXRjaCByZXBsYWNlcyBPd25QdHJ8UGFzc093blB0ciB3aXRoCisgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjw+IHwgc3RkOjptYWtlX3VuaXF1ZTw+LgorCisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9MaW5lQnJlYWtJdGVyYXRv
clBvb2xJQ1UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVCcmVha0l0ZXJhdG9yUG9vbDo6TGlu
ZUJyZWFrSXRlcmF0b3JQb29sKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVCcmVha0l0ZXJhdG9y
UG9vbDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xvY2FsZUlD
VS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpMb2NhbGVJQ1U6OmNyZWF0ZUxhYmVsVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUZhbGxiYWNrTW9udGhMYWJlbHMpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmFsbGJh
Y2tBTVBNTGFiZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZUlDVTo6aW5pdGlhbGl6ZURh
dGVUaW1lRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZUlDVTo6c2hvcnRNb250aExh
YmVscyk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVJQ1U6OmNyZWF0ZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpMb2NhbGVJQ1U6OnN0YW5kQWxvbmVNb250aExhYmVscyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVJQ1U6OnNob3J0U3RhbmRBbG9uZU1vbnRoTGFi
ZWxzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
b2NhbGU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5o
OgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxlOjpjcmVhdGVEZWZhdWx0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4
dC9UZXh0Q29kZWNVVEYxNi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2Rp
bmcuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Okxv
Y2FsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZU1hYzo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVXaW46OmNyZWF0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4
dC93aW4vVGV4dENvZGVjV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5ld1RleHRDb2RlY1dp
bik6CisKIDIwMTQtMTItMDkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNv
bT4KIAogICAgICAgICBGaXggaU9TIGJ1aWxkIGFmdGVyIHIxNzcwMzUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCmluZGV4IDhmM2IyMmM2OGQwOTBhYzk2OTlhNDViMTA2ZDk2NWE4ZDFmOGRlMjEuLjNlNGM0
YzdmNmI1YTZmY2IwMGQ1M2I2Y2MwOTg2MTU4NDU3ZWJhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CkBAIC0xNjc4LDcgKzE2NzgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kaWREaXNwYXRjaFZp
ZXdwb3J0UHJvcGVydGllc0NoYW5nZWQ7CiAjZW5kaWYKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxB
dG9taWNTdHJpbmcsIE93blB0cjxMb2NhbGU+PiBMb2NhbGVJZGVudGlmaWVyVG9Mb2NhbGVNYXA7
CisgICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZywgc3RkOjp1bmlxdWVfcHRyPExvY2Fs
ZT4+IExvY2FsZUlkZW50aWZpZXJUb0xvY2FsZU1hcDsKICAgICBMb2NhbGVJZGVudGlmaWVyVG9M
b2NhbGVNYXAgbV9sb2NhbGVDYWNoZTsKIAogI2lmIEVOQUJMRShURU1QTEFURV9FTEVNRU5UKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9MaW5lQnJlYWtJdGVyYXRv
clBvb2xJQ1UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTGluZUJyZWFrSXRlcmF0
b3JQb29sSUNVLmgKaW5kZXggNjc0YTA2ZDM3Y2NkOTk3M2QxNDZkYzhlNGYyZTU0YjcwOWE0NWQx
MS4uZjhiNThkNmYzNjM4NzgxOTQxMjI3NDNkMDg2YmY5YjI0NDE3MDljZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElD
VS5oCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSA8dW5pY29kZS91YnJrLmg+CiAjaW5jbHVk
ZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgpAQCAtNDIsMTQgKzQxLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExpbmVC
cmVha0l0ZXJhdG9yUG9vbCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTGluZUJyZWFrSXRl
cmF0b3JQb29sKTsKIHB1YmxpYzoKKyAgICBMaW5lQnJlYWtJdGVyYXRvclBvb2woKSB7IH0gCisK
ICAgICBzdGF0aWMgTGluZUJyZWFrSXRlcmF0b3JQb29sJiBzaGFyZWRQb29sKCkKICAgICB7CiAg
ICAgICAgIHN0YXRpYyBXVEY6OlRocmVhZFNwZWNpZmljPExpbmVCcmVha0l0ZXJhdG9yUG9vbD4q
IHBvb2wgPSBuZXcgV1RGOjpUaHJlYWRTcGVjaWZpYzxMaW5lQnJlYWtJdGVyYXRvclBvb2w+Owog
ICAgICAgICByZXR1cm4gKipwb29sOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPExp
bmVCcmVha0l0ZXJhdG9yUG9vbD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IExpbmVC
cmVha0l0ZXJhdG9yUG9vbCk7IH0KLQogICAgIHN0YXRpYyBTdHJpbmcgbWFrZUxvY2FsZVdpdGhC
cmVha0tleXdvcmQoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUsIExpbmVCcmVha0l0ZXJhdG9y
TW9kZSBtb2RlKQogICAgIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBsb2NhbGVXaXRoS2V5d29y
ZDsKQEAgLTExMyw4ICsxMTIsNiBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIExp
bmVCcmVha0l0ZXJhdG9yUG9vbCgpIHsgfQotCiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBjYXBh
Y2l0eSA9IDQ7CiAKICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxBdG9taWNTdHJpbmcsIFRleHRCcmVh
a0l0ZXJhdG9yKj4gRW50cnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L0xvY2FsZUlDVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlD
VS5jcHAKaW5kZXggYTFlNjU5ZTcwNTZkNTcxZDU5MjhmMDg0NDU3NWVhNzY3NWI0MTRlMi4uOWYz
MDEwYzA5ODA3NjVlNzExOWUxMjUwYmZhNjk3OTZhYmYwMjA5MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUg
PHVuaWNvZGUvdWRhdHBnLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91bG9jLmg+CiAjaW5jbHVkZSA8
d3RmL0RhdGVNYXRoLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBpY3U7CkBAIC00NCw5
ICs0Myw5IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UGFzc093blB0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9j
YWxlKQorc3RkOjp1bmlxdWVfcHRyPExvY2FsZT4gTG9jYWxlOjpjcmVhdGUoY29uc3QgQXRvbWlj
U3RyaW5nJiBsb2NhbGUpCiB7Ci0gICAgcmV0dXJuIExvY2FsZUlDVTo6Y3JlYXRlKGxvY2FsZS5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMb2Nh
bGVJQ1U+KGxvY2FsZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAogTG9jYWxlSUNVOjpM
b2NhbGVJQ1UoY29uc3QgY2hhciogbG9jYWxlKQpAQCAtNzMsMTEgKzcyLDYgQEAgTG9jYWxlSUNV
Ojp+TG9jYWxlSUNVKCkKICNlbmRpZgogfQogCi1QYXNzT3duUHRyPExvY2FsZUlDVT4gTG9jYWxl
SUNVOjpjcmVhdGUoY29uc3QgY2hhciogbG9jYWxlU3RyaW5nKQotewotICAgIHJldHVybiBhZG9w
dFB0cihuZXcgTG9jYWxlSUNVKGxvY2FsZVN0cmluZykpOwotfQotCiBTdHJpbmcgTG9jYWxlSUNV
OjpkZWNpbWFsU3ltYm9sKFVOdW1iZXJGb3JtYXRTeW1ib2wgc3ltYm9sKQogewogICAgIFVFcnJv
ckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwpAQCAtMTcwLDM5ICsxNjQsMzkgQEAgc3RhdGlj
IFN0cmluZyBnZXREYXRlRm9ybWF0UGF0dGVybihjb25zdCBVRGF0ZUZvcm1hdCogZGF0ZUZvcm1h
dCkKICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChidWZmZXIpOwogfQogCi1QYXNzT3duUHRyPFZl
Y3RvcjxTdHJpbmc+ID4gTG9jYWxlSUNVOjpjcmVhdGVMYWJlbFZlY3Rvcihjb25zdCBVRGF0ZUZv
cm1hdCogZGF0ZUZvcm1hdCwgVURhdGVGb3JtYXRTeW1ib2xUeXBlIHR5cGUsIGludDMyX3Qgc3Rh
cnRJbmRleCwgaW50MzJfdCBzaXplKQorc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+ID4g
TG9jYWxlSUNVOjpjcmVhdGVMYWJlbFZlY3Rvcihjb25zdCBVRGF0ZUZvcm1hdCogZGF0ZUZvcm1h
dCwgVURhdGVGb3JtYXRTeW1ib2xUeXBlIHR5cGUsIGludDMyX3Qgc3RhcnRJbmRleCwgaW50MzJf
dCBzaXplKQogewogICAgIGlmICghZGF0ZUZvcm1hdCkKLSAgICAgICAgcmV0dXJuIFBhc3NPd25Q
dHI8VmVjdG9yPFN0cmluZz4gPigpOworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxW
ZWN0b3I8U3RyaW5nPj4oKTsKICAgICBpZiAodWRhdF9jb3VudFN5bWJvbHMoZGF0ZUZvcm1hdCwg
dHlwZSkgIT0gc3RhcnRJbmRleCArIHNpemUpCi0gICAgICAgIHJldHVybiBQYXNzT3duUHRyPFZl
Y3RvcjxTdHJpbmc+ID4oKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9y
PFN0cmluZz4+KCk7CiAKLSAgICBPd25QdHI8VmVjdG9yPFN0cmluZz4gPiBsYWJlbHMgPSBhZG9w
dFB0cihuZXcgVmVjdG9yPFN0cmluZz4oKSk7CisgICAgYXV0byBsYWJlbHMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgIGxhYmVscy0+cmVzZXJ2ZUNhcGFjaXR5KHNp
emUpOwogICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBV
RXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICAgICAgaW50MzJfdCBsZW5ndGgg
PSB1ZGF0X2dldFN5bWJvbHMoZGF0ZUZvcm1hdCwgdHlwZSwgc3RhcnRJbmRleCArIGksIDAsIDAs
ICZzdGF0dXMpOwogICAgICAgICBpZiAoc3RhdHVzICE9IFVfQlVGRkVSX09WRVJGTE9XX0VSUk9S
KQotICAgICAgICAgICAgcmV0dXJuIFBhc3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPigpOworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAg
ICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKGxlbmd0aCk7CiAgICAgICAgIHN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKICAgICAgICAgdWRhdF9nZXRTeW1ib2xzKGRhdGVGb3JtYXQsIHR5cGUsIHN0YXJ0
SW5kZXggKyBpLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgsICZzdGF0dXMpOwogICAgICAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgICAgICByZXR1cm4gUGFzc093blB0cjxWZWN0b3I8
U3RyaW5nPiA+KCk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8
U3RyaW5nPj4oKTsKICAgICAgICAgbGFiZWxzLT5hcHBlbmQoU3RyaW5nOjphZG9wdChidWZmZXIp
KTsKICAgICB9Ci0gICAgcmV0dXJuIGxhYmVscy5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURjo6
bW92ZShsYWJlbHMpOwogfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFURV9BTkRfVElNRV9JTlBV
VF9UWVBFUykKLXN0YXRpYyBQYXNzT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gY3JlYXRlRmFsbGJh
Y2tNb250aExhYmVscygpCitzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+ID4g
Y3JlYXRlRmFsbGJhY2tNb250aExhYmVscygpCiB7Ci0gICAgT3duUHRyPFZlY3RvcjxTdHJpbmc+
ID4gbGFiZWxzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxTdHJpbmc+KCkpOworICAgIGF1dG8gbGFi
ZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICBsYWJlbHMtPnJl
c2VydmVDYXBhY2l0eShXVEZfQVJSQVlfTEVOR1RIKFdURjo6bW9udGhGdWxsTmFtZSkpOwogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKFdURjo6bW9udGhGdWxs
TmFtZSk7ICsraSkKICAgICAgICAgbGFiZWxzLT5hcHBlbmQoV1RGOjptb250aEZ1bGxOYW1lW2ld
KTsKLSAgICByZXR1cm4gbGFiZWxzLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGOjptb3ZlKGxh
YmVscyk7CiB9CiAKIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBMb2NhbGVJQ1U6Om1vbnRoTGFiZWxz
KCkKQEAgLTIyMCwxMyArMjE0LDEzIEBAIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBMb2NhbGVJQ1U6
Om1vbnRoTGFiZWxzKCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEVfQU5EX1RJTUVfSU5QVVRf
VFlQRVMpCi1zdGF0aWMgUGFzc093blB0cjxWZWN0b3I8U3RyaW5nPiA+IGNyZWF0ZUZhbGxiYWNr
QU1QTUxhYmVscygpCitzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+ID4gY3Jl
YXRlRmFsbGJhY2tBTVBNTGFiZWxzKCkKIHsKLSAgICBPd25QdHI8VmVjdG9yPFN0cmluZz4gPiBs
YWJlbHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFN0cmluZz4oKSk7CisgICAgYXV0byBsYWJlbHMg
PSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgIGxhYmVscy0+cmVzZXJ2
ZUNhcGFjaXR5KDIpOwogICAgIGxhYmVscy0+YXBwZW5kKCJBTSIpOwogICAgIGxhYmVscy0+YXBw
ZW5kKCJQTSIpOwotICAgIHJldHVybiBsYWJlbHMucmVsZWFzZSgpOworICAgIHJldHVybiBXVEY6
Om1vdmUobGFiZWxzKTsKIH0KIAogdm9pZCBMb2NhbGVJQ1U6OmluaXRpYWxpemVEYXRlVGltZUZv
cm1hdCgpCkBAIC0yNTEsNyArMjQ1LDcgQEAgdm9pZCBMb2NhbGVJQ1U6OmluaXRpYWxpemVEYXRl
VGltZUZvcm1hdCgpCiAgICAgbV9kYXRlVGltZUZvcm1hdFdpdGhvdXRTZWNvbmRzID0gZ2V0RGF0
ZUZvcm1hdFBhdHRlcm4oZGF0ZVRpbWVGb3JtYXRXaXRob3V0U2Vjb25kcyk7CiAgICAgdWRhdF9j
bG9zZShkYXRlVGltZUZvcm1hdFdpdGhvdXRTZWNvbmRzKTsKIAotICAgIE93blB0cjxWZWN0b3I8
U3RyaW5nPiA+IHRpbWVBTVBNTGFiZWxzID0gY3JlYXRlTGFiZWxWZWN0b3IobV9tZWRpdW1UaW1l
Rm9ybWF0LCBVREFUX0FNX1BNUywgVUNBTF9BTSwgMik7CisgICAgYXV0byB0aW1lQU1QTUxhYmVs
cyA9IGNyZWF0ZUxhYmVsVmVjdG9yKG1fbWVkaXVtVGltZUZvcm1hdCwgVURBVF9BTV9QTVMsIFVD
QUxfQU0sIDIpOwogICAgIGlmICghdGltZUFNUE1MYWJlbHMpCiAgICAgICAgIHRpbWVBTVBNTGFi
ZWxzID0gY3JlYXRlRmFsbGJhY2tBTVBNTGFiZWxzKCk7CiAgICAgbV90aW1lQU1QTUxhYmVscyA9
ICp0aW1lQU1QTUxhYmVsczsKQEAgLTMzNiw3ICszMzAsNyBAQCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgTG9jYWxlSUNVOjpzaG9ydE1vbnRoTGFiZWxzKCkKICAgICBpZiAoIW1fc2hvcnRNb250aExh
YmVscy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBtX3Nob3J0TW9udGhMYWJlbHM7CiAgICAg
aWYgKGluaXRpYWxpemVTaG9ydERhdGVGb3JtYXQoKSkgewotICAgICAgICBpZiAoT3duUHRyPFZl
Y3RvcjxTdHJpbmc+ID4gbGFiZWxzID0gY3JlYXRlTGFiZWxWZWN0b3IobV9zaG9ydERhdGVGb3Jt
YXQsIFVEQVRfU0hPUlRfTU9OVEhTLCBVQ0FMX0pBTlVBUlksIDEyKSkgeworICAgICAgICBhdXRv
IGxhYmVscyA9IGNyZWF0ZUxhYmVsVmVjdG9yKG1fc2hvcnREYXRlRm9ybWF0LCBVREFUX1NIT1JU
X01PTlRIUywgVUNBTF9KQU5VQVJZLCAxMikpIHsKICAgICAgICAgICAgIG1fc2hvcnRNb250aExh
YmVscyA9ICpsYWJlbHM7CiAgICAgICAgICAgICByZXR1cm4gbV9zaG9ydE1vbnRoTGFiZWxzOwog
ICAgICAgICB9CkBAIC0zNTIsNyArMzQ2LDcgQEAgY29uc3QgVmVjdG9yPFN0cmluZz4mIExvY2Fs
ZUlDVTo6c3RhbmRBbG9uZU1vbnRoTGFiZWxzKCkKICAgICBpZiAoIW1fc3RhbmRBbG9uZU1vbnRo
TGFiZWxzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG1fc3RhbmRBbG9uZU1vbnRoTGFiZWxz
OwogICAgIGlmIChpbml0aWFsaXplU2hvcnREYXRlRm9ybWF0KCkpIHsKLSAgICAgICAgaWYgKE93
blB0cjxWZWN0b3I8U3RyaW5nPiA+IGxhYmVscyA9IGNyZWF0ZUxhYmVsVmVjdG9yKG1fc2hvcnRE
YXRlRm9ybWF0LCBVREFUX1NUQU5EQUxPTkVfTU9OVEhTLCBVQ0FMX0pBTlVBUlksIDEyKSkgewor
ICAgICAgICBpZiAoYXV0byBsYWJlbHMgPSBjcmVhdGVMYWJlbFZlY3RvcihtX3Nob3J0RGF0ZUZv
cm1hdCwgVURBVF9TVEFOREFMT05FX01PTlRIUywgVUNBTF9KQU5VQVJZLCAxMikpIHsKICAgICAg
ICAgICAgIG1fc3RhbmRBbG9uZU1vbnRoTGFiZWxzID0gKmxhYmVsczsKICAgICAgICAgICAgIHJl
dHVybiBtX3N0YW5kQWxvbmVNb250aExhYmVsczsKICAgICAgICAgfQpAQCAtMzY2LDcgKzM2MCw3
IEBAIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBMb2NhbGVJQ1U6OnNob3J0U3RhbmRBbG9uZU1vbnRo
TGFiZWxzKCkKICAgICBpZiAoIW1fc2hvcnRTdGFuZEFsb25lTW9udGhMYWJlbHMuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gbV9zaG9ydFN0YW5kQWxvbmVNb250aExhYmVsczsKICAgICBpZiAo
aW5pdGlhbGl6ZVNob3J0RGF0ZUZvcm1hdCgpKSB7Ci0gICAgICAgIGlmIChPd25QdHI8VmVjdG9y
PFN0cmluZz4gPiBsYWJlbHMgPSBjcmVhdGVMYWJlbFZlY3RvcihtX3Nob3J0RGF0ZUZvcm1hdCwg
VURBVF9TVEFOREFMT05FX1NIT1JUX01PTlRIUywgVUNBTF9KQU5VQVJZLCAxMikpIHsKKyAgICAg
ICAgaWYgKGF1dG8gbGFiZWxzID0gY3JlYXRlTGFiZWxWZWN0b3IobV9zaG9ydERhdGVGb3JtYXQs
IFVEQVRfU1RBTkRBTE9ORV9TSE9SVF9NT05USFMsIFVDQUxfSkFOVUFSWSwgMTIpKSB7CiAgICAg
ICAgICAgICBtX3Nob3J0U3RhbmRBbG9uZU1vbnRoTGFiZWxzID0gKmxhYmVsczsKICAgICAgICAg
ICAgIHJldHVybiBtX3Nob3J0U3RhbmRBbG9uZU1vbnRoTGFiZWxzOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuaAppbmRleCAxNTE5NzEwZDllYmZiMzgw
MDU1NWRmMDg0MjRhZmQxZDAyNGRhNjUwLi5jNTQ1ZWI1Yjc5MTA5ZDY1MGIxMzZmOWMzODIyZGFh
MGY4YTdiNzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2Fs
ZUlDVS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmgKQEAg
LTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlIDx1bmljb2RlL3VkYXQuaD4KICNpbmNsdWRlIDx1bmlj
b2RlL3VudW0uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKQEAgLTQ2LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8g
YW5kIExvY2FsaXplZE51bWJlcklDVVRlc3QuY3BwLgogY2xhc3MgTG9jYWxlSUNVIDogcHVibGlj
IExvY2FsZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TG9jYWxlSUNVPiBjcmVh
dGUoY29uc3QgY2hhciogbG9jYWxlU3RyaW5nKTsKKyAgICBleHBsaWNpdCBMb2NhbGVJQ1UoY29u
c3QgY2hhciopOwogICAgIHZpcnR1YWwgfkxvY2FsZUlDVSgpOwogCiAjaWYgRU5BQkxFKERBVEVf
QU5EX1RJTUVfSU5QVVRfVFlQRVMpCkBAIC02NSw3ICs2NCw2IEBAIHB1YmxpYzoKICNlbmRpZgog
CiBwcml2YXRlOgotICAgIGV4cGxpY2l0IExvY2FsZUlDVShjb25zdCBjaGFyKik7CiAgICAgU3Ry
aW5nIGRlY2ltYWxTeW1ib2woVU51bWJlckZvcm1hdFN5bWJvbCk7CiAgICAgU3RyaW5nIGRlY2lt
YWxUZXh0QXR0cmlidXRlKFVOdW1iZXJGb3JtYXRUZXh0QXR0cmlidXRlKTsKICAgICB2aXJ0dWFs
IHZvaWQgaW5pdGlhbGl6ZUxvY2FsZURhdGEoKSBvdmVycmlkZTsKQEAgLTc3LDcgKzc1LDcgQEAg
cHJpdmF0ZToKICAgICBVRGF0ZUZvcm1hdCogb3BlbkRhdGVGb3JtYXQoVURhdGVGb3JtYXRTdHls
ZSB0aW1lU3R5bGUsIFVEYXRlRm9ybWF0U3R5bGUgZGF0ZVN0eWxlKSBjb25zdDsKIAogI2lmIEVO
QUJMRShEQVRFX0FORF9USU1FX0lOUFVUX1RZUEVTKQotICAgIFBhc3NPd25QdHI8VmVjdG9yPFN0
cmluZz4gPiBjcmVhdGVMYWJlbFZlY3Rvcihjb25zdCBVRGF0ZUZvcm1hdCosIFVEYXRlRm9ybWF0
U3ltYm9sVHlwZSwgaW50MzJfdCBzdGFydEluZGV4LCBpbnQzMl90IHNpemUpOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxWZWN0b3I8U3RyaW5nPiA+IGNyZWF0ZUxhYmVsVmVjdG9yKGNvbnN0IFVEYXRl
Rm9ybWF0KiwgVURhdGVGb3JtYXRTeW1ib2xUeXBlLCBpbnQzMl90IHN0YXJ0SW5kZXgsIGludDMy
X3Qgc2l6ZSk7CiAgICAgdm9pZCBpbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoKTsKICNlbmRpZgog
CkBAIC04OCw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RpZENyZWF0ZVNob3J0RGF0
ZUZvcm1hdDsKIAogI2lmIEVOQUJMRShEQVRFX0FORF9USU1FX0lOUFVUX1RZUEVTKQotICAgIE93
blB0cjxWZWN0b3I8U3RyaW5nPiA+IG1fbW9udGhMYWJlbHM7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFZlY3RvcjxTdHJpbmc+ID4gbV9tb250aExhYmVsczsKICAgICBTdHJpbmcgbV9kYXRlRm9ybWF0
OwogICAgIFN0cmluZyBtX21vbnRoRm9ybWF0OwogICAgIFN0cmluZyBtX3Nob3J0TW9udGhGb3Jt
YXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNwcAppbmRleCA5
NjE4MzNlNDJkZDgwN2RiNTZjMGE5MWJkOWI0NmViYzJlY2U5ZWM4Li5lYTE4YTdiNjg1YTI5OWRh
YWY4MzQxODVmMzAzZTAzN2I3NjNhZDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvTG9jYWxlTm9uZS5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybUxvY2FsZS5oIgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgot
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
NTYsOSArNTUsOSBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCi1QYXNzT3duUHRyPExvY2FsZT4g
TG9jYWxlOjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJikKK3N0ZDo6dW5pcXVlX3B0cjxMb2Nh
bGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBMb2NhbGVOb25lKCkpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExv
Y2FsZU5vbmU+KCk7CiB9CiAKIExvY2FsZU5vbmU6On5Mb2NhbGVOb25lKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUuaAppbmRleCBlZjg1MjJjODk1NDI3
NDU0ZDNkYjFiYjAzYjM1YzQwMjc0ZDZkOTllLi5jMmQyNTNkY2Q1OTQ3MTY5MzVjZDI0NGU3MWE3
ZjJjZWZjZDczMDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Bs
YXRmb3JtTG9jYWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9y
bUxvY2FsZS5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJEYXRlQ29tcG9uZW50cy5o
IgogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NDEsOCArNDAsOCBAQCBjbGFzcyBMb2NhbGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExv
Y2FsZSk7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxMb2NhbGU+IGNyZWF0ZShj
b25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpOwotICAgIHN0YXRpYyBQYXNzT3du
UHRyPExvY2FsZT4gY3JlYXRlRGVmYXVsdCgpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
TG9jYWxlPiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKTsKKyAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExvY2FsZT4gY3JlYXRlRGVmYXVsdCgpOwogCiAgICAg
Ly8gQ29udmVydHMgdGhlIHNwZWNpZmllZCBudW1iZXIgc3RyaW5nIHRvIGFub3RoZXIgbnVtYmVy
IHN0cmluZyBsb2NhbGl6ZWQKICAgICAvLyBmb3IgdGhpcyBMb2NhbGUgbG9jYWxlLiBUaGUgaW5w
dXQgc3RyaW5nIG11c3QgY29uZm9ybSB0byBIVE1MCkBAIC0xNTAsNyArMTQ5LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1faGFzTG9jYWxlRGF0YTsKIH07CiAKLWlubGluZSBQYXNzT3duUHRyPExv
Y2FsZT4gTG9jYWxlOjpjcmVhdGVEZWZhdWx0KCkKK2lubGluZSBzdGQ6OnVuaXF1ZV9wdHI8TG9j
YWxlPiBMb2NhbGU6OmNyZWF0ZURlZmF1bHQoKQogewogICAgIHJldHVybiBMb2NhbGU6OmNyZWF0
ZShkZWZhdWx0TGFuZ3VhZ2UoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAKaW5kZXggNDY3M2JlMDBmNTRhZThjZWM5ZWUwOWQ2MDMy
YWNmNmZjY2UxM2ZjMC4uN2E5MTAwMmZjYTU3YjBkMGJlZTgyZGIxYzdhNjUxY2JhYjhjMjFkMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNw
cApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIlRleHRDb2RlY0xhdGluMS5oIgogCiAjaW5j
bHVkZSAiVGV4dENvZGVjQVNDSUlGYXN0UGF0aC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcAppbmRleCAxOTVhYmE0
OGNhNWE3YTg0NzgwMGU2YzFkNTFhNjYzNzFhN2M0YWFiLi42ZTVkNDQxNTNmMDBkN2I0YTA0MmRm
ZjlmMTY2NjQxNjIzZTI3OGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1RleHRDb2RlY1VURjE2LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRDb2RlY1VURjE2LmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlRleHRDb2RlY1VURjE2LmgiCiAKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmNwcAppbmRleCBkYjgyYmQ3NTkw
Zjg1N2Y3Yzc5MzIxOGZlZDQ1Y2RmYjAyOTgxOTQyLi4wNWRhODRiZjkzMTNkNWQ0MDA3MGYyYWI0
NjdjZGY3NjBhN2Y4NjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRFbmNvZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0
RW5jb2RpbmcuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiVGV4dENvZGVjLmgiCiAj
aW5jbHVkZSAiVGV4dEVuY29kaW5nUmVnaXN0cnkuaCIKICNpbmNsdWRlIDx1bmljb2RlL3Vub3Jt
Lmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nVmlldy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMv
TG9jYWxlTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMu
aAppbmRleCA1M2E2ZGI3YTk4ZTgxZmY3YWUyYmQzM2NlNWEyZmRhMzE5M2UwMWJmLi4zMDNjZDUx
ZDVjMDMwYzQ4YmM4YjMyMzI2ODhhZjZkYzdkMDc0ZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMuaApAQCAtNDcsNyArNDcsOSBAQCBjbGFzcyBEYXRl
Q29tcG9uZW50czsKIAogY2xhc3MgTG9jYWxlTWFjIDogcHVibGljIExvY2FsZSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TG9jYWxlTWFjPiBjcmVhdGUoTlNMb2NhbGUqKTsKKyAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExvY2FsZU1hYz4gY3JlYXRlKE5TTG9jYWxlKik7CisK
KyAgICBleHBsaWNpdCBMb2NhbGVNYWMoTlNMb2NhbGUqKTsKICAgICB+TG9jYWxlTWFjKCk7CiAK
ICNpZiBQTEFURk9STShJT1MpCkBAIC03MCw3ICs3Miw2IEBAIHB1YmxpYzoKICNlbmRpZgogCiBw
cml2YXRlOgotICAgIGV4cGxpY2l0IExvY2FsZU1hYyhOU0xvY2FsZSopOwogICAgIFJldGFpblB0
cjxOU0RhdGVGb3JtYXR0ZXI+IHNob3J0RGF0ZUZvcm1hdHRlcigpOwogICAgIHZpcnR1YWwgdm9p
ZCBpbml0aWFsaXplTG9jYWxlRGF0YSgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0KaW5kZXggYzM3MjRjOWVmZGM5YzNjOGVkYjE0
ZGU1YzZiYWQxMjcyYzRjNjM1Ni4uMGUwYTQzMGQ3ZDRmNzkxYTQyZDg3NmRlYTEzYjk1MDlhMTdj
ZGQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxl
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5t
bQpAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAjaW5jbHVkZSAiTG9j
YWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgotI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtNjcsOSArNjYsOSBAQCBzdGF0aWMgUmV0YWlu
UHRyPE5TTG9jYWxlPiBkZXRlcm1pbmVMb2NhbGUoY29uc3QgU3RyaW5nJiBsb2NhbGUpCiAgICAg
IHJldHVybiBhZG9wdE5TKFtbTlNMb2NhbGUgYWxsb2NdIGluaXRXaXRoTG9jYWxlSWRlbnRpZmll
cjpsb2NhbGVdKTsKIH0KIAotUGFzc093blB0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0
IEF0b21pY1N0cmluZyYgbG9jYWxlKQorc3RkOjp1bmlxdWVfcHRyPExvY2FsZT4gTG9jYWxlOjpj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUpCiB7Ci0gICAgcmV0dXJuIExvY2FsZU1h
Yzo6Y3JlYXRlKGRldGVybWluZUxvY2FsZShsb2NhbGUuc3RyaW5nKCkpLmdldCgpKTsKKyAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMb2NhbGVNYWM+KGRldGVybWluZUxvY2FsZShsb2NhbGUu
c3RyaW5nKCkpLmdldCgpKTsKIH0KIAogc3RhdGljIFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+
IGNyZWF0ZURhdGVUaW1lRm9ybWF0dGVyKE5TTG9jYWxlKiBsb2NhbGUsIE5TQ2FsZW5kYXIqIGNh
bGVuZGFyLCBOU0RhdGVGb3JtYXR0ZXJTdHlsZSBkYXRlU3R5bGUsIE5TRGF0ZUZvcm1hdHRlclN0
eWxlIHRpbWVTdHlsZSkKQEAgLTEwNCw5ICsxMDMsOSBAQCBMb2NhbGVNYWM6On5Mb2NhbGVNYWMo
KQogewogfQogCi1QYXNzT3duUHRyPExvY2FsZU1hYz4gTG9jYWxlTWFjOjpjcmVhdGUoTlNMb2Nh
bGUqIGxvY2FsZSkKK3N0ZDo6dW5pcXVlX3B0cjxMb2NhbGVNYWM+IExvY2FsZU1hYzo6Y3JlYXRl
KE5TTG9jYWxlKiBsb2NhbGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBMb2NhbGVNYWMo
bG9jYWxlKSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TG9jYWxlTWFjPihsb2NhbGUp
OwogfQogCiBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBMb2NhbGVNYWM6OnNob3J0RGF0ZUZv
cm1hdHRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9U
ZXh0Q29kZWNNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENv
ZGVjTWFjLmNwcAppbmRleCBhMTZlMzA3YmM0NmYzY2E2MTk2ZDdhMGVmMDkwYmI1YmFkMGQ1ZWY5
Li40N2E2YTk2OTE5NzkzZWRkNTI0YzQ4ZTg1ZjA1Njk4ZGExNmE0YmMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRDb2RlY01hYy5jcHAKQEAgLTMzLDcg
KzMzLDYgQEAKICNpbmNsdWRlICJDaGFyc2V0RGF0YS5oIgogI2luY2x1ZGUgIlRocmVhZEdsb2Jh
bERhdGEuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJl
YWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAppbmRleCBhYjAzNmFhMGQxMDBlMDFh
NDA5YzExYzcxYWExZjBkNzk0ZjQ1NDAzLi4zY2U5OTNjMDU2Mzc3NjQ5ZTU0YzdlY2U4ZTYyMGUx
YTFhMWE1ZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9M
b2NhbGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2Fs
ZVdpbi5jcHAKQEAgLTQwLDggKzQwLDYgQEAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4K
ICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+CiAKQEAgLTE0Niw3ICsxNDQsNyBAQCBzdGF0aWMgTENJRCBMQ0lERnJvbUxvY2FsZShj
b25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSkKICAgICByZXR1cm4gbGNpZDsKIH0KIAotUGFzc093
blB0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQor
c3RkOjp1bmlxdWVfcHRyPExvY2FsZT4gTG9jYWxlOjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5n
JiBsb2NhbGUpCiB7CiAgICAgcmV0dXJuIExvY2FsZVdpbjo6Y3JlYXRlKExDSURGcm9tTG9jYWxl
KGxvY2FsZSkpOwogfQpAQCAtMTU3LDkgKzE1NSw5IEBAIGlubGluZSBMb2NhbGVXaW46OkxvY2Fs
ZVdpbihMQ0lEIGxjaWQpCiB7CiB9CiAKLVBhc3NPd25QdHI8TG9jYWxlV2luPiBMb2NhbGVXaW46
OmNyZWF0ZShMQ0lEIGxjaWQpCitzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlV2luPiBMb2NhbGVXaW46
OmNyZWF0ZShMQ0lEIGxjaWQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBMb2NhbGVXaW4o
bGNpZCkpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExvY2FsZVdpbj4obGNpZCk7CiB9
CiAKIExvY2FsZVdpbjo6fkxvY2FsZVdpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvd2luL0xvY2FsZVdpbi5oCmluZGV4IGVkY2VlZmE4YWMzYzY1OWVmYzU2NzFmMWYzZjlkZTI0
YTVlYjVkMzAuLmI4ZGVmN2UxODZiNTIyNGNkZTNjYzAwZTk1ZTBkMzgyZDNjNzZiNWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5oCkBAIC00NCw3ICs0
NCw3IEBAIHN0cnVjdCBEYXRlRm9ybWF0VG9rZW47CiAKIGNsYXNzIExvY2FsZVdpbiA6IHB1Ymxp
YyBMb2NhbGUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPExvY2FsZVdpbj4gY3Jl
YXRlKExDSUQpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlV2luPiBjcmVhdGUo
TENJRCk7CiAgICAgfkxvY2FsZVdpbigpOwogI2lmIEVOQUJMRShEQVRFX0FORF9USU1FX0lOUFVU
X1RZUEVTKQogICAgIHZpcnR1YWwgU3RyaW5nIGRhdGVGb3JtYXQoKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL1RleHRDb2RlY1dpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwCmluZGV4
IGE1YmNhNzBiNDgyNzIzMWZiNzIyMjBlNmExMzNjYTI2MGZlYmRmM2UuLmEzYTY1YWQ3NjAzNDBj
NjUyZTNlMmJkZmZkODAyNDNjMTQ5NTZiZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvd2luL1RleHRDb2RlY1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcApAQCAtMTI5LDkgKzEyOSw5IEBAIHN0YXRp
YyBVSU5UIGdldENvZGVQYWdlKGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgcmV0dXJuIGkgPT0gY2hh
cnNldHMuZW5kKCkgPyBDUF9BQ1AgOiBpLT52YWx1ZS5tX2NvZGVQYWdlOwogfQogCi1zdGF0aWMg
UGFzc093blB0cjxUZXh0Q29kZWM+IG5ld1RleHRDb2RlY1dpbihjb25zdCBUZXh0RW5jb2Rpbmcm
IGVuY29kaW5nLCBjb25zdCB2b2lkKikKK3N0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VGV4dENvZGVj
PiBuZXdUZXh0Q29kZWNXaW4oY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywgY29uc3Qgdm9p
ZCopCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0Q29kZWNXaW4oZ2V0Q29kZVBhZ2Uo
ZW5jb2RpbmcubmFtZSgpKSkpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2Rl
Y1dpbj4oZ2V0Q29kZVBhZ2UoZW5jb2RpbmcubmFtZSgpKSk7CiB9CiAKIFRleHRDb2RlY1dpbjo6
VGV4dENvZGVjV2luKFVJTlQgY29kZVBhZ2UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243182</attachid>
            <date>2014-12-12 00:05:49 -0800</date>
            <delta_ts>2014-12-12 05:57:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-139395-20141212170631.patch</filename>
            <type>text/plain</type>
            <size>20878</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3MjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODk2NzE3Y2QwNmEwZDc1
ODY5ZTdhN2I5YTE1YmNhNjQxNzZiYjQyOC4uZjMxNjgwNjRkZmU1Yjc4MTZiZWY0NTIzZTU0MmEy
ZmQwOTUyNDdjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE0LTEyLTExICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgTW92ZSBXZWJD
b3JlL3BsYXRmb3JtL3RleHQgdG8gc3RkOjp1bmlxdWVfcHRyIAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5Mzk1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXMgYSBzdGVwIHRvIHVzZSBzdGQ6OnVuaXF1
ZV9wdHI8PiwgdGhpcyBwYXRjaCByZXBsYWNlcyBPd25QdHJ8UGFzc093blB0ciB3aXRoCisgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjw+IHwgc3RkOjptYWtlX3VuaXF1ZTw+LgorCisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9MaW5lQnJlYWtJdGVyYXRv
clBvb2xJQ1UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVCcmVha0l0ZXJhdG9yUG9vbDo6TGlu
ZUJyZWFrSXRlcmF0b3JQb29sKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVCcmVha0l0ZXJhdG9y
UG9vbDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xvY2FsZUlD
VS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpMb2NhbGVJQ1U6OmNyZWF0ZUxhYmVsVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUZhbGxiYWNrTW9udGhMYWJlbHMpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmFsbGJh
Y2tBTVBNTGFiZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZUlDVTo6aW5pdGlhbGl6ZURh
dGVUaW1lRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZUlDVTo6c2hvcnRNb250aExh
YmVscyk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVJQ1U6OmNyZWF0ZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpMb2NhbGVJQ1U6OnN0YW5kQWxvbmVNb250aExhYmVscyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVJQ1U6OnNob3J0U3RhbmRBbG9uZU1vbnRoTGFi
ZWxzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
b2NhbGU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5o
OgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxlOjpjcmVhdGVEZWZhdWx0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4
dC9UZXh0Q29kZWNVVEYxNi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2Rp
bmcuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Okxv
Y2FsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZU1hYzo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVXaW46OmNyZWF0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4
dC93aW4vVGV4dENvZGVjV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5ld1RleHRDb2RlY1dp
bik6CisKIDIwMTQtMTItMTEgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBDcmFzaCB3aGVuIHRyeWluZyB0byBpbnNwZWN0IExv
Y2FsU3RvcmFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA5NGE0Mzg2ZThiYWE5N2MxYmViMWQ4
NGRkNDExODIwNWVlMzA3YjdiLi43N2RhODViYzE5NjlkZDM2ZWIxM2YwYzFkYzg0NmI1NDFhZGU4
MDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTY3Nyw3ICsxNjc3LDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fZGlkRGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNDaGFuZ2VkOwogI2VuZGlm
CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBPd25QdHI8TG9jYWxlPj4gTG9j
YWxlSWRlbnRpZmllclRvTG9jYWxlTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJp
bmcsIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+PiBMb2NhbGVJZGVudGlmaWVyVG9Mb2NhbGVNYXA7
CiAgICAgTG9jYWxlSWRlbnRpZmllclRvTG9jYWxlTWFwIG1fbG9jYWxlQ2FjaGU7CiAKICNpZiBF
TkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oCmluZGV4IDY3NGEwNmQzN2NjZDk5
NzNkMTQ2ZGM4ZTRmMmU1NGI3MDlhNDVkMTEuLmY4YjU4ZDZmMzYzODc4MTk0MTIyNzQzZDA4NmJm
OWIyNDQxNzA5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTGlu
ZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUg
PHVuaWNvZGUvdWJyay5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTcGVjaWZpYy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTQyLDE0ICs0MSwxNCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBMaW5lQnJlYWtJdGVyYXRvclBvb2wgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKExpbmVCcmVha0l0ZXJhdG9yUG9vbCk7CiBwdWJsaWM6CisgICAgTGluZUJy
ZWFrSXRlcmF0b3JQb29sKCkgeyB9IAorCiAgICAgc3RhdGljIExpbmVCcmVha0l0ZXJhdG9yUG9v
bCYgc2hhcmVkUG9vbCgpCiAgICAgewogICAgICAgICBzdGF0aWMgV1RGOjpUaHJlYWRTcGVjaWZp
YzxMaW5lQnJlYWtJdGVyYXRvclBvb2w+KiBwb29sID0gbmV3IFdURjo6VGhyZWFkU3BlY2lmaWM8
TGluZUJyZWFrSXRlcmF0b3JQb29sPjsKICAgICAgICAgcmV0dXJuICoqcG9vbDsKICAgICB9CiAK
LSAgICBzdGF0aWMgUGFzc093blB0cjxMaW5lQnJlYWtJdGVyYXRvclBvb2w+IGNyZWF0ZSgpIHsg
cmV0dXJuIGFkb3B0UHRyKG5ldyBMaW5lQnJlYWtJdGVyYXRvclBvb2wpOyB9Ci0KICAgICBzdGF0
aWMgU3RyaW5nIG1ha2VMb2NhbGVXaXRoQnJlYWtLZXl3b3JkKGNvbnN0IEF0b21pY1N0cmluZyYg
bG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSkKICAgICB7CiAgICAgICAgIFN0cmlu
Z0J1aWxkZXIgbG9jYWxlV2l0aEtleXdvcmQ7CkBAIC0xMTMsOCArMTEyLDYgQEAgcHVibGljOgog
ICAgIH0KIAogcHJpdmF0ZToKLSAgICBMaW5lQnJlYWtJdGVyYXRvclBvb2woKSB7IH0KLQogICAg
IHN0YXRpYyBjb25zdCBzaXplX3QgY2FwYWNpdHkgPSA0OwogCiAgICAgdHlwZWRlZiBzdGQ6OnBh
aXI8QXRvbWljU3RyaW5nLCBUZXh0QnJlYWtJdGVyYXRvcio+IEVudHJ5OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwCmluZGV4IGExZTY1OWU3MDU2ZDU3MWQ1OTI4
ZjA4NDQ1NzVlYTc2NzViNDE0ZTIuLmEzYTI4MTg3ODIxOWI0ZGI5MTZjZWE2YjRmY2NlNTRjYWYz
ZWI1MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNV
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAKQEAg
LTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlIDx1bmljb2RlL3VkYXRwZy5oPgogI2luY2x1ZGUgPHVu
aWNvZGUvdWxvYy5oPgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgotI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgaWN1OwpAQCAtNDQsOSArNDMsOSBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NPd25QdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0
ZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSkKK3N0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IExv
Y2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQogewotICAgIHJldHVybiBM
b2NhbGVJQ1U6OmNyZWF0ZShsb2NhbGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8TG9jYWxlSUNVPihsb2NhbGUuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiB9CiAKIExvY2FsZUlDVTo6TG9jYWxlSUNVKGNvbnN0IGNoYXIqIGxvY2FsZSkKQEAg
LTczLDExICs3Miw2IEBAIExvY2FsZUlDVTo6fkxvY2FsZUlDVSgpCiAjZW5kaWYKIH0KIAotUGFz
c093blB0cjxMb2NhbGVJQ1U+IExvY2FsZUlDVTo6Y3JlYXRlKGNvbnN0IGNoYXIqIGxvY2FsZVN0
cmluZykKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IExvY2FsZUlDVShsb2NhbGVTdHJpbmcp
KTsKLX0KLQogU3RyaW5nIExvY2FsZUlDVTo6ZGVjaW1hbFN5bWJvbChVTnVtYmVyRm9ybWF0U3lt
Ym9sIHN5bWJvbCkKIHsKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKQEAg
LTE3MCwzOSArMTY0LDM5IEBAIHN0YXRpYyBTdHJpbmcgZ2V0RGF0ZUZvcm1hdFBhdHRlcm4oY29u
c3QgVURhdGVGb3JtYXQqIGRhdGVGb3JtYXQpCiAgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoYnVm
ZmVyKTsKIH0KIAotUGFzc093blB0cjxWZWN0b3I8U3RyaW5nPiA+IExvY2FsZUlDVTo6Y3JlYXRl
TGFiZWxWZWN0b3IoY29uc3QgVURhdGVGb3JtYXQqIGRhdGVGb3JtYXQsIFVEYXRlRm9ybWF0U3lt
Ym9sVHlwZSB0eXBlLCBpbnQzMl90IHN0YXJ0SW5kZXgsIGludDMyX3Qgc2l6ZSkKK3N0ZDo6dW5p
cXVlX3B0cjxWZWN0b3I8U3RyaW5nPj4gTG9jYWxlSUNVOjpjcmVhdGVMYWJlbFZlY3Rvcihjb25z
dCBVRGF0ZUZvcm1hdCogZGF0ZUZvcm1hdCwgVURhdGVGb3JtYXRTeW1ib2xUeXBlIHR5cGUsIGlu
dDMyX3Qgc3RhcnRJbmRleCwgaW50MzJfdCBzaXplKQogewogICAgIGlmICghZGF0ZUZvcm1hdCkK
LSAgICAgICAgcmV0dXJuIFBhc3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPigpOworICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICBpZiAodWRhdF9j
b3VudFN5bWJvbHMoZGF0ZUZvcm1hdCwgdHlwZSkgIT0gc3RhcnRJbmRleCArIHNpemUpCi0gICAg
ICAgIHJldHVybiBQYXNzT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4oKTsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAKLSAgICBPd25QdHI8VmVjdG9y
PFN0cmluZz4gPiBsYWJlbHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFN0cmluZz4oKSk7CisgICAg
YXV0byBsYWJlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgIGxh
YmVscy0+cmVzZXJ2ZUNhcGFjaXR5KHNpemUpOwogICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8
IHNpemU7ICsraSkgewogICAgICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsK
ICAgICAgICAgaW50MzJfdCBsZW5ndGggPSB1ZGF0X2dldFN5bWJvbHMoZGF0ZUZvcm1hdCwgdHlw
ZSwgc3RhcnRJbmRleCArIGksIDAsIDAsICZzdGF0dXMpOwogICAgICAgICBpZiAoc3RhdHVzICE9
IFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SKQotICAgICAgICAgICAgcmV0dXJuIFBhc3NPd25QdHI8
VmVjdG9yPFN0cmluZz4gPigpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
VmVjdG9yPFN0cmluZz4+KCk7CiAgICAgICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKGxlbmd0aCk7
CiAgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICAgICAgdWRhdF9nZXRTeW1ib2xz
KGRhdGVGb3JtYXQsIHR5cGUsIHN0YXJ0SW5kZXggKyBpLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgs
ICZzdGF0dXMpOwogICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgICAgICBy
ZXR1cm4gUGFzc093blB0cjxWZWN0b3I8U3RyaW5nPiA+KCk7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICAgICAgbGFiZWxzLT5hcHBl
bmQoU3RyaW5nOjphZG9wdChidWZmZXIpKTsKICAgICB9Ci0gICAgcmV0dXJuIGxhYmVscy5yZWxl
YXNlKCk7CisgICAgcmV0dXJuIFdURjo6bW92ZShsYWJlbHMpOwogfQogI2VuZGlmCiAKICNpZiBF
TkFCTEUoREFURV9BTkRfVElNRV9JTlBVVF9UWVBFUykKLXN0YXRpYyBQYXNzT3duUHRyPFZlY3Rv
cjxTdHJpbmc+ID4gY3JlYXRlRmFsbGJhY2tNb250aExhYmVscygpCitzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFZlY3RvcjxTdHJpbmc+PiBjcmVhdGVGYWxsYmFja01vbnRoTGFiZWxzKCkKIHsKLSAg
ICBPd25QdHI8VmVjdG9yPFN0cmluZz4gPiBsYWJlbHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFN0
cmluZz4oKSk7CisgICAgYXV0byBsYWJlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJp
bmc+PigpOwogICAgIGxhYmVscy0+cmVzZXJ2ZUNhcGFjaXR5KFdURl9BUlJBWV9MRU5HVEgoV1RG
Ojptb250aEZ1bGxOYW1lKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJB
WV9MRU5HVEgoV1RGOjptb250aEZ1bGxOYW1lKTsgKytpKQogICAgICAgICBsYWJlbHMtPmFwcGVu
ZChXVEY6Om1vbnRoRnVsbE5hbWVbaV0pOwotICAgIHJldHVybiBsYWJlbHMucmVsZWFzZSgpOwor
ICAgIHJldHVybiBXVEY6Om1vdmUobGFiZWxzKTsKIH0KIAogY29uc3QgVmVjdG9yPFN0cmluZz4m
IExvY2FsZUlDVTo6bW9udGhMYWJlbHMoKQpAQCAtMjIwLDEzICsyMTQsMTMgQEAgY29uc3QgVmVj
dG9yPFN0cmluZz4mIExvY2FsZUlDVTo6bW9udGhMYWJlbHMoKQogI2VuZGlmCiAKICNpZiBFTkFC
TEUoREFURV9BTkRfVElNRV9JTlBVVF9UWVBFUykKLXN0YXRpYyBQYXNzT3duUHRyPFZlY3RvcjxT
dHJpbmc+ID4gY3JlYXRlRmFsbGJhY2tBTVBNTGFiZWxzKCkKK3N0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8VmVjdG9yPFN0cmluZz4+IGNyZWF0ZUZhbGxiYWNrQU1QTUxhYmVscygpCiB7Ci0gICAgT3du
UHRyPFZlY3RvcjxTdHJpbmc+ID4gbGFiZWxzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxTdHJpbmc+
KCkpOworICAgIGF1dG8gbGFiZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4o
KTsKICAgICBsYWJlbHMtPnJlc2VydmVDYXBhY2l0eSgyKTsKICAgICBsYWJlbHMtPmFwcGVuZCgi
QU0iKTsKICAgICBsYWJlbHMtPmFwcGVuZCgiUE0iKTsKLSAgICByZXR1cm4gbGFiZWxzLnJlbGVh
c2UoKTsKKyAgICByZXR1cm4gV1RGOjptb3ZlKGxhYmVscyk7CiB9CiAKIHZvaWQgTG9jYWxlSUNV
Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoKQpAQCAtMjUxLDcgKzI0NSw3IEBAIHZvaWQgTG9j
YWxlSUNVOjppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoKQogICAgIG1fZGF0ZVRpbWVGb3JtYXRX
aXRob3V0U2Vjb25kcyA9IGdldERhdGVGb3JtYXRQYXR0ZXJuKGRhdGVUaW1lRm9ybWF0V2l0aG91
dFNlY29uZHMpOwogICAgIHVkYXRfY2xvc2UoZGF0ZVRpbWVGb3JtYXRXaXRob3V0U2Vjb25kcyk7
CiAKLSAgICBPd25QdHI8VmVjdG9yPFN0cmluZz4gPiB0aW1lQU1QTUxhYmVscyA9IGNyZWF0ZUxh
YmVsVmVjdG9yKG1fbWVkaXVtVGltZUZvcm1hdCwgVURBVF9BTV9QTVMsIFVDQUxfQU0sIDIpOwor
ICAgIGF1dG8gdGltZUFNUE1MYWJlbHMgPSBjcmVhdGVMYWJlbFZlY3RvcihtX21lZGl1bVRpbWVG
b3JtYXQsIFVEQVRfQU1fUE1TLCBVQ0FMX0FNLCAyKTsKICAgICBpZiAoIXRpbWVBTVBNTGFiZWxz
KQogICAgICAgICB0aW1lQU1QTUxhYmVscyA9IGNyZWF0ZUZhbGxiYWNrQU1QTUxhYmVscygpOwog
ICAgIG1fdGltZUFNUE1MYWJlbHMgPSAqdGltZUFNUE1MYWJlbHM7CkBAIC0zMzYsNyArMzMwLDcg
QEAgY29uc3QgVmVjdG9yPFN0cmluZz4mIExvY2FsZUlDVTo6c2hvcnRNb250aExhYmVscygpCiAg
ICAgaWYgKCFtX3Nob3J0TW9udGhMYWJlbHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbV9z
aG9ydE1vbnRoTGFiZWxzOwogICAgIGlmIChpbml0aWFsaXplU2hvcnREYXRlRm9ybWF0KCkpIHsK
LSAgICAgICAgaWYgKE93blB0cjxWZWN0b3I8U3RyaW5nPiA+IGxhYmVscyA9IGNyZWF0ZUxhYmVs
VmVjdG9yKG1fc2hvcnREYXRlRm9ybWF0LCBVREFUX1NIT1JUX01PTlRIUywgVUNBTF9KQU5VQVJZ
LCAxMikpIHsKKyAgICAgICAgaWYgKGF1dG8gbGFiZWxzID0gY3JlYXRlTGFiZWxWZWN0b3IobV9z
aG9ydERhdGVGb3JtYXQsIFVEQVRfU0hPUlRfTU9OVEhTLCBVQ0FMX0pBTlVBUlksIDEyKSkgewog
ICAgICAgICAgICAgbV9zaG9ydE1vbnRoTGFiZWxzID0gKmxhYmVsczsKICAgICAgICAgICAgIHJl
dHVybiBtX3Nob3J0TW9udGhMYWJlbHM7CiAgICAgICAgIH0KQEAgLTM1Miw3ICszNDYsNyBAQCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgTG9jYWxlSUNVOjpzdGFuZEFsb25lTW9udGhMYWJlbHMoKQog
ICAgIGlmICghbV9zdGFuZEFsb25lTW9udGhMYWJlbHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gbV9zdGFuZEFsb25lTW9udGhMYWJlbHM7CiAgICAgaWYgKGluaXRpYWxpemVTaG9ydERhdGVG
b3JtYXQoKSkgewotICAgICAgICBpZiAoT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gbGFiZWxzID0g
Y3JlYXRlTGFiZWxWZWN0b3IobV9zaG9ydERhdGVGb3JtYXQsIFVEQVRfU1RBTkRBTE9ORV9NT05U
SFMsIFVDQUxfSkFOVUFSWSwgMTIpKSB7CisgICAgICAgIGlmIChhdXRvIGxhYmVscyA9IGNyZWF0
ZUxhYmVsVmVjdG9yKG1fc2hvcnREYXRlRm9ybWF0LCBVREFUX1NUQU5EQUxPTkVfTU9OVEhTLCBV
Q0FMX0pBTlVBUlksIDEyKSkgewogICAgICAgICAgICAgbV9zdGFuZEFsb25lTW9udGhMYWJlbHMg
PSAqbGFiZWxzOwogICAgICAgICAgICAgcmV0dXJuIG1fc3RhbmRBbG9uZU1vbnRoTGFiZWxzOwog
ICAgICAgICB9CkBAIC0zNjYsNyArMzYwLDcgQEAgY29uc3QgVmVjdG9yPFN0cmluZz4mIExvY2Fs
ZUlDVTo6c2hvcnRTdGFuZEFsb25lTW9udGhMYWJlbHMoKQogICAgIGlmICghbV9zaG9ydFN0YW5k
QWxvbmVNb250aExhYmVscy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBtX3Nob3J0U3RhbmRB
bG9uZU1vbnRoTGFiZWxzOwogICAgIGlmIChpbml0aWFsaXplU2hvcnREYXRlRm9ybWF0KCkpIHsK
LSAgICAgICAgaWYgKE93blB0cjxWZWN0b3I8U3RyaW5nPiA+IGxhYmVscyA9IGNyZWF0ZUxhYmVs
VmVjdG9yKG1fc2hvcnREYXRlRm9ybWF0LCBVREFUX1NUQU5EQUxPTkVfU0hPUlRfTU9OVEhTLCBV
Q0FMX0pBTlVBUlksIDEyKSkgeworICAgICAgICBpZiAoYXV0byBsYWJlbHMgPSBjcmVhdGVMYWJl
bFZlY3RvcihtX3Nob3J0RGF0ZUZvcm1hdCwgVURBVF9TVEFOREFMT05FX1NIT1JUX01PTlRIUywg
VUNBTF9KQU5VQVJZLCAxMikpIHsKICAgICAgICAgICAgIG1fc2hvcnRTdGFuZEFsb25lTW9udGhM
YWJlbHMgPSAqbGFiZWxzOwogICAgICAgICAgICAgcmV0dXJuIG1fc2hvcnRTdGFuZEFsb25lTW9u
dGhMYWJlbHM7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvTG9jYWxlSUNVLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlD
VS5oCmluZGV4IDE1MTk3MTBkOWViZmIzODAwNTU1ZGYwODQyNGFmZDFkMDI0ZGE2NTAuLmM1NDVl
YjViNzkxMDlkNjUwYjEzNmY5YzM4MjJkYWEwZjhhN2I3MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9Mb2NhbGVJQ1UuaApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgPHVuaWNv
ZGUvdWRhdC5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdW51bS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDYsNyArNDUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBhbmQgTG9jYWxpemVkTnVtYmVySUNVVGVzdC5jcHAu
CiBjbGFzcyBMb2NhbGVJQ1UgOiBwdWJsaWMgTG9jYWxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc093blB0cjxMb2NhbGVJQ1U+IGNyZWF0ZShjb25zdCBjaGFyKiBsb2NhbGVTdHJpbmcpOwor
ICAgIGV4cGxpY2l0IExvY2FsZUlDVShjb25zdCBjaGFyKik7CiAgICAgdmlydHVhbCB+TG9jYWxl
SUNVKCk7CiAKICNpZiBFTkFCTEUoREFURV9BTkRfVElNRV9JTlBVVF9UWVBFUykKQEAgLTY1LDcg
KzY0LDYgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTG9jYWxl
SUNVKGNvbnN0IGNoYXIqKTsKICAgICBTdHJpbmcgZGVjaW1hbFN5bWJvbChVTnVtYmVyRm9ybWF0
U3ltYm9sKTsKICAgICBTdHJpbmcgZGVjaW1hbFRleHRBdHRyaWJ1dGUoVU51bWJlckZvcm1hdFRl
eHRBdHRyaWJ1dGUpOwogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplTG9jYWxlRGF0YSgpIG92
ZXJyaWRlOwpAQCAtNzcsNyArNzUsNyBAQCBwcml2YXRlOgogICAgIFVEYXRlRm9ybWF0KiBvcGVu
RGF0ZUZvcm1hdChVRGF0ZUZvcm1hdFN0eWxlIHRpbWVTdHlsZSwgVURhdGVGb3JtYXRTdHlsZSBk
YXRlU3R5bGUpIGNvbnN0OwogCiAjaWYgRU5BQkxFKERBVEVfQU5EX1RJTUVfSU5QVVRfVFlQRVMp
Ci0gICAgUGFzc093blB0cjxWZWN0b3I8U3RyaW5nPiA+IGNyZWF0ZUxhYmVsVmVjdG9yKGNvbnN0
IFVEYXRlRm9ybWF0KiwgVURhdGVGb3JtYXRTeW1ib2xUeXBlLCBpbnQzMl90IHN0YXJ0SW5kZXgs
IGludDMyX3Qgc2l6ZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+ID4gY3Jl
YXRlTGFiZWxWZWN0b3IoY29uc3QgVURhdGVGb3JtYXQqLCBVRGF0ZUZvcm1hdFN5bWJvbFR5cGUs
IGludDMyX3Qgc3RhcnRJbmRleCwgaW50MzJfdCBzaXplKTsKICAgICB2b2lkIGluaXRpYWxpemVE
YXRlVGltZUZvcm1hdCgpOwogI2VuZGlmCiAKQEAgLTg4LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1fZGlkQ3JlYXRlU2hvcnREYXRlRm9ybWF0OwogCiAjaWYgRU5BQkxFKERBVEVfQU5E
X1RJTUVfSU5QVVRfVFlQRVMpCi0gICAgT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gbV9tb250aExh
YmVsczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4gPiBtX21vbnRoTGFiZWxz
OwogICAgIFN0cmluZyBtX2RhdGVGb3JtYXQ7CiAgICAgU3RyaW5nIG1fbW9udGhGb3JtYXQ7CiAg
ICAgU3RyaW5nIG1fc2hvcnRNb250aEZvcm1hdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L0xvY2FsZU5vbmUuY3BwCmluZGV4IDk2MTgzM2U0MmRkODA3ZGI1NmMwYTkxYmQ5YjQ2ZWJj
MmVjZTllYzguLmVhMThhN2I2ODVhMjk5ZGFhZjgzNDE4NWYzMDNlMDM3Yjc2M2FkMzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNwcApAQCAtMjYsNyArMjYs
NiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTG9jYWxlLmgiCiAj
aW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Niw5ICs1NSw5IEBAIHByaXZhdGU6CiAjZW5kaWYK
IH07CiAKLVBhc3NPd25QdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJp
bmcmKQorc3RkOjp1bmlxdWVfcHRyPExvY2FsZT4gTG9jYWxlOjpjcmVhdGUoY29uc3QgQXRvbWlj
U3RyaW5nJikKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IExvY2FsZU5vbmUoKSk7CisgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TG9jYWxlTm9uZT4oKTsKIH0KIAogTG9jYWxlTm9uZTo6
fkxvY2FsZU5vbmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Q
bGF0Zm9ybUxvY2FsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxv
Y2FsZS5oCmluZGV4IGVmODUyMmM4OTU0Mjc0NTRkM2RiMWJiMDNiMzVjNDAyNzRkNmQ5OWUuLmMy
ZDI1M2RjZDU5NDcxNjkzNWNkMjQ0ZTcxYTdmMmNlZmNkNzMwOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3JtTG9jYWxlLmgKQEAgLTI4LDcgKzI4LDYgQEAKIAog
I2luY2x1ZGUgIkRhdGVDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKLSNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MSw4ICs0MCw4IEBAIGNsYXNzIExvY2FsZSB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTG9jYWxlKTsKIAogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzT3duUHRyPExvY2FsZT4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRp
Zmllcik7Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TG9jYWxlPiBjcmVhdGVEZWZhdWx0KCk7Cisg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJp
bmcmIGxvY2FsZUlkZW50aWZpZXIpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxl
PiBjcmVhdGVEZWZhdWx0KCk7CiAKICAgICAvLyBDb252ZXJ0cyB0aGUgc3BlY2lmaWVkIG51bWJl
ciBzdHJpbmcgdG8gYW5vdGhlciBudW1iZXIgc3RyaW5nIGxvY2FsaXplZAogICAgIC8vIGZvciB0
aGlzIExvY2FsZSBsb2NhbGUuIFRoZSBpbnB1dCBzdHJpbmcgbXVzdCBjb25mb3JtIHRvIEhUTUwK
QEAgLTE1MCw3ICsxNDksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNMb2NhbGVEYXRhOwog
fTsKIAotaW5saW5lIFBhc3NPd25QdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZURlZmF1bHQoKQor
aW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlRGVmYXVsdCgpCiB7
CiAgICAgcmV0dXJuIExvY2FsZTo6Y3JlYXRlKGRlZmF1bHRMYW5ndWFnZSgpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcAppbmRleCA0
NjczYmUwMGY1NGFlOGNlYzllZTA5ZDYwMzJhY2Y2ZmNjZTEzZmMwLi43YTkxMDAyZmNhNTdiMGQw
YmVlODJkYjFjN2E2NTFjYmFiOGMyMWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAi
VGV4dENvZGVjTGF0aW4xLmgiCiAKICNpbmNsdWRlICJUZXh0Q29kZWNBU0NJSUZhc3RQYXRoLmgi
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRDb2RlY1VURjE2LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENv
ZGVjVVRGMTYuY3BwCmluZGV4IDE5NWFiYTQ4Y2E1YTdhODQ3ODAwZTZjMWQ1MWE2NjM3MWE3YzRh
YWIuLjZlNWQ0NDE1M2YwMGQ3YjRhMDQyZGZmOWYxNjY2NDE2MjNlMjc4Y2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYuY3BwCkBAIC0yNiw3ICsy
Niw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGV4dENvZGVjVVRGMTYuaCIK
IAotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0RW5jb2RpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5j
b2RpbmcuY3BwCmluZGV4IGRiODJiZDc1OTBmODU3ZjdjNzkzMjE4ZmVkNDVjZGZiMDI5ODE5NDIu
LjA1ZGE4NGJmOTMxM2Q1ZDQwMDcwZjJhYjQ2N2NkZjc2MGE3Zjg2MjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5jcHAKQEAgLTMxLDcgKzMxLDYgQEAK
ICNpbmNsdWRlICJUZXh0Q29kZWMuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmdSZWdpc3RyeS5o
IgogI2luY2x1ZGUgPHVuaWNvZGUvdW5vcm0uaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5oCmluZGV4IDUzYTZkYjdhOThlODFmZjdhZTJiZDMz
Y2U1YTJmZGEzMTkzZTAxYmYuLjg2NTFjNDNlYzRmYTVjYjViMGY5MjU4NDUwMTQ5NWNmZWY5NjQ2
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1h
Yy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5oCkBA
IC00Nyw3ICs0Nyw3IEBAIGNsYXNzIERhdGVDb21wb25lbnRzOwogCiBjbGFzcyBMb2NhbGVNYWMg
OiBwdWJsaWMgTG9jYWxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxMb2NhbGVN
YWM+IGNyZWF0ZShOU0xvY2FsZSopOworICAgIGV4cGxpY2l0IExvY2FsZU1hYyhOU0xvY2FsZSop
OwogICAgIH5Mb2NhbGVNYWMoKTsKIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTcwLDcgKzcwLDYg
QEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTG9jYWxlTWFjKE5T
TG9jYWxlKik7CiAgICAgUmV0YWluUHRyPE5TRGF0ZUZvcm1hdHRlcj4gc2hvcnREYXRlRm9ybWF0
dGVyKCk7CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVMb2NhbGVEYXRhKCkgb3ZlcnJpZGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbQppbmRl
eCBjMzcyNGM5ZWZkYzljM2M4ZWRiMTRkZTVjNmJhZDEyNzJjNGM2MzU2Li42NDIzZWUzMzhkNjVh
NTViZDU1YTVkOGZhZDhhY2ZmZTlmOTJhMDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiTGFu
Z3VhZ2UuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL0Rh
dGVNYXRoLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC02Nyw5
ICs2Niw5IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNMb2NhbGU+IGRldGVybWluZUxvY2FsZShjb25z
dCBTdHJpbmcmIGxvY2FsZSkKICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0xvY2FsZSBhbGxvY10g
aW5pdFdpdGhMb2NhbGVJZGVudGlmaWVyOmxvY2FsZV0pOwogfQogCi1QYXNzT3duUHRyPExvY2Fs
ZT4gTG9jYWxlOjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUpCitzdGQ6OnVuaXF1
ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSkK
IHsKLSAgICByZXR1cm4gTG9jYWxlTWFjOjpjcmVhdGUoZGV0ZXJtaW5lTG9jYWxlKGxvY2FsZS5z
dHJpbmcoKSkuZ2V0KCkpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExvY2FsZU1hYz4o
ZGV0ZXJtaW5lTG9jYWxlKGxvY2FsZS5zdHJpbmcoKSkuZ2V0KCkpOwogfQogCiBzdGF0aWMgUmV0
YWluUHRyPE5TRGF0ZUZvcm1hdHRlcj4gY3JlYXRlRGF0ZVRpbWVGb3JtYXR0ZXIoTlNMb2NhbGUq
IGxvY2FsZSwgTlNDYWxlbmRhciogY2FsZW5kYXIsIE5TRGF0ZUZvcm1hdHRlclN0eWxlIGRhdGVT
dHlsZSwgTlNEYXRlRm9ybWF0dGVyU3R5bGUgdGltZVN0eWxlKQpAQCAtMTA0LDExICsxMDMsNiBA
QCBMb2NhbGVNYWM6On5Mb2NhbGVNYWMoKQogewogfQogCi1QYXNzT3duUHRyPExvY2FsZU1hYz4g
TG9jYWxlTWFjOjpjcmVhdGUoTlNMb2NhbGUqIGxvY2FsZSkKLXsKLSAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IExvY2FsZU1hYyhsb2NhbGUpKTsKLX0KLQogUmV0YWluUHRyPE5TRGF0ZUZvcm1hdHRl
cj4gTG9jYWxlTWFjOjpzaG9ydERhdGVGb3JtYXR0ZXIoKQogewogICAgIHJldHVybiBjcmVhdGVE
YXRlVGltZUZvcm1hdHRlcihtX2xvY2FsZS5nZXQoKSwgbV9ncmVnb3JpYW5DYWxlbmRhci5nZXQo
KSwgTlNEYXRlRm9ybWF0dGVyU2hvcnRTdHlsZSwgTlNEYXRlRm9ybWF0dGVyTm9TdHlsZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcApp
bmRleCBhMTZlMzA3YmM0NmYzY2E2MTk2ZDdhMGVmMDkwYmI1YmFkMGQ1ZWY5Li40N2E2YTk2OTE5
NzkzZWRkNTI0YzQ4ZTg1ZjA1Njk4ZGExNmE0YmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvbWFjL1RleHRDb2RlY01hYy5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNp
bmNsdWRlICJDaGFyc2V0RGF0YS5oIgogI2luY2x1ZGUgIlRocmVhZEdsb2JhbERhdGEuaCIKICNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC93aW4vTG9jYWxlV2luLmNwcAppbmRleCBhYjAzNmFhMGQxMDBlMDFhNDA5YzExYzcxYWEx
ZjBkNzk0ZjQ1NDAzLi4zY2U5OTNjMDU2Mzc3NjQ5ZTU0YzdlY2U4ZTYyMGUxYTFhMWE1ZmJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAKQEAg
LTQwLDggKzQwLDYgQEAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3
dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAg
LTE0Niw3ICsxNDQsNyBAQCBzdGF0aWMgTENJRCBMQ0lERnJvbUxvY2FsZShjb25zdCBBdG9taWNT
dHJpbmcmIGxvY2FsZSkKICAgICByZXR1cm4gbGNpZDsKIH0KIAotUGFzc093blB0cjxMb2NhbGU+
IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQorc3RkOjp1bmlxdWVf
cHRyPExvY2FsZT4gTG9jYWxlOjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUpCiB7
CiAgICAgcmV0dXJuIExvY2FsZVdpbjo6Y3JlYXRlKExDSURGcm9tTG9jYWxlKGxvY2FsZSkpOwog
fQpAQCAtMTU3LDkgKzE1NSw5IEBAIGlubGluZSBMb2NhbGVXaW46OkxvY2FsZVdpbihMQ0lEIGxj
aWQpCiB7CiB9CiAKLVBhc3NPd25QdHI8TG9jYWxlV2luPiBMb2NhbGVXaW46OmNyZWF0ZShMQ0lE
IGxjaWQpCitzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlV2luPiBMb2NhbGVXaW46OmNyZWF0ZShMQ0lE
IGxjaWQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBMb2NhbGVXaW4obGNpZCkpOworICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExvY2FsZVdpbj4obGNpZCk7CiB9CiAKIExvY2FsZVdp
bjo6fkxvY2FsZVdpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L3dpbi9Mb2NhbGVXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2Fs
ZVdpbi5oCmluZGV4IGVkY2VlZmE4YWMzYzY1OWVmYzU2NzFmMWYzZjlkZTI0YTVlYjVkMzAuLmI4
ZGVmN2UxODZiNTIyNGNkZTNjYzAwZTk1ZTBkMzgyZDNjNzZiNWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5oCkBAIC00NCw3ICs0NCw3IEBAIHN0cnVj
dCBEYXRlRm9ybWF0VG9rZW47CiAKIGNsYXNzIExvY2FsZVdpbiA6IHB1YmxpYyBMb2NhbGUgewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPExvY2FsZVdpbj4gY3JlYXRlKExDSUQpOwor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlV2luPiBjcmVhdGUoTENJRCk7CiAgICAg
fkxvY2FsZVdpbigpOwogI2lmIEVOQUJMRShEQVRFX0FORF9USU1FX0lOUFVUX1RZUEVTKQogICAg
IHZpcnR1YWwgU3RyaW5nIGRhdGVGb3JtYXQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL1RleHRDb2RlY1dpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwCmluZGV4IGE1YmNhNzBiNDgy
NzIzMWZiNzIyMjBlNmExMzNjYTI2MGZlYmRmM2UuLmEzYTY1YWQ3NjAzNDBjNjUyZTNlMmJkZmZk
ODAyNDNjMTQ5NTZiZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
d2luL1RleHRDb2RlY1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93
aW4vVGV4dENvZGVjV2luLmNwcApAQCAtMTI5LDkgKzEyOSw5IEBAIHN0YXRpYyBVSU5UIGdldENv
ZGVQYWdlKGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgcmV0dXJuIGkgPT0gY2hhcnNldHMuZW5kKCkg
PyBDUF9BQ1AgOiBpLT52YWx1ZS5tX2NvZGVQYWdlOwogfQogCi1zdGF0aWMgUGFzc093blB0cjxU
ZXh0Q29kZWM+IG5ld1RleHRDb2RlY1dpbihjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBj
b25zdCB2b2lkKikKK3N0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VGV4dENvZGVjPiBuZXdUZXh0Q29k
ZWNXaW4oY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywgY29uc3Qgdm9pZCopCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0Q29kZWNXaW4oZ2V0Q29kZVBhZ2UoZW5jb2RpbmcubmFt
ZSgpKSkpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY1dpbj4oZ2V0Q29k
ZVBhZ2UoZW5jb2RpbmcubmFtZSgpKSk7CiB9CiAKIFRleHRDb2RlY1dpbjo6VGV4dENvZGVjV2lu
KFVJTlQgY29kZVBhZ2UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243195</attachid>
            <date>2014-12-12 05:58:04 -0800</date>
            <delta_ts>2014-12-13 00:01:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-139395-20141212225848.patch</filename>
            <type>text/plain</type>
            <size>21038</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3MjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTM4MWRjM2E0OTYyMjUy
ZDZjM2MzOTAwNzY3ZjNmN2JkNmJmZDEwNi4uM2VlOTYyNWU4M2MxMWEwNzVhOWQ1MjM4MDhjYjA2
YzA2NTg0ZDI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE0LTEyLTEyICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgTW92ZSBXZWJD
b3JlL3BsYXRmb3JtL3RleHQgdG8gc3RkOjp1bmlxdWVfcHRyIAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5Mzk1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXMgYSBzdGVwIHRvIHVzZSBzdGQ6OnVuaXF1
ZV9wdHI8PiwgdGhpcyBwYXRjaCByZXBsYWNlcyBPd25QdHJ8UGFzc093blB0ciB3aXRoCisgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjw+IHwgc3RkOjptYWtlX3VuaXF1ZTw+LgorCisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9MaW5lQnJlYWtJdGVyYXRv
clBvb2xJQ1UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVCcmVha0l0ZXJhdG9yUG9vbDo6TGlu
ZUJyZWFrSXRlcmF0b3JQb29sKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVCcmVha0l0ZXJhdG9y
UG9vbDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xvY2FsZUlD
VS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpMb2NhbGVJQ1U6OmNyZWF0ZUxhYmVsVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUZhbGxiYWNrTW9udGhMYWJlbHMpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmFsbGJh
Y2tBTVBNTGFiZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZUlDVTo6aW5pdGlhbGl6ZURh
dGVUaW1lRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZUlDVTo6c2hvcnRNb250aExh
YmVscyk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVJQ1U6OmNyZWF0ZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpMb2NhbGVJQ1U6OnN0YW5kQWxvbmVNb250aExhYmVscyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVJQ1U6OnNob3J0U3RhbmRBbG9uZU1vbnRoTGFi
ZWxzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
b2NhbGU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5o
OgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxlOjpjcmVhdGVEZWZhdWx0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4
dC9UZXh0Q29kZWNVVEYxNi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2Rp
bmcuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Okxv
Y2FsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZU1hYzo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVXaW46OmNyZWF0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4
dC93aW4vVGV4dENvZGVjV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5ld1RleHRDb2RlY1dp
bik6CisKIDIwMTQtMTItMTIgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4K
IAogICAgICAgICBGaXggdGhlICFFTkFCTEUoU1ZHX0ZPTlRTKSBidWlsZCBhZnRlciByMTc3MDc4
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDk0YTQzODZlOGJhYTk3YzFiZWIxZDg0ZGQ0MTE4MjA1
ZWUzMDdiN2IuLjc3ZGE4NWJjMTk2OWRkMzZlYjEzZjBjMWRjODQ2YjU0MWFkZTgwMzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCkBAIC0xNjc3LDcgKzE2NzcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9kaWREaXNwYXRjaFZpZXdwb3J0UHJvcGVydGllc0NoYW5nZWQ7CiAjZW5kaWYKIAotICAgIHR5
cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcsIE93blB0cjxMb2NhbGU+PiBMb2NhbGVJZGVudGlm
aWVyVG9Mb2NhbGVNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZywgc3RkOjp1
bmlxdWVfcHRyPExvY2FsZT4+IExvY2FsZUlkZW50aWZpZXJUb0xvY2FsZU1hcDsKICAgICBMb2Nh
bGVJZGVudGlmaWVyVG9Mb2NhbGVNYXAgbV9sb2NhbGVDYWNoZTsKIAogI2lmIEVOQUJMRShURU1Q
TEFURV9FTEVNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9M
aW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
TGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKaW5kZXggNjc0YTA2ZDM3Y2NkOTk3M2QxNDZkYzhl
NGYyZTU0YjcwOWE0NWQxMS4uZjhiNThkNmYzNjM4NzgxOTQxMjI3NDNkMDg2YmY5YjI0NDE3MDlj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9MaW5lQnJlYWtJdGVy
YXRvclBvb2xJQ1UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xpbmVCcmVh
a0l0ZXJhdG9yUG9vbElDVS5oCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSA8dW5pY29kZS91
YnJrLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNw
ZWNpZmljLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtNDIsMTQgKzQxLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIExpbmVCcmVha0l0ZXJhdG9yUG9vbCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoTGluZUJyZWFrSXRlcmF0b3JQb29sKTsKIHB1YmxpYzoKKyAgICBMaW5lQnJlYWtJdGVyYXRv
clBvb2woKSB7IH0gCisKICAgICBzdGF0aWMgTGluZUJyZWFrSXRlcmF0b3JQb29sJiBzaGFyZWRQ
b29sKCkKICAgICB7CiAgICAgICAgIHN0YXRpYyBXVEY6OlRocmVhZFNwZWNpZmljPExpbmVCcmVh
a0l0ZXJhdG9yUG9vbD4qIHBvb2wgPSBuZXcgV1RGOjpUaHJlYWRTcGVjaWZpYzxMaW5lQnJlYWtJ
dGVyYXRvclBvb2w+OwogICAgICAgICByZXR1cm4gKipwb29sOwogICAgIH0KIAotICAgIHN0YXRp
YyBQYXNzT3duUHRyPExpbmVCcmVha0l0ZXJhdG9yUG9vbD4gY3JlYXRlKCkgeyByZXR1cm4gYWRv
cHRQdHIobmV3IExpbmVCcmVha0l0ZXJhdG9yUG9vbCk7IH0KLQogICAgIHN0YXRpYyBTdHJpbmcg
bWFrZUxvY2FsZVdpdGhCcmVha0tleXdvcmQoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUsIExp
bmVCcmVha0l0ZXJhdG9yTW9kZSBtb2RlKQogICAgIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBs
b2NhbGVXaXRoS2V5d29yZDsKQEAgLTExMyw4ICsxMTIsNiBAQCBwdWJsaWM6CiAgICAgfQogCiBw
cml2YXRlOgotICAgIExpbmVCcmVha0l0ZXJhdG9yUG9vbCgpIHsgfQotCiAgICAgc3RhdGljIGNv
bnN0IHNpemVfdCBjYXBhY2l0eSA9IDQ7CiAKICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxBdG9taWNT
dHJpbmcsIFRleHRCcmVha0l0ZXJhdG9yKj4gRW50cnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0xvY2FsZUlDVS5jcHAKaW5kZXggYTFlNjU5ZTcwNTZkNTcxZDU5MjhmMDg0NDU3NWVh
NzY3NWI0MTRlMi4uYTNhMjgxODc4MjE5YjRkYjkxNmNlYTZiNGZjY2U1NGNhZjNlYjUyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcApAQCAtMzYsNyArMzYs
NiBAQAogI2luY2x1ZGUgPHVuaWNvZGUvdWRhdHBnLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91bG9j
Lmg+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBpY3U7CkBAIC00NCw5ICs0Myw5IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgbG9jYWxlKQorc3RkOjp1bmlxdWVfcHRyPExvY2FsZT4gTG9jYWxlOjpjcmVh
dGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUpCiB7Ci0gICAgcmV0dXJuIExvY2FsZUlDVTo6
Y3JlYXRlKGxvY2FsZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxMb2NhbGVJQ1U+KGxvY2FsZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIH0K
IAogTG9jYWxlSUNVOjpMb2NhbGVJQ1UoY29uc3QgY2hhciogbG9jYWxlKQpAQCAtNzMsMTEgKzcy
LDYgQEAgTG9jYWxlSUNVOjp+TG9jYWxlSUNVKCkKICNlbmRpZgogfQogCi1QYXNzT3duUHRyPExv
Y2FsZUlDVT4gTG9jYWxlSUNVOjpjcmVhdGUoY29uc3QgY2hhciogbG9jYWxlU3RyaW5nKQotewot
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgTG9jYWxlSUNVKGxvY2FsZVN0cmluZykpOwotfQotCiBT
dHJpbmcgTG9jYWxlSUNVOjpkZWNpbWFsU3ltYm9sKFVOdW1iZXJGb3JtYXRTeW1ib2wgc3ltYm9s
KQogewogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwpAQCAtMTcwLDM5ICsx
NjQsMzkgQEAgc3RhdGljIFN0cmluZyBnZXREYXRlRm9ybWF0UGF0dGVybihjb25zdCBVRGF0ZUZv
cm1hdCogZGF0ZUZvcm1hdCkKICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChidWZmZXIpOwogfQog
Ci1QYXNzT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gTG9jYWxlSUNVOjpjcmVhdGVMYWJlbFZlY3Rv
cihjb25zdCBVRGF0ZUZvcm1hdCogZGF0ZUZvcm1hdCwgVURhdGVGb3JtYXRTeW1ib2xUeXBlIHR5
cGUsIGludDMyX3Qgc3RhcnRJbmRleCwgaW50MzJfdCBzaXplKQorc3RkOjp1bmlxdWVfcHRyPFZl
Y3RvcjxTdHJpbmc+PiBMb2NhbGVJQ1U6OmNyZWF0ZUxhYmVsVmVjdG9yKGNvbnN0IFVEYXRlRm9y
bWF0KiBkYXRlRm9ybWF0LCBVRGF0ZUZvcm1hdFN5bWJvbFR5cGUgdHlwZSwgaW50MzJfdCBzdGFy
dEluZGV4LCBpbnQzMl90IHNpemUpCiB7CiAgICAgaWYgKCFkYXRlRm9ybWF0KQotICAgICAgICBy
ZXR1cm4gUGFzc093blB0cjxWZWN0b3I8U3RyaW5nPiA+KCk7CisgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgIGlmICh1ZGF0X2NvdW50U3ltYm9s
cyhkYXRlRm9ybWF0LCB0eXBlKSAhPSBzdGFydEluZGV4ICsgc2l6ZSkKLSAgICAgICAgcmV0dXJu
IFBhc3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPigpOworICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKIAotICAgIE93blB0cjxWZWN0b3I8U3RyaW5nPiA+
IGxhYmVscyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8U3RyaW5nPigpKTsKKyAgICBhdXRvIGxhYmVs
cyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAgbGFiZWxzLT5yZXNl
cnZlQ2FwYWNpdHkoc2l6ZSk7CiAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgc2l6ZTsgKytp
KSB7CiAgICAgICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgICAgICBp
bnQzMl90IGxlbmd0aCA9IHVkYXRfZ2V0U3ltYm9scyhkYXRlRm9ybWF0LCB0eXBlLCBzdGFydElu
ZGV4ICsgaSwgMCwgMCwgJnN0YXR1cyk7CiAgICAgICAgIGlmIChzdGF0dXMgIT0gVV9CVUZGRVJf
T1ZFUkZMT1dfRVJST1IpCi0gICAgICAgICAgICByZXR1cm4gUGFzc093blB0cjxWZWN0b3I8U3Ry
aW5nPiA+KCk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3Ry
aW5nPj4oKTsKICAgICAgICAgVmVjdG9yPFVDaGFyPiBidWZmZXIobGVuZ3RoKTsKICAgICAgICAg
c3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgICAgICB1ZGF0X2dldFN5bWJvbHMoZGF0ZUZvcm1h
dCwgdHlwZSwgc3RhcnRJbmRleCArIGksIGJ1ZmZlci5kYXRhKCksIGxlbmd0aCwgJnN0YXR1cyk7
CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgICAgIHJldHVybiBQYXNz
T3duUHRyPFZlY3RvcjxTdHJpbmc+ID4oKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgICAgICBsYWJlbHMtPmFwcGVuZChTdHJpbmc6
OmFkb3B0KGJ1ZmZlcikpOwogICAgIH0KLSAgICByZXR1cm4gbGFiZWxzLnJlbGVhc2UoKTsKKyAg
ICByZXR1cm4gV1RGOjptb3ZlKGxhYmVscyk7CiB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShEQVRF
X0FORF9USU1FX0lOUFVUX1RZUEVTKQotc3RhdGljIFBhc3NPd25QdHI8VmVjdG9yPFN0cmluZz4g
PiBjcmVhdGVGYWxsYmFja01vbnRoTGFiZWxzKCkKK3N0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VmVj
dG9yPFN0cmluZz4+IGNyZWF0ZUZhbGxiYWNrTW9udGhMYWJlbHMoKQogewotICAgIE93blB0cjxW
ZWN0b3I8U3RyaW5nPiA+IGxhYmVscyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8U3RyaW5nPigpKTsK
KyAgICBhdXRvIGxhYmVscyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAg
ICAgbGFiZWxzLT5yZXNlcnZlQ2FwYWNpdHkoV1RGX0FSUkFZX0xFTkdUSChXVEY6Om1vbnRoRnVs
bE5hbWUpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChX
VEY6Om1vbnRoRnVsbE5hbWUpOyArK2kpCiAgICAgICAgIGxhYmVscy0+YXBwZW5kKFdURjo6bW9u
dGhGdWxsTmFtZVtpXSk7Ci0gICAgcmV0dXJuIGxhYmVscy5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IFdURjo6bW92ZShsYWJlbHMpOwogfQogCiBjb25zdCBWZWN0b3I8U3RyaW5nPiYgTG9jYWxlSUNV
Ojptb250aExhYmVscygpCkBAIC0yMjAsMTMgKzIxNCwxMyBAQCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgTG9jYWxlSUNVOjptb250aExhYmVscygpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShEQVRFX0FO
RF9USU1FX0lOUFVUX1RZUEVTKQotc3RhdGljIFBhc3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPiBj
cmVhdGVGYWxsYmFja0FNUE1MYWJlbHMoKQorc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8
U3RyaW5nPj4gY3JlYXRlRmFsbGJhY2tBTVBNTGFiZWxzKCkKIHsKLSAgICBPd25QdHI8VmVjdG9y
PFN0cmluZz4gPiBsYWJlbHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFN0cmluZz4oKSk7CisgICAg
YXV0byBsYWJlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgIGxh
YmVscy0+cmVzZXJ2ZUNhcGFjaXR5KDIpOwogICAgIGxhYmVscy0+YXBwZW5kKCJBTSIpOwogICAg
IGxhYmVscy0+YXBwZW5kKCJQTSIpOwotICAgIHJldHVybiBsYWJlbHMucmVsZWFzZSgpOworICAg
IHJldHVybiBXVEY6Om1vdmUobGFiZWxzKTsKIH0KIAogdm9pZCBMb2NhbGVJQ1U6OmluaXRpYWxp
emVEYXRlVGltZUZvcm1hdCgpCkBAIC0yNTEsNyArMjQ1LDcgQEAgdm9pZCBMb2NhbGVJQ1U6Omlu
aXRpYWxpemVEYXRlVGltZUZvcm1hdCgpCiAgICAgbV9kYXRlVGltZUZvcm1hdFdpdGhvdXRTZWNv
bmRzID0gZ2V0RGF0ZUZvcm1hdFBhdHRlcm4oZGF0ZVRpbWVGb3JtYXRXaXRob3V0U2Vjb25kcyk7
CiAgICAgdWRhdF9jbG9zZShkYXRlVGltZUZvcm1hdFdpdGhvdXRTZWNvbmRzKTsKIAotICAgIE93
blB0cjxWZWN0b3I8U3RyaW5nPiA+IHRpbWVBTVBNTGFiZWxzID0gY3JlYXRlTGFiZWxWZWN0b3Io
bV9tZWRpdW1UaW1lRm9ybWF0LCBVREFUX0FNX1BNUywgVUNBTF9BTSwgMik7CisgICAgYXV0byB0
aW1lQU1QTUxhYmVscyA9IGNyZWF0ZUxhYmVsVmVjdG9yKG1fbWVkaXVtVGltZUZvcm1hdCwgVURB
VF9BTV9QTVMsIFVDQUxfQU0sIDIpOwogICAgIGlmICghdGltZUFNUE1MYWJlbHMpCiAgICAgICAg
IHRpbWVBTVBNTGFiZWxzID0gY3JlYXRlRmFsbGJhY2tBTVBNTGFiZWxzKCk7CiAgICAgbV90aW1l
QU1QTUxhYmVscyA9ICp0aW1lQU1QTUxhYmVsczsKQEAgLTMzNiw3ICszMzAsNyBAQCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgTG9jYWxlSUNVOjpzaG9ydE1vbnRoTGFiZWxzKCkKICAgICBpZiAoIW1f
c2hvcnRNb250aExhYmVscy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBtX3Nob3J0TW9udGhM
YWJlbHM7CiAgICAgaWYgKGluaXRpYWxpemVTaG9ydERhdGVGb3JtYXQoKSkgewotICAgICAgICBp
ZiAoT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gbGFiZWxzID0gY3JlYXRlTGFiZWxWZWN0b3IobV9z
aG9ydERhdGVGb3JtYXQsIFVEQVRfU0hPUlRfTU9OVEhTLCBVQ0FMX0pBTlVBUlksIDEyKSkgewor
ICAgICAgICBpZiAoYXV0byBsYWJlbHMgPSBjcmVhdGVMYWJlbFZlY3RvcihtX3Nob3J0RGF0ZUZv
cm1hdCwgVURBVF9TSE9SVF9NT05USFMsIFVDQUxfSkFOVUFSWSwgMTIpKSB7CiAgICAgICAgICAg
ICBtX3Nob3J0TW9udGhMYWJlbHMgPSAqbGFiZWxzOwogICAgICAgICAgICAgcmV0dXJuIG1fc2hv
cnRNb250aExhYmVsczsKICAgICAgICAgfQpAQCAtMzUyLDcgKzM0Niw3IEBAIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBMb2NhbGVJQ1U6OnN0YW5kQWxvbmVNb250aExhYmVscygpCiAgICAgaWYgKCFt
X3N0YW5kQWxvbmVNb250aExhYmVscy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBtX3N0YW5k
QWxvbmVNb250aExhYmVsczsKICAgICBpZiAoaW5pdGlhbGl6ZVNob3J0RGF0ZUZvcm1hdCgpKSB7
Ci0gICAgICAgIGlmIChPd25QdHI8VmVjdG9yPFN0cmluZz4gPiBsYWJlbHMgPSBjcmVhdGVMYWJl
bFZlY3RvcihtX3Nob3J0RGF0ZUZvcm1hdCwgVURBVF9TVEFOREFMT05FX01PTlRIUywgVUNBTF9K
QU5VQVJZLCAxMikpIHsKKyAgICAgICAgaWYgKGF1dG8gbGFiZWxzID0gY3JlYXRlTGFiZWxWZWN0
b3IobV9zaG9ydERhdGVGb3JtYXQsIFVEQVRfU1RBTkRBTE9ORV9NT05USFMsIFVDQUxfSkFOVUFS
WSwgMTIpKSB7CiAgICAgICAgICAgICBtX3N0YW5kQWxvbmVNb250aExhYmVscyA9ICpsYWJlbHM7
CiAgICAgICAgICAgICByZXR1cm4gbV9zdGFuZEFsb25lTW9udGhMYWJlbHM7CiAgICAgICAgIH0K
QEAgLTM2Niw3ICszNjAsNyBAQCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgTG9jYWxlSUNVOjpzaG9y
dFN0YW5kQWxvbmVNb250aExhYmVscygpCiAgICAgaWYgKCFtX3Nob3J0U3RhbmRBbG9uZU1vbnRo
TGFiZWxzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG1fc2hvcnRTdGFuZEFsb25lTW9udGhM
YWJlbHM7CiAgICAgaWYgKGluaXRpYWxpemVTaG9ydERhdGVGb3JtYXQoKSkgewotICAgICAgICBp
ZiAoT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gbGFiZWxzID0gY3JlYXRlTGFiZWxWZWN0b3IobV9z
aG9ydERhdGVGb3JtYXQsIFVEQVRfU1RBTkRBTE9ORV9TSE9SVF9NT05USFMsIFVDQUxfSkFOVUFS
WSwgMTIpKSB7CisgICAgICAgIGlmIChhdXRvIGxhYmVscyA9IGNyZWF0ZUxhYmVsVmVjdG9yKG1f
c2hvcnREYXRlRm9ybWF0LCBVREFUX1NUQU5EQUxPTkVfU0hPUlRfTU9OVEhTLCBVQ0FMX0pBTlVB
UlksIDEyKSkgewogICAgICAgICAgICAgbV9zaG9ydFN0YW5kQWxvbmVNb250aExhYmVscyA9ICps
YWJlbHM7CiAgICAgICAgICAgICByZXR1cm4gbV9zaG9ydFN0YW5kQWxvbmVNb250aExhYmVsczsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2Nh
bGVJQ1UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmgKaW5kZXgg
MTUxOTcxMGQ5ZWJmYjM4MDA1NTVkZjA4NDI0YWZkMWQwMjRkYTY1MC4uNWVjYzc1YzJmYWY2YWFj
YTFiNDkxYTRmYTg5NWU3ZTE2M2ViMWJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9Mb2NhbGVJQ1UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L0xvY2FsZUlDVS5oCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSA8dW5pY29kZS91ZGF0Lmg+
CiAjaW5jbHVkZSA8dW5pY29kZS91bnVtLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00Niw3ICs0NSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIC8vIGFuZCBMb2NhbGl6ZWROdW1iZXJJQ1VUZXN0LmNwcC4KIGNsYXNzIExv
Y2FsZUlDVSA6IHB1YmxpYyBMb2NhbGUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PExvY2FsZUlDVT4gY3JlYXRlKGNvbnN0IGNoYXIqIGxvY2FsZVN0cmluZyk7CisgICAgZXhwbGlj
aXQgTG9jYWxlSUNVKGNvbnN0IGNoYXIqKTsKICAgICB2aXJ0dWFsIH5Mb2NhbGVJQ1UoKTsKIAog
I2lmIEVOQUJMRShEQVRFX0FORF9USU1FX0lOUFVUX1RZUEVTKQpAQCAtNjUsNyArNjQsNiBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBMb2NhbGVJQ1UoY29uc3Qg
Y2hhciopOwogICAgIFN0cmluZyBkZWNpbWFsU3ltYm9sKFVOdW1iZXJGb3JtYXRTeW1ib2wpOwog
ICAgIFN0cmluZyBkZWNpbWFsVGV4dEF0dHJpYnV0ZShVTnVtYmVyRm9ybWF0VGV4dEF0dHJpYnV0
ZSk7CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVMb2NhbGVEYXRhKCkgb3ZlcnJpZGU7CkBA
IC03Nyw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgVURhdGVGb3JtYXQqIG9wZW5EYXRlRm9ybWF0
KFVEYXRlRm9ybWF0U3R5bGUgdGltZVN0eWxlLCBVRGF0ZUZvcm1hdFN0eWxlIGRhdGVTdHlsZSkg
Y29uc3Q7CiAKICNpZiBFTkFCTEUoREFURV9BTkRfVElNRV9JTlBVVF9UWVBFUykKLSAgICBQYXNz
T3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gY3JlYXRlTGFiZWxWZWN0b3IoY29uc3QgVURhdGVGb3Jt
YXQqLCBVRGF0ZUZvcm1hdFN5bWJvbFR5cGUsIGludDMyX3Qgc3RhcnRJbmRleCwgaW50MzJfdCBz
aXplKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IGNyZWF0ZUxhYmVsVmVj
dG9yKGNvbnN0IFVEYXRlRm9ybWF0KiwgVURhdGVGb3JtYXRTeW1ib2xUeXBlLCBpbnQzMl90IHN0
YXJ0SW5kZXgsIGludDMyX3Qgc2l6ZSk7CiAgICAgdm9pZCBpbml0aWFsaXplRGF0ZVRpbWVGb3Jt
YXQoKTsKICNlbmRpZgogCkBAIC04OCw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Rp
ZENyZWF0ZVNob3J0RGF0ZUZvcm1hdDsKIAogI2lmIEVOQUJMRShEQVRFX0FORF9USU1FX0lOUFVU
X1RZUEVTKQotICAgIE93blB0cjxWZWN0b3I8U3RyaW5nPiA+IG1fbW9udGhMYWJlbHM7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+PiBtX21vbnRoTGFiZWxzOwogICAgIFN0cmlu
ZyBtX2RhdGVGb3JtYXQ7CiAgICAgU3RyaW5nIG1fbW9udGhGb3JtYXQ7CiAgICAgU3RyaW5nIG1f
c2hvcnRNb250aEZvcm1hdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvTG9jYWxlTm9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZU5v
bmUuY3BwCmluZGV4IDk2MTgzM2U0MmRkODA3ZGI1NmMwYTkxYmQ5YjQ2ZWJjMmVjZTllYzguLmVh
MThhN2I2ODVhMjk5ZGFhZjgzNDE4NWYzMDNlMDM3Yjc2M2FkMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTG9jYWxlLmgiCiAjaW5jbHVkZSA8d3Rm
L0RhdGVNYXRoLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC01Niw5ICs1NSw5IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAKLVBhc3NP
d25QdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmKQorc3RkOjp1
bmlxdWVfcHRyPExvY2FsZT4gTG9jYWxlOjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJikKIHsK
LSAgICByZXR1cm4gYWRvcHRQdHIobmV3IExvY2FsZU5vbmUoKSk7CisgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8TG9jYWxlTm9uZT4oKTsKIH0KIAogTG9jYWxlTm9uZTo6fkxvY2FsZU5vbmUo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2Fs
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5oCmluZGV4
IGVmODUyMmM4OTU0Mjc0NTRkM2RiMWJiMDNiMzVjNDAyNzRkNmQ5OWUuLmMyZDI1M2RjZDU5NDcx
NjkzNWNkMjQ0ZTcxYTdmMmNlZmNkNzMwOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1BsYXRmb3JtTG9jYWxlLmgKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkRh
dGVDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKLSNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC00MSw4ICs0MCw4IEBAIGNsYXNzIExvY2FsZSB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoTG9jYWxlKTsKIAogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPExv
Y2FsZT4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmllcik7Ci0gICAg
c3RhdGljIFBhc3NPd25QdHI8TG9jYWxlPiBjcmVhdGVEZWZhdWx0KCk7CisgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlk
ZW50aWZpZXIpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBjcmVhdGVEZWZh
dWx0KCk7CiAKICAgICAvLyBDb252ZXJ0cyB0aGUgc3BlY2lmaWVkIG51bWJlciBzdHJpbmcgdG8g
YW5vdGhlciBudW1iZXIgc3RyaW5nIGxvY2FsaXplZAogICAgIC8vIGZvciB0aGlzIExvY2FsZSBs
b2NhbGUuIFRoZSBpbnB1dCBzdHJpbmcgbXVzdCBjb25mb3JtIHRvIEhUTUwKQEAgLTE1MCw3ICsx
NDksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNMb2NhbGVEYXRhOwogfTsKIAotaW5saW5l
IFBhc3NPd25QdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZURlZmF1bHQoKQoraW5saW5lIHN0ZDo6
dW5pcXVlX3B0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlRGVmYXVsdCgpCiB7CiAgICAgcmV0dXJu
IExvY2FsZTo6Y3JlYXRlKGRlZmF1bHRMYW5ndWFnZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcAppbmRleCA0NjczYmUwMGY1NGFl
OGNlYzllZTA5ZDYwMzJhY2Y2ZmNjZTEzZmMwLi43YTkxMDAyZmNhNTdiMGQwYmVlODJkYjFjN2E2
NTFjYmFiOGMyMWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY0xhdGluMS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0
Q29kZWNMYXRpbjEuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiVGV4dENvZGVjTGF0
aW4xLmgiCiAKICNpbmNsdWRlICJUZXh0Q29kZWNBU0NJSUZhc3RQYXRoLmgiCi0jaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VU
RjE2LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYuY3Bw
CmluZGV4IDE5NWFiYTQ4Y2E1YTdhODQ3ODAwZTZjMWQ1MWE2NjM3MWE3YzRhYWIuLjZlNWQ0NDE1
M2YwMGQ3YjRhMDQyZGZmOWYxNjY2NDE2MjNlMjc4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGV4dENvZGVjVVRGMTYuaCIKIAotI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2Rp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuY3BwCmlu
ZGV4IGRiODJiZDc1OTBmODU3ZjdjNzkzMjE4ZmVkNDVjZGZiMDI5ODE5NDIuLjA1ZGE4NGJmOTMx
M2Q1ZDQwMDcwZjJhYjQ2N2NkZjc2MGE3Zjg2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJU
ZXh0Q29kZWMuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmdSZWdpc3RyeS5oIgogI2luY2x1ZGUg
PHVuaWNvZGUvdW5vcm0uaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
bWFjL0xvY2FsZU1hYy5oCmluZGV4IDUzYTZkYjdhOThlODFmZjdhZTJiZDMzY2U1YTJmZGEzMTkz
ZTAxYmYuLjg2NTFjNDNlYzRmYTVjYjViMGY5MjU4NDUwMTQ5NWNmZWY5NjQ2NzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5oCkBAIC00Nyw3ICs0Nyw3
IEBAIGNsYXNzIERhdGVDb21wb25lbnRzOwogCiBjbGFzcyBMb2NhbGVNYWMgOiBwdWJsaWMgTG9j
YWxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxMb2NhbGVNYWM+IGNyZWF0ZShO
U0xvY2FsZSopOworICAgIGV4cGxpY2l0IExvY2FsZU1hYyhOU0xvY2FsZSopOwogICAgIH5Mb2Nh
bGVNYWMoKTsKIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTcwLDcgKzcwLDYgQEAgcHVibGljOgog
I2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTG9jYWxlTWFjKE5TTG9jYWxlKik7CiAg
ICAgUmV0YWluUHRyPE5TRGF0ZUZvcm1hdHRlcj4gc2hvcnREYXRlRm9ybWF0dGVyKCk7CiAgICAg
dmlydHVhbCB2b2lkIGluaXRpYWxpemVMb2NhbGVEYXRhKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbQppbmRleCBjMzcyNGM5ZWZk
YzljM2M4ZWRiMTRkZTVjNmJhZDEyNzJjNGM2MzU2Li42NDIzZWUzMzhkNjVhNTViZDU1YTVkOGZh
ZDhhY2ZmZTlmOTJhMDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L21hYy9Mb2NhbGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMv
TG9jYWxlTWFjLm1tCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKICNp
bmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+Ci0j
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC02Nyw5ICs2Niw5IEBAIHN0
YXRpYyBSZXRhaW5QdHI8TlNMb2NhbGU+IGRldGVybWluZUxvY2FsZShjb25zdCBTdHJpbmcmIGxv
Y2FsZSkKICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0xvY2FsZSBhbGxvY10gaW5pdFdpdGhMb2Nh
bGVJZGVudGlmaWVyOmxvY2FsZV0pOwogfQogCi1QYXNzT3duUHRyPExvY2FsZT4gTG9jYWxlOjpj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUpCitzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxl
PiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSkKIHsKLSAgICByZXR1
cm4gTG9jYWxlTWFjOjpjcmVhdGUoZGV0ZXJtaW5lTG9jYWxlKGxvY2FsZS5zdHJpbmcoKSkuZ2V0
KCkpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExvY2FsZU1hYz4oZGV0ZXJtaW5lTG9j
YWxlKGxvY2FsZS5zdHJpbmcoKSkuZ2V0KCkpOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPE5TRGF0
ZUZvcm1hdHRlcj4gY3JlYXRlRGF0ZVRpbWVGb3JtYXR0ZXIoTlNMb2NhbGUqIGxvY2FsZSwgTlND
YWxlbmRhciogY2FsZW5kYXIsIE5TRGF0ZUZvcm1hdHRlclN0eWxlIGRhdGVTdHlsZSwgTlNEYXRl
Rm9ybWF0dGVyU3R5bGUgdGltZVN0eWxlKQpAQCAtMTA0LDExICsxMDMsNiBAQCBMb2NhbGVNYWM6
On5Mb2NhbGVNYWMoKQogewogfQogCi1QYXNzT3duUHRyPExvY2FsZU1hYz4gTG9jYWxlTWFjOjpj
cmVhdGUoTlNMb2NhbGUqIGxvY2FsZSkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IExvY2Fs
ZU1hYyhsb2NhbGUpKTsKLX0KLQogUmV0YWluUHRyPE5TRGF0ZUZvcm1hdHRlcj4gTG9jYWxlTWFj
OjpzaG9ydERhdGVGb3JtYXR0ZXIoKQogewogICAgIHJldHVybiBjcmVhdGVEYXRlVGltZUZvcm1h
dHRlcihtX2xvY2FsZS5nZXQoKSwgbV9ncmVnb3JpYW5DYWxlbmRhci5nZXQoKSwgTlNEYXRlRm9y
bWF0dGVyU2hvcnRTdHlsZSwgTlNEYXRlRm9ybWF0dGVyTm9TdHlsZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcAppbmRleCBhMTZlMzA3
YmM0NmYzY2E2MTk2ZDdhMGVmMDkwYmI1YmFkMGQ1ZWY5Li40N2E2YTk2OTE5NzkzZWRkNTI0YzQ4
ZTg1ZjA1Njk4ZGExNmE0YmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvbWFjL1RleHRDb2RlY01hYy5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJDaGFy
c2V0RGF0YS5oIgogI2luY2x1ZGUgIlRocmVhZEdsb2JhbERhdGEuaCIKICNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L3dpbi9Mb2NhbGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9j
YWxlV2luLmNwcAppbmRleCBhYjAzNmFhMGQxMDBlMDFhNDA5YzExYzcxYWExZjBkNzk0ZjQ1NDAz
Li40ZDA1MGJkNDFmZGMwNTI4YWIxMGFlYzA5Yzg5ODgxMzA5MmFlODFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAKQEAgLTQwLDggKzQwLDYg
QEAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGgu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTE0Niw5ICsxNDQs
OSBAQCBzdGF0aWMgTENJRCBMQ0lERnJvbUxvY2FsZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2Fs
ZSkKICAgICByZXR1cm4gbGNpZDsKIH0KIAotUGFzc093blB0cjxMb2NhbGU+IExvY2FsZTo6Y3Jl
YXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQorc3RkOjp1bmlxdWVfcHRyPExvY2FsZT4g
TG9jYWxlOjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUpCiB7Ci0gICAgcmV0dXJu
IExvY2FsZVdpbjo6Y3JlYXRlKExDSURGcm9tTG9jYWxlKGxvY2FsZSkpOworICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPExDSURGcm9tTG9jYWxlPihsb2NhbGUpOwogfQogCiBpbmxpbmUgTG9j
YWxlV2luOjpMb2NhbGVXaW4oTENJRCBsY2lkKQpAQCAtMTU3LDExICsxNTUsNiBAQCBpbmxpbmUg
TG9jYWxlV2luOjpMb2NhbGVXaW4oTENJRCBsY2lkKQogewogfQogCi1QYXNzT3duUHRyPExvY2Fs
ZVdpbj4gTG9jYWxlV2luOjpjcmVhdGUoTENJRCBsY2lkKQotewotICAgIHJldHVybiBhZG9wdFB0
cihuZXcgTG9jYWxlV2luKGxjaWQpKTsKLX0KLQogTG9jYWxlV2luOjp+TG9jYWxlV2luKCkKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdp
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmgKaW5kZXgg
ZWRjZWVmYThhYzNjNjU5ZWZjNTY3MWYxZjNmOWRlMjRhNWViNWQzMC4uOWZiZjk5NWRiMTRiMjll
Mzg2M2E0ZGJjMWE4NzRhNWE3YzVhYjdlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC93aW4vTG9jYWxlV2luLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RydWN0IERhdGVGb3JtYXRU
b2tlbjsKIAogY2xhc3MgTG9jYWxlV2luIDogcHVibGljIExvY2FsZSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NPd25QdHI8TG9jYWxlV2luPiBjcmVhdGUoTENJRCk7CisgICAgZXhwbGljaXQg
TG9jYWxlV2luKExDSUQpOwogICAgIH5Mb2NhbGVXaW4oKTsKICNpZiBFTkFCTEUoREFURV9BTkRf
VElNRV9JTlBVVF9UWVBFUykKICAgICB2aXJ0dWFsIFN0cmluZyBkYXRlRm9ybWF0KCkgb3ZlcnJp
ZGU7CkBAIC02NCw3ICs2NCw2IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIGV4
cGxpY2l0IExvY2FsZVdpbihMQ0lEKTsKICAgICBTdHJpbmcgZ2V0TG9jYWxlSW5mb1N0cmluZyhM
Q1RZUEUpOwogICAgIHZvaWQgZ2V0TG9jYWxlSW5mbyhMQ1RZUEUsIERXT1JEJik7CiAgICAgdm9p
ZCBlbnN1cmVTaG9ydE1vbnRoTGFiZWxzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcAppbmRleCBhNWJjYTcwYjQ4MjcyMzFmYjcyMjIw
ZTZhMTMzY2EyNjBmZWJkZjNlLi5hM2E2NWFkNzYwMzQwYzY1MmUzZTJiZGZmZDgwMjQzYzE0OTU2
YmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29k
ZWNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL1RleHRDb2Rl
Y1dpbi5jcHAKQEAgLTEyOSw5ICsxMjksOSBAQCBzdGF0aWMgVUlOVCBnZXRDb2RlUGFnZShjb25z
dCBjaGFyKiBuYW1lKQogICAgIHJldHVybiBpID09IGNoYXJzZXRzLmVuZCgpID8gQ1BfQUNQIDog
aS0+dmFsdWUubV9jb2RlUGFnZTsKIH0KIAotc3RhdGljIFBhc3NPd25QdHI8VGV4dENvZGVjPiBu
ZXdUZXh0Q29kZWNXaW4oY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywgY29uc3Qgdm9pZCop
CitzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFRleHRDb2RlYz4gbmV3VGV4dENvZGVjV2luKGNvbnN0
IFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIGNvbnN0IHZvaWQqKQogewotICAgIHJldHVybiBhZG9w
dFB0cihuZXcgVGV4dENvZGVjV2luKGdldENvZGVQYWdlKGVuY29kaW5nLm5hbWUoKSkpKTsKKyAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNXaW4+KGdldENvZGVQYWdlKGVuY29k
aW5nLm5hbWUoKSkpOwogfQogCiBUZXh0Q29kZWNXaW46OlRleHRDb2RlY1dpbihVSU5UIGNvZGVQ
YWdlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243248</attachid>
            <date>2014-12-13 00:01:19 -0800</date>
            <delta_ts>2014-12-14 07:34:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-139395-20141213170202.patch</filename>
            <type>text/plain</type>
            <size>21049</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3MjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTM4MWRjM2E0OTYyMjUy
ZDZjM2MzOTAwNzY3ZjNmN2JkNmJmZDEwNi4uM2VlOTYyNWU4M2MxMWEwNzVhOWQ1MjM4MDhjYjA2
YzA2NTg0ZDI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE0LTEyLTEyICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgTW92ZSBXZWJD
b3JlL3BsYXRmb3JtL3RleHQgdG8gc3RkOjp1bmlxdWVfcHRyIAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5Mzk1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXMgYSBzdGVwIHRvIHVzZSBzdGQ6OnVuaXF1
ZV9wdHI8PiwgdGhpcyBwYXRjaCByZXBsYWNlcyBPd25QdHJ8UGFzc093blB0ciB3aXRoCisgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjw+IHwgc3RkOjptYWtlX3VuaXF1ZTw+LgorCisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9MaW5lQnJlYWtJdGVyYXRv
clBvb2xJQ1UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVCcmVha0l0ZXJhdG9yUG9vbDo6TGlu
ZUJyZWFrSXRlcmF0b3JQb29sKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVCcmVha0l0ZXJhdG9y
UG9vbDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xvY2FsZUlD
VS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpMb2NhbGVJQ1U6OmNyZWF0ZUxhYmVsVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUZhbGxiYWNrTW9udGhMYWJlbHMpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmFsbGJh
Y2tBTVBNTGFiZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZUlDVTo6aW5pdGlhbGl6ZURh
dGVUaW1lRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZUlDVTo6c2hvcnRNb250aExh
YmVscyk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVJQ1U6OmNyZWF0ZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpMb2NhbGVJQ1U6OnN0YW5kQWxvbmVNb250aExhYmVscyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVJQ1U6OnNob3J0U3RhbmRBbG9uZU1vbnRoTGFi
ZWxzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
b2NhbGU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5o
OgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxlOjpjcmVhdGVEZWZhdWx0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4
dC9UZXh0Q29kZWNVVEYxNi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2Rp
bmcuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Okxv
Y2FsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZU1hYzo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVXaW46OmNyZWF0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4
dC93aW4vVGV4dENvZGVjV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5ld1RleHRDb2RlY1dp
bik6CisKIDIwMTQtMTItMTIgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4K
IAogICAgICAgICBGaXggdGhlICFFTkFCTEUoU1ZHX0ZPTlRTKSBidWlsZCBhZnRlciByMTc3MDc4
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDk0YTQzODZlOGJhYTk3YzFiZWIxZDg0ZGQ0MTE4MjA1
ZWUzMDdiN2IuLjc3ZGE4NWJjMTk2OWRkMzZlYjEzZjBjMWRjODQ2YjU0MWFkZTgwMzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCkBAIC0xNjc3LDcgKzE2NzcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9kaWREaXNwYXRjaFZpZXdwb3J0UHJvcGVydGllc0NoYW5nZWQ7CiAjZW5kaWYKIAotICAgIHR5
cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcsIE93blB0cjxMb2NhbGU+PiBMb2NhbGVJZGVudGlm
aWVyVG9Mb2NhbGVNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZywgc3RkOjp1
bmlxdWVfcHRyPExvY2FsZT4+IExvY2FsZUlkZW50aWZpZXJUb0xvY2FsZU1hcDsKICAgICBMb2Nh
bGVJZGVudGlmaWVyVG9Mb2NhbGVNYXAgbV9sb2NhbGVDYWNoZTsKIAogI2lmIEVOQUJMRShURU1Q
TEFURV9FTEVNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9M
aW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
TGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKaW5kZXggNjc0YTA2ZDM3Y2NkOTk3M2QxNDZkYzhl
NGYyZTU0YjcwOWE0NWQxMS4uZjhiNThkNmYzNjM4NzgxOTQxMjI3NDNkMDg2YmY5YjI0NDE3MDlj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9MaW5lQnJlYWtJdGVy
YXRvclBvb2xJQ1UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xpbmVCcmVh
a0l0ZXJhdG9yUG9vbElDVS5oCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSA8dW5pY29kZS91
YnJrLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNw
ZWNpZmljLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtNDIsMTQgKzQxLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIExpbmVCcmVha0l0ZXJhdG9yUG9vbCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoTGluZUJyZWFrSXRlcmF0b3JQb29sKTsKIHB1YmxpYzoKKyAgICBMaW5lQnJlYWtJdGVyYXRv
clBvb2woKSB7IH0gCisKICAgICBzdGF0aWMgTGluZUJyZWFrSXRlcmF0b3JQb29sJiBzaGFyZWRQ
b29sKCkKICAgICB7CiAgICAgICAgIHN0YXRpYyBXVEY6OlRocmVhZFNwZWNpZmljPExpbmVCcmVh
a0l0ZXJhdG9yUG9vbD4qIHBvb2wgPSBuZXcgV1RGOjpUaHJlYWRTcGVjaWZpYzxMaW5lQnJlYWtJ
dGVyYXRvclBvb2w+OwogICAgICAgICByZXR1cm4gKipwb29sOwogICAgIH0KIAotICAgIHN0YXRp
YyBQYXNzT3duUHRyPExpbmVCcmVha0l0ZXJhdG9yUG9vbD4gY3JlYXRlKCkgeyByZXR1cm4gYWRv
cHRQdHIobmV3IExpbmVCcmVha0l0ZXJhdG9yUG9vbCk7IH0KLQogICAgIHN0YXRpYyBTdHJpbmcg
bWFrZUxvY2FsZVdpdGhCcmVha0tleXdvcmQoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUsIExp
bmVCcmVha0l0ZXJhdG9yTW9kZSBtb2RlKQogICAgIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBs
b2NhbGVXaXRoS2V5d29yZDsKQEAgLTExMyw4ICsxMTIsNiBAQCBwdWJsaWM6CiAgICAgfQogCiBw
cml2YXRlOgotICAgIExpbmVCcmVha0l0ZXJhdG9yUG9vbCgpIHsgfQotCiAgICAgc3RhdGljIGNv
bnN0IHNpemVfdCBjYXBhY2l0eSA9IDQ7CiAKICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxBdG9taWNT
dHJpbmcsIFRleHRCcmVha0l0ZXJhdG9yKj4gRW50cnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0xvY2FsZUlDVS5jcHAKaW5kZXggYTFlNjU5ZTcwNTZkNTcxZDU5MjhmMDg0NDU3NWVh
NzY3NWI0MTRlMi4uYTNhMjgxODc4MjE5YjRkYjkxNmNlYTZiNGZjY2U1NGNhZjNlYjUyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcApAQCAtMzYsNyArMzYs
NiBAQAogI2luY2x1ZGUgPHVuaWNvZGUvdWRhdHBnLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91bG9j
Lmg+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBpY3U7CkBAIC00NCw5ICs0Myw5IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgbG9jYWxlKQorc3RkOjp1bmlxdWVfcHRyPExvY2FsZT4gTG9jYWxlOjpjcmVh
dGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUpCiB7Ci0gICAgcmV0dXJuIExvY2FsZUlDVTo6
Y3JlYXRlKGxvY2FsZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxMb2NhbGVJQ1U+KGxvY2FsZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIH0K
IAogTG9jYWxlSUNVOjpMb2NhbGVJQ1UoY29uc3QgY2hhciogbG9jYWxlKQpAQCAtNzMsMTEgKzcy
LDYgQEAgTG9jYWxlSUNVOjp+TG9jYWxlSUNVKCkKICNlbmRpZgogfQogCi1QYXNzT3duUHRyPExv
Y2FsZUlDVT4gTG9jYWxlSUNVOjpjcmVhdGUoY29uc3QgY2hhciogbG9jYWxlU3RyaW5nKQotewot
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgTG9jYWxlSUNVKGxvY2FsZVN0cmluZykpOwotfQotCiBT
dHJpbmcgTG9jYWxlSUNVOjpkZWNpbWFsU3ltYm9sKFVOdW1iZXJGb3JtYXRTeW1ib2wgc3ltYm9s
KQogewogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwpAQCAtMTcwLDM5ICsx
NjQsMzkgQEAgc3RhdGljIFN0cmluZyBnZXREYXRlRm9ybWF0UGF0dGVybihjb25zdCBVRGF0ZUZv
cm1hdCogZGF0ZUZvcm1hdCkKICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChidWZmZXIpOwogfQog
Ci1QYXNzT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gTG9jYWxlSUNVOjpjcmVhdGVMYWJlbFZlY3Rv
cihjb25zdCBVRGF0ZUZvcm1hdCogZGF0ZUZvcm1hdCwgVURhdGVGb3JtYXRTeW1ib2xUeXBlIHR5
cGUsIGludDMyX3Qgc3RhcnRJbmRleCwgaW50MzJfdCBzaXplKQorc3RkOjp1bmlxdWVfcHRyPFZl
Y3RvcjxTdHJpbmc+PiBMb2NhbGVJQ1U6OmNyZWF0ZUxhYmVsVmVjdG9yKGNvbnN0IFVEYXRlRm9y
bWF0KiBkYXRlRm9ybWF0LCBVRGF0ZUZvcm1hdFN5bWJvbFR5cGUgdHlwZSwgaW50MzJfdCBzdGFy
dEluZGV4LCBpbnQzMl90IHNpemUpCiB7CiAgICAgaWYgKCFkYXRlRm9ybWF0KQotICAgICAgICBy
ZXR1cm4gUGFzc093blB0cjxWZWN0b3I8U3RyaW5nPiA+KCk7CisgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgIGlmICh1ZGF0X2NvdW50U3ltYm9s
cyhkYXRlRm9ybWF0LCB0eXBlKSAhPSBzdGFydEluZGV4ICsgc2l6ZSkKLSAgICAgICAgcmV0dXJu
IFBhc3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPigpOworICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKIAotICAgIE93blB0cjxWZWN0b3I8U3RyaW5nPiA+
IGxhYmVscyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8U3RyaW5nPigpKTsKKyAgICBhdXRvIGxhYmVs
cyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAgbGFiZWxzLT5yZXNl
cnZlQ2FwYWNpdHkoc2l6ZSk7CiAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgc2l6ZTsgKytp
KSB7CiAgICAgICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgICAgICBp
bnQzMl90IGxlbmd0aCA9IHVkYXRfZ2V0U3ltYm9scyhkYXRlRm9ybWF0LCB0eXBlLCBzdGFydElu
ZGV4ICsgaSwgMCwgMCwgJnN0YXR1cyk7CiAgICAgICAgIGlmIChzdGF0dXMgIT0gVV9CVUZGRVJf
T1ZFUkZMT1dfRVJST1IpCi0gICAgICAgICAgICByZXR1cm4gUGFzc093blB0cjxWZWN0b3I8U3Ry
aW5nPiA+KCk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3Ry
aW5nPj4oKTsKICAgICAgICAgVmVjdG9yPFVDaGFyPiBidWZmZXIobGVuZ3RoKTsKICAgICAgICAg
c3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgICAgICB1ZGF0X2dldFN5bWJvbHMoZGF0ZUZvcm1h
dCwgdHlwZSwgc3RhcnRJbmRleCArIGksIGJ1ZmZlci5kYXRhKCksIGxlbmd0aCwgJnN0YXR1cyk7
CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgICAgIHJldHVybiBQYXNz
T3duUHRyPFZlY3RvcjxTdHJpbmc+ID4oKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgICAgICBsYWJlbHMtPmFwcGVuZChTdHJpbmc6
OmFkb3B0KGJ1ZmZlcikpOwogICAgIH0KLSAgICByZXR1cm4gbGFiZWxzLnJlbGVhc2UoKTsKKyAg
ICByZXR1cm4gV1RGOjptb3ZlKGxhYmVscyk7CiB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShEQVRF
X0FORF9USU1FX0lOUFVUX1RZUEVTKQotc3RhdGljIFBhc3NPd25QdHI8VmVjdG9yPFN0cmluZz4g
PiBjcmVhdGVGYWxsYmFja01vbnRoTGFiZWxzKCkKK3N0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VmVj
dG9yPFN0cmluZz4+IGNyZWF0ZUZhbGxiYWNrTW9udGhMYWJlbHMoKQogewotICAgIE93blB0cjxW
ZWN0b3I8U3RyaW5nPiA+IGxhYmVscyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8U3RyaW5nPigpKTsK
KyAgICBhdXRvIGxhYmVscyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAg
ICAgbGFiZWxzLT5yZXNlcnZlQ2FwYWNpdHkoV1RGX0FSUkFZX0xFTkdUSChXVEY6Om1vbnRoRnVs
bE5hbWUpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChX
VEY6Om1vbnRoRnVsbE5hbWUpOyArK2kpCiAgICAgICAgIGxhYmVscy0+YXBwZW5kKFdURjo6bW9u
dGhGdWxsTmFtZVtpXSk7Ci0gICAgcmV0dXJuIGxhYmVscy5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IFdURjo6bW92ZShsYWJlbHMpOwogfQogCiBjb25zdCBWZWN0b3I8U3RyaW5nPiYgTG9jYWxlSUNV
Ojptb250aExhYmVscygpCkBAIC0yMjAsMTMgKzIxNCwxMyBAQCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgTG9jYWxlSUNVOjptb250aExhYmVscygpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShEQVRFX0FO
RF9USU1FX0lOUFVUX1RZUEVTKQotc3RhdGljIFBhc3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPiBj
cmVhdGVGYWxsYmFja0FNUE1MYWJlbHMoKQorc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8
U3RyaW5nPj4gY3JlYXRlRmFsbGJhY2tBTVBNTGFiZWxzKCkKIHsKLSAgICBPd25QdHI8VmVjdG9y
PFN0cmluZz4gPiBsYWJlbHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFN0cmluZz4oKSk7CisgICAg
YXV0byBsYWJlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgIGxh
YmVscy0+cmVzZXJ2ZUNhcGFjaXR5KDIpOwogICAgIGxhYmVscy0+YXBwZW5kKCJBTSIpOwogICAg
IGxhYmVscy0+YXBwZW5kKCJQTSIpOwotICAgIHJldHVybiBsYWJlbHMucmVsZWFzZSgpOworICAg
IHJldHVybiBXVEY6Om1vdmUobGFiZWxzKTsKIH0KIAogdm9pZCBMb2NhbGVJQ1U6OmluaXRpYWxp
emVEYXRlVGltZUZvcm1hdCgpCkBAIC0yNTEsNyArMjQ1LDcgQEAgdm9pZCBMb2NhbGVJQ1U6Omlu
aXRpYWxpemVEYXRlVGltZUZvcm1hdCgpCiAgICAgbV9kYXRlVGltZUZvcm1hdFdpdGhvdXRTZWNv
bmRzID0gZ2V0RGF0ZUZvcm1hdFBhdHRlcm4oZGF0ZVRpbWVGb3JtYXRXaXRob3V0U2Vjb25kcyk7
CiAgICAgdWRhdF9jbG9zZShkYXRlVGltZUZvcm1hdFdpdGhvdXRTZWNvbmRzKTsKIAotICAgIE93
blB0cjxWZWN0b3I8U3RyaW5nPiA+IHRpbWVBTVBNTGFiZWxzID0gY3JlYXRlTGFiZWxWZWN0b3Io
bV9tZWRpdW1UaW1lRm9ybWF0LCBVREFUX0FNX1BNUywgVUNBTF9BTSwgMik7CisgICAgYXV0byB0
aW1lQU1QTUxhYmVscyA9IGNyZWF0ZUxhYmVsVmVjdG9yKG1fbWVkaXVtVGltZUZvcm1hdCwgVURB
VF9BTV9QTVMsIFVDQUxfQU0sIDIpOwogICAgIGlmICghdGltZUFNUE1MYWJlbHMpCiAgICAgICAg
IHRpbWVBTVBNTGFiZWxzID0gY3JlYXRlRmFsbGJhY2tBTVBNTGFiZWxzKCk7CiAgICAgbV90aW1l
QU1QTUxhYmVscyA9ICp0aW1lQU1QTUxhYmVsczsKQEAgLTMzNiw3ICszMzAsNyBAQCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgTG9jYWxlSUNVOjpzaG9ydE1vbnRoTGFiZWxzKCkKICAgICBpZiAoIW1f
c2hvcnRNb250aExhYmVscy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBtX3Nob3J0TW9udGhM
YWJlbHM7CiAgICAgaWYgKGluaXRpYWxpemVTaG9ydERhdGVGb3JtYXQoKSkgewotICAgICAgICBp
ZiAoT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gbGFiZWxzID0gY3JlYXRlTGFiZWxWZWN0b3IobV9z
aG9ydERhdGVGb3JtYXQsIFVEQVRfU0hPUlRfTU9OVEhTLCBVQ0FMX0pBTlVBUlksIDEyKSkgewor
ICAgICAgICBpZiAoYXV0byBsYWJlbHMgPSBjcmVhdGVMYWJlbFZlY3RvcihtX3Nob3J0RGF0ZUZv
cm1hdCwgVURBVF9TSE9SVF9NT05USFMsIFVDQUxfSkFOVUFSWSwgMTIpKSB7CiAgICAgICAgICAg
ICBtX3Nob3J0TW9udGhMYWJlbHMgPSAqbGFiZWxzOwogICAgICAgICAgICAgcmV0dXJuIG1fc2hv
cnRNb250aExhYmVsczsKICAgICAgICAgfQpAQCAtMzUyLDcgKzM0Niw3IEBAIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBMb2NhbGVJQ1U6OnN0YW5kQWxvbmVNb250aExhYmVscygpCiAgICAgaWYgKCFt
X3N0YW5kQWxvbmVNb250aExhYmVscy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBtX3N0YW5k
QWxvbmVNb250aExhYmVsczsKICAgICBpZiAoaW5pdGlhbGl6ZVNob3J0RGF0ZUZvcm1hdCgpKSB7
Ci0gICAgICAgIGlmIChPd25QdHI8VmVjdG9yPFN0cmluZz4gPiBsYWJlbHMgPSBjcmVhdGVMYWJl
bFZlY3RvcihtX3Nob3J0RGF0ZUZvcm1hdCwgVURBVF9TVEFOREFMT05FX01PTlRIUywgVUNBTF9K
QU5VQVJZLCAxMikpIHsKKyAgICAgICAgaWYgKGF1dG8gbGFiZWxzID0gY3JlYXRlTGFiZWxWZWN0
b3IobV9zaG9ydERhdGVGb3JtYXQsIFVEQVRfU1RBTkRBTE9ORV9NT05USFMsIFVDQUxfSkFOVUFS
WSwgMTIpKSB7CiAgICAgICAgICAgICBtX3N0YW5kQWxvbmVNb250aExhYmVscyA9ICpsYWJlbHM7
CiAgICAgICAgICAgICByZXR1cm4gbV9zdGFuZEFsb25lTW9udGhMYWJlbHM7CiAgICAgICAgIH0K
QEAgLTM2Niw3ICszNjAsNyBAQCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgTG9jYWxlSUNVOjpzaG9y
dFN0YW5kQWxvbmVNb250aExhYmVscygpCiAgICAgaWYgKCFtX3Nob3J0U3RhbmRBbG9uZU1vbnRo
TGFiZWxzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG1fc2hvcnRTdGFuZEFsb25lTW9udGhM
YWJlbHM7CiAgICAgaWYgKGluaXRpYWxpemVTaG9ydERhdGVGb3JtYXQoKSkgewotICAgICAgICBp
ZiAoT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gbGFiZWxzID0gY3JlYXRlTGFiZWxWZWN0b3IobV9z
aG9ydERhdGVGb3JtYXQsIFVEQVRfU1RBTkRBTE9ORV9TSE9SVF9NT05USFMsIFVDQUxfSkFOVUFS
WSwgMTIpKSB7CisgICAgICAgIGlmIChhdXRvIGxhYmVscyA9IGNyZWF0ZUxhYmVsVmVjdG9yKG1f
c2hvcnREYXRlRm9ybWF0LCBVREFUX1NUQU5EQUxPTkVfU0hPUlRfTU9OVEhTLCBVQ0FMX0pBTlVB
UlksIDEyKSkgewogICAgICAgICAgICAgbV9zaG9ydFN0YW5kQWxvbmVNb250aExhYmVscyA9ICps
YWJlbHM7CiAgICAgICAgICAgICByZXR1cm4gbV9zaG9ydFN0YW5kQWxvbmVNb250aExhYmVsczsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2Nh
bGVJQ1UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmgKaW5kZXgg
MTUxOTcxMGQ5ZWJmYjM4MDA1NTVkZjA4NDI0YWZkMWQwMjRkYTY1MC4uNWVjYzc1YzJmYWY2YWFj
YTFiNDkxYTRmYTg5NWU3ZTE2M2ViMWJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9Mb2NhbGVJQ1UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L0xvY2FsZUlDVS5oCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSA8dW5pY29kZS91ZGF0Lmg+
CiAjaW5jbHVkZSA8dW5pY29kZS91bnVtLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00Niw3ICs0NSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIC8vIGFuZCBMb2NhbGl6ZWROdW1iZXJJQ1VUZXN0LmNwcC4KIGNsYXNzIExv
Y2FsZUlDVSA6IHB1YmxpYyBMb2NhbGUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PExvY2FsZUlDVT4gY3JlYXRlKGNvbnN0IGNoYXIqIGxvY2FsZVN0cmluZyk7CisgICAgZXhwbGlj
aXQgTG9jYWxlSUNVKGNvbnN0IGNoYXIqKTsKICAgICB2aXJ0dWFsIH5Mb2NhbGVJQ1UoKTsKIAog
I2lmIEVOQUJMRShEQVRFX0FORF9USU1FX0lOUFVUX1RZUEVTKQpAQCAtNjUsNyArNjQsNiBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBMb2NhbGVJQ1UoY29uc3Qg
Y2hhciopOwogICAgIFN0cmluZyBkZWNpbWFsU3ltYm9sKFVOdW1iZXJGb3JtYXRTeW1ib2wpOwog
ICAgIFN0cmluZyBkZWNpbWFsVGV4dEF0dHJpYnV0ZShVTnVtYmVyRm9ybWF0VGV4dEF0dHJpYnV0
ZSk7CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVMb2NhbGVEYXRhKCkgb3ZlcnJpZGU7CkBA
IC03Nyw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgVURhdGVGb3JtYXQqIG9wZW5EYXRlRm9ybWF0
KFVEYXRlRm9ybWF0U3R5bGUgdGltZVN0eWxlLCBVRGF0ZUZvcm1hdFN0eWxlIGRhdGVTdHlsZSkg
Y29uc3Q7CiAKICNpZiBFTkFCTEUoREFURV9BTkRfVElNRV9JTlBVVF9UWVBFUykKLSAgICBQYXNz
T3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gY3JlYXRlTGFiZWxWZWN0b3IoY29uc3QgVURhdGVGb3Jt
YXQqLCBVRGF0ZUZvcm1hdFN5bWJvbFR5cGUsIGludDMyX3Qgc3RhcnRJbmRleCwgaW50MzJfdCBz
aXplKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IGNyZWF0ZUxhYmVsVmVj
dG9yKGNvbnN0IFVEYXRlRm9ybWF0KiwgVURhdGVGb3JtYXRTeW1ib2xUeXBlLCBpbnQzMl90IHN0
YXJ0SW5kZXgsIGludDMyX3Qgc2l6ZSk7CiAgICAgdm9pZCBpbml0aWFsaXplRGF0ZVRpbWVGb3Jt
YXQoKTsKICNlbmRpZgogCkBAIC04OCw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Rp
ZENyZWF0ZVNob3J0RGF0ZUZvcm1hdDsKIAogI2lmIEVOQUJMRShEQVRFX0FORF9USU1FX0lOUFVU
X1RZUEVTKQotICAgIE93blB0cjxWZWN0b3I8U3RyaW5nPiA+IG1fbW9udGhMYWJlbHM7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+PiBtX21vbnRoTGFiZWxzOwogICAgIFN0cmlu
ZyBtX2RhdGVGb3JtYXQ7CiAgICAgU3RyaW5nIG1fbW9udGhGb3JtYXQ7CiAgICAgU3RyaW5nIG1f
c2hvcnRNb250aEZvcm1hdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvTG9jYWxlTm9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZU5v
bmUuY3BwCmluZGV4IDk2MTgzM2U0MmRkODA3ZGI1NmMwYTkxYmQ5YjQ2ZWJjMmVjZTllYzguLmVh
MThhN2I2ODVhMjk5ZGFhZjgzNDE4NWYzMDNlMDM3Yjc2M2FkMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTG9jYWxlLmgiCiAjaW5jbHVkZSA8d3Rm
L0RhdGVNYXRoLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC01Niw5ICs1NSw5IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAKLVBhc3NP
d25QdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmKQorc3RkOjp1
bmlxdWVfcHRyPExvY2FsZT4gTG9jYWxlOjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJikKIHsK
LSAgICByZXR1cm4gYWRvcHRQdHIobmV3IExvY2FsZU5vbmUoKSk7CisgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8TG9jYWxlTm9uZT4oKTsKIH0KIAogTG9jYWxlTm9uZTo6fkxvY2FsZU5vbmUo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2Fs
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5oCmluZGV4
IGVmODUyMmM4OTU0Mjc0NTRkM2RiMWJiMDNiMzVjNDAyNzRkNmQ5OWUuLmMyZDI1M2RjZDU5NDcx
NjkzNWNkMjQ0ZTcxYTdmMmNlZmNkNzMwOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1BsYXRmb3JtTG9jYWxlLmgKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkRh
dGVDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKLSNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC00MSw4ICs0MCw4IEBAIGNsYXNzIExvY2FsZSB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoTG9jYWxlKTsKIAogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPExv
Y2FsZT4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmllcik7Ci0gICAg
c3RhdGljIFBhc3NPd25QdHI8TG9jYWxlPiBjcmVhdGVEZWZhdWx0KCk7CisgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlk
ZW50aWZpZXIpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBjcmVhdGVEZWZh
dWx0KCk7CiAKICAgICAvLyBDb252ZXJ0cyB0aGUgc3BlY2lmaWVkIG51bWJlciBzdHJpbmcgdG8g
YW5vdGhlciBudW1iZXIgc3RyaW5nIGxvY2FsaXplZAogICAgIC8vIGZvciB0aGlzIExvY2FsZSBs
b2NhbGUuIFRoZSBpbnB1dCBzdHJpbmcgbXVzdCBjb25mb3JtIHRvIEhUTUwKQEAgLTE1MCw3ICsx
NDksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNMb2NhbGVEYXRhOwogfTsKIAotaW5saW5l
IFBhc3NPd25QdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZURlZmF1bHQoKQoraW5saW5lIHN0ZDo6
dW5pcXVlX3B0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlRGVmYXVsdCgpCiB7CiAgICAgcmV0dXJu
IExvY2FsZTo6Y3JlYXRlKGRlZmF1bHRMYW5ndWFnZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcAppbmRleCA0NjczYmUwMGY1NGFl
OGNlYzllZTA5ZDYwMzJhY2Y2ZmNjZTEzZmMwLi43YTkxMDAyZmNhNTdiMGQwYmVlODJkYjFjN2E2
NTFjYmFiOGMyMWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY0xhdGluMS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0
Q29kZWNMYXRpbjEuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiVGV4dENvZGVjTGF0
aW4xLmgiCiAKICNpbmNsdWRlICJUZXh0Q29kZWNBU0NJSUZhc3RQYXRoLmgiCi0jaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VU
RjE2LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYuY3Bw
CmluZGV4IDE5NWFiYTQ4Y2E1YTdhODQ3ODAwZTZjMWQ1MWE2NjM3MWE3YzRhYWIuLjZlNWQ0NDE1
M2YwMGQ3YjRhMDQyZGZmOWYxNjY2NDE2MjNlMjc4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGV4dENvZGVjVVRGMTYuaCIKIAotI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2Rp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuY3BwCmlu
ZGV4IGRiODJiZDc1OTBmODU3ZjdjNzkzMjE4ZmVkNDVjZGZiMDI5ODE5NDIuLjA1ZGE4NGJmOTMx
M2Q1ZDQwMDcwZjJhYjQ2N2NkZjc2MGE3Zjg2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJU
ZXh0Q29kZWMuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmdSZWdpc3RyeS5oIgogI2luY2x1ZGUg
PHVuaWNvZGUvdW5vcm0uaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
bWFjL0xvY2FsZU1hYy5oCmluZGV4IDUzYTZkYjdhOThlODFmZjdhZTJiZDMzY2U1YTJmZGEzMTkz
ZTAxYmYuLjg2NTFjNDNlYzRmYTVjYjViMGY5MjU4NDUwMTQ5NWNmZWY5NjQ2NzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5oCkBAIC00Nyw3ICs0Nyw3
IEBAIGNsYXNzIERhdGVDb21wb25lbnRzOwogCiBjbGFzcyBMb2NhbGVNYWMgOiBwdWJsaWMgTG9j
YWxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxMb2NhbGVNYWM+IGNyZWF0ZShO
U0xvY2FsZSopOworICAgIGV4cGxpY2l0IExvY2FsZU1hYyhOU0xvY2FsZSopOwogICAgIH5Mb2Nh
bGVNYWMoKTsKIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTcwLDcgKzcwLDYgQEAgcHVibGljOgog
I2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTG9jYWxlTWFjKE5TTG9jYWxlKik7CiAg
ICAgUmV0YWluUHRyPE5TRGF0ZUZvcm1hdHRlcj4gc2hvcnREYXRlRm9ybWF0dGVyKCk7CiAgICAg
dmlydHVhbCB2b2lkIGluaXRpYWxpemVMb2NhbGVEYXRhKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbQppbmRleCBjMzcyNGM5ZWZk
YzljM2M4ZWRiMTRkZTVjNmJhZDEyNzJjNGM2MzU2Li42NDIzZWUzMzhkNjVhNTViZDU1YTVkOGZh
ZDhhY2ZmZTlmOTJhMDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L21hYy9Mb2NhbGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMv
TG9jYWxlTWFjLm1tCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKICNp
bmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+Ci0j
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC02Nyw5ICs2Niw5IEBAIHN0
YXRpYyBSZXRhaW5QdHI8TlNMb2NhbGU+IGRldGVybWluZUxvY2FsZShjb25zdCBTdHJpbmcmIGxv
Y2FsZSkKICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0xvY2FsZSBhbGxvY10gaW5pdFdpdGhMb2Nh
bGVJZGVudGlmaWVyOmxvY2FsZV0pOwogfQogCi1QYXNzT3duUHRyPExvY2FsZT4gTG9jYWxlOjpj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUpCitzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxl
PiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSkKIHsKLSAgICByZXR1
cm4gTG9jYWxlTWFjOjpjcmVhdGUoZGV0ZXJtaW5lTG9jYWxlKGxvY2FsZS5zdHJpbmcoKSkuZ2V0
KCkpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExvY2FsZU1hYz4oZGV0ZXJtaW5lTG9j
YWxlKGxvY2FsZS5zdHJpbmcoKSkuZ2V0KCkpOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPE5TRGF0
ZUZvcm1hdHRlcj4gY3JlYXRlRGF0ZVRpbWVGb3JtYXR0ZXIoTlNMb2NhbGUqIGxvY2FsZSwgTlND
YWxlbmRhciogY2FsZW5kYXIsIE5TRGF0ZUZvcm1hdHRlclN0eWxlIGRhdGVTdHlsZSwgTlNEYXRl
Rm9ybWF0dGVyU3R5bGUgdGltZVN0eWxlKQpAQCAtMTA0LDExICsxMDMsNiBAQCBMb2NhbGVNYWM6
On5Mb2NhbGVNYWMoKQogewogfQogCi1QYXNzT3duUHRyPExvY2FsZU1hYz4gTG9jYWxlTWFjOjpj
cmVhdGUoTlNMb2NhbGUqIGxvY2FsZSkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IExvY2Fs
ZU1hYyhsb2NhbGUpKTsKLX0KLQogUmV0YWluUHRyPE5TRGF0ZUZvcm1hdHRlcj4gTG9jYWxlTWFj
OjpzaG9ydERhdGVGb3JtYXR0ZXIoKQogewogICAgIHJldHVybiBjcmVhdGVEYXRlVGltZUZvcm1h
dHRlcihtX2xvY2FsZS5nZXQoKSwgbV9ncmVnb3JpYW5DYWxlbmRhci5nZXQoKSwgTlNEYXRlRm9y
bWF0dGVyU2hvcnRTdHlsZSwgTlNEYXRlRm9ybWF0dGVyTm9TdHlsZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcAppbmRleCBhMTZlMzA3
YmM0NmYzY2E2MTk2ZDdhMGVmMDkwYmI1YmFkMGQ1ZWY5Li40N2E2YTk2OTE5NzkzZWRkNTI0YzQ4
ZTg1ZjA1Njk4ZGExNmE0YmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvbWFjL1RleHRDb2RlY01hYy5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJDaGFy
c2V0RGF0YS5oIgogI2luY2x1ZGUgIlRocmVhZEdsb2JhbERhdGEuaCIKICNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L3dpbi9Mb2NhbGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9j
YWxlV2luLmNwcAppbmRleCBhYjAzNmFhMGQxMDBlMDFhNDA5YzExYzcxYWExZjBkNzk0ZjQ1NDAz
Li4xNDBhOGU5YmZiMTI1NjRlNTM2NDEwZTNjY2M5MzkzMWNkZmMxNWIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAKQEAgLTQwLDggKzQwLDYg
QEAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGgu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTE0Niw5ICsxNDQs
OSBAQCBzdGF0aWMgTENJRCBMQ0lERnJvbUxvY2FsZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2Fs
ZSkKICAgICByZXR1cm4gbGNpZDsKIH0KIAotUGFzc093blB0cjxMb2NhbGU+IExvY2FsZTo6Y3Jl
YXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQorc3RkOjp1bmlxdWVfcHRyPExvY2FsZT4g
TG9jYWxlOjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUpCiB7Ci0gICAgcmV0dXJu
IExvY2FsZVdpbjo6Y3JlYXRlKExDSURGcm9tTG9jYWxlKGxvY2FsZSkpOworICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPExvY2FsZVdpbj4oTENJREZyb21Mb2NhbGUobG9jYWxlKSk7CiB9CiAK
IGlubGluZSBMb2NhbGVXaW46OkxvY2FsZVdpbihMQ0lEIGxjaWQpCkBAIC0xNTcsMTEgKzE1NSw2
IEBAIGlubGluZSBMb2NhbGVXaW46OkxvY2FsZVdpbihMQ0lEIGxjaWQpCiB7CiB9CiAKLVBhc3NP
d25QdHI8TG9jYWxlV2luPiBMb2NhbGVXaW46OmNyZWF0ZShMQ0lEIGxjaWQpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBMb2NhbGVXaW4obGNpZCkpOwotfQotCiBMb2NhbGVXaW46On5Mb2Nh
bGVXaW4oKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93
aW4vTG9jYWxlV2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVX
aW4uaAppbmRleCBlZGNlZWZhOGFjM2M2NTllZmM1NjcxZjFmM2Y5ZGUyNGE1ZWI1ZDMwLi45ZmJm
OTk1ZGIxNGIyOWUzODYzYTRkYmMxYTg3NGE1YTdjNWFiN2VmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uaApAQCAtNDQsNyArNDQsNyBAQCBzdHJ1Y3Qg
RGF0ZUZvcm1hdFRva2VuOwogCiBjbGFzcyBMb2NhbGVXaW4gOiBwdWJsaWMgTG9jYWxlIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxMb2NhbGVXaW4+IGNyZWF0ZShMQ0lEKTsKKyAg
ICBleHBsaWNpdCBMb2NhbGVXaW4oTENJRCk7CiAgICAgfkxvY2FsZVdpbigpOwogI2lmIEVOQUJM
RShEQVRFX0FORF9USU1FX0lOUFVUX1RZUEVTKQogICAgIHZpcnR1YWwgU3RyaW5nIGRhdGVGb3Jt
YXQoKSBvdmVycmlkZTsKQEAgLTY0LDcgKzY0LDYgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZh
dGU6Ci0gICAgZXhwbGljaXQgTG9jYWxlV2luKExDSUQpOwogICAgIFN0cmluZyBnZXRMb2NhbGVJ
bmZvU3RyaW5nKExDVFlQRSk7CiAgICAgdm9pZCBnZXRMb2NhbGVJbmZvKExDVFlQRSwgRFdPUkQm
KTsKICAgICB2b2lkIGVuc3VyZVNob3J0TW9udGhMYWJlbHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL1RleHRDb2RlY1dpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwCmluZGV4IGE1YmNhNzBiNDgy
NzIzMWZiNzIyMjBlNmExMzNjYTI2MGZlYmRmM2UuLmEzYTY1YWQ3NjAzNDBjNjUyZTNlMmJkZmZk
ODAyNDNjMTQ5NTZiZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
d2luL1RleHRDb2RlY1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93
aW4vVGV4dENvZGVjV2luLmNwcApAQCAtMTI5LDkgKzEyOSw5IEBAIHN0YXRpYyBVSU5UIGdldENv
ZGVQYWdlKGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgcmV0dXJuIGkgPT0gY2hhcnNldHMuZW5kKCkg
PyBDUF9BQ1AgOiBpLT52YWx1ZS5tX2NvZGVQYWdlOwogfQogCi1zdGF0aWMgUGFzc093blB0cjxU
ZXh0Q29kZWM+IG5ld1RleHRDb2RlY1dpbihjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBj
b25zdCB2b2lkKikKK3N0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VGV4dENvZGVjPiBuZXdUZXh0Q29k
ZWNXaW4oY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywgY29uc3Qgdm9pZCopCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0Q29kZWNXaW4oZ2V0Q29kZVBhZ2UoZW5jb2RpbmcubmFt
ZSgpKSkpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY1dpbj4oZ2V0Q29k
ZVBhZ2UoZW5jb2RpbmcubmFtZSgpKSk7CiB9CiAKIFRleHRDb2RlY1dpbjo6VGV4dENvZGVjV2lu
KFVJTlQgY29kZVBhZ2UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243269</attachid>
            <date>2014-12-14 07:35:06 -0800</date>
            <delta_ts>2014-12-14 08:05:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-139395-20141215003551.patch</filename>
            <type>text/plain</type>
            <size>20753</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3MjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWY0ZmU1NzZmMmU2ZTBk
ZmJjZDdmMGE4ODc2NTVjZWRjOWNkNzM0ZS4uZTRhMzZkYTk2OGI1OWQwYWE3NjI3OTdkZDMwYTRm
ZWRhZDQ0ODlhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE0LTEyLTE0ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgTW92ZSBXZWJD
b3JlL3BsYXRmb3JtL3RleHQgdG8gc3RkOjp1bmlxdWVfcHRyIAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5Mzk1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQXMgYSBzdGVwIHRvIHVzZSBzdGQ6OnVuaXF1ZV9w
dHI8PiwgdGhpcyBwYXRjaCByZXBsYWNlcyBPd25QdHJ8UGFzc093blB0ciB3aXRoCisgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjw+IHwgc3RkOjptYWtlX3VuaXF1ZTw+LgorCisgICAgICAgICogZG9t
L0RvY3VtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBv
b2xJQ1UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVCcmVha0l0ZXJhdG9yUG9vbDo6TGluZUJy
ZWFrSXRlcmF0b3JQb29sKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVCcmVha0l0ZXJhdG9yUG9v
bDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMb2NhbGVJQ1U6OmNyZWF0ZUxhYmVsVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUZhbGxiYWNrTW9udGhMYWJlbHMpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmFsbGJhY2tB
TVBNTGFiZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZUlDVTo6aW5pdGlhbGl6ZURhdGVU
aW1lRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZUlDVTo6c2hvcnRNb250aExhYmVs
cyk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVJQ1U6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpMb2NhbGVJQ1U6OnN0YW5kQWxvbmVNb250aExhYmVscyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVJQ1U6OnNob3J0U3RhbmRBbG9uZU1vbnRoTGFiZWxz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2Nh
bGU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6TG9jYWxlOjpjcmVhdGVEZWZhdWx0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9U
ZXh0Q29kZWNVVEYxNi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2Rpbmcu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5oOgorICAgICAgICAq
IHBsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2Fs
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZU1hYzo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVXaW46OmNyZWF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC93
aW4vVGV4dENvZGVjV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5ld1RleHRDb2RlY1dpbik6
CisKIDIwMTQtMTItMTQgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAg
ICAgIEV2ZW50IGNvbnN0cnVjdGlvbiBoZWxwZXJzIHNob3VsZCByZXR1cm4gUmVmIGluc3RlYWQg
b2YgUGFzc1JlZlB0ci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggNWViMDc0NzA0ZGZlMTIyYWRh
ODcyNGE5ZmM5Y2MxMjViYzllNzQxMy4uZjU0ZDlkNWM4ZjViNmRmMmM2ZTAzMzBkNjMyNzJkNjA3
NzE5MjFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE2NzcsNyArMTY3Nyw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2RpZERpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzQ2hhbmdlZDsKICNl
bmRpZgogCi0gICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZywgT3duUHRyPExvY2FsZT4+
IExvY2FsZUlkZW50aWZpZXJUb0xvY2FsZU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWlj
U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPj4gTG9jYWxlSWRlbnRpZmllclRvTG9jYWxl
TWFwOwogICAgIExvY2FsZUlkZW50aWZpZXJUb0xvY2FsZU1hcCBtX2xvY2FsZUNhY2hlOwogCiAj
aWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaAppbmRleCA2NzRhMDZkMzdj
Y2Q5OTczZDE0NmRjOGU0ZjJlNTRiNzA5YTQ1ZDExLi45NjBiNWQwMjBkNTlhYWJjZTYxY2MwNDcw
ZDdjYzMwMDkwYjU5ZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNs
dWRlIDx1bmljb2RlL3VicmsuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC00OCw4ICs0Nyw2IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuICoqcG9vbDsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc093blB0
cjxMaW5lQnJlYWtJdGVyYXRvclBvb2w+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBM
aW5lQnJlYWtJdGVyYXRvclBvb2wpOyB9Ci0KICAgICBzdGF0aWMgU3RyaW5nIG1ha2VMb2NhbGVX
aXRoQnJlYWtLZXl3b3JkKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVy
YXRvck1vZGUgbW9kZSkKICAgICB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgbG9jYWxlV2l0aEtl
eXdvcmQ7CkBAIC0xMTMsOCArMTEwLDYgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAg
ICBMaW5lQnJlYWtJdGVyYXRvclBvb2woKSB7IH0KLQogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
Y2FwYWNpdHkgPSA0OwogCiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8QXRvbWljU3RyaW5nLCBUZXh0
QnJlYWtJdGVyYXRvcio+IEVudHJ5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9Mb2NhbGVJQ1UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2Nh
bGVJQ1UuY3BwCmluZGV4IGExZTY1OWU3MDU2ZDU3MWQ1OTI4ZjA4NDQ1NzVlYTc2NzViNDE0ZTIu
LmEzYTI4MTg3ODIxOWI0ZGI5MTZjZWE2YjRmY2NlNTRjYWYzZWI1MjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNs
dWRlIDx1bmljb2RlL3VkYXRwZy5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdWxvYy5oPgogI2luY2x1
ZGUgPHd0Zi9EYXRlTWF0aC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgaWN1OwpAQCAt
NDQsOSArNDMsOSBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVBhc3NPd25QdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2FsZSkKK3N0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgbG9jYWxlKQogewotICAgIHJldHVybiBMb2NhbGVJQ1U6OmNyZWF0ZShsb2Nh
bGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
TG9jYWxlSUNVPihsb2NhbGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKIExvY2FsZUlD
VTo6TG9jYWxlSUNVKGNvbnN0IGNoYXIqIGxvY2FsZSkKQEAgLTczLDExICs3Miw2IEBAIExvY2Fs
ZUlDVTo6fkxvY2FsZUlDVSgpCiAjZW5kaWYKIH0KIAotUGFzc093blB0cjxMb2NhbGVJQ1U+IExv
Y2FsZUlDVTo6Y3JlYXRlKGNvbnN0IGNoYXIqIGxvY2FsZVN0cmluZykKLXsKLSAgICByZXR1cm4g
YWRvcHRQdHIobmV3IExvY2FsZUlDVShsb2NhbGVTdHJpbmcpKTsKLX0KLQogU3RyaW5nIExvY2Fs
ZUlDVTo6ZGVjaW1hbFN5bWJvbChVTnVtYmVyRm9ybWF0U3ltYm9sIHN5bWJvbCkKIHsKICAgICBV
RXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKQEAgLTE3MCwzOSArMTY0LDM5IEBAIHN0
YXRpYyBTdHJpbmcgZ2V0RGF0ZUZvcm1hdFBhdHRlcm4oY29uc3QgVURhdGVGb3JtYXQqIGRhdGVG
b3JtYXQpCiAgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoYnVmZmVyKTsKIH0KIAotUGFzc093blB0
cjxWZWN0b3I8U3RyaW5nPiA+IExvY2FsZUlDVTo6Y3JlYXRlTGFiZWxWZWN0b3IoY29uc3QgVURh
dGVGb3JtYXQqIGRhdGVGb3JtYXQsIFVEYXRlRm9ybWF0U3ltYm9sVHlwZSB0eXBlLCBpbnQzMl90
IHN0YXJ0SW5kZXgsIGludDMyX3Qgc2l6ZSkKK3N0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RyaW5n
Pj4gTG9jYWxlSUNVOjpjcmVhdGVMYWJlbFZlY3Rvcihjb25zdCBVRGF0ZUZvcm1hdCogZGF0ZUZv
cm1hdCwgVURhdGVGb3JtYXRTeW1ib2xUeXBlIHR5cGUsIGludDMyX3Qgc3RhcnRJbmRleCwgaW50
MzJfdCBzaXplKQogewogICAgIGlmICghZGF0ZUZvcm1hdCkKLSAgICAgICAgcmV0dXJuIFBhc3NP
d25QdHI8VmVjdG9yPFN0cmluZz4gPigpOworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICBpZiAodWRhdF9jb3VudFN5bWJvbHMoZGF0ZUZvcm1h
dCwgdHlwZSkgIT0gc3RhcnRJbmRleCArIHNpemUpCi0gICAgICAgIHJldHVybiBQYXNzT3duUHRy
PFZlY3RvcjxTdHJpbmc+ID4oKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVj
dG9yPFN0cmluZz4+KCk7CiAKLSAgICBPd25QdHI8VmVjdG9yPFN0cmluZz4gPiBsYWJlbHMgPSBh
ZG9wdFB0cihuZXcgVmVjdG9yPFN0cmluZz4oKSk7CisgICAgYXV0byBsYWJlbHMgPSBzdGQ6Om1h
a2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgIGxhYmVscy0+cmVzZXJ2ZUNhcGFjaXR5
KHNpemUpOwogICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAg
ICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICAgICAgaW50MzJfdCBsZW5n
dGggPSB1ZGF0X2dldFN5bWJvbHMoZGF0ZUZvcm1hdCwgdHlwZSwgc3RhcnRJbmRleCArIGksIDAs
IDAsICZzdGF0dXMpOwogICAgICAgICBpZiAoc3RhdHVzICE9IFVfQlVGRkVSX09WRVJGTE9XX0VS
Uk9SKQotICAgICAgICAgICAgcmV0dXJuIFBhc3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPigpOwor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAg
ICAgICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKGxlbmd0aCk7CiAgICAgICAgIHN0YXR1cyA9IFVf
WkVST19FUlJPUjsKICAgICAgICAgdWRhdF9nZXRTeW1ib2xzKGRhdGVGb3JtYXQsIHR5cGUsIHN0
YXJ0SW5kZXggKyBpLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgsICZzdGF0dXMpOwogICAgICAgICBp
ZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgICAgICByZXR1cm4gUGFzc093blB0cjxWZWN0
b3I8U3RyaW5nPiA+KCk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0
b3I8U3RyaW5nPj4oKTsKICAgICAgICAgbGFiZWxzLT5hcHBlbmQoU3RyaW5nOjphZG9wdChidWZm
ZXIpKTsKICAgICB9Ci0gICAgcmV0dXJuIGxhYmVscy5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdU
Rjo6bW92ZShsYWJlbHMpOwogfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFURV9BTkRfVElNRV9J
TlBVVF9UWVBFUykKLXN0YXRpYyBQYXNzT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gY3JlYXRlRmFs
bGJhY2tNb250aExhYmVscygpCitzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+
PiBjcmVhdGVGYWxsYmFja01vbnRoTGFiZWxzKCkKIHsKLSAgICBPd25QdHI8VmVjdG9yPFN0cmlu
Zz4gPiBsYWJlbHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFN0cmluZz4oKSk7CisgICAgYXV0byBs
YWJlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgIGxhYmVscy0+
cmVzZXJ2ZUNhcGFjaXR5KFdURl9BUlJBWV9MRU5HVEgoV1RGOjptb250aEZ1bGxOYW1lKSk7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoV1RGOjptb250aEZ1
bGxOYW1lKTsgKytpKQogICAgICAgICBsYWJlbHMtPmFwcGVuZChXVEY6Om1vbnRoRnVsbE5hbWVb
aV0pOwotICAgIHJldHVybiBsYWJlbHMucmVsZWFzZSgpOworICAgIHJldHVybiBXVEY6Om1vdmUo
bGFiZWxzKTsKIH0KIAogY29uc3QgVmVjdG9yPFN0cmluZz4mIExvY2FsZUlDVTo6bW9udGhMYWJl
bHMoKQpAQCAtMjIwLDEzICsyMTQsMTMgQEAgY29uc3QgVmVjdG9yPFN0cmluZz4mIExvY2FsZUlD
VTo6bW9udGhMYWJlbHMoKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFURV9BTkRfVElNRV9JTlBV
VF9UWVBFUykKLXN0YXRpYyBQYXNzT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gY3JlYXRlRmFsbGJh
Y2tBTVBNTGFiZWxzKCkKK3N0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IGNy
ZWF0ZUZhbGxiYWNrQU1QTUxhYmVscygpCiB7Ci0gICAgT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4g
bGFiZWxzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxTdHJpbmc+KCkpOworICAgIGF1dG8gbGFiZWxz
ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICBsYWJlbHMtPnJlc2Vy
dmVDYXBhY2l0eSgyKTsKICAgICBsYWJlbHMtPmFwcGVuZCgiQU0iKTsKICAgICBsYWJlbHMtPmFw
cGVuZCgiUE0iKTsKLSAgICByZXR1cm4gbGFiZWxzLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RG
Ojptb3ZlKGxhYmVscyk7CiB9CiAKIHZvaWQgTG9jYWxlSUNVOjppbml0aWFsaXplRGF0ZVRpbWVG
b3JtYXQoKQpAQCAtMjUxLDcgKzI0NSw3IEBAIHZvaWQgTG9jYWxlSUNVOjppbml0aWFsaXplRGF0
ZVRpbWVGb3JtYXQoKQogICAgIG1fZGF0ZVRpbWVGb3JtYXRXaXRob3V0U2Vjb25kcyA9IGdldERh
dGVGb3JtYXRQYXR0ZXJuKGRhdGVUaW1lRm9ybWF0V2l0aG91dFNlY29uZHMpOwogICAgIHVkYXRf
Y2xvc2UoZGF0ZVRpbWVGb3JtYXRXaXRob3V0U2Vjb25kcyk7CiAKLSAgICBPd25QdHI8VmVjdG9y
PFN0cmluZz4gPiB0aW1lQU1QTUxhYmVscyA9IGNyZWF0ZUxhYmVsVmVjdG9yKG1fbWVkaXVtVGlt
ZUZvcm1hdCwgVURBVF9BTV9QTVMsIFVDQUxfQU0sIDIpOworICAgIGF1dG8gdGltZUFNUE1MYWJl
bHMgPSBjcmVhdGVMYWJlbFZlY3RvcihtX21lZGl1bVRpbWVGb3JtYXQsIFVEQVRfQU1fUE1TLCBV
Q0FMX0FNLCAyKTsKICAgICBpZiAoIXRpbWVBTVBNTGFiZWxzKQogICAgICAgICB0aW1lQU1QTUxh
YmVscyA9IGNyZWF0ZUZhbGxiYWNrQU1QTUxhYmVscygpOwogICAgIG1fdGltZUFNUE1MYWJlbHMg
PSAqdGltZUFNUE1MYWJlbHM7CkBAIC0zMzYsNyArMzMwLDcgQEAgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIExvY2FsZUlDVTo6c2hvcnRNb250aExhYmVscygpCiAgICAgaWYgKCFtX3Nob3J0TW9udGhM
YWJlbHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbV9zaG9ydE1vbnRoTGFiZWxzOwogICAg
IGlmIChpbml0aWFsaXplU2hvcnREYXRlRm9ybWF0KCkpIHsKLSAgICAgICAgaWYgKE93blB0cjxW
ZWN0b3I8U3RyaW5nPiA+IGxhYmVscyA9IGNyZWF0ZUxhYmVsVmVjdG9yKG1fc2hvcnREYXRlRm9y
bWF0LCBVREFUX1NIT1JUX01PTlRIUywgVUNBTF9KQU5VQVJZLCAxMikpIHsKKyAgICAgICAgaWYg
KGF1dG8gbGFiZWxzID0gY3JlYXRlTGFiZWxWZWN0b3IobV9zaG9ydERhdGVGb3JtYXQsIFVEQVRf
U0hPUlRfTU9OVEhTLCBVQ0FMX0pBTlVBUlksIDEyKSkgewogICAgICAgICAgICAgbV9zaG9ydE1v
bnRoTGFiZWxzID0gKmxhYmVsczsKICAgICAgICAgICAgIHJldHVybiBtX3Nob3J0TW9udGhMYWJl
bHM7CiAgICAgICAgIH0KQEAgLTM1Miw3ICszNDYsNyBAQCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
TG9jYWxlSUNVOjpzdGFuZEFsb25lTW9udGhMYWJlbHMoKQogICAgIGlmICghbV9zdGFuZEFsb25l
TW9udGhMYWJlbHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbV9zdGFuZEFsb25lTW9udGhM
YWJlbHM7CiAgICAgaWYgKGluaXRpYWxpemVTaG9ydERhdGVGb3JtYXQoKSkgewotICAgICAgICBp
ZiAoT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gbGFiZWxzID0gY3JlYXRlTGFiZWxWZWN0b3IobV9z
aG9ydERhdGVGb3JtYXQsIFVEQVRfU1RBTkRBTE9ORV9NT05USFMsIFVDQUxfSkFOVUFSWSwgMTIp
KSB7CisgICAgICAgIGlmIChhdXRvIGxhYmVscyA9IGNyZWF0ZUxhYmVsVmVjdG9yKG1fc2hvcnRE
YXRlRm9ybWF0LCBVREFUX1NUQU5EQUxPTkVfTU9OVEhTLCBVQ0FMX0pBTlVBUlksIDEyKSkgewog
ICAgICAgICAgICAgbV9zdGFuZEFsb25lTW9udGhMYWJlbHMgPSAqbGFiZWxzOwogICAgICAgICAg
ICAgcmV0dXJuIG1fc3RhbmRBbG9uZU1vbnRoTGFiZWxzOwogICAgICAgICB9CkBAIC0zNjYsNyAr
MzYwLDcgQEAgY29uc3QgVmVjdG9yPFN0cmluZz4mIExvY2FsZUlDVTo6c2hvcnRTdGFuZEFsb25l
TW9udGhMYWJlbHMoKQogICAgIGlmICghbV9zaG9ydFN0YW5kQWxvbmVNb250aExhYmVscy5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBtX3Nob3J0U3RhbmRBbG9uZU1vbnRoTGFiZWxzOwogICAg
IGlmIChpbml0aWFsaXplU2hvcnREYXRlRm9ybWF0KCkpIHsKLSAgICAgICAgaWYgKE93blB0cjxW
ZWN0b3I8U3RyaW5nPiA+IGxhYmVscyA9IGNyZWF0ZUxhYmVsVmVjdG9yKG1fc2hvcnREYXRlRm9y
bWF0LCBVREFUX1NUQU5EQUxPTkVfU0hPUlRfTU9OVEhTLCBVQ0FMX0pBTlVBUlksIDEyKSkgewor
ICAgICAgICBpZiAoYXV0byBsYWJlbHMgPSBjcmVhdGVMYWJlbFZlY3RvcihtX3Nob3J0RGF0ZUZv
cm1hdCwgVURBVF9TVEFOREFMT05FX1NIT1JUX01PTlRIUywgVUNBTF9KQU5VQVJZLCAxMikpIHsK
ICAgICAgICAgICAgIG1fc2hvcnRTdGFuZEFsb25lTW9udGhMYWJlbHMgPSAqbGFiZWxzOwogICAg
ICAgICAgICAgcmV0dXJuIG1fc2hvcnRTdGFuZEFsb25lTW9udGhMYWJlbHM7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5oCmluZGV4IDE1MTk3MTBkOWVi
ZmIzODAwNTU1ZGYwODQyNGFmZDFkMDI0ZGE2NTAuLjVlY2M3NWMyZmFmNmFhY2ExYjQ5MWE0ZmE4
OTVlN2UxNjNlYjFiYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
TG9jYWxlSUNVLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1Uu
aApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgPHVuaWNvZGUvdWRhdC5oPgogI2luY2x1ZGUg
PHVuaWNvZGUvdW51bS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3Rm
L093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDYsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAvLyBhbmQgTG9jYWxpemVkTnVtYmVySUNVVGVzdC5jcHAuCiBjbGFzcyBMb2NhbGVJQ1UgOiBw
dWJsaWMgTG9jYWxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxMb2NhbGVJQ1U+
IGNyZWF0ZShjb25zdCBjaGFyKiBsb2NhbGVTdHJpbmcpOworICAgIGV4cGxpY2l0IExvY2FsZUlD
VShjb25zdCBjaGFyKik7CiAgICAgdmlydHVhbCB+TG9jYWxlSUNVKCk7CiAKICNpZiBFTkFCTEUo
REFURV9BTkRfVElNRV9JTlBVVF9UWVBFUykKQEAgLTY1LDcgKzY0LDYgQEAgcHVibGljOgogI2Vu
ZGlmCiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTG9jYWxlSUNVKGNvbnN0IGNoYXIqKTsKICAg
ICBTdHJpbmcgZGVjaW1hbFN5bWJvbChVTnVtYmVyRm9ybWF0U3ltYm9sKTsKICAgICBTdHJpbmcg
ZGVjaW1hbFRleHRBdHRyaWJ1dGUoVU51bWJlckZvcm1hdFRleHRBdHRyaWJ1dGUpOwogICAgIHZp
cnR1YWwgdm9pZCBpbml0aWFsaXplTG9jYWxlRGF0YSgpIG92ZXJyaWRlOwpAQCAtNzcsNyArNzUs
NyBAQCBwcml2YXRlOgogICAgIFVEYXRlRm9ybWF0KiBvcGVuRGF0ZUZvcm1hdChVRGF0ZUZvcm1h
dFN0eWxlIHRpbWVTdHlsZSwgVURhdGVGb3JtYXRTdHlsZSBkYXRlU3R5bGUpIGNvbnN0OwogCiAj
aWYgRU5BQkxFKERBVEVfQU5EX1RJTUVfSU5QVVRfVFlQRVMpCi0gICAgUGFzc093blB0cjxWZWN0
b3I8U3RyaW5nPiA+IGNyZWF0ZUxhYmVsVmVjdG9yKGNvbnN0IFVEYXRlRm9ybWF0KiwgVURhdGVG
b3JtYXRTeW1ib2xUeXBlLCBpbnQzMl90IHN0YXJ0SW5kZXgsIGludDMyX3Qgc2l6ZSk7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+PiBjcmVhdGVMYWJlbFZlY3Rvcihjb25zdCBV
RGF0ZUZvcm1hdCosIFVEYXRlRm9ybWF0U3ltYm9sVHlwZSwgaW50MzJfdCBzdGFydEluZGV4LCBp
bnQzMl90IHNpemUpOwogICAgIHZvaWQgaW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KCk7CiAjZW5k
aWYKIApAQCAtODgsNyArODYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kaWRDcmVhdGVTaG9y
dERhdGVGb3JtYXQ7CiAKICNpZiBFTkFCTEUoREFURV9BTkRfVElNRV9JTlBVVF9UWVBFUykKLSAg
ICBPd25QdHI8VmVjdG9yPFN0cmluZz4gPiBtX21vbnRoTGFiZWxzOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxWZWN0b3I8U3RyaW5nPj4gbV9tb250aExhYmVsczsKICAgICBTdHJpbmcgbV9kYXRlRm9y
bWF0OwogICAgIFN0cmluZyBtX21vbnRoRm9ybWF0OwogICAgIFN0cmluZyBtX3Nob3J0TW9udGhG
b3JtYXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZU5v
bmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNwcAppbmRl
eCA5NjE4MzNlNDJkZDgwN2RiNTZjMGE5MWJkOWI0NmViYzJlY2U5ZWM4Li5lYTE4YTdiNjg1YTI5
OWRhYWY4MzQxODVmMzAzZTAzN2I3NjNhZDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvTG9jYWxlTm9uZS5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybUxvY2FsZS5oIgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5o
PgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNTYsOSArNTUsOSBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCi1QYXNzT3duUHRyPExvY2Fs
ZT4gTG9jYWxlOjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJikKK3N0ZDo6dW5pcXVlX3B0cjxM
b2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBMb2NhbGVOb25lKCkpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PExvY2FsZU5vbmU+KCk7CiB9CiAKIExvY2FsZU5vbmU6On5Mb2NhbGVOb25lKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUuaAppbmRleCBlZjg1MjJjODk1
NDI3NDU0ZDNkYjFiYjAzYjM1YzQwMjc0ZDZkOTllLi5jMmQyNTNkY2Q1OTQ3MTY5MzVjZDI0NGU3
MWE3ZjJjZWZjZDczMDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1BsYXRmb3JtTG9jYWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0
Zm9ybUxvY2FsZS5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJEYXRlQ29tcG9uZW50
cy5oIgogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNDEsOCArNDAsOCBAQCBjbGFzcyBMb2NhbGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KExvY2FsZSk7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxMb2NhbGU+IGNyZWF0
ZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpOwotICAgIHN0YXRpYyBQYXNz
T3duUHRyPExvY2FsZT4gY3JlYXRlRGVmYXVsdCgpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8TG9jYWxlPiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKTsK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExvY2FsZT4gY3JlYXRlRGVmYXVsdCgpOwogCiAg
ICAgLy8gQ29udmVydHMgdGhlIHNwZWNpZmllZCBudW1iZXIgc3RyaW5nIHRvIGFub3RoZXIgbnVt
YmVyIHN0cmluZyBsb2NhbGl6ZWQKICAgICAvLyBmb3IgdGhpcyBMb2NhbGUgbG9jYWxlLiBUaGUg
aW5wdXQgc3RyaW5nIG11c3QgY29uZm9ybSB0byBIVE1MCkBAIC0xNTAsNyArMTQ5LDcgQEAgcHJp
dmF0ZToKICAgICBib29sIG1faGFzTG9jYWxlRGF0YTsKIH07CiAKLWlubGluZSBQYXNzT3duUHRy
PExvY2FsZT4gTG9jYWxlOjpjcmVhdGVEZWZhdWx0KCkKK2lubGluZSBzdGQ6OnVuaXF1ZV9wdHI8
TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZURlZmF1bHQoKQogewogICAgIHJldHVybiBMb2NhbGU6OmNy
ZWF0ZShkZWZhdWx0TGFuZ3VhZ2UoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAKaW5kZXggNDY3M2JlMDBmNTRhZThjZWM5ZWUwOWQ2
MDMyYWNmNmZjY2UxM2ZjMC4uN2E5MTAwMmZjYTU3YjBkMGJlZTgyZGIxYzdhNjUxY2JhYjhjMjFk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRp
bjEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4x
LmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIlRleHRDb2RlY0xhdGluMS5oIgogCiAj
aW5jbHVkZSAiVGV4dENvZGVjQVNDSUlGYXN0UGF0aC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcAppbmRleCAxOTVh
YmE0OGNhNWE3YTg0NzgwMGU2YzFkNTFhNjYzNzFhN2M0YWFiLi42ZTVkNDQxNTNmMDBkN2I0YTA0
MmRmZjlmMTY2NjQxNjIzZTI3OGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1RleHRDb2RlY1VURjE2LmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlRleHRDb2RlY1VURjE2LmgiCiAKLSNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmNwcAppbmRleCBkYjgyYmQ3
NTkwZjg1N2Y3Yzc5MzIxOGZlZDQ1Y2RmYjAyOTgxOTQyLi4wNWRhODRiZjkzMTNkNWQ0MDA3MGYy
YWI0NjdjZGY3NjBhN2Y4NjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1RleHRFbmNvZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0RW5jb2RpbmcuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiVGV4dENvZGVjLmgi
CiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nUmVnaXN0cnkuaCIKICNpbmNsdWRlIDx1bmljb2RlL3Vu
b3JtLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nVmlldy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9t
YWMvTG9jYWxlTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVN
YWMuaAppbmRleCA1M2E2ZGI3YTk4ZTgxZmY3YWUyYmQzM2NlNWEyZmRhMzE5M2UwMWJmLi44NjUx
YzQzZWM0ZmE1Y2I1YjBmOTI1ODQ1MDE0OTVjZmVmOTY0Njc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBE
YXRlQ29tcG9uZW50czsKIAogY2xhc3MgTG9jYWxlTWFjIDogcHVibGljIExvY2FsZSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TG9jYWxlTWFjPiBjcmVhdGUoTlNMb2NhbGUqKTsK
KyAgICBleHBsaWNpdCBMb2NhbGVNYWMoTlNMb2NhbGUqKTsKICAgICB+TG9jYWxlTWFjKCk7CiAK
ICNpZiBQTEFURk9STShJT1MpCkBAIC03MCw3ICs3MCw2IEBAIHB1YmxpYzoKICNlbmRpZgogCiBw
cml2YXRlOgotICAgIGV4cGxpY2l0IExvY2FsZU1hYyhOU0xvY2FsZSopOwogICAgIFJldGFpblB0
cjxOU0RhdGVGb3JtYXR0ZXI+IHNob3J0RGF0ZUZvcm1hdHRlcigpOwogICAgIHZpcnR1YWwgdm9p
ZCBpbml0aWFsaXplTG9jYWxlRGF0YSgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0KaW5kZXggYzM3MjRjOWVmZGM5YzNjOGVkYjE0
ZGU1YzZiYWQxMjcyYzRjNjM1Ni4uNjQyM2VlMzM4ZDY1YTU1YmQ1NWE1ZDhmYWQ4YWNmZmU5Zjky
YTA1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxl
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5t
bQpAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAjaW5jbHVkZSAiTG9j
YWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgotI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtNjcsOSArNjYsOSBAQCBzdGF0aWMgUmV0YWlu
UHRyPE5TTG9jYWxlPiBkZXRlcm1pbmVMb2NhbGUoY29uc3QgU3RyaW5nJiBsb2NhbGUpCiAgICAg
IHJldHVybiBhZG9wdE5TKFtbTlNMb2NhbGUgYWxsb2NdIGluaXRXaXRoTG9jYWxlSWRlbnRpZmll
cjpsb2NhbGVdKTsKIH0KIAotUGFzc093blB0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0
IEF0b21pY1N0cmluZyYgbG9jYWxlKQorc3RkOjp1bmlxdWVfcHRyPExvY2FsZT4gTG9jYWxlOjpj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUpCiB7Ci0gICAgcmV0dXJuIExvY2FsZU1h
Yzo6Y3JlYXRlKGRldGVybWluZUxvY2FsZShsb2NhbGUuc3RyaW5nKCkpLmdldCgpKTsKKyAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMb2NhbGVNYWM+KGRldGVybWluZUxvY2FsZShsb2NhbGUu
c3RyaW5nKCkpLmdldCgpKTsKIH0KIAogc3RhdGljIFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+
IGNyZWF0ZURhdGVUaW1lRm9ybWF0dGVyKE5TTG9jYWxlKiBsb2NhbGUsIE5TQ2FsZW5kYXIqIGNh
bGVuZGFyLCBOU0RhdGVGb3JtYXR0ZXJTdHlsZSBkYXRlU3R5bGUsIE5TRGF0ZUZvcm1hdHRlclN0
eWxlIHRpbWVTdHlsZSkKQEAgLTEwNCwxMSArMTAzLDYgQEAgTG9jYWxlTWFjOjp+TG9jYWxlTWFj
KCkKIHsKIH0KIAotUGFzc093blB0cjxMb2NhbGVNYWM+IExvY2FsZU1hYzo6Y3JlYXRlKE5TTG9j
YWxlKiBsb2NhbGUpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBMb2NhbGVNYWMobG9jYWxl
KSk7Ci19Ci0KIFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+IExvY2FsZU1hYzo6c2hvcnREYXRl
Rm9ybWF0dGVyKCkKIHsKICAgICByZXR1cm4gY3JlYXRlRGF0ZVRpbWVGb3JtYXR0ZXIobV9sb2Nh
bGUuZ2V0KCksIG1fZ3JlZ29yaWFuQ2FsZW5kYXIuZ2V0KCksIE5TRGF0ZUZvcm1hdHRlclNob3J0
U3R5bGUsIE5TRGF0ZUZvcm1hdHRlck5vU3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvbWFjL1RleHRDb2RlY01hYy5jcHAKaW5kZXggYTE2ZTMwN2JjNDZmM2NhNjE5
NmQ3YTBlZjA5MGJiNWJhZDBkNWVmOS4uNDdhNmE5NjkxOTc5M2VkZDUyNGM0OGU4NWYwNTY5OGRh
MTZhNGJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4
dENvZGVjTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0
Q29kZWNNYWMuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiQ2hhcnNldERhdGEuaCIK
ICNpbmNsdWRlICJUaHJlYWRHbG9iYWxEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxl
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAK
aW5kZXggYWIwMzZhYTBkMTAwZTAxYTQwOWMxMWM3MWFhMWYwZDc5NGY0NTQwMy4uMTQwYThlOWJm
YjEyNTY0ZTUzNjQxMGUzY2NjOTM5MzFjZGZjMTViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCkBAIC00MCw4ICs0MCw2IEBACiAjaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCkBAIC0xNDYsOSArMTQ0LDkgQEAgc3RhdGlj
IExDSUQgTENJREZyb21Mb2NhbGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUpCiAgICAgcmV0
dXJuIGxjaWQ7CiB9CiAKLVBhc3NPd25QdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIGxvY2FsZSkKK3N0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IExvY2FsZTo6Y3Jl
YXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQogewotICAgIHJldHVybiBMb2NhbGVXaW46
OmNyZWF0ZShMQ0lERnJvbUxvY2FsZShsb2NhbGUpKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxMb2NhbGVXaW4+KExDSURGcm9tTG9jYWxlKGxvY2FsZSkpOwogfQogCiBpbmxpbmUgTG9j
YWxlV2luOjpMb2NhbGVXaW4oTENJRCBsY2lkKQpAQCAtMTU3LDExICsxNTUsNiBAQCBpbmxpbmUg
TG9jYWxlV2luOjpMb2NhbGVXaW4oTENJRCBsY2lkKQogewogfQogCi1QYXNzT3duUHRyPExvY2Fs
ZVdpbj4gTG9jYWxlV2luOjpjcmVhdGUoTENJRCBsY2lkKQotewotICAgIHJldHVybiBhZG9wdFB0
cihuZXcgTG9jYWxlV2luKGxjaWQpKTsKLX0KLQogTG9jYWxlV2luOjp+TG9jYWxlV2luKCkKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdp
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmgKaW5kZXgg
ZWRjZWVmYThhYzNjNjU5ZWZjNTY3MWYxZjNmOWRlMjRhNWViNWQzMC4uOWZiZjk5NWRiMTRiMjll
Mzg2M2E0ZGJjMWE4NzRhNWE3YzVhYjdlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC93aW4vTG9jYWxlV2luLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RydWN0IERhdGVGb3JtYXRU
b2tlbjsKIAogY2xhc3MgTG9jYWxlV2luIDogcHVibGljIExvY2FsZSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NPd25QdHI8TG9jYWxlV2luPiBjcmVhdGUoTENJRCk7CisgICAgZXhwbGljaXQg
TG9jYWxlV2luKExDSUQpOwogICAgIH5Mb2NhbGVXaW4oKTsKICNpZiBFTkFCTEUoREFURV9BTkRf
VElNRV9JTlBVVF9UWVBFUykKICAgICB2aXJ0dWFsIFN0cmluZyBkYXRlRm9ybWF0KCkgb3ZlcnJp
ZGU7CkBAIC02NCw3ICs2NCw2IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIGV4
cGxpY2l0IExvY2FsZVdpbihMQ0lEKTsKICAgICBTdHJpbmcgZ2V0TG9jYWxlSW5mb1N0cmluZyhM
Q1RZUEUpOwogICAgIHZvaWQgZ2V0TG9jYWxlSW5mbyhMQ1RZUEUsIERXT1JEJik7CiAgICAgdm9p
ZCBlbnN1cmVTaG9ydE1vbnRoTGFiZWxzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcAppbmRleCBhNWJjYTcwYjQ4MjcyMzFmYjcyMjIw
ZTZhMTMzY2EyNjBmZWJkZjNlLi5hM2E2NWFkNzYwMzQwYzY1MmUzZTJiZGZmZDgwMjQzYzE0OTU2
YmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29k
ZWNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL1RleHRDb2Rl
Y1dpbi5jcHAKQEAgLTEyOSw5ICsxMjksOSBAQCBzdGF0aWMgVUlOVCBnZXRDb2RlUGFnZShjb25z
dCBjaGFyKiBuYW1lKQogICAgIHJldHVybiBpID09IGNoYXJzZXRzLmVuZCgpID8gQ1BfQUNQIDog
aS0+dmFsdWUubV9jb2RlUGFnZTsKIH0KIAotc3RhdGljIFBhc3NPd25QdHI8VGV4dENvZGVjPiBu
ZXdUZXh0Q29kZWNXaW4oY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywgY29uc3Qgdm9pZCop
CitzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFRleHRDb2RlYz4gbmV3VGV4dENvZGVjV2luKGNvbnN0
IFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIGNvbnN0IHZvaWQqKQogewotICAgIHJldHVybiBhZG9w
dFB0cihuZXcgVGV4dENvZGVjV2luKGdldENvZGVQYWdlKGVuY29kaW5nLm5hbWUoKSkpKTsKKyAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNXaW4+KGdldENvZGVQYWdlKGVuY29k
aW5nLm5hbWUoKSkpOwogfQogCiBUZXh0Q29kZWNXaW46OlRleHRDb2RlY1dpbihVSU5UIGNvZGVQ
YWdlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243272</attachid>
            <date>2014-12-14 08:06:06 -0800</date>
            <delta_ts>2014-12-15 09:17:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-139395-20141215010651.patch</filename>
            <type>text/plain</type>
            <size>21062</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3MjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWY0ZmU1NzZmMmU2ZTBk
ZmJjZDdmMGE4ODc2NTVjZWRjOWNkNzM0ZS4uZTRhMzZkYTk2OGI1OWQwYWE3NjI3OTdkZDMwYTRm
ZWRhZDQ0ODlhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE0LTEyLTE0ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgTW92ZSBXZWJD
b3JlL3BsYXRmb3JtL3RleHQgdG8gc3RkOjp1bmlxdWVfcHRyIAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5Mzk1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQXMgYSBzdGVwIHRvIHVzZSBzdGQ6OnVuaXF1ZV9w
dHI8PiwgdGhpcyBwYXRjaCByZXBsYWNlcyBPd25QdHJ8UGFzc093blB0ciB3aXRoCisgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjw+IHwgc3RkOjptYWtlX3VuaXF1ZTw+LgorCisgICAgICAgICogZG9t
L0RvY3VtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBv
b2xJQ1UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVCcmVha0l0ZXJhdG9yUG9vbDo6TGluZUJy
ZWFrSXRlcmF0b3JQb29sKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVCcmVha0l0ZXJhdG9yUG9v
bDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMb2NhbGVJQ1U6OmNyZWF0ZUxhYmVsVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUZhbGxiYWNrTW9udGhMYWJlbHMpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmFsbGJhY2tB
TVBNTGFiZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZUlDVTo6aW5pdGlhbGl6ZURhdGVU
aW1lRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZUlDVTo6c2hvcnRNb250aExhYmVs
cyk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVJQ1U6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpMb2NhbGVJQ1U6OnN0YW5kQWxvbmVNb250aExhYmVscyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVJQ1U6OnNob3J0U3RhbmRBbG9uZU1vbnRoTGFiZWxz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2Nh
bGU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6TG9jYWxlOjpjcmVhdGVEZWZhdWx0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9U
ZXh0Q29kZWNVVEYxNi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2Rpbmcu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5oOgorICAgICAgICAq
IHBsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2Fs
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZU1hYzo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVXaW46OmNyZWF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC93
aW4vVGV4dENvZGVjV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5ld1RleHRDb2RlY1dpbik6
CisKIDIwMTQtMTItMTQgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAg
ICAgIEV2ZW50IGNvbnN0cnVjdGlvbiBoZWxwZXJzIHNob3VsZCByZXR1cm4gUmVmIGluc3RlYWQg
b2YgUGFzc1JlZlB0ci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggNWViMDc0NzA0ZGZlMTIyYWRh
ODcyNGE5ZmM5Y2MxMjViYzllNzQxMy4uZjU0ZDlkNWM4ZjViNmRmMmM2ZTAzMzBkNjMyNzJkNjA3
NzE5MjFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE2NzcsNyArMTY3Nyw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2RpZERpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzQ2hhbmdlZDsKICNl
bmRpZgogCi0gICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZywgT3duUHRyPExvY2FsZT4+
IExvY2FsZUlkZW50aWZpZXJUb0xvY2FsZU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWlj
U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPj4gTG9jYWxlSWRlbnRpZmllclRvTG9jYWxl
TWFwOwogICAgIExvY2FsZUlkZW50aWZpZXJUb0xvY2FsZU1hcCBtX2xvY2FsZUNhY2hlOwogCiAj
aWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaAppbmRleCA2NzRhMDZkMzdj
Y2Q5OTczZDE0NmRjOGU0ZjJlNTRiNzA5YTQ1ZDExLi41Y2Y1MGE1ZDY1ODY1YTM0MWJmZWNmMzdj
YjVjYmRjOTY2ZjM4MTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNs
dWRlIDx1bmljb2RlL3VicmsuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC00MiwxNCArNDEsMTQgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTGluZUJyZWFrSXRlcmF0b3JQb29sIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShMaW5lQnJlYWtJdGVyYXRvclBvb2wpOwogcHVibGljOgorICAgIExp
bmVCcmVha0l0ZXJhdG9yUG9vbCgpIHsgfQorCiAgICAgc3RhdGljIExpbmVCcmVha0l0ZXJhdG9y
UG9vbCYgc2hhcmVkUG9vbCgpCiAgICAgewogICAgICAgICBzdGF0aWMgV1RGOjpUaHJlYWRTcGVj
aWZpYzxMaW5lQnJlYWtJdGVyYXRvclBvb2w+KiBwb29sID0gbmV3IFdURjo6VGhyZWFkU3BlY2lm
aWM8TGluZUJyZWFrSXRlcmF0b3JQb29sPjsKICAgICAgICAgcmV0dXJuICoqcG9vbDsKICAgICB9
CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxMaW5lQnJlYWtJdGVyYXRvclBvb2w+IGNyZWF0ZSgp
IHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBMaW5lQnJlYWtJdGVyYXRvclBvb2wpOyB9Ci0KICAgICBz
dGF0aWMgU3RyaW5nIG1ha2VMb2NhbGVXaXRoQnJlYWtLZXl3b3JkKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSkKICAgICB7CiAgICAgICAgIFN0
cmluZ0J1aWxkZXIgbG9jYWxlV2l0aEtleXdvcmQ7CkBAIC0xMTMsOCArMTEyLDYgQEAgcHVibGlj
OgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBMaW5lQnJlYWtJdGVyYXRvclBvb2woKSB7IH0KLQog
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY2FwYWNpdHkgPSA0OwogCiAgICAgdHlwZWRlZiBzdGQ6
OnBhaXI8QXRvbWljU3RyaW5nLCBUZXh0QnJlYWtJdGVyYXRvcio+IEVudHJ5OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwCmluZGV4IGExZTY1OWU3MDU2ZDU3MWQ1
OTI4ZjA4NDQ1NzVlYTc2NzViNDE0ZTIuLmEzYTI4MTg3ODIxOWI0ZGI5MTZjZWE2YjRmY2NlNTRj
YWYzZWI1MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxl
SUNVLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAK
QEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlIDx1bmljb2RlL3VkYXRwZy5oPgogI2luY2x1ZGUg
PHVuaWNvZGUvdWxvYy5oPgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgotI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiB1
c2luZyBuYW1lc3BhY2UgaWN1OwpAQCAtNDQsOSArNDMsOSBAQCB1c2luZyBuYW1lc3BhY2Ugc3Rk
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NPd25QdHI8TG9jYWxlPiBMb2NhbGU6OmNy
ZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSkKK3N0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+
IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQogewotICAgIHJldHVy
biBMb2NhbGVJQ1U6OmNyZWF0ZShsb2NhbGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TG9jYWxlSUNVPihsb2NhbGUuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiB9CiAKIExvY2FsZUlDVTo6TG9jYWxlSUNVKGNvbnN0IGNoYXIqIGxvY2FsZSkK
QEAgLTczLDExICs3Miw2IEBAIExvY2FsZUlDVTo6fkxvY2FsZUlDVSgpCiAjZW5kaWYKIH0KIAot
UGFzc093blB0cjxMb2NhbGVJQ1U+IExvY2FsZUlDVTo6Y3JlYXRlKGNvbnN0IGNoYXIqIGxvY2Fs
ZVN0cmluZykKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IExvY2FsZUlDVShsb2NhbGVTdHJp
bmcpKTsKLX0KLQogU3RyaW5nIExvY2FsZUlDVTo6ZGVjaW1hbFN5bWJvbChVTnVtYmVyRm9ybWF0
U3ltYm9sIHN5bWJvbCkKIHsKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsK
QEAgLTE3MCwzOSArMTY0LDM5IEBAIHN0YXRpYyBTdHJpbmcgZ2V0RGF0ZUZvcm1hdFBhdHRlcm4o
Y29uc3QgVURhdGVGb3JtYXQqIGRhdGVGb3JtYXQpCiAgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQo
YnVmZmVyKTsKIH0KIAotUGFzc093blB0cjxWZWN0b3I8U3RyaW5nPiA+IExvY2FsZUlDVTo6Y3Jl
YXRlTGFiZWxWZWN0b3IoY29uc3QgVURhdGVGb3JtYXQqIGRhdGVGb3JtYXQsIFVEYXRlRm9ybWF0
U3ltYm9sVHlwZSB0eXBlLCBpbnQzMl90IHN0YXJ0SW5kZXgsIGludDMyX3Qgc2l6ZSkKK3N0ZDo6
dW5pcXVlX3B0cjxWZWN0b3I8U3RyaW5nPj4gTG9jYWxlSUNVOjpjcmVhdGVMYWJlbFZlY3Rvcihj
b25zdCBVRGF0ZUZvcm1hdCogZGF0ZUZvcm1hdCwgVURhdGVGb3JtYXRTeW1ib2xUeXBlIHR5cGUs
IGludDMyX3Qgc3RhcnRJbmRleCwgaW50MzJfdCBzaXplKQogewogICAgIGlmICghZGF0ZUZvcm1h
dCkKLSAgICAgICAgcmV0dXJuIFBhc3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPigpOworICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICBpZiAodWRh
dF9jb3VudFN5bWJvbHMoZGF0ZUZvcm1hdCwgdHlwZSkgIT0gc3RhcnRJbmRleCArIHNpemUpCi0g
ICAgICAgIHJldHVybiBQYXNzT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4oKTsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAKLSAgICBPd25QdHI8VmVj
dG9yPFN0cmluZz4gPiBsYWJlbHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFN0cmluZz4oKSk7Cisg
ICAgYXV0byBsYWJlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAg
IGxhYmVscy0+cmVzZXJ2ZUNhcGFjaXR5KHNpemUpOwogICAgIGZvciAoaW50MzJfdCBpID0gMDsg
aSA8IHNpemU7ICsraSkgewogICAgICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJP
UjsKICAgICAgICAgaW50MzJfdCBsZW5ndGggPSB1ZGF0X2dldFN5bWJvbHMoZGF0ZUZvcm1hdCwg
dHlwZSwgc3RhcnRJbmRleCArIGksIDAsIDAsICZzdGF0dXMpOwogICAgICAgICBpZiAoc3RhdHVz
ICE9IFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SKQotICAgICAgICAgICAgcmV0dXJuIFBhc3NPd25Q
dHI8VmVjdG9yPFN0cmluZz4gPigpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAgICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKGxlbmd0
aCk7CiAgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICAgICAgdWRhdF9nZXRTeW1i
b2xzKGRhdGVGb3JtYXQsIHR5cGUsIHN0YXJ0SW5kZXggKyBpLCBidWZmZXIuZGF0YSgpLCBsZW5n
dGgsICZzdGF0dXMpOwogICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgICAg
ICByZXR1cm4gUGFzc093blB0cjxWZWN0b3I8U3RyaW5nPiA+KCk7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICAgICAgbGFiZWxzLT5h
cHBlbmQoU3RyaW5nOjphZG9wdChidWZmZXIpKTsKICAgICB9Ci0gICAgcmV0dXJuIGxhYmVscy5y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURjo6bW92ZShsYWJlbHMpOwogfQogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoREFURV9BTkRfVElNRV9JTlBVVF9UWVBFUykKLXN0YXRpYyBQYXNzT3duUHRyPFZl
Y3RvcjxTdHJpbmc+ID4gY3JlYXRlRmFsbGJhY2tNb250aExhYmVscygpCitzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+PiBjcmVhdGVGYWxsYmFja01vbnRoTGFiZWxzKCkKIHsK
LSAgICBPd25QdHI8VmVjdG9yPFN0cmluZz4gPiBsYWJlbHMgPSBhZG9wdFB0cihuZXcgVmVjdG9y
PFN0cmluZz4oKSk7CisgICAgYXV0byBsYWJlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxT
dHJpbmc+PigpOwogICAgIGxhYmVscy0+cmVzZXJ2ZUNhcGFjaXR5KFdURl9BUlJBWV9MRU5HVEgo
V1RGOjptb250aEZ1bGxOYW1lKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9B
UlJBWV9MRU5HVEgoV1RGOjptb250aEZ1bGxOYW1lKTsgKytpKQogICAgICAgICBsYWJlbHMtPmFw
cGVuZChXVEY6Om1vbnRoRnVsbE5hbWVbaV0pOwotICAgIHJldHVybiBsYWJlbHMucmVsZWFzZSgp
OworICAgIHJldHVybiBXVEY6Om1vdmUobGFiZWxzKTsKIH0KIAogY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIExvY2FsZUlDVTo6bW9udGhMYWJlbHMoKQpAQCAtMjIwLDEzICsyMTQsMTMgQEAgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIExvY2FsZUlDVTo6bW9udGhMYWJlbHMoKQogI2VuZGlmCiAKICNpZiBF
TkFCTEUoREFURV9BTkRfVElNRV9JTlBVVF9UWVBFUykKLXN0YXRpYyBQYXNzT3duUHRyPFZlY3Rv
cjxTdHJpbmc+ID4gY3JlYXRlRmFsbGJhY2tBTVBNTGFiZWxzKCkKK3N0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8VmVjdG9yPFN0cmluZz4+IGNyZWF0ZUZhbGxiYWNrQU1QTUxhYmVscygpCiB7Ci0gICAg
T3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gbGFiZWxzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxTdHJp
bmc+KCkpOworICAgIGF1dG8gbGFiZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5n
Pj4oKTsKICAgICBsYWJlbHMtPnJlc2VydmVDYXBhY2l0eSgyKTsKICAgICBsYWJlbHMtPmFwcGVu
ZCgiQU0iKTsKICAgICBsYWJlbHMtPmFwcGVuZCgiUE0iKTsKLSAgICByZXR1cm4gbGFiZWxzLnJl
bGVhc2UoKTsKKyAgICByZXR1cm4gV1RGOjptb3ZlKGxhYmVscyk7CiB9CiAKIHZvaWQgTG9jYWxl
SUNVOjppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoKQpAQCAtMjUxLDcgKzI0NSw3IEBAIHZvaWQg
TG9jYWxlSUNVOjppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoKQogICAgIG1fZGF0ZVRpbWVGb3Jt
YXRXaXRob3V0U2Vjb25kcyA9IGdldERhdGVGb3JtYXRQYXR0ZXJuKGRhdGVUaW1lRm9ybWF0V2l0
aG91dFNlY29uZHMpOwogICAgIHVkYXRfY2xvc2UoZGF0ZVRpbWVGb3JtYXRXaXRob3V0U2Vjb25k
cyk7CiAKLSAgICBPd25QdHI8VmVjdG9yPFN0cmluZz4gPiB0aW1lQU1QTUxhYmVscyA9IGNyZWF0
ZUxhYmVsVmVjdG9yKG1fbWVkaXVtVGltZUZvcm1hdCwgVURBVF9BTV9QTVMsIFVDQUxfQU0sIDIp
OworICAgIGF1dG8gdGltZUFNUE1MYWJlbHMgPSBjcmVhdGVMYWJlbFZlY3RvcihtX21lZGl1bVRp
bWVGb3JtYXQsIFVEQVRfQU1fUE1TLCBVQ0FMX0FNLCAyKTsKICAgICBpZiAoIXRpbWVBTVBNTGFi
ZWxzKQogICAgICAgICB0aW1lQU1QTUxhYmVscyA9IGNyZWF0ZUZhbGxiYWNrQU1QTUxhYmVscygp
OwogICAgIG1fdGltZUFNUE1MYWJlbHMgPSAqdGltZUFNUE1MYWJlbHM7CkBAIC0zMzYsNyArMzMw
LDcgQEAgY29uc3QgVmVjdG9yPFN0cmluZz4mIExvY2FsZUlDVTo6c2hvcnRNb250aExhYmVscygp
CiAgICAgaWYgKCFtX3Nob3J0TW9udGhMYWJlbHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
bV9zaG9ydE1vbnRoTGFiZWxzOwogICAgIGlmIChpbml0aWFsaXplU2hvcnREYXRlRm9ybWF0KCkp
IHsKLSAgICAgICAgaWYgKE93blB0cjxWZWN0b3I8U3RyaW5nPiA+IGxhYmVscyA9IGNyZWF0ZUxh
YmVsVmVjdG9yKG1fc2hvcnREYXRlRm9ybWF0LCBVREFUX1NIT1JUX01PTlRIUywgVUNBTF9KQU5V
QVJZLCAxMikpIHsKKyAgICAgICAgaWYgKGF1dG8gbGFiZWxzID0gY3JlYXRlTGFiZWxWZWN0b3Io
bV9zaG9ydERhdGVGb3JtYXQsIFVEQVRfU0hPUlRfTU9OVEhTLCBVQ0FMX0pBTlVBUlksIDEyKSkg
ewogICAgICAgICAgICAgbV9zaG9ydE1vbnRoTGFiZWxzID0gKmxhYmVsczsKICAgICAgICAgICAg
IHJldHVybiBtX3Nob3J0TW9udGhMYWJlbHM7CiAgICAgICAgIH0KQEAgLTM1Miw3ICszNDYsNyBA
QCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgTG9jYWxlSUNVOjpzdGFuZEFsb25lTW9udGhMYWJlbHMo
KQogICAgIGlmICghbV9zdGFuZEFsb25lTW9udGhMYWJlbHMuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gbV9zdGFuZEFsb25lTW9udGhMYWJlbHM7CiAgICAgaWYgKGluaXRpYWxpemVTaG9ydERh
dGVGb3JtYXQoKSkgewotICAgICAgICBpZiAoT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gbGFiZWxz
ID0gY3JlYXRlTGFiZWxWZWN0b3IobV9zaG9ydERhdGVGb3JtYXQsIFVEQVRfU1RBTkRBTE9ORV9N
T05USFMsIFVDQUxfSkFOVUFSWSwgMTIpKSB7CisgICAgICAgIGlmIChhdXRvIGxhYmVscyA9IGNy
ZWF0ZUxhYmVsVmVjdG9yKG1fc2hvcnREYXRlRm9ybWF0LCBVREFUX1NUQU5EQUxPTkVfTU9OVEhT
LCBVQ0FMX0pBTlVBUlksIDEyKSkgewogICAgICAgICAgICAgbV9zdGFuZEFsb25lTW9udGhMYWJl
bHMgPSAqbGFiZWxzOwogICAgICAgICAgICAgcmV0dXJuIG1fc3RhbmRBbG9uZU1vbnRoTGFiZWxz
OwogICAgICAgICB9CkBAIC0zNjYsNyArMzYwLDcgQEAgY29uc3QgVmVjdG9yPFN0cmluZz4mIExv
Y2FsZUlDVTo6c2hvcnRTdGFuZEFsb25lTW9udGhMYWJlbHMoKQogICAgIGlmICghbV9zaG9ydFN0
YW5kQWxvbmVNb250aExhYmVscy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBtX3Nob3J0U3Rh
bmRBbG9uZU1vbnRoTGFiZWxzOwogICAgIGlmIChpbml0aWFsaXplU2hvcnREYXRlRm9ybWF0KCkp
IHsKLSAgICAgICAgaWYgKE93blB0cjxWZWN0b3I8U3RyaW5nPiA+IGxhYmVscyA9IGNyZWF0ZUxh
YmVsVmVjdG9yKG1fc2hvcnREYXRlRm9ybWF0LCBVREFUX1NUQU5EQUxPTkVfU0hPUlRfTU9OVEhT
LCBVQ0FMX0pBTlVBUlksIDEyKSkgeworICAgICAgICBpZiAoYXV0byBsYWJlbHMgPSBjcmVhdGVM
YWJlbFZlY3RvcihtX3Nob3J0RGF0ZUZvcm1hdCwgVURBVF9TVEFOREFMT05FX1NIT1JUX01PTlRI
UywgVUNBTF9KQU5VQVJZLCAxMikpIHsKICAgICAgICAgICAgIG1fc2hvcnRTdGFuZEFsb25lTW9u
dGhMYWJlbHMgPSAqbGFiZWxzOwogICAgICAgICAgICAgcmV0dXJuIG1fc2hvcnRTdGFuZEFsb25l
TW9udGhMYWJlbHM7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvTG9jYWxlSUNVLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2Fs
ZUlDVS5oCmluZGV4IDE1MTk3MTBkOWViZmIzODAwNTU1ZGYwODQyNGFmZDFkMDI0ZGE2NTAuLjVl
Y2M3NWMyZmFmNmFhY2ExYjQ5MWE0ZmE4OTVlN2UxNjNlYjFiYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuaApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgPHVu
aWNvZGUvdWRhdC5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdW51bS5oPgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDYsNyArNDUs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBhbmQgTG9jYWxpemVkTnVtYmVySUNVVGVzdC5j
cHAuCiBjbGFzcyBMb2NhbGVJQ1UgOiBwdWJsaWMgTG9jYWxlIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc093blB0cjxMb2NhbGVJQ1U+IGNyZWF0ZShjb25zdCBjaGFyKiBsb2NhbGVTdHJpbmcp
OworICAgIGV4cGxpY2l0IExvY2FsZUlDVShjb25zdCBjaGFyKik7CiAgICAgdmlydHVhbCB+TG9j
YWxlSUNVKCk7CiAKICNpZiBFTkFCTEUoREFURV9BTkRfVElNRV9JTlBVVF9UWVBFUykKQEAgLTY1
LDcgKzY0LDYgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTG9j
YWxlSUNVKGNvbnN0IGNoYXIqKTsKICAgICBTdHJpbmcgZGVjaW1hbFN5bWJvbChVTnVtYmVyRm9y
bWF0U3ltYm9sKTsKICAgICBTdHJpbmcgZGVjaW1hbFRleHRBdHRyaWJ1dGUoVU51bWJlckZvcm1h
dFRleHRBdHRyaWJ1dGUpOwogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplTG9jYWxlRGF0YSgp
IG92ZXJyaWRlOwpAQCAtNzcsNyArNzUsNyBAQCBwcml2YXRlOgogICAgIFVEYXRlRm9ybWF0KiBv
cGVuRGF0ZUZvcm1hdChVRGF0ZUZvcm1hdFN0eWxlIHRpbWVTdHlsZSwgVURhdGVGb3JtYXRTdHls
ZSBkYXRlU3R5bGUpIGNvbnN0OwogCiAjaWYgRU5BQkxFKERBVEVfQU5EX1RJTUVfSU5QVVRfVFlQ
RVMpCi0gICAgUGFzc093blB0cjxWZWN0b3I8U3RyaW5nPiA+IGNyZWF0ZUxhYmVsVmVjdG9yKGNv
bnN0IFVEYXRlRm9ybWF0KiwgVURhdGVGb3JtYXRTeW1ib2xUeXBlLCBpbnQzMl90IHN0YXJ0SW5k
ZXgsIGludDMyX3Qgc2l6ZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+PiBj
cmVhdGVMYWJlbFZlY3Rvcihjb25zdCBVRGF0ZUZvcm1hdCosIFVEYXRlRm9ybWF0U3ltYm9sVHlw
ZSwgaW50MzJfdCBzdGFydEluZGV4LCBpbnQzMl90IHNpemUpOwogICAgIHZvaWQgaW5pdGlhbGl6
ZURhdGVUaW1lRm9ybWF0KCk7CiAjZW5kaWYKIApAQCAtODgsNyArODYsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9kaWRDcmVhdGVTaG9ydERhdGVGb3JtYXQ7CiAKICNpZiBFTkFCTEUoREFURV9B
TkRfVElNRV9JTlBVVF9UWVBFUykKLSAgICBPd25QdHI8VmVjdG9yPFN0cmluZz4gPiBtX21vbnRo
TGFiZWxzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RyaW5nPj4gbV9tb250aExhYmVs
czsKICAgICBTdHJpbmcgbV9kYXRlRm9ybWF0OwogICAgIFN0cmluZyBtX21vbnRoRm9ybWF0Owog
ICAgIFN0cmluZyBtX3Nob3J0TW9udGhGb3JtYXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9Mb2NhbGVOb25lLmNwcAppbmRleCA5NjE4MzNlNDJkZDgwN2RiNTZjMGE5MWJkOWI0NmVi
YzJlY2U5ZWM4Li5lYTE4YTdiNjg1YTI5OWRhYWY4MzQxODVmMzAzZTAzN2I3NjNhZDM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHAKQEAgLTI2LDcgKzI2
LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxvY2FsZS5oIgog
I2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTYsOSArNTUsOSBAQCBwcml2YXRlOgogI2VuZGlm
CiB9OwogCi1QYXNzT3duUHRyPExvY2FsZT4gTG9jYWxlOjpjcmVhdGUoY29uc3QgQXRvbWljU3Ry
aW5nJikKK3N0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21p
Y1N0cmluZyYpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBMb2NhbGVOb25lKCkpOworICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExvY2FsZU5vbmU+KCk7CiB9CiAKIExvY2FsZU5vbmU6
On5Mb2NhbGVOb25lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
UGxhdGZvcm1Mb2NhbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1M
b2NhbGUuaAppbmRleCBlZjg1MjJjODk1NDI3NDU0ZDNkYjFiYjAzYjM1YzQwMjc0ZDZkOTllLi5j
MmQyNTNkY2Q1OTQ3MTY5MzVjZDI0NGU3MWE3ZjJjZWZjZDczMDk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3JtTG9jYWxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5oCkBAIC0yOCw3ICsyOCw2IEBACiAK
ICNpbmNsdWRlICJEYXRlQ29tcG9uZW50cy5oIgogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCi0jaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDEsOCArNDAsOCBAQCBjbGFzcyBMb2NhbGUgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExvY2FsZSk7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc093blB0cjxMb2NhbGU+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50
aWZpZXIpOwotICAgIHN0YXRpYyBQYXNzT3duUHRyPExvY2FsZT4gY3JlYXRlRGVmYXVsdCgpOwor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBjcmVhdGUoY29uc3QgQXRvbWljU3Ry
aW5nJiBsb2NhbGVJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExvY2Fs
ZT4gY3JlYXRlRGVmYXVsdCgpOwogCiAgICAgLy8gQ29udmVydHMgdGhlIHNwZWNpZmllZCBudW1i
ZXIgc3RyaW5nIHRvIGFub3RoZXIgbnVtYmVyIHN0cmluZyBsb2NhbGl6ZWQKICAgICAvLyBmb3Ig
dGhpcyBMb2NhbGUgbG9jYWxlLiBUaGUgaW5wdXQgc3RyaW5nIG11c3QgY29uZm9ybSB0byBIVE1M
CkBAIC0xNTAsNyArMTQ5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzTG9jYWxlRGF0YTsK
IH07CiAKLWlubGluZSBQYXNzT3duUHRyPExvY2FsZT4gTG9jYWxlOjpjcmVhdGVEZWZhdWx0KCkK
K2lubGluZSBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZURlZmF1bHQoKQog
ewogICAgIHJldHVybiBMb2NhbGU6OmNyZWF0ZShkZWZhdWx0TGFuZ3VhZ2UoKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAKaW5kZXgg
NDY3M2JlMDBmNTRhZThjZWM5ZWUwOWQ2MDMyYWNmNmZjY2UxM2ZjMC4uN2E5MTAwMmZjYTU3YjBk
MGJlZTgyZGIxYzdhNjUxY2JhYjhjMjFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUg
IlRleHRDb2RlY0xhdGluMS5oIgogCiAjaW5jbHVkZSAiVGV4dENvZGVjQVNDSUlGYXN0UGF0aC5o
IgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0Q29kZWNVVEYxNi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRD
b2RlY1VURjE2LmNwcAppbmRleCAxOTVhYmE0OGNhNWE3YTg0NzgwMGU2YzFkNTFhNjYzNzFhN2M0
YWFiLi42ZTVkNDQxNTNmMDBkN2I0YTA0MmRmZjlmMTY2NjQxNjIzZTI3OGNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcApAQCAtMjYsNyAr
MjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRleHRDb2RlY1VURjE2Lmgi
CiAKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dEVuY29kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVu
Y29kaW5nLmNwcAppbmRleCBkYjgyYmQ3NTkwZjg1N2Y3Yzc5MzIxOGZlZDQ1Y2RmYjAyOTgxOTQy
Li4wNWRhODRiZjkzMTNkNWQ0MDA3MGYyYWI0NjdjZGY3NjBhN2Y4NjI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuY3BwCkBAIC0zMSw3ICszMSw2IEBA
CiAjaW5jbHVkZSAiVGV4dENvZGVjLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nUmVnaXN0cnku
aCIKICNpbmNsdWRlIDx1bmljb2RlL3Vub3JtLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMuaAppbmRleCA1M2E2ZGI3YTk4ZTgxZmY3YWUyYmQz
M2NlNWEyZmRhMzE5M2UwMWJmLi44NjUxYzQzZWM0ZmE1Y2I1YjBmOTI1ODQ1MDE0OTVjZmVmOTY0
Njc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVN
YWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMuaApA
QCAtNDcsNyArNDcsNyBAQCBjbGFzcyBEYXRlQ29tcG9uZW50czsKIAogY2xhc3MgTG9jYWxlTWFj
IDogcHVibGljIExvY2FsZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TG9jYWxl
TWFjPiBjcmVhdGUoTlNMb2NhbGUqKTsKKyAgICBleHBsaWNpdCBMb2NhbGVNYWMoTlNMb2NhbGUq
KTsKICAgICB+TG9jYWxlTWFjKCk7CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC03MCw3ICs3MCw2
IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IExvY2FsZU1hYyhO
U0xvY2FsZSopOwogICAgIFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+IHNob3J0RGF0ZUZvcm1h
dHRlcigpOwogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplTG9jYWxlRGF0YSgpIG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0KaW5k
ZXggYzM3MjRjOWVmZGM5YzNjOGVkYjE0ZGU1YzZiYWQxMjcyYzRjNjM1Ni4uNjQyM2VlMzM4ZDY1
YTU1YmQ1NWE1ZDhmYWQ4YWNmZmU5ZjkyYTA1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbQpAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIkxh
bmd1YWdlLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9E
YXRlTWF0aC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtNjcs
OSArNjYsOSBAQCBzdGF0aWMgUmV0YWluUHRyPE5TTG9jYWxlPiBkZXRlcm1pbmVMb2NhbGUoY29u
c3QgU3RyaW5nJiBsb2NhbGUpCiAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNMb2NhbGUgYWxsb2Nd
IGluaXRXaXRoTG9jYWxlSWRlbnRpZmllcjpsb2NhbGVdKTsKIH0KIAotUGFzc093blB0cjxMb2Nh
bGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQorc3RkOjp1bmlx
dWVfcHRyPExvY2FsZT4gTG9jYWxlOjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUp
CiB7Ci0gICAgcmV0dXJuIExvY2FsZU1hYzo6Y3JlYXRlKGRldGVybWluZUxvY2FsZShsb2NhbGUu
c3RyaW5nKCkpLmdldCgpKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMb2NhbGVNYWM+
KGRldGVybWluZUxvY2FsZShsb2NhbGUuc3RyaW5nKCkpLmdldCgpKTsKIH0KIAogc3RhdGljIFJl
dGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+IGNyZWF0ZURhdGVUaW1lRm9ybWF0dGVyKE5TTG9jYWxl
KiBsb2NhbGUsIE5TQ2FsZW5kYXIqIGNhbGVuZGFyLCBOU0RhdGVGb3JtYXR0ZXJTdHlsZSBkYXRl
U3R5bGUsIE5TRGF0ZUZvcm1hdHRlclN0eWxlIHRpbWVTdHlsZSkKQEAgLTEwNCwxMSArMTAzLDYg
QEAgTG9jYWxlTWFjOjp+TG9jYWxlTWFjKCkKIHsKIH0KIAotUGFzc093blB0cjxMb2NhbGVNYWM+
IExvY2FsZU1hYzo6Y3JlYXRlKE5TTG9jYWxlKiBsb2NhbGUpCi17Ci0gICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBMb2NhbGVNYWMobG9jYWxlKSk7Ci19Ci0KIFJldGFpblB0cjxOU0RhdGVGb3JtYXR0
ZXI+IExvY2FsZU1hYzo6c2hvcnREYXRlRm9ybWF0dGVyKCkKIHsKICAgICByZXR1cm4gY3JlYXRl
RGF0ZVRpbWVGb3JtYXR0ZXIobV9sb2NhbGUuZ2V0KCksIG1fZ3JlZ29yaWFuQ2FsZW5kYXIuZ2V0
KCksIE5TRGF0ZUZvcm1hdHRlclNob3J0U3R5bGUsIE5TRGF0ZUZvcm1hdHRlck5vU3R5bGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFj
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRDb2RlY01hYy5jcHAK
aW5kZXggYTE2ZTMwN2JjNDZmM2NhNjE5NmQ3YTBlZjA5MGJiNWJhZDBkNWVmOS4uNDdhNmE5Njkx
OTc5M2VkZDUyNGM0OGU4NWYwNTY5OGRhMTZhNGJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAj
aW5jbHVkZSAiQ2hhcnNldERhdGEuaCIKICNpbmNsdWRlICJUaHJlYWRHbG9iYWxEYXRhLmgiCiAj
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvd2luL0xvY2FsZVdpbi5jcHAKaW5kZXggYWIwMzZhYTBkMTAwZTAxYTQwOWMxMWM3MWFh
MWYwZDc5NGY0NTQwMy4uMTQwYThlOWJmYjEyNTY0ZTUzNjQxMGUzY2NjOTM5MzFjZGZjMTViMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCkBA
IC00MCw4ICs0MCw2IEBACiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8
d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCkBA
IC0xNDYsOSArMTQ0LDkgQEAgc3RhdGljIExDSUQgTENJREZyb21Mb2NhbGUoY29uc3QgQXRvbWlj
U3RyaW5nJiBsb2NhbGUpCiAgICAgcmV0dXJuIGxjaWQ7CiB9CiAKLVBhc3NPd25QdHI8TG9jYWxl
PiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSkKK3N0ZDo6dW5pcXVl
X3B0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQog
ewotICAgIHJldHVybiBMb2NhbGVXaW46OmNyZWF0ZShMQ0lERnJvbUxvY2FsZShsb2NhbGUpKTsK
KyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMb2NhbGVXaW4+KExDSURGcm9tTG9jYWxlKGxv
Y2FsZSkpOwogfQogCiBpbmxpbmUgTG9jYWxlV2luOjpMb2NhbGVXaW4oTENJRCBsY2lkKQpAQCAt
MTU3LDExICsxNTUsNiBAQCBpbmxpbmUgTG9jYWxlV2luOjpMb2NhbGVXaW4oTENJRCBsY2lkKQog
ewogfQogCi1QYXNzT3duUHRyPExvY2FsZVdpbj4gTG9jYWxlV2luOjpjcmVhdGUoTENJRCBsY2lk
KQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgTG9jYWxlV2luKGxjaWQpKTsKLX0KLQogTG9j
YWxlV2luOjp+TG9jYWxlV2luKCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC93aW4vTG9jYWxlV2luLmgKaW5kZXggZWRjZWVmYThhYzNjNjU5ZWZjNTY3MWYxZjNmOWRlMjRh
NWViNWQzMC4uOWZiZjk5NWRiMTRiMjllMzg2M2E0ZGJjMWE4NzRhNWE3YzVhYjdlZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmgKQEAgLTQ0LDcgKzQ0
LDcgQEAgc3RydWN0IERhdGVGb3JtYXRUb2tlbjsKIAogY2xhc3MgTG9jYWxlV2luIDogcHVibGlj
IExvY2FsZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TG9jYWxlV2luPiBjcmVh
dGUoTENJRCk7CisgICAgZXhwbGljaXQgTG9jYWxlV2luKExDSUQpOwogICAgIH5Mb2NhbGVXaW4o
KTsKICNpZiBFTkFCTEUoREFURV9BTkRfVElNRV9JTlBVVF9UWVBFUykKICAgICB2aXJ0dWFsIFN0
cmluZyBkYXRlRm9ybWF0KCkgb3ZlcnJpZGU7CkBAIC02NCw3ICs2NCw2IEBAIHB1YmxpYzoKICNl
bmRpZgogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IExvY2FsZVdpbihMQ0lEKTsKICAgICBTdHJp
bmcgZ2V0TG9jYWxlSW5mb1N0cmluZyhMQ1RZUEUpOwogICAgIHZvaWQgZ2V0TG9jYWxlSW5mbyhM
Q1RZUEUsIERXT1JEJik7CiAgICAgdm9pZCBlbnN1cmVTaG9ydE1vbnRoTGFiZWxzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcAppbmRl
eCBhNWJjYTcwYjQ4MjcyMzFmYjcyMjIwZTZhMTMzY2EyNjBmZWJkZjNlLi5hM2E2NWFkNzYwMzQw
YzY1MmUzZTJiZGZmZDgwMjQzYzE0OTU2YmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvd2luL1RleHRDb2RlY1dpbi5jcHAKQEAgLTEyOSw5ICsxMjksOSBAQCBzdGF0
aWMgVUlOVCBnZXRDb2RlUGFnZShjb25zdCBjaGFyKiBuYW1lKQogICAgIHJldHVybiBpID09IGNo
YXJzZXRzLmVuZCgpID8gQ1BfQUNQIDogaS0+dmFsdWUubV9jb2RlUGFnZTsKIH0KIAotc3RhdGlj
IFBhc3NPd25QdHI8VGV4dENvZGVjPiBuZXdUZXh0Q29kZWNXaW4oY29uc3QgVGV4dEVuY29kaW5n
JiBlbmNvZGluZywgY29uc3Qgdm9pZCopCitzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFRleHRDb2Rl
Yz4gbmV3VGV4dENvZGVjV2luKGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIGNvbnN0IHZv
aWQqKQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgVGV4dENvZGVjV2luKGdldENvZGVQYWdl
KGVuY29kaW5nLm5hbWUoKSkpKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29k
ZWNXaW4+KGdldENvZGVQYWdlKGVuY29kaW5nLm5hbWUoKSkpOwogfQogCiBUZXh0Q29kZWNXaW46
OlRleHRDb2RlY1dpbihVSU5UIGNvZGVQYWdlKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>