<?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>149646</bug_id>
          
          <creation_ts>2015-09-29 14:17:39 -0700</creation_ts>
          <short_desc>Add a WKWebView input delegate SPI</short_desc>
          <delta_ts>2016-09-01 15:05: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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>enrica</cc>
    
    <cc>jberkman</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1129398</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-29 14:17:39 -0700</bug_when>
    <thetext>Add a delegate API that allows WebKit clients to manipulate an input session, such as being able to override preventing the keyboard from being raised when a field is programmatically focused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129422</commentid>
    <comment_count>1</comment_count>
      <attachid>262112</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-29 15:05:24 -0700</bug_when>
    <thetext>Created attachment 262112
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129423</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-29 15:06:52 -0700</bug_when>
    <thetext>Attachment 262112 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:504:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:504:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129431</commentid>
    <comment_count>3</comment_count>
      <attachid>262112</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-29 15:45:37 -0700</bug_when>
    <thetext>Comment on attachment 262112
Patch

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKFormDelegate.h:35
&gt; +@protocol WKFormDelegate &lt;NSObject&gt;

Since this is intended to be a public API, we&apos;ll need a lot of documentation here explaining when these methods are called/what they do. When we&apos;re more sure about which methods to include as public API, I&apos;ll write detailed descriptions similar to those in WKUIDelegate.h

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKFormDelegate.h:43
&gt; +- (BOOL)webView:(WKWebView *)webView shouldShowKeyboard:(BOOL)userIsInteracting WK_AVAILABLE(10_11, 9_0);

Since we only have 1 piece of information right now (userIsInteracting) I thought it would make more sense to just pass it in directly here as a parameter -- when we figure out exactly what pieces of information we should give to our clients, we should refactor this method to take in an object or maybe a dictionary containing information about the focused element.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.h:71
&gt; +@property (WK_NULLABLE_PROPERTY nonatomic, weak) id &lt;WKFormDelegate&gt; formDelegate WK_AVAILABLE(10_11, 9_0);

I changed this from _formDelegate to just formDelegate since we&apos;re now making it public. However, this means we&apos;ll need to do some small changes to Safari where we use the form delegate to make Safari not break.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:160
&gt; +    std::unique_ptr&lt;WebKit::FormDelegate&gt; _formDelegateWrapper;

I made the WKWebView access the delegate through a C++ wrapper class, like we do in the case of WKUIDelegate and WKNavigationDelegate.

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKFormDelegate.h:33
&gt; +WK_ASSUME_NONNULL_BEGIN

I believe this was in error. I&apos;ll remove this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129587</commentid>
    <comment_count>4</comment_count>
      <attachid>262165</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-30 08:52:13 -0700</bug_when>
    <thetext>Created attachment 262165
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129589</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-30 08:55:19 -0700</bug_when>
    <thetext>Attachment 262165 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:501:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:501:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:3020:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:3022:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:3023:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 5 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129614</commentid>
    <comment_count>6</comment_count>
      <attachid>262178</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-30 09:50:44 -0700</bug_when>
    <thetext>Created attachment 262178
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129615</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-30 09:51:58 -0700</bug_when>
    <thetext>Attachment 262178 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:501:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:501:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:3020:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:3022:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:3023:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 5 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129617</commentid>
    <comment_count>8</comment_count>
      <attachid>262178</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-30 09:52:15 -0700</bug_when>
    <thetext>Comment on attachment 262178
Patch

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKFormDelegate.h:26
&gt; +#import &lt;WebKit/WKFoundation.h&gt;

This file will need lots of documentation. I will write it when we&apos;re more certain about what information we want to expose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129991</commentid>
    <comment_count>9</comment_count>
      <attachid>262273</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-01 12:11:48 -0700</bug_when>
    <thetext>Created attachment 262273
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131231</commentid>
    <comment_count>10</comment_count>
      <attachid>262273</attachid>
    <who name="">mitz</who>
    <bug_when>2015-10-06 21:59:37 -0700</bug_when>
    <thetext>Comment on attachment 262273
Patch

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

When making changes that affect API, binary- and source-compatiblity need to be considered. Some of these apply even when changing private API. We need to keep TOT WebKit working with the shipping version of iOS Safari, so we can’t just remove the _formDelegate property’s accessor methods, because shipping Safari calls them (at least the setter). We also can’t remove a header like _WFormDelegate.h or remove other declarations from the header files, because it breaks compatibility with some source code internally at Apple, so the changes will need to be staged over a short period of time until that source can be updated.

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKElementFocusContext.h:63
&gt; +@protocol _WKElementFocusContext &lt;NSObject&gt;

I am not sure what “focus context” means. We have been using the suffix “info” for immutable snapshots of objects, such as WKFrameInfo, _WKActivatedElementInfo. Perhaps a name similar to _WKFocusedElementInfo would be more in line with those. Or perhaps this is more about the focusing action and not just the element, in which case maybe _WKElementFocusAction (similar to WKNavigationAction) might work?

Why is this a protocol and not a class?

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKElementFocusContext.h:69
&gt; +@property (nonatomic, readonly) WKInputType inputType;
&gt; +
&gt; +/* The value of the input at the time it is focused. */
&gt; +@property (nonatomic, readonly, copy) NSString *inputValue;

You may be able to drop the “input” suffix from these.

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKElementFocusContext.h:76
&gt; +@property (nonatomic, readonly) BOOL userIsInteracting;

If you followed in the footsteps of WKNavigationAction you’d call this property userInitiated (with a custom isUserInitiated getter).

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKInputDelegate.h:44
&gt; +- (BOOL)_webView:(WKWebView *)webView shouldStartInputSession:(id &lt;_WKElementFocusContext&gt;)context;

It’s a little confusing that didStartInputSession: takes an id &lt;_WKFormInputSession&gt; and shouldStartInputSession: takes a different type. Perhaps this method should be called -_webView:focusShouldStartInputSession: or even -_webView:focusActionShouldStartInputSession: depending on how you name the protocol.

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:285
&gt; +- (instancetype)initWithAssistedNodeInformation:(const AssistedNodeInformation *)information isInteracting:(BOOL)userIsInteracting;

Can this take a reference instead of a pointer?

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:290
&gt; +    NSString *_inputValue;

This should be a RetainPtr&lt;NSString&gt;.

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:296
&gt; +    if (self = [super init]) {

Instead of having most of the method indented like this, you should reverse the condition and early-return nil.

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:350
&gt; +        default:

Why do we need a default case here?

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:3111
&gt; +        WKElementFocusContext *context = [[WKElementFocusContext alloc] initWithAssistedNodeInformation:&amp;information isInteracting:userIsInteracting];

This is leaking! You should use a RetainPtr to hold this object so that it doesn’t leak.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131338</commentid>
    <comment_count>11</comment_count>
      <attachid>262273</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-07 11:15:53 -0700</bug_when>
    <thetext>Comment on attachment 262273
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKElementFocusContext.h:63
&gt;&gt; +@protocol _WKElementFocusContext &lt;NSObject&gt;
&gt; 
&gt; I am not sure what “focus context” means. We have been using the suffix “info” for immutable snapshots of objects, such as WKFrameInfo, _WKActivatedElementInfo. Perhaps a name similar to _WKFocusedElementInfo would be more in line with those. Or perhaps this is more about the focusing action and not just the element, in which case maybe _WKElementFocusAction (similar to WKNavigationAction) might work?
&gt; 
&gt; Why is this a protocol and not a class?

_WKFocusedElementInfo sounds much better. The purpose of this entity is to provide clients with information that can help customize the assistance behavior of a focused element -- this includes both a &quot;snapshot&quot; of the focused element, as well as some information about the action itself (e.g. isUserInitiated).

I made this a protocol because I was following the footsteps of WKFormInputSession, which also has a private protocol declaration and an implementation in WKContentViewInteraction.mm where it needs to be initialized.

&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKElementFocusContext.h:69
&gt;&gt; +@property (nonatomic, readonly, copy) NSString *inputValue;
&gt; 
&gt; You may be able to drop the “input” suffix from these.

Changed to just type and value.

&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKElementFocusContext.h:76
&gt;&gt; +@property (nonatomic, readonly) BOOL userIsInteracting;
&gt; 
&gt; If you followed in the footsteps of WKNavigationAction you’d call this property userInitiated (with a custom isUserInitiated getter).

Got it. Renamed to isUserInitiated

&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKInputDelegate.h:44
&gt;&gt; +- (BOOL)_webView:(WKWebView *)webView shouldStartInputSession:(id &lt;_WKElementFocusContext&gt;)context;
&gt; 
&gt; It’s a little confusing that didStartInputSession: takes an id &lt;_WKFormInputSession&gt; and shouldStartInputSession: takes a different type. Perhaps this method should be called -_webView:focusShouldStartInputSession: or even -_webView:focusActionShouldStartInputSession: depending on how you name the protocol.

Good point. Renamed shouldStartInputSession to focusShouldStartInputSession.

&gt;&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:285
&gt;&gt; +- (instancetype)initWithAssistedNodeInformation:(const AssistedNodeInformation *)information isInteracting:(BOOL)userIsInteracting;
&gt; 
&gt; Can this take a reference instead of a pointer?

Yes -- changed to use a const reference.

&gt;&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:290
&gt;&gt; +    NSString *_inputValue;
&gt; 
&gt; This should be a RetainPtr&lt;NSString&gt;.

Fixed.

&gt;&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:296
&gt;&gt; +    if (self = [super init]) {
&gt; 
&gt; Instead of having most of the method indented like this, you should reverse the condition and early-return nil.

Sounds good! Changed.

&gt;&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:350
&gt;&gt; +        default:
&gt; 
&gt; Why do we need a default case here?

Good point, it isn&apos;t necessary, since we have a 1-1 mapping. I was thinking of using default to catch input types we (for any reason) don&apos;t want to expose.

&gt;&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:3111
&gt;&gt; +        WKElementFocusContext *context = [[WKElementFocusContext alloc] initWithAssistedNodeInformation:&amp;information isInteracting:userIsInteracting];
&gt; 
&gt; This is leaking! You should use a RetainPtr to hold this object so that it doesn’t leak.

Good catch! Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131371</commentid>
    <comment_count>12</comment_count>
      <attachid>262626</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-07 12:41:33 -0700</bug_when>
    <thetext>Created attachment 262626
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133043</commentid>
    <comment_count>13</comment_count>
      <attachid>262626</attachid>
    <who name="">mitz</who>
    <bug_when>2015-10-13 22:51:09 -0700</bug_when>
    <thetext>Comment on attachment 262626
Patch

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h:206
&gt; +@property (nonatomic, weak, getter=_formDelegate, setter=_setFormDelegate:) id &lt;_WKFormDelegate&gt; _formDelegate;

No need for getter=_formDelegate since it’s exactly the same as the property name.

Instead of comment (which is not entirely correct: the declaration is here for source compatibility, the implementation is what gives us binary compatibility) you can annotate this with WK_DEPRECATED(10_10, WK_MAC_TBA, 8_0, WK_IOS_TBA, &quot;use _inputDelegate&quot;)

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h:207
&gt; +@property (nonatomic, weak, setter=_setInputDelegate:) id &lt;_WKInputDelegate&gt; _inputDelegate;

This needs to be annotated with WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA) since it’s new.

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKFormDelegate.h:27
&gt; +#ifndef _WKFormDelegate_h
&gt; +#define _WKFormDelegate_h

We don’t use such guards in headers that include Objective-C declarations (unless the declarations themselves are guarded with #if __OBJC__), because they are only imported from Objective-C files, which use #import directives which don’t require such guards.

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKFormDelegate.h:33
&gt; +#import &quot;_WKInputDelegate.h&quot;

This needs to be a framework-style import, &lt;WebKit/_WKInputDelegate.h&gt;, because this is a framework header.

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKFormDelegate.h:36
&gt; + * We are transitioning _WKFormDelegate to _WKInputDelegate. This header is here temporarily for binary compatibility and

source compatibility

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKInputDelegate.h:34
&gt; +@protocol _WKFormInputSession;
&gt; +@protocol _WKFocusedElementInfo;

Please keep these sorted, c before r.

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKInputDelegate.h:36
&gt; +@protocol _WKInputDelegate &lt;NSObject&gt;

I believe that we should annotate the entire protocol with availability information, but I am not sure exactly how.

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:298
&gt; +    self = [super init];
&gt; +    if (!self)
&gt; +        return nil;

We usually save a line by writing this:

if (!(self = [super init]))
    return nil;

&gt; Source/WebKit2/WebKit2.xcodeproj/project.pbxproj:5303
&gt; +				37A64E5418F38E3C00EB30F1 /* _WKInputDelegate.h */,
&gt;  				37A64E5618F38F4600EB30F1 /* _WKFormInputSession.h */,
&gt; +				2E7A94491BBD95C600945547 /* _WKFocusedElementInfo.h */,

Can you keep these sorted?

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:53
&gt; -#import &quot;WKWebProcessPluginFrameInternal.h&quot;
&gt; -#import &quot;WKWebProcessPlugInInternal.h&quot;
&gt;  #import &quot;WKWebProcessPlugInFormDelegatePrivate.h&quot;
&gt; +#import &quot;WKWebProcessPlugInInternal.h&quot;
&gt;  #import &quot;WKWebProcessPlugInLoadDelegate.h&quot;
&gt;  #import &quot;WKWebProcessPlugInNodeHandleInternal.h&quot;
&gt;  #import &quot;WKWebProcessPlugInPageGroupInternal.h&quot;
&gt;  #import &quot;WKWebProcessPlugInScriptWorldInternal.h&quot;
&gt; +#import &quot;WKWebProcessPluginFrameInternal.h&quot;

What’s this about? Seems unrelated to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134118</commentid>
    <comment_count>14</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-16 16:47:46 -0700</bug_when>
    <thetext>Committed r191228: &lt;http://trac.webkit.org/changeset/191228&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225532</commentid>
    <comment_count>15</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-09-01 14:18:49 -0700</bug_when>
    <thetext>This is work towards &lt;rdar://problem/17355265&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262112</attachid>
            <date>2015-09-29 15:05:24 -0700</date>
            <delta_ts>2015-09-30 08:52:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149646-20150929150501.patch</filename>
            <type>text/plain</type>
            <size>39136</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDg4NzVmMDBlMGUxNTdk
YTE4ZDBhNWEzOTMyYTFjNGU4NzVkZTA3MS4uODI1MDZmNDVhZDljNWJhNDQ5N2U2ZmVmNWM0MDM3
NWNkN2E4NDUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE1LTA5LTI5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIFdLV2Vi
VmlldyBmb3JtIGRlbGVnYXRlIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5NjQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIGEgZGVsZWdhdGUgQVBJIHRoYXQgYWxsb3dzIFdlYktpdCBjbGll
bnRzIHRvIG1hbmlwdWxhdGUgYW4gaW5wdXQgc2Vzc2lvbiwgc3VjaCBhcyBiZWluZyBhYmxlIHRv
IG92ZXJyaWRlCisgICAgICAgIHByZXZlbnRpbmcgdGhlIGtleWJvYXJkIGZyb20gYmVpbmcgcmFp
c2VkIHdoZW4gYSBmaWVsZCBpcyBwcm9ncmFtbWF0aWNhbGx5IGZvY3VzZWQuIFRoaXMgbmV3IGRl
bGVnYXRlIHdhcworICAgICAgICBhZGFwdGVkIGZyb20gdGhlIGV4aXN0aW5nIHByaXZhdGUgX1dL
Rm9ybURlbGVnYXRlLiBUaGlzIHBhdGNoIG1vdmVzIHBhcnQgb2YgX1dLRm9ybURlbGVnYXRlIGlu
dG8gdGhlIG5ldworICAgICAgICBwdWJsaWMgZGVsZWdhdGUuIFRoaXMgYWxzbyBtb3ZlcyB0aGUg
cHVibGljIGNvbXBvbmVudHMgb2YgdGhlIGFjY29tcGFueWluZyBfV0tGb3JtSW5wdXRTZXNzaW9u
IGludG8KKyAgICAgICAgV0tGb3JtSW5wdXRTZXNzaW9uLiBGb3IgV0tXZWJWaWV3LCB0aGlzIGFs
c28gcmVuYW1lcyB0aGUgcHJpdmF0ZSBfZm9ybURlbGVnYXRlIHRvIGZvcm1EZWxlZ2F0ZS4KKwor
ICAgICAgICBBZGRpdGlvbmFsbHksIHJlbW92ZXMgdGhlIGNhbkFzc2lzdE9uUHJvZ3JhbW1hdGlj
Rm9jdXMgZmxhZyBjb21taXR0ZWQgaW4gcjE5MDI3OC4KKworICAgICAgICAqIFNoYXJlZC9BUEkv
Q29jb2EvV2ViS2l0Lmg6IEFkZGVkIHRoZSBXS0Zvcm1EZWxlZ2F0ZSBoZWFkZXIuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9Gb3JtRGVsZWdhdGUuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tGb3JtSW5wdXRTZXNzaW9uLmguCisgICAg
ICAgICAgICBXcmFwcyBhIFdLRm9ybURlbGVnYXRlLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvRm9ybURlbGVnYXRlLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0Zvcm1JbnB1dFNlc3Npb24uaC4KKyAgICAgICAgKFdlYktpdDo6Rm9y
bURlbGVnYXRlOjpGb3JtRGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpGb3JtRGVsZWdhdGU6
On5Gb3JtRGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpGb3JtRGVsZWdhdGU6OmRlbGVnYXRl
KToKKyAgICAgICAgKFdlYktpdDo6Rm9ybURlbGVnYXRlOjpzZXREZWxlZ2F0ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Zvcm1EZWxlZ2F0ZS5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Zvcm1JbnB1dFNlc3Npb24uaC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRm9ybUlucHV0U2Vzc2lvbi5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Zvcm1JbnB1dFNlc3Np
b24uaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOl0pOiBJbml0aWFsaXplIHRoZSBmb3JtIGRl
bGVnYXRlIHdyYXBwZXIuCisgICAgICAgICgtW1dLV2ViVmlldyBmb3JtRGVsZWdhdGVdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IHNldEZvcm1EZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IGNhbkFzc2lzdE9uUHJvZ3JhbW1hdGljRm9jdXNdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V0tXZWJWaWV3IHNldENhbkFzc2lzdE9uUHJvZ3JhbW1hdGljRm9jdXM6XSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dLV2ViVmlldyBfZm9ybURlbGVnYXRlXSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dLV2ViVmlldyBfc2V0Rm9ybURlbGVnYXRlOl0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBpbml0XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gX2NhbkFzc2lzdE9uUHJvZ3JhbW1hdGljRm9jdXNdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfc2V0Q2FuQXNzaXN0T25Qcm9ncmFt
bWF0aWNGb2N1czpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0Zvcm1E
ZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRm9ybUlucHV0U2Vz
c2lvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGFjY2Vzc29yeUF1dG9GaWxsXSk6CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgX3N0YXJ0QXNzaXN0aW5nTm9kZTp1c2VySXNJbnRlcmFjdGlu
ZzpibHVyUHJldmlvdXNOb2RlOnVzZXJPYmplY3Q6XSk6IERlZmVycyBub2RlIGFzc2lzdGFuY2UK
KyAgICAgICAgICAgIGJlaGF2aW9yIHRvIHRoZSBmb3JtIGRlbGVnYXRlIGlmIGFwcGxpY2FibGUs
IG90aGVyd2lzZSB1c2VzIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIG9ubHkgYXNzaXN0aW5nIHVw
b24KKyAgICAgICAgICAgIHVzZXIgaW50ZXJhY3Rpb24uCisgICAgICAgICogV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZCBuZXcgZmlsZXMuCisKIDIwMTUtMDktMjkgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNZW1vcnkgY2FjaGUgcmV2
YWxpZGF0aW9ucyBzaG91bGQgcmVmcmVzaCB0aGUgbmV0d29yayBkaXNrIGNhY2hlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dlYktpdC5oIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQuaAppbmRleCBjM2Q3ZjE1NDE1ZjA1N2E4MTVh
YTRiNjkwMjAyOWUyYmE2ZDE1MzI1Li4zNDFhZWUzN2NhYzg5OTZkZjE2MjBjZGE5Y2JhNjA2OTY0
NGI4OTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dlYktp
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0LmgKQEAgLTI2
LDYgKzI2LDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS0JhY2tGb3J3YXJkTGlzdC5oPgogI2ltcG9y
dCA8V2ViS2l0L1dLQmFja0ZvcndhcmRMaXN0SXRlbS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRXJy
b3IuaD4KKyNpbXBvcnQgPFdlYktpdC9XS0Zvcm1EZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRnJhbWVJbmZvLmg+CiAjaW1wb3J0
IDxXZWJLaXQvV0tOYXZpZ2F0aW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL0Zvcm1EZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9Gb3JtRGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMzE2NGJlY2E2NGQ3NmM2OGY5
ZDM4ZDQzNThiOWMxZWYxZDczNDU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9Gb3JtRGVsZWdhdGUuaApAQCAtMCwwICsxLDU3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBGb3JtRGVsZWdhdGVfaAorI2RlZmluZSBGb3JtRGVsZWdhdGVfaAor
CisjaW1wb3J0ICJXS0ZvdW5kYXRpb24uaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBv
cnQgIldlYWtPYmpDUHRyLmgiCisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK0BjbGFzcyBX
S1dlYlZpZXc7CitAcHJvdG9jb2wgV0tGb3JtRGVsZWdhdGU7CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBGb3JtRGVsZWdhdGUgeworcHVibGljOgorICAgIEZvcm1EZWxlZ2F0ZSgpOwor
ICAgIH5Gb3JtRGVsZWdhdGUoKTsKKworICAgIFJldGFpblB0cjxpZCA8V0tGb3JtRGVsZWdhdGU+
ID4gZGVsZWdhdGUoKTsKKyAgICB2b2lkIHNldERlbGVnYXRlKGlkIDxXS0Zvcm1EZWxlZ2F0ZT4p
OworCitwcml2YXRlOgorICAgIFdlYWtPYmpDUHRyPGlkIDxXS0Zvcm1EZWxlZ2F0ZT4gPiBtX2Rl
bGVnYXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXS19BUElf
RU5BQkxFRAorCisjZW5kaWYgLy8gRm9ybURlbGVnYXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvRm9ybURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9Gb3JtRGVsZWdhdGUubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzk2N2Vh
MmNiMTg3ZGRhMmVjYTQ4ODMzZDkwY2M3NDE5ZTc0ZjY5MAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvRm9ybURlbGVnYXRlLm1tCkBAIC0wLDAg
KzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkZvcm1E
ZWxlZ2F0ZS5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K0Zvcm1EZWxlZ2F0ZTo6Rm9ybURlbGVnYXRlKCkKK3sKK30KKworRm9ybURlbGVnYXRlOjp+Rm9y
bURlbGVnYXRlKCkKK3sKK30KKworUmV0YWluUHRyPGlkIDxXS0Zvcm1EZWxlZ2F0ZT4gPiBGb3Jt
RGVsZWdhdGU6OmRlbGVnYXRlKCkKK3sKKyAgICByZXR1cm4gbV9kZWxlZ2F0ZS5nZXQoKTsKK30K
Kwordm9pZCBGb3JtRGVsZWdhdGU6OnNldERlbGVnYXRlKGlkIDxXS0Zvcm1EZWxlZ2F0ZT4gZGVs
ZWdhdGUpCit7CisgICAgbV9kZWxlZ2F0ZSA9IGRlbGVnYXRlOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8qIFdLX0FQSV9FTkFCTEVEICovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRm9ybURlbGVnYXRlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRm9ybURlbGVnYXRlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjBjMTI3OWQzMmFjMzA0YThkOWMwY2ViZjVjNTRmYzEyZTMwMWVhMAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGb3JtRGVsZWdhdGUuaApA
QCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlv
bi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0
aW9uLmg+CisKK0BjbGFzcyBXS1dlYlZpZXc7CitAcHJvdG9jb2wgV0tGb3JtSW5wdXRTZXNzaW9u
OworCitAcHJvdG9jb2wgV0tGb3JtRGVsZWdhdGUgPE5TT2JqZWN0PgorCitAb3B0aW9uYWwKKwor
LSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFN0YXJ0SW5wdXRTZXNzaW9u
OihpZCA8V0tGb3JtSW5wdXRTZXNzaW9uPilpbnB1dFNlc3Npb24gV0tfQVZBSUxBQkxFKDEwXzEx
LCA5XzApOworCisjaWYgVEFSR0VUX09TX0lQSE9ORQorLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IGFjY2Vzc29yeVZpZXdDdXN0b21CdXR0b25UYXBwZWRJbkZvcm1JbnB1dFNl
c3Npb246KGlkIDxXS0Zvcm1JbnB1dFNlc3Npb24+KWlucHV0U2Vzc2lvbiBXS19BVkFJTEFCTEUo
MTBfMTEsIDlfMCk7CistIChCT09MKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc2hvdWxk
U2hvd0tleWJvYXJkOihCT09MKXVzZXJJc0ludGVyYWN0aW5nIFdLX0FWQUlMQUJMRSgxMF8xMSwg
OV8wKTsKKyNlbmRpZgorCitAZW5kCisKKyNlbmRpZiAvKiBXS19BUElfRU5BQkxFRCAqLwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Zvcm1JbnB1dFNl
c3Npb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGb3JtSW5wdXRT
ZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFmNDFjOWVhNmJiNGMxZWEzMmYzMTg1NmI0MWM1MzQ1M2Iz
NWQ4MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tGb3JtSW5wdXRTZXNzaW9uLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNp
bXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCitAcHJvdG9jb2wgV0tGb3JtSW5wdXRT
ZXNzaW9uIDxOU09iamVjdD4KKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0
ZXI9aXNWYWxpZCkgQk9PTCB2YWxpZDsKKworI2lmIFRBUkdFVF9PU19JUEhPTkUKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqYWNjZXNzb3J5Vmlld0N1c3RvbUJ1dHRvblRp
dGxlOworI2VuZGlmCisKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaAppbmRleCA0YTdkZWM3
Y2Y1ZmM5MTg5YmQwNDU4YTVlODQyOWNlMmFlYzcwN2NlLi5mY2YyYTQ3ZTJjMmVlZmVmZjk0MmFh
OTQ4YzEzZTJjMWU4ZWRkOGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3LmgKQEAgLTQyLDYgKzQyLDcgQEAgV0tfQVNTVU1FX05PTk5VTExfQkVH
SU4KIAogQHByb3RvY29sIFdLTmF2aWdhdGlvbkRlbGVnYXRlOwogQHByb3RvY29sIFdLVUlEZWxl
Z2F0ZTsKK0Bwcm90b2NvbCBXS0Zvcm1EZWxlZ2F0ZTsKIAogLyohCiAgQSBXS1dlYlZpZXcgb2Jq
ZWN0IGRpc3BsYXlzIGludGVyYWN0aXZlIFdlYiBjb250ZW50LgpAQCAtNjYsNiArNjcsOSBAQCBX
S19DTEFTU19BVkFJTEFCTEUoMTBfMTAsIDhfMCkKIC8qISBAYWJzdHJhY3QgVGhlIHdlYiB2aWV3
J3MgdXNlciBpbnRlcmZhY2UgZGVsZWdhdGUuICovCiBAcHJvcGVydHkgKFdLX05VTExBQkxFX1BS
T1BFUlRZIG5vbmF0b21pYywgd2VhaykgaWQgPFdLVUlEZWxlZ2F0ZT4gVUlEZWxlZ2F0ZTsKIAor
LyohIEBhYnN0cmFjdCBUaGUgd2ViIHZpZXcncyBmb3JtIGRlbGVnYXRlLiAqLworQHByb3BlcnR5
IChXS19OVUxMQUJMRV9QUk9QRVJUWSBub25hdG9taWMsIHdlYWspIGlkIDxXS0Zvcm1EZWxlZ2F0
ZT4gZm9ybURlbGVnYXRlIFdLX0FWQUlMQUJMRSgxMF8xMSwgOV8wKTsKKwogLyohIEBhYnN0cmFj
dCBUaGUgd2ViIHZpZXcncyBiYWNrLWZvcndhcmQgbGlzdC4gKi8KIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSwgc3Ryb25nKSBXS0JhY2tGb3J3YXJkTGlzdCAqYmFja0ZvcndhcmRMaXN0
OwogCkBAIC0yNDIsMTAgKzI0Niw2IEBAIFdLX0NMQVNTX0FWQUlMQUJMRSgxMF8xMCwgOF8wKQog
ICovCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIHN0cm9uZykgVUlTY3JvbGxWaWV3
ICpzY3JvbGxWaWV3OwogCi0vKiEgQGFic3RyYWN0IEEgQm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5n
IHdoZXRoZXIgcHJvZ3JhbW1hdGljIGZvY3VzIG9uCi0gYW4gZWxlbWVudCBpcyBhbGxvd2VkIHRv
IHRyaWdnZXIgYXNzaXN0YW5jZS4KLSAqLwotQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgY2Fu
QXNzaXN0T25Qcm9ncmFtbWF0aWNGb2N1czsKICNlbmRpZgogCiAjaWYgIVRBUkdFVF9PU19JUEhP
TkUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
aW5kZXggMTlhMDI1YjU2MzQ0YjI3OTRmYzQ2NjdkZjA0YzMzNDNmNWY3N2I0ZS4uYWY3ZjI3ODRk
YmY5MzM5OTI0OThjMzEwMzE3NDAxOGExMDZiZTYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTM0LDYgKzM0LDcgQEAKICNpbXBv
cnQgIkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCIKICNpbXBvcnQgIkRpYWdub3N0aWNM
b2dnaW5nQ2xpZW50LmgiCiAjaW1wb3J0ICJGaW5kQ2xpZW50LmgiCisjaW1wb3J0ICJGb3JtRGVs
ZWdhdGUuaCIKICNpbXBvcnQgIkxlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5oIgogI2ltcG9ydCAi
TmF2aWdhdGlvblN0YXRlLmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJm
b3JtYW5jZURhdGEuaCIKQEAgLTQ3LDYgKzQ4LDcgQEAKICNpbXBvcnQgIldLQmFja0ZvcndhcmRM
aXN0SXRlbUludGVybmFsLmgiCiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZUludGVy
bmFsLmgiCiAjaW1wb3J0ICJXS0Vycm9ySW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLRm9ybURlbGVn
YXRlLmgiCiAjaW1wb3J0ICJXS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGUuaCIKICNpbXBvcnQgIldL
TGF5b3V0TW9kZS5oIgogI2ltcG9ydCAiV0tOU0RhdGEuaCIKQEAgLTE1NSwxMSArMTU3LDExIEBA
IFdLV2ViVmlldyogZnJvbVdlYlBhZ2VQcm94eShXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSkK
IEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgewogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6
Ok5hdmlnYXRpb25TdGF0ZT4gX25hdmlnYXRpb25TdGF0ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViS2l0OjpVSURlbGVnYXRlPiBfdWlEZWxlZ2F0ZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
S2l0OjpGb3JtRGVsZWdhdGU+IF9mb3JtRGVsZWdhdGVXcmFwcGVyOwogCiAgICAgUmV0YWluUHRy
PF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5PiBfcmVtb3RlT2JqZWN0UmVnaXN0cnk7CiAgICAgX1dL
UmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMgX29ic2VydmVkUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHM7
CiAKLSAgICBXZWJLaXQ6OldlYWtPYmpDUHRyPGlkIDxfV0tGb3JtRGVsZWdhdGU+PiBfZm9ybURl
bGVnYXRlOwogI2lmIFBMQVRGT1JNKElPUykKICAgICBSZXRhaW5QdHI8V0tTY3JvbGxWaWV3PiBf
c2Nyb2xsVmlldzsKICAgICBSZXRhaW5QdHI8V0tDb250ZW50Vmlldz4gX2NvbnRlbnRWaWV3OwpA
QCAtMjExLDggKzIxMyw2IEBAIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgewogICAgIEJPT0wg
X3BhZ2VJc1ByaW50aW5nVG9QREY7CiAgICAgUmV0YWluUHRyPENHUERGRG9jdW1lbnRSZWY+IF9w
cmludGVkRG9jdW1lbnQ7CiAgICAgVmVjdG9yPHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+IF9zbmFw
c2hvdHNEZWZlcnJlZER1cmluZ1Jlc2l6ZTsKLQotICAgIEJPT0wgX2NhbkFzc2lzdE9uUHJvZ3Jh
bW1hdGljRm9jdXM7CiAjZW5kaWYKICNpZiBQTEFURk9STShNQUMpCiAgICAgUmV0YWluUHRyPFdL
Vmlldz4gX3drVmlldzsKQEAgLTM2OSw3ICszNjksNiBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRp
bwogCiAgICAgW1tfY29uZmlndXJhdGlvbiBfY29udGVudFByb3ZpZGVyUmVnaXN0cnldIGFkZFBh
Z2U6Kl9wYWdlXTsKIAotICAgIFtzZWxmIHNldENhbkFzc2lzdE9uUHJvZ3JhbW1hdGljRm9jdXM6
W19jb25maWd1cmF0aW9uIGNhbkFzc2lzdE9uUHJvZ3JhbW1hdGljRm9jdXNdXTsKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMzg5LDYgKzM4OCw3IEBAIC0gKGluc3RhbmNldHlwZSlp
bml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgY29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmln
dXJhdGlvCiAKICAgICBfbmF2aWdhdGlvblN0YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6
Ok5hdmlnYXRpb25TdGF0ZT4oc2VsZik7CiAgICAgX3VpRGVsZWdhdGUgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYktpdDo6VUlEZWxlZ2F0ZT4oc2VsZik7CisgICAgX2Zvcm1EZWxlZ2F0ZVdyYXBwZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6Rm9ybURlbGVnYXRlPigpOwogICAgIF9wYWdlLT5z
ZXRGaW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpGaW5kQ2xpZW50PihzZWxmKSk7
CiAgICAgX3BhZ2UtPnNldERpYWdub3N0aWNMb2dnaW5nQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
V2ViS2l0OjpEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4oc2VsZikpOwogCkBAIC00NTQsNiArNDU0
LDc2IEBAIC0gKHZvaWQpc2V0VUlEZWxlZ2F0ZTooaWQ8V0tVSURlbGVnYXRlPilVSURlbGVnYXRl
CiAgICAgX3VpRGVsZWdhdGUtPnNldERlbGVnYXRlKFVJRGVsZWdhdGUpOwogfQogCistIChpZCA8
V0tGb3JtRGVsZWdhdGU+KWZvcm1EZWxlZ2F0ZQoreworICAgIHJldHVybiBfZm9ybURlbGVnYXRl
V3JhcHBlci0+ZGVsZWdhdGUoKS5hdXRvcmVsZWFzZSgpOworfQorCistICh2b2lkKXNldEZvcm1E
ZWxlZ2F0ZTooaWQgPFdLRm9ybURlbGVnYXRlPilmb3JtRGVsZWdhdGUKK3sKKyAgICBfZm9ybURl
bGVnYXRlV3JhcHBlci0+c2V0RGVsZWdhdGUoZm9ybURlbGVnYXRlKTsKKyAgICBpZiAoIVtmb3Jt
RGVsZWdhdGUgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChfV0tGb3JtRGVsZWdhdGUpXSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgY2xhc3MgRm9ybUNsaWVudCA6IHB1YmxpYyBBUEk6OkZv
cm1DbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgRm9ybUNsaWVudChXS1dl
YlZpZXcgKndlYlZpZXcpCisgICAgICAgICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQorICAgICAg
ICB7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIH5Gb3JtQ2xpZW50KCkgeyB9CisKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHdpbGxTdWJtaXRGb3JtKFdlYktpdDo6V2ViUGFnZVByb3h5Jiwg
V2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiBzb3VyY2VGcmFt
ZSwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxXVEY6OlN0cmluZywgV1RGOjpTdHJpbmc+PiYgdGV4
dEZpZWxkVmFsdWVzLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFJlZjxXZWJLaXQ6OldlYkZvcm1T
dWJtaXNzaW9uTGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lcikgb3ZlcnJpZGUKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKHVzZXJEYXRhICYmIHVzZXJEYXRhLT50eXBlKCkgIT0gQVBJOjpPYmpl
Y3Q6OlR5cGU6OkRhdGEpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIXVzZXJEYXRhIHx8IHVz
ZXJEYXRhLT50eXBlKCkgPT0gQVBJOjpPYmplY3Q6OlR5cGU6OkRhdGEpOworICAgICAgICAgICAg
ICAgIG1fd2ViVmlldy0+X3BhZ2UtPnByb2Nlc3MoKS5jb25uZWN0aW9uKCktPm1hcmtDdXJyZW50
bHlEaXNwYXRjaGVkTWVzc2FnZUFzSW52YWxpZCgpOworICAgICAgICAgICAgICAgIGxpc3RlbmVy
LT5jb250aW51ZVN1Ym1pc3Npb24oKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGF1dG8gZm9ybURlbGVnYXRlID0gKGlkIDxfV0tGb3JtRGVs
ZWdhdGU+KSBtX3dlYlZpZXctPl9mb3JtRGVsZWdhdGVXcmFwcGVyLT5kZWxlZ2F0ZSgpOworCisg
ICAgICAgICAgICBpZiAoIVtmb3JtRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihfd2ViVmlldzp3aWxsU3VibWl0Rm9ybVZhbHVlczp1c2VyT2JqZWN0OnN1Ym1pc3Npb25IYW5k
bGVyOildKSB7CisgICAgICAgICAgICAgICAgbGlzdGVuZXItPmNvbnRpbnVlU3VibWlzc2lvbigp
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
YXV0byB2YWx1ZU1hcCA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0
V2l0aENhcGFjaXR5OnRleHRGaWVsZFZhbHVlcy5zaXplKCldKTsKKyAgICAgICAgICAgIGZvciAo
Y29uc3QgYXV0byYgcGFpciA6IHRleHRGaWVsZFZhbHVlcykKKyAgICAgICAgICAgICAgICBbdmFs
dWVNYXAgc2V0T2JqZWN0OnBhaXIuc2Vjb25kIGZvcktleTpwYWlyLmZpcnN0XTsKKworICAgICAg
ICAgICAgTlNPYmplY3QgPE5TU2VjdXJlQ29kaW5nPiAqdXNlck9iamVjdCA9IG5pbDsKKyAgICAg
ICAgICAgIGlmIChBUEk6OkRhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxBUEk6OkRhdGEqPih1c2Vy
RGF0YSkpIHsKKyAgICAgICAgICAgICAgICBhdXRvIG5zRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEg
YWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6Y29uc3RfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8
Y29uc3Qgdm9pZCo+KGRhdGEtPmJ5dGVzKCkpKSBsZW5ndGg6ZGF0YS0+c2l6ZSgpIGZyZWVXaGVu
RG9uZTpOT10pOworICAgICAgICAgICAgICAgIGF1dG8gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tO
U0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdXaXRoRGF0YTpuc0RhdGEuZ2V0
KCldKTsKKyAgICAgICAgICAgICAgICBbdW5hcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGlu
ZzpZRVNdOworICAgICAgICAgICAgICAgIEB0cnkgeworICAgICAgICAgICAgICAgICAgICB1c2Vy
T2JqZWN0ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpbTlNPYmplY3QgY2xhc3Nd
IGZvcktleTpAInVzZXJPYmplY3QiXTsKKyAgICAgICAgICAgICAgICB9IEBjYXRjaCAoTlNFeGNl
cHRpb24gKmV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxl
ZCB0byBkZWNvZGUgdXNlciBkYXRhOiAlQCIsIGV4Y2VwdGlvbik7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBSZWZQdHI8V2ViS2l0OjpXZWJGb3JtU3Vi
bWlzc2lvbkxpc3RlbmVyUHJveHk+IGxvY2FsTGlzdGVuZXIgPSBXVEY6Om1vdmUobGlzdGVuZXIp
OworICAgICAgICAgICAgUmVmUHRyPFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tl
cj4gY2hlY2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRl
KGZvcm1EZWxlZ2F0ZSwgQHNlbGVjdG9yKF93ZWJWaWV3OndpbGxTdWJtaXRGb3JtVmFsdWVzOnVz
ZXJPYmplY3Q6c3VibWlzc2lvbkhhbmRsZXI6KSk7CisgICAgICAgICAgICBbZm9ybURlbGVnYXRl
IF93ZWJWaWV3Om1fd2ViVmlldyB3aWxsU3VibWl0Rm9ybVZhbHVlczp2YWx1ZU1hcC5nZXQoKSB1
c2VyT2JqZWN0OnVzZXJPYmplY3Qgc3VibWlzc2lvbkhhbmRsZXI6W2xvY2FsTGlzdGVuZXIsIGNo
ZWNrZXJdIHsKKyAgICAgICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRs
ZXIoKTsKKyAgICAgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT5jb250aW51ZVN1Ym1pc3Npb24o
KTsKKyAgICAgICAgICAgIH1dOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBX
S1dlYlZpZXcgKm1fd2ViVmlldzsKKyAgICB9OworCisgICAgaWYgKGZvcm1EZWxlZ2F0ZSkKKyAg
ICAgICAgX3BhZ2UtPnNldEZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxGb3JtQ2xpZW50Pihz
ZWxmKSk7CisgICAgZWxzZQorICAgICAgICBfcGFnZS0+c2V0Rm9ybUNsaWVudChudWxscHRyKTsK
K30KKwogLSAoV0tOYXZpZ2F0aW9uICopbG9hZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVl
c3QKIHsKICAgICBhdXRvIG5hdmlnYXRpb24gPSBfcGFnZS0+bG9hZFJlcXVlc3QocmVxdWVzdCk7
CkBAIC03MjAsMTYgKzc5MCw2IEBAIC0gKFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcKICAgICBy
ZXR1cm4gX3Njcm9sbFZpZXcuZ2V0KCk7CiB9CiAKLS0gKEJPT0wpY2FuQXNzaXN0T25Qcm9ncmFt
bWF0aWNGb2N1cwotewotICAgIHJldHVybiBfY2FuQXNzaXN0T25Qcm9ncmFtbWF0aWNGb2N1czsK
LX0KLQotLSAodm9pZClzZXRDYW5Bc3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzOihCT09MKWNhbkFz
c2lzdE9uUHJvZ3JhbW1hdGljRm9jdXMKLXsKLSAgICBfY2FuQXNzaXN0T25Qcm9ncmFtbWF0aWNG
b2N1cyA9IGNhbkFzc2lzdE9uUHJvZ3JhbW1hdGljRm9jdXM7Ci19Ci0KIC0gKFdLQnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlciAqKWJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIKIHsKICAgICByZXR1
cm4gW19jb250ZW50VmlldyBicm93c2luZ0NvbnRleHRDb250cm9sbGVyXTsKQEAgLTI0MzMsNzQg
KzI0OTMsNiBAQCAtICh2b2lkKV9zYXZlQmFja0ZvcndhcmRTbmFwc2hvdEZvckl0ZW06KFdLQmFj
a0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW0KICAgICBfcGFnZS0+cmVjb3JkTmF2aWdhdGlvblNuYXBz
aG90KGl0ZW0uX2l0ZW0pOwogfQogCi0tIChpZCA8X1dLRm9ybURlbGVnYXRlPilfZm9ybURlbGVn
YXRlCi17Ci0gICAgcmV0dXJuIF9mb3JtRGVsZWdhdGUuZ2V0QXV0b3JlbGVhc2VkKCk7Ci19Ci0K
LS0gKHZvaWQpX3NldEZvcm1EZWxlZ2F0ZTooaWQgPF9XS0Zvcm1EZWxlZ2F0ZT4pZm9ybURlbGVn
YXRlCi17Ci0gICAgX2Zvcm1EZWxlZ2F0ZSA9IGZvcm1EZWxlZ2F0ZTsKLQotICAgIGNsYXNzIEZv
cm1DbGllbnQgOiBwdWJsaWMgQVBJOjpGb3JtQ2xpZW50IHsKLSAgICBwdWJsaWM6Ci0gICAgICAg
IGV4cGxpY2l0IEZvcm1DbGllbnQoV0tXZWJWaWV3ICp3ZWJWaWV3KQotICAgICAgICAgICAgOiBt
X3dlYlZpZXcod2ViVmlldykKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgdmlydHVh
bCB+Rm9ybUNsaWVudCgpIHsgfQotCi0gICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsU3VibWl0Rm9y
bShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFdlYktpdDo6
V2ViRnJhbWVQcm94eSYgc291cmNlRnJhbWUsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8V1RGOjpT
dHJpbmcsIFdURjo6U3RyaW5nPj4mIHRleHRGaWVsZFZhbHVlcywgQVBJOjpPYmplY3QqIHVzZXJE
YXRhLCBSZWY8V2ViS2l0OjpXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHk+JiYgbGlzdGVu
ZXIpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICh1c2VyRGF0YSAmJiB1c2Vy
RGF0YS0+dHlwZSgpICE9IEFQSTo6T2JqZWN0OjpUeXBlOjpEYXRhKSB7Ci0gICAgICAgICAgICAg
ICAgQVNTRVJUKCF1c2VyRGF0YSB8fCB1c2VyRGF0YS0+dHlwZSgpID09IEFQSTo6T2JqZWN0OjpU
eXBlOjpEYXRhKTsKLSAgICAgICAgICAgICAgICBtX3dlYlZpZXctPl9wYWdlLT5wcm9jZXNzKCku
Y29ubmVjdGlvbigpLT5tYXJrQ3VycmVudGx5RGlzcGF0Y2hlZE1lc3NhZ2VBc0ludmFsaWQoKTsK
LSAgICAgICAgICAgICAgICBsaXN0ZW5lci0+Y29udGludWVTdWJtaXNzaW9uKCk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBhdXRvIGZvcm1E
ZWxlZ2F0ZSA9IG1fd2ViVmlldy0+X2Zvcm1EZWxlZ2F0ZS5nZXQoKTsKLQotICAgICAgICAgICAg
aWYgKCFbZm9ybURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6
d2lsbFN1Ym1pdEZvcm1WYWx1ZXM6dXNlck9iamVjdDpzdWJtaXNzaW9uSGFuZGxlcjopXSkgewot
ICAgICAgICAgICAgICAgIGxpc3RlbmVyLT5jb250aW51ZVN1Ym1pc3Npb24oKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGF1dG8gdmFsdWVN
YXAgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0
eTp0ZXh0RmllbGRWYWx1ZXMuc2l6ZSgpXSk7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IHBhaXIgOiB0ZXh0RmllbGRWYWx1ZXMpCi0gICAgICAgICAgICAgICAgW3ZhbHVlTWFwIHNldE9i
amVjdDpwYWlyLnNlY29uZCBmb3JLZXk6cGFpci5maXJzdF07Ci0KLSAgICAgICAgICAgIE5TT2Jq
ZWN0IDxOU1NlY3VyZUNvZGluZz4gKnVzZXJPYmplY3QgPSBuaWw7Ci0gICAgICAgICAgICBpZiAo
QVBJOjpEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8QVBJOjpEYXRhKj4odXNlckRhdGEpKSB7Ci0g
ICAgICAgICAgICAgICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0
V2l0aEJ5dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQq
PihkYXRhLT5ieXRlcygpKSkgbGVuZ3RoOmRhdGEtPnNpemUoKSBmcmVlV2hlbkRvbmU6Tk9dKTsK
LSAgICAgICAgICAgICAgICBhdXRvIHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJj
aGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nV2l0aERhdGE6bnNEYXRhLmdldCgpXSk7Ci0gICAg
ICAgICAgICAgICAgW3VuYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsKLSAg
ICAgICAgICAgICAgICBAdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgdXNlck9iamVjdCA9IFt1
bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6W05TT2JqZWN0IGNsYXNzXSBmb3JLZXk6QCJ1
c2VyT2JqZWN0Il07Ci0gICAgICAgICAgICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNl
cHRpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVjb2Rl
IHVzZXIgZGF0YTogJUAiLCBleGNlcHRpb24pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgUmVmUHRyPFdlYktpdDo6V2ViRm9ybVN1Ym1pc3Npb25MaXN0
ZW5lclByb3h5PiBsb2NhbExpc3RlbmVyID0gV1RGOjptb3ZlKGxpc3RlbmVyKTsKLSAgICAgICAg
ICAgIFJlZlB0cjxXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI+IGNoZWNrZXIg
PSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShmb3JtRGVsZWdh
dGUuZ2V0KCksIEBzZWxlY3Rvcihfd2ViVmlldzp3aWxsU3VibWl0Rm9ybVZhbHVlczp1c2VyT2Jq
ZWN0OnN1Ym1pc3Npb25IYW5kbGVyOikpOwotICAgICAgICAgICAgW2Zvcm1EZWxlZ2F0ZSBfd2Vi
VmlldzptX3dlYlZpZXcgd2lsbFN1Ym1pdEZvcm1WYWx1ZXM6dmFsdWVNYXAuZ2V0KCkgdXNlck9i
amVjdDp1c2VyT2JqZWN0IHN1Ym1pc3Npb25IYW5kbGVyOltsb2NhbExpc3RlbmVyLCBjaGVja2Vy
XSB7Ci0gICAgICAgICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7
Ci0gICAgICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+Y29udGludWVTdWJtaXNzaW9uKCk7Ci0g
ICAgICAgICAgICB9XTsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgV0tXZWJW
aWV3ICptX3dlYlZpZXc7Ci0gICAgfTsKLQotICAgIGlmIChmb3JtRGVsZWdhdGUpCi0gICAgICAg
IF9wYWdlLT5zZXRGb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Rm9ybUNsaWVudD4oc2VsZikp
OwotICAgIGVsc2UKLSAgICAgICAgX3BhZ2UtPnNldEZvcm1DbGllbnQobnVsbHB0cik7Ci19Ci0K
IC0gKEJPT0wpX2lzRGlzcGxheWluZ1N0YW5kYWxvbmVJbWFnZURvY3VtZW50CiB7CiAgICAgaWYg
KGF1dG8qIG1haW5GcmFtZSA9IF9wYWdlLT5tYWluRnJhbWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9u
LmgKaW5kZXggZGJkZjJkMTE2OTQ5OGJlZWFhM2ZmN2ZhNTRjNTM5NTJjNjhiY2FhZi4uZmU3YWM3
ODQzYjNkMDg2ZWVlNDczNjc3ZWZhMGJkNDY3MDJhYjNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9u
LmgKQEAgLTExOSwxMiArMTE5LDYgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKDEwXzEwLCA4XzApCiAg
Ki8KIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGFsbG93c1BpY3R1cmVJblBpY3R1cmVNZWRp
YVBsYXliYWNrIFdLX0FWQUlMQUJMRShOQSwgOV8wKTsKIAotLyohIEBhYnN0cmFjdCBBIEJvb2xl
YW4gdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHByb2dyYW1tYXRpYyBmb2N1cyBvbgotIGFuIGVs
ZW1lbnQgaXMgYWxsb3dlZCB0byB0cmlnZ2VyIGFzc2lzdGFuY2UuCi0gQGRpc2N1c3Npb24gVGhl
IGRlZmF1bHQgdmFsdWUgaXMgTk8uCi0gKi8KLUBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGNh
bkFzc2lzdE9uUHJvZ3JhbW1hdGljRm9jdXM7Ci0KICNlbmRpZgogCiBAZW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24ubW0KaW5kZXggYTIzMDhkMzM3OTJmOTVjNTgzMDNkNmZmMDEzNjBhMGM5ZTZiMjZl
MC4uZjY1N2UyNDI3NGY1YjAyZDQ0YWMxYjUyYjVhMGU4NzExOGY0MzU2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbi5tbQpAQCAtMTEyLDcgKzExMiw2IEBAIC0gKGluc3RhbmNldHlwZSlpbml0CiAg
ICAgX2FsbG93c0lubGluZU1lZGlhUGxheWJhY2sgPSBXS0dldERldmljZUNsYXNzKCkgPT0gV0tE
ZXZpY2VDbGFzc2lQYWQ7CiAgICAgX2lubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5s
aW5lQXR0cmlidXRlID0gIV9hbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrOwogICAgIF9tZWRpYURh
dGFMb2Fkc0F1dG9tYXRpY2FsbHkgPSBOTzsKLSAgICBfY2FuQXNzaXN0T25Qcm9ncmFtbWF0aWNG
b2N1cyA9IE5POwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KQpAQCAtMzY1LDE2ICszNjQsNiBAQCAtICh2b2lkKV9zZXRNZWRpYURhdGFMb2Fkc0F1dG9tYXRp
Y2FsbHk6KEJPT0wpbWVkaWFEYXRhTG9hZHNBdXRvbWF0aWNhbGx5CiB7CiAgICAgX21lZGlhRGF0
YUxvYWRzQXV0b21hdGljYWxseSA9IG1lZGlhRGF0YUxvYWRzQXV0b21hdGljYWxseTsKIH0KLQot
LSAoQk9PTClfY2FuQXNzaXN0T25Qcm9ncmFtbWF0aWNGb2N1cwotewotICAgIHJldHVybiBfY2Fu
QXNzaXN0T25Qcm9ncmFtbWF0aWNGb2N1czsKLX0KLQotLSAodm9pZClfc2V0Q2FuQXNzaXN0T25Q
cm9ncmFtbWF0aWNGb2N1czooQk9PTCljYW5Bc3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzCi17Ci0g
ICAgX2NhbkFzc2lzdE9uUHJvZ3JhbW1hdGljRm9jdXMgPSBjYW5Bc3Npc3RPblByb2dyYW1tYXRp
Y0ZvY3VzOwotfQogI2VuZGlmCiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggYTFlYWNkNTFkMDgzZDgx
OGZlOGY1Y2U1ZTdmYWFiOTQwYzU2YzBmZS4uYWY0ODNmMzQ5MTc1NTk4NzMzMWUzYWI3NDdiYjM0
NmM5NjBjMGQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTQ3LDcgKzQ3LDYgQEAgdHlwZWRlZiBOU19FTlVN
KE5TSW50ZWdlciwgX1dLUGFnaW5hdGlvbk1vZGUpIHsKIEBwcm90b2NvbCBXS0hpc3RvcnlEZWxl
Z2F0ZVByaXZhdGU7CiBAcHJvdG9jb2wgX1dLRGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZTsKIEBw
cm90b2NvbCBfV0tGaW5kRGVsZWdhdGU7Ci1AcHJvdG9jb2wgX1dLRm9ybURlbGVnYXRlOwogCiBA
aW50ZXJmYWNlIFdLV2ViVmlldyAoV0tQcml2YXRlKQogCkBAIC0xOTgsOCArMTk3LDYgQEAgdHlw
ZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLUGFnaW5hdGlvbk1vZGUpIHsKIC0gKHZvaWQpX2Nv
dW50U3RyaW5nTWF0Y2hlczooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9uczooX1dLRmluZE9wdGlv
bnMpb3B0aW9ucyBtYXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudDsKIC0gKHZvaWQpX2hpZGVG
aW5kVUk7CiAKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldEZvcm1EZWxl
Z2F0ZTopIGlkIDxfV0tGb3JtRGVsZWdhdGU+IF9mb3JtRGVsZWdhdGU7Ci0KIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSwgZ2V0dGVyPV9pc0Rpc3BsYXlpbmdTdGFuZGFsb25lSW1hZ2VE
b2N1bWVudCkgQk9PTCBfZGlzcGxheWluZ1N0YW5kYWxvbmVJbWFnZURvY3VtZW50OwogQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXI9X2lzRGlzcGxheWluZ1N0YW5kYWxvbmVN
ZWRpYURvY3VtZW50KSBCT09MIF9kaXNwbGF5aW5nU3RhbmRhbG9uZU1lZGlhRG9jdW1lbnQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRm9ybURl
bGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Zvcm1EZWxl
Z2F0ZS5oCmluZGV4IDdlYWZjZjg1MDU4MDEyYzlhNTAxYzFjNTFjZmMxMGI2YWEwYTM0NjEuLmI1
ZTAzNDIxMjc5ODIxNmRkNjg2NTYyOTg3NzUxOTdjOGJkOGNiYWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRm9ybURlbGVnYXRlLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tGb3JtRGVsZWdhdGUuaApAQCAtMjgs
MjMgKzI4LDI2IEBACiAjaWYgV0tfQVBJX0VOQUJMRUQKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9G
b3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tGb3JtRGVsZWdhdGUuaD4KKworV0tfQVNT
VU1FX05PTk5VTExfQkVHSU4KIAogQGNsYXNzIFdLV2ViVmlldzsKIEBwcm90b2NvbCBfV0tGb3Jt
SW5wdXRTZXNzaW9uOwogCi1AcHJvdG9jb2wgX1dLRm9ybURlbGVnYXRlIDxOU09iamVjdD4KK0Bw
cm90b2NvbCBfV0tGb3JtRGVsZWdhdGUgPFdLRm9ybURlbGVnYXRlPgogCiBAb3B0aW9uYWwKIAot
LSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRTdGFydElucHV0U2Vzc2lv
bjooaWQgPF9XS0Zvcm1JbnB1dFNlc3Npb24+KWlucHV0U2Vzc2lvbjsKIC0gKHZvaWQpX3dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgd2lsbFN1Ym1pdEZvcm1WYWx1ZXM6KE5TRGljdGlvbmFy
eSAqKXZhbHVlcyB1c2VyT2JqZWN0OihOU09iamVjdCA8TlNTZWN1cmVDb2Rpbmc+ICopdXNlck9i
amVjdCBzdWJtaXNzaW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpc3VibWlzc2lvbkhhbmRsZXI7
CiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCi0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IGFjY2Vzc29yeVZpZXdDdXN0b21CdXR0b25UYXBwZWRJbkZvcm1JbnB1dFNlc3Npb246
KGlkIDxfV0tGb3JtSW5wdXRTZXNzaW9uPilpbnB1dFNlc3Npb247CiAtIChCT09MKV93ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGhhc1N1Z2dlc3Rpb25zRm9yQ3VycmVudFN0cmluZ0luSW5w
dXRTZXNzaW9uOihpZCA8X1dLRm9ybUlucHV0U2Vzc2lvbj4paW5wdXRTZXNzaW9uOwogLSAoTlNB
cnJheSAqKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN1Z2dlc3Rpb25zRm9yU3RyaW5n
OihOU1N0cmluZyAqKXN0cmluZyBpbklucHV0U2Vzc2lvbjooaWQgPF9XS0Zvcm1JbnB1dFNlc3Np
b24+KWlucHV0U2Vzc2lvbjsKICNlbmRpZgogCiBAZW5kCiAKK1dLX0FTU1VNRV9OT05OVUxMX0VO
RAorCiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRm9ybUlucHV0U2Vzc2lvbi5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tGb3JtSW5wdXRTZXNzaW9uLmgKaW5kZXggNWQwMjdm
OWM5N2JhNjA0YTQ1YjE2ZjY2MzI2NWFkMDJjODA0YjRkZi4uY2NkNTZhMGVmODEyN2FmNWFlZDJm
OTZiNGJkMTA0YmE2NDY0OGMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tGb3JtSW5wdXRTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tGb3JtSW5wdXRTZXNzaW9uLmgKQEAgLTI4LDE2ICsyOCwxMiBA
QAogI2lmIFdLX0FQSV9FTkFCTEVECiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
PgorI2ltcG9ydCA8V2ViS2l0L1dLRm9ybUlucHV0U2Vzc2lvbi5oPgogCi1AcHJvdG9jb2wgX1dL
Rm9ybUlucHV0U2Vzc2lvbiA8TlNPYmplY3Q+CitAcHJvdG9jb2wgX1dLRm9ybUlucHV0U2Vzc2lv
biA8V0tGb3JtSW5wdXRTZXNzaW9uPgogCi1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHks
IGdldHRlcj1pc1ZhbGlkKSBCT09MIHZhbGlkOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5KSBOU09iamVjdCA8TlNTZWN1cmVDb2Rpbmc+ICp1c2VyT2JqZWN0OwogCi0jaWYgVEFSR0VU
X09TX0lQSE9ORQotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICphY2Nlc3Nv
cnlWaWV3Q3VzdG9tQnV0dG9uVGl0bGU7Ci0jZW5kaWYKLQogQGVuZAogCiAjZW5kaWYgLy8gV0tf
QVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggYjg2ODYyZTAzMTM1NmYxZGQ3NDhjNjFh
MDk2N2VmNWI2ODA0MjFkYi4uOWVhMmM5MjRmZTVmMDM0NzBlYjc5N2VjNDIyNjlkYmIwNjE0N2Y5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTM5LDYgKzM5LDcgQEAKICNpbXBvcnQgIlRleHRJbnB1
dFNQSS5oIgogI2ltcG9ydCAiVUlLaXRTUEkuaCIKICNpbXBvcnQgIldLQWN0aW9uU2hlZXRBc3Np
c3RhbnQuaCIKKyNpbXBvcnQgIldLRm9ybURlbGVnYXRlLmgiCiAjaW1wb3J0ICJXS0Zvcm1JbnB1
dENvbnRyb2wuaCIKICNpbXBvcnQgIldLRm9ybVNlbGVjdENvbnRyb2wuaCIKICNpbXBvcnQgIldL
SW1hZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIuaCIKQEAgLTUzLDcgKzU0LDYgQEAKICNpbXBvcnQg
IldlYlBhZ2VNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0
ICJfV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0ludGVybmFsLmgiCi0jaW1wb3J0ICJfV0tGb3JtRGVs
ZWdhdGUuaCIKICNpbXBvcnQgIl9XS0Zvcm1JbnB1dFNlc3Npb24uaCIKICNpbXBvcnQgPENvcmVU
ZXh0L0NURm9udC5oPgogI2ltcG9ydCA8Q29yZVRleHQvQ1RGb250RGVzY3JpcHRvci5oPgpAQCAt
MjI0Myw5ICsyMjQzLDkgQEAgLSAodm9pZClfYmVjb21lRmlyc3RSZXNwb25kZXJXaXRoU2VsZWN0
aW9uTW92aW5nRm9yd2FyZDooQk9PTClzZWxlY3RpbmdGb3J3YXJkIGMKIAogLSAodm9pZClhY2Nl
c3NvcnlBdXRvRmlsbAogewotICAgIGlkIDxfV0tGb3JtRGVsZWdhdGU+IGZvcm1EZWxlZ2F0ZSA9
IFtfd2ViVmlldyBfZm9ybURlbGVnYXRlXTsKLSAgICBpZiAoW2Zvcm1EZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmFjY2Vzc29yeVZpZXdDdXN0b21CdXR0b25U
YXBwZWRJbkZvcm1JbnB1dFNlc3Npb246KV0pCi0gICAgICAgIFtmb3JtRGVsZWdhdGUgX3dlYlZp
ZXc6X3dlYlZpZXcgYWNjZXNzb3J5Vmlld0N1c3RvbUJ1dHRvblRhcHBlZEluRm9ybUlucHV0U2Vz
c2lvbjpfZm9ybUlucHV0U2Vzc2lvbi5nZXQoKV07CisgICAgaWQgPFdLRm9ybURlbGVnYXRlPiBm
b3JtRGVsZWdhdGUgPSBbX3dlYlZpZXcgZm9ybURlbGVnYXRlXTsKKyAgICBpZiAoW2Zvcm1EZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6YWNjZXNzb3J5Vmlld0N1
c3RvbUJ1dHRvblRhcHBlZEluRm9ybUlucHV0U2Vzc2lvbjopXSkKKyAgICAgICAgW2Zvcm1EZWxl
Z2F0ZSB3ZWJWaWV3Ol93ZWJWaWV3IGFjY2Vzc29yeVZpZXdDdXN0b21CdXR0b25UYXBwZWRJbkZv
cm1JbnB1dFNlc3Npb246X2Zvcm1JbnB1dFNlc3Npb24uZ2V0KCldOwogfQogCiAtICh2b2lkKWFj
Y2Vzc29yeUNsZWFyCkBAIC0zMDEzLDkgKzMwMTMsMTUgQEAgc3RhdGljIGJvb2wgaXNBc3Npc3Rh
YmxlSW5wdXRUeXBlKElucHV0VHlwZSB0eXBlKQogCiAtICh2b2lkKV9zdGFydEFzc2lzdGluZ05v
ZGU6KGNvbnN0IEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uJilpbmZvcm1hdGlvbiB1c2VySXNJbnRl
cmFjdGluZzooQk9PTCl1c2VySXNJbnRlcmFjdGluZyBibHVyUHJldmlvdXNOb2RlOihCT09MKWJs
dXJQcmV2aW91c05vZGUgdXNlck9iamVjdDooTlNPYmplY3QgPE5TU2VjdXJlQ29kaW5nPiAqKXVz
ZXJPYmplY3QKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHRlbXBvcmFyeSB3b3JrYXJvdW5k
IGZvciA8cmRhcjovL3Byb2JsZW0vMjIxMjY1MTg+LiBUaGUgcmVhbCBmaXggd2lsbCBpbnZvbHZl
IHJlZmFjdG9yaW5nCi0gICAgLy8gdGhlIHdheSB3ZSBhc3Npc3QgcHJvZ3JhbW1hdGljYWxseSBm
b2N1c2VkIG5vZGVzLgotICAgIGlmICghdXNlcklzSW50ZXJhY3RpbmcgJiYgIV90ZXh0U2VsZWN0
aW9uQXNzaXN0YW50ICYmICFfd2ViVmlldy5jYW5Bc3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzKQor
ICAgIGlkIDxXS0Zvcm1EZWxlZ2F0ZT4gZm9ybURlbGVnYXRlID0gW193ZWJWaWV3IGZvcm1EZWxl
Z2F0ZV07CisgICAgQk9PTCBzaG91bGRTaG93S2V5Ym9hcmQ7CisgICAgaWYgKFtmb3JtRGVsZWdh
dGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OnNob3VsZFNob3dLZXlib2Fy
ZDopXSkKKyAgICAgICAgc2hvdWxkU2hvd0tleWJvYXJkID0gW2Zvcm1EZWxlZ2F0ZSB3ZWJWaWV3
Ol93ZWJWaWV3IHNob3VsZFNob3dLZXlib2FyZDp1c2VySXNJbnRlcmFjdGluZ107CisgICAgZWxz
ZSB7CisgICAgICAgIC8vIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGlzIHRvIGFsbG93IG5vZGUgYXNz
aXN0YW5jZSBpZiB0aGUgdXNlciBpcyBpbnRlcmFjdGluZyBvciB0aGUga2V5Ym9hcmQgaXMgYWxy
ZWFkeSBhY3RpdmUuCisgICAgICAgIHNob3VsZFNob3dLZXlib2FyZCA9IHVzZXJJc0ludGVyYWN0
aW5nIHx8IF90ZXh0U2VsZWN0aW9uQXNzaXN0YW50OworICAgIH0KKyAgICBpZiAoIXNob3VsZFNo
b3dLZXlib2FyZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGJsdXJQcmV2aW91c05vZGUp
CkBAIC0zMDU4LDEwICszMDY0LDkgQEAgLSAodm9pZClfc3RhcnRBc3Npc3RpbmdOb2RlOihjb25z
dCBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiYpaW5mb3JtYXRpb24gdXNlcklzSW4KICAgICAvLyBf
aW5wdXRQZXJpcGhlcmFsIGhhcyBiZWVuIGluaXRpYWxpemVkIGluIGlucHV0VmlldyBjYWxsZWQg
YnkgcmVsb2FkSW5wdXRWaWV3cy4KICAgICBbX2lucHV0UGVyaXBoZXJhbCBiZWdpbkVkaXRpbmdd
OwogCi0gICAgaWQgPF9XS0Zvcm1EZWxlZ2F0ZT4gZm9ybURlbGVnYXRlID0gW193ZWJWaWV3IF9m
b3JtRGVsZWdhdGVdOwotICAgIGlmIChbZm9ybURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoX3dlYlZpZXc6ZGlkU3RhcnRJbnB1dFNlc3Npb246KV0pIHsKKyAgICBpZiAoW2Zv
cm1EZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6ZGlkU3RhcnRJ
bnB1dFNlc3Npb246KV0pIHsKICAgICAgICAgX2Zvcm1JbnB1dFNlc3Npb24gPSBhZG9wdE5TKFtb
V0tGb3JtSW5wdXRTZXNzaW9uIGFsbG9jXSBpbml0V2l0aENvbnRlbnRWaWV3OnNlbGYgdXNlck9i
amVjdDp1c2VyT2JqZWN0XSk7Ci0gICAgICAgIFtmb3JtRGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZp
ZXcgZGlkU3RhcnRJbnB1dFNlc3Npb246X2Zvcm1JbnB1dFNlc3Npb24uZ2V0KCldOworICAgICAg
ICBbZm9ybURlbGVnYXRlIHdlYlZpZXc6X3dlYlZpZXcgZGlkU3RhcnRJbnB1dFNlc3Npb246X2Zv
cm1JbnB1dFNlc3Npb24uZ2V0KCldOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE0NjkyNTMyZmMyYWJmZGQ1
YzYxMWFjYTI1OTBlYTk1OThkMGI3ZTEuLmVmMjE0NGVlYTYzMWEyZjU4MmI2MmRhNWM1NzIxNmIz
YjI0ZmM4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTY4Niw2ICs2ODYsMTAgQEAKIAkJMkRGOUVFRTgxQTc4MjQ1NTAwQjZD
RkJFIC8qIFdLRnJhbWVJbmZvSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJERjlFRUU3MUE3ODI0NTUwMEI2Q0ZCRSAvKiBXS0ZyYW1lSW5m
b0ludGVybmFsLmggKi87IH07CiAJCTJERjlFRUVDMUE3ODM2RUUwMEI2Q0ZCRSAvKiBBUElOYXZp
Z2F0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyREY5RUVFQTFBNzgzNkVFMDBCNkNGQkUgLyogQVBJTmF2aWdhdGlvbkFjdGlvbi5oICov
OyB9OwogCQkyREY5RUVFRTFBNzg2RUFEMDBCNkNGQkUgLyogQVBJTmF2aWdhdGlvblJlc3BvbnNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREY5RUVF
RDFBNzg2RUFEMDBCNkNGQkUgLyogQVBJTmF2aWdhdGlvblJlc3BvbnNlLmggKi87IH07CisJCTJF
NDBBRUMzMUJCQTE1NzEwMEYxNjk4OSAvKiBXS0Zvcm1EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MEFFQzExQkJBMTJFODAwRjE2OTg5
IC8qIFdLRm9ybURlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGlj
LCApOyB9OyB9OworCQkyRUJDNjcwMjFCQkFGMzFGMDA0ODVDQUIgLyogV0tGb3JtSW5wdXRTZXNz
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRUJD
NjcwMTFCQkFGMkRDMDA0ODVDQUIgLyogV0tGb3JtSW5wdXRTZXNzaW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQkyRUJDNjcwNDFCQkIwNEUxMDA0
ODVDQUIgLyogRm9ybURlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRUJDNjcwMzFCQkIwNEREMDA0ODVDQUIgLyogRm9ybURlbGVnYXRlLmgg
Ki87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJMkVCQzY3MDcxQkJCMDVD
MjAwNDg1Q0FCIC8qIEZvcm1EZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJFQkM2NzA1MUJCQjA1QUIwMDQ4NUNBQiAvKiBGb3JtRGVsZWdh
dGUubW0gKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKIAkJMzEwOTk5NzMx
NDZDNzVBMjAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTA5OTk3MTE0NkM3NTlCMDAyOURF
QjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcCAqLzsgfTsKIAkJMzEwOTk5QzcxNDZDOUUz
RDAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwOTk5NjgxNDZDNzFGNTAwMjlERUI5IC8qIFdl
Yk5vdGlmaWNhdGlvbkNsaWVudC5oICovOyB9OwogCQkzMTJDMEM0QTE0NkREQzhBMDAxNkM5MTEg
LyogV0tOb3RpZmljYXRpb25Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzEyQzBDNDkxNDZEREM4QTAwMTZDOTExIC8qIFdLTm90aWZpY2F0
aW9uUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMjgzNSw2ICsyODM5LDEwIEBACiAJCTJERjlFRUU3MUE3ODI0NTUwMEI2Q0ZCRSAv
KiBXS0ZyYW1lSW5mb0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLRnJhbWVJbmZvSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRG
OUVFRUExQTc4MzZFRTAwQjZDRkJFIC8qIEFQSU5hdmlnYXRpb25BY3Rpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJTmF2aWdhdGlvbkFjdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyREY5RUVFRDFBNzg2RUFEMDBCNkNGQkUgLyogQVBJTmF2aWdh
dGlvblJlc3BvbnNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSU5hdmln
YXRpb25SZXNwb25zZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRTQwQUVDMTFC
QkExMkU4MDBGMTY5ODkgLyogV0tGb3JtRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tGb3Jt
RGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkVCQzY3MDExQkJBRjJE
QzAwNDg1Q0FCIC8qIFdLRm9ybUlucHV0U2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Zvcm1J
bnB1dFNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkVCQzY3MDMxQkJC
MDRERDAwNDg1Q0FCIC8qIEZvcm1EZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JtRGVsZWdh
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkVCQzY3MDUxQkJCMDVBQjAwNDg1
Q0FCIC8qIEZvcm1EZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEZvcm1EZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEw
OTk5NjgxNDZDNzFGNTAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJOb3RpZmljYXRpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzEwOTk5NzExNDZDNzU5QjAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJOb3RpZmljYXRpb25D
bGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTJDMEM0OTE0NkREQzhB
MDAxNkM5MTEgLyogV0tOb3RpZmljYXRpb25Qcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS05vdGlmaWNhdGlvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC01Mzk0LDYgKzU0MDIsMTAgQEAKIAkJCQkxQUQ2MEY1QzE4RTIwRjRDMDAy
MEMwMzQgLyogV0tXaW5kb3dGZWF0dXJlcy5oICovLAogCQkJCTFBRDYwRjVCMThFMjBGNEMwMDIw
QzAzNCAvKiBXS1dpbmRvd0ZlYXR1cmVzLm1tICovLAogCQkJCTFBRDYwRjVGMThFMjBGNzQwMDIw
QzAzNCAvKiBXS1dpbmRvd0ZlYXR1cmVzSW50ZXJuYWwuaCAqLywKKwkJCQkyRTQwQUVDMTFCQkEx
MkU4MDBGMTY5ODkgLyogV0tGb3JtRGVsZWdhdGUuaCAqLywKKwkJCQkyRUJDNjcwMTFCQkFGMkRD
MDA0ODVDQUIgLyogV0tGb3JtSW5wdXRTZXNzaW9uLmggKi8sCisJCQkJMkVCQzY3MDMxQkJCMDRE
RDAwNDg1Q0FCIC8qIEZvcm1EZWxlZ2F0ZS5oICovLAorCQkJCTJFQkM2NzA1MUJCQjA1QUIwMDQ4
NUNBQiAvKiBGb3JtRGVsZWdhdGUubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IENvY29hOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTc3ODgsNiArNzgwMCw3IEBACiAJCQkJMUFDNUZG
QzIxNzRCRkQxQjAwMDE0ODNEIC8qIFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTBFQzkwNjEyNEMwQUI4MDA3RUY0QTUgLyogUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMEVDOTBGMTI0QzBBRjUwMDdFRjRBNSAvKiBQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTJFQkM2
NzA0MUJCQjA0RTEwMDQ4NUNBQiAvKiBGb3JtRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBNzg2NUJBMTZDQUM3MTUwMEFDRTgzQSAvKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFn
ZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyQkI2RDExNDExN0I0RDAwMEYzNUQ0
IC8qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBMkQ5MEQyMTI4MUM5NjYwMDFFQjk2MiAvKiBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmggaW4gSGVhZGVycyAqLywKQEAgLTc4OTQsNiArNzkwNyw3IEBACiAJCQkJQkM3MkJBMUUx
MUU2NDkwNzAwMUVCNEVBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTE4RDJDQUUxMkQ1MTUzQjAwM0JCOTNCIC8qIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBp
biBIZWFkZXJzICovLAogCQkJCUJDNzJCOUZCMTFFNjQ3NkIwMDFFQjRFQSAvKiBXZWJCYWNrRm9y
d2FyZExpc3RQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkU0MEFFQzMxQkJBMTU3MTAwRjE2
OTg5IC8qIFdLRm9ybURlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Y1MDcyODEyNDMy
OUFBMDA1OTU1QUUgLyogV2ViQ2VydGlmaWNhdGVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzAzMkQ3NTEwRjQzNzhEMDA1OEMxNUEgLyogV2ViQ2hyb21lQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQkzRjg3QjlCRTE1ODk0MDE5MDA5MEZGNjIgLyogV2ViQ29sb3JDaG9vc2VyLmggaW4g
SGVhZGVycyAqLywKQEAgLTc5MTksNiArNzkzMyw3IEBACiAJCQkJMzMwOTM0NDgxMzE1QjkyMjAw
OTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MzMwOTM0NTYxMzE1Qjk3NTAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJQcm94eS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMzNBQTEwNjcxMzFGMDYwMDAwRDRBNTc1IC8qIFdlYkNvb2tpZU1hbmFn
ZXJQcm94eUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkVCQzY3MDIxQkJBRjMxRjAwNDg1
Q0FCIC8qIFdLRm9ybUlucHV0U2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzMwOTM0NEEx
MzE1QjkyMjAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzFERDdCMjExNERDMzk2MDA1QURBRjMgLyogV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJGNTg5QjEyQTg4Mzg4MDA2Mjk1MzAgLyog
V2ViQ3JlZGVudGlhbC5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDMwLDYgKzk0NDUsNyBAQAogCQkJ
CTUxN0RENUM1MTgwREMzRTEwMDgxNjYwQiAvKiBEYXRhYmFzZVByb2Nlc3NQcm94eU1hYy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTUxMkE5NzY5MTgwRTA5QjgwMDM5QTE0OSAvKiBEYXRhYmFzZVBy
b2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUUzNTIw
OTE4MEY1RDZCMDBFNTNCRTkgLyogRGF0YWJhc2VTZXJ2aWNlRW50cnlQb2ludC5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCTJFQkM2NzA3MUJCQjA1QzIwMDQ4NUNBQiAvKiBGb3JtRGVsZWdhdGUubW0g
aW4gU291cmNlcyAqLywKIAkJCQk1MUUzNTIwMDE4MEY1RDBGMDBFNTNCRTkgLyogRGF0YWJhc2VU
b1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMDMyRjFEMTgw
Rjc5MTcwMDk2MUJCNyAvKiBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFDNzUzN0YxODNCRTUwRjAwNzJDQjE1IC8q
IERhdGFSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262165</attachid>
            <date>2015-09-30 08:52:13 -0700</date>
            <delta_ts>2015-09-30 09:50:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149646-20150930085148.patch</filename>
            <type>text/plain</type>
            <size>37772</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDg4NzVmMDBlMGUxNTdk
YTE4ZDBhNWEzOTMyYTFjNGU4NzVkZTA3MS4uMjg4YjE2MjZiMWZjMTNiN2YyODE5NzQ5NmFkNjI2
ODY2NzcxZTM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE1LTA5LTI5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIFdLV2Vi
VmlldyBmb3JtIGRlbGVnYXRlIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5NjQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIGEgZGVsZWdhdGUgQVBJIHRoYXQgYWxsb3dzIFdlYktpdCBjbGll
bnRzIHRvIG1hbmlwdWxhdGUgYW4gaW5wdXQgc2Vzc2lvbiwgc3VjaCBhcyBiZWluZyBhYmxlIHRv
IG92ZXJyaWRlCisgICAgICAgIHByZXZlbnRpbmcgdGhlIGtleWJvYXJkIGZyb20gYmVpbmcgcmFp
c2VkIHdoZW4gYSBmaWVsZCBpcyBwcm9ncmFtbWF0aWNhbGx5IGZvY3VzZWQuIFRoaXMgbmV3IGRl
bGVnYXRlIHdhcworICAgICAgICBhZGFwdGVkIGZyb20gdGhlIGV4aXN0aW5nIHByaXZhdGUgX1dL
Rm9ybURlbGVnYXRlLiBUaGlzIHBhdGNoIG1vdmVzIHBhcnQgb2YgX1dLRm9ybURlbGVnYXRlIGlu
dG8gdGhlIG5ldworICAgICAgICBwdWJsaWMgZGVsZWdhdGUuIFRoaXMgYWxzbyBtb3ZlcyB0aGUg
cHVibGljIGNvbXBvbmVudHMgb2YgdGhlIGFjY29tcGFueWluZyBfV0tGb3JtSW5wdXRTZXNzaW9u
IGludG8KKyAgICAgICAgV0tGb3JtSW5wdXRTZXNzaW9uLiBGb3IgV0tXZWJWaWV3LCB0aGlzIGFs
c28gcmVuYW1lcyB0aGUgcHJpdmF0ZSBfZm9ybURlbGVnYXRlIHRvIGZvcm1EZWxlZ2F0ZS4KKwor
ICAgICAgICBBZGRpdGlvbmFsbHksIHJlbW92ZXMgdGhlIGNhbkFzc2lzdE9uUHJvZ3JhbW1hdGlj
Rm9jdXMgZmxhZyBjb21taXR0ZWQgaW4gcjE5MDI3OC4KKworICAgICAgICAqIFNoYXJlZC9BUEkv
Q29jb2EvV2ViS2l0Lmg6IEFkZGVkIHRoZSBXS0Zvcm1EZWxlZ2F0ZSBoZWFkZXIuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Zvcm1EZWxlZ2F0ZS5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Zvcm1EZWxlZ2F0ZS5oLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGb3JtRGVsZWdhdGUubW06IEFkZGVkLgorICAgICAg
ICAoLVtXS0ZvY3VzZWRFbGVtZW50Q29udGV4dCBpbml0V2l0aElucHV0VHlwZTppbnB1dFZhbHVl
OmlzSW50ZXJhY3Rpbmc6aGFzUHJldmlvdXNOb2RlOmhhc05leHROb2RlOl0pOgorICAgICAgICAg
ICAgSW5pdGlhbGl6ZXMgYSBmb2N1c2VkIGZvcm0gZWxlbWVudCBjb250ZXh0LCBhIHB1YmxpYyBv
YmplY3Qgd2hpY2ggdGhlIFdlYktpdCBjbGllbnQgY2FuIHVzZSB0byBkZXRlcm1pbmUKKyAgICAg
ICAgICAgIHdoZXRoZXIgYW4gaW5wdXQgc2Vzc2lvbiBzaG91bGQgYmUgdHJpZ2dlcmVkIGJ5IGZv
Y3VzaW5nIHRoaXMgZWxlbWVudC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRm9y
bUlucHV0U2Vzc2lvbi5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0Zvcm1JbnB1dFNlc3Npb24uaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgZm9ybURlbGVnYXRlXSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBzZXRGb3JtRGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBpbml0V2l0
aEZyYW1lOmNvbmZpZ3VyYXRpb246XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBj
YW5Bc3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2Vi
VmlldyBzZXRDYW5Bc3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzOl0pOiBEZWxldGVkLgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX2Zvcm1EZWxlZ2F0ZV0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1dl
YlZpZXcgX3NldEZvcm1EZWxlZ2F0ZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gaW5pdF0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIF9jYW5Bc3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzXSk6IERlbGV0ZWQuCisgICAg
ICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3NldENhbkFzc2lzdE9uUHJvZ3JhbW1hdGlj
Rm9jdXM6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tGb3JtRGVsZWdh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0Zvcm1JbnB1dFNlc3Npb24u
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBhY2Nlc3NvcnlBdXRvRmlsbF0pOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IF9zdGFydEFzc2lzdGluZ05vZGU6dXNlcklzSW50ZXJhY3Rpbmc6Ymx1
clByZXZpb3VzTm9kZTp1c2VyT2JqZWN0Ol0pOiAgRGVmZXJzIG5vZGUgYXNzaXN0YW5jZQorICAg
ICAgICAgICAgYmVoYXZpb3IgdG8gdGhlIGZvcm0gZGVsZWdhdGUgaWYgYXBwbGljYWJsZSwgb3Ro
ZXJ3aXNlIHVzZXMgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2Ygb25seSBhc3Npc3RpbmcgdXBvbgor
ICAgICAgICAgICAgdXNlciBpbnRlcmFjdGlvbi4KKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTUtMDktMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBNZW1vcnkgY2FjaGUgcmV2YWxpZGF0aW9ucyBzaG91bGQgcmVm
cmVzaCB0aGUgbmV0d29yayBkaXNrIGNhY2hlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL0NvY29hL1dlYktpdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2Nv
YS9XZWJLaXQuaAppbmRleCBjM2Q3ZjE1NDE1ZjA1N2E4MTVhYTRiNjkwMjAyOWUyYmE2ZDE1MzI1
Li4zNDFhZWUzN2NhYzg5OTZkZjE2MjBjZGE5Y2JhNjA2OTY0NGI4OTBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dlYktpdC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQg
PFdlYktpdC9XS0JhY2tGb3J3YXJkTGlzdC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLQmFja0Zvcndh
cmRMaXN0SXRlbS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRXJyb3IuaD4KKyNpbXBvcnQgPFdlYktp
dC9XS0Zvcm1EZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLRnJhbWVJbmZvLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9u
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRm9y
bURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRm9ybURl
bGVnYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDNjZGQzNzllNjgwZWZiNzk1MDk3MTk2NGYxZmZmY2MyNTYx
ODhkMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tGb3JtRGVsZWdhdGUuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9y
dCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tGb3JtSW5wdXRT
ZXNzaW9uLmg+CisKK0BpbnRlcmZhY2UgV0tGb2N1c2VkRWxlbWVudENvbnRleHQgOiBOU09iamVj
dAorCistIChpZClpbml0V2l0aElucHV0VHlwZToodW5zaWduZWQpcmF3SW5wdXRUeXBlIGlucHV0
VmFsdWU6KE5TU3RyaW5nKil2YWx1ZSBpc0ludGVyYWN0aW5nOihCT09MKXVzZXJJc0ludGVyYWN0
aW5nIGhhc1ByZXZpb3VzTm9kZTooQk9PTCloYXNQcmV2aW91c05vZGUgaGFzTmV4dE5vZGU6KEJP
T0wpaGFzTmV4dE5vZGU7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkg
TlNTdHJpbmcqIGlucHV0VHlwZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29w
eSkgTlNTdHJpbmcqIGlucHV0VmFsdWU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkp
IEJPT0wgdXNlcklzSW50ZXJhY3Rpbmc7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkp
IEJPT0wgaGFzTmV4dE5vZGU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wg
aGFzUHJldmlvdXNOb2RlOworCitAZW5kCisKK0BjbGFzcyBXS1dlYlZpZXc7CisKK0Bwcm90b2Nv
bCBXS0Zvcm1EZWxlZ2F0ZSA8TlNPYmplY3Q+CisKK0BvcHRpb25hbAorCistICh2b2lkKXdlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkU3RhcnRJbnB1dFNlc3Npb246KGlkIDxXS0Zvcm1J
bnB1dFNlc3Npb24+KWlucHV0U2Vzc2lvbiBXS19BVkFJTEFCTEUoMTBfMTEsIDlfMCk7CisKKyNp
ZiBUQVJHRVRfT1NfSVBIT05FCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
YWNjZXNzb3J5Vmlld0N1c3RvbUJ1dHRvblRhcHBlZEluRm9ybUlucHV0U2Vzc2lvbjooaWQgPFdL
Rm9ybUlucHV0U2Vzc2lvbj4paW5wdXRTZXNzaW9uIFdLX0FWQUlMQUJMRSgxMF8xMSwgOV8wKTsK
Ky0gKEJPT0wpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzaG91bGRTaG93S2V5Ym9hcmRJ
bkNvbnRleHQ6KFdLRm9jdXNlZEVsZW1lbnRDb250ZXh0Kiljb250ZXh0IFdLX0FWQUlMQUJMRSgx
MF8xMSwgOV8wKTsKKyNlbmRpZgorCitAZW5kCisKKyNlbmRpZiAvKiBXS19BUElfRU5BQkxFRCAq
LwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Zvcm1E
ZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGb3JtRGVs
ZWdhdGUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjU1YTJlMzhhNDk4Mjk0YmRjYWZmNmJjMTY0MTIzMDEyZjQ3
ODBiNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tGb3JtRGVsZWdhdGUubW0KQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldLRm9ybURlbGVnYXRlLmgiCisKKyNpbXBvcnQgPFdl
YktpdC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oPgorCitAaW1wbGVtZW50YXRpb24gV0tGb2N1
c2VkRWxlbWVudENvbnRleHQKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSW5wdXRUeXBlOih1
bnNpZ25lZClyYXdJbnB1dFR5cGUgaW5wdXRWYWx1ZTooTlNTdHJpbmcqKXZhbHVlIGlzSW50ZXJh
Y3Rpbmc6KEJPT0wpdXNlcklzSW50ZXJhY3RpbmcgaGFzUHJldmlvdXNOb2RlOihCT09MKWhhc1By
ZXZpb3VzTm9kZSBoYXNOZXh0Tm9kZTooQk9PTCloYXNOZXh0Tm9kZQoreworICAgIF9pbnB1dFZh
bHVlID0gdmFsdWU7CisgICAgX3VzZXJJc0ludGVyYWN0aW5nID0gdXNlcklzSW50ZXJhY3Rpbmc7
CisgICAgX2hhc05leHROb2RlID0gaGFzTmV4dE5vZGU7CisgICAgX2hhc1ByZXZpb3VzTm9kZSA9
IGhhc1ByZXZpb3VzTm9kZTsKKworICAgIFdlYktpdDo6SW5wdXRUeXBlIGlucHV0VHlwZSA9IChX
ZWJLaXQ6OklucHV0VHlwZSkgcmF3SW5wdXRUeXBlOworICAgIHN3aXRjaCAoaW5wdXRUeXBlKSB7
CisgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6Q29udGVudEVkaXRhYmxlOgorICAgICAgICBf
aW5wdXRUeXBlID0gQCJDb250ZW50RWRpdGFibGUiOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFdlYktpdDo6SW5wdXRUeXBlOjpUZXh0OgorICAgICAgICBfaW5wdXRUeXBlID0gQCJUZXh0IjsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6UGFzc3dvcmQ6Cisg
ICAgICAgIF9pbnB1dFR5cGUgPSBAIlBhc3N3b3JkIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBXZWJLaXQ6OklucHV0VHlwZTo6VGV4dEFyZWE6CisgICAgICAgIF9pbnB1dFR5cGUgPSBAIlRl
eHRBcmVhIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6U2Vh
cmNoOgorICAgICAgICBfaW5wdXRUeXBlID0gQCJTZWFyY2giOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpFbWFpbDoKKyAgICAgICAgX2lucHV0VHlwZSA9IEAi
RW1haWwiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpVUkw6
CisgICAgICAgIF9pbnB1dFR5cGUgPSBAIlVSTCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
V2ViS2l0OjpJbnB1dFR5cGU6OlBob25lOgorICAgICAgICBfaW5wdXRUeXBlID0gQCJQaG9uZSI7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6Ok51bWJlcjoKKyAg
ICAgICAgX2lucHV0VHlwZSA9IEAiTnVtYmVyIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBX
ZWJLaXQ6OklucHV0VHlwZTo6TnVtYmVyUGFkOgorICAgICAgICBfaW5wdXRUeXBlID0gQCJOdW1i
ZXJQYWQiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRl
OgorICAgICAgICBfaW5wdXRUeXBlID0gQCJEYXRlIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0ZVRpbWU6CisgICAgICAgIF9pbnB1dFR5cGUgPSBAIkRh
dGVUaW1lIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0
ZVRpbWVMb2NhbDoKKyAgICAgICAgX2lucHV0VHlwZSA9IEAiRGF0ZVRpbWVMb2NhbCI7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6Ok1vbnRoOgorICAgICAgICBf
aW5wdXRUeXBlID0gQCJNb250aCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViS2l0OjpJ
bnB1dFR5cGU6OldlZWs6CisgICAgICAgIF9pbnB1dFR5cGUgPSBAIldlZWsiOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpUaW1lOgorICAgICAgICBfaW5wdXRU
eXBlID0gQCJUaW1lIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlw
ZTo6U2VsZWN0OgorICAgICAgICBfaW5wdXRUeXBlID0gQCJTZWxlY3QiOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpOb25lOgorICAgIGRlZmF1bHQ6CisgICAg
ICAgIF9pbnB1dFR5cGUgPSBAIk5vbmUiOworICAgIH0KKyAgICByZXR1cm4gW3N1cGVyIGluaXRd
OworfQorCitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLRm9ybUlucHV0U2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS0Zvcm1JbnB1dFNlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWY0MWM5ZWE2YmI0YzFlYTMy
ZjMxODU2YjQxYzUzNDUzYjM1ZDgyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Zvcm1JbnB1dFNlc3Npb24uaApAQCAtMCwwICsxLDQyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tf
QVBJX0VOQUJMRUQKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK0Bwcm90
b2NvbCBXS0Zvcm1JbnB1dFNlc3Npb24gPE5TT2JqZWN0PgorCitAcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHksIGdldHRlcj1pc1ZhbGlkKSBCT09MIHZhbGlkOworCisjaWYgVEFSR0VUX09T
X0lQSE9ORQorQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICphY2Nlc3NvcnlW
aWV3Q3VzdG9tQnV0dG9uVGl0bGU7CisjZW5kaWYKKworQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJ
X0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5oCmluZGV4IDRhN2RlYzdjZjVmYzkxODliZDA0NThhNWU4NDI5Y2UyYWVjNzA3Y2UuLmZjZjJh
NDdlMmMyZWVmZWZmOTQyYWE5NDhjMTNlMmMxZThlZGQ4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaApAQCAtNDIsNiArNDIsNyBAQCBXS19B
U1NVTUVfTk9OTlVMTF9CRUdJTgogCiBAcHJvdG9jb2wgV0tOYXZpZ2F0aW9uRGVsZWdhdGU7CiBA
cHJvdG9jb2wgV0tVSURlbGVnYXRlOworQHByb3RvY29sIFdLRm9ybURlbGVnYXRlOwogCiAvKiEK
ICBBIFdLV2ViVmlldyBvYmplY3QgZGlzcGxheXMgaW50ZXJhY3RpdmUgV2ViIGNvbnRlbnQuCkBA
IC02Niw2ICs2Nyw5IEBAIFdLX0NMQVNTX0FWQUlMQUJMRSgxMF8xMCwgOF8wKQogLyohIEBhYnN0
cmFjdCBUaGUgd2ViIHZpZXcncyB1c2VyIGludGVyZmFjZSBkZWxlZ2F0ZS4gKi8KIEBwcm9wZXJ0
eSAoV0tfTlVMTEFCTEVfUFJPUEVSVFkgbm9uYXRvbWljLCB3ZWFrKSBpZCA8V0tVSURlbGVnYXRl
PiBVSURlbGVnYXRlOwogCisvKiEgQGFic3RyYWN0IFRoZSB3ZWIgdmlldydzIGZvcm0gZGVsZWdh
dGUuICovCitAcHJvcGVydHkgKFdLX05VTExBQkxFX1BST1BFUlRZIG5vbmF0b21pYywgd2Vhaykg
aWQgPFdLRm9ybURlbGVnYXRlPiBmb3JtRGVsZWdhdGUgV0tfQVZBSUxBQkxFKDEwXzExLCA5XzAp
OworCiAvKiEgQGFic3RyYWN0IFRoZSB3ZWIgdmlldydzIGJhY2stZm9yd2FyZCBsaXN0LiAqLwog
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBzdHJvbmcpIFdLQmFja0ZvcndhcmRMaXN0
ICpiYWNrRm9yd2FyZExpc3Q7CiAKQEAgLTI0MiwxMCArMjQ2LDYgQEAgV0tfQ0xBU1NfQVZBSUxB
QkxFKDEwXzEwLCA4XzApCiAgKi8KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgc3Ry
b25nKSBVSVNjcm9sbFZpZXcgKnNjcm9sbFZpZXc7CiAKLS8qISBAYWJzdHJhY3QgQSBCb29sZWFu
IHZhbHVlIGluZGljYXRpbmcgd2hldGhlciBwcm9ncmFtbWF0aWMgZm9jdXMgb24KLSBhbiBlbGVt
ZW50IGlzIGFsbG93ZWQgdG8gdHJpZ2dlciBhc3Npc3RhbmNlLgotICovCi1AcHJvcGVydHkgKG5v
bmF0b21pYykgQk9PTCBjYW5Bc3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzOwogI2VuZGlmCiAKICNp
ZiAhVEFSR0VUX09TX0lQSE9ORQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQppbmRleCAxOWEwMjViNTYzNDRiMjc5NGZjNDY2N2RmMDRjMzM0M2Y1
Zjc3YjRlLi40ZjU1YzU1OTVjMTA2ZTA1OWM1NGM5NzU3OTg4OTFkOWE2NGUzNGY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNDcs
NiArNDcsNyBAQAogI2ltcG9ydCAiV0tCYWNrRm9yd2FyZExpc3RJdGVtSW50ZXJuYWwuaCIKICNp
bXBvcnQgIldLQnJvd3NpbmdDb250ZXh0SGFuZGxlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLRXJy
b3JJbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tGb3JtRGVsZWdhdGUuaCIKICNpbXBvcnQgIldLSGlz
dG9yeURlbGVnYXRlUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tMYXlvdXRNb2RlLmgiCiAjaW1wb3J0
ICJXS05TRGF0YS5oIgpAQCAtMTU1LDExICsxNTYsMTEgQEAgV0tXZWJWaWV3KiBmcm9tV2ViUGFn
ZVByb3h5KFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlKQogQGltcGxlbWVudGF0aW9uIFdLV2Vi
VmlldyB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6TmF2aWdhdGlvblN0YXRlPiBfbmF2
aWdhdGlvblN0YXRlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OlVJRGVsZWdhdGU+IF91
aURlbGVnYXRlOworICAgIGlkIDxXS0Zvcm1EZWxlZ2F0ZT4gX2Zvcm1EZWxlZ2F0ZTsKIAogICAg
IFJldGFpblB0cjxfV0tSZW1vdGVPYmplY3RSZWdpc3RyeT4gX3JlbW90ZU9iamVjdFJlZ2lzdHJ5
OwogICAgIF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzIF9vYnNlcnZlZFJlbmRlcmluZ1Byb2dy
ZXNzRXZlbnRzOwogCi0gICAgV2ViS2l0OjpXZWFrT2JqQ1B0cjxpZCA8X1dLRm9ybURlbGVnYXRl
Pj4gX2Zvcm1EZWxlZ2F0ZTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgUmV0YWluUHRyPFdLU2Ny
b2xsVmlldz4gX3Njcm9sbFZpZXc7CiAgICAgUmV0YWluUHRyPFdLQ29udGVudFZpZXc+IF9jb250
ZW50VmlldzsKQEAgLTIxMSw4ICsyMTIsNiBAQCBAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3IHsK
ICAgICBCT09MIF9wYWdlSXNQcmludGluZ1RvUERGOwogICAgIFJldGFpblB0cjxDR1BERkRvY3Vt
ZW50UmVmPiBfcHJpbnRlZERvY3VtZW50OwogICAgIFZlY3RvcjxzdGQ6OmZ1bmN0aW9uPHZvaWQg
KCk+PiBfc25hcHNob3RzRGVmZXJyZWREdXJpbmdSZXNpemU7Ci0KLSAgICBCT09MIF9jYW5Bc3Np
c3RPblByb2dyYW1tYXRpY0ZvY3VzOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFJl
dGFpblB0cjxXS1ZpZXc+IF93a1ZpZXc7CkBAIC0zNjksNyArMzY4LDYgQEAgLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBjb25maWd1cmF0aW9uOihXS1dlYlZpZXdD
b25maWd1cmF0aW8KIAogICAgIFtbX2NvbmZpZ3VyYXRpb24gX2NvbnRlbnRQcm92aWRlclJlZ2lz
dHJ5XSBhZGRQYWdlOipfcGFnZV07CiAKLSAgICBbc2VsZiBzZXRDYW5Bc3Npc3RPblByb2dyYW1t
YXRpY0ZvY3VzOltfY29uZmlndXJhdGlvbiBjYW5Bc3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzXV07
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTQ1NCw2ICs0NTIsNzUgQEAgLSAodm9p
ZClzZXRVSURlbGVnYXRlOihpZDxXS1VJRGVsZWdhdGU+KVVJRGVsZWdhdGUKICAgICBfdWlEZWxl
Z2F0ZS0+c2V0RGVsZWdhdGUoVUlEZWxlZ2F0ZSk7CiB9CiAKKy0gKGlkIDxXS0Zvcm1EZWxlZ2F0
ZT4pZm9ybURlbGVnYXRlCit7CisgICAgcmV0dXJuIF9mb3JtRGVsZWdhdGU7Cit9CisKKy0gKHZv
aWQpc2V0Rm9ybURlbGVnYXRlOihpZCA8V0tGb3JtRGVsZWdhdGU+KWZvcm1EZWxlZ2F0ZQorewor
ICAgIF9mb3JtRGVsZWdhdGUgPSBmb3JtRGVsZWdhdGU7CisgICAgaWYgKCFbZm9ybURlbGVnYXRl
IGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woX1dLRm9ybURlbGVnYXRlKV0pCisgICAgICAg
IHJldHVybjsKKworICAgIGNsYXNzIEZvcm1DbGllbnQgOiBwdWJsaWMgQVBJOjpGb3JtQ2xpZW50
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IEZvcm1DbGllbnQoV0tXZWJWaWV3ICp3
ZWJWaWV3KQorICAgICAgICAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKKyAgICAgICAgeworICAg
ICAgICB9CisKKyAgICAgICAgdmlydHVhbCB+Rm9ybUNsaWVudCgpIHsgfQorCisgICAgICAgIHZp
cnR1YWwgdm9pZCB3aWxsU3VibWl0Rm9ybShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6
V2ViRnJhbWVQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYgc291cmNlRnJhbWUsIGNvbnN0
IFZlY3RvcjxzdGQ6OnBhaXI8V1RGOjpTdHJpbmcsIFdURjo6U3RyaW5nPj4mIHRleHRGaWVsZFZh
bHVlcywgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBSZWY8V2ViS2l0OjpXZWJGb3JtU3VibWlzc2lv
bkxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICh1c2VyRGF0YSAmJiB1c2VyRGF0YS0+dHlwZSgpICE9IEFQSTo6T2JqZWN0OjpUeXBl
OjpEYXRhKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKCF1c2VyRGF0YSB8fCB1c2VyRGF0YS0+
dHlwZSgpID09IEFQSTo6T2JqZWN0OjpUeXBlOjpEYXRhKTsKKyAgICAgICAgICAgICAgICBtX3dl
YlZpZXctPl9wYWdlLT5wcm9jZXNzKCkuY29ubmVjdGlvbigpLT5tYXJrQ3VycmVudGx5RGlzcGF0
Y2hlZE1lc3NhZ2VBc0ludmFsaWQoKTsKKyAgICAgICAgICAgICAgICBsaXN0ZW5lci0+Y29udGlu
dWVTdWJtaXNzaW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBhdXRvIGZvcm1EZWxlZ2F0ZSA9IChpZCA8X1dLRm9ybURlbGVnYXRlPikg
bV93ZWJWaWV3LT5fZm9ybURlbGVnYXRlOworICAgICAgICAgICAgaWYgKCFbZm9ybURlbGVnYXRl
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6d2lsbFN1Ym1pdEZvcm1WYWx1
ZXM6dXNlck9iamVjdDpzdWJtaXNzaW9uSGFuZGxlcjopXSkgeworICAgICAgICAgICAgICAgIGxp
c3RlbmVyLT5jb250aW51ZVN1Ym1pc3Npb24oKTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGF1dG8gdmFsdWVNYXAgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTp0ZXh0RmllbGRWYWx1ZXMu
c2l6ZSgpXSk7CisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiB0ZXh0RmllbGRW
YWx1ZXMpCisgICAgICAgICAgICAgICAgW3ZhbHVlTWFwIHNldE9iamVjdDpwYWlyLnNlY29uZCBm
b3JLZXk6cGFpci5maXJzdF07CisKKyAgICAgICAgICAgIE5TT2JqZWN0IDxOU1NlY3VyZUNvZGlu
Zz4gKnVzZXJPYmplY3QgPSBuaWw7CisgICAgICAgICAgICBpZiAoQVBJOjpEYXRhKiBkYXRhID0g
c3RhdGljX2Nhc3Q8QVBJOjpEYXRhKj4odXNlckRhdGEpKSB7CisgICAgICAgICAgICAgICAgYXV0
byBuc0RhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5OmNv
bnN0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihkYXRhLT5ieXRlcygpKSkg
bGVuZ3RoOmRhdGEtPnNpemUoKSBmcmVlV2hlbkRvbmU6Tk9dKTsKKyAgICAgICAgICAgICAgICBh
dXRvIHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRG
b3JSZWFkaW5nV2l0aERhdGE6bnNEYXRhLmdldCgpXSk7CisgICAgICAgICAgICAgICAgW3VuYXJj
aGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsKKyAgICAgICAgICAgICAgICBAdHJ5
IHsKKyAgICAgICAgICAgICAgICAgICAgdXNlck9iamVjdCA9IFt1bmFyY2hpdmVyIGRlY29kZU9i
amVjdE9mQ2xhc3M6W05TT2JqZWN0IGNsYXNzXSBmb3JLZXk6QCJ1c2VyT2JqZWN0Il07CisgICAg
ICAgICAgICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKKyAgICAgICAg
ICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVjb2RlIHVzZXIgZGF0YTogJUAiLCBl
eGNlcHRpb24pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgUmVmUHRyPFdlYktpdDo6V2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5PiBsb2NhbExp
c3RlbmVyID0gV1RGOjptb3ZlKGxpc3RlbmVyKTsKKyAgICAgICAgICAgIFJlZlB0cjxXZWJLaXQ6
OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI+IGNoZWNrZXIgPSBXZWJLaXQ6OkNvbXBsZXRp
b25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShmb3JtRGVsZWdhdGUsIEBzZWxlY3Rvcihfd2Vi
Vmlldzp3aWxsU3VibWl0Rm9ybVZhbHVlczp1c2VyT2JqZWN0OnN1Ym1pc3Npb25IYW5kbGVyOikp
OworICAgICAgICAgICAgW2Zvcm1EZWxlZ2F0ZSBfd2ViVmlldzptX3dlYlZpZXcgd2lsbFN1Ym1p
dEZvcm1WYWx1ZXM6dmFsdWVNYXAuZ2V0KCkgdXNlck9iamVjdDp1c2VyT2JqZWN0IHN1Ym1pc3Np
b25IYW5kbGVyOltsb2NhbExpc3RlbmVyLCBjaGVja2VyXSB7CisgICAgICAgICAgICAgICAgY2hl
Y2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAgICAgICAgbG9jYWxM
aXN0ZW5lci0+Y29udGludWVTdWJtaXNzaW9uKCk7CisgICAgICAgICAgICB9XTsKKyAgICAgICAg
fQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgV0tXZWJWaWV3ICptX3dlYlZpZXc7CisgICAgfTsK
KworICAgIGlmIChmb3JtRGVsZWdhdGUpCisgICAgICAgIF9wYWdlLT5zZXRGb3JtQ2xpZW50KHN0
ZDo6bWFrZV91bmlxdWU8Rm9ybUNsaWVudD4oc2VsZikpOworICAgIGVsc2UKKyAgICAgICAgX3Bh
Z2UtPnNldEZvcm1DbGllbnQobnVsbHB0cik7Cit9CisKIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRS
ZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CiB7CiAgICAgYXV0byBuYXZpZ2F0aW9uID0g
X3BhZ2UtPmxvYWRSZXF1ZXN0KHJlcXVlc3QpOwpAQCAtNzIwLDE2ICs3ODcsNiBAQCAtIChVSVNj
cm9sbFZpZXcgKilzY3JvbGxWaWV3CiAgICAgcmV0dXJuIF9zY3JvbGxWaWV3LmdldCgpOwogfQog
Ci0tIChCT09MKWNhbkFzc2lzdE9uUHJvZ3JhbW1hdGljRm9jdXMKLXsKLSAgICByZXR1cm4gX2Nh
bkFzc2lzdE9uUHJvZ3JhbW1hdGljRm9jdXM7Ci19Ci0KLS0gKHZvaWQpc2V0Q2FuQXNzaXN0T25Q
cm9ncmFtbWF0aWNGb2N1czooQk9PTCljYW5Bc3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzCi17Ci0g
ICAgX2NhbkFzc2lzdE9uUHJvZ3JhbW1hdGljRm9jdXMgPSBjYW5Bc3Npc3RPblByb2dyYW1tYXRp
Y0ZvY3VzOwotfQotCiAtIChXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKilicm93c2luZ0Nv
bnRleHRDb250cm9sbGVyCiB7CiAgICAgcmV0dXJuIFtfY29udGVudFZpZXcgYnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlcl07CkBAIC0yNDMzLDc0ICsyNDkwLDYgQEAgLSAodm9pZClfc2F2ZUJhY2tG
b3J3YXJkU25hcHNob3RGb3JJdGVtOihXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKilpdGVtCiAgICAg
X3BhZ2UtPnJlY29yZE5hdmlnYXRpb25TbmFwc2hvdChpdGVtLl9pdGVtKTsKIH0KIAotLSAoaWQg
PF9XS0Zvcm1EZWxlZ2F0ZT4pX2Zvcm1EZWxlZ2F0ZQotewotICAgIHJldHVybiBfZm9ybURlbGVn
YXRlLmdldEF1dG9yZWxlYXNlZCgpOwotfQotCi0tICh2b2lkKV9zZXRGb3JtRGVsZWdhdGU6KGlk
IDxfV0tGb3JtRGVsZWdhdGU+KWZvcm1EZWxlZ2F0ZQotewotICAgIF9mb3JtRGVsZWdhdGUgPSBm
b3JtRGVsZWdhdGU7Ci0KLSAgICBjbGFzcyBGb3JtQ2xpZW50IDogcHVibGljIEFQSTo6Rm9ybUNs
aWVudCB7Ci0gICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBGb3JtQ2xpZW50KFdLV2ViVmll
dyAqd2ViVmlldykKLSAgICAgICAgICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCi0gICAgICAgIHsK
LSAgICAgICAgfQotCi0gICAgICAgIHZpcnR1YWwgfkZvcm1DbGllbnQoKSB7IH0KLQotICAgICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFN1Ym1pdEZvcm0oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJL
aXQ6OldlYkZyYW1lUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmIHNvdXJjZUZyYW1lLCBj
b25zdCBWZWN0b3I8c3RkOjpwYWlyPFdURjo6U3RyaW5nLCBXVEY6OlN0cmluZz4+JiB0ZXh0Rmll
bGRWYWx1ZXMsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgUmVmPFdlYktpdDo6V2ViRm9ybVN1Ym1p
c3Npb25MaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAodXNlckRhdGEgJiYgdXNlckRhdGEtPnR5cGUoKSAhPSBBUEk6Ok9iamVjdDo6
VHlwZTo6RGF0YSkgewotICAgICAgICAgICAgICAgIEFTU0VSVCghdXNlckRhdGEgfHwgdXNlckRh
dGEtPnR5cGUoKSA9PSBBUEk6Ok9iamVjdDo6VHlwZTo6RGF0YSk7Ci0gICAgICAgICAgICAgICAg
bV93ZWJWaWV3LT5fcGFnZS0+cHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+bWFya0N1cnJlbnRseURp
c3BhdGNoZWRNZXNzYWdlQXNJbnZhbGlkKCk7Ci0gICAgICAgICAgICAgICAgbGlzdGVuZXItPmNv
bnRpbnVlU3VibWlzc2lvbigpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgYXV0byBmb3JtRGVsZWdhdGUgPSBtX3dlYlZpZXctPl9mb3JtRGVs
ZWdhdGUuZ2V0KCk7Ci0KLSAgICAgICAgICAgIGlmICghW2Zvcm1EZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OndpbGxTdWJtaXRGb3JtVmFsdWVzOnVzZXJPYmpl
Y3Q6c3VibWlzc2lvbkhhbmRsZXI6KV0pIHsKLSAgICAgICAgICAgICAgICBsaXN0ZW5lci0+Y29u
dGludWVTdWJtaXNzaW9uKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBhdXRvIHZhbHVlTWFwID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rp
b25hcnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6dGV4dEZpZWxkVmFsdWVzLnNpemUoKV0pOwot
ICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogdGV4dEZpZWxkVmFsdWVzKQotICAg
ICAgICAgICAgICAgIFt2YWx1ZU1hcCBzZXRPYmplY3Q6cGFpci5zZWNvbmQgZm9yS2V5OnBhaXIu
Zmlyc3RdOwotCi0gICAgICAgICAgICBOU09iamVjdCA8TlNTZWN1cmVDb2Rpbmc+ICp1c2VyT2Jq
ZWN0ID0gbmlsOwotICAgICAgICAgICAgaWYgKEFQSTo6RGF0YSogZGF0YSA9IHN0YXRpY19jYXN0
PEFQSTo6RGF0YSo+KHVzZXJEYXRhKSkgewotICAgICAgICAgICAgICAgIGF1dG8gbnNEYXRhID0g
YWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlc05vQ29weTpjb25zdF9jYXN0PHZv
aWQqPihzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oZGF0YS0+Ynl0ZXMoKSkpIGxlbmd0aDpkYXRh
LT5zaXplKCkgZnJlZVdoZW5Eb25lOk5PXSk7Ci0gICAgICAgICAgICAgICAgYXV0byB1bmFyY2hp
dmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ1dp
dGhEYXRhOm5zRGF0YS5nZXQoKV0pOwotICAgICAgICAgICAgICAgIFt1bmFyY2hpdmVyIHNldFJl
cXVpcmVzU2VjdXJlQ29kaW5nOllFU107Ci0gICAgICAgICAgICAgICAgQHRyeSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHVzZXJPYmplY3QgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNz
OltOU09iamVjdCBjbGFzc10gZm9yS2V5OkAidXNlck9iamVjdCJdOwotICAgICAgICAgICAgICAg
IH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSB1c2VyIGRhdGE6ICVAIiwgZXhjZXB0aW9uKTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIFJlZlB0cjxX
ZWJLaXQ6OldlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eT4gbG9jYWxMaXN0ZW5lciA9IFdU
Rjo6bW92ZShsaXN0ZW5lcik7Ci0gICAgICAgICAgICBSZWZQdHI8V2ViS2l0OjpDb21wbGV0aW9u
SGFuZGxlckNhbGxDaGVja2VyPiBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNh
bGxDaGVja2VyOjpjcmVhdGUoZm9ybURlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IoX3dlYlZpZXc6
d2lsbFN1Ym1pdEZvcm1WYWx1ZXM6dXNlck9iamVjdDpzdWJtaXNzaW9uSGFuZGxlcjopKTsKLSAg
ICAgICAgICAgIFtmb3JtRGVsZWdhdGUgX3dlYlZpZXc6bV93ZWJWaWV3IHdpbGxTdWJtaXRGb3Jt
VmFsdWVzOnZhbHVlTWFwLmdldCgpIHVzZXJPYmplY3Q6dXNlck9iamVjdCBzdWJtaXNzaW9uSGFu
ZGxlcjpbbG9jYWxMaXN0ZW5lciwgY2hlY2tlcl0gewotICAgICAgICAgICAgICAgIGNoZWNrZXIt
PmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwotICAgICAgICAgICAgICAgIGxvY2FsTGlzdGVu
ZXItPmNvbnRpbnVlU3VibWlzc2lvbigpOwotICAgICAgICAgICAgfV07Ci0gICAgICAgIH0KLQot
ICAgIHByaXZhdGU6Ci0gICAgICAgIFdLV2ViVmlldyAqbV93ZWJWaWV3OwotICAgIH07Ci0KLSAg
ICBpZiAoZm9ybURlbGVnYXRlKQotICAgICAgICBfcGFnZS0+c2V0Rm9ybUNsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPEZvcm1DbGllbnQ+KHNlbGYpKTsKLSAgICBlbHNlCi0gICAgICAgIF9wYWdlLT5z
ZXRGb3JtQ2xpZW50KG51bGxwdHIpOwotfQotCiAtIChCT09MKV9pc0Rpc3BsYXlpbmdTdGFuZGFs
b25lSW1hZ2VEb2N1bWVudAogewogICAgIGlmIChhdXRvKiBtYWluRnJhbWUgPSBfcGFnZS0+bWFp
bkZyYW1lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5oCmluZGV4IGRiZGYyZDExNjk0OThiZWVhYTNm
ZjdmYTU0YzUzOTUyYzY4YmNhYWYuLmZlN2FjNzg0M2IzZDA4NmVlZTQ3MzY3N2VmYTBiZDQ2NzAy
YWIzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5oCkBAIC0xMTksMTIgKzExOSw2IEBAIFdLX0NM
QVNTX0FWQUlMQUJMRSgxMF8xMCwgOF8wKQogICovCiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9P
TCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFjayBXS19BVkFJTEFCTEUoTkEsIDlf
MCk7CiAKLS8qISBAYWJzdHJhY3QgQSBCb29sZWFuIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciBw
cm9ncmFtbWF0aWMgZm9jdXMgb24KLSBhbiBlbGVtZW50IGlzIGFsbG93ZWQgdG8gdHJpZ2dlciBh
c3Npc3RhbmNlLgotIEBkaXNjdXNzaW9uIFRoZSBkZWZhdWx0IHZhbHVlIGlzIE5PLgotICovCi1A
cHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBjYW5Bc3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzOwot
CiAjZW5kaWYKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCmluZGV4IGEyMzA4ZDMzNzky
Zjk1YzU4MzAzZDZmZjAxMzYwYTBjOWU2YjI2ZTAuLmY2NTdlMjQyNzRmNWIwMmQ0NGFjMWI1MmI1
YTBlODcxMThmNDM1NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KQEAgLTExMiw3ICsxMTIs
NiBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdAogICAgIF9hbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNr
ID0gV0tHZXREZXZpY2VDbGFzcygpID09IFdLRGV2aWNlQ2xhc3NpUGFkOwogICAgIF9pbmxpbmVN
ZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0dHJpYnV0ZSA9ICFfYWxsb3dzSW5saW5l
TWVkaWFQbGF5YmFjazsKICAgICBfbWVkaWFEYXRhTG9hZHNBdXRvbWF0aWNhbGx5ID0gTk87Ci0g
ICAgX2NhbkFzc2lzdE9uUHJvZ3JhbW1hdGljRm9jdXMgPSBOTzsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKQEAgLTM2NSwxNiArMzY0LDYgQEAgLSAodm9p
ZClfc2V0TWVkaWFEYXRhTG9hZHNBdXRvbWF0aWNhbGx5OihCT09MKW1lZGlhRGF0YUxvYWRzQXV0
b21hdGljYWxseQogewogICAgIF9tZWRpYURhdGFMb2Fkc0F1dG9tYXRpY2FsbHkgPSBtZWRpYURh
dGFMb2Fkc0F1dG9tYXRpY2FsbHk7CiB9Ci0KLS0gKEJPT0wpX2NhbkFzc2lzdE9uUHJvZ3JhbW1h
dGljRm9jdXMKLXsKLSAgICByZXR1cm4gX2NhbkFzc2lzdE9uUHJvZ3JhbW1hdGljRm9jdXM7Ci19
Ci0KLS0gKHZvaWQpX3NldENhbkFzc2lzdE9uUHJvZ3JhbW1hdGljRm9jdXM6KEJPT0wpY2FuQXNz
aXN0T25Qcm9ncmFtbWF0aWNGb2N1cwotewotICAgIF9jYW5Bc3Npc3RPblByb2dyYW1tYXRpY0Zv
Y3VzID0gY2FuQXNzaXN0T25Qcm9ncmFtbWF0aWNGb2N1czsKLX0KICNlbmRpZgogCiBAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCmluZGV4IGExZWFjZDUxZDA4M2Q4MThmZThmNWNlNWU3ZmFhYjk0MGM1NmMwZmUuLmFm
NDgzZjM0OTE3NTU5ODczMzFlM2FiNzQ3YmIzNDZjOTYwYzBkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC00
Nyw3ICs0Nyw2IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1BhZ2luYXRpb25Nb2Rl
KSB7CiBAcHJvdG9jb2wgV0tIaXN0b3J5RGVsZWdhdGVQcml2YXRlOwogQHByb3RvY29sIF9XS0Rp
YWdub3N0aWNMb2dnaW5nRGVsZWdhdGU7CiBAcHJvdG9jb2wgX1dLRmluZERlbGVnYXRlOwotQHBy
b3RvY29sIF9XS0Zvcm1EZWxlZ2F0ZTsKIAogQGludGVyZmFjZSBXS1dlYlZpZXcgKFdLUHJpdmF0
ZSkKIApAQCAtMTk4LDggKzE5Nyw2IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1Bh
Z2luYXRpb25Nb2RlKSB7CiAtICh2b2lkKV9jb3VudFN0cmluZ01hdGNoZXM6KE5TU3RyaW5nICop
c3RyaW5nIG9wdGlvbnM6KF9XS0ZpbmRPcHRpb25zKW9wdGlvbnMgbWF4Q291bnQ6KE5TVUludGVn
ZXIpbWF4Q291bnQ7CiAtICh2b2lkKV9oaWRlRmluZFVJOwogCi1AcHJvcGVydHkgKG5vbmF0b21p
Yywgd2Vhaywgc2V0dGVyPV9zZXRGb3JtRGVsZWdhdGU6KSBpZCA8X1dLRm9ybURlbGVnYXRlPiBf
Zm9ybURlbGVnYXRlOwotCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGdldHRlcj1f
aXNEaXNwbGF5aW5nU3RhbmRhbG9uZUltYWdlRG9jdW1lbnQpIEJPT0wgX2Rpc3BsYXlpbmdTdGFu
ZGFsb25lSW1hZ2VEb2N1bWVudDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgZ2V0
dGVyPV9pc0Rpc3BsYXlpbmdTdGFuZGFsb25lTWVkaWFEb2N1bWVudCkgQk9PTCBfZGlzcGxheWlu
Z1N0YW5kYWxvbmVNZWRpYURvY3VtZW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0Zvcm1EZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tGb3JtRGVsZWdhdGUuaAppbmRleCA3ZWFmY2Y4NTA1ODAxMmM5
YTUwMWMxYzUxY2ZjMTBiNmFhMGEzNDYxLi5lZjdhOGY1Y2M3ZTJiZjU4ZTEwOGEzOTg0NDc1Y2Q3
YWU2YTM3ZWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0Zvcm1EZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLRm9ybURlbGVnYXRlLmgKQEAgLTI4LDE5ICsyOCwxOCBAQAogI2lmIFdLX0FQSV9FTkFC
TEVECiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0
L1dLRm9ybURlbGVnYXRlLmg+CiAKIEBjbGFzcyBXS1dlYlZpZXc7CiBAcHJvdG9jb2wgX1dLRm9y
bUlucHV0U2Vzc2lvbjsKIAotQHByb3RvY29sIF9XS0Zvcm1EZWxlZ2F0ZSA8TlNPYmplY3Q+CitA
cHJvdG9jb2wgX1dLRm9ybURlbGVnYXRlIDxXS0Zvcm1EZWxlZ2F0ZT4KIAogQG9wdGlvbmFsCiAK
LS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkU3RhcnRJbnB1dFNlc3Np
b246KGlkIDxfV0tGb3JtSW5wdXRTZXNzaW9uPilpbnB1dFNlc3Npb247CiAtICh2b2lkKV93ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHdpbGxTdWJtaXRGb3JtVmFsdWVzOihOU0RpY3Rpb25h
cnkgKil2YWx1ZXMgdXNlck9iamVjdDooTlNPYmplY3QgPE5TU2VjdXJlQ29kaW5nPiAqKXVzZXJP
YmplY3Qgc3VibWlzc2lvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKXN1Ym1pc3Npb25IYW5kbGVy
OwogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQotLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBhY2Nlc3NvcnlWaWV3Q3VzdG9tQnV0dG9uVGFwcGVkSW5Gb3JtSW5wdXRTZXNzaW9u
OihpZCA8X1dLRm9ybUlucHV0U2Vzc2lvbj4paW5wdXRTZXNzaW9uOwogLSAoQk9PTClfd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBoYXNTdWdnZXN0aW9uc0ZvckN1cnJlbnRTdHJpbmdJbklu
cHV0U2Vzc2lvbjooaWQgPF9XS0Zvcm1JbnB1dFNlc3Npb24+KWlucHV0U2Vzc2lvbjsKIC0gKE5T
QXJyYXkgKilfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdWdnZXN0aW9uc0ZvclN0cmlu
ZzooTlNTdHJpbmcgKilzdHJpbmcgaW5JbnB1dFNlc3Npb246KGlkIDxfV0tGb3JtSW5wdXRTZXNz
aW9uPilpbnB1dFNlc3Npb247CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLRm9ybUlucHV0U2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tGb3JtSW5wdXRTZXNzaW9uLmgKaW5kZXggNWQwMjdmOWM5
N2JhNjA0YTQ1YjE2ZjY2MzI2NWFkMDJjODA0YjRkZi4uY2NkNTZhMGVmODEyN2FmNWFlZDJmOTZi
NGJkMTA0YmE2NDY0OGMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tGb3JtSW5wdXRTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tGb3JtSW5wdXRTZXNzaW9uLmgKQEAgLTI4LDE2ICsyOCwxMiBAQAog
I2lmIFdLX0FQSV9FTkFCTEVECiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgor
I2ltcG9ydCA8V2ViS2l0L1dLRm9ybUlucHV0U2Vzc2lvbi5oPgogCi1AcHJvdG9jb2wgX1dLRm9y
bUlucHV0U2Vzc2lvbiA8TlNPYmplY3Q+CitAcHJvdG9jb2wgX1dLRm9ybUlucHV0U2Vzc2lvbiA8
V0tGb3JtSW5wdXRTZXNzaW9uPgogCi1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGdl
dHRlcj1pc1ZhbGlkKSBCT09MIHZhbGlkOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
KSBOU09iamVjdCA8TlNTZWN1cmVDb2Rpbmc+ICp1c2VyT2JqZWN0OwogCi0jaWYgVEFSR0VUX09T
X0lQSE9ORQotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICphY2Nlc3NvcnlW
aWV3Q3VzdG9tQnV0dG9uVGl0bGU7Ci0jZW5kaWYKLQogQGVuZAogCiAjZW5kaWYgLy8gV0tfQVBJ
X0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggYjg2ODYyZTAzMTM1NmYxZGQ3NDhjNjFhMDk2
N2VmNWI2ODA0MjFkYi4uMTM4NGExM2M2MjFjYTdiNTY0MTlkOGU0NjExYmEyZGFkYTZkODc0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0KQEAgLTM5LDYgKzM5LDcgQEAKICNpbXBvcnQgIlRleHRJbnB1dFNQ
SS5oIgogI2ltcG9ydCAiVUlLaXRTUEkuaCIKICNpbXBvcnQgIldLQWN0aW9uU2hlZXRBc3Npc3Rh
bnQuaCIKKyNpbXBvcnQgIldLRm9ybURlbGVnYXRlLmgiCiAjaW1wb3J0ICJXS0Zvcm1JbnB1dENv
bnRyb2wuaCIKICNpbXBvcnQgIldLRm9ybVNlbGVjdENvbnRyb2wuaCIKICNpbXBvcnQgIldLSW1h
Z2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIuaCIKQEAgLTUzLDcgKzU0LDYgQEAKICNpbXBvcnQgIldl
YlBhZ2VNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0ICJf
V0tBY3RpdmF0ZWRFbGVtZW50SW5mb0ludGVybmFsLmgiCi0jaW1wb3J0ICJfV0tGb3JtRGVsZWdh
dGUuaCIKICNpbXBvcnQgIl9XS0Zvcm1JbnB1dFNlc3Npb24uaCIKICNpbXBvcnQgPENvcmVUZXh0
L0NURm9udC5oPgogI2ltcG9ydCA8Q29yZVRleHQvQ1RGb250RGVzY3JpcHRvci5oPgpAQCAtMjI0
Myw5ICsyMjQzLDkgQEAgLSAodm9pZClfYmVjb21lRmlyc3RSZXNwb25kZXJXaXRoU2VsZWN0aW9u
TW92aW5nRm9yd2FyZDooQk9PTClzZWxlY3RpbmdGb3J3YXJkIGMKIAogLSAodm9pZClhY2Nlc3Nv
cnlBdXRvRmlsbAogewotICAgIGlkIDxfV0tGb3JtRGVsZWdhdGU+IGZvcm1EZWxlZ2F0ZSA9IFtf
d2ViVmlldyBfZm9ybURlbGVnYXRlXTsKLSAgICBpZiAoW2Zvcm1EZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmFjY2Vzc29yeVZpZXdDdXN0b21CdXR0b25UYXBw
ZWRJbkZvcm1JbnB1dFNlc3Npb246KV0pCi0gICAgICAgIFtmb3JtRGVsZWdhdGUgX3dlYlZpZXc6
X3dlYlZpZXcgYWNjZXNzb3J5Vmlld0N1c3RvbUJ1dHRvblRhcHBlZEluRm9ybUlucHV0U2Vzc2lv
bjpfZm9ybUlucHV0U2Vzc2lvbi5nZXQoKV07CisgICAgaWQgPFdLRm9ybURlbGVnYXRlPiBmb3Jt
RGVsZWdhdGUgPSBbX3dlYlZpZXcgZm9ybURlbGVnYXRlXTsKKyAgICBpZiAoW2Zvcm1EZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6YWNjZXNzb3J5Vmlld0N1c3Rv
bUJ1dHRvblRhcHBlZEluRm9ybUlucHV0U2Vzc2lvbjopXSkKKyAgICAgICAgW2Zvcm1EZWxlZ2F0
ZSB3ZWJWaWV3Ol93ZWJWaWV3IGFjY2Vzc29yeVZpZXdDdXN0b21CdXR0b25UYXBwZWRJbkZvcm1J
bnB1dFNlc3Npb246X2Zvcm1JbnB1dFNlc3Npb24uZ2V0KCldOwogfQogCiAtICh2b2lkKWFjY2Vz
c29yeUNsZWFyCkBAIC0zMDEzLDkgKzMwMTMsMjAgQEAgc3RhdGljIGJvb2wgaXNBc3Npc3RhYmxl
SW5wdXRUeXBlKElucHV0VHlwZSB0eXBlKQogCiAtICh2b2lkKV9zdGFydEFzc2lzdGluZ05vZGU6
KGNvbnN0IEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uJilpbmZvcm1hdGlvbiB1c2VySXNJbnRlcmFj
dGluZzooQk9PTCl1c2VySXNJbnRlcmFjdGluZyBibHVyUHJldmlvdXNOb2RlOihCT09MKWJsdXJQ
cmV2aW91c05vZGUgdXNlck9iamVjdDooTlNPYmplY3QgPE5TU2VjdXJlQ29kaW5nPiAqKXVzZXJP
YmplY3QKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHRlbXBvcmFyeSB3b3JrYXJvdW5kIGZv
ciA8cmRhcjovL3Byb2JsZW0vMjIxMjY1MTg+LiBUaGUgcmVhbCBmaXggd2lsbCBpbnZvbHZlIHJl
ZmFjdG9yaW5nCi0gICAgLy8gdGhlIHdheSB3ZSBhc3Npc3QgcHJvZ3JhbW1hdGljYWxseSBmb2N1
c2VkIG5vZGVzLgotICAgIGlmICghdXNlcklzSW50ZXJhY3RpbmcgJiYgIV90ZXh0U2VsZWN0aW9u
QXNzaXN0YW50ICYmICFfd2ViVmlldy5jYW5Bc3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzKQorICAg
IGlkIDxXS0Zvcm1EZWxlZ2F0ZT4gZm9ybURlbGVnYXRlID0gW193ZWJWaWV3IGZvcm1EZWxlZ2F0
ZV07CisgICAgQk9PTCBzaG91bGRTaG93S2V5Ym9hcmQ7CisgICAgaWYgKFtmb3JtRGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OnNob3VsZFNob3dLZXlib2FyZElu
Q29udGV4dDopXSkgeworICAgICAgICBXS0ZvY3VzZWRFbGVtZW50Q29udGV4dCogY29udGV4dCA9
IFtbV0tGb2N1c2VkRWxlbWVudENvbnRleHQgYWxsb2NdIGluaXRXaXRoSW5wdXRUeXBlOih1bnNp
Z25lZClpbmZvcm1hdGlvbi5lbGVtZW50VHlwZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnB1dFZhbHVlOmluZm9ybWF0aW9uLnZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzSW50
ZXJhY3Rpbmc6dXNlcklzSW50ZXJhY3RpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1ByZXZp
b3VzTm9kZTppbmZvcm1hdGlvbi5oYXNQcmV2aW91c05vZGUKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBoYXNOZXh0Tm9kZTppbmZvcm1hdGlvbi5oYXNOZXh0Tm9kZV07CisgICAgICAgIHNob3Vs
ZFNob3dLZXlib2FyZCA9IFtmb3JtRGVsZWdhdGUgd2ViVmlldzpfd2ViVmlldyBzaG91bGRTaG93
S2V5Ym9hcmRJbkNvbnRleHQ6Y29udGV4dF07CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gVGhl
IGRlZmF1bHQgYmVoYXZpb3IgaXMgdG8gYWxsb3cgbm9kZSBhc3Npc3RhbmNlIGlmIHRoZSB1c2Vy
IGlzIGludGVyYWN0aW5nIG9yIHRoZSBrZXlib2FyZCBpcyBhbHJlYWR5IGFjdGl2ZS4KKyAgICAg
ICAgc2hvdWxkU2hvd0tleWJvYXJkID0gdXNlcklzSW50ZXJhY3RpbmcgfHwgX3RleHRTZWxlY3Rp
b25Bc3Npc3RhbnQ7CisgICAgfQorICAgIGlmICghc2hvdWxkU2hvd0tleWJvYXJkKQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAoYmx1clByZXZpb3VzTm9kZSkKQEAgLTMwNTgsMTAgKzMwNjks
OSBAQCAtICh2b2lkKV9zdGFydEFzc2lzdGluZ05vZGU6KGNvbnN0IEFzc2lzdGVkTm9kZUluZm9y
bWF0aW9uJilpbmZvcm1hdGlvbiB1c2VySXNJbgogICAgIC8vIF9pbnB1dFBlcmlwaGVyYWwgaGFz
IGJlZW4gaW5pdGlhbGl6ZWQgaW4gaW5wdXRWaWV3IGNhbGxlZCBieSByZWxvYWRJbnB1dFZpZXdz
LgogICAgIFtfaW5wdXRQZXJpcGhlcmFsIGJlZ2luRWRpdGluZ107CiAKLSAgICBpZCA8X1dLRm9y
bURlbGVnYXRlPiBmb3JtRGVsZWdhdGUgPSBbX3dlYlZpZXcgX2Zvcm1EZWxlZ2F0ZV07Ci0gICAg
aWYgKFtmb3JtRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpk
aWRTdGFydElucHV0U2Vzc2lvbjopXSkgeworICAgIGlmIChbZm9ybURlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpkaWRTdGFydElucHV0U2Vzc2lvbjopXSkgewog
ICAgICAgICBfZm9ybUlucHV0U2Vzc2lvbiA9IGFkb3B0TlMoW1tXS0Zvcm1JbnB1dFNlc3Npb24g
YWxsb2NdIGluaXRXaXRoQ29udGVudFZpZXc6c2VsZiB1c2VyT2JqZWN0OnVzZXJPYmplY3RdKTsK
LSAgICAgICAgW2Zvcm1EZWxlZ2F0ZSBfd2ViVmlldzpfd2ViVmlldyBkaWRTdGFydElucHV0U2Vz
c2lvbjpfZm9ybUlucHV0U2Vzc2lvbi5nZXQoKV07CisgICAgICAgIFtmb3JtRGVsZWdhdGUgd2Vi
Vmlldzpfd2ViVmlldyBkaWRTdGFydElucHV0U2Vzc2lvbjpfZm9ybUlucHV0U2Vzc2lvbi5nZXQo
KV07CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggMTQ2OTI1MzJmYzJhYmZkZDVjNjExYWNhMjU5MGVhOTU5OGQw
YjdlMS4uMTYyYTc0MzE2NGFjNmNlNTUwMjgwNDk3NjNkYjc4ZjgxOTU1MzJmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjg2
LDYgKzY4Niw5IEBACiAJCTJERjlFRUU4MUE3ODI0NTUwMEI2Q0ZCRSAvKiBXS0ZyYW1lSW5mb0lu
dGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
REY5RUVFNzFBNzgyNDU1MDBCNkNGQkUgLyogV0tGcmFtZUluZm9JbnRlcm5hbC5oICovOyB9Owog
CQkyREY5RUVFQzFBNzgzNkVFMDBCNkNGQkUgLyogQVBJTmF2aWdhdGlvbkFjdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRGOUVFRUExQTc4MzZF
RTAwQjZDRkJFIC8qIEFQSU5hdmlnYXRpb25BY3Rpb24uaCAqLzsgfTsKIAkJMkRGOUVFRUUxQTc4
NkVBRDAwQjZDRkJFIC8qIEFQSU5hdmlnYXRpb25SZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRGOUVFRUQxQTc4NkVBRDAwQjZDRkJFIC8q
IEFQSU5hdmlnYXRpb25SZXNwb25zZS5oICovOyB9OworCQkyRTM0Qjg4NjFCQkJBMDIwMDA1OTIz
MjYgLyogV0tGb3JtRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRTM0Qjg4NTFCQkJBMDIwMDA1OTIzMjYgLyogV0tGb3JtRGVsZWdhdGUu
bW0gKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJMkU0MEFFQzMxQkJB
MTU3MTAwRjE2OTg5IC8qIFdLRm9ybURlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQwQUVDMTFCQkExMkU4MDBGMTY5ODkgLyogV0tGb3Jt
RGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07
CisJCTJFQkM2NzAyMUJCQUYzMUYwMDQ4NUNBQiAvKiBXS0Zvcm1JbnB1dFNlc3Npb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFQkM2NzAxMUJCQUYy
REMwMDQ4NUNBQiAvKiBXS0Zvcm1JbnB1dFNlc3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCTMxMDk5OTczMTQ2Qzc1QTIwMDI5REVCOSAvKiBX
ZWJOb3RpZmljYXRpb25DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzEwOTk5NzExNDZDNzU5QjAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlv
bkNsaWVudC5jcHAgKi87IH07CiAJCTMxMDk5OUM3MTQ2QzlFM0QwMDI5REVCOSAvKiBXZWJOb3Rp
ZmljYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxMDk5OTY4MTQ2QzcxRjUwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQu
aCAqLzsgfTsKIAkJMzEyQzBDNEExNDZEREM4QTAwMTZDOTExIC8qIFdLTm90aWZpY2F0aW9uUHJv
dmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMx
MkMwQzQ5MTQ2RERDOEEwMDE2QzkxMSAvKiBXS05vdGlmaWNhdGlvblByb3ZpZGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI4MzUsNiArMjgz
OCw5IEBACiAJCTJERjlFRUU3MUE3ODI0NTUwMEI2Q0ZCRSAvKiBXS0ZyYW1lSW5mb0ludGVybmFs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRnJhbWVJbmZvSW50ZXJuYWwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRGOUVFRUExQTc4MzZFRTAwQjZDRkJF
IC8qIEFQSU5hdmlnYXRpb25BY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQVBJTmF2aWdhdGlvbkFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
REY5RUVFRDFBNzg2RUFEMDBCNkNGQkUgLyogQVBJTmF2aWdhdGlvblJlc3BvbnNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSU5hdmlnYXRpb25SZXNwb25zZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRTM0Qjg4NTFCQkJBMDIwMDA1OTIzMjYgLyogV0tG
b3JtRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
S0Zvcm1EZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkU0MEFFQzEx
QkJBMTJFODAwRjE2OTg5IC8qIFdLRm9ybURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRm9y
bURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJFQkM2NzAxMUJCQUYy
REMwMDQ4NUNBQiAvKiBXS0Zvcm1JbnB1dFNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tGb3Jt
SW5wdXRTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDk5OTY4MTQ2
QzcxRjUwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViTm90aWZpY2F0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMx
MDk5OTcxMTQ2Qzc1OUIwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEyQzBDNDkxNDZEREM4QTAwMTZDOTEx
IC8qIFdLTm90aWZpY2F0aW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tOb3RpZmljYXRpb25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNTM5NCw2ICs1NDAwLDkgQEAKIAkJCQkxQUQ2MEY1QzE4RTIwRjRDMDAyMEMwMzQgLyog
V0tXaW5kb3dGZWF0dXJlcy5oICovLAogCQkJCTFBRDYwRjVCMThFMjBGNEMwMDIwQzAzNCAvKiBX
S1dpbmRvd0ZlYXR1cmVzLm1tICovLAogCQkJCTFBRDYwRjVGMThFMjBGNzQwMDIwQzAzNCAvKiBX
S1dpbmRvd0ZlYXR1cmVzSW50ZXJuYWwuaCAqLywKKwkJCQkyRTQwQUVDMTFCQkExMkU4MDBGMTY5
ODkgLyogV0tGb3JtRGVsZWdhdGUuaCAqLywKKwkJCQkyRTM0Qjg4NTFCQkJBMDIwMDA1OTIzMjYg
LyogV0tGb3JtRGVsZWdhdGUubW0gKi8sCisJCQkJMkVCQzY3MDExQkJBRjJEQzAwNDg1Q0FCIC8q
IFdLRm9ybUlucHV0U2Vzc2lvbi5oICovLAogCQkJKTsKIAkJCXBhdGggPSBDb2NvYTsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03ODk0LDYgKzc5MDMsNyBAQAogCQkJCUJDNzJCQTFF
MTFFNjQ5MDcwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxOEQyQ0FFMTJENTE1M0IwMDNCQjkzQiAvKiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzcyQjlGQjExRTY0NzZCMDAxRUI0RUEgLyogV2ViQmFja0Zv
cndhcmRMaXN0UHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTJFNDBBRUMzMUJCQTE1NzEwMEYx
Njk4OSAvKiBXS0Zvcm1EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGNTA3MjgxMjQz
MjlBQTAwNTk1NUFFIC8qIFdlYkNlcnRpZmljYXRlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkMwMzJENzUxMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkNocm9tZUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJM0Y4N0I5QkUxNTg5NDAxOTAwOTBGRjYyIC8qIFdlYkNvbG9yQ2hvb3Nlci5oIGlu
IEhlYWRlcnMgKi8sCkBAIC03OTE5LDYgKzc5MjksNyBAQAogCQkJCTMzMDkzNDQ4MTMxNUI5MjIw
MDk3QTdCQyAvKiBXZWJDb29raWVNYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTMzMDkzNDU2MTMxNUI5NzUwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTMzQUExMDY3MTMxRjA2MDAwMEQ0QTU3NSAvKiBXZWJDb29raWVNYW5h
Z2VyUHJveHlDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTJFQkM2NzAyMUJCQUYzMUYwMDQ4
NUNBQiAvKiBXS0Zvcm1JbnB1dFNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTMzMDkzNDRB
MTMxNUI5MjIwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkMxREQ3QjIxMTREQzM5NjAwNUFEQUYzIC8qIFdlYkNvcmVBcmd1bWVu
dENvZGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyRjU4OUIxMkE4ODM4ODAwNjI5NTMwIC8q
IFdlYkNyZWRlbnRpYWwuaCBpbiBIZWFkZXJzICovLApAQCAtOTY4MCw2ICs5NjkxLDcgQEAKIAkJ
CQkxQTQ0Qjk1QjE2QjczRjlGMDBCN0JCRDggLyogU3RvcmFnZU1hbmFnZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUFCMzFBOTYxNkJDNjg4MTAwRjZEQkM5IC8qIFN0b3JhZ2VNYW5hZ2VyTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNDRCOTU3MTZCNzM3QUEwMEI3
QkJEOCAvKiBTdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyRTM0
Qjg4NjFCQkJBMDIwMDA1OTIzMjYgLyogV0tGb3JtRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywK
IAkJCQkxQUUwMEQ2QjE4MzI3QzEyMDAwODdERDcgLyogU3RyaW5nUmVmZXJlbmNlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTI5NkJEODVFMTUwMTlCQzMwMDcxRjQyNCAvKiBTdHJpbmdVdGlsaXRp
ZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxWlo0MTdFRjEyQzAwRDg3MDAyQkU2N0IgLyogVGV4
dENoZWNrZXJDb21wbGV0aW9uLmNwcCBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262178</attachid>
            <date>2015-09-30 09:50:44 -0700</date>
            <delta_ts>2015-10-01 12:11:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149646-20150930095019.patch</filename>
            <type>text/plain</type>
            <size>38055</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMzQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDhkYmQ5OTM4ZWE4NThm
MTJmMWUyOGM5NDcwYWQ2YWYyYmIyN2NjZi4uYzczYjMyNjY3M2YwMmM1MWIwOTgzZDYzMjM3MjBm
NzhjYjIxNjU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE1LTA5LTI5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIFdLV2Vi
VmlldyBmb3JtIGRlbGVnYXRlIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5NjQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIGEgZGVsZWdhdGUgQVBJIHRoYXQgYWxsb3dzIFdlYktpdCBjbGll
bnRzIHRvIG1hbmlwdWxhdGUgYW4gaW5wdXQgc2Vzc2lvbiwgc3VjaCBhcyBiZWluZyBhYmxlIHRv
IG92ZXJyaWRlCisgICAgICAgIHByZXZlbnRpbmcgdGhlIGtleWJvYXJkIGZyb20gYmVpbmcgcmFp
c2VkIHdoZW4gYSBmaWVsZCBpcyBwcm9ncmFtbWF0aWNhbGx5IGZvY3VzZWQuIFRoaXMgbmV3IGRl
bGVnYXRlIHdhcworICAgICAgICBhZGFwdGVkIGZyb20gdGhlIGV4aXN0aW5nIHByaXZhdGUgX1dL
Rm9ybURlbGVnYXRlLiBUaGlzIHBhdGNoIG1vdmVzIHBhcnQgb2YgX1dLRm9ybURlbGVnYXRlIGlu
dG8gdGhlIG5ldworICAgICAgICBwdWJsaWMgZGVsZWdhdGUuIFRoaXMgYWxzbyBtb3ZlcyB0aGUg
cHVibGljIGNvbXBvbmVudHMgb2YgdGhlIGFjY29tcGFueWluZyBfV0tGb3JtSW5wdXRTZXNzaW9u
IGludG8KKyAgICAgICAgV0tGb3JtSW5wdXRTZXNzaW9uLiBGb3IgV0tXZWJWaWV3LCB0aGlzIGFs
c28gcmVuYW1lcyB0aGUgcHJpdmF0ZSBfZm9ybURlbGVnYXRlIHRvIGZvcm1EZWxlZ2F0ZS4KKwor
ICAgICAgICBBZGRpdGlvbmFsbHksIHJlbW92ZXMgdGhlIGNhbkFzc2lzdE9uUHJvZ3JhbW1hdGlj
Rm9jdXMgZmxhZyBjb21taXR0ZWQgaW4gcjE5MDI3OC4KKworICAgICAgICAqIFNoYXJlZC9BUEkv
Q29jb2EvV2ViS2l0Lmg6IEFkZGVkIHRoZSBXS0Zvcm1EZWxlZ2F0ZSBoZWFkZXIuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Zvcm1EZWxlZ2F0ZS5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Zvcm1EZWxlZ2F0ZS5oLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGb3JtRGVsZWdhdGUubW06IEFkZGVkLgorICAgICAg
ICAoLVtXS0ZvY3VzZWRFbGVtZW50Q29udGV4dCBpbml0V2l0aElucHV0VHlwZTppbnB1dFZhbHVl
OmlzSW50ZXJhY3Rpbmc6aGFzUHJldmlvdXNOb2RlOmhhc05leHROb2RlOl0pOgorICAgICAgICAg
ICAgSW5pdGlhbGl6ZXMgYSBmb2N1c2VkIGZvcm0gZWxlbWVudCBjb250ZXh0LCBhIHB1YmxpYyBv
YmplY3Qgd2hpY2ggdGhlIFdlYktpdCBjbGllbnQgY2FuIHVzZSB0byBkZXRlcm1pbmUKKyAgICAg
ICAgICAgIHdoZXRoZXIgYW4gaW5wdXQgc2Vzc2lvbiBzaG91bGQgYmUgdHJpZ2dlcmVkIGJ5IGZv
Y3VzaW5nIHRoaXMgZWxlbWVudC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRm9y
bUlucHV0U2Vzc2lvbi5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0Zvcm1JbnB1dFNlc3Npb24uaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgZm9ybURlbGVnYXRlXSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBzZXRGb3JtRGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBpbml0V2l0
aEZyYW1lOmNvbmZpZ3VyYXRpb246XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBj
YW5Bc3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2Vi
VmlldyBzZXRDYW5Bc3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzOl0pOiBEZWxldGVkLgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX2Zvcm1EZWxlZ2F0ZV0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1dl
YlZpZXcgX3NldEZvcm1EZWxlZ2F0ZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gaW5pdF0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIF9jYW5Bc3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzXSk6IERlbGV0ZWQuCisgICAg
ICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3NldENhbkFzc2lzdE9uUHJvZ3JhbW1hdGlj
Rm9jdXM6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tGb3JtRGVsZWdh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0Zvcm1JbnB1dFNlc3Npb24u
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBhY2Nlc3NvcnlBdXRvRmlsbF0pOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IF9zdGFydEFzc2lzdGluZ05vZGU6dXNlcklzSW50ZXJhY3Rpbmc6Ymx1
clByZXZpb3VzTm9kZTp1c2VyT2JqZWN0Ol0pOiAgRGVmZXJzIG5vZGUgYXNzaXN0YW5jZQorICAg
ICAgICAgICAgYmVoYXZpb3IgdG8gdGhlIGZvcm0gZGVsZWdhdGUgaWYgYXBwbGljYWJsZSwgb3Ro
ZXJ3aXNlIHVzZXMgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2Ygb25seSBhc3Npc3RpbmcgdXBvbgor
ICAgICAgICAgICAgdXNlciBpbnRlcmFjdGlvbi4KKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTUtMDktMzAgIENhcmxvcyBBbGJlcnRvIExvcGV6IFBl
cmV6ICA8Y2xvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQnVpbGQgZXJyb3Igd2l0
aCAtREVOQUJMRV9TUEVMTENIRUNLPU9GRgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9Db2NvYS9XZWJLaXQuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2Ev
V2ViS2l0LmgKaW5kZXggYzNkN2YxNTQxNWYwNTdhODE1YWE0YjY5MDIwMjllMmJhNmQxNTMyNS4u
MzQxYWVlMzdjYWM4OTk2ZGYxNjIwY2RhOWNiYTYwNjk2NDRiODkwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL0NvY29hL1dlYktpdC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0IDxX
ZWJLaXQvV0tCYWNrRm9yd2FyZExpc3QuaD4KICNpbXBvcnQgPFdlYktpdC9XS0JhY2tGb3J3YXJk
TGlzdEl0ZW0uaD4KICNpbXBvcnQgPFdlYktpdC9XS0Vycm9yLmg+CisjaW1wb3J0IDxXZWJLaXQv
V0tGb3JtRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KICNpbXBv
cnQgPFdlYktpdC9XS0ZyYW1lSW5mby5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbi5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Zvcm1E
ZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Zvcm1EZWxl
Z2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjBhZThiNzJhNjU2OTEwNDJiNDE2M2VhZmQ5YmVlZjYzMjA5ZWVm
YTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLRm9ybURlbGVnYXRlLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
PFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQg
PEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRm9ybUlucHV0U2Vz
c2lvbi5oPgorCitAaW50ZXJmYWNlIFdLRm9jdXNlZEVsZW1lbnRDb250ZXh0IDogTlNPYmplY3QK
KworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSW5wdXRUeXBlOih1bnNpZ25lZClyYXdJbnB1dFR5
cGUgaW5wdXRWYWx1ZTooTlNTdHJpbmcqKXZhbHVlIGlzSW50ZXJhY3Rpbmc6KEJPT0wpdXNlcklz
SW50ZXJhY3RpbmcgaGFzUHJldmlvdXNOb2RlOihCT09MKWhhc1ByZXZpb3VzTm9kZSBoYXNOZXh0
Tm9kZTooQk9PTCloYXNOZXh0Tm9kZTsKKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
LCBjb3B5KSBOU1N0cmluZyogaW5wdXRUeXBlOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5LCBjb3B5KSBOU1N0cmluZyogaW5wdXRWYWx1ZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgQk9PTCB1c2VySXNJbnRlcmFjdGluZzsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgQk9PTCBoYXNOZXh0Tm9kZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgQk9PTCBoYXNQcmV2aW91c05vZGU7CisKK0BlbmQKKworQGNsYXNzIFdLV2ViVmlldzsKKwor
QHByb3RvY29sIFdLRm9ybURlbGVnYXRlIDxOU09iamVjdD4KKworQG9wdGlvbmFsCisKKy0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRTdGFydElucHV0U2Vzc2lvbjooaWQg
PFdLRm9ybUlucHV0U2Vzc2lvbj4paW5wdXRTZXNzaW9uIFdLX0FWQUlMQUJMRSgxMF8xMSwgOV8w
KTsKKworI2lmIFRBUkdFVF9PU19JUEhPTkUKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBhY2Nlc3NvcnlWaWV3Q3VzdG9tQnV0dG9uVGFwcGVkSW5Gb3JtSW5wdXRTZXNzaW9u
OihpZCA8V0tGb3JtSW5wdXRTZXNzaW9uPilpbnB1dFNlc3Npb24gV0tfQVZBSUxBQkxFKDEwXzEx
LCA5XzApOworLSAoQk9PTCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHNob3VsZFNob3dL
ZXlib2FyZEluQ29udGV4dDooV0tGb2N1c2VkRWxlbWVudENvbnRleHQqKWNvbnRleHQgV0tfQVZB
SUxBQkxFKDEwXzExLCA5XzApOworI2VuZGlmCisKK0BlbmQKKworI2VuZGlmIC8qIFdLX0FQSV9F
TkFCTEVEICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLRm9ybURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0Zvcm1EZWxlZ2F0ZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMjJlMGJjNGVmNTkzNmRmZDUwNjY4OTYwNDEz
Zjc5ZDBhMDUwZjU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0Zvcm1EZWxlZ2F0ZS5tbQpAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tGb3JtRGVsZWdhdGUuaCIKKworI2lt
cG9ydCA8V2ViS2l0L0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmg+CisKK0BpbXBsZW1lbnRhdGlv
biBXS0ZvY3VzZWRFbGVtZW50Q29udGV4dAorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJbnB1
dFR5cGU6KHVuc2lnbmVkKXJhd0lucHV0VHlwZSBpbnB1dFZhbHVlOihOU1N0cmluZyopdmFsdWUg
aXNJbnRlcmFjdGluZzooQk9PTCl1c2VySXNJbnRlcmFjdGluZyBoYXNQcmV2aW91c05vZGU6KEJP
T0wpaGFzUHJldmlvdXNOb2RlIGhhc05leHROb2RlOihCT09MKWhhc05leHROb2RlCit7CisgICAg
aWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKKyAgICAgICAgX2lucHV0VmFsdWUgPSB2YWx1ZTsK
KyAgICAgICAgX3VzZXJJc0ludGVyYWN0aW5nID0gdXNlcklzSW50ZXJhY3Rpbmc7CisgICAgICAg
IF9oYXNOZXh0Tm9kZSA9IGhhc05leHROb2RlOworICAgICAgICBfaGFzUHJldmlvdXNOb2RlID0g
aGFzUHJldmlvdXNOb2RlOworCisgICAgICAgIFdlYktpdDo6SW5wdXRUeXBlIGlucHV0VHlwZSA9
IChXZWJLaXQ6OklucHV0VHlwZSkgcmF3SW5wdXRUeXBlOworICAgICAgICBzd2l0Y2ggKGlucHV0
VHlwZSkgeworICAgICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpDb250ZW50RWRpdGFibGU6
CisgICAgICAgICAgICBfaW5wdXRUeXBlID0gQCJDb250ZW50RWRpdGFibGUiOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlRleHQ6CisgICAgICAg
ICAgICBfaW5wdXRUeXBlID0gQCJUZXh0IjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFdlYktpdDo6SW5wdXRUeXBlOjpQYXNzd29yZDoKKyAgICAgICAgICAgIF9pbnB1dFR5cGUg
PSBAIlBhc3N3b3JkIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYktpdDo6
SW5wdXRUeXBlOjpUZXh0QXJlYToKKyAgICAgICAgICAgIF9pbnB1dFR5cGUgPSBAIlRleHRBcmVh
IjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpT
ZWFyY2g6CisgICAgICAgICAgICBfaW5wdXRUeXBlID0gQCJTZWFyY2giOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkVtYWlsOgorICAgICAgICAg
ICAgX2lucHV0VHlwZSA9IEAiRW1haWwiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgV2ViS2l0OjpJbnB1dFR5cGU6OlVSTDoKKyAgICAgICAgICAgIF9pbnB1dFR5cGUgPSBAIlVS
TCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6
UGhvbmU6CisgICAgICAgICAgICBfaW5wdXRUeXBlID0gQCJQaG9uZSI7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6TnVtYmVyOgorICAgICAgICAg
ICAgX2lucHV0VHlwZSA9IEAiTnVtYmVyIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFdlYktpdDo6SW5wdXRUeXBlOjpOdW1iZXJQYWQ6CisgICAgICAgICAgICBfaW5wdXRUeXBl
ID0gQCJOdW1iZXJQYWQiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2ViS2l0
OjpJbnB1dFR5cGU6OkRhdGU6CisgICAgICAgICAgICBfaW5wdXRUeXBlID0gQCJEYXRlIjsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlVGlt
ZToKKyAgICAgICAgICAgIF9pbnB1dFR5cGUgPSBAIkRhdGVUaW1lIjsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlVGltZUxvY2FsOgorICAg
ICAgICAgICAgX2lucHV0VHlwZSA9IEAiRGF0ZVRpbWVMb2NhbCI7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6TW9udGg6CisgICAgICAgICAgICBf
aW5wdXRUeXBlID0gQCJNb250aCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBX
ZWJLaXQ6OklucHV0VHlwZTo6V2VlazoKKyAgICAgICAgICAgIF9pbnB1dFR5cGUgPSBAIldlZWsi
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlRp
bWU6CisgICAgICAgICAgICBfaW5wdXRUeXBlID0gQCJUaW1lIjsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpTZWxlY3Q6CisgICAgICAgICAgICBf
aW5wdXRUeXBlID0gQCJTZWxlY3QiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
V2ViS2l0OjpJbnB1dFR5cGU6Ok5vbmU6CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBf
aW5wdXRUeXBlID0gQCJOb25lIjsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gc2VsZjsK
K30KKworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0Zvcm1JbnB1dFNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tGb3JtSW5wdXRTZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFmNDFjOWVhNmJiNGMxZWEzMmYz
MTg1NmI0MWM1MzQ1M2IzNWQ4MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tGb3JtSW5wdXRTZXNzaW9uLmgKQEAgLTAsMCArMSw0MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQ
SV9FTkFCTEVECisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCitAcHJvdG9j
b2wgV0tGb3JtSW5wdXRTZXNzaW9uIDxOU09iamVjdD4KKworQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5LCBnZXR0ZXI9aXNWYWxpZCkgQk9PTCB2YWxpZDsKKworI2lmIFRBUkdFVF9PU19J
UEhPTkUKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqYWNjZXNzb3J5Vmll
d0N1c3RvbUJ1dHRvblRpdGxlOworI2VuZGlmCisKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9F
TkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
aAppbmRleCA0YTdkZWM3Y2Y1ZmM5MTg5YmQwNDU4YTVlODQyOWNlMmFlYzcwN2NlLi5mY2YyYTQ3
ZTJjMmVlZmVmZjk0MmFhOTQ4YzEzZTJjMWU4ZWRkOGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKQEAgLTQyLDYgKzQyLDcgQEAgV0tfQVNT
VU1FX05PTk5VTExfQkVHSU4KIAogQHByb3RvY29sIFdLTmF2aWdhdGlvbkRlbGVnYXRlOwogQHBy
b3RvY29sIFdLVUlEZWxlZ2F0ZTsKK0Bwcm90b2NvbCBXS0Zvcm1EZWxlZ2F0ZTsKIAogLyohCiAg
QSBXS1dlYlZpZXcgb2JqZWN0IGRpc3BsYXlzIGludGVyYWN0aXZlIFdlYiBjb250ZW50LgpAQCAt
NjYsNiArNjcsOSBAQCBXS19DTEFTU19BVkFJTEFCTEUoMTBfMTAsIDhfMCkKIC8qISBAYWJzdHJh
Y3QgVGhlIHdlYiB2aWV3J3MgdXNlciBpbnRlcmZhY2UgZGVsZWdhdGUuICovCiBAcHJvcGVydHkg
KFdLX05VTExBQkxFX1BST1BFUlRZIG5vbmF0b21pYywgd2VhaykgaWQgPFdLVUlEZWxlZ2F0ZT4g
VUlEZWxlZ2F0ZTsKIAorLyohIEBhYnN0cmFjdCBUaGUgd2ViIHZpZXcncyBmb3JtIGRlbGVnYXRl
LiAqLworQHByb3BlcnR5IChXS19OVUxMQUJMRV9QUk9QRVJUWSBub25hdG9taWMsIHdlYWspIGlk
IDxXS0Zvcm1EZWxlZ2F0ZT4gZm9ybURlbGVnYXRlIFdLX0FWQUlMQUJMRSgxMF8xMSwgOV8wKTsK
KwogLyohIEBhYnN0cmFjdCBUaGUgd2ViIHZpZXcncyBiYWNrLWZvcndhcmQgbGlzdC4gKi8KIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgc3Ryb25nKSBXS0JhY2tGb3J3YXJkTGlzdCAq
YmFja0ZvcndhcmRMaXN0OwogCkBAIC0yNDIsMTAgKzI0Niw2IEBAIFdLX0NMQVNTX0FWQUlMQUJM
RSgxMF8xMCwgOF8wKQogICovCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIHN0cm9u
ZykgVUlTY3JvbGxWaWV3ICpzY3JvbGxWaWV3OwogCi0vKiEgQGFic3RyYWN0IEEgQm9vbGVhbiB2
YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgcHJvZ3JhbW1hdGljIGZvY3VzIG9uCi0gYW4gZWxlbWVu
dCBpcyBhbGxvd2VkIHRvIHRyaWdnZXIgYXNzaXN0YW5jZS4KLSAqLwotQHByb3BlcnR5IChub25h
dG9taWMpIEJPT0wgY2FuQXNzaXN0T25Qcm9ncmFtbWF0aWNGb2N1czsKICNlbmRpZgogCiAjaWYg
IVRBUkdFVF9PU19JUEhPTkUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KaW5kZXggMTlhMDI1YjU2MzQ0YjI3OTRmYzQ2NjdkZjA0YzMzNDNmNWY3
N2I0ZS4uNGY1NWM1NTk1YzEwNmUwNTljNTRjOTc1Nzk4ODkxZDlhNjRlMzRmOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTQ3LDYg
KzQ3LDcgQEAKICNpbXBvcnQgIldLQmFja0ZvcndhcmRMaXN0SXRlbUludGVybmFsLmgiCiAjaW1w
b3J0ICJXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS0Vycm9y
SW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLRm9ybURlbGVnYXRlLmgiCiAjaW1wb3J0ICJXS0hpc3Rv
cnlEZWxlZ2F0ZVByaXZhdGUuaCIKICNpbXBvcnQgIldLTGF5b3V0TW9kZS5oIgogI2ltcG9ydCAi
V0tOU0RhdGEuaCIKQEAgLTE1NSwxMSArMTU2LDExIEBAIFdLV2ViVmlldyogZnJvbVdlYlBhZ2VQ
cm94eShXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSkKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZp
ZXcgewogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZT4gX25hdmln
YXRpb25TdGF0ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpVSURlbGVnYXRlPiBfdWlE
ZWxlZ2F0ZTsKKyAgICBpZCA8V0tGb3JtRGVsZWdhdGU+IF9mb3JtRGVsZWdhdGU7CiAKICAgICBS
ZXRhaW5QdHI8X1dLUmVtb3RlT2JqZWN0UmVnaXN0cnk+IF9yZW1vdGVPYmplY3RSZWdpc3RyeTsK
ICAgICBfV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cyBfb2JzZXJ2ZWRSZW5kZXJpbmdQcm9ncmVz
c0V2ZW50czsKIAotICAgIFdlYktpdDo6V2Vha09iakNQdHI8aWQgPF9XS0Zvcm1EZWxlZ2F0ZT4+
IF9mb3JtRGVsZWdhdGU7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFJldGFpblB0cjxXS1Njcm9s
bFZpZXc+IF9zY3JvbGxWaWV3OwogICAgIFJldGFpblB0cjxXS0NvbnRlbnRWaWV3PiBfY29udGVu
dFZpZXc7CkBAIC0yMTEsOCArMjEyLDYgQEAgQGltcGxlbWVudGF0aW9uIFdLV2ViVmlldyB7CiAg
ICAgQk9PTCBfcGFnZUlzUHJpbnRpbmdUb1BERjsKICAgICBSZXRhaW5QdHI8Q0dQREZEb2N1bWVu
dFJlZj4gX3ByaW50ZWREb2N1bWVudDsKICAgICBWZWN0b3I8c3RkOjpmdW5jdGlvbjx2b2lkICgp
Pj4gX3NuYXBzaG90c0RlZmVycmVkRHVyaW5nUmVzaXplOwotCi0gICAgQk9PTCBfY2FuQXNzaXN0
T25Qcm9ncmFtbWF0aWNGb2N1czsKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBSZXRh
aW5QdHI8V0tWaWV3PiBfd2tWaWV3OwpAQCAtMzY5LDcgKzM2OCw2IEBAIC0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgY29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29u
ZmlndXJhdGlvCiAKICAgICBbW19jb25maWd1cmF0aW9uIF9jb250ZW50UHJvdmlkZXJSZWdpc3Ry
eV0gYWRkUGFnZToqX3BhZ2VdOwogCi0gICAgW3NlbGYgc2V0Q2FuQXNzaXN0T25Qcm9ncmFtbWF0
aWNGb2N1czpbX2NvbmZpZ3VyYXRpb24gY2FuQXNzaXN0T25Qcm9ncmFtbWF0aWNGb2N1c11dOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCkBAIC00NTQsNiArNDUyLDc1IEBAIC0gKHZvaWQp
c2V0VUlEZWxlZ2F0ZTooaWQ8V0tVSURlbGVnYXRlPilVSURlbGVnYXRlCiAgICAgX3VpRGVsZWdh
dGUtPnNldERlbGVnYXRlKFVJRGVsZWdhdGUpOwogfQogCistIChpZCA8V0tGb3JtRGVsZWdhdGU+
KWZvcm1EZWxlZ2F0ZQoreworICAgIHJldHVybiBfZm9ybURlbGVnYXRlOworfQorCistICh2b2lk
KXNldEZvcm1EZWxlZ2F0ZTooaWQgPFdLRm9ybURlbGVnYXRlPilmb3JtRGVsZWdhdGUKK3sKKyAg
ICBfZm9ybURlbGVnYXRlID0gZm9ybURlbGVnYXRlOworICAgIGlmICghW2Zvcm1EZWxlZ2F0ZSBj
b25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKF9XS0Zvcm1EZWxlZ2F0ZSldKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBjbGFzcyBGb3JtQ2xpZW50IDogcHVibGljIEFQSTo6Rm9ybUNsaWVudCB7
CisgICAgcHVibGljOgorICAgICAgICBleHBsaWNpdCBGb3JtQ2xpZW50KFdLV2ViVmlldyAqd2Vi
VmlldykKKyAgICAgICAgICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCisgICAgICAgIHsKKyAgICAg
ICAgfQorCisgICAgICAgIHZpcnR1YWwgfkZvcm1DbGllbnQoKSB7IH0KKworICAgICAgICB2aXJ0
dWFsIHZvaWQgd2lsbFN1Ym1pdEZvcm0oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6Oldl
YkZyYW1lUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmIHNvdXJjZUZyYW1lLCBjb25zdCBW
ZWN0b3I8c3RkOjpwYWlyPFdURjo6U3RyaW5nLCBXVEY6OlN0cmluZz4+JiB0ZXh0RmllbGRWYWx1
ZXMsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgUmVmPFdlYktpdDo6V2ViRm9ybVN1Ym1pc3Npb25M
aXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAodXNlckRhdGEgJiYgdXNlckRhdGEtPnR5cGUoKSAhPSBBUEk6Ok9iamVjdDo6VHlwZTo6
RGF0YSkgeworICAgICAgICAgICAgICAgIEFTU0VSVCghdXNlckRhdGEgfHwgdXNlckRhdGEtPnR5
cGUoKSA9PSBBUEk6Ok9iamVjdDo6VHlwZTo6RGF0YSk7CisgICAgICAgICAgICAgICAgbV93ZWJW
aWV3LT5fcGFnZS0+cHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+bWFya0N1cnJlbnRseURpc3BhdGNo
ZWRNZXNzYWdlQXNJbnZhbGlkKCk7CisgICAgICAgICAgICAgICAgbGlzdGVuZXItPmNvbnRpbnVl
U3VibWlzc2lvbigpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgYXV0byBmb3JtRGVsZWdhdGUgPSAoaWQgPF9XS0Zvcm1EZWxlZ2F0ZT4pIG1f
d2ViVmlldy0+X2Zvcm1EZWxlZ2F0ZTsKKyAgICAgICAgICAgIGlmICghW2Zvcm1EZWxlZ2F0ZSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OndpbGxTdWJtaXRGb3JtVmFsdWVz
OnVzZXJPYmplY3Q6c3VibWlzc2lvbkhhbmRsZXI6KV0pIHsKKyAgICAgICAgICAgICAgICBsaXN0
ZW5lci0+Y29udGludWVTdWJtaXNzaW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBhdXRvIHZhbHVlTWFwID0gYWRvcHROUyhbW05TTXV0
YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6dGV4dEZpZWxkVmFsdWVzLnNp
emUoKV0pOworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogdGV4dEZpZWxkVmFs
dWVzKQorICAgICAgICAgICAgICAgIFt2YWx1ZU1hcCBzZXRPYmplY3Q6cGFpci5zZWNvbmQgZm9y
S2V5OnBhaXIuZmlyc3RdOworCisgICAgICAgICAgICBOU09iamVjdCA8TlNTZWN1cmVDb2Rpbmc+
ICp1c2VyT2JqZWN0ID0gbmlsOworICAgICAgICAgICAgaWYgKEFQSTo6RGF0YSogZGF0YSA9IHN0
YXRpY19jYXN0PEFQSTo6RGF0YSo+KHVzZXJEYXRhKSkgeworICAgICAgICAgICAgICAgIGF1dG8g
bnNEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlc05vQ29weTpjb25z
dF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oZGF0YS0+Ynl0ZXMoKSkpIGxl
bmd0aDpkYXRhLT5zaXplKCkgZnJlZVdoZW5Eb25lOk5PXSk7CisgICAgICAgICAgICAgICAgYXV0
byB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9y
UmVhZGluZ1dpdGhEYXRhOm5zRGF0YS5nZXQoKV0pOworICAgICAgICAgICAgICAgIFt1bmFyY2hp
dmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107CisgICAgICAgICAgICAgICAgQHRyeSB7
CisgICAgICAgICAgICAgICAgICAgIHVzZXJPYmplY3QgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmpl
Y3RPZkNsYXNzOltOU09iamVjdCBjbGFzc10gZm9yS2V5OkAidXNlck9iamVjdCJdOworICAgICAg
ICAgICAgICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CisgICAgICAgICAg
ICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSB1c2VyIGRhdGE6ICVAIiwgZXhj
ZXB0aW9uKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IFJlZlB0cjxXZWJLaXQ6OldlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eT4gbG9jYWxMaXN0
ZW5lciA9IFdURjo6bW92ZShsaXN0ZW5lcik7CisgICAgICAgICAgICBSZWZQdHI8V2ViS2l0OjpD
b21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyPiBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9u
SGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZm9ybURlbGVnYXRlLCBAc2VsZWN0b3IoX3dlYlZp
ZXc6d2lsbFN1Ym1pdEZvcm1WYWx1ZXM6dXNlck9iamVjdDpzdWJtaXNzaW9uSGFuZGxlcjopKTsK
KyAgICAgICAgICAgIFtmb3JtRGVsZWdhdGUgX3dlYlZpZXc6bV93ZWJWaWV3IHdpbGxTdWJtaXRG
b3JtVmFsdWVzOnZhbHVlTWFwLmdldCgpIHVzZXJPYmplY3Q6dXNlck9iamVjdCBzdWJtaXNzaW9u
SGFuZGxlcjpbbG9jYWxMaXN0ZW5lciwgY2hlY2tlcl0geworICAgICAgICAgICAgICAgIGNoZWNr
ZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICAgICAgICAgIGxvY2FsTGlz
dGVuZXItPmNvbnRpbnVlU3VibWlzc2lvbigpOworICAgICAgICAgICAgfV07CisgICAgICAgIH0K
KworICAgIHByaXZhdGU6CisgICAgICAgIFdLV2ViVmlldyAqbV93ZWJWaWV3OworICAgIH07CisK
KyAgICBpZiAoZm9ybURlbGVnYXRlKQorICAgICAgICBfcGFnZS0+c2V0Rm9ybUNsaWVudChzdGQ6
Om1ha2VfdW5pcXVlPEZvcm1DbGllbnQ+KHNlbGYpKTsKKyAgICBlbHNlCisgICAgICAgIF9wYWdl
LT5zZXRGb3JtQ2xpZW50KG51bGxwdHIpOworfQorCiAtIChXS05hdmlnYXRpb24gKilsb2FkUmVx
dWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogewogICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9w
YWdlLT5sb2FkUmVxdWVzdChyZXF1ZXN0KTsKQEAgLTcyMCwxNiArNzg3LDYgQEAgLSAoVUlTY3Jv
bGxWaWV3ICopc2Nyb2xsVmlldwogICAgIHJldHVybiBfc2Nyb2xsVmlldy5nZXQoKTsKIH0KIAot
LSAoQk9PTCljYW5Bc3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzCi17Ci0gICAgcmV0dXJuIF9jYW5B
c3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzOwotfQotCi0tICh2b2lkKXNldENhbkFzc2lzdE9uUHJv
Z3JhbW1hdGljRm9jdXM6KEJPT0wpY2FuQXNzaXN0T25Qcm9ncmFtbWF0aWNGb2N1cwotewotICAg
IF9jYW5Bc3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzID0gY2FuQXNzaXN0T25Qcm9ncmFtbWF0aWNG
b2N1czsKLX0KLQogLSAoV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICopYnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlcgogewogICAgIHJldHVybiBbX2NvbnRlbnRWaWV3IGJyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXJdOwpAQCAtMjQzMyw3NCArMjQ5MCw2IEBAIC0gKHZvaWQpX3NhdmVCYWNrRm9y
d2FyZFNuYXBzaG90Rm9ySXRlbTooV0tCYWNrRm9yd2FyZExpc3RJdGVtICopaXRlbQogICAgIF9w
YWdlLT5yZWNvcmROYXZpZ2F0aW9uU25hcHNob3QoaXRlbS5faXRlbSk7CiB9CiAKLS0gKGlkIDxf
V0tGb3JtRGVsZWdhdGU+KV9mb3JtRGVsZWdhdGUKLXsKLSAgICByZXR1cm4gX2Zvcm1EZWxlZ2F0
ZS5nZXRBdXRvcmVsZWFzZWQoKTsKLX0KLQotLSAodm9pZClfc2V0Rm9ybURlbGVnYXRlOihpZCA8
X1dLRm9ybURlbGVnYXRlPilmb3JtRGVsZWdhdGUKLXsKLSAgICBfZm9ybURlbGVnYXRlID0gZm9y
bURlbGVnYXRlOwotCi0gICAgY2xhc3MgRm9ybUNsaWVudCA6IHB1YmxpYyBBUEk6OkZvcm1DbGll
bnQgewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgRm9ybUNsaWVudChXS1dlYlZpZXcg
KndlYlZpZXcpCi0gICAgICAgICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQotICAgICAgICB7Ci0g
ICAgICAgIH0KLQotICAgICAgICB2aXJ0dWFsIH5Gb3JtQ2xpZW50KCkgeyB9Ci0KLSAgICAgICAg
dmlydHVhbCB2b2lkIHdpbGxTdWJtaXRGb3JtKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0
OjpXZWJGcmFtZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiBzb3VyY2VGcmFtZSwgY29u
c3QgVmVjdG9yPHN0ZDo6cGFpcjxXVEY6OlN0cmluZywgV1RGOjpTdHJpbmc+PiYgdGV4dEZpZWxk
VmFsdWVzLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFJlZjxXZWJLaXQ6OldlYkZvcm1TdWJtaXNz
aW9uTGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lcikgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKHVzZXJEYXRhICYmIHVzZXJEYXRhLT50eXBlKCkgIT0gQVBJOjpPYmplY3Q6OlR5
cGU6OkRhdGEpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoIXVzZXJEYXRhIHx8IHVzZXJEYXRh
LT50eXBlKCkgPT0gQVBJOjpPYmplY3Q6OlR5cGU6OkRhdGEpOwotICAgICAgICAgICAgICAgIG1f
d2ViVmlldy0+X3BhZ2UtPnByb2Nlc3MoKS5jb25uZWN0aW9uKCktPm1hcmtDdXJyZW50bHlEaXNw
YXRjaGVkTWVzc2FnZUFzSW52YWxpZCgpOwotICAgICAgICAgICAgICAgIGxpc3RlbmVyLT5jb250
aW51ZVN1Ym1pc3Npb24oKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIGF1dG8gZm9ybURlbGVnYXRlID0gbV93ZWJWaWV3LT5fZm9ybURlbGVn
YXRlLmdldCgpOwotCi0gICAgICAgICAgICBpZiAoIVtmb3JtRGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzp3aWxsU3VibWl0Rm9ybVZhbHVlczp1c2VyT2JqZWN0
OnN1Ym1pc3Npb25IYW5kbGVyOildKSB7Ci0gICAgICAgICAgICAgICAgbGlzdGVuZXItPmNvbnRp
bnVlU3VibWlzc2lvbigpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgYXV0byB2YWx1ZU1hcCA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9u
YXJ5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnRleHRGaWVsZFZhbHVlcy5zaXplKCldKTsKLSAg
ICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IHRleHRGaWVsZFZhbHVlcykKLSAgICAg
ICAgICAgICAgICBbdmFsdWVNYXAgc2V0T2JqZWN0OnBhaXIuc2Vjb25kIGZvcktleTpwYWlyLmZp
cnN0XTsKLQotICAgICAgICAgICAgTlNPYmplY3QgPE5TU2VjdXJlQ29kaW5nPiAqdXNlck9iamVj
dCA9IG5pbDsKLSAgICAgICAgICAgIGlmIChBUEk6OkRhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxB
UEk6OkRhdGEqPih1c2VyRGF0YSkpIHsKLSAgICAgICAgICAgICAgICBhdXRvIG5zRGF0YSA9IGFk
b3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6Y29uc3RfY2FzdDx2b2lk
Kj4oc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRhdGEtPmJ5dGVzKCkpKSBsZW5ndGg6ZGF0YS0+
c2l6ZSgpIGZyZWVXaGVuRG9uZTpOT10pOwotICAgICAgICAgICAgICAgIGF1dG8gdW5hcmNoaXZl
ciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdXaXRo
RGF0YTpuc0RhdGEuZ2V0KCldKTsKLSAgICAgICAgICAgICAgICBbdW5hcmNoaXZlciBzZXRSZXF1
aXJlc1NlY3VyZUNvZGluZzpZRVNdOwotICAgICAgICAgICAgICAgIEB0cnkgewotICAgICAgICAg
ICAgICAgICAgICB1c2VyT2JqZWN0ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpb
TlNPYmplY3QgY2xhc3NdIGZvcktleTpAInVzZXJPYmplY3QiXTsKLSAgICAgICAgICAgICAgICB9
IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewotICAgICAgICAgICAgICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBkZWNvZGUgdXNlciBkYXRhOiAlQCIsIGV4Y2VwdGlvbik7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBSZWZQdHI8V2Vi
S2l0OjpXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHk+IGxvY2FsTGlzdGVuZXIgPSBXVEY6
Om1vdmUobGlzdGVuZXIpOwotICAgICAgICAgICAgUmVmUHRyPFdlYktpdDo6Q29tcGxldGlvbkhh
bmRsZXJDYWxsQ2hlY2tlcj4gY2hlY2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxs
Q2hlY2tlcjo6Y3JlYXRlKGZvcm1EZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKF93ZWJWaWV3Ondp
bGxTdWJtaXRGb3JtVmFsdWVzOnVzZXJPYmplY3Q6c3VibWlzc2lvbkhhbmRsZXI6KSk7Ci0gICAg
ICAgICAgICBbZm9ybURlbGVnYXRlIF93ZWJWaWV3Om1fd2ViVmlldyB3aWxsU3VibWl0Rm9ybVZh
bHVlczp2YWx1ZU1hcC5nZXQoKSB1c2VyT2JqZWN0OnVzZXJPYmplY3Qgc3VibWlzc2lvbkhhbmRs
ZXI6W2xvY2FsTGlzdGVuZXIsIGNoZWNrZXJdIHsKLSAgICAgICAgICAgICAgICBjaGVja2VyLT5k
aWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAgICAgICAgICBsb2NhbExpc3RlbmVy
LT5jb250aW51ZVN1Ym1pc3Npb24oKTsKLSAgICAgICAgICAgIH1dOwotICAgICAgICB9Ci0KLSAg
ICBwcml2YXRlOgotICAgICAgICBXS1dlYlZpZXcgKm1fd2ViVmlldzsKLSAgICB9OwotCi0gICAg
aWYgKGZvcm1EZWxlZ2F0ZSkKLSAgICAgICAgX3BhZ2UtPnNldEZvcm1DbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxGb3JtQ2xpZW50PihzZWxmKSk7Ci0gICAgZWxzZQotICAgICAgICBfcGFnZS0+c2V0
Rm9ybUNsaWVudChudWxscHRyKTsKLX0KLQogLSAoQk9PTClfaXNEaXNwbGF5aW5nU3RhbmRhbG9u
ZUltYWdlRG9jdW1lbnQKIHsKICAgICBpZiAoYXV0byogbWFpbkZyYW1lID0gX3BhZ2UtPm1haW5G
cmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaAppbmRleCBkYmRmMmQxMTY5NDk4YmVlYWEzZmY3
ZmE1NGM1Mzk1MmM2OGJjYWFmLi5mZTdhYzc4NDNiM2QwODZlZWU0NzM2NzdlZmEwYmQ0NjcwMmFi
M2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaApAQCAtMTE5LDEyICsxMTksNiBAQCBXS19DTEFT
U19BVkFJTEFCTEUoMTBfMTAsIDhfMCkKICAqLwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wg
YWxsb3dzUGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2sgV0tfQVZBSUxBQkxFKE5BLCA5XzAp
OwogCi0vKiEgQGFic3RyYWN0IEEgQm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgcHJv
Z3JhbW1hdGljIGZvY3VzIG9uCi0gYW4gZWxlbWVudCBpcyBhbGxvd2VkIHRvIHRyaWdnZXIgYXNz
aXN0YW5jZS4KLSBAZGlzY3Vzc2lvbiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBOTy4KLSAqLwotQHBy
b3BlcnR5IChub25hdG9taWMpIEJPT0wgY2FuQXNzaXN0T25Qcm9ncmFtbWF0aWNGb2N1czsKLQog
I2VuZGlmCiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQppbmRleCBhMjMwOGQzMzc5MmY5
NWM1ODMwM2Q2ZmYwMTM2MGEwYzllNmIyNmUwLi5mNjU3ZTI0Mjc0ZjViMDJkNDRhYzFiNTJiNWEw
ZTg3MTE4ZjQzNTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCkBAIC0xMTIsNyArMTEyLDYg
QEAgLSAoaW5zdGFuY2V0eXBlKWluaXQKICAgICBfYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjayA9
IFdLR2V0RGV2aWNlQ2xhc3MoKSA9PSBXS0RldmljZUNsYXNzaVBhZDsKICAgICBfaW5saW5lTWVk
aWFQbGF5YmFja1JlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGUgPSAhX2FsbG93c0lubGluZU1l
ZGlhUGxheWJhY2s7CiAgICAgX21lZGlhRGF0YUxvYWRzQXV0b21hdGljYWxseSA9IE5POwotICAg
IF9jYW5Bc3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzID0gTk87CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCkBAIC0zNjUsMTYgKzM2NCw2IEBAIC0gKHZvaWQp
X3NldE1lZGlhRGF0YUxvYWRzQXV0b21hdGljYWxseTooQk9PTCltZWRpYURhdGFMb2Fkc0F1dG9t
YXRpY2FsbHkKIHsKICAgICBfbWVkaWFEYXRhTG9hZHNBdXRvbWF0aWNhbGx5ID0gbWVkaWFEYXRh
TG9hZHNBdXRvbWF0aWNhbGx5OwogfQotCi0tIChCT09MKV9jYW5Bc3Npc3RPblByb2dyYW1tYXRp
Y0ZvY3VzCi17Ci0gICAgcmV0dXJuIF9jYW5Bc3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzOwotfQot
Ci0tICh2b2lkKV9zZXRDYW5Bc3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzOihCT09MKWNhbkFzc2lz
dE9uUHJvZ3JhbW1hdGljRm9jdXMKLXsKLSAgICBfY2FuQXNzaXN0T25Qcm9ncmFtbWF0aWNGb2N1
cyA9IGNhbkFzc2lzdE9uUHJvZ3JhbW1hdGljRm9jdXM7Ci19CiAjZW5kaWYKIAogQGVuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZh
dGUuaAppbmRleCBhMWVhY2Q1MWQwODNkODE4ZmU4ZjVjZTVlN2ZhYWI5NDBjNTZjMGZlLi5hZjQ4
M2YzNDkxNzU1OTg3MzMxZTNhYjc0N2JiMzQ2Yzk2MGMwZDc3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtNDcs
NyArNDcsNiBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tQYWdpbmF0aW9uTW9kZSkg
ewogQHByb3RvY29sIFdLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZTsKIEBwcm90b2NvbCBfV0tEaWFn
bm9zdGljTG9nZ2luZ0RlbGVnYXRlOwogQHByb3RvY29sIF9XS0ZpbmREZWxlZ2F0ZTsKLUBwcm90
b2NvbCBfV0tGb3JtRGVsZWdhdGU7CiAKIEBpbnRlcmZhY2UgV0tXZWJWaWV3IChXS1ByaXZhdGUp
CiAKQEAgLTE5OCw4ICsxOTcsNiBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tQYWdp
bmF0aW9uTW9kZSkgewogLSAodm9pZClfY291bnRTdHJpbmdNYXRjaGVzOihOU1N0cmluZyAqKXN0
cmluZyBvcHRpb25zOihfV0tGaW5kT3B0aW9ucylvcHRpb25zIG1heENvdW50OihOU1VJbnRlZ2Vy
KW1heENvdW50OwogLSAodm9pZClfaGlkZUZpbmRVSTsKIAotQHByb3BlcnR5IChub25hdG9taWMs
IHdlYWssIHNldHRlcj1fc2V0Rm9ybURlbGVnYXRlOikgaWQgPF9XS0Zvcm1EZWxlZ2F0ZT4gX2Zv
cm1EZWxlZ2F0ZTsKLQogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXI9X2lz
RGlzcGxheWluZ1N0YW5kYWxvbmVJbWFnZURvY3VtZW50KSBCT09MIF9kaXNwbGF5aW5nU3RhbmRh
bG9uZUltYWdlRG9jdW1lbnQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGdldHRl
cj1faXNEaXNwbGF5aW5nU3RhbmRhbG9uZU1lZGlhRG9jdW1lbnQpIEJPT0wgX2Rpc3BsYXlpbmdT
dGFuZGFsb25lTWVkaWFEb2N1bWVudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tGb3JtRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLRm9ybURlbGVnYXRlLmgKaW5kZXggN2VhZmNmODUwNTgwMTJjOWE1
MDFjMWM1MWNmYzEwYjZhYTBhMzQ2MS4uZWY3YThmNWNjN2UyYmY1OGUxMDhhMzk4NDQ3NWNkN2Fl
NmEzN2ViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tGb3JtRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0Zvcm1EZWxlZ2F0ZS5oCkBAIC0yOCwxOSArMjgsMTggQEAKICNpZiBXS19BUElfRU5BQkxF
RAogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9X
S0Zvcm1EZWxlZ2F0ZS5oPgogCiBAY2xhc3MgV0tXZWJWaWV3OwogQHByb3RvY29sIF9XS0Zvcm1J
bnB1dFNlc3Npb247CiAKLUBwcm90b2NvbCBfV0tGb3JtRGVsZWdhdGUgPE5TT2JqZWN0PgorQHBy
b3RvY29sIF9XS0Zvcm1EZWxlZ2F0ZSA8V0tGb3JtRGVsZWdhdGU+CiAKIEBvcHRpb25hbAogCi0t
ICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFN0YXJ0SW5wdXRTZXNzaW9u
OihpZCA8X1dLRm9ybUlucHV0U2Vzc2lvbj4paW5wdXRTZXNzaW9uOwogLSAodm9pZClfd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyB3aWxsU3VibWl0Rm9ybVZhbHVlczooTlNEaWN0aW9uYXJ5
ICopdmFsdWVzIHVzZXJPYmplY3Q6KE5TT2JqZWN0IDxOU1NlY3VyZUNvZGluZz4gKil1c2VyT2Jq
ZWN0IHN1Ym1pc3Npb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSlzdWJtaXNzaW9uSGFuZGxlcjsK
IAogI2lmIFRBUkdFVF9PU19JUEhPTkUKLS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgYWNjZXNzb3J5Vmlld0N1c3RvbUJ1dHRvblRhcHBlZEluRm9ybUlucHV0U2Vzc2lvbjoo
aWQgPF9XS0Zvcm1JbnB1dFNlc3Npb24+KWlucHV0U2Vzc2lvbjsKIC0gKEJPT0wpX3dlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgaGFzU3VnZ2VzdGlvbnNGb3JDdXJyZW50U3RyaW5nSW5JbnB1
dFNlc3Npb246KGlkIDxfV0tGb3JtSW5wdXRTZXNzaW9uPilpbnB1dFNlc3Npb247CiAtIChOU0Fy
cmF5ICopX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3VnZ2VzdGlvbnNGb3JTdHJpbmc6
KE5TU3RyaW5nICopc3RyaW5nIGluSW5wdXRTZXNzaW9uOihpZCA8X1dLRm9ybUlucHV0U2Vzc2lv
bj4paW5wdXRTZXNzaW9uOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0Zvcm1JbnB1dFNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLRm9ybUlucHV0U2Vzc2lvbi5oCmluZGV4IDVkMDI3ZjljOTdi
YTYwNGE0NWIxNmY2NjMyNjVhZDAyYzgwNGI0ZGYuLmNjZDU2YTBlZjgxMjdhZjVhZWQyZjk2YjRi
ZDEwNGJhNjQ2NDhjMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLRm9ybUlucHV0U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLRm9ybUlucHV0U2Vzc2lvbi5oCkBAIC0yOCwxNiArMjgsMTIgQEAKICNp
ZiBXS19BUElfRU5BQkxFRAogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNp
bXBvcnQgPFdlYktpdC9XS0Zvcm1JbnB1dFNlc3Npb24uaD4KIAotQHByb3RvY29sIF9XS0Zvcm1J
bnB1dFNlc3Npb24gPE5TT2JqZWN0PgorQHByb3RvY29sIF9XS0Zvcm1JbnB1dFNlc3Npb24gPFdL
Rm9ybUlucHV0U2Vzc2lvbj4KIAotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0
ZXI9aXNWYWxpZCkgQk9PTCB2YWxpZDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkg
TlNPYmplY3QgPE5TU2VjdXJlQ29kaW5nPiAqdXNlck9iamVjdDsKIAotI2lmIFRBUkdFVF9PU19J
UEhPTkUKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqYWNjZXNzb3J5Vmll
d0N1c3RvbUJ1dHRvblRpdGxlOwotI2VuZGlmCi0KIEBlbmQKIAogI2VuZGlmIC8vIFdLX0FQSV9F
TkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGI4Njg2MmUwMzEzNTZmMWRkNzQ4YzYxYTA5Njdl
ZjViNjgwNDIxZGIuLjEzODRhMTNjNjIxY2E3YjU2NDE5ZDhlNDYxMWJhMmRhZGE2ZDg3NDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tCkBAIC0zOSw2ICszOSw3IEBACiAjaW1wb3J0ICJUZXh0SW5wdXRTUEku
aCIKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0ICJXS0FjdGlvblNoZWV0QXNzaXN0YW50
LmgiCisjaW1wb3J0ICJXS0Zvcm1EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiV0tGb3JtSW5wdXRDb250
cm9sLmgiCiAjaW1wb3J0ICJXS0Zvcm1TZWxlY3RDb250cm9sLmgiCiAjaW1wb3J0ICJXS0ltYWdl
UHJldmlld1ZpZXdDb250cm9sbGVyLmgiCkBAIC01Myw3ICs1NCw2IEBACiAjaW1wb3J0ICJXZWJQ
YWdlTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCAiX1dL
QWN0aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5oIgotI2ltcG9ydCAiX1dLRm9ybURlbGVnYXRl
LmgiCiAjaW1wb3J0ICJfV0tGb3JtSW5wdXRTZXNzaW9uLmgiCiAjaW1wb3J0IDxDb3JlVGV4dC9D
VEZvbnQuaD4KICNpbXBvcnQgPENvcmVUZXh0L0NURm9udERlc2NyaXB0b3IuaD4KQEAgLTIyNDMs
OSArMjI0Myw5IEBAIC0gKHZvaWQpX2JlY29tZUZpcnN0UmVzcG9uZGVyV2l0aFNlbGVjdGlvbk1v
dmluZ0ZvcndhcmQ6KEJPT0wpc2VsZWN0aW5nRm9yd2FyZCBjCiAKIC0gKHZvaWQpYWNjZXNzb3J5
QXV0b0ZpbGwKIHsKLSAgICBpZCA8X1dLRm9ybURlbGVnYXRlPiBmb3JtRGVsZWdhdGUgPSBbX3dl
YlZpZXcgX2Zvcm1EZWxlZ2F0ZV07Ci0gICAgaWYgKFtmb3JtRGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzphY2Nlc3NvcnlWaWV3Q3VzdG9tQnV0dG9uVGFwcGVk
SW5Gb3JtSW5wdXRTZXNzaW9uOildKQotICAgICAgICBbZm9ybURlbGVnYXRlIF93ZWJWaWV3Ol93
ZWJWaWV3IGFjY2Vzc29yeVZpZXdDdXN0b21CdXR0b25UYXBwZWRJbkZvcm1JbnB1dFNlc3Npb246
X2Zvcm1JbnB1dFNlc3Npb24uZ2V0KCldOworICAgIGlkIDxXS0Zvcm1EZWxlZ2F0ZT4gZm9ybURl
bGVnYXRlID0gW193ZWJWaWV3IGZvcm1EZWxlZ2F0ZV07CisgICAgaWYgKFtmb3JtRGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OmFjY2Vzc29yeVZpZXdDdXN0b21C
dXR0b25UYXBwZWRJbkZvcm1JbnB1dFNlc3Npb246KV0pCisgICAgICAgIFtmb3JtRGVsZWdhdGUg
d2ViVmlldzpfd2ViVmlldyBhY2Nlc3NvcnlWaWV3Q3VzdG9tQnV0dG9uVGFwcGVkSW5Gb3JtSW5w
dXRTZXNzaW9uOl9mb3JtSW5wdXRTZXNzaW9uLmdldCgpXTsKIH0KIAogLSAodm9pZClhY2Nlc3Nv
cnlDbGVhcgpAQCAtMzAxMyw5ICszMDEzLDIwIEBAIHN0YXRpYyBib29sIGlzQXNzaXN0YWJsZUlu
cHV0VHlwZShJbnB1dFR5cGUgdHlwZSkKIAogLSAodm9pZClfc3RhcnRBc3Npc3RpbmdOb2RlOihj
b25zdCBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiYpaW5mb3JtYXRpb24gdXNlcklzSW50ZXJhY3Rp
bmc6KEJPT0wpdXNlcklzSW50ZXJhY3RpbmcgYmx1clByZXZpb3VzTm9kZTooQk9PTClibHVyUHJl
dmlvdXNOb2RlIHVzZXJPYmplY3Q6KE5TT2JqZWN0IDxOU1NlY3VyZUNvZGluZz4gKil1c2VyT2Jq
ZWN0CiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgaXMgYSB0ZW1wb3Jhcnkgd29ya2Fyb3VuZCBmb3Ig
PHJkYXI6Ly9wcm9ibGVtLzIyMTI2NTE4Pi4gVGhlIHJlYWwgZml4IHdpbGwgaW52b2x2ZSByZWZh
Y3RvcmluZwotICAgIC8vIHRoZSB3YXkgd2UgYXNzaXN0IHByb2dyYW1tYXRpY2FsbHkgZm9jdXNl
ZCBub2Rlcy4KLSAgICBpZiAoIXVzZXJJc0ludGVyYWN0aW5nICYmICFfdGV4dFNlbGVjdGlvbkFz
c2lzdGFudCAmJiAhX3dlYlZpZXcuY2FuQXNzaXN0T25Qcm9ncmFtbWF0aWNGb2N1cykKKyAgICBp
ZCA8V0tGb3JtRGVsZWdhdGU+IGZvcm1EZWxlZ2F0ZSA9IFtfd2ViVmlldyBmb3JtRGVsZWdhdGVd
OworICAgIEJPT0wgc2hvdWxkU2hvd0tleWJvYXJkOworICAgIGlmIChbZm9ybURlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpzaG91bGRTaG93S2V5Ym9hcmRJbkNv
bnRleHQ6KV0pIHsKKyAgICAgICAgV0tGb2N1c2VkRWxlbWVudENvbnRleHQqIGNvbnRleHQgPSBb
W1dLRm9jdXNlZEVsZW1lbnRDb250ZXh0IGFsbG9jXSBpbml0V2l0aElucHV0VHlwZToodW5zaWdu
ZWQpaW5mb3JtYXRpb24uZWxlbWVudFR5cGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5w
dXRWYWx1ZTppbmZvcm1hdGlvbi52YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0ludGVy
YWN0aW5nOnVzZXJJc0ludGVyYWN0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNQcmV2aW91
c05vZGU6aW5mb3JtYXRpb24uaGFzUHJldmlvdXNOb2RlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaGFzTmV4dE5vZGU6aW5mb3JtYXRpb24uaGFzTmV4dE5vZGVdOworICAgICAgICBzaG91bGRT
aG93S2V5Ym9hcmQgPSBbZm9ybURlbGVnYXRlIHdlYlZpZXc6X3dlYlZpZXcgc2hvdWxkU2hvd0tl
eWJvYXJkSW5Db250ZXh0OmNvbnRleHRdOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFRoZSBk
ZWZhdWx0IGJlaGF2aW9yIGlzIHRvIGFsbG93IG5vZGUgYXNzaXN0YW5jZSBpZiB0aGUgdXNlciBp
cyBpbnRlcmFjdGluZyBvciB0aGUga2V5Ym9hcmQgaXMgYWxyZWFkeSBhY3RpdmUuCisgICAgICAg
IHNob3VsZFNob3dLZXlib2FyZCA9IHVzZXJJc0ludGVyYWN0aW5nIHx8IF90ZXh0U2VsZWN0aW9u
QXNzaXN0YW50OworICAgIH0KKyAgICBpZiAoIXNob3VsZFNob3dLZXlib2FyZCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKGJsdXJQcmV2aW91c05vZGUpCkBAIC0zMDU4LDEwICszMDY5LDkg
QEAgLSAodm9pZClfc3RhcnRBc3Npc3RpbmdOb2RlOihjb25zdCBBc3Npc3RlZE5vZGVJbmZvcm1h
dGlvbiYpaW5mb3JtYXRpb24gdXNlcklzSW4KICAgICAvLyBfaW5wdXRQZXJpcGhlcmFsIGhhcyBi
ZWVuIGluaXRpYWxpemVkIGluIGlucHV0VmlldyBjYWxsZWQgYnkgcmVsb2FkSW5wdXRWaWV3cy4K
ICAgICBbX2lucHV0UGVyaXBoZXJhbCBiZWdpbkVkaXRpbmddOwogCi0gICAgaWQgPF9XS0Zvcm1E
ZWxlZ2F0ZT4gZm9ybURlbGVnYXRlID0gW193ZWJWaWV3IF9mb3JtRGVsZWdhdGVdOwotICAgIGlm
IChbZm9ybURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlk
U3RhcnRJbnB1dFNlc3Npb246KV0pIHsKKyAgICBpZiAoW2Zvcm1EZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6ZGlkU3RhcnRJbnB1dFNlc3Npb246KV0pIHsKICAg
ICAgICAgX2Zvcm1JbnB1dFNlc3Npb24gPSBhZG9wdE5TKFtbV0tGb3JtSW5wdXRTZXNzaW9uIGFs
bG9jXSBpbml0V2l0aENvbnRlbnRWaWV3OnNlbGYgdXNlck9iamVjdDp1c2VyT2JqZWN0XSk7Ci0g
ICAgICAgIFtmb3JtRGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZpZXcgZGlkU3RhcnRJbnB1dFNlc3Np
b246X2Zvcm1JbnB1dFNlc3Npb24uZ2V0KCldOworICAgICAgICBbZm9ybURlbGVnYXRlIHdlYlZp
ZXc6X3dlYlZpZXcgZGlkU3RhcnRJbnB1dFNlc3Npb246X2Zvcm1JbnB1dFNlc3Npb24uZ2V0KCld
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGFhZmM0YTFiMWQzNzc3YWI5Mjg0ZTZhMWY2NzBhMzE4NzM5ZmNm
ZjUuLmQ2YWQ2YTQyMjEwNzM3MWZmYWQ0NWU2ODNhOWM4MjM4NDZjNmEzM2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY4Niw2
ICs2ODYsOSBAQAogCQkyREY5RUVFODFBNzgyNDU1MDBCNkNGQkUgLyogV0tGcmFtZUluZm9JbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRG
OUVFRTcxQTc4MjQ1NTAwQjZDRkJFIC8qIFdLRnJhbWVJbmZvSW50ZXJuYWwuaCAqLzsgfTsKIAkJ
MkRGOUVFRUMxQTc4MzZFRTAwQjZDRkJFIC8qIEFQSU5hdmlnYXRpb25BY3Rpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERjlFRUVBMUE3ODM2RUUw
MEI2Q0ZCRSAvKiBBUElOYXZpZ2F0aW9uQWN0aW9uLmggKi87IH07CiAJCTJERjlFRUVFMUE3ODZF
QUQwMEI2Q0ZCRSAvKiBBUElOYXZpZ2F0aW9uUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERjlFRUVEMUE3ODZFQUQwMEI2Q0ZCRSAvKiBB
UElOYXZpZ2F0aW9uUmVzcG9uc2UuaCAqLzsgfTsKKwkJMkUzNEI4ODYxQkJCQTAyMDAwNTkyMzI2
IC8qIFdLRm9ybURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkUzNEI4ODUxQkJCQTAyMDAwNTkyMzI2IC8qIFdLRm9ybURlbGVnYXRlLm1t
ICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CisJCTJFNDBBRUMzMUJCQTE1
NzEwMEYxNjk4OSAvKiBXS0Zvcm1EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MEFFQzExQkJBMTJFODAwRjE2OTg5IC8qIFdLRm9ybURl
bGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9Owor
CQkyRUJDNjcwMjFCQkFGMzFGMDA0ODVDQUIgLyogV0tGb3JtSW5wdXRTZXNzaW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRUJDNjcwMTFCQkFGMkRD
MDA0ODVDQUIgLyogV0tGb3JtSW5wdXRTZXNzaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHVibGljLCApOyB9OyB9OwogCQkzMTA5OTk3MzE0NkM3NUEyMDAyOURFQjkgLyogV2Vi
Tm90aWZpY2F0aW9uQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMxMDk5OTcxMTQ2Qzc1OUIwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25D
bGllbnQuY3BwICovOyB9OwogCQkzMTA5OTlDNzE0NkM5RTNEMDAyOURFQjkgLyogV2ViTm90aWZp
Y2F0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMTA5OTk2ODE0NkM3MUY1MDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50Lmgg
Ki87IH07CiAJCTMxMkMwQzRBMTQ2RERDOEEwMDE2QzkxMSAvKiBXS05vdGlmaWNhdGlvblByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJD
MEM0OTE0NkREQzhBMDAxNkM5MTEgLyogV0tOb3RpZmljYXRpb25Qcm92aWRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yODM0LDYgKzI4Mzcs
OSBAQAogCQkyREY5RUVFNzFBNzgyNDU1MDBCNkNGQkUgLyogV0tGcmFtZUluZm9JbnRlcm5hbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0ZyYW1lSW5mb0ludGVybmFsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJERjlFRUVBMUE3ODM2RUUwMEI2Q0ZCRSAv
KiBBUElOYXZpZ2F0aW9uQWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFQSU5hdmlnYXRpb25BY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRG
OUVFRUQxQTc4NkVBRDAwQjZDRkJFIC8qIEFQSU5hdmlnYXRpb25SZXNwb25zZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElOYXZpZ2F0aW9uUmVzcG9uc2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkUzNEI4ODUxQkJCQTAyMDAwNTkyMzI2IC8qIFdLRm9y
bURlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tG
b3JtRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJFNDBBRUMxMUJC
QTEyRTgwMEYxNjk4OSAvKiBXS0Zvcm1EZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Zvcm1E
ZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRUJDNjcwMTFCQkFGMkRD
MDA0ODVDQUIgLyogV0tGb3JtSW5wdXRTZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRm9ybUlu
cHV0U2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTA5OTk2ODE0NkM3
MUY1MDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
Yk5vdGlmaWNhdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTA5
OTk3MTE0NkM3NTlCMDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMkMwQzQ5MTQ2RERDOEEwMDE2QzkxMSAv
KiBXS05vdGlmaWNhdGlvblByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLTm90aWZpY2F0aW9uUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTUzOTEsNiArNTM5Nyw5IEBACiAJCQkJMUFENjBGNUMxOEUyMEY0QzAwMjBDMDM0IC8qIFdL
V2luZG93RmVhdHVyZXMuaCAqLywKIAkJCQkxQUQ2MEY1QjE4RTIwRjRDMDAyMEMwMzQgLyogV0tX
aW5kb3dGZWF0dXJlcy5tbSAqLywKIAkJCQkxQUQ2MEY1RjE4RTIwRjc0MDAyMEMwMzQgLyogV0tX
aW5kb3dGZWF0dXJlc0ludGVybmFsLmggKi8sCisJCQkJMkU0MEFFQzExQkJBMTJFODAwRjE2OTg5
IC8qIFdLRm9ybURlbGVnYXRlLmggKi8sCisJCQkJMkUzNEI4ODUxQkJCQTAyMDAwNTkyMzI2IC8q
IFdLRm9ybURlbGVnYXRlLm1tICovLAorCQkJCTJFQkM2NzAxMUJCQUYyREMwMDQ4NUNBQiAvKiBX
S0Zvcm1JbnB1dFNlc3Npb24uaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gQ29jb2E7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzg5MCw2ICs3ODk5LDcgQEAKIAkJCQlCQzcyQkExRTEx
RTY0OTA3MDAxRUI0RUEgLyogV2ViQmFja0ZvcndhcmRMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MThEMkNBRTEyRDUxNTNCMDAzQkI5M0IgLyogV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkM3MkI5RkIxMUU2NDc2QjAwMUVCNEVBIC8qIFdlYkJhY2tGb3J3
YXJkTGlzdFByb3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQkyRTQwQUVDMzFCQkExNTcxMDBGMTY5
ODkgLyogV0tGb3JtRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRjUwNzI4MTI0MzI5
QUEwMDU5NTVBRSAvKiBXZWJDZXJ0aWZpY2F0ZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MDMyRDc1MTBGNDM3OEQwMDU4QzE1QSAvKiBXZWJDaHJvbWVDbGllbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTNGODdCOUJFMTU4OTQwMTkwMDkwRkY2MiAvKiBXZWJDb2xvckNob29zZXIuaCBpbiBI
ZWFkZXJzICovLApAQCAtNzkxNSw2ICs3OTI1LDcgQEAKIAkJCQkzMzA5MzQ0ODEzMTVCOTIyMDA5
N0E3QkMgLyogV2ViQ29va2llTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkz
MzA5MzQ1NjEzMTVCOTc1MDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlclByb3h5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzM0FBMTA2NzEzMUYwNjAwMDBENEE1NzUgLyogV2ViQ29va2llTWFuYWdl
clByb3h5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkyRUJDNjcwMjFCQkFGMzFGMDA0ODVD
QUIgLyogV0tGb3JtSW5wdXRTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzA5MzQ0QTEz
MTVCOTIyMDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMUREN0IyMTE0REMzOTYwMDVBREFGMyAvKiBXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkY1ODlCMTJBODgzODgwMDYyOTUzMCAvKiBX
ZWJDcmVkZW50aWFsLmggaW4gSGVhZGVycyAqLywKQEAgLTk2NzYsNiArOTY4Nyw3IEBACiAJCQkJ
MUE0NEI5NUIxNkI3M0Y5RjAwQjdCQkQ4IC8qIFN0b3JhZ2VNYW5hZ2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBQjMxQTk2MTZCQzY4ODEwMEY2REJDOSAvKiBTdG9yYWdlTWFuYWdlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTQ0Qjk1NzE2QjczN0FBMDBCN0JC
RDggLyogU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMkUzNEI4
ODYxQkJCQTAyMDAwNTkyMzI2IC8qIFdLRm9ybURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUFFMDBENkIxODMyN0MxMjAwMDg3REQ3IC8qIFN0cmluZ1JlZmVyZW5jZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyOTZCRDg1RTE1MDE5QkMzMDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0aWVz
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMVpaNDE3RUYxMkMwMEQ4NzAwMkJFNjdCIC8qIFRleHRD
aGVja2VyQ29tcGxldGlvbi5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262273</attachid>
            <date>2015-10-01 12:11:48 -0700</date>
            <delta_ts>2015-10-07 12:41:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149646-20151001121122.patch</filename>
            <type>text/plain</type>
            <size>60772</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwNDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjBmNjJkNWRhYTRiZTQ5
YzM5NmNlZDUxMWEwMDNkMjQ4NWY0YTA0NC4uMDI2YWEwYjJkMjJhYmY3NGI2ZjY5MjczZGNiOTRi
NzA4ZDg5OGQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDE1LTEwLTAxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIFdLV2Vi
VmlldyBpbnB1dCBkZWxlZ2F0ZSBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0OTY0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlbmFtZXMgdGhlIGV4aXN0aW5nIF9XS0Zvcm1EZWxlZ2F0ZSB0byBf
V0tJbnB1dERlbGVnYXRlIGFuZCBhZGRzIGEgbmV3IGRlbGVnYXRlIFNQSSBtZXRob2QKKyAgICAg
ICAgLVtfV0tJbnB1dERlbGVnYXRlIF93ZWJWaWV3OnNob3VsZFN0YXJ0SW5wdXRTZXNzaW9uOl0g
dGhhdCBhbGxvd3MgY2xpZW50cyB0byBhbGxvdyBvciBkaXNhbGxvdworICAgICAgICBzaG93aW5n
IHVwIHRoZSBrZXlib2FyZC4gVG8gbWFrZSB0aGlzIGRlY2lzaW9uLCBjbGllbnRzIGFyZSBnaXZl
biBhIF9XS0VsZW1lbnRGb2N1c0NvbnRleHQsCisgICAgICAgIHdoaWNoIGNvbnRhaW5zIGluZm9y
bWF0aW9uIGFib3V0IHRoZSBmb2N1c2VkIGVsZW1lbnQgcHJpb3IgdG8gdGhlIGtleWJvYXJkIHNo
b3dpbmcgdXAgc28gdGhlCisgICAgICAgIGNsaWVudCB3aWxsIGJlIGFibGUgdG8gb3ZlcnJpZGUg
ZGVmYXVsdCBhc3Npc3RhbmNlIGJlaGF2aW9yLgorCisgICAgICAgIFdoaWxlIHRoZSBpbmZvcm1h
dGlvbiBjb250YWluZWQgaW4gYSBfV0tFbGVtZW50Rm9jdXNDb250ZXh0IGN1cnJlbnRseSBzZWVt
cyBsaWtlIG92ZXJraWxsIGZvcgorICAgICAgICBfd2ViVmlldzpzaG91bGRTdGFydElucHV0U2Vz
c2lvbiwgb3VyIGludGVudGlvbnMgYXJlIHRvIGdpdmUgV2ViS2l0IGNsaWVudHMgY29udHJvbCBv
dmVyIG1vcmUKKyAgICAgICAgZGV0YWlscyBvZiBob3cgbm9kZSBhc3Npc3RhbmNlIHdvcmtzLCBz
dWNoIGFzIGJlaW5nIGFibGUgdG8gdXNlIGEgY3VzdG9tIGVkaXRvciBmb3IgY2VydGFpbgorICAg
ICAgICB0eXBlcyBvZiBub2Rlcy4KKworICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvV2ViS2l0
UHJpdmF0ZS5oOiBBZGRlZCBuZXcgaGVhZGVyIF9XS0VsZW1lbnRGb2N1c0NvbnRleHQuaC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2lucHV0
RGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRJbnB1dERlbGVnYXRlOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOl0pOiBEZWxl
dGVkIGNhbkFzc2lzdE9uUHJvZ3JhbW1hdGljRm9jdXMgZmxhZy4KKyAgICAgICAgKC1bV0tXZWJW
aWV3IGNhbkFzc2lzdE9uUHJvZ3JhbW1hdGljRm9jdXNdKTogRGl0dG8uCisgICAgICAgICgtW1dL
V2ViVmlldyBzZXRDYW5Bc3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzOl0pOiBEaXR0by4KKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9mb3JtRGVsZWdhdGVdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9zZXRGb3JtRGVsZWdhdGU6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGluaXRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBfY2FuQXNzaXN0T25Qcm9ncmFtbWF0aWNGb2N1c10pOiBEZWxldGVkIGNhbkFz
c2lzdE9uUHJvZ3JhbW1hdGljRm9jdXMgZmxhZy4KKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBfc2V0Q2FuQXNzaXN0T25Qcm9ncmFtbWF0aWNGb2N1czpdKTogRGl0dG8uCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6IFJlbmFtZWQgX1dL
Rm9ybURlbGVnYXRlIHRvIF9XS0lucHV0RGVsZWdhdGUuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tFbGVtZW50Rm9jdXNDb250ZXh0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRm9ybURlbGVnYXRlLmguCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tJbnB1dERlbGVnYXRlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Zvcm1EZWxlZ2F0ZS5oLgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtX
S0VsZW1lbnRGb2N1c0NvbnRleHQgaW5pdFdpdGhBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbjppc0lu
dGVyYWN0aW5nOl0pOgorICAgICAgICAoLVtXS0VsZW1lbnRGb2N1c0NvbnRleHQgaW5wdXRUeXBl
XSk6CisgICAgICAgICgtW1dLRWxlbWVudEZvY3VzQ29udGV4dCBpbnB1dFZhbHVlXSk6CisgICAg
ICAgICgtW1dLRWxlbWVudEZvY3VzQ29udGV4dCB1c2VySXNJbnRlcmFjdGluZ10pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IGFjY2Vzc29yeUF1dG9GaWxsXSk6IFJlbmFtZWQgX1dLRm9ybURl
bGVnYXRlIHRvIF9XS0lucHV0RGVsZWdhdGUuCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3N0
YXJ0QXNzaXN0aW5nTm9kZTp1c2VySXNJbnRlcmFjdGluZzpibHVyUHJldmlvdXNOb2RlOnVzZXJP
YmplY3Q6XSk6IElmIHRoZSBpbnB1dCBkZWxlZ2F0ZSByZXNwb25kcyB0bworICAgICAgICAgICAg
c2hvdWxkU3RhcnRJbnB1dFNlc3Npb24sIGNvbnN1bHQgaXQgdG8gc2VlIGlmIHdlIHNob3VsZCBi
cmluZyB1cCB0aGUga2V5Ym9hcmQ7IG90aGVyd2lzZSwgdXNlIG91ciBkZWZhdWx0IGJlaGF2aW9y
LgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5J
bnB1dERlbGVnYXRlUHJpdmF0ZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRm9ybURlbGVn
YXRlUHJpdmF0ZS5oLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21h
Yy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAg
ICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfaW5wdXREZWxl
Z2F0ZV0pOiBSZW5hbWVkIF9XS0Zvcm1EZWxlZ2F0ZSB0byBfV0tJbnB1dERlbGVnYXRlLgorICAg
ICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgX3NldElu
cHV0RGVsZWdhdGU6XSk6IERpdHRvLgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXIgX2Zvcm1EZWxlZ2F0ZV0pOiBEaXR0by4KKyAgICAgICAgKC1b
V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9zZXRGb3JtRGVsZWdh
dGU6XSk6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21h
Yy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJQcml2YXRlLmg6IFJl
bmFtZWQgX1dLRm9ybURlbGVnYXRlIHRvIF9XS0lucHV0RGVsZWdhdGUuCisKIDIwMTUtMDktMzAg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBy
b2xsIG91dCByMTg4MzMxOiAiTmV0d29ya1Byb2Nlc3M6IEROUyBwcmVmZXRjaCBoYXBwZW5zIGlu
IHRoZSBXZWIgUHJvY2VzcyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Q29jb2EvV2ViS2l0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9X
ZWJLaXRQcml2YXRlLmgKaW5kZXggYWNmODYyNGUyZjA2ZjU1YTNkNzhhNWNjNjNhMzRjMmIzNDc0
ZjIzOC4uZmIyOTZkMjNlYzQ0Nzk4OGE1MmYwMTBiY2ExNjk3OWQxNzcxNGU4ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXRQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXRQcml2YXRlLmgKQEAgLTMxLDgg
KzMxLDkgQEAKICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvX1dLQWN0aXZhdGVkRWxlbWVudEluZm8uaD4KICNpbXBvcnQgPFdlYktpdC9fV0tFbGVt
ZW50QWN0aW9uLmg+Ci0jaW1wb3J0IDxXZWJLaXQvX1dLRm9ybURlbGVnYXRlLmg+CisjaW1wb3J0
IDxXZWJLaXQvX1dLRWxlbWVudEZvY3VzQ29udGV4dC5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0Zv
cm1JbnB1dFNlc3Npb24uaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tJbnB1dERlbGVnYXRlLmg+CiAj
aW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvX1dLVGh1bWJuYWlsVmlldy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1Zpc2l0ZWRMaW5r
U3RvcmUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5oCmluZGV4IDRhN2RlYzdjZjVmYzkxODliZDA0NThhNWU4NDI5Y2UyYWVjNzA3Y2UuLjU1ZGVi
ZWE3MjYwOWZiMzc1NzEyMTdmZGVmYjVkNjM1YjFkYmM3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaApAQCAtMjQxLDExICsyNDEsNiBAQCBX
S19DTEFTU19BVkFJTEFCTEUoMTBfMTAsIDhfMCkKIC8qISBAYWJzdHJhY3QgVGhlIHNjcm9sbCB2
aWV3IGFzc29jaWF0ZWQgd2l0aCB0aGUgd2ViIHZpZXcuCiAgKi8KIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSwgc3Ryb25nKSBVSVNjcm9sbFZpZXcgKnNjcm9sbFZpZXc7Ci0KLS8qISBA
YWJzdHJhY3QgQSBCb29sZWFuIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciBwcm9ncmFtbWF0aWMg
Zm9jdXMgb24KLSBhbiBlbGVtZW50IGlzIGFsbG93ZWQgdG8gdHJpZ2dlciBhc3Npc3RhbmNlLgot
ICovCi1AcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBjYW5Bc3Npc3RPblByb2dyYW1tYXRpY0Zv
Y3VzOwogI2VuZGlmCiAKICNpZiAhVEFSR0VUX09TX0lQSE9ORQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAxOWEwMjViNTYzNDRiMjc5
NGZjNDY2N2RmMDRjMzM0M2Y1Zjc3YjRlLi43YTc3NTU1ZTIxNmIyZjY0YTliZWMzNmYwMzkwNDAy
MjBjMTEyMWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQpAQCAtNzMsNyArNzMsNyBAQAogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5Lmgi
CiAjaW1wb3J0ICJfV0tEaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlLmgiCiAjaW1wb3J0ICJfV0tG
aW5kRGVsZWdhdGUuaCIKLSNpbXBvcnQgIl9XS0Zvcm1EZWxlZ2F0ZS5oIgorI2ltcG9ydCAiX1dL
SW5wdXREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnlJbnRlcm5h
bC5oIgogI2ltcG9ydCAiX1dLU2Vzc2lvblN0YXRlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1Zp
c2l0ZWRMaW5rU3RvcmVJbnRlcm5hbC5oIgpAQCAtMTU5LDcgKzE1OSw3IEBAIEBpbXBsZW1lbnRh
dGlvbiBXS1dlYlZpZXcgewogICAgIFJldGFpblB0cjxfV0tSZW1vdGVPYmplY3RSZWdpc3RyeT4g
X3JlbW90ZU9iamVjdFJlZ2lzdHJ5OwogICAgIF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzIF9v
YnNlcnZlZFJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzOwogCi0gICAgV2ViS2l0OjpXZWFrT2JqQ1B0
cjxpZCA8X1dLRm9ybURlbGVnYXRlPj4gX2Zvcm1EZWxlZ2F0ZTsKKyAgICBXZWJLaXQ6OldlYWtP
YmpDUHRyPGlkIDxfV0tJbnB1dERlbGVnYXRlPj4gX2lucHV0RGVsZWdhdGU7CiAjaWYgUExBVEZP
Uk0oSU9TKQogICAgIFJldGFpblB0cjxXS1Njcm9sbFZpZXc+IF9zY3JvbGxWaWV3OwogICAgIFJl
dGFpblB0cjxXS0NvbnRlbnRWaWV3PiBfY29udGVudFZpZXc7CkBAIC0yMTEsOCArMjExLDYgQEAg
QGltcGxlbWVudGF0aW9uIFdLV2ViVmlldyB7CiAgICAgQk9PTCBfcGFnZUlzUHJpbnRpbmdUb1BE
RjsKICAgICBSZXRhaW5QdHI8Q0dQREZEb2N1bWVudFJlZj4gX3ByaW50ZWREb2N1bWVudDsKICAg
ICBWZWN0b3I8c3RkOjpmdW5jdGlvbjx2b2lkICgpPj4gX3NuYXBzaG90c0RlZmVycmVkRHVyaW5n
UmVzaXplOwotCi0gICAgQk9PTCBfY2FuQXNzaXN0T25Qcm9ncmFtbWF0aWNGb2N1czsKICNlbmRp
ZgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBSZXRhaW5QdHI8V0tWaWV3PiBfd2tWaWV3OwpAQCAt
MzY4LDggKzM2Niw2IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJh
bWUgY29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvCiAgICAgX3BhZ2UtPmNvbnRl
bnRTaXplQ2F0ZWdvcnlEaWRDaGFuZ2UoW3NlbGYgX2NvbnRlbnRTaXplQ2F0ZWdvcnldKTsKIAog
ICAgIFtbX2NvbmZpZ3VyYXRpb24gX2NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5XSBhZGRQYWdlOipf
cGFnZV07Ci0KLSAgICBbc2VsZiBzZXRDYW5Bc3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzOltfY29u
ZmlndXJhdGlvbiBjYW5Bc3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzXV07CiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKE1BQykKQEAgLTcyMCwxNiArNzE2LDYgQEAgLSAoVUlTY3JvbGxWaWV3ICopc2Ny
b2xsVmlldwogICAgIHJldHVybiBfc2Nyb2xsVmlldy5nZXQoKTsKIH0KIAotLSAoQk9PTCljYW5B
c3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzCi17Ci0gICAgcmV0dXJuIF9jYW5Bc3Npc3RPblByb2dy
YW1tYXRpY0ZvY3VzOwotfQotCi0tICh2b2lkKXNldENhbkFzc2lzdE9uUHJvZ3JhbW1hdGljRm9j
dXM6KEJPT0wpY2FuQXNzaXN0T25Qcm9ncmFtbWF0aWNGb2N1cwotewotICAgIF9jYW5Bc3Npc3RP
blByb2dyYW1tYXRpY0ZvY3VzID0gY2FuQXNzaXN0T25Qcm9ncmFtbWF0aWNGb2N1czsKLX0KLQog
LSAoV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICopYnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
cgogewogICAgIHJldHVybiBbX2NvbnRlbnRWaWV3IGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJd
OwpAQCAtMjQzMywxNCArMjQxOSwxNCBAQCAtICh2b2lkKV9zYXZlQmFja0ZvcndhcmRTbmFwc2hv
dEZvckl0ZW06KFdLQmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW0KICAgICBfcGFnZS0+cmVjb3Jk
TmF2aWdhdGlvblNuYXBzaG90KGl0ZW0uX2l0ZW0pOwogfQogCi0tIChpZCA8X1dLRm9ybURlbGVn
YXRlPilfZm9ybURlbGVnYXRlCistIChpZCA8X1dLSW5wdXREZWxlZ2F0ZT4pX2lucHV0RGVsZWdh
dGUKIHsKLSAgICByZXR1cm4gX2Zvcm1EZWxlZ2F0ZS5nZXRBdXRvcmVsZWFzZWQoKTsKKyAgICBy
ZXR1cm4gX2lucHV0RGVsZWdhdGUuZ2V0QXV0b3JlbGVhc2VkKCk7CiB9CiAKLS0gKHZvaWQpX3Nl
dEZvcm1EZWxlZ2F0ZTooaWQgPF9XS0Zvcm1EZWxlZ2F0ZT4pZm9ybURlbGVnYXRlCistICh2b2lk
KV9zZXRJbnB1dERlbGVnYXRlOihpZCA8X1dLSW5wdXREZWxlZ2F0ZT4paW5wdXREZWxlZ2F0ZQog
ewotICAgIF9mb3JtRGVsZWdhdGUgPSBmb3JtRGVsZWdhdGU7CisgICAgX2lucHV0RGVsZWdhdGUg
PSBpbnB1dERlbGVnYXRlOwogCiAgICAgY2xhc3MgRm9ybUNsaWVudCA6IHB1YmxpYyBBUEk6OkZv
cm1DbGllbnQgewogICAgIHB1YmxpYzoKQEAgLTI0NjAsOSArMjQ0Niw5IEBAIC0gKHZvaWQpX3Nl
dEZvcm1EZWxlZ2F0ZTooaWQgPF9XS0Zvcm1EZWxlZ2F0ZT4pZm9ybURlbGVnYXRlCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGZvcm1E
ZWxlZ2F0ZSA9IG1fd2ViVmlldy0+X2Zvcm1EZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgICAgIGF1
dG8gaW5wdXREZWxlZ2F0ZSA9IG1fd2ViVmlldy0+X2lucHV0RGVsZWdhdGUuZ2V0KCk7CiAKLSAg
ICAgICAgICAgIGlmICghW2Zvcm1EZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KF93ZWJWaWV3OndpbGxTdWJtaXRGb3JtVmFsdWVzOnVzZXJPYmplY3Q6c3VibWlzc2lvbkhhbmRs
ZXI6KV0pIHsKKyAgICAgICAgICAgIGlmICghW2lucHV0RGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihfd2ViVmlldzp3aWxsU3VibWl0Rm9ybVZhbHVlczp1c2VyT2JqZWN0OnN1
Ym1pc3Npb25IYW5kbGVyOildKSB7CiAgICAgICAgICAgICAgICAgbGlzdGVuZXItPmNvbnRpbnVl
U3VibWlzc2lvbigpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAg
LTI0ODQsOCArMjQ3MCw4IEBAIC0gKHZvaWQpX3NldEZvcm1EZWxlZ2F0ZTooaWQgPF9XS0Zvcm1E
ZWxlZ2F0ZT4pZm9ybURlbGVnYXRlCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIFJlZlB0
cjxXZWJLaXQ6OldlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eT4gbG9jYWxMaXN0ZW5lciA9
IFdURjo6bW92ZShsaXN0ZW5lcik7Ci0gICAgICAgICAgICBSZWZQdHI8V2ViS2l0OjpDb21wbGV0
aW9uSGFuZGxlckNhbGxDaGVja2VyPiBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxl
ckNhbGxDaGVja2VyOjpjcmVhdGUoZm9ybURlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IoX3dlYlZp
ZXc6d2lsbFN1Ym1pdEZvcm1WYWx1ZXM6dXNlck9iamVjdDpzdWJtaXNzaW9uSGFuZGxlcjopKTsK
LSAgICAgICAgICAgIFtmb3JtRGVsZWdhdGUgX3dlYlZpZXc6bV93ZWJWaWV3IHdpbGxTdWJtaXRG
b3JtVmFsdWVzOnZhbHVlTWFwLmdldCgpIHVzZXJPYmplY3Q6dXNlck9iamVjdCBzdWJtaXNzaW9u
SGFuZGxlcjpbbG9jYWxMaXN0ZW5lciwgY2hlY2tlcl0geworICAgICAgICAgICAgUmVmUHRyPFdl
YktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcj4gY2hlY2tlciA9IFdlYktpdDo6Q29t
cGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGlucHV0RGVsZWdhdGUuZ2V0KCksIEBz
ZWxlY3Rvcihfd2ViVmlldzp3aWxsU3VibWl0Rm9ybVZhbHVlczp1c2VyT2JqZWN0OnN1Ym1pc3Np
b25IYW5kbGVyOikpOworICAgICAgICAgICAgW2lucHV0RGVsZWdhdGUgX3dlYlZpZXc6bV93ZWJW
aWV3IHdpbGxTdWJtaXRGb3JtVmFsdWVzOnZhbHVlTWFwLmdldCgpIHVzZXJPYmplY3Q6dXNlck9i
amVjdCBzdWJtaXNzaW9uSGFuZGxlcjpbbG9jYWxMaXN0ZW5lciwgY2hlY2tlcl0gewogICAgICAg
ICAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICAg
ICAgICAgIGxvY2FsTGlzdGVuZXItPmNvbnRpbnVlU3VibWlzc2lvbigpOwogICAgICAgICAgICAg
fV07CkBAIC0yNDk1LDcgKzI0ODEsNyBAQCAtICh2b2lkKV9zZXRGb3JtRGVsZWdhdGU6KGlkIDxf
V0tGb3JtRGVsZWdhdGU+KWZvcm1EZWxlZ2F0ZQogICAgICAgICBXS1dlYlZpZXcgKm1fd2ViVmll
dzsKICAgICB9OwogCi0gICAgaWYgKGZvcm1EZWxlZ2F0ZSkKKyAgICBpZiAoaW5wdXREZWxlZ2F0
ZSkKICAgICAgICAgX3BhZ2UtPnNldEZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxGb3JtQ2xp
ZW50PihzZWxmKSk7CiAgICAgZWxzZQogICAgICAgICBfcGFnZS0+c2V0Rm9ybUNsaWVudChudWxs
cHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLmgKaW5kZXggZGJkZjJkMTE2OTQ5OGJlZWFhM2ZmN2Zh
NTRjNTM5NTJjNjhiY2FhZi4uZmU3YWM3ODQzYjNkMDg2ZWVlNDczNjc3ZWZhMGJkNDY3MDJhYjNj
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLmgKQEAgLTExOSwxMiArMTE5LDYgQEAgV0tfQ0xBU1Nf
QVZBSUxBQkxFKDEwXzEwLCA4XzApCiAgKi8KIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGFs
bG93c1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrIFdLX0FWQUlMQUJMRShOQSwgOV8wKTsK
IAotLyohIEBhYnN0cmFjdCBBIEJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHByb2dy
YW1tYXRpYyBmb2N1cyBvbgotIGFuIGVsZW1lbnQgaXMgYWxsb3dlZCB0byB0cmlnZ2VyIGFzc2lz
dGFuY2UuCi0gQGRpc2N1c3Npb24gVGhlIGRlZmF1bHQgdmFsdWUgaXMgTk8uCi0gKi8KLUBwcm9w
ZXJ0eSAobm9uYXRvbWljKSBCT09MIGNhbkFzc2lzdE9uUHJvZ3JhbW1hdGljRm9jdXM7Ci0KICNl
bmRpZgogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KaW5kZXggYTIzMDhkMzM3OTJmOTVj
NTgzMDNkNmZmMDEzNjBhMGM5ZTZiMjZlMC4uZjY1N2UyNDI3NGY1YjAyZDQ0YWMxYjUyYjVhMGU4
NzExOGY0MzU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpAQCAtMTEyLDcgKzExMiw2IEBA
IC0gKGluc3RhbmNldHlwZSlpbml0CiAgICAgX2FsbG93c0lubGluZU1lZGlhUGxheWJhY2sgPSBX
S0dldERldmljZUNsYXNzKCkgPT0gV0tEZXZpY2VDbGFzc2lQYWQ7CiAgICAgX2lubGluZU1lZGlh
UGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRlID0gIV9hbGxvd3NJbmxpbmVNZWRp
YVBsYXliYWNrOwogICAgIF9tZWRpYURhdGFMb2Fkc0F1dG9tYXRpY2FsbHkgPSBOTzsKLSAgICBf
Y2FuQXNzaXN0T25Qcm9ncmFtbWF0aWNGb2N1cyA9IE5POwogI2VuZGlmCiAKICNpZiBFTkFCTEUo
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpAQCAtMzY1LDE2ICszNjQsNiBAQCAtICh2b2lkKV9z
ZXRNZWRpYURhdGFMb2Fkc0F1dG9tYXRpY2FsbHk6KEJPT0wpbWVkaWFEYXRhTG9hZHNBdXRvbWF0
aWNhbGx5CiB7CiAgICAgX21lZGlhRGF0YUxvYWRzQXV0b21hdGljYWxseSA9IG1lZGlhRGF0YUxv
YWRzQXV0b21hdGljYWxseTsKIH0KLQotLSAoQk9PTClfY2FuQXNzaXN0T25Qcm9ncmFtbWF0aWNG
b2N1cwotewotICAgIHJldHVybiBfY2FuQXNzaXN0T25Qcm9ncmFtbWF0aWNGb2N1czsKLX0KLQot
LSAodm9pZClfc2V0Q2FuQXNzaXN0T25Qcm9ncmFtbWF0aWNGb2N1czooQk9PTCljYW5Bc3Npc3RP
blByb2dyYW1tYXRpY0ZvY3VzCi17Ci0gICAgX2NhbkFzc2lzdE9uUHJvZ3JhbW1hdGljRm9jdXMg
PSBjYW5Bc3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzOwotfQogI2VuZGlmCiAKIEBlbmQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
LmgKaW5kZXggYTFlYWNkNTFkMDgzZDgxOGZlOGY1Y2U1ZTdmYWFiOTQwYzU2YzBmZS4uNTdkOTBj
ZGMwNzJjM2FiZjMwNTY5YWFhYjk1YTQ0NDY4MGVhYTMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTQ3LDcg
KzQ3LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLUGFnaW5hdGlvbk1vZGUpIHsK
IEBwcm90b2NvbCBXS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGU7CiBAcHJvdG9jb2wgX1dLRGlhZ25v
c3RpY0xvZ2dpbmdEZWxlZ2F0ZTsKIEBwcm90b2NvbCBfV0tGaW5kRGVsZWdhdGU7Ci1AcHJvdG9j
b2wgX1dLRm9ybURlbGVnYXRlOworQHByb3RvY29sIF9XS0lucHV0RGVsZWdhdGU7CiAKIEBpbnRl
cmZhY2UgV0tXZWJWaWV3IChXS1ByaXZhdGUpCiAKQEAgLTE5OCw3ICsxOTgsNyBAQCB0eXBlZGVm
IE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tQYWdpbmF0aW9uTW9kZSkgewogLSAodm9pZClfY291bnRT
dHJpbmdNYXRjaGVzOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25zOihfV0tGaW5kT3B0aW9ucylv
cHRpb25zIG1heENvdW50OihOU1VJbnRlZ2VyKW1heENvdW50OwogLSAodm9pZClfaGlkZUZpbmRV
STsKIAotQHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0Rm9ybURlbGVnYXRl
OikgaWQgPF9XS0Zvcm1EZWxlZ2F0ZT4gX2Zvcm1EZWxlZ2F0ZTsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCB3ZWFrLCBzZXR0ZXI9X3NldElucHV0RGVsZWdhdGU6KSBpZCA8X1dLSW5wdXREZWxlZ2F0
ZT4gX2lucHV0RGVsZWdhdGU7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgZ2V0
dGVyPV9pc0Rpc3BsYXlpbmdTdGFuZGFsb25lSW1hZ2VEb2N1bWVudCkgQk9PTCBfZGlzcGxheWlu
Z1N0YW5kYWxvbmVJbWFnZURvY3VtZW50OwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
LCBnZXR0ZXI9X2lzRGlzcGxheWluZ1N0YW5kYWxvbmVNZWRpYURvY3VtZW50KSBCT09MIF9kaXNw
bGF5aW5nU3RhbmRhbG9uZU1lZGlhRG9jdW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0VsZW1lbnRGb2N1c0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEZvY3VzQ29udGV4dC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmU4MTZmMzlkMzU4NzFkOTBhMzYwOTVkYjFkYjdhNWE4YzJiODAxNTgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0VsZW1lbnRG
b2N1c0NvbnRleHQuaApAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2Vi
S2l0L1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCA8Rm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKKy8qKgorICogV0tJbnB1dFR5cGUgZXhwb3NlcyBhIHN1
YnNldCBvZiBhbGwga25vd24gaW5wdXQgdHlwZXMgZW51bWVyYXRlZCBpbgorICogV2ViS2l0OjpJ
bnB1dFR5cGUuIFdoaWxlIHRoZXJlIGlzIGN1cnJlbnRseSBhIG9uZS10by1vbmUgbWFwcGluZywg
d2UKKyAqIG5lZWQgdG8gY29uc2lkZXIgaG93IHdlIHNob3VsZCBleHBvc2UgY2VydGFpbiBpbnB1
dCB0eXBlcy4KKyAqLwordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tJbnB1dFR5cGUpIHsK
KyAgICBXS0lucHV0VHlwZU5vbmUsCisgICAgV0tJbnB1dFR5cGVDb250ZW50RWRpdGFibGUsCisg
ICAgV0tJbnB1dFR5cGVUZXh0LAorICAgIFdLSW5wdXRUeXBlUGFzc3dvcmQsCisgICAgV0tJbnB1
dFR5cGVUZXh0QXJlYSwKKyAgICBXS0lucHV0VHlwZVNlYXJjaCwKKyAgICBXS0lucHV0VHlwZUVt
YWlsLAorICAgIFdLSW5wdXRUeXBlVVJMLAorICAgIFdLSW5wdXRUeXBlUGhvbmUsCisgICAgV0tJ
bnB1dFR5cGVOdW1iZXIsCisgICAgV0tJbnB1dFR5cGVOdW1iZXJQYWQsCisgICAgV0tJbnB1dFR5
cGVEYXRlLAorICAgIFdLSW5wdXRUeXBlRGF0ZVRpbWUsCisgICAgV0tJbnB1dFR5cGVEYXRlVGlt
ZUxvY2FsLAorICAgIFdLSW5wdXRUeXBlTW9udGgsCisgICAgV0tJbnB1dFR5cGVXZWVrLAorICAg
IFdLSW5wdXRUeXBlVGltZSwKKyAgICBXS0lucHV0VHlwZVNlbGVjdAorfTsKKworLyoqCisgKiBU
aGUgX1dLRWxlbWVudEZvY3VzQ29udGV4dCBwcm92aWRlcyBiYXNpYyBpbmZvcm1hdGlvbiBhYm91
dCBhbiBlbGVtZW50CisgKiB0aGF0IGhhcyBiZWVuIGZvY3VzZWQgKGVpdGhlciBwcm9ncmFtbWF0
aWNhbGx5IG9yIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbikKKyAqIGJ1dCBoYXMgbm90IHlldCBi
ZWVuIGFzc2lzdGVkLgorICovCitAcHJvdG9jb2wgX1dLRWxlbWVudEZvY3VzQ29udGV4dCA8TlNP
YmplY3Q+CisKKy8qIFRoZSB0eXBlIG9mIHRoZSBpbnB1dCBlbGVtZW50IHRoYXQgd2FzIGZvY3Vz
ZWQuICovCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdLSW5wdXRUeXBlIGlucHV0
VHlwZTsKKworLyogVGhlIHZhbHVlIG9mIHRoZSBpbnB1dCBhdCB0aGUgdGltZSBpdCBpcyBmb2N1
c2VkLiAqLworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAq
aW5wdXRWYWx1ZTsKKworLyoqCisgKiBXaGV0aGVyIHRoZSBlbGVtZW50IHdhcyBmb2N1c2VkIGR1
ZSB0byB1c2VyIGludGVyYWN0aW9uLiBOTyBpbmRpY2F0ZXMgdGhhdAorICogdGhlIGVsZW1lbnQg
d2FzIGZvY3VzZWQgcHJvZ3JhbW1hdGljYWxseSwgZS5nLiBieSBjYWxsaW5nIGZvY3VzKCkgaW4g
SmF2YVNjcmlwdAorICogb3IgYnkgdXNpbmcgdGhlIGF1dG9mb2N1cyBhdHRyaWJ1dGUuCisgKi8K
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCB1c2VySXNJbnRlcmFjdGluZzsK
KworQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRm9ybURlbGVnYXRlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Zvcm1EZWxlZ2F0ZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA3ZWFmY2Y4NTA1ODAxMmM5YTUwMWMxYzUxY2ZjMTBiNmFhMGEzNDYx
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRm9ybURlbGVnYXRlLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRh
dGlvbi5oPgotCi0jaWYgV0tfQVBJX0VOQUJMRUQKLQotI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3Vu
ZGF0aW9uLmg+Ci0KLUBjbGFzcyBXS1dlYlZpZXc7Ci1AcHJvdG9jb2wgX1dLRm9ybUlucHV0U2Vz
c2lvbjsKLQotQHByb3RvY29sIF9XS0Zvcm1EZWxlZ2F0ZSA8TlNPYmplY3Q+Ci0KLUBvcHRpb25h
bAotCi0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFN0YXJ0SW5wdXRT
ZXNzaW9uOihpZCA8X1dLRm9ybUlucHV0U2Vzc2lvbj4paW5wdXRTZXNzaW9uOwotLSAodm9pZClf
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyB3aWxsU3VibWl0Rm9ybVZhbHVlczooTlNEaWN0
aW9uYXJ5ICopdmFsdWVzIHVzZXJPYmplY3Q6KE5TT2JqZWN0IDxOU1NlY3VyZUNvZGluZz4gKil1
c2VyT2JqZWN0IHN1Ym1pc3Npb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSlzdWJtaXNzaW9uSGFu
ZGxlcjsKLQotI2lmIFRBUkdFVF9PU19JUEhPTkUKLS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgYWNjZXNzb3J5Vmlld0N1c3RvbUJ1dHRvblRhcHBlZEluRm9ybUlucHV0U2Vz
c2lvbjooaWQgPF9XS0Zvcm1JbnB1dFNlc3Npb24+KWlucHV0U2Vzc2lvbjsKLS0gKEJPT0wpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgaGFzU3VnZ2VzdGlvbnNGb3JDdXJyZW50U3RyaW5n
SW5JbnB1dFNlc3Npb246KGlkIDxfV0tGb3JtSW5wdXRTZXNzaW9uPilpbnB1dFNlc3Npb247Ci0t
IChOU0FycmF5ICopX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3VnZ2VzdGlvbnNGb3JT
dHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGluSW5wdXRTZXNzaW9uOihpZCA8X1dLRm9ybUlucHV0
U2Vzc2lvbj4paW5wdXRTZXNzaW9uOwotI2VuZGlmCi0KLUBlbmQKLQotI2VuZGlmIC8vIFdLX0FQ
SV9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0lucHV0RGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSW5wdXREZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUzOWZjYjllODkwNzljZTRiNDBmNGU5ZjFh
MDI5YzEwNjkxYzZjYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0lucHV0RGVsZWdhdGUuaApAQCAtMCwwICsxLDUyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJM
RUQKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK0BjbGFzcyBXS1dlYlZp
ZXc7CitAcHJvdG9jb2wgX1dLRm9ybUlucHV0U2Vzc2lvbjsKK0Bwcm90b2NvbCBfV0tFbGVtZW50
Rm9jdXNDb250ZXh0OworCitAcHJvdG9jb2wgX1dLSW5wdXREZWxlZ2F0ZSA8TlNPYmplY3Q+CisK
K0BvcHRpb25hbAorCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFN0
YXJ0SW5wdXRTZXNzaW9uOihpZCA8X1dLRm9ybUlucHV0U2Vzc2lvbj4paW5wdXRTZXNzaW9uOwor
LSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyB3aWxsU3VibWl0Rm9ybVZhbHVl
czooTlNEaWN0aW9uYXJ5ICopdmFsdWVzIHVzZXJPYmplY3Q6KE5TT2JqZWN0IDxOU1NlY3VyZUNv
ZGluZz4gKil1c2VyT2JqZWN0IHN1Ym1pc3Npb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSlzdWJt
aXNzaW9uSGFuZGxlcjsKKworI2lmIFRBUkdFVF9PU19JUEhPTkUKKy0gKEJPT0wpX3dlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgc2hvdWxkU3RhcnRJbnB1dFNlc3Npb246KGlkIDxfV0tFbGVt
ZW50Rm9jdXNDb250ZXh0Piljb250ZXh0OworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBhY2Nlc3NvcnlWaWV3Q3VzdG9tQnV0dG9uVGFwcGVkSW5Gb3JtSW5wdXRTZXNzaW9u
OihpZCA8X1dLRm9ybUlucHV0U2Vzc2lvbj4paW5wdXRTZXNzaW9uOworLSAoQk9PTClfd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBoYXNTdWdnZXN0aW9uc0ZvckN1cnJlbnRTdHJpbmdJbklu
cHV0U2Vzc2lvbjooaWQgPF9XS0Zvcm1JbnB1dFNlc3Npb24+KWlucHV0U2Vzc2lvbjsKKy0gKE5T
QXJyYXkgKilfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdWdnZXN0aW9uc0ZvclN0cmlu
ZzooTlNTdHJpbmcgKilzdHJpbmcgaW5JbnB1dFNlc3Npb246KGlkIDxfV0tGb3JtSW5wdXRTZXNz
aW9uPilpbnB1dFNlc3Npb247CisjZW5kaWYKKworQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VO
QUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggYjg2ODYyZTAzMTM1NmYxZGQ3NDhjNjFhMDk2N2Vm
NWI2ODA0MjFkYi4uZDY0YWMwYzY2Yzc4Mjg2YjAyZGM2NTVjOTM5NjQyYTFiODhlM2RiNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0KQEAgLTUzLDggKzUzLDkgQEAKICNpbXBvcnQgIldlYlBhZ2VNZXNzYWdl
cy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0ICJfV0tBY3RpdmF0ZWRF
bGVtZW50SW5mb0ludGVybmFsLmgiCi0jaW1wb3J0ICJfV0tGb3JtRGVsZWdhdGUuaCIKKyNpbXBv
cnQgIl9XS0VsZW1lbnRGb2N1c0NvbnRleHQuaCIKICNpbXBvcnQgIl9XS0Zvcm1JbnB1dFNlc3Np
b24uaCIKKyNpbXBvcnQgIl9XS0lucHV0RGVsZWdhdGUuaCIKICNpbXBvcnQgPENvcmVUZXh0L0NU
Rm9udC5oPgogI2ltcG9ydCA8Q29yZVRleHQvQ1RGb250RGVzY3JpcHRvci5oPgogI2ltcG9ydCA8
TW9iaWxlQ29yZVNlcnZpY2VzL1VUQ29yZVR5cGVzLmg+CkBAIC0yODAsNiArMjgxLDk3IEBAIC0g
KHZvaWQpaW52YWxpZGF0ZQogCiBAZW5kCiAKK0BpbnRlcmZhY2UgV0tFbGVtZW50Rm9jdXNDb250
ZXh0IDogTlNPYmplY3QgPF9XS0VsZW1lbnRGb2N1c0NvbnRleHQ+CistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbjooY29uc3QgQXNzaXN0ZWROb2RlSW5mb3Jt
YXRpb24gKilpbmZvcm1hdGlvbiBpc0ludGVyYWN0aW5nOihCT09MKXVzZXJJc0ludGVyYWN0aW5n
OworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tFbGVtZW50Rm9jdXNDb250ZXh0IHsKKyAgICBX
S0lucHV0VHlwZSBfaW5wdXRUeXBlOworICAgIE5TU3RyaW5nICpfaW5wdXRWYWx1ZTsKKyAgICBC
T09MIF91c2VySXNJbnRlcmFjdGluZzsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQXNz
aXN0ZWROb2RlSW5mb3JtYXRpb246KGNvbnN0IEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uICopaW5m
b3JtYXRpb24gaXNJbnRlcmFjdGluZzooQk9PTCl1c2VySXNJbnRlcmFjdGluZworeworICAgIGlm
IChzZWxmID0gW3N1cGVyIGluaXRdKSB7CisgICAgICAgIHN3aXRjaCAoaW5mb3JtYXRpb24tPmVs
ZW1lbnRUeXBlKSB7CisgICAgICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkNvbnRlbnRFZGl0
YWJsZToKKyAgICAgICAgICAgIF9pbnB1dFR5cGUgPSBXS0lucHV0VHlwZUNvbnRlbnRFZGl0YWJs
ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpU
ZXh0OgorICAgICAgICAgICAgX2lucHV0VHlwZSA9IFdLSW5wdXRUeXBlVGV4dDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpQYXNzd29yZDoKKyAg
ICAgICAgICAgIF9pbnB1dFR5cGUgPSBXS0lucHV0VHlwZVBhc3N3b3JkOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlRleHRBcmVhOgorICAgICAg
ICAgICAgX2lucHV0VHlwZSA9IFdLSW5wdXRUeXBlVGV4dEFyZWE7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6U2VhcmNoOgorICAgICAgICAgICAg
X2lucHV0VHlwZSA9IFdLSW5wdXRUeXBlU2VhcmNoOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkVtYWlsOgorICAgICAgICAgICAgX2lucHV0VHlw
ZSA9IFdLSW5wdXRUeXBlRW1haWw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBX
ZWJLaXQ6OklucHV0VHlwZTo6VVJMOgorICAgICAgICAgICAgX2lucHV0VHlwZSA9IFdLSW5wdXRU
eXBlVVJMOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5
cGU6OlBob25lOgorICAgICAgICAgICAgX2lucHV0VHlwZSA9IFdLSW5wdXRUeXBlUGhvbmU7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6TnVtYmVy
OgorICAgICAgICAgICAgX2lucHV0VHlwZSA9IFdLSW5wdXRUeXBlTnVtYmVyOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6Ok51bWJlclBhZDoKKyAg
ICAgICAgICAgIF9pbnB1dFR5cGUgPSBXS0lucHV0VHlwZU51bWJlclBhZDsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlOgorICAgICAgICAg
ICAgX2lucHV0VHlwZSA9IFdLSW5wdXRUeXBlRGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlVGltZToKKyAgICAgICAgICAgIF9pbnB1
dFR5cGUgPSBXS0lucHV0VHlwZURhdGVUaW1lOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkRhdGVUaW1lTG9jYWw6CisgICAgICAgICAgICBfaW5w
dXRUeXBlID0gV0tJbnB1dFR5cGVEYXRlVGltZUxvY2FsOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6Ok1vbnRoOgorICAgICAgICAgICAgX2lucHV0
VHlwZSA9IFdLSW5wdXRUeXBlTW9udGg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBXZWJLaXQ6OklucHV0VHlwZTo6V2VlazoKKyAgICAgICAgICAgIF9pbnB1dFR5cGUgPSBXS0lu
cHV0VHlwZVdlZWs7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXZWJLaXQ6Oklu
cHV0VHlwZTo6VGltZToKKyAgICAgICAgICAgIF9pbnB1dFR5cGUgPSBXS0lucHV0VHlwZVRpbWU7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6U2Vs
ZWN0OgorICAgICAgICAgICAgX2lucHV0VHlwZSA9IFdLSW5wdXRUeXBlU2VsZWN0OworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6Ok5vbmU6CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBfaW5wdXRUeXBlID0gV0tJbnB1dFR5cGVOb25lOwor
ICAgICAgICB9CisgICAgICAgIF9pbnB1dFZhbHVlID0gaW5mb3JtYXRpb24tPnZhbHVlOworICAg
ICAgICBfdXNlcklzSW50ZXJhY3RpbmcgPSB1c2VySXNJbnRlcmFjdGluZzsKKyAgICB9CisgICAg
cmV0dXJuIHNlbGY7Cit9CisKKy0gKFdLSW5wdXRUeXBlKWlucHV0VHlwZQoreworICAgIHJldHVy
biBfaW5wdXRUeXBlOworfQorCistIChOU1N0cmluZyAqKWlucHV0VmFsdWUKK3sKKyAgICByZXR1
cm4gX2lucHV0VmFsdWU7Cit9CisKKy0gKEJPT0wpdXNlcklzSW50ZXJhY3RpbmcKK3sKKyAgICBy
ZXR1cm4gX3VzZXJJc0ludGVyYWN0aW5nOworfQorQGVuZAorCiBAaW50ZXJmYWNlIFdLQ29udGVu
dFZpZXcgKFdLSW50ZXJhY3Rpb25Qcml2YXRlKQogLSAodm9pZClhY2Nlc3NpYmlsaXR5U3BlYWtT
ZWxlY3Rpb25TZXRDb250ZW50OihOU1N0cmluZyAqKXN0cmluZzsKIEBlbmQKQEAgLTIyNDMsOSAr
MjMzNSw5IEBAIC0gKHZvaWQpX2JlY29tZUZpcnN0UmVzcG9uZGVyV2l0aFNlbGVjdGlvbk1vdmlu
Z0ZvcndhcmQ6KEJPT0wpc2VsZWN0aW5nRm9yd2FyZCBjCiAKIC0gKHZvaWQpYWNjZXNzb3J5QXV0
b0ZpbGwKIHsKLSAgICBpZCA8X1dLRm9ybURlbGVnYXRlPiBmb3JtRGVsZWdhdGUgPSBbX3dlYlZp
ZXcgX2Zvcm1EZWxlZ2F0ZV07Ci0gICAgaWYgKFtmb3JtRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihfd2ViVmlldzphY2Nlc3NvcnlWaWV3Q3VzdG9tQnV0dG9uVGFwcGVkSW5G
b3JtSW5wdXRTZXNzaW9uOildKQotICAgICAgICBbZm9ybURlbGVnYXRlIF93ZWJWaWV3Ol93ZWJW
aWV3IGFjY2Vzc29yeVZpZXdDdXN0b21CdXR0b25UYXBwZWRJbkZvcm1JbnB1dFNlc3Npb246X2Zv
cm1JbnB1dFNlc3Npb24uZ2V0KCldOworICAgIGlkIDxfV0tJbnB1dERlbGVnYXRlPiBpbnB1dERl
bGVnYXRlID0gW193ZWJWaWV3IF9pbnB1dERlbGVnYXRlXTsKKyAgICBpZiAoW2lucHV0RGVsZWdh
dGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzphY2Nlc3NvcnlWaWV3Q3Vz
dG9tQnV0dG9uVGFwcGVkSW5Gb3JtSW5wdXRTZXNzaW9uOildKQorICAgICAgICBbaW5wdXREZWxl
Z2F0ZSBfd2ViVmlldzpfd2ViVmlldyBhY2Nlc3NvcnlWaWV3Q3VzdG9tQnV0dG9uVGFwcGVkSW5G
b3JtSW5wdXRTZXNzaW9uOl9mb3JtSW5wdXRTZXNzaW9uLmdldCgpXTsKIH0KIAogLSAodm9pZClh
Y2Nlc3NvcnlDbGVhcgpAQCAtMzAxMyw5ICszMTA1LDE2IEBAIHN0YXRpYyBib29sIGlzQXNzaXN0
YWJsZUlucHV0VHlwZShJbnB1dFR5cGUgdHlwZSkKIAogLSAodm9pZClfc3RhcnRBc3Npc3RpbmdO
b2RlOihjb25zdCBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiYpaW5mb3JtYXRpb24gdXNlcklzSW50
ZXJhY3Rpbmc6KEJPT0wpdXNlcklzSW50ZXJhY3RpbmcgYmx1clByZXZpb3VzTm9kZTooQk9PTCli
bHVyUHJldmlvdXNOb2RlIHVzZXJPYmplY3Q6KE5TT2JqZWN0IDxOU1NlY3VyZUNvZGluZz4gKil1
c2VyT2JqZWN0CiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgaXMgYSB0ZW1wb3Jhcnkgd29ya2Fyb3Vu
ZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzIyMTI2NTE4Pi4gVGhlIHJlYWwgZml4IHdpbGwgaW52b2x2
ZSByZWZhY3RvcmluZwotICAgIC8vIHRoZSB3YXkgd2UgYXNzaXN0IHByb2dyYW1tYXRpY2FsbHkg
Zm9jdXNlZCBub2Rlcy4KLSAgICBpZiAoIXVzZXJJc0ludGVyYWN0aW5nICYmICFfdGV4dFNlbGVj
dGlvbkFzc2lzdGFudCAmJiAhX3dlYlZpZXcuY2FuQXNzaXN0T25Qcm9ncmFtbWF0aWNGb2N1cykK
KyAgICBpZCA8X1dLSW5wdXREZWxlZ2F0ZT4gaW5wdXREZWxlZ2F0ZSA9IFtfd2ViVmlldyBfaW5w
dXREZWxlZ2F0ZV07CisgICAgQk9PTCBzaG91bGRTaG93S2V5Ym9hcmQ7CisgICAgaWYgKFtpbnB1
dERlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c2hvdWxkU3Rh
cnRJbnB1dFNlc3Npb246KV0pIHsKKyAgICAgICAgV0tFbGVtZW50Rm9jdXNDb250ZXh0ICpjb250
ZXh0ID0gW1tXS0VsZW1lbnRGb2N1c0NvbnRleHQgYWxsb2NdIGluaXRXaXRoQXNzaXN0ZWROb2Rl
SW5mb3JtYXRpb246JmluZm9ybWF0aW9uIGlzSW50ZXJhY3Rpbmc6dXNlcklzSW50ZXJhY3Rpbmdd
OworICAgICAgICBzaG91bGRTaG93S2V5Ym9hcmQgPSBbaW5wdXREZWxlZ2F0ZSBfd2ViVmlldzpf
d2ViVmlldyBzaG91bGRTdGFydElucHV0U2Vzc2lvbjpjb250ZXh0XTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICAvLyBUaGUgZGVmYXVsdCBiZWhhdmlvciBpcyB0byBhbGxvdyBub2RlIGFzc2lzdGFu
Y2UgaWYgdGhlIHVzZXIgaXMgaW50ZXJhY3Rpbmcgb3IgdGhlIGtleWJvYXJkIGlzIGFscmVhZHkg
YWN0aXZlLgorICAgICAgICBzaG91bGRTaG93S2V5Ym9hcmQgPSB1c2VySXNJbnRlcmFjdGluZyB8
fCBfdGV4dFNlbGVjdGlvbkFzc2lzdGFudDsKKyAgICB9CisgICAgaWYgKCFzaG91bGRTaG93S2V5
Ym9hcmQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChibHVyUHJldmlvdXNOb2RlKQpAQCAt
MzA1OCwxMCArMzE1Nyw5IEBAIC0gKHZvaWQpX3N0YXJ0QXNzaXN0aW5nTm9kZTooY29uc3QgQXNz
aXN0ZWROb2RlSW5mb3JtYXRpb24mKWluZm9ybWF0aW9uIHVzZXJJc0luCiAgICAgLy8gX2lucHV0
UGVyaXBoZXJhbCBoYXMgYmVlbiBpbml0aWFsaXplZCBpbiBpbnB1dFZpZXcgY2FsbGVkIGJ5IHJl
bG9hZElucHV0Vmlld3MuCiAgICAgW19pbnB1dFBlcmlwaGVyYWwgYmVnaW5FZGl0aW5nXTsKIAot
ICAgIGlkIDxfV0tGb3JtRGVsZWdhdGU+IGZvcm1EZWxlZ2F0ZSA9IFtfd2ViVmlldyBfZm9ybURl
bGVnYXRlXTsKLSAgICBpZiAoW2Zvcm1EZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKF93ZWJWaWV3OmRpZFN0YXJ0SW5wdXRTZXNzaW9uOildKSB7CisgICAgaWYgKFtpbnB1dERl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkU3RhcnRJbnB1
dFNlc3Npb246KV0pIHsKICAgICAgICAgX2Zvcm1JbnB1dFNlc3Npb24gPSBhZG9wdE5TKFtbV0tG
b3JtSW5wdXRTZXNzaW9uIGFsbG9jXSBpbml0V2l0aENvbnRlbnRWaWV3OnNlbGYgdXNlck9iamVj
dDp1c2VyT2JqZWN0XSk7Ci0gICAgICAgIFtmb3JtRGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZpZXcg
ZGlkU3RhcnRJbnB1dFNlc3Npb246X2Zvcm1JbnB1dFNlc3Npb24uZ2V0KCldOworICAgICAgICBb
aW5wdXREZWxlZ2F0ZSBfd2ViVmlldzpfd2ViVmlldyBkaWRTdGFydElucHV0U2Vzc2lvbjpfZm9y
bUlucHV0U2Vzc2lvbi5nZXQoKV07CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWFmYzRhMWIxZDM3NzdhYjky
ODRlNmExZjY3MGEzMTg3MzlmY2ZmNS4uYzY1MDk0NWUxYzk1ZmM2NzY1NzVhODBhZThjNzc4NTNh
NDU3MTFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtNjg2LDYgKzY4Niw3IEBACiAJCTJERjlFRUU4MUE3ODI0NTUwMEI2Q0ZC
RSAvKiBXS0ZyYW1lSW5mb0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyREY5RUVFNzFBNzgyNDU1MDBCNkNGQkUgLyogV0tGcmFtZUluZm9J
bnRlcm5hbC5oICovOyB9OwogCQkyREY5RUVFQzFBNzgzNkVFMDBCNkNGQkUgLyogQVBJTmF2aWdh
dGlvbkFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkRGOUVFRUExQTc4MzZFRTAwQjZDRkJFIC8qIEFQSU5hdmlnYXRpb25BY3Rpb24uaCAqLzsg
fTsKIAkJMkRGOUVFRUUxQTc4NkVBRDAwQjZDRkJFIC8qIEFQSU5hdmlnYXRpb25SZXNwb25zZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRGOUVFRUQx
QTc4NkVBRDAwQjZDRkJFIC8qIEFQSU5hdmlnYXRpb25SZXNwb25zZS5oICovOyB9OworCQkyRTdB
OTQ0QTFCQkQ5N0MzMDA5NDU1NDcgLyogX1dLRWxlbWVudEZvY3VzQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU3QTk0NDkxQkJEOTVDNjAw
OTQ1NTQ3IC8qIF9XS0VsZW1lbnRGb2N1c0NvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMTA5OTk3MzE0NkM3NUEyMDAyOURFQjkgLyog
V2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMxMDk5OTcxMTQ2Qzc1OUIwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRp
b25DbGllbnQuY3BwICovOyB9OwogCQkzMTA5OTlDNzE0NkM5RTNEMDAyOURFQjkgLyogV2ViTm90
aWZpY2F0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMTA5OTk2ODE0NkM3MUY1MDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50
LmggKi87IH07CiAJCTMxMkMwQzRBMTQ2RERDOEEwMDE2QzkxMSAvKiBXS05vdGlmaWNhdGlvblBy
b3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MTJDMEM0OTE0NkREQzhBMDAxNkM5MTEgLyogV0tOb3RpZmljYXRpb25Qcm92aWRlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03OTMsMTQgKzc5
NCwxNCBAQAogCQkzNzk0ODQwNDE1MEMzNTA2MDBFNTJDRTkgLyogV2ViUmVuZGVyTGF5ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3OTQ4NDAyMTUw
QzM1MDYwMEU1MkNFOSAvKiBXZWJSZW5kZXJMYXllci5oICovOyB9OwogCQkzNzk0ODQwODE1MEM0
Qjk3MDBFNTJDRTkgLyogV0tSZW5kZXJMYXllci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzk0ODQwNjE1MEM0Qjk2MDBFNTJDRTkgLyogV0tSZW5k
ZXJMYXllci5jcHAgKi87IH07CiAJCTM3OTQ4NDA5MTUwQzRCOTcwMEU1MkNFOSAvKiBXS1JlbmRl
ckxheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
Nzk0ODQwNzE1MEM0Qjk2MDBFNTJDRTkgLyogV0tSZW5kZXJMYXllci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTM3OTU3ODlDMThBRDRGMTkwMEI5
RUQyRSAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Gb3JtRGVsZWdhdGVQcml2YXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzk1Nzg5QjE4QUQ0RjExMDBC
OUVEMkUgLyogV0tXZWJQcm9jZXNzUGx1Z0luRm9ybURlbGVnYXRlUHJpdmF0ZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTM3OTU3ODlDMThBRDRG
MTkwMEI5RUQyRSAvKiBXS1dlYlByb2Nlc3NQbHVnSW5JbnB1dERlbGVnYXRlUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc5NTc4OUIxOEFE
NEYxMTAwQjlFRDJFIC8qIFdLV2ViUHJvY2Vzc1BsdWdJbklucHV0RGVsZWdhdGVQcml2YXRlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzc5QTg3
MzYxOEJCRkE0MzAwNTg4QUYyIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvSW50ZXJuYWwuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3OUE4NzM1MThC
QkZBNDMwMDU4OEFGMiAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0ludGVybmFsLmggKi87IH07
CiAJCTM3OUE4NzM5MThCQkZFMEYwMDU4OEFGMiAvKiBfV0tFbGVtZW50QWN0aW9uLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc5QTg3MzcxOEJCRkUw
RjAwNTg4QUYyIC8qIF9XS0VsZW1lbnRBY3Rpb24ubW0gKi87IH07CiAJCTM3OUE4NzNBMThCQkZF
MEYwMDU4OEFGMiAvKiBfV0tFbGVtZW50QWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzlBODczODE4QkJGRTBGMDA1ODhBRjIgLyogX1dLRWxl
bWVudEFjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTM3OUE4NzNDMThCQkZGMDcwMDU4OEFGMiAvKiBfV0tFbGVtZW50QWN0aW9uSW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3OUE4
NzNCMThCQkZGMDcwMDU4OEFGMiAvKiBfV0tFbGVtZW50QWN0aW9uSW50ZXJuYWwuaCAqLzsgfTsK
IAkJMzdBNUUwMTMxOEJCRjkzNzAwMEEwODFFIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdBNUUwMTEx
OEJCRjkzNzAwMEEwODFFIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLm1tICovOyB9OwogCQkz
N0E1RTAxNDE4QkJGOTNGMDAwQTA4MUUgLyogX1dLQWN0aXZhdGVkRWxlbWVudEluZm8uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3QTVFMDEyMThCQkY5
MzcwMDBBMDgxRSAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTM3QTY0RTU1MThGMzhFM0MwMEVCMzBG
MSAvKiBfV0tGb3JtRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDM3QTY0RTU0MThGMzhFM0MwMEVCMzBGMSAvKiBfV0tGb3JtRGVsZWdhdGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzN0E2
NEU1NTE4RjM4RTNDMDBFQjMwRjEgLyogX1dLSW5wdXREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdBNjRFNTQxOEYzOEUzQzAwRUIzMEYx
IC8qIF9XS0lucHV0RGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkzN0E2NEU1NzE4RjM4RjQ2MDBFQjMwRjEgLyogX1dLRm9ybUlucHV0
U2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzdBNjRFNTYxOEYzOEY0NjAwRUIzMEYxIC8qIF9XS0Zvcm1JbnB1dFNlc3Npb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzN0I1MDQ1MjE5RUVG
MzEzMDBDRTJDRjggLyogV0tFcnJvclByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3QjUwNDUxMTlFRUYzMTMwMENFMkNGOCAvKiBXS0Vycm9y
UHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTM3QkVDNEREMTk0OEZDNkEwMDhCNDI4NiAvKiBXZWJDb3JlLmZyYW1ld29yayBpbiBGcmFt
ZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQTFDNzlBMTAwRTdG
QzUwMDc4REVCQyAvKiBXZWJDb3JlLmZyYW1ld29yayAqLzsgfTsKQEAgLTI4MzQsNiArMjgzNSw3
IEBACiAJCTJERjlFRUU3MUE3ODI0NTUwMEI2Q0ZCRSAvKiBXS0ZyYW1lSW5mb0ludGVybmFsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRnJhbWVJbmZvSW50ZXJuYWwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRGOUVFRUExQTc4MzZFRTAwQjZDRkJFIC8q
IEFQSU5hdmlnYXRpb25BY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QVBJTmF2aWdhdGlvbkFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREY5
RUVFRDFBNzg2RUFEMDBCNkNGQkUgLyogQVBJTmF2aWdhdGlvblJlc3BvbnNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSU5hdmlnYXRpb25SZXNwb25zZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkyRTdBOTQ0OTFCQkQ5NUM2MDA5NDU1NDcgLyogX1dLRWxl
bWVudEZvY3VzQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tFbGVtZW50Rm9jdXNDb250ZXh0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDk5OTY4MTQ2QzcxRjUwMDI5REVC
OSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTm90aWZpY2F0
aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDk5OTcxMTQ2Qzc1
OUIwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEyQzBDNDkxNDZEREM4QTAwMTZDOTExIC8qIFdLTm90aWZp
Y2F0aW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tOb3Rp
ZmljYXRpb25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjk0NSwx
NCArMjk0NywxNCBAQAogCQkzNzk0ODQwMjE1MEMzNTA2MDBFNTJDRTkgLyogV2ViUmVuZGVyTGF5
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVuZGVyTGF5ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc5NDg0MDYxNTBDNEI5NjAwRTUyQ0U5IC8q
IFdLUmVuZGVyTGF5ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V0tSZW5kZXJMYXllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3OTQ4NDA3
MTUwQzRCOTYwMEU1MkNFOSAvKiBXS1JlbmRlckxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLUmVuZGVyTGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMzc5NTc4OUIxOEFENEYxMTAwQjlFRDJFIC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZvcm1EZWxl
Z2F0ZVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJQcm9j
ZXNzUGx1Z0luRm9ybURlbGVnYXRlUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzNzk1Nzg5QjE4QUQ0RjExMDBCOUVEMkUgLyogV0tXZWJQcm9jZXNzUGx1Z0luSW5wdXRE
ZWxlZ2F0ZVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJQ
cm9jZXNzUGx1Z0luSW5wdXREZWxlZ2F0ZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzc5QTg3MzUxOEJCRkE0MzAwNTg4QUYyIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJ
bmZvSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQWN0aXZh
dGVkRWxlbWVudEluZm9JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
NzlBODczNzE4QkJGRTBGMDA1ODhBRjIgLyogX1dLRWxlbWVudEFjdGlvbi5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0VsZW1lbnRBY3Rpb24ubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3OUE4NzM4MThCQkZFMEYwMDU4OEFGMiAvKiBfV0tF
bGVtZW50QWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0VsZW1l
bnRBY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc5QTg3M0IxOEJCRkYw
NzAwNTg4QUYyIC8qIF9XS0VsZW1lbnRBY3Rpb25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBfV0tFbGVtZW50QWN0aW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzdBNUUwMTExOEJCRjkzNzAwMEEwODFFIC8qIF9XS0FjdGl2YXRl
ZEVsZW1lbnRJbmZvLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
X1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTM3QTVFMDEyMThCQkY5MzcwMDBBMDgxRSAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzN0E2NEU1NDE4RjM4RTNDMDBFQjMwRjEg
LyogX1dLRm9ybURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9X
S0Zvcm1EZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzN0E2NEU1NDE4
RjM4RTNDMDBFQjMwRjEgLyogX1dLSW5wdXREZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBfV0tJbnB1dERlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTM3QTY0RTU2MThGMzhGNDYwMEVCMzBGMSAvKiBfV0tGb3JtSW5wdXRTZXNzaW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0Zvcm1JbnB1dFNlc3Npb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdCNTA0NTExOUVFRjMxMzAwQ0UyQ0Y4IC8q
IFdLRXJyb3JQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRXJy
b3JQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3QkVDNERFMTk0OTE0
ODYwMDhCNDI4NiAvKiBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tl
ci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5OTcsNyArNDk5OSw3IEBACiAJ
CQljaGlsZHJlbiA9ICgKIAkJCQkxQUEyRTU2NTE4RDc3NTA4MDAzODE0QkQgLyogV0tXZWJQcm9j
ZXNzQnVuZGxlUGFyYW1ldGVycy5oICovLAogCQkJCTFBQTJFNTY0MThENzc1MDgwMDM4MTRCRCAv
KiBXS1dlYlByb2Nlc3NCdW5kbGVQYXJhbWV0ZXJzLm1tICovLAotCQkJCTM3OTU3ODlCMThBRDRG
MTEwMEI5RUQyRSAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Gb3JtRGVsZWdhdGVQcml2YXRlLmggKi8s
CisJCQkJMzc5NTc4OUIxOEFENEYxMTAwQjlFRDJFIC8qIFdLV2ViUHJvY2Vzc1BsdWdJbklucHV0
RGVsZWdhdGVQcml2YXRlLmggKi8sCiAJCQkJMUYwMTgxNjkxODU4REMxNTAwRjkyODg0IC8qIFdL
V2ViUHJvY2Vzc1BsdWdJbkZyYW1lLmggKi8sCiAJCQkJMUYwMTgxNkExODU4REMxNTAwRjkyODg0
IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tICovLAogCQkJCTFGMDE4MTZCMTg1OERDMTUw
MEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZUludGVybmFsLmggKi8sCkBAIC01Mjkz
LDggKzUyOTUsOSBAQAogCQkJCTFBRDAxQkM2MTkwNUQzN0UwMEM5QzQ1RiAvKiBfV0tFcnJvclJl
Y292ZXJ5QXR0ZW1wdGluZy5tbSAqLywKIAkJCQkwMDVEMTU4RTE4RTRDNEVCMDA3MzQ2MTkgLyog
X1dLRmluZERlbGVnYXRlLmggKi8sCiAJCQkJMkRFQUM1Q0UxQUMzNjhCQjAwQTE5NUQ4IC8qIF9X
S0ZpbmRPcHRpb25zLmggKi8sCi0JCQkJMzdBNjRFNTQxOEYzOEUzQzAwRUIzMEYxIC8qIF9XS0Zv
cm1EZWxlZ2F0ZS5oICovLAorCQkJCTM3QTY0RTU0MThGMzhFM0MwMEVCMzBGMSAvKiBfV0tJbnB1
dERlbGVnYXRlLmggKi8sCiAJCQkJMzdBNjRFNTYxOEYzOEY0NjAwRUIzMEYxIC8qIF9XS0Zvcm1J
bnB1dFNlc3Npb24uaCAqLywKKwkJCQkyRTdBOTQ0OTFCQkQ5NUM2MDA5NDU1NDcgLyogX1dLRWxl
bWVudEZvY3VzQ29udGV4dC5oICovLAogCQkJCTJENzkwQTlDMUFENzA1MEQwMEFCOTBCMyAvKiBf
V0tMYXlvdXRNb2RlLmggKi8sCiAJCQkJOTMyMzYxMUQxQjAxNURBODAwRkE5MjMyIC8qIF9XS092
ZXJsYXlTY3JvbGxiYXJTdHlsZS5oICovLAogCQkJCTFBNDNFODI4MTg4RjNDREMwMDlFNEQzMCAv
KiBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCAqLywKQEAgLTc1MDEsNyArNzUwNCw3IEBA
CiAJCQkJMUFEMDFCQzkxOTA1RDM3RTAwQzlDNDVGIC8qIF9XS0Vycm9yUmVjb3ZlcnlBdHRlbXB0
aW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwMDVEMTU4RjE4RTRDNEVCMDA3MzQ2MTkgLyogX1dL
RmluZERlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREVBQzVDRjFBQzM2OEJCMDBBMTk1
RDggLyogX1dLRmluZE9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAotCQkJCTM3QTY0RTU1MThGMzhF
M0MwMEVCMzBGMSAvKiBfV0tGb3JtRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTM3QTY0
RTU1MThGMzhFM0MwMEVCMzBGMSAvKiBfV0tJbnB1dERlbGVnYXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkzN0E2NEU1NzE4RjM4RjQ2MDBFQjMwRjEgLyogX1dLRm9ybUlucHV0U2Vzc2lvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzczRDEyMjMxOEE0NzMwMTAwNjZEOUNDIC8qIF9XS0ZyYW1lSGFu
ZGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzNEMTIyNzE4QTQ3M0Y2MDA2NkQ5Q0MgLyogX1dL
RnJhbWVIYW5kbGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC03OTc5LDYgKzc5ODIsNyBA
QAogCQkJCTMzRDNBM0M5MTMzOTYxNzkwMDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hlTWFuYWdlck1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkzM0QzQTNCQjEzMzk2MDYyMDA3MDlCRTQgLyog
V2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzNEM0EzQ0Ix
MzM5NjE3OTAwNzA5QkU0IC8qIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMkU3QTk0NEExQkJEOTdDMzAwOTQ1NTQ3IC8qIF9XS0VsZW1lbnRG
b2N1c0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMDAzQTUzMTlENDlCNUQwMDVBQkNF
MCAvKiBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDOThD
NDhBNjFCNkZENEMzMDAxNDUxMDMgLyogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDOUMxODMzQzFCNzQwMjZEMDA3MDM2QTcgLyogV2ViTWVkaWFTZXNz
aW9uRm9jdXNNYW5hZ2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTgzMzcsNyArODM0MSw3
IEBACiAJCQkJQkM4RjJGMkIxNjI3M0EyQzAwNUZBQ0I1IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkJy
b3dzZXJDb250ZXh0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4RjJGMkUxNjI3
M0FDQzAwNUZBQ0I1IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxl
ckludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTUwMTcyNDE2MkE0NTA0MDA0QTlENzEg
LyogV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJMzc5NTc4OUMxOEFENEYxOTAwQjlFRDJFIC8qIFdLV2ViUHJvY2Vz
c1BsdWdJbkZvcm1EZWxlZ2F0ZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTM3OTU3ODlD
MThBRDRGMTkwMEI5RUQyRSAvKiBXS1dlYlByb2Nlc3NQbHVnSW5JbnB1dERlbGVnYXRlUHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUY3NTA2QjExODU5MTYzNzAwRUMwRkY3IC8qIFdLV2Vi
UHJvY2Vzc1BsdWdJbkZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQkxRjc1MDZCODE4NTkxNjVE
MDBFQzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWVJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzczRDEyMkQxOEE0QjZFQjAwNjZEOUNDIC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZy
YW1lUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Gb3Jt
RGVsZWdhdGVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Gb3JtRGVsZWdhdGVQcml2YXRlLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2MjRkOTc5NDEyMTM5MDAwNWJjNzRjYTRlZTQ1
YTdmYjMwY2RjMGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tX
ZWJQcm9jZXNzUGx1Z0luRm9ybURlbGVnYXRlUHJpdmF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEs
NTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4K
LQotI2lmIFdLX0FQSV9FTkFCTEVECi0KLSNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIuaD4KLSNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nl
c3NQbHVnSW5GcmFtZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVI
YW5kbGUuaD4KLQotQHByb3RvY29sIFdLV2ViUHJvY2Vzc1BsdWdJbkZvcm1EZWxlZ2F0ZVByaXZh
dGUgPE5TT2JqZWN0PgotCi1Ab3B0aW9uYWwKLQotLSAodm9pZClfd2ViUHJvY2Vzc1BsdWdJbkJy
b3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyICopY29udHJvbGxlciBkaWRGb2N1c1RleHRGaWVsZDooV0tXZWJQcm9jZXNzUGx1
Z0luTm9kZUhhbmRsZSAqKXRleHRGaWVsZCBpbkZyYW1lOihXS1dlYlByb2Nlc3NQbHVnSW5GcmFt
ZSAqKWZyYW1lOwotLSAodm9pZClfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY29udHJv
bGxlciB3aWxsU2VuZFN1Ym1pdEV2ZW50VG9Gb3JtOihXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFu
ZGxlICopZm9ybSBpbkZyYW1lOihXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKXNvdXJjZUZyYW1l
IHRhcmdldEZyYW1lOihXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKXRhcmdldEZyYW1lIHZhbHVl
czooTlNEaWN0aW9uYXJ5ICopdmFsdWVzOwotLSAodm9pZClfd2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyICopY29udHJvbGxlciB0ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQ6KFdLV2ViUHJvY2Vz
c1BsdWdJbk5vZGVIYW5kbGUgKil0ZXh0RmllbGQgaW5GcmFtZTooV0tXZWJQcm9jZXNzUGx1Z0lu
RnJhbWUgKilmcmFtZSBpbml0aWF0ZWRCeVVzZXJUeXBpbmc6KEJPT0wpaW5pdGlhdGVkQnlVc2Vy
VHlwaW5nOwotCi0vLyBUaGUgcmV0dXJuIHZhbHVlIGlzIGV4cG9zZWQgaW4gdGhlIFVJIHByb2Nl
c3MgdmlhIHRoZSB1c2VyT2JqZWN0IHBhcmFtZXRlciB0byAtW2lkIDxfV0tGb3JtRGVsZWdhdGU+
IF93ZWJWaWV3OndpbGxTdWJtaXRGb3JtVmFsdWVzOnVzZXJPYmplY3Q6c3VibWlzc2lvbkhhbmRs
ZXI6XS4KLS0gKE5TT2JqZWN0IDxOU1NlY3VyZUNvZGluZz4gKilfd2ViUHJvY2Vzc1BsdWdJbkJy
b3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyICopY29udHJvbGxlciB3aWxsU3VibWl0Rm9ybTooV0tXZWJQcm9jZXNzUGx1Z0lu
Tm9kZUhhbmRsZSAqKWZvcm0gdG9GcmFtZTooV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgKilmcmFt
ZSBmcm9tRnJhbWU6KFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lICopc291cmNlRnJhbWUgd2l0aFZh
bHVlczooTlNEaWN0aW9uYXJ5ICopdmFsdWVzOwotCi0vLyBUaGUgcmV0dXJuIHZhbHVlIGlzIGV4
cG9zZWQgaW4gdGhlIFVJIHByb2Nlc3MgdmlhIHRoZSB1c2VyT2JqZWN0IHByb3BlcnR5IG9mIHRo
ZSBfV0tGb3JtSW5wdXRTZXNzaW9uIG9iamVjdC4KLS0gKE5TT2JqZWN0IDxOU1NlY3VyZUNvZGlu
Zz4gKilfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY29udHJvbGxlciB3aWxsQmVnaW5J
bnB1dFNlc3Npb25Gb3JFbGVtZW50OihXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlICopbm9k
ZSBpbkZyYW1lOihXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKWZyYW1lOwotCi0tIChCT09MKV93
ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyU2hvdWxkTm90aWZ5T25Gb3Jt
Q2hhbmdlczooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY29u
dHJvbGxlcjsKLS0gKHZvaWQpX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xs
ZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWNvbnRyb2xs
ZXIgZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzOihOU0FycmF5ICopZWxlbWVudHM7Ci0KLUBlbmQK
LQotI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5JbnB1
dERlbGVnYXRlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luSW5wdXREZWxlZ2F0ZVByaXZhdGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jZDVjNzQzYTAyMWQxODEwODE0NDJmMjk0OGRkNzRhNWZjMWM2MTk2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luSW5wdXREZWxlZ2F0ZVByaXZhdGUuaApAQCAtMCww
ICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgor
CisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vz
c1BsdWdJbkZyYW1lLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhh
bmRsZS5oPgorCitAcHJvdG9jb2wgV0tXZWJQcm9jZXNzUGx1Z0luSW5wdXREZWxlZ2F0ZVByaXZh
dGUgPE5TT2JqZWN0PgorCitAb3B0aW9uYWwKKworLSAodm9pZClfd2ViUHJvY2Vzc1BsdWdJbkJy
b3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyICopY29udHJvbGxlciBkaWRGb2N1c1RleHRGaWVsZDooV0tXZWJQcm9jZXNzUGx1
Z0luTm9kZUhhbmRsZSAqKXRleHRGaWVsZCBpbkZyYW1lOihXS1dlYlByb2Nlc3NQbHVnSW5GcmFt
ZSAqKWZyYW1lOworLSAodm9pZClfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY29udHJv
bGxlciB3aWxsU2VuZFN1Ym1pdEV2ZW50VG9Gb3JtOihXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFu
ZGxlICopZm9ybSBpbkZyYW1lOihXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKXNvdXJjZUZyYW1l
IHRhcmdldEZyYW1lOihXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKXRhcmdldEZyYW1lIHZhbHVl
czooTlNEaWN0aW9uYXJ5ICopdmFsdWVzOworLSAodm9pZClfd2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyICopY29udHJvbGxlciB0ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQ6KFdLV2ViUHJvY2Vz
c1BsdWdJbk5vZGVIYW5kbGUgKil0ZXh0RmllbGQgaW5GcmFtZTooV0tXZWJQcm9jZXNzUGx1Z0lu
RnJhbWUgKilmcmFtZSBpbml0aWF0ZWRCeVVzZXJUeXBpbmc6KEJPT0wpaW5pdGlhdGVkQnlVc2Vy
VHlwaW5nOworCisvLyBUaGUgcmV0dXJuIHZhbHVlIGlzIGV4cG9zZWQgaW4gdGhlIFVJIHByb2Nl
c3MgdmlhIHRoZSB1c2VyT2JqZWN0IHBhcmFtZXRlciB0byAtW2lkIDxfV0tJbnB1dERlbGVnYXRl
PiBfd2ViVmlldzp3aWxsU3VibWl0Rm9ybVZhbHVlczp1c2VyT2JqZWN0OnN1Ym1pc3Npb25IYW5k
bGVyOl0uCistIChOU09iamVjdCA8TlNTZWN1cmVDb2Rpbmc+ICopX3dlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgd2lsbFN1Ym1pdEZvcm06KFdLV2ViUHJvY2Vzc1BsdWdJ
bk5vZGVIYW5kbGUgKilmb3JtIHRvRnJhbWU6KFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lICopZnJh
bWUgZnJvbUZyYW1lOihXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKXNvdXJjZUZyYW1lIHdpdGhW
YWx1ZXM6KE5TRGljdGlvbmFyeSAqKXZhbHVlczsKKworLy8gVGhlIHJldHVybiB2YWx1ZSBpcyBl
eHBvc2VkIGluIHRoZSBVSSBwcm9jZXNzIHZpYSB0aGUgdXNlck9iamVjdCBwcm9wZXJ0eSBvZiB0
aGUgX1dLRm9ybUlucHV0U2Vzc2lvbiBvYmplY3QuCistIChOU09iamVjdCA8TlNTZWN1cmVDb2Rp
bmc+ICopX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6KFdLV2ViUHJv
Y2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgd2lsbEJlZ2lu
SW5wdXRTZXNzaW9uRm9yRWxlbWVudDooV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZSAqKW5v
ZGUgaW5GcmFtZTooV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgKilmcmFtZTsKKworLSAoQk9PTClf
d2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlclNob3VsZE5vdGlmeU9uRm9y
bUNoYW5nZXM6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWNv
bnRyb2xsZXI7CistICh2b2lkKV93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9s
bGVyOihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKiljb250cm9s
bGVyIGRpZEFzc29jaWF0ZUZvcm1Db250cm9sczooTlNBcnJheSAqKWVsZW1lbnRzOworCitAZW5k
CisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xs
ZXIubW0KaW5kZXggNmM1NDcwYjI5MWM4YWRhOGRiODU2ZjkwMmI3OGNkZDFjMzRiMmU1OC4uZTFk
MTk0MzhmOGMyM2Y5N2Y4ZTJmMjEyYzM1YjllYzVlMGUzZDExMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1Bs
dWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyLm1tCkBAIC00NCwxMyArNDQsMTMgQEAKICNpbXBvcnQgIldLUmV0YWlu
UHRyLmgiCiAjaW1wb3J0ICJXS1N0cmluZ0NGLmgiCiAjaW1wb3J0ICJXS1VSTFJlcXVlc3ROUy5o
IgotI2ltcG9ydCAiV0tXZWJQcm9jZXNzUGx1Z2luRnJhbWVJbnRlcm5hbC5oIgorI2ltcG9ydCAi
V0tXZWJQcm9jZXNzUGx1Z0luSW5wdXREZWxlZ2F0ZVByaXZhdGUuaCIKICNpbXBvcnQgIldLV2Vi
UHJvY2Vzc1BsdWdJbkludGVybmFsLmgiCi0jaW1wb3J0ICJXS1dlYlByb2Nlc3NQbHVnSW5Gb3Jt
RGVsZWdhdGVQcml2YXRlLmgiCiAjaW1wb3J0ICJXS1dlYlByb2Nlc3NQbHVnSW5Mb2FkRGVsZWdh
dGUuaCIKICNpbXBvcnQgIldLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGVJbnRlcm5hbC5oIgog
I2ltcG9ydCAiV0tXZWJQcm9jZXNzUGx1Z0luUGFnZUdyb3VwSW50ZXJuYWwuaCIKICNpbXBvcnQg
IldLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLV2Vi
UHJvY2Vzc1BsdWdpbkZyYW1lSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYWtPYmpDUHRyLmgiCiAj
aW1wb3J0ICJXZWJQYWdlLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCkBAIC03Myw3ICs3Myw3
IEBAIEBlbmQKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIgewogICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxXZWJQYWdlPiBfcGFnZTsKICAg
ICBXZWFrT2JqQ1B0cjxpZCA8V0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlPj4gX2xvYWRE
ZWxlZ2F0ZTsKLSAgICBXZWFrT2JqQ1B0cjxpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRm9ybURlbGVn
YXRlUHJpdmF0ZT4+IF9mb3JtRGVsZWdhdGU7CisgICAgV2Vha09iakNQdHI8aWQgPFdLV2ViUHJv
Y2Vzc1BsdWdJbklucHV0RGVsZWdhdGVQcml2YXRlPj4gX2lucHV0RGVsZWdhdGU7CiAgICAgCiAg
ICAgUmV0YWluUHRyPF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5PiBfcmVtb3RlT2JqZWN0UmVnaXN0
cnk7CiB9CkBAIC00MzQsMTQgKzQzNCwxNCBAQCAtIChfV0tSZW1vdGVPYmplY3RSZWdpc3RyeSAq
KV9yZW1vdGVPYmplY3RSZWdpc3RyeQogICAgIHJldHVybiBfcmVtb3RlT2JqZWN0UmVnaXN0cnku
Z2V0KCk7CiB9CiAKLS0gKGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5Gb3JtRGVsZWdhdGVQcml2YXRl
PilfZm9ybURlbGVnYXRlCistIChpZCA8V0tXZWJQcm9jZXNzUGx1Z0luSW5wdXREZWxlZ2F0ZVBy
aXZhdGU+KV9pbnB1dERlbGVnYXRlCiB7Ci0gICAgcmV0dXJuIF9mb3JtRGVsZWdhdGUuZ2V0QXV0
b3JlbGVhc2VkKCk7CisgICAgcmV0dXJuIF9pbnB1dERlbGVnYXRlLmdldEF1dG9yZWxlYXNlZCgp
OwogfQogCi0tICh2b2lkKV9zZXRGb3JtRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5G
b3JtRGVsZWdhdGVQcml2YXRlPilmb3JtRGVsZWdhdGUKKy0gKHZvaWQpX3NldElucHV0RGVsZWdh
dGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5JbnB1dERlbGVnYXRlUHJpdmF0ZT4paW5wdXREZWxl
Z2F0ZQogewotICAgIF9mb3JtRGVsZWdhdGUgPSBmb3JtRGVsZWdhdGU7CisgICAgX2lucHV0RGVs
ZWdhdGUgPSBpbnB1dERlbGVnYXRlOwogCiAgICAgY2xhc3MgRm9ybUNsaWVudCA6IHB1YmxpYyBB
UEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50IHsKICAgICBwdWJsaWM6CkBAIC00NTQsMjIg
KzQ1NCwyMiBAQCAtICh2b2lkKV9zZXRGb3JtRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVn
SW5Gb3JtRGVsZWdhdGVQcml2YXRlPilmb3JtRGVsZWdhdAogCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRGb2N1c1RleHRGaWVsZChXZWJQYWdlKiwgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVt
ZW50LCBXZWJGcmFtZSogZnJhbWUpIG92ZXJyaWRlCiAgICAgICAgIHsKLSAgICAgICAgICAgIGF1
dG8gZm9ybURlbGVnYXRlID0gbV9jb250cm9sbGVyLT5fZm9ybURlbGVnYXRlLmdldCgpOworICAg
ICAgICAgICAgYXV0byBpbnB1dERlbGVnYXRlID0gbV9jb250cm9sbGVyLT5faW5wdXREZWxlZ2F0
ZS5nZXQoKTsKIAotICAgICAgICAgICAgaWYgKFtmb3JtRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpk
aWRGb2N1c1RleHRGaWVsZDppbkZyYW1lOildKQotICAgICAgICAgICAgICAgIFtmb3JtRGVsZWdh
dGUgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250cm9sbGVy
IGRpZEZvY3VzVGV4dEZpZWxkOndyYXBwZXIoKkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6Z2V0
T3JDcmVhdGUoaW5wdXRFbGVtZW50KS5nZXQoKSkgaW5GcmFtZTp3cmFwcGVyKCpmcmFtZSldOwor
ICAgICAgICAgICAgaWYgKFtpbnB1dERlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6ZGlkRm9jdXNUZXh0
RmllbGQ6aW5GcmFtZTopXSkKKyAgICAgICAgICAgICAgICBbaW5wdXREZWxlZ2F0ZSBfd2ViUHJv
Y2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgZGlkRm9jdXNU
ZXh0RmllbGQ6d3JhcHBlcigqSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpnZXRPckNyZWF0ZShp
bnB1dEVsZW1lbnQpLmdldCgpKSBpbkZyYW1lOndyYXBwZXIoKmZyYW1lKV07CiAgICAgICAgIH0K
IAogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRTdWJtaXRFdmVudChXZWJQYWdlKiwgSFRN
TEZvcm1FbGVtZW50KiBmb3JtRWxlbWVudCwgV2ViRnJhbWUqIHRhcmdldEZyYW1lLCBXZWJGcmFt
ZSogc291cmNlRnJhbWUsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYg
dmFsdWVzKSBvdmVycmlkZQogICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIGZvcm1EZWxlZ2F0
ZSA9IG1fY29udHJvbGxlci0+X2Zvcm1EZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgICAgIGF1dG8g
aW5wdXREZWxlZ2F0ZSA9IG1fY29udHJvbGxlci0+X2lucHV0RGVsZWdhdGUuZ2V0KCk7CiAKLSAg
ICAgICAgICAgIGlmIChbZm9ybURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6d2lsbFNlbmRTdWJtaXRF
dmVudFRvRm9ybTppbkZyYW1lOnRhcmdldEZyYW1lOnZhbHVlczopXSkgeworICAgICAgICAgICAg
aWYgKFtpbnB1dERlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6d2lsbFNlbmRTdWJtaXRFdmVudFRvRm9y
bTppbkZyYW1lOnRhcmdldEZyYW1lOnZhbHVlczopXSkgewogICAgICAgICAgICAgICAgIGF1dG8g
dmFsdWVNYXAgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhD
YXBhY2l0eTp2YWx1ZXMuc2l6ZSgpXSk7CiAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBwYWlyIDogdmFsdWVzKQogICAgICAgICAgICAgICAgICAgICBbdmFsdWVNYXAgc2V0T2JqZWN0
OnBhaXIuc2Vjb25kIGZvcktleTpwYWlyLmZpcnN0XTsKIAotICAgICAgICAgICAgICAgIFtmb3Jt
RGVsZWdhdGUgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250
cm9sbGVyIHdpbGxTZW5kU3VibWl0RXZlbnRUb0Zvcm06d3JhcHBlcigqSW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlOjpnZXRPckNyZWF0ZShmb3JtRWxlbWVudCkuZ2V0KCkpCisgICAgICAgICAgICAg
ICAgW2lucHV0RGVsZWdhdGUgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xs
ZXI6bV9jb250cm9sbGVyIHdpbGxTZW5kU3VibWl0RXZlbnRUb0Zvcm06d3JhcHBlcigqSW5qZWN0
ZWRCdW5kbGVOb2RlSGFuZGxlOjpnZXRPckNyZWF0ZShmb3JtRWxlbWVudCkuZ2V0KCkpCiAgICAg
ICAgICAgICAgICAgICAgIGluRnJhbWU6d3JhcHBlcigqc291cmNlRnJhbWUpIHRhcmdldEZyYW1l
OndyYXBwZXIoKnRhcmdldEZyYW1lKSB2YWx1ZXM6dmFsdWVNYXAuZ2V0KCldOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CkBAIC00OTUsNjUgKzQ5NSw2NSBAQCAtICh2b2lkKV9zZXRGb3JtRGVs
ZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5Gb3JtRGVsZWdhdGVQcml2YXRlPilmb3JtRGVs
ZWdhdAogCiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsU3VibWl0Rm9ybShXZWJQYWdlKiwgSFRN
TEZvcm1FbGVtZW50KiBmb3JtRWxlbWVudCwgV2ViRnJhbWUqIGZyYW1lLCBXZWJGcmFtZSogc291
cmNlRnJhbWUsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8V1RGOjpTdHJpbmcsIFdURjo6U3RyaW5n
Pj4mIHZhbHVlcywgUmVmUHRyPEFQSTo6T2JqZWN0PiYgdXNlckRhdGEpIG92ZXJyaWRlCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGF1dG8gZm9ybURlbGVnYXRlID0gbV9jb250cm9sbGVyLT5fZm9y
bURlbGVnYXRlLmdldCgpOworICAgICAgICAgICAgYXV0byBpbnB1dERlbGVnYXRlID0gbV9jb250
cm9sbGVyLT5faW5wdXREZWxlZ2F0ZS5nZXQoKTsKIAotICAgICAgICAgICAgaWYgKFtmb3JtRGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlcjp3aWxsU3VibWl0Rm9ybTp0b0ZyYW1lOmZyb21GcmFtZTp3aXRo
VmFsdWVzOildKSB7CisgICAgICAgICAgICBpZiAoW2lucHV0RGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxl
cjp3aWxsU3VibWl0Rm9ybTp0b0ZyYW1lOmZyb21GcmFtZTp3aXRoVmFsdWVzOildKSB7CiAgICAg
ICAgICAgICAgICAgYXV0byB2YWx1ZU1hcCA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5
IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnZhbHVlcy5zaXplKCldKTsKICAgICAgICAgICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiB2YWx1ZXMpCiAgICAgICAgICAgICAgICAgICAgIFt2
YWx1ZU1hcCBzZXRPYmplY3Q6cGFpci5zZWNvbmQgZm9yS2V5OnBhaXIuZmlyc3RdOwogCi0gICAg
ICAgICAgICAgICAgTlNPYmplY3QgPE5TU2VjdXJlQ29kaW5nPiAqdXNlck9iamVjdCA9IFtmb3Jt
RGVsZWdhdGUgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250
cm9sbGVyIHdpbGxTdWJtaXRGb3JtOndyYXBwZXIoKkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6
Z2V0T3JDcmVhdGUoZm9ybUVsZW1lbnQpLmdldCgpKSB0b0ZyYW1lOndyYXBwZXIoKmZyYW1lKSBm
cm9tRnJhbWU6d3JhcHBlcigqc291cmNlRnJhbWUpIHdpdGhWYWx1ZXM6dmFsdWVNYXAuZ2V0KCld
OworICAgICAgICAgICAgICAgIE5TT2JqZWN0IDxOU1NlY3VyZUNvZGluZz4gKnVzZXJPYmplY3Qg
PSBbaW5wdXREZWxlZ2F0ZSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxl
cjptX2NvbnRyb2xsZXIgd2lsbFN1Ym1pdEZvcm06d3JhcHBlcigqSW5qZWN0ZWRCdW5kbGVOb2Rl
SGFuZGxlOjpnZXRPckNyZWF0ZShmb3JtRWxlbWVudCkuZ2V0KCkpIHRvRnJhbWU6d3JhcHBlcigq
ZnJhbWUpIGZyb21GcmFtZTp3cmFwcGVyKCpzb3VyY2VGcmFtZSkgd2l0aFZhbHVlczp2YWx1ZU1h
cC5nZXQoKV07CiAgICAgICAgICAgICAgICAgZW5jb2RlVXNlck9iamVjdCh1c2VyT2JqZWN0LCB1
c2VyRGF0YSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIHZv
aWQgdGV4dERpZENoYW5nZUluVGV4dEZpZWxkKFdlYlBhZ2UqLCBIVE1MSW5wdXRFbGVtZW50KiBp
bnB1dEVsZW1lbnQsIFdlYkZyYW1lKiBmcmFtZSwgYm9vbCBpbml0aWF0ZWRCeVVzZXJUeXBpbmcp
IG92ZXJyaWRlCiAgICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gZm9ybURlbGVnYXRlID0gbV9j
b250cm9sbGVyLT5fZm9ybURlbGVnYXRlLmdldCgpOworICAgICAgICAgICAgYXV0byBpbnB1dERl
bGVnYXRlID0gbV9jb250cm9sbGVyLT5faW5wdXREZWxlZ2F0ZS5nZXQoKTsKIAotICAgICAgICAg
ICAgaWYgKFtmb3JtRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViUHJv
Y2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjp0ZXh0RGlkQ2hhbmdlSW5UZXh0Rmll
bGQ6aW5GcmFtZTppbml0aWF0ZWRCeVVzZXJUeXBpbmc6KV0pCi0gICAgICAgICAgICAgICAgW2Zv
cm1EZWxlZ2F0ZSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2Nv
bnRyb2xsZXIgdGV4dERpZENoYW5nZUluVGV4dEZpZWxkOndyYXBwZXIoKldlYktpdDo6SW5qZWN0
ZWRCdW5kbGVOb2RlSGFuZGxlOjpnZXRPckNyZWF0ZShpbnB1dEVsZW1lbnQpKSBpbkZyYW1lOndy
YXBwZXIoKmZyYW1lKSBpbml0aWF0ZWRCeVVzZXJUeXBpbmc6aW5pdGlhdGVkQnlVc2VyVHlwaW5n
XTsKKyAgICAgICAgICAgIGlmIChbaW5wdXREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOnRleHREaWRD
aGFuZ2VJblRleHRGaWVsZDppbkZyYW1lOmluaXRpYXRlZEJ5VXNlclR5cGluZzopXSkKKyAgICAg
ICAgICAgICAgICBbaW5wdXREZWxlZ2F0ZSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgdGV4dERpZENoYW5nZUluVGV4dEZpZWxkOndyYXBwZXIo
KldlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpnZXRPckNyZWF0ZShpbnB1dEVsZW1l
bnQpKSBpbkZyYW1lOndyYXBwZXIoKmZyYW1lKSBpbml0aWF0ZWRCeVVzZXJUeXBpbmc6aW5pdGlh
dGVkQnlVc2VyVHlwaW5nXTsKICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxs
QmVnaW5JbnB1dFNlc3Npb24oV2ViUGFnZSosIEVsZW1lbnQqIGVsZW1lbnQsIFdlYkZyYW1lKiBm
cmFtZSwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgdXNlckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGF1dG8gZm9ybURlbGVnYXRlID0gbV9jb250cm9sbGVyLT5fZm9ybURlbGVn
YXRlLmdldCgpOworICAgICAgICAgICAgYXV0byBpbnB1dERlbGVnYXRlID0gbV9jb250cm9sbGVy
LT5faW5wdXREZWxlZ2F0ZS5nZXQoKTsKIAotICAgICAgICAgICAgaWYgKCFbZm9ybURlbGVnYXRl
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXI6d2lsbEJlZ2luSW5wdXRTZXNzaW9uRm9yRWxlbWVudDppbkZyYW1lOild
KQorICAgICAgICAgICAgaWYgKCFbaW5wdXREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOndpbGxCZWdp
bklucHV0U2Vzc2lvbkZvckVsZW1lbnQ6aW5GcmFtZTopXSkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgICAgIE5TT2JqZWN0IDxOU1NlY3VyZUNvZGluZz4gKnVzZXJPYmplY3Qg
PSBbZm9ybURlbGVnYXRlIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVy
Om1fY29udHJvbGxlciB3aWxsQmVnaW5JbnB1dFNlc3Npb25Gb3JFbGVtZW50OndyYXBwZXIoKldl
YktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpnZXRPckNyZWF0ZShlbGVtZW50KSkgaW5G
cmFtZTp3cmFwcGVyKCpmcmFtZSldOworICAgICAgICAgICAgTlNPYmplY3QgPE5TU2VjdXJlQ29k
aW5nPiAqdXNlck9iamVjdCA9IFtpbnB1dERlbGVnYXRlIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxlciB3aWxsQmVnaW5JbnB1dFNlc3Npb25Gb3JF
bGVtZW50OndyYXBwZXIoKldlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpnZXRPckNy
ZWF0ZShlbGVtZW50KSkgaW5GcmFtZTp3cmFwcGVyKCpmcmFtZSldOwogICAgICAgICAgICAgZW5j
b2RlVXNlck9iamVjdCh1c2VyT2JqZWN0LCB1c2VyRGF0YSk7CiAgICAgICAgIH0KIAogICAgICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkTm90aWZ5T25Gb3JtQ2hhbmdlcyhXZWJLaXQ6OldlYlBhZ2Uq
KSBvdmVycmlkZQogICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIGZvcm1EZWxlZ2F0ZSA9IG1f
Y29udHJvbGxlci0+X2Zvcm1EZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgICAgIGF1dG8gaW5wdXRE
ZWxlZ2F0ZSA9IG1fY29udHJvbGxlci0+X2lucHV0RGVsZWdhdGUuZ2V0KCk7CiAKLSAgICAgICAg
ICAgIGlmICghW2Zvcm1EZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyU2hvdWxkTm90aWZ5T25Gb3JtQ2hh
bmdlczopXSkKKyAgICAgICAgICAgIGlmICghW2lucHV0RGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlclNo
b3VsZE5vdGlmeU9uRm9ybUNoYW5nZXM6KV0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgICAgICAgICByZXR1cm4gW2Zvcm1EZWxlZ2F0ZSBfd2ViUHJvY2Vzc1BsdWdJbkJy
b3dzZXJDb250ZXh0Q29udHJvbGxlclNob3VsZE5vdGlmeU9uRm9ybUNoYW5nZXM6bV9jb250cm9s
bGVyXTsKKyAgICAgICAgICAgIHJldHVybiBbaW5wdXREZWxlZ2F0ZSBfd2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlclNob3VsZE5vdGlmeU9uRm9ybUNoYW5nZXM6bV9jb250
cm9sbGVyXTsKICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRBc3NvY2lhdGVG
b3JtQ29udHJvbHMoV2ViS2l0OjpXZWJQYWdlKiwgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpFbGVtZW50Pj4mIGVsZW1lbnRzKSBvdmVycmlkZQogICAgICAgICB7Ci0gICAgICAgICAgICBh
dXRvIGZvcm1EZWxlZ2F0ZSA9IG1fY29udHJvbGxlci0+X2Zvcm1EZWxlZ2F0ZS5nZXQoKTsKKyAg
ICAgICAgICAgIGF1dG8gaW5wdXREZWxlZ2F0ZSA9IG1fY29udHJvbGxlci0+X2lucHV0RGVsZWdh
dGUuZ2V0KCk7CiAKLSAgICAgICAgICAgIGlmICghW2Zvcm1EZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVy
OmRpZEFzc29jaWF0ZUZvcm1Db250cm9sczopXSkKKyAgICAgICAgICAgIGlmICghW2lucHV0RGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlcjpkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHM6KV0pCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBhdXRvIGNvbnRyb2xzID0gYWRvcHROUyhb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmVsZW1lbnRzLnNpemUoKV0p
OwogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogZWxlbWVudHMpCiAgICAg
ICAgICAgICAgICAgW2NvbnRyb2xzIGFkZE9iamVjdDp3cmFwcGVyKCpXZWJLaXQ6OkluamVjdGVk
QnVuZGxlTm9kZUhhbmRsZTo6Z2V0T3JDcmVhdGUoZWxlbWVudC5nZXQoKSkpXTsKLSAgICAgICAg
ICAgIHJldHVybiBbZm9ybURlbGVnYXRlIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyOm1fY29udHJvbGxlciBkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHM6Y29udHJvbHMu
Z2V0KCldOworICAgICAgICAgICAgcmV0dXJuIFtpbnB1dERlbGVnYXRlIF93ZWJQcm9jZXNzUGx1
Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxlciBkaWRBc3NvY2lhdGVGb3Jt
Q29udHJvbHM6Y29udHJvbHMuZ2V0KCldOwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgogICAg
ICAgICBXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKm1fY29udHJv
bGxlcjsKICAgICB9OwogCi0gICAgaWYgKGZvcm1EZWxlZ2F0ZSkKKyAgICBpZiAoaW5wdXREZWxl
Z2F0ZSkKICAgICAgICAgX3BhZ2UtPnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPEZvcm1DbGllbnQ+KHNlbGYpKTsKICAgICBlbHNlCiAgICAgICAgIF9wYWdlLT5z
ZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQobnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1
Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlclByaXZhdGUuaAppbmRleCA4MTI0YjE5OGI5MjM5OGFkNWM3Y2M0MzE5
ZGViNGRjYmIwOTY4YjY0Li5mYzcwYWJmYmIyYWNjZThjOGU3OWNiNDhmYTg3M2M0YmJmNmIyMmRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJQcml2YXRlLmgKQEAgLTMx
LDcgKzMxLDcgQEAKIAogQGNsYXNzIFdLQnJvd3NpbmdDb250ZXh0SGFuZGxlOwogQGNsYXNzIF9X
S1JlbW90ZU9iamVjdFJlZ2lzdHJ5OwotQHByb3RvY29sIFdLV2ViUHJvY2Vzc1BsdWdJbkZvcm1E
ZWxlZ2F0ZVByaXZhdGU7CitAcHJvdG9jb2wgV0tXZWJQcm9jZXNzUGx1Z0luSW5wdXREZWxlZ2F0
ZVByaXZhdGU7CiAKIEBpbnRlcmZhY2UgV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyIChXS1ByaXZhdGUpCiAKQEAgLTQxLDcgKzQxLDcgQEAKIAogQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5KSBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeSAqX3JlbW90ZU9iamVj
dFJlZ2lzdHJ5OwogCi1AcHJvcGVydHkgKHdlYWssIHNldHRlcj1fc2V0Rm9ybURlbGVnYXRlOikg
aWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkZvcm1EZWxlZ2F0ZVByaXZhdGU+IF9mb3JtRGVsZWdhdGU7
CitAcHJvcGVydHkgKHdlYWssIHNldHRlcj1fc2V0SW5wdXREZWxlZ2F0ZTopIGlkIDxXS1dlYlBy
b2Nlc3NQbHVnSW5JbnB1dERlbGVnYXRlUHJpdmF0ZT4gX2lucHV0RGVsZWdhdGU7CiAKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldERlZmVyc0xvYWRpbmc6KSBCT09MIF9kZWZlcnNM
b2FkaW5nOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262626</attachid>
            <date>2015-10-07 12:41:33 -0700</date>
            <delta_ts>2015-10-13 22:51:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149646-20151007124101.patch</filename>
            <type>text/plain</type>
            <size>36936</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwNjIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDA0Mzk0YjBlZWY1YmQ2
N2IxMGY1ZGNhNWI4ZGQ4NWUxZTgwNDRmYS4uNDgwMjIyZGM3NjQ1MzY4MzFlYzE3YjE3ZGNlYWVj
ZmUyZGYxNTFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE1LTEwLTA3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIFdLV2Vi
VmlldyBpbnB1dCBkZWxlZ2F0ZSBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0OTY0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlbmFtZXMgdGhlIGV4aXN0aW5nIF9XS0Zvcm1EZWxlZ2F0ZSB0byBf
V0tJbnB1dERlbGVnYXRlIGFuZCBhZGRzIGEgbmV3IGRlbGVnYXRlIFNQSSBtZXRob2QKKyAgICAg
ICAgLVtfV0tJbnB1dERlbGVnYXRlIF93ZWJWaWV3OmZvY3VzU2hvdWxkU3RhcnRJbnB1dFNlc3Np
b246XSB0aGF0IGFsbG93cyBjbGllbnRzIHRvIGFsbG93IG9yCisgICAgICAgIGRpc2FsbG93IHNo
b3dpbmcgdXAgdGhlIGtleWJvYXJkLiBUbyBtYWtlIHRoaXMgZGVjaXNpb24sIGNsaWVudHMgYXJl
IGdpdmVuIGEKKyAgICAgICAgX1dLRm9jdXNlZEVsZW1lbnRJbmZvLCB3aGljaCBjb250YWlucyBp
bmZvcm1hdGlvbiBhYm91dCB0aGUgZm9jdXNlZCBlbGVtZW50IHByaW9yIHRvIHRoZQorICAgICAg
ICBrZXlib2FyZCBzaG93aW5nIHVwIHNvIHRoZSBjbGllbnQgd2lsbCBiZSBhYmxlIHRvIG92ZXJy
aWRlIGRlZmF1bHQgYXNzaXN0YW5jZSBiZWhhdmlvci4KKworICAgICAgICBXaGlsZSB0aGUgaW5m
b3JtYXRpb24gY29udGFpbmVkIGluIGEgX1dLRm9jdXNlZEVsZW1lbnRJbmZvIGN1cnJlbnRseSBz
ZWVtcyBsaWtlIG92ZXJraWxsIGZvcgorICAgICAgICBfd2ViVmlldzpmb2N1c1Nob3VsZFN0YXJ0
SW5wdXRTZXNzaW9uLCBvdXIgaW50ZW50aW9ucyBhcmUgdG8gZ2l2ZSBXZWJLaXQgY2xpZW50cyBj
b250cm9sIG92ZXIgbW9yZQorICAgICAgICBkZXRhaWxzIG9mIGhvdyBub2RlIGFzc2lzdGFuY2Ug
d29ya3MsIHN1Y2ggYXMgYmVpbmcgYWJsZSB0byB1c2UgYSBjdXN0b20gZWRpdG9yIGZvciBjZXJ0
YWluCisgICAgICAgIHR5cGVzIG9mIG5vZGVzLgorCisgICAgICAgICogU2hhcmVkL0FQSS9Db2Nv
YS9XZWJLaXRQcml2YXRlLmg6IEFkZGVkIG5ldyBoZWFkZXIgX1dLRm9jdXNlZEVsZW1lbnRJbmZv
LmguCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9pbnB1dERlbGVnYXRlXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZm9ybURlbGVnYXRlXSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0SW5wdXREZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9zZXRGb3JtRGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBpbml0
V2l0aEZyYW1lOmNvbmZpZ3VyYXRpb246XSk6IERlbGV0ZWQgY2FuQXNzaXN0T25Qcm9ncmFtbWF0
aWNGb2N1cyBmbGFnLgorICAgICAgICAoLVtXS1dlYlZpZXcgY2FuQXNzaXN0T25Qcm9ncmFtbWF0
aWNGb2N1c10pOiBEaXR0by4KKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldENhbkFzc2lzdE9uUHJv
Z3JhbW1hdGljRm9jdXM6XSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Q29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBpbml0XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
X2NhbkFzc2lzdE9uUHJvZ3JhbW1hdGljRm9jdXNdKTogRGVsZXRlZCBjYW5Bc3Npc3RPblByb2dy
YW1tYXRpY0ZvY3VzIGZsYWcuCisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Nl
dENhbkFzc2lzdE9uUHJvZ3JhbW1hdGljRm9jdXM6XSk6IERpdHRvLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLRm9jdXNlZEVsZW1lbnRJbmZvLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLRm9ybURlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tJbnB1dERlbGVnYXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLRm9ybURlbGVnYXRlLmguCisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLRm9jdXNlZEVs
ZW1lbnRJbmZvIGluaXRXaXRoQXNzaXN0ZWROb2RlSW5mb3JtYXRpb246aXNJbnRlcmFjdGluZzpd
KToKKyAgICAgICAgKC1bV0tGb2N1c2VkRWxlbWVudEluZm8gdHlwZV0pOgorICAgICAgICAoLVtX
S0ZvY3VzZWRFbGVtZW50SW5mbyB2YWx1ZV0pOgorICAgICAgICAoLVtXS0ZvY3VzZWRFbGVtZW50
SW5mbyBpc1VzZXJJbml0aWF0ZWRdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBhY2Nlc3Nv
cnlBdXRvRmlsbF0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zdGFydEFzc2lzdGluZ05v
ZGU6dXNlcklzSW50ZXJhY3Rpbmc6Ymx1clByZXZpb3VzTm9kZTp1c2VyT2JqZWN0Ol0pOiBJZiB0
aGUgaW5wdXQgZGVsZWdhdGUgcmVzcG9uZHMgdG8KKyAgICAgICAgICAgIHNob3VsZFN0YXJ0SW5w
dXRTZXNzaW9uLCBjb25zdWx0IGl0IHRvIHNlZSBpZiB3ZSBzaG91bGQgYnJpbmcgdXAgdGhlIGtl
eWJvYXJkOyBvdGhlcndpc2UsIHVzZSBvdXIgZGVmYXVsdCBiZWhhdmlvci4KKyAgICAgICAgKiBX
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlci5tbToKKwogMjAxNS0xMC0wNiAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgRW5hYmxlIFhTTFQgd2hlbiBidWlsZGluZyBXZWJLaXQgZm9yIGlPUyB1
c2luZyB0aGUgcHVibGljIGlPUyBTREsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9D
b2NvYS9XZWJLaXRQcml2YXRlLmgKaW5kZXggYWNmODYyNGUyZjA2ZjU1YTNkNzhhNWNjNjNhMzRj
MmIzNDc0ZjIzOC4uNzVjMmFhYjcyM2JiNDM4ZTAwN2JkZDJhMDA5NGM2ZWYyZTYxMTI5MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXRQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXRQcml2YXRlLmgKQEAg
LTMxLDggKzMxLDEwIEBACiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogI2lt
cG9ydCA8V2ViS2l0L19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLmg+CiAjaW1wb3J0IDxXZWJLaXQv
X1dLRWxlbWVudEFjdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0ZvY3VzZWRFbGVtZW50SW5m
by5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0Zvcm1EZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2ViS2l0
L19XS0Zvcm1JbnB1dFNlc3Npb24uaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tJbnB1dERlbGVnYXRl
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg+CiAjaW1w
b3J0IDxXZWJLaXQvX1dLVGh1bWJuYWlsVmlldy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1Zpc2l0
ZWRMaW5rU3RvcmUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5oCmluZGV4IDRhN2RlYzdjZjVmYzkxODliZDA0NThhNWU4NDI5Y2UyYWVjNzA3Y2Uu
LjU1ZGViZWE3MjYwOWZiMzc1NzEyMTdmZGVmYjVkNjM1YjFkYmM3MzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaApAQCAtMjQxLDExICsyNDEs
NiBAQCBXS19DTEFTU19BVkFJTEFCTEUoMTBfMTAsIDhfMCkKIC8qISBAYWJzdHJhY3QgVGhlIHNj
cm9sbCB2aWV3IGFzc29jaWF0ZWQgd2l0aCB0aGUgd2ViIHZpZXcuCiAgKi8KIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSwgc3Ryb25nKSBVSVNjcm9sbFZpZXcgKnNjcm9sbFZpZXc7Ci0K
LS8qISBAYWJzdHJhY3QgQSBCb29sZWFuIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciBwcm9ncmFt
bWF0aWMgZm9jdXMgb24KLSBhbiBlbGVtZW50IGlzIGFsbG93ZWQgdG8gdHJpZ2dlciBhc3Npc3Rh
bmNlLgotICovCi1AcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBjYW5Bc3Npc3RPblByb2dyYW1t
YXRpY0ZvY3VzOwogI2VuZGlmCiAKICNpZiAhVEFSR0VUX09TX0lQSE9ORQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBjMmZiOGMwNmQy
MTAxYTIyZDRjZDRkOGFmMTM4M2Y5NTlmYThkZjE3Li4wNTg5ZDk5ODc1MzY5ZDUwNDE5ZDcwYzY4
NDY1NGFlNmQ3MjUxNzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQpAQCAtNzQsNiArNzQsNyBAQAogI2ltcG9ydCAiX1dLRGlhZ25vc3Rp
Y0xvZ2dpbmdEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiX1dLRmluZERlbGVnYXRlLmgiCiAjaW1wb3J0
ICJfV0tGb3JtRGVsZWdhdGUuaCIKKyNpbXBvcnQgIl9XS0lucHV0RGVsZWdhdGUuaCIKICNpbXBv
cnQgIl9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1Nlc3Np
b25TdGF0ZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tWaXNpdGVkTGlua1N0b3JlSW50ZXJuYWwu
aCIKQEAgLTE1OSw3ICsxNjAsNyBAQCBAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3IHsKICAgICBS
ZXRhaW5QdHI8X1dLUmVtb3RlT2JqZWN0UmVnaXN0cnk+IF9yZW1vdGVPYmplY3RSZWdpc3RyeTsK
ICAgICBfV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cyBfb2JzZXJ2ZWRSZW5kZXJpbmdQcm9ncmVz
c0V2ZW50czsKIAotICAgIFdlYktpdDo6V2Vha09iakNQdHI8aWQgPF9XS0Zvcm1EZWxlZ2F0ZT4+
IF9mb3JtRGVsZWdhdGU7CisgICAgV2ViS2l0OjpXZWFrT2JqQ1B0cjxpZCA8X1dLSW5wdXREZWxl
Z2F0ZT4+IF9pbnB1dERlbGVnYXRlOwogI2lmIFBMQVRGT1JNKElPUykKICAgICBSZXRhaW5QdHI8
V0tTY3JvbGxWaWV3PiBfc2Nyb2xsVmlldzsKICAgICBSZXRhaW5QdHI8V0tDb250ZW50Vmlldz4g
X2NvbnRlbnRWaWV3OwpAQCAtMjExLDggKzIxMiw2IEBAIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZp
ZXcgewogICAgIEJPT0wgX3BhZ2VJc1ByaW50aW5nVG9QREY7CiAgICAgUmV0YWluUHRyPENHUERG
RG9jdW1lbnRSZWY+IF9wcmludGVkRG9jdW1lbnQ7CiAgICAgVmVjdG9yPHN0ZDo6ZnVuY3Rpb248
dm9pZCAoKT4+IF9zbmFwc2hvdHNEZWZlcnJlZER1cmluZ1Jlc2l6ZTsKLQotICAgIEJPT0wgX2Nh
bkFzc2lzdE9uUHJvZ3JhbW1hdGljRm9jdXM7CiAjZW5kaWYKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgUmV0YWluUHRyPFdLVmlldz4gX3drVmlldzsKQEAgLTM2OCw4ICszNjcsNiBAQCAtIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdLV2Vi
Vmlld0NvbmZpZ3VyYXRpbwogICAgIF9wYWdlLT5jb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdl
KFtzZWxmIF9jb250ZW50U2l6ZUNhdGVnb3J5XSk7CiAKICAgICBbW19jb25maWd1cmF0aW9uIF9j
b250ZW50UHJvdmlkZXJSZWdpc3RyeV0gYWRkUGFnZToqX3BhZ2VdOwotCi0gICAgW3NlbGYgc2V0
Q2FuQXNzaXN0T25Qcm9ncmFtbWF0aWNGb2N1czpbX2NvbmZpZ3VyYXRpb24gY2FuQXNzaXN0T25Q
cm9ncmFtbWF0aWNGb2N1c11dOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCkBAIC03MjAs
MTYgKzcxNyw2IEBAIC0gKFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcKICAgICByZXR1cm4gX3Nj
cm9sbFZpZXcuZ2V0KCk7CiB9CiAKLS0gKEJPT0wpY2FuQXNzaXN0T25Qcm9ncmFtbWF0aWNGb2N1
cwotewotICAgIHJldHVybiBfY2FuQXNzaXN0T25Qcm9ncmFtbWF0aWNGb2N1czsKLX0KLQotLSAo
dm9pZClzZXRDYW5Bc3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzOihCT09MKWNhbkFzc2lzdE9uUHJv
Z3JhbW1hdGljRm9jdXMKLXsKLSAgICBfY2FuQXNzaXN0T25Qcm9ncmFtbWF0aWNGb2N1cyA9IGNh
bkFzc2lzdE9uUHJvZ3JhbW1hdGljRm9jdXM7Ci19Ci0KIC0gKFdLQnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlciAqKWJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIKIHsKICAgICByZXR1cm4gW19jb250
ZW50VmlldyBicm93c2luZ0NvbnRleHRDb250cm9sbGVyXTsKQEAgLTI0MzgsMTQgKzI0MjUsMTkg
QEAgLSAodm9pZClfc2F2ZUJhY2tGb3J3YXJkU25hcHNob3RGb3JJdGVtOihXS0JhY2tGb3J3YXJk
TGlzdEl0ZW0gKilpdGVtCiAgICAgX3BhZ2UtPnJlY29yZE5hdmlnYXRpb25TbmFwc2hvdChpdGVt
Ll9pdGVtKTsKIH0KIAorLSAoaWQgPF9XS0lucHV0RGVsZWdhdGU+KV9pbnB1dERlbGVnYXRlCit7
CisgICAgcmV0dXJuIF9pbnB1dERlbGVnYXRlLmdldEF1dG9yZWxlYXNlZCgpOworfQorCiAtIChp
ZCA8X1dLRm9ybURlbGVnYXRlPilfZm9ybURlbGVnYXRlCiB7Ci0gICAgcmV0dXJuIF9mb3JtRGVs
ZWdhdGUuZ2V0QXV0b3JlbGVhc2VkKCk7CisgICAgcmV0dXJuIChpZCA8X1dLRm9ybURlbGVnYXRl
Pilbc2VsZiBfaW5wdXREZWxlZ2F0ZV07CiB9CiAKLS0gKHZvaWQpX3NldEZvcm1EZWxlZ2F0ZToo
aWQgPF9XS0Zvcm1EZWxlZ2F0ZT4pZm9ybURlbGVnYXRlCistICh2b2lkKV9zZXRJbnB1dERlbGVn
YXRlOihpZCA8X1dLSW5wdXREZWxlZ2F0ZT4paW5wdXREZWxlZ2F0ZQogewotICAgIF9mb3JtRGVs
ZWdhdGUgPSBmb3JtRGVsZWdhdGU7CisgICAgX2lucHV0RGVsZWdhdGUgPSBpbnB1dERlbGVnYXRl
OwogCiAgICAgY2xhc3MgRm9ybUNsaWVudCA6IHB1YmxpYyBBUEk6OkZvcm1DbGllbnQgewogICAg
IHB1YmxpYzoKQEAgLTI0NjUsOSArMjQ1Nyw5IEBAIC0gKHZvaWQpX3NldEZvcm1EZWxlZ2F0ZToo
aWQgPF9XS0Zvcm1EZWxlZ2F0ZT4pZm9ybURlbGVnYXRlCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGZvcm1EZWxlZ2F0ZSA9IG1fd2Vi
Vmlldy0+X2Zvcm1EZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgICAgIGF1dG8gaW5wdXREZWxlZ2F0
ZSA9IG1fd2ViVmlldy0+X2lucHV0RGVsZWdhdGUuZ2V0KCk7CiAKLSAgICAgICAgICAgIGlmICgh
W2Zvcm1EZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OndpbGxT
dWJtaXRGb3JtVmFsdWVzOnVzZXJPYmplY3Q6c3VibWlzc2lvbkhhbmRsZXI6KV0pIHsKKyAgICAg
ICAgICAgIGlmICghW2lucHV0RGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihf
d2ViVmlldzp3aWxsU3VibWl0Rm9ybVZhbHVlczp1c2VyT2JqZWN0OnN1Ym1pc3Npb25IYW5kbGVy
OildKSB7CiAgICAgICAgICAgICAgICAgbGlzdGVuZXItPmNvbnRpbnVlU3VibWlzc2lvbigpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTI0ODksOCArMjQ4MSw4
IEBAIC0gKHZvaWQpX3NldEZvcm1EZWxlZ2F0ZTooaWQgPF9XS0Zvcm1EZWxlZ2F0ZT4pZm9ybURl
bGVnYXRlCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIFJlZlB0cjxXZWJLaXQ6OldlYkZv
cm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eT4gbG9jYWxMaXN0ZW5lciA9IFdURjo6bW92ZShsaXN0
ZW5lcik7Ci0gICAgICAgICAgICBSZWZQdHI8V2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxD
aGVja2VyPiBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpj
cmVhdGUoZm9ybURlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IoX3dlYlZpZXc6d2lsbFN1Ym1pdEZv
cm1WYWx1ZXM6dXNlck9iamVjdDpzdWJtaXNzaW9uSGFuZGxlcjopKTsKLSAgICAgICAgICAgIFtm
b3JtRGVsZWdhdGUgX3dlYlZpZXc6bV93ZWJWaWV3IHdpbGxTdWJtaXRGb3JtVmFsdWVzOnZhbHVl
TWFwLmdldCgpIHVzZXJPYmplY3Q6dXNlck9iamVjdCBzdWJtaXNzaW9uSGFuZGxlcjpbbG9jYWxM
aXN0ZW5lciwgY2hlY2tlcl0geworICAgICAgICAgICAgUmVmUHRyPFdlYktpdDo6Q29tcGxldGlv
bkhhbmRsZXJDYWxsQ2hlY2tlcj4gY2hlY2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJD
YWxsQ2hlY2tlcjo6Y3JlYXRlKGlucHV0RGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcihfd2ViVmll
dzp3aWxsU3VibWl0Rm9ybVZhbHVlczp1c2VyT2JqZWN0OnN1Ym1pc3Npb25IYW5kbGVyOikpOwor
ICAgICAgICAgICAgW2lucHV0RGVsZWdhdGUgX3dlYlZpZXc6bV93ZWJWaWV3IHdpbGxTdWJtaXRG
b3JtVmFsdWVzOnZhbHVlTWFwLmdldCgpIHVzZXJPYmplY3Q6dXNlck9iamVjdCBzdWJtaXNzaW9u
SGFuZGxlcjpbbG9jYWxMaXN0ZW5lciwgY2hlY2tlcl0gewogICAgICAgICAgICAgICAgIGNoZWNr
ZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICAgICAgICAgIGxvY2FsTGlz
dGVuZXItPmNvbnRpbnVlU3VibWlzc2lvbigpOwogICAgICAgICAgICAgfV07CkBAIC0yNTAwLDEy
ICsyNDkyLDE3IEBAIC0gKHZvaWQpX3NldEZvcm1EZWxlZ2F0ZTooaWQgPF9XS0Zvcm1EZWxlZ2F0
ZT4pZm9ybURlbGVnYXRlCiAgICAgICAgIFdLV2ViVmlldyAqbV93ZWJWaWV3OwogICAgIH07CiAK
LSAgICBpZiAoZm9ybURlbGVnYXRlKQorICAgIGlmIChpbnB1dERlbGVnYXRlKQogICAgICAgICBf
cGFnZS0+c2V0Rm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEZvcm1DbGllbnQ+KHNlbGYpKTsK
ICAgICBlbHNlCiAgICAgICAgIF9wYWdlLT5zZXRGb3JtQ2xpZW50KG51bGxwdHIpOwogfQogCist
ICh2b2lkKV9zZXRGb3JtRGVsZWdhdGU6KGlkIDxfV0tGb3JtRGVsZWdhdGU+KWZvcm1EZWxlZ2F0
ZQoreworICAgIFtzZWxmIF9zZXRJbnB1dERlbGVnYXRlOihpZCA8X1dLSW5wdXREZWxlZ2F0ZT4p
Zm9ybURlbGVnYXRlXTsKK30KKwogLSAoQk9PTClfaXNEaXNwbGF5aW5nU3RhbmRhbG9uZUltYWdl
RG9jdW1lbnQKIHsKICAgICBpZiAoYXV0byogbWFpbkZyYW1lID0gX3BhZ2UtPm1haW5GcmFtZSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24uaAppbmRleCBkYmRmMmQxMTY5NDk4YmVlYWEzZmY3ZmE1NGM1
Mzk1MmM2OGJjYWFmLi5mZTdhYzc4NDNiM2QwODZlZWU0NzM2NzdlZmEwYmQ0NjcwMmFiM2NjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24uaApAQCAtMTE5LDEyICsxMTksNiBAQCBXS19DTEFTU19BVkFJ
TEFCTEUoMTBfMTAsIDhfMCkKICAqLwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgYWxsb3dz
UGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2sgV0tfQVZBSUxBQkxFKE5BLCA5XzApOwogCi0v
KiEgQGFic3RyYWN0IEEgQm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgcHJvZ3JhbW1h
dGljIGZvY3VzIG9uCi0gYW4gZWxlbWVudCBpcyBhbGxvd2VkIHRvIHRyaWdnZXIgYXNzaXN0YW5j
ZS4KLSBAZGlzY3Vzc2lvbiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBOTy4KLSAqLwotQHByb3BlcnR5
IChub25hdG9taWMpIEJPT0wgY2FuQXNzaXN0T25Qcm9ncmFtbWF0aWNGb2N1czsKLQogI2VuZGlm
CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQppbmRleCBhMjMwOGQzMzc5MmY5NWM1ODMw
M2Q2ZmYwMTM2MGEwYzllNmIyNmUwLi5mNjU3ZTI0Mjc0ZjViMDJkNDRhYzFiNTJiNWEwZTg3MTE4
ZjQzNTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCkBAIC0xMTIsNyArMTEyLDYgQEAgLSAo
aW5zdGFuY2V0eXBlKWluaXQKICAgICBfYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjayA9IFdLR2V0
RGV2aWNlQ2xhc3MoKSA9PSBXS0RldmljZUNsYXNzaVBhZDsKICAgICBfaW5saW5lTWVkaWFQbGF5
YmFja1JlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGUgPSAhX2FsbG93c0lubGluZU1lZGlhUGxh
eWJhY2s7CiAgICAgX21lZGlhRGF0YUxvYWRzQXV0b21hdGljYWxseSA9IE5POwotICAgIF9jYW5B
c3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzID0gTk87CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpCkBAIC0zNjUsMTYgKzM2NCw2IEBAIC0gKHZvaWQpX3NldE1l
ZGlhRGF0YUxvYWRzQXV0b21hdGljYWxseTooQk9PTCltZWRpYURhdGFMb2Fkc0F1dG9tYXRpY2Fs
bHkKIHsKICAgICBfbWVkaWFEYXRhTG9hZHNBdXRvbWF0aWNhbGx5ID0gbWVkaWFEYXRhTG9hZHNB
dXRvbWF0aWNhbGx5OwogfQotCi0tIChCT09MKV9jYW5Bc3Npc3RPblByb2dyYW1tYXRpY0ZvY3Vz
Ci17Ci0gICAgcmV0dXJuIF9jYW5Bc3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzOwotfQotCi0tICh2
b2lkKV9zZXRDYW5Bc3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzOihCT09MKWNhbkFzc2lzdE9uUHJv
Z3JhbW1hdGljRm9jdXMKLXsKLSAgICBfY2FuQXNzaXN0T25Qcm9ncmFtbWF0aWNGb2N1cyA9IGNh
bkFzc2lzdE9uUHJvZ3JhbW1hdGljRm9jdXM7Ci19CiAjZW5kaWYKIAogQGVuZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApp
bmRleCBhMWVhY2Q1MWQwODNkODE4ZmU4ZjVjZTVlN2ZhYWI5NDBjNTZjMGZlLi4yNTEzYzRjNjI2
MmNiNDIxOGYzZDA5ZjczMDY4ZmJjNGY4NWY1NmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtNDgsNiArNDgs
NyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tQYWdpbmF0aW9uTW9kZSkgewogQHBy
b3RvY29sIF9XS0RpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGU7CiBAcHJvdG9jb2wgX1dLRmluZERl
bGVnYXRlOwogQHByb3RvY29sIF9XS0Zvcm1EZWxlZ2F0ZTsKK0Bwcm90b2NvbCBfV0tJbnB1dERl
bGVnYXRlOwogCiBAaW50ZXJmYWNlIFdLV2ViVmlldyAoV0tQcml2YXRlKQogCkBAIC0xOTgsNyAr
MTk5LDEyIEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1BhZ2luYXRpb25Nb2RlKSB7
CiAtICh2b2lkKV9jb3VudFN0cmluZ01hdGNoZXM6KE5TU3RyaW5nICopc3RyaW5nIG9wdGlvbnM6
KF9XS0ZpbmRPcHRpb25zKW9wdGlvbnMgbWF4Q291bnQ6KE5TVUludGVnZXIpbWF4Q291bnQ7CiAt
ICh2b2lkKV9oaWRlRmluZFVJOwogCi1AcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVy
PV9zZXRGb3JtRGVsZWdhdGU6KSBpZCA8X1dLRm9ybURlbGVnYXRlPiBfZm9ybURlbGVnYXRlOwor
LyoqCisgKiBXZSBhcmUgdHJhbnNpdGlvbmluZyBfV0tGb3JtRGVsZWdhdGUgdG8gX1dLSW5wdXRE
ZWxlZ2F0ZS4gVGhpcyBfZm9ybURlbGVnYXRlIFNQSSBpcyBoZXJlIHRlbXBvcmFyaWx5IGZvciBi
aW5hcnkgY29tcGF0aWJpbGl0eSBhbmQKKyAqIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gd2UgYXJl
IHJlYWR5IHRvIG1ha2UgdGhlIHN3aXRjaC4KKyAqLworQHByb3BlcnR5IChub25hdG9taWMsIHdl
YWssIGdldHRlcj1fZm9ybURlbGVnYXRlLCBzZXR0ZXI9X3NldEZvcm1EZWxlZ2F0ZTopIGlkIDxf
V0tGb3JtRGVsZWdhdGU+IF9mb3JtRGVsZWdhdGU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgd2Vh
aywgc2V0dGVyPV9zZXRJbnB1dERlbGVnYXRlOikgaWQgPF9XS0lucHV0RGVsZWdhdGU+IF9pbnB1
dERlbGVnYXRlOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGdldHRlcj1faXNE
aXNwbGF5aW5nU3RhbmRhbG9uZUltYWdlRG9jdW1lbnQpIEJPT0wgX2Rpc3BsYXlpbmdTdGFuZGFs
b25lSW1hZ2VEb2N1bWVudDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgZ2V0dGVy
PV9pc0Rpc3BsYXlpbmdTdGFuZGFsb25lTWVkaWFEb2N1bWVudCkgQk9PTCBfZGlzcGxheWluZ1N0
YW5kYWxvbmVNZWRpYURvY3VtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tGb2N1c2VkRWxlbWVudEluZm8uaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLRm9jdXNlZEVsZW1lbnRJbmZvLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjZm
YTQ1NzBmZGQ2ZjA2ZDgzZTgwOGU0ODI3MzczNmEyMWQ0MDJhOAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRm9jdXNlZEVsZW1lbnRJbmZv
LmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5k
YXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91
bmRhdGlvbi5oPgorCisvKioKKyAqIFdLSW5wdXRUeXBlIGV4cG9zZXMgYSBzdWJzZXQgb2YgYWxs
IGtub3duIGlucHV0IHR5cGVzIGVudW1lcmF0ZWQgaW4KKyAqIFdlYktpdDo6SW5wdXRUeXBlLiBX
aGlsZSB0aGVyZSBpcyBjdXJyZW50bHkgYSBvbmUtdG8tb25lIG1hcHBpbmcsIHdlCisgKiBuZWVk
IHRvIGNvbnNpZGVyIGhvdyB3ZSBzaG91bGQgZXhwb3NlIGNlcnRhaW4gaW5wdXQgdHlwZXMuCisg
Ki8KK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLSW5wdXRUeXBlKSB7CisgICAgV0tJbnB1
dFR5cGVOb25lLAorICAgIFdLSW5wdXRUeXBlQ29udGVudEVkaXRhYmxlLAorICAgIFdLSW5wdXRU
eXBlVGV4dCwKKyAgICBXS0lucHV0VHlwZVBhc3N3b3JkLAorICAgIFdLSW5wdXRUeXBlVGV4dEFy
ZWEsCisgICAgV0tJbnB1dFR5cGVTZWFyY2gsCisgICAgV0tJbnB1dFR5cGVFbWFpbCwKKyAgICBX
S0lucHV0VHlwZVVSTCwKKyAgICBXS0lucHV0VHlwZVBob25lLAorICAgIFdLSW5wdXRUeXBlTnVt
YmVyLAorICAgIFdLSW5wdXRUeXBlTnVtYmVyUGFkLAorICAgIFdLSW5wdXRUeXBlRGF0ZSwKKyAg
ICBXS0lucHV0VHlwZURhdGVUaW1lLAorICAgIFdLSW5wdXRUeXBlRGF0ZVRpbWVMb2NhbCwKKyAg
ICBXS0lucHV0VHlwZU1vbnRoLAorICAgIFdLSW5wdXRUeXBlV2VlaywKKyAgICBXS0lucHV0VHlw
ZVRpbWUsCisgICAgV0tJbnB1dFR5cGVTZWxlY3QKK307CisKKy8qKgorICogVGhlIF9XS0ZvY3Vz
ZWRFbGVtZW50SW5mbyBwcm92aWRlcyBiYXNpYyBpbmZvcm1hdGlvbiBhYm91dCBhbiBlbGVtZW50
CisgKiB0aGF0IGhhcyBiZWVuIGZvY3VzZWQgKGVpdGhlciBwcm9ncmFtbWF0aWNhbGx5IG9yIHRo
cm91Z2ggdXNlciBpbnRlcmFjdGlvbikKKyAqIGJ1dCBoYXMgbm90IHlldCBiZWVuIGFzc2lzdGVk
LgorICovCitAcHJvdG9jb2wgX1dLRm9jdXNlZEVsZW1lbnRJbmZvIDxOU09iamVjdD4KKworLyog
VGhlIHR5cGUgb2YgdGhlIGlucHV0IGVsZW1lbnQgdGhhdCB3YXMgZm9jdXNlZC4gKi8KK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tJbnB1dFR5cGUgdHlwZTsKKworLyogVGhlIHZh
bHVlIG9mIHRoZSBpbnB1dCBhdCB0aGUgdGltZSBpdCB3YXMgZm9jdXNlZC4gKi8KK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNTdHJpbmcgKnZhbHVlOworCisvKioKKyAq
IFdoZXRoZXIgdGhlIGVsZW1lbnQgd2FzIGZvY3VzZWQgZHVlIHRvIHVzZXIgaW50ZXJhY3Rpb24u
IE5PIGluZGljYXRlcyB0aGF0CisgKiB0aGUgZWxlbWVudCB3YXMgZm9jdXNlZCBwcm9ncmFtbWF0
aWNhbGx5LCBlLmcuIGJ5IGNhbGxpbmcgZm9jdXMoKSBpbiBKYXZhU2NyaXB0CisgKiBvciBieSB1
c2luZyB0aGUgYXV0b2ZvY3VzIGF0dHJpYnV0ZS4KKyAqLworQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5LCBnZXR0ZXI9aXNVc2VySW5pdGlhdGVkKSBCT09MIHVzZXJJbml0aWF0ZWQ7CisK
K0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Zvcm1EZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tGb3JtRGVsZWdhdGUuaAppbmRleCA3ZWFmY2Y4NTA1
ODAxMmM5YTUwMWMxYzUxY2ZjMTBiNmFhMGEzNDYxLi5jMWNmNzQwN2QxYmIzZmI1YzY4YzJmZThm
OTFhZmQyMzQ3MzkzNmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0Zvcm1EZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLRm9ybURlbGVnYXRlLmgKQEAgLTIzLDI4ICsyMywyMiBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpZm5kZWYgX1dLRm9ybURlbGVnYXRl
X2gKKyNkZWZpbmUgX1dLRm9ybURlbGVnYXRlX2gKKwogI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRh
dGlvbi5oPgogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAotI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3Vu
ZGF0aW9uLmg+Ci0KLUBjbGFzcyBXS1dlYlZpZXc7Ci1AcHJvdG9jb2wgX1dLRm9ybUlucHV0U2Vz
c2lvbjsKLQotQHByb3RvY29sIF9XS0Zvcm1EZWxlZ2F0ZSA8TlNPYmplY3Q+Ci0KLUBvcHRpb25h
bAotCi0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFN0YXJ0SW5wdXRT
ZXNzaW9uOihpZCA8X1dLRm9ybUlucHV0U2Vzc2lvbj4paW5wdXRTZXNzaW9uOwotLSAodm9pZClf
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyB3aWxsU3VibWl0Rm9ybVZhbHVlczooTlNEaWN0
aW9uYXJ5ICopdmFsdWVzIHVzZXJPYmplY3Q6KE5TT2JqZWN0IDxOU1NlY3VyZUNvZGluZz4gKil1
c2VyT2JqZWN0IHN1Ym1pc3Npb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSlzdWJtaXNzaW9uSGFu
ZGxlcjsKLQotI2lmIFRBUkdFVF9PU19JUEhPTkUKLS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgYWNjZXNzb3J5Vmlld0N1c3RvbUJ1dHRvblRhcHBlZEluRm9ybUlucHV0U2Vz
c2lvbjooaWQgPF9XS0Zvcm1JbnB1dFNlc3Npb24+KWlucHV0U2Vzc2lvbjsKLS0gKEJPT0wpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgaGFzU3VnZ2VzdGlvbnNGb3JDdXJyZW50U3RyaW5n
SW5JbnB1dFNlc3Npb246KGlkIDxfV0tGb3JtSW5wdXRTZXNzaW9uPilpbnB1dFNlc3Npb247Ci0t
IChOU0FycmF5ICopX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3VnZ2VzdGlvbnNGb3JT
dHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGluSW5wdXRTZXNzaW9uOihpZCA8X1dLRm9ybUlucHV0
U2Vzc2lvbj4paW5wdXRTZXNzaW9uOwotI2VuZGlmCisjaW1wb3J0ICJfV0tJbnB1dERlbGVnYXRl
LmgiCiAKKy8qKgorICogV2UgYXJlIHRyYW5zaXRpb25pbmcgX1dLRm9ybURlbGVnYXRlIHRvIF9X
S0lucHV0RGVsZWdhdGUuIFRoaXMgaGVhZGVyIGlzIGhlcmUgdGVtcG9yYXJpbHkgZm9yIGJpbmFy
eSBjb21wYXRpYmlsaXR5IGFuZAorICogc2hvdWxkIGJlIHJlbW92ZWQgd2hlbiB3ZSBhcmUgcmVh
ZHkgdG8gbWFrZSB0aGUgc3dpdGNoLgorICovCitAcHJvdG9jb2wgX1dLRm9ybURlbGVnYXRlIDxf
V0tJbnB1dERlbGVnYXRlPgogQGVuZAogCiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKKworI2Vu
ZGlmIC8qIF9XS0Zvcm1EZWxlZ2F0ZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0lucHV0RGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5wdXREZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlMjg0ODUx
MmY0MjRiMzg2ODkyMzg2ODI3YzAzZWRjYmNhNDJkNGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0lucHV0RGVsZWdhdGUuaApAQCAtMCww
ICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgor
CisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+
CisKK0BjbGFzcyBXS1dlYlZpZXc7CitAcHJvdG9jb2wgX1dLRm9ybUlucHV0U2Vzc2lvbjsKK0Bw
cm90b2NvbCBfV0tGb2N1c2VkRWxlbWVudEluZm87CisKK0Bwcm90b2NvbCBfV0tJbnB1dERlbGVn
YXRlIDxOU09iamVjdD4KKworQG9wdGlvbmFsCisKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgZGlkU3RhcnRJbnB1dFNlc3Npb246KGlkIDxfV0tGb3JtSW5wdXRTZXNzaW9u
PilpbnB1dFNlc3Npb247CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHdp
bGxTdWJtaXRGb3JtVmFsdWVzOihOU0RpY3Rpb25hcnkgKil2YWx1ZXMgdXNlck9iamVjdDooTlNP
YmplY3QgPE5TU2VjdXJlQ29kaW5nPiAqKXVzZXJPYmplY3Qgc3VibWlzc2lvbkhhbmRsZXI6KHZv
aWQgKF4pKHZvaWQpKXN1Ym1pc3Npb25IYW5kbGVyOworCisjaWYgVEFSR0VUX09TX0lQSE9ORQor
LSAoQk9PTClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBmb2N1c1Nob3VsZFN0YXJ0SW5w
dXRTZXNzaW9uOihpZCA8X1dLRm9jdXNlZEVsZW1lbnRJbmZvPilpbmZvOworLSAodm9pZClfd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBhY2Nlc3NvcnlWaWV3Q3VzdG9tQnV0dG9uVGFwcGVk
SW5Gb3JtSW5wdXRTZXNzaW9uOihpZCA8X1dLRm9ybUlucHV0U2Vzc2lvbj4paW5wdXRTZXNzaW9u
OworLSAoQk9PTClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBoYXNTdWdnZXN0aW9uc0Zv
ckN1cnJlbnRTdHJpbmdJbklucHV0U2Vzc2lvbjooaWQgPF9XS0Zvcm1JbnB1dFNlc3Npb24+KWlu
cHV0U2Vzc2lvbjsKKy0gKE5TQXJyYXkgKilfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBz
dWdnZXN0aW9uc0ZvclN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgaW5JbnB1dFNlc3Npb246KGlk
IDxfV0tGb3JtSW5wdXRTZXNzaW9uPilpbnB1dFNlc3Npb247CisjZW5kaWYKKworQGVuZAorCisj
ZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggMDNjNGFhMDE5M2Ex
NmE0OGZlYjFmODdjYjNiNGE5OWM2OTNjNWNlOC4uNGZmZTdiNmZmMjE0MDJmOTkwZWQyYWZiZmVm
ZWI1MTNjNTM4ZGNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTUzLDggKzUzLDkgQEAKICNpbXBv
cnQgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1w
b3J0ICJfV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0ludGVybmFsLmgiCi0jaW1wb3J0ICJfV0tGb3Jt
RGVsZWdhdGUuaCIKKyNpbXBvcnQgIl9XS0ZvY3VzZWRFbGVtZW50SW5mby5oIgogI2ltcG9ydCAi
X1dLRm9ybUlucHV0U2Vzc2lvbi5oIgorI2ltcG9ydCAiX1dLSW5wdXREZWxlZ2F0ZS5oIgogI2lt
cG9ydCA8Q29yZVRleHQvQ1RGb250Lmg+CiAjaW1wb3J0IDxDb3JlVGV4dC9DVEZvbnREZXNjcmlw
dG9yLmg+CiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvVVRDb3JlVHlwZXMuaD4KQEAgLTI4
MCw2ICsyODEsOTkgQEAgLSAodm9pZClpbnZhbGlkYXRlCiAKIEBlbmQKIAorQGludGVyZmFjZSBX
S0ZvY3VzZWRFbGVtZW50SW5mbyA6IE5TT2JqZWN0IDxfV0tGb2N1c2VkRWxlbWVudEluZm8+Cist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbjooY29uc3QgQXNz
aXN0ZWROb2RlSW5mb3JtYXRpb24mKWluZm9ybWF0aW9uIGlzVXNlckluaXRpYXRlZDooQk9PTClp
c1VzZXJJbml0aWF0ZWQ7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS0ZvY3VzZWRFbGVtZW50
SW5mbyB7CisgICAgV0tJbnB1dFR5cGUgX3R5cGU7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBf
dmFsdWU7CisgICAgQk9PTCBfaXNVc2VySW5pdGlhdGVkOworfQorCistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbjooY29uc3QgQXNzaXN0ZWROb2RlSW5mb3Jt
YXRpb24mKWluZm9ybWF0aW9uIGlzVXNlckluaXRpYXRlZDooQk9PTClpc1VzZXJJbml0aWF0ZWQK
K3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0
dXJuIG5pbDsKKworICAgIHN3aXRjaCAoaW5mb3JtYXRpb24uZWxlbWVudFR5cGUpIHsKKyAgICBj
YXNlIFdlYktpdDo6SW5wdXRUeXBlOjpDb250ZW50RWRpdGFibGU6CisgICAgICAgIF90eXBlID0g
V0tJbnB1dFR5cGVDb250ZW50RWRpdGFibGU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2Vi
S2l0OjpJbnB1dFR5cGU6OlRleHQ6CisgICAgICAgIF90eXBlID0gV0tJbnB1dFR5cGVUZXh0Owor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpQYXNzd29yZDoKKyAg
ICAgICAgX3R5cGUgPSBXS0lucHV0VHlwZVBhc3N3b3JkOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFdlYktpdDo6SW5wdXRUeXBlOjpUZXh0QXJlYToKKyAgICAgICAgX3R5cGUgPSBXS0lucHV0
VHlwZVRleHRBcmVhOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBl
OjpTZWFyY2g6CisgICAgICAgIF90eXBlID0gV0tJbnB1dFR5cGVTZWFyY2g7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkVtYWlsOgorICAgICAgICBfdHlwZSA9
IFdLSW5wdXRUeXBlRW1haWw7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViS2l0OjpJbnB1
dFR5cGU6OlVSTDoKKyAgICAgICAgX3R5cGUgPSBXS0lucHV0VHlwZVVSTDsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6UGhvbmU6CisgICAgICAgIF90eXBlID0g
V0tJbnB1dFR5cGVQaG9uZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJLaXQ6OklucHV0
VHlwZTo6TnVtYmVyOgorICAgICAgICBfdHlwZSA9IFdLSW5wdXRUeXBlTnVtYmVyOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpOdW1iZXJQYWQ6CisgICAgICAg
IF90eXBlID0gV0tJbnB1dFR5cGVOdW1iZXJQYWQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
V2ViS2l0OjpJbnB1dFR5cGU6OkRhdGU6CisgICAgICAgIF90eXBlID0gV0tJbnB1dFR5cGVEYXRl
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlVGltZToK
KyAgICAgICAgX3R5cGUgPSBXS0lucHV0VHlwZURhdGVUaW1lOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlVGltZUxvY2FsOgorICAgICAgICBfdHlwZSA9
IFdLSW5wdXRUeXBlRGF0ZVRpbWVMb2NhbDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJL
aXQ6OklucHV0VHlwZTo6TW9udGg6CisgICAgICAgIF90eXBlID0gV0tJbnB1dFR5cGVNb250aDsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6V2VlazoKKyAgICAg
ICAgX3R5cGUgPSBXS0lucHV0VHlwZVdlZWs7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2Vi
S2l0OjpJbnB1dFR5cGU6OlRpbWU6CisgICAgICAgIF90eXBlID0gV0tJbnB1dFR5cGVUaW1lOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpTZWxlY3Q6CisgICAg
ICAgIF90eXBlID0gV0tJbnB1dFR5cGVTZWxlY3Q7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
V2ViS2l0OjpJbnB1dFR5cGU6Ok5vbmU6CisgICAgICAgIF90eXBlID0gV0tJbnB1dFR5cGVOb25l
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgX3ZhbHVlID0gaW5mb3JtYXRpb24udmFsdWU7
CisgICAgX2lzVXNlckluaXRpYXRlZCA9IGlzVXNlckluaXRpYXRlZDsKKyAgICByZXR1cm4gc2Vs
ZjsKK30KKworLSAoV0tJbnB1dFR5cGUpdHlwZQoreworICAgIHJldHVybiBfdHlwZTsKK30KKwor
LSAoTlNTdHJpbmcgKil2YWx1ZQoreworICAgIHJldHVybiBfdmFsdWUuZ2V0KCk7Cit9CisKKy0g
KEJPT0wpaXNVc2VySW5pdGlhdGVkCit7CisgICAgcmV0dXJuIF9pc1VzZXJJbml0aWF0ZWQ7Cit9
CitAZW5kCisKIEBpbnRlcmZhY2UgV0tDb250ZW50VmlldyAoV0tJbnRlcmFjdGlvblByaXZhdGUp
CiAtICh2b2lkKWFjY2Vzc2liaWxpdHlTcGVha1NlbGVjdGlvblNldENvbnRlbnQ6KE5TU3RyaW5n
ICopc3RyaW5nOwogQGVuZApAQCAtMjI1MCw5ICsyMzQ0LDkgQEAgLSAodm9pZClfYmVjb21lRmly
c3RSZXNwb25kZXJXaXRoU2VsZWN0aW9uTW92aW5nRm9yd2FyZDooQk9PTClzZWxlY3RpbmdGb3J3
YXJkIGMKIAogLSAodm9pZClhY2Nlc3NvcnlBdXRvRmlsbAogewotICAgIGlkIDxfV0tGb3JtRGVs
ZWdhdGU+IGZvcm1EZWxlZ2F0ZSA9IFtfd2ViVmlldyBfZm9ybURlbGVnYXRlXTsKLSAgICBpZiAo
W2Zvcm1EZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmFjY2Vz
c29yeVZpZXdDdXN0b21CdXR0b25UYXBwZWRJbkZvcm1JbnB1dFNlc3Npb246KV0pCi0gICAgICAg
IFtmb3JtRGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZpZXcgYWNjZXNzb3J5Vmlld0N1c3RvbUJ1dHRv
blRhcHBlZEluRm9ybUlucHV0U2Vzc2lvbjpfZm9ybUlucHV0U2Vzc2lvbi5nZXQoKV07CisgICAg
aWQgPF9XS0lucHV0RGVsZWdhdGU+IGlucHV0RGVsZWdhdGUgPSBbX3dlYlZpZXcgX2lucHV0RGVs
ZWdhdGVdOworICAgIGlmIChbaW5wdXREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKF93ZWJWaWV3OmFjY2Vzc29yeVZpZXdDdXN0b21CdXR0b25UYXBwZWRJbkZvcm1JbnB1dFNl
c3Npb246KV0pCisgICAgICAgIFtpbnB1dERlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3IGFjY2Vz
c29yeVZpZXdDdXN0b21CdXR0b25UYXBwZWRJbkZvcm1JbnB1dFNlc3Npb246X2Zvcm1JbnB1dFNl
c3Npb24uZ2V0KCldOwogfQogCiAtICh2b2lkKWFjY2Vzc29yeUNsZWFyCkBAIC0zMDIyLDkgKzMx
MTYsMTYgQEAgc3RhdGljIGJvb2wgaXNBc3Npc3RhYmxlSW5wdXRUeXBlKElucHV0VHlwZSB0eXBl
KQogCiAtICh2b2lkKV9zdGFydEFzc2lzdGluZ05vZGU6KGNvbnN0IEFzc2lzdGVkTm9kZUluZm9y
bWF0aW9uJilpbmZvcm1hdGlvbiB1c2VySXNJbnRlcmFjdGluZzooQk9PTCl1c2VySXNJbnRlcmFj
dGluZyBibHVyUHJldmlvdXNOb2RlOihCT09MKWJsdXJQcmV2aW91c05vZGUgdXNlck9iamVjdDoo
TlNPYmplY3QgPE5TU2VjdXJlQ29kaW5nPiAqKXVzZXJPYmplY3QKIHsKLSAgICAvLyBGSVhNRTog
VGhpcyBpcyBhIHRlbXBvcmFyeSB3b3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vMjIxMjY1
MTg+LiBUaGUgcmVhbCBmaXggd2lsbCBpbnZvbHZlIHJlZmFjdG9yaW5nCi0gICAgLy8gdGhlIHdh
eSB3ZSBhc3Npc3QgcHJvZ3JhbW1hdGljYWxseSBmb2N1c2VkIG5vZGVzLgotICAgIGlmICghdXNl
cklzSW50ZXJhY3RpbmcgJiYgIV90ZXh0U2VsZWN0aW9uQXNzaXN0YW50ICYmICFfd2ViVmlldy5j
YW5Bc3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzKQorICAgIGlkIDxfV0tJbnB1dERlbGVnYXRlPiBp
bnB1dERlbGVnYXRlID0gW193ZWJWaWV3IF9pbnB1dERlbGVnYXRlXTsKKyAgICBCT09MIHNob3Vs
ZFNob3dLZXlib2FyZDsKKyAgICBpZiAoW2lucHV0RGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcihfd2ViVmlldzpmb2N1c1Nob3VsZFN0YXJ0SW5wdXRTZXNzaW9uOildKSB7Cisg
ICAgICAgIFJldGFpblB0cjxXS0ZvY3VzZWRFbGVtZW50SW5mbz4gZm9jdXNlZEVsZW1lbnRJbmZv
ID0gYWRvcHROUyhbW1dLRm9jdXNlZEVsZW1lbnRJbmZvIGFsbG9jXSBpbml0V2l0aEFzc2lzdGVk
Tm9kZUluZm9ybWF0aW9uOmluZm9ybWF0aW9uIGlzVXNlckluaXRpYXRlZDp1c2VySXNJbnRlcmFj
dGluZ10pOworICAgICAgICBzaG91bGRTaG93S2V5Ym9hcmQgPSBbaW5wdXREZWxlZ2F0ZSBfd2Vi
Vmlldzpfd2ViVmlldyBmb2N1c1Nob3VsZFN0YXJ0SW5wdXRTZXNzaW9uOmZvY3VzZWRFbGVtZW50
SW5mby5nZXQoKV07CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gVGhlIGRlZmF1bHQgYmVoYXZp
b3IgaXMgdG8gYWxsb3cgbm9kZSBhc3Npc3RhbmNlIGlmIHRoZSB1c2VyIGlzIGludGVyYWN0aW5n
IG9yIHRoZSBrZXlib2FyZCBpcyBhbHJlYWR5IGFjdGl2ZS4KKyAgICAgICAgc2hvdWxkU2hvd0tl
eWJvYXJkID0gdXNlcklzSW50ZXJhY3RpbmcgfHwgX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQ7Cisg
ICAgfQorICAgIGlmICghc2hvdWxkU2hvd0tleWJvYXJkKQogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAoYmx1clByZXZpb3VzTm9kZSkKQEAgLTMwNjcsMTAgKzMxNjgsOSBAQCAtICh2b2lkKV9z
dGFydEFzc2lzdGluZ05vZGU6KGNvbnN0IEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uJilpbmZvcm1h
dGlvbiB1c2VySXNJbgogICAgIC8vIF9pbnB1dFBlcmlwaGVyYWwgaGFzIGJlZW4gaW5pdGlhbGl6
ZWQgaW4gaW5wdXRWaWV3IGNhbGxlZCBieSByZWxvYWRJbnB1dFZpZXdzLgogICAgIFtfaW5wdXRQ
ZXJpcGhlcmFsIGJlZ2luRWRpdGluZ107CiAKLSAgICBpZCA8X1dLRm9ybURlbGVnYXRlPiBmb3Jt
RGVsZWdhdGUgPSBbX3dlYlZpZXcgX2Zvcm1EZWxlZ2F0ZV07Ci0gICAgaWYgKFtmb3JtRGVsZWdh
dGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWRTdGFydElucHV0U2Vz
c2lvbjopXSkgeworICAgIGlmIChbaW5wdXREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKF93ZWJWaWV3OmRpZFN0YXJ0SW5wdXRTZXNzaW9uOildKSB7CiAgICAgICAgIF9mb3Jt
SW5wdXRTZXNzaW9uID0gYWRvcHROUyhbW1dLRm9ybUlucHV0U2Vzc2lvbiBhbGxvY10gaW5pdFdp
dGhDb250ZW50VmlldzpzZWxmIHVzZXJPYmplY3Q6dXNlck9iamVjdF0pOwotICAgICAgICBbZm9y
bURlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3IGRpZFN0YXJ0SW5wdXRTZXNzaW9uOl9mb3JtSW5w
dXRTZXNzaW9uLmdldCgpXTsKKyAgICAgICAgW2lucHV0RGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZp
ZXcgZGlkU3RhcnRJbnB1dFNlc3Npb246X2Zvcm1JbnB1dFNlc3Npb24uZ2V0KCldOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGFhZmM0YTFiMWQzNzc3YWI5Mjg0ZTZhMWY2NzBhMzE4NzM5ZmNmZjUuLmMyNzk2
ZDRlYTkzZWJmNmQ2YzQ5ODA2MmRiZTgxNjIzMjM3NTRlZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY4Niw2ICs2ODYsOCBA
QAogCQkyREY5RUVFODFBNzgyNDU1MDBCNkNGQkUgLyogV0tGcmFtZUluZm9JbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRGOUVFRTcxQTc4
MjQ1NTAwQjZDRkJFIC8qIFdLRnJhbWVJbmZvSW50ZXJuYWwuaCAqLzsgfTsKIAkJMkRGOUVFRUMx
QTc4MzZFRTAwQjZDRkJFIC8qIEFQSU5hdmlnYXRpb25BY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERjlFRUVBMUE3ODM2RUUwMEI2Q0ZCRSAv
KiBBUElOYXZpZ2F0aW9uQWN0aW9uLmggKi87IH07CiAJCTJERjlFRUVFMUE3ODZFQUQwMEI2Q0ZC
RSAvKiBBUElOYXZpZ2F0aW9uUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJERjlFRUVEMUE3ODZFQUQwMEI2Q0ZCRSAvKiBBUElOYXZpZ2F0
aW9uUmVzcG9uc2UuaCAqLzsgfTsKKwkJMkUwQjhBN0ExQkM1OUE1OTAwNDRCMzJEIC8qIF9XS0Zv
cm1EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkUwQjhBNzkxQkM1OUE1OTAwNDRCMzJEIC8qIF9XS0Zvcm1EZWxlZ2F0ZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTJFN0E5NDRBMUJCRDk3
QzMwMDk0NTU0NyAvKiBfV0tGb2N1c2VkRWxlbWVudEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFN0E5NDQ5MUJCRDk1QzYwMDk0NTU0NyAvKiBf
V0tGb2N1c2VkRWxlbWVudEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkzMTA5OTk3MzE0NkM3NUEyMDAyOURFQjkgLyogV2ViTm90aWZpY2F0
aW9uQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMxMDk5OTcxMTQ2Qzc1OUIwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuY3Bw
ICovOyB9OwogCQkzMTA5OTlDNzE0NkM5RTNEMDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTA5
OTk2ODE0NkM3MUY1MDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmggKi87IH07CiAJ
CTMxMkMwQzRBMTQ2RERDOEEwMDE2QzkxMSAvKiBXS05vdGlmaWNhdGlvblByb3ZpZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJDMEM0OTE0NkRE
QzhBMDAxNkM5MTEgLyogV0tOb3RpZmljYXRpb25Qcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04MDAsNyArODAyLDcgQEAKIAkJMzc5
QTg3M0MxOEJCRkYwNzAwNTg4QUYyIC8qIF9XS0VsZW1lbnRBY3Rpb25JbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc5QTg3M0IxOEJCRkYw
NzAwNTg4QUYyIC8qIF9XS0VsZW1lbnRBY3Rpb25JbnRlcm5hbC5oICovOyB9OwogCQkzN0E1RTAx
MzE4QkJGOTM3MDAwQTA4MUUgLyogX1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0E1RTAxMTE4QkJGOTM3MDAw
QTA4MUUgLyogX1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW0gKi87IH07CiAJCTM3QTVFMDE0MThC
QkY5M0YwMDBBMDgxRSAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdBNUUwMTIxOEJCRjkzNzAwMEEwODFF
IC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMzdBNjRFNTUxOEYzOEUzQzAwRUIzMEYxIC8qIF9XS0Zv
cm1EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzdBNjRFNTQxOEYzOEUzQzAwRUIzMEYxIC8qIF9XS0Zvcm1EZWxlZ2F0ZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTM3QTY0RTU1MThGMzhF
M0MwMEVCMzBGMSAvKiBfV0tJbnB1dERlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0E2NEU1NDE4RjM4RTNDMDBFQjMwRjEgLyogX1dLSW5w
dXREZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTM3QTY0RTU3MThGMzhGNDYwMEVCMzBGMSAvKiBfV0tGb3JtSW5wdXRTZXNzaW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0E2NEU1NjE4
RjM4RjQ2MDBFQjMwRjEgLyogX1dLRm9ybUlucHV0U2Vzc2lvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTM3QjUwNDUyMTlFRUYzMTMwMENFMkNG
OCAvKiBXS0Vycm9yUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzdCNTA0NTExOUVFRjMxMzAwQ0UyQ0Y4IC8qIFdLRXJyb3JQcml2YXRlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzdCRUM0
REQxOTQ4RkM2QTAwOEI0Mjg2IC8qIFdlYkNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBMUM3OUExMDBFN0ZDNTAwNzhERUJD
IC8qIFdlYkNvcmUuZnJhbWV3b3JrICovOyB9OwpAQCAtMjgzNCw2ICsyODM2LDggQEAKIAkJMkRG
OUVFRTcxQTc4MjQ1NTAwQjZDRkJFIC8qIFdLRnJhbWVJbmZvSW50ZXJuYWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tGcmFtZUluZm9JbnRlcm5hbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyREY5RUVFQTFBNzgzNkVFMDBCNkNGQkUgLyogQVBJTmF2aWdh
dGlvbkFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElOYXZpZ2F0
aW9uQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJERjlFRUVEMUE3ODZF
QUQwMEI2Q0ZCRSAvKiBBUElOYXZpZ2F0aW9uUmVzcG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQVBJTmF2aWdhdGlvblJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTJFMEI4QTc5MUJDNTlBNTkwMDQ0QjMyRCAvKiBfV0tGb3JtRGVsZWdhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLRm9ybURlbGVnYXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJFN0E5NDQ5MUJCRDk1QzYwMDk0NTU0NyAvKiBf
V0tGb2N1c2VkRWxlbWVudEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLRm9jdXNlZEVsZW1lbnRJ
bmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDk5OTY4MTQ2QzcxRjUwMDI5
REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTm90aWZp
Y2F0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDk5OTcxMTQ2
Qzc1OUIwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEyQzBDNDkxNDZEREM4QTAwMTZDOTExIC8qIFdLTm90
aWZpY2F0aW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tO
b3RpZmljYXRpb25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjk1
Miw3ICsyOTU2LDcgQEAKIAkJMzc5QTg3M0IxOEJCRkYwNzAwNTg4QUYyIC8qIF9XS0VsZW1lbnRB
Y3Rpb25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tFbGVt
ZW50QWN0aW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdBNUUw
MTExOEJCRjkzNzAwMEEwODFFIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLQWN0aXZhdGVkRWxlbWVudEluZm8u
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3QTVFMDEyMThCQkY5MzcwMDBBMDgx
RSAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkzN0E2NEU1NDE4RjM4RTNDMDBFQjMwRjEgLyogX1dLRm9ybURlbGVnYXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0Zvcm1EZWxlZ2F0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkzN0E2NEU1NDE4RjM4RTNDMDBFQjMwRjEgLyogX1dLSW5w
dXREZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tJbnB1dERl
bGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3QTY0RTU2MThGMzhGNDYw
MEVCMzBGMSAvKiBfV0tGb3JtSW5wdXRTZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IF9XS0Zvcm1JbnB1dFNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzdCNTA0NTExOUVFRjMxMzAwQ0UyQ0Y4IC8qIFdLRXJyb3JQcml2YXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRXJyb3JQcml2YXRlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTM3QkVDNERFMTk0OTE0ODYwMDhCNDI4NiAvKiBDb21wbGV0aW9u
SGFuZGxlckNhbGxDaGVja2VyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTUyOTMsOCArNTI5NywxMCBAQAogCQkJCTFBRDAxQkM2MTkwNUQzN0UwMEM5
QzQ1RiAvKiBfV0tFcnJvclJlY292ZXJ5QXR0ZW1wdGluZy5tbSAqLywKIAkJCQkwMDVEMTU4RTE4
RTRDNEVCMDA3MzQ2MTkgLyogX1dLRmluZERlbGVnYXRlLmggKi8sCiAJCQkJMkRFQUM1Q0UxQUMz
NjhCQjAwQTE5NUQ4IC8qIF9XS0ZpbmRPcHRpb25zLmggKi8sCi0JCQkJMzdBNjRFNTQxOEYzOEUz
QzAwRUIzMEYxIC8qIF9XS0Zvcm1EZWxlZ2F0ZS5oICovLAorCQkJCTJFMEI4QTc5MUJDNTlBNTkw
MDQ0QjMyRCAvKiBfV0tGb3JtRGVsZWdhdGUuaCAqLywKKwkJCQkzN0E2NEU1NDE4RjM4RTNDMDBF
QjMwRjEgLyogX1dLSW5wdXREZWxlZ2F0ZS5oICovLAogCQkJCTM3QTY0RTU2MThGMzhGNDYwMEVC
MzBGMSAvKiBfV0tGb3JtSW5wdXRTZXNzaW9uLmggKi8sCisJCQkJMkU3QTk0NDkxQkJEOTVDNjAw
OTQ1NTQ3IC8qIF9XS0ZvY3VzZWRFbGVtZW50SW5mby5oICovLAogCQkJCTJENzkwQTlDMUFENzA1
MEQwMEFCOTBCMyAvKiBfV0tMYXlvdXRNb2RlLmggKi8sCiAJCQkJOTMyMzYxMUQxQjAxNURBODAw
RkE5MjMyIC8qIF9XS092ZXJsYXlTY3JvbGxiYXJTdHlsZS5oICovLAogCQkJCTFBNDNFODI4MTg4
RjNDREMwMDlFNEQzMCAvKiBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCAqLywKQEAgLTc1
MDEsNyArNzUwNyw3IEBACiAJCQkJMUFEMDFCQzkxOTA1RDM3RTAwQzlDNDVGIC8qIF9XS0Vycm9y
UmVjb3ZlcnlBdHRlbXB0aW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwMDVEMTU4RjE4RTRDNEVC
MDA3MzQ2MTkgLyogX1dLRmluZERlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREVBQzVD
RjFBQzM2OEJCMDBBMTk1RDggLyogX1dLRmluZE9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTM3QTY0RTU1MThGMzhFM0MwMEVCMzBGMSAvKiBfV0tGb3JtRGVsZWdhdGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTM3QTY0RTU1MThGMzhFM0MwMEVCMzBGMSAvKiBfV0tJbnB1dERlbGVnYXRlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzN0E2NEU1NzE4RjM4RjQ2MDBFQjMwRjEgLyogX1dLRm9ybUlu
cHV0U2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzczRDEyMjMxOEE0NzMwMTAwNjZEOUND
IC8qIF9XS0ZyYW1lSGFuZGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzNEMTIyNzE4QTQ3M0Y2
MDA2NkQ5Q0MgLyogX1dLRnJhbWVIYW5kbGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC03
NjE1LDYgKzc2MjEsNyBAQAogCQkJCTUxMDZEN0M0MThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0
TWVudUNvbnRleHREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzODMwQzE3MjEyMjgyMDA4
QTJGQzMgLyogQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RTFBMEJEMzFBNDhFNkM2MDA1NEVGNzQgLyogQ29yZVBERlNQSS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMkUwQjhBN0ExQkM1OUE1OTAwNDRCMzJEIC8qIF9XS0Zvcm1EZWxlZ2F0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjg3OEI2MTUxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMjk4OUE0MTQxNjdEMTg0QjAwNEY5NkQyIC8qIEN1c3RvbVBy
b3RvY29sTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjk4NEY1ODkxNjRCQTA5NTAwNEJD
MEM2IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKQEAg
LTc5NzksNiArNzk4Niw3IEBACiAJCQkJMzNEM0EzQzkxMzM5NjE3OTAwNzA5QkU0IC8qIFdlYk1l
ZGlhQ2FjaGVNYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTMzRDNBM0JCMTMz
OTYwNjIwMDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAq
LywKIAkJCQkzM0QzQTNDQjEzMzk2MTc5MDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJQ
cm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQkyRTdBOTQ0QTFCQkQ5N0MzMDA5NDU1
NDcgLyogX1dLRm9jdXNlZEVsZW1lbnRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDAwM0E1
MzE5RDQ5QjVEMDA1QUJDRTAgLyogV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQzk4QzQ4QTYxQjZGRDRDMzAwMTQ1MTAzIC8qIFdlYk1lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzlDMTgzM0MxQjc0MDI2RDAwNzAzNkE3
IC8qIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9t
YWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1Bs
dWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCA2YzU0NzBiMjkxYzhhZGE4ZGI4
NTZmOTAyYjc4Y2RkMWMzNGIyZTU4Li43NTljNWUxMWQ0ODllMTc1ZjNmZWY1N2YwMDUzMGViYWYx
NDY3NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KQEAgLTQ0LDEzICs0
NCwxMyBAQAogI2ltcG9ydCAiV0tSZXRhaW5QdHIuaCIKICNpbXBvcnQgIldLU3RyaW5nQ0YuaCIK
ICNpbXBvcnQgIldLVVJMUmVxdWVzdE5TLmgiCi0jaW1wb3J0ICJXS1dlYlByb2Nlc3NQbHVnaW5G
cmFtZUludGVybmFsLmgiCi0jaW1wb3J0ICJXS1dlYlByb2Nlc3NQbHVnSW5JbnRlcm5hbC5oIgog
I2ltcG9ydCAiV0tXZWJQcm9jZXNzUGx1Z0luRm9ybURlbGVnYXRlUHJpdmF0ZS5oIgorI2ltcG9y
dCAiV0tXZWJQcm9jZXNzUGx1Z0luSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLV2ViUHJvY2Vzc1Bs
dWdJbkxvYWREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRs
ZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYlByb2Nlc3NQbHVnSW5QYWdlR3JvdXBJbnRlcm5h
bC5oIgogI2ltcG9ydCAiV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGRJbnRlcm5hbC5oIgor
I2ltcG9ydCAiV0tXZWJQcm9jZXNzUGx1Z2luRnJhbWVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2Vh
a09iakNQdHIuaCIKICNpbXBvcnQgIldlYlBhZ2UuaCIKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIK
</data>
<flag name="review"
          id="287820"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>