<?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>201570</bug_id>
          
          <creation_ts>2019-09-06 17:16:22 -0700</creation_ts>
          <short_desc>Harden protection of the Gigacage Config parameters.</short_desc>
          <delta_ts>2019-09-07 18:19:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>bmalloc</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=201579</see_also>
          <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>
          <dependson>201521</dependson>
          <blocked>201577</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1568775</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-06 17:16:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/55134229&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568785</commentid>
    <comment_count>1</comment_count>
      <attachid>378259</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-06 18:06:07 -0700</bug_when>
    <thetext>Created attachment 378259
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568786</commentid>
    <comment_count>2</comment_count>
      <attachid>378259</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-09-06 18:12:36 -0700</bug_when>
    <thetext>Comment on attachment 378259
proposed patch.

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

&gt; Source/bmalloc/ChangeLog:23
&gt; +        3. Use a storeStore fence in freezeGigacageConfig() and permanentlyFreezeGigacageConfig()
&gt; +           to ensure that values in the Config has been written out before we freeze it.

this doesn&apos;t sound necessary. The CPU would be wrong if it moved such a store below whatever the kernel is doing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568787</commentid>
    <comment_count>3</comment_count>
      <attachid>378259</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-09-06 18:14:45 -0700</bug_when>
    <thetext>Comment on attachment 378259
proposed patch.

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

&gt; Source/bmalloc/bmalloc/Gigacage.cpp:86
&gt; +    std::atomic_thread_fence(std::memory_order_seq_cst);

yeah this seems dubious and unneeded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568788</commentid>
    <comment_count>4</comment_count>
      <attachid>378259</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-09-06 18:16:21 -0700</bug_when>
    <thetext>Comment on attachment 378259
proposed patch.

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

&gt; Source/bmalloc/bmalloc/Gigacage.cpp:121
&gt; +    result = vm_protect(mach_task_self(), reinterpret_cast&lt;vm_address_t&gt;(&amp;g_gigacageConfig), configSizeToProtect, true, VM_PROT_READ);

can you name &quot;true&quot; here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568789</commentid>
    <comment_count>5</comment_count>
      <attachid>378259</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-06 18:21:52 -0700</bug_when>
    <thetext>Comment on attachment 378259
proposed patch.

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

&gt;&gt; Source/bmalloc/ChangeLog:23
&gt;&gt; +           to ensure that values in the Config has been written out before we freeze it.
&gt; 
&gt; this doesn&apos;t sound necessary. The CPU would be wrong if it moved such a store below whatever the kernel is doing

I was thinking that, but wanted to be get 2nd opinions to be doubly sure.  Will remove.

&gt;&gt; Source/bmalloc/bmalloc/Gigacage.cpp:121
&gt;&gt; +    result = vm_protect(mach_task_self(), reinterpret_cast&lt;vm_address_t&gt;(&amp;g_gigacageConfig), configSizeToProtect, true, VM_PROT_READ);
&gt; 
&gt; can you name &quot;true&quot; here?

Sure.  I&apos;ll use an enum with descriptive names like AllowPermissionChangesAfterThis and DisallowPermissionChangesAfterThis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568791</commentid>
    <comment_count>6</comment_count>
      <attachid>378259</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-09-06 18:37:47 -0700</bug_when>
    <thetext>Comment on attachment 378259
proposed patch.

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

&gt; Source/bmalloc/ChangeLog:20
&gt; +           On OS(DARWIN), this is made possible by using vm_protect with a true
&gt; +           set_maximum argument.  We also add a g_gigacageConfig.isPermanentlyFrozen flag
&gt; +           that we assert.

you should explain what this is for DARWIN

&gt; Source/bmalloc/bmalloc/Gigacage.cpp:90
&gt; +    result = vm_protect(mach_task_self(), reinterpret_cast&lt;vm_address_t&gt;(&amp;g_gigacageConfig), configSizeToProtect, false, VM_PROT_READ);

let&apos;s name &quot;false&quot; here

&gt; Source/bmalloc/bmalloc/Gigacage.cpp:116
&gt; +    std::atomic_thread_fence(std::memory_order_seq_cst);

also is unneeded. Is is not expected that multiple threads can call this at the same time, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568796</commentid>
    <comment_count>7</comment_count>
      <attachid>378259</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-06 18:50:17 -0700</bug_when>
    <thetext>Comment on attachment 378259
proposed patch.

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

Thanks for the review.

&gt;&gt; Source/bmalloc/ChangeLog:20
&gt;&gt; +           that we assert.
&gt; 
&gt; you should explain what this is for DARWIN

Will do.

&gt;&gt; Source/bmalloc/bmalloc/Gigacage.cpp:90
&gt;&gt; +    result = vm_protect(mach_task_self(), reinterpret_cast&lt;vm_address_t&gt;(&amp;g_gigacageConfig), configSizeToProtect, false, VM_PROT_READ);
&gt; 
&gt; let&apos;s name &quot;false&quot; here

Done.

&gt;&gt; Source/bmalloc/bmalloc/Gigacage.cpp:116
&gt;&gt; +    std::atomic_thread_fence(std::memory_order_seq_cst);
&gt; 
&gt; also is unneeded. Is is not expected that multiple threads can call this at the same time, right?

Removed.  It&apos;s expected that only the main thread should call forbidDisablingPrimitiveGigacage() (and therefore, permanentlyFreezeGigacageConfig()).  We&apos;re not expecting other threads to call this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568803</commentid>
    <comment_count>8</comment_count>
      <attachid>378264</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-06 19:01:15 -0700</bug_when>
    <thetext>Created attachment 378264
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568804</commentid>
    <comment_count>9</comment_count>
      <attachid>378265</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-06 19:02:52 -0700</bug_when>
    <thetext>Created attachment 378265
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568830</commentid>
    <comment_count>10</comment_count>
      <attachid>378276</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-06 21:04:17 -0700</bug_when>
    <thetext>Created attachment 378276
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568842</commentid>
    <comment_count>11</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-06 22:42:51 -0700</bug_when>
    <thetext>Landed in r249608: &lt;http://trac.webkit.org/r249608&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568881</commentid>
    <comment_count>12</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-07 07:55:23 -0700</bug_when>
    <thetext>FYI, fixed disabled-gigacage-* failures in https://bugs.webkit.org/show_bug.cgi?id=201577.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568884</commentid>
    <comment_count>13</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-07 07:57:37 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #12)
&gt; FYI, fixed disabled-gigacage-* failures in
&gt; https://bugs.webkit.org/show_bug.cgi?id=201577.

Correction: fixed disabled-gigacage-* test failures in https://bugs.webkit.org/show_bug.cgi?id=201579.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568927</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-07 15:13:11 -0700</bug_when>
    <thetext>I am getting a lot of crashes running the layout tests:
Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x00000000bbadbeef
Exception Note:        EXC_CORPSE_NOTIFY

Termination Signal:    Segmentation fault: 11
Termination Reason:    Namespace SIGNAL, Code 0xb
Terminating Process:   exc handler [9131]

Application Specific Information:
This process is running with libgmalloc.dylib (GuardMalloc) which may have forced the crash due to a memory access error.
 

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.JavaScriptCore      	0x0000000740256780 Gigacage::forbidDisablingPrimitiveGigacage() + 32
1   com.apple.WebKit              	0x000000010a5c987e WebKit::WebProcess::WebProcess() + 1246 (WebProcess.cpp:224)
2   com.apple.WebKit              	0x000000010a5c9395 WebKit::WebProcess::WebProcess() + 21 (WebProcess.cpp:224)
3   com.apple.WebKit              	0x000000010a5c933b WebKit::WebProcess::singleton() + 43 (WebProcess.cpp:176)
4   com.apple.WebKit              	0x000000010a39c811 void WebKit::initializeAuxiliaryProcess&lt;WebKit::WebProcess&gt;(WebKit::AuxiliaryProcessInitializationParameters&amp;&amp;) + 17 (XPCServiceEntryPoint.h:73)
5   com.apple.WebKit              	0x000000010a399689 void WebKit::XPCServiceInitializer&lt;WebKit::WebProcess, WebKit::XPCServiceInitializerDelegate&gt;(WTF::OSObjectPtr&lt;NSObject&lt;OS_xpc_object&gt;*&gt;, NSObject&lt;OS_xpc_object&gt;*, NSObject&lt;OS_xpc_object&gt;*) + 921 (XPCServiceEntryPoint.h:128)
6   com.apple.WebKit              	0x000000010a3992b1 WebContentServiceInitializer + 81 (WebContentServiceEntryPoint.mm:53)
7   com.apple.WebKit              	0x0000000109d3d00a invocation function for block in WebKit::XPCServiceEventHandler(NSObject&lt;OS_xpc_object&gt;*) + 650 (XPCServiceMain.mm:79)
8   libxpc.dylib                  	0x00007fff650d9078 _xpc_connection_call_event_handler + 56
9   libxpc.dylib                  	0x00007fff650d7268 _xpc_connection_mach_event + 927
10  libdispatch.dylib             	0x00007fff64e3e57e _dispatch_client_callout4 + 9
11  libdispatch.dylib             	0x00007fff64e53aeb _dispatch_mach_msg_invoke + 435
12  libdispatch.dylib             	0x00007fff64e43950 _dispatch_lane_serial_drain + 263
13  libdispatch.dylib             	0x00007fff64e5463e _dispatch_mach_invoke + 481
14  libdispatch.dylib             	0x00007fff64e49a91 _dispatch_main_queue_callback_4CF + 783
15  com.apple.CoreFoundation      	0x00007fff2db5bd00 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9
16  com.apple.CoreFoundation      	0x00007fff2db5b44a __CFRunLoopRun + 2370
17  com.apple.CoreFoundation      	0x00007fff2db5a883 CFRunLoopRunSpecific + 499
18  com.apple.Foundation          	0x00007fff301e9e2d -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 212
19  com.apple.Foundation          	0x00007fff301e9d46 -[NSRunLoop(NSRunLoop) run] + 76
20  libxpc.dylib                  	0x00007fff650f49d6 _xpc_objc_main.cold.4 + 49
21  libxpc.dylib                  	0x00007fff650dd7e1 _xpc_objc_main + 559
22  libxpc.dylib                  	0x00007fff650dd2fc xpc_main + 377
23  com.apple.WebKit              	0x0000000109d32cea WebKit::XPCServiceMain(int, char const**) + 1322 (XPCServiceMain.mm:147)
24  com.apple.WebKit              	0x000000010accc12b WKXPCServiceMain + 27 (WKMain.mm:33)
25  com.apple.WebKit.WebContent   	0x00000001095baeb2 main + 34 (AuxiliaryProcessMain.cpp:30)
26  libdyld.dylib                 	0x00007fff64e8e2a5 start + 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568932</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-07 15:44:02 -0700</bug_when>
    <thetext>Unfortunately, EWS does not run WK2 debug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568937</commentid>
    <comment_count>16</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-07 16:08:39 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #14)
&gt; I am getting a lot of crashes running the layout tests:
...
&gt; Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
&gt; 0   com.apple.JavaScriptCore      	0x0000000740256780
&gt; Gigacage::forbidDisablingPrimitiveGigacage() + 32
&gt; 1   com.apple.WebKit              	0x000000010a5c987e
&gt; WebKit::WebProcess::WebProcess() + 1246 (WebProcess.cpp:224)
...


I&apos;m investigating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568942</commentid>
    <comment_count>17</comment_count>
      <attachid>378306</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-07 17:17:25 -0700</bug_when>
    <thetext>Created attachment 378306
follow up fix patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568948</commentid>
    <comment_count>18</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-07 18:19:56 -0700</bug_when>
    <thetext>Thanks for the review.  Follow up fix landed in r249621: &lt;http://trac.webkit.org/r249621&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378259</attachid>
            <date>2019-09-06 18:06:07 -0700</date>
            <delta_ts>2019-09-06 19:01:15 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-201570.patch</filename>
            <type>text/plain</type>
            <size>19426</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ5NjAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE5LTA5LTA2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBI
YXJkZW4gcHJvdGVjdGlvbiBvZiB0aGUgR2lnYWNhZ2UgQ29uZmlnIHBhcmFtZXRlcnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE1NzAKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzU1MTM0MjI5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEp1c3QgcmVuYW1pbmcgc29tZSBmdW5jdGlvbiBuYW1lcyBo
ZXJlLgorCisgICAgICAgICogYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6
dGVzdENhZ2VQcmVzZXJ2ZXNQQUNGYWlsdXJlQml0KToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlI
ZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Y2FnZUNvbmRpdGlvbmFs
bHkpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChqc2NtYWluKToKKwogMjAxOS0wOS0w
NiAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgTWF0
aC5yb3VuZCgpIHByb2R1Y2VzIHdyb25nIHJlc3VsdCBmb3IgdmFsdWUgcHJpb3IgdG8gMC41Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjQ5NjAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwODYsNyArMzA4Niw3IEBAIGlu
dCBqc2NtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
CiAgICAgSlNDOjpXYXNtOjplbmFibGVGYXN0TWVtb3J5KCk7CiAjZW5kaWYKLSAgICBHaWdhY2Fn
ZTo6ZGlzYWJsZURpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSWZTaG91bGRCZUVuYWJsZWQoKTsK
KyAgICBHaWdhY2FnZTo6Zm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UoKTsKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIGF1dG8mIG1lbW9yeVByZXNzdXJlSGFuZGxlciA9IE1lbW9y
eVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAkocmV2aXNpb24gMjQ5NjAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEyMTAsNyArMTIxMCw3IEBAIHZvaWQgdGVzdE1vdmVEb3VibGVDb25kaXRpb25hbGx5NjQoKQog
c3RhdGljIHZvaWQgdGVzdENhZ2VQcmVzZXJ2ZXNQQUNGYWlsdXJlQml0KCkKIHsKICNpZiBHSUdB
Q0FHRV9FTkFCTEVECi0gICAgQVNTRVJUKCFHaWdhY2FnZTo6aXNEaXNhYmxpbmdQcmltaXRpdmVH
aWdhY2FnZURpc2FibGVkKCkpOworICAgIEFTU0VSVCghR2lnYWNhZ2U6OmlzRGlzYWJsaW5nUHJp
bWl0aXZlR2lnYWNhZ2VGb3JiaWRkZW4oKSk7CiAgICAgYXV0byBjYWdlID0gY29tcGlsZShbXSAo
Q0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsK
ICAgICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5oCShyZXZpc2lvbiAyNDk2MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTg4LDcgKzE1ODgsNyBAQCBwdWJsaWM6
CiAgICAgewogI2lmIEdJR0FDQUdFX0VOQUJMRUQKICAgICAgICAgaWYgKEdpZ2FjYWdlOjppc0Vu
YWJsZWQoa2luZCkpIHsKLSAgICAgICAgICAgIGlmIChraW5kICE9IEdpZ2FjYWdlOjpQcmltaXRp
dmUgfHwgR2lnYWNhZ2U6OmlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCgpKQor
ICAgICAgICAgICAgaWYgKGtpbmQgIT0gR2lnYWNhZ2U6OlByaW1pdGl2ZSB8fCBHaWdhY2FnZTo6
aXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUZvcmJpZGRlbigpKQogICAgICAgICAgICAgICAg
IGNhZ2VXaXRob3V0VW50YWdnaW5nKGtpbmQsIHN0b3JhZ2UpOwogICAgICAgICAgICAgZWxzZSB7
CiAjaWYgQ1BVKEFSTTY0RSkKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDk2MDApCisrKyBTb3VyY2UvV1RG
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE5LTA5LTA2ICBN
YXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBIYXJkZW4gcHJvdGVjdGlv
biBvZiB0aGUgR2lnYWNhZ2UgQ29uZmlnIHBhcmFtZXRlcnMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE1NzAKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzU1MTM0MjI5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEp1c3QgcmVuYW1pbmcgc29tZSBmdW5jdGlvbiBuYW1lcyBoZXJlLgorCisgICAgICAg
ICogd3RmL0dpZ2FjYWdlLmg6CisgICAgICAgIChHaWdhY2FnZTo6Zm9yYmlkRGlzYWJsaW5nUHJp
bWl0aXZlR2lnYWNhZ2UpOgorICAgICAgICAoR2lnYWNhZ2U6OmlzRGlzYWJsaW5nUHJpbWl0aXZl
R2lnYWNhZ2VGb3JiaWRkZW4pOgorICAgICAgICAoR2lnYWNhZ2U6OmRpc2FibGVEaXNhYmxpbmdQ
cmltaXRpdmVHaWdhY2FnZUlmU2hvdWxkQmVFbmFibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKEdp
Z2FjYWdlOjppc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQpOiBEZWxldGVkLgor
CiAyMDE5LTA5LTA1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZWZhY3RvciB0aGUgR2lnYWNhZ2UgY29kZSB0byByZXF1aXJlIGxlc3MgcG9pbnRlciBjYXN0aW5n
LgpJbmRleDogU291cmNlL1dURi93dGYvR2lnYWNhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9HaWdhY2FnZS5oCShyZXZpc2lvbiAyNDk2MDApCisrKyBTb3VyY2UvV1RGL3d0Zi9H
aWdhY2FnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw5ICs0OSw5IEBAIGlubGluZSBib29sIHNo
b3VsZEJlRW5hYmxlZCgpIHsgcmV0dXJuIGYKIGlubGluZSB2b2lkIGFkZFByaW1pdGl2ZURpc2Fi
bGVDYWxsYmFjayh2b2lkICgqKSh2b2lkKiksIHZvaWQqKSB7IH0KIGlubGluZSB2b2lkIHJlbW92
ZVByaW1pdGl2ZURpc2FibGVDYWxsYmFjayh2b2lkICgqKSh2b2lkKiksIHZvaWQqKSB7IH0KIAot
aW5saW5lIHZvaWQgZGlzYWJsZURpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSWZTaG91bGRCZUVu
YWJsZWQoKSB7IH0KK2lubGluZSB2b2lkIGZvcmJpZERpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdl
KCkgeyB9CiAKLWlubGluZSBib29sIGlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxl
ZCgpIHsgcmV0dXJuIGZhbHNlOyB9CitpbmxpbmUgYm9vbCBpc0Rpc2FibGluZ1ByaW1pdGl2ZUdp
Z2FjYWdlRm9yYmlkZGVuKCkgeyByZXR1cm4gZmFsc2U7IH0KIGlubGluZSBib29sIGlzUHJpbWl0
aXZlR2lnYWNhZ2VQZXJtYW5lbnRseUVuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQogaW5saW5l
IGJvb2wgY2FuUHJpbWl0aXZlR2lnYWNhZ2VCZURpc2FibGVkKCkgeyByZXR1cm4gdHJ1ZTsgfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjQ5NjAwKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxOS0wOS0wNiAgTWFyayBMYW0g
IDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSGFyZGVuIHByb3RlY3Rpb24gb2YgdGhl
IEdpZ2FjYWdlIENvbmZpZyBwYXJhbWV0ZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNTcwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTEz
NDIyOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBK
dXN0IHJlbmFtaW5nIGEgZnVuY3Rpb24gbmFtZSBoZXJlLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcDoKKwogMjAxOS0wOS0wNiAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRobl0gTWFrZSBXZWJBdXRobiBkZWZhdWx0IG9m
ZiBhbmQgbGV0IGNsaWVudHMgdHVybiBpdCBvbiBhdCB3aWxsCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyNDk2MDApCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOSw3ICsy
MjksNyBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICAgICB9KTsKICNlbmRpZgogICAgIAot
ICAgIEdpZ2FjYWdlOjpkaXNhYmxlRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJZlNob3VsZEJl
RW5hYmxlZCgpOworICAgIEdpZ2FjYWdlOjpmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2Fn
ZSgpOwogfQogCiBXZWJQcm9jZXNzOjp+V2ViUHJvY2VzcygpCkluZGV4OiBTb3VyY2UvYm1hbGxv
Yy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNDk2MDApCisrKyBTb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw4MCBAQAorMjAxOS0wOS0wNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5j
b20+CisKKyAgICAgICAgSGFyZGVuIHByb3RlY3Rpb24gb2YgdGhlIEdpZ2FjYWdlIENvbmZpZyBw
YXJhbWV0ZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAxNTcwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTEzNDIyOT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAxLiBSZW5hbWUgcHJvdGVjdEdp
Z2FjYWdlQmFzZVB0cnMoKSBhbmQgdW5wcm90ZWN0R2lnYWNhZ2VCYXNlUHRycygpIHRvCisgICAg
ICAgICAgIGZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCkgYW5kIHVuZnJlZXplR2lnYWNhZ2VDb25maWco
KSByZXNwZWN0aXZlbHkuCisKKyAgICAgICAgICAgQWxzbyBtb3ZlIHRoZSBhbGlnbm1lbnQgY2hl
Y2sgaW4gcHJvdGVjdEdpZ2FjYWdlQmFzZVB0cnMoKSBpbnRvIGVuc3VyZUdpZ2FjYWdlKCkuCisg
ICAgICAgICAgIFRoZXJlJ3Mgbm8gbmVlZCB0byBjaGVjayBpdCBtb3JlIHRoYW4gb25jZS4KKwor
ICAgICAgICAyLiBJbnRyb2R1Y2UgcGVybWFuZW50bHlGcmVlemVHaWdhY2FnZUNvbmZpZygpIHdo
aWNoIHBlcm1hbmVudGx5IG1ha2VzIHRoZQorICAgICAgICAgICBDb25maWcgUmVhZE9ubHkuICBP
bmNlIGludm9rZWQsIHRoZSBDb25maWcgY2Fubm90IGJlIG1hZGUgd3JpdGFibGUgYWdhaW4uCisK
KyAgICAgICAgICAgT24gT1MoREFSV0lOKSwgdGhpcyBpcyBtYWRlIHBvc3NpYmxlIGJ5IHVzaW5n
IHZtX3Byb3RlY3Qgd2l0aCBhIHRydWUKKyAgICAgICAgICAgc2V0X21heGltdW0gYXJndW1lbnQu
ICBXZSBhbHNvIGFkZCBhIGdfZ2lnYWNhZ2VDb25maWcuaXNQZXJtYW5lbnRseUZyb3plbiBmbGFn
CisgICAgICAgICAgIHRoYXQgd2UgYXNzZXJ0LgorCisgICAgICAgIDMuIFVzZSBhIHN0b3JlU3Rv
cmUgZmVuY2UgaW4gZnJlZXplR2lnYWNhZ2VDb25maWcoKSBhbmQgcGVybWFuZW50bHlGcmVlemVH
aWdhY2FnZUNvbmZpZygpCisgICAgICAgICAgIHRvIGVuc3VyZSB0aGF0IHZhbHVlcyBpbiB0aGUg
Q29uZmlnIGhhcyBiZWVuIHdyaXR0ZW4gb3V0IGJlZm9yZSB3ZSBmcmVlemUgaXQuCisKKyAgICAg
ICAgNC4gUmVuYW1lIGRpc2FibGVEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUlmU2hvdWxkQmVF
bmFibGVkKCkgdG8KKyAgICAgICAgICAgZm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2Uo
KSBiZWNhdXNlICJkaXNhYmxpbmdEaXNhYmxpbmciIGlzIGEgdG9uZ3VlCisgICAgICAgICAgIHR3
aXN0ZXIuCisKKyAgICAgICAgICAgQWxzbywgd2UgZG9uJ3Qgd2FudCB0byBtYWtlIGl0IGNvbmRp
dGlvbmFsIG9uICJJZlNob3VsZEJlRW5hYmxlZCIuICBXZSB3YW50CisgICAgICAgICAgIGZvcmJp
ZERpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlKCkgdG8gYmUgaXJyZXZlcnNpYmxlLiAgSXQgaXMg
dXAgdG8gdGhlIGNsaWVudAorICAgICAgICAgICB0byBlbnN1cmUgdGhhdCB0aGUgR2lnYWNhZ2Ug
aXMgYWxyZWFkeSBpbml0aWFsaXplZCAoaWYgcG9zc2libGUpIGJlZm9yZQorICAgICAgICAgICBp
bnZva2luZyBmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpLiAgQ29uY2VwdHVhbGx5
LCB0aGUgZm9yYmlkZGluZworICAgICAgICAgICBpc24ndCBhYm91dCBndWFyYW50ZWVpbmcgdGhh
dCB0aGUgR2lnYWNhZ2UgaXMgZW5hYmxlZC4gIEl0IG9ubHkgdGFrZXMgYXdheSB0aGUKKyAgICAg
ICAgICAgb3B0aW9uIHRvIGRpc2FibGUgaXQuCisKKyAgICAgICAgICAgVGhhdCBzYWlkLCBmb3Ji
aWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpIGlzIG9ubHkgaW52b2tlZCBieSBjbGllbnRz
IHRoYXQKKyAgICAgICAgICAgY2FyZSBhYm91dCBrZWVwaW5nIHRoZSBHaWdhY2FnZSBlbmFibGVk
LiAgU28sIGl0IGRvZXMgYSBzYW5pdHkgY2hlY2sgKHdpdGggYW4KKyAgICAgICAgICAgYXNzZXJ0
aW9uKSB0aGF0IGlmICFHSUdBQ0FHRV9BTExPQ0FUSU9OX0NBTl9GQUlMLCB0aGVuIHRoZSBHaWdh
Y2FnZSBzaG91bGQgYmUKKyAgICAgICAgICAgaGF2ZSBiZWVuIGluaXRpYWxpemVkIGFuZCBlbmFi
bGVkIGJlZm9yZSBpbnZva2luZyBpdC4KKworICAgICAgICAgICBXZSBhbHNvIG1ha2Ugc3VyZSB0
aGF0IGZvcmJpZERpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlKCkgY2FsbHMKKyAgICAgICAgICAg
cGVybWFuZW50bHlGcmVlemVHaWdhY2FnZUNvbmZpZygpIHVuY29uZGl0aW9uYWxseS4gIEl0IGlz
IHNhZmUgdG8gY2FsbCBpdCBtb3JlCisgICAgICAgICAgIHRoYW4gb25jZS4gIFRoaXMgZ3VhcmFu
dGVlcyB0aGF0IHRoZSBDb25maWcgaXMgcGVybWFuZW50bHkgZnJvemVuIGFmdGVyIHRoaXMsCisg
ICAgICAgICAgIGV2ZW4gaWYgYSBidWcgc2hvdWxkIGluYWR2ZXJ0YW50bHkgc2V0IHRoZQorICAg
ICAgICAgICBnX2dpZ2FjYWdlQ29uZmlnLmRpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSXNGb3Ji
aWRkZW4gZmxhZyBiZWZvcmUKKyAgICAgICAgICAgZm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2ln
YWNhZ2UoKSBpcyBpbnZva2VkLgorCisgICAgICAgIDUuIEFzc2VydCB0aGF0IGVuc3VyZUdpZ2Fj
YWdlKCkgaXMgb25seSBjYWxsZWQgb25jZS4KKworICAgICAgICA2LiBBc3NlcnQgdGhhdCBzaG91
bGRCZUVuYWJsZWQoKSBpcyBvbmx5IGNhbGxlZCBvbmNlLgorICAgICAgICAgICBBbHNvIG1vdmVk
IGl0cyBjYWNoZWQgcmVzdWx0IGludG8gdGhlIENvbmZpZyBzbyB0aGF0IGl0IGNhbiBiZSBmcm96
ZW4uCisKKyAgICAgICAgKiBibWFsbG9jL0dpZ2FjYWdlLmNwcDoKKyAgICAgICAgKEdpZ2FjYWdl
OjpibWFsbG9jOjpmcmVlemVHaWdhY2FnZUNvbmZpZyk6CisgICAgICAgIChHaWdhY2FnZTo6Ym1h
bGxvYzo6dW5mcmVlemVHaWdhY2FnZUNvbmZpZyk6CisgICAgICAgIChHaWdhY2FnZTo6Ym1hbGxv
Yzo6cGVybWFuZW50bHlGcmVlemVHaWdhY2FnZUNvbmZpZyk6CisgICAgICAgIChHaWdhY2FnZTo6
Ym1hbGxvYzo6VW5mcmVlemVHaWdhY2FnZUNvbmZpZ1Njb3BlOjpVbmZyZWV6ZUdpZ2FjYWdlQ29u
ZmlnU2NvcGUpOgorICAgICAgICAoR2lnYWNhZ2U6OmJtYWxsb2M6OlVuZnJlZXplR2lnYWNhZ2VD
b25maWdTY29wZTo6flVuZnJlZXplR2lnYWNhZ2VDb25maWdTY29wZSk6CisgICAgICAgIChHaWdh
Y2FnZTo6ZW5zdXJlR2lnYWNhZ2UpOgorICAgICAgICAoR2lnYWNhZ2U6OmRpc2FibGVQcmltaXRp
dmVHaWdhY2FnZSk6CisgICAgICAgIChHaWdhY2FnZTo6dmVyaWZ5R2lnYWNhZ2VJc0VuYWJsZWQp
OgorICAgICAgICAoR2lnYWNhZ2U6OmZvcmJpZERpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlKToK
KyAgICAgICAgKEdpZ2FjYWdlOjppc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRm9yYmlkZGVu
KToKKyAgICAgICAgKEdpZ2FjYWdlOjpzaG91bGRCZUVuYWJsZWQpOgorICAgICAgICAoR2lnYWNh
Z2U6OmJtYWxsb2M6OnByb3RlY3RHaWdhY2FnZUJhc2VQdHJzKTogRGVsZXRlZC4KKyAgICAgICAg
KEdpZ2FjYWdlOjpibWFsbG9jOjp1bnByb3RlY3RHaWdhY2FnZUJhc2VQdHJzKTogRGVsZXRlZC4K
KyAgICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjpVbnByb3RlY3RHaWdhY2FnZUJhc2VQdHJzU2Nv
cGU6OlVucHJvdGVjdEdpZ2FjYWdlQmFzZVB0cnNTY29wZSk6IERlbGV0ZWQuCisgICAgICAgIChH
aWdhY2FnZTo6Ym1hbGxvYzo6VW5wcm90ZWN0R2lnYWNhZ2VCYXNlUHRyc1Njb3BlOjp+VW5wcm90
ZWN0R2lnYWNhZ2VCYXNlUHRyc1Njb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKEdpZ2FjYWdlOjpw
cmltaXRpdmVHaWdhY2FnZURpc2FibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKEdpZ2FjYWdlOjpk
aXNhYmxlRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJZlNob3VsZEJlRW5hYmxlZCk6IERlbGV0
ZWQuCisgICAgICAgIChHaWdhY2FnZTo6aXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZURpc2Fi
bGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBibWFsbG9jL0dpZ2FjYWdlLmg6CisgICAgICAgIChH
aWdhY2FnZTo6aXNQcmltaXRpdmVHaWdhY2FnZVBlcm1hbmVudGx5RW5hYmxlZCk6CisgICAgICAg
IChHaWdhY2FnZTo6Y2FuUHJpbWl0aXZlR2lnYWNhZ2VCZURpc2FibGVkKToKKyAgICAgICAgKEdp
Z2FjYWdlOjpmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSk6CisgICAgICAgIChHaWdh
Y2FnZTo6ZGlzYWJsZURpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSWZTaG91bGRCZUVuYWJsZWQp
OiBEZWxldGVkLgorCiAyMDE5LTA5LTA2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4K
IAogICAgICAgICBVc2UgRmFpbHVyZUFjdGlvbiBldmVyeXdoZXJlIGluIGJtYWxsb2MgaW5zdGVh
ZCBvZiBhIGNyYXNoT25GYWlsdXJlIGJvb2xlYW4uCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0dpZ2FjYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dp
Z2FjYWdlLmNwcAkocmV2aXNpb24gMjQ5NjAwKQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9H
aWdhY2FnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDMwICs4MSw2MCBAQCB1c2luZyBuYW1l
c3BhY2UgYm1hbGxvYzsKIAogbmFtZXNwYWNlIHsKIAotYm9vbCBzX2lzRGlzYWJsaW5nUHJpbWl0
aXZlR2lnYWNhZ2VEaXNhYmxlZDsKK3N0YXRpYyB2b2lkIGZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCkK
K3sKKyAgICBzdGQ6OmF0b21pY190aHJlYWRfZmVuY2Uoc3RkOjptZW1vcnlfb3JkZXJfc2VxX2Nz
dCk7CisKKyAgICBpbnQgcmVzdWx0OworI2lmIEJPUyhEQVJXSU4pCisgICAgcmVzdWx0ID0gdm1f
cHJvdGVjdChtYWNoX3Rhc2tfc2VsZigpLCByZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4o
JmdfZ2lnYWNhZ2VDb25maWcpLCBjb25maWdTaXplVG9Qcm90ZWN0LCBmYWxzZSwgVk1fUFJPVF9S
RUFEKTsKKyNlbHNlCisgICAgcmVzdWx0ID0gbXByb3RlY3QoJmdfZ2lnYWNhZ2VDb25maWcsIGNv
bmZpZ1NpemVUb1Byb3RlY3QsIFBST1RfUkVBRCk7CisjZW5kaWYKKyAgICBSRUxFQVNFX0JBU1NF
UlQoIXJlc3VsdCk7Cit9CiAKLXZvaWQgcHJvdGVjdEdpZ2FjYWdlQmFzZVB0cnMoKQorc3RhdGlj
IHZvaWQgdW5mcmVlemVHaWdhY2FnZUNvbmZpZygpCiB7Ci0gICAgLy8gV2UgbWlnaHQgb25seSBn
ZXQgcGFnZSBzaXplIGFsaWdubWVudCwgYnV0IHRoYXQncyBhbHNvIHRoZSBtaW5pbXVtIHdlIG5l
ZWQuCi0gICAgUkVMRUFTRV9CQVNTRVJUKCEocmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KCZnX2dp
Z2FjYWdlQ29uZmlnKSAmICh2bVBhZ2VTaXplKCkgLSAxKSkpOwotICAgIG1wcm90ZWN0KCZnX2dp
Z2FjYWdlQ29uZmlnLCBjb25maWdTaXplVG9Qcm90ZWN0LCBQUk9UX1JFQUQpOworICAgIFJFTEVB
U0VfQkFTU0VSVCghZ19naWdhY2FnZUNvbmZpZy5pc1Blcm1hbmVudGx5RnJvemVuKTsKKyAgICBp
bnQgcmVzdWx0OworI2lmIEJPUyhEQVJXSU4pCisgICAgcmVzdWx0ID0gdm1fcHJvdGVjdChtYWNo
X3Rhc2tfc2VsZigpLCByZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4oJmdfZ2lnYWNhZ2VD
b25maWcpLCBjb25maWdTaXplVG9Qcm90ZWN0LCBmYWxzZSwgVk1fUFJPVF9SRUFEIHwgVk1fUFJP
VF9XUklURSk7CisjZWxzZQorICAgIHJlc3VsdCA9IG1wcm90ZWN0KCZnX2dpZ2FjYWdlQ29uZmln
LCBjb25maWdTaXplVG9Qcm90ZWN0LCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKTsKKyNlbmRpZgor
ICAgIFJFTEVBU0VfQkFTU0VSVCghcmVzdWx0KTsKIH0KIAotdm9pZCB1bnByb3RlY3RHaWdhY2Fn
ZUJhc2VQdHJzKCkKK3N0YXRpYyB2b2lkIHBlcm1hbmVudGx5RnJlZXplR2lnYWNhZ2VDb25maWco
KQogewotICAgIG1wcm90ZWN0KCZnX2dpZ2FjYWdlQ29uZmlnLCBjb25maWdTaXplVG9Qcm90ZWN0
LCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKTsKKyAgICBpZiAoIWdfZ2lnYWNhZ2VDb25maWcuaXNQ
ZXJtYW5lbnRseUZyb3plbikgeworICAgICAgICB1bmZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCk7Cisg
ICAgICAgIGdfZ2lnYWNhZ2VDb25maWcuaXNQZXJtYW5lbnRseUZyb3plbiA9IHRydWU7CisgICAg
fQorCisgICAgc3RkOjphdG9taWNfdGhyZWFkX2ZlbmNlKHN0ZDo6bWVtb3J5X29yZGVyX3NlcV9j
c3QpOworCisgICAgLy8gVGhlcmUncyBubyBnb2luZyBiYWNrIG5vdyEKKyAgICBpbnQgcmVzdWx0
OworI2lmIEJPUyhEQVJXSU4pCisgICAgcmVzdWx0ID0gdm1fcHJvdGVjdChtYWNoX3Rhc2tfc2Vs
ZigpLCByZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4oJmdfZ2lnYWNhZ2VDb25maWcpLCBj
b25maWdTaXplVG9Qcm90ZWN0LCB0cnVlLCBWTV9QUk9UX1JFQUQpOworI2Vsc2UKKyAgICByZXN1
bHQgPSBtcHJvdGVjdCgmZ19naWdhY2FnZUNvbmZpZywgY29uZmlnU2l6ZVRvUHJvdGVjdCwgUFJP
VF9SRUFEKTsKKyNlbmRpZgorICAgIFJFTEVBU0VfQkFTU0VSVCghcmVzdWx0KTsKIH0KIAotY2xh
c3MgVW5wcm90ZWN0R2lnYWNhZ2VCYXNlUHRyc1Njb3BlIHsKK2NsYXNzIFVuZnJlZXplR2lnYWNh
Z2VDb25maWdTY29wZSB7CiBwdWJsaWM6Ci0gICAgVW5wcm90ZWN0R2lnYWNhZ2VCYXNlUHRyc1Nj
b3BlKCkKKyAgICBVbmZyZWV6ZUdpZ2FjYWdlQ29uZmlnU2NvcGUoKQogICAgIHsKLSAgICAgICAg
dW5wcm90ZWN0R2lnYWNhZ2VCYXNlUHRycygpOworICAgICAgICB1bmZyZWV6ZUdpZ2FjYWdlQ29u
ZmlnKCk7CiAgICAgfQogICAgIAotICAgIH5VbnByb3RlY3RHaWdhY2FnZUJhc2VQdHJzU2NvcGUo
KQorICAgIH5VbmZyZWV6ZUdpZ2FjYWdlQ29uZmlnU2NvcGUoKQogICAgIHsKLSAgICAgICAgcHJv
dGVjdEdpZ2FjYWdlQmFzZVB0cnMoKTsKKyAgICAgICAgZnJlZXplR2lnYWNhZ2VDb25maWcoKTsK
ICAgICB9CiB9OwogCkBAIC0xMjksOSArMTU5LDE2IEBAIHZvaWQgZW5zdXJlR2lnYWNhZ2UoKQog
ICAgIHN0ZDo6Y2FsbF9vbmNlKAogICAgICAgICBvbmNlRmxhZywKICAgICAgICAgW10geworICAg
ICAgICAgICAgUkVMRUFTRV9CQVNTRVJUKCFnX2dpZ2FjYWdlQ29uZmlnLmVuc3VyZUdpZ2FjYWdl
SGFzQmVlbkNhbGxlZCk7CisgICAgICAgICAgICBnX2dpZ2FjYWdlQ29uZmlnLmVuc3VyZUdpZ2Fj
YWdlSGFzQmVlbkNhbGxlZCA9IHRydWU7CisKICAgICAgICAgICAgIGlmICghc2hvdWxkQmVFbmFi
bGVkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCisgICAgICAgICAg
ICAvLyBXZSBtaWdodCBvbmx5IGdldCBwYWdlIHNpemUgYWxpZ25tZW50LCBidXQgdGhhdCdzIGFs
c28gdGhlIG1pbmltdW0KKyAgICAgICAgICAgIC8vIGFsaWdubWVudCB3ZSBuZWVkIGZvciBmcmVl
emluZyB0aGUgQ29uZmlnLgorICAgICAgICAgICAgUkVMRUFTRV9CQVNTRVJUKCEocmVpbnRlcnBy
ZXRfY2FzdDxzaXplX3Q+KCZnX2dpZ2FjYWdlQ29uZmlnKSAmICh2bVBhZ2VTaXplKCkgLSAxKSkp
OworCiAgICAgICAgICAgICBLaW5kIHNodWZmbGVkS2luZHNbTnVtYmVyT2ZLaW5kc107CiAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTnVtYmVyT2ZLaW5kczsgKytpKQogICAg
ICAgICAgICAgICAgIHNodWZmbGVkS2luZHNbaV0gPSBzdGF0aWNfY2FzdDxLaW5kPihpKTsKQEAg
LTE5MSwxMiArMjI4LDE4IEBAIHZvaWQgZW5zdXJlR2lnYWNhZ2UoKQogICAgICAgICAgICAgCiAg
ICAgICAgICAgICB2bURlYWxsb2NhdGVQaHlzaWNhbFBhZ2VzKGJhc2UsIHRvdGFsU2l6ZSk7CiAg
ICAgICAgICAgICBnX2dpZ2FjYWdlQ29uZmlnLmlzRW5hYmxlZCA9IHRydWU7Ci0gICAgICAgICAg
ICBwcm90ZWN0R2lnYWNhZ2VCYXNlUHRycygpOworICAgICAgICAgICAgZnJlZXplR2lnYWNhZ2VD
b25maWcoKTsKICAgICAgICAgfSk7CiB9CiAKIHZvaWQgZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdl
KCkKIHsKKyAgICBpZiAoZ19naWdhY2FnZUNvbmZpZy5kaXNhYmxpbmdQcmltaXRpdmVHaWdhY2Fn
ZUlzRm9yYmlkZGVuKQorICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZBVEFMOiBEaXNhYmxpbmcg
UHJpbWl0aXZlIGdpZ2FjYWdlIGlzIGZvcmJpZGRlbiwgYnV0IHdlIGRvbid0IHdhbnQgdGhhdCBp
biB0aGlzIHByb2Nlc3MuXG4iKTsKKworICAgIFJFTEVBU0VfQkFTU0VSVCghZ19naWdhY2FnZUNv
bmZpZy5kaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUlzRm9yYmlkZGVuKTsKKyAgICBSRUxFQVNF
X0JBU1NFUlQoIWdfZ2lnYWNhZ2VDb25maWcuaXNQZXJtYW5lbnRseUZyb3plbik7CisKICAgICBl
bnN1cmVHaWdhY2FnZSgpOwogICAgIGlmICghZ19naWdhY2FnZUNvbmZpZy5iYXNlUHRyc1tQcmlt
aXRpdmVdKSB7CiAgICAgICAgIC8vIEl0IHdhcyBuZXZlciBlbmFibGVkLiBUaGF0IG1lYW5zIHRo
YXQgd2UgbmV2ZXIgZXZlbiBzYXZlZCBhbnkgY2FsbGJhY2tzLiBPciwgd2UgaGFkIGFscmVhZHkg
ZGlzYWJsZWQKQEAgLTIwOSw3ICsyNTIsNyBAQCB2b2lkIGRpc2FibGVQcmltaXRpdmVHaWdhY2Fn
ZSgpCiAgICAgZm9yIChDYWxsYmFjayYgY2FsbGJhY2sgOiBjYWxsYmFja3MuY2FsbGJhY2tzKQog
ICAgICAgICBjYWxsYmFjay5mdW5jdGlvbihjYWxsYmFjay5hcmd1bWVudCk7CiAgICAgY2FsbGJh
Y2tzLmNhbGxiYWNrcy5zaHJpbmsoMCk7Ci0gICAgVW5wcm90ZWN0R2lnYWNhZ2VCYXNlUHRyc1Nj
b3BlIHVucHJvdGVjdFNjb3BlOworICAgIFVuZnJlZXplR2lnYWNhZ2VDb25maWdTY29wZSB1bmZy
ZWV6ZVNjb3BlOwogICAgIGdfZ2lnYWNhZ2VDb25maWcuYmFzZVB0cnNbUHJpbWl0aXZlXSA9IG51
bGxwdHI7CiB9CiAKQEAgLTI0MSwzNyArMjg0LDM5IEBAIHZvaWQgcmVtb3ZlUHJpbWl0aXZlRGlz
YWJsZUNhbGxiYWNrKHZvaWQKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIHByaW1pdGl2ZUdpZ2Fj
YWdlRGlzYWJsZWQodm9pZCopCitzdGF0aWMgYm9vbCB2ZXJpZnlHaWdhY2FnZUlzRW5hYmxlZCgp
CiB7Ci0gICAgaWYgKEdJR0FDQUdFX0FMTE9DQVRJT05fQ0FOX0ZBSUwgJiYgIWlzRW5hYmxlZCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdGF0aWMgYm9vbCBzX2ZhbHNlOwotICAgIGZwcmlu
dGYoc3RkZXJyLCAiRkFUQUw6IFByaW1pdGl2ZSBnaWdhY2FnZSBkaXNhYmxlZCwgYnV0IHdlIGRv
bid0IHdhbnQgdGhhdCBpbiB0aGlzIHByb2Nlc3MuXG4iKTsKLSAgICBpZiAoIXNfZmFsc2UpCi0g
ICAgICAgIEJDUkFTSCgpOworICAgIGJvb2wgaXNFbmFibGVkID0gZ19naWdhY2FnZUNvbmZpZy5p
c0VuYWJsZWQ7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBOdW1iZXJPZktpbmRzOyArK2kp
CisgICAgICAgIGlzRW5hYmxlZCA9IGlzRW5hYmxlZCAmJiBnX2dpZ2FjYWdlQ29uZmlnLmJhc2VQ
dHJzW2ldOworICAgIHJldHVybiBpc0VuYWJsZWQ7CiB9CiAKLXZvaWQgZGlzYWJsZURpc2FibGlu
Z1ByaW1pdGl2ZUdpZ2FjYWdlSWZTaG91bGRCZUVuYWJsZWQoKQordm9pZCBmb3JiaWREaXNhYmxp
bmdQcmltaXRpdmVHaWdhY2FnZSgpCiB7Ci0gICAgaWYgKHNob3VsZEJlRW5hYmxlZCgpKSB7Ci0g
ICAgICAgIGFkZFByaW1pdGl2ZURpc2FibGVDYWxsYmFjayhwcmltaXRpdmVHaWdhY2FnZURpc2Fi
bGVkLCBudWxscHRyKTsKLSAgICAgICAgc19pc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRGlz
YWJsZWQgPSB0cnVlOworICAgIFJFTEVBU0VfQkFTU0VSVChHSUdBQ0FHRV9BTExPQ0FUSU9OX0NB
Tl9GQUlMIHx8IHZlcmlmeUdpZ2FjYWdlSXNFbmFibGVkKCkpOworICAgIGlmICghZ19naWdhY2Fn
ZUNvbmZpZy5kaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUlzRm9yYmlkZGVuKSB7CisgICAgICAg
IHVuZnJlZXplR2lnYWNhZ2VDb25maWcoKTsKKyAgICAgICAgZ19naWdhY2FnZUNvbmZpZy5kaXNh
YmxpbmdQcmltaXRpdmVHaWdhY2FnZUlzRm9yYmlkZGVuID0gdHJ1ZTsKICAgICB9CisgICAgcGVy
bWFuZW50bHlGcmVlemVHaWdhY2FnZUNvbmZpZygpOworICAgIFJFTEVBU0VfQkFTU0VSVChpc0Rp
c2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRm9yYmlkZGVuKCkpOwogfQogCi1ib29sIGlzRGlzYWJs
aW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCgpCitCTk9fSU5MSU5FIGJvb2wgaXNEaXNhYmxp
bmdQcmltaXRpdmVHaWdhY2FnZUZvcmJpZGRlbigpCiB7Ci0gICAgcmV0dXJuIHNfaXNEaXNhYmxp
bmdQcmltaXRpdmVHaWdhY2FnZURpc2FibGVkOworICAgIHJldHVybiBnX2dpZ2FjYWdlQ29uZmln
LmRpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSXNGb3JiaWRkZW47CiB9CiAKIGJvb2wgc2hvdWxk
QmVFbmFibGVkKCkKIHsKLSAgICBzdGF0aWMgYm9vbCBjYWNoZWQgPSBmYWxzZTsKICAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2UoCiAgICAgICAg
IG9uY2VGbGFnLAogICAgICAgICBbXSB7CisgICAgICAgICAgICBSRUxFQVNFX0JBU1NFUlQoIWdf
Z2lnYWNhZ2VDb25maWcuc2hvdWxkQmVFbmFibGVkSGFzQmVlbkNhbGxlZCk7CisgICAgICAgICAg
ICBnX2dpZ2FjYWdlQ29uZmlnLnNob3VsZEJlRW5hYmxlZEhhc0JlZW5DYWxsZWQgPSB0cnVlOwor
CiAgICAgICAgICAgICBib29sIGRlYnVnSGVhcEVuYWJsZWQgPSBFbnZpcm9ubWVudDo6Z2V0KCkt
PmlzRGVidWdIZWFwRW5hYmxlZCgpOwogICAgICAgICAgICAgaWYgKGRlYnVnSGVhcEVuYWJsZWQp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjg3LDEzICszMzIsMTEgQEAgYm9vbCBzaG91
bGRCZUVuYWJsZWQoKQogICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIldhcm5p
bmc6IGludmFsaWQgYXJndW1lbnQgdG8gR0lHQUNBR0VfRU5BQkxFRDogJXNcbiIsIGdpZ2FjYWdl
RW5hYmxlZCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhY2hl
ZCA9IHRydWU7CisgICAgICAgICAgICBnX2dpZ2FjYWdlQ29uZmlnLnNob3VsZEJlRW5hYmxlZCA9
IHRydWU7CiAgICAgICAgIH0pOwotICAgIHJldHVybiBjYWNoZWQ7CisgICAgcmV0dXJuIGdfZ2ln
YWNhZ2VDb25maWcuc2hvdWxkQmVFbmFibGVkOwogfQogCiB9IC8vIG5hbWVzcGFjZSBHaWdhY2Fn
ZQogCiAjZW5kaWYgLy8gR0lHQUNBR0VfRU5BQkxFRAotCi0KSW5kZXg6IFNvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvR2lnYWNhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0dpZ2FjYWdlLmgJKHJldmlzaW9uIDI0OTYwMCkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
R2lnYWNhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDcgKzExMywyMSBAQCBzdHJ1Y3QgQ29u
ZmlnIHsKIAogICAgIHVuaW9uIHsKICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIC8vIEFs
bCB0aGUgZmllbGRzIGluIHRoaXMgc3RydWN0IHNob3VsZCBiZSBjaG9zZW4gc3VjaCB0aGF0IHRo
ZWlyCisgICAgICAgICAgICAvLyBpbml0aWFsIHZhbHVlIGlzIDAgLyBudWxsIC8gZmFsc3kgYmVj
YXVzZSBDb25maWcgaXMgaW5zdGFudGlhdGVkCisgICAgICAgICAgICAvLyBhcyBhIGdsb2JhbCBz
aW5nbGV0b24uCisKICAgICAgICAgICAgIGJvb2wgaXNFbmFibGVkOworICAgICAgICAgICAgYm9v
bCBpc1Blcm1hbmVudGx5RnJvemVuOworICAgICAgICAgICAgYm9vbCBkaXNhYmxpbmdQcmltaXRp
dmVHaWdhY2FnZUlzRm9yYmlkZGVuOworICAgICAgICAgICAgYm9vbCBzaG91bGRCZUVuYWJsZWQ7
CisKKyAgICAgICAgICAgIC8vIFdlIHdvdWxkIGxpa2UgdG8ganVzdCBwdXQgdGhlIHN0ZDo6b25j
ZV9mbGFnIGZvciB0aGVzZSBmdW5jdGlvbnMKKyAgICAgICAgICAgIC8vIGhlcmUsIGJ1dCB3ZSBj
YW4ndCBiZWNhdXNlIHN0ZDo6b25jZV9mbGFnIGhhcyBhIGltcGxpY2l0bHktZGVsZXRlZAorICAg
ICAgICAgICAgLy8gZGVmYXVsdCBjb25zdHJ1Y3Rvci4gU28sIHdlIHVzZSBhIGJvb2xlYW4gaW5z
dGVhZC4KKyAgICAgICAgICAgIGJvb2wgc2hvdWxkQmVFbmFibGVkSGFzQmVlbkNhbGxlZDsKKyAg
ICAgICAgICAgIGJvb2wgZW5zdXJlR2lnYWNhZ2VIYXNCZWVuQ2FsbGVkOworCiAgICAgICAgICAg
ICB2b2lkKiBiYXNlUHRyc1tOdW1iZXJPZktpbmRzXTsKICAgICAgICAgfTsKICAgICAgICAgY2hh
ciBlbnN1cmVTaXplW2NvbmZpZ1NpemVUb1Byb3RlY3RdOwpAQCAtMTM4LDExICsxNTIsMTEgQEAg
QkVYUE9SVCB2b2lkIGRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSgpOwogQkVYUE9SVCB2b2lkIGFk
ZFByaW1pdGl2ZURpc2FibGVDYWxsYmFjayh2b2lkICgqKSh2b2lkKiksIHZvaWQqKTsKIEJFWFBP
UlQgdm9pZCByZW1vdmVQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2sodm9pZCAoKikodm9pZCopLCB2
b2lkKik7CiAKLUJFWFBPUlQgdm9pZCBkaXNhYmxlRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJ
ZlNob3VsZEJlRW5hYmxlZCgpOworQkVYUE9SVCB2b2lkIGZvcmJpZERpc2FibGluZ1ByaW1pdGl2
ZUdpZ2FjYWdlKCk7CiAKLUJFWFBPUlQgYm9vbCBpc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdl
RGlzYWJsZWQoKTsKLWlubGluZSBib29sIGlzUHJpbWl0aXZlR2lnYWNhZ2VQZXJtYW5lbnRseUVu
YWJsZWQoKSB7IHJldHVybiBpc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQoKTsg
fQotaW5saW5lIGJvb2wgY2FuUHJpbWl0aXZlR2lnYWNhZ2VCZURpc2FibGVkKCkgeyByZXR1cm4g
IWlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCgpOyB9CitCRVhQT1JUIGJvb2wg
aXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUZvcmJpZGRlbigpOworaW5saW5lIGJvb2wgaXNQ
cmltaXRpdmVHaWdhY2FnZVBlcm1hbmVudGx5RW5hYmxlZCgpIHsgcmV0dXJuIGlzRGlzYWJsaW5n
UHJpbWl0aXZlR2lnYWNhZ2VGb3JiaWRkZW4oKTsgfQoraW5saW5lIGJvb2wgY2FuUHJpbWl0aXZl
R2lnYWNhZ2VCZURpc2FibGVkKCkgeyByZXR1cm4gIWlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNh
Z2VGb3JiaWRkZW4oKTsgfQogCiBCSU5MSU5FIHZvaWQqIGJhc2VQdHIoS2luZCBraW5kKQogewpA
QCAtMjMzLDcgKzI0Nyw3IEBAIEJJTkxJTkUgYm9vbCBpc0NhZ2VkKEtpbmQsIGNvbnN0IHZvaWQq
KSAKIEJJTkxJTkUgYm9vbCBpc0VuYWJsZWQoS2luZCkgeyByZXR1cm4gZmFsc2U7IH0KIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IEJJTkxJTkUgVCogY2FnZWQoS2luZCwgVCogcHRyKSB7IHJldHVybiBw
dHI7IH0KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IEJJTkxJTkUgVCogY2FnZWRNYXlCZU51bGwoS2lu
ZCwgVCogcHRyKSB7IHJldHVybiBwdHI7IH0KLUJJTkxJTkUgdm9pZCBkaXNhYmxlRGlzYWJsaW5n
UHJpbWl0aXZlR2lnYWNhZ2VJZlNob3VsZEJlRW5hYmxlZCgpIHsgfQorQklOTElORSB2b2lkIGZv
cmJpZERpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlKCkgeyB9CiBCSU5MSU5FIGJvb2wgY2FuUHJp
bWl0aXZlR2lnYWNhZ2VCZURpc2FibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KIEJJTkxJTkUgdm9p
ZCBkaXNhYmxlUHJpbWl0aXZlR2lnYWNhZ2UoKSB7IH0KIEJJTkxJTkUgdm9pZCBhZGRQcmltaXRp
dmVEaXNhYmxlQ2FsbGJhY2sodm9pZCAoKikodm9pZCopLCB2b2lkKikgeyB9Cg==
</data>
<flag name="review"
          id="393904"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378264</attachid>
            <date>2019-09-06 19:01:15 -0700</date>
            <delta_ts>2019-09-06 19:02:03 -0700</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-201570.patch</filename>
            <type>text/plain</type>
            <size>19541</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ5NjAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE5LTA5LTA2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBI
YXJkZW4gcHJvdGVjdGlvbiBvZiB0aGUgR2lnYWNhZ2UgQ29uZmlnIHBhcmFtZXRlcnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE1NzAKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzU1MTM0MjI5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0g
QmFyYXRpLgorCisgICAgICAgIEp1c3QgcmVuYW1pbmcgc29tZSBmdW5jdGlvbiBuYW1lcyBoZXJl
LgorCisgICAgICAgICogYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6dGVz
dENhZ2VQcmVzZXJ2ZXNQQUNGYWlsdXJlQml0KToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxw
ZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Y2FnZUNvbmRpdGlvbmFsbHkp
OgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChqc2NtYWluKToKKwogMjAxOS0wOS0wNiAg
Um9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgTWF0aC5y
b3VuZCgpIHByb2R1Y2VzIHdyb25nIHJlc3VsdCBmb3IgdmFsdWUgcHJpb3IgdG8gMC41CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjQ5NjAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwODYsNyArMzA4Niw3IEBAIGludCBq
c2NtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAg
ICAgSlNDOjpXYXNtOjplbmFibGVGYXN0TWVtb3J5KCk7CiAjZW5kaWYKLSAgICBHaWdhY2FnZTo6
ZGlzYWJsZURpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSWZTaG91bGRCZUVuYWJsZWQoKTsKKyAg
ICBHaWdhY2FnZTo6Zm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UoKTsKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIGF1dG8mIG1lbW9yeVByZXNzdXJlSGFuZGxlciA9IE1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAkocmV2aXNpb24gMjQ5NjAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
MTAsNyArMTIxMCw3IEBAIHZvaWQgdGVzdE1vdmVEb3VibGVDb25kaXRpb25hbGx5NjQoKQogc3Rh
dGljIHZvaWQgdGVzdENhZ2VQcmVzZXJ2ZXNQQUNGYWlsdXJlQml0KCkKIHsKICNpZiBHSUdBQ0FH
RV9FTkFCTEVECi0gICAgQVNTRVJUKCFHaWdhY2FnZTo6aXNEaXNhYmxpbmdQcmltaXRpdmVHaWdh
Y2FnZURpc2FibGVkKCkpOworICAgIEFTU0VSVCghR2lnYWNhZ2U6OmlzRGlzYWJsaW5nUHJpbWl0
aXZlR2lnYWNhZ2VGb3JiaWRkZW4oKSk7CiAgICAgYXV0byBjYWdlID0gY29tcGlsZShbXSAoQ0Nh
bGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKICAg
ICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIEdQUkluZm86
OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5o
CShyZXZpc2lvbiAyNDk2MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTg4LDcgKzE1ODgsNyBAQCBwdWJsaWM6CiAg
ICAgewogI2lmIEdJR0FDQUdFX0VOQUJMRUQKICAgICAgICAgaWYgKEdpZ2FjYWdlOjppc0VuYWJs
ZWQoa2luZCkpIHsKLSAgICAgICAgICAgIGlmIChraW5kICE9IEdpZ2FjYWdlOjpQcmltaXRpdmUg
fHwgR2lnYWNhZ2U6OmlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCgpKQorICAg
ICAgICAgICAgaWYgKGtpbmQgIT0gR2lnYWNhZ2U6OlByaW1pdGl2ZSB8fCBHaWdhY2FnZTo6aXNE
aXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUZvcmJpZGRlbigpKQogICAgICAgICAgICAgICAgIGNh
Z2VXaXRob3V0VW50YWdnaW5nKGtpbmQsIHN0b3JhZ2UpOwogICAgICAgICAgICAgZWxzZSB7CiAj
aWYgQ1BVKEFSTTY0RSkKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDk2MDApCisrKyBTb3VyY2UvV1RGL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE5LTA5LTA2ICBNYXJr
IExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBIYXJkZW4gcHJvdGVjdGlvbiBv
ZiB0aGUgR2lnYWNhZ2UgQ29uZmlnIHBhcmFtZXRlcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE1NzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzU1MTM0MjI5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAg
IEp1c3QgcmVuYW1pbmcgc29tZSBmdW5jdGlvbiBuYW1lcyBoZXJlLgorCisgICAgICAgICogd3Rm
L0dpZ2FjYWdlLmg6CisgICAgICAgIChHaWdhY2FnZTo6Zm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZl
R2lnYWNhZ2UpOgorICAgICAgICAoR2lnYWNhZ2U6OmlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNh
Z2VGb3JiaWRkZW4pOgorICAgICAgICAoR2lnYWNhZ2U6OmRpc2FibGVEaXNhYmxpbmdQcmltaXRp
dmVHaWdhY2FnZUlmU2hvdWxkQmVFbmFibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKEdpZ2FjYWdl
Ojppc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQpOiBEZWxldGVkLgorCiAyMDE5
LTA5LTA1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3Rv
ciB0aGUgR2lnYWNhZ2UgY29kZSB0byByZXF1aXJlIGxlc3MgcG9pbnRlciBjYXN0aW5nLgpJbmRl
eDogU291cmNlL1dURi93dGYvR2lnYWNhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0
Zi9HaWdhY2FnZS5oCShyZXZpc2lvbiAyNDk2MDApCisrKyBTb3VyY2UvV1RGL3d0Zi9HaWdhY2Fn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw5ICs0OSw5IEBAIGlubGluZSBib29sIHNob3VsZEJl
RW5hYmxlZCgpIHsgcmV0dXJuIGYKIGlubGluZSB2b2lkIGFkZFByaW1pdGl2ZURpc2FibGVDYWxs
YmFjayh2b2lkICgqKSh2b2lkKiksIHZvaWQqKSB7IH0KIGlubGluZSB2b2lkIHJlbW92ZVByaW1p
dGl2ZURpc2FibGVDYWxsYmFjayh2b2lkICgqKSh2b2lkKiksIHZvaWQqKSB7IH0KIAotaW5saW5l
IHZvaWQgZGlzYWJsZURpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSWZTaG91bGRCZUVuYWJsZWQo
KSB7IH0KK2lubGluZSB2b2lkIGZvcmJpZERpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlKCkgeyB9
CiAKLWlubGluZSBib29sIGlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCgpIHsg
cmV0dXJuIGZhbHNlOyB9CitpbmxpbmUgYm9vbCBpc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdl
Rm9yYmlkZGVuKCkgeyByZXR1cm4gZmFsc2U7IH0KIGlubGluZSBib29sIGlzUHJpbWl0aXZlR2ln
YWNhZ2VQZXJtYW5lbnRseUVuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQogaW5saW5lIGJvb2wg
Y2FuUHJpbWl0aXZlR2lnYWNhZ2VCZURpc2FibGVkKCkgeyByZXR1cm4gdHJ1ZTsgfQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwkocmV2aXNpb24gMjQ5NjAwKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxOS0wOS0wNiAgTWFyayBMYW0gIDxtYXJr
LmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSGFyZGVuIHByb3RlY3Rpb24gb2YgdGhlIEdpZ2Fj
YWdlIENvbmZpZyBwYXJhbWV0ZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAxNTcwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTEzNDIyOT4K
KworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICBKdXN0IHJlbmFt
aW5nIGEgZnVuY3Rpb24gbmFtZSBoZXJlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcDoKKwogMjAxOS0wOS0wNiAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFtXZWJBdXRobl0gTWFrZSBXZWJBdXRobiBkZWZhdWx0IG9mZiBhbmQgbGV0
IGNsaWVudHMgdHVybiBpdCBvbiBhdCB3aWxsCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyNDk2MDApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOSw3ICsyMjksNyBAQCBX
ZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICAgICB9KTsKICNlbmRpZgogICAgIAotICAgIEdpZ2Fj
YWdlOjpkaXNhYmxlRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJZlNob3VsZEJlRW5hYmxlZCgp
OworICAgIEdpZ2FjYWdlOjpmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpOwogfQog
CiBXZWJQcm9jZXNzOjp+V2ViUHJvY2VzcygpCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDk2
MDApCisrKyBTb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSw3NyBAQAorMjAxOS0wOS0wNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAg
ICAgICAgSGFyZGVuIHByb3RlY3Rpb24gb2YgdGhlIEdpZ2FjYWdlIENvbmZpZyBwYXJhbWV0ZXJz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNTcw
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTEzNDIyOT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBTYWFtIEJhcmF0aS4KKworICAgICAgICAxLiBSZW5hbWUgcHJvdGVjdEdpZ2FjYWdlQmFzZVB0
cnMoKSBhbmQgdW5wcm90ZWN0R2lnYWNhZ2VCYXNlUHRycygpIHRvCisgICAgICAgICAgIGZyZWV6
ZUdpZ2FjYWdlQ29uZmlnKCkgYW5kIHVuZnJlZXplR2lnYWNhZ2VDb25maWcoKSByZXNwZWN0aXZl
bHkuCisKKyAgICAgICAgICAgQWxzbyBtb3ZlIHRoZSBhbGlnbm1lbnQgY2hlY2sgaW4gcHJvdGVj
dEdpZ2FjYWdlQmFzZVB0cnMoKSBpbnRvIGVuc3VyZUdpZ2FjYWdlKCkuCisgICAgICAgICAgIFRo
ZXJlJ3Mgbm8gbmVlZCB0byBjaGVjayBpdCBtb3JlIHRoYW4gb25jZS4KKworICAgICAgICAyLiBJ
bnRyb2R1Y2UgcGVybWFuZW50bHlGcmVlemVHaWdhY2FnZUNvbmZpZygpIHdoaWNoIHBlcm1hbmVu
dGx5IG1ha2VzIHRoZQorICAgICAgICAgICBDb25maWcgUmVhZE9ubHkuICBPbmNlIGludm9rZWQs
IHRoZSBDb25maWcgY2Fubm90IGJlIG1hZGUgd3JpdGFibGUgYWdhaW4uCisKKyAgICAgICAgICAg
VGhpcyBpcyBtYWRlIHBvc3NpYmxlIGJ5IHVzaW5nIHZtX3Byb3RlY3Qgd2l0aCBhIHRydWUgc2V0
X21heGltdW0gYXJndW1lbnQuCisgICAgICAgICAgIFdlIGFsc28gYWRkIGEgZ19naWdhY2FnZUNv
bmZpZy5pc1Blcm1hbmVudGx5RnJvemVuIGZsYWcgdGhhdCB3ZSBhc3NlcnQuCisgICAgICAgICAg
IE5vdGU6IHRoaXMgcGVybWFuZW5jZSBpcyBvbmx5IHRydWUgZm9yIE9TKERBUldJTikgc2luY2Ug
dm1fcHJvdGVjdCBpcyBNYWNoIEFQSS4KKworICAgICAgICAzLiBSZW5hbWUgZGlzYWJsZURpc2Fi
bGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSWZTaG91bGRCZUVuYWJsZWQoKSB0bworICAgICAgICAgICBm
b3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpIGJlY2F1c2UgImRpc2FibGluZ0Rpc2Fi
bGluZyIgaXMgYSB0b25ndWUKKyAgICAgICAgICAgdHdpc3Rlci4KKworICAgICAgICAgICBBbHNv
LCB3ZSBkb24ndCB3YW50IHRvIG1ha2UgaXQgY29uZGl0aW9uYWwgb24gIklmU2hvdWxkQmVFbmFi
bGVkIi4gIFdlIHdhbnQKKyAgICAgICAgICAgZm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNh
Z2UoKSB0byBiZSBpcnJldmVyc2libGUuICBJdCBpcyB1cCB0byB0aGUgY2xpZW50CisgICAgICAg
ICAgIHRvIGVuc3VyZSB0aGF0IHRoZSBHaWdhY2FnZSBpcyBhbHJlYWR5IGluaXRpYWxpemVkIChp
ZiBwb3NzaWJsZSkgYmVmb3JlCisgICAgICAgICAgIGludm9raW5nIGZvcmJpZERpc2FibGluZ1By
aW1pdGl2ZUdpZ2FjYWdlKCkuICBDb25jZXB0dWFsbHksIHRoZSBmb3JiaWRkaW5nCisgICAgICAg
ICAgIGlzbid0IGFib3V0IGd1YXJhbnRlZWluZyB0aGF0IHRoZSBHaWdhY2FnZSBpcyBlbmFibGVk
LiAgSXQgb25seSB0YWtlcyBhd2F5IHRoZQorICAgICAgICAgICBvcHRpb24gdG8gZGlzYWJsZSBp
dC4KKworICAgICAgICAgICBUaGF0IHNhaWQsIGZvcmJpZERpc2FibGluZ1ByaW1pdGl2ZUdpZ2Fj
YWdlKCkgaXMgb25seSBpbnZva2VkIGJ5IGNsaWVudHMgdGhhdAorICAgICAgICAgICBjYXJlIGFi
b3V0IGtlZXBpbmcgdGhlIEdpZ2FjYWdlIGVuYWJsZWQuICBTbywgaXQgZG9lcyBhIHNhbml0eSBj
aGVjayAod2l0aCBhbgorICAgICAgICAgICBhc3NlcnRpb24pIHRoYXQgaWYgIUdJR0FDQUdFX0FM
TE9DQVRJT05fQ0FOX0ZBSUwsIHRoZW4gdGhlIEdpZ2FjYWdlIHNob3VsZCBiZQorICAgICAgICAg
ICBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgYW5kIGVuYWJsZWQgYmVmb3JlIGludm9raW5nIGl0Lgor
CisgICAgICAgICAgIFdlIGFsc28gbWFrZSBzdXJlIHRoYXQgZm9yYmlkRGlzYWJsaW5nUHJpbWl0
aXZlR2lnYWNhZ2UoKSBjYWxscworICAgICAgICAgICBwZXJtYW5lbnRseUZyZWV6ZUdpZ2FjYWdl
Q29uZmlnKCkgdW5jb25kaXRpb25hbGx5LiAgSXQgaXMgc2FmZSB0byBjYWxsIGl0IG1vcmUKKyAg
ICAgICAgICAgdGhhbiBvbmNlLiAgVGhpcyBndWFyYW50ZWVzIHRoYXQgdGhlIENvbmZpZyBpcyBw
ZXJtYW5lbnRseSBmcm96ZW4gYWZ0ZXIgdGhpcywKKyAgICAgICAgICAgZXZlbiBpZiBhIGJ1ZyBz
aG91bGQgaW5hZHZlcnRhbnRseSBzZXQgdGhlCisgICAgICAgICAgIGdfZ2lnYWNhZ2VDb25maWcu
ZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0ZvcmJpZGRlbiBmbGFnIGJlZm9yZQorICAgICAg
ICAgICBmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpIGlzIGludm9rZWQuCisKKyAg
ICAgICAgNC4gQXNzZXJ0IHRoYXQgZW5zdXJlR2lnYWNhZ2UoKSBpcyBvbmx5IGNhbGxlZCBvbmNl
LgorCisgICAgICAgIDUuIEFzc2VydCB0aGF0IHNob3VsZEJlRW5hYmxlZCgpIGlzIG9ubHkgY2Fs
bGVkIG9uY2UuCisgICAgICAgICAgIEFsc28gbW92ZWQgaXRzIGNhY2hlZCByZXN1bHQgaW50byB0
aGUgQ29uZmlnIHNvIHRoYXQgaXQgY2FuIGJlIGZyb3plbi4KKworICAgICAgICAqIGJtYWxsb2Mv
R2lnYWNhZ2UuY3BwOgorICAgICAgICAoR2lnYWNhZ2U6OmJtYWxsb2M6OmZyZWV6ZUdpZ2FjYWdl
Q29uZmlnKToKKyAgICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjp1bmZyZWV6ZUdpZ2FjYWdlQ29u
ZmlnKToKKyAgICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjpwZXJtYW5lbnRseUZyZWV6ZUdpZ2Fj
YWdlQ29uZmlnKToKKyAgICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjpVbmZyZWV6ZUdpZ2FjYWdl
Q29uZmlnU2NvcGU6OlVuZnJlZXplR2lnYWNhZ2VDb25maWdTY29wZSk6CisgICAgICAgIChHaWdh
Y2FnZTo6Ym1hbGxvYzo6VW5mcmVlemVHaWdhY2FnZUNvbmZpZ1Njb3BlOjp+VW5mcmVlemVHaWdh
Y2FnZUNvbmZpZ1Njb3BlKToKKyAgICAgICAgKEdpZ2FjYWdlOjplbnN1cmVHaWdhY2FnZSk6Cisg
ICAgICAgIChHaWdhY2FnZTo6ZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKToKKyAgICAgICAgKEdp
Z2FjYWdlOjp2ZXJpZnlHaWdhY2FnZUlzRW5hYmxlZCk6CisgICAgICAgIChHaWdhY2FnZTo6Zm9y
YmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UpOgorICAgICAgICAoR2lnYWNhZ2U6OmlzRGlz
YWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VGb3JiaWRkZW4pOgorICAgICAgICAoR2lnYWNhZ2U6OnNo
b3VsZEJlRW5hYmxlZCk6CisgICAgICAgIChHaWdhY2FnZTo6Ym1hbGxvYzo6cHJvdGVjdEdpZ2Fj
YWdlQmFzZVB0cnMpOiBEZWxldGVkLgorICAgICAgICAoR2lnYWNhZ2U6OmJtYWxsb2M6OnVucHJv
dGVjdEdpZ2FjYWdlQmFzZVB0cnMpOiBEZWxldGVkLgorICAgICAgICAoR2lnYWNhZ2U6OmJtYWxs
b2M6OlVucHJvdGVjdEdpZ2FjYWdlQmFzZVB0cnNTY29wZTo6VW5wcm90ZWN0R2lnYWNhZ2VCYXNl
UHRyc1Njb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjpVbnByb3Rl
Y3RHaWdhY2FnZUJhc2VQdHJzU2NvcGU6On5VbnByb3RlY3RHaWdhY2FnZUJhc2VQdHJzU2NvcGUp
OiBEZWxldGVkLgorICAgICAgICAoR2lnYWNhZ2U6OnByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQp
OiBEZWxldGVkLgorICAgICAgICAoR2lnYWNhZ2U6OmRpc2FibGVEaXNhYmxpbmdQcmltaXRpdmVH
aWdhY2FnZUlmU2hvdWxkQmVFbmFibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKEdpZ2FjYWdlOjpp
c0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAq
IGJtYWxsb2MvR2lnYWNhZ2UuaDoKKyAgICAgICAgKEdpZ2FjYWdlOjppc1ByaW1pdGl2ZUdpZ2Fj
YWdlUGVybWFuZW50bHlFbmFibGVkKToKKyAgICAgICAgKEdpZ2FjYWdlOjpjYW5QcmltaXRpdmVH
aWdhY2FnZUJlRGlzYWJsZWQpOgorICAgICAgICAoR2lnYWNhZ2U6OmZvcmJpZERpc2FibGluZ1By
aW1pdGl2ZUdpZ2FjYWdlKToKKyAgICAgICAgKEdpZ2FjYWdlOjpkaXNhYmxlRGlzYWJsaW5nUHJp
bWl0aXZlR2lnYWNhZ2VJZlNob3VsZEJlRW5hYmxlZCk6IERlbGV0ZWQuCisKIDIwMTktMDktMDYg
IE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBGYWlsdXJlQWN0
aW9uIGV2ZXJ5d2hlcmUgaW4gYm1hbGxvYyBpbnN0ZWFkIG9mIGEgY3Jhc2hPbkZhaWx1cmUgYm9v
bGVhbi4KSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuY3BwCShyZXZpc2lvbiAyNDk2
MDApCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNiArMzUsMTAgQEAKICNpbmNsdWRlIDxjc3RkaW8+CiAjaW5jbHVkZSA8bXV0ZXg+
CiAKKyNpZiBPUyhEQVJXSU4pCisjaW5jbHVkZSA8bWFjaC9tYWNoX3RyYXBzLmg+CisjZW5kaWYK
KwogI2lmIEdJR0FDQUdFX0VOQUJMRUQKIAogbmFtZXNwYWNlIEdpZ2FjYWdlIHsKQEAgLTgxLDMw
ICs4NSw2MyBAQCB1c2luZyBuYW1lc3BhY2UgYm1hbGxvYzsKIAogbmFtZXNwYWNlIHsKIAotYm9v
bCBzX2lzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZDsKKyNpZiBCT1MoREFSV0lO
KQorZW51bSB7CisgICAgQWxsb3dQZXJtaXNzaW9uQ2hhbmdlc0FmdGVyVGhpcyA9IGZhbHNlLAor
ICAgIERpc2FsbG93UGVybWlzc2lvbkNoYW5nZXNBZnRlclRoaXMgPSB0cnVlCit9OworI2VuZGlm
CisKK3N0YXRpYyB2b2lkIGZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCkKK3sKKyAgICBpbnQgcmVzdWx0
OworI2lmIEJPUyhEQVJXSU4pCisgICAgcmVzdWx0ID0gdm1fcHJvdGVjdChtYWNoX3Rhc2tfc2Vs
ZigpLCByZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4oJmdfZ2lnYWNhZ2VDb25maWcpLCBj
b25maWdTaXplVG9Qcm90ZWN0LCBBbGxvd1Blcm1pc3Npb25DaGFuZ2VzQWZ0ZXJUaGlzLCBWTV9Q
Uk9UX1JFQUQpOworI2Vsc2UKKyAgICByZXN1bHQgPSBtcHJvdGVjdCgmZ19naWdhY2FnZUNvbmZp
ZywgY29uZmlnU2l6ZVRvUHJvdGVjdCwgUFJPVF9SRUFEKTsKKyNlbmRpZgorICAgIFJFTEVBU0Vf
QkFTU0VSVCghcmVzdWx0KTsKK30KIAotdm9pZCBwcm90ZWN0R2lnYWNhZ2VCYXNlUHRycygpCitz
dGF0aWMgdm9pZCB1bmZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCkKIHsKLSAgICAvLyBXZSBtaWdodCBv
bmx5IGdldCBwYWdlIHNpemUgYWxpZ25tZW50LCBidXQgdGhhdCdzIGFsc28gdGhlIG1pbmltdW0g
d2UgbmVlZC4KLSAgICBSRUxFQVNFX0JBU1NFUlQoIShyZWludGVycHJldF9jYXN0PHNpemVfdD4o
JmdfZ2lnYWNhZ2VDb25maWcpICYgKHZtUGFnZVNpemUoKSAtIDEpKSk7Ci0gICAgbXByb3RlY3Qo
JmdfZ2lnYWNhZ2VDb25maWcsIGNvbmZpZ1NpemVUb1Byb3RlY3QsIFBST1RfUkVBRCk7CisgICAg
UkVMRUFTRV9CQVNTRVJUKCFnX2dpZ2FjYWdlQ29uZmlnLmlzUGVybWFuZW50bHlGcm96ZW4pOwor
ICAgIGludCByZXN1bHQ7CisjaWYgQk9TKERBUldJTikKKyAgICByZXN1bHQgPSB2bV9wcm90ZWN0
KG1hY2hfdGFza19zZWxmKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm1fYWRkcmVzc190PigmZ19naWdh
Y2FnZUNvbmZpZyksIGNvbmZpZ1NpemVUb1Byb3RlY3QsIEFsbG93UGVybWlzc2lvbkNoYW5nZXNB
ZnRlclRoaXMsIFZNX1BST1RfUkVBRCB8IFZNX1BST1RfV1JJVEUpOworI2Vsc2UKKyAgICByZXN1
bHQgPSBtcHJvdGVjdCgmZ19naWdhY2FnZUNvbmZpZywgY29uZmlnU2l6ZVRvUHJvdGVjdCwgUFJP
VF9SRUFEIHwgUFJPVF9XUklURSk7CisjZW5kaWYKKyAgICBSRUxFQVNFX0JBU1NFUlQoIXJlc3Vs
dCk7CiB9CiAKLXZvaWQgdW5wcm90ZWN0R2lnYWNhZ2VCYXNlUHRycygpCitzdGF0aWMgdm9pZCBw
ZXJtYW5lbnRseUZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCkKIHsKLSAgICBtcHJvdGVjdCgmZ19naWdh
Y2FnZUNvbmZpZywgY29uZmlnU2l6ZVRvUHJvdGVjdCwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSk7
CisgICAgaWYgKCFnX2dpZ2FjYWdlQ29uZmlnLmlzUGVybWFuZW50bHlGcm96ZW4pIHsKKyAgICAg
ICAgdW5mcmVlemVHaWdhY2FnZUNvbmZpZygpOworICAgICAgICBnX2dpZ2FjYWdlQ29uZmlnLmlz
UGVybWFuZW50bHlGcm96ZW4gPSB0cnVlOworICAgIH0KKworICAgIC8vIFRoZXJlJ3Mgbm8gZ29p
bmcgYmFjayBub3chCisgICAgaW50IHJlc3VsdDsKKyNpZiBCT1MoREFSV0lOKQorICAgIHJlc3Vs
dCA9IHZtX3Byb3RlY3QobWFjaF90YXNrX3NlbGYoKSwgcmVpbnRlcnByZXRfY2FzdDx2bV9hZGRy
ZXNzX3Q+KCZnX2dpZ2FjYWdlQ29uZmlnKSwgY29uZmlnU2l6ZVRvUHJvdGVjdCwgRGlzYWxsb3dQ
ZXJtaXNzaW9uQ2hhbmdlc0FmdGVyVGhpcywgVk1fUFJPVF9SRUFEKTsKKyNlbHNlCisgICAgcmVz
dWx0ID0gbXByb3RlY3QoJmdfZ2lnYWNhZ2VDb25maWcsIGNvbmZpZ1NpemVUb1Byb3RlY3QsIFBS
T1RfUkVBRCk7CisjZW5kaWYKKyAgICBSRUxFQVNFX0JBU1NFUlQoIXJlc3VsdCk7CiB9CiAKLWNs
YXNzIFVucHJvdGVjdEdpZ2FjYWdlQmFzZVB0cnNTY29wZSB7CitjbGFzcyBVbmZyZWV6ZUdpZ2Fj
YWdlQ29uZmlnU2NvcGUgewogcHVibGljOgotICAgIFVucHJvdGVjdEdpZ2FjYWdlQmFzZVB0cnNT
Y29wZSgpCisgICAgVW5mcmVlemVHaWdhY2FnZUNvbmZpZ1Njb3BlKCkKICAgICB7Ci0gICAgICAg
IHVucHJvdGVjdEdpZ2FjYWdlQmFzZVB0cnMoKTsKKyAgICAgICAgdW5mcmVlemVHaWdhY2FnZUNv
bmZpZygpOwogICAgIH0KICAgICAKLSAgICB+VW5wcm90ZWN0R2lnYWNhZ2VCYXNlUHRyc1Njb3Bl
KCkKKyAgICB+VW5mcmVlemVHaWdhY2FnZUNvbmZpZ1Njb3BlKCkKICAgICB7Ci0gICAgICAgIHBy
b3RlY3RHaWdhY2FnZUJhc2VQdHJzKCk7CisgICAgICAgIGZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCk7
CiAgICAgfQogfTsKIApAQCAtMTI5LDkgKzE2NiwxNiBAQCB2b2lkIGVuc3VyZUdpZ2FjYWdlKCkK
ICAgICBzdGQ6OmNhbGxfb25jZSgKICAgICAgICAgb25jZUZsYWcsCiAgICAgICAgIFtdIHsKKyAg
ICAgICAgICAgIFJFTEVBU0VfQkFTU0VSVCghZ19naWdhY2FnZUNvbmZpZy5lbnN1cmVHaWdhY2Fn
ZUhhc0JlZW5DYWxsZWQpOworICAgICAgICAgICAgZ19naWdhY2FnZUNvbmZpZy5lbnN1cmVHaWdh
Y2FnZUhhc0JlZW5DYWxsZWQgPSB0cnVlOworCiAgICAgICAgICAgICBpZiAoIXNob3VsZEJlRW5h
YmxlZCgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAorICAgICAgICAg
ICAgLy8gV2UgbWlnaHQgb25seSBnZXQgcGFnZSBzaXplIGFsaWdubWVudCwgYnV0IHRoYXQncyBh
bHNvIHRoZSBtaW5pbXVtCisgICAgICAgICAgICAvLyBhbGlnbm1lbnQgd2UgbmVlZCBmb3IgZnJl
ZXppbmcgdGhlIENvbmZpZy4KKyAgICAgICAgICAgIFJFTEVBU0VfQkFTU0VSVCghKHJlaW50ZXJw
cmV0X2Nhc3Q8c2l6ZV90PigmZ19naWdhY2FnZUNvbmZpZykgJiAodm1QYWdlU2l6ZSgpIC0gMSkp
KTsKKwogICAgICAgICAgICAgS2luZCBzaHVmZmxlZEtpbmRzW051bWJlck9mS2luZHNdOwogICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE51bWJlck9mS2luZHM7ICsraSkKICAg
ICAgICAgICAgICAgICBzaHVmZmxlZEtpbmRzW2ldID0gc3RhdGljX2Nhc3Q8S2luZD4oaSk7CkBA
IC0xOTEsMTIgKzIzNSwxOCBAQCB2b2lkIGVuc3VyZUdpZ2FjYWdlKCkKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgdm1EZWFsbG9jYXRlUGh5c2ljYWxQYWdlcyhiYXNlLCB0b3RhbFNpemUpOwog
ICAgICAgICAgICAgZ19naWdhY2FnZUNvbmZpZy5pc0VuYWJsZWQgPSB0cnVlOwotICAgICAgICAg
ICAgcHJvdGVjdEdpZ2FjYWdlQmFzZVB0cnMoKTsKKyAgICAgICAgICAgIGZyZWV6ZUdpZ2FjYWdl
Q29uZmlnKCk7CiAgICAgICAgIH0pOwogfQogCiB2b2lkIGRpc2FibGVQcmltaXRpdmVHaWdhY2Fn
ZSgpCiB7CisgICAgaWYgKGdfZ2lnYWNhZ2VDb25maWcuZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNh
Z2VJc0ZvcmJpZGRlbikKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJGQVRBTDogRGlzYWJsaW5n
IFByaW1pdGl2ZSBnaWdhY2FnZSBpcyBmb3JiaWRkZW4sIGJ1dCB3ZSBkb24ndCB3YW50IHRoYXQg
aW4gdGhpcyBwcm9jZXNzLlxuIik7CisKKyAgICBSRUxFQVNFX0JBU1NFUlQoIWdfZ2lnYWNhZ2VD
b25maWcuZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0ZvcmJpZGRlbik7CisgICAgUkVMRUFT
RV9CQVNTRVJUKCFnX2dpZ2FjYWdlQ29uZmlnLmlzUGVybWFuZW50bHlGcm96ZW4pOworCiAgICAg
ZW5zdXJlR2lnYWNhZ2UoKTsKICAgICBpZiAoIWdfZ2lnYWNhZ2VDb25maWcuYmFzZVB0cnNbUHJp
bWl0aXZlXSkgewogICAgICAgICAvLyBJdCB3YXMgbmV2ZXIgZW5hYmxlZC4gVGhhdCBtZWFucyB0
aGF0IHdlIG5ldmVyIGV2ZW4gc2F2ZWQgYW55IGNhbGxiYWNrcy4gT3IsIHdlIGhhZCBhbHJlYWR5
IGRpc2FibGVkCkBAIC0yMDksNyArMjU5LDcgQEAgdm9pZCBkaXNhYmxlUHJpbWl0aXZlR2lnYWNh
Z2UoKQogICAgIGZvciAoQ2FsbGJhY2smIGNhbGxiYWNrIDogY2FsbGJhY2tzLmNhbGxiYWNrcykK
ICAgICAgICAgY2FsbGJhY2suZnVuY3Rpb24oY2FsbGJhY2suYXJndW1lbnQpOwogICAgIGNhbGxi
YWNrcy5jYWxsYmFja3Muc2hyaW5rKDApOwotICAgIFVucHJvdGVjdEdpZ2FjYWdlQmFzZVB0cnNT
Y29wZSB1bnByb3RlY3RTY29wZTsKKyAgICBVbmZyZWV6ZUdpZ2FjYWdlQ29uZmlnU2NvcGUgdW5m
cmVlemVTY29wZTsKICAgICBnX2dpZ2FjYWdlQ29uZmlnLmJhc2VQdHJzW1ByaW1pdGl2ZV0gPSBu
dWxscHRyOwogfQogCkBAIC0yNDEsMzcgKzI5MSwzOSBAQCB2b2lkIHJlbW92ZVByaW1pdGl2ZURp
c2FibGVDYWxsYmFjayh2b2lkCiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBwcmltaXRpdmVHaWdh
Y2FnZURpc2FibGVkKHZvaWQqKQorc3RhdGljIGJvb2wgdmVyaWZ5R2lnYWNhZ2VJc0VuYWJsZWQo
KQogewotICAgIGlmIChHSUdBQ0FHRV9BTExPQ0FUSU9OX0NBTl9GQUlMICYmICFpc0VuYWJsZWQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3RhdGljIGJvb2wgc19mYWxzZTsKLSAgICBmcHJp
bnRmKHN0ZGVyciwgIkZBVEFMOiBQcmltaXRpdmUgZ2lnYWNhZ2UgZGlzYWJsZWQsIGJ1dCB3ZSBk
b24ndCB3YW50IHRoYXQgaW4gdGhpcyBwcm9jZXNzLlxuIik7Ci0gICAgaWYgKCFzX2ZhbHNlKQot
ICAgICAgICBCQ1JBU0goKTsKKyAgICBib29sIGlzRW5hYmxlZCA9IGdfZ2lnYWNhZ2VDb25maWcu
aXNFbmFibGVkOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgTnVtYmVyT2ZLaW5kczsgKytp
KQorICAgICAgICBpc0VuYWJsZWQgPSBpc0VuYWJsZWQgJiYgZ19naWdhY2FnZUNvbmZpZy5iYXNl
UHRyc1tpXTsKKyAgICByZXR1cm4gaXNFbmFibGVkOwogfQogCi12b2lkIGRpc2FibGVEaXNhYmxp
bmdQcmltaXRpdmVHaWdhY2FnZUlmU2hvdWxkQmVFbmFibGVkKCkKK3ZvaWQgZm9yYmlkRGlzYWJs
aW5nUHJpbWl0aXZlR2lnYWNhZ2UoKQogewotICAgIGlmIChzaG91bGRCZUVuYWJsZWQoKSkgewot
ICAgICAgICBhZGRQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2socHJpbWl0aXZlR2lnYWNhZ2VEaXNh
YmxlZCwgbnVsbHB0cik7Ci0gICAgICAgIHNfaXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZURp
c2FibGVkID0gdHJ1ZTsKKyAgICBSRUxFQVNFX0JBU1NFUlQoR0lHQUNBR0VfQUxMT0NBVElPTl9D
QU5fRkFJTCB8fCB2ZXJpZnlHaWdhY2FnZUlzRW5hYmxlZCgpKTsKKyAgICBpZiAoIWdfZ2lnYWNh
Z2VDb25maWcuZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0ZvcmJpZGRlbikgeworICAgICAg
ICB1bmZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCk7CisgICAgICAgIGdfZ2lnYWNhZ2VDb25maWcuZGlz
YWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0ZvcmJpZGRlbiA9IHRydWU7CiAgICAgfQorICAgIHBl
cm1hbmVudGx5RnJlZXplR2lnYWNhZ2VDb25maWcoKTsKKyAgICBSRUxFQVNFX0JBU1NFUlQoaXNE
aXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUZvcmJpZGRlbigpKTsKIH0KIAotYm9vbCBpc0Rpc2Fi
bGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQoKQorQk5PX0lOTElORSBib29sIGlzRGlzYWJs
aW5nUHJpbWl0aXZlR2lnYWNhZ2VGb3JiaWRkZW4oKQogewotICAgIHJldHVybiBzX2lzRGlzYWJs
aW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZDsKKyAgICByZXR1cm4gZ19naWdhY2FnZUNvbmZp
Zy5kaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUlzRm9yYmlkZGVuOwogfQogCiBib29sIHNob3Vs
ZEJlRW5hYmxlZCgpCiB7Ci0gICAgc3RhdGljIGJvb2wgY2FjaGVkID0gZmFsc2U7CiAgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKAogICAgICAg
ICBvbmNlRmxhZywKICAgICAgICAgW10geworICAgICAgICAgICAgUkVMRUFTRV9CQVNTRVJUKCFn
X2dpZ2FjYWdlQ29uZmlnLnNob3VsZEJlRW5hYmxlZEhhc0JlZW5DYWxsZWQpOworICAgICAgICAg
ICAgZ19naWdhY2FnZUNvbmZpZy5zaG91bGRCZUVuYWJsZWRIYXNCZWVuQ2FsbGVkID0gdHJ1ZTsK
KwogICAgICAgICAgICAgYm9vbCBkZWJ1Z0hlYXBFbmFibGVkID0gRW52aXJvbm1lbnQ6OmdldCgp
LT5pc0RlYnVnSGVhcEVuYWJsZWQoKTsKICAgICAgICAgICAgIGlmIChkZWJ1Z0hlYXBFbmFibGVk
KQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTI4NywxMyArMzM5LDExIEBAIGJvb2wgc2hv
dWxkQmVFbmFibGVkKCkKICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJXYXJu
aW5nOiBpbnZhbGlkIGFyZ3VtZW50IHRvIEdJR0FDQUdFX0VOQUJMRUQ6ICVzXG4iLCBnaWdhY2Fn
ZUVuYWJsZWQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNo
ZWQgPSB0cnVlOworICAgICAgICAgICAgZ19naWdhY2FnZUNvbmZpZy5zaG91bGRCZUVuYWJsZWQg
PSB0cnVlOwogICAgICAgICB9KTsKLSAgICByZXR1cm4gY2FjaGVkOworICAgIHJldHVybiBnX2dp
Z2FjYWdlQ29uZmlnLnNob3VsZEJlRW5hYmxlZDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgR2lnYWNh
Z2UKIAogI2VuZGlmIC8vIEdJR0FDQUdFX0VOQUJMRUQKLQotCkluZGV4OiBTb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0dpZ2FjYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9HaWdhY2FnZS5oCShyZXZpc2lvbiAyNDk2MDApCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0dpZ2FjYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMyw3ICsxMTMsMjEgQEAgc3RydWN0IENv
bmZpZyB7CiAKICAgICB1bmlvbiB7CiAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAvLyBB
bGwgdGhlIGZpZWxkcyBpbiB0aGlzIHN0cnVjdCBzaG91bGQgYmUgY2hvc2VuIHN1Y2ggdGhhdCB0
aGVpcgorICAgICAgICAgICAgLy8gaW5pdGlhbCB2YWx1ZSBpcyAwIC8gbnVsbCAvIGZhbHN5IGJl
Y2F1c2UgQ29uZmlnIGlzIGluc3RhbnRpYXRlZAorICAgICAgICAgICAgLy8gYXMgYSBnbG9iYWwg
c2luZ2xldG9uLgorCiAgICAgICAgICAgICBib29sIGlzRW5hYmxlZDsKKyAgICAgICAgICAgIGJv
b2wgaXNQZXJtYW5lbnRseUZyb3plbjsKKyAgICAgICAgICAgIGJvb2wgZGlzYWJsaW5nUHJpbWl0
aXZlR2lnYWNhZ2VJc0ZvcmJpZGRlbjsKKyAgICAgICAgICAgIGJvb2wgc2hvdWxkQmVFbmFibGVk
OworCisgICAgICAgICAgICAvLyBXZSB3b3VsZCBsaWtlIHRvIGp1c3QgcHV0IHRoZSBzdGQ6Om9u
Y2VfZmxhZyBmb3IgdGhlc2UgZnVuY3Rpb25zCisgICAgICAgICAgICAvLyBoZXJlLCBidXQgd2Ug
Y2FuJ3QgYmVjYXVzZSBzdGQ6Om9uY2VfZmxhZyBoYXMgYSBpbXBsaWNpdGx5LWRlbGV0ZWQKKyAg
ICAgICAgICAgIC8vIGRlZmF1bHQgY29uc3RydWN0b3IuIFNvLCB3ZSB1c2UgYSBib29sZWFuIGlu
c3RlYWQuCisgICAgICAgICAgICBib29sIHNob3VsZEJlRW5hYmxlZEhhc0JlZW5DYWxsZWQ7Cisg
ICAgICAgICAgICBib29sIGVuc3VyZUdpZ2FjYWdlSGFzQmVlbkNhbGxlZDsKKwogICAgICAgICAg
ICAgdm9pZCogYmFzZVB0cnNbTnVtYmVyT2ZLaW5kc107CiAgICAgICAgIH07CiAgICAgICAgIGNo
YXIgZW5zdXJlU2l6ZVtjb25maWdTaXplVG9Qcm90ZWN0XTsKQEAgLTEzOCwxMSArMTUyLDExIEBA
IEJFWFBPUlQgdm9pZCBkaXNhYmxlUHJpbWl0aXZlR2lnYWNhZ2UoKTsKIEJFWFBPUlQgdm9pZCBh
ZGRQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2sodm9pZCAoKikodm9pZCopLCB2b2lkKik7CiBCRVhQ
T1JUIHZvaWQgcmVtb3ZlUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrKHZvaWQgKCopKHZvaWQqKSwg
dm9pZCopOwogCi1CRVhQT1JUIHZvaWQgZGlzYWJsZURpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdl
SWZTaG91bGRCZUVuYWJsZWQoKTsKK0JFWFBPUlQgdm9pZCBmb3JiaWREaXNhYmxpbmdQcmltaXRp
dmVHaWdhY2FnZSgpOwogCi1CRVhQT1JUIGJvb2wgaXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2Fn
ZURpc2FibGVkKCk7Ci1pbmxpbmUgYm9vbCBpc1ByaW1pdGl2ZUdpZ2FjYWdlUGVybWFuZW50bHlF
bmFibGVkKCkgeyByZXR1cm4gaXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZURpc2FibGVkKCk7
IH0KLWlubGluZSBib29sIGNhblByaW1pdGl2ZUdpZ2FjYWdlQmVEaXNhYmxlZCgpIHsgcmV0dXJu
ICFpc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQoKTsgfQorQkVYUE9SVCBib29s
IGlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VGb3JiaWRkZW4oKTsKK2lubGluZSBib29sIGlz
UHJpbWl0aXZlR2lnYWNhZ2VQZXJtYW5lbnRseUVuYWJsZWQoKSB7IHJldHVybiBpc0Rpc2FibGlu
Z1ByaW1pdGl2ZUdpZ2FjYWdlRm9yYmlkZGVuKCk7IH0KK2lubGluZSBib29sIGNhblByaW1pdGl2
ZUdpZ2FjYWdlQmVEaXNhYmxlZCgpIHsgcmV0dXJuICFpc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2Fj
YWdlRm9yYmlkZGVuKCk7IH0KIAogQklOTElORSB2b2lkKiBiYXNlUHRyKEtpbmQga2luZCkKIHsK
QEAgLTIzMyw3ICsyNDcsNyBAQCBCSU5MSU5FIGJvb2wgaXNDYWdlZChLaW5kLCBjb25zdCB2b2lk
KikgCiBCSU5MSU5FIGJvb2wgaXNFbmFibGVkKEtpbmQpIHsgcmV0dXJuIGZhbHNlOyB9CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBCSU5MSU5FIFQqIGNhZ2VkKEtpbmQsIFQqIHB0cikgeyByZXR1cm4g
cHRyOyB9CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBCSU5MSU5FIFQqIGNhZ2VkTWF5QmVOdWxsKEtp
bmQsIFQqIHB0cikgeyByZXR1cm4gcHRyOyB9Ci1CSU5MSU5FIHZvaWQgZGlzYWJsZURpc2FibGlu
Z1ByaW1pdGl2ZUdpZ2FjYWdlSWZTaG91bGRCZUVuYWJsZWQoKSB7IH0KK0JJTkxJTkUgdm9pZCBm
b3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpIHsgfQogQklOTElORSBib29sIGNhblBy
aW1pdGl2ZUdpZ2FjYWdlQmVEaXNhYmxlZCgpIHsgcmV0dXJuIGZhbHNlOyB9CiBCSU5MSU5FIHZv
aWQgZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKCkgeyB9CiBCSU5MSU5FIHZvaWQgYWRkUHJpbWl0
aXZlRGlzYWJsZUNhbGxiYWNrKHZvaWQgKCopKHZvaWQqKSwgdm9pZCopIHsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378265</attachid>
            <date>2019-09-06 19:02:52 -0700</date>
            <delta_ts>2019-09-06 21:04:17 -0700</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-201570.patch</filename>
            <type>text/plain</type>
            <size>19542</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ5NjAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE5LTA5LTA2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBI
YXJkZW4gcHJvdGVjdGlvbiBvZiB0aGUgR2lnYWNhZ2UgQ29uZmlnIHBhcmFtZXRlcnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE1NzAKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzU1MTM0MjI5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0g
QmFyYXRpLgorCisgICAgICAgIEp1c3QgcmVuYW1pbmcgc29tZSBmdW5jdGlvbiBuYW1lcyBoZXJl
LgorCisgICAgICAgICogYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6dGVz
dENhZ2VQcmVzZXJ2ZXNQQUNGYWlsdXJlQml0KToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxw
ZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Y2FnZUNvbmRpdGlvbmFsbHkp
OgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChqc2NtYWluKToKKwogMjAxOS0wOS0wNiAg
Um9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgTWF0aC5y
b3VuZCgpIHByb2R1Y2VzIHdyb25nIHJlc3VsdCBmb3IgdmFsdWUgcHJpb3IgdG8gMC41CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjQ5NjAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwODYsNyArMzA4Niw3IEBAIGludCBq
c2NtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAg
ICAgSlNDOjpXYXNtOjplbmFibGVGYXN0TWVtb3J5KCk7CiAjZW5kaWYKLSAgICBHaWdhY2FnZTo6
ZGlzYWJsZURpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSWZTaG91bGRCZUVuYWJsZWQoKTsKKyAg
ICBHaWdhY2FnZTo6Zm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UoKTsKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIGF1dG8mIG1lbW9yeVByZXNzdXJlSGFuZGxlciA9IE1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAkocmV2aXNpb24gMjQ5NjAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
MTAsNyArMTIxMCw3IEBAIHZvaWQgdGVzdE1vdmVEb3VibGVDb25kaXRpb25hbGx5NjQoKQogc3Rh
dGljIHZvaWQgdGVzdENhZ2VQcmVzZXJ2ZXNQQUNGYWlsdXJlQml0KCkKIHsKICNpZiBHSUdBQ0FH
RV9FTkFCTEVECi0gICAgQVNTRVJUKCFHaWdhY2FnZTo6aXNEaXNhYmxpbmdQcmltaXRpdmVHaWdh
Y2FnZURpc2FibGVkKCkpOworICAgIEFTU0VSVCghR2lnYWNhZ2U6OmlzRGlzYWJsaW5nUHJpbWl0
aXZlR2lnYWNhZ2VGb3JiaWRkZW4oKSk7CiAgICAgYXV0byBjYWdlID0gY29tcGlsZShbXSAoQ0Nh
bGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKICAg
ICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIEdQUkluZm86
OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5o
CShyZXZpc2lvbiAyNDk2MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTg4LDcgKzE1ODgsNyBAQCBwdWJsaWM6CiAg
ICAgewogI2lmIEdJR0FDQUdFX0VOQUJMRUQKICAgICAgICAgaWYgKEdpZ2FjYWdlOjppc0VuYWJs
ZWQoa2luZCkpIHsKLSAgICAgICAgICAgIGlmIChraW5kICE9IEdpZ2FjYWdlOjpQcmltaXRpdmUg
fHwgR2lnYWNhZ2U6OmlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCgpKQorICAg
ICAgICAgICAgaWYgKGtpbmQgIT0gR2lnYWNhZ2U6OlByaW1pdGl2ZSB8fCBHaWdhY2FnZTo6aXNE
aXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUZvcmJpZGRlbigpKQogICAgICAgICAgICAgICAgIGNh
Z2VXaXRob3V0VW50YWdnaW5nKGtpbmQsIHN0b3JhZ2UpOwogICAgICAgICAgICAgZWxzZSB7CiAj
aWYgQ1BVKEFSTTY0RSkKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDk2MDApCisrKyBTb3VyY2UvV1RGL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE5LTA5LTA2ICBNYXJr
IExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBIYXJkZW4gcHJvdGVjdGlvbiBv
ZiB0aGUgR2lnYWNhZ2UgQ29uZmlnIHBhcmFtZXRlcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE1NzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzU1MTM0MjI5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAg
IEp1c3QgcmVuYW1pbmcgc29tZSBmdW5jdGlvbiBuYW1lcyBoZXJlLgorCisgICAgICAgICogd3Rm
L0dpZ2FjYWdlLmg6CisgICAgICAgIChHaWdhY2FnZTo6Zm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZl
R2lnYWNhZ2UpOgorICAgICAgICAoR2lnYWNhZ2U6OmlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNh
Z2VGb3JiaWRkZW4pOgorICAgICAgICAoR2lnYWNhZ2U6OmRpc2FibGVEaXNhYmxpbmdQcmltaXRp
dmVHaWdhY2FnZUlmU2hvdWxkQmVFbmFibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKEdpZ2FjYWdl
Ojppc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQpOiBEZWxldGVkLgorCiAyMDE5
LTA5LTA1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3Rv
ciB0aGUgR2lnYWNhZ2UgY29kZSB0byByZXF1aXJlIGxlc3MgcG9pbnRlciBjYXN0aW5nLgpJbmRl
eDogU291cmNlL1dURi93dGYvR2lnYWNhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0
Zi9HaWdhY2FnZS5oCShyZXZpc2lvbiAyNDk2MDApCisrKyBTb3VyY2UvV1RGL3d0Zi9HaWdhY2Fn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw5ICs0OSw5IEBAIGlubGluZSBib29sIHNob3VsZEJl
RW5hYmxlZCgpIHsgcmV0dXJuIGYKIGlubGluZSB2b2lkIGFkZFByaW1pdGl2ZURpc2FibGVDYWxs
YmFjayh2b2lkICgqKSh2b2lkKiksIHZvaWQqKSB7IH0KIGlubGluZSB2b2lkIHJlbW92ZVByaW1p
dGl2ZURpc2FibGVDYWxsYmFjayh2b2lkICgqKSh2b2lkKiksIHZvaWQqKSB7IH0KIAotaW5saW5l
IHZvaWQgZGlzYWJsZURpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSWZTaG91bGRCZUVuYWJsZWQo
KSB7IH0KK2lubGluZSB2b2lkIGZvcmJpZERpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlKCkgeyB9
CiAKLWlubGluZSBib29sIGlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCgpIHsg
cmV0dXJuIGZhbHNlOyB9CitpbmxpbmUgYm9vbCBpc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdl
Rm9yYmlkZGVuKCkgeyByZXR1cm4gZmFsc2U7IH0KIGlubGluZSBib29sIGlzUHJpbWl0aXZlR2ln
YWNhZ2VQZXJtYW5lbnRseUVuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQogaW5saW5lIGJvb2wg
Y2FuUHJpbWl0aXZlR2lnYWNhZ2VCZURpc2FibGVkKCkgeyByZXR1cm4gdHJ1ZTsgfQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwkocmV2aXNpb24gMjQ5NjAwKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxOS0wOS0wNiAgTWFyayBMYW0gIDxtYXJr
LmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSGFyZGVuIHByb3RlY3Rpb24gb2YgdGhlIEdpZ2Fj
YWdlIENvbmZpZyBwYXJhbWV0ZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAxNTcwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTEzNDIyOT4K
KworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICBKdXN0IHJlbmFt
aW5nIGEgZnVuY3Rpb24gbmFtZSBoZXJlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcDoKKwogMjAxOS0wOS0wNiAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFtXZWJBdXRobl0gTWFrZSBXZWJBdXRobiBkZWZhdWx0IG9mZiBhbmQgbGV0
IGNsaWVudHMgdHVybiBpdCBvbiBhdCB3aWxsCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyNDk2MDApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOSw3ICsyMjksNyBAQCBX
ZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICAgICB9KTsKICNlbmRpZgogICAgIAotICAgIEdpZ2Fj
YWdlOjpkaXNhYmxlRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJZlNob3VsZEJlRW5hYmxlZCgp
OworICAgIEdpZ2FjYWdlOjpmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpOwogfQog
CiBXZWJQcm9jZXNzOjp+V2ViUHJvY2VzcygpCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDk2
MDApCisrKyBTb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSw3NyBAQAorMjAxOS0wOS0wNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAg
ICAgICAgSGFyZGVuIHByb3RlY3Rpb24gb2YgdGhlIEdpZ2FjYWdlIENvbmZpZyBwYXJhbWV0ZXJz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNTcw
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTEzNDIyOT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBTYWFtIEJhcmF0aS4KKworICAgICAgICAxLiBSZW5hbWUgcHJvdGVjdEdpZ2FjYWdlQmFzZVB0
cnMoKSBhbmQgdW5wcm90ZWN0R2lnYWNhZ2VCYXNlUHRycygpIHRvCisgICAgICAgICAgIGZyZWV6
ZUdpZ2FjYWdlQ29uZmlnKCkgYW5kIHVuZnJlZXplR2lnYWNhZ2VDb25maWcoKSByZXNwZWN0aXZl
bHkuCisKKyAgICAgICAgICAgQWxzbyBtb3ZlIHRoZSBhbGlnbm1lbnQgY2hlY2sgaW4gcHJvdGVj
dEdpZ2FjYWdlQmFzZVB0cnMoKSBpbnRvIGVuc3VyZUdpZ2FjYWdlKCkuCisgICAgICAgICAgIFRo
ZXJlJ3Mgbm8gbmVlZCB0byBjaGVjayBpdCBtb3JlIHRoYW4gb25jZS4KKworICAgICAgICAyLiBJ
bnRyb2R1Y2UgcGVybWFuZW50bHlGcmVlemVHaWdhY2FnZUNvbmZpZygpIHdoaWNoIHBlcm1hbmVu
dGx5IG1ha2VzIHRoZQorICAgICAgICAgICBDb25maWcgUmVhZE9ubHkuICBPbmNlIGludm9rZWQs
IHRoZSBDb25maWcgY2Fubm90IGJlIG1hZGUgd3JpdGFibGUgYWdhaW4uCisKKyAgICAgICAgICAg
VGhpcyBpcyBtYWRlIHBvc3NpYmxlIGJ5IHVzaW5nIHZtX3Byb3RlY3Qgd2l0aCBhIHRydWUgc2V0
X21heGltdW0gYXJndW1lbnQuCisgICAgICAgICAgIFdlIGFsc28gYWRkIGEgZ19naWdhY2FnZUNv
bmZpZy5pc1Blcm1hbmVudGx5RnJvemVuIGZsYWcgdGhhdCB3ZSBhc3NlcnQuCisgICAgICAgICAg
IE5vdGU6IHRoaXMgcGVybWFuZW5jZSBpcyBvbmx5IHRydWUgZm9yIE9TKERBUldJTikgc2luY2Ug
dm1fcHJvdGVjdCBpcyBNYWNoIEFQSS4KKworICAgICAgICAzLiBSZW5hbWUgZGlzYWJsZURpc2Fi
bGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSWZTaG91bGRCZUVuYWJsZWQoKSB0bworICAgICAgICAgICBm
b3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpIGJlY2F1c2UgImRpc2FibGluZ0Rpc2Fi
bGluZyIgaXMgYSB0b25ndWUKKyAgICAgICAgICAgdHdpc3Rlci4KKworICAgICAgICAgICBBbHNv
LCB3ZSBkb24ndCB3YW50IHRvIG1ha2UgaXQgY29uZGl0aW9uYWwgb24gIklmU2hvdWxkQmVFbmFi
bGVkIi4gIFdlIHdhbnQKKyAgICAgICAgICAgZm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNh
Z2UoKSB0byBiZSBpcnJldmVyc2libGUuICBJdCBpcyB1cCB0byB0aGUgY2xpZW50CisgICAgICAg
ICAgIHRvIGVuc3VyZSB0aGF0IHRoZSBHaWdhY2FnZSBpcyBhbHJlYWR5IGluaXRpYWxpemVkIChp
ZiBwb3NzaWJsZSkgYmVmb3JlCisgICAgICAgICAgIGludm9raW5nIGZvcmJpZERpc2FibGluZ1By
aW1pdGl2ZUdpZ2FjYWdlKCkuICBDb25jZXB0dWFsbHksIHRoZSBmb3JiaWRkaW5nCisgICAgICAg
ICAgIGlzbid0IGFib3V0IGd1YXJhbnRlZWluZyB0aGF0IHRoZSBHaWdhY2FnZSBpcyBlbmFibGVk
LiAgSXQgb25seSB0YWtlcyBhd2F5IHRoZQorICAgICAgICAgICBvcHRpb24gdG8gZGlzYWJsZSBp
dC4KKworICAgICAgICAgICBUaGF0IHNhaWQsIGZvcmJpZERpc2FibGluZ1ByaW1pdGl2ZUdpZ2Fj
YWdlKCkgaXMgb25seSBpbnZva2VkIGJ5IGNsaWVudHMgdGhhdAorICAgICAgICAgICBjYXJlIGFi
b3V0IGtlZXBpbmcgdGhlIEdpZ2FjYWdlIGVuYWJsZWQuICBTbywgaXQgZG9lcyBhIHNhbml0eSBj
aGVjayAod2l0aCBhbgorICAgICAgICAgICBhc3NlcnRpb24pIHRoYXQgaWYgIUdJR0FDQUdFX0FM
TE9DQVRJT05fQ0FOX0ZBSUwsIHRoZW4gdGhlIEdpZ2FjYWdlIHNob3VsZCBiZQorICAgICAgICAg
ICBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgYW5kIGVuYWJsZWQgYmVmb3JlIGludm9raW5nIGl0Lgor
CisgICAgICAgICAgIFdlIGFsc28gbWFrZSBzdXJlIHRoYXQgZm9yYmlkRGlzYWJsaW5nUHJpbWl0
aXZlR2lnYWNhZ2UoKSBjYWxscworICAgICAgICAgICBwZXJtYW5lbnRseUZyZWV6ZUdpZ2FjYWdl
Q29uZmlnKCkgdW5jb25kaXRpb25hbGx5LiAgSXQgaXMgc2FmZSB0byBjYWxsIGl0IG1vcmUKKyAg
ICAgICAgICAgdGhhbiBvbmNlLiAgVGhpcyBndWFyYW50ZWVzIHRoYXQgdGhlIENvbmZpZyBpcyBw
ZXJtYW5lbnRseSBmcm96ZW4gYWZ0ZXIgdGhpcywKKyAgICAgICAgICAgZXZlbiBpZiBhIGJ1ZyBz
aG91bGQgaW5hZHZlcnRhbnRseSBzZXQgdGhlCisgICAgICAgICAgIGdfZ2lnYWNhZ2VDb25maWcu
ZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0ZvcmJpZGRlbiBmbGFnIGJlZm9yZQorICAgICAg
ICAgICBmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpIGlzIGludm9rZWQuCisKKyAg
ICAgICAgNC4gQXNzZXJ0IHRoYXQgZW5zdXJlR2lnYWNhZ2UoKSBpcyBvbmx5IGNhbGxlZCBvbmNl
LgorCisgICAgICAgIDUuIEFzc2VydCB0aGF0IHNob3VsZEJlRW5hYmxlZCgpIGlzIG9ubHkgY2Fs
bGVkIG9uY2UuCisgICAgICAgICAgIEFsc28gbW92ZWQgaXRzIGNhY2hlZCByZXN1bHQgaW50byB0
aGUgQ29uZmlnIHNvIHRoYXQgaXQgY2FuIGJlIGZyb3plbi4KKworICAgICAgICAqIGJtYWxsb2Mv
R2lnYWNhZ2UuY3BwOgorICAgICAgICAoR2lnYWNhZ2U6OmJtYWxsb2M6OmZyZWV6ZUdpZ2FjYWdl
Q29uZmlnKToKKyAgICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjp1bmZyZWV6ZUdpZ2FjYWdlQ29u
ZmlnKToKKyAgICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjpwZXJtYW5lbnRseUZyZWV6ZUdpZ2Fj
YWdlQ29uZmlnKToKKyAgICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjpVbmZyZWV6ZUdpZ2FjYWdl
Q29uZmlnU2NvcGU6OlVuZnJlZXplR2lnYWNhZ2VDb25maWdTY29wZSk6CisgICAgICAgIChHaWdh
Y2FnZTo6Ym1hbGxvYzo6VW5mcmVlemVHaWdhY2FnZUNvbmZpZ1Njb3BlOjp+VW5mcmVlemVHaWdh
Y2FnZUNvbmZpZ1Njb3BlKToKKyAgICAgICAgKEdpZ2FjYWdlOjplbnN1cmVHaWdhY2FnZSk6Cisg
ICAgICAgIChHaWdhY2FnZTo6ZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKToKKyAgICAgICAgKEdp
Z2FjYWdlOjp2ZXJpZnlHaWdhY2FnZUlzRW5hYmxlZCk6CisgICAgICAgIChHaWdhY2FnZTo6Zm9y
YmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UpOgorICAgICAgICAoR2lnYWNhZ2U6OmlzRGlz
YWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VGb3JiaWRkZW4pOgorICAgICAgICAoR2lnYWNhZ2U6OnNo
b3VsZEJlRW5hYmxlZCk6CisgICAgICAgIChHaWdhY2FnZTo6Ym1hbGxvYzo6cHJvdGVjdEdpZ2Fj
YWdlQmFzZVB0cnMpOiBEZWxldGVkLgorICAgICAgICAoR2lnYWNhZ2U6OmJtYWxsb2M6OnVucHJv
dGVjdEdpZ2FjYWdlQmFzZVB0cnMpOiBEZWxldGVkLgorICAgICAgICAoR2lnYWNhZ2U6OmJtYWxs
b2M6OlVucHJvdGVjdEdpZ2FjYWdlQmFzZVB0cnNTY29wZTo6VW5wcm90ZWN0R2lnYWNhZ2VCYXNl
UHRyc1Njb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjpVbnByb3Rl
Y3RHaWdhY2FnZUJhc2VQdHJzU2NvcGU6On5VbnByb3RlY3RHaWdhY2FnZUJhc2VQdHJzU2NvcGUp
OiBEZWxldGVkLgorICAgICAgICAoR2lnYWNhZ2U6OnByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQp
OiBEZWxldGVkLgorICAgICAgICAoR2lnYWNhZ2U6OmRpc2FibGVEaXNhYmxpbmdQcmltaXRpdmVH
aWdhY2FnZUlmU2hvdWxkQmVFbmFibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKEdpZ2FjYWdlOjpp
c0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAq
IGJtYWxsb2MvR2lnYWNhZ2UuaDoKKyAgICAgICAgKEdpZ2FjYWdlOjppc1ByaW1pdGl2ZUdpZ2Fj
YWdlUGVybWFuZW50bHlFbmFibGVkKToKKyAgICAgICAgKEdpZ2FjYWdlOjpjYW5QcmltaXRpdmVH
aWdhY2FnZUJlRGlzYWJsZWQpOgorICAgICAgICAoR2lnYWNhZ2U6OmZvcmJpZERpc2FibGluZ1By
aW1pdGl2ZUdpZ2FjYWdlKToKKyAgICAgICAgKEdpZ2FjYWdlOjpkaXNhYmxlRGlzYWJsaW5nUHJp
bWl0aXZlR2lnYWNhZ2VJZlNob3VsZEJlRW5hYmxlZCk6IERlbGV0ZWQuCisKIDIwMTktMDktMDYg
IE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBGYWlsdXJlQWN0
aW9uIGV2ZXJ5d2hlcmUgaW4gYm1hbGxvYyBpbnN0ZWFkIG9mIGEgY3Jhc2hPbkZhaWx1cmUgYm9v
bGVhbi4KSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuY3BwCShyZXZpc2lvbiAyNDk2
MDApCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNiArMzUsMTAgQEAKICNpbmNsdWRlIDxjc3RkaW8+CiAjaW5jbHVkZSA8bXV0ZXg+
CiAKKyNpZiBCT1MoREFSV0lOKQorI2luY2x1ZGUgPG1hY2gvbWFjaF90cmFwcy5oPgorI2VuZGlm
CisKICNpZiBHSUdBQ0FHRV9FTkFCTEVECiAKIG5hbWVzcGFjZSBHaWdhY2FnZSB7CkBAIC04MSwz
MCArODUsNjMgQEAgdXNpbmcgbmFtZXNwYWNlIGJtYWxsb2M7CiAKIG5hbWVzcGFjZSB7CiAKLWJv
b2wgc19pc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQ7CisjaWYgQk9TKERBUldJ
TikKK2VudW0geworICAgIEFsbG93UGVybWlzc2lvbkNoYW5nZXNBZnRlclRoaXMgPSBmYWxzZSwK
KyAgICBEaXNhbGxvd1Blcm1pc3Npb25DaGFuZ2VzQWZ0ZXJUaGlzID0gdHJ1ZQorfTsKKyNlbmRp
ZgorCitzdGF0aWMgdm9pZCBmcmVlemVHaWdhY2FnZUNvbmZpZygpCit7CisgICAgaW50IHJlc3Vs
dDsKKyNpZiBCT1MoREFSV0lOKQorICAgIHJlc3VsdCA9IHZtX3Byb3RlY3QobWFjaF90YXNrX3Nl
bGYoKSwgcmVpbnRlcnByZXRfY2FzdDx2bV9hZGRyZXNzX3Q+KCZnX2dpZ2FjYWdlQ29uZmlnKSwg
Y29uZmlnU2l6ZVRvUHJvdGVjdCwgQWxsb3dQZXJtaXNzaW9uQ2hhbmdlc0FmdGVyVGhpcywgVk1f
UFJPVF9SRUFEKTsKKyNlbHNlCisgICAgcmVzdWx0ID0gbXByb3RlY3QoJmdfZ2lnYWNhZ2VDb25m
aWcsIGNvbmZpZ1NpemVUb1Byb3RlY3QsIFBST1RfUkVBRCk7CisjZW5kaWYKKyAgICBSRUxFQVNF
X0JBU1NFUlQoIXJlc3VsdCk7Cit9CiAKLXZvaWQgcHJvdGVjdEdpZ2FjYWdlQmFzZVB0cnMoKQor
c3RhdGljIHZvaWQgdW5mcmVlemVHaWdhY2FnZUNvbmZpZygpCiB7Ci0gICAgLy8gV2UgbWlnaHQg
b25seSBnZXQgcGFnZSBzaXplIGFsaWdubWVudCwgYnV0IHRoYXQncyBhbHNvIHRoZSBtaW5pbXVt
IHdlIG5lZWQuCi0gICAgUkVMRUFTRV9CQVNTRVJUKCEocmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+
KCZnX2dpZ2FjYWdlQ29uZmlnKSAmICh2bVBhZ2VTaXplKCkgLSAxKSkpOwotICAgIG1wcm90ZWN0
KCZnX2dpZ2FjYWdlQ29uZmlnLCBjb25maWdTaXplVG9Qcm90ZWN0LCBQUk9UX1JFQUQpOworICAg
IFJFTEVBU0VfQkFTU0VSVCghZ19naWdhY2FnZUNvbmZpZy5pc1Blcm1hbmVudGx5RnJvemVuKTsK
KyAgICBpbnQgcmVzdWx0OworI2lmIEJPUyhEQVJXSU4pCisgICAgcmVzdWx0ID0gdm1fcHJvdGVj
dChtYWNoX3Rhc2tfc2VsZigpLCByZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4oJmdfZ2ln
YWNhZ2VDb25maWcpLCBjb25maWdTaXplVG9Qcm90ZWN0LCBBbGxvd1Blcm1pc3Npb25DaGFuZ2Vz
QWZ0ZXJUaGlzLCBWTV9QUk9UX1JFQUQgfCBWTV9QUk9UX1dSSVRFKTsKKyNlbHNlCisgICAgcmVz
dWx0ID0gbXByb3RlY3QoJmdfZ2lnYWNhZ2VDb25maWcsIGNvbmZpZ1NpemVUb1Byb3RlY3QsIFBS
T1RfUkVBRCB8IFBST1RfV1JJVEUpOworI2VuZGlmCisgICAgUkVMRUFTRV9CQVNTRVJUKCFyZXN1
bHQpOwogfQogCi12b2lkIHVucHJvdGVjdEdpZ2FjYWdlQmFzZVB0cnMoKQorc3RhdGljIHZvaWQg
cGVybWFuZW50bHlGcmVlemVHaWdhY2FnZUNvbmZpZygpCiB7Ci0gICAgbXByb3RlY3QoJmdfZ2ln
YWNhZ2VDb25maWcsIGNvbmZpZ1NpemVUb1Byb3RlY3QsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUp
OworICAgIGlmICghZ19naWdhY2FnZUNvbmZpZy5pc1Blcm1hbmVudGx5RnJvemVuKSB7CisgICAg
ICAgIHVuZnJlZXplR2lnYWNhZ2VDb25maWcoKTsKKyAgICAgICAgZ19naWdhY2FnZUNvbmZpZy5p
c1Blcm1hbmVudGx5RnJvemVuID0gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBUaGVyZSdzIG5vIGdv
aW5nIGJhY2sgbm93IQorICAgIGludCByZXN1bHQ7CisjaWYgQk9TKERBUldJTikKKyAgICByZXN1
bHQgPSB2bV9wcm90ZWN0KG1hY2hfdGFza19zZWxmKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm1fYWRk
cmVzc190PigmZ19naWdhY2FnZUNvbmZpZyksIGNvbmZpZ1NpemVUb1Byb3RlY3QsIERpc2FsbG93
UGVybWlzc2lvbkNoYW5nZXNBZnRlclRoaXMsIFZNX1BST1RfUkVBRCk7CisjZWxzZQorICAgIHJl
c3VsdCA9IG1wcm90ZWN0KCZnX2dpZ2FjYWdlQ29uZmlnLCBjb25maWdTaXplVG9Qcm90ZWN0LCBQ
Uk9UX1JFQUQpOworI2VuZGlmCisgICAgUkVMRUFTRV9CQVNTRVJUKCFyZXN1bHQpOwogfQogCi1j
bGFzcyBVbnByb3RlY3RHaWdhY2FnZUJhc2VQdHJzU2NvcGUgeworY2xhc3MgVW5mcmVlemVHaWdh
Y2FnZUNvbmZpZ1Njb3BlIHsKIHB1YmxpYzoKLSAgICBVbnByb3RlY3RHaWdhY2FnZUJhc2VQdHJz
U2NvcGUoKQorICAgIFVuZnJlZXplR2lnYWNhZ2VDb25maWdTY29wZSgpCiAgICAgewotICAgICAg
ICB1bnByb3RlY3RHaWdhY2FnZUJhc2VQdHJzKCk7CisgICAgICAgIHVuZnJlZXplR2lnYWNhZ2VD
b25maWcoKTsKICAgICB9CiAgICAgCi0gICAgflVucHJvdGVjdEdpZ2FjYWdlQmFzZVB0cnNTY29w
ZSgpCisgICAgflVuZnJlZXplR2lnYWNhZ2VDb25maWdTY29wZSgpCiAgICAgewotICAgICAgICBw
cm90ZWN0R2lnYWNhZ2VCYXNlUHRycygpOworICAgICAgICBmcmVlemVHaWdhY2FnZUNvbmZpZygp
OwogICAgIH0KIH07CiAKQEAgLTEyOSw5ICsxNjYsMTYgQEAgdm9pZCBlbnN1cmVHaWdhY2FnZSgp
CiAgICAgc3RkOjpjYWxsX29uY2UoCiAgICAgICAgIG9uY2VGbGFnLAogICAgICAgICBbXSB7Cisg
ICAgICAgICAgICBSRUxFQVNFX0JBU1NFUlQoIWdfZ2lnYWNhZ2VDb25maWcuZW5zdXJlR2lnYWNh
Z2VIYXNCZWVuQ2FsbGVkKTsKKyAgICAgICAgICAgIGdfZ2lnYWNhZ2VDb25maWcuZW5zdXJlR2ln
YWNhZ2VIYXNCZWVuQ2FsbGVkID0gdHJ1ZTsKKwogICAgICAgICAgICAgaWYgKCFzaG91bGRCZUVu
YWJsZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKKyAgICAgICAg
ICAgIC8vIFdlIG1pZ2h0IG9ubHkgZ2V0IHBhZ2Ugc2l6ZSBhbGlnbm1lbnQsIGJ1dCB0aGF0J3Mg
YWxzbyB0aGUgbWluaW11bQorICAgICAgICAgICAgLy8gYWxpZ25tZW50IHdlIG5lZWQgZm9yIGZy
ZWV6aW5nIHRoZSBDb25maWcuCisgICAgICAgICAgICBSRUxFQVNFX0JBU1NFUlQoIShyZWludGVy
cHJldF9jYXN0PHNpemVfdD4oJmdfZ2lnYWNhZ2VDb25maWcpICYgKHZtUGFnZVNpemUoKSAtIDEp
KSk7CisKICAgICAgICAgICAgIEtpbmQgc2h1ZmZsZWRLaW5kc1tOdW1iZXJPZktpbmRzXTsKICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBOdW1iZXJPZktpbmRzOyArK2kpCiAg
ICAgICAgICAgICAgICAgc2h1ZmZsZWRLaW5kc1tpXSA9IHN0YXRpY19jYXN0PEtpbmQ+KGkpOwpA
QCAtMTkxLDEyICsyMzUsMTggQEAgdm9pZCBlbnN1cmVHaWdhY2FnZSgpCiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIHZtRGVhbGxvY2F0ZVBoeXNpY2FsUGFnZXMoYmFzZSwgdG90YWxTaXplKTsK
ICAgICAgICAgICAgIGdfZ2lnYWNhZ2VDb25maWcuaXNFbmFibGVkID0gdHJ1ZTsKLSAgICAgICAg
ICAgIHByb3RlY3RHaWdhY2FnZUJhc2VQdHJzKCk7CisgICAgICAgICAgICBmcmVlemVHaWdhY2Fn
ZUNvbmZpZygpOwogICAgICAgICB9KTsKIH0KIAogdm9pZCBkaXNhYmxlUHJpbWl0aXZlR2lnYWNh
Z2UoKQogeworICAgIGlmIChnX2dpZ2FjYWdlQ29uZmlnLmRpc2FibGluZ1ByaW1pdGl2ZUdpZ2Fj
YWdlSXNGb3JiaWRkZW4pCisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRkFUQUw6IERpc2FibGlu
ZyBQcmltaXRpdmUgZ2lnYWNhZ2UgaXMgZm9yYmlkZGVuLCBidXQgd2UgZG9uJ3Qgd2FudCB0aGF0
IGluIHRoaXMgcHJvY2Vzcy5cbiIpOworCisgICAgUkVMRUFTRV9CQVNTRVJUKCFnX2dpZ2FjYWdl
Q29uZmlnLmRpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSXNGb3JiaWRkZW4pOworICAgIFJFTEVB
U0VfQkFTU0VSVCghZ19naWdhY2FnZUNvbmZpZy5pc1Blcm1hbmVudGx5RnJvemVuKTsKKwogICAg
IGVuc3VyZUdpZ2FjYWdlKCk7CiAgICAgaWYgKCFnX2dpZ2FjYWdlQ29uZmlnLmJhc2VQdHJzW1By
aW1pdGl2ZV0pIHsKICAgICAgICAgLy8gSXQgd2FzIG5ldmVyIGVuYWJsZWQuIFRoYXQgbWVhbnMg
dGhhdCB3ZSBuZXZlciBldmVuIHNhdmVkIGFueSBjYWxsYmFja3MuIE9yLCB3ZSBoYWQgYWxyZWFk
eSBkaXNhYmxlZApAQCAtMjA5LDcgKzI1OSw3IEBAIHZvaWQgZGlzYWJsZVByaW1pdGl2ZUdpZ2Fj
YWdlKCkKICAgICBmb3IgKENhbGxiYWNrJiBjYWxsYmFjayA6IGNhbGxiYWNrcy5jYWxsYmFja3Mp
CiAgICAgICAgIGNhbGxiYWNrLmZ1bmN0aW9uKGNhbGxiYWNrLmFyZ3VtZW50KTsKICAgICBjYWxs
YmFja3MuY2FsbGJhY2tzLnNocmluaygwKTsKLSAgICBVbnByb3RlY3RHaWdhY2FnZUJhc2VQdHJz
U2NvcGUgdW5wcm90ZWN0U2NvcGU7CisgICAgVW5mcmVlemVHaWdhY2FnZUNvbmZpZ1Njb3BlIHVu
ZnJlZXplU2NvcGU7CiAgICAgZ19naWdhY2FnZUNvbmZpZy5iYXNlUHRyc1tQcmltaXRpdmVdID0g
bnVsbHB0cjsKIH0KIApAQCAtMjQxLDM3ICsyOTEsMzkgQEAgdm9pZCByZW1vdmVQcmltaXRpdmVE
aXNhYmxlQ2FsbGJhY2sodm9pZAogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgcHJpbWl0aXZlR2ln
YWNhZ2VEaXNhYmxlZCh2b2lkKikKK3N0YXRpYyBib29sIHZlcmlmeUdpZ2FjYWdlSXNFbmFibGVk
KCkKIHsKLSAgICBpZiAoR0lHQUNBR0VfQUxMT0NBVElPTl9DQU5fRkFJTCAmJiAhaXNFbmFibGVk
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHN0YXRpYyBib29sIHNfZmFsc2U7Ci0gICAgZnBy
aW50ZihzdGRlcnIsICJGQVRBTDogUHJpbWl0aXZlIGdpZ2FjYWdlIGRpc2FibGVkLCBidXQgd2Ug
ZG9uJ3Qgd2FudCB0aGF0IGluIHRoaXMgcHJvY2Vzcy5cbiIpOwotICAgIGlmICghc19mYWxzZSkK
LSAgICAgICAgQkNSQVNIKCk7CisgICAgYm9vbCBpc0VuYWJsZWQgPSBnX2dpZ2FjYWdlQ29uZmln
LmlzRW5hYmxlZDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IE51bWJlck9mS2luZHM7ICsr
aSkKKyAgICAgICAgaXNFbmFibGVkID0gaXNFbmFibGVkICYmIGdfZ2lnYWNhZ2VDb25maWcuYmFz
ZVB0cnNbaV07CisgICAgcmV0dXJuIGlzRW5hYmxlZDsKIH0KIAotdm9pZCBkaXNhYmxlRGlzYWJs
aW5nUHJpbWl0aXZlR2lnYWNhZ2VJZlNob3VsZEJlRW5hYmxlZCgpCit2b2lkIGZvcmJpZERpc2Fi
bGluZ1ByaW1pdGl2ZUdpZ2FjYWdlKCkKIHsKLSAgICBpZiAoc2hvdWxkQmVFbmFibGVkKCkpIHsK
LSAgICAgICAgYWRkUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrKHByaW1pdGl2ZUdpZ2FjYWdlRGlz
YWJsZWQsIG51bGxwdHIpOwotICAgICAgICBzX2lzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VE
aXNhYmxlZCA9IHRydWU7CisgICAgUkVMRUFTRV9CQVNTRVJUKEdJR0FDQUdFX0FMTE9DQVRJT05f
Q0FOX0ZBSUwgfHwgdmVyaWZ5R2lnYWNhZ2VJc0VuYWJsZWQoKSk7CisgICAgaWYgKCFnX2dpZ2Fj
YWdlQ29uZmlnLmRpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSXNGb3JiaWRkZW4pIHsKKyAgICAg
ICAgdW5mcmVlemVHaWdhY2FnZUNvbmZpZygpOworICAgICAgICBnX2dpZ2FjYWdlQ29uZmlnLmRp
c2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSXNGb3JiaWRkZW4gPSB0cnVlOwogICAgIH0KKyAgICBw
ZXJtYW5lbnRseUZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCk7CisgICAgUkVMRUFTRV9CQVNTRVJUKGlz
RGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VGb3JiaWRkZW4oKSk7CiB9CiAKLWJvb2wgaXNEaXNh
YmxpbmdQcmltaXRpdmVHaWdhY2FnZURpc2FibGVkKCkKK0JOT19JTkxJTkUgYm9vbCBpc0Rpc2Fi
bGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRm9yYmlkZGVuKCkKIHsKLSAgICByZXR1cm4gc19pc0Rpc2Fi
bGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQ7CisgICAgcmV0dXJuIGdfZ2lnYWNhZ2VDb25m
aWcuZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0ZvcmJpZGRlbjsKIH0KIAogYm9vbCBzaG91
bGRCZUVuYWJsZWQoKQogewotICAgIHN0YXRpYyBib29sIGNhY2hlZCA9IGZhbHNlOwogICAgIHN0
YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZSgKICAgICAg
ICAgb25jZUZsYWcsCiAgICAgICAgIFtdIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQkFTU0VSVCgh
Z19naWdhY2FnZUNvbmZpZy5zaG91bGRCZUVuYWJsZWRIYXNCZWVuQ2FsbGVkKTsKKyAgICAgICAg
ICAgIGdfZ2lnYWNhZ2VDb25maWcuc2hvdWxkQmVFbmFibGVkSGFzQmVlbkNhbGxlZCA9IHRydWU7
CisKICAgICAgICAgICAgIGJvb2wgZGVidWdIZWFwRW5hYmxlZCA9IEVudmlyb25tZW50OjpnZXQo
KS0+aXNEZWJ1Z0hlYXBFbmFibGVkKCk7CiAgICAgICAgICAgICBpZiAoZGVidWdIZWFwRW5hYmxl
ZCkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yODcsMTMgKzMzOSwxMSBAQCBib29sIHNo
b3VsZEJlRW5hYmxlZCgpCiAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiV2Fy
bmluZzogaW52YWxpZCBhcmd1bWVudCB0byBHSUdBQ0FHRV9FTkFCTEVEOiAlc1xuIiwgZ2lnYWNh
Z2VFbmFibGVkKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgY2Fj
aGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGdfZ2lnYWNhZ2VDb25maWcuc2hvdWxkQmVFbmFibGVk
ID0gdHJ1ZTsKICAgICAgICAgfSk7Ci0gICAgcmV0dXJuIGNhY2hlZDsKKyAgICByZXR1cm4gZ19n
aWdhY2FnZUNvbmZpZy5zaG91bGRCZUVuYWJsZWQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEdpZ2Fj
YWdlCiAKICNlbmRpZiAvLyBHSUdBQ0FHRV9FTkFCTEVECi0KLQpJbmRleDogU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9HaWdhY2FnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvR2lnYWNhZ2UuaAkocmV2aXNpb24gMjQ5NjAwKQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9HaWdhY2FnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDIxIEBAIHN0cnVjdCBD
b25maWcgewogCiAgICAgdW5pb24gewogICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgLy8g
QWxsIHRoZSBmaWVsZHMgaW4gdGhpcyBzdHJ1Y3Qgc2hvdWxkIGJlIGNob3NlbiBzdWNoIHRoYXQg
dGhlaXIKKyAgICAgICAgICAgIC8vIGluaXRpYWwgdmFsdWUgaXMgMCAvIG51bGwgLyBmYWxzeSBi
ZWNhdXNlIENvbmZpZyBpcyBpbnN0YW50aWF0ZWQKKyAgICAgICAgICAgIC8vIGFzIGEgZ2xvYmFs
IHNpbmdsZXRvbi4KKwogICAgICAgICAgICAgYm9vbCBpc0VuYWJsZWQ7CisgICAgICAgICAgICBi
b29sIGlzUGVybWFuZW50bHlGcm96ZW47CisgICAgICAgICAgICBib29sIGRpc2FibGluZ1ByaW1p
dGl2ZUdpZ2FjYWdlSXNGb3JiaWRkZW47CisgICAgICAgICAgICBib29sIHNob3VsZEJlRW5hYmxl
ZDsKKworICAgICAgICAgICAgLy8gV2Ugd291bGQgbGlrZSB0byBqdXN0IHB1dCB0aGUgc3RkOjpv
bmNlX2ZsYWcgZm9yIHRoZXNlIGZ1bmN0aW9ucworICAgICAgICAgICAgLy8gaGVyZSwgYnV0IHdl
IGNhbid0IGJlY2F1c2Ugc3RkOjpvbmNlX2ZsYWcgaGFzIGEgaW1wbGljaXRseS1kZWxldGVkCisg
ICAgICAgICAgICAvLyBkZWZhdWx0IGNvbnN0cnVjdG9yLiBTbywgd2UgdXNlIGEgYm9vbGVhbiBp
bnN0ZWFkLgorICAgICAgICAgICAgYm9vbCBzaG91bGRCZUVuYWJsZWRIYXNCZWVuQ2FsbGVkOwor
ICAgICAgICAgICAgYm9vbCBlbnN1cmVHaWdhY2FnZUhhc0JlZW5DYWxsZWQ7CisKICAgICAgICAg
ICAgIHZvaWQqIGJhc2VQdHJzW051bWJlck9mS2luZHNdOwogICAgICAgICB9OwogICAgICAgICBj
aGFyIGVuc3VyZVNpemVbY29uZmlnU2l6ZVRvUHJvdGVjdF07CkBAIC0xMzgsMTEgKzE1MiwxMSBA
QCBCRVhQT1JUIHZvaWQgZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKCk7CiBCRVhQT1JUIHZvaWQg
YWRkUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrKHZvaWQgKCopKHZvaWQqKSwgdm9pZCopOwogQkVY
UE9SVCB2b2lkIHJlbW92ZVByaW1pdGl2ZURpc2FibGVDYWxsYmFjayh2b2lkICgqKSh2b2lkKiks
IHZvaWQqKTsKIAotQkVYUE9SVCB2b2lkIGRpc2FibGVEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2Fn
ZUlmU2hvdWxkQmVFbmFibGVkKCk7CitCRVhQT1JUIHZvaWQgZm9yYmlkRGlzYWJsaW5nUHJpbWl0
aXZlR2lnYWNhZ2UoKTsKIAotQkVYUE9SVCBib29sIGlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNh
Z2VEaXNhYmxlZCgpOwotaW5saW5lIGJvb2wgaXNQcmltaXRpdmVHaWdhY2FnZVBlcm1hbmVudGx5
RW5hYmxlZCgpIHsgcmV0dXJuIGlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCgp
OyB9Ci1pbmxpbmUgYm9vbCBjYW5QcmltaXRpdmVHaWdhY2FnZUJlRGlzYWJsZWQoKSB7IHJldHVy
biAhaXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZURpc2FibGVkKCk7IH0KK0JFWFBPUlQgYm9v
bCBpc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRm9yYmlkZGVuKCk7CitpbmxpbmUgYm9vbCBp
c1ByaW1pdGl2ZUdpZ2FjYWdlUGVybWFuZW50bHlFbmFibGVkKCkgeyByZXR1cm4gaXNEaXNhYmxp
bmdQcmltaXRpdmVHaWdhY2FnZUZvcmJpZGRlbigpOyB9CitpbmxpbmUgYm9vbCBjYW5QcmltaXRp
dmVHaWdhY2FnZUJlRGlzYWJsZWQoKSB7IHJldHVybiAhaXNEaXNhYmxpbmdQcmltaXRpdmVHaWdh
Y2FnZUZvcmJpZGRlbigpOyB9CiAKIEJJTkxJTkUgdm9pZCogYmFzZVB0cihLaW5kIGtpbmQpCiB7
CkBAIC0yMzMsNyArMjQ3LDcgQEAgQklOTElORSBib29sIGlzQ2FnZWQoS2luZCwgY29uc3Qgdm9p
ZCopIAogQklOTElORSBib29sIGlzRW5hYmxlZChLaW5kKSB7IHJldHVybiBmYWxzZTsgfQogdGVt
cGxhdGU8dHlwZW5hbWUgVD4gQklOTElORSBUKiBjYWdlZChLaW5kLCBUKiBwdHIpIHsgcmV0dXJu
IHB0cjsgfQogdGVtcGxhdGU8dHlwZW5hbWUgVD4gQklOTElORSBUKiBjYWdlZE1heUJlTnVsbChL
aW5kLCBUKiBwdHIpIHsgcmV0dXJuIHB0cjsgfQotQklOTElORSB2b2lkIGRpc2FibGVEaXNhYmxp
bmdQcmltaXRpdmVHaWdhY2FnZUlmU2hvdWxkQmVFbmFibGVkKCkgeyB9CitCSU5MSU5FIHZvaWQg
Zm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UoKSB7IH0KIEJJTkxJTkUgYm9vbCBjYW5Q
cmltaXRpdmVHaWdhY2FnZUJlRGlzYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQogQklOTElORSB2
b2lkIGRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSgpIHsgfQogQklOTElORSB2b2lkIGFkZFByaW1p
dGl2ZURpc2FibGVDYWxsYmFjayh2b2lkICgqKSh2b2lkKiksIHZvaWQqKSB7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378276</attachid>
            <date>2019-09-06 21:04:17 -0700</date>
            <delta_ts>2019-09-06 21:04:17 -0700</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-201570.patch</filename>
            <type>text/plain</type>
            <size>19536</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ5NjAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE5LTA5LTA2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBI
YXJkZW4gcHJvdGVjdGlvbiBvZiB0aGUgR2lnYWNhZ2UgQ29uZmlnIHBhcmFtZXRlcnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE1NzAKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzU1MTM0MjI5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0g
QmFyYXRpLgorCisgICAgICAgIEp1c3QgcmVuYW1pbmcgc29tZSBmdW5jdGlvbiBuYW1lcyBoZXJl
LgorCisgICAgICAgICogYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6dGVz
dENhZ2VQcmVzZXJ2ZXNQQUNGYWlsdXJlQml0KToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxw
ZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Y2FnZUNvbmRpdGlvbmFsbHkp
OgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChqc2NtYWluKToKKwogMjAxOS0wOS0wNiAg
Um9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgTWF0aC5y
b3VuZCgpIHByb2R1Y2VzIHdyb25nIHJlc3VsdCBmb3IgdmFsdWUgcHJpb3IgdG8gMC41CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjQ5NjAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwODYsNyArMzA4Niw3IEBAIGludCBq
c2NtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAg
ICAgSlNDOjpXYXNtOjplbmFibGVGYXN0TWVtb3J5KCk7CiAjZW5kaWYKLSAgICBHaWdhY2FnZTo6
ZGlzYWJsZURpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSWZTaG91bGRCZUVuYWJsZWQoKTsKKyAg
ICBHaWdhY2FnZTo6Zm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UoKTsKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIGF1dG8mIG1lbW9yeVByZXNzdXJlSGFuZGxlciA9IE1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAkocmV2aXNpb24gMjQ5NjAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
MTAsNyArMTIxMCw3IEBAIHZvaWQgdGVzdE1vdmVEb3VibGVDb25kaXRpb25hbGx5NjQoKQogc3Rh
dGljIHZvaWQgdGVzdENhZ2VQcmVzZXJ2ZXNQQUNGYWlsdXJlQml0KCkKIHsKICNpZiBHSUdBQ0FH
RV9FTkFCTEVECi0gICAgQVNTRVJUKCFHaWdhY2FnZTo6aXNEaXNhYmxpbmdQcmltaXRpdmVHaWdh
Y2FnZURpc2FibGVkKCkpOworICAgIEFTU0VSVCghR2lnYWNhZ2U6OmlzRGlzYWJsaW5nUHJpbWl0
aXZlR2lnYWNhZ2VGb3JiaWRkZW4oKSk7CiAgICAgYXV0byBjYWdlID0gY29tcGlsZShbXSAoQ0Nh
bGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKICAg
ICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIEdQUkluZm86
OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5o
CShyZXZpc2lvbiAyNDk2MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTg4LDcgKzE1ODgsNyBAQCBwdWJsaWM6CiAg
ICAgewogI2lmIEdJR0FDQUdFX0VOQUJMRUQKICAgICAgICAgaWYgKEdpZ2FjYWdlOjppc0VuYWJs
ZWQoa2luZCkpIHsKLSAgICAgICAgICAgIGlmIChraW5kICE9IEdpZ2FjYWdlOjpQcmltaXRpdmUg
fHwgR2lnYWNhZ2U6OmlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCgpKQorICAg
ICAgICAgICAgaWYgKGtpbmQgIT0gR2lnYWNhZ2U6OlByaW1pdGl2ZSB8fCBHaWdhY2FnZTo6aXNE
aXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUZvcmJpZGRlbigpKQogICAgICAgICAgICAgICAgIGNh
Z2VXaXRob3V0VW50YWdnaW5nKGtpbmQsIHN0b3JhZ2UpOwogICAgICAgICAgICAgZWxzZSB7CiAj
aWYgQ1BVKEFSTTY0RSkKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDk2MDApCisrKyBTb3VyY2UvV1RGL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE5LTA5LTA2ICBNYXJr
IExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBIYXJkZW4gcHJvdGVjdGlvbiBv
ZiB0aGUgR2lnYWNhZ2UgQ29uZmlnIHBhcmFtZXRlcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE1NzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzU1MTM0MjI5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAg
IEp1c3QgcmVuYW1pbmcgc29tZSBmdW5jdGlvbiBuYW1lcyBoZXJlLgorCisgICAgICAgICogd3Rm
L0dpZ2FjYWdlLmg6CisgICAgICAgIChHaWdhY2FnZTo6Zm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZl
R2lnYWNhZ2UpOgorICAgICAgICAoR2lnYWNhZ2U6OmlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNh
Z2VGb3JiaWRkZW4pOgorICAgICAgICAoR2lnYWNhZ2U6OmRpc2FibGVEaXNhYmxpbmdQcmltaXRp
dmVHaWdhY2FnZUlmU2hvdWxkQmVFbmFibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKEdpZ2FjYWdl
Ojppc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQpOiBEZWxldGVkLgorCiAyMDE5
LTA5LTA1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3Rv
ciB0aGUgR2lnYWNhZ2UgY29kZSB0byByZXF1aXJlIGxlc3MgcG9pbnRlciBjYXN0aW5nLgpJbmRl
eDogU291cmNlL1dURi93dGYvR2lnYWNhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0
Zi9HaWdhY2FnZS5oCShyZXZpc2lvbiAyNDk2MDApCisrKyBTb3VyY2UvV1RGL3d0Zi9HaWdhY2Fn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw5ICs0OSw5IEBAIGlubGluZSBib29sIHNob3VsZEJl
RW5hYmxlZCgpIHsgcmV0dXJuIGYKIGlubGluZSB2b2lkIGFkZFByaW1pdGl2ZURpc2FibGVDYWxs
YmFjayh2b2lkICgqKSh2b2lkKiksIHZvaWQqKSB7IH0KIGlubGluZSB2b2lkIHJlbW92ZVByaW1p
dGl2ZURpc2FibGVDYWxsYmFjayh2b2lkICgqKSh2b2lkKiksIHZvaWQqKSB7IH0KIAotaW5saW5l
IHZvaWQgZGlzYWJsZURpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSWZTaG91bGRCZUVuYWJsZWQo
KSB7IH0KK2lubGluZSB2b2lkIGZvcmJpZERpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlKCkgeyB9
CiAKLWlubGluZSBib29sIGlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCgpIHsg
cmV0dXJuIGZhbHNlOyB9CitpbmxpbmUgYm9vbCBpc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdl
Rm9yYmlkZGVuKCkgeyByZXR1cm4gZmFsc2U7IH0KIGlubGluZSBib29sIGlzUHJpbWl0aXZlR2ln
YWNhZ2VQZXJtYW5lbnRseUVuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQogaW5saW5lIGJvb2wg
Y2FuUHJpbWl0aXZlR2lnYWNhZ2VCZURpc2FibGVkKCkgeyByZXR1cm4gdHJ1ZTsgfQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwkocmV2aXNpb24gMjQ5NjAwKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxOS0wOS0wNiAgTWFyayBMYW0gIDxtYXJr
LmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSGFyZGVuIHByb3RlY3Rpb24gb2YgdGhlIEdpZ2Fj
YWdlIENvbmZpZyBwYXJhbWV0ZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAxNTcwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTEzNDIyOT4K
KworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICBKdXN0IHJlbmFt
aW5nIGEgZnVuY3Rpb24gbmFtZSBoZXJlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcDoKKwogMjAxOS0wOS0wNiAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFtXZWJBdXRobl0gTWFrZSBXZWJBdXRobiBkZWZhdWx0IG9mZiBhbmQgbGV0
IGNsaWVudHMgdHVybiBpdCBvbiBhdCB3aWxsCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyNDk2MDApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOSw3ICsyMjksNyBAQCBX
ZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICAgICB9KTsKICNlbmRpZgogICAgIAotICAgIEdpZ2Fj
YWdlOjpkaXNhYmxlRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJZlNob3VsZEJlRW5hYmxlZCgp
OworICAgIEdpZ2FjYWdlOjpmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpOwogfQog
CiBXZWJQcm9jZXNzOjp+V2ViUHJvY2VzcygpCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDk2
MDApCisrKyBTb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSw3NyBAQAorMjAxOS0wOS0wNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAg
ICAgICAgSGFyZGVuIHByb3RlY3Rpb24gb2YgdGhlIEdpZ2FjYWdlIENvbmZpZyBwYXJhbWV0ZXJz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNTcw
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTEzNDIyOT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBTYWFtIEJhcmF0aS4KKworICAgICAgICAxLiBSZW5hbWUgcHJvdGVjdEdpZ2FjYWdlQmFzZVB0
cnMoKSBhbmQgdW5wcm90ZWN0R2lnYWNhZ2VCYXNlUHRycygpIHRvCisgICAgICAgICAgIGZyZWV6
ZUdpZ2FjYWdlQ29uZmlnKCkgYW5kIHVuZnJlZXplR2lnYWNhZ2VDb25maWcoKSByZXNwZWN0aXZl
bHkuCisKKyAgICAgICAgICAgQWxzbyBtb3ZlIHRoZSBhbGlnbm1lbnQgY2hlY2sgaW4gcHJvdGVj
dEdpZ2FjYWdlQmFzZVB0cnMoKSBpbnRvIGVuc3VyZUdpZ2FjYWdlKCkuCisgICAgICAgICAgIFRo
ZXJlJ3Mgbm8gbmVlZCB0byBjaGVjayBpdCBtb3JlIHRoYW4gb25jZS4KKworICAgICAgICAyLiBJ
bnRyb2R1Y2UgcGVybWFuZW50bHlGcmVlemVHaWdhY2FnZUNvbmZpZygpIHdoaWNoIHBlcm1hbmVu
dGx5IG1ha2VzIHRoZQorICAgICAgICAgICBDb25maWcgUmVhZE9ubHkuICBPbmNlIGludm9rZWQs
IHRoZSBDb25maWcgY2Fubm90IGJlIG1hZGUgd3JpdGFibGUgYWdhaW4uCisKKyAgICAgICAgICAg
VGhpcyBpcyBtYWRlIHBvc3NpYmxlIGJ5IHVzaW5nIHZtX3Byb3RlY3Qgd2l0aCBhIHRydWUgc2V0
X21heGltdW0gYXJndW1lbnQuCisgICAgICAgICAgIFdlIGFsc28gYWRkIGEgZ19naWdhY2FnZUNv
bmZpZy5pc1Blcm1hbmVudGx5RnJvemVuIGZsYWcgdGhhdCB3ZSBhc3NlcnQuCisgICAgICAgICAg
IE5vdGU6IHRoaXMgcGVybWFuZW5jZSBpcyBvbmx5IHRydWUgZm9yIE9TKERBUldJTikgc2luY2Ug
dm1fcHJvdGVjdCBpcyBNYWNoIEFQSS4KKworICAgICAgICAzLiBSZW5hbWUgZGlzYWJsZURpc2Fi
bGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSWZTaG91bGRCZUVuYWJsZWQoKSB0bworICAgICAgICAgICBm
b3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpIGJlY2F1c2UgImRpc2FibGluZ0Rpc2Fi
bGluZyIgaXMgYSB0b25ndWUKKyAgICAgICAgICAgdHdpc3Rlci4KKworICAgICAgICAgICBBbHNv
LCB3ZSBkb24ndCB3YW50IHRvIG1ha2UgaXQgY29uZGl0aW9uYWwgb24gIklmU2hvdWxkQmVFbmFi
bGVkIi4gIFdlIHdhbnQKKyAgICAgICAgICAgZm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNh
Z2UoKSB0byBiZSBpcnJldmVyc2libGUuICBJdCBpcyB1cCB0byB0aGUgY2xpZW50CisgICAgICAg
ICAgIHRvIGVuc3VyZSB0aGF0IHRoZSBHaWdhY2FnZSBpcyBhbHJlYWR5IGluaXRpYWxpemVkIChp
ZiBwb3NzaWJsZSkgYmVmb3JlCisgICAgICAgICAgIGludm9raW5nIGZvcmJpZERpc2FibGluZ1By
aW1pdGl2ZUdpZ2FjYWdlKCkuICBDb25jZXB0dWFsbHksIHRoZSBmb3JiaWRkaW5nCisgICAgICAg
ICAgIGlzbid0IGFib3V0IGd1YXJhbnRlZWluZyB0aGF0IHRoZSBHaWdhY2FnZSBpcyBlbmFibGVk
LiAgSXQgb25seSB0YWtlcyBhd2F5IHRoZQorICAgICAgICAgICBvcHRpb24gdG8gZGlzYWJsZSBp
dC4KKworICAgICAgICAgICBUaGF0IHNhaWQsIGZvcmJpZERpc2FibGluZ1ByaW1pdGl2ZUdpZ2Fj
YWdlKCkgaXMgb25seSBpbnZva2VkIGJ5IGNsaWVudHMgdGhhdAorICAgICAgICAgICBjYXJlIGFi
b3V0IGtlZXBpbmcgdGhlIEdpZ2FjYWdlIGVuYWJsZWQuICBTbywgaXQgZG9lcyBhIHNhbml0eSBj
aGVjayAod2l0aCBhbgorICAgICAgICAgICBhc3NlcnRpb24pIHRoYXQgaWYgIUdJR0FDQUdFX0FM
TE9DQVRJT05fQ0FOX0ZBSUwsIHRoZW4gdGhlIEdpZ2FjYWdlIHNob3VsZCBiZQorICAgICAgICAg
ICBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgYW5kIGVuYWJsZWQgYmVmb3JlIGludm9raW5nIGl0Lgor
CisgICAgICAgICAgIFdlIGFsc28gbWFrZSBzdXJlIHRoYXQgZm9yYmlkRGlzYWJsaW5nUHJpbWl0
aXZlR2lnYWNhZ2UoKSBjYWxscworICAgICAgICAgICBwZXJtYW5lbnRseUZyZWV6ZUdpZ2FjYWdl
Q29uZmlnKCkgdW5jb25kaXRpb25hbGx5LiAgSXQgaXMgc2FmZSB0byBjYWxsIGl0IG1vcmUKKyAg
ICAgICAgICAgdGhhbiBvbmNlLiAgVGhpcyBndWFyYW50ZWVzIHRoYXQgdGhlIENvbmZpZyBpcyBw
ZXJtYW5lbnRseSBmcm96ZW4gYWZ0ZXIgdGhpcywKKyAgICAgICAgICAgZXZlbiBpZiBhIGJ1ZyBz
aG91bGQgaW5hZHZlcnRhbnRseSBzZXQgdGhlCisgICAgICAgICAgIGdfZ2lnYWNhZ2VDb25maWcu
ZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0ZvcmJpZGRlbiBmbGFnIGJlZm9yZQorICAgICAg
ICAgICBmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpIGlzIGludm9rZWQuCisKKyAg
ICAgICAgNC4gQXNzZXJ0IHRoYXQgZW5zdXJlR2lnYWNhZ2UoKSBpcyBvbmx5IGNhbGxlZCBvbmNl
LgorCisgICAgICAgIDUuIEFzc2VydCB0aGF0IHNob3VsZEJlRW5hYmxlZCgpIGlzIG9ubHkgY2Fs
bGVkIG9uY2UuCisgICAgICAgICAgIEFsc28gbW92ZWQgaXRzIGNhY2hlZCByZXN1bHQgaW50byB0
aGUgQ29uZmlnIHNvIHRoYXQgaXQgY2FuIGJlIGZyb3plbi4KKworICAgICAgICAqIGJtYWxsb2Mv
R2lnYWNhZ2UuY3BwOgorICAgICAgICAoR2lnYWNhZ2U6OmJtYWxsb2M6OmZyZWV6ZUdpZ2FjYWdl
Q29uZmlnKToKKyAgICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjp1bmZyZWV6ZUdpZ2FjYWdlQ29u
ZmlnKToKKyAgICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjpwZXJtYW5lbnRseUZyZWV6ZUdpZ2Fj
YWdlQ29uZmlnKToKKyAgICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjpVbmZyZWV6ZUdpZ2FjYWdl
Q29uZmlnU2NvcGU6OlVuZnJlZXplR2lnYWNhZ2VDb25maWdTY29wZSk6CisgICAgICAgIChHaWdh
Y2FnZTo6Ym1hbGxvYzo6VW5mcmVlemVHaWdhY2FnZUNvbmZpZ1Njb3BlOjp+VW5mcmVlemVHaWdh
Y2FnZUNvbmZpZ1Njb3BlKToKKyAgICAgICAgKEdpZ2FjYWdlOjplbnN1cmVHaWdhY2FnZSk6Cisg
ICAgICAgIChHaWdhY2FnZTo6ZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKToKKyAgICAgICAgKEdp
Z2FjYWdlOjp2ZXJpZnlHaWdhY2FnZUlzRW5hYmxlZCk6CisgICAgICAgIChHaWdhY2FnZTo6Zm9y
YmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UpOgorICAgICAgICAoR2lnYWNhZ2U6OmlzRGlz
YWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VGb3JiaWRkZW4pOgorICAgICAgICAoR2lnYWNhZ2U6OnNo
b3VsZEJlRW5hYmxlZCk6CisgICAgICAgIChHaWdhY2FnZTo6Ym1hbGxvYzo6cHJvdGVjdEdpZ2Fj
YWdlQmFzZVB0cnMpOiBEZWxldGVkLgorICAgICAgICAoR2lnYWNhZ2U6OmJtYWxsb2M6OnVucHJv
dGVjdEdpZ2FjYWdlQmFzZVB0cnMpOiBEZWxldGVkLgorICAgICAgICAoR2lnYWNhZ2U6OmJtYWxs
b2M6OlVucHJvdGVjdEdpZ2FjYWdlQmFzZVB0cnNTY29wZTo6VW5wcm90ZWN0R2lnYWNhZ2VCYXNl
UHRyc1Njb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjpVbnByb3Rl
Y3RHaWdhY2FnZUJhc2VQdHJzU2NvcGU6On5VbnByb3RlY3RHaWdhY2FnZUJhc2VQdHJzU2NvcGUp
OiBEZWxldGVkLgorICAgICAgICAoR2lnYWNhZ2U6OnByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQp
OiBEZWxldGVkLgorICAgICAgICAoR2lnYWNhZ2U6OmRpc2FibGVEaXNhYmxpbmdQcmltaXRpdmVH
aWdhY2FnZUlmU2hvdWxkQmVFbmFibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKEdpZ2FjYWdlOjpp
c0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAq
IGJtYWxsb2MvR2lnYWNhZ2UuaDoKKyAgICAgICAgKEdpZ2FjYWdlOjppc1ByaW1pdGl2ZUdpZ2Fj
YWdlUGVybWFuZW50bHlFbmFibGVkKToKKyAgICAgICAgKEdpZ2FjYWdlOjpjYW5QcmltaXRpdmVH
aWdhY2FnZUJlRGlzYWJsZWQpOgorICAgICAgICAoR2lnYWNhZ2U6OmZvcmJpZERpc2FibGluZ1By
aW1pdGl2ZUdpZ2FjYWdlKToKKyAgICAgICAgKEdpZ2FjYWdlOjpkaXNhYmxlRGlzYWJsaW5nUHJp
bWl0aXZlR2lnYWNhZ2VJZlNob3VsZEJlRW5hYmxlZCk6IERlbGV0ZWQuCisKIDIwMTktMDktMDYg
IE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBGYWlsdXJlQWN0
aW9uIGV2ZXJ5d2hlcmUgaW4gYm1hbGxvYyBpbnN0ZWFkIG9mIGEgY3Jhc2hPbkZhaWx1cmUgYm9v
bGVhbi4KSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuY3BwCShyZXZpc2lvbiAyNDk2
MDApCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNiArMzUsMTAgQEAKICNpbmNsdWRlIDxjc3RkaW8+CiAjaW5jbHVkZSA8bXV0ZXg+
CiAKKyNpZiBCT1MoREFSV0lOKQorI2luY2x1ZGUgPG1hY2gvbWFjaC5oPgorI2VuZGlmCisKICNp
ZiBHSUdBQ0FHRV9FTkFCTEVECiAKIG5hbWVzcGFjZSBHaWdhY2FnZSB7CkBAIC04MSwzMCArODUs
NjMgQEAgdXNpbmcgbmFtZXNwYWNlIGJtYWxsb2M7CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgc19p
c0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQ7CisjaWYgQk9TKERBUldJTikKK2Vu
dW0geworICAgIEFsbG93UGVybWlzc2lvbkNoYW5nZXNBZnRlclRoaXMgPSBmYWxzZSwKKyAgICBE
aXNhbGxvd1Blcm1pc3Npb25DaGFuZ2VzQWZ0ZXJUaGlzID0gdHJ1ZQorfTsKKyNlbmRpZgorCitz
dGF0aWMgdm9pZCBmcmVlemVHaWdhY2FnZUNvbmZpZygpCit7CisgICAgaW50IHJlc3VsdDsKKyNp
ZiBCT1MoREFSV0lOKQorICAgIHJlc3VsdCA9IHZtX3Byb3RlY3QobWFjaF90YXNrX3NlbGYoKSwg
cmVpbnRlcnByZXRfY2FzdDx2bV9hZGRyZXNzX3Q+KCZnX2dpZ2FjYWdlQ29uZmlnKSwgY29uZmln
U2l6ZVRvUHJvdGVjdCwgQWxsb3dQZXJtaXNzaW9uQ2hhbmdlc0FmdGVyVGhpcywgVk1fUFJPVF9S
RUFEKTsKKyNlbHNlCisgICAgcmVzdWx0ID0gbXByb3RlY3QoJmdfZ2lnYWNhZ2VDb25maWcsIGNv
bmZpZ1NpemVUb1Byb3RlY3QsIFBST1RfUkVBRCk7CisjZW5kaWYKKyAgICBSRUxFQVNFX0JBU1NF
UlQoIXJlc3VsdCk7Cit9CiAKLXZvaWQgcHJvdGVjdEdpZ2FjYWdlQmFzZVB0cnMoKQorc3RhdGlj
IHZvaWQgdW5mcmVlemVHaWdhY2FnZUNvbmZpZygpCiB7Ci0gICAgLy8gV2UgbWlnaHQgb25seSBn
ZXQgcGFnZSBzaXplIGFsaWdubWVudCwgYnV0IHRoYXQncyBhbHNvIHRoZSBtaW5pbXVtIHdlIG5l
ZWQuCi0gICAgUkVMRUFTRV9CQVNTRVJUKCEocmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KCZnX2dp
Z2FjYWdlQ29uZmlnKSAmICh2bVBhZ2VTaXplKCkgLSAxKSkpOwotICAgIG1wcm90ZWN0KCZnX2dp
Z2FjYWdlQ29uZmlnLCBjb25maWdTaXplVG9Qcm90ZWN0LCBQUk9UX1JFQUQpOworICAgIFJFTEVB
U0VfQkFTU0VSVCghZ19naWdhY2FnZUNvbmZpZy5pc1Blcm1hbmVudGx5RnJvemVuKTsKKyAgICBp
bnQgcmVzdWx0OworI2lmIEJPUyhEQVJXSU4pCisgICAgcmVzdWx0ID0gdm1fcHJvdGVjdChtYWNo
X3Rhc2tfc2VsZigpLCByZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4oJmdfZ2lnYWNhZ2VD
b25maWcpLCBjb25maWdTaXplVG9Qcm90ZWN0LCBBbGxvd1Blcm1pc3Npb25DaGFuZ2VzQWZ0ZXJU
aGlzLCBWTV9QUk9UX1JFQUQgfCBWTV9QUk9UX1dSSVRFKTsKKyNlbHNlCisgICAgcmVzdWx0ID0g
bXByb3RlY3QoJmdfZ2lnYWNhZ2VDb25maWcsIGNvbmZpZ1NpemVUb1Byb3RlY3QsIFBST1RfUkVB
RCB8IFBST1RfV1JJVEUpOworI2VuZGlmCisgICAgUkVMRUFTRV9CQVNTRVJUKCFyZXN1bHQpOwog
fQogCi12b2lkIHVucHJvdGVjdEdpZ2FjYWdlQmFzZVB0cnMoKQorc3RhdGljIHZvaWQgcGVybWFu
ZW50bHlGcmVlemVHaWdhY2FnZUNvbmZpZygpCiB7Ci0gICAgbXByb3RlY3QoJmdfZ2lnYWNhZ2VD
b25maWcsIGNvbmZpZ1NpemVUb1Byb3RlY3QsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpOworICAg
IGlmICghZ19naWdhY2FnZUNvbmZpZy5pc1Blcm1hbmVudGx5RnJvemVuKSB7CisgICAgICAgIHVu
ZnJlZXplR2lnYWNhZ2VDb25maWcoKTsKKyAgICAgICAgZ19naWdhY2FnZUNvbmZpZy5pc1Blcm1h
bmVudGx5RnJvemVuID0gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBUaGVyZSdzIG5vIGdvaW5nIGJh
Y2sgbm93IQorICAgIGludCByZXN1bHQ7CisjaWYgQk9TKERBUldJTikKKyAgICByZXN1bHQgPSB2
bV9wcm90ZWN0KG1hY2hfdGFza19zZWxmKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm1fYWRkcmVzc190
PigmZ19naWdhY2FnZUNvbmZpZyksIGNvbmZpZ1NpemVUb1Byb3RlY3QsIERpc2FsbG93UGVybWlz
c2lvbkNoYW5nZXNBZnRlclRoaXMsIFZNX1BST1RfUkVBRCk7CisjZWxzZQorICAgIHJlc3VsdCA9
IG1wcm90ZWN0KCZnX2dpZ2FjYWdlQ29uZmlnLCBjb25maWdTaXplVG9Qcm90ZWN0LCBQUk9UX1JF
QUQpOworI2VuZGlmCisgICAgUkVMRUFTRV9CQVNTRVJUKCFyZXN1bHQpOwogfQogCi1jbGFzcyBV
bnByb3RlY3RHaWdhY2FnZUJhc2VQdHJzU2NvcGUgeworY2xhc3MgVW5mcmVlemVHaWdhY2FnZUNv
bmZpZ1Njb3BlIHsKIHB1YmxpYzoKLSAgICBVbnByb3RlY3RHaWdhY2FnZUJhc2VQdHJzU2NvcGUo
KQorICAgIFVuZnJlZXplR2lnYWNhZ2VDb25maWdTY29wZSgpCiAgICAgewotICAgICAgICB1bnBy
b3RlY3RHaWdhY2FnZUJhc2VQdHJzKCk7CisgICAgICAgIHVuZnJlZXplR2lnYWNhZ2VDb25maWco
KTsKICAgICB9CiAgICAgCi0gICAgflVucHJvdGVjdEdpZ2FjYWdlQmFzZVB0cnNTY29wZSgpCisg
ICAgflVuZnJlZXplR2lnYWNhZ2VDb25maWdTY29wZSgpCiAgICAgewotICAgICAgICBwcm90ZWN0
R2lnYWNhZ2VCYXNlUHRycygpOworICAgICAgICBmcmVlemVHaWdhY2FnZUNvbmZpZygpOwogICAg
IH0KIH07CiAKQEAgLTEyOSw5ICsxNjYsMTYgQEAgdm9pZCBlbnN1cmVHaWdhY2FnZSgpCiAgICAg
c3RkOjpjYWxsX29uY2UoCiAgICAgICAgIG9uY2VGbGFnLAogICAgICAgICBbXSB7CisgICAgICAg
ICAgICBSRUxFQVNFX0JBU1NFUlQoIWdfZ2lnYWNhZ2VDb25maWcuZW5zdXJlR2lnYWNhZ2VIYXNC
ZWVuQ2FsbGVkKTsKKyAgICAgICAgICAgIGdfZ2lnYWNhZ2VDb25maWcuZW5zdXJlR2lnYWNhZ2VI
YXNCZWVuQ2FsbGVkID0gdHJ1ZTsKKwogICAgICAgICAgICAgaWYgKCFzaG91bGRCZUVuYWJsZWQo
KSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIC8v
IFdlIG1pZ2h0IG9ubHkgZ2V0IHBhZ2Ugc2l6ZSBhbGlnbm1lbnQsIGJ1dCB0aGF0J3MgYWxzbyB0
aGUgbWluaW11bQorICAgICAgICAgICAgLy8gYWxpZ25tZW50IHdlIG5lZWQgZm9yIGZyZWV6aW5n
IHRoZSBDb25maWcuCisgICAgICAgICAgICBSRUxFQVNFX0JBU1NFUlQoIShyZWludGVycHJldF9j
YXN0PHNpemVfdD4oJmdfZ2lnYWNhZ2VDb25maWcpICYgKHZtUGFnZVNpemUoKSAtIDEpKSk7CisK
ICAgICAgICAgICAgIEtpbmQgc2h1ZmZsZWRLaW5kc1tOdW1iZXJPZktpbmRzXTsKICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBOdW1iZXJPZktpbmRzOyArK2kpCiAgICAgICAg
ICAgICAgICAgc2h1ZmZsZWRLaW5kc1tpXSA9IHN0YXRpY19jYXN0PEtpbmQ+KGkpOwpAQCAtMTkx
LDEyICsyMzUsMTggQEAgdm9pZCBlbnN1cmVHaWdhY2FnZSgpCiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIHZtRGVhbGxvY2F0ZVBoeXNpY2FsUGFnZXMoYmFzZSwgdG90YWxTaXplKTsKICAgICAg
ICAgICAgIGdfZ2lnYWNhZ2VDb25maWcuaXNFbmFibGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIHBy
b3RlY3RHaWdhY2FnZUJhc2VQdHJzKCk7CisgICAgICAgICAgICBmcmVlemVHaWdhY2FnZUNvbmZp
ZygpOwogICAgICAgICB9KTsKIH0KIAogdm9pZCBkaXNhYmxlUHJpbWl0aXZlR2lnYWNhZ2UoKQog
eworICAgIGlmIChnX2dpZ2FjYWdlQ29uZmlnLmRpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSXNG
b3JiaWRkZW4pCisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRkFUQUw6IERpc2FibGluZyBQcmlt
aXRpdmUgZ2lnYWNhZ2UgaXMgZm9yYmlkZGVuLCBidXQgd2UgZG9uJ3Qgd2FudCB0aGF0IGluIHRo
aXMgcHJvY2Vzcy5cbiIpOworCisgICAgUkVMRUFTRV9CQVNTRVJUKCFnX2dpZ2FjYWdlQ29uZmln
LmRpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSXNGb3JiaWRkZW4pOworICAgIFJFTEVBU0VfQkFT
U0VSVCghZ19naWdhY2FnZUNvbmZpZy5pc1Blcm1hbmVudGx5RnJvemVuKTsKKwogICAgIGVuc3Vy
ZUdpZ2FjYWdlKCk7CiAgICAgaWYgKCFnX2dpZ2FjYWdlQ29uZmlnLmJhc2VQdHJzW1ByaW1pdGl2
ZV0pIHsKICAgICAgICAgLy8gSXQgd2FzIG5ldmVyIGVuYWJsZWQuIFRoYXQgbWVhbnMgdGhhdCB3
ZSBuZXZlciBldmVuIHNhdmVkIGFueSBjYWxsYmFja3MuIE9yLCB3ZSBoYWQgYWxyZWFkeSBkaXNh
YmxlZApAQCAtMjA5LDcgKzI1OSw3IEBAIHZvaWQgZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKCkK
ICAgICBmb3IgKENhbGxiYWNrJiBjYWxsYmFjayA6IGNhbGxiYWNrcy5jYWxsYmFja3MpCiAgICAg
ICAgIGNhbGxiYWNrLmZ1bmN0aW9uKGNhbGxiYWNrLmFyZ3VtZW50KTsKICAgICBjYWxsYmFja3Mu
Y2FsbGJhY2tzLnNocmluaygwKTsKLSAgICBVbnByb3RlY3RHaWdhY2FnZUJhc2VQdHJzU2NvcGUg
dW5wcm90ZWN0U2NvcGU7CisgICAgVW5mcmVlemVHaWdhY2FnZUNvbmZpZ1Njb3BlIHVuZnJlZXpl
U2NvcGU7CiAgICAgZ19naWdhY2FnZUNvbmZpZy5iYXNlUHRyc1tQcmltaXRpdmVdID0gbnVsbHB0
cjsKIH0KIApAQCAtMjQxLDM3ICsyOTEsMzkgQEAgdm9pZCByZW1vdmVQcmltaXRpdmVEaXNhYmxl
Q2FsbGJhY2sodm9pZAogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgcHJpbWl0aXZlR2lnYWNhZ2VE
aXNhYmxlZCh2b2lkKikKK3N0YXRpYyBib29sIHZlcmlmeUdpZ2FjYWdlSXNFbmFibGVkKCkKIHsK
LSAgICBpZiAoR0lHQUNBR0VfQUxMT0NBVElPTl9DQU5fRkFJTCAmJiAhaXNFbmFibGVkKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIHN0YXRpYyBib29sIHNfZmFsc2U7Ci0gICAgZnByaW50Zihz
dGRlcnIsICJGQVRBTDogUHJpbWl0aXZlIGdpZ2FjYWdlIGRpc2FibGVkLCBidXQgd2UgZG9uJ3Qg
d2FudCB0aGF0IGluIHRoaXMgcHJvY2Vzcy5cbiIpOwotICAgIGlmICghc19mYWxzZSkKLSAgICAg
ICAgQkNSQVNIKCk7CisgICAgYm9vbCBpc0VuYWJsZWQgPSBnX2dpZ2FjYWdlQ29uZmlnLmlzRW5h
YmxlZDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IE51bWJlck9mS2luZHM7ICsraSkKKyAg
ICAgICAgaXNFbmFibGVkID0gaXNFbmFibGVkICYmIGdfZ2lnYWNhZ2VDb25maWcuYmFzZVB0cnNb
aV07CisgICAgcmV0dXJuIGlzRW5hYmxlZDsKIH0KIAotdm9pZCBkaXNhYmxlRGlzYWJsaW5nUHJp
bWl0aXZlR2lnYWNhZ2VJZlNob3VsZEJlRW5hYmxlZCgpCit2b2lkIGZvcmJpZERpc2FibGluZ1By
aW1pdGl2ZUdpZ2FjYWdlKCkKIHsKLSAgICBpZiAoc2hvdWxkQmVFbmFibGVkKCkpIHsKLSAgICAg
ICAgYWRkUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrKHByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQs
IG51bGxwdHIpOwotICAgICAgICBzX2lzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxl
ZCA9IHRydWU7CisgICAgUkVMRUFTRV9CQVNTRVJUKEdJR0FDQUdFX0FMTE9DQVRJT05fQ0FOX0ZB
SUwgfHwgdmVyaWZ5R2lnYWNhZ2VJc0VuYWJsZWQoKSk7CisgICAgaWYgKCFnX2dpZ2FjYWdlQ29u
ZmlnLmRpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSXNGb3JiaWRkZW4pIHsKKyAgICAgICAgdW5m
cmVlemVHaWdhY2FnZUNvbmZpZygpOworICAgICAgICBnX2dpZ2FjYWdlQ29uZmlnLmRpc2FibGlu
Z1ByaW1pdGl2ZUdpZ2FjYWdlSXNGb3JiaWRkZW4gPSB0cnVlOwogICAgIH0KKyAgICBwZXJtYW5l
bnRseUZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCk7CisgICAgUkVMRUFTRV9CQVNTRVJUKGlzRGlzYWJs
aW5nUHJpbWl0aXZlR2lnYWNhZ2VGb3JiaWRkZW4oKSk7CiB9CiAKLWJvb2wgaXNEaXNhYmxpbmdQ
cmltaXRpdmVHaWdhY2FnZURpc2FibGVkKCkKK0JOT19JTkxJTkUgYm9vbCBpc0Rpc2FibGluZ1By
aW1pdGl2ZUdpZ2FjYWdlRm9yYmlkZGVuKCkKIHsKLSAgICByZXR1cm4gc19pc0Rpc2FibGluZ1By
aW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQ7CisgICAgcmV0dXJuIGdfZ2lnYWNhZ2VDb25maWcuZGlz
YWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0ZvcmJpZGRlbjsKIH0KIAogYm9vbCBzaG91bGRCZUVu
YWJsZWQoKQogewotICAgIHN0YXRpYyBib29sIGNhY2hlZCA9IGZhbHNlOwogICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZSgKICAgICAgICAgb25j
ZUZsYWcsCiAgICAgICAgIFtdIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQkFTU0VSVCghZ19naWdh
Y2FnZUNvbmZpZy5zaG91bGRCZUVuYWJsZWRIYXNCZWVuQ2FsbGVkKTsKKyAgICAgICAgICAgIGdf
Z2lnYWNhZ2VDb25maWcuc2hvdWxkQmVFbmFibGVkSGFzQmVlbkNhbGxlZCA9IHRydWU7CisKICAg
ICAgICAgICAgIGJvb2wgZGVidWdIZWFwRW5hYmxlZCA9IEVudmlyb25tZW50OjpnZXQoKS0+aXNE
ZWJ1Z0hlYXBFbmFibGVkKCk7CiAgICAgICAgICAgICBpZiAoZGVidWdIZWFwRW5hYmxlZCkKICAg
ICAgICAgICAgICAgICByZXR1cm47CkBAIC0yODcsMTMgKzMzOSwxMSBAQCBib29sIHNob3VsZEJl
RW5hYmxlZCgpCiAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiV2FybmluZzog
aW52YWxpZCBhcmd1bWVudCB0byBHSUdBQ0FHRV9FTkFCTEVEOiAlc1xuIiwgZ2lnYWNhZ2VFbmFi
bGVkKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkID0g
dHJ1ZTsKKyAgICAgICAgICAgIGdfZ2lnYWNhZ2VDb25maWcuc2hvdWxkQmVFbmFibGVkID0gdHJ1
ZTsKICAgICAgICAgfSk7Ci0gICAgcmV0dXJuIGNhY2hlZDsKKyAgICByZXR1cm4gZ19naWdhY2Fn
ZUNvbmZpZy5zaG91bGRCZUVuYWJsZWQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEdpZ2FjYWdlCiAK
ICNlbmRpZiAvLyBHSUdBQ0FHRV9FTkFCTEVECi0KLQpJbmRleDogU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9HaWdhY2FnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2ln
YWNhZ2UuaAkocmV2aXNpb24gMjQ5NjAwKQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdh
Y2FnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDIxIEBAIHN0cnVjdCBDb25maWcg
ewogCiAgICAgdW5pb24gewogICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgLy8gQWxsIHRo
ZSBmaWVsZHMgaW4gdGhpcyBzdHJ1Y3Qgc2hvdWxkIGJlIGNob3NlbiBzdWNoIHRoYXQgdGhlaXIK
KyAgICAgICAgICAgIC8vIGluaXRpYWwgdmFsdWUgaXMgMCAvIG51bGwgLyBmYWxzeSBiZWNhdXNl
IENvbmZpZyBpcyBpbnN0YW50aWF0ZWQKKyAgICAgICAgICAgIC8vIGFzIGEgZ2xvYmFsIHNpbmds
ZXRvbi4KKwogICAgICAgICAgICAgYm9vbCBpc0VuYWJsZWQ7CisgICAgICAgICAgICBib29sIGlz
UGVybWFuZW50bHlGcm96ZW47CisgICAgICAgICAgICBib29sIGRpc2FibGluZ1ByaW1pdGl2ZUdp
Z2FjYWdlSXNGb3JiaWRkZW47CisgICAgICAgICAgICBib29sIHNob3VsZEJlRW5hYmxlZDsKKwor
ICAgICAgICAgICAgLy8gV2Ugd291bGQgbGlrZSB0byBqdXN0IHB1dCB0aGUgc3RkOjpvbmNlX2Zs
YWcgZm9yIHRoZXNlIGZ1bmN0aW9ucworICAgICAgICAgICAgLy8gaGVyZSwgYnV0IHdlIGNhbid0
IGJlY2F1c2Ugc3RkOjpvbmNlX2ZsYWcgaGFzIGEgaW1wbGljaXRseS1kZWxldGVkCisgICAgICAg
ICAgICAvLyBkZWZhdWx0IGNvbnN0cnVjdG9yLiBTbywgd2UgdXNlIGEgYm9vbGVhbiBpbnN0ZWFk
LgorICAgICAgICAgICAgYm9vbCBzaG91bGRCZUVuYWJsZWRIYXNCZWVuQ2FsbGVkOworICAgICAg
ICAgICAgYm9vbCBlbnN1cmVHaWdhY2FnZUhhc0JlZW5DYWxsZWQ7CisKICAgICAgICAgICAgIHZv
aWQqIGJhc2VQdHJzW051bWJlck9mS2luZHNdOwogICAgICAgICB9OwogICAgICAgICBjaGFyIGVu
c3VyZVNpemVbY29uZmlnU2l6ZVRvUHJvdGVjdF07CkBAIC0xMzgsMTEgKzE1MiwxMSBAQCBCRVhQ
T1JUIHZvaWQgZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKCk7CiBCRVhQT1JUIHZvaWQgYWRkUHJp
bWl0aXZlRGlzYWJsZUNhbGxiYWNrKHZvaWQgKCopKHZvaWQqKSwgdm9pZCopOwogQkVYUE9SVCB2
b2lkIHJlbW92ZVByaW1pdGl2ZURpc2FibGVDYWxsYmFjayh2b2lkICgqKSh2b2lkKiksIHZvaWQq
KTsKIAotQkVYUE9SVCB2b2lkIGRpc2FibGVEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUlmU2hv
dWxkQmVFbmFibGVkKCk7CitCRVhQT1JUIHZvaWQgZm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2ln
YWNhZ2UoKTsKIAotQkVYUE9SVCBib29sIGlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNh
YmxlZCgpOwotaW5saW5lIGJvb2wgaXNQcmltaXRpdmVHaWdhY2FnZVBlcm1hbmVudGx5RW5hYmxl
ZCgpIHsgcmV0dXJuIGlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCgpOyB9Ci1p
bmxpbmUgYm9vbCBjYW5QcmltaXRpdmVHaWdhY2FnZUJlRGlzYWJsZWQoKSB7IHJldHVybiAhaXNE
aXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZURpc2FibGVkKCk7IH0KK0JFWFBPUlQgYm9vbCBpc0Rp
c2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRm9yYmlkZGVuKCk7CitpbmxpbmUgYm9vbCBpc1ByaW1p
dGl2ZUdpZ2FjYWdlUGVybWFuZW50bHlFbmFibGVkKCkgeyByZXR1cm4gaXNEaXNhYmxpbmdQcmlt
aXRpdmVHaWdhY2FnZUZvcmJpZGRlbigpOyB9CitpbmxpbmUgYm9vbCBjYW5QcmltaXRpdmVHaWdh
Y2FnZUJlRGlzYWJsZWQoKSB7IHJldHVybiAhaXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUZv
cmJpZGRlbigpOyB9CiAKIEJJTkxJTkUgdm9pZCogYmFzZVB0cihLaW5kIGtpbmQpCiB7CkBAIC0y
MzMsNyArMjQ3LDcgQEAgQklOTElORSBib29sIGlzQ2FnZWQoS2luZCwgY29uc3Qgdm9pZCopIAog
QklOTElORSBib29sIGlzRW5hYmxlZChLaW5kKSB7IHJldHVybiBmYWxzZTsgfQogdGVtcGxhdGU8
dHlwZW5hbWUgVD4gQklOTElORSBUKiBjYWdlZChLaW5kLCBUKiBwdHIpIHsgcmV0dXJuIHB0cjsg
fQogdGVtcGxhdGU8dHlwZW5hbWUgVD4gQklOTElORSBUKiBjYWdlZE1heUJlTnVsbChLaW5kLCBU
KiBwdHIpIHsgcmV0dXJuIHB0cjsgfQotQklOTElORSB2b2lkIGRpc2FibGVEaXNhYmxpbmdQcmlt
aXRpdmVHaWdhY2FnZUlmU2hvdWxkQmVFbmFibGVkKCkgeyB9CitCSU5MSU5FIHZvaWQgZm9yYmlk
RGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UoKSB7IH0KIEJJTkxJTkUgYm9vbCBjYW5QcmltaXRp
dmVHaWdhY2FnZUJlRGlzYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQogQklOTElORSB2b2lkIGRp
c2FibGVQcmltaXRpdmVHaWdhY2FnZSgpIHsgfQogQklOTElORSB2b2lkIGFkZFByaW1pdGl2ZURp
c2FibGVDYWxsYmFjayh2b2lkICgqKSh2b2lkKiksIHZvaWQqKSB7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378306</attachid>
            <date>2019-09-07 17:17:25 -0700</date>
            <delta_ts>2019-09-07 18:13:12 -0700</delta_ts>
            <desc>follow up fix patch.</desc>
            <filename>bug-201570b.patch</filename>
            <type>text/plain</type>
            <size>1984</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0OTYyMCkKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA5LTA3ICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbRm9sbG93IHVwIGZpeF0gSGFyZGVu
IHByb3RlY3Rpb24gb2YgdGhlIEdpZ2FjYWdlIENvbmZpZyBwYXJhbWV0ZXJzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNTcwCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS81NTEzNDIyOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGUgcHJldmlvdXNseSBsYW5kZWQgaGFyZGVuaW5nIG1lYXN1cmVz
IGlzIGZhaWxpbmcgdGhlIGFzc2VydGlvbiBpbgorICAgICAgICBmb3JiaWREaXNhYmxpbmdQcmlt
aXRpdmVHaWdhY2FnZSgpIHdoZW4gYSByZXBsYWNlbWVudCBoZWFwIChlLmcuIGdtYWxsb2MpIGlz
CisgICAgICAgIHVzZWQuCisKKyAgICAgICAgMS4gZm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2ln
YWNhZ2UoKSBzaG91bGQganVzdCBlbnN1cmVHaWdhY2FnZSgpIHNvIHRoYXQgd2UKKyAgICAgICAg
ICAga25vdyB0aGF0IHRoZSBHaWdhY2FnZSBpcyBwcm9wZXJseSBjb25maWd1cmVkICh3aGV0aGVy
IGVuYWJsZWQgb3IgZGlzYWJsZWQpLgorICAgICAgICAyLiBTdHJlbmd0aGVuIHRoZSBhc3NlcnRp
b24gaW4gZm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UoKSB0byBlbnN1cmUgdGhhdAor
ICAgICAgICAgICB3ZSBoYXZlIGFscmVhZHkgZGV0ZXJtaW5lZCBpZiB0aGUgR2lnYWNhZ2Ugc2hv
dWxkIGJlIGVuYWJsZWQuCisKKyAgICAgICAgKiBibWFsbG9jL0dpZ2FjYWdlLmNwcDoKKyAgICAg
ICAgKEdpZ2FjYWdlOjpmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSk6CisKIDIwMTkt
MDktMDcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIHBlcmZvcm1K
SVRNZW1jcHkoKSBzb3VyY2UgYnVmZmVyIHNob3VsZCBub3QgYmUgaW4gdGhlIEdpZ2FjYWdlLgpJ
bmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5jcHAJKHJldmlzaW9uIDI0OTYxMSkKKysr
IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MDEsNyArMzAxLDEwIEBAIHN0YXRpYyBib29sIHZlcmlmeUdpZ2FjYWdlSXNFbmFibGVkKCkKIAog
dm9pZCBmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpCiB7Ci0gICAgUkVMRUFTRV9C
QVNTRVJUKEdJR0FDQUdFX0FMTE9DQVRJT05fQ0FOX0ZBSUwgfHwgdmVyaWZ5R2lnYWNhZ2VJc0Vu
YWJsZWQoKSk7CisgICAgZW5zdXJlR2lnYWNhZ2UoKTsKKyAgICBSRUxFQVNFX0JBU1NFUlQoZ19n
aWdhY2FnZUNvbmZpZy5zaG91bGRCZUVuYWJsZWRIYXNCZWVuQ2FsbGVkCisgICAgICAgICYmIChH
SUdBQ0FHRV9BTExPQ0FUSU9OX0NBTl9GQUlMIHx8ICFnX2dpZ2FjYWdlQ29uZmlnLnNob3VsZEJl
RW5hYmxlZCB8fCB2ZXJpZnlHaWdhY2FnZUlzRW5hYmxlZCgpKSk7CisKICAgICBpZiAoIWdfZ2ln
YWNhZ2VDb25maWcuZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0ZvcmJpZGRlbikgewogICAg
ICAgICB1bmZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCk7CiAgICAgICAgIGdfZ2lnYWNhZ2VDb25maWcu
ZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0ZvcmJpZGRlbiA9IHRydWU7Cg==
</data>
<flag name="review"
          id="393944"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>