<?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>126330</bug_id>
          
          <creation_ts>2013-12-30 22:32:35 -0800</creation_ts>
          <short_desc>Refactor NSActivity handling code from ChildProcess to UserActivity</short_desc>
          <delta_ts>2014-01-03 11:02:35 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>philn</cc>
    
    <cc>rego+ews</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>963464</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-12-30 22:32:35 -0800</bug_when>
    <thetext>UserActivity is a mechanism to express to the operating system (where appropriate) that a user initiated activity is taking place, and as such that resources should be made available to the process accordingly.

Currently we hold a single NSActivity, at the WebKit layer. This refactoring allows us to hold different activity tokens for different user actions (which simplifies the handling, and aides debugging since the token can more accurately express the activity taking place), and also will allow us to avoid the layering difficulty of calling back up the stack to WebKit to register that an activity is taking place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963574</commentid>
    <comment_count>1</comment_count>
      <attachid>220175</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-12-31 21:27:03 -0800</bug_when>
    <thetext>Created attachment 220175
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963575</commentid>
    <comment_count>2</comment_count>
      <attachid>220175</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-31 21:32:39 -0800</bug_when>
    <thetext>Comment on attachment 220175
Fix

Attachment 220175 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/5535485384458240</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963576</commentid>
    <comment_count>3</comment_count>
      <attachid>220175</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-12-31 22:02:02 -0800</bug_when>
    <thetext>Comment on attachment 220175
Fix

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

&gt; Source/WTF/ChangeLog:16
&gt; +        UserActivity is a mechanism to express to the operating system (where appropriate)
&gt; +        that a user initiated activity is taking place, and as such that resources should be
&gt; +        made available to the process accordingly.
&gt; +
&gt; +        Currently we hold a single NSActivity, at the WebKit layer. This refactoring allows us
&gt; +        to hold different activity tokens for different user actions (which simplifies the
&gt; +        handling, and aides debugging since the token can more accurately express the activity
&gt; +        taking place), and also will allow us to avoid the layering difficulty of calling back
&gt; +        up the stack to WebKit to register that an activity is taking place.

Why is WTF the right layer for this?  Will JSC want to use this? If not, it might make more sense to put this in WebCore/platform.

&gt; Source/WTF/wtf/UserActivity.h:34
&gt; +class UserActivity {

I think this is an abstract enough concept that this could use a comment explaining what this about.

&gt; Source/WTF/wtf/UserActivity.h:46
&gt; +#if PLATFORM(MAC) &amp;&amp; !PLATFORM(IOS) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 1090

Instead of this complicated #ifdef here, I would rather there be a single HAVE(NS_ACTIVITY) or something like that.

&gt; Source/WTF/wtf/UserActivity.h:50
&gt; +    RetainPtr&lt;id&gt; m_description;

Can this be a WTF::String or at least a RetainPtr&lt;NSString&gt;.

&gt; Source/WTF/wtf/mac/UserActivityMac.mm:66
&gt; +    syslog(LOG_ERR, &quot;beginActivity(%s) -&gt; %d&quot;, [m_description.get() UTF8String], (int)m_count);

Why syslog and not one of the normal logging means?

&gt; Source/WTF/wtf/mac/UserActivityMac.mm:93
&gt; +//    ASSERT(isValid());

This looks bogus.

&gt; Source/WebKit2/Shared/ChildProcess.h:125
&gt; +    UserActivity m_processSuppressionDisabled;
&gt; +    UserActivity m_activeTasks;

Since we have cross platform type now, can we move these out of PLATFORM(MAC)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963585</commentid>
    <comment_count>4</comment_count>
      <attachid>220179</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-12-31 23:08:05 -0800</bug_when>
    <thetext>Created attachment 220179
GTK fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963680</commentid>
    <comment_count>5</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-01-01 22:03:09 -0800</bug_when>
    <thetext>&gt; &gt; Source/WTF/wtf/mac/UserActivityMac.mm:66
&gt; &gt; +    syslog(LOG_ERR, &quot;beginActivity(%s) -&gt; %d&quot;, [m_description.get() UTF8String], (int)m_count);
&gt; 
&gt; Why syslog and not one of the normal logging means?

Ooops, debug code I was using to test, meant to delete. :-|

Will clean up &amp; fix a couple of the other review comments, then put up a new patch. Clearing r? for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964013</commentid>
    <comment_count>6</comment_count>
      <attachid>220282</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-01-02 22:52:47 -0800</bug_when>
    <thetext>Created attachment 220282
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964019</commentid>
    <comment_count>7</comment_count>
      <attachid>220282</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2014-01-02 23:25:48 -0800</bug_when>
    <thetext>Comment on attachment 220282
Fix

Attachment 220282 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/6405113719554048</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964033</commentid>
    <comment_count>8</comment_count>
      <attachid>220285</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-01-03 00:12:47 -0800</bug_when>
    <thetext>Created attachment 220285
gtk fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964048</commentid>
    <comment_count>9</comment_count>
      <attachid>220285</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2014-01-03 00:43:53 -0800</bug_when>
    <thetext>Comment on attachment 220285
gtk fix

Attachment 220285 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/5789202524405760</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964182</commentid>
    <comment_count>10</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-01-03 11:02:35 -0800</bug_when>
    <thetext>Committed revision 161271.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220175</attachid>
            <date>2013-12-31 21:27:03 -0800</date>
            <delta_ts>2013-12-31 23:08:05 -0800</delta_ts>
            <desc>Fix</desc>
            <filename>126330.1.patch</filename>
            <type>text/plain</type>
            <size>23287</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNjExNjcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDEzLTEyLTMwICBHYXZpbiBCYXJyYWNsb3VnaCAg
PGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBOU0FjdGl2aXR5IGhh
bmRsaW5nIGNvZGUgZnJvbSBDaGlsZFByb2Nlc3MgdG8gVXNlckFjdGl2aXR5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYzMzAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2VyQWN0aXZpdHkgaXMgYSBt
ZWNoYW5pc20gdG8gZXhwcmVzcyB0byB0aGUgb3BlcmF0aW5nIHN5c3RlbSAod2hlcmUgYXBwcm9w
cmlhdGUpCisgICAgICAgIHRoYXQgYSB1c2VyIGluaXRpYXRlZCBhY3Rpdml0eSBpcyB0YWtpbmcg
cGxhY2UsIGFuZCBhcyBzdWNoIHRoYXQgcmVzb3VyY2VzIHNob3VsZCBiZQorICAgICAgICBtYWRl
IGF2YWlsYWJsZSB0byB0aGUgcHJvY2VzcyBhY2NvcmRpbmdseS4KKworICAgICAgICBDdXJyZW50
bHkgd2UgaG9sZCBhIHNpbmdsZSBOU0FjdGl2aXR5LCBhdCB0aGUgV2ViS2l0IGxheWVyLiBUaGlz
IHJlZmFjdG9yaW5nIGFsbG93cyB1cworICAgICAgICB0byBob2xkIGRpZmZlcmVudCBhY3Rpdml0
eSB0b2tlbnMgZm9yIGRpZmZlcmVudCB1c2VyIGFjdGlvbnMgKHdoaWNoIHNpbXBsaWZpZXMgdGhl
CisgICAgICAgIGhhbmRsaW5nLCBhbmQgYWlkZXMgZGVidWdnaW5nIHNpbmNlIHRoZSB0b2tlbiBj
YW4gbW9yZSBhY2N1cmF0ZWx5IGV4cHJlc3MgdGhlIGFjdGl2aXR5CisgICAgICAgIHRha2luZyBw
bGFjZSksIGFuZCBhbHNvIHdpbGwgYWxsb3cgdXMgdG8gYXZvaWQgdGhlIGxheWVyaW5nIGRpZmZp
Y3VsdHkgb2YgY2FsbGluZyBiYWNrCisgICAgICAgIHVwIHRoZSBzdGFjayB0byBXZWJLaXQgdG8g
cmVnaXN0ZXIgdGhhdCBhbiBhY3Rpdml0eSBpcyB0YWtpbmcgcGxhY2UuCisKKyAgICAgICAgKiBX
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgICAgIC0gYWRkZWQgbmV3IGZp
bGVzLgorICAgICAgICAqIHd0Zi9Vc2VyQWN0aXZpdHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdU
Rjo6VXNlckFjdGl2aXR5OjpVc2VyQWN0aXZpdHkpOgorICAgICAgICAgICAgLSBub3AgaW1wbGVt
ZW50YXRpb24gLSBpZ25vcmUgZGVzY3JpcHRpb24uCisgICAgICAgIChXVEY6OlVzZXJBY3Rpdml0
eTo6YmVnaW5BY3Rpdml0eSk6CisgICAgICAgIChXVEY6OlVzZXJBY3Rpdml0eTo6ZW5kQWN0aXZp
dHkpOgorICAgICAgICAgICAgLSBub3AgaW1wbGVtZW50YXRpb24gLSBqdXN0IGluYy9kZWMgbV9j
b3VudC4KKyAgICAgICAgKiB3dGYvVXNlckFjdGl2aXR5Lmg6IEFkZGVkLgorICAgICAgICAoV1RG
OjpVc2VyQWN0aXZpdHk6OmlzQWN0aXZlKToKKyAgICAgICAgICAgIC0gcmV0dXJucyB0cnVlIGlm
IG9uZSBvciBtb3JlIGluc3RhbmNlIG9mIHRoaXMgYWN0aXZpdHkgaXMgaW4gcHJvZ3Jlc3MuCisg
ICAgICAgICogd3RmL21hYy9Vc2VyQWN0aXZpdHlNYWMubW06IEFkZGVkLgorICAgICAgICAoV1RG
OjpVc2VyQWN0aXZpdHk6OlVzZXJBY3Rpdml0eSk6CisgICAgICAgICAgICAtIGNvbnN0cnVjdG9y
IGFjY2VwdHMgb25lIGFyZ3VtZW50LCBhIGRlc2NyaXB0aW9uIHN0cmluZy4KKyAgICAgICAgKFdU
Rjo6VXNlckFjdGl2aXR5Ojppc1ZhbGlkKToKKyAgICAgICAgICAgIC0gdXNlZCBieSBhc3NlcnRp
b25zLgorICAgICAgICAoV1RGOjpVc2VyQWN0aXZpdHk6OmJlZ2luQWN0aXZpdHkpOgorICAgICAg
ICAoV1RGOjpVc2VyQWN0aXZpdHk6OmVuZEFjdGl2aXR5KToKKyAgICAgICAgICAgIC0gdHJhY2sg
c3RhcnQvZW5kIG9mIGFuIGFjdGl2aXR5IC0gY2FsbHMgdG8gdGhlc2UgbWV0aG9kcyBzaG91bGQg
YmUgYmFsYW5jZWQuCisgICAgICAgIChXVEY6OlVzZXJBY3Rpdml0eTo6aHlzdGVyZXNpc1RpbWVy
RmlyZWQpOgorICAgICAgICAgICAgICAtIHVzZWQgdG8gaW1wbGVtZW50IGh5c3RlcmVzaXMgaW4g
cmVsZWFzaW5nICBOU0FjdGl2aXR5LgorCisKIDIwMTMtMTItMzAgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIHlpZWxkKCkgYW5kIHBhdXNl
QnJpZWZseSgpIHdpdGggc3RkOjp0aGlzX3RocmVhZDo6eWllbGQoKQpJbmRleDogU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjExMDcpCisrKyBTb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02
Nyw2ICs2Nyw5IEBACiAJCTdFMjlDMzNFMTVGRkQ3OUIwMDUxNkQ2MSAvKiBPYmpjUnVudGltZUV4
dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Uy
OUMzM0QxNUZGRDc5QjAwNTE2RDYxIC8qIE9iamNSdW50aW1lRXh0cmFzLmggKi87IH07CiAJCTgx
MzQwMTM4MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODEzNDAxMzYxNUIwOTJGRDAwMUZGMEI4IC8qIEJh
c2U2NC5jcHAgKi87IH07CiAJCTgxMzQwMTM5MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgxMzQwMTM3MTVC
MDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuaCAqLzsgfTsKKwkJODZERDFFNzcxODcyNTgyODAwMkZG
OTk4IC8qIFVzZXJBY3Rpdml0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODZERDFFNzYxODcyNTdBODAwMkZGOTk4IC8qIFVzZXJBY3Rpdml0eS5oICov
OyB9OworCQk4NkREMUU3ODE4NzI1OEY4MDAyRkY5OTggLyogVXNlckFjdGl2aXR5TWFjLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZERDFFNzQxODcy
NTc5ODAwMkZGOTk4IC8qIFVzZXJBY3Rpdml0eU1hYy5tbSAqLzsgfTsKKwkJODZERDFFNzkxODcy
NThGODAwMkZGOTk4IC8qIFVzZXJBY3Rpdml0eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkREMUU3NTE4NzI1N0E4MDAyRkY5OTggLyogVXNlckFj
dGl2aXR5LmNwcCAqLzsgfTsKIAkJOTNCMUFBODAxODBFNUFGMzAwNEEyRjA1IC8qIFBhc3NSZWYu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjFBQTdG
MTgwRTVBRjMwMDRBMkYwNSAvKiBQYXNzUmVmLmggKi87IH07CiAJCTk3NENGQzhFMTZBNEYzMjcw
MDZENTQwNCAvKiBXZWFrUHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NzRDRkM4RDE2QTRGMzI3MDA2RDU0MDQgLyogV2Vha1B0ci5oICovOyB9Owog
CQk5QkM3MEYwNTE3NkMzNzlEMDAxMDFERUMgLyogQXRvbWljU3RyaW5nVGFibGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJDNzBGMDQxNzZDMzc5
RDAwMTAxREVDIC8qIEF0b21pY1N0cmluZ1RhYmxlLmNwcCAqLzsgfTsKQEAgLTMzOCw2ICszNDEs
OSBAQAogCQk3RTI5QzMzRDE1RkZENzlCMDA1MTZENjEgLyogT2JqY1J1bnRpbWVFeHRyYXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT2JqY1J1bnRpbWVFeHRyYXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODEzNDAxMzYxNUIwOTJGRDAwMUZGMEI4IC8qIEJh
c2U2NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYXNlNjQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MTM0MDEzNzE1QjA5MkZEMDAxRkYwQjgg
LyogQmFzZTY0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2U2NC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkREMUU3NDE4NzI1Nzk4MDAyRkY5OTggLyog
VXNlckFjdGl2aXR5TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVXNlckFjdGl2aXR5TWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkREMUU3NTE4NzI1N0E4MDAyRkY5
OTggLyogVXNlckFjdGl2aXR5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJBY3Rpdml0eS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2REQxRTc2MTg3MjU3QTgwMDJGRjk5
OCAvKiBVc2VyQWN0aXZpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckFjdGl2aXR5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjFBQTdGMTgwRTVBRjMwMDRBMkYwNSAvKiBQYXNz
UmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhc3NSZWYuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc0Q0ZDOEQxNkE0RjMyNzAwNkQ1NDA0IC8qIFdlYWtQ
dHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1B0ci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5QkM3MEYwNDE3NkMzNzlEMDAxMDFERUMgLyogQXRvbWlj
U3RyaW5nVGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXRv
bWljU3RyaW5nVGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODIyLDYg
KzgyOCw4IEBACiAJCQkJQThBNDczM0YxNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZFNwZWNpZmlj
LmggKi8sCiAJCQkJMTQ5RUYxNjIxNkJCRkUwRDAwMEE0MzMxIC8qIFRyaVN0YXRlLmggKi8sCiAJ
CQkJQThBNDczNUMxNTFBODI1QjAwNDEyM0ZGIC8qIFVuaW9uRmluZC5oICovLAorCQkJCTg2REQx
RTc1MTg3MjU3QTgwMDJGRjk5OCAvKiBVc2VyQWN0aXZpdHkuY3BwICovLAorCQkJCTg2REQxRTc2
MTg3MjU3QTgwMDJGRjk5OCAvKiBVc2VyQWN0aXZpdHkuaCAqLywKIAkJCQlBOEE0NzM2RjE1MUE4
MjVCMDA0MTIzRkYgLyogVmFsdWVDaGVjay5oICovLAogCQkJCUE4QTQ3MzcwMTUxQTgyNUIwMDQx
MjNGRiAvKiBWZWN0b3IuaCAqLywKIAkJCQlBOEE0NzM3MTE1MUE4MjVCMDA0MTIzRkYgLyogVmVj
dG9yVHJhaXRzLmggKi8sCkBAIC04NjUsNiArODczLDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCiAJCQkJQThBNDcyQzUxNTFBODI1QTAwNDEyM0ZGIC8qIE1haW5UaHJl
YWRNYWMubW0gKi8sCisJCQkJODZERDFFNzQxODcyNTc5ODAwMkZGOTk4IC8qIFVzZXJBY3Rpdml0
eU1hYy5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTk5NCw2ICsxMDAzLDcgQEAKIAkJCQlBOEE0NzNCRDE1MUE4MjVCMDA0MTIzRkYg
LyogRHluYW1pY0Fubm90YXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNDMDE1MUE4
MjVCMDA0MTIzRkYgLyogRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczQzExNTFB
ODI1QjAwNDEyM0ZGIC8qIEV4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZERDFF
NzcxODcyNTgyODAwMkZGOTk4IC8qIFVzZXJBY3Rpdml0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QThBNDczQjQxNTFBODI1QjAwNDEyM0ZGIC8qIGZhc3QtZHRvYS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZEODFBQzUxNTRGQjIyRTAwOTgzRTcyIC8qIEZhc3RCaXRWZWN0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4QTQ3M0M0MTUxQTgyNUIwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmggaW4gSGVh
ZGVycyAqLywKQEAgLTEyNTUsNiArMTI2NSw3IEBACiAJCQkJRkVEQUNEM0QxNjMwRjgzRjAwQzY5
NjM0IC8qIFN0YWNrU3RhdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0M0MxNTFBODI1
QjAwNDEyM0ZGIC8qIFN0cmluZ0J1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0
NDAxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0ltcGwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
ODZERDFFNzgxODcyNThGODAwMkZGOTk4IC8qIFVzZXJBY3Rpdml0eU1hYy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGRERCRkE3MTY2NkRGQTMwMEM1NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ0MzE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5n
U3RhdGljcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNCNzE1MUE4MjVCMDA0MTIzRkYg
Lyogc3RydG9kLmNjIGluIFNvdXJjZXMgKi8sCkBAIC0xMjY0LDYgKzEyNzUsNyBAQAogCQkJCUE4
QTQ3NDRFMTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRpbmdQdGhyZWFkcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBOEE0NzQ2OTE1MUE4MjVCMDA0MTIzRkYgLyogVVRGOC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxRkE0N0M4QTE1MjUwMkRBMDA1NjhEMUIgLyogV2ViQ29yZVRocmVhZC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk4NkREMUU3OTE4NzI1OEY4MDAyRkY5OTggLyogVXNlckFjdGl2
aXR5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDQ1MTUxQTgyNUIwMDQxMjNGRiAvKiBX
VEZTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0ODYxNTFBODI1QjAwNDEyM0ZG
IC8qIFdURlRocmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwpJbmRleDogU291cmNl
L1dURi93dGYvVXNlckFjdGl2aXR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9V
c2VyQWN0aXZpdHkuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dURi93dGYvVXNlckFjdGl2
aXR5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVzZXJBY3Rpdml0eS5oIgorCituYW1lc3BhY2Ug
V1RGIHsKKworI2lmICFQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwOTAKKworVXNlckFjdGl2aXR5OjpVc2VyQWN0aXZp
dHkoY29uc3QgY2hhciopCisgICAgOiBtX2NvdW50KDApCit7Cit9CisKK3ZvaWQgVXNlckFjdGl2
aXR5OjpiZWdpbkFjdGl2aXR5KCkKK3sKKyAgICArK21fY291bnQ7Cit9CisKK3ZvaWQgVXNlckFj
dGl2aXR5OjplbmRBY3Rpdml0eSgpCit7CisgICAgQVNTRVJUKG1fY291bnQpOworICAgIC0tbV9j
b3VudDsKK30KKworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dU
Ri93dGYvVXNlckFjdGl2aXR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvVXNlckFj
dGl2aXR5LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV1RGL3d0Zi9Vc2VyQWN0aXZpdHkuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBVc2Vy
QWN0aXZpdHlfaAorI2RlZmluZSBVc2VyQWN0aXZpdHlfaAorCisjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SdW5sb29wLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitj
bGFzcyBVc2VyQWN0aXZpdHkgeworcHVibGljOgorICAgIFdURl9FWFBPUlRfUFJJVkFURSBVc2Vy
QWN0aXZpdHkoY29uc3QgY2hhciogZGVzY3JpcHRpb24pOworCisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgYmVnaW5BY3Rpdml0eSgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGVu
ZEFjdGl2aXR5KCk7CisKKyAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9jb3Vu
dDsgfQorCitwcml2YXRlOgorICAgIHNpemVfdCBtX2NvdW50OworCisjaWYgUExBVEZPUk0oTUFD
KSAmJiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwOTAKKyAgICB2b2lkIGh5c3RlcmVzaXNUaW1lckZpcmVkKCk7CisgICAgYm9vbCBpc1ZhbGlk
KCk7CisKKyAgICBSZXRhaW5QdHI8aWQ+IG1fZGVzY3JpcHRpb247CisgICAgUnVuTG9vcDo6VGlt
ZXI8VXNlckFjdGl2aXR5PiBtX3RpbWVyOworICAgIFJldGFpblB0cjxpZD4gbV9hY3Rpdml0eTsK
KyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6VXNlckFjdGl2
aXR5OworCisjZW5kaWYgLy8gVXNlckFjdGl2aXR5X2gKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL21h
Yy9Vc2VyQWN0aXZpdHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvbWFjL1Vz
ZXJBY3Rpdml0eU1hYy5tbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL21hYy9Vc2Vy
QWN0aXZpdHlNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVXNlckFjdGl2aXR5LmgiCisKKyNpbXBv
cnQgInN5c2xvZy5oIgorCituYW1lc3BhY2UgV1RGIHsKKworI2lmIFBMQVRGT1JNKE1BQykgJiYg
IVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkw
CisKK3N0YXRpYyBjb25zdCBkb3VibGUga0h5c3RlcmVzaXNTZWNvbmRzID0gNS4wOworCitVc2Vy
QWN0aXZpdHk6OlVzZXJBY3Rpdml0eShjb25zdCBjaGFyKiBkZXNjcmlwdGlvbikKKyAgICA6IG1f
Y291bnQoMCkKKyAgICAsIG1fZGVzY3JpcHRpb24oW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3Ry
aW5nOmRlc2NyaXB0aW9uXSkKKyAgICAsIG1fdGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAm
VXNlckFjdGl2aXR5OjpoeXN0ZXJlc2lzVGltZXJGaXJlZCkKK3sKKyAgICBBU1NFUlQoaXNWYWxp
ZCgpKTsKK30KKworYm9vbCBVc2VyQWN0aXZpdHk6OmlzVmFsaWQoKQoreworICAgIC8vIElmIGNv
dW50IGlzIG5vbi16ZXJvIHRoZW4gd2Ugc2hvdWxkIGJlIGhvbGRpbmcgYW4gYWN0aXZpdHksIGFu
ZCB0aGUgaHlzdGVyZXNpcyB0aW1lciBzaG91bGQgbm90IGJlIHJ1bm5pbmcuCisgICAgLy8gRWxz
ZSBpZiBjb3VudCBpcyB6ZXJvIHRoZW46CisgICAgLy8gIChhKSBpZiB3ZSdyZSBob2xkaW5nIGFu
IGFjdGl2aXR5IHRoZXJlIHNob3VsZCBiZSBhbiBhY3RpdmUgdGltZXIgdG8gY2xlYXIgdGhpcywK
KyAgICAvLyAgKGIpIGlmIHdlJ3JlIG5vdCBob2xkaW5nIGFuIGFjdGl2aXR5IHRoZXJlIHNob3Vs
ZCBiZSBubyBhY3RpdmUgdGltZXIuCisgICAgcmV0dXJuIG1fY291bnQgPyBtX2FjdGl2aXR5ICYm
ICFtX3RpbWVyLmlzQWN0aXZlKCkgOiAhIW1fYWN0aXZpdHkgPT0gbV90aW1lci5pc0FjdGl2ZSgp
OworfQorCit2b2lkIFVzZXJBY3Rpdml0eTo6YmVnaW5BY3Rpdml0eSgpCit7CisgICAgQVNTRVJU
KGlzVmFsaWQoKSk7CisKKyAgICArK21fY291bnQ7CisgICAgaWYgKG1fdGltZXIuaXNBY3RpdmUo
KSkKKyAgICAgICAgbV90aW1lci5zdG9wKCk7CisgICAgaWYgKCFtX2FjdGl2aXR5KSB7CisgICAg
ICAgIE5TQWN0aXZpdHlPcHRpb25zIG9wdGlvbnMgPSAoTlNBY3Rpdml0eVVzZXJJbml0aWF0ZWRB
bGxvd2luZ0lkbGVTeXN0ZW1TbGVlcCB8IE5TQWN0aXZpdHlMYXRlbmN5Q3JpdGljYWwpICYgfihO
U0FjdGl2aXR5U3VkZGVuVGVybWluYXRpb25EaXNhYmxlZCB8IE5TQWN0aXZpdHlBdXRvbWF0aWNU
ZXJtaW5hdGlvbkRpc2FibGVkKTsKKyAgICAgICAgbV9hY3Rpdml0eSA9IFtbTlNQcm9jZXNzSW5m
byBwcm9jZXNzSW5mb10gYmVnaW5BY3Rpdml0eVdpdGhPcHRpb25zOm9wdGlvbnMgcmVhc29uOm1f
ZGVzY3JpcHRpb24uZ2V0KCldOworICAgIH0KKworICAgIHN5c2xvZyhMT0dfRVJSLCAiYmVnaW5B
Y3Rpdml0eSglcykgLT4gJWQiLCBbbV9kZXNjcmlwdGlvbi5nZXQoKSBVVEY4U3RyaW5nXSwgKGlu
dCltX2NvdW50KTsKKworICAgIEFTU0VSVChpc1ZhbGlkKCkpOworfQorCit2b2lkIFVzZXJBY3Rp
dml0eTo6ZW5kQWN0aXZpdHkoKQoreworICAgIEFTU0VSVChtX2NvdW50KTsKKyAgICBBU1NFUlQo
aXNWYWxpZCgpKTsKKworICAgIGlmICghLS1tX2NvdW50KQorICAgICAgICBtX3RpbWVyLnN0YXJ0
T25lU2hvdChrSHlzdGVyZXNpc1NlY29uZHMpOworCisgICAgc3lzbG9nKExPR19FUlIsICJlbmRB
Y3Rpdml0eSglcykgLT4gJWQiLCBbbV9kZXNjcmlwdGlvbi5nZXQoKSBVVEY4U3RyaW5nXSwgKGlu
dCltX2NvdW50KTsKKworICAgIEFTU0VSVChpc1ZhbGlkKCkpOworfQorCit2b2lkIFVzZXJBY3Rp
dml0eTo6aHlzdGVyZXNpc1RpbWVyRmlyZWQoKQoreworICAgIEFTU0VSVChpc1ZhbGlkKCkpOwor
CisgICAgc3lzbG9nKExPR19FUlIsICJoeXN0ZXJlc2lzVGltZXJGaXJlZCglcykiLCBbbV9kZXNj
cmlwdGlvbi5nZXQoKSBVVEY4U3RyaW5nXSk7CisKKyAgICBbW05TUHJvY2Vzc0luZm8gcHJvY2Vz
c0luZm9dIGVuZEFjdGl2aXR5Om1fYWN0aXZpdHkuZ2V0KCldOworICAgIG1fYWN0aXZpdHkuY2xl
YXIoKTsKKworLy8gICAgQVNTRVJUKGlzVmFsaWQoKSk7Cit9CisKKyNlbmRpZgorCit9IC8vIG5h
bWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTE4NikKKysrIFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDEzLTEy
LTMwICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZWZhY3RvciBOU0FjdGl2aXR5IGhhbmRsaW5nIGNvZGUgZnJvbSBDaGlsZFByb2Nlc3MgdG8g
VXNlckFjdGl2aXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjYzMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVc2VyQWN0aXZpdHkgaXMgYSBtZWNoYW5pc20gdG8gZXhwcmVzcyB0byB0aGUgb3BlcmF0
aW5nIHN5c3RlbSAod2hlcmUgYXBwcm9wcmlhdGUpCisgICAgICAgIHRoYXQgYSB1c2VyIGluaXRp
YXRlZCBhY3Rpdml0eSBpcyB0YWtpbmcgcGxhY2UsIGFuZCBhcyBzdWNoIHRoYXQgcmVzb3VyY2Vz
IHNob3VsZCBiZQorICAgICAgICBtYWRlIGF2YWlsYWJsZSB0byB0aGUgcHJvY2VzcyBhY2NvcmRp
bmdseS4KKworICAgICAgICBDdXJyZW50bHkgd2UgaG9sZCBhIHNpbmdsZSBOU0FjdGl2aXR5LCBh
dCB0aGUgV2ViS2l0IGxheWVyLiBUaGlzIHJlZmFjdG9yaW5nIGFsbG93cyB1cworICAgICAgICB0
byBob2xkIGRpZmZlcmVudCBhY3Rpdml0eSB0b2tlbnMgZm9yIGRpZmZlcmVudCB1c2VyIGFjdGlv
bnMgKHdoaWNoIHNpbXBsaWZpZXMgdGhlCisgICAgICAgIGhhbmRsaW5nLCBhbmQgYWlkZXMgZGVi
dWdnaW5nIHNpbmNlIHRoZSB0b2tlbiBjYW4gbW9yZSBhY2N1cmF0ZWx5IGV4cHJlc3MgdGhlIGFj
dGl2aXR5CisgICAgICAgIHRha2luZyBwbGFjZSksIGFuZCBhbHNvIHdpbGwgYWxsb3cgdXMgdG8g
YXZvaWQgdGhlIGxheWVyaW5nIGRpZmZpY3VsdHkgb2YgY2FsbGluZyBiYWNrCisgICAgICAgIHVw
IHRoZSBzdGFjayB0byBXZWJLaXQgdG8gcmVnaXN0ZXIgdGhhdCBhbiBhY3Rpdml0eSBpcyB0YWtp
bmcgcGxhY2UuCisKKyAgICAgICAgKiBTaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6Q2hpbGRQcm9jZXNzOjpDaGlsZFByb2Nlc3MpOgorICAgICAgICAgICAgLSByZW1v
dmVkIGZpZWxkcyB0byBkaXJlY3RseSBtYW5hZ2UgTlNBY3Rpdml0eSwgdXNlIFVzZXJBY3Rpdml0
eSBvYmplY3RzIGluc3RlYWQuCisgICAgICAgICogU2hhcmVkL0NoaWxkUHJvY2Vzcy5oOgorICAg
ICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3M6OnByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpOgor
ICAgICAgICAgICAgLSBjaGFuZ2VkIHRvIGluaXRpYWxpemUgbmV3IGZpZWxkcy4KKyAgICAgICAg
KiBTaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQ
cm9jZXNzOjpzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKToKKyAgICAgICAgICAgIC0gaW1w
bGVtZW50ZWQgaW4gdGVybXMgb2YgVXNlckFjdGl2aXR5IG1fcHJvY2Vzc1N1cHByZXNzaW9uRGlz
YWJsZWQuCisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6aW5jcmVtZW50QWN0aXZlVGFz
a0NvdW50KToKKyAgICAgICAgICAgIC0gaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YgVXNlckFjdGl2
aXR5IG1fYWN0aXZlVGFza3MuCisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6ZGVjcmVt
ZW50QWN0aXZlVGFza0NvdW50KToKKyAgICAgICAgICAgIC0gaW1wbGVtZW50ZWQgaW4gdGVybXMg
b2YgVXNlckFjdGl2aXR5IG1fYWN0aXZlVGFza3MuCisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJv
Y2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgICAgIC0gaW1wbGVtZW50ZWQgaW4g
dGVybXMgb2YgVXNlckFjdGl2aXR5IG1fcHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZWQuCisKIDIw
MTMtMTItMzEgIEJyZW5kYW4gTG9uZyAgPGIubG9uZ0BjYWJsZWxhYnMuY29tPgogCiAgICAgICAg
IFtHdGtdIFdlYktpdFdlYkluc3BlY3RvciBoYXMgYnVpbGQgd2FybmluZ3MgZHVlIHRvIHVuaW5p
dGlhbGl6ZWQgZGlkQ2hhbmdlQXR0YWNoZWRXaWR0aCBtZW1iZXIKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCShyZXZpc2lvbiAxNjExMDcpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYs
OCBAQCBDaGlsZFByb2Nlc3M6OkNoaWxkUHJvY2VzcygpCiAgICAgLCBtX3Rlcm1pbmF0aW9uQ291
bnRlcigwKQogICAgICwgbV90ZXJtaW5hdGlvblRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywg
JkNoaWxkUHJvY2Vzczo6dGVybWluYXRpb25UaW1lckZpcmVkKQogI2lmIFBMQVRGT1JNKE1BQykK
LSAgICAsIG1fYWN0aXZlVGFza0NvdW50KDApCi0gICAgLCBtX3Nob3VsZFN1c3BlbmQoZmFsc2Up
Ci0gICAgLCBtX3N1c3BlbnNpb25IeXN0ZXJlc2lzVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlz
LCAmQ2hpbGRQcm9jZXNzOjpzdXNwZW5zaW9uSHlzdGVyZXNpc1RpbWVyRmlyZWQpCisgICAgLCBt
X3Byb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkKCJQcm9jZXNzIFN1cHByZXNzaW9uIERpc2FibGVk
IGJ5IFVJUHJvY2VzcyIpCisgICAgLCBtX2FjdGl2ZVRhc2tzKCJQcm9jZXNzIFN1cHByZXNzaW9u
IERpc2FibGVkIGJ5IFdlYlByb2Nlc3MiKQogI2VuZGlmCiB7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
U2hhcmVkL0NoaWxkUHJvY2Vzcy5oCShyZXZpc2lvbiAxNjExMDcpCisrKyBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9Vc2VyQWN0aXZpdHkuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKQEAgLTYzLDcgKzY0LDcgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIHZvaWQgc2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChib29sKTsKLSAgICBib29sIHBy
b2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiAhbV9wcm9jZXNzU3VwcHJl
c3Npb25Bc3NlcnRpb247IH0KKyAgICBib29sIHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoKSBj
b25zdCB7IHJldHVybiAhbV9wcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZC5pc0FjdGl2ZSgpOyB9
CiAgICAgdm9pZCBpbmNyZW1lbnRBY3RpdmVUYXNrQ291bnQoKTsKICAgICB2b2lkIGRlY3JlbWVu
dEFjdGl2ZVRhc2tDb3VudCgpOwogCkBAIC0xMjAsMTIgKzEyMSw4IEBAIHByaXZhdGU6CiAgICAg
Q29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyTWFwIG1fbWVzc2FnZVJlY2VpdmVyTWFwOwogCiAjaWYg
UExBVEZPUk0oTUFDKQotICAgIHZvaWQgc3VzcGVuc2lvbkh5c3RlcmVzaXNUaW1lckZpcmVkKCk7
Ci0gICAgdm9pZCBzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkSW50ZXJuYWwoYm9vbCk7Ci0g
ICAgc2l6ZV90IG1fYWN0aXZlVGFza0NvdW50OwotICAgIGJvb2wgbV9zaG91bGRTdXNwZW5kOwot
ICAgIFJ1bkxvb3A6OlRpbWVyPENoaWxkUHJvY2Vzcz4gbV9zdXNwZW5zaW9uSHlzdGVyZXNpc1Rp
bWVyOwotICAgIFJldGFpblB0cjxpZD4gbV9wcm9jZXNzU3VwcHJlc3Npb25Bc3NlcnRpb247Cisg
ICAgVXNlckFjdGl2aXR5IG1fcHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZWQ7CisgICAgVXNlckFj
dGl2aXR5IG1fYWN0aXZlVGFza3M7CiAjZW5kaWYKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCShyZXZpc2lvbiAxNjExMDcpCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtNjAsNjYgKzYwLDI1IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotc3RhdGljIGNvbnN0IGRvdWJsZSBrU3VzcGVuc2lvbkh5c3RlcmVzaXNT
ZWNvbmRzID0gNS4wOwotCi12b2lkIENoaWxkUHJvY2Vzczo6c2V0UHJvY2Vzc1N1cHByZXNzaW9u
RW5hYmxlZEludGVybmFsKGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCkKK3ZvaWQgQ2hp
bGRQcm9jZXNzOjpzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsK
LSNpZiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwOTAKLSAgICBpZiAodGhpcy0+cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgpID09IHByb2Nl
c3NTdXBwcmVzc2lvbkVuYWJsZWQpCisgICAgaWYgKHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQo
KSA9PSBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAocHJvY2Vzc1N1cHByZXNz
aW9uRW5hYmxlZCkgewotICAgICAgICBBU1NFUlQoIW1fYWN0aXZlVGFza0NvdW50KTsKLSAgICAg
ICAgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBlbmRBY3Rpdml0eTptX3Byb2Nlc3NTdXBw
cmVzc2lvbkFzc2VydGlvbi5nZXQoKV07Ci0gICAgICAgIG1fcHJvY2Vzc1N1cHByZXNzaW9uQXNz
ZXJ0aW9uLmNsZWFyKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgTlNBY3Rpdml0eU9wdGlvbnMg
b3B0aW9ucyA9IChOU0FjdGl2aXR5VXNlckluaXRpYXRlZEFsbG93aW5nSWRsZVN5c3RlbVNsZWVw
IHwgTlNBY3Rpdml0eUxhdGVuY3lDcml0aWNhbCkgJiB+KE5TQWN0aXZpdHlTdWRkZW5UZXJtaW5h
dGlvbkRpc2FibGVkIHwgTlNBY3Rpdml0eUF1dG9tYXRpY1Rlcm1pbmF0aW9uRGlzYWJsZWQpOwot
ICAgICAgICBtX3Byb2Nlc3NTdXBwcmVzc2lvbkFzc2VydGlvbiA9IFtbTlNQcm9jZXNzSW5mbyBw
cm9jZXNzSW5mb10gYmVnaW5BY3Rpdml0eVdpdGhPcHRpb25zOm9wdGlvbnMgcmVhc29uOkAiUHJv
Y2VzcyBTdXBwcmVzc2lvbiBEaXNhYmxlZCJdOwotICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BB
UkFNKHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpOwotI2VuZGlmCi19Ci0KLXZvaWQgQ2hpbGRQ
cm9jZXNzOjpzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJvb2wgcHJvY2Vzc1N1cHByZXNz
aW9uRW5hYmxlZCkKLXsKLSAgICBpZiAodGhpcy0+cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgp
ID09IHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAo
bV9zaG91bGRTdXNwZW5kID09IHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpCi0gICAgICAgIHJl
dHVybjsKLSAgICBtX3Nob3VsZFN1c3BlbmQgPSBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkOwot
ICAgIGlmIChtX3Nob3VsZFN1c3BlbmQpIHsKLSAgICAgICAgaWYgKCFtX2FjdGl2ZVRhc2tDb3Vu
dCkKLSAgICAgICAgICAgIG1fc3VzcGVuc2lvbkh5c3RlcmVzaXNUaW1lci5zdGFydE9uZVNob3Qo
a1N1c3BlbnNpb25IeXN0ZXJlc2lzU2Vjb25kcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgc2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEludGVybmFsKGZhbHNlKTsKKyAgICBpZiAo
ZW5hYmxlZCkKKyAgICAgICAgbV9wcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZC5lbmRBY3Rpdml0
eSgpOworICAgIGVsc2UKKyAgICAgICAgbV9wcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZC5iZWdp
bkFjdGl2aXR5KCk7CiB9CiAKIHZvaWQgQ2hpbGRQcm9jZXNzOjppbmNyZW1lbnRBY3RpdmVUYXNr
Q291bnQoKQogewotICAgIG1fYWN0aXZlVGFza0NvdW50Kys7Ci0gICAgaWYgKG1fc3VzcGVuc2lv
bkh5c3RlcmVzaXNUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3N1c3BlbnNpb25IeXN0ZXJl
c2lzVGltZXIuc3RvcCgpOwotICAgIGlmIChtX2FjdGl2ZVRhc2tDb3VudCkKLSAgICAgICAgc2V0
UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEludGVybmFsKGZhbHNlKTsKKyAgICBtX2FjdGl2ZVRh
c2tzLmJlZ2luQWN0aXZpdHkoKTsKIH0KIAogdm9pZCBDaGlsZFByb2Nlc3M6OmRlY3JlbWVudEFj
dGl2ZVRhc2tDb3VudCgpCiB7Ci0gICAgQVNTRVJUKG1fYWN0aXZlVGFza0NvdW50KTsKLSAgICBt
X2FjdGl2ZVRhc2tDb3VudC0tOwotICAgIGlmIChtX2FjdGl2ZVRhc2tDb3VudCkKLSAgICAgICAg
cmV0dXJuOwotICAgIGlmIChtX3Nob3VsZFN1c3BlbmQpCi0gICAgICAgIG1fc3VzcGVuc2lvbkh5
c3RlcmVzaXNUaW1lci5zdGFydE9uZVNob3Qoa1N1c3BlbnNpb25IeXN0ZXJlc2lzU2Vjb25kcyk7
Ci19Ci0KLXZvaWQgQ2hpbGRQcm9jZXNzOjpzdXNwZW5zaW9uSHlzdGVyZXNpc1RpbWVyRmlyZWQo
KQotewotICAgIEFTU0VSVCghbV9hY3RpdmVUYXNrQ291bnQpOwotICAgIEFTU0VSVChtX3Nob3Vs
ZFN1c3BlbmQpOwotICAgIHNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRJbnRlcm5hbCh0cnVl
KTsKKyAgICBtX2FjdGl2ZVRhc2tzLmVuZEFjdGl2aXR5KCk7CiB9CiAKICNpZiAhUExBVEZPUk0o
SU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKQEAgLTE1MCwx
MSArMTA5LDggQEAgdm9pZCBDaGlsZFByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAjaWYg
IVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkw
CiAgICAgaW5pdGlhbGl6ZVRpbWVyQ29hbGVzY2luZ1BvbGljeSgpOwogI2VuZGlmCi0gICAgLy8g
U3RhcnRpbmcgd2l0aCBwcm9jZXNzIHN1cHByZXNzaW9uIGRpc2FibGVkLiAgVGhlIHByb3h5IGZv
ciB0aGlzIHByb2Nlc3Mgd2lsbAotICAgIC8vIGVuYWJsZSBpZiBhcHByb3ByaWF0ZSBmcm9tIGRp
ZEZpbmlzaExhdW5jaGluZygpLgotICAgIC8vIFdlIHVzZSBzZXRQcm9jZXNzU3VwcHJlc3Npb25F
bmFibGVkSW50ZXJuYWwgdG8gYXZvaWQgYW55IHNob3J0IGNpcmN1aXQgbG9naWMKLSAgICAvLyB0
aGF0IHdvdWxkIHByZXZlbnQgdXMgZnJvbSB0YWtpbmcgdGhlIHN1cHByZXNzaW9uIGFzc2VydGlv
bi4KLSAgICBzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkSW50ZXJuYWwoZmFsc2UpOworICAg
IC8vIFN0YXJ0IHdpdGggcHJvY2VzcyBzdXBwcmVzc2lvbiBkaXNhYmxlZC4KKyAgICBtX3Byb2Nl
c3NTdXBwcmVzc2lvbkRpc2FibGVkLmJlZ2luQWN0aXZpdHkoKTsKIAogICAgIFtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gY2hhbmdlQ3VycmVudERpcmVjdG9yeVBhdGg6W1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBidW5kbGVQYXRoXV07CiB9Cg==
</data>
<flag name="review"
          id="243855"
          type_id="1"
          status="-"
          setter="sam"
    />
    <flag name="commit-queue"
          id="243856"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220179</attachid>
            <date>2013-12-31 23:08:05 -0800</date>
            <delta_ts>2014-01-02 22:52:47 -0800</delta_ts>
            <desc>GTK fix</desc>
            <filename>126330.2.patch</filename>
            <type>text/plain</type>
            <size>23314</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNjExNjcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDEzLTEyLTMxICBHYXZpbiBCYXJyYWNsb3VnaCAg
PGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBOU0FjdGl2aXR5IGhh
bmRsaW5nIGNvZGUgZnJvbSBDaGlsZFByb2Nlc3MgdG8gVXNlckFjdGl2aXR5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYzMzAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2VyQWN0aXZpdHkgaXMgYSBt
ZWNoYW5pc20gdG8gZXhwcmVzcyB0byB0aGUgb3BlcmF0aW5nIHN5c3RlbSAod2hlcmUgYXBwcm9w
cmlhdGUpCisgICAgICAgIHRoYXQgYSB1c2VyIGluaXRpYXRlZCBhY3Rpdml0eSBpcyB0YWtpbmcg
cGxhY2UsIGFuZCBhcyBzdWNoIHRoYXQgcmVzb3VyY2VzIHNob3VsZCBiZQorICAgICAgICBtYWRl
IGF2YWlsYWJsZSB0byB0aGUgcHJvY2VzcyBhY2NvcmRpbmdseS4KKworICAgICAgICBDdXJyZW50
bHkgd2UgaG9sZCBhIHNpbmdsZSBOU0FjdGl2aXR5LCBhdCB0aGUgV2ViS2l0IGxheWVyLiBUaGlz
IHJlZmFjdG9yaW5nIGFsbG93cyB1cworICAgICAgICB0byBob2xkIGRpZmZlcmVudCBhY3Rpdml0
eSB0b2tlbnMgZm9yIGRpZmZlcmVudCB1c2VyIGFjdGlvbnMgKHdoaWNoIHNpbXBsaWZpZXMgdGhl
CisgICAgICAgIGhhbmRsaW5nLCBhbmQgYWlkZXMgZGVidWdnaW5nIHNpbmNlIHRoZSB0b2tlbiBj
YW4gbW9yZSBhY2N1cmF0ZWx5IGV4cHJlc3MgdGhlIGFjdGl2aXR5CisgICAgICAgIHRha2luZyBw
bGFjZSksIGFuZCBhbHNvIHdpbGwgYWxsb3cgdXMgdG8gYXZvaWQgdGhlIGxheWVyaW5nIGRpZmZp
Y3VsdHkgb2YgY2FsbGluZyBiYWNrCisgICAgICAgIHVwIHRoZSBzdGFjayB0byBXZWJLaXQgdG8g
cmVnaXN0ZXIgdGhhdCBhbiBhY3Rpdml0eSBpcyB0YWtpbmcgcGxhY2UuCisKKyAgICAgICAgKiBX
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgICAgIC0gYWRkZWQgbmV3IGZp
bGVzLgorICAgICAgICAqIHd0Zi9Vc2VyQWN0aXZpdHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdU
Rjo6VXNlckFjdGl2aXR5OjpVc2VyQWN0aXZpdHkpOgorICAgICAgICAgICAgLSBub3AgaW1wbGVt
ZW50YXRpb24gLSBpZ25vcmUgZGVzY3JpcHRpb24uCisgICAgICAgIChXVEY6OlVzZXJBY3Rpdml0
eTo6YmVnaW5BY3Rpdml0eSk6CisgICAgICAgIChXVEY6OlVzZXJBY3Rpdml0eTo6ZW5kQWN0aXZp
dHkpOgorICAgICAgICAgICAgLSBub3AgaW1wbGVtZW50YXRpb24gLSBqdXN0IGluYy9kZWMgbV9j
b3VudC4KKyAgICAgICAgKiB3dGYvVXNlckFjdGl2aXR5Lmg6IEFkZGVkLgorICAgICAgICAoV1RG
OjpVc2VyQWN0aXZpdHk6OmlzQWN0aXZlKToKKyAgICAgICAgICAgIC0gcmV0dXJucyB0cnVlIGlm
IG9uZSBvciBtb3JlIGluc3RhbmNlIG9mIHRoaXMgYWN0aXZpdHkgaXMgaW4gcHJvZ3Jlc3MuCisg
ICAgICAgICogd3RmL21hYy9Vc2VyQWN0aXZpdHlNYWMubW06IEFkZGVkLgorICAgICAgICAoV1RG
OjpVc2VyQWN0aXZpdHk6OlVzZXJBY3Rpdml0eSk6CisgICAgICAgICAgICAtIGNvbnN0cnVjdG9y
IGFjY2VwdHMgb25lIGFyZ3VtZW50LCBhIGRlc2NyaXB0aW9uIHN0cmluZy4KKyAgICAgICAgKFdU
Rjo6VXNlckFjdGl2aXR5Ojppc1ZhbGlkKToKKyAgICAgICAgICAgIC0gdXNlZCBieSBhc3NlcnRp
b25zLgorICAgICAgICAoV1RGOjpVc2VyQWN0aXZpdHk6OmJlZ2luQWN0aXZpdHkpOgorICAgICAg
ICAoV1RGOjpVc2VyQWN0aXZpdHk6OmVuZEFjdGl2aXR5KToKKyAgICAgICAgICAgIC0gdHJhY2sg
c3RhcnQvZW5kIG9mIGFuIGFjdGl2aXR5IC0gY2FsbHMgdG8gdGhlc2UgbWV0aG9kcyBzaG91bGQg
YmUgYmFsYW5jZWQuCisgICAgICAgIChXVEY6OlVzZXJBY3Rpdml0eTo6aHlzdGVyZXNpc1RpbWVy
RmlyZWQpOgorICAgICAgICAgICAgICAtIHVzZWQgdG8gaW1wbGVtZW50IGh5c3RlcmVzaXMgaW4g
cmVsZWFzaW5nICBOU0FjdGl2aXR5LgorCisKIDIwMTMtMTItMzAgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIHlpZWxkKCkgYW5kIHBhdXNl
QnJpZWZseSgpIHdpdGggc3RkOjp0aGlzX3RocmVhZDo6eWllbGQoKQpJbmRleDogU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjExMDcpCisrKyBTb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02
Nyw2ICs2Nyw5IEBACiAJCTdFMjlDMzNFMTVGRkQ3OUIwMDUxNkQ2MSAvKiBPYmpjUnVudGltZUV4
dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Uy
OUMzM0QxNUZGRDc5QjAwNTE2RDYxIC8qIE9iamNSdW50aW1lRXh0cmFzLmggKi87IH07CiAJCTgx
MzQwMTM4MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODEzNDAxMzYxNUIwOTJGRDAwMUZGMEI4IC8qIEJh
c2U2NC5jcHAgKi87IH07CiAJCTgxMzQwMTM5MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgxMzQwMTM3MTVC
MDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuaCAqLzsgfTsKKwkJODZERDFFNzcxODcyNTgyODAwMkZG
OTk4IC8qIFVzZXJBY3Rpdml0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODZERDFFNzYxODcyNTdBODAwMkZGOTk4IC8qIFVzZXJBY3Rpdml0eS5oICov
OyB9OworCQk4NkREMUU3ODE4NzI1OEY4MDAyRkY5OTggLyogVXNlckFjdGl2aXR5TWFjLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZERDFFNzQxODcy
NTc5ODAwMkZGOTk4IC8qIFVzZXJBY3Rpdml0eU1hYy5tbSAqLzsgfTsKKwkJODZERDFFNzkxODcy
NThGODAwMkZGOTk4IC8qIFVzZXJBY3Rpdml0eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkREMUU3NTE4NzI1N0E4MDAyRkY5OTggLyogVXNlckFj
dGl2aXR5LmNwcCAqLzsgfTsKIAkJOTNCMUFBODAxODBFNUFGMzAwNEEyRjA1IC8qIFBhc3NSZWYu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjFBQTdG
MTgwRTVBRjMwMDRBMkYwNSAvKiBQYXNzUmVmLmggKi87IH07CiAJCTk3NENGQzhFMTZBNEYzMjcw
MDZENTQwNCAvKiBXZWFrUHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NzRDRkM4RDE2QTRGMzI3MDA2RDU0MDQgLyogV2Vha1B0ci5oICovOyB9Owog
CQk5QkM3MEYwNTE3NkMzNzlEMDAxMDFERUMgLyogQXRvbWljU3RyaW5nVGFibGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJDNzBGMDQxNzZDMzc5
RDAwMTAxREVDIC8qIEF0b21pY1N0cmluZ1RhYmxlLmNwcCAqLzsgfTsKQEAgLTMzOCw2ICszNDEs
OSBAQAogCQk3RTI5QzMzRDE1RkZENzlCMDA1MTZENjEgLyogT2JqY1J1bnRpbWVFeHRyYXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT2JqY1J1bnRpbWVFeHRyYXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODEzNDAxMzYxNUIwOTJGRDAwMUZGMEI4IC8qIEJh
c2U2NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYXNlNjQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MTM0MDEzNzE1QjA5MkZEMDAxRkYwQjgg
LyogQmFzZTY0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2U2NC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkREMUU3NDE4NzI1Nzk4MDAyRkY5OTggLyog
VXNlckFjdGl2aXR5TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVXNlckFjdGl2aXR5TWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkREMUU3NTE4NzI1N0E4MDAyRkY5
OTggLyogVXNlckFjdGl2aXR5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJBY3Rpdml0eS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2REQxRTc2MTg3MjU3QTgwMDJGRjk5
OCAvKiBVc2VyQWN0aXZpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckFjdGl2aXR5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjFBQTdGMTgwRTVBRjMwMDRBMkYwNSAvKiBQYXNz
UmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhc3NSZWYuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc0Q0ZDOEQxNkE0RjMyNzAwNkQ1NDA0IC8qIFdlYWtQ
dHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1B0ci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5QkM3MEYwNDE3NkMzNzlEMDAxMDFERUMgLyogQXRvbWlj
U3RyaW5nVGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXRv
bWljU3RyaW5nVGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODIyLDYg
KzgyOCw4IEBACiAJCQkJQThBNDczM0YxNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZFNwZWNpZmlj
LmggKi8sCiAJCQkJMTQ5RUYxNjIxNkJCRkUwRDAwMEE0MzMxIC8qIFRyaVN0YXRlLmggKi8sCiAJ
CQkJQThBNDczNUMxNTFBODI1QjAwNDEyM0ZGIC8qIFVuaW9uRmluZC5oICovLAorCQkJCTg2REQx
RTc1MTg3MjU3QTgwMDJGRjk5OCAvKiBVc2VyQWN0aXZpdHkuY3BwICovLAorCQkJCTg2REQxRTc2
MTg3MjU3QTgwMDJGRjk5OCAvKiBVc2VyQWN0aXZpdHkuaCAqLywKIAkJCQlBOEE0NzM2RjE1MUE4
MjVCMDA0MTIzRkYgLyogVmFsdWVDaGVjay5oICovLAogCQkJCUE4QTQ3MzcwMTUxQTgyNUIwMDQx
MjNGRiAvKiBWZWN0b3IuaCAqLywKIAkJCQlBOEE0NzM3MTE1MUE4MjVCMDA0MTIzRkYgLyogVmVj
dG9yVHJhaXRzLmggKi8sCkBAIC04NjUsNiArODczLDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCiAJCQkJQThBNDcyQzUxNTFBODI1QTAwNDEyM0ZGIC8qIE1haW5UaHJl
YWRNYWMubW0gKi8sCisJCQkJODZERDFFNzQxODcyNTc5ODAwMkZGOTk4IC8qIFVzZXJBY3Rpdml0
eU1hYy5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTk5NCw2ICsxMDAzLDcgQEAKIAkJCQlBOEE0NzNCRDE1MUE4MjVCMDA0MTIzRkYg
LyogRHluYW1pY0Fubm90YXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNDMDE1MUE4
MjVCMDA0MTIzRkYgLyogRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczQzExNTFB
ODI1QjAwNDEyM0ZGIC8qIEV4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZERDFF
NzcxODcyNTgyODAwMkZGOTk4IC8qIFVzZXJBY3Rpdml0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QThBNDczQjQxNTFBODI1QjAwNDEyM0ZGIC8qIGZhc3QtZHRvYS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZEODFBQzUxNTRGQjIyRTAwOTgzRTcyIC8qIEZhc3RCaXRWZWN0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4QTQ3M0M0MTUxQTgyNUIwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmggaW4gSGVh
ZGVycyAqLywKQEAgLTEyNTUsNiArMTI2NSw3IEBACiAJCQkJRkVEQUNEM0QxNjMwRjgzRjAwQzY5
NjM0IC8qIFN0YWNrU3RhdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0M0MxNTFBODI1
QjAwNDEyM0ZGIC8qIFN0cmluZ0J1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0
NDAxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0ltcGwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
ODZERDFFNzgxODcyNThGODAwMkZGOTk4IC8qIFVzZXJBY3Rpdml0eU1hYy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGRERCRkE3MTY2NkRGQTMwMEM1NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ0MzE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5n
U3RhdGljcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNCNzE1MUE4MjVCMDA0MTIzRkYg
Lyogc3RydG9kLmNjIGluIFNvdXJjZXMgKi8sCkBAIC0xMjY0LDYgKzEyNzUsNyBAQAogCQkJCUE4
QTQ3NDRFMTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRpbmdQdGhyZWFkcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBOEE0NzQ2OTE1MUE4MjVCMDA0MTIzRkYgLyogVVRGOC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxRkE0N0M4QTE1MjUwMkRBMDA1NjhEMUIgLyogV2ViQ29yZVRocmVhZC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk4NkREMUU3OTE4NzI1OEY4MDAyRkY5OTggLyogVXNlckFjdGl2
aXR5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDQ1MTUxQTgyNUIwMDQxMjNGRiAvKiBX
VEZTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0ODYxNTFBODI1QjAwNDEyM0ZG
IC8qIFdURlRocmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwpJbmRleDogU291cmNl
L1dURi93dGYvVXNlckFjdGl2aXR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9V
c2VyQWN0aXZpdHkuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dURi93dGYvVXNlckFjdGl2
aXR5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVzZXJBY3Rpdml0eS5oIgorCituYW1lc3BhY2Ug
V1RGIHsKKworI2lmICFQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwOTAKKworVXNlckFjdGl2aXR5OjpVc2VyQWN0aXZp
dHkoY29uc3QgY2hhciopCisgICAgOiBtX2NvdW50KDApCit7Cit9CisKK3ZvaWQgVXNlckFjdGl2
aXR5OjpiZWdpbkFjdGl2aXR5KCkKK3sKKyAgICArK21fY291bnQ7Cit9CisKK3ZvaWQgVXNlckFj
dGl2aXR5OjplbmRBY3Rpdml0eSgpCit7CisgICAgQVNTRVJUKG1fY291bnQpOworICAgIC0tbV9j
b3VudDsKK30KKworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dU
Ri93dGYvVXNlckFjdGl2aXR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvVXNlckFj
dGl2aXR5LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV1RGL3d0Zi9Vc2VyQWN0aXZpdHkuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBVc2Vy
QWN0aXZpdHlfaAorI2RlZmluZSBVc2VyQWN0aXZpdHlfaAorCisjaWYgUExBVEZPUk0oTUFDKQor
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUnVubG9vcC5oPgorI2Vu
ZGlmCisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBVc2VyQWN0aXZpdHkgeworcHVibGljOgor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBVc2VyQWN0aXZpdHkoY29uc3QgY2hhciogZGVzY3JpcHRp
b24pOworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYmVnaW5BY3Rpdml0eSgpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGVuZEFjdGl2aXR5KCk7CisKKyAgICBib29sIGlzQWN0
aXZlKCkgY29uc3QgeyByZXR1cm4gbV9jb3VudDsgfQorCitwcml2YXRlOgorICAgIHNpemVfdCBt
X2NvdW50OworCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKyAgICB2b2lkIGh5c3RlcmVzaXNUaW1l
ckZpcmVkKCk7CisgICAgYm9vbCBpc1ZhbGlkKCk7CisKKyAgICBSZXRhaW5QdHI8aWQ+IG1fZGVz
Y3JpcHRpb247CisgICAgUnVuTG9vcDo6VGltZXI8VXNlckFjdGl2aXR5PiBtX3RpbWVyOworICAg
IFJldGFpblB0cjxpZD4gbV9hY3Rpdml0eTsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2Ug
V1RGCisKK3VzaW5nIFdURjo6VXNlckFjdGl2aXR5OworCisjZW5kaWYgLy8gVXNlckFjdGl2aXR5
X2gKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL21hYy9Vc2VyQWN0aXZpdHlNYWMubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvbWFjL1VzZXJBY3Rpdml0eU1hYy5tbQkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XVEYvd3RmL21hYy9Vc2VyQWN0aXZpdHlNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiVXNlckFjdGl2aXR5LmgiCisKKyNpbXBvcnQgInN5c2xvZy5oIgorCituYW1lc3BhY2UgV1RG
IHsKKworI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCisKK3N0YXRpYyBjb25zdCBkb3VibGUga0h5c3Rl
cmVzaXNTZWNvbmRzID0gNS4wOworCitVc2VyQWN0aXZpdHk6OlVzZXJBY3Rpdml0eShjb25zdCBj
aGFyKiBkZXNjcmlwdGlvbikKKyAgICA6IG1fY291bnQoMCkKKyAgICAsIG1fZGVzY3JpcHRpb24o
W05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmRlc2NyaXB0aW9uXSkKKyAgICAsIG1fdGlt
ZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmVXNlckFjdGl2aXR5OjpoeXN0ZXJlc2lzVGltZXJG
aXJlZCkKK3sKKyAgICBBU1NFUlQoaXNWYWxpZCgpKTsKK30KKworYm9vbCBVc2VyQWN0aXZpdHk6
OmlzVmFsaWQoKQoreworICAgIC8vIElmIGNvdW50IGlzIG5vbi16ZXJvIHRoZW4gd2Ugc2hvdWxk
IGJlIGhvbGRpbmcgYW4gYWN0aXZpdHksIGFuZCB0aGUgaHlzdGVyZXNpcyB0aW1lciBzaG91bGQg
bm90IGJlIHJ1bm5pbmcuCisgICAgLy8gRWxzZSBpZiBjb3VudCBpcyB6ZXJvIHRoZW46CisgICAg
Ly8gIChhKSBpZiB3ZSdyZSBob2xkaW5nIGFuIGFjdGl2aXR5IHRoZXJlIHNob3VsZCBiZSBhbiBh
Y3RpdmUgdGltZXIgdG8gY2xlYXIgdGhpcywKKyAgICAvLyAgKGIpIGlmIHdlJ3JlIG5vdCBob2xk
aW5nIGFuIGFjdGl2aXR5IHRoZXJlIHNob3VsZCBiZSBubyBhY3RpdmUgdGltZXIuCisgICAgcmV0
dXJuIG1fY291bnQgPyBtX2FjdGl2aXR5ICYmICFtX3RpbWVyLmlzQWN0aXZlKCkgOiAhIW1fYWN0
aXZpdHkgPT0gbV90aW1lci5pc0FjdGl2ZSgpOworfQorCit2b2lkIFVzZXJBY3Rpdml0eTo6YmVn
aW5BY3Rpdml0eSgpCit7CisgICAgQVNTRVJUKGlzVmFsaWQoKSk7CisKKyAgICArK21fY291bnQ7
CisgICAgaWYgKG1fdGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV90aW1lci5zdG9wKCk7Cisg
ICAgaWYgKCFtX2FjdGl2aXR5KSB7CisgICAgICAgIE5TQWN0aXZpdHlPcHRpb25zIG9wdGlvbnMg
PSAoTlNBY3Rpdml0eVVzZXJJbml0aWF0ZWRBbGxvd2luZ0lkbGVTeXN0ZW1TbGVlcCB8IE5TQWN0
aXZpdHlMYXRlbmN5Q3JpdGljYWwpICYgfihOU0FjdGl2aXR5U3VkZGVuVGVybWluYXRpb25EaXNh
YmxlZCB8IE5TQWN0aXZpdHlBdXRvbWF0aWNUZXJtaW5hdGlvbkRpc2FibGVkKTsKKyAgICAgICAg
bV9hY3Rpdml0eSA9IFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gYmVnaW5BY3Rpdml0eVdp
dGhPcHRpb25zOm9wdGlvbnMgcmVhc29uOm1fZGVzY3JpcHRpb24uZ2V0KCldOworICAgIH0KKwor
ICAgIHN5c2xvZyhMT0dfRVJSLCAiYmVnaW5BY3Rpdml0eSglcykgLT4gJWQiLCBbbV9kZXNjcmlw
dGlvbi5nZXQoKSBVVEY4U3RyaW5nXSwgKGludCltX2NvdW50KTsKKworICAgIEFTU0VSVChpc1Zh
bGlkKCkpOworfQorCit2b2lkIFVzZXJBY3Rpdml0eTo6ZW5kQWN0aXZpdHkoKQoreworICAgIEFT
U0VSVChtX2NvdW50KTsKKyAgICBBU1NFUlQoaXNWYWxpZCgpKTsKKworICAgIGlmICghLS1tX2Nv
dW50KQorICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChrSHlzdGVyZXNpc1NlY29uZHMpOwor
CisgICAgc3lzbG9nKExPR19FUlIsICJlbmRBY3Rpdml0eSglcykgLT4gJWQiLCBbbV9kZXNjcmlw
dGlvbi5nZXQoKSBVVEY4U3RyaW5nXSwgKGludCltX2NvdW50KTsKKworICAgIEFTU0VSVChpc1Zh
bGlkKCkpOworfQorCit2b2lkIFVzZXJBY3Rpdml0eTo6aHlzdGVyZXNpc1RpbWVyRmlyZWQoKQor
eworICAgIEFTU0VSVChpc1ZhbGlkKCkpOworCisgICAgc3lzbG9nKExPR19FUlIsICJoeXN0ZXJl
c2lzVGltZXJGaXJlZCglcykiLCBbbV9kZXNjcmlwdGlvbi5nZXQoKSBVVEY4U3RyaW5nXSk7CisK
KyAgICBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGVuZEFjdGl2aXR5Om1fYWN0aXZpdHku
Z2V0KCldOworICAgIG1fYWN0aXZpdHkuY2xlYXIoKTsKKworLy8gICAgQVNTRVJUKGlzVmFsaWQo
KSk7Cit9CisKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE2MTE4NikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDM2IEBACisyMDEzLTEyLTMxICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJh
Y2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBOU0FjdGl2aXR5IGhhbmRsaW5n
IGNvZGUgZnJvbSBDaGlsZFByb2Nlc3MgdG8gVXNlckFjdGl2aXR5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYzMzAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2VyQWN0aXZpdHkgaXMgYSBtZWNoYW5p
c20gdG8gZXhwcmVzcyB0byB0aGUgb3BlcmF0aW5nIHN5c3RlbSAod2hlcmUgYXBwcm9wcmlhdGUp
CisgICAgICAgIHRoYXQgYSB1c2VyIGluaXRpYXRlZCBhY3Rpdml0eSBpcyB0YWtpbmcgcGxhY2Us
IGFuZCBhcyBzdWNoIHRoYXQgcmVzb3VyY2VzIHNob3VsZCBiZQorICAgICAgICBtYWRlIGF2YWls
YWJsZSB0byB0aGUgcHJvY2VzcyBhY2NvcmRpbmdseS4KKworICAgICAgICBDdXJyZW50bHkgd2Ug
aG9sZCBhIHNpbmdsZSBOU0FjdGl2aXR5LCBhdCB0aGUgV2ViS2l0IGxheWVyLiBUaGlzIHJlZmFj
dG9yaW5nIGFsbG93cyB1cworICAgICAgICB0byBob2xkIGRpZmZlcmVudCBhY3Rpdml0eSB0b2tl
bnMgZm9yIGRpZmZlcmVudCB1c2VyIGFjdGlvbnMgKHdoaWNoIHNpbXBsaWZpZXMgdGhlCisgICAg
ICAgIGhhbmRsaW5nLCBhbmQgYWlkZXMgZGVidWdnaW5nIHNpbmNlIHRoZSB0b2tlbiBjYW4gbW9y
ZSBhY2N1cmF0ZWx5IGV4cHJlc3MgdGhlIGFjdGl2aXR5CisgICAgICAgIHRha2luZyBwbGFjZSks
IGFuZCBhbHNvIHdpbGwgYWxsb3cgdXMgdG8gYXZvaWQgdGhlIGxheWVyaW5nIGRpZmZpY3VsdHkg
b2YgY2FsbGluZyBiYWNrCisgICAgICAgIHVwIHRoZSBzdGFjayB0byBXZWJLaXQgdG8gcmVnaXN0
ZXIgdGhhdCBhbiBhY3Rpdml0eSBpcyB0YWtpbmcgcGxhY2UuCisKKyAgICAgICAgKiBTaGFyZWQv
Q2hpbGRQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjpDaGlsZFBy
b2Nlc3MpOgorICAgICAgICAgICAgLSByZW1vdmVkIGZpZWxkcyB0byBkaXJlY3RseSBtYW5hZ2Ug
TlNBY3Rpdml0eSwgdXNlIFVzZXJBY3Rpdml0eSBvYmplY3RzIGluc3RlYWQuCisgICAgICAgICog
U2hhcmVkL0NoaWxkUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3M6OnBy
b2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpOgorICAgICAgICAgICAgLSBjaGFuZ2VkIHRvIGluaXRp
YWxpemUgbmV3IGZpZWxkcy4KKyAgICAgICAgKiBTaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjpzZXRQcm9jZXNzU3VwcHJlc3Npb25F
bmFibGVkKToKKyAgICAgICAgICAgIC0gaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YgVXNlckFjdGl2
aXR5IG1fcHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZWQuCisgICAgICAgIChXZWJLaXQ6OkNoaWxk
UHJvY2Vzczo6aW5jcmVtZW50QWN0aXZlVGFza0NvdW50KToKKyAgICAgICAgICAgIC0gaW1wbGVt
ZW50ZWQgaW4gdGVybXMgb2YgVXNlckFjdGl2aXR5IG1fYWN0aXZlVGFza3MuCisgICAgICAgIChX
ZWJLaXQ6OkNoaWxkUHJvY2Vzczo6ZGVjcmVtZW50QWN0aXZlVGFza0NvdW50KToKKyAgICAgICAg
ICAgIC0gaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YgVXNlckFjdGl2aXR5IG1fYWN0aXZlVGFza3Mu
CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAg
ICAgICAgICAgIC0gaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YgVXNlckFjdGl2aXR5IG1fcHJvY2Vz
c1N1cHByZXNzaW9uRGlzYWJsZWQuCisKIDIwMTMtMTItMzEgIEJyZW5kYW4gTG9uZyAgPGIubG9u
Z0BjYWJsZWxhYnMuY29tPgogCiAgICAgICAgIFtHdGtdIFdlYktpdFdlYkluc3BlY3RvciBoYXMg
YnVpbGQgd2FybmluZ3MgZHVlIHRvIHVuaW5pdGlhbGl6ZWQgZGlkQ2hhbmdlQXR0YWNoZWRXaWR0
aCBtZW1iZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCShyZXZp
c2lvbiAxNjExMDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYsOCBAQCBDaGlsZFByb2Nlc3M6OkNoaWxkUHJvY2Vz
cygpCiAgICAgLCBtX3Rlcm1pbmF0aW9uQ291bnRlcigwKQogICAgICwgbV90ZXJtaW5hdGlvblRp
bWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkNoaWxkUHJvY2Vzczo6dGVybWluYXRpb25UaW1l
ckZpcmVkKQogI2lmIFBMQVRGT1JNKE1BQykKLSAgICAsIG1fYWN0aXZlVGFza0NvdW50KDApCi0g
ICAgLCBtX3Nob3VsZFN1c3BlbmQoZmFsc2UpCi0gICAgLCBtX3N1c3BlbnNpb25IeXN0ZXJlc2lz
VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmQ2hpbGRQcm9jZXNzOjpzdXNwZW5zaW9uSHlz
dGVyZXNpc1RpbWVyRmlyZWQpCisgICAgLCBtX3Byb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkKCJQ
cm9jZXNzIFN1cHByZXNzaW9uIERpc2FibGVkIGJ5IFVJUHJvY2VzcyIpCisgICAgLCBtX2FjdGl2
ZVRhc2tzKCJQcm9jZXNzIFN1cHByZXNzaW9uIERpc2FibGVkIGJ5IFdlYlByb2Nlc3MiKQogI2Vu
ZGlmCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5oCShyZXZpc2lv
biAxNjExMDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1
ZGUgPHd0Zi9Vc2VyQWN0aXZpdHkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTYzLDcgKzY0LDcgQEAgcHVi
bGljOgogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgc2V0UHJvY2Vzc1N1cHByZXNzaW9u
RW5hYmxlZChib29sKTsKLSAgICBib29sIHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiAhbV9wcm9jZXNzU3VwcHJlc3Npb25Bc3NlcnRpb247IH0KKyAgICBib29sIHBy
b2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiAhbV9wcm9jZXNzU3VwcHJl
c3Npb25EaXNhYmxlZC5pc0FjdGl2ZSgpOyB9CiAgICAgdm9pZCBpbmNyZW1lbnRBY3RpdmVUYXNr
Q291bnQoKTsKICAgICB2b2lkIGRlY3JlbWVudEFjdGl2ZVRhc2tDb3VudCgpOwogCkBAIC0xMjAs
MTIgKzEyMSw4IEBAIHByaXZhdGU6CiAgICAgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyTWFwIG1f
bWVzc2FnZVJlY2VpdmVyTWFwOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHZvaWQgc3VzcGVu
c2lvbkh5c3RlcmVzaXNUaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBzZXRQcm9jZXNzU3VwcHJlc3Np
b25FbmFibGVkSW50ZXJuYWwoYm9vbCk7Ci0gICAgc2l6ZV90IG1fYWN0aXZlVGFza0NvdW50Owot
ICAgIGJvb2wgbV9zaG91bGRTdXNwZW5kOwotICAgIFJ1bkxvb3A6OlRpbWVyPENoaWxkUHJvY2Vz
cz4gbV9zdXNwZW5zaW9uSHlzdGVyZXNpc1RpbWVyOwotICAgIFJldGFpblB0cjxpZD4gbV9wcm9j
ZXNzU3VwcHJlc3Npb25Bc3NlcnRpb247CisgICAgVXNlckFjdGl2aXR5IG1fcHJvY2Vzc1N1cHBy
ZXNzaW9uRGlzYWJsZWQ7CisgICAgVXNlckFjdGl2aXR5IG1fYWN0aXZlVGFza3M7CiAjZW5kaWYK
IH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFj
Lm1tCShyZXZpc2lvbiAxNjExMDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxk
UHJvY2Vzc01hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjAsNjYgKzYwLDI1IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIGNvbnN0IGRv
dWJsZSBrU3VzcGVuc2lvbkh5c3RlcmVzaXNTZWNvbmRzID0gNS4wOwotCi12b2lkIENoaWxkUHJv
Y2Vzczo6c2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEludGVybmFsKGJvb2wgcHJvY2Vzc1N1
cHByZXNzaW9uRW5hYmxlZCkKK3ZvaWQgQ2hpbGRQcm9jZXNzOjpzZXRQcm9jZXNzU3VwcHJlc3Np
b25FbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKLSNpZiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKLSAgICBpZiAodGhpcy0+cHJvY2Vzc1N1
cHByZXNzaW9uRW5hYmxlZCgpID09IHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpCisgICAgaWYg
KHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoKSA9PSBlbmFibGVkKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAocHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCkgewotICAgICAgICBBU1NFUlQo
IW1fYWN0aXZlVGFza0NvdW50KTsKLSAgICAgICAgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZv
XSBlbmRBY3Rpdml0eTptX3Byb2Nlc3NTdXBwcmVzc2lvbkFzc2VydGlvbi5nZXQoKV07Ci0gICAg
ICAgIG1fcHJvY2Vzc1N1cHByZXNzaW9uQXNzZXJ0aW9uLmNsZWFyKCk7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgTlNBY3Rpdml0eU9wdGlvbnMgb3B0aW9ucyA9IChOU0FjdGl2aXR5VXNlckluaXRp
YXRlZEFsbG93aW5nSWRsZVN5c3RlbVNsZWVwIHwgTlNBY3Rpdml0eUxhdGVuY3lDcml0aWNhbCkg
JiB+KE5TQWN0aXZpdHlTdWRkZW5UZXJtaW5hdGlvbkRpc2FibGVkIHwgTlNBY3Rpdml0eUF1dG9t
YXRpY1Rlcm1pbmF0aW9uRGlzYWJsZWQpOwotICAgICAgICBtX3Byb2Nlc3NTdXBwcmVzc2lvbkFz
c2VydGlvbiA9IFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gYmVnaW5BY3Rpdml0eVdpdGhP
cHRpb25zOm9wdGlvbnMgcmVhc29uOkAiUHJvY2VzcyBTdXBwcmVzc2lvbiBEaXNhYmxlZCJdOwot
ICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQp
OwotI2VuZGlmCi19Ci0KLXZvaWQgQ2hpbGRQcm9jZXNzOjpzZXRQcm9jZXNzU3VwcHJlc3Npb25F
bmFibGVkKGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCkKLXsKLSAgICBpZiAodGhpcy0+
cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgpID09IHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQp
Ci0gICAgICAgIHJldHVybjsKLSAgICBpZiAobV9zaG91bGRTdXNwZW5kID09IHByb2Nlc3NTdXBw
cmVzc2lvbkVuYWJsZWQpCi0gICAgICAgIHJldHVybjsKLSAgICBtX3Nob3VsZFN1c3BlbmQgPSBw
cm9jZXNzU3VwcHJlc3Npb25FbmFibGVkOwotICAgIGlmIChtX3Nob3VsZFN1c3BlbmQpIHsKLSAg
ICAgICAgaWYgKCFtX2FjdGl2ZVRhc2tDb3VudCkKLSAgICAgICAgICAgIG1fc3VzcGVuc2lvbkh5
c3RlcmVzaXNUaW1lci5zdGFydE9uZVNob3Qoa1N1c3BlbnNpb25IeXN0ZXJlc2lzU2Vjb25kcyk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxl
ZEludGVybmFsKGZhbHNlKTsKKyAgICBpZiAoZW5hYmxlZCkKKyAgICAgICAgbV9wcm9jZXNzU3Vw
cHJlc3Npb25EaXNhYmxlZC5lbmRBY3Rpdml0eSgpOworICAgIGVsc2UKKyAgICAgICAgbV9wcm9j
ZXNzU3VwcHJlc3Npb25EaXNhYmxlZC5iZWdpbkFjdGl2aXR5KCk7CiB9CiAKIHZvaWQgQ2hpbGRQ
cm9jZXNzOjppbmNyZW1lbnRBY3RpdmVUYXNrQ291bnQoKQogewotICAgIG1fYWN0aXZlVGFza0Nv
dW50Kys7Ci0gICAgaWYgKG1fc3VzcGVuc2lvbkh5c3RlcmVzaXNUaW1lci5pc0FjdGl2ZSgpKQot
ICAgICAgICBtX3N1c3BlbnNpb25IeXN0ZXJlc2lzVGltZXIuc3RvcCgpOwotICAgIGlmIChtX2Fj
dGl2ZVRhc2tDb3VudCkKLSAgICAgICAgc2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEludGVy
bmFsKGZhbHNlKTsKKyAgICBtX2FjdGl2ZVRhc2tzLmJlZ2luQWN0aXZpdHkoKTsKIH0KIAogdm9p
ZCBDaGlsZFByb2Nlc3M6OmRlY3JlbWVudEFjdGl2ZVRhc2tDb3VudCgpCiB7Ci0gICAgQVNTRVJU
KG1fYWN0aXZlVGFza0NvdW50KTsKLSAgICBtX2FjdGl2ZVRhc2tDb3VudC0tOwotICAgIGlmICht
X2FjdGl2ZVRhc2tDb3VudCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChtX3Nob3VsZFN1c3Bl
bmQpCi0gICAgICAgIG1fc3VzcGVuc2lvbkh5c3RlcmVzaXNUaW1lci5zdGFydE9uZVNob3Qoa1N1
c3BlbnNpb25IeXN0ZXJlc2lzU2Vjb25kcyk7Ci19Ci0KLXZvaWQgQ2hpbGRQcm9jZXNzOjpzdXNw
ZW5zaW9uSHlzdGVyZXNpc1RpbWVyRmlyZWQoKQotewotICAgIEFTU0VSVCghbV9hY3RpdmVUYXNr
Q291bnQpOwotICAgIEFTU0VSVChtX3Nob3VsZFN1c3BlbmQpOwotICAgIHNldFByb2Nlc3NTdXBw
cmVzc2lvbkVuYWJsZWRJbnRlcm5hbCh0cnVlKTsKKyAgICBtX2FjdGl2ZVRhc2tzLmVuZEFjdGl2
aXR5KCk7CiB9CiAKICNpZiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwOTAKQEAgLTE1MCwxMSArMTA5LDggQEAgdm9pZCBDaGlsZFByb2Nlc3M6
OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAjaWYgIVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCiAgICAgaW5pdGlhbGl6ZVRpbWVyQ29hbGVzY2lu
Z1BvbGljeSgpOwogI2VuZGlmCi0gICAgLy8gU3RhcnRpbmcgd2l0aCBwcm9jZXNzIHN1cHByZXNz
aW9uIGRpc2FibGVkLiAgVGhlIHByb3h5IGZvciB0aGlzIHByb2Nlc3Mgd2lsbAotICAgIC8vIGVu
YWJsZSBpZiBhcHByb3ByaWF0ZSBmcm9tIGRpZEZpbmlzaExhdW5jaGluZygpLgotICAgIC8vIFdl
IHVzZSBzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkSW50ZXJuYWwgdG8gYXZvaWQgYW55IHNo
b3J0IGNpcmN1aXQgbG9naWMKLSAgICAvLyB0aGF0IHdvdWxkIHByZXZlbnQgdXMgZnJvbSB0YWtp
bmcgdGhlIHN1cHByZXNzaW9uIGFzc2VydGlvbi4KLSAgICBzZXRQcm9jZXNzU3VwcHJlc3Npb25F
bmFibGVkSW50ZXJuYWwoZmFsc2UpOworICAgIC8vIFN0YXJ0IHdpdGggcHJvY2VzcyBzdXBwcmVz
c2lvbiBkaXNhYmxlZC4KKyAgICBtX3Byb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkLmJlZ2luQWN0
aXZpdHkoKTsKIAogICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY2hhbmdlQ3Vy
cmVudERpcmVjdG9yeVBhdGg6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVQYXRoXV07CiB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220282</attachid>
            <date>2014-01-02 22:52:47 -0800</date>
            <delta_ts>2014-01-03 00:12:47 -0800</delta_ts>
            <desc>Fix</desc>
            <filename>126330.4.patch</filename>
            <type>text/plain</type>
            <size>27162</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNjEyNTApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE0LTAxLTAyICBHYXZpbiBCYXJyYWNsb3VnaCAg
PGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBOU0FjdGl2aXR5IGhh
bmRsaW5nIGNvZGUgZnJvbSBDaGlsZFByb2Nlc3MgdG8gVXNlckFjdGl2aXR5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYzMzAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2VyQWN0aXZpdHkgaXMgYSBt
ZWNoYW5pc20gdG8gZXhwcmVzcyB0byB0aGUgb3BlcmF0aW5nIHN5c3RlbSAod2hlcmUgYXBwcm9w
cmlhdGUpCisgICAgICAgIHRoYXQgYSB1c2VyIGluaXRpYXRlZCBhY3Rpdml0eSBpcyB0YWtpbmcg
cGxhY2UsIGFuZCBhcyBzdWNoIHRoYXQgcmVzb3VyY2VzIHNob3VsZCBiZQorICAgICAgICBtYWRl
IGF2YWlsYWJsZSB0byB0aGUgcHJvY2VzcyBhY2NvcmRpbmdseS4KKworICAgICAgICBDdXJyZW50
bHkgd2UgaG9sZCBhIHNpbmdsZSBOU0FjdGl2aXR5LCBhdCB0aGUgV2ViS2l0IGxheWVyLiBUaGlz
IHJlZmFjdG9yaW5nIGFsbG93cyB1cworICAgICAgICB0byBob2xkIGRpZmZlcmVudCBhY3Rpdml0
eSB0b2tlbnMgZm9yIGRpZmZlcmVudCB1c2VyIGFjdGlvbnMgKHdoaWNoIHNpbXBsaWZpZXMgdGhl
CisgICAgICAgIGhhbmRsaW5nLCBhbmQgYWlkZXMgZGVidWdnaW5nIHNpbmNlIHRoZSB0b2tlbiBj
YW4gbW9yZSBhY2N1cmF0ZWx5IGV4cHJlc3MgdGhlIGFjdGl2aXR5CisgICAgICAgIHRha2luZyBw
bGFjZSksIGFuZCBhbHNvIHdpbGwgYWxsb3cgdXMgdG8gYXZvaWQgdGhlIGxheWVyaW5nIGRpZmZp
Y3VsdHkgb2YgY2FsbGluZyBiYWNrCisgICAgICAgIHVwIHRoZSBzdGFjayB0byBXZWJLaXQgdG8g
cmVnaXN0ZXIgdGhhdCBhbiBhY3Rpdml0eSBpcyB0YWtpbmcgcGxhY2UuCisKKyAgICAgICAgKiB3
dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgICAgIC0gYWRkZWQgSEFWRV9OU19BQ1RJVklUWS4KKwog
MjAxMy0xMi0zMCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE2MTE1NywgcjE2MTE1OCwgcjE2MTE2MCwg
cjE2MTE2MSwKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMTYxMjQ2KQorKysgU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMTA3OCw0ICsxMDc4LDggQEAKICNk
ZWZpbmUgX0hBU19FWENFUFRJT05TIDEKICNlbmRpZgogCisjaWYgUExBVEZPUk0oTUFDKSAmJiAh
UExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAK
KyNkZWZpbmUgSEFWRV9OU19BQ1RJVklUWSAxCisjZW5kaWYKKwogI2VuZGlmIC8qIFdURl9QbGF0
Zm9ybV9oICovCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjEyNTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MiBAQAorMjAxNC0wMS0w
MiAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVmYWN0b3IgTlNBY3Rpdml0eSBoYW5kbGluZyBjb2RlIGZyb20gQ2hpbGRQcm9jZXNzIHRvIFVz
ZXJBY3Rpdml0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTI2MzMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXNlckFjdGl2aXR5IGlzIGEgbWVjaGFuaXNtIHRvIGV4cHJlc3MgdG8gdGhlIG9wZXJhdGlu
ZyBzeXN0ZW0gKHdoZXJlIGFwcHJvcHJpYXRlKQorICAgICAgICB0aGF0IGEgdXNlciBpbml0aWF0
ZWQgYWN0aXZpdHkgaXMgdGFraW5nIHBsYWNlLCBhbmQgYXMgc3VjaCB0aGF0IHJlc291cmNlcyBz
aG91bGQgYmUKKyAgICAgICAgbWFkZSBhdmFpbGFibGUgdG8gdGhlIHByb2Nlc3MgYWNjb3JkaW5n
bHkuCisKKyAgICAgICAgQ3VycmVudGx5IHdlIGhvbGQgYSBzaW5nbGUgTlNBY3Rpdml0eSwgYXQg
dGhlIFdlYktpdCBsYXllci4gVGhpcyByZWZhY3RvcmluZyBhbGxvd3MgdXMKKyAgICAgICAgdG8g
aG9sZCBkaWZmZXJlbnQgYWN0aXZpdHkgdG9rZW5zIGZvciBkaWZmZXJlbnQgdXNlciBhY3Rpb25z
ICh3aGljaCBzaW1wbGlmaWVzIHRoZQorICAgICAgICBoYW5kbGluZywgYW5kIGFpZGVzIGRlYnVn
Z2luZyBzaW5jZSB0aGUgdG9rZW4gY2FuIG1vcmUgYWNjdXJhdGVseSBleHByZXNzIHRoZSBhY3Rp
dml0eQorICAgICAgICB0YWtpbmcgcGxhY2UpLCBhbmQgYWxzbyB3aWxsIGFsbG93IHVzIHRvIGF2
b2lkIHRoZSBsYXllcmluZyBkaWZmaWN1bHR5IG9mIGNhbGxpbmcgYmFjaworICAgICAgICB1cCB0
aGUgc3RhY2sgdG8gV2ViS2l0IHRvIHJlZ2lzdGVyIHRoYXQgYW4gYWN0aXZpdHkgaXMgdGFraW5n
IHBsYWNlLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAgICAgLSBhZGRlZCBuZXcgZmlsZXMuCisgICAgICAgICogcGxhdGZvcm0vVXNlckFj
dGl2aXR5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpVc2VyQWN0aXZpdHk6OlVzZXJB
Y3Rpdml0eSk6CisgICAgICAgICAgICAtIG5vcCBpbXBsZW1lbnRhdGlvbiAtIGlnbm9yZSBkZXNj
cmlwdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJBY3Rpdml0eTo6YmVnaW5BY3Rpdml0eSk6
CisgICAgICAgIChXZWJDb3JlOjpVc2VyQWN0aXZpdHk6OmVuZEFjdGl2aXR5KToKKyAgICAgICAg
ICAgIC0gbm9wIGltcGxlbWVudGF0aW9uIC0ganVzdCBpbmMvZGVjIG1fY291bnQuCisgICAgICAg
ICogcGxhdGZvcm0vVXNlckFjdGl2aXR5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VXNl
ckFjdGl2aXR5Ojppc0FjdGl2ZSk6CisgICAgICAgICAgICAtIHJldHVybnMgdHJ1ZSBpZiBvbmUg
b3IgbW9yZSBpbnN0YW5jZSBvZiB0aGlzIGFjdGl2aXR5IGlzIGluIHByb2dyZXNzLgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9Vc2VyQWN0aXZpdHlNYWMubW06IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6VXNlckFjdGl2aXR5OjpVc2VyQWN0aXZpdHkpOgorICAgICAgICAgICAgLSBjb25zdHJ1
Y3RvciBhY2NlcHRzIG9uZSBhcmd1bWVudCwgYSBkZXNjcmlwdGlvbiBzdHJpbmcuCisgICAgICAg
IChXZWJDb3JlOjpVc2VyQWN0aXZpdHk6OmlzVmFsaWQpOgorICAgICAgICAgICAgLSB1c2VkIGJ5
IGFzc2VydGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpVc2VyQWN0aXZpdHk6OmJlZ2luQWN0aXZp
dHkpOgorICAgICAgICAoV2ViQ29yZTo6VXNlckFjdGl2aXR5OjplbmRBY3Rpdml0eSk6CisgICAg
ICAgICAgICAtIHRyYWNrIHN0YXJ0L2VuZCBvZiBhbiBhY3Rpdml0eSAtIGNhbGxzIHRvIHRoZXNl
IG1ldGhvZHMgc2hvdWxkIGJlIGJhbGFuY2VkLgorICAgICAgICAoV2ViQ29yZTo6VXNlckFjdGl2
aXR5OjpoeXN0ZXJlc2lzVGltZXJGaXJlZCk6CisgICAgICAgICAgICAgIC0gdXNlZCB0byBpbXBs
ZW1lbnQgaHlzdGVyZXNpcyBpbiByZWxlYXNpbmcgIE5TQWN0aXZpdHkuCisKIDIwMTQtMDEtMDIg
IEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdMXSBD
b3JyZWN0IHN5bWJvbCBsb29rdXAgbG9naWMgdG8gaGFuZGxlIDEtZWxlbWVudCBhcnJheXMKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNjEyNDYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjQ1LDYgKzI0NSw5IEBAIF9fWk43
V2ViQ29yZTEyVGV4dEl0ZXJhdG9yN2FkdmFuY2VFdgogX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0
b3I4c3VicmFuZ2VFUE5TXzVSYW5nZUVpaQogX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3JDMUVQ
S05TXzVSYW5nZUVOU18yMFRleHRJdGVyYXRvckJlaGF2aW9yRQogX19aTjdXZWJDb3JlMTJUZXh0
SXRlcmF0b3JEMUV2CitfX1pON1dlYkNvcmUxMlVzZXJBY3Rpdml0eTExZW5kQWN0aXZpdHlFdgor
X19aTjdXZWJDb3JlMTJVc2VyQWN0aXZpdHkxM2JlZ2luQWN0aXZpdHlFdgorX19aTjdXZWJDb3Jl
MTJVc2VyQWN0aXZpdHlDMUVQS2MKIF9fWk43V2ViQ29yZTEyVVRGOEVuY29kaW5nRXYKIF9fWk43
V2ViQ29yZTEyV29ya2VyVGhyZWFkMTd3b3JrZXJUaHJlYWRDb3VudEV2CiBfX1pON1dlYkNvcmUx
MmNhY2hlU3RvcmFnZUV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjEyNDYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI4
NjAsNiArMjg2MCw5IEBACiAJCTg2MUMyRUE2MTNGQjRGRkYwMDA2MkFCQiAvKiBSZXNvdXJjZUxv
YWRUaW1pbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODYxQzJFQTUxM0ZCNEZGRjAwMDYyQUJCIC8qIFJlc291cmNlTG9hZFRpbWluZy5jcHAgKi87
IH07CiAJCTg2NTEyRURFMTU0QTJBRUYwMEE5MDQyNiAvKiBQZXJmb3JtYW5jZVJlc291cmNlVGlt
aW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
NTEyRURCMTU0QTJBRUUwMEE5MDQyNiAvKiBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcCAq
LzsgfTsKIAkJODY1MTJFREYxNTRBMkFFRjAwQTkwNDI2IC8qIFBlcmZvcm1hbmNlUmVzb3VyY2VU
aW1pbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
NTEyRURDMTU0QTJBRUYwMEE5MDQyNiAvKiBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmggKi87
IH07CisJCTg2ODE2MEQ0MTg3NjZBMEEwMDIxRTc5RCAvKiBVc2VyQWN0aXZpdHkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4MTYwRDExODc2NjlD
NDAwMjFFNzlEIC8qIFVzZXJBY3Rpdml0eS5jcHAgKi87IH07CisJCTg2ODE2MEQ1MTg3NjZBMEUw
MDIxRTc5RCAvKiBVc2VyQWN0aXZpdHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NjgxNjBEMzE4NzY2OUU3MDAyMUU3OUQgLyogVXNlckFjdGl2
aXR5TWFjLm1tICovOyB9OworCQk4NjgxNjBENjE4NzY2QTEzMDAyMUU3OUQgLyogVXNlckFjdGl2
aXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njgx
NjBEMjE4NzY2OUM0MDAyMUU3OUQgLyogVXNlckFjdGl2aXR5LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZCQTc2NkUxNjY0MjdBODAwNUJFNUQx
IC8qIEZyYW1lTG9hZFJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZCQTc2NkQxNjY0MjdBODAwNUJFNUQxIC8qIEZyYW1lTG9hZFJlcXVl
c3QuY3BwICovOyB9OwogCQk4NkJFMzQwMTE1MDU4Q0IyMDBDRTBGRDggLyogUGVyZm9ybWFuY2VF
bnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZC
RTMzRkIxNTA1OENCMjAwQ0UwRkQ4IC8qIFBlcmZvcm1hbmNlRW50cnkuaCAqLzsgfTsKIAkJODZC
RTM0MDMxNTA1OENCMjAwQ0UwRkQ4IC8qIFBlcmZvcm1hbmNlRW50cnlMaXN0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkUzM0ZEMTUwNThDQjIw
MENFMEZEOCAvKiBQZXJmb3JtYW5jZUVudHJ5TGlzdC5jcHAgKi87IH07CkBAIC05NjQ4LDYgKzk2
NTEsOSBAQAogCQk4NjUxMkVEQjE1NEEyQUVFMDBBOTA0MjYgLyogUGVyZm9ybWFuY2VSZXNvdXJj
ZVRpbWluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQZXJmb3Jt
YW5jZVJlc291cmNlVGltaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY1
MTJFREMxNTRBMkFFRjAwQTkwNDI2IC8qIFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjUxMkVERDE1NEEyQUVGMDBBOTA0MjYg
LyogUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
UGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTg2ODE2MEQxMTg3NjY5QzQwMDIxRTc5RCAvKiBVc2VyQWN0aXZpdHkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVXNlckFjdGl2aXR5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODY4MTYwRDIxODc2NjlDNDAwMjFFNzlEIC8qIFVzZXJBY3Rpdml0eS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBVc2VyQWN0aXZpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY4MTYw
RDMxODc2NjlFNzAwMjFFNzlEIC8qIFVzZXJBY3Rpdml0eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFVzZXJBY3Rpdml0eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODZCQTc2NkQxNjY0MjdBODAwNUJFNUQxIC8qIEZyYW1lTG9hZFJlcXVlc3QuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnJhbWVMb2FkUmVxdWVzdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QkUzM0ZCMTUwNThDQjIwMENFMEZEOCAvKiBQZXJm
b3JtYW5jZUVudHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlcmZvcm1h
bmNlRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZCRTMzRkMxNTA1OENC
MjAwQ0UwRkQ4IC8qIFBlcmZvcm1hbmNlRW50cnkuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFBlcmZvcm1hbmNlRW50cnkuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU3
MjEsNiArMTU3MjcsNyBAQAogCQkJCUJDRTY1OUU1MEVBOTJGQjIwMDdFNDUzMyAvKiBUaGVtZU1h
Yy5oICovLAogCQkJCUJDRTY1OUU4MEVBOTJGRkEwMDdFNDUzMyAvKiBUaGVtZU1hYy5tbSAqLywK
IAkJCQk1MURGNkQ3RjBCOTJBMThFMDBDMkRDODUgLyogVGhyZWFkQ2hlY2subW0gKi8sCisJCQkJ
ODY4MTYwRDMxODc2NjlFNzAwMjFFNzlEIC8qIFVzZXJBY3Rpdml0eU1hYy5tbSAqLywKIAkJCQlD
REM2OUREODE2MzcxRkQzMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZp
ZXcuaCAqLywKIAkJCQlDREM2OUREOTE2MzcxRkQzMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3Jl
ZW5QbGFjZWhvbGRlclZpZXcubW0gKi8sCiAJCQkJQ0RDNjlERDQxNjMyMDI2QzAwN0MzOERGIC8q
IFdlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuaCAqLywKQEAgLTIwNDM3LDYgKzIwNDQ0LDgg
QEAKIAkJCQk2NTkzOTIzNTA5QUU0MzQ2MDAyQzUzMUYgLyogVVJMLmNwcCAqLywKIAkJCQk2NTkz
OTIzNjA5QUU0MzQ2MDAyQzUzMUYgLyogVVJMLmggKi8sCiAJCQkJQkNCRDIxQUEwRTQxN0FENDAw
QTA3MEYyIC8qIFVSTEhhc2guaCAqLywKKwkJCQk4NjgxNjBEMTE4NzY2OUM0MDAyMUU3OUQgLyog
VXNlckFjdGl2aXR5LmNwcCAqLywKKwkJCQk4NjgxNjBEMjE4NzY2OUM0MDAyMUU3OUQgLyogVXNl
ckFjdGl2aXR5LmggKi8sCiAJCQkJMkUzQkJGMDUxMTYyREExMTAwQjk0MDlBIC8qIFVVSUQuY3Bw
ICovLAogCQkJCTJFM0JCRjA2MTE2MkRBMTEwMEI5NDA5QSAvKiBVVUlELmggKi8sCiAJCQkJOUEx
MTQyMDMxODMyRDEzNDAwMEJCOEFEIC8qIFZhbHVlVG9TdHJpbmcuaCAqLywKQEAgLTIyNTkzLDYg
KzIyNjAyLDcgQEAKIAkJCQlFNDlCRDlGQTEzMUZEMkVEMDAzQzU2RjAgLyogQ1NTVmFsdWVQb29s
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTkyRjA4MjQ1RTU5MDAxRTlBQkMgLyogQ3Vyc29y
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzIyNzJBMjBFODJFODdDMDBFN0Y5NzUgLyogQ3Vyc29y
RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODY4MTYwRDYxODc2NkExMzAwMjFFNzlEIC8qIFVz
ZXJBY3Rpdml0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyMjcyQUQwRTgyRThGMzAwRTdGOTc1
IC8qIEN1cnNvckxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTYyQ0QzMjVBMTE1N0U1N0MwMDYz
QjBBNyAvKiBDdXN0b21FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTVCM0ZDMTkxNUZCMjE3
ODAwQTgxQkNCIC8qIEN1c3RvbUZpbHRlckFycmF5UGFyYW1ldGVyLmggaW4gSGVhZGVycyAqLywK
QEAgLTI2MzMzLDYgKzI2MzQzLDcgQEAKIAkJCQk4NTlBOUM1MDBBQTVFM0JEMDBCNjk0QjIgLyog
RE9NSFRNTFN0eWxlRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1REY4MjFFMEFBNzg0
OUUwMDQ4NkFENyAvKiBET01IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTg1REY4MjIwMEFBNzg0OUUwMDQ4NkFENyAvKiBET01IVE1MVGFibGVDZWxsRWxlbWVu
dC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg2ODE2MEQ0MTg3NjZBMEEwMDIxRTc5RCAvKiBVc2Vy
QWN0aXZpdHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODVERjgyMjIwQUE3ODQ5RTAwNDg2QUQ3
IC8qIERPTUhUTUxUYWJsZUNvbEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NURGODI3
MTBBQTc4QjhCMDA0ODZBRDcgLyogRE9NSFRNTFRhYmxlRWxlbWVudC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTg1REY4MjI0MEFBNzg0OUUwMDQ4NkFENyAvKiBET01IVE1MVGFibGVSb3dFbGVtZW50
Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yNjQwMSw2ICsyNjQxMiw3IEBACiAJCQkJNDk4MzkxNTEw
RjFFNzZCNDAwQzIzNzgyIC8qIERPTVdlYktpdENTU01hdHJpeC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCThBRDBBNTk3MTRDODgzNTgwMDBEODNDNSAvKiBET01XZWJLaXRDU1NSZWdpb25SdWxlLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2MTFFNjIwRTFDNEUxNDAwRjZBNTc5IC8qIERPTVdlYktp
dENTU1RyYW5zZm9ybVZhbHVlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODY4MTYwRDUxODc2NkEw
RTAwMjFFNzlEIC8qIFVzZXJBY3Rpdml0eU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTNGMkIz
M0VDMTY1QUYxNTYwMEUzOTg3QyAvKiBET01XZWJLaXRDU1NWaWV3cG9ydFJ1bGUubW0gaW4gU291
cmNlcyAqLywKIAkJCQk4QTE5NTkzMzE0N0VBMTZFMDBEMUVBNjEgLyogRE9NV2ViS2l0TmFtZWRG
bG93Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFDMEZGNEQwRTRDRUZERDAwN0Q2RkU1IC8qIERP
TVdlYktpdFRyYW5zaXRpb25FdmVudC5tbSBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVXNlckFjdGl2aXR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Vc2VyQWN0aXZpdHkuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVXNlckFjdGl2aXR5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVzZXJB
Y3Rpdml0eS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiAhSEFWRShOU19BQ1RJVklU
WSkKKworVXNlckFjdGl2aXR5OjpVc2VyQWN0aXZpdHkoY29uc3QgY2hhciopCisgICAgOiBtX2Nv
dW50KDApCit7Cit9CisKK3ZvaWQgVXNlckFjdGl2aXR5OjpiZWdpbkFjdGl2aXR5KCkKK3sKKyAg
ICArK21fY291bnQ7Cit9CisKK3ZvaWQgVXNlckFjdGl2aXR5OjplbmRBY3Rpdml0eSgpCit7Cisg
ICAgQVNTRVJUKG1fY291bnQpOworICAgIC0tbV9jb3VudDsKK30KKworI2VuZGlmCisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBY3Rp
dml0eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBY3Rpdml0
eS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFjdGl2aXR5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
VXNlckFjdGl2aXR5X2gKKyNkZWZpbmUgVXNlckFjdGl2aXR5X2gKKworI2lmIEhBVkUoTlNfQUNU
SVZJVFkpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SdW5sb29w
Lmg+CitPQkpDX0NMQVNTIE5TU3RyaW5nOworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworLy8gVGhlIFVzZXJBY3Rpdml0eSB0eXBlIGlzIHVzZWQgdG8gaW5kaWNhdGUgdG8gdGhlIG9w
ZXJhdGluZyBzeXN0ZW0gdGhhdAorLy8gYSB1c2VyIGluaXRpYXRlZCBvciB2aXNpYmxlIGFjdGlv
biBpcyB0YWtpbmcgcGxhY2UsIGFuZCBhcyBzdWNoIHRoYXQKKy8vIHJlc291cmNlcyBzaG91bGQg
YmUgYWxsb2NhdGVkIHRvIHRoZSBwcm9jZXNzIGFjY29yZGluZ2x5LgorY2xhc3MgVXNlckFjdGl2
aXR5IHsKK3B1YmxpYzoKKyAgICBVc2VyQWN0aXZpdHkoY29uc3QgY2hhciogZGVzY3JpcHRpb24p
OworCisgICAgdm9pZCBiZWdpbkFjdGl2aXR5KCk7CisgICAgdm9pZCBlbmRBY3Rpdml0eSgpOwor
CisgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnQ7IH0KKworcHJpdmF0
ZToKKyAgICBzaXplX3QgbV9jb3VudDsKKworI2lmIEhBVkUoTlNfQUNUSVZJVFkpCisgICAgdm9p
ZCBoeXN0ZXJlc2lzVGltZXJGaXJlZCgpOworICAgIGJvb2wgaXNWYWxpZCgpOworCisgICAgUmV0
YWluUHRyPE5TU3RyaW5nPiBtX2Rlc2NyaXB0aW9uOworICAgIFJ1bkxvb3A6OlRpbWVyPFVzZXJB
Y3Rpdml0eT4gbV90aW1lcjsKKyAgICBSZXRhaW5QdHI8aWQ+IG1fYWN0aXZpdHk7CisjZW5kaWYK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwordXNpbmcgV2ViQ29yZTo6VXNlckFjdGl2
aXR5OworCisjZW5kaWYgLy8gVXNlckFjdGl2aXR5X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9Vc2VyQWN0aXZpdHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1VzZXJBY3Rpdml0eU1hYy5tbQkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Vc2VyQWN0aXZpdHlNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiVXNlckFjdGl2aXR5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIEhBVkUoTlNf
QUNUSVZJVFkpCisKK3N0YXRpYyBjb25zdCBkb3VibGUga0h5c3RlcmVzaXNTZWNvbmRzID0gNS4w
OworCitVc2VyQWN0aXZpdHk6OlVzZXJBY3Rpdml0eShjb25zdCBjaGFyKiBkZXNjcmlwdGlvbikK
KyAgICA6IG1fY291bnQoMCkKKyAgICAsIG1fZGVzY3JpcHRpb24oW05TU3RyaW5nIHN0cmluZ1dp
dGhVVEY4U3RyaW5nOmRlc2NyaXB0aW9uXSkKKyAgICAsIG1fdGltZXIoUnVuTG9vcDo6bWFpbigp
LCB0aGlzLCAmVXNlckFjdGl2aXR5OjpoeXN0ZXJlc2lzVGltZXJGaXJlZCkKK3sKKyAgICBBU1NF
UlQoaXNWYWxpZCgpKTsKK30KKworYm9vbCBVc2VyQWN0aXZpdHk6OmlzVmFsaWQoKQoreworICAg
IC8vIElmIGNvdW50IGlzIG5vbi16ZXJvIHRoZW4gd2Ugc2hvdWxkIGJlIGhvbGRpbmcgYW4gYWN0
aXZpdHksIGFuZCB0aGUgaHlzdGVyZXNpcyB0aW1lciBzaG91bGQgbm90IGJlIHJ1bm5pbmcuCisg
ICAgLy8gRWxzZSBpZiBjb3VudCBpcyB6ZXJvIHRoZW46CisgICAgLy8gIChhKSBpZiB3ZSdyZSBo
b2xkaW5nIGFuIGFjdGl2aXR5IHRoZXJlIHNob3VsZCBiZSBhbiBhY3RpdmUgdGltZXIgdG8gY2xl
YXIgdGhpcywKKyAgICAvLyAgKGIpIGlmIHdlJ3JlIG5vdCBob2xkaW5nIGFuIGFjdGl2aXR5IHRo
ZXJlIHNob3VsZCBiZSBubyBhY3RpdmUgdGltZXIuCisgICAgcmV0dXJuIG1fY291bnQgPyBtX2Fj
dGl2aXR5ICYmICFtX3RpbWVyLmlzQWN0aXZlKCkgOiAhIW1fYWN0aXZpdHkgPT0gbV90aW1lci5p
c0FjdGl2ZSgpOworfQorCit2b2lkIFVzZXJBY3Rpdml0eTo6YmVnaW5BY3Rpdml0eSgpCit7Cisg
ICAgQVNTRVJUKGlzVmFsaWQoKSk7CisKKyAgICArK21fY291bnQ7CisgICAgaWYgKG1fdGltZXIu
aXNBY3RpdmUoKSkKKyAgICAgICAgbV90aW1lci5zdG9wKCk7CisgICAgaWYgKCFtX2FjdGl2aXR5
KSB7CisgICAgICAgIE5TQWN0aXZpdHlPcHRpb25zIG9wdGlvbnMgPSAoTlNBY3Rpdml0eVVzZXJJ
bml0aWF0ZWRBbGxvd2luZ0lkbGVTeXN0ZW1TbGVlcCB8IE5TQWN0aXZpdHlMYXRlbmN5Q3JpdGlj
YWwpICYgfihOU0FjdGl2aXR5U3VkZGVuVGVybWluYXRpb25EaXNhYmxlZCB8IE5TQWN0aXZpdHlB
dXRvbWF0aWNUZXJtaW5hdGlvbkRpc2FibGVkKTsKKyAgICAgICAgbV9hY3Rpdml0eSA9IFtbTlNQ
cm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gYmVnaW5BY3Rpdml0eVdpdGhPcHRpb25zOm9wdGlvbnMg
cmVhc29uOm1fZGVzY3JpcHRpb24uZ2V0KCldOworICAgIH0KKworICAgIEFTU0VSVChpc1ZhbGlk
KCkpOworfQorCit2b2lkIFVzZXJBY3Rpdml0eTo6ZW5kQWN0aXZpdHkoKQoreworICAgIEFTU0VS
VChtX2NvdW50KTsKKyAgICBBU1NFUlQoaXNWYWxpZCgpKTsKKworICAgIGlmICghLS1tX2NvdW50
KQorICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChrSHlzdGVyZXNpc1NlY29uZHMpOworCisg
ICAgQVNTRVJUKGlzVmFsaWQoKSk7Cit9CisKK3ZvaWQgVXNlckFjdGl2aXR5OjpoeXN0ZXJlc2lz
VGltZXJGaXJlZCgpCit7CisgICAgQVNTRVJUKGlzVmFsaWQoKSk7CisKKyAgICBbW05TUHJvY2Vz
c0luZm8gcHJvY2Vzc0luZm9dIGVuZEFjdGl2aXR5Om1fYWN0aXZpdHkuZ2V0KCldOworICAgIG1f
YWN0aXZpdHkuY2xlYXIoKTsKKyAgICBtX3RpbWVyLnN0b3AoKTsKKworICAgIEFTU0VSVChpc1Zh
bGlkKCkpOworfQorCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTYxMjQ2KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTQtMDEtMDIgIEdhdmluIEJhcnJhY2xvdWdo
ICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIE5TQWN0aXZpdHkg
aGFuZGxpbmcgY29kZSBmcm9tIENoaWxkUHJvY2VzcyB0byBVc2VyQWN0aXZpdHkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjMzMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZXJBY3Rpdml0eSBpcyBh
IG1lY2hhbmlzbSB0byBleHByZXNzIHRvIHRoZSBvcGVyYXRpbmcgc3lzdGVtICh3aGVyZSBhcHBy
b3ByaWF0ZSkKKyAgICAgICAgdGhhdCBhIHVzZXIgaW5pdGlhdGVkIGFjdGl2aXR5IGlzIHRha2lu
ZyBwbGFjZSwgYW5kIGFzIHN1Y2ggdGhhdCByZXNvdXJjZXMgc2hvdWxkIGJlCisgICAgICAgIG1h
ZGUgYXZhaWxhYmxlIHRvIHRoZSBwcm9jZXNzIGFjY29yZGluZ2x5LgorCisgICAgICAgIEN1cnJl
bnRseSB3ZSBob2xkIGEgc2luZ2xlIE5TQWN0aXZpdHksIGF0IHRoZSBXZWJLaXQgbGF5ZXIuIFRo
aXMgcmVmYWN0b3JpbmcgYWxsb3dzIHVzCisgICAgICAgIHRvIGhvbGQgZGlmZmVyZW50IGFjdGl2
aXR5IHRva2VucyBmb3IgZGlmZmVyZW50IHVzZXIgYWN0aW9ucyAod2hpY2ggc2ltcGxpZmllcyB0
aGUKKyAgICAgICAgaGFuZGxpbmcsIGFuZCBhaWRlcyBkZWJ1Z2dpbmcgc2luY2UgdGhlIHRva2Vu
IGNhbiBtb3JlIGFjY3VyYXRlbHkgZXhwcmVzcyB0aGUgYWN0aXZpdHkKKyAgICAgICAgdGFraW5n
IHBsYWNlKSwgYW5kIGFsc28gd2lsbCBhbGxvdyB1cyB0byBhdm9pZCB0aGUgbGF5ZXJpbmcgZGlm
ZmljdWx0eSBvZiBjYWxsaW5nIGJhY2sKKyAgICAgICAgdXAgdGhlIHN0YWNrIHRvIFdlYktpdCB0
byByZWdpc3RlciB0aGF0IGFuIGFjdGl2aXR5IGlzIHRha2luZyBwbGFjZS4KKworICAgICAgICAq
IFNoYXJlZC9DaGlsZFByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3M6
OkNoaWxkUHJvY2Vzcyk6CisgICAgICAgICAgICAtIHJlbW92ZWQgZmllbGRzIHRvIGRpcmVjdGx5
IG1hbmFnZSBOU0FjdGl2aXR5LCB1c2UgVXNlckFjdGl2aXR5IG9iamVjdHMgaW5zdGVhZC4KKyAg
ICAgICAgKiBTaGFyZWQvQ2hpbGRQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJv
Y2Vzczo6cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCk6CisgICAgICAgICAgICAtIGNoYW5nZWQg
dG8gaW5pdGlhbGl6ZSBuZXcgZmllbGRzLgorICAgICAgICAqIFNoYXJlZC9tYWMvQ2hpbGRQcm9j
ZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3M6OnNldFByb2Nlc3NTdXBw
cmVzc2lvbkVuYWJsZWQpOgorICAgICAgICAgICAgLSBpbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiBV
c2VyQWN0aXZpdHkgbV9wcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZC4KKyAgICAgICAgKFdlYktp
dDo6Q2hpbGRQcm9jZXNzOjppbmNyZW1lbnRBY3RpdmVUYXNrQ291bnQpOgorICAgICAgICAgICAg
LSBpbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiBVc2VyQWN0aXZpdHkgbV9hY3RpdmVUYXNrcy4KKyAg
ICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjpkZWNyZW1lbnRBY3RpdmVUYXNrQ291bnQpOgor
ICAgICAgICAgICAgLSBpbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiBVc2VyQWN0aXZpdHkgbV9hY3Rp
dmVUYXNrcy4KKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxp
emUpOgorICAgICAgICAgICAgLSBpbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiBVc2VyQWN0aXZpdHkg
bV9wcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZC4KKwogMjAxNC0wMS0wMiAgR2F2aW4gQmFycmFj
bG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUHJvcGFnYXRlIFdpbmRv
d1NlcnZlciBtb2RpZmljYXRpb25zIHN0YXRlIHRvIFdlYlByb2Nlc3MKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCShyZXZpc2lvbiAxNjEyNDYpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsOSAr
MzYsOCBAQCBDaGlsZFByb2Nlc3M6OkNoaWxkUHJvY2VzcygpCiAgICAgLCBtX3Rlcm1pbmF0aW9u
Q291bnRlcigwKQogICAgICwgbV90ZXJtaW5hdGlvblRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhp
cywgJkNoaWxkUHJvY2Vzczo6dGVybWluYXRpb25UaW1lckZpcmVkKQogI2lmIFBMQVRGT1JNKE1B
QykKLSAgICAsIG1fYWN0aXZlVGFza0NvdW50KDApCi0gICAgLCBtX3Nob3VsZFN1c3BlbmQoZmFs
c2UpCi0gICAgLCBtX3N1c3BlbnNpb25IeXN0ZXJlc2lzVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0
aGlzLCAmQ2hpbGRQcm9jZXNzOjpzdXNwZW5zaW9uSHlzdGVyZXNpc1RpbWVyRmlyZWQpCisgICAg
LCBtX3Byb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkKCJQcm9jZXNzIFN1cHByZXNzaW9uIERpc2Fi
bGVkIGJ5IFVJUHJvY2VzcyIpCisgICAgLCBtX2FjdGl2ZVRhc2tzKCJQcm9jZXNzIFN1cHByZXNz
aW9uIERpc2FibGVkIGJ5IFdlYlByb2Nlc3MiKQogI2VuZGlmCiB7CiB9CkBAIC04MCw2ICs3OSwy
NyBAQCB2b2lkIENoaWxkUHJvY2Vzczo6aW5pdGlhbGl6ZShjb25zdCBDaGlsCiAgICAgbV9jb25u
ZWN0aW9uLT5vcGVuKCk7CiB9CiAKK3ZvaWQgQ2hpbGRQcm9jZXNzOjpzZXRQcm9jZXNzU3VwcHJl
c3Npb25FbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBpZiAocHJvY2Vzc1N1cHByZXNzaW9u
RW5hYmxlZCgpID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChlbmFibGVk
KQorICAgICAgICBtX3Byb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkLmVuZEFjdGl2aXR5KCk7Cisg
ICAgZWxzZQorICAgICAgICBtX3Byb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkLmJlZ2luQWN0aXZp
dHkoKTsKK30KKwordm9pZCBDaGlsZFByb2Nlc3M6OmluY3JlbWVudEFjdGl2ZVRhc2tDb3VudCgp
Cit7CisgICAgbV9hY3RpdmVUYXNrcy5iZWdpbkFjdGl2aXR5KCk7Cit9CisKK3ZvaWQgQ2hpbGRQ
cm9jZXNzOjpkZWNyZW1lbnRBY3RpdmVUYXNrQ291bnQoKQoreworICAgIG1fYWN0aXZlVGFza3Mu
ZW5kQWN0aXZpdHkoKTsKK30KKwogdm9pZCBDaGlsZFByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNz
KGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpCiB7CiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5oCShyZXZpc2lvbiAxNjEyNDYpCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyTWFwLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvVXNlckFjdGl2aXR5Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTYxLDE2ICs2Miwx
MyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXImKTsKICAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
KTsKIAotI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIHNldFByb2Nlc3NTdXBwcmVzc2lvbkVu
YWJsZWQoYm9vbCk7Ci0gICAgYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gIW1fcHJvY2Vzc1N1cHByZXNzaW9uQXNzZXJ0aW9uOyB9CisgICAgYm9vbCBwcm9j
ZXNzU3VwcHJlc3Npb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gIW1fcHJvY2Vzc1N1cHByZXNz
aW9uRGlzYWJsZWQuaXNBY3RpdmUoKTsgfQogICAgIHZvaWQgaW5jcmVtZW50QWN0aXZlVGFza0Nv
dW50KCk7CiAgICAgdm9pZCBkZWNyZW1lbnRBY3RpdmVUYXNrQ291bnQoKTsKIAorI2lmIFBMQVRG
T1JNKE1BQykKICAgICB2b2lkIHNldEFwcGxpY2F0aW9uSXNEYWVtb24oKTsKLSNlbHNlCi0gICAg
dm9pZCBpbmNyZW1lbnRBY3RpdmVUYXNrQ291bnQoKSB7IH0KLSAgICB2b2lkIGRlY3JlbWVudEFj
dGl2ZVRhc2tDb3VudCgpIHsgfQogI2VuZGlmCiAKICAgICBJUEM6OkNvbm5lY3Rpb24qIHBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOyB9
CkBAIC0xMTksMTQgKzExNyw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlv
bj4gbV9jb25uZWN0aW9uOwogICAgIElQQzo6TWVzc2FnZVJlY2VpdmVyTWFwIG1fbWVzc2FnZVJl
Y2VpdmVyTWFwOwogCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIHZvaWQgc3VzcGVuc2lvbkh5c3Rl
cmVzaXNUaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVk
SW50ZXJuYWwoYm9vbCk7Ci0gICAgc2l6ZV90IG1fYWN0aXZlVGFza0NvdW50OwotICAgIGJvb2wg
bV9zaG91bGRTdXNwZW5kOwotICAgIFJ1bkxvb3A6OlRpbWVyPENoaWxkUHJvY2Vzcz4gbV9zdXNw
ZW5zaW9uSHlzdGVyZXNpc1RpbWVyOwotICAgIFJldGFpblB0cjxpZD4gbV9wcm9jZXNzU3VwcHJl
c3Npb25Bc3NlcnRpb247Ci0jZW5kaWYKKyAgICBVc2VyQWN0aXZpdHkgbV9wcm9jZXNzU3VwcHJl
c3Npb25EaXNhYmxlZDsKKyAgICBVc2VyQWN0aXZpdHkgbV9hY3RpdmVUYXNrczsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9DaGls
ZFByb2Nlc3NNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9D
aGlsZFByb2Nlc3NNYWMubW0JKHJldmlzaW9uIDE2MTI0NikKKysrIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2OCArNjAs
NiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0
YXRpYyBjb25zdCBkb3VibGUga1N1c3BlbnNpb25IeXN0ZXJlc2lzU2Vjb25kcyA9IDUuMDsKLQot
dm9pZCBDaGlsZFByb2Nlc3M6OnNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRJbnRlcm5hbChi
b29sIHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpCi17Ci0jaWYgIVBMQVRGT1JNKElPUykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCi0gICAgaWYgKHRoaXMtPnBy
b2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoKSA9PSBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAocHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCkgewot
ICAgICAgICBBU1NFUlQoIW1fYWN0aXZlVGFza0NvdW50KTsKLSAgICAgICAgW1tOU1Byb2Nlc3NJ
bmZvIHByb2Nlc3NJbmZvXSBlbmRBY3Rpdml0eTptX3Byb2Nlc3NTdXBwcmVzc2lvbkFzc2VydGlv
bi5nZXQoKV07Ci0gICAgICAgIG1fcHJvY2Vzc1N1cHByZXNzaW9uQXNzZXJ0aW9uLmNsZWFyKCk7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgTlNBY3Rpdml0eU9wdGlvbnMgb3B0aW9ucyA9IChOU0Fj
dGl2aXR5VXNlckluaXRpYXRlZEFsbG93aW5nSWRsZVN5c3RlbVNsZWVwIHwgTlNBY3Rpdml0eUxh
dGVuY3lDcml0aWNhbCkgJiB+KE5TQWN0aXZpdHlTdWRkZW5UZXJtaW5hdGlvbkRpc2FibGVkIHwg
TlNBY3Rpdml0eUF1dG9tYXRpY1Rlcm1pbmF0aW9uRGlzYWJsZWQpOwotICAgICAgICBtX3Byb2Nl
c3NTdXBwcmVzc2lvbkFzc2VydGlvbiA9IFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gYmVn
aW5BY3Rpdml0eVdpdGhPcHRpb25zOm9wdGlvbnMgcmVhc29uOkAiUHJvY2VzcyBTdXBwcmVzc2lv
biBEaXNhYmxlZCJdOwotICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHByb2Nlc3NTdXBw
cmVzc2lvbkVuYWJsZWQpOwotI2VuZGlmCi19Ci0KLXZvaWQgQ2hpbGRQcm9jZXNzOjpzZXRQcm9j
ZXNzU3VwcHJlc3Npb25FbmFibGVkKGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCkKLXsK
LSAgICBpZiAodGhpcy0+cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgpID09IHByb2Nlc3NTdXBw
cmVzc2lvbkVuYWJsZWQpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAobV9zaG91bGRTdXNwZW5k
ID09IHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpCi0gICAgICAgIHJldHVybjsKLSAgICBtX3No
b3VsZFN1c3BlbmQgPSBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkOwotICAgIGlmIChtX3Nob3Vs
ZFN1c3BlbmQpIHsKLSAgICAgICAgaWYgKCFtX2FjdGl2ZVRhc2tDb3VudCkKLSAgICAgICAgICAg
IG1fc3VzcGVuc2lvbkh5c3RlcmVzaXNUaW1lci5zdGFydE9uZVNob3Qoa1N1c3BlbnNpb25IeXN0
ZXJlc2lzU2Vjb25kcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc2V0UHJvY2Vzc1N1
cHByZXNzaW9uRW5hYmxlZEludGVybmFsKGZhbHNlKTsKLX0KLQotdm9pZCBDaGlsZFByb2Nlc3M6
OmluY3JlbWVudEFjdGl2ZVRhc2tDb3VudCgpCi17Ci0gICAgbV9hY3RpdmVUYXNrQ291bnQrKzsK
LSAgICBpZiAobV9zdXNwZW5zaW9uSHlzdGVyZXNpc1RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAg
IG1fc3VzcGVuc2lvbkh5c3RlcmVzaXNUaW1lci5zdG9wKCk7Ci0gICAgaWYgKG1fYWN0aXZlVGFz
a0NvdW50KQotICAgICAgICBzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkSW50ZXJuYWwoZmFs
c2UpOwotfQotCi12b2lkIENoaWxkUHJvY2Vzczo6ZGVjcmVtZW50QWN0aXZlVGFza0NvdW50KCkK
LXsKLSAgICBBU1NFUlQobV9hY3RpdmVUYXNrQ291bnQpOwotICAgIG1fYWN0aXZlVGFza0NvdW50
LS07Ci0gICAgaWYgKG1fYWN0aXZlVGFza0NvdW50KQotICAgICAgICByZXR1cm47Ci0gICAgaWYg
KG1fc2hvdWxkU3VzcGVuZCkKLSAgICAgICAgbV9zdXNwZW5zaW9uSHlzdGVyZXNpc1RpbWVyLnN0
YXJ0T25lU2hvdChrU3VzcGVuc2lvbkh5c3RlcmVzaXNTZWNvbmRzKTsKLX0KLQotdm9pZCBDaGls
ZFByb2Nlc3M6OnN1c3BlbnNpb25IeXN0ZXJlc2lzVGltZXJGaXJlZCgpCi17Ci0gICAgQVNTRVJU
KCFtX2FjdGl2ZVRhc2tDb3VudCk7Ci0gICAgQVNTRVJUKG1fc2hvdWxkU3VzcGVuZCk7Ci0gICAg
c2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEludGVybmFsKHRydWUpOwotfQotCiAjaWYgIVBM
QVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCiBz
dGF0aWMgdm9pZCBpbml0aWFsaXplVGltZXJDb2FsZXNjaW5nUG9saWN5KCkKIHsKQEAgLTE1MCwx
MSArODgsOCBAQCB2b2lkIENoaWxkUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICNpZiAh
UExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAK
ICAgICBpbml0aWFsaXplVGltZXJDb2FsZXNjaW5nUG9saWN5KCk7CiAjZW5kaWYKLSAgICAvLyBT
dGFydGluZyB3aXRoIHByb2Nlc3Mgc3VwcHJlc3Npb24gZGlzYWJsZWQuICBUaGUgcHJveHkgZm9y
IHRoaXMgcHJvY2VzcyB3aWxsCi0gICAgLy8gZW5hYmxlIGlmIGFwcHJvcHJpYXRlIGZyb20gZGlk
RmluaXNoTGF1bmNoaW5nKCkuCi0gICAgLy8gV2UgdXNlIHNldFByb2Nlc3NTdXBwcmVzc2lvbkVu
YWJsZWRJbnRlcm5hbCB0byBhdm9pZCBhbnkgc2hvcnQgY2lyY3VpdCBsb2dpYwotICAgIC8vIHRo
YXQgd291bGQgcHJldmVudCB1cyBmcm9tIHRha2luZyB0aGUgc3VwcHJlc3Npb24gYXNzZXJ0aW9u
LgotICAgIHNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRJbnRlcm5hbChmYWxzZSk7CisgICAg
Ly8gU3RhcnQgd2l0aCBwcm9jZXNzIHN1cHByZXNzaW9uIGRpc2FibGVkLgorICAgIG1fcHJvY2Vz
c1N1cHByZXNzaW9uRGlzYWJsZWQuYmVnaW5BY3Rpdml0eSgpOwogCiAgICAgW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSBjaGFuZ2VDdXJyZW50RGlyZWN0b3J5UGF0aDpbW05TQnVuZGxl
IG1haW5CdW5kbGVdIGJ1bmRsZVBhdGhdXTsKIH0K
</data>
<flag name="commit-queue"
          id="243976"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220285</attachid>
            <date>2014-01-03 00:12:47 -0800</date>
            <delta_ts>2014-01-03 08:29:18 -0800</delta_ts>
            <desc>gtk fix</desc>
            <filename>126330.5.patch</filename>
            <type>text/plain</type>
            <size>27196</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNjEyNTApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE0LTAxLTAyICBHYXZpbiBCYXJyYWNsb3VnaCAg
PGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBOU0FjdGl2aXR5IGhh
bmRsaW5nIGNvZGUgZnJvbSBDaGlsZFByb2Nlc3MgdG8gVXNlckFjdGl2aXR5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYzMzAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2VyQWN0aXZpdHkgaXMgYSBt
ZWNoYW5pc20gdG8gZXhwcmVzcyB0byB0aGUgb3BlcmF0aW5nIHN5c3RlbSAod2hlcmUgYXBwcm9w
cmlhdGUpCisgICAgICAgIHRoYXQgYSB1c2VyIGluaXRpYXRlZCBhY3Rpdml0eSBpcyB0YWtpbmcg
cGxhY2UsIGFuZCBhcyBzdWNoIHRoYXQgcmVzb3VyY2VzIHNob3VsZCBiZQorICAgICAgICBtYWRl
IGF2YWlsYWJsZSB0byB0aGUgcHJvY2VzcyBhY2NvcmRpbmdseS4KKworICAgICAgICBDdXJyZW50
bHkgd2UgaG9sZCBhIHNpbmdsZSBOU0FjdGl2aXR5LCBhdCB0aGUgV2ViS2l0IGxheWVyLiBUaGlz
IHJlZmFjdG9yaW5nIGFsbG93cyB1cworICAgICAgICB0byBob2xkIGRpZmZlcmVudCBhY3Rpdml0
eSB0b2tlbnMgZm9yIGRpZmZlcmVudCB1c2VyIGFjdGlvbnMgKHdoaWNoIHNpbXBsaWZpZXMgdGhl
CisgICAgICAgIGhhbmRsaW5nLCBhbmQgYWlkZXMgZGVidWdnaW5nIHNpbmNlIHRoZSB0b2tlbiBj
YW4gbW9yZSBhY2N1cmF0ZWx5IGV4cHJlc3MgdGhlIGFjdGl2aXR5CisgICAgICAgIHRha2luZyBw
bGFjZSksIGFuZCBhbHNvIHdpbGwgYWxsb3cgdXMgdG8gYXZvaWQgdGhlIGxheWVyaW5nIGRpZmZp
Y3VsdHkgb2YgY2FsbGluZyBiYWNrCisgICAgICAgIHVwIHRoZSBzdGFjayB0byBXZWJLaXQgdG8g
cmVnaXN0ZXIgdGhhdCBhbiBhY3Rpdml0eSBpcyB0YWtpbmcgcGxhY2UuCisKKyAgICAgICAgKiB3
dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgICAgIC0gYWRkZWQgSEFWRV9OU19BQ1RJVklUWS4KKwog
MjAxMy0xMi0zMCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE2MTE1NywgcjE2MTE1OCwgcjE2MTE2MCwg
cjE2MTE2MSwKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMTYxMjQ2KQorKysgU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMTA3OCw0ICsxMDc4LDggQEAKICNk
ZWZpbmUgX0hBU19FWENFUFRJT05TIDEKICNlbmRpZgogCisjaWYgUExBVEZPUk0oTUFDKSAmJiAh
UExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAK
KyNkZWZpbmUgSEFWRV9OU19BQ1RJVklUWSAxCisjZW5kaWYKKwogI2VuZGlmIC8qIFdURl9QbGF0
Zm9ybV9oICovCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjEyNTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MiBAQAorMjAxNC0wMS0w
MiAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVmYWN0b3IgTlNBY3Rpdml0eSBoYW5kbGluZyBjb2RlIGZyb20gQ2hpbGRQcm9jZXNzIHRvIFVz
ZXJBY3Rpdml0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTI2MzMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXNlckFjdGl2aXR5IGlzIGEgbWVjaGFuaXNtIHRvIGV4cHJlc3MgdG8gdGhlIG9wZXJhdGlu
ZyBzeXN0ZW0gKHdoZXJlIGFwcHJvcHJpYXRlKQorICAgICAgICB0aGF0IGEgdXNlciBpbml0aWF0
ZWQgYWN0aXZpdHkgaXMgdGFraW5nIHBsYWNlLCBhbmQgYXMgc3VjaCB0aGF0IHJlc291cmNlcyBz
aG91bGQgYmUKKyAgICAgICAgbWFkZSBhdmFpbGFibGUgdG8gdGhlIHByb2Nlc3MgYWNjb3JkaW5n
bHkuCisKKyAgICAgICAgQ3VycmVudGx5IHdlIGhvbGQgYSBzaW5nbGUgTlNBY3Rpdml0eSwgYXQg
dGhlIFdlYktpdCBsYXllci4gVGhpcyByZWZhY3RvcmluZyBhbGxvd3MgdXMKKyAgICAgICAgdG8g
aG9sZCBkaWZmZXJlbnQgYWN0aXZpdHkgdG9rZW5zIGZvciBkaWZmZXJlbnQgdXNlciBhY3Rpb25z
ICh3aGljaCBzaW1wbGlmaWVzIHRoZQorICAgICAgICBoYW5kbGluZywgYW5kIGFpZGVzIGRlYnVn
Z2luZyBzaW5jZSB0aGUgdG9rZW4gY2FuIG1vcmUgYWNjdXJhdGVseSBleHByZXNzIHRoZSBhY3Rp
dml0eQorICAgICAgICB0YWtpbmcgcGxhY2UpLCBhbmQgYWxzbyB3aWxsIGFsbG93IHVzIHRvIGF2
b2lkIHRoZSBsYXllcmluZyBkaWZmaWN1bHR5IG9mIGNhbGxpbmcgYmFjaworICAgICAgICB1cCB0
aGUgc3RhY2sgdG8gV2ViS2l0IHRvIHJlZ2lzdGVyIHRoYXQgYW4gYWN0aXZpdHkgaXMgdGFraW5n
IHBsYWNlLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAgICAgLSBhZGRlZCBuZXcgZmlsZXMuCisgICAgICAgICogcGxhdGZvcm0vVXNlckFj
dGl2aXR5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpVc2VyQWN0aXZpdHk6OlVzZXJB
Y3Rpdml0eSk6CisgICAgICAgICAgICAtIG5vcCBpbXBsZW1lbnRhdGlvbiAtIGlnbm9yZSBkZXNj
cmlwdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJBY3Rpdml0eTo6YmVnaW5BY3Rpdml0eSk6
CisgICAgICAgIChXZWJDb3JlOjpVc2VyQWN0aXZpdHk6OmVuZEFjdGl2aXR5KToKKyAgICAgICAg
ICAgIC0gbm9wIGltcGxlbWVudGF0aW9uIC0ganVzdCBpbmMvZGVjIG1fY291bnQuCisgICAgICAg
ICogcGxhdGZvcm0vVXNlckFjdGl2aXR5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VXNl
ckFjdGl2aXR5Ojppc0FjdGl2ZSk6CisgICAgICAgICAgICAtIHJldHVybnMgdHJ1ZSBpZiBvbmUg
b3IgbW9yZSBpbnN0YW5jZSBvZiB0aGlzIGFjdGl2aXR5IGlzIGluIHByb2dyZXNzLgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9Vc2VyQWN0aXZpdHlNYWMubW06IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6VXNlckFjdGl2aXR5OjpVc2VyQWN0aXZpdHkpOgorICAgICAgICAgICAgLSBjb25zdHJ1
Y3RvciBhY2NlcHRzIG9uZSBhcmd1bWVudCwgYSBkZXNjcmlwdGlvbiBzdHJpbmcuCisgICAgICAg
IChXZWJDb3JlOjpVc2VyQWN0aXZpdHk6OmlzVmFsaWQpOgorICAgICAgICAgICAgLSB1c2VkIGJ5
IGFzc2VydGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpVc2VyQWN0aXZpdHk6OmJlZ2luQWN0aXZp
dHkpOgorICAgICAgICAoV2ViQ29yZTo6VXNlckFjdGl2aXR5OjplbmRBY3Rpdml0eSk6CisgICAg
ICAgICAgICAtIHRyYWNrIHN0YXJ0L2VuZCBvZiBhbiBhY3Rpdml0eSAtIGNhbGxzIHRvIHRoZXNl
IG1ldGhvZHMgc2hvdWxkIGJlIGJhbGFuY2VkLgorICAgICAgICAoV2ViQ29yZTo6VXNlckFjdGl2
aXR5OjpoeXN0ZXJlc2lzVGltZXJGaXJlZCk6CisgICAgICAgICAgICAgIC0gdXNlZCB0byBpbXBs
ZW1lbnQgaHlzdGVyZXNpcyBpbiByZWxlYXNpbmcgIE5TQWN0aXZpdHkuCisKIDIwMTQtMDEtMDIg
IEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdMXSBD
b3JyZWN0IHN5bWJvbCBsb29rdXAgbG9naWMgdG8gaGFuZGxlIDEtZWxlbWVudCBhcnJheXMKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNjEyNDYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjQ1LDYgKzI0NSw5IEBAIF9fWk43
V2ViQ29yZTEyVGV4dEl0ZXJhdG9yN2FkdmFuY2VFdgogX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0
b3I4c3VicmFuZ2VFUE5TXzVSYW5nZUVpaQogX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3JDMUVQ
S05TXzVSYW5nZUVOU18yMFRleHRJdGVyYXRvckJlaGF2aW9yRQogX19aTjdXZWJDb3JlMTJUZXh0
SXRlcmF0b3JEMUV2CitfX1pON1dlYkNvcmUxMlVzZXJBY3Rpdml0eTExZW5kQWN0aXZpdHlFdgor
X19aTjdXZWJDb3JlMTJVc2VyQWN0aXZpdHkxM2JlZ2luQWN0aXZpdHlFdgorX19aTjdXZWJDb3Jl
MTJVc2VyQWN0aXZpdHlDMUVQS2MKIF9fWk43V2ViQ29yZTEyVVRGOEVuY29kaW5nRXYKIF9fWk43
V2ViQ29yZTEyV29ya2VyVGhyZWFkMTd3b3JrZXJUaHJlYWRDb3VudEV2CiBfX1pON1dlYkNvcmUx
MmNhY2hlU3RvcmFnZUV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjEyNDYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI4
NjAsNiArMjg2MCw5IEBACiAJCTg2MUMyRUE2MTNGQjRGRkYwMDA2MkFCQiAvKiBSZXNvdXJjZUxv
YWRUaW1pbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODYxQzJFQTUxM0ZCNEZGRjAwMDYyQUJCIC8qIFJlc291cmNlTG9hZFRpbWluZy5jcHAgKi87
IH07CiAJCTg2NTEyRURFMTU0QTJBRUYwMEE5MDQyNiAvKiBQZXJmb3JtYW5jZVJlc291cmNlVGlt
aW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
NTEyRURCMTU0QTJBRUUwMEE5MDQyNiAvKiBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcCAq
LzsgfTsKIAkJODY1MTJFREYxNTRBMkFFRjAwQTkwNDI2IC8qIFBlcmZvcm1hbmNlUmVzb3VyY2VU
aW1pbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
NTEyRURDMTU0QTJBRUYwMEE5MDQyNiAvKiBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmggKi87
IH07CisJCTg2ODE2MEQ0MTg3NjZBMEEwMDIxRTc5RCAvKiBVc2VyQWN0aXZpdHkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4MTYwRDExODc2NjlD
NDAwMjFFNzlEIC8qIFVzZXJBY3Rpdml0eS5jcHAgKi87IH07CisJCTg2ODE2MEQ1MTg3NjZBMEUw
MDIxRTc5RCAvKiBVc2VyQWN0aXZpdHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NjgxNjBEMzE4NzY2OUU3MDAyMUU3OUQgLyogVXNlckFjdGl2
aXR5TWFjLm1tICovOyB9OworCQk4NjgxNjBENjE4NzY2QTEzMDAyMUU3OUQgLyogVXNlckFjdGl2
aXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njgx
NjBEMjE4NzY2OUM0MDAyMUU3OUQgLyogVXNlckFjdGl2aXR5LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZCQTc2NkUxNjY0MjdBODAwNUJFNUQx
IC8qIEZyYW1lTG9hZFJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZCQTc2NkQxNjY0MjdBODAwNUJFNUQxIC8qIEZyYW1lTG9hZFJlcXVl
c3QuY3BwICovOyB9OwogCQk4NkJFMzQwMTE1MDU4Q0IyMDBDRTBGRDggLyogUGVyZm9ybWFuY2VF
bnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZC
RTMzRkIxNTA1OENCMjAwQ0UwRkQ4IC8qIFBlcmZvcm1hbmNlRW50cnkuaCAqLzsgfTsKIAkJODZC
RTM0MDMxNTA1OENCMjAwQ0UwRkQ4IC8qIFBlcmZvcm1hbmNlRW50cnlMaXN0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkUzM0ZEMTUwNThDQjIw
MENFMEZEOCAvKiBQZXJmb3JtYW5jZUVudHJ5TGlzdC5jcHAgKi87IH07CkBAIC05NjQ4LDYgKzk2
NTEsOSBAQAogCQk4NjUxMkVEQjE1NEEyQUVFMDBBOTA0MjYgLyogUGVyZm9ybWFuY2VSZXNvdXJj
ZVRpbWluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQZXJmb3Jt
YW5jZVJlc291cmNlVGltaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY1
MTJFREMxNTRBMkFFRjAwQTkwNDI2IC8qIFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjUxMkVERDE1NEEyQUVGMDBBOTA0MjYg
LyogUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
UGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTg2ODE2MEQxMTg3NjY5QzQwMDIxRTc5RCAvKiBVc2VyQWN0aXZpdHkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVXNlckFjdGl2aXR5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODY4MTYwRDIxODc2NjlDNDAwMjFFNzlEIC8qIFVzZXJBY3Rpdml0eS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBVc2VyQWN0aXZpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY4MTYw
RDMxODc2NjlFNzAwMjFFNzlEIC8qIFVzZXJBY3Rpdml0eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFVzZXJBY3Rpdml0eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODZCQTc2NkQxNjY0MjdBODAwNUJFNUQxIC8qIEZyYW1lTG9hZFJlcXVlc3QuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnJhbWVMb2FkUmVxdWVzdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QkUzM0ZCMTUwNThDQjIwMENFMEZEOCAvKiBQZXJm
b3JtYW5jZUVudHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlcmZvcm1h
bmNlRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZCRTMzRkMxNTA1OENC
MjAwQ0UwRkQ4IC8qIFBlcmZvcm1hbmNlRW50cnkuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFBlcmZvcm1hbmNlRW50cnkuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU3
MjEsNiArMTU3MjcsNyBAQAogCQkJCUJDRTY1OUU1MEVBOTJGQjIwMDdFNDUzMyAvKiBUaGVtZU1h
Yy5oICovLAogCQkJCUJDRTY1OUU4MEVBOTJGRkEwMDdFNDUzMyAvKiBUaGVtZU1hYy5tbSAqLywK
IAkJCQk1MURGNkQ3RjBCOTJBMThFMDBDMkRDODUgLyogVGhyZWFkQ2hlY2subW0gKi8sCisJCQkJ
ODY4MTYwRDMxODc2NjlFNzAwMjFFNzlEIC8qIFVzZXJBY3Rpdml0eU1hYy5tbSAqLywKIAkJCQlD
REM2OUREODE2MzcxRkQzMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZp
ZXcuaCAqLywKIAkJCQlDREM2OUREOTE2MzcxRkQzMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3Jl
ZW5QbGFjZWhvbGRlclZpZXcubW0gKi8sCiAJCQkJQ0RDNjlERDQxNjMyMDI2QzAwN0MzOERGIC8q
IFdlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuaCAqLywKQEAgLTIwNDM3LDYgKzIwNDQ0LDgg
QEAKIAkJCQk2NTkzOTIzNTA5QUU0MzQ2MDAyQzUzMUYgLyogVVJMLmNwcCAqLywKIAkJCQk2NTkz
OTIzNjA5QUU0MzQ2MDAyQzUzMUYgLyogVVJMLmggKi8sCiAJCQkJQkNCRDIxQUEwRTQxN0FENDAw
QTA3MEYyIC8qIFVSTEhhc2guaCAqLywKKwkJCQk4NjgxNjBEMTE4NzY2OUM0MDAyMUU3OUQgLyog
VXNlckFjdGl2aXR5LmNwcCAqLywKKwkJCQk4NjgxNjBEMjE4NzY2OUM0MDAyMUU3OUQgLyogVXNl
ckFjdGl2aXR5LmggKi8sCiAJCQkJMkUzQkJGMDUxMTYyREExMTAwQjk0MDlBIC8qIFVVSUQuY3Bw
ICovLAogCQkJCTJFM0JCRjA2MTE2MkRBMTEwMEI5NDA5QSAvKiBVVUlELmggKi8sCiAJCQkJOUEx
MTQyMDMxODMyRDEzNDAwMEJCOEFEIC8qIFZhbHVlVG9TdHJpbmcuaCAqLywKQEAgLTIyNTkzLDYg
KzIyNjAyLDcgQEAKIAkJCQlFNDlCRDlGQTEzMUZEMkVEMDAzQzU2RjAgLyogQ1NTVmFsdWVQb29s
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTkyRjA4MjQ1RTU5MDAxRTlBQkMgLyogQ3Vyc29y
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzIyNzJBMjBFODJFODdDMDBFN0Y5NzUgLyogQ3Vyc29y
RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODY4MTYwRDYxODc2NkExMzAwMjFFNzlEIC8qIFVz
ZXJBY3Rpdml0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyMjcyQUQwRTgyRThGMzAwRTdGOTc1
IC8qIEN1cnNvckxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTYyQ0QzMjVBMTE1N0U1N0MwMDYz
QjBBNyAvKiBDdXN0b21FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTVCM0ZDMTkxNUZCMjE3
ODAwQTgxQkNCIC8qIEN1c3RvbUZpbHRlckFycmF5UGFyYW1ldGVyLmggaW4gSGVhZGVycyAqLywK
QEAgLTI2MzMzLDYgKzI2MzQzLDcgQEAKIAkJCQk4NTlBOUM1MDBBQTVFM0JEMDBCNjk0QjIgLyog
RE9NSFRNTFN0eWxlRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1REY4MjFFMEFBNzg0
OUUwMDQ4NkFENyAvKiBET01IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTg1REY4MjIwMEFBNzg0OUUwMDQ4NkFENyAvKiBET01IVE1MVGFibGVDZWxsRWxlbWVu
dC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg2ODE2MEQ0MTg3NjZBMEEwMDIxRTc5RCAvKiBVc2Vy
QWN0aXZpdHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODVERjgyMjIwQUE3ODQ5RTAwNDg2QUQ3
IC8qIERPTUhUTUxUYWJsZUNvbEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NURGODI3
MTBBQTc4QjhCMDA0ODZBRDcgLyogRE9NSFRNTFRhYmxlRWxlbWVudC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTg1REY4MjI0MEFBNzg0OUUwMDQ4NkFENyAvKiBET01IVE1MVGFibGVSb3dFbGVtZW50
Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yNjQwMSw2ICsyNjQxMiw3IEBACiAJCQkJNDk4MzkxNTEw
RjFFNzZCNDAwQzIzNzgyIC8qIERPTVdlYktpdENTU01hdHJpeC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCThBRDBBNTk3MTRDODgzNTgwMDBEODNDNSAvKiBET01XZWJLaXRDU1NSZWdpb25SdWxlLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2MTFFNjIwRTFDNEUxNDAwRjZBNTc5IC8qIERPTVdlYktp
dENTU1RyYW5zZm9ybVZhbHVlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODY4MTYwRDUxODc2NkEw
RTAwMjFFNzlEIC8qIFVzZXJBY3Rpdml0eU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTNGMkIz
M0VDMTY1QUYxNTYwMEUzOTg3QyAvKiBET01XZWJLaXRDU1NWaWV3cG9ydFJ1bGUubW0gaW4gU291
cmNlcyAqLywKIAkJCQk4QTE5NTkzMzE0N0VBMTZFMDBEMUVBNjEgLyogRE9NV2ViS2l0TmFtZWRG
bG93Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFDMEZGNEQwRTRDRUZERDAwN0Q2RkU1IC8qIERP
TVdlYktpdFRyYW5zaXRpb25FdmVudC5tbSBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVXNlckFjdGl2aXR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Vc2VyQWN0aXZpdHkuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVXNlckFjdGl2aXR5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVzZXJB
Y3Rpdml0eS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiAhSEFWRShOU19BQ1RJVklU
WSkKKworVXNlckFjdGl2aXR5OjpVc2VyQWN0aXZpdHkoY29uc3QgY2hhciopCisgICAgOiBtX2Nv
dW50KDApCit7Cit9CisKK3ZvaWQgVXNlckFjdGl2aXR5OjpiZWdpbkFjdGl2aXR5KCkKK3sKKyAg
ICArK21fY291bnQ7Cit9CisKK3ZvaWQgVXNlckFjdGl2aXR5OjplbmRBY3Rpdml0eSgpCit7Cisg
ICAgQVNTRVJUKG1fY291bnQpOworICAgIC0tbV9jb3VudDsKK30KKworI2VuZGlmCisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBY3Rp
dml0eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBY3Rpdml0
eS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFjdGl2aXR5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
VXNlckFjdGl2aXR5X2gKKyNkZWZpbmUgVXNlckFjdGl2aXR5X2gKKworI2lmIEhBVkUoTlNfQUNU
SVZJVFkpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SdW5sb29w
Lmg+CitPQkpDX0NMQVNTIE5TU3RyaW5nOworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworLy8gVGhlIFVzZXJBY3Rpdml0eSB0eXBlIGlzIHVzZWQgdG8gaW5kaWNhdGUgdG8gdGhlIG9w
ZXJhdGluZyBzeXN0ZW0gdGhhdAorLy8gYSB1c2VyIGluaXRpYXRlZCBvciB2aXNpYmxlIGFjdGlv
biBpcyB0YWtpbmcgcGxhY2UsIGFuZCBhcyBzdWNoIHRoYXQKKy8vIHJlc291cmNlcyBzaG91bGQg
YmUgYWxsb2NhdGVkIHRvIHRoZSBwcm9jZXNzIGFjY29yZGluZ2x5LgorY2xhc3MgVXNlckFjdGl2
aXR5IHsKK3B1YmxpYzoKKyAgICBVc2VyQWN0aXZpdHkoY29uc3QgY2hhciogZGVzY3JpcHRpb24p
OworCisgICAgdm9pZCBiZWdpbkFjdGl2aXR5KCk7CisgICAgdm9pZCBlbmRBY3Rpdml0eSgpOwor
CisgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnQ7IH0KKworcHJpdmF0
ZToKKyAgICBzaXplX3QgbV9jb3VudDsKKworI2lmIEhBVkUoTlNfQUNUSVZJVFkpCisgICAgdm9p
ZCBoeXN0ZXJlc2lzVGltZXJGaXJlZCgpOworICAgIGJvb2wgaXNWYWxpZCgpOworCisgICAgUmV0
YWluUHRyPE5TU3RyaW5nPiBtX2Rlc2NyaXB0aW9uOworICAgIFJ1bkxvb3A6OlRpbWVyPFVzZXJB
Y3Rpdml0eT4gbV90aW1lcjsKKyAgICBSZXRhaW5QdHI8aWQ+IG1fYWN0aXZpdHk7CisjZW5kaWYK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwordXNpbmcgV2ViQ29yZTo6VXNlckFjdGl2
aXR5OworCisjZW5kaWYgLy8gVXNlckFjdGl2aXR5X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9Vc2VyQWN0aXZpdHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1VzZXJBY3Rpdml0eU1hYy5tbQkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Vc2VyQWN0aXZpdHlNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiVXNlckFjdGl2aXR5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIEhBVkUoTlNf
QUNUSVZJVFkpCisKK3N0YXRpYyBjb25zdCBkb3VibGUga0h5c3RlcmVzaXNTZWNvbmRzID0gNS4w
OworCitVc2VyQWN0aXZpdHk6OlVzZXJBY3Rpdml0eShjb25zdCBjaGFyKiBkZXNjcmlwdGlvbikK
KyAgICA6IG1fY291bnQoMCkKKyAgICAsIG1fZGVzY3JpcHRpb24oW05TU3RyaW5nIHN0cmluZ1dp
dGhVVEY4U3RyaW5nOmRlc2NyaXB0aW9uXSkKKyAgICAsIG1fdGltZXIoUnVuTG9vcDo6bWFpbigp
LCB0aGlzLCAmVXNlckFjdGl2aXR5OjpoeXN0ZXJlc2lzVGltZXJGaXJlZCkKK3sKKyAgICBBU1NF
UlQoaXNWYWxpZCgpKTsKK30KKworYm9vbCBVc2VyQWN0aXZpdHk6OmlzVmFsaWQoKQoreworICAg
IC8vIElmIGNvdW50IGlzIG5vbi16ZXJvIHRoZW4gd2Ugc2hvdWxkIGJlIGhvbGRpbmcgYW4gYWN0
aXZpdHksIGFuZCB0aGUgaHlzdGVyZXNpcyB0aW1lciBzaG91bGQgbm90IGJlIHJ1bm5pbmcuCisg
ICAgLy8gRWxzZSBpZiBjb3VudCBpcyB6ZXJvIHRoZW46CisgICAgLy8gIChhKSBpZiB3ZSdyZSBo
b2xkaW5nIGFuIGFjdGl2aXR5IHRoZXJlIHNob3VsZCBiZSBhbiBhY3RpdmUgdGltZXIgdG8gY2xl
YXIgdGhpcywKKyAgICAvLyAgKGIpIGlmIHdlJ3JlIG5vdCBob2xkaW5nIGFuIGFjdGl2aXR5IHRo
ZXJlIHNob3VsZCBiZSBubyBhY3RpdmUgdGltZXIuCisgICAgcmV0dXJuIG1fY291bnQgPyBtX2Fj
dGl2aXR5ICYmICFtX3RpbWVyLmlzQWN0aXZlKCkgOiAhIW1fYWN0aXZpdHkgPT0gbV90aW1lci5p
c0FjdGl2ZSgpOworfQorCit2b2lkIFVzZXJBY3Rpdml0eTo6YmVnaW5BY3Rpdml0eSgpCit7Cisg
ICAgQVNTRVJUKGlzVmFsaWQoKSk7CisKKyAgICArK21fY291bnQ7CisgICAgaWYgKG1fdGltZXIu
aXNBY3RpdmUoKSkKKyAgICAgICAgbV90aW1lci5zdG9wKCk7CisgICAgaWYgKCFtX2FjdGl2aXR5
KSB7CisgICAgICAgIE5TQWN0aXZpdHlPcHRpb25zIG9wdGlvbnMgPSAoTlNBY3Rpdml0eVVzZXJJ
bml0aWF0ZWRBbGxvd2luZ0lkbGVTeXN0ZW1TbGVlcCB8IE5TQWN0aXZpdHlMYXRlbmN5Q3JpdGlj
YWwpICYgfihOU0FjdGl2aXR5U3VkZGVuVGVybWluYXRpb25EaXNhYmxlZCB8IE5TQWN0aXZpdHlB
dXRvbWF0aWNUZXJtaW5hdGlvbkRpc2FibGVkKTsKKyAgICAgICAgbV9hY3Rpdml0eSA9IFtbTlNQ
cm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gYmVnaW5BY3Rpdml0eVdpdGhPcHRpb25zOm9wdGlvbnMg
cmVhc29uOm1fZGVzY3JpcHRpb24uZ2V0KCldOworICAgIH0KKworICAgIEFTU0VSVChpc1ZhbGlk
KCkpOworfQorCit2b2lkIFVzZXJBY3Rpdml0eTo6ZW5kQWN0aXZpdHkoKQoreworICAgIEFTU0VS
VChtX2NvdW50KTsKKyAgICBBU1NFUlQoaXNWYWxpZCgpKTsKKworICAgIGlmICghLS1tX2NvdW50
KQorICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChrSHlzdGVyZXNpc1NlY29uZHMpOworCisg
ICAgQVNTRVJUKGlzVmFsaWQoKSk7Cit9CisKK3ZvaWQgVXNlckFjdGl2aXR5OjpoeXN0ZXJlc2lz
VGltZXJGaXJlZCgpCit7CisgICAgQVNTRVJUKGlzVmFsaWQoKSk7CisKKyAgICBbW05TUHJvY2Vz
c0luZm8gcHJvY2Vzc0luZm9dIGVuZEFjdGl2aXR5Om1fYWN0aXZpdHkuZ2V0KCldOworICAgIG1f
YWN0aXZpdHkuY2xlYXIoKTsKKyAgICBtX3RpbWVyLnN0b3AoKTsKKworICAgIEFTU0VSVChpc1Zh
bGlkKCkpOworfQorCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTYxMjQ2KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTQtMDEtMDIgIEdhdmluIEJhcnJhY2xvdWdo
ICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIE5TQWN0aXZpdHkg
aGFuZGxpbmcgY29kZSBmcm9tIENoaWxkUHJvY2VzcyB0byBVc2VyQWN0aXZpdHkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjMzMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZXJBY3Rpdml0eSBpcyBh
IG1lY2hhbmlzbSB0byBleHByZXNzIHRvIHRoZSBvcGVyYXRpbmcgc3lzdGVtICh3aGVyZSBhcHBy
b3ByaWF0ZSkKKyAgICAgICAgdGhhdCBhIHVzZXIgaW5pdGlhdGVkIGFjdGl2aXR5IGlzIHRha2lu
ZyBwbGFjZSwgYW5kIGFzIHN1Y2ggdGhhdCByZXNvdXJjZXMgc2hvdWxkIGJlCisgICAgICAgIG1h
ZGUgYXZhaWxhYmxlIHRvIHRoZSBwcm9jZXNzIGFjY29yZGluZ2x5LgorCisgICAgICAgIEN1cnJl
bnRseSB3ZSBob2xkIGEgc2luZ2xlIE5TQWN0aXZpdHksIGF0IHRoZSBXZWJLaXQgbGF5ZXIuIFRo
aXMgcmVmYWN0b3JpbmcgYWxsb3dzIHVzCisgICAgICAgIHRvIGhvbGQgZGlmZmVyZW50IGFjdGl2
aXR5IHRva2VucyBmb3IgZGlmZmVyZW50IHVzZXIgYWN0aW9ucyAod2hpY2ggc2ltcGxpZmllcyB0
aGUKKyAgICAgICAgaGFuZGxpbmcsIGFuZCBhaWRlcyBkZWJ1Z2dpbmcgc2luY2UgdGhlIHRva2Vu
IGNhbiBtb3JlIGFjY3VyYXRlbHkgZXhwcmVzcyB0aGUgYWN0aXZpdHkKKyAgICAgICAgdGFraW5n
IHBsYWNlKSwgYW5kIGFsc28gd2lsbCBhbGxvdyB1cyB0byBhdm9pZCB0aGUgbGF5ZXJpbmcgZGlm
ZmljdWx0eSBvZiBjYWxsaW5nIGJhY2sKKyAgICAgICAgdXAgdGhlIHN0YWNrIHRvIFdlYktpdCB0
byByZWdpc3RlciB0aGF0IGFuIGFjdGl2aXR5IGlzIHRha2luZyBwbGFjZS4KKworICAgICAgICAq
IFNoYXJlZC9DaGlsZFByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3M6
OkNoaWxkUHJvY2Vzcyk6CisgICAgICAgICAgICAtIHJlbW92ZWQgZmllbGRzIHRvIGRpcmVjdGx5
IG1hbmFnZSBOU0FjdGl2aXR5LCB1c2UgVXNlckFjdGl2aXR5IG9iamVjdHMgaW5zdGVhZC4KKyAg
ICAgICAgKiBTaGFyZWQvQ2hpbGRQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJv
Y2Vzczo6cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCk6CisgICAgICAgICAgICAtIGNoYW5nZWQg
dG8gaW5pdGlhbGl6ZSBuZXcgZmllbGRzLgorICAgICAgICAqIFNoYXJlZC9tYWMvQ2hpbGRQcm9j
ZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3M6OnNldFByb2Nlc3NTdXBw
cmVzc2lvbkVuYWJsZWQpOgorICAgICAgICAgICAgLSBpbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiBV
c2VyQWN0aXZpdHkgbV9wcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZC4KKyAgICAgICAgKFdlYktp
dDo6Q2hpbGRQcm9jZXNzOjppbmNyZW1lbnRBY3RpdmVUYXNrQ291bnQpOgorICAgICAgICAgICAg
LSBpbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiBVc2VyQWN0aXZpdHkgbV9hY3RpdmVUYXNrcy4KKyAg
ICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjpkZWNyZW1lbnRBY3RpdmVUYXNrQ291bnQpOgor
ICAgICAgICAgICAgLSBpbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiBVc2VyQWN0aXZpdHkgbV9hY3Rp
dmVUYXNrcy4KKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxp
emUpOgorICAgICAgICAgICAgLSBpbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiBVc2VyQWN0aXZpdHkg
bV9wcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZC4KKwogMjAxNC0wMS0wMiAgR2F2aW4gQmFycmFj
bG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUHJvcGFnYXRlIFdpbmRv
d1NlcnZlciBtb2RpZmljYXRpb25zIHN0YXRlIHRvIFdlYlByb2Nlc3MKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCShyZXZpc2lvbiAxNjEyNDYpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTEg
KzM1LDggQEAgQ2hpbGRQcm9jZXNzOjpDaGlsZFByb2Nlc3MoKQogICAgIDogbV90ZXJtaW5hdGlv
blRpbWVvdXQoMCkKICAgICAsIG1fdGVybWluYXRpb25Db3VudGVyKDApCiAgICAgLCBtX3Rlcm1p
bmF0aW9uVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmQ2hpbGRQcm9jZXNzOjp0ZXJtaW5h
dGlvblRpbWVyRmlyZWQpCi0jaWYgUExBVEZPUk0oTUFDKQotICAgICwgbV9hY3RpdmVUYXNrQ291
bnQoMCkKLSAgICAsIG1fc2hvdWxkU3VzcGVuZChmYWxzZSkKLSAgICAsIG1fc3VzcGVuc2lvbkh5
c3RlcmVzaXNUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZDaGlsZFByb2Nlc3M6OnN1c3Bl
bnNpb25IeXN0ZXJlc2lzVGltZXJGaXJlZCkKLSNlbmRpZgorICAgICwgbV9wcm9jZXNzU3VwcHJl
c3Npb25EaXNhYmxlZCgiUHJvY2VzcyBTdXBwcmVzc2lvbiBEaXNhYmxlZCBieSBVSVByb2Nlc3Mi
KQorICAgICwgbV9hY3RpdmVUYXNrcygiUHJvY2VzcyBTdXBwcmVzc2lvbiBEaXNhYmxlZCBieSBX
ZWJQcm9jZXNzIikKIHsKIH0KIApAQCAtODAsNiArNzcsMjcgQEAgdm9pZCBDaGlsZFByb2Nlc3M6
OmluaXRpYWxpemUoY29uc3QgQ2hpbAogICAgIG1fY29ubmVjdGlvbi0+b3BlbigpOwogfQogCit2
b2lkIENoaWxkUHJvY2Vzczo6c2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChib29sIGVuYWJs
ZWQpCit7CisgICAgaWYgKHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoKSA9PSBlbmFibGVkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoZW5hYmxlZCkKKyAgICAgICAgbV9wcm9jZXNzU3Vw
cHJlc3Npb25EaXNhYmxlZC5lbmRBY3Rpdml0eSgpOworICAgIGVsc2UKKyAgICAgICAgbV9wcm9j
ZXNzU3VwcHJlc3Npb25EaXNhYmxlZC5iZWdpbkFjdGl2aXR5KCk7Cit9CisKK3ZvaWQgQ2hpbGRQ
cm9jZXNzOjppbmNyZW1lbnRBY3RpdmVUYXNrQ291bnQoKQoreworICAgIG1fYWN0aXZlVGFza3Mu
YmVnaW5BY3Rpdml0eSgpOworfQorCit2b2lkIENoaWxkUHJvY2Vzczo6ZGVjcmVtZW50QWN0aXZl
VGFza0NvdW50KCkKK3sKKyAgICBtX2FjdGl2ZVRhc2tzLmVuZEFjdGl2aXR5KCk7Cit9CisKIHZv
aWQgQ2hpbGRQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0
aWFsaXphdGlvblBhcmFtZXRlcnMmKQogewogfQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVk
L0NoaWxkUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGls
ZFByb2Nlc3MuaAkocmV2aXNpb24gMTYxMjQ2KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0No
aWxkUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAi
Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1hcC5oIgogI2luY2x1ZGUg
Ik1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1VzZXJBY3Rpdml0eS5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC02MSwxNiArNjIsMTMgQEAgcHVibGljOgogICAgIHZvaWQg
YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJik7CiAgICAg
dm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CiAKLSNpZiBQTEFURk9STShNQUMp
CiAgICAgdm9pZCBzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJvb2wpOwotICAgIGJvb2wg
cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuICFtX3Byb2Nlc3NTdXBw
cmVzc2lvbkFzc2VydGlvbjsgfQorICAgIGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuICFtX3Byb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkLmlzQWN0aXZlKCk7
IH0KICAgICB2b2lkIGluY3JlbWVudEFjdGl2ZVRhc2tDb3VudCgpOwogICAgIHZvaWQgZGVjcmVt
ZW50QWN0aXZlVGFza0NvdW50KCk7CiAKKyNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBzZXRB
cHBsaWNhdGlvbklzRGFlbW9uKCk7Ci0jZWxzZQotICAgIHZvaWQgaW5jcmVtZW50QWN0aXZlVGFz
a0NvdW50KCkgeyB9Ci0gICAgdm9pZCBkZWNyZW1lbnRBY3RpdmVUYXNrQ291bnQoKSB7IH0KICNl
bmRpZgogCiAgICAgSVBDOjpDb25uZWN0aW9uKiBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQpAQCAtMTE5LDE0ICsxMTcsOCBAQCBw
cml2YXRlOgogICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCBtX21lc3NhZ2VSZWNlaXZlck1hcDsKIAotI2lmIFBMQVRG
T1JNKE1BQykKLSAgICB2b2lkIHN1c3BlbnNpb25IeXN0ZXJlc2lzVGltZXJGaXJlZCgpOwotICAg
IHZvaWQgc2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEludGVybmFsKGJvb2wpOwotICAgIHNp
emVfdCBtX2FjdGl2ZVRhc2tDb3VudDsKLSAgICBib29sIG1fc2hvdWxkU3VzcGVuZDsKLSAgICBS
dW5Mb29wOjpUaW1lcjxDaGlsZFByb2Nlc3M+IG1fc3VzcGVuc2lvbkh5c3RlcmVzaXNUaW1lcjsK
LSAgICBSZXRhaW5QdHI8aWQ+IG1fcHJvY2Vzc1N1cHByZXNzaW9uQXNzZXJ0aW9uOwotI2VuZGlm
CisgICAgVXNlckFjdGl2aXR5IG1fcHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZWQ7CisgICAgVXNl
ckFjdGl2aXR5IG1fYWN0aXZlVGFza3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCShyZXZp
c2lvbiAxNjEyNDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjAsNjggKzYwLDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgY29uc3QgZG91YmxlIGtTdXNw
ZW5zaW9uSHlzdGVyZXNpc1NlY29uZHMgPSA1LjA7Ci0KLXZvaWQgQ2hpbGRQcm9jZXNzOjpzZXRQ
cm9jZXNzU3VwcHJlc3Npb25FbmFibGVkSW50ZXJuYWwoYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25F
bmFibGVkKQotewotI2lmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTA5MAotICAgIGlmICh0aGlzLT5wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVk
KCkgPT0gcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
aWYgKHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpIHsKLSAgICAgICAgQVNTRVJUKCFtX2FjdGl2
ZVRhc2tDb3VudCk7Ci0gICAgICAgIFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gZW5kQWN0
aXZpdHk6bV9wcm9jZXNzU3VwcHJlc3Npb25Bc3NlcnRpb24uZ2V0KCldOwotICAgICAgICBtX3By
b2Nlc3NTdXBwcmVzc2lvbkFzc2VydGlvbi5jbGVhcigpOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IE5TQWN0aXZpdHlPcHRpb25zIG9wdGlvbnMgPSAoTlNBY3Rpdml0eVVzZXJJbml0aWF0ZWRBbGxv
d2luZ0lkbGVTeXN0ZW1TbGVlcCB8IE5TQWN0aXZpdHlMYXRlbmN5Q3JpdGljYWwpICYgfihOU0Fj
dGl2aXR5U3VkZGVuVGVybWluYXRpb25EaXNhYmxlZCB8IE5TQWN0aXZpdHlBdXRvbWF0aWNUZXJt
aW5hdGlvbkRpc2FibGVkKTsKLSAgICAgICAgbV9wcm9jZXNzU3VwcHJlc3Npb25Bc3NlcnRpb24g
PSBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGJlZ2luQWN0aXZpdHlXaXRoT3B0aW9uczpv
cHRpb25zIHJlYXNvbjpAIlByb2Nlc3MgU3VwcHJlc3Npb24gRGlzYWJsZWQiXTsKLSAgICB9Ci0j
ZWxzZQotICAgIFVOVVNFRF9QQVJBTShwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKTsKLSNlbmRp
ZgotfQotCi12b2lkIENoaWxkUHJvY2Vzczo6c2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChi
b29sIHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpCi17Ci0gICAgaWYgKHRoaXMtPnByb2Nlc3NT
dXBwcmVzc2lvbkVuYWJsZWQoKSA9PSBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKQotICAgICAg
ICByZXR1cm47Ci0gICAgaWYgKG1fc2hvdWxkU3VzcGVuZCA9PSBwcm9jZXNzU3VwcHJlc3Npb25F
bmFibGVkKQotICAgICAgICByZXR1cm47Ci0gICAgbV9zaG91bGRTdXNwZW5kID0gcHJvY2Vzc1N1
cHByZXNzaW9uRW5hYmxlZDsKLSAgICBpZiAobV9zaG91bGRTdXNwZW5kKSB7Ci0gICAgICAgIGlm
ICghbV9hY3RpdmVUYXNrQ291bnQpCi0gICAgICAgICAgICBtX3N1c3BlbnNpb25IeXN0ZXJlc2lz
VGltZXIuc3RhcnRPbmVTaG90KGtTdXNwZW5zaW9uSHlzdGVyZXNpc1NlY29uZHMpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIHNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRJbnRlcm5h
bChmYWxzZSk7Ci19Ci0KLXZvaWQgQ2hpbGRQcm9jZXNzOjppbmNyZW1lbnRBY3RpdmVUYXNrQ291
bnQoKQotewotICAgIG1fYWN0aXZlVGFza0NvdW50Kys7Ci0gICAgaWYgKG1fc3VzcGVuc2lvbkh5
c3RlcmVzaXNUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3N1c3BlbnNpb25IeXN0ZXJlc2lz
VGltZXIuc3RvcCgpOwotICAgIGlmIChtX2FjdGl2ZVRhc2tDb3VudCkKLSAgICAgICAgc2V0UHJv
Y2Vzc1N1cHByZXNzaW9uRW5hYmxlZEludGVybmFsKGZhbHNlKTsKLX0KLQotdm9pZCBDaGlsZFBy
b2Nlc3M6OmRlY3JlbWVudEFjdGl2ZVRhc2tDb3VudCgpCi17Ci0gICAgQVNTRVJUKG1fYWN0aXZl
VGFza0NvdW50KTsKLSAgICBtX2FjdGl2ZVRhc2tDb3VudC0tOwotICAgIGlmIChtX2FjdGl2ZVRh
c2tDb3VudCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChtX3Nob3VsZFN1c3BlbmQpCi0gICAg
ICAgIG1fc3VzcGVuc2lvbkh5c3RlcmVzaXNUaW1lci5zdGFydE9uZVNob3Qoa1N1c3BlbnNpb25I
eXN0ZXJlc2lzU2Vjb25kcyk7Ci19Ci0KLXZvaWQgQ2hpbGRQcm9jZXNzOjpzdXNwZW5zaW9uSHlz
dGVyZXNpc1RpbWVyRmlyZWQoKQotewotICAgIEFTU0VSVCghbV9hY3RpdmVUYXNrQ291bnQpOwot
ICAgIEFTU0VSVChtX3Nob3VsZFN1c3BlbmQpOwotICAgIHNldFByb2Nlc3NTdXBwcmVzc2lvbkVu
YWJsZWRJbnRlcm5hbCh0cnVlKTsKLX0KLQogI2lmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRp
bWVyQ29hbGVzY2luZ1BvbGljeSgpCiB7CkBAIC0xNTAsMTEgKzg4LDggQEAgdm9pZCBDaGlsZFBy
b2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAjaWYgIVBMQVRGT1JNKElPUykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCiAgICAgaW5pdGlhbGl6ZVRpbWVyQ29h
bGVzY2luZ1BvbGljeSgpOwogI2VuZGlmCi0gICAgLy8gU3RhcnRpbmcgd2l0aCBwcm9jZXNzIHN1
cHByZXNzaW9uIGRpc2FibGVkLiAgVGhlIHByb3h5IGZvciB0aGlzIHByb2Nlc3Mgd2lsbAotICAg
IC8vIGVuYWJsZSBpZiBhcHByb3ByaWF0ZSBmcm9tIGRpZEZpbmlzaExhdW5jaGluZygpLgotICAg
IC8vIFdlIHVzZSBzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkSW50ZXJuYWwgdG8gYXZvaWQg
YW55IHNob3J0IGNpcmN1aXQgbG9naWMKLSAgICAvLyB0aGF0IHdvdWxkIHByZXZlbnQgdXMgZnJv
bSB0YWtpbmcgdGhlIHN1cHByZXNzaW9uIGFzc2VydGlvbi4KLSAgICBzZXRQcm9jZXNzU3VwcHJl
c3Npb25FbmFibGVkSW50ZXJuYWwoZmFsc2UpOworICAgIC8vIFN0YXJ0IHdpdGggcHJvY2VzcyBz
dXBwcmVzc2lvbiBkaXNhYmxlZC4KKyAgICBtX3Byb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkLmJl
Z2luQWN0aXZpdHkoKTsKIAogICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY2hh
bmdlQ3VycmVudERpcmVjdG9yeVBhdGg6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVQYXRo
XV07CiB9Cg==
</data>
<flag name="review"
          id="243979"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="243984"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>