<?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>131000</bug_id>
          
          <creation_ts>2014-03-31 18:28:41 -0700</creation_ts>
          <short_desc>Need an Objective-C API or SPI for Find in Page</short_desc>
          <delta_ts>2014-04-02 12:52:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Alice Liu">alice.barraclough</reporter>
          <assigned_to name="Alice Liu">alice.barraclough</assigned_to>
          <cc>alice.barraclough</cc>
    
    <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>996084</commentid>
    <comment_count>0</comment_count>
    <who name="Alice Liu">alice.barraclough</who>
    <bug_when>2014-03-31 18:28:41 -0700</bug_when>
    <thetext>WebKit2 has a C API for finding in page, but no Cocoa one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996087</commentid>
    <comment_count>1</comment_count>
      <attachid>228229</attachid>
    <who name="Alice Liu">alice.barraclough</who>
    <bug_when>2014-03-31 18:35:38 -0700</bug_when>
    <thetext>Created attachment 228229
patch

patch for build bot test, first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996089</commentid>
    <comment_count>2</comment_count>
      <attachid>228230</attachid>
    <who name="Alice Liu">alice.barraclough</who>
    <bug_when>2014-03-31 18:55:53 -0700</bug_when>
    <thetext>Created attachment 228230
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996091</commentid>
    <comment_count>3</comment_count>
      <attachid>228231</attachid>
    <who name="Alice Liu">alice.barraclough</who>
    <bug_when>2014-03-31 19:03:06 -0700</bug_when>
    <thetext>Created attachment 228231
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996092</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-31 19:04:32 -0700</bug_when>
    <thetext>Attachment 228231 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h:43:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h:134:  Missing spaces around =  [whitespace/operators] [4]
Total errors found: 2 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996095</commentid>
    <comment_count>5</comment_count>
    <who name="Alice Liu">alice.barraclough</who>
    <bug_when>2014-03-31 19:16:05 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h:43:  Place brace on its own line for function definitions.  [whitespace/braces] [4]

This isn&apos;t incorrect style for a NS_OPTIONS typedef.  Style for functions is being applied in the wrong context. 

&gt; ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h:134:  Missing spaces around =  [whitespace/operators] [4]

This isn&apos;t incorrect style for property declarations. This matches the style of the line directly above it. Style for assignment operator is being applied in the wrong context. 

&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

How to do this?  I did not find a component by the name of &quot;check-webkit-style&quot; when selecting the component for a new bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996096</commentid>
    <comment_count>6</comment_count>
    <who name="Alice Liu">alice.barraclough</who>
    <bug_when>2014-03-31 19:21:47 -0700</bug_when>
    <thetext>The gtk-wk2 build failure is irrelevant.  It was caused by http://trac.webkit.org/changeset/166553.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996578</commentid>
    <comment_count>7</comment_count>
      <attachid>228231</attachid>
    <who name="">mitz</who>
    <bug_when>2014-04-01 20:38:52 -0700</bug_when>
    <thetext>Comment on attachment 228231
Patch

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

Looks great! I can imagine a version of this API where there is no delegate, and the “find” and “count” methods take completion handler blocks, but as SPI this is a great start.

&gt; Source/WebKit2/UIProcess/API/APIFindClient.h:43
&gt; +    virtual void didCountStringMatches(WebKit::WebPageProxy*, const WTF::String&amp;, uint32_t matchCount) { }
&gt; +    virtual void didFindString(WebKit::WebPageProxy*, const WTF::String&amp;, uint32_t matchCount) { }
&gt; +    virtual void didFailToFindString(WebKit::WebPageProxy*, const WTF::String&amp;) { }

No need to qualify String with WTF:: since WTFString.h, which you’re including, says “using WTF::String”.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:1227
&gt; +- (UIView *)_hostForFindUI

Why not call this _viewForFindUI? “Host” has other meanings, and isn’t a term we normally use to describe the role of a view.

&gt; Source/WebKit2/UIProcess/Cocoa/FindClient.h:45
&gt; +    RetainPtr&lt;id &lt;_WKFindDelegate&gt; &gt; delegate();

No need for the space between the &gt; &gt;.

&gt; Source/WebKit2/UIProcess/Cocoa/FindClient.h:55
&gt; +    WeakObjCPtr&lt;id &lt;_WKFindDelegate&gt; &gt; m_delegate;

Ditto.

&gt; Source/WebKit2/UIProcess/Cocoa/FindClient.mm:40
&gt; +RetainPtr&lt;id &lt;_WKFindDelegate&gt; &gt; FindClient::delegate()

Ditto.

&gt; Source/WebKit2/UIProcess/Cocoa/FindClient.mm:45
&gt; +void FindClient::setDelegate(id &lt;_WKFindDelegate&gt; delegate)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996788</commentid>
    <comment_count>8</comment_count>
    <who name="Alice Liu">alice.barraclough</who>
    <bug_when>2014-04-02 12:43:28 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; Source/WebKit2/UIProcess/API/APIFindClient.h:43
&gt; &gt; +    virtual void didCountStringMatches(WebKit::WebPageProxy*, const WTF::String&amp;, uint32_t matchCount) { }
&gt; &gt; +    virtual void didFindString(WebKit::WebPageProxy*, const WTF::String&amp;, uint32_t matchCount) { }
&gt; &gt; +    virtual void didFailToFindString(WebKit::WebPageProxy*, const WTF::String&amp;) { }
&gt; 
&gt; No need to qualify String with WTF:: since WTFString.h, which you’re including, says “using WTF::String”.

I tried removing WTF:: and it resulted in a compile time error in WebPageProxy.  I think the compiler is assuming API::String if the WTF:: is not present to clarify which String class. 

thanks for reviewing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996790</commentid>
    <comment_count>9</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-04-02 12:44:53 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)

&gt; &gt; No need to qualify String with WTF:: since WTFString.h, which you’re including, says “using WTF::String”.
&gt; 
&gt; I tried removing WTF:: and it resulted in a compile time error in WebPageProxy.  I think the compiler is assuming API::String if the WTF:: is not present to clarify which String class. 
&gt; 

Yeah it is needed to resolve the API::String vs WTF::String ambiguity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996793</commentid>
    <comment_count>10</comment_count>
    <who name="Alice Liu">alice.barraclough</who>
    <bug_when>2014-04-02 12:52:15 -0700</bug_when>
    <thetext>Committed r166658: &lt;http://trac.webkit.org/changeset/166658&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228229</attachid>
            <date>2014-03-31 18:35:38 -0700</date>
            <delta_ts>2014-03-31 18:55:52 -0700</delta_ts>
            <desc>patch</desc>
            <filename>131000.patch</filename>
            <type>text/plain</type>
            <size>33806</size>
            <attacher name="Alice Liu">alice.barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NjU1MykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY0IEBACisyMDE0LTAzLTMxICBBbGljZSBC
YXJyYWNsb3VnaCAgPGFsaWNlLmxpdUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkaW5nIE9iamVj
dGl2ZS1DIFNQSSBmb3IgRmluZCBpbiBQYWdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxMDAwIE5lZWQgYW4gT2JqZWN0aXZlLUMgQVBJIG9yIFNQ
SSBmb3IgRmluZCBpbiBQYWdlCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRmluZC1vbi1wYWdlIFNQSSBhZGRlZCB0byBXS1dlYlZpZXcsIHdoaWNoIGZ1
bm5lbHMgdGhlIG1lc3NhZ2VzIHRocm91Z2ggdGhlIFdlYlBhZ2VQcm94eS4KKyAgICAgICAgUmV0
dXJuaW5nIG1lc3NhZ2VzIGFyZSBkZXNpZ25hdGVkIGJ5IF9XS0ZpbmREZWxlZ2F0ZSBwcm90b2Nv
bC4KKyAgICAgICAgQWxzbyBwcm92aWRlIEZpbmREZWxlZ2F0ZSBhY2Nlc3Mgb24gV0tXZWJWaWV3
LgorICAgICAgICBXZWJQYWdlUHJveHkgZ2V0cyBhIG5ldy1zdHlsZSBBUEk6OkZpbmRDbGllbnQu
CisgICAgICAgIEFsc28gaGFkIHRvIHJlcGxpY2F0ZSBXS0ZpbmRPcHRpb25zIGFzIF9XS0ZpbmRP
cHRpb25zIGluIENvY29hIFNQSS4gVGhpcyBpcyB1bmZvcnR1bmF0ZSwgYnV0IGl0IAorICAgICAg
ICBkb2VzIGZvbGxvdyB0aGUgcGF0dGVybiBvZiBvdGhlciBvcHRpb25zICYgZW51bXMgcmVsYXRl
ZCB0byBjbGFzc2VzIHRoYXQgYXJlIFNQSS1mb3Itbm93LgorICAgICAgICAKKyAgICAgICAgUGFn
ZUNsaWVudEltcGxJT1MgaGFuZGxlcyBzZXRGaW5kSW5kaWNhdG9yIGZ1bmN0aW9uIGJ5IGZvcndh
cmRpbmcgdG8gaXRzIFdLQ29udGVudFZpZXcsIAorICAgICAgICBidXQgV0tDb250ZW50VmlldyBf
c2V0RmluZEluZGljYXRvciByZW1haW5zIHVuaW1wbGVtZW50ZWQgZm9yIG5vdy4KKyAgICAgICAg
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGaW5kQ2xpZW50Lmg6IEFkZGVkLiBuZXcgZ2Vu
ZXJhdGlvbi1zdHlsZSBBUEkgZm9yIEZpbmRDbGllbnQuICBUaGlzIAorICAgICAgICAoQVBJOjpG
aW5kQ2xpZW50Ojp+RmluZENsaWVudCk6CisgICAgICAgIChBUEk6OkZpbmRDbGllbnQ6OmRpZENv
dW50U3RyaW5nTWF0Y2hlcyk6CisgICAgICAgIChBUEk6OkZpbmRDbGllbnQ6OmRpZEZpbmRTdHJp
bmcpOgorICAgICAgICAoQVBJOjpGaW5kQ2xpZW50OjpkaWRGYWlsVG9GaW5kU3RyaW5nKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNldFBh
Z2VGaW5kQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGluaXRXaXRoRnJhbWU6Y29uZmlndXJhdGlvbjpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9maW5kRGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9zZXRGaW5kRGVsZWdhdGU6XSk6CisgICAgICAgICh0b0ZpbmRPcHRpb25zKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9jb3VudFN0cmluZ01hdGNoZXM6b3B0aW9uczptYXhDb3VudDpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9maW5kU3RyaW5nOm9wdGlvbnM6bWF4Q291bnQ6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfaGlkZUZpbmRVSV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X2hvc3RGb3JGaW5kVUldKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGUuaDoKKyAgICAgICAgKE5TX09QVElPTlMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLRmluZERlbGVnYXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9GaW5kQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9GaW5k
Q2xpZW50Lm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6RmluZENsaWVudDo6RmluZENsaWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OkZpbmRDbGllbnQ6OmRlbGVnYXRlKToKKyAgICAgICAgKFdl
YktpdDo6RmluZENsaWVudDo6c2V0RGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ2xp
ZW50OjpkaWRDb3VudFN0cmluZ01hdGNoZXMpOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ2xpZW50
OjpkaWRGaW5kU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6RmluZENsaWVudDo6ZGlkRmFpbFRv
RmluZFN0cmluZyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpzZXRGaW5kQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ291bnRT
dHJpbmdNYXRjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGaW5kU3Ry
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGYWlsVG9GaW5kU3RyaW5n
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppbml0aWFsaXplRmluZENsaWVudCk6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmZpbmRDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBs
OjpzZXRGaW5kSW5kaWNhdG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgX3NldEZpbmRJbmRpY2F0b3I6V2ViS2l0OjpmYWRlT3V0OmFuaW1h
dGU6XSk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAy
MDE0LTAzLTMxICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIGEgbmV3IC1bV0tQcmVmZXJlbmNlcyBpbml0V2l0aFVzZXJEZWZhdWx0c1ByZWZpeEtl
eTpdIGluaXRpYWxpemVyCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAkocmV2aXNpb24gMTY2MjU2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRl
ICJXZWJQYWdlUHJveHkuaCIKIAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCisjaW5jbHVkZSAiQVBJ
RmluZENsaWVudC5oIgogI2luY2x1ZGUgIkFQSUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkFQ
SVBvbGljeUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSVVJQ2xpZW50LmgiCkBAIC0yNTcsNiArMjU4
LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcAogICAgICwgbV9s
b2FkZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkxvYWRlckNsaWVudD4oKSkKICAgICAs
IG1fcG9saWN5Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpQb2xpY3lDbGllbnQ+KCkpCiAg
ICAgLCBtX3VpQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpVSUNsaWVudD4oKSkKKyAgICAs
IG1fZmluZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZENsaWVudD4oKSkKICAgICAs
IG1fcHJvY2Vzcyhwcm9jZXNzKQogICAgICwgbV9wYWdlR3JvdXAoKmNvbmZpZ3VyYXRpb24ucGFn
ZUdyb3VwKQogICAgICwgbV9wcmVmZXJlbmNlcygqY29uZmlndXJhdGlvbi5wcmVmZXJlbmNlcykK
QEAgLTQ3MSw5ICs0NzMsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVJQ2xpZW50KHN0ZDo6
dW5pcQogICAgIHNldENhblJ1bk1vZGFsKG1fdWlDbGllbnQtPmNhblJ1bk1vZGFsKCkpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZUZpbmRDbGllbnQoY29uc3QgV0tQYWdlRmlu
ZENsaWVudEJhc2UqIGNsaWVudCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaW5kQ2xpZW50KHN0
ZDo6dW5pcXVlX3B0cjxBUEk6OkZpbmRDbGllbnQ+IGZpbmRDbGllbnQpCiB7Ci0gICAgbV9maW5k
Q2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKKyAgICBpZiAoIWZpbmRDbGllbnQpIHsKKyAgICAg
ICAgbV9maW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZpbmRDbGllbnQ+KCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgbV9maW5kQ2xpZW50ID0gc3RkOjptb3Zl
KGZpbmRDbGllbnQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZUZpbmRNYXRj
aGVzQ2xpZW50KGNvbnN0IFdLUGFnZUZpbmRNYXRjaGVzQ2xpZW50QmFzZSogY2xpZW50KQpAQCAt
NTk5LDcgKzYwNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCiAjaWYgUExBVEZPUk0o
RUZMKQogICAgIG1fdWlQb3B1cE1lbnVDbGllbnQuaW5pdGlhbGl6ZSgwKTsKICNlbmRpZgotICAg
IG1fZmluZENsaWVudC5pbml0aWFsaXplKDApOworICAgIG1fZmluZENsaWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpOwogICAgIG1fZmluZE1hdGNoZXNDbGllbnQuaW5p
dGlhbGl6ZSgwKTsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBtX2NvbnRleHRNZW51
Q2xpZW50LmluaXRpYWxpemUoMCk7CkBAIC0zMTYyLDcgKzMxNjksNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6Y2xlYXJBbGxFZGl0Q29tbWFuZHMoCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb3Vu
dFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVpbnQzMl90IG1hdGNoQ291bnQp
CiB7Ci0gICAgbV9maW5kQ2xpZW50LmRpZENvdW50U3RyaW5nTWF0Y2hlcyh0aGlzLCBzdHJpbmcs
IG1hdGNoQ291bnQpOworICAgIG1fZmluZENsaWVudC0+ZGlkQ291bnRTdHJpbmdNYXRjaGVzKHRo
aXMsIHN0cmluZywgbWF0Y2hDb3VudCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRHZXRJ
bWFnZUZvckZpbmRNYXRjaChjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgY29udGVudElt
YWdlSGFuZGxlLCB1aW50MzJfdCBtYXRjaEluZGV4KQpAQCAtMzE3OCw3ICszMTg1LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNldEZpbmRJbmRpY2F0b3IoY29ucwogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkRmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgdWludDMyX3QgbWF0Y2hDb3Vu
dCkKIHsKLSAgICBtX2ZpbmRDbGllbnQuZGlkRmluZFN0cmluZyh0aGlzLCBzdHJpbmcsIG1hdGNo
Q291bnQpOworICAgIG1fZmluZENsaWVudC0+ZGlkRmluZFN0cmluZyh0aGlzLCBzdHJpbmcsIG1h
dGNoQ291bnQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluZFN0cmluZ01hdGNoZXMo
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIFZlY3RvcjxWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4+IG1h
dGNoUmVjdHMsIGludDMyX3QgZmlyc3RJbmRleEFmdGVyU2VsZWN0aW9uKQpAQCAtMzIwMSw3ICsz
MjA4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmRTdHJpbmdNYXRjaGVzKAogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFRvRmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykK
IHsKLSAgICBtX2ZpbmRDbGllbnQuZGlkRmFpbFRvRmluZFN0cmluZyh0aGlzLCBzdHJpbmcpOwor
ICAgIG1fZmluZENsaWVudC0+ZGlkRmFpbFRvRmluZFN0cmluZyh0aGlzLCBzdHJpbmcpOwogfQog
CiBib29sIFdlYlBhZ2VQcm94eTo6c2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPElQQzo6TWVz
c2FnZUVuY29kZXI+IGVuY29kZXIsIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MpCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAxNjYyNTYpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwNCw2ICsxMDQsNyBAQAogI2VuZGlmCiAKIG5hbWVzcGFjZSBBUEkgeworY2xhc3MgRmlu
ZENsaWVudDsKIGNsYXNzIExvYWRlckNsaWVudDsKIGNsYXNzIFBvbGljeUNsaWVudDsKIGNsYXNz
IFVJQ2xpZW50OwpAQCAtNDc2LDcgKzQ3Nyw4IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQ09OVEVY
VF9NRU5VUykKICAgICB2b2lkIGluaXRpYWxpemVDb250ZXh0TWVudUNsaWVudChjb25zdCBXS1Bh
Z2VDb250ZXh0TWVudUNsaWVudEJhc2UqKTsKICNlbmRpZgotICAgIHZvaWQgaW5pdGlhbGl6ZUZp
bmRDbGllbnQoY29uc3QgV0tQYWdlRmluZENsaWVudEJhc2UqKTsKKyAgICBBUEk6OkZpbmRDbGll
bnQmIGZpbmRDbGllbnQoKSB7IHJldHVybiAqbV9maW5kQ2xpZW50OyB9CisgICAgdm9pZCBzZXRG
aW5kQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZpbmRDbGllbnQ+KTsKICAgICB2b2lkIGlu
aXRpYWxpemVGaW5kTWF0Y2hlc0NsaWVudChjb25zdCBXS1BhZ2VGaW5kTWF0Y2hlc0NsaWVudEJh
c2UqKTsKICAgICB2b2lkIGluaXRpYWxpemVGb3JtQ2xpZW50KGNvbnN0IFdLUGFnZUZvcm1DbGll
bnRCYXNlKik7CiAgICAgdm9pZCBzZXRMb2FkZXJDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6
TG9hZGVyQ2xpZW50Pik7CkBAIC0xMzY2LDcgKzEzNjgsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRG
T1JNKEVGTCkKICAgICBXZWJVSVBvcHVwTWVudUNsaWVudCBtX3VpUG9wdXBNZW51Q2xpZW50Owog
I2VuZGlmCi0gICAgV2ViRmluZENsaWVudCBtX2ZpbmRDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEFQSTo6RmluZENsaWVudD4gbV9maW5kQ2xpZW50OwogICAgIFdlYkZpbmRNYXRjaGVzQ2xp
ZW50IG1fZmluZE1hdGNoZXNDbGllbnQ7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAg
V2ViUGFnZUNvbnRleHRNZW51Q2xpZW50IG1fY29udGV4dE1lbnVDbGllbnQ7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUZpbmRDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUZpbmRDbGllbnQuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJRmluZENsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFQSUZpbmRDbGll
bnRfaAorI2RlZmluZSBBUElGaW5kQ2xpZW50X2gKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlBhZ2VQcm94eTsKK30KKwor
bmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIEZpbmRDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1
YWwgfkZpbmRDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRDb3VudFN0cmluZ01h
dGNoZXMoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIHVpbnQzMl90
IG1hdGNoQ291bnQpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5kU3RyaW5nKFdlYktpdDo6
V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCB1aW50MzJfdCBtYXRjaENvdW50KSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFRvRmluZFN0cmluZyhXZWJLaXQ6OldlYlBhZ2VQ
cm94eSosIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBBUEkK
KworI2VuZGlmIC8vIEFQSUZpbmRDbGllbnRfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHJldmlzaW9uIDE2NjI1NikKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3
IEBACiAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkFQSURhdGEuaCIKKyNpbmNs
dWRlICJBUElGaW5kQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJTG9hZGVyQ2xpZW50LmgiCiAjaW5j
bHVkZSAiQVBJUG9saWN5Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJVUlDbGllbnQuaCIKQEAgLTY3
Niw3ICs2NzcsNDAgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVDbGllbnQoV0tQYQog
CiB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBX
S1BhZ2VGaW5kQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5p
bml0aWFsaXplRmluZENsaWVudCh3a0NsaWVudCk7CisgICAgY2xhc3MgRmluZENsaWVudCA6IHB1
YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VGaW5kQ2xpZW50QmFzZT4sIHB1YmxpYyBBUEk6OkZpbmRD
bGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgRmluZENsaWVudChjb25zdCBX
S1BhZ2VGaW5kQ2xpZW50QmFzZSogY2xpZW50KQorICAgICAgICB7CisgICAgICAgICAgICBpbml0
aWFsaXplKGNsaWVudCk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRGaW5kU3RyaW5nKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgU3RyaW5nJiBz
dHJpbmcsIHVpbnQzMl90IG1hdGNoQ291bnQpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICghbV9jbGllbnQuZGlkRmluZFN0cmluZykKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZEZpbmRTdHJpbmcodG9BUEko
cGFnZSksIHRvQVBJKHN0cmluZy5pbXBsKCkpLCBtYXRjaENvdW50LCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxUb0Zp
bmRTdHJpbmcoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIHN0cmluZykgb3ZlcnJp
ZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRGYWlsVG9GaW5kU3Ry
aW5nKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
bV9jbGllbnQuZGlkRmFpbFRvRmluZFN0cmluZyh0b0FQSShwYWdlKSwgdG9BUEkoc3RyaW5nLmlt
cGwoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ291bnRTdHJpbmdNYXRjaGVzKFdlYlBhZ2VQcm94eSogcGFnZSwgY29u
c3QgU3RyaW5nJiBzdHJpbmcsIHVpbnQzMl90IG1hdGNoQ291bnQpIG92ZXJyaWRlCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmIChtX2NsaWVudC5kaWRDb3VudFN0cmluZ01hdGNoZXMpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBtX2NsaWVudC5k
aWRDb3VudFN0cmluZ01hdGNoZXModG9BUEkocGFnZSksIHRvQVBJKHN0cmluZy5pbXBsKCkpLCBt
YXRjaENvdW50LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisgICAgfTsK
KworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RmluZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEZp
bmRDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRNYXRjaGVz
Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5kTWF0Y2hlc0NsaWVudEJh
c2UqIHdrQ2xpZW50KQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDE2NjI1NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpZiBXS19BUElfRU5BQkxFRAogCisjaW1wb3J0ICJGaW5kQ2xpZW50LmgiCiAj
aW1wb3J0ICJOYXZpZ2F0aW9uU3RhdGUuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uLmgiCiAjaW1wb3J0ICJSZW1vdGVPYmplY3RSZWdpc3RyeS5oIgpAQCAtNTQsNiArNTUs
NyBAQAogI2ltcG9ydCAiV2ViUGFnZUdyb3VwLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIK
ICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgorI2ltcG9ydCAiX1dLRmluZERlbGVnYXRlLmgi
CiAjaW1wb3J0ICJfV0tWaXNpdGVkTGlua1Byb3ZpZGVySW50ZXJuYWwuaCIKICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KIApAQCAtMTkzLDkgKzE5NSw4IEBAIC0gKGluc3RhbmNldHlwZSlpbml0
V2l0aEZyYW1lOihDR1JlY3QpZnIKICAgICBfbmF2aWdhdGlvblN0YXRlID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZT4oc2VsZik7CiAgICAgX3BhZ2UtPnNldFBvbGlj
eUNsaWVudChfbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVQb2xpY3lDbGllbnQoKSk7CiAgICAgX3Bh
Z2UtPnNldExvYWRlckNsaWVudChfbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVMb2FkZXJDbGllbnQo
KSk7Ci0KICAgICBfcGFnZS0+c2V0VUlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlVJ
Q2xpZW50PihzZWxmKSk7Ci0KKyAgICBfcGFnZS0+c2V0RmluZENsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPFdlYktpdDo6RmluZENsaWVudD4oc2VsZikpOwogICAgIHJldHVybiBzZWxmOwogfQogCkBA
IC0xMDQ5LDYgKzEwNTAsNTUgQEAgLSAodm9pZClfc2V0UGFnZVpvb21GYWN0b3I6KGRvdWJsZSl6
b29tRgogICAgIF9wYWdlLT5zZXRQYWdlWm9vbUZhY3Rvcih6b29tRmFjdG9yKTsKIH0KIAorLSAo
aWQgPF9XS0ZpbmREZWxlZ2F0ZT4pX2ZpbmREZWxlZ2F0ZQoreworICAgIHJldHVybiBbc3RhdGlj
X2Nhc3Q8V2ViS2l0OjpGaW5kQ2xpZW50Jj4oX3BhZ2UtPmZpbmRDbGllbnQoKSkuZGVsZWdhdGUo
KS5sZWFrUmVmKCkgYXV0b3JlbGVhc2VdOworfQorCistICh2b2lkKV9zZXRGaW5kRGVsZWdhdGU6
KGlkPF9XS0ZpbmREZWxlZ2F0ZT4pZmluZERlbGVnYXRlCit7CisgICAgc3RhdGljX2Nhc3Q8V2Vi
S2l0OjpGaW5kQ2xpZW50Jj4oX3BhZ2UtPmZpbmRDbGllbnQoKSkuc2V0RGVsZWdhdGUoZmluZERl
bGVnYXRlKTsKK30KKworc3RhdGljIGlubGluZSBXZWJLaXQ6OkZpbmRPcHRpb25zIHRvRmluZE9w
dGlvbnMoX1dLRmluZE9wdGlvbnMgd2tGaW5kT3B0aW9ucykKK3sKKyAgICB1bnNpZ25lZCBmaW5k
T3B0aW9ucyA9IDA7CisKKyAgICBpZiAod2tGaW5kT3B0aW9ucyAmIF9XS0ZpbmRPcHRpb25zQ2Fz
ZUluc2Vuc2l0aXZlKQorICAgICAgICBmaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRpb25z
Q2FzZUluc2Vuc2l0aXZlOworICAgIGlmICh3a0ZpbmRPcHRpb25zICYgX1dLRmluZE9wdGlvbnNB
dFdvcmRTdGFydHMpCisgICAgICAgIGZpbmRPcHRpb25zIHw9IFdlYktpdDo6RmluZE9wdGlvbnNB
dFdvcmRTdGFydHM7CisgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBfV0tGaW5kT3B0aW9uc1RyZWF0
TWVkaWFsQ2FwaXRhbEFzV29yZFN0YXJ0KQorICAgICAgICBmaW5kT3B0aW9ucyB8PSBXZWJLaXQ6
OkZpbmRPcHRpb25zVHJlYXRNZWRpYWxDYXBpdGFsQXNXb3JkU3RhcnQ7CisgICAgaWYgKHdrRmlu
ZE9wdGlvbnMgJiBfV0tGaW5kT3B0aW9uc0JhY2t3YXJkcykKKyAgICAgICAgZmluZE9wdGlvbnMg
fD0gV2ViS2l0OjpGaW5kT3B0aW9uc0JhY2t3YXJkczsKKyAgICBpZiAod2tGaW5kT3B0aW9ucyAm
IF9XS0ZpbmRPcHRpb25zV3JhcEFyb3VuZCkKKyAgICAgICAgZmluZE9wdGlvbnMgfD0gV2ViS2l0
OjpGaW5kT3B0aW9uc1dyYXBBcm91bmQ7CisgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBfV0tGaW5k
T3B0aW9uc1Nob3dPdmVybGF5KQorICAgICAgICBmaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRP
cHRpb25zU2hvd092ZXJsYXk7CisgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBfV0tGaW5kT3B0aW9u
c1Nob3dGaW5kSW5kaWNhdG9yKQorICAgICAgICBmaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRP
cHRpb25zU2hvd0ZpbmRJbmRpY2F0b3I7CisgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBfV0tGaW5k
T3B0aW9uc1Nob3dIaWdobGlnaHQpCisgICAgICAgIGZpbmRPcHRpb25zIHw9IFdlYktpdDo6Rmlu
ZE9wdGlvbnNTaG93SGlnaGxpZ2h0OworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYktpdDo6
RmluZE9wdGlvbnM+KGZpbmRPcHRpb25zKTsKK30KKworLSAodm9pZClfY291bnRTdHJpbmdNYXRj
aGVzOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25zOihfV0tGaW5kT3B0aW9ucylvcHRpb25zIG1h
eENvdW50OihOU1VJbnRlZ2VyKW1heENvdW50Cit7CisgICAgX3BhZ2UtPmNvdW50U3RyaW5nTWF0
Y2hlcyhzdHJpbmcsIHRvRmluZE9wdGlvbnMob3B0aW9ucyksIG1heENvdW50KTsKK30KKworLSAo
dm9pZClfZmluZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9uczooX1dLRmluZE9wdGlv
bnMpb3B0aW9ucyBtYXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudAoreworICAgIF9wYWdlLT5m
aW5kU3RyaW5nKHN0cmluZywgdG9GaW5kT3B0aW9ucyhvcHRpb25zKSwgbWF4Q291bnQpOworfQor
CistICh2b2lkKV9oaWRlRmluZFVJCit7CisgICAgX3BhZ2UtPmhpZGVGaW5kVUkoKTsKK30KKwog
I3ByYWdtYSBtYXJrIGlPUy1zcGVjaWZpYyBtZXRob2RzCiAKICNpZiBQTEFURk9STShJT1MpCkBA
IC0xMTM5LDYgKzExODksMTEgQEAgLSAodm9pZClfc25hcHNob3RSZWN0OihDR1JlY3QpcmVjdElu
VmlldwogICAgIH0pOwogfQogCistIChVSVZpZXcgKilfaG9zdEZvckZpbmRVSQoreworICAgIHJl
dHVybiBbc2VsZiB2aWV3Rm9yWm9vbWluZ0luU2Nyb2xsVmlldzpbc2VsZiBzY3JvbGxWaWV3XV07
Cit9CisKICNlbHNlCiAKICNwcmFnbWEgbWFyayAtIE9TIFgtc3BlY2lmaWMgbWV0aG9kcwpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmgJKHJldmlzaW9uIDE2NjI1NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw5ICs0
MCwyMSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tQYWdpbmF0aW9uCiAgICAgX1dL
UGFnaW5hdGlvbk1vZGVCb3R0b21Ub1RvcCwKIH07CiAKK3R5cGVkZWYgTlNfT1BUSU9OUyhOU1VJ
bnRlZ2VyLCBfV0tGaW5kT3B0aW9ucykgeworICAgIF9XS0ZpbmRPcHRpb25zQ2FzZUluc2Vuc2l0
aXZlID0gMSA8PCAwLAorICAgIF9XS0ZpbmRPcHRpb25zQXRXb3JkU3RhcnRzID0gMSA8PCAxLAor
ICAgIF9XS0ZpbmRPcHRpb25zVHJlYXRNZWRpYWxDYXBpdGFsQXNXb3JkU3RhcnQgPSAxIDw8IDIs
CisgICAgX1dLRmluZE9wdGlvbnNCYWNrd2FyZHMgPSAxIDw8IDMsCisgICAgX1dLRmluZE9wdGlv
bnNXcmFwQXJvdW5kID0gMSA8PCA0LAorICAgIF9XS0ZpbmRPcHRpb25zU2hvd092ZXJsYXkgPSAx
IDw8IDUsCisgICAgX1dLRmluZE9wdGlvbnNTaG93RmluZEluZGljYXRvciA9IDEgPDwgNiwKKyAg
ICBfV0tGaW5kT3B0aW9uc1Nob3dIaWdobGlnaHQgPSAxIDw8IDcsCit9OworCiBAY2xhc3MgV0tC
cm93c2luZ0NvbnRleHRIYW5kbGU7CiBAY2xhc3MgV0tSZW1vdGVPYmplY3RSZWdpc3RyeTsKIEBw
cm90b2NvbCBXS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGU7CitAcHJvdG9jb2wgX1dLRmluZERlbGVn
YXRlOwogCiBAaW50ZXJmYWNlIFdLV2ViVmlldyAoV0tQcml2YXRlKQogCkBAIC05MSw2ICsxMDMs
OSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tQYWdpbmF0aW9uCiAtICh2b2lkKV9l
bmRJbnRlcmFjdGl2ZU9ic2N1cmVkSW5zZXRzQ2hhbmdlOwogCiAtICh2b2lkKV9zbmFwc2hvdFJl
Y3Q6KENHUmVjdClyZWN0SW5WaWV3Q29vcmRpbmF0ZXMgaW50b0ltYWdlT2ZXaWR0aDooQ0dGbG9h
dClpbWFnZVdpZHRoIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKENHSW1hZ2VSZWYpKWNvbXBs
ZXRpb25IYW5kbGVyOworCistIChVSVZpZXcgKilfaG9zdEZvckZpbmRVSTsKKwogI2Vsc2UKIEBw
cm9wZXJ0eSAocmVhZG9ubHkpIE5TQ29sb3IgKl9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXREcmF3c1RyYW5zcGFyZW50QmFja2dy
b3VuZDopIEJPT0wgX2RyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kOwpAQCAtMTEyLDYgKzEyNywx
MSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tQYWdpbmF0aW9uCiBAcHJvcGVydHkg
KG5vbmF0b21pYywgc2V0dGVyPV9zZXRUZXh0Wm9vbUZhY3RvcjopIGRvdWJsZSBfdGV4dFpvb21G
YWN0b3I7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRQYWdlWm9vbUZhY3Rvcjop
IGRvdWJsZSBfcGFnZVpvb21GYWN0b3I7CiAKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBz
ZXR0ZXI9X3NldEZpbmREZWxlZ2F0ZTopIGlkIDxfV0tGaW5kRGVsZWdhdGU+IF9maW5kRGVsZWdh
dGU7CistICh2b2lkKV9maW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25zOihfV0tG
aW5kT3B0aW9ucylvcHRpb25zIG1heENvdW50OihOU1VJbnRlZ2VyKW1heENvdW50OworLSAodm9p
ZClfY291bnRTdHJpbmdNYXRjaGVzOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25zOihfV0tGaW5k
T3B0aW9ucylvcHRpb25zIG1heENvdW50OihOU1VJbnRlZ2VyKW1heENvdW50OworLSAodm9pZClf
aGlkZUZpbmRVSTsKKwogQGVuZAogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLRmluZERlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tGaW5kRGVsZWdhdGUuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRmluZERlbGVnYXRlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdl
YktpdDIvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0IDxG
b3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworQHByb3RvY29sIF9XS0ZpbmREZWxlZ2F0ZSA8TlNP
YmplY3Q+CisKK0BvcHRpb25hbAorCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IGRpZENvdW50TWF0Y2hlczooTlNVSW50ZWdlciltYXRjaGVzIGZvclN0cmluZzooTlNTdHJp
bmcgKilzdHJpbmc7CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZp
bmRNYXRjaGVzOihOU1VJbnRlZ2VyKW1hdGNoZXMgZm9yU3RyaW5nOihOU1N0cmluZyAqKXN0cmlu
ZzsKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmFpbFRvRmluZFN0
cmluZzooTlNTdHJpbmcgKilzdHJpbmc7CisKK0BlbmQKKworI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvRmluZENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9GaW5kQ2xpZW50LmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvRmluZENsaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZpbmRDbGllbnRfaAorI2Rl
ZmluZSBGaW5kQ2xpZW50X2gKKworI2ltcG9ydCAiV0tGb3VuZGF0aW9uLmgiCisKKyNpZiBXS19B
UElfRU5BQkxFRAorCisjaW1wb3J0ICJBUElGaW5kQ2xpZW50LmgiCisjaW1wb3J0ICJXZWFrT2Jq
Q1B0ci5oIgorCitAY2xhc3MgV0tXZWJWaWV3OworQHByb3RvY29sIF9XS0ZpbmREZWxlZ2F0ZTsK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEZpbmRDbGllbnQgZmluYWwgOiBwdWJsaWMg
QVBJOjpGaW5kQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBGaW5kQ2xpZW50KFdLV2Vi
VmlldyAqKTsKKyAgICAKKyAgICBSZXRhaW5QdHI8aWQgPF9XS0ZpbmREZWxlZ2F0ZT4gPiBkZWxl
Z2F0ZSgpOworICAgIHZvaWQgc2V0RGVsZWdhdGUoaWQgPF9XS0ZpbmREZWxlZ2F0ZT4pOworICAg
IAorcHJpdmF0ZToKKyAgICAvLyBGcm9tIEFQSTo6RmluZENsaWVudAorICAgIHZpcnR1YWwgdm9p
ZCBkaWRDb3VudFN0cmluZ01hdGNoZXMoV2ViUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiBzdHJp
bmcsIHVpbnQzMl90IG1hdGNoQ291bnQpOworICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5kU3RyaW5n
KFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1aW50MzJfdCBtYXRjaENvdW50
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFRvRmluZFN0cmluZyhXZWJQYWdlUHJveHkqLCBj
b25zdCBTdHJpbmcmIHN0cmluZyk7CisgICAgCisgICAgV0tXZWJWaWV3ICptX3dlYlZpZXc7Cisg
ICAgV2Vha09iakNQdHI8aWQgPF9XS0ZpbmREZWxlZ2F0ZT4gPiBtX2RlbGVnYXRlOworICAgIAor
ICAgIHN0cnVjdCB7CisgICAgICAgIGJvb2wgd2Vidmlld0RpZENvdW50U3RyaW5nTWF0Y2hlcyA6
IDE7CisgICAgICAgIGJvb2wgd2Vidmlld0RpZEZpbmRTdHJpbmcgOiAxOworICAgICAgICBib29s
IHdlYnZpZXdEaWRGYWlsVG9GaW5kU3RyaW5nIDogMTsKKyAgICB9IG1fZGVsZWdhdGVNZXRob2Rz
OworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV0tfQVBJX0VO
QUJMRUQKKworI2VuZGlmIC8vIEZpbmRDbGllbnRfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL0ZpbmRDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL0ZpbmRDbGllbnQubW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvRmluZENsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJGaW5k
Q2xpZW50LmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJfV0tGaW5kRGVsZWdh
dGUuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0ZpbmRDbGllbnQ6OkZpbmRDbGllbnQoV0tX
ZWJWaWV3ICp3ZWJWaWV3KQorICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCit7Cit9CisgICAgCitS
ZXRhaW5QdHI8aWQgPF9XS0ZpbmREZWxlZ2F0ZT4gPiBGaW5kQ2xpZW50OjpkZWxlZ2F0ZSgpCit7
CisgICAgcmV0dXJuIG1fZGVsZWdhdGUuZ2V0KCk7Cit9CisKK3ZvaWQgRmluZENsaWVudDo6c2V0
RGVsZWdhdGUoaWQgPF9XS0ZpbmREZWxlZ2F0ZT4gZGVsZWdhdGUpCit7CisgICAgbV9kZWxlZ2F0
ZSA9IGRlbGVnYXRlOworCisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2Vidmlld0RpZENvdW50U3Ry
aW5nTWF0Y2hlcyA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJW
aWV3OmRpZENvdW50TWF0Y2hlczpmb3JTdHJpbmc6KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMu
d2Vidmlld0RpZEZpbmRTdHJpbmcgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcihfd2ViVmlldzpkaWRGaW5kTWF0Y2hlczpmb3JTdHJpbmc6KV07CisgICAgbV9kZWxlZ2F0
ZU1ldGhvZHMud2Vidmlld0RpZEZhaWxUb0ZpbmRTdHJpbmcgPSBbZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWRGYWlsVG9GaW5kU3RyaW5nOildOworfQor
ICAgIAordm9pZCBGaW5kQ2xpZW50OjpkaWRDb3VudFN0cmluZ01hdGNoZXMoV2ViUGFnZVByb3h5
KiwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVpbnQzMl90IG1hdGNoQ291bnQpCit7CisgICAgaWYg
KG1fZGVsZWdhdGVNZXRob2RzLndlYnZpZXdEaWRDb3VudFN0cmluZ01hdGNoZXMpCisgICAgICAg
IFttX2RlbGVnYXRlLmdldCgpIF93ZWJWaWV3Om1fd2ViVmlldyBkaWRDb3VudE1hdGNoZXM6bWF0
Y2hDb3VudCBmb3JTdHJpbmc6c3RyaW5nXTsKK30KKwordm9pZCBGaW5kQ2xpZW50OjpkaWRGaW5k
U3RyaW5nKFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1aW50MzJfdCBtYXRj
aENvdW50KQoreworICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy53ZWJ2aWV3RGlkRmluZFN0cmlu
ZykKKyAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX3dlYlZpZXc6bV93ZWJWaWV3IGRpZEZpbmRN
YXRjaGVzOm1hdGNoQ291bnQgZm9yU3RyaW5nOnN0cmluZ107Cit9CisKK3ZvaWQgRmluZENsaWVu
dDo6ZGlkRmFpbFRvRmluZFN0cmluZyhXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmIHN0cmlu
ZykKK3sKKyAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMud2Vidmlld0RpZEZhaWxUb0ZpbmRTdHJp
bmcpCisgICAgICAgIFttX2RlbGVnYXRlLmdldCgpIF93ZWJWaWV3Om1fd2ViVmlldyBkaWRGYWls
VG9GaW5kU3RyaW5nOnN0cmluZ107Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQkocmV2aXNpb24gMTY2MjU2KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjksNiArMjksNyBAQAogI2lmIFBMQVRGT1JNKElPUykKIAogI2ltcG9ydCAiRGF0YVJl
ZmVyZW5jZS5oIgorI2ltcG9ydCAiRmluZEluZGljYXRvci5oIgogI2ltcG9ydCAiTmF0aXZlV2Vi
S2V5Ym9hcmRFdmVudC5oIgogI2ltcG9ydCAiSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRp
b24uaCIKICNpbXBvcnQgIldLQ29udGVudFZpZXcuaCIKQEAgLTI5NCw5ICsyOTUsOSBAQCBQYXNz
UmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllCiAgICAgcmV0dXJuIDA7CiB9CiAK
LXZvaWQgUGFnZUNsaWVudEltcGw6OnNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5k
aWNhdG9yPiwgYm9vbCwgYm9vbCkKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNldEZpbmRJbmRpY2F0
b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNhdG9yPiBmaW5kSW5kaWNhdG9yLCBib29sIGZhZGVPdXQs
IGJvb2wgYW5pbWF0ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIFttX2NvbnRlbnRW
aWV3IF9zZXRGaW5kSW5kaWNhdG9yOmZpbmRJbmRpY2F0b3IgZmFkZU91dDpmYWRlT3V0IGFuaW1h
dGU6YW5pbWF0ZV07CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OmVudGVyQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oCShy
ZXZpc2lvbiAxNjYyNTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIGNsYXNzIERyYXdpbmdBcmVhUHJveHk7CitjbGFzcyBGaW5kSW5kaWNhdG9yOwogY2xh
c3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5OwogY2xhc3MgUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb247CiBjbGFzcyBXZWJDb250ZXh0OwpAQCAtODMsNCArODQsNiBAQCBzdHJ1
Y3QgV2ViUGFnZUNvbmZpZ3VyYXRpb247CiAtIChCT09MKV96b29tVG9SZWN0OihDR1JlY3QpdGFy
Z2V0UmVjdCB3aXRoT3JpZ2luOihDR1BvaW50KW9yaWdpbiBmaXRFbnRpcmVSZWN0OihCT09MKWZp
dEVudGlyZVJlY3QgbWluaW11bVNjYWxlOihkb3VibGUpbWluaW11bVNjYWxlIG1heGltdW1TY2Fs
ZTooZG91YmxlKW1heGltdW1TY2FsZSBtaW5pbXVtU2Nyb2xsRGlzdGFuY2U6KENHRmxvYXQpbWlu
aW11bVNjcm9sbERpc3RhbmNlOwogLSAodm9pZClfem9vbU91dFdpdGhPcmlnaW46KENHUG9pbnQp
b3JpZ2luOwogCistICh2b2lkKV9zZXRGaW5kSW5kaWNhdG9yOihQYXNzUmVmUHRyPFdlYktpdDo6
RmluZEluZGljYXRvcj4pZmluZEluZGljYXRvciBmYWRlT3V0OihCT09MKWZhZGVPdXQgYW5pbWF0
ZTooQk9PTClhbmltYXRlOworCiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCShyZXZpc2lvbiAxNjYyNTYpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDYgKzQ3LDcgQEAKICNpbXBvcnQgIldlYlN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCAiV2Vi
S2l0U3lzdGVtSW50ZXJmYWNlSU9TLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgor
I2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2ltcG9ydCA8VUlLaXQvVUlXaW5k
b3dfUHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CkBAIC00MjUsNiArNDI2LDExIEBAIC0gKHZvaWQpX2FwcGxpY2F0aW9uRGlk
QmVjb21lQWN0aXZlOihOU04KICAgICBfcGFnZS0+YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUo
KTsKIH0KIAorLSAodm9pZClfc2V0RmluZEluZGljYXRvcjooUGFzc1JlZlB0cjxXZWJLaXQ6OkZp
bmRJbmRpY2F0b3I+KWZpbmRJbmRpY2F0b3IgZmFkZU91dDooQk9PTClmYWRlT3V0IGFuaW1hdGU6
KEJPT0wpYW5pbWF0ZQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIEBlbmQKIAogI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2NjI1NikKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtNDcsNiArNDcsMTAgQEAKIC8qIEVuZCBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLwog
CiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCQkwMDVEMTU4RjE4RTRDNEVCMDA3
MzQ2MTkgLyogX1dLRmluZERlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwMDVEMTU4RTE4RTRDNEVCMDA3MzQ2MTkgLyogX1dLRmluZERlbGVn
YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MDBCOTY2MTYxOEUyNENCQTAwQ0UxRjg4IC8qIEFQSUZpbmRDbGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwQjk2NjE1MThFMjRDQkEwMENFMUY4
OCAvKiBBUElGaW5kQ2xpZW50LmggKi87IH07CisJCTAwQjk2NjE5MThFMjVBRTEwMENFMUY4OCAv
KiBGaW5kQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDBCOTY2MTcxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQubW0gKi87IH07CisJ
CTAwQjk2NjFBMThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMEI5NjYxODE4RTI1QUUxMDBDRTFGODgg
LyogRmluZENsaWVudC5oICovOyB9OwogCQkwRjBDMzY1ODE4QzA1MUJBMDBGNjA3RDcgLyogUmVt
b3RlTGF5ZXJUcmVlSG9zdElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMEMzNjU3MThDMDUxQkEwMEY2MDdENyAvKiBSZW1vdGVMYXllclRyZWVI
b3N0SU9TLm1tICovOyB9OwogCQkwRjBDMzY1QTE4QzA1NTU4MDBGNjA3RDcgLyogTGF5ZXJSZXBy
ZXNlbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYwQzM2NTkxOEMwNTU1ODAwRjYwN0Q3IC8qIExheWVyUmVwcmVzZW50YXRpb24uaCAqLzsg
fTsKIAkJMEYwQzM2NUMxOEMwNUNBMTAwRjYwN0Q3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5h
dG9yUHJveHlJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjBDMzY1QjE4QzA1Q0ExMDBGNjA3RDcgLyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3JQcm94eUlPUy5tbSAqLzsgfTsKQEAgLTE3NjgsNiArMTc3MiwxMCBAQAogLyogRW5kIFBCWENv
cHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNl
IHNlY3Rpb24gKi8KKwkJMDA1RDE1OEUxOEU0QzRFQjAwNzM0NjE5IC8qIF9XS0ZpbmREZWxlZ2F0
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tGaW5kRGVsZWdhdGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDBCOTY2MTUxOEUyNENCQTAwQ0UxRjg4IC8q
IEFQSUZpbmRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRmlu
ZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwMEI5NjYxNzE4RTI1QUUx
MDBDRTFGODggLyogRmluZENsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEZpbmRDbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTAw
Qjk2NjE4MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZpbmRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDg2N0Q2QTVGRTg0MDMwN0MwMkFBQzA3IC8qIEFwcEtpdC5mcmFtZXdvcmsgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29y
azsgbmFtZSA9IEFwcEtpdC5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBLaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQkw
ODlDMTY2N0ZFODQxMTU4QzAyQUFDMDcgLyogRW5nbGlzaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3Qu
c3RyaW5nczsgbmFtZSA9IEVuZ2xpc2g7IHBhdGggPSBFbmdsaXNoLmxwcm9qL0luZm9QbGlzdC5z
dHJpbmdzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBDMzY1NzE4QzA1MUJBMDBG
NjA3RDcgLyogUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IFJlbW90ZUxheWVyVHJlZUhvc3RJT1MubW07IHBhdGggPSBpb3Mv
UmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTQyMDIsNiArNDIxMCw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlBMURGNjMxMTE4RTBCN0M4
MDAzQTNFMkEgLyogRG93bmxvYWRDbGllbnQuaCAqLywKIAkJCQlBMURGNjMxMDE4RTBCN0M4MDAz
QTNFMkEgLyogRG93bmxvYWRDbGllbnQubW0gKi8sCisJCQkJMDBCOTY2MTgxOEUyNUFFMTAwQ0Ux
Rjg4IC8qIEZpbmRDbGllbnQuaCAqLywKKwkJCQkwMEI5NjYxNzE4RTI1QUUxMDBDRTFGODggLyog
RmluZENsaWVudC5tbSAqLywKIAkJCQkxQTQyMkY4RDE4QjI5QzY0MDBEOENEOTYgLyogSGlzdG9y
eUNsaWVudC5oICovLAogCQkJCTFBNDIyRjhDMThCMjlDNjQwMEQ4Q0Q5NiAvKiBIaXN0b3J5Q2xp
ZW50Lm1tICovLAogCQkJCTBGMEMzNjU5MThDMDU1NTgwMEY2MDdENyAvKiBMYXllclJlcHJlc2Vu
dGF0aW9uLmggKi8sCkBAIC00NTY2LDYgKzQ1NzYsNyBAQAogCQkJCUExQTRGRTU3MThEQ0U5RkEw
MEI1RUE4QSAvKiBfV0tEb3dubG9hZC5oICovLAogCQkJCUExQTRGRTU4MThEQ0U5RkEwMEI1RUE4
QSAvKiBfV0tEb3dubG9hZC5tbSAqLywKIAkJCQlBMUE0RkU2MDE4REQ1NEE0MDBCNUVBOEEgLyog
X1dLRG93bmxvYWREZWxlZ2F0ZS5oICovLAorCQkJCTAwNUQxNThFMThFNEM0RUIwMDczNDYxOSAv
KiBfV0tGaW5kRGVsZWdhdGUuaCAqLywKIAkJCQlBMUE0RkU1OTE4RENFOUZBMDBCNUVBOEEgLyog
X1dLRG93bmxvYWRJbnRlcm5hbC5oICovLAogCQkJCTM3OUE4NzM4MThCQkZFMEYwMDU4OEFGMiAv
KiBfV0tFbGVtZW50QWN0aW9uLmggKi8sCiAJCQkJMzc5QTg3MzcxOEJCRkUwRjAwNTg4QUYyIC8q
IF9XS0VsZW1lbnRBY3Rpb24ubW0gKi8sCkBAIC01NDA2LDYgKzU0MTcsNyBAQAogCQkJCTJEQTk0
NDc3MTg4NEUzQUIwMEVEODZEQiAvKiBpb3MgKi8sCiAJCQkJQkMxMTFCNDcxMTJGNjE2OTAwMzM3
QkFCIC8qIG1hYyAqLywKIAkJCQkxRjdEMzZDMDE4REE1MTNGMDBEOUQ2NTkgLyogQVBJRG93bmxv
YWRDbGllbnQuaCAqLywKKwkJCQkwMEI5NjYxNTE4RTI0Q0JBMDBDRTFGODggLyogQVBJRmluZENs
aWVudC5oICovLAogCQkJCTFBNjYzN0Q2MThCMjgzMUYwMEMwQkNGMyAvKiBBUElIaXN0b3J5Q2xp
ZW50LmggKi8sCiAJCQkJMUEyNDY0RjIxODkxRTQ1MTAwMjM0QzVCIC8qIEFQSUxvYWRlckNsaWVu
dC5oICovLAogCQkJCTFBRkREMzE0MTg5MUI1NDAwMDE1Mzk3MCAvKiBBUElQb2xpY3lDbGllbnQu
aCAqLywKQEAgLTY4MTUsNiArNjgyNyw3IEBACiAJCQkJMUE0MjJGOEIxOEIyOUI1NDAwRDhDRDk2
IC8qIFdLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzcwRjM0
QTcxODI5Q0ZGMzAwOTAyN0M4IC8qIFdLQnJvd3NpbmdDb250ZXh0SGlzdG9yeURlbGVnYXRlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUYwNUQ4NzE0Njg4MzQ4MDA4QjFFODEgLyogVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDBCOTY2MUEx
OEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNjQy
NDVFMTJERTI5QTEwMENBQUUyQyAvKiBVcGRhdGVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0IwQjBFMDEyMzA1QUIxMDBCMTM0MUUgLyogVXNlck1lc3NhZ2VDb2RlcnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBMEYyOUU0MTIwQjQ0NDIwMDUzRDFCOSAvKiBWaXNpdGVkTGlua1Byb3ZpZGVy
LmggaW4gSGVhZGVycyAqLywKQEAgLTY4NTcsNiArNjg3MCw3IEBACiAJCQkJQkMwMzJENzcxMEY0
Mzc4RDAwNThDMTVBIC8qIFdlYkNvbnRleHRNZW51Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3NUU3NDlFQzE4MERCQjk4MDAwODhCQTYgLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eU1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTI5MzVEODEyODhEMTk0MDBBNEI2OTUgLyog
V2ViQ29udGV4dE1lbnVJdGVtLmggaW4gSGVhZGVycyAqLywKKwkJCQkwMEI5NjYxNjE4RTI0Q0JB
MDBDRTFGODggLyogQVBJRmluZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwRkJCOUIx
Mjg4Qzk1RTAwQUZGREY0IC8qIFdlYkNvbnRleHRNZW51SXRlbURhdGEuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxQUNCQjgyMTI3QThCQUQwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUI4QTFGNDE4NDAwQjhGMDBFOUFFNjkgLyogV0tQYWdlRmlu
ZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC03MTUzLDYgKzcxNjcsNyBAQAogCQkJCTdDRDVF
QkI5MTc0NkExNUIwMDBDMUM0NSAvKiBXS09iakNUeXBlV3JhcHBlclJlZi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzc4RTFBNDAxODFFREEwMTAwMzEwMDdBIC8qIFdLT2JqZWN0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzg1N0ZFNjEyQjg0M0Q4MDBFREVCMkUgLyogV0tPcGVuUGFuZWxQYXJhbWV0
ZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwMDVEMTU4RjE4RTRDNEVCMDA3MzQ2MTkgLyogX1dL
RmluZERlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzFERkU4RjEyQjMxQ0E4MDA1REY3
MzAgLyogV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNE
NTk3RDcxMTJCNTZEQzAwRUM4QzIzIC8qIFdLUGFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ2
Q0QxMTkxODkwNThBNTAwRTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLmggaW4gSGVhZGVycyAq
LywKQEAgLTgwOTEsNiArODEwNiw3IEBACiAJCQkJREY1OEM2MzYxMzcxQUNBMDAwRjlBMzdDIC8q
IE5hdGl2ZVdlYldoZWVsRXZlbnRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTZGQkEyQjEx
RTY4NjI3MDBEQjEzNzEgLyogTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUE2RkJEMjkxMUU2OUJDMjAwREIxMzcxIC8qIE5ldHNjYXBlUGx1Z2luLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTAwQjk2NjE5MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFNUI3RkIxMUU3QUVEMjAwQkE2NzY3IC8qIE5ldHNjYXBl
UGx1Z2luTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0QTlDNTUxMkI4MTZDRjAwOEZFOTg0
IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNEE5QzlB
MTJCODIxQ0QwMDhGRTk4NCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbSBpbiBTb3VyY2Vz
ICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228230</attachid>
            <date>2014-03-31 18:55:53 -0700</date>
            <delta_ts>2014-03-31 19:03:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131000-20140331185533.patch</filename>
            <type>text/plain</type>
            <size>33737</size>
            <attacher name="Alice Liu">alice.barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NjU1MykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY0IEBACisyMDE0LTAzLTMxICBBbGljZSBC
YXJyYWNsb3VnaCAgPGFsaWNlLmxpdUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkaW5nIE9iamVj
dGl2ZS1DIFNQSSBmb3IgRmluZCBpbiBQYWdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxMDAwIE5lZWQgYW4gT2JqZWN0aXZlLUMgQVBJIG9yIFNQ
SSBmb3IgRmluZCBpbiBQYWdlCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRmluZC1vbi1wYWdlIFNQSSBhZGRlZCB0byBXS1dlYlZpZXcsIHdoaWNoIGZ1
bm5lbHMgdGhlIG1lc3NhZ2VzIHRocm91Z2ggdGhlIFdlYlBhZ2VQcm94eS4KKyAgICAgICAgUmV0
dXJuaW5nIG1lc3NhZ2VzIGFyZSBkZXNpZ25hdGVkIGJ5IF9XS0ZpbmREZWxlZ2F0ZSBwcm90b2Nv
bC4KKyAgICAgICAgQWxzbyBwcm92aWRlIEZpbmREZWxlZ2F0ZSBhY2Nlc3Mgb24gV0tXZWJWaWV3
LgorICAgICAgICBXZWJQYWdlUHJveHkgZ2V0cyBhIG5ldy1zdHlsZSBBUEk6OkZpbmRDbGllbnQu
CisgICAgICAgIEFsc28gaGFkIHRvIHJlcGxpY2F0ZSBXS0ZpbmRPcHRpb25zIGFzIF9XS0ZpbmRP
cHRpb25zIGluIENvY29hIFNQSS4gVGhpcyBpcyB1bmZvcnR1bmF0ZSwgYnV0IGl0IAorICAgICAg
ICBkb2VzIGZvbGxvdyB0aGUgcGF0dGVybiBvZiBvdGhlciBvcHRpb25zICYgZW51bXMgcmVsYXRl
ZCB0byBjbGFzc2VzIHRoYXQgYXJlIFNQSS1mb3Itbm93LgorICAgICAgICAKKyAgICAgICAgUGFn
ZUNsaWVudEltcGxJT1MgaGFuZGxlcyBzZXRGaW5kSW5kaWNhdG9yIGZ1bmN0aW9uIGJ5IGZvcndh
cmRpbmcgdG8gaXRzIFdLQ29udGVudFZpZXcsIAorICAgICAgICBidXQgV0tDb250ZW50VmlldyBf
c2V0RmluZEluZGljYXRvciByZW1haW5zIHVuaW1wbGVtZW50ZWQgZm9yIG5vdy4KKyAgICAgICAg
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGaW5kQ2xpZW50Lmg6IEFkZGVkLgorICAgICAg
ICAoQVBJOjpGaW5kQ2xpZW50Ojp+RmluZENsaWVudCk6CisgICAgICAgIChBUEk6OkZpbmRDbGll
bnQ6OmRpZENvdW50U3RyaW5nTWF0Y2hlcyk6CisgICAgICAgIChBUEk6OkZpbmRDbGllbnQ6OmRp
ZEZpbmRTdHJpbmcpOgorICAgICAgICAoQVBJOjpGaW5kQ2xpZW50OjpkaWRGYWlsVG9GaW5kU3Ry
aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdL
UGFnZVNldFBhZ2VGaW5kQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGluaXRXaXRoRnJhbWU6Y29uZmlndXJh
dGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9maW5kRGVsZWdhdGVdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9zZXRGaW5kRGVsZWdhdGU6XSk6CisgICAgICAgICh0b0ZpbmRPcHRpb25z
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jb3VudFN0cmluZ01hdGNoZXM6b3B0aW9uczptYXhD
b3VudDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9maW5kU3RyaW5nOm9wdGlvbnM6bWF4Q291
bnQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfaGlkZUZpbmRVSV0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2hvc3RGb3JGaW5kVUldKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKE5TX09QVElPTlMpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLRmluZERlbGVnYXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9GaW5kQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9GaW5kQ2xpZW50Lm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6RmluZENsaWVudDo6
RmluZENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OkZpbmRDbGllbnQ6OmRlbGVnYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6RmluZENsaWVudDo6c2V0RGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0
OjpGaW5kQ2xpZW50OjpkaWRDb3VudFN0cmluZ01hdGNoZXMpOgorICAgICAgICAoV2ViS2l0OjpG
aW5kQ2xpZW50OjpkaWRGaW5kU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6RmluZENsaWVudDo6
ZGlkRmFpbFRvRmluZFN0cmluZyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRGaW5kQ2xpZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGlkQ291bnRTdHJpbmdNYXRjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
aWRGaW5kU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGYWlsVG9G
aW5kU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppbml0aWFsaXplRmlu
ZENsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZpbmRDbGllbnQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VD
bGllbnRJbXBsOjpzZXRGaW5kSW5kaWNhdG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW06
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3NldEZpbmRJbmRpY2F0b3I6V2ViS2l0OjpmYWRl
T3V0OmFuaW1hdGU6XSk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorCiAyMDE0LTAzLTMxICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIGEgbmV3IC1bV0tQcmVmZXJlbmNlcyBpbml0V2l0aFVzZXJEZWZhdWx0
c1ByZWZpeEtleTpdIGluaXRpYWxpemVyCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMTY2MjU2KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKIAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCisjaW5j
bHVkZSAiQVBJRmluZENsaWVudC5oIgogI2luY2x1ZGUgIkFQSUxvYWRlckNsaWVudC5oIgogI2lu
Y2x1ZGUgIkFQSVBvbGljeUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSVVJQ2xpZW50LmgiCkBAIC0y
NTcsNiArMjU4LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcAog
ICAgICwgbV9sb2FkZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkxvYWRlckNsaWVudD4o
KSkKICAgICAsIG1fcG9saWN5Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpQb2xpY3lDbGll
bnQ+KCkpCiAgICAgLCBtX3VpQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpVSUNsaWVudD4o
KSkKKyAgICAsIG1fZmluZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZENsaWVudD4o
KSkKICAgICAsIG1fcHJvY2Vzcyhwcm9jZXNzKQogICAgICwgbV9wYWdlR3JvdXAoKmNvbmZpZ3Vy
YXRpb24ucGFnZUdyb3VwKQogICAgICwgbV9wcmVmZXJlbmNlcygqY29uZmlndXJhdGlvbi5wcmVm
ZXJlbmNlcykKQEAgLTQ3MSw5ICs0NzMsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVJQ2xp
ZW50KHN0ZDo6dW5pcQogICAgIHNldENhblJ1bk1vZGFsKG1fdWlDbGllbnQtPmNhblJ1bk1vZGFs
KCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZUZpbmRDbGllbnQoY29uc3Qg
V0tQYWdlRmluZENsaWVudEJhc2UqIGNsaWVudCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaW5k
Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZpbmRDbGllbnQ+IGZpbmRDbGllbnQpCiB7Ci0g
ICAgbV9maW5kQ2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKKyAgICBpZiAoIWZpbmRDbGllbnQp
IHsKKyAgICAgICAgbV9maW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZpbmRDbGll
bnQ+KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgbV9maW5kQ2xpZW50ID0g
c3RkOjptb3ZlKGZpbmRDbGllbnQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6
ZUZpbmRNYXRjaGVzQ2xpZW50KGNvbnN0IFdLUGFnZUZpbmRNYXRjaGVzQ2xpZW50QmFzZSogY2xp
ZW50KQpAQCAtNTk5LDcgKzYwNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCiAjaWYg
UExBVEZPUk0oRUZMKQogICAgIG1fdWlQb3B1cE1lbnVDbGllbnQuaW5pdGlhbGl6ZSgwKTsKICNl
bmRpZgotICAgIG1fZmluZENsaWVudC5pbml0aWFsaXplKDApOworICAgIG1fZmluZENsaWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpOwogICAgIG1fZmluZE1hdGNoZXND
bGllbnQuaW5pdGlhbGl6ZSgwKTsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBtX2Nv
bnRleHRNZW51Q2xpZW50LmluaXRpYWxpemUoMCk7CkBAIC0zMTYyLDcgKzMxNjksNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Y2xlYXJBbGxFZGl0Q29tbWFuZHMoCiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRDb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVpbnQzMl90IG1h
dGNoQ291bnQpCiB7Ci0gICAgbV9maW5kQ2xpZW50LmRpZENvdW50U3RyaW5nTWF0Y2hlcyh0aGlz
LCBzdHJpbmcsIG1hdGNoQ291bnQpOworICAgIG1fZmluZENsaWVudC0+ZGlkQ291bnRTdHJpbmdN
YXRjaGVzKHRoaXMsIHN0cmluZywgbWF0Y2hDb3VudCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRHZXRJbWFnZUZvckZpbmRNYXRjaChjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYg
Y29udGVudEltYWdlSGFuZGxlLCB1aW50MzJfdCBtYXRjaEluZGV4KQpAQCAtMzE3OCw3ICszMTg1
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEZpbmRJbmRpY2F0b3IoY29ucwogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkRmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgdWludDMyX3Qg
bWF0Y2hDb3VudCkKIHsKLSAgICBtX2ZpbmRDbGllbnQuZGlkRmluZFN0cmluZyh0aGlzLCBzdHJp
bmcsIG1hdGNoQ291bnQpOworICAgIG1fZmluZENsaWVudC0+ZGlkRmluZFN0cmluZyh0aGlzLCBz
dHJpbmcsIG1hdGNoQ291bnQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluZFN0cmlu
Z01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIFZlY3RvcjxWZWN0b3I8V2ViQ29yZTo6SW50
UmVjdD4+IG1hdGNoUmVjdHMsIGludDMyX3QgZmlyc3RJbmRleEFmdGVyU2VsZWN0aW9uKQpAQCAt
MzIwMSw3ICszMjA4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmRTdHJpbmdNYXRjaGVz
KAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFRvRmluZFN0cmluZyhjb25zdCBTdHJpbmcm
IHN0cmluZykKIHsKLSAgICBtX2ZpbmRDbGllbnQuZGlkRmFpbFRvRmluZFN0cmluZyh0aGlzLCBz
dHJpbmcpOworICAgIG1fZmluZENsaWVudC0+ZGlkRmFpbFRvRmluZFN0cmluZyh0aGlzLCBzdHJp
bmcpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6c2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRy
PElQQzo6TWVzc2FnZUVuY29kZXI+IGVuY29kZXIsIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3Mp
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAx
NjYyNTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEwNCw2ICsxMDQsNyBAQAogI2VuZGlmCiAKIG5hbWVzcGFjZSBBUEkgewor
Y2xhc3MgRmluZENsaWVudDsKIGNsYXNzIExvYWRlckNsaWVudDsKIGNsYXNzIFBvbGljeUNsaWVu
dDsKIGNsYXNzIFVJQ2xpZW50OwpAQCAtNDc2LDcgKzQ3Nyw4IEBAIHB1YmxpYzoKICNpZiBFTkFC
TEUoQ09OVEVYVF9NRU5VUykKICAgICB2b2lkIGluaXRpYWxpemVDb250ZXh0TWVudUNsaWVudChj
b25zdCBXS1BhZ2VDb250ZXh0TWVudUNsaWVudEJhc2UqKTsKICNlbmRpZgotICAgIHZvaWQgaW5p
dGlhbGl6ZUZpbmRDbGllbnQoY29uc3QgV0tQYWdlRmluZENsaWVudEJhc2UqKTsKKyAgICBBUEk6
OkZpbmRDbGllbnQmIGZpbmRDbGllbnQoKSB7IHJldHVybiAqbV9maW5kQ2xpZW50OyB9CisgICAg
dm9pZCBzZXRGaW5kQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZpbmRDbGllbnQ+KTsKICAg
ICB2b2lkIGluaXRpYWxpemVGaW5kTWF0Y2hlc0NsaWVudChjb25zdCBXS1BhZ2VGaW5kTWF0Y2hl
c0NsaWVudEJhc2UqKTsKICAgICB2b2lkIGluaXRpYWxpemVGb3JtQ2xpZW50KGNvbnN0IFdLUGFn
ZUZvcm1DbGllbnRCYXNlKik7CiAgICAgdm9pZCBzZXRMb2FkZXJDbGllbnQoc3RkOjp1bmlxdWVf
cHRyPEFQSTo6TG9hZGVyQ2xpZW50Pik7CkBAIC0xMzY2LDcgKzEzNjgsNyBAQCBwcml2YXRlOgog
I2lmIFBMQVRGT1JNKEVGTCkKICAgICBXZWJVSVBvcHVwTWVudUNsaWVudCBtX3VpUG9wdXBNZW51
Q2xpZW50OwogI2VuZGlmCi0gICAgV2ViRmluZENsaWVudCBtX2ZpbmRDbGllbnQ7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFQSTo6RmluZENsaWVudD4gbV9maW5kQ2xpZW50OwogICAgIFdlYkZpbmRN
YXRjaGVzQ2xpZW50IG1fZmluZE1hdGNoZXNDbGllbnQ7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVO
VVMpCiAgICAgV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50IG1fY29udGV4dE1lbnVDbGllbnQ7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUZpbmRDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUZpbmRDbGllbnQuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJRmluZENsaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFQ
SUZpbmRDbGllbnRfaAorI2RlZmluZSBBUElGaW5kQ2xpZW50X2gKKworI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlBhZ2VQcm94
eTsKK30KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIEZpbmRDbGllbnQgeworcHVibGljOgor
ICAgIHZpcnR1YWwgfkZpbmRDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRDb3Vu
dFN0cmluZ01hdGNoZXMoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYs
IHVpbnQzMl90IG1hdGNoQ291bnQpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5kU3RyaW5n
KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCB1aW50MzJfdCBtYXRj
aENvdW50KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFRvRmluZFN0cmluZyhXZWJLaXQ6
OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9Cit9OworCit9IC8vIG5hbWVz
cGFjZSBBUEkKKworI2VuZGlmIC8vIEFQSUZpbmRDbGllbnRfaApJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHJldmlzaW9uIDE2NjI1NikKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkFQSURhdGEu
aCIKKyNpbmNsdWRlICJBUElGaW5kQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJTG9hZGVyQ2xpZW50
LmgiCiAjaW5jbHVkZSAiQVBJUG9saWN5Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJVUlDbGllbnQu
aCIKQEAgLTY3Niw3ICs2NzcsNDAgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVDbGll
bnQoV0tQYQogCiB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVm
LCBjb25zdCBXS1BhZ2VGaW5kQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgdG9JbXBsKHBh
Z2VSZWYpLT5pbml0aWFsaXplRmluZENsaWVudCh3a0NsaWVudCk7CisgICAgY2xhc3MgRmluZENs
aWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VGaW5kQ2xpZW50QmFzZT4sIHB1YmxpYyBB
UEk6OkZpbmRDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgRmluZENsaWVu
dChjb25zdCBXS1BhZ2VGaW5kQ2xpZW50QmFzZSogY2xpZW50KQorICAgICAgICB7CisgICAgICAg
ICAgICBpbml0aWFsaXplKGNsaWVudCk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5kU3RyaW5nKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3Qg
U3RyaW5nJiBzdHJpbmcsIHVpbnQzMl90IG1hdGNoQ291bnQpIG92ZXJyaWRlCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkRmluZFN0cmluZykKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZEZpbmRTdHJp
bmcodG9BUEkocGFnZSksIHRvQVBJKHN0cmluZy5pbXBsKCkpLCBtYXRjaENvdW50LCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZEZhaWxUb0ZpbmRTdHJpbmcoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIHN0cmlu
Zykgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRGYWls
VG9GaW5kU3RyaW5nKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgbV9jbGllbnQuZGlkRmFpbFRvRmluZFN0cmluZyh0b0FQSShwYWdlKSwgdG9BUEko
c3RyaW5nLmltcGwoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0KKwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ291bnRTdHJpbmdNYXRjaGVzKFdlYlBhZ2VQcm94eSog
cGFnZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVpbnQzMl90IG1hdGNoQ291bnQpIG92ZXJyaWRl
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX2NsaWVudC5kaWRDb3VudFN0cmluZ01hdGNo
ZXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBt
X2NsaWVudC5kaWRDb3VudFN0cmluZ01hdGNoZXModG9BUEkocGFnZSksIHRvQVBJKHN0cmluZy5p
bXBsKCkpLCBtYXRjaENvdW50LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9
CisgICAgfTsKKworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RmluZENsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPEZpbmRDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tQYWdlU2V0UGFnZUZp
bmRNYXRjaGVzQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5kTWF0Y2hl
c0NsaWVudEJhc2UqIHdrQ2xpZW50KQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDE2NjI1NikKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpZiBXS19BUElfRU5BQkxFRAogCisjaW1wb3J0ICJGaW5kQ2xp
ZW50LmgiCiAjaW1wb3J0ICJOYXZpZ2F0aW9uU3RhdGUuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uLmgiCiAjaW1wb3J0ICJSZW1vdGVPYmplY3RSZWdpc3RyeS5oIgpAQCAt
NTQsNiArNTUsNyBAQAogI2ltcG9ydCAiV2ViUGFnZUdyb3VwLmgiCiAjaW1wb3J0ICJXZWJQYWdl
UHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgorI2ltcG9ydCAiX1dLRmluZERl
bGVnYXRlLmgiCiAjaW1wb3J0ICJfV0tWaXNpdGVkTGlua1Byb3ZpZGVySW50ZXJuYWwuaCIKICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtMTkzLDkgKzE5NSw4IEBAIC0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnIKICAgICBfbmF2aWdhdGlvblN0YXRlID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZT4oc2VsZik7CiAgICAgX3BhZ2Ut
PnNldFBvbGljeUNsaWVudChfbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVQb2xpY3lDbGllbnQoKSk7
CiAgICAgX3BhZ2UtPnNldExvYWRlckNsaWVudChfbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVMb2Fk
ZXJDbGllbnQoKSk7Ci0KICAgICBfcGFnZS0+c2V0VUlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxX
ZWJLaXQ6OlVJQ2xpZW50PihzZWxmKSk7Ci0KKyAgICBfcGFnZS0+c2V0RmluZENsaWVudChzdGQ6
Om1ha2VfdW5pcXVlPFdlYktpdDo6RmluZENsaWVudD4oc2VsZikpOwogICAgIHJldHVybiBzZWxm
OwogfQogCkBAIC0xMDQ5LDYgKzEwNTAsNTUgQEAgLSAodm9pZClfc2V0UGFnZVpvb21GYWN0b3I6
KGRvdWJsZSl6b29tRgogICAgIF9wYWdlLT5zZXRQYWdlWm9vbUZhY3Rvcih6b29tRmFjdG9yKTsK
IH0KIAorLSAoaWQgPF9XS0ZpbmREZWxlZ2F0ZT4pX2ZpbmREZWxlZ2F0ZQoreworICAgIHJldHVy
biBbc3RhdGljX2Nhc3Q8V2ViS2l0OjpGaW5kQ2xpZW50Jj4oX3BhZ2UtPmZpbmRDbGllbnQoKSku
ZGVsZWdhdGUoKS5sZWFrUmVmKCkgYXV0b3JlbGVhc2VdOworfQorCistICh2b2lkKV9zZXRGaW5k
RGVsZWdhdGU6KGlkPF9XS0ZpbmREZWxlZ2F0ZT4pZmluZERlbGVnYXRlCit7CisgICAgc3RhdGlj
X2Nhc3Q8V2ViS2l0OjpGaW5kQ2xpZW50Jj4oX3BhZ2UtPmZpbmRDbGllbnQoKSkuc2V0RGVsZWdh
dGUoZmluZERlbGVnYXRlKTsKK30KKworc3RhdGljIGlubGluZSBXZWJLaXQ6OkZpbmRPcHRpb25z
IHRvRmluZE9wdGlvbnMoX1dLRmluZE9wdGlvbnMgd2tGaW5kT3B0aW9ucykKK3sKKyAgICB1bnNp
Z25lZCBmaW5kT3B0aW9ucyA9IDA7CisKKyAgICBpZiAod2tGaW5kT3B0aW9ucyAmIF9XS0ZpbmRP
cHRpb25zQ2FzZUluc2Vuc2l0aXZlKQorICAgICAgICBmaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZp
bmRPcHRpb25zQ2FzZUluc2Vuc2l0aXZlOworICAgIGlmICh3a0ZpbmRPcHRpb25zICYgX1dLRmlu
ZE9wdGlvbnNBdFdvcmRTdGFydHMpCisgICAgICAgIGZpbmRPcHRpb25zIHw9IFdlYktpdDo6Rmlu
ZE9wdGlvbnNBdFdvcmRTdGFydHM7CisgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBfV0tGaW5kT3B0
aW9uc1RyZWF0TWVkaWFsQ2FwaXRhbEFzV29yZFN0YXJ0KQorICAgICAgICBmaW5kT3B0aW9ucyB8
PSBXZWJLaXQ6OkZpbmRPcHRpb25zVHJlYXRNZWRpYWxDYXBpdGFsQXNXb3JkU3RhcnQ7CisgICAg
aWYgKHdrRmluZE9wdGlvbnMgJiBfV0tGaW5kT3B0aW9uc0JhY2t3YXJkcykKKyAgICAgICAgZmlu
ZE9wdGlvbnMgfD0gV2ViS2l0OjpGaW5kT3B0aW9uc0JhY2t3YXJkczsKKyAgICBpZiAod2tGaW5k
T3B0aW9ucyAmIF9XS0ZpbmRPcHRpb25zV3JhcEFyb3VuZCkKKyAgICAgICAgZmluZE9wdGlvbnMg
fD0gV2ViS2l0OjpGaW5kT3B0aW9uc1dyYXBBcm91bmQ7CisgICAgaWYgKHdrRmluZE9wdGlvbnMg
JiBfV0tGaW5kT3B0aW9uc1Nob3dPdmVybGF5KQorICAgICAgICBmaW5kT3B0aW9ucyB8PSBXZWJL
aXQ6OkZpbmRPcHRpb25zU2hvd092ZXJsYXk7CisgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBfV0tG
aW5kT3B0aW9uc1Nob3dGaW5kSW5kaWNhdG9yKQorICAgICAgICBmaW5kT3B0aW9ucyB8PSBXZWJL
aXQ6OkZpbmRPcHRpb25zU2hvd0ZpbmRJbmRpY2F0b3I7CisgICAgaWYgKHdrRmluZE9wdGlvbnMg
JiBfV0tGaW5kT3B0aW9uc1Nob3dIaWdobGlnaHQpCisgICAgICAgIGZpbmRPcHRpb25zIHw9IFdl
YktpdDo6RmluZE9wdGlvbnNTaG93SGlnaGxpZ2h0OworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFdlYktpdDo6RmluZE9wdGlvbnM+KGZpbmRPcHRpb25zKTsKK30KKworLSAodm9pZClfY291bnRT
dHJpbmdNYXRjaGVzOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25zOihfV0tGaW5kT3B0aW9ucylv
cHRpb25zIG1heENvdW50OihOU1VJbnRlZ2VyKW1heENvdW50Cit7CisgICAgX3BhZ2UtPmNvdW50
U3RyaW5nTWF0Y2hlcyhzdHJpbmcsIHRvRmluZE9wdGlvbnMob3B0aW9ucyksIG1heENvdW50KTsK
K30KKworLSAodm9pZClfZmluZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9uczooX1dL
RmluZE9wdGlvbnMpb3B0aW9ucyBtYXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudAoreworICAg
IF9wYWdlLT5maW5kU3RyaW5nKHN0cmluZywgdG9GaW5kT3B0aW9ucyhvcHRpb25zKSwgbWF4Q291
bnQpOworfQorCistICh2b2lkKV9oaWRlRmluZFVJCit7CisgICAgX3BhZ2UtPmhpZGVGaW5kVUko
KTsKK30KKwogI3ByYWdtYSBtYXJrIGlPUy1zcGVjaWZpYyBtZXRob2RzCiAKICNpZiBQTEFURk9S
TShJT1MpCkBAIC0xMTM5LDYgKzExODksMTEgQEAgLSAodm9pZClfc25hcHNob3RSZWN0OihDR1Jl
Y3QpcmVjdEluVmlldwogICAgIH0pOwogfQogCistIChVSVZpZXcgKilfaG9zdEZvckZpbmRVSQor
eworICAgIHJldHVybiBbc2VsZiB2aWV3Rm9yWm9vbWluZ0luU2Nyb2xsVmlldzpbc2VsZiBzY3Jv
bGxWaWV3XV07Cit9CisKICNlbHNlCiAKICNwcmFnbWEgbWFyayAtIE9TIFgtc3BlY2lmaWMgbWV0
aG9kcwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdQcml2YXRlLmgJKHJldmlzaW9uIDE2NjI1NikKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MCw5ICs0MCwyMSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tQYWdpbmF0aW9u
CiAgICAgX1dLUGFnaW5hdGlvbk1vZGVCb3R0b21Ub1RvcCwKIH07CiAKK3R5cGVkZWYgTlNfT1BU
SU9OUyhOU1VJbnRlZ2VyLCBfV0tGaW5kT3B0aW9ucykgeworICAgIF9XS0ZpbmRPcHRpb25zQ2Fz
ZUluc2Vuc2l0aXZlID0gMSA8PCAwLAorICAgIF9XS0ZpbmRPcHRpb25zQXRXb3JkU3RhcnRzID0g
MSA8PCAxLAorICAgIF9XS0ZpbmRPcHRpb25zVHJlYXRNZWRpYWxDYXBpdGFsQXNXb3JkU3RhcnQg
PSAxIDw8IDIsCisgICAgX1dLRmluZE9wdGlvbnNCYWNrd2FyZHMgPSAxIDw8IDMsCisgICAgX1dL
RmluZE9wdGlvbnNXcmFwQXJvdW5kID0gMSA8PCA0LAorICAgIF9XS0ZpbmRPcHRpb25zU2hvd092
ZXJsYXkgPSAxIDw8IDUsCisgICAgX1dLRmluZE9wdGlvbnNTaG93RmluZEluZGljYXRvciA9IDEg
PDwgNiwKKyAgICBfV0tGaW5kT3B0aW9uc1Nob3dIaWdobGlnaHQgPSAxIDw8IDcsCit9OworCiBA
Y2xhc3MgV0tCcm93c2luZ0NvbnRleHRIYW5kbGU7CiBAY2xhc3MgV0tSZW1vdGVPYmplY3RSZWdp
c3RyeTsKIEBwcm90b2NvbCBXS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGU7CitAcHJvdG9jb2wgX1dL
RmluZERlbGVnYXRlOwogCiBAaW50ZXJmYWNlIFdLV2ViVmlldyAoV0tQcml2YXRlKQogCkBAIC05
MSw2ICsxMDMsOSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tQYWdpbmF0aW9uCiAt
ICh2b2lkKV9lbmRJbnRlcmFjdGl2ZU9ic2N1cmVkSW5zZXRzQ2hhbmdlOwogCiAtICh2b2lkKV9z
bmFwc2hvdFJlY3Q6KENHUmVjdClyZWN0SW5WaWV3Q29vcmRpbmF0ZXMgaW50b0ltYWdlT2ZXaWR0
aDooQ0dGbG9hdClpbWFnZVdpZHRoIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKENHSW1hZ2VS
ZWYpKWNvbXBsZXRpb25IYW5kbGVyOworCistIChVSVZpZXcgKilfaG9zdEZvckZpbmRVSTsKKwog
I2Vsc2UKIEBwcm9wZXJ0eSAocmVhZG9ubHkpIE5TQ29sb3IgKl9wYWdlRXh0ZW5kZWRCYWNrZ3Jv
dW5kQ29sb3I7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXREcmF3c1RyYW5zcGFy
ZW50QmFja2dyb3VuZDopIEJPT0wgX2RyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kOwpAQCAtMTEy
LDYgKzEyNywxMSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tQYWdpbmF0aW9uCiBA
cHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRUZXh0Wm9vbUZhY3RvcjopIGRvdWJsZSBf
dGV4dFpvb21GYWN0b3I7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRQYWdlWm9v
bUZhY3RvcjopIGRvdWJsZSBfcGFnZVpvb21GYWN0b3I7CiAKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCB3ZWFrLCBzZXR0ZXI9X3NldEZpbmREZWxlZ2F0ZTopIGlkIDxfV0tGaW5kRGVsZWdhdGU+IF9m
aW5kRGVsZWdhdGU7CistICh2b2lkKV9maW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBvcHRp
b25zOihfV0tGaW5kT3B0aW9ucylvcHRpb25zIG1heENvdW50OihOU1VJbnRlZ2VyKW1heENvdW50
OworLSAodm9pZClfY291bnRTdHJpbmdNYXRjaGVzOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25z
OihfV0tGaW5kT3B0aW9ucylvcHRpb25zIG1heENvdW50OihOU1VJbnRlZ2VyKW1heENvdW50Owor
LSAodm9pZClfaGlkZUZpbmRVSTsKKwogQGVuZAogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRmluZERlbGVnYXRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tGaW5kRGVsZWdhdGUuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRmluZERl
bGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgPFdlYktpdDIvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCisj
aW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworQHByb3RvY29sIF9XS0ZpbmREZWxl
Z2F0ZSA8TlNPYmplY3Q+CisKK0BvcHRpb25hbAorCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IGRpZENvdW50TWF0Y2hlczooTlNVSW50ZWdlciltYXRjaGVzIGZvclN0cmlu
ZzooTlNTdHJpbmcgKilzdHJpbmc7CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IGRpZEZpbmRNYXRjaGVzOihOU1VJbnRlZ2VyKW1hdGNoZXMgZm9yU3RyaW5nOihOU1N0cmlu
ZyAqKXN0cmluZzsKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmFp
bFRvRmluZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmc7CisKK0BlbmQKKworI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvRmluZENsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9GaW5kQ2xpZW50LmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvRmluZENsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZpbmRDbGll
bnRfaAorI2RlZmluZSBGaW5kQ2xpZW50X2gKKworI2ltcG9ydCAiV0tGb3VuZGF0aW9uLmgiCisK
KyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJBUElGaW5kQ2xpZW50LmgiCisjaW1wb3J0
ICJXZWFrT2JqQ1B0ci5oIgorCitAY2xhc3MgV0tXZWJWaWV3OworQHByb3RvY29sIF9XS0ZpbmRE
ZWxlZ2F0ZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEZpbmRDbGllbnQgZmluYWwg
OiBwdWJsaWMgQVBJOjpGaW5kQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBGaW5kQ2xp
ZW50KFdLV2ViVmlldyAqKTsKKyAgICAKKyAgICBSZXRhaW5QdHI8aWQgPF9XS0ZpbmREZWxlZ2F0
ZT4gPiBkZWxlZ2F0ZSgpOworICAgIHZvaWQgc2V0RGVsZWdhdGUoaWQgPF9XS0ZpbmREZWxlZ2F0
ZT4pOworICAgIAorcHJpdmF0ZToKKyAgICAvLyBGcm9tIEFQSTo6RmluZENsaWVudAorICAgIHZp
cnR1YWwgdm9pZCBkaWRDb3VudFN0cmluZ01hdGNoZXMoV2ViUGFnZVByb3h5KiwgY29uc3QgU3Ry
aW5nJiwgdWludDMyX3QgbWF0Y2hDb3VudCk7CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmRTdHJp
bmcoV2ViUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiwgdWludDMyX3QgbWF0Y2hDb3VudCk7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZEZhaWxUb0ZpbmRTdHJpbmcoV2ViUGFnZVByb3h5KiwgY29uc3Qg
U3RyaW5nJik7CisgICAgCisgICAgV0tXZWJWaWV3ICptX3dlYlZpZXc7CisgICAgV2Vha09iakNQ
dHI8aWQgPF9XS0ZpbmREZWxlZ2F0ZT4gPiBtX2RlbGVnYXRlOworICAgIAorICAgIHN0cnVjdCB7
CisgICAgICAgIGJvb2wgd2Vidmlld0RpZENvdW50U3RyaW5nTWF0Y2hlcyA6IDE7CisgICAgICAg
IGJvb2wgd2Vidmlld0RpZEZpbmRTdHJpbmcgOiAxOworICAgICAgICBib29sIHdlYnZpZXdEaWRG
YWlsVG9GaW5kU3RyaW5nIDogMTsKKyAgICB9IG1fZGVsZWdhdGVNZXRob2RzOworfTsKKyAgICAK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKKworI2Vu
ZGlmIC8vIEZpbmRDbGllbnRfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29h
L0ZpbmRDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL0ZpbmRDbGllbnQubW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvRmluZENsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJGaW5kQ2xpZW50LmgiCisK
KyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJfV0tGaW5kRGVsZWdhdGUuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK0ZpbmRDbGllbnQ6OkZpbmRDbGllbnQoV0tXZWJWaWV3ICp3ZWJW
aWV3KQorICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCit7Cit9CisgICAgCitSZXRhaW5QdHI8aWQg
PF9XS0ZpbmREZWxlZ2F0ZT4gPiBGaW5kQ2xpZW50OjpkZWxlZ2F0ZSgpCit7CisgICAgcmV0dXJu
IG1fZGVsZWdhdGUuZ2V0KCk7Cit9CisKK3ZvaWQgRmluZENsaWVudDo6c2V0RGVsZWdhdGUoaWQg
PF9XS0ZpbmREZWxlZ2F0ZT4gZGVsZWdhdGUpCit7CisgICAgbV9kZWxlZ2F0ZSA9IGRlbGVnYXRl
OworCisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2Vidmlld0RpZENvdW50U3RyaW5nTWF0Y2hlcyA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZENvdW50
TWF0Y2hlczpmb3JTdHJpbmc6KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2Vidmlld0RpZEZp
bmRTdHJpbmcgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmll
dzpkaWRGaW5kTWF0Y2hlczpmb3JTdHJpbmc6KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2Vi
dmlld0RpZEZhaWxUb0ZpbmRTdHJpbmcgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihfd2ViVmlldzpkaWRGYWlsVG9GaW5kU3RyaW5nOildOworfQorICAgIAordm9pZCBG
aW5kQ2xpZW50OjpkaWRDb3VudFN0cmluZ01hdGNoZXMoV2ViUGFnZVByb3h5KiwgY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIHVpbnQzMl90IG1hdGNoQ291bnQpCit7CisgICAgaWYgKG1fZGVsZWdhdGVN
ZXRob2RzLndlYnZpZXdEaWRDb3VudFN0cmluZ01hdGNoZXMpCisgICAgICAgIFttX2RlbGVnYXRl
LmdldCgpIF93ZWJWaWV3Om1fd2ViVmlldyBkaWRDb3VudE1hdGNoZXM6bWF0Y2hDb3VudCBmb3JT
dHJpbmc6c3RyaW5nXTsKK30KKwordm9pZCBGaW5kQ2xpZW50OjpkaWRGaW5kU3RyaW5nKFdlYlBh
Z2VQcm94eSosIGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1aW50MzJfdCBtYXRjaENvdW50KQorewor
ICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy53ZWJ2aWV3RGlkRmluZFN0cmluZykKKyAgICAgICAg
W21fZGVsZWdhdGUuZ2V0KCkgX3dlYlZpZXc6bV93ZWJWaWV3IGRpZEZpbmRNYXRjaGVzOm1hdGNo
Q291bnQgZm9yU3RyaW5nOnN0cmluZ107Cit9CisKK3ZvaWQgRmluZENsaWVudDo6ZGlkRmFpbFRv
RmluZFN0cmluZyhXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBp
ZiAobV9kZWxlZ2F0ZU1ldGhvZHMud2Vidmlld0RpZEZhaWxUb0ZpbmRTdHJpbmcpCisgICAgICAg
IFttX2RlbGVnYXRlLmdldCgpIF93ZWJWaWV3Om1fd2ViVmlldyBkaWRGYWlsVG9GaW5kU3RyaW5n
OnN0cmluZ107Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV0tfQVBJ
X0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5tbQkocmV2aXNpb24gMTY2MjU2KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNiAr
MjksNyBAQAogI2lmIFBMQVRGT1JNKElPUykKIAogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgor
I2ltcG9ydCAiRmluZEluZGljYXRvci5oIgogI2ltcG9ydCAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVu
dC5oIgogI2ltcG9ydCAiSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaCIKICNpbXBv
cnQgIldLQ29udGVudFZpZXcuaCIKQEAgLTI5NCw5ICsyOTUsOSBAQCBQYXNzUmVmUHRyPFdlYkNv
bnRleHRNZW51UHJveHk+IFBhZ2VDbGllCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgUGFnZUNs
aWVudEltcGw6OnNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNhdG9yPiwgYm9v
bCwgYm9vbCkKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0
cjxGaW5kSW5kaWNhdG9yPiBmaW5kSW5kaWNhdG9yLCBib29sIGZhZGVPdXQsIGJvb2wgYW5pbWF0
ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIFttX2NvbnRlbnRWaWV3IF9zZXRGaW5k
SW5kaWNhdG9yOmZpbmRJbmRpY2F0b3IgZmFkZU91dDpmYWRlT3V0IGFuaW1hdGU6YW5pbWF0ZV07
CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oCShyZXZpc2lvbiAxNjYy
NTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaAkod29y
a2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNz
IERyYXdpbmdBcmVhUHJveHk7CitjbGFzcyBGaW5kSW5kaWNhdG9yOwogY2xhc3MgR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdFByb3h5OwogY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b247CiBjbGFzcyBXZWJDb250ZXh0OwpAQCAtODMsNCArODQsNiBAQCBzdHJ1Y3QgV2ViUGFnZUNv
bmZpZ3VyYXRpb247CiAtIChCT09MKV96b29tVG9SZWN0OihDR1JlY3QpdGFyZ2V0UmVjdCB3aXRo
T3JpZ2luOihDR1BvaW50KW9yaWdpbiBmaXRFbnRpcmVSZWN0OihCT09MKWZpdEVudGlyZVJlY3Qg
bWluaW11bVNjYWxlOihkb3VibGUpbWluaW11bVNjYWxlIG1heGltdW1TY2FsZTooZG91YmxlKW1h
eGltdW1TY2FsZSBtaW5pbXVtU2Nyb2xsRGlzdGFuY2U6KENHRmxvYXQpbWluaW11bVNjcm9sbERp
c3RhbmNlOwogLSAodm9pZClfem9vbU91dFdpdGhPcmlnaW46KENHUG9pbnQpb3JpZ2luOwogCist
ICh2b2lkKV9zZXRGaW5kSW5kaWNhdG9yOihQYXNzUmVmUHRyPFdlYktpdDo6RmluZEluZGljYXRv
cj4pZmluZEluZGljYXRvciBmYWRlT3V0OihCT09MKWZhZGVPdXQgYW5pbWF0ZTooQk9PTClhbmlt
YXRlOworCiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3Lm1tCShyZXZpc2lvbiAxNjYyNTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAK
ICNpbXBvcnQgIldlYlN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCAiV2ViS2l0U3lzdGVtSW50
ZXJmYWNlSU9TLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2ltcG9ydCA8VUlLaXQvVUlXaW5kb3dfUHJpdmF0ZS5o
PgogI2ltcG9ydCA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CkBAIC00MjUsNiArNDI2LDExIEBAIC0gKHZvaWQpX2FwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZl
OihOU04KICAgICBfcGFnZS0+YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKIH0KIAorLSAo
dm9pZClfc2V0RmluZEluZGljYXRvcjooUGFzc1JlZlB0cjxXZWJLaXQ6OkZpbmRJbmRpY2F0b3I+
KWZpbmRJbmRpY2F0b3IgZmFkZU91dDooQk9PTClmYWRlT3V0IGFuaW1hdGU6KEJPT0wpYW5pbWF0
ZQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIEBlbmQKIAogI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2NjI1NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcs
MTAgQEAKIC8qIEVuZCBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQ
QlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCQkwMDVEMTU4RjE4RTRDNEVCMDA3MzQ2MTkgLyogX1dL
RmluZERlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwMDVEMTU4RTE4RTRDNEVCMDA3MzQ2MTkgLyogX1dLRmluZERlbGVnYXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDBCOTY2MTYxOEUy
NENCQTAwQ0UxRjg4IC8qIEFQSUZpbmRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwQjk2NjE1MThFMjRDQkEwMENFMUY4OCAvKiBBUElGaW5k
Q2xpZW50LmggKi87IH07CisJCTAwQjk2NjE5MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBCOTY2
MTcxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQubW0gKi87IH07CisJCTAwQjk2NjFBMThF
MjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwMEI5NjYxODE4RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVu
dC5oICovOyB9OwogCQkwRjBDMzY1ODE4QzA1MUJBMDBGNjA3RDcgLyogUmVtb3RlTGF5ZXJUcmVl
SG9zdElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMEMzNjU3MThDMDUxQkEwMEY2MDdENyAvKiBSZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tICov
OyB9OwogCQkwRjBDMzY1QTE4QzA1NTU4MDBGNjA3RDcgLyogTGF5ZXJSZXByZXNlbnRhdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQzM2NTkx
OEMwNTU1ODAwRjYwN0Q3IC8qIExheWVyUmVwcmVzZW50YXRpb24uaCAqLzsgfTsKIAkJMEYwQzM2
NUMxOEMwNUNBMTAwRjYwN0Q3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1Mu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBDMzY1
QjE4QzA1Q0ExMDBGNjA3RDcgLyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5t
bSAqLzsgfTsKQEAgLTE3NjgsNiArMTc3MiwxMCBAQAogLyogRW5kIFBCWENvcHlGaWxlc0J1aWxk
UGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8K
KwkJMDA1RDE1OEUxOEU0QzRFQjAwNzM0NjE5IC8qIF9XS0ZpbmREZWxlZ2F0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tGaW5kRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMDBCOTY2MTUxOEUyNENCQTAwQ0UxRjg4IC8qIEFQSUZpbmRDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRmluZENsaWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwMEI5NjYxNzE4RTI1QUUxMDBDRTFGODggLyog
RmluZENsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZp
bmRDbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTAwQjk2NjE4MThFMjVB
RTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZpbmRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg2N0Q2QTVG
RTg0MDMwN0MwMkFBQzA3IC8qIEFwcEtpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IEFw
cEtpdC5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQu
ZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQkwODlDMTY2N0ZFODQx
MTU4QzAyQUFDMDcgLyogRW5nbGlzaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3Quc3RyaW5nczsgbmFt
ZSA9IEVuZ2xpc2g7IHBhdGggPSBFbmdsaXNoLmxwcm9qL0luZm9QbGlzdC5zdHJpbmdzOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBDMzY1NzE4QzA1MUJBMDBGNjA3RDcgLyogUmVt
b3RlTGF5ZXJUcmVlSG9zdElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IFJlbW90ZUxheWVyVHJlZUhvc3RJT1MubW07IHBhdGggPSBpb3MvUmVtb3RlTGF5ZXJU
cmVlSG9zdElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyMDIsNiArNDIx
MCw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlBMURGNjMxMTE4RTBCN0M4MDAzQTNFMkEgLyog
RG93bmxvYWRDbGllbnQuaCAqLywKIAkJCQlBMURGNjMxMDE4RTBCN0M4MDAzQTNFMkEgLyogRG93
bmxvYWRDbGllbnQubW0gKi8sCisJCQkJMDBCOTY2MTgxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRD
bGllbnQuaCAqLywKKwkJCQkwMEI5NjYxNzE4RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVudC5t
bSAqLywKIAkJCQkxQTQyMkY4RDE4QjI5QzY0MDBEOENEOTYgLyogSGlzdG9yeUNsaWVudC5oICov
LAogCQkJCTFBNDIyRjhDMThCMjlDNjQwMEQ4Q0Q5NiAvKiBIaXN0b3J5Q2xpZW50Lm1tICovLAog
CQkJCTBGMEMzNjU5MThDMDU1NTgwMEY2MDdENyAvKiBMYXllclJlcHJlc2VudGF0aW9uLmggKi8s
CkBAIC00NTY2LDYgKzQ1NzYsNyBAQAogCQkJCUExQTRGRTU3MThEQ0U5RkEwMEI1RUE4QSAvKiBf
V0tEb3dubG9hZC5oICovLAogCQkJCUExQTRGRTU4MThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3du
bG9hZC5tbSAqLywKIAkJCQlBMUE0RkU2MDE4REQ1NEE0MDBCNUVBOEEgLyogX1dLRG93bmxvYWRE
ZWxlZ2F0ZS5oICovLAorCQkJCTAwNUQxNThFMThFNEM0RUIwMDczNDYxOSAvKiBfV0tGaW5kRGVs
ZWdhdGUuaCAqLywKIAkJCQlBMUE0RkU1OTE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWRJ
bnRlcm5hbC5oICovLAogCQkJCTM3OUE4NzM4MThCQkZFMEYwMDU4OEFGMiAvKiBfV0tFbGVtZW50
QWN0aW9uLmggKi8sCiAJCQkJMzc5QTg3MzcxOEJCRkUwRjAwNTg4QUYyIC8qIF9XS0VsZW1lbnRB
Y3Rpb24ubW0gKi8sCkBAIC01NDA2LDYgKzU0MTcsNyBAQAogCQkJCTJEQTk0NDc3MTg4NEUzQUIw
MEVEODZEQiAvKiBpb3MgKi8sCiAJCQkJQkMxMTFCNDcxMTJGNjE2OTAwMzM3QkFCIC8qIG1hYyAq
LywKIAkJCQkxRjdEMzZDMDE4REE1MTNGMDBEOUQ2NTkgLyogQVBJRG93bmxvYWRDbGllbnQuaCAq
LywKKwkJCQkwMEI5NjYxNTE4RTI0Q0JBMDBDRTFGODggLyogQVBJRmluZENsaWVudC5oICovLAog
CQkJCTFBNjYzN0Q2MThCMjgzMUYwMEMwQkNGMyAvKiBBUElIaXN0b3J5Q2xpZW50LmggKi8sCiAJ
CQkJMUEyNDY0RjIxODkxRTQ1MTAwMjM0QzVCIC8qIEFQSUxvYWRlckNsaWVudC5oICovLAogCQkJ
CTFBRkREMzE0MTg5MUI1NDAwMDE1Mzk3MCAvKiBBUElQb2xpY3lDbGllbnQuaCAqLywKQEAgLTY4
MTUsNiArNjgyNyw3IEBACiAJCQkJMUE0MjJGOEIxOEIyOUI1NDAwRDhDRDk2IC8qIFdLSGlzdG9y
eURlbGVnYXRlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzcwRjM0QTcxODI5Q0ZGMzAw
OTAyN0M4IC8qIFdLQnJvd3NpbmdDb250ZXh0SGlzdG9yeURlbGVnYXRlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUYwNUQ4NzE0Njg4MzQ4MDA4QjFFODEgLyogVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWFQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDBCOTY2MUExOEUyNUFFMTAwQ0Ux
Rjg4IC8qIEZpbmRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNjQyNDVFMTJERTI5QTEw
MENBQUUyQyAvKiBVcGRhdGVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0IwQjBFMDEyMzA1
QUIxMDBCMTM0MUUgLyogVXNlck1lc3NhZ2VDb2RlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
MEYyOUU0MTIwQjQ0NDIwMDUzRDFCOSAvKiBWaXNpdGVkTGlua1Byb3ZpZGVyLmggaW4gSGVhZGVy
cyAqLywKQEAgLTY4NTcsNiArNjg3MCw3IEBACiAJCQkJQkMwMzJENzcxMEY0Mzc4RDAwNThDMTVB
IC8qIFdlYkNvbnRleHRNZW51Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3NUU3NDlFQzE4
MERCQjk4MDAwODhCQTYgLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eU1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTI5MzVEODEyODhEMTk0MDBBNEI2OTUgLyogV2ViQ29udGV4dE1l
bnVJdGVtLmggaW4gSGVhZGVycyAqLywKKwkJCQkwMEI5NjYxNjE4RTI0Q0JBMDBDRTFGODggLyog
QVBJRmluZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwRkJCOUIxMjg4Qzk1RTAwQUZG
REY0IC8qIFdlYkNvbnRleHRNZW51SXRlbURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQUNC
QjgyMTI3QThCQUQwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5LmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUI4QTFGNDE4NDAwQjhGMDBFOUFFNjkgLyogV0tQYWdlRmluZENsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC03MTUzLDYgKzcxNjcsNyBAQAogCQkJCTdDRDVFQkI5MTc0NkExNUIw
MDBDMUM0NSAvKiBXS09iakNUeXBlV3JhcHBlclJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc4
RTFBNDAxODFFREEwMTAwMzEwMDdBIC8qIFdLT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Qzg1N0ZFNjEyQjg0M0Q4MDBFREVCMkUgLyogV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwMDVEMTU4RjE4RTRDNEVCMDA3MzQ2MTkgLyogX1dLRmluZERlbGVnYXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzFERkU4RjEyQjMxQ0E4MDA1REY3MzAgLyogV0tPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNENTk3RDcxMTJCNTZE
QzAwRUM4QzIzIC8qIFdLUGFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ2Q0QxMTkxODkwNThB
NTAwRTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLmggaW4gSGVhZGVycyAqLywKQEAgLTgwOTEs
NiArODEwNiw3IEBACiAJCQkJREY1OEM2MzYxMzcxQUNBMDAwRjlBMzdDIC8qIE5hdGl2ZVdlYldo
ZWVsRXZlbnRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTZGQkEyQjExRTY4NjI3MDBEQjEz
NzEgLyogTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2RkJE
MjkxMUU2OUJDMjAwREIxMzcxIC8qIE5ldHNjYXBlUGx1Z2luLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTAwQjk2NjE5MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50Lm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUFFNUI3RkIxMUU3QUVEMjAwQkE2NzY3IC8qIE5ldHNjYXBlUGx1Z2luTWFjLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0QTlDNTUxMkI4MTZDRjAwOEZFOTg0IC8qIE5ldHNjYXBl
UGx1Z2luTW9kdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNEE5QzlBMTJCODIxQ0QwMDhG
RTk4NCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbSBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228231</attachid>
            <date>2014-03-31 19:03:06 -0700</date>
            <delta_ts>2014-04-01 20:38:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131000-20140331190246.patch</filename>
            <type>text/plain</type>
            <size>33755</size>
            <attacher name="Alice Liu">alice.barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NjU1OCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY0IEBACisyMDE0LTAzLTMxICBBbGljZSBC
YXJyYWNsb3VnaCAgPGFsaWNlLmxpdUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkaW5nIE9iamVj
dGl2ZS1DIFNQSSBmb3IgRmluZCBpbiBQYWdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxMDAwIE5lZWQgYW4gT2JqZWN0aXZlLUMgQVBJIG9yIFNQ
SSBmb3IgRmluZCBpbiBQYWdlCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRmluZC1vbi1wYWdlIFNQSSBhZGRlZCB0byBXS1dlYlZpZXcsIHdoaWNoIGZ1
bm5lbHMgdGhlIG1lc3NhZ2VzIHRocm91Z2ggdGhlIFdlYlBhZ2VQcm94eS4KKyAgICAgICAgUmV0
dXJuaW5nIG1lc3NhZ2VzIGFyZSBkZXNpZ25hdGVkIGJ5IF9XS0ZpbmREZWxlZ2F0ZSBwcm90b2Nv
bC4KKyAgICAgICAgQWxzbyBwcm92aWRlIEZpbmREZWxlZ2F0ZSBhY2Nlc3Mgb24gV0tXZWJWaWV3
LgorICAgICAgICBXZWJQYWdlUHJveHkgZ2V0cyBhIG5ldy1zdHlsZSBBUEk6OkZpbmRDbGllbnQu
CisgICAgICAgIEFsc28gaGFkIHRvIHJlcGxpY2F0ZSBXS0ZpbmRPcHRpb25zIGFzIF9XS0ZpbmRP
cHRpb25zIGluIENvY29hIFNQSS4gVGhpcyBpcyB1bmZvcnR1bmF0ZSwgYnV0IGl0IAorICAgICAg
ICBkb2VzIGZvbGxvdyB0aGUgcGF0dGVybiBvZiBvdGhlciBvcHRpb25zICYgZW51bXMgcmVsYXRl
ZCB0byBjbGFzc2VzIHRoYXQgYXJlIFNQSS1mb3Itbm93LgorICAgICAgICAKKyAgICAgICAgUGFn
ZUNsaWVudEltcGxJT1MgaGFuZGxlcyBzZXRGaW5kSW5kaWNhdG9yIGZ1bmN0aW9uIGJ5IGZvcndh
cmRpbmcgdG8gaXRzIFdLQ29udGVudFZpZXcsIAorICAgICAgICBidXQgV0tDb250ZW50VmlldyBf
c2V0RmluZEluZGljYXRvciByZW1haW5zIHVuaW1wbGVtZW50ZWQgZm9yIG5vdy4KKyAgICAgICAg
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGaW5kQ2xpZW50Lmg6IEFkZGVkLgorICAgICAg
ICAoQVBJOjpGaW5kQ2xpZW50Ojp+RmluZENsaWVudCk6CisgICAgICAgIChBUEk6OkZpbmRDbGll
bnQ6OmRpZENvdW50U3RyaW5nTWF0Y2hlcyk6CisgICAgICAgIChBUEk6OkZpbmRDbGllbnQ6OmRp
ZEZpbmRTdHJpbmcpOgorICAgICAgICAoQVBJOjpGaW5kQ2xpZW50OjpkaWRGYWlsVG9GaW5kU3Ry
aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdL
UGFnZVNldFBhZ2VGaW5kQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGluaXRXaXRoRnJhbWU6Y29uZmlndXJh
dGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9maW5kRGVsZWdhdGVdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9zZXRGaW5kRGVsZWdhdGU6XSk6CisgICAgICAgICh0b0ZpbmRPcHRpb25z
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jb3VudFN0cmluZ01hdGNoZXM6b3B0aW9uczptYXhD
b3VudDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9maW5kU3RyaW5nOm9wdGlvbnM6bWF4Q291
bnQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfaGlkZUZpbmRVSV0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2hvc3RGb3JGaW5kVUldKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKE5TX09QVElPTlMpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLRmluZERlbGVnYXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9GaW5kQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9GaW5kQ2xpZW50Lm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6RmluZENsaWVudDo6
RmluZENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OkZpbmRDbGllbnQ6OmRlbGVnYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6RmluZENsaWVudDo6c2V0RGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0
OjpGaW5kQ2xpZW50OjpkaWRDb3VudFN0cmluZ01hdGNoZXMpOgorICAgICAgICAoV2ViS2l0OjpG
aW5kQ2xpZW50OjpkaWRGaW5kU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6RmluZENsaWVudDo6
ZGlkRmFpbFRvRmluZFN0cmluZyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRGaW5kQ2xpZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGlkQ291bnRTdHJpbmdNYXRjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
aWRGaW5kU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGYWlsVG9G
aW5kU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppbml0aWFsaXplRmlu
ZENsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZpbmRDbGllbnQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VD
bGllbnRJbXBsOjpzZXRGaW5kSW5kaWNhdG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW06
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3NldEZpbmRJbmRpY2F0b3I6V2ViS2l0OjpmYWRl
T3V0OmFuaW1hdGU6XSk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorCiAyMDE0LTAzLTMxICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29t
PgogCiAgICAgICAgIEZpeCB0aGUgYnVpbGQuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMTY2NTU4KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKIAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCisj
aW5jbHVkZSAiQVBJRmluZENsaWVudC5oIgogI2luY2x1ZGUgIkFQSUxvYWRlckNsaWVudC5oIgog
I2luY2x1ZGUgIkFQSVBvbGljeUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSVVJQ2xpZW50LmgiCkBA
IC0yNTcsNiArMjU4LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYg
cAogICAgICwgbV9sb2FkZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkxvYWRlckNsaWVu
dD4oKSkKICAgICAsIG1fcG9saWN5Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpQb2xpY3lD
bGllbnQ+KCkpCiAgICAgLCBtX3VpQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpVSUNsaWVu
dD4oKSkKKyAgICAsIG1fZmluZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZENsaWVu
dD4oKSkKICAgICAsIG1fcHJvY2Vzcyhwcm9jZXNzKQogICAgICwgbV9wYWdlR3JvdXAoKmNvbmZp
Z3VyYXRpb24ucGFnZUdyb3VwKQogICAgICwgbV9wcmVmZXJlbmNlcygqY29uZmlndXJhdGlvbi5w
cmVmZXJlbmNlcykKQEAgLTQ3Myw5ICs0NzUsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVJ
Q2xpZW50KHN0ZDo6dW5pcQogICAgIHNldENhblJ1bk1vZGFsKG1fdWlDbGllbnQtPmNhblJ1bk1v
ZGFsKCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZUZpbmRDbGllbnQoY29u
c3QgV0tQYWdlRmluZENsaWVudEJhc2UqIGNsaWVudCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRG
aW5kQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZpbmRDbGllbnQ+IGZpbmRDbGllbnQpCiB7
Ci0gICAgbV9maW5kQ2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKKyAgICBpZiAoIWZpbmRDbGll
bnQpIHsKKyAgICAgICAgbV9maW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZpbmRD
bGllbnQ+KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgbV9maW5kQ2xpZW50
ID0gc3RkOjptb3ZlKGZpbmRDbGllbnQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlh
bGl6ZUZpbmRNYXRjaGVzQ2xpZW50KGNvbnN0IFdLUGFnZUZpbmRNYXRjaGVzQ2xpZW50QmFzZSog
Y2xpZW50KQpAQCAtNjA2LDcgKzYxMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCiAj
aWYgUExBVEZPUk0oRUZMKQogICAgIG1fdWlQb3B1cE1lbnVDbGllbnQuaW5pdGlhbGl6ZSgwKTsK
ICNlbmRpZgotICAgIG1fZmluZENsaWVudC5pbml0aWFsaXplKDApOworICAgIG1fZmluZENsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpOwogICAgIG1fZmluZE1hdGNo
ZXNDbGllbnQuaW5pdGlhbGl6ZSgwKTsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBt
X2NvbnRleHRNZW51Q2xpZW50LmluaXRpYWxpemUoMCk7CkBAIC0zMTkxLDcgKzMxOTgsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJBbGxFZGl0Q29tbWFuZHMoCiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRDb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVpbnQzMl90
IG1hdGNoQ291bnQpCiB7Ci0gICAgbV9maW5kQ2xpZW50LmRpZENvdW50U3RyaW5nTWF0Y2hlcyh0
aGlzLCBzdHJpbmcsIG1hdGNoQ291bnQpOworICAgIG1fZmluZENsaWVudC0+ZGlkQ291bnRTdHJp
bmdNYXRjaGVzKHRoaXMsIHN0cmluZywgbWF0Y2hDb3VudCk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRHZXRJbWFnZUZvckZpbmRNYXRjaChjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSYgY29udGVudEltYWdlSGFuZGxlLCB1aW50MzJfdCBtYXRjaEluZGV4KQpAQCAtMzIwNyw3ICsz
MjE0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEZpbmRJbmRpY2F0b3IoY29ucwogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkRmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgdWludDMy
X3QgbWF0Y2hDb3VudCkKIHsKLSAgICBtX2ZpbmRDbGllbnQuZGlkRmluZFN0cmluZyh0aGlzLCBz
dHJpbmcsIG1hdGNoQ291bnQpOworICAgIG1fZmluZENsaWVudC0+ZGlkRmluZFN0cmluZyh0aGlz
LCBzdHJpbmcsIG1hdGNoQ291bnQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluZFN0
cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIFZlY3RvcjxWZWN0b3I8V2ViQ29yZTo6
SW50UmVjdD4+IG1hdGNoUmVjdHMsIGludDMyX3QgZmlyc3RJbmRleEFmdGVyU2VsZWN0aW9uKQpA
QCAtMzIzMCw3ICszMjM3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmRTdHJpbmdNYXRj
aGVzKAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFRvRmluZFN0cmluZyhjb25zdCBTdHJp
bmcmIHN0cmluZykKIHsKLSAgICBtX2ZpbmRDbGllbnQuZGlkRmFpbFRvRmluZFN0cmluZyh0aGlz
LCBzdHJpbmcpOworICAgIG1fZmluZENsaWVudC0+ZGlkRmFpbFRvRmluZFN0cmluZyh0aGlzLCBz
dHJpbmcpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6c2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVf
cHRyPElQQzo6TWVzc2FnZUVuY29kZXI+IGVuY29kZXIsIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxh
Z3MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lv
biAxNjY1NTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEwNCw2ICsxMDQsNyBAQAogI2VuZGlmCiAKIG5hbWVzcGFjZSBBUEkg
eworY2xhc3MgRmluZENsaWVudDsKIGNsYXNzIExvYWRlckNsaWVudDsKIGNsYXNzIFBvbGljeUNs
aWVudDsKIGNsYXNzIFVJQ2xpZW50OwpAQCAtNDc2LDcgKzQ3Nyw4IEBAIHB1YmxpYzoKICNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICB2b2lkIGluaXRpYWxpemVDb250ZXh0TWVudUNsaWVu
dChjb25zdCBXS1BhZ2VDb250ZXh0TWVudUNsaWVudEJhc2UqKTsKICNlbmRpZgotICAgIHZvaWQg
aW5pdGlhbGl6ZUZpbmRDbGllbnQoY29uc3QgV0tQYWdlRmluZENsaWVudEJhc2UqKTsKKyAgICBB
UEk6OkZpbmRDbGllbnQmIGZpbmRDbGllbnQoKSB7IHJldHVybiAqbV9maW5kQ2xpZW50OyB9Cisg
ICAgdm9pZCBzZXRGaW5kQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZpbmRDbGllbnQ+KTsK
ICAgICB2b2lkIGluaXRpYWxpemVGaW5kTWF0Y2hlc0NsaWVudChjb25zdCBXS1BhZ2VGaW5kTWF0
Y2hlc0NsaWVudEJhc2UqKTsKICAgICB2b2lkIGluaXRpYWxpemVGb3JtQ2xpZW50KGNvbnN0IFdL
UGFnZUZvcm1DbGllbnRCYXNlKik7CiAgICAgdm9pZCBzZXRMb2FkZXJDbGllbnQoc3RkOjp1bmlx
dWVfcHRyPEFQSTo6TG9hZGVyQ2xpZW50Pik7CkBAIC0xMzczLDcgKzEzNzUsNyBAQCBwcml2YXRl
OgogI2lmIFBMQVRGT1JNKEVGTCkKICAgICBXZWJVSVBvcHVwTWVudUNsaWVudCBtX3VpUG9wdXBN
ZW51Q2xpZW50OwogI2VuZGlmCi0gICAgV2ViRmluZENsaWVudCBtX2ZpbmRDbGllbnQ7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEFQSTo6RmluZENsaWVudD4gbV9maW5kQ2xpZW50OwogICAgIFdlYkZp
bmRNYXRjaGVzQ2xpZW50IG1fZmluZE1hdGNoZXNDbGllbnQ7CiAjaWYgRU5BQkxFKENPTlRFWFRf
TUVOVVMpCiAgICAgV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50IG1fY29udGV4dE1lbnVDbGllbnQ7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUZpbmRDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUZpbmRDbGllbnQuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJRmluZENsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IEFQSUZpbmRDbGllbnRfaAorI2RlZmluZSBBUElGaW5kQ2xpZW50X2gKKworI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlBhZ2VQ
cm94eTsKK30KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIEZpbmRDbGllbnQgeworcHVibGlj
OgorICAgIHZpcnR1YWwgfkZpbmRDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRD
b3VudFN0cmluZ01hdGNoZXMoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmlu
ZyYsIHVpbnQzMl90IG1hdGNoQ291bnQpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5kU3Ry
aW5nKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCB1aW50MzJfdCBt
YXRjaENvdW50KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFRvRmluZFN0cmluZyhXZWJL
aXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9Cit9OworCit9IC8vIG5h
bWVzcGFjZSBBUEkKKworI2VuZGlmIC8vIEFQSUZpbmRDbGllbnRfaApJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHJldmlzaW9uIDE2NjU1OCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkFQSURh
dGEuaCIKKyNpbmNsdWRlICJBUElGaW5kQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJTG9hZGVyQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiQVBJUG9saWN5Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJVUlDbGll
bnQuaCIKQEAgLTY3Niw3ICs2NzcsNDAgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVD
bGllbnQoV0tQYQogCiB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kQ2xpZW50KFdLUGFnZVJlZiBwYWdl
UmVmLCBjb25zdCBXS1BhZ2VGaW5kQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgdG9JbXBs
KHBhZ2VSZWYpLT5pbml0aWFsaXplRmluZENsaWVudCh3a0NsaWVudCk7CisgICAgY2xhc3MgRmlu
ZENsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VGaW5kQ2xpZW50QmFzZT4sIHB1Ymxp
YyBBUEk6OkZpbmRDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgRmluZENs
aWVudChjb25zdCBXS1BhZ2VGaW5kQ2xpZW50QmFzZSogY2xpZW50KQorICAgICAgICB7CisgICAg
ICAgICAgICBpbml0aWFsaXplKGNsaWVudCk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5kU3RyaW5nKFdlYlBhZ2VQcm94eSogcGFnZSwgY29u
c3QgU3RyaW5nJiBzdHJpbmcsIHVpbnQzMl90IG1hdGNoQ291bnQpIG92ZXJyaWRlCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkRmluZFN0cmluZykKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZEZpbmRT
dHJpbmcodG9BUEkocGFnZSksIHRvQVBJKHN0cmluZy5pbXBsKCkpLCBtYXRjaENvdW50LCBtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCB2b2lk
IGRpZEZhaWxUb0ZpbmRTdHJpbmcoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIHN0
cmluZykgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRG
YWlsVG9GaW5kU3RyaW5nKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgbV9jbGllbnQuZGlkRmFpbFRvRmluZFN0cmluZyh0b0FQSShwYWdlKSwgdG9B
UEkoc3RyaW5nLmltcGwoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0K
KworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ291bnRTdHJpbmdNYXRjaGVzKFdlYlBhZ2VQcm94
eSogcGFnZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVpbnQzMl90IG1hdGNoQ291bnQpIG92ZXJy
aWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX2NsaWVudC5kaWRDb3VudFN0cmluZ01h
dGNoZXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAg
ICBtX2NsaWVudC5kaWRDb3VudFN0cmluZ01hdGNoZXModG9BUEkocGFnZSksIHRvQVBJKHN0cmlu
Zy5pbXBsKCkpLCBtYXRjaENvdW50LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAg
ICB9CisgICAgfTsKKworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RmluZENsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPEZpbmRDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tQYWdlU2V0UGFn
ZUZpbmRNYXRjaGVzQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5kTWF0
Y2hlc0NsaWVudEJhc2UqIHdrQ2xpZW50KQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDE2NjU1OCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBXS19BUElfRU5BQkxFRAogCisjaW1wb3J0ICJGaW5k
Q2xpZW50LmgiCiAjaW1wb3J0ICJOYXZpZ2F0aW9uU3RhdGUuaCIKICNpbXBvcnQgIlJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uLmgiCiAjaW1wb3J0ICJSZW1vdGVPYmplY3RSZWdpc3RyeS5oIgpA
QCAtNTMsNiArNTQsNyBAQAogI2ltcG9ydCAiV2ViUGFnZUdyb3VwLmgiCiAjaW1wb3J0ICJXZWJQ
YWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgorI2ltcG9ydCAiX1dLRmlu
ZERlbGVnYXRlLmgiCiAjaW1wb3J0ICJfV0tSZW1vdGVPYmplY3RSZWdpc3RyeUludGVybmFsLmgi
CiAjaW1wb3J0ICJfV0tWaXNpdGVkTGlua1Byb3ZpZGVySW50ZXJuYWwuaCIKICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KQEAgLTE5Miw5ICsxOTQsOCBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhGcmFtZTooQ0dSZWN0KWZyCiAgICAgX25hdmlnYXRpb25TdGF0ZSA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU+KHNlbGYpOwogICAgIF9wYWdlLT5zZXRQb2xpY3lD
bGllbnQoX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlUG9saWN5Q2xpZW50KCkpOwogICAgIF9wYWdl
LT5zZXRMb2FkZXJDbGllbnQoX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlTG9hZGVyQ2xpZW50KCkp
OwotCiAgICAgX3BhZ2UtPnNldFVJQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpVSUNs
aWVudD4oc2VsZikpOwotCisgICAgX3BhZ2UtPnNldEZpbmRDbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxXZWJLaXQ6OkZpbmRDbGllbnQ+KHNlbGYpKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAt
MTA3NCw2ICsxMDc1LDU1IEBAIC0gKHZvaWQpX3NldFBhZ2Vab29tRmFjdG9yOihkb3VibGUpem9v
bUYKICAgICBfcGFnZS0+c2V0UGFnZVpvb21GYWN0b3Ioem9vbUZhY3Rvcik7CiB9CiAKKy0gKGlk
IDxfV0tGaW5kRGVsZWdhdGU+KV9maW5kRGVsZWdhdGUKK3sKKyAgICByZXR1cm4gW3N0YXRpY19j
YXN0PFdlYktpdDo6RmluZENsaWVudCY+KF9wYWdlLT5maW5kQ2xpZW50KCkpLmRlbGVnYXRlKCku
bGVha1JlZigpIGF1dG9yZWxlYXNlXTsKK30KKworLSAodm9pZClfc2V0RmluZERlbGVnYXRlOihp
ZDxfV0tGaW5kRGVsZWdhdGU+KWZpbmREZWxlZ2F0ZQoreworICAgIHN0YXRpY19jYXN0PFdlYktp
dDo6RmluZENsaWVudCY+KF9wYWdlLT5maW5kQ2xpZW50KCkpLnNldERlbGVnYXRlKGZpbmREZWxl
Z2F0ZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgV2ViS2l0OjpGaW5kT3B0aW9ucyB0b0ZpbmRPcHRp
b25zKF9XS0ZpbmRPcHRpb25zIHdrRmluZE9wdGlvbnMpCit7CisgICAgdW5zaWduZWQgZmluZE9w
dGlvbnMgPSAwOworCisgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBfV0tGaW5kT3B0aW9uc0Nhc2VJ
bnNlbnNpdGl2ZSkKKyAgICAgICAgZmluZE9wdGlvbnMgfD0gV2ViS2l0OjpGaW5kT3B0aW9uc0Nh
c2VJbnNlbnNpdGl2ZTsKKyAgICBpZiAod2tGaW5kT3B0aW9ucyAmIF9XS0ZpbmRPcHRpb25zQXRX
b3JkU3RhcnRzKQorICAgICAgICBmaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRpb25zQXRX
b3JkU3RhcnRzOworICAgIGlmICh3a0ZpbmRPcHRpb25zICYgX1dLRmluZE9wdGlvbnNUcmVhdE1l
ZGlhbENhcGl0YWxBc1dvcmRTdGFydCkKKyAgICAgICAgZmluZE9wdGlvbnMgfD0gV2ViS2l0OjpG
aW5kT3B0aW9uc1RyZWF0TWVkaWFsQ2FwaXRhbEFzV29yZFN0YXJ0OworICAgIGlmICh3a0ZpbmRP
cHRpb25zICYgX1dLRmluZE9wdGlvbnNCYWNrd2FyZHMpCisgICAgICAgIGZpbmRPcHRpb25zIHw9
IFdlYktpdDo6RmluZE9wdGlvbnNCYWNrd2FyZHM7CisgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBf
V0tGaW5kT3B0aW9uc1dyYXBBcm91bmQpCisgICAgICAgIGZpbmRPcHRpb25zIHw9IFdlYktpdDo6
RmluZE9wdGlvbnNXcmFwQXJvdW5kOworICAgIGlmICh3a0ZpbmRPcHRpb25zICYgX1dLRmluZE9w
dGlvbnNTaG93T3ZlcmxheSkKKyAgICAgICAgZmluZE9wdGlvbnMgfD0gV2ViS2l0OjpGaW5kT3B0
aW9uc1Nob3dPdmVybGF5OworICAgIGlmICh3a0ZpbmRPcHRpb25zICYgX1dLRmluZE9wdGlvbnNT
aG93RmluZEluZGljYXRvcikKKyAgICAgICAgZmluZE9wdGlvbnMgfD0gV2ViS2l0OjpGaW5kT3B0
aW9uc1Nob3dGaW5kSW5kaWNhdG9yOworICAgIGlmICh3a0ZpbmRPcHRpb25zICYgX1dLRmluZE9w
dGlvbnNTaG93SGlnaGxpZ2h0KQorICAgICAgICBmaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRP
cHRpb25zU2hvd0hpZ2hsaWdodDsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXQ6OkZp
bmRPcHRpb25zPihmaW5kT3B0aW9ucyk7Cit9CisKKy0gKHZvaWQpX2NvdW50U3RyaW5nTWF0Y2hl
czooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9uczooX1dLRmluZE9wdGlvbnMpb3B0aW9ucyBtYXhD
b3VudDooTlNVSW50ZWdlciltYXhDb3VudAoreworICAgIF9wYWdlLT5jb3VudFN0cmluZ01hdGNo
ZXMoc3RyaW5nLCB0b0ZpbmRPcHRpb25zKG9wdGlvbnMpLCBtYXhDb3VudCk7Cit9CisKKy0gKHZv
aWQpX2ZpbmRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIG9wdGlvbnM6KF9XS0ZpbmRPcHRpb25z
KW9wdGlvbnMgbWF4Q291bnQ6KE5TVUludGVnZXIpbWF4Q291bnQKK3sKKyAgICBfcGFnZS0+Zmlu
ZFN0cmluZyhzdHJpbmcsIHRvRmluZE9wdGlvbnMob3B0aW9ucyksIG1heENvdW50KTsKK30KKwor
LSAodm9pZClfaGlkZUZpbmRVSQoreworICAgIF9wYWdlLT5oaWRlRmluZFVJKCk7Cit9CisKICNw
cmFnbWEgbWFyayBpT1Mtc3BlY2lmaWMgbWV0aG9kcwogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAt
MTE3NCw2ICsxMjI0LDExIEBAIC0gKHZvaWQpX3NuYXBzaG90UmVjdDooQ0dSZWN0KXJlY3RJblZp
ZXcKICAgICB9KTsKIH0KIAorLSAoVUlWaWV3ICopX2hvc3RGb3JGaW5kVUkKK3sKKyAgICByZXR1
cm4gW3NlbGYgdmlld0Zvclpvb21pbmdJblNjcm9sbFZpZXc6W3NlbGYgc2Nyb2xsVmlld11dOwor
fQorCiAjZWxzZQogCiAjcHJhZ21hIG1hcmsgLSBPUyBYLXNwZWNpZmljIG1ldGhvZHMKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
UHJpdmF0ZS5oCShyZXZpc2lvbiAxNjY1NTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsOSArNDAs
MjEgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLUGFnaW5hdGlvbgogICAgIF9XS1Bh
Z2luYXRpb25Nb2RlQm90dG9tVG9Ub3AsCiB9OwogCit0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50
ZWdlciwgX1dLRmluZE9wdGlvbnMpIHsKKyAgICBfV0tGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2
ZSA9IDEgPDwgMCwKKyAgICBfV0tGaW5kT3B0aW9uc0F0V29yZFN0YXJ0cyA9IDEgPDwgMSwKKyAg
ICBfV0tGaW5kT3B0aW9uc1RyZWF0TWVkaWFsQ2FwaXRhbEFzV29yZFN0YXJ0ID0gMSA8PCAyLAor
ICAgIF9XS0ZpbmRPcHRpb25zQmFja3dhcmRzID0gMSA8PCAzLAorICAgIF9XS0ZpbmRPcHRpb25z
V3JhcEFyb3VuZCA9IDEgPDwgNCwKKyAgICBfV0tGaW5kT3B0aW9uc1Nob3dPdmVybGF5ID0gMSA8
PCA1LAorICAgIF9XS0ZpbmRPcHRpb25zU2hvd0ZpbmRJbmRpY2F0b3IgPSAxIDw8IDYsCisgICAg
X1dLRmluZE9wdGlvbnNTaG93SGlnaGxpZ2h0ID0gMSA8PCA3LAorfTsKKwogQGNsYXNzIFdLQnJv
d3NpbmdDb250ZXh0SGFuZGxlOwogQGNsYXNzIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5OwogQHBy
b3RvY29sIFdLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZTsKK0Bwcm90b2NvbCBfV0tGaW5kRGVsZWdh
dGU7CiAKIEBpbnRlcmZhY2UgV0tXZWJWaWV3IChXS1ByaXZhdGUpCiAKQEAgLTk1LDYgKzEwNyw5
IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1BhZ2luYXRpb24KIC0gKHZvaWQpX2hp
ZGVJbnNwZWN0b3JJbmRpY2F0aW9uOwogCiAtICh2b2lkKV9zbmFwc2hvdFJlY3Q6KENHUmVjdCly
ZWN0SW5WaWV3Q29vcmRpbmF0ZXMgaW50b0ltYWdlT2ZXaWR0aDooQ0dGbG9hdClpbWFnZVdpZHRo
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKENHSW1hZ2VSZWYpKWNvbXBsZXRpb25IYW5kbGVy
OworCistIChVSVZpZXcgKilfaG9zdEZvckZpbmRVSTsKKwogI2Vsc2UKIEBwcm9wZXJ0eSAocmVh
ZG9ubHkpIE5TQ29sb3IgKl9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7CiBAcHJvcGVydHkg
KG5vbmF0b21pYywgc2V0dGVyPV9zZXREcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZDopIEJPT0wg
X2RyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kOwpAQCAtMTE2LDYgKzEzMSwxMSBAQCB0eXBlZGVm
IE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tQYWdpbmF0aW9uCiBAcHJvcGVydHkgKG5vbmF0b21pYywg
c2V0dGVyPV9zZXRUZXh0Wm9vbUZhY3RvcjopIGRvdWJsZSBfdGV4dFpvb21GYWN0b3I7CiBAcHJv
cGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRQYWdlWm9vbUZhY3RvcjopIGRvdWJsZSBfcGFn
ZVpvb21GYWN0b3I7CiAKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldEZp
bmREZWxlZ2F0ZTopIGlkIDxfV0tGaW5kRGVsZWdhdGU+IF9maW5kRGVsZWdhdGU7CistICh2b2lk
KV9maW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25zOihfV0tGaW5kT3B0aW9ucylv
cHRpb25zIG1heENvdW50OihOU1VJbnRlZ2VyKW1heENvdW50OworLSAodm9pZClfY291bnRTdHJp
bmdNYXRjaGVzOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25zOihfV0tGaW5kT3B0aW9ucylvcHRp
b25zIG1heENvdW50OihOU1VJbnRlZ2VyKW1heENvdW50OworLSAodm9pZClfaGlkZUZpbmRVSTsK
KwogQGVuZAogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLRmluZERlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tGaW5kRGVsZWdhdGUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRmluZERlbGVnYXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdDIvV0tGb3Vu
ZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaD4KKworQHByb3RvY29sIF9XS0ZpbmREZWxlZ2F0ZSA8TlNPYmplY3Q+CisKK0Bv
cHRpb25hbAorCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZENvdW50
TWF0Y2hlczooTlNVSW50ZWdlciltYXRjaGVzIGZvclN0cmluZzooTlNTdHJpbmcgKilzdHJpbmc7
CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmRNYXRjaGVzOihO
U1VJbnRlZ2VyKW1hdGNoZXMgZm9yU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZzsKKy0gKHZvaWQp
X3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmFpbFRvRmluZFN0cmluZzooTlNTdHJp
bmcgKilzdHJpbmc7CisKK0BlbmQKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvRmluZENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9GaW5kQ2xpZW50LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvRmluZENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZpbmRDbGllbnRfaAorI2RlZmluZSBGaW5kQ2xp
ZW50X2gKKworI2ltcG9ydCAiV0tGb3VuZGF0aW9uLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAor
CisjaW1wb3J0ICJBUElGaW5kQ2xpZW50LmgiCisjaW1wb3J0ICJXZWFrT2JqQ1B0ci5oIgorCitA
Y2xhc3MgV0tXZWJWaWV3OworQHByb3RvY29sIF9XS0ZpbmREZWxlZ2F0ZTsKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIEZpbmRDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpGaW5kQ2xp
ZW50IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBGaW5kQ2xpZW50KFdLV2ViVmlldyAqKTsKKyAg
ICAKKyAgICBSZXRhaW5QdHI8aWQgPF9XS0ZpbmREZWxlZ2F0ZT4gPiBkZWxlZ2F0ZSgpOworICAg
IHZvaWQgc2V0RGVsZWdhdGUoaWQgPF9XS0ZpbmREZWxlZ2F0ZT4pOworICAgIAorcHJpdmF0ZToK
KyAgICAvLyBGcm9tIEFQSTo6RmluZENsaWVudAorICAgIHZpcnR1YWwgdm9pZCBkaWRDb3VudFN0
cmluZ01hdGNoZXMoV2ViUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiwgdWludDMyX3QgbWF0Y2hD
b3VudCk7CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmRTdHJpbmcoV2ViUGFnZVByb3h5KiwgY29u
c3QgU3RyaW5nJiwgdWludDMyX3QgbWF0Y2hDb3VudCk7CisgICAgdmlydHVhbCB2b2lkIGRpZEZh
aWxUb0ZpbmRTdHJpbmcoV2ViUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJik7CisgICAgCisgICAg
V0tXZWJWaWV3ICptX3dlYlZpZXc7CisgICAgV2Vha09iakNQdHI8aWQgPF9XS0ZpbmREZWxlZ2F0
ZT4gPiBtX2RlbGVnYXRlOworICAgIAorICAgIHN0cnVjdCB7CisgICAgICAgIGJvb2wgd2Vidmll
d0RpZENvdW50U3RyaW5nTWF0Y2hlcyA6IDE7CisgICAgICAgIGJvb2wgd2Vidmlld0RpZEZpbmRT
dHJpbmcgOiAxOworICAgICAgICBib29sIHdlYnZpZXdEaWRGYWlsVG9GaW5kU3RyaW5nIDogMTsK
KyAgICB9IG1fZGVsZWdhdGVNZXRob2RzOworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKKworI2VuZGlmIC8vIEZpbmRDbGllbnRfaApJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0ZpbmRDbGllbnQubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0ZpbmRDbGllbnQubW0JKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvRmluZENsaWVudC5t
bQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJGaW5kQ2xpZW50LmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAor
CisjaW1wb3J0ICJfV0tGaW5kRGVsZWdhdGUuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0Zp
bmRDbGllbnQ6OkZpbmRDbGllbnQoV0tXZWJWaWV3ICp3ZWJWaWV3KQorICAgIDogbV93ZWJWaWV3
KHdlYlZpZXcpCit7Cit9CisgICAgCitSZXRhaW5QdHI8aWQgPF9XS0ZpbmREZWxlZ2F0ZT4gPiBG
aW5kQ2xpZW50OjpkZWxlZ2F0ZSgpCit7CisgICAgcmV0dXJuIG1fZGVsZWdhdGUuZ2V0KCk7Cit9
CisKK3ZvaWQgRmluZENsaWVudDo6c2V0RGVsZWdhdGUoaWQgPF9XS0ZpbmREZWxlZ2F0ZT4gZGVs
ZWdhdGUpCit7CisgICAgbV9kZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgbV9kZWxlZ2F0ZU1l
dGhvZHMud2Vidmlld0RpZENvdW50U3RyaW5nTWF0Y2hlcyA9IFtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZENvdW50TWF0Y2hlczpmb3JTdHJpbmc6KV07
CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2Vidmlld0RpZEZpbmRTdHJpbmcgPSBbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWRGaW5kTWF0Y2hlczpmb3JT
dHJpbmc6KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2Vidmlld0RpZEZhaWxUb0ZpbmRTdHJp
bmcgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWRG
YWlsVG9GaW5kU3RyaW5nOildOworfQorICAgIAordm9pZCBGaW5kQ2xpZW50OjpkaWRDb3VudFN0
cmluZ01hdGNoZXMoV2ViUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVpbnQzMl90
IG1hdGNoQ291bnQpCit7CisgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLndlYnZpZXdEaWRDb3Vu
dFN0cmluZ01hdGNoZXMpCisgICAgICAgIFttX2RlbGVnYXRlLmdldCgpIF93ZWJWaWV3Om1fd2Vi
VmlldyBkaWRDb3VudE1hdGNoZXM6bWF0Y2hDb3VudCBmb3JTdHJpbmc6c3RyaW5nXTsKK30KKwor
dm9pZCBGaW5kQ2xpZW50OjpkaWRGaW5kU3RyaW5nKFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCB1aW50MzJfdCBtYXRjaENvdW50KQoreworICAgIGlmIChtX2RlbGVnYXRlTWV0
aG9kcy53ZWJ2aWV3RGlkRmluZFN0cmluZykKKyAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX3dl
YlZpZXc6bV93ZWJWaWV3IGRpZEZpbmRNYXRjaGVzOm1hdGNoQ291bnQgZm9yU3RyaW5nOnN0cmlu
Z107Cit9CisKK3ZvaWQgRmluZENsaWVudDo6ZGlkRmFpbFRvRmluZFN0cmluZyhXZWJQYWdlUHJv
eHkqLCBjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMu
d2Vidmlld0RpZEZhaWxUb0ZpbmRTdHJpbmcpCisgICAgICAgIFttX2RlbGVnYXRlLmdldCgpIF93
ZWJWaWV3Om1fd2ViVmlldyBkaWRGYWlsVG9GaW5kU3RyaW5nOnN0cmluZ107Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQkocmV2
aXNpb24gMTY2NTU4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCAiX1dL
RG93bmxvYWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAi
RG93bmxvYWRQcm94eS5oIgorI2ltcG9ydCAiRmluZEluZGljYXRvci5oIgogI2ltcG9ydCAiTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgogI2ltcG9ydCAiSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
UG9zaXRpb24uaCIKICNpbXBvcnQgIldLQ29udGVudFZpZXcuaCIKQEAgLTMwMyw5ICszMDQsOSBA
QCBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllCiAgICAgcmV0dXJuIDA7
CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OnNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxG
aW5kSW5kaWNhdG9yPiwgYm9vbCwgYm9vbCkKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNldEZpbmRJ
bmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNhdG9yPiBmaW5kSW5kaWNhdG9yLCBib29sIGZh
ZGVPdXQsIGJvb2wgYW5pbWF0ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIFttX2Nv
bnRlbnRWaWV3IF9zZXRGaW5kSW5kaWNhdG9yOmZpbmRJbmRpY2F0b3IgZmFkZU91dDpmYWRlT3V0
IGFuaW1hdGU6YW5pbWF0ZV07CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OmVudGVyQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29u
dGV4dCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
dy5oCShyZXZpc2lvbiAxNjY1NTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIGNsYXNzIERyYXdpbmdBcmVhUHJveHk7CitjbGFzcyBGaW5kSW5kaWNhdG9y
OwogY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5OwogY2xhc3MgUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb247CiBjbGFzcyBXZWJDb250ZXh0OwpAQCAtODQsNCArODUsNiBA
QCBzdHJ1Y3QgV2ViUGFnZUNvbmZpZ3VyYXRpb247CiAtIChCT09MKV96b29tVG9SZWN0OihDR1Jl
Y3QpdGFyZ2V0UmVjdCB3aXRoT3JpZ2luOihDR1BvaW50KW9yaWdpbiBmaXRFbnRpcmVSZWN0OihC
T09MKWZpdEVudGlyZVJlY3QgbWluaW11bVNjYWxlOihkb3VibGUpbWluaW11bVNjYWxlIG1heGlt
dW1TY2FsZTooZG91YmxlKW1heGltdW1TY2FsZSBtaW5pbXVtU2Nyb2xsRGlzdGFuY2U6KENHRmxv
YXQpbWluaW11bVNjcm9sbERpc3RhbmNlOwogLSAodm9pZClfem9vbU91dFdpdGhPcmlnaW46KENH
UG9pbnQpb3JpZ2luOwogCistICh2b2lkKV9zZXRGaW5kSW5kaWNhdG9yOihQYXNzUmVmUHRyPFdl
YktpdDo6RmluZEluZGljYXRvcj4pZmluZEluZGljYXRvciBmYWRlT3V0OihCT09MKWZhZGVPdXQg
YW5pbWF0ZTooQk9PTClhbmltYXRlOworCiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCShyZXZpc2lvbiAxNjY1NTgpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0JKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDYgKzQ3LDcgQEAKICNpbXBvcnQgIldlYlN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9y
dCAiV2ViS2l0U3lzdGVtSW50ZXJmYWNlSU9TLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmll
dy5oPgorI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2ltcG9ydCA8VUlLaXQv
VUlXaW5kb3dfUHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CkBAIC00ODQsNiArNDg1LDExIEBAIC0gKHZvaWQpX2FwcGxpY2F0
aW9uRGlkQmVjb21lQWN0aXZlOihOU04KICAgICBfcGFnZS0+YXBwbGljYXRpb25EaWRCZWNvbWVB
Y3RpdmUoKTsKIH0KIAorLSAodm9pZClfc2V0RmluZEluZGljYXRvcjooUGFzc1JlZlB0cjxXZWJL
aXQ6OkZpbmRJbmRpY2F0b3I+KWZpbmRJbmRpY2F0b3IgZmFkZU91dDooQk9PTClmYWRlT3V0IGFu
aW1hdGU6KEJPT0wpYW5pbWF0ZQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIEBlbmQK
IAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2NjU1OCkKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtNDcsNiArNDcsMTAgQEAKIC8qIEVuZCBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlv
biAqLwogCiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCQkwMDVEMTU4RjE4RTRD
NEVCMDA3MzQ2MTkgLyogX1dLRmluZERlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMDVEMTU4RTE4RTRDNEVCMDA3MzQ2MTkgLyogX1dLRmlu
ZERlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMDBCOTY2MTYxOEUyNENCQTAwQ0UxRjg4IC8qIEFQSUZpbmRDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwQjk2NjE1MThFMjRDQkEw
MENFMUY4OCAvKiBBUElGaW5kQ2xpZW50LmggKi87IH07CisJCTAwQjk2NjE5MThFMjVBRTEwMENF
MUY4OCAvKiBGaW5kQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDBCOTY2MTcxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQubW0gKi87
IH07CisJCTAwQjk2NjFBMThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMEI5NjYxODE4RTI1QUUxMDBD
RTFGODggLyogRmluZENsaWVudC5oICovOyB9OwogCQkwRjBDMzY1ODE4QzA1MUJBMDBGNjA3RDcg
LyogUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEMzNjU3MThDMDUxQkEwMEY2MDdENyAvKiBSZW1vdGVMYXll
clRyZWVIb3N0SU9TLm1tICovOyB9OwogCQkwRjBDMzY1QTE4QzA1NTU4MDBGNjA3RDcgLyogTGF5
ZXJSZXByZXNlbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYwQzM2NTkxOEMwNTU1ODAwRjYwN0Q3IC8qIExheWVyUmVwcmVzZW50YXRpb24u
aCAqLzsgfTsKIAkJMEYwQzM2NUMxOEMwNUNBMTAwRjYwN0Q3IC8qIFJlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yUHJveHlJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjBDMzY1QjE4QzA1Q0ExMDBGNjA3RDcgLyogUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JQcm94eUlPUy5tbSAqLzsgfTsKQEAgLTE3ODIsNiArMTc4NiwxMCBAQAogLyogRW5k
IFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGaWxlUmVm
ZXJlbmNlIHNlY3Rpb24gKi8KKwkJMDA1RDE1OEUxOEU0QzRFQjAwNzM0NjE5IC8qIF9XS0ZpbmRE
ZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tGaW5kRGVsZWdh
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDBCOTY2MTUxOEUyNENCQTAwQ0Ux
Rjg4IC8qIEFQSUZpbmRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QVBJRmluZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwMEI5NjYxNzE4
RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEZpbmRDbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTAwQjk2NjE4MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbmRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDg2N0Q2QTVGRTg0MDMwN0MwMkFBQzA3IC8qIEFwcEtpdC5mcmFtZXdvcmsgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZy
YW1ld29yazsgbmFtZSA9IEFwcEtpdC5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9
OwogCQkwODlDMTY2N0ZFODQxMTU4QzAyQUFDMDcgLyogRW5nbGlzaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
cGxpc3Quc3RyaW5nczsgbmFtZSA9IEVuZ2xpc2g7IHBhdGggPSBFbmdsaXNoLmxwcm9qL0luZm9Q
bGlzdC5zdHJpbmdzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBDMzY1NzE4QzA1
MUJBMDBGNjA3RDcgLyogUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFJlbW90ZUxheWVyVHJlZUhvc3RJT1MubW07IHBhdGgg
PSBpb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTQyNDAsNiArNDI0OCw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlBMURGNjMxMTE4
RTBCN0M4MDAzQTNFMkEgLyogRG93bmxvYWRDbGllbnQuaCAqLywKIAkJCQlBMURGNjMxMDE4RTBC
N0M4MDAzQTNFMkEgLyogRG93bmxvYWRDbGllbnQubW0gKi8sCisJCQkJMDBCOTY2MTgxOEUyNUFF
MTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQuaCAqLywKKwkJCQkwMEI5NjYxNzE4RTI1QUUxMDBDRTFG
ODggLyogRmluZENsaWVudC5tbSAqLywKIAkJCQkxQTQyMkY4RDE4QjI5QzY0MDBEOENEOTYgLyog
SGlzdG9yeUNsaWVudC5oICovLAogCQkJCTFBNDIyRjhDMThCMjlDNjQwMEQ4Q0Q5NiAvKiBIaXN0
b3J5Q2xpZW50Lm1tICovLAogCQkJCTBGMEMzNjU5MThDMDU1NTgwMEY2MDdENyAvKiBMYXllclJl
cHJlc2VudGF0aW9uLmggKi8sCkBAIC00NjI0LDYgKzQ2MzQsNyBAQAogCQkJCUExQTRGRTU3MThE
Q0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZC5oICovLAogCQkJCUExQTRGRTU4MThEQ0U5RkEw
MEI1RUE4QSAvKiBfV0tEb3dubG9hZC5tbSAqLywKIAkJCQlBMUE0RkU2MDE4REQ1NEE0MDBCNUVB
OEEgLyogX1dLRG93bmxvYWREZWxlZ2F0ZS5oICovLAorCQkJCTAwNUQxNThFMThFNEM0RUIwMDcz
NDYxOSAvKiBfV0tGaW5kRGVsZWdhdGUuaCAqLywKIAkJCQlBMUE0RkU1OTE4RENFOUZBMDBCNUVB
OEEgLyogX1dLRG93bmxvYWRJbnRlcm5hbC5oICovLAogCQkJCTM3OUE4NzM4MThCQkZFMEYwMDU4
OEFGMiAvKiBfV0tFbGVtZW50QWN0aW9uLmggKi8sCiAJCQkJMzc5QTg3MzcxOEJCRkUwRjAwNTg4
QUYyIC8qIF9XS0VsZW1lbnRBY3Rpb24ubW0gKi8sCkBAIC01NDc2LDYgKzU0ODcsNyBAQAogCQkJ
CTJEQTk0NDc3MTg4NEUzQUIwMEVEODZEQiAvKiBpb3MgKi8sCiAJCQkJQkMxMTFCNDcxMTJGNjE2
OTAwMzM3QkFCIC8qIG1hYyAqLywKIAkJCQkxRjdEMzZDMDE4REE1MTNGMDBEOUQ2NTkgLyogQVBJ
RG93bmxvYWRDbGllbnQuaCAqLywKKwkJCQkwMEI5NjYxNTE4RTI0Q0JBMDBDRTFGODggLyogQVBJ
RmluZENsaWVudC5oICovLAogCQkJCTFBNjYzN0Q2MThCMjgzMUYwMEMwQkNGMyAvKiBBUElIaXN0
b3J5Q2xpZW50LmggKi8sCiAJCQkJMUEyNDY0RjIxODkxRTQ1MTAwMjM0QzVCIC8qIEFQSUxvYWRl
ckNsaWVudC5oICovLAogCQkJCTFBRkREMzE0MTg5MUI1NDAwMDE1Mzk3MCAvKiBBUElQb2xpY3lD
bGllbnQuaCAqLywKQEAgLTY4OTEsNiArNjkwMyw3IEBACiAJCQkJMUE0MjJGOEIxOEIyOUI1NDAw
RDhDRDk2IC8qIFdLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MzcwRjM0QTcxODI5Q0ZGMzAwOTAyN0M4IC8qIFdLQnJvd3NpbmdDb250ZXh0SGlzdG9yeURlbGVn
YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUYwNUQ4NzE0Njg4MzQ4MDA4QjFFODEgLyogVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDBC
OTY2MUExOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBNjQyNDVFMTJERTI5QTEwMENBQUUyQyAvKiBVcGRhdGVJbmZvLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0IwQjBFMDEyMzA1QUIxMDBCMTM0MUUgLyogVXNlck1lc3NhZ2VDb2RlcnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBMEYyOUU0MTIwQjQ0NDIwMDUzRDFCOSAvKiBWaXNpdGVkTGlua1By
b3ZpZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTY5MzQsNiArNjk0Nyw3IEBACiAJCQkJQkMwMzJE
NzcxMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkNvbnRleHRNZW51Q2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk3NUU3NDlFQzE4MERCQjk4MDAwODhCQTYgLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQ
cm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTI5MzVEODEyODhEMTk0MDBBNEI2
OTUgLyogV2ViQ29udGV4dE1lbnVJdGVtLmggaW4gSGVhZGVycyAqLywKKwkJCQkwMEI5NjYxNjE4
RTI0Q0JBMDBDRTFGODggLyogQVBJRmluZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEw
RkJCOUIxMjg4Qzk1RTAwQUZGREY0IC8qIFdlYkNvbnRleHRNZW51SXRlbURhdGEuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxQUNCQjgyMTI3QThCQUQwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVBy
b3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI4QTFGNDE4NDAwQjhGMDBFOUFFNjkgLyogV0tQ
YWdlRmluZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC03MjMxLDYgKzcyNDUsNyBAQAogCQkJ
CTdDRDVFQkI5MTc0NkExNUIwMDBDMUM0NSAvKiBXS09iakNUeXBlV3JhcHBlclJlZi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMzc4RTFBNDAxODFFREEwMTAwMzEwMDdBIC8qIFdLT2JqZWN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzg1N0ZFNjEyQjg0M0Q4MDBFREVCMkUgLyogV0tPcGVuUGFuZWxQ
YXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwMDVEMTU4RjE4RTRDNEVCMDA3MzQ2MTkg
LyogX1dLRmluZERlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzFERkU4RjEyQjMxQ0E4
MDA1REY3MzAgLyogV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNENTk3RDcxMTJCNTZEQzAwRUM4QzIzIC8qIFdLUGFnZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkQ2Q0QxMTkxODkwNThBNTAwRTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTgxNzAsNiArODE4NSw3IEBACiAJCQkJREY1OEM2MzYxMzcxQUNBMDAwRjlB
MzdDIC8qIE5hdGl2ZVdlYldoZWVsRXZlbnRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTZG
QkEyQjExRTY4NjI3MDBEQjEzNzEgLyogTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUE2RkJEMjkxMUU2OUJDMjAwREIxMzcxIC8qIE5ldHNjYXBlUGx1Z2luLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTAwQjk2NjE5MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xp
ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFNUI3RkIxMUU3QUVEMjAwQkE2NzY3IC8qIE5l
dHNjYXBlUGx1Z2luTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0QTlDNTUxMkI4MTZDRjAw
OEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
NEE5QzlBMTJCODIxQ0QwMDhGRTk4NCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbSBpbiBT
b3VyY2VzICovLAo=
</data>
<flag name="review"
          id="252519"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>