<?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>123109</bug_id>
          
          <creation_ts>2013-10-21 11:45:59 -0700</creation_ts>
          <short_desc>[Cocoa] Back/forward list UI process API</short_desc>
          <delta_ts>2013-10-22 17:48: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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>941942</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2013-10-21 11:45:59 -0700</bug_when>
    <thetext>Expose the back/forward list via the UI process Cocoa API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941974</commentid>
    <comment_count>1</comment_count>
      <attachid>214765</attachid>
    <who name="">mitz</who>
    <bug_when>2013-10-21 12:40:26 -0700</bug_when>
    <thetext>Created attachment 214765
Add WKBackForwardList and WKBackForwardListItem</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941976</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-21 12:42:15 -0700</bug_when>
    <thetext>Attachment 214765 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/Shared/Cocoa/WKNSArray.h&apos;, u&apos;Source/WebKit2/Shared/Cocoa/WKNSArray.mm&apos;, u&apos;Source/WebKit2/Shared/Cocoa/WKNSObjectExtras.h&apos;, u&apos;Source/WebKit2/Shared/Cocoa/WKNSObjectExtras.mm&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKBackForwardList.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKBackForwardList.h&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKBackForwardListItem.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKBackForwardListItem.h&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKBackForwardListItemRef.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKBackForwardListItemRef.h&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKBackForwardListRef.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKBackForwardListRef.h&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WebKit2_C.h&apos;, u&apos;Source/WebKit2/UIProcess/API/mac/WKBrowsingContextController.h&apos;, u&apos;Source/WebKit2/UIProcess/API/mac/WKBrowsingContextController.mm&apos;, u&apos;Source/WebKit2/UIProcess/Cocoa/WKBackForwardList.h&apos;, u&apos;Source/WebKit2/UIProcess/Cocoa/WKBackForwardList.mm&apos;, u&apos;Source/WebKit2/UIProcess/Cocoa/WKBackForwardListInternal.h&apos;, u&apos;Source/WebKit2/UIProcess/Cocoa/WKBackForwardListItem.h&apos;, u&apos;Source/WebKit2/UIProcess/Cocoa/WKBackForwardListItem.mm&apos;, u&apos;Source/WebKit2/UIProcess/Cocoa/WKBackForwardListItemInternal.h&apos;, u&apos;Source/WebKit2/WebKit2.xcodeproj/project.pbxproj&apos;]&quot; exit_code: 1
Source/WebKit2/UIProcess/Cocoa/WKBackForwardList.h:37:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/Cocoa/WKBackForwardList.h:38:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/Cocoa/WKBackForwardList.h:39:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/Cocoa/WKBackForwardList.h:43:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/Cocoa/WKBackForwardList.h:44:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/Shared/Cocoa/WKNSObjectExtras.h:34:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/API/C/WebKit2_C.h:33:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit2/UIProcess/Cocoa/WKBackForwardListItem.h:36:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/Cocoa/WKBackForwardListItem.h:37:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/Cocoa/WKBackForwardListItem.h:38:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/Cocoa/WKBackForwardListItemInternal.h:34:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/API/C/WKBackForwardListRef.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit2/UIProcess/Cocoa/WKBackForwardListInternal.h:34:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 13 in 19 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>941980</commentid>
    <comment_count>3</comment_count>
      <attachid>214765</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-21 12:58:06 -0700</bug_when>
    <thetext>Comment on attachment 214765
Add WKBackForwardList and WKBackForwardListItem

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

&gt; Source/WebKit2/Shared/Cocoa/WKNSObjectExtras.mm:50
&gt; +    if (!(self = [super init]))
&gt; +        return nil;

Should we “unique” these wrappers instead so that == works and we don’t have to implement isEqual: and hash? Or is the locking needed for that too slow?

&gt; Source/WebKit2/Shared/Cocoa/WKNSObjectExtras.mm:69
&gt; +    return (NSUInteger)&amp;*_object;

Is &amp;* really better syntax to use than get()? Should we get rid of get() maybe?

&gt; Source/WebKit2/Shared/Cocoa/WKNSObjectExtras.mm:88
&gt; +    switch (object-&gt;type()) {

We could do this kind of thing inside [WKObject initWithAPIObject:] instead of doing it like this.

&gt; Source/WebKit2/UIProcess/API/mac/WKBrowsingContextController.mm:261
&gt; +    if (WebBackForwardList* list = toImpl(self._pageRef)-&gt;backForwardList())
&gt; +        return [[[WKBackForwardList alloc] _initWithList:*list] autorelease];
&gt; +
&gt; +    return nil;

Most other similar methods in this patch are using early return. I think that would be better here too.

&gt; Source/WebKit2/UIProcess/Cocoa/WKBackForwardList.mm:46
&gt; +    return  [[[WKBackForwardListItem alloc] _initWithItem:*item] autorelease];

two spaces

&gt; Source/WebKit2/UIProcess/Cocoa/WKBackForwardListItem.mm:48
&gt; +    return CFBridgingRelease(WKURLCopyCFURL(kCFAllocatorDefault, adoptWK(toCopiedURLAPI(_item-&gt;url())).get()));

kCFAllocatorDefault has to be the most annoying long way to say “do the normal thing” in all of Apple API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941984</commentid>
    <comment_count>4</comment_count>
      <attachid>214765</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-21 13:07:43 -0700</bug_when>
    <thetext>Comment on attachment 214765
Add WKBackForwardList and WKBackForwardListItem

Attachment 214765 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/8908074</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942004</commentid>
    <comment_count>5</comment_count>
      <attachid>214765</attachid>
    <who name="">mitz</who>
    <bug_when>2013-10-21 13:32:10 -0700</bug_when>
    <thetext>Comment on attachment 214765
Add WKBackForwardList and WKBackForwardListItem

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

Thanks for the review. I am going to address some of your comments (see below) and fix other builds and post a new patch.

&gt;&gt; Source/WebKit2/Shared/Cocoa/WKNSObjectExtras.mm:50
&gt;&gt; +        return nil;
&gt; 
&gt; Should we “unique” these wrappers instead so that == works and we don’t have to implement isEqual: and hash? Or is the locking needed for that too slow?

I don’t think the non-uniqueness is going to turn into a problem. We can consider how to address it if it does.

&gt;&gt; Source/WebKit2/Shared/Cocoa/WKNSObjectExtras.mm:69
&gt;&gt; +    return (NSUInteger)&amp;*_object;
&gt; 
&gt; Is &amp;* really better syntax to use than get()? Should we get rid of get() maybe?

Not sure why I wrote it this way. I will change to get().

&gt;&gt; Source/WebKit2/Shared/Cocoa/WKNSObjectExtras.mm:88
&gt;&gt; +    switch (object-&gt;type()) {
&gt; 
&gt; We could do this kind of thing inside [WKObject initWithAPIObject:] instead of doing it like this.

By then we’d have already allocated a WKObject which we’d need to deallocate if we wanted to return an instance of a different class.

&gt;&gt; Source/WebKit2/UIProcess/API/mac/WKBrowsingContextController.mm:261
&gt;&gt; +    return nil;
&gt; 
&gt; Most other similar methods in this patch are using early return. I think that would be better here too.

I will change that.

&gt;&gt; Source/WebKit2/UIProcess/Cocoa/WKBackForwardList.mm:46
&gt;&gt; +    return  [[[WKBackForwardListItem alloc] _initWithItem:*item] autorelease];
&gt; 
&gt; two spaces

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942008</commentid>
    <comment_count>6</comment_count>
      <attachid>214773</attachid>
    <who name="">mitz</who>
    <bug_when>2013-10-21 13:38:26 -0700</bug_when>
    <thetext>Created attachment 214773
Add WKBackForwardList and WKBackForwardListItem</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942010</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-21 13:40:40 -0700</bug_when>
    <thetext>Attachment 214773 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/CMakeLists.txt&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/GNUmakefile.list.am&apos;, u&apos;Source/WebKit2/Shared/Cocoa/WKNSArray.h&apos;, u&apos;Source/WebKit2/Shared/Cocoa/WKNSArray.mm&apos;, u&apos;Source/WebKit2/Shared/Cocoa/WKNSObjectExtras.h&apos;, u&apos;Source/WebKit2/Shared/Cocoa/WKNSObjectExtras.mm&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKBackForwardList.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKBackForwardList.h&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKBackForwardListItem.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKBackForwardListItem.h&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKBackForwardListItemRef.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKBackForwardListItemRef.h&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKBackForwardListRef.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKBackForwardListRef.h&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WebKit2_C.h&apos;, u&apos;Source/WebKit2/UIProcess/API/efl/ewk_back_forward_list.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/efl/ewk_back_forward_list_item.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/mac/WKBrowsingContextController.h&apos;, u&apos;Source/WebKit2/UIProcess/API/mac/WKBrowsingContextController.mm&apos;, u&apos;Source/WebKit2/UIProcess/Cocoa/WKBackForwardList.h&apos;, u&apos;Source/WebKit2/UIProcess/Cocoa/WKBackForwardList.mm&apos;, u&apos;Source/WebKit2/UIProcess/Cocoa/WKBackForwardListInternal.h&apos;, u&apos;Source/WebKit2/UIProcess/Cocoa/WKBackForwardListItem.h&apos;, u&apos;Source/WebKit2/UIProcess/Cocoa/WKBackForwardListItem.mm&apos;, u&apos;Source/WebKit2/UIProcess/Cocoa/WKBackForwardListItemInternal.h&apos;, u&apos;Source/WebKit2/WebKit2.xcodeproj/project.pbxproj&apos;]&quot; exit_code: 1
Source/WebKit2/UIProcess/Cocoa/WKBackForwardList.h:37:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/Cocoa/WKBackForwardList.h:38:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/Cocoa/WKBackForwardList.h:39:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/Cocoa/WKBackForwardList.h:43:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/Cocoa/WKBackForwardList.h:44:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/Shared/Cocoa/WKNSObjectExtras.h:34:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/API/C/WebKit2_C.h:33:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit2/CMakeLists.txt:356:  Alphabetical sorting problem. &quot;UIProcess/API/C/WKBackForwardListItemRef.cpp&quot; should be before &quot;UIProcess/API/C/WKBackForwardListRef.cpp&quot;.  [list/order] [5]
Source/WebKit2/UIProcess/Cocoa/WKBackForwardListItem.h:36:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/Cocoa/WKBackForwardListItem.h:37:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/Cocoa/WKBackForwardListItem.h:38:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/Cocoa/WKBackForwardListItemInternal.h:34:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/API/C/WKBackForwardListRef.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit2/UIProcess/Cocoa/WKBackForwardListInternal.h:34:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 14 in 23 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>942017</commentid>
    <comment_count>8</comment_count>
    <who name="">mitz</who>
    <bug_when>2013-10-21 14:01:51 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Attachment 214773 [details] did not pass style-queue:
[…]
 &gt; Source/WebKit2/UIProcess/Cocoa/WKBackForwardList.h:37:  Extra space before ( in function call  [whitespace/parens] [4]
[…]
 &gt; If any of these errors are false positives, please file a bug against check-webkit-style.

Filed bug 123117.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942036</commentid>
    <comment_count>9</comment_count>
    <who name="">mitz</who>
    <bug_when>2013-10-21 15:08:27 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r157748&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942089</commentid>
    <comment_count>10</comment_count>
      <attachid>214765</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-21 17:00:58 -0700</bug_when>
    <thetext>Comment on attachment 214765
Add WKBackForwardList and WKBackForwardListItem

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

&gt;&gt;&gt; Source/WebKit2/Shared/Cocoa/WKNSObjectExtras.mm:88
&gt;&gt;&gt; +    switch (object-&gt;type()) {
&gt;&gt; 
&gt;&gt; We could do this kind of thing inside [WKObject initWithAPIObject:] instead of doing it like this.
&gt; 
&gt; By then we’d have already allocated a WKObject which we’d need to deallocate if we wanted to return an instance of a different class.

Agreed. That is a common pattern, though, used by, for example, Foundation class clusters. I guess if we don’t have to do the extra allocation then it’s nice not to.

Should we have some assertions in WKObject initWithAPIObject: to make sure we never blow it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942121</commentid>
    <comment_count>11</comment_count>
    <who name="">mitz</who>
    <bug_when>2013-10-21 18:44:59 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 214765 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=214765&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit2/Shared/Cocoa/WKNSObjectExtras.mm:88
&gt; &gt;&gt;&gt; +    switch (object-&gt;type()) {
&gt; &gt;&gt; 
&gt; &gt;&gt; We could do this kind of thing inside [WKObject initWithAPIObject:] instead of doing it like this.
&gt; &gt; 
&gt; &gt; By then we’d have already allocated a WKObject which we’d need to deallocate if we wanted to return an instance of a different class.
&gt; 
&gt; Agreed. That is a common pattern, though, used by, for example, Foundation class clusters. I guess if we don’t have to do the extra allocation then it’s nice not to.

A common pattern in Foundation class clusters is to override +alloc.

&gt; Should we have some assertions in WKObject initWithAPIObject: to make sure we never blow it?

Sorry, I don’t understand. Can you give me an example of what we could assert?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942492</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-22 17:00:05 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; A common pattern in Foundation class clusters is to override +alloc.

OK. My mistake. I thought there were init methods that deallocated self and allocated a replacement. I thought that was the reason for the &quot;self = [super init]&quot; idiom.

&gt; &gt; Should we have some assertions in WKObject initWithAPIObject: to make sure we never blow it?
&gt; 
&gt; Sorry, I don’t understand. Can you give me an example of what we could assert?

Something like this, perhaps?

ASSERT((_object-&gt;type() == APIObject::TypeBackForwardListItem) == [self isKindOfClass:[WKBackForwardListItem class]]);

Not really sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942535</commentid>
    <comment_count>13</comment_count>
    <who name="">mitz</who>
    <bug_when>2013-10-22 17:48:40 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; A common pattern in Foundation class clusters is to override +alloc.
&gt; 
&gt; OK. My mistake. I thought there were init methods that deallocated self and allocated a replacement. I thought that was the reason for the &quot;self = [super init]&quot; idiom.
&gt; 
&gt; &gt; &gt; Should we have some assertions in WKObject initWithAPIObject: to make sure we never blow it?
&gt; &gt; 
&gt; &gt; Sorry, I don’t understand. Can you give me an example of what we could assert?
&gt; 
&gt; Something like this, perhaps?
&gt; 
&gt; ASSERT((_object-&gt;type() == APIObject::TypeBackForwardListItem) == [self isKindOfClass:[WKBackForwardListItem class]]);
&gt; 
&gt; Not really sure.

Darin explained to me in person that the motivation is to ensure that generic wrappers aren’t created when a specific wrapper should be created. I noted that the only code that could make this mistake would have to be in WKNSObjectExtras.m. We can either use better naming or remove -initWithAPIObject: if we want to prevent such mistakes, if we think people could make them.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214765</attachid>
            <date>2013-10-21 12:40:26 -0700</date>
            <delta_ts>2013-10-21 17:00:58 -0700</delta_ts>
            <desc>Add WKBackForwardList and WKBackForwardListItem</desc>
            <filename>bug-123109-20131021124103.patch</filename>
            <type>text/plain</type>
            <size>74351</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzcyMikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBACisyMDEzLTEwLTIxICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBCYWNrL2ZvcndhcmQg
bGlzdCBVSSBwcm9jZXNzIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTIzMTA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTaGFyZWQvQ29jb2E6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9Db2Nv
YS9XS05TQXJyYXkuaDogQWRkZWQuIFdLTlNBcnJheSBpcyBhbiBpbnRlcm5hbCBOU0FycmF5IHN1
YmNsYXNzIGJhY2tlZCBieQorICAgICAgICBhIFdlYktpdDo6SW1tdXRhYmxlQXJyYXkuCisgICAg
ICAgICogU2hhcmVkL0NvY29hL1dLTlNBcnJheS5tbTogQWRkZWQuCisgICAgICAgICgrW1dLTlNB
cnJheSB3ZWJfYXJyYXlXaXRoSW1tdXRhYmxlQXJyYXk6XSk6IEFkZGVkLgorICAgICAgICAoLVtX
S05TQXJyYXkgd2ViX2luaXRXaXRoSW1tdXRhYmxlQXJyYXk6XSk6IEFkZGVkLgorICAgICAgICAo
LVtXS05TQXJyYXkgY291bnRdKTogQWRkZWQuCisgICAgICAgICgtW1dLTlNBcnJheSBvYmplY3RB
dEluZGV4Ol0pOiBBZGRlZC4KKyAgICAgICAgKC1bV0tOU0FycmF5IGNvcHlXaXRoWm9uZTpdKTog
QWRkZWQuCisKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV0tOU09iamVjdEV4dHJhcy5oOiBBZGRl
ZC4gRGVjbGFyZXMgYSBjYXRlZ29yeSBvbiBOU09iamVjdCB0aGF0IGFsbG93cyB1cyB0bworICAg
ICAgICB2ZW5kIFdlYktpdCBBUEkgb2JqZWN0cyBhcyBPYmplY3RpdmUtQyBvYmplY3RzLgorICAg
ICAgICAqIFNoYXJlZC9Db2NvYS9XS05TT2JqZWN0RXh0cmFzLm1tOiBBZGRlZC4KKyAgICAgICAg
KC1bV0tPYmplY3QgaW5pdFdpdGhBUElPYmplY3Q6XSk6IFdLT2JqZWN0IGlzIHRoZSBnZW5lcmlj
IENvY29hIHdyYXBwZXIgZm9yIEFQSSBvYmplY3RzLgorICAgICAgICAoLVtXS09iamVjdCBpc0Vx
dWFsOl0pOiBDaGVjayBmb3IgZXF1YWxpdHkgb2YgdGhlIHVuZGVybHlpbmcgb2JqZWN0LgorICAg
ICAgICAoLVtXS09iamVjdCBoYXNoXSk6IFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIHVuZGVybHlp
bmcgb2JqZWN0LgorICAgICAgICAoLVtXS09iamVjdCBkZXNjcmlwdGlvbl0pOiBBZGRlZC4KKyAg
ICAgICAgKCtbTlNPYmplY3QgX3dlYl9vYmplY3RXaXRoQVBJT2JqZWN0Ol0pOiBBZGRlZC4gUmV0
dXJucyBhbiBhcHByb3ByaWF0ZSBPYmplY3RpdmUtQyBvYmplY3QKKyAgICAgICAgZm9yIHRoZSBn
aXZlbiBBUEkgb2JqZWN0LiBDdXJyZW50bHkgcmV0dXJucyBhIFdLQmFja0ZvcndhcmRMaXN0SXRl
bSBmb3IgYSBiYWNrL2ZvcndhcmQgbGlzdAorICAgICAgICBpdGVtIGFuZCBhIGdlbmVyaWMgV0tP
YmplY3QgZm9yIGFsbCBvdGhlciB0eXBlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S0JhY2tGb3J3YXJkTGlzdC5jcHA6IFJlbmFtZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLQmFja0ZvcndhcmRMaXN0Lmg6IFJlbmFtZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLQmFja0ZvcndhcmRMaXN0SXRlbS5jcHA6IFJlbmFtZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0SXRlbS5oOiBSZW5hbWVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYuY3BwOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RJdGVtLmNwcC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdEl0
ZW0uaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RSZWYuY3Bw
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2Fy
ZExpc3QuY3BwLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdFJl
Zi5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9y
d2FyZExpc3QuaC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XZWJLaXQyX0MuaDogVXBk
YXRlZCBmb3IgaGVhZGVyIHJlbmFtZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9X
S0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIuaDogRGVjbGFyZWQgYmFja0ZvcndhcmRMaXN0IHBy
b3BlcnR5LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIGJhY2tG
b3J3YXJkTGlzdF0pOiBBZGRlZCB0aGlzIGFjY2Vzc29yLgorCisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV0tCYWNrRm9yd2FyZExp
c3QuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dLQmFja0ZvcndhcmRMaXN0
Lm1tOiBBZGRlZC4KKyAgICAgICAgKHRvV0tCYWNrRm9yd2FyZExpc3RJdGVtKTogQWRkZWQgdGhp
cyBoZWxwZXIuCisgICAgICAgICgtW1dLQmFja0ZvcndhcmRMaXN0IGN1cnJlbnRJdGVtXSk6IEFk
ZGVkLgorICAgICAgICAoLVtXS0JhY2tGb3J3YXJkTGlzdCBiYWNrSXRlbV0pOiBBZGRlZC4KKyAg
ICAgICAgKC1bV0tCYWNrRm9yd2FyZExpc3QgZm9yd2FyZEl0ZW1dKTogQWRkZWQuCisgICAgICAg
ICgtW1dLQmFja0ZvcndhcmRMaXN0IGl0ZW1BdEluZGV4Ol0pOiBBZGRlZC4KKyAgICAgICAgKC1b
V0tCYWNrRm9yd2FyZExpc3QgYmFja0xpc3RDb3VudF0pOiBBZGRlZC4KKyAgICAgICAgKC1bV0tC
YWNrRm9yd2FyZExpc3QgZm9yd2FyZExpc3RDb3VudF0pOiBBZGRlZC4KKyAgICAgICAgKC1bV0tC
YWNrRm9yd2FyZExpc3QgYmFja0xpc3RXaXRoTGltaXQ6XSk6IEFkZGVkLgorICAgICAgICAoLVtX
S0JhY2tGb3J3YXJkTGlzdCBmb3J3YXJkTGlzdFdpdGhMaW1pdDpdKTogQWRkZWQuCisgICAgICAg
ICgtW1dLQmFja0ZvcndhcmRMaXN0IF9pbml0V2l0aExpc3Q6XSk6IEFkZGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9XS0JhY2tGb3J3YXJkTGlzdEludGVybmFsLmg6IEFkZGVkLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dLQmFja0ZvcndhcmRMaXN0SXRlbS5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3RJdGVtLm1tOiBBZGRl
ZC4KKyAgICAgICAgKC1bV0tCYWNrRm9yd2FyZExpc3RJdGVtIFVSTF0pOiBBZGRlZC4KKyAgICAg
ICAgKC1bV0tCYWNrRm9yd2FyZExpc3RJdGVtIHRpdGxlXSk6IEFkZGVkLgorICAgICAgICAoLVtX
S0JhY2tGb3J3YXJkTGlzdEl0ZW0gb3JpZ2luYWxVUkxdKTogQWRkZWQuCisgICAgICAgICgtW1dL
QmFja0ZvcndhcmRMaXN0SXRlbSBpc0VxdWFsOl0pOiBDaGVjayBmb3IgZXF1YWxpdHkgb2YgdGhl
IHVuZGVybHlpbmcgb2JqZWN0LgorICAgICAgICAoLVtXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gaGFz
aF0pOiBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSB1bmRlcmx5aW5nIG9iamVjdAorICAgICAgICAo
LVtXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gX2luaXRXaXRoSXRlbTpdKTogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dLQmFja0ZvcndhcmRMaXN0SXRlbUludGVybmFsLmg6IEFkZGVk
LgorCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBVcGRhdGVk
IGZvciByZW5hbWVzIGFuZCBhZGRpdGlvbnMuCisKIDIwMTMtMTAtMjEgIEdlcmdvIEJhbG9naCAg
PGdlcnl4eXpAaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFJlbW92ZSBxdCBmcm9tIGdlbmVy
YXRlLWZvcndhcmRpbmctaGVhZGVycy5wbApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
Y29hL1dLTlNBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2Nv
YS9XS05TQXJyYXkuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2Nv
YS9XS05TQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiV0tGb3VuZGF0aW9uLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCituYW1l
c3BhY2UgV2ViS2l0IHsKK2NsYXNzIEltbXV0YWJsZUFycmF5OworfQorCitAaW50ZXJmYWNlIFdL
TlNBcnJheSA6IE5TQXJyYXkKKworKyAoaWQpd2ViX2FycmF5V2l0aEltbXV0YWJsZUFycmF5OihX
ZWJLaXQ6OkltbXV0YWJsZUFycmF5JilhcnJheTsKKworLSAoaWQpd2ViX2luaXRXaXRoSW1tdXRh
YmxlQXJyYXk6KFdlYktpdDo6SW1tdXRhYmxlQXJyYXkmKWFycmF5OworCitAZW5kCisKKyNlbmRp
ZiAvLyBXS19BUElfRU5BQkxFRApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL1dL
TlNBcnJheS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvV0tO
U0FycmF5Lm1tCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL1dL
TlNBcnJheS5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS05TQXJyYXkuaCIKKworI2lmIFdLX0FQSV9F
TkFCTEVECisKKyNpbXBvcnQgIkltbXV0YWJsZUFycmF5LmgiCisjaW1wb3J0ICJXS05TT2JqZWN0
RXh0cmFzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK0BpbXBsZW1lbnRhdGlvbiBX
S05TQXJyYXkgeworICAgIFJlZlB0cjxJbW11dGFibGVBcnJheT4gX2FycmF5OworfQorCisrIChp
ZCl3ZWJfYXJyYXlXaXRoSW1tdXRhYmxlQXJyYXk6KFdlYktpdDo6SW1tdXRhYmxlQXJyYXkmKWFy
cmF5Cit7CisgICAgcmV0dXJuIFtbW1tzZWxmIGNsYXNzXSBhbGxvY10gd2ViX2luaXRXaXRoSW1t
dXRhYmxlQXJyYXk6YXJyYXldIGF1dG9yZWxlYXNlXTsKK30KKworLSAoaWQpd2ViX2luaXRXaXRo
SW1tdXRhYmxlQXJyYXk6KEltbXV0YWJsZUFycmF5JilhcnJheQoreworICAgIGlmICghKHNlbGYg
PSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX2FycmF5ID0gJmFy
cmF5OworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKE5TVUludGVnZXIpY291bnQKK3sKKyAg
ICByZXR1cm4gX2FycmF5LT5zaXplKCk7Cit9CisKKy0gKGlkKW9iamVjdEF0SW5kZXg6KE5TVUlu
dGVnZXIpaQoreworICAgIHJldHVybiBbTlNPYmplY3QgX3dlYl9vYmplY3RXaXRoQVBJT2JqZWN0
Ol9hcnJheS0+YXQoaSldOworfQorCisjcHJhZ21hIG1hcmsgLSBOU0NvcHlpbmcgcHJvdG9jb2wg
aW1wbGVtZW50YXRpb24KKworLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCit7Cisg
ICAgcmV0dXJuIFtzZWxmIHJldGFpbl07Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9F
TkFCTEVECkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvV0tOU09iamVjdEV4dHJh
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9XS05TT2JqZWN0
RXh0cmFzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvV0tO
U09iamVjdEV4dHJhcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJXS0ZvdW5kYXRpb24uaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKK25h
bWVzcGFjZSBXZWJLaXQgeworY2xhc3MgQVBJT2JqZWN0OworfQorCitAaW50ZXJmYWNlIE5TT2Jq
ZWN0IChXS0V4dHJhcykKKworKyAoaWQpX3dlYl9vYmplY3RXaXRoQVBJT2JqZWN0OihXZWJLaXQ6
OkFQSU9iamVjdCopb2JqZWN0OworCitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJ
bmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL1dLTlNPYmplY3RFeHRyYXMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL1dLTlNPYmplY3RFeHRyYXMu
bW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvV0tOU09iamVj
dEV4dHJhcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS05TT2JqZWN0RXh0cmFzLmgiCisKKyNpZiBX
S19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJXS0JhY2tGb3J3YXJkTGlzdEl0ZW1JbnRlcm5hbC5o
IgorI2ltcG9ydCAiV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgorI2ltcG9ydCA8d3RmL1JlZlB0
ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitAaW50ZXJmYWNlIFdLT2JqZWN0IDog
TlNPYmplY3QKKworLSAoaWQpaW5pdFdpdGhBUElPYmplY3Q6KFdlYktpdDo6QVBJT2JqZWN0Jilv
YmplY3Q7CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLT2JqZWN0IHsKKyAgICBSZWZQdHI8
QVBJT2JqZWN0PiBfb2JqZWN0OworfQorCistIChpZClpbml0V2l0aEFQSU9iamVjdDooQVBJT2Jq
ZWN0JilvYmplY3QKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAg
cmV0dXJuIG5pbDsKKworICAgIF9vYmplY3QgPSAmb2JqZWN0OworCisgICAgcmV0dXJuIHNlbGY7
Cit9CisKKyNwcmFnbWEgbWFyayAtIE5TT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCisK
Ky0gKEJPT0wpaXNFcXVhbDooaWQpb2JqZWN0Cit7CisgICAgaWYgKFtvYmplY3QgY2xhc3NdICE9
IFtzZWxmIGNsYXNzXSkKKyAgICAgICAgcmV0dXJuIE5POworCisgICAgcmV0dXJuIF9vYmplY3Qg
PT0gKChXS09iamVjdCAqKW9iamVjdCktPl9vYmplY3Q7Cit9CisKKy0gKE5TVUludGVnZXIpaGFz
aAoreworICAgIHJldHVybiAoTlNVSW50ZWdlcikmKl9vYmplY3Q7Cit9CisKKy0gKE5TU3RyaW5n
ICopZGVzY3JpcHRpb24KK3sKKyAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCI8JUA6ICVwOyBvYmplY3QgPSAlcDsgdHlwZSA9ICVkPiIsIE5TU3RyaW5nRnJvbUNsYXNzKFtz
ZWxmIGNsYXNzXSksIHNlbGYsIF9vYmplY3QuZ2V0KCksIF9vYmplY3QtPnR5cGUoKV07Cit9CisK
K0BlbmQKKworI3ByYWdtYSBtYXJrIC0KKworQGltcGxlbWVudGF0aW9uIE5TT2JqZWN0IChXS0V4
dHJhcykKKworKyAoaWQpX3dlYl9vYmplY3RXaXRoQVBJT2JqZWN0OihBUElPYmplY3QqKW9iamVj
dAoreworICAgIGlmICghb2JqZWN0KQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgc3dpdGNo
IChvYmplY3QtPnR5cGUoKSkgeworICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBlQmFja0ZvcndhcmRM
aXN0SXRlbToKKyAgICAgICAgcmV0dXJuIFtbW1dLQmFja0ZvcndhcmRMaXN0SXRlbSBhbGxvY10g
X2luaXRXaXRoSXRlbToqc3RhdGljX2Nhc3Q8V2ViQmFja0ZvcndhcmRMaXN0SXRlbSo+KG9iamVj
dCldIGF1dG9yZWxlYXNlXTsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBbW1tXS09i
amVjdCBhbGxvY10gaW5pdFdpdGhBUElPYmplY3Q6Km9iamVjdF0gYXV0b3JlbGVhc2VdOworICAg
IH0KK30KKworQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0LmNwcAko
cmV2aXNpb24gMTU3NzIxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFj
a0ZvcndhcmRMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3NyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldLQmFja0ZvcndhcmRMaXN0Lmgi
Ci0KLSNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3QuaCIKLSNpbmNsdWRlICJXS0FQSUNhc3Qu
aCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotV0tUeXBlSUQgV0tCYWNrRm9yd2FyZExp
c3RHZXRUeXBlSUQoKQotewotICAgIHJldHVybiB0b0FQSShXZWJCYWNrRm9yd2FyZExpc3Q6OkFQ
SVR5cGUpOwotfQotCi1XS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgV0tCYWNrRm9yd2FyZExpc3RH
ZXRDdXJyZW50SXRlbShXS0JhY2tGb3J3YXJkTGlzdFJlZiBsaXN0UmVmKQotewotICAgIHJldHVy
biB0b0FQSSh0b0ltcGwobGlzdFJlZiktPmN1cnJlbnRJdGVtKCkpOwotfQotCi1XS0JhY2tGb3J3
YXJkTGlzdEl0ZW1SZWYgV0tCYWNrRm9yd2FyZExpc3RHZXRCYWNrSXRlbShXS0JhY2tGb3J3YXJk
TGlzdFJlZiBsaXN0UmVmKQotewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwobGlzdFJlZiktPmJh
Y2tJdGVtKCkpOwotfQotCi1XS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgV0tCYWNrRm9yd2FyZExp
c3RHZXRGb3J3YXJkSXRlbShXS0JhY2tGb3J3YXJkTGlzdFJlZiBsaXN0UmVmKQotewotICAgIHJl
dHVybiB0b0FQSSh0b0ltcGwobGlzdFJlZiktPmZvcndhcmRJdGVtKCkpOwotfQotCi1XS0JhY2tG
b3J3YXJkTGlzdEl0ZW1SZWYgV0tCYWNrRm9yd2FyZExpc3RHZXRJdGVtQXRJbmRleChXS0JhY2tG
b3J3YXJkTGlzdFJlZiBsaXN0UmVmLCBpbnQgaW5kZXgpCi17Ci0gICAgcmV0dXJuIHRvQVBJKHRv
SW1wbChsaXN0UmVmKS0+aXRlbUF0SW5kZXgoaW5kZXgpKTsKLX0KLQotdW5zaWduZWQgV0tCYWNr
Rm9yd2FyZExpc3RHZXRCYWNrTGlzdENvdW50KFdLQmFja0ZvcndhcmRMaXN0UmVmIGxpc3RSZWYp
Ci17Ci0gICAgcmV0dXJuIHRvSW1wbChsaXN0UmVmKS0+YmFja0xpc3RDb3VudCgpOwotfQotCi11
bnNpZ25lZCBXS0JhY2tGb3J3YXJkTGlzdEdldEZvcndhcmRMaXN0Q291bnQoV0tCYWNrRm9yd2Fy
ZExpc3RSZWYgbGlzdFJlZikKLXsKLSAgICByZXR1cm4gdG9JbXBsKGxpc3RSZWYpLT5mb3J3YXJk
TGlzdENvdW50KCk7Ci19Ci0KLVdLQXJyYXlSZWYgV0tCYWNrRm9yd2FyZExpc3RDb3B5QmFja0xp
c3RXaXRoTGltaXQoV0tCYWNrRm9yd2FyZExpc3RSZWYgbGlzdFJlZiwgdW5zaWduZWQgbGltaXQp
Ci17Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChsaXN0UmVmKS0+YmFja0xpc3RBc0ltbXV0YWJs
ZUFycmF5V2l0aExpbWl0KGxpbWl0KS5sZWFrUmVmKCkpOwotfQotCi1XS0FycmF5UmVmIFdLQmFj
a0ZvcndhcmRMaXN0Q29weUZvcndhcmRMaXN0V2l0aExpbWl0KFdLQmFja0ZvcndhcmRMaXN0UmVm
IGxpc3RSZWYsIHVuc2lnbmVkIGxpbWl0KQotewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwobGlz
dFJlZiktPmZvcndhcmRMaXN0QXNJbW11dGFibGVBcnJheVdpdGhMaW1pdChsaW1pdCkubGVha1Jl
ZigpKTsgICAgCi19CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYWNr
Rm9yd2FyZExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tCYWNrRm9yd2FyZExpc3QuaAkocmV2aXNpb24gMTU3NzIxKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV0tCYWNrRm9yd2FyZExpc3RfaAot
I2RlZmluZSBXS0JhY2tGb3J3YXJkTGlzdF9oCi0KLSNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5o
PgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLVdLX0VYUE9S
VCBXS1R5cGVJRCBXS0JhY2tGb3J3YXJkTGlzdEdldFR5cGVJRCgpOwotCi1XS19FWFBPUlQgV0tC
YWNrRm9yd2FyZExpc3RJdGVtUmVmIFdLQmFja0ZvcndhcmRMaXN0R2V0Q3VycmVudEl0ZW0oV0tC
YWNrRm9yd2FyZExpc3RSZWYgbGlzdCk7Ci1XS19FWFBPUlQgV0tCYWNrRm9yd2FyZExpc3RJdGVt
UmVmIFdLQmFja0ZvcndhcmRMaXN0R2V0QmFja0l0ZW0oV0tCYWNrRm9yd2FyZExpc3RSZWYgbGlz
dCk7Ci1XS19FWFBPUlQgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIFdLQmFja0ZvcndhcmRMaXN0
R2V0Rm9yd2FyZEl0ZW0oV0tCYWNrRm9yd2FyZExpc3RSZWYgbGlzdCk7Ci1XS19FWFBPUlQgV0tC
YWNrRm9yd2FyZExpc3RJdGVtUmVmIFdLQmFja0ZvcndhcmRMaXN0R2V0SXRlbUF0SW5kZXgoV0tC
YWNrRm9yd2FyZExpc3RSZWYgbGlzdCwgaW50IGluZGV4KTsKLQotV0tfRVhQT1JUIHVuc2lnbmVk
IFdLQmFja0ZvcndhcmRMaXN0R2V0QmFja0xpc3RDb3VudChXS0JhY2tGb3J3YXJkTGlzdFJlZiBs
aXN0KTsKLVdLX0VYUE9SVCB1bnNpZ25lZCBXS0JhY2tGb3J3YXJkTGlzdEdldEZvcndhcmRMaXN0
Q291bnQoV0tCYWNrRm9yd2FyZExpc3RSZWYgbGlzdCk7Ci0KLVdLX0VYUE9SVCBXS0FycmF5UmVm
IFdLQmFja0ZvcndhcmRMaXN0Q29weUJhY2tMaXN0V2l0aExpbWl0KFdLQmFja0ZvcndhcmRMaXN0
UmVmIGxpc3QsIHVuc2lnbmVkIGxpbWl0KTsKLVdLX0VYUE9SVCBXS0FycmF5UmVmIFdLQmFja0Zv
cndhcmRMaXN0Q29weUZvcndhcmRMaXN0V2l0aExpbWl0KFdLQmFja0ZvcndhcmRMaXN0UmVmIGxp
c3QsIHVuc2lnbmVkIGxpbWl0KTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQot
I2VuZGlmIC8vIFdLQmFja0ZvcndhcmRMaXN0X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCShyZXZp
c2lvbiAxNTc3MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9y
d2FyZExpc3RJdGVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1MiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldLQmFja0ZvcndhcmRM
aXN0SXRlbS5oIgotCi0jaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2ViQmFja0Zv
cndhcmRMaXN0SXRlbS5oIgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1XS1R5cGVJRCBX
S0JhY2tGb3J3YXJkTGlzdEl0ZW1HZXRUeXBlSUQoKQotewotICAgIHJldHVybiB0b0FQSShXZWJC
YWNrRm9yd2FyZExpc3RJdGVtOjpBUElUeXBlKTsKLX0KLQotV0tVUkxSZWYgV0tCYWNrRm9yd2Fy
ZExpc3RJdGVtQ29weVVSTChXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbVJlZikKLXsKLSAg
ICByZXR1cm4gdG9Db3BpZWRVUkxBUEkodG9JbXBsKGl0ZW1SZWYpLT51cmwoKSk7Ci19Ci0KLVdL
U3RyaW5nUmVmIFdLQmFja0ZvcndhcmRMaXN0SXRlbUNvcHlUaXRsZShXS0JhY2tGb3J3YXJkTGlz
dEl0ZW1SZWYgaXRlbVJlZikKLXsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGl0ZW1S
ZWYpLT50aXRsZSgpKTsKLX0KLQotV0tVUkxSZWYgV0tCYWNrRm9yd2FyZExpc3RJdGVtQ29weU9y
aWdpbmFsVVJMKFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtUmVmKQotewotICAgIHJldHVy
biB0b0NvcGllZFVSTEFQSSh0b0ltcGwoaXRlbVJlZiktPm9yaWdpbmFsVVJMKCkpOwotfQpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0SXRlbS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3
YXJkTGlzdEl0ZW0uaAkocmV2aXNpb24gMTU3NzIxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0SXRlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ1
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdLQmFja0ZvcndhcmRMaXN0SXRl
bV9oCi0jZGVmaW5lIFdLQmFja0ZvcndhcmRMaXN0SXRlbV9oCi0KLSNpbmNsdWRlIDxXZWJLaXQy
L1dLQmFzZS5oPgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0K
LVdLX0VYUE9SVCBXS1R5cGVJRCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1HZXRUeXBlSUQoKTsKLQot
V0tfRVhQT1JUIFdLVVJMUmVmIFdLQmFja0ZvcndhcmRMaXN0SXRlbUNvcHlVUkwoV0tCYWNrRm9y
d2FyZExpc3RJdGVtUmVmIGl0ZW0pOwotV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLQmFja0Zvcndh
cmRMaXN0SXRlbUNvcHlUaXRsZShXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbSk7Ci1XS19F
WFBPUlQgV0tVUkxSZWYgV0tCYWNrRm9yd2FyZExpc3RJdGVtQ29weU9yaWdpbmFsVVJMKFdLQmFj
a0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5k
aWYKLQotI2VuZGlmIC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbV9oICovCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExp
c3RJdGVtUmVmLmNwcAkocmV2aXNpb24gMTU3NzIxKQkoZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RJdGVtLmNwcDoxNTc3MjEpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldLQmFja0ZvcndhcmRMaXN0SXRlbS5oIgorCisjaW5jbHVk
ZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgorCit1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1H
ZXRUeXBlSUQoKQoreworICAgIHJldHVybiB0b0FQSShXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpB
UElUeXBlKTsKK30KKworV0tVUkxSZWYgV0tCYWNrRm9yd2FyZExpc3RJdGVtQ29weVVSTChXS0Jh
Y2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbVJlZikKK3sKKyAgICByZXR1cm4gdG9Db3BpZWRVUkxB
UEkodG9JbXBsKGl0ZW1SZWYpLT51cmwoKSk7Cit9CisKK1dLU3RyaW5nUmVmIFdLQmFja0Zvcndh
cmRMaXN0SXRlbUNvcHlUaXRsZShXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbVJlZikKK3sK
KyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGl0ZW1SZWYpLT50aXRsZSgpKTsKK30KKwor
V0tVUkxSZWYgV0tCYWNrRm9yd2FyZExpc3RJdGVtQ29weU9yaWdpbmFsVVJMKFdLQmFja0Zvcndh
cmRMaXN0SXRlbVJlZiBpdGVtUmVmKQoreworICAgIHJldHVybiB0b0NvcGllZFVSTEFQSSh0b0lt
cGwoaXRlbVJlZiktPm9yaWdpbmFsVVJMKCkpOworfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0SXRlbVJlZi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0SXRlbVJlZi5j
cHAJKHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0Jh
Y2tGb3J3YXJkTGlzdEl0ZW1SZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBA
CiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldLQmFja0ZvcndhcmRMaXN0
SXRlbS5oIgorI2luY2x1ZGUgIldLQmFja0ZvcndhcmRMaXN0SXRlbVJlZi5oIgogCiAjaW5jbHVk
ZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0SXRlbVJl
Zi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0JhY2tG
b3J3YXJkTGlzdEl0ZW1SZWYuaAkocmV2aXNpb24gMTU3NzIxKQkoZnJvbSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RJdGVtLmg6MTU3NzIxKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0SXRlbVJlZi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAs
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdLQmFja0ZvcndhcmRMaXN0SXRlbV9oCisjZGVmaW5lIFdLQmFja0ZvcndhcmRMaXN0SXRlbV9o
CisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4
dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS0JhY2tGb3J3YXJkTGlz
dEl0ZW1HZXRUeXBlSUQoKTsKKworV0tfRVhQT1JUIFdLVVJMUmVmIFdLQmFja0ZvcndhcmRMaXN0
SXRlbUNvcHlVUkwoV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW0pOworV0tfRVhQT1JUIFdL
U3RyaW5nUmVmIFdLQmFja0ZvcndhcmRMaXN0SXRlbUNvcHlUaXRsZShXS0JhY2tGb3J3YXJkTGlz
dEl0ZW1SZWYgaXRlbSk7CitXS19FWFBPUlQgV0tVUkxSZWYgV0tCYWNrRm9yd2FyZExpc3RJdGVt
Q29weU9yaWdpbmFsVVJMKFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtKTsKKworI2lmZGVm
IF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIFdLQmFja0ZvcndhcmRMaXN0SXRl
bV9oICovCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2Fy
ZExpc3RJdGVtUmVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLQmFja0ZvcndhcmRMaXN0SXRlbVJlZi5oCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIzLDggKzIzLDggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZuZGVmIFdLQmFja0ZvcndhcmRMaXN0SXRlbV9oCi0jZGVmaW5lIFdL
QmFja0ZvcndhcmRMaXN0SXRlbV9oCisjaWZuZGVmIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZl9o
CisjZGVmaW5lIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZl9oCiAKICNpbmNsdWRlIDxXZWJLaXQy
L1dLQmFzZS5oPgogCkBAIC00Miw0ICs0Miw0IEBAIFdLX0VYUE9SVCBXS1VSTFJlZiBXS0JhY2tG
b3J3YXJkTGlzdEl0ZW0KIH0KICNlbmRpZgogCi0jZW5kaWYgLyogV0tCYWNrRm9yd2FyZExpc3RJ
dGVtX2ggKi8KKyNlbmRpZiAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWZfaCAqLwpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0UmVmLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2Fy
ZExpc3RSZWYuY3BwCShyZXZpc2lvbiAxNTc3MjEpCShmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdC5jcHA6MTU3NzIxKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0UmVmLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldLQmFja0ZvcndhcmRMaXN0LmgiCisKKyNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExp
c3QuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
KworV0tUeXBlSUQgV0tCYWNrRm9yd2FyZExpc3RHZXRUeXBlSUQoKQoreworICAgIHJldHVybiB0
b0FQSShXZWJCYWNrRm9yd2FyZExpc3Q6OkFQSVR5cGUpOworfQorCitXS0JhY2tGb3J3YXJkTGlz
dEl0ZW1SZWYgV0tCYWNrRm9yd2FyZExpc3RHZXRDdXJyZW50SXRlbShXS0JhY2tGb3J3YXJkTGlz
dFJlZiBsaXN0UmVmKQoreworICAgIHJldHVybiB0b0FQSSh0b0ltcGwobGlzdFJlZiktPmN1cnJl
bnRJdGVtKCkpOworfQorCitXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgV0tCYWNrRm9yd2FyZExp
c3RHZXRCYWNrSXRlbShXS0JhY2tGb3J3YXJkTGlzdFJlZiBsaXN0UmVmKQoreworICAgIHJldHVy
biB0b0FQSSh0b0ltcGwobGlzdFJlZiktPmJhY2tJdGVtKCkpOworfQorCitXS0JhY2tGb3J3YXJk
TGlzdEl0ZW1SZWYgV0tCYWNrRm9yd2FyZExpc3RHZXRGb3J3YXJkSXRlbShXS0JhY2tGb3J3YXJk
TGlzdFJlZiBsaXN0UmVmKQoreworICAgIHJldHVybiB0b0FQSSh0b0ltcGwobGlzdFJlZiktPmZv
cndhcmRJdGVtKCkpOworfQorCitXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgV0tCYWNrRm9yd2Fy
ZExpc3RHZXRJdGVtQXRJbmRleChXS0JhY2tGb3J3YXJkTGlzdFJlZiBsaXN0UmVmLCBpbnQgaW5k
ZXgpCit7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChsaXN0UmVmKS0+aXRlbUF0SW5kZXgoaW5k
ZXgpKTsKK30KKwordW5zaWduZWQgV0tCYWNrRm9yd2FyZExpc3RHZXRCYWNrTGlzdENvdW50KFdL
QmFja0ZvcndhcmRMaXN0UmVmIGxpc3RSZWYpCit7CisgICAgcmV0dXJuIHRvSW1wbChsaXN0UmVm
KS0+YmFja0xpc3RDb3VudCgpOworfQorCit1bnNpZ25lZCBXS0JhY2tGb3J3YXJkTGlzdEdldEZv
cndhcmRMaXN0Q291bnQoV0tCYWNrRm9yd2FyZExpc3RSZWYgbGlzdFJlZikKK3sKKyAgICByZXR1
cm4gdG9JbXBsKGxpc3RSZWYpLT5mb3J3YXJkTGlzdENvdW50KCk7Cit9CisKK1dLQXJyYXlSZWYg
V0tCYWNrRm9yd2FyZExpc3RDb3B5QmFja0xpc3RXaXRoTGltaXQoV0tCYWNrRm9yd2FyZExpc3RS
ZWYgbGlzdFJlZiwgdW5zaWduZWQgbGltaXQpCit7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChs
aXN0UmVmKS0+YmFja0xpc3RBc0ltbXV0YWJsZUFycmF5V2l0aExpbWl0KGxpbWl0KS5sZWFrUmVm
KCkpOworfQorCitXS0FycmF5UmVmIFdLQmFja0ZvcndhcmRMaXN0Q29weUZvcndhcmRMaXN0V2l0
aExpbWl0KFdLQmFja0ZvcndhcmRMaXN0UmVmIGxpc3RSZWYsIHVuc2lnbmVkIGxpbWl0KQorewor
ICAgIHJldHVybiB0b0FQSSh0b0ltcGwobGlzdFJlZiktPmZvcndhcmRMaXN0QXNJbW11dGFibGVB
cnJheVdpdGhMaW1pdChsaW1pdCkubGVha1JlZigpKTsgICAgCit9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RSZWYuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdFJlZi5j
cHAJKHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0Jh
Y2tGb3J3YXJkTGlzdFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAq
LwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0tCYWNrRm9yd2FyZExpc3QuaCIK
KyNpbmNsdWRlICJXS0JhY2tGb3J3YXJkTGlzdFJlZi5oIgogCiAjaW5jbHVkZSAiV2ViQmFja0Zv
cndhcmRMaXN0LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RSZWYuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RSZWYuaAkocmV2
aXNpb24gMTU3NzIxKQkoZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYWNr
Rm9yd2FyZExpc3QuaDoxNTc3MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tCYWNrRm9yd2FyZExpc3RSZWYuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXS0JhY2tGb3J3YXJkTGlzdF9oCisjZGVmaW5lIFdLQmFja0Zv
cndhcmRMaXN0X2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2Nw
bHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLQmFj
a0ZvcndhcmRMaXN0R2V0VHlwZUlEKCk7CisKK1dLX0VYUE9SVCBXS0JhY2tGb3J3YXJkTGlzdEl0
ZW1SZWYgV0tCYWNrRm9yd2FyZExpc3RHZXRDdXJyZW50SXRlbShXS0JhY2tGb3J3YXJkTGlzdFJl
ZiBsaXN0KTsKK1dLX0VYUE9SVCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgV0tCYWNrRm9yd2Fy
ZExpc3RHZXRCYWNrSXRlbShXS0JhY2tGb3J3YXJkTGlzdFJlZiBsaXN0KTsKK1dLX0VYUE9SVCBX
S0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgV0tCYWNrRm9yd2FyZExpc3RHZXRGb3J3YXJkSXRlbShX
S0JhY2tGb3J3YXJkTGlzdFJlZiBsaXN0KTsKK1dLX0VYUE9SVCBXS0JhY2tGb3J3YXJkTGlzdEl0
ZW1SZWYgV0tCYWNrRm9yd2FyZExpc3RHZXRJdGVtQXRJbmRleChXS0JhY2tGb3J3YXJkTGlzdFJl
ZiBsaXN0LCBpbnQgaW5kZXgpOworCitXS19FWFBPUlQgdW5zaWduZWQgV0tCYWNrRm9yd2FyZExp
c3RHZXRCYWNrTGlzdENvdW50KFdLQmFja0ZvcndhcmRMaXN0UmVmIGxpc3QpOworV0tfRVhQT1JU
IHVuc2lnbmVkIFdLQmFja0ZvcndhcmRMaXN0R2V0Rm9yd2FyZExpc3RDb3VudChXS0JhY2tGb3J3
YXJkTGlzdFJlZiBsaXN0KTsKKworV0tfRVhQT1JUIFdLQXJyYXlSZWYgV0tCYWNrRm9yd2FyZExp
c3RDb3B5QmFja0xpc3RXaXRoTGltaXQoV0tCYWNrRm9yd2FyZExpc3RSZWYgbGlzdCwgdW5zaWdu
ZWQgbGltaXQpOworV0tfRVhQT1JUIFdLQXJyYXlSZWYgV0tCYWNrRm9yd2FyZExpc3RDb3B5Rm9y
d2FyZExpc3RXaXRoTGltaXQoV0tCYWNrRm9yd2FyZExpc3RSZWYgbGlzdCwgdW5zaWduZWQgbGlt
aXQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gV0tCYWNr
Rm9yd2FyZExpc3RfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFj
a0ZvcndhcmRMaXN0UmVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0UmVmLmgJKHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdFJlZi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMyw4ICsyMyw4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2lmbmRlZiBXS0JhY2tGb3J3YXJkTGlzdF9oCi0jZGVmaW5lIFdLQmFja0Zvcndh
cmRMaXN0X2gKKyNpZm5kZWYgV0tCYWNrRm9yd2FyZExpc3RSZWZfaAorI2RlZmluZSBXS0JhY2tG
b3J3YXJkTGlzdFJlZl9oCiAKICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgogCkBAIC00OSw0
ICs0OSw0IEBAIFdLX0VYUE9SVCBXS0FycmF5UmVmIFdLQmFja0ZvcndhcmRMaXN0Q28KIH0KICNl
bmRpZgogCi0jZW5kaWYgLy8gV0tCYWNrRm9yd2FyZExpc3RfaAorI2VuZGlmIC8vIFdLQmFja0Zv
cndhcmRMaXN0UmVmX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XZWJL
aXQyX0MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV2Vi
S2l0Ml9DLmgJKHJldmlzaW9uIDE1NzcyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XZWJLaXQyX0MuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsOCBAQAogI2luY2x1
ZGUgPFdlYktpdDIvV0tUeXBlLmg+CiAKICNpbmNsdWRlIDxXZWJLaXQyL1dLQXJyYXkuaD4KLSNp
bmNsdWRlIDxXZWJLaXQyL1dLQmFja0ZvcndhcmRMaXN0Lmg+Ci0jaW5jbHVkZSA8V2ViS2l0Mi9X
S0JhY2tGb3J3YXJkTGlzdEl0ZW0uaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFja0ZvcndhcmRM
aXN0UmVmLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYuaD4K
ICNpbmNsdWRlIDxXZWJLaXQyL1dLQ29ubmVjdGlvblJlZi5oPgogI2luY2x1ZGUgPFdlYktpdDIv
V0tDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0RhdGEuaD4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlci5oCShyZXZpc2lvbiAxNTc3MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2ltcG9ydCA8V2ViS2l0Mi9XS0RlY2xhcmF0aW9uU3Bl
Y2lmaWVycy5oPgogCiBAY2xhc3MgV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyRGF0YTsKK0Bj
bGFzcyBXS0JhY2tGb3J3YXJkTGlzdDsKIEBwcm90b2NvbCBXS0Jyb3dzaW5nQ29udGV4dExvYWRE
ZWxlZ2F0ZTsKIAogV0tfRVhQT1JUCkBAIC05MCw2ICs5MSw3IEBAIEBpbnRlcmZhY2UgV0tCcm93
c2luZ0NvbnRleHRDb250cm9sbGVyIDoKIC8qIFdoZXRoZXIgdGhlcmUgaXMgYSBwcmV2aW91cyBw
YWdlIGluIHRoZSBiYWNrL2ZvcndhcmQgbGlzdC4gKi8KIEBwcm9wZXJ0eShyZWFkb25seSkgQk9P
TCBjYW5Hb0JhY2s7CiAKK0Bwcm9wZXJ0eShyZWFkb25seSkgV0tCYWNrRm9yd2FyZExpc3QgKmJh
Y2tGb3J3YXJkTGlzdDsKIAogI3ByYWdtYSBtYXJrIEFjdGl2ZSBMb2FkIEludHJvc3BlY3Rpb24K
IApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRl
eHRDb250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQkocmV2aXNpb24gMTU3NzIxKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW1wb3J0ICJXS0Jy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXJJbnRlcm5hbC5oIgogCiAjaW1wb3J0ICJPYmpDT2JqZWN0
R3JhcGguaCIKKyNpbXBvcnQgIldLQmFja0ZvcndhcmRMaXN0SW50ZXJuYWwuaCIKICNpbXBvcnQg
IldLRXJyb3JDRi5oIgogI2ltcG9ydCAiV0tGcmFtZS5oIgogI2ltcG9ydCAiV0tQYWdlUHJpdmF0
ZS5oIgpAQCAtMjUyLDYgKzI1MywxMyBAQCAtIChCT09MKWNhbkdvQmFjawogICAgIHJldHVybiBX
S1BhZ2VDYW5Hb0JhY2soc2VsZi5fcGFnZVJlZik7CiB9CiAKKy0gKFdLQmFja0ZvcndhcmRMaXN0
ICopYmFja0ZvcndhcmRMaXN0Cit7CisgICAgaWYgKFdlYkJhY2tGb3J3YXJkTGlzdCogbGlzdCA9
IHRvSW1wbChzZWxmLl9wYWdlUmVmKS0+YmFja0ZvcndhcmRMaXN0KCkpCisgICAgICAgIHJldHVy
biBbW1tXS0JhY2tGb3J3YXJkTGlzdCBhbGxvY10gX2luaXRXaXRoTGlzdDoqbGlzdF0gYXV0b3Jl
bGVhc2VdOworCisgICAgcmV0dXJuIG5pbDsKK30KIAogI3ByYWdtYSBtYXJrIEFjdGl2ZSBMb2Fk
IEludHJvc3BlY3Rpb24KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dL
QmFja0ZvcndhcmRMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1dLQmFja0ZvcndhcmRMaXN0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYWNrRm9yd2Fy
ZExpc3RSZWYuaD4KKworI2lmZGVmIF9fT0JKQ19fCisKKyNpbXBvcnQgPFdlYktpdDIvV0tCYWNr
Rm9yd2FyZExpc3RJdGVtLmg+CisjaW1wb3J0IDxXZWJLaXQyL1dLRm91bmRhdGlvbi5oPgorCisj
aWYgV0tfQVBJX0VOQUJMRUQKKworQGludGVyZmFjZSBXS0JhY2tGb3J3YXJkTGlzdCA6IE5TT2Jq
ZWN0CisKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIFdLQmFja0ZvcndhcmRMaXN0SXRlbSAqY3VycmVu
dEl0ZW07CitAcHJvcGVydHkgKHJlYWRvbmx5KSBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKmJhY2tJ
dGVtOworQHByb3BlcnR5IChyZWFkb25seSkgV0tCYWNrRm9yd2FyZExpc3RJdGVtICpmb3J3YXJk
SXRlbTsKKworLSAoV0tCYWNrRm9yd2FyZExpc3RJdGVtICopaXRlbUF0SW5kZXg6KE5TSW50ZWdl
cilpbmRleDsKKworQHByb3BlcnR5IChyZWFkb25seSkgTlNVSW50ZWdlciBiYWNrTGlzdENvdW50
OworQHByb3BlcnR5IChyZWFkb25seSkgTlNVSW50ZWdlciBmb3J3YXJkTGlzdENvdW50OworCist
IChOU0FycmF5ICopYmFja0xpc3RXaXRoTGltaXQ6KE5TVUludGVnZXIpbGltaXQ7CistIChOU0Fy
cmF5ICopZm9yd2FyZExpc3RXaXRoTGltaXQ6KE5TVUludGVnZXIpbGltaXQ7CisKK0BlbmQKKwor
I2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECisKKyNlbmRpZiAvLyBkZWZpbmVkKF9fT0JKQ19fKQpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dLQmFja0ZvcndhcmRMaXN0Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XS0JhY2tGb3J3
YXJkTGlzdC5tbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9XS0JhY2tGb3J3YXJkTGlzdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExNSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tCYWNrRm9yd2FyZExp
c3RJbnRlcm5hbC5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiV0tCYWNrRm9y
d2FyZExpc3RJdGVtSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLTlNBcnJheS5oIgorI2ltcG9ydCAi
V2ViQmFja0ZvcndhcmRMaXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK0BpbXBs
ZW1lbnRhdGlvbiBXS0JhY2tGb3J3YXJkTGlzdCB7CisgICAgUmVmUHRyPFdlYkJhY2tGb3J3YXJk
TGlzdD4gX2xpc3Q7Cit9CisKK3N0YXRpYyBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKnRvV0tCYWNr
Rm9yd2FyZExpc3RJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW0pCit7CisgICAgaWYg
KCFpdGVtKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuICBbW1tXS0JhY2tGb3J3
YXJkTGlzdEl0ZW0gYWxsb2NdIF9pbml0V2l0aEl0ZW06Kml0ZW1dIGF1dG9yZWxlYXNlXTsKK30K
KworLSAoV0tCYWNrRm9yd2FyZExpc3RJdGVtICopY3VycmVudEl0ZW0KK3sKKyAgICByZXR1cm4g
dG9XS0JhY2tGb3J3YXJkTGlzdEl0ZW0oX2xpc3QtPmN1cnJlbnRJdGVtKCkpOworfQorCistIChX
S0JhY2tGb3J3YXJkTGlzdEl0ZW0gKiliYWNrSXRlbQoreworICAgIHJldHVybiB0b1dLQmFja0Zv
cndhcmRMaXN0SXRlbShfbGlzdC0+YmFja0l0ZW0oKSk7Cit9CisKKy0gKFdLQmFja0ZvcndhcmRM
aXN0SXRlbSAqKWZvcndhcmRJdGVtCit7CisgICAgcmV0dXJuIHRvV0tCYWNrRm9yd2FyZExpc3RJ
dGVtKF9saXN0LT5iYWNrSXRlbSgpKTsKK30KKworLSAoV0tCYWNrRm9yd2FyZExpc3RJdGVtICop
aXRlbUF0SW5kZXg6KE5TSW50ZWdlcilpbmRleAoreworICAgIHJldHVybiB0b1dLQmFja0Zvcndh
cmRMaXN0SXRlbShfbGlzdC0+aXRlbUF0SW5kZXgoaW5kZXgpKTsKK30KKworLSAoTlNVSW50ZWdl
ciliYWNrTGlzdENvdW50Cit7CisgICAgcmV0dXJuIF9saXN0LT5iYWNrTGlzdENvdW50KCk7Cit9
CisKKy0gKE5TVUludGVnZXIpZm9yd2FyZExpc3RDb3VudAoreworICAgIHJldHVybiBfbGlzdC0+
Zm9yd2FyZExpc3RDb3VudCgpOworfQorCistIChOU0FycmF5ICopYmFja0xpc3RXaXRoTGltaXQ6
KE5TVUludGVnZXIpbGltaXQKK3sKKyAgICBSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IGxpc3QgPSBf
bGlzdC0+YmFja0xpc3RBc0ltbXV0YWJsZUFycmF5V2l0aExpbWl0KGxpbWl0KTsKKyAgICBpZiAo
IWxpc3QpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4gW1dLTlNBcnJheSB3ZWJf
YXJyYXlXaXRoSW1tdXRhYmxlQXJyYXk6Kmxpc3RdOworfQorCistIChOU0FycmF5ICopZm9yd2Fy
ZExpc3RXaXRoTGltaXQ6KE5TVUludGVnZXIpbGltaXQKK3sKKyAgICBSZWZQdHI8SW1tdXRhYmxl
QXJyYXk+IGxpc3QgPSBfbGlzdC0+Zm9yd2FyZExpc3RBc0ltbXV0YWJsZUFycmF5V2l0aExpbWl0
KGxpbWl0KTsKKyAgICBpZiAoIWxpc3QpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1
cm4gW1dLTlNBcnJheSB3ZWJfYXJyYXlXaXRoSW1tdXRhYmxlQXJyYXk6Kmxpc3RdOworfQorCitA
ZW5kCisKKyNwcmFnbWEgbWFyayAtCisKK0BpbXBsZW1lbnRhdGlvbiBXS0JhY2tGb3J3YXJkTGlz
dCAoSW50ZXJuYWwpCisKKy0gKGlkKV9pbml0V2l0aExpc3Q6KFdlYkJhY2tGb3J3YXJkTGlzdCYp
bGlzdAoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4g
bmlsOworCisgICAgX2xpc3QgPSAmbGlzdDsKKworICAgIHJldHVybiBzZWxmOworfQorCitAZW5k
CisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1dLQmFja0ZvcndhcmRMaXN0SW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3RJbnRlcm5hbC5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dLQmFja0Zvcndh
cmRMaXN0SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiV0tCYWNrRm9yd2FyZExpc3QuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVE
CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0OworfQorCitA
aW50ZXJmYWNlIFdLQmFja0ZvcndhcmRMaXN0IChJbnRlcm5hbCkKKworLSAoaWQpX2luaXRXaXRo
TGlzdDooV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3QmKWxpc3Q7CisKK0BlbmQKKworI2VuZGlm
IC8vIFdLX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
V0tCYWNrRm9yd2FyZExpc3RJdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1dLQmFja0ZvcndhcmRMaXN0SXRlbS5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dLQmFja0ZvcndhcmRMaXN0SXRlbS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8V2ViS2l0
Mi9XS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYuaD4KKworI2lmZGVmIF9fT0JKQ19fCisKKyNpbXBv
cnQgPFdlYktpdDIvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCitAaW50
ZXJmYWNlIFdLQmFja0ZvcndhcmRMaXN0SXRlbSA6IE5TT2JqZWN0CisKK0Bwcm9wZXJ0eSAocmVh
ZG9ubHkpIE5TVVJMICpVUkw7CitAcHJvcGVydHkgKHJlYWRvbmx5KSBOU1N0cmluZyAqdGl0bGU7
CitAcHJvcGVydHkgKHJlYWRvbmx5KSBOU1VSTCAqb3JpZ2luYWxVUkw7CisKK0BlbmQKKworI2Vu
ZGlmIC8vIFdLX0FQSV9FTkFCTEVECisKKyNlbmRpZiAvLyBkZWZpbmVkKF9fT0JKQ19fKQpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dLQmFja0ZvcndhcmRMaXN0SXRlbS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tCYWNrRm9y
d2FyZExpc3RJdGVtLm1tCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1dLQmFja0ZvcndhcmRMaXN0SXRlbS5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tCYWNr
Rm9yd2FyZExpc3RJdGVtSW50ZXJuYWwuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBv
cnQgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKKyNpbXBvcnQgIldLUmV0YWluUHRyLmgiCisj
aW1wb3J0ICJXS1NoYXJlZEFQSUNhc3QuaCIKKyNpbXBvcnQgIldLU3RyaW5nQ0YuaCIKKyNpbXBv
cnQgIldLVVJMQ0YuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworQGltcGxlbWVudGF0
aW9uIFdLQmFja0ZvcndhcmRMaXN0SXRlbSB7CisgICAgUmVmUHRyPFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0+IF9pdGVtOworfQorCistIChOU1VSTCAqKVVSTAoreworICAgIGlmICghX2l0ZW0tPnVy
bCgpKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNl
KFdLVVJMQ29weUNGVVJMKGtDRkFsbG9jYXRvckRlZmF1bHQsIGFkb3B0V0sodG9Db3BpZWRVUkxB
UEkoX2l0ZW0tPnVybCgpKSkuZ2V0KCkpKTsKK30KKworLSAoTlNTdHJpbmcgKil0aXRsZQorewor
ICAgIGlmICghX2l0ZW0tPnRpdGxlKCkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1
cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoV0tTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgYWRvcHRXSyh0b0NvcGllZEFQSShfaXRlbS0+dGl0bGUoKSkpLmdldCgpKSk7Cit9CisK
Ky0gKE5TVVJMICopb3JpZ2luYWxVUkwKK3sKKyAgICBpZiAoIV9pdGVtLT5vcmlnaW5hbFVSTCgp
KQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNlKFdL
VVJMQ29weUNGVVJMKGtDRkFsbG9jYXRvckRlZmF1bHQsIGFkb3B0V0sodG9Db3BpZWRVUkxBUEko
X2l0ZW0tPm9yaWdpbmFsVVJMKCkpKS5nZXQoKSkpOworfQorCisjcHJhZ21hIG1hcmsgLSBOU09i
amVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgorCistIChCT09MKWlzRXF1YWw6KGlkKW9iamVj
dAoreworICAgIGlmIChbb2JqZWN0IGNsYXNzXSAhPSBbc2VsZiBjbGFzc10pCisgICAgICAgIHJl
dHVybiBOTzsKKworICAgIHJldHVybiBfaXRlbSA9PSAoKFdLQmFja0ZvcndhcmRMaXN0SXRlbSAq
KW9iamVjdCktPl9pdGVtOworfQorCistIChOU1VJbnRlZ2VyKWhhc2gKK3sKKyAgICByZXR1cm4g
KE5TVUludGVnZXIpJipfaXRlbTsKK30KKworQGVuZAorCisjcHJhZ21hIG1hcmsgLQorCitAaW1w
bGVtZW50YXRpb24gV0tCYWNrRm9yd2FyZExpc3RJdGVtIChJbnRlcm5hbCkKKworLSAoaWQpX2lu
aXRXaXRoSXRlbTooV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpaXRlbQoreworICAgIGlmICghKHNl
bGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX2l0ZW0gPSAm
aXRlbTsKKworICAgIHJldHVybiBzZWxmOworfQorCitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElf
RU5BQkxFRApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dLQmFja0Zvcndh
cmRMaXN0SXRlbUludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1dLQmFja0ZvcndhcmRMaXN0SXRlbUludGVybmFsLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3RJdGVtSW50
ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiV0tCYWNrRm9yd2FyZExpc3RJdGVtLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCitu
YW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07Cit9CisKK0Bp
bnRlcmZhY2UgV0tCYWNrRm9yd2FyZExpc3RJdGVtIChJbnRlcm5hbCkKKworLSAoaWQpX2luaXRX
aXRoSXRlbTooV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtJilpdGVtOworCitAZW5kCisK
KyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTU3NzIxKQorKysgU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0zOTgsNiArMzk4LDE2IEBACiAJCTM3OTQ4NDA0MTUwQzM1MDYwMEU1MkNFOSAvKiBX
ZWJSZW5kZXJMYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzc5NDg0MDIxNTBDMzUwNjAwRTUyQ0U5IC8qIFdlYlJlbmRlckxheWVyLmggKi87IH07
CiAJCTM3OTQ4NDA4MTUwQzRCOTcwMEU1MkNFOSAvKiBXS1JlbmRlckxheWVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3OTQ4NDA2MTUwQzRCOTYw
MEU1MkNFOSAvKiBXS1JlbmRlckxheWVyLmNwcCAqLzsgfTsKIAkJMzc5NDg0MDkxNTBDNEI5NzAw
RTUyQ0U5IC8qIFdLUmVuZGVyTGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDM3OTQ4NDA3MTUwQzRCOTYwMEU1MkNFOSAvKiBXS1JlbmRlckxheWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMzdD
NEMwODYxODE0OUM1QjAwMzY4OEI5IC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3QzRDMDg0MTgxNDlDNUIw
MDM2ODhCOSAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0ubW0gKi87IH07CisJCTM3QzRDMDg3MTgx
NDlDNUIwMDM2ODhCOSAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3QzRDMDg1MTgxNDlDNUIwMDM2ODhCOSAv
KiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkzN0M0QzA4OTE4MTQ5RjIzMDAzNjg4QjkgLyogV0tCYWNrRm9y
d2FyZExpc3RJdGVtSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDM3QzRDMDg4MTgxNDlGMjMwMDM2ODhCOSAvKiBXS0JhY2tGb3J3YXJkTGlz
dEl0ZW1JbnRlcm5hbC5oICovOyB9OworCQkzN0M0QzA4QzE4MTRBQzVDMDAzNjg4QjkgLyogV0tC
YWNrRm9yd2FyZExpc3QubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzN0M0QzA4QTE4MTRBQzVDMDAzNjg4QjkgLyogV0tCYWNrRm9yd2FyZExpc3QubW0g
Ki87IH07CisJCTM3QzRDMDhEMTgxNEFDNUMwMDM2ODhCOSAvKiBXS0JhY2tGb3J3YXJkTGlzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdDNEMwOEIx
ODE0QUM1QzAwMzY4OEI5IC8qIFdLQmFja0ZvcndhcmRMaXN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMzdDNEMwOTMxODE0QjNBRjAwMzY4OEI5
IC8qIFdLTlNBcnJheS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDM3QzRDMDkxMTgxNEIzQUYwMDM2ODhCOSAvKiBXS05TQXJyYXkubW0gKi87IH07CisJ
CTM3QzRDMDk0MTgxNEIzQUYwMDM2ODhCOSAvKiBXS05TQXJyYXkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3QzRDMDkyMTgxNEIzQUYwMDM2ODhCOSAv
KiBXS05TQXJyYXkuaCAqLzsgfTsKKwkJMzdDNEMwOTUxODE0QjlFNjAwMzY4OEI5IC8qIFdLQmFj
a0ZvcndhcmRMaXN0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDM3QzRDMDhFMTgxNEFGM0EwMDM2ODhCOSAvKiBXS0JhY2tGb3J3YXJkTGlz
dEludGVybmFsLmggKi87IH07CisJCTM3QzRDMDk4MTgxNEJGOUMwMDM2ODhCOSAvKiBXS05TT2Jq
ZWN0RXh0cmFzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzdDNEMwOTYxODE0QkY5QzAwMzY4OEI5IC8qIFdLTlNPYmplY3RFeHRyYXMubW0gKi87IH07
CisJCTM3QzRDMDk5MTgxNEJGOUMwMDM2ODhCOSAvKiBXS05TT2JqZWN0RXh0cmFzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0M0QzA5NzE4MTRCRjlD
MDAzNjg4QjkgLyogV0tOU09iamVjdEV4dHJhcy5oICovOyB9OwogCQkzN0M0RTlGNjEzMUM2RTdF
MDAyOUJENUEgLyogY29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCMzk2RUE1NTEyRTBFRDJEMDBGNEZFQjcgLyogY29uZmlnLmggKi87IH07CiAJ
CTM3REZBNzAwMTgxMEJCOTIwMDFGNEE5RiAvKiBXS0ZvdW5kYXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3REZBNkZGMTgxMEJCOTIwMDFGNEE5
RiAvKiBXS0ZvdW5kYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMs
ICk7IH07IH07CiAJCTM3RjYyM0I4MTJBNTdCNjIwMEUzRkRGNiAvKiBXS0ZpbmRPcHRpb25zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0Y2MjNCNzEy
QTU3QjYyMDBFM0ZERjYgLyogV0tGaW5kT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04ODQsMTAgKzg5NCwxMCBAQAogCQlCQzYwQzU3
QTEyNDBBNTQ2MDA4QzVFMjkgLyogV0tCdW5kbGVSYW5nZUhhbmRsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzYwQzU3ODEyNDBBNTQ2MDA4QzVF
MjkgLyogV0tCdW5kbGVSYW5nZUhhbmRsZS5jcHAgKi87IH07CiAJCUJDNjQ2OTZGMTFEQkU2MDMw
MDY0NTVCMCAvKiBJbW11dGFibGVBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzY0Njk2RDExREJFNjAzMDA2NDU1QjAgLyogSW1tdXRhYmxl
QXJyYXkuY3BwICovOyB9OwogCQlCQzY0Njk3MDExREJFNjAzMDA2NDU1QjAgLyogSW1tdXRhYmxl
QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
NjQ2OTZFMTFEQkU2MDMwMDY0NTVCMCAvKiBJbW11dGFibGVBcnJheS5oICovOyB9OwotCQlCQzY0
NkMxQTExREQzOTlGMDA2NDU1QjAgLyogV0tCYWNrRm9yd2FyZExpc3QuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2NDZDMTYxMUREMzk5RjAwNjQ1
NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0LmNwcCAqLzsgfTsKLQkJQkM2NDZDMUIxMUREMzk5RjAw
NjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzY0NkMxNzExREQzOTlGMDA2NDU1QjAgLyogV0tCYWNrRm9y
d2FyZExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQlCQzY0NkMxQzExREQzOTlGMDA2NDU1QjAgLyogV0tCYWNrRm9yd2FyZExpc3RJdGVtLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjQ2QzE4
MTFERDM5OUYwMDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwICovOyB9OwotCQlC
QzY0NkMxRDExREQzOTlGMDA2NDU1QjAgLyogV0tCYWNrRm9yd2FyZExpc3RJdGVtLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzY0NkMxOTExREQzOTlG
MDA2NDU1QjAgLyogV0tCYWNrRm9yd2FyZExpc3RJdGVtLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkM2NDZDMUExMUREMzk5RjAwNjQ1NUIwIC8q
IFdLQmFja0ZvcndhcmRMaXN0UmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDNjQ2QzE2MTFERDM5OUYwMDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJk
TGlzdFJlZi5jcHAgKi87IH07CisJCUJDNjQ2QzFCMTFERDM5OUYwMDY0NTVCMCAvKiBXS0JhY2tG
b3J3YXJkTGlzdFJlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkM2NDZDMTcxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0UmVmLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkM2NDZD
MUMxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzY0NkMxODExREQzOTlG
MDA2NDU1QjAgLyogV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmLmNwcCAqLzsgfTsKKwkJQkM2NDZD
MUQxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2NDZDMTkxMUREMzk5RjAw
NjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNkVEQUE2MTExMjcxQzYwMEU3Njc4QiAv
KiBQYWdlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzZFREFBNTExMTI3MUM2MDBFNzY3OEIgLyogUGFnZUNsaWVudC5oICovOyB9OwogCQlC
QzcwNDNDQzEyRjc1RUUwMDA2NDcyQjkgLyogV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzcwNDNDQTEyRjc1
RUUwMDA2NDcyQjkgLyogV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM3MDQzQ0QxMkY3NUVFMDAwNjQ3
MkI5IC8qIFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzcwNDNDQjEyRjc1RUUwMDA2NDcyQjkgLyogV0tC
dW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcCAqLzsgfTsKQEAgLTE4NjEsNiArMTg3MSwxNiBAQAog
CQkzNzk0ODQwMjE1MEMzNTA2MDBFNTJDRTkgLyogV2ViUmVuZGVyTGF5ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVuZGVyTGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzc5NDg0MDYxNTBDNEI5NjAwRTUyQ0U5IC8qIFdLUmVuZGVyTGF5ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tSZW5kZXJMYXllci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3OTQ4NDA3MTUwQzRCOTYwMEU1MkNF
OSAvKiBXS1JlbmRlckxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
UmVuZGVyTGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzdDNEMwODQxODE0
OUM1QjAwMzY4OEI5IC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLQmFja0ZvcndhcmRMaXN0SXRlbS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzdDNEMwODUxODE0OUM1QjAwMzY4OEI5IC8qIFdLQmFj
a0ZvcndhcmRMaXN0SXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Jh
Y2tGb3J3YXJkTGlzdEl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzdDNEMw
ODgxODE0OUYyMzAwMzY4OEI5IC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbUludGVybmFsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQmFja0ZvcndhcmRMaXN0SXRlbUludGVy
bmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTM3QzRDMDhBMTgxNEFDNUMwMDM2
ODhCOSAvKiBXS0JhY2tGb3J3YXJkTGlzdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdLQmFja0ZvcndhcmRMaXN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzN0M0QzA4QjE4MTRBQzVDMDAzNjg4QjkgLyogV0tCYWNrRm9yd2FyZExpc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCYWNrRm9yd2FyZExpc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzdDNEMwOEUxODE0QUYzQTAwMzY4OEI5IC8qIFdL
QmFja0ZvcndhcmRMaXN0SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tCYWNrRm9yd2FyZExpc3RJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzN0M0QzA5MTE4MTRCM0FGMDAzNjg4QjkgLyogV0tOU0FycmF5Lm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tOU0FycmF5Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkzN0M0QzA5MjE4MTRCM0FGMDAzNjg4QjkgLyogV0tOU0FycmF5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTlNBcnJheS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkzN0M0QzA5NjE4MTRCRjlDMDAzNjg4QjkgLyogV0tOU09iamVj
dEV4dHJhcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLTlNP
YmplY3RFeHRyYXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTM3QzRDMDk3MTgx
NEJGOUMwMDM2ODhCOSAvKiBXS05TT2JqZWN0RXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLTlNPYmplY3RFeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzdERkE2RkYxODEwQkI5MjAwMUY0QTlGIC8qIFdLRm91bmRhdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0ZvdW5kYXRpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzdGNjIzQjcxMkE1N0I2MjAwRTNGREY2IC8qIFdLRmluZE9wdGlvbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tGaW5kT3B0aW9ucy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzRjg3QjlCQTE1ODkzRjYzMDA5MEZGNjIgLyogV2Vi
Q29sb3JDaG9vc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YkNvbG9yQ2hvb3Nlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzgxLDEw
ICsyNDAxLDEwIEBACiAJCUJDNjBDNTc4MTI0MEE1NDYwMDhDNUUyOSAvKiBXS0J1bmRsZVJhbmdl
SGFuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLQnVuZGxl
UmFuZ2VIYW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzY0Njk2RDEx
REJFNjAzMDA2NDU1QjAgLyogSW1tdXRhYmxlQXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW1tdXRhYmxlQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQzY0Njk2RTExREJFNjAzMDA2NDU1QjAgLyogSW1tdXRhYmxlQXJyYXkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1tdXRhYmxlQXJyYXkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkM2NDZDMTYxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFj
a0ZvcndhcmRMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdL
QmFja0ZvcndhcmRMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkM2NDZD
MTcxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdLQmFja0ZvcndhcmRMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUJDNjQ2QzE4MTFERDM5OUYwMDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlz
dEl0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tCYWNrRm9y
d2FyZExpc3RJdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkM2NDZDMTkx
MUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQkM2NDZDMTYxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0Zvcndh
cmRMaXN0UmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLQmFj
a0ZvcndhcmRMaXN0UmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM2NDZD
MTcxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0UmVmLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQmFja0ZvcndhcmRMaXN0UmVmLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUJDNjQ2QzE4MTFERDM5OUYwMDY0NTVCMCAvKiBXS0JhY2tGb3J3
YXJkTGlzdEl0ZW1SZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQkM2NDZDMTkxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1S
ZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM2RURBQTUxMTEyNzFDNjAwRTc2
NzhCIC8qIFBhZ2VDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFn
ZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzcwNDNDQTEyRjc1RUUw
MDA2NDcyQjkgLyogV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQzcwNDNDQjEyRjc1RUUwMDA2NDcyQjkgLyogV0tCdW5kbGVOYXZp
Z2F0aW9uQWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdL
QnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0zMjI1LDEyICszMjQ1LDEzIEBACiAJCTFBQURERjRCMTBEODJBRjAwMEQzRDYzRCAvKiBTaGFy
ZWQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTUxRTM1
MUMyMTgwRjJDODUwMEU1M0JFOSAvKiBEYXRhYmFzZXMgKi8sCiAJCQkJQkNEREIzMTQxMjRFQkNF
RjAwNDhEMTNDIC8qIEFQSSAqLywKIAkJCQk1MThFOEVGMTE2QjIwOEYwMDBFOTE0MjkgLyogQXV0
aGVudGljYXRpb24gKi8sCiAJCQkJMUFBRjBDNDcxMkIxNjMyODAwOEU0OUUyIC8qIGNmICovLAog
CQkJCUMwMUEyNUZGMTI2NjJGMjEwMEM5RUQ1NSAvKiBjZyAqLywKKwkJCQkzN0M0QzA5MDE4MTRC
MzdCMDAzNjg4QjkgLyogQ29jb2EgKi8sCiAJCQkJQkMxMTFCNUYxMTJGNjM1RTAwMzM3QkFCIC8q
IENvcmVJUENTdXBwb3J0ICovLAorCQkJCTUxRTM1MUMyMTgwRjJDODUwMEU1M0JFOSAvKiBEYXRh
YmFzZXMgKi8sCiAJCQkJNTE4RThFRjIxNkIyMDhGODAwRTkxNDI5IC8qIERvd25sb2FkcyAqLywK
IAkJCQlCQzgyODM2ODE2QjM1ODc5MDBBMjc4RkUgLyogRW50cnlQb2ludFV0aWxpdGllcyAqLywK
IAkJCQlFMTcwODc3MjE2RDZDRkVDMDBGOTkyMjYgLyogRmlsZUFQSSAqLywKQEAgLTM2MDUsNiAr
MzYyNiwzMSBAQAogCQkJbmFtZSA9IGNmOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJ
fTsKKwkJMzdDNEMwODMxODE0OUMyQTAwMzY4OEI5IC8qIENvY29hICovID0geworCQkJaXNhID0g
UEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkzN0M0QzA4QjE4MTRBQzVDMDAzNjg4Qjkg
LyogV0tCYWNrRm9yd2FyZExpc3QuaCAqLywKKwkJCQkzN0M0QzA4QTE4MTRBQzVDMDAzNjg4Qjkg
LyogV0tCYWNrRm9yd2FyZExpc3QubW0gKi8sCisJCQkJMzdDNEMwOEUxODE0QUYzQTAwMzY4OEI5
IC8qIFdLQmFja0ZvcndhcmRMaXN0SW50ZXJuYWwuaCAqLywKKwkJCQkzN0M0QzA4NTE4MTQ5QzVC
MDAzNjg4QjkgLyogV0tCYWNrRm9yd2FyZExpc3RJdGVtLmggKi8sCisJCQkJMzdDNEMwODQxODE0
OUM1QjAwMzY4OEI5IC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbS5tbSAqLywKKwkJCQkzN0M0QzA4
ODE4MTQ5RjIzMDAzNjg4QjkgLyogV0tCYWNrRm9yd2FyZExpc3RJdGVtSW50ZXJuYWwuaCAqLywK
KwkJCSk7CisJCQluYW1lID0gQ29jb2E7CisJCQlwYXRoID0gVUlQcm9jZXNzL0NvY29hOworCQkJ
c291cmNlVHJlZSA9IFNPVVJDRV9ST09UOworCQl9OworCQkzN0M0QzA5MDE4MTRCMzdCMDAzNjg4
QjkgLyogQ29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAor
CQkJCTM3QzRDMDkyMTgxNEIzQUYwMDM2ODhCOSAvKiBXS05TQXJyYXkuaCAqLywKKwkJCQkzN0M0
QzA5MTE4MTRCM0FGMDAzNjg4QjkgLyogV0tOU0FycmF5Lm1tICovLAorCQkJCTM3QzRDMDk3MTgx
NEJGOUMwMDM2ODhCOSAvKiBXS05TT2JqZWN0RXh0cmFzLmggKi8sCisJCQkJMzdDNEMwOTYxODE0
QkY5QzAwMzY4OEI5IC8qIFdLTlNPYmplY3RFeHRyYXMubW0gKi8sCisJCQkpOworCQkJcGF0aCA9
IENvY29hOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJMzdERkE2RkUxODEw
QkIyRDAwMUY0QTlGIC8qIENvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKQEAgLTQyODcsNiArNDMzMyw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAogCQkJCUJDMEMzNzY2MTBGODA3NjYwMDc2RDdDQiAvKiBDICovLAorCQkJCTM3
QzRDMDgzMTgxNDlDMkEwMDM2ODhCOSAvKiBDb2NvYSAqLywKIAkJCQlCQzhBNTAxMzExNzY1RjQ1
MDA3NTc1NzMgLyogY3BwICovLAogCQkJCUJDMTExQjQ3MTEyRjYxNjkwMDMzN0JBQiAvKiBtYWMg
Ki8sCiAJCQkpOwpAQCAtNDMwNiwxMCArNDM1MywxMCBAQAogCQkJCTUxMkY1OEVFMTJBODhBNTQw
MDYyOTUzMCAvKiBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggKi8sCiAJCQkJNTEyRjU4RUYx
MkE4OEE1NDAwNjI5NTMwIC8qIFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcCAq
LywKIAkJCQk1MTJGNThGMDEyQTg4QTU0MDA2Mjk1MzAgLyogV0tBdXRoZW50aWNhdGlvbkRlY2lz
aW9uTGlzdGVuZXIuaCAqLywKLQkJCQlCQzY0NkMxNjExREQzOTlGMDA2NDU1QjAgLyogV0tCYWNr
Rm9yd2FyZExpc3QuY3BwICovLAotCQkJCUJDNjQ2QzE3MTFERDM5OUYwMDY0NTVCMCAvKiBXS0Jh
Y2tGb3J3YXJkTGlzdC5oICovLAotCQkJCUJDNjQ2QzE4MTFERDM5OUYwMDY0NTVCMCAvKiBXS0Jh
Y2tGb3J3YXJkTGlzdEl0ZW0uY3BwICovLAotCQkJCUJDNjQ2QzE5MTFERDM5OUYwMDY0NTVCMCAv
KiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0uaCAqLywKKwkJCQlCQzY0NkMxNjExREQzOTlGMDA2NDU1
QjAgLyogV0tCYWNrRm9yd2FyZExpc3RSZWYuY3BwICovLAorCQkJCUJDNjQ2QzE3MTFERDM5OUYw
MDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlzdFJlZi5oICovLAorCQkJCUJDNjQ2QzE4MTFERDM5
OUYwMDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYuY3BwICovLAorCQkJCUJDNjQ2
QzE5MTFERDM5OUYwMDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYuaCAqLywKIAkJ
CQlGMDM2OTc4MzE1RjRCRTZCMDBDM0E4MEUgLyogV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVy
LmNwcCAqLywKIAkJCQlGMDM2OTc4NDE1RjRCRTZCMDBDM0E4MEUgLyogV0tDb2xvclBpY2tlclJl
c3VsdExpc3RlbmVyLmggKi8sCiAJCQkJQkNCOUUyNEExMTIwRTE1QzAwQTEzN0UwIC8qIFdLQ29u
dGV4dC5jcHAgKi8sCkBAIC01MzcwLDYgKzU0MTcsNyBAQAogCQkJCTFBQTU3NUZCMTQ5NkI1MjYw
MEE0RUUwNiAvKiBFdmVudERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOTBDMUY0
MTI2NEZENzEwMDNFNDRENCAvKiBGaW5kQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUE5MTAwNzExMjY2NzVDNDAwMTg0MkY1IC8qIEZpbmRJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICov
LAorCQkJCTM3QzRDMDg3MTgxNDlDNUIwMDM2ODhCOSAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0u
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBOTEwMTBBMTI2OEM4Q0EwMDE4NDJGNSAvKiBGaW5kSW5k
aWNhdG9yV2luZG93LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0U4MUQ4RDEzMTlGN0VGMDAyNDE5
MTAgLyogRm9udEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTc3NTNGMTE4QkFCRjAwMDdE
OUU5QSAvKiBHZW5lcmljQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLApAQCAtNTQwNCw2ICs1NDUy
LDcgQEAKIAkJCQkxQUU0OTg3ODExRkY3RkFBMDA0OEI0NjQgLyogSlNOUE9iamVjdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUE1ODhCMzMxNzRBQUUwQjAwQUNGNDcyIC8qIEtleWVkQ29kaW5nVmFs
dWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTg4QjM3MTc0QUI3NzAwMEFDRjQ3MiAvKiBLZXll
ZENvZGluZ1ZhbHVlQ0YuaCBpbiBIZWFkZXJzICovLAorCQkJCTM3QzRDMDk5MTgxNEJGOUMwMDM2
ODhCOSAvKiBXS05TT2JqZWN0RXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU4OEIzMTE3
NEFBQzcxMDBBQ0Y0NzIgLyogS2V5ZWRFbmNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Uw
OTM3ODE0RkIxMjhDMDAxMTM4RDkgLyogTGF5ZXJIb3N0aW5nQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUE5MkRDMTExMkY4QkE0NjAwMTdBRjY1IC8qIExheWVyVHJlZUNvbnRleHQuaCBp
biBIZWFkZXJzICovLApAQCAtNTYzOSw2ICs1Njg4LDcgQEAKIAkJCQlCQzU5NTM0MjEwRkMwNDUy
MDA5OEY4MkQgLyogV2ViTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkzM0QzQTND
MjEzMzk2MEIwMDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTMzRDNBM0M5MTMzOTYxNzkwMDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hlTWFuYWdlck1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQkzN0M0QzA4RDE4MTRBQzVDMDAzNjg4QjkgLyog
V0tCYWNrRm9yd2FyZExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTMzRDNBM0JCMTMzOTYwNjIw
MDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkzM0QzQTNDQjEzMzk2MTc5MDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eU1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MDk4NTRFRDEyQkM0RTE4MDAwQUQwODAgLyog
V2ViTWVtb3J5U2FtcGxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC01NzA5LDggKzU3NTksOSBAQAog
CQkJCTUxMkY1OEY2MTJBODhBNTQwMDYyOTUzMCAvKiBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJGNThGODEyQTg4QTU0MDA2Mjk1MzAgLyogV0tBdXRo
ZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkE5NzZB
MTgwRTA5QjgwMDM5QTE0OSAvKiBEYXRhYmFzZVByb2Nlc3NQcm94eU1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLywKLQkJCQlCQzY0NkMxQjExREQzOTlGMDA2NDU1QjAgLyogV0tCYWNrRm9yd2FyZExp
c3QuaCBpbiBIZWFkZXJzICovLAotCQkJCUJDNjQ2QzFEMTFERDM5OUYwMDY0NTVCMCAvKiBXS0Jh
Y2tGb3J3YXJkTGlzdEl0ZW0uaCBpbiBIZWFkZXJzICovLAorCQkJCUJDNjQ2QzFCMTFERDM5OUYw
MDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlzdFJlZi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzdD
NEMwOTUxODE0QjlFNjAwMzY4OEI5IC8qIFdLQmFja0ZvcndhcmRMaXN0SW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUJDNjQ2QzFEMTFERDM5OUYwMDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJk
TGlzdEl0ZW1SZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRERCMzE3MTI0RUJEMTMwMDQ4RDEz
QyAvKiBXS0Jhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRDVFQkJCMTc0NkE4M0UwMDBDMUM0
NSAvKiBXS0Jhc2VNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQkFBQzczMTQ0RTYxOUUwMDUz
RjgyRiAvKiBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLApAQCAt
NTc5MSw2ICs1ODQyLDcgQEAKIAkJCQlCNjJFNzMxMjE0MzA0N0IwMDA2OUVDMzUgLyogV0tIaXRU
ZXN0UmVzdWx0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTEwQUUwRDEzM0MxNkNCMDA3MjcxN0Eg
LyogV0tJY29uRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMjNDRjFDMTMzRDI2MEEw
MDU2RjgwMCAvKiBXS0ljb25EYXRhYmFzZUNHLmggaW4gSGVhZGVycyAqLywKKwkJCQkzN0M0QzA5
NDE4MTRCM0FGMDAzNjg4QjkgLyogV0tOU0FycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0NG
NkFDMzEyQzkxRjM0MDA4RjlDMzUgLyogV0tJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkND
RjZBQ0ExMkM5MUY1OTAwOEY5QzM1IC8qIFdLSW1hZ2VDRy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUM4RTI5MzkxMjc2MUU1QjAwQkM3QkQwIC8qIFdLSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywK
QEAgLTU4MjIsNiArNTg3NCw3IEBACiAJCQkJMUFDODZGRjQxMzBCNDZEMzAwMkMxMjU3IC8qIFdL
UGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Q1OTdEMDExMkI1
NkFDMDBFQzhDMjMgLyogV0tQcmVmZXJlbmNlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzYyQjc0
OEQxMjBCQzc1QzAwODE5MzM5IC8qIFdLUHJlZmVyZW5jZXNQcml2YXRlLmggaW4gSGVhZGVycyAq
LywKKwkJCQkzN0M0QzA4OTE4MTQ5RjIzMDAzNjg4QjkgLyogV0tCYWNrRm9yd2FyZExpc3RJdGVt
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMzRGMDE3MTJFQTVEMzMwMDRFQzU4RCAv
KiBXS1ByaW50aW5nVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCQUFDRUIxNDUyMjVFMzAw
NTNGODJGIC8qIFdLUHJvY2Vzc0dyb3VwLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0JBQUNFRDE0
NTIyNUUzMDA1M0Y4MkYgLyogV0tQcm9jZXNzR3JvdXBQcml2YXRlLmggaW4gSGVhZGVycyAqLywK
QEAgLTY2MzAsNiArNjY4Myw3IEBACiAJCQkJNTE4RThGMEIxNkIyMDkzNzAwRTkxNDI5IC8qIERv
d25sb2FkTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI3RDRDQjEyODhBQUE3MDBD
RkQwOEMgLyogRG93bmxvYWRQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUQyNUU5NTE2
N0FCMDgxMDBFQTlCQ0QgLyogRG93bmxvYWRQcm94eU1hcC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkzN0M0QzA4NjE4MTQ5QzVCMDAzNjg4QjkgLyogV0tCYWNrRm9yd2FyZExpc3RJdGVtLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUFCN0Q2MTkxMjg4QjlEOTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4NDUyQTcxMTYyQzgw
OTAwQ0FCOUI1IC8qIERyYXdpbmdBcmVhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNjQyMjk5
MTJERDAyOTIwMENBQUUyQyAvKiBEcmF3aW5nQXJlYU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTY2NTMsNiArNjcwNyw3IEBACiAJCQkJQkM2NDY5NkYxMURCRTYwMzAwNjQ1
NUIwIC8qIEltbXV0YWJsZUFycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQkNCMENEMTIx
NUUzM0EwMERFNTlDQSAvKiBJbW11dGFibGVEaWN0aW9uYXJ5LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDMjA0RUUyMTFDODNFOTgwMDhGMzM3NSAvKiBJbmplY3RlZEJ1bmRsZS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkzN0M0QzA5MzE4MTRCM0FGMDAzNjg4QjkgLyogV0tOU0FycmF5Lm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTM1RUVCQTExMjc3NjFDQzAwMzMyMkI4IC8qIEluamVjdGVkQnVu
ZGxlQmFja0ZvcndhcmRMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzNUVFQkEzMTI3NzYx
RDMwMDMzMjJCOCAvKiBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkNFRTdEQzYxMjhCNjQ1RDAwOTgyN0RBIC8qIEluamVjdGVkQnVuZGxl
Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNjg5Miw2ICs2OTQ3LDcgQEAKIAkJCQlDNTc0
QTM3NzEyRTYwOTlEMDAyREZFOTggLyogV2ViRHJhZ0NsaWVudE1hYy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUJDQTBFRkEwMTIzMzI2NDIwMDdEM0NGQiAvKiBXZWJFZGl0Q29tbWFuZFByb3h5LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDMTExQTVFMTEyRjRGQkIwMDMzN0JBQiAvKiBXZWJFZGl0
b3JDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzdDNEMwOTgxODE0QkY5QzAwMzY4OEI5
IC8qIFdLTlNPYmplY3RFeHRyYXMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDNTIzN0Y2MDEyNDQx
Q0EzMDA3ODA0NzIgLyogV2ViRWRpdG9yQ2xpZW50TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkM1NzU2MTMxMjZFMDEzODAwNkYwRjEyIC8qIFdlYkVycm9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDMTExQUUwMTEyRjVCQzIwMDMzN0JBQiAvKiBXZWJFcnJvcnNNYWMubW0gaW4gU291cmNl
cyAqLywKQEAgLTcwMjQsOCArNzA4MCw4IEBACiAJCQkJNTEyRjU4RjUxMkE4OEE1NDAwNjI5NTMw
IC8qIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFF
MzUxQ0ExODBGMkNDQzAwRTUzQkU5IC8qIElEQlV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MTJGNThGNzEyQTg4QTU0MDA2Mjk1MzAgLyogV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9u
TGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQkM2NDZDMUExMUREMzk5RjAwNjQ1NUIw
IC8qIFdLQmFja0ZvcndhcmRMaXN0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJDNjQ2QzFDMTFE
RDM5OUYwMDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQkM2NDZDMUExMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0UmVmLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUJDNjQ2QzFDMTFERDM5OUYwMDY0NTVCMCAvKiBXS0JhY2tG
b3J3YXJkTGlzdEl0ZW1SZWYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNCQUFDNzIxNDRFNjE5
OTAwNTNGODJGIC8qIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUJDQkFBQ0Y1MTQ1MjMyNEYwMDUzRjgyRiAvKiBXS0Jyb3dzaW5nQ29udGV4dEdyb3Vw
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMyMDRFRUUxMUM4M0VDODAwOEYzMzc1IC8qIFdLQnVu
ZGxlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzAzOSw2ICs3MDk1LDcgQEAKIAkJCQlCQzRCRUZF
MjEyMEExQTRDMDBGQkEwQzcgLyogV0tCdW5kbGVOb2RlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDMjA1MjgyMTFDOTQyODQwMDhGMzM3NSAvKiBXS0J1bmRsZVBhZ2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0NGNDdGRjYxNzI3NUI3MTAwOEFDQjkxIC8qIFdLQnVuZGxlUGFnZUJh
bm5lci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzN0M0QzA4QzE4MTRBQzVDMDAzNjg4QjkgLyog
V0tCYWNrRm9yd2FyZExpc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0Y0N0ZGRTE3Mjc2QUUz
MDA4QUNCOTEgLyogV0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkM3QjYzM0UxMkE0NUQxMjAwRDE3NEE0IC8qIFdLQnVuZGxlUGFnZUdyb3VwLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUVEQ0E3MUI3MTI4RERBOEMwMDIwMUIyNiAvKiBXS0J1bmRsZVBhZ2VPdmVy
bGF5LmNwcCBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214773</attachid>
            <date>2013-10-21 13:38:26 -0700</date>
            <delta_ts>2013-10-21 15:07:39 -0700</delta_ts>
            <desc>Add WKBackForwardList and WKBackForwardListItem</desc>
            <filename>bug-123109-20131021133903.patch</filename>
            <type>text/plain</type>
            <size>78134</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzczMCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc5IEBACisyMDEzLTEwLTIxICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBCYWNrL2ZvcndhcmQg
bGlzdCBVSSBwcm9jZXNzIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTIzMTA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogVXBkYXRlZCBmb3IgcmVuYW1lcy4KKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBEaXR0by4KKworICAgICAgICAqIFNoYXJlZC9Db2Nv
YTogQWRkZWQuCisgICAgICAgICogU2hhcmVkL0NvY29hL1dLTlNBcnJheS5oOiBBZGRlZC4gV0tO
U0FycmF5IGlzIGFuIGludGVybmFsIE5TQXJyYXkgc3ViY2xhc3MgYmFja2VkIGJ5CisgICAgICAg
IGEgV2ViS2l0OjpJbW11dGFibGVBcnJheS4KKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV0tOU0Fy
cmF5Lm1tOiBBZGRlZC4KKyAgICAgICAgKCtbV0tOU0FycmF5IHdlYl9hcnJheVdpdGhJbW11dGFi
bGVBcnJheTpdKTogQWRkZWQuCisgICAgICAgICgtW1dLTlNBcnJheSB3ZWJfaW5pdFdpdGhJbW11
dGFibGVBcnJheTpdKTogQWRkZWQuCisgICAgICAgICgtW1dLTlNBcnJheSBjb3VudF0pOiBBZGRl
ZC4KKyAgICAgICAgKC1bV0tOU0FycmF5IG9iamVjdEF0SW5kZXg6XSk6IEFkZGVkLgorICAgICAg
ICAoLVtXS05TQXJyYXkgY29weVdpdGhab25lOl0pOiBBZGRlZC4KKworICAgICAgICAqIFNoYXJl
ZC9Db2NvYS9XS05TT2JqZWN0RXh0cmFzLmg6IEFkZGVkLiBEZWNsYXJlcyBhIGNhdGVnb3J5IG9u
IE5TT2JqZWN0IHRoYXQgYWxsb3dzIHVzIHRvCisgICAgICAgIHZlbmQgV2ViS2l0IEFQSSBvYmpl
Y3RzIGFzIE9iamVjdGl2ZS1DIG9iamVjdHMuCisgICAgICAgICogU2hhcmVkL0NvY29hL1dLTlNP
YmplY3RFeHRyYXMubW06IEFkZGVkLgorICAgICAgICAoLVtXS09iamVjdCBpbml0V2l0aEFQSU9i
amVjdDpdKTogV0tPYmplY3QgaXMgdGhlIGdlbmVyaWMgQ29jb2Egd3JhcHBlciBmb3IgQVBJIG9i
amVjdHMuCisgICAgICAgICgtW1dLT2JqZWN0IGlzRXF1YWw6XSk6IENoZWNrIGZvciBlcXVhbGl0
eSBvZiB0aGUgdW5kZXJseWluZyBvYmplY3QuCisgICAgICAgICgtW1dLT2JqZWN0IGhhc2hdKTog
UmV0dXJuIGEgcG9pbnRlciB0byB0aGUgdW5kZXJseWluZyBvYmplY3QuCisgICAgICAgICgtW1dL
T2JqZWN0IGRlc2NyaXB0aW9uXSk6IEFkZGVkLgorICAgICAgICAoK1tOU09iamVjdCBfd2ViX29i
amVjdFdpdGhBUElPYmplY3Q6XSk6IEFkZGVkLiBSZXR1cm5zIGFuIGFwcHJvcHJpYXRlIE9iamVj
dGl2ZS1DIG9iamVjdAorICAgICAgICBmb3IgdGhlIGdpdmVuIEFQSSBvYmplY3QuIEN1cnJlbnRs
eSByZXR1cm5zIGEgV0tCYWNrRm9yd2FyZExpc3RJdGVtIGZvciBhIGJhY2svZm9yd2FyZCBsaXN0
CisgICAgICAgIGl0ZW0gYW5kIGEgZ2VuZXJpYyBXS09iamVjdCBmb3IgYWxsIG90aGVyIHR5cGVz
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0LmNwcDogUmVu
YW1lZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3QuaDogUmVu
YW1lZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RJdGVtLmNw
cDogUmVuYW1lZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RJ
dGVtLmg6IFJlbmFtZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRM
aXN0SXRlbVJlZi5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0SXRlbS5oLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdFJlZi5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdC5jcHAuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0UmVmLmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdC5oLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dlYktpdDJfQy5oOiBVcGRhdGVkIGZvciBoZWFkZXIgcmVuYW1lcy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdC5jcHA6
IFVwZGF0ZWQgZm9yIHJlbmFtZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFj
a19mb3J3YXJkX2xpc3RfaXRlbS5jcHA6IERpdHRvLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9tYWMvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLmg6IERlY2xhcmVkIGJhY2tGb3J3YXJk
TGlzdCBwcm9wZXJ0eS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
ciBiYWNrRm9yd2FyZExpc3RdKTogQWRkZWQgdGhpcyBhY2Nlc3Nvci4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dLQmFja0Zv
cndhcmRMaXN0Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XS0JhY2tGb3J3
YXJkTGlzdC5tbTogQWRkZWQuCisgICAgICAgICh0b1dLQmFja0ZvcndhcmRMaXN0SXRlbSk6IEFk
ZGVkIHRoaXMgaGVscGVyLgorICAgICAgICAoLVtXS0JhY2tGb3J3YXJkTGlzdCBjdXJyZW50SXRl
bV0pOiBBZGRlZC4KKyAgICAgICAgKC1bV0tCYWNrRm9yd2FyZExpc3QgYmFja0l0ZW1dKTogQWRk
ZWQuCisgICAgICAgICgtW1dLQmFja0ZvcndhcmRMaXN0IGZvcndhcmRJdGVtXSk6IEFkZGVkLgor
ICAgICAgICAoLVtXS0JhY2tGb3J3YXJkTGlzdCBpdGVtQXRJbmRleDpdKTogQWRkZWQuCisgICAg
ICAgICgtW1dLQmFja0ZvcndhcmRMaXN0IGJhY2tMaXN0Q291bnRdKTogQWRkZWQuCisgICAgICAg
ICgtW1dLQmFja0ZvcndhcmRMaXN0IGZvcndhcmRMaXN0Q291bnRdKTogQWRkZWQuCisgICAgICAg
ICgtW1dLQmFja0ZvcndhcmRMaXN0IGJhY2tMaXN0V2l0aExpbWl0Ol0pOiBBZGRlZC4KKyAgICAg
ICAgKC1bV0tCYWNrRm9yd2FyZExpc3QgZm9yd2FyZExpc3RXaXRoTGltaXQ6XSk6IEFkZGVkLgor
ICAgICAgICAoLVtXS0JhY2tGb3J3YXJkTGlzdCBfaW5pdFdpdGhMaXN0Ol0pOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3RJbnRlcm5hbC5oOiBBZGRl
ZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XS0JhY2tGb3J3YXJkTGlzdEl0ZW0uaDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dLQmFja0ZvcndhcmRMaXN0SXRlbS5t
bTogQWRkZWQuCisgICAgICAgICgtW1dLQmFja0ZvcndhcmRMaXN0SXRlbSBVUkxdKTogQWRkZWQu
CisgICAgICAgICgtW1dLQmFja0ZvcndhcmRMaXN0SXRlbSB0aXRsZV0pOiBBZGRlZC4KKyAgICAg
ICAgKC1bV0tCYWNrRm9yd2FyZExpc3RJdGVtIG9yaWdpbmFsVVJMXSk6IEFkZGVkLgorICAgICAg
ICAoLVtXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gaXNFcXVhbDpdKTogQ2hlY2sgZm9yIGVxdWFsaXR5
IG9mIHRoZSB1bmRlcmx5aW5nIG9iamVjdC4KKyAgICAgICAgKC1bV0tCYWNrRm9yd2FyZExpc3RJ
dGVtIGhhc2hdKTogUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgdW5kZXJseWluZyBvYmplY3QKKyAg
ICAgICAgKC1bV0tCYWNrRm9yd2FyZExpc3RJdGVtIF9pbml0V2l0aEl0ZW06XSk6IEFkZGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XS0JhY2tGb3J3YXJkTGlzdEl0ZW1JbnRlcm5hbC5o
OiBBZGRlZC4KKworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajog
VXBkYXRlZCBmb3IgcmVuYW1lcyBhbmQgYWRkaXRpb25zLgorCiAyMDEzLTEwLTIxICBCcmFkeSBF
aWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBUcmFuc2l0aW9uIG1vc3QgdXNl
IG9mIElEQkJhY2tpbmdTdG9yZUxldmVsREIgdG8gSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTU3NzIxKQorKysgU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM1Miw4ICszNTIsOCBAQCBzZXQo
V2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
Y3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVy
LmNwcAotICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdC5jcHAKLSAgICBVSVBy
b2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkv
Qy9XS0JhY2tGb3J3YXJkTGlzdFJlZi5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9y
d2FyZExpc3RJdGVtUmVmLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0JhdHRlcnlNYW5hZ2Vy
LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0JhdHRlcnlTdGF0dXMuY3BwCiAgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5jcHAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
R05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTU3NzIxKQorKysgU291cmNlL1dlYktpdDIv
R05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNTAsOCArNTAsOCBAQCB3ZWJr
aXQyX2hfYXBpICs9IFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9DL1dLQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50
aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCBcCi0JJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL0Mv
V0tCYWNrRm9yd2FyZExpc3QuaCBcCi0JJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL0MvV0tCYWNr
Rm9yd2FyZExpc3RJdGVtLmggXAorCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9DL1dLQmFja0Zv
cndhcmRMaXN0UmVmLmggXAorCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9DL1dLQmFja0Zvcndh
cmRMaXN0SXRlbVJlZi5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvQy9XS0JhdHRlcnlN
YW5hZ2VyLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9DL1dLQmF0dGVyeVN0YXR1cy5o
IFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVu
ZXIuaCBcCkBAIC01ODIsMTAgKzU4MiwxMCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggXAog
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25M
aXN0ZW5lci5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRp
Y2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIFwKLQlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tCYWNrRm9yd2FyZExpc3QuY3BwIFwKLQlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tCYWNrRm9yd2FyZExpc3QuaCBcCi0JU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgXAotCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0JhY2tGb3J3YXJkTGlzdEl0ZW0uaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0UmVmLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0UmVmLmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYuY3BwIFwKKwlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmLmggXAogCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0JhdHRlcnlNYW5hZ2VyLmNwcCBcCiAJU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmF0dGVyeU1hbmFnZXIuaCBcCiAJU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLQmF0dGVyeVN0YXR1cy5jcHAgXApJbmRleDogU291cmNlL1dl
YktpdDIvU2hhcmVkL0NvY29hL1dLTlNBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db2NvYS9XS05TQXJyYXkuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db2NvYS9XS05TQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiV0tGb3VuZGF0aW9uLmgiCisKKyNpZiBXS19BUElf
RU5BQkxFRAorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIEltbXV0YWJsZUFycmF5OworfQor
CitAaW50ZXJmYWNlIFdLTlNBcnJheSA6IE5TQXJyYXkKKworKyAoaWQpd2ViX2FycmF5V2l0aElt
bXV0YWJsZUFycmF5OihXZWJLaXQ6OkltbXV0YWJsZUFycmF5JilhcnJheTsKKworLSAoaWQpd2Vi
X2luaXRXaXRoSW1tdXRhYmxlQXJyYXk6KFdlYktpdDo6SW1tdXRhYmxlQXJyYXkmKWFycmF5Owor
CitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJbmRleDogU291cmNlL1dlYktpdDIv
U2hhcmVkL0NvY29hL1dLTlNBcnJheS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29jb2EvV0tOU0FycmF5Lm1tCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkL0NvY29hL1dLTlNBcnJheS5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS05TQXJyYXkuaCIK
KworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgIkltbXV0YWJsZUFycmF5LmgiCisjaW1w
b3J0ICJXS05TT2JqZWN0RXh0cmFzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK0Bp
bXBsZW1lbnRhdGlvbiBXS05TQXJyYXkgeworICAgIFJlZlB0cjxJbW11dGFibGVBcnJheT4gX2Fy
cmF5OworfQorCisrIChpZCl3ZWJfYXJyYXlXaXRoSW1tdXRhYmxlQXJyYXk6KFdlYktpdDo6SW1t
dXRhYmxlQXJyYXkmKWFycmF5Cit7CisgICAgcmV0dXJuIFtbW1tzZWxmIGNsYXNzXSBhbGxvY10g
d2ViX2luaXRXaXRoSW1tdXRhYmxlQXJyYXk6YXJyYXldIGF1dG9yZWxlYXNlXTsKK30KKworLSAo
aWQpd2ViX2luaXRXaXRoSW1tdXRhYmxlQXJyYXk6KEltbXV0YWJsZUFycmF5JilhcnJheQorewor
ICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisg
ICAgX2FycmF5ID0gJmFycmF5OworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKE5TVUludGVn
ZXIpY291bnQKK3sKKyAgICByZXR1cm4gX2FycmF5LT5zaXplKCk7Cit9CisKKy0gKGlkKW9iamVj
dEF0SW5kZXg6KE5TVUludGVnZXIpaQoreworICAgIHJldHVybiBbTlNPYmplY3QgX3dlYl9vYmpl
Y3RXaXRoQVBJT2JqZWN0Ol9hcnJheS0+YXQoaSldOworfQorCisjcHJhZ21hIG1hcmsgLSBOU0Nv
cHlpbmcgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KKworLSAoaWQpY29weVdpdGhab25lOihOU1pv
bmUgKil6b25lCit7CisgICAgcmV0dXJuIFtzZWxmIHJldGFpbl07Cit9CisKK0BlbmQKKworI2Vu
ZGlmIC8vIFdLX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2Ev
V0tOU09iamVjdEV4dHJhcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b2NvYS9XS05TT2JqZWN0RXh0cmFzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29jb2EvV0tOU09iamVjdEV4dHJhcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXS0ZvdW5kYXRpb24uaCIKKworI2lmIFdLX0FQ
SV9FTkFCTEVECisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgQVBJT2JqZWN0OworfQorCitA
aW50ZXJmYWNlIE5TT2JqZWN0IChXS0V4dHJhcykKKworKyAoaWQpX3dlYl9vYmplY3RXaXRoQVBJ
T2JqZWN0OihXZWJLaXQ6OkFQSU9iamVjdCopb2JqZWN0OworCitAZW5kCisKKyNlbmRpZiAvLyBX
S19BUElfRU5BQkxFRApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL1dLTlNPYmpl
Y3RFeHRyYXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL1dL
TlNPYmplY3RFeHRyYXMubW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q29jb2EvV0tOU09iamVjdEV4dHJhcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS05TT2JqZWN0RXh0
cmFzLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJXS0JhY2tGb3J3YXJkTGlz
dEl0ZW1JbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgorI2lt
cG9ydCA8d3RmL1JlZlB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitAaW50ZXJm
YWNlIFdLT2JqZWN0IDogTlNPYmplY3QKKworLSAoaWQpaW5pdFdpdGhBUElPYmplY3Q6KFdlYktp
dDo6QVBJT2JqZWN0JilvYmplY3Q7CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLT2JqZWN0
IHsKKyAgICBSZWZQdHI8QVBJT2JqZWN0PiBfb2JqZWN0OworfQorCistIChpZClpbml0V2l0aEFQ
SU9iamVjdDooQVBJT2JqZWN0JilvYmplY3QKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGlu
aXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9vYmplY3QgPSAmb2JqZWN0OworCisg
ICAgcmV0dXJuIHNlbGY7Cit9CisKKyNwcmFnbWEgbWFyayAtIE5TT2JqZWN0IHByb3RvY29sIGlt
cGxlbWVudGF0aW9uCisKKy0gKEJPT0wpaXNFcXVhbDooaWQpb2JqZWN0Cit7CisgICAgaWYgKFtv
YmplY3QgY2xhc3NdICE9IFtzZWxmIGNsYXNzXSkKKyAgICAgICAgcmV0dXJuIE5POworCisgICAg
cmV0dXJuIF9vYmplY3QgPT0gKChXS09iamVjdCAqKW9iamVjdCktPl9vYmplY3Q7Cit9CisKKy0g
KE5TVUludGVnZXIpaGFzaAoreworICAgIHJldHVybiAoTlNVSW50ZWdlcilfb2JqZWN0LmdldCgp
OworfQorCistIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCit7CisgICAgcmV0dXJuIFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAOiAlcDsgb2JqZWN0ID0gJXA7IHR5cGUgPSAlZD4iLCBO
U1N0cmluZ0Zyb21DbGFzcyhbc2VsZiBjbGFzc10pLCBzZWxmLCBfb2JqZWN0LmdldCgpLCBfb2Jq
ZWN0LT50eXBlKCldOworfQorCitAZW5kCisKKyNwcmFnbWEgbWFyayAtCisKK0BpbXBsZW1lbnRh
dGlvbiBOU09iamVjdCAoV0tFeHRyYXMpCisKKysgKGlkKV93ZWJfb2JqZWN0V2l0aEFQSU9iamVj
dDooQVBJT2JqZWN0KilvYmplY3QKK3sKKyAgICBpZiAoIW9iamVjdCkKKyAgICAgICAgcmV0dXJu
IG5pbDsKKworICAgIHN3aXRjaCAob2JqZWN0LT50eXBlKCkpIHsKKyAgICBjYXNlIEFQSU9iamVj
dDo6VHlwZUJhY2tGb3J3YXJkTGlzdEl0ZW06CisgICAgICAgIHJldHVybiBbW1tXS0JhY2tGb3J3
YXJkTGlzdEl0ZW0gYWxsb2NdIF9pbml0V2l0aEl0ZW06KnN0YXRpY19jYXN0PFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0qPihvYmplY3QpXSBhdXRvcmVsZWFzZV07CisKKyAgICBkZWZhdWx0OgorICAg
ICAgICByZXR1cm4gW1tbV0tPYmplY3QgYWxsb2NdIGluaXRXaXRoQVBJT2JqZWN0OipvYmplY3Rd
IGF1dG9yZWxlYXNlXTsKKyAgICB9Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFC
TEVECkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExp
c3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0Jh
Y2tGb3J3YXJkTGlzdC5jcHAJKHJldmlzaW9uIDE1NzcyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJX
S0JhY2tGb3J3YXJkTGlzdC5oIgotCi0jaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCi0j
aW5jbHVkZSAiV0tBUElDYXN0LmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLVdLVHlw
ZUlEIFdLQmFja0ZvcndhcmRMaXN0R2V0VHlwZUlEKCkKLXsKLSAgICByZXR1cm4gdG9BUEkoV2Vi
QmFja0ZvcndhcmRMaXN0OjpBUElUeXBlKTsKLX0KLQotV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVm
IFdLQmFja0ZvcndhcmRMaXN0R2V0Q3VycmVudEl0ZW0oV0tCYWNrRm9yd2FyZExpc3RSZWYgbGlz
dFJlZikKLXsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKGxpc3RSZWYpLT5jdXJyZW50SXRlbSgp
KTsKLX0KLQotV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIFdLQmFja0ZvcndhcmRMaXN0R2V0QmFj
a0l0ZW0oV0tCYWNrRm9yd2FyZExpc3RSZWYgbGlzdFJlZikKLXsKLSAgICByZXR1cm4gdG9BUEko
dG9JbXBsKGxpc3RSZWYpLT5iYWNrSXRlbSgpKTsKLX0KLQotV0tCYWNrRm9yd2FyZExpc3RJdGVt
UmVmIFdLQmFja0ZvcndhcmRMaXN0R2V0Rm9yd2FyZEl0ZW0oV0tCYWNrRm9yd2FyZExpc3RSZWYg
bGlzdFJlZikKLXsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKGxpc3RSZWYpLT5mb3J3YXJkSXRl
bSgpKTsKLX0KLQotV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIFdLQmFja0ZvcndhcmRMaXN0R2V0
SXRlbUF0SW5kZXgoV0tCYWNrRm9yd2FyZExpc3RSZWYgbGlzdFJlZiwgaW50IGluZGV4KQotewot
ICAgIHJldHVybiB0b0FQSSh0b0ltcGwobGlzdFJlZiktPml0ZW1BdEluZGV4KGluZGV4KSk7Ci19
Ci0KLXVuc2lnbmVkIFdLQmFja0ZvcndhcmRMaXN0R2V0QmFja0xpc3RDb3VudChXS0JhY2tGb3J3
YXJkTGlzdFJlZiBsaXN0UmVmKQotewotICAgIHJldHVybiB0b0ltcGwobGlzdFJlZiktPmJhY2tM
aXN0Q291bnQoKTsKLX0KLQotdW5zaWduZWQgV0tCYWNrRm9yd2FyZExpc3RHZXRGb3J3YXJkTGlz
dENvdW50KFdLQmFja0ZvcndhcmRMaXN0UmVmIGxpc3RSZWYpCi17Ci0gICAgcmV0dXJuIHRvSW1w
bChsaXN0UmVmKS0+Zm9yd2FyZExpc3RDb3VudCgpOwotfQotCi1XS0FycmF5UmVmIFdLQmFja0Zv
cndhcmRMaXN0Q29weUJhY2tMaXN0V2l0aExpbWl0KFdLQmFja0ZvcndhcmRMaXN0UmVmIGxpc3RS
ZWYsIHVuc2lnbmVkIGxpbWl0KQotewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwobGlzdFJlZikt
PmJhY2tMaXN0QXNJbW11dGFibGVBcnJheVdpdGhMaW1pdChsaW1pdCkubGVha1JlZigpKTsKLX0K
LQotV0tBcnJheVJlZiBXS0JhY2tGb3J3YXJkTGlzdENvcHlGb3J3YXJkTGlzdFdpdGhMaW1pdChX
S0JhY2tGb3J3YXJkTGlzdFJlZiBsaXN0UmVmLCB1bnNpZ25lZCBsaW1pdCkKLXsKLSAgICByZXR1
cm4gdG9BUEkodG9JbXBsKGxpc3RSZWYpLT5mb3J3YXJkTGlzdEFzSW1tdXRhYmxlQXJyYXlXaXRo
TGltaXQobGltaXQpLmxlYWtSZWYoKSk7ICAgIAotfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0LmgJKHJldmlzaW9uIDE1Nzcy
MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdL
QmFja0ZvcndhcmRMaXN0X2gKLSNkZWZpbmUgV0tCYWNrRm9yd2FyZExpc3RfaAotCi0jaW5jbHVk
ZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsK
LSNlbmRpZgotCi1XS19FWFBPUlQgV0tUeXBlSUQgV0tCYWNrRm9yd2FyZExpc3RHZXRUeXBlSUQo
KTsKLQotV0tfRVhQT1JUIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBXS0JhY2tGb3J3YXJkTGlz
dEdldEN1cnJlbnRJdGVtKFdLQmFja0ZvcndhcmRMaXN0UmVmIGxpc3QpOwotV0tfRVhQT1JUIFdL
QmFja0ZvcndhcmRMaXN0SXRlbVJlZiBXS0JhY2tGb3J3YXJkTGlzdEdldEJhY2tJdGVtKFdLQmFj
a0ZvcndhcmRMaXN0UmVmIGxpc3QpOwotV0tfRVhQT1JUIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJl
ZiBXS0JhY2tGb3J3YXJkTGlzdEdldEZvcndhcmRJdGVtKFdLQmFja0ZvcndhcmRMaXN0UmVmIGxp
c3QpOwotV0tfRVhQT1JUIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBXS0JhY2tGb3J3YXJkTGlz
dEdldEl0ZW1BdEluZGV4KFdLQmFja0ZvcndhcmRMaXN0UmVmIGxpc3QsIGludCBpbmRleCk7Ci0K
LVdLX0VYUE9SVCB1bnNpZ25lZCBXS0JhY2tGb3J3YXJkTGlzdEdldEJhY2tMaXN0Q291bnQoV0tC
YWNrRm9yd2FyZExpc3RSZWYgbGlzdCk7Ci1XS19FWFBPUlQgdW5zaWduZWQgV0tCYWNrRm9yd2Fy
ZExpc3RHZXRGb3J3YXJkTGlzdENvdW50KFdLQmFja0ZvcndhcmRMaXN0UmVmIGxpc3QpOwotCi1X
S19FWFBPUlQgV0tBcnJheVJlZiBXS0JhY2tGb3J3YXJkTGlzdENvcHlCYWNrTGlzdFdpdGhMaW1p
dChXS0JhY2tGb3J3YXJkTGlzdFJlZiBsaXN0LCB1bnNpZ25lZCBsaW1pdCk7Ci1XS19FWFBPUlQg
V0tBcnJheVJlZiBXS0JhY2tGb3J3YXJkTGlzdENvcHlGb3J3YXJkTGlzdFdpdGhMaW1pdChXS0Jh
Y2tGb3J3YXJkTGlzdFJlZiBsaXN0LCB1bnNpZ25lZCBsaW1pdCk7Ci0KLSNpZmRlZiBfX2NwbHVz
cGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZiAvLyBXS0JhY2tGb3J3YXJkTGlzdF9oCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2Fy
ZExpc3RJdGVtLmNwcAkocmV2aXNpb24gMTU3NzIxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXS0JhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKLQotI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgot
I2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKLQotV0tUeXBlSUQgV0tCYWNrRm9yd2FyZExpc3RJdGVtR2V0VHlwZUlEKCkKLXsKLSAg
ICByZXR1cm4gdG9BUEkoV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6QVBJVHlwZSk7Ci19Ci0KLVdL
VVJMUmVmIFdLQmFja0ZvcndhcmRMaXN0SXRlbUNvcHlVUkwoV0tCYWNrRm9yd2FyZExpc3RJdGVt
UmVmIGl0ZW1SZWYpCi17Ci0gICAgcmV0dXJuIHRvQ29waWVkVVJMQVBJKHRvSW1wbChpdGVtUmVm
KS0+dXJsKCkpOwotfQotCi1XS1N0cmluZ1JlZiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5VGl0
bGUoV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW1SZWYpCi17Ci0gICAgcmV0dXJuIHRvQ29w
aWVkQVBJKHRvSW1wbChpdGVtUmVmKS0+dGl0bGUoKSk7Ci19Ci0KLVdLVVJMUmVmIFdLQmFja0Zv
cndhcmRMaXN0SXRlbUNvcHlPcmlnaW5hbFVSTChXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRl
bVJlZikKLXsKLSAgICByZXR1cm4gdG9Db3BpZWRVUkxBUEkodG9JbXBsKGl0ZW1SZWYpLT5vcmln
aW5hbFVSTCgpKTsKLX0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0Jh
Y2tGb3J3YXJkTGlzdEl0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RJdGVtLmgJKHJldmlzaW9uIDE1NzcyMSkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdEl0ZW0uaAkod29y
a2luZyBjb3B5KQpAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBX
S0JhY2tGb3J3YXJkTGlzdEl0ZW1faAotI2RlZmluZSBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1faAot
Ci0jaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRl
cm4gIkMiIHsKLSNlbmRpZgotCi1XS19FWFBPUlQgV0tUeXBlSUQgV0tCYWNrRm9yd2FyZExpc3RJ
dGVtR2V0VHlwZUlEKCk7Ci0KLVdLX0VYUE9SVCBXS1VSTFJlZiBXS0JhY2tGb3J3YXJkTGlzdEl0
ZW1Db3B5VVJMKFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtKTsKLVdLX0VYUE9SVCBXS1N0
cmluZ1JlZiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5VGl0bGUoV0tCYWNrRm9yd2FyZExpc3RJ
dGVtUmVmIGl0ZW0pOwotV0tfRVhQT1JUIFdLVVJMUmVmIFdLQmFja0ZvcndhcmRMaXN0SXRlbUNv
cHlPcmlnaW5hbFVSTChXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbSk7Ci0KLSNpZmRlZiBf
X2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZiAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1f
aCAqLwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRM
aXN0SXRlbVJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLQmFja0ZvcndhcmRMaXN0SXRlbVJlZi5jcHAJKHJldmlzaW9uIDE1NzcyMSkJKGZyb20g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0SXRlbS5jcHA6
MTU3NzIxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRM
aXN0SXRlbVJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS0JhY2tGb3J3YXJkTGlz
dEl0ZW0uaCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0uaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tUeXBlSUQgV0tC
YWNrRm9yd2FyZExpc3RJdGVtR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9BUEkoV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbTo6QVBJVHlwZSk7Cit9CisKK1dLVVJMUmVmIFdLQmFja0ZvcndhcmRM
aXN0SXRlbUNvcHlVUkwoV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW1SZWYpCit7CisgICAg
cmV0dXJuIHRvQ29waWVkVVJMQVBJKHRvSW1wbChpdGVtUmVmKS0+dXJsKCkpOworfQorCitXS1N0
cmluZ1JlZiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5VGl0bGUoV0tCYWNrRm9yd2FyZExpc3RJ
dGVtUmVmIGl0ZW1SZWYpCit7CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChpdGVtUmVm
KS0+dGl0bGUoKSk7Cit9CisKK1dLVVJMUmVmIFdLQmFja0ZvcndhcmRMaXN0SXRlbUNvcHlPcmln
aW5hbFVSTChXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbVJlZikKK3sKKyAgICByZXR1cm4g
dG9Db3BpZWRVUkxBUEkodG9JbXBsKGl0ZW1SZWYpLT5vcmlnaW5hbFVSTCgpKTsKK30KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0JhY2tG
b3J3YXJkTGlzdEl0ZW1SZWYuY3BwCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJXS0JhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKKyNpbmNsdWRlICJXS0JhY2tGb3J3YXJkTGlzdEl0
ZW1SZWYuaCIKIAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0uaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0Jh
Y2tGb3J3YXJkTGlzdEl0ZW1SZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmLmgJKHJldmlzaW9uIDE1NzcyMSkJ
KGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0SXRl
bS5oOjE1NzcyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3
YXJkTGlzdEl0ZW1SZWYuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1faAorI2RlZmluZSBXS0Jh
Y2tGb3J3YXJkTGlzdEl0ZW1faAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lm
ZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBl
SUQgV0tCYWNrRm9yd2FyZExpc3RJdGVtR2V0VHlwZUlEKCk7CisKK1dLX0VYUE9SVCBXS1VSTFJl
ZiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5VVJMKFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBp
dGVtKTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5VGl0
bGUoV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW0pOworV0tfRVhQT1JUIFdLVVJMUmVmIFdL
QmFja0ZvcndhcmRMaXN0SXRlbUNvcHlPcmlnaW5hbFVSTChXS0JhY2tGb3J3YXJkTGlzdEl0ZW1S
ZWYgaXRlbSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBX
S0JhY2tGb3J3YXJkTGlzdEl0ZW1faCAqLwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0SXRlbVJlZi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYuaAkod29ya2lu
ZyBjb3B5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRM
aXN0SXRlbVJlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw4IEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXS0JhY2tGb3J3YXJkTGlz
dEl0ZW1faAotI2RlZmluZSBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1faAorI2lmbmRlZiBXS0JhY2tG
b3J3YXJkTGlzdEl0ZW1SZWZfaAorI2RlZmluZSBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWZfaAog
CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KIApAQCAtNDIsNCArNDIsNCBAQCBXS19FWFBP
UlQgV0tVUkxSZWYgV0tCYWNrRm9yd2FyZExpc3RJdGVtCiB9CiAjZW5kaWYKIAotI2VuZGlmIC8q
IFdLQmFja0ZvcndhcmRMaXN0SXRlbV9oICovCisjZW5kaWYgLyogV0tCYWNrRm9yd2FyZExpc3RJ
dGVtUmVmX2ggKi8KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0JhY2tG
b3J3YXJkTGlzdFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0UmVmLmNwcAkocmV2aXNpb24gMTU3NzIxKQkoZnJvbSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3QuY3BwOjE1Nzcy
MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdFJl
Zi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS0JhY2tGb3J3YXJkTGlzdC5oIgorCisjaW5jbHVk
ZSAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLQmFja0ZvcndhcmRMaXN0R2V0VHlwZUlE
KCkKK3sKKyAgICByZXR1cm4gdG9BUEkoV2ViQmFja0ZvcndhcmRMaXN0OjpBUElUeXBlKTsKK30K
KworV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIFdLQmFja0ZvcndhcmRMaXN0R2V0Q3VycmVudEl0
ZW0oV0tCYWNrRm9yd2FyZExpc3RSZWYgbGlzdFJlZikKK3sKKyAgICByZXR1cm4gdG9BUEkodG9J
bXBsKGxpc3RSZWYpLT5jdXJyZW50SXRlbSgpKTsKK30KKworV0tCYWNrRm9yd2FyZExpc3RJdGVt
UmVmIFdLQmFja0ZvcndhcmRMaXN0R2V0QmFja0l0ZW0oV0tCYWNrRm9yd2FyZExpc3RSZWYgbGlz
dFJlZikKK3sKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGxpc3RSZWYpLT5iYWNrSXRlbSgpKTsK
K30KKworV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIFdLQmFja0ZvcndhcmRMaXN0R2V0Rm9yd2Fy
ZEl0ZW0oV0tCYWNrRm9yd2FyZExpc3RSZWYgbGlzdFJlZikKK3sKKyAgICByZXR1cm4gdG9BUEko
dG9JbXBsKGxpc3RSZWYpLT5mb3J3YXJkSXRlbSgpKTsKK30KKworV0tCYWNrRm9yd2FyZExpc3RJ
dGVtUmVmIFdLQmFja0ZvcndhcmRMaXN0R2V0SXRlbUF0SW5kZXgoV0tCYWNrRm9yd2FyZExpc3RS
ZWYgbGlzdFJlZiwgaW50IGluZGV4KQoreworICAgIHJldHVybiB0b0FQSSh0b0ltcGwobGlzdFJl
ZiktPml0ZW1BdEluZGV4KGluZGV4KSk7Cit9CisKK3Vuc2lnbmVkIFdLQmFja0ZvcndhcmRMaXN0
R2V0QmFja0xpc3RDb3VudChXS0JhY2tGb3J3YXJkTGlzdFJlZiBsaXN0UmVmKQoreworICAgIHJl
dHVybiB0b0ltcGwobGlzdFJlZiktPmJhY2tMaXN0Q291bnQoKTsKK30KKwordW5zaWduZWQgV0tC
YWNrRm9yd2FyZExpc3RHZXRGb3J3YXJkTGlzdENvdW50KFdLQmFja0ZvcndhcmRMaXN0UmVmIGxp
c3RSZWYpCit7CisgICAgcmV0dXJuIHRvSW1wbChsaXN0UmVmKS0+Zm9yd2FyZExpc3RDb3VudCgp
OworfQorCitXS0FycmF5UmVmIFdLQmFja0ZvcndhcmRMaXN0Q29weUJhY2tMaXN0V2l0aExpbWl0
KFdLQmFja0ZvcndhcmRMaXN0UmVmIGxpc3RSZWYsIHVuc2lnbmVkIGxpbWl0KQoreworICAgIHJl
dHVybiB0b0FQSSh0b0ltcGwobGlzdFJlZiktPmJhY2tMaXN0QXNJbW11dGFibGVBcnJheVdpdGhM
aW1pdChsaW1pdCkubGVha1JlZigpKTsKK30KKworV0tBcnJheVJlZiBXS0JhY2tGb3J3YXJkTGlz
dENvcHlGb3J3YXJkTGlzdFdpdGhMaW1pdChXS0JhY2tGb3J3YXJkTGlzdFJlZiBsaXN0UmVmLCB1
bnNpZ25lZCBsaW1pdCkKK3sKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGxpc3RSZWYpLT5mb3J3
YXJkTGlzdEFzSW1tdXRhYmxlQXJyYXlXaXRoTGltaXQobGltaXQpLmxlYWtSZWYoKSk7ICAgIAor
fQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0
UmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tC
YWNrRm9yd2FyZExpc3RSZWYuY3BwCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldL
QmFja0ZvcndhcmRMaXN0LmgiCisjaW5jbHVkZSAiV0tCYWNrRm9yd2FyZExpc3RSZWYuaCIKIAog
I2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0UmVm
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFja0Zv
cndhcmRMaXN0UmVmLmgJKHJldmlzaW9uIDE1NzcyMSkJKGZyb20gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0Lmg6MTU3NzIxKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0UmVmLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tCYWNrRm9yd2FyZExpc3Rf
aAorI2RlZmluZSBXS0JhY2tGb3J3YXJkTGlzdF9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFz
ZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VY
UE9SVCBXS1R5cGVJRCBXS0JhY2tGb3J3YXJkTGlzdEdldFR5cGVJRCgpOworCitXS19FWFBPUlQg
V0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIFdLQmFja0ZvcndhcmRMaXN0R2V0Q3VycmVudEl0ZW0o
V0tCYWNrRm9yd2FyZExpc3RSZWYgbGlzdCk7CitXS19FWFBPUlQgV0tCYWNrRm9yd2FyZExpc3RJ
dGVtUmVmIFdLQmFja0ZvcndhcmRMaXN0R2V0QmFja0l0ZW0oV0tCYWNrRm9yd2FyZExpc3RSZWYg
bGlzdCk7CitXS19FWFBPUlQgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIFdLQmFja0ZvcndhcmRM
aXN0R2V0Rm9yd2FyZEl0ZW0oV0tCYWNrRm9yd2FyZExpc3RSZWYgbGlzdCk7CitXS19FWFBPUlQg
V0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIFdLQmFja0ZvcndhcmRMaXN0R2V0SXRlbUF0SW5kZXgo
V0tCYWNrRm9yd2FyZExpc3RSZWYgbGlzdCwgaW50IGluZGV4KTsKKworV0tfRVhQT1JUIHVuc2ln
bmVkIFdLQmFja0ZvcndhcmRMaXN0R2V0QmFja0xpc3RDb3VudChXS0JhY2tGb3J3YXJkTGlzdFJl
ZiBsaXN0KTsKK1dLX0VYUE9SVCB1bnNpZ25lZCBXS0JhY2tGb3J3YXJkTGlzdEdldEZvcndhcmRM
aXN0Q291bnQoV0tCYWNrRm9yd2FyZExpc3RSZWYgbGlzdCk7CisKK1dLX0VYUE9SVCBXS0FycmF5
UmVmIFdLQmFja0ZvcndhcmRMaXN0Q29weUJhY2tMaXN0V2l0aExpbWl0KFdLQmFja0ZvcndhcmRM
aXN0UmVmIGxpc3QsIHVuc2lnbmVkIGxpbWl0KTsKK1dLX0VYUE9SVCBXS0FycmF5UmVmIFdLQmFj
a0ZvcndhcmRMaXN0Q29weUZvcndhcmRMaXN0V2l0aExpbWl0KFdLQmFja0ZvcndhcmRMaXN0UmVm
IGxpc3QsIHVuc2lnbmVkIGxpbWl0KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYK
KworI2VuZGlmIC8vIFdLQmFja0ZvcndhcmRMaXN0X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdFJlZi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdFJlZi5oCSh3b3JraW5n
IGNvcHkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExp
c3RSZWYuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsOCBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV0tCYWNrRm9yd2FyZExpc3RfaAot
I2RlZmluZSBXS0JhY2tGb3J3YXJkTGlzdF9oCisjaWZuZGVmIFdLQmFja0ZvcndhcmRMaXN0UmVm
X2gKKyNkZWZpbmUgV0tCYWNrRm9yd2FyZExpc3RSZWZfaAogCiAjaW5jbHVkZSA8V2ViS2l0Mi9X
S0Jhc2UuaD4KIApAQCAtNDksNCArNDksNCBAQCBXS19FWFBPUlQgV0tBcnJheVJlZiBXS0JhY2tG
b3J3YXJkTGlzdENvCiB9CiAjZW5kaWYKIAotI2VuZGlmIC8vIFdLQmFja0ZvcndhcmRMaXN0X2gK
KyNlbmRpZiAvLyBXS0JhY2tGb3J3YXJkTGlzdFJlZl9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV2ViS2l0Ml9DLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dlYktpdDJfQy5oCShyZXZpc2lvbiAxNTc3MjEpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV2ViS2l0Ml9DLmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDggKzMwLDggQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLVHlwZS5oPgogCiAjaW5jbHVkZSA8V2Vi
S2l0Mi9XS0FycmF5Lmg+Ci0jaW5jbHVkZSA8V2ViS2l0Mi9XS0JhY2tGb3J3YXJkTGlzdC5oPgot
I2luY2x1ZGUgPFdlYktpdDIvV0tCYWNrRm9yd2FyZExpc3RJdGVtLmg+CisjaW5jbHVkZSA8V2Vi
S2l0Mi9XS0JhY2tGb3J3YXJkTGlzdFJlZi5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tCYWNrRm9y
d2FyZExpc3RJdGVtUmVmLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Nvbm5lY3Rpb25SZWYuaD4K
ICNpbmNsdWRlIDxXZWJLaXQyL1dLQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tEYXRh
Lmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3
YXJkX2xpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdC5jcHAJKHJldmlzaW9uIDE1NzcyMSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgog
I2luY2x1ZGUgIldLQXJyYXkuaCIKLSNpbmNsdWRlICJXS0JhY2tGb3J3YXJkTGlzdC5oIgorI2lu
Y2x1ZGUgIldLQmFja0ZvcndhcmRMaXN0UmVmLmgiCiAjaW5jbHVkZSAiZXdrX2JhY2tfZm9yd2Fy
ZF9saXN0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfb2JqZWN0LmgiCiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtLmNwcAkocmV2
aXNpb24gMTU3NzIxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Jh
Y2tfZm9yd2FyZF9saXN0X2l0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBA
CiAjaW5jbHVkZSAiZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW0uaCIKIAogI2luY2x1ZGUgIldL
QVBJQ2FzdC5oIgotI2luY2x1ZGUgIldLQmFja0ZvcndhcmRMaXN0SXRlbS5oIgorI2luY2x1ZGUg
IldLQmFja0ZvcndhcmRMaXN0SXRlbVJlZi5oIgogI2luY2x1ZGUgImV3a19iYWNrX2ZvcndhcmRf
bGlzdF9pdGVtX3ByaXZhdGUuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlci5oCShyZXZpc2lvbiAxNTc3MjEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2ltcG9ydCA8V2ViS2l0Mi9XS0RlY2xhcmF0
aW9uU3BlY2lmaWVycy5oPgogCiBAY2xhc3MgV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyRGF0
YTsKK0BjbGFzcyBXS0JhY2tGb3J3YXJkTGlzdDsKIEBwcm90b2NvbCBXS0Jyb3dzaW5nQ29udGV4
dExvYWREZWxlZ2F0ZTsKIAogV0tfRVhQT1JUCkBAIC05MCw2ICs5MSw3IEBAIEBpbnRlcmZhY2Ug
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIDoKIC8qIFdoZXRoZXIgdGhlcmUgaXMgYSBwcmV2
aW91cyBwYWdlIGluIHRoZSBiYWNrL2ZvcndhcmQgbGlzdC4gKi8KIEBwcm9wZXJ0eShyZWFkb25s
eSkgQk9PTCBjYW5Hb0JhY2s7CiAKK0Bwcm9wZXJ0eShyZWFkb25seSkgV0tCYWNrRm9yd2FyZExp
c3QgKmJhY2tGb3J3YXJkTGlzdDsKIAogI3ByYWdtYSBtYXJrIEFjdGl2ZSBMb2FkIEludHJvc3Bl
Y3Rpb24KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQkocmV2aXNpb24gMTU3
NzIxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRl
eHRDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW1wb3J0
ICJXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJJbnRlcm5hbC5oIgogCiAjaW1wb3J0ICJPYmpD
T2JqZWN0R3JhcGguaCIKKyNpbXBvcnQgIldLQmFja0ZvcndhcmRMaXN0SW50ZXJuYWwuaCIKICNp
bXBvcnQgIldLRXJyb3JDRi5oIgogI2ltcG9ydCAiV0tGcmFtZS5oIgogI2ltcG9ydCAiV0tQYWdl
UHJpdmF0ZS5oIgpAQCAtMjUyLDYgKzI1MywxNCBAQCAtIChCT09MKWNhbkdvQmFjawogICAgIHJl
dHVybiBXS1BhZ2VDYW5Hb0JhY2soc2VsZi5fcGFnZVJlZik7CiB9CiAKKy0gKFdLQmFja0Zvcndh
cmRMaXN0ICopYmFja0ZvcndhcmRMaXN0Cit7CisgICAgV2ViQmFja0ZvcndhcmRMaXN0KiBsaXN0
ID0gdG9JbXBsKHNlbGYuX3BhZ2VSZWYpLT5iYWNrRm9yd2FyZExpc3QoKTsKKyAgICBpZiAoIWxp
c3QpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4gW1tbV0tCYWNrRm9yd2FyZExp
c3QgYWxsb2NdIF9pbml0V2l0aExpc3Q6Kmxpc3RdIGF1dG9yZWxlYXNlXTsKK30KIAogI3ByYWdt
YSBtYXJrIEFjdGl2ZSBMb2FkIEludHJvc3BlY3Rpb24KIApJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1dLQmFja0ZvcndhcmRMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dLQmFja0ZvcndhcmRMaXN0LmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgPFdl
YktpdDIvV0tCYWNrRm9yd2FyZExpc3RSZWYuaD4KKworI2lmZGVmIF9fT0JKQ19fCisKKyNpbXBv
cnQgPFdlYktpdDIvV0tCYWNrRm9yd2FyZExpc3RJdGVtLmg+CisjaW1wb3J0IDxXZWJLaXQyL1dL
Rm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworQGludGVyZmFjZSBXS0JhY2tG
b3J3YXJkTGlzdCA6IE5TT2JqZWN0CisKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIFdLQmFja0Zvcndh
cmRMaXN0SXRlbSAqY3VycmVudEl0ZW07CitAcHJvcGVydHkgKHJlYWRvbmx5KSBXS0JhY2tGb3J3
YXJkTGlzdEl0ZW0gKmJhY2tJdGVtOworQHByb3BlcnR5IChyZWFkb25seSkgV0tCYWNrRm9yd2Fy
ZExpc3RJdGVtICpmb3J3YXJkSXRlbTsKKworLSAoV0tCYWNrRm9yd2FyZExpc3RJdGVtICopaXRl
bUF0SW5kZXg6KE5TSW50ZWdlcilpbmRleDsKKworQHByb3BlcnR5IChyZWFkb25seSkgTlNVSW50
ZWdlciBiYWNrTGlzdENvdW50OworQHByb3BlcnR5IChyZWFkb25seSkgTlNVSW50ZWdlciBmb3J3
YXJkTGlzdENvdW50OworCistIChOU0FycmF5ICopYmFja0xpc3RXaXRoTGltaXQ6KE5TVUludGVn
ZXIpbGltaXQ7CistIChOU0FycmF5ICopZm9yd2FyZExpc3RXaXRoTGltaXQ6KE5TVUludGVnZXIp
bGltaXQ7CisKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECisKKyNlbmRpZiAvLyBk
ZWZpbmVkKF9fT0JKQ19fKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dL
QmFja0ZvcndhcmRMaXN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9XS0JhY2tGb3J3YXJkTGlzdC5tbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9XS0JhY2tGb3J3YXJkTGlzdC5tbQkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDExNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiV0tCYWNrRm9yd2FyZExpc3RJbnRlcm5hbC5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKwor
I2ltcG9ydCAiV0tCYWNrRm9yd2FyZExpc3RJdGVtSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLTlNB
cnJheS5oIgorI2ltcG9ydCAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CisKK0BpbXBsZW1lbnRhdGlvbiBXS0JhY2tGb3J3YXJkTGlzdCB7CisgICAgUmVm
UHRyPFdlYkJhY2tGb3J3YXJkTGlzdD4gX2xpc3Q7Cit9CisKK3N0YXRpYyBXS0JhY2tGb3J3YXJk
TGlzdEl0ZW0gKnRvV0tCYWNrRm9yd2FyZExpc3RJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0q
IGl0ZW0pCit7CisgICAgaWYgKCFpdGVtKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0
dXJuIFtbW1dLQmFja0ZvcndhcmRMaXN0SXRlbSBhbGxvY10gX2luaXRXaXRoSXRlbToqaXRlbV0g
YXV0b3JlbGVhc2VdOworfQorCistIChXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKiljdXJyZW50SXRl
bQoreworICAgIHJldHVybiB0b1dLQmFja0ZvcndhcmRMaXN0SXRlbShfbGlzdC0+Y3VycmVudEl0
ZW0oKSk7Cit9CisKKy0gKFdLQmFja0ZvcndhcmRMaXN0SXRlbSAqKWJhY2tJdGVtCit7CisgICAg
cmV0dXJuIHRvV0tCYWNrRm9yd2FyZExpc3RJdGVtKF9saXN0LT5iYWNrSXRlbSgpKTsKK30KKwor
LSAoV0tCYWNrRm9yd2FyZExpc3RJdGVtICopZm9yd2FyZEl0ZW0KK3sKKyAgICByZXR1cm4gdG9X
S0JhY2tGb3J3YXJkTGlzdEl0ZW0oX2xpc3QtPmJhY2tJdGVtKCkpOworfQorCistIChXS0JhY2tG
b3J3YXJkTGlzdEl0ZW0gKilpdGVtQXRJbmRleDooTlNJbnRlZ2VyKWluZGV4Cit7CisgICAgcmV0
dXJuIHRvV0tCYWNrRm9yd2FyZExpc3RJdGVtKF9saXN0LT5pdGVtQXRJbmRleChpbmRleCkpOwor
fQorCistIChOU1VJbnRlZ2VyKWJhY2tMaXN0Q291bnQKK3sKKyAgICByZXR1cm4gX2xpc3QtPmJh
Y2tMaXN0Q291bnQoKTsKK30KKworLSAoTlNVSW50ZWdlcilmb3J3YXJkTGlzdENvdW50Cit7Cisg
ICAgcmV0dXJuIF9saXN0LT5mb3J3YXJkTGlzdENvdW50KCk7Cit9CisKKy0gKE5TQXJyYXkgKili
YWNrTGlzdFdpdGhMaW1pdDooTlNVSW50ZWdlcilsaW1pdAoreworICAgIFJlZlB0cjxJbW11dGFi
bGVBcnJheT4gbGlzdCA9IF9saXN0LT5iYWNrTGlzdEFzSW1tdXRhYmxlQXJyYXlXaXRoTGltaXQo
bGltaXQpOworICAgIGlmICghbGlzdCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVy
biBbV0tOU0FycmF5IHdlYl9hcnJheVdpdGhJbW11dGFibGVBcnJheToqbGlzdF07Cit9CisKKy0g
KE5TQXJyYXkgKilmb3J3YXJkTGlzdFdpdGhMaW1pdDooTlNVSW50ZWdlcilsaW1pdAoreworICAg
IFJlZlB0cjxJbW11dGFibGVBcnJheT4gbGlzdCA9IF9saXN0LT5mb3J3YXJkTGlzdEFzSW1tdXRh
YmxlQXJyYXlXaXRoTGltaXQobGltaXQpOworICAgIGlmICghbGlzdCkKKyAgICAgICAgcmV0dXJu
IG5pbDsKKworICAgIHJldHVybiBbV0tOU0FycmF5IHdlYl9hcnJheVdpdGhJbW11dGFibGVBcnJh
eToqbGlzdF07Cit9CisKK0BlbmQKKworI3ByYWdtYSBtYXJrIC0KKworQGltcGxlbWVudGF0aW9u
IFdLQmFja0ZvcndhcmRMaXN0IChJbnRlcm5hbCkKKworLSAoaWQpX2luaXRXaXRoTGlzdDooV2Vi
QmFja0ZvcndhcmRMaXN0JilsaXN0Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkp
CisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfbGlzdCA9ICZsaXN0OworCisgICAgcmV0dXJu
IHNlbGY7Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3RJbnRlcm5hbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XS0JhY2tGb3J3YXJk
TGlzdEludGVybmFsLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvV0tCYWNrRm9yd2FyZExpc3RJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXS0JhY2tGb3J3YXJkTGlzdC5oIgorCisj
aWYgV0tfQVBJX0VOQUJMRUQKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJCYWNrRm9y
d2FyZExpc3Q7Cit9CisKK0BpbnRlcmZhY2UgV0tCYWNrRm9yd2FyZExpc3QgKEludGVybmFsKQor
CistIChpZClfaW5pdFdpdGhMaXN0OihXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdCYpbGlzdDsK
KworQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9XS0JhY2tGb3J3YXJkTGlzdEl0ZW0uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3RJdGVtLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tCYWNrRm9yd2Fy
ZExpc3RJdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFja0ZvcndhcmRMaXN0SXRlbVJlZi5oPgorCisjaWZkZWYg
X19PQkpDX18KKworI2ltcG9ydCA8V2ViS2l0Mi9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQ
SV9FTkFCTEVECisKK0BpbnRlcmZhY2UgV0tCYWNrRm9yd2FyZExpc3RJdGVtIDogTlNPYmplY3QK
KworQHByb3BlcnR5IChyZWFkb25seSkgTlNVUkwgKlVSTDsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkp
IE5TU3RyaW5nICp0aXRsZTsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIE5TVVJMICpvcmlnaW5hbFVS
TDsKKworQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKKworI2VuZGlmIC8vIGRlZmlu
ZWQoX19PQkpDX18pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tCYWNr
Rm9yd2FyZExpc3RJdGVtLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9XS0JhY2tGb3J3YXJkTGlzdEl0ZW0ubW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3RJdGVtLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJXS0JhY2tGb3J3YXJkTGlzdEl0ZW1JbnRlcm5hbC5oIgorCisjaWYgV0tfQVBJ
X0VOQUJMRUQKKworI2ltcG9ydCAiV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgorI2ltcG9ydCAi
V0tSZXRhaW5QdHIuaCIKKyNpbXBvcnQgIldLU2hhcmVkQVBJQ2FzdC5oIgorI2ltcG9ydCAiV0tT
dHJpbmdDRi5oIgorI2ltcG9ydCAiV0tVUkxDRi5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OworCitAaW1wbGVtZW50YXRpb24gV0tCYWNrRm9yd2FyZExpc3RJdGVtIHsKKyAgICBSZWZQdHI8
V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gX2l0ZW07Cit9CisKKy0gKE5TVVJMICopVVJMCit7Cisg
ICAgaWYgKCFfaXRlbS0+dXJsKCkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4g
Q0ZCcmlkZ2luZ1JlbGVhc2UoV0tVUkxDb3B5Q0ZVUkwoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYWRv
cHRXSyh0b0NvcGllZFVSTEFQSShfaXRlbS0+dXJsKCkpKS5nZXQoKSkpOworfQorCistIChOU1N0
cmluZyAqKXRpdGxlCit7CisgICAgaWYgKCFfaXRlbS0+dGl0bGUoKSkKKyAgICAgICAgcmV0dXJu
IG5pbDsKKworICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShXS1N0cmluZ0NvcHlDRlN0cmlu
ZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhZG9wdFdLKHRvQ29waWVkQVBJKF9pdGVtLT50aXRsZSgp
KSkuZ2V0KCkpKTsKK30KKworLSAoTlNVUkwgKilvcmlnaW5hbFVSTAoreworICAgIGlmICghX2l0
ZW0tPm9yaWdpbmFsVVJMKCkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4gQ0ZC
cmlkZ2luZ1JlbGVhc2UoV0tVUkxDb3B5Q0ZVUkwoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYWRvcHRX
Syh0b0NvcGllZFVSTEFQSShfaXRlbS0+b3JpZ2luYWxVUkwoKSkpLmdldCgpKSk7Cit9CisKKyNw
cmFnbWEgbWFyayAtIE5TT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCisKKy0gKEJPT0wp
aXNFcXVhbDooaWQpb2JqZWN0Cit7CisgICAgaWYgKFtvYmplY3QgY2xhc3NdICE9IFtzZWxmIGNs
YXNzXSkKKyAgICAgICAgcmV0dXJuIE5POworCisgICAgcmV0dXJuIF9pdGVtID09ICgoV0tCYWNr
Rm9yd2FyZExpc3RJdGVtICopb2JqZWN0KS0+X2l0ZW07Cit9CisKKy0gKE5TVUludGVnZXIpaGFz
aAoreworICAgIHJldHVybiAoTlNVSW50ZWdlcilfaXRlbS5nZXQoKTsKK30KKworQGVuZAorCisj
cHJhZ21hIG1hcmsgLQorCitAaW1wbGVtZW50YXRpb24gV0tCYWNrRm9yd2FyZExpc3RJdGVtIChJ
bnRlcm5hbCkKKworLSAoaWQpX2luaXRXaXRoSXRlbTooV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYp
aXRlbQoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4g
bmlsOworCisgICAgX2l0ZW0gPSAmaXRlbTsKKworICAgIHJldHVybiBzZWxmOworfQorCitAZW5k
CisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1dLQmFja0ZvcndhcmRMaXN0SXRlbUludGVybmFsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dLQmFja0ZvcndhcmRMaXN0SXRlbUludGVy
bmFsLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tC
YWNrRm9yd2FyZExpc3RJdGVtSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiV0tCYWNrRm9yd2FyZExpc3RJdGVtLmgiCisKKyNp
ZiBXS19BUElfRU5BQkxFRAorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW07Cit9CisKK0BpbnRlcmZhY2UgV0tCYWNrRm9yd2FyZExpc3RJdGVtIChJbnRl
cm5hbCkKKworLSAoaWQpX2luaXRXaXRoSXRlbTooV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtJilpdGVtOworCitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJbmRleDogU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMTU3NzIxKQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zOTgsNiArMzk4LDE2IEBACiAJCTM3OTQ4NDA0
MTUwQzM1MDYwMEU1MkNFOSAvKiBXZWJSZW5kZXJMYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc5NDg0MDIxNTBDMzUwNjAwRTUyQ0U5IC8qIFdl
YlJlbmRlckxheWVyLmggKi87IH07CiAJCTM3OTQ4NDA4MTUwQzRCOTcwMEU1MkNFOSAvKiBXS1Jl
bmRlckxheWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDM3OTQ4NDA2MTUwQzRCOTYwMEU1MkNFOSAvKiBXS1JlbmRlckxheWVyLmNwcCAqLzsgfTsK
IAkJMzc5NDg0MDkxNTBDNEI5NzAwRTUyQ0U5IC8qIFdLUmVuZGVyTGF5ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3OTQ4NDA3MTUwQzRCOTYwMEU1
MkNFOSAvKiBXS1JlbmRlckxheWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMzdDNEMwODYxODE0OUM1QjAwMzY4OEI5IC8qIFdLQmFja0Zvcndh
cmRMaXN0SXRlbS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDM3QzRDMDg0MTgxNDlDNUIwMDM2ODhCOSAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0ubW0g
Ki87IH07CisJCTM3QzRDMDg3MTgxNDlDNUIwMDM2ODhCOSAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0
ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3QzRD
MDg1MTgxNDlDNUIwMDM2ODhCOSAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzN0M0QzA4OTE4MTQ5RjIz
MDAzNjg4QjkgLyogV0tCYWNrRm9yd2FyZExpc3RJdGVtSW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3QzRDMDg4MTgxNDlGMjMwMDM2ODhC
OSAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1JbnRlcm5hbC5oICovOyB9OworCQkzN0M0QzA4QzE4
MTRBQzVDMDAzNjg4QjkgLyogV0tCYWNrRm9yd2FyZExpc3QubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0M0QzA4QTE4MTRBQzVDMDAzNjg4QjkgLyog
V0tCYWNrRm9yd2FyZExpc3QubW0gKi87IH07CisJCTM3QzRDMDhEMTgxNEFDNUMwMDM2ODhCOSAv
KiBXS0JhY2tGb3J3YXJkTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzdDNEMwOEIxODE0QUM1QzAwMzY4OEI5IC8qIFdLQmFja0ZvcndhcmRMaXN0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMzdD
NEMwOTMxODE0QjNBRjAwMzY4OEI5IC8qIFdLTlNBcnJheS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3QzRDMDkxMTgxNEIzQUYwMDM2ODhCOSAvKiBX
S05TQXJyYXkubW0gKi87IH07CisJCTM3QzRDMDk0MTgxNEIzQUYwMDM2ODhCOSAvKiBXS05TQXJy
YXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3QzRD
MDkyMTgxNEIzQUYwMDM2ODhCOSAvKiBXS05TQXJyYXkuaCAqLzsgfTsKKwkJMzdDNEMwOTUxODE0
QjlFNjAwMzY4OEI5IC8qIFdLQmFja0ZvcndhcmRMaXN0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3QzRDMDhFMTgxNEFGM0EwMDM2ODhC
OSAvKiBXS0JhY2tGb3J3YXJkTGlzdEludGVybmFsLmggKi87IH07CisJCTM3QzRDMDk4MTgxNEJG
OUMwMDM2ODhCOSAvKiBXS05TT2JqZWN0RXh0cmFzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdDNEMwOTYxODE0QkY5QzAwMzY4OEI5IC8qIFdLTlNP
YmplY3RFeHRyYXMubW0gKi87IH07CisJCTM3QzRDMDk5MTgxNEJGOUMwMDM2ODhCOSAvKiBXS05T
T2JqZWN0RXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzN0M0QzA5NzE4MTRCRjlDMDAzNjg4QjkgLyogV0tOU09iamVjdEV4dHJhcy5oICovOyB9
OwogCQkzN0M0RTlGNjEzMUM2RTdFMDAyOUJENUEgLyogY29uZmlnLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMzk2RUE1NTEyRTBFRDJEMDBGNEZFQjcg
LyogY29uZmlnLmggKi87IH07CiAJCTM3REZBNzAwMTgxMEJCOTIwMDFGNEE5RiAvKiBXS0ZvdW5k
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3
REZBNkZGMTgxMEJCOTIwMDFGNEE5RiAvKiBXS0ZvdW5kYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCTM3RjYyM0I4MTJBNTdCNjIwMEUzRkRG
NiAvKiBXS0ZpbmRPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzN0Y2MjNCNzEyQTU3QjYyMDBFM0ZERjYgLyogV0tGaW5kT3B0aW9ucy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04ODQsMTAg
Kzg5NCwxMCBAQAogCQlCQzYwQzU3QTEyNDBBNTQ2MDA4QzVFMjkgLyogV0tCdW5kbGVSYW5nZUhh
bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzYwQzU3ODEyNDBBNTQ2MDA4QzVFMjkgLyogV0tCdW5kbGVSYW5nZUhhbmRsZS5jcHAgKi87IH07
CiAJCUJDNjQ2OTZGMTFEQkU2MDMwMDY0NTVCMCAvKiBJbW11dGFibGVBcnJheS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzY0Njk2RDExREJFNjAz
MDA2NDU1QjAgLyogSW1tdXRhYmxlQXJyYXkuY3BwICovOyB9OwogCQlCQzY0Njk3MDExREJFNjAz
MDA2NDU1QjAgLyogSW1tdXRhYmxlQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjQ2OTZFMTFEQkU2MDMwMDY0NTVCMCAvKiBJbW11dGFibGVB
cnJheS5oICovOyB9OwotCQlCQzY0NkMxQTExREQzOTlGMDA2NDU1QjAgLyogV0tCYWNrRm9yd2Fy
ZExpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM2NDZDMTYxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0LmNwcCAqLzsgfTsK
LQkJQkM2NDZDMUIxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzY0NkMxNzExREQzOTlG
MDA2NDU1QjAgLyogV0tCYWNrRm9yd2FyZExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlCQzY0NkMxQzExREQzOTlGMDA2NDU1QjAgLyogV0tC
YWNrRm9yd2FyZExpc3RJdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDNjQ2QzE4MTFERDM5OUYwMDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlz
dEl0ZW0uY3BwICovOyB9OwotCQlCQzY0NkMxRDExREQzOTlGMDA2NDU1QjAgLyogV0tCYWNrRm9y
d2FyZExpc3RJdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzY0NkMxOTExREQzOTlGMDA2NDU1QjAgLyogV0tCYWNrRm9yd2FyZExpc3RJdGVtLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkM2NDZD
MUExMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0UmVmLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjQ2QzE2MTFERDM5OUYwMDY0
NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlzdFJlZi5jcHAgKi87IH07CisJCUJDNjQ2QzFCMTFERDM5
OUYwMDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlzdFJlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2NDZDMTcxMUREMzk5RjAwNjQ1NUIwIC8qIFdL
QmFja0ZvcndhcmRMaXN0UmVmLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQkM2NDZDMUMxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRM
aXN0SXRlbVJlZi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzY0NkMxODExREQzOTlGMDA2NDU1QjAgLyogV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVm
LmNwcCAqLzsgfTsKKwkJQkM2NDZDMUQxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRM
aXN0SXRlbVJlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkM2NDZDMTkxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNkVE
QUE2MTExMjcxQzYwMEU3Njc4QiAvKiBQYWdlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzZFREFBNTExMTI3MUM2MDBFNzY3OEIgLyogUGFn
ZUNsaWVudC5oICovOyB9OwogCQlCQzcwNDNDQzEyRjc1RUUwMDA2NDcyQjkgLyogV0tCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzcwNDNDQTEyRjc1RUUwMDA2NDcyQjkgLyogV0tCdW5kbGVOYXZpZ2F0aW9uQWN0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QkM3MDQzQ0QxMkY3NUVFMDAwNjQ3MkI5IC8qIFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzcwNDNDQjEy
Rjc1RUUwMDA2NDcyQjkgLyogV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcCAqLzsgfTsKQEAg
LTE4NjEsNiArMTg3MSwxNiBAQAogCQkzNzk0ODQwMjE1MEMzNTA2MDBFNTJDRTkgLyogV2ViUmVu
ZGVyTGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVuZGVyTGF5
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc5NDg0MDYxNTBDNEI5NjAwRTUy
Q0U5IC8qIFdLUmVuZGVyTGF5ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV0tSZW5kZXJMYXllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3
OTQ4NDA3MTUwQzRCOTYwMEU1MkNFOSAvKiBXS1JlbmRlckxheWVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdLUmVuZGVyTGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMzdDNEMwODQxODE0OUM1QjAwMzY4OEI5IC8qIFdLQmFja0ZvcndhcmRMaXN0SXRl
bS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLQmFja0Zvcndh
cmRMaXN0SXRlbS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzdDNEMwODUxODE0
OUM1QjAwMzY4OEI5IC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMzdDNEMwODgxODE0OUYyMzAwMzY4OEI5IC8qIFdLQmFja0ZvcndhcmRM
aXN0SXRlbUludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQmFj
a0ZvcndhcmRMaXN0SXRlbUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTM3QzRDMDhBMTgxNEFDNUMwMDM2ODhCOSAvKiBXS0JhY2tGb3J3YXJkTGlzdC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLQmFja0ZvcndhcmRMaXN0Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzN0M0QzA4QjE4MTRBQzVDMDAzNjg4QjkgLyog
V0tCYWNrRm9yd2FyZExpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tC
YWNrRm9yd2FyZExpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzdDNEMwOEUx
ODE0QUYzQTAwMzY4OEI5IC8qIFdLQmFja0ZvcndhcmRMaXN0SW50ZXJuYWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCYWNrRm9yd2FyZExpc3RJbnRlcm5hbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzN0M0QzA5MTE4MTRCM0FGMDAzNjg4QjkgLyogV0tO
U0FycmF5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tOU0Fy
cmF5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzN0M0QzA5MjE4MTRCM0FGMDAz
Njg4QjkgLyogV0tOU0FycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
TlNBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzN0M0QzA5NjE4MTRCRjlD
MDAzNjg4QjkgLyogV0tOU09iamVjdEV4dHJhcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdLTlNPYmplY3RFeHRyYXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTM3QzRDMDk3MTgxNEJGOUMwMDM2ODhCOSAvKiBXS05TT2JqZWN0RXh0cmFzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTlNPYmplY3RFeHRyYXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdERkE2RkYxODEwQkI5MjAwMUY0QTlGIC8qIFdL
Rm91bmRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0ZvdW5kYXRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdGNjIzQjcxMkE1N0I2MjAwRTNG
REY2IC8qIFdLRmluZE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0tGaW5kT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzRjg3QjlCQTE1
ODkzRjYzMDA5MEZGNjIgLyogV2ViQ29sb3JDaG9vc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbG9yQ2hvb3Nlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yMzgxLDEwICsyNDAxLDEwIEBACiAJCUJDNjBDNTc4MTI0MEE1NDYwMDhD
NUUyOSAvKiBXS0J1bmRsZVJhbmdlSGFuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdLQnVuZGxlUmFuZ2VIYW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQzY0Njk2RDExREJFNjAzMDA2NDU1QjAgLyogSW1tdXRhYmxlQXJyYXkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1tdXRhYmxlQXJyYXkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzY0Njk2RTExREJFNjAzMDA2NDU1QjAg
LyogSW1tdXRhYmxlQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1t
dXRhYmxlQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkM2NDZDMTYxMURE
Mzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdLQmFja0ZvcndhcmRMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQkM2NDZDMTcxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRM
aXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQmFja0ZvcndhcmRMaXN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDNjQ2QzE4MTFERDM5OUYwMDY0NTVC
MCAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0tCYWNrRm9yd2FyZExpc3RJdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQkM2NDZDMTkxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0
SXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0JhY2tGb3J3YXJkTGlz
dEl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM2NDZDMTYxMUREMzk5RjAw
NjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0UmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdLQmFja0ZvcndhcmRMaXN0UmVmLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQkM2NDZDMTcxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRM
aXN0UmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQmFja0ZvcndhcmRM
aXN0UmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDNjQ2QzE4MTFERDM5OUYw
MDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM2NDZDMTkxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFj
a0ZvcndhcmRMaXN0SXRlbVJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
S0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkM2RURBQTUxMTEyNzFDNjAwRTc2NzhCIC8qIFBhZ2VDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGFnZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQzcwNDNDQTEyRjc1RUUwMDA2NDcyQjkgLyogV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlTmF2aWdhdGlvbkFj
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzcwNDNDQjEyRjc1RUUwMDA2
NDcyQjkgLyogV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMjI1LDEyICszMjQ1LDEzIEBACiAJCTFBQURERjRCMTBE
ODJBRjAwMEQzRDYzRCAvKiBTaGFyZWQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAotCQkJCTUxRTM1MUMyMTgwRjJDODUwMEU1M0JFOSAvKiBEYXRhYmFzZXMgKi8s
CiAJCQkJQkNEREIzMTQxMjRFQkNFRjAwNDhEMTNDIC8qIEFQSSAqLywKIAkJCQk1MThFOEVGMTE2
QjIwOEYwMDBFOTE0MjkgLyogQXV0aGVudGljYXRpb24gKi8sCiAJCQkJMUFBRjBDNDcxMkIxNjMy
ODAwOEU0OUUyIC8qIGNmICovLAogCQkJCUMwMUEyNUZGMTI2NjJGMjEwMEM5RUQ1NSAvKiBjZyAq
LywKKwkJCQkzN0M0QzA5MDE4MTRCMzdCMDAzNjg4QjkgLyogQ29jb2EgKi8sCiAJCQkJQkMxMTFC
NUYxMTJGNjM1RTAwMzM3QkFCIC8qIENvcmVJUENTdXBwb3J0ICovLAorCQkJCTUxRTM1MUMyMTgw
RjJDODUwMEU1M0JFOSAvKiBEYXRhYmFzZXMgKi8sCiAJCQkJNTE4RThFRjIxNkIyMDhGODAwRTkx
NDI5IC8qIERvd25sb2FkcyAqLywKIAkJCQlCQzgyODM2ODE2QjM1ODc5MDBBMjc4RkUgLyogRW50
cnlQb2ludFV0aWxpdGllcyAqLywKIAkJCQlFMTcwODc3MjE2RDZDRkVDMDBGOTkyMjYgLyogRmls
ZUFQSSAqLywKQEAgLTM2MDUsNiArMzYyNiwzMSBAQAogCQkJbmFtZSA9IGNmOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJMzdDNEMwODMxODE0OUMyQTAwMzY4OEI5IC8qIENv
Y29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkzN0M0
QzA4QjE4MTRBQzVDMDAzNjg4QjkgLyogV0tCYWNrRm9yd2FyZExpc3QuaCAqLywKKwkJCQkzN0M0
QzA4QTE4MTRBQzVDMDAzNjg4QjkgLyogV0tCYWNrRm9yd2FyZExpc3QubW0gKi8sCisJCQkJMzdD
NEMwOEUxODE0QUYzQTAwMzY4OEI5IC8qIFdLQmFja0ZvcndhcmRMaXN0SW50ZXJuYWwuaCAqLywK
KwkJCQkzN0M0QzA4NTE4MTQ5QzVCMDAzNjg4QjkgLyogV0tCYWNrRm9yd2FyZExpc3RJdGVtLmgg
Ki8sCisJCQkJMzdDNEMwODQxODE0OUM1QjAwMzY4OEI5IC8qIFdLQmFja0ZvcndhcmRMaXN0SXRl
bS5tbSAqLywKKwkJCQkzN0M0QzA4ODE4MTQ5RjIzMDAzNjg4QjkgLyogV0tCYWNrRm9yd2FyZExp
c3RJdGVtSW50ZXJuYWwuaCAqLywKKwkJCSk7CisJCQluYW1lID0gQ29jb2E7CisJCQlwYXRoID0g
VUlQcm9jZXNzL0NvY29hOworCQkJc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOworCQl9OworCQkz
N0M0QzA5MDE4MTRCMzdCMDAzNjg4QjkgLyogQ29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91
cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTM3QzRDMDkyMTgxNEIzQUYwMDM2ODhCOSAvKiBXS05T
QXJyYXkuaCAqLywKKwkJCQkzN0M0QzA5MTE4MTRCM0FGMDAzNjg4QjkgLyogV0tOU0FycmF5Lm1t
ICovLAorCQkJCTM3QzRDMDk3MTgxNEJGOUMwMDM2ODhCOSAvKiBXS05TT2JqZWN0RXh0cmFzLmgg
Ki8sCisJCQkJMzdDNEMwOTYxODE0QkY5QzAwMzY4OEI5IC8qIFdLTlNPYmplY3RFeHRyYXMubW0g
Ki8sCisJCQkpOworCQkJcGF0aCA9IENvY29hOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKIAkJMzdERkE2RkUxODEwQkIyRDAwMUY0QTlGIC8qIENvY29hICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTQyODcsNiArNDMzMyw3IEBACiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUJDMEMzNzY2MTBGODA3NjYwMDc2
RDdDQiAvKiBDICovLAorCQkJCTM3QzRDMDgzMTgxNDlDMkEwMDM2ODhCOSAvKiBDb2NvYSAqLywK
IAkJCQlCQzhBNTAxMzExNzY1RjQ1MDA3NTc1NzMgLyogY3BwICovLAogCQkJCUJDMTExQjQ3MTEy
RjYxNjkwMDMzN0JBQiAvKiBtYWMgKi8sCiAJCQkpOwpAQCAtNDMwNiwxMCArNDM1MywxMCBAQAog
CQkJCTUxMkY1OEVFMTJBODhBNTQwMDYyOTUzMCAvKiBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmggKi8sCiAJCQkJNTEyRjU4RUYxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQXV0aGVudGljYXRpb25E
ZWNpc2lvbkxpc3RlbmVyLmNwcCAqLywKIAkJCQk1MTJGNThGMDEyQTg4QTU0MDA2Mjk1MzAgLyog
V0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCAqLywKLQkJCQlCQzY0NkMxNjExREQz
OTlGMDA2NDU1QjAgLyogV0tCYWNrRm9yd2FyZExpc3QuY3BwICovLAotCQkJCUJDNjQ2QzE3MTFE
RDM5OUYwMDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlzdC5oICovLAotCQkJCUJDNjQ2QzE4MTFE
RDM5OUYwMDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwICovLAotCQkJCUJDNjQ2
QzE5MTFERDM5OUYwMDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0uaCAqLywKKwkJCQlC
QzY0NkMxNjExREQzOTlGMDA2NDU1QjAgLyogV0tCYWNrRm9yd2FyZExpc3RSZWYuY3BwICovLAor
CQkJCUJDNjQ2QzE3MTFERDM5OUYwMDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlzdFJlZi5oICov
LAorCQkJCUJDNjQ2QzE4MTFERDM5OUYwMDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1S
ZWYuY3BwICovLAorCQkJCUJDNjQ2QzE5MTFERDM5OUYwMDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJk
TGlzdEl0ZW1SZWYuaCAqLywKIAkJCQlGMDM2OTc4MzE1RjRCRTZCMDBDM0E4MEUgLyogV0tDb2xv
clBpY2tlclJlc3VsdExpc3RlbmVyLmNwcCAqLywKIAkJCQlGMDM2OTc4NDE1RjRCRTZCMDBDM0E4
MEUgLyogV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyLmggKi8sCiAJCQkJQkNCOUUyNEExMTIw
RTE1QzAwQTEzN0UwIC8qIFdLQ29udGV4dC5jcHAgKi8sCkBAIC01MzcwLDYgKzU0MTcsNyBAQAog
CQkJCTFBQTU3NUZCMTQ5NkI1MjYwMEE0RUUwNiAvKiBFdmVudERpc3BhdGNoZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBOTBDMUY0MTI2NEZENzEwMDNFNDRENCAvKiBGaW5kQ29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5MTAwNzExMjY2NzVDNDAwMTg0MkY1IC8qIEZpbmRJbmRp
Y2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTM3QzRDMDg3MTgxNDlDNUIwMDM2ODhCOSAvKiBX
S0JhY2tGb3J3YXJkTGlzdEl0ZW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOTEwMTBBMTI2OEM4
Q0EwMDE4NDJGNSAvKiBGaW5kSW5kaWNhdG9yV2luZG93LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0U4MUQ4RDEzMTlGN0VGMDAyNDE5MTAgLyogRm9udEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMTc3NTNGMTE4QkFCRjAwMDdEOUU5QSAvKiBHZW5lcmljQ2FsbGJhY2suaCBpbiBIZWFkZXJz
ICovLApAQCAtNTQwNCw2ICs1NDUyLDcgQEAKIAkJCQkxQUU0OTg3ODExRkY3RkFBMDA0OEI0NjQg
LyogSlNOUE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1ODhCMzMxNzRBQUUwQjAwQUNG
NDcyIC8qIEtleWVkQ29kaW5nVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTg4QjM3MTc0
QUI3NzAwMEFDRjQ3MiAvKiBLZXllZENvZGluZ1ZhbHVlQ0YuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTM3QzRDMDk5MTgxNEJGOUMwMDM2ODhCOSAvKiBXS05TT2JqZWN0RXh0cmFzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTU4OEIzMTE3NEFBQzcxMDBBQ0Y0NzIgLyogS2V5ZWRFbmNvZGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQ0UwOTM3ODE0RkIxMjhDMDAxMTM4RDkgLyogTGF5ZXJIb3N0aW5n
Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5MkRDMTExMkY4QkE0NjAwMTdBRjY1IC8q
IExheWVyVHJlZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLApAQCAtNTYzOSw2ICs1Njg4LDcgQEAK
IAkJCQlCQzU5NTM0MjEwRkMwNDUyMDA5OEY4MkQgLyogV2ViTG9hZGVyQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzM0QzQTNDMjEzMzk2MEIwMDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1h
bmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMzRDNBM0M5MTMzOTYxNzkwMDcwOUJFNCAvKiBX
ZWJNZWRpYUNhY2hlTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQkzN0M0QzA4
RDE4MTRBQzVDMDAzNjg4QjkgLyogV0tCYWNrRm9yd2FyZExpc3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCTMzRDNBM0JCMTMzOTYwNjIwMDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzM0QzQTNDQjEzMzk2MTc5MDA3MDlCRTQgLyogV2ViTWVk
aWFDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MDk4NTRF
RDEyQkM0RTE4MDAwQUQwODAgLyogV2ViTWVtb3J5U2FtcGxlci5oIGluIEhlYWRlcnMgKi8sCkBA
IC01NzA5LDggKzU3NTksOSBAQAogCQkJCTUxMkY1OEY2MTJBODhBNTQwMDYyOTUzMCAvKiBXS0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJGNThGODEyQTg4
QTU0MDA2Mjk1MzAgLyogV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxMkE5NzZBMTgwRTA5QjgwMDM5QTE0OSAvKiBEYXRhYmFzZVByb2Nlc3NQ
cm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKLQkJCQlCQzY0NkMxQjExREQzOTlGMDA2NDU1
QjAgLyogV0tCYWNrRm9yd2FyZExpc3QuaCBpbiBIZWFkZXJzICovLAotCQkJCUJDNjQ2QzFEMTFE
RDM5OUYwMDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0uaCBpbiBIZWFkZXJzICovLAor
CQkJCUJDNjQ2QzFCMTFERDM5OUYwMDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlzdFJlZi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMzdDNEMwOTUxODE0QjlFNjAwMzY4OEI5IC8qIFdLQmFja0Zvcndh
cmRMaXN0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDNjQ2QzFEMTFERDM5OUYwMDY0
NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
RERCMzE3MTI0RUJEMTMwMDQ4RDEzQyAvKiBXS0Jhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTdD
RDVFQkJCMTc0NkE4M0UwMDBDMUM0NSAvKiBXS0Jhc2VNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDQkFBQzczMTQ0RTYxOUUwMDUzRjgyRiAvKiBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtNTc5MSw2ICs1ODQyLDcgQEAKIAkJCQlCNjJFNzMxMjE0MzA0
N0IwMDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTEw
QUUwRDEzM0MxNkNCMDA3MjcxN0EgLyogV0tJY29uRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxMjNDRjFDMTMzRDI2MEEwMDU2RjgwMCAvKiBXS0ljb25EYXRhYmFzZUNHLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkzN0M0QzA5NDE4MTRCM0FGMDAzNjg4QjkgLyogV0tOU0FycmF5LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQ0NGNkFDMzEyQzkxRjM0MDA4RjlDMzUgLyogV0tJbWFnZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNDRjZBQ0ExMkM5MUY1OTAwOEY5QzM1IC8qIFdLSW1hZ2VDRy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4RTI5MzkxMjc2MUU1QjAwQkM3QkQwIC8qIFdLSW5zcGVj
dG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTU4MjIsNiArNTg3NCw3IEBACiAJCQkJMUFDODZGRjQx
MzBCNDZEMzAwMkMxMjU3IC8qIFdLUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQ0Q1OTdEMDExMkI1NkFDMDBFQzhDMjMgLyogV0tQcmVmZXJlbmNlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNzYyQjc0OEQxMjBCQzc1QzAwODE5MzM5IC8qIFdLUHJlZmVyZW5jZXNQ
cml2YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQkzN0M0QzA4OTE4MTQ5RjIzMDAzNjg4QjkgLyog
V0tCYWNrRm9yd2FyZExpc3RJdGVtSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMzRG
MDE3MTJFQTVEMzMwMDRFQzU4RCAvKiBXS1ByaW50aW5nVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNCQUFDRUIxNDUyMjVFMzAwNTNGODJGIC8qIFdLUHJvY2Vzc0dyb3VwLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQ0JBQUNFRDE0NTIyNUUzMDA1M0Y4MkYgLyogV0tQcm9jZXNzR3JvdXBQcml2
YXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTY2MzAsNiArNjY4Myw3IEBACiAJCQkJNTE4RThGMEIx
NkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2FkTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQUI3RDRDQjEyODhBQUE3MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQUQyNUU5NTE2N0FCMDgxMDBFQTlCQ0QgLyogRG93bmxvYWRQcm94eU1hcC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkzN0M0QzA4NjE4MTQ5QzVCMDAzNjg4QjkgLyogV0tCYWNr
Rm9yd2FyZExpc3RJdGVtLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCN0Q2MTkxMjg4QjlEOTAw
Q0ZEMDhDIC8qIERvd25sb2FkUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkM4NDUyQTcxMTYyQzgwOTAwQ0FCOUI1IC8qIERyYXdpbmdBcmVhLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBNjQyMjk5MTJERDAyOTIwMENBQUUyQyAvKiBEcmF3aW5nQXJlYU1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTY2NTMsNiArNjcwNyw3IEBACiAJCQkJ
QkM2NDY5NkYxMURCRTYwMzAwNjQ1NUIwIC8qIEltbXV0YWJsZUFycmF5LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDQkNCMENEMTIxNUUzM0EwMERFNTlDQSAvKiBJbW11dGFibGVEaWN0aW9uYXJ5
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMjA0RUUyMTFDODNFOTgwMDhGMzM3NSAvKiBJbmpl
Y3RlZEJ1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzN0M0QzA5MzE4MTRCM0FGMDAzNjg4
QjkgLyogV0tOU0FycmF5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM1RUVCQTExMjc3NjFDQzAw
MzMyMkI4IC8qIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTkzNUVFQkEzMTI3NzYxRDMwMDMzMjJCOCAvKiBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3
YXJkTGlzdEl0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFRTdEQzYxMjhCNjQ1RDAwOTgy
N0RBIC8qIEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNjg5Miw2
ICs2OTQ3LDcgQEAKIAkJCQlDNTc0QTM3NzEyRTYwOTlEMDAyREZFOTggLyogV2ViRHJhZ0NsaWVu
dE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDQTBFRkEwMTIzMzI2NDIwMDdEM0NGQiAvKiBX
ZWJFZGl0Q29tbWFuZFByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMTExQTVFMTEyRjRG
QkIwMDMzN0JBQiAvKiBXZWJFZGl0b3JDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzdD
NEMwOTgxODE0QkY5QzAwMzY4OEI5IC8qIFdLTlNPYmplY3RFeHRyYXMubW0gaW4gU291cmNlcyAq
LywKIAkJCQlDNTIzN0Y2MDEyNDQxQ0EzMDA3ODA0NzIgLyogV2ViRWRpdG9yQ2xpZW50TWFjLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1NzU2MTMxMjZFMDEzODAwNkYwRjEyIC8qIFdlYkVycm9y
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMTExQUUwMTEyRjVCQzIwMDMzN0JBQiAvKiBXZWJF
cnJvcnNNYWMubW0gaW4gU291cmNlcyAqLywKQEAgLTcwMjQsOCArNzA4MCw4IEBACiAJCQkJNTEy
RjU4RjUxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTFFMzUxQ0ExODBGMkNDQzAwRTUzQkU5IC8qIElEQlV0aWxpdGll
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTJGNThGNzEyQTg4QTU0MDA2Mjk1MzAgLyogV0tB
dXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQkM2
NDZDMUExMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0LmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCUJDNjQ2QzFDMTFERDM5OUYwMDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0
ZW0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkM2NDZDMUExMUREMzk5RjAwNjQ1NUIwIC8qIFdL
QmFja0ZvcndhcmRMaXN0UmVmLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDNjQ2QzFDMTFERDM5
OUYwMDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkNCQUFDNzIxNDRFNjE5OTAwNTNGODJGIC8qIFdLQnJvd3NpbmdDb250ZXh0Q29udHJv
bGxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDQkFBQ0Y1MTQ1MjMyNEYwMDUzRjgyRiAvKiBX
S0Jyb3dzaW5nQ29udGV4dEdyb3VwLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMyMDRFRUUxMUM4
M0VDODAwOEYzMzc1IC8qIFdLQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzAzOSw2ICs3
MDk1LDcgQEAKIAkJCQlCQzRCRUZFMjEyMEExQTRDMDBGQkEwQzcgLyogV0tCdW5kbGVOb2RlSGFu
ZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMjA1MjgyMTFDOTQyODQwMDhGMzM3NSAvKiBX
S0J1bmRsZVBhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NGNDdGRjYxNzI3NUI3MTAwOEFD
QjkxIC8qIFdLQnVuZGxlUGFnZUJhbm5lci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzN0M0QzA4
QzE4MTRBQzVDMDAzNjg4QjkgLyogV0tCYWNrRm9yd2FyZExpc3QubW0gaW4gU291cmNlcyAqLywK
IAkJCQk3Q0Y0N0ZGRTE3Mjc2QUUzMDA4QUNCOTEgLyogV0tCdW5kbGVQYWdlQmFubmVyTWFjLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkM3QjYzM0UxMkE0NUQxMjAwRDE3NEE0IC8qIFdLQnVuZGxl
UGFnZUdyb3VwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUVEQ0E3MUI3MTI4RERBOEMwMDIwMUIy
NiAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmNwcCBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>