<?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>186714</bug_id>
          
          <creation_ts>2018-06-15 17:56:05 -0700</creation_ts>
          <short_desc>[Datalist][iOS] Add suggestions UI for TextFieldInputTypes</short_desc>
          <delta_ts>2018-08-31 09:51:40 -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>Forms</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>iOS 11</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="Aditya Keerthi">pxlcoder</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1433644</commentid>
    <comment_count>0</comment_count>
    <who name="Aditya Keerthi">pxlcoder</who>
    <bug_when>2018-06-15 17:56:05 -0700</bug_when>
    <thetext>This bug tracks the iOS user-interface work required to show suggestions for TextFieldInputTypes with a list attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451871</commentid>
    <comment_count>1</comment_count>
      <attachid>347585</attachid>
    <who name="Aditya Keerthi">pxlcoder</who>
    <bug_when>2018-08-20 17:41:23 -0700</bug_when>
    <thetext>Created attachment 347585
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451873</commentid>
    <comment_count>2</comment_count>
      <attachid>347585</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-08-20 17:44:26 -0700</bug_when>
    <thetext>Comment on attachment 347585
Patch

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

&gt; Source/WebCore/css/html.css:634
&gt; +    z-index: 2147483645;

What&apos;s this! Maybe talk to Simon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451875</commentid>
    <comment_count>3</comment_count>
      <attachid>347585</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-08-20 17:48:05 -0700</bug_when>
    <thetext>Comment on attachment 347585
Patch

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

&gt; Source/WebKit/UIProcess/WebDataListSuggestionsDropdownIOS.mm:369
&gt; +    [cell.textLabel setLineBreakMode:NSLineBreakByTruncatingTail];

Any reason you&apos;re not sticking with dot syntax past the first property?

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:390
&gt; +        &amp;&amp; ![suggestions.firstObject isKindOfClass:NSClassFromString(@&quot;WKDataListTextSuggestion&quot;)]) {

isKindOfClass for our own class like this is not a great smell

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:1005
&gt;          [_inputPeripheral endEditing];
&gt; +        if ([[_formInputSession customInputView] respondsToSelector:@selector(endEditing)])
&gt; +            [[_formInputSession customInputView] performSelector:@selector(endEditing)];
&gt; +

Wonder if we should put these somewhere together. There are already two callers, which might be enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451901</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-20 18:34:50 -0700</bug_when>
    <thetext>Attachment 347585 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:3115:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 18 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>1451970</commentid>
    <comment_count>5</comment_count>
      <attachid>347585</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-08-20 21:50:42 -0700</bug_when>
    <thetext>Comment on attachment 347585
Patch

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

&gt; Source/WebCore/html/TextFieldInputType.cpp:880
&gt; +#if !PLATFORM(IOS)
&gt;      if (!UserGestureIndicator::processingUserGesture())
&gt;          return;
&gt; +#endif

Why is this OK? It seems really odd for a user gesture check to not apply to iOS. Possible that instead you want to fake a user gesture in some particular case where you know it’s OK?

&gt; Source/WebKit/UIProcess/WebDataListSuggestionsDropdownIOS.mm:45
&gt; +@interface WKFormInputSession ()
&gt; +- (void)setCustomInputView:(UIView *)customInputView;
&gt; +- (void)setSuggestions:(NSArray&lt;UITextSuggestion *&gt; *)suggestions;
&gt; +@end

Why not... somewhere else? All of these things are internal, aren’t they?

&gt; Source/WebKit/UIProcess/WebDataListSuggestionsDropdownIOS.mm:49
&gt; +@interface WKContentView ()
&gt; +- (WKFormInputSession *)_formInputSession;
&gt; +@end

Why not in WKContentView(Interaction).h?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452879</commentid>
    <comment_count>6</comment_count>
      <attachid>347869</attachid>
    <who name="Aditya Keerthi">pxlcoder</who>
    <bug_when>2018-08-22 16:17:48 -0700</bug_when>
    <thetext>Created attachment 347869
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453567</commentid>
    <comment_count>7</comment_count>
      <attachid>347869</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-08-24 14:02:16 -0700</bug_when>
    <thetext>Comment on attachment 347869
Patch

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

&gt; Source/WebKit/ChangeLog:8
&gt; +        On iOS, we have less space display suggestions from a datalist element compared to

Nit - less space to display

&gt; Source/WebKit/UIProcess/WebDataListSuggestionsDropdownIOS.mm:94
&gt; +WebDataListSuggestionsDropdownIOS::~WebDataListSuggestionsDropdownIOS() { }

Nit - do you need this destructor, or can you omit it/use = default?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453619</commentid>
    <comment_count>8</comment_count>
      <attachid>348054</attachid>
    <who name="Aditya Keerthi">pxlcoder</who>
    <bug_when>2018-08-24 16:34:58 -0700</bug_when>
    <thetext>Created attachment 348054
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453622</commentid>
    <comment_count>9</comment_count>
      <attachid>348056</attachid>
    <who name="Aditya Keerthi">pxlcoder</who>
    <bug_when>2018-08-24 16:45:16 -0700</bug_when>
    <thetext>Created attachment 348056
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453754</commentid>
    <comment_count>10</comment_count>
      <attachid>348056</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-08-26 18:32:14 -0700</bug_when>
    <thetext>Comment on attachment 348056
Patch

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

&gt; Source/WebCore/html/TextFieldInputType.cpp:879
&gt; +    userActivated |= (type == DataListSuggestionActivationType::TextChanged);

Not sure I&apos;d name this &quot;userActivated&quot;, since we poke a hole in that constraint on iOS if type == DataListSuggestionActivationType::TextChanged. Maybe &quot;shouldDisplaySuggestions&quot;?

It also seems weird that we relax this constraint only for iOS. Is there a reason we need to gate this on user gesture more strictly for macOS, or can we remove this platform check?

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:396
&gt; +    if (_contentView.get()

Nit - you don&apos;t need this null check because [_contentView assistedNodeInformation].hasSuggestions will evaluate to NO anyways if ! _contentView.

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:3233
&gt; +    if ([textSuggestion isKindOfClass:[WKDataListTextSuggestion class]]) {

We chatted over IRC about several different ways to accomplish this. I think this is okay, but another way (that avoids a class check and possibly the need for a WKDataListTextSuggestion subclass altogether) is check if this text suggestion is one of the suggestions in -[WKDataListSuggestionsControl textSuggestions].</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454157</commentid>
    <comment_count>11</comment_count>
      <attachid>348221</attachid>
    <who name="Aditya Keerthi">pxlcoder</who>
    <bug_when>2018-08-27 15:45:37 -0700</bug_when>
    <thetext>Created attachment 348221
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454163</commentid>
    <comment_count>12</comment_count>
    <who name="Aditya Keerthi">pxlcoder</who>
    <bug_when>2018-08-27 15:58:56 -0700</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #10)
&gt; Comment on attachment 348056 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=348056&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/TextFieldInputType.cpp:879
&gt; &gt; +    userActivated |= (type == DataListSuggestionActivationType::TextChanged);
&gt; 
&gt; Not sure I&apos;d name this &quot;userActivated&quot;, since we poke a hole in that
&gt; constraint on iOS if type == DataListSuggestionActivationType::TextChanged.
&gt; Maybe &quot;shouldDisplaySuggestions&quot;?
&gt; 
&gt; It also seems weird that we relax this constraint only for iOS. Is there a
&gt; reason we need to gate this on user gesture more strictly for macOS, or can
&gt; we remove this platform check?
&gt; 

UserGestureIndicator::processingUserGesture() has a different behavior on iOS and macOS when typing. By the time this method is called, processingUserGesture returns false on iOS. 

However, I can remove the platform check, since TextChanged is only used through TextFieldInputType::didSetValueByUserEdit. This means that the &quot;user activated&quot; behavior of displaying the suggestions is preserved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454253</commentid>
    <comment_count>13</comment_count>
      <attachid>348221</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-08-27 18:11:48 -0700</bug_when>
    <thetext>Comment on attachment 348221
Patch

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

&gt; Source/WebCore/html/TextFieldInputType.cpp:267
&gt; +            m_dataListDropdownIndicator-&gt;setInlineStyleProperty(CSSPropertyDisplay, suggestions().size() ? CSSValueBlock : CSSValueNone, true);

Why all this inline style instead of selectors in the UA stylesheet?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454268</commentid>
    <comment_count>14</comment_count>
      <attachid>348221</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-08-27 19:41:49 -0700</bug_when>
    <thetext>Comment on attachment 348221
Patch

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

&gt;&gt; Source/WebCore/html/TextFieldInputType.cpp:267
&gt;&gt; +            m_dataListDropdownIndicator-&gt;setInlineStyleProperty(CSSPropertyDisplay, suggestions().size() ? CSSValueBlock : CSSValueNone, true);
&gt; 
&gt; Why all this inline style instead of selectors in the UA stylesheet?

I thought the same thing, but didn&apos;t see a way to accomplish this without also showing the dropdown indicator when suggestions() is empty.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455452</commentid>
    <comment_count>15</comment_count>
      <attachid>348221</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-08-30 15:58:46 -0700</bug_when>
    <thetext>Comment on attachment 348221
Patch

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

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:384
&gt; +        [_customInputView performSelector:@selector(endEditing)];

I think we generally prefer to cast to the relevant ObjC protocol or type and call the selector (-endEditing) directly, instead of using -performSelector:.

&gt; Source/WebKit/UIProcess/ios/WebDataListSuggestionsDropdownIOS.mm:108
&gt; +    [m_suggestionsControl showSuggestionsDropdown:this activationType:information.activationType];

Hm...but we already WTFMove&apos;d our information above! Perhaps you meant to save the value of information.activationType in a temporary before creating m_suggestionsControl?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455459</commentid>
    <comment_count>16</comment_count>
      <attachid>348221</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-08-30 16:27:17 -0700</bug_when>
    <thetext>Comment on attachment 348221
Patch

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

Other than the `information.activationType` above, this looks okay to me.

&gt; Source/WebKit/UIProcess/ios/WebDataListSuggestionsDropdownIOS.mm:122
&gt; +void WebDataListSuggestionsDropdownIOS::didSelectOption(String&amp; selectedOption)

Nit - this should be a const String&amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455495</commentid>
    <comment_count>17</comment_count>
      <attachid>348577</attachid>
    <who name="Aditya Keerthi">pxlcoder</who>
    <bug_when>2018-08-30 18:15:21 -0700</bug_when>
    <thetext>Created attachment 348577
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455721</commentid>
    <comment_count>18</comment_count>
      <attachid>348577</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-31 09:49:31 -0700</bug_when>
    <thetext>Comment on attachment 348577
Patch

Clearing flags on attachment: 348577

Committed r235556: &lt;https://trac.webkit.org/changeset/235556&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455722</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-31 09:49:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455723</commentid>
    <comment_count>20</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-31 09:51:40 -0700</bug_when>
    <thetext>&lt;rdar://problem/43943921&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347585</attachid>
            <date>2018-08-20 17:41:23 -0700</date>
            <delta_ts>2018-08-22 16:17:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186714-20180820174123.patch</filename>
            <type>text/plain</type>
            <size>46075</size>
            <attacher name="Aditya Keerthi">pxlcoder</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1MDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzBiZDFhOWNkNzU1ODA2
NGI1N2M5OTFhZTFjYmI0MDUwYWI0M2Y3YS4uNjhhOWUyYTBiNWNlMTFjZTNjYmJjZGFmNTExM2I0
NmZjYmViMzA1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE4LTA4LTIwICBBZGl0
eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KKworICAgICAgICBbRGF0YWxpc3RdW2lP
U10gQWRkIHN1Z2dlc3Rpb25zIFVJIGZvciBUZXh0RmllbGRJbnB1dFR5cGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY3MTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPbiBpT1MsIHRoZSBkYXRhbGlz
dCBidXR0b24gc2hvdWxkIGFwcGVhciBhcyBhIGRvd253YXJkIHRyaWFuZ2xlLiBGdXJ0aGVybW9y
ZSwgdGhlCisgICAgICAgIGJ1dHRvbiBzaG91bGQgb25seSBiZSBkaXNwbGF5ZWQgaWYgdGhlIGlu
cHV0IGhhcyBmb2N1cyBhbmQgdGhlcmUgYXJlIHN1Z2dlc3RlZAorICAgICAgICB2YWx1ZXMuCisK
KyAgICAgICAgKiBjc3MvaHRtbC5jc3M6CisgICAgICAgIChpbnB1dDo6LXdlYmtpdC1saXN0LWJ1
dHRvbik6IERyYXcgdGhlIHRyaWFuZ2xlIHVzaW5nIGFuIFNWRy4KKyAgICAgICAgKiBodG1sL0Rh
dGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uLmg6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRF
bGVtZW50Lmg6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOiBBZGRlZCBs
b2dpYyB0byBzaG93IGFuZCBoaWRlIHRoZSBkYXRhbGlzdCBidXR0b24gYXMgbmVjZXNzYXJ5Lgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5kbGVGb2N1c0V2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6aGFuZGxlQmx1ckV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6ZGlkU2V0VmFsdWVCeVVzZXJF
ZGl0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6bGlzdEF0dHJpYnV0
ZVRhcmdldENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpk
aXNwbGF5U3VnZ2VzdGlvbnMpOgorCiAyMDE4LTA4LTIwICBSb2IgQnVpcyAgPHJidWlzQGlnYWxp
YS5jb20+CiAKICAgICAgICAgVGhyb3cgYW4gZXhjZXB0aW9uIGlmIHdpbmRvdy5vcGVuKCkgZ2V0
cyBwYXNzZWQgYSBVUkwgdGhhdCBjYW5ub3QgYmUgcGFyc2VkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY1ZjRmMTAy
YWM1ZjIzZDBiYmFhYjQ2YzA1YjQwNmViMGVkNGE5YmIuLjRkNjkwNDMwOWIzOWY3OGE0YzEwNzhj
ZTlhN2I5ZDFiMmRiYzQxN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTQgQEAKKzIwMTgtMDgtMjAg
IEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgorCisgICAgICAgIFtEYXRhbGlz
dF1baU9TXSBBZGQgc3VnZ2VzdGlvbnMgVUkgZm9yIFRleHRGaWVsZElucHV0VHlwZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjcxNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE9uIGlPUywgd2UgaGF2
ZSBsZXNzIHNwYWNlIGRpc3BsYXkgc3VnZ2VzdGlvbnMgZnJvbSBhIGRhdGFsaXN0IGVsZW1lbnQg
Y29tcGFyZWQgdG8KKyAgICAgICAgbWFjT1MuIEZ1cnRoZXJtb3JlLCBpUGhvbmVzIGFuZCBpUGFk
cyBoYXZlIGRpZmZlcmVudCBmb3JtIGZhY3RvcnMsIGxlYWRpbmcgdG8gYQorICAgICAgICBkaWZm
ZXJlbnQgYXBwcm9hY2ggb24gZWFjaCBkZXZpY2UuIFRoZSBjb21tb25hbGl0aWVzIG9mIHRoZSB0
d28gaW1wbGVtZW50YXRpb25zCisgICAgICAgIGNhbiBiZSBmb3VuZCBpbiBXS0RhdGFMaXN0U3Vn
Z2VzdGlvbnNDb250cm9sLiBUaGlzIGNsYXNzIGlzIHN1YmNsYXNzZWQgYnkgdGhlCisgICAgICAg
IGRldmljZSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAgICAgT24gaVBob25lLCB3
ZSBkaXNwbGF5IHRoZSBzdWdnZXN0aW9ucyBpbiBhIFVJUGlja2VyVmlldy4gVGhpcyB2aWV3IGlz
IGFjY2Vzc2libGUKKyAgICAgICAgb25seSBhZnRlciB0YXBwaW5nIG9uIHRoZSBkYXRhbGlzdCBi
dXR0b24gZWxlbWVudCB0byB0aGUgc2lkZSBvZiB0aGUgaW5wdXQgZmllbGQuCisgICAgICAgIFRo
aXMgYXBwcm9hY2ggd2FzIGNob3NlbiBpbiBvcmRlciB0byBhdm9pZCB0cmlja2luZyB0aGUgdXNl
ciBpbnRvIHRoaW5raW5nIHRoYXQKKyAgICAgICAgdGhlIHZhbHVlcyBkaXNwbGF5ZWQgaW4gdGhl
IHBpY2tlciBhcmUgdGhlIG9ubHkgYWNjZXB0ZWQgdmFsdWVzLgorICAgICAgICBXS0RhdGFMaXN0
U3VnZ2VzdGlvbnNQaWNrZXIgaXMgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSBpbnRlcmZh
Y2Ugc2hvd24gb24KKyAgICAgICAgaVBob25lcy4KKworICAgICAgICBPbiBpUGFkLCB3ZSBkaXNw
bGF5IHRoZSBzdWdnZXN0aW9ucyBpbiBhIHBvcG92ZXIsIHRoYXQgaXMgdmlzaWJsZSBhbG9uZ3Np
ZGUgdGhlCisgICAgICAgIGtleWJvYXJkLiBUaGUgc3VnZ2VzdGlvbnMgaW4gdGhlIHBvcG92ZXIg
dXBkYXRlIGFzIHRoZSB1c2VyIHR5cGVzLgorICAgICAgICBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQ
b3BvdmVyIGlzIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUgaW50ZXJmYWNlIHNob3duIG9u
CisgICAgICAgIGlQYWRzLgorCisgICAgICAgIEJvdGggZGV2aWNlcyBkaXNwbGF5IHByZWRpY3Rp
dmUgdGV4dCBzdWdnZXN0aW9ucywgdGFraW5nIHRoZSBmaXJzdCB0aHJlZSB2YWx1ZXMKKyAgICAg
ICAgZnJvbSB0aGUgZmlsdGVyZWQgc3VnZ2VzdGlvbnMgbGlzdC4gSW4gb3JkZXIgdG8gcHJldmVu
dCBvdGhlciBjbGllbnRzIGZyb20KKyAgICAgICAgb3ZlcndyaXRpbmcgdGhlIHN1Z2dlc3Rpb25z
IHByb3ZpZGVkIGJ5IHRoZSBkYXRhbGlzdCBlbGVtZW50LCB3ZSBwcmV2ZW50IHdyaXRpbmcKKyAg
ICAgICAgdG8gdGhlIHByZWRpY3RpdmUgdGV4dCBiYXIgaWYgYW4gaW5wdXQgd2l0aCB0aGUgbGlz
dCBhdHRyaWJ1dGUgaXMgdGhlIGN1cnJlbnRseQorICAgICAgICBhc3Npc3RlZCBub2RlLgorCisg
ICAgICAgICogU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6QXNzaXN0ZWROb2RlSW5mb3JtYXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OkFzc2lzdGVkTm9kZUluZm9ybWF0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJl
ZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oOgorICAgICAgICAqIFNoYXJlZC9pb3MvSW50ZXJh
Y3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvaW9zL0ludGVy
YWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpJbnRlcmFj
dGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246OmRlY29kZSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5oOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9T
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRv
d25JT1M6On5XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1M6OldlYkRhdGFMaXN0U3VnZ2Vz
dGlvbnNEcm9wZG93bklPUyk6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlv
bnNEcm9wZG93bklPUzo6c2hvdyk6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2Vz
dGlvbnNEcm9wZG93bklPUzo6aGFuZGxlS2V5ZG93bldpdGhJZGVudGlmaWVyKToKKyAgICAgICAg
KFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TOjpjbG9zZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUzo6ZGlkU2VsZWN0
T3B0aW9uKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbCBpbml0V2l0
aEluZm9ybWF0aW9uOmluVmlldzpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25z
Q29udHJvbCB1cGRhdGVXaXRoSW5mb3JtYXRpb246XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RT
dWdnZXN0aW9uc0NvbnRyb2wgc2hvd1N1Z2dlc3Rpb25zRHJvcGRvd246YWN0aXZhdGlvblR5cGU6
XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2wgZGlkU2VsZWN0T3B0
aW9uQXRJbmRleDpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbCBp
bnZhbGlkYXRlXSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2wgdGV4
dFN1Z2dlc3Rpb25zXSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2wg
c3VnZ2VzdGlvbnNDb3VudF0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250
cm9sIHN1Z2dlc3Rpb25BdEluZGV4Ol0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlv
bnNDb250cm9sIHRleHRBbGlnbm1lbnRdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rp
b25zUGlja2VyIGluaXRXaXRoSW5mb3JtYXRpb246aW5WaWV3Ol0pOgorICAgICAgICAoLVtXS0Rh
dGFMaXN0U3VnZ2VzdGlvbnNQaWNrZXIgdXBkYXRlV2l0aEluZm9ybWF0aW9uOl0pOgorICAgICAg
ICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQaWNrZXIgc2hvd1N1Z2dlc3Rpb25zRHJvcGRvd246
YWN0aXZhdGlvblR5cGU6XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc1BpY2tl
ciBudW1iZXJPZkNvbXBvbmVudHNJblBpY2tlclZpZXc6XSk6CisgICAgICAgICgtW1dLRGF0YUxp
c3RTdWdnZXN0aW9uc1BpY2tlciBwaWNrZXJWaWV3Om51bWJlck9mUm93c0luQ29tcG9uZW50Ol0p
OgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQaWNrZXIgcGlja2VyVmlldzp0aXRs
ZUZvclJvdzpmb3JDb21wb25lbnQ6XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9u
c1BpY2tlciBpbnZhbGlkYXRlXSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc1Bp
Y2tlclZpZXcgZW5kRWRpdGluZ10pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQ
b3BvdmVyIGluaXRXaXRoSW5mb3JtYXRpb246aW5WaWV3Ol0pOgorICAgICAgICAoLVtXS0RhdGFM
aXN0U3VnZ2VzdGlvbnNQb3BvdmVyIHVwZGF0ZVdpdGhJbmZvcm1hdGlvbjpdKToKKyAgICAgICAg
KC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUG9wb3ZlciBzaG93U3VnZ2VzdGlvbnNEcm9wZG93bjph
Y3RpdmF0aW9uVHlwZTpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUG9wb3Zl
ciBpbnZhbGlkYXRlXSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc1BvcG92ZXIg
ZGlkU2VsZWN0T3B0aW9uQXRJbmRleDpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rp
b25zVmlld0NvbnRyb2xsZXIgcmVsb2FkRGF0YV0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3Vn
Z2VzdGlvbnNWaWV3Q29udHJvbGxlciB0YWJsZVZpZXc6bnVtYmVyT2ZSb3dzSW5TZWN0aW9uOl0p
OgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlciB0YWJsZVZp
ZXc6Y2VsbEZvclJvd0F0SW5kZXhQYXRoOl0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2Vz
dGlvbnNWaWV3Q29udHJvbGxlciB0YWJsZVZpZXc6ZGlkU2VsZWN0Um93QXRJbmRleFBhdGg6XSk6
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZURhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93
bik6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAg
ICAgICAgKC1bV0tGb3JtSW5wdXRTZXNzaW9uIHNldFN1Z2dlc3Rpb25zOl0pOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IF9mb3JtSW5wdXRTZXNzaW9uXSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgcmVzaWduRmlyc3RSZXNwb25kZXJGb3JXZWJWaWV3XSk6CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgdGV4dEludGVyYWN0aW9uR2VzdHVyZTpzaG91bGRCZWdpbkF0UG9pbnQ6XSk6Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgYWNjZXNzb3J5VGFiOl0pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IGluc2VydFRleHRTdWdnZXN0aW9uOl0pOgorICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkQ2xvc2VTdWdnZXN0aW9ucyk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6Z2V0QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24pOgorCiAyMDE4LTA4LTIw
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLiBGaXggR1RLL1dQRSBjb29raWUgQVBJIHRlc3RzIGFmdGVyIHIyMzQzOTYuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvaHRtbC5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvaHRtbC5jc3MKaW5kZXggZTZiMTg5ZTBlY2ExODA4NjYzMWQ0ODBmMjFhMWQzNmVmYjk2ODNi
Yi4uZDhlOGM4OWZjMzZjOWM2MmE5OWVhOTVkZjNhNjYwMTkxODU5MDE4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL2h0bWwuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9odG1s
LmNzcwpAQCAtNjI2LDcgKzYyNiwxNSBAQCBpbnB1dDo6LXdlYmtpdC1saXN0LWJ1dHRvbiB7CiAg
ICAgZmxleDogbm9uZTsKICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgIHdpZHRo
OiAxNnB4OworI2lmIGRlZmluZWQoV1RGX1BMQVRGT1JNX0lPUykgJiYgV1RGX1BMQVRGT1JNX0lP
UworICAgIGNvbnRlbnQ6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBzdHJva2U9ImJsYWNrIiBmaWxsPSJibGFjayIgd2lkdGg9
IjE2IiBoZWlnaHQ9IjE2Ij48cG9seWdvbiBwb2ludHM9IjggMTEuMDMxLCA0LjUgNC45NjksIDEx
LjUgNC45NjkiLz48L3N2Zz4nKTsKKyAgICAvKiBNYWtlIGl0IGVhc2llciB0byBoaXQgdGhlIGJ1
dHRvbiBvbiBpT1MgKi8KKyAgICBwYWRkaW5nOiA3cHg7CisgICAgbWFyZ2luOiAtN3B4OworICAg
IHotaW5kZXg6IDIxNDc0ODM2NDU7CisjZWxzZQogICAgIGhlaWdodDogMTAwJTsKKyNlbmRpZgog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0YUxpc3RTdWdn
ZXN0aW9uSW5mb3JtYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0YUxpc3RTdWdnZXN0
aW9uSW5mb3JtYXRpb24uaAppbmRleCA4YzQ0OWVmOTk5NGM2MDNjYzRmNWVjOGE1YWQ5OTM5NTBh
MDU1OWZlLi41Nzk0NTFhNTk4MzJmZGRmZmM5Yjk4ZjQwY2Q5NTk1NTY4Y2VmYzZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbi5o
CkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkludFJlY3QuaCIK
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgK
aW5kZXggZTMyYjM4OTNlYjRhYzc5NmM2NmUwOGMxYmRhN2YzZTQ3MjllYzhkMy4uNGNlODliMTYw
MDNlZTVlZmI5OGEwYzhmN2MzZTM5MDgzYTIwNGEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmgKQEAgLTE1MSw3ICsxNTEsNyBAQCBwdWJsaWM6CiAgICAgSFRNTEVsZW1l
bnQqIHBsYWNlaG9sZGVyRWxlbWVudCgpIGNvbnN0IGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JU
IEhUTUxFbGVtZW50KiBhdXRvRmlsbEJ1dHRvbkVsZW1lbnQoKSBjb25zdDsKICNpZiBFTkFCTEUo
REFUQUxJU1RfRUxFTUVOVCkKLSAgICBIVE1MRWxlbWVudCogZGF0YUxpc3RCdXR0b25FbGVtZW50
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgSFRNTEVsZW1lbnQqIGRhdGFMaXN0QnV0dG9u
RWxlbWVudCgpIGNvbnN0OwogI2VuZGlmCiAKICAgICBib29sIGNoZWNrZWQoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ2hlY2tlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5
cGUuY3BwCmluZGV4IDEzYzMxYmE2MWFhMmFjY2YzMjBlNjNkMjBhMTMxNGQwNDg1ZmZmYmIuLmM5
ODQ2YzQ5OWU4MzEzODhmZDA1Nzk5MzI2YjQyZjJkNmQwZTY4NzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKQEAgLTI2MCw4ICsyNjAsMTMgQEAgdm9pZCBU
ZXh0RmllbGRJbnB1dFR5cGU6OmhhbmRsZUZvY3VzRXZlbnQoTm9kZSogb2xkRm9jdXNlZE5vZGUs
IEZvY3VzRGlyZWN0aW9uKQogewogICAgIEFTU0VSVChlbGVtZW50KCkpOwogICAgIEFTU0VSVF9V
TlVTRUQob2xkRm9jdXNlZE5vZGUsIG9sZEZvY3VzZWROb2RlICE9IGVsZW1lbnQoKSk7Ci0gICAg
aWYgKFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBlbGVtZW50KCktPmRvY3VtZW50KCkuZnJhbWUoKSkK
KyAgICBpZiAoUmVmUHRyPEZyYW1lPiBmcmFtZSA9IGVsZW1lbnQoKS0+ZG9jdW1lbnQoKS5mcmFt
ZSgpKSB7CiAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50ZXh0RmllbGREaWRCZWdpbkVkaXRpbmco
ZWxlbWVudCgpKTsKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkgJiYgUExBVEZPUk0oSU9T
KQorICAgICAgICBpZiAoZWxlbWVudCgpLT5saXN0KCkgJiYgbV9kYXRhTGlzdERyb3Bkb3duSW5k
aWNhdG9yKQorICAgICAgICAgICAgbV9kYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yLT5zZXRJbmxp
bmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSwgc3VnZ2VzdGlvbnMoKS5zaXplKCkg
PyBDU1NWYWx1ZUJsb2NrIDogQ1NTVmFsdWVOb25lLCB0cnVlKTsKKyNlbmRpZgorICAgIH0KIH0K
IAogdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmhhbmRsZUJsdXJFdmVudCgpCkBAIC0yNjksNiAr
Mjc0LDEwIEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5kbGVCbHVyRXZlbnQoKQogICAg
IElucHV0VHlwZTo6aGFuZGxlQmx1ckV2ZW50KCk7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CiAg
ICAgZWxlbWVudCgpLT5lbmRFZGl0aW5nKCk7CisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQp
ICYmIFBMQVRGT1JNKElPUykKKyAgICBpZiAoZWxlbWVudCgpLT5saXN0KCkgJiYgbV9kYXRhTGlz
dERyb3Bkb3duSW5kaWNhdG9yKQorICAgICAgICBtX2RhdGFMaXN0RHJvcGRvd25JbmRpY2F0b3It
PnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBDU1NWYWx1ZU5vbmUs
IHRydWUpOworI2VuZGlmCiB9CiAKIGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjpzaG91bGRTdWJt
aXRJbXBsaWNpdGx5KEV2ZW50JiBldmVudCkKQEAgLTY0OCw2ICs2NTcsMTAgQEAgdm9pZCBUZXh0
RmllbGRJbnB1dFR5cGU6OmRpZFNldFZhbHVlQnlVc2VyRWRpdCgpCiAgICAgaWYgKFJlZlB0cjxG
cmFtZT4gZnJhbWUgPSBlbGVtZW50KCktPmRvY3VtZW50KCkuZnJhbWUoKSkKICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLnRleHREaWRDaGFuZ2VJblRleHRGaWVsZChlbGVtZW50KCkpOwogI2lmIEVO
QUJMRShEQVRBTElTVF9FTEVNRU5UKQorI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAoZWxlbWVu
dCgpLT5saXN0KCkgJiYgbV9kYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yKQorICAgICAgICBtX2Rh
dGFMaXN0RHJvcGRvd25JbmRpY2F0b3ItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVy
dHlEaXNwbGF5LCBzdWdnZXN0aW9ucygpLnNpemUoKSA/IENTU1ZhbHVlQmxvY2sgOiBDU1NWYWx1
ZU5vbmUsIHRydWUpOworI2VuZGlmCiAgICAgaWYgKGVsZW1lbnQoKS0+bGlzdCgpKQogICAgICAg
ICBkaXNwbGF5U3VnZ2VzdGlvbnMoRGF0YUxpc3RTdWdnZXN0aW9uQWN0aXZhdGlvblR5cGU6OlRl
eHRDaGFuZ2VkKTsKICNlbmRpZgpAQCAtODAyLDcgKzgxNSw5IEBAIHZvaWQgVGV4dEZpZWxkSW5w
dXRUeXBlOjpsaXN0QXR0cmlidXRlVGFyZ2V0Q2hhbmdlZCgpCiAgICAgaWYgKCFtX2RhdGFMaXN0
RHJvcGRvd25JbmRpY2F0b3IpCiAgICAgICAgIHJldHVybjsKIAorI2lmICFQTEFURk9STShJT1Mp
CiAgICAgbV9kYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5
KENTU1Byb3BlcnR5RGlzcGxheSwgZWxlbWVudCgpLT5saXN0KCkgPyBDU1NWYWx1ZUJsb2NrIDog
Q1NTVmFsdWVOb25lLCB0cnVlKTsKKyNlbmRpZgogfQogCiBIVE1MRWxlbWVudCogVGV4dEZpZWxk
SW5wdXRUeXBlOjpkYXRhTGlzdEJ1dHRvbkVsZW1lbnQoKSBjb25zdApAQCAtODU5LDggKzg3NCwx
MCBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6ZGlzcGxheVN1Z2dlc3Rpb25zKERhdGFMaXN0
U3VnZ2VzdGlvbkFjdGl2YXRpb25UeXBlIHR5cAogICAgIGlmIChlbGVtZW50KCktPmlzRGlzYWJs
ZWRGb3JtQ29udHJvbCgpIHx8ICFlbGVtZW50KCktPnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVy
bjsKIAorI2lmICFQTEFURk9STShJT1MpCiAgICAgaWYgKCFVc2VyR2VzdHVyZUluZGljYXRvcjo6
cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCiAgICAgICAgIHJldHVybjsKKyNlbmRpZgogCiAgICAg
aWYgKCFtX3N1Z2dlc3Rpb25QaWNrZXIgJiYgc3VnZ2VzdGlvbnMoKS5zaXplKCkgPiAwKQogICAg
ICAgICBtX3N1Z2dlc3Rpb25QaWNrZXIgPSBjaHJvbWUoKS0+Y3JlYXRlRGF0YUxpc3RTdWdnZXN0
aW9uUGlja2VyKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lz
dGVkTm9kZUluZm9ybWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lzdGVkTm9k
ZUluZm9ybWF0aW9uLmNwcAppbmRleCA3OWFkYjY4MGZlNDcxMjFkMTI5ZjkyNDFkN2U2NmFmYjJh
YmVkMGQ1Li42Yjc4MDE5MWI1M2VjMzBmNzk0NzE4Y2Q2OGI5MjAwYjE4OGZiOGMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uY3BwCkBAIC05
Niw5ICs5NiwxMiBAQCB2b2lkIEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uOjplbmNvZGUoSVBDOjpF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbGFiZWw7CiAgICAgZW5jb2Rl
ciA8PCBhcmlhTGFiZWw7CiAgICAgZW5jb2RlciA8PCBhc3Npc3RlZE5vZGVJZGVudGlmaWVyOwot
I2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKSAmJiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkK
KyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICBlbmNvZGVyIDw8IGhhc1N1Z2dlc3Rp
b25zOworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogICAgIGVuY29kZXIgPDwgc3VnZ2Vz
dGVkQ29sb3JzOwogI2VuZGlmCisjZW5kaWYKIH0KIAogYm9vbCBBc3Npc3RlZE5vZGVJbmZvcm1h
dGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgQXNzaXN0ZWROb2RlSW5mb3JtYXRp
b24mIHJlc3VsdCkKQEAgLTIwMiw5ICsyMDUsMTQgQEAgYm9vbCBBc3Npc3RlZE5vZGVJbmZvcm1h
dGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgQXNzaXN0ZWROb2RlSW5mb3JtYXQK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5hc3Npc3RlZE5vZGVJZGVudGlmaWVyKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpICYm
IEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lmhhc1N1Z2dlc3Rpb25zKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQuc3VnZ2VzdGVkQ29sb3JzKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOworI2VuZGlmCiAjZW5kaWYKIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmgKaW5kZXggMWU3YWFjNzdiMDA4MTk0
ZDE5NDE4NDA0MTE2Y2VhMjRhMWNlMzFmZC4uYzM3MTczMWZhZTg4N2RhYTc1MzhiNDFkYjQ5Yjcx
ZjUyYWVkNGMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2Rl
SW5mb3JtYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZv
cm1hdGlvbi5oCkBAIC0xMjMsOCArMTIzLDExIEBAIHN0cnVjdCBBc3Npc3RlZE5vZGVJbmZvcm1h
dGlvbiB7CiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyOwogICAgIFN0cmluZyBsYWJlbDsKICAgICBT
dHJpbmcgYXJpYUxhYmVsOwotI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKSAmJiBFTkFCTEUo
REFUQUxJU1RfRUxFTUVOVCkKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICBib29s
IGhhc1N1Z2dlc3Rpb25zIHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikK
ICAgICBWZWN0b3I8V2ViQ29yZTo6Q29sb3I+IHN1Z2dlc3RlZENvbG9yczsKKyNlbmRpZgogI2Vu
ZGlmCiAKICAgICB1aW50NjRfdCBhc3Npc3RlZE5vZGVJZGVudGlmaWVyIHsgMCB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlv
bkF0UG9zaXRpb24uaAppbmRleCA5Yjk1MzNlMDcyZGE4MGRjM2RkYmMxYmQwMWM1MWIyNzBjYjNm
MjljLi4zZDA4Njg5ZmUxNzZkZDdhNjE3MmExMzdjMDU4M2RjZWE3MzcyZjYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlv
bkF0UG9zaXRpb24uaApAQCAtNTUsNiArNTUsOSBAQCBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb24gewogICAgIGJvb2wgaXNFbGVtZW50IHsgZmFsc2UgfTsKICNpZiBFTkFC
TEUoREFUQV9ERVRFQ1RJT04pCiAgICAgYm9vbCBpc0RhdGFEZXRlY3RvckxpbmsgeyBmYWxzZSB9
OworI2VuZGlmCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgYm9vbCBwcmV2ZW50
VGV4dEludGVyYWN0aW9uIHsgZmFsc2UgfTsKICNlbmRpZgogICAgIFdlYkNvcmU6OkZsb2F0UG9p
bnQgYWRqdXN0ZWRQb2ludEZvck5vZGVSZXNwb25kaW5nVG9DbGlja0V2ZW50czsKICAgICBXZWJD
b3JlOjpVUkwgdXJsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVy
YWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9z
L0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tCmluZGV4IGNhZjNiM2U1Nzg5Mjg0
MjhlNzQ2NjEzMzU2N2U1NmE1MWQyOGYxY2QuLmEzOWFmMjIyNTgyYWE2NTdjMjdlZGUwNjljNWMz
NmUyNWJiNjFhZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFj
dGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9p
b3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW0KQEAgLTgyLDYgKzgyLDkgQEAg
dm9pZCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6ZW5jb2RlKElQQzo6RW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKICAgICAgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgcmVpbnRlcnBy
ZXRfY2FzdDxDRkRhdGFSZWY+KGFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhKSk7CiAgICAgfQog
I2VuZGlmCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgZW5jb2RlciA8PCBwcmV2
ZW50VGV4dEludGVyYWN0aW9uOworI2VuZGlmCiB9CiAKIGJvb2wgSW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEludGVyYWN0aW9u
SW5mb3JtYXRpb25BdFBvc2l0aW9uJiByZXN1bHQpCkBAIC0xODYsNiArMTg5LDExIEBAIGJvb2wg
SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIsIEludGVyYWN0aW9uCiAgICAgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoREFUQUxJU1Rf
RUxFTUVOVCkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wcmV2ZW50VGV4dEludGVy
YWN0aW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRGF0YUxpc3RT
dWdnZXN0aW9uc0Ryb3Bkb3duSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJEYXRh
TGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzdmNjcyNWVhYjczMDgw
MDBkYzQ3NmU0Yzc3YzVjMjUwYzQwMTg0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLmgKQEAgLTAsMCAr
MSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKERBVEFMSVNU
X0VMRU1FTlQpICYmIFBMQVRGT1JNKElPUykKKworI2ltcG9ydCAiV2ViRGF0YUxpc3RTdWdnZXN0
aW9uc0Ryb3Bkb3duLmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworT0JKQ19DTEFTUyBXS0NvbnRlbnRWaWV3OworT0JKQ19DTEFTUyBXS0Rh
dGFMaXN0VGV4dFN1Z2dlc3Rpb247CitPQkpDX0NMQVNTIFdLRGF0YUxpc3RTdWdnZXN0aW9uc0Nv
bnRyb2w7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJEYXRhTGlzdFN1Z2dlc3Rp
b25zRHJvcGRvd25JT1MgOiBwdWJsaWMgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklP
Uz4gY3JlYXRlKFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bjo6Q2xpZW50JiwgV0tDb250
ZW50VmlldyAqKTsKKyAgICB+V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TKCk7CisK
KyAgICB2b2lkIGRpZFNlbGVjdE9wdGlvbihTdHJpbmcmKTsKKworcHJpdmF0ZToKKyAgICBXZWJE
YXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MoV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bk
b3duOjpDbGllbnQmLCBXS0NvbnRlbnRWaWV3ICopOworCisgICAgdm9pZCBzaG93KFdlYkNvcmU6
OkRhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uJiYpIGZpbmFsOworICAgIHZvaWQgaGFuZGxl
S2V5ZG93bldpdGhJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgY2xv
c2UoKSBmaW5hbDsKKworICAgIFdLQ29udGVudFZpZXcgKm1fY29udGVudFZpZXc7CisgICAgUmV0
YWluUHRyPFdLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2w+IG1fc3VnZ2VzdGlvbnNDb250cm9s
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoREFUQUxJ
U1RfRUxFTUVOVCkgJiYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE1NzBkZWM5NjZiYzljM2RjNTQ0NDkxMzhkYmEzYzFmZWM5MTA1M2IKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25z
RHJvcGRvd25JT1MubW0KQEAgLTAsMCArMSwzODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLmgi
CisKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkgJiYgUExBVEZPUk0oSU9TKQorCisjaW1w
b3J0ICJVSUtpdFNQSS5oIgorI2ltcG9ydCAiV0tDb250ZW50Vmlldy5oIgorI2ltcG9ydCAiV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLmgiCisjaW1wb3J0ICJXS0Zvcm1Qb3BvdmVyLmgiCisjaW1w
b3J0ICJfV0tGb3JtSW5wdXRTZXNzaW9uLmgiCisKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IG1heFZp
c2libGVTdWdnZXN0aW9ucyA9IDU7CitzdGF0aWMgY29uc3QgQ0dGbG9hdCBzdWdnZXN0aW9uc1Bv
cG92ZXJDZWxsSGVpZ2h0ID0gNDQ7CitzdGF0aWMgY29uc3QgQ0dGbG9hdCBzdWdnZXN0aW9uc1Bv
cG92ZXJXaWR0aCA9IDMyMDsKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHN1Z2dlc3Rpb25DZWxs
UmV1c2VJZGVudGlmaWVyID0gQCJXS0RhdGFMaXN0U3VnZ2VzdGlvbkNlbGwiOworCitAaW50ZXJm
YWNlIFdLRm9ybUlucHV0U2Vzc2lvbiAoKQorLSAodm9pZClzZXRDdXN0b21JbnB1dFZpZXc6KFVJ
VmlldyAqKWN1c3RvbUlucHV0VmlldzsKKy0gKHZvaWQpc2V0U3VnZ2VzdGlvbnM6KE5TQXJyYXk8
VUlUZXh0U3VnZ2VzdGlvbiAqPiAqKXN1Z2dlc3Rpb25zOworQGVuZAorCitAaW50ZXJmYWNlIFdL
Q29udGVudFZpZXcgKCkKKy0gKFdLRm9ybUlucHV0U2Vzc2lvbiAqKV9mb3JtSW5wdXRTZXNzaW9u
OworQGVuZAorCitAaW50ZXJmYWNlIFdLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2wgOiBOU09i
amVjdCB7CisgICAgV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MqIF9k
cm9wZG93bjsKKyAgICBWZWN0b3I8U3RyaW5nPiBfc3VnZ2VzdGlvbnM7Cit9CisKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCB3ZWFrKSBXS0NvbnRlbnRWaWV3ICp2aWV3OworCistIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhJbmZvcm1hdGlvbjooV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3Jt
YXRpb24mJilpbmZvcm1hdGlvbiBpblZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3OworLSAodm9p
ZCl1cGRhdGVXaXRoSW5mb3JtYXRpb246KFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkluZm9y
bWF0aW9uJiYpaW5mb3JtYXRpb247CistICh2b2lkKXNob3dTdWdnZXN0aW9uc0Ryb3Bkb3duOihX
ZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUyAqKWRyb3Bkb3duIGFjdGl2
YXRpb25UeXBlOihXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9uVHlwZSlhY3Rp
dmF0aW9uVHlwZTsKKy0gKHZvaWQpZGlkU2VsZWN0T3B0aW9uQXRJbmRleDooTlNJbnRlZ2VyKWlu
ZGV4OworLSAodm9pZClpbnZhbGlkYXRlOworCistIChOU0FycmF5PFdLRGF0YUxpc3RUZXh0U3Vn
Z2VzdGlvbiAqPiAqKXRleHRTdWdnZXN0aW9uczsKKy0gKE5TSW50ZWdlcilzdWdnZXN0aW9uc0Nv
dW50OworLSAoU3RyaW5nKXN1Z2dlc3Rpb25BdEluZGV4OihOU0ludGVnZXIpaW5kZXg7CistIChO
U1RleHRBbGlnbm1lbnQpdGV4dEFsaWdubWVudDsKK0BlbmQKKworQGludGVyZmFjZSBXS0RhdGFM
aXN0U3VnZ2VzdGlvbnNQaWNrZXIgOiBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sIDxVSVBp
Y2tlclZpZXdEYXRhU291cmNlLCBVSVBpY2tlclZpZXdEZWxlZ2F0ZT4KK0BlbmQKKworQGludGVy
ZmFjZSBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQaWNrZXJWaWV3IDogVUlQaWNrZXJWaWV3CitAcHJv
cGVydHkgKG5vbmF0b21pYywgd2VhaykgV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbCAqY29u
dHJvbDsKKworLSAodm9pZCllbmRFZGl0aW5nOworQGVuZAorCitAaW50ZXJmYWNlIFdLRGF0YUxp
c3RTdWdnZXN0aW9uc1BvcG92ZXIgOiBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sCitAZW5k
CisKK0BpbnRlcmZhY2UgV0tEYXRhTGlzdFN1Z2dlc3Rpb25zVmlld0NvbnRyb2xsZXIgOiBVSVRh
YmxlVmlld0NvbnRyb2xsZXIKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBXS0RhdGFMaXN0
U3VnZ2VzdGlvbnNDb250cm9sICpjb250cm9sOworCistICh2b2lkKXJlbG9hZERhdGE7CitAZW5k
CisKK0BpbnRlcmZhY2UgV0tEYXRhTGlzdFRleHRTdWdnZXN0aW9uIDogVUlUZXh0U3VnZ2VzdGlv
bgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tEYXRhTGlzdFRleHRTdWdnZXN0aW9uCitAZW5k
CisKKyNwcmFnbWEgbWFyayAtIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUworCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworUmVmPFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklP
Uz4gV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TOjpjcmVhdGUoV2ViRGF0YUxpc3RT
dWdnZXN0aW9uc0Ryb3Bkb3duOjpDbGllbnQmIGNsaWVudCwgV0tDb250ZW50VmlldyAqdmlldykK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRv
d25JT1MoY2xpZW50LCB2aWV3KSk7Cit9CisKK1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93
bklPUzo6fldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUygpIHsgfQorCitXZWJEYXRh
TGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1M6OldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93
bklPUyhXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd246OkNsaWVudCYgY2xpZW50LCBXS0Nv
bnRlbnRWaWV3ICp2aWV3KQorICAgIDogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duKGNs
aWVudCkKKyAgICAsIG1fY29udGVudFZpZXcodmlldykKK3sKK30KKwordm9pZCBXZWJEYXRhTGlz
dFN1Z2dlc3Rpb25zRHJvcGRvd25JT1M6OnNob3coV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9u
SW5mb3JtYXRpb24mJiBpbmZvcm1hdGlvbikKK3sKKyAgICBpZiAobV9zdWdnZXN0aW9uc0NvbnRy
b2wpIHsKKyAgICAgICAgW21fc3VnZ2VzdGlvbnNDb250cm9sIHVwZGF0ZVdpdGhJbmZvcm1hdGlv
bjpXVEZNb3ZlKGluZm9ybWF0aW9uKV07CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAoY3VycmVudFVzZXJJbnRlcmZhY2VJZGlvbUlzUGFkKCkpCisgICAgICAgIG1fc3VnZ2VzdGlv
bnNDb250cm9sID0gYWRvcHROUyhbW1dLRGF0YUxpc3RTdWdnZXN0aW9uc1BvcG92ZXIgYWxsb2Nd
IGluaXRXaXRoSW5mb3JtYXRpb246V1RGTW92ZShpbmZvcm1hdGlvbikgaW5WaWV3Om1fY29udGVu
dFZpZXddKTsKKyAgICBlbHNlCisgICAgICAgIG1fc3VnZ2VzdGlvbnNDb250cm9sID0gYWRvcHRO
UyhbW1dLRGF0YUxpc3RTdWdnZXN0aW9uc1BpY2tlciBhbGxvY10gaW5pdFdpdGhJbmZvcm1hdGlv
bjpXVEZNb3ZlKGluZm9ybWF0aW9uKSBpblZpZXc6bV9jb250ZW50Vmlld10pOworCisgICAgW21f
c3VnZ2VzdGlvbnNDb250cm9sIHNob3dTdWdnZXN0aW9uc0Ryb3Bkb3duOnRoaXMgYWN0aXZhdGlv
blR5cGU6aW5mb3JtYXRpb24uYWN0aXZhdGlvblR5cGVdOworfQorCit2b2lkIFdlYkRhdGFMaXN0
U3VnZ2VzdGlvbnNEcm9wZG93bklPUzo6aGFuZGxlS2V5ZG93bldpdGhJZGVudGlmaWVyKGNvbnN0
IFN0cmluZyYpCit7Cit9CisKK3ZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9T
OjpjbG9zZSgpCit7CisgICAgW21fc3VnZ2VzdGlvbnNDb250cm9sIGludmFsaWRhdGVdOworICAg
IG1fc3VnZ2VzdGlvbnNDb250cm9sID0gbmlsOworICAgIG1fY2xpZW50LT5kaWRDbG9zZVN1Z2dl
c3Rpb25zKCk7Cit9CisKK3ZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TOjpk
aWRTZWxlY3RPcHRpb24oU3RyaW5nJiBzZWxlY3RlZE9wdGlvbikKK3sKKyAgICBpZiAoIW1fY2xp
ZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC0+ZGlkU2VsZWN0T3B0aW9uKHNl
bGVjdGVkT3B0aW9uKTsKKyAgICBjbG9zZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI3ByYWdtYSBtYXJrIC0gV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbAorCitAaW1wbGVt
ZW50YXRpb24gV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbAorCistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhJbmZvcm1hdGlvbjooV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRp
b24mJilpbmZvcm1hdGlvbiBpblZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3Cit7CisgICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfdmll
dyA9IHZpZXc7CisgICAgX3N1Z2dlc3Rpb25zID0gV1RGTW92ZShpbmZvcm1hdGlvbi5zdWdnZXN0
aW9ucyk7CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZCl1cGRhdGVXaXRoSW5mb3Jt
YXRpb246KFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uJiYpaW5mb3JtYXRp
b24KK3sKKyAgICBfc3VnZ2VzdGlvbnMgPSBXVEZNb3ZlKGluZm9ybWF0aW9uLnN1Z2dlc3Rpb25z
KTsKK30KKworLSAodm9pZClzaG93U3VnZ2VzdGlvbnNEcm9wZG93bjooV2ViS2l0OjpXZWJEYXRh
TGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MgKilkcm9wZG93biBhY3RpdmF0aW9uVHlwZTooV2Vi
Q29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uQWN0aXZhdGlvblR5cGUpYWN0aXZhdGlvblR5cGUKK3sK
KyAgICBfZHJvcGRvd24gPSBkcm9wZG93bjsKK30KKworLSAodm9pZClkaWRTZWxlY3RPcHRpb25B
dEluZGV4OihOU0ludGVnZXIpaW5kZXgKK3sKKyAgICBfZHJvcGRvd24tPmRpZFNlbGVjdE9wdGlv
bihfc3VnZ2VzdGlvbnNbaW5kZXhdKTsKK30KKworLSAodm9pZClpbnZhbGlkYXRlCit7Cit9CisK
Ky0gKE5TQXJyYXk8V0tEYXRhTGlzdFRleHRTdWdnZXN0aW9uICo+ICopdGV4dFN1Z2dlc3Rpb25z
Cit7CisgICAgTlNNdXRhYmxlQXJyYXkgKnN1Z2dlc3Rpb25zID0gW05TTXV0YWJsZUFycmF5IGFy
cmF5XTsKKworICAgIGZvciAoYXV0byBzdWdnZXN0aW9uIDogX3N1Z2dlc3Rpb25zKSB7CisgICAg
ICAgIFtzdWdnZXN0aW9ucyBhZGRPYmplY3Q6W1dLRGF0YUxpc3RUZXh0U3VnZ2VzdGlvbiB0ZXh0
U3VnZ2VzdGlvbldpdGhJbnB1dFRleHQ6c3VnZ2VzdGlvbl1dOworICAgICAgICBpZiAoc3VnZ2Vz
dGlvbnMuY291bnQgPT0gMykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVy
biBzdWdnZXN0aW9uczsKK30KKworLSAoTlNJbnRlZ2VyKXN1Z2dlc3Rpb25zQ291bnQKK3sKKyAg
ICByZXR1cm4gX3N1Z2dlc3Rpb25zLnNpemUoKTsKK30KKworLSAoU3RyaW5nKXN1Z2dlc3Rpb25B
dEluZGV4OihOU0ludGVnZXIpaW5kZXgKK3sKKyAgICByZXR1cm4gX3N1Z2dlc3Rpb25zW2luZGV4
XTsKK30KKworLSAoTlNUZXh0QWxpZ25tZW50KXRleHRBbGlnbm1lbnQKK3sKKyAgICByZXR1cm4g
X3ZpZXcuYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaXNSVEwgPyBOU1RleHRBbGlnbm1lbnRSaWdo
dCA6IE5TVGV4dEFsaWdubWVudExlZnQ7Cit9CisKK0BlbmQKKworI3ByYWdtYSBtYXJrIC0gV0tE
YXRhTGlzdFN1Z2dlc3Rpb25zUGlja2VyCisKK0BpbXBsZW1lbnRhdGlvbiBXS0RhdGFMaXN0U3Vn
Z2VzdGlvbnNQaWNrZXIgIHsKKyAgICBSZXRhaW5QdHI8V0tEYXRhTGlzdFN1Z2dlc3Rpb25zUGlj
a2VyVmlldz4gX3BpY2tlclZpZXc7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEluZm9y
bWF0aW9uOihXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbiYmKWluZm9ybWF0
aW9uIGluVmlldzooV0tDb250ZW50VmlldyAqKXZpZXcKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1
cGVyIGluaXRXaXRoSW5mb3JtYXRpb246V1RGTW92ZShpbmZvcm1hdGlvbikgaW5WaWV3OnZpZXdd
KSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9waWNrZXJWaWV3ID0gYWRvcHROUyhbW1dL
RGF0YUxpc3RTdWdnZXN0aW9uc1BpY2tlclZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
WmVyb10pOworICAgIFtfcGlja2VyVmlldyBzZXRBdXRvcmVzaXppbmdNYXNrOlVJVmlld0F1dG9y
ZXNpemluZ0ZsZXhpYmxlV2lkdGggfCBVSVZpZXdBdXRvcmVzaXppbmdGbGV4aWJsZUhlaWdodF07
CisgICAgW19waWNrZXJWaWV3IHNldERhdGFTb3VyY2U6c2VsZl07CisgICAgW19waWNrZXJWaWV3
IHNldERlbGVnYXRlOnNlbGZdOworICAgIFtfcGlja2VyVmlldyBzZXRDb250cm9sOnNlbGZdOwor
ICAgIFtfcGlja2VyVmlldyBzZXRTaXplOltVSUtleWJvYXJkIGRlZmF1bHRTaXplRm9ySW50ZXJm
YWNlT3JpZW50YXRpb246VUlBcHAuaW50ZXJmYWNlT3JpZW50YXRpb25dXTsKKworICAgIHJldHVy
biBzZWxmOworfQorCistICh2b2lkKXVwZGF0ZVdpdGhJbmZvcm1hdGlvbjooV2ViQ29yZTo6RGF0
YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24mJilpbmZvcm1hdGlvbgoreworICAgIFtzdXBlciB1
cGRhdGVXaXRoSW5mb3JtYXRpb246V1RGTW92ZShpbmZvcm1hdGlvbildOworICAgIGlmIChpbmZv
cm1hdGlvbi5hY3RpdmF0aW9uVHlwZSAhPSBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25BY3Rp
dmF0aW9uVHlwZTo6SW5kaWNhdG9yQ2xpY2tlZCkgeworICAgICAgICBbW3NlbGYudmlldyBfZm9y
bUlucHV0U2Vzc2lvbl0gc2V0Q3VzdG9tSW5wdXRWaWV3Om5pbF07CisgICAgICAgIFtbc2VsZi52
aWV3IF9mb3JtSW5wdXRTZXNzaW9uXSBzZXRTdWdnZXN0aW9uczpbc2VsZiB0ZXh0U3VnZ2VzdGlv
bnNdXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFtbc2VsZi52aWV3IF9mb3JtSW5w
dXRTZXNzaW9uXSBzZXRDdXN0b21JbnB1dFZpZXc6X3BpY2tlclZpZXcuZ2V0KCldOworCisgICAg
W19waWNrZXJWaWV3IHJlbG9hZEFsbENvbXBvbmVudHNdOworICAgIFtfcGlja2VyVmlldyBzZWxl
Y3RSb3c6MCBpbkNvbXBvbmVudDowIGFuaW1hdGVkOk5PXTsKK30KKworLSAodm9pZClzaG93U3Vn
Z2VzdGlvbnNEcm9wZG93bjooV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25J
T1MgKilkcm9wZG93biBhY3RpdmF0aW9uVHlwZTooV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9u
QWN0aXZhdGlvblR5cGUpYWN0aXZhdGlvblR5cGUKK3sKKyAgICBbc3VwZXIgc2hvd1N1Z2dlc3Rp
b25zRHJvcGRvd246ZHJvcGRvd24gYWN0aXZhdGlvblR5cGU6YWN0aXZhdGlvblR5cGVdOworICAg
IGlmIChhY3RpdmF0aW9uVHlwZSA9PSBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0
aW9uVHlwZTo6SW5kaWNhdG9yQ2xpY2tlZCkgeworICAgICAgICBbW3NlbGYudmlldyBfZm9ybUlu
cHV0U2Vzc2lvbl0gc2V0Q3VzdG9tSW5wdXRWaWV3Ol9waWNrZXJWaWV3LmdldCgpXTsKKyAgICAg
ICAgW19waWNrZXJWaWV3IHNlbGVjdFJvdzowIGluQ29tcG9uZW50OjAgYW5pbWF0ZWQ6Tk9dOwor
ICAgIH0gZWxzZQorICAgICAgICBbW3NlbGYudmlldyBfZm9ybUlucHV0U2Vzc2lvbl0gc2V0U3Vn
Z2VzdGlvbnM6W3NlbGYgdGV4dFN1Z2dlc3Rpb25zXV07Cit9CisKKy0gKE5TSW50ZWdlciludW1i
ZXJPZkNvbXBvbmVudHNJblBpY2tlclZpZXc6KFVJUGlja2VyVmlldyAqKXBpY2tlclZpZXcKK3sK
KyAgICByZXR1cm4gMTsKK30KKworLSAoTlNJbnRlZ2VyKXBpY2tlclZpZXc6KFVJUGlja2VyVmll
dyAqKXBpY2tlclZpZXcgbnVtYmVyT2ZSb3dzSW5Db21wb25lbnQ6KE5TSW50ZWdlciljb2x1bW5J
bmRleAoreworICAgIHJldHVybiBbc2VsZiBzdWdnZXN0aW9uc0NvdW50XTsKK30KKworLSAoTlNT
dHJpbmcgKilwaWNrZXJWaWV3OihVSVBpY2tlclZpZXcgKilwaWNrZXJWaWV3IHRpdGxlRm9yUm93
OihOU0ludGVnZXIpcm93IGZvckNvbXBvbmVudDooTlNJbnRlZ2VyKWNvbXBvbmVudAoreworICAg
IHJldHVybiBbc2VsZiBzdWdnZXN0aW9uQXRJbmRleDpyb3ddOworfQorCistICh2b2lkKWludmFs
aWRhdGUKK3sKKyAgICBpZiAoW1tzZWxmLnZpZXcgX2Zvcm1JbnB1dFNlc3Npb25dIGN1c3RvbUlu
cHV0Vmlld10gPT0gX3BpY2tlclZpZXcuZ2V0KCkpCisgICAgICAgIFtbc2VsZi52aWV3IF9mb3Jt
SW5wdXRTZXNzaW9uXSBzZXRDdXN0b21JbnB1dFZpZXc6bmlsXTsKKworICAgIFtfcGlja2VyVmll
dyBzZXREZWxlZ2F0ZTpuaWxdOworICAgIFtfcGlja2VyVmlldyBzZXREYXRhU291cmNlOm5pbF07
CisgICAgW19waWNrZXJWaWV3IHNldENvbnRyb2w6bmlsXTsKK30KKworQGVuZAorCitAaW1wbGVt
ZW50YXRpb24gV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUGlja2VyVmlldworCistICh2b2lkKWVuZEVk
aXRpbmcKK3sKKyAgICBbc2VsZi5jb250cm9sIGRpZFNlbGVjdE9wdGlvbkF0SW5kZXg6W3NlbGYg
c2VsZWN0ZWRSb3dJbkNvbXBvbmVudDowXV07Cit9CisKK0BlbmQKKworI3ByYWdtYSBtYXJrIC0g
V0tEYXRhTGlzdFN1Z2dlc3Rpb25zUG9wb3ZlcgorCitAaW1wbGVtZW50YXRpb24gV0tEYXRhTGlz
dFN1Z2dlc3Rpb25zUG9wb3ZlciAgeworICAgIFJldGFpblB0cjxXS0Zvcm1Sb3RhdGluZ0FjY2Vz
c29yeVBvcG92ZXI+IF9wb3BvdmVyOworICAgIFJldGFpblB0cjxXS0RhdGFMaXN0U3VnZ2VzdGlv
bnNWaWV3Q29udHJvbGxlcj4gX3N1Z2dlc3Rpb25zVmlld0NvbnRyb2xsZXI7Cit9CisKKy0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aEluZm9ybWF0aW9uOihXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rp
b25JbmZvcm1hdGlvbiYmKWluZm9ybWF0aW9uIGluVmlldzooV0tDb250ZW50VmlldyAqKXZpZXcK
K3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoSW5mb3JtYXRpb246V1RGTW92ZShp
bmZvcm1hdGlvbikgaW5WaWV3OnZpZXddKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9w
b3BvdmVyID0gYWRvcHROUyhbW1dLRm9ybVJvdGF0aW5nQWNjZXNzb3J5UG9wb3ZlciBhbGxvY10g
aW5pdFdpdGhWaWV3OnZpZXddKTsKKworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKXVw
ZGF0ZVdpdGhJbmZvcm1hdGlvbjooV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRp
b24mJilpbmZvcm1hdGlvbgoreworICAgIFtzdXBlciB1cGRhdGVXaXRoSW5mb3JtYXRpb246V1RG
TW92ZShpbmZvcm1hdGlvbildOworICAgIFtfc3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlciByZWxv
YWREYXRhXTsKKyAgICBbW3NlbGYudmlldyBfZm9ybUlucHV0U2Vzc2lvbl0gc2V0U3VnZ2VzdGlv
bnM6W3NlbGYgdGV4dFN1Z2dlc3Rpb25zXV07Cit9CisKKy0gKHZvaWQpc2hvd1N1Z2dlc3Rpb25z
RHJvcGRvd246KFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TICopZHJv
cGRvd24gYWN0aXZhdGlvblR5cGU6KFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkFjdGl2YXRp
b25UeXBlKWFjdGl2YXRpb25UeXBlCit7CisgICAgW3N1cGVyIHNob3dTdWdnZXN0aW9uc0Ryb3Bk
b3duOmRyb3Bkb3duIGFjdGl2YXRpb25UeXBlOmFjdGl2YXRpb25UeXBlXTsKKworICAgIF9zdWdn
ZXN0aW9uc1ZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbW1dLRGF0YUxpc3RTdWdnZXN0aW9uc1Zp
ZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aFN0eWxlOlVJVGFibGVWaWV3U3R5bGVQbGFpbl0p
OworICAgIFtfc3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlciBzZXRDb250cm9sOnNlbGZdOworICAg
IFtfc3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlciByZWxvYWREYXRhXTsKKyAgICBbW3NlbGYudmll
dyBfZm9ybUlucHV0U2Vzc2lvbl0gc2V0U3VnZ2VzdGlvbnM6W3NlbGYgdGV4dFN1Z2dlc3Rpb25z
XV07CisKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdu
b3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKKyAgICBbX3BvcG92ZXIg
c2V0UG9wb3ZlckNvbnRyb2xsZXI6W1tbVUlQb3BvdmVyQ29udHJvbGxlciBhbGxvY10gaW5pdFdp
dGhDb250ZW50Vmlld0NvbnRyb2xsZXI6X3N1Z2dlc3Rpb25zVmlld0NvbnRyb2xsZXIuZ2V0KCld
IGF1dG9yZWxlYXNlXV07CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisKKyAgICBbX3Bv
cG92ZXIgcHJlc2VudFBvcG92ZXJBbmltYXRlZDpOT107Cit9CisKKy0gKHZvaWQpaW52YWxpZGF0
ZQoreworICAgIFtfc3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlciBzZXRDb250cm9sOm5pbF07Cit9
CisKKy0gKHZvaWQpZGlkU2VsZWN0T3B0aW9uQXRJbmRleDooTlNJbnRlZ2VyKWluZGV4Cit7Cisg
ICAgW3N1cGVyIGRpZFNlbGVjdE9wdGlvbkF0SW5kZXg6aW5kZXhdOworICAgIFtbX3BvcG92ZXIg
cG9wb3ZlckNvbnRyb2xsZXJdIGRpc21pc3NQb3BvdmVyQW5pbWF0ZWQ6WUVTXTsKKyAgICBbW3Nl
bGYudmlldyBfZm9ybUlucHV0U2Vzc2lvbl0gc2V0U3VnZ2VzdGlvbnM6QFtbV0tEYXRhTGlzdFRl
eHRTdWdnZXN0aW9uIHRleHRTdWdnZXN0aW9uV2l0aElucHV0VGV4dDpbc2VsZiBzdWdnZXN0aW9u
QXRJbmRleDppbmRleF1dXV07Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLRGF0YUxp
c3RTdWdnZXN0aW9uc1ZpZXdDb250cm9sbGVyCisKKy0gKHZvaWQpcmVsb2FkRGF0YQoreworICAg
IFtzZWxmLnRhYmxlVmlldyByZWxvYWREYXRhXTsKKyAgICBbc2VsZiBzZXRQcmVmZXJyZWRDb250
ZW50U2l6ZTpDR1NpemVNYWtlKHN1Z2dlc3Rpb25zUG9wb3ZlcldpZHRoLCBtYXhWaXNpYmxlU3Vn
Z2VzdGlvbnMgKiBzdWdnZXN0aW9uc1BvcG92ZXJDZWxsSGVpZ2h0ICsgc3VnZ2VzdGlvbnNQb3Bv
dmVyQ2VsbEhlaWdodCAvIDIpXTsKK30KKworLSAoTlNJbnRlZ2VyKXRhYmxlVmlldzooVUlUYWJs
ZVZpZXcgKil0YWJsZVZpZXcgbnVtYmVyT2ZSb3dzSW5TZWN0aW9uOihOU0ludGVnZXIpc2VjdGlv
bgoreworICAgIHJldHVybiBbc2VsZi5jb250cm9sIHN1Z2dlc3Rpb25zQ291bnRdOworfQorCist
IChVSVRhYmxlVmlld0NlbGwgKil0YWJsZVZpZXc6KFVJVGFibGVWaWV3ICopdGFibGVWaWV3IGNl
bGxGb3JSb3dBdEluZGV4UGF0aDooTlNJbmRleFBhdGggKilpbmRleFBhdGgKK3sKKyAgICBVSVRh
YmxlVmlld0NlbGwgKmNlbGwgPSBbdGFibGVWaWV3IGRlcXVldWVSZXVzYWJsZUNlbGxXaXRoSWRl
bnRpZmllcjpzdWdnZXN0aW9uQ2VsbFJldXNlSWRlbnRpZmllcl07CisgICAgaWYgKCFjZWxsKQor
ICAgICAgICBjZWxsID0gW1tbVUlUYWJsZVZpZXdDZWxsIGFsbG9jXSBpbml0V2l0aFN0eWxlOlVJ
VGFibGVWaWV3Q2VsbFN0eWxlRGVmYXVsdCByZXVzZUlkZW50aWZpZXI6c3VnZ2VzdGlvbkNlbGxS
ZXVzZUlkZW50aWZpZXJdIGF1dG9yZWxlYXNlXTsKKworICAgIFtjZWxsLnRleHRMYWJlbCBzZXRU
ZXh0OltzZWxmLmNvbnRyb2wgc3VnZ2VzdGlvbkF0SW5kZXg6aW5kZXhQYXRoLnJvd11dOworICAg
IFtjZWxsLnRleHRMYWJlbCBzZXRMaW5lQnJlYWtNb2RlOk5TTGluZUJyZWFrQnlUcnVuY2F0aW5n
VGFpbF07CisgICAgW2NlbGwudGV4dExhYmVsIHNldFRleHRBbGlnbm1lbnQ6W3NlbGYuY29udHJv
bCB0ZXh0QWxpZ25tZW50XV07CisKKyAgICByZXR1cm4gY2VsbDsKK30KKworLSAodm9pZCl0YWJs
ZVZpZXc6KFVJVGFibGVWaWV3ICopdGFibGVWaWV3IGRpZFNlbGVjdFJvd0F0SW5kZXhQYXRoOihO
U0luZGV4UGF0aCAqKWluZGV4UGF0aAoreworICAgIFtzZWxmLmNvbnRyb2wgZGlkU2VsZWN0T3B0
aW9uQXRJbmRleDppbmRleFBhdGgucm93XTsKK30KKworQGVuZAorCisjZW5kaWYgLy8gRU5BQkxF
KERBVEFMSVNUX0VMRU1FTlQpICYmIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCBmOTBhMmY4YTc1NWQ5YjYz
ODI0NDU2NmRkZDA5NjI3MDcwM2UyMTE1Li5iZDlhNjU5NzBmOWQyZmNhMDg1NDczYTU2NjdhOTE0
ZjdhNTQ2Y2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLm1tCkBAIC00OCw2ICs0OCw3IEBACiAjaW1wb3J0ICJXS1dlYlZpZXdDb250ZW50
UHJvdmlkZXJSZWdpc3RyeS5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBv
cnQgIldlYkNvbnRleHRNZW51UHJveHkuaCIKKyNpbXBvcnQgIldlYkRhdGFMaXN0U3VnZ2VzdGlv
bnNEcm9wZG93bklPUy5oIgogI2ltcG9ydCAiV2ViRWRpdENvbW1hbmRQcm94eS5oIgogI2ltcG9y
dCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0ICJfV0tEb3dubG9hZEludGVybmFsLmgiCkBA
IC03NzUsNyArNzc2LDcgQEAgUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBQYWdlQ2xpZW50SW1wbDo6
Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2UKICNpZiBFTkFCTEUoREFU
QUxJU1RfRUxFTUVOVCkKIFJlZlB0cjxXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24+IFBh
Z2VDbGllbnRJbXBsOjpjcmVhdGVEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24oV2ViUGFnZVBy
b3h5JiBwYWdlKQogewotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBXZWJEYXRhTGlz
dFN1Z2dlc3Rpb25zRHJvcGRvd25JT1M6OmNyZWF0ZShwYWdlLCBtX2NvbnRlbnRWaWV3KTsKIH0K
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggY2M0NWM1Y2ZmMjIwZDMyNTc2NWYwYTA3MjFlMTFi
OTk4NTE0OTQ2OS4uMGVjNzkxOTA0YTM1NWVhOGI3OGQwZWI4MWEyNWUwMGUxODljZjU5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24uaApAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCAiV0tGb3JtUGVyaXBoZXJhbC5o
IgogI2ltcG9ydCAiV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLmgiCiAjaW1wb3J0ICJXS1N5
bnRoZXRpY0NsaWNrVGFwR2VzdHVyZVJlY29nbml6ZXIuaCIKKyNpbXBvcnQgIl9XS0Zvcm1JbnB1
dFNlc3Npb24uaCIKICNpbXBvcnQgPFVJS2l0L1VJVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9D
b2xvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFF1YWQuaD4KQEAgLTE0MSw2ICsxNDIsMTUg
QEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKIAogfQogCitAY2xhc3MgV0tGb2N1c2Vk
RWxlbWVudEluZm87CisKK0BpbnRlcmZhY2UgV0tGb3JtSW5wdXRTZXNzaW9uIDogTlNPYmplY3Qg
PF9XS0Zvcm1JbnB1dFNlc3Npb24+CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbnRlbnRW
aWV3OihXS0NvbnRlbnRWaWV3ICopdmlldyBmb2N1c2VkRWxlbWVudEluZm86KFdLRm9jdXNlZEVs
ZW1lbnRJbmZvICopZWxlbWVudEluZm8gcmVxdWlyZXNTdHJvbmdQYXNzd29yZEFzc2lzdGFuY2U6
KEJPT0wpcmVxdWlyZXNTdHJvbmdQYXNzd29yZEFzc2lzdGFuY2U7CistICh2b2lkKWludmFsaWRh
dGU7CisKK0BlbmQKKwogQGludGVyZmFjZSBXS0NvbnRlbnRWaWV3ICgpIHsKICAgICBSZXRhaW5Q
dHI8VUlXZWJUb3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25pemVyPiBfdG91Y2hFdmVudEdlc3R1cmVS
ZWNvZ25pemVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBlODI5ZDQ1MDEyNWYwN2M4NTIzYTczOTM2
MGE4MDE2NTY2YTFmOTY4Li5hMDRhZTlkMGZhZTc1MTE4NzE5OTdmODhkMGE0OGZjMTg1ZTYzNGQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0KQEAgLTY3LDcgKzY3LDYgQEAKICNpbXBvcnQgIl9XS0FjdGl2YXRl
ZEVsZW1lbnRJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0VsZW1lbnRBY3Rpb24uaCIKICNp
bXBvcnQgIl9XS0ZvY3VzZWRFbGVtZW50SW5mby5oIgotI2ltcG9ydCAiX1dLRm9ybUlucHV0U2Vz
c2lvbi5oIgogI2ltcG9ydCAiX1dLSW5wdXREZWxlZ2F0ZS5oIgogI2ltcG9ydCA8Q29yZVRleHQv
Q1RGb250Lmg+CiAjaW1wb3J0IDxDb3JlVGV4dC9DVEZvbnREZXNjcmlwdG9yLmg+CkBAIC0yODMs
MTMgKzI4Miw2IEBAIGNvbnN0IENHRmxvYXQgbWluaW11bVRhcEhpZ2hsaWdodFJhZGl1cyA9IDIu
MDsKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uOihjb25z
dCBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiYpaW5mb3JtYXRpb24gaXNVc2VySW5pdGlhdGVkOihC
T09MKWlzVXNlckluaXRpYXRlZCB1c2VyT2JqZWN0OihOU09iamVjdCA8TlNTZWN1cmVDb2Rpbmc+
ICopdXNlck9iamVjdDsKIEBlbmQKIAotQGludGVyZmFjZSBXS0Zvcm1JbnB1dFNlc3Npb24gOiBO
U09iamVjdCA8X1dLRm9ybUlucHV0U2Vzc2lvbj4KLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
Q29udGVudFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3IGZvY3VzZWRFbGVtZW50SW5mbzooV0tG
b2N1c2VkRWxlbWVudEluZm8gKillbGVtZW50SW5mbyByZXF1aXJlc1N0cm9uZ1Bhc3N3b3JkQXNz
aXN0YW5jZTooQk9PTClyZXF1aXJlc1N0cm9uZ1Bhc3N3b3JkQXNzaXN0YW5jZTsKLS0gKHZvaWQp
aW52YWxpZGF0ZTsKLQotQGVuZAotCiBAaW1wbGVtZW50YXRpb24gV0tGb3JtSW5wdXRTZXNzaW9u
IHsKICAgICBXZWFrT2JqQ1B0cjxXS0NvbnRlbnRWaWV3PiBfY29udGVudFZpZXc7CiAgICAgUmV0
YWluUHRyPFdLRm9jdXNlZEVsZW1lbnRJbmZvPiBfZm9jdXNlZEVsZW1lbnRJbmZvOwpAQCAtMzkx
LDYgKzM4MywxNSBAQCBjb25zdCBDR0Zsb2F0IG1pbmltdW1UYXBIaWdobGlnaHRSYWRpdXMgPSAy
LjA7CiAKIC0gKHZvaWQpc2V0U3VnZ2VzdGlvbnM6KE5TQXJyYXk8VUlUZXh0U3VnZ2VzdGlvbiAq
PiAqKXN1Z2dlc3Rpb25zCiB7CisgICAgLy8gU3VnZ2VzdGlvbnMgdGhhdCBjb21lIGZyb20gYSA8
ZGF0YWxpc3Q+IHNob3VsZCBub3QgYmUgb3ZlcndyaXR0ZW4gYnkgb3RoZXIgY2xpZW50cy4KKyNp
ZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICBpZiAoX2NvbnRlbnRWaWV3LmdldCgpCisg
ICAgICAgICYmIFtfY29udGVudFZpZXcgYXNzaXN0ZWROb2RlSW5mb3JtYXRpb25dLmhhc1N1Z2dl
c3Rpb25zCisgICAgICAgICYmICFbc3VnZ2VzdGlvbnMuZmlyc3RPYmplY3QgaXNLaW5kT2ZDbGFz
czpOU0NsYXNzRnJvbVN0cmluZyhAIldLRGF0YUxpc3RUZXh0U3VnZ2VzdGlvbiIpXSkgeworICAg
ICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICAgICBpZCA8VUlUZXh0SW5wdXRTdWdnZXN0
aW9uRGVsZWdhdGU+IHN1Z2dlc3Rpb25EZWxlZ2F0ZSA9IChpZCA8VUlUZXh0SW5wdXRTdWdnZXN0
aW9uRGVsZWdhdGU+KVtfY29udGVudFZpZXcgaW5wdXREZWxlZ2F0ZV07CiAgICAgX3N1Z2dlc3Rp
b25zID0gYWRvcHROUyhbc3VnZ2VzdGlvbnMgY29weV0pOwogICAgIFtzdWdnZXN0aW9uRGVsZWdh
dGUgc2V0U3VnZ2VzdGlvbnM6c3VnZ2VzdGlvbnNdOwpAQCAtNTk0LDYgKzU5NSwxMSBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgaGFzQXNzaXN0ZWROb2RlKFdlYktpdDo6QXNzaXN0ZWROb2RlSW5mb3Jt
YXRpb24gYXNzaXN0ZWROb2RlSQogICAgIHJldHVybiAoYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24u
ZWxlbWVudFR5cGUgIT0gSW5wdXRUeXBlOjpOb25lKTsKIH0KIAorLSAoV0tGb3JtSW5wdXRTZXNz
aW9uICopX2Zvcm1JbnB1dFNlc3Npb24KK3sKKyAgICByZXR1cm4gX2Zvcm1JbnB1dFNlc3Npb24u
Z2V0KCk7Cit9CisKIC0gKHZvaWQpX2NyZWF0ZUFuZENvbmZpZ3VyZURvdWJsZVRhcEdlc3R1cmVS
ZWNvZ25pemVyCiB7CiAgICAgX2RvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyID0gYWRvcHROUyhb
W1VJVGFwR2VzdHVyZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnNlbGYgYWN0aW9u
OkBzZWxlY3RvcihfZG91YmxlVGFwUmVjb2duaXplZDopXSk7CkBAIC05OTQsNiArMTAwMCw5IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBoYXNBc3Npc3RlZE5vZGUoV2ViS2l0OjpBc3Npc3RlZE5vZGVJ
bmZvcm1hdGlvbiBhc3Npc3RlZE5vZGVJCiAgICAgaWYgKCFfd2ViVmlldy0+X2FjdGl2ZUZvY3Vz
ZWRTdGF0ZVJldGFpbkNvdW50KSB7CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gY29tcGxldGUgdGhl
IGVkaXRpbmcgb3BlcmF0aW9uIGJlZm9yZSB3ZSBibHVyIHRoZSBlbGVtZW50LgogICAgICAgICBb
X2lucHV0UGVyaXBoZXJhbCBlbmRFZGl0aW5nXTsKKyAgICAgICAgaWYgKFtbX2Zvcm1JbnB1dFNl
c3Npb24gY3VzdG9tSW5wdXRWaWV3XSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGVuZEVk
aXRpbmcpXSkKKyAgICAgICAgICAgIFtbX2Zvcm1JbnB1dFNlc3Npb24gY3VzdG9tSW5wdXRWaWV3
XSBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKGVuZEVkaXRpbmcpXTsKKwogICAgICAgICBfcGFn
ZS0+Ymx1ckFzc2lzdGVkTm9kZSgpOwogICAgIH0KIApAQCAtMTczOCw2ICsxNzQ3LDExIEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBpc1NhbWVQYWlyKFVJR2VzdHVyZVJlY29nbml6ZXIgKmEsIFVJR2Vz
dHVyZVJlY29nbml6ZXIgKmIsIFVJCiAgICAgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoREFUQUxJ
U1RfRUxFTUVOVCkKKyAgICBpZiAoX3Bvc2l0aW9uSW5mb3JtYXRpb24ucHJldmVudFRleHRJbnRl
cmFjdGlvbikKKyAgICAgICAgcmV0dXJuIE5POworI2VuZGlmCisKICAgICAvLyBJZiB3ZSdyZSBj
dXJyZW50bHkgZWRpdGluZyBhbiBhc3Npc3RlZCBub2RlLCBvbmx5IGFsbG93IHRoZSBzZWxlY3Rp
b24gdG8gbW92ZSB3aXRoaW4gdGhhdCBhc3Npc3RlZCBub2RlLgogICAgIGlmIChzZWxmLmlzQXNz
aXN0aW5nTm9kZSkKICAgICAgICAgcmV0dXJuIF9wb3NpdGlvbkluZm9ybWF0aW9uLm5vZGVBdFBv
c2l0aW9uSXNBc3Npc3RlZE5vZGU7CkBAIC0zMDk4LDYgKzMxMTIsOSBAQCBzdGF0aWMgdm9pZCBz
ZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoKFdLQ29udGVudFZpZXcgKnZpZXcsIGNvbnN0IFdlYkNv
cmU6OkludFBvaQogCiAtICh2b2lkKWFjY2Vzc29yeVRhYjooQk9PTClpc05leHQKIHsKKyAgICBp
ZiAoW1tfZm9ybUlucHV0U2Vzc2lvbiBjdXN0b21JbnB1dFZpZXddIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoZW5kRWRpdGluZyldKQorICAgICAgICBbW19mb3JtSW5wdXRTZXNzaW9uIGN1
c3RvbUlucHV0Vmlld10gcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihlbmRFZGl0aW5nKV07CisK
ICAgICBbX2lucHV0UGVyaXBoZXJhbCBlbmRFZGl0aW5nXTsKICAgICBfaW5wdXRQZXJpcGhlcmFs
ID0gbmlsOwogCkBAIC0zMTA4LDcgKzMxMjUsNiBAQCBzdGF0aWMgdm9pZCBzZWxlY3Rpb25DaGFu
Z2VkV2l0aFRvdWNoKFdLQ29udGVudFZpZXcgKnZpZXcsIGNvbnN0IFdlYkNvcmU6OkludFBvaQog
ICAgICAgICBbdmlldyBlbmRTZWxlY3Rpb25DaGFuZ2VdOwogICAgICAgICBbdmlldyByZWxvYWRJ
bnB1dFZpZXdzXTsKICAgICB9KTsKLQogfQogCiAtICh2b2lkKV9iZWNvbWVGaXJzdFJlc3BvbmRl
cldpdGhTZWxlY3Rpb25Nb3ZpbmdGb3J3YXJkOihCT09MKXNlbGVjdGluZ0ZvcndhcmQgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgZGlkQmVjb21lRmlyc3RSZXNwb25kZXIpKWNvbXBs
ZXRpb25IYW5kbGVyCkBAIC0zMjA3LDYgKzMyMjMsMTIgQEAgc3RhdGljIHZvaWQgc2VsZWN0aW9u
Q2hhbmdlZFdpdGhUb3VjaChXS0NvbnRlbnRWaWV3ICp2aWV3LCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2kKICAgICAgICAgX3BhZ2UtPmF1dG9maWxsTG9naW5DcmVkZW50aWFscyhbKFVJVGV4dEF1dG9m
aWxsU3VnZ2VzdGlvbiAqKXRleHRTdWdnZXN0aW9uIHVzZXJuYW1lXSwgWyhVSVRleHRBdXRvZmls
bFN1Z2dlc3Rpb24gKil0ZXh0U3VnZ2VzdGlvbiBwYXNzd29yZF0pOwogICAgICAgICByZXR1cm47
CiAgICAgfQorI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIGlmIChbdGV4dFN1Z2dl
c3Rpb24gaXNLaW5kT2ZDbGFzczpOU0NsYXNzRnJvbVN0cmluZyhAIldLRGF0YUxpc3RUZXh0U3Vn
Z2VzdGlvbiIpXSkgeworICAgICAgICBfcGFnZS0+c2V0QXNzaXN0ZWROb2RlVmFsdWUoW3RleHRT
dWdnZXN0aW9uIGlucHV0VGV4dF0pOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCiAg
ICAgaWQgPF9XS0lucHV0RGVsZWdhdGU+IGlucHV0RGVsZWdhdGUgPSBbX3dlYlZpZXcgX2lucHV0
RGVsZWdhdGVdOwogICAgIGlmIChbaW5wdXREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKF93ZWJWaWV3Omluc2VydFRleHRTdWdnZXN0aW9uOmluSW5wdXRTZXNzaW9uOildKQog
ICAgICAgICBbaW5wdXREZWxlZ2F0ZSBfd2ViVmlldzpfd2ViVmlldyBpbnNlcnRUZXh0U3VnZ2Vz
dGlvbjp0ZXh0U3VnZ2VzdGlvbiBpbklucHV0U2Vzc2lvbjpfZm9ybUlucHV0U2Vzc2lvbi5nZXQo
KV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA2YmQ5OGJhNDYwMmNmZjEyOWMyNDE4N2ZjM2QyZGQ2NjQyMTk3ZGE0Li5mNDY2NjBmMjcz
NTBhZDYxNzBiNDE5MzFmY2U2NDFmZDM1YjA4NGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxNzAsNiArMjE3MCw4IEBACiAJCUU1
NDhFQkQxMjEwMTVGMEUwMEJFM0MzMiAvKiBXS0Zvcm1Db2xvclBpY2tlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTU0OEVCQ0YyMTAxNUYwRTAwQkUz
QzMyIC8qIFdLRm9ybUNvbG9yUGlja2VyLmggKi87IH07CiAJCUU1NDhFQkQyMjEwMTVGMEUwMEJF
M0MzMiAvKiBXS0Zvcm1Db2xvclBpY2tlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEU1NDhFQkQwMjEwMTVGMEUwMEJFM0MzMiAvKiBXS0Zvcm1Db2xv
clBpY2tlci5tbSAqLzsgfTsKIAkJRTU0QTE0Q0YyMEZDRkI3QjAwN0UxM0Q4IC8qIFdlYkRhdGFM
aXN0U3VnZ2VzdGlvbnNEcm9wZG93bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFNTRBMTRDRTIwRkNGQjdCMDA3RTEzRDggLyogV2ViRGF0YUxpc3RT
dWdnZXN0aW9uc0Ryb3Bkb3duLmNwcCAqLzsgfTsKKwkJRTU0OENDMTEyMEM3MzIxQjAwRjc2MTE5
IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTU0OENDMEYyMEM3MzIxQjAwRjc2MTE5IC8q
IFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5oICovOyB9OworCQlFNTQ4Q0MxMjIw
QzczMjFCMDBGNzYxMTkgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTU0OENDMTAyMEM3
MzIxQjAwRjc2MTE5IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5tbSAqLzsg
fTsKIAkJRTU2OEI5MUYyMEEzQUIyRjAwRTNDODU2IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNE
cm9wZG93bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTU2OEI5MUUyMEEzQUIyRjAwRTNDODU2IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93
bi5oICovOyB9OwogCQlFNTY4QjkyMjIwQTNBQzZBMDBFM0M4NTYgLyogV2ViRGF0YUxpc3RTdWdn
ZXN0aW9uc0Ryb3Bkb3duTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNTY4QjkyMDIwQTNBQzZBMDBFM0M4NTYgLyogV2ViRGF0YUxpc3RTdWdnZXN0
aW9uc0Ryb3Bkb3duTWFjLmggKi87IH07CiAJCUU1NjhCOTIzMjBBM0FDNkEwMEUzQzg1NiAvKiBX
ZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNTY4QjkyMTIwQTNBQzZBMDBFM0M4NTYgLyogV2Vi
RGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tICovOyB9OwpAQCAtNDk3NSw2ICs0OTc3
LDggQEAKIAkJRTU0OEVCQ0YyMTAxNUYwRTAwQkUzQzMyIC8qIFdLRm9ybUNvbG9yUGlja2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFdLRm9ybUNvbG9yUGlja2VyLmg7IHBhdGggPSBpb3MvZm9ybXMvV0tG
b3JtQ29sb3JQaWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTU0OEVCRDAy
MTAxNUYwRTAwQkUzQzMyIC8qIFdLRm9ybUNvbG9yUGlja2VyLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gV0tGb3JtQ29sb3JQaWNrZXIubW07IHBhdGggPSBpb3MvZm9ybXMvV0tGb3JtQ29sb3JQ
aWNrZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU1NEExNENFMjBGQ0ZCN0Iw
MDdFMTNEOCAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTU0OENDMEYyMEM3MzIxQjAwRjc2MTE5IC8qIFdlYkRhdGFMaXN0
U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEYXRhTGlzdFN1Z2dl
c3Rpb25zRHJvcGRvd25JT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTU0OEND
MTAyMEM3MzIxQjAwRjc2MTE5IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklP
Uy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTU2OEI5MUUyMEEzQUIyRjAwRTND
ODU2IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTU2OEI5MjAyMEEzQUM2QTAwRTNDODU2IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNE
cm9wZG93bk1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRv
d25NYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTU2OEI5MjEyMEEzQUM2QTAw
RTNDODU2IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjI1Nyw2ICs2MjYxLDggQEAKIAkJCQkyREFGMDZENTE4
QkQxQTQ3MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbSAqLywKIAkJ
CQkyREE5NDRBOTE4ODRFOUJBMDBFRDg2REIgLyogVGV4dENoZWNrZXJJT1MubW0gKi8sCiAJCQkJ
MkRGOTU5MzQxOEE0MjQxMjAwOTc4NUExIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbSAq
LywKKwkJCQlFNTQ4Q0MwRjIwQzczMjFCMDBGNzYxMTkgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9u
c0Ryb3Bkb3duSU9TLmggKi8sCisJCQkJRTU0OENDMTAyMEM3MzIxQjAwRjc2MTE5IC8qIFdlYkRh
dGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5tbSAqLywKIAkJCQkyRDNFRjQ0MTE5MTc2NDYz
MDAwMzQxODQgLyogV2ViTWVtb3J5UHJlc3N1cmVIYW5kbGVySU9TLmggKi8sCiAJCQkJMkQzRUY0
NDAxOTE3NjQ2MzAwMDM0MTg0IC8qIFdlYk1lbW9yeVByZXNzdXJlSGFuZGxlcklPUy5tbSAqLywK
IAkJCQkyREE5NDRBQjE4ODRFOUJBMDBFRDg2REIgLyogV2ViUGFnZVByb3h5SU9TLm1tICovLApA
QCAtOTc3OCw2ICs5Nzg0LDcgQEAKIAkJCQkxQUE4M0Y2RDFBNUI2M0ZGMDAwMjZFQzYgLyogV2Vi
RGF0YWJhc2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTUyQ0Y1NTIyMEEzNUMzQTAw
REFEQTI3IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTU2OEI5MUYyMEEzQUIyRjAwRTNDODU2IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9w
ZG93bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTU0OENDMTEyMEM3MzIxQjAwRjc2MTE5IC8qIFdl
YkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTU2
OEI5MjIyMEEzQUM2QTAwRTNDODU2IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1h
Yy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QxOUEyNkUxQTEzRTgzNDAwOEQ2NTBFIC8qIFdlYkRp
YWdub3N0aWNMb2dnaW5nQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTVCMUM1NTE4OTg3
RURGMDA0RkNGOUIgLyogV2ViRG9jdW1lbnRMb2FkZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTE3
MDUsNiArMTE3MTIsNyBAQAogCQkJCTFBQTgzRjZDMUE1QjYzRkYwMDAyNkVDNiAvKiBXZWJEYXRh
YmFzZVByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU1MkNGNTUzMjBBMzVDM0EwMERB
REEyNyAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTU0QTE0Q0YyMEZDRkI3QjAwN0UxM0Q4IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9w
ZG93bi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFNTQ4Q0MxMjIwQzczMjFCMDBGNzYxMTkgLyog
V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTU2OEI5MjMyMEEzQUM2QTAwRTNDODU2IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93
bk1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEMTlBMjZEMUExM0U4MkEwMDhENjUwRSAvKiBX
ZWJEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTVCMUM1
NDE4OTg3RURGMDA0RkNGOUIgLyogV2ViRG9jdW1lbnRMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDgy
ZmZmNDk0OGQyOGM2YTZjOGIyNTU2OGJjNTg5NTA4Yzk2MDNhMzcuLmFmNmI4YzI4ODVkZjYyMTNj
ZTIxNGJkMTNiZWViMzExMTZjMDc0YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zNTk5LDcgKzM1OTksOCBAQCB2b2lkIFdlYlBhZ2U6OmRp
ZFNlbGVjdERhdGFMaXN0T3B0aW9uKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRPcHRpb24pCiAKIHZv
aWQgV2ViUGFnZTo6ZGlkQ2xvc2VTdWdnZXN0aW9ucygpCiB7Ci0gICAgbV9hY3RpdmVEYXRhTGlz
dFN1Z2dlc3Rpb25QaWNrZXItPmRpZENsb3NlU3VnZ2VzdGlvbnMoKTsKKyAgICBpZiAobV9hY3Rp
dmVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIpCisgICAgICAgIG1fYWN0aXZlRGF0YUxpc3RTdWdn
ZXN0aW9uUGlja2VyLT5kaWRDbG9zZVN1Z2dlc3Rpb25zKCk7CiAgICAgbV9hY3RpdmVEYXRhTGlz
dFN1Z2dlc3Rpb25QaWNrZXIgPSBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDI2MTg2ZmI5ODcwZTE3
ZTQ1MDU2YmNhMDM5MmJhYWY0ODViZmZmNjEuLjMxODlkOThlYTJlOTM4OGNkZGQ4Zjk1Y2UzM2Yx
NTA2ZDg1OTIyMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yMTkyLDYgKzIxOTIsMTggQEAgdm9pZCBXZWJQYWdlOjpn
ZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0
JiByZXF1ZXMKICAgICAgICAgfQogICAgIH0KIAorICAgIC8vIFByZXZlbnQgdGhlIGNhbGxvdXQg
YmFyIGZyb20gc2hvd2luZyB3aGVuIHRhcHBpbmcgb24gdGhlIGRhdGFsaXN0IGJ1dHRvbi4KKyNp
ZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4o
KmhpdE5vZGUpKSB7CisgICAgICAgIGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gZG93
bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKmhpdE5vZGUpOworICAgICAgICBpZiAoaW5wdXQubGlz
dCgpKSB7CisgICAgICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1fcGFnZS0+bWFpbkZy
YW1lKCkuZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQocmVxdWVzdC5wb2ludCwg
SGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSk7CisgICAg
ICAgICAgICBpZiAocmVzdWx0LmlubmVyTm9kZSgpID09IGlucHV0LmRhdGFMaXN0QnV0dG9uRWxl
bWVudCgpKQorICAgICAgICAgICAgICAgIGluZm8ucHJldmVudFRleHRJbnRlcmFjdGlvbiA9IHRy
dWU7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNU
SU9OKQogICAgIGluZm8uaGFzU2VsZWN0aW9uQXRQb3NpdGlvbiA9IG1fcGFnZS0+aGFzU2VsZWN0
aW9uQXRQb3NpdGlvbihhZGp1c3RlZFBvaW50KTsKICNlbmRpZgpAQCAtMjQ1OSw2ICsyNDcxLDkg
QEAgdm9pZCBXZWJQYWdlOjpnZXRBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbihBc3Npc3RlZE5vZGVJ
bmZvcm1hdGlvbiYgaW5mb3JtYXRpb24pCiAgICAgICAgIH0KICNlbmRpZgogCisjaWYgRU5BQkxF
KERBVEFMSVNUX0VMRU1FTlQpCisgICAgICAgIGluZm9ybWF0aW9uLmhhc1N1Z2dlc3Rpb25zID0g
ISFlbGVtZW50Lmxpc3QoKTsKKyNlbmRpZgogICAgICAgICBpbmZvcm1hdGlvbi5pc1JlYWRPbmx5
ID0gZWxlbWVudC5pc1JlYWRPbmx5KCk7CiAgICAgICAgIGluZm9ybWF0aW9uLnZhbHVlID0gZWxl
bWVudC52YWx1ZSgpOwogICAgICAgICBpbmZvcm1hdGlvbi52YWx1ZUFzTnVtYmVyID0gZWxlbWVu
dC52YWx1ZUFzTnVtYmVyKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347869</attachid>
            <date>2018-08-22 16:17:48 -0700</date>
            <delta_ts>2018-08-24 16:34:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186714-20180822161747.patch</filename>
            <type>text/plain</type>
            <size>47274</size>
            <attacher name="Aditya Keerthi">pxlcoder</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1MTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMThkYjVkMDg1YTU3M2E2
YWM5ZWZmZDhkZDI1ZTNmOWNkNGY2M2ViNy4uODc0ZmUzMjgwZjQ3NjQwOTUzYzAzNjhmMWI0NDlh
ZmZhOWY0NDI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE4LTA4LTIyICBBZGl0
eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KKworICAgICAgICBbRGF0YWxpc3RdW2lP
U10gQWRkIHN1Z2dlc3Rpb25zIFVJIGZvciBUZXh0RmllbGRJbnB1dFR5cGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY3MTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPbiBpT1MsIHRoZSBkYXRhbGlz
dCBidXR0b24gc2hvdWxkIGFwcGVhciBhcyBhIGRvd253YXJkIHRyaWFuZ2xlLiBGdXJ0aGVybW9y
ZSwgdGhlCisgICAgICAgIGJ1dHRvbiBzaG91bGQgb25seSBiZSBkaXNwbGF5ZWQgaWYgdGhlIGlu
cHV0IGhhcyBmb2N1cyBhbmQgdGhlcmUgYXJlIHN1Z2dlc3RlZAorICAgICAgICB2YWx1ZXMuCisK
KyAgICAgICAgKiBjc3MvaHRtbC5jc3M6CisgICAgICAgIChpbnB1dDo6LXdlYmtpdC1saXN0LWJ1
dHRvbik6IERyYXcgdGhlIHRyaWFuZ2xlIHVzaW5nIGFuIFNWRy4KKyAgICAgICAgKiBodG1sL0Rh
dGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uLmg6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRF
bGVtZW50Lmg6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOiBBZGRlZCBs
b2dpYyB0byBzaG93IGFuZCBoaWRlIHRoZSBkYXRhbGlzdCBidXR0b24gYXMgbmVjZXNzYXJ5Lgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5kbGVGb2N1c0V2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6aGFuZGxlQmx1ckV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6ZGlkU2V0VmFsdWVCeVVzZXJF
ZGl0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6bGlzdEF0dHJpYnV0
ZVRhcmdldENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpk
aXNwbGF5U3VnZ2VzdGlvbnMpOgorCiAyMDE4LTA4LTIyICBSb2IgQnVpcyAgPHJidWlzQGlnYWxp
YS5jb20+CiAKICAgICAgICAgRmV0Y2g6IFN0b3AgY2hlY2tpbmcgUmVxdWVzdC5pbnRlZ3JpdHkn
cyB2YWx1ZSBpbiBuby1jb3JzIG1vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzI4NjA2MjBhNDcyYTkwNjE4NWVk
OGRkMjIyOWU0ZTk5YjdjNzY4MC4uYTVjM2NjNTE0OTlhYmExY2M2ODNiN2ZlODZjMmE5NWYxNzRj
NWVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5NyBAQAorMjAxOC0wOC0yMiAgQWRpdHlhIEtlZXJ0
aGkgIDxha2VlcnRoaUBhcHBsZS5jb20+CisKKyAgICAgICAgW0RhdGFsaXN0XVtpT1NdIEFkZCBz
dWdnZXN0aW9ucyBVSSBmb3IgVGV4dEZpZWxkSW5wdXRUeXBlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2NzE0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT24gaU9TLCB3ZSBoYXZlIGxlc3Mgc3BhY2Ug
ZGlzcGxheSBzdWdnZXN0aW9ucyBmcm9tIGEgZGF0YWxpc3QgZWxlbWVudCBjb21wYXJlZCB0bwor
ICAgICAgICBtYWNPUy4gRnVydGhlcm1vcmUsIGlQaG9uZXMgYW5kIGlQYWRzIGhhdmUgZGlmZmVy
ZW50IGZvcm0gZmFjdG9ycywgbGVhZGluZyB0byBhCisgICAgICAgIGRpZmZlcmVudCBhcHByb2Fj
aCBvbiBlYWNoIGRldmljZS4gVGhlIGNvbW1vbmFsaXRpZXMgb2YgdGhlIHR3byBpbXBsZW1lbnRh
dGlvbnMKKyAgICAgICAgY2FuIGJlIGZvdW5kIGluIFdLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRy
b2wuIFRoaXMgY2xhc3MgaXMgc3ViY2xhc3NlZCBieSB0aGUKKyAgICAgICAgZGV2aWNlIHNwZWNp
ZmljIGltcGxlbWVudGF0aW9ucy4KKworICAgICAgICBPbiBpUGhvbmUsIHdlIGRpc3BsYXkgdGhl
IHN1Z2dlc3Rpb25zIGluIGEgVUlQaWNrZXJWaWV3LiBUaGlzIHZpZXcgaXMgYWNjZXNzaWJsZQor
ICAgICAgICBvbmx5IGFmdGVyIHRhcHBpbmcgb24gdGhlIGRhdGFsaXN0IGJ1dHRvbiBlbGVtZW50
IHRvIHRoZSBzaWRlIG9mIHRoZSBpbnB1dCBmaWVsZC4KKyAgICAgICAgVGhpcyBhcHByb2FjaCB3
YXMgY2hvc2VuIGluIG9yZGVyIHRvIGF2b2lkIHRyaWNraW5nIHRoZSB1c2VyIGludG8gdGhpbmtp
bmcgdGhhdAorICAgICAgICB0aGUgdmFsdWVzIGRpc3BsYXllZCBpbiB0aGUgcGlja2VyIGFyZSB0
aGUgb25seSBhY2NlcHRlZCB2YWx1ZXMuCisgICAgICAgIFdLRGF0YUxpc3RTdWdnZXN0aW9uc1Bp
Y2tlciBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIGludGVyZmFjZSBzaG93biBvbgor
ICAgICAgICBpUGhvbmVzLgorCisgICAgICAgIE9uIGlQYWQsIHdlIGRpc3BsYXkgdGhlIHN1Z2dl
c3Rpb25zIGluIGEgcG9wb3ZlciwgdGhhdCBpcyB2aXNpYmxlIGFsb25nc2lkZSB0aGUKKyAgICAg
ICAga2V5Ym9hcmQuIFRoZSBzdWdnZXN0aW9ucyBpbiB0aGUgcG9wb3ZlciB1cGRhdGUgYXMgdGhl
IHVzZXIgdHlwZXMuCisgICAgICAgIFdLRGF0YUxpc3RTdWdnZXN0aW9uc1BvcG92ZXIgaXMgcmVz
cG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSBpbnRlcmZhY2Ugc2hvd24gb24KKyAgICAgICAgaVBh
ZHMuCisKKyAgICAgICAgQm90aCBkZXZpY2VzIGRpc3BsYXkgcHJlZGljdGl2ZSB0ZXh0IHN1Z2dl
c3Rpb25zLCB0YWtpbmcgdGhlIGZpcnN0IHRocmVlIHZhbHVlcworICAgICAgICBmcm9tIHRoZSBm
aWx0ZXJlZCBzdWdnZXN0aW9ucyBsaXN0LiBJbiBvcmRlciB0byBwcmV2ZW50IG90aGVyIGNsaWVu
dHMgZnJvbQorICAgICAgICBvdmVyd3JpdGluZyB0aGUgc3VnZ2VzdGlvbnMgcHJvdmlkZWQgYnkg
dGhlIGRhdGFsaXN0IGVsZW1lbnQsIHdlIHByZXZlbnQgd3JpdGluZworICAgICAgICB0byB0aGUg
cHJlZGljdGl2ZSB0ZXh0IGJhciBpZiBhbiBpbnB1dCB3aXRoIHRoZSBsaXN0IGF0dHJpYnV0ZSBp
cyB0aGUgY3VycmVudGx5CisgICAgICAgIGFzc2lzdGVkIG5vZGUuCisKKyAgICAgICAgKiBTaGFy
ZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpBc3Npc3Rl
ZE5vZGVJbmZvcm1hdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6QXNzaXN0
ZWROb2RlSW5mb3JtYXRpb246OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0Fzc2lzdGVkTm9k
ZUluZm9ybWF0aW9uLmg6CisgICAgICAgICogU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0
aW9uQXRQb3NpdGlvbi5oOgorICAgICAgICAqIFNoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb24ubW06CisgICAgICAgIChXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRp
b25BdFBvc2l0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpJbnRlcmFjdGlv
bkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
RGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW06IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1M6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUzo6fldlYkRh
dGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUyk6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFM
aXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUzo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3du
SU9TKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9T
OjpzaG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3du
SU9TOjpoYW5kbGVLZXlkb3duV2l0aElkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJE
YXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1M6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TOjpkaWRTZWxlY3RPcHRpb24pOgorICAg
ICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sIGluaXRXaXRoSW5mb3JtYXRpb246
aW5WaWV3Ol0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sIHVwZGF0
ZVdpdGhJbmZvcm1hdGlvbjpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29u
dHJvbCBzaG93U3VnZ2VzdGlvbnNEcm9wZG93bjphY3RpdmF0aW9uVHlwZTpdKToKKyAgICAgICAg
KC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbCBkaWRTZWxlY3RPcHRpb25BdEluZGV4Ol0p
OgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sIGludmFsaWRhdGVdKToK
KyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbCB0ZXh0U3VnZ2VzdGlvbnNd
KToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbCBzdWdnZXN0aW9uc0Nv
dW50XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2wgc3VnZ2VzdGlv
bkF0SW5kZXg6XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2wgdGV4
dEFsaWdubWVudF0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQaWNrZXIgaW5p
dFdpdGhJbmZvcm1hdGlvbjppblZpZXc6XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0
aW9uc1BpY2tlciB1cGRhdGVXaXRoSW5mb3JtYXRpb246XSk6CisgICAgICAgICgtW1dLRGF0YUxp
c3RTdWdnZXN0aW9uc1BpY2tlciBzaG93U3VnZ2VzdGlvbnNEcm9wZG93bjphY3RpdmF0aW9uVHlw
ZTpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUGlja2VyIG51bWJlck9mQ29t
cG9uZW50c0luUGlja2VyVmlldzpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25z
UGlja2VyIHBpY2tlclZpZXc6bnVtYmVyT2ZSb3dzSW5Db21wb25lbnQ6XSk6CisgICAgICAgICgt
W1dLRGF0YUxpc3RTdWdnZXN0aW9uc1BpY2tlciBwaWNrZXJWaWV3OnRpdGxlRm9yUm93OmZvckNv
bXBvbmVudDpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUGlja2VyIGludmFs
aWRhdGVdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUGlja2VyVmlldyBlbmRF
ZGl0aW5nXSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc1BvcG92ZXIgaW5pdFdp
dGhJbmZvcm1hdGlvbjppblZpZXc6XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9u
c1BvcG92ZXIgdXBkYXRlV2l0aEluZm9ybWF0aW9uOl0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0
U3VnZ2VzdGlvbnNQb3BvdmVyIHNob3dTdWdnZXN0aW9uc0Ryb3Bkb3duOmFjdGl2YXRpb25UeXBl
Ol0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQb3BvdmVyIGludmFsaWRhdGVd
KToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUG9wb3ZlciBkaWRTZWxlY3RPcHRp
b25BdEluZGV4Ol0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNWaWV3Q29udHJv
bGxlciByZWxvYWREYXRhXSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc1ZpZXdD
b250cm9sbGVyIHRhYmxlVmlldzpudW1iZXJPZlJvd3NJblNlY3Rpb246XSk6CisgICAgICAgICgt
W1dLRGF0YUxpc3RTdWdnZXN0aW9uc1ZpZXdDb250cm9sbGVyIHRhYmxlVmlldzpjZWxsRm9yUm93
QXRJbmRleFBhdGg6XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc1ZpZXdDb250
cm9sbGVyIHRhYmxlVmlldzpkaWRTZWxlY3RSb3dBdEluZGV4UGF0aDpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpwYWdlRGlkU2Nyb2xsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRGF0YUxpc3RT
dWdnZXN0aW9uc0Ryb3Bkb3duKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0Zvcm1JbnB1dFNlc3Npb24gZW5kRWRpdGluZ10p
OgorICAgICAgICAoLVtXS0Zvcm1JbnB1dFNlc3Npb24gc2V0U3VnZ2VzdGlvbnM6XSk6CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgX2Zvcm1JbnB1dFNlc3Npb25dKToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyByZXNpZ25GaXJzdFJlc3BvbmRlckZvcldlYlZpZXddKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyB0ZXh0SW50ZXJhY3Rpb25HZXN0dXJlOnNob3VsZEJlZ2luQXRQb2ludDpd
KToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBhY2Nlc3NvcnlUYWI6XSk6CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgaW5zZXJ0VGV4dFN1Z2dlc3Rpb246XSk6CisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRDbG9zZVN1Z2dlc3Rp
b25zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFBvc2l0aW9uSW5mb3JtYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbik6CisKIDIwMTgt
MDgtMjIgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIENsZWFu
dXA6IEFkZCB0eXBlIGFsaWFzIGZvciBzcGVsbCBkb2N1bWVudCB0YWcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9odG1sLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9odG1sLmNzcwpp
bmRleCBlNmIxODllMGVjYTE4MDg2NjMxZDQ4MGYyMWExZDM2ZWZiOTY4M2JiLi4wOWQ3NzRkODNm
NTQ5ZWMwNTI1OGIwNDJhOTE4ODRkZDlhMGJlMTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvaHRtbC5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL2h0bWwuY3NzCkBAIC02MjYs
NyArNjI2LDE0IEBAIGlucHV0Ojotd2Via2l0LWxpc3QtYnV0dG9uIHsKICAgICBmbGV4OiBub25l
OwogICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgd2lkdGg6IDE2cHg7CisjaWYg
ZGVmaW5lZChXVEZfUExBVEZPUk1fSU9TKSAmJiBXVEZfUExBVEZPUk1fSU9TCisgICAgY29udGVu
dDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHN0cm9rZT0iYmxhY2siIGZpbGw9ImJsYWNrIiB3aWR0aD0iMTYiIGhlaWdodD0i
MTYiPjxwb2x5Z29uIHBvaW50cz0iOCAxMS4wMzEsIDQuNSA0Ljk2OSwgMTEuNSA0Ljk2OSIvPjwv
c3ZnPicpOworICAgIC8qIE1ha2UgaXQgZWFzaWVyIHRvIGhpdCB0aGUgYnV0dG9uIG9uIGlPUyAq
LworICAgIHBhZGRpbmc6IDdweDsKKyAgICBtYXJnaW46IC03cHg7CisjZWxzZQogICAgIGhlaWdo
dDogMTAwJTsKKyNlbmRpZgogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24uaAppbmRleCA4YzQ0OWVmOTk5NGM2MDNj
YzRmNWVjOGE1YWQ5OTM5NTBhMDU1OWZlLi41Nzk0NTFhNTk4MzJmZGRmZmM5Yjk4ZjQwY2Q5NTk1
NTY4Y2VmYzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGFMaXN0U3VnZ2Vz
dGlvbkluZm9ybWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRhTGlzdFN1Z2dl
c3Rpb25JbmZvcm1hdGlvbi5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpZiBFTkFCTEUo
REFUQUxJU1RfRUxFTUVOVCkKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmgKaW5kZXggZTMyYjM4OTNlYjRhYzc5NmM2NmUwOGMxYmRhN2YzZTQ3
MjllYzhkMy4uNGNlODliMTYwMDNlZTVlZmI5OGEwYzhmN2MzZTM5MDgzYTIwNGEyOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTE1MSw3ICsxNTEsNyBAQCBwdWJs
aWM6CiAgICAgSFRNTEVsZW1lbnQqIHBsYWNlaG9sZGVyRWxlbWVudCgpIGNvbnN0IGZpbmFsOwog
ICAgIFdFQkNPUkVfRVhQT1JUIEhUTUxFbGVtZW50KiBhdXRvRmlsbEJ1dHRvbkVsZW1lbnQoKSBj
b25zdDsKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLSAgICBIVE1MRWxlbWVudCogZGF0
YUxpc3RCdXR0b25FbGVtZW50KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgSFRNTEVsZW1l
bnQqIGRhdGFMaXN0QnV0dG9uRWxlbWVudCgpIGNvbnN0OwogI2VuZGlmCiAKICAgICBib29sIGNo
ZWNrZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2hlY2tlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCmluZGV4IDEzYzMxYmE2MWFhMmFjY2YzMjBlNjNkMjBh
MTMxNGQwNDg1ZmZmYmIuLjkyOTM3MDg3OTM5NGM2NzQxYzljY2QwMWZkNzk2NTM4NDA2NTZiNDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKQEAgLTI2MCw4
ICsyNjAsMTMgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmhhbmRsZUZvY3VzRXZlbnQoTm9k
ZSogb2xkRm9jdXNlZE5vZGUsIEZvY3VzRGlyZWN0aW9uKQogewogICAgIEFTU0VSVChlbGVtZW50
KCkpOwogICAgIEFTU0VSVF9VTlVTRUQob2xkRm9jdXNlZE5vZGUsIG9sZEZvY3VzZWROb2RlICE9
IGVsZW1lbnQoKSk7Ci0gICAgaWYgKFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBlbGVtZW50KCktPmRv
Y3VtZW50KCkuZnJhbWUoKSkKKyAgICBpZiAoUmVmUHRyPEZyYW1lPiBmcmFtZSA9IGVsZW1lbnQo
KS0+ZG9jdW1lbnQoKS5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50ZXh0Rmll
bGREaWRCZWdpbkVkaXRpbmcoZWxlbWVudCgpKTsKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVO
VCkgJiYgUExBVEZPUk0oSU9TKQorICAgICAgICBpZiAoZWxlbWVudCgpLT5saXN0KCkgJiYgbV9k
YXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yKQorICAgICAgICAgICAgbV9kYXRhTGlzdERyb3Bkb3du
SW5kaWNhdG9yLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSwgc3Vn
Z2VzdGlvbnMoKS5zaXplKCkgPyBDU1NWYWx1ZUJsb2NrIDogQ1NTVmFsdWVOb25lLCB0cnVlKTsK
KyNlbmRpZgorICAgIH0KIH0KIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmhhbmRsZUJsdXJF
dmVudCgpCkBAIC0yNjksNiArMjc0LDEwIEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5k
bGVCbHVyRXZlbnQoKQogICAgIElucHV0VHlwZTo6aGFuZGxlQmx1ckV2ZW50KCk7CiAgICAgQVNT
RVJUKGVsZW1lbnQoKSk7CiAgICAgZWxlbWVudCgpLT5lbmRFZGl0aW5nKCk7CisjaWYgRU5BQkxF
KERBVEFMSVNUX0VMRU1FTlQpICYmIFBMQVRGT1JNKElPUykKKyAgICBpZiAoZWxlbWVudCgpLT5s
aXN0KCkgJiYgbV9kYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yKQorICAgICAgICBtX2RhdGFMaXN0
RHJvcGRvd25JbmRpY2F0b3ItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlEaXNw
bGF5LCBDU1NWYWx1ZU5vbmUsIHRydWUpOworI2VuZGlmCiB9CiAKIGJvb2wgVGV4dEZpZWxkSW5w
dXRUeXBlOjpzaG91bGRTdWJtaXRJbXBsaWNpdGx5KEV2ZW50JiBldmVudCkKQEAgLTY0OCw2ICs2
NTcsMTAgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmRpZFNldFZhbHVlQnlVc2VyRWRpdCgp
CiAgICAgaWYgKFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBlbGVtZW50KCktPmRvY3VtZW50KCkuZnJh
bWUoKSkKICAgICAgICAgZnJhbWUtPmVkaXRvcigpLnRleHREaWRDaGFuZ2VJblRleHRGaWVsZChl
bGVtZW50KCkpOwogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorI2lmIFBMQVRGT1JNKElP
UykKKyAgICBpZiAoZWxlbWVudCgpLT5saXN0KCkgJiYgbV9kYXRhTGlzdERyb3Bkb3duSW5kaWNh
dG9yKQorICAgICAgICBtX2RhdGFMaXN0RHJvcGRvd25JbmRpY2F0b3ItPnNldElubGluZVN0eWxl
UHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBzdWdnZXN0aW9ucygpLnNpemUoKSA/IENTU1Zh
bHVlQmxvY2sgOiBDU1NWYWx1ZU5vbmUsIHRydWUpOworI2VuZGlmCiAgICAgaWYgKGVsZW1lbnQo
KS0+bGlzdCgpKQogICAgICAgICBkaXNwbGF5U3VnZ2VzdGlvbnMoRGF0YUxpc3RTdWdnZXN0aW9u
QWN0aXZhdGlvblR5cGU6OlRleHRDaGFuZ2VkKTsKICNlbmRpZgpAQCAtODAyLDcgKzgxNSw5IEBA
IHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpsaXN0QXR0cmlidXRlVGFyZ2V0Q2hhbmdlZCgpCiAg
ICAgaWYgKCFtX2RhdGFMaXN0RHJvcGRvd25JbmRpY2F0b3IpCiAgICAgICAgIHJldHVybjsKIAor
I2lmICFQTEFURk9STShJT1MpCiAgICAgbV9kYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yLT5zZXRJ
bmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSwgZWxlbWVudCgpLT5saXN0KCkg
PyBDU1NWYWx1ZUJsb2NrIDogQ1NTVmFsdWVOb25lLCB0cnVlKTsKKyNlbmRpZgogfQogCiBIVE1M
RWxlbWVudCogVGV4dEZpZWxkSW5wdXRUeXBlOjpkYXRhTGlzdEJ1dHRvbkVsZW1lbnQoKSBjb25z
dApAQCAtODU5LDcgKzg3NCwxMiBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6ZGlzcGxheVN1
Z2dlc3Rpb25zKERhdGFMaXN0U3VnZ2VzdGlvbkFjdGl2YXRpb25UeXBlIHR5cAogICAgIGlmIChl
bGVtZW50KCktPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpIHx8ICFlbGVtZW50KCktPnJlbmRlcmVy
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghVXNlckdlc3R1cmVJbmRpY2F0b3I6OnBy
b2Nlc3NpbmdVc2VyR2VzdHVyZSgpKQorICAgIGJvb2wgdXNlckFjdGl2YXRlZCA9IFVzZXJHZXN0
dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKTsKKyNpZiBQTEFURk9STShJT1Mp
CisgICAgdXNlckFjdGl2YXRlZCB8PSAodHlwZSA9PSBEYXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0
aW9uVHlwZTo6VGV4dENoYW5nZWQpOworI2VuZGlmCisKKyAgICBpZiAoIXVzZXJBY3RpdmF0ZWQp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9zdWdnZXN0aW9uUGlja2VyICYmIHN1Z2dl
c3Rpb25zKCkuc2l6ZSgpID4gMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fz
c2lzdGVkTm9kZUluZm9ybWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lzdGVk
Tm9kZUluZm9ybWF0aW9uLmNwcAppbmRleCA3OWFkYjY4MGZlNDcxMjFkMTI5ZjkyNDFkN2U2NmFm
YjJhYmVkMGQ1Li42Yjc4MDE5MWI1M2VjMzBmNzk0NzE4Y2Q2OGI5MjAwYjE4OGZiOGMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uY3BwCkBA
IC05Niw5ICs5NiwxMiBAQCB2b2lkIEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uOjplbmNvZGUoSVBD
OjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbGFiZWw7CiAgICAgZW5j
b2RlciA8PCBhcmlhTGFiZWw7CiAgICAgZW5jb2RlciA8PCBhc3Npc3RlZE5vZGVJZGVudGlmaWVy
OwotI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKSAmJiBFTkFCTEUoREFUQUxJU1RfRUxFTUVO
VCkKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICBlbmNvZGVyIDw8IGhhc1N1Z2dl
c3Rpb25zOworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogICAgIGVuY29kZXIgPDwgc3Vn
Z2VzdGVkQ29sb3JzOwogI2VuZGlmCisjZW5kaWYKIH0KIAogYm9vbCBBc3Npc3RlZE5vZGVJbmZv
cm1hdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgQXNzaXN0ZWROb2RlSW5mb3Jt
YXRpb24mIHJlc3VsdCkKQEAgLTIwMiw5ICsyMDUsMTQgQEAgYm9vbCBBc3Npc3RlZE5vZGVJbmZv
cm1hdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgQXNzaXN0ZWROb2RlSW5mb3Jt
YXQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5hc3Npc3RlZE5vZGVJZGVudGlmaWVy
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1Ip
ICYmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5U
KQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lmhhc1N1Z2dlc3Rpb25zKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc3VnZ2VzdGVkQ29sb3JzKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOworI2VuZGlmCiAjZW5kaWYKIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmgKaW5kZXggMWU3YWFjNzdiMDA4
MTk0ZDE5NDE4NDA0MTE2Y2VhMjRhMWNlMzFmZC4uYzM3MTczMWZhZTg4N2RhYTc1MzhiNDFkYjQ5
YjcxZjUyYWVkNGMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWRO
b2RlSW5mb3JtYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5vZGVJ
bmZvcm1hdGlvbi5oCkBAIC0xMjMsOCArMTIzLDExIEBAIHN0cnVjdCBBc3Npc3RlZE5vZGVJbmZv
cm1hdGlvbiB7CiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyOwogICAgIFN0cmluZyBsYWJlbDsKICAg
ICBTdHJpbmcgYXJpYUxhYmVsOwotI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKSAmJiBFTkFC
TEUoREFUQUxJU1RfRUxFTUVOVCkKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICBi
b29sIGhhc1N1Z2dlc3Rpb25zIHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xP
UikKICAgICBWZWN0b3I8V2ViQ29yZTo6Q29sb3I+IHN1Z2dlc3RlZENvbG9yczsKKyNlbmRpZgog
I2VuZGlmCiAKICAgICB1aW50NjRfdCBhc3Npc3RlZE5vZGVJZGVudGlmaWVyIHsgMCB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25B
dFBvc2l0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb24uaAppbmRleCA5Yjk1MzNlMDcyZGE4MGRjM2RkYmMxYmQwMWM1MWIyNzBj
YjNmMjljLi4zZDA4Njg5ZmUxNzZkZDdhNjE3MmExMzdjMDU4M2RjZWE3MzcyZjYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9z
aXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb24uaApAQCAtNTUsNiArNTUsOSBAQCBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZv
cm1hdGlvbkF0UG9zaXRpb24gewogICAgIGJvb2wgaXNFbGVtZW50IHsgZmFsc2UgfTsKICNpZiBF
TkFCTEUoREFUQV9ERVRFQ1RJT04pCiAgICAgYm9vbCBpc0RhdGFEZXRlY3RvckxpbmsgeyBmYWxz
ZSB9OworI2VuZGlmCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgYm9vbCBwcmV2
ZW50VGV4dEludGVyYWN0aW9uIHsgZmFsc2UgfTsKICNlbmRpZgogICAgIFdlYkNvcmU6OkZsb2F0
UG9pbnQgYWRqdXN0ZWRQb2ludEZvck5vZGVSZXNwb25kaW5nVG9DbGlja0V2ZW50czsKICAgICBX
ZWJDb3JlOjpVUkwgdXJsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0lu
dGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
aW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tCmluZGV4IGNhZjNiM2U1Nzg5
Mjg0MjhlNzQ2NjEzMzU2N2U1NmE1MWQyOGYxY2QuLmEzOWFmMjIyNTgyYWE2NTdjMjdlZGUwNjlj
NWMzNmUyNWJiNjFhZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRl
cmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW0KQEAgLTgyLDYgKzgyLDkg
QEAgdm9pZCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6ZW5jb2RlKElQQzo6RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKICAgICAgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgcmVpbnRl
cnByZXRfY2FzdDxDRkRhdGFSZWY+KGFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhKSk7CiAgICAg
fQogI2VuZGlmCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgZW5jb2RlciA8PCBw
cmV2ZW50VGV4dEludGVyYWN0aW9uOworI2VuZGlmCiB9CiAKIGJvb2wgSW50ZXJhY3Rpb25JbmZv
cm1hdGlvbkF0UG9zaXRpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJiByZXN1bHQpCkBAIC0xODYsNiArMTg5LDExIEBAIGJv
b2wgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246OmRlY29kZShJUEM6OkRlY29kZXIm
IGRlY29kZXIsIEludGVyYWN0aW9uCiAgICAgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoREFUQUxJ
U1RfRUxFTUVOVCkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wcmV2ZW50VGV4dElu
dGVyYWN0aW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRGF0YUxp
c3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJE
YXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzdmNjcyNWVhYjcz
MDgwMDBkYzQ3NmU0Yzc3YzVjMjUwYzQwMTg0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLmgKQEAgLTAs
MCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKERBVEFM
SVNUX0VMRU1FTlQpICYmIFBMQVRGT1JNKElPUykKKworI2ltcG9ydCAiV2ViRGF0YUxpc3RTdWdn
ZXN0aW9uc0Ryb3Bkb3duLmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKworT0JKQ19DTEFTUyBXS0NvbnRlbnRWaWV3OworT0JKQ19DTEFTUyBX
S0RhdGFMaXN0VGV4dFN1Z2dlc3Rpb247CitPQkpDX0NMQVNTIFdLRGF0YUxpc3RTdWdnZXN0aW9u
c0NvbnRyb2w7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJEYXRhTGlzdFN1Z2dl
c3Rpb25zRHJvcGRvd25JT1MgOiBwdWJsaWMgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3du
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93
bklPUz4gY3JlYXRlKFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bjo6Q2xpZW50JiwgV0tD
b250ZW50VmlldyAqKTsKKyAgICB+V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TKCk7
CisKKyAgICB2b2lkIGRpZFNlbGVjdE9wdGlvbihTdHJpbmcmKTsKKworcHJpdmF0ZToKKyAgICBX
ZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MoV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ry
b3Bkb3duOjpDbGllbnQmLCBXS0NvbnRlbnRWaWV3ICopOworCisgICAgdm9pZCBzaG93KFdlYkNv
cmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uJiYpIGZpbmFsOworICAgIHZvaWQgaGFu
ZGxlS2V5ZG93bldpdGhJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQg
Y2xvc2UoKSBmaW5hbDsKKworICAgIFdLQ29udGVudFZpZXcgKm1fY29udGVudFZpZXc7CisgICAg
UmV0YWluUHRyPFdLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2w+IG1fc3VnZ2VzdGlvbnNDb250
cm9sOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoREFU
QUxJU1RfRUxFTUVOVCkgJiYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmFmYmJkODE2MzQ4NmZmZjVjMzJhYzRmZmFhYmI4M2UxODlmNzUxYmYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJEYXRhTGlzdFN1Z2dlc3Rp
b25zRHJvcGRvd25JT1MubW0KQEAgLTAsMCArMSwzNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9T
LmgiCisKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkgJiYgUExBVEZPUk0oSU9TKQorCisj
aW1wb3J0ICJVSUtpdFNQSS5oIgorI2ltcG9ydCAiV0tDb250ZW50Vmlldy5oIgorI2ltcG9ydCAi
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgiCisjaW1wb3J0ICJXS0Zvcm1Qb3BvdmVyLmgiCisj
aW1wb3J0ICJfV0tGb3JtSW5wdXRTZXNzaW9uLmgiCisKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IG1h
eFZpc2libGVTdWdnZXN0aW9ucyA9IDU7CitzdGF0aWMgY29uc3QgQ0dGbG9hdCBzdWdnZXN0aW9u
c1BvcG92ZXJDZWxsSGVpZ2h0ID0gNDQ7CitzdGF0aWMgY29uc3QgQ0dGbG9hdCBzdWdnZXN0aW9u
c1BvcG92ZXJXaWR0aCA9IDMyMDsKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHN1Z2dlc3Rpb25D
ZWxsUmV1c2VJZGVudGlmaWVyID0gQCJXS0RhdGFMaXN0U3VnZ2VzdGlvbkNlbGwiOworCitAaW50
ZXJmYWNlIFdLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2wgOiBOU09iamVjdCB7CisgICAgV2Vi
S2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MqIF9kcm9wZG93bjsKKyAgICBW
ZWN0b3I8U3RyaW5nPiBfc3VnZ2VzdGlvbnM7Cit9CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3
ZWFrKSBXS0NvbnRlbnRWaWV3ICp2aWV3OworCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJbmZv
cm1hdGlvbjooV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24mJilpbmZvcm1h
dGlvbiBpblZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3OworLSAodm9pZCl1cGRhdGVXaXRoSW5m
b3JtYXRpb246KFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uJiYpaW5mb3Jt
YXRpb247CistICh2b2lkKXNob3dTdWdnZXN0aW9uc0Ryb3Bkb3duOihXZWJLaXQ6OldlYkRhdGFM
aXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUyAqKWRyb3Bkb3duIGFjdGl2YXRpb25UeXBlOihXZWJD
b3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9uVHlwZSlhY3RpdmF0aW9uVHlwZTsKKy0g
KHZvaWQpZGlkU2VsZWN0T3B0aW9uQXRJbmRleDooTlNJbnRlZ2VyKWluZGV4OworLSAodm9pZClp
bnZhbGlkYXRlOworCistIChOU0FycmF5PFdLRGF0YUxpc3RUZXh0U3VnZ2VzdGlvbiAqPiAqKXRl
eHRTdWdnZXN0aW9uczsKKy0gKE5TSW50ZWdlcilzdWdnZXN0aW9uc0NvdW50OworLSAoU3RyaW5n
KXN1Z2dlc3Rpb25BdEluZGV4OihOU0ludGVnZXIpaW5kZXg7CistIChOU1RleHRBbGlnbm1lbnQp
dGV4dEFsaWdubWVudDsKK0BlbmQKKworQGludGVyZmFjZSBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQ
aWNrZXIgOiBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sIDxVSVBpY2tlclZpZXdEYXRhU291
cmNlLCBVSVBpY2tlclZpZXdEZWxlZ2F0ZT4KK0BlbmQKKworQGludGVyZmFjZSBXS0RhdGFMaXN0
U3VnZ2VzdGlvbnNQaWNrZXJWaWV3IDogVUlQaWNrZXJWaWV3CitAcHJvcGVydHkgKG5vbmF0b21p
Yywgd2VhaykgV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbCAqY29udHJvbDsKKworLSAodm9p
ZCllbmRFZGl0aW5nOworQGVuZAorCitAaW50ZXJmYWNlIFdLRGF0YUxpc3RTdWdnZXN0aW9uc1Bv
cG92ZXIgOiBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sCitAZW5kCisKK0BpbnRlcmZhY2Ug
V0tEYXRhTGlzdFN1Z2dlc3Rpb25zVmlld0NvbnRyb2xsZXIgOiBVSVRhYmxlVmlld0NvbnRyb2xs
ZXIKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250
cm9sICpjb250cm9sOworCistICh2b2lkKXJlbG9hZERhdGE7CitAZW5kCisKK0BpbnRlcmZhY2Ug
V0tEYXRhTGlzdFRleHRTdWdnZXN0aW9uIDogVUlUZXh0U3VnZ2VzdGlvbgorQGVuZAorCitAaW1w
bGVtZW50YXRpb24gV0tEYXRhTGlzdFRleHRTdWdnZXN0aW9uCitAZW5kCisKKyNwcmFnbWEgbWFy
ayAtIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUworCituYW1lc3BhY2UgV2ViS2l0
IHsKKworUmVmPFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUz4gV2ViRGF0YUxpc3RT
dWdnZXN0aW9uc0Ryb3Bkb3duSU9TOjpjcmVhdGUoV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bk
b3duOjpDbGllbnQmIGNsaWVudCwgV0tDb250ZW50VmlldyAqdmlldykKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MoY2xpZW50LCB2
aWV3KSk7Cit9CisKK1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUzo6fldlYkRhdGFM
aXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUygpIHsgfQorCitXZWJEYXRhTGlzdFN1Z2dlc3Rpb25z
RHJvcGRvd25JT1M6OldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUyhXZWJEYXRhTGlz
dFN1Z2dlc3Rpb25zRHJvcGRvd246OkNsaWVudCYgY2xpZW50LCBXS0NvbnRlbnRWaWV3ICp2aWV3
KQorICAgIDogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duKGNsaWVudCkKKyAgICAsIG1f
Y29udGVudFZpZXcodmlldykKK3sKK30KKwordm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJv
cGRvd25JT1M6OnNob3coV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24mJiBp
bmZvcm1hdGlvbikKK3sKKyAgICBpZiAobV9zdWdnZXN0aW9uc0NvbnRyb2wpIHsKKyAgICAgICAg
W21fc3VnZ2VzdGlvbnNDb250cm9sIHVwZGF0ZVdpdGhJbmZvcm1hdGlvbjpXVEZNb3ZlKGluZm9y
bWF0aW9uKV07CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoY3VycmVudFVzZXJJ
bnRlcmZhY2VJZGlvbUlzUGFkKCkpCisgICAgICAgIG1fc3VnZ2VzdGlvbnNDb250cm9sID0gYWRv
cHROUyhbW1dLRGF0YUxpc3RTdWdnZXN0aW9uc1BvcG92ZXIgYWxsb2NdIGluaXRXaXRoSW5mb3Jt
YXRpb246V1RGTW92ZShpbmZvcm1hdGlvbikgaW5WaWV3Om1fY29udGVudFZpZXddKTsKKyAgICBl
bHNlCisgICAgICAgIG1fc3VnZ2VzdGlvbnNDb250cm9sID0gYWRvcHROUyhbW1dLRGF0YUxpc3RT
dWdnZXN0aW9uc1BpY2tlciBhbGxvY10gaW5pdFdpdGhJbmZvcm1hdGlvbjpXVEZNb3ZlKGluZm9y
bWF0aW9uKSBpblZpZXc6bV9jb250ZW50Vmlld10pOworCisgICAgW21fc3VnZ2VzdGlvbnNDb250
cm9sIHNob3dTdWdnZXN0aW9uc0Ryb3Bkb3duOnRoaXMgYWN0aXZhdGlvblR5cGU6aW5mb3JtYXRp
b24uYWN0aXZhdGlvblR5cGVdOworfQorCit2b2lkIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9w
ZG93bklPUzo6aGFuZGxlS2V5ZG93bldpdGhJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpCit7Cit9
CisKK3ZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TOjpjbG9zZSgpCit7Cisg
ICAgW21fc3VnZ2VzdGlvbnNDb250cm9sIGludmFsaWRhdGVdOworICAgIG1fc3VnZ2VzdGlvbnND
b250cm9sID0gbmlsOworICAgIG1fY2xpZW50LT5kaWRDbG9zZVN1Z2dlc3Rpb25zKCk7Cit9CisK
K3ZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TOjpkaWRTZWxlY3RPcHRpb24o
U3RyaW5nJiBzZWxlY3RlZE9wdGlvbikKK3sKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2NsaWVudC0+ZGlkU2VsZWN0T3B0aW9uKHNlbGVjdGVkT3B0aW9uKTsK
KyAgICBjbG9zZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI3ByYWdtYSBtYXJr
IC0gV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbAorCitAaW1wbGVtZW50YXRpb24gV0tEYXRh
TGlzdFN1Z2dlc3Rpb25zQ29udHJvbAorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJbmZvcm1h
dGlvbjooV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24mJilpbmZvcm1hdGlv
biBpblZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBl
ciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfdmlldyA9IHZpZXc7CisgICAg
X3N1Z2dlc3Rpb25zID0gV1RGTW92ZShpbmZvcm1hdGlvbi5zdWdnZXN0aW9ucyk7CisKKyAgICBy
ZXR1cm4gc2VsZjsKK30KKworLSAodm9pZCl1cGRhdGVXaXRoSW5mb3JtYXRpb246KFdlYkNvcmU6
OkRhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uJiYpaW5mb3JtYXRpb24KK3sKKyAgICBfc3Vn
Z2VzdGlvbnMgPSBXVEZNb3ZlKGluZm9ybWF0aW9uLnN1Z2dlc3Rpb25zKTsKK30KKworLSAodm9p
ZClzaG93U3VnZ2VzdGlvbnNEcm9wZG93bjooV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25z
RHJvcGRvd25JT1MgKilkcm9wZG93biBhY3RpdmF0aW9uVHlwZTooV2ViQ29yZTo6RGF0YUxpc3RT
dWdnZXN0aW9uQWN0aXZhdGlvblR5cGUpYWN0aXZhdGlvblR5cGUKK3sKKyAgICBfZHJvcGRvd24g
PSBkcm9wZG93bjsKK30KKworLSAodm9pZClkaWRTZWxlY3RPcHRpb25BdEluZGV4OihOU0ludGVn
ZXIpaW5kZXgKK3sKKyAgICBfZHJvcGRvd24tPmRpZFNlbGVjdE9wdGlvbihfc3VnZ2VzdGlvbnNb
aW5kZXhdKTsKK30KKworLSAodm9pZClpbnZhbGlkYXRlCit7Cit9CisKKy0gKE5TQXJyYXk8V0tE
YXRhTGlzdFRleHRTdWdnZXN0aW9uICo+ICopdGV4dFN1Z2dlc3Rpb25zCit7CisgICAgTlNNdXRh
YmxlQXJyYXkgKnN1Z2dlc3Rpb25zID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKKworICAgIGZv
ciAoYXV0byBzdWdnZXN0aW9uIDogX3N1Z2dlc3Rpb25zKSB7CisgICAgICAgIFtzdWdnZXN0aW9u
cyBhZGRPYmplY3Q6W1dLRGF0YUxpc3RUZXh0U3VnZ2VzdGlvbiB0ZXh0U3VnZ2VzdGlvbldpdGhJ
bnB1dFRleHQ6c3VnZ2VzdGlvbl1dOworICAgICAgICBpZiAoc3VnZ2VzdGlvbnMuY291bnQgPT0g
MykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBzdWdnZXN0aW9uczsK
K30KKworLSAoTlNJbnRlZ2VyKXN1Z2dlc3Rpb25zQ291bnQKK3sKKyAgICByZXR1cm4gX3N1Z2dl
c3Rpb25zLnNpemUoKTsKK30KKworLSAoU3RyaW5nKXN1Z2dlc3Rpb25BdEluZGV4OihOU0ludGVn
ZXIpaW5kZXgKK3sKKyAgICByZXR1cm4gX3N1Z2dlc3Rpb25zW2luZGV4XTsKK30KKworLSAoTlNU
ZXh0QWxpZ25tZW50KXRleHRBbGlnbm1lbnQKK3sKKyAgICByZXR1cm4gX3ZpZXcuYXNzaXN0ZWRO
b2RlSW5mb3JtYXRpb24uaXNSVEwgPyBOU1RleHRBbGlnbm1lbnRSaWdodCA6IE5TVGV4dEFsaWdu
bWVudExlZnQ7Cit9CisKK0BlbmQKKworI3ByYWdtYSBtYXJrIC0gV0tEYXRhTGlzdFN1Z2dlc3Rp
b25zUGlja2VyCisKK0BpbXBsZW1lbnRhdGlvbiBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQaWNrZXIg
IHsKKyAgICBSZXRhaW5QdHI8V0tEYXRhTGlzdFN1Z2dlc3Rpb25zUGlja2VyVmlldz4gX3BpY2tl
clZpZXc7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEluZm9ybWF0aW9uOihXZWJDb3Jl
OjpEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbiYmKWluZm9ybWF0aW9uIGluVmlldzooV0tD
b250ZW50VmlldyAqKXZpZXcKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoSW5m
b3JtYXRpb246V1RGTW92ZShpbmZvcm1hdGlvbikgaW5WaWV3OnZpZXddKSkKKyAgICAgICAgcmV0
dXJuIG5pbDsKKworICAgIF9waWNrZXJWaWV3ID0gYWRvcHROUyhbW1dLRGF0YUxpc3RTdWdnZXN0
aW9uc1BpY2tlclZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVyb10pOworICAgIFtf
cGlja2VyVmlldyBzZXRBdXRvcmVzaXppbmdNYXNrOlVJVmlld0F1dG9yZXNpemluZ0ZsZXhpYmxl
V2lkdGggfCBVSVZpZXdBdXRvcmVzaXppbmdGbGV4aWJsZUhlaWdodF07CisgICAgW19waWNrZXJW
aWV3IHNldERhdGFTb3VyY2U6c2VsZl07CisgICAgW19waWNrZXJWaWV3IHNldERlbGVnYXRlOnNl
bGZdOworICAgIFtfcGlja2VyVmlldyBzZXRDb250cm9sOnNlbGZdOworICAgIFtfcGlja2VyVmll
dyBzZXRTaXplOltVSUtleWJvYXJkIGRlZmF1bHRTaXplRm9ySW50ZXJmYWNlT3JpZW50YXRpb246
VUlBcHAuaW50ZXJmYWNlT3JpZW50YXRpb25dXTsKKworICAgIHJldHVybiBzZWxmOworfQorCist
ICh2b2lkKXVwZGF0ZVdpdGhJbmZvcm1hdGlvbjooV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9u
SW5mb3JtYXRpb24mJilpbmZvcm1hdGlvbgoreworICAgIFtzdXBlciB1cGRhdGVXaXRoSW5mb3Jt
YXRpb246V1RGTW92ZShpbmZvcm1hdGlvbildOworICAgIGlmIChpbmZvcm1hdGlvbi5hY3RpdmF0
aW9uVHlwZSAhPSBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9uVHlwZTo6SW5k
aWNhdG9yQ2xpY2tlZCkgeworICAgICAgICBbW3NlbGYudmlldyBfZm9ybUlucHV0U2Vzc2lvbl0g
c2V0Q3VzdG9tSW5wdXRWaWV3Om5pbF07CisgICAgICAgIFtbc2VsZi52aWV3IF9mb3JtSW5wdXRT
ZXNzaW9uXSBzZXRTdWdnZXN0aW9uczpbc2VsZiB0ZXh0U3VnZ2VzdGlvbnNdXTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIFtbc2VsZi52aWV3IF9mb3JtSW5wdXRTZXNzaW9uXSBzZXRD
dXN0b21JbnB1dFZpZXc6X3BpY2tlclZpZXcuZ2V0KCldOworCisgICAgW19waWNrZXJWaWV3IHJl
bG9hZEFsbENvbXBvbmVudHNdOworICAgIFtfcGlja2VyVmlldyBzZWxlY3RSb3c6MCBpbkNvbXBv
bmVudDowIGFuaW1hdGVkOk5PXTsKK30KKworLSAodm9pZClzaG93U3VnZ2VzdGlvbnNEcm9wZG93
bjooV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MgKilkcm9wZG93biBh
Y3RpdmF0aW9uVHlwZTooV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uQWN0aXZhdGlvblR5cGUp
YWN0aXZhdGlvblR5cGUKK3sKKyAgICBbc3VwZXIgc2hvd1N1Z2dlc3Rpb25zRHJvcGRvd246ZHJv
cGRvd24gYWN0aXZhdGlvblR5cGU6YWN0aXZhdGlvblR5cGVdOworICAgIGlmIChhY3RpdmF0aW9u
VHlwZSA9PSBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9uVHlwZTo6SW5kaWNh
dG9yQ2xpY2tlZCkgeworICAgICAgICBbW3NlbGYudmlldyBfZm9ybUlucHV0U2Vzc2lvbl0gc2V0
Q3VzdG9tSW5wdXRWaWV3Ol9waWNrZXJWaWV3LmdldCgpXTsKKyAgICAgICAgW19waWNrZXJWaWV3
IHNlbGVjdFJvdzowIGluQ29tcG9uZW50OjAgYW5pbWF0ZWQ6Tk9dOworICAgIH0gZWxzZQorICAg
ICAgICBbW3NlbGYudmlldyBfZm9ybUlucHV0U2Vzc2lvbl0gc2V0U3VnZ2VzdGlvbnM6W3NlbGYg
dGV4dFN1Z2dlc3Rpb25zXV07Cit9CisKKy0gKE5TSW50ZWdlciludW1iZXJPZkNvbXBvbmVudHNJ
blBpY2tlclZpZXc6KFVJUGlja2VyVmlldyAqKXBpY2tlclZpZXcKK3sKKyAgICByZXR1cm4gMTsK
K30KKworLSAoTlNJbnRlZ2VyKXBpY2tlclZpZXc6KFVJUGlja2VyVmlldyAqKXBpY2tlclZpZXcg
bnVtYmVyT2ZSb3dzSW5Db21wb25lbnQ6KE5TSW50ZWdlciljb2x1bW5JbmRleAoreworICAgIHJl
dHVybiBbc2VsZiBzdWdnZXN0aW9uc0NvdW50XTsKK30KKworLSAoTlNTdHJpbmcgKilwaWNrZXJW
aWV3OihVSVBpY2tlclZpZXcgKilwaWNrZXJWaWV3IHRpdGxlRm9yUm93OihOU0ludGVnZXIpcm93
IGZvckNvbXBvbmVudDooTlNJbnRlZ2VyKWNvbXBvbmVudAoreworICAgIHJldHVybiBbc2VsZiBz
dWdnZXN0aW9uQXRJbmRleDpyb3ddOworfQorCistICh2b2lkKWludmFsaWRhdGUKK3sKKyAgICBp
ZiAoW1tzZWxmLnZpZXcgX2Zvcm1JbnB1dFNlc3Npb25dIGN1c3RvbUlucHV0Vmlld10gPT0gX3Bp
Y2tlclZpZXcuZ2V0KCkpCisgICAgICAgIFtbc2VsZi52aWV3IF9mb3JtSW5wdXRTZXNzaW9uXSBz
ZXRDdXN0b21JbnB1dFZpZXc6bmlsXTsKKworICAgIFtfcGlja2VyVmlldyBzZXREZWxlZ2F0ZTpu
aWxdOworICAgIFtfcGlja2VyVmlldyBzZXREYXRhU291cmNlOm5pbF07CisgICAgW19waWNrZXJW
aWV3IHNldENvbnRyb2w6bmlsXTsKK30KKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tEYXRh
TGlzdFN1Z2dlc3Rpb25zUGlja2VyVmlldworCistICh2b2lkKWVuZEVkaXRpbmcKK3sKKyAgICBb
c2VsZi5jb250cm9sIGRpZFNlbGVjdE9wdGlvbkF0SW5kZXg6W3NlbGYgc2VsZWN0ZWRSb3dJbkNv
bXBvbmVudDowXV07Cit9CisKK0BlbmQKKworI3ByYWdtYSBtYXJrIC0gV0tEYXRhTGlzdFN1Z2dl
c3Rpb25zUG9wb3ZlcgorCitAaW1wbGVtZW50YXRpb24gV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUG9w
b3ZlciAgeworICAgIFJldGFpblB0cjxXS0Zvcm1Sb3RhdGluZ0FjY2Vzc29yeVBvcG92ZXI+IF9w
b3BvdmVyOworICAgIFJldGFpblB0cjxXS0RhdGFMaXN0U3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxl
cj4gX3N1Z2dlc3Rpb25zVmlld0NvbnRyb2xsZXI7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aEluZm9ybWF0aW9uOihXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbiYm
KWluZm9ybWF0aW9uIGluVmlldzooV0tDb250ZW50VmlldyAqKXZpZXcKK3sKKyAgICBpZiAoIShz
ZWxmID0gW3N1cGVyIGluaXRXaXRoSW5mb3JtYXRpb246V1RGTW92ZShpbmZvcm1hdGlvbikgaW5W
aWV3OnZpZXddKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9wb3BvdmVyID0gYWRvcHRO
UyhbW1dLRm9ybVJvdGF0aW5nQWNjZXNzb3J5UG9wb3ZlciBhbGxvY10gaW5pdFdpdGhWaWV3OnZp
ZXddKTsKKworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKXVwZGF0ZVdpdGhJbmZvcm1h
dGlvbjooV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24mJilpbmZvcm1hdGlv
bgoreworICAgIFtzdXBlciB1cGRhdGVXaXRoSW5mb3JtYXRpb246V1RGTW92ZShpbmZvcm1hdGlv
bildOworICAgIFtfc3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlciByZWxvYWREYXRhXTsKKyAgICBb
W3NlbGYudmlldyBfZm9ybUlucHV0U2Vzc2lvbl0gc2V0U3VnZ2VzdGlvbnM6W3NlbGYgdGV4dFN1
Z2dlc3Rpb25zXV07Cit9CisKKy0gKHZvaWQpc2hvd1N1Z2dlc3Rpb25zRHJvcGRvd246KFdlYktp
dDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TICopZHJvcGRvd24gYWN0aXZhdGlv
blR5cGU6KFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkFjdGl2YXRpb25UeXBlKWFjdGl2YXRp
b25UeXBlCit7CisgICAgW3N1cGVyIHNob3dTdWdnZXN0aW9uc0Ryb3Bkb3duOmRyb3Bkb3duIGFj
dGl2YXRpb25UeXBlOmFjdGl2YXRpb25UeXBlXTsKKworICAgIF9zdWdnZXN0aW9uc1ZpZXdDb250
cm9sbGVyID0gYWRvcHROUyhbW1dLRGF0YUxpc3RTdWdnZXN0aW9uc1ZpZXdDb250cm9sbGVyIGFs
bG9jXSBpbml0V2l0aFN0eWxlOlVJVGFibGVWaWV3U3R5bGVQbGFpbl0pOworICAgIFtfc3VnZ2Vz
dGlvbnNWaWV3Q29udHJvbGxlciBzZXRDb250cm9sOnNlbGZdOworICAgIFtfc3VnZ2VzdGlvbnNW
aWV3Q29udHJvbGxlciByZWxvYWREYXRhXTsKKyAgICBbW3NlbGYudmlldyBfZm9ybUlucHV0U2Vz
c2lvbl0gc2V0U3VnZ2VzdGlvbnM6W3NlbGYgdGV4dFN1Z2dlc3Rpb25zXV07CisKKyNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAi
LVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKKyAgICBbX3BvcG92ZXIgc2V0UG9wb3ZlckNvbnRy
b2xsZXI6W1tbVUlQb3BvdmVyQ29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhDb250ZW50Vmlld0Nv
bnRyb2xsZXI6X3N1Z2dlc3Rpb25zVmlld0NvbnRyb2xsZXIuZ2V0KCldIGF1dG9yZWxlYXNlXV07
CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisKKyAgICBbX3BvcG92ZXIgcHJlc2VudFBv
cG92ZXJBbmltYXRlZDpOT107Cit9CisKKy0gKHZvaWQpaW52YWxpZGF0ZQoreworICAgIFtfc3Vn
Z2VzdGlvbnNWaWV3Q29udHJvbGxlciBzZXRDb250cm9sOm5pbF07Cit9CisKKy0gKHZvaWQpZGlk
U2VsZWN0T3B0aW9uQXRJbmRleDooTlNJbnRlZ2VyKWluZGV4Cit7CisgICAgW3N1cGVyIGRpZFNl
bGVjdE9wdGlvbkF0SW5kZXg6aW5kZXhdOworICAgIFtbX3BvcG92ZXIgcG9wb3ZlckNvbnRyb2xs
ZXJdIGRpc21pc3NQb3BvdmVyQW5pbWF0ZWQ6WUVTXTsKKyAgICBbW3NlbGYudmlldyBfZm9ybUlu
cHV0U2Vzc2lvbl0gc2V0U3VnZ2VzdGlvbnM6QFsgW1dLRGF0YUxpc3RUZXh0U3VnZ2VzdGlvbiB0
ZXh0U3VnZ2VzdGlvbldpdGhJbnB1dFRleHQ6W3NlbGYgc3VnZ2VzdGlvbkF0SW5kZXg6aW5kZXhd
XSBdXTsKK30KKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tEYXRhTGlzdFN1Z2dlc3Rpb25z
Vmlld0NvbnRyb2xsZXIKKworLSAodm9pZClyZWxvYWREYXRhCit7CisgICAgW3NlbGYudGFibGVW
aWV3IHJlbG9hZERhdGFdOworICAgIFtzZWxmIHNldFByZWZlcnJlZENvbnRlbnRTaXplOkNHU2l6
ZU1ha2Uoc3VnZ2VzdGlvbnNQb3BvdmVyV2lkdGgsIG1heFZpc2libGVTdWdnZXN0aW9ucyAqIHN1
Z2dlc3Rpb25zUG9wb3ZlckNlbGxIZWlnaHQgKyBzdWdnZXN0aW9uc1BvcG92ZXJDZWxsSGVpZ2h0
IC8gMildOworfQorCistIChOU0ludGVnZXIpdGFibGVWaWV3OihVSVRhYmxlVmlldyAqKXRhYmxl
VmlldyBudW1iZXJPZlJvd3NJblNlY3Rpb246KE5TSW50ZWdlcilzZWN0aW9uCit7CisgICAgcmV0
dXJuIFtzZWxmLmNvbnRyb2wgc3VnZ2VzdGlvbnNDb3VudF07Cit9CisKKy0gKFVJVGFibGVWaWV3
Q2VsbCAqKXRhYmxlVmlldzooVUlUYWJsZVZpZXcgKil0YWJsZVZpZXcgY2VsbEZvclJvd0F0SW5k
ZXhQYXRoOihOU0luZGV4UGF0aCAqKWluZGV4UGF0aAoreworICAgIFVJVGFibGVWaWV3Q2VsbCAq
Y2VsbCA9IFt0YWJsZVZpZXcgZGVxdWV1ZVJldXNhYmxlQ2VsbFdpdGhJZGVudGlmaWVyOnN1Z2dl
c3Rpb25DZWxsUmV1c2VJZGVudGlmaWVyXTsKKyAgICBpZiAoIWNlbGwpCisgICAgICAgIGNlbGwg
PSBbW1tVSVRhYmxlVmlld0NlbGwgYWxsb2NdIGluaXRXaXRoU3R5bGU6VUlUYWJsZVZpZXdDZWxs
U3R5bGVEZWZhdWx0IHJldXNlSWRlbnRpZmllcjpzdWdnZXN0aW9uQ2VsbFJldXNlSWRlbnRpZmll
cl0gYXV0b3JlbGVhc2VdOworCisgICAgY2VsbC50ZXh0TGFiZWwudGV4dCA9IFtzZWxmLmNvbnRy
b2wgc3VnZ2VzdGlvbkF0SW5kZXg6aW5kZXhQYXRoLnJvd107CisgICAgY2VsbC50ZXh0TGFiZWwu
bGluZUJyZWFrTW9kZSA9IE5TTGluZUJyZWFrQnlUcnVuY2F0aW5nVGFpbDsKKyAgICBjZWxsLnRl
eHRMYWJlbC50ZXh0QWxpZ25tZW50ID0gW3NlbGYuY29udHJvbCB0ZXh0QWxpZ25tZW50XTsKKwor
ICAgIHJldHVybiBjZWxsOworfQorCistICh2b2lkKXRhYmxlVmlldzooVUlUYWJsZVZpZXcgKil0
YWJsZVZpZXcgZGlkU2VsZWN0Um93QXRJbmRleFBhdGg6KE5TSW5kZXhQYXRoICopaW5kZXhQYXRo
Cit7CisgICAgW3NlbGYuY29udHJvbCBkaWRTZWxlY3RPcHRpb25BdEluZGV4OmluZGV4UGF0aC5y
b3ddOworfQorCitAZW5kCisKKyNlbmRpZiAvLyBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkgJiYg
UExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggZmY4YzQ5NzYwMmY0NjcxZDM4ZTAzNmIwMjE0ZmJkY2FiYzFhZTExNi4uYzFlYWRhZGYxYjll
N2ZiOTcyODI3N2EwNDAwZTNlNjQxNmU2YTJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC00NTkxLDcgKzQ1OTEsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnBhZ2VEaWRTY3JvbGwoKQogICAgIGlmIChtX2lzS2V5Ym9hcmRBbmltYXRpbmdJbikKICAgICAg
ICAgcmV0dXJuOwogI2VuZGlmCisKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgIGNsb3NlT3Zlcmxh
eWVkVmlld3MoKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuT3BlblBhbmVs
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0
eU9yaWdpbiwgY29uc3QgRmlsZUNob29zZXJTZXR0aW5ncyYgc2V0dGluZ3MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggMDE3NDk4
ZWFlMjBiMGNhYmUwNjE2ODE0NTJkYTIzYTM5N2MyNzVkMy4uMDA4NTMzODhiYTY2YTU0Mjk5Y2Y5
OWNjNjk1NDY4NTEyY2NiMWNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtNDgsNiArNDgsNyBAQAogI2ltcG9ydCAiV0tXZWJW
aWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFs
LmgiCiAjaW1wb3J0ICJXZWJDb250ZXh0TWVudVByb3h5LmgiCisjaW1wb3J0ICJXZWJEYXRhTGlz
dFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MuaCIKICNpbXBvcnQgIldlYkVkaXRDb21tYW5kUHJveHku
aCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCAiX1dLRG93bmxvYWRJbnRl
cm5hbC5oIgpAQCAtNzc1LDcgKzc3Niw3IEBAIFJlZlB0cjxXZWJDb2xvclBpY2tlcj4gUGFnZUNs
aWVudEltcGw6OmNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlCiAjaWYg
RU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiBSZWZQdHI8V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ry
b3Bkb3duPiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3du
KFdlYlBhZ2VQcm94eSYgcGFnZSkKIHsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4g
V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TOjpjcmVhdGUocGFnZSwgbV9jb250ZW50
Vmlldyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IGEyMjgzMGFkZmYzYzg0YjdiNWFl
NGRkZTlmYjNhNDEyYmE3NjIyZTUuLmUzZjQ1MzA0M2U5NGQ3Yjg5NzEzNDk3Y2YxZTg3OWM2MGFh
MGJjMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbXBvcnQgIldLRm9ybVBl
cmlwaGVyYWwuaCIKICNpbXBvcnQgIldLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oIgogI2lt
cG9ydCAiV0tTeW50aGV0aWNDbGlja1RhcEdlc3R1cmVSZWNvZ25pemVyLmgiCisjaW1wb3J0ICJf
V0tGb3JtSW5wdXRTZXNzaW9uLmgiCiAjaW1wb3J0IDxVSUtpdC9VSVZpZXcuaD4KICNpbXBvcnQg
PFdlYkNvcmUvQ29sb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRRdWFkLmg+CkBAIC0xNDEs
NiArMTQyLDE2IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAKIH0KIAorQGNsYXNz
IFdLRm9jdXNlZEVsZW1lbnRJbmZvOworCitAaW50ZXJmYWNlIFdLRm9ybUlucHV0U2Vzc2lvbiA6
IE5TT2JqZWN0IDxfV0tGb3JtSW5wdXRTZXNzaW9uPgorCistIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhDb250ZW50VmlldzooV0tDb250ZW50VmlldyAqKXZpZXcgZm9jdXNlZEVsZW1lbnRJbmZvOihX
S0ZvY3VzZWRFbGVtZW50SW5mbyAqKWVsZW1lbnRJbmZvIHJlcXVpcmVzU3Ryb25nUGFzc3dvcmRB
c3Npc3RhbmNlOihCT09MKXJlcXVpcmVzU3Ryb25nUGFzc3dvcmRBc3Npc3RhbmNlOworLSAodm9p
ZCllbmRFZGl0aW5nOworLSAodm9pZClpbnZhbGlkYXRlOworCitAZW5kCisKIEBpbnRlcmZhY2Ug
V0tDb250ZW50VmlldyAoKSB7CiAgICAgUmV0YWluUHRyPFVJV2ViVG91Y2hFdmVudHNHZXN0dXJl
UmVjb2duaXplcj4gX3RvdWNoRXZlbnRHZXN0dXJlUmVjb2duaXplcjsKIApAQCAtMzM0LDYgKzM0
NSw3IEBAIEZPUl9FQUNIX1dLQ09OVEVOVFZJRVdfQUNUSU9OKERFQ0xBUkVfV0tDT05URU5UVklF
V19BQ1RJT05fRk9SX1dFQl9WSUVXKQogLSAodm9pZClfYWNjZXNzaWJpbGl0eVJldHJpZXZlUmVj
dHNBdFNlbGVjdGlvbk9mZnNldDooTlNJbnRlZ2VyKW9mZnNldCB3aXRoVGV4dDooTlNTdHJpbmcg
Kil0ZXh0OwogLSAodm9pZClfYWNjZXNzaWJpbGl0eVN0b3JlU2VsZWN0aW9uOwogLSAodm9pZClf
YWNjZXNzaWJpbGl0eUNsZWFyU2VsZWN0aW9uOworLSAoV0tGb3JtSW5wdXRTZXNzaW9uICopX2Zv
cm1JbnB1dFNlc3Npb247CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV2ViS2l0
OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiBjdXJyZW50UG9zaXRpb25JbmZvcm1h
dGlvbjsKIC0gKHZvaWQpZG9BZnRlclBvc2l0aW9uSW5mb3JtYXRpb25VcGRhdGU6KHZvaWQgKF4p
KFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24pKWFjdGlvbiBmb3JSZXF1
ZXN0OihXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0KXJlcXVlc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQppbmRleCAwMDk2MDQ5OGQxNTc4NjViNTYzZWM2YTMyNjRhYzQ5ZGUxZGFhMTZlLi4w
YWQ1ZjVmMTliN2I1ZGVlNGYyNDkzMmJkMzE4OTNmNzIwOTg3ZDAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
QEAgLTY3LDcgKzY3LDYgQEAKICNpbXBvcnQgIl9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvSW50ZXJu
YWwuaCIKICNpbXBvcnQgIl9XS0VsZW1lbnRBY3Rpb24uaCIKICNpbXBvcnQgIl9XS0ZvY3VzZWRF
bGVtZW50SW5mby5oIgotI2ltcG9ydCAiX1dLRm9ybUlucHV0U2Vzc2lvbi5oIgogI2ltcG9ydCAi
X1dLSW5wdXREZWxlZ2F0ZS5oIgogI2ltcG9ydCA8Q29yZVRleHQvQ1RGb250Lmg+CiAjaW1wb3J0
IDxDb3JlVGV4dC9DVEZvbnREZXNjcmlwdG9yLmg+CkBAIC0yODMsMTMgKzI4Miw2IEBAIGNvbnN0
IENHRmxvYXQgbWluaW11bVRhcEhpZ2hsaWdodFJhZGl1cyA9IDIuMDsKIC0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uOihjb25zdCBBc3Npc3RlZE5vZGVJbmZv
cm1hdGlvbiYpaW5mb3JtYXRpb24gaXNVc2VySW5pdGlhdGVkOihCT09MKWlzVXNlckluaXRpYXRl
ZCB1c2VyT2JqZWN0OihOU09iamVjdCA8TlNTZWN1cmVDb2Rpbmc+ICopdXNlck9iamVjdDsKIEBl
bmQKIAotQGludGVyZmFjZSBXS0Zvcm1JbnB1dFNlc3Npb24gOiBOU09iamVjdCA8X1dLRm9ybUlu
cHV0U2Vzc2lvbj4KLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29udGVudFZpZXc6KFdLQ29u
dGVudFZpZXcgKil2aWV3IGZvY3VzZWRFbGVtZW50SW5mbzooV0tGb2N1c2VkRWxlbWVudEluZm8g
KillbGVtZW50SW5mbyByZXF1aXJlc1N0cm9uZ1Bhc3N3b3JkQXNzaXN0YW5jZTooQk9PTClyZXF1
aXJlc1N0cm9uZ1Bhc3N3b3JkQXNzaXN0YW5jZTsKLS0gKHZvaWQpaW52YWxpZGF0ZTsKLQotQGVu
ZAotCiBAaW1wbGVtZW50YXRpb24gV0tGb3JtSW5wdXRTZXNzaW9uIHsKICAgICBXZWFrT2JqQ1B0
cjxXS0NvbnRlbnRWaWV3PiBfY29udGVudFZpZXc7CiAgICAgUmV0YWluUHRyPFdLRm9jdXNlZEVs
ZW1lbnRJbmZvPiBfZm9jdXNlZEVsZW1lbnRJbmZvOwpAQCAtMzg0LDYgKzM3NiwxMiBAQCBjb25z
dCBDR0Zsb2F0IG1pbmltdW1UYXBIaWdobGlnaHRSYWRpdXMgPSAyLjA7CiAgICAgW19jb250ZW50
VmlldyByZWxvYWRJbnB1dFZpZXdzXTsKIH0KIAorLSAodm9pZCllbmRFZGl0aW5nCit7CisgICAg
aWYgKFtfY3VzdG9tSW5wdXRWaWV3IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZW5kRWRp
dGluZyldKQorICAgICAgICBbX2N1c3RvbUlucHV0VmlldyBwZXJmb3JtU2VsZWN0b3I6QHNlbGVj
dG9yKGVuZEVkaXRpbmcpXTsKK30KKwogLSAoTlNBcnJheTxVSVRleHRTdWdnZXN0aW9uICo+ICop
c3VnZ2VzdGlvbnMKIHsKICAgICByZXR1cm4gX3N1Z2dlc3Rpb25zLmdldCgpOwpAQCAtMzkxLDYg
KzM4OSwxNSBAQCBjb25zdCBDR0Zsb2F0IG1pbmltdW1UYXBIaWdobGlnaHRSYWRpdXMgPSAyLjA7
CiAKIC0gKHZvaWQpc2V0U3VnZ2VzdGlvbnM6KE5TQXJyYXk8VUlUZXh0U3VnZ2VzdGlvbiAqPiAq
KXN1Z2dlc3Rpb25zCiB7CisgICAgLy8gU3VnZ2VzdGlvbnMgdGhhdCBjb21lIGZyb20gYSA8ZGF0
YWxpc3Q+IHNob3VsZCBub3QgYmUgb3ZlcndyaXR0ZW4gYnkgb3RoZXIgY2xpZW50cy4KKyNpZiBF
TkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICBpZiAoX2NvbnRlbnRWaWV3LmdldCgpCisgICAg
ICAgICYmIFtfY29udGVudFZpZXcgYXNzaXN0ZWROb2RlSW5mb3JtYXRpb25dLmhhc1N1Z2dlc3Rp
b25zCisgICAgICAgICYmICFbc3VnZ2VzdGlvbnMuZmlyc3RPYmplY3QgaXNLaW5kT2ZDbGFzczpO
U0NsYXNzRnJvbVN0cmluZyhAIldLRGF0YUxpc3RUZXh0U3VnZ2VzdGlvbiIpXSkgeworICAgICAg
ICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICAgICBpZCA8VUlUZXh0SW5wdXRTdWdnZXN0aW9u
RGVsZWdhdGU+IHN1Z2dlc3Rpb25EZWxlZ2F0ZSA9IChpZCA8VUlUZXh0SW5wdXRTdWdnZXN0aW9u
RGVsZWdhdGU+KVtfY29udGVudFZpZXcgaW5wdXREZWxlZ2F0ZV07CiAgICAgX3N1Z2dlc3Rpb25z
ID0gYWRvcHROUyhbc3VnZ2VzdGlvbnMgY29weV0pOwogICAgIFtzdWdnZXN0aW9uRGVsZWdhdGUg
c2V0U3VnZ2VzdGlvbnM6c3VnZ2VzdGlvbnNdOwpAQCAtNTk0LDYgKzYwMSwxMSBAQCBzdGF0aWMg
aW5saW5lIGJvb2wgaGFzQXNzaXN0ZWROb2RlKFdlYktpdDo6QXNzaXN0ZWROb2RlSW5mb3JtYXRp
b24gYXNzaXN0ZWROb2RlSQogICAgIHJldHVybiAoYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uZWxl
bWVudFR5cGUgIT0gSW5wdXRUeXBlOjpOb25lKTsKIH0KIAorLSAoV0tGb3JtSW5wdXRTZXNzaW9u
ICopX2Zvcm1JbnB1dFNlc3Npb24KK3sKKyAgICByZXR1cm4gX2Zvcm1JbnB1dFNlc3Npb24uZ2V0
KCk7Cit9CisKIC0gKHZvaWQpX2NyZWF0ZUFuZENvbmZpZ3VyZURvdWJsZVRhcEdlc3R1cmVSZWNv
Z25pemVyCiB7CiAgICAgX2RvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyID0gYWRvcHROUyhbW1VJ
VGFwR2VzdHVyZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnNlbGYgYWN0aW9uOkBz
ZWxlY3RvcihfZG91YmxlVGFwUmVjb2duaXplZDopXSk7CkBAIC05OTQsNiArMTAwNiw4IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBoYXNBc3Npc3RlZE5vZGUoV2ViS2l0OjpBc3Npc3RlZE5vZGVJbmZv
cm1hdGlvbiBhc3Npc3RlZE5vZGVJCiAgICAgaWYgKCFfd2ViVmlldy0+X2FjdGl2ZUZvY3VzZWRT
dGF0ZVJldGFpbkNvdW50KSB7CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gY29tcGxldGUgdGhlIGVk
aXRpbmcgb3BlcmF0aW9uIGJlZm9yZSB3ZSBibHVyIHRoZSBlbGVtZW50LgogICAgICAgICBbX2lu
cHV0UGVyaXBoZXJhbCBlbmRFZGl0aW5nXTsKKyAgICAgICAgW19mb3JtSW5wdXRTZXNzaW9uIGVu
ZEVkaXRpbmddOworCiAgICAgICAgIF9wYWdlLT5ibHVyQXNzaXN0ZWROb2RlKCk7CiAgICAgfQog
CkBAIC0xNzM4LDYgKzE3NTIsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGlzU2FtZVBhaXIoVUlH
ZXN0dXJlUmVjb2duaXplciAqYSwgVUlHZXN0dXJlUmVjb2duaXplciAqYiwgVUkKICAgICB9CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIGlmIChfcG9zaXRpb25J
bmZvcm1hdGlvbi5wcmV2ZW50VGV4dEludGVyYWN0aW9uKQorICAgICAgICByZXR1cm4gTk87Cisj
ZW5kaWYKKwogICAgIC8vIElmIHdlJ3JlIGN1cnJlbnRseSBlZGl0aW5nIGFuIGFzc2lzdGVkIG5v
ZGUsIG9ubHkgYWxsb3cgdGhlIHNlbGVjdGlvbiB0byBtb3ZlIHdpdGhpbiB0aGF0IGFzc2lzdGVk
IG5vZGUuCiAgICAgaWYgKHNlbGYuaXNBc3Npc3RpbmdOb2RlKQogICAgICAgICByZXR1cm4gX3Bv
c2l0aW9uSW5mb3JtYXRpb24ubm9kZUF0UG9zaXRpb25Jc0Fzc2lzdGVkTm9kZTsKQEAgLTMwOTgs
NiArMzExNyw4IEBAIHN0YXRpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWRXaXRoVG91Y2goV0tDb250
ZW50VmlldyAqdmlldywgY29uc3QgV2ViQ29yZTo6SW50UG9pCiAKIC0gKHZvaWQpYWNjZXNzb3J5
VGFiOihCT09MKWlzTmV4dAogeworICAgIFtfZm9ybUlucHV0U2Vzc2lvbiBlbmRFZGl0aW5nXTsK
KwogICAgIFtfaW5wdXRQZXJpcGhlcmFsIGVuZEVkaXRpbmddOwogICAgIF9pbnB1dFBlcmlwaGVy
YWwgPSBuaWw7CiAKQEAgLTMxMDgsNyArMzEyOSw2IEBAIHN0YXRpYyB2b2lkIHNlbGVjdGlvbkNo
YW5nZWRXaXRoVG91Y2goV0tDb250ZW50VmlldyAqdmlldywgY29uc3QgV2ViQ29yZTo6SW50UG9p
CiAgICAgICAgIFt2aWV3IGVuZFNlbGVjdGlvbkNoYW5nZV07CiAgICAgICAgIFt2aWV3IHJlbG9h
ZElucHV0Vmlld3NdOwogICAgIH0pOwotCiB9CiAKIC0gKHZvaWQpX2JlY29tZUZpcnN0UmVzcG9u
ZGVyV2l0aFNlbGVjdGlvbk1vdmluZ0ZvcndhcmQ6KEJPT0wpc2VsZWN0aW5nRm9yd2FyZCBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCBkaWRCZWNvbWVGaXJzdFJlc3BvbmRlcikpY29t
cGxldGlvbkhhbmRsZXIKQEAgLTMyMDcsNiArMzIyNywxMiBAQCBzdGF0aWMgdm9pZCBzZWxlY3Rp
b25DaGFuZ2VkV2l0aFRvdWNoKFdLQ29udGVudFZpZXcgKnZpZXcsIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaQogICAgICAgICBfcGFnZS0+YXV0b2ZpbGxMb2dpbkNyZWRlbnRpYWxzKFsoVUlUZXh0QXV0
b2ZpbGxTdWdnZXN0aW9uICopdGV4dFN1Z2dlc3Rpb24gdXNlcm5hbWVdLCBbKFVJVGV4dEF1dG9m
aWxsU3VnZ2VzdGlvbiAqKXRleHRTdWdnZXN0aW9uIHBhc3N3b3JkXSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgaWYgKFt0ZXh0U3Vn
Z2VzdGlvbiBpc0tpbmRPZkNsYXNzOk5TQ2xhc3NGcm9tU3RyaW5nKEAiV0tEYXRhTGlzdFRleHRT
dWdnZXN0aW9uIildKSB7CisgICAgICAgIF9wYWdlLT5zZXRBc3Npc3RlZE5vZGVWYWx1ZShbdGV4
dFN1Z2dlc3Rpb24gaW5wdXRUZXh0XSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYK
ICAgICBpZCA8X1dLSW5wdXREZWxlZ2F0ZT4gaW5wdXREZWxlZ2F0ZSA9IFtfd2ViVmlldyBfaW5w
dXREZWxlZ2F0ZV07CiAgICAgaWYgKFtpbnB1dERlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoX3dlYlZpZXc6aW5zZXJ0VGV4dFN1Z2dlc3Rpb246aW5JbnB1dFNlc3Npb246KV0p
CiAgICAgICAgIFtpbnB1dERlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3IGluc2VydFRleHRTdWdn
ZXN0aW9uOnRleHRTdWdnZXN0aW9uIGluSW5wdXRTZXNzaW9uOl9mb3JtSW5wdXRTZXNzaW9uLmdl
dCgpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDYwOGVkOTViNWIxYmQ4Nzg2ZWRiMzYwZTYyOTY1YzBhMDA4YjE5NzcuLmM1ZGYzNmZj
MDhjODZlOTM3YTAxNjVlY2MxNjc2ZWMwNzkzNWQxYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjEzNyw2ICsyMTM3LDggQEAKIAkJ
RTU0OEVCRDEyMTAxNUYwRTAwQkUzQzMyIC8qIFdLRm9ybUNvbG9yUGlja2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNTQ4RUJDRjIxMDE1RjBFMDBC
RTNDMzIgLyogV0tGb3JtQ29sb3JQaWNrZXIuaCAqLzsgfTsKIAkJRTU0OEVCRDIyMTAxNUYwRTAw
QkUzQzMyIC8qIFdLRm9ybUNvbG9yUGlja2VyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTU0OEVCRDAyMTAxNUYwRTAwQkUzQzMyIC8qIFdLRm9ybUNv
bG9yUGlja2VyLm1tICovOyB9OwogCQlFNTRBMTRDRjIwRkNGQjdCMDA3RTEzRDggLyogV2ViRGF0
YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEU1NEExNENFMjBGQ0ZCN0IwMDdFMTNEOCAvKiBXZWJEYXRhTGlz
dFN1Z2dlc3Rpb25zRHJvcGRvd24uY3BwICovOyB9OworCQlFNTQ4Q0MxMTIwQzczMjFCMDBGNzYx
MTkgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNTQ4Q0MwRjIwQzczMjFCMDBGNzYxMTkg
LyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLmggKi87IH07CisJCUU1NDhDQzEy
MjBDNzMyMUIwMEY3NjExOSAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNTQ4Q0MxMDIw
QzczMjFCMDBGNzYxMTkgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tICov
OyB9OwogCQlFNTY4QjkxRjIwQTNBQjJGMDBFM0M4NTYgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9u
c0Ryb3Bkb3duLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFNTY4QjkxRTIwQTNBQjJGMDBFM0M4NTYgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bk
b3duLmggKi87IH07CiAJCUU1NjhCOTIyMjBBM0FDNkEwMEUzQzg1NiAvKiBXZWJEYXRhTGlzdFN1
Z2dlc3Rpb25zRHJvcGRvd25NYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEU1NjhCOTIwMjBBM0FDNkEwMEUzQzg1NiAvKiBXZWJEYXRhTGlzdFN1Z2dl
c3Rpb25zRHJvcGRvd25NYWMuaCAqLzsgfTsKIAkJRTU2OEI5MjMyMEEzQUM2QTAwRTNDODU2IC8q
IFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU1NjhCOTIxMjBBM0FDNkEwMEUzQzg1NiAvKiBX
ZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWMubW0gKi87IH07CkBAIC00OTQzLDYgKzQ5
NDUsOCBAQAogCQlFNTQ4RUJDRjIxMDE1RjBFMDBCRTNDMzIgLyogV0tGb3JtQ29sb3JQaWNrZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gV0tGb3JtQ29sb3JQaWNrZXIuaDsgcGF0aCA9IGlvcy9mb3Jtcy9X
S0Zvcm1Db2xvclBpY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNTQ4RUJE
MDIxMDE1RjBFMDBCRTNDMzIgLyogV0tGb3JtQ29sb3JQaWNrZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBXS0Zvcm1Db2xvclBpY2tlci5tbTsgcGF0aCA9IGlvcy9mb3Jtcy9XS0Zvcm1Db2xv
clBpY2tlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTU0QTE0Q0UyMEZDRkI3
QjAwN0UxM0Q4IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFNTQ4Q0MwRjIwQzczMjFCMDBGNzYxMTkgLyogV2ViRGF0YUxp
c3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRhdGFMaXN0U3Vn
Z2VzdGlvbnNEcm9wZG93bklPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNTQ4
Q0MxMDIwQzczMjFCMDBGNzYxMTkgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9T
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3du
SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNTY4QjkxRTIwQTNBQjJGMDBF
M0M4NTYgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFNTY4QjkyMDIwQTNBQzZBMDBFM0M4NTYgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9u
c0Ryb3Bkb3duTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9w
ZG93bk1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNTY4QjkyMTIwQTNBQzZB
MDBFM0M4NTYgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjI1LDYgKzYyMjksOCBAQAogCQkJCTJEQUYwNkQ1
MThCRDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tICovLAog
CQkJCTJEQTk0NEE5MTg4NEU5QkEwMEVEODZEQiAvKiBUZXh0Q2hlY2tlcklPUy5tbSAqLywKIAkJ
CQkyREY5NTkzNDE4QTQyNDEyMDA5Nzg1QTEgLyogVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1t
ICovLAorCQkJCUU1NDhDQzBGMjBDNzMyMUIwMEY3NjExOSAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rp
b25zRHJvcGRvd25JT1MuaCAqLywKKwkJCQlFNTQ4Q0MxMDIwQzczMjFCMDBGNzYxMTkgLyogV2Vi
RGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tICovLAogCQkJCTJEM0VGNDQxMTkxNzY0
NjMwMDAzNDE4NCAvKiBXZWJNZW1vcnlQcmVzc3VyZUhhbmRsZXJJT1MuaCAqLywKIAkJCQkyRDNF
RjQ0MDE5MTc2NDYzMDAwMzQxODQgLyogV2ViTWVtb3J5UHJlc3N1cmVIYW5kbGVySU9TLm1tICov
LAogCQkJCTJEQTk0NEFCMTg4NEU5QkEwMEVEODZEQiAvKiBXZWJQYWdlUHJveHlJT1MubW0gKi8s
CkBAIC05NzQ5LDYgKzk3NTUsNyBAQAogCQkJCTFBQTgzRjZEMUE1QjYzRkYwMDAyNkVDNiAvKiBX
ZWJEYXRhYmFzZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNTJDRjU1MjIwQTM1QzNB
MDBEQURBMjcgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFNTY4QjkxRjIwQTNBQjJGMDBFM0M4NTYgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ry
b3Bkb3duLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNTQ4Q0MxMTIwQzczMjFCMDBGNzYxMTkgLyog
V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
NTY4QjkyMjIwQTNBQzZBMDBFM0M4NTYgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3du
TWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDE5QTI2RTFBMTNFODM0MDA4RDY1MEUgLyogV2Vi
RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNUIxQzU1MTg5
ODdFREYwMDRGQ0Y5QiAvKiBXZWJEb2N1bWVudExvYWRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
MTYzMyw2ICsxMTY0MCw3IEBACiAJCQkJMUFBODNGNkMxQTVCNjNGRjAwMDI2RUM2IC8qIFdlYkRh
dGFiYXNlUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTUyQ0Y1NTMyMEEzNUMzQTAw
REFEQTI3IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlFNTRBMTRDRjIwRkNGQjdCMDA3RTEzRDggLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ry
b3Bkb3duLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUU1NDhDQzEyMjBDNzMyMUIwMEY3NjExOSAv
KiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW0gaW4gU291cmNlcyAqLywKIAkJ
CQlFNTY4QjkyMzIwQTNBQzZBMDBFM0M4NTYgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bk
b3duTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QxOUEyNkQxQTEzRTgyQTAwOEQ2NTBFIC8q
IFdlYkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNUIx
QzU0MTg5ODdFREYwMDRGQ0Y5QiAvKiBXZWJEb2N1bWVudExvYWRlci5jcHAgaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXgg
OTYyNWEyYWZjNzRjOTI1OTRjOTgwZTJhNmY5OGFlOWUwMDkyMDNiYS4uZTFkNzMxNTJmMmY4MmVk
ZGYwNTA1NGQzZmFiOGUzOGI1ZmEyM2RhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM1OTcsNyArMzU5Nyw4IEBAIHZvaWQgV2ViUGFnZTo6
ZGlkU2VsZWN0RGF0YUxpc3RPcHRpb24oY29uc3QgU3RyaW5nJiBzZWxlY3RlZE9wdGlvbikKIAog
dm9pZCBXZWJQYWdlOjpkaWRDbG9zZVN1Z2dlc3Rpb25zKCkKIHsKLSAgICBtX2FjdGl2ZURhdGFM
aXN0U3VnZ2VzdGlvblBpY2tlci0+ZGlkQ2xvc2VTdWdnZXN0aW9ucygpOworICAgIGlmIChtX2Fj
dGl2ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcikKKyAgICAgICAgbV9hY3RpdmVEYXRhTGlzdFN1
Z2dlc3Rpb25QaWNrZXItPmRpZENsb3NlU3VnZ2VzdGlvbnMoKTsKICAgICBtX2FjdGl2ZURhdGFM
aXN0U3VnZ2VzdGlvblBpY2tlciA9IG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggYjAyMzUxMzRkMDdj
MDczMWJkZmY0ODQ0ZmZhODNmZGQ3Mjc3MWVmMi4uZjRmZTZjZDk1NDNiNTYzYjA1N2YxMzNjZGRm
NTJkMGI1MTIyZTEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTIyMDgsNiArMjIwOCwxOCBAQCB2b2lkIFdlYlBhZ2U6
OmdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVl
c3QmIHJlcXVlcwogICAgICAgICB9CiAgICAgfQogCisgICAgLy8gUHJldmVudCB0aGUgY2FsbG91
dCBiYXIgZnJvbSBzaG93aW5nIHdoZW4gdGFwcGluZyBvbiB0aGUgZGF0YWxpc3QgYnV0dG9uLgor
I2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50
PigqaGl0Tm9kZSkpIHsKKyAgICAgICAgY29uc3QgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSBk
b3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqaGl0Tm9kZSk7CisgICAgICAgIGlmIChpbnB1dC5s
aXN0KCkpIHsKKyAgICAgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbV9wYWdlLT5tYWlu
RnJhbWUoKS5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChyZXF1ZXN0LnBvaW50
LCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlKTsKKyAg
ICAgICAgICAgIGlmIChyZXN1bHQuaW5uZXJOb2RlKCkgPT0gaW5wdXQuZGF0YUxpc3RCdXR0b25F
bGVtZW50KCkpCisgICAgICAgICAgICAgICAgaW5mby5wcmV2ZW50VGV4dEludGVyYWN0aW9uID0g
dHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCiAjaWYgRU5BQkxFKERBVEFfSU5URVJB
Q1RJT04pCiAgICAgaW5mby5oYXNTZWxlY3Rpb25BdFBvc2l0aW9uID0gbV9wYWdlLT5oYXNTZWxl
Y3Rpb25BdFBvc2l0aW9uKGFkanVzdGVkUG9pbnQpOwogI2VuZGlmCkBAIC0yNDc1LDYgKzI0ODcs
OSBAQCB2b2lkIFdlYlBhZ2U6OmdldEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uKEFzc2lzdGVkTm9k
ZUluZm9ybWF0aW9uJiBpbmZvcm1hdGlvbikKICAgICAgICAgfQogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICAgICAgaW5mb3JtYXRpb24uaGFzU3VnZ2VzdGlvbnMg
PSAhIWVsZW1lbnQubGlzdCgpOworI2VuZGlmCiAgICAgICAgIGluZm9ybWF0aW9uLmlzUmVhZE9u
bHkgPSBlbGVtZW50LmlzUmVhZE9ubHkoKTsKICAgICAgICAgaW5mb3JtYXRpb24udmFsdWUgPSBl
bGVtZW50LnZhbHVlKCk7CiAgICAgICAgIGluZm9ybWF0aW9uLnZhbHVlQXNOdW1iZXIgPSBlbGVt
ZW50LnZhbHVlQXNOdW1iZXIoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348054</attachid>
            <date>2018-08-24 16:34:58 -0700</date>
            <delta_ts>2018-08-24 16:36:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186714-20180824163457.patch</filename>
            <type>text/plain</type>
            <size>47492</size>
            <attacher name="Aditya Keerthi">pxlcoder</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1MzMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjAzNThjZDZlNmRkN2Zi
OWVhN2Q1ZjU4YTI1MzIwYzFjODcwMzliMi4uZDFjMGNhNmEyOGIzOWYyNTBhYjFhNjJlNGIwOWEy
MmRiODA0M2M5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE4LTA4LTI0ICBBZGl0
eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KKworICAgICAgICBbRGF0YWxpc3RdW2lP
U10gQWRkIHN1Z2dlc3Rpb25zIFVJIGZvciBUZXh0RmllbGRJbnB1dFR5cGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY3MTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPbiBpT1MsIHRoZSBkYXRhbGlz
dCBidXR0b24gc2hvdWxkIGFwcGVhciBhcyBhIGRvd253YXJkIHRyaWFuZ2xlLiBGdXJ0aGVybW9y
ZSwgdGhlCisgICAgICAgIGJ1dHRvbiBzaG91bGQgb25seSBiZSBkaXNwbGF5ZWQgaWYgdGhlIGlu
cHV0IGhhcyBmb2N1cyBhbmQgdGhlcmUgYXJlIHN1Z2dlc3RlZAorICAgICAgICB2YWx1ZXMuCisK
KyAgICAgICAgKiBjc3MvaHRtbC5jc3M6CisgICAgICAgIChpbnB1dDo6LXdlYmtpdC1saXN0LWJ1
dHRvbik6IERyYXcgdGhlIHRyaWFuZ2xlIHVzaW5nIGFuIFNWRy4KKyAgICAgICAgKiBodG1sL0Rh
dGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uLmg6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRF
bGVtZW50Lmg6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOiBBZGRlZCBs
b2dpYyB0byBzaG93IGFuZCBoaWRlIHRoZSBkYXRhbGlzdCBidXR0b24gYXMgbmVjZXNzYXJ5Lgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5kbGVGb2N1c0V2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6aGFuZGxlQmx1ckV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6ZGlkU2V0VmFsdWVCeVVzZXJF
ZGl0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6bGlzdEF0dHJpYnV0
ZVRhcmdldENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpk
aXNwbGF5U3VnZ2VzdGlvbnMpOgorCiAyMDE4LTA4LTI0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFBhc3MgaW4gSXNDb21wb3NlZCBmbGFnIHRvIEV2ZW50IGNv
bnN0cnVjdG9ycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA1MDk4MDhhYmFlNDYzMTQ2ZTNkMjUyODJiNmJmY2RjMzJl
OTk3ZTVkLi4wNThjNGI4ODBlMmNjMjIzNDA3ODYwNjI3NTQ5MTI1YzU1ZDJiZjg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDk3IEBACisyMDE4LTA4LTI0ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhp
QGFwcGxlLmNvbT4KKworICAgICAgICBbRGF0YWxpc3RdW2lPU10gQWRkIHN1Z2dlc3Rpb25zIFVJ
IGZvciBUZXh0RmllbGRJbnB1dFR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODY3MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBPbiBpT1MsIHdlIGhhdmUgbGVzcyBzcGFjZSBkaXNwbGF5IHN1Z2dl
c3Rpb25zIGZyb20gYSBkYXRhbGlzdCBlbGVtZW50IGNvbXBhcmVkIHRvCisgICAgICAgIG1hY09T
LiBGdXJ0aGVybW9yZSwgaVBob25lcyBhbmQgaVBhZHMgaGF2ZSBkaWZmZXJlbnQgZm9ybSBmYWN0
b3JzLCBsZWFkaW5nIHRvIGEKKyAgICAgICAgZGlmZmVyZW50IGFwcHJvYWNoIG9uIGVhY2ggZGV2
aWNlLiBUaGUgY29tbW9uYWxpdGllcyBvZiB0aGUgdHdvIGltcGxlbWVudGF0aW9ucworICAgICAg
ICBjYW4gYmUgZm91bmQgaW4gV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbC4gVGhpcyBjbGFz
cyBpcyBzdWJjbGFzc2VkIGJ5IHRoZQorICAgICAgICBkZXZpY2Ugc3BlY2lmaWMgaW1wbGVtZW50
YXRpb25zLgorCisgICAgICAgIE9uIGlQaG9uZSwgd2UgZGlzcGxheSB0aGUgc3VnZ2VzdGlvbnMg
aW4gYSBVSVBpY2tlclZpZXcuIFRoaXMgdmlldyBpcyBhY2Nlc3NpYmxlCisgICAgICAgIG9ubHkg
YWZ0ZXIgdGFwcGluZyBvbiB0aGUgZGF0YWxpc3QgYnV0dG9uIGVsZW1lbnQgdG8gdGhlIHNpZGUg
b2YgdGhlIGlucHV0IGZpZWxkLgorICAgICAgICBUaGlzIGFwcHJvYWNoIHdhcyBjaG9zZW4gaW4g
b3JkZXIgdG8gYXZvaWQgdHJpY2tpbmcgdGhlIHVzZXIgaW50byB0aGlua2luZyB0aGF0CisgICAg
ICAgIHRoZSB2YWx1ZXMgZGlzcGxheWVkIGluIHRoZSBwaWNrZXIgYXJlIHRoZSBvbmx5IGFjY2Vw
dGVkIHZhbHVlcy4KKyAgICAgICAgV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUGlja2VyIGlzIHJlc3Bv
bnNpYmxlIGZvciBtYW5hZ2luZyB0aGUgaW50ZXJmYWNlIHNob3duIG9uCisgICAgICAgIGlQaG9u
ZXMuCisKKyAgICAgICAgT24gaVBhZCwgd2UgZGlzcGxheSB0aGUgc3VnZ2VzdGlvbnMgaW4gYSBw
b3BvdmVyLCB0aGF0IGlzIHZpc2libGUgYWxvbmdzaWRlIHRoZQorICAgICAgICBrZXlib2FyZC4g
VGhlIHN1Z2dlc3Rpb25zIGluIHRoZSBwb3BvdmVyIHVwZGF0ZSBhcyB0aGUgdXNlciB0eXBlcy4K
KyAgICAgICAgV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUG9wb3ZlciBpcyByZXNwb25zaWJsZSBmb3Ig
bWFuYWdpbmcgdGhlIGludGVyZmFjZSBzaG93biBvbgorICAgICAgICBpUGFkcy4KKworICAgICAg
ICBCb3RoIGRldmljZXMgZGlzcGxheSBwcmVkaWN0aXZlIHRleHQgc3VnZ2VzdGlvbnMsIHRha2lu
ZyB0aGUgZmlyc3QgdGhyZWUgdmFsdWVzCisgICAgICAgIGZyb20gdGhlIGZpbHRlcmVkIHN1Z2dl
c3Rpb25zIGxpc3QuIEluIG9yZGVyIHRvIHByZXZlbnQgb3RoZXIgY2xpZW50cyBmcm9tCisgICAg
ICAgIG92ZXJ3cml0aW5nIHRoZSBzdWdnZXN0aW9ucyBwcm92aWRlZCBieSB0aGUgZGF0YWxpc3Qg
ZWxlbWVudCwgd2UgcHJldmVudCB3cml0aW5nCisgICAgICAgIHRvIHRoZSBwcmVkaWN0aXZlIHRl
eHQgYmFyIGlmIGFuIGlucHV0IHdpdGggdGhlIGxpc3QgYXR0cmlidXRlIGlzIHRoZSBjdXJyZW50
bHkKKyAgICAgICAgYXNzaXN0ZWQgbm9kZS4KKworICAgICAgICAqIFNoYXJlZC9Bc3Npc3RlZE5v
ZGVJbmZvcm1hdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OkFzc2lzdGVkTm9kZUluZm9ybWF0
aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpBc3Npc3RlZE5vZGVJbmZvcm1h
dGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24u
aDoKKyAgICAgICAgKiBTaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9u
Lmg6CisgICAgICAgICogU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlv
bi5tbToKKyAgICAgICAgKFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25B
dFBvc2l0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJEYXRhTGlzdFN1Z2dl
c3Rpb25zRHJvcGRvd25JT1MuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkRhdGFM
aXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TOjp+V2ViRGF0YUxpc3RTdWdnZXN0
aW9uc0Ryb3Bkb3duSU9TKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9u
c0Ryb3Bkb3duSU9TOjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1M6OnNob3cpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1M6OmhhbmRsZUtl
eWRvd25XaXRoSWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2Vz
dGlvbnNEcm9wZG93bklPUzo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhTGlzdFN1
Z2dlc3Rpb25zRHJvcGRvd25JT1M6OmRpZFNlbGVjdE9wdGlvbik6CisgICAgICAgICgtW1dLRGF0
YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2wgaW5pdFdpdGhJbmZvcm1hdGlvbjppblZpZXc6XSk6Cisg
ICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2wgdXBkYXRlV2l0aEluZm9ybWF0
aW9uOl0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sIHNob3dTdWdn
ZXN0aW9uc0Ryb3Bkb3duOmFjdGl2YXRpb25UeXBlOl0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0
U3VnZ2VzdGlvbnNDb250cm9sIGRpZFNlbGVjdE9wdGlvbkF0SW5kZXg6XSk6CisgICAgICAgICgt
W1dLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2wgaW52YWxpZGF0ZV0pOgorICAgICAgICAoLVtX
S0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sIHRleHRTdWdnZXN0aW9uc10pOgorICAgICAgICAo
LVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sIHN1Z2dlc3Rpb25zQ291bnRdKToKKyAgICAg
ICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbCBzdWdnZXN0aW9uQXRJbmRleDpdKToK
KyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbCB0ZXh0QWxpZ25tZW50XSk6
CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc1BpY2tlciBpbml0V2l0aEluZm9ybWF0
aW9uOmluVmlldzpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUGlja2VyIHVw
ZGF0ZVdpdGhJbmZvcm1hdGlvbjpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25z
UGlja2VyIHNob3dTdWdnZXN0aW9uc0Ryb3Bkb3duOmFjdGl2YXRpb25UeXBlOl0pOgorICAgICAg
ICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQaWNrZXIgbnVtYmVyT2ZDb21wb25lbnRzSW5QaWNr
ZXJWaWV3Ol0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQaWNrZXIgcGlja2Vy
VmlldzpudW1iZXJPZlJvd3NJbkNvbXBvbmVudDpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1
Z2dlc3Rpb25zUGlja2VyIHBpY2tlclZpZXc6dGl0bGVGb3JSb3c6Zm9yQ29tcG9uZW50Ol0pOgor
ICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQaWNrZXIgaW52YWxpZGF0ZV0pOgorICAg
ICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQaWNrZXJWaWV3IGVuZEVkaXRpbmddKToKKyAg
ICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUG9wb3ZlciBpbml0V2l0aEluZm9ybWF0aW9u
OmluVmlldzpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUG9wb3ZlciB1cGRh
dGVXaXRoSW5mb3JtYXRpb246XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc1Bv
cG92ZXIgc2hvd1N1Z2dlc3Rpb25zRHJvcGRvd246YWN0aXZhdGlvblR5cGU6XSk6CisgICAgICAg
ICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc1BvcG92ZXIgaW52YWxpZGF0ZV0pOgorICAgICAgICAo
LVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQb3BvdmVyIGRpZFNlbGVjdE9wdGlvbkF0SW5kZXg6XSk6
CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc1ZpZXdDb250cm9sbGVyIHJlbG9hZERh
dGFdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zVmlld0NvbnRyb2xsZXIgdGFi
bGVWaWV3Om51bWJlck9mUm93c0luU2VjdGlvbjpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1
Z2dlc3Rpb25zVmlld0NvbnRyb2xsZXIgdGFibGVWaWV3OmNlbGxGb3JSb3dBdEluZGV4UGF0aDpd
KToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zVmlld0NvbnRyb2xsZXIgdGFibGVW
aWV3OmRpZFNlbGVjdFJvd0F0SW5kZXhQYXRoOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBhZ2VEaWRTY3Jv
bGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEYXRhTGlzdFN1Z2dlc3Rpb25zRHJv
cGRvd24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06
CisgICAgICAgICgtW1dLRm9ybUlucHV0U2Vzc2lvbiBlbmRFZGl0aW5nXSk6CisgICAgICAgICgt
W1dLRm9ybUlucHV0U2Vzc2lvbiBzZXRTdWdnZXN0aW9uczpdKToKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBfZm9ybUlucHV0U2Vzc2lvbl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHJl
c2lnbkZpcnN0UmVzcG9uZGVyRm9yV2ViVmlld10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IHRleHRJbnRlcmFjdGlvbkdlc3R1cmU6c2hvdWxkQmVnaW5BdFBvaW50Ol0pOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IGFjY2Vzc29yeVRhYjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBpbnNlcnRUZXh0U3VnZ2VzdGlvbjpdKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZENsb3NlU3VnZ2VzdGlvbnMpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmdldEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uKToKKwogMjAxOC0wOC0yMyAgSmVmZiBN
aWxsZXIgIDxqZWZmbUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIC1bV0tOYXZpZ2F0aW9u
RGVsZWdhdGUgX3dlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yUGx1Z2luTG9hZFdpdGhDdXJyZW50UG9s
aWN5OnBsdWdpbkluZm86dW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlvbjpdCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvaHRtbC5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvaHRtbC5jc3MK
aW5kZXggZTZiMTg5ZTBlY2ExODA4NjYzMWQ0ODBmMjFhMWQzNmVmYjk2ODNiYi4uMDlkNzc0ZDgz
ZjU0OWVjMDUyNThiMDQyYTkxODg0ZGQ5YTBiZTEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL2h0bWwuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9odG1sLmNzcwpAQCAtNjI2
LDcgKzYyNiwxNCBAQCBpbnB1dDo6LXdlYmtpdC1saXN0LWJ1dHRvbiB7CiAgICAgZmxleDogbm9u
ZTsKICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgIHdpZHRoOiAxNnB4OworI2lm
IGRlZmluZWQoV1RGX1BMQVRGT1JNX0lPUykgJiYgV1RGX1BMQVRGT1JNX0lPUworICAgIGNvbnRl
bnQ6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiBzdHJva2U9ImJsYWNrIiBmaWxsPSJibGFjayIgd2lkdGg9IjE2IiBoZWlnaHQ9
IjE2Ij48cG9seWdvbiBwb2ludHM9IjggMTEuMDMxLCA0LjUgNC45NjksIDExLjUgNC45NjkiLz48
L3N2Zz4nKTsKKyAgICAvKiBNYWtlIGl0IGVhc2llciB0byBoaXQgdGhlIGJ1dHRvbiBvbiBpT1Mg
Ki8KKyAgICBwYWRkaW5nOiA3cHg7CisgICAgbWFyZ2luOiAtN3B4OworI2Vsc2UKICAgICBoZWln
aHQ6IDEwMCU7CisjZW5kaWYKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0RhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0RhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uLmgKaW5kZXggOGM0NDllZjk5OTRjNjAz
Y2M0ZjVlYzhhNWFkOTkzOTUwYTA1NTlmZS4uNTc5NDUxYTU5ODMyZmRkZmZjOWI5OGY0MGNkOTU5
NTU2OGNlZmM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRhTGlzdFN1Z2dl
c3Rpb25JbmZvcm1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0YUxpc3RTdWdn
ZXN0aW9uSW5mb3JtYXRpb24uaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgRU5BQkxF
KERBVEFMSVNUX0VMRU1FTlQpCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5oCmluZGV4IGUzMmIzODkzZWI0YWM3OTZjNjZlMDhjMWJkYTdmM2U0
NzI5ZWM4ZDMuLjRjZTg5YjE2MDAzZWU1ZWZiOThhMGM4ZjdjM2UzOTA4M2EyMDRhMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC0xNTEsNyArMTUxLDcgQEAgcHVi
bGljOgogICAgIEhUTUxFbGVtZW50KiBwbGFjZWhvbGRlckVsZW1lbnQoKSBjb25zdCBmaW5hbDsK
ICAgICBXRUJDT1JFX0VYUE9SVCBIVE1MRWxlbWVudCogYXV0b0ZpbGxCdXR0b25FbGVtZW50KCkg
Y29uc3Q7CiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCi0gICAgSFRNTEVsZW1lbnQqIGRh
dGFMaXN0QnV0dG9uRWxlbWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEhUTUxFbGVt
ZW50KiBkYXRhTGlzdEJ1dHRvbkVsZW1lbnQoKSBjb25zdDsKICNlbmRpZgogCiAgICAgYm9vbCBj
aGVja2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc0NoZWNrZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAppbmRleCAxM2MzMWJhNjFhYTJhY2NmMzIwZTYzZDIw
YTEzMTRkMDQ4NWZmZmJiLi45MjkzNzA4NzkzOTRjNjc0MWM5Y2NkMDFmZDc5NjUzODQwNjU2YjQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCkBAIC0yNjAs
OCArMjYwLDEzIEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5kbGVGb2N1c0V2ZW50KE5v
ZGUqIG9sZEZvY3VzZWROb2RlLCBGb2N1c0RpcmVjdGlvbikKIHsKICAgICBBU1NFUlQoZWxlbWVu
dCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKG9sZEZvY3VzZWROb2RlLCBvbGRGb2N1c2VkTm9kZSAh
PSBlbGVtZW50KCkpOwotICAgIGlmIChSZWZQdHI8RnJhbWU+IGZyYW1lID0gZWxlbWVudCgpLT5k
b2N1bWVudCgpLmZyYW1lKCkpCisgICAgaWYgKFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBlbGVtZW50
KCktPmRvY3VtZW50KCkuZnJhbWUoKSkgewogICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudGV4dEZp
ZWxkRGlkQmVnaW5FZGl0aW5nKGVsZW1lbnQoKSk7CisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1F
TlQpICYmIFBMQVRGT1JNKElPUykKKyAgICAgICAgaWYgKGVsZW1lbnQoKS0+bGlzdCgpICYmIG1f
ZGF0YUxpc3REcm9wZG93bkluZGljYXRvcikKKyAgICAgICAgICAgIG1fZGF0YUxpc3REcm9wZG93
bkluZGljYXRvci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXksIHN1
Z2dlc3Rpb25zKCkuc2l6ZSgpID8gQ1NTVmFsdWVCbG9jayA6IENTU1ZhbHVlTm9uZSwgdHJ1ZSk7
CisjZW5kaWYKKyAgICB9CiB9CiAKIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5kbGVCbHVy
RXZlbnQoKQpAQCAtMjY5LDYgKzI3NCwxMCBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6aGFu
ZGxlQmx1ckV2ZW50KCkKICAgICBJbnB1dFR5cGU6OmhhbmRsZUJsdXJFdmVudCgpOwogICAgIEFT
U0VSVChlbGVtZW50KCkpOwogICAgIGVsZW1lbnQoKS0+ZW5kRWRpdGluZygpOworI2lmIEVOQUJM
RShEQVRBTElTVF9FTEVNRU5UKSAmJiBQTEFURk9STShJT1MpCisgICAgaWYgKGVsZW1lbnQoKS0+
bGlzdCgpICYmIG1fZGF0YUxpc3REcm9wZG93bkluZGljYXRvcikKKyAgICAgICAgbV9kYXRhTGlz
dERyb3Bkb3duSW5kaWNhdG9yLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5RGlz
cGxheSwgQ1NTVmFsdWVOb25lLCB0cnVlKTsKKyNlbmRpZgogfQogCiBib29sIFRleHRGaWVsZElu
cHV0VHlwZTo6c2hvdWxkU3VibWl0SW1wbGljaXRseShFdmVudCYgZXZlbnQpCkBAIC02NDgsNiAr
NjU3LDEwIEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpkaWRTZXRWYWx1ZUJ5VXNlckVkaXQo
KQogICAgIGlmIChSZWZQdHI8RnJhbWU+IGZyYW1lID0gZWxlbWVudCgpLT5kb2N1bWVudCgpLmZy
YW1lKCkpCiAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQo
ZWxlbWVudCgpKTsKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyNpZiBQTEFURk9STShJ
T1MpCisgICAgaWYgKGVsZW1lbnQoKS0+bGlzdCgpICYmIG1fZGF0YUxpc3REcm9wZG93bkluZGlj
YXRvcikKKyAgICAgICAgbV9kYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yLT5zZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSwgc3VnZ2VzdGlvbnMoKS5zaXplKCkgPyBDU1NW
YWx1ZUJsb2NrIDogQ1NTVmFsdWVOb25lLCB0cnVlKTsKKyNlbmRpZgogICAgIGlmIChlbGVtZW50
KCktPmxpc3QoKSkKICAgICAgICAgZGlzcGxheVN1Z2dlc3Rpb25zKERhdGFMaXN0U3VnZ2VzdGlv
bkFjdGl2YXRpb25UeXBlOjpUZXh0Q2hhbmdlZCk7CiAjZW5kaWYKQEAgLTgwMiw3ICs4MTUsOSBA
QCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6bGlzdEF0dHJpYnV0ZVRhcmdldENoYW5nZWQoKQog
ICAgIGlmICghbV9kYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yKQogICAgICAgICByZXR1cm47CiAK
KyNpZiAhUExBVEZPUk0oSU9TKQogICAgIG1fZGF0YUxpc3REcm9wZG93bkluZGljYXRvci0+c2V0
SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXksIGVsZW1lbnQoKS0+bGlzdCgp
ID8gQ1NTVmFsdWVCbG9jayA6IENTU1ZhbHVlTm9uZSwgdHJ1ZSk7CisjZW5kaWYKIH0KIAogSFRN
TEVsZW1lbnQqIFRleHRGaWVsZElucHV0VHlwZTo6ZGF0YUxpc3RCdXR0b25FbGVtZW50KCkgY29u
c3QKQEAgLTg1OSw3ICs4NzQsMTIgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmRpc3BsYXlT
dWdnZXN0aW9ucyhEYXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9uVHlwZSB0eXAKICAgICBpZiAo
ZWxlbWVudCgpLT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSB8fCAhZWxlbWVudCgpLT5yZW5kZXJl
cigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIVVzZXJHZXN0dXJlSW5kaWNhdG9yOjpw
cm9jZXNzaW5nVXNlckdlc3R1cmUoKSkKKyAgICBib29sIHVzZXJBY3RpdmF0ZWQgPSBVc2VyR2Vz
dHVyZUluZGljYXRvcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7CisjaWYgUExBVEZPUk0oSU9T
KQorICAgIHVzZXJBY3RpdmF0ZWQgfD0gKHR5cGUgPT0gRGF0YUxpc3RTdWdnZXN0aW9uQWN0aXZh
dGlvblR5cGU6OlRleHRDaGFuZ2VkKTsKKyNlbmRpZgorCisgICAgaWYgKCF1c2VyQWN0aXZhdGVk
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fc3VnZ2VzdGlvblBpY2tlciAmJiBzdWdn
ZXN0aW9ucygpLnNpemUoKSA+IDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
c3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3Rl
ZE5vZGVJbmZvcm1hdGlvbi5jcHAKaW5kZXggMjEwOTczYmU1YTk5YzkzZTdlM2MyOTcwY2Q2OWUy
NzU4NzRiNWYwZS4uYzFhNDMzNWQ0ZGRmOTAyYWFkMmM3ZjI0NTc5MTYwNzdkZGI3NTFkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmNwcApA
QCAtOTcsOSArOTcsMTIgQEAgdm9pZCBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbjo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGxhYmVsOwogICAgIGVu
Y29kZXIgPDwgYXJpYUxhYmVsOwogICAgIGVuY29kZXIgPDwgYXNzaXN0ZWROb2RlSWRlbnRpZmll
cjsKLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikgJiYgRU5BQkxFKERBVEFMSVNUX0VMRU1F
TlQpCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgZW5jb2RlciA8PCBoYXNTdWdn
ZXN0aW9uczsKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKICAgICBlbmNvZGVyIDw8IHN1
Z2dlc3RlZENvbG9yczsKICNlbmRpZgorI2VuZGlmCiB9CiAKIGJvb2wgQXNzaXN0ZWROb2RlSW5m
b3JtYXRpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEFzc2lzdGVkTm9kZUluZm9y
bWF0aW9uJiByZXN1bHQpCkBAIC0yMDYsOSArMjA5LDE0IEBAIGJvb2wgQXNzaXN0ZWROb2RlSW5m
b3JtYXRpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEFzc2lzdGVkTm9kZUluZm9y
bWF0CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuYXNzaXN0ZWROb2RlSWRlbnRpZmll
cikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KSAmJiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVO
VCkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5oYXNTdWdnZXN0aW9ucykpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnN1Z2dlc3RlZENvbG9ycykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgogI2VuZGlmCiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oCmluZGV4IDY2NzE2ZDQwMzI5
MTFlMWYxZDczYTAzOTg1OWE5NjYzNzEyMjQ4ZGQuLjQzMzYzOGI5NDhkZjA5NzhhYjNjMWJkMWJh
MWEzYjc0MWRkZmE2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lzdGVk
Tm9kZUluZm9ybWF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2Rl
SW5mb3JtYXRpb24uaApAQCAtMTI1LDggKzEyNSwxMSBAQCBzdHJ1Y3QgQXNzaXN0ZWROb2RlSW5m
b3JtYXRpb24gewogICAgIFN0cmluZyBwbGFjZWhvbGRlcjsKICAgICBTdHJpbmcgbGFiZWw7CiAg
ICAgU3RyaW5nIGFyaWFMYWJlbDsKLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikgJiYgRU5B
QkxFKERBVEFMSVNUX0VMRU1FTlQpCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAg
Ym9vbCBoYXNTdWdnZXN0aW9ucyB7IGZhbHNlIH07CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09M
T1IpCiAgICAgVmVjdG9yPFdlYkNvcmU6OkNvbG9yPiBzdWdnZXN0ZWRDb2xvcnM7CisjZW5kaWYK
ICNlbmRpZgogCiAgICAgdWludDY0X3QgYXNzaXN0ZWROb2RlSWRlbnRpZmllciB7IDAgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9u
QXRQb3NpdGlvbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3Jt
YXRpb25BdFBvc2l0aW9uLmgKaW5kZXggOWI5NTMzZTA3MmRhODBkYzNkZGJjMWJkMDFjNTFiMjcw
Y2IzZjI5Yy4uM2QwODY4OWZlMTc2ZGQ3YTYxNzJhMTM3YzA1ODNkY2VhNzM3MmY2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3Jt
YXRpb25BdFBvc2l0aW9uLmgKQEAgLTU1LDYgKzU1LDkgQEAgc3RydWN0IEludGVyYWN0aW9uSW5m
b3JtYXRpb25BdFBvc2l0aW9uIHsKICAgICBib29sIGlzRWxlbWVudCB7IGZhbHNlIH07CiAjaWYg
RU5BQkxFKERBVEFfREVURUNUSU9OKQogICAgIGJvb2wgaXNEYXRhRGV0ZWN0b3JMaW5rIHsgZmFs
c2UgfTsKKyNlbmRpZgorI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIGJvb2wgcHJl
dmVudFRleHRJbnRlcmFjdGlvbiB7IGZhbHNlIH07CiAjZW5kaWYKICAgICBXZWJDb3JlOjpGbG9h
dFBvaW50IGFkanVzdGVkUG9pbnRGb3JOb2RlUmVzcG9uZGluZ1RvQ2xpY2tFdmVudHM7CiAgICAg
V2ViQ29yZTo6VVJMIHVybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9J
bnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5tbQppbmRleCBjYWYzYjNlNTc4
OTI4NDI4ZTc0NjYxMzM1NjdlNTZhNTFkMjhmMWNkLi5hMzlhZjIyMjU4MmFhNjU3YzI3ZWRlMDY5
YzVjMzZlMjViYjYxYWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50
ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tCkBAIC04Miw2ICs4Miw5
IEBAIHZvaWQgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246OmVuY29kZShJUEM6OkVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50
ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSkpOwogICAg
IH0KICNlbmRpZgorI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIGVuY29kZXIgPDwg
cHJldmVudFRleHRJbnRlcmFjdGlvbjsKKyNlbmRpZgogfQogCiBib29sIEludGVyYWN0aW9uSW5m
b3JtYXRpb25BdFBvc2l0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBJbnRlcmFj
dGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYgcmVzdWx0KQpAQCAtMTg2LDYgKzE4OSwxMSBAQCBi
b29sIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyLCBJbnRlcmFjdGlvbgogICAgIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKERBVEFM
SVNUX0VMRU1FTlQpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucHJldmVudFRleHRJ
bnRlcmFjdGlvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBi
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCBkOGEzYzkwZGZmZTMyMjMyMmQ3
NjNlZTIxZTdjYmE0NTBmZTg1ZmNmLi41MzZjNDYzNzRhYTkyMTg5MmJmZTY5OGUwM2U5N2Y3YzRl
OTI0ZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zNDksNiArMzQ5LDcgQEAgVUlQcm9j
ZXNzL0dhbWVwYWQvaW9zL1VJR2FtZXBhZFByb3ZpZGVySU9TLm1tCiBVSVByb2Nlc3MvR2FtZXBh
ZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJNYWMubW0KIAogVUlQcm9jZXNzL2lvcy9EcmFnRHJvcElu
dGVyYWN0aW9uU3RhdGUubW0KK1VJUHJvY2Vzcy9pb3MvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ry
b3Bkb3duSU9TLm1tCiAKIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tBaXJQbGF5Um91dGVQaWNrZXIu
bW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIubW0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGUwNzJiYzIxYmQ2OTgx
ZGIxMGU0MDdmNjVhZWE4YmJkNDI0MzFiM2MuLjhlNGZlNWE3ODM3OWZkYTBlNTBmZjEwNTBkMzky
Yjg5ZjJlNDIxNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApA
QCAtNDU5MSw3ICs0NTkxLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwYWdlRGlkU2Nyb2xsKCkK
ICAgICBpZiAobV9pc0tleWJvYXJkQW5pbWF0aW5nSW4pCiAgICAgICAgIHJldHVybjsKICNlbmRp
ZgorCisjaWYgIVBMQVRGT1JNKElPUykKICAgICBjbG9zZU92ZXJsYXllZFZpZXdzKCk7CisjZW5k
aWYKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJ1bk9wZW5QYW5lbCh1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIGNvbnN0IEZp
bGVDaG9vc2VyU2V0dGluZ3MmIHNldHRpbmdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDYyOWIyOTkxM2RjMGI5NjI4MjQ0YjE3
YTZkMzU1YTU1OTNmZjRkNjMuLmZlMzJkM2YzYWI3YzE4YzUxMGJjYmEyZTBjOWI2NzIyZTRhMDM3
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MubW0KQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbXBvcnQgIldLV2ViVmlld0NvbnRlbnRQcm92aWRl
clJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2Vi
Q29udGV4dE1lbnVQcm94eS5oIgorI2ltcG9ydCAiV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bk
b3duSU9TLmgiCiAjaW1wb3J0ICJXZWJFZGl0Q29tbWFuZFByb3h5LmgiCiAjaW1wb3J0ICJXZWJQ
cm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIl9XS0Rvd25sb2FkSW50ZXJuYWwuaCIKQEAgLTc3Myw3
ICs3NzQsNyBAQCBSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVD
b2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZQogI2lmIEVOQUJMRShEQVRBTElTVF9F
TEVNRU5UKQogUmVmUHRyPFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bj4gUGFnZUNsaWVu
dEltcGw6OmNyZWF0ZURhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bihXZWJQYWdlUHJveHkmIHBh
Z2UpCiB7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIFdlYkRhdGFMaXN0U3VnZ2Vz
dGlvbnNEcm9wZG93bklPUzo6Y3JlYXRlKHBhZ2UsIG1fY29udGVudFZpZXcpOwogfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24uaAppbmRleCBhMjI4MzBhZGZmM2M4NGI3YjVhZTRkZGU5ZmIzYTQxMmJhNzYy
MmU1Li5lM2Y0NTMwNDNlOTRkN2I4OTcxMzQ5N2NmMWU4NzljNjBhYTBiYzFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW1wb3J0ICJXS0Zvcm1QZXJpcGhlcmFsLmgiCiAjaW1w
b3J0ICJXS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaCIKICNpbXBvcnQgIldLU3ludGhldGlj
Q2xpY2tUYXBHZXN0dXJlUmVjb2duaXplci5oIgorI2ltcG9ydCAiX1dLRm9ybUlucHV0U2Vzc2lv
bi5oIgogI2ltcG9ydCA8VUlLaXQvVUlWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UXVhZC5oPgpAQCAtMTQxLDYgKzE0MiwxNiBAQCBzdHJ1
Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogCiB9CiAKK0BjbGFzcyBXS0ZvY3VzZWRFbGVtZW50
SW5mbzsKKworQGludGVyZmFjZSBXS0Zvcm1JbnB1dFNlc3Npb24gOiBOU09iamVjdCA8X1dLRm9y
bUlucHV0U2Vzc2lvbj4KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29udGVudFZpZXc6KFdL
Q29udGVudFZpZXcgKil2aWV3IGZvY3VzZWRFbGVtZW50SW5mbzooV0tGb2N1c2VkRWxlbWVudElu
Zm8gKillbGVtZW50SW5mbyByZXF1aXJlc1N0cm9uZ1Bhc3N3b3JkQXNzaXN0YW5jZTooQk9PTCly
ZXF1aXJlc1N0cm9uZ1Bhc3N3b3JkQXNzaXN0YW5jZTsKKy0gKHZvaWQpZW5kRWRpdGluZzsKKy0g
KHZvaWQpaW52YWxpZGF0ZTsKKworQGVuZAorCiBAaW50ZXJmYWNlIFdLQ29udGVudFZpZXcgKCkg
ewogICAgIFJldGFpblB0cjxVSVdlYlRvdWNoRXZlbnRzR2VzdHVyZVJlY29nbml6ZXI+IF90b3Vj
aEV2ZW50R2VzdHVyZVJlY29nbml6ZXI7CiAKQEAgLTMzNCw2ICszNDUsNyBAQCBGT1JfRUFDSF9X
S0NPTlRFTlRWSUVXX0FDVElPTihERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJf
VklFVykKIC0gKHZvaWQpX2FjY2Vzc2liaWxpdHlSZXRyaWV2ZVJlY3RzQXRTZWxlY3Rpb25PZmZz
ZXQ6KE5TSW50ZWdlcilvZmZzZXQgd2l0aFRleHQ6KE5TU3RyaW5nICopdGV4dDsKIC0gKHZvaWQp
X2FjY2Vzc2liaWxpdHlTdG9yZVNlbGVjdGlvbjsKIC0gKHZvaWQpX2FjY2Vzc2liaWxpdHlDbGVh
clNlbGVjdGlvbjsKKy0gKFdLRm9ybUlucHV0U2Vzc2lvbiAqKV9mb3JtSW5wdXRTZXNzaW9uOwog
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdlYktpdDo6SW50ZXJhY3Rpb25JbmZv
cm1hdGlvbkF0UG9zaXRpb24gY3VycmVudFBvc2l0aW9uSW5mb3JtYXRpb247CiAtICh2b2lkKWRv
QWZ0ZXJQb3NpdGlvbkluZm9ybWF0aW9uVXBkYXRlOih2b2lkICheKShXZWJLaXQ6OkludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uKSlhY3Rpb24gZm9yUmVxdWVzdDooV2ViS2l0OjpJbnRl
cmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdClyZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggZjc1
YzEzYjA0NTE1MDI0ZmQ2ODllYWFiZTZkZTQ0ZTBhODMwNzY2ZC4uMGFiY2E3NTgxODViMzliZmVl
Mjk1OTI2YjQ0NjQ3YWE5YjQ2MWQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC02MCw2ICs2MCw3IEBA
CiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tX
ZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLV2ViVmlld1ByaXZhdGUuaCIKKyNpbXBvcnQg
IldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5oIgogI2ltcG9ydCAiV2ViRXZlbnQu
aCIKICNpbXBvcnQgIldlYklPU0V2ZW50RmFjdG9yeS5oIgogI2ltcG9ydCAiV2ViUGFnZU1lc3Nh
Z2VzLmgiCkBAIC02Nyw3ICs2OCw2IEBACiAjaW1wb3J0ICJfV0tBY3RpdmF0ZWRFbGVtZW50SW5m
b0ludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tFbGVtZW50QWN0aW9uLmgiCiAjaW1wb3J0ICJfV0tG
b2N1c2VkRWxlbWVudEluZm8uaCIKLSNpbXBvcnQgIl9XS0Zvcm1JbnB1dFNlc3Npb24uaCIKICNp
bXBvcnQgIl9XS0lucHV0RGVsZWdhdGUuaCIKICNpbXBvcnQgPENvcmVUZXh0L0NURm9udC5oPgog
I2ltcG9ydCA8Q29yZVRleHQvQ1RGb250RGVzY3JpcHRvci5oPgpAQCAtMjg0LDEzICsyODQsNiBA
QCBjb25zdCBDR0Zsb2F0IG1pbmltdW1UYXBIaWdobGlnaHRSYWRpdXMgPSAyLjA7CiAtIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbjooY29uc3QgQXNzaXN0ZWRO
b2RlSW5mb3JtYXRpb24mKWluZm9ybWF0aW9uIGlzVXNlckluaXRpYXRlZDooQk9PTClpc1VzZXJJ
bml0aWF0ZWQgdXNlck9iamVjdDooTlNPYmplY3QgPE5TU2VjdXJlQ29kaW5nPiAqKXVzZXJPYmpl
Y3Q7CiBAZW5kCiAKLUBpbnRlcmZhY2UgV0tGb3JtSW5wdXRTZXNzaW9uIDogTlNPYmplY3QgPF9X
S0Zvcm1JbnB1dFNlc3Npb24+Ci0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbnRlbnRWaWV3
OihXS0NvbnRlbnRWaWV3ICopdmlldyBmb2N1c2VkRWxlbWVudEluZm86KFdLRm9jdXNlZEVsZW1l
bnRJbmZvICopZWxlbWVudEluZm8gcmVxdWlyZXNTdHJvbmdQYXNzd29yZEFzc2lzdGFuY2U6KEJP
T0wpcmVxdWlyZXNTdHJvbmdQYXNzd29yZEFzc2lzdGFuY2U7Ci0tICh2b2lkKWludmFsaWRhdGU7
Ci0KLUBlbmQKLQogQGltcGxlbWVudGF0aW9uIFdLRm9ybUlucHV0U2Vzc2lvbiB7CiAgICAgV2Vh
a09iakNQdHI8V0tDb250ZW50Vmlldz4gX2NvbnRlbnRWaWV3OwogICAgIFJldGFpblB0cjxXS0Zv
Y3VzZWRFbGVtZW50SW5mbz4gX2ZvY3VzZWRFbGVtZW50SW5mbzsKQEAgLTM4NSw2ICszNzgsMTIg
QEAgY29uc3QgQ0dGbG9hdCBtaW5pbXVtVGFwSGlnaGxpZ2h0UmFkaXVzID0gMi4wOwogICAgIFtf
Y29udGVudFZpZXcgcmVsb2FkSW5wdXRWaWV3c107CiB9CiAKKy0gKHZvaWQpZW5kRWRpdGluZwor
eworICAgIGlmIChbX2N1c3RvbUlucHV0VmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KGVuZEVkaXRpbmcpXSkKKyAgICAgICAgW19jdXN0b21JbnB1dFZpZXcgcGVyZm9ybVNlbGVjdG9y
OkBzZWxlY3RvcihlbmRFZGl0aW5nKV07Cit9CisKIC0gKE5TQXJyYXk8VUlUZXh0U3VnZ2VzdGlv
biAqPiAqKXN1Z2dlc3Rpb25zCiB7CiAgICAgcmV0dXJuIF9zdWdnZXN0aW9ucy5nZXQoKTsKQEAg
LTM5Miw2ICszOTEsMTUgQEAgY29uc3QgQ0dGbG9hdCBtaW5pbXVtVGFwSGlnaGxpZ2h0UmFkaXVz
ID0gMi4wOwogCiAtICh2b2lkKXNldFN1Z2dlc3Rpb25zOihOU0FycmF5PFVJVGV4dFN1Z2dlc3Rp
b24gKj4gKilzdWdnZXN0aW9ucwogeworICAgIC8vIFN1Z2dlc3Rpb25zIHRoYXQgY29tZSBmcm9t
IGEgPGRhdGFsaXN0PiBzaG91bGQgbm90IGJlIG92ZXJ3cml0dGVuIGJ5IG90aGVyIGNsaWVudHMu
CisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgaWYgKF9jb250ZW50Vmlldy5nZXQo
KQorICAgICAgICAmJiBbX2NvbnRlbnRWaWV3IGFzc2lzdGVkTm9kZUluZm9ybWF0aW9uXS5oYXNT
dWdnZXN0aW9ucworICAgICAgICAmJiAhW3N1Z2dlc3Rpb25zLmZpcnN0T2JqZWN0IGlzS2luZE9m
Q2xhc3M6W1dLRGF0YUxpc3RUZXh0U3VnZ2VzdGlvbiBjbGFzc11dKSB7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisjZW5kaWYKKwogICAgIGlkIDxVSVRleHRJbnB1dFN1Z2dlc3Rpb25EZWxlZ2F0
ZT4gc3VnZ2VzdGlvbkRlbGVnYXRlID0gKGlkIDxVSVRleHRJbnB1dFN1Z2dlc3Rpb25EZWxlZ2F0
ZT4pW19jb250ZW50VmlldyBpbnB1dERlbGVnYXRlXTsKICAgICBfc3VnZ2VzdGlvbnMgPSBhZG9w
dE5TKFtzdWdnZXN0aW9ucyBjb3B5XSk7CiAgICAgW3N1Z2dlc3Rpb25EZWxlZ2F0ZSBzZXRTdWdn
ZXN0aW9uczpzdWdnZXN0aW9uc107CkBAIC01OTUsNiArNjAzLDExIEBAIHN0YXRpYyBpbmxpbmUg
Ym9vbCBoYXNBc3Npc3RlZE5vZGUoV2ViS2l0OjpBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiBhc3Np
c3RlZE5vZGVJCiAgICAgcmV0dXJuIChhc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5lbGVtZW50VHlw
ZSAhPSBJbnB1dFR5cGU6Ok5vbmUpOwogfQogCistIChXS0Zvcm1JbnB1dFNlc3Npb24gKilfZm9y
bUlucHV0U2Vzc2lvbgoreworICAgIHJldHVybiBfZm9ybUlucHV0U2Vzc2lvbi5nZXQoKTsKK30K
KwogLSAodm9pZClfY3JlYXRlQW5kQ29uZmlndXJlRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIK
IHsKICAgICBfZG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIgPSBhZG9wdE5TKFtbVUlUYXBHZXN0
dXJlUmVjb2duaXplciBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVjdG9y
KF9kb3VibGVUYXBSZWNvZ25pemVkOildKTsKQEAgLTk5NSw2ICsxMDA4LDggQEAgc3RhdGljIGlu
bGluZSBib29sIGhhc0Fzc2lzdGVkTm9kZShXZWJLaXQ6OkFzc2lzdGVkTm9kZUluZm9ybWF0aW9u
IGFzc2lzdGVkTm9kZUkKICAgICBpZiAoIV93ZWJWaWV3LT5fYWN0aXZlRm9jdXNlZFN0YXRlUmV0
YWluQ291bnQpIHsKICAgICAgICAgLy8gV2UgbmVlZCB0byBjb21wbGV0ZSB0aGUgZWRpdGluZyBv
cGVyYXRpb24gYmVmb3JlIHdlIGJsdXIgdGhlIGVsZW1lbnQuCiAgICAgICAgIFtfaW5wdXRQZXJp
cGhlcmFsIGVuZEVkaXRpbmddOworICAgICAgICBbX2Zvcm1JbnB1dFNlc3Npb24gZW5kRWRpdGlu
Z107CisKICAgICAgICAgX3BhZ2UtPmJsdXJBc3Npc3RlZE5vZGUoKTsKICAgICB9CiAKQEAgLTE3
MzksNiArMTc1NCwxMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTYW1lUGFpcihVSUdlc3R1cmVS
ZWNvZ25pemVyICphLCBVSUdlc3R1cmVSZWNvZ25pemVyICpiLCBVSQogICAgIH0KICNlbmRpZgog
CisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgaWYgKF9wb3NpdGlvbkluZm9ybWF0
aW9uLnByZXZlbnRUZXh0SW50ZXJhY3Rpb24pCisgICAgICAgIHJldHVybiBOTzsKKyNlbmRpZgor
CiAgICAgLy8gSWYgd2UncmUgY3VycmVudGx5IGVkaXRpbmcgYW4gYXNzaXN0ZWQgbm9kZSwgb25s
eSBhbGxvdyB0aGUgc2VsZWN0aW9uIHRvIG1vdmUgd2l0aGluIHRoYXQgYXNzaXN0ZWQgbm9kZS4K
ICAgICBpZiAoc2VsZi5pc0Fzc2lzdGluZ05vZGUpCiAgICAgICAgIHJldHVybiBfcG9zaXRpb25J
bmZvcm1hdGlvbi5ub2RlQXRQb3NpdGlvbklzQXNzaXN0ZWROb2RlOwpAQCAtMzA5OSw2ICszMTE5
LDggQEAgc3RhdGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZFdpdGhUb3VjaChXS0NvbnRlbnRWaWV3
ICp2aWV3LCBjb25zdCBXZWJDb3JlOjpJbnRQb2kKIAogLSAodm9pZClhY2Nlc3NvcnlUYWI6KEJP
T0wpaXNOZXh0CiB7CisgICAgW19mb3JtSW5wdXRTZXNzaW9uIGVuZEVkaXRpbmddOworCiAgICAg
W19pbnB1dFBlcmlwaGVyYWwgZW5kRWRpdGluZ107CiAgICAgX2lucHV0UGVyaXBoZXJhbCA9IG5p
bDsKIApAQCAtMzEwOSw3ICszMTMxLDYgQEAgc3RhdGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZFdp
dGhUb3VjaChXS0NvbnRlbnRWaWV3ICp2aWV3LCBjb25zdCBXZWJDb3JlOjpJbnRQb2kKICAgICAg
ICAgW3ZpZXcgZW5kU2VsZWN0aW9uQ2hhbmdlXTsKICAgICAgICAgW3ZpZXcgcmVsb2FkSW5wdXRW
aWV3c107CiAgICAgfSk7Ci0KIH0KIAogLSAodm9pZClfYmVjb21lRmlyc3RSZXNwb25kZXJXaXRo
U2VsZWN0aW9uTW92aW5nRm9yd2FyZDooQk9PTClzZWxlY3RpbmdGb3J3YXJkIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShCT09MIGRpZEJlY29tZUZpcnN0UmVzcG9uZGVyKSljb21wbGV0aW9u
SGFuZGxlcgpAQCAtMzIwOCw2ICszMjI5LDEyIEBAIHN0YXRpYyB2b2lkIHNlbGVjdGlvbkNoYW5n
ZWRXaXRoVG91Y2goV0tDb250ZW50VmlldyAqdmlldywgY29uc3QgV2ViQ29yZTo6SW50UG9pCiAg
ICAgICAgIF9wYWdlLT5hdXRvZmlsbExvZ2luQ3JlZGVudGlhbHMoWyhVSVRleHRBdXRvZmlsbFN1
Z2dlc3Rpb24gKil0ZXh0U3VnZ2VzdGlvbiB1c2VybmFtZV0sIFsoVUlUZXh0QXV0b2ZpbGxTdWdn
ZXN0aW9uICopdGV4dFN1Z2dlc3Rpb24gcGFzc3dvcmRdKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICBpZiAoW3RleHRTdWdnZXN0aW9u
IGlzS2luZE9mQ2xhc3M6W1dLRGF0YUxpc3RUZXh0U3VnZ2VzdGlvbiBjbGFzc11dKSB7CisgICAg
ICAgIF9wYWdlLT5zZXRBc3Npc3RlZE5vZGVWYWx1ZShbdGV4dFN1Z2dlc3Rpb24gaW5wdXRUZXh0
XSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKICAgICBpZCA8X1dLSW5wdXREZWxl
Z2F0ZT4gaW5wdXREZWxlZ2F0ZSA9IFtfd2ViVmlldyBfaW5wdXREZWxlZ2F0ZV07CiAgICAgaWYg
KFtpbnB1dERlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6aW5z
ZXJ0VGV4dFN1Z2dlc3Rpb246aW5JbnB1dFNlc3Npb246KV0pCiAgICAgICAgIFtpbnB1dERlbGVn
YXRlIF93ZWJWaWV3Ol93ZWJWaWV3IGluc2VydFRleHRTdWdnZXN0aW9uOnRleHRTdWdnZXN0aW9u
IGluSW5wdXRTZXNzaW9uOl9mb3JtSW5wdXRTZXNzaW9uLmdldCgpXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25J
T1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25z
RHJvcGRvd25JT1MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDIyYjAwOWFmY2E3NGFlNTBkY2I0OGZmOGM2MTA2
MTYzOThmNWJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5oCkBAIC0wLDAgKzEsNjMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKSAm
JiBQTEFURk9STShJT1MpCisKKyNpbXBvcnQgIlVJS2l0U1BJLmgiCisjaW1wb3J0ICJXZWJEYXRh
TGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24uaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitPQkpDX0NMQVNTIFdLQ29udGVudFZpZXc7CitPQkpD
X0NMQVNTIFdLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2w7CisKK0BpbnRlcmZhY2UgV0tEYXRh
TGlzdFRleHRTdWdnZXN0aW9uIDogVUlUZXh0U3VnZ2VzdGlvbgorQGVuZAorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TIDogcHVi
bGljIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93biB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZjxXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1M+IGNyZWF0ZShXZWJEYXRhTGlz
dFN1Z2dlc3Rpb25zRHJvcGRvd246OkNsaWVudCYsIFdLQ29udGVudFZpZXcgKik7CisgICAgfldl
YkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUygpOworCisgICAgdm9pZCBkaWRTZWxlY3RP
cHRpb24oU3RyaW5nJik7CisKK3ByaXZhdGU6CisgICAgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ry
b3Bkb3duSU9TKFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bjo6Q2xpZW50JiwgV0tDb250
ZW50VmlldyAqKTsKKworICAgIHZvaWQgc2hvdyhXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25J
bmZvcm1hdGlvbiYmKSBmaW5hbDsKKyAgICB2b2lkIGhhbmRsZUtleWRvd25XaXRoSWRlbnRpZmll
cihjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGNsb3NlKCkgZmluYWw7CisKKyAgICBX
S0NvbnRlbnRWaWV3ICptX2NvbnRlbnRWaWV3OworICAgIFJldGFpblB0cjxXS0RhdGFMaXN0U3Vn
Z2VzdGlvbnNDb250cm9sPiBtX3N1Z2dlc3Rpb25zQ29udHJvbDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpICYmIFBMQVRG
T1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJEYXRh
TGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmODVj
ZTEyMjI0ZmI5ZjQ1NTNiZmU0M2JhYmIzZWNlMmM1OWJjZWMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3du
SU9TLm1tCkBAIC0wLDAgKzEsMzY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5oIgorCisjaWYg
RU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpICYmIFBMQVRGT1JNKElPUykKKworI2ltcG9ydCAiV0tD
b250ZW50Vmlldy5oIgorI2ltcG9ydCAiV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgiCisjaW1w
b3J0ICJXS0Zvcm1Qb3BvdmVyLmgiCisjaW1wb3J0ICJfV0tGb3JtSW5wdXRTZXNzaW9uLmgiCisK
K3N0YXRpYyBjb25zdCBDR0Zsb2F0IG1heFZpc2libGVTdWdnZXN0aW9ucyA9IDU7CitzdGF0aWMg
Y29uc3QgQ0dGbG9hdCBzdWdnZXN0aW9uc1BvcG92ZXJDZWxsSGVpZ2h0ID0gNDQ7CitzdGF0aWMg
Y29uc3QgQ0dGbG9hdCBzdWdnZXN0aW9uc1BvcG92ZXJXaWR0aCA9IDMyMDsKK3N0YXRpYyBOU1N0
cmluZyAqIGNvbnN0IHN1Z2dlc3Rpb25DZWxsUmV1c2VJZGVudGlmaWVyID0gQCJXS0RhdGFMaXN0
U3VnZ2VzdGlvbkNlbGwiOworCitAaW50ZXJmYWNlIFdLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRy
b2wgOiBOU09iamVjdCB7CisgICAgV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRv
d25JT1MqIF9kcm9wZG93bjsKKyAgICBWZWN0b3I8U3RyaW5nPiBfc3VnZ2VzdGlvbnM7Cit9CisK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBXS0NvbnRlbnRWaWV3ICp2aWV3OworCistIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhJbmZvcm1hdGlvbjooV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0
aW9uSW5mb3JtYXRpb24mJilpbmZvcm1hdGlvbiBpblZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3
OworLSAodm9pZCl1cGRhdGVXaXRoSW5mb3JtYXRpb246KFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2Vz
dGlvbkluZm9ybWF0aW9uJiYpaW5mb3JtYXRpb247CistICh2b2lkKXNob3dTdWdnZXN0aW9uc0Ry
b3Bkb3duOihXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUyAqKWRyb3Bk
b3duIGFjdGl2YXRpb25UeXBlOihXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9u
VHlwZSlhY3RpdmF0aW9uVHlwZTsKKy0gKHZvaWQpZGlkU2VsZWN0T3B0aW9uQXRJbmRleDooTlNJ
bnRlZ2VyKWluZGV4OworLSAodm9pZClpbnZhbGlkYXRlOworCistIChOU0FycmF5PFdLRGF0YUxp
c3RUZXh0U3VnZ2VzdGlvbiAqPiAqKXRleHRTdWdnZXN0aW9uczsKKy0gKE5TSW50ZWdlcilzdWdn
ZXN0aW9uc0NvdW50OworLSAoU3RyaW5nKXN1Z2dlc3Rpb25BdEluZGV4OihOU0ludGVnZXIpaW5k
ZXg7CistIChOU1RleHRBbGlnbm1lbnQpdGV4dEFsaWdubWVudDsKK0BlbmQKKworQGludGVyZmFj
ZSBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQaWNrZXIgOiBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250
cm9sIDxVSVBpY2tlclZpZXdEYXRhU291cmNlLCBVSVBpY2tlclZpZXdEZWxlZ2F0ZT4KK0BlbmQK
KworQGludGVyZmFjZSBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQaWNrZXJWaWV3IDogVUlQaWNrZXJW
aWV3CitAcHJvcGVydHkgKG5vbmF0b21pYywgd2VhaykgV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29u
dHJvbCAqY29udHJvbDsKKworLSAodm9pZCllbmRFZGl0aW5nOworQGVuZAorCitAaW50ZXJmYWNl
IFdLRGF0YUxpc3RTdWdnZXN0aW9uc1BvcG92ZXIgOiBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250
cm9sCitAZW5kCisKK0BpbnRlcmZhY2UgV0tEYXRhTGlzdFN1Z2dlc3Rpb25zVmlld0NvbnRyb2xs
ZXIgOiBVSVRhYmxlVmlld0NvbnRyb2xsZXIKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBX
S0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sICpjb250cm9sOworCistICh2b2lkKXJlbG9hZERh
dGE7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS0RhdGFMaXN0VGV4dFN1Z2dlc3Rpb24KK0Bl
bmQKKworI3ByYWdtYSBtYXJrIC0gV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitSZWY8V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3du
SU9TPiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1M6OmNyZWF0ZShXZWJEYXRhTGlz
dFN1Z2dlc3Rpb25zRHJvcGRvd246OkNsaWVudCYgY2xpZW50LCBXS0NvbnRlbnRWaWV3ICp2aWV3
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9w
ZG93bklPUyhjbGllbnQsIHZpZXcpKTsKK30KKworV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bk
b3duSU9TOjp+V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TKCkgeyB9CisKK1dlYkRh
dGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUzo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bk
b3duSU9TKFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bjo6Q2xpZW50JiBjbGllbnQsIFdL
Q29udGVudFZpZXcgKnZpZXcpCisgICAgOiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24o
Y2xpZW50KQorICAgICwgbV9jb250ZW50Vmlldyh2aWV3KQoreworfQorCit2b2lkIFdlYkRhdGFM
aXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUzo6c2hvdyhXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rp
b25JbmZvcm1hdGlvbiYmIGluZm9ybWF0aW9uKQoreworICAgIGlmIChtX3N1Z2dlc3Rpb25zQ29u
dHJvbCkgeworICAgICAgICBbbV9zdWdnZXN0aW9uc0NvbnRyb2wgdXBkYXRlV2l0aEluZm9ybWF0
aW9uOldURk1vdmUoaW5mb3JtYXRpb24pXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGlmIChjdXJyZW50VXNlckludGVyZmFjZUlkaW9tSXNQYWQoKSkKKyAgICAgICAgbV9zdWdnZXN0
aW9uc0NvbnRyb2wgPSBhZG9wdE5TKFtbV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUG9wb3ZlciBhbGxv
Y10gaW5pdFdpdGhJbmZvcm1hdGlvbjpXVEZNb3ZlKGluZm9ybWF0aW9uKSBpblZpZXc6bV9jb250
ZW50Vmlld10pOworICAgIGVsc2UKKyAgICAgICAgbV9zdWdnZXN0aW9uc0NvbnRyb2wgPSBhZG9w
dE5TKFtbV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUGlja2VyIGFsbG9jXSBpbml0V2l0aEluZm9ybWF0
aW9uOldURk1vdmUoaW5mb3JtYXRpb24pIGluVmlldzptX2NvbnRlbnRWaWV3XSk7CisKKyAgICBb
bV9zdWdnZXN0aW9uc0NvbnRyb2wgc2hvd1N1Z2dlc3Rpb25zRHJvcGRvd246dGhpcyBhY3RpdmF0
aW9uVHlwZTppbmZvcm1hdGlvbi5hY3RpdmF0aW9uVHlwZV07Cit9CisKK3ZvaWQgV2ViRGF0YUxp
c3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TOjpoYW5kbGVLZXlkb3duV2l0aElkZW50aWZpZXIoY29u
c3QgU3RyaW5nJikKK3sKK30KKwordm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25J
T1M6OmNsb3NlKCkKK3sKKyAgICBbbV9zdWdnZXN0aW9uc0NvbnRyb2wgaW52YWxpZGF0ZV07Cisg
ICAgbV9zdWdnZXN0aW9uc0NvbnRyb2wgPSBuaWw7CisgICAgbV9jbGllbnQtPmRpZENsb3NlU3Vn
Z2VzdGlvbnMoKTsKK30KKwordm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1M6
OmRpZFNlbGVjdE9wdGlvbihTdHJpbmcmIHNlbGVjdGVkT3B0aW9uKQoreworICAgIGlmICghbV9j
bGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2xpZW50LT5kaWRTZWxlY3RPcHRpb24o
c2VsZWN0ZWRPcHRpb24pOworICAgIGNsb3NlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjcHJhZ21hIG1hcmsgLSBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sCisKK0BpbXBs
ZW1lbnRhdGlvbiBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sCisKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aEluZm9ybWF0aW9uOihXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1h
dGlvbiYmKWluZm9ybWF0aW9uIGluVmlldzooV0tDb250ZW50VmlldyAqKXZpZXcKK3sKKyAgICBp
ZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF92
aWV3ID0gdmlldzsKKyAgICBfc3VnZ2VzdGlvbnMgPSBXVEZNb3ZlKGluZm9ybWF0aW9uLnN1Z2dl
c3Rpb25zKTsKKworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKXVwZGF0ZVdpdGhJbmZv
cm1hdGlvbjooV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24mJilpbmZvcm1h
dGlvbgoreworICAgIF9zdWdnZXN0aW9ucyA9IFdURk1vdmUoaW5mb3JtYXRpb24uc3VnZ2VzdGlv
bnMpOworfQorCistICh2b2lkKXNob3dTdWdnZXN0aW9uc0Ryb3Bkb3duOihXZWJLaXQ6OldlYkRh
dGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUyAqKWRyb3Bkb3duIGFjdGl2YXRpb25UeXBlOihX
ZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9uVHlwZSlhY3RpdmF0aW9uVHlwZQor
eworICAgIF9kcm9wZG93biA9IGRyb3Bkb3duOworfQorCistICh2b2lkKWRpZFNlbGVjdE9wdGlv
bkF0SW5kZXg6KE5TSW50ZWdlcilpbmRleAoreworICAgIF9kcm9wZG93bi0+ZGlkU2VsZWN0T3B0
aW9uKF9zdWdnZXN0aW9uc1tpbmRleF0pOworfQorCistICh2b2lkKWludmFsaWRhdGUKK3sKK30K
KworLSAoTlNBcnJheTxXS0RhdGFMaXN0VGV4dFN1Z2dlc3Rpb24gKj4gKil0ZXh0U3VnZ2VzdGlv
bnMKK3sKKyAgICBOU011dGFibGVBcnJheSAqc3VnZ2VzdGlvbnMgPSBbTlNNdXRhYmxlQXJyYXkg
YXJyYXldOworCisgICAgZm9yIChhdXRvIHN1Z2dlc3Rpb24gOiBfc3VnZ2VzdGlvbnMpIHsKKyAg
ICAgICAgW3N1Z2dlc3Rpb25zIGFkZE9iamVjdDpbV0tEYXRhTGlzdFRleHRTdWdnZXN0aW9uIHRl
eHRTdWdnZXN0aW9uV2l0aElucHV0VGV4dDpzdWdnZXN0aW9uXV07CisgICAgICAgIGlmIChzdWdn
ZXN0aW9ucy5jb3VudCA9PSAzKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0
dXJuIHN1Z2dlc3Rpb25zOworfQorCistIChOU0ludGVnZXIpc3VnZ2VzdGlvbnNDb3VudAorewor
ICAgIHJldHVybiBfc3VnZ2VzdGlvbnMuc2l6ZSgpOworfQorCistIChTdHJpbmcpc3VnZ2VzdGlv
bkF0SW5kZXg6KE5TSW50ZWdlcilpbmRleAoreworICAgIHJldHVybiBfc3VnZ2VzdGlvbnNbaW5k
ZXhdOworfQorCistIChOU1RleHRBbGlnbm1lbnQpdGV4dEFsaWdubWVudAoreworICAgIHJldHVy
biBfdmlldy5hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5pc1JUTCA/IE5TVGV4dEFsaWdubWVudFJp
Z2h0IDogTlNUZXh0QWxpZ25tZW50TGVmdDsKK30KKworQGVuZAorCisjcHJhZ21hIG1hcmsgLSBX
S0RhdGFMaXN0U3VnZ2VzdGlvbnNQaWNrZXIKKworQGltcGxlbWVudGF0aW9uIFdLRGF0YUxpc3RT
dWdnZXN0aW9uc1BpY2tlciAgeworICAgIFJldGFpblB0cjxXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQ
aWNrZXJWaWV3PiBfcGlja2VyVmlldzsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSW5m
b3JtYXRpb246KFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uJiYpaW5mb3Jt
YXRpb24gaW5WaWV3OihXS0NvbnRlbnRWaWV3ICopdmlldworeworICAgIGlmICghKHNlbGYgPSBb
c3VwZXIgaW5pdFdpdGhJbmZvcm1hdGlvbjpXVEZNb3ZlKGluZm9ybWF0aW9uKSBpblZpZXc6dmll
d10pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3BpY2tlclZpZXcgPSBhZG9wdE5TKFtb
V0tEYXRhTGlzdFN1Z2dlc3Rpb25zUGlja2VyVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RaZXJvXSk7CisgICAgW19waWNrZXJWaWV3IHNldEF1dG9yZXNpemluZ01hc2s6VUlWaWV3QXV0
b3Jlc2l6aW5nRmxleGlibGVXaWR0aCB8IFVJVmlld0F1dG9yZXNpemluZ0ZsZXhpYmxlSGVpZ2h0
XTsKKyAgICBbX3BpY2tlclZpZXcgc2V0RGF0YVNvdXJjZTpzZWxmXTsKKyAgICBbX3BpY2tlclZp
ZXcgc2V0RGVsZWdhdGU6c2VsZl07CisgICAgW19waWNrZXJWaWV3IHNldENvbnRyb2w6c2VsZl07
CisgICAgW19waWNrZXJWaWV3IHNldFNpemU6W1VJS2V5Ym9hcmQgZGVmYXVsdFNpemVGb3JJbnRl
cmZhY2VPcmllbnRhdGlvbjpVSUFwcC5pbnRlcmZhY2VPcmllbnRhdGlvbl1dOworCisgICAgcmV0
dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpdXBkYXRlV2l0aEluZm9ybWF0aW9uOihXZWJDb3JlOjpE
YXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbiYmKWluZm9ybWF0aW9uCit7CisgICAgW3N1cGVy
IHVwZGF0ZVdpdGhJbmZvcm1hdGlvbjpXVEZNb3ZlKGluZm9ybWF0aW9uKV07CisgICAgaWYgKGlu
Zm9ybWF0aW9uLmFjdGl2YXRpb25UeXBlICE9IFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkFj
dGl2YXRpb25UeXBlOjpJbmRpY2F0b3JDbGlja2VkKSB7CisgICAgICAgIFtbc2VsZi52aWV3IF9m
b3JtSW5wdXRTZXNzaW9uXSBzZXRDdXN0b21JbnB1dFZpZXc6bmlsXTsKKyAgICAgICAgW1tzZWxm
LnZpZXcgX2Zvcm1JbnB1dFNlc3Npb25dIHNldFN1Z2dlc3Rpb25zOltzZWxmIHRleHRTdWdnZXN0
aW9uc11dOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgW1tzZWxmLnZpZXcgX2Zvcm1J
bnB1dFNlc3Npb25dIHNldEN1c3RvbUlucHV0VmlldzpfcGlja2VyVmlldy5nZXQoKV07CisKKyAg
ICBbX3BpY2tlclZpZXcgcmVsb2FkQWxsQ29tcG9uZW50c107CisgICAgW19waWNrZXJWaWV3IHNl
bGVjdFJvdzowIGluQ29tcG9uZW50OjAgYW5pbWF0ZWQ6Tk9dOworfQorCistICh2b2lkKXNob3dT
dWdnZXN0aW9uc0Ryb3Bkb3duOihXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93
bklPUyAqKWRyb3Bkb3duIGFjdGl2YXRpb25UeXBlOihXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rp
b25BY3RpdmF0aW9uVHlwZSlhY3RpdmF0aW9uVHlwZQoreworICAgIFtzdXBlciBzaG93U3VnZ2Vz
dGlvbnNEcm9wZG93bjpkcm9wZG93biBhY3RpdmF0aW9uVHlwZTphY3RpdmF0aW9uVHlwZV07Cisg
ICAgaWYgKGFjdGl2YXRpb25UeXBlID09IFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkFjdGl2
YXRpb25UeXBlOjpJbmRpY2F0b3JDbGlja2VkKSB7CisgICAgICAgIFtbc2VsZi52aWV3IF9mb3Jt
SW5wdXRTZXNzaW9uXSBzZXRDdXN0b21JbnB1dFZpZXc6X3BpY2tlclZpZXcuZ2V0KCldOworICAg
ICAgICBbX3BpY2tlclZpZXcgc2VsZWN0Um93OjAgaW5Db21wb25lbnQ6MCBhbmltYXRlZDpOT107
CisgICAgfSBlbHNlCisgICAgICAgIFtbc2VsZi52aWV3IF9mb3JtSW5wdXRTZXNzaW9uXSBzZXRT
dWdnZXN0aW9uczpbc2VsZiB0ZXh0U3VnZ2VzdGlvbnNdXTsKK30KKworLSAoTlNJbnRlZ2VyKW51
bWJlck9mQ29tcG9uZW50c0luUGlja2VyVmlldzooVUlQaWNrZXJWaWV3ICopcGlja2VyVmlldwor
eworICAgIHJldHVybiAxOworfQorCistIChOU0ludGVnZXIpcGlja2VyVmlldzooVUlQaWNrZXJW
aWV3ICopcGlja2VyVmlldyBudW1iZXJPZlJvd3NJbkNvbXBvbmVudDooTlNJbnRlZ2VyKWNvbHVt
bkluZGV4Cit7CisgICAgcmV0dXJuIFtzZWxmIHN1Z2dlc3Rpb25zQ291bnRdOworfQorCistIChO
U1N0cmluZyAqKXBpY2tlclZpZXc6KFVJUGlja2VyVmlldyAqKXBpY2tlclZpZXcgdGl0bGVGb3JS
b3c6KE5TSW50ZWdlcilyb3cgZm9yQ29tcG9uZW50OihOU0ludGVnZXIpY29tcG9uZW50Cit7Cisg
ICAgcmV0dXJuIFtzZWxmIHN1Z2dlc3Rpb25BdEluZGV4OnJvd107Cit9CisKKy0gKHZvaWQpaW52
YWxpZGF0ZQoreworICAgIGlmIChbW3NlbGYudmlldyBfZm9ybUlucHV0U2Vzc2lvbl0gY3VzdG9t
SW5wdXRWaWV3XSA9PSBfcGlja2VyVmlldy5nZXQoKSkKKyAgICAgICAgW1tzZWxmLnZpZXcgX2Zv
cm1JbnB1dFNlc3Npb25dIHNldEN1c3RvbUlucHV0VmlldzpuaWxdOworCisgICAgW19waWNrZXJW
aWV3IHNldERlbGVnYXRlOm5pbF07CisgICAgW19waWNrZXJWaWV3IHNldERhdGFTb3VyY2U6bmls
XTsKKyAgICBbX3BpY2tlclZpZXcgc2V0Q29udHJvbDpuaWxdOworfQorCitAZW5kCisKK0BpbXBs
ZW1lbnRhdGlvbiBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQaWNrZXJWaWV3CisKKy0gKHZvaWQpZW5k
RWRpdGluZworeworICAgIFtzZWxmLmNvbnRyb2wgZGlkU2VsZWN0T3B0aW9uQXRJbmRleDpbc2Vs
ZiBzZWxlY3RlZFJvd0luQ29tcG9uZW50OjBdXTsKK30KKworQGVuZAorCisjcHJhZ21hIG1hcmsg
LSBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQb3BvdmVyCisKK0BpbXBsZW1lbnRhdGlvbiBXS0RhdGFM
aXN0U3VnZ2VzdGlvbnNQb3BvdmVyICB7CisgICAgUmV0YWluUHRyPFdLRm9ybVJvdGF0aW5nQWNj
ZXNzb3J5UG9wb3Zlcj4gX3BvcG92ZXI7CisgICAgUmV0YWluUHRyPFdLRGF0YUxpc3RTdWdnZXN0
aW9uc1ZpZXdDb250cm9sbGVyPiBfc3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlcjsKK30KKworLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoSW5mb3JtYXRpb246KFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2Vz
dGlvbkluZm9ybWF0aW9uJiYpaW5mb3JtYXRpb24gaW5WaWV3OihXS0NvbnRlbnRWaWV3ICopdmll
dworeworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhJbmZvcm1hdGlvbjpXVEZNb3Zl
KGluZm9ybWF0aW9uKSBpblZpZXc6dmlld10pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAg
X3BvcG92ZXIgPSBhZG9wdE5TKFtbV0tGb3JtUm90YXRpbmdBY2Nlc3NvcnlQb3BvdmVyIGFsbG9j
XSBpbml0V2l0aFZpZXc6dmlld10pOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQp
dXBkYXRlV2l0aEluZm9ybWF0aW9uOihXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1h
dGlvbiYmKWluZm9ybWF0aW9uCit7CisgICAgW3N1cGVyIHVwZGF0ZVdpdGhJbmZvcm1hdGlvbjpX
VEZNb3ZlKGluZm9ybWF0aW9uKV07CisgICAgW19zdWdnZXN0aW9uc1ZpZXdDb250cm9sbGVyIHJl
bG9hZERhdGFdOworICAgIFtbc2VsZi52aWV3IF9mb3JtSW5wdXRTZXNzaW9uXSBzZXRTdWdnZXN0
aW9uczpbc2VsZiB0ZXh0U3VnZ2VzdGlvbnNdXTsKK30KKworLSAodm9pZClzaG93U3VnZ2VzdGlv
bnNEcm9wZG93bjooV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MgKilk
cm9wZG93biBhY3RpdmF0aW9uVHlwZTooV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uQWN0aXZh
dGlvblR5cGUpYWN0aXZhdGlvblR5cGUKK3sKKyAgICBbc3VwZXIgc2hvd1N1Z2dlc3Rpb25zRHJv
cGRvd246ZHJvcGRvd24gYWN0aXZhdGlvblR5cGU6YWN0aXZhdGlvblR5cGVdOworCisgICAgX3N1
Z2dlc3Rpb25zVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV0tEYXRhTGlzdFN1Z2dlc3Rpb25z
Vmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoU3R5bGU6VUlUYWJsZVZpZXdTdHlsZVBsYWlu
XSk7CisgICAgW19zdWdnZXN0aW9uc1ZpZXdDb250cm9sbGVyIHNldENvbnRyb2w6c2VsZl07Cisg
ICAgW19zdWdnZXN0aW9uc1ZpZXdDb250cm9sbGVyIHJlbG9hZERhdGFdOworICAgIFtbc2VsZi52
aWV3IF9mb3JtSW5wdXRTZXNzaW9uXSBzZXRTdWdnZXN0aW9uczpbc2VsZiB0ZXh0U3VnZ2VzdGlv
bnNdXTsKKworI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgorICAgIFtfcG9wb3Zl
ciBzZXRQb3BvdmVyQ29udHJvbGxlcjpbW1tVSVBvcG92ZXJDb250cm9sbGVyIGFsbG9jXSBpbml0
V2l0aENvbnRlbnRWaWV3Q29udHJvbGxlcjpfc3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlci5nZXQo
KV0gYXV0b3JlbGVhc2VdXTsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKworICAgIFtf
cG9wb3ZlciBwcmVzZW50UG9wb3ZlckFuaW1hdGVkOk5PXTsKK30KKworLSAodm9pZClpbnZhbGlk
YXRlCit7CisgICAgW19zdWdnZXN0aW9uc1ZpZXdDb250cm9sbGVyIHNldENvbnRyb2w6bmlsXTsK
K30KKworLSAodm9pZClkaWRTZWxlY3RPcHRpb25BdEluZGV4OihOU0ludGVnZXIpaW5kZXgKK3sK
KyAgICBbc3VwZXIgZGlkU2VsZWN0T3B0aW9uQXRJbmRleDppbmRleF07CisgICAgW1tfcG9wb3Zl
ciBwb3BvdmVyQ29udHJvbGxlcl0gZGlzbWlzc1BvcG92ZXJBbmltYXRlZDpZRVNdOworICAgIFtb
c2VsZi52aWV3IF9mb3JtSW5wdXRTZXNzaW9uXSBzZXRTdWdnZXN0aW9uczpAWyBbV0tEYXRhTGlz
dFRleHRTdWdnZXN0aW9uIHRleHRTdWdnZXN0aW9uV2l0aElucHV0VGV4dDpbc2VsZiBzdWdnZXN0
aW9uQXRJbmRleDppbmRleF1dIF1dOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS0Rh
dGFMaXN0U3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlcgorCistICh2b2lkKXJlbG9hZERhdGEKK3sK
KyAgICBbc2VsZi50YWJsZVZpZXcgcmVsb2FkRGF0YV07CisgICAgW3NlbGYgc2V0UHJlZmVycmVk
Q29udGVudFNpemU6Q0dTaXplTWFrZShzdWdnZXN0aW9uc1BvcG92ZXJXaWR0aCwgbWF4VmlzaWJs
ZVN1Z2dlc3Rpb25zICogc3VnZ2VzdGlvbnNQb3BvdmVyQ2VsbEhlaWdodCArIHN1Z2dlc3Rpb25z
UG9wb3ZlckNlbGxIZWlnaHQgLyAyKV07Cit9CisKKy0gKE5TSW50ZWdlcil0YWJsZVZpZXc6KFVJ
VGFibGVWaWV3ICopdGFibGVWaWV3IG51bWJlck9mUm93c0luU2VjdGlvbjooTlNJbnRlZ2VyKXNl
Y3Rpb24KK3sKKyAgICByZXR1cm4gW3NlbGYuY29udHJvbCBzdWdnZXN0aW9uc0NvdW50XTsKK30K
KworLSAoVUlUYWJsZVZpZXdDZWxsICopdGFibGVWaWV3OihVSVRhYmxlVmlldyAqKXRhYmxlVmll
dyBjZWxsRm9yUm93QXRJbmRleFBhdGg6KE5TSW5kZXhQYXRoICopaW5kZXhQYXRoCit7CisgICAg
VUlUYWJsZVZpZXdDZWxsICpjZWxsID0gW3RhYmxlVmlldyBkZXF1ZXVlUmV1c2FibGVDZWxsV2l0
aElkZW50aWZpZXI6c3VnZ2VzdGlvbkNlbGxSZXVzZUlkZW50aWZpZXJdOworICAgIGlmICghY2Vs
bCkKKyAgICAgICAgY2VsbCA9IFtbW1VJVGFibGVWaWV3Q2VsbCBhbGxvY10gaW5pdFdpdGhTdHls
ZTpVSVRhYmxlVmlld0NlbGxTdHlsZURlZmF1bHQgcmV1c2VJZGVudGlmaWVyOnN1Z2dlc3Rpb25D
ZWxsUmV1c2VJZGVudGlmaWVyXSBhdXRvcmVsZWFzZV07CisKKyAgICBjZWxsLnRleHRMYWJlbC50
ZXh0ID0gW3NlbGYuY29udHJvbCBzdWdnZXN0aW9uQXRJbmRleDppbmRleFBhdGgucm93XTsKKyAg
ICBjZWxsLnRleHRMYWJlbC5saW5lQnJlYWtNb2RlID0gTlNMaW5lQnJlYWtCeVRydW5jYXRpbmdU
YWlsOworICAgIGNlbGwudGV4dExhYmVsLnRleHRBbGlnbm1lbnQgPSBbc2VsZi5jb250cm9sIHRl
eHRBbGlnbm1lbnRdOworCisgICAgcmV0dXJuIGNlbGw7Cit9CisKKy0gKHZvaWQpdGFibGVWaWV3
OihVSVRhYmxlVmlldyAqKXRhYmxlVmlldyBkaWRTZWxlY3RSb3dBdEluZGV4UGF0aDooTlNJbmRl
eFBhdGggKilpbmRleFBhdGgKK3sKKyAgICBbc2VsZi5jb250cm9sIGRpZFNlbGVjdE9wdGlvbkF0
SW5kZXg6aW5kZXhQYXRoLnJvd107Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIEVOQUJMRShEQVRB
TElTVF9FTEVNRU5UKSAmJiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5MjRhNzQ3YTg4YWI5OGQ0ZTg0N2FjMDFi
ZWQxOTE5MGNkNjVhYzYwLi40YWU5YmZjZWM0ODQ4Y2EwY2NlZTZjNjRiMDQyOTgyYTlmYjMxYzk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTE4MDYsNiArMTgwNiw3IEBACiAJCUU1NDhFQkQxMjEwMTVGMEUwMEJFM0MzMiAvKiBXS0Zv
cm1Db2xvclBpY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTU0OEVCQ0YyMTAxNUYwRTAwQkUzQzMyIC8qIFdLRm9ybUNvbG9yUGlja2VyLmggKi87
IH07CiAJCUU1NjhCOTFGMjBBM0FCMkYwMEUzQzg1NiAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25z
RHJvcGRvd24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEU1NjhCOTFFMjBBM0FCMkYwMEUzQzg1NiAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRv
d24uaCAqLzsgfTsKIAkJRTU2OEI5MjIyMEEzQUM2QTAwRTNDODU2IC8qIFdlYkRhdGFMaXN0U3Vn
Z2VzdGlvbnNEcm9wZG93bk1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTU2OEI5MjAyMEEzQUM2QTAwRTNDODU2IC8qIFdlYkRhdGFMaXN0U3VnZ2Vz
dGlvbnNEcm9wZG93bk1hYy5oICovOyB9OworCQlFNUJFRjY4MjIxMzBDNDgwMDBGMzExMTEgLyog
V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNUJFRjY4MDIxMzBDNDdGMDBGMzExMTEgLyogV2Vi
RGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLmggKi87IH07CiAJCUU1Q0IwN0RDMjBFMTY3
OEYwMDIyQzE4MyAvKiBXS0Zvcm1Db2xvckNvbnRyb2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU1Q0IwN0RBMjBFMTY3OEYwMDIyQzE4MyAvKiBXS0Zv
cm1Db2xvckNvbnRyb2wuaCAqLzsgfTsKIAkJRUNBNjgwRDgxRTY5MEUyNTAwNzMxRDIwIC8qIFdl
YlByb2Nlc3NDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRUNBNjgwRDcxRTY5MERGODAwNzMxRDIwIC8qIFdlYlByb2Nlc3NDb2NvYS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUVEODJBN0YyMTI4
QzZGQUYwMDQ0NzdCMyAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTIyRjBGRjEyODlGQ0Q5MDA4NUU3NEYgLyog
V0tCdW5kbGVQYWdlT3ZlcmxheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC00NjQ3LDYgKzQ2NDgsOCBAQAogCQlFNTY4QjkxRTIwQTNBQjJGMDBF
M0M4NTYgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFNTY4QjkyMDIwQTNBQzZBMDBFM0M4NTYgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9u
c0Ryb3Bkb3duTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9w
ZG93bk1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNTY4QjkyMTIwQTNBQzZB
MDBFM0M4NTYgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU1QkVGNjgwMjEzMEM0N0YwMEYzMTExMSAvKiBXZWJE
YXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLmg7IHBhdGggPSBpb3Mv
V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUU1QkVGNjgxMjEzMEM0N0YwMEYzMTExMSAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rp
b25zRHJvcGRvd25JT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW07IHBhdGggPSBpb3MvV2ViRGF0
YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFNUNCMDdEQTIwRTE2NzhGMDAyMkMxODMgLyogV0tGb3JtQ29sb3JDb250cm9sLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFdLRm9ybUNvbG9yQ29udHJvbC5oOyBwYXRoID0gaW9zL2Zvcm1zL1dLRm9y
bUNvbG9yQ29udHJvbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNUNCMDdEQjIw
RTE2NzhGMDAyMkMxODMgLyogV0tGb3JtQ29sb3JDb250cm9sLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gV0tGb3JtQ29sb3JDb250cm9sLm1tOyBwYXRoID0gaW9zL2Zvcm1zL1dLRm9ybUNvbG9y
Q29udHJvbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUNBNjgwRDMxRTY5MDRC
NTAwNzMxRDIwIC8qIEV4dHJhUHJpdmF0ZVN5bWJvbHNGb3JUQVBJLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEV4dHJhUHJpdmF0ZVN5bWJvbHNGb3JUQVBJLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01OTY2LDYgKzU5NjksOCBAQAogCQkJCTJEQUYwNkQ1MThC
RDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tICovLAogCQkJ
CTJEQTk0NEE5MTg4NEU5QkEwMEVEODZEQiAvKiBUZXh0Q2hlY2tlcklPUy5tbSAqLywKIAkJCQky
REY5NTkzNDE4QTQyNDEyMDA5Nzg1QTEgLyogVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tICov
LAorCQkJCUU1QkVGNjgwMjEzMEM0N0YwMEYzMTExMSAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25z
RHJvcGRvd25JT1MuaCAqLywKKwkJCQlFNUJFRjY4MTIxMzBDNDdGMDBGMzExMTEgLyogV2ViRGF0
YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tICovLAogCQkJCTJEM0VGNDQxMTkxNzY0NjMw
MDAzNDE4NCAvKiBXZWJNZW1vcnlQcmVzc3VyZUhhbmRsZXJJT1MuaCAqLywKIAkJCQkyRDNFRjQ0
MDE5MTc2NDYzMDAwMzQxODQgLyogV2ViTWVtb3J5UHJlc3N1cmVIYW5kbGVySU9TLm1tICovLAog
CQkJCTJEQTk0NEFCMTg4NEU5QkEwMEVEODZEQiAvKiBXZWJQYWdlUHJveHlJT1MubW0gKi8sCkBA
IC05NDk1LDYgKzk1MDAsNyBAQAogCQkJCTFBQTgzRjZEMUE1QjYzRkYwMDAyNkVDNiAvKiBXZWJE
YXRhYmFzZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNTJDRjU1MjIwQTM1QzNBMDBE
QURBMjcgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFNTY4QjkxRjIwQTNBQjJGMDBFM0M4NTYgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bk
b3duLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNUJFRjY4MjIxMzBDNDgwMDBGMzExMTEgLyogV2Vi
RGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNTY4
QjkyMjIwQTNBQzZBMDBFM0M4NTYgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFj
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDE5QTI2RTFBMTNFODM0MDA4RDY1MEUgLyogV2ViRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNUIxQzU1MTg5ODdF
REYwMDRGQ0Y5QiAvKiBXZWJEb2N1bWVudExvYWRlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDlhZjY4OGNmYjkx
NDNjNWNhNTM1MjNmN2Y3ZTFmY2JlYTU4OTlmOGUuLmJhNjE2ODYxNWVmNTM2NGViZDZmYmU4N2Q5
YWY4YzRkNWJlMWY0MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCkBAIC0zNTk2LDcgKzM1OTYsOCBAQCB2b2lkIFdlYlBhZ2U6OmRpZFNlbGVjdERh
dGFMaXN0T3B0aW9uKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRPcHRpb24pCiAKIHZvaWQgV2ViUGFn
ZTo6ZGlkQ2xvc2VTdWdnZXN0aW9ucygpCiB7Ci0gICAgbV9hY3RpdmVEYXRhTGlzdFN1Z2dlc3Rp
b25QaWNrZXItPmRpZENsb3NlU3VnZ2VzdGlvbnMoKTsKKyAgICBpZiAobV9hY3RpdmVEYXRhTGlz
dFN1Z2dlc3Rpb25QaWNrZXIpCisgICAgICAgIG1fYWN0aXZlRGF0YUxpc3RTdWdnZXN0aW9uUGlj
a2VyLT5kaWRDbG9zZVN1Z2dlc3Rpb25zKCk7CiAgICAgbV9hY3RpdmVEYXRhTGlzdFN1Z2dlc3Rp
b25QaWNrZXIgPSBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGFlNThlMDkwNGU4ZDRkYjlhOTU4NTZk
NjIzZjAwMjA1ZTVkOGUxMmUuLmE5NDc2M2JmMTM2NjhlMTgxOGQ4ODIxNTI1YjdhYTg5ZGIyZWI3
Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCkBAIC0yMjA5LDYgKzIyMDksMTggQEAgdm9pZCBXZWJQYWdlOjpnZXRQb3NpdGlv
bkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0JiByZXF1ZXMK
ICAgICAgICAgfQogICAgIH0KIAorICAgIC8vIFByZXZlbnQgdGhlIGNhbGxvdXQgYmFyIGZyb20g
c2hvd2luZyB3aGVuIHRhcHBpbmcgb24gdGhlIGRhdGFsaXN0IGJ1dHRvbi4KKyNpZiBFTkFCTEUo
REFUQUxJU1RfRUxFTUVOVCkKKyAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4oKmhpdE5vZGUp
KSB7CisgICAgICAgIGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gZG93bmNhc3Q8SFRN
TElucHV0RWxlbWVudD4oKmhpdE5vZGUpOworICAgICAgICBpZiAoaW5wdXQubGlzdCgpKSB7Cisg
ICAgICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZl
bnRIYW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQocmVxdWVzdC5wb2ludCwgSGl0VGVzdFJl
cXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSk7CisgICAgICAgICAgICBp
ZiAocmVzdWx0LmlubmVyTm9kZSgpID09IGlucHV0LmRhdGFMaXN0QnV0dG9uRWxlbWVudCgpKQor
ICAgICAgICAgICAgICAgIGluZm8ucHJldmVudFRleHRJbnRlcmFjdGlvbiA9IHRydWU7CisgICAg
ICAgIH0KKyAgICB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQogICAg
IGluZm8uaGFzU2VsZWN0aW9uQXRQb3NpdGlvbiA9IG1fcGFnZS0+aGFzU2VsZWN0aW9uQXRQb3Np
dGlvbihhZGp1c3RlZFBvaW50KTsKICNlbmRpZgpAQCAtMjQ3Nyw2ICsyNDg5LDkgQEAgdm9pZCBX
ZWJQYWdlOjpnZXRBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbihBc3Npc3RlZE5vZGVJbmZvcm1hdGlv
biYgaW5mb3JtYXRpb24pCiAgICAgICAgIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKERBVEFMSVNU
X0VMRU1FTlQpCisgICAgICAgIGluZm9ybWF0aW9uLmhhc1N1Z2dlc3Rpb25zID0gISFlbGVtZW50
Lmxpc3QoKTsKKyNlbmRpZgogICAgICAgICBpbmZvcm1hdGlvbi5pbnB1dE1vZGUgPSBlbGVtZW50
LmNhbm9uaWNhbElucHV0TW9kZSgpOwogICAgICAgICBpbmZvcm1hdGlvbi5pc1JlYWRPbmx5ID0g
ZWxlbWVudC5pc1JlYWRPbmx5KCk7CiAgICAgICAgIGluZm9ybWF0aW9uLnZhbHVlID0gZWxlbWVu
dC52YWx1ZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348056</attachid>
            <date>2018-08-24 16:45:16 -0700</date>
            <delta_ts>2018-08-27 15:45:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186714-20180824164516.patch</filename>
            <type>text/plain</type>
            <size>47312</size>
            <attacher name="Aditya Keerthi">pxlcoder</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1MzMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjAzNThjZDZlNmRkN2Zi
OWVhN2Q1ZjU4YTI1MzIwYzFjODcwMzliMi4uZDFjMGNhNmEyOGIzOWYyNTBhYjFhNjJlNGIwOWEy
MmRiODA0M2M5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE4LTA4LTI0ICBBZGl0
eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KKworICAgICAgICBbRGF0YWxpc3RdW2lP
U10gQWRkIHN1Z2dlc3Rpb25zIFVJIGZvciBUZXh0RmllbGRJbnB1dFR5cGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY3MTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPbiBpT1MsIHRoZSBkYXRhbGlz
dCBidXR0b24gc2hvdWxkIGFwcGVhciBhcyBhIGRvd253YXJkIHRyaWFuZ2xlLiBGdXJ0aGVybW9y
ZSwgdGhlCisgICAgICAgIGJ1dHRvbiBzaG91bGQgb25seSBiZSBkaXNwbGF5ZWQgaWYgdGhlIGlu
cHV0IGhhcyBmb2N1cyBhbmQgdGhlcmUgYXJlIHN1Z2dlc3RlZAorICAgICAgICB2YWx1ZXMuCisK
KyAgICAgICAgKiBjc3MvaHRtbC5jc3M6CisgICAgICAgIChpbnB1dDo6LXdlYmtpdC1saXN0LWJ1
dHRvbik6IERyYXcgdGhlIHRyaWFuZ2xlIHVzaW5nIGFuIFNWRy4KKyAgICAgICAgKiBodG1sL0Rh
dGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uLmg6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRF
bGVtZW50Lmg6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOiBBZGRlZCBs
b2dpYyB0byBzaG93IGFuZCBoaWRlIHRoZSBkYXRhbGlzdCBidXR0b24gYXMgbmVjZXNzYXJ5Lgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5kbGVGb2N1c0V2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6aGFuZGxlQmx1ckV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6ZGlkU2V0VmFsdWVCeVVzZXJF
ZGl0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6bGlzdEF0dHJpYnV0
ZVRhcmdldENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpk
aXNwbGF5U3VnZ2VzdGlvbnMpOgorCiAyMDE4LTA4LTI0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFBhc3MgaW4gSXNDb21wb3NlZCBmbGFnIHRvIEV2ZW50IGNv
bnN0cnVjdG9ycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA1MDk4MDhhYmFlNDYzMTQ2ZTNkMjUyODJiNmJmY2RjMzJl
OTk3ZTVkLi5mMmQyYTQxNTI3NWNhY2M4MTNiMjUzNGEyYjJiZTIxYzYxM2QxMDlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDk3IEBACisyMDE4LTA4LTI0ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhp
QGFwcGxlLmNvbT4KKworICAgICAgICBbRGF0YWxpc3RdW2lPU10gQWRkIHN1Z2dlc3Rpb25zIFVJ
IGZvciBUZXh0RmllbGRJbnB1dFR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODY3MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBPbiBpT1MsIHdlIGhhdmUgbGVzcyBzcGFjZSB0byBkaXNwbGF5IHN1
Z2dlc3Rpb25zIGZyb20gYSBkYXRhbGlzdCBlbGVtZW50IGNvbXBhcmVkCisgICAgICAgIHRvIG1h
Y09TLiBGdXJ0aGVybW9yZSwgaVBob25lcyBhbmQgaVBhZHMgaGF2ZSBkaWZmZXJlbnQgZm9ybSBm
YWN0b3JzLCBsZWFkaW5nIHRvIGEKKyAgICAgICAgZGlmZmVyZW50IGFwcHJvYWNoIG9uIGVhY2gg
ZGV2aWNlLiBUaGUgY29tbW9uYWxpdGllcyBvZiB0aGUgdHdvIGltcGxlbWVudGF0aW9ucworICAg
ICAgICBjYW4gYmUgZm91bmQgaW4gV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbC4gVGhpcyBj
bGFzcyBpcyBzdWJjbGFzc2VkIGJ5IHRoZQorICAgICAgICBkZXZpY2Ugc3BlY2lmaWMgaW1wbGVt
ZW50YXRpb25zLgorCisgICAgICAgIE9uIGlQaG9uZSwgd2UgZGlzcGxheSB0aGUgc3VnZ2VzdGlv
bnMgaW4gYSBVSVBpY2tlclZpZXcuIFRoaXMgdmlldyBpcyBhY2Nlc3NpYmxlCisgICAgICAgIG9u
bHkgYWZ0ZXIgdGFwcGluZyBvbiB0aGUgZGF0YWxpc3QgYnV0dG9uIGVsZW1lbnQgdG8gdGhlIHNp
ZGUgb2YgdGhlIGlucHV0IGZpZWxkLgorICAgICAgICBUaGlzIGFwcHJvYWNoIHdhcyBjaG9zZW4g
aW4gb3JkZXIgdG8gYXZvaWQgdHJpY2tpbmcgdGhlIHVzZXIgaW50byB0aGlua2luZyB0aGF0Cisg
ICAgICAgIHRoZSB2YWx1ZXMgZGlzcGxheWVkIGluIHRoZSBwaWNrZXIgYXJlIHRoZSBvbmx5IGFj
Y2VwdGVkIHZhbHVlcy4KKyAgICAgICAgV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUGlja2VyIGlzIHJl
c3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUgaW50ZXJmYWNlIHNob3duIG9uCisgICAgICAgIGlQ
aG9uZXMuCisKKyAgICAgICAgT24gaVBhZCwgd2UgZGlzcGxheSB0aGUgc3VnZ2VzdGlvbnMgaW4g
YSBwb3BvdmVyLCB0aGF0IGlzIHZpc2libGUgYWxvbmdzaWRlIHRoZQorICAgICAgICBrZXlib2Fy
ZC4gVGhlIHN1Z2dlc3Rpb25zIGluIHRoZSBwb3BvdmVyIHVwZGF0ZSBhcyB0aGUgdXNlciB0eXBl
cy4KKyAgICAgICAgV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUG9wb3ZlciBpcyByZXNwb25zaWJsZSBm
b3IgbWFuYWdpbmcgdGhlIGludGVyZmFjZSBzaG93biBvbgorICAgICAgICBpUGFkcy4KKworICAg
ICAgICBCb3RoIGRldmljZXMgZGlzcGxheSBwcmVkaWN0aXZlIHRleHQgc3VnZ2VzdGlvbnMsIHRh
a2luZyB0aGUgZmlyc3QgdGhyZWUgdmFsdWVzCisgICAgICAgIGZyb20gdGhlIGZpbHRlcmVkIHN1
Z2dlc3Rpb25zIGxpc3QuIEluIG9yZGVyIHRvIHByZXZlbnQgb3RoZXIgY2xpZW50cyBmcm9tCisg
ICAgICAgIG92ZXJ3cml0aW5nIHRoZSBzdWdnZXN0aW9ucyBwcm92aWRlZCBieSB0aGUgZGF0YWxp
c3QgZWxlbWVudCwgd2UgcHJldmVudCB3cml0aW5nCisgICAgICAgIHRvIHRoZSBwcmVkaWN0aXZl
IHRleHQgYmFyIGlmIGFuIGlucHV0IHdpdGggdGhlIGxpc3QgYXR0cmlidXRlIGlzIHRoZSBjdXJy
ZW50bHkKKyAgICAgICAgYXNzaXN0ZWQgbm9kZS4KKworICAgICAgICAqIFNoYXJlZC9Bc3Npc3Rl
ZE5vZGVJbmZvcm1hdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OkFzc2lzdGVkTm9kZUluZm9y
bWF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpBc3Npc3RlZE5vZGVJbmZv
cm1hdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRp
b24uaDoKKyAgICAgICAgKiBTaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0
aW9uLmg6CisgICAgICAgICogU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRp
b246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRp
b25BdFBvc2l0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5oOiBBZGRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9T
Lm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bk
b3duSU9TOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25z
RHJvcGRvd25JT1M6OldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUyk6CisgICAgICAg
IChXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUzo6c2hvdyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUzo6aGFuZGxlS2V5
ZG93bldpdGhJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0
aW9uc0Ryb3Bkb3duSU9TOjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFMaXN0U3Vn
Z2VzdGlvbnNEcm9wZG93bklPUzo6ZGlkU2VsZWN0T3B0aW9uKToKKyAgICAgICAgKC1bV0tEYXRh
TGlzdFN1Z2dlc3Rpb25zQ29udHJvbCBpbml0V2l0aEluZm9ybWF0aW9uOmluVmlldzpdKToKKyAg
ICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbCB1cGRhdGVXaXRoSW5mb3JtYXRp
b246XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2wgc2hvd1N1Z2dl
c3Rpb25zRHJvcGRvd246YWN0aXZhdGlvblR5cGU6XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RT
dWdnZXN0aW9uc0NvbnRyb2wgZGlkU2VsZWN0T3B0aW9uQXRJbmRleDpdKToKKyAgICAgICAgKC1b
V0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbCBpbnZhbGlkYXRlXSk6CisgICAgICAgICgtW1dL
RGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2wgdGV4dFN1Z2dlc3Rpb25zXSk6CisgICAgICAgICgt
W1dLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2wgc3VnZ2VzdGlvbnNDb3VudF0pOgorICAgICAg
ICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sIHN1Z2dlc3Rpb25BdEluZGV4Ol0pOgor
ICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sIHRleHRBbGlnbm1lbnRdKToK
KyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUGlja2VyIGluaXRXaXRoSW5mb3JtYXRp
b246aW5WaWV3Ol0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQaWNrZXIgdXBk
YXRlV2l0aEluZm9ybWF0aW9uOl0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQ
aWNrZXIgc2hvd1N1Z2dlc3Rpb25zRHJvcGRvd246YWN0aXZhdGlvblR5cGU6XSk6CisgICAgICAg
ICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc1BpY2tlciBudW1iZXJPZkNvbXBvbmVudHNJblBpY2tl
clZpZXc6XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc1BpY2tlciBwaWNrZXJW
aWV3Om51bWJlck9mUm93c0luQ29tcG9uZW50Ol0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3Vn
Z2VzdGlvbnNQaWNrZXIgcGlja2VyVmlldzp0aXRsZUZvclJvdzpmb3JDb21wb25lbnQ6XSk6Cisg
ICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc1BpY2tlciBpbnZhbGlkYXRlXSk6CisgICAg
ICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc1BpY2tlclZpZXcgZW5kRWRpdGluZ10pOgorICAg
ICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQb3BvdmVyIGluaXRXaXRoSW5mb3JtYXRpb246
aW5WaWV3Ol0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQb3BvdmVyIHVwZGF0
ZVdpdGhJbmZvcm1hdGlvbjpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUG9w
b3ZlciBzaG93U3VnZ2VzdGlvbnNEcm9wZG93bjphY3RpdmF0aW9uVHlwZTpdKToKKyAgICAgICAg
KC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUG9wb3ZlciBpbnZhbGlkYXRlXSk6CisgICAgICAgICgt
W1dLRGF0YUxpc3RTdWdnZXN0aW9uc1BvcG92ZXIgZGlkU2VsZWN0T3B0aW9uQXRJbmRleDpdKToK
KyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zVmlld0NvbnRyb2xsZXIgcmVsb2FkRGF0
YV0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlciB0YWJs
ZVZpZXc6bnVtYmVyT2ZSb3dzSW5TZWN0aW9uOl0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3Vn
Z2VzdGlvbnNWaWV3Q29udHJvbGxlciB0YWJsZVZpZXc6Y2VsbEZvclJvd0F0SW5kZXhQYXRoOl0p
OgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlciB0YWJsZVZp
ZXc6ZGlkU2VsZWN0Um93QXRJbmRleFBhdGg6XSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGFnZURpZFNjcm9s
bCk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZURhdGFMaXN0U3VnZ2VzdGlvbnNEcm9w
ZG93bik6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToK
KyAgICAgICAgKC1bV0tGb3JtSW5wdXRTZXNzaW9uIGVuZEVkaXRpbmddKToKKyAgICAgICAgKC1b
V0tGb3JtSW5wdXRTZXNzaW9uIHNldFN1Z2dlc3Rpb25zOl0pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IF9mb3JtSW5wdXRTZXNzaW9uXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgcmVz
aWduRmlyc3RSZXNwb25kZXJGb3JXZWJWaWV3XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
dGV4dEludGVyYWN0aW9uR2VzdHVyZTpzaG91bGRCZWdpbkF0UG9pbnQ6XSk6CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgYWNjZXNzb3J5VGFiOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IGluc2VydFRleHRTdWdnZXN0aW9uOl0pOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkQ2xvc2VTdWdnZXN0aW9ucyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6Z2V0QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24pOgorCiAyMDE4LTA4LTIzICBKZWZmIE1p
bGxlciAgPGplZmZtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgLVtXS05hdmlnYXRpb25E
ZWxlZ2F0ZSBfd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JQbHVnaW5Mb2FkV2l0aEN1cnJlbnRQb2xp
Y3k6cGx1Z2luSW5mbzp1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uOl0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9odG1sLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9odG1sLmNzcwpp
bmRleCBlNmIxODllMGVjYTE4MDg2NjMxZDQ4MGYyMWExZDM2ZWZiOTY4M2JiLi4wOWQ3NzRkODNm
NTQ5ZWMwNTI1OGIwNDJhOTE4ODRkZDlhMGJlMTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvaHRtbC5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL2h0bWwuY3NzCkBAIC02MjYs
NyArNjI2LDE0IEBAIGlucHV0Ojotd2Via2l0LWxpc3QtYnV0dG9uIHsKICAgICBmbGV4OiBub25l
OwogICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgd2lkdGg6IDE2cHg7CisjaWYg
ZGVmaW5lZChXVEZfUExBVEZPUk1fSU9TKSAmJiBXVEZfUExBVEZPUk1fSU9TCisgICAgY29udGVu
dDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHN0cm9rZT0iYmxhY2siIGZpbGw9ImJsYWNrIiB3aWR0aD0iMTYiIGhlaWdodD0i
MTYiPjxwb2x5Z29uIHBvaW50cz0iOCAxMS4wMzEsIDQuNSA0Ljk2OSwgMTEuNSA0Ljk2OSIvPjwv
c3ZnPicpOworICAgIC8qIE1ha2UgaXQgZWFzaWVyIHRvIGhpdCB0aGUgYnV0dG9uIG9uIGlPUyAq
LworICAgIHBhZGRpbmc6IDdweDsKKyAgICBtYXJnaW46IC03cHg7CisjZWxzZQogICAgIGhlaWdo
dDogMTAwJTsKKyNlbmRpZgogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24uaAppbmRleCA4YzQ0OWVmOTk5NGM2MDNj
YzRmNWVjOGE1YWQ5OTM5NTBhMDU1OWZlLi41Nzk0NTFhNTk4MzJmZGRmZmM5Yjk4ZjQwY2Q5NTk1
NTY4Y2VmYzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGFMaXN0U3VnZ2Vz
dGlvbkluZm9ybWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRhTGlzdFN1Z2dl
c3Rpb25JbmZvcm1hdGlvbi5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpZiBFTkFCTEUo
REFUQUxJU1RfRUxFTUVOVCkKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmgKaW5kZXggZTMyYjM4OTNlYjRhYzc5NmM2NmUwOGMxYmRhN2YzZTQ3
MjllYzhkMy4uNGNlODliMTYwMDNlZTVlZmI5OGEwYzhmN2MzZTM5MDgzYTIwNGEyOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTE1MSw3ICsxNTEsNyBAQCBwdWJs
aWM6CiAgICAgSFRNTEVsZW1lbnQqIHBsYWNlaG9sZGVyRWxlbWVudCgpIGNvbnN0IGZpbmFsOwog
ICAgIFdFQkNPUkVfRVhQT1JUIEhUTUxFbGVtZW50KiBhdXRvRmlsbEJ1dHRvbkVsZW1lbnQoKSBj
b25zdDsKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLSAgICBIVE1MRWxlbWVudCogZGF0
YUxpc3RCdXR0b25FbGVtZW50KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgSFRNTEVsZW1l
bnQqIGRhdGFMaXN0QnV0dG9uRWxlbWVudCgpIGNvbnN0OwogI2VuZGlmCiAKICAgICBib29sIGNo
ZWNrZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2hlY2tlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCmluZGV4IDEzYzMxYmE2MWFhMmFjY2YzMjBlNjNkMjBh
MTMxNGQwNDg1ZmZmYmIuLjkyOTM3MDg3OTM5NGM2NzQxYzljY2QwMWZkNzk2NTM4NDA2NTZiNDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKQEAgLTI2MCw4
ICsyNjAsMTMgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmhhbmRsZUZvY3VzRXZlbnQoTm9k
ZSogb2xkRm9jdXNlZE5vZGUsIEZvY3VzRGlyZWN0aW9uKQogewogICAgIEFTU0VSVChlbGVtZW50
KCkpOwogICAgIEFTU0VSVF9VTlVTRUQob2xkRm9jdXNlZE5vZGUsIG9sZEZvY3VzZWROb2RlICE9
IGVsZW1lbnQoKSk7Ci0gICAgaWYgKFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBlbGVtZW50KCktPmRv
Y3VtZW50KCkuZnJhbWUoKSkKKyAgICBpZiAoUmVmUHRyPEZyYW1lPiBmcmFtZSA9IGVsZW1lbnQo
KS0+ZG9jdW1lbnQoKS5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50ZXh0Rmll
bGREaWRCZWdpbkVkaXRpbmcoZWxlbWVudCgpKTsKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVO
VCkgJiYgUExBVEZPUk0oSU9TKQorICAgICAgICBpZiAoZWxlbWVudCgpLT5saXN0KCkgJiYgbV9k
YXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yKQorICAgICAgICAgICAgbV9kYXRhTGlzdERyb3Bkb3du
SW5kaWNhdG9yLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSwgc3Vn
Z2VzdGlvbnMoKS5zaXplKCkgPyBDU1NWYWx1ZUJsb2NrIDogQ1NTVmFsdWVOb25lLCB0cnVlKTsK
KyNlbmRpZgorICAgIH0KIH0KIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmhhbmRsZUJsdXJF
dmVudCgpCkBAIC0yNjksNiArMjc0LDEwIEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5k
bGVCbHVyRXZlbnQoKQogICAgIElucHV0VHlwZTo6aGFuZGxlQmx1ckV2ZW50KCk7CiAgICAgQVNT
RVJUKGVsZW1lbnQoKSk7CiAgICAgZWxlbWVudCgpLT5lbmRFZGl0aW5nKCk7CisjaWYgRU5BQkxF
KERBVEFMSVNUX0VMRU1FTlQpICYmIFBMQVRGT1JNKElPUykKKyAgICBpZiAoZWxlbWVudCgpLT5s
aXN0KCkgJiYgbV9kYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yKQorICAgICAgICBtX2RhdGFMaXN0
RHJvcGRvd25JbmRpY2F0b3ItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlEaXNw
bGF5LCBDU1NWYWx1ZU5vbmUsIHRydWUpOworI2VuZGlmCiB9CiAKIGJvb2wgVGV4dEZpZWxkSW5w
dXRUeXBlOjpzaG91bGRTdWJtaXRJbXBsaWNpdGx5KEV2ZW50JiBldmVudCkKQEAgLTY0OCw2ICs2
NTcsMTAgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmRpZFNldFZhbHVlQnlVc2VyRWRpdCgp
CiAgICAgaWYgKFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBlbGVtZW50KCktPmRvY3VtZW50KCkuZnJh
bWUoKSkKICAgICAgICAgZnJhbWUtPmVkaXRvcigpLnRleHREaWRDaGFuZ2VJblRleHRGaWVsZChl
bGVtZW50KCkpOwogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorI2lmIFBMQVRGT1JNKElP
UykKKyAgICBpZiAoZWxlbWVudCgpLT5saXN0KCkgJiYgbV9kYXRhTGlzdERyb3Bkb3duSW5kaWNh
dG9yKQorICAgICAgICBtX2RhdGFMaXN0RHJvcGRvd25JbmRpY2F0b3ItPnNldElubGluZVN0eWxl
UHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBzdWdnZXN0aW9ucygpLnNpemUoKSA/IENTU1Zh
bHVlQmxvY2sgOiBDU1NWYWx1ZU5vbmUsIHRydWUpOworI2VuZGlmCiAgICAgaWYgKGVsZW1lbnQo
KS0+bGlzdCgpKQogICAgICAgICBkaXNwbGF5U3VnZ2VzdGlvbnMoRGF0YUxpc3RTdWdnZXN0aW9u
QWN0aXZhdGlvblR5cGU6OlRleHRDaGFuZ2VkKTsKICNlbmRpZgpAQCAtODAyLDcgKzgxNSw5IEBA
IHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpsaXN0QXR0cmlidXRlVGFyZ2V0Q2hhbmdlZCgpCiAg
ICAgaWYgKCFtX2RhdGFMaXN0RHJvcGRvd25JbmRpY2F0b3IpCiAgICAgICAgIHJldHVybjsKIAor
I2lmICFQTEFURk9STShJT1MpCiAgICAgbV9kYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yLT5zZXRJ
bmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSwgZWxlbWVudCgpLT5saXN0KCkg
PyBDU1NWYWx1ZUJsb2NrIDogQ1NTVmFsdWVOb25lLCB0cnVlKTsKKyNlbmRpZgogfQogCiBIVE1M
RWxlbWVudCogVGV4dEZpZWxkSW5wdXRUeXBlOjpkYXRhTGlzdEJ1dHRvbkVsZW1lbnQoKSBjb25z
dApAQCAtODU5LDcgKzg3NCwxMiBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6ZGlzcGxheVN1
Z2dlc3Rpb25zKERhdGFMaXN0U3VnZ2VzdGlvbkFjdGl2YXRpb25UeXBlIHR5cAogICAgIGlmIChl
bGVtZW50KCktPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpIHx8ICFlbGVtZW50KCktPnJlbmRlcmVy
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghVXNlckdlc3R1cmVJbmRpY2F0b3I6OnBy
b2Nlc3NpbmdVc2VyR2VzdHVyZSgpKQorICAgIGJvb2wgdXNlckFjdGl2YXRlZCA9IFVzZXJHZXN0
dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKTsKKyNpZiBQTEFURk9STShJT1Mp
CisgICAgdXNlckFjdGl2YXRlZCB8PSAodHlwZSA9PSBEYXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0
aW9uVHlwZTo6VGV4dENoYW5nZWQpOworI2VuZGlmCisKKyAgICBpZiAoIXVzZXJBY3RpdmF0ZWQp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9zdWdnZXN0aW9uUGlja2VyICYmIHN1Z2dl
c3Rpb25zKCkuc2l6ZSgpID4gMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fz
c2lzdGVkTm9kZUluZm9ybWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lzdGVk
Tm9kZUluZm9ybWF0aW9uLmNwcAppbmRleCAyMTA5NzNiZTVhOTljOTNlN2UzYzI5NzBjZDY5ZTI3
NTg3NGI1ZjBlLi5jMWE0MzM1ZDRkZGY5MDJhYWQyYzdmMjQ1NzkxNjA3N2RkYjc1MWQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uY3BwCkBA
IC05Nyw5ICs5NywxMiBAQCB2b2lkIEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uOjplbmNvZGUoSVBD
OjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbGFiZWw7CiAgICAgZW5j
b2RlciA8PCBhcmlhTGFiZWw7CiAgICAgZW5jb2RlciA8PCBhc3Npc3RlZE5vZGVJZGVudGlmaWVy
OwotI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKSAmJiBFTkFCTEUoREFUQUxJU1RfRUxFTUVO
VCkKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICBlbmNvZGVyIDw8IGhhc1N1Z2dl
c3Rpb25zOworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogICAgIGVuY29kZXIgPDwgc3Vn
Z2VzdGVkQ29sb3JzOwogI2VuZGlmCisjZW5kaWYKIH0KIAogYm9vbCBBc3Npc3RlZE5vZGVJbmZv
cm1hdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgQXNzaXN0ZWROb2RlSW5mb3Jt
YXRpb24mIHJlc3VsdCkKQEAgLTIwNiw5ICsyMDksMTQgQEAgYm9vbCBBc3Npc3RlZE5vZGVJbmZv
cm1hdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgQXNzaXN0ZWROb2RlSW5mb3Jt
YXQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5hc3Npc3RlZE5vZGVJZGVudGlmaWVy
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1Ip
ICYmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5U
KQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lmhhc1N1Z2dlc3Rpb25zKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc3VnZ2VzdGVkQ29sb3JzKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOworI2VuZGlmCiAjZW5kaWYKIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmgKaW5kZXggNjY3MTZkNDAzMjkx
MWUxZjFkNzNhMDM5ODU5YTk2NjM3MTIyNDhkZC4uNDMzNjM4Yjk0OGRmMDk3OGFiM2MxYmQxYmEx
YTNiNzQxZGRmYTZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWRO
b2RlSW5mb3JtYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5vZGVJ
bmZvcm1hdGlvbi5oCkBAIC0xMjUsOCArMTI1LDExIEBAIHN0cnVjdCBBc3Npc3RlZE5vZGVJbmZv
cm1hdGlvbiB7CiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyOwogICAgIFN0cmluZyBsYWJlbDsKICAg
ICBTdHJpbmcgYXJpYUxhYmVsOwotI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKSAmJiBFTkFC
TEUoREFUQUxJU1RfRUxFTUVOVCkKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICBi
b29sIGhhc1N1Z2dlc3Rpb25zIHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xP
UikKICAgICBWZWN0b3I8V2ViQ29yZTo6Q29sb3I+IHN1Z2dlc3RlZENvbG9yczsKKyNlbmRpZgog
I2VuZGlmCiAKICAgICB1aW50NjRfdCBhc3Npc3RlZE5vZGVJZGVudGlmaWVyIHsgMCB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25B
dFBvc2l0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb24uaAppbmRleCA5Yjk1MzNlMDcyZGE4MGRjM2RkYmMxYmQwMWM1MWIyNzBj
YjNmMjljLi4zZDA4Njg5ZmUxNzZkZDdhNjE3MmExMzdjMDU4M2RjZWE3MzcyZjYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9z
aXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb24uaApAQCAtNTUsNiArNTUsOSBAQCBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZv
cm1hdGlvbkF0UG9zaXRpb24gewogICAgIGJvb2wgaXNFbGVtZW50IHsgZmFsc2UgfTsKICNpZiBF
TkFCTEUoREFUQV9ERVRFQ1RJT04pCiAgICAgYm9vbCBpc0RhdGFEZXRlY3RvckxpbmsgeyBmYWxz
ZSB9OworI2VuZGlmCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgYm9vbCBwcmV2
ZW50VGV4dEludGVyYWN0aW9uIHsgZmFsc2UgfTsKICNlbmRpZgogICAgIFdlYkNvcmU6OkZsb2F0
UG9pbnQgYWRqdXN0ZWRQb2ludEZvck5vZGVSZXNwb25kaW5nVG9DbGlja0V2ZW50czsKICAgICBX
ZWJDb3JlOjpVUkwgdXJsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0lu
dGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
aW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tCmluZGV4IGNhZjNiM2U1Nzg5
Mjg0MjhlNzQ2NjEzMzU2N2U1NmE1MWQyOGYxY2QuLmEzOWFmMjIyNTgyYWE2NTdjMjdlZGUwNjlj
NWMzNmUyNWJiNjFhZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRl
cmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW0KQEAgLTgyLDYgKzgyLDkg
QEAgdm9pZCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6ZW5jb2RlKElQQzo6RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKICAgICAgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgcmVpbnRl
cnByZXRfY2FzdDxDRkRhdGFSZWY+KGFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhKSk7CiAgICAg
fQogI2VuZGlmCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgZW5jb2RlciA8PCBw
cmV2ZW50VGV4dEludGVyYWN0aW9uOworI2VuZGlmCiB9CiAKIGJvb2wgSW50ZXJhY3Rpb25JbmZv
cm1hdGlvbkF0UG9zaXRpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJiByZXN1bHQpCkBAIC0xODYsNiArMTg5LDExIEBAIGJv
b2wgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246OmRlY29kZShJUEM6OkRlY29kZXIm
IGRlY29kZXIsIEludGVyYWN0aW9uCiAgICAgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoREFUQUxJ
U1RfRUxFTUVOVCkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wcmV2ZW50VGV4dElu
dGVyYWN0aW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGQ4YTNjOTBkZmZlMzIyMzIyZDc2
M2VlMjFlN2NiYTQ1MGZlODVmY2YuLjUzNmM0NjM3NGFhOTIxODkyYmZlNjk4ZTAzZTk3ZjdjNGU5
MjRkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTM0OSw2ICszNDksNyBAQCBVSVByb2Nl
c3MvR2FtZXBhZC9pb3MvVUlHYW1lcGFkUHJvdmlkZXJJT1MubW0KIFVJUHJvY2Vzcy9HYW1lcGFk
L21hYy9VSUdhbWVwYWRQcm92aWRlck1hYy5tbQogCiBVSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50
ZXJhY3Rpb25TdGF0ZS5tbQorVUlQcm9jZXNzL2lvcy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJv
cGRvd25JT1MubW0KIAogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0FpclBsYXlSb3V0ZVBpY2tlci5t
bQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5tbQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZTA3MmJjMjFiZDY5ODFk
YjEwZTQwN2Y2NWFlYThiYmQ0MjQzMWIzYy4uOGU0ZmU1YTc4Mzc5ZmRhMGU1MGZmMTA1MGQzOTJi
ODlmMmU0MjE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBA
IC00NTkxLDcgKzQ1OTEsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBhZ2VEaWRTY3JvbGwoKQog
ICAgIGlmIChtX2lzS2V5Ym9hcmRBbmltYXRpbmdJbikKICAgICAgICAgcmV0dXJuOwogI2VuZGlm
CisKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgIGNsb3NlT3ZlcmxheWVkVmlld3MoKTsKKyNlbmRp
ZgogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuT3BlblBhbmVsKHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgY29uc3QgRmls
ZUNob29zZXJTZXR0aW5ncyYgc2V0dGluZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggNjI5YjI5OTEzZGMwYjk2MjgyNDRiMTdh
NmQzNTVhNTU5M2ZmNGQ2My4uZmUzMmQzZjNhYjdjMThjNTEwYmNiYTJlMGM5YjY3MjJlNGEwMzdh
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5tbQpAQCAtNDgsNiArNDgsNyBAQAogI2ltcG9ydCAiV0tXZWJWaWV3Q29udGVudFByb3ZpZGVy
UmVnaXN0cnkuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJD
b250ZXh0TWVudVByb3h5LmgiCisjaW1wb3J0ICJXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRv
d25JT1MuaCIKICNpbXBvcnQgIldlYkVkaXRDb21tYW5kUHJveHkuaCIKICNpbXBvcnQgIldlYlBy
b2Nlc3NQcm94eS5oIgogI2ltcG9ydCAiX1dLRG93bmxvYWRJbnRlcm5hbC5oIgpAQCAtNzczLDcg
Kzc3NCw3IEBAIFJlZlB0cjxXZWJDb2xvclBpY2tlcj4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNv
bG9yUGlja2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VM
RU1FTlQpCiBSZWZQdHI8V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duPiBQYWdlQ2xpZW50
SW1wbDo6Y3JlYXRlRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duKFdlYlBhZ2VQcm94eSYgcGFn
ZSkKIHsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gV2ViRGF0YUxpc3RTdWdnZXN0
aW9uc0Ryb3Bkb3duSU9TOjpjcmVhdGUocGFnZSwgbV9jb250ZW50Vmlldyk7CiB9CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5oCmluZGV4IGEyMjgzMGFkZmYzYzg0YjdiNWFlNGRkZTlmYjNhNDEyYmE3NjIy
ZTUuLmUzZjQ1MzA0M2U5NGQ3Yjg5NzEzNDk3Y2YxZTg3OWM2MGFhMGJjMWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
LmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbXBvcnQgIldLRm9ybVBlcmlwaGVyYWwuaCIKICNpbXBv
cnQgIldLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oIgogI2ltcG9ydCAiV0tTeW50aGV0aWND
bGlja1RhcEdlc3R1cmVSZWNvZ25pemVyLmgiCisjaW1wb3J0ICJfV0tGb3JtSW5wdXRTZXNzaW9u
LmgiCiAjaW1wb3J0IDxVSUtpdC9VSVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3IuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRRdWFkLmg+CkBAIC0xNDEsNiArMTQyLDE2IEBAIHN0cnVj
dCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAKIH0KIAorQGNsYXNzIFdLRm9jdXNlZEVsZW1lbnRJ
bmZvOworCitAaW50ZXJmYWNlIFdLRm9ybUlucHV0U2Vzc2lvbiA6IE5TT2JqZWN0IDxfV0tGb3Jt
SW5wdXRTZXNzaW9uPgorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb250ZW50VmlldzooV0tD
b250ZW50VmlldyAqKXZpZXcgZm9jdXNlZEVsZW1lbnRJbmZvOihXS0ZvY3VzZWRFbGVtZW50SW5m
byAqKWVsZW1lbnRJbmZvIHJlcXVpcmVzU3Ryb25nUGFzc3dvcmRBc3Npc3RhbmNlOihCT09MKXJl
cXVpcmVzU3Ryb25nUGFzc3dvcmRBc3Npc3RhbmNlOworLSAodm9pZCllbmRFZGl0aW5nOworLSAo
dm9pZClpbnZhbGlkYXRlOworCitAZW5kCisKIEBpbnRlcmZhY2UgV0tDb250ZW50VmlldyAoKSB7
CiAgICAgUmV0YWluUHRyPFVJV2ViVG91Y2hFdmVudHNHZXN0dXJlUmVjb2duaXplcj4gX3RvdWNo
RXZlbnRHZXN0dXJlUmVjb2duaXplcjsKIApAQCAtMzM0LDYgKzM0NSw3IEBAIEZPUl9FQUNIX1dL
Q09OVEVOVFZJRVdfQUNUSU9OKERFQ0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dFQl9W
SUVXKQogLSAodm9pZClfYWNjZXNzaWJpbGl0eVJldHJpZXZlUmVjdHNBdFNlbGVjdGlvbk9mZnNl
dDooTlNJbnRlZ2VyKW9mZnNldCB3aXRoVGV4dDooTlNTdHJpbmcgKil0ZXh0OwogLSAodm9pZClf
YWNjZXNzaWJpbGl0eVN0b3JlU2VsZWN0aW9uOwogLSAodm9pZClfYWNjZXNzaWJpbGl0eUNsZWFy
U2VsZWN0aW9uOworLSAoV0tGb3JtSW5wdXRTZXNzaW9uICopX2Zvcm1JbnB1dFNlc3Npb247CiAK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9y
bWF0aW9uQXRQb3NpdGlvbiBjdXJyZW50UG9zaXRpb25JbmZvcm1hdGlvbjsKIC0gKHZvaWQpZG9B
ZnRlclBvc2l0aW9uSW5mb3JtYXRpb25VcGRhdGU6KHZvaWQgKF4pKFdlYktpdDo6SW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24pKWFjdGlvbiBmb3JSZXF1ZXN0OihXZWJLaXQ6OkludGVy
YWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0KXJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBmNzVj
MTNiMDQ1MTUwMjRmZDY4OWVhYWJlNmRlNDRlMGE4MzA3NjZkLi4wYWJjYTc1ODE4NWIzOWJmZWUy
OTU5MjZiNDQ2NDdhYTliNDYxZDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTYwLDYgKzYwLDcgQEAK
ICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgiCiAjaW1wb3J0ICJXS1dl
YlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3UHJpdmF0ZS5oIgorI2ltcG9ydCAi
V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLmgiCiAjaW1wb3J0ICJXZWJFdmVudC5o
IgogI2ltcG9ydCAiV2ViSU9TRXZlbnRGYWN0b3J5LmgiCiAjaW1wb3J0ICJXZWJQYWdlTWVzc2Fn
ZXMuaCIKQEAgLTY3LDcgKzY4LDYgQEAKICNpbXBvcnQgIl9XS0FjdGl2YXRlZEVsZW1lbnRJbmZv
SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0VsZW1lbnRBY3Rpb24uaCIKICNpbXBvcnQgIl9XS0Zv
Y3VzZWRFbGVtZW50SW5mby5oIgotI2ltcG9ydCAiX1dLRm9ybUlucHV0U2Vzc2lvbi5oIgogI2lt
cG9ydCAiX1dLSW5wdXREZWxlZ2F0ZS5oIgogI2ltcG9ydCA8Q29yZVRleHQvQ1RGb250Lmg+CiAj
aW1wb3J0IDxDb3JlVGV4dC9DVEZvbnREZXNjcmlwdG9yLmg+CkBAIC0yODQsMTMgKzI4NCw2IEBA
IGNvbnN0IENHRmxvYXQgbWluaW11bVRhcEhpZ2hsaWdodFJhZGl1cyA9IDIuMDsKIC0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uOihjb25zdCBBc3Npc3RlZE5v
ZGVJbmZvcm1hdGlvbiYpaW5mb3JtYXRpb24gaXNVc2VySW5pdGlhdGVkOihCT09MKWlzVXNlcklu
aXRpYXRlZCB1c2VyT2JqZWN0OihOU09iamVjdCA8TlNTZWN1cmVDb2Rpbmc+ICopdXNlck9iamVj
dDsKIEBlbmQKIAotQGludGVyZmFjZSBXS0Zvcm1JbnB1dFNlc3Npb24gOiBOU09iamVjdCA8X1dL
Rm9ybUlucHV0U2Vzc2lvbj4KLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29udGVudFZpZXc6
KFdLQ29udGVudFZpZXcgKil2aWV3IGZvY3VzZWRFbGVtZW50SW5mbzooV0tGb2N1c2VkRWxlbWVu
dEluZm8gKillbGVtZW50SW5mbyByZXF1aXJlc1N0cm9uZ1Bhc3N3b3JkQXNzaXN0YW5jZTooQk9P
TClyZXF1aXJlc1N0cm9uZ1Bhc3N3b3JkQXNzaXN0YW5jZTsKLS0gKHZvaWQpaW52YWxpZGF0ZTsK
LQotQGVuZAotCiBAaW1wbGVtZW50YXRpb24gV0tGb3JtSW5wdXRTZXNzaW9uIHsKICAgICBXZWFr
T2JqQ1B0cjxXS0NvbnRlbnRWaWV3PiBfY29udGVudFZpZXc7CiAgICAgUmV0YWluUHRyPFdLRm9j
dXNlZEVsZW1lbnRJbmZvPiBfZm9jdXNlZEVsZW1lbnRJbmZvOwpAQCAtMzg1LDYgKzM3OCwxMiBA
QCBjb25zdCBDR0Zsb2F0IG1pbmltdW1UYXBIaWdobGlnaHRSYWRpdXMgPSAyLjA7CiAgICAgW19j
b250ZW50VmlldyByZWxvYWRJbnB1dFZpZXdzXTsKIH0KIAorLSAodm9pZCllbmRFZGl0aW5nCit7
CisgICAgaWYgKFtfY3VzdG9tSW5wdXRWaWV3IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
ZW5kRWRpdGluZyldKQorICAgICAgICBbX2N1c3RvbUlucHV0VmlldyBwZXJmb3JtU2VsZWN0b3I6
QHNlbGVjdG9yKGVuZEVkaXRpbmcpXTsKK30KKwogLSAoTlNBcnJheTxVSVRleHRTdWdnZXN0aW9u
ICo+ICopc3VnZ2VzdGlvbnMKIHsKICAgICByZXR1cm4gX3N1Z2dlc3Rpb25zLmdldCgpOwpAQCAt
MzkyLDYgKzM5MSwxNSBAQCBjb25zdCBDR0Zsb2F0IG1pbmltdW1UYXBIaWdobGlnaHRSYWRpdXMg
PSAyLjA7CiAKIC0gKHZvaWQpc2V0U3VnZ2VzdGlvbnM6KE5TQXJyYXk8VUlUZXh0U3VnZ2VzdGlv
biAqPiAqKXN1Z2dlc3Rpb25zCiB7CisgICAgLy8gU3VnZ2VzdGlvbnMgdGhhdCBjb21lIGZyb20g
YSA8ZGF0YWxpc3Q+IHNob3VsZCBub3QgYmUgb3ZlcndyaXR0ZW4gYnkgb3RoZXIgY2xpZW50cy4K
KyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICBpZiAoX2NvbnRlbnRWaWV3LmdldCgp
CisgICAgICAgICYmIFtfY29udGVudFZpZXcgYXNzaXN0ZWROb2RlSW5mb3JtYXRpb25dLmhhc1N1
Z2dlc3Rpb25zCisgICAgICAgICYmICFbc3VnZ2VzdGlvbnMuZmlyc3RPYmplY3QgaXNLaW5kT2ZD
bGFzczpbV0tEYXRhTGlzdFRleHRTdWdnZXN0aW9uIGNsYXNzXV0pIHsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyNlbmRpZgorCiAgICAgaWQgPFVJVGV4dElucHV0U3VnZ2VzdGlvbkRlbGVnYXRl
PiBzdWdnZXN0aW9uRGVsZWdhdGUgPSAoaWQgPFVJVGV4dElucHV0U3VnZ2VzdGlvbkRlbGVnYXRl
PilbX2NvbnRlbnRWaWV3IGlucHV0RGVsZWdhdGVdOwogICAgIF9zdWdnZXN0aW9ucyA9IGFkb3B0
TlMoW3N1Z2dlc3Rpb25zIGNvcHldKTsKICAgICBbc3VnZ2VzdGlvbkRlbGVnYXRlIHNldFN1Z2dl
c3Rpb25zOnN1Z2dlc3Rpb25zXTsKQEAgLTU5NSw2ICs2MDMsMTEgQEAgc3RhdGljIGlubGluZSBi
b29sIGhhc0Fzc2lzdGVkTm9kZShXZWJLaXQ6OkFzc2lzdGVkTm9kZUluZm9ybWF0aW9uIGFzc2lz
dGVkTm9kZUkKICAgICByZXR1cm4gKGFzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmVsZW1lbnRUeXBl
ICE9IElucHV0VHlwZTo6Tm9uZSk7CiB9CiAKKy0gKFdLRm9ybUlucHV0U2Vzc2lvbiAqKV9mb3Jt
SW5wdXRTZXNzaW9uCit7CisgICAgcmV0dXJuIF9mb3JtSW5wdXRTZXNzaW9uLmdldCgpOworfQor
CiAtICh2b2lkKV9jcmVhdGVBbmRDb25maWd1cmVEb3VibGVUYXBHZXN0dXJlUmVjb2duaXplcgog
ewogICAgIF9kb3VibGVUYXBHZXN0dXJlUmVjb2duaXplciA9IGFkb3B0TlMoW1tVSVRhcEdlc3R1
cmVSZWNvZ25pemVyIGFsbG9jXSBpbml0V2l0aFRhcmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3Io
X2RvdWJsZVRhcFJlY29nbml6ZWQ6KV0pOwpAQCAtOTk1LDYgKzEwMDgsOCBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgaGFzQXNzaXN0ZWROb2RlKFdlYktpdDo6QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24g
YXNzaXN0ZWROb2RlSQogICAgIGlmICghX3dlYlZpZXctPl9hY3RpdmVGb2N1c2VkU3RhdGVSZXRh
aW5Db3VudCkgewogICAgICAgICAvLyBXZSBuZWVkIHRvIGNvbXBsZXRlIHRoZSBlZGl0aW5nIG9w
ZXJhdGlvbiBiZWZvcmUgd2UgYmx1ciB0aGUgZWxlbWVudC4KICAgICAgICAgW19pbnB1dFBlcmlw
aGVyYWwgZW5kRWRpdGluZ107CisgICAgICAgIFtfZm9ybUlucHV0U2Vzc2lvbiBlbmRFZGl0aW5n
XTsKKwogICAgICAgICBfcGFnZS0+Ymx1ckFzc2lzdGVkTm9kZSgpOwogICAgIH0KIApAQCAtMTcz
OSw2ICsxNzU0LDExIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NhbWVQYWlyKFVJR2VzdHVyZVJl
Y29nbml6ZXIgKmEsIFVJR2VzdHVyZVJlY29nbml6ZXIgKmIsIFVJCiAgICAgfQogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICBpZiAoX3Bvc2l0aW9uSW5mb3JtYXRp
b24ucHJldmVudFRleHRJbnRlcmFjdGlvbikKKyAgICAgICAgcmV0dXJuIE5POworI2VuZGlmCisK
ICAgICAvLyBJZiB3ZSdyZSBjdXJyZW50bHkgZWRpdGluZyBhbiBhc3Npc3RlZCBub2RlLCBvbmx5
IGFsbG93IHRoZSBzZWxlY3Rpb24gdG8gbW92ZSB3aXRoaW4gdGhhdCBhc3Npc3RlZCBub2RlLgog
ICAgIGlmIChzZWxmLmlzQXNzaXN0aW5nTm9kZSkKICAgICAgICAgcmV0dXJuIF9wb3NpdGlvbklu
Zm9ybWF0aW9uLm5vZGVBdFBvc2l0aW9uSXNBc3Npc3RlZE5vZGU7CkBAIC0zMDk5LDYgKzMxMTks
OCBAQCBzdGF0aWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoKFdLQ29udGVudFZpZXcg
KnZpZXcsIGNvbnN0IFdlYkNvcmU6OkludFBvaQogCiAtICh2b2lkKWFjY2Vzc29yeVRhYjooQk9P
TClpc05leHQKIHsKKyAgICBbX2Zvcm1JbnB1dFNlc3Npb24gZW5kRWRpdGluZ107CisKICAgICBb
X2lucHV0UGVyaXBoZXJhbCBlbmRFZGl0aW5nXTsKICAgICBfaW5wdXRQZXJpcGhlcmFsID0gbmls
OwogCkBAIC0zMTA5LDcgKzMxMzEsNiBAQCBzdGF0aWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkV2l0
aFRvdWNoKFdLQ29udGVudFZpZXcgKnZpZXcsIGNvbnN0IFdlYkNvcmU6OkludFBvaQogICAgICAg
ICBbdmlldyBlbmRTZWxlY3Rpb25DaGFuZ2VdOwogICAgICAgICBbdmlldyByZWxvYWRJbnB1dFZp
ZXdzXTsKICAgICB9KTsKLQogfQogCiAtICh2b2lkKV9iZWNvbWVGaXJzdFJlc3BvbmRlcldpdGhT
ZWxlY3Rpb25Nb3ZpbmdGb3J3YXJkOihCT09MKXNlbGVjdGluZ0ZvcndhcmQgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKEJPT0wgZGlkQmVjb21lRmlyc3RSZXNwb25kZXIpKWNvbXBsZXRpb25I
YW5kbGVyCkBAIC0zMjA4LDYgKzMyMjksMTIgQEAgc3RhdGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdl
ZFdpdGhUb3VjaChXS0NvbnRlbnRWaWV3ICp2aWV3LCBjb25zdCBXZWJDb3JlOjpJbnRQb2kKICAg
ICAgICAgX3BhZ2UtPmF1dG9maWxsTG9naW5DcmVkZW50aWFscyhbKFVJVGV4dEF1dG9maWxsU3Vn
Z2VzdGlvbiAqKXRleHRTdWdnZXN0aW9uIHVzZXJuYW1lXSwgWyhVSVRleHRBdXRvZmlsbFN1Z2dl
c3Rpb24gKil0ZXh0U3VnZ2VzdGlvbiBwYXNzd29yZF0pOwogICAgICAgICByZXR1cm47CiAgICAg
fQorI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIGlmIChbdGV4dFN1Z2dlc3Rpb24g
aXNLaW5kT2ZDbGFzczpbV0tEYXRhTGlzdFRleHRTdWdnZXN0aW9uIGNsYXNzXV0pIHsKKyAgICAg
ICAgX3BhZ2UtPnNldEFzc2lzdGVkTm9kZVZhbHVlKFt0ZXh0U3VnZ2VzdGlvbiBpbnB1dFRleHRd
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgogICAgIGlkIDxfV0tJbnB1dERlbGVn
YXRlPiBpbnB1dERlbGVnYXRlID0gW193ZWJWaWV3IF9pbnB1dERlbGVnYXRlXTsKICAgICBpZiAo
W2lucHV0RGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzppbnNl
cnRUZXh0U3VnZ2VzdGlvbjppbklucHV0U2Vzc2lvbjopXSkKICAgICAgICAgW2lucHV0RGVsZWdh
dGUgX3dlYlZpZXc6X3dlYlZpZXcgaW5zZXJ0VGV4dFN1Z2dlc3Rpb246dGV4dFN1Z2dlc3Rpb24g
aW5JbnB1dFNlc3Npb246X2Zvcm1JbnB1dFNlc3Npb24uZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklP
Uy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNE
cm9wZG93bklPUy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwZjFlM2EyZGE3ODZiMzYwOGI5MDk2MmJmZWM2ZTZk
ZjU3MmQ5ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLmgKQEAgLTAsMCArMSw2MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpICYm
IFBMQVRGT1JNKElPUykKKworI2ltcG9ydCAiVUlLaXRTUEkuaCIKKyNpbXBvcnQgIldlYkRhdGFM
aXN0U3VnZ2VzdGlvbnNEcm9wZG93bi5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK09CSkNfQ0xBU1MgV0tDb250ZW50VmlldzsKK09CSkNf
Q0xBU1MgV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbDsKKworQGludGVyZmFjZSBXS0RhdGFM
aXN0VGV4dFN1Z2dlc3Rpb24gOiBVSVRleHRTdWdnZXN0aW9uCitAZW5kCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MgOiBwdWJs
aWMgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UmVmPFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUz4gY3JlYXRlKFdlYkRhdGFMaXN0
U3VnZ2VzdGlvbnNEcm9wZG93bjo6Q2xpZW50JiwgV0tDb250ZW50VmlldyAqKTsKKworICAgIHZv
aWQgZGlkU2VsZWN0T3B0aW9uKFN0cmluZyYpOworCitwcml2YXRlOgorICAgIFdlYkRhdGFMaXN0
U3VnZ2VzdGlvbnNEcm9wZG93bklPUyhXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd246OkNs
aWVudCYsIFdLQ29udGVudFZpZXcgKik7CisKKyAgICB2b2lkIHNob3coV2ViQ29yZTo6RGF0YUxp
c3RTdWdnZXN0aW9uSW5mb3JtYXRpb24mJikgZmluYWw7CisgICAgdm9pZCBoYW5kbGVLZXlkb3du
V2l0aElkZW50aWZpZXIoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBjbG9zZSgpIGZp
bmFsOworCisgICAgV0tDb250ZW50VmlldyAqbV9jb250ZW50VmlldzsKKyAgICBSZXRhaW5QdHI8
V0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbD4gbV9zdWdnZXN0aW9uc0NvbnRyb2w7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShEQVRBTElTVF9FTEVN
RU5UKSAmJiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40MGFjMTQxY2U5MjZmNjZkMWFmYjVkN2U4NDE1NGQ3ZjZiZTcxNGZmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYkRhdGFMaXN0U3VnZ2Vz
dGlvbnNEcm9wZG93bklPUy5tbQpAQCAtMCwwICsxLDM2NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25J
T1MuaCIKKworI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKSAmJiBQTEFURk9STShJT1MpCisK
KyNpbXBvcnQgIldLQ29udGVudFZpZXcuaCIKKyNpbXBvcnQgIldLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oIgorI2ltcG9ydCAiV0tGb3JtUG9wb3Zlci5oIgorI2ltcG9ydCAiX1dLRm9ybUlucHV0
U2Vzc2lvbi5oIgorCitzdGF0aWMgY29uc3QgQ0dGbG9hdCBtYXhWaXNpYmxlU3VnZ2VzdGlvbnMg
PSA1Oworc3RhdGljIGNvbnN0IENHRmxvYXQgc3VnZ2VzdGlvbnNQb3BvdmVyQ2VsbEhlaWdodCA9
IDQ0Oworc3RhdGljIGNvbnN0IENHRmxvYXQgc3VnZ2VzdGlvbnNQb3BvdmVyV2lkdGggPSAzMjA7
CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBzdWdnZXN0aW9uQ2VsbFJldXNlSWRlbnRpZmllciA9
IEAiV0tEYXRhTGlzdFN1Z2dlc3Rpb25DZWxsIjsKKworQGludGVyZmFjZSBXS0RhdGFMaXN0U3Vn
Z2VzdGlvbnNDb250cm9sIDogTlNPYmplY3QgeworICAgIFdlYktpdDo6V2ViRGF0YUxpc3RTdWdn
ZXN0aW9uc0Ryb3Bkb3duSU9TKiBfZHJvcGRvd247CisgICAgVmVjdG9yPFN0cmluZz4gX3N1Z2dl
c3Rpb25zOworfQorCitAcHJvcGVydHkgKG5vbmF0b21pYywgd2VhaykgV0tDb250ZW50VmlldyAq
dmlldzsKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSW5mb3JtYXRpb246KFdlYkNvcmU6OkRh
dGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uJiYpaW5mb3JtYXRpb24gaW5WaWV3OihXS0NvbnRl
bnRWaWV3ICopdmlldzsKKy0gKHZvaWQpdXBkYXRlV2l0aEluZm9ybWF0aW9uOihXZWJDb3JlOjpE
YXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbiYmKWluZm9ybWF0aW9uOworLSAodm9pZClzaG93
U3VnZ2VzdGlvbnNEcm9wZG93bjooV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRv
d25JT1MgKilkcm9wZG93biBhY3RpdmF0aW9uVHlwZTooV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0
aW9uQWN0aXZhdGlvblR5cGUpYWN0aXZhdGlvblR5cGU7CistICh2b2lkKWRpZFNlbGVjdE9wdGlv
bkF0SW5kZXg6KE5TSW50ZWdlcilpbmRleDsKKy0gKHZvaWQpaW52YWxpZGF0ZTsKKworLSAoTlNB
cnJheTxXS0RhdGFMaXN0VGV4dFN1Z2dlc3Rpb24gKj4gKil0ZXh0U3VnZ2VzdGlvbnM7CistIChO
U0ludGVnZXIpc3VnZ2VzdGlvbnNDb3VudDsKKy0gKFN0cmluZylzdWdnZXN0aW9uQXRJbmRleDoo
TlNJbnRlZ2VyKWluZGV4OworLSAoTlNUZXh0QWxpZ25tZW50KXRleHRBbGlnbm1lbnQ7CitAZW5k
CisKK0BpbnRlcmZhY2UgV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUGlja2VyIDogV0tEYXRhTGlzdFN1
Z2dlc3Rpb25zQ29udHJvbCA8VUlQaWNrZXJWaWV3RGF0YVNvdXJjZSwgVUlQaWNrZXJWaWV3RGVs
ZWdhdGU+CitAZW5kCisKK0BpbnRlcmZhY2UgV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUGlja2VyVmll
dyA6IFVJUGlja2VyVmlldworQHByb3BlcnR5IChub25hdG9taWMsIHdlYWspIFdLRGF0YUxpc3RT
dWdnZXN0aW9uc0NvbnRyb2wgKmNvbnRyb2w7CisKKy0gKHZvaWQpZW5kRWRpdGluZzsKK0BlbmQK
KworQGludGVyZmFjZSBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQb3BvdmVyIDogV0tEYXRhTGlzdFN1
Z2dlc3Rpb25zQ29udHJvbAorQGVuZAorCitAaW50ZXJmYWNlIFdLRGF0YUxpc3RTdWdnZXN0aW9u
c1ZpZXdDb250cm9sbGVyIDogVUlUYWJsZVZpZXdDb250cm9sbGVyCitAcHJvcGVydHkgKG5vbmF0
b21pYywgd2VhaykgV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbCAqY29udHJvbDsKKworLSAo
dm9pZClyZWxvYWREYXRhOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tEYXRhTGlzdFRleHRT
dWdnZXN0aW9uCitAZW5kCisKKyNwcmFnbWEgbWFyayAtIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNE
cm9wZG93bklPUworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUmVmPFdlYkRhdGFMaXN0U3VnZ2Vz
dGlvbnNEcm9wZG93bklPUz4gV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TOjpjcmVh
dGUoV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duOjpDbGllbnQmIGNsaWVudCwgV0tDb250
ZW50VmlldyAqdmlldykKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJEYXRhTGlzdFN1
Z2dlc3Rpb25zRHJvcGRvd25JT1MoY2xpZW50LCB2aWV3KSk7Cit9CisKK1dlYkRhdGFMaXN0U3Vn
Z2VzdGlvbnNEcm9wZG93bklPUzo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TKFdl
YkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bjo6Q2xpZW50JiBjbGllbnQsIFdLQ29udGVudFZp
ZXcgKnZpZXcpCisgICAgOiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24oY2xpZW50KQor
ICAgICwgbV9jb250ZW50Vmlldyh2aWV3KQoreworfQorCit2b2lkIFdlYkRhdGFMaXN0U3VnZ2Vz
dGlvbnNEcm9wZG93bklPUzo6c2hvdyhXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1h
dGlvbiYmIGluZm9ybWF0aW9uKQoreworICAgIGlmIChtX3N1Z2dlc3Rpb25zQ29udHJvbCkgewor
ICAgICAgICBbbV9zdWdnZXN0aW9uc0NvbnRyb2wgdXBkYXRlV2l0aEluZm9ybWF0aW9uOldURk1v
dmUoaW5mb3JtYXRpb24pXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChjdXJy
ZW50VXNlckludGVyZmFjZUlkaW9tSXNQYWQoKSkKKyAgICAgICAgbV9zdWdnZXN0aW9uc0NvbnRy
b2wgPSBhZG9wdE5TKFtbV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUG9wb3ZlciBhbGxvY10gaW5pdFdp
dGhJbmZvcm1hdGlvbjpXVEZNb3ZlKGluZm9ybWF0aW9uKSBpblZpZXc6bV9jb250ZW50Vmlld10p
OworICAgIGVsc2UKKyAgICAgICAgbV9zdWdnZXN0aW9uc0NvbnRyb2wgPSBhZG9wdE5TKFtbV0tE
YXRhTGlzdFN1Z2dlc3Rpb25zUGlja2VyIGFsbG9jXSBpbml0V2l0aEluZm9ybWF0aW9uOldURk1v
dmUoaW5mb3JtYXRpb24pIGluVmlldzptX2NvbnRlbnRWaWV3XSk7CisKKyAgICBbbV9zdWdnZXN0
aW9uc0NvbnRyb2wgc2hvd1N1Z2dlc3Rpb25zRHJvcGRvd246dGhpcyBhY3RpdmF0aW9uVHlwZTpp
bmZvcm1hdGlvbi5hY3RpdmF0aW9uVHlwZV07Cit9CisKK3ZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0
aW9uc0Ryb3Bkb3duSU9TOjpoYW5kbGVLZXlkb3duV2l0aElkZW50aWZpZXIoY29uc3QgU3RyaW5n
JikKK3sKK30KKwordm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1M6OmNsb3Nl
KCkKK3sKKyAgICBbbV9zdWdnZXN0aW9uc0NvbnRyb2wgaW52YWxpZGF0ZV07CisgICAgbV9zdWdn
ZXN0aW9uc0NvbnRyb2wgPSBuaWw7CisgICAgbV9jbGllbnQtPmRpZENsb3NlU3VnZ2VzdGlvbnMo
KTsKK30KKwordm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1M6OmRpZFNlbGVj
dE9wdGlvbihTdHJpbmcmIHNlbGVjdGVkT3B0aW9uKQoreworICAgIGlmICghbV9jbGllbnQpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fY2xpZW50LT5kaWRTZWxlY3RPcHRpb24oc2VsZWN0ZWRP
cHRpb24pOworICAgIGNsb3NlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjcHJh
Z21hIG1hcmsgLSBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sCisKK0BpbXBsZW1lbnRhdGlv
biBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sCisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0
aEluZm9ybWF0aW9uOihXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbiYmKWlu
Zm9ybWF0aW9uIGluVmlldzooV0tDb250ZW50VmlldyAqKXZpZXcKK3sKKyAgICBpZiAoIShzZWxm
ID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF92aWV3ID0gdmll
dzsKKyAgICBfc3VnZ2VzdGlvbnMgPSBXVEZNb3ZlKGluZm9ybWF0aW9uLnN1Z2dlc3Rpb25zKTsK
KworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKXVwZGF0ZVdpdGhJbmZvcm1hdGlvbjoo
V2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24mJilpbmZvcm1hdGlvbgorewor
ICAgIF9zdWdnZXN0aW9ucyA9IFdURk1vdmUoaW5mb3JtYXRpb24uc3VnZ2VzdGlvbnMpOworfQor
CistICh2b2lkKXNob3dTdWdnZXN0aW9uc0Ryb3Bkb3duOihXZWJLaXQ6OldlYkRhdGFMaXN0U3Vn
Z2VzdGlvbnNEcm9wZG93bklPUyAqKWRyb3Bkb3duIGFjdGl2YXRpb25UeXBlOihXZWJDb3JlOjpE
YXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9uVHlwZSlhY3RpdmF0aW9uVHlwZQoreworICAgIF9k
cm9wZG93biA9IGRyb3Bkb3duOworfQorCistICh2b2lkKWRpZFNlbGVjdE9wdGlvbkF0SW5kZXg6
KE5TSW50ZWdlcilpbmRleAoreworICAgIF9kcm9wZG93bi0+ZGlkU2VsZWN0T3B0aW9uKF9zdWdn
ZXN0aW9uc1tpbmRleF0pOworfQorCistICh2b2lkKWludmFsaWRhdGUKK3sKK30KKworLSAoTlNB
cnJheTxXS0RhdGFMaXN0VGV4dFN1Z2dlc3Rpb24gKj4gKil0ZXh0U3VnZ2VzdGlvbnMKK3sKKyAg
ICBOU011dGFibGVBcnJheSAqc3VnZ2VzdGlvbnMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwor
CisgICAgZm9yIChhdXRvIHN1Z2dlc3Rpb24gOiBfc3VnZ2VzdGlvbnMpIHsKKyAgICAgICAgW3N1
Z2dlc3Rpb25zIGFkZE9iamVjdDpbV0tEYXRhTGlzdFRleHRTdWdnZXN0aW9uIHRleHRTdWdnZXN0
aW9uV2l0aElucHV0VGV4dDpzdWdnZXN0aW9uXV07CisgICAgICAgIGlmIChzdWdnZXN0aW9ucy5j
b3VudCA9PSAzKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHN1Z2dl
c3Rpb25zOworfQorCistIChOU0ludGVnZXIpc3VnZ2VzdGlvbnNDb3VudAoreworICAgIHJldHVy
biBfc3VnZ2VzdGlvbnMuc2l6ZSgpOworfQorCistIChTdHJpbmcpc3VnZ2VzdGlvbkF0SW5kZXg6
KE5TSW50ZWdlcilpbmRleAoreworICAgIHJldHVybiBfc3VnZ2VzdGlvbnNbaW5kZXhdOworfQor
CistIChOU1RleHRBbGlnbm1lbnQpdGV4dEFsaWdubWVudAoreworICAgIHJldHVybiBfdmlldy5h
c3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5pc1JUTCA/IE5TVGV4dEFsaWdubWVudFJpZ2h0IDogTlNU
ZXh0QWxpZ25tZW50TGVmdDsKK30KKworQGVuZAorCisjcHJhZ21hIG1hcmsgLSBXS0RhdGFMaXN0
U3VnZ2VzdGlvbnNQaWNrZXIKKworQGltcGxlbWVudGF0aW9uIFdLRGF0YUxpc3RTdWdnZXN0aW9u
c1BpY2tlciAgeworICAgIFJldGFpblB0cjxXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQaWNrZXJWaWV3
PiBfcGlja2VyVmlldzsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSW5mb3JtYXRpb246
KFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uJiYpaW5mb3JtYXRpb24gaW5W
aWV3OihXS0NvbnRlbnRWaWV3ICopdmlldworeworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5p
dFdpdGhJbmZvcm1hdGlvbjpXVEZNb3ZlKGluZm9ybWF0aW9uKSBpblZpZXc6dmlld10pKQorICAg
ICAgICByZXR1cm4gbmlsOworCisgICAgX3BpY2tlclZpZXcgPSBhZG9wdE5TKFtbV0tEYXRhTGlz
dFN1Z2dlc3Rpb25zUGlja2VyVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvXSk7
CisgICAgW19waWNrZXJWaWV3IHNldEF1dG9yZXNpemluZ01hc2s6VUlWaWV3QXV0b3Jlc2l6aW5n
RmxleGlibGVXaWR0aCB8IFVJVmlld0F1dG9yZXNpemluZ0ZsZXhpYmxlSGVpZ2h0XTsKKyAgICBb
X3BpY2tlclZpZXcgc2V0RGF0YVNvdXJjZTpzZWxmXTsKKyAgICBbX3BpY2tlclZpZXcgc2V0RGVs
ZWdhdGU6c2VsZl07CisgICAgW19waWNrZXJWaWV3IHNldENvbnRyb2w6c2VsZl07CisgICAgW19w
aWNrZXJWaWV3IHNldFNpemU6W1VJS2V5Ym9hcmQgZGVmYXVsdFNpemVGb3JJbnRlcmZhY2VPcmll
bnRhdGlvbjpVSUFwcC5pbnRlcmZhY2VPcmllbnRhdGlvbl1dOworCisgICAgcmV0dXJuIHNlbGY7
Cit9CisKKy0gKHZvaWQpdXBkYXRlV2l0aEluZm9ybWF0aW9uOihXZWJDb3JlOjpEYXRhTGlzdFN1
Z2dlc3Rpb25JbmZvcm1hdGlvbiYmKWluZm9ybWF0aW9uCit7CisgICAgW3N1cGVyIHVwZGF0ZVdp
dGhJbmZvcm1hdGlvbjpXVEZNb3ZlKGluZm9ybWF0aW9uKV07CisgICAgaWYgKGluZm9ybWF0aW9u
LmFjdGl2YXRpb25UeXBlICE9IFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkFjdGl2YXRpb25U
eXBlOjpJbmRpY2F0b3JDbGlja2VkKSB7CisgICAgICAgIFtbc2VsZi52aWV3IF9mb3JtSW5wdXRT
ZXNzaW9uXSBzZXRDdXN0b21JbnB1dFZpZXc6bmlsXTsKKyAgICAgICAgW1tzZWxmLnZpZXcgX2Zv
cm1JbnB1dFNlc3Npb25dIHNldFN1Z2dlc3Rpb25zOltzZWxmIHRleHRTdWdnZXN0aW9uc11dOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgW1tzZWxmLnZpZXcgX2Zvcm1JbnB1dFNlc3Np
b25dIHNldEN1c3RvbUlucHV0VmlldzpfcGlja2VyVmlldy5nZXQoKV07CisKKyAgICBbX3BpY2tl
clZpZXcgcmVsb2FkQWxsQ29tcG9uZW50c107CisgICAgW19waWNrZXJWaWV3IHNlbGVjdFJvdzow
IGluQ29tcG9uZW50OjAgYW5pbWF0ZWQ6Tk9dOworfQorCistICh2b2lkKXNob3dTdWdnZXN0aW9u
c0Ryb3Bkb3duOihXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUyAqKWRy
b3Bkb3duIGFjdGl2YXRpb25UeXBlOihXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0
aW9uVHlwZSlhY3RpdmF0aW9uVHlwZQoreworICAgIFtzdXBlciBzaG93U3VnZ2VzdGlvbnNEcm9w
ZG93bjpkcm9wZG93biBhY3RpdmF0aW9uVHlwZTphY3RpdmF0aW9uVHlwZV07CisgICAgaWYgKGFj
dGl2YXRpb25UeXBlID09IFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkFjdGl2YXRpb25UeXBl
OjpJbmRpY2F0b3JDbGlja2VkKSB7CisgICAgICAgIFtbc2VsZi52aWV3IF9mb3JtSW5wdXRTZXNz
aW9uXSBzZXRDdXN0b21JbnB1dFZpZXc6X3BpY2tlclZpZXcuZ2V0KCldOworICAgICAgICBbX3Bp
Y2tlclZpZXcgc2VsZWN0Um93OjAgaW5Db21wb25lbnQ6MCBhbmltYXRlZDpOT107CisgICAgfSBl
bHNlCisgICAgICAgIFtbc2VsZi52aWV3IF9mb3JtSW5wdXRTZXNzaW9uXSBzZXRTdWdnZXN0aW9u
czpbc2VsZiB0ZXh0U3VnZ2VzdGlvbnNdXTsKK30KKworLSAoTlNJbnRlZ2VyKW51bWJlck9mQ29t
cG9uZW50c0luUGlja2VyVmlldzooVUlQaWNrZXJWaWV3ICopcGlja2VyVmlldworeworICAgIHJl
dHVybiAxOworfQorCistIChOU0ludGVnZXIpcGlja2VyVmlldzooVUlQaWNrZXJWaWV3ICopcGlj
a2VyVmlldyBudW1iZXJPZlJvd3NJbkNvbXBvbmVudDooTlNJbnRlZ2VyKWNvbHVtbkluZGV4Cit7
CisgICAgcmV0dXJuIFtzZWxmIHN1Z2dlc3Rpb25zQ291bnRdOworfQorCistIChOU1N0cmluZyAq
KXBpY2tlclZpZXc6KFVJUGlja2VyVmlldyAqKXBpY2tlclZpZXcgdGl0bGVGb3JSb3c6KE5TSW50
ZWdlcilyb3cgZm9yQ29tcG9uZW50OihOU0ludGVnZXIpY29tcG9uZW50Cit7CisgICAgcmV0dXJu
IFtzZWxmIHN1Z2dlc3Rpb25BdEluZGV4OnJvd107Cit9CisKKy0gKHZvaWQpaW52YWxpZGF0ZQor
eworICAgIGlmIChbW3NlbGYudmlldyBfZm9ybUlucHV0U2Vzc2lvbl0gY3VzdG9tSW5wdXRWaWV3
XSA9PSBfcGlja2VyVmlldy5nZXQoKSkKKyAgICAgICAgW1tzZWxmLnZpZXcgX2Zvcm1JbnB1dFNl
c3Npb25dIHNldEN1c3RvbUlucHV0VmlldzpuaWxdOworCisgICAgW19waWNrZXJWaWV3IHNldERl
bGVnYXRlOm5pbF07CisgICAgW19waWNrZXJWaWV3IHNldERhdGFTb3VyY2U6bmlsXTsKKyAgICBb
X3BpY2tlclZpZXcgc2V0Q29udHJvbDpuaWxdOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQaWNrZXJWaWV3CisKKy0gKHZvaWQpZW5kRWRpdGluZwor
eworICAgIFtzZWxmLmNvbnRyb2wgZGlkU2VsZWN0T3B0aW9uQXRJbmRleDpbc2VsZiBzZWxlY3Rl
ZFJvd0luQ29tcG9uZW50OjBdXTsKK30KKworQGVuZAorCisjcHJhZ21hIG1hcmsgLSBXS0RhdGFM
aXN0U3VnZ2VzdGlvbnNQb3BvdmVyCisKK0BpbXBsZW1lbnRhdGlvbiBXS0RhdGFMaXN0U3VnZ2Vz
dGlvbnNQb3BvdmVyICB7CisgICAgUmV0YWluUHRyPFdLRm9ybVJvdGF0aW5nQWNjZXNzb3J5UG9w
b3Zlcj4gX3BvcG92ZXI7CisgICAgUmV0YWluUHRyPFdLRGF0YUxpc3RTdWdnZXN0aW9uc1ZpZXdD
b250cm9sbGVyPiBfc3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlcjsKK30KKworLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoSW5mb3JtYXRpb246KFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkluZm9y
bWF0aW9uJiYpaW5mb3JtYXRpb24gaW5WaWV3OihXS0NvbnRlbnRWaWV3ICopdmlldworeworICAg
IGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhJbmZvcm1hdGlvbjpXVEZNb3ZlKGluZm9ybWF0
aW9uKSBpblZpZXc6dmlld10pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3BvcG92ZXIg
PSBhZG9wdE5TKFtbV0tGb3JtUm90YXRpbmdBY2Nlc3NvcnlQb3BvdmVyIGFsbG9jXSBpbml0V2l0
aFZpZXc6dmlld10pOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpdXBkYXRlV2l0
aEluZm9ybWF0aW9uOihXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbiYmKWlu
Zm9ybWF0aW9uCit7CisgICAgW3N1cGVyIHVwZGF0ZVdpdGhJbmZvcm1hdGlvbjpXVEZNb3ZlKGlu
Zm9ybWF0aW9uKV07CisgICAgW19zdWdnZXN0aW9uc1ZpZXdDb250cm9sbGVyIHJlbG9hZERhdGFd
OworICAgIFtbc2VsZi52aWV3IF9mb3JtSW5wdXRTZXNzaW9uXSBzZXRTdWdnZXN0aW9uczpbc2Vs
ZiB0ZXh0U3VnZ2VzdGlvbnNdXTsKK30KKworLSAodm9pZClzaG93U3VnZ2VzdGlvbnNEcm9wZG93
bjooV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MgKilkcm9wZG93biBh
Y3RpdmF0aW9uVHlwZTooV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uQWN0aXZhdGlvblR5cGUp
YWN0aXZhdGlvblR5cGUKK3sKKyAgICBbc3VwZXIgc2hvd1N1Z2dlc3Rpb25zRHJvcGRvd246ZHJv
cGRvd24gYWN0aXZhdGlvblR5cGU6YWN0aXZhdGlvblR5cGVdOworCisgICAgX3N1Z2dlc3Rpb25z
Vmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV0tEYXRhTGlzdFN1Z2dlc3Rpb25zVmlld0NvbnRy
b2xsZXIgYWxsb2NdIGluaXRXaXRoU3R5bGU6VUlUYWJsZVZpZXdTdHlsZVBsYWluXSk7CisgICAg
W19zdWdnZXN0aW9uc1ZpZXdDb250cm9sbGVyIHNldENvbnRyb2w6c2VsZl07CisgICAgW19zdWdn
ZXN0aW9uc1ZpZXdDb250cm9sbGVyIHJlbG9hZERhdGFdOworICAgIFtbc2VsZi52aWV3IF9mb3Jt
SW5wdXRTZXNzaW9uXSBzZXRTdWdnZXN0aW9uczpbc2VsZiB0ZXh0U3VnZ2VzdGlvbnNdXTsKKwor
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBp
Z25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgorICAgIFtfcG9wb3ZlciBzZXRQb3Bv
dmVyQ29udHJvbGxlcjpbW1tVSVBvcG92ZXJDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aENvbnRl
bnRWaWV3Q29udHJvbGxlcjpfc3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlci5nZXQoKV0gYXV0b3Jl
bGVhc2VdXTsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKworICAgIFtfcG9wb3ZlciBw
cmVzZW50UG9wb3ZlckFuaW1hdGVkOk5PXTsKK30KKworLSAodm9pZClpbnZhbGlkYXRlCit7Cisg
ICAgW19zdWdnZXN0aW9uc1ZpZXdDb250cm9sbGVyIHNldENvbnRyb2w6bmlsXTsKK30KKworLSAo
dm9pZClkaWRTZWxlY3RPcHRpb25BdEluZGV4OihOU0ludGVnZXIpaW5kZXgKK3sKKyAgICBbc3Vw
ZXIgZGlkU2VsZWN0T3B0aW9uQXRJbmRleDppbmRleF07CisgICAgW1tfcG9wb3ZlciBwb3BvdmVy
Q29udHJvbGxlcl0gZGlzbWlzc1BvcG92ZXJBbmltYXRlZDpZRVNdOworICAgIFtbc2VsZi52aWV3
IF9mb3JtSW5wdXRTZXNzaW9uXSBzZXRTdWdnZXN0aW9uczpAWyBbV0tEYXRhTGlzdFRleHRTdWdn
ZXN0aW9uIHRleHRTdWdnZXN0aW9uV2l0aElucHV0VGV4dDpbc2VsZiBzdWdnZXN0aW9uQXRJbmRl
eDppbmRleF1dIF1dOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS0RhdGFMaXN0U3Vn
Z2VzdGlvbnNWaWV3Q29udHJvbGxlcgorCistICh2b2lkKXJlbG9hZERhdGEKK3sKKyAgICBbc2Vs
Zi50YWJsZVZpZXcgcmVsb2FkRGF0YV07CisgICAgW3NlbGYgc2V0UHJlZmVycmVkQ29udGVudFNp
emU6Q0dTaXplTWFrZShzdWdnZXN0aW9uc1BvcG92ZXJXaWR0aCwgbWF4VmlzaWJsZVN1Z2dlc3Rp
b25zICogc3VnZ2VzdGlvbnNQb3BvdmVyQ2VsbEhlaWdodCArIHN1Z2dlc3Rpb25zUG9wb3ZlckNl
bGxIZWlnaHQgLyAyKV07Cit9CisKKy0gKE5TSW50ZWdlcil0YWJsZVZpZXc6KFVJVGFibGVWaWV3
ICopdGFibGVWaWV3IG51bWJlck9mUm93c0luU2VjdGlvbjooTlNJbnRlZ2VyKXNlY3Rpb24KK3sK
KyAgICByZXR1cm4gW3NlbGYuY29udHJvbCBzdWdnZXN0aW9uc0NvdW50XTsKK30KKworLSAoVUlU
YWJsZVZpZXdDZWxsICopdGFibGVWaWV3OihVSVRhYmxlVmlldyAqKXRhYmxlVmlldyBjZWxsRm9y
Um93QXRJbmRleFBhdGg6KE5TSW5kZXhQYXRoICopaW5kZXhQYXRoCit7CisgICAgVUlUYWJsZVZp
ZXdDZWxsICpjZWxsID0gW3RhYmxlVmlldyBkZXF1ZXVlUmV1c2FibGVDZWxsV2l0aElkZW50aWZp
ZXI6c3VnZ2VzdGlvbkNlbGxSZXVzZUlkZW50aWZpZXJdOworICAgIGlmICghY2VsbCkKKyAgICAg
ICAgY2VsbCA9IFtbW1VJVGFibGVWaWV3Q2VsbCBhbGxvY10gaW5pdFdpdGhTdHlsZTpVSVRhYmxl
Vmlld0NlbGxTdHlsZURlZmF1bHQgcmV1c2VJZGVudGlmaWVyOnN1Z2dlc3Rpb25DZWxsUmV1c2VJ
ZGVudGlmaWVyXSBhdXRvcmVsZWFzZV07CisKKyAgICBjZWxsLnRleHRMYWJlbC50ZXh0ID0gW3Nl
bGYuY29udHJvbCBzdWdnZXN0aW9uQXRJbmRleDppbmRleFBhdGgucm93XTsKKyAgICBjZWxsLnRl
eHRMYWJlbC5saW5lQnJlYWtNb2RlID0gTlNMaW5lQnJlYWtCeVRydW5jYXRpbmdUYWlsOworICAg
IGNlbGwudGV4dExhYmVsLnRleHRBbGlnbm1lbnQgPSBbc2VsZi5jb250cm9sIHRleHRBbGlnbm1l
bnRdOworCisgICAgcmV0dXJuIGNlbGw7Cit9CisKKy0gKHZvaWQpdGFibGVWaWV3OihVSVRhYmxl
VmlldyAqKXRhYmxlVmlldyBkaWRTZWxlY3RSb3dBdEluZGV4UGF0aDooTlNJbmRleFBhdGggKilp
bmRleFBhdGgKK3sKKyAgICBbc2VsZi5jb250cm9sIGRpZFNlbGVjdE9wdGlvbkF0SW5kZXg6aW5k
ZXhQYXRoLnJvd107Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIEVOQUJMRShEQVRBTElTVF9FTEVN
RU5UKSAmJiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA5MjRhNzQ3YTg4YWI5OGQ0ZTg0N2FjMDFiZWQxOTE5MGNk
NjVhYzYwLi40YWU5YmZjZWM0ODQ4Y2EwY2NlZTZjNjRiMDQyOTgyYTlmYjMxYzk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4MDYs
NiArMTgwNiw3IEBACiAJCUU1NDhFQkQxMjEwMTVGMEUwMEJFM0MzMiAvKiBXS0Zvcm1Db2xvclBp
Y2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTU0
OEVCQ0YyMTAxNUYwRTAwQkUzQzMyIC8qIFdLRm9ybUNvbG9yUGlja2VyLmggKi87IH07CiAJCUU1
NjhCOTFGMjBBM0FCMkYwMEUzQzg1NiAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU1NjhCOTFF
MjBBM0FCMkYwMEUzQzg1NiAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24uaCAqLzsg
fTsKIAkJRTU2OEI5MjIyMEEzQUM2QTAwRTNDODU2IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNE
cm9wZG93bk1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTU2OEI5MjAyMEEzQUM2QTAwRTNDODU2IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9w
ZG93bk1hYy5oICovOyB9OworCQlFNUJFRjY4MjIxMzBDNDgwMDBGMzExMTEgLyogV2ViRGF0YUxp
c3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFNUJFRjY4MDIxMzBDNDdGMDBGMzExMTEgLyogV2ViRGF0YUxpc3RT
dWdnZXN0aW9uc0Ryb3Bkb3duSU9TLmggKi87IH07CiAJCUU1Q0IwN0RDMjBFMTY3OEYwMDIyQzE4
MyAvKiBXS0Zvcm1Db2xvckNvbnRyb2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEU1Q0IwN0RBMjBFMTY3OEYwMDIyQzE4MyAvKiBXS0Zvcm1Db2xvckNv
bnRyb2wuaCAqLzsgfTsKIAkJRUNBNjgwRDgxRTY5MEUyNTAwNzMxRDIwIC8qIFdlYlByb2Nlc3ND
b2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUNB
NjgwRDcxRTY5MERGODAwNzMxRDIwIC8qIFdlYlByb2Nlc3NDb2NvYS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUVEODJBN0YyMTI4QzZGQUYwMDQ0
NzdCMyAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQTIyRjBGRjEyODlGQ0Q5MDA4NUU3NEYgLyogV0tCdW5kbGVQ
YWdlT3ZlcmxheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC00NjQ3LDYgKzQ2NDgsOCBAQAogCQlFNTY4QjkxRTIwQTNBQjJGMDBFM0M4NTYgLyog
V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRhdGFM
aXN0U3VnZ2VzdGlvbnNEcm9wZG93bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
NTY4QjkyMDIwQTNBQzZBMDBFM0M4NTYgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3du
TWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1hYy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNTY4QjkyMTIwQTNBQzZBMDBFM0M4NTYg
LyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUU1QkVGNjgwMjEzMEM0N0YwMEYzMTExMSAvKiBXZWJEYXRhTGlzdFN1
Z2dlc3Rpb25zRHJvcGRvd25JT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLmg7IHBhdGggPSBpb3MvV2ViRGF0YUxp
c3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUU1QkVGNjgxMjEzMEM0N0YwMEYzMTExMSAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRv
d25JT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJEYXRh
TGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW07IHBhdGggPSBpb3MvV2ViRGF0YUxpc3RTdWdn
ZXN0aW9uc0Ryb3Bkb3duSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNUNC
MDdEQTIwRTE2NzhGMDAyMkMxODMgLyogV0tGb3JtQ29sb3JDb250cm9sLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFdLRm9ybUNvbG9yQ29udHJvbC5oOyBwYXRoID0gaW9zL2Zvcm1zL1dLRm9ybUNvbG9yQ29u
dHJvbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNUNCMDdEQjIwRTE2NzhGMDAy
MkMxODMgLyogV0tGb3JtQ29sb3JDb250cm9sLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tG
b3JtQ29sb3JDb250cm9sLm1tOyBwYXRoID0gaW9zL2Zvcm1zL1dLRm9ybUNvbG9yQ29udHJvbC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUNBNjgwRDMxRTY5MDRCNTAwNzMxRDIw
IC8qIEV4dHJhUHJpdmF0ZVN5bWJvbHNGb3JUQVBJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEV4dHJhUHJpdmF0ZVN5bWJvbHNGb3JUQVBJLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC01OTY2LDYgKzU5NjksOCBAQAogCQkJCTJEQUYwNkQ1MThCRDFBNDcwMDgx
Q0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tICovLAogCQkJCTJEQTk0NEE5
MTg4NEU5QkEwMEVEODZEQiAvKiBUZXh0Q2hlY2tlcklPUy5tbSAqLywKIAkJCQkyREY5NTkzNDE4
QTQyNDEyMDA5Nzg1QTEgLyogVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tICovLAorCQkJCUU1
QkVGNjgwMjEzMEM0N0YwMEYzMTExMSAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25J
T1MuaCAqLywKKwkJCQlFNUJFRjY4MTIxMzBDNDdGMDBGMzExMTEgLyogV2ViRGF0YUxpc3RTdWdn
ZXN0aW9uc0Ryb3Bkb3duSU9TLm1tICovLAogCQkJCTJEM0VGNDQxMTkxNzY0NjMwMDAzNDE4NCAv
KiBXZWJNZW1vcnlQcmVzc3VyZUhhbmRsZXJJT1MuaCAqLywKIAkJCQkyRDNFRjQ0MDE5MTc2NDYz
MDAwMzQxODQgLyogV2ViTWVtb3J5UHJlc3N1cmVIYW5kbGVySU9TLm1tICovLAogCQkJCTJEQTk0
NEFCMTg4NEU5QkEwMEVEODZEQiAvKiBXZWJQYWdlUHJveHlJT1MubW0gKi8sCkBAIC05NDk1LDYg
Kzk1MDAsNyBAQAogCQkJCTFBQTgzRjZEMUE1QjYzRkYwMDAyNkVDNiAvKiBXZWJEYXRhYmFzZVBy
b3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNTJDRjU1MjIwQTM1QzNBMDBEQURBMjcgLyog
V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNTY4Qjkx
RjIwQTNBQjJGMDBFM0M4NTYgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duLmggaW4g
SGVhZGVycyAqLywKKwkJCQlFNUJFRjY4MjIxMzBDNDgwMDBGMzExMTEgLyogV2ViRGF0YUxpc3RT
dWdnZXN0aW9uc0Ryb3Bkb3duSU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNTY4QjkyMjIwQTNB
QzZBMDBFM0M4NTYgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDRDE5QTI2RTFBMTNFODM0MDA4RDY1MEUgLyogV2ViRGlhZ25vc3RpY0xv
Z2dpbmdDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNUIxQzU1MTg5ODdFREYwMDRGQ0Y5
QiAvKiBXZWJEb2N1bWVudExvYWRlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDlhZjY4OGNmYjkxNDNjNWNhNTM1
MjNmN2Y3ZTFmY2JlYTU4OTlmOGUuLmJhNjE2ODYxNWVmNTM2NGViZDZmYmU4N2Q5YWY4YzRkNWJl
MWY0MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC0zNTk2LDcgKzM1OTYsOCBAQCB2b2lkIFdlYlBhZ2U6OmRpZFNlbGVjdERhdGFMaXN0T3B0
aW9uKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRPcHRpb24pCiAKIHZvaWQgV2ViUGFnZTo6ZGlkQ2xv
c2VTdWdnZXN0aW9ucygpCiB7Ci0gICAgbV9hY3RpdmVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIt
PmRpZENsb3NlU3VnZ2VzdGlvbnMoKTsKKyAgICBpZiAobV9hY3RpdmVEYXRhTGlzdFN1Z2dlc3Rp
b25QaWNrZXIpCisgICAgICAgIG1fYWN0aXZlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLT5kaWRD
bG9zZVN1Z2dlc3Rpb25zKCk7CiAgICAgbV9hY3RpdmVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIg
PSBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGFlNThlMDkwNGU4ZDRkYjlhOTU4NTZkNjIzZjAwMjA1
ZTVkOGUxMmUuLmE5NDc2M2JmMTM2NjhlMTgxOGQ4ODIxNTI1YjdhYTg5ZGIyZWI3Y2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CkBAIC0yMjA5LDYgKzIyMDksMTggQEAgdm9pZCBXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0
aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0JiByZXF1ZXMKICAgICAgICAg
fQogICAgIH0KIAorICAgIC8vIFByZXZlbnQgdGhlIGNhbGxvdXQgYmFyIGZyb20gc2hvd2luZyB3
aGVuIHRhcHBpbmcgb24gdGhlIGRhdGFsaXN0IGJ1dHRvbi4KKyNpZiBFTkFCTEUoREFUQUxJU1Rf
RUxFTUVOVCkKKyAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4oKmhpdE5vZGUpKSB7CisgICAg
ICAgIGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gZG93bmNhc3Q8SFRNTElucHV0RWxl
bWVudD4oKmhpdE5vZGUpOworICAgICAgICBpZiAoaW5wdXQubGlzdCgpKSB7CisgICAgICAgICAg
ICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVy
KCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQocmVxdWVzdC5wb2ludCwgSGl0VGVzdFJlcXVlc3Q6OlJl
YWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSk7CisgICAgICAgICAgICBpZiAocmVzdWx0
LmlubmVyTm9kZSgpID09IGlucHV0LmRhdGFMaXN0QnV0dG9uRWxlbWVudCgpKQorICAgICAgICAg
ICAgICAgIGluZm8ucHJldmVudFRleHRJbnRlcmFjdGlvbiA9IHRydWU7CisgICAgICAgIH0KKyAg
ICB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQogICAgIGluZm8uaGFz
U2VsZWN0aW9uQXRQb3NpdGlvbiA9IG1fcGFnZS0+aGFzU2VsZWN0aW9uQXRQb3NpdGlvbihhZGp1
c3RlZFBvaW50KTsKICNlbmRpZgpAQCAtMjQ3Nyw2ICsyNDg5LDkgQEAgdm9pZCBXZWJQYWdlOjpn
ZXRBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbihBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiYgaW5mb3Jt
YXRpb24pCiAgICAgICAgIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQp
CisgICAgICAgIGluZm9ybWF0aW9uLmhhc1N1Z2dlc3Rpb25zID0gISFlbGVtZW50Lmxpc3QoKTsK
KyNlbmRpZgogICAgICAgICBpbmZvcm1hdGlvbi5pbnB1dE1vZGUgPSBlbGVtZW50LmNhbm9uaWNh
bElucHV0TW9kZSgpOwogICAgICAgICBpbmZvcm1hdGlvbi5pc1JlYWRPbmx5ID0gZWxlbWVudC5p
c1JlYWRPbmx5KCk7CiAgICAgICAgIGluZm9ybWF0aW9uLnZhbHVlID0gZWxlbWVudC52YWx1ZSgp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348221</attachid>
            <date>2018-08-27 15:45:37 -0700</date>
            <delta_ts>2018-08-30 18:15:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186714-20180827154536.patch</filename>
            <type>text/plain</type>
            <size>47157</size>
            <attacher name="Aditya Keerthi">pxlcoder</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVkNTU2OWE2N2IwMGE5
NWY5OTk5NjYxYjdjOTJiNTBhMWI1ZGM0NS4uM2M5ZGUyMGQxMGJlYzJiNzM5NGIzODczYTU3NGUx
MzVmYzI5ZjE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE4LTA4LTI3ICBBZGl0
eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KKworICAgICAgICBbRGF0YWxpc3RdW2lP
U10gQWRkIHN1Z2dlc3Rpb25zIFVJIGZvciBUZXh0RmllbGRJbnB1dFR5cGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY3MTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPbiBpT1MsIHRoZSBkYXRhbGlz
dCBidXR0b24gc2hvdWxkIGFwcGVhciBhcyBhIGRvd253YXJkIHRyaWFuZ2xlLiBGdXJ0aGVybW9y
ZSwgdGhlCisgICAgICAgIGJ1dHRvbiBzaG91bGQgb25seSBiZSBkaXNwbGF5ZWQgaWYgdGhlIGlu
cHV0IGhhcyBmb2N1cyBhbmQgdGhlcmUgYXJlIHN1Z2dlc3RlZAorICAgICAgICB2YWx1ZXMuCisK
KyAgICAgICAgKiBjc3MvaHRtbC5jc3M6CisgICAgICAgIChpbnB1dDo6LXdlYmtpdC1saXN0LWJ1
dHRvbik6IERyYXcgdGhlIHRyaWFuZ2xlIHVzaW5nIGFuIFNWRy4KKyAgICAgICAgKiBodG1sL0Rh
dGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uLmg6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRF
bGVtZW50Lmg6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOiBBZGRlZCBs
b2dpYyB0byBzaG93IGFuZCBoaWRlIHRoZSBkYXRhbGlzdCBidXR0b24gYXMgbmVjZXNzYXJ5Lgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5kbGVGb2N1c0V2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6aGFuZGxlQmx1ckV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6ZGlkU2V0VmFsdWVCeVVzZXJF
ZGl0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6bGlzdEF0dHJpYnV0
ZVRhcmdldENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpk
aXNwbGF5U3VnZ2VzdGlvbnMpOgorCiAyMDE4LTA4LTI3ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVy
dGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBDb25zb2xpZGF0ZSBFTkFCTEVfSU5QVVRfVFlQRV9D
T0xPUiBhbmQgRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2M2Fk
YTc2NGNmMDYyYjI5MmE4OWZhMDZiYTUxNjFlNjE0MTQwNDE4Li5jMzNhNTkxYzNlMDI1OTZjMzFi
ZDUxOTE5NjQ1M2M0NWU2NjM3ODAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDE4LTA4
LTI3ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KKworICAgICAgICBbRGF0
YWxpc3RdW2lPU10gQWRkIHN1Z2dlc3Rpb25zIFVJIGZvciBUZXh0RmllbGRJbnB1dFR5cGVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY3MTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPbiBpT1MsIHdl
IGhhdmUgbGVzcyBzcGFjZSB0byBkaXNwbGF5IHN1Z2dlc3Rpb25zIGZyb20gYSBkYXRhbGlzdCBl
bGVtZW50IGNvbXBhcmVkCisgICAgICAgIHRvIG1hY09TLiBGdXJ0aGVybW9yZSwgaVBob25lcyBh
bmQgaVBhZHMgaGF2ZSBkaWZmZXJlbnQgZm9ybSBmYWN0b3JzLCBsZWFkaW5nIHRvIGEKKyAgICAg
ICAgZGlmZmVyZW50IGFwcHJvYWNoIG9uIGVhY2ggZGV2aWNlLiBUaGUgY29tbW9uYWxpdGllcyBv
ZiB0aGUgdHdvIGltcGxlbWVudGF0aW9ucworICAgICAgICBjYW4gYmUgZm91bmQgaW4gV0tEYXRh
TGlzdFN1Z2dlc3Rpb25zQ29udHJvbC4gVGhpcyBjbGFzcyBpcyBzdWJjbGFzc2VkIGJ5IHRoZQor
ICAgICAgICBkZXZpY2Ugc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgIE9uIGlQ
aG9uZSwgd2UgZGlzcGxheSB0aGUgc3VnZ2VzdGlvbnMgaW4gYSBVSVBpY2tlclZpZXcuIFRoaXMg
dmlldyBpcyBhY2Nlc3NpYmxlCisgICAgICAgIG9ubHkgYWZ0ZXIgdGFwcGluZyBvbiB0aGUgZGF0
YWxpc3QgYnV0dG9uIGVsZW1lbnQgdG8gdGhlIHNpZGUgb2YgdGhlIGlucHV0IGZpZWxkLgorICAg
ICAgICBUaGlzIGFwcHJvYWNoIHdhcyBjaG9zZW4gaW4gb3JkZXIgdG8gYXZvaWQgdHJpY2tpbmcg
dGhlIHVzZXIgaW50byB0aGlua2luZyB0aGF0CisgICAgICAgIHRoZSB2YWx1ZXMgZGlzcGxheWVk
IGluIHRoZSBwaWNrZXIgYXJlIHRoZSBvbmx5IGFjY2VwdGVkIHZhbHVlcy4KKyAgICAgICAgV0tE
YXRhTGlzdFN1Z2dlc3Rpb25zUGlja2VyIGlzIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUg
aW50ZXJmYWNlIHNob3duIG9uCisgICAgICAgIGlQaG9uZXMuCisKKyAgICAgICAgT24gaVBhZCwg
d2UgZGlzcGxheSB0aGUgc3VnZ2VzdGlvbnMgaW4gYSBwb3BvdmVyLCB0aGF0IGlzIHZpc2libGUg
YWxvbmdzaWRlIHRoZQorICAgICAgICBrZXlib2FyZC4gVGhlIHN1Z2dlc3Rpb25zIGluIHRoZSBw
b3BvdmVyIHVwZGF0ZSBhcyB0aGUgdXNlciB0eXBlcy4KKyAgICAgICAgV0tEYXRhTGlzdFN1Z2dl
c3Rpb25zUG9wb3ZlciBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIGludGVyZmFjZSBz
aG93biBvbgorICAgICAgICBpUGFkcy4KKworICAgICAgICBCb3RoIGRldmljZXMgZGlzcGxheSBw
cmVkaWN0aXZlIHRleHQgc3VnZ2VzdGlvbnMsIHRha2luZyB0aGUgZmlyc3QgdGhyZWUgdmFsdWVz
CisgICAgICAgIGZyb20gdGhlIGZpbHRlcmVkIHN1Z2dlc3Rpb25zIGxpc3QuIEluIG9yZGVyIHRv
IHByZXZlbnQgb3RoZXIgY2xpZW50cyBmcm9tCisgICAgICAgIG92ZXJ3cml0aW5nIHRoZSBzdWdn
ZXN0aW9ucyBwcm92aWRlZCBieSB0aGUgZGF0YWxpc3QgZWxlbWVudCwgd2UgcHJldmVudCB3cml0
aW5nCisgICAgICAgIHRvIHRoZSBwcmVkaWN0aXZlIHRleHQgYmFyIGlmIGFuIGlucHV0IHdpdGgg
dGhlIGxpc3QgYXR0cmlidXRlIGlzIHRoZSBjdXJyZW50bHkKKyAgICAgICAgYXNzaXN0ZWQgbm9k
ZS4KKworICAgICAgICAqIFNoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkFzc2lzdGVkTm9kZUluZm9ybWF0aW9uOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbjo6ZGVjb2RlKToKKyAgICAgICAg
KiBTaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvaW9z
L0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLmg6CisgICAgICAgICogU2hhcmVkL2lv
cy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6
SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjpkZWNvZGUpOgorICAg
ICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkRhdGFMaXN0
U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
RGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TOjpjcmVhdGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1M6OldlYkRhdGFMaXN0U3Vn
Z2VzdGlvbnNEcm9wZG93bklPUyk6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2Vz
dGlvbnNEcm9wZG93bklPUzo6c2hvdyk6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFMaXN0U3Vn
Z2VzdGlvbnNEcm9wZG93bklPUzo6aGFuZGxlS2V5ZG93bldpdGhJZGVudGlmaWVyKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TOjpjbG9zZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUzo6ZGlkU2Vs
ZWN0T3B0aW9uKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbCBpbml0
V2l0aEluZm9ybWF0aW9uOmluVmlldzpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rp
b25zQ29udHJvbCB1cGRhdGVXaXRoSW5mb3JtYXRpb246XSk6CisgICAgICAgICgtW1dLRGF0YUxp
c3RTdWdnZXN0aW9uc0NvbnRyb2wgc2hvd1N1Z2dlc3Rpb25zRHJvcGRvd246YWN0aXZhdGlvblR5
cGU6XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2wgZGlkU2VsZWN0
T3B0aW9uQXRJbmRleDpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJv
bCBpbnZhbGlkYXRlXSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2wg
dGV4dFN1Z2dlc3Rpb25zXSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRy
b2wgc3VnZ2VzdGlvbnNDb3VudF0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnND
b250cm9sIHN1Z2dlc3Rpb25BdEluZGV4Ol0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2Vz
dGlvbnNDb250cm9sIHRleHRBbGlnbm1lbnRdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dl
c3Rpb25zUGlja2VyIGluaXRXaXRoSW5mb3JtYXRpb246aW5WaWV3Ol0pOgorICAgICAgICAoLVtX
S0RhdGFMaXN0U3VnZ2VzdGlvbnNQaWNrZXIgdXBkYXRlV2l0aEluZm9ybWF0aW9uOl0pOgorICAg
ICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQaWNrZXIgc2hvd1N1Z2dlc3Rpb25zRHJvcGRv
d246YWN0aXZhdGlvblR5cGU6XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc1Bp
Y2tlciBudW1iZXJPZkNvbXBvbmVudHNJblBpY2tlclZpZXc6XSk6CisgICAgICAgICgtW1dLRGF0
YUxpc3RTdWdnZXN0aW9uc1BpY2tlciBwaWNrZXJWaWV3Om51bWJlck9mUm93c0luQ29tcG9uZW50
Ol0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQaWNrZXIgcGlja2VyVmlldzp0
aXRsZUZvclJvdzpmb3JDb21wb25lbnQ6XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0
aW9uc1BpY2tlciBpbnZhbGlkYXRlXSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9u
c1BpY2tlclZpZXcgZW5kRWRpdGluZ10pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlv
bnNQb3BvdmVyIGluaXRXaXRoSW5mb3JtYXRpb246aW5WaWV3Ol0pOgorICAgICAgICAoLVtXS0Rh
dGFMaXN0U3VnZ2VzdGlvbnNQb3BvdmVyIHVwZGF0ZVdpdGhJbmZvcm1hdGlvbjpdKToKKyAgICAg
ICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUG9wb3ZlciBzaG93U3VnZ2VzdGlvbnNEcm9wZG93
bjphY3RpdmF0aW9uVHlwZTpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUG9w
b3ZlciBpbnZhbGlkYXRlXSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc1BvcG92
ZXIgZGlkU2VsZWN0T3B0aW9uQXRJbmRleDpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dl
c3Rpb25zVmlld0NvbnRyb2xsZXIgcmVsb2FkRGF0YV0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0
U3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlciB0YWJsZVZpZXc6bnVtYmVyT2ZSb3dzSW5TZWN0aW9u
Ol0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlciB0YWJs
ZVZpZXc6Y2VsbEZvclJvd0F0SW5kZXhQYXRoOl0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3Vn
Z2VzdGlvbnNWaWV3Q29udHJvbGxlciB0YWJsZVZpZXc6ZGlkU2VsZWN0Um93QXRJbmRleFBhdGg6
XSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cGFnZURpZFNjcm9sbCk6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6
OmNyZWF0ZURhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bik6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tGb3JtSW5wdXRTZXNz
aW9uIGVuZEVkaXRpbmddKToKKyAgICAgICAgKC1bV0tGb3JtSW5wdXRTZXNzaW9uIHNldFN1Z2dl
c3Rpb25zOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9mb3JtSW5wdXRTZXNzaW9uXSk6
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgcmVzaWduRmlyc3RSZXNwb25kZXJGb3JXZWJWaWV3
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgdGV4dEludGVyYWN0aW9uR2VzdHVyZTpzaG91
bGRCZWdpbkF0UG9pbnQ6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgYWNjZXNzb3J5VGFi
Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGluc2VydFRleHRTdWdnZXN0aW9uOl0pOgor
ICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
ZGlkQ2xvc2VTdWdnZXN0aW9ucyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9y
bWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0QXNzaXN0ZWROb2RlSW5mb3Jt
YXRpb24pOgorCiAyMDE4LTA4LTI3ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNv
bT4KIAogICAgICAgICBDb25zb2xpZGF0ZSBFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUiBhbmQgRU5B
QkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL2h0bWwuY3NzIGIvU291cmNlL1dlYkNvcmUvY3NzL2h0bWwuY3NzCmluZGV4IGU2YjE4OWUw
ZWNhMTgwODY2MzFkNDgwZjIxYTFkMzZlZmI5NjgzYmIuLjA5ZDc3NGQ4M2Y1NDllYzA1MjU4YjA0
MmE5MTg4NGRkOWEwYmUxM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9odG1sLmNz
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvaHRtbC5jc3MKQEAgLTYyNiw3ICs2MjYsMTQgQEAg
aW5wdXQ6Oi13ZWJraXQtbGlzdC1idXR0b24gewogICAgIGZsZXg6IG5vbmU7CiAgICAgLXdlYmtp
dC11c2VyLXNlbGVjdDogbm9uZTsKICAgICB3aWR0aDogMTZweDsKKyNpZiBkZWZpbmVkKFdURl9Q
TEFURk9STV9JT1MpICYmIFdURl9QTEFURk9STV9JT1MKKyAgICBjb250ZW50OiB1cmwoJ2RhdGE6
aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ry
b2tlPSJibGFjayIgZmlsbD0iYmxhY2siIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBvbHlnb24g
cG9pbnRzPSI4IDExLjAzMSwgNC41IDQuOTY5LCAxMS41IDQuOTY5Ii8+PC9zdmc+Jyk7CisgICAg
LyogTWFrZSBpdCBlYXNpZXIgdG8gaGl0IHRoZSBidXR0b24gb24gaU9TICovCisgICAgcGFkZGlu
ZzogN3B4OworICAgIG1hcmdpbjogLTdweDsKKyNlbHNlCiAgICAgaGVpZ2h0OiAxMDAlOworI2Vu
ZGlmCiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRhTGlz
dFN1Z2dlc3Rpb25JbmZvcm1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRhTGlzdFN1
Z2dlc3Rpb25JbmZvcm1hdGlvbi5oCmluZGV4IDhjNDQ5ZWY5OTk0YzYwM2NjNGY1ZWM4YTVhZDk5
Mzk1MGEwNTU5ZmUuLjU3OTQ1MWE1OTgzMmZkZGZmYzliOThmNDBjZDk1OTU1NjhjZWZjNmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0
aW9uLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSW50UmVj
dC5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVN
RU5UKQogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuaAppbmRleCBlMzJiMzg5M2ViNGFjNzk2YzY2ZTA4YzFiZGE3ZjNlNDcyOWVjOGQzLi40Y2U4
OWIxNjAwM2VlNWVmYjk4YTBjOGY3YzNlMzkwODNhMjA0YTI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuaApAQCAtMTUxLDcgKzE1MSw3IEBAIHB1YmxpYzoKICAgICBIVE1M
RWxlbWVudCogcGxhY2Vob2xkZXJFbGVtZW50KCkgY29uc3QgZmluYWw7CiAgICAgV0VCQ09SRV9F
WFBPUlQgSFRNTEVsZW1lbnQqIGF1dG9GaWxsQnV0dG9uRWxlbWVudCgpIGNvbnN0OwogI2lmIEVO
QUJMRShEQVRBTElTVF9FTEVNRU5UKQotICAgIEhUTUxFbGVtZW50KiBkYXRhTGlzdEJ1dHRvbkVs
ZW1lbnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBIVE1MRWxlbWVudCogZGF0YUxpc3RC
dXR0b25FbGVtZW50KCkgY29uc3Q7CiAjZW5kaWYKIAogICAgIGJvb2wgY2hlY2tlZCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNDaGVja2VkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElu
cHV0VHlwZS5jcHAKaW5kZXggMTNjMzFiYTYxYWEyYWNjZjMyMGU2M2QyMGExMzE0ZDA0ODVmZmZi
Yi4uY2ViNWRjMmY1OWEyNDYyMjZmOWIyODgyMmExMjQzMjQ2OGI2YzNjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtMjYwLDggKzI2MCwxMyBAQCB2
b2lkIFRleHRGaWVsZElucHV0VHlwZTo6aGFuZGxlRm9jdXNFdmVudChOb2RlKiBvbGRGb2N1c2Vk
Tm9kZSwgRm9jdXNEaXJlY3Rpb24pCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CiAgICAgQVNT
RVJUX1VOVVNFRChvbGRGb2N1c2VkTm9kZSwgb2xkRm9jdXNlZE5vZGUgIT0gZWxlbWVudCgpKTsK
LSAgICBpZiAoUmVmUHRyPEZyYW1lPiBmcmFtZSA9IGVsZW1lbnQoKS0+ZG9jdW1lbnQoKS5mcmFt
ZSgpKQorICAgIGlmIChSZWZQdHI8RnJhbWU+IGZyYW1lID0gZWxlbWVudCgpLT5kb2N1bWVudCgp
LmZyYW1lKCkpIHsKICAgICAgICAgZnJhbWUtPmVkaXRvcigpLnRleHRGaWVsZERpZEJlZ2luRWRp
dGluZyhlbGVtZW50KCkpOworI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKSAmJiBQTEFURk9S
TShJT1MpCisgICAgICAgIGlmIChlbGVtZW50KCktPmxpc3QoKSAmJiBtX2RhdGFMaXN0RHJvcGRv
d25JbmRpY2F0b3IpCisgICAgICAgICAgICBtX2RhdGFMaXN0RHJvcGRvd25JbmRpY2F0b3ItPnNl
dElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBzdWdnZXN0aW9ucygpLnNp
emUoKSA/IENTU1ZhbHVlQmxvY2sgOiBDU1NWYWx1ZU5vbmUsIHRydWUpOworI2VuZGlmCisgICAg
fQogfQogCiB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6aGFuZGxlQmx1ckV2ZW50KCkKQEAgLTI2
OSw2ICsyNzQsMTAgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmhhbmRsZUJsdXJFdmVudCgp
CiAgICAgSW5wdXRUeXBlOjpoYW5kbGVCbHVyRXZlbnQoKTsKICAgICBBU1NFUlQoZWxlbWVudCgp
KTsKICAgICBlbGVtZW50KCktPmVuZEVkaXRpbmcoKTsKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxF
TUVOVCkgJiYgUExBVEZPUk0oSU9TKQorICAgIGlmIChlbGVtZW50KCktPmxpc3QoKSAmJiBtX2Rh
dGFMaXN0RHJvcGRvd25JbmRpY2F0b3IpCisgICAgICAgIG1fZGF0YUxpc3REcm9wZG93bkluZGlj
YXRvci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXksIENTU1ZhbHVl
Tm9uZSwgdHJ1ZSk7CisjZW5kaWYKIH0KIAogYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OnNob3Vs
ZFN1Ym1pdEltcGxpY2l0bHkoRXZlbnQmIGV2ZW50KQpAQCAtNjQ4LDYgKzY1NywxMCBAQCB2b2lk
IFRleHRGaWVsZElucHV0VHlwZTo6ZGlkU2V0VmFsdWVCeVVzZXJFZGl0KCkKICAgICBpZiAoUmVm
UHRyPEZyYW1lPiBmcmFtZSA9IGVsZW1lbnQoKS0+ZG9jdW1lbnQoKS5mcmFtZSgpKQogICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCkudGV4dERpZENoYW5nZUluVGV4dEZpZWxkKGVsZW1lbnQoKSk7CiAj
aWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmIChl
bGVtZW50KCktPmxpc3QoKSAmJiBtX2RhdGFMaXN0RHJvcGRvd25JbmRpY2F0b3IpCisgICAgICAg
IG1fZGF0YUxpc3REcm9wZG93bkluZGljYXRvci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eURpc3BsYXksIHN1Z2dlc3Rpb25zKCkuc2l6ZSgpID8gQ1NTVmFsdWVCbG9jayA6IENT
U1ZhbHVlTm9uZSwgdHJ1ZSk7CisjZW5kaWYKICAgICBpZiAoZWxlbWVudCgpLT5saXN0KCkpCiAg
ICAgICAgIGRpc3BsYXlTdWdnZXN0aW9ucyhEYXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9uVHlw
ZTo6VGV4dENoYW5nZWQpOwogI2VuZGlmCkBAIC04MDIsNyArODE1LDkgQEAgdm9pZCBUZXh0Rmll
bGRJbnB1dFR5cGU6Omxpc3RBdHRyaWJ1dGVUYXJnZXRDaGFuZ2VkKCkKICAgICBpZiAoIW1fZGF0
YUxpc3REcm9wZG93bkluZGljYXRvcikKICAgICAgICAgcmV0dXJuOwogCisjaWYgIVBMQVRGT1JN
KElPUykKICAgICBtX2RhdGFMaXN0RHJvcGRvd25JbmRpY2F0b3ItPnNldElubGluZVN0eWxlUHJv
cGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBlbGVtZW50KCktPmxpc3QoKSA/IENTU1ZhbHVlQmxv
Y2sgOiBDU1NWYWx1ZU5vbmUsIHRydWUpOworI2VuZGlmCiB9CiAKIEhUTUxFbGVtZW50KiBUZXh0
RmllbGRJbnB1dFR5cGU6OmRhdGFMaXN0QnV0dG9uRWxlbWVudCgpIGNvbnN0CkBAIC04NTksNyAr
ODc0LDcgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmRpc3BsYXlTdWdnZXN0aW9ucyhEYXRh
TGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9uVHlwZSB0eXAKICAgICBpZiAoZWxlbWVudCgpLT5pc0Rp
c2FibGVkRm9ybUNvbnRyb2woKSB8fCAhZWxlbWVudCgpLT5yZW5kZXJlcigpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoIVVzZXJHZXN0dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdl
c3R1cmUoKSkKKyAgICBpZiAoIVVzZXJHZXN0dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdl
c3R1cmUoKSAmJiB0eXBlICE9IERhdGFMaXN0U3VnZ2VzdGlvbkFjdGl2YXRpb25UeXBlOjpUZXh0
Q2hhbmdlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3N1Z2dlc3Rpb25QaWNrZXIg
JiYgc3VnZ2VzdGlvbnMoKS5zaXplKCkgPiAwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uY3BwCmluZGV4IDIxMDk3M2JlNWE5OWM5M2U3ZTNjMjk3
MGNkNjllMjc1ODc0YjVmMGUuLmMxYTQzMzVkNGRkZjkwMmFhZDJjN2YyNDU3OTE2MDc3ZGRiNzUx
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlv
bi5jcHAKQEAgLTk3LDkgKzk3LDEyIEBAIHZvaWQgQXNzaXN0ZWROb2RlSW5mb3JtYXRpb246OmVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBsYWJlbDsK
ICAgICBlbmNvZGVyIDw8IGFyaWFMYWJlbDsKICAgICBlbmNvZGVyIDw8IGFzc2lzdGVkTm9kZUlk
ZW50aWZpZXI7Ci0jaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpICYmIEVOQUJMRShEQVRBTElT
VF9FTEVNRU5UKQorI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIGVuY29kZXIgPDwg
aGFzU3VnZ2VzdGlvbnM7CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAgICAgZW5jb2Rl
ciA8PCBzdWdnZXN0ZWRDb2xvcnM7CiAjZW5kaWYKKyNlbmRpZgogfQogCiBib29sIEFzc2lzdGVk
Tm9kZUluZm9ybWF0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBBc3Npc3RlZE5v
ZGVJbmZvcm1hdGlvbiYgcmVzdWx0KQpAQCAtMjA2LDkgKzIwOSwxNCBAQCBib29sIEFzc2lzdGVk
Tm9kZUluZm9ybWF0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBBc3Npc3RlZE5v
ZGVJbmZvcm1hdAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmFzc2lzdGVkTm9kZUlk
ZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikgJiYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisjaWYgRU5BQkxFKERBVEFMSVNU
X0VMRU1FTlQpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaGFzU3VnZ2VzdGlvbnMp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zdWdnZXN0ZWRDb2xvcnMpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CisjZW5kaWYKICNlbmRpZgogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaAppbmRleCA2Njcx
NmQ0MDMyOTExZTFmMWQ3M2EwMzk4NTlhOTY2MzcxMjI0OGRkLi40MzM2MzhiOTQ4ZGYwOTc4YWIz
YzFiZDFiYTFhM2I3NDFkZGZhNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
c3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lz
dGVkTm9kZUluZm9ybWF0aW9uLmgKQEAgLTEyNSw4ICsxMjUsMTEgQEAgc3RydWN0IEFzc2lzdGVk
Tm9kZUluZm9ybWF0aW9uIHsKICAgICBTdHJpbmcgcGxhY2Vob2xkZXI7CiAgICAgU3RyaW5nIGxh
YmVsOwogICAgIFN0cmluZyBhcmlhTGFiZWw7Ci0jaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1Ip
ICYmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5U
KQorICAgIGJvb2wgaGFzU3VnZ2VzdGlvbnMgeyBmYWxzZSB9OworI2lmIEVOQUJMRShJTlBVVF9U
WVBFX0NPTE9SKQogICAgIFZlY3RvcjxXZWJDb3JlOjpDb2xvcj4gc3VnZ2VzdGVkQ29sb3JzOwor
I2VuZGlmCiAjZW5kaWYKIAogICAgIHVpbnQ2NF90IGFzc2lzdGVkTm9kZUlkZW50aWZpZXIgeyAw
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZv
cm1hdGlvbkF0UG9zaXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlv
bkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCmluZGV4IDliOTUzM2UwNzJkYTgwZGMzZGRiYzFiZDAx
YzUxYjI3MGNiM2YyOWMuLjNkMDg2ODlmZTE3NmRkN2E2MTcyYTEzN2MwNTgzZGNlYTczNzJmNjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0
aW9uQXRQb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlv
bkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCkBAIC01NSw2ICs1NSw5IEBAIHN0cnVjdCBJbnRlcmFj
dGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiB7CiAgICAgYm9vbCBpc0VsZW1lbnQgeyBmYWxzZSB9
OwogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKICAgICBib29sIGlzRGF0YURldGVjdG9yTGlu
ayB7IGZhbHNlIH07CisjZW5kaWYKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICBi
b29sIHByZXZlbnRUZXh0SW50ZXJhY3Rpb24geyBmYWxzZSB9OwogI2VuZGlmCiAgICAgV2ViQ29y
ZTo6RmxvYXRQb2ludCBhZGp1c3RlZFBvaW50Rm9yTm9kZVJlc3BvbmRpbmdUb0NsaWNrRXZlbnRz
OwogICAgIFdlYkNvcmU6OlVSTCB1cmw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW0KaW5kZXggY2Fm
M2IzZTU3ODkyODQyOGU3NDY2MTMzNTY3ZTU2YTUxZDI4ZjFjZC4uYTM5YWYyMjI1ODJhYTY1N2My
N2VkZTA2OWM1YzM2ZTI1YmI2MWFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
aW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5tbQpAQCAtODIs
NiArODIsOSBAQCB2b2lkIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjplbmNvZGUo
SVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgICAgICBJUEM6OmVuY29kZShlbmNvZGVy
LCByZWludGVycHJldF9jYXN0PENGRGF0YVJlZj4oYXJjaGl2ZXIuZ2V0KCkuZW5jb2RlZERhdGEp
KTsKICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICBlbmNv
ZGVyIDw8IHByZXZlbnRUZXh0SW50ZXJhY3Rpb247CisjZW5kaWYKIH0KIAogYm9vbCBJbnRlcmFj
dGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mIHJlc3VsdCkKQEAgLTE4Niw2ICsxODks
MTEgQEAgYm9vbCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6ZGVjb2RlKElQQzo6
RGVjb2RlciYgZGVjb2RlciwgSW50ZXJhY3Rpb24KICAgICB9CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShEQVRBTElTVF9FTEVNRU5UKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnByZXZl
bnRUZXh0SW50ZXJhY3Rpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKwogICAg
IHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZDhhM2M5MGRmZmUz
MjIzMjJkNzYzZWUyMWU3Y2JhNDUwZmU4NWZjZi4uNTM2YzQ2Mzc0YWE5MjE4OTJiZmU2OThlMDNl
OTdmN2M0ZTkyNGQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMzQ5LDYgKzM0OSw3IEBA
IFVJUHJvY2Vzcy9HYW1lcGFkL2lvcy9VSUdhbWVwYWRQcm92aWRlcklPUy5tbQogVUlQcm9jZXNz
L0dhbWVwYWQvbWFjL1VJR2FtZXBhZFByb3ZpZGVyTWFjLm1tCiAKIFVJUHJvY2Vzcy9pb3MvRHJh
Z0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCitVSVByb2Nlc3MvaW9zL1dlYkRhdGFMaXN0U3VnZ2Vz
dGlvbnNEcm9wZG93bklPUy5tbQogCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLQWlyUGxheVJvdXRl
UGlja2VyLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVy
Lm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjNWM1MWJk
OTE4OWQ5NGQ2M2Y4ZDI2MTY3YmZlMTE1NTM2N2IxNWI1Li4xODU3MGMyNDVmZTJhOGZiOThkOWM3
MmIwZjMzMDk4YTRmMmY3MDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTQ1NTEsNyArNDU1MSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cGFnZURpZFNj
cm9sbCgpCiAgICAgaWYgKG1faXNLZXlib2FyZEFuaW1hdGluZ0luKQogICAgICAgICByZXR1cm47
CiAjZW5kaWYKKworI2lmICFQTEFURk9STShJT1MpCiAgICAgY2xvc2VPdmVybGF5ZWRWaWV3cygp
OworI2VuZGlmCiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpydW5PcGVuUGFuZWwodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBj
b25zdCBGaWxlQ2hvb3NlclNldHRpbmdzJiBzZXR0aW5ncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCBkNzlkMGMyMDMyODI5YjU1
N2M3Y2Q2YjNiZDdiODVlYjExZWFlNjBkLi4yNjE1ZGE1MTYxMGEyODkwY2U0MjhiOWMyMjQ0Yzgy
MGE1MjU0ODExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLm1tCkBAIC00OCw2ICs0OCw3IEBACiAjaW1wb3J0ICJXS1dlYlZpZXdDb250ZW50
UHJvdmlkZXJSZWdpc3RyeS5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBv
cnQgIldlYkNvbnRleHRNZW51UHJveHkuaCIKKyNpbXBvcnQgIldlYkRhdGFMaXN0U3VnZ2VzdGlv
bnNEcm9wZG93bklPUy5oIgogI2ltcG9ydCAiV2ViRWRpdENvbW1hbmRQcm94eS5oIgogI2ltcG9y
dCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0ICJfV0tEb3dubG9hZEludGVybmFsLmgiCkBA
IC03NzMsNyArNzc0LDcgQEAgUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBQYWdlQ2xpZW50SW1wbDo6
Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2UKICNpZiBFTkFCTEUoREFU
QUxJU1RfRUxFTUVOVCkKIFJlZlB0cjxXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24+IFBh
Z2VDbGllbnRJbXBsOjpjcmVhdGVEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24oV2ViUGFnZVBy
b3h5JiBwYWdlKQogewotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBXZWJEYXRhTGlz
dFN1Z2dlc3Rpb25zRHJvcGRvd25JT1M6OmNyZWF0ZShwYWdlLCBtX2NvbnRlbnRWaWV3KTsKIH0K
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggYmZhNjdiZTFiMzFmYTk0MjYzYjZkNTc5ODc4Mzcx
NmE0ZGEyYjhmZC4uNDIxMzNmYzg4MTVmMjdmOGY5YjM0ZDZmZGMxOGNlYWY2OWY4ZmRhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24uaApAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCAiV0tGb3JtUGVyaXBoZXJhbC5o
IgogI2ltcG9ydCAiV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLmgiCiAjaW1wb3J0ICJXS1N5
bnRoZXRpY0NsaWNrVGFwR2VzdHVyZVJlY29nbml6ZXIuaCIKKyNpbXBvcnQgIl9XS0Zvcm1JbnB1
dFNlc3Npb24uaCIKICNpbXBvcnQgPFVJS2l0L1VJVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9D
b2xvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFF1YWQuaD4KQEAgLTE0MSw2ICsxNDIsMTYg
QEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKIAogfQogCitAY2xhc3MgV0tGb2N1c2Vk
RWxlbWVudEluZm87CisKK0BpbnRlcmZhY2UgV0tGb3JtSW5wdXRTZXNzaW9uIDogTlNPYmplY3Qg
PF9XS0Zvcm1JbnB1dFNlc3Npb24+CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbnRlbnRW
aWV3OihXS0NvbnRlbnRWaWV3ICopdmlldyBmb2N1c2VkRWxlbWVudEluZm86KFdLRm9jdXNlZEVs
ZW1lbnRJbmZvICopZWxlbWVudEluZm8gcmVxdWlyZXNTdHJvbmdQYXNzd29yZEFzc2lzdGFuY2U6
KEJPT0wpcmVxdWlyZXNTdHJvbmdQYXNzd29yZEFzc2lzdGFuY2U7CistICh2b2lkKWVuZEVkaXRp
bmc7CistICh2b2lkKWludmFsaWRhdGU7CisKK0BlbmQKKwogQGludGVyZmFjZSBXS0NvbnRlbnRW
aWV3ICgpIHsKICAgICBSZXRhaW5QdHI8VUlXZWJUb3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25pemVy
PiBfdG91Y2hFdmVudEdlc3R1cmVSZWNvZ25pemVyOwogCkBAIC0zMzQsNiArMzQ1LDcgQEAgRk9S
X0VBQ0hfV0tDT05URU5UVklFV19BQ1RJT04oREVDTEFSRV9XS0NPTlRFTlRWSUVXX0FDVElPTl9G
T1JfV0VCX1ZJRVcpCiAtICh2b2lkKV9hY2Nlc3NpYmlsaXR5UmV0cmlldmVSZWN0c0F0U2VsZWN0
aW9uT2Zmc2V0OihOU0ludGVnZXIpb2Zmc2V0IHdpdGhUZXh0OihOU1N0cmluZyAqKXRleHQ7CiAt
ICh2b2lkKV9hY2Nlc3NpYmlsaXR5U3RvcmVTZWxlY3Rpb247CiAtICh2b2lkKV9hY2Nlc3NpYmls
aXR5Q2xlYXJTZWxlY3Rpb247CistIChXS0Zvcm1JbnB1dFNlc3Npb24gKilfZm9ybUlucHV0U2Vz
c2lvbjsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXZWJLaXQ6OkludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIGN1cnJlbnRQb3NpdGlvbkluZm9ybWF0aW9uOwogLSAo
dm9pZClkb0FmdGVyUG9zaXRpb25JbmZvcm1hdGlvblVwZGF0ZToodm9pZCAoXikoV2ViS2l0OjpJ
bnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbikpYWN0aW9uIGZvclJlcXVlc3Q6KFdlYktp
dDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QpcmVxdWVzdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmlu
ZGV4IDMwNmYzOGIxZTBlMDI3OGFiOTBhOGRkNGU4ZDQ4YTc0YTFmOTkwODkuLmZjZTVhMjA5Yjhk
YjM1YWRkNWVlOThjOTM0MzRlYzViYzQ0NWFmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNjAsNiAr
NjAsNyBAQAogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaCIKICNpbXBv
cnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdQcml2YXRlLmgiCisj
aW1wb3J0ICJXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MuaCIKICNpbXBvcnQgIldl
YkV2ZW50LmgiCiAjaW1wb3J0ICJXZWJJT1NFdmVudEZhY3RvcnkuaCIKICNpbXBvcnQgIldlYlBh
Z2VNZXNzYWdlcy5oIgpAQCAtNjcsNyArNjgsNiBAQAogI2ltcG9ydCAiX1dLQWN0aXZhdGVkRWxl
bWVudEluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRWxlbWVudEFjdGlvbi5oIgogI2ltcG9y
dCAiX1dLRm9jdXNlZEVsZW1lbnRJbmZvLmgiCi0jaW1wb3J0ICJfV0tGb3JtSW5wdXRTZXNzaW9u
LmgiCiAjaW1wb3J0ICJfV0tJbnB1dERlbGVnYXRlLmgiCiAjaW1wb3J0IDxDb3JlVGV4dC9DVEZv
bnQuaD4KICNpbXBvcnQgPENvcmVUZXh0L0NURm9udERlc2NyaXB0b3IuaD4KQEAgLTI4NCwxMyAr
Mjg0LDYgQEAgY29uc3QgQ0dGbG9hdCBtaW5pbXVtVGFwSGlnaGxpZ2h0UmFkaXVzID0gMi4wOwog
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQXNzaXN0ZWROb2RlSW5mb3JtYXRpb246KGNvbnN0IEFz
c2lzdGVkTm9kZUluZm9ybWF0aW9uJilpbmZvcm1hdGlvbiBpc1VzZXJJbml0aWF0ZWQ6KEJPT0wp
aXNVc2VySW5pdGlhdGVkIHVzZXJPYmplY3Q6KE5TT2JqZWN0IDxOU1NlY3VyZUNvZGluZz4gKil1
c2VyT2JqZWN0OwogQGVuZAogCi1AaW50ZXJmYWNlIFdLRm9ybUlucHV0U2Vzc2lvbiA6IE5TT2Jq
ZWN0IDxfV0tGb3JtSW5wdXRTZXNzaW9uPgotCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb250
ZW50VmlldzooV0tDb250ZW50VmlldyAqKXZpZXcgZm9jdXNlZEVsZW1lbnRJbmZvOihXS0ZvY3Vz
ZWRFbGVtZW50SW5mbyAqKWVsZW1lbnRJbmZvIHJlcXVpcmVzU3Ryb25nUGFzc3dvcmRBc3Npc3Rh
bmNlOihCT09MKXJlcXVpcmVzU3Ryb25nUGFzc3dvcmRBc3Npc3RhbmNlOwotLSAodm9pZClpbnZh
bGlkYXRlOwotCi1AZW5kCi0KIEBpbXBsZW1lbnRhdGlvbiBXS0Zvcm1JbnB1dFNlc3Npb24gewog
ICAgIFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+IF9jb250ZW50VmlldzsKICAgICBSZXRhaW5Q
dHI8V0tGb2N1c2VkRWxlbWVudEluZm8+IF9mb2N1c2VkRWxlbWVudEluZm87CkBAIC0zODUsNiAr
Mzc4LDEyIEBAIGNvbnN0IENHRmxvYXQgbWluaW11bVRhcEhpZ2hsaWdodFJhZGl1cyA9IDIuMDsK
ICAgICBbX2NvbnRlbnRWaWV3IHJlbG9hZElucHV0Vmlld3NdOwogfQogCistICh2b2lkKWVuZEVk
aXRpbmcKK3sKKyAgICBpZiAoW19jdXN0b21JbnB1dFZpZXcgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihlbmRFZGl0aW5nKV0pCisgICAgICAgIFtfY3VzdG9tSW5wdXRWaWV3IHBlcmZvcm1T
ZWxlY3RvcjpAc2VsZWN0b3IoZW5kRWRpdGluZyldOworfQorCiAtIChOU0FycmF5PFVJVGV4dFN1
Z2dlc3Rpb24gKj4gKilzdWdnZXN0aW9ucwogewogICAgIHJldHVybiBfc3VnZ2VzdGlvbnMuZ2V0
KCk7CkBAIC0zOTIsNiArMzkxLDEyIEBAIGNvbnN0IENHRmxvYXQgbWluaW11bVRhcEhpZ2hsaWdo
dFJhZGl1cyA9IDIuMDsKIAogLSAodm9pZClzZXRTdWdnZXN0aW9uczooTlNBcnJheTxVSVRleHRT
dWdnZXN0aW9uICo+ICopc3VnZ2VzdGlvbnMKIHsKKyAgICAvLyBTdWdnZXN0aW9ucyB0aGF0IGNv
bWUgZnJvbSBhIDxkYXRhbGlzdD4gc2hvdWxkIG5vdCBiZSBvdmVyd3JpdHRlbiBieSBvdGhlciBj
bGllbnRzLgorI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIGlmIChbX2NvbnRlbnRW
aWV3IGFzc2lzdGVkTm9kZUluZm9ybWF0aW9uXS5oYXNTdWdnZXN0aW9ucyAmJiAhW3N1Z2dlc3Rp
b25zLmZpcnN0T2JqZWN0IGlzS2luZE9mQ2xhc3M6W1dLRGF0YUxpc3RUZXh0U3VnZ2VzdGlvbiBj
bGFzc11dKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIGlkIDxVSVRleHRJbnB1dFN1
Z2dlc3Rpb25EZWxlZ2F0ZT4gc3VnZ2VzdGlvbkRlbGVnYXRlID0gKGlkIDxVSVRleHRJbnB1dFN1
Z2dlc3Rpb25EZWxlZ2F0ZT4pW19jb250ZW50VmlldyBpbnB1dERlbGVnYXRlXTsKICAgICBfc3Vn
Z2VzdGlvbnMgPSBhZG9wdE5TKFtzdWdnZXN0aW9ucyBjb3B5XSk7CiAgICAgW3N1Z2dlc3Rpb25E
ZWxlZ2F0ZSBzZXRTdWdnZXN0aW9uczpzdWdnZXN0aW9uc107CkBAIC01OTUsNiArNjAwLDExIEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBoYXNBc3Npc3RlZE5vZGUoV2ViS2l0OjpBc3Npc3RlZE5vZGVJ
bmZvcm1hdGlvbiBhc3Npc3RlZE5vZGVJCiAgICAgcmV0dXJuIChhc3Npc3RlZE5vZGVJbmZvcm1h
dGlvbi5lbGVtZW50VHlwZSAhPSBJbnB1dFR5cGU6Ok5vbmUpOwogfQogCistIChXS0Zvcm1JbnB1
dFNlc3Npb24gKilfZm9ybUlucHV0U2Vzc2lvbgoreworICAgIHJldHVybiBfZm9ybUlucHV0U2Vz
c2lvbi5nZXQoKTsKK30KKwogLSAodm9pZClfY3JlYXRlQW5kQ29uZmlndXJlRG91YmxlVGFwR2Vz
dHVyZVJlY29nbml6ZXIKIHsKICAgICBfZG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIgPSBhZG9w
dE5TKFtbVUlUYXBHZXN0dXJlUmVjb2duaXplciBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6c2VsZiBh
Y3Rpb246QHNlbGVjdG9yKF9kb3VibGVUYXBSZWNvZ25pemVkOildKTsKQEAgLTk5NSw2ICsxMDA1
LDggQEAgc3RhdGljIGlubGluZSBib29sIGhhc0Fzc2lzdGVkTm9kZShXZWJLaXQ6OkFzc2lzdGVk
Tm9kZUluZm9ybWF0aW9uIGFzc2lzdGVkTm9kZUkKICAgICBpZiAoIV93ZWJWaWV3LT5fYWN0aXZl
Rm9jdXNlZFN0YXRlUmV0YWluQ291bnQpIHsKICAgICAgICAgLy8gV2UgbmVlZCB0byBjb21wbGV0
ZSB0aGUgZWRpdGluZyBvcGVyYXRpb24gYmVmb3JlIHdlIGJsdXIgdGhlIGVsZW1lbnQuCiAgICAg
ICAgIFtfaW5wdXRQZXJpcGhlcmFsIGVuZEVkaXRpbmddOworICAgICAgICBbX2Zvcm1JbnB1dFNl
c3Npb24gZW5kRWRpdGluZ107CisKICAgICAgICAgX3BhZ2UtPmJsdXJBc3Npc3RlZE5vZGUoKTsK
ICAgICB9CiAKQEAgLTE3MzksNiArMTc1MSwxMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTYW1l
UGFpcihVSUdlc3R1cmVSZWNvZ25pemVyICphLCBVSUdlc3R1cmVSZWNvZ25pemVyICpiLCBVSQog
ICAgIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgaWYgKF9w
b3NpdGlvbkluZm9ybWF0aW9uLnByZXZlbnRUZXh0SW50ZXJhY3Rpb24pCisgICAgICAgIHJldHVy
biBOTzsKKyNlbmRpZgorCiAgICAgLy8gSWYgd2UncmUgY3VycmVudGx5IGVkaXRpbmcgYW4gYXNz
aXN0ZWQgbm9kZSwgb25seSBhbGxvdyB0aGUgc2VsZWN0aW9uIHRvIG1vdmUgd2l0aGluIHRoYXQg
YXNzaXN0ZWQgbm9kZS4KICAgICBpZiAoc2VsZi5pc0Fzc2lzdGluZ05vZGUpCiAgICAgICAgIHJl
dHVybiBfcG9zaXRpb25JbmZvcm1hdGlvbi5ub2RlQXRQb3NpdGlvbklzQXNzaXN0ZWROb2RlOwpA
QCAtMzA5OSw2ICszMTE2LDggQEAgc3RhdGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZFdpdGhUb3Vj
aChXS0NvbnRlbnRWaWV3ICp2aWV3LCBjb25zdCBXZWJDb3JlOjpJbnRQb2kKIAogLSAodm9pZClh
Y2Nlc3NvcnlUYWI6KEJPT0wpaXNOZXh0CiB7CisgICAgW19mb3JtSW5wdXRTZXNzaW9uIGVuZEVk
aXRpbmddOworCiAgICAgW19pbnB1dFBlcmlwaGVyYWwgZW5kRWRpdGluZ107CiAgICAgX2lucHV0
UGVyaXBoZXJhbCA9IG5pbDsKIApAQCAtMzEwOSw3ICszMTI4LDYgQEAgc3RhdGljIHZvaWQgc2Vs
ZWN0aW9uQ2hhbmdlZFdpdGhUb3VjaChXS0NvbnRlbnRWaWV3ICp2aWV3LCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2kKICAgICAgICAgW3ZpZXcgZW5kU2VsZWN0aW9uQ2hhbmdlXTsKICAgICAgICAgW3Zp
ZXcgcmVsb2FkSW5wdXRWaWV3c107CiAgICAgfSk7Ci0KIH0KIAogLSAodm9pZClfYmVjb21lRmly
c3RSZXNwb25kZXJXaXRoU2VsZWN0aW9uTW92aW5nRm9yd2FyZDooQk9PTClzZWxlY3RpbmdGb3J3
YXJkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShCT09MIGRpZEJlY29tZUZpcnN0UmVzcG9u
ZGVyKSljb21wbGV0aW9uSGFuZGxlcgpAQCAtMzIwOCw2ICszMjI2LDEyIEBAIHN0YXRpYyB2b2lk
IHNlbGVjdGlvbkNoYW5nZWRXaXRoVG91Y2goV0tDb250ZW50VmlldyAqdmlldywgY29uc3QgV2Vi
Q29yZTo6SW50UG9pCiAgICAgICAgIF9wYWdlLT5hdXRvZmlsbExvZ2luQ3JlZGVudGlhbHMoWyhV
SVRleHRBdXRvZmlsbFN1Z2dlc3Rpb24gKil0ZXh0U3VnZ2VzdGlvbiB1c2VybmFtZV0sIFsoVUlU
ZXh0QXV0b2ZpbGxTdWdnZXN0aW9uICopdGV4dFN1Z2dlc3Rpb24gcGFzc3dvcmRdKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICBpZiAo
W3RleHRTdWdnZXN0aW9uIGlzS2luZE9mQ2xhc3M6W1dLRGF0YUxpc3RUZXh0U3VnZ2VzdGlvbiBj
bGFzc11dKSB7CisgICAgICAgIF9wYWdlLT5zZXRBc3Npc3RlZE5vZGVWYWx1ZShbdGV4dFN1Z2dl
c3Rpb24gaW5wdXRUZXh0XSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKICAgICBp
ZCA8X1dLSW5wdXREZWxlZ2F0ZT4gaW5wdXREZWxlZ2F0ZSA9IFtfd2ViVmlldyBfaW5wdXREZWxl
Z2F0ZV07CiAgICAgaWYgKFtpbnB1dERlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoX3dlYlZpZXc6aW5zZXJ0VGV4dFN1Z2dlc3Rpb246aW5JbnB1dFNlc3Npb246KV0pCiAgICAg
ICAgIFtpbnB1dERlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3IGluc2VydFRleHRTdWdnZXN0aW9u
OnRleHRTdWdnZXN0aW9uIGluSW5wdXRTZXNzaW9uOl9mb3JtSW5wdXRTZXNzaW9uLmdldCgpXTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJEYXRhTGlzdFN1Z2dl
c3Rpb25zRHJvcGRvd25JT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJEYXRh
TGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMGYxZTNhMmRhNzg2YjM2
MDhiOTA5NjJiZmVjNmU2ZGY1NzJkOWVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5oCkBAIC0w
LDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShEQVRB
TElTVF9FTEVNRU5UKSAmJiBQTEFURk9STShJT1MpCisKKyNpbXBvcnQgIlVJS2l0U1BJLmgiCisj
aW1wb3J0ICJXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24uaCIKKyNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitPQkpDX0NMQVNTIFdLQ29u
dGVudFZpZXc7CitPQkpDX0NMQVNTIFdLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2w7CisKK0Bp
bnRlcmZhY2UgV0tEYXRhTGlzdFRleHRTdWdnZXN0aW9uIDogVUlUZXh0U3VnZ2VzdGlvbgorQGVu
ZAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ry
b3Bkb3duSU9TIDogcHVibGljIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93biB7CitwdWJs
aWM6CisgICAgc3RhdGljIFJlZjxXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1M+IGNy
ZWF0ZShXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd246OkNsaWVudCYsIFdLQ29udGVudFZp
ZXcgKik7CisKKyAgICB2b2lkIGRpZFNlbGVjdE9wdGlvbihTdHJpbmcmKTsKKworcHJpdmF0ZToK
KyAgICBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MoV2ViRGF0YUxpc3RTdWdnZXN0
aW9uc0Ryb3Bkb3duOjpDbGllbnQmLCBXS0NvbnRlbnRWaWV3ICopOworCisgICAgdm9pZCBzaG93
KFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uJiYpIGZpbmFsOworICAgIHZv
aWQgaGFuZGxlS2V5ZG93bldpdGhJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAg
IHZvaWQgY2xvc2UoKSBmaW5hbDsKKworICAgIFdLQ29udGVudFZpZXcgKm1fY29udGVudFZpZXc7
CisgICAgUmV0YWluUHRyPFdLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2w+IG1fc3VnZ2VzdGlv
bnNDb250cm9sOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoREFUQUxJU1RfRUxFTUVOVCkgJiYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJv
cGRvd25JT1MubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDBhYzE0MWNlOTI2ZjY2ZDFhZmI1ZDdlODQxNTRkN2Y2
YmU3MTRmZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW0KQEAgLTAsMCArMSwzNjcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViRGF0YUxpc3RTdWdn
ZXN0aW9uc0Ryb3Bkb3duSU9TLmgiCisKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkgJiYg
UExBVEZPUk0oSU9TKQorCisjaW1wb3J0ICJXS0NvbnRlbnRWaWV3LmgiCisjaW1wb3J0ICJXS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24uaCIKKyNpbXBvcnQgIldLRm9ybVBvcG92ZXIuaCIKKyNpbXBv
cnQgIl9XS0Zvcm1JbnB1dFNlc3Npb24uaCIKKworc3RhdGljIGNvbnN0IENHRmxvYXQgbWF4Vmlz
aWJsZVN1Z2dlc3Rpb25zID0gNTsKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IHN1Z2dlc3Rpb25zUG9w
b3ZlckNlbGxIZWlnaHQgPSA0NDsKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IHN1Z2dlc3Rpb25zUG9w
b3ZlcldpZHRoID0gMzIwOworc3RhdGljIE5TU3RyaW5nICogY29uc3Qgc3VnZ2VzdGlvbkNlbGxS
ZXVzZUlkZW50aWZpZXIgPSBAIldLRGF0YUxpc3RTdWdnZXN0aW9uQ2VsbCI7CisKK0BpbnRlcmZh
Y2UgV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbCA6IE5TT2JqZWN0IHsKKyAgICBXZWJLaXQ6
OldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUyogX2Ryb3Bkb3duOworICAgIFZlY3Rv
cjxTdHJpbmc+IF9zdWdnZXN0aW9uczsKK30KKworQHByb3BlcnR5IChub25hdG9taWMsIHdlYWsp
IFdLQ29udGVudFZpZXcgKnZpZXc7CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEluZm9ybWF0
aW9uOihXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbiYmKWluZm9ybWF0aW9u
IGluVmlldzooV0tDb250ZW50VmlldyAqKXZpZXc7CistICh2b2lkKXVwZGF0ZVdpdGhJbmZvcm1h
dGlvbjooV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24mJilpbmZvcm1hdGlv
bjsKKy0gKHZvaWQpc2hvd1N1Z2dlc3Rpb25zRHJvcGRvd246KFdlYktpdDo6V2ViRGF0YUxpc3RT
dWdnZXN0aW9uc0Ryb3Bkb3duSU9TICopZHJvcGRvd24gYWN0aXZhdGlvblR5cGU6KFdlYkNvcmU6
OkRhdGFMaXN0U3VnZ2VzdGlvbkFjdGl2YXRpb25UeXBlKWFjdGl2YXRpb25UeXBlOworLSAodm9p
ZClkaWRTZWxlY3RPcHRpb25BdEluZGV4OihOU0ludGVnZXIpaW5kZXg7CistICh2b2lkKWludmFs
aWRhdGU7CisKKy0gKE5TQXJyYXk8V0tEYXRhTGlzdFRleHRTdWdnZXN0aW9uICo+ICopdGV4dFN1
Z2dlc3Rpb25zOworLSAoTlNJbnRlZ2VyKXN1Z2dlc3Rpb25zQ291bnQ7CistIChTdHJpbmcpc3Vn
Z2VzdGlvbkF0SW5kZXg6KE5TSW50ZWdlcilpbmRleDsKKy0gKE5TVGV4dEFsaWdubWVudCl0ZXh0
QWxpZ25tZW50OworQGVuZAorCitAaW50ZXJmYWNlIFdLRGF0YUxpc3RTdWdnZXN0aW9uc1BpY2tl
ciA6IFdLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2wgPFVJUGlja2VyVmlld0RhdGFTb3VyY2Us
IFVJUGlja2VyVmlld0RlbGVnYXRlPgorQGVuZAorCitAaW50ZXJmYWNlIFdLRGF0YUxpc3RTdWdn
ZXN0aW9uc1BpY2tlclZpZXcgOiBVSVBpY2tlclZpZXcKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3
ZWFrKSBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sICpjb250cm9sOworCistICh2b2lkKWVu
ZEVkaXRpbmc7CitAZW5kCisKK0BpbnRlcmZhY2UgV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUG9wb3Zl
ciA6IFdLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2wKK0BlbmQKKworQGludGVyZmFjZSBXS0Rh
dGFMaXN0U3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlciA6IFVJVGFibGVWaWV3Q29udHJvbGxlcgor
QHByb3BlcnR5IChub25hdG9taWMsIHdlYWspIFdLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2wg
KmNvbnRyb2w7CisKKy0gKHZvaWQpcmVsb2FkRGF0YTsKK0BlbmQKKworQGltcGxlbWVudGF0aW9u
IFdLRGF0YUxpc3RUZXh0U3VnZ2VzdGlvbgorQGVuZAorCisjcHJhZ21hIG1hcmsgLSBXZWJEYXRh
TGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1JlZjxX
ZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1M+IFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNE
cm9wZG93bklPUzo6Y3JlYXRlKFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bjo6Q2xpZW50
JiBjbGllbnQsIFdLQ29udGVudFZpZXcgKnZpZXcpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TKGNsaWVudCwgdmlldykpOworfQor
CitXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1M6OldlYkRhdGFMaXN0U3VnZ2VzdGlv
bnNEcm9wZG93bklPUyhXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd246OkNsaWVudCYgY2xp
ZW50LCBXS0NvbnRlbnRWaWV3ICp2aWV3KQorICAgIDogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ry
b3Bkb3duKGNsaWVudCkKKyAgICAsIG1fY29udGVudFZpZXcodmlldykKK3sKK30KKwordm9pZCBX
ZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1M6OnNob3coV2ViQ29yZTo6RGF0YUxpc3RT
dWdnZXN0aW9uSW5mb3JtYXRpb24mJiBpbmZvcm1hdGlvbikKK3sKKyAgICBpZiAobV9zdWdnZXN0
aW9uc0NvbnRyb2wpIHsKKyAgICAgICAgW21fc3VnZ2VzdGlvbnNDb250cm9sIHVwZGF0ZVdpdGhJ
bmZvcm1hdGlvbjpXVEZNb3ZlKGluZm9ybWF0aW9uKV07CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoY3VycmVudFVzZXJJbnRlcmZhY2VJZGlvbUlzUGFkKCkpCisgICAgICAgIG1f
c3VnZ2VzdGlvbnNDb250cm9sID0gYWRvcHROUyhbW1dLRGF0YUxpc3RTdWdnZXN0aW9uc1BvcG92
ZXIgYWxsb2NdIGluaXRXaXRoSW5mb3JtYXRpb246V1RGTW92ZShpbmZvcm1hdGlvbikgaW5WaWV3
Om1fY29udGVudFZpZXddKTsKKyAgICBlbHNlCisgICAgICAgIG1fc3VnZ2VzdGlvbnNDb250cm9s
ID0gYWRvcHROUyhbW1dLRGF0YUxpc3RTdWdnZXN0aW9uc1BpY2tlciBhbGxvY10gaW5pdFdpdGhJ
bmZvcm1hdGlvbjpXVEZNb3ZlKGluZm9ybWF0aW9uKSBpblZpZXc6bV9jb250ZW50Vmlld10pOwor
CisgICAgW21fc3VnZ2VzdGlvbnNDb250cm9sIHNob3dTdWdnZXN0aW9uc0Ryb3Bkb3duOnRoaXMg
YWN0aXZhdGlvblR5cGU6aW5mb3JtYXRpb24uYWN0aXZhdGlvblR5cGVdOworfQorCit2b2lkIFdl
YkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUzo6aGFuZGxlS2V5ZG93bldpdGhJZGVudGlm
aWVyKGNvbnN0IFN0cmluZyYpCit7Cit9CisKK3ZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ry
b3Bkb3duSU9TOjpjbG9zZSgpCit7CisgICAgW21fc3VnZ2VzdGlvbnNDb250cm9sIGludmFsaWRh
dGVdOworICAgIG1fc3VnZ2VzdGlvbnNDb250cm9sID0gbmlsOworICAgIG1fY2xpZW50LT5kaWRD
bG9zZVN1Z2dlc3Rpb25zKCk7Cit9CisKK3ZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bk
b3duSU9TOjpkaWRTZWxlY3RPcHRpb24oU3RyaW5nJiBzZWxlY3RlZE9wdGlvbikKK3sKKyAgICBp
ZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC0+ZGlkU2VsZWN0
T3B0aW9uKHNlbGVjdGVkT3B0aW9uKTsKKyAgICBjbG9zZSgpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI3ByYWdtYSBtYXJrIC0gV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbAor
CitAaW1wbGVtZW50YXRpb24gV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbAorCistIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhJbmZvcm1hdGlvbjooV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9u
SW5mb3JtYXRpb24mJilpbmZvcm1hdGlvbiBpblZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3Cit7
CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisK
KyAgICBfdmlldyA9IHZpZXc7CisgICAgX3N1Z2dlc3Rpb25zID0gV1RGTW92ZShpbmZvcm1hdGlv
bi5zdWdnZXN0aW9ucyk7CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZCl1cGRhdGVX
aXRoSW5mb3JtYXRpb246KFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uJiYp
aW5mb3JtYXRpb24KK3sKKyAgICBfc3VnZ2VzdGlvbnMgPSBXVEZNb3ZlKGluZm9ybWF0aW9uLnN1
Z2dlc3Rpb25zKTsKK30KKworLSAodm9pZClzaG93U3VnZ2VzdGlvbnNEcm9wZG93bjooV2ViS2l0
OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MgKilkcm9wZG93biBhY3RpdmF0aW9u
VHlwZTooV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uQWN0aXZhdGlvblR5cGUpYWN0aXZhdGlv
blR5cGUKK3sKKyAgICBfZHJvcGRvd24gPSBkcm9wZG93bjsKK30KKworLSAodm9pZClkaWRTZWxl
Y3RPcHRpb25BdEluZGV4OihOU0ludGVnZXIpaW5kZXgKK3sKKyAgICBfZHJvcGRvd24tPmRpZFNl
bGVjdE9wdGlvbihfc3VnZ2VzdGlvbnNbaW5kZXhdKTsKK30KKworLSAodm9pZClpbnZhbGlkYXRl
Cit7Cit9CisKKy0gKE5TQXJyYXk8V0tEYXRhTGlzdFRleHRTdWdnZXN0aW9uICo+ICopdGV4dFN1
Z2dlc3Rpb25zCit7CisgICAgTlNNdXRhYmxlQXJyYXkgKnN1Z2dlc3Rpb25zID0gW05TTXV0YWJs
ZUFycmF5IGFycmF5XTsKKworICAgIGZvciAoYXV0byBzdWdnZXN0aW9uIDogX3N1Z2dlc3Rpb25z
KSB7CisgICAgICAgIFtzdWdnZXN0aW9ucyBhZGRPYmplY3Q6W1dLRGF0YUxpc3RUZXh0U3VnZ2Vz
dGlvbiB0ZXh0U3VnZ2VzdGlvbldpdGhJbnB1dFRleHQ6c3VnZ2VzdGlvbl1dOworICAgICAgICBp
ZiAoc3VnZ2VzdGlvbnMuY291bnQgPT0gMykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIHJldHVybiBzdWdnZXN0aW9uczsKK30KKworLSAoTlNJbnRlZ2VyKXN1Z2dlc3Rpb25zQ291
bnQKK3sKKyAgICByZXR1cm4gX3N1Z2dlc3Rpb25zLnNpemUoKTsKK30KKworLSAoU3RyaW5nKXN1
Z2dlc3Rpb25BdEluZGV4OihOU0ludGVnZXIpaW5kZXgKK3sKKyAgICByZXR1cm4gX3N1Z2dlc3Rp
b25zW2luZGV4XTsKK30KKworLSAoTlNUZXh0QWxpZ25tZW50KXRleHRBbGlnbm1lbnQKK3sKKyAg
ICByZXR1cm4gX3ZpZXcuYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaXNSVEwgPyBOU1RleHRBbGln
bm1lbnRSaWdodCA6IE5TVGV4dEFsaWdubWVudExlZnQ7Cit9CisKK0BlbmQKKworI3ByYWdtYSBt
YXJrIC0gV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUGlja2VyCisKK0BpbXBsZW1lbnRhdGlvbiBXS0Rh
dGFMaXN0U3VnZ2VzdGlvbnNQaWNrZXIgIHsKKyAgICBSZXRhaW5QdHI8V0tEYXRhTGlzdFN1Z2dl
c3Rpb25zUGlja2VyVmlldz4gX3BpY2tlclZpZXc7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aEluZm9ybWF0aW9uOihXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbiYm
KWluZm9ybWF0aW9uIGluVmlldzooV0tDb250ZW50VmlldyAqKXZpZXcKK3sKKyAgICBpZiAoIShz
ZWxmID0gW3N1cGVyIGluaXRXaXRoSW5mb3JtYXRpb246V1RGTW92ZShpbmZvcm1hdGlvbikgaW5W
aWV3OnZpZXddKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9waWNrZXJWaWV3ID0gYWRv
cHROUyhbW1dLRGF0YUxpc3RTdWdnZXN0aW9uc1BpY2tlclZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6Q0dSZWN0WmVyb10pOworICAgIFtfcGlja2VyVmlldyBzZXRBdXRvcmVzaXppbmdNYXNrOlVJ
Vmlld0F1dG9yZXNpemluZ0ZsZXhpYmxlV2lkdGggfCBVSVZpZXdBdXRvcmVzaXppbmdGbGV4aWJs
ZUhlaWdodF07CisgICAgW19waWNrZXJWaWV3IHNldERhdGFTb3VyY2U6c2VsZl07CisgICAgW19w
aWNrZXJWaWV3IHNldERlbGVnYXRlOnNlbGZdOworICAgIFtfcGlja2VyVmlldyBzZXRDb250cm9s
OnNlbGZdOworICAgIFtfcGlja2VyVmlldyBzZXRTaXplOltVSUtleWJvYXJkIGRlZmF1bHRTaXpl
Rm9ySW50ZXJmYWNlT3JpZW50YXRpb246VUlBcHAuaW50ZXJmYWNlT3JpZW50YXRpb25dXTsKKwor
ICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKXVwZGF0ZVdpdGhJbmZvcm1hdGlvbjooV2Vi
Q29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24mJilpbmZvcm1hdGlvbgoreworICAg
IFtzdXBlciB1cGRhdGVXaXRoSW5mb3JtYXRpb246V1RGTW92ZShpbmZvcm1hdGlvbildOworICAg
IGlmIChpbmZvcm1hdGlvbi5hY3RpdmF0aW9uVHlwZSAhPSBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dl
c3Rpb25BY3RpdmF0aW9uVHlwZTo6SW5kaWNhdG9yQ2xpY2tlZCkgeworICAgICAgICBbW3NlbGYu
dmlldyBfZm9ybUlucHV0U2Vzc2lvbl0gc2V0Q3VzdG9tSW5wdXRWaWV3Om5pbF07CisgICAgICAg
IFtbc2VsZi52aWV3IF9mb3JtSW5wdXRTZXNzaW9uXSBzZXRTdWdnZXN0aW9uczpbc2VsZiB0ZXh0
U3VnZ2VzdGlvbnNdXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFtbc2VsZi52aWV3
IF9mb3JtSW5wdXRTZXNzaW9uXSBzZXRDdXN0b21JbnB1dFZpZXc6X3BpY2tlclZpZXcuZ2V0KCld
OworCisgICAgW19waWNrZXJWaWV3IHJlbG9hZEFsbENvbXBvbmVudHNdOworICAgIFtfcGlja2Vy
VmlldyBzZWxlY3RSb3c6MCBpbkNvbXBvbmVudDowIGFuaW1hdGVkOk5PXTsKK30KKworLSAodm9p
ZClzaG93U3VnZ2VzdGlvbnNEcm9wZG93bjooV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25z
RHJvcGRvd25JT1MgKilkcm9wZG93biBhY3RpdmF0aW9uVHlwZTooV2ViQ29yZTo6RGF0YUxpc3RT
dWdnZXN0aW9uQWN0aXZhdGlvblR5cGUpYWN0aXZhdGlvblR5cGUKK3sKKyAgICBbc3VwZXIgc2hv
d1N1Z2dlc3Rpb25zRHJvcGRvd246ZHJvcGRvd24gYWN0aXZhdGlvblR5cGU6YWN0aXZhdGlvblR5
cGVdOworICAgIGlmIChhY3RpdmF0aW9uVHlwZSA9PSBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rp
b25BY3RpdmF0aW9uVHlwZTo6SW5kaWNhdG9yQ2xpY2tlZCkgeworICAgICAgICBbW3NlbGYudmll
dyBfZm9ybUlucHV0U2Vzc2lvbl0gc2V0Q3VzdG9tSW5wdXRWaWV3Ol9waWNrZXJWaWV3LmdldCgp
XTsKKyAgICAgICAgW19waWNrZXJWaWV3IHNlbGVjdFJvdzowIGluQ29tcG9uZW50OjAgYW5pbWF0
ZWQ6Tk9dOworICAgIH0gZWxzZQorICAgICAgICBbW3NlbGYudmlldyBfZm9ybUlucHV0U2Vzc2lv
bl0gc2V0U3VnZ2VzdGlvbnM6W3NlbGYgdGV4dFN1Z2dlc3Rpb25zXV07Cit9CisKKy0gKE5TSW50
ZWdlciludW1iZXJPZkNvbXBvbmVudHNJblBpY2tlclZpZXc6KFVJUGlja2VyVmlldyAqKXBpY2tl
clZpZXcKK3sKKyAgICByZXR1cm4gMTsKK30KKworLSAoTlNJbnRlZ2VyKXBpY2tlclZpZXc6KFVJ
UGlja2VyVmlldyAqKXBpY2tlclZpZXcgbnVtYmVyT2ZSb3dzSW5Db21wb25lbnQ6KE5TSW50ZWdl
ciljb2x1bW5JbmRleAoreworICAgIHJldHVybiBbc2VsZiBzdWdnZXN0aW9uc0NvdW50XTsKK30K
KworLSAoTlNTdHJpbmcgKilwaWNrZXJWaWV3OihVSVBpY2tlclZpZXcgKilwaWNrZXJWaWV3IHRp
dGxlRm9yUm93OihOU0ludGVnZXIpcm93IGZvckNvbXBvbmVudDooTlNJbnRlZ2VyKWNvbXBvbmVu
dAoreworICAgIHJldHVybiBbc2VsZiBzdWdnZXN0aW9uQXRJbmRleDpyb3ddOworfQorCistICh2
b2lkKWludmFsaWRhdGUKK3sKKyAgICBpZiAoW1tzZWxmLnZpZXcgX2Zvcm1JbnB1dFNlc3Npb25d
IGN1c3RvbUlucHV0Vmlld10gPT0gX3BpY2tlclZpZXcuZ2V0KCkpCisgICAgICAgIFtbc2VsZi52
aWV3IF9mb3JtSW5wdXRTZXNzaW9uXSBzZXRDdXN0b21JbnB1dFZpZXc6bmlsXTsKKworICAgIFtf
cGlja2VyVmlldyBzZXREZWxlZ2F0ZTpuaWxdOworICAgIFtfcGlja2VyVmlldyBzZXREYXRhU291
cmNlOm5pbF07CisgICAgW19waWNrZXJWaWV3IHNldENvbnRyb2w6bmlsXTsKK30KKworQGVuZAor
CitAaW1wbGVtZW50YXRpb24gV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUGlja2VyVmlldworCistICh2
b2lkKWVuZEVkaXRpbmcKK3sKKyAgICBbc2VsZi5jb250cm9sIGRpZFNlbGVjdE9wdGlvbkF0SW5k
ZXg6W3NlbGYgc2VsZWN0ZWRSb3dJbkNvbXBvbmVudDowXV07Cit9CisKK0BlbmQKKworI3ByYWdt
YSBtYXJrIC0gV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUG9wb3ZlcgorCitAaW1wbGVtZW50YXRpb24g
V0tEYXRhTGlzdFN1Z2dlc3Rpb25zUG9wb3ZlciAgeworICAgIFJldGFpblB0cjxXS0Zvcm1Sb3Rh
dGluZ0FjY2Vzc29yeVBvcG92ZXI+IF9wb3BvdmVyOworICAgIFJldGFpblB0cjxXS0RhdGFMaXN0
U3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlcj4gX3N1Z2dlc3Rpb25zVmlld0NvbnRyb2xsZXI7Cit9
CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEluZm9ybWF0aW9uOihXZWJDb3JlOjpEYXRhTGlz
dFN1Z2dlc3Rpb25JbmZvcm1hdGlvbiYmKWluZm9ybWF0aW9uIGluVmlldzooV0tDb250ZW50Vmll
dyAqKXZpZXcKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoSW5mb3JtYXRpb246
V1RGTW92ZShpbmZvcm1hdGlvbikgaW5WaWV3OnZpZXddKSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KworICAgIF9wb3BvdmVyID0gYWRvcHROUyhbW1dLRm9ybVJvdGF0aW5nQWNjZXNzb3J5UG9wb3Zl
ciBhbGxvY10gaW5pdFdpdGhWaWV3OnZpZXddKTsKKworICAgIHJldHVybiBzZWxmOworfQorCist
ICh2b2lkKXVwZGF0ZVdpdGhJbmZvcm1hdGlvbjooV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9u
SW5mb3JtYXRpb24mJilpbmZvcm1hdGlvbgoreworICAgIFtzdXBlciB1cGRhdGVXaXRoSW5mb3Jt
YXRpb246V1RGTW92ZShpbmZvcm1hdGlvbildOworICAgIFtfc3VnZ2VzdGlvbnNWaWV3Q29udHJv
bGxlciByZWxvYWREYXRhXTsKKyAgICBbW3NlbGYudmlldyBfZm9ybUlucHV0U2Vzc2lvbl0gc2V0
U3VnZ2VzdGlvbnM6W3NlbGYgdGV4dFN1Z2dlc3Rpb25zXV07Cit9CisKKy0gKHZvaWQpc2hvd1N1
Z2dlc3Rpb25zRHJvcGRvd246KFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3du
SU9TICopZHJvcGRvd24gYWN0aXZhdGlvblR5cGU6KFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlv
bkFjdGl2YXRpb25UeXBlKWFjdGl2YXRpb25UeXBlCit7CisgICAgW3N1cGVyIHNob3dTdWdnZXN0
aW9uc0Ryb3Bkb3duOmRyb3Bkb3duIGFjdGl2YXRpb25UeXBlOmFjdGl2YXRpb25UeXBlXTsKKwor
ICAgIF9zdWdnZXN0aW9uc1ZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbW1dLRGF0YUxpc3RTdWdn
ZXN0aW9uc1ZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aFN0eWxlOlVJVGFibGVWaWV3U3R5
bGVQbGFpbl0pOworICAgIFtfc3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlciBzZXRDb250cm9sOnNl
bGZdOworICAgIFtfc3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlciByZWxvYWREYXRhXTsKKyAgICBb
W3NlbGYudmlldyBfZm9ybUlucHV0U2Vzc2lvbl0gc2V0U3VnZ2VzdGlvbnM6W3NlbGYgdGV4dFN1
Z2dlc3Rpb25zXV07CisKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKKyAgICBb
X3BvcG92ZXIgc2V0UG9wb3ZlckNvbnRyb2xsZXI6W1tbVUlQb3BvdmVyQ29udHJvbGxlciBhbGxv
Y10gaW5pdFdpdGhDb250ZW50Vmlld0NvbnRyb2xsZXI6X3N1Z2dlc3Rpb25zVmlld0NvbnRyb2xs
ZXIuZ2V0KCldIGF1dG9yZWxlYXNlXV07CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisK
KyAgICBbX3BvcG92ZXIgcHJlc2VudFBvcG92ZXJBbmltYXRlZDpOT107Cit9CisKKy0gKHZvaWQp
aW52YWxpZGF0ZQoreworICAgIFtfc3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlciBzZXRDb250cm9s
Om5pbF07Cit9CisKKy0gKHZvaWQpZGlkU2VsZWN0T3B0aW9uQXRJbmRleDooTlNJbnRlZ2VyKWlu
ZGV4Cit7CisgICAgW3N1cGVyIGRpZFNlbGVjdE9wdGlvbkF0SW5kZXg6aW5kZXhdOworICAgIFtb
X3BvcG92ZXIgcG9wb3ZlckNvbnRyb2xsZXJdIGRpc21pc3NQb3BvdmVyQW5pbWF0ZWQ6WUVTXTsK
KyAgICBbW3NlbGYudmlldyBfZm9ybUlucHV0U2Vzc2lvbl0gc2V0U3VnZ2VzdGlvbnM6QFsgW1dL
RGF0YUxpc3RUZXh0U3VnZ2VzdGlvbiB0ZXh0U3VnZ2VzdGlvbldpdGhJbnB1dFRleHQ6W3NlbGYg
c3VnZ2VzdGlvbkF0SW5kZXg6aW5kZXhdXSBdXTsKK30KKworQGVuZAorCitAaW1wbGVtZW50YXRp
b24gV0tEYXRhTGlzdFN1Z2dlc3Rpb25zVmlld0NvbnRyb2xsZXIKKworLSAodm9pZClyZWxvYWRE
YXRhCit7CisgICAgW3NlbGYudGFibGVWaWV3IHJlbG9hZERhdGFdOworICAgIFtzZWxmIHNldFBy
ZWZlcnJlZENvbnRlbnRTaXplOkNHU2l6ZU1ha2Uoc3VnZ2VzdGlvbnNQb3BvdmVyV2lkdGgsIG1h
eFZpc2libGVTdWdnZXN0aW9ucyAqIHN1Z2dlc3Rpb25zUG9wb3ZlckNlbGxIZWlnaHQgKyBzdWdn
ZXN0aW9uc1BvcG92ZXJDZWxsSGVpZ2h0IC8gMildOworfQorCistIChOU0ludGVnZXIpdGFibGVW
aWV3OihVSVRhYmxlVmlldyAqKXRhYmxlVmlldyBudW1iZXJPZlJvd3NJblNlY3Rpb246KE5TSW50
ZWdlcilzZWN0aW9uCit7CisgICAgcmV0dXJuIFtzZWxmLmNvbnRyb2wgc3VnZ2VzdGlvbnNDb3Vu
dF07Cit9CisKKy0gKFVJVGFibGVWaWV3Q2VsbCAqKXRhYmxlVmlldzooVUlUYWJsZVZpZXcgKil0
YWJsZVZpZXcgY2VsbEZvclJvd0F0SW5kZXhQYXRoOihOU0luZGV4UGF0aCAqKWluZGV4UGF0aAor
eworICAgIFVJVGFibGVWaWV3Q2VsbCAqY2VsbCA9IFt0YWJsZVZpZXcgZGVxdWV1ZVJldXNhYmxl
Q2VsbFdpdGhJZGVudGlmaWVyOnN1Z2dlc3Rpb25DZWxsUmV1c2VJZGVudGlmaWVyXTsKKyAgICBp
ZiAoIWNlbGwpCisgICAgICAgIGNlbGwgPSBbW1tVSVRhYmxlVmlld0NlbGwgYWxsb2NdIGluaXRX
aXRoU3R5bGU6VUlUYWJsZVZpZXdDZWxsU3R5bGVEZWZhdWx0IHJldXNlSWRlbnRpZmllcjpzdWdn
ZXN0aW9uQ2VsbFJldXNlSWRlbnRpZmllcl0gYXV0b3JlbGVhc2VdOworCisgICAgY2VsbC50ZXh0
TGFiZWwudGV4dCA9IFtzZWxmLmNvbnRyb2wgc3VnZ2VzdGlvbkF0SW5kZXg6aW5kZXhQYXRoLnJv
d107CisgICAgY2VsbC50ZXh0TGFiZWwubGluZUJyZWFrTW9kZSA9IE5TTGluZUJyZWFrQnlUcnVu
Y2F0aW5nVGFpbDsKKyAgICBjZWxsLnRleHRMYWJlbC50ZXh0QWxpZ25tZW50ID0gW3NlbGYuY29u
dHJvbCB0ZXh0QWxpZ25tZW50XTsKKworICAgIHJldHVybiBjZWxsOworfQorCistICh2b2lkKXRh
YmxlVmlldzooVUlUYWJsZVZpZXcgKil0YWJsZVZpZXcgZGlkU2VsZWN0Um93QXRJbmRleFBhdGg6
KE5TSW5kZXhQYXRoICopaW5kZXhQYXRoCit7CisgICAgW3NlbGYuY29udHJvbCBkaWRTZWxlY3RP
cHRpb25BdEluZGV4OmluZGV4UGF0aC5yb3ddOworfQorCitAZW5kCisKKyNlbmRpZiAvLyBFTkFC
TEUoREFUQUxJU1RfRUxFTUVOVCkgJiYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzc3MTU1OTBlZDcxY2NkZDIz
ZGYyODVhM2FhN2MzNmU1NDNkYjdmNi4uYjk2NGEzOTI3NTk2OWMyZDQwZDA3ZTRmNGE0ODgyZTgw
MDE0YmYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xODA2LDYgKzE4MDYsNyBAQAogCQlFNTQ4RUJEMTIxMDE1RjBFMDBCRTNDMzIg
LyogV0tGb3JtQ29sb3JQaWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEU1NDhFQkNGMjEwMTVGMEUwMEJFM0MzMiAvKiBXS0Zvcm1Db2xvclBpY2tl
ci5oICovOyB9OwogCQlFNTY4QjkxRjIwQTNBQjJGMDBFM0M4NTYgLyogV2ViRGF0YUxpc3RTdWdn
ZXN0aW9uc0Ryb3Bkb3duLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFNTY4QjkxRTIwQTNBQjJGMDBFM0M4NTYgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9u
c0Ryb3Bkb3duLmggKi87IH07CiAJCUU1NjhCOTIyMjBBM0FDNkEwMEUzQzg1NiAvKiBXZWJEYXRh
TGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEU1NjhCOTIwMjBBM0FDNkEwMEUzQzg1NiAvKiBXZWJEYXRhTGlz
dFN1Z2dlc3Rpb25zRHJvcGRvd25NYWMuaCAqLzsgfTsKKwkJRTVCRUY2ODIyMTMwQzQ4MDAwRjMx
MTExIC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTVCRUY2ODAyMTMwQzQ3RjAwRjMxMTEx
IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5oICovOyB9OwogCQlFNUNCMDdE
QzIwRTE2NzhGMDAyMkMxODMgLyogV0tGb3JtQ29sb3JDb250cm9sLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNUNCMDdEQTIwRTE2NzhGMDAyMkMxODMg
LyogV0tGb3JtQ29sb3JDb250cm9sLmggKi87IH07CiAJCUVDQTY4MEQ4MUU2OTBFMjUwMDczMUQy
MCAvKiBXZWJQcm9jZXNzQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEVDQTY4MEQ3MUU2OTBERjgwMDczMUQyMCAvKiBXZWJQcm9jZXNzQ29jb2Eu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFRDgy
QTdGMjEyOEM2RkFGMDA0NDc3QjMgLyogV0tCdW5kbGVQYWdlT3ZlcmxheS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyMkYwRkYxMjg5RkNEOTAwODVF
NzRGIC8qIFdLQnVuZGxlUGFnZU92ZXJsYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDY0OSw2ICs0NjUwLDggQEAKIAkJRTU2OEI5MUUyMEEz
QUIyRjAwRTNDODU2IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTU2OEI5MjAyMEEzQUM2QTAwRTNDODU2IC8qIFdlYkRhdGFMaXN0U3Vn
Z2VzdGlvbnNEcm9wZG93bk1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEYXRhTGlzdFN1Z2dlc3Rp
b25zRHJvcGRvd25NYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTU2OEI5MjEy
MEEzQUM2QTAwRTNDODU2IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNUJFRjY4MDIxMzBDNDdGMDBGMzExMTEg
LyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5oOyBwYXRo
ID0gaW9zL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFNUJFRjY4MTIxMzBDNDdGMDBGMzExMTEgLyogV2ViRGF0YUxpc3RT
dWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBuYW1lID0gV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tOyBwYXRoID0gaW9z
L1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTVDQjA3REEyMEUxNjc4RjAwMjJDMTgzIC8qIFdLRm9ybUNvbG9yQ29udHJv
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBXS0Zvcm1Db2xvckNvbnRyb2wuaDsgcGF0aCA9IGlvcy9mb3Jt
cy9XS0Zvcm1Db2xvckNvbnRyb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTVD
QjA3REIyMEUxNjc4RjAwMjJDMTgzIC8qIFdLRm9ybUNvbG9yQ29udHJvbC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IFdLRm9ybUNvbG9yQ29udHJvbC5tbTsgcGF0aCA9IGlvcy9mb3Jtcy9XS0Zv
cm1Db2xvckNvbnRyb2wubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVDQTY4MEQz
MUU2OTA0QjUwMDczMUQyMCAvKiBFeHRyYVByaXZhdGVTeW1ib2xzRm9yVEFQSS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHRyYVByaXZhdGVTeW1ib2xzRm9yVEFQSS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTk3MCw2ICs1OTczLDggQEAKIAkJCQkyREFG
MDZENTE4QkQxQTQ3MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbSAq
LywKIAkJCQkyREE5NDRBOTE4ODRFOUJBMDBFRDg2REIgLyogVGV4dENoZWNrZXJJT1MubW0gKi8s
CiAJCQkJMkRGOTU5MzQxOEE0MjQxMjAwOTc4NUExIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlcklP
Uy5tbSAqLywKKwkJCQlFNUJFRjY4MDIxMzBDNDdGMDBGMzExMTEgLyogV2ViRGF0YUxpc3RTdWdn
ZXN0aW9uc0Ryb3Bkb3duSU9TLmggKi8sCisJCQkJRTVCRUY2ODEyMTMwQzQ3RjAwRjMxMTExIC8q
IFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5tbSAqLywKIAkJCQkyRDNFRjQ0MTE5
MTc2NDYzMDAwMzQxODQgLyogV2ViTWVtb3J5UHJlc3N1cmVIYW5kbGVySU9TLmggKi8sCiAJCQkJ
MkQzRUY0NDAxOTE3NjQ2MzAwMDM0MTg0IC8qIFdlYk1lbW9yeVByZXNzdXJlSGFuZGxlcklPUy5t
bSAqLywKIAkJCQkyREE5NDRBQjE4ODRFOUJBMDBFRDg2REIgLyogV2ViUGFnZVByb3h5SU9TLm1t
ICovLApAQCAtOTUwMiw2ICs5NTA3LDcgQEAKIAkJCQkxQUE4M0Y2RDFBNUI2M0ZGMDAwMjZFQzYg
LyogV2ViRGF0YWJhc2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTUyQ0Y1NTIyMEEz
NUMzQTAwREFEQTI3IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTU2OEI5MUYyMEEzQUIyRjAwRTNDODU2IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlv
bnNEcm9wZG93bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTVCRUY2ODIyMTMwQzQ4MDAwRjMxMTEx
IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTU2OEI5MjIyMEEzQUM2QTAwRTNDODU2IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9w
ZG93bk1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QxOUEyNkUxQTEzRTgzNDAwOEQ2NTBFIC8q
IFdlYkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTVCMUM1
NTE4OTg3RURGMDA0RkNGOUIgLyogV2ViRG9jdW1lbnRMb2FkZXIuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA0YjVm
NWFiODY5MGVmZTY5YWRjZDEzNjBlN2MxOTg4YWRmMDUwZmY1Li43ZDA2NWZkMzFmOGE2NGRlYWE2
MDRiMjk3NjJjOWI1MGI5MDk4ZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcApAQCAtMzU5Miw3ICszNTkyLDggQEAgdm9pZCBXZWJQYWdlOjpkaWRT
ZWxlY3REYXRhTGlzdE9wdGlvbihjb25zdCBTdHJpbmcmIHNlbGVjdGVkT3B0aW9uKQogCiB2b2lk
IFdlYlBhZ2U6OmRpZENsb3NlU3VnZ2VzdGlvbnMoKQogewotICAgIG1fYWN0aXZlRGF0YUxpc3RT
dWdnZXN0aW9uUGlja2VyLT5kaWRDbG9zZVN1Z2dlc3Rpb25zKCk7CisgICAgaWYgKG1fYWN0aXZl
RGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKQorICAgICAgICBtX2FjdGl2ZURhdGFMaXN0U3VnZ2Vz
dGlvblBpY2tlci0+ZGlkQ2xvc2VTdWdnZXN0aW9ucygpOwogICAgIG1fYWN0aXZlRGF0YUxpc3RT
dWdnZXN0aW9uUGlja2VyID0gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBhZTU4ZTA5MDRlOGQ0ZGI5
YTk1ODU2ZDYyM2YwMDIwNWU1ZDhlMTJlLi5hOTQ3NjNiZjEzNjY4ZTE4MThkODgyMTUyNWI3YWE4
OWRiMmViN2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbQpAQCAtMjIwOSw2ICsyMjA5LDE4IEBAIHZvaWQgV2ViUGFnZTo6Z2V0
UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYg
cmVxdWVzCiAgICAgICAgIH0KICAgICB9CiAKKyAgICAvLyBQcmV2ZW50IHRoZSBjYWxsb3V0IGJh
ciBmcm9tIHNob3dpbmcgd2hlbiB0YXBwaW5nIG9uIHRoZSBkYXRhbGlzdCBidXR0b24uCisjaWYg
RU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KCpo
aXROb2RlKSkgeworICAgICAgICBjb25zdCBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IGRvd25j
YXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpoaXROb2RlKTsKKyAgICAgICAgaWYgKGlucHV0Lmxpc3Qo
KSkgeworICAgICAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtX3BhZ2UtPm1haW5GcmFt
ZSgpLmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KHJlcXVlc3QucG9pbnQsIEhp
dFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUpOworICAgICAg
ICAgICAgaWYgKHJlc3VsdC5pbm5lck5vZGUoKSA9PSBpbnB1dC5kYXRhTGlzdEJ1dHRvbkVsZW1l
bnQoKSkKKyAgICAgICAgICAgICAgICBpbmZvLnByZXZlbnRUZXh0SW50ZXJhY3Rpb24gPSB0cnVl
OworICAgICAgICB9CisgICAgfQorI2VuZGlmCisKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElP
TikKICAgICBpbmZvLmhhc1NlbGVjdGlvbkF0UG9zaXRpb24gPSBtX3BhZ2UtPmhhc1NlbGVjdGlv
bkF0UG9zaXRpb24oYWRqdXN0ZWRQb2ludCk7CiAjZW5kaWYKQEAgLTI0NzcsNiArMjQ4OSw5IEBA
IHZvaWQgV2ViUGFnZTo6Z2V0QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24oQXNzaXN0ZWROb2RlSW5m
b3JtYXRpb24mIGluZm9ybWF0aW9uKQogICAgICAgICB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShE
QVRBTElTVF9FTEVNRU5UKQorICAgICAgICBpbmZvcm1hdGlvbi5oYXNTdWdnZXN0aW9ucyA9ICEh
ZWxlbWVudC5saXN0KCk7CisjZW5kaWYKICAgICAgICAgaW5mb3JtYXRpb24uaW5wdXRNb2RlID0g
ZWxlbWVudC5jYW5vbmljYWxJbnB1dE1vZGUoKTsKICAgICAgICAgaW5mb3JtYXRpb24uaXNSZWFk
T25seSA9IGVsZW1lbnQuaXNSZWFkT25seSgpOwogICAgICAgICBpbmZvcm1hdGlvbi52YWx1ZSA9
IGVsZW1lbnQudmFsdWUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348577</attachid>
            <date>2018-08-30 18:15:21 -0700</date>
            <delta_ts>2018-08-31 09:49:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186714-20180830181521.patch</filename>
            <type>text/plain</type>
            <size>50653</size>
            <attacher name="Aditya Keerthi">pxlcoder</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTBiNWYzN2M3M2U3MTY2
MzQxYmMxYjFiNGNmMTY3MmQyNDI5ZmQ0NC4uNjMxOTI5NDc0MjlmNzE4NTg4MDUwMTAyYjUyN2I5
ZDRlNmUyYTU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE4LTA4LTMwICBBZGl0
eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KKworICAgICAgICBbRGF0YWxpc3RdW2lP
U10gQWRkIHN1Z2dlc3Rpb25zIFVJIGZvciBUZXh0RmllbGRJbnB1dFR5cGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY3MTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPbiBpT1MsIHRoZSBkYXRhbGlz
dCBidXR0b24gc2hvdWxkIGFwcGVhciBhcyBhIGRvd253YXJkIHRyaWFuZ2xlLiBGdXJ0aGVybW9y
ZSwgdGhlCisgICAgICAgIGJ1dHRvbiBzaG91bGQgb25seSBiZSBkaXNwbGF5ZWQgaWYgdGhlIGlu
cHV0IGhhcyBmb2N1cyBhbmQgdGhlcmUgYXJlIHN1Z2dlc3RlZAorICAgICAgICB2YWx1ZXMuCisK
KyAgICAgICAgKiBjc3MvaHRtbC5jc3M6CisgICAgICAgIChpbnB1dDo6LXdlYmtpdC1saXN0LWJ1
dHRvbik6IERyYXcgdGhlIHRyaWFuZ2xlIHVzaW5nIGFuIFNWRy4KKyAgICAgICAgKiBodG1sL0Rh
dGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uLmg6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRF
bGVtZW50Lmg6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOiBBZGRlZCBs
b2dpYyB0byBzaG93IGFuZCBoaWRlIHRoZSBkYXRhbGlzdCBidXR0b24gYXMgbmVjZXNzYXJ5Lgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5kbGVGb2N1c0V2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6aGFuZGxlQmx1ckV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6ZGlkU2V0VmFsdWVCeVVzZXJF
ZGl0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6bGlzdEF0dHJpYnV0
ZVRhcmdldENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpk
aXNwbGF5U3VnZ2VzdGlvbnMpOgorCiAyMDE4LTA4LTMwICBEb24gT2xtc3RlYWQgIDxkb24ub2xt
c3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgW0NNYWtlXSBSZXBsYWNlIEFWRm91bmRhdGlvblN1
cHBvcnQucHkgdXNpbmcgQ01ha2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYzEwZmMwNDhiN2UwNzRjZDBkYmIyNDhl
ZmRiYTVkMzI3MDAyYzM3NC4uOTE2OGJkM2ZmYzc2NzczZjc4ODEyZDY3MzBiMGIzZmVhZGVkMDUx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDIgQEAKKzIwMTgtMDgtMzAgIEFkaXR5YSBLZWVydGhp
ICA8YWtlZXJ0aGlAYXBwbGUuY29tPgorCisgICAgICAgIFtEYXRhbGlzdF1baU9TXSBBZGQgc3Vn
Z2VzdGlvbnMgVUkgZm9yIFRleHRGaWVsZElucHV0VHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjcxNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE9uIGlPUywgd2UgaGF2ZSBsZXNzIHNwYWNlIHRv
IGRpc3BsYXkgc3VnZ2VzdGlvbnMgZnJvbSBhIGRhdGFsaXN0IGVsZW1lbnQgY29tcGFyZWQKKyAg
ICAgICAgdG8gbWFjT1MuIEZ1cnRoZXJtb3JlLCBpUGhvbmVzIGFuZCBpUGFkcyBoYXZlIGRpZmZl
cmVudCBmb3JtIGZhY3RvcnMsIGxlYWRpbmcgdG8gYQorICAgICAgICBkaWZmZXJlbnQgYXBwcm9h
Y2ggb24gZWFjaCBkZXZpY2UuIFRoZSBjb21tb25hbGl0aWVzIG9mIHRoZSB0d28gaW1wbGVtZW50
YXRpb25zCisgICAgICAgIGNhbiBiZSBmb3VuZCBpbiBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250
cm9sLiBUaGlzIGNsYXNzIGlzIHN1YmNsYXNzZWQgYnkgdGhlCisgICAgICAgIGRldmljZSBzcGVj
aWZpYyBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAgICAgT24gaVBob25lLCB3ZSBkaXNwbGF5IHRo
ZSBzdWdnZXN0aW9ucyBpbiBhIFVJUGlja2VyVmlldy4gVGhpcyB2aWV3IGlzIGFjY2Vzc2libGUK
KyAgICAgICAgb25seSBhZnRlciB0YXBwaW5nIG9uIHRoZSBkYXRhbGlzdCBidXR0b24gZWxlbWVu
dCB0byB0aGUgc2lkZSBvZiB0aGUgaW5wdXQgZmllbGQuCisgICAgICAgIFRoaXMgYXBwcm9hY2gg
d2FzIGNob3NlbiBpbiBvcmRlciB0byBhdm9pZCB0cmlja2luZyB0aGUgdXNlciBpbnRvIHRoaW5r
aW5nIHRoYXQKKyAgICAgICAgdGhlIHZhbHVlcyBkaXNwbGF5ZWQgaW4gdGhlIHBpY2tlciBhcmUg
dGhlIG9ubHkgYWNjZXB0ZWQgdmFsdWVzLgorICAgICAgICBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQ
aWNrZXIgaXMgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSBpbnRlcmZhY2Ugc2hvd24gb24K
KyAgICAgICAgaVBob25lcy4KKworICAgICAgICBPbiBpUGFkLCB3ZSBkaXNwbGF5IHRoZSBzdWdn
ZXN0aW9ucyBpbiBhIHBvcG92ZXIsIHRoYXQgaXMgdmlzaWJsZSBhbG9uZ3NpZGUgdGhlCisgICAg
ICAgIGtleWJvYXJkLiBUaGUgc3VnZ2VzdGlvbnMgaW4gdGhlIHBvcG92ZXIgdXBkYXRlIGFzIHRo
ZSB1c2VyIHR5cGVzLgorICAgICAgICBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQb3BvdmVyIGlzIHJl
c3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUgaW50ZXJmYWNlIHNob3duIG9uCisgICAgICAgIGlQ
YWRzLgorCisgICAgICAgIEJvdGggZGV2aWNlcyBkaXNwbGF5IHByZWRpY3RpdmUgdGV4dCBzdWdn
ZXN0aW9ucywgdGFraW5nIHRoZSBmaXJzdCB0aHJlZSB2YWx1ZXMKKyAgICAgICAgZnJvbSB0aGUg
ZmlsdGVyZWQgc3VnZ2VzdGlvbnMgbGlzdC4gSW4gb3JkZXIgdG8gcHJldmVudCBvdGhlciBjbGll
bnRzIGZyb20KKyAgICAgICAgb3ZlcndyaXRpbmcgdGhlIHN1Z2dlc3Rpb25zIHByb3ZpZGVkIGJ5
IHRoZSBkYXRhbGlzdCBlbGVtZW50LCB3ZSBwcmV2ZW50IHdyaXRpbmcKKyAgICAgICAgdG8gdGhl
IHByZWRpY3RpdmUgdGV4dCBiYXIgaWYgYW4gaW5wdXQgd2l0aCB0aGUgbGlzdCBhdHRyaWJ1dGUg
aXMgdGhlIGN1cnJlbnRseQorICAgICAgICBhc3Npc3RlZCBub2RlLgorCisgICAgICAgICogU2hh
cmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXNzaXN0
ZWROb2RlSW5mb3JtYXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkFzc2lz
dGVkTm9kZUluZm9ybWF0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Bc3Npc3RlZE5v
ZGVJbmZvcm1hdGlvbi5oOgorICAgICAgICAqIFNoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3Jt
YXRpb25BdFBvc2l0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0
aW9uQXRQb3NpdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6SW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb246OmRlY29kZSk6CisgICAgICAgICogU291cmNlc0NvY29h
LnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3du
SU9TLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25z
RHJvcGRvd25JT1MubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dl
c3Rpb25zRHJvcGRvd25JT1M6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFMaXN0
U3VnZ2VzdGlvbnNEcm9wZG93bklPUzo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9T
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TOjpz
aG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9T
OjpoYW5kbGVLZXlkb3duV2l0aElkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRh
TGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1M6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TOjpkaWRTZWxlY3RPcHRpb24pOgorICAgICAg
ICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sIGluaXRXaXRoSW5mb3JtYXRpb246aW5W
aWV3Ol0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sIHVwZGF0ZVdp
dGhJbmZvcm1hdGlvbjpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJv
bCBzaG93U3VnZ2VzdGlvbnNEcm9wZG93bjphY3RpdmF0aW9uVHlwZTpdKToKKyAgICAgICAgKC1b
V0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbCBkaWRTZWxlY3RPcHRpb25BdEluZGV4Ol0pOgor
ICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sIGludmFsaWRhdGVdKToKKyAg
ICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbCB0ZXh0U3VnZ2VzdGlvbnNdKToK
KyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbCBzdWdnZXN0aW9uc0NvdW50
XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2wgc3VnZ2VzdGlvbkF0
SW5kZXg6XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2wgdGV4dEFs
aWdubWVudF0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQaWNrZXIgaW5pdFdp
dGhJbmZvcm1hdGlvbjppblZpZXc6XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9u
c1BpY2tlciB1cGRhdGVXaXRoSW5mb3JtYXRpb246XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RT
dWdnZXN0aW9uc1BpY2tlciBzaG93U3VnZ2VzdGlvbnNEcm9wZG93bjphY3RpdmF0aW9uVHlwZTpd
KToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUGlja2VyIG51bWJlck9mQ29tcG9u
ZW50c0luUGlja2VyVmlldzpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUGlj
a2VyIHBpY2tlclZpZXc6bnVtYmVyT2ZSb3dzSW5Db21wb25lbnQ6XSk6CisgICAgICAgICgtW1dL
RGF0YUxpc3RTdWdnZXN0aW9uc1BpY2tlciBwaWNrZXJWaWV3OnRpdGxlRm9yUm93OmZvckNvbXBv
bmVudDpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUGlja2VyIGludmFsaWRh
dGVdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUGlja2VyVmlldyBjb250cm9s
Vmlld10pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQaWNrZXJWaWV3IGNvbnRy
b2xCZWdpbkVkaXRpbmddKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUGlja2Vy
VmlldyBjb250cm9sRW5kRWRpdGluZ10pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlv
bnNQb3BvdmVyIGluaXRXaXRoSW5mb3JtYXRpb246aW5WaWV3Ol0pOgorICAgICAgICAoLVtXS0Rh
dGFMaXN0U3VnZ2VzdGlvbnNQb3BvdmVyIHVwZGF0ZVdpdGhJbmZvcm1hdGlvbjpdKToKKyAgICAg
ICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUG9wb3ZlciBzaG93U3VnZ2VzdGlvbnNEcm9wZG93
bjphY3RpdmF0aW9uVHlwZTpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUG9w
b3ZlciBpbnZhbGlkYXRlXSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc1BvcG92
ZXIgZGlkU2VsZWN0T3B0aW9uQXRJbmRleDpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dl
c3Rpb25zVmlld0NvbnRyb2xsZXIgcmVsb2FkRGF0YV0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0
U3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlciB0YWJsZVZpZXc6bnVtYmVyT2ZSb3dzSW5TZWN0aW9u
Ol0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlciB0YWJs
ZVZpZXc6Y2VsbEZvclJvd0F0SW5kZXhQYXRoOl0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3Vn
Z2VzdGlvbnNWaWV3Q29udHJvbGxlciB0YWJsZVZpZXc6ZGlkU2VsZWN0Um93QXRJbmRleFBhdGg6
XSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cGFnZURpZFNjcm9sbCk6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6
OmNyZWF0ZURhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bik6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tGb3JtSW5wdXRTZXNz
aW9uIGVuZEVkaXRpbmddKToKKyAgICAgICAgKC1bV0tGb3JtSW5wdXRTZXNzaW9uIHNldFN1Z2dl
c3Rpb25zOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9mb3JtSW5wdXRTZXNzaW9uXSk6
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgcmVzaWduRmlyc3RSZXNwb25kZXJGb3JXZWJWaWV3
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgdGV4dEludGVyYWN0aW9uR2VzdHVyZTpzaG91
bGRCZWdpbkF0UG9pbnQ6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgYWNjZXNzb3J5VGFi
Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGluc2VydFRleHRTdWdnZXN0aW9uOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFj
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRv
d25NYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93
bk1hYzo6ZGlkU2VsZWN0T3B0aW9uKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZENsb3NlU3VnZ2VzdGlvbnMpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmdldEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uKToKKwogMjAxOC0wOC0zMCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBXS1BhZ2VMb2FkRmlsZSBTUEkg
dmFyaWFudCB3aGljaCByZXR1cm5zIGEgbmF2aWdhdGlvbiBvYmplY3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9odG1sLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9odG1sLmNzcwpp
bmRleCAyNmM3ODg2YTI0YzAzNWViZDYxOTkwMGZmN2FhZjc4NmRmMzAzNTgyLi40NzIwMGYyNTU5
MjE0NTQ1MDNmMWFlZjQzOTUyYjEzMDI5YTRjZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvaHRtbC5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL2h0bWwuY3NzCkBAIC02MjYs
NyArNjI2LDE0IEBAIGlucHV0Ojotd2Via2l0LWxpc3QtYnV0dG9uIHsKICAgICBmbGV4OiBub25l
OwogICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgd2lkdGg6IDE2cHg7CisjaWYg
ZGVmaW5lZChXVEZfUExBVEZPUk1fSU9TKSAmJiBXVEZfUExBVEZPUk1fSU9TCisgICAgY29udGVu
dDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHN0cm9rZT0iYmxhY2siIGZpbGw9ImJsYWNrIiB3aWR0aD0iMTYiIGhlaWdodD0i
MTYiPjxwb2x5Z29uIHBvaW50cz0iOCAxMS4wMzEsIDQuNSA0Ljk2OSwgMTEuNSA0Ljk2OSIvPjwv
c3ZnPicpOworICAgIC8qIE1ha2UgaXQgZWFzaWVyIHRvIGhpdCB0aGUgYnV0dG9uIG9uIGlPUyAq
LworICAgIHBhZGRpbmc6IDdweDsKKyAgICBtYXJnaW46IC03cHg7CisjZWxzZQogICAgIGhlaWdo
dDogMTAwJTsKKyNlbmRpZgogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24uaAppbmRleCA4YzQ0OWVmOTk5NGM2MDNj
YzRmNWVjOGE1YWQ5OTM5NTBhMDU1OWZlLi41Nzk0NTFhNTk4MzJmZGRmZmM5Yjk4ZjQwY2Q5NTk1
NTY4Y2VmYzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGFMaXN0U3VnZ2Vz
dGlvbkluZm9ybWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRhTGlzdFN1Z2dl
c3Rpb25JbmZvcm1hdGlvbi5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpZiBFTkFCTEUo
REFUQUxJU1RfRUxFTUVOVCkKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmgKaW5kZXggZTMyYjM4OTNlYjRhYzc5NmM2NmUwOGMxYmRhN2YzZTQ3
MjllYzhkMy4uNGNlODliMTYwMDNlZTVlZmI5OGEwYzhmN2MzZTM5MDgzYTIwNGEyOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTE1MSw3ICsxNTEsNyBAQCBwdWJs
aWM6CiAgICAgSFRNTEVsZW1lbnQqIHBsYWNlaG9sZGVyRWxlbWVudCgpIGNvbnN0IGZpbmFsOwog
ICAgIFdFQkNPUkVfRVhQT1JUIEhUTUxFbGVtZW50KiBhdXRvRmlsbEJ1dHRvbkVsZW1lbnQoKSBj
b25zdDsKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLSAgICBIVE1MRWxlbWVudCogZGF0
YUxpc3RCdXR0b25FbGVtZW50KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgSFRNTEVsZW1l
bnQqIGRhdGFMaXN0QnV0dG9uRWxlbWVudCgpIGNvbnN0OwogI2VuZGlmCiAKICAgICBib29sIGNo
ZWNrZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2hlY2tlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCmluZGV4IDQyMDI1M2ZkN2IyYzgzOTlmYzM5MThlOGRh
YWZlZWQ0NzFlOTRjMmYuLmFjZTIwYWY0Njg0MjNkZDE2N2JmNDczMjEzN2NlZjU2MjA4YjUzNWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKQEAgLTI2MCw4
ICsyNjAsMTMgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmhhbmRsZUZvY3VzRXZlbnQoTm9k
ZSogb2xkRm9jdXNlZE5vZGUsIEZvY3VzRGlyZWN0aW9uKQogewogICAgIEFTU0VSVChlbGVtZW50
KCkpOwogICAgIEFTU0VSVF9VTlVTRUQob2xkRm9jdXNlZE5vZGUsIG9sZEZvY3VzZWROb2RlICE9
IGVsZW1lbnQoKSk7Ci0gICAgaWYgKFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBlbGVtZW50KCktPmRv
Y3VtZW50KCkuZnJhbWUoKSkKKyAgICBpZiAoUmVmUHRyPEZyYW1lPiBmcmFtZSA9IGVsZW1lbnQo
KS0+ZG9jdW1lbnQoKS5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50ZXh0Rmll
bGREaWRCZWdpbkVkaXRpbmcoZWxlbWVudCgpKTsKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVO
VCkgJiYgUExBVEZPUk0oSU9TKQorICAgICAgICBpZiAoZWxlbWVudCgpLT5saXN0KCkgJiYgbV9k
YXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yKQorICAgICAgICAgICAgbV9kYXRhTGlzdERyb3Bkb3du
SW5kaWNhdG9yLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSwgc3Vn
Z2VzdGlvbnMoKS5zaXplKCkgPyBDU1NWYWx1ZUJsb2NrIDogQ1NTVmFsdWVOb25lLCB0cnVlKTsK
KyNlbmRpZgorICAgIH0KIH0KIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmhhbmRsZUJsdXJF
dmVudCgpCkBAIC0yNjksNiArMjc0LDEwIEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5k
bGVCbHVyRXZlbnQoKQogICAgIElucHV0VHlwZTo6aGFuZGxlQmx1ckV2ZW50KCk7CiAgICAgQVNT
RVJUKGVsZW1lbnQoKSk7CiAgICAgZWxlbWVudCgpLT5lbmRFZGl0aW5nKCk7CisjaWYgRU5BQkxF
KERBVEFMSVNUX0VMRU1FTlQpICYmIFBMQVRGT1JNKElPUykKKyAgICBpZiAoZWxlbWVudCgpLT5s
aXN0KCkgJiYgbV9kYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yKQorICAgICAgICBtX2RhdGFMaXN0
RHJvcGRvd25JbmRpY2F0b3ItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlEaXNw
bGF5LCBDU1NWYWx1ZU5vbmUsIHRydWUpOworI2VuZGlmCiB9CiAKIGJvb2wgVGV4dEZpZWxkSW5w
dXRUeXBlOjpzaG91bGRTdWJtaXRJbXBsaWNpdGx5KEV2ZW50JiBldmVudCkKQEAgLTY0OCw2ICs2
NTcsMTAgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmRpZFNldFZhbHVlQnlVc2VyRWRpdCgp
CiAgICAgaWYgKFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBlbGVtZW50KCktPmRvY3VtZW50KCkuZnJh
bWUoKSkKICAgICAgICAgZnJhbWUtPmVkaXRvcigpLnRleHREaWRDaGFuZ2VJblRleHRGaWVsZChl
bGVtZW50KCkpOwogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorI2lmIFBMQVRGT1JNKElP
UykKKyAgICBpZiAoZWxlbWVudCgpLT5saXN0KCkgJiYgbV9kYXRhTGlzdERyb3Bkb3duSW5kaWNh
dG9yKQorICAgICAgICBtX2RhdGFMaXN0RHJvcGRvd25JbmRpY2F0b3ItPnNldElubGluZVN0eWxl
UHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBzdWdnZXN0aW9ucygpLnNpemUoKSA/IENTU1Zh
bHVlQmxvY2sgOiBDU1NWYWx1ZU5vbmUsIHRydWUpOworI2VuZGlmCiAgICAgaWYgKGVsZW1lbnQo
KS0+bGlzdCgpKQogICAgICAgICBkaXNwbGF5U3VnZ2VzdGlvbnMoRGF0YUxpc3RTdWdnZXN0aW9u
QWN0aXZhdGlvblR5cGU6OlRleHRDaGFuZ2VkKTsKICNlbmRpZgpAQCAtODA0LDcgKzgxNyw5IEBA
IHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpsaXN0QXR0cmlidXRlVGFyZ2V0Q2hhbmdlZCgpCiAg
ICAgaWYgKCFtX2RhdGFMaXN0RHJvcGRvd25JbmRpY2F0b3IpCiAgICAgICAgIHJldHVybjsKIAor
I2lmICFQTEFURk9STShJT1MpCiAgICAgbV9kYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yLT5zZXRJ
bmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSwgZWxlbWVudCgpLT5saXN0KCkg
PyBDU1NWYWx1ZUJsb2NrIDogQ1NTVmFsdWVOb25lLCB0cnVlKTsKKyNlbmRpZgogfQogCiBIVE1M
RWxlbWVudCogVGV4dEZpZWxkSW5wdXRUeXBlOjpkYXRhTGlzdEJ1dHRvbkVsZW1lbnQoKSBjb25z
dApAQCAtODc1LDcgKzg5MCw3IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpkaXNwbGF5U3Vn
Z2VzdGlvbnMoRGF0YUxpc3RTdWdnZXN0aW9uQWN0aXZhdGlvblR5cGUgdHlwCiAgICAgaWYgKGVs
ZW1lbnQoKS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkgfHwgIWVsZW1lbnQoKS0+cmVuZGVyZXIo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKCkpCisgICAgaWYgKCFVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKCkgJiYgdHlwZSAhPSBEYXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0
aW9uVHlwZTo6VGV4dENoYW5nZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9zdWdn
ZXN0aW9uUGlja2VyICYmIHN1Z2dlc3Rpb25zKCkuc2l6ZSgpID4gMCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmNwcAppbmRleCAyMTA5NzNiZTVh
OTljOTNlN2UzYzI5NzBjZDY5ZTI3NTg3NGI1ZjBlLi5jMWE0MzM1ZDRkZGY5MDJhYWQyYzdmMjQ1
NzkxNjA3N2RkYjc1MWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3Rl
ZE5vZGVJbmZvcm1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWRO
b2RlSW5mb3JtYXRpb24uY3BwCkBAIC05Nyw5ICs5NywxMiBAQCB2b2lkIEFzc2lzdGVkTm9kZUlu
Zm9ybWF0aW9uOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29k
ZXIgPDwgbGFiZWw7CiAgICAgZW5jb2RlciA8PCBhcmlhTGFiZWw7CiAgICAgZW5jb2RlciA8PCBh
c3Npc3RlZE5vZGVJZGVudGlmaWVyOwotI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKSAmJiBF
TkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAg
ICBlbmNvZGVyIDw8IGhhc1N1Z2dlc3Rpb25zOworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KQogICAgIGVuY29kZXIgPDwgc3VnZ2VzdGVkQ29sb3JzOwogI2VuZGlmCisjZW5kaWYKIH0KIAog
Ym9vbCBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24mIHJlc3VsdCkKQEAgLTIwNiw5ICsyMDksMTQgQEAg
Ym9vbCBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgQXNzaXN0ZWROb2RlSW5mb3JtYXQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5h
c3Npc3RlZE5vZGVJZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0jaWYgRU5B
QkxFKElOUFVUX1RZUEVfQ09MT1IpICYmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorI2lmIEVO
QUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lmhh
c1N1Z2dlc3Rpb25zKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisjaWYgRU5BQkxFKElOUFVU
X1RZUEVfQ09MT1IpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc3VnZ2VzdGVkQ29s
b3JzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAjZW5kaWYKIAogICAgIHJldHVy
biB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5m
b3JtYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9u
LmgKaW5kZXggNjY3MTZkNDAzMjkxMWUxZjFkNzNhMDM5ODU5YTk2NjM3MTIyNDhkZC4uNDMzNjM4
Yjk0OGRmMDk3OGFiM2MxYmQxYmExYTNiNzQxZGRmYTZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oCkBAIC0xMjUsOCArMTI1LDExIEBAIHN0
cnVjdCBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiB7CiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyOwog
ICAgIFN0cmluZyBsYWJlbDsKICAgICBTdHJpbmcgYXJpYUxhYmVsOwotI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKSAmJiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyNpZiBFTkFCTEUoREFU
QUxJU1RfRUxFTUVOVCkKKyAgICBib29sIGhhc1N1Z2dlc3Rpb25zIHsgZmFsc2UgfTsKKyNpZiBF
TkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKICAgICBWZWN0b3I8V2ViQ29yZTo6Q29sb3I+IHN1Z2dl
c3RlZENvbG9yczsKKyNlbmRpZgogI2VuZGlmCiAKICAgICB1aW50NjRfdCBhc3Npc3RlZE5vZGVJ
ZGVudGlmaWVyIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0lu
dGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9p
b3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaAppbmRleCA5Yjk1MzNlMDcyZGE4
MGRjM2RkYmMxYmQwMWM1MWIyNzBjYjNmMjljLi4zZDA4Njg5ZmUxNzZkZDdhNjE3MmExMzdjMDU4
M2RjZWE3MzcyZjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJh
Y3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9p
b3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaApAQCAtNTUsNiArNTUsOSBAQCBz
dHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24gewogICAgIGJvb2wgaXNFbGVt
ZW50IHsgZmFsc2UgfTsKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAgICAgYm9vbCBpc0Rh
dGFEZXRlY3RvckxpbmsgeyBmYWxzZSB9OworI2VuZGlmCisjaWYgRU5BQkxFKERBVEFMSVNUX0VM
RU1FTlQpCisgICAgYm9vbCBwcmV2ZW50VGV4dEludGVyYWN0aW9uIHsgZmFsc2UgfTsKICNlbmRp
ZgogICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgYWRqdXN0ZWRQb2ludEZvck5vZGVSZXNwb25kaW5n
VG9DbGlja0V2ZW50czsKICAgICBXZWJDb3JlOjpVUkwgdXJsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9u
Lm1tCmluZGV4IGNhZjNiM2U1Nzg5Mjg0MjhlNzQ2NjEzMzU2N2U1NmE1MWQyOGYxY2QuLmEzOWFm
MjIyNTgyYWE2NTdjMjdlZGUwNjljNWMzNmUyNWJiNjFhZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRp
b24ubW0KQEAgLTgyLDYgKzgyLDkgQEAgdm9pZCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbjo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICAgICAgSVBDOjpl
bmNvZGUoZW5jb2RlciwgcmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGFyY2hpdmVyLmdldCgp
LmVuY29kZWREYXRhKSk7CiAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1F
TlQpCisgICAgZW5jb2RlciA8PCBwcmV2ZW50VGV4dEludGVyYWN0aW9uOworI2VuZGlmCiB9CiAK
IGJvb2wgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246OmRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIsIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJiByZXN1bHQpCkBA
IC0xODYsNiArMTg5LDExIEBAIGJvb2wgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246
OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEludGVyYWN0aW9uCiAgICAgfQogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5wcmV2ZW50VGV4dEludGVyYWN0aW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
I2VuZGlmCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4
IDRiOGQ0ODA2YjQ0ZjIyMDQ2NTg1NzdlYjdhOTY3OGNiOGUzNDc5YmYuLjEzOGUyMGU2ODc1MTAz
MTRjNGEwMzU3ODFiYzFjMWQ5ODRiOTRjZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291
cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTM0
OSw2ICszNDksNyBAQCBVSVByb2Nlc3MvR2FtZXBhZC9pb3MvVUlHYW1lcGFkUHJvdmlkZXJJT1Mu
bW0KIFVJUHJvY2Vzcy9HYW1lcGFkL21hYy9VSUdhbWVwYWRQcm92aWRlck1hYy5tbQogCiBVSVBy
b2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQorVUlQcm9jZXNzL2lvcy9XZWJE
YXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW0KIAogVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S0FpclBsYXlSb3V0ZVBpY2tlci5tbQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVQaWNrZXJW
aWV3Q29udHJvbGxlci5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24uaAppbmRleCBmNjFjZjZkODVjMTA1ZWUxOGVh
YTNlYjQ1MTA5NTU1OTA4YmI3ZjQ0Li4yOWUzYmJmYzAzMGNlY2E5ZGQ2YjU4MjJkNjM0ZGQ2ZTUz
OTVlOTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJEYXRhTGlzdFN1
Z2dlc3Rpb25zRHJvcGRvd24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJEYXRh
TGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24uaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHZpcnR1YWwgfkNsaWVudCgpIHsgfQogCiAgICAgcHVibGljOgotICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkU2VsZWN0T3B0aW9uKFN0cmluZyYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGRpZFNlbGVjdE9wdGlvbihjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRDbG9zZVN1Z2dlc3Rpb25zKCkgPSAwOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDY0ODEwODExMjZhMzJmYjQyNDNiYzVlZmY3NWIx
ZGE2NmE3YTQxMjIuLmIyNTc1ZTYyM2RmZWE5Mzk0ZWE0OWRjOTgyNmM0NDNhMTljMDA4ZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDU1Niw3ICs0NTU2
LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwYWdlRGlkU2Nyb2xsKCkKICAgICBpZiAobV9pc0tl
eWJvYXJkQW5pbWF0aW5nSW4pCiAgICAgICAgIHJldHVybjsKICNlbmRpZgorCisjaWYgIVBMQVRG
T1JNKElPUykKICAgICBjbG9zZU92ZXJsYXllZFZpZXdzKCk7CisjZW5kaWYKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnJ1bk9wZW5QYW5lbCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIGNvbnN0IEZpbGVDaG9vc2VyU2V0dGlu
Z3MmIHNldHRpbmdzKQpAQCAtNDc4Myw3ICs0Nzg2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZENsb3NlU3VnZ2VzdGlvbnMoKQogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RGlkQ2xvc2VTdWdnZXN0aW9ucygpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRTZWxlY3RPcHRpb24oU3RyaW5nJiBzZWxlY3RlZE9wdGlvbikKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRTZWxlY3RPcHRpb24oY29uc3QgU3RyaW5nJiBzZWxlY3RlZE9wdGlvbikKIHsK
ICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAppbmRleCA3YmU1Mzk4NTg1OTZiZjE1M2RhNzBlZDA4ZDJlMjIxMmFj
NjM5ODc5Li5hZGY1NGE3NzZmYTNiYmNlMjA2MjdmNDkxODFmMmU3MjAyOWE4MDVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTUyNiw3ICsxNTI2LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNob3dEYXRhTGlzdFN1Z2dlc3Rpb25zKFdlYkNvcmU6OkRhdGFMaXN0
U3VnZ2VzdGlvbkluZm9ybWF0aW9uJiYpOwogICAgIHZvaWQgaGFuZGxlS2V5ZG93bkluRGF0YUxp
c3QoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBlbmREYXRhTGlzdFN1Z2dlc3Rpb25zKCk7Ci0g
ICAgdm9pZCBkaWRTZWxlY3RPcHRpb24oU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBkaWRTZWxl
Y3RPcHRpb24oY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBkaWRDbG9zZVN1Z2dlc3Rp
b25zKCkgZmluYWw7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDg0N2M5ZjA0ZjliYjAwNjRmMjBhN2M2ZTIyNThh
N2YxOTg0MWIzZDcuLmZhYzM1MjkwMmViYjM4MmU0ZDQxMTRiOTdhY2VjMzIzZjJiMjhiZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0K
QEAgLTQ4LDYgKzQ4LDcgQEAKICNpbXBvcnQgIldLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lz
dHJ5LmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViQ29udGV4
dE1lbnVQcm94eS5oIgorI2ltcG9ydCAiV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9T
LmgiCiAjaW1wb3J0ICJXZWJFZGl0Q29tbWFuZFByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNz
UHJveHkuaCIKICNpbXBvcnQgIl9XS0Rvd25sb2FkSW50ZXJuYWwuaCIKQEAgLTc4MCw3ICs3ODEs
NyBAQCBSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xvclBp
Y2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZQogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5U
KQogUmVmUHRyPFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bj4gUGFnZUNsaWVudEltcGw6
OmNyZWF0ZURhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bihXZWJQYWdlUHJveHkmIHBhZ2UpCiB7
Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNE
cm9wZG93bklPUzo6Y3JlYXRlKHBhZ2UsIG1fY29udGVudFZpZXcpOwogfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24uaAppbmRleCBkOGZmMTQyOTRjMzkzNjIxNDg3YjQwNmRhMzFkOWIyYmYzNTRjMzlkLi5j
Yjk3NWM4NGVlYTE2OTNjMzY3ZTI1NDZlNzc3OTcyNDM2NmJlMTJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBA
IC00NCw2ICs0NCw3IEBACiAjaW1wb3J0ICJXS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaCIK
ICNpbXBvcnQgIldLU2hhcmVTaGVldC5oIgogI2ltcG9ydCAiV0tTeW50aGV0aWNDbGlja1RhcEdl
c3R1cmVSZWNvZ25pemVyLmgiCisjaW1wb3J0ICJfV0tGb3JtSW5wdXRTZXNzaW9uLmgiCiAjaW1w
b3J0IDxVSUtpdC9VSVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3IuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRmxvYXRRdWFkLmg+CkBAIC0xNDcsNiArMTQ4LDE2IEBAIHN0cnVjdCBXS0F1dG9D
b3JyZWN0aW9uRGF0YSB7CiAKIH0KIAorQGNsYXNzIFdLRm9jdXNlZEVsZW1lbnRJbmZvOworCitA
aW50ZXJmYWNlIFdLRm9ybUlucHV0U2Vzc2lvbiA6IE5TT2JqZWN0IDxfV0tGb3JtSW5wdXRTZXNz
aW9uPgorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb250ZW50VmlldzooV0tDb250ZW50Vmll
dyAqKXZpZXcgZm9jdXNlZEVsZW1lbnRJbmZvOihXS0ZvY3VzZWRFbGVtZW50SW5mbyAqKWVsZW1l
bnRJbmZvIHJlcXVpcmVzU3Ryb25nUGFzc3dvcmRBc3Npc3RhbmNlOihCT09MKXJlcXVpcmVzU3Ry
b25nUGFzc3dvcmRBc3Npc3RhbmNlOworLSAodm9pZCllbmRFZGl0aW5nOworLSAodm9pZClpbnZh
bGlkYXRlOworCitAZW5kCisKIEBpbnRlcmZhY2UgV0tDb250ZW50VmlldyAoKSB7CiAgICAgUmV0
YWluUHRyPFVJV2ViVG91Y2hFdmVudHNHZXN0dXJlUmVjb2duaXplcj4gX3RvdWNoRXZlbnRHZXN0
dXJlUmVjb2duaXplcjsKIApAQCAtMzQ4LDYgKzM1OSw3IEBAIEZPUl9FQUNIX1dLQ09OVEVOVFZJ
RVdfQUNUSU9OKERFQ0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVXKQogLSAo
dm9pZClfYWNjZXNzaWJpbGl0eVJldHJpZXZlUmVjdHNBdFNlbGVjdGlvbk9mZnNldDooTlNJbnRl
Z2VyKW9mZnNldCB3aXRoVGV4dDooTlNTdHJpbmcgKil0ZXh0OwogLSAodm9pZClfYWNjZXNzaWJp
bGl0eVN0b3JlU2VsZWN0aW9uOwogLSAodm9pZClfYWNjZXNzaWJpbGl0eUNsZWFyU2VsZWN0aW9u
OworLSAoV0tGb3JtSW5wdXRTZXNzaW9uICopX2Zvcm1JbnB1dFNlc3Npb247CiAKIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSkgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQ
b3NpdGlvbiBjdXJyZW50UG9zaXRpb25JbmZvcm1hdGlvbjsKIC0gKHZvaWQpZG9BZnRlclBvc2l0
aW9uSW5mb3JtYXRpb25VcGRhdGU6KHZvaWQgKF4pKFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb24pKWFjdGlvbiBmb3JSZXF1ZXN0OihXZWJLaXQ6OkludGVyYWN0aW9uSW5m
b3JtYXRpb25SZXF1ZXN0KXJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBlNTM1OTVmMGI0NTFk
OTliZThkMDE5NTEwYWQxMjJhNjYwNTA5MWQ3Li43ODQzZDVhNTMwOGFkZGM0ZjY5OTA2ZGI0MDBl
NzRhYmI3ZTRhZTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTYwLDYgKzYwLDcgQEAKICNpbXBvcnQg
IldLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRl
cm5hbC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3UHJpdmF0ZS5oIgorI2ltcG9ydCAiV2ViRGF0YUxp
c3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLmgiCiAjaW1wb3J0ICJXZWJFdmVudC5oIgogI2ltcG9y
dCAiV2ViSU9TRXZlbnRGYWN0b3J5LmgiCiAjaW1wb3J0ICJXZWJQYWdlTWVzc2FnZXMuaCIKQEAg
LTY3LDcgKzY4LDYgQEAKICNpbXBvcnQgIl9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvSW50ZXJuYWwu
aCIKICNpbXBvcnQgIl9XS0VsZW1lbnRBY3Rpb24uaCIKICNpbXBvcnQgIl9XS0ZvY3VzZWRFbGVt
ZW50SW5mby5oIgotI2ltcG9ydCAiX1dLRm9ybUlucHV0U2Vzc2lvbi5oIgogI2ltcG9ydCAiX1dL
SW5wdXREZWxlZ2F0ZS5oIgogI2ltcG9ydCA8Q29yZVRleHQvQ1RGb250Lmg+CiAjaW1wb3J0IDxD
b3JlVGV4dC9DVEZvbnREZXNjcmlwdG9yLmg+CkBAIC0yODUsMTMgKzI4NSw2IEBAIGNvbnN0IENH
RmxvYXQgbWluaW11bVRhcEhpZ2hsaWdodFJhZGl1cyA9IDIuMDsKIC0gKGluc3RhbmNldHlwZSlp
bml0V2l0aEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uOihjb25zdCBBc3Npc3RlZE5vZGVJbmZvcm1h
dGlvbiYpaW5mb3JtYXRpb24gaXNVc2VySW5pdGlhdGVkOihCT09MKWlzVXNlckluaXRpYXRlZCB1
c2VyT2JqZWN0OihOU09iamVjdCA8TlNTZWN1cmVDb2Rpbmc+ICopdXNlck9iamVjdDsKIEBlbmQK
IAotQGludGVyZmFjZSBXS0Zvcm1JbnB1dFNlc3Npb24gOiBOU09iamVjdCA8X1dLRm9ybUlucHV0
U2Vzc2lvbj4KLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29udGVudFZpZXc6KFdLQ29udGVu
dFZpZXcgKil2aWV3IGZvY3VzZWRFbGVtZW50SW5mbzooV0tGb2N1c2VkRWxlbWVudEluZm8gKill
bGVtZW50SW5mbyByZXF1aXJlc1N0cm9uZ1Bhc3N3b3JkQXNzaXN0YW5jZTooQk9PTClyZXF1aXJl
c1N0cm9uZ1Bhc3N3b3JkQXNzaXN0YW5jZTsKLS0gKHZvaWQpaW52YWxpZGF0ZTsKLQotQGVuZAot
CiBAaW1wbGVtZW50YXRpb24gV0tGb3JtSW5wdXRTZXNzaW9uIHsKICAgICBXZWFrT2JqQ1B0cjxX
S0NvbnRlbnRWaWV3PiBfY29udGVudFZpZXc7CiAgICAgUmV0YWluUHRyPFdLRm9jdXNlZEVsZW1l
bnRJbmZvPiBfZm9jdXNlZEVsZW1lbnRJbmZvOwpAQCAtMzg2LDYgKzM3OSwxMiBAQCBjb25zdCBD
R0Zsb2F0IG1pbmltdW1UYXBIaWdobGlnaHRSYWRpdXMgPSAyLjA7CiAgICAgW19jb250ZW50Vmll
dyByZWxvYWRJbnB1dFZpZXdzXTsKIH0KIAorLSAodm9pZCllbmRFZGl0aW5nCit7CisgICAgaWYg
KFtfY3VzdG9tSW5wdXRWaWV3IGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woV0tGb3JtQ29u
dHJvbCldKQorICAgICAgICBbKGlkPFdLRm9ybUNvbnRyb2w+KV9jdXN0b21JbnB1dFZpZXcuZ2V0
KCkgY29udHJvbEVuZEVkaXRpbmddOworfQorCiAtIChOU0FycmF5PFVJVGV4dFN1Z2dlc3Rpb24g
Kj4gKilzdWdnZXN0aW9ucwogewogICAgIHJldHVybiBfc3VnZ2VzdGlvbnMuZ2V0KCk7CkBAIC0z
OTMsNiArMzkyLDEyIEBAIGNvbnN0IENHRmxvYXQgbWluaW11bVRhcEhpZ2hsaWdodFJhZGl1cyA9
IDIuMDsKIAogLSAodm9pZClzZXRTdWdnZXN0aW9uczooTlNBcnJheTxVSVRleHRTdWdnZXN0aW9u
ICo+ICopc3VnZ2VzdGlvbnMKIHsKKyAgICAvLyBTdWdnZXN0aW9ucyB0aGF0IGNvbWUgZnJvbSBh
IDxkYXRhbGlzdD4gc2hvdWxkIG5vdCBiZSBvdmVyd3JpdHRlbiBieSBvdGhlciBjbGllbnRzLgor
I2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIGlmIChbX2NvbnRlbnRWaWV3IGFzc2lz
dGVkTm9kZUluZm9ybWF0aW9uXS5oYXNTdWdnZXN0aW9ucyAmJiAhW3N1Z2dlc3Rpb25zLmZpcnN0
T2JqZWN0IGlzS2luZE9mQ2xhc3M6W1dLRGF0YUxpc3RUZXh0U3VnZ2VzdGlvbiBjbGFzc11dKQor
ICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIGlkIDxVSVRleHRJbnB1dFN1Z2dlc3Rpb25E
ZWxlZ2F0ZT4gc3VnZ2VzdGlvbkRlbGVnYXRlID0gKGlkIDxVSVRleHRJbnB1dFN1Z2dlc3Rpb25E
ZWxlZ2F0ZT4pW19jb250ZW50VmlldyBpbnB1dERlbGVnYXRlXTsKICAgICBfc3VnZ2VzdGlvbnMg
PSBhZG9wdE5TKFtzdWdnZXN0aW9ucyBjb3B5XSk7CiAgICAgW3N1Z2dlc3Rpb25EZWxlZ2F0ZSBz
ZXRTdWdnZXN0aW9uczpzdWdnZXN0aW9uc107CkBAIC01OTYsNiArNjAxLDExIEBAIHN0YXRpYyBp
bmxpbmUgYm9vbCBoYXNBc3Npc3RlZE5vZGUoV2ViS2l0OjpBc3Npc3RlZE5vZGVJbmZvcm1hdGlv
biBhc3Npc3RlZE5vZGVJCiAgICAgcmV0dXJuIChhc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5lbGVt
ZW50VHlwZSAhPSBJbnB1dFR5cGU6Ok5vbmUpOwogfQogCistIChXS0Zvcm1JbnB1dFNlc3Npb24g
KilfZm9ybUlucHV0U2Vzc2lvbgoreworICAgIHJldHVybiBfZm9ybUlucHV0U2Vzc2lvbi5nZXQo
KTsKK30KKwogLSAodm9pZClfY3JlYXRlQW5kQ29uZmlndXJlRG91YmxlVGFwR2VzdHVyZVJlY29n
bml6ZXIKIHsKICAgICBfZG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIgPSBhZG9wdE5TKFtbVUlU
YXBHZXN0dXJlUmVjb2duaXplciBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6c2VsZiBhY3Rpb246QHNl
bGVjdG9yKF9kb3VibGVUYXBSZWNvZ25pemVkOildKTsKQEAgLTEwMDQsNiArMTAxNCw4IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBoYXNBc3Npc3RlZE5vZGUoV2ViS2l0OjpBc3Npc3RlZE5vZGVJbmZv
cm1hdGlvbiBhc3Npc3RlZE5vZGVJCiAgICAgaWYgKCFfd2ViVmlldy0+X2FjdGl2ZUZvY3VzZWRT
dGF0ZVJldGFpbkNvdW50KSB7CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gY29tcGxldGUgdGhlIGVk
aXRpbmcgb3BlcmF0aW9uIGJlZm9yZSB3ZSBibHVyIHRoZSBlbGVtZW50LgogICAgICAgICBbX2lu
cHV0UGVyaXBoZXJhbCBlbmRFZGl0aW5nXTsKKyAgICAgICAgW19mb3JtSW5wdXRTZXNzaW9uIGVu
ZEVkaXRpbmddOworCiAgICAgICAgIF9wYWdlLT5ibHVyQXNzaXN0ZWROb2RlKCk7CiAgICAgfQog
CkBAIC0xNzUxLDYgKzE3NjMsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGlzU2FtZVBhaXIoVUlH
ZXN0dXJlUmVjb2duaXplciAqYSwgVUlHZXN0dXJlUmVjb2duaXplciAqYiwgVUkKICAgICB9CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIGlmIChfcG9zaXRpb25J
bmZvcm1hdGlvbi5wcmV2ZW50VGV4dEludGVyYWN0aW9uKQorICAgICAgICByZXR1cm4gTk87Cisj
ZW5kaWYKKwogICAgIC8vIElmIHdlJ3JlIGN1cnJlbnRseSBlZGl0aW5nIGFuIGFzc2lzdGVkIG5v
ZGUsIG9ubHkgYWxsb3cgdGhlIHNlbGVjdGlvbiB0byBtb3ZlIHdpdGhpbiB0aGF0IGFzc2lzdGVk
IG5vZGUuCiAgICAgaWYgKHNlbGYuaXNBc3Npc3RpbmdOb2RlKQogICAgICAgICByZXR1cm4gX3Bv
c2l0aW9uSW5mb3JtYXRpb24ubm9kZUF0UG9zaXRpb25Jc0Fzc2lzdGVkTm9kZTsKQEAgLTMxMTQs
NiArMzEzMSw4IEBAIHN0YXRpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWRXaXRoVG91Y2goV0tDb250
ZW50VmlldyAqdmlldywgY29uc3QgV2ViQ29yZTo6SW50UG9pCiAKIC0gKHZvaWQpYWNjZXNzb3J5
VGFiOihCT09MKWlzTmV4dAogeworICAgIFtfZm9ybUlucHV0U2Vzc2lvbiBlbmRFZGl0aW5nXTsK
KwogICAgIFtfaW5wdXRQZXJpcGhlcmFsIGVuZEVkaXRpbmddOwogICAgIF9pbnB1dFBlcmlwaGVy
YWwgPSBuaWw7CiAKQEAgLTMxMjQsNyArMzE0Myw2IEBAIHN0YXRpYyB2b2lkIHNlbGVjdGlvbkNo
YW5nZWRXaXRoVG91Y2goV0tDb250ZW50VmlldyAqdmlldywgY29uc3QgV2ViQ29yZTo6SW50UG9p
CiAgICAgICAgIFt2aWV3IGVuZFNlbGVjdGlvbkNoYW5nZV07CiAgICAgICAgIFt2aWV3IHJlbG9h
ZElucHV0Vmlld3NdOwogICAgIH0pOwotCiB9CiAKIC0gKHZvaWQpX2JlY29tZUZpcnN0UmVzcG9u
ZGVyV2l0aFNlbGVjdGlvbk1vdmluZ0ZvcndhcmQ6KEJPT0wpc2VsZWN0aW5nRm9yd2FyZCBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCBkaWRCZWNvbWVGaXJzdFJlc3BvbmRlcikpY29t
cGxldGlvbkhhbmRsZXIKQEAgLTMyMjMsNiArMzI0MSwxMiBAQCBzdGF0aWMgdm9pZCBzZWxlY3Rp
b25DaGFuZ2VkV2l0aFRvdWNoKFdLQ29udGVudFZpZXcgKnZpZXcsIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaQogICAgICAgICBfcGFnZS0+YXV0b2ZpbGxMb2dpbkNyZWRlbnRpYWxzKFsoVUlUZXh0QXV0
b2ZpbGxTdWdnZXN0aW9uICopdGV4dFN1Z2dlc3Rpb24gdXNlcm5hbWVdLCBbKFVJVGV4dEF1dG9m
aWxsU3VnZ2VzdGlvbiAqKXRleHRTdWdnZXN0aW9uIHBhc3N3b3JkXSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgaWYgKFt0ZXh0U3Vn
Z2VzdGlvbiBpc0tpbmRPZkNsYXNzOltXS0RhdGFMaXN0VGV4dFN1Z2dlc3Rpb24gY2xhc3NdXSkg
eworICAgICAgICBfcGFnZS0+c2V0QXNzaXN0ZWROb2RlVmFsdWUoW3RleHRTdWdnZXN0aW9uIGlu
cHV0VGV4dF0pOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCiAgICAgaWQgPF9XS0lu
cHV0RGVsZWdhdGU+IGlucHV0RGVsZWdhdGUgPSBbX3dlYlZpZXcgX2lucHV0RGVsZWdhdGVdOwog
ICAgIGlmIChbaW5wdXREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJW
aWV3Omluc2VydFRleHRTdWdnZXN0aW9uOmluSW5wdXRTZXNzaW9uOildKQogICAgICAgICBbaW5w
dXREZWxlZ2F0ZSBfd2ViVmlldzpfd2ViVmlldyBpbnNlcnRUZXh0U3VnZ2VzdGlvbjp0ZXh0U3Vn
Z2VzdGlvbiBpbklucHV0U2Vzc2lvbjpfZm9ybUlucHV0U2Vzc2lvbi5nZXQoKV07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ry
b3Bkb3duSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViRGF0YUxpc3RTdWdn
ZXN0aW9uc0Ryb3Bkb3duSU9TLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTc1NWU3YTI5MDJlNzhmMzRjMjc5MTkx
OWYxMTExZjkxNDZlYTljZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MuaApAQCAtMCwwICsxLDYy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxF
TUVOVCkgJiYgUExBVEZPUk0oSU9TKQorCisjaW1wb3J0ICJVSUtpdFNQSS5oIgorI2ltcG9ydCAi
V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duLmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworT0JKQ19DTEFTUyBXS0NvbnRlbnRWaWV3
OworT0JKQ19DTEFTUyBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sOworCitAaW50ZXJmYWNl
IFdLRGF0YUxpc3RUZXh0U3VnZ2VzdGlvbiA6IFVJVGV4dFN1Z2dlc3Rpb24KK0BlbmQKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklP
UyA6IHB1YmxpYyBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24geworcHVibGljOgorICAg
IHN0YXRpYyBSZWY8V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TPiBjcmVhdGUoV2Vi
RGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duOjpDbGllbnQmLCBXS0NvbnRlbnRWaWV3ICopOwor
CisgICAgdm9pZCBkaWRTZWxlY3RPcHRpb24oY29uc3QgU3RyaW5nJik7CisKK3ByaXZhdGU6Cisg
ICAgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TKFdlYkRhdGFMaXN0U3VnZ2VzdGlv
bnNEcm9wZG93bjo6Q2xpZW50JiwgV0tDb250ZW50VmlldyAqKTsKKworICAgIHZvaWQgc2hvdyhX
ZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbiYmKSBmaW5hbDsKKyAgICB2b2lk
IGhhbmRsZUtleWRvd25XaXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2
b2lkIGNsb3NlKCkgZmluYWw7CisKKyAgICBXS0NvbnRlbnRWaWV3ICptX2NvbnRlbnRWaWV3Owor
ICAgIFJldGFpblB0cjxXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sPiBtX3N1Z2dlc3Rpb25z
Q29udHJvbDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxF
KERBVEFMSVNUX0VMRU1FTlQpICYmIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bk
b3duSU9TLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwNGRiZTdmNzYyNGYxY2Y3ZmUxZTA4ZTlkYTE0MDMzMTdh
OTY5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2Vi
RGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tCkBAIC0wLDAgKzEsMzc3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkRhdGFMaXN0U3VnZ2Vz
dGlvbnNEcm9wZG93bklPUy5oIgorCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpICYmIFBM
QVRGT1JNKElPUykKKworI2ltcG9ydCAiV0tDb250ZW50Vmlldy5oIgorI2ltcG9ydCAiV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmgiCisjaW1wb3J0ICJXS0Zvcm1QZXJpcGhlcmFsLmgiCisjaW1w
b3J0ICJXS0Zvcm1Qb3BvdmVyLmgiCisjaW1wb3J0ICJfV0tGb3JtSW5wdXRTZXNzaW9uLmgiCisK
K3N0YXRpYyBjb25zdCBDR0Zsb2F0IG1heFZpc2libGVTdWdnZXN0aW9ucyA9IDU7CitzdGF0aWMg
Y29uc3QgQ0dGbG9hdCBzdWdnZXN0aW9uc1BvcG92ZXJDZWxsSGVpZ2h0ID0gNDQ7CitzdGF0aWMg
Y29uc3QgQ0dGbG9hdCBzdWdnZXN0aW9uc1BvcG92ZXJXaWR0aCA9IDMyMDsKK3N0YXRpYyBOU1N0
cmluZyAqIGNvbnN0IHN1Z2dlc3Rpb25DZWxsUmV1c2VJZGVudGlmaWVyID0gQCJXS0RhdGFMaXN0
U3VnZ2VzdGlvbkNlbGwiOworCitAaW50ZXJmYWNlIFdLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRy
b2wgOiBOU09iamVjdCB7CisgICAgV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRv
d25JT1MqIF9kcm9wZG93bjsKKyAgICBWZWN0b3I8U3RyaW5nPiBfc3VnZ2VzdGlvbnM7Cit9CisK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBXS0NvbnRlbnRWaWV3ICp2aWV3OworCistIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhJbmZvcm1hdGlvbjooV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0
aW9uSW5mb3JtYXRpb24mJilpbmZvcm1hdGlvbiBpblZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3
OworLSAodm9pZCl1cGRhdGVXaXRoSW5mb3JtYXRpb246KFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2Vz
dGlvbkluZm9ybWF0aW9uJiYpaW5mb3JtYXRpb247CistICh2b2lkKXNob3dTdWdnZXN0aW9uc0Ry
b3Bkb3duOihXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUyAqKWRyb3Bk
b3duIGFjdGl2YXRpb25UeXBlOihXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9u
VHlwZSlhY3RpdmF0aW9uVHlwZTsKKy0gKHZvaWQpZGlkU2VsZWN0T3B0aW9uQXRJbmRleDooTlNJ
bnRlZ2VyKWluZGV4OworLSAodm9pZClpbnZhbGlkYXRlOworCistIChOU0FycmF5PFdLRGF0YUxp
c3RUZXh0U3VnZ2VzdGlvbiAqPiAqKXRleHRTdWdnZXN0aW9uczsKKy0gKE5TSW50ZWdlcilzdWdn
ZXN0aW9uc0NvdW50OworLSAoU3RyaW5nKXN1Z2dlc3Rpb25BdEluZGV4OihOU0ludGVnZXIpaW5k
ZXg7CistIChOU1RleHRBbGlnbm1lbnQpdGV4dEFsaWdubWVudDsKK0BlbmQKKworQGludGVyZmFj
ZSBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQaWNrZXIgOiBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250
cm9sIDxVSVBpY2tlclZpZXdEYXRhU291cmNlLCBVSVBpY2tlclZpZXdEZWxlZ2F0ZT4KK0BlbmQK
KworQGludGVyZmFjZSBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQaWNrZXJWaWV3IDogVUlQaWNrZXJW
aWV3IDxXS0Zvcm1Db250cm9sPgorQHByb3BlcnR5IChub25hdG9taWMsIHdlYWspIFdLRGF0YUxp
c3RTdWdnZXN0aW9uc0NvbnRyb2wgKmNvbnRyb2w7CitAZW5kCisKK0BpbnRlcmZhY2UgV0tEYXRh
TGlzdFN1Z2dlc3Rpb25zUG9wb3ZlciA6IFdLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2wKK0Bl
bmQKKworQGludGVyZmFjZSBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlciA6IFVJ
VGFibGVWaWV3Q29udHJvbGxlcgorQHByb3BlcnR5IChub25hdG9taWMsIHdlYWspIFdLRGF0YUxp
c3RTdWdnZXN0aW9uc0NvbnRyb2wgKmNvbnRyb2w7CisKKy0gKHZvaWQpcmVsb2FkRGF0YTsKK0Bl
bmQKKworQGltcGxlbWVudGF0aW9uIFdLRGF0YUxpc3RUZXh0U3VnZ2VzdGlvbgorQGVuZAorCisj
cHJhZ21hIG1hcmsgLSBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1JlZjxXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1M+IFdl
YkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUzo6Y3JlYXRlKFdlYkRhdGFMaXN0U3VnZ2Vz
dGlvbnNEcm9wZG93bjo6Q2xpZW50JiBjbGllbnQsIFdLQ29udGVudFZpZXcgKnZpZXcpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9T
KGNsaWVudCwgdmlldykpOworfQorCitXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1M6
OldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUyhXZWJEYXRhTGlzdFN1Z2dlc3Rpb25z
RHJvcGRvd246OkNsaWVudCYgY2xpZW50LCBXS0NvbnRlbnRWaWV3ICp2aWV3KQorICAgIDogV2Vi
RGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duKGNsaWVudCkKKyAgICAsIG1fY29udGVudFZpZXco
dmlldykKK3sKK30KKwordm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1M6OnNo
b3coV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24mJiBpbmZvcm1hdGlvbikK
K3sKKyAgICBpZiAobV9zdWdnZXN0aW9uc0NvbnRyb2wpIHsKKyAgICAgICAgW21fc3VnZ2VzdGlv
bnNDb250cm9sIHVwZGF0ZVdpdGhJbmZvcm1hdGlvbjpXVEZNb3ZlKGluZm9ybWF0aW9uKV07Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25B
Y3RpdmF0aW9uVHlwZSB0eXBlID0gaW5mb3JtYXRpb24uYWN0aXZhdGlvblR5cGU7CisKKyAgICBp
ZiAoY3VycmVudFVzZXJJbnRlcmZhY2VJZGlvbUlzUGFkKCkpCisgICAgICAgIG1fc3VnZ2VzdGlv
bnNDb250cm9sID0gYWRvcHROUyhbW1dLRGF0YUxpc3RTdWdnZXN0aW9uc1BvcG92ZXIgYWxsb2Nd
IGluaXRXaXRoSW5mb3JtYXRpb246V1RGTW92ZShpbmZvcm1hdGlvbikgaW5WaWV3Om1fY29udGVu
dFZpZXddKTsKKyAgICBlbHNlCisgICAgICAgIG1fc3VnZ2VzdGlvbnNDb250cm9sID0gYWRvcHRO
UyhbW1dLRGF0YUxpc3RTdWdnZXN0aW9uc1BpY2tlciBhbGxvY10gaW5pdFdpdGhJbmZvcm1hdGlv
bjpXVEZNb3ZlKGluZm9ybWF0aW9uKSBpblZpZXc6bV9jb250ZW50Vmlld10pOworCisgICAgW21f
c3VnZ2VzdGlvbnNDb250cm9sIHNob3dTdWdnZXN0aW9uc0Ryb3Bkb3duOnRoaXMgYWN0aXZhdGlv
blR5cGU6dHlwZV07Cit9CisKK3ZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9T
OjpoYW5kbGVLZXlkb3duV2l0aElkZW50aWZpZXIoY29uc3QgU3RyaW5nJikKK3sKK30KKwordm9p
ZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1M6OmNsb3NlKCkKK3sKKyAgICBbbV9z
dWdnZXN0aW9uc0NvbnRyb2wgaW52YWxpZGF0ZV07CisgICAgbV9zdWdnZXN0aW9uc0NvbnRyb2wg
PSBuaWw7CisgICAgbV9jbGllbnQtPmRpZENsb3NlU3VnZ2VzdGlvbnMoKTsKK30KKwordm9pZCBX
ZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1M6OmRpZFNlbGVjdE9wdGlvbihjb25zdCBT
dHJpbmcmIHNlbGVjdGVkT3B0aW9uKQoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fY2xpZW50LT5kaWRTZWxlY3RPcHRpb24oc2VsZWN0ZWRPcHRpb24pOwor
ICAgIGNsb3NlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjcHJhZ21hIG1hcmsg
LSBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sCisKK0BpbXBsZW1lbnRhdGlvbiBXS0RhdGFM
aXN0U3VnZ2VzdGlvbnNDb250cm9sCisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEluZm9ybWF0
aW9uOihXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbiYmKWluZm9ybWF0aW9u
IGluVmlldzooV0tDb250ZW50VmlldyAqKXZpZXcKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVy
IGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF92aWV3ID0gdmlldzsKKyAgICBf
c3VnZ2VzdGlvbnMgPSBXVEZNb3ZlKGluZm9ybWF0aW9uLnN1Z2dlc3Rpb25zKTsKKworICAgIHJl
dHVybiBzZWxmOworfQorCistICh2b2lkKXVwZGF0ZVdpdGhJbmZvcm1hdGlvbjooV2ViQ29yZTo6
RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24mJilpbmZvcm1hdGlvbgoreworICAgIF9zdWdn
ZXN0aW9ucyA9IFdURk1vdmUoaW5mb3JtYXRpb24uc3VnZ2VzdGlvbnMpOworfQorCistICh2b2lk
KXNob3dTdWdnZXN0aW9uc0Ryb3Bkb3duOihXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNE
cm9wZG93bklPUyAqKWRyb3Bkb3duIGFjdGl2YXRpb25UeXBlOihXZWJDb3JlOjpEYXRhTGlzdFN1
Z2dlc3Rpb25BY3RpdmF0aW9uVHlwZSlhY3RpdmF0aW9uVHlwZQoreworICAgIF9kcm9wZG93biA9
IGRyb3Bkb3duOworfQorCistICh2b2lkKWRpZFNlbGVjdE9wdGlvbkF0SW5kZXg6KE5TSW50ZWdl
cilpbmRleAoreworICAgIF9kcm9wZG93bi0+ZGlkU2VsZWN0T3B0aW9uKF9zdWdnZXN0aW9uc1tp
bmRleF0pOworfQorCistICh2b2lkKWludmFsaWRhdGUKK3sKK30KKworLSAoTlNBcnJheTxXS0Rh
dGFMaXN0VGV4dFN1Z2dlc3Rpb24gKj4gKil0ZXh0U3VnZ2VzdGlvbnMKK3sKKyAgICBOU011dGFi
bGVBcnJheSAqc3VnZ2VzdGlvbnMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworCisgICAgZm9y
IChhdXRvIHN1Z2dlc3Rpb24gOiBfc3VnZ2VzdGlvbnMpIHsKKyAgICAgICAgW3N1Z2dlc3Rpb25z
IGFkZE9iamVjdDpbV0tEYXRhTGlzdFRleHRTdWdnZXN0aW9uIHRleHRTdWdnZXN0aW9uV2l0aElu
cHV0VGV4dDpzdWdnZXN0aW9uXV07CisgICAgICAgIGlmIChzdWdnZXN0aW9ucy5jb3VudCA9PSAz
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHN1Z2dlc3Rpb25zOwor
fQorCistIChOU0ludGVnZXIpc3VnZ2VzdGlvbnNDb3VudAoreworICAgIHJldHVybiBfc3VnZ2Vz
dGlvbnMuc2l6ZSgpOworfQorCistIChTdHJpbmcpc3VnZ2VzdGlvbkF0SW5kZXg6KE5TSW50ZWdl
cilpbmRleAoreworICAgIHJldHVybiBfc3VnZ2VzdGlvbnNbaW5kZXhdOworfQorCistIChOU1Rl
eHRBbGlnbm1lbnQpdGV4dEFsaWdubWVudAoreworICAgIHJldHVybiBfdmlldy5hc3Npc3RlZE5v
ZGVJbmZvcm1hdGlvbi5pc1JUTCA/IE5TVGV4dEFsaWdubWVudFJpZ2h0IDogTlNUZXh0QWxpZ25t
ZW50TGVmdDsKK30KKworQGVuZAorCisjcHJhZ21hIG1hcmsgLSBXS0RhdGFMaXN0U3VnZ2VzdGlv
bnNQaWNrZXIKKworQGltcGxlbWVudGF0aW9uIFdLRGF0YUxpc3RTdWdnZXN0aW9uc1BpY2tlciAg
eworICAgIFJldGFpblB0cjxXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQaWNrZXJWaWV3PiBfcGlja2Vy
VmlldzsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSW5mb3JtYXRpb246KFdlYkNvcmU6
OkRhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uJiYpaW5mb3JtYXRpb24gaW5WaWV3OihXS0Nv
bnRlbnRWaWV3ICopdmlldworeworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhJbmZv
cm1hdGlvbjpXVEZNb3ZlKGluZm9ybWF0aW9uKSBpblZpZXc6dmlld10pKQorICAgICAgICByZXR1
cm4gbmlsOworCisgICAgX3BpY2tlclZpZXcgPSBhZG9wdE5TKFtbV0tEYXRhTGlzdFN1Z2dlc3Rp
b25zUGlja2VyVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvXSk7CisgICAgW19w
aWNrZXJWaWV3IHNldEF1dG9yZXNpemluZ01hc2s6VUlWaWV3QXV0b3Jlc2l6aW5nRmxleGlibGVX
aWR0aCB8IFVJVmlld0F1dG9yZXNpemluZ0ZsZXhpYmxlSGVpZ2h0XTsKKyAgICBbX3BpY2tlclZp
ZXcgc2V0RGF0YVNvdXJjZTpzZWxmXTsKKyAgICBbX3BpY2tlclZpZXcgc2V0RGVsZWdhdGU6c2Vs
Zl07CisgICAgW19waWNrZXJWaWV3IHNldENvbnRyb2w6c2VsZl07CisgICAgW19waWNrZXJWaWV3
IHNldFNpemU6W1VJS2V5Ym9hcmQgZGVmYXVsdFNpemVGb3JJbnRlcmZhY2VPcmllbnRhdGlvbjpV
SUFwcC5pbnRlcmZhY2VPcmllbnRhdGlvbl1dOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0g
KHZvaWQpdXBkYXRlV2l0aEluZm9ybWF0aW9uOihXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25J
bmZvcm1hdGlvbiYmKWluZm9ybWF0aW9uCit7CisgICAgW3N1cGVyIHVwZGF0ZVdpdGhJbmZvcm1h
dGlvbjpXVEZNb3ZlKGluZm9ybWF0aW9uKV07CisgICAgaWYgKGluZm9ybWF0aW9uLmFjdGl2YXRp
b25UeXBlICE9IFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkFjdGl2YXRpb25UeXBlOjpJbmRp
Y2F0b3JDbGlja2VkKSB7CisgICAgICAgIFtbc2VsZi52aWV3IF9mb3JtSW5wdXRTZXNzaW9uXSBz
ZXRDdXN0b21JbnB1dFZpZXc6bmlsXTsKKyAgICAgICAgW1tzZWxmLnZpZXcgX2Zvcm1JbnB1dFNl
c3Npb25dIHNldFN1Z2dlc3Rpb25zOltzZWxmIHRleHRTdWdnZXN0aW9uc11dOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgW1tzZWxmLnZpZXcgX2Zvcm1JbnB1dFNlc3Npb25dIHNldEN1
c3RvbUlucHV0VmlldzpfcGlja2VyVmlldy5nZXQoKV07CisKKyAgICBbX3BpY2tlclZpZXcgcmVs
b2FkQWxsQ29tcG9uZW50c107CisgICAgW19waWNrZXJWaWV3IHNlbGVjdFJvdzowIGluQ29tcG9u
ZW50OjAgYW5pbWF0ZWQ6Tk9dOworfQorCistICh2b2lkKXNob3dTdWdnZXN0aW9uc0Ryb3Bkb3du
OihXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUyAqKWRyb3Bkb3duIGFj
dGl2YXRpb25UeXBlOihXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9uVHlwZSlh
Y3RpdmF0aW9uVHlwZQoreworICAgIFtzdXBlciBzaG93U3VnZ2VzdGlvbnNEcm9wZG93bjpkcm9w
ZG93biBhY3RpdmF0aW9uVHlwZTphY3RpdmF0aW9uVHlwZV07CisgICAgaWYgKGFjdGl2YXRpb25U
eXBlID09IFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkFjdGl2YXRpb25UeXBlOjpJbmRpY2F0
b3JDbGlja2VkKSB7CisgICAgICAgIFtbc2VsZi52aWV3IF9mb3JtSW5wdXRTZXNzaW9uXSBzZXRD
dXN0b21JbnB1dFZpZXc6X3BpY2tlclZpZXcuZ2V0KCldOworICAgICAgICBbX3BpY2tlclZpZXcg
c2VsZWN0Um93OjAgaW5Db21wb25lbnQ6MCBhbmltYXRlZDpOT107CisgICAgfSBlbHNlCisgICAg
ICAgIFtbc2VsZi52aWV3IF9mb3JtSW5wdXRTZXNzaW9uXSBzZXRTdWdnZXN0aW9uczpbc2VsZiB0
ZXh0U3VnZ2VzdGlvbnNdXTsKK30KKworLSAoTlNJbnRlZ2VyKW51bWJlck9mQ29tcG9uZW50c0lu
UGlja2VyVmlldzooVUlQaWNrZXJWaWV3ICopcGlja2VyVmlldworeworICAgIHJldHVybiAxOwor
fQorCistIChOU0ludGVnZXIpcGlja2VyVmlldzooVUlQaWNrZXJWaWV3ICopcGlja2VyVmlldyBu
dW1iZXJPZlJvd3NJbkNvbXBvbmVudDooTlNJbnRlZ2VyKWNvbHVtbkluZGV4Cit7CisgICAgcmV0
dXJuIFtzZWxmIHN1Z2dlc3Rpb25zQ291bnRdOworfQorCistIChOU1N0cmluZyAqKXBpY2tlclZp
ZXc6KFVJUGlja2VyVmlldyAqKXBpY2tlclZpZXcgdGl0bGVGb3JSb3c6KE5TSW50ZWdlcilyb3cg
Zm9yQ29tcG9uZW50OihOU0ludGVnZXIpY29tcG9uZW50Cit7CisgICAgcmV0dXJuIFtzZWxmIHN1
Z2dlc3Rpb25BdEluZGV4OnJvd107Cit9CisKKy0gKHZvaWQpaW52YWxpZGF0ZQoreworICAgIGlm
IChbW3NlbGYudmlldyBfZm9ybUlucHV0U2Vzc2lvbl0gY3VzdG9tSW5wdXRWaWV3XSA9PSBfcGlj
a2VyVmlldy5nZXQoKSkKKyAgICAgICAgW1tzZWxmLnZpZXcgX2Zvcm1JbnB1dFNlc3Npb25dIHNl
dEN1c3RvbUlucHV0VmlldzpuaWxdOworCisgICAgW19waWNrZXJWaWV3IHNldERlbGVnYXRlOm5p
bF07CisgICAgW19waWNrZXJWaWV3IHNldERhdGFTb3VyY2U6bmlsXTsKKyAgICBbX3BpY2tlclZp
ZXcgc2V0Q29udHJvbDpuaWxdOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS0RhdGFM
aXN0U3VnZ2VzdGlvbnNQaWNrZXJWaWV3CisKKy0gKFVJVmlldyAqKWNvbnRyb2xWaWV3Cit7Cisg
ICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpY29udHJvbEJlZ2luRWRpdGluZworeworfQor
CistICh2b2lkKWNvbnRyb2xFbmRFZGl0aW5nCit7CisgICAgW3NlbGYuY29udHJvbCBkaWRTZWxl
Y3RPcHRpb25BdEluZGV4OltzZWxmIHNlbGVjdGVkUm93SW5Db21wb25lbnQ6MF1dOworfQorCitA
ZW5kCisKKyNwcmFnbWEgbWFyayAtIFdLRGF0YUxpc3RTdWdnZXN0aW9uc1BvcG92ZXIKKworQGlt
cGxlbWVudGF0aW9uIFdLRGF0YUxpc3RTdWdnZXN0aW9uc1BvcG92ZXIgIHsKKyAgICBSZXRhaW5Q
dHI8V0tGb3JtUm90YXRpbmdBY2Nlc3NvcnlQb3BvdmVyPiBfcG9wb3ZlcjsKKyAgICBSZXRhaW5Q
dHI8V0tEYXRhTGlzdFN1Z2dlc3Rpb25zVmlld0NvbnRyb2xsZXI+IF9zdWdnZXN0aW9uc1ZpZXdD
b250cm9sbGVyOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJbmZvcm1hdGlvbjooV2Vi
Q29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24mJilpbmZvcm1hdGlvbiBpblZpZXc6
KFdLQ29udGVudFZpZXcgKil2aWV3Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0
aEluZm9ybWF0aW9uOldURk1vdmUoaW5mb3JtYXRpb24pIGluVmlldzp2aWV3XSkpCisgICAgICAg
IHJldHVybiBuaWw7CisKKyAgICBfcG9wb3ZlciA9IGFkb3B0TlMoW1tXS0Zvcm1Sb3RhdGluZ0Fj
Y2Vzc29yeVBvcG92ZXIgYWxsb2NdIGluaXRXaXRoVmlldzp2aWV3XSk7CisKKyAgICByZXR1cm4g
c2VsZjsKK30KKworLSAodm9pZCl1cGRhdGVXaXRoSW5mb3JtYXRpb246KFdlYkNvcmU6OkRhdGFM
aXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uJiYpaW5mb3JtYXRpb24KK3sKKyAgICBbc3VwZXIgdXBk
YXRlV2l0aEluZm9ybWF0aW9uOldURk1vdmUoaW5mb3JtYXRpb24pXTsKKyAgICBbX3N1Z2dlc3Rp
b25zVmlld0NvbnRyb2xsZXIgcmVsb2FkRGF0YV07CisgICAgW1tzZWxmLnZpZXcgX2Zvcm1JbnB1
dFNlc3Npb25dIHNldFN1Z2dlc3Rpb25zOltzZWxmIHRleHRTdWdnZXN0aW9uc11dOworfQorCist
ICh2b2lkKXNob3dTdWdnZXN0aW9uc0Ryb3Bkb3duOihXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2Vz
dGlvbnNEcm9wZG93bklPUyAqKWRyb3Bkb3duIGFjdGl2YXRpb25UeXBlOihXZWJDb3JlOjpEYXRh
TGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9uVHlwZSlhY3RpdmF0aW9uVHlwZQoreworICAgIFtzdXBl
ciBzaG93U3VnZ2VzdGlvbnNEcm9wZG93bjpkcm9wZG93biBhY3RpdmF0aW9uVHlwZTphY3RpdmF0
aW9uVHlwZV07CisKKyAgICBfc3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1tX
S0RhdGFMaXN0U3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhTdHlsZTpV
SVRhYmxlVmlld1N0eWxlUGxhaW5dKTsKKyAgICBbX3N1Z2dlc3Rpb25zVmlld0NvbnRyb2xsZXIg
c2V0Q29udHJvbDpzZWxmXTsKKyAgICBbX3N1Z2dlc3Rpb25zVmlld0NvbnRyb2xsZXIgcmVsb2Fk
RGF0YV07CisgICAgW1tzZWxmLnZpZXcgX2Zvcm1JbnB1dFNlc3Npb25dIHNldFN1Z2dlc3Rpb25z
OltzZWxmIHRleHRTdWdnZXN0aW9uc11dOworCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVz
aAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJh
dGlvbnMiCisgICAgW19wb3BvdmVyIHNldFBvcG92ZXJDb250cm9sbGVyOltbW1VJUG9wb3ZlckNv
bnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoQ29udGVudFZpZXdDb250cm9sbGVyOl9zdWdnZXN0aW9u
c1ZpZXdDb250cm9sbGVyLmdldCgpXSBhdXRvcmVsZWFzZV1dOworI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIHBvcAorCisgICAgW19wb3BvdmVyIHByZXNlbnRQb3BvdmVyQW5pbWF0ZWQ6Tk9dOwor
fQorCistICh2b2lkKWludmFsaWRhdGUKK3sKKyAgICBbX3N1Z2dlc3Rpb25zVmlld0NvbnRyb2xs
ZXIgc2V0Q29udHJvbDpuaWxdOworfQorCistICh2b2lkKWRpZFNlbGVjdE9wdGlvbkF0SW5kZXg6
KE5TSW50ZWdlcilpbmRleAoreworICAgIFtzdXBlciBkaWRTZWxlY3RPcHRpb25BdEluZGV4Omlu
ZGV4XTsKKyAgICBbW19wb3BvdmVyIHBvcG92ZXJDb250cm9sbGVyXSBkaXNtaXNzUG9wb3ZlckFu
aW1hdGVkOllFU107CisgICAgW1tzZWxmLnZpZXcgX2Zvcm1JbnB1dFNlc3Npb25dIHNldFN1Z2dl
c3Rpb25zOkBbIFtXS0RhdGFMaXN0VGV4dFN1Z2dlc3Rpb24gdGV4dFN1Z2dlc3Rpb25XaXRoSW5w
dXRUZXh0OltzZWxmIHN1Z2dlc3Rpb25BdEluZGV4OmluZGV4XV0gXV07Cit9CisKK0BlbmQKKwor
QGltcGxlbWVudGF0aW9uIFdLRGF0YUxpc3RTdWdnZXN0aW9uc1ZpZXdDb250cm9sbGVyCisKKy0g
KHZvaWQpcmVsb2FkRGF0YQoreworICAgIFtzZWxmLnRhYmxlVmlldyByZWxvYWREYXRhXTsKKyAg
ICBbc2VsZiBzZXRQcmVmZXJyZWRDb250ZW50U2l6ZTpDR1NpemVNYWtlKHN1Z2dlc3Rpb25zUG9w
b3ZlcldpZHRoLCBtYXhWaXNpYmxlU3VnZ2VzdGlvbnMgKiBzdWdnZXN0aW9uc1BvcG92ZXJDZWxs
SGVpZ2h0ICsgc3VnZ2VzdGlvbnNQb3BvdmVyQ2VsbEhlaWdodCAvIDIpXTsKK30KKworLSAoTlNJ
bnRlZ2VyKXRhYmxlVmlldzooVUlUYWJsZVZpZXcgKil0YWJsZVZpZXcgbnVtYmVyT2ZSb3dzSW5T
ZWN0aW9uOihOU0ludGVnZXIpc2VjdGlvbgoreworICAgIHJldHVybiBbc2VsZi5jb250cm9sIHN1
Z2dlc3Rpb25zQ291bnRdOworfQorCistIChVSVRhYmxlVmlld0NlbGwgKil0YWJsZVZpZXc6KFVJ
VGFibGVWaWV3ICopdGFibGVWaWV3IGNlbGxGb3JSb3dBdEluZGV4UGF0aDooTlNJbmRleFBhdGgg
KilpbmRleFBhdGgKK3sKKyAgICBVSVRhYmxlVmlld0NlbGwgKmNlbGwgPSBbdGFibGVWaWV3IGRl
cXVldWVSZXVzYWJsZUNlbGxXaXRoSWRlbnRpZmllcjpzdWdnZXN0aW9uQ2VsbFJldXNlSWRlbnRp
Zmllcl07CisgICAgaWYgKCFjZWxsKQorICAgICAgICBjZWxsID0gW1tbVUlUYWJsZVZpZXdDZWxs
IGFsbG9jXSBpbml0V2l0aFN0eWxlOlVJVGFibGVWaWV3Q2VsbFN0eWxlRGVmYXVsdCByZXVzZUlk
ZW50aWZpZXI6c3VnZ2VzdGlvbkNlbGxSZXVzZUlkZW50aWZpZXJdIGF1dG9yZWxlYXNlXTsKKwor
ICAgIGNlbGwudGV4dExhYmVsLnRleHQgPSBbc2VsZi5jb250cm9sIHN1Z2dlc3Rpb25BdEluZGV4
OmluZGV4UGF0aC5yb3ddOworICAgIGNlbGwudGV4dExhYmVsLmxpbmVCcmVha01vZGUgPSBOU0xp
bmVCcmVha0J5VHJ1bmNhdGluZ1RhaWw7CisgICAgY2VsbC50ZXh0TGFiZWwudGV4dEFsaWdubWVu
dCA9IFtzZWxmLmNvbnRyb2wgdGV4dEFsaWdubWVudF07CisKKyAgICByZXR1cm4gY2VsbDsKK30K
KworLSAodm9pZCl0YWJsZVZpZXc6KFVJVGFibGVWaWV3ICopdGFibGVWaWV3IGRpZFNlbGVjdFJv
d0F0SW5kZXhQYXRoOihOU0luZGV4UGF0aCAqKWluZGV4UGF0aAoreworICAgIFtzZWxmLmNvbnRy
b2wgZGlkU2VsZWN0T3B0aW9uQXRJbmRleDppbmRleFBhdGgucm93XTsKK30KKworQGVuZAorCisj
ZW5kaWYgLy8gRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpICYmIFBMQVRGT1JNKElPUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25z
RHJvcGRvd25NYWMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJEYXRhTGlzdFN1
Z2dlc3Rpb25zRHJvcGRvd25NYWMuaAppbmRleCAwMThjYzZiMmNmMGMxNTA2M2I1YzI4NjRiYjI3
NTExY2Y2MjNlOTg1Li44MGJmOTQ4MTFkYzI0NDkxNWNhNTU0NDAyNTViZjg4MGNlZjBlMWZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViRGF0YUxpc3RTdWdnZXN0
aW9uc0Ryb3Bkb3duTWFjLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkRh
dGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1hYy5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1hYz4gY3JlYXRl
KFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bjo6Q2xpZW50JiwgTlNWaWV3ICopOwogICAg
IH5XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWMoKTsKIAotICAgIHZvaWQgZGlkU2Vs
ZWN0T3B0aW9uKFN0cmluZyYpOworICAgIHZvaWQgZGlkU2VsZWN0T3B0aW9uKGNvbnN0IFN0cmlu
ZyYpOwogCiBwcml2YXRlOgogICAgIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1hYyhX
ZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd246OkNsaWVudCYsIE5TVmlldyAqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25z
RHJvcGRvd25NYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViRGF0YUxpc3RT
dWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tCmluZGV4IDRlODYxOTEwMWJhZTllZTU0YjEzODRhNWIw
NDUwMjBmY2E4NDA5M2MuLjNlNzk1ZmViNTA5OWNhZDQ5NDMxYWZmMGM3YTc1MDJkMGFiNGEwZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJEYXRhTGlzdFN1Z2dl
c3Rpb25zRHJvcGRvd25NYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dl
YkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1hYy5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZv
aWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjOjpzaG93KFdlYkNvcmU6OkRhdGFM
aXN0U3VnZ2VzdGlvbkluZm9ybWF0CiAgICAgW21fZHJvcGRvd25VSSBzaG93U3VnZ2VzdGlvbnNE
cm9wZG93bjp0aGlzXTsKIH0KIAotdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25N
YWM6OmRpZFNlbGVjdE9wdGlvbihTdHJpbmcmIHNlbGVjdGVkT3B0aW9uKQordm9pZCBXZWJEYXRh
TGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWM6OmRpZFNlbGVjdE9wdGlvbihjb25zdCBTdHJpbmcm
IHNlbGVjdGVkT3B0aW9uKQogewogICAgIGlmICghbV9jbGllbnQpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDkzODQ0M2IxMDJjOWM3YTJiMzQ4NTg1NjBiYjA4NDhmNDc3YjY4NDkuLmQzZjhiOWVhOWI5MjM3
YjA1MTYwZTU3MmE2ZTg1MGNlMzY0NTk3ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTgxMSw2ICsxODExLDcgQEAKIAkJRTU0OEVC
RDEyMTAxNUYwRTAwQkUzQzMyIC8qIFdLRm9ybUNvbG9yUGlja2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNTQ4RUJDRjIxMDE1RjBFMDBCRTNDMzIg
LyogV0tGb3JtQ29sb3JQaWNrZXIuaCAqLzsgfTsKIAkJRTU2OEI5MUYyMEEzQUIyRjAwRTNDODU2
IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTU2OEI5MUUyMEEzQUIyRjAwRTNDODU2IC8qIFdl
YkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bi5oICovOyB9OwogCQlFNTY4QjkyMjIwQTNBQzZB
MDBFM0M4NTYgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNTY4QjkyMDIwQTNBQzZBMDBF
M0M4NTYgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLmggKi87IH07CisJCUU1
QkVGNjgyMjEzMEM0ODAwMEYzMTExMSAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25J
T1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU1QkVG
NjgwMjEzMEM0N0YwMEYzMTExMSAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1Mu
aCAqLzsgfTsKIAkJRTVDQjA3REMyMEUxNjc4RjAwMjJDMTgzIC8qIFdLRm9ybUNvbG9yQ29udHJv
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTVDQjA3
REEyMEUxNjc4RjAwMjJDMTgzIC8qIFdLRm9ybUNvbG9yQ29udHJvbC5oICovOyB9OwogCQlFQ0E2
ODBEODFFNjkwRTI1MDA3MzFEMjAgLyogV2ViUHJvY2Vzc0NvY29hLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQ0E2ODBENzFFNjkwREY4MDA3MzFEMjAg
LyogV2ViUHJvY2Vzc0NvY29hLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRUQ4MkE3RjIxMjhDNkZBRjAwNDQ3N0IzIC8qIFdLQnVuZGxlUGFnZU92
ZXJsYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
MjJGMEZGMTI4OUZDRDkwMDg1RTc0RiAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ2NTYsNiArNDY1Nyw4
IEBACiAJCUU1NjhCOTFFMjBBM0FCMkYwMEUzQzg1NiAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25z
RHJvcGRvd24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3du
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU1NjhCOTIwMjBBM0FDNkEwMEUzQzg1
NiAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUU1NjhCOTIxMjBBM0FDNkEwMEUzQzg1NiAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rp
b25zRHJvcGRvd25NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRG
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkRhdGFMaXN0U3VnZ2Vz
dGlvbnNEcm9wZG93bk1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTVCRUY2
ODAyMTMwQzQ3RjAwRjMxMTExIC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25z
RHJvcGRvd25JT1MuaDsgcGF0aCA9IGlvcy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25J
T1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTVCRUY2ODEyMTMwQzQ3RjAwRjMx
MTExIC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93
bklPUy5tbTsgcGF0aCA9IGlvcy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU1Q0IwN0RBMjBFMTY3OEYwMDIyQzE4MyAv
KiBXS0Zvcm1Db2xvckNvbnRyb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tGb3JtQ29sb3JDb250cm9s
Lmg7IHBhdGggPSBpb3MvZm9ybXMvV0tGb3JtQ29sb3JDb250cm9sLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUU1Q0IwN0RCMjBFMTY3OEYwMDIyQzE4MyAvKiBXS0Zvcm1Db2xvckNv
bnRyb2wubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0Zvcm1Db2xvckNvbnRyb2wubW07IHBh
dGggPSBpb3MvZm9ybXMvV0tGb3JtQ29sb3JDb250cm9sLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFQ0E2ODBEMzFFNjkwNEI1MDA3MzFEMjAgLyogRXh0cmFQcml2YXRlU3ltYm9s
c0ZvclRBUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0cmFQcml2YXRl
U3ltYm9sc0ZvclRBUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU5NzcsNiAr
NTk4MCw4IEBACiAJCQkJMkRBRjA2RDUxOEJEMUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNh
dGlvbkNvbnRyb2xsZXIubW0gKi8sCiAJCQkJMkRBOTQ0QTkxODg0RTlCQTAwRUQ4NkRCIC8qIFRl
eHRDaGVja2VySU9TLm1tICovLAogCQkJCTJERjk1OTM0MThBNDI0MTIwMDk3ODVBMSAvKiBWaWV3
R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0gKi8sCisJCQkJRTVCRUY2ODAyMTMwQzQ3RjAwRjMxMTEx
IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5oICovLAorCQkJCUU1QkVGNjgx
MjEzMEM0N0YwMEYzMTExMSAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW0g
Ki8sCiAJCQkJMkQzRUY0NDExOTE3NjQ2MzAwMDM0MTg0IC8qIFdlYk1lbW9yeVByZXNzdXJlSGFu
ZGxlcklPUy5oICovLAogCQkJCTJEM0VGNDQwMTkxNzY0NjMwMDAzNDE4NCAvKiBXZWJNZW1vcnlQ
cmVzc3VyZUhhbmRsZXJJT1MubW0gKi8sCiAJCQkJMkRBOTQ0QUIxODg0RTlCQTAwRUQ4NkRCIC8q
IFdlYlBhZ2VQcm94eUlPUy5tbSAqLywKQEAgLTk1MTAsNiArOTUxNSw3IEBACiAJCQkJMUFBODNG
NkQxQTVCNjNGRjAwMDI2RUM2IC8qIFdlYkRhdGFiYXNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUU1MkNGNTUyMjBBMzVDM0EwMERBREEyNyAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25Q
aWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU1NjhCOTFGMjBBM0FCMkYwMEUzQzg1NiAvKiBX
ZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24uaCBpbiBIZWFkZXJzICovLAorCQkJCUU1QkVG
NjgyMjEzMEM0ODAwMEYzMTExMSAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1Mu
aCBpbiBIZWFkZXJzICovLAogCQkJCUU1NjhCOTIyMjBBM0FDNkEwMEUzQzg1NiAvKiBXZWJEYXRh
TGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMTlBMjZF
MUExM0U4MzQwMDhENjUwRSAvKiBXZWJEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUE1QjFDNTUxODk4N0VERjAwNEZDRjlCIC8qIFdlYkRvY3VtZW50TG9hZGVy
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggYjc0NWFlYzhkNzU0NjUzZjMwMjQ0ZTFlNWNjMTNlNWQxZDIwODYzNS4u
M2NjYTgyMTBiODc0Y2ExNmQ0MTNlYTEwMDE2YjZlZGY2ODQ4YzZmZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM1OTMsNyArMzU5Myw4IEBA
IHZvaWQgV2ViUGFnZTo6ZGlkU2VsZWN0RGF0YUxpc3RPcHRpb24oY29uc3QgU3RyaW5nJiBzZWxl
Y3RlZE9wdGlvbikKIAogdm9pZCBXZWJQYWdlOjpkaWRDbG9zZVN1Z2dlc3Rpb25zKCkKIHsKLSAg
ICBtX2FjdGl2ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci0+ZGlkQ2xvc2VTdWdnZXN0aW9ucygp
OworICAgIGlmIChtX2FjdGl2ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcikKKyAgICAgICAgbV9h
Y3RpdmVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXItPmRpZENsb3NlU3VnZ2VzdGlvbnMoKTsKICAg
ICBtX2FjdGl2ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlciA9IG51bGxwdHI7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5k
ZXggYWU1OGUwOTA0ZThkNGRiOWE5NTg1NmQ2MjNmMDAyMDVlNWQ4ZTEyZS4uYTk0NzYzYmYxMzY2
OGUxODE4ZDg4MjE1MjViN2FhODlkYjJlYjdjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTIyMDksNiArMjIwOSwxOCBA
QCB2b2lkIFdlYlBhZ2U6OmdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25J
bmZvcm1hdGlvblJlcXVlc3QmIHJlcXVlcwogICAgICAgICB9CiAgICAgfQogCisgICAgLy8gUHJl
dmVudCB0aGUgY2FsbG91dCBiYXIgZnJvbSBzaG93aW5nIHdoZW4gdGFwcGluZyBvbiB0aGUgZGF0
YWxpc3QgYnV0dG9uLgorI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIGlmIChpczxI
VE1MSW5wdXRFbGVtZW50PigqaGl0Tm9kZSkpIHsKKyAgICAgICAgY29uc3QgSFRNTElucHV0RWxl
bWVudCYgaW5wdXQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqaGl0Tm9kZSk7CisgICAg
ICAgIGlmIChpbnB1dC5saXN0KCkpIHsKKyAgICAgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0
ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2lu
dChyZXF1ZXN0LnBvaW50LCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVz
dDo6QWN0aXZlKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuaW5uZXJOb2RlKCkgPT0gaW5wdXQu
ZGF0YUxpc3RCdXR0b25FbGVtZW50KCkpCisgICAgICAgICAgICAgICAgaW5mby5wcmV2ZW50VGV4
dEludGVyYWN0aW9uID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCiAjaWYgRU5B
QkxFKERBVEFfSU5URVJBQ1RJT04pCiAgICAgaW5mby5oYXNTZWxlY3Rpb25BdFBvc2l0aW9uID0g
bV9wYWdlLT5oYXNTZWxlY3Rpb25BdFBvc2l0aW9uKGFkanVzdGVkUG9pbnQpOwogI2VuZGlmCkBA
IC0yNDc3LDYgKzI0ODksOSBAQCB2b2lkIFdlYlBhZ2U6OmdldEFzc2lzdGVkTm9kZUluZm9ybWF0
aW9uKEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uJiBpbmZvcm1hdGlvbikKICAgICAgICAgfQogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICAgICAgaW5mb3JtYXRpb24u
aGFzU3VnZ2VzdGlvbnMgPSAhIWVsZW1lbnQubGlzdCgpOworI2VuZGlmCiAgICAgICAgIGluZm9y
bWF0aW9uLmlucHV0TW9kZSA9IGVsZW1lbnQuY2Fub25pY2FsSW5wdXRNb2RlKCk7CiAgICAgICAg
IGluZm9ybWF0aW9uLmlzUmVhZE9ubHkgPSBlbGVtZW50LmlzUmVhZE9ubHkoKTsKICAgICAgICAg
aW5mb3JtYXRpb24udmFsdWUgPSBlbGVtZW50LnZhbHVlKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>