<?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>180127</bug_id>
          
          <creation_ts>2017-11-28 21:37:11 -0800</creation_ts>
          <short_desc>Adopt updated NSKeyed[Un]Archiver API when available</short_desc>
          <delta_ts>2017-11-29 17:41:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>178484</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>jlewis3</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1375699</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-11-28 21:37:11 -0800</bug_when>
    <thetext>Update WebKit/WebCore to use updated NSKeyed[Un]Archiver API when available.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375702</commentid>
    <comment_count>1</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-11-28 22:07:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/35710738&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375710</commentid>
    <comment_count>2</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-11-28 22:22:43 -0800</bug_when>
    <thetext>Note: This change adopts the new APIs where they match the behavior of existing WebKit code. No attempts are made in this patch to apply NSSecureCoding in places we were not previously.

There should be absolutely no change in behavior with this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375722</commentid>
    <comment_count>3</comment_count>
      <attachid>327834</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-11-28 22:38:35 -0800</bug_when>
    <thetext>Created attachment 327834
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375729</commentid>
    <comment_count>4</comment_count>
      <attachid>327834</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-11-28 23:06:54 -0800</bug_when>
    <thetext>Comment on attachment 327834
Patch

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

r=me with comments.  Don&apos;t break anything.

&gt; Source/WebCore/PAL/pal/spi/cocoa/NSKeyedArchiverSPI.h:34
&gt; +#if USE(APPLE_INTERNAL_SDK) &amp;&amp; USE(SECURE_BY_DEFAULT_ARCHIVER_API)
&gt; +
&gt; +#import &lt;Foundation/NSKeyedArchiver_Private.h&gt;
&gt; +
&gt; +#else

I think this would look nicer if it were arranged like this:

#if USE(SECURE_BY_DEFAULT_ARCHIVER_API)
#if USE(APPLE_INTERNAL_SDK)
#import &lt;Foundation/NSKeyedArchiver_Private.h&gt;
#else
...
#endif
#endif

I would also call SECURE_BY_DEFAULT_ARCHIVER_API SECURE_ARCHIVER_API

&gt; Source/WebCore/PAL/pal/spi/cocoa/NSKeyedArchiverSPI.h:62
&gt; +#include &lt;wtf/RetainPtr.h&gt;

This looks strange in the middle of the file.  The things below this are also not SPI declarations.  Maybe they could go in a different header.

&gt; Source/WebCore/PAL/pal/spi/cocoa/NSKeyedArchiverSPI.h:77
&gt; +inline NSData *_Nullable archivedDataWithRootObject(id _Nonnull object)

Would it make sense to call this insecurelyArchivedDataWithRootObject to mirror securelyArchivedDataWithRootObject and emphasize that it&apos;s insecure?

&gt; Source/WebCore/loader/archive/cf/LegacyWebArchiveMac.mm:49
&gt;      @try {

Could we have this outside of the #if to have mirrored braces?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375740</commentid>
    <comment_count>5</comment_count>
      <attachid>327834</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-11-28 23:27:02 -0800</bug_when>
    <thetext>Comment on attachment 327834
Patch

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

&gt;&gt; Source/WebCore/PAL/pal/spi/cocoa/NSKeyedArchiverSPI.h:34
&gt;&gt; +#else
&gt; 
&gt; I think this would look nicer if it were arranged like this:
&gt; 
&gt; #if USE(SECURE_BY_DEFAULT_ARCHIVER_API)
&gt; #if USE(APPLE_INTERNAL_SDK)
&gt; #import &lt;Foundation/NSKeyedArchiver_Private.h&gt;
&gt; #else
&gt; ...
&gt; #endif
&gt; #endif
&gt; 
&gt; I would also call SECURE_BY_DEFAULT_ARCHIVER_API SECURE_ARCHIVER_API

Ok!

&gt;&gt; Source/WebCore/PAL/pal/spi/cocoa/NSKeyedArchiverSPI.h:62
&gt;&gt; +#include &lt;wtf/RetainPtr.h&gt;
&gt; 
&gt; This looks strange in the middle of the file.  The things below this are also not SPI declarations.  Maybe they could go in a different header.

I&apos;ll move the #include, but I don&apos;t think these utility functions need to be moved. They allow us to build on systems with or without access to this SPI without requiring tons of #if/defs all over our codebase.

&gt;&gt; Source/WebCore/PAL/pal/spi/cocoa/NSKeyedArchiverSPI.h:77
&gt;&gt; +inline NSData *_Nullable archivedDataWithRootObject(id _Nonnull object)
&gt; 
&gt; Would it make sense to call this insecurelyArchivedDataWithRootObject to mirror securelyArchivedDataWithRootObject and emphasize that it&apos;s insecure?

Sure -- that&apos;s a good idea.

&gt;&gt; Source/WebCore/loader/archive/cf/LegacyWebArchiveMac.mm:49
&gt;&gt;      @try {
&gt; 
&gt; Could we have this outside of the #if to have mirrored braces?

No -- there are differences in the implementations inside the #if/else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375743</commentid>
    <comment_count>6</comment_count>
      <attachid>327839</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-11-28 23:36:26 -0800</bug_when>
    <thetext>Created attachment 327839
Patch Part 1 (Landed)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375744</commentid>
    <comment_count>7</comment_count>
      <attachid>327839</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-28 23:52:51 -0800</bug_when>
    <thetext>Comment on attachment 327839
Patch Part 1 (Landed)

Clearing flags on attachment: 327839

Committed r225264: &lt;https://trac.webkit.org/changeset/225264&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375745</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-28 23:52:53 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375974</commentid>
    <comment_count>9</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-11-29 12:44:56 -0800</bug_when>
    <thetext>Reopening for a second fix needed for another API call that changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376038</commentid>
    <comment_count>10</comment_count>
      <attachid>327907</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-11-29 14:25:07 -0800</bug_when>
    <thetext>Created attachment 327907
Patch Part 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376040</commentid>
    <comment_count>11</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-29 14:27:29 -0800</bug_when>
    <thetext>Attachment 327907 did not pass style-queue:


ERROR: Source/WebKit/Shared/ios/InteractionInformationAtPosition.mm:86:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 11 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>1376044</commentid>
    <comment_count>12</comment_count>
      <attachid>327909</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-11-29 14:41:48 -0800</bug_when>
    <thetext>Created attachment 327909
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376051</commentid>
    <comment_count>13</comment_count>
      <attachid>327913</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-11-29 14:51:26 -0800</bug_when>
    <thetext>Created attachment 327913
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376055</commentid>
    <comment_count>14</comment_count>
      <attachid>327914</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-11-29 15:01:30 -0800</bug_when>
    <thetext>Created attachment 327914
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376090</commentid>
    <comment_count>15</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-11-29 16:09:20 -0800</bug_when>
    <thetext>Simon discovered another deprecation error, so revising the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376091</commentid>
    <comment_count>16</comment_count>
      <attachid>327919</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-11-29 16:10:05 -0800</bug_when>
    <thetext>Created attachment 327919
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376095</commentid>
    <comment_count>17</comment_count>
      <attachid>327921</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-11-29 16:20:26 -0800</bug_when>
    <thetext>Created attachment 327921
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376157</commentid>
    <comment_count>18</comment_count>
      <attachid>327921</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-29 17:41:00 -0800</bug_when>
    <thetext>Comment on attachment 327921
Patch

Clearing flags on attachment: 327921

Committed r225309: &lt;https://trac.webkit.org/changeset/225309&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376158</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-29 17:41:02 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327834</attachid>
            <date>2017-11-28 22:38:35 -0800</date>
            <delta_ts>2017-11-28 23:36:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180127-20171128223834.patch</filename>
            <type>text/plain</type>
            <size>50595</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNTI0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE3LTExLTI4ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkb3B0IHVwZGF0ZWQgTlNL
ZXllZFtVbl1BcmNoaXZlciBBUEkgd2hlbiBhdmFpbGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDEyNworICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzU3MTA3Mzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgU3dpdGNoIHRvIG5ldyBOU0tleWVkW1VuXUFyY2hpdmVyIG1ldGhvZHMgd2hlbiBhdmFp
bGFibGUuIFdlIGRvIG5vdCBhdHRlbXB0CisgICAgICAgIHRvIGFkb3B0IHNlY3VyZSBjb2Rpbmcg
aW4gcGxhY2VzIHdlIHdlcmUgbm90IHVuZGVyIHRoZSBvcmlnaW5hbCBBUEkuCisKKyAgICAgICAg
TW9zdCBvZiB0aGUgbmV3IEFQSSBpcyB3cmFwcGVkIGluIGEgc2V0IG9mIGNvbnZlbmllbmNlIG1l
dGhvZHMgc28gd2UgY2FuCisgICAgICAgIGJ1aWxkIHdpdGhvdXQgdGhlIG5ldyBBUEkgb24gb2xk
ZXIgc3lzdGVtcy4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAg
KiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6YXJjaGl2
ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyk6IFVzZSBuZXcgY29udmVuaWVuY2UgbWV0aG9kCisg
ICAgICAgIHRvIGFyY2hpdmUgdGhlIHN0cmluZyBvYmplY3QuCisgICAgICAgICogbG9hZGVyL2Fy
Y2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlUmVzcG9uc2VGcm9tTWFjQXJjaGl2ZWREYXRhKTog
VXBkYXRlIHRvCisgICAgICAgIHVzZSBzZWN1cmUgY29kaW5nIHdoZXJlIHBvc3NpYmxlLgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVz
ZW50YXRpb24pOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJv
YXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6
IFVzZSBuZXcgc2VjdXJlIEFQSS4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2Fy
ZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOiBEaXR0by4KKyAgICAgICAg
KiB0ZXN0aW5nL2NvY29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5tbToKKyAgICAgICAgKFdlYkNv
cmVUZXN0U3VwcG9ydDo6Y3JlYXRlQ0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEpOiBVcGRh
dGUgdG8KKyAgICAgICAgc2VjdXJlIGNvZGluZyBBUEkgd2hlcmUgcG9zc2libGUuCisKIDIwMTct
MTEtMjggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBHZXQgcmlk
IG9mIFNlcnZpY2VXb3JrZXI6OmFsbFdvcmtlcnMoKSBoYXNobWFwCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cJKHJldmlzaW9uIDIyNTI1OSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxNy0xMS0yOCAgQnJlbnQgRnVsZ2hh
bSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCB1cGRhdGVkIE5TS2V5ZWRb
VW5dQXJjaGl2ZXIgQVBJIHdoZW4gYXZhaWxhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAxMjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM1
NzEwNzM4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBuZXcgY29udmVuaWVuY2UgbWV0aG9kcyAoYW5kIFNQSSBoZWFkZXJzKSBzbyB3ZSBjYW4g
YWRvcHQgbmV3IE5TS2V5ZWRBcmNoaXZlcgorICAgICAgICBBUEkgdGhhdCB1c2VzIHNlY3VyZSBj
b2RpbmcgYnkgZGVmYXVsdC4KKworICAgICAgICAqIFBBTC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIHBhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg6IEFkZGVk
LgorICAgICAgICAoc2VjdXJlbHlBcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdCk6IE5ldyBjb252
ZW5pZW5jZSBtZXRob2QuCisgICAgICAgIChzZWN1cmVseVVuYXJjaGl2ZVJvb3RPYmplY3RPZkNs
YXNzRnJvbURhdGEpOiBEaXR0by4KKyAgICAgICAgKHNlY3VyZUFyY2hpdmVyRnJvbU11dGFibGVE
YXRhKTogRGl0dG8uCisgICAgICAgIChzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEpOiBEaXR0by4K
KwogMjAxNy0xMS0yOCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSRUdSRVNTSU9OIChIaWdoIFNpZXJyYSk6IExheW91dCBUZXN0IGZhc3QvbXVsdGlj
b2wvbmV3bXVsdGljb2wvc3Bhbm5lcjIuaHRtbCBpcyBhIGZsYWt5IGltYWdlIGZhaWx1cmUgb24g
V0sxCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAyMjUyNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw2ICsxMDgsNyBA
QAogCQkxQzQ4NzZEODFGOEQ3RjRFMDBDQ0VFQkQgLyogTG9nZ2luZy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzQ4NzZENjFGOEQ3RjRFMDBDQ0VF
QkQgLyogTG9nZ2luZy5jcHAgKi87IH07CiAJCTFDNDg3NkQ5MUY4RDdGNEUwMENDRUVCRCAvKiBM
b2dnaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QzQ4NzZENzFGOEQ3RjRFMDBDQ0VFQkQgLyogTG9nZ2luZy5oICovOyB9OwogCQkxQzQ4NzZFMDFG
OEQ4Mzc1MDBDQ0VFQkQgLyogTG9nZ2luZ0NvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM0ODc2REYxRjhEODM3NTAwQ0NFRUJEIC8qIExvZ2dp
bmdDb2NvYS5tbSAqLzsgfTsKKwkJN0ExNjU2NDQxRjk3QjJCOTAwQkEzQ0U0IC8qIE5TS2V5ZWRB
cmNoaXZlclNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0ExNjU2NDMxRjk3QjJCODAwQkEzQ0U0IC8qIE5TS2V5ZWRBcmNoaXZlclNQSS5oICovOyB9
OwogCQlBMTAyNjU4NzFGNTY3NDYxMDBCNEM4NDQgLyogRm91bmRhdGlvblNQSS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwMjY1ODYxRjU2NzQ2MTAw
QjRDODQ0IC8qIEZvdW5kYXRpb25TUEkuaCAqLzsgfTsKIAkJQTEwMjY1ODkxRjU2NzQ3QTAwQjRD
ODQ0IC8qIEhJVG9vbGJveFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTEwMjY1ODgxRjU2NzQ3QTAwQjRDODQ0IC8qIEhJVG9vbGJveFNQSS5oICov
OyB9OwogCQlBMTAyNjU4QjFGNTY3NDhDMDBCNEM4NDQgLyogUXVpY2tEcmF3U1BJLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTAyNjU4QTFGNTY3NDhD
MDBCNEM4NDQgLyogUXVpY2tEcmF3U1BJLmggKi87IH07CkBAIC0yNTMsNiArMjU0LDcgQEAKIAkJ
MUM0ODc2REYxRjhEODM3NTAwQ0NFRUJEIC8qIExvZ2dpbmdDb2NvYS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IExvZ2dpbmdDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUM2N0NFQTExRTMyRURBODAwRjgwRjJFIC8qIEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzY3Q0VBMjFFMzJFRTI2MDBGODBGMkUgLyogVmVy
c2lvbi54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBWZXJzaW9uLnhj
Y29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QTE2NTY0MzFGOTdCMkI4MDBC
QTNDRTQgLyogTlNLZXllZEFyY2hpdmVyU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE5TS2V5ZWRBcmNoaXZlclNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMTAyNjU4NjFGNTY3NDYxMDBCNEM4NDQgLyogRm91bmRhdGlvblNQSS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBGb3VuZGF0aW9uU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUExMDI2NTg4MUY1Njc0N0EwMEI0Qzg0NCAvKiBISVRvb2xib3hTUEkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSElUb29sYm94U1BJLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMDI2NThBMUY1Njc0OEMwMEI0Qzg0NCAvKiBRdWlja0Ry
YXdTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVpY2tEcmF3U1BJLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNzEsNiArMzczLDcgQEAKIAkJCQkwQzJE
QTEzMjFGM0JFQjQ5MDBEQkMzMTcgLyogTlNFeHRlbnNpb25TUEkuaCAqLywKIAkJCQkwQzJEQTEz
MzFGM0JFQjQ5MDBEQkMzMTcgLyogTlNGaWxlTWFuYWdlclNQSS5oICovLAogCQkJCUY0NDI5MTVE
MUZBNTI0NzMwMDJDQzkzRSAvKiBOU0ZpbGVTaXplRm9ybWF0dGVyU1BJLmggKi8sCisJCQkJN0Ex
NjU2NDMxRjk3QjJCODAwQkEzQ0U0IC8qIE5TS2V5ZWRBcmNoaXZlclNQSS5oICovLAogCQkJCTBD
MkRBMTM0MUYzQkVCNDkwMERCQzMxNyAvKiBOU1N0cmluZ1NQSS5oICovLAogCQkJCTBDMkRBMTM1
MUYzQkVCNDkwMERCQzMxNyAvKiBOU1RvdWNoQmFyU1BJLmggKi8sCiAJCQkJMEMyREExMzYxRjNC
RUI0OTAwREJDMzE3IC8qIE5TVVJMQ29ubmVjdGlvblNQSS5oICovLApAQCAtNjY0LDYgKzY2Nyw3
IEBACiAJCQkJMEM3Nzg1OTAxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TRm9udFNQSS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTEwODI2RkUxRjU4QTQzMzAwNDc3MkFDIC8qIE5TR3JhcGhpY3NTUEkuaCBp
biBIZWFkZXJzICovLAogCQkJCTBDNzc4NTkxMUY0NTEzMEYwMEY0RUJCNiAvKiBOU0ltbWVkaWF0
ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyU1BJLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QTE2NTY0
NDFGOTdCMkI5MDBCQTNDRTQgLyogTlNLZXllZEFyY2hpdmVyU1BJLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwQzc3ODU5MjFGNDUxMzBGMDBGNEVCQjYgLyogTlNNZW51U1BJLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwQzc3ODU5MzFGNDUxMzBGMDBGNEVCQjYgLyogTlNQYXN0ZWJvYXJkU1BJLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwQzc3ODU5NDFGNDUxMzBGMDBGNEVCQjYgLyogTlNQb3BvdmVyU1BJ
LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29h
L05TS2V5ZWRBcmNoaXZlclNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNkZWZpbmUgVVNFX1NFQ1VSRV9CWV9ERUZB
VUxUX0FSQ0hJVkVSX0FQSSAoKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01B
WF9BTExPV0VEID49IDEwMTMwMiAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTEwMjAwKSB8fCAoUExBVEZPUk0oV0FUQ0hPUykgJiYgX19XQVRDSF9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSA0MDIwMCkgfHwgKFBMQVRGT1JNKFRWT1MpICYmIF9fVFZfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMjAwKSkKKworI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspICYmIFVTRShTRUNVUkVfQllfREVGQVVMVF9BUkNISVZFUl9BUEkpCisKKyNpbXBvcnQg
PEZvdW5kYXRpb24vTlNLZXllZEFyY2hpdmVyX1ByaXZhdGUuaD4KKworI2Vsc2UKKworI2ltcG9y
dCA8QXZhaWxhYmlsaXR5Lmg+CisjaW1wb3J0IDxGb3VuZGF0aW9uL05TQ29kZXIuaD4KKyNpbXBv
cnQgPEZvdW5kYXRpb24vTlNLZXllZEFyY2hpdmVyLmg+CisjaW1wb3J0IDx3dGYvQXNzZXJ0aW9u
cy5oPgorCisjaWYgVVNFKFNFQ1VSRV9CWV9ERUZBVUxUX0FSQ0hJVkVSX0FQSSkKKworTlNfQVNT
VU1FX05PTk5VTExfQkVHSU4KKworQGludGVyZmFjZSBOU0tleWVkQXJjaGl2ZXIgKE5TS2V5ZWRB
cmNoaXZlclNlY3VyZUNvZGluZ0luaXRpYWxpemVycykKKy0gKGluc3RhbmNldHlwZSlpbml0UmVx
dWlyaW5nU2VjdXJlQ29kaW5nOihCT09MKXJlcXVpcmVzU2VjdXJlQ29kaW5nIEFQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpOworKyAobnVsbGFibGUgTlNEYXRhICopYXJjaGl2
ZWREYXRhV2l0aFJvb3RPYmplY3Q6KGlkKW9iamVjdCByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6KEJP
T0wpcmVxdWlyZXNTZWN1cmVDb2RpbmcgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3IgQVBJX0FWQUlM
QUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4wKSk7CitAZW5kCisKK0BpbnRlcmZhY2UgTlNLZXll
ZFVuYXJjaGl2ZXIgKE5TS2V5ZWRVbmFyY2hpdmVyU2VjdXJlQ29kaW5nSW5pdGlhbGl6ZXIpCist
IChudWxsYWJsZSBpbnN0YW5jZXR5cGUpaW5pdEZvclJlYWRpbmdGcm9tRGF0YTooTlNEYXRhICop
ZGF0YSBlcnJvcjooTlNFcnJvciAqKillcnJvciBBUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzKSwg
aW9zKDExLjApKTsKKysgKG51bGxhYmxlIGlkKXVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzOihDbGFz
cyljbHMgZnJvbURhdGE6KE5TRGF0YSAqKWRhdGEgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3IgQVBJ
X0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4wKSk7CisrIChudWxsYWJsZSBpZCl1bmFy
Y2hpdmVkT2JqZWN0T2ZDbGFzc2VzOihOU1NldDxDbGFzcz4gKiljbGFzc2VzIGZyb21EYXRhOihO
U0RhdGEgKilkYXRhIGVycm9yOihOU0Vycm9yICoqKWVycm9yIEFQSV9BVkFJTEFCTEUobWFjb3Mo
MTAuMTMpLCBpb3MoMTEuMCkpOworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2Vu
ZGlmCisKKyNlbmRpZgorCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitpbmxpbmUgTlNE
YXRhICpfTnVsbGFibGUgc2VjdXJlbHlBcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdChpZCBfTm9u
bnVsbCBvYmplY3QpCit7CisjaWYgVVNFKFNFQ1VSRV9CWV9ERUZBVUxUX0FSQ0hJVkVSX0FQSSkK
KyAgICBOU0Vycm9yICplcnJvcjsKKyAgICBOU0RhdGEgKmRhdGEgPSBbTlNLZXllZEFyY2hpdmVy
IGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0Om9iamVjdCByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6
WUVTIGVycm9yOiZlcnJvcl07CisgICAgaWYgKCFkYXRhKQorICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBhcmNoaXZlIGRhdGE6ICVAIiwgZXJyb3IpOworICAgIHJldHVybiBkYXRhOworI2Vs
c2UKKyAgICByZXR1cm4gW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVj
dDpvYmplY3RdOworI2VuZGlmCit9CisKK2lubGluZSBOU0RhdGEgKl9OdWxsYWJsZSBhcmNoaXZl
ZERhdGFXaXRoUm9vdE9iamVjdChpZCBfTm9ubnVsbCBvYmplY3QpCit7CisjaWYgVVNFKFNFQ1VS
RV9CWV9ERUZBVUxUX0FSQ0hJVkVSX0FQSSkKKyAgICBOU0Vycm9yICplcnJvcjsKKyAgICBOU0Rh
dGEgKmRhdGEgPSBbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0Om9i
amVjdCByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6Tk8gZXJyb3I6JmVycm9yXTsKKyAgICBpZiAoIWRh
dGEpCisgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGFyY2hpdmUgZGF0YTogJUAiLCBlcnJv
cik7CisgICAgcmV0dXJuIGRhdGE7CisjZWxzZQorICAgIHJldHVybiBbTlNLZXllZEFyY2hpdmVy
IGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0Om9iamVjdF07CisjZW5kaWYKK30KKworaW5saW5l
IGlkIF9OdWxsYWJsZSBzZWN1cmVseVVuYXJjaGl2ZU9iamVjdE9mQ2xhc3NGcm9tRGF0YShDbGFz
cyBfTm9ubnVsbCBjbHMsIE5TRGF0YSAqIF9Ob25udWxsIGRhdGEpCit7CisjaWYgVVNFKFNFQ1VS
RV9CWV9ERUZBVUxUX0FSQ0hJVkVSX0FQSSkKKyAgICBOU0Vycm9yICplcnJvcjsKKyAgICBpZCB2
YWx1ZSA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzczpjbHMgZnJv
bURhdGE6ZGF0YSBlcnJvcjomZXJyb3JdOworICAgIGlmICghZGF0YSkKKyAgICAgICAgTE9HX0VS
Uk9SKCJVbmFibGUgdG8gdW5hcmNoaXZlIGRhdGE6ICVAIiwgZXJyb3IpOworICAgIHJldHVybiB2
YWx1ZTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNscyk7CisgICAgcmV0dXJuIFtOU0tleWVk
VW5hcmNoaXZlciB1bmFyY2hpdmVPYmplY3RXaXRoRGF0YTpkYXRhXTsKKyNlbmRpZgorfQorCitp
bmxpbmUgaWQgX051bGxhYmxlIHVuYXJjaGl2ZU9iamVjdE9mQ2xhc3NGcm9tRGF0YShOU0RhdGEg
KiBfTm9ubnVsbCBkYXRhKQoreworI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgor
ICAgIHJldHVybiBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlT2JqZWN0V2l0aERhdGE6ZGF0
YV07CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCit9CisKK2lubGluZSBSZXRhaW5QdHI8
TlNLZXllZEFyY2hpdmVyPiBzZWN1cmVBcmNoaXZlckZyb21NdXRhYmxlRGF0YShOU011dGFibGVE
YXRhICpfTm9ubnVsbCBtdXRhYmxlRGF0YSkKK3sKKyAgICBOU0tleWVkQXJjaGl2ZXIgKmFyY2hp
dmVyID0gW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFibGVE
YXRhOm11dGFibGVEYXRhXTsKKyAgICBbYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6
WUVTXTsKKyAgICByZXR1cm4gYWRvcHROUyhhcmNoaXZlcik7Cit9CisKK2lubGluZSBSZXRhaW5Q
dHI8TlNLZXllZFVuYXJjaGl2ZXI+IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YShOU0RhdGEgKl9O
b25udWxsIGRhdGEpCit7CisjaWYgVVNFKFNFQ1VSRV9CWV9ERUZBVUxUX0FSQ0hJVkVSX0FQSSkK
KyAgICBOU0tleWVkVW5hcmNoaXZlciAqdW5hcmNoaXZlciA9IFtbTlNLZXllZFVuYXJjaGl2ZXIg
YWxsb2NdIGluaXRGb3JSZWFkaW5nRnJvbURhdGE6ZGF0YSBlcnJvcjpuaWxdOworICAgIHVuYXJj
aGl2ZXIuZGVjb2RpbmdGYWlsdXJlUG9saWN5ID0gTlNEZWNvZGluZ0ZhaWx1cmVQb2xpY3lSYWlz
ZUV4Y2VwdGlvbjsKKyNlbHNlCisgICAgTlNLZXllZFVuYXJjaGl2ZXIgKnVuYXJjaGl2ZXIgPSBb
W05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ1dpdGhEYXRhOmRhdGFdOwor
ICAgIFt1bmFyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107CisjZW5kaWYKKyAg
ICByZXR1cm4gYWRvcHROUyh1bmFyY2hpdmVyKTsKK30KKwpJbmRleDogU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCShyZXZpc2lvbiAyMjUyNDgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC01Miw2ICs1Miw3IEBACiAjaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQg
Im1hcmt1cC5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0F0dHJpYnV0ZWRTdHJpbmdTUEku
aD4KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg+CiAjaW1wb3J0
IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0x
NDEsNyArMTQyLDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YQog
ICAgIGlmICghYXR0cmlidXRlZFN0cmluZy5sZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tleWVkQXJjaGl2ZXIgYXJj
aGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZ10pOworICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdChhdHRyaWJ1dGVk
U3RyaW5nKSk7CiB9CiAKIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZvcm1hdCgpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2Fj
eVdlYkFyY2hpdmVNYWMubW0JKHJldmlzaW9uIDIyNTI0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI2LDggKzI2LDEwIEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJMZWdhY3lXZWJBcmNoaXZlLmgiCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIkxlZ2FjeVdlYkFyY2hpdmUuaCIKKworI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVk
QXJjaGl2ZXJTUEkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MiwxMyArNDQsMTMg
QEAgUmVzb3VyY2VSZXNwb25zZSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdAogICAgICAgICByZXR1
cm4gUmVzb3VyY2VSZXNwb25zZSgpOwogICAgIAogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNl
ID0gbmlsOwotICAgIE5TS2V5ZWRVbmFyY2hpdmVyICp1bmFyY2hpdmVyID0gW1tOU0tleWVkVW5h
cmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdXaXRoRGF0YTooTlNEYXRhICopcmVzcG9uc2VE
YXRhXTsKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTMwMCkgfHwgUExBVEZPUk0oSU9TKQotICAgIC8vIEJlY2F1c2Ugb2YgPHJkYXI6
Ly9wcm9ibGVtLzM0MDYzMzEzPiB3ZSBjYW4ndCB1c2UgdGhpcyBmb3IgZGVjb2RpbmcgaW4gb2xk
ZXIgT1Mncy4KLSAgICBbdW5hcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOwor
I2lmIFVTRShTRUNVUkVfQllfREVGQVVMVF9BUkNISVZFUl9BUEkpCisgICAgYXV0byB1bmFyY2hp
dmVyID0gc2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKChOU0RhdGEgKilyZXNwb25zZURhdGEpOwog
ICAgIEB0cnkgewogICAgICAgICByZXNwb25zZSA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9m
Q2xhc3M6W05TVVJMUmVzcG9uc2UgY2xhc3NdIGZvcktleTpMZWdhY3lXZWJBcmNoaXZlUmVzb3Vy
Y2VSZXNwb25zZUtleV07CiAjZWxzZQorICAgIC8vIEJlY2F1c2Ugb2YgPHJkYXI6Ly9wcm9ibGVt
LzM0MDYzMzEzPiB3ZSBjYW4ndCB1c2Ugc2VjdXJlIGNvZGluZyBmb3IgZGVjb2RpbmcgaW4gb2xk
ZXIgT1Mncy4KKyAgICBhdXRvIHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2
ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nV2l0aERhdGE6KE5TRGF0YSAqKXJlc3BvbnNlRGF0YV0p
OwogICAgIEB0cnkgewogICAgICAgICBpZCByZXNwb25zZU9iamVjdCA9IFt1bmFyY2hpdmVyIGRl
Y29kZU9iamVjdEZvcktleTpMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZUtleV07CiAg
ICAgICAgIGlmIChbcmVzcG9uc2VPYmplY3QgaXNLaW5kT2ZDbGFzczpbTlNVUkxSZXNwb25zZSBj
bGFzc11dKQpAQCAtNTksOCArNjEsNyBAQCBSZXNvdXJjZVJlc3BvbnNlIExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBOUyhIVFRQKVVS
TFJlc3BvbnNlOiAlQCIsIGV4Y2VwdGlvbik7CiAgICAgICAgIHJlc3BvbnNlID0gbmlsOwogICAg
IH0KLSAgICBbdW5hcmNoaXZlciByZWxlYXNlXTsKLSAgICAKKwogICAgIHJldHVybiBSZXNvdXJj
ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KIApAQCAtNzMsMTUgKzc0LDE0IEBAIFJldGFpblB0cjxD
RkRhdGFSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmMKIAogICAgIENGTXV0YWJsZURhdGFSZWYgcmVz
cG9uc2VEYXRhID0gQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAwKTsKIAotICAgIE5TS2V5ZWRBcmNo
aXZlciAqYXJjaGl2ZXIgPSBbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdX
aXRoTXV0YWJsZURhdGE6KE5TTXV0YWJsZURhdGEgKilyZXNwb25zZURhdGFdOwotI2lmIChQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8
fCBQTEFURk9STShJT1MpCisgICAgYXV0byBhcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJj
aGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFibGVEYXRhOihOU011dGFibGVEYXRh
ICopcmVzcG9uc2VEYXRhXSk7CisjaWYgVVNFKFNFQ1VSRV9CWV9ERUZBVUxUX0FSQ0hJVkVSX0FQ
SSkKICAgICAvLyBCZWNhdXNlIG9mIDxyZGFyOi8vcHJvYmxlbS8zNDA2MzMxMz4gd2UgY2FuJ3Qg
dXNlIHRoaXMgZm9yIGVuY29kaW5nIGluIG9sZGVyIE9TJ3MuCiAgICAgW2FyY2hpdmVyIHNldFJl
cXVpcmVzU2VjdXJlQ29kaW5nOllFU107CiAjZW5kaWYKICAgICBbYXJjaGl2ZXIgZW5jb2RlT2Jq
ZWN0Om5zUmVzcG9uc2UgZm9yS2V5OkxlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5
XTsKICAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOwotICAgIFthcmNoaXZlciByZWxlYXNl
XTsKLSAgICAKKwogICAgIHJldHVybiBhZG9wdENGKHJlc3BvbnNlRGF0YSk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2Fy
ZElPUy5tbQkocmV2aXNpb24gMjI1MjQ4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDYgKzM2LDcgQEAK
ICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KICNpbXBv
cnQgPFVJS2l0L1VJSW1hZ2UuaD4KICNpbXBvcnQgPFVJS2l0L1VJUGFzdGVib2FyZC5oPgorI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KICNpbXBvcnQgPHBhbC9z
cGkvaW9zL1VJS2l0U1BJLmg+CiAjaW1wb3J0IDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbXBvcnQg
PHd0Zi9Tb2Z0TGlua2luZy5oPgpAQCAtMjY0LDcgKzI2NSw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0
ZWJvYXJkOjp3cml0ZShjb25zdCBQYXMKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXIgYWRkRGF0YTpjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGZvclR5cGU6V2ViQXJjaGl2ZVBib2FyZFR5cGVdOwogCiAgICAgaWYgKGNvbnRlbnQu
ZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdCkgewotICAgICAgICBOU0F0dHJpYnV0ZWRTdHJp
bmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlT2JqZWN0
V2l0aERhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV07CisgICAgICAgIE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmlu
ZyA9IHNlY3VyZWx5VW5hcmNoaXZlT2JqZWN0T2ZDbGFzc0Zyb21EYXRhKFtOU0F0dHJpYnV0ZWRT
dHJpbmcgY2xhc3NdLCBjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPmNyZWF0
ZU5TRGF0YSgpLmdldCgpKTsKICAgICAgICAgaWYgKGF0dHJpYnV0ZWRTdHJpbmcpCiAgICAgICAg
ICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6YXR0
cmlidXRlZFN0cmluZ107CiAgICAgfQpAQCAtMzc5LDExICszODAsMTEgQEAgVmVjdG9yPFN0cmlu
Zz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlcwogICAgICAgICBpZiAoIXByb3ZpZGVyLnRlYW1E
YXRhLmxlbmd0aCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlkIHRlYW1EYXRh
T2JqZWN0ID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZU9iamVjdFdpdGhEYXRhOnByb3Zp
ZGVyLnRlYW1EYXRhXTsKLSAgICAgICAgaWYgKCF0ZWFtRGF0YU9iamVjdCB8fCAhW3RlYW1EYXRh
T2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBjbGFzc11dKQorICAgICAgICBOU0Rp
Y3Rpb25hcnkgKnRlYW1EYXRhT2JqZWN0ID0gdW5hcmNoaXZlT2JqZWN0T2ZDbGFzc0Zyb21EYXRh
KHByb3ZpZGVyLnRlYW1EYXRhKTsKKyAgICAgICAgaWYgKCF0ZWFtRGF0YU9iamVjdCkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlkIG9yaWdpbkluVGVhbURhdGEgPSBbKE5TRGlj
dGlvbmFyeSAqKXRlYW1EYXRhT2JqZWN0IG9iamVjdEZvcktleTpAKG9yaWdpbktleUZvclRlYW1E
YXRhKV07CisgICAgICAgIGlkIG9yaWdpbkluVGVhbURhdGEgPSBbdGVhbURhdGFPYmplY3Qgb2Jq
ZWN0Rm9yS2V5OkAob3JpZ2luS2V5Rm9yVGVhbURhdGEpXTsKICAgICAgICAgaWYgKCFbb3JpZ2lu
SW5UZWFtRGF0YSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIGlmIChTdHJpbmcoKE5TU3RyaW5nICopb3JpZ2luSW5UZWFtRGF0
YSkgIT0gb3JpZ2luKQpAQCAtNDQ0LDggKzQ0NSw3IEBAIGxvbmcgUGxhdGZvcm1QYXN0ZWJvYXJk
Ojp3cml0ZShjb25zdCBQYXMKICAgICAgICAgICAgIE5TTXV0YWJsZUFycmF5PE5TU3RyaW5nICo+
ICp0eXBlc0FzTlNBcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheV07CiAgICAgICAgICAgICBm
b3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcykKICAgICAgICAgICAgICAgICBbdHlw
ZXNBc05TQXJyYXkgYWRkT2JqZWN0OnR5cGVdOwotICAgICAgICAgICAgW3JlcHJlc2VudGF0aW9u
c1RvUmVnaXN0ZXIgc2V0VGVhbURhdGE6W05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRo
Um9vdE9iamVjdDpAewotICAgICAgICAgICAgICAgIEAob3JpZ2luS2V5Rm9yVGVhbURhdGEpIDog
ZGF0YS5vcmlnaW4sIEAoY3VzdG9tVHlwZXNLZXlGb3JUZWFtRGF0YSkgOiB0eXBlc0FzTlNBcnJh
eSB9XV07CisgICAgICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRUZWFtRGF0
YTphcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdChAeyBAKG9yaWdpbktleUZvclRlYW1EYXRhKSA6
IGRhdGEub3JpZ2luLCBAKGN1c3RvbVR5cGVzS2V5Rm9yVGVhbURhdGEpIDogdHlwZXNBc05TQXJy
YXkgfSldOwogICAgICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpz
ZXJpYWxpemVkU2hhcmVkQnVmZmVyLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6Y29jb2FUeXBlKCkpXTsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tCShyZXZp
c2lvbiAyMjUyNDgpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2NvY29hL1dlYkFyY2hpdmVE
dW1wU3VwcG9ydC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2ltcG9ydCA8
Q0ZOZXR3b3JrL0NGSFRUUE1lc3NhZ2UuaD4KICNpbXBvcnQgPENGTmV0d29yay9DRk5ldHdvcmsu
aD4KICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CisjaW1wb3J0IDxwYWwvc3Bp
L2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CkBA
IC00MCwxNCArNDEsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmVUZXN0U3VwcG9ydCB7CiAKIHN0YXRp
YyBDRlVSTFJlc3BvbnNlUmVmIGNyZWF0ZUNGVVJMUmVzcG9uc2VGcm9tUmVzcG9uc2VEYXRhKENG
RGF0YVJlZiByZXNwb25zZURhdGEpCiB7Ci0gICAgUmV0YWluUHRyPE5TS2V5ZWRVbmFyY2hpdmVy
PiB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9y
UmVhZGluZ1dpdGhEYXRhOihOU0RhdGEgKilyZXNwb25zZURhdGFdKTsKICAgICBOU1VSTFJlc3Bv
bnNlICpyZXNwb25zZTsKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgUExBVEZPUk0oSU9TKQotICAgIC8vIEJlY2F1c2Ug
b2YgPHJkYXI6Ly9wcm9ibGVtLzM0MDYzMzEzPiB3ZSBjYW4ndCB1c2UgdGhpcyBmb3IgZGVjb2Rp
bmcgaW4gb2xkZXIgT1Mncy4KLSAgICBbdW5hcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGlu
ZzpZRVNdOworI2lmIFVTRShTRUNVUkVfQllfREVGQVVMVF9BUkNISVZFUl9BUEkpCisgICAgYXV0
byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKChOU0RhdGEgKilyZXNwb25z
ZURhdGEpOwogICAgIEB0cnkgewogICAgICAgICByZXNwb25zZSA9IFt1bmFyY2hpdmVyIGRlY29k
ZU9iamVjdE9mQ2xhc3M6W05TVVJMUmVzcG9uc2UgY2xhc3NdIGZvcktleTpAIldlYlJlc291cmNl
UmVzcG9uc2UiXTsgLy8gV2ViUmVzb3VyY2VSZXNwb25zZUtleSBpbiBXZWJSZXNvdXJjZS5tCiAj
ZWxzZQorICAgIC8vIEJlY2F1c2Ugb2YgPHJkYXI6Ly9wcm9ibGVtLzM0MDYzMzEzPiB3ZSBjYW4n
dCB1c2Ugc2VjdXJlIGNvZGluZyBmb3IgZGVjb2RpbmcgaW4gb2xkZXIgT1Mncy4KKyAgICBhdXRv
IHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JS
ZWFkaW5nV2l0aERhdGE6KE5TRGF0YSAqKXJlc3BvbnNlRGF0YV0pOwogICAgIEB0cnkgewogICAg
ICAgICByZXNwb25zZSA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdEZvcktleTpAIldlYlJlc291
cmNlUmVzcG9uc2UiXTsgLy8gV2ViUmVzb3VyY2VSZXNwb25zZUtleSBpbiBXZWJSZXNvdXJjZS5t
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjUyNDgpCisrKyBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU5IEBACisyMDE3LTExLTI4ICBC
cmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkb3B0IHVwZGF0
ZWQgTlNLZXllZFtVbl1BcmNoaXZlciBBUEkgd2hlbiBhdmFpbGFibGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDEyNworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMzU3MTA3Mzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgU3dpdGNoIHRvIG5ldyBOU0tleWVkW1VuXUFyY2hpdmVyIG1ldGhvZHMgd2hl
biBhdmFpbGFibGUuIFdlIGRvIG5vdCBhdHRlbXB0CisgICAgICAgIHRvIGFkb3B0IHNlY3VyZSBj
b2RpbmcgaW4gcGxhY2VzIHdlIHdlcmUgbm90IHVuZGVyIHRoZSBvcmlnaW5hbCBBUEkuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybS9pb3MvQWNjZXNzaWJpbGl0eUlPUy5tbToKKyAgICAgICAgKFdlYktp
dDo6bmV3QWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuKTogVXNlIHNlY3VyZS1ieS1kZWZhdWx0IEFQ
SS4KKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5tbToKKyAgICAg
ICAgKFdlYktpdDo6RGF0YURldGVjdGlvblJlc3VsdDo6ZW5jb2RlIGNvbnN0KTogRGl0dG8uCisg
ICAgICAgIChXZWJLaXQ6OkRhdGFEZXRlY3Rpb25SZXN1bHQ6OmRlY29kZSk6IERpdHRvLgorICAg
ICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50Pjo6ZW5jb2RlKTogRGl0dG8u
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudD46OmRlY29kZSk6
IERpdHRvLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRDb250
YWN0Pjo6ZW5jb2RlKTogRGl0dG8uCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6UGF5bWVudENvbnRhY3Q+OjpkZWNvZGUpOiBEaXR0by4KKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uPjo6ZW5jb2RlKTogRGl0dG8u
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vz
c2lvbj46OmRlY29kZSk6IERpdHRvLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNv
cmU6OlBheW1lbnRNZXRob2Q+OjplbmNvZGUpOiBEaXR0by4KKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWV0aG9kPjo6ZGVjb2RlKTogRGl0dG8uCisgICAgICAg
ICogU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5tbToKKyAgICAg
ICAgKFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246OmVuY29kZSBjb25z
dCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbjo6ZGVjb2RlKTogRGl0dG8uCisgICAgICAgICogU2hhcmVkL21hYy9XZWJDb3JlQXJndW1l
bnRDb2RlcnNNYWMubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UHJvdGVjdGlvblNw
YWNlPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKTogRGl0dG8uCisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8UHJvdGVjdGlvblNwYWNlPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKTogRGl0dG8uCisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q3JlZGVudGlhbD46OmVuY29kZVBsYXRmb3JtRGF0YSk6
IERpdHRvLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPENyZWRlbnRpYWw+OjpkZWNvZGVQ
bGF0Zm9ybURhdGEpOiBEaXR0by4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxDb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXI+OjplbmNvZGUpOiBEaXR0by4KKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI+OjpkZWNvZGUpOiBEaXR0by4K
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46
OmVuY29kZVBsYXRmb3JtRGF0YSk6IERpdHRvLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKTogRGl0dG8u
CisgICAgICAgICogU2hhcmVkL21hYy9XZWJIaXRUZXN0UmVzdWx0RGF0YS5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdERhdGE6OnBsYXRmb3JtRW5jb2RlIGNvbnN0KTogRGl0
dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhOjpwbGF0Zm9ybURlY29k
ZSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5t
bToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfc2V0T2JqZWN0OmZvckJ1bmRsZVBhcmFtZXRl
cjpdKTogRGl0dG8uCisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldE9iamVjdHNGb3JCdW5k
bGVQYXJhbWV0ZXJzV2l0aERpY3Rpb25hcnk6XSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldElucHV0
RGVsZWdhdGU6XSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1J
bml0aWFsaXplV2ViUHJvY2Vzcyk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzdGFy
dEFzc2lzdGluZ05vZGUpOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1t
OgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIg
X3NldEZvcm1EZWxlZ2F0ZTpdKTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlOjppbml0aWFsaXplKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlOjpzZXRCdW5kbGVQYXJhbWV0ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGU6OnNldEJ1bmRsZVBhcmFtZXRlcnMpOiBEaXR0by4KKwogMjAxNy0xMS0yOCAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIFtD
R10gUG9zdFNjcmlwdCBpbWFnZXMgc2hvdWxkIGJlIHN1cHBvcnRlZCBpZiB0aGV5IGFyZSBzdWIt
cmVzb3VyY2UgaW1hZ2VzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2lvcy9BY2Nlc3Np
YmlsaXR5SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vaW9zL0Fj
Y2Vzc2liaWxpdHlJT1MubW0JKHJldmlzaW9uIDIyNTI0OCkKKysrIFNvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vaW9zL0FjY2Vzc2liaWxpdHlJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1
LDcgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5SU9TLmgi
CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oPgogCiAjaWYgUExB
VEZPUk0oSU9TKQogCkBAIC0zNCw3ICszNSw3IEBAIE5TRGF0YSAqbmV3QWNjZXNzaWJpbGl0eVJl
bW90ZVRva2VuKE5TVVUKIHsKICAgICBpZiAoIXV1aWQpCiAgICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgcmV0dXJuIFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6QHsg
QCJheC1waWQiIDogQChnZXRwaWQoKSksIEAiYXgtdXVpZCIgOiBbdXVpZCBVVUlEU3RyaW5nXSwg
QCJheC1yZWdpc3RlciIgOiBAWUVTIH1dOworICAgIHJldHVybiBhcmNoaXZlZERhdGFXaXRoUm9v
dE9iamVjdChAeyBAImF4LXBpZCIgOiBAKGdldHBpZCgpKSwgQCJheC11dWlkIiA6IFt1dWlkIFVV
SURTdHJpbmddLCBAImF4LXJlZ2lzdGVyIiA6IEBZRVMgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJl
c3VsdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0
ZWN0aW9uUmVzdWx0Lm1tCShyZXZpc2lvbiAyMjUyNDgpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDcg
QEAKICNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9EYXRhRGV0ZWN0b3JzQ29yZVNQSS5o
PgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KICNpbXBvcnQg
PHd0Zi9Tb2Z0TGlua2luZy5oPgogCiBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoRGF0YURl
dGVjdG9yc0NvcmUpCkBAIC00MSw4ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdm9pZCBE
YXRhRGV0ZWN0aW9uUmVzdWx0OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ewogICAgIFJldGFpblB0cjxOU011dGFibGVEYXRhPiBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJs
ZURhdGEgYWxsb2NdIGluaXRdKTsKLSAgICBSZXRhaW5QdHI8TlNLZXllZEFyY2hpdmVyPiBhcmNo
aXZlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0
aE11dGFibGVEYXRhOmRhdGEuZ2V0KCldKTsKLSAgICBbYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1
cmVDb2Rpbmc6WUVTXTsKKyAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXJGcm9tTXV0
YWJsZURhdGEoZGF0YS5nZXQoKSk7CiAgICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpyZXN1bHRz
LmdldCgpIGZvcktleTpAImRhdGFEZXRlY3RvclJlc3VsdHMiXTsKICAgICBbYXJjaGl2ZXIgZmlu
aXNoRW5jb2RpbmddOwogICAgIApAQCAtNTQsOSArNTQsOCBAQCBib29sIERhdGFEZXRlY3Rpb25S
ZXN1bHQ6OmRlY29kZShJUEM6OkRlCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKICAg
ICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIsIGRhdGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgCi0gICAgUmV0YWluUHRyPE5TS2V5ZWRVbmFyY2hpdmVyPiB1bmFyY2hpdmVyID0gYWRv
cHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ1dpdGhEYXRhOihO
U0RhdGEgKilkYXRhLmdldCgpXSk7Ci0gICAgW3VuYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVD
b2Rpbmc6WUVTXTsKKworICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9t
RGF0YSgoTlNEYXRhICopZGF0YS5nZXQoKSk7CiAgICAgQHRyeSB7CiAgICAgICAgIHJlc3VsdC5y
ZXN1bHRzID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRo
QXJyYXk6QFsgW05TQXJyYXkgY2xhc3NdLCBnZXRERFNjYW5uZXJSZXN1bHRDbGFzcygpXSBdIGZv
cktleTpAImRhdGFEZXRlY3RvclJlc3VsdHMiXTsKICAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24g
KmV4Y2VwdGlvbikgewpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0JKHJldmlzaW9uIDIyNTI0OCkKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5o
IgogI2ltcG9ydCA8V2ViQ29yZS9QYXltZW50QXV0aG9yaXphdGlvblN0YXR1cy5oPgorI2ltcG9y
dCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkv
Y29jb2EvUGFzc0tpdFNQSS5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAKQEAgLTUx
LDkgKzUyLDcgQEAgbmFtZXNwYWNlIElQQyB7CiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
UGF5bWVudD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQYXltZW50
JiBwYXltZW50KQogewogICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFs
bG9jXSBpbml0XSk7Ci0gICAgYXV0byBhcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2
ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFibGVEYXRhOmRhdGEuZ2V0KCldKTsKLQot
ICAgIFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOworICAgIGF1dG8gYXJj
aGl2ZXIgPSBzZWN1cmVBcmNoaXZlckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKIAogICAg
IFthcmNoaXZlciBlbmNvZGVPYmplY3Q6cGF5bWVudC5wa1BheW1lbnQoKSBmb3JLZXk6TlNLZXll
ZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKICAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOwpA
QCAtNjgsOCArNjcsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudD46OmRl
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU0Rh
dGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6Y29uc3RfY2FzdDx2b2lkKj4oc3RhdGljX2Nh
c3Q8Y29uc3Qgdm9pZCo+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSkgbGVuZ3RoOmRhdGFSZWZlcmVu
Y2Uuc2l6ZSgpIGZyZWVXaGVuRG9uZTpOT10pOwotICAgIGF1dG8gdW5hcmNoaXZlciA9IGFkb3B0
TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdXaXRoRGF0YTpkYXRh
LmdldCgpXSk7Ci0gICAgW3VuYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsK
KyAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoZGF0YS5nZXQo
KSk7CiAgICAgQHRyeSB7CiAgICAgICAgIFBLUGF5bWVudCAqcGtQYXltZW50ID0gW3VuYXJjaGl2
ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpnZXRQS1BheW1lbnRDbGFzcygpIGZvcktleTpOU0tleWVk
QXJjaGl2ZVJvb3RPYmplY3RLZXldOwogICAgICAgICBwYXltZW50ID0gUGF5bWVudChwa1BheW1l
bnQpOwpAQCAtMTA2LDkgKzEwNCw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEF1
dGhvcml6YXQKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50Q29udGFjdD46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQYXltZW50Q29udGFjdCYgcGF5
bWVudENvbnRhY3QpCiB7CiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEg
YWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIGFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNo
aXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6ZGF0YS5nZXQoKV0pOwot
Ci0gICAgW2FyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107CisgICAgYXV0byBh
cmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyRnJvbU11dGFibGVEYXRhKGRhdGEuZ2V0KCkpOwogCiAg
ICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpwYXltZW50Q29udGFjdC5wa0NvbnRhY3QoKSBmb3JL
ZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKICAgICBbYXJjaGl2ZXIgZmluaXNoRW5j
b2RpbmddOwpAQCAtMTIzLDggKzExOSw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQ
YXltZW50Q29udGEKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYXV0byBkYXRhID0gYWRv
cHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlc05vQ29weTpjb25zdF9jYXN0PHZvaWQq
PihzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oZGF0YVJlZmVyZW5jZS5kYXRhKCkpKSBsZW5ndGg6
ZGF0YVJlZmVyZW5jZS5zaXplKCkgZnJlZVdoZW5Eb25lOk5PXSk7Ci0gICAgYXV0byB1bmFyY2hp
dmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ1dp
dGhEYXRhOmRhdGEuZ2V0KCldKTsKLSAgICBbdW5hcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNv
ZGluZzpZRVNdOworICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0
YShkYXRhLmdldCgpKTsKICAgICBAdHJ5IHsKICAgICAgICAgUEtDb250YWN0ICpwa0NvbnRhY3Qg
PSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOmdldFBLQ29udGFjdENsYXNzKCkgZm9y
S2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CiAgICAgICAgIHBheW1lbnRDb250YWN0
ID0gUGF5bWVudENvbnRhY3QocGtDb250YWN0KTsKQEAgLTE2Nyw5ICsxNjIsNyBAQCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlBheW1lbnRFcnJvcj4gQXJnCiB2b2lkIEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uJiBwYXltZW50TWVyY2hhbnRTZXNz
aW9uKQogewogICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBp
bml0XSk7Ci0gICAgYXV0byBhcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxs
b2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFibGVEYXRhOmRhdGEuZ2V0KCldKTsKLQotICAgIFth
cmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOworICAgIGF1dG8gYXJjaGl2ZXIg
PSBzZWN1cmVBcmNoaXZlckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKIAogICAgIFthcmNo
aXZlciBlbmNvZGVPYmplY3Q6cGF5bWVudE1lcmNoYW50U2Vzc2lvbi5wa1BheW1lbnRNZXJjaGFu
dFNlc3Npb24oKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKICAgICBbYXJj
aGl2ZXIgZmluaXNoRW5jb2RpbmddOwpAQCAtMTg0LDggKzE3Nyw3IEBAIGJvb2wgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpQYXltZW50TWVyY2gKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
YXV0byBkYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlc05vQ29weTpj
b25zdF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oZGF0YVJlZmVyZW5jZS5k
YXRhKCkpKSBsZW5ndGg6ZGF0YVJlZmVyZW5jZS5zaXplKCkgZnJlZVdoZW5Eb25lOk5PXSk7Ci0g
ICAgYXV0byB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBp
bml0Rm9yUmVhZGluZ1dpdGhEYXRhOmRhdGEuZ2V0KCldKTsKLSAgICBbdW5hcmNoaXZlciBzZXRS
ZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOworICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVu
YXJjaGl2ZXJGcm9tRGF0YShkYXRhLmdldCgpKTsKICAgICBAdHJ5IHsKICAgICAgICAgUEtQYXlt
ZW50TWVyY2hhbnRTZXNzaW9uICpwa1BheW1lbnRNZXJjaGFudFNlc3Npb24gPSBbdW5hcmNoaXZl
ciBkZWNvZGVPYmplY3RPZkNsYXNzOmdldFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNsYXNzKCkg
Zm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CiAgICAgICAgIHBheW1lbnRNZXJj
aGFudFNlc3Npb24gPSBQYXltZW50TWVyY2hhbnRTZXNzaW9uKHBrUGF5bWVudE1lcmNoYW50U2Vz
c2lvbik7CkBAIC0xOTUsMTYgKzE4NywxMyBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
UGF5bWVudE1lcmNoCiAgICAgfQogCiAgICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOwot
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXlt
ZW50TWV0aG9kPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlBheW1l
bnRNZXRob2QmIHBheW1lbnRNZXRob2QpCiB7CiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05T
TXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIGFyY2hpdmVyID0gYWRvcHROUyhb
W05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6ZGF0
YS5nZXQoKV0pOwotCi0gICAgW2FyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107
CisgICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyRnJvbU11dGFibGVEYXRhKGRhdGEu
Z2V0KCkpOwogCiAgICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpwYXltZW50TWV0aG9kLnBrUGF5
bWVudE1ldGhvZCgpIGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOwogICAgIFth
cmNoaXZlciBmaW5pc2hFbmNvZGluZ107CkBAIC0yMTksOCArMjA4LDcgQEAgYm9vbCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXRobwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5
OmNvbnN0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihkYXRhUmVmZXJlbmNl
LmRhdGEoKSkpIGxlbmd0aDpkYXRhUmVmZXJlbmNlLnNpemUoKSBmcmVlV2hlbkRvbmU6Tk9dKTsK
LSAgICBhdXRvIHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2Nd
IGluaXRGb3JSZWFkaW5nV2l0aERhdGE6ZGF0YS5nZXQoKV0pOwotICAgIFt1bmFyY2hpdmVyIHNl
dFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107CisgICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJl
VW5hcmNoaXZlckZyb21EYXRhKGRhdGEuZ2V0KCkpOwogICAgIEB0cnkgewogICAgICAgICBQS1Bh
eW1lbnRNZXRob2QgKnBrUGF5bWVudE1ldGhvZCA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9m
Q2xhc3M6Z2V0UEtQYXltZW50TWV0aG9kQ2xhc3MoKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290
T2JqZWN0S2V5XTsKICAgICAgICAgcGF5bWVudE1ldGhvZCA9IFBheW1lbnRNZXRob2QocGtQYXlt
ZW50TWV0aG9kKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbklu
Zm9ybWF0aW9uQXRQb3NpdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW0JKHJldmlzaW9uIDIyNTI0
OCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQ
b3NpdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAjaW1wb3J0ICJBcmd1bWVu
dENvZGVyc0NGLmgiCiAjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbXBvcnQg
PHBhbC9zcGkvY29jb2EvRGF0YURldGVjdG9yc0NvcmVTUEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkv
Y29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4K
IAogU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKERhdGFEZXRlY3RvcnNDb3JlKQpAQCAtNzMs
OCArNzQsNyBAQCB2b2lkIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjplCiAgICAg
aWYgKGlzRGF0YURldGVjdG9yTGluaykgewogICAgICAgICBlbmNvZGVyIDw8IGRhdGFEZXRlY3Rv
cklkZW50aWZpZXI7CiAgICAgICAgIFJldGFpblB0cjxOU011dGFibGVEYXRhPiBkYXRhID0gYWRv
cHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgUmV0YWluUHRyPE5T
S2V5ZWRBcmNoaXZlcj4gYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9j
XSBpbml0Rm9yV3JpdGluZ1dpdGhNdXRhYmxlRGF0YTpkYXRhLmdldCgpXSk7Ci0gICAgICAgIFth
cmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOworICAgICAgICBhdXRvIGFyY2hp
dmVyID0gc2VjdXJlQXJjaGl2ZXJGcm9tTXV0YWJsZURhdGEoZGF0YS5nZXQoKSk7CiAgICAgICAg
IFthcmNoaXZlciBlbmNvZGVPYmplY3Q6ZGF0YURldGVjdG9yUmVzdWx0cy5nZXQoKSBmb3JLZXk6
QCJkYXRhRGV0ZWN0b3JSZXN1bHRzIl07CiAgICAgICAgIFthcmNoaXZlciBmaW5pc2hFbmNvZGlu
Z107CiAgICAgICAgIApAQCAtMTY4LDggKzE2OCw3IEBAIGJvb2wgSW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb246OmQKICAgICAgICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBkYXRh
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIFJldGFpblB0
cjxOU0tleWVkVW5hcmNoaXZlcj4gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNo
aXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdXaXRoRGF0YTooTlNEYXRhICopZGF0YS5nZXQoKV0p
OwotICAgICAgICBbdW5hcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOworICAg
ICAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoKE5TRGF0YSAq
KWRhdGEuZ2V0KCkpOwogICAgICAgICBAdHJ5IHsKICAgICAgICAgICAgIHJlc3VsdC5kYXRhRGV0
ZWN0b3JSZXN1bHRzID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBz
ZXRXaXRoQXJyYXk6QFsgW05TQXJyYXkgY2xhc3NdLCBnZXRERFNjYW5uZXJSZXN1bHRDbGFzcygp
XSBdIGZvcktleTpAImRhdGFEZXRlY3RvclJlc3VsdHMiXTsKICAgICAgICAgfSBAY2F0Y2ggKE5T
RXhjZXB0aW9uICpleGNlcHRpb24pIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQkocmV2aXNpb24gMjI1MjQ4KQor
KysgU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEz
IENvbXBhbnkgMTAwIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
QEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZO
ZXR3b3JrU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5o
PgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICNpbXBvcnQgPFdlYkNv
cmUvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaD4KQEAgLTQyOCw5ICs0MjksOCBAQCBib29s
IEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmRlY29kCiAKIHZvaWQgQXJndW1lbnRDb2Rl
cjxQcm90ZWN0aW9uU3BhY2U+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgUHJvdGVjdGlvblNwYWNlJiBzcGFjZSkKIHsKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
RGF0YT4gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0XSk7Ci0gICAg
UmV0YWluUHRyPE5TS2V5ZWRBcmNoaXZlcj4gYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFy
Y2hpdmVyIGFsbG9jXSBpbml0Rm9yV3JpdGluZ1dpdGhNdXRhYmxlRGF0YTpkYXRhLmdldCgpXSk7
Ci0gICAgW2FyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107CisgICAgYXV0byBk
YXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGFy
Y2hpdmVyID0gc2VjdXJlQXJjaGl2ZXJGcm9tTXV0YWJsZURhdGEoZGF0YS5nZXQoKSk7CiAgICAg
W2FyY2hpdmVyIGVuY29kZU9iamVjdDpzcGFjZS5uc1NwYWNlKCkgZm9yS2V5OkAicHJvdGVjdGlv
blNwYWNlIl07CiAgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsKICAgICBJUEM6OmVuY29k
ZShlbmNvZGVyLCByZWludGVycHJldF9jYXN0PENGRGF0YVJlZj4oZGF0YS5nZXQoKSkpOwpAQCAt
NDQyLDggKzQ0Miw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQcm90ZWN0aW9uU3BhY2U+OjpkZWMK
ICAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIsIGRhdGEpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBSZXRhaW5QdHI8TlNLZXllZFVuYXJjaGl2ZXI+IHVuYXJjaGl2ZXIgPSBhZG9w
dE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nV2l0aERhdGE6KE5T
RGF0YSAqKWRhdGEuZ2V0KCldKTsKLSAgICBbdW5hcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNv
ZGluZzpZRVNdOworICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0
YSgoTlNEYXRhICopZGF0YS5nZXQoKSk7CiAgICAgQHRyeSB7CiAgICAgICAgIGlmIChSZXRhaW5Q
dHI8TlNVUkxQcm90ZWN0aW9uU3BhY2U+IG5zU3BhY2UgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmpl
Y3RPZkNsYXNzOltOU1VSTFByb3RlY3Rpb25TcGFjZSBjbGFzc10gZm9yS2V5OkAicHJvdGVjdGlv
blNwYWNlIl0pCiAgICAgICAgICAgICBzcGFjZSA9IFByb3RlY3Rpb25TcGFjZShuc1NwYWNlLmdl
dCgpKTsKQEAgLTQ3NSw5ICs0NzQsOCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q3JlZGVudGlhbD46
OmVuY29kZVBsCiAgICAgfQogCiAgICAgZW5jb2RlciA8PCBmYWxzZTsKLSAgICBSZXRhaW5QdHI8
TlNNdXRhYmxlRGF0YT4gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0
XSk7Ci0gICAgUmV0YWluUHRyPE5TS2V5ZWRBcmNoaXZlcj4gYXJjaGl2ZXIgPSBhZG9wdE5TKFtb
TlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yV3JpdGluZ1dpdGhNdXRhYmxlRGF0YTpkYXRh
LmdldCgpXSk7Ci0gICAgW2FyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107Cisg
ICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKKyAg
ICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXJGcm9tTXV0YWJsZURhdGEoZGF0YS5nZXQo
KSk7CiAgICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpuc0NyZWRlbnRpYWwgZm9yS2V5OkAiY3Jl
ZGVudGlhbCJdOwogICAgIFthcmNoaXZlciBmaW5pc2hFbmNvZGluZ107CiAgICAgSVBDOjplbmNv
ZGUoZW5jb2RlciwgcmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGRhdGEuZ2V0KCkpKTsKQEAg
LTUxNiw4ICs1MTQsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8Q3JlZGVudGlhbD46OmRlY29kZVBs
CiAgICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBkYXRhKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgUmV0YWluUHRyPE5TS2V5ZWRVbmFyY2hpdmVyPiB1bmFyY2hpdmVyID0gYWRv
cHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ1dpdGhEYXRhOihO
U0RhdGEgKilkYXRhLmdldCgpXSk7Ci0gICAgW3VuYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVD
b2Rpbmc6WUVTXTsKKyAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURh
dGEoKE5TRGF0YSAqKWRhdGEuZ2V0KCkpOwogICAgIEB0cnkgewogICAgICAgICBpZiAoUmV0YWlu
UHRyPE5TVVJMQ3JlZGVudGlhbD4gbnNDcmVkZW50aWFsID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2Jq
ZWN0T2ZDbGFzczpbTlNVUkxDcmVkZW50aWFsIGNsYXNzXSBmb3JLZXk6QCJjcmVkZW50aWFsIl0p
CiAgICAgICAgICAgICBjcmVkZW50aWFsID0gQ3JlZGVudGlhbChuc0NyZWRlbnRpYWwuZ2V0KCkp
OwpAQCAtNTc4LDkgKzU3NSw4IEBAIHN0ZDo6b3B0aW9uYWw8S2V5cHJlc3NDb21tYW5kPiBBcmd1
bWVudEMKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiB2b2lkIEFyZ3VtZW50Q29kZXI8
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYgY29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyKQogewotICAgIFJldGFpblB0cjxOU011dGFibGVEYXRhPiBkYXRhID0gYWRvcHROUyhbW05T
TXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKLSAgICBSZXRhaW5QdHI8TlNLZXllZEFyY2hpdmVy
PiBhcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0
aW5nV2l0aE11dGFibGVEYXRhOmRhdGEuZ2V0KCldKTsKLSAgICBbYXJjaGl2ZXIgc2V0UmVxdWly
ZXNTZWN1cmVDb2Rpbmc6WUVTXTsKKyAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
RGF0YSBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlckZy
b21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKICAgICBjb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXIuZW5jb2RlKGFyY2hpdmVyLmdldCgpKTsKICAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2Rpbmdd
OwogICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihk
YXRhLmdldCgpKSk7CkBAIC01OTIsOCArNTg4LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPENvbnRl
bnRGaWx0ZXJVbmJsb2NrSAogICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgZGF0YSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJldGFpblB0cjxOU0tleWVkVW5hcmNoaXZlcj4g
dW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZvclJl
YWRpbmdXaXRoRGF0YTooTlNEYXRhICopZGF0YS5nZXQoKV0pOwotICAgIFt1bmFyY2hpdmVyIHNl
dFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107CisgICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJl
VW5hcmNoaXZlckZyb21EYXRhKChOU0RhdGEgKilkYXRhLmdldCgpKTsKICAgICBpZiAoIUNvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6ZGVjb2RlKHVuYXJjaGl2ZXIuZ2V0KCksIGNvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNjEyLDkg
KzYwNyw4IEBAIHN0YXRpYyBOU1N0cmluZyAqZGV2aWNlQ29udGV4dEtleSgpCiAKIHZvaWQgQXJn
dW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmVuY29kZVBsYXRmb3JtRGF0
YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFy
Z2V0KQogewotICAgIFJldGFpblB0cjxOU011dGFibGVEYXRhPiBkYXRhID0gYWRvcHROUyhbW05T
TXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKLSAgICBSZXRhaW5QdHI8TlNLZXllZEFyY2hpdmVy
PiBhcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0
aW5nV2l0aE11dGFibGVEYXRhOmRhdGEuZ2V0KCldKTsKLSAgICBbYXJjaGl2ZXIgc2V0UmVxdWly
ZXNTZWN1cmVDb2Rpbmc6WUVTXTsKKyAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
RGF0YSBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlckZy
b21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKIAogICAgIGlmIChbZ2V0QVZPdXRwdXRDb250ZXh0
Q2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5nKV0pCiAg
ICAgICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6dGFyZ2V0LmF2T3V0cHV0Q29udGV4dCgpIGZv
cktleTpkZXZpY2VDb250ZXh0S2V5KCldOwpAQCAtNjMzLDggKzYyNyw3IEBAIGJvb2wgQXJndW1l
bnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Q28KICAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29k
ZXIsIGRhdGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZXRhaW5QdHI8TlNLZXll
ZFVuYXJjaGl2ZXI+IHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxs
b2NdIGluaXRGb3JSZWFkaW5nV2l0aERhdGE6KE5TRGF0YSAqKWRhdGEuZ2V0KCldKTsKLSAgICBb
dW5hcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOworICAgIGF1dG8gdW5hcmNo
aXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YSgoTlNEYXRhICopZGF0YS5nZXQoKSk7CiAK
ICAgICBBVk91dHB1dENvbnRleHQgKmNvbnRleHQgPSBuaWw7CiAgICAgQHRyeSB7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViSGl0VGVzdFJlc3VsdERhdGEubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkhpdFRlc3RSZXN1bHREYXRhLm1tCShy
ZXZpc2lvbiAyMjUyNDgpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViSGl0VGVzdFJl
c3VsdERhdGEubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAiRW5jb2Rl
ci5oIgogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3Jl
L1RleHRJbmRpY2F0b3IuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVy
U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9EYXRhRGV0ZWN0b3JzU1BJLmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtNDQsOSArNDUsOCBAQCB2b2lkIFdlYkhpdFRlc3RSZXN1bHREYXRh
OjpwbGF0Zm9ybUVuY29kCiAgICAgaWYgKCFoYXNBY3Rpb25Db250ZXh0KQogICAgICAgICByZXR1
cm47CiAKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGF0YT4gZGF0YSA9IGFkb3B0TlMoW1tOU011
dGFibGVEYXRhIGFsbG9jXSBpbml0XSk7Ci0gICAgUmV0YWluUHRyPE5TS2V5ZWRBcmNoaXZlcj4g
YXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yV3JpdGlu
Z1dpdGhNdXRhYmxlRGF0YTpkYXRhLmdldCgpXSk7Ci0gICAgW2FyY2hpdmVyIHNldFJlcXVpcmVz
U2VjdXJlQ29kaW5nOllFU107CisgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURh
dGEgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXJGcm9t
TXV0YWJsZURhdGEoZGF0YS5nZXQoKSk7CiAgICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpkZXRl
Y3RlZERhdGFBY3Rpb25Db250ZXh0LmdldCgpIGZvcktleTpAImFjdGlvbkNvbnRleHQiXTsKICAg
ICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOwogCkBAIC03NSw4ICs3NSw3IEBAIGJvb2wgV2Vi
SGl0VGVzdFJlc3VsdERhdGE6OnBsYXRmb3JtRGVjb2QKICAgICBpZiAoIUlQQzo6ZGVjb2RlKGRl
Y29kZXIsIGRhdGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZXRhaW5QdHI8TlNL
ZXllZFVuYXJjaGl2ZXI+IHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIg
YWxsb2NdIGluaXRGb3JSZWFkaW5nV2l0aERhdGE6KE5TRGF0YSAqKWRhdGEuZ2V0KCldKTsKLSAg
ICBbdW5hcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOworICAgIGF1dG8gdW5h
cmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YSgoTlNEYXRhICopZGF0YS5nZXQoKSk7
CiAgICAgQHRyeSB7CiAgICAgICAgIGhpdFRlc3RSZXN1bHREYXRhLmRldGVjdGVkRGF0YUFjdGlv
bkNvbnRleHQgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOmdldEREQWN0aW9uQ29u
dGV4dENsYXNzKCkgZm9yS2V5OkAiYWN0aW9uQ29udGV4dCJdOwogICAgIH0gQGNhdGNoIChOU0V4
Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQkocmV2aXNpb24gMjI1MjQ4KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZv
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KICNpbXBvcnQgPHBhbC9zcGkvY2Yv
Q0ZOZXR3b3JrU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQ
SS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAt
MjEzLDggKzIxNCw3IEBAIC0gKHZvaWQpX3NldE9iamVjdDooaWQgPE5TQ29weWluZywgTlNTZWMK
ICAgICBhdXRvIGNvcHkgPSBhZG9wdE5TKFsoTlNPYmplY3QgKilvYmplY3QgY29weV0pOwogCiAg
ICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKLSAg
ICBhdXRvIGtleWVkQXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBp
bml0Rm9yV3JpdGluZ1dpdGhNdXRhYmxlRGF0YTpkYXRhLmdldCgpXSk7Ci0gICAgW2tleWVkQXJj
aGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsKKyAgICBhdXRvIGtleWVkQXJjaGl2
ZXIgPSBzZWN1cmVBcmNoaXZlckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKIAogICAgIEB0
cnkgewogICAgICAgICBba2V5ZWRBcmNoaXZlciBlbmNvZGVPYmplY3Q6Y29weS5nZXQoKSBmb3JL
ZXk6QCJwYXJhbWV0ZXIiXTsKQEAgLTIzNiw4ICsyMzYsNyBAQCAtICh2b2lkKV9zZXRPYmplY3Rz
Rm9yQnVuZGxlUGFyYW1ldGVyc1dpCiAgICAgYXV0byBjb3B5ID0gYWRvcHROUyhbW05TRGljdGlv
bmFyeSBhbGxvY10gaW5pdFdpdGhEaWN0aW9uYXJ5OmRpY3Rpb25hcnkgY29weUl0ZW1zOllFU10p
OwogCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2NdIGluaXRd
KTsKLSAgICBhdXRvIGtleWVkQXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFs
bG9jXSBpbml0Rm9yV3JpdGluZ1dpdGhNdXRhYmxlRGF0YTpkYXRhLmdldCgpXSk7Ci0gICAgW2tl
eWVkQXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsKKyAgICBhdXRvIGtleWVk
QXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKIAog
ICAgIEB0cnkgewogICAgICAgICBba2V5ZWRBcmNoaXZlciBlbmNvZGVPYmplY3Q6Y29weS5nZXQo
KSBmb3JLZXk6QCJwYXJhbWV0ZXJzIl07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDIyNTI0OCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAg
LTEwMyw2ICsxMDMsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9WYWxpZGF0aW9uQnViYmxlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1ZpZXdwb3J0QXJndW1lbnRzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dy
aXRpbmdNb2RlLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5o
PgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNUZXh0RmluZGVyU1BJLmg+CiAjaW1wb3J0IDx3dGYv
QmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CkBAIC00NTg0LDggKzQ1ODUsNyBA
QCAtICh2b2lkKV9zZXRJbnB1dERlbGVnYXRlOihpZCA8X1dLSW5wdXRECiAgICAgICAgICAgICBO
U09iamVjdCA8TlNTZWN1cmVDb2Rpbmc+ICp1c2VyT2JqZWN0ID0gbmlsOwogICAgICAgICAgICAg
aWYgKEFQSTo6RGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PEFQSTo6RGF0YSo+KHVzZXJEYXRhKSkg
ewogICAgICAgICAgICAgICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10g
aW5pdFdpdGhCeXRlc05vQ29weTpjb25zdF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxjb25zdCB2
b2lkKj4oZGF0YS0+Ynl0ZXMoKSkpIGxlbmd0aDpkYXRhLT5zaXplKCkgZnJlZVdoZW5Eb25lOk5P
XSk7Ci0gICAgICAgICAgICAgICAgYXV0byB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRV
bmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ1dpdGhEYXRhOm5zRGF0YS5nZXQoKV0pOwot
ICAgICAgICAgICAgICAgIFt1bmFyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107
CisgICAgICAgICAgICAgICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNoaXZlckZyb21E
YXRhKG5zRGF0YS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgQHRyeSB7CiAgICAgICAgICAgICAg
ICAgICAgIHVzZXJPYmplY3QgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOltOU09i
amVjdCBjbGFzc10gZm9yS2V5OkAidXNlck9iamVjdCJdOwogICAgICAgICAgICAgICAgIH0gQGNh
dGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHJldmlzaW9uIDIy
NTI0OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29j
b2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUv
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KKyNpbXBvcnQgPHBhbC9z
cGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg+CiAjaW1wb3J0IDxzeXMvcGFyYW0uaD4KIAog
I2lmIFBMQVRGT1JNKElPUykKQEAgLTIxNSw5ICsyMTYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpwbGF0Zm9ybUluaXRpYWxpemVXCiAKICAgICBpZiAobV9idW5kbGVQYXJhbWV0ZXJzKSB7CiAg
ICAgICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0XSk7
Ci0gICAgICAgIGF1dG8ga2V5ZWRBcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIg
YWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFibGVEYXRhOmRhdGEuZ2V0KCldKTsKLQotICAg
ICAgICBba2V5ZWRBcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOworICAgICAg
ICBhdXRvIGtleWVkQXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlckZyb21NdXRhYmxlRGF0YShkYXRh
LmdldCgpKTsKIAogICAgICAgICBAdHJ5IHsKICAgICAgICAgICAgIFtrZXllZEFyY2hpdmVyIGVu
Y29kZU9iamVjdDptX2J1bmRsZVBhcmFtZXRlcnMuZ2V0KCkgZm9yS2V5OkAicGFyYW1ldGVycyJd
OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbQkocmV2aXNpb24gMjI1MjQ4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBACiAj
aW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SW5k
aWNhdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1ZhbGlkYXRpb25CdWJibGUuaD4KKyNpbXBvcnQg
PHBhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQ
dHIuaD4KIAogI2RlZmluZSBNRVNTQUdFX0NIRUNLKGFzc2VydGlvbikgTUVTU0FHRV9DSEVDS19C
QVNFKGFzc2VydGlvbiwgbV93ZWJWaWV3LT5fcGFnZS0+cHJvY2VzcygpLmNvbm5lY3Rpb24oKSkK
QEAgLTU0Nyw4ICs1NDgsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzdGFydEFzc2lzdGluZ05v
ZGUoCiAgICAgTlNPYmplY3QgPE5TU2VjdXJlQ29kaW5nPiAqdXNlck9iamVjdCA9IG5pbDsKICAg
ICBpZiAoQVBJOjpEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8QVBJOjpEYXRhKj4odXNlckRhdGEp
KSB7CiAgICAgICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdp
dGhCeXRlc05vQ29weTpjb25zdF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4o
ZGF0YS0+Ynl0ZXMoKSkpIGxlbmd0aDpkYXRhLT5zaXplKCkgZnJlZVdoZW5Eb25lOk5PXSk7Ci0g
ICAgICAgIGF1dG8gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxv
Y10gaW5pdEZvclJlYWRpbmdXaXRoRGF0YTpuc0RhdGEuZ2V0KCldKTsKLSAgICAgICAgW3VuYXJj
aGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsKKyAgICAgICAgYXV0byB1bmFyY2hp
dmVyID0gc2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKG5zRGF0YS5nZXQoKSk7CiAgICAgICAgIEB0
cnkgewogICAgICAgICAgICAgdXNlck9iamVjdCA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9m
Q2xhc3M6W05TT2JqZWN0IGNsYXNzXSBmb3JLZXk6QCJ1c2VyT2JqZWN0Il07CiAgICAgICAgIH0g
QGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyLm1tCShyZXZpc2lvbiAyMjUyNDgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDcgQEAKICNpbXBv
cnQgPFdlYkNvcmUvSFRNTEZvcm1FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxJbnB1
dEVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CisjaW1wb3J0IDxwYWwv
c3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC00ODQsOCArNDg1LDcgQEAgLSAodm9pZClf
c2V0Rm9ybURlbGVnYXRlOihpZCA8V0tXZWJQcm9jZQogICAgICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2Nd
IGluaXRdKTsKLSAgICAgICAgICAgIGF1dG8gYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFy
Y2hpdmVyIGFsbG9jXSBpbml0Rm9yV3JpdGluZ1dpdGhNdXRhYmxlRGF0YTpkYXRhLmdldCgpXSk7
Ci0gICAgICAgICAgICBbYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsKKyAg
ICAgICAgICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlckZyb21NdXRhYmxlRGF0YShk
YXRhLmdldCgpKTsKICAgICAgICAgICAgIEB0cnkgewogICAgICAgICAgICAgICAgIFthcmNoaXZl
ciBlbmNvZGVPYmplY3Q6dXNlck9iamVjdCBmb3JLZXk6QCJ1c2VyT2JqZWN0Il07CiAgICAgICAg
ICAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewpJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZU1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvbWFj
L0luamVjdGVkQnVuZGxlTWFjLm1tCShyZXZpc2lvbiAyMjUyNDgpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxlTWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW1wb3J0ICJXS1dlYlByb2Nlc3NQbHVnSW5J
bnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2lt
cG9ydCA8Rm91bmRhdGlvbi9OU0J1bmRsZS5oPgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tl
eWVkQXJjaGl2ZXJTUEkuaD4KICNpbXBvcnQgPHN0ZGlvLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC04NSw4ICs4Niw3IEBAIGJv
b2wgSW5qZWN0ZWRCdW5kbGU6OmluaXRpYWxpemUoY29uc3QgV2UKICAgICBpZiAocGFyYW1ldGVy
cy5idW5kbGVQYXJhbWV0ZXJEYXRhKSB7CiAgICAgICAgIGF1dG8gYnVuZGxlUGFyYW1ldGVyRGF0
YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6Y29uc3RfY2Fz
dDx2b2lkKj4oc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHBhcmFtZXRlcnMuYnVuZGxlUGFyYW1l
dGVyRGF0YS0+Ynl0ZXMoKSkpIGxlbmd0aDpwYXJhbWV0ZXJzLmJ1bmRsZVBhcmFtZXRlckRhdGEt
PnNpemUoKSBmcmVlV2hlbkRvbmU6Tk9dKTsKIAotICAgICAgICBhdXRvIHVuYXJjaGl2ZXIgPSBh
ZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nV2l0aERhdGE6
YnVuZGxlUGFyYW1ldGVyRGF0YS5nZXQoKV0pOwotICAgICAgICBbdW5hcmNoaXZlciBzZXRSZXF1
aXJlc1NlY3VyZUNvZGluZzpZRVNdOworICAgICAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVV
bmFyY2hpdmVyRnJvbURhdGEoYnVuZGxlUGFyYW1ldGVyRGF0YS5nZXQoKSk7CiAKICAgICAgICAg
TlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gbmlsOwogICAgICAgICBAdHJ5IHsKQEAgLTE2MCw4
ICsxNjAsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRCdW5kbGVQYXJhbWV0ZXIoCiAjaWYg
V0tfQVBJX0VOQUJMRUQKICAgICBhdXRvIGJ1bmRsZVBhcmFtZXRlckRhdGEgPSBhZG9wdE5TKFtb
TlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8dm9pZCo+KHN0YXRp
Y19jYXN0PGNvbnN0IHZvaWQqPih2YWx1ZS5kYXRhKCkpKSBsZW5ndGg6dmFsdWUuc2l6ZSgpIGZy
ZWVXaGVuRG9uZTpOT10pOwogCi0gICAgYXV0byB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5
ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ1dpdGhEYXRhOmJ1bmRsZVBhcmFtZXRl
ckRhdGEuZ2V0KCldKTsKLSAgICBbdW5hcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZ
RVNdOworICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YShidW5k
bGVQYXJhbWV0ZXJEYXRhLmdldCgpKTsKIAogICAgIGlkIHBhcmFtZXRlciA9IG5pbDsKICAgICBA
dHJ5IHsKQEAgLTE4Myw4ICsxODIsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRCdW5kbGVQ
YXJhbWV0ZXJzCiAjaWYgV0tfQVBJX0VOQUJMRUQKICAgICBhdXRvIGJ1bmRsZVBhcmFtZXRlcnNE
YXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlc05vQ29weTpjb25zdF9j
YXN0PHZvaWQqPihzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4odmFsdWUuZGF0YSgpKSkgbGVuZ3Ro
OnZhbHVlLnNpemUoKSBmcmVlV2hlbkRvbmU6Tk9dKTsKIAotICAgIGF1dG8gdW5hcmNoaXZlciA9
IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdXaXRoRGF0
YTpidW5kbGVQYXJhbWV0ZXJzRGF0YS5nZXQoKV0pOwotICAgIFt1bmFyY2hpdmVyIHNldFJlcXVp
cmVzU2VjdXJlQ29kaW5nOllFU107CisgICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNo
aXZlckZyb21EYXRhKGJ1bmRsZVBhcmFtZXRlcnNEYXRhLmdldCgpKTsKIAogICAgIE5TRGljdGlv
bmFyeSAqcGFyYW1ldGVycyA9IG5pbDsKICAgICBAdHJ5IHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327839</attachid>
            <date>2017-11-28 23:36:26 -0800</date>
            <delta_ts>2017-11-29 14:47:44 -0800</delta_ts>
            <desc>Patch Part 1 (Landed)</desc>
            <filename>bug-180127-20171128233625.patch</filename>
            <type>text/plain</type>
            <size>50573</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNTI0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE3LTExLTI4ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkb3B0IHVwZGF0ZWQgTlNL
ZXllZFtVbl1BcmNoaXZlciBBUEkgd2hlbiBhdmFpbGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDEyNworICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzU3MTA3Mzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKwor
ICAgICAgICBTd2l0Y2ggdG8gbmV3IE5TS2V5ZWRbVW5dQXJjaGl2ZXIgbWV0aG9kcyB3aGVuIGF2
YWlsYWJsZS4gV2UgZG8gbm90IGF0dGVtcHQKKyAgICAgICAgdG8gYWRvcHQgc2VjdXJlIGNvZGlu
ZyBpbiBwbGFjZXMgd2Ugd2VyZSBub3QgdW5kZXIgdGhlIG9yaWdpbmFsIEFQSS4KKworICAgICAg
ICBNb3N0IG9mIHRoZSBuZXcgQVBJIGlzIHdyYXBwZWQgaW4gYSBzZXQgb2YgY29udmVuaWVuY2Ug
bWV0aG9kcyBzbyB3ZSBjYW4KKyAgICAgICAgYnVpbGQgd2l0aG91dCB0aGUgbmV3IEFQSSBvbiBv
bGRlciBzeXN0ZW1zLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAg
ICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjphcmNo
aXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKTogVXNlIG5ldyBjb252ZW5pZW5jZSBtZXRob2QK
KyAgICAgICAgdG8gYXJjaGl2ZSB0aGUgc3RyaW5nIG9iamVjdC4KKyAgICAgICAgKiBsb2FkZXIv
YXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2VSZXNwb25zZUZyb21NYWNBcmNoaXZlZERhdGEp
OiBVcGRhdGUgdG8KKyAgICAgICAgdXNlIHNlY3VyZSBjb2Rpbmcgd2hlcmUgcG9zc2libGUuCisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXBy
ZXNlbnRhdGlvbik6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRl
KTogVXNlIG5ldyBzZWN1cmUgQVBJLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJv
YXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6IERpdHRvLgorICAgICAg
ICAqIHRlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tOgorICAgICAgICAoV2Vi
Q29yZVRlc3RTdXBwb3J0OjpjcmVhdGVDRlVSTFJlc3BvbnNlRnJvbVJlc3BvbnNlRGF0YSk6IFVw
ZGF0ZSB0bworICAgICAgICBzZWN1cmUgY29kaW5nIEFQSSB3aGVyZSBwb3NzaWJsZS4KKwogMjAx
Ny0xMS0yOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEdldCBy
aWQgb2YgU2VydmljZVdvcmtlcjo6YWxsV29ya2VycygpIGhhc2htYXAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZwkocmV2aXNpb24gMjI1MjU5KQorKysgU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE3LTExLTI4ICBCcmVudCBGdWxn
aGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkb3B0IHVwZGF0ZWQgTlNLZXll
ZFtVbl1BcmNoaXZlciBBUEkgd2hlbiBhdmFpbGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDEyNworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzU3MTA3Mzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAg
ICAgICBBZGQgbmV3IGNvbnZlbmllbmNlIG1ldGhvZHMgKGFuZCBTUEkgaGVhZGVycykgc28gd2Ug
Y2FuIGFkb3B0IG5ldyBOU0tleWVkQXJjaGl2ZXIKKyAgICAgICAgQVBJIHRoYXQgdXNlcyBzZWN1
cmUgY29kaW5nIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgKiBQQUwueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oOiBB
ZGRlZC4KKyAgICAgICAgKHNlY3VyZWx5QXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3QpOiBOZXcg
Y29udmVuaWVuY2UgbWV0aG9kLgorICAgICAgICAoc2VjdXJlbHlVbmFyY2hpdmVSb290T2JqZWN0
T2ZDbGFzc0Zyb21EYXRhKTogRGl0dG8uCisgICAgICAgIChzZWN1cmVBcmNoaXZlckZyb21NdXRh
YmxlRGF0YSk6IERpdHRvLgorICAgICAgICAoc2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKTogRGl0
dG8uCisKIDIwMTctMTEtMjggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUkVHUkVTU0lPTiAoSGlnaCBTaWVycmEpOiBMYXlvdXQgVGVzdCBmYXN0L211
bHRpY29sL25ld211bHRpY29sL3NwYW5uZXIyLmh0bWwgaXMgYSBmbGFreSBpbWFnZSBmYWlsdXJl
IG9uIFdLMQpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjI1MjQ4KQorKysgU291cmNlL1dlYkNvcmUvUEFML1BB
TC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4
LDcgQEAKIAkJMUM0ODc2RDgxRjhEN0Y0RTAwQ0NFRUJEIC8qIExvZ2dpbmcuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM0ODc2RDYxRjhEN0Y0RTAw
Q0NFRUJEIC8qIExvZ2dpbmcuY3BwICovOyB9OwogCQkxQzQ4NzZEOTFGOEQ3RjRFMDBDQ0VFQkQg
LyogTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUM0ODc2RDcxRjhEN0Y0RTAwQ0NFRUJEIC8qIExvZ2dpbmcuaCAqLzsgfTsKIAkJMUM0ODc2
RTAxRjhEODM3NTAwQ0NFRUJEIC8qIExvZ2dpbmdDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNDg3NkRGMUY4RDgzNzUwMENDRUVCRCAvKiBM
b2dnaW5nQ29jb2EubW0gKi87IH07CisJCTdBMTY1NjQ0MUY5N0IyQjkwMEJBM0NFNCAvKiBOU0tl
eWVkQXJjaGl2ZXJTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdBMTY1NjQzMUY5N0IyQjgwMEJBM0NFNCAvKiBOU0tleWVkQXJjaGl2ZXJTUEkuaCAq
LzsgfTsKIAkJQTEwMjY1ODcxRjU2NzQ2MTAwQjRDODQ0IC8qIEZvdW5kYXRpb25TUEkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMDI2NTg2MUY1Njc0
NjEwMEI0Qzg0NCAvKiBGb3VuZGF0aW9uU1BJLmggKi87IH07CiAJCUExMDI2NTg5MUY1Njc0N0Ew
MEI0Qzg0NCAvKiBISVRvb2xib3hTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExMDI2NTg4MUY1Njc0N0EwMEI0Qzg0NCAvKiBISVRvb2xib3hTUEku
aCAqLzsgfTsKIAkJQTEwMjY1OEIxRjU2NzQ4QzAwQjRDODQ0IC8qIFF1aWNrRHJhd1NQSS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwMjY1OEExRjU2
NzQ4QzAwQjRDODQ0IC8qIFF1aWNrRHJhd1NQSS5oICovOyB9OwpAQCAtMjUzLDYgKzI1NCw3IEBA
CiAJCTFDNDg3NkRGMUY4RDgzNzUwMENDRUVCRCAvKiBMb2dnaW5nQ29jb2EubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBMb2dnaW5nQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDNjdDRUExMUUzMkVEQTgwMEY4MEYyRSAvKiBGZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBGZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM2N0NFQTIxRTMyRUUyNjAwRjgwRjJFIC8q
IFZlcnNpb24ueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gVmVyc2lv
bi54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0ExNjU2NDMxRjk3QjJC
ODAwQkEzQ0U0IC8qIE5TS2V5ZWRBcmNoaXZlclNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBOU0tleWVkQXJjaGl2ZXJTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTEwMjY1ODYxRjU2NzQ2MTAwQjRDODQ0IC8qIEZvdW5kYXRpb25TUEkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm91bmRhdGlvblNQSS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBMTAyNjU4ODFGNTY3NDdBMDBCNEM4NDQgLyogSElUb29sYm94U1BJ
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhJVG9vbGJveFNQSS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTAyNjU4QTFGNTY3NDhDMDBCNEM4NDQgLyogUXVp
Y2tEcmF3U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1aWNrRHJhd1NQ
SS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzcxLDYgKzM3Myw3IEBACiAJCQkJ
MEMyREExMzIxRjNCRUI0OTAwREJDMzE3IC8qIE5TRXh0ZW5zaW9uU1BJLmggKi8sCiAJCQkJMEMy
REExMzMxRjNCRUI0OTAwREJDMzE3IC8qIE5TRmlsZU1hbmFnZXJTUEkuaCAqLywKIAkJCQlGNDQy
OTE1RDFGQTUyNDczMDAyQ0M5M0UgLyogTlNGaWxlU2l6ZUZvcm1hdHRlclNQSS5oICovLAorCQkJ
CTdBMTY1NjQzMUY5N0IyQjgwMEJBM0NFNCAvKiBOU0tleWVkQXJjaGl2ZXJTUEkuaCAqLywKIAkJ
CQkwQzJEQTEzNDFGM0JFQjQ5MDBEQkMzMTcgLyogTlNTdHJpbmdTUEkuaCAqLywKIAkJCQkwQzJE
QTEzNTFGM0JFQjQ5MDBEQkMzMTcgLyogTlNUb3VjaEJhclNQSS5oICovLAogCQkJCTBDMkRBMTM2
MUYzQkVCNDkwMERCQzMxNyAvKiBOU1VSTENvbm5lY3Rpb25TUEkuaCAqLywKQEAgLTY2NCw2ICs2
NjcsNyBAQAogCQkJCTBDNzc4NTkwMUY0NTEzMEYwMEY0RUJCNiAvKiBOU0ZvbnRTUEkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUExMDgyNkZFMUY1OEE0MzMwMDQ3NzJBQyAvKiBOU0dyYXBoaWNzU1BJ
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU5MTFGNDUxMzBGMDBGNEVCQjYgLyogTlNJbW1l
ZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplclNQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0Ex
NjU2NDQxRjk3QjJCOTAwQkEzQ0U0IC8qIE5TS2V5ZWRBcmNoaXZlclNQSS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEM3Nzg1OTIxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TTWVudVNQSS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEM3Nzg1OTMxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TUGFzdGVib2FyZFNQSS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OTQxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TUG9wb3Zl
clNQSS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9j
b2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0IDxBdmFpbGFiaWxpdHku
aD4KKyNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CisKKyNkZWZpbmUgVVNFX1NFQ1VSRV9BUkNISVZFUl9BUEkgKChQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDEzMDIgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDIwMCkgfHwgKFBMQVRGT1JNKFdBVENIT1Mp
ICYmIF9fV0FUQ0hfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gNDAyMDApIHx8IChQTEFURk9S
TShUVk9TKSAmJiBfX1RWX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDIwMCkpCisKKyNp
ZiBVU0UoU0VDVVJFX0FSQ0hJVkVSX0FQSSkKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQor
I2ltcG9ydCA8Rm91bmRhdGlvbi9OU0tleWVkQXJjaGl2ZXJfUHJpdmF0ZS5oPgorI2Vsc2UKKyNp
bXBvcnQgPEZvdW5kYXRpb24vTlNDb2Rlci5oPgorI2ltcG9ydCA8Rm91bmRhdGlvbi9OU0tleWVk
QXJjaGl2ZXIuaD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQGludGVyZmFjZSBOU0tl
eWVkQXJjaGl2ZXIgKE5TS2V5ZWRBcmNoaXZlclNlY3VyZUNvZGluZ0luaXRpYWxpemVycykKKy0g
KGluc3RhbmNldHlwZSlpbml0UmVxdWlyaW5nU2VjdXJlQ29kaW5nOihCT09MKXJlcXVpcmVzU2Vj
dXJlQ29kaW5nIEFQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpOworKyAobnVs
bGFibGUgTlNEYXRhICopYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6KGlkKW9iamVjdCByZXF1
aXJpbmdTZWN1cmVDb2Rpbmc6KEJPT0wpcmVxdWlyZXNTZWN1cmVDb2RpbmcgZXJyb3I6KE5TRXJy
b3IgKiopZXJyb3IgQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4wKSk7CitAZW5k
CisKK0BpbnRlcmZhY2UgTlNLZXllZFVuYXJjaGl2ZXIgKE5TS2V5ZWRVbmFyY2hpdmVyU2VjdXJl
Q29kaW5nSW5pdGlhbGl6ZXIpCistIChudWxsYWJsZSBpbnN0YW5jZXR5cGUpaW5pdEZvclJlYWRp
bmdGcm9tRGF0YTooTlNEYXRhICopZGF0YSBlcnJvcjooTlNFcnJvciAqKillcnJvciBBUElfQVZB
SUxBQkxFKG1hY29zKDEwLjEzKSwgaW9zKDExLjApKTsKKysgKG51bGxhYmxlIGlkKXVuYXJjaGl2
ZWRPYmplY3RPZkNsYXNzOihDbGFzcyljbHMgZnJvbURhdGE6KE5TRGF0YSAqKWRhdGEgZXJyb3I6
KE5TRXJyb3IgKiopZXJyb3IgQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4wKSk7
CisrIChudWxsYWJsZSBpZCl1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOihOU1NldDxDbGFzcz4g
KiljbGFzc2VzIGZyb21EYXRhOihOU0RhdGEgKilkYXRhIGVycm9yOihOU0Vycm9yICoqKWVycm9y
IEFQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpOworQGVuZAorCitOU19BU1NV
TUVfTk9OTlVMTF9FTkQKKworI2VuZGlmIC8qIFVTRShBUFBMRV9JTlRFUk5BTF9TREspICovCisj
ZW5kaWYgLyogVVNFKFNFQ1VSRV9BUkNISVZFUl9BUEkpICovCisKK2lubGluZSBOU0RhdGEgKl9O
dWxsYWJsZSBzZWN1cmVseUFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0KGlkIF9Ob25udWxsIG9i
amVjdCkKK3sKKyNpZiBVU0UoU0VDVVJFX0FSQ0hJVkVSX0FQSSkKKyAgICBOU0Vycm9yICplcnJv
cjsKKyAgICBOU0RhdGEgKmRhdGEgPSBbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhS
b290T2JqZWN0Om9iamVjdCByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOiZlcnJvcl07
CisgICAgaWYgKCFkYXRhKQorICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBhcmNoaXZlIGRh
dGE6ICVAIiwgZXJyb3IpOworICAgIHJldHVybiBkYXRhOworI2Vsc2UKKyAgICByZXR1cm4gW05T
S2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDpvYmplY3RdOworI2VuZGlm
Cit9CisKK2lubGluZSBOU0RhdGEgKl9OdWxsYWJsZSBpbnNlY3VyZWx5QXJjaGl2ZWREYXRhV2l0
aFJvb3RPYmplY3QoaWQgX05vbm51bGwgb2JqZWN0KQoreworI2lmIFVTRShTRUNVUkVfQVJDSElW
RVJfQVBJKQorICAgIE5TRXJyb3IgKmVycm9yOworICAgIE5TRGF0YSAqZGF0YSA9IFtOU0tleWVk
QXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6b2JqZWN0IHJlcXVpcmluZ1NlY3Vy
ZUNvZGluZzpOTyBlcnJvcjomZXJyb3JdOworICAgIGlmICghZGF0YSkKKyAgICAgICAgTE9HX0VS
Uk9SKCJVbmFibGUgdG8gYXJjaGl2ZSBkYXRhOiAlQCIsIGVycm9yKTsKKyAgICByZXR1cm4gZGF0
YTsKKyNlbHNlCisgICAgcmV0dXJuIFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJv
b3RPYmplY3Q6b2JqZWN0XTsKKyNlbmRpZgorfQorCitpbmxpbmUgaWQgX051bGxhYmxlIHNlY3Vy
ZWx5VW5hcmNoaXZlT2JqZWN0T2ZDbGFzc0Zyb21EYXRhKENsYXNzIF9Ob25udWxsIGNscywgTlNE
YXRhICogX05vbm51bGwgZGF0YSkKK3sKKyNpZiBVU0UoU0VDVVJFX0FSQ0hJVkVSX0FQSSkKKyAg
ICBOU0Vycm9yICplcnJvcjsKKyAgICBpZCB2YWx1ZSA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFy
Y2hpdmVkT2JqZWN0T2ZDbGFzczpjbHMgZnJvbURhdGE6ZGF0YSBlcnJvcjomZXJyb3JdOworICAg
IGlmICghZGF0YSkKKyAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gdW5hcmNoaXZlIGRhdGE6
ICVAIiwgZXJyb3IpOworICAgIHJldHVybiB2YWx1ZTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFN
KGNscyk7CisgICAgcmV0dXJuIFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVPYmplY3RXaXRo
RGF0YTpkYXRhXTsKKyNlbmRpZgorfQorCitpbmxpbmUgaWQgX051bGxhYmxlIGluc2VjdXJlbHlV
bmFyY2hpdmVPYmplY3RPZkNsYXNzRnJvbURhdGEoTlNEYXRhICogX05vbm51bGwgZGF0YSkKK3sK
KyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
aWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKKyAgICByZXR1cm4gW05TS2V5ZWRV
bmFyY2hpdmVyIHVuYXJjaGl2ZU9iamVjdFdpdGhEYXRhOmRhdGFdOworI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIHBvcAorfQorCitpbmxpbmUgUmV0YWluUHRyPE5TS2V5ZWRBcmNoaXZlcj4gc2Vj
dXJlQXJjaGl2ZXJGcm9tTXV0YWJsZURhdGEoTlNNdXRhYmxlRGF0YSAqX05vbm51bGwgbXV0YWJs
ZURhdGEpCit7CisgICAgTlNLZXllZEFyY2hpdmVyICphcmNoaXZlciA9IFtbTlNLZXllZEFyY2hp
dmVyIGFsbG9jXSBpbml0Rm9yV3JpdGluZ1dpdGhNdXRhYmxlRGF0YTptdXRhYmxlRGF0YV07Cisg
ICAgW2FyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107CisgICAgcmV0dXJuIGFk
b3B0TlMoYXJjaGl2ZXIpOworfQorCitpbmxpbmUgUmV0YWluUHRyPE5TS2V5ZWRVbmFyY2hpdmVy
PiBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoTlNEYXRhICpfTm9ubnVsbCBkYXRhKQoreworI2lm
IFVTRShTRUNVUkVfQVJDSElWRVJfQVBJKQorICAgIE5TS2V5ZWRVbmFyY2hpdmVyICp1bmFyY2hp
dmVyID0gW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdGcm9tRGF0YTpk
YXRhIGVycm9yOm5pbF07CisgICAgdW5hcmNoaXZlci5kZWNvZGluZ0ZhaWx1cmVQb2xpY3kgPSBO
U0RlY29kaW5nRmFpbHVyZVBvbGljeVJhaXNlRXhjZXB0aW9uOworI2Vsc2UKKyAgICBOU0tleWVk
VW5hcmNoaXZlciAqdW5hcmNoaXZlciA9IFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRG
b3JSZWFkaW5nV2l0aERhdGE6ZGF0YV07CisgICAgW3VuYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1
cmVDb2Rpbmc6WUVTXTsKKyNlbmRpZgorICAgIHJldHVybiBhZG9wdE5TKHVuYXJjaGl2ZXIpOwor
fQorCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0J
KHJldmlzaW9uIDIyNTI0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9y
Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAKICNpbXBvcnQgIldlYkNv
cmVOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCAibWFya3VwLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2Nv
Y29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5oPgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tl
eWVkQXJjaGl2ZXJTUEkuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE0MSw3ICsxNDIsNyBAQCBzdGF0aWMgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhCiAgICAgaWYgKCFhdHRyaWJ1dGVkU3RyaW5nLmxlbmd0
aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDphdHRyaWJ1
dGVkU3RyaW5nXSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGluc2VjdXJlbHlB
cmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdChhdHRyaWJ1dGVkU3RyaW5nKSk7CiB9CiAKIFN0cmlu
ZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZvcm1hdCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmVNYWMubW0JKHJl
dmlzaW9uIDIyNTI0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2Fj
eVdlYkFyY2hpdmVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDEwIEBACiAgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJMZWdhY3lXZWJB
cmNoaXZlLmgiCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkxlZ2FjeVdlYkFyY2hpdmUu
aCIKKworI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MiwxMyArNDQsMTMgQEAgUmVzb3VyY2VSZXNwb25zZSBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdAogICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXNwb25zZSgp
OwogICAgIAogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gbmlsOwotICAgIE5TS2V5ZWRV
bmFyY2hpdmVyICp1bmFyY2hpdmVyID0gW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZv
clJlYWRpbmdXaXRoRGF0YTooTlNEYXRhICopcmVzcG9uc2VEYXRhXTsKLSNpZiAoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgUExB
VEZPUk0oSU9TKQotICAgIC8vIEJlY2F1c2Ugb2YgPHJkYXI6Ly9wcm9ibGVtLzM0MDYzMzEzPiB3
ZSBjYW4ndCB1c2UgdGhpcyBmb3IgZGVjb2RpbmcgaW4gb2xkZXIgT1Mncy4KLSAgICBbdW5hcmNo
aXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOworI2lmIFVTRShTRUNVUkVfQVJDSElW
RVJfQVBJKQorICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YSgo
TlNEYXRhICopcmVzcG9uc2VEYXRhKTsKICAgICBAdHJ5IHsKICAgICAgICAgcmVzcG9uc2UgPSBb
dW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOltOU1VSTFJlc3BvbnNlIGNsYXNzXSBmb3JL
ZXk6TGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VLZXldOwogI2Vsc2UKKyAgICAvLyBC
ZWNhdXNlIG9mIDxyZGFyOi8vcHJvYmxlbS8zNDA2MzMxMz4gd2UgY2FuJ3QgdXNlIHNlY3VyZSBj
b2RpbmcgZm9yIGRlY29kaW5nIGluIG9sZGVyIE9TJ3MuCisgICAgYXV0byB1bmFyY2hpdmVyID0g
YWRvcHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ1dpdGhEYXRh
OihOU0RhdGEgKilyZXNwb25zZURhdGFdKTsKICAgICBAdHJ5IHsKICAgICAgICAgaWQgcmVzcG9u
c2VPYmplY3QgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RGb3JLZXk6TGVnYWN5V2ViQXJjaGl2
ZVJlc291cmNlUmVzcG9uc2VLZXldOwogICAgICAgICBpZiAoW3Jlc3BvbnNlT2JqZWN0IGlzS2lu
ZE9mQ2xhc3M6W05TVVJMUmVzcG9uc2UgY2xhc3NdXSkKQEAgLTU5LDggKzYxLDcgQEAgUmVzb3Vy
Y2VSZXNwb25zZSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdAogICAgICAgICBMT0dfRVJST1IoIkZh
aWxlZCB0byBkZWNvZGUgTlMoSFRUUClVUkxSZXNwb25zZTogJUAiLCBleGNlcHRpb24pOwogICAg
ICAgICByZXNwb25zZSA9IG5pbDsKICAgICB9Ci0gICAgW3VuYXJjaGl2ZXIgcmVsZWFzZV07Ci0g
ICAgCisKICAgICByZXR1cm4gUmVzb3VyY2VSZXNwb25zZShyZXNwb25zZSk7CiB9CiAKQEAgLTcz
LDE1ICs3NCwxNCBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjCiAK
ICAgICBDRk11dGFibGVEYXRhUmVmIHJlc3BvbnNlRGF0YSA9IENGRGF0YUNyZWF0ZU11dGFibGUo
MCwgMCk7CiAKLSAgICBOU0tleWVkQXJjaGl2ZXIgKmFyY2hpdmVyID0gW1tOU0tleWVkQXJjaGl2
ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFibGVEYXRhOihOU011dGFibGVEYXRhICop
cmVzcG9uc2VEYXRhXTsKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgUExBVEZPUk0oSU9TKQorICAgIGF1dG8gYXJjaGl2
ZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yV3JpdGluZ1dpdGhN
dXRhYmxlRGF0YTooTlNNdXRhYmxlRGF0YSAqKXJlc3BvbnNlRGF0YV0pOworI2lmIFVTRShTRUNV
UkVfQVJDSElWRVJfQVBJKQogICAgIC8vIEJlY2F1c2Ugb2YgPHJkYXI6Ly9wcm9ibGVtLzM0MDYz
MzEzPiB3ZSBjYW4ndCB1c2UgdGhpcyBmb3IgZW5jb2RpbmcgaW4gb2xkZXIgT1Mncy4KICAgICBb
YXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsKICNlbmRpZgogICAgIFthcmNo
aXZlciBlbmNvZGVPYmplY3Q6bnNSZXNwb25zZSBmb3JLZXk6TGVnYWN5V2ViQXJjaGl2ZVJlc291
cmNlUmVzcG9uc2VLZXldOwogICAgIFthcmNoaXZlciBmaW5pc2hFbmNvZGluZ107Ci0gICAgW2Fy
Y2hpdmVyIHJlbGVhc2VdOwotICAgIAorCiAgICAgcmV0dXJuIGFkb3B0Q0YocmVzcG9uc2VEYXRh
KTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVi
b2FyZElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxh
dGZvcm1QYXN0ZWJvYXJkSU9TLm1tCShyZXZpc2lvbiAyMjUyNDgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzYsNiArMzYsNyBAQAogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2
aWNlcy5oPgogI2ltcG9ydCA8VUlLaXQvVUlJbWFnZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlQYXN0
ZWJvYXJkLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oPgog
I2ltcG9ydCA8cGFsL3NwaS9pb3MvVUlLaXRTUEkuaD4KICNpbXBvcnQgPHd0Zi9MaXN0SGFzaFNl
dC5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CkBAIC0yNjQsNyArMjY1LDcgQEAgdm9p
ZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhcwogICAgICAgICBbcmVwcmVzZW50
YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpXZWJBcmNoaXZlUGJvYXJkVHlwZV07CiAKICAg
ICBpZiAoY29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0KSB7Ci0gICAgICAgIE5T
QXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1
bmFyY2hpdmVPYmplY3RXaXRoRGF0YTpjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3Jt
YXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKKyAgICAgICAgTlNBdHRyaWJ1dGVkU3RyaW5nICph
dHRyaWJ1dGVkU3RyaW5nID0gc2VjdXJlbHlVbmFyY2hpdmVPYmplY3RPZkNsYXNzRnJvbURhdGEo
W05TQXR0cmlidXRlZFN0cmluZyBjbGFzc10sIGNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmlu
Z0Zvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkpOwogICAgICAgICBpZiAoYXR0cmlidXRlZFN0
cmluZykKICAgICAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZFJlcHJlc2Vu
dGluZ09iamVjdDphdHRyaWJ1dGVkU3RyaW5nXTsKICAgICB9CkBAIC0zNzksMTEgKzM4MCwxMSBA
QCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzCiAgICAgICAgIGlmICgh
cHJvdmlkZXIudGVhbURhdGEubGVuZ3RoKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAg
ICAgaWQgdGVhbURhdGFPYmplY3QgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlT2JqZWN0
V2l0aERhdGE6cHJvdmlkZXIudGVhbURhdGFdOwotICAgICAgICBpZiAoIXRlYW1EYXRhT2JqZWN0
IHx8ICFbdGVhbURhdGFPYmplY3QgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0p
CisgICAgICAgIE5TRGljdGlvbmFyeSAqdGVhbURhdGFPYmplY3QgPSBpbnNlY3VyZWx5VW5hcmNo
aXZlT2JqZWN0T2ZDbGFzc0Zyb21EYXRhKHByb3ZpZGVyLnRlYW1EYXRhKTsKKyAgICAgICAgaWYg
KCF0ZWFtRGF0YU9iamVjdCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlkIG9y
aWdpbkluVGVhbURhdGEgPSBbKE5TRGljdGlvbmFyeSAqKXRlYW1EYXRhT2JqZWN0IG9iamVjdEZv
cktleTpAKG9yaWdpbktleUZvclRlYW1EYXRhKV07CisgICAgICAgIGlkIG9yaWdpbkluVGVhbURh
dGEgPSBbdGVhbURhdGFPYmplY3Qgb2JqZWN0Rm9yS2V5OkAob3JpZ2luS2V5Rm9yVGVhbURhdGEp
XTsKICAgICAgICAgaWYgKCFbb3JpZ2luSW5UZWFtRGF0YSBpc0tpbmRPZkNsYXNzOltOU1N0cmlu
ZyBjbGFzc11dKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChTdHJpbmcoKE5T
U3RyaW5nICopb3JpZ2luSW5UZWFtRGF0YSkgIT0gb3JpZ2luKQpAQCAtNDQ0LDggKzQ0NSw3IEBA
IGxvbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXMKICAgICAgICAgICAgIE5T
TXV0YWJsZUFycmF5PE5TU3RyaW5nICo+ICp0eXBlc0FzTlNBcnJheSA9IFtOU011dGFibGVBcnJh
eSBhcnJheV07CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBl
cykKICAgICAgICAgICAgICAgICBbdHlwZXNBc05TQXJyYXkgYWRkT2JqZWN0OnR5cGVdOwotICAg
ICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0VGVhbURhdGE6W05TS2V5ZWRB
cmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDpAewotICAgICAgICAgICAgICAgIEAo
b3JpZ2luS2V5Rm9yVGVhbURhdGEpIDogZGF0YS5vcmlnaW4sIEAoY3VzdG9tVHlwZXNLZXlGb3JU
ZWFtRGF0YSkgOiB0eXBlc0FzTlNBcnJheSB9XV07CisgICAgICAgICAgICBbcmVwcmVzZW50YXRp
b25zVG9SZWdpc3RlciBzZXRUZWFtRGF0YTppbnNlY3VyZWx5QXJjaGl2ZWREYXRhV2l0aFJvb3RP
YmplY3QoQHsgQChvcmlnaW5LZXlGb3JUZWFtRGF0YSkgOiBkYXRhLm9yaWdpbiwgQChjdXN0b21U
eXBlc0tleUZvclRlYW1EYXRhKSA6IHR5cGVzQXNOU0FycmF5IH0pXTsKICAgICAgICAgICAgIFty
ZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6c2VyaWFsaXplZFNoYXJlZEJ1ZmZlci5n
ZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAgICAg
ICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2NvY29hL1dlYkFyY2hp
dmVEdW1wU3VwcG9ydC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2Nv
Y29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5tbQkocmV2aXNpb24gMjI1MjQ4KQorKysgU291cmNl
L1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgPENGTmV0d29yay9DRkhUVFBNZXNzYWdl
Lmg+CiAjaW1wb3J0IDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2Nm
L0NGTmV0d29ya1NQSS5oPgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJT
UEkuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgpAQCAtNDAsMTQgKzQxLDE0IEBAIG5hbWVz
cGFjZSBXZWJDb3JlVGVzdFN1cHBvcnQgewogCiBzdGF0aWMgQ0ZVUkxSZXNwb25zZVJlZiBjcmVh
dGVDRlVSTFJlc3BvbnNlRnJvbVJlc3BvbnNlRGF0YShDRkRhdGFSZWYgcmVzcG9uc2VEYXRhKQog
ewotICAgIFJldGFpblB0cjxOU0tleWVkVW5hcmNoaXZlcj4gdW5hcmNoaXZlciA9IGFkb3B0TlMo
W1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdXaXRoRGF0YTooTlNEYXRh
ICopcmVzcG9uc2VEYXRhXSk7CiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2U7Ci0jaWYgKFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAp
IHx8IFBMQVRGT1JNKElPUykKLSAgICAvLyBCZWNhdXNlIG9mIDxyZGFyOi8vcHJvYmxlbS8zNDA2
MzMxMz4gd2UgY2FuJ3QgdXNlIHRoaXMgZm9yIGRlY29kaW5nIGluIG9sZGVyIE9TJ3MuCi0gICAg
W3VuYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsKKyNpZiBVU0UoU0VDVVJF
X0FSQ0hJVkVSX0FQSSkKKyAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJv
bURhdGEoKE5TRGF0YSAqKXJlc3BvbnNlRGF0YSk7CiAgICAgQHRyeSB7CiAgICAgICAgIHJlc3Bv
bnNlID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpbTlNVUkxSZXNwb25zZSBjbGFz
c10gZm9yS2V5OkAiV2ViUmVzb3VyY2VSZXNwb25zZSJdOyAvLyBXZWJSZXNvdXJjZVJlc3BvbnNl
S2V5IGluIFdlYlJlc291cmNlLm0KICNlbHNlCisgICAgLy8gQmVjYXVzZSBvZiA8cmRhcjovL3By
b2JsZW0vMzQwNjMzMTM+IHdlIGNhbid0IHVzZSBzZWN1cmUgY29kaW5nIGZvciBkZWNvZGluZyBp
biBvbGRlciBPUydzLgorICAgIGF1dG8gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5h
cmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdXaXRoRGF0YTooTlNEYXRhICopcmVzcG9uc2VE
YXRhXSk7CiAgICAgQHRyeSB7CiAgICAgICAgIHJlc3BvbnNlID0gW3VuYXJjaGl2ZXIgZGVjb2Rl
T2JqZWN0Rm9yS2V5OkAiV2ViUmVzb3VyY2VSZXNwb25zZSJdOyAvLyBXZWJSZXNvdXJjZVJlc3Bv
bnNlS2V5IGluIFdlYlJlc291cmNlLm0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIy
NTI0OCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNTkgQEAKKzIwMTctMTEtMjggIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRvcHQgdXBkYXRlZCBOU0tleWVkW1VuXUFyY2hpdmVyIEFQSSB3aGVuIGF2
YWlsYWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTgwMTI3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTcxMDczOD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIFN3aXRjaCB0byBuZXcgTlNLZXll
ZFtVbl1BcmNoaXZlciBtZXRob2RzIHdoZW4gYXZhaWxhYmxlLiBXZSBkbyBub3QgYXR0ZW1wdAor
ICAgICAgICB0byBhZG9wdCBzZWN1cmUgY29kaW5nIGluIHBsYWNlcyB3ZSB3ZXJlIG5vdCB1bmRl
ciB0aGUgb3JpZ2luYWwgQVBJLgorCisgICAgICAgICogUGxhdGZvcm0vaW9zL0FjY2Vzc2liaWxp
dHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6Om5ld0FjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbik6
IFVzZSBzZWN1cmUtYnktZGVmYXVsdCBBUEkuCisgICAgICAgICogU2hhcmVkL0NvY29hL0RhdGFE
ZXRlY3Rpb25SZXN1bHQubW06CisgICAgICAgIChXZWJLaXQ6OkRhdGFEZXRlY3Rpb25SZXN1bHQ6
OmVuY29kZSBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpEYXRhRGV0ZWN0aW9uUmVz
dWx0OjpkZWNvZGUpOiBEaXR0by4KKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
UGF5bWVudD46OmVuY29kZSk6IERpdHRvLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlBheW1lbnQ+OjpkZWNvZGUpOiBEaXR0by4KKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpQYXltZW50Q29udGFjdD46OmVuY29kZSk6IERpdHRvLgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRDb250YWN0Pjo6ZGVjb2RlKTogRGl0
dG8uCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1lcmNoYW50
U2Vzc2lvbj46OmVuY29kZSk6IERpdHRvLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24+OjpkZWNvZGUpOiBEaXR0by4KKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWV0aG9kPjo6ZW5jb2RlKTogRGl0
dG8uCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZD46
OmRlY29kZSk6IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb24ubW06CisgICAgICAgIChXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRp
b25BdFBvc2l0aW9uOjplbmNvZGUgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6SW50
ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246OmRlY29kZSk6IERpdHRvLgorICAgICAgICAq
IFNoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFByb3RlY3Rpb25TcGFjZT46OmVuY29kZVBsYXRmb3JtRGF0YSk6IERpdHRv
LgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFByb3RlY3Rpb25TcGFjZT46OmRlY29kZVBs
YXRmb3JtRGF0YSk6IERpdHRvLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPENyZWRlbnRp
YWw+OjplbmNvZGVQbGF0Zm9ybURhdGEpOiBEaXR0by4KKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxDcmVkZW50aWFsPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKTogRGl0dG8uCisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyPjo6ZW5jb2RlKTog
RGl0dG8uCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyPjo6ZGVjb2RlKTogRGl0dG8uCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjplbmNvZGVQbGF0Zm9ybURhdGEpOiBEaXR0by4KKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmRl
Y29kZVBsYXRmb3JtRGF0YSk6IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9tYWMvV2ViSGl0VGVz
dFJlc3VsdERhdGEubW06CisgICAgICAgIChXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhOjpw
bGF0Zm9ybUVuY29kZSBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJIaXRUZXN0
UmVzdWx0RGF0YTo6cGxhdGZvcm1EZWNvZGUpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3Nl
dE9iamVjdDpmb3JCdW5kbGVQYXJhbWV0ZXI6XSk6IERpdHRvLgorICAgICAgICAoLVtXS1Byb2Nl
c3NQb29sIF9zZXRPYmplY3RzRm9yQnVuZGxlUGFyYW1ldGVyc1dpdGhEaWN0aW9uYXJ5Ol0pOiBE
aXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9zZXRJbnB1dERlbGVnYXRlOl0pOiBEaXR0by4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOiBEaXR0by4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbDo6c3RhcnRBc3Npc3RpbmdOb2RlKTogRGl0dG8uCisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJy
b3dzZXJDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9zZXRGb3JtRGVsZWdhdGU6XSk6IERpdHRvLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxlTWFjLm1t
OgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6aW5pdGlhbGl6ZSk6IERpdHRvLgor
ICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0QnVuZGxlUGFyYW1ldGVyKTogRGl0
dG8uCisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpzZXRCdW5kbGVQYXJhbWV0ZXJz
KTogRGl0dG8uCisKIDIwMTctMTEtMjggIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdh
QGFwcGxlLmNvbT4KIAogICAgICAgICBbQ0ddIFBvc3RTY3JpcHQgaW1hZ2VzIHNob3VsZCBiZSBz
dXBwb3J0ZWQgaWYgdGhleSBhcmUgc3ViLXJlc291cmNlIGltYWdlcwpJbmRleDogU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9pb3MvQWNjZXNzaWJpbGl0eUlPUy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL2lvcy9BY2Nlc3NpYmlsaXR5SU9TLm1tCShyZXZpc2lvbiAyMjUy
NDgpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2lvcy9BY2Nlc3NpYmlsaXR5SU9TLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogI2lt
cG9ydCAiQWNjZXNzaWJpbGl0eUlPUy5oIgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVk
QXJjaGl2ZXJTUEkuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKIApAQCAtMzQsNyArMzUsNyBAQCBO
U0RhdGEgKm5ld0FjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbihOU1VVCiB7CiAgICAgaWYgKCF1dWlk
KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBbTlNLZXllZEFyY2hpdmVyIGFyY2hp
dmVkRGF0YVdpdGhSb290T2JqZWN0OkB7IEAiYXgtcGlkIiA6IEAoZ2V0cGlkKCkpLCBAImF4LXV1
aWQiIDogW3V1aWQgVVVJRFN0cmluZ10sIEAiYXgtcmVnaXN0ZXIiIDogQFlFUyB9XTsKKyAgICBy
ZXR1cm4gaW5zZWN1cmVseUFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0KEB7IEAiYXgtcGlkIiA6
IEAoZ2V0cGlkKCkpLCBAImF4LXV1aWQiIDogW3V1aWQgVVVJRFN0cmluZ10sIEAiYXgtcmVnaXN0
ZXIiIDogQFlFUyB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQubW0JKHJldmlz
aW9uIDIyNTI0OCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25S
ZXN1bHQubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI2ltcG9ydCAiQXJndW1lbnRD
b2RlcnNDRi5oIgogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW1wb3J0IDxw
YWwvc3BpL2NvY29hL0RhdGFEZXRlY3RvcnNDb3JlU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL2Nv
Y29hL05TS2V5ZWRBcmNoaXZlclNQSS5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAK
IFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhEYXRhRGV0ZWN0b3JzQ29yZSkKQEAgLTQxLDgg
KzQyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB2b2lkIERhdGFEZXRlY3Rpb25SZXN1bHQ6OmVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgUmV0YWluUHRyPE5TTXV0
YWJsZURhdGE+IGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdF0pOwot
ICAgIFJldGFpblB0cjxOU0tleWVkQXJjaGl2ZXI+IGFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5
ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6ZGF0YS5nZXQo
KV0pOwotICAgIFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOworICAgIGF1
dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsK
ICAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnJlc3VsdHMuZ2V0KCkgZm9yS2V5OkAiZGF0YURl
dGVjdG9yUmVzdWx0cyJdOwogICAgIFthcmNoaXZlciBmaW5pc2hFbmNvZGluZ107CiAgICAgCkBA
IC01NCw5ICs1NCw4IEBAIGJvb2wgRGF0YURldGVjdGlvblJlc3VsdDo6ZGVjb2RlKElQQzo6RGUK
ICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOwogICAgIGlmICghSVBDOjpkZWNvZGUoZGVj
b2RlciwgZGF0YSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBSZXRhaW5QdHI8
TlNLZXllZFVuYXJjaGl2ZXI+IHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2
ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nV2l0aERhdGE6KE5TRGF0YSAqKWRhdGEuZ2V0KCldKTsK
LSAgICBbdW5hcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOworCisgICAgYXV0
byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKChOU0RhdGEgKilkYXRhLmdl
dCgpKTsKICAgICBAdHJ5IHsKICAgICAgICAgcmVzdWx0LnJlc3VsdHMgPSBbdW5hcmNoaXZlciBk
ZWNvZGVPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhBcnJheTpAWyBbTlNBcnJheSBjbGFz
c10sIGdldEREU2Nhbm5lclJlc3VsdENsYXNzKCldIF0gZm9yS2V5OkAiZGF0YURldGVjdG9yUmVz
dWx0cyJdOwogICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRD
b2RlcnNDb2NvYS5tbQkocmV2aXNpb24gMjI1MjQ4KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNiAr
MzAsNyBAQAogCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1Bh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TS2V5
ZWRBcmNoaXZlclNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+CiAj
aW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KIApAQCAtNTEsOSArNTIsNyBAQCBuYW1lc3BhY2Ug
SVBDIHsKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50Pjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnQmIHBheW1lbnQpCiB7CiAgICAgYXV0
byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKLSAgICBhdXRv
IGFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRp
bmdXaXRoTXV0YWJsZURhdGE6ZGF0YS5nZXQoKV0pOwotCi0gICAgW2FyY2hpdmVyIHNldFJlcXVp
cmVzU2VjdXJlQ29kaW5nOllFU107CisgICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVy
RnJvbU11dGFibGVEYXRhKGRhdGEuZ2V0KCkpOwogCiAgICAgW2FyY2hpdmVyIGVuY29kZU9iamVj
dDpwYXltZW50LnBrUGF5bWVudCgpIGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXld
OwogICAgIFthcmNoaXZlciBmaW5pc2hFbmNvZGluZ107CkBAIC02OCw4ICs2Nyw3IEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50Pjo6ZGUKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRl
c05vQ29weTpjb25zdF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oZGF0YVJl
ZmVyZW5jZS5kYXRhKCkpKSBsZW5ndGg6ZGF0YVJlZmVyZW5jZS5zaXplKCkgZnJlZVdoZW5Eb25l
Ok5PXSk7Ci0gICAgYXV0byB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFyY2hpdmVy
IGFsbG9jXSBpbml0Rm9yUmVhZGluZ1dpdGhEYXRhOmRhdGEuZ2V0KCldKTsKLSAgICBbdW5hcmNo
aXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOworICAgIGF1dG8gdW5hcmNoaXZlciA9
IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YShkYXRhLmdldCgpKTsKICAgICBAdHJ5IHsKICAgICAg
ICAgUEtQYXltZW50ICpwa1BheW1lbnQgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNz
OmdldFBLUGF5bWVudENsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07
CiAgICAgICAgIHBheW1lbnQgPSBQYXltZW50KHBrUGF5bWVudCk7CkBAIC0xMDYsOSArMTA0LDcg
QEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdAogdm9pZCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlBheW1lbnRDb250YWN0Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFdlYkNvcmU6OlBheW1lbnRDb250YWN0JiBwYXltZW50Q29udGFjdCkKIHsKICAgICBh
dXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdF0pOwotICAgIGF1
dG8gYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yV3Jp
dGluZ1dpdGhNdXRhYmxlRGF0YTpkYXRhLmdldCgpXSk7Ci0KLSAgICBbYXJjaGl2ZXIgc2V0UmVx
dWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsKKyAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2
ZXJGcm9tTXV0YWJsZURhdGEoZGF0YS5nZXQoKSk7CiAKICAgICBbYXJjaGl2ZXIgZW5jb2RlT2Jq
ZWN0OnBheW1lbnRDb250YWN0LnBrQ29udGFjdCgpIGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RP
YmplY3RLZXldOwogICAgIFthcmNoaXZlciBmaW5pc2hFbmNvZGluZ107CkBAIC0xMjMsOCArMTE5
LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRDb250YQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBp
bml0V2l0aEJ5dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0IHZv
aWQqPihkYXRhUmVmZXJlbmNlLmRhdGEoKSkpIGxlbmd0aDpkYXRhUmVmZXJlbmNlLnNpemUoKSBm
cmVlV2hlbkRvbmU6Tk9dKTsKLSAgICBhdXRvIHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXll
ZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nV2l0aERhdGE6ZGF0YS5nZXQoKV0pOwot
ICAgIFt1bmFyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107CisgICAgYXV0byB1
bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKGRhdGEuZ2V0KCkpOwogICAgIEB0
cnkgewogICAgICAgICBQS0NvbnRhY3QgKnBrQ29udGFjdCA9IFt1bmFyY2hpdmVyIGRlY29kZU9i
amVjdE9mQ2xhc3M6Z2V0UEtDb250YWN0Q2xhc3MoKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290
T2JqZWN0S2V5XTsKICAgICAgICAgcGF5bWVudENvbnRhY3QgPSBQYXltZW50Q29udGFjdChwa0Nv
bnRhY3QpOwpAQCAtMTY3LDkgKzE2Miw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVu
dEVycm9yPiBBcmcKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRT
ZXNzaW9uPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRN
ZXJjaGFudFNlc3Npb24mIHBheW1lbnRNZXJjaGFudFNlc3Npb24pCiB7CiAgICAgYXV0byBkYXRh
ID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIGFyY2hp
dmVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRo
TXV0YWJsZURhdGE6ZGF0YS5nZXQoKV0pOwotCi0gICAgW2FyY2hpdmVyIHNldFJlcXVpcmVzU2Vj
dXJlQ29kaW5nOllFU107CisgICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyRnJvbU11
dGFibGVEYXRhKGRhdGEuZ2V0KCkpOwogCiAgICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpwYXlt
ZW50TWVyY2hhbnRTZXNzaW9uLnBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbigpIGZvcktleTpOU0tl
eWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOwogICAgIFthcmNoaXZlciBmaW5pc2hFbmNvZGluZ107
CkBAIC0xODQsOCArMTc3LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRN
ZXJjaAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtb
TlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8dm9pZCo+KHN0YXRp
Y19jYXN0PGNvbnN0IHZvaWQqPihkYXRhUmVmZXJlbmNlLmRhdGEoKSkpIGxlbmd0aDpkYXRhUmVm
ZXJlbmNlLnNpemUoKSBmcmVlV2hlbkRvbmU6Tk9dKTsKLSAgICBhdXRvIHVuYXJjaGl2ZXIgPSBh
ZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nV2l0aERhdGE6
ZGF0YS5nZXQoKV0pOwotICAgIFt1bmFyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllF
U107CisgICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKGRhdGEu
Z2V0KCkpOwogICAgIEB0cnkgewogICAgICAgICBQS1BheW1lbnRNZXJjaGFudFNlc3Npb24gKnBr
UGF5bWVudE1lcmNoYW50U2Vzc2lvbiA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6
Z2V0UEtQYXltZW50TWVyY2hhbnRTZXNzaW9uQ2xhc3MoKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVS
b290T2JqZWN0S2V5XTsKICAgICAgICAgcGF5bWVudE1lcmNoYW50U2Vzc2lvbiA9IFBheW1lbnRN
ZXJjaGFudFNlc3Npb24ocGtQYXltZW50TWVyY2hhbnRTZXNzaW9uKTsKQEAgLTE5NSwxNiArMTg3
LDEzIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWVyY2gKICAgICB9CiAK
ICAgICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107Ci0KICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXRob2Q+OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UGF5bWVudE1ldGhvZCYgcGF5bWVudE1ldGhv
ZCkKIHsKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5p
dF0pOwotICAgIGF1dG8gYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9j
XSBpbml0Rm9yV3JpdGluZ1dpdGhNdXRhYmxlRGF0YTpkYXRhLmdldCgpXSk7Ci0KLSAgICBbYXJj
aGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsKKyAgICBhdXRvIGFyY2hpdmVyID0g
c2VjdXJlQXJjaGl2ZXJGcm9tTXV0YWJsZURhdGEoZGF0YS5nZXQoKSk7CiAKICAgICBbYXJjaGl2
ZXIgZW5jb2RlT2JqZWN0OnBheW1lbnRNZXRob2QucGtQYXltZW50TWV0aG9kKCkgZm9yS2V5Ok5T
S2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CiAgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5n
XTsKQEAgLTIxOSw4ICsyMDgsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVu
dE1ldGhvCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMo
W1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6Y29uc3RfY2FzdDx2b2lkKj4oc3Rh
dGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSkgbGVuZ3RoOmRhdGFS
ZWZlcmVuY2Uuc2l6ZSgpIGZyZWVXaGVuRG9uZTpOT10pOwotICAgIGF1dG8gdW5hcmNoaXZlciA9
IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdXaXRoRGF0
YTpkYXRhLmdldCgpXSk7Ci0gICAgW3VuYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6
WUVTXTsKKyAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoZGF0
YS5nZXQoKSk7CiAgICAgQHRyeSB7CiAgICAgICAgIFBLUGF5bWVudE1ldGhvZCAqcGtQYXltZW50
TWV0aG9kID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpnZXRQS1BheW1lbnRNZXRo
b2RDbGFzcygpIGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOwogICAgICAgICBw
YXltZW50TWV0aG9kID0gUGF5bWVudE1ldGhvZChwa1BheW1lbnRNZXRob2QpOwpJbmRleDogU291
cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9y
bWF0aW9uQXRQb3NpdGlvbi5tbQkocmV2aXNpb24gMjI1MjQ4KQorKysgU291cmNlL1dlYktpdC9T
aGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKICNpbXBvcnQg
IldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9EYXRhRGV0
ZWN0b3JzQ29yZVNQSS5oPgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJT
UEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCiBTT0ZUX0xJTktfUFJJVkFURV9G
UkFNRVdPUksoRGF0YURldGVjdG9yc0NvcmUpCkBAIC03Myw4ICs3NCw3IEBAIHZvaWQgSW50ZXJh
Y3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246OmUKICAgICBpZiAoaXNEYXRhRGV0ZWN0b3JMaW5r
KSB7CiAgICAgICAgIGVuY29kZXIgPDwgZGF0YURldGVjdG9ySWRlbnRpZmllcjsKICAgICAgICAg
UmV0YWluUHRyPE5TTXV0YWJsZURhdGE+IGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBh
bGxvY10gaW5pdF0pOwotICAgICAgICBSZXRhaW5QdHI8TlNLZXllZEFyY2hpdmVyPiBhcmNoaXZl
ciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11
dGFibGVEYXRhOmRhdGEuZ2V0KCldKTsKLSAgICAgICAgW2FyY2hpdmVyIHNldFJlcXVpcmVzU2Vj
dXJlQ29kaW5nOllFU107CisgICAgICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlckZy
b21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKICAgICAgICAgW2FyY2hpdmVyIGVuY29kZU9iamVj
dDpkYXRhRGV0ZWN0b3JSZXN1bHRzLmdldCgpIGZvcktleTpAImRhdGFEZXRlY3RvclJlc3VsdHMi
XTsKICAgICAgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsKICAgICAgICAgCkBAIC0xNjgs
OCArMTY4LDcgQEAgYm9vbCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6ZAogICAg
ICAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIsIGRhdGEpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAKLSAgICAgICAgUmV0YWluUHRyPE5TS2V5ZWRVbmFyY2hpdmVyPiB1
bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVh
ZGluZ1dpdGhEYXRhOihOU0RhdGEgKilkYXRhLmdldCgpXSk7Ci0gICAgICAgIFt1bmFyY2hpdmVy
IHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107CisgICAgICAgIGF1dG8gdW5hcmNoaXZlciA9
IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YSgoTlNEYXRhICopZGF0YS5nZXQoKSk7CiAgICAgICAg
IEB0cnkgewogICAgICAgICAgICAgcmVzdWx0LmRhdGFEZXRlY3RvclJlc3VsdHMgPSBbdW5hcmNo
aXZlciBkZWNvZGVPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhBcnJheTpAWyBbTlNBcnJh
eSBjbGFzc10sIGdldEREU2Nhbm5lclJlc3VsdENsYXNzKCldIF0gZm9yS2V5OkAiZGF0YURldGVj
dG9yUmVzdWx0cyJdOwogICAgICAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikg
ewpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzTWFjLm1tCShyZXZpc2lvbiAyMjUyNDgpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ29tcGFueSAxMDAgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzgsNiArMzgsNyBAQAogI2lt
cG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNl
UmVxdWVzdC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KKyNpbXBvcnQg
PHBhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg+CiAKICNpZiBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKQogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dC5oPgpAQCAtNDI4LDkgKzQyOSw4IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJj
ZUVycm9yPjo6ZGVjb2QKIAogdm9pZCBBcmd1bWVudENvZGVyPFByb3RlY3Rpb25TcGFjZT46OmVu
Y29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBQcm90ZWN0aW9uU3BhY2Um
IHNwYWNlKQogewotICAgIFJldGFpblB0cjxOU011dGFibGVEYXRhPiBkYXRhID0gYWRvcHROUyhb
W05TTXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKLSAgICBSZXRhaW5QdHI8TlNLZXllZEFyY2hp
dmVyPiBhcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JX
cml0aW5nV2l0aE11dGFibGVEYXRhOmRhdGEuZ2V0KCldKTsKLSAgICBbYXJjaGl2ZXIgc2V0UmVx
dWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsKKyAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlRGF0YSBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZl
ckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKICAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0
OnNwYWNlLm5zU3BhY2UoKSBmb3JLZXk6QCJwcm90ZWN0aW9uU3BhY2UiXTsKICAgICBbYXJjaGl2
ZXIgZmluaXNoRW5jb2RpbmddOwogICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0
X2Nhc3Q8Q0ZEYXRhUmVmPihkYXRhLmdldCgpKSk7CkBAIC00NDIsOCArNDQyLDcgQEAgYm9vbCBB
cmd1bWVudENvZGVyPFByb3RlY3Rpb25TcGFjZT46OmRlYwogICAgIGlmICghSVBDOjpkZWNvZGUo
ZGVjb2RlciwgZGF0YSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJldGFpblB0cjxO
U0tleWVkVW5hcmNoaXZlcj4gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZl
ciBhbGxvY10gaW5pdEZvclJlYWRpbmdXaXRoRGF0YTooTlNEYXRhICopZGF0YS5nZXQoKV0pOwot
ICAgIFt1bmFyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107CisgICAgYXV0byB1
bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKChOU0RhdGEgKilkYXRhLmdldCgp
KTsKICAgICBAdHJ5IHsKICAgICAgICAgaWYgKFJldGFpblB0cjxOU1VSTFByb3RlY3Rpb25TcGFj
ZT4gbnNTcGFjZSA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6W05TVVJMUHJvdGVj
dGlvblNwYWNlIGNsYXNzXSBmb3JLZXk6QCJwcm90ZWN0aW9uU3BhY2UiXSkKICAgICAgICAgICAg
IHNwYWNlID0gUHJvdGVjdGlvblNwYWNlKG5zU3BhY2UuZ2V0KCkpOwpAQCAtNDc1LDkgKzQ3NCw4
IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxDcmVkZW50aWFsPjo6ZW5jb2RlUGwKICAgICB9CiAKICAg
ICBlbmNvZGVyIDw8IGZhbHNlOwotICAgIFJldGFpblB0cjxOU011dGFibGVEYXRhPiBkYXRhID0g
YWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKLSAgICBSZXRhaW5QdHI8TlNL
ZXllZEFyY2hpdmVyPiBhcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2Nd
IGluaXRGb3JXcml0aW5nV2l0aE11dGFibGVEYXRhOmRhdGEuZ2V0KCldKTsKLSAgICBbYXJjaGl2
ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsKKyAgICBhdXRvIGRhdGEgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1
cmVBcmNoaXZlckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKICAgICBbYXJjaGl2ZXIgZW5j
b2RlT2JqZWN0Om5zQ3JlZGVudGlhbCBmb3JLZXk6QCJjcmVkZW50aWFsIl07CiAgICAgW2FyY2hp
dmVyIGZpbmlzaEVuY29kaW5nXTsKICAgICBJUEM6OmVuY29kZShlbmNvZGVyLCByZWludGVycHJl
dF9jYXN0PENGRGF0YVJlZj4oZGF0YS5nZXQoKSkpOwpAQCAtNTE2LDggKzUxNCw3IEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxDcmVkZW50aWFsPjo6ZGVjb2RlUGwKICAgICBpZiAoIUlQQzo6ZGVjb2Rl
KGRlY29kZXIsIGRhdGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZXRhaW5QdHI8
TlNLZXllZFVuYXJjaGl2ZXI+IHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2
ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nV2l0aERhdGE6KE5TRGF0YSAqKWRhdGEuZ2V0KCldKTsK
LSAgICBbdW5hcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOworICAgIGF1dG8g
dW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YSgoTlNEYXRhICopZGF0YS5nZXQo
KSk7CiAgICAgQHRyeSB7CiAgICAgICAgIGlmIChSZXRhaW5QdHI8TlNVUkxDcmVkZW50aWFsPiBu
c0NyZWRlbnRpYWwgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOltOU1VSTENyZWRl
bnRpYWwgY2xhc3NdIGZvcktleTpAImNyZWRlbnRpYWwiXSkKICAgICAgICAgICAgIGNyZWRlbnRp
YWwgPSBDcmVkZW50aWFsKG5zQ3JlZGVudGlhbC5nZXQoKSk7CkBAIC01NzgsOSArNTc1LDggQEAg
c3RkOjpvcHRpb25hbDxLZXlwcmVzc0NvbW1hbmQ+IEFyZ3VtZW50QwogI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklORykKIHZvaWQgQXJndW1lbnRDb2RlcjxDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXI+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyJiBjb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIpCiB7Ci0gICAgUmV0YWluUHRy
PE5TTXV0YWJsZURhdGE+IGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5p
dF0pOwotICAgIFJldGFpblB0cjxOU0tleWVkQXJjaGl2ZXI+IGFyY2hpdmVyID0gYWRvcHROUyhb
W05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6ZGF0
YS5nZXQoKV0pOwotICAgIFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOwor
ICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0XSk7Cisg
ICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyRnJvbU11dGFibGVEYXRhKGRhdGEuZ2V0
KCkpOwogICAgIGNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5lbmNvZGUoYXJjaGl2ZXIuZ2V0
KCkpOwogICAgIFthcmNoaXZlciBmaW5pc2hFbmNvZGluZ107CiAgICAgSVBDOjplbmNvZGUoZW5j
b2RlciwgcmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGRhdGEuZ2V0KCkpKTsKQEAgLTU5Miw4
ICs1ODgsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8Q29udGVudEZpbHRlclVuYmxvY2tICiAgICAg
aWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBkYXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgUmV0YWluUHRyPE5TS2V5ZWRVbmFyY2hpdmVyPiB1bmFyY2hpdmVyID0gYWRvcHROUyhb
W05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ1dpdGhEYXRhOihOU0RhdGEg
KilkYXRhLmdldCgpXSk7Ci0gICAgW3VuYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6
WUVTXTsKKyAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoKE5T
RGF0YSAqKWRhdGEuZ2V0KCkpOwogICAgIGlmICghQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
OjpkZWNvZGUodW5hcmNoaXZlci5nZXQoKSwgY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC02MTIsOSArNjA3LDggQEAgc3RhdGljIE5TU3Ry
aW5nICpkZXZpY2VDb250ZXh0S2V5KCkKIAogdm9pZCBBcmd1bWVudENvZGVyPE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQpCiB7Ci0gICAgUmV0YWluUHRy
PE5TTXV0YWJsZURhdGE+IGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5p
dF0pOwotICAgIFJldGFpblB0cjxOU0tleWVkQXJjaGl2ZXI+IGFyY2hpdmVyID0gYWRvcHROUyhb
W05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6ZGF0
YS5nZXQoKV0pOwotICAgIFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOwor
ICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0XSk7Cisg
ICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyRnJvbU11dGFibGVEYXRhKGRhdGEuZ2V0
KCkpOwogCiAgICAgaWYgKFtnZXRBVk91dHB1dENvbnRleHRDbGFzcygpIGNvbmZvcm1zVG9Qcm90
b2NvbDpAcHJvdG9jb2woTlNTZWN1cmVDb2RpbmcpXSkKICAgICAgICAgW2FyY2hpdmVyIGVuY29k
ZU9iamVjdDp0YXJnZXQuYXZPdXRwdXRDb250ZXh0KCkgZm9yS2V5OmRldmljZUNvbnRleHRLZXko
KV07CkBAIC02MzMsOCArNjI3LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPE1lZGlhUGxheWJhY2tU
YXJnZXRDbwogICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgZGF0YSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIFJldGFpblB0cjxOU0tleWVkVW5hcmNoaXZlcj4gdW5hcmNoaXZl
ciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdXaXRo
RGF0YTooTlNEYXRhICopZGF0YS5nZXQoKV0pOwotICAgIFt1bmFyY2hpdmVyIHNldFJlcXVpcmVz
U2VjdXJlQ29kaW5nOllFU107CisgICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNoaXZl
ckZyb21EYXRhKChOU0RhdGEgKilkYXRhLmdldCgpKTsKIAogICAgIEFWT3V0cHV0Q29udGV4dCAq
Y29udGV4dCA9IG5pbDsKICAgICBAdHJ5IHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9XZWJIaXRUZXN0UmVzdWx0RGF0YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvV2ViSGl0VGVzdFJlc3VsdERhdGEubW0JKHJldmlzaW9uIDIyNTI0OCkKKysrIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJIaXRUZXN0UmVzdWx0RGF0YS5tbQkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJFbmNvZGVyLmgiCiAjaW1wb3J0ICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgorI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KICNpbXBvcnQgPHBhbC9z
cGkvbWFjL0RhdGFEZXRlY3RvcnNTUEkuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NCw5
ICs0NSw4IEBAIHZvaWQgV2ViSGl0VGVzdFJlc3VsdERhdGE6OnBsYXRmb3JtRW5jb2QKICAgICBp
ZiAoIWhhc0FjdGlvbkNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxO
U011dGFibGVEYXRhPiBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2NdIGluaXRd
KTsKLSAgICBSZXRhaW5QdHI8TlNLZXllZEFyY2hpdmVyPiBhcmNoaXZlciA9IGFkb3B0TlMoW1tO
U0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFibGVEYXRhOmRhdGEu
Z2V0KCldKTsKLSAgICBbYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsKKyAg
ICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdF0pOworICAg
IGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgp
KTsKICAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OmRldGVjdGVkRGF0YUFjdGlvbkNvbnRleHQu
Z2V0KCkgZm9yS2V5OkAiYWN0aW9uQ29udGV4dCJdOwogICAgIFthcmNoaXZlciBmaW5pc2hFbmNv
ZGluZ107CiAKQEAgLTc1LDggKzc1LDcgQEAgYm9vbCBXZWJIaXRUZXN0UmVzdWx0RGF0YTo6cGxh
dGZvcm1EZWNvZAogICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgZGF0YSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIFJldGFpblB0cjxOU0tleWVkVW5hcmNoaXZlcj4gdW5hcmNo
aXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdX
aXRoRGF0YTooTlNEYXRhICopZGF0YS5nZXQoKV0pOwotICAgIFt1bmFyY2hpdmVyIHNldFJlcXVp
cmVzU2VjdXJlQ29kaW5nOllFU107CisgICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNo
aXZlckZyb21EYXRhKChOU0RhdGEgKilkYXRhLmdldCgpKTsKICAgICBAdHJ5IHsKICAgICAgICAg
aGl0VGVzdFJlc3VsdERhdGEuZGV0ZWN0ZWREYXRhQWN0aW9uQ29udGV4dCA9IFt1bmFyY2hpdmVy
IGRlY29kZU9iamVjdE9mQ2xhc3M6Z2V0RERBY3Rpb25Db250ZXh0Q2xhc3MoKSBmb3JLZXk6QCJh
Y3Rpb25Db250ZXh0Il07CiAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nl
c3NQb29sLm1tCShyZXZpc2lvbiAyMjUyNDgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBA
QAogI2ltcG9ydCA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4KICNpbXBvcnQgPFdlYkNvcmUv
UGx1Z2luRGF0YS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KKyNpbXBv
cnQgPHBhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg+CiAjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0yMTMsOCArMjE0LDcgQEAgLSAodm9p
ZClfc2V0T2JqZWN0OihpZCA8TlNDb3B5aW5nLCBOU1NlYwogICAgIGF1dG8gY29weSA9IGFkb3B0
TlMoWyhOU09iamVjdCAqKW9iamVjdCBjb3B5XSk7CiAKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdF0pOwotICAgIGF1dG8ga2V5ZWRBcmNoaXZlciA9
IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFi
bGVEYXRhOmRhdGEuZ2V0KCldKTsKLSAgICBba2V5ZWRBcmNoaXZlciBzZXRSZXF1aXJlc1NlY3Vy
ZUNvZGluZzpZRVNdOworICAgIGF1dG8ga2V5ZWRBcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyRnJv
bU11dGFibGVEYXRhKGRhdGEuZ2V0KCkpOwogCiAgICAgQHRyeSB7CiAgICAgICAgIFtrZXllZEFy
Y2hpdmVyIGVuY29kZU9iamVjdDpjb3B5LmdldCgpIGZvcktleTpAInBhcmFtZXRlciJdOwpAQCAt
MjM2LDggKzIzNiw3IEBAIC0gKHZvaWQpX3NldE9iamVjdHNGb3JCdW5kbGVQYXJhbWV0ZXJzV2kK
ICAgICBhdXRvIGNvcHkgPSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aERp
Y3Rpb25hcnk6ZGljdGlvbmFyeSBjb3B5SXRlbXM6WUVTXSk7CiAKICAgICBhdXRvIGRhdGEgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdF0pOwotICAgIGF1dG8ga2V5ZWRBcmNo
aXZlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0
aE11dGFibGVEYXRhOmRhdGEuZ2V0KCldKTsKLSAgICBba2V5ZWRBcmNoaXZlciBzZXRSZXF1aXJl
c1NlY3VyZUNvZGluZzpZRVNdOworICAgIGF1dG8ga2V5ZWRBcmNoaXZlciA9IHNlY3VyZUFyY2hp
dmVyRnJvbU11dGFibGVEYXRhKGRhdGEuZ2V0KCkpOwogCiAgICAgQHRyeSB7CiAgICAgICAgIFtr
ZXllZEFyY2hpdmVyIGVuY29kZU9iamVjdDpjb3B5LmdldCgpIGZvcktleTpAInBhcmFtZXRlcnMi
XTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQkocmV2aXNpb24gMjI1MjQ4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAzLDYgKzEwMyw3IEBACiAjaW1w
b3J0IDxXZWJDb3JlL1ZhbGlkYXRpb25CdWJibGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmlld3Bv
cnRBcmd1bWVudHMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV3JpdGluZ01vZGUuaD4KKyNpbXBvcnQg
PHBhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21h
Yy9OU1RleHRGaW5kZXJTUEkuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8
d3RmL0hhc2hNYXAuaD4KQEAgLTQ1ODQsOCArNDU4NSw3IEBAIC0gKHZvaWQpX3NldElucHV0RGVs
ZWdhdGU6KGlkIDxfV0tJbnB1dEQKICAgICAgICAgICAgIE5TT2JqZWN0IDxOU1NlY3VyZUNvZGlu
Zz4gKnVzZXJPYmplY3QgPSBuaWw7CiAgICAgICAgICAgICBpZiAoQVBJOjpEYXRhKiBkYXRhID0g
c3RhdGljX2Nhc3Q8QVBJOjpEYXRhKj4odXNlckRhdGEpKSB7CiAgICAgICAgICAgICAgICAgYXV0
byBuc0RhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5OmNv
bnN0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihkYXRhLT5ieXRlcygpKSkg
bGVuZ3RoOmRhdGEtPnNpemUoKSBmcmVlV2hlbkRvbmU6Tk9dKTsKLSAgICAgICAgICAgICAgICBh
dXRvIHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRG
b3JSZWFkaW5nV2l0aERhdGE6bnNEYXRhLmdldCgpXSk7Ci0gICAgICAgICAgICAgICAgW3VuYXJj
aGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsKKyAgICAgICAgICAgICAgICBhdXRv
IHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEobnNEYXRhLmdldCgpKTsKICAg
ICAgICAgICAgICAgICBAdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgdXNlck9iamVjdCA9IFt1
bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6W05TT2JqZWN0IGNsYXNzXSBmb3JLZXk6QCJ1
c2VyT2JqZWN0Il07CiAgICAgICAgICAgICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNl
cHRpb24pIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
b29sQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2aXNpb24gMjI1MjQ4KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29ya2luZyBjb3B5KQpA
QCAtNDksNiArNDksNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVj
a3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW1wb3J0IDxwYWwvc3Bp
L2NmL0NGTmV0d29ya1NQSS5oPgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2
ZXJTUEkuaD4KICNpbXBvcnQgPHN5cy9wYXJhbS5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAt
MjE1LDkgKzIxNiw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVcK
IAogICAgIGlmIChtX2J1bmRsZVBhcmFtZXRlcnMpIHsKICAgICAgICAgYXV0byBkYXRhID0gYWRv
cHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgYXV0byBrZXllZEFy
Y2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdX
aXRoTXV0YWJsZURhdGE6ZGF0YS5nZXQoKV0pOwotCi0gICAgICAgIFtrZXllZEFyY2hpdmVyIHNl
dFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107CisgICAgICAgIGF1dG8ga2V5ZWRBcmNoaXZlciA9
IHNlY3VyZUFyY2hpdmVyRnJvbU11dGFibGVEYXRhKGRhdGEuZ2V0KCkpOwogCiAgICAgICAgIEB0
cnkgewogICAgICAgICAgICAgW2tleWVkQXJjaGl2ZXIgZW5jb2RlT2JqZWN0Om1fYnVuZGxlUGFy
YW1ldGVycy5nZXQoKSBmb3JLZXk6QCJwYXJhbWV0ZXJzIl07CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCShyZXZpc2lvbiAyMjUy
NDgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0J
KHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVk
QnVmZmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4KICNpbXBvcnQgPFdl
YkNvcmUvVmFsaWRhdGlvbkJ1YmJsZS5oPgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVk
QXJjaGl2ZXJTUEkuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogCiAjZGVmaW5lIE1FU1NB
R0VfQ0hFQ0soYXNzZXJ0aW9uKSBNRVNTQUdFX0NIRUNLX0JBU0UoYXNzZXJ0aW9uLCBtX3dlYlZp
ZXctPl9wYWdlLT5wcm9jZXNzKCkuY29ubmVjdGlvbigpKQpAQCAtNTQ3LDggKzU0OCw3IEBAIHZv
aWQgUGFnZUNsaWVudEltcGw6OnN0YXJ0QXNzaXN0aW5nTm9kZSgKICAgICBOU09iamVjdCA8TlNT
ZWN1cmVDb2Rpbmc+ICp1c2VyT2JqZWN0ID0gbmlsOwogICAgIGlmIChBUEk6OkRhdGEqIGRhdGEg
PSBzdGF0aWNfY2FzdDxBUEk6OkRhdGEqPih1c2VyRGF0YSkpIHsKICAgICAgICAgYXV0byBuc0Rh
dGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5OmNvbnN0X2Nh
c3Q8dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihkYXRhLT5ieXRlcygpKSkgbGVuZ3Ro
OmRhdGEtPnNpemUoKSBmcmVlV2hlbkRvbmU6Tk9dKTsKLSAgICAgICAgYXV0byB1bmFyY2hpdmVy
ID0gYWRvcHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ1dpdGhE
YXRhOm5zRGF0YS5nZXQoKV0pOwotICAgICAgICBbdW5hcmNoaXZlciBzZXRSZXF1aXJlc1NlY3Vy
ZUNvZGluZzpZRVNdOworICAgICAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVy
RnJvbURhdGEobnNEYXRhLmdldCgpKTsKICAgICAgICAgQHRyeSB7CiAgICAgICAgICAgICB1c2Vy
T2JqZWN0ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpbTlNPYmplY3QgY2xhc3Nd
IGZvcktleTpAInVzZXJPYmplY3QiXTsKICAgICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpl
eGNlcHRpb24pIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0JKHJldmlz
aW9uIDIyNTI0OCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQkod29y
a2luZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MRm9ybUVs
ZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTElucHV0RWxlbWVudC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9NYWluRnJhbWUuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hp
dmVyU1BJLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKQEAgLTQ4NCw4ICs0ODUsNyBAQCAtICh2b2lkKV9zZXRGb3JtRGVsZWdhdGU6KGlkIDxX
S1dlYlByb2NlCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBhdXRvIGRh
dGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdF0pOwotICAgICAgICAgICAg
YXV0byBhcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JX
cml0aW5nV2l0aE11dGFibGVEYXRhOmRhdGEuZ2V0KCldKTsKLSAgICAgICAgICAgIFthcmNoaXZl
ciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOworICAgICAgICAgICAgYXV0byBhcmNoaXZl
ciA9IHNlY3VyZUFyY2hpdmVyRnJvbU11dGFibGVEYXRhKGRhdGEuZ2V0KCkpOwogICAgICAgICAg
ICAgQHRyeSB7CiAgICAgICAgICAgICAgICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDp1c2VyT2Jq
ZWN0IGZvcktleTpAInVzZXJPYmplY3QiXTsKICAgICAgICAgICAgIH0gQGNhdGNoIChOU0V4Y2Vw
dGlvbiAqZXhjZXB0aW9uKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVNYWMubW0J
KHJldmlzaW9uIDIyNTI0OCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbXBvcnQgIldLV2ViUHJvY2Vzc1BsdWdJbkludGVybmFsLmgiCiAjaW1wb3J0ICJX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TQnVu
ZGxlLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oPgogI2lt
cG9ydCA8c3RkaW8uaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KQEAgLTg1LDggKzg2LDcgQEAgYm9vbCBJbmplY3RlZEJ1bmRsZTo6aW5p
dGlhbGl6ZShjb25zdCBXZQogICAgIGlmIChwYXJhbWV0ZXJzLmJ1bmRsZVBhcmFtZXRlckRhdGEp
IHsKICAgICAgICAgYXV0byBidW5kbGVQYXJhbWV0ZXJEYXRhID0gYWRvcHROUyhbW05TRGF0YSBh
bGxvY10gaW5pdFdpdGhCeXRlc05vQ29weTpjb25zdF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxj
b25zdCB2b2lkKj4ocGFyYW1ldGVycy5idW5kbGVQYXJhbWV0ZXJEYXRhLT5ieXRlcygpKSkgbGVu
Z3RoOnBhcmFtZXRlcnMuYnVuZGxlUGFyYW1ldGVyRGF0YS0+c2l6ZSgpIGZyZWVXaGVuRG9uZTpO
T10pOwogCi0gICAgICAgIGF1dG8gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNo
aXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdXaXRoRGF0YTpidW5kbGVQYXJhbWV0ZXJEYXRhLmdl
dCgpXSk7Ci0gICAgICAgIFt1bmFyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107
CisgICAgICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YShidW5k
bGVQYXJhbWV0ZXJEYXRhLmdldCgpKTsKIAogICAgICAgICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25h
cnkgPSBuaWw7CiAgICAgICAgIEB0cnkgewpAQCAtMTYwLDggKzE2MCw3IEBAIHZvaWQgSW5qZWN0
ZWRCdW5kbGU6OnNldEJ1bmRsZVBhcmFtZXRlcigKICNpZiBXS19BUElfRU5BQkxFRAogICAgIGF1
dG8gYnVuZGxlUGFyYW1ldGVyRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRo
Qnl0ZXNOb0NvcHk6Y29uc3RfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHZh
bHVlLmRhdGEoKSkpIGxlbmd0aDp2YWx1ZS5zaXplKCkgZnJlZVdoZW5Eb25lOk5PXSk7CiAKLSAg
ICBhdXRvIHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGlu
aXRGb3JSZWFkaW5nV2l0aERhdGE6YnVuZGxlUGFyYW1ldGVyRGF0YS5nZXQoKV0pOwotICAgIFt1
bmFyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107CisgICAgYXV0byB1bmFyY2hp
dmVyID0gc2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKGJ1bmRsZVBhcmFtZXRlckRhdGEuZ2V0KCkp
OwogCiAgICAgaWQgcGFyYW1ldGVyID0gbmlsOwogICAgIEB0cnkgewpAQCAtMTgzLDggKzE4Miw3
IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldEJ1bmRsZVBhcmFtZXRlcnMKICNpZiBXS19BUElf
RU5BQkxFRAogICAgIGF1dG8gYnVuZGxlUGFyYW1ldGVyc0RhdGEgPSBhZG9wdE5TKFtbTlNEYXRh
IGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0
PGNvbnN0IHZvaWQqPih2YWx1ZS5kYXRhKCkpKSBsZW5ndGg6dmFsdWUuc2l6ZSgpIGZyZWVXaGVu
RG9uZTpOT10pOwogCi0gICAgYXV0byB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFy
Y2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ1dpdGhEYXRhOmJ1bmRsZVBhcmFtZXRlcnNEYXRh
LmdldCgpXSk7Ci0gICAgW3VuYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsK
KyAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoYnVuZGxlUGFy
YW1ldGVyc0RhdGEuZ2V0KCkpOwogCiAgICAgTlNEaWN0aW9uYXJ5ICpwYXJhbWV0ZXJzID0gbmls
OwogICAgIEB0cnkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327907</attachid>
            <date>2017-11-29 14:25:07 -0800</date>
            <delta_ts>2017-11-29 14:41:46 -0800</delta_ts>
            <desc>Patch Part 2</desc>
            <filename>bug-180127-20171129142506.patch</filename>
            <type>text/plain</type>
            <size>21936</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjI1Mjg4KQorKysgU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE3LTEx
LTI5ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFBhcnQg
MjogQWRvcHQgdXBkYXRlZCBOU0tleWVkW1VuXUFyY2hpdmVyIEFQSSB3aGVuIGF2YWlsYWJsZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMTI3Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTcxMDczOD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgQVBJIHRoYXQgYWNjZXB0cyBhIHVzZXItYWxs
b2NhdGVkIE5TTXV0YWJsZURhdGEgaXMgZGVwcmVjYXRlZC4gU3dpdGNoIChmb3IgbWFjT1MgMTAu
MTIgYW5kIG5ld2VyKQorICAgICAgICB0byB0aGUgbW9kZXJuIEFQSS4gVXNlIHRoZSBvcmlnaW5h
bCBBUEkgZm9yIG1hY09TIGJ1aWxkcyBwcmlvciB0byAxMC4xMi4KKworICAgICAgICAqIHBhbC9z
cGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg6CisgICAgICAgIChzZWN1cmVBcmNoaXZlcik6
IEFkZGVkLgorICAgICAgICAoc2VjdXJlQXJjaGl2ZXJGcm9tTXV0YWJsZURhdGEpOiBEZWxldGVk
LgorCiAyMDE3LTExLTI4ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkb3B0IHVwZGF0ZWQgTlNLZXllZFtVbl1BcmNoaXZlciBBUEkgd2hlbiBhdmFpbGFi
bGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZl
clNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05T
S2V5ZWRBcmNoaXZlclNQSS5oCShyZXZpc2lvbiAyMjUyNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaAkod29ya2luZyBjb3B5KQpAQCAt
MTA0LDEwICsxMDQsMTQgQEAgaW5saW5lIGlkIF9OdWxsYWJsZSBpbnNlY3VyZWx5VW5hcmNoaXZl
TwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogfQogCi1pbmxpbmUgUmV0YWluUHRyPE5T
S2V5ZWRBcmNoaXZlcj4gc2VjdXJlQXJjaGl2ZXJGcm9tTXV0YWJsZURhdGEoTlNNdXRhYmxlRGF0
YSAqX05vbm51bGwgbXV0YWJsZURhdGEpCitpbmxpbmUgUmV0YWluUHRyPE5TS2V5ZWRBcmNoaXZl
cj4gc2VjdXJlQXJjaGl2ZXIoKQogewotICAgIE5TS2V5ZWRBcmNoaXZlciAqYXJjaGl2ZXIgPSBb
W05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6bXV0
YWJsZURhdGFdOworI2lmIFVTRShTRUNVUkVfQVJDSElWRVJfQVBJKQorICAgIE5TS2V5ZWRBcmNo
aXZlciAqYXJjaGl2ZXIgPSBbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdFJlcXVpcmluZ1Nl
Y3VyZUNvZGluZzpZRVNdOworI2Vsc2UKKyAgICBOU0tleWVkQXJjaGl2ZXIgKmFyY2hpdmVyID0g
W1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRdOwogICAgIFthcmNoaXZlciBzZXRSZXF1aXJl
c1NlY3VyZUNvZGluZzpZRVNdOworI2VuZGlmCiAgICAgcmV0dXJuIGFkb3B0TlMoYXJjaGl2ZXIp
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjI1Mjc1KQorKysgU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzOCBAQAorMjAxNy0xMS0yOSAgQnJl
bnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBQYXJ0IDI6IEFkb3B0
IHVwZGF0ZWQgTlNLZXllZFtVbl1BcmNoaXZlciBBUEkgd2hlbiBhdmFpbGFibGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDEyNworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzU3MTA3Mzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIEFQSSB0aGF0IGFjY2VwdHMgYSB1c2VyLWFsbG9jYXRlZCBO
U011dGFibGVEYXRhIGlzIGRlcHJlY2F0ZWQuIFN3aXRjaCAoZm9yIG1hY09TIDEwLjEyIGFuZCBu
ZXdlcikKKyAgICAgICAgdG8gdGhlIG1vZGVybiBBUEkuIFVzZSB0aGUgb3JpZ2luYWwgQVBJIGZv
ciBtYWNPUyBidWlsZHMgcHJpb3IgdG8gMTAuMTIuCisKKyAgICAgICAgKiBTaGFyZWQvQ29jb2Ev
RGF0YURldGVjdGlvblJlc3VsdC5tbToKKyAgICAgICAgKFdlYktpdDo6RGF0YURldGVjdGlvblJl
c3VsdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
UGF5bWVudD46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
UGF5bWVudENvbnRhY3Q+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXRob2Q+OjplbmNvZGUpOgorICAgICAgICAq
IFNoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW06CisgICAgICAg
IChXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAqIFNoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFByb3RlY3Rpb25TcGFjZT46OmVuY29kZVBsYXRmb3Jt
RGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q3JlZGVudGlhbD46OmVuY29kZVBs
YXRmb3JtRGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmVuY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICog
U2hhcmVkL21hYy9XZWJIaXRUZXN0UmVzdWx0RGF0YS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SGl0VGVzdFJlc3VsdERhdGE6OnBsYXRmb3JtRW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bv
b2wgX3NldE9iamVjdDpmb3JCdW5kbGVQYXJhbWV0ZXI6XSk6CisgICAgICAgICgtW1dLUHJvY2Vz
c1Bvb2wgX3NldE9iamVjdHNGb3JCdW5kbGVQYXJhbWV0ZXJzV2l0aERpY3Rpb25hcnk6XSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNz
UGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgX3NldEZvcm1EZWxlZ2F0ZTpdKToKKwog
MjAxNy0xMS0yOSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgUkVHUkVTU0lPTihyMjE4MDY0KTogW0dUS10gQnJva2UgZW50ZXJpbmcgZnVsbHNj
cmVlbiBtb2RlIGluIGRlYnVnIGJ1aWxkcwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvRGF0YURldGVjdGlvblJlc3VsdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tCShyZXZpc2lvbiAyMjUyNzUpCisrKyBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC00MSwxMiArNDEsMTkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgRGF0
YURldGVjdGlvblJlc3VsdDo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsK
LSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGF0YT4gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVE
YXRhIGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyRnJv
bU11dGFibGVEYXRhKGRhdGEuZ2V0KCkpOworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEyMDApCisgICAgYXV0byBkYXRhID0gYWRvcHRO
UyhbW05TTXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGFyY2hpdmVyID0gYWRv
cHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdFdpdGhNdXRhYmxlRGF0YTpkYXRhLmdl
dCgpXSk7CisgICAgW2FyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107CiAgICAg
W2FyY2hpdmVyIGVuY29kZU9iamVjdDpyZXN1bHRzLmdldCgpIGZvcktleTpAImRhdGFEZXRlY3Rv
clJlc3VsdHMiXTsKICAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOwotICAgIAotICAgIElQ
Qzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihkYXRhLmdldCgp
KSk7ICAgICAgICAKKworICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8
Q0ZEYXRhUmVmPihkYXRhLmdldCgpKSk7CisjZWxzZQorICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1
cmVBcmNoaXZlcigpOworICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6cmVzdWx0cy5nZXQoKSBm
b3JLZXk6QCJkYXRhRGV0ZWN0b3JSZXN1bHRzIl07CisgICAgSVBDOjplbmNvZGUoZW5jb2Rlciwg
cmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhKSk7
CisjZW5kaWYKIH0KIAogYm9vbCBEYXRhRGV0ZWN0aW9uUmVzdWx0OjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyLCBEYXRhRGV0ZWN0aW9uUmVzdWx0JiByZXN1bHQpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnND
b2NvYS5tbQkocmV2aXNpb24gMjI1Mjc1KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
V2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTUxLDEyICs1
MSwyMiBAQCBuYW1lc3BhY2UgSVBDIHsKIAogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBh
eW1lbnQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UGF5bWVudCYg
cGF5bWVudCkKIHsKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEIDwgMTAxMjAwKQogICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVE
YXRhIGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyRnJv
bU11dGFibGVEYXRhKGRhdGEuZ2V0KCkpOworICAgIGF1dG8gYXJjaGl2ZXIgPSBhZG9wdE5TKFtb
TlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yV3JpdGluZ1dpdGhNdXRhYmxlRGF0YTpkYXRh
LmdldCgpXSk7CisKKyAgICBbYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsK
KyNlbHNlCisgICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7CisjZW5kaWYKIAog
ICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6cGF5bWVudC5wa1BheW1lbnQoKSBmb3JLZXk6TlNL
ZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKICAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2Rpbmdd
OwogCisjaWYgKCFQTEFURk9STShNQUMpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxMjAwKQorICAgIGF1dG8gZGF0YSA9IGFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRh
OworI2VuZGlmCisKICAgICBlbmNvZGVyIDw8IERhdGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOwogfQogCkBAIC0xMDMs
MTIgKzExMywyMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0CiAK
IHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50Q29udGFjdD46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQYXltZW50Q29udGFjdCYgcGF5bWVudENvbnRh
Y3QpCiB7CisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA8IDEwMTIwMCkKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBh
bGxvY10gaW5pdF0pOwotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlckZyb21NdXRh
YmxlRGF0YShkYXRhLmdldCgpKTsKKyAgICBhdXRvIGFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5
ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6ZGF0YS5nZXQo
KV0pOworCisgICAgW2FyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107CisjZWxz
ZQorICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOworI2VuZGlmCiAKICAgICBb
YXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnBheW1lbnRDb250YWN0LnBrQ29udGFjdCgpIGZvcktleTpO
U0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOwogICAgIFthcmNoaXZlciBmaW5pc2hFbmNvZGlu
Z107CiAKKyNpZiAoIVBMQVRGT1JNKE1BQykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDEyMDApCisgICAgYXV0byBkYXRhID0gYXJjaGl2ZXIuZ2V0KCkuZW5jb2RlZERh
dGE7CisjZW5kaWYKKwogICAgIGVuY29kZXIgPDwgRGF0YVJlZmVyZW5jZShzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CiB9CiAKQEAgLTE2
MSwxMiArMTgxLDIyIEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEVycm9yPiBBcmcK
IAogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vz
c2lvbiYgcGF5bWVudE1lcmNoYW50U2Vzc2lvbikKIHsKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMjAwKQogICAgIGF1dG8gZGF0YSA9
IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0byBhcmNoaXZl
ciA9IHNlY3VyZUFyY2hpdmVyRnJvbU11dGFibGVEYXRhKGRhdGEuZ2V0KCkpOworICAgIGF1dG8g
YXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yV3JpdGlu
Z1dpdGhNdXRhYmxlRGF0YTpkYXRhLmdldCgpXSk7CisKKyAgICBbYXJjaGl2ZXIgc2V0UmVxdWly
ZXNTZWN1cmVDb2Rpbmc6WUVTXTsKKyNlbHNlCisgICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFy
Y2hpdmVyKCk7CisjZW5kaWYKIAogICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6cGF5bWVudE1l
cmNoYW50U2Vzc2lvbi5wa1BheW1lbnRNZXJjaGFudFNlc3Npb24oKSBmb3JLZXk6TlNLZXllZEFy
Y2hpdmVSb290T2JqZWN0S2V5XTsKICAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOwogCisj
aWYgKCFQTEFURk9STShNQUMpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTAxMjAwKQorICAgIGF1dG8gZGF0YSA9IGFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhOworI2Vu
ZGlmCisKICAgICBlbmNvZGVyIDw8IERhdGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOwogfQogCkBAIC0xOTIsMTIgKzIy
MiwyMiBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1lcmNoCiAKIHZvaWQg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWV0aG9kPjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXRob2QmIHBheW1lbnRNZXRob2QpCiB7Cisj
aWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEw
MTIwMCkKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5p
dF0pOwotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlckZyb21NdXRhYmxlRGF0YShk
YXRhLmdldCgpKTsKKyAgICBhdXRvIGFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZl
ciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6ZGF0YS5nZXQoKV0pOworCisg
ICAgW2FyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107CisjZWxzZQorICAgIGF1
dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOworI2VuZGlmCiAKICAgICBbYXJjaGl2ZXIg
ZW5jb2RlT2JqZWN0OnBheW1lbnRNZXRob2QucGtQYXltZW50TWV0aG9kKCkgZm9yS2V5Ok5TS2V5
ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CiAgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsK
IAorI2lmICghUExBVEZPUk0oTUFDKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTIwMCkKKyAgICBhdXRvIGRhdGEgPSBhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YTsK
KyNlbmRpZgorCiAgICAgZW5jb2RlciA8PCBEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKIH0KIApJbmRleDogU291
cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9y
bWF0aW9uQXRQb3NpdGlvbi5tbQkocmV2aXNpb24gMjI1Mjc1KQorKysgU291cmNlL1dlYktpdC9T
aGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC03MywxMiArNzMsMTkgQEAgdm9pZCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbjo6ZQogICAgIGVuY29kZXIgPDwgaXNEYXRhRGV0ZWN0b3JMaW5rOwogICAgIGlmIChpc0Rh
dGFEZXRlY3RvckxpbmspIHsKICAgICAgICAgZW5jb2RlciA8PCBkYXRhRGV0ZWN0b3JJZGVudGlm
aWVyOworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPCAxMDEyMDApCiAgICAgICAgIFJldGFpblB0cjxOU011dGFibGVEYXRhPiBkYXRhID0gYWRv
cHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKICAgICAgICAgYXV0byBhcmNoaXZl
ciA9IHNlY3VyZUFyY2hpdmVyRnJvbU11dGFibGVEYXRhKGRhdGEuZ2V0KCkpOwogICAgICAgICBb
YXJjaGl2ZXIgZW5jb2RlT2JqZWN0OmRhdGFEZXRlY3RvclJlc3VsdHMuZ2V0KCkgZm9yS2V5OkAi
ZGF0YURldGVjdG9yUmVzdWx0cyJdOwogICAgICAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2Rpbmdd
OwogICAgICAgICAKLSAgICAgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgcmVpbnRlcnByZXRfY2Fz
dDxDRkRhdGFSZWY+KGRhdGEuZ2V0KCkpKTsgICAgICAgIAorICAgICAgICBJUEM6OmVuY29kZShl
bmNvZGVyLCByZWludGVycHJldF9jYXN0PENGRGF0YVJlZj4oZGF0YS5nZXQoKSkpOworI2Vsc2UK
KyAgICAgICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7CisgICAgICAgIFthcmNo
aXZlciBlbmNvZGVPYmplY3Q6ZGF0YURldGVjdG9yUmVzdWx0cy5nZXQoKSBmb3JLZXk6QCJkYXRh
RGV0ZWN0b3JSZXN1bHRzIl07CisgCisgICAgICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50
ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSkpOworI2Vu
ZGlmCiAgICAgfQogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0JKHJldmlzaW9uIDIyNTI3NSkKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTQyOSwxMSArNDI5LDE4IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNv
dXJjZUVycm9yPjo6ZGVjb2QKIAogdm9pZCBBcmd1bWVudENvZGVyPFByb3RlY3Rpb25TcGFjZT46
OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBQcm90ZWN0aW9uU3Bh
Y2UmIHNwYWNlKQogeworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPCAxMDEyMDApCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJs
ZURhdGEgYWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXJG
cm9tTXV0YWJsZURhdGEoZGF0YS5nZXQoKSk7CisgICAgYXV0byBhcmNoaXZlciA9IGFkb3B0TlMo
W1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFibGVEYXRhOmRh
dGEuZ2V0KCldKTsKKyAgICBbYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsK
ICAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnNwYWNlLm5zU3BhY2UoKSBmb3JLZXk6QCJwcm90
ZWN0aW9uU3BhY2UiXTsKICAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOwogICAgIElQQzo6
ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihkYXRhLmdldCgpKSk7
CisjZWxzZQorICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOworICAgIFthcmNo
aXZlciBlbmNvZGVPYmplY3Q6c3BhY2UubnNTcGFjZSgpIGZvcktleTpAInByb3RlY3Rpb25TcGFj
ZSJdOworICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVm
PihhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSkpOworI2VuZGlmCiB9CiAKIGJvb2wgQXJndW1l
bnRDb2RlcjxQcm90ZWN0aW9uU3BhY2U+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVj
b2RlciwgUHJvdGVjdGlvblNwYWNlJiBzcGFjZSkKQEAgLTQ3NCwxMSArNDgxLDE5IEBAIHZvaWQg
QXJndW1lbnRDb2RlcjxDcmVkZW50aWFsPjo6ZW5jb2RlUGwKICAgICB9CiAKICAgICBlbmNvZGVy
IDw8IGZhbHNlOworCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA8IDEwMTIwMCkKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
RGF0YSBhbGxvY10gaW5pdF0pOwotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlckZy
b21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKKyAgICBhdXRvIGFyY2hpdmVyID0gYWRvcHROUyhb
W05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6ZGF0
YS5nZXQoKV0pOworICAgIFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOwog
ICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6bnNDcmVkZW50aWFsIGZvcktleTpAImNyZWRlbnRp
YWwiXTsKICAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOwogICAgIElQQzo6ZW5jb2RlKGVu
Y29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihkYXRhLmdldCgpKSk7CisjZWxzZQor
ICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOworICAgIFthcmNoaXZlciBlbmNv
ZGVPYmplY3Q6bnNDcmVkZW50aWFsIGZvcktleTpAImNyZWRlbnRpYWwiXTsKKyAgICBJUEM6OmVu
Y29kZShlbmNvZGVyLCByZWludGVycHJldF9jYXN0PENGRGF0YVJlZj4oYXJjaGl2ZXIuZ2V0KCku
ZW5jb2RlZERhdGEpKTsKKyNlbmRpZgogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8Q3JlZGVudGlh
bD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBDcmVkZW50aWFsJiBjcmVk
ZW50aWFsKQpAQCAtNTc1LDExICs1OTAsMTggQEAgc3RkOjpvcHRpb25hbDxLZXlwcmVzc0NvbW1h
bmQ+IEFyZ3VtZW50QwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIHZvaWQgQXJndW1l
bnRDb2RlcjxDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI+OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyJiBjb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXIpCiB7CisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA8IDEwMTIwMCkKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlRGF0YSBhbGxvY10gaW5pdF0pOwotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZl
ckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKKyAgICBhdXRvIGFyY2hpdmVyID0gYWRvcHRO
UyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6
ZGF0YS5nZXQoKV0pOworICAgIFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNd
OwogICAgIGNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5lbmNvZGUoYXJjaGl2ZXIuZ2V0KCkp
OwogICAgIFthcmNoaXZlciBmaW5pc2hFbmNvZGluZ107CiAgICAgSVBDOjplbmNvZGUoZW5jb2Rl
ciwgcmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGRhdGEuZ2V0KCkpKTsKKyNlbHNlCisgICAg
YXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7CisgICAgY29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyLmVuY29kZShhcmNoaXZlci5nZXQoKSk7CisgICAgSVBDOjplbmNvZGUoZW5jb2Rl
ciwgcmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRh
KSk7CisjZW5kaWYKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPENvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlcj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXImIGNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcikKQEAgLTYwNywxNSArNjI5LDI0IEBA
IHN0YXRpYyBOU1N0cmluZyAqZGV2aWNlQ29udGV4dEtleSgpCiAKIHZvaWQgQXJndW1lbnRDb2Rl
cjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0KQogewor
I2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAx
MDEyMDApCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2NdIGlu
aXRdKTsKLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXJGcm9tTXV0YWJsZURhdGEo
ZGF0YS5nZXQoKSk7CisgICAgYXV0byBhcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2
ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFibGVEYXRhOmRhdGEuZ2V0KCldKTsKKyAg
ICBbYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsKIAogICAgIGlmIChbZ2V0
QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2Vj
dXJlQ29kaW5nKV0pCiAgICAgICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6dGFyZ2V0LmF2T3V0
cHV0Q29udGV4dCgpIGZvcktleTpkZXZpY2VDb250ZXh0S2V5KCldOwogCiAgICAgW2FyY2hpdmVy
IGZpbmlzaEVuY29kaW5nXTsKICAgICBJUEM6OmVuY29kZShlbmNvZGVyLCByZWludGVycHJldF9j
YXN0PENGRGF0YVJlZj4oZGF0YS5nZXQoKSkpOworI2Vsc2UKKyAgICBhdXRvIGFyY2hpdmVyID0g
c2VjdXJlQXJjaGl2ZXIoKTsKIAorICAgIGlmIChbZ2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBj
b25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5nKV0pCisgICAgICAgIFth
cmNoaXZlciBlbmNvZGVPYmplY3Q6dGFyZ2V0LmF2T3V0cHV0Q29udGV4dCgpIGZvcktleTpkZXZp
Y2VDb250ZXh0S2V5KCldOworCisgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgcmVpbnRlcnByZXRf
Y2FzdDxDRkRhdGFSZWY+KGFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhKSk7CisjZW5kaWYKIH0K
IAogYm9vbCBBcmd1bWVudENvZGVyPE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZGVjb2Rl
UGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
JiB0YXJnZXQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViSGl0VGVzdFJlc3Vs
dERhdGEubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkhpdFRl
c3RSZXN1bHREYXRhLm1tCShyZXZpc2lvbiAyMjUyNzUpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvV2ViSGl0VGVzdFJlc3VsdERhdGEubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEyICs0
NSwyMCBAQCB2b2lkIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpwbGF0Zm9ybUVuY29kCiAgICAgaWYg
KCFoYXNBY3Rpb25Db250ZXh0KQogICAgICAgICByZXR1cm47CiAKKyNpZiAoUExBVEZPUk0oTUFD
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMjAwKQogICAgIGF1dG8g
ZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0byBh
cmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyRnJvbU11dGFibGVEYXRhKGRhdGEuZ2V0KCkpOworICAg
IGF1dG8gYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0Rm9y
V3JpdGluZ1dpdGhNdXRhYmxlRGF0YTpkYXRhLmdldCgpXSk7CisgICAgW2FyY2hpdmVyIHNldFJl
cXVpcmVzU2VjdXJlQ29kaW5nOllFU107CiAgICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpkZXRl
Y3RlZERhdGFBY3Rpb25Db250ZXh0LmdldCgpIGZvcktleTpAImFjdGlvbkNvbnRleHQiXTsKICAg
ICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOwogCiAgICAgSVBDOjplbmNvZGUoZW5jb2Rlciwg
cmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGRhdGEuZ2V0KCkpKTsKKyNlbHNlCisgICAgYXV0
byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7CisgICAgW2FyY2hpdmVyIGVuY29kZU9iamVj
dDpkZXRlY3RlZERhdGFBY3Rpb25Db250ZXh0LmdldCgpIGZvcktleTpAImFjdGlvbkNvbnRleHQi
XTsKKworICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVm
PihhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSkpOworI2VuZGlmCiAKICAgICBlbmNvZGVyIDw8
IGRldGVjdGVkRGF0YUJvdW5kaW5nQm94OwogICAgIGVuY29kZXIgPDwgZGV0ZWN0ZWREYXRhT3Jp
Z2luYXRpbmdQYWdlT3ZlcmxheTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1Byb2Nlc3NQb29sLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCShyZXZpc2lvbiAyMjUyNzUpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjEzLDggKzIxMywxMyBAQCAtICh2b2lkKV9zZXRPYmplY3Q6KGlkIDxOU0NvcHlp
bmcsIE5TU2VjCiB7CiAgICAgYXV0byBjb3B5ID0gYWRvcHROUyhbKE5TT2JqZWN0ICopb2JqZWN0
IGNvcHldKTsKIAorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPCAxMDEyMDApCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURh
dGEgYWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIGtleWVkQXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZl
ckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKKyAgICBhdXRvIGtleWVkQXJjaGl2ZXIgPSBh
ZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yV3JpdGluZ1dpdGhNdXRhYmxl
RGF0YTpkYXRhLmdldCgpXSk7CisgICAgW2tleWVkQXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVD
b2Rpbmc6WUVTXTsKKyNlbHNlCisgICAgYXV0byBrZXllZEFyY2hpdmVyID0gc2VjdXJlQXJjaGl2
ZXIoKTsKKyNlbmRpZgogCiAgICAgQHRyeSB7CiAgICAgICAgIFtrZXllZEFyY2hpdmVyIGVuY29k
ZU9iamVjdDpjb3B5LmdldCgpIGZvcktleTpAInBhcmFtZXRlciJdOwpAQCAtMjI4LDE1ICsyMzMs
MjQgQEAgLSAodm9pZClfc2V0T2JqZWN0OihpZCA8TlNDb3B5aW5nLCBOU1NlYwogICAgIGVsc2UK
ICAgICAgICAgW19wcm9jZXNzUG9vbC0+ZW5zdXJlQnVuZGxlUGFyYW1ldGVycygpIHJlbW92ZU9i
amVjdEZvcktleTpwYXJhbWV0ZXJdOwogCi0gICAgX3Byb2Nlc3NQb29sLT5zZW5kVG9BbGxQcm9j
ZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldEluamVjdGVkQnVuZGxlUGFyYW1ldGVyKHBh
cmFtZXRlciwgSVBDOjpEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihb
ZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKSkpOworI2lmICghUExBVEZPUk0oTUFDKSB8fCBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMCkKKyAgICBhdXRvIGRhdGEg
PSBrZXllZEFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhOworI2VuZGlmCisKKyAgICBfcHJvY2Vz
c1Bvb2wtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0SW5qZWN0
ZWRCdW5kbGVQYXJhbWV0ZXIocGFyYW1ldGVyLCBJUEM6OkRhdGFSZWZlcmVuY2Uoc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCkpKTsKIH0KIAogLSAo
dm9pZClfc2V0T2JqZWN0c0ZvckJ1bmRsZVBhcmFtZXRlcnNXaXRoRGljdGlvbmFyeTooTlNEaWN0
aW9uYXJ5ICopZGljdGlvbmFyeQogewogICAgIGF1dG8gY29weSA9IGFkb3B0TlMoW1tOU0RpY3Rp
b25hcnkgYWxsb2NdIGluaXRXaXRoRGljdGlvbmFyeTpkaWN0aW9uYXJ5IGNvcHlJdGVtczpZRVNd
KTsKIAorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPCAxMDEyMDApCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxs
b2NdIGluaXRdKTsKLSAgICBhdXRvIGtleWVkQXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlckZyb21N
dXRhYmxlRGF0YShkYXRhLmdldCgpKTsKKyAgICBhdXRvIGtleWVkQXJjaGl2ZXIgPSBhZG9wdE5T
KFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yV3JpdGluZ1dpdGhNdXRhYmxlRGF0YTpk
YXRhLmdldCgpXSk7CisgICAgW2tleWVkQXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6
WUVTXTsKKyNlbHNlCisgICAgYXV0byBrZXllZEFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsK
KyNlbmRpZgogCiAgICAgQHRyeSB7CiAgICAgICAgIFtrZXllZEFyY2hpdmVyIGVuY29kZU9iamVj
dDpjb3B5LmdldCgpIGZvcktleTpAInBhcmFtZXRlcnMiXTsKQEAgLTI0Nyw3ICsyNjEsMTEgQEAg
LSAodm9pZClfc2V0T2JqZWN0c0ZvckJ1bmRsZVBhcmFtZXRlcnNXaQogCiAgICAgW19wcm9jZXNz
UG9vbC0+ZW5zdXJlQnVuZGxlUGFyYW1ldGVycygpIHNldFZhbHVlc0ZvcktleXNXaXRoRGljdGlv
bmFyeTpjb3B5LmdldCgpXTsKIAotICAgIF9wcm9jZXNzUG9vbC0+c2VuZFRvQWxsUHJvY2Vzc2Vz
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRJbmplY3RlZEJ1bmRsZVBhcmFtZXRlcnMoSVBDOjpE
YXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBb
ZGF0YSBsZW5ndGhdKSkpOworI2lmICghUExBVEZPUk0oTUFDKSB8fCBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTIwMCkKKyAgICBhdXRvIGRhdGEgPSBrZXllZEFyY2hpdmVy
LmdldCgpLmVuY29kZWREYXRhOworI2VuZGlmCisKKyAgICBfcHJvY2Vzc1Bvb2wtPnNlbmRUb0Fs
bFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0SW5qZWN0ZWRCdW5kbGVQYXJhbWV0
ZXJzKElQQzo6RGF0YVJlZmVyZW5jZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5i
eXRlcyksIGRhdGEubGVuZ3RoKSkpOwogfQogCiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbQkocmV2aXNpb24gMjI1Mjc1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjE1LDggKzIxNSwx
NCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXCiAgICAgcGFyYW1l
dGVycy5mb250V2hpdGVsaXN0ID0gbV9mb250V2hpdGVsaXN0OwogCiAgICAgaWYgKG1fYnVuZGxl
UGFyYW1ldGVycykgeworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPCAxMDEyMDApCiAgICAgICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU011
dGFibGVEYXRhIGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIGF1dG8ga2V5ZWRBcmNoaXZlciA9IHNl
Y3VyZUFyY2hpdmVyRnJvbU11dGFibGVEYXRhKGRhdGEuZ2V0KCkpOworICAgICAgICBhdXRvIGtl
eWVkQXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yV3Jp
dGluZ1dpdGhNdXRhYmxlRGF0YTpkYXRhLmdldCgpXSk7CisKKyAgICAgICAgW2tleWVkQXJjaGl2
ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsKKyNlbHNlCisgICAgICAgIGF1dG8ga2V5
ZWRBcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7CisjZW5kaWYKIAogICAgICAgICBAdHJ5IHsK
ICAgICAgICAgICAgIFtrZXllZEFyY2hpdmVyIGVuY29kZU9iamVjdDptX2J1bmRsZVBhcmFtZXRl
cnMuZ2V0KCkgZm9yS2V5OkAicGFyYW1ldGVycyJdOwpAQCAtMjI1LDYgKzIzMSwxMCBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXCiAgICAgICAgICAgICBMT0dfRVJS
T1IoIkZhaWxlZCB0byBlbmNvZGUgYnVuZGxlIHBhcmFtZXRlcnM6ICVAIiwgZXhjZXB0aW9uKTsK
ICAgICAgICAgfQogCisjaWYgKCFQTEFURk9STShNQUMpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTAxMjAwKQorICAgICAgICBhdXRvIGRhdGEgPSByZXRhaW5QdHIoa2V5
ZWRBcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSk7CisjZW5kaWYKKwogICAgICAgICBwYXJhbWV0
ZXJzLmJ1bmRsZVBhcmFtZXRlckRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5n
KChjb25zdCB1bnNpZ25lZCBjaGFyKilbZGF0YSBieXRlc10sIFtkYXRhIGxlbmd0aF0sIFtdICh1
bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkgewogICAgICAgICAgICAgWyhOU0RhdGEg
KilkYXRhIHJlbGVhc2VdOwogICAgICAgICB9LCBkYXRhLmxlYWtSZWYoKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCShyZXZpc2lvbiAyMjUyNzUpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ4NCw4ICs0
ODQsMTMgQEAgLSAodm9pZClfc2V0Rm9ybURlbGVnYXRlOihpZCA8V0tXZWJQcm9jZQogICAgICAg
ICAgICAgaWYgKCF1c2VyT2JqZWN0KQogICAgICAgICAgICAgICAgIHJldHVybjsKIAorI2lmIChQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEyMDAp
CiAgICAgICAgICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxvY10g
aW5pdF0pOwotICAgICAgICAgICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyRnJvbU11
dGFibGVEYXRhKGRhdGEuZ2V0KCkpOworICAgICAgICAgICAgYXV0byBhcmNoaXZlciA9IGFkb3B0
TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFibGVEYXRh
OmRhdGEuZ2V0KCldKTsKKyAgICAgICAgICAgIFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNv
ZGluZzpZRVNdOworI2Vsc2UKKyAgICAgICAgICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNo
aXZlcigpOworI2VuZGlmCiAgICAgICAgICAgICBAdHJ5IHsKICAgICAgICAgICAgICAgICBbYXJj
aGl2ZXIgZW5jb2RlT2JqZWN0OnVzZXJPYmplY3QgZm9yS2V5OkAidXNlck9iamVjdCJdOwogICAg
ICAgICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKQEAgLTQ5NCw2ICs0
OTksMTAgQEAgLSAodm9pZClfc2V0Rm9ybURlbGVnYXRlOihpZCA8V0tXZWJQcm9jZQogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsKIAorI2lmICgh
UExBVEZPUk0oTUFDKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIw
MCkKKyAgICAgICAgICAgIGF1dG8gZGF0YSA9IHJldGFpblB0cihhcmNoaXZlci5nZXQoKS5lbmNv
ZGVkRGF0YSk7CisjZW5kaWYKKwogICAgICAgICAgICAgdXNlckRhdGEgPSBBUEk6OkRhdGE6OmNy
ZWF0ZVdpdGhvdXRDb3B5aW5nKFdURk1vdmUoZGF0YSkpOwogICAgICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327909</attachid>
            <date>2017-11-29 14:41:48 -0800</date>
            <delta_ts>2017-11-29 14:50:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180127-20171129144147.patch</filename>
            <type>text/plain</type>
            <size>21935</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjI1Mjg4KQorKysgU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE3LTEx
LTI5ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFBhcnQg
MjogQWRvcHQgdXBkYXRlZCBOU0tleWVkW1VuXUFyY2hpdmVyIEFQSSB3aGVuIGF2YWlsYWJsZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMTI3Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTcxMDczOD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgQVBJIHRoYXQgYWNjZXB0cyBhIHVzZXItYWxs
b2NhdGVkIE5TTXV0YWJsZURhdGEgaXMgZGVwcmVjYXRlZC4gU3dpdGNoIChmb3IgbWFjT1MgMTAu
MTIgYW5kIG5ld2VyKQorICAgICAgICB0byB0aGUgbW9kZXJuIEFQSS4gVXNlIHRoZSBvcmlnaW5h
bCBBUEkgZm9yIG1hY09TIGJ1aWxkcyBwcmlvciB0byAxMC4xMi4KKworICAgICAgICAqIHBhbC9z
cGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg6CisgICAgICAgIChzZWN1cmVBcmNoaXZlcik6
IEFkZGVkLgorICAgICAgICAoc2VjdXJlQXJjaGl2ZXJGcm9tTXV0YWJsZURhdGEpOiBEZWxldGVk
LgorCiAyMDE3LTExLTI4ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkb3B0IHVwZGF0ZWQgTlNLZXllZFtVbl1BcmNoaXZlciBBUEkgd2hlbiBhdmFpbGFi
bGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZl
clNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05T
S2V5ZWRBcmNoaXZlclNQSS5oCShyZXZpc2lvbiAyMjUyNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaAkod29ya2luZyBjb3B5KQpAQCAt
MTA0LDEwICsxMDQsMTQgQEAgaW5saW5lIGlkIF9OdWxsYWJsZSBpbnNlY3VyZWx5VW5hcmNoaXZl
TwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogfQogCi1pbmxpbmUgUmV0YWluUHRyPE5T
S2V5ZWRBcmNoaXZlcj4gc2VjdXJlQXJjaGl2ZXJGcm9tTXV0YWJsZURhdGEoTlNNdXRhYmxlRGF0
YSAqX05vbm51bGwgbXV0YWJsZURhdGEpCitpbmxpbmUgUmV0YWluUHRyPE5TS2V5ZWRBcmNoaXZl
cj4gc2VjdXJlQXJjaGl2ZXIoKQogewotICAgIE5TS2V5ZWRBcmNoaXZlciAqYXJjaGl2ZXIgPSBb
W05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6bXV0
YWJsZURhdGFdOworI2lmIFVTRShTRUNVUkVfQVJDSElWRVJfQVBJKQorICAgIE5TS2V5ZWRBcmNo
aXZlciAqYXJjaGl2ZXIgPSBbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdFJlcXVpcmluZ1Nl
Y3VyZUNvZGluZzpZRVNdOworI2Vsc2UKKyAgICBOU0tleWVkQXJjaGl2ZXIgKmFyY2hpdmVyID0g
W1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRdOwogICAgIFthcmNoaXZlciBzZXRSZXF1aXJl
c1NlY3VyZUNvZGluZzpZRVNdOworI2VuZGlmCiAgICAgcmV0dXJuIGFkb3B0TlMoYXJjaGl2ZXIp
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjI1Mjc1KQorKysgU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzOCBAQAorMjAxNy0xMS0yOSAgQnJl
bnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBQYXJ0IDI6IEFkb3B0
IHVwZGF0ZWQgTlNLZXllZFtVbl1BcmNoaXZlciBBUEkgd2hlbiBhdmFpbGFibGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDEyNworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzU3MTA3Mzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIEFQSSB0aGF0IGFjY2VwdHMgYSB1c2VyLWFsbG9jYXRlZCBO
U011dGFibGVEYXRhIGlzIGRlcHJlY2F0ZWQuIFN3aXRjaCAoZm9yIG1hY09TIDEwLjEyIGFuZCBu
ZXdlcikKKyAgICAgICAgdG8gdGhlIG1vZGVybiBBUEkuIFVzZSB0aGUgb3JpZ2luYWwgQVBJIGZv
ciBtYWNPUyBidWlsZHMgcHJpb3IgdG8gMTAuMTIuCisKKyAgICAgICAgKiBTaGFyZWQvQ29jb2Ev
RGF0YURldGVjdGlvblJlc3VsdC5tbToKKyAgICAgICAgKFdlYktpdDo6RGF0YURldGVjdGlvblJl
c3VsdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
UGF5bWVudD46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
UGF5bWVudENvbnRhY3Q+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXRob2Q+OjplbmNvZGUpOgorICAgICAgICAq
IFNoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW06CisgICAgICAg
IChXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAqIFNoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFByb3RlY3Rpb25TcGFjZT46OmVuY29kZVBsYXRmb3Jt
RGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q3JlZGVudGlhbD46OmVuY29kZVBs
YXRmb3JtRGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmVuY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICog
U2hhcmVkL21hYy9XZWJIaXRUZXN0UmVzdWx0RGF0YS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SGl0VGVzdFJlc3VsdERhdGE6OnBsYXRmb3JtRW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bv
b2wgX3NldE9iamVjdDpmb3JCdW5kbGVQYXJhbWV0ZXI6XSk6CisgICAgICAgICgtW1dLUHJvY2Vz
c1Bvb2wgX3NldE9iamVjdHNGb3JCdW5kbGVQYXJhbWV0ZXJzV2l0aERpY3Rpb25hcnk6XSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNz
UGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgX3NldEZvcm1EZWxlZ2F0ZTpdKToKKwog
MjAxNy0xMS0yOSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgUkVHUkVTU0lPTihyMjE4MDY0KTogW0dUS10gQnJva2UgZW50ZXJpbmcgZnVsbHNj
cmVlbiBtb2RlIGluIGRlYnVnIGJ1aWxkcwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvRGF0YURldGVjdGlvblJlc3VsdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tCShyZXZpc2lvbiAyMjUyNzUpCisrKyBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC00MSwxMiArNDEsMTkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgRGF0
YURldGVjdGlvblJlc3VsdDo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsK
LSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGF0YT4gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVE
YXRhIGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyRnJv
bU11dGFibGVEYXRhKGRhdGEuZ2V0KCkpOworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEyMDApCisgICAgYXV0byBkYXRhID0gYWRvcHRO
UyhbW05TTXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGFyY2hpdmVyID0gYWRv
cHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdFdpdGhNdXRhYmxlRGF0YTpkYXRhLmdl
dCgpXSk7CisgICAgW2FyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107CiAgICAg
W2FyY2hpdmVyIGVuY29kZU9iamVjdDpyZXN1bHRzLmdldCgpIGZvcktleTpAImRhdGFEZXRlY3Rv
clJlc3VsdHMiXTsKICAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOwotICAgIAotICAgIElQ
Qzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihkYXRhLmdldCgp
KSk7ICAgICAgICAKKworICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8
Q0ZEYXRhUmVmPihkYXRhLmdldCgpKSk7CisjZWxzZQorICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1
cmVBcmNoaXZlcigpOworICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6cmVzdWx0cy5nZXQoKSBm
b3JLZXk6QCJkYXRhRGV0ZWN0b3JSZXN1bHRzIl07CisgICAgSVBDOjplbmNvZGUoZW5jb2Rlciwg
cmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhKSk7
CisjZW5kaWYKIH0KIAogYm9vbCBEYXRhRGV0ZWN0aW9uUmVzdWx0OjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyLCBEYXRhRGV0ZWN0aW9uUmVzdWx0JiByZXN1bHQpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnND
b2NvYS5tbQkocmV2aXNpb24gMjI1Mjc1KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
V2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTUxLDEyICs1
MSwyMiBAQCBuYW1lc3BhY2UgSVBDIHsKIAogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBh
eW1lbnQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UGF5bWVudCYg
cGF5bWVudCkKIHsKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEIDwgMTAxMjAwKQogICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVE
YXRhIGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyRnJv
bU11dGFibGVEYXRhKGRhdGEuZ2V0KCkpOworICAgIGF1dG8gYXJjaGl2ZXIgPSBhZG9wdE5TKFtb
TlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yV3JpdGluZ1dpdGhNdXRhYmxlRGF0YTpkYXRh
LmdldCgpXSk7CisKKyAgICBbYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsK
KyNlbHNlCisgICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7CisjZW5kaWYKIAog
ICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6cGF5bWVudC5wa1BheW1lbnQoKSBmb3JLZXk6TlNL
ZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKICAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2Rpbmdd
OwogCisjaWYgKCFQTEFURk9STShNQUMpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxMjAwKQorICAgIGF1dG8gZGF0YSA9IGFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRh
OworI2VuZGlmCisKICAgICBlbmNvZGVyIDw8IERhdGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOwogfQogCkBAIC0xMDMs
MTIgKzExMywyMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0CiAK
IHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50Q29udGFjdD46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQYXltZW50Q29udGFjdCYgcGF5bWVudENvbnRh
Y3QpCiB7CisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA8IDEwMTIwMCkKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBh
bGxvY10gaW5pdF0pOwotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlckZyb21NdXRh
YmxlRGF0YShkYXRhLmdldCgpKTsKKyAgICBhdXRvIGFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5
ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6ZGF0YS5nZXQo
KV0pOworCisgICAgW2FyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107CisjZWxz
ZQorICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOworI2VuZGlmCiAKICAgICBb
YXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnBheW1lbnRDb250YWN0LnBrQ29udGFjdCgpIGZvcktleTpO
U0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOwogICAgIFthcmNoaXZlciBmaW5pc2hFbmNvZGlu
Z107CiAKKyNpZiAoIVBMQVRGT1JNKE1BQykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDEyMDApCisgICAgYXV0byBkYXRhID0gYXJjaGl2ZXIuZ2V0KCkuZW5jb2RlZERh
dGE7CisjZW5kaWYKKwogICAgIGVuY29kZXIgPDwgRGF0YVJlZmVyZW5jZShzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CiB9CiAKQEAgLTE2
MSwxMiArMTgxLDIyIEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEVycm9yPiBBcmcK
IAogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vz
c2lvbiYgcGF5bWVudE1lcmNoYW50U2Vzc2lvbikKIHsKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMjAwKQogICAgIGF1dG8gZGF0YSA9
IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0byBhcmNoaXZl
ciA9IHNlY3VyZUFyY2hpdmVyRnJvbU11dGFibGVEYXRhKGRhdGEuZ2V0KCkpOworICAgIGF1dG8g
YXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yV3JpdGlu
Z1dpdGhNdXRhYmxlRGF0YTpkYXRhLmdldCgpXSk7CisKKyAgICBbYXJjaGl2ZXIgc2V0UmVxdWly
ZXNTZWN1cmVDb2Rpbmc6WUVTXTsKKyNlbHNlCisgICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFy
Y2hpdmVyKCk7CisjZW5kaWYKIAogICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6cGF5bWVudE1l
cmNoYW50U2Vzc2lvbi5wa1BheW1lbnRNZXJjaGFudFNlc3Npb24oKSBmb3JLZXk6TlNLZXllZEFy
Y2hpdmVSb290T2JqZWN0S2V5XTsKICAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOwogCisj
aWYgKCFQTEFURk9STShNQUMpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTAxMjAwKQorICAgIGF1dG8gZGF0YSA9IGFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhOworI2Vu
ZGlmCisKICAgICBlbmNvZGVyIDw8IERhdGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOwogfQogCkBAIC0xOTIsMTIgKzIy
MiwyMiBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1lcmNoCiAKIHZvaWQg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWV0aG9kPjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXRob2QmIHBheW1lbnRNZXRob2QpCiB7Cisj
aWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEw
MTIwMCkKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5p
dF0pOwotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlckZyb21NdXRhYmxlRGF0YShk
YXRhLmdldCgpKTsKKyAgICBhdXRvIGFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZl
ciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6ZGF0YS5nZXQoKV0pOworCisg
ICAgW2FyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107CisjZWxzZQorICAgIGF1
dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOworI2VuZGlmCiAKICAgICBbYXJjaGl2ZXIg
ZW5jb2RlT2JqZWN0OnBheW1lbnRNZXRob2QucGtQYXltZW50TWV0aG9kKCkgZm9yS2V5Ok5TS2V5
ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CiAgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsK
IAorI2lmICghUExBVEZPUk0oTUFDKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTIwMCkKKyAgICBhdXRvIGRhdGEgPSBhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YTsK
KyNlbmRpZgorCiAgICAgZW5jb2RlciA8PCBEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKIH0KIApJbmRleDogU291
cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9y
bWF0aW9uQXRQb3NpdGlvbi5tbQkocmV2aXNpb24gMjI1Mjc1KQorKysgU291cmNlL1dlYktpdC9T
aGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC03MywxMiArNzMsMTkgQEAgdm9pZCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbjo6ZQogICAgIGVuY29kZXIgPDwgaXNEYXRhRGV0ZWN0b3JMaW5rOwogICAgIGlmIChpc0Rh
dGFEZXRlY3RvckxpbmspIHsKICAgICAgICAgZW5jb2RlciA8PCBkYXRhRGV0ZWN0b3JJZGVudGlm
aWVyOworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPCAxMDEyMDApCiAgICAgICAgIFJldGFpblB0cjxOU011dGFibGVEYXRhPiBkYXRhID0gYWRv
cHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKICAgICAgICAgYXV0byBhcmNoaXZl
ciA9IHNlY3VyZUFyY2hpdmVyRnJvbU11dGFibGVEYXRhKGRhdGEuZ2V0KCkpOwogICAgICAgICBb
YXJjaGl2ZXIgZW5jb2RlT2JqZWN0OmRhdGFEZXRlY3RvclJlc3VsdHMuZ2V0KCkgZm9yS2V5OkAi
ZGF0YURldGVjdG9yUmVzdWx0cyJdOwogICAgICAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2Rpbmdd
OwogICAgICAgICAKLSAgICAgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgcmVpbnRlcnByZXRfY2Fz
dDxDRkRhdGFSZWY+KGRhdGEuZ2V0KCkpKTsgICAgICAgIAorICAgICAgICBJUEM6OmVuY29kZShl
bmNvZGVyLCByZWludGVycHJldF9jYXN0PENGRGF0YVJlZj4oZGF0YS5nZXQoKSkpOworI2Vsc2UK
KyAgICAgICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7CisgICAgICAgIFthcmNo
aXZlciBlbmNvZGVPYmplY3Q6ZGF0YURldGVjdG9yUmVzdWx0cy5nZXQoKSBmb3JLZXk6QCJkYXRh
RGV0ZWN0b3JSZXN1bHRzIl07CisKKyAgICAgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgcmVpbnRl
cnByZXRfY2FzdDxDRkRhdGFSZWY+KGFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhKSk7CisjZW5k
aWYKICAgICB9CiAjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJD
b3JlQXJndW1lbnRDb2RlcnNNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQkocmV2aXNpb24gMjI1Mjc1KQorKysg
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtNDI5LDExICs0MjksMTggQEAgYm9vbCBBcmd1bWVudENvZGVyPFJlc291
cmNlRXJyb3I+OjpkZWNvZAogCiB2b2lkIEFyZ3VtZW50Q29kZXI8UHJvdGVjdGlvblNwYWNlPjo6
ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFByb3RlY3Rpb25TcGFj
ZSYgc3BhY2UpCiB7CisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA8IDEwMTIwMCkKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
RGF0YSBhbGxvY10gaW5pdF0pOwotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlckZy
b21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKKyAgICBhdXRvIGFyY2hpdmVyID0gYWRvcHROUyhb
W05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6ZGF0
YS5nZXQoKV0pOworICAgIFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOwog
ICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6c3BhY2UubnNTcGFjZSgpIGZvcktleTpAInByb3Rl
Y3Rpb25TcGFjZSJdOwogICAgIFthcmNoaXZlciBmaW5pc2hFbmNvZGluZ107CiAgICAgSVBDOjpl
bmNvZGUoZW5jb2RlciwgcmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGRhdGEuZ2V0KCkpKTsK
KyNlbHNlCisgICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7CisgICAgW2FyY2hp
dmVyIGVuY29kZU9iamVjdDpzcGFjZS5uc1NwYWNlKCkgZm9yS2V5OkAicHJvdGVjdGlvblNwYWNl
Il07CisgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgcmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+
KGFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhKSk7CisjZW5kaWYKIH0KIAogYm9vbCBBcmd1bWVu
dENvZGVyPFByb3RlY3Rpb25TcGFjZT46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNv
ZGVyLCBQcm90ZWN0aW9uU3BhY2UmIHNwYWNlKQpAQCAtNDc0LDExICs0ODEsMTkgQEAgdm9pZCBB
cmd1bWVudENvZGVyPENyZWRlbnRpYWw+OjplbmNvZGVQbAogICAgIH0KIAogICAgIGVuY29kZXIg
PDwgZmFsc2U7CisKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEIDwgMTAxMjAwKQogICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVE
YXRhIGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyRnJv
bU11dGFibGVEYXRhKGRhdGEuZ2V0KCkpOworICAgIGF1dG8gYXJjaGl2ZXIgPSBhZG9wdE5TKFtb
TlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yV3JpdGluZ1dpdGhNdXRhYmxlRGF0YTpkYXRh
LmdldCgpXSk7CisgICAgW2FyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107CiAg
ICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpuc0NyZWRlbnRpYWwgZm9yS2V5OkAiY3JlZGVudGlh
bCJdOwogICAgIFthcmNoaXZlciBmaW5pc2hFbmNvZGluZ107CiAgICAgSVBDOjplbmNvZGUoZW5j
b2RlciwgcmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGRhdGEuZ2V0KCkpKTsKKyNlbHNlCisg
ICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7CisgICAgW2FyY2hpdmVyIGVuY29k
ZU9iamVjdDpuc0NyZWRlbnRpYWwgZm9yS2V5OkAiY3JlZGVudGlhbCJdOworICAgIElQQzo6ZW5j
b2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihhcmNoaXZlci5nZXQoKS5l
bmNvZGVkRGF0YSkpOworI2VuZGlmCiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxDcmVkZW50aWFs
Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIsIENyZWRlbnRpYWwmIGNyZWRl
bnRpYWwpCkBAIC01NzUsMTEgKzU5MCwxOCBAQCBzdGQ6Om9wdGlvbmFsPEtleXByZXNzQ29tbWFu
ZD4gQXJndW1lbnRDCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogdm9pZCBBcmd1bWVu
dENvZGVyPENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcj46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImIGNvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlcikKIHsKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEIDwgMTAxMjAwKQogICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFi
bGVEYXRhIGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVy
RnJvbU11dGFibGVEYXRhKGRhdGEuZ2V0KCkpOworICAgIGF1dG8gYXJjaGl2ZXIgPSBhZG9wdE5T
KFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yV3JpdGluZ1dpdGhNdXRhYmxlRGF0YTpk
YXRhLmdldCgpXSk7CisgICAgW2FyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107
CiAgICAgY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmVuY29kZShhcmNoaXZlci5nZXQoKSk7
CiAgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsKICAgICBJUEM6OmVuY29kZShlbmNvZGVy
LCByZWludGVycHJldF9jYXN0PENGRGF0YVJlZj4oZGF0YS5nZXQoKSkpOworI2Vsc2UKKyAgICBh
dXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKKyAgICBjb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXIuZW5jb2RlKGFyY2hpdmVyLmdldCgpKTsKKyAgICBJUEM6OmVuY29kZShlbmNvZGVy
LCByZWludGVycHJldF9jYXN0PENGRGF0YVJlZj4oYXJjaGl2ZXIuZ2V0KCkuZW5jb2RlZERhdGEp
KTsKKyNlbmRpZgogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8Q29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlciYgY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyKQpAQCAtNjA3LDE1ICs2MjksMjQgQEAg
c3RhdGljIE5TU3RyaW5nICpkZXZpY2VDb250ZXh0S2V5KCkKIAogdm9pZCBBcmd1bWVudENvZGVy
PE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQpCiB7Cisj
aWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEw
MTIwMCkKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5p
dF0pOwotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlckZyb21NdXRhYmxlRGF0YShk
YXRhLmdldCgpKTsKKyAgICBhdXRvIGFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZl
ciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6ZGF0YS5nZXQoKV0pOworICAg
IFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOwogCiAgICAgaWYgKFtnZXRB
Vk91dHB1dENvbnRleHRDbGFzcygpIGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woTlNTZWN1
cmVDb2RpbmcpXSkKICAgICAgICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDp0YXJnZXQuYXZPdXRw
dXRDb250ZXh0KCkgZm9yS2V5OmRldmljZUNvbnRleHRLZXkoKV07CiAKICAgICBbYXJjaGl2ZXIg
ZmluaXNoRW5jb2RpbmddOwogICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nh
c3Q8Q0ZEYXRhUmVmPihkYXRhLmdldCgpKSk7CisjZWxzZQorICAgIGF1dG8gYXJjaGl2ZXIgPSBz
ZWN1cmVBcmNoaXZlcigpOwogCisgICAgaWYgKFtnZXRBVk91dHB1dENvbnRleHRDbGFzcygpIGNv
bmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woTlNTZWN1cmVDb2RpbmcpXSkKKyAgICAgICAgW2Fy
Y2hpdmVyIGVuY29kZU9iamVjdDp0YXJnZXQuYXZPdXRwdXRDb250ZXh0KCkgZm9yS2V5OmRldmlj
ZUNvbnRleHRLZXkoKV07CisKKyAgICBJUEM6OmVuY29kZShlbmNvZGVyLCByZWludGVycHJldF9j
YXN0PENGRGF0YVJlZj4oYXJjaGl2ZXIuZ2V0KCkuZW5jb2RlZERhdGEpKTsKKyNlbmRpZgogfQog
CiBib29sIEFyZ3VtZW50Q29kZXI8TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGVQ
bGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlciwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQm
IHRhcmdldCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJIaXRUZXN0UmVzdWx0
RGF0YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViSGl0VGVz
dFJlc3VsdERhdGEubW0JKHJldmlzaW9uIDIyNTI3NSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9XZWJIaXRUZXN0UmVzdWx0RGF0YS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDUsMTIgKzQ1
LDIwIEBAIHZvaWQgV2ViSGl0VGVzdFJlc3VsdERhdGE6OnBsYXRmb3JtRW5jb2QKICAgICBpZiAo
IWhhc0FjdGlvbkNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAorI2lmIChQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEyMDApCiAgICAgYXV0byBk
YXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIGFy
Y2hpdmVyID0gc2VjdXJlQXJjaGl2ZXJGcm9tTXV0YWJsZURhdGEoZGF0YS5nZXQoKSk7CisgICAg
YXV0byBhcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JX
cml0aW5nV2l0aE11dGFibGVEYXRhOmRhdGEuZ2V0KCldKTsKKyAgICBbYXJjaGl2ZXIgc2V0UmVx
dWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsKICAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OmRldGVj
dGVkRGF0YUFjdGlvbkNvbnRleHQuZ2V0KCkgZm9yS2V5OkAiYWN0aW9uQ29udGV4dCJdOwogICAg
IFthcmNoaXZlciBmaW5pc2hFbmNvZGluZ107CiAKICAgICBJUEM6OmVuY29kZShlbmNvZGVyLCBy
ZWludGVycHJldF9jYXN0PENGRGF0YVJlZj4oZGF0YS5nZXQoKSkpOworI2Vsc2UKKyAgICBhdXRv
IGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKKyAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0
OmRldGVjdGVkRGF0YUFjdGlvbkNvbnRleHQuZ2V0KCkgZm9yS2V5OkAiYWN0aW9uQ29udGV4dCJd
OworCisgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgcmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+
KGFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhKSk7CisjZW5kaWYKIAogICAgIGVuY29kZXIgPDwg
ZGV0ZWN0ZWREYXRhQm91bmRpbmdCb3g7CiAgICAgZW5jb2RlciA8PCBkZXRlY3RlZERhdGFPcmln
aW5hdGluZ1BhZ2VPdmVybGF5OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2wubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0JKHJldmlzaW9uIDIyNTI3NSkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yMTMsOCArMjEzLDEzIEBAIC0gKHZvaWQpX3NldE9iamVjdDooaWQgPE5TQ29weWlu
ZywgTlNTZWMKIHsKICAgICBhdXRvIGNvcHkgPSBhZG9wdE5TKFsoTlNPYmplY3QgKilvYmplY3Qg
Y29weV0pOwogCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA8IDEwMTIwMCkKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0
YSBhbGxvY10gaW5pdF0pOwotICAgIGF1dG8ga2V5ZWRBcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVy
RnJvbU11dGFibGVEYXRhKGRhdGEuZ2V0KCkpOworICAgIGF1dG8ga2V5ZWRBcmNoaXZlciA9IGFk
b3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFibGVE
YXRhOmRhdGEuZ2V0KCldKTsKKyAgICBba2V5ZWRBcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNv
ZGluZzpZRVNdOworI2Vsc2UKKyAgICBhdXRvIGtleWVkQXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZl
cigpOworI2VuZGlmCiAKICAgICBAdHJ5IHsKICAgICAgICAgW2tleWVkQXJjaGl2ZXIgZW5jb2Rl
T2JqZWN0OmNvcHkuZ2V0KCkgZm9yS2V5OkAicGFyYW1ldGVyIl07CkBAIC0yMjgsMTUgKzIzMywy
NCBAQCAtICh2b2lkKV9zZXRPYmplY3Q6KGlkIDxOU0NvcHlpbmcsIE5TU2VjCiAgICAgZWxzZQog
ICAgICAgICBbX3Byb2Nlc3NQb29sLT5lbnN1cmVCdW5kbGVQYXJhbWV0ZXJzKCkgcmVtb3ZlT2Jq
ZWN0Rm9yS2V5OnBhcmFtZXRlcl07CiAKLSAgICBfcHJvY2Vzc1Bvb2wtPnNlbmRUb0FsbFByb2Nl
c3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0SW5qZWN0ZWRCdW5kbGVQYXJhbWV0ZXIocGFy
YW1ldGVyLCBJUEM6OkRhdGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtk
YXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pKSk7CisjaWYgKCFQTEFURk9STShNQUMpIHx8IF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwKQorICAgIGF1dG8gZGF0YSA9
IGtleWVkQXJjaGl2ZXIuZ2V0KCkuZW5jb2RlZERhdGE7CisjZW5kaWYKKworICAgIF9wcm9jZXNz
UG9vbC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRJbmplY3Rl
ZEJ1bmRsZVBhcmFtZXRlcihwYXJhbWV0ZXIsIElQQzo6RGF0YVJlZmVyZW5jZShzdGF0aWNfY2Fz
dDxjb25zdCB1aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoKSkpOwogfQogCiAtICh2
b2lkKV9zZXRPYmplY3RzRm9yQnVuZGxlUGFyYW1ldGVyc1dpdGhEaWN0aW9uYXJ5OihOU0RpY3Rp
b25hcnkgKilkaWN0aW9uYXJ5CiB7CiAgICAgYXV0byBjb3B5ID0gYWRvcHROUyhbW05TRGljdGlv
bmFyeSBhbGxvY10gaW5pdFdpdGhEaWN0aW9uYXJ5OmRpY3Rpb25hcnkgY29weUl0ZW1zOllFU10p
OwogCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA8IDEwMTIwMCkKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxv
Y10gaW5pdF0pOwotICAgIGF1dG8ga2V5ZWRBcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyRnJvbU11
dGFibGVEYXRhKGRhdGEuZ2V0KCkpOworICAgIGF1dG8ga2V5ZWRBcmNoaXZlciA9IGFkb3B0TlMo
W1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFibGVEYXRhOmRh
dGEuZ2V0KCldKTsKKyAgICBba2V5ZWRBcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZ
RVNdOworI2Vsc2UKKyAgICBhdXRvIGtleWVkQXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOwor
I2VuZGlmCiAKICAgICBAdHJ5IHsKICAgICAgICAgW2tleWVkQXJjaGl2ZXIgZW5jb2RlT2JqZWN0
OmNvcHkuZ2V0KCkgZm9yS2V5OkAicGFyYW1ldGVycyJdOwpAQCAtMjQ3LDcgKzI2MSwxMSBAQCAt
ICh2b2lkKV9zZXRPYmplY3RzRm9yQnVuZGxlUGFyYW1ldGVyc1dpCiAKICAgICBbX3Byb2Nlc3NQ
b29sLT5lbnN1cmVCdW5kbGVQYXJhbWV0ZXJzKCkgc2V0VmFsdWVzRm9yS2V5c1dpdGhEaWN0aW9u
YXJ5OmNvcHkuZ2V0KCldOwogCi0gICAgX3Byb2Nlc3NQb29sLT5zZW5kVG9BbGxQcm9jZXNzZXMo
TWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldEluamVjdGVkQnVuZGxlUGFyYW1ldGVycyhJUEM6OkRh
dGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtk
YXRhIGxlbmd0aF0pKSk7CisjaWYgKCFQTEFURk9STShNQUMpIHx8IF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwKQorICAgIGF1dG8gZGF0YSA9IGtleWVkQXJjaGl2ZXIu
Z2V0KCkuZW5jb2RlZERhdGE7CisjZW5kaWYKKworICAgIF9wcm9jZXNzUG9vbC0+c2VuZFRvQWxs
UHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRJbmplY3RlZEJ1bmRsZVBhcmFtZXRl
cnMoSVBDOjpEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5
dGVzKSwgZGF0YS5sZW5ndGgpKSk7CiB9CiAKICNpZiAhVEFSR0VUX09TX0lQSE9ORQpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENv
Y29hLm1tCShyZXZpc2lvbiAyMjUyNzUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsOCArMjE1LDE0
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVcKICAgICBwYXJhbWV0
ZXJzLmZvbnRXaGl0ZWxpc3QgPSBtX2ZvbnRXaGl0ZWxpc3Q7CiAKICAgICBpZiAobV9idW5kbGVQ
YXJhbWV0ZXJzKSB7CisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA8IDEwMTIwMCkKICAgICAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0
YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgYXV0byBrZXllZEFyY2hpdmVyID0gc2Vj
dXJlQXJjaGl2ZXJGcm9tTXV0YWJsZURhdGEoZGF0YS5nZXQoKSk7CisgICAgICAgIGF1dG8ga2V5
ZWRBcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0
aW5nV2l0aE11dGFibGVEYXRhOmRhdGEuZ2V0KCldKTsKKworICAgICAgICBba2V5ZWRBcmNoaXZl
ciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOworI2Vsc2UKKyAgICAgICAgYXV0byBrZXll
ZEFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKKyNlbmRpZgogCiAgICAgICAgIEB0cnkgewog
ICAgICAgICAgICAgW2tleWVkQXJjaGl2ZXIgZW5jb2RlT2JqZWN0Om1fYnVuZGxlUGFyYW1ldGVy
cy5nZXQoKSBmb3JLZXk6QCJwYXJhbWV0ZXJzIl07CkBAIC0yMjUsNiArMjMxLDEwIEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVcKICAgICAgICAgICAgIExPR19FUlJP
UigiRmFpbGVkIHRvIGVuY29kZSBidW5kbGUgcGFyYW1ldGVyczogJUAiLCBleGNlcHRpb24pOwog
ICAgICAgICB9CiAKKyNpZiAoIVBMQVRGT1JNKE1BQykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEyMDApCisgICAgICAgIGF1dG8gZGF0YSA9IHJldGFpblB0cihrZXll
ZEFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhKTsKKyNlbmRpZgorCiAgICAgICAgIHBhcmFtZXRl
cnMuYnVuZGxlUGFyYW1ldGVyRGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmco
KGNvbnN0IHVuc2lnbmVkIGNoYXIqKVtkYXRhIGJ5dGVzXSwgW2RhdGEgbGVuZ3RoXSwgW10gKHVu
c2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKSB7CiAgICAgICAgICAgICBbKE5TRGF0YSAq
KWRhdGEgcmVsZWFzZV07CiAgICAgICAgIH0sIGRhdGEubGVha1JlZigpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1Bs
dWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0JKHJldmlzaW9uIDIyNTI3NSkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNDg0LDggKzQ4
NCwxMyBAQCAtICh2b2lkKV9zZXRGb3JtRGVsZWdhdGU6KGlkIDxXS1dlYlByb2NlCiAgICAgICAg
ICAgICBpZiAoIXVzZXJPYmplY3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCisjaWYgKFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTIwMCkK
ICAgICAgICAgICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBp
bml0XSk7Ci0gICAgICAgICAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXJGcm9tTXV0
YWJsZURhdGEoZGF0YS5nZXQoKSk7CisgICAgICAgICAgICBhdXRvIGFyY2hpdmVyID0gYWRvcHRO
UyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6
ZGF0YS5nZXQoKV0pOworICAgICAgICAgICAgW2FyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29k
aW5nOllFU107CisjZWxzZQorICAgICAgICAgICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hp
dmVyKCk7CisjZW5kaWYKICAgICAgICAgICAgIEB0cnkgewogICAgICAgICAgICAgICAgIFthcmNo
aXZlciBlbmNvZGVPYmplY3Q6dXNlck9iamVjdCBmb3JLZXk6QCJ1c2VyT2JqZWN0Il07CiAgICAg
ICAgICAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewpAQCAtNDk0LDYgKzQ5
OSwxMCBAQCAtICh2b2lkKV9zZXRGb3JtRGVsZWdhdGU6KGlkIDxXS1dlYlByb2NlCiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOwogCisjaWYgKCFQ
TEFURk9STShNQUMpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAw
KQorICAgICAgICAgICAgYXV0byBkYXRhID0gcmV0YWluUHRyKGFyY2hpdmVyLmdldCgpLmVuY29k
ZWREYXRhKTsKKyNlbmRpZgorCiAgICAgICAgICAgICB1c2VyRGF0YSA9IEFQSTo6RGF0YTo6Y3Jl
YXRlV2l0aG91dENvcHlpbmcoV1RGTW92ZShkYXRhKSk7CiAgICAgICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327913</attachid>
            <date>2017-11-29 14:51:26 -0800</date>
            <delta_ts>2017-11-29 15:00:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180127-20171129145125.patch</filename>
            <type>text/plain</type>
            <size>21945</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjI1Mjg4KQorKysgU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE3LTEx
LTI5ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFBhcnQg
MjogQWRvcHQgdXBkYXRlZCBOU0tleWVkW1VuXUFyY2hpdmVyIEFQSSB3aGVuIGF2YWlsYWJsZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMTI3Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTcxMDczOD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgQVBJIHRoYXQgYWNjZXB0cyBhIHVzZXItYWxs
b2NhdGVkIE5TTXV0YWJsZURhdGEgaXMgZGVwcmVjYXRlZC4gU3dpdGNoIChmb3IgbWFjT1MgMTAu
MTIgYW5kIG5ld2VyKQorICAgICAgICB0byB0aGUgbW9kZXJuIEFQSS4gVXNlIHRoZSBvcmlnaW5h
bCBBUEkgZm9yIG1hY09TIGJ1aWxkcyBwcmlvciB0byAxMC4xMi4KKworICAgICAgICAqIHBhbC9z
cGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg6CisgICAgICAgIChzZWN1cmVBcmNoaXZlcik6
IEFkZGVkLgorICAgICAgICAoc2VjdXJlQXJjaGl2ZXJGcm9tTXV0YWJsZURhdGEpOiBEZWxldGVk
LgorCiAyMDE3LTExLTI4ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkb3B0IHVwZGF0ZWQgTlNLZXllZFtVbl1BcmNoaXZlciBBUEkgd2hlbiBhdmFpbGFi
bGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZl
clNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05T
S2V5ZWRBcmNoaXZlclNQSS5oCShyZXZpc2lvbiAyMjUyNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaAkod29ya2luZyBjb3B5KQpAQCAt
MTA0LDEwICsxMDQsMTQgQEAgaW5saW5lIGlkIF9OdWxsYWJsZSBpbnNlY3VyZWx5VW5hcmNoaXZl
TwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogfQogCi1pbmxpbmUgUmV0YWluUHRyPE5T
S2V5ZWRBcmNoaXZlcj4gc2VjdXJlQXJjaGl2ZXJGcm9tTXV0YWJsZURhdGEoTlNNdXRhYmxlRGF0
YSAqX05vbm51bGwgbXV0YWJsZURhdGEpCitpbmxpbmUgUmV0YWluUHRyPE5TS2V5ZWRBcmNoaXZl
cj4gc2VjdXJlQXJjaGl2ZXIoKQogewotICAgIE5TS2V5ZWRBcmNoaXZlciAqYXJjaGl2ZXIgPSBb
W05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6bXV0
YWJsZURhdGFdOworI2lmIFVTRShTRUNVUkVfQVJDSElWRVJfQVBJKQorICAgIE5TS2V5ZWRBcmNo
aXZlciAqYXJjaGl2ZXIgPSBbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdFJlcXVpcmluZ1Nl
Y3VyZUNvZGluZzpZRVNdOworI2Vsc2UKKyAgICBOU0tleWVkQXJjaGl2ZXIgKmFyY2hpdmVyID0g
W1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRdOwogICAgIFthcmNoaXZlciBzZXRSZXF1aXJl
c1NlY3VyZUNvZGluZzpZRVNdOworI2VuZGlmCiAgICAgcmV0dXJuIGFkb3B0TlMoYXJjaGl2ZXIp
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjI1Mjc1KQorKysgU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzOCBAQAorMjAxNy0xMS0yOSAgQnJl
bnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBQYXJ0IDI6IEFkb3B0
IHVwZGF0ZWQgTlNLZXllZFtVbl1BcmNoaXZlciBBUEkgd2hlbiBhdmFpbGFibGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDEyNworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzU3MTA3Mzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIEFQSSB0aGF0IGFjY2VwdHMgYSB1c2VyLWFsbG9jYXRlZCBO
U011dGFibGVEYXRhIGlzIGRlcHJlY2F0ZWQuIFN3aXRjaCAoZm9yIG1hY09TIDEwLjEyIGFuZCBu
ZXdlcikKKyAgICAgICAgdG8gdGhlIG1vZGVybiBBUEkuIFVzZSB0aGUgb3JpZ2luYWwgQVBJIGZv
ciBtYWNPUyBidWlsZHMgcHJpb3IgdG8gMTAuMTIuCisKKyAgICAgICAgKiBTaGFyZWQvQ29jb2Ev
RGF0YURldGVjdGlvblJlc3VsdC5tbToKKyAgICAgICAgKFdlYktpdDo6RGF0YURldGVjdGlvblJl
c3VsdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
UGF5bWVudD46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
UGF5bWVudENvbnRhY3Q+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXRob2Q+OjplbmNvZGUpOgorICAgICAgICAq
IFNoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW06CisgICAgICAg
IChXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAqIFNoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFByb3RlY3Rpb25TcGFjZT46OmVuY29kZVBsYXRmb3Jt
RGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q3JlZGVudGlhbD46OmVuY29kZVBs
YXRmb3JtRGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmVuY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICog
U2hhcmVkL21hYy9XZWJIaXRUZXN0UmVzdWx0RGF0YS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SGl0VGVzdFJlc3VsdERhdGE6OnBsYXRmb3JtRW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bv
b2wgX3NldE9iamVjdDpmb3JCdW5kbGVQYXJhbWV0ZXI6XSk6CisgICAgICAgICgtW1dLUHJvY2Vz
c1Bvb2wgX3NldE9iamVjdHNGb3JCdW5kbGVQYXJhbWV0ZXJzV2l0aERpY3Rpb25hcnk6XSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNz
UGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgX3NldEZvcm1EZWxlZ2F0ZTpdKToKKwog
MjAxNy0xMS0yOSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgUkVHUkVTU0lPTihyMjE4MDY0KTogW0dUS10gQnJva2UgZW50ZXJpbmcgZnVsbHNj
cmVlbiBtb2RlIGluIGRlYnVnIGJ1aWxkcwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvRGF0YURldGVjdGlvblJlc3VsdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tCShyZXZpc2lvbiAyMjUyNzUpCisrKyBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC00MSwxMiArNDEsMTkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgRGF0
YURldGVjdGlvblJlc3VsdDo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsK
LSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGF0YT4gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVE
YXRhIGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyRnJv
bU11dGFibGVEYXRhKGRhdGEuZ2V0KCkpOworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEyMDApCisgICAgYXV0byBkYXRhID0gYWRvcHRO
UyhbW05TTXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGFyY2hpdmVyID0gYWRv
cHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURh
dGE6ZGF0YS5nZXQoKV0pOworICAgIFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZ
RVNdOwogICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6cmVzdWx0cy5nZXQoKSBmb3JLZXk6QCJk
YXRhRGV0ZWN0b3JSZXN1bHRzIl07CiAgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsKLSAg
ICAKLSAgICBJUEM6OmVuY29kZShlbmNvZGVyLCByZWludGVycHJldF9jYXN0PENGRGF0YVJlZj4o
ZGF0YS5nZXQoKSkpOyAgICAgICAgCisKKyAgICBJUEM6OmVuY29kZShlbmNvZGVyLCByZWludGVy
cHJldF9jYXN0PENGRGF0YVJlZj4oZGF0YS5nZXQoKSkpOworI2Vsc2UKKyAgICBhdXRvIGFyY2hp
dmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKKyAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnJlc3Vs
dHMuZ2V0KCkgZm9yS2V5OkAiZGF0YURldGVjdG9yUmVzdWx0cyJdOworICAgIElQQzo6ZW5jb2Rl
KGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihhcmNoaXZlci5nZXQoKS5lbmNv
ZGVkRGF0YSkpOworI2VuZGlmCiB9CiAKIGJvb2wgRGF0YURldGVjdGlvblJlc3VsdDo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlciwgRGF0YURldGVjdGlvblJlc3VsdCYgcmVzdWx0KQpJbmRl
eDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2Eu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzQ29jb2EubW0JKHJldmlzaW9uIDIyNTI3NSkKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC01MSwxMiArNTEsMjIgQEAgbmFtZXNwYWNlIElQQyB7CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpQYXltZW50Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6
OlBheW1lbnQmIHBheW1lbnQpCiB7CisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTIwMCkKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdF0pOwotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVB
cmNoaXZlckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKKyAgICBhdXRvIGFyY2hpdmVyID0g
YWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJs
ZURhdGE6ZGF0YS5nZXQoKV0pOworCisgICAgW2FyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29k
aW5nOllFU107CisjZWxzZQorICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOwor
I2VuZGlmCiAKICAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnBheW1lbnQucGtQYXltZW50KCkg
Zm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CiAgICAgW2FyY2hpdmVyIGZpbmlz
aEVuY29kaW5nXTsKIAorI2lmICghUExBVEZPUk0oTUFDKSB8fCBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTIwMCkKKyAgICBhdXRvIGRhdGEgPSBhcmNoaXZlci5nZXQoKS5l
bmNvZGVkRGF0YTsKKyNlbmRpZgorCiAgICAgZW5jb2RlciA8PCBEYXRhUmVmZXJlbmNlKHN0YXRp
Y19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKIH0K
IApAQCAtMTAzLDEyICsxMTMsMjIgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0
aG9yaXphdAogCiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudENvbnRhY3Q+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UGF5bWVudENvbnRhY3QmIHBh
eW1lbnRDb250YWN0KQogeworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPCAxMDEyMDApCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0
YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2
ZXJGcm9tTXV0YWJsZURhdGEoZGF0YS5nZXQoKSk7CisgICAgYXV0byBhcmNoaXZlciA9IGFkb3B0
TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFibGVEYXRh
OmRhdGEuZ2V0KCldKTsKKworICAgIFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZ
RVNdOworI2Vsc2UKKyAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKKyNlbmRp
ZgogCiAgICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpwYXltZW50Q29udGFjdC5wa0NvbnRhY3Qo
KSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKICAgICBbYXJjaGl2ZXIgZmlu
aXNoRW5jb2RpbmddOwogCisjaWYgKCFQTEFURk9STShNQUMpIHx8IF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwKQorICAgIGF1dG8gZGF0YSA9IGFyY2hpdmVyLmdldCgp
LmVuY29kZWREYXRhOworI2VuZGlmCisKICAgICBlbmNvZGVyIDw8IERhdGFSZWZlcmVuY2Uoc3Rh
dGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOwog
fQogCkBAIC0xNjEsMTIgKzE4MSwyMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRF
cnJvcj4gQXJnCiAKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRT
ZXNzaW9uPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRN
ZXJjaGFudFNlc3Npb24mIHBheW1lbnRNZXJjaGFudFNlc3Npb24pCiB7CisjaWYgKFBMQVRGT1JN
KE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTIwMCkKICAgICBh
dXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdF0pOwotICAgIGF1
dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsK
KyAgICBhdXRvIGFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5p
dEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6ZGF0YS5nZXQoKV0pOworCisgICAgW2FyY2hpdmVy
IHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107CisjZWxzZQorICAgIGF1dG8gYXJjaGl2ZXIg
PSBzZWN1cmVBcmNoaXZlcigpOworI2VuZGlmCiAKICAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0
OnBheW1lbnRNZXJjaGFudFNlc3Npb24ucGtQYXltZW50TWVyY2hhbnRTZXNzaW9uKCkgZm9yS2V5
Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CiAgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29k
aW5nXTsKIAorI2lmICghUExBVEZPUk0oTUFDKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTIwMCkKKyAgICBhdXRvIGRhdGEgPSBhcmNoaXZlci5nZXQoKS5lbmNvZGVk
RGF0YTsKKyNlbmRpZgorCiAgICAgZW5jb2RlciA8PCBEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKIH0KIApAQCAt
MTkyLDEyICsyMjIsMjIgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXJj
aAogCiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZD46OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQYXltZW50TWV0aG9kJiBwYXltZW50TWV0
aG9kKQogeworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPCAxMDEyMDApCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEg
YWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXJGcm9tTXV0
YWJsZURhdGEoZGF0YS5nZXQoKSk7CisgICAgYXV0byBhcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tl
eWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFibGVEYXRhOmRhdGEuZ2V0
KCldKTsKKworICAgIFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOworI2Vs
c2UKKyAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKKyNlbmRpZgogCiAgICAg
W2FyY2hpdmVyIGVuY29kZU9iamVjdDpwYXltZW50TWV0aG9kLnBrUGF5bWVudE1ldGhvZCgpIGZv
cktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOwogICAgIFthcmNoaXZlciBmaW5pc2hF
bmNvZGluZ107CiAKKyNpZiAoIVBMQVRGT1JNKE1BQykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEyMDApCisgICAgYXV0byBkYXRhID0gYXJjaGl2ZXIuZ2V0KCkuZW5j
b2RlZERhdGE7CisjZW5kaWYKKwogICAgIGVuY29kZXIgPDwgRGF0YVJlZmVyZW5jZShzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQ
b3NpdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJh
Y3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW0JKHJldmlzaW9uIDIyNTI3NSkKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5tbQko
d29ya2luZyBjb3B5KQpAQCAtNzMsMTIgKzczLDE5IEBAIHZvaWQgSW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb246OmUKICAgICBlbmNvZGVyIDw8IGlzRGF0YURldGVjdG9yTGluazsKICAg
ICBpZiAoaXNEYXRhRGV0ZWN0b3JMaW5rKSB7CiAgICAgICAgIGVuY29kZXIgPDwgZGF0YURldGVj
dG9ySWRlbnRpZmllcjsKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEIDwgMTAxMjAwKQogICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGF0YT4g
ZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIGF1
dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsK
ICAgICAgICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpkYXRhRGV0ZWN0b3JSZXN1bHRzLmdldCgp
IGZvcktleTpAImRhdGFEZXRlY3RvclJlc3VsdHMiXTsKICAgICAgICAgW2FyY2hpdmVyIGZpbmlz
aEVuY29kaW5nXTsKICAgICAgICAgCi0gICAgICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50
ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihkYXRhLmdldCgpKSk7ICAgICAgICAKKyAgICAgICAgSVBD
OjplbmNvZGUoZW5jb2RlciwgcmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGRhdGEuZ2V0KCkp
KTsKKyNlbHNlCisgICAgICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOworICAg
ICAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OmRhdGFEZXRlY3RvclJlc3VsdHMuZ2V0KCkgZm9y
S2V5OkAiZGF0YURldGVjdG9yUmVzdWx0cyJdOworCisgICAgICAgIElQQzo6ZW5jb2RlKGVuY29k
ZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0
YSkpOworI2VuZGlmCiAgICAgfQogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0JKHJldmlzaW9uIDIy
NTI3NSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyOSwxMSArNDI5LDE4IEBAIGJvb2wgQXJndW1lbnRD
b2RlcjxSZXNvdXJjZUVycm9yPjo6ZGVjb2QKIAogdm9pZCBBcmd1bWVudENvZGVyPFByb3RlY3Rp
b25TcGFjZT46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBQcm90
ZWN0aW9uU3BhY2UmIHNwYWNlKQogeworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEyMDApCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhb
W05TTXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJl
QXJjaGl2ZXJGcm9tTXV0YWJsZURhdGEoZGF0YS5nZXQoKSk7CisgICAgYXV0byBhcmNoaXZlciA9
IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFi
bGVEYXRhOmRhdGEuZ2V0KCldKTsKKyAgICBbYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rp
bmc6WUVTXTsKICAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnNwYWNlLm5zU3BhY2UoKSBmb3JL
ZXk6QCJwcm90ZWN0aW9uU3BhY2UiXTsKICAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOwog
ICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihkYXRh
LmdldCgpKSk7CisjZWxzZQorICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOwor
ICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6c3BhY2UubnNTcGFjZSgpIGZvcktleTpAInByb3Rl
Y3Rpb25TcGFjZSJdOworICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8
Q0ZEYXRhUmVmPihhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSkpOworI2VuZGlmCiB9CiAKIGJv
b2wgQXJndW1lbnRDb2RlcjxQcm90ZWN0aW9uU3BhY2U+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVj
b2RlciYgZGVjb2RlciwgUHJvdGVjdGlvblNwYWNlJiBzcGFjZSkKQEAgLTQ3NCwxMSArNDgxLDE5
IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxDcmVkZW50aWFsPjo6ZW5jb2RlUGwKICAgICB9CiAKICAg
ICBlbmNvZGVyIDw8IGZhbHNlOworCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTIwMCkKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdF0pOwotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVB
cmNoaXZlckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKKyAgICBhdXRvIGFyY2hpdmVyID0g
YWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJs
ZURhdGE6ZGF0YS5nZXQoKV0pOworICAgIFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGlu
ZzpZRVNdOwogICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6bnNDcmVkZW50aWFsIGZvcktleTpA
ImNyZWRlbnRpYWwiXTsKICAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOwogICAgIElQQzo6
ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihkYXRhLmdldCgpKSk7
CisjZWxzZQorICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOworICAgIFthcmNo
aXZlciBlbmNvZGVPYmplY3Q6bnNDcmVkZW50aWFsIGZvcktleTpAImNyZWRlbnRpYWwiXTsKKyAg
ICBJUEM6OmVuY29kZShlbmNvZGVyLCByZWludGVycHJldF9jYXN0PENGRGF0YVJlZj4oYXJjaGl2
ZXIuZ2V0KCkuZW5jb2RlZERhdGEpKTsKKyNlbmRpZgogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8
Q3JlZGVudGlhbD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBDcmVkZW50
aWFsJiBjcmVkZW50aWFsKQpAQCAtNTc1LDExICs1OTAsMTggQEAgc3RkOjpvcHRpb25hbDxLZXlw
cmVzc0NvbW1hbmQ+IEFyZ3VtZW50QwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIHZv
aWQgQXJndW1lbnRDb2RlcjxDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI+OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyJiBjb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXIpCiB7CisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTIwMCkKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdF0pOwotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1
cmVBcmNoaXZlckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKKyAgICBhdXRvIGFyY2hpdmVy
ID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0
YWJsZURhdGE6ZGF0YS5nZXQoKV0pOworICAgIFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNv
ZGluZzpZRVNdOwogICAgIGNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5lbmNvZGUoYXJjaGl2
ZXIuZ2V0KCkpOwogICAgIFthcmNoaXZlciBmaW5pc2hFbmNvZGluZ107CiAgICAgSVBDOjplbmNv
ZGUoZW5jb2RlciwgcmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGRhdGEuZ2V0KCkpKTsKKyNl
bHNlCisgICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7CisgICAgY29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyLmVuY29kZShhcmNoaXZlci5nZXQoKSk7CisgICAgSVBDOjplbmNv
ZGUoZW5jb2RlciwgcmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGFyY2hpdmVyLmdldCgpLmVu
Y29kZWREYXRhKSk7CisjZW5kaWYKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPENvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlcj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXImIGNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcikKQEAgLTYwNywxNSAr
NjI5LDI0IEBAIHN0YXRpYyBOU1N0cmluZyAqZGV2aWNlQ29udGV4dEtleSgpCiAKIHZvaWQgQXJn
dW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmVuY29kZVBsYXRmb3JtRGF0
YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFy
Z2V0KQogeworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPCAxMDEyMDApCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEg
YWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXJGcm9tTXV0
YWJsZURhdGEoZGF0YS5nZXQoKSk7CisgICAgYXV0byBhcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tl
eWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFibGVEYXRhOmRhdGEuZ2V0
KCldKTsKKyAgICBbYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsKIAogICAg
IGlmIChbZ2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3Rv
Y29sKE5TU2VjdXJlQ29kaW5nKV0pCiAgICAgICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6dGFy
Z2V0LmF2T3V0cHV0Q29udGV4dCgpIGZvcktleTpkZXZpY2VDb250ZXh0S2V5KCldOwogCiAgICAg
W2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsKICAgICBJUEM6OmVuY29kZShlbmNvZGVyLCByZWlu
dGVycHJldF9jYXN0PENGRGF0YVJlZj4oZGF0YS5nZXQoKSkpOworI2Vsc2UKKyAgICBhdXRvIGFy
Y2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKIAorICAgIGlmIChbZ2V0QVZPdXRwdXRDb250ZXh0
Q2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5nKV0pCisg
ICAgICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6dGFyZ2V0LmF2T3V0cHV0Q29udGV4dCgpIGZv
cktleTpkZXZpY2VDb250ZXh0S2V5KCldOworCisgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgcmVp
bnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhKSk7Cisj
ZW5kaWYKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIsIE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0JiB0YXJnZXQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViSGl0
VGVzdFJlc3VsdERhdGEubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L1dlYkhpdFRlc3RSZXN1bHREYXRhLm1tCShyZXZpc2lvbiAyMjUyNzUpCisrKyBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvV2ViSGl0VGVzdFJlc3VsdERhdGEubW0JKHdvcmtpbmcgY29weSkKQEAg
LTQ1LDEyICs0NSwyMCBAQCB2b2lkIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpwbGF0Zm9ybUVuY29k
CiAgICAgaWYgKCFoYXNBY3Rpb25Db250ZXh0KQogICAgICAgICByZXR1cm47CiAKKyNpZiAoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMjAwKQog
ICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0XSk7Ci0g
ICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyRnJvbU11dGFibGVEYXRhKGRhdGEuZ2V0
KCkpOworICAgIGF1dG8gYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9j
XSBpbml0Rm9yV3JpdGluZ1dpdGhNdXRhYmxlRGF0YTpkYXRhLmdldCgpXSk7CisgICAgW2FyY2hp
dmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107CiAgICAgW2FyY2hpdmVyIGVuY29kZU9i
amVjdDpkZXRlY3RlZERhdGFBY3Rpb25Db250ZXh0LmdldCgpIGZvcktleTpAImFjdGlvbkNvbnRl
eHQiXTsKICAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOwogCiAgICAgSVBDOjplbmNvZGUo
ZW5jb2RlciwgcmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGRhdGEuZ2V0KCkpKTsKKyNlbHNl
CisgICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7CisgICAgW2FyY2hpdmVyIGVu
Y29kZU9iamVjdDpkZXRlY3RlZERhdGFBY3Rpb25Db250ZXh0LmdldCgpIGZvcktleTpAImFjdGlv
bkNvbnRleHQiXTsKKworICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8
Q0ZEYXRhUmVmPihhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSkpOworI2VuZGlmCiAKICAgICBl
bmNvZGVyIDw8IGRldGVjdGVkRGF0YUJvdW5kaW5nQm94OwogICAgIGVuY29kZXIgPDwgZGV0ZWN0
ZWREYXRhT3JpZ2luYXRpbmdQYWdlT3ZlcmxheTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCShyZXZpc2lvbiAyMjUyNzUp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjEzLDggKzIxMywxMyBAQCAtICh2b2lkKV9zZXRPYmplY3Q6KGlk
IDxOU0NvcHlpbmcsIE5TU2VjCiB7CiAgICAgYXV0byBjb3B5ID0gYWRvcHROUyhbKE5TT2JqZWN0
ICopb2JqZWN0IGNvcHldKTsKIAorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEyMDApCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05T
TXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIGtleWVkQXJjaGl2ZXIgPSBzZWN1
cmVBcmNoaXZlckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKKyAgICBhdXRvIGtleWVkQXJj
aGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yV3JpdGluZ1dp
dGhNdXRhYmxlRGF0YTpkYXRhLmdldCgpXSk7CisgICAgW2tleWVkQXJjaGl2ZXIgc2V0UmVxdWly
ZXNTZWN1cmVDb2Rpbmc6WUVTXTsKKyNlbHNlCisgICAgYXV0byBrZXllZEFyY2hpdmVyID0gc2Vj
dXJlQXJjaGl2ZXIoKTsKKyNlbmRpZgogCiAgICAgQHRyeSB7CiAgICAgICAgIFtrZXllZEFyY2hp
dmVyIGVuY29kZU9iamVjdDpjb3B5LmdldCgpIGZvcktleTpAInBhcmFtZXRlciJdOwpAQCAtMjI4
LDE1ICsyMzMsMjQgQEAgLSAodm9pZClfc2V0T2JqZWN0OihpZCA8TlNDb3B5aW5nLCBOU1NlYwog
ICAgIGVsc2UKICAgICAgICAgW19wcm9jZXNzUG9vbC0+ZW5zdXJlQnVuZGxlUGFyYW1ldGVycygp
IHJlbW92ZU9iamVjdEZvcktleTpwYXJhbWV0ZXJdOwogCi0gICAgX3Byb2Nlc3NQb29sLT5zZW5k
VG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldEluamVjdGVkQnVuZGxlUGFy
YW1ldGVyKHBhcmFtZXRlciwgSVBDOjpEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKSkpOworI2lmICghUExBVEZPUk0o
TUFDKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMCkKKyAgICBh
dXRvIGRhdGEgPSBrZXllZEFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhOworI2VuZGlmCisKKyAg
ICBfcHJvY2Vzc1Bvb2wtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6
U2V0SW5qZWN0ZWRCdW5kbGVQYXJhbWV0ZXIocGFyYW1ldGVyLCBJUEM6OkRhdGFSZWZlcmVuY2Uo
c3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCkpKTsK
IH0KIAogLSAodm9pZClfc2V0T2JqZWN0c0ZvckJ1bmRsZVBhcmFtZXRlcnNXaXRoRGljdGlvbmFy
eTooTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeQogewogICAgIGF1dG8gY29weSA9IGFkb3B0TlMo
W1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoRGljdGlvbmFyeTpkaWN0aW9uYXJ5IGNvcHlJ
dGVtczpZRVNdKTsKIAorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPCAxMDEyMDApCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJs
ZURhdGEgYWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIGtleWVkQXJjaGl2ZXIgPSBzZWN1cmVBcmNo
aXZlckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKKyAgICBhdXRvIGtleWVkQXJjaGl2ZXIg
PSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yV3JpdGluZ1dpdGhNdXRh
YmxlRGF0YTpkYXRhLmdldCgpXSk7CisgICAgW2tleWVkQXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1
cmVDb2Rpbmc6WUVTXTsKKyNlbHNlCisgICAgYXV0byBrZXllZEFyY2hpdmVyID0gc2VjdXJlQXJj
aGl2ZXIoKTsKKyNlbmRpZgogCiAgICAgQHRyeSB7CiAgICAgICAgIFtrZXllZEFyY2hpdmVyIGVu
Y29kZU9iamVjdDpjb3B5LmdldCgpIGZvcktleTpAInBhcmFtZXRlcnMiXTsKQEAgLTI0Nyw3ICsy
NjEsMTEgQEAgLSAodm9pZClfc2V0T2JqZWN0c0ZvckJ1bmRsZVBhcmFtZXRlcnNXaQogCiAgICAg
W19wcm9jZXNzUG9vbC0+ZW5zdXJlQnVuZGxlUGFyYW1ldGVycygpIHNldFZhbHVlc0ZvcktleXNX
aXRoRGljdGlvbmFyeTpjb3B5LmdldCgpXTsKIAotICAgIF9wcm9jZXNzUG9vbC0+c2VuZFRvQWxs
UHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRJbmplY3RlZEJ1bmRsZVBhcmFtZXRl
cnMoSVBDOjpEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBi
eXRlc10pLCBbZGF0YSBsZW5ndGhdKSkpOworI2lmICghUExBVEZPUk0oTUFDKSB8fCBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMCkKKyAgICBhdXRvIGRhdGEgPSBrZXll
ZEFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhOworI2VuZGlmCisKKyAgICBfcHJvY2Vzc1Bvb2wt
PnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0SW5qZWN0ZWRCdW5k
bGVQYXJhbWV0ZXJzKElQQzo6RGF0YVJlZmVyZW5jZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoKSkpOwogfQogCiAjaWYgIVRBUkdFVF9PU19JUEhP
TkUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29j
b2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJv
Y2Vzc1Bvb2xDb2NvYS5tbQkocmV2aXNpb24gMjI1Mjc1KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjE1
LDggKzIxNSwxNCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXCiAg
ICAgcGFyYW1ldGVycy5mb250V2hpdGVsaXN0ID0gbV9mb250V2hpdGVsaXN0OwogCiAgICAgaWYg
KG1fYnVuZGxlUGFyYW1ldGVycykgeworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEyMDApCiAgICAgICAgIGF1dG8gZGF0YSA9IGFkb3B0
TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIGF1dG8ga2V5ZWRBcmNo
aXZlciA9IHNlY3VyZUFyY2hpdmVyRnJvbU11dGFibGVEYXRhKGRhdGEuZ2V0KCkpOworICAgICAg
ICBhdXRvIGtleWVkQXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBp
bml0Rm9yV3JpdGluZ1dpdGhNdXRhYmxlRGF0YTpkYXRhLmdldCgpXSk7CisKKyAgICAgICAgW2tl
eWVkQXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsKKyNlbHNlCisgICAgICAg
IGF1dG8ga2V5ZWRBcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7CisjZW5kaWYKIAogICAgICAg
ICBAdHJ5IHsKICAgICAgICAgICAgIFtrZXllZEFyY2hpdmVyIGVuY29kZU9iamVjdDptX2J1bmRs
ZVBhcmFtZXRlcnMuZ2V0KCkgZm9yS2V5OkAicGFyYW1ldGVycyJdOwpAQCAtMjI1LDYgKzIzMSwx
MCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXCiAgICAgICAgICAg
ICBMT0dfRVJST1IoIkZhaWxlZCB0byBlbmNvZGUgYnVuZGxlIHBhcmFtZXRlcnM6ICVAIiwgZXhj
ZXB0aW9uKTsKICAgICAgICAgfQogCisjaWYgKCFQTEFURk9STShNQUMpIHx8IF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwKQorICAgICAgICBhdXRvIGRhdGEgPSByZXRh
aW5QdHIoa2V5ZWRBcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSk7CisjZW5kaWYKKwogICAgICAg
ICBwYXJhbWV0ZXJzLmJ1bmRsZVBhcmFtZXRlckRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhv
dXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKilbZGF0YSBieXRlc10sIFtkYXRhIGxlbmd0
aF0sIFtdICh1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkgewogICAgICAgICAgICAg
WyhOU0RhdGEgKilkYXRhIHJlbGVhc2VdOwogICAgICAgICB9LCBkYXRhLmxlYWtSZWYoKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dl
YlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCShyZXZpc2lvbiAyMjUyNzUpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAg
LTQ4NCw4ICs0ODQsMTMgQEAgLSAodm9pZClfc2V0Rm9ybURlbGVnYXRlOihpZCA8V0tXZWJQcm9j
ZQogICAgICAgICAgICAgaWYgKCF1c2VyT2JqZWN0KQogICAgICAgICAgICAgICAgIHJldHVybjsK
IAorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
PCAxMDEyMDApCiAgICAgICAgICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0
YSBhbGxvY10gaW5pdF0pOwotICAgICAgICAgICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hp
dmVyRnJvbU11dGFibGVEYXRhKGRhdGEuZ2V0KCkpOworICAgICAgICAgICAgYXV0byBhcmNoaXZl
ciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11
dGFibGVEYXRhOmRhdGEuZ2V0KCldKTsKKyAgICAgICAgICAgIFthcmNoaXZlciBzZXRSZXF1aXJl
c1NlY3VyZUNvZGluZzpZRVNdOworI2Vsc2UKKyAgICAgICAgICAgIGF1dG8gYXJjaGl2ZXIgPSBz
ZWN1cmVBcmNoaXZlcigpOworI2VuZGlmCiAgICAgICAgICAgICBAdHJ5IHsKICAgICAgICAgICAg
ICAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnVzZXJPYmplY3QgZm9yS2V5OkAidXNlck9iamVj
dCJdOwogICAgICAgICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKQEAg
LTQ5NCw2ICs0OTksMTAgQEAgLSAodm9pZClfc2V0Rm9ybURlbGVnYXRlOihpZCA8V0tXZWJQcm9j
ZQogICAgICAgICAgICAgfQogICAgICAgICAgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsK
IAorI2lmICghUExBVEZPUk0oTUFDKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTIwMCkKKyAgICAgICAgICAgIGF1dG8gZGF0YSA9IHJldGFpblB0cihhcmNoaXZlci5n
ZXQoKS5lbmNvZGVkRGF0YSk7CisjZW5kaWYKKwogICAgICAgICAgICAgdXNlckRhdGEgPSBBUEk6
OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKFdURk1vdmUoZGF0YSkpOwogICAgICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327914</attachid>
            <date>2017-11-29 15:01:30 -0800</date>
            <delta_ts>2017-11-29 17:02:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180127-20171129150129.patch</filename>
            <type>text/plain</type>
            <size>21564</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjI1Mjg4KQorKysgU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE3LTEx
LTI5ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFBhcnQg
MjogQWRvcHQgdXBkYXRlZCBOU0tleWVkW1VuXUFyY2hpdmVyIEFQSSB3aGVuIGF2YWlsYWJsZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMTI3Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTcxMDczOD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgQVBJIHRoYXQgYWNjZXB0cyBhIHVzZXItYWxs
b2NhdGVkIE5TTXV0YWJsZURhdGEgaXMgZGVwcmVjYXRlZC4gU3dpdGNoIChmb3IgbWFjT1MgMTAu
MTIgYW5kIG5ld2VyKQorICAgICAgICB0byB0aGUgbW9kZXJuIEFQSS4gVXNlIHRoZSBvcmlnaW5h
bCBBUEkgZm9yIG1hY09TIGJ1aWxkcyBwcmlvciB0byAxMC4xMi4KKworICAgICAgICAqIHBhbC9z
cGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg6CisgICAgICAgIChzZWN1cmVBcmNoaXZlcik6
IEFkZGVkLgorICAgICAgICAoc2VjdXJlQXJjaGl2ZXJGcm9tTXV0YWJsZURhdGEpOiBEZWxldGVk
LgorCiAyMDE3LTExLTI4ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkb3B0IHVwZGF0ZWQgTlNLZXllZFtVbl1BcmNoaXZlciBBUEkgd2hlbiBhdmFpbGFi
bGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZl
clNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05T
S2V5ZWRBcmNoaXZlclNQSS5oCShyZXZpc2lvbiAyMjUyNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaAkod29ya2luZyBjb3B5KQpAQCAt
MTA0LDEwICsxMDQsMTQgQEAgaW5saW5lIGlkIF9OdWxsYWJsZSBpbnNlY3VyZWx5VW5hcmNoaXZl
TwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogfQogCi1pbmxpbmUgUmV0YWluUHRyPE5T
S2V5ZWRBcmNoaXZlcj4gc2VjdXJlQXJjaGl2ZXJGcm9tTXV0YWJsZURhdGEoTlNNdXRhYmxlRGF0
YSAqX05vbm51bGwgbXV0YWJsZURhdGEpCitpbmxpbmUgUmV0YWluUHRyPE5TS2V5ZWRBcmNoaXZl
cj4gc2VjdXJlQXJjaGl2ZXIoKQogewotICAgIE5TS2V5ZWRBcmNoaXZlciAqYXJjaGl2ZXIgPSBb
W05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6bXV0
YWJsZURhdGFdOworI2lmIFVTRShTRUNVUkVfQVJDSElWRVJfQVBJKQorICAgIE5TS2V5ZWRBcmNo
aXZlciAqYXJjaGl2ZXIgPSBbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdFJlcXVpcmluZ1Nl
Y3VyZUNvZGluZzpZRVNdOworI2Vsc2UKKyAgICBOU0tleWVkQXJjaGl2ZXIgKmFyY2hpdmVyID0g
W1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRdOwogICAgIFthcmNoaXZlciBzZXRSZXF1aXJl
c1NlY3VyZUNvZGluZzpZRVNdOworI2VuZGlmCiAgICAgcmV0dXJuIGFkb3B0TlMoYXJjaGl2ZXIp
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjI1Mjc1KQorKysgU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzOCBAQAorMjAxNy0xMS0yOSAgQnJl
bnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBQYXJ0IDI6IEFkb3B0
IHVwZGF0ZWQgTlNLZXllZFtVbl1BcmNoaXZlciBBUEkgd2hlbiBhdmFpbGFibGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDEyNworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzU3MTA3Mzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIEFQSSB0aGF0IGFjY2VwdHMgYSB1c2VyLWFsbG9jYXRlZCBO
U011dGFibGVEYXRhIGlzIGRlcHJlY2F0ZWQuIFN3aXRjaCAoZm9yIG1hY09TIDEwLjEyIGFuZCBu
ZXdlcikKKyAgICAgICAgdG8gdGhlIG1vZGVybiBBUEkuIFVzZSB0aGUgb3JpZ2luYWwgQVBJIGZv
ciBtYWNPUyBidWlsZHMgcHJpb3IgdG8gMTAuMTIuCisKKyAgICAgICAgKiBTaGFyZWQvQ29jb2Ev
RGF0YURldGVjdGlvblJlc3VsdC5tbToKKyAgICAgICAgKFdlYktpdDo6RGF0YURldGVjdGlvblJl
c3VsdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
UGF5bWVudD46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
UGF5bWVudENvbnRhY3Q+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXRob2Q+OjplbmNvZGUpOgorICAgICAgICAq
IFNoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW06CisgICAgICAg
IChXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAqIFNoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFByb3RlY3Rpb25TcGFjZT46OmVuY29kZVBsYXRmb3Jt
RGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q3JlZGVudGlhbD46OmVuY29kZVBs
YXRmb3JtRGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmVuY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICog
U2hhcmVkL21hYy9XZWJIaXRUZXN0UmVzdWx0RGF0YS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SGl0VGVzdFJlc3VsdERhdGE6OnBsYXRmb3JtRW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bv
b2wgX3NldE9iamVjdDpmb3JCdW5kbGVQYXJhbWV0ZXI6XSk6CisgICAgICAgICgtW1dLUHJvY2Vz
c1Bvb2wgX3NldE9iamVjdHNGb3JCdW5kbGVQYXJhbWV0ZXJzV2l0aERpY3Rpb25hcnk6XSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNz
UGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgX3NldEZvcm1EZWxlZ2F0ZTpdKToKKwog
MjAxNy0xMS0yOSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgUkVHUkVTU0lPTihyMjE4MDY0KTogW0dUS10gQnJva2UgZW50ZXJpbmcgZnVsbHNj
cmVlbiBtb2RlIGluIGRlYnVnIGJ1aWxkcwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvRGF0YURldGVjdGlvblJlc3VsdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tCShyZXZpc2lvbiAyMjUyNzUpCisrKyBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC00MSwxMiArNDEsMTkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgRGF0
YURldGVjdGlvblJlc3VsdDo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsK
LSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGF0YT4gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVE
YXRhIGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyRnJv
bU11dGFibGVEYXRhKGRhdGEuZ2V0KCkpOworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEyMDApCisgICAgYXV0byBkYXRhID0gYWRvcHRO
UyhbW05TTXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGFyY2hpdmVyID0gYWRv
cHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURh
dGE6ZGF0YS5nZXQoKV0pOworICAgIFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZ
RVNdOwogICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6cmVzdWx0cy5nZXQoKSBmb3JLZXk6QCJk
YXRhRGV0ZWN0b3JSZXN1bHRzIl07CiAgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsKLSAg
ICAKLSAgICBJUEM6OmVuY29kZShlbmNvZGVyLCByZWludGVycHJldF9jYXN0PENGRGF0YVJlZj4o
ZGF0YS5nZXQoKSkpOyAgICAgICAgCisKKyAgICBJUEM6OmVuY29kZShlbmNvZGVyLCByZWludGVy
cHJldF9jYXN0PENGRGF0YVJlZj4oZGF0YS5nZXQoKSkpOworI2Vsc2UKKyAgICBhdXRvIGFyY2hp
dmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKKyAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnJlc3Vs
dHMuZ2V0KCkgZm9yS2V5OkAiZGF0YURldGVjdG9yUmVzdWx0cyJdOworICAgIElQQzo6ZW5jb2Rl
KGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihhcmNoaXZlci5nZXQoKS5lbmNv
ZGVkRGF0YSkpOworI2VuZGlmCiB9CiAKIGJvb2wgRGF0YURldGVjdGlvblJlc3VsdDo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlciwgRGF0YURldGVjdGlvblJlc3VsdCYgcmVzdWx0KQpJbmRl
eDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2Eu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzQ29jb2EubW0JKHJldmlzaW9uIDIyNTI3NSkKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC01MSwxMiArNTEsMjIgQEAgbmFtZXNwYWNlIElQQyB7CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpQYXltZW50Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6
OlBheW1lbnQmIHBheW1lbnQpCiB7CisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTIwMCkKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdF0pOwotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVB
cmNoaXZlckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKKyAgICBhdXRvIGFyY2hpdmVyID0g
YWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJs
ZURhdGE6ZGF0YS5nZXQoKV0pOworCisgICAgW2FyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29k
aW5nOllFU107CisjZWxzZQorICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOwor
I2VuZGlmCiAKICAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnBheW1lbnQucGtQYXltZW50KCkg
Zm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CiAgICAgW2FyY2hpdmVyIGZpbmlz
aEVuY29kaW5nXTsKIAorI2lmICghUExBVEZPUk0oTUFDKSB8fCBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTIwMCkKKyAgICBhdXRvIGRhdGEgPSBhcmNoaXZlci5nZXQoKS5l
bmNvZGVkRGF0YTsKKyNlbmRpZgorCiAgICAgZW5jb2RlciA8PCBEYXRhUmVmZXJlbmNlKHN0YXRp
Y19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKIH0K
IApAQCAtMTAzLDEyICsxMTMsMjIgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0
aG9yaXphdAogCiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudENvbnRhY3Q+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UGF5bWVudENvbnRhY3QmIHBh
eW1lbnRDb250YWN0KQogeworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPCAxMDEyMDApCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0
YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2
ZXJGcm9tTXV0YWJsZURhdGEoZGF0YS5nZXQoKSk7CisgICAgYXV0byBhcmNoaXZlciA9IGFkb3B0
TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFibGVEYXRh
OmRhdGEuZ2V0KCldKTsKKworICAgIFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZ
RVNdOworI2Vsc2UKKyAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKKyNlbmRp
ZgogCiAgICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpwYXltZW50Q29udGFjdC5wa0NvbnRhY3Qo
KSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKICAgICBbYXJjaGl2ZXIgZmlu
aXNoRW5jb2RpbmddOwogCisjaWYgKCFQTEFURk9STShNQUMpIHx8IF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwKQorICAgIGF1dG8gZGF0YSA9IGFyY2hpdmVyLmdldCgp
LmVuY29kZWREYXRhOworI2VuZGlmCisKICAgICBlbmNvZGVyIDw8IERhdGFSZWZlcmVuY2Uoc3Rh
dGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOwog
fQogCkBAIC0xNjEsMTIgKzE4MSwyMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRF
cnJvcj4gQXJnCiAKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRT
ZXNzaW9uPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRN
ZXJjaGFudFNlc3Npb24mIHBheW1lbnRNZXJjaGFudFNlc3Npb24pCiB7CisjaWYgKFBMQVRGT1JN
KE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTIwMCkKICAgICBh
dXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdF0pOwotICAgIGF1
dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsK
KyAgICBhdXRvIGFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5p
dEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6ZGF0YS5nZXQoKV0pOworCisgICAgW2FyY2hpdmVy
IHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107CisjZWxzZQorICAgIGF1dG8gYXJjaGl2ZXIg
PSBzZWN1cmVBcmNoaXZlcigpOworI2VuZGlmCiAKICAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0
OnBheW1lbnRNZXJjaGFudFNlc3Npb24ucGtQYXltZW50TWVyY2hhbnRTZXNzaW9uKCkgZm9yS2V5
Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CiAgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29k
aW5nXTsKIAorI2lmICghUExBVEZPUk0oTUFDKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTIwMCkKKyAgICBhdXRvIGRhdGEgPSBhcmNoaXZlci5nZXQoKS5lbmNvZGVk
RGF0YTsKKyNlbmRpZgorCiAgICAgZW5jb2RlciA8PCBEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKIH0KIApAQCAt
MTkyLDEyICsyMjIsMjIgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXJj
aAogCiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZD46OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQYXltZW50TWV0aG9kJiBwYXltZW50TWV0
aG9kKQogeworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPCAxMDEyMDApCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEg
YWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXJGcm9tTXV0
YWJsZURhdGEoZGF0YS5nZXQoKSk7CisgICAgYXV0byBhcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tl
eWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFibGVEYXRhOmRhdGEuZ2V0
KCldKTsKKworICAgIFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOworI2Vs
c2UKKyAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKKyNlbmRpZgogCiAgICAg
W2FyY2hpdmVyIGVuY29kZU9iamVjdDpwYXltZW50TWV0aG9kLnBrUGF5bWVudE1ldGhvZCgpIGZv
cktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOwogICAgIFthcmNoaXZlciBmaW5pc2hF
bmNvZGluZ107CiAKKyNpZiAoIVBMQVRGT1JNKE1BQykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEyMDApCisgICAgYXV0byBkYXRhID0gYXJjaGl2ZXIuZ2V0KCkuZW5j
b2RlZERhdGE7CisjZW5kaWYKKwogICAgIGVuY29kZXIgPDwgRGF0YVJlZmVyZW5jZShzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQ
b3NpdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJh
Y3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW0JKHJldmlzaW9uIDIyNTI3NSkKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5tbQko
d29ya2luZyBjb3B5KQpAQCAtNzMsMTIgKzczLDE5IEBAIHZvaWQgSW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb246OmUKICAgICBlbmNvZGVyIDw8IGlzRGF0YURldGVjdG9yTGluazsKICAg
ICBpZiAoaXNEYXRhRGV0ZWN0b3JMaW5rKSB7CiAgICAgICAgIGVuY29kZXIgPDwgZGF0YURldGVj
dG9ySWRlbnRpZmllcjsKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEIDwgMTAxMjAwKQogICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGF0YT4g
ZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIGF1
dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsK
ICAgICAgICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpkYXRhRGV0ZWN0b3JSZXN1bHRzLmdldCgp
IGZvcktleTpAImRhdGFEZXRlY3RvclJlc3VsdHMiXTsKICAgICAgICAgW2FyY2hpdmVyIGZpbmlz
aEVuY29kaW5nXTsKICAgICAgICAgCi0gICAgICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50
ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihkYXRhLmdldCgpKSk7ICAgICAgICAKKyAgICAgICAgSVBD
OjplbmNvZGUoZW5jb2RlciwgcmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGRhdGEuZ2V0KCkp
KTsKKyNlbHNlCisgICAgICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOworICAg
ICAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OmRhdGFEZXRlY3RvclJlc3VsdHMuZ2V0KCkgZm9y
S2V5OkAiZGF0YURldGVjdG9yUmVzdWx0cyJdOworCisgICAgICAgIElQQzo6ZW5jb2RlKGVuY29k
ZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0
YSkpOworI2VuZGlmCiAgICAgfQogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0JKHJldmlzaW9uIDIy
NTI3NSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyOSwxMSArNDI5LDE4IEBAIGJvb2wgQXJndW1lbnRD
b2RlcjxSZXNvdXJjZUVycm9yPjo6ZGVjb2QKIAogdm9pZCBBcmd1bWVudENvZGVyPFByb3RlY3Rp
b25TcGFjZT46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBQcm90
ZWN0aW9uU3BhY2UmIHNwYWNlKQogeworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEyMDApCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhb
W05TTXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJl
QXJjaGl2ZXJGcm9tTXV0YWJsZURhdGEoZGF0YS5nZXQoKSk7CisgICAgYXV0byBhcmNoaXZlciA9
IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFi
bGVEYXRhOmRhdGEuZ2V0KCldKTsKKyAgICBbYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rp
bmc6WUVTXTsKICAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnNwYWNlLm5zU3BhY2UoKSBmb3JL
ZXk6QCJwcm90ZWN0aW9uU3BhY2UiXTsKICAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOwog
ICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihkYXRh
LmdldCgpKSk7CisjZWxzZQorICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOwor
ICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6c3BhY2UubnNTcGFjZSgpIGZvcktleTpAInByb3Rl
Y3Rpb25TcGFjZSJdOworICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8
Q0ZEYXRhUmVmPihhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSkpOworI2VuZGlmCiB9CiAKIGJv
b2wgQXJndW1lbnRDb2RlcjxQcm90ZWN0aW9uU3BhY2U+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVj
b2RlciYgZGVjb2RlciwgUHJvdGVjdGlvblNwYWNlJiBzcGFjZSkKQEAgLTQ3NCwxMSArNDgxLDE5
IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxDcmVkZW50aWFsPjo6ZW5jb2RlUGwKICAgICB9CiAKICAg
ICBlbmNvZGVyIDw8IGZhbHNlOworCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTIwMCkKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdF0pOwotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVB
cmNoaXZlckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKKyAgICBhdXRvIGFyY2hpdmVyID0g
YWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJs
ZURhdGE6ZGF0YS5nZXQoKV0pOworICAgIFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGlu
ZzpZRVNdOwogICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6bnNDcmVkZW50aWFsIGZvcktleTpA
ImNyZWRlbnRpYWwiXTsKICAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOwogICAgIElQQzo6
ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihkYXRhLmdldCgpKSk7
CisjZWxzZQorICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOworICAgIFthcmNo
aXZlciBlbmNvZGVPYmplY3Q6bnNDcmVkZW50aWFsIGZvcktleTpAImNyZWRlbnRpYWwiXTsKKyAg
ICBJUEM6OmVuY29kZShlbmNvZGVyLCByZWludGVycHJldF9jYXN0PENGRGF0YVJlZj4oYXJjaGl2
ZXIuZ2V0KCkuZW5jb2RlZERhdGEpKTsKKyNlbmRpZgogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8
Q3JlZGVudGlhbD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBDcmVkZW50
aWFsJiBjcmVkZW50aWFsKQpAQCAtNTc1LDExICs1OTAsMTggQEAgc3RkOjpvcHRpb25hbDxLZXlw
cmVzc0NvbW1hbmQ+IEFyZ3VtZW50QwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIHZv
aWQgQXJndW1lbnRDb2RlcjxDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI+OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyJiBjb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXIpCiB7CisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTIwMCkKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdF0pOwotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1
cmVBcmNoaXZlckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKKyAgICBhdXRvIGFyY2hpdmVy
ID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0
YWJsZURhdGE6ZGF0YS5nZXQoKV0pOworICAgIFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNv
ZGluZzpZRVNdOwogICAgIGNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5lbmNvZGUoYXJjaGl2
ZXIuZ2V0KCkpOwogICAgIFthcmNoaXZlciBmaW5pc2hFbmNvZGluZ107CiAgICAgSVBDOjplbmNv
ZGUoZW5jb2RlciwgcmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGRhdGEuZ2V0KCkpKTsKKyNl
bHNlCisgICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7CisgICAgY29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyLmVuY29kZShhcmNoaXZlci5nZXQoKSk7CisgICAgSVBDOjplbmNv
ZGUoZW5jb2RlciwgcmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGFyY2hpdmVyLmdldCgpLmVu
Y29kZWREYXRhKSk7CisjZW5kaWYKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPENvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlcj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXImIGNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcikKQEAgLTYwNywxNSAr
NjI5LDI0IEBAIHN0YXRpYyBOU1N0cmluZyAqZGV2aWNlQ29udGV4dEtleSgpCiAKIHZvaWQgQXJn
dW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmVuY29kZVBsYXRmb3JtRGF0
YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFy
Z2V0KQogeworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPCAxMDEyMDApCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEg
YWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXJGcm9tTXV0
YWJsZURhdGEoZGF0YS5nZXQoKSk7CisgICAgYXV0byBhcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tl
eWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFibGVEYXRhOmRhdGEuZ2V0
KCldKTsKKyAgICBbYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsKIAogICAg
IGlmIChbZ2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3Rv
Y29sKE5TU2VjdXJlQ29kaW5nKV0pCiAgICAgICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6dGFy
Z2V0LmF2T3V0cHV0Q29udGV4dCgpIGZvcktleTpkZXZpY2VDb250ZXh0S2V5KCldOwogCiAgICAg
W2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsKICAgICBJUEM6OmVuY29kZShlbmNvZGVyLCByZWlu
dGVycHJldF9jYXN0PENGRGF0YVJlZj4oZGF0YS5nZXQoKSkpOworI2Vsc2UKKyAgICBhdXRvIGFy
Y2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKIAorICAgIGlmIChbZ2V0QVZPdXRwdXRDb250ZXh0
Q2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5nKV0pCisg
ICAgICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6dGFyZ2V0LmF2T3V0cHV0Q29udGV4dCgpIGZv
cktleTpkZXZpY2VDb250ZXh0S2V5KCldOworCisgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgcmVp
bnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhKSk7Cisj
ZW5kaWYKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIsIE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0JiB0YXJnZXQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViSGl0
VGVzdFJlc3VsdERhdGEubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L1dlYkhpdFRlc3RSZXN1bHREYXRhLm1tCShyZXZpc2lvbiAyMjUyNzUpCisrKyBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvV2ViSGl0VGVzdFJlc3VsdERhdGEubW0JKHdvcmtpbmcgY29weSkKQEAg
LTQ1LDEyICs0NSwyMCBAQCB2b2lkIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpwbGF0Zm9ybUVuY29k
CiAgICAgaWYgKCFoYXNBY3Rpb25Db250ZXh0KQogICAgICAgICByZXR1cm47CiAKKyNpZiAoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMjAwKQog
ICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0XSk7Ci0g
ICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyRnJvbU11dGFibGVEYXRhKGRhdGEuZ2V0
KCkpOworICAgIGF1dG8gYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9j
XSBpbml0Rm9yV3JpdGluZ1dpdGhNdXRhYmxlRGF0YTpkYXRhLmdldCgpXSk7CisgICAgW2FyY2hp
dmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107CiAgICAgW2FyY2hpdmVyIGVuY29kZU9i
amVjdDpkZXRlY3RlZERhdGFBY3Rpb25Db250ZXh0LmdldCgpIGZvcktleTpAImFjdGlvbkNvbnRl
eHQiXTsKICAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOwogCiAgICAgSVBDOjplbmNvZGUo
ZW5jb2RlciwgcmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGRhdGEuZ2V0KCkpKTsKKyNlbHNl
CisgICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7CisgICAgW2FyY2hpdmVyIGVu
Y29kZU9iamVjdDpkZXRlY3RlZERhdGFBY3Rpb25Db250ZXh0LmdldCgpIGZvcktleTpAImFjdGlv
bkNvbnRleHQiXTsKKworICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8
Q0ZEYXRhUmVmPihhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSkpOworI2VuZGlmCiAKICAgICBl
bmNvZGVyIDw8IGRldGVjdGVkRGF0YUJvdW5kaW5nQm94OwogICAgIGVuY29kZXIgPDwgZGV0ZWN0
ZWREYXRhT3JpZ2luYXRpbmdQYWdlT3ZlcmxheTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCShyZXZpc2lvbiAyMjUyNzUp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjEzLDggKzIxMywxMyBAQCAtICh2b2lkKV9zZXRPYmplY3Q6KGlk
IDxOU0NvcHlpbmcsIE5TU2VjCiB7CiAgICAgYXV0byBjb3B5ID0gYWRvcHROUyhbKE5TT2JqZWN0
ICopb2JqZWN0IGNvcHldKTsKIAorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEyMDApCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05T
TXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIGtleWVkQXJjaGl2ZXIgPSBzZWN1
cmVBcmNoaXZlckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKKyAgICBhdXRvIGtleWVkQXJj
aGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yV3JpdGluZ1dp
dGhNdXRhYmxlRGF0YTpkYXRhLmdldCgpXSk7CisgICAgW2tleWVkQXJjaGl2ZXIgc2V0UmVxdWly
ZXNTZWN1cmVDb2Rpbmc6WUVTXTsKKyNlbHNlCisgICAgYXV0byBrZXllZEFyY2hpdmVyID0gc2Vj
dXJlQXJjaGl2ZXIoKTsKKyNlbmRpZgogCiAgICAgQHRyeSB7CiAgICAgICAgIFtrZXllZEFyY2hp
dmVyIGVuY29kZU9iamVjdDpjb3B5LmdldCgpIGZvcktleTpAInBhcmFtZXRlciJdOwpAQCAtMjI4
LDYgKzIzMywxMCBAQCAtICh2b2lkKV9zZXRPYmplY3Q6KGlkIDxOU0NvcHlpbmcsIE5TU2VjCiAg
ICAgZWxzZQogICAgICAgICBbX3Byb2Nlc3NQb29sLT5lbnN1cmVCdW5kbGVQYXJhbWV0ZXJzKCkg
cmVtb3ZlT2JqZWN0Rm9yS2V5OnBhcmFtZXRlcl07CiAKKyNpZiAoIVBMQVRGT1JNKE1BQykgfHwg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDApCisgICAgYXV0byBkYXRh
ID0ga2V5ZWRBcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YTsKKyNlbmRpZgorCiAgICAgX3Byb2Nl
c3NQb29sLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldEluamVj
dGVkQnVuZGxlUGFyYW1ldGVyKHBhcmFtZXRlciwgSVBDOjpEYXRhUmVmZXJlbmNlKHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKSkpOwogfQog
CkBAIC0yMzUsOCArMjQ0LDEzIEBAIC0gKHZvaWQpX3NldE9iamVjdHNGb3JCdW5kbGVQYXJhbWV0
ZXJzV2kKIHsKICAgICBhdXRvIGNvcHkgPSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBp
bml0V2l0aERpY3Rpb25hcnk6ZGljdGlvbmFyeSBjb3B5SXRlbXM6WUVTXSk7CiAKKyNpZiAoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMjAwKQog
ICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0XSk7Ci0g
ICAgYXV0byBrZXllZEFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXJGcm9tTXV0YWJsZURhdGEoZGF0
YS5nZXQoKSk7CisgICAgYXV0byBrZXllZEFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNo
aXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6ZGF0YS5nZXQoKV0pOwor
ICAgIFtrZXllZEFyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107CisjZWxzZQor
ICAgIGF1dG8ga2V5ZWRBcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7CisjZW5kaWYKIAogICAg
IEB0cnkgewogICAgICAgICBba2V5ZWRBcmNoaXZlciBlbmNvZGVPYmplY3Q6Y29weS5nZXQoKSBm
b3JLZXk6QCJwYXJhbWV0ZXJzIl07CkBAIC0yNDcsNiArMjYxLDEwIEBAIC0gKHZvaWQpX3NldE9i
amVjdHNGb3JCdW5kbGVQYXJhbWV0ZXJzV2kKIAogICAgIFtfcHJvY2Vzc1Bvb2wtPmVuc3VyZUJ1
bmRsZVBhcmFtZXRlcnMoKSBzZXRWYWx1ZXNGb3JLZXlzV2l0aERpY3Rpb25hcnk6Y29weS5nZXQo
KV07CiAKKyNpZiAoIVBMQVRGT1JNKE1BQykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDEyMDApCisgICAgYXV0byBkYXRhID0ga2V5ZWRBcmNoaXZlci5nZXQoKS5lbmNv
ZGVkRGF0YTsKKyNlbmRpZgorCiAgICAgX3Byb2Nlc3NQb29sLT5zZW5kVG9BbGxQcm9jZXNzZXMo
TWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldEluamVjdGVkQnVuZGxlUGFyYW1ldGVycyhJUEM6OkRh
dGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtk
YXRhIGxlbmd0aF0pKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2aXNpb24gMjI1Mjc1KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjE1LDggKzIxNSwxNCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0
Zm9ybUluaXRpYWxpemVXCiAgICAgcGFyYW1ldGVycy5mb250V2hpdGVsaXN0ID0gbV9mb250V2hp
dGVsaXN0OwogCiAgICAgaWYgKG1fYnVuZGxlUGFyYW1ldGVycykgeworI2lmIChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEyMDApCiAgICAgICAg
IGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0XSk7Ci0gICAg
ICAgIGF1dG8ga2V5ZWRBcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyRnJvbU11dGFibGVEYXRhKGRh
dGEuZ2V0KCkpOworICAgICAgICBhdXRvIGtleWVkQXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXll
ZEFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yV3JpdGluZ1dpdGhNdXRhYmxlRGF0YTpkYXRhLmdldCgp
XSk7CisKKyAgICAgICAgW2tleWVkQXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVT
XTsKKyNlbHNlCisgICAgICAgIGF1dG8ga2V5ZWRBcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7
CisjZW5kaWYKIAogICAgICAgICBAdHJ5IHsKICAgICAgICAgICAgIFtrZXllZEFyY2hpdmVyIGVu
Y29kZU9iamVjdDptX2J1bmRsZVBhcmFtZXRlcnMuZ2V0KCkgZm9yS2V5OkAicGFyYW1ldGVycyJd
OwpAQCAtMjI1LDYgKzIzMSwxMCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRp
YWxpemVXCiAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBlbmNvZGUgYnVuZGxlIHBh
cmFtZXRlcnM6ICVAIiwgZXhjZXB0aW9uKTsKICAgICAgICAgfQogCisjaWYgKCFQTEFURk9STShN
QUMpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwKQorICAgICAg
ICBhdXRvIGRhdGEgPSByZXRhaW5QdHIoa2V5ZWRBcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSk7
CisjZW5kaWYKKwogICAgICAgICBwYXJhbWV0ZXJzLmJ1bmRsZVBhcmFtZXRlckRhdGEgPSBBUEk6
OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKilbZGF0YSBi
eXRlc10sIFtkYXRhIGxlbmd0aF0sIFtdICh1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0
YSkgewogICAgICAgICAgICAgWyhOU0RhdGEgKilkYXRhIHJlbGVhc2VdOwogICAgICAgICB9LCBk
YXRhLmxlYWtSZWYoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCShy
ZXZpc2lvbiAyMjUyNzUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0J
KHdvcmtpbmcgY29weSkKQEAgLTQ4NCw4ICs0ODQsMTMgQEAgLSAodm9pZClfc2V0Rm9ybURlbGVn
YXRlOihpZCA8V0tXZWJQcm9jZQogICAgICAgICAgICAgaWYgKCF1c2VyT2JqZWN0KQogICAgICAg
ICAgICAgICAgIHJldHVybjsKIAorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEyMDApCiAgICAgICAgICAgICBhdXRvIGRhdGEgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdF0pOwotICAgICAgICAgICAgYXV0byBhcmNo
aXZlciA9IHNlY3VyZUFyY2hpdmVyRnJvbU11dGFibGVEYXRhKGRhdGEuZ2V0KCkpOworICAgICAg
ICAgICAgYXV0byBhcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGlu
aXRGb3JXcml0aW5nV2l0aE11dGFibGVEYXRhOmRhdGEuZ2V0KCldKTsKKyAgICAgICAgICAgIFth
cmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOworI2Vsc2UKKyAgICAgICAgICAg
IGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOworI2VuZGlmCiAgICAgICAgICAgICBA
dHJ5IHsKICAgICAgICAgICAgICAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnVzZXJPYmplY3Qg
Zm9yS2V5OkAidXNlck9iamVjdCJdOwogICAgICAgICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9u
ICpleGNlcHRpb24pIHsKQEAgLTQ5NCw2ICs0OTksMTAgQEAgLSAodm9pZClfc2V0Rm9ybURlbGVn
YXRlOihpZCA8V0tXZWJQcm9jZQogICAgICAgICAgICAgfQogICAgICAgICAgICAgW2FyY2hpdmVy
IGZpbmlzaEVuY29kaW5nXTsKIAorI2lmICghUExBVEZPUk0oTUFDKSB8fCBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMCkKKyAgICAgICAgICAgIGF1dG8gZGF0YSA9IHJl
dGFpblB0cihhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSk7CisjZW5kaWYKKwogICAgICAgICAg
ICAgdXNlckRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKFdURk1vdmUoZGF0
YSkpOwogICAgICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327919</attachid>
            <date>2017-11-29 16:10:05 -0800</date>
            <delta_ts>2017-11-29 17:02:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180127-20171129161004.patch</filename>
            <type>text/plain</type>
            <size>22755</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjI1Mjg4KQorKysgU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE3LTEx
LTI5ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFBhcnQg
MjogQWRvcHQgdXBkYXRlZCBOU0tleWVkW1VuXUFyY2hpdmVyIEFQSSB3aGVuIGF2YWlsYWJsZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMTI3Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTcxMDczOD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgQVBJIHRoYXQgYWNjZXB0cyBhIHVzZXItYWxs
b2NhdGVkIE5TTXV0YWJsZURhdGEgaXMgZGVwcmVjYXRlZC4gU3dpdGNoIChmb3IgbWFjT1MgMTAu
MTIgYW5kIG5ld2VyKQorICAgICAgICB0byB0aGUgbW9kZXJuIEFQSS4gVXNlIHRoZSBvcmlnaW5h
bCBBUEkgZm9yIG1hY09TIGJ1aWxkcyBwcmlvciB0byAxMC4xMi4KKworICAgICAgICAqIHBhbC9z
cGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg6CisgICAgICAgIChzZWN1cmVBcmNoaXZlcik6
IEFkZGVkLgorICAgICAgICAoc2VjdXJlQXJjaGl2ZXJGcm9tTXV0YWJsZURhdGEpOiBEZWxldGVk
LgorCiAyMDE3LTExLTI4ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkb3B0IHVwZGF0ZWQgTlNLZXllZFtVbl1BcmNoaXZlciBBUEkgd2hlbiBhdmFpbGFi
bGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZl
clNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05T
S2V5ZWRBcmNoaXZlclNQSS5oCShyZXZpc2lvbiAyMjUyNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaAkod29ya2luZyBjb3B5KQpAQCAt
MTA0LDEwICsxMDQsMTQgQEAgaW5saW5lIGlkIF9OdWxsYWJsZSBpbnNlY3VyZWx5VW5hcmNoaXZl
TwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogfQogCi1pbmxpbmUgUmV0YWluUHRyPE5T
S2V5ZWRBcmNoaXZlcj4gc2VjdXJlQXJjaGl2ZXJGcm9tTXV0YWJsZURhdGEoTlNNdXRhYmxlRGF0
YSAqX05vbm51bGwgbXV0YWJsZURhdGEpCitpbmxpbmUgUmV0YWluUHRyPE5TS2V5ZWRBcmNoaXZl
cj4gc2VjdXJlQXJjaGl2ZXIoKQogewotICAgIE5TS2V5ZWRBcmNoaXZlciAqYXJjaGl2ZXIgPSBb
W05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6bXV0
YWJsZURhdGFdOworI2lmIFVTRShTRUNVUkVfQVJDSElWRVJfQVBJKQorICAgIE5TS2V5ZWRBcmNo
aXZlciAqYXJjaGl2ZXIgPSBbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdFJlcXVpcmluZ1Nl
Y3VyZUNvZGluZzpZRVNdOworI2Vsc2UKKyAgICBOU0tleWVkQXJjaGl2ZXIgKmFyY2hpdmVyID0g
W1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRdOwogICAgIFthcmNoaXZlciBzZXRSZXF1aXJl
c1NlY3VyZUNvZGluZzpZRVNdOworI2VuZGlmCiAgICAgcmV0dXJuIGFkb3B0TlMoYXJjaGl2ZXIp
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJB
cmNoaXZlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L2NmL0xlZ2FjeVdlYkFyY2hpdmVNYWMubW0JKHJldmlzaW9uIDIyNTI3NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmVNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTc0LDE1ICs3NCwxOCBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBMZWdhY3lXZWJB
cmNoaXZlOjpjCiAKICAgICBDRk11dGFibGVEYXRhUmVmIHJlc3BvbnNlRGF0YSA9IENGRGF0YUNy
ZWF0ZU11dGFibGUoMCwgMCk7CiAKLSAgICBhdXRvIGFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5
ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6KE5TTXV0YWJs
ZURhdGEgKilyZXNwb25zZURhdGFdKTsKICNpZiBVU0UoU0VDVVJFX0FSQ0hJVkVSX0FQSSkKKyAg
ICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKKyAgICBbYXJjaGl2ZXIgZW5jb2Rl
T2JqZWN0Om5zUmVzcG9uc2UgZm9yS2V5OkxlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNl
S2V5XTsKKyAgICByZXR1cm4gcmV0YWluUHRyKChfX2JyaWRnZSBDRkRhdGFSZWYpYXJjaGl2ZXIu
Z2V0KCkuZW5jb2RlZERhdGEpOworI2Vsc2UKICAgICAvLyBCZWNhdXNlIG9mIDxyZGFyOi8vcHJv
YmxlbS8zNDA2MzMxMz4gd2UgY2FuJ3QgdXNlIHRoaXMgZm9yIGVuY29kaW5nIGluIG9sZGVyIE9T
J3MuCi0gICAgW2FyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107Ci0jZW5kaWYK
KyAgICBhdXRvIGFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5p
dEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6KE5TTXV0YWJsZURhdGEgKilyZXNwb25zZURhdGFd
KTsKICAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0Om5zUmVzcG9uc2UgZm9yS2V5OkxlZ2FjeVdl
YkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5XTsKICAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2Rp
bmddOwogCiAgICAgcmV0dXJuIGFkb3B0Q0YocmVzcG9uc2VEYXRhKTsKKyNlbmRpZgogfQogCiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjI1Mjc1KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzOCBAQAorMjAxNy0xMS0yOSAgQnJlbnQgRnVs
Z2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBQYXJ0IDI6IEFkb3B0IHVwZGF0
ZWQgTlNLZXllZFtVbl1BcmNoaXZlciBBUEkgd2hlbiBhdmFpbGFibGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDEyNworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMzU3MTA3Mzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhlIEFQSSB0aGF0IGFjY2VwdHMgYSB1c2VyLWFsbG9jYXRlZCBOU011dGFi
bGVEYXRhIGlzIGRlcHJlY2F0ZWQuIFN3aXRjaCAoZm9yIG1hY09TIDEwLjEyIGFuZCBuZXdlcikK
KyAgICAgICAgdG8gdGhlIG1vZGVybiBBUEkuIFVzZSB0aGUgb3JpZ2luYWwgQVBJIGZvciBtYWNP
UyBidWlsZHMgcHJpb3IgdG8gMTAuMTIuCisKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvRGF0YURl
dGVjdGlvblJlc3VsdC5tbToKKyAgICAgICAgKFdlYktpdDo6RGF0YURldGVjdGlvblJlc3VsdDo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVu
dD46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVu
dENvbnRhY3Q+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6
OlBheW1lbnRNZXJjaGFudFNlc3Npb24+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXRob2Q+OjplbmNvZGUpOgorICAgICAgICAqIFNoYXJl
ZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW06CisgICAgICAgIChXZWJL
aXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAqIFNoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFByb3RlY3Rpb25TcGFjZT46OmVuY29kZVBsYXRmb3JtRGF0YSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q3JlZGVudGlhbD46OmVuY29kZVBsYXRmb3Jt
RGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dD46OmVuY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogU2hhcmVk
L21hYy9XZWJIaXRUZXN0UmVzdWx0RGF0YS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViSGl0VGVz
dFJlc3VsdERhdGE6OnBsYXRmb3JtRW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3Nl
dE9iamVjdDpmb3JCdW5kbGVQYXJhbWV0ZXI6XSk6CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wg
X3NldE9iamVjdHNGb3JCdW5kbGVQYXJhbWV0ZXJzV2l0aERpY3Rpb25hcnk6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgX3NldEZvcm1EZWxlZ2F0ZTpdKToKKwogMjAxNy0x
MS0yOSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgUkVHUkVTU0lPTihyMjE4MDY0KTogW0dUS10gQnJva2UgZW50ZXJpbmcgZnVsbHNjcmVlbiBt
b2RlIGluIGRlYnVnIGJ1aWxkcwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGF0
YURldGVjdGlvblJlc3VsdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tCShyZXZpc2lvbiAyMjUyNzUpCisrKyBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00MSwxMiArNDEsMTkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgRGF0YURldGVj
dGlvblJlc3VsdDo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBS
ZXRhaW5QdHI8TlNNdXRhYmxlRGF0YT4gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFs
bG9jXSBpbml0XSk7Ci0gICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyRnJvbU11dGFi
bGVEYXRhKGRhdGEuZ2V0KCkpOworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEyMDApCisgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05T
TXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGFyY2hpdmVyID0gYWRvcHROUyhb
W05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6ZGF0
YS5nZXQoKV0pOworICAgIFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOwog
ICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6cmVzdWx0cy5nZXQoKSBmb3JLZXk6QCJkYXRhRGV0
ZWN0b3JSZXN1bHRzIl07CiAgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsKLSAgICAKLSAg
ICBJUEM6OmVuY29kZShlbmNvZGVyLCByZWludGVycHJldF9jYXN0PENGRGF0YVJlZj4oZGF0YS5n
ZXQoKSkpOyAgICAgICAgCisKKyAgICBJUEM6OmVuY29kZShlbmNvZGVyLCByZWludGVycHJldF9j
YXN0PENGRGF0YVJlZj4oZGF0YS5nZXQoKSkpOworI2Vsc2UKKyAgICBhdXRvIGFyY2hpdmVyID0g
c2VjdXJlQXJjaGl2ZXIoKTsKKyAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnJlc3VsdHMuZ2V0
KCkgZm9yS2V5OkAiZGF0YURldGVjdG9yUmVzdWx0cyJdOworICAgIElQQzo6ZW5jb2RlKGVuY29k
ZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0
YSkpOworI2VuZGlmCiB9CiAKIGJvb2wgRGF0YURldGVjdGlvblJlc3VsdDo6ZGVjb2RlKElQQzo6
RGVjb2RlciYgZGVjb2RlciwgRGF0YURldGVjdGlvblJlc3VsdCYgcmVzdWx0KQpJbmRleDogU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzQ29jb2EubW0JKHJldmlzaW9uIDIyNTI3NSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MSwx
MiArNTEsMjIgQEAgbmFtZXNwYWNlIElQQyB7CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpQYXltZW50Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlBheW1l
bnQmIHBheW1lbnQpCiB7CisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA8IDEwMTIwMCkKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlRGF0YSBhbGxvY10gaW5pdF0pOwotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZl
ckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKKyAgICBhdXRvIGFyY2hpdmVyID0gYWRvcHRO
UyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6
ZGF0YS5nZXQoKV0pOworCisgICAgW2FyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllF
U107CisjZWxzZQorICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOworI2VuZGlm
CiAKICAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnBheW1lbnQucGtQYXltZW50KCkgZm9yS2V5
Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CiAgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29k
aW5nXTsKIAorI2lmICghUExBVEZPUk0oTUFDKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTIwMCkKKyAgICBhdXRvIGRhdGEgPSBhcmNoaXZlci5nZXQoKS5lbmNvZGVk
RGF0YTsKKyNlbmRpZgorCiAgICAgZW5jb2RlciA8PCBEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKIH0KIApAQCAt
MTAzLDEyICsxMTMsMjIgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXph
dAogCiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudENvbnRhY3Q+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UGF5bWVudENvbnRhY3QmIHBheW1lbnRD
b250YWN0KQogeworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPCAxMDEyMDApCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURh
dGEgYWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXJGcm9t
TXV0YWJsZURhdGEoZGF0YS5nZXQoKSk7CisgICAgYXV0byBhcmNoaXZlciA9IGFkb3B0TlMoW1tO
U0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFibGVEYXRhOmRhdGEu
Z2V0KCldKTsKKworICAgIFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOwor
I2Vsc2UKKyAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKKyNlbmRpZgogCiAg
ICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpwYXltZW50Q29udGFjdC5wa0NvbnRhY3QoKSBmb3JL
ZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKICAgICBbYXJjaGl2ZXIgZmluaXNoRW5j
b2RpbmddOwogCisjaWYgKCFQTEFURk9STShNQUMpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxMjAwKQorICAgIGF1dG8gZGF0YSA9IGFyY2hpdmVyLmdldCgpLmVuY29k
ZWREYXRhOworI2VuZGlmCisKICAgICBlbmNvZGVyIDw8IERhdGFSZWZlcmVuY2Uoc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOwogfQogCkBA
IC0xNjEsMTIgKzE4MSwyMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRFcnJvcj4g
QXJnCiAKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9u
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXJjaGFu
dFNlc3Npb24mIHBheW1lbnRNZXJjaGFudFNlc3Npb24pCiB7CisjaWYgKFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTIwMCkKICAgICBhdXRvIGRh
dGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdF0pOwotICAgIGF1dG8gYXJj
aGl2ZXIgPSBzZWN1cmVBcmNoaXZlckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKKyAgICBh
dXRvIGFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldy
aXRpbmdXaXRoTXV0YWJsZURhdGE6ZGF0YS5nZXQoKV0pOworCisgICAgW2FyY2hpdmVyIHNldFJl
cXVpcmVzU2VjdXJlQ29kaW5nOllFU107CisjZWxzZQorICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1
cmVBcmNoaXZlcigpOworI2VuZGlmCiAKICAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnBheW1l
bnRNZXJjaGFudFNlc3Npb24ucGtQYXltZW50TWVyY2hhbnRTZXNzaW9uKCkgZm9yS2V5Ok5TS2V5
ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CiAgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsK
IAorI2lmICghUExBVEZPUk0oTUFDKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTIwMCkKKyAgICBhdXRvIGRhdGEgPSBhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YTsK
KyNlbmRpZgorCiAgICAgZW5jb2RlciA8PCBEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKIH0KIApAQCAtMTkyLDEy
ICsyMjIsMjIgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXJjaAogCiB2
b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZD46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQYXltZW50TWV0aG9kJiBwYXltZW50TWV0aG9kKQog
eworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
PCAxMDEyMDApCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2Nd
IGluaXRdKTsKLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXJGcm9tTXV0YWJsZURh
dGEoZGF0YS5nZXQoKSk7CisgICAgYXV0byBhcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJj
aGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFibGVEYXRhOmRhdGEuZ2V0KCldKTsK
KworICAgIFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOworI2Vsc2UKKyAg
ICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKKyNlbmRpZgogCiAgICAgW2FyY2hp
dmVyIGVuY29kZU9iamVjdDpwYXltZW50TWV0aG9kLnBrUGF5bWVudE1ldGhvZCgpIGZvcktleTpO
U0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOwogICAgIFthcmNoaXZlciBmaW5pc2hFbmNvZGlu
Z107CiAKKyNpZiAoIVBMQVRGT1JNKE1BQykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDEyMDApCisgICAgYXV0byBkYXRhID0gYXJjaGl2ZXIuZ2V0KCkuZW5jb2RlZERh
dGE7CisjZW5kaWYKKwogICAgIGVuY29kZXIgPDwgRGF0YVJlZmVyZW5jZShzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlv
bi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25J
bmZvcm1hdGlvbkF0UG9zaXRpb24ubW0JKHJldmlzaW9uIDIyNTI3NSkKKysrIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNzMsMTIgKzczLDE5IEBAIHZvaWQgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
UG9zaXRpb246OmUKICAgICBlbmNvZGVyIDw8IGlzRGF0YURldGVjdG9yTGluazsKICAgICBpZiAo
aXNEYXRhRGV0ZWN0b3JMaW5rKSB7CiAgICAgICAgIGVuY29kZXIgPDwgZGF0YURldGVjdG9ySWRl
bnRpZmllcjsKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEIDwgMTAxMjAwKQogICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGF0YT4gZGF0YSA9
IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIGF1dG8gYXJj
aGl2ZXIgPSBzZWN1cmVBcmNoaXZlckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKICAgICAg
ICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpkYXRhRGV0ZWN0b3JSZXN1bHRzLmdldCgpIGZvcktl
eTpAImRhdGFEZXRlY3RvclJlc3VsdHMiXTsKICAgICAgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29k
aW5nXTsKICAgICAgICAgCi0gICAgICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0
X2Nhc3Q8Q0ZEYXRhUmVmPihkYXRhLmdldCgpKSk7ICAgICAgICAKKyAgICAgICAgSVBDOjplbmNv
ZGUoZW5jb2RlciwgcmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGRhdGEuZ2V0KCkpKTsKKyNl
bHNlCisgICAgICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOworICAgICAgICBb
YXJjaGl2ZXIgZW5jb2RlT2JqZWN0OmRhdGFEZXRlY3RvclJlc3VsdHMuZ2V0KCkgZm9yS2V5OkAi
ZGF0YURldGVjdG9yUmVzdWx0cyJdOworCisgICAgICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJl
aW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSkpOwor
I2VuZGlmCiAgICAgfQogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0JKHJldmlzaW9uIDIyNTI3NSkK
KysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTQyOSwxMSArNDI5LDE4IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxS
ZXNvdXJjZUVycm9yPjo6ZGVjb2QKIAogdm9pZCBBcmd1bWVudENvZGVyPFByb3RlY3Rpb25TcGFj
ZT46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBQcm90ZWN0aW9u
U3BhY2UmIHNwYWNlKQogeworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPCAxMDEyMDApCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0
YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2
ZXJGcm9tTXV0YWJsZURhdGEoZGF0YS5nZXQoKSk7CisgICAgYXV0byBhcmNoaXZlciA9IGFkb3B0
TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFibGVEYXRh
OmRhdGEuZ2V0KCldKTsKKyAgICBbYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVT
XTsKICAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnNwYWNlLm5zU3BhY2UoKSBmb3JLZXk6QCJw
cm90ZWN0aW9uU3BhY2UiXTsKICAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOwogICAgIElQ
Qzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihkYXRhLmdldCgp
KSk7CisjZWxzZQorICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOworICAgIFth
cmNoaXZlciBlbmNvZGVPYmplY3Q6c3BhY2UubnNTcGFjZSgpIGZvcktleTpAInByb3RlY3Rpb25T
cGFjZSJdOworICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRh
UmVmPihhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSkpOworI2VuZGlmCiB9CiAKIGJvb2wgQXJn
dW1lbnRDb2RlcjxQcm90ZWN0aW9uU3BhY2U+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYg
ZGVjb2RlciwgUHJvdGVjdGlvblNwYWNlJiBzcGFjZSkKQEAgLTQ3NCwxMSArNDgxLDE5IEBAIHZv
aWQgQXJndW1lbnRDb2RlcjxDcmVkZW50aWFsPjo6ZW5jb2RlUGwKICAgICB9CiAKICAgICBlbmNv
ZGVyIDw8IGZhbHNlOworCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA8IDEwMTIwMCkKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlRGF0YSBhbGxvY10gaW5pdF0pOwotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZl
ckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKKyAgICBhdXRvIGFyY2hpdmVyID0gYWRvcHRO
UyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6
ZGF0YS5nZXQoKV0pOworICAgIFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNd
OwogICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6bnNDcmVkZW50aWFsIGZvcktleTpAImNyZWRl
bnRpYWwiXTsKICAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOwogICAgIElQQzo6ZW5jb2Rl
KGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihkYXRhLmdldCgpKSk7CisjZWxz
ZQorICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOworICAgIFthcmNoaXZlciBl
bmNvZGVPYmplY3Q6bnNDcmVkZW50aWFsIGZvcktleTpAImNyZWRlbnRpYWwiXTsKKyAgICBJUEM6
OmVuY29kZShlbmNvZGVyLCByZWludGVycHJldF9jYXN0PENGRGF0YVJlZj4oYXJjaGl2ZXIuZ2V0
KCkuZW5jb2RlZERhdGEpKTsKKyNlbmRpZgogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8Q3JlZGVu
dGlhbD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBDcmVkZW50aWFsJiBj
cmVkZW50aWFsKQpAQCAtNTc1LDExICs1OTAsMTggQEAgc3RkOjpvcHRpb25hbDxLZXlwcmVzc0Nv
bW1hbmQ+IEFyZ3VtZW50QwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIHZvaWQgQXJn
dW1lbnRDb2RlcjxDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyJiBjb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXIpCiB7CisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA8IDEwMTIwMCkKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlRGF0YSBhbGxvY10gaW5pdF0pOwotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNo
aXZlckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKKyAgICBhdXRvIGFyY2hpdmVyID0gYWRv
cHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURh
dGE6ZGF0YS5nZXQoKV0pOworICAgIFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZ
RVNdOwogICAgIGNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5lbmNvZGUoYXJjaGl2ZXIuZ2V0
KCkpOwogICAgIFthcmNoaXZlciBmaW5pc2hFbmNvZGluZ107CiAgICAgSVBDOjplbmNvZGUoZW5j
b2RlciwgcmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGRhdGEuZ2V0KCkpKTsKKyNlbHNlCisg
ICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7CisgICAgY29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyLmVuY29kZShhcmNoaXZlci5nZXQoKSk7CisgICAgSVBDOjplbmNvZGUoZW5j
b2RlciwgcmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGFyY2hpdmVyLmdldCgpLmVuY29kZWRE
YXRhKSk7CisjZW5kaWYKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPENvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlcj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXImIGNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcikKQEAgLTYwNywxNSArNjI5LDI0
IEBAIHN0YXRpYyBOU1N0cmluZyAqZGV2aWNlQ29udGV4dEtleSgpCiAKIHZvaWQgQXJndW1lbnRD
b2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0KQog
eworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
PCAxMDEyMDApCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2Nd
IGluaXRdKTsKLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXJGcm9tTXV0YWJsZURh
dGEoZGF0YS5nZXQoKSk7CisgICAgYXV0byBhcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJj
aGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFibGVEYXRhOmRhdGEuZ2V0KCldKTsK
KyAgICBbYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsKIAogICAgIGlmIChb
Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5T
U2VjdXJlQ29kaW5nKV0pCiAgICAgICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6dGFyZ2V0LmF2
T3V0cHV0Q29udGV4dCgpIGZvcktleTpkZXZpY2VDb250ZXh0S2V5KCldOwogCiAgICAgW2FyY2hp
dmVyIGZpbmlzaEVuY29kaW5nXTsKICAgICBJUEM6OmVuY29kZShlbmNvZGVyLCByZWludGVycHJl
dF9jYXN0PENGRGF0YVJlZj4oZGF0YS5nZXQoKSkpOworI2Vsc2UKKyAgICBhdXRvIGFyY2hpdmVy
ID0gc2VjdXJlQXJjaGl2ZXIoKTsKIAorICAgIGlmIChbZ2V0QVZPdXRwdXRDb250ZXh0Q2xhc3Mo
KSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5nKV0pCisgICAgICAg
IFthcmNoaXZlciBlbmNvZGVPYmplY3Q6dGFyZ2V0LmF2T3V0cHV0Q29udGV4dCgpIGZvcktleTpk
ZXZpY2VDb250ZXh0S2V5KCldOworCisgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgcmVpbnRlcnBy
ZXRfY2FzdDxDRkRhdGFSZWY+KGFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhKSk7CisjZW5kaWYK
IH0KIAogYm9vbCBBcmd1bWVudENvZGVyPE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZGVj
b2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0JiB0YXJnZXQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViSGl0VGVzdFJl
c3VsdERhdGEubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkhp
dFRlc3RSZXN1bHREYXRhLm1tCShyZXZpc2lvbiAyMjUyNzUpCisrKyBTb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvV2ViSGl0VGVzdFJlc3VsdERhdGEubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEy
ICs0NSwyMCBAQCB2b2lkIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpwbGF0Zm9ybUVuY29kCiAgICAg
aWYgKCFoYXNBY3Rpb25Db250ZXh0KQogICAgICAgICByZXR1cm47CiAKKyNpZiAoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMjAwKQogICAgIGF1
dG8gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0
byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyRnJvbU11dGFibGVEYXRhKGRhdGEuZ2V0KCkpOwor
ICAgIGF1dG8gYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0
Rm9yV3JpdGluZ1dpdGhNdXRhYmxlRGF0YTpkYXRhLmdldCgpXSk7CisgICAgW2FyY2hpdmVyIHNl
dFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107CiAgICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpk
ZXRlY3RlZERhdGFBY3Rpb25Db250ZXh0LmdldCgpIGZvcktleTpAImFjdGlvbkNvbnRleHQiXTsK
ICAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOwogCiAgICAgSVBDOjplbmNvZGUoZW5jb2Rl
ciwgcmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGRhdGEuZ2V0KCkpKTsKKyNlbHNlCisgICAg
YXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7CisgICAgW2FyY2hpdmVyIGVuY29kZU9i
amVjdDpkZXRlY3RlZERhdGFBY3Rpb25Db250ZXh0LmdldCgpIGZvcktleTpAImFjdGlvbkNvbnRl
eHQiXTsKKworICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRh
UmVmPihhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSkpOworI2VuZGlmCiAKICAgICBlbmNvZGVy
IDw8IGRldGVjdGVkRGF0YUJvdW5kaW5nQm94OwogICAgIGVuY29kZXIgPDwgZGV0ZWN0ZWREYXRh
T3JpZ2luYXRpbmdQYWdlT3ZlcmxheTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCShyZXZpc2lvbiAyMjUyNzUpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjEzLDggKzIxMywxMyBAQCAtICh2b2lkKV9zZXRPYmplY3Q6KGlkIDxOU0Nv
cHlpbmcsIE5TU2VjCiB7CiAgICAgYXV0byBjb3B5ID0gYWRvcHROUyhbKE5TT2JqZWN0ICopb2Jq
ZWN0IGNvcHldKTsKIAorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPCAxMDEyMDApCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJs
ZURhdGEgYWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIGtleWVkQXJjaGl2ZXIgPSBzZWN1cmVBcmNo
aXZlckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKKyAgICBhdXRvIGtleWVkQXJjaGl2ZXIg
PSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yV3JpdGluZ1dpdGhNdXRh
YmxlRGF0YTpkYXRhLmdldCgpXSk7CisgICAgW2tleWVkQXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1
cmVDb2Rpbmc6WUVTXTsKKyNlbHNlCisgICAgYXV0byBrZXllZEFyY2hpdmVyID0gc2VjdXJlQXJj
aGl2ZXIoKTsKKyNlbmRpZgogCiAgICAgQHRyeSB7CiAgICAgICAgIFtrZXllZEFyY2hpdmVyIGVu
Y29kZU9iamVjdDpjb3B5LmdldCgpIGZvcktleTpAInBhcmFtZXRlciJdOwpAQCAtMjI4LDYgKzIz
MywxMCBAQCAtICh2b2lkKV9zZXRPYmplY3Q6KGlkIDxOU0NvcHlpbmcsIE5TU2VjCiAgICAgZWxz
ZQogICAgICAgICBbX3Byb2Nlc3NQb29sLT5lbnN1cmVCdW5kbGVQYXJhbWV0ZXJzKCkgcmVtb3Zl
T2JqZWN0Rm9yS2V5OnBhcmFtZXRlcl07CiAKKyNpZiAoIVBMQVRGT1JNKE1BQykgfHwgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDApCisgICAgYXV0byBkYXRhID0ga2V5
ZWRBcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YTsKKyNlbmRpZgorCiAgICAgX3Byb2Nlc3NQb29s
LT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldEluamVjdGVkQnVu
ZGxlUGFyYW1ldGVyKHBhcmFtZXRlciwgSVBDOjpEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKSkpOwogfQogCkBAIC0y
MzUsOCArMjQ0LDEzIEBAIC0gKHZvaWQpX3NldE9iamVjdHNGb3JCdW5kbGVQYXJhbWV0ZXJzV2kK
IHsKICAgICBhdXRvIGNvcHkgPSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0
aERpY3Rpb25hcnk6ZGljdGlvbmFyeSBjb3B5SXRlbXM6WUVTXSk7CiAKKyNpZiAoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMjAwKQogICAgIGF1
dG8gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0
byBrZXllZEFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXJGcm9tTXV0YWJsZURhdGEoZGF0YS5nZXQo
KSk7CisgICAgYXV0byBrZXllZEFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBh
bGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6ZGF0YS5nZXQoKV0pOworICAgIFtr
ZXllZEFyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107CisjZWxzZQorICAgIGF1
dG8ga2V5ZWRBcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7CisjZW5kaWYKIAogICAgIEB0cnkg
ewogICAgICAgICBba2V5ZWRBcmNoaXZlciBlbmNvZGVPYmplY3Q6Y29weS5nZXQoKSBmb3JLZXk6
QCJwYXJhbWV0ZXJzIl07CkBAIC0yNDcsNiArMjYxLDEwIEBAIC0gKHZvaWQpX3NldE9iamVjdHNG
b3JCdW5kbGVQYXJhbWV0ZXJzV2kKIAogICAgIFtfcHJvY2Vzc1Bvb2wtPmVuc3VyZUJ1bmRsZVBh
cmFtZXRlcnMoKSBzZXRWYWx1ZXNGb3JLZXlzV2l0aERpY3Rpb25hcnk6Y29weS5nZXQoKV07CiAK
KyNpZiAoIVBMQVRGT1JNKE1BQykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDEyMDApCisgICAgYXV0byBkYXRhID0ga2V5ZWRBcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0
YTsKKyNlbmRpZgorCiAgICAgX3Byb2Nlc3NQb29sLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OlNldEluamVjdGVkQnVuZGxlUGFyYW1ldGVycyhJUEM6OkRhdGFSZWZl
cmVuY2Uoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxl
bmd0aF0pKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQb29sQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2aXNpb24gMjI1Mjc1KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjE1LDggKzIxNSwxNCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUlu
aXRpYWxpemVXCiAgICAgcGFyYW1ldGVycy5mb250V2hpdGVsaXN0ID0gbV9mb250V2hpdGVsaXN0
OwogCiAgICAgaWYgKG1fYnVuZGxlUGFyYW1ldGVycykgeworI2lmIChQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEyMDApCiAgICAgICAgIGF1dG8g
ZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIGF1
dG8ga2V5ZWRBcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyRnJvbU11dGFibGVEYXRhKGRhdGEuZ2V0
KCkpOworICAgICAgICBhdXRvIGtleWVkQXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFyY2hp
dmVyIGFsbG9jXSBpbml0Rm9yV3JpdGluZ1dpdGhNdXRhYmxlRGF0YTpkYXRhLmdldCgpXSk7CisK
KyAgICAgICAgW2tleWVkQXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsKKyNl
bHNlCisgICAgICAgIGF1dG8ga2V5ZWRBcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7CisjZW5k
aWYKIAogICAgICAgICBAdHJ5IHsKICAgICAgICAgICAgIFtrZXllZEFyY2hpdmVyIGVuY29kZU9i
amVjdDptX2J1bmRsZVBhcmFtZXRlcnMuZ2V0KCkgZm9yS2V5OkAicGFyYW1ldGVycyJdOwpAQCAt
MjI1LDYgKzIzMSwxMCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVX
CiAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBlbmNvZGUgYnVuZGxlIHBhcmFtZXRl
cnM6ICVAIiwgZXhjZXB0aW9uKTsKICAgICAgICAgfQogCisjaWYgKCFQTEFURk9STShNQUMpIHx8
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwKQorICAgICAgICBhdXRv
IGRhdGEgPSByZXRhaW5QdHIoa2V5ZWRBcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSk7CisjZW5k
aWYKKwogICAgICAgICBwYXJhbWV0ZXJzLmJ1bmRsZVBhcmFtZXRlckRhdGEgPSBBUEk6OkRhdGE6
OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKilbZGF0YSBieXRlc10s
IFtkYXRhIGxlbmd0aF0sIFtdICh1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkgewog
ICAgICAgICAgICAgWyhOU0RhdGEgKilkYXRhIHJlbGVhc2VdOwogICAgICAgICB9LCBkYXRhLmxl
YWtSZWYoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9t
YWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCShyZXZpc2lv
biAyMjUyNzUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0JKHdvcmtp
bmcgY29weSkKQEAgLTQ4NCw4ICs0ODQsMTMgQEAgLSAodm9pZClfc2V0Rm9ybURlbGVnYXRlOihp
ZCA8V0tXZWJQcm9jZQogICAgICAgICAgICAgaWYgKCF1c2VyT2JqZWN0KQogICAgICAgICAgICAg
ICAgIHJldHVybjsKIAorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPCAxMDEyMDApCiAgICAgICAgICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdF0pOwotICAgICAgICAgICAgYXV0byBhcmNoaXZlciA9
IHNlY3VyZUFyY2hpdmVyRnJvbU11dGFibGVEYXRhKGRhdGEuZ2V0KCkpOworICAgICAgICAgICAg
YXV0byBhcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JX
cml0aW5nV2l0aE11dGFibGVEYXRhOmRhdGEuZ2V0KCldKTsKKyAgICAgICAgICAgIFthcmNoaXZl
ciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOworI2Vsc2UKKyAgICAgICAgICAgIGF1dG8g
YXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOworI2VuZGlmCiAgICAgICAgICAgICBAdHJ5IHsK
ICAgICAgICAgICAgICAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnVzZXJPYmplY3QgZm9yS2V5
OkAidXNlck9iamVjdCJdOwogICAgICAgICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNl
cHRpb24pIHsKQEAgLTQ5NCw2ICs0OTksMTAgQEAgLSAodm9pZClfc2V0Rm9ybURlbGVnYXRlOihp
ZCA8V0tXZWJQcm9jZQogICAgICAgICAgICAgfQogICAgICAgICAgICAgW2FyY2hpdmVyIGZpbmlz
aEVuY29kaW5nXTsKIAorI2lmICghUExBVEZPUk0oTUFDKSB8fCBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTIwMCkKKyAgICAgICAgICAgIGF1dG8gZGF0YSA9IHJldGFpblB0
cihhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSk7CisjZW5kaWYKKwogICAgICAgICAgICAgdXNl
ckRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKFdURk1vdmUoZGF0YSkpOwog
ICAgICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327921</attachid>
            <date>2017-11-29 16:20:26 -0800</date>
            <delta_ts>2017-11-29 17:41:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180127-20171129162025.patch</filename>
            <type>text/plain</type>
            <size>22866</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjI1Mjg4KQorKysgU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE3LTEx
LTI5ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFBhcnQg
MjogQWRvcHQgdXBkYXRlZCBOU0tleWVkW1VuXUFyY2hpdmVyIEFQSSB3aGVuIGF2YWlsYWJsZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMTI3Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTcxMDczOD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgQVBJIHRoYXQgYWNjZXB0cyBhIHVzZXItYWxs
b2NhdGVkIE5TTXV0YWJsZURhdGEgaXMgZGVwcmVjYXRlZC4gU3dpdGNoIChmb3IgbWFjT1MgMTAu
MTIgYW5kIG5ld2VyKQorICAgICAgICB0byB0aGUgbW9kZXJuIEFQSS4gVXNlIHRoZSBvcmlnaW5h
bCBBUEkgZm9yIG1hY09TIGJ1aWxkcyBwcmlvciB0byAxMC4xMi4KKworICAgICAgICAqIHBhbC9z
cGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg6CisgICAgICAgIChzZWN1cmVBcmNoaXZlcik6
IEFkZGVkLgorICAgICAgICAoc2VjdXJlQXJjaGl2ZXJGcm9tTXV0YWJsZURhdGEpOiBEZWxldGVk
LgorCiAyMDE3LTExLTI4ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkb3B0IHVwZGF0ZWQgTlNLZXllZFtVbl1BcmNoaXZlciBBUEkgd2hlbiBhdmFpbGFi
bGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZl
clNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05T
S2V5ZWRBcmNoaXZlclNQSS5oCShyZXZpc2lvbiAyMjUyNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaAkod29ya2luZyBjb3B5KQpAQCAt
MTA0LDEwICsxMDQsMTQgQEAgaW5saW5lIGlkIF9OdWxsYWJsZSBpbnNlY3VyZWx5VW5hcmNoaXZl
TwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogfQogCi1pbmxpbmUgUmV0YWluUHRyPE5T
S2V5ZWRBcmNoaXZlcj4gc2VjdXJlQXJjaGl2ZXJGcm9tTXV0YWJsZURhdGEoTlNNdXRhYmxlRGF0
YSAqX05vbm51bGwgbXV0YWJsZURhdGEpCitpbmxpbmUgUmV0YWluUHRyPE5TS2V5ZWRBcmNoaXZl
cj4gc2VjdXJlQXJjaGl2ZXIoKQogewotICAgIE5TS2V5ZWRBcmNoaXZlciAqYXJjaGl2ZXIgPSBb
W05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6bXV0
YWJsZURhdGFdOworI2lmIFVTRShTRUNVUkVfQVJDSElWRVJfQVBJKQorICAgIE5TS2V5ZWRBcmNo
aXZlciAqYXJjaGl2ZXIgPSBbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdFJlcXVpcmluZ1Nl
Y3VyZUNvZGluZzpZRVNdOworI2Vsc2UKKyAgICBOU0tleWVkQXJjaGl2ZXIgKmFyY2hpdmVyID0g
W1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRdOwogICAgIFthcmNoaXZlciBzZXRSZXF1aXJl
c1NlY3VyZUNvZGluZzpZRVNdOworI2VuZGlmCiAgICAgcmV0dXJuIGFkb3B0TlMoYXJjaGl2ZXIp
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJB
cmNoaXZlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L2NmL0xlZ2FjeVdlYkFyY2hpdmVNYWMubW0JKHJldmlzaW9uIDIyNTI3NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmVNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTcyLDE3ICs3MiwxOSBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBMZWdhY3lXZWJB
cmNoaXZlOjpjCiAgICAgaWYgKCFuc1Jlc3BvbnNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIENGTXV0YWJsZURhdGFSZWYgcmVzcG9uc2VEYXRhID0gQ0ZEYXRhQ3JlYXRlTXV0YWJs
ZSgwLCAwKTsKLQotICAgIGF1dG8gYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVy
IGFsbG9jXSBpbml0Rm9yV3JpdGluZ1dpdGhNdXRhYmxlRGF0YTooTlNNdXRhYmxlRGF0YSAqKXJl
c3BvbnNlRGF0YV0pOwogI2lmIFVTRShTRUNVUkVfQVJDSElWRVJfQVBJKQorICAgIGF1dG8gYXJj
aGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOworICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6bnNS
ZXNwb25zZSBmb3JLZXk6TGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VLZXldOworICAg
IHJldHVybiByZXRhaW5QdHIoKF9fYnJpZGdlIENGRGF0YVJlZilhcmNoaXZlci5nZXQoKS5lbmNv
ZGVkRGF0YSk7CisjZWxzZQogICAgIC8vIEJlY2F1c2Ugb2YgPHJkYXI6Ly9wcm9ibGVtLzM0MDYz
MzEzPiB3ZSBjYW4ndCB1c2UgdGhpcyBmb3IgZW5jb2RpbmcgaW4gb2xkZXIgT1Mncy4KLSAgICBb
YXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsKLSNlbmRpZgorICAgIENGTXV0
YWJsZURhdGFSZWYgcmVzcG9uc2VEYXRhID0gQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAwKTsKKyAg
ICBhdXRvIGFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZv
cldyaXRpbmdXaXRoTXV0YWJsZURhdGE6KE5TTXV0YWJsZURhdGEgKilyZXNwb25zZURhdGFdKTsK
ICAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0Om5zUmVzcG9uc2UgZm9yS2V5OkxlZ2FjeVdlYkFy
Y2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5XTsKICAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2Rpbmdd
OwogCiAgICAgcmV0dXJuIGFkb3B0Q0YocmVzcG9uc2VEYXRhKTsKKyNlbmRpZgogfQogCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwkocmV2aXNpb24gMjI1Mjc1KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzOCBAQAorMjAxNy0xMS0yOSAgQnJlbnQgRnVsZ2hh
bSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBQYXJ0IDI6IEFkb3B0IHVwZGF0ZWQg
TlNLZXllZFtVbl1BcmNoaXZlciBBUEkgd2hlbiBhdmFpbGFibGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDEyNworICAgICAgICA8cmRhcjovL3By
b2JsZW0vMzU3MTA3Mzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhlIEFQSSB0aGF0IGFjY2VwdHMgYSB1c2VyLWFsbG9jYXRlZCBOU011dGFibGVE
YXRhIGlzIGRlcHJlY2F0ZWQuIFN3aXRjaCAoZm9yIG1hY09TIDEwLjEyIGFuZCBuZXdlcikKKyAg
ICAgICAgdG8gdGhlIG1vZGVybiBBUEkuIFVzZSB0aGUgb3JpZ2luYWwgQVBJIGZvciBtYWNPUyBi
dWlsZHMgcHJpb3IgdG8gMTAuMTIuCisKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvRGF0YURldGVj
dGlvblJlc3VsdC5tbToKKyAgICAgICAgKFdlYktpdDo6RGF0YURldGVjdGlvblJlc3VsdDo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Q29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudD46
OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudENv
bnRhY3Q+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBh
eW1lbnRNZXJjaGFudFNlc3Npb24+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OlBheW1lbnRNZXRob2Q+OjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9p
b3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW06CisgICAgICAgIChXZWJLaXQ6
OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAqIFNoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFByb3RlY3Rpb25TcGFjZT46OmVuY29kZVBsYXRmb3JtRGF0YSk6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q3JlZGVudGlhbD46OmVuY29kZVBsYXRmb3JtRGF0
YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dD46OmVuY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogU2hhcmVkL21h
Yy9XZWJIaXRUZXN0UmVzdWx0RGF0YS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViSGl0VGVzdFJl
c3VsdERhdGE6OnBsYXRmb3JtRW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldE9i
amVjdDpmb3JCdW5kbGVQYXJhbWV0ZXI6XSk6CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3Nl
dE9iamVjdHNGb3JCdW5kbGVQYXJhbWV0ZXJzV2l0aERpY3Rpb25hcnk6XSk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJv
d3NlckNvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXIgX3NldEZvcm1EZWxlZ2F0ZTpdKToKKwogMjAxNy0xMS0y
OSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAg
UkVHUkVTU0lPTihyMjE4MDY0KTogW0dUS10gQnJva2UgZW50ZXJpbmcgZnVsbHNjcmVlbiBtb2Rl
IGluIGRlYnVnIGJ1aWxkcwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGF0YURl
dGVjdGlvblJlc3VsdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tCShyZXZpc2lvbiAyMjUyNzUpCisrKyBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC00MSwxMiArNDEsMTkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgRGF0YURldGVjdGlv
blJlc3VsdDo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlRGF0YT4gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9j
XSBpbml0XSk7Ci0gICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyRnJvbU11dGFibGVE
YXRhKGRhdGEuZ2V0KCkpOworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPCAxMDEyMDApCisgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0
YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGFyY2hpdmVyID0gYWRvcHROUyhbW05T
S2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6ZGF0YS5n
ZXQoKV0pOworICAgIFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOwogICAg
IFthcmNoaXZlciBlbmNvZGVPYmplY3Q6cmVzdWx0cy5nZXQoKSBmb3JLZXk6QCJkYXRhRGV0ZWN0
b3JSZXN1bHRzIl07CiAgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsKLSAgICAKLSAgICBJ
UEM6OmVuY29kZShlbmNvZGVyLCByZWludGVycHJldF9jYXN0PENGRGF0YVJlZj4oZGF0YS5nZXQo
KSkpOyAgICAgICAgCisKKyAgICBJUEM6OmVuY29kZShlbmNvZGVyLCByZWludGVycHJldF9jYXN0
PENGRGF0YVJlZj4oZGF0YS5nZXQoKSkpOworI2Vsc2UKKyAgICBhdXRvIGFyY2hpdmVyID0gc2Vj
dXJlQXJjaGl2ZXIoKTsKKyAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnJlc3VsdHMuZ2V0KCkg
Zm9yS2V5OkAiZGF0YURldGVjdG9yUmVzdWx0cyJdOworICAgIElQQzo6ZW5jb2RlKGVuY29kZXIs
IHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSkp
OworI2VuZGlmCiB9CiAKIGJvb2wgRGF0YURldGVjdGlvblJlc3VsdDo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlciwgRGF0YURldGVjdGlvblJlc3VsdCYgcmVzdWx0KQpJbmRleDogU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Q29jb2EubW0JKHJldmlzaW9uIDIyNTI3NSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMiAr
NTEsMjIgQEAgbmFtZXNwYWNlIElQQyB7CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQ
YXltZW50Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnQm
IHBheW1lbnQpCiB7CisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA8IDEwMTIwMCkKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
RGF0YSBhbGxvY10gaW5pdF0pOwotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlckZy
b21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKKyAgICBhdXRvIGFyY2hpdmVyID0gYWRvcHROUyhb
W05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6ZGF0
YS5nZXQoKV0pOworCisgICAgW2FyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107
CisjZWxzZQorICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOworI2VuZGlmCiAK
ICAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnBheW1lbnQucGtQYXltZW50KCkgZm9yS2V5Ok5T
S2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CiAgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5n
XTsKIAorI2lmICghUExBVEZPUk0oTUFDKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTIwMCkKKyAgICBhdXRvIGRhdGEgPSBhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0
YTsKKyNlbmRpZgorCiAgICAgZW5jb2RlciA8PCBEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKIH0KIApAQCAtMTAz
LDEyICsxMTMsMjIgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdAog
CiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudENvbnRhY3Q+OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UGF5bWVudENvbnRhY3QmIHBheW1lbnRDb250
YWN0KQogeworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPCAxMDEyMDApCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEg
YWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXJGcm9tTXV0
YWJsZURhdGEoZGF0YS5nZXQoKSk7CisgICAgYXV0byBhcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tl
eWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFibGVEYXRhOmRhdGEuZ2V0
KCldKTsKKworICAgIFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOworI2Vs
c2UKKyAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKKyNlbmRpZgogCiAgICAg
W2FyY2hpdmVyIGVuY29kZU9iamVjdDpwYXltZW50Q29udGFjdC5wa0NvbnRhY3QoKSBmb3JLZXk6
TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKICAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2Rp
bmddOwogCisjaWYgKCFQTEFURk9STShNQUMpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMjAwKQorICAgIGF1dG8gZGF0YSA9IGFyY2hpdmVyLmdldCgpLmVuY29kZWRE
YXRhOworI2VuZGlmCisKICAgICBlbmNvZGVyIDw8IERhdGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOwogfQogCkBAIC0x
NjEsMTIgKzE4MSwyMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRFcnJvcj4gQXJn
CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uPjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNl
c3Npb24mIHBheW1lbnRNZXJjaGFudFNlc3Npb24pCiB7CisjaWYgKFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTIwMCkKICAgICBhdXRvIGRhdGEg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdF0pOwotICAgIGF1dG8gYXJjaGl2
ZXIgPSBzZWN1cmVBcmNoaXZlckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKKyAgICBhdXRv
IGFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRp
bmdXaXRoTXV0YWJsZURhdGE6ZGF0YS5nZXQoKV0pOworCisgICAgW2FyY2hpdmVyIHNldFJlcXVp
cmVzU2VjdXJlQ29kaW5nOllFU107CisjZWxzZQorICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVB
cmNoaXZlcigpOworI2VuZGlmCiAKICAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnBheW1lbnRN
ZXJjaGFudFNlc3Npb24ucGtQYXltZW50TWVyY2hhbnRTZXNzaW9uKCkgZm9yS2V5Ok5TS2V5ZWRB
cmNoaXZlUm9vdE9iamVjdEtleV07CiAgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsKIAor
I2lmICghUExBVEZPUk0oTUFDKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTIwMCkKKyAgICBhdXRvIGRhdGEgPSBhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YTsKKyNl
bmRpZgorCiAgICAgZW5jb2RlciA8PCBEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKIH0KIApAQCAtMTkyLDEyICsy
MjIsMjIgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXJjaAogCiB2b2lk
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZD46OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQYXltZW50TWV0aG9kJiBwYXltZW50TWV0aG9kKQogewor
I2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAx
MDEyMDApCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2NdIGlu
aXRdKTsKLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXJGcm9tTXV0YWJsZURhdGEo
ZGF0YS5nZXQoKSk7CisgICAgYXV0byBhcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2
ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFibGVEYXRhOmRhdGEuZ2V0KCldKTsKKwor
ICAgIFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOworI2Vsc2UKKyAgICBh
dXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKKyNlbmRpZgogCiAgICAgW2FyY2hpdmVy
IGVuY29kZU9iamVjdDpwYXltZW50TWV0aG9kLnBrUGF5bWVudE1ldGhvZCgpIGZvcktleTpOU0tl
eWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOwogICAgIFthcmNoaXZlciBmaW5pc2hFbmNvZGluZ107
CiAKKyNpZiAoIVBMQVRGT1JNKE1BQykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDEyMDApCisgICAgYXV0byBkYXRhID0gYXJjaGl2ZXIuZ2V0KCkuZW5jb2RlZERhdGE7
CisjZW5kaWYKKwogICAgIGVuY29kZXIgPDwgRGF0YVJlZmVyZW5jZShzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZv
cm1hdGlvbkF0UG9zaXRpb24ubW0JKHJldmlzaW9uIDIyNTI3NSkKKysrIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5tbQkod29ya2luZyBj
b3B5KQpAQCAtNzMsMTIgKzczLDE5IEBAIHZvaWQgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9z
aXRpb246OmUKICAgICBlbmNvZGVyIDw8IGlzRGF0YURldGVjdG9yTGluazsKICAgICBpZiAoaXNE
YXRhRGV0ZWN0b3JMaW5rKSB7CiAgICAgICAgIGVuY29kZXIgPDwgZGF0YURldGVjdG9ySWRlbnRp
ZmllcjsKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEIDwgMTAxMjAwKQogICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGF0YT4gZGF0YSA9IGFk
b3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIGF1dG8gYXJjaGl2
ZXIgPSBzZWN1cmVBcmNoaXZlckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKICAgICAgICAg
W2FyY2hpdmVyIGVuY29kZU9iamVjdDpkYXRhRGV0ZWN0b3JSZXN1bHRzLmdldCgpIGZvcktleTpA
ImRhdGFEZXRlY3RvclJlc3VsdHMiXTsKICAgICAgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5n
XTsKICAgICAgICAgCi0gICAgICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nh
c3Q8Q0ZEYXRhUmVmPihkYXRhLmdldCgpKSk7ICAgICAgICAKKyAgICAgICAgSVBDOjplbmNvZGUo
ZW5jb2RlciwgcmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGRhdGEuZ2V0KCkpKTsKKyNlbHNl
CisgICAgICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOworICAgICAgICBbYXJj
aGl2ZXIgZW5jb2RlT2JqZWN0OmRhdGFEZXRlY3RvclJlc3VsdHMuZ2V0KCkgZm9yS2V5OkAiZGF0
YURldGVjdG9yUmVzdWx0cyJdOworCisgICAgICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50
ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSkpOworI2Vu
ZGlmCiAgICAgfQogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0JKHJldmlzaW9uIDIyNTI3NSkKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTQyOSwxMSArNDI5LDE4IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNv
dXJjZUVycm9yPjo6ZGVjb2QKIAogdm9pZCBBcmd1bWVudENvZGVyPFByb3RlY3Rpb25TcGFjZT46
OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBQcm90ZWN0aW9uU3Bh
Y2UmIHNwYWNlKQogeworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPCAxMDEyMDApCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJs
ZURhdGEgYWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXJG
cm9tTXV0YWJsZURhdGEoZGF0YS5nZXQoKSk7CisgICAgYXV0byBhcmNoaXZlciA9IGFkb3B0TlMo
W1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFibGVEYXRhOmRh
dGEuZ2V0KCldKTsKKyAgICBbYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsK
ICAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnNwYWNlLm5zU3BhY2UoKSBmb3JLZXk6QCJwcm90
ZWN0aW9uU3BhY2UiXTsKICAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOwogICAgIElQQzo6
ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihkYXRhLmdldCgpKSk7
CisjZWxzZQorICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOworICAgIFthcmNo
aXZlciBlbmNvZGVPYmplY3Q6c3BhY2UubnNTcGFjZSgpIGZvcktleTpAInByb3RlY3Rpb25TcGFj
ZSJdOworICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVm
PihhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSkpOworI2VuZGlmCiB9CiAKIGJvb2wgQXJndW1l
bnRDb2RlcjxQcm90ZWN0aW9uU3BhY2U+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVj
b2RlciwgUHJvdGVjdGlvblNwYWNlJiBzcGFjZSkKQEAgLTQ3NCwxMSArNDgxLDE5IEBAIHZvaWQg
QXJndW1lbnRDb2RlcjxDcmVkZW50aWFsPjo6ZW5jb2RlUGwKICAgICB9CiAKICAgICBlbmNvZGVy
IDw8IGZhbHNlOworCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA8IDEwMTIwMCkKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
RGF0YSBhbGxvY10gaW5pdF0pOwotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlckZy
b21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKKyAgICBhdXRvIGFyY2hpdmVyID0gYWRvcHROUyhb
W05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6ZGF0
YS5nZXQoKV0pOworICAgIFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOwog
ICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6bnNDcmVkZW50aWFsIGZvcktleTpAImNyZWRlbnRp
YWwiXTsKICAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOwogICAgIElQQzo6ZW5jb2RlKGVu
Y29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihkYXRhLmdldCgpKSk7CisjZWxzZQor
ICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOworICAgIFthcmNoaXZlciBlbmNv
ZGVPYmplY3Q6bnNDcmVkZW50aWFsIGZvcktleTpAImNyZWRlbnRpYWwiXTsKKyAgICBJUEM6OmVu
Y29kZShlbmNvZGVyLCByZWludGVycHJldF9jYXN0PENGRGF0YVJlZj4oYXJjaGl2ZXIuZ2V0KCku
ZW5jb2RlZERhdGEpKTsKKyNlbmRpZgogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8Q3JlZGVudGlh
bD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBDcmVkZW50aWFsJiBjcmVk
ZW50aWFsKQpAQCAtNTc1LDExICs1OTAsMTggQEAgc3RkOjpvcHRpb25hbDxLZXlwcmVzc0NvbW1h
bmQ+IEFyZ3VtZW50QwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIHZvaWQgQXJndW1l
bnRDb2RlcjxDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI+OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyJiBjb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXIpCiB7CisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA8IDEwMTIwMCkKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlRGF0YSBhbGxvY10gaW5pdF0pOwotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZl
ckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKKyAgICBhdXRvIGFyY2hpdmVyID0gYWRvcHRO
UyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6
ZGF0YS5nZXQoKV0pOworICAgIFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNd
OwogICAgIGNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5lbmNvZGUoYXJjaGl2ZXIuZ2V0KCkp
OwogICAgIFthcmNoaXZlciBmaW5pc2hFbmNvZGluZ107CiAgICAgSVBDOjplbmNvZGUoZW5jb2Rl
ciwgcmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGRhdGEuZ2V0KCkpKTsKKyNlbHNlCisgICAg
YXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7CisgICAgY29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyLmVuY29kZShhcmNoaXZlci5nZXQoKSk7CisgICAgSVBDOjplbmNvZGUoZW5jb2Rl
ciwgcmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRh
KSk7CisjZW5kaWYKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPENvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlcj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXImIGNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcikKQEAgLTYwNywxNSArNjI5LDI0IEBA
IHN0YXRpYyBOU1N0cmluZyAqZGV2aWNlQ29udGV4dEtleSgpCiAKIHZvaWQgQXJndW1lbnRDb2Rl
cjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0KQogewor
I2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAx
MDEyMDApCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2NdIGlu
aXRdKTsKLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXJGcm9tTXV0YWJsZURhdGEo
ZGF0YS5nZXQoKSk7CisgICAgYXV0byBhcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2
ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFibGVEYXRhOmRhdGEuZ2V0KCldKTsKKyAg
ICBbYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsKIAogICAgIGlmIChbZ2V0
QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2Vj
dXJlQ29kaW5nKV0pCiAgICAgICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6dGFyZ2V0LmF2T3V0
cHV0Q29udGV4dCgpIGZvcktleTpkZXZpY2VDb250ZXh0S2V5KCldOwogCiAgICAgW2FyY2hpdmVy
IGZpbmlzaEVuY29kaW5nXTsKICAgICBJUEM6OmVuY29kZShlbmNvZGVyLCByZWludGVycHJldF9j
YXN0PENGRGF0YVJlZj4oZGF0YS5nZXQoKSkpOworI2Vsc2UKKyAgICBhdXRvIGFyY2hpdmVyID0g
c2VjdXJlQXJjaGl2ZXIoKTsKIAorICAgIGlmIChbZ2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBj
b25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5nKV0pCisgICAgICAgIFth
cmNoaXZlciBlbmNvZGVPYmplY3Q6dGFyZ2V0LmF2T3V0cHV0Q29udGV4dCgpIGZvcktleTpkZXZp
Y2VDb250ZXh0S2V5KCldOworCisgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgcmVpbnRlcnByZXRf
Y2FzdDxDRkRhdGFSZWY+KGFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhKSk7CisjZW5kaWYKIH0K
IAogYm9vbCBBcmd1bWVudENvZGVyPE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZGVjb2Rl
UGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
JiB0YXJnZXQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViSGl0VGVzdFJlc3Vs
dERhdGEubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkhpdFRl
c3RSZXN1bHREYXRhLm1tCShyZXZpc2lvbiAyMjUyNzUpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvV2ViSGl0VGVzdFJlc3VsdERhdGEubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEyICs0
NSwyMCBAQCB2b2lkIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpwbGF0Zm9ybUVuY29kCiAgICAgaWYg
KCFoYXNBY3Rpb25Db250ZXh0KQogICAgICAgICByZXR1cm47CiAKKyNpZiAoUExBVEZPUk0oTUFD
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMjAwKQogICAgIGF1dG8g
ZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0byBh
cmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyRnJvbU11dGFibGVEYXRhKGRhdGEuZ2V0KCkpOworICAg
IGF1dG8gYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0Rm9y
V3JpdGluZ1dpdGhNdXRhYmxlRGF0YTpkYXRhLmdldCgpXSk7CisgICAgW2FyY2hpdmVyIHNldFJl
cXVpcmVzU2VjdXJlQ29kaW5nOllFU107CiAgICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpkZXRl
Y3RlZERhdGFBY3Rpb25Db250ZXh0LmdldCgpIGZvcktleTpAImFjdGlvbkNvbnRleHQiXTsKICAg
ICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOwogCiAgICAgSVBDOjplbmNvZGUoZW5jb2Rlciwg
cmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGRhdGEuZ2V0KCkpKTsKKyNlbHNlCisgICAgYXV0
byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7CisgICAgW2FyY2hpdmVyIGVuY29kZU9iamVj
dDpkZXRlY3RlZERhdGFBY3Rpb25Db250ZXh0LmdldCgpIGZvcktleTpAImFjdGlvbkNvbnRleHQi
XTsKKworICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVm
PihhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSkpOworI2VuZGlmCiAKICAgICBlbmNvZGVyIDw8
IGRldGVjdGVkRGF0YUJvdW5kaW5nQm94OwogICAgIGVuY29kZXIgPDwgZGV0ZWN0ZWREYXRhT3Jp
Z2luYXRpbmdQYWdlT3ZlcmxheTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1Byb2Nlc3NQb29sLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCShyZXZpc2lvbiAyMjUyNzUpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjEzLDggKzIxMywxMyBAQCAtICh2b2lkKV9zZXRPYmplY3Q6KGlkIDxOU0NvcHlp
bmcsIE5TU2VjCiB7CiAgICAgYXV0byBjb3B5ID0gYWRvcHROUyhbKE5TT2JqZWN0ICopb2JqZWN0
IGNvcHldKTsKIAorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPCAxMDEyMDApCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURh
dGEgYWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIGtleWVkQXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZl
ckZyb21NdXRhYmxlRGF0YShkYXRhLmdldCgpKTsKKyAgICBhdXRvIGtleWVkQXJjaGl2ZXIgPSBh
ZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yV3JpdGluZ1dpdGhNdXRhYmxl
RGF0YTpkYXRhLmdldCgpXSk7CisgICAgW2tleWVkQXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVD
b2Rpbmc6WUVTXTsKKyNlbHNlCisgICAgYXV0byBrZXllZEFyY2hpdmVyID0gc2VjdXJlQXJjaGl2
ZXIoKTsKKyNlbmRpZgogCiAgICAgQHRyeSB7CiAgICAgICAgIFtrZXllZEFyY2hpdmVyIGVuY29k
ZU9iamVjdDpjb3B5LmdldCgpIGZvcktleTpAInBhcmFtZXRlciJdOwpAQCAtMjI4LDYgKzIzMywx
MCBAQCAtICh2b2lkKV9zZXRPYmplY3Q6KGlkIDxOU0NvcHlpbmcsIE5TU2VjCiAgICAgZWxzZQog
ICAgICAgICBbX3Byb2Nlc3NQb29sLT5lbnN1cmVCdW5kbGVQYXJhbWV0ZXJzKCkgcmVtb3ZlT2Jq
ZWN0Rm9yS2V5OnBhcmFtZXRlcl07CiAKKyNpZiAoIVBMQVRGT1JNKE1BQykgfHwgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDApCisgICAgYXV0byBkYXRhID0ga2V5ZWRB
cmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YTsKKyNlbmRpZgorCiAgICAgX3Byb2Nlc3NQb29sLT5z
ZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldEluamVjdGVkQnVuZGxl
UGFyYW1ldGVyKHBhcmFtZXRlciwgSVBDOjpEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKSkpOwogfQogCkBAIC0yMzUs
OCArMjQ0LDEzIEBAIC0gKHZvaWQpX3NldE9iamVjdHNGb3JCdW5kbGVQYXJhbWV0ZXJzV2kKIHsK
ICAgICBhdXRvIGNvcHkgPSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aERp
Y3Rpb25hcnk6ZGljdGlvbmFyeSBjb3B5SXRlbXM6WUVTXSk7CiAKKyNpZiAoUExBVEZPUk0oTUFD
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMjAwKQogICAgIGF1dG8g
ZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0byBr
ZXllZEFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXJGcm9tTXV0YWJsZURhdGEoZGF0YS5nZXQoKSk7
CisgICAgYXV0byBrZXllZEFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxv
Y10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6ZGF0YS5nZXQoKV0pOworICAgIFtrZXll
ZEFyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107CisjZWxzZQorICAgIGF1dG8g
a2V5ZWRBcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7CisjZW5kaWYKIAogICAgIEB0cnkgewog
ICAgICAgICBba2V5ZWRBcmNoaXZlciBlbmNvZGVPYmplY3Q6Y29weS5nZXQoKSBmb3JLZXk6QCJw
YXJhbWV0ZXJzIl07CkBAIC0yNDcsNiArMjYxLDEwIEBAIC0gKHZvaWQpX3NldE9iamVjdHNGb3JC
dW5kbGVQYXJhbWV0ZXJzV2kKIAogICAgIFtfcHJvY2Vzc1Bvb2wtPmVuc3VyZUJ1bmRsZVBhcmFt
ZXRlcnMoKSBzZXRWYWx1ZXNGb3JLZXlzV2l0aERpY3Rpb25hcnk6Y29weS5nZXQoKV07CiAKKyNp
ZiAoIVBMQVRGT1JNKE1BQykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDEyMDApCisgICAgYXV0byBkYXRhID0ga2V5ZWRBcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YTsK
KyNlbmRpZgorCiAgICAgX3Byb2Nlc3NQb29sLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6
OldlYlByb2Nlc3M6OlNldEluamVjdGVkQnVuZGxlUGFyYW1ldGVycyhJUEM6OkRhdGFSZWZlcmVu
Y2Uoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0
aF0pKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQb29sQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2aXNpb24gMjI1Mjc1KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjE1LDggKzIxNSwxNCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRp
YWxpemVXCiAgICAgcGFyYW1ldGVycy5mb250V2hpdGVsaXN0ID0gbV9mb250V2hpdGVsaXN0Owog
CiAgICAgaWYgKG1fYnVuZGxlUGFyYW1ldGVycykgeworI2lmIChQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEyMDApCiAgICAgICAgIGF1dG8gZGF0
YSA9IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIGF1dG8g
a2V5ZWRBcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyRnJvbU11dGFibGVEYXRhKGRhdGEuZ2V0KCkp
OworICAgICAgICBhdXRvIGtleWVkQXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVy
IGFsbG9jXSBpbml0Rm9yV3JpdGluZ1dpdGhNdXRhYmxlRGF0YTpkYXRhLmdldCgpXSk7CisKKyAg
ICAgICAgW2tleWVkQXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsKKyNlbHNl
CisgICAgICAgIGF1dG8ga2V5ZWRBcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7CisjZW5kaWYK
IAogICAgICAgICBAdHJ5IHsKICAgICAgICAgICAgIFtrZXllZEFyY2hpdmVyIGVuY29kZU9iamVj
dDptX2J1bmRsZVBhcmFtZXRlcnMuZ2V0KCkgZm9yS2V5OkAicGFyYW1ldGVycyJdOwpAQCAtMjI1
LDYgKzIzMSwxMCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXCiAg
ICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBlbmNvZGUgYnVuZGxlIHBhcmFtZXRlcnM6
ICVAIiwgZXhjZXB0aW9uKTsKICAgICAgICAgfQogCisjaWYgKCFQTEFURk9STShNQUMpIHx8IF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwKQorICAgICAgICBhdXRvIGRh
dGEgPSByZXRhaW5QdHIoa2V5ZWRBcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSk7CisjZW5kaWYK
KwogICAgICAgICBwYXJhbWV0ZXJzLmJ1bmRsZVBhcmFtZXRlckRhdGEgPSBBUEk6OkRhdGE6OmNy
ZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKilbZGF0YSBieXRlc10sIFtk
YXRhIGxlbmd0aF0sIFtdICh1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkgewogICAg
ICAgICAgICAgWyhOU0RhdGEgKilkYXRhIHJlbGVhc2VdOwogICAgICAgICB9LCBkYXRhLmxlYWtS
ZWYoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCShyZXZpc2lvbiAy
MjUyNzUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21h
Yy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTQ4NCw4ICs0ODQsMTMgQEAgLSAodm9pZClfc2V0Rm9ybURlbGVnYXRlOihpZCA8
V0tXZWJQcm9jZQogICAgICAgICAgICAgaWYgKCF1c2VyT2JqZWN0KQogICAgICAgICAgICAgICAg
IHJldHVybjsKIAorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPCAxMDEyMDApCiAgICAgICAgICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlRGF0YSBhbGxvY10gaW5pdF0pOwotICAgICAgICAgICAgYXV0byBhcmNoaXZlciA9IHNl
Y3VyZUFyY2hpdmVyRnJvbU11dGFibGVEYXRhKGRhdGEuZ2V0KCkpOworICAgICAgICAgICAgYXV0
byBhcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0
aW5nV2l0aE11dGFibGVEYXRhOmRhdGEuZ2V0KCldKTsKKyAgICAgICAgICAgIFthcmNoaXZlciBz
ZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOworI2Vsc2UKKyAgICAgICAgICAgIGF1dG8gYXJj
aGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOworI2VuZGlmCiAgICAgICAgICAgICBAdHJ5IHsKICAg
ICAgICAgICAgICAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnVzZXJPYmplY3QgZm9yS2V5OkAi
dXNlck9iamVjdCJdOwogICAgICAgICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRp
b24pIHsKQEAgLTQ5NCw2ICs0OTksMTAgQEAgLSAodm9pZClfc2V0Rm9ybURlbGVnYXRlOihpZCA8
V0tXZWJQcm9jZQogICAgICAgICAgICAgfQogICAgICAgICAgICAgW2FyY2hpdmVyIGZpbmlzaEVu
Y29kaW5nXTsKIAorI2lmICghUExBVEZPUk0oTUFDKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwMTIwMCkKKyAgICAgICAgICAgIGF1dG8gZGF0YSA9IHJldGFpblB0cihh
cmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSk7CisjZW5kaWYKKwogICAgICAgICAgICAgdXNlckRh
dGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKFdURk1vdmUoZGF0YSkpOwogICAg
ICAgICB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>