<?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>137277</bug_id>
          
          <creation_ts>2014-09-30 17:11:34 -0700</creation_ts>
          <short_desc>Clean up: Move XPC forward declarations in JavaScriptCore to WTF SPI wrapper header</short_desc>
          <delta_ts>2014-10-02 09:24:25 -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>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>137320</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>aestes</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>mjs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1038403</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-09-30 17:11:34 -0700</bug_when>
    <thetext>We should move the conditional inclusion of the XPC headers &lt;xpc/xpc.h&gt; and &lt;xpc/private.h&gt; and forward declarations of XPC functions in various JavaScriptCore and WebKit2 files to a centralized SPI wrapper header in WTF, say WTF/wtf/spi/cocoa/XPCSPI.h. Then we can remove duplicate code. This will also aid in making WebKit2 build for iOS with the public iOS SDK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038407</commentid>
    <comment_count>1</comment_count>
      <attachid>238978</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-09-30 17:14:00 -0700</bug_when>
    <thetext>Created attachment 238978
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038412</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-30 17:15:20 -0700</bug_when>
    <thetext>Attachment 238978 did not pass style-queue:


ERROR: Source/WTF/wtf/spi/cocoa/XPCSPI.h:38:  xpc_connection_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/spi/cocoa/XPCSPI.h:50:  xpc_object_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/spi/cocoa/XPCSPI.h:51:  xpc_connection_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/spi/cocoa/XPCSPI.h:57:  xpc_type_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 4 in 13 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>1038595</commentid>
    <comment_count>3</comment_count>
      <attachid>239035</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-10-01 11:19:58 -0700</bug_when>
    <thetext>Created attachment 239035
Patch

_xpc_error_connection_invalid and _xpc_error_termination_imminent are only const in OS X &gt;= 10.9</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038596</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-01 11:21:44 -0700</bug_when>
    <thetext>Attachment 239035 did not pass style-queue:


ERROR: Source/WTF/wtf/spi/cocoa/XPCSPI.h:38:  xpc_connection_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/spi/cocoa/XPCSPI.h:50:  xpc_object_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/spi/cocoa/XPCSPI.h:51:  xpc_connection_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/spi/cocoa/XPCSPI.h:57:  xpc_type_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 4 in 13 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>1038641</commentid>
    <comment_count>5</comment_count>
      <attachid>239035</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-10-01 13:54:55 -0700</bug_when>
    <thetext>Comment on attachment 239035
Patch

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

&gt; Source/WTF/ChangeLog:14
&gt; +        * wtf/spi/cocoa/XPCSPI.h: Added.

It is annoying to have this in a cocoa directory, because XPC has nothing to do with Cocoa. Maybe darwin?

&gt; Source/WTF/wtf/spi/cocoa/XPCSPI.h:87
&gt; +EXTERN_C CONST_ON_OR_AFTER_MAC_OS_X_VERSION_1090 struct _xpc_dictionary_s _xpc_error_connection_invalid;

Where does EXTERN_C come from? I&apos;d prefer a plain extern &quot;C&quot; - it&apos;s no more verbose, but clearly less fragile.

&gt; Source/WTF/wtf/spi/cocoa/XPCSPI.h:99
&gt; +#if __BLOCKS__

We use &quot;#ifdef __BLOCKS__&quot; elsewhere in WebKit. Which is right?

&gt; Source/WTF/wtf/spi/cocoa/XPCSPI.h:152
&gt; +#if !defined(xpc_retain) &amp;&amp; OS_OBJECT_USE_OBJC_RETAIN_RELEASE
&gt; +#define xpc_retain(object) ({ xpc_object_t _o = (object); _xpc_object_validate(_o); [_o retain]; })
&gt; +#endif
&gt; +
&gt; +#if !defined(xpc_release) &amp;&amp; OS_OBJECT_USE_OBJC_RETAIN_RELEASE
&gt; +#define xpc_release(object) ({ xpc_object_t _o = (object); _xpc_object_validate(_o); [_o release]; })
&gt; +#endif

Does this compile in .cpp files?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038672</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-10-01 15:21:01 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 239035 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=239035&amp;action=review
&gt; 
&gt; &gt; Source/WTF/ChangeLog:14
&gt; &gt; +        * wtf/spi/cocoa/XPCSPI.h: Added.
&gt; 
&gt; It is annoying to have this in a cocoa directory, because XPC has nothing to do with Cocoa. Maybe darwin?
&gt; 

Will move file to spi/darwin.

&gt; &gt; Source/WTF/wtf/spi/cocoa/XPCSPI.h:87
&gt; &gt; +EXTERN_C CONST_ON_OR_AFTER_MAC_OS_X_VERSION_1090 struct _xpc_dictionary_s _xpc_error_connection_invalid;
&gt; 
&gt; Where does EXTERN_C come from?

EXTERN_C is defined in wtf/Compiler.h, &lt;http://trac.webkit.org/browser/trunk/Source/WTF/wtf/Compiler.h?rev=174110#L160&gt;. It was added in &lt;http://trac.webkit.org/changeset/174110&gt;. EXTERN_C is defined to be either &apos;extern &quot;C&quot;&apos; or &apos;extern&apos; depending on whether we are compiling a C++/Objective-C++ file or C/Objective-C file, respectively.

&gt; I&apos;d prefer a plain extern &quot;C&quot; - it&apos;s no more verbose, but clearly less fragile.

Notice that an extern &quot;C&quot;-block is only applicable in a C++/Objective-C++ source file since symbols declared in a C/Objective-C file have C-style linkage by default. So, we don&apos;t want &apos;extern &quot;C&quot;&apos; to be in the source file. Otherwise, it will cause a compile error since &quot;C&quot; in &apos;extern &quot;C&quot;&apos; is an unexpected string literal.

It seems reasonable to support including the header XPCSPI.h from a C, Objective-C file (especially the latter).

&gt; 
&gt; &gt; Source/WTF/wtf/spi/cocoa/XPCSPI.h:99
&gt; &gt; +#if __BLOCKS__
&gt; 
&gt; We use &quot;#ifdef __BLOCKS__&quot; elsewhere in WebKit. Which is right?
&gt; 

#ifdef __BLOCKS__ is a better form. I noticed that we also have COMPILER_SUPPORTS(BLOCKS). Unless you feel strongly to use #ifdef __BLOCKS__, I&apos;ll change this line to read:

#if COMPILER_SUPPORTS(BLOCKS)

This will make querying for the Block language extension consistent with how we query for other compiler extensions/features.

We should look to substitute COMPILER_SUPPORTS(BLOCKS) for __BLOCKS__ at other call sites. I suggest we do this in a separate patch.

&gt; &gt; Source/WTF/wtf/spi/cocoa/XPCSPI.h:152
&gt; &gt; +#if !defined(xpc_retain) &amp;&amp; OS_OBJECT_USE_OBJC_RETAIN_RELEASE
&gt; &gt; +#define xpc_retain(object) ({ xpc_object_t _o = (object); _xpc_object_validate(_o); [_o retain]; })
&gt; &gt; +#endif
&gt; &gt; +
&gt; &gt; +#if !defined(xpc_release) &amp;&amp; OS_OBJECT_USE_OBJC_RETAIN_RELEASE
&gt; &gt; +#define xpc_release(object) ({ xpc_object_t _o = (object); _xpc_object_validate(_o); [_o release]; })
&gt; &gt; +#endif
&gt; 
&gt; Does this compile in .cpp files?

Notice these macro defines are conditional on compiling a Objective-C/C++ file with a compiler that support ARC (by definition of OS_OBJECT_USE_OBJC_RETAIN_RELEASE in os/object.h). So, a C++ file that includes XPCSPI.h will compile (since these macros are not applicable).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038685</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-10-01 15:38:39 -0700</bug_when>
    <thetext>Committed r174180: &lt;http://trac.webkit.org/changeset/174180&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038706</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-01 16:24:24 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 137320</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038876</commentid>
    <comment_count>9</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-10-02 09:24:25 -0700</bug_when>
    <thetext>Committed r174220: &lt;http://trac.webkit.org/changeset/174220&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238978</attachid>
            <date>2014-09-30 17:14:00 -0700</date>
            <delta_ts>2014-10-01 11:19:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137277-20140930171401.patch</filename>
            <type>text/plain</type>
            <size>20385</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YmEyMDQ0OWM5NmM2MDM3ZjQzMjMwNjdkNTM4MjRmNzliM2VmMzBmLi45ODg5ZTZmNzk3Y2MxNTRj
MDMyMTgxZTM5NzMxZmRkM2VjNzZiMGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxNC0wOS0zMCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+
CisKKyAgICAgICAgQ2xlYW4gdXA6IE1vdmUgWFBDIGZvcndhcmQgZGVjbGFyYXRpb25zIGluIEph
dmFTY3JpcHRDb3JlIHRvIFdURiBTUEkgd3JhcHBlciBoZWFkZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzI3NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSB3dGYvc3BpL2NvY29hL1hQQ1NQSS5o
IGluc3RlYWQgb2YgaW5jbHVkaW5nIHRoZSBjb3JyZXNwb25kaW5nIFhQQyBoZWFkZXJzLworICAg
ICAgICBmb3J3YXJkIGRlY2xhcmluZyBYUEMgZnVuY3Rpb25zLgorCisgICAgICAgICogaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW06CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90
ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmg6CisgICAgICAgICogaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tOgorCiAyMDE0LTA5LTMwICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KIAogICAgICAgICBXZWIgUmVwbGF5
OiB1c2Ugc3RhdGljIFN0cmluZ3MgaW5zdGVhZCBvZiBBdG9taWNTdHJpbmdzIGZvciByZXBsYXkg
aW5wdXQgdHlwZSB0YWdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZmYzk4ZjFhMmZlODk3Yjg0OTkzMDE3YzlhMWY5MGE3NDg3
ZDhmOTYuLmI3MzQ1MDAwYzgwNDhmZDgzMWI1NmY2NDU5ZDVmY2E0OWUyZTRiNmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTQtMDktMzAgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29t
PgorCisgICAgICAgIENsZWFuIHVwOiBNb3ZlIFhQQyBmb3J3YXJkIGRlY2xhcmF0aW9ucyBpbiBK
YXZhU2NyaXB0Q29yZSB0byBXVEYgU1BJIHdyYXBwZXIgaGVhZGVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcyNzcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUb3dhcmRzIGNlbnRyYWxpemluZyB0aGUg
ZGVjbGFyYXRpb25zIG9mIFhQQyBmdW5jdGlvbnMgdXNlZCBpbiBKYXZhU2NyaXB0Q29yZQorICAg
ICAgICBhbmQgV2ViS2l0MiwgYWRkIGEgaGVhZGVyIHRoYXQgd3JhcHMgdGhlc2UgZnVuY3Rpb24g
ZGVjbGFyYXRpb25zIGNhbGxlZCBYUENTUEkuaAorICAgICAgICBhbmQgdXNlIGl0IGluc3RlYWQg
b2YgaW5jbHVkaW5nIHRoZSBjb3JyZXNwb25kaW5nIFhQQyBBUEkvU1BJIGhlYWRlcnMvZm9yd2Fy
ZAorICAgICAgICBkZWNsYXJpbmcgWFBDIGZ1bmN0aW9ucy4KKworICAgICAgICAqIFdURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9zcGkvY29jb2EvWFBDU1BJLmg6
IEFkZGVkLgorCiAyMDE0LTA5LTMwICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5j
b20+CiAKICAgICAgICAgR2V0IHRoZSBTVFJJTkdfU1RBVFMgY29kZXBhdGggY29tcGlsaW5nIGFn
YWluLCBhbmQgYWRkIGNhbGxzIHRvIHJlZi9kZXJlZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGJhYzRjYTM2ZmM0
NjdlZDFiMGNkMWQ3YTUzOTE4OTMxN2QxYmM5NzUuLjBiZjExYWQ0NjhlNDVkODczNTVkM2I2ZTZh
ZWI2OWExYWIzNDY4NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNC0wOS0zMCAg
RGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXA6IE1v
dmUgWFBDIGZvcndhcmQgZGVjbGFyYXRpb25zIGluIEphdmFTY3JpcHRDb3JlIHRvIFdURiBTUEkg
d3JhcHBlciBoZWFkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzNzI3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVzZSB3dGYvc3BpL2NvY29hL1hQQ1NQSS5oIGluc3RlYWQgb2YgaW5jbHVkaW5nIHRo
ZSBjb3JyZXNwb25kaW5nIFhQQyBoZWFkZXJzLworICAgICAgICBmb3J3YXJkIGRlY2xhcmluZyBY
UEMgZnVuY3Rpb25zLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvbWFjL0Nvbm5lY3Rpb25NYWMubW06CisgICAgICAgICogU2hh
cmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4uRGV2
ZWxvcG1lbnQubW06CisgICAgICAgICogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQ
Q1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW06CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVy
L21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW06CisKIDIwMTQtMDktMzAgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZv
ciBFbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVJbnNwZWN0b3IubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0KaW5kZXggODFkNjg0MDQwN2M1MTc3ODViZTQyZTgw
NTUwODgyMjJlN2ZiYTY3MC4uNjIzYzA3YWM2NTYwNzk1YmIxMmY2OWY4NGRlNjNhNGY4YTU2MDJl
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVt
b3RlSW5zcGVjdG9yLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUluc3BlY3Rvci5tbQpAQCAtMzYsMTYgKzM2LDkgQEAKICNpbXBvcnQgPG5vdGlm
eS5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgorI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9YUENTUEkuaD4KICNpbXBvcnQgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgX19oYXNfaW5jbHVkZSg8eHBjL3hwYy5oPikKLSNpbXBv
cnQgPHhwYy94cGMuaD4KLSNlbmRpZgotZXh0ZXJuICJDIiB7Ci0gICAgeHBjX2Nvbm5lY3Rpb25f
dCB4cGNfY29ubmVjdGlvbl9jcmVhdGVfbWFjaF9zZXJ2aWNlKGNvbnN0IGNoYXIqIG5hbWUsIGRp
c3BhdGNoX3F1ZXVlX3QsIHVpbnQ2NF90IGZsYWdzKTsKLSAgICB2b2lkIHhwY19yZWxlYXNlKHhw
Y19vYmplY3RfdCk7Ci19Ci0KICNpZiBfX2hhc19pbmNsdWRlKDxzYW5kYm94L3ByaXZhdGUuaD4p
CiAjaW1wb3J0IDxzYW5kYm94L3ByaXZhdGUuaD4KICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNw
ZWN0b3JYUENDb25uZWN0aW9uLmgKaW5kZXggMjBlNDg2OTU2OWYwYzJiNDUxMWIxZjFjM2ZlMWJi
YzQ2Y2FkM2VhYy4uMzYyNmY2ZDczZGY5ZjVhYzcyNmY3YjI1ODgzMWFhODRkZTFlMjc2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaApAQCAtMzEsMTMgKzMxLDcg
QEAKICNpbXBvcnQgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjaW1wb3J0IDxtdXRleD4KICNpbXBv
cnQgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgotCi0jaWYgX19oYXNfaW5jbHVkZSg8eHBj
L3hwYy5oPikKLSNpbXBvcnQgPHhwYy94cGMuaD4KLSNlbHNlCi10eXBlZGVmIHZvaWQqIHhwY19j
b25uZWN0aW9uX3Q7Ci10eXBlZGVmIHZvaWQqIHhwY19vYmplY3RfdDsKLSNlbmRpZgorI2ltcG9y
dCA8d3RmL3NwaS9jb2NvYS9YUENTUEkuaD4KIAogT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7CiBP
QkpDX0NMQVNTIE5TU3RyaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b24ubW0KaW5kZXggMTQ0ZDBlNjU5ZjA5ZGVkNmU1MTcxMjRhMzU2OGRhZGJhZWYyNTIzZi4uYzhm
NDVjYjVhNDE5NDY0ZThiMTlmZjI4OGNjYTgyZWIyNTA3NzI3NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbi5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCkBAIC0zMSwzMSArMzEsNyBAQAogI2ltcG9ydCA8
Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2lt
cG9ydCA8d3RmL1JlZi5oPgotCi0jaWYgIV9faGFzX2luY2x1ZGUoPHhwYy94cGMuaD4pCi1leHRl
cm4gIkMiIHsKLSAgICB0eXBlZGVmIHZvaWQgKF54cGNfaGFuZGxlcl90KSh4cGNfb2JqZWN0X3Qp
OwotICAgIHZvaWQgeHBjX2Nvbm5lY3Rpb25fY2FuY2VsKHhwY19jb25uZWN0aW9uX3QpOwotICAg
IHZvaWQgeHBjX2Nvbm5lY3Rpb25fcmVzdW1lKHhwY19jb25uZWN0aW9uX3QpOwotICAgIHZvaWQg
eHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKHhwY19jb25uZWN0aW9uX3QsIHhwY19vYmplY3Rf
dCBtZXNzYWdlKTsKLSAgICB2b2lkIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKHhw
Y19jb25uZWN0aW9uX3QsIHhwY19oYW5kbGVyX3QpOwotICAgIHZvaWQgeHBjX2Nvbm5lY3Rpb25f
c2V0X3RhcmdldF9xdWV1ZSh4cGNfY29ubmVjdGlvbl90LCBkaXNwYXRjaF9xdWV1ZV90KTsKLQot
ICAgIHhwY19vYmplY3RfdCB4cGNfcmV0YWluKHhwY19vYmplY3RfdCk7Ci0gICAgdm9pZCB4cGNf
cmVsZWFzZSh4cGNfb2JqZWN0X3QpOwotCi0gICAgdHlwZWRlZiB2b2lkKiB4cGNfdHlwZV90Owot
ICAgIHhwY190eXBlX3QgeHBjX2dldF90eXBlKHhwY19vYmplY3RfdCk7Ci0KLSAgICB2b2lkKiBY
UENfRVJST1JfQ09OTkVDVElPTl9JTlZBTElEOwotICAgIHZvaWQqIFhQQ19UWVBFX0RJQ1RJT05B
Ulk7Ci0gICAgdm9pZCogWFBDX1RZUEVfRVJST1I7Ci0KLSAgICB4cGNfb2JqZWN0X3QgeHBjX2Rp
Y3Rpb25hcnlfY3JlYXRlKGNvbnN0IGNoYXIqIGNvbnN0KiBrZXlzLCBjb25zdCB4cGNfb2JqZWN0
X3QqIHZhbHVlcywgc2l6ZV90IGNvdW50KTsKLSAgICB4cGNfb2JqZWN0X3QgeHBjX2RpY3Rpb25h
cnlfZ2V0X3ZhbHVlKHhwY19vYmplY3RfdCwgY29uc3QgY2hhcioga2V5KTsKLSAgICB2b2lkIHhw
Y19kaWN0aW9uYXJ5X3NldF92YWx1ZSh4cGNfb2JqZWN0X3QsIGNvbnN0IGNoYXIqIGtleSwgeHBj
X29iamVjdF90IHZhbHVlKTsKLX0KLSNlbmRpZgorI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9YUENT
UEkuaD4KIAogI2lmIF9faGFzX2luY2x1ZGUoPENvcmVGb3VuZGF0aW9uL0NGWFBDQnJpZGdlLmg+
KQogI2ltcG9ydCA8Q29yZUZvdW5kYXRpb24vQ0ZYUENCcmlkZ2UuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU0ZmM3MjRlODk0OWU3OTFiNWI3YjBhODFk
YTg1YWVmYzE2N2IzZjQuLmRlMjJlN2IwNWQxNGE3NjQ5YzI4MjY3NTkwMTYzODI3NDA5YjRjNDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjc1LDYgKzI3
NSw3IEBACiAJCUNENTQ5N0FDMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1NDk3QUExNTg1N0Qw
MzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgKi87IH07CiAJCUNENTQ5N0FEMTU4NTdEMDMwMEI1
QkMzMCAvKiBNZWRpYVRpbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENENTQ5N0FCMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuaCAqLzsgfTsK
IAkJQ0U0NjUxNkUxOURCMUZCNDAwM0VDQTA1IC8qIE5TTWFwVGFibGVTUEkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNDY1MTZEMTlEQjFGQjQwMDNF
Q0EwNSAvKiBOU01hcFRhYmxlU1BJLmggKi87IH07CisJCUNFNDY1MTcwMTlEQjI2QjgwMDNFQ0Ew
NSAvKiBYUENTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENFNDY1MTZGMTlEQjI2QjgwMDNFQ0EwNSAvKiBYUENTUEkuaCAqLzsgfTsKIAkJRTE1NTU2
RjUxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE1NTU2RjMxOEEwQ0MxODAw
NkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuY3BwICovOyB9OwogCQlFMTU1NTZGNjE4
QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE1NTU2RjQxOEEwQ0MxODAwNkY0OEZC
IC8qIENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuaCAqLzsgfTsKIAkJRUI5NUUxRjAxNjFBNzI0MTAw
ODlBMkY1IC8qIEJ5dGVPcmRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRUI5NUUxRUYxNjFBNzI0MTAwODlBMkY1IC8qIEJ5dGVPcmRlci5oICovOyB9
OwpAQCAtNTY2LDYgKzU2Nyw3IEBACiAJCUNENTQ5N0FBMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRp
YVRpbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFUaW1l
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q1NDk3QUIxNTg1N0QwMzAwQjVC
QzMwIC8qIE1lZGlhVGltZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRp
YVRpbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U0NjUxNkQxOURCMUZCNDAw
M0VDQTA1IC8qIE5TTWFwVGFibGVTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTlNNYXBUYWJsZVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTQ2NTE2
RjE5REIyNkI4MDAzRUNBMDUgLyogWFBDU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFhQQ1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTU1NTZGMzE4
QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE1NTU2RjQxOEEwQ0MxODAwNkY0OEZCIC8qIENy
eXB0b2dyYXBoaWNVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
Qjk1RTFFRjE2MUE3MjQxMDA4OUEyRjUgLyogQnl0ZU9yZGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEJ5dGVPcmRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtOTk2LDYgKzk5OCw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAog
CQkJCUNFNDY1MTZEMTlEQjFGQjQwMDNFQ0EwNSAvKiBOU01hcFRhYmxlU1BJLmggKi8sCisJCQkJ
Q0U0NjUxNkYxOURCMjZCODAwM0VDQTA1IC8qIFhQQ1NQSS5oICovLAogCQkJKTsKIAkJCXBhdGgg
PSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xMTk5LDYgKzEyMDIsNyBA
QAogCQkJCTFGQTQ3QzhCMTUyNTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBOEE0NzQ0NjE1MUE4MjVCMDA0MTIzRkYgLyogV1RGU3RyaW5nLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBOEE0NzQ4NzE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0
YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0U0NjUxNzAxOURCMjZCODAwM0VDQTA1IC8qIFhQQ1NQ
SS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9zcGkvY29jb2Ev
WFBDU1BJLmggYi9Tb3VyY2UvV1RGL3d0Zi9zcGkvY29jb2EvWFBDU1BJLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OWEzMjhlNTI0MmViMGZmOTEwMTU2ZDRhMmYyOGNmZmVjMDllMTU1MwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3NwaS9jb2NvYS9YUENTUEkuaApAQCAtMCwwICsxLDE0NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFhQ
Q1NQSV9oCisjZGVmaW5lIFhQQ1NQSV9oCisKKyNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5o
PgorI2luY2x1ZGUgPG9zL29iamVjdC5oPgorCisjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQVBQ
TEVfSU5URVJOQUxfU0RLKQorI2luY2x1ZGUgPHhwYy94cGMuaD4KKyNlbHNlCisKKyNpZiBPU19P
QkpFQ1RfVVNFX09CSkMKK09TX09CSkVDVF9ERUNMKHhwY19vYmplY3QpOwordHlwZWRlZiB4cGNf
b2JqZWN0X3QgeHBjX2Nvbm5lY3Rpb25fdDsKKworc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBf
eHBjX29iamVjdF92YWxpZGF0ZSh4cGNfb2JqZWN0X3Qgb2JqZWN0KQoreworICAgIHZvaWQgKmlz
YSA9ICoodm9pZCAqIHZvbGF0aWxlICopKE9TX09CSkVDVF9CUklER0Ugdm9pZCAqKW9iamVjdDsK
KyAgICAodm9pZClpc2E7Cit9CisKKyNkZWZpbmUgWFBDX0dMT0JBTF9PQkpFQ1Qob2JqZWN0KSAo
KE9TX09CSkVDVF9CUklER0UgeHBjX29iamVjdF90KSYob2JqZWN0KSkKKworI2Vsc2UgLy8gT1Nf
T0JKRUNUX1VTRV9PQkpDCisKK3R5cGVkZWYgdm9pZCogeHBjX29iamVjdF90OwordHlwZWRlZiB2
b2lkKiB4cGNfY29ubmVjdGlvbl90OworCisjZGVmaW5lIFhQQ19HTE9CQUxfT0JKRUNUKG9iamVj
dCkgKCYob2JqZWN0KSkKKworI2VuZGlmIC8vIE9TX09CSkVDVF9VU0VfT0JKQworCit0eXBlZGVm
IGNvbnN0IHN0cnVjdCBfeHBjX3R5cGVfcyogeHBjX3R5cGVfdDsKKworI2lmIF9fQkxPQ0tTX18K
K3R5cGVkZWYgYm9vbCAoXnhwY19hcnJheV9hcHBsaWVyX3QpKHNpemVfdCBpbmRleCwgeHBjX29i
amVjdF90KTsKK3R5cGVkZWYgdm9pZCAoXnhwY19oYW5kbGVyX3QpKHhwY19vYmplY3RfdCk7Cisj
ZW5kaWYKKwordHlwZWRlZiB2b2lkICgqeHBjX2Nvbm5lY3Rpb25faGFuZGxlcl90KSh4cGNfY29u
bmVjdGlvbl90IGNvbm5lY3Rpb24pOworCisjZGVmaW5lIFhQQ19BUlJBWV9BUFBFTkQgKChzaXpl
X3QpKC0xKSkKKyNkZWZpbmUgWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5WQUxJRCBYUENfR0xPQkFM
X09CSkVDVChfeHBjX2Vycm9yX2Nvbm5lY3Rpb25faW52YWxpZCkKKyNkZWZpbmUgWFBDX0VSUk9S
X1RFUk1JTkFUSU9OX0lNTUlORU5UIFhQQ19HTE9CQUxfT0JKRUNUKF94cGNfZXJyb3JfdGVybWlu
YXRpb25faW1taW5lbnQpCisjZGVmaW5lIFhQQ19UWVBFX0FSUkFZICgmX3hwY190eXBlX2FycmF5
KQorI2RlZmluZSBYUENfVFlQRV9CT09MICgmX3hwY190eXBlX2Jvb2wpCisjZGVmaW5lIFhQQ19U
WVBFX0RJQ1RJT05BUlkgKCZfeHBjX3R5cGVfZGljdGlvbmFyeSkKKyNkZWZpbmUgWFBDX1RZUEVf
RVJST1IgKCZfeHBjX3R5cGVfZXJyb3IpCisjZGVmaW5lIFhQQ19UWVBFX1NUUklORyAoJl94cGNf
dHlwZV9zdHJpbmcpCisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFVTRShBUFBMRV9JTlRF
Uk5BTF9TREspCisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2luY2x1ZGUgPHhwYy9w
cml2YXRlLmg+CisjZW5kaWYKKworRVhURVJOX0MgY29uc3Qgc3RydWN0IF94cGNfZGljdGlvbmFy
eV9zIF94cGNfZXJyb3JfY29ubmVjdGlvbl9pbnZhbGlkOworRVhURVJOX0MgY29uc3Qgc3RydWN0
IF94cGNfZGljdGlvbmFyeV9zIF94cGNfZXJyb3JfdGVybWluYXRpb25faW1taW5lbnQ7CitFWFRF
Uk5fQyBjb25zdCBzdHJ1Y3QgX3hwY190eXBlX3MgX3hwY190eXBlX2FycmF5OworRVhURVJOX0Mg
Y29uc3Qgc3RydWN0IF94cGNfdHlwZV9zIF94cGNfdHlwZV9ib29sOworRVhURVJOX0MgY29uc3Qg
c3RydWN0IF94cGNfdHlwZV9zIF94cGNfdHlwZV9kaWN0aW9uYXJ5OworRVhURVJOX0MgY29uc3Qg
c3RydWN0IF94cGNfdHlwZV9zIF94cGNfdHlwZV9lcnJvcjsKK0VYVEVSTl9DIGNvbnN0IHN0cnVj
dCBfeHBjX3R5cGVfcyBfeHBjX3R5cGVfc3RyaW5nOworCitFWFRFUk5fQyB4cGNfb2JqZWN0X3Qg
eHBjX2FycmF5X2NyZWF0ZShjb25zdCB4cGNfb2JqZWN0X3QqLCBzaXplX3QgY291bnQpOworI2lm
IF9fQkxPQ0tTX18KK0VYVEVSTl9DIGJvb2wgeHBjX2FycmF5X2FwcGx5KHhwY19vYmplY3RfdCwg
eHBjX2FycmF5X2FwcGxpZXJfdCk7CisjZW5kaWYKK0VYVEVSTl9DIHNpemVfdCB4cGNfYXJyYXlf
Z2V0X2NvdW50KHhwY19vYmplY3RfdCk7CitFWFRFUk5fQyBjb25zdCBjaGFyKiB4cGNfYXJyYXlf
Z2V0X3N0cmluZyh4cGNfb2JqZWN0X3QsIHNpemVfdCBpbmRleCk7CitFWFRFUk5fQyB2b2lkIHhw
Y19hcnJheV9zZXRfc3RyaW5nKHhwY19vYmplY3RfdCwgc2l6ZV90IGluZGV4LCBjb25zdCBjaGFy
KiBzdHJpbmcpOworRVhURVJOX0MgYm9vbCB4cGNfYm9vbF9nZXRfdmFsdWUoeHBjX29iamVjdF90
KTsKK0VYVEVSTl9DIHZvaWQgeHBjX2Nvbm5lY3Rpb25fY2FuY2VsKHhwY19jb25uZWN0aW9uX3Qp
OworRVhURVJOX0MgeHBjX2Nvbm5lY3Rpb25fdCB4cGNfY29ubmVjdGlvbl9jcmVhdGUoY29uc3Qg
Y2hhciogbmFtZSwgZGlzcGF0Y2hfcXVldWVfdCk7CitFWFRFUk5fQyB4cGNfY29ubmVjdGlvbl90
IHhwY19jb25uZWN0aW9uX2NyZWF0ZV9tYWNoX3NlcnZpY2UoY29uc3QgY2hhciogbmFtZSwgZGlz
cGF0Y2hfcXVldWVfdCwgdWludDY0X3QgZmxhZ3MpOworRVhURVJOX0MgcGlkX3QgeHBjX2Nvbm5l
Y3Rpb25fZ2V0X3BpZCh4cGNfY29ubmVjdGlvbl90KTsKK0VYVEVSTl9DIHZvaWQgeHBjX2Nvbm5l
Y3Rpb25fcmVzdW1lKHhwY19jb25uZWN0aW9uX3QpOworRVhURVJOX0Mgdm9pZCB4cGNfY29ubmVj
dGlvbl9zZW5kX21lc3NhZ2UoeHBjX2Nvbm5lY3Rpb25fdCwgeHBjX29iamVjdF90KTsKK0VYVEVS
Tl9DIHZvaWQgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlX3dpdGhfcmVwbHkoeHBjX2Nvbm5l
Y3Rpb25fdCwgeHBjX29iamVjdF90LCBkaXNwYXRjaF9xdWV1ZV90LCB4cGNfaGFuZGxlcl90KTsK
K0VYVEVSTl9DIHZvaWQgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIoeHBjX2Nvbm5l
Y3Rpb25fdCwgeHBjX2hhbmRsZXJfdCk7CitFWFRFUk5fQyB2b2lkIHhwY19jb25uZWN0aW9uX3Nl
dF90YXJnZXRfcXVldWUoeHBjX2Nvbm5lY3Rpb25fdCwgZGlzcGF0Y2hfcXVldWVfdCk7CitFWFRF
Uk5fQyB4cGNfb2JqZWN0X3QgeHBjX2RpY3Rpb25hcnlfY3JlYXRlKGNvbnN0IGNoYXIqICBjb25z
dCoga2V5cywgY29uc3QgeHBjX29iamVjdF90Kiwgc2l6ZV90IGNvdW50KTsKK0VYVEVSTl9DIHhw
Y19vYmplY3RfdCB4cGNfZGljdGlvbmFyeV9jcmVhdGVfcmVwbHkoeHBjX29iamVjdF90KTsKK0VY
VEVSTl9DIGludCB4cGNfZGljdGlvbmFyeV9kdXBfZmQoeHBjX29iamVjdF90LCBjb25zdCBjaGFy
KiBrZXkpOworRVhURVJOX0MgeHBjX2Nvbm5lY3Rpb25fdCB4cGNfZGljdGlvbmFyeV9nZXRfcmVt
b3RlX2Nvbm5lY3Rpb24oeHBjX29iamVjdF90KTsKK0VYVEVSTl9DIGJvb2wgeHBjX2RpY3Rpb25h
cnlfZ2V0X2Jvb2woeHBjX29iamVjdF90LCBjb25zdCBjaGFyKiBrZXkpOworRVhURVJOX0MgY29u
c3QgY2hhciogeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyh4cGNfb2JqZWN0X3QsIGNvbnN0IGNo
YXIqIGtleSk7CitFWFRFUk5fQyB1aW50NjRfdCB4cGNfZGljdGlvbmFyeV9nZXRfdWludDY0KHhw
Y19vYmplY3RfdCwgY29uc3QgY2hhcioga2V5KTsKK0VYVEVSTl9DIHhwY19vYmplY3RfdCB4cGNf
ZGljdGlvbmFyeV9nZXRfdmFsdWUoeHBjX29iamVjdF90LCBjb25zdCBjaGFyKiBrZXkpOworRVhU
RVJOX0Mgdm9pZCB4cGNfZGljdGlvbmFyeV9zZXRfYm9vbCh4cGNfb2JqZWN0X3QsIGNvbnN0IGNo
YXIqIGtleSwgYm9vbCB2YWx1ZSk7CitFWFRFUk5fQyB2b2lkIHhwY19kaWN0aW9uYXJ5X3NldF9m
ZCh4cGNfb2JqZWN0X3QsIGNvbnN0IGNoYXIqIGtleSwgaW50IGZkKTsKK0VYVEVSTl9DIHZvaWQg
eHBjX2RpY3Rpb25hcnlfc2V0X3N0cmluZyh4cGNfb2JqZWN0X3QsIGNvbnN0IGNoYXIqIGtleSwg
Y29uc3QgY2hhciogc3RyaW5nKTsKK0VYVEVSTl9DIHZvaWQgeHBjX2RpY3Rpb25hcnlfc2V0X3Vp
bnQ2NCh4cGNfb2JqZWN0X3QsIGNvbnN0IGNoYXIqIGtleSwgdWludDY0X3QgdmFsdWUpOworRVhU
RVJOX0Mgdm9pZCB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUoeHBjX29iamVjdF90LCBjb25zdCBj
aGFyKmtleSwgeHBjX29iamVjdF90IHZhbHVlKTsKK0VYVEVSTl9DIHhwY190eXBlX3QgeHBjX2dl
dF90eXBlKHhwY19vYmplY3RfdCk7CitFWFRFUk5fQyB2b2lkIHhwY19tYWluKHhwY19jb25uZWN0
aW9uX2hhbmRsZXJfdCk7CitFWFRFUk5fQyB4cGNfb2JqZWN0X3QgeHBjX3JldGFpbih4cGNfb2Jq
ZWN0X3QpOworRVhURVJOX0Mgdm9pZCB4cGNfcmVsZWFzZSh4cGNfb2JqZWN0X3QpOworRVhURVJO
X0MgY29uc3QgY2hhciogeHBjX3N0cmluZ19nZXRfc3RyaW5nX3B0cih4cGNfb2JqZWN0X3QpOwor
RVhURVJOX0Mgdm9pZCB4cGNfdHJhbnNhY3Rpb25fYmVnaW4odm9pZCk7CisKK0VYVEVSTl9DIHhw
Y19vYmplY3RfdCB4cGNfY29ubmVjdGlvbl9jb3B5X2VudGl0bGVtZW50X3ZhbHVlKHhwY19jb25u
ZWN0aW9uX3QsIGNvbnN0IGNoYXIqIGVudGl0bGVtZW50KTsKK0VYVEVSTl9DIHZvaWQgeHBjX2Nv
bm5lY3Rpb25fZ2V0X2F1ZGl0X3Rva2VuKHhwY19jb25uZWN0aW9uX3QsIGF1ZGl0X3Rva2VuX3Qq
KTsKK0VYVEVSTl9DIHZvaWQgeHBjX2Nvbm5lY3Rpb25fa2lsbCh4cGNfY29ubmVjdGlvbl90LCBp
bnQpOworRVhURVJOX0Mgdm9pZCB4cGNfY29ubmVjdGlvbl9zZXRfaW5zdGFuY2UoeHBjX2Nvbm5l
Y3Rpb25fdCwgdXVpZF90KTsKK0VYVEVSTl9DIG1hY2hfcG9ydF90IHhwY19kaWN0aW9uYXJ5X2Nv
cHlfbWFjaF9zZW5kKHhwY19vYmplY3RfdCwgY29uc3QgY2hhciopOworRVhURVJOX0Mgdm9pZCB4
cGNfZGljdGlvbmFyeV9zZXRfbWFjaF9zZW5kKHhwY19vYmplY3RfdCwgY29uc3QgY2hhciosIG1h
Y2hfcG9ydF90KTsKKworI2lmIFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEwMDAKK0VYVEVSTl9DIHZvaWQgeHBjX2Nvbm5lY3Rpb25fc2V0X2Jv
b3RzdHJhcCh4cGNfY29ubmVjdGlvbl90LCB4cGNfb2JqZWN0X3QgYm9vdHN0cmFwKTsKKyNlbmRp
ZgorCisjaWYgIWRlZmluZWQoeHBjX3JldGFpbikgJiYgT1NfT0JKRUNUX1VTRV9PQkpDX1JFVEFJ
Tl9SRUxFQVNFCisjZGVmaW5lIHhwY19yZXRhaW4ob2JqZWN0KSAoeyB4cGNfb2JqZWN0X3QgX28g
PSAob2JqZWN0KTsgX3hwY19vYmplY3RfdmFsaWRhdGUoX28pOyBbX28gcmV0YWluXTsgfSkKKyNl
bmRpZgorCisjaWYgIWRlZmluZWQoeHBjX3JlbGVhc2UpICYmIE9TX09CSkVDVF9VU0VfT0JKQ19S
RVRBSU5fUkVMRUFTRQorI2RlZmluZSB4cGNfcmVsZWFzZShvYmplY3QpICh7IHhwY19vYmplY3Rf
dCBfbyA9IChvYmplY3QpOyBfeHBjX29iamVjdF92YWxpZGF0ZShfbyk7IFtfbyByZWxlYXNlXTsg
fSkKKyNlbmRpZgorCisjZW5kaWYgLy8gWFBDU1BJX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9J
UEMvQ29ubmVjdGlvbi5oCmluZGV4IDVhMGFkOTYzNmExZDk5NTE2ZWY2NTM0Y2Q3NzczZTJmNTM1
YzNmODYuLmY4ZWZkYTA5OGQzYTU5ZGIwZThhMTcyZGIwMDNmNzdmZTYyOGU5YmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtNDIsOCArNDIsOCBAQAogCiAj
aWYgT1MoREFSV0lOKQogI2luY2x1ZGUgPG1hY2gvbWFjaF9wb3J0Lmg+Ci0jaW5jbHVkZSA8eHBj
L3hwYy5oPgogI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9zcGkv
Y29jb2EvWFBDU1BJLmg+CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0o
RUZMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL21hYy9Db25uZWN0
aW9uTWFjLm1tIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL21hYy9Db25uZWN0aW9uTWFj
Lm1tCmluZGV4IGQ5MWI2ZDRmNjY3ZWY2ZTlhMDNhZGIzNjVhOWUyYzk5MTI0MDE2ZTAuLjAyM2I1
ODJhMGE0MmI2YzYyZmJjMDVmMjAyMGNmMGVkMDE3NzE2MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0lQQy9tYWMvQ29ubmVjdGlvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9JUEMvbWFjL0Nvbm5lY3Rpb25NYWMubW0KQEAgLTM0LDE5ICszNCwxMiBA
QAogI2luY2x1ZGUgPG1hY2gvbWFjaF9lcnJvci5oPgogI2luY2x1ZGUgPG1hY2gvdm1fbWFwLmg+
CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KLSNpbmNsdWRlIDx4cGMveHBjLmg+CisjaW5jbHVk
ZSA8d3RmL3NwaS9jb2NvYS9YUENTUEkuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKICNpbmNsdWRl
ICJQcm9jZXNzQXNzZXJ0aW9uLmgiCiAjZW5kaWYKIAotI2lmIF9faGFzX2luY2x1ZGUoPHhwYy9w
cml2YXRlLmg+KQotI2luY2x1ZGUgPHhwYy9wcml2YXRlLmg+Ci0jZWxzZQotZXh0ZXJuICJDIiB2
b2lkIHhwY19jb25uZWN0aW9uX2dldF9hdWRpdF90b2tlbih4cGNfY29ubmVjdGlvbl90LCBhdWRp
dF90b2tlbl90Kik7Ci1leHRlcm4gIkMiIHZvaWQgeHBjX2Nvbm5lY3Rpb25fa2lsbCh4cGNfY29u
bmVjdGlvbl90LCBpbnQpOwotI2VuZGlmCi0KICNpZiBfX2hhc19pbmNsdWRlKDxISVNlcnZpY2Vz
L0FjY2Vzc2liaWxpdHlQcml2Lmg+KQogI2luY2x1ZGUgPEhJU2VydmljZXMvQWNjZXNzaWJpbGl0
eVByaXYuaD4KICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRW50cnlQ
b2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5EZXZlbG9wbWVudC5t
bSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2
aWNlL1hQQ1NlcnZpY2VNYWluLkRldmVsb3BtZW50Lm1tCmluZGV4IDJhOTczYjU1OWVkMDIxNjhh
YWM2ZWJhMWU5N2U3YWZmNmU4NTVlM2IuLmE1OWVlZGRkZTNiNzRiZTljODAzMmFiOGFjN2ZlYmNl
YjY4ZmU5NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50VXRp
bGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLkRldmVsb3BtZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNl
L1hQQ1NlcnZpY2VNYWluLkRldmVsb3BtZW50Lm1tCkBAIC0zMiw3ICszMiw3IEBACiAjaW1wb3J0
IDxzdGRpby5oPgogI2ltcG9ydCA8c3RkbGliLmg+CiAjaW1wb3J0IDx3dGYvT1NPYmplY3RQdHIu
aD4KLSNpbXBvcnQgPHhwYy94cGMuaD4KKyNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvWFBDU1BJLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbSBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNl
L1hQQ1NlcnZpY2VNYWluLm1tCmluZGV4IGI2NmYyMzExYTVlODQzMmM0ZGY3NDBhYmM5NDc4MjIy
MWFlYzJhNWUuLmU3YzFmMzAwZGZjZDI1MzczMzlmMmZjNmQwMjUzNzVkNjlkMTE2Y2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENT
ZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRy
eVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCkBAIC0yNyw3
ICsyNyw3IEBACiAKICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAj
aW1wb3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KLSNpbXBvcnQgPHhwYy94cGMuaD4KKyNpbXBvcnQg
PHd0Zi9zcGkvY29jb2EvWFBDU1BJLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hl
ck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xh
dW5jaGVyTWFjLm1tCmluZGV4IDVmZThlN2ZjNWUzMzQwODM3YjI2MGZiMTVhZTNjZDA2ZGMwYjc5
ZTIuLmExMzAwZmIxYzllYzg5NGRmMTE4MTc0MDVkYWFiMWY5NmI2MWE0NTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xh
dW5jaGVyTWFjLm1tCkBAIC00MSwyNyArNDEsMTcgQEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvVGhyZWFkaW5nLmg+Cisj
aW1wb3J0IDx3dGYvc3BpL2NvY29hL1hQQ1NQSS5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0jaW1wb3J0IDx4cGMveHBjLmg+
Ci0KLSNpZiBfX2hhc19pbmNsdWRlKDx4cGMvcHJpdmF0ZS5oPikKLSNpbXBvcnQgPHhwYy9wcml2
YXRlLmg+Ci0jZW5kaWYKIAogLy8gRklYTUU6IFdlIHNob3VsZCBiZSBkb2luZyB0aGlzIGFub3Ro
ZXIgd2F5LgogZXh0ZXJuICJDIiBrZXJuX3JldHVybl90IGJvb3RzdHJhcF9yZWdpc3RlcjIobWFj
aF9wb3J0X3QsIG5hbWVfdCwgbWFjaF9wb3J0X3QsIHVpbnQ2NF90KTsKIAotZXh0ZXJuICJDIiB2
b2lkIHhwY19jb25uZWN0aW9uX3NldF9pbnN0YW5jZSh4cGNfY29ubmVjdGlvbl90LCB1dWlkX3Qp
OwotZXh0ZXJuICJDIiB2b2lkIHhwY19kaWN0aW9uYXJ5X3NldF9tYWNoX3NlbmQoeHBjX29iamVj
dF90LCBjb25zdCBjaGFyKiwgbWFjaF9wb3J0X3QpOwotCiAjaWYgUExBVEZPUk0oSU9TKSB8fCBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTAwMAotZXh0ZXJuICJDIiB2b2lk
IHhwY19jb25uZWN0aW9uX3NldF9ib290c3RyYXAoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9u
LCB4cGNfb2JqZWN0X3QgYm9vdHN0cmFwKTsKLQogLy8gRklYTUU6IFNvZnQgbGlua2luZyBpcyB0
ZW1wb3JhcnksIG1ha2UgdGhpcyBpbnRvIGEgcmVndWxhciBmdW5jdGlvbiBjYWxsIG9uY2UgdGhp
cyBmdW5jdGlvbiBpcyBhdmFpbGFibGUgZXZlcnl3aGVyZSB3ZSBuZWVkLgogU09GVF9MSU5LX0ZS
QU1FV09SSyhDb3JlRm91bmRhdGlvbikKIFNPRlRfTElOS19PUFRJT05BTChDb3JlRm91bmRhdGlv
biwgX0NGQnVuZGxlU2V0dXBYUENCb290c3RyYXAsIHZvaWQsIHVudXNlZCwgKHhwY19vYmplY3Rf
dCkpCi0KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239035</attachid>
            <date>2014-10-01 11:19:58 -0700</date>
            <delta_ts>2014-10-01 13:54:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137277-20141001111959.patch</filename>
            <type>text/plain</type>
            <size>20672</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
YTU0YzdhZDA3MGVkNDc5NDlkYmVjMjcyYWMyYjliYjY1MGU1YTU3Li4yYTVlY2ZkMjMzMzkwNWFh
NDY4ZWFjNjQ2NDE3NzM3ZTVlMWIwMmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxNC0wOS0zMCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+
CisKKyAgICAgICAgQ2xlYW4gdXA6IE1vdmUgWFBDIGZvcndhcmQgZGVjbGFyYXRpb25zIGluIEph
dmFTY3JpcHRDb3JlIHRvIFdURiBTUEkgd3JhcHBlciBoZWFkZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzI3NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSB3dGYvc3BpL2NvY29hL1hQQ1NQSS5o
IGluc3RlYWQgb2YgaW5jbHVkaW5nIHRoZSBjb3JyZXNwb25kaW5nIFhQQyBoZWFkZXJzLworICAg
ICAgICBmb3J3YXJkIGRlY2xhcmluZyBYUEMgZnVuY3Rpb25zLgorCisgICAgICAgICogaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW06CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90
ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmg6CisgICAgICAgICogaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tOgorCiAyMDE0LTA5LTMwICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBFcnJvclN0cmluZyBzaG91bGQgYmUgcGFzc2VkIGJ5IHJlZmVyZW5jZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0YTMx
MWM5NDYzY2MwYWJiNDZjZWVmY2MxMWVmZTc2MTg4YTZjNzlkLi4zYWJiYmEyN2RmNTE4NTM2ZGVi
MTBlOTg4NmFjMmI4YWU5ZmI0ZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE0LTA5LTMwICBE
YW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBDbGVhbiB1cDogTW92
ZSBYUEMgZm9yd2FyZCBkZWNsYXJhdGlvbnMgaW4gSmF2YVNjcmlwdENvcmUgdG8gV1RGIFNQSSB3
cmFwcGVyIGhlYWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTM3Mjc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVG93YXJkcyBjZW50cmFsaXppbmcgdGhlIGRlY2xhcmF0aW9ucyBvZiBYUEMgZnVuY3Rp
b25zIHVzZWQgaW4gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgYW5kIFdlYktpdDIsIGFkZCBhIGhl
YWRlciB0aGF0IHdyYXBzIHRoZXNlIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBjYWxsZWQgWFBDU1BJ
LmgKKyAgICAgICAgYW5kIHVzZSBpdCBpbnN0ZWFkIG9mIGluY2x1ZGluZyB0aGUgY29ycmVzcG9u
ZGluZyBYUEMgQVBJL1NQSSBoZWFkZXJzL2ZvcndhcmQKKyAgICAgICAgZGVjbGFyaW5nIFhQQyBm
dW5jdGlvbnMuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiB3dGYvc3BpL2NvY29hL1hQQ1NQSS5oOiBBZGRlZC4KKwogMjAxNC0wOS0zMCAgQ2hy
aXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgR2VuZXJhbGl6ZSBp
czw+KCkgLyBkb3duY2FzdDw+KCkgc3VwcG9ydCB0byBhbGwgdHlwZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAw
ZTczYzAyMzIwMmMyZTM2MzM0MGE4NGI5ODU2NjNlNzVmMzFhZjQwLi5lYWJlZWYwNjMwODNjOGQz
NWFlMTI3NzU1ODI3OTZiY2JhOTg2Y2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIw
MTQtMDktMzAgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIENs
ZWFuIHVwOiBNb3ZlIFhQQyBmb3J3YXJkIGRlY2xhcmF0aW9ucyBpbiBKYXZhU2NyaXB0Q29yZSB0
byBXVEYgU1BJIHdyYXBwZXIgaGVhZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzcyNzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVc2Ugd3RmL3NwaS9jb2NvYS9YUENTUEkuaCBpbnN0ZWFkIG9mIGlu
Y2x1ZGluZyB0aGUgY29ycmVzcG9uZGluZyBYUEMgaGVhZGVycy8KKyAgICAgICAgZm9yd2FyZCBk
ZWNsYXJpbmcgWFBDIGZ1bmN0aW9ucy4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0
aW9uLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL21hYy9Db25uZWN0aW9uTWFjLm1tOgorICAg
ICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZp
Y2VNYWluLkRldmVsb3BtZW50Lm1tOgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0
aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tOgorICAgICAgICAqIFVJUHJvY2Vz
cy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tOgorCiAyMDE0LTEwLTAxICBKb3Nl
cGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gPHNlbGVj
dD4gd2l0aCA8b3B0Z3JvdXA+IG1heSBjaGFuZ2UgaW5pdGlhbCBzZWxlY3RlZCBvcHRpb24gd2hl
biBhc3Npc3RlZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tCmluZGV4IDgxZDY4NDA0MDdjNTE3Nzg1YmU0MmU4
MDU1MDg4MjIyZTdmYmE2NzAuLjYyM2MwN2FjNjU2MDc5NWJiMTJmNjlmODRkZTYzYTRmOGE1NjAy
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUluc3BlY3Rvci5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVJbnNwZWN0b3IubW0KQEAgLTM2LDE2ICszNiw5IEBACiAjaW1wb3J0IDxub3Rp
ZnkuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvWFBDU1BJLmg+CiAjaW1wb3J0IDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIF9faGFzX2luY2x1ZGUoPHhwYy94cGMuaD4pCi0jaW1w
b3J0IDx4cGMveHBjLmg+Ci0jZW5kaWYKLWV4dGVybiAiQyIgewotICAgIHhwY19jb25uZWN0aW9u
X3QgeHBjX2Nvbm5lY3Rpb25fY3JlYXRlX21hY2hfc2VydmljZShjb25zdCBjaGFyKiBuYW1lLCBk
aXNwYXRjaF9xdWV1ZV90LCB1aW50NjRfdCBmbGFncyk7Ci0gICAgdm9pZCB4cGNfcmVsZWFzZSh4
cGNfb2JqZWN0X3QpOwotfQotCiAjaWYgX19oYXNfaW5jbHVkZSg8c2FuZGJveC9wcml2YXRlLmg+
KQogI2ltcG9ydCA8c2FuZGJveC9wcml2YXRlLmg+CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbi5oCmluZGV4IDIwZTQ4Njk1NjlmMGMyYjQ1MTFiMWYxYzNmZTFi
YmM0NmNhZDNlYWMuLjM2MjZmNmQ3M2RmOWY1YWM3MjZmN2IyNTg4MzFhYTg0ZGUxZTI3NmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgKQEAgLTMxLDEzICszMSw3
IEBACiAjaW1wb3J0IDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2ltcG9ydCA8bXV0ZXg+CiAjaW1w
b3J0IDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KLQotI2lmIF9faGFzX2luY2x1ZGUoPHhw
Yy94cGMuaD4pCi0jaW1wb3J0IDx4cGMveHBjLmg+Ci0jZWxzZQotdHlwZWRlZiB2b2lkKiB4cGNf
Y29ubmVjdGlvbl90OwotdHlwZWRlZiB2b2lkKiB4cGNfb2JqZWN0X3Q7Ci0jZW5kaWYKKyNpbXBv
cnQgPHd0Zi9zcGkvY29jb2EvWFBDU1BJLmg+CiAKIE9CSkNfQ0xBU1MgTlNEaWN0aW9uYXJ5Owog
T0JKQ19DTEFTUyBOU1N0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uLm1tCmluZGV4IDE0NGQwZTY1OWYwOWRlZDZlNTE3MTI0YTM1NjhkYWRiYWVmMjUyM2YuLmM4
ZjQ1Y2I1YTQxOTQ2NGU4YjE5ZmYyODhjY2E4MmViMjUwNzcyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb24ubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVt
b3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbQpAQCAtMzEsMzEgKzMxLDcgQEAKICNpbXBvcnQg
PEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNp
bXBvcnQgPHd0Zi9SZWYuaD4KLQotI2lmICFfX2hhc19pbmNsdWRlKDx4cGMveHBjLmg+KQotZXh0
ZXJuICJDIiB7Ci0gICAgdHlwZWRlZiB2b2lkICheeHBjX2hhbmRsZXJfdCkoeHBjX29iamVjdF90
KTsKLSAgICB2b2lkIHhwY19jb25uZWN0aW9uX2NhbmNlbCh4cGNfY29ubmVjdGlvbl90KTsKLSAg
ICB2b2lkIHhwY19jb25uZWN0aW9uX3Jlc3VtZSh4cGNfY29ubmVjdGlvbl90KTsKLSAgICB2b2lk
IHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZSh4cGNfY29ubmVjdGlvbl90LCB4cGNfb2JqZWN0
X3QgbWVzc2FnZSk7Ci0gICAgdm9pZCB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcih4
cGNfY29ubmVjdGlvbl90LCB4cGNfaGFuZGxlcl90KTsKLSAgICB2b2lkIHhwY19jb25uZWN0aW9u
X3NldF90YXJnZXRfcXVldWUoeHBjX2Nvbm5lY3Rpb25fdCwgZGlzcGF0Y2hfcXVldWVfdCk7Ci0K
LSAgICB4cGNfb2JqZWN0X3QgeHBjX3JldGFpbih4cGNfb2JqZWN0X3QpOwotICAgIHZvaWQgeHBj
X3JlbGVhc2UoeHBjX29iamVjdF90KTsKLQotICAgIHR5cGVkZWYgdm9pZCogeHBjX3R5cGVfdDsK
LSAgICB4cGNfdHlwZV90IHhwY19nZXRfdHlwZSh4cGNfb2JqZWN0X3QpOwotCi0gICAgdm9pZCog
WFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5WQUxJRDsKLSAgICB2b2lkKiBYUENfVFlQRV9ESUNUSU9O
QVJZOwotICAgIHZvaWQqIFhQQ19UWVBFX0VSUk9SOwotCi0gICAgeHBjX29iamVjdF90IHhwY19k
aWN0aW9uYXJ5X2NyZWF0ZShjb25zdCBjaGFyKiBjb25zdCoga2V5cywgY29uc3QgeHBjX29iamVj
dF90KiB2YWx1ZXMsIHNpemVfdCBjb3VudCk7Ci0gICAgeHBjX29iamVjdF90IHhwY19kaWN0aW9u
YXJ5X2dldF92YWx1ZSh4cGNfb2JqZWN0X3QsIGNvbnN0IGNoYXIqIGtleSk7Ci0gICAgdm9pZCB4
cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUoeHBjX29iamVjdF90LCBjb25zdCBjaGFyKiBrZXksIHhw
Y19vYmplY3RfdCB2YWx1ZSk7Ci19Ci0jZW5kaWYKKyNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvWFBD
U1BJLmg+CiAKICNpZiBfX2hhc19pbmNsdWRlKDxDb3JlRm91bmRhdGlvbi9DRlhQQ0JyaWRnZS5o
PikKICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NGWFBDQnJpZGdlLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlNGZjNzI0ZTg5NDllNzkxYjViN2IwYTgx
ZGE4NWFlZmMxNjdiM2Y0Li5kZTIyZTdiMDVkMTRhNzY0OWMyODI2NzU5MDE2MzgyNzQwOWI0YzQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI3NSw2ICsy
NzUsNyBAQAogCQlDRDU0OTdBQzE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENTQ5N0FBMTU4NTdE
MDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovOyB9OwogCQlDRDU0OTdBRDE1ODU3RDAzMDBC
NUJDMzAgLyogTWVkaWFUaW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDU0OTdBQjE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmggKi87IH07
CiAJCUNFNDY1MTZFMTlEQjFGQjQwMDNFQ0EwNSAvKiBOU01hcFRhYmxlU1BJLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTQ2NTE2RDE5REIxRkI0MDAz
RUNBMDUgLyogTlNNYXBUYWJsZVNQSS5oICovOyB9OworCQlDRTQ2NTE3MDE5REIyNkI4MDAzRUNB
MDUgLyogWFBDU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRTQ2NTE2RjE5REIyNkI4MDAzRUNBMDUgLyogWFBDU1BJLmggKi87IH07CiAJCUUxNTU1
NkY1MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTU1NkYzMThBMENDMTgw
MDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNwcCAqLzsgfTsKIAkJRTE1NTU2RjYx
OEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTU1NkY0MThBMENDMTgwMDZGNDhG
QiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmggKi87IH07CiAJCUVCOTVFMUYwMTYxQTcyNDEw
MDg5QTJGNSAvKiBCeXRlT3JkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEVCOTVFMUVGMTYxQTcyNDEwMDg5QTJGNSAvKiBCeXRlT3JkZXIuaCAqLzsg
fTsKQEAgLTU2Niw2ICs1NjcsNyBAQAogCQlDRDU0OTdBQTE1ODU3RDAzMDBCNUJDMzAgLyogTWVk
aWFUaW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhVGlt
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENTQ5N0FCMTU4NTdEMDMwMEI1
QkMzMCAvKiBNZWRpYVRpbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVk
aWFUaW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNDY1MTZEMTlEQjFGQjQw
MDNFQ0EwNSAvKiBOU01hcFRhYmxlU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5TTWFwVGFibGVTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0U0NjUx
NkYxOURCMjZCODAwM0VDQTA1IC8qIFhQQ1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBYUENTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE1NTU2RjMx
OEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNTU1NkY0MThBMENDMTgwMDZGNDhGQiAvKiBD
cnlwdG9ncmFwaGljVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RUI5NUUxRUYxNjFBNzI0MTAwODlBMkY1IC8qIEJ5dGVPcmRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBCeXRlT3JkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTk5Niw2ICs5OTgsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
IAkJCQlDRTQ2NTE2RDE5REIxRkI0MDAzRUNBMDUgLyogTlNNYXBUYWJsZVNQSS5oICovLAorCQkJ
CUNFNDY1MTZGMTlEQjI2QjgwMDNFQ0EwNSAvKiBYUENTUEkuaCAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTE5OSw2ICsxMjAyLDcg
QEAKIAkJCQkxRkE0N0M4QjE1MjUwMkRBMDA1NjhEMUIgLyogV2ViQ29yZVRocmVhZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQThBNDc0NDYxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlN0cmluZy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0ODcxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERh
dGEuaCBpbiBIZWFkZXJzICovLAorCQkJCUNFNDY1MTcwMTlEQjI2QjgwMDNFQ0EwNSAvKiBYUENT
UEkuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvc3BpL2NvY29h
L1hQQ1NQSS5oIGIvU291cmNlL1dURi93dGYvc3BpL2NvY29hL1hQQ1NQSS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmIzYTljMGNmZTRjODU1MmFkMzgxOTNlMTNhNjJjODFjYWQ1M2RhMWEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9zcGkvY29jb2EvWFBDU1BJLmgKQEAgLTAsMCArMSwxNTQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBY
UENTUElfaAorI2RlZmluZSBYUENTUElfaAorCisjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2gu
aD4KKyNpbmNsdWRlIDxvcy9vYmplY3QuaD4KKworI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKEFQ
UExFX0lOVEVSTkFMX1NESykKKyNpbmNsdWRlIDx4cGMveHBjLmg+CisjZWxzZQorCisjaWYgT1Nf
T0JKRUNUX1VTRV9PQkpDCitPU19PQkpFQ1RfREVDTCh4cGNfb2JqZWN0KTsKK3R5cGVkZWYgeHBj
X29iamVjdF90IHhwY19jb25uZWN0aW9uX3Q7CisKK3N0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQg
X3hwY19vYmplY3RfdmFsaWRhdGUoeHBjX29iamVjdF90IG9iamVjdCkKK3sKKyAgICB2b2lkICpp
c2EgPSAqKHZvaWQgKiB2b2xhdGlsZSAqKShPU19PQkpFQ1RfQlJJREdFIHZvaWQgKilvYmplY3Q7
CisgICAgKHZvaWQpaXNhOworfQorCisjZGVmaW5lIFhQQ19HTE9CQUxfT0JKRUNUKG9iamVjdCkg
KChPU19PQkpFQ1RfQlJJREdFIHhwY19vYmplY3RfdCkmKG9iamVjdCkpCisKKyNlbHNlIC8vIE9T
X09CSkVDVF9VU0VfT0JKQworCit0eXBlZGVmIHZvaWQqIHhwY19vYmplY3RfdDsKK3R5cGVkZWYg
dm9pZCogeHBjX2Nvbm5lY3Rpb25fdDsKKworI2RlZmluZSBYUENfR0xPQkFMX09CSkVDVChvYmpl
Y3QpICgmKG9iamVjdCkpCisKKyNlbmRpZiAvLyBPU19PQkpFQ1RfVVNFX09CSkMKKwordHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgX3hwY190eXBlX3MqIHhwY190eXBlX3Q7CisKKyNpZiBfX0JMT0NLU19f
Cit0eXBlZGVmIGJvb2wgKF54cGNfYXJyYXlfYXBwbGllcl90KShzaXplX3QgaW5kZXgsIHhwY19v
YmplY3RfdCk7Cit0eXBlZGVmIHZvaWQgKF54cGNfaGFuZGxlcl90KSh4cGNfb2JqZWN0X3QpOwor
I2VuZGlmCisKK3R5cGVkZWYgdm9pZCAoKnhwY19jb25uZWN0aW9uX2hhbmRsZXJfdCkoeHBjX2Nv
bm5lY3Rpb25fdCBjb25uZWN0aW9uKTsKKworI2RlZmluZSBYUENfQVJSQVlfQVBQRU5EICgoc2l6
ZV90KSgtMSkpCisjZGVmaW5lIFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVkFMSUQgWFBDX0dMT0JB
TF9PQkpFQ1QoX3hwY19lcnJvcl9jb25uZWN0aW9uX2ludmFsaWQpCisjZGVmaW5lIFhQQ19FUlJP
Ul9URVJNSU5BVElPTl9JTU1JTkVOVCBYUENfR0xPQkFMX09CSkVDVChfeHBjX2Vycm9yX3Rlcm1p
bmF0aW9uX2ltbWluZW50KQorI2RlZmluZSBYUENfVFlQRV9BUlJBWSAoJl94cGNfdHlwZV9hcnJh
eSkKKyNkZWZpbmUgWFBDX1RZUEVfQk9PTCAoJl94cGNfdHlwZV9ib29sKQorI2RlZmluZSBYUENf
VFlQRV9ESUNUSU9OQVJZICgmX3hwY190eXBlX2RpY3Rpb25hcnkpCisjZGVmaW5lIFhQQ19UWVBF
X0VSUk9SICgmX3hwY190eXBlX2Vycm9yKQorI2RlZmluZSBYUENfVFlQRV9TVFJJTkcgKCZfeHBj
X3R5cGVfc3RyaW5nKQorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKSB8fCBVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQorCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbmNsdWRlIDx4cGMv
cHJpdmF0ZS5oPgorI2VuZGlmCisKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwOTAKKyNkZWZpbmUgQ09OU1RfT05fT1JfQUZURVJfTUFDX09TX1hfVkVSU0lPTl8xMDkw
IGNvbnN0CisjZWxzZQorI2RlZmluZSBDT05TVF9PTl9PUl9BRlRFUl9NQUNfT1NfWF9WRVJTSU9O
XzEwOTAKKyNlbmRpZgorCitFWFRFUk5fQyBDT05TVF9PTl9PUl9BRlRFUl9NQUNfT1NfWF9WRVJT
SU9OXzEwOTAgc3RydWN0IF94cGNfZGljdGlvbmFyeV9zIF94cGNfZXJyb3JfY29ubmVjdGlvbl9p
bnZhbGlkOworRVhURVJOX0MgQ09OU1RfT05fT1JfQUZURVJfTUFDX09TX1hfVkVSU0lPTl8xMDkw
IHN0cnVjdCBfeHBjX2RpY3Rpb25hcnlfcyBfeHBjX2Vycm9yX3Rlcm1pbmF0aW9uX2ltbWluZW50
OworCisjdW5kZWYgQ09OU1RfT05fT1JfQUZURVJfTUFDX09TX1hfVkVSU0lPTl8xMDkwCisKK0VY
VEVSTl9DIGNvbnN0IHN0cnVjdCBfeHBjX3R5cGVfcyBfeHBjX3R5cGVfYXJyYXk7CitFWFRFUk5f
QyBjb25zdCBzdHJ1Y3QgX3hwY190eXBlX3MgX3hwY190eXBlX2Jvb2w7CitFWFRFUk5fQyBjb25z
dCBzdHJ1Y3QgX3hwY190eXBlX3MgX3hwY190eXBlX2RpY3Rpb25hcnk7CitFWFRFUk5fQyBjb25z
dCBzdHJ1Y3QgX3hwY190eXBlX3MgX3hwY190eXBlX2Vycm9yOworRVhURVJOX0MgY29uc3Qgc3Ry
dWN0IF94cGNfdHlwZV9zIF94cGNfdHlwZV9zdHJpbmc7CisKK0VYVEVSTl9DIHhwY19vYmplY3Rf
dCB4cGNfYXJyYXlfY3JlYXRlKGNvbnN0IHhwY19vYmplY3RfdCosIHNpemVfdCBjb3VudCk7Cisj
aWYgX19CTE9DS1NfXworRVhURVJOX0MgYm9vbCB4cGNfYXJyYXlfYXBwbHkoeHBjX29iamVjdF90
LCB4cGNfYXJyYXlfYXBwbGllcl90KTsKKyNlbmRpZgorRVhURVJOX0Mgc2l6ZV90IHhwY19hcnJh
eV9nZXRfY291bnQoeHBjX29iamVjdF90KTsKK0VYVEVSTl9DIGNvbnN0IGNoYXIqIHhwY19hcnJh
eV9nZXRfc3RyaW5nKHhwY19vYmplY3RfdCwgc2l6ZV90IGluZGV4KTsKK0VYVEVSTl9DIHZvaWQg
eHBjX2FycmF5X3NldF9zdHJpbmcoeHBjX29iamVjdF90LCBzaXplX3QgaW5kZXgsIGNvbnN0IGNo
YXIqIHN0cmluZyk7CitFWFRFUk5fQyBib29sIHhwY19ib29sX2dldF92YWx1ZSh4cGNfb2JqZWN0
X3QpOworRVhURVJOX0Mgdm9pZCB4cGNfY29ubmVjdGlvbl9jYW5jZWwoeHBjX2Nvbm5lY3Rpb25f
dCk7CitFWFRFUk5fQyB4cGNfY29ubmVjdGlvbl90IHhwY19jb25uZWN0aW9uX2NyZWF0ZShjb25z
dCBjaGFyKiBuYW1lLCBkaXNwYXRjaF9xdWV1ZV90KTsKK0VYVEVSTl9DIHhwY19jb25uZWN0aW9u
X3QgeHBjX2Nvbm5lY3Rpb25fY3JlYXRlX21hY2hfc2VydmljZShjb25zdCBjaGFyKiBuYW1lLCBk
aXNwYXRjaF9xdWV1ZV90LCB1aW50NjRfdCBmbGFncyk7CitFWFRFUk5fQyBwaWRfdCB4cGNfY29u
bmVjdGlvbl9nZXRfcGlkKHhwY19jb25uZWN0aW9uX3QpOworRVhURVJOX0Mgdm9pZCB4cGNfY29u
bmVjdGlvbl9yZXN1bWUoeHBjX2Nvbm5lY3Rpb25fdCk7CitFWFRFUk5fQyB2b2lkIHhwY19jb25u
ZWN0aW9uX3NlbmRfbWVzc2FnZSh4cGNfY29ubmVjdGlvbl90LCB4cGNfb2JqZWN0X3QpOworRVhU
RVJOX0Mgdm9pZCB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2Vfd2l0aF9yZXBseSh4cGNfY29u
bmVjdGlvbl90LCB4cGNfb2JqZWN0X3QsIGRpc3BhdGNoX3F1ZXVlX3QsIHhwY19oYW5kbGVyX3Qp
OworRVhURVJOX0Mgdm9pZCB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcih4cGNfY29u
bmVjdGlvbl90LCB4cGNfaGFuZGxlcl90KTsKK0VYVEVSTl9DIHZvaWQgeHBjX2Nvbm5lY3Rpb25f
c2V0X3RhcmdldF9xdWV1ZSh4cGNfY29ubmVjdGlvbl90LCBkaXNwYXRjaF9xdWV1ZV90KTsKK0VY
VEVSTl9DIHhwY19vYmplY3RfdCB4cGNfZGljdGlvbmFyeV9jcmVhdGUoY29uc3QgY2hhciogIGNv
bnN0KiBrZXlzLCBjb25zdCB4cGNfb2JqZWN0X3QqLCBzaXplX3QgY291bnQpOworRVhURVJOX0Mg
eHBjX29iamVjdF90IHhwY19kaWN0aW9uYXJ5X2NyZWF0ZV9yZXBseSh4cGNfb2JqZWN0X3QpOwor
RVhURVJOX0MgaW50IHhwY19kaWN0aW9uYXJ5X2R1cF9mZCh4cGNfb2JqZWN0X3QsIGNvbnN0IGNo
YXIqIGtleSk7CitFWFRFUk5fQyB4cGNfY29ubmVjdGlvbl90IHhwY19kaWN0aW9uYXJ5X2dldF9y
ZW1vdGVfY29ubmVjdGlvbih4cGNfb2JqZWN0X3QpOworRVhURVJOX0MgYm9vbCB4cGNfZGljdGlv
bmFyeV9nZXRfYm9vbCh4cGNfb2JqZWN0X3QsIGNvbnN0IGNoYXIqIGtleSk7CitFWFRFUk5fQyBj
b25zdCBjaGFyKiB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKHhwY19vYmplY3RfdCwgY29uc3Qg
Y2hhcioga2V5KTsKK0VYVEVSTl9DIHVpbnQ2NF90IHhwY19kaWN0aW9uYXJ5X2dldF91aW50NjQo
eHBjX29iamVjdF90LCBjb25zdCBjaGFyKiBrZXkpOworRVhURVJOX0MgeHBjX29iamVjdF90IHhw
Y19kaWN0aW9uYXJ5X2dldF92YWx1ZSh4cGNfb2JqZWN0X3QsIGNvbnN0IGNoYXIqIGtleSk7CitF
WFRFUk5fQyB2b2lkIHhwY19kaWN0aW9uYXJ5X3NldF9ib29sKHhwY19vYmplY3RfdCwgY29uc3Qg
Y2hhcioga2V5LCBib29sIHZhbHVlKTsKK0VYVEVSTl9DIHZvaWQgeHBjX2RpY3Rpb25hcnlfc2V0
X2ZkKHhwY19vYmplY3RfdCwgY29uc3QgY2hhcioga2V5LCBpbnQgZmQpOworRVhURVJOX0Mgdm9p
ZCB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKHhwY19vYmplY3RfdCwgY29uc3QgY2hhcioga2V5
LCBjb25zdCBjaGFyKiBzdHJpbmcpOworRVhURVJOX0Mgdm9pZCB4cGNfZGljdGlvbmFyeV9zZXRf
dWludDY0KHhwY19vYmplY3RfdCwgY29uc3QgY2hhcioga2V5LCB1aW50NjRfdCB2YWx1ZSk7CitF
WFRFUk5fQyB2b2lkIHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZSh4cGNfb2JqZWN0X3QsIGNvbnN0
IGNoYXIqa2V5LCB4cGNfb2JqZWN0X3QgdmFsdWUpOworRVhURVJOX0MgeHBjX3R5cGVfdCB4cGNf
Z2V0X3R5cGUoeHBjX29iamVjdF90KTsKK0VYVEVSTl9DIHZvaWQgeHBjX21haW4oeHBjX2Nvbm5l
Y3Rpb25faGFuZGxlcl90KTsKK0VYVEVSTl9DIHhwY19vYmplY3RfdCB4cGNfcmV0YWluKHhwY19v
YmplY3RfdCk7CitFWFRFUk5fQyB2b2lkIHhwY19yZWxlYXNlKHhwY19vYmplY3RfdCk7CitFWFRF
Uk5fQyBjb25zdCBjaGFyKiB4cGNfc3RyaW5nX2dldF9zdHJpbmdfcHRyKHhwY19vYmplY3RfdCk7
CitFWFRFUk5fQyB2b2lkIHhwY190cmFuc2FjdGlvbl9iZWdpbih2b2lkKTsKKworRVhURVJOX0Mg
eHBjX29iamVjdF90IHhwY19jb25uZWN0aW9uX2NvcHlfZW50aXRsZW1lbnRfdmFsdWUoeHBjX2Nv
bm5lY3Rpb25fdCwgY29uc3QgY2hhciogZW50aXRsZW1lbnQpOworRVhURVJOX0Mgdm9pZCB4cGNf
Y29ubmVjdGlvbl9nZXRfYXVkaXRfdG9rZW4oeHBjX2Nvbm5lY3Rpb25fdCwgYXVkaXRfdG9rZW5f
dCopOworRVhURVJOX0Mgdm9pZCB4cGNfY29ubmVjdGlvbl9raWxsKHhwY19jb25uZWN0aW9uX3Qs
IGludCk7CitFWFRFUk5fQyB2b2lkIHhwY19jb25uZWN0aW9uX3NldF9pbnN0YW5jZSh4cGNfY29u
bmVjdGlvbl90LCB1dWlkX3QpOworRVhURVJOX0MgbWFjaF9wb3J0X3QgeHBjX2RpY3Rpb25hcnlf
Y29weV9tYWNoX3NlbmQoeHBjX29iamVjdF90LCBjb25zdCBjaGFyKik7CitFWFRFUk5fQyB2b2lk
IHhwY19kaWN0aW9uYXJ5X3NldF9tYWNoX3NlbmQoeHBjX29iamVjdF90LCBjb25zdCBjaGFyKiwg
bWFjaF9wb3J0X3QpOworCisjaWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTAwMAorRVhURVJOX0Mgdm9pZCB4cGNfY29ubmVjdGlvbl9zZXRf
Ym9vdHN0cmFwKHhwY19jb25uZWN0aW9uX3QsIHhwY19vYmplY3RfdCBib290c3RyYXApOworI2Vu
ZGlmCisKKyNpZiAhZGVmaW5lZCh4cGNfcmV0YWluKSAmJiBPU19PQkpFQ1RfVVNFX09CSkNfUkVU
QUlOX1JFTEVBU0UKKyNkZWZpbmUgeHBjX3JldGFpbihvYmplY3QpICh7IHhwY19vYmplY3RfdCBf
byA9IChvYmplY3QpOyBfeHBjX29iamVjdF92YWxpZGF0ZShfbyk7IFtfbyByZXRhaW5dOyB9KQor
I2VuZGlmCisKKyNpZiAhZGVmaW5lZCh4cGNfcmVsZWFzZSkgJiYgT1NfT0JKRUNUX1VTRV9PQkpD
X1JFVEFJTl9SRUxFQVNFCisjZGVmaW5lIHhwY19yZWxlYXNlKG9iamVjdCkgKHsgeHBjX29iamVj
dF90IF9vID0gKG9iamVjdCk7IF94cGNfb2JqZWN0X3ZhbGlkYXRlKF9vKTsgW19vIHJlbGVhc2Vd
OyB9KQorI2VuZGlmCisKKyNlbmRpZiAvLyBYUENTUElfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmgKaW5kZXggNWEwYWQ5NjM2YTFkOTk1MTZlZjY1MzRjZDc3NzNlMmY1
MzVjM2Y4Ni4uZjhlZmRhMDk4ZDNhNTlkYjBlOGExNzJkYjAwM2Y3N2ZlNjI4ZTliZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCkBAIC00Miw4ICs0Miw4IEBACiAK
ICNpZiBPUyhEQVJXSU4pCiAjaW5jbHVkZSA8bWFjaC9tYWNoX3BvcnQuaD4KLSNpbmNsdWRlIDx4
cGMveHBjLmg+CiAjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CisjaW5jbHVkZSA8d3RmL3Nw
aS9jb2NvYS9YUENTUEkuaD4KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9S
TShFRkwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvbWFjL0Nvbm5l
Y3Rpb25NYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvbWFjL0Nvbm5lY3Rpb25N
YWMubW0KaW5kZXggZDkxYjZkNGY2NjdlZjZlOWEwM2FkYjM2NWE5ZTJjOTkxMjQwMTZlMC4uMDIz
YjU4MmEwYTQyYjZjNjJmYmMwNWYyMDIwY2YwZWQwMTc3MTYxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vSVBDL21hYy9Db25uZWN0aW9uTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0lQQy9tYWMvQ29ubmVjdGlvbk1hYy5tbQpAQCAtMzQsMTkgKzM0LDEy
IEBACiAjaW5jbHVkZSA8bWFjaC9tYWNoX2Vycm9yLmg+CiAjaW5jbHVkZSA8bWFjaC92bV9tYXAu
aD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1ZGUgPHhwYy94cGMuaD4KKyNpbmNs
dWRlIDx3dGYvc3BpL2NvY29hL1hQQ1NQSS5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQogI2luY2x1
ZGUgIlByb2Nlc3NBc3NlcnRpb24uaCIKICNlbmRpZgogCi0jaWYgX19oYXNfaW5jbHVkZSg8eHBj
L3ByaXZhdGUuaD4pCi0jaW5jbHVkZSA8eHBjL3ByaXZhdGUuaD4KLSNlbHNlCi1leHRlcm4gIkMi
IHZvaWQgeHBjX2Nvbm5lY3Rpb25fZ2V0X2F1ZGl0X3Rva2VuKHhwY19jb25uZWN0aW9uX3QsIGF1
ZGl0X3Rva2VuX3QqKTsKLWV4dGVybiAiQyIgdm9pZCB4cGNfY29ubmVjdGlvbl9raWxsKHhwY19j
b25uZWN0aW9uX3QsIGludCk7Ci0jZW5kaWYKLQogI2lmIF9faGFzX2luY2x1ZGUoPEhJU2Vydmlj
ZXMvQWNjZXNzaWJpbGl0eVByaXYuaD4pCiAjaW5jbHVkZSA8SElTZXJ2aWNlcy9BY2Nlc3NpYmls
aXR5UHJpdi5oPgogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRy
eVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLkRldmVsb3BtZW50
Lm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1Nl
cnZpY2UvWFBDU2VydmljZU1haW4uRGV2ZWxvcG1lbnQubW0KaW5kZXggMmE5NzNiNTU5ZWQwMjE2
OGFhYzZlYmExZTk3ZTdhZmY2ZTg1NWUzYi4uYTU5ZWVkZGRlM2I3NGJlOWM4MDMyYWI4YWM3ZmVi
Y2ViNjhmZTk3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0VudHJ5UG9pbnRV
dGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4uRGV2ZWxvcG1lbnQubW0KKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZp
Y2UvWFBDU2VydmljZU1haW4uRGV2ZWxvcG1lbnQubW0KQEAgLTMyLDcgKzMyLDcgQEAKICNpbXBv
cnQgPHN0ZGlvLmg+CiAjaW1wb3J0IDxzdGRsaWIuaD4KICNpbXBvcnQgPHd0Zi9PU09iamVjdFB0
ci5oPgotI2ltcG9ydCA8eHBjL3hwYy5oPgorI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9YUENTUEku
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1t
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZp
Y2UvWFBDU2VydmljZU1haW4ubW0KaW5kZXggYjY2ZjIzMTFhNWU4NDMyYzRkZjc0MGFiYzk0Nzgy
MjIxYWVjMmE1ZS4uZTdjMWYzMDBkZmNkMjUzNzMzOWYyZmM2ZDAyNTM3NWQ2OWQxMTZjYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQ
Q1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Vu
dHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KQEAgLTI3
LDcgKzI3LDcgQEAKIAogI2ltcG9ydCA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4K
ICNpbXBvcnQgPHd0Zi9PU09iamVjdFB0ci5oPgotI2ltcG9ydCA8eHBjL3hwYy5oPgorI2ltcG9y
dCA8d3RmL3NwaS9jb2NvYS9YUENTUEkuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5j
aGVyTWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNz
TGF1bmNoZXJNYWMubW0KaW5kZXggNWZlOGU3ZmM1ZTMzNDA4MzdiMjYwZmIxNWFlM2NkMDZkYzBi
NzllMi4uYTEzMDBmYjFjOWVjODk0ZGYxMTgxNzQwNWRhYWIxZjk2YjYxYTQ1OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNz
TGF1bmNoZXJNYWMubW0KQEAgLTQxLDI3ICs0MSwxNyBAQAogI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4K
KyNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvWFBDU1BJLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLSNpbXBvcnQgPHhwYy94cGMu
aD4KLQotI2lmIF9faGFzX2luY2x1ZGUoPHhwYy9wcml2YXRlLmg+KQotI2ltcG9ydCA8eHBjL3By
aXZhdGUuaD4KLSNlbmRpZgogCiAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGRvaW5nIHRoaXMgYW5v
dGhlciB3YXkuCiBleHRlcm4gIkMiIGtlcm5fcmV0dXJuX3QgYm9vdHN0cmFwX3JlZ2lzdGVyMiht
YWNoX3BvcnRfdCwgbmFtZV90LCBtYWNoX3BvcnRfdCwgdWludDY0X3QpOwogCi1leHRlcm4gIkMi
IHZvaWQgeHBjX2Nvbm5lY3Rpb25fc2V0X2luc3RhbmNlKHhwY19jb25uZWN0aW9uX3QsIHV1aWRf
dCk7Ci1leHRlcm4gIkMiIHZvaWQgeHBjX2RpY3Rpb25hcnlfc2V0X21hY2hfc2VuZCh4cGNfb2Jq
ZWN0X3QsIGNvbnN0IGNoYXIqLCBtYWNoX3BvcnRfdCk7Ci0KICNpZiBQTEFURk9STShJT1MpIHx8
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwCi1leHRlcm4gIkMiIHZv
aWQgeHBjX2Nvbm5lY3Rpb25fc2V0X2Jvb3RzdHJhcCh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rp
b24sIHhwY19vYmplY3RfdCBib290c3RyYXApOwotCiAvLyBGSVhNRTogU29mdCBsaW5raW5nIGlz
IHRlbXBvcmFyeSwgbWFrZSB0aGlzIGludG8gYSByZWd1bGFyIGZ1bmN0aW9uIGNhbGwgb25jZSB0
aGlzIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZSBldmVyeXdoZXJlIHdlIG5lZWQuCiBTT0ZUX0xJTktf
RlJBTUVXT1JLKENvcmVGb3VuZGF0aW9uKQogU09GVF9MSU5LX09QVElPTkFMKENvcmVGb3VuZGF0
aW9uLCBfQ0ZCdW5kbGVTZXR1cFhQQ0Jvb3RzdHJhcCwgdm9pZCwgdW51c2VkLCAoeHBjX29iamVj
dF90KSkKLQogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewo=
</data>
<flag name="review"
          id="263738"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>