<?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>142541</bug_id>
          
          <creation_ts>2015-03-10 13:09:11 -0700</creation_ts>
          <short_desc>[Mac] Update AirPlay handling</short_desc>
          <delta_ts>2015-03-12 10:21:05 -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>Media</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 name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>joepeck</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1076045</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-03-10 13:09:11 -0700</bug_when>
    <thetext>Update AirPlay route handling</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076067</commentid>
    <comment_count>1</comment_count>
      <attachid>248353</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-03-10 13:52:23 -0700</bug_when>
    <thetext>Created attachment 248353
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076069</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-10 13:54:44 -0700</bug_when>
    <thetext>Attachment 248353 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/avfoundation/AVPlaybackTargetMac.mm:60:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/AVPlaybackTargetMac.mm:60:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 53 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>1076318</commentid>
    <comment_count>3</comment_count>
      <attachid>248418</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-03-11 08:05:26 -0700</bug_when>
    <thetext>Created attachment 248418
Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076319</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-11 08:08:14 -0700</bug_when>
    <thetext>Attachment 248418 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/avfoundation/AVPlaybackTargetMac.mm:60:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/AVPlaybackTargetMac.mm:60:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 53 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>1076435</commentid>
    <comment_count>5</comment_count>
      <attachid>248447</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-03-11 14:21:29 -0700</bug_when>
    <thetext>Created attachment 248447
Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076436</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-11 14:23:43 -0700</bug_when>
    <thetext>Attachment 248447 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/avfoundation/MediaPlaybackTargetMac.mm:60:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/MediaPlaybackTargetMac.mm:60:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/WebMediaPlaybackTargetPickerProxyMac.mm:33:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3 in 47 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>1076444</commentid>
    <comment_count>7</comment_count>
      <attachid>248451</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-03-11 14:37:01 -0700</bug_when>
    <thetext>Created attachment 248451
Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076445</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-11 14:38:55 -0700</bug_when>
    <thetext>Attachment 248451 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/avfoundation/MediaPlaybackTargetMac.mm:60:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/MediaPlaybackTargetMac.mm:60:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 48 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>1076448</commentid>
    <comment_count>9</comment_count>
      <attachid>248451</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-03-11 14:47:16 -0700</bug_when>
    <thetext>Comment on attachment 248451
Updated patch.

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

&gt; Source/WebCore/dom/Document.cpp:6497
&gt; +    for (auto targetClient : m_playbackTargetClients) {

I would write this as &apos;auto* client : m_playbackTargetClients&apos;

&gt; Source/WebCore/dom/Document.cpp:6513
&gt; +    for (auto client : m_playbackTargetClients)

I would write this as &apos;auto* client : m_playbackTargetClients&apos;

&gt; Source/WebCore/dom/Document.cpp:6521
&gt; +    for (auto client : m_playbackTargetClients) {

I would write this as &apos;auto* client : m_playbackTargetClients&apos;

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:2710
&gt; +    bool wirelessTarget = false;
&gt; +
&gt; +    wirelessTarget = m_avPlayer.get().externalPlaybackActive;

No need to use three lines for this.

&gt; Source/WebKit2/UIProcess/mac/WebMediaPlaybackTargetPickerProxyMac.mm:162
&gt; +- (void)observeValueForKeyPath:keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context

I think you are missing the type of keyPath.  It should probably be (id)keyPath</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076453</commentid>
    <comment_count>10</comment_count>
      <attachid>248454</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-03-11 14:56:55 -0700</bug_when>
    <thetext>Created attachment 248454
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076524</commentid>
    <comment_count>11</comment_count>
      <attachid>248475</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-03-11 18:28:37 -0700</bug_when>
    <thetext>Created attachment 248475
Rebased patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076525</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-11 18:29:56 -0700</bug_when>
    <thetext>Attachment 248475 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/avfoundation/MediaPlaybackTargetMac.mm:60:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/MediaPlaybackTargetMac.mm:60:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 36 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>1076531</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-03-11 18:55:17 -0700</bug_when>
    <thetext>Committed r181423 - http://trac.webkit.org/changeset/181423</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076570</commentid>
    <comment_count>14</comment_count>
      <attachid>248451</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-11 23:17:49 -0700</bug_when>
    <thetext>Comment on attachment 248451
Updated patch.

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

Cool! I realize this landed, I just have some questions / comments that don&apos;t really need to be addressed unless you desire to.

&gt; Source/WebCore/page/ChromeClient.h:449
&gt; +    virtual void showPlaybackTargetPicker(const WebCore::IntPoint&amp;, bool) { }

Nit: It is unclear what this bool flag is for, it would be nice to have a name in the header.

&gt; Source/WebCore/page/Page.cpp:1703
&gt; +

Nit: Empty line could be removed.

&gt; Source/WebCore/page/Page.cpp:1729
&gt; +    for (Frame* frame = &amp;mainFrame(); frame; frame = frame-&gt;tree().traverseNext()) {
&gt; +        Document* document = frame-&gt;document();
&gt; +        if (frame-&gt;document() == m_documentRequestingPlaybackTargetPicker) {
&gt; +            documentThatRequestedPicker = document;
&gt; +            continue;
&gt; +        }
&gt; +        frame-&gt;document()-&gt;didChoosePlaybackTarget(target);
&gt; +    }
&gt; +
&gt; +    if (documentThatRequestedPicker)
&gt; +        documentThatRequestedPicker-&gt;didChoosePlaybackTarget(target);

Any particular reason this delays to call the documentThatRequested last? Is there a behavior here that is significant that should be documented? ChangeLog doesn&apos;t say.

&gt; Source/WebCore/page/Page.cpp:1755
&gt; +
&gt; +

Nit: extra newline can be removed.

&gt; Source/WebKit2/Shared/mac/WebCoreArgumentCodersMac.mm:42
&gt; +#import &lt;WebCore/SoftLinking.h&gt;
&gt; +#import &lt;objc/runtime.h&gt;

Are these needed? I don&apos;t see any objc_* or SOFT_LINK macros.

&gt; Source/WebKit2/UIProcess/WebMediaPlaybackTargetPickerProxy.cpp:40
&gt; +    m_client = 0;

nullptr

&gt; Source/WebKit2/UIProcess/mac/WebMediaPlaybackTargetPickerProxyMac.h:38
&gt; +namespace WebCore {
&gt; +class MediaPlaybackTarget;
&gt; +class FloatRect;
&gt; +}

These should already be covered by WebMediaPlaybackTargetPickerProxy.h.

&gt; Source/WebKit2/UIProcess/mac/WebMediaPlaybackTargetPickerProxyMac.h:45
&gt; +class WebMediaPlaybackTargetPickerProxyMac : public WebMediaPlaybackTargetPickerProxy {

Nit: You can mark the class as &quot;final&quot;

&gt; Source/WebKit2/UIProcess/mac/WebMediaPlaybackTargetPickerProxyMac.mm:55
&gt; +- (id)initWithCallback:(WebMediaPlaybackTargetPickerProxyMac*)callback;

Nit: &quot;instancetype&quot; instead of &quot;id&quot;.

&gt; Source/WebKit2/UIProcess/mac/WebMediaPlaybackTargetPickerProxyMac.mm:57
&gt; +- (void)observeValueForKeyPath:keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context;

Nit: You should provide a type of &quot;keyPath&quot; instead of leaving it off, which I think means (id).

&gt; Source/WebKit2/UIProcess/mac/WebMediaPlaybackTargetPickerProxyMac.mm:110
&gt; +        [m_devicePickerMenuController.get() addObserver:m_devicePickerMenuControllerDelegate.get() forKeyPath:@&quot;externalOutputDeviceAvailable&quot; options:NSKeyValueObservingOptionNew context:nullptr];
&gt; +        [m_devicePickerMenuController.get() addObserver:m_devicePickerMenuControllerDelegate.get() forKeyPath:@&quot;externalOutputDevicePicked&quot; options:NSKeyValueObservingOptionNew context:nullptr];

These strings look like magic. Where do they come from? Can they be made constants to avoid accidental typos?

&gt; Source/WebKit2/UIProcess/mac/WebMediaPlaybackTargetPickerProxyMac.mm:166
&gt; +    UNUSED_PARAM(change);
&gt; +    UNUSED_PARAM(context);
&gt; +    UNUSED_PARAM(object);

I don&apos;t think we need UNUSED_PARAM in ObjC but it can&apos;t hurt to leave them in.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp:1107
&gt; +    //     IntPoint scrollPositionAtNewScale = mainFrameView()-&gt;rootViewToContents(-centerInViewCoordinates);

Stale comment? Remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076661</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-03-12 10:21:05 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Comment on attachment 248451 [details]
&gt;
Thanks for the detailed post-review! I fixed all of the issues you pointed out and landed some changes that were in the last patch but which didn&apos;t make the initial commit because of a bungled merge in r181442.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248353</attachid>
            <date>2015-03-10 13:52:23 -0700</date>
            <delta_ts>2015-03-11 08:05:26 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>patch_28.txt</filename>
            <type>text/plain</type>
            <size>114612</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxMzQwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBA
CisyMDE1LTAzLTEwICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisg
ICAgICAgIFtNYWNdIFVwZGF0ZSBBaXJQbGF5IGhhbmRsaW5nCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI1NDEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnOgorCiAyMDE1LTAzLTEwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV2luXSBKU0MgQnVpbGQgV2FybmluZ3MgTmVlZCB0byBiZSBSZXNvbHZl
ZC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJldmlzaW9uIDE4MTMyOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZp
Zwkod29ya2luZyBjb3B5KQpAQCAtMTAzLDYgKzEwMywxMCBAQCBFTkFCTEVfSU5TUEVDVE9SX0FM
VEVSTkFURV9ESVNQQVRDSEVSU19tCiBFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRD
SEVSU19tYWNvc3hfMTAxMTAwID0gRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hF
UlM7CiAKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRbc2RrPWlwaG9uZSpdID0gRU5B
QkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsKK0VOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19U
QVJHRVRbc2RrPW1hY29zeCpdID0gJChFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21h
Y29zeF8kKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SKSkKK0VOQUJMRV9XSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwOTAgPSA7CitFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUX21hY29zeF8xMDEwMDAgPSA7CitFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
X21hY29zeF8xMDExMDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogCiBFTkFC
TEVfSU9TX0dFU1RVUkVfRVZFTlRTW3Nkaz1pcGhvbmUqXSA9ICQoRU5BQkxFX0lPU19HRVNUVVJF
X0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfJChVU0VfSU5URVJOQUxfU0RLKSk7CiBFTkFC
TEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES19ZRVMgPSBFTkFCTEVf
SU9TX0dFU1RVUkVfRVZFTlRTOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxMzQwKQorKysg
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODkgQEAK
KzIwMTUtMDMtMTAgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgW01hY10gVXBkYXRlIEFpclBsYXkgaGFuZGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjU0MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmlu
ZXMueGNjb25maWc6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjphZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6cmVtb3ZlUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0TW9uaXRvcmluZyk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6cmVxdWlyZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cGxheWJhY2tUYXJnZXRBdmFpbGFiaWxp
dHlEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRpZENob29zZVBsYXli
YWNrVGFyZ2V0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
cmVnaXN0ZXJXaXRoRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6dW5yZWdpc3RlcldpdGhEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50
Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYVNlc3Npb246OkhUTUxNZWRpYVNlc3Npb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhU2Vzc2lvbjo6cmVnaXN0ZXJXaXRoRG9jdW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhU2Vzc2lvbjo6dW5yZWdpc3RlcldpdGhEb2N1bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFTZXNzaW9uOjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhU2Vzc2lvbjo6aGFzV2lyZWxlc3NQbGF5YmFja1Rh
cmdldHMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhU2Vzc2lvbjo6c2V0SGFzUGxheWJh
Y2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhU2Vzc2lvbjo6ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhU2Vzc2lvbjo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhU2Vzc2lvbjo6cmVxdWlyZXNQbGF5YmFja1Rh
cmdldFJvdXRlTW9uaXRvcmluZyk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmg6
CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZTo6cGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6Y29uZmlndXJlUGxheWJhY2tUYXJnZXRNb25pdG9y
aW5nKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Omhh
c1dpcmVsZXNzUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cGxheWJh
Y2tUYXJnZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OmNsaWVudERhdGFCdWZmZXJpbmdUaW1lckZp
cmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6d2lyZWxlc3NSb3V0ZXNBdmFp
bGFibGVEaWRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlh
U2Vzc2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpkaWRDaG9vc2VQbGF5
YmFja1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OmV4dGVybmFsT3V0
cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vz
c2lvbjo6cmVxdWlyZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVNlc3Npb25DbGllbnQ6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6d2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVD
aGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25N
YW5hZ2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1
cmVXaXJlTGVzc1RhcmdldE1vbml0b3JpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lv
cy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9z
L01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Np
b25NYW5hZ2VyaU9TOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSk6Cisg
ICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciB3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURp
ZENoYW5nZTpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9BVlBsYXliYWNrVGFyZ2V0
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QVZQbGF5YmFja1RhcmdldDo6fkFWUGxheWJh
Y2tUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6QVZQbGF5YmFja1RhcmdldDo6QVZQbGF5YmFj
a1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpBVlBsYXliYWNrVGFyZ2V0OjpzZXREZXZpY2VQ
aWNrZXJDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFWUGxheWJhY2tUYXJnZXQ6OmRldmlj
ZVBpY2tlckNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0FWUGxheWJhY2tU
YXJnZXRQaWNrZXJDbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBVlBsYXliYWNr
VGFyZ2V0UGlja2VyQ2xpZW50Ojp+QVZQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXI6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVJbnRlcmZhY2U6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlBsYXliYWNrVGFyZ2V0TWFjLm1tOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFWUGxheWJhY2tUYXJnZXQ6OmVuY29kZSk6CisgICAgICAg
IChXZWJDb3JlOjpBVlBsYXliYWNrVGFyZ2V0OjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2FuY2VsTG9hZCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVlBs
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjppc0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVs
ZXNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OndpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2Fi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFdpcmVsZXNzUGxheWJhY2tU
YXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6dXBkYXRlRGlzYWJsZUV4dGVybmFsUGxheWJhY2spOgorICAgICAgICAoLVtXZWJDb3Jl
QVZGTW92aWVPYnNlcnZlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpj
b250ZXh0Ol0pOgorCiAyMDE1LTAzLTEwICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgQWRqdXN0bWVudHMgdG8gbWVkaWEgY29udHJvbCBmb250cy4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnCShyZXZpc2lvbiAxODEzMjkpCisrKyBTb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtMTAzLDYgKzEw
MywxMCBAQCBFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSU19tCiBFTkFCTEVf
SU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSU19tYWNvc3hfMTAxMTAwID0gRU5BQkxFX0lO
U1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlM7CiAKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFD
S19UQVJHRVRbc2RrPWlwaG9uZSpdID0gRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsK
K0VOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRbc2RrPW1hY29zeCpdID0gJChFTkFCTEVf
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8kKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9O
X01BSk9SKSkKK0VOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwOTAgPSA7
CitFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDEwMDAgPSA7CitFTkFC
TEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDExMDAgPSBFTkFCTEVfV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUOwogCiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTW3Nkaz1pcGhv
bmUqXSA9ICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtf
JChVU0VfSU5URVJOQUxfU0RLKSk7CiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRI
X0lOVEVSTkFMX1NES19ZRVMgPSBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTOwpJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMTgxMzI5KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsNiArMTc1LDcgQEAKIAkJMDc0RTgyQkIx
OEE2OUYwRTAwN0VGNTRDIC8qIFBsYXRmb3JtVGltZVJhbmdlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc0RTgyQjkxOEE2OUYwRTAwN0VGNTRDIC8q
IFBsYXRmb3JtVGltZVJhbmdlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTA3NTM4NjAyMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJh
Y2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc1
Mzg2MDAxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5jcHAgKi87IH07CiAJCTA3
NTM4NjAzMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NTM4NjAxMTQ0ODlFOTgwMEI3ODQ1
MiAvKiBDYWNoZWRUZXh0VHJhY2suaCAqLzsgfTsKKwkJMDc2MEMxN0ExQUE4RkM3RDAwOUVEN0I4
IC8qIEFWUGxheWJhY2tUYXJnZXRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwN0UzREZEMjFBOUU3OEE1MDA3NjRDQTggLyogQVZQbGF5YmFja1Rh
cmdldE1hYy5tbSAqLzsgfTsKIAkJMDc2MzA2RDAxN0UxNDc4RDAwNUE3QzRFIC8qIE1lZGlhU3Ry
ZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3NjMwNkNDMTdFMTQ3OEQwMDVBN0M0RSAvKiBNZWRpYVN0cmVhbVRy
YWNrU291cmNlc0NhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMDc2MzA2RDIxN0UxNDc4RDAwNUE3QzRFIC8qIE1lZGlhU3RyZWFtVHJh
Y2tTb3VyY2VzUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzYzMDZDRTE3RTE0NzhEMDA1QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFja1Nv
dXJjZXNSZXF1ZXN0LmNwcCAqLzsgfTsKIAkJMDc2MzA2RDMxN0UxNDc4RDAwNUE3QzRFIC8qIE1l
ZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2MzA2Q0YxN0UxNDc4RDAwNUE3QzRFIC8qIE1lZGlhU3Ry
ZWFtVHJhY2tTb3VyY2VzUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0yNzMsNiArMjc0LDcgQEAKIAkJMDc4RTA5NDcxN0QxNkUxQzAw
NDIwQUExIC8qIFJUQ1ZvaWRSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzIyMUJCMDE3Q0YwQUQ0MDA4NDhFNTEgLyogUlRDVm9pZFJlcXVl
c3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
NzhFMDk0QjE3RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzhF
MDk0ODE3RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5j
cHAgKi87IH07CiAJCTA3OEUwOTRDMTdEMTcwOTYwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbUF1ZGlv
RGVzdGluYXRpb25Ob2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwNzhFMDk0OTE3RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFTdHJlYW1BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTA3OTIxNjU1MUFBNTYwQUEwMEEzQzA0OSAvKiBBVlBsYXliYWNrVGFyZ2V0UGlja2Vy
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzkyMTY1MzFBQTU2MEFBMDBBM0MwNDkgLyogQVZQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3OTQx
NzkxMTY2RTg1NUYwMDk0MTZDMiAvKiBJbmJhbmRUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5NDE3OEYxNjZFODU1RjAwOTQxNkMy
IC8qIEluYmFuZFRleHRUcmFjay5jcHAgKi87IH07CiAJCTA3OTQxNzkyMTY2RTg1NUYwMDk0MTZD
MiAvKiBJbmJhbmRUZXh0VHJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3OTQxNzkwMTY2RTg1NUYwMDk0MTZDMiAvKiBJbmJhbmRUZXh0VHJhY2su
aCAqLzsgfTsKIAkJMDc5NDE3OTQxNjZFQTA0RTAwOTQxNkMyIC8qIEluYmFuZFRleHRUcmFja1By
aXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
OTQxNzkzMTY2RUEwNEUwMDk0MTZDMiAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM0NCw4ICszNDYs
MTAgQEAKIAkJMDdEQzVGRDQxN0QzRUVFOTAwOTlGODkwIC8qIEpTUlRDU3RhdHNSZXNwb25zZUN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
N0RDNUZEMzE3RDNFRUU5MDA5OUY4OTAgLyogSlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcCAq
LzsgfTsKIAkJMDdFMTE2QjExNDg5QzlBMTAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RTExNkIw
MTQ4OUM5QTEwMEVDNUFDRSAvKiBKU1RleHRUcmFja0N1c3RvbS5jcHAgKi87IH07CiAJCTA3RTEx
NzA3MTQ4OUVCRUIwMEVDNUFDRSAvKiBKU1RleHRUcmFja0N1ZUN1c3RvbS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0UxMTcwNjE0ODlFQkVCMDBF
QzVBQ0UgLyogSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwICovOyB9OworCQkwN0UzREZEMTFBOUU3
ODY1MDA3NjRDQTggLyogQVZQbGF5YmFja1RhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFM0RGRDAxQTlFNzg2NTAwNzY0Q0E4IC8qIEFWUGxh
eWJhY2tUYXJnZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwN0U5RTEyRTE4RjVFMjc2MDAxMUEzQTQgLyogSW5iYW5kTWV0YWRhdGFUZXh0VHJh
Y2tQcml2YXRlQVZGLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwN0U5RTEyRDE4RjVFMjc2MDAxMUEzQTQgLyogSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlQVZGLmggKi87IH07CiAJCTA3RTlFMTMwMThGNjJCMzcwMDExQTNBNCAvKiBJbmJhbmRN
ZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFOUUxMkYxOEY2MkIzNzAwMTFBM0E0IC8qIEluYmFuZE1l
dGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAgKi87IH07CisJCTA3RURDM0VFMUFBQ0I3NUQw
MDk4M0VCNSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RURDM0VEMUFBQ0I3NUQwMDk4M0VCNSAvKiBN
ZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcCAqLzsgfTsKIAkJMDdGOTQ0MTYxODY0RDA0NjAwNUQz
MUNCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEQUU4QzA4MTc0NkI5NTcwMDUzMkQ3OCAvKiBNZWRpYVNlc3Np
b25NYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMDdGQkRFMkMxOEZFRDE3ODAwMUE3Q0ZGIC8qIEpTRGF0YUN1ZUN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0ZCREUyQjE4RkVE
MTc4MDAxQTdDRkYgLyogSlNEYXRhQ3VlQ3VzdG9tLmNwcCAqLzsgfTsKIAkJMDdGRTk5REMxODgw
N0E3RDAwMjU2NjQ4IC8qIEhUTUxNZWRpYVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdGRTk5REExODgwN0E3RDAwMjU2NjQ4IC8qIEhU
TUxNZWRpYVNlc3Npb24uY3BwICovOyB9OwpAQCAtNTY4Myw3ICs1Njg3LDYgQEAKIAkJQ0Q1Mzkz
RDQxNzVFMDE4NjAwQzA3MTIzIC8qIEpTTWVtb3J5SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1MzkzRDIxNzVFMDE4NjAwQzA3MTIzIC8qIEpT
TWVtb3J5SW5mby5oICovOyB9OwogCQlDRDU0QTc2MjE4MEY5RjcwMDBCMDc2QzkgLyogQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1NEE3NjAxODBGOUY3MDAwQjA3NkM5IC8qIEF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcCAqLzsgfTsKIAkJQ0Q1NEE3NjMxODBG
OUY3MDAwQjA3NkM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDU0QTc2MTE4MEY5
RjcwMDBCMDc2QzkgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCAqLzsg
fTsKLQkJQ0Q1NERFNDcxNzQ2OEI2RjAwNUU1QjM2IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1NERF
NDUxNzQ2OEI2RjAwNUU1QjM2IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwICovOyB9Owog
CQlDRDU0REU0QjE3NDY5QzZEMDA1RTVCMzYgLyogQXVkaW9TZXNzaW9uTWFjLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENTRERTQ5MTc0NjlDNkQw
MDVFNUIzNiAvKiBBdWRpb1Nlc3Npb25NYWMuY3BwICovOyB9OwogCQlDRDU1OTY5MTE0NzVCNjc4
MDAxRDBCRDAgLyogQXVkaW9GaWxlUmVhZGVySU9TLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENTU5NjhGMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRp
b0ZpbGVSZWFkZXJJT1MuY3BwICovOyB9OwogCQlDRDU1OTY5MjE0NzVCNjc4MDAxRDBCRDAgLyog
QXVkaW9GaWxlUmVhZGVySU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDU1OTY5MDE0NzVCNjc4MDAxRDBCRDAgLyogQXVkaW9GaWxlUmVhZGVySU9T
LmggKi87IH07CkBAIC03MjY3LDYgKzcyNzAsNyBAQAogCQkwNzhFMDk0ODE3RDE3MDk2MDA0MjBB
QTEgLyogTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc4RTA5NDkxN0QxNzA5NjAwNDIwQUEx
IC8qIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwNzhFMDk0QTE3RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFT
dHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVk
aWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTA3OTIxNjUzMUFBNTYwQUEwMEEzQzA0OSAvKiBBVlBsYXliYWNrVGFyZ2V0UGlja2Vy
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFWUGxheWJhY2tUYXJn
ZXRQaWNrZXJDbGllbnQuaDsgcGF0aCA9IGdyYXBoaWNzL0FWUGxheWJhY2tUYXJnZXRQaWNrZXJD
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc5NDE3OEYxNjZFODU1RjAw
OTQxNkMyIC8qIEluYmFuZFRleHRUcmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbmJhbmRUZXh0VHJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwNzk0MTc5MDE2NkU4NTVGMDA5NDE2QzIgLyogSW5iYW5kVGV4dFRyYWNrLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluYmFuZFRleHRUcmFjay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwNzk0MTc5MzE2NkVBMDRFMDA5NDE2QzIgLyogSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MzQ3LDgg
KzczNTEsMTEgQEAKIAkJMDdEQzVGRDMxN0QzRUVFOTAwOTlGODkwIC8qIEpTUlRDU3RhdHNSZXNw
b25zZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JU
Q1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
N0UxMTZCMDE0ODlDOUExMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdXN0b20uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUZXh0VHJhY2tDdXN0b20uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0UxMTcwNjE0ODlFQkVCMDBFQzVBQ0UgLyogSlNU
ZXh0VHJhY2tDdWVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwN0UzREZEMDFBOUU3ODY1MDA3NjRDQTggLyogQVZQbGF5YmFja1RhcmdldC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBVlBsYXliYWNrVGFyZ2V0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTA3RTNERkQyMUE5RTc4QTUwMDc2NENBOCAvKiBBVlBsYXliYWNr
VGFyZ2V0TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQVZQ
bGF5YmFja1RhcmdldE1hYy5tbTsgcGF0aCA9IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9BVlBsYXliYWNrVGFyZ2V0TWFjLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJ
CTA3RTlFMTJEMThGNUUyNzYwMDExQTNBNCAvKiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZh
dGVBVkYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5iYW5kTWV0YWRhdGFU
ZXh0VHJhY2tQcml2YXRlQVZGLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RTlF
MTJGMThGNjJCMzcwMDExQTNBNCAvKiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5iYW5kTWV0YWRhdGFU
ZXh0VHJhY2tQcml2YXRlQVZGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdF
REMzRUQxQUFDQjc1RDAwOTgzRUI1IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RkJERTJCMThGRUQxNzgwMDFBN0NG
RiAvKiBKU0RhdGFDdWVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNEYXRhQ3VlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDdGRTk5REExODgwN0E3RDAwMjU2NjQ4IC8qIEhUTUxNZWRpYVNlc3Npb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTE1lZGlhU2Vzc2lvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RkU5OURCMTg4MDdBN0QwMDI1NjY0OCAvKiBIVE1M
TWVkaWFTZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxNZWRp
YVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMTg2LDcgKzEzMTkz
LDYgQEAKIAkJQ0Q1MzkzRDIxNzVFMDE4NjAwQzA3MTIzIC8qIEpTTWVtb3J5SW5mby5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lbW9yeUluZm8uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q1NEE3NjAxODBGOUY3MDAwQjA3NkM5IC8qIEF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcDsgcGF0aCA9
IG9iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRDU0QTc2MTE4MEY5RjcwMDBCMDc2QzkgLyogQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDsgcGF0aCA9IG9iamMv
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQ0Q1NERFNDUxNzQ2OEI2RjAwNUU1QjM2IC8qIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTZXNz
aW9uTWFuYWdlck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENTRERTQ5
MTc0NjlDNkQwMDVFNUIzNiAvKiBBdWRpb1Nlc3Npb25NYWMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9TZXNzaW9uTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0Q1NTk2OEYxNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRl
cklPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBdWRpb0ZpbGVS
ZWFkZXJJT1MuY3BwOyBwYXRoID0gaW9zL0F1ZGlvRmlsZVJlYWRlcklPUy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENTU5NjkwMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0Zp
bGVSZWFkZXJJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQXVkaW9GaWxl
UmVhZGVySU9TLmg7IHBhdGggPSBpb3MvQXVkaW9GaWxlUmVhZGVySU9TLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yMDU0OSw2ICsyMDU1NSw3IEBACiAJCUIyNzUzNTQ5MEIwNTM4
MTQwMDJDRTY0RiAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTA3RTNERkQyMUE5RTc4QTUwMDc2NENBOCAvKiBBVlBsYXliYWNrVGFyZ2V0TWFj
Lm1tICovLAogCQkJCUVERTNBNEZGMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oICovLAog
CQkJCUIyNzUzNTRBMEIwNTM4MTQwMDJDRTY0RiAvKiBDb2xvck1hYy5tbSAqLywKIAkJCQkzN0My
MzYwRTEwOTdFRTc3MDBFRjlGNzIgLyogQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCAqLywKQEAg
LTIwNTk5LDYgKzIwNjA2LDcgQEAKIAkJCQlGQkMyMjBERDEyMzdGQkVCMDBCQ0Y3ODggLyogb3Bl
bmdsICovLAogCQkJCTM3MjE0OTMzMThGMEI2RDYwMDE1NkVEQyAvKiBvcGVudHlwZSAqLywKIAkJ
CQk0OUU5MTFCMjBFRjg2RDI3MDA5RDBDQUYgLyogdHJhbnNmb3JtcyAqLywKKwkJCQkwN0UzREZE
MDFBOUU3ODY1MDA3NjRDQTggLyogQVZQbGF5YmFja1RhcmdldC5oICovLAogCQkJCTQ5MDcwN0U0
MTIxOUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5jcHAgKi8sCiAJCQkJNDkwNzA3
RTUxMjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmggKi8sCiAJCQkJQkVGMjlF
RTkxNzE1REQwOTAwQzRCNEM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlLmggKi8sCkBAIC0yMTUxNyw2
ICsyMTUyNSw3IEBACiAJCUJDRjFBNUJBMDk3ODMyMDkwMDYxQTEyMyAvKiBwbGF0Zm9ybSAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMDc5MjE2NTMxQUE1
NjBBQTAwQTNDMDQ5IC8qIEFWUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQuaCAqLywKIAkJCQk0
OUU5MTJBNDBFRkFDOEU2MDA5RDBDQUYgLyogYW5pbWF0aW9uICovLAogCQkJCUZEMzE2MDQwMTJC
MDI2QTMwMEMxQTM1OSAvKiBhdWRpbyAqLywKIAkJCQkxQUU0MkY2NzBBQTRCOENCMDBDODYxMkQg
LyogY2YgKi8sCkBAIC0yMzQwNyw2ICsyMzQxNiw3IEBACiAJCUZEMzE2MEIwMTJCMDI3MDcwMEMx
QTM1OSAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCTA3RURDM0VEMUFBQ0I3NUQwMDk4M0VCNSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNw
cCAqLywKIAkJCQlGRDMxNjBCNTEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9CdXNNYWMubW0gKi8s
CiAJCQkJRkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuY3Bw
ICovLAogCQkJCUZEMzE2MEI3MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFj
LmggKi8sCkBAIC0yMzQxOCw3ICsyMzQyOCw2IEBACiAJCQkJQ0RDNzM0MTIxOTc3ODk2QzAwNDZC
RkM1IC8qIENBUmluZ0J1ZmZlci5jcHAgKi8sCiAJCQkJQ0RDNzM0MTMxOTc3ODk2QzAwNDZCRkM1
IC8qIENBUmluZ0J1ZmZlci5oICovLAogCQkJCUZEMzE2MEJBMTJCMDI3MkEwMEMxQTM1OSAvKiBG
RlRGcmFtZU1hYy5jcHAgKi8sCi0JCQkJQ0Q1NERFNDUxNzQ2OEI2RjAwNUU1QjM2IC8qIE1lZGlh
U2Vzc2lvbk1hbmFnZXJNYWMuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjM3MjMsNiArMjM3MzIsNyBAQAogCQkJCUJDQjE2QzFD
MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE5
RkJENUYxNUQyRjQ2NDAwOTY0MEE2IC8qIENhY2hlZEltYWdlQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MTAxODQ2OTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMDdFM0RGRDExQTlFNzg2NTAwNzY0Q0E4IC8qIEFWUGxheWJhY2tUYXJnZXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUQwRURBNzc1MTQzRTMwM0MwMDI4RTM4MyAvKiBDYWNoZWRS
YXdSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCNTMzNDkxNzE3REVFMzAwRjIwNUY5
IC8qIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0IxNkMy
MDA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLApAQCAt
MjYxODgsNiArMjYxOTgsNyBAQAogCQkJCTkzOTFBOTkxMTYyNzQ2Q0IwMDI5NzMzMCAvKiBTY3Jv
bGxpbmdDb29yZGluYXRvck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDMzhCRkYxNjQ0NzND
NzAwMDkxRUIyIC8qIFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkVBM0U3QjE5MUIyRkM1MDAwRjFCNTUgLyogU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGlu
Z05vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3OTIxNjU1MUFBNTYwQUEwMEEzQzA0OSAvKiBB
VlBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzFDQkQw
RDE2MUE0NEU5MDBFNEM4NzQgLyogU2Nyb2xsaW5nU3RhdGVOb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkVBM0U4NDE5MUIzMUJGMDAwRjFCNTUgLyogU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Nj
cm9sbGluZ05vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMUNCRDBGMTYxQTQ0RTkwMEU0Qzg3
NCAvKiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjcz
NjAsNiArMjczNzEsNyBAQAogCQkJCUZEMzE1RkY4MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb0J1
ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNUZGQjEyQjAyNjc2MDBDMUEzNTkgLyog
QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDdCMTJC
MDI2RjcwMEMxQTM1OSAvKiBBdWRpb0J1cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwN0VEQzNF
RTFBQUNCNzVEMDA5ODNFQjUgLyogTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlGRDMxNjBCQjEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9CdXNNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQlGRDMxNjA3RDEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9DaGFubmVs
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDA0MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRp
b0NvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzk0MCw2ICsyNzk1Miw3IEBACiAJCQkJ
OUJBQjZDNkQxMjU1MDYzMTAwMTYyNkQ0IC8qIEVkaXRpbmdTdHlsZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0QjMwNDNDQzBBRTAzNzNCMDBBODI2NDcgLyogRWRpdG9yLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTkzQTM4QjRCMEQwRTU4MDgwMDY4NzJDMiAvKiBFZGl0b3JDb21tYW5kLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTA3NjBDMTdBMUFBOEZDN0QwMDlFRDdCOCAvKiBBVlBsYXliYWNr
VGFyZ2V0TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRkVEMTNEM0EwQ0VBOTM0NjAwRDg5NDY2
IC8qIEVkaXRvcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUVENTAxREM2MEIyNDlGMjkwMEFF
MThEOSAvKiBFZGl0b3JNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEM0QTgwODA5RDU2MzI3
MDAwM0FDOEQgLyogRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5MTYyLDcgKzI5MTc1
LDYgQEAKIAkJCQkwNzBFMDkxQjE4NzVFRjcxMDAzQTFEM0MgLyogTWVkaWFTZXNzaW9uLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUNEQUU4QzA5MTc0NkI5NTcwMDUzMkQ3OCAvKiBNZWRpYVNlc3Np
b25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3NjM4QTlBMTg4NDQ4NzIwMEUxNUEx
QiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQ0Q1NERF
NDcxNzQ2OEI2RjAwNUU1QjM2IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0QzQTQ5NUUxN0E5RDAxQjAwMjc0RTQyIC8qIE1lZGlhU291cmNlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUNEQzhCNUE2MTgwNDc0RjcwMDE2RTY4NSAvKiBNZWRpYVNvdXJj
ZVByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q2MUZFNjcxNzk0QUFEQjAw
NDEwMUVCIC8qIE1lZGlhU291cmNlUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDE4MTMyOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOCw2ICsyMjgsMTAgQEAKICNp
bmNsdWRlIDxyZXBsYXkvSW5wdXRDdXJzb3IuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKKyNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCisjZW5k
aWYKKwogdXNpbmcgbmFtZXNwYWNlIFdURjsKIHVzaW5nIG5hbWVzcGFjZSBVbmljb2RlOwogCkBA
IC02MzU0LDQgKzYzNTgsODAgQEAgdm9pZCBEb2N1bWVudDo6c2V0SW5wdXRDdXJzb3IoUGFzc1Jl
ZlB0cgogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQor
dm9pZCBEb2N1bWVudDo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IEhUTUxNZWRpYUVs
ZW1lbnQmIGVsZW1lbnQpCit7CisgICAgUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKKyAgICBp
ZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworI2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBG
SVhNRTogcmVmYWN0b3IgaU9TIGltcGxlbWVudGF0aW9uLgorICAgIHBhZ2UtPmNocm9tZSgpLmNs
aWVudCgpLnNob3dQbGF5YmFja1RhcmdldFBpY2tlcihpczxIVE1MVmlkZW9FbGVtZW50PihlbGVt
ZW50KSk7CisjZWxzZQorICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnNob3dQbGF5YmFja1Rh
cmdldFBpY2tlcih2aWV3KCktPmxhc3RLbm93bk1vdXNlUG9zaXRpb24oKSwgaXM8SFRNTFZpZGVv
RWxlbWVudD4oZWxlbWVudCkpOworI2VuZGlmCit9CisKK3ZvaWQgRG9jdW1lbnQ6OmFkZFBsYXli
YWNrVGFyZ2V0UGlja2VyQ2xpZW50KEFWUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQmIGNsaWVu
dCkKK3sKKyAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9wbGF5YmFja1RhcmdldENsaWVudHMuYWRkKCZjbGllbnQp
OworCisgICAgY2xpZW50LmRpZENob29zZVBsYXliYWNrVGFyZ2V0KHBhZ2UtPnBsYXliYWNrVGFy
Z2V0KCkpOworICAgIGNsaWVudC5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5n
ZShwYWdlLT5oYXNXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkpOworfQorCit2b2lkIERvY3VtZW50
OjpyZW1vdmVQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudChBVlBsYXliYWNrVGFyZ2V0UGlja2Vy
Q2xpZW50JiBjbGllbnQpCit7CisgICAgUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKKyAgICBp
ZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGxheWJhY2tUYXJnZXRDbGllbnRz
LnJlbW92ZSgmY2xpZW50KTsKKyAgICBjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0b3Jpbmco
KTsKK30KKwordm9pZCBEb2N1bWVudDo6Y29uZmlndXJlUGxheWJhY2tUYXJnZXRNb25pdG9yaW5n
KCkKK3sKKyAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgcGFnZS0+Y29uZmlndXJlUGxheWJhY2tUYXJnZXRNb25pdG9y
aW5nKCk7Cit9CisKK2Jvb2wgRG9jdW1lbnQ6OnJlcXVpcmVzUGxheWJhY2tUYXJnZXRSb3V0ZU1v
bml0b3JpbmcoKQoreworICAgIGZvciAoYXV0byB0YXJnZXRDbGllbnQgOiBtX3BsYXliYWNrVGFy
Z2V0Q2xpZW50cykgeworICAgICAgICBpZiAodGFyZ2V0Q2xpZW50LT5yZXF1aXJlc1BsYXliYWNr
VGFyZ2V0Um91dGVNb25pdG9yaW5nKCkpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3ZvaWQgRG9jdW1lbnQ6OnBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKGJv
b2wgYXZhaWxhYmxlKQoreworICAgIGlmIChtX3BsYXliYWNrVGFyZ2V0c0F2YWlsYWJsZSA9PSBh
dmFpbGFibGUpCisgICAgICAgIHJldHVybjsKKyAgICBtX3BsYXliYWNrVGFyZ2V0c0F2YWlsYWJs
ZSA9IGF2YWlsYWJsZTsKKworICAgIGZvciAoYXV0byBjbGllbnQgOiBtX3BsYXliYWNrVGFyZ2V0
Q2xpZW50cykKKyAgICAgICAgY2xpZW50LT5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURp
ZENoYW5nZShhdmFpbGFibGUpOworfQorCit2b2lkIERvY3VtZW50OjpkaWRDaG9vc2VQbGF5YmFj
a1RhcmdldChBVlBsYXliYWNrVGFyZ2V0JiBkZXZpY2UpCit7CisgICAgZm9yIChhdXRvIGNsaWVu
dCA6IG1fcGxheWJhY2tUYXJnZXRDbGllbnRzKQorICAgICAgICBjbGllbnQtPmRpZENob29zZVBs
YXliYWNrVGFyZ2V0KGRldmljZSk7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gMTgxMzI5KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDkgKzY2LDEyIEBA
IGNsYXNzIElucHV0Q3Vyc29yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFWUGxh
eWJhY2tUYXJnZXRQaWNrZXJDbGllbnQ7CiBjbGFzcyBBWE9iamVjdENhY2hlOwogY2xhc3MgQXR0
cjsKIGNsYXNzIEF1ZGlvUHJvZHVjZXI7CitjbGFzcyBBVlBsYXliYWNrVGFyZ2V0OworY2xhc3Mg
QVZQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudDsKIGNsYXNzIENEQVRBU2VjdGlvbjsKIGNsYXNz
IENTU0ZvbnRTZWxlY3RvcjsKIGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb247CkBAIC0xMjE0LDYg
KzEyMTcsMTYgQEAgcHVibGljOgogICAgIHZvaWQgcGFnZU11dGVkU3RhdGVEaWRDaGFuZ2UoKTsK
ICAgICBXZWFrUHRyPERvY3VtZW50PiBjcmVhdGVXZWFrUHRyKCkgeyByZXR1cm4gbV93ZWFrRmFj
dG9yeS5jcmVhdGVXZWFrUHRyKCk7IH0KIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpCisgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoY29uc3QgSFRNTE1lZGlh
RWxlbWVudCYpOworICAgIHZvaWQgZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoQVZQbGF5YmFja1Rh
cmdldCYpOworICAgIHZvaWQgYWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoQVZQbGF5YmFj
a1RhcmdldFBpY2tlckNsaWVudCYpOworICAgIHZvaWQgcmVtb3ZlUGxheWJhY2tUYXJnZXRQaWNr
ZXJDbGllbnQoQVZQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCYpOworICAgIGJvb2wgcmVxdWly
ZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZygpOworICAgIHZvaWQgY29uZmlndXJlUGxh
eWJhY2tUYXJnZXRNb25pdG9yaW5nKCk7CisgICAgdm9pZCBwbGF5YmFja1RhcmdldEF2YWlsYWJp
bGl0eURpZENoYW5nZShib29sKTsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgZW51bSBDb25z
dHJ1Y3Rpb25GbGFncyB7IFN5bnRoZXNpemVkID0gMSwgTm9uUmVuZGVyZWRQbGFjZWhvbGRlciA9
IDEgPDwgMSB9OwogICAgIERvY3VtZW50KEZyYW1lKiwgY29uc3QgVVJMJiwgdW5zaWduZWQgPSBE
ZWZhdWx0RG9jdW1lbnRDbGFzcywgdW5zaWduZWQgY29uc3RydWN0aW9uRmxhZ3MgPSAwKTsKQEAg
LTE2NTEsNiArMTY2NCwxMSBAQCBwcml2YXRlOgogCiAgICAgSGFzaFNldDxBdWRpb1Byb2R1Y2Vy
Kj4gbV9hdWRpb1Byb2R1Y2VyczsKICAgICBib29sIG1faXNQbGF5aW5nQXVkaW87CisKKyNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorICAgIEhhc2hTZXQ8V2ViQ29yZTo6QVZQ
bGF5YmFja1RhcmdldFBpY2tlckNsaWVudCo+IG1fcGxheWJhY2tUYXJnZXRDbGllbnRzOworICAg
IGJvb2wgbV9wbGF5YmFja1RhcmdldHNBdmFpbGFibGUgeyBmYWxzZSB9OworI2VuZGlmCiB9Owog
CiBpbmxpbmUgdm9pZCBEb2N1bWVudDo6bm90aWZ5UmVtb3ZlUGVuZGluZ1NoZWV0SWZOZWVkZWQo
KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lv
biAxODEzMjkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MjYsNiArNDI2LDggQEAgSFRNTE1lZGlhRWxlbWVudDo6fkhUTUxN
ZWRpYUVsZW1lbnQoKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlZ2lzdGVyV2l0aERvY3Vt
ZW50KERvY3VtZW50JiBkb2N1bWVudCkKIHsKKyAgICBtX21lZGlhU2Vzc2lvbi0+cmVnaXN0ZXJX
aXRoRG9jdW1lbnQoZG9jdW1lbnQpOworCiAgICAgaWYgKG1faXNXYWl0aW5nVW50aWxNZWRpYUNh
blN0YXJ0KQogICAgICAgICBkb2N1bWVudC5hZGRNZWRpYUNhblN0YXJ0TGlzdGVuZXIodGhpcyk7
CiAKQEAgLTQ1MSw2ICs0NTMsOCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlZ2lzdGVyV2l0
aERvY3VtCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dW5yZWdpc3RlcldpdGhEb2N1bWVudChE
b2N1bWVudCYgZG9jdW1lbnQpCiB7CisgICAgbV9tZWRpYVNlc3Npb24tPnVucmVnaXN0ZXJXaXRo
RG9jdW1lbnQoZG9jdW1lbnQpOworCiAgICAgaWYgKG1faXNXYWl0aW5nVW50aWxNZWRpYUNhblN0
YXJ0KQogICAgICAgICBkb2N1bWVudC5yZW1vdmVNZWRpYUNhblN0YXJ0TGlzdGVuZXIodGhpcyk7
CiAKQEAgLTI1MjQsNiArMjUyOCw5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVmcmVzaENh
Y2hlZFRpbWUKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjppbnZhbGlkYXRlQ2FjaGVkVGltZSgp
IGNvbnN0CiB7CisgICAgaWYgKCFtX3BsYXllci0+bWF4aW11bUR1cmF0aW9uVG9DYWNoZU1lZGlh
VGltZSgpKQorICAgICAgICByZXR1cm47CisKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgaWYgKG1f
Y2FjaGVkVGltZS5pc1ZhbGlkKCkpCiAgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1l
bnQ6OmludmFsaWRhdGVDYWNoZWRUaW1lKCVwKSIsIHRoaXMpOwpAQCAtNDkxMSw2ICs0OTE4LDEz
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZW5xdWV1ZVBsYXliYWNrVGEKICAgICBldmVudC0+
c2V0VGFyZ2V0KHRoaXMpOwogICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChldmVu
dC5yZWxlYXNlKCkpOwogfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFdpcmVsZXNzUGxh
eWJhY2tUYXJnZXQoY29uc3QgQVZQbGF5YmFja1RhcmdldCYgZGV2aWNlKQoreworICAgIExPRyhN
ZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoJXApIiwg
dGhpcyk7CisgICAgaWYgKG1fcGxheWVyKQorICAgICAgICBtX3BsYXllci0+c2V0V2lyZWxlc3NQ
bGF5YmFja1RhcmdldChkZXZpY2UpOworfQogI2VuZGlmCiAKIGRvdWJsZSBIVE1MTWVkaWFFbGVt
ZW50OjptaW5GYXN0UmV2ZXJzZVJhdGUoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgJKHJldmlzaW9uIDE4MTMyOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzU3LDcgKzM1Nyw5IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNh
cHR1cmUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0
dXJlKSBvdmVycmlkZTsKKwogICAgIHZpcnR1YWwgdm9pZCB3aXJlbGVzc1JvdXRlc0F2YWlsYWJs
ZURpZENoYW5nZSgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRXaXJlbGVzc1BsYXli
YWNrVGFyZ2V0KGNvbnN0IEFWUGxheWJhY2tUYXJnZXQmKSBvdmVycmlkZTsKICNlbmRpZgogCiAg
ICAgLy8gRXZlbnRUYXJnZXQgZnVuY3Rpb24uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYVNlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDE4MTMyOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhU2Vzc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDkgQEAK
IAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcu
aCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtNzIsMTAgKzc0LDE5IEBAIHN0YXRpYyBjb25zdCBj
aGFyKiByZXN0cmljdGlvbk5hbWUoSFRNTE0KIEhUTUxNZWRpYVNlc3Npb246OkhUTUxNZWRpYVNl
c3Npb24oTWVkaWFTZXNzaW9uQ2xpZW50JiBjbGllbnQpCiAgICAgOiBNZWRpYVNlc3Npb24oY2xp
ZW50KQogICAgICwgbV9yZXN0cmljdGlvbnMoTm9SZXN0cmljdGlvbnMpCi0gICAgLCBtX2hhc1Bs
YXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzKGZhbHNlKQogewogfQogCit2b2lkIEhU
TUxNZWRpYVNlc3Npb246OnJlZ2lzdGVyV2l0aERvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkK
K3sKKyAgICBkb2N1bWVudC5hZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCgqdGhpcyk7Cit9
CisKK3ZvaWQgSFRNTE1lZGlhU2Vzc2lvbjo6dW5yZWdpc3RlcldpdGhEb2N1bWVudChEb2N1bWVu
dCYgZG9jdW1lbnQpCit7CisgICAgZG9jdW1lbnQucmVtb3ZlUGxheWJhY2tUYXJnZXRQaWNrZXJD
bGllbnQoKnRoaXMpOworfQorCiB2b2lkIEhUTUxNZWRpYVNlc3Npb246OmFkZEJlaGF2aW9yUmVz
dHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pCiB7CiAgICAgTE9HKE1l
ZGlhLCAiSFRNTE1lZGlhU2Vzc2lvbjo6YWRkQmVoYXZpb3JSZXN0cmljdGlvbiAtIGFkZGluZyAl
cyIsIHJlc3RyaWN0aW9uTmFtZShyZXN0cmljdGlvbikpOwpAQCAtMTc5LDE3ICsxOTAsMjIgQEAg
dm9pZCBIVE1MTWVkaWFTZXNzaW9uOjpzaG93UGxheWJhY2tUYXJnZQogCiAjaWYgUExBVEZPUk0o
SU9TKQogICAgIGVsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgpLT5wYWdlKCktPmNocm9tZSgpLmNs
aWVudCgpLnNob3dQbGF5YmFja1RhcmdldFBpY2tlcihlbGVtZW50Lmhhc1ZpZGVvKCkpOworI2Vs
c2UKKworICAgIGVsZW1lbnQuZG9jdW1lbnQoKS5zaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoZWxl
bWVudCk7CiAjZW5kaWYKIH0KIAotYm9vbCBIVE1MTWVkaWFTZXNzaW9uOjpoYXNXaXJlbGVzc1Bs
YXliYWNrVGFyZ2V0cyhjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KSBjb25zdAorYm9v
bCBIVE1MTWVkaWFTZXNzaW9uOjpoYXNXaXJlbGVzc1BsYXliYWNrVGFyZ2V0cyhjb25zdCBIVE1M
TWVkaWFFbGVtZW50JikgY29uc3QKIHsKLSAgICBVTlVTRURfUEFSQU0oZWxlbWVudCk7CisjaWYg
UExBVEZPUk0oSU9TKQorICAgIC8vIEZJWE1FOiBjb25zb2xpZGF0ZSBNYWMgYW5kIGlPUyBpbXBs
ZW1lbnRhdGlvbnMKKyAgICBtX2hhc1BsYXliYWNrVGFyZ2V0cyA9IE1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnNoYXJlZE1hbmFnZXIoKS5oYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGUoKTsKKyNlbmRp
ZgogCi0gICAgYm9vbCBoYXNUYXJnZXRzID0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFu
YWdlcigpLmhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZSgpOwotICAgIExPRyhNZWRpYSwgIkhU
TUxNZWRpYVNlc3Npb246Omhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzIC0gcmV0dXJuaW5nICVz
IiwgaGFzVGFyZ2V0cyA/ICJUUlVFIiA6ICJGQUxTRSIpOworICAgIExPRyhNZWRpYSwgIkhUTUxN
ZWRpYVNlc3Npb246Omhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzIC0gcmV0dXJuaW5nICVzIiwg
bV9oYXNQbGF5YmFja1RhcmdldHMgPyAiVFJVRSIgOiAiRkFMU0UiKTsKIAotICAgIHJldHVybiBo
YXNUYXJnZXRzOworICAgIHJldHVybiBtX2hhc1BsYXliYWNrVGFyZ2V0czsKIH0KIAogYm9vbCBI
VE1MTWVkaWFTZXNzaW9uOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChjb25zdCBIVE1M
TWVkaWFFbGVtZW50JiBlbGVtZW50KSBjb25zdApAQCAtMjQ0LDcgKzI2MCwzMSBAQCB2b2lkIEhU
TUxNZWRpYVNlc3Npb246OnNldEhhc1BsYXliYWNrVGFyCiAgICAgVU5VU0VEX1BBUkFNKGVsZW1l
bnQpOwogCiAgICAgbV9oYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyA9IGhh
c0xpc3RlbmVyczsKKworI2lmIFBMQVRGT1JNKElPUykKICAgICBNZWRpYVNlc3Npb25NYW5hZ2Vy
OjpzaGFyZWRNYW5hZ2VyKCkuY29uZmlndXJlV2lyZUxlc3NUYXJnZXRNb25pdG9yaW5nKCk7Cisj
ZWxzZQorICAgIGVsZW1lbnQuZG9jdW1lbnQoKS5jb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0
b3JpbmcoKTsKKyNlbmRpZgorfQorCit2b2lkIEhUTUxNZWRpYVNlc3Npb246OmRpZENob29zZVBs
YXliYWNrVGFyZ2V0KEFWUGxheWJhY2tUYXJnZXQmIGRldmljZSkKK3sKKyAgICBjbGllbnQoKS5z
ZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KGRldmljZSk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhU2Vz
c2lvbjo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoYm9vbCBoYXNUYXJn
ZXRzKSBjb25zdAoreworICAgIGlmIChtX2hhc1BsYXliYWNrVGFyZ2V0cyA9PSBoYXNUYXJnZXRz
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2hhc1BsYXliYWNrVGFyZ2V0cyA9IGhhc1Rhcmdl
dHM7CisgICAgY2xpZW50KCkud2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2UoKTsKK30K
KworYm9vbCBIVE1MTWVkaWFTZXNzaW9uOjpyZXF1aXJlc1BsYXliYWNrVGFyZ2V0Um91dGVNb25p
dG9yaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9oYXNQbGF5YmFja1RhcmdldEF2YWlsYWJp
bGl0eUxpc3RlbmVyczsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYVNlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYVNlc3Npb24uaAkocmV2aXNpb24gMTgxMzI5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNiArMzMsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIERvY3VtZW50OwogY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsK
IGNsYXNzIFNvdXJjZUJ1ZmZlcjsKIApAQCAtNDEsMTQgKzQyLDE3IEBAIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBIVE1MTWVkaWFTZXNzaW9uKE1lZGlhU2Vzc2lvbkNsaWVudCYpOwogICAgIHZpcnR1
YWwgfkhUTUxNZWRpYVNlc3Npb24oKSB7IH0KIAorICAgIHZvaWQgcmVnaXN0ZXJXaXRoRG9jdW1l
bnQoRG9jdW1lbnQmKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJXaXRoRG9jdW1lbnQoRG9jdW1lbnQm
KTsKKwogICAgIGJvb2wgcGxheWJhY2tQZXJtaXR0ZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYp
IGNvbnN0OwogICAgIGJvb2wgZGF0YUxvYWRpbmdQZXJtaXR0ZWQoY29uc3QgSFRNTE1lZGlhRWxl
bWVudCYpIGNvbnN0OwogICAgIGJvb2wgZnVsbHNjcmVlblBlcm1pdHRlZChjb25zdCBIVE1MTWVk
aWFFbGVtZW50JikgY29uc3Q7CiAgICAgYm9vbCBwYWdlQWxsb3dzRGF0YUxvYWRpbmcoY29uc3Qg
SFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OwogICAgIGJvb2wgcGFnZUFsbG93c1BsYXliYWNrQWZ0
ZXJSZXN1bWluZyhjb25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7CisKICNpZiBFTkFCTEUo
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIGJvb2wgc2hvd2luZ1BsYXliYWNrVGFyZ2V0
UGlja2VyUGVybWl0dGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKLQogICAgIGJv
b2wgY3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzcyhjb25zdCBIVE1MTWVkaWFFbGVtZW50
JikgY29uc3Q7CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoY29uc3QgSFRNTE1l
ZGlhRWxlbWVudCYpOwogICAgIGJvb2wgaGFzV2lyZWxlc3NQbGF5YmFja1RhcmdldHMoY29uc3Qg
SFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OwpAQCAtNTcsNyArNjEsMTMgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoY29uc3QgSFRNTE1lZGlhRWxl
bWVudCYsIGJvb2wpOwogCiAgICAgdm9pZCBzZXRIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0
eUxpc3RlbmVycyhjb25zdCBIVE1MTWVkaWFFbGVtZW50JiwgYm9vbCk7CisKKyAgICAvLyBBVlBs
YXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIGRpZENob29zZVBsYXli
YWNrVGFyZ2V0KEFWUGxheWJhY2tUYXJnZXQmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoYm9vbCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBib29sIHJlcXVpcmVzUGxheWJhY2tUYXJnZXRSb3V0ZU1vbml0b3Jp
bmcoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgorCiAgICAgYm9vbCByZXF1aXJlc0Z1bGxzY3Jl
ZW5Gb3JWaWRlb1BsYXliYWNrKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKICAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGFsbG93c0FsdGVybmF0ZUZ1bGxzY3JlZW4oY29uc3QgSFRNTE1l
ZGlhRWxlbWVudCYpIGNvbnN0OwogICAgIE1lZGlhUGxheWVyOjpQcmVsb2FkIGVmZmVjdGl2ZVBy
ZWxvYWRGb3JFbGVtZW50KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKQEAgLTg3LDEw
ICs5NywxMCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wg
cmVxdWlyZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1faGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnM7IH0KIAogICAg
IEJlaGF2aW9yUmVzdHJpY3Rpb25zIG1fcmVzdHJpY3Rpb25zOwotICAgIGJvb2wgbV9oYXNQbGF5
YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVyczsKKyAgICBib29sIG1faGFzUGxheWJhY2tU
YXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMgeyBmYWxzZSB9OworICAgIG11dGFibGUgYm9vbCBt
X2hhc1BsYXliYWNrVGFyZ2V0cyB7IGZhbHNlIH07CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDE4MTMyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0NSw2ICs0NDUsMTIgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCBib29sIHNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50
cygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpCisgICAgdmlydHVhbCB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzdGFydGlu
Z01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3RvcE1v
bml0b3JpbmdQbGF5YmFja1RhcmdldHMoKSB7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAg
dmlydHVhbCB+Q2hyb21lQ2xpZW50KCkgeyB9CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShy
ZXZpc2lvbiAxODEzMjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDQsNiArMTA0LDExIEBACiAjaW5jbHVkZSA8cmVwbGF5L0lucHV0Q3Vyc29y
Lmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisjaW5j
bHVkZSAiQVZQbGF5YmFja1RhcmdldC5oIgorI2luY2x1ZGUgIkFWUGxheWJhY2tUYXJnZXRQaWNr
ZXJDbGllbnQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBIYXNo
U2V0PFBhZ2UqPiogYWxsUGFnZXM7CkBAIC0xNjkxLDQgKzE2OTYsNDEgQEAgdm9pZCBQYWdlOjpz
ZXRTZXNzaW9uSUQoU2Vzc2lvbklEIHNlc3NpbwogICAgICAgICB2aWV3LT5wcml2YXRlQnJvd3Np
bmdTdGF0ZUNoYW5nZWQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwogfQogCisjaWYgRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKK3ZvaWQgUGFnZTo6ZGlkQ2hvb3NlUGxheWJhY2tU
YXJnZXQoQVZQbGF5YmFja1RhcmdldCYgdGFyZ2V0KQoreworICAgIG1fcGxheWJhY2tUYXJnZXQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFWUGxheWJhY2tUYXJnZXQ+KHRhcmdldC5kZXZpY2VQaWNrZXJD
b250ZXh0KCkpOworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsg
ZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQorICAgICAgICBmcmFtZS0+ZG9j
dW1lbnQoKS0+ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQodGFyZ2V0KTsKK30KKwordm9pZCBQYWdl
OjpwbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eURpZENoYW5nZShib29sIGF2YWlsYWJsZSkKK3sK
KyAgICBtX2hhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXQgPSBhdmFpbGFibGU7CisgICAgZm9yIChG
cmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCku
dHJhdmVyc2VOZXh0KCkpCisgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5wbGF5YmFja1Rhcmdl
dEF2YWlsYWJpbGl0eURpZENoYW5nZShhdmFpbGFibGUpOworfQorCit2b2lkIFBhZ2U6OmNvbmZp
Z3VyZVBsYXliYWNrVGFyZ2V0TW9uaXRvcmluZygpCit7CisgICAgYm9vbCBtb25pdG9yaW5nUmVx
dWlyZWQgPSBmYWxzZTsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsgZnJh
bWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBpZiAo
ZnJhbWUtPmRvY3VtZW50KCktPnJlcXVpcmVzUGxheWJhY2tUYXJnZXRSb3V0ZU1vbml0b3Jpbmco
KSkgeworICAgICAgICAgICAgbW9uaXRvcmluZ1JlcXVpcmVkID0gdHJ1ZTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1fcmVxdWlyZXNQbGF5YmFja1Rh
cmdldE1vbml0b3JpbmcgPT0gbW9uaXRvcmluZ1JlcXVpcmVkKQorICAgICAgICByZXR1cm47Cisg
ICAgbV9yZXF1aXJlc1BsYXliYWNrVGFyZ2V0TW9uaXRvcmluZyA9IG1vbml0b3JpbmdSZXF1aXJl
ZDsKKworCisgICAgaWYgKG1vbml0b3JpbmdSZXF1aXJlZCkKKyAgICAgICAgY2hyb21lKCkuY2xp
ZW50KCkuc3RhcnRpbmdNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCk7CisgICAgZWxzZQorICAg
ICAgICBjaHJvbWUoKS5jbGllbnQoKS5zdG9wTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpOwor
fQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShy
ZXZpc2lvbiAxODEzMjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtNTksNiArNTksNyBAQCBjbGFzcyBEZWJ1Z2dlcjsKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OworY2xhc3MgQVZQbGF5YmFja1Rhcmdl
dDsKIGNsYXNzIEJhY2tGb3J3YXJkQ29udHJvbGxlcjsKIGNsYXNzIEJhY2tGb3J3YXJkQ2xpZW50
OwogY2xhc3MgQ2hyb21lOwpAQCAtNzYsNiArNzcsNyBAQCBjbGFzcyBGb2N1c0NvbnRyb2xsZXI7
CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50OwogY2xhc3MgSGlzdG9yeUl0
ZW07CitjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogY2xhc3MgVXNlcklucHV0QnJpZGdlOwogY2xh
c3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKQEAgLTQyMiw2
ICs0MjQsMTUgQEAgcHVibGljOgogICAgIGJvb2wgaXNNdXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
bXV0ZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE11dGVkKGJvb2wpOwogCisjaWYg
RU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyAgICBib29sIGhhc1dpcmVsZXNzUGxh
eWJhY2tUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX2hhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXQ7
IH0KKyAgICBBVlBsYXliYWNrVGFyZ2V0JiBwbGF5YmFja1RhcmdldCgpIGNvbnN0IHsgcmV0dXJu
ICptX3BsYXliYWNrVGFyZ2V0LmdldCgpOyB9CisgICAgdm9pZCBjb25maWd1cmVQbGF5YmFja1Rh
cmdldE1vbml0b3JpbmcoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQ2hvb3NlUGxh
eWJhY2tUYXJnZXQoQVZQbGF5YmFja1RhcmdldCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UoYm9vbCk7CisjZW5kaWYKKwogcHJp
dmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRHcm91cCgpOwogCkBAIC01ODEsNiAr
NTkyLDEyIEBAIHByaXZhdGU6CiAKICAgICBTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKKyNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxBVlBs
YXliYWNrVGFyZ2V0PiBtX3BsYXliYWNrVGFyZ2V0OworICAgIGJvb2wgbV9yZXF1aXJlc1BsYXli
YWNrVGFyZ2V0TW9uaXRvcmluZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc1dpcmVsZXNzUGxh
eWJhY2tUYXJnZXQgeyBmYWxzZSB9OworI2VuZGlmCisKICAgICBib29sIG1faXNDbG9zaW5nOwog
CiAgICAgYm9vbCBtX2lzUGxheWluZ0F1ZGlvOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vTWVkaWFTZXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uY3BwCShyZXZpc2lvbiAxODEzMjkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTE5MCw3ICsxOTAsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbjo6dmlzaWJpbGl0eUNoYW5nZWQoKQog
CiB2b2lkIE1lZGlhU2Vzc2lvbjo6Y2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVyRmlyZWQoKQogewot
ICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbjo6dmlzaWJpbGl0eUNoYW5nZWQoJXApLSB2aXNp
YmxlID0gJXMiLCB0aGlzLCBtX2NsaWVudC5lbGVtZW50SXNIaWRkZW4oKSA/ICJmYWxzZSIgOiAi
dHJ1ZSIpOworICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbjo6Y2xpZW50RGF0YUJ1ZmZlcmlu
Z1RpbWVyRmlyZWQoJXApLSB2aXNpYmxlID0gJXMiLCB0aGlzLCBtX2NsaWVudC5lbGVtZW50SXNI
aWRkZW4oKSA/ICJmYWxzZSIgOiAidHJ1ZSIpOwogCiAgICAgdXBkYXRlQ2xpZW50RGF0YUJ1ZmZl
cmluZygpOwogCkBAIC0yMjAsMTEgKzIyMCw2IEBAIE1lZGlhU2Vzc2lvbjo6RGlzcGxheVR5cGUg
TWVkaWFTZXNzaW9uOjoKICAgICByZXR1cm4gbV9jbGllbnQuZGlzcGxheVR5cGUoKTsKIH0KIAot
dm9pZCBNZWRpYVNlc3Npb246OndpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlKCkgY29u
c3QKLXsKLSAgICBtX2NsaWVudC53aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZSgpOwot
fQotCiBTdHJpbmcgTWVkaWFTZXNzaW9uQ2xpZW50OjptZWRpYVNlc3Npb25UaXRsZSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIFN0cmluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vTWVkaWFTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vTWVkaWFTZXNzaW9uLmgJKHJldmlzaW9uIDE4MTMyOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDExICsz
MCwyMCBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyNp
bmNsdWRlICJBVlBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50LmgiCisjZW5kaWYKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitjbGFzcyBBVlBsYXliYWNrVGFyZ2V0OwogY2xhc3MgTWVkaWFTZXNz
aW9uQ2xpZW50OwogCi1jbGFzcyBNZWRpYVNlc3Npb24geworY2xhc3MgTWVkaWFTZXNzaW9uCisj
aWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyAgICA6IHB1YmxpYyBBVlBsYXli
YWNrVGFyZ2V0UGlja2VyQ2xpZW50CisjZW5kaWYKK3sKIHB1YmxpYzoKICAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPE1lZGlhU2Vzc2lvbj4gY3JlYXRlKE1lZGlhU2Vzc2lvbkNsaWVudCYpOwog
CkBAIC05OSw5ICsxMDgsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5SZWNlaXZlUmVtb3RlQ29u
dHJvbENvbW1hbmRzKCkgY29uc3Q7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENv
bW1hbmQoUmVtb3RlQ29udHJvbENvbW1hbmRUeXBlKTsKIAotICAgIHZpcnR1YWwgYm9vbCByZXF1
aXJlc1BsYXliYWNrVGFyZ2V0Um91dGVNb25pdG9yaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2b2lkIHdpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlKCkgY29uc3Q7Ci0K
ICAgICBlbnVtIERpc3BsYXlUeXBlIHsKICAgICAgICAgTm9ybWFsLAogICAgICAgICBGdWxsc2Ny
ZWVuLApAQCAtMTExLDYgKzExNywxMyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzSGlkZGVuKCkg
Y29uc3Q7CiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorICAgIC8vIEFW
UGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hvb3NlUGxh
eWJhY2tUYXJnZXQoQVZQbGF5YmFja1RhcmdldCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBleHRl
cm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShib29sKSBjb25zdCB7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgcmVxdWlyZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZygpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIE1lZGlhU2Vzc2lv
bkNsaWVudCYgY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KIApAQCAtMTUwLDcg
KzE2MywxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgb3ZlcnJpZGVCYWNrZ3JvdW5k
UGxheWJhY2tSZXN0cmljdGlvbigpIGNvbnN0ID0gMDsKIAorI2lmIEVOQUJMRShXSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQpCiAgICAgdmlydHVhbCB2b2lkIHdpcmVsZXNzUm91dGVzQXZhaWxhYmxl
RGlkQ2hhbmdlKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldFdpcmVsZXNzUGxheWJhY2tUYXJn
ZXQoY29uc3QgQVZQbGF5YmFja1RhcmdldCYpIHsgfQorI2VuZGlmCiAKIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIH5NZWRpYVNlc3Npb25DbGllbnQoKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCShyZXZp
c2lvbiAxODEzMjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Np
b25NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4NSwxNCArMjg1LDYgQEAgdm9pZCBN
ZWRpYVNlc3Npb25NYW5hZ2VyOjphcHBsaWNhdGlvbldpbAogICAgIH0KIH0KIAotdm9pZCBNZWRp
YVNlc3Npb25NYW5hZ2VyOjp3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZUNoYW5nZWQoKQotewotICAg
IExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OndpcmVsZXNzUm91dGVzQXZhaWxhYmxl
Q2hhbmdlZCIpOwotICAgIFZlY3RvcjxNZWRpYVNlc3Npb24qPiBzZXNzaW9ucyA9IG1fc2Vzc2lv
bnM7Ci0gICAgZm9yIChhdXRvKiBzZXNzaW9uIDogc2Vzc2lvbnMpCi0gICAgICAgIHNlc3Npb24t
PndpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlKCk7Ci19Ci0KICNpZiAhUExBVEZPUk0o
Q09DT0EpCiB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpCiB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2Vy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNz
aW9uTWFuYWdlci5oCShyZXZpc2lvbiAxODEzMjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NCw3ICs1
NCw2IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbGljYXRpb25XaWxs
RW50ZXJGb3JlZ3JvdW5kKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBsaWNh
dGlvbldpbGxFbnRlckJhY2tncm91bmQoKSBjb25zdDsKLSAgICB2b2lkIHdpcmVsZXNzUm91dGVz
QXZhaWxhYmxlQ2hhbmdlZCgpOwogCiAgICAgZW51bSBTZXNzaW9uUmVzdHJpY3Rpb25GbGFncyB7
CiAgICAgICAgIE5vUmVzdHJpY3Rpb25zID0gMCwKQEAgLTc5LDkgKzc4LDggQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBib29sIHNlc3Npb25DYW5Mb2FkTWVkaWEoY29uc3QgTWVkaWFTZXNzaW9u
JikgY29uc3Q7CiAKKyNpZiBQTEFURk9STShJT1MpCiAgICAgdmlydHVhbCB2b2lkIGNvbmZpZ3Vy
ZVdpcmVMZXNzVGFyZ2V0TW9uaXRvcmluZygpIHsgfQotCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkKICAgICB2aXJ0dWFsIGJvb2wgaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxh
YmxlKCkgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9T
LmgJKHJldmlzaW9uIDE4MTMyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lv
cy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDUsOSArNDUsMTQgQEAg
Y2xhc3MgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUyA6IHB1YmxpYyBNZQogcHVibGljOgogICAgIHZp
cnR1YWwgfk1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MoKTsKIAorICAgIHZvaWQgZXh0ZXJuYWxPdXRw
dXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzV2lyZWxl
c3NUYXJnZXRzQXZhaWxhYmxlKCkgb3ZlcnJpZGU7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNs
YXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXI7CiAKKyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TKCk7
CisKICAgICB2aXJ0dWFsIHZvaWQgc2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKE1lZGlhU2Vzc2lv
biYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXNzaW9uV2lsbEVuZFBsYXliYWNrKE1l
ZGlhU2Vzc2lvbiYpIG92ZXJyaWRlOwogICAgIApAQCAtNTUsMTQgKzYwLDEwIEBAIHByaXZhdGU6
CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHJlc2V0UmVzdHJpY3Rpb25zKCkgb3ZlcnJpZGU7CiAK
LSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotICAgIHZpcnR1YWwgYm9vbCBo
YXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGUoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
Y29uZmlndXJlV2lyZUxlc3NUYXJnZXRNb25pdG9yaW5nKCkgb3ZlcnJpZGU7Ci0jZW5kaWYKIAog
ICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9uQ2FuTG9hZE1lZGlhKGNvbnN0IE1lZGlhU2Vzc2lvbiYp
IGNvbnN0IG92ZXJyaWRlOwotCi0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUygpOworICAgIAog
ICAgIFJldGFpblB0cjxXZWJNZWRpYVNlc3Npb25IZWxwZXI+IG1fb2JqY09ic2VydmVyOwogfTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1h
bmFnZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
aW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0JKHJldmlzaW9uIDE4MTMyOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTE1OSw3ICsxNTksNiBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6
OnJlc2V0UmVzdHJpCiAgICAgYWRkUmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpWaWRlbywgQXV0
b1ByZWxvYWRpbmdOb3RQZXJtaXR0ZWQpOwogfQogCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkKIGJvb2wgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6aGFzV2lyZWxlc3NUYXJn
ZXRzQXZhaWxhYmxlKCkKIHsKICAgICByZXR1cm4gW21fb2JqY09ic2VydmVyIGhhc1dpcmVsZXNz
VGFyZ2V0c0F2YWlsYWJsZV07CkBAIC0xODQsOCArMTgzLDcgQEAgdm9pZCBNZWRpYVNlc3Npb25N
YW5hZ2VyaU9TOjpjb25maWd1cmVXaQogICAgIGVsc2UKICAgICAgICAgW21fb2JqY09ic2VydmVy
IHN0b3BNb25pdG9yaW5nQWlyUGxheVJvdXRlc107CiB9Ci0jZW5kaWYKLSAgICAKKwogdm9pZCBN
ZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soTWVkaWFTZXNz
aW9uJiBzZXNzaW9uKQogewogICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25XaWxsQmVn
aW5QbGF5YmFjayhzZXNzaW9uKTsKQEAgLTIzMyw2ICsyMzEsMTQgQEAgYm9vbCBNZWRpYVNlc3Np
b25NYW5hZ2VyaU9TOjpzZXNzaW9uQ2FuTAogICAgIHJldHVybiBzZXNzaW9uLnN0YXRlKCkgPT0g
TWVkaWFTZXNzaW9uOjpQbGF5aW5nIHx8ICFzZXNzaW9uLmlzSGlkZGVuKCkgfHwgc2Vzc2lvbi5k
aXNwbGF5VHlwZSgpID09IE1lZGlhU2Vzc2lvbjo6T3B0aW1pemVkOwogfQogCit2b2lkIE1lZGlh
U2Vzc2lvbk1hbmFnZXJpT1M6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdl
KCkKK3sKKyAgICBWZWN0b3I8TWVkaWFTZXNzaW9uKj4gc2Vzc2lvbkxpc3QgPSBzZXNzaW9ucygp
OworICAgIGJvb2wgaGF2ZVRhcmdldHMgPSBbbV9vYmpjT2JzZXJ2ZXIgaGFzV2lyZWxlc3NUYXJn
ZXRzQXZhaWxhYmxlXTsKKyAgICBmb3IgKGF1dG8qIHNlc3Npb24gOiBzZXNzaW9uTGlzdCkKKyAg
ICAgICAgc2Vzc2lvbi0+ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoaGF2
ZVRhcmdldHMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIEBpbXBsZW1lbnRhdGlv
biBXZWJNZWRpYVNlc3Npb25IZWxwZXIKQEAgLTQ0NSw3ICs0NTEsNyBAQCAtICh2b2lkKXdpcmVs
ZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlCiAgICAgICAgIGlmICghX2NhbGxiYWNrKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIF9jYWxsYmFjay0+d2lyZWxlc3NSb3V0ZXNBdmFp
bGFibGVDaGFuZ2VkKCk7CisgICAgICAgIF9jYWxsYmFjay0+ZXh0ZXJuYWxPdXRwdXREZXZpY2VB
dmFpbGFibGVEaWRDaGFuZ2UoKTsKICAgICB9KTsKIH0KIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FWUGxheWJhY2tUYXJnZXQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BVlBsYXliYWNrVGFyZ2V0LmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BVlBsYXliYWNrVGFy
Z2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEFWUGxheWJhY2tUYXJnZXRfaAor
I2RlZmluZSBBVlBsYXliYWNrVGFyZ2V0X2gKKworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpCisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBQTEFURk9STShD
T0NPQSkKK09CSkNfQ0xBU1MgTlNLZXllZEFyY2hpdmVyOworT0JKQ19DTEFTUyBOU0tleWVkVW5h
cmNoaXZlcjsKK09CSkNfQ0xBU1MgQVZPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0OworI2VuZGlm
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQVZQbGF5YmFja1RhcmdldCB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+QVZQbGF5YmFja1RhcmdldCgpIHsgfQorCisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgV0VCQ09SRV9FWFBPUlQgQVZQbGF5YmFja1RhcmdldChBVk91dHB1dERldmlj
ZVBpY2tlckNvbnRleHQgKmNvbnRleHQgPSBuaWwpIHsgbV9kZXZpY2VQaWNrZXJDb250ZXh0ID0g
Y29udGV4dDsgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmNvZGUoTlNLZXllZEFyY2hp
dmVyICopIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGRlY29kZShOU0tl
eWVkVW5hcmNoaXZlciAqLCBBVlBsYXliYWNrVGFyZ2V0Jik7CisKKyAgICB2b2lkIHNldERldmlj
ZVBpY2tlckNvbnRleHQoQVZPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0ICpjb250ZXh0KSB7IG1f
ZGV2aWNlUGlja2VyQ29udGV4dCA9IGNvbnRleHQ7IH0KKyAgICBBVk91dHB1dERldmljZVBpY2tl
ckNvbnRleHQgKmRldmljZVBpY2tlckNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2RldmljZVBp
Y2tlckNvbnRleHQuZ2V0KCk7IH0KKyNlbmRpZgorCitwcm90ZWN0ZWQ6CisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgUmV0YWluUHRyPEFWT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dD4gbV9kZXZp
Y2VQaWNrZXJDb250ZXh0OworI2VuZGlmCit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0FWUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BVlBsYXliYWNrVGFyZ2V0UGlj
a2VyQ2xpZW50LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9BVlBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQVZQbGF5YmFja1RhcmdldFBpY2tlckNs
aWVudF9oCisjZGVmaW5lIEFWUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRfaAorCisjaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKworI2luY2x1ZGUgIkFWUGxheWJhY2tUYXJn
ZXQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBVlBsYXliYWNrVGFyZ2V0Owor
CitjbGFzcyBBVlBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5BVlBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoQVZQbGF5YmFja1RhcmdldCYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoYm9vbCkg
Y29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIHJlcXVpcmVzUGxheWJhY2tUYXJnZXRSb3V0
ZU1vbml0b3JpbmcoKSBjb25zdCA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorCisjZW5kaWYgLy8g
QVZQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCShyZXZpc2lvbiAxODEzMjkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg2Nyw2ICs4NjcsMTEgQEAgdm9pZCBNZWRpYVBsYXllcjo6Y3VycmVudFBs
YXliYWNrVGFyZ2V0SQogewogICAgIG1fY2xpZW50Lm1lZGlhUGxheWVyQ3VycmVudFBsYXliYWNr
VGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQodGhpcyk7CiB9CisKK3ZvaWQgTWVkaWFQbGF5ZXI6OnNl
dFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoY29uc3QgQVZQbGF5YmFja1RhcmdldCYgZGV2aWNlKQor
eworICAgIG1fcHJpdmF0ZS0+c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChkZXZpY2UpOworfQog
I2VuZGlmCiAKIGRvdWJsZSBNZWRpYVBsYXllcjo6bWF4RmFzdEZvcndhcmRSYXRlKCkgY29uc3QK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aAkocmV2aXNpb24gMTgxMzI5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvU291cmNlUHJvdmlkZXI7CiBjbGFzcyBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTsKK2NsYXNzIEFWUGxheWJhY2tUYXJnZXQ7CiAjaWYgRU5BQkxFKE1FRElB
X1NPVVJDRSkKIGNsYXNzIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudDsKICNlbmRpZgpAQCAtNDc2
LDYgKzQ3Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY3VycmVudFBsYXliYWNrVGFyZ2V0SXNX
aXJlbGVzc0NoYW5nZWQoKTsKICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hh
bmdlZCgpOworCisgICAgdm9pZCBzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KGNvbnN0IEFWUGxh
eWJhY2tUYXJnZXQmKTsKICNlbmRpZgogCiAgICAgZG91YmxlIG1pbkZhc3RSZXZlcnNlUmF0ZSgp
IGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXJQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgJKHJldmlzaW9uIDE4MTMyOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCw2ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQVZQbGF5
YmFja1RhcmdldDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgUGxhdGZv
cm1UZXh0VHJhY2s7CkBAIC0xNjYsNiArMTY3LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBi
b29sIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9v
bCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChjb25z
dCBBVlBsYXliYWNrVGFyZ2V0JikgeyB9CiAjZW5kaWYKIAogI2lmIFVTRShOQVRJVkVfRlVMTFND
UkVFTl9WSURFTykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9BVlBsYXliYWNrVGFyZ2V0TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlBsYXliYWNrVGFyZ2V0TWFjLm1t
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0FWUGxheWJhY2tUYXJnZXRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1w
b3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkFWUGxheWJhY2tUYXJnZXQuaCIKKworI2lmIEVOQUJM
RShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisKKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVk91
dHB1dERldmljZVBpY2tlckNvbnRleHQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQVZQbGF5YmFja1Rh
cmdldC5oPgorI2ltcG9ydCA8V2ViQ29yZS9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8b2JqYy9y
dW50aW1lLmg+CisKK3R5cGVkZWYgQVZPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0IEFWT3V0cHV0
RGV2aWNlUGlja2VyQ29udGV4dFR5cGU7CisKK1NPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwo
QVZGb3VuZGF0aW9uKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZPdXRwdXREZXZp
Y2VQaWNrZXJDb250ZXh0KQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBOU1N0cmlu
ZyAqIGNvbnN0IGRldmljZUNvbnRleHRLZXkgPSBAImRldmljZUNvbnRleHQiOworCit2b2lkIEFW
UGxheWJhY2tUYXJnZXQ6OmVuY29kZShOU0tleWVkQXJjaGl2ZXIgKmFyY2hpdmVyKSBjb25zdAor
eworICAgIGlmIChbZ2V0QVZPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0Q2xhc3MoKSBjb25mb3Jt
c1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5nKV0pCisgICAgICAgIFthcmNoaXZl
ciBlbmNvZGVPYmplY3Q6bV9kZXZpY2VQaWNrZXJDb250ZXh0LmdldCgpIGZvcktleTpkZXZpY2VD
b250ZXh0S2V5XTsKK30KKworYm9vbCBBVlBsYXliYWNrVGFyZ2V0OjpkZWNvZGUoTlNLZXllZFVu
YXJjaGl2ZXIgKnVuYXJjaGl2ZXIsIEFWUGxheWJhY2tUYXJnZXQmIHBsYXliYWNrVGFyZ2V0KQor
eworICAgIGlmICghW2dldEFWT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dENsYXNzKCkgY29uZm9y
bXNUb1Byb3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBBVk91dHB1dERldmljZVBpY2tlckNvbnRleHQgKmNvbnRleHQgPSBuaWw7
CisKKyAgICBAdHJ5IHsKKyAgICAgICAgY29udGV4dCA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVj
dE9mQ2xhc3M6Z2V0QVZPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0Q2xhc3MoKSBmb3JLZXk6ZGV2
aWNlQ29udGV4dEtleV07CisgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsK
KyAgICAgICAgTE9HX0VSUk9SKCJUaGUgdGFyZ2V0IHBpY2tlciBiZWluZyBkZWNvZGVkIGlzIG5v
dCBhIEFWT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dC4iKTsKKyAgICB9CisKKyAgICBwbGF5YmFj
a1RhcmdldC5tX2RldmljZVBpY2tlckNvbnRleHQgPSBjb250ZXh0OworCisgICAgcmV0dXJuIGNv
bnRleHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShX
SVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCShyZXZp
c2lvbiAxODEzMjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDYgKzM0LDcgQEAKIE9CSkNfQ0xBU1MgQVZBc3NldEltYWdlR2VuZXJhdG9y
OwogT0JKQ19DTEFTUyBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdDsKIE9CSkNfQ0xBU1Mg
QVZNZWRpYVNlbGVjdGlvbkdyb3VwOworT0JKQ19DTEFTUyBBVk91dHB1dERldmljZVBpY2tlckNv
bnRleHQ7CiBPQkpDX0NMQVNTIEFWUGxheWVyOwogT0JKQ19DTEFTUyBBVlBsYXllckl0ZW07CiBP
QkpDX0NMQVNTIEFWUGxheWVySXRlbUxlZ2libGVPdXRwdXQ7CkBAIC01OSwxMyArNjAsMTQgQEAg
dHlwZWRlZiBzdHJ1Y3QgT3BhcXVlVlRQaXhlbFRyYW5zZmVyU2VzcwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjsKLWNsYXNzIEluYmFuZE1l
dGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjsKLWNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGVB
VkZPYmpDOwogY2xhc3MgQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM7CiBjbGFzcyBBdWRpb1Ry
YWNrUHJpdmF0ZUFWRk9iakM7CitjbGFzcyBBVlBsYXliYWNrVGFyZ2V0OworY2xhc3MgSW5iYW5k
TWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOworY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRk9iakM7CiBjbGFzcyBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQzsKIGNsYXNzIFZpZGVv
VHJhY2tQcml2YXRlQVZGT2JqQzsKK2NsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjsKIAog
Y2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyA6IHB1YmxpYyBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb24gewogcHVibGljOgpAQCAtMjc0LDYgKzI3Niw5IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBTdHJpbmcgd2lyZWxlc3NQbGF5YmFja1RhcmdldE5hbWUoKSBj
b25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpXaXJlbGVzc1BsYXliYWNr
VGFyZ2V0VHlwZSB3aXJlbGVzc1BsYXliYWNrVGFyZ2V0VHlwZSgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgYm9vbCB3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0IG92
ZXJyaWRlOworI2lmICFQTEFURk9STShJT1MpCisgICAgdmlydHVhbCB2b2lkIHNldFdpcmVsZXNz
UGxheWJhY2tUYXJnZXQoY29uc3QgQVZQbGF5YmFja1RhcmdldCYpIG92ZXJyaWRlOworI2VuZGlm
CiAgICAgdmlydHVhbCB2b2lkIHNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wp
IG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlRGlzYWJsZUV4dGVybmFsUGxheWJhY2soKTsKICNl
bmRpZgpAQCAtMzQ1LDYgKzM1MCwxMCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJbmJhbmRNZXRh
ZGF0YVRleHRUcmFja1ByaXZhdGVBVkY+IG1fbWV0YWRhdGFUcmFjazsKICNlbmRpZgogCisjaWYg
UExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorICAgIFJl
dGFpblB0cjxBVk91dHB1dERldmljZVBpY2tlckNvbnRleHQ+IG1fb3V0cHV0RGV2aWNlUGlja2Vy
Q29udGV4dDsKKyNlbmRpZgorCiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8TlNBcnJheT4gbV9jYWNo
ZWRTZWVrYWJsZVJhbmdlczsKICAgICBtdXRhYmxlIFJldGFpblB0cjxOU0FycmF5PiBtX2NhY2hl
ZExvYWRlZFJhbmdlczsKICAgICBSZXRhaW5QdHI8TlNBcnJheT4gbV9jYWNoZWRUcmFja3M7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHJldmlzaW9uIDE4MTMyOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCiAjaW1wb3J0ICJNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgiCiAKKyNpbXBvcnQgIkFWUGxheWJhY2tUYXJn
ZXQuaCIKICNpbXBvcnQgIkFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwuaCIKICNpbXBvcnQgIkF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmgiCiAjaW1wb3J0ICJBdWRpb1RyYWNrUHJpdmF0ZUFW
Rk9iakMuaCIKQEAgLTEzNSw2ICsxMzYsMTQgQEAgQGludGVyZmFjZSBBVlVSTEFzc2V0IChXZWJL
aXRFeHRlbnNpb25zKQogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1VSTCAqcmVz
b2x2ZWRVUkw7CiBAZW5kCiAKKyNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQpCit0eXBlZGVmIEFWT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dCBBVk91
dHB1dERldmljZVBpY2tlckNvbnRleHRUeXBlOworCitAaW50ZXJmYWNlIEFWUGxheWVyIChXZWJL
aXRFeHRlbnNpb25zKQorQHByb3BlcnR5IChub25hdG9taWMpIEFWT3V0cHV0RGV2aWNlUGlja2Vy
Q29udGV4dCAqb3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dDsKK0BlbmQKKyNlbmRpZgorCiB0eXBl
ZGVmIEFWUGxheWVyIEFWUGxheWVyVHlwZTsKIHR5cGVkZWYgQVZQbGF5ZXJJdGVtIEFWUGxheWVy
SXRlbVR5cGU7CiB0eXBlZGVmIEFWUGxheWVySXRlbUxlZ2libGVPdXRwdXQgQVZQbGF5ZXJJdGVt
TGVnaWJsZU91dHB1dFR5cGU7CkBAIC01NDYsNiArNTU1LDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOgogICAgICAgICBbbV9hdlBsYXllci5nZXQoKSByZW1vdmVP
YnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAicmF0ZSJdOwogI2lmIEVO
QUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgICAgIFttX2F2UGxheWVyLmdldCgp
IHJlbW92ZU9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJleHRlcm5h
bFBsYXliYWNrQWN0aXZlIl07CisgICAgICAgIFttX2F2UGxheWVyLmdldCgpIHJlbW92ZU9ic2Vy
dmVyOm1fb2JqY09ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJvdXRwdXREZXZpY2VQaWNrZXJD
b250ZXh0Il07CiAjZW5kaWYKICAgICAgICAgbV9hdlBsYXllciA9IG5pbDsKICAgICB9CkBAIC05
MjcsNiArOTM3LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoK
ICAgICBbbV9hdlBsYXllci5nZXQoKSBhZGRPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBm
b3JLZXlQYXRoOkAicmF0ZSIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNv
bnRleHQ6KHZvaWQgKilNZWRpYVBsYXllckFWRm91bmRhdGlvbk9ic2VydmF0aW9uQ29udGV4dFBs
YXllcl07CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICBbbV9hdlBs
YXllci5nZXQoKSBhZGRPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAi
ZXh0ZXJuYWxQbGF5YmFja0FjdGl2ZSIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9u
TmV3IGNvbnRleHQ6KHZvaWQgKilNZWRpYVBsYXllckFWRm91bmRhdGlvbk9ic2VydmF0aW9uQ29u
dGV4dFBsYXllcl07CisgICAgW21fYXZQbGF5ZXIuZ2V0KCkgYWRkT2JzZXJ2ZXI6bV9vYmpjT2Jz
ZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIm91dHB1dERldmljZVBpY2tlckNvbnRleHQiIG9wdGlv
bnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Oih2b2lkICopTWVkaWFQbGF5
ZXJBVkZvdW5kYXRpb25PYnNlcnZhdGlvbkNvbnRleHRQbGF5ZXJdOworI2VuZGlmCisKKyNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHVwZGF0ZURpc2FibGVFeHRlcm5h
bFBsYXliYWNrKCk7CiAjZW5kaWYKIApAQCAtOTM4LDYgKzk1MiwxMSBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAgICAgW21fYXZQbGF5ZXIuZ2V0KCkgc2V0QWxs
b3dzRXh0ZXJuYWxQbGF5YmFjazptX2FsbG93c1dpcmVsZXNzVmlkZW9QbGF5YmFja107CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJ
T1MpCisgICAgaWYgKG1fb3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dCkKKyAgICAgICAgbV9hdlBs
YXllci5nZXQoKS5vdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0ID0gbV9vdXRwdXREZXZpY2VQaWNr
ZXJDb250ZXh0LmdldCgpOworI2VuZGlmCisKICAgICBpZiAocGxheWVyKCktPmNsaWVudCgpLm1l
ZGlhUGxheWVySXNWaWRlbygpKQogICAgICAgICBjcmVhdGVBVlBsYXllckxheWVyKCk7CiAKQEAg
LTExMzQsOSArMTE1Myw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
QzoKICAgICAgICAgc3luY1RleHRUcmFja0JvdW5kcygpOwogICAgICAgICBbbV92aWRlb0Z1bGxz
Y3JlZW5MYXllciBhZGRTdWJsYXllcjptX3RleHRUcmFja1JlcHJlc2VudGF0aW9uTGF5ZXIuZ2V0
KCldOwogICAgIH0KLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorCiAgICAg
dXBkYXRlRGlzYWJsZUV4dGVybmFsUGxheWJhY2soKTsKLSNlbmRpZgogfQogCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZs
b2F0UmVjdCBmcmFtZSkKQEAgLTI2ODcsNyArMjcwNSwxMCBAQCBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6CiAgICAgaWYgKCFtX2F2UGxheWVyKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBib29sIHdpcmVsZXNzVGFyZ2V0ID0gW21fYXZQbGF5ZXIuZ2V0KCkg
aXNFeHRlcm5hbFBsYXliYWNrQWN0aXZlXTsKKyAgICBib29sIHdpcmVsZXNzVGFyZ2V0ID0gZmFs
c2U7CisKKyAgICB3aXJlbGVzc1RhcmdldCA9IG1fYXZQbGF5ZXIuZ2V0KCkuZXh0ZXJuYWxQbGF5
YmFja0FjdGl2ZTsKKwogICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OmlzQ3VycmVudFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MoJXApIC0gcmV0dXJuaW5n
ICVzIiwgdGhpcywgYm9vbFN0cmluZyh3aXJlbGVzc1RhcmdldCkpOwogICAgIHJldHVybiB3aXJl
bGVzc1RhcmdldDsKIH0KQEAgLTI2OTcsNiArMjcxOCw3IEBAIE1lZGlhUGxheWVyOjpXaXJlbGVz
c1BsYXliYWNrVGFyZ2V0VHlwZSAKICAgICBpZiAoIW1fYXZQbGF5ZXIpCiAgICAgICAgIHJldHVy
biBNZWRpYVBsYXllcjo6VGFyZ2V0VHlwZU5vbmU7CiAKKyNpZiBQTEFURk9STShJT1MpCiAgICAg
c3dpdGNoICh3a0V4ZXJuYWxEZXZpY2VUeXBlRm9yUGxheWVyKG1fYXZQbGF5ZXIuZ2V0KCkpKSB7
CiAgICAgY2FzZSB3a0V4dGVybmFsUGxheWJhY2tUeXBlTm9uZToKICAgICAgICAgcmV0dXJuIE1l
ZGlhUGxheWVyOjpUYXJnZXRUeXBlTm9uZTsKQEAgLTI3MDgsNiArMjczMCwxMCBAQCBNZWRpYVBs
YXllcjo6V2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGUgCiAKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlRhcmdldFR5cGVOb25lOworCisjZWxzZQor
ICAgIHJldHVybiBNZWRpYVBsYXllcjo6VGFyZ2V0VHlwZUFpclBsYXk7CisjZW5kaWYKIH0KIAog
U3RyaW5nIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndpcmVsZXNzUGxheWJh
Y2tUYXJnZXROYW1lKCkgY29uc3QKQEAgLTI3MjUsNyArMjc1MSw3IEBAIGJvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKIHsKICAgICBpZiAoIW1fYXZQbGF5ZXIpCiAgICAg
ICAgIHJldHVybiAhbV9hbGxvd3NXaXJlbGVzc1ZpZGVvUGxheWJhY2s7Ci0gICAgCisKICAgICBt
X2FsbG93c1dpcmVsZXNzVmlkZW9QbGF5YmFjayA9IFttX2F2UGxheWVyLmdldCgpIGFsbG93c0V4
dGVybmFsUGxheWJhY2tdOwogICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCVwKSAtIHJldHVybmlu
ZyAlcyIsIHRoaXMsIGJvb2xTdHJpbmcoIW1fYWxsb3dzV2lyZWxlc3NWaWRlb1BsYXliYWNrKSk7
CiAKQEAgLTI3MzgsMTYgKzI3NjQsMzIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOgogICAgIG1fYWxsb3dzV2lyZWxlc3NWaWRlb1BsYXliYWNrID0gIWRpc2FibGVk
OwogICAgIGlmICghbV9hdlBsYXllcikKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgW21f
YXZQbGF5ZXIuZ2V0KCkgc2V0QWxsb3dzRXh0ZXJuYWxQbGF5YmFjazohZGlzYWJsZWRdOwogfQog
CisjaWYgIVBMQVRGT1JNKElPUykKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChjb25zdCBBVlBsYXliYWNrVGFyZ2V0JiB0
YXJnZXQpCit7CisgICAgbV9vdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0ID0gdGFyZ2V0LmRldmlj
ZVBpY2tlckNvbnRleHQoKTsKKworICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoJXApIC0gdGFyZ2V0ID0g
JXAiLCB0aGlzLCBtX291dHB1dERldmljZVBpY2tlckNvbnRleHQuZ2V0KCkpOworCisgICAgaWYg
KCFtX2F2UGxheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2F2UGxheWVyLmdldCgpLm91
dHB1dERldmljZVBpY2tlckNvbnRleHQgPSBtX291dHB1dERldmljZVBpY2tlckNvbnRleHQuZ2V0
KCk7Cit9CisjZW5kaWYKKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Ojp1cGRhdGVEaXNhYmxlRXh0ZXJuYWxQbGF5YmFjaygpCiB7CiAgICAgaWYgKCFtX2F2UGxheWVy
KQogICAgICAgICByZXR1cm47CiAKKyNpZiBQTEFURk9STShJT1MpCiAgICAgW21fYXZQbGF5ZXIg
c2V0VXNlc0V4dGVybmFsUGxheWJhY2tXaGlsZUV4dGVybmFsU2NyZWVuSXNBY3RpdmU6bV92aWRl
b0Z1bGxzY3JlZW5MYXllciAhPSBuaWxdOworI2VuZGlmCiB9CiAjZW5kaWYKIApAQCAtMzE2OSw2
ICszMjExLDggQEAgLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtleVBhdGggbwogI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgICAgIGVsc2UgaWYgKFtrZXlQ
YXRoIGlzRXF1YWxUb1N0cmluZzpAImV4dGVybmFsUGxheWJhY2tBY3RpdmUiXSkKICAgICAgICAg
ICAgIGZ1bmN0aW9uID0gV1RGOjpiaW5kKCZNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpwbGF5YmFja1RhcmdldElzV2lyZWxlc3NEaWRDaGFuZ2UsIG1fY2FsbGJhY2spOworICAg
ICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJvdXRwdXREZXZpY2VQaWNr
ZXJDb250ZXh0Il0pCisgICAgICAgICAgICBmdW5jdGlvbiA9IFdURjo6YmluZCgmTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzRGlkQ2hh
bmdlLCBtX2NhbGxiYWNrKTsKICNlbmRpZgogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAkocmV2aXNpb24gMTgxMzI5KQorKysg
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTcsNiArOTcsNyBAQCBJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OkJhY2t1cChTZXR0
aW5nCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICAsIG1fdG91Y2hFdmVudEVtdWxhdGlv
bkVuYWJsZWQoc2V0dGluZ3MuaXNUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZCgpKQogI2VuZGlm
CisgICAgLCBtX21lZGlhUGxheWJhY2tBbGxvd3NBaXJQbGF5KHNldHRpbmdzLm1lZGlhUGxheWJh
Y2tBbGxvd3NBaXJQbGF5KCkpCiB7CiB9CiAKQEAgLTIwMSw2ICsyMDIsNyBAQCBJbnRlcm5hbFNl
dHRpbmdzOjpJbnRlcm5hbFNldHRpbmdzKFBhZ2UqCiAgICAgLCBtX3BhZ2UocGFnZSkKICAgICAs
IG1fYmFja3VwKHBhZ2UtPnNldHRpbmdzKCkpCiB7CisgICAgcGFnZS0+c2V0dGluZ3MoKS5zZXRN
ZWRpYVBsYXliYWNrQWxsb3dzQWlyUGxheShmYWxzZSk7CiB9CiAKIHZvaWQgSW50ZXJuYWxTZXR0
aW5nczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFsU2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFsU2V0dGluZ3MuaAkocmV2aXNpb24gMTgxMzI5KQorKysgU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTk1LDYgKzk1
LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgICAgIGJvb2wgbV90
b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZDsKICNlbmRpZgorICAgICAgICBib29sIG1fbWVkaWFQ
bGF5YmFja0FsbG93c0FpclBsYXk7CiAgICAgfTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPElu
dGVybmFsU2V0dGluZ3M+IGNyZWF0ZShQYWdlKiBwYWdlKQpJbmRleDogU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNp
b24gMTgxMzQwKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzIgQEAKKzIwMTUtMDMtMTAgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgW01hY10gVXBkYXRlIEFpclBsYXkgaGFuZGxpbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjU0MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
TWFjLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPEFWUGxheWJhY2tUYXJnZXQ+Ojpl
bmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPEFWUGxheWJhY2tUYXJnZXQ+Ojpk
ZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHk6OldlYkFWUGxheWJhY2tU
YXJnZXRQaWNrZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFWUGxheWJhY2tUYXJnZXRQ
aWNrZXJQcm94eTo6fldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eTo6c2hvd1BsYXliYWNrVGFyZ2V0
UGlja2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5
OjpzdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHk6OnN0b3BNb25pdG9yaW5nUGxheWJhY2tUYXJn
ZXRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJv
eHk6OkNsaWVudDo6fkNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGV2aWNlUGlja2VyUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNob3dQbGF5YmFja1RhcmdldFBpY2tlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3RhcnRpbmdNb25pdG9yaW5nUGxheWJh
Y2tUYXJnZXRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdG9wTW9uaXRvcmlu
Z1BsYXliYWNrVGFyZ2V0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ2hv
b3NlUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmV4dGVy
bmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OmNyZWF0ZVBsYXliYWNrVGFyZ2V0UGlja2VyKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvbWFjL1dlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYy5oOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYy5t
bTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94
eU1hYzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tl
clByb3h5TWFjOjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6On5XZWJBVlBsYXliYWNr
VGFyZ2V0UGlja2VyUHJveHlNYWMpOgorICAgICAgICAoV2ViS2l0OjpXZWJBVlBsYXliYWNrVGFy
Z2V0UGlja2VyUHJveHlNYWM6Om91dHB1dGVEZXZpY2VBdmFpbGFiaWxpdHlDaGFuZ2VkVGltZXJG
aXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1h
Yzo6YXZhaWxhYmxlRGV2aWNlc0RpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFWUGxh
eWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYzo6ZGV2aWNlUGlja2VyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjOjpzaG93UGxheWJhY2tUYXJnZXRQ
aWNrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlN
YWM6OmN1cnJlbnREZXZpY2VEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJBVlBsYXli
YWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6OnN0YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYzo6
c3RvcE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMpOgorICAgICAgICAoLVtXZWJBVk91dHB1dERl
dmljZVBpY2tlck1lbnVDb250cm9sbGVySGVscGVyIGluaXRXaXRoQ2FsbGJhY2s6XSk6CisgICAg
ICAgICgtW1dlYkFWT3V0cHV0RGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXJIZWxwZXIgY2xlYXJD
YWxsYmFja10pOgorICAgICAgICAoLVtXZWJBVk91dHB1dERldmljZVBpY2tlck1lbnVDb250cm9s
bGVySGVscGVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6
XSk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlci5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyOjpX
ZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFj
a1RhcmdldFBpY2tlcjo6c2hvd1BsYXliYWNrRGV2aWNlUGlja2VyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlcjo6Y29uZmlndXJlV2lyZUxlc3NUYXJnZXRNb25p
dG9yaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlcjo6YWRk
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlcjo6cmVt
b3ZlQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlcjo6
ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBVlBsYXliYWNr
VGFyZ2V0UGlja2VyOjpwbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eURpZENoYW5nZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnNob3dQbGF5YmFja1RhcmdldFBpY2tlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6c3RhcnRpbmdNb25pdG9yaW5nUGxh
eWJhY2tUYXJnZXRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpzdG9wTW9u
aXRvcmluZ1BsYXliYWNrVGFyZ2V0cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6cGxheWJhY2tUYXJnZXRTZWxlY3RlZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluOgorCiAyMDE1LTAz
LTEwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbR1RLXSBDb250ZW50cyBub3Qgc2hvd24gd2hlbiBlbnRlcmluZyBBQyBtb2RlIHVubGVzcyB0
aGUgd2luZG93IGlzIHJlc2l6ZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25z
L0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0Nv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiAxODEzMjkpCisr
KyBTb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwko
d29ya2luZyBjb3B5KQpAQCAtMTAzLDYgKzEwMywxMCBAQCBFTkFCTEVfSU5TUEVDVE9SX0FMVEVS
TkFURV9ESVNQQVRDSEVSU19tCiBFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVS
U19tYWNvc3hfMTAxMTAwID0gRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlM7
CiAKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRbc2RrPWlwaG9uZSpdID0gRU5BQkxF
X1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsKK0VOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJH
RVRbc2RrPW1hY29zeCpdID0gJChFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29z
eF8kKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SKSkKK0VOQUJMRV9XSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVRfbWFjb3N4XzEwOTAgPSA7CitFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUX21hY29zeF8xMDEwMDAgPSA7CitFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21h
Y29zeF8xMDExMDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogCiBFTkFCTEVf
SU9TX0dFU1RVUkVfRVZFTlRTW3Nkaz1pcGhvbmUqXSA9ICQoRU5BQkxFX0lPU19HRVNUVVJFX0VW
RU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfJChVU0VfSU5URVJOQUxfU0RLKSk7CiBFTkFCTEVf
SU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES19ZRVMgPSBFTkFCTEVfSU9T
X0dFU1RVUkVfRVZFTlRTOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaAkocmV2aXNpb24gMTgxMzI5KQorKysgU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNiArMTE1
LDEyIEBAIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKIH0KICNlbmRpZgogCisj
aWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIEFWUGxheWJhY2tUYXJnZXQ7Cit9CisjZW5kaWYKKwogbmFtZXNwYWNlIElQQyB7CiAK
IHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6QWZmaW5lVHJhbnNmb3Jt
PiB7CkBAIC00NTQsNiArNDYwLDEzIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZToKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiwgV2ViQ29y
ZTo6VGV4dEluZGljYXRvckRhdGEmKTsKIH07CiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUKQordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpBVlBs
YXliYWNrVGFyZ2V0PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYs
IGNvbnN0IFdlYkNvcmU6OkFWUGxheWJhY2tUYXJnZXQmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNv
ZGUoQXJndW1lbnREZWNvZGVyJiwgV2ViQ29yZTo6QVZQbGF5YmFja1RhcmdldCYpOworfTsKKyNl
bmRpZgorCiB9IC8vIG5hbWVzcGFjZSBJUEMKIAogI2VuZGlmIC8vIFdlYkNvcmVBcmd1bWVudENv
ZGVyc19oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENv
ZGVyc01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNv
cmVBcmd1bWVudENvZGVyc01hYy5tbQkocmV2aXNpb24gMTgxMzI5KQorKysgU291cmNlL1dlYktp
dDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTM4LDExICszOCwxNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Qcm90ZWN0aW9uU3BhY2UuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNv
dXJjZVJlcXVlc3QuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQg
PG9iamMvcnVudGltZS5oPgogCiAjaWYgVVNFKENGTkVUV09SSykKICNpbXBvcnQgPENGTmV0d29y
ay9DRlVSTFJlcXVlc3QuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkKKyNpbXBvcnQgPFdlYkNvcmUvQVZQbGF5YmFja1RhcmdldC5oPgorI2VuZGlmCisK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTQzMiw0ICs0
MzgsMzEgQEAgYm9vbCBBcmd1bWVudENvZGVyPENvbnRlbnRGaWx0ZXJVbmJsb2NrSAogICAgIHJl
dHVybiB0cnVlOwogfQogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKK3Zv
aWQgQXJndW1lbnRDb2RlcjxBVlBsYXliYWNrVGFyZ2V0Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgQVZQbGF5YmFja1RhcmdldCYgdGFyZ2V0KQoreworICAgIFJldGFp
blB0cjxOU011dGFibGVEYXRhPiBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2Nd
IGluaXRdKTsKKyAgICBSZXRhaW5QdHI8TlNLZXllZEFyY2hpdmVyPiBhcmNoaXZlciA9IGFkb3B0
TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFibGVEYXRh
OmRhdGEuZ2V0KCldKTsKKyAgICBbYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVT
XTsKKyAgICB0YXJnZXQuZW5jb2RlKGFyY2hpdmVyLmdldCgpKTsKKyAgICBbYXJjaGl2ZXIgZmlu
aXNoRW5jb2RpbmddOworICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8
Q0ZEYXRhUmVmPihkYXRhLmdldCgpKSk7Cit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxBVlBsYXli
YWNrVGFyZ2V0Pjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgQVZQbGF5YmFja1Rh
cmdldCYgdGFyZ2V0KQoreworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7CisgICAgaWYg
KCFJUEM6OmRlY29kZShkZWNvZGVyLCBkYXRhKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgUmV0YWluUHRyPE5TS2V5ZWRVbmFyY2hpdmVyPiB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05T
S2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ1dpdGhEYXRhOihOU0RhdGEgKilk
YXRhLmdldCgpXSk7CisgICAgW3VuYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVT
XTsKKyAgICBpZiAoIUFWUGxheWJhY2tUYXJnZXQ6OmRlY29kZSh1bmFyY2hpdmVyLmdldCgpLCB0
YXJnZXQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgW3VuYXJjaGl2ZXIgZmlu
aXNoRGVjb2RpbmddOworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNw
YWNlIElQQwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCShyZXZpc2lv
biAxODEzMjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCw2ICszNCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yQ2xp
ZW50Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAorI2lmIEVOQUJMRShXSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQpCisjaW5jbHVkZSAiV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5
LmgiCisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIlBsdWdpbkNvbXBs
ZXhUZXh0SW5wdXRTdGF0ZS5oIgogCkBAIC0zMTMsNiArMzE3LDExIEBAIHB1YmxpYzoKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1BY3Rpb25NZW51SGl0VGVz
dChjb25zdCBBY3Rpb25NZW51SGl0VGVzdFJlc3VsdCYsIGJvb2wgZm9ySW1tZWRpYXRlQWN0aW9u
LCBBUEk6Ok9iamVjdCopID0gMDsKICNlbmRpZgorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0
cjxXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHk+IGNyZWF0ZVBsYXliYWNrVGFyZ2V0UGlj
a2VyKFdlYlBhZ2VQcm94eSopID0gMDsKKyNlbmRpZgorCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJBVlBsYXliYWNrVGFyZ2V0
UGlja2VyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuaCIKKworI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHk6OldlYkFWUGxheWJhY2tUYXJnZXRQaWNr
ZXJQcm94eShDbGllbnQmIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KCZjbGllbnQpCit7Cit9CisK
K1dlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eTo6fldlYkFWUGxheWJhY2tUYXJnZXRQaWNr
ZXJQcm94eSgpCit7CisgICAgbV9jbGllbnQgPSAwOworfQorCit2b2lkIFdlYkFWUGxheWJhY2tU
YXJnZXRQaWNrZXJQcm94eTo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYsIGJvb2wpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuOworfQorCit2b2lkIFdlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eTo6c3RhcnRpbmdN
b25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm47Cit9CisKK3ZvaWQgV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5Ojpz
dG9wTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkFWUGxheWJhY2tU
YXJnZXRQaWNrZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eV9oCisjZGVmaW5l
IFdlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eV9oCisKKyNpZiBFTkFCTEUoV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEFWUGxheWJhY2tU
YXJnZXQ7CitjbGFzcyBGbG9hdFJlY3Q7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFdlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eSB7
CitwdWJsaWM6CisgICAgY2xhc3MgQ2xpZW50IHsKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZp
cnR1YWwgfkNsaWVudCgpIHsgfQorCisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoY29uc3QgV2ViQ29yZTo6QVZQbGF5YmFja1RhcmdldCYp
ID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxl
RGlkQ2hhbmdlKGJvb2wpID0gMDsKKworICAgICAgICB2b2lkIGludmFsaWRhdGUoKTsKKyAgICB9
OworCisgICAgdmlydHVhbCB+V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5KCk7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYsIGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzdGFydGluZ01vbml0b3JpbmdQbGF5
YmFja1RhcmdldHMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcE1vbml0b3JpbmdQbGF5YmFja1Rh
cmdldHMoKTsKKworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IFdlYkFWUGxheWJhY2tUYXJnZXRQ
aWNrZXJQcm94eShDbGllbnQmKTsKKworICAgIENsaWVudCogbV9jbGllbnQ7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpCisKKyNlbmRpZiAvLyBXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlfaApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDE4
MTMyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NTkyLDQgKzU1OTIsNDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFNo
b3VsZERpc3BhdGNoRmFrZQogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0U2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKHNob3VsZERpc3BhdGNoRmFrZU1v
dXNlTW92ZUV2ZW50cyksIG1fcGFnZUlEKTsKIH0KIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisKK1dlYkFWUGxheWJhY2tUYXJnZXRQaWNr
ZXJQcm94eSYgV2ViUGFnZVByb3h5OjpkZXZpY2VQaWNrZXJQcm94eSgpCit7CisgICAgaWYgKCFt
X3BsYXliYWNrVGFyZ2V0UGlja2VyKQorICAgICAgICBtX3BsYXliYWNrVGFyZ2V0UGlja2VyID0g
bV9wYWdlQ2xpZW50LmNyZWF0ZVBsYXliYWNrVGFyZ2V0UGlja2VyKHRoaXMpOworCisgICAgcmV0
dXJuICptX3BsYXliYWNrVGFyZ2V0UGlja2VyLmdldCgpOworfQorCit2b2lkIFdlYlBhZ2VQcm94
eTo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgcmVj
dCwgYm9vbCBoYXNWaWRlbykKK3sKKyAgICBkZXZpY2VQaWNrZXJQcm94eSgpLnNob3dQbGF5YmFj
a1RhcmdldFBpY2tlcihtX3BhZ2VDbGllbnQucm9vdFZpZXdUb1NjcmVlbihJbnRSZWN0KHJlY3Qp
KSwgaGFzVmlkZW8pOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnRpbmdNb25pdG9yaW5n
UGxheWJhY2tUYXJnZXRzKCkKK3sKKyAgICBkZXZpY2VQaWNrZXJQcm94eSgpLnN0YXJ0aW5nTW9u
aXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcE1v
bml0b3JpbmdQbGF5YmFja1RhcmdldHMoKQoreworICAgIGRldmljZVBpY2tlclByb3h5KCkuc3Rv
cE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmRp
ZENob29zZVBsYXliYWNrVGFyZ2V0KGNvbnN0IFdlYkNvcmU6OkFWUGxheWJhY2tUYXJnZXQmIHRh
cmdldCkKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQbGF5YmFja1RhcmdldFNlbGVjdGVkKHRh
cmdldCksIG1fcGFnZUlEKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmV4dGVybmFsT3V0cHV0
RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGJvb2wgYXZhaWxhYmxlKQoreworICAgIGlmICghaXNW
YWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKGF2YWlsYWJsZSks
IG1fcGFnZUlEKTsKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMTgxMzI5KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTEsNiArMTExLDEwIEBACiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNHdGsuaCIKICNl
bmRpZgogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JN
KElPUykKKyNpbmNsdWRlICJXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuaCIKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIENvbnRleHRNZW51Q2xpZW50OwogY2xhc3MgRmlu
ZENsaWVudDsKQEAgLTI1OCw2ICsyNjIsOSBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMg
QVBJOjpPYmplY3RJCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAgICAgLCBwdWJsaWMg
V2ViQ29sb3JQaWNrZXI6OkNsaWVudAogI2VuZGlmCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykKKyAgICAsIHB1YmxpYyBXZWJBVlBsYXliYWNr
VGFyZ2V0UGlja2VyUHJveHk6OkNsaWVudAorI2VuZGlmCiAgICAgLCBwdWJsaWMgV2ViUG9wdXBN
ZW51UHJveHk6OkNsaWVudAogICAgICwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAg
LCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyIHsKQEAgLTk5OSw2ICsxMDA2LDE3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3VsdCwgYm9v
bCBzaG91bGRTYW1wbGUpOwogICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBjb25zdCBT
dHJpbmcmIHZhbHVlLCBib29sIHNob3VsZFNhbXBsZSk7CiAKKyNpZiBFTkFCTEUoV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQorICAgIFdlYkFWUGxheWJhY2tUYXJn
ZXRQaWNrZXJQcm94eSYgZGV2aWNlUGlja2VyUHJveHkoKTsKKyAgICB2b2lkIHNob3dQbGF5YmFj
a1RhcmdldFBpY2tlcihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBib29sIGhhc1ZpZGVvKTsK
KyAgICB2b2lkIHN0YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpOworICAgIHZvaWQg
c3RvcE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKKworICAgIC8vIFdlYkFWUGxheWJhY2tU
YXJnZXRQaWNrZXJQcm94eTo6Q2xpZW50CisgICAgdmlydHVhbCB2b2lkIGRpZENob29zZVBsYXli
YWNrVGFyZ2V0KGNvbnN0IFdlYkNvcmU6OkFWUGxheWJhY2tUYXJnZXQmKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoYm9v
bCkgb3ZlcnJpZGU7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkoUGFnZUNs
aWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNv
bmZpZ3VyYXRpb24mKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpAQCAtMTY2Miw2
ICsxNjgwLDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3ZpZXdTdGF0ZUNoYW5nZVdhbnRzU3lu
Y2hyb25vdXNSZXBseTsKICAgICBWZWN0b3I8dWludDY0X3Q+IG1fbmV4dFZpZXdTdGF0ZUNoYW5n
ZUNhbGxiYWNrczsKIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQ
TEFURk9STShJT1MpCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkFWUGxheWJhY2tUYXJnZXRQaWNr
ZXJQcm94eT4gbV9wbGF5YmFja1RhcmdldFBpY2tlcjsKKyNlbmRpZgorCiAgICAgYm9vbCBtX2lz
UGxheWluZ0F1ZGlvOwogfTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxODEzMjkpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkp
CkBAIC00MjMsNCArNDIzLDEwIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIERpZFBlcmZvcm1BY3Rpb25NZW51SGl0VGVzdChzdHJ1Y3QgV2ViS2l0
OjpBY3Rpb25NZW51SGl0VGVzdFJlc3VsdCByZXN1bHQsIGJvb2wgZm9ySW1tZWRpYXRlQWN0aW9u
LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogI2VuZGlmCisKKyNpZiBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQorICAgIFNob3dQbGF5YmFja1Rh
cmdldFBpY2tlcihXZWJDb3JlOjpGbG9hdFJlY3QgcGlja2VyTG9jYXRpb24sIGJvb2wgaGFzVmlk
ZW8pCisgICAgU3RhcnRpbmdNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkKKyAgICBTdG9wTW9u
aXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpCisjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgJKHJldmlzaW9uIDE4MTMyOSkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaAkod29ya2luZyBj
b3B5KQpAQCAtMjA0LDYgKzIwNCwxMCBAQCBwcml2YXRlOgogI2lmIFVTRShESUNUQVRJT05fQUxU
RVJOQVRJVkVTKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRV
SUNvbnRyb2xsZXI+IG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOwogI2VuZGlmCisKKyNp
ZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorICAgIHZpcnR1YWwgc3RkOjp1bmlx
dWVfcHRyPFdlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eT4gY3JlYXRlUGxheWJhY2tUYXJn
ZXRQaWNrZXIoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsLm1tCShyZXZpc2lvbiAxODEzMjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCwx
MCBAQAogI2ltcG9ydCA8QXBwS2l0L05TVGV4dEFsdGVybmF0aXZlcy5oPgogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorI2luY2x1ZGUgIldlYkFWUGxheWJh
Y2tUYXJnZXRQaWNrZXJQcm94eU1hYy5oIgorI2VuZGlmCisKIEBpbnRlcmZhY2UgTlNBcHBsaWNh
dGlvbiAoV2ViTlNBcHBsaWNhdGlvbkRldGFpbHMpCiAtIChOU0N1cnNvciAqKV9jdXJzb3JSZWN0
Q3Vyc29yOwogQGVuZApAQCAtNzg4LDYgKzc5MiwxMiBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpz
aG93UGxhdGZvcm1Db250ZXh0CiAgICAgW21lbnUgcG9wVXBNZW51UG9zaXRpb25pbmdJdGVtOm5p
bCBhdExvY2F0aW9uOmxvY2F0aW9uIGluVmlldzptX3drVmlld107CiB9CiAKKyNpZiBFTkFCTEUo
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorc3RkOjp1bmlxdWVfcHRyPFdlYkFWUGxheWJhY2tU
YXJnZXRQaWNrZXJQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZVBsYXliYWNrVGFyZ2V0UGlj
a2VyKFdlYlBhZ2VQcm94eSogcGFnZSkKK3sKKyAgICByZXR1cm4gV2ViQVZQbGF5YmFja1Rhcmdl
dFBpY2tlclByb3h5TWFjOjpjcmVhdGUoKnBhZ2UpOworfQorI2VuZGlmCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkFWUGxh
eWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkFWUGxheWJhY2tUYXJn
ZXRQaWNrZXJQcm94eU1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hY19oCisjZGVm
aW5lIFdlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hY19oCisKKyNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQorCisjaW1wb3J0ICJXZWJB
VlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
QVZQbGF5YmFja1RhcmdldDsKK2NsYXNzIEZsb2F0UmVjdDsKK30KKworT0JKQ19DTEFTUyBBVk91
dHB1dERldmljZVBpY2tlck1lbnVDb250cm9sbGVyOworT0JKQ19DTEFTUyBXZWJBVk91dHB1dERl
dmljZVBpY2tlck1lbnVDb250cm9sbGVySGVscGVyOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjIDogcHVibGljIFdlYkFWUGxh
eWJhY2tUYXJnZXRQaWNrZXJQcm94eSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQVZQ
bGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjKTsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJB
VlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMoKTsKKworICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjPiBjcmVhdGUoV2ViQVZQbGF5
YmFja1RhcmdldFBpY2tlclByb3h5OjpDbGllbnQmKTsKKworICAgIHZpcnR1YWwgdm9pZCBzaG93
UGxheWJhY2tUYXJnZXRQaWNrZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgYm9vbCkgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0
cygpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzdG9wTW9uaXRvcmluZ1BsYXliYWNrVGFy
Z2V0cygpIG92ZXJyaWRlOworICAgIAorICAgIHZvaWQgYXZhaWxhYmxlRGV2aWNlc0RpZENoYW5n
ZSgpOworICAgIHZvaWQgY3VycmVudERldmljZURpZENoYW5nZSgpOworCitwcml2YXRlOgorICAg
IGV4cGxpY2l0IFdlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYyhXZWJBVlBsYXliYWNr
VGFyZ2V0UGlja2VyUHJveHk6OkNsaWVudCYpOworCisgICAgQVZPdXRwdXREZXZpY2VQaWNrZXJN
ZW51Q29udHJvbGxlciAqZGV2aWNlUGlja2VyKCk7CisgICAgdm9pZCBvdXRwdXRlRGV2aWNlQXZh
aWxhYmlsaXR5Q2hhbmdlZFRpbWVyRmlyZWQoKTsKKworICAgIFJldGFpblB0cjxBVk91dHB1dERl
dmljZVBpY2tlck1lbnVDb250cm9sbGVyPiBtX2RldmljZVBpY2tlck1lbnVDb250cm9sbGVyOwor
ICAgIFJldGFpblB0cjxXZWJBVk91dHB1dERldmljZVBpY2tlck1lbnVDb250cm9sbGVySGVscGVy
PiBtX2RldmljZVBpY2tlck1lbnVDb250cm9sbGVyRGVsZWdhdGU7CisgICAgUnVuTG9vcDo6VGlt
ZXI8V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjPiBtX2RldmljZUNoYW5nZVRpbWVy
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKQorCisjZW5kaWYgLy8gV2ViQ29udGV4dE1lbnVQcm94eU1hY19o
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkFWUGxheWJhY2tUYXJnZXRQ
aWNrZXJQcm94eU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYy5tbQkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclBy
b3h5TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTk1IEBACisvKiAKKyAqIENvcHly
aWdodCAoYykgMjAxMyBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMuaCIK
KworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1Mp
CisKKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVk91dHB1dERldmljZVBpY2tlckNvbnRleHQuaD4K
KyNpbXBvcnQgPEFWS2l0L0FWT3V0cHV0RGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXIuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvQVZQbGF5YmFja1RhcmdldC5oPgorI2ltcG9ydCA8V2ViQ29yZS9GbG9h
dFJlY3QuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPG9iamMv
cnVudGltZS5oPgorI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KKwordHlwZWRlZiBBVk91dHB1
dERldmljZVBpY2tlckNvbnRleHQgQVZPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0VHlwZTsKK3R5
cGVkZWYgQVZPdXRwdXREZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlciBBVk91dHB1dERldmljZVBp
Y2tlck1lbnVDb250cm9sbGVyVHlwZTsKKworU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChB
VkZvdW5kYXRpb24pCitTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKEFWS2l0KQorCitTT0ZU
X0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVk91dHB1dERldmljZVBpY2tlckNvbnRleHQpCitT
T0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWT3V0cHV0RGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXIp
CitTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWT3V0cHV0RGV2aWNlUGlja2VyRGVsZWdhdGUpCisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK0BpbnRlcmZhY2UgV2ViQVZPdXRwdXREZXZpY2VQ
aWNrZXJNZW51Q29udHJvbGxlckhlbHBlciA6IE5TT2JqZWN0IHsKKyAgICBXZWJBVlBsYXliYWNr
VGFyZ2V0UGlja2VyUHJveHlNYWMqIG1fY2FsbGJhY2s7Cit9CisKKy0gKGlkKWluaXRXaXRoQ2Fs
bGJhY2s6KFdlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYyopY2FsbGJhY2s7CistICh2
b2lkKWNsZWFyQ2FsbGJhY2s7CistICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0
aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRl
eHQ6KHZvaWQgKiljb250ZXh0OworQGVuZAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RkOjp1
bmlxdWVfcHRyPFdlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYz4gV2ViQVZQbGF5YmFj
a1RhcmdldFBpY2tlclByb3h5TWFjOjpjcmVhdGUoV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclBy
b3h5OjpDbGllbnQmIGNsaWVudCkKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFdlYkFW
UGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYz4obmV3IFdlYkFWUGxheWJhY2tUYXJnZXRQaWNr
ZXJQcm94eU1hYyhjbGllbnQpKTsKK30KKworV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5
TWFjOjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMoV2ViQVZQbGF5YmFja1Rhcmdl
dFBpY2tlclByb3h5OjpDbGllbnQmIGNsaWVudCkKKyAgICA6IFdlYkFWUGxheWJhY2tUYXJnZXRQ
aWNrZXJQcm94eShjbGllbnQpCisgICAgLCBtX2RldmljZVBpY2tlck1lbnVDb250cm9sbGVyRGVs
ZWdhdGUoYWRvcHROUyhbW1dlYkFWT3V0cHV0RGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXJIZWxw
ZXIgYWxsb2NdIGluaXRXaXRoQ2FsbGJhY2s6dGhpc10pKQorICAgICwgbV9kZXZpY2VDaGFuZ2VU
aW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJv
eHlNYWM6Om91dHB1dGVEZXZpY2VBdmFpbGFiaWxpdHlDaGFuZ2VkVGltZXJGaXJlZCkKK3sKK30K
KworV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjOjp+V2ViQVZQbGF5YmFja1Rhcmdl
dFBpY2tlclByb3h5TWFjKCkKK3sKKyAgICBtX2RldmljZUNoYW5nZVRpbWVyLnN0b3AoKTsKKyAg
ICBbbV9kZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlckRlbGVnYXRlIGNsZWFyQ2FsbGJhY2tdOwor
CisgICAgaWYgKG1fZGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXIpIHsKKyAgICAgICAgW21fZGV2
aWNlUGlja2VyTWVudUNvbnRyb2xsZXIuZ2V0KCkgcmVtb3ZlT2JzZXJ2ZXI6bV9kZXZpY2VQaWNr
ZXJNZW51Q29udHJvbGxlckRlbGVnYXRlLmdldCgpIGZvcktleVBhdGg6QCJleHRlcm5hbE91dHB1
dERldmljZUF2YWlsYWJsZSJdOworICAgICAgICBbbV9kZXZpY2VQaWNrZXJNZW51Q29udHJvbGxl
ci5nZXQoKSByZW1vdmVPYnNlcnZlcjptX2RldmljZVBpY2tlck1lbnVDb250cm9sbGVyRGVsZWdh
dGUuZ2V0KCkgZm9yS2V5UGF0aDpAImV4dGVybmFsT3V0cHV0RGV2aWNlUGlja2VkIl07CisgICAg
ICAgIG1fZGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXIgPSBuaWw7CisgICAgfQorfQorCit2b2lk
IFdlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYzo6b3V0cHV0ZURldmljZUF2YWlsYWJp
bGl0eUNoYW5nZWRUaW1lckZpcmVkKCkKK3sKKyAgICBpZiAoIW1fZGV2aWNlUGlja2VyTWVudUNv
bnRyb2xsZXIgfHwgIW1fY2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC0+
ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoZGV2aWNlUGlja2VyKCkuZXh0
ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUpOworfQorCit2b2lkIFdlYkFWUGxheWJhY2tUYXJn
ZXRQaWNrZXJQcm94eU1hYzo6YXZhaWxhYmxlRGV2aWNlc0RpZENoYW5nZSgpCit7CisgICAgaWYg
KCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kZXZpY2VDaGFuZ2VUaW1lci5z
dG9wKCk7CisgICAgbV9kZXZpY2VDaGFuZ2VUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK0FW
T3V0cHV0RGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXJUeXBlICpXZWJBVlBsYXliYWNrVGFyZ2V0
UGlja2VyUHJveHlNYWM6OmRldmljZVBpY2tlcigpCit7CisgICAgaWYgKCFtX2RldmljZVBpY2tl
ck1lbnVDb250cm9sbGVyKSB7CisgICAgICAgIFJldGFpblB0cjxBVk91dHB1dERldmljZVBpY2tl
ckNvbnRleHRUeXBlPiBjb250ZXh0ID0gYWRvcHROUyhbW2dldEFWT3V0cHV0RGV2aWNlUGlja2Vy
Q29udGV4dENsYXNzKCkgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgbV9kZXZpY2VQaWNrZXJNZW51
Q29udHJvbGxlciA9IGFkb3B0TlMoW1tnZXRBVk91dHB1dERldmljZVBpY2tlck1lbnVDb250cm9s
bGVyQ2xhc3MoKSBhbGxvY10gaW5pdFdpdGhPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0OmNvbnRl
eHQuZ2V0KCldKTsKKworICAgICAgICBbbV9kZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlci5nZXQo
KSBhZGRPYnNlcnZlcjptX2RldmljZVBpY2tlck1lbnVDb250cm9sbGVyRGVsZWdhdGUuZ2V0KCkg
Zm9yS2V5UGF0aDpAImV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlIiBvcHRpb25zOk5TS2V5
VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpudWxscHRyXTsKKyAgICAgICAgW21fZGV2
aWNlUGlja2VyTWVudUNvbnRyb2xsZXIuZ2V0KCkgYWRkT2JzZXJ2ZXI6bV9kZXZpY2VQaWNrZXJN
ZW51Q29udHJvbGxlckRlbGVnYXRlLmdldCgpIGZvcktleVBhdGg6QCJleHRlcm5hbE91dHB1dERl
dmljZVBpY2tlZCIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6
bnVsbHB0cl07CisKKyAgICAgICAgaWYgKGRldmljZVBpY2tlcigpLmV4dGVybmFsT3V0cHV0RGV2
aWNlQXZhaWxhYmxlKQorICAgICAgICAgICAgYXZhaWxhYmxlRGV2aWNlc0RpZENoYW5nZSgpOwor
ICAgIH0KKworICAgIHJldHVybiBtX2RldmljZVBpY2tlck1lbnVDb250cm9sbGVyLmdldCgpOwor
fQorCit2b2lkIFdlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYzo6c2hvd1BsYXliYWNr
VGFyZ2V0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgbG9jYXRpb24sIGJvb2wpCit7
CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgW2RldmljZVBpY2tl
cigpIHNob3dNZW51Rm9yUmVjdDpsb2NhdGlvbiBhcHBlYXJhbmNlTmFtZTpOU0FwcGVhcmFuY2VO
YW1lVmlicmFudExpZ2h0XTsKK30KKwordm9pZCBXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJv
eHlNYWM6OmN1cnJlbnREZXZpY2VEaWRDaGFuZ2UoKQoreworICAgIGlmICghbV9jbGllbnQpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fY2xpZW50LT5kaWRDaG9vc2VQbGF5YmFja1RhcmdldChX
ZWJDb3JlOjpBVlBsYXliYWNrVGFyZ2V0KFtkZXZpY2VQaWNrZXIoKSBvdXRwdXREZXZpY2VQaWNr
ZXJDb250ZXh0XSkpOworfQorCit2b2lkIFdlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1h
Yzo6c3RhcnRpbmdNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkKK3sKKyAgICBkZXZpY2VQaWNr
ZXIoKTsKK30KKwordm9pZCBXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6OnN0b3BN
b25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKK0BpbXBsZW1lbnRhdGlvbiBXZWJBVk91dHB1dERldmljZVBpY2tlck1lbnVDb250cm9sbGVy
SGVscGVyCistIChpZClpbml0V2l0aENhbGxiYWNrOihXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2Vy
UHJveHlNYWMqKWNhbGxiYWNrCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisg
ICAgICAgIHJldHVybiBuaWw7CisKKyAgICBtX2NhbGxiYWNrID0gY2FsbGJhY2s7CisKKyAgICBy
ZXR1cm4gc2VsZjsKK30KKworLSAodm9pZCljbGVhckNhbGxiYWNrCit7CisgICAgbV9jYWxsYmFj
ayA9IG5pbDsKK30KKworLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtleVBhdGggb2ZP
YmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNoYW5nZSBjb250ZXh0Oih2
b2lkICopY29udGV4dAoreworICAgIFVOVVNFRF9QQVJBTShjaGFuZ2UpOworICAgIFVOVVNFRF9Q
QVJBTShjb250ZXh0KTsKKyAgICBVTlVTRURfUEFSQU0ob2JqZWN0KTsKKworICAgIGlmICghbV9j
YWxsYmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFba2V5UGF0aCBpc0VxdWFsVG9T
dHJpbmc6QCJleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSJdICYmICFba2V5UGF0aCBpc0Vx
dWFsVG9TdHJpbmc6QCJleHRlcm5hbE91dHB1dERldmljZVBpY2tlZCJdKQorICAgICAgICByZXR1
cm47CisKKyAgICBSZXRhaW5QdHI8V2ViQVZPdXRwdXREZXZpY2VQaWNrZXJNZW51Q29udHJvbGxl
ckhlbHBlcj4gc3Ryb25nU2VsZiA9IHNlbGY7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJv
bmdLZXlQYXRoID0ga2V5UGF0aDsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBz
dHJvbmdLZXlQYXRoXSB7CisgICAgICAgIFdlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1h
YyogY2FsbGJhY2sgPSBzdHJvbmdTZWxmLT5tX2NhbGxiYWNrOworICAgICAgICBpZiAoIWNhbGxi
YWNrKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChbc3Ryb25nS2V5UGF0aCBp
c0VxdWFsVG9TdHJpbmc6QCJleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSJdKQorICAgICAg
ICAgICAgY2FsbGJhY2stPmF2YWlsYWJsZURldmljZXNEaWRDaGFuZ2UoKTsKKyAgICAgICAgZWxz
ZSBpZiAoW3N0cm9uZ0tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAiZXh0ZXJuYWxPdXRwdXREZXZp
Y2VQaWNrZWQiXSkKKyAgICAgICAgICAgIGNhbGxiYWNrLT5jdXJyZW50RGV2aWNlRGlkQ2hhbmdl
KCk7CisgICAgfSk7Cit9CitAZW5kCisKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTgxMzI5KQorKysgU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3
NiwxMCBAQAogCQkwMEI5NjYxOTE4RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVudC5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwQjk2NjE3MThFMjVB
RTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50Lm1tICovOyB9OwogCQkwMEI5NjYxQTE4RTI1QUUxMDBD
RTFGODggLyogRmluZENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDBCOTY2MTgxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQuaCAqLzsg
fTsKIAkJMDc2RTg4NEUxQTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNvbnRleHRNZW51Q2xpZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzZFODg0RDFB
MTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCAqLzsgfTsKKwkJMDc5MjE2
NEMxQUE1NTAxOTAwQTNDMDQ5IC8qIFdlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzkyMTY0ODFB
QTU0RTlEMDBBM0MwNDkgLyogV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5LmNwcCAqLzsg
fTsKKwkJMDc5MjE2NEQxQUE1NTAxRjAwQTNDMDQ5IC8qIFdlYkFWUGxheWJhY2tUYXJnZXRQaWNr
ZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDc5MjE2NDkxQUE1NEU5RDAwQTNDMDQ5IC8qIFdlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94
eS5oICovOyB9OworCQkwNzkyMTY1MDFBQTU1MjhBMDBBM0MwNDkgLyogV2ViQVZQbGF5YmFja1Rh
cmdldFBpY2tlclByb3h5TWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzkyMTY0RTFBQTU1MjhBMDBBM0MwNDkgLyogV2ViQVZQbGF5YmFja1Rhcmdl
dFBpY2tlclByb3h5TWFjLmggKi87IH07CisJCTA3OTIxNjUxMUFBNTUyOEEwMEEzQzA0OSAvKiBX
ZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzkyMTY0RjFBQTU1MjhBMDBBM0MwNDkgLyogV2Vi
QVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjLm1tICovOyB9OwogCQkwRjBDMzY1ODE4QzA1
MUJBMDBGNjA3RDcgLyogUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEMzNjU3MThDMDUxQkEwMEY2MDdENyAv
KiBSZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tICovOyB9OwogCQkwRjBDMzY1QTE4QzA1NTU4MDBG
NjA3RDcgLyogTGF5ZXJSZXByZXNlbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQzM2NTkxOEMwNTU1ODAwRjYwN0Q3IC8qIExheWVyUmVw
cmVzZW50YXRpb24uaCAqLzsgfTsKIAkJMEYwQzM2NUMxOEMwNUNBMTAwRjYwN0Q3IC8qIFJlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBDMzY1QjE4QzA1Q0ExMDBGNjA3RDcgLyogUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbSAqLzsgfTsKQEAgLTIxNTgsNiArMjE2Miwx
MCBAQAogCQkwMEI5NjYxODE4RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaW5kQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA3NkU4ODREMUExM0NBREYwMDVFOTBGQyAvKiBBUElDb250ZXh0TWVudUNs
aWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElDb250ZXh0TWVudUNs
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZFODg0RjFBMTNDQkM2MDA1
RTkwRkMgLyogQVBJSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1l
bnVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjE2NDgxQUE1NEU5
RDAwQTNDMDQ5IC8qIFdlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJv
eHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzkyMTY0OTFBQTU0RTlEMDBB
M0MwNDkgLyogV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzkyMTY0RTFBQTU1MjhBMDBBM0MwNDkgLyogV2Vi
QVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwNzkyMTY0RjFBQTU1MjhBMDBBM0MwNDkgLyogV2ViQVZQbGF5
YmFja1RhcmdldFBpY2tlclByb3h5TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwODY3RDZBNUZFODQwMzA3QzAyQUFDMDcgLyogQXBwS2l0
LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQXBwS2l0LmZyYW1ld29yazsgcGF0aCA9IC9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAi
PGFic29sdXRlPiI7IH07CiAJCTA4OUMxNjY3RkU4NDExNThDMDJBQUMwNyAvKiBFbmdsaXNoICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5wbGlzdC5zdHJpbmdzOyBuYW1lID0gRW5nbGlzaDsgcGF0aCA9IEVuZ2xp
c2gubHByb2ovSW5mb1BsaXN0LnN0cmluZ3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGMEMzNjU3MThDMDUxQkEwMEY2MDdENyAvKiBSZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUmVtb3RlTGF5ZXJUcmVlSG9z
dElPUy5tbTsgcGF0aCA9IGlvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNjE0NSw2ICs2MTUzLDggQEAKIAkJCQk1MTJFMzUyMDEzMEI1
NTAxMDBBQkQxOUEgLyogV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJQcm94eS5jcHAgKi8sCiAJ
CQkJNTEyRTM1MjExMzBCNTUwMTAwQUJEMTlBIC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2Vy
UHJveHkuaCAqLywKIAkJCQk1MTJFMzVGMDEzMEI2MzhDMDBBQkQxOUEgLyogV2ViQXBwbGljYXRp
b25DYWNoZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQkwNzkyMTY0ODFBQTU0RTlE
MDBBM0MwNDkgLyogV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5LmNwcCAqLywKKwkJCQkw
NzkyMTY0OTFBQTU0RTlEMDBBM0MwNDkgLyogV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5
LmggKi8sCiAJCQkJQkM3MkJBMUIxMUU2NDkwNzAwMUVCNEVBIC8qIFdlYkJhY2tGb3J3YXJkTGlz
dC5jcHAgKi8sCiAJCQkJQkM3MkJBMUMxMUU2NDkwNzAwMUVCNEVBIC8qIFdlYkJhY2tGb3J3YXJk
TGlzdC5oICovLAogCQkJCUYwMzY5Nzg3MTVGNEJGMDUwMEMzQTgwRSAvKiBXZWJDb2xvclBpY2tl
ci5jcHAgKi8sCkBAIC03MDAzLDYgKzcwMTMsOCBAQAogCQkJCTJEMTI1QzVEMTg1N0VBMDUwMDNC
QTNDQiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0gKi8sCiAJCQkJMkQ2Q0QxMTcxODkw
NThBNTAwRTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLmggKi8sCiAJCQkJMkQ2Q0QxMTgxODkw
NThBNTAwRTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLm1tICovLAorCQkJCTA3OTIxNjRFMUFB
NTUyOEEwMEEzQzA0OSAvKiBXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMuaCAqLywK
KwkJCQkwNzkyMTY0RjFBQTU1MjhBMDBBM0MwNDkgLyogV2ViQVZQbGF5YmFja1RhcmdldFBpY2tl
clByb3h5TWFjLm1tICovLAogCQkJCTcyOEU4NkVGMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xv
clBpY2tlck1hYy5oICovLAogCQkJCTcyOEU4NkYwMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xv
clBpY2tlck1hYy5tbSAqLywKIAkJCQk1MUFDQkI5RTEyN0E4RjJDMDBEMjAzQjkgLyogV2ViQ29u
dGV4dE1lbnVQcm94eU1hYy5oICovLApAQCAtODA5NSw2ICs4MTA3LDcgQEAKIAkJCQk3QzM2MUQ3
OTE5MjgwM0JEMDAzNkE1OUQgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHlNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJM0Y4ODlEMTUxODg3NzhDOTAwRkVBREFGIC8qIFdlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlDRDU1QUEx
MjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwNzkyMTY0RDFBQTU1MDFGMDBBM0MwNDkgLyogV2ViQVZQbGF5YmFj
a1RhcmdldFBpY2tlclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTIzMkRGNDE4QjI5RDY4
MDBEMDU5NkYgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdE1hYy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkQwNzMwQTMxOUY5QzdEQTAwRTlEOUM0IC8qIFdLQWN0aW9uTWVudUNvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNEI3MjQ0MTlGNUI5QkUwMEFFOTZENiAvKiBXS0Fj
dGlvbk1lbnVJdGVtVHlwZXMuaCBpbiBIZWFkZXJzICovLApAQCAtODI4NCw2ICs4Mjk3LDcgQEAK
IAkJCQkxQUI4QTFGNDE4NDAwQjhGMDBFOUFFNjkgLyogV0tQYWdlRmluZENsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFCOEExRjYxODQwMEI5RDAwRTlBRTY5IC8qIFdLUGFnZUZpbmRNYXRj
aGVzQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI4QTFGMDE4NDAwQjAwMDBFOUFFNjkg
LyogV0tQYWdlRm9ybUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDc5MjE2NTAxQUE1NTI4
QTAwQTNDMDQ5IC8qIFdlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkM3QjYzMzcxMkE0NUFCQTAwRDE3NEE0IC8qIFdLUGFnZUdyb3VwLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQUI4QTFFQzE4NDAwODA5MDBFOUFFNjkgLyogV0tQYWdlTG9hZGVy
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzJEMDIxOTEyQUM0MjZDMDBFNzMyQTMgLyog
V0tQYWdlTG9hZFR5cGVzLmggaW4gSGVhZGVycyAqLywKQEAgLTk1NDksNiArOTU2Myw3IEBACiAJ
CQkJMEZDQjRFNjMxOEJCRTNEOTAwMEZDRkM5IC8qIFBhZ2VDbGllbnRJbXBsLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZDQjRFNDcxOEJCRTA0NDAwMEZDRkM5IC8qIFBhZ2VDbGllbnRJbXBsSU9T
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFDNzUzN0IxODNBOUZEQjAwNzJDQjE1IC8qIFBhZ2VM
b2FkU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDc5MjE2NTExQUE1NTI4QTAwQTNDMDQ5
IC8qIFdlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUM1NzRBNTgyMTJFNjY2ODEwMDJERkU5OCAvKiBQYXN0ZWJvYXJkVHlwZXMubW0gaW4gU291
cmNlcyAqLywKIAkJCQlFMTk1ODJENjE1M0NDMDU0MDBCNjA4NzUgLyogUERGS2l0SW1wb3J0cy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTJEODcwRDEwMTYyMzRGRkUwMDBBM0YyMCAvKiBQREZQbHVn
aW4ubW0gaW4gU291cmNlcyAqLywKQEAgLTk3NDYsNiArOTc2MSw3IEBACiAJCQkJQkMxMTFBNUUx
MTJGNEZCQjAwMzM3QkFCIC8qIFdlYkVkaXRvckNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkyRDI4RjNFNjE4ODVDQ0MxMDA0QjlFQUUgLyogV2ViRWRpdG9yQ2xpZW50SU9TLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQzUyMzdGNjAxMjQ0MUNBMzAwNzgwNDcyIC8qIFdlYkVkaXRvckNsaWVu
dE1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTA3OTIxNjRDMUFBNTUwMTkwMEEzQzA0OSAvKiBX
ZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMx
MTFBRTAxMTJGNUJDMjAwMzM3QkFCIC8qIFdlYkVycm9yc01hYy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUMwMzM3REFFMTI3QTI0RkUwMDhGRjRGNCAvKiBXZWJFdmVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQzAzMkRCQTEwRjQzODBGMDA1OEMxNUEgLyogV2ViRXZlbnRDb252ZXJzaW9uLmNw
cCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb20uYXBw
bGUuV2ViUHJvY2Vzcy5zYi5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCShyZXZpc2lvbiAxODEzMjkpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCSh3b3JraW5n
IGNvcHkpCkBAIC0yOTcsMyArMjk3LDE4IEBACiAgICAgICAgKGhvbWUtc3VicGF0aCAiL0xpYnJh
cnkvQ29tcG9uZW50cyIpCiAgICAgICAgKGhvbWUtc3VicGF0aCAiL0xpYnJhcnkvS2V5Ym9hcmQg
TGF5b3V0cyIpCiAgICAgICAgKGhvbWUtc3VicGF0aCAiL0xpYnJhcnkvSW5wdXQgTWV0aG9kcyIp
KQorCis7OyBBaXJQbGF5Cis7OyBGSVhNRTogcmVtb3ZlIHRoaXMgYXMgZGVzY3JpYmVkIGluIHJk
YXI6Ly8xOTg2OTQ0OAorKGFsbG93IG1hY2gtbG9va3VwCisgICAgKGdsb2JhbC1uYW1lICJjb20u
YXBwbGUuY29yZW1lZGlhLmVuZHBvaW50LmFpcnBsYXl1aWFnZW50IikKKyAgICAoZ2xvYmFsLW5h
bWUgImNvbS5hcHBsZS5jb3JlbWVkaWEuZW5kcG9pbnRzdHJlYW0uYWlycGxheXVpYWdlbnQiKQor
ICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmNvcmVtZWRpYS5lbmRwb2ludHBsYXliYWNrc2Vz
c2lvbi5haXJwbGF5dWlhZ2VudCIpCisgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuY29yZW1l
ZGlhLmVuZHBvaW50cGlja2VyIikpCisKKzs7IEFpclBsYXkKKyhhbGxvdyBtYWNoLWxvb2t1cAor
ICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmNvcmVtZWRpYS5lbmRwb2ludC54cGMiKQorICAg
IChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmNvcmVtZWRpYS5lbmRwb2ludHN0cmVhbS54cGMiKQor
ICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmNvcmVtZWRpYS5lbmRwb2ludHBsYXliYWNrc2Vz
c2lvbi54cGMiKQorICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmNvcmVtZWRpYS5lbmRwb2lu
dHBpY2tlci54cGMiKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHJldmlzaW9uIDE4
MTMyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwMSw0ICsxMTAxLDI2IEBAIGJvb2wg
V2ViQ2hyb21lQ2xpZW50OjpzaG91bGREaXNwYXRjaEZha2UKICAgICByZXR1cm4gbV9wYWdlLT5z
aG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMoKTsKIH0KIAorI2lmIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCit2b2lkIFdlYkNocm9tZUNs
aWVudDo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBw
b3NpdGlvbiwgYm9vbCBpc1ZpZGVvKQoreworICAgIC8vICAgICBJbnRQb2ludCBzY3JvbGxQb3Np
dGlvbkF0TmV3U2NhbGUgPSBtYWluRnJhbWVWaWV3KCktPnJvb3RWaWV3VG9Db250ZW50cygtY2Vu
dGVySW5WaWV3Q29vcmRpbmF0ZXMpOworCisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3Bh
Z2UtPm1haW5GcmFtZSgpLT52aWV3KCk7CisgICAgRmxvYXRSZWN0IHJlY3QoZnJhbWVWaWV3LT5j
b250ZW50c1RvUm9vdFZpZXcoZnJhbWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKHBvc2l0aW9uKSks
IEZsb2F0U2l6ZSgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
U2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKHJlY3QsIGlzVmlkZW8pKTsKK30KKwordm9pZCBXZWJD
aHJvbWVDbGllbnQ6OnN0YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpCit7CisgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0YXJ0aW5nTW9uaXRvcmluZ1Bs
YXliYWNrVGFyZ2V0cygpKTsKK30KKwordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnN0b3BNb25pdG9y
aW5nUGxheWJhY2tUYXJnZXRzKCkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6U3RvcE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKSk7Cit9CisjZW5kaWYKKwor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkocmV2aXNp
b24gMTgxMzI5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEwLDYgKzMxMCwxMiBAQCBwcml2
YXRlOgogCiAgICAgdmlydHVhbCBib29sIHNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50
cygpIGNvbnN0IG92ZXJyaWRlOwogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkgJiYgIVBMQVRGT1JNKElPUykKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0
UGlja2VyKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgYm9vbCkgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIHN0YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBzdG9wTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpIG92ZXJyaWRl
OworI2VuZGlmCisKICAgICBTdHJpbmcgbV9jYWNoZWRUb29sVGlwOwogICAgIG11dGFibGUgUmVm
UHRyPFdlYkZyYW1lPiBtX2NhY2hlZEZyYW1lU2V0TGFyZ2VzdEZyYW1lOwogICAgIG11dGFibGUg
Ym9vbCBtX2NhY2hlZE1haW5GcmFtZUhhc0hvcml6b250YWxTY3JvbGxiYXI7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDE4MTMy
OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTExOCw2ICsxMTgsNyBAQCBjbGFzcyBDb25uZWN0aW9uOwogfQogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBBVlBsYXliYWNrVGFyZ2V0OwogY2xhc3MgRG9jdW1lbnRM
b2FkZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBGcmFtZTsKQEAgLTE0Miw3ICsx
NDMsNiBAQCBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKLQogY2xhc3MgRHJhd2luZ0FyZWE7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJk
TGlzdDsKIGNsYXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKQEAgLTEw
OTMsNiArMTA5MywxMSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRTaG91bGREaXNwYXRjaEZh
a2VNb3VzZU1vdmVFdmVudHMoYm9vbCBkaXNwYXRjaCkgeyBtX3Nob3VsZERpc3BhdGNoRmFrZU1v
dXNlTW92ZUV2ZW50cyA9IGRpc3BhdGNoOyB9CiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQorICAgIHZvaWQgcGxheWJhY2tUYXJnZXRTZWxl
Y3RlZChjb25zdCBXZWJDb3JlOjpBVlBsYXliYWNrVGFyZ2V0JiBvdXRwdXREZXZpY2UpIGNvbnN0
OworICAgIHZvaWQgcGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UoYm9vbCk7Cisj
ZW5kaWYKKwogICAgIHVpbnQ2NF90IG1fcGFnZUlEOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OlBhZ2U+IG1fcGFnZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxODEzMjkpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgko
d29ya2luZyBjb3B5KQpAQCAtNDExLDQgKzQxMSwxMCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExl
Z2FjeVJlY2VpdmVyIHsKICNlbmRpZgogCiAgICAgU2V0U2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VN
b3ZlRXZlbnRzKGJvb2wgc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKQorCisjaWYg
RU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykKKyAgICBQ
bGF5YmFja1RhcmdldFNlbGVjdGVkKFdlYkNvcmU6OkFWUGxheWJhY2tUYXJnZXQgdGFyZ2V0KQor
ICAgIFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKGJvb2wgYXZhaWxhYmxlKQor
I2VuZGlmCisKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHJldmlzaW9uIDE4MTMyOSkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtODcsNiArODcsMTAgQEAKICNpbXBvcnQgPFdlYkNvcmUvaHRtbGVkaXRpbmcuaD4KICNpbXBv
cnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkKKyNpbmNsdWRlIDxXZWJDb3JlL0FWUGxheWJhY2tUYXJnZXQuaD4KKyNlbmRp
ZgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0x
MTg3LDYgKzExOTEsMjAgQEAgdm9pZCBXZWJQYWdlOjpzZXRGb250KGNvbnN0IFN0cmluZyYgZm9u
dAogICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5Rm9udFN0eWxlcyhmb250RmFtaWx5LCBmb250U2l6
ZSwgZm9udFRyYWl0cyk7CiB9CiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KSAmJiAhUExBVEZPUk0oSU9TKQordm9pZCBXZWJQYWdlOjpwbGF5YmFja1RhcmdldFNlbGVjdGVk
KGNvbnN0IFdlYkNvcmU6OkFWUGxheWJhY2tUYXJnZXQmIHBsYXliYWNrVGFyZ2V0KSBjb25zdAor
eworICAgIEFWUGxheWJhY2tUYXJnZXQgbm9uQ29uc3RUYXJnZXQocGxheWJhY2tUYXJnZXQuZGV2
aWNlUGlja2VyQ29udGV4dCgpKTsKKyAgICBtX3BhZ2UtPmRpZENob29zZVBsYXliYWNrVGFyZ2V0
KG5vbkNvbnN0VGFyZ2V0KTsKK30KKwordm9pZCBXZWJQYWdlOjpwbGF5YmFja1RhcmdldEF2YWls
YWJpbGl0eURpZENoYW5nZShib29sIGNoYW5nZWQpCit7CisgICAgbV9wYWdlLT5wbGF5YmFja1Rh
cmdldEF2YWlsYWJpbGl0eURpZENoYW5nZShjaGFuZ2VkKTsKK30KKyNlbmRpZgorCisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpJbmRleDogU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwkocmV2aXNpb24gMTgxMzQwKQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMDMtMTAgIEVyaWMgQ2FybHNv
biAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01hY10gVXBkYXRlIEFpclBs
YXkgaGFuZGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0MjU0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTUtMDMt
MTAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4
IHRoZSBNYWMgYnVpbGQgd2l0aCBhIG5ld2VyIGNvbXBpbGVyCkluZGV4OiBTb3VyY2UvV2ViS2l0
L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZp
ZwkocmV2aXNpb24gMTgxMzI5KQorKysgU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw2ICsxMDMsMTAg
QEAgRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlNfbQogRU5BQkxFX0lOU1BF
Q1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlNfbWFjb3N4XzEwMTEwMCA9IEVOQUJMRV9JTlNQRUNU
T1JfQUxURVJOQVRFX0RJU1BBVENIRVJTOwogCiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUW3Nkaz1pcGhvbmUqXSA9IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CitFTkFC
TEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUW3Nkaz1tYWNvc3gqXSA9ICQoRU5BQkxFX1dJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpP
UikpCitFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDkwID0gOworRU5B
QkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMDAwID0gOworRU5BQkxFX1dJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMTAwID0gRU5BQkxFX1dJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVDsKIAogRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU1tzZGs9aXBob25lKl0g
PSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5URVJOQUxfU0RLXyQoVVNF
X0lOVEVSTkFMX1NESykpOwogRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU19pb3NfV0lUSF9JTlRF
Uk5BTF9TREtfWUVTID0gRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUzsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248418</attachid>
            <date>2015-03-11 08:05:26 -0700</date>
            <delta_ts>2015-03-11 14:21:29 -0700</delta_ts>
            <desc>Updated patch.</desc>
            <filename>patch_30.txt</filename>
            <type>text/plain</type>
            <size>115292</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxMzQwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBA
CisyMDE1LTAzLTEwICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisg
ICAgICAgIFtNYWNdIFVwZGF0ZSBBaXJQbGF5IGhhbmRsaW5nCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI1NDEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnOgorCiAyMDE1LTAzLTEwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV2luXSBKU0MgQnVpbGQgV2FybmluZ3MgTmVlZCB0byBiZSBSZXNvbHZl
ZC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJldmlzaW9uIDE4MTMyOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZp
Zwkod29ya2luZyBjb3B5KQpAQCAtMTAzLDYgKzEwMywxMCBAQCBFTkFCTEVfSU5TUEVDVE9SX0FM
VEVSTkFURV9ESVNQQVRDSEVSU19tCiBFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRD
SEVSU19tYWNvc3hfMTAxMTAwID0gRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hF
UlM7CiAKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRbc2RrPWlwaG9uZSpdID0gRU5B
QkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsKK0VOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19U
QVJHRVRbc2RrPW1hY29zeCpdID0gJChFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21h
Y29zeF8kKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SKSkKK0VOQUJMRV9XSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwOTAgPSA7CitFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUX21hY29zeF8xMDEwMDAgPSA7CitFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
X21hY29zeF8xMDExMDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogCiBFTkFC
TEVfSU9TX0dFU1RVUkVfRVZFTlRTW3Nkaz1pcGhvbmUqXSA9ICQoRU5BQkxFX0lPU19HRVNUVVJF
X0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfJChVU0VfSU5URVJOQUxfU0RLKSk7CiBFTkFC
TEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES19ZRVMgPSBFTkFCTEVf
SU9TX0dFU1RVUkVfRVZFTlRTOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxMzQwKQorKysg
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODkgQEAK
KzIwMTUtMDMtMTAgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgW01hY10gVXBkYXRlIEFpclBsYXkgaGFuZGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjU0MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmlu
ZXMueGNjb25maWc6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjphZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6cmVtb3ZlUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0TW9uaXRvcmluZyk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6cmVxdWlyZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cGxheWJhY2tUYXJnZXRBdmFpbGFiaWxp
dHlEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRpZENob29zZVBsYXli
YWNrVGFyZ2V0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
cmVnaXN0ZXJXaXRoRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6dW5yZWdpc3RlcldpdGhEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50
Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYVNlc3Npb246OkhUTUxNZWRpYVNlc3Npb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhU2Vzc2lvbjo6cmVnaXN0ZXJXaXRoRG9jdW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhU2Vzc2lvbjo6dW5yZWdpc3RlcldpdGhEb2N1bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFTZXNzaW9uOjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhU2Vzc2lvbjo6aGFzV2lyZWxlc3NQbGF5YmFja1Rh
cmdldHMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhU2Vzc2lvbjo6c2V0SGFzUGxheWJh
Y2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhU2Vzc2lvbjo6ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhU2Vzc2lvbjo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhU2Vzc2lvbjo6cmVxdWlyZXNQbGF5YmFja1Rh
cmdldFJvdXRlTW9uaXRvcmluZyk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmg6
CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZTo6cGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6Y29uZmlndXJlUGxheWJhY2tUYXJnZXRNb25pdG9y
aW5nKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Omhh
c1dpcmVsZXNzUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cGxheWJh
Y2tUYXJnZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OmNsaWVudERhdGFCdWZmZXJpbmdUaW1lckZp
cmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6d2lyZWxlc3NSb3V0ZXNBdmFp
bGFibGVEaWRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlh
U2Vzc2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpkaWRDaG9vc2VQbGF5
YmFja1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OmV4dGVybmFsT3V0
cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vz
c2lvbjo6cmVxdWlyZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVNlc3Npb25DbGllbnQ6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6d2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVD
aGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25N
YW5hZ2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1
cmVXaXJlTGVzc1RhcmdldE1vbml0b3JpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lv
cy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9z
L01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Np
b25NYW5hZ2VyaU9TOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSk6Cisg
ICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciB3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURp
ZENoYW5nZTpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9BVlBsYXliYWNrVGFyZ2V0
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QVZQbGF5YmFja1RhcmdldDo6fkFWUGxheWJh
Y2tUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6QVZQbGF5YmFja1RhcmdldDo6QVZQbGF5YmFj
a1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpBVlBsYXliYWNrVGFyZ2V0OjpzZXREZXZpY2VQ
aWNrZXJDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFWUGxheWJhY2tUYXJnZXQ6OmRldmlj
ZVBpY2tlckNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0FWUGxheWJhY2tU
YXJnZXRQaWNrZXJDbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBVlBsYXliYWNr
VGFyZ2V0UGlja2VyQ2xpZW50Ojp+QVZQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXI6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVJbnRlcmZhY2U6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlBsYXliYWNrVGFyZ2V0TWFjLm1tOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFWUGxheWJhY2tUYXJnZXQ6OmVuY29kZSk6CisgICAgICAg
IChXZWJDb3JlOjpBVlBsYXliYWNrVGFyZ2V0OjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2FuY2VsTG9hZCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVlBs
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjppc0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVs
ZXNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OndpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2Fi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFdpcmVsZXNzUGxheWJhY2tU
YXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6dXBkYXRlRGlzYWJsZUV4dGVybmFsUGxheWJhY2spOgorICAgICAgICAoLVtXZWJDb3Jl
QVZGTW92aWVPYnNlcnZlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpj
b250ZXh0Ol0pOgorCiAyMDE1LTAzLTEwICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgQWRqdXN0bWVudHMgdG8gbWVkaWEgY29udHJvbCBmb250cy4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnCShyZXZpc2lvbiAxODEzMjkpCisrKyBTb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtMTAzLDYgKzEw
MywxMCBAQCBFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSU19tCiBFTkFCTEVf
SU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSU19tYWNvc3hfMTAxMTAwID0gRU5BQkxFX0lO
U1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlM7CiAKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFD
S19UQVJHRVRbc2RrPWlwaG9uZSpdID0gRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsK
K0VOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRbc2RrPW1hY29zeCpdID0gJChFTkFCTEVf
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8kKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9O
X01BSk9SKSkKK0VOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwOTAgPSA7
CitFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDEwMDAgPSA7CitFTkFC
TEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDExMDAgPSBFTkFCTEVfV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUOwogCiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTW3Nkaz1pcGhv
bmUqXSA9ICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtf
JChVU0VfSU5URVJOQUxfU0RLKSk7CiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRI
X0lOVEVSTkFMX1NES19ZRVMgPSBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTOwpJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMTgxMzI5KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsNiArMTc1LDcgQEAKIAkJMDc0RTgyQkIx
OEE2OUYwRTAwN0VGNTRDIC8qIFBsYXRmb3JtVGltZVJhbmdlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc0RTgyQjkxOEE2OUYwRTAwN0VGNTRDIC8q
IFBsYXRmb3JtVGltZVJhbmdlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTA3NTM4NjAyMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJh
Y2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc1
Mzg2MDAxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5jcHAgKi87IH07CiAJCTA3
NTM4NjAzMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NTM4NjAxMTQ0ODlFOTgwMEI3ODQ1
MiAvKiBDYWNoZWRUZXh0VHJhY2suaCAqLzsgfTsKKwkJMDc2MEMxN0ExQUE4RkM3RDAwOUVEN0I4
IC8qIEFWUGxheWJhY2tUYXJnZXRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwN0UzREZEMjFBOUU3OEE1MDA3NjRDQTggLyogQVZQbGF5YmFja1Rh
cmdldE1hYy5tbSAqLzsgfTsKIAkJMDc2MzA2RDAxN0UxNDc4RDAwNUE3QzRFIC8qIE1lZGlhU3Ry
ZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3NjMwNkNDMTdFMTQ3OEQwMDVBN0M0RSAvKiBNZWRpYVN0cmVhbVRy
YWNrU291cmNlc0NhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMDc2MzA2RDIxN0UxNDc4RDAwNUE3QzRFIC8qIE1lZGlhU3RyZWFtVHJh
Y2tTb3VyY2VzUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzYzMDZDRTE3RTE0NzhEMDA1QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFja1Nv
dXJjZXNSZXF1ZXN0LmNwcCAqLzsgfTsKIAkJMDc2MzA2RDMxN0UxNDc4RDAwNUE3QzRFIC8qIE1l
ZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2MzA2Q0YxN0UxNDc4RDAwNUE3QzRFIC8qIE1lZGlhU3Ry
ZWFtVHJhY2tTb3VyY2VzUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0yNzMsNiArMjc0LDcgQEAKIAkJMDc4RTA5NDcxN0QxNkUxQzAw
NDIwQUExIC8qIFJUQ1ZvaWRSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzIyMUJCMDE3Q0YwQUQ0MDA4NDhFNTEgLyogUlRDVm9pZFJlcXVl
c3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
NzhFMDk0QjE3RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzhF
MDk0ODE3RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5j
cHAgKi87IH07CiAJCTA3OEUwOTRDMTdEMTcwOTYwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbUF1ZGlv
RGVzdGluYXRpb25Ob2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwNzhFMDk0OTE3RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFTdHJlYW1BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTA3OTIxNjU1MUFBNTYwQUEwMEEzQzA0OSAvKiBBVlBsYXliYWNrVGFyZ2V0UGlja2Vy
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzkyMTY1MzFBQTU2MEFBMDBBM0MwNDkgLyogQVZQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3OTQx
NzkxMTY2RTg1NUYwMDk0MTZDMiAvKiBJbmJhbmRUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5NDE3OEYxNjZFODU1RjAwOTQxNkMy
IC8qIEluYmFuZFRleHRUcmFjay5jcHAgKi87IH07CiAJCTA3OTQxNzkyMTY2RTg1NUYwMDk0MTZD
MiAvKiBJbmJhbmRUZXh0VHJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3OTQxNzkwMTY2RTg1NUYwMDk0MTZDMiAvKiBJbmJhbmRUZXh0VHJhY2su
aCAqLzsgfTsKIAkJMDc5NDE3OTQxNjZFQTA0RTAwOTQxNkMyIC8qIEluYmFuZFRleHRUcmFja1By
aXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
OTQxNzkzMTY2RUEwNEUwMDk0MTZDMiAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM0NCw4ICszNDYs
MTAgQEAKIAkJMDdEQzVGRDQxN0QzRUVFOTAwOTlGODkwIC8qIEpTUlRDU3RhdHNSZXNwb25zZUN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
N0RDNUZEMzE3RDNFRUU5MDA5OUY4OTAgLyogSlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcCAq
LzsgfTsKIAkJMDdFMTE2QjExNDg5QzlBMTAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RTExNkIw
MTQ4OUM5QTEwMEVDNUFDRSAvKiBKU1RleHRUcmFja0N1c3RvbS5jcHAgKi87IH07CiAJCTA3RTEx
NzA3MTQ4OUVCRUIwMEVDNUFDRSAvKiBKU1RleHRUcmFja0N1ZUN1c3RvbS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0UxMTcwNjE0ODlFQkVCMDBF
QzVBQ0UgLyogSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwICovOyB9OworCQkwN0UzREZEMTFBOUU3
ODY1MDA3NjRDQTggLyogQVZQbGF5YmFja1RhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFM0RGRDAxQTlFNzg2NTAwNzY0Q0E4IC8qIEFWUGxh
eWJhY2tUYXJnZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwN0U5RTEyRTE4RjVFMjc2MDAxMUEzQTQgLyogSW5iYW5kTWV0YWRhdGFUZXh0VHJh
Y2tQcml2YXRlQVZGLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwN0U5RTEyRDE4RjVFMjc2MDAxMUEzQTQgLyogSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlQVZGLmggKi87IH07CiAJCTA3RTlFMTMwMThGNjJCMzcwMDExQTNBNCAvKiBJbmJhbmRN
ZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFOUUxMkYxOEY2MkIzNzAwMTFBM0E0IC8qIEluYmFuZE1l
dGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAgKi87IH07CisJCTA3RURDM0VFMUFBQ0I3NUQw
MDk4M0VCNSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RURDM0VEMUFBQ0I3NUQwMDk4M0VCNSAvKiBN
ZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcCAqLzsgfTsKIAkJMDdGOTQ0MTYxODY0RDA0NjAwNUQz
MUNCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEQUU4QzA4MTc0NkI5NTcwMDUzMkQ3OCAvKiBNZWRpYVNlc3Np
b25NYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMDdGQkRFMkMxOEZFRDE3ODAwMUE3Q0ZGIC8qIEpTRGF0YUN1ZUN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0ZCREUyQjE4RkVE
MTc4MDAxQTdDRkYgLyogSlNEYXRhQ3VlQ3VzdG9tLmNwcCAqLzsgfTsKIAkJMDdGRTk5REMxODgw
N0E3RDAwMjU2NjQ4IC8qIEhUTUxNZWRpYVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdGRTk5REExODgwN0E3RDAwMjU2NjQ4IC8qIEhU
TUxNZWRpYVNlc3Npb24uY3BwICovOyB9OwpAQCAtNTY4Myw3ICs1Njg3LDYgQEAKIAkJQ0Q1Mzkz
RDQxNzVFMDE4NjAwQzA3MTIzIC8qIEpTTWVtb3J5SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1MzkzRDIxNzVFMDE4NjAwQzA3MTIzIC8qIEpT
TWVtb3J5SW5mby5oICovOyB9OwogCQlDRDU0QTc2MjE4MEY5RjcwMDBCMDc2QzkgLyogQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1NEE3NjAxODBGOUY3MDAwQjA3NkM5IC8qIEF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcCAqLzsgfTsKIAkJQ0Q1NEE3NjMxODBG
OUY3MDAwQjA3NkM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDU0QTc2MTE4MEY5
RjcwMDBCMDc2QzkgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCAqLzsg
fTsKLQkJQ0Q1NERFNDcxNzQ2OEI2RjAwNUU1QjM2IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1NERF
NDUxNzQ2OEI2RjAwNUU1QjM2IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwICovOyB9Owog
CQlDRDU0REU0QjE3NDY5QzZEMDA1RTVCMzYgLyogQXVkaW9TZXNzaW9uTWFjLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENTRERTQ5MTc0NjlDNkQw
MDVFNUIzNiAvKiBBdWRpb1Nlc3Npb25NYWMuY3BwICovOyB9OwogCQlDRDU1OTY5MTE0NzVCNjc4
MDAxRDBCRDAgLyogQXVkaW9GaWxlUmVhZGVySU9TLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENTU5NjhGMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRp
b0ZpbGVSZWFkZXJJT1MuY3BwICovOyB9OwogCQlDRDU1OTY5MjE0NzVCNjc4MDAxRDBCRDAgLyog
QXVkaW9GaWxlUmVhZGVySU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDU1OTY5MDE0NzVCNjc4MDAxRDBCRDAgLyogQXVkaW9GaWxlUmVhZGVySU9T
LmggKi87IH07CkBAIC03MjY3LDYgKzcyNzAsNyBAQAogCQkwNzhFMDk0ODE3RDE3MDk2MDA0MjBB
QTEgLyogTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc4RTA5NDkxN0QxNzA5NjAwNDIwQUEx
IC8qIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwNzhFMDk0QTE3RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFT
dHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVk
aWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTA3OTIxNjUzMUFBNTYwQUEwMEEzQzA0OSAvKiBBVlBsYXliYWNrVGFyZ2V0UGlja2Vy
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFWUGxheWJhY2tUYXJn
ZXRQaWNrZXJDbGllbnQuaDsgcGF0aCA9IGdyYXBoaWNzL0FWUGxheWJhY2tUYXJnZXRQaWNrZXJD
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc5NDE3OEYxNjZFODU1RjAw
OTQxNkMyIC8qIEluYmFuZFRleHRUcmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbmJhbmRUZXh0VHJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwNzk0MTc5MDE2NkU4NTVGMDA5NDE2QzIgLyogSW5iYW5kVGV4dFRyYWNrLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluYmFuZFRleHRUcmFjay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwNzk0MTc5MzE2NkVBMDRFMDA5NDE2QzIgLyogSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MzQ3LDgg
KzczNTEsMTEgQEAKIAkJMDdEQzVGRDMxN0QzRUVFOTAwOTlGODkwIC8qIEpTUlRDU3RhdHNSZXNw
b25zZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JU
Q1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
N0UxMTZCMDE0ODlDOUExMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdXN0b20uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUZXh0VHJhY2tDdXN0b20uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0UxMTcwNjE0ODlFQkVCMDBFQzVBQ0UgLyogSlNU
ZXh0VHJhY2tDdWVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwN0UzREZEMDFBOUU3ODY1MDA3NjRDQTggLyogQVZQbGF5YmFja1RhcmdldC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBVlBsYXliYWNrVGFyZ2V0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTA3RTNERkQyMUE5RTc4QTUwMDc2NENBOCAvKiBBVlBsYXliYWNr
VGFyZ2V0TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQVZQ
bGF5YmFja1RhcmdldE1hYy5tbTsgcGF0aCA9IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9BVlBsYXliYWNrVGFyZ2V0TWFjLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJ
CTA3RTlFMTJEMThGNUUyNzYwMDExQTNBNCAvKiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZh
dGVBVkYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5iYW5kTWV0YWRhdGFU
ZXh0VHJhY2tQcml2YXRlQVZGLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RTlF
MTJGMThGNjJCMzcwMDExQTNBNCAvKiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5iYW5kTWV0YWRhdGFU
ZXh0VHJhY2tQcml2YXRlQVZGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdF
REMzRUQxQUFDQjc1RDAwOTgzRUI1IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RkJERTJCMThGRUQxNzgwMDFBN0NG
RiAvKiBKU0RhdGFDdWVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNEYXRhQ3VlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDdGRTk5REExODgwN0E3RDAwMjU2NjQ4IC8qIEhUTUxNZWRpYVNlc3Npb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTE1lZGlhU2Vzc2lvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RkU5OURCMTg4MDdBN0QwMDI1NjY0OCAvKiBIVE1M
TWVkaWFTZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxNZWRp
YVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMTg2LDcgKzEzMTkz
LDYgQEAKIAkJQ0Q1MzkzRDIxNzVFMDE4NjAwQzA3MTIzIC8qIEpTTWVtb3J5SW5mby5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lbW9yeUluZm8uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q1NEE3NjAxODBGOUY3MDAwQjA3NkM5IC8qIEF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcDsgcGF0aCA9
IG9iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRDU0QTc2MTE4MEY5RjcwMDBCMDc2QzkgLyogQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDsgcGF0aCA9IG9iamMv
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQ0Q1NERFNDUxNzQ2OEI2RjAwNUU1QjM2IC8qIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTZXNz
aW9uTWFuYWdlck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENTRERTQ5
MTc0NjlDNkQwMDVFNUIzNiAvKiBBdWRpb1Nlc3Npb25NYWMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9TZXNzaW9uTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0Q1NTk2OEYxNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRl
cklPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBdWRpb0ZpbGVS
ZWFkZXJJT1MuY3BwOyBwYXRoID0gaW9zL0F1ZGlvRmlsZVJlYWRlcklPUy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENTU5NjkwMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0Zp
bGVSZWFkZXJJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQXVkaW9GaWxl
UmVhZGVySU9TLmg7IHBhdGggPSBpb3MvQXVkaW9GaWxlUmVhZGVySU9TLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yMDU0OSw2ICsyMDU1NSw3IEBACiAJCUIyNzUzNTQ5MEIwNTM4
MTQwMDJDRTY0RiAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTA3RTNERkQyMUE5RTc4QTUwMDc2NENBOCAvKiBBVlBsYXliYWNrVGFyZ2V0TWFj
Lm1tICovLAogCQkJCUVERTNBNEZGMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oICovLAog
CQkJCUIyNzUzNTRBMEIwNTM4MTQwMDJDRTY0RiAvKiBDb2xvck1hYy5tbSAqLywKIAkJCQkzN0My
MzYwRTEwOTdFRTc3MDBFRjlGNzIgLyogQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCAqLywKQEAg
LTIwNTk5LDYgKzIwNjA2LDcgQEAKIAkJCQlGQkMyMjBERDEyMzdGQkVCMDBCQ0Y3ODggLyogb3Bl
bmdsICovLAogCQkJCTM3MjE0OTMzMThGMEI2RDYwMDE1NkVEQyAvKiBvcGVudHlwZSAqLywKIAkJ
CQk0OUU5MTFCMjBFRjg2RDI3MDA5RDBDQUYgLyogdHJhbnNmb3JtcyAqLywKKwkJCQkwN0UzREZE
MDFBOUU3ODY1MDA3NjRDQTggLyogQVZQbGF5YmFja1RhcmdldC5oICovLAogCQkJCTQ5MDcwN0U0
MTIxOUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5jcHAgKi8sCiAJCQkJNDkwNzA3
RTUxMjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmggKi8sCiAJCQkJQkVGMjlF
RTkxNzE1REQwOTAwQzRCNEM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlLmggKi8sCkBAIC0yMTUxNyw2
ICsyMTUyNSw3IEBACiAJCUJDRjFBNUJBMDk3ODMyMDkwMDYxQTEyMyAvKiBwbGF0Zm9ybSAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMDc5MjE2NTMxQUE1
NjBBQTAwQTNDMDQ5IC8qIEFWUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQuaCAqLywKIAkJCQk0
OUU5MTJBNDBFRkFDOEU2MDA5RDBDQUYgLyogYW5pbWF0aW9uICovLAogCQkJCUZEMzE2MDQwMTJC
MDI2QTMwMEMxQTM1OSAvKiBhdWRpbyAqLywKIAkJCQkxQUU0MkY2NzBBQTRCOENCMDBDODYxMkQg
LyogY2YgKi8sCkBAIC0yMzQwNyw2ICsyMzQxNiw3IEBACiAJCUZEMzE2MEIwMTJCMDI3MDcwMEMx
QTM1OSAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCTA3RURDM0VEMUFBQ0I3NUQwMDk4M0VCNSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNw
cCAqLywKIAkJCQlGRDMxNjBCNTEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9CdXNNYWMubW0gKi8s
CiAJCQkJRkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuY3Bw
ICovLAogCQkJCUZEMzE2MEI3MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFj
LmggKi8sCkBAIC0yMzQxOCw3ICsyMzQyOCw2IEBACiAJCQkJQ0RDNzM0MTIxOTc3ODk2QzAwNDZC
RkM1IC8qIENBUmluZ0J1ZmZlci5jcHAgKi8sCiAJCQkJQ0RDNzM0MTMxOTc3ODk2QzAwNDZCRkM1
IC8qIENBUmluZ0J1ZmZlci5oICovLAogCQkJCUZEMzE2MEJBMTJCMDI3MkEwMEMxQTM1OSAvKiBG
RlRGcmFtZU1hYy5jcHAgKi8sCi0JCQkJQ0Q1NERFNDUxNzQ2OEI2RjAwNUU1QjM2IC8qIE1lZGlh
U2Vzc2lvbk1hbmFnZXJNYWMuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjM3MjMsNiArMjM3MzIsNyBAQAogCQkJCUJDQjE2QzFD
MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE5
RkJENUYxNUQyRjQ2NDAwOTY0MEE2IC8qIENhY2hlZEltYWdlQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MTAxODQ2OTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMDdFM0RGRDExQTlFNzg2NTAwNzY0Q0E4IC8qIEFWUGxheWJhY2tUYXJnZXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUQwRURBNzc1MTQzRTMwM0MwMDI4RTM4MyAvKiBDYWNoZWRS
YXdSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCNTMzNDkxNzE3REVFMzAwRjIwNUY5
IC8qIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0IxNkMy
MDA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLApAQCAt
MjYxODgsNiArMjYxOTgsNyBAQAogCQkJCTkzOTFBOTkxMTYyNzQ2Q0IwMDI5NzMzMCAvKiBTY3Jv
bGxpbmdDb29yZGluYXRvck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDMzhCRkYxNjQ0NzND
NzAwMDkxRUIyIC8qIFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkVBM0U3QjE5MUIyRkM1MDAwRjFCNTUgLyogU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGlu
Z05vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3OTIxNjU1MUFBNTYwQUEwMEEzQzA0OSAvKiBB
VlBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzFDQkQw
RDE2MUE0NEU5MDBFNEM4NzQgLyogU2Nyb2xsaW5nU3RhdGVOb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkVBM0U4NDE5MUIzMUJGMDAwRjFCNTUgLyogU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Nj
cm9sbGluZ05vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMUNCRDBGMTYxQTQ0RTkwMEU0Qzg3
NCAvKiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjcz
NjAsNiArMjczNzEsNyBAQAogCQkJCUZEMzE1RkY4MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb0J1
ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNUZGQjEyQjAyNjc2MDBDMUEzNTkgLyog
QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDdCMTJC
MDI2RjcwMEMxQTM1OSAvKiBBdWRpb0J1cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwN0VEQzNF
RTFBQUNCNzVEMDA5ODNFQjUgLyogTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlGRDMxNjBCQjEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9CdXNNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQlGRDMxNjA3RDEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9DaGFubmVs
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDA0MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRp
b0NvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzk0MCw2ICsyNzk1Miw3IEBACiAJCQkJ
OUJBQjZDNkQxMjU1MDYzMTAwMTYyNkQ0IC8qIEVkaXRpbmdTdHlsZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0QjMwNDNDQzBBRTAzNzNCMDBBODI2NDcgLyogRWRpdG9yLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTkzQTM4QjRCMEQwRTU4MDgwMDY4NzJDMiAvKiBFZGl0b3JDb21tYW5kLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTA3NjBDMTdBMUFBOEZDN0QwMDlFRDdCOCAvKiBBVlBsYXliYWNr
VGFyZ2V0TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRkVEMTNEM0EwQ0VBOTM0NjAwRDg5NDY2
IC8qIEVkaXRvcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUVENTAxREM2MEIyNDlGMjkwMEFF
MThEOSAvKiBFZGl0b3JNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEM0QTgwODA5RDU2MzI3
MDAwM0FDOEQgLyogRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5MTYyLDcgKzI5MTc1
LDYgQEAKIAkJCQkwNzBFMDkxQjE4NzVFRjcxMDAzQTFEM0MgLyogTWVkaWFTZXNzaW9uLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUNEQUU4QzA5MTc0NkI5NTcwMDUzMkQ3OCAvKiBNZWRpYVNlc3Np
b25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3NjM4QTlBMTg4NDQ4NzIwMEUxNUEx
QiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQ0Q1NERF
NDcxNzQ2OEI2RjAwNUU1QjM2IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0QzQTQ5NUUxN0E5RDAxQjAwMjc0RTQyIC8qIE1lZGlhU291cmNlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUNEQzhCNUE2MTgwNDc0RjcwMDE2RTY4NSAvKiBNZWRpYVNvdXJj
ZVByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q2MUZFNjcxNzk0QUFEQjAw
NDEwMUVCIC8qIE1lZGlhU291cmNlUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDE4MTMyOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOCw2ICsyMjgsMTAgQEAKICNp
bmNsdWRlIDxyZXBsYXkvSW5wdXRDdXJzb3IuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKKyNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCisjZW5k
aWYKKwogdXNpbmcgbmFtZXNwYWNlIFdURjsKIHVzaW5nIG5hbWVzcGFjZSBVbmljb2RlOwogCkBA
IC02MzU0LDQgKzYzNTgsODAgQEAgdm9pZCBEb2N1bWVudDo6c2V0SW5wdXRDdXJzb3IoUGFzc1Jl
ZlB0cgogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQor
dm9pZCBEb2N1bWVudDo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IEhUTUxNZWRpYUVs
ZW1lbnQmIGVsZW1lbnQpCit7CisgICAgUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKKyAgICBp
ZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworI2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBG
SVhNRTogcmVmYWN0b3IgaU9TIGltcGxlbWVudGF0aW9uLgorICAgIHBhZ2UtPmNocm9tZSgpLmNs
aWVudCgpLnNob3dQbGF5YmFja1RhcmdldFBpY2tlcihpczxIVE1MVmlkZW9FbGVtZW50PihlbGVt
ZW50KSk7CisjZWxzZQorICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnNob3dQbGF5YmFja1Rh
cmdldFBpY2tlcih2aWV3KCktPmxhc3RLbm93bk1vdXNlUG9zaXRpb24oKSwgaXM8SFRNTFZpZGVv
RWxlbWVudD4oZWxlbWVudCkpOworI2VuZGlmCit9CisKK3ZvaWQgRG9jdW1lbnQ6OmFkZFBsYXli
YWNrVGFyZ2V0UGlja2VyQ2xpZW50KEFWUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQmIGNsaWVu
dCkKK3sKKyAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9wbGF5YmFja1RhcmdldENsaWVudHMuYWRkKCZjbGllbnQp
OworCisgICAgY2xpZW50LmRpZENob29zZVBsYXliYWNrVGFyZ2V0KHBhZ2UtPnBsYXliYWNrVGFy
Z2V0KCkpOworICAgIGNsaWVudC5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5n
ZShwYWdlLT5oYXNXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkpOworfQorCit2b2lkIERvY3VtZW50
OjpyZW1vdmVQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudChBVlBsYXliYWNrVGFyZ2V0UGlja2Vy
Q2xpZW50JiBjbGllbnQpCit7CisgICAgUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKKyAgICBp
ZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGxheWJhY2tUYXJnZXRDbGllbnRz
LnJlbW92ZSgmY2xpZW50KTsKKyAgICBjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0b3Jpbmco
KTsKK30KKwordm9pZCBEb2N1bWVudDo6Y29uZmlndXJlUGxheWJhY2tUYXJnZXRNb25pdG9yaW5n
KCkKK3sKKyAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgcGFnZS0+Y29uZmlndXJlUGxheWJhY2tUYXJnZXRNb25pdG9y
aW5nKCk7Cit9CisKK2Jvb2wgRG9jdW1lbnQ6OnJlcXVpcmVzUGxheWJhY2tUYXJnZXRSb3V0ZU1v
bml0b3JpbmcoKQoreworICAgIGZvciAoYXV0byB0YXJnZXRDbGllbnQgOiBtX3BsYXliYWNrVGFy
Z2V0Q2xpZW50cykgeworICAgICAgICBpZiAodGFyZ2V0Q2xpZW50LT5yZXF1aXJlc1BsYXliYWNr
VGFyZ2V0Um91dGVNb25pdG9yaW5nKCkpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3ZvaWQgRG9jdW1lbnQ6OnBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKGJv
b2wgYXZhaWxhYmxlKQoreworICAgIGlmIChtX3BsYXliYWNrVGFyZ2V0c0F2YWlsYWJsZSA9PSBh
dmFpbGFibGUpCisgICAgICAgIHJldHVybjsKKyAgICBtX3BsYXliYWNrVGFyZ2V0c0F2YWlsYWJs
ZSA9IGF2YWlsYWJsZTsKKworICAgIGZvciAoYXV0byBjbGllbnQgOiBtX3BsYXliYWNrVGFyZ2V0
Q2xpZW50cykKKyAgICAgICAgY2xpZW50LT5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURp
ZENoYW5nZShhdmFpbGFibGUpOworfQorCit2b2lkIERvY3VtZW50OjpkaWRDaG9vc2VQbGF5YmFj
a1RhcmdldChBVlBsYXliYWNrVGFyZ2V0JiBkZXZpY2UpCit7CisgICAgZm9yIChhdXRvIGNsaWVu
dCA6IG1fcGxheWJhY2tUYXJnZXRDbGllbnRzKQorICAgICAgICBjbGllbnQtPmRpZENob29zZVBs
YXliYWNrVGFyZ2V0KGRldmljZSk7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gMTgxMzI5KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDkgKzY2LDEyIEBA
IGNsYXNzIElucHV0Q3Vyc29yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFWUGxh
eWJhY2tUYXJnZXRQaWNrZXJDbGllbnQ7CiBjbGFzcyBBWE9iamVjdENhY2hlOwogY2xhc3MgQXR0
cjsKIGNsYXNzIEF1ZGlvUHJvZHVjZXI7CitjbGFzcyBBVlBsYXliYWNrVGFyZ2V0OworY2xhc3Mg
QVZQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudDsKIGNsYXNzIENEQVRBU2VjdGlvbjsKIGNsYXNz
IENTU0ZvbnRTZWxlY3RvcjsKIGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb247CkBAIC0xMjE0LDYg
KzEyMTcsMTYgQEAgcHVibGljOgogICAgIHZvaWQgcGFnZU11dGVkU3RhdGVEaWRDaGFuZ2UoKTsK
ICAgICBXZWFrUHRyPERvY3VtZW50PiBjcmVhdGVXZWFrUHRyKCkgeyByZXR1cm4gbV93ZWFrRmFj
dG9yeS5jcmVhdGVXZWFrUHRyKCk7IH0KIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpCisgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoY29uc3QgSFRNTE1lZGlh
RWxlbWVudCYpOworICAgIHZvaWQgZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoQVZQbGF5YmFja1Rh
cmdldCYpOworICAgIHZvaWQgYWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoQVZQbGF5YmFj
a1RhcmdldFBpY2tlckNsaWVudCYpOworICAgIHZvaWQgcmVtb3ZlUGxheWJhY2tUYXJnZXRQaWNr
ZXJDbGllbnQoQVZQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCYpOworICAgIGJvb2wgcmVxdWly
ZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZygpOworICAgIHZvaWQgY29uZmlndXJlUGxh
eWJhY2tUYXJnZXRNb25pdG9yaW5nKCk7CisgICAgdm9pZCBwbGF5YmFja1RhcmdldEF2YWlsYWJp
bGl0eURpZENoYW5nZShib29sKTsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgZW51bSBDb25z
dHJ1Y3Rpb25GbGFncyB7IFN5bnRoZXNpemVkID0gMSwgTm9uUmVuZGVyZWRQbGFjZWhvbGRlciA9
IDEgPDwgMSB9OwogICAgIERvY3VtZW50KEZyYW1lKiwgY29uc3QgVVJMJiwgdW5zaWduZWQgPSBE
ZWZhdWx0RG9jdW1lbnRDbGFzcywgdW5zaWduZWQgY29uc3RydWN0aW9uRmxhZ3MgPSAwKTsKQEAg
LTE2NTEsNiArMTY2NCwxMSBAQCBwcml2YXRlOgogCiAgICAgSGFzaFNldDxBdWRpb1Byb2R1Y2Vy
Kj4gbV9hdWRpb1Byb2R1Y2VyczsKICAgICBib29sIG1faXNQbGF5aW5nQXVkaW87CisKKyNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorICAgIEhhc2hTZXQ8V2ViQ29yZTo6QVZQ
bGF5YmFja1RhcmdldFBpY2tlckNsaWVudCo+IG1fcGxheWJhY2tUYXJnZXRDbGllbnRzOworICAg
IGJvb2wgbV9wbGF5YmFja1RhcmdldHNBdmFpbGFibGUgeyBmYWxzZSB9OworI2VuZGlmCiB9Owog
CiBpbmxpbmUgdm9pZCBEb2N1bWVudDo6bm90aWZ5UmVtb3ZlUGVuZGluZ1NoZWV0SWZOZWVkZWQo
KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lv
biAxODEzMjkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MjYsNiArNDI2LDggQEAgSFRNTE1lZGlhRWxlbWVudDo6fkhUTUxN
ZWRpYUVsZW1lbnQoKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlZ2lzdGVyV2l0aERvY3Vt
ZW50KERvY3VtZW50JiBkb2N1bWVudCkKIHsKKyAgICBtX21lZGlhU2Vzc2lvbi0+cmVnaXN0ZXJX
aXRoRG9jdW1lbnQoZG9jdW1lbnQpOworCiAgICAgaWYgKG1faXNXYWl0aW5nVW50aWxNZWRpYUNh
blN0YXJ0KQogICAgICAgICBkb2N1bWVudC5hZGRNZWRpYUNhblN0YXJ0TGlzdGVuZXIodGhpcyk7
CiAKQEAgLTQ1MSw2ICs0NTMsOCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlZ2lzdGVyV2l0
aERvY3VtCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dW5yZWdpc3RlcldpdGhEb2N1bWVudChE
b2N1bWVudCYgZG9jdW1lbnQpCiB7CisgICAgbV9tZWRpYVNlc3Npb24tPnVucmVnaXN0ZXJXaXRo
RG9jdW1lbnQoZG9jdW1lbnQpOworCiAgICAgaWYgKG1faXNXYWl0aW5nVW50aWxNZWRpYUNhblN0
YXJ0KQogICAgICAgICBkb2N1bWVudC5yZW1vdmVNZWRpYUNhblN0YXJ0TGlzdGVuZXIodGhpcyk7
CiAKQEAgLTI1MjQsNiArMjUyOCw5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVmcmVzaENh
Y2hlZFRpbWUKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjppbnZhbGlkYXRlQ2FjaGVkVGltZSgp
IGNvbnN0CiB7CisgICAgaWYgKCFtX3BsYXllci0+bWF4aW11bUR1cmF0aW9uVG9DYWNoZU1lZGlh
VGltZSgpKQorICAgICAgICByZXR1cm47CisKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgaWYgKG1f
Y2FjaGVkVGltZS5pc1ZhbGlkKCkpCiAgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1l
bnQ6OmludmFsaWRhdGVDYWNoZWRUaW1lKCVwKSIsIHRoaXMpOwpAQCAtNDkxMSw2ICs0OTE4LDEz
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZW5xdWV1ZVBsYXliYWNrVGEKICAgICBldmVudC0+
c2V0VGFyZ2V0KHRoaXMpOwogICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChldmVu
dC5yZWxlYXNlKCkpOwogfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFdpcmVsZXNzUGxh
eWJhY2tUYXJnZXQoY29uc3QgQVZQbGF5YmFja1RhcmdldCYgZGV2aWNlKQoreworICAgIExPRyhN
ZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoJXApIiwg
dGhpcyk7CisgICAgaWYgKG1fcGxheWVyKQorICAgICAgICBtX3BsYXllci0+c2V0V2lyZWxlc3NQ
bGF5YmFja1RhcmdldChkZXZpY2UpOworfQogI2VuZGlmCiAKIGRvdWJsZSBIVE1MTWVkaWFFbGVt
ZW50OjptaW5GYXN0UmV2ZXJzZVJhdGUoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgJKHJldmlzaW9uIDE4MTMyOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzU3LDcgKzM1Nyw5IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNh
cHR1cmUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0
dXJlKSBvdmVycmlkZTsKKwogICAgIHZpcnR1YWwgdm9pZCB3aXJlbGVzc1JvdXRlc0F2YWlsYWJs
ZURpZENoYW5nZSgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRXaXJlbGVzc1BsYXli
YWNrVGFyZ2V0KGNvbnN0IEFWUGxheWJhY2tUYXJnZXQmKSBvdmVycmlkZTsKICNlbmRpZgogCiAg
ICAgLy8gRXZlbnRUYXJnZXQgZnVuY3Rpb24uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYVNlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDE4MTMyOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhU2Vzc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDkgQEAK
IAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcu
aCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtNzIsMTAgKzc0LDIzIEBAIHN0YXRpYyBjb25zdCBj
aGFyKiByZXN0cmljdGlvbk5hbWUoSFRNTE0KIEhUTUxNZWRpYVNlc3Npb246OkhUTUxNZWRpYVNl
c3Npb24oTWVkaWFTZXNzaW9uQ2xpZW50JiBjbGllbnQpCiAgICAgOiBNZWRpYVNlc3Npb24oY2xp
ZW50KQogICAgICwgbV9yZXN0cmljdGlvbnMoTm9SZXN0cmljdGlvbnMpCi0gICAgLCBtX2hhc1Bs
YXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzKGZhbHNlKQogewogfQogCit2b2lkIEhU
TUxNZWRpYVNlc3Npb246OnJlZ2lzdGVyV2l0aERvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkK
K3sKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorICAgIGRvY3VtZW50LmFk
ZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KCp0aGlzKTsKKyNlbmRpZgorfQorCit2b2lkIEhU
TUxNZWRpYVNlc3Npb246OnVucmVnaXN0ZXJXaXRoRG9jdW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50
KQoreworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisgICAgZG9jdW1lbnQu
cmVtb3ZlUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoKnRoaXMpOworI2VuZGlmCit9CisKIHZv
aWQgSFRNTE1lZGlhU2Vzc2lvbjo6YWRkQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3Ry
aWN0aW9ucyByZXN0cmljdGlvbikKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFTZXNzaW9u
OjphZGRCZWhhdmlvclJlc3RyaWN0aW9uIC0gYWRkaW5nICVzIiwgcmVzdHJpY3Rpb25OYW1lKHJl
c3RyaWN0aW9uKSk7CkBAIC0xNzksMTcgKzE5NCwyMyBAQCB2b2lkIEhUTUxNZWRpYVNlc3Npb246
OnNob3dQbGF5YmFja1RhcmdlCiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgZWxlbWVudC5kb2N1
bWVudCgpLmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuc2hvd1BsYXliYWNrVGFy
Z2V0UGlja2VyKGVsZW1lbnQuaGFzVmlkZW8oKSk7CisjZWxzZQorICAgIGVsZW1lbnQuZG9jdW1l
bnQoKS5zaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoZWxlbWVudCk7CiAjZW5kaWYKKworICAgIE1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zZXNzaW9uSGFzUmVxdWVzdGVkUGxh
eWJhY2tUYXJnZXRQaWNrZXIoKnRoaXMpOwogfQogCi1ib29sIEhUTUxNZWRpYVNlc3Npb246Omhh
c1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQp
IGNvbnN0Citib29sIEhUTUxNZWRpYVNlc3Npb246Omhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRz
KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdAogewotICAgIFVOVVNFRF9QQVJBTShlbGVt
ZW50KTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgLy8gRklYTUU6IGNvbnNvbGlkYXRlIE1hYyBh
bmQgaU9TIGltcGxlbWVudGF0aW9ucworICAgIG1faGFzUGxheWJhY2tUYXJnZXRzID0gTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJs
ZSgpOworI2VuZGlmCiAKLSAgICBib29sIGhhc1RhcmdldHMgPSBNZWRpYVNlc3Npb25NYW5hZ2Vy
OjpzaGFyZWRNYW5hZ2VyKCkuaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlKCk7Ci0gICAgTE9H
KE1lZGlhLCAiSFRNTE1lZGlhU2Vzc2lvbjo6aGFzV2lyZWxlc3NQbGF5YmFja1RhcmdldHMgLSBy
ZXR1cm5pbmcgJXMiLCBoYXNUYXJnZXRzID8gIlRSVUUiIDogIkZBTFNFIik7CisgICAgTE9HKE1l
ZGlhLCAiSFRNTE1lZGlhU2Vzc2lvbjo6aGFzV2lyZWxlc3NQbGF5YmFja1RhcmdldHMgLSByZXR1
cm5pbmcgJXMiLCBtX2hhc1BsYXliYWNrVGFyZ2V0cyA/ICJUUlVFIiA6ICJGQUxTRSIpOwogCi0g
ICAgcmV0dXJuIGhhc1RhcmdldHM7CisgICAgcmV0dXJuIG1faGFzUGxheWJhY2tUYXJnZXRzOwog
fQogCiBib29sIEhUTUxNZWRpYVNlc3Npb246OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVk
KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CkBAIC0yNDQsNyArMjY1LDMx
IEBAIHZvaWQgSFRNTE1lZGlhU2Vzc2lvbjo6c2V0SGFzUGxheWJhY2tUYXIKICAgICBVTlVTRURf
UEFSQU0oZWxlbWVudCk7CiAKICAgICBtX2hhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlz
dGVuZXJzID0gaGFzTGlzdGVuZXJzOworCisjaWYgUExBVEZPUk0oSU9TKQogICAgIE1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5jb25maWd1cmVXaXJlTGVzc1RhcmdldE1vbml0
b3JpbmcoKTsKKyNlbHNlCisgICAgZWxlbWVudC5kb2N1bWVudCgpLmNvbmZpZ3VyZVBsYXliYWNr
VGFyZ2V0TW9uaXRvcmluZygpOworI2VuZGlmCit9CisKK3ZvaWQgSFRNTE1lZGlhU2Vzc2lvbjo6
ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoQVZQbGF5YmFja1RhcmdldCYgZGV2aWNlKQoreworICAg
IGNsaWVudCgpLnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoZGV2aWNlKTsKK30KKwordm9pZCBI
VE1MTWVkaWFTZXNzaW9uOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShi
b29sIGhhc1RhcmdldHMpIGNvbnN0Cit7CisgICAgaWYgKG1faGFzUGxheWJhY2tUYXJnZXRzID09
IGhhc1RhcmdldHMpCisgICAgICAgIHJldHVybjsKKworICAgIG1faGFzUGxheWJhY2tUYXJnZXRz
ID0gaGFzVGFyZ2V0czsKKyAgICBjbGllbnQoKS53aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENo
YW5nZSgpOworfQorCitib29sIEhUTUxNZWRpYVNlc3Npb246OnJlcXVpcmVzUGxheWJhY2tUYXJn
ZXRSb3V0ZU1vbml0b3JpbmcoKSBjb25zdAoreworICAgIHJldHVybiBtX2hhc1BsYXliYWNrVGFy
Z2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5oCShyZXZpc2lvbiAxODEzMjkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYVNlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw2ICszMyw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBIVE1MTWVk
aWFFbGVtZW50OwogY2xhc3MgU291cmNlQnVmZmVyOwogCkBAIC00MSwxNCArNDIsMTcgQEAgcHVi
bGljOgogICAgIGV4cGxpY2l0IEhUTUxNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uQ2xpZW50Jik7
CiAgICAgdmlydHVhbCB+SFRNTE1lZGlhU2Vzc2lvbigpIHsgfQogCisgICAgdm9pZCByZWdpc3Rl
cldpdGhEb2N1bWVudChEb2N1bWVudCYpOworICAgIHZvaWQgdW5yZWdpc3RlcldpdGhEb2N1bWVu
dChEb2N1bWVudCYpOworCiAgICAgYm9vbCBwbGF5YmFja1Blcm1pdHRlZChjb25zdCBIVE1MTWVk
aWFFbGVtZW50JikgY29uc3Q7CiAgICAgYm9vbCBkYXRhTG9hZGluZ1Blcm1pdHRlZChjb25zdCBI
VE1MTWVkaWFFbGVtZW50JikgY29uc3Q7CiAgICAgYm9vbCBmdWxsc2NyZWVuUGVybWl0dGVkKGNv
bnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKICAgICBib29sIHBhZ2VBbGxvd3NEYXRhTG9h
ZGluZyhjb25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7CiAgICAgYm9vbCBwYWdlQWxsb3dz
UGxheWJhY2tBZnRlclJlc3VtaW5nKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKKwog
I2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgYm9vbCBzaG93aW5nUGxh
eWJhY2tUYXJnZXRQaWNrZXJQZXJtaXR0ZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0
OwotCiAgICAgYm9vbCBjdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzKGNvbnN0IEhUTUxN
ZWRpYUVsZW1lbnQmKSBjb25zdDsKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihj
b25zdCBIVE1MTWVkaWFFbGVtZW50Jik7CiAgICAgYm9vbCBoYXNXaXJlbGVzc1BsYXliYWNrVGFy
Z2V0cyhjb25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7CkBAIC01Nyw3ICs2MSwxMyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChjb25zdCBI
VE1MTWVkaWFFbGVtZW50JiwgYm9vbCk7CiAKICAgICB2b2lkIHNldEhhc1BsYXliYWNrVGFyZ2V0
QXZhaWxhYmlsaXR5TGlzdGVuZXJzKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmLCBib29sKTsKKwor
ICAgIC8vIEFWUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2hvb3NlUGxheWJhY2tUYXJnZXQoQVZQbGF5YmFja1RhcmdldCYpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShib29sKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNQbGF5YmFja1RhcmdldFJv
dXRlTW9uaXRvcmluZygpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCisKICAgICBib29sIHJlcXVp
cmVzRnVsbHNjcmVlbkZvclZpZGVvUGxheWJhY2soY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYWxsb3dzQWx0ZXJuYXRlRnVsbHNjcmVlbihj
b25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7CiAgICAgTWVkaWFQbGF5ZXI6OlByZWxvYWQg
ZWZmZWN0aXZlUHJlbG9hZEZvckVsZW1lbnQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0
OwpAQCAtODcsMTAgKzk3LDEzIEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIHZp
cnR1YWwgYm9vbCByZXF1aXJlc1BsYXliYWNrVGFyZ2V0Um91dGVNb25pdG9yaW5nKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9oYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVy
czsgfQogCiAgICAgQmVoYXZpb3JSZXN0cmljdGlvbnMgbV9yZXN0cmljdGlvbnM7Ci0gICAgYm9v
bCBtX2hhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzOworCisjaWYgRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyAgICBib29sIG1faGFzUGxheWJhY2tUYXJnZXRB
dmFpbGFiaWxpdHlMaXN0ZW5lcnMgeyBmYWxzZSB9OworICAgIG11dGFibGUgYm9vbCBtX2hhc1Bs
YXliYWNrVGFyZ2V0cyB7IGZhbHNlIH07CisjZW5kaWYKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMTgxMzI5KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQ1LDYgKzQ0NSwxMiBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZl
bnRzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgYm9vbCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0
aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzdG9w
TW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpIHsgfQorI2VuZGlmCisKIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIH5DaHJvbWVDbGllbnQoKSB7IH0KIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJ
KHJldmlzaW9uIDE4MTMyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwNCw2ICsxMDQsMTEgQEAKICNpbmNsdWRlIDxyZXBsYXkvSW5wdXRDdXJz
b3IuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyNp
bmNsdWRlICJBVlBsYXliYWNrVGFyZ2V0LmgiCisjaW5jbHVkZSAiQVZQbGF5YmFja1RhcmdldFBp
Y2tlckNsaWVudC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIEhh
c2hTZXQ8UGFnZSo+KiBhbGxQYWdlczsKQEAgLTE2OTEsNCArMTY5Niw0MSBAQCB2b2lkIFBhZ2U6
OnNldFNlc3Npb25JRChTZXNzaW9uSUQgc2Vzc2lvCiAgICAgICAgIHZpZXctPnByaXZhdGVCcm93
c2luZ1N0YXRlQ2hhbmdlZChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7CiB9CiAKKyNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQordm9pZCBQYWdlOjpkaWRDaG9vc2VQbGF5YmFj
a1RhcmdldChBVlBsYXliYWNrVGFyZ2V0JiB0YXJnZXQpCit7CisgICAgbV9wbGF5YmFja1Rhcmdl
dCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZQbGF5YmFja1RhcmdldD4odGFyZ2V0LmRldmljZVBpY2tl
ckNvbnRleHQoKSk7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1l
OyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCisgICAgICAgIGZyYW1lLT5k
b2N1bWVudCgpLT5kaWRDaG9vc2VQbGF5YmFja1RhcmdldCh0YXJnZXQpOworfQorCit2b2lkIFBh
Z2U6OnBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKGJvb2wgYXZhaWxhYmxlKQor
eworICAgIG1faGFzV2lyZWxlc3NQbGF5YmFja1RhcmdldCA9IGF2YWlsYWJsZTsKKyAgICBmb3Ig
KEZyYW1lKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUo
KS50cmF2ZXJzZU5leHQoKSkKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnBsYXliYWNrVGFy
Z2V0QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKGF2YWlsYWJsZSk7Cit9CisKK3ZvaWQgUGFnZTo6Y29u
ZmlndXJlUGxheWJhY2tUYXJnZXRNb25pdG9yaW5nKCkKK3sKKyAgICBib29sIG1vbml0b3JpbmdS
ZXF1aXJlZCA9IGZhbHNlOworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgpOyBm
cmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGlm
IChmcmFtZS0+ZG9jdW1lbnQoKS0+cmVxdWlyZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmlu
ZygpKSB7CisgICAgICAgICAgICBtb25pdG9yaW5nUmVxdWlyZWQgPSB0cnVlOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobV9yZXF1aXJlc1BsYXliYWNr
VGFyZ2V0TW9uaXRvcmluZyA9PSBtb25pdG9yaW5nUmVxdWlyZWQpCisgICAgICAgIHJldHVybjsK
KyAgICBtX3JlcXVpcmVzUGxheWJhY2tUYXJnZXRNb25pdG9yaW5nID0gbW9uaXRvcmluZ1JlcXVp
cmVkOworCisKKyAgICBpZiAobW9uaXRvcmluZ1JlcXVpcmVkKQorICAgICAgICBjaHJvbWUoKS5j
bGllbnQoKS5zdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKKyAgICBlbHNlCisg
ICAgICAgIGNocm9tZSgpLmNsaWVudCgpLnN0b3BNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCk7
Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJ
KHJldmlzaW9uIDE4MTMyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIERlYnVnZ2VyOwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRDbGllbnQ7CitjbGFzcyBBVlBsYXliYWNrVGFy
Z2V0OwogY2xhc3MgQmFja0ZvcndhcmRDb250cm9sbGVyOwogY2xhc3MgQmFja0ZvcndhcmRDbGll
bnQ7CiBjbGFzcyBDaHJvbWU7CkBAIC03Niw2ICs3Nyw3IEBAIGNsYXNzIEZvY3VzQ29udHJvbGxl
cjsKIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2FkZXJDbGllbnQ7CiBjbGFzcyBIaXN0b3J5
SXRlbTsKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBVc2VySW5wdXRCcmlkZ2U7CiBj
bGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOwpAQCAtNDIy
LDYgKzQyNCwxNSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc011dGVkKCkgY29uc3QgeyByZXR1cm4g
bV9tdXRlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TXV0ZWQoYm9vbCk7CiAKKyNp
ZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorICAgIGJvb2wgaGFzV2lyZWxlc3NQ
bGF5YmFja1RhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzV2lyZWxlc3NQbGF5YmFja1Rhcmdl
dDsgfQorICAgIEFWUGxheWJhY2tUYXJnZXQmIHBsYXliYWNrVGFyZ2V0KCkgY29uc3QgeyByZXR1
cm4gKm1fcGxheWJhY2tUYXJnZXQuZ2V0KCk7IH0KKyAgICB2b2lkIGNvbmZpZ3VyZVBsYXliYWNr
VGFyZ2V0TW9uaXRvcmluZygpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRDaG9vc2VQ
bGF5YmFja1RhcmdldChBVlBsYXliYWNrVGFyZ2V0Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBwbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eURpZENoYW5nZShib29sKTsKKyNlbmRpZgorCiBw
cml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdEdyb3VwKCk7CiAKQEAgLTU4MSw2
ICs1OTIsMTIgQEAgcHJpdmF0ZToKIAogICAgIFNlc3Npb25JRCBtX3Nlc3Npb25JRDsKIAorI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisgICAgc3RkOjp1bmlxdWVfcHRyPEFW
UGxheWJhY2tUYXJnZXQ+IG1fcGxheWJhY2tUYXJnZXQ7CisgICAgYm9vbCBtX3JlcXVpcmVzUGxh
eWJhY2tUYXJnZXRNb25pdG9yaW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzV2lyZWxlc3NQ
bGF5YmFja1RhcmdldCB7IGZhbHNlIH07CisjZW5kaWYKKwogICAgIGJvb2wgbV9pc0Nsb3Npbmc7
CiAKICAgICBib29sIG1faXNQbGF5aW5nQXVkaW87CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDE4MTMyOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uOjp2aXNpYmlsaXR5Q2hhbmdlZCgp
CiAKIHZvaWQgTWVkaWFTZXNzaW9uOjpjbGllbnREYXRhQnVmZmVyaW5nVGltZXJGaXJlZCgpCiB7
Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uOjp2aXNpYmlsaXR5Q2hhbmdlZCglcCktIHZp
c2libGUgPSAlcyIsIHRoaXMsIG1fY2xpZW50LmVsZW1lbnRJc0hpZGRlbigpID8gImZhbHNlIiA6
ICJ0cnVlIik7CisgICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uOjpjbGllbnREYXRhQnVmZmVy
aW5nVGltZXJGaXJlZCglcCktIHZpc2libGUgPSAlcyIsIHRoaXMsIG1fY2xpZW50LmVsZW1lbnRJ
c0hpZGRlbigpID8gImZhbHNlIiA6ICJ0cnVlIik7CiAKICAgICB1cGRhdGVDbGllbnREYXRhQnVm
ZmVyaW5nKCk7CiAKQEAgLTIyMCwxMSArMjIwLDYgQEAgTWVkaWFTZXNzaW9uOjpEaXNwbGF5VHlw
ZSBNZWRpYVNlc3Npb246OgogICAgIHJldHVybiBtX2NsaWVudC5kaXNwbGF5VHlwZSgpOwogfQog
Ci12b2lkIE1lZGlhU2Vzc2lvbjo6d2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2UoKSBj
b25zdAotewotICAgIG1fY2xpZW50LndpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlKCk7
Ci19Ci0KIFN0cmluZyBNZWRpYVNlc3Npb25DbGllbnQ6Om1lZGlhU2Vzc2lvblRpdGxlKCkgY29u
c3QKIHsKICAgICByZXR1cm4gU3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9NZWRpYVNlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uaAkocmV2aXNpb24gMTgxMzI5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsMTEg
KzMwLDIwIEBACiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQor
I2luY2x1ZGUgIkFWUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQuaCIKKyNlbmRpZgorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFWUGxheWJhY2tUYXJnZXQ7CiBjbGFzcyBNZWRpYVNl
c3Npb25DbGllbnQ7CiAKLWNsYXNzIE1lZGlhU2Vzc2lvbiB7CitjbGFzcyBNZWRpYVNlc3Npb24K
KyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorICAgIDogcHVibGljIEFWUGxh
eWJhY2tUYXJnZXRQaWNrZXJDbGllbnQKKyNlbmRpZgorewogcHVibGljOgogICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8TWVkaWFTZXNzaW9uPiBjcmVhdGUoTWVkaWFTZXNzaW9uQ2xpZW50Jik7
CiAKQEAgLTk5LDkgKzEwOCw2IEBAIHB1YmxpYzoKICAgICBib29sIGNhblJlY2VpdmVSZW1vdGVD
b250cm9sQ29tbWFuZHMoKSBjb25zdDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9s
Q29tbWFuZChSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpOwogCi0gICAgdmlydHVhbCBib29sIHJl
cXVpcmVzUGxheWJhY2tUYXJnZXRSb3V0ZU1vbml0b3JpbmcoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZvaWQgd2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2UoKSBjb25zdDsK
LQogICAgIGVudW0gRGlzcGxheVR5cGUgewogICAgICAgICBOb3JtYWwsCiAgICAgICAgIEZ1bGxz
Y3JlZW4sCkBAIC0xMTEsNiArMTE3LDEzIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNIaWRkZW4o
KSBjb25zdDsKIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisgICAgLy8g
QVZQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VQ
bGF5YmFja1RhcmdldChBVlBsYXliYWNrVGFyZ2V0JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGV4
dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGJvb2wpIGNvbnN0IHsgfQorICAg
IHZpcnR1YWwgYm9vbCByZXF1aXJlc1BsYXliYWNrVGFyZ2V0Um91dGVNb25pdG9yaW5nKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgTWVkaWFTZXNz
aW9uQ2xpZW50JiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQogCkBAIC0xNTAs
NyArMTYzLDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBvdmVycmlkZUJhY2tncm91
bmRQbGF5YmFja1Jlc3RyaWN0aW9uKCkgY29uc3QgPSAwOwogCisjaWYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkKICAgICB2aXJ0dWFsIHZvaWQgd2lyZWxlc3NSb3V0ZXNBdmFpbGFi
bGVEaWRDaGFuZ2UoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0V2lyZWxlc3NQbGF5YmFja1Rh
cmdldChjb25zdCBBVlBsYXliYWNrVGFyZ2V0JikgeyB9CisjZW5kaWYKIAogcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgfk1lZGlhU2Vzc2lvbkNsaWVudCgpIHsgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAJKHJl
dmlzaW9uIDE4MTMyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vz
c2lvbk1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjg1LDE0ICsyODUsNiBAQCB2b2lk
IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uV2lsCiAgICAgfQogfQogCi12b2lkIE1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OndpcmVsZXNzUm91dGVzQXZhaWxhYmxlQ2hhbmdlZCgpCi17Ci0g
ICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFuYWdlcjo6d2lyZWxlc3NSb3V0ZXNBdmFpbGFi
bGVDaGFuZ2VkIik7Ci0gICAgVmVjdG9yPE1lZGlhU2Vzc2lvbio+IHNlc3Npb25zID0gbV9zZXNz
aW9uczsKLSAgICBmb3IgKGF1dG8qIHNlc3Npb24gOiBzZXNzaW9ucykKLSAgICAgICAgc2Vzc2lv
bi0+d2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2UoKTsKLX0KLQogI2lmICFQTEFURk9S
TShDT0NPQSkKIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKCkK
IHsKQEAgLTMzMCw2ICszMjIsMTMgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjphdWRpb091
dHB1dERldgogICAgIHVwZGF0ZVNlc3Npb25TdGF0ZSgpOwogfQogCisjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbkhh
c1JlcXVlc3RlZFBsYXliYWNrVGFyZ2V0UGlja2VyKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKK3sK
KyAgICBzZXRDdXJyZW50U2Vzc2lvbihzZXNzaW9uKTsKK30KKyNlbmRpZgorCiB9CiAKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vz
c2lvbk1hbmFnZXIuaAkocmV2aXNpb24gMTgxMzI5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTQsNyAr
NTQsNiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGxpY2F0aW9uV2ls
bEVudGVyRm9yZWdyb3VuZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbGlj
YXRpb25XaWxsRW50ZXJCYWNrZ3JvdW5kKCkgY29uc3Q7Ci0gICAgdm9pZCB3aXJlbGVzc1JvdXRl
c0F2YWlsYWJsZUNoYW5nZWQoKTsKIAogICAgIGVudW0gU2Vzc2lvblJlc3RyaWN0aW9uRmxhZ3Mg
ewogICAgICAgICBOb1Jlc3RyaWN0aW9ucyA9IDAsCkBAIC03OSwxMSArNzgsMTMgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBib29sIHNlc3Npb25DYW5Mb2FkTWVkaWEoY29uc3QgTWVkaWFTZXNz
aW9uJikgY29uc3Q7CiAKKyNpZiBQTEFURk9STShJT1MpCiAgICAgdmlydHVhbCB2b2lkIGNvbmZp
Z3VyZVdpcmVMZXNzVGFyZ2V0TW9uaXRvcmluZygpIHsgfQotCi0jaWYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkKICAgICB2aXJ0dWFsIGJvb2wgaGFzV2lyZWxlc3NUYXJnZXRzQXZh
aWxhYmxlKCkgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgorI2lmIEVOQUJMRShXSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQpCisgICAgdmlydHVhbCB2b2lkIHNlc3Npb25IYXNSZXF1ZXN0ZWRQbGF5
YmFja1RhcmdldFBpY2tlcihNZWRpYVNlc3Npb24mKTsKKyNlbmRpZgogCiBwcm90ZWN0ZWQ6CiAg
ICAgZnJpZW5kIGNsYXNzIE1lZGlhU2Vzc2lvbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaAko
cmV2aXNpb24gMTgxMzI5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01l
ZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NSw5ICs0NSwxNCBAQCBjbGFz
cyBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TIDogcHVibGljIE1lCiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+TWVkaWFTZXNzaW9uTWFuYWdlcmlPUygpOwogCisgICAgdm9pZCBleHRlcm5hbE91dHB1dERl
dmljZUF2YWlsYWJsZURpZENoYW5nZSgpOworICAgIHZpcnR1YWwgYm9vbCBoYXNXaXJlbGVzc1Rh
cmdldHNBdmFpbGFibGUoKSBvdmVycmlkZTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
TWVkaWFTZXNzaW9uTWFuYWdlcjsKIAorICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MoKTsKKwog
ICAgIHZpcnR1YWwgdm9pZCBzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soTWVkaWFTZXNzaW9uJikg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNlc3Npb25XaWxsRW5kUGxheWJhY2soTWVkaWFT
ZXNzaW9uJikgb3ZlcnJpZGU7CiAgICAgCkBAIC01NSwxNCArNjAsMTAgQEAgcHJpdmF0ZToKICAg
ICAKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRSZXN0cmljdGlvbnMoKSBvdmVycmlkZTsKIAotI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi0gICAgdmlydHVhbCBib29sIGhhc1dp
cmVsZXNzVGFyZ2V0c0F2YWlsYWJsZSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjb25m
aWd1cmVXaXJlTGVzc1RhcmdldE1vbml0b3JpbmcoKSBvdmVycmlkZTsKLSNlbmRpZgogCiAgICAg
dmlydHVhbCBib29sIHNlc3Npb25DYW5Mb2FkTWVkaWEoY29uc3QgTWVkaWFTZXNzaW9uJikgY29u
c3Qgb3ZlcnJpZGU7Ci0KLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TKCk7CisgICAgCiAgICAg
UmV0YWluUHRyPFdlYk1lZGlhU2Vzc2lvbkhlbHBlcj4gbV9vYmpjT2JzZXJ2ZXI7CiB9OwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdl
cklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
TWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQkocmV2aXNpb24gMTgxMzI5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0JKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTU5LDcgKzE1OSw2IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6cmVz
ZXRSZXN0cmkKICAgICBhZGRSZXN0cmljdGlvbihNZWRpYVNlc3Npb246OlZpZGVvLCBBdXRvUHJl
bG9hZGluZ05vdFBlcm1pdHRlZCk7CiB9CiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKQogYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpoYXNXaXJlbGVzc1RhcmdldHNB
dmFpbGFibGUoKQogewogICAgIHJldHVybiBbbV9vYmpjT2JzZXJ2ZXIgaGFzV2lyZWxlc3NUYXJn
ZXRzQXZhaWxhYmxlXTsKQEAgLTE4NCw4ICsxODMsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJpT1M6OmNvbmZpZ3VyZVdpCiAgICAgZWxzZQogICAgICAgICBbbV9vYmpjT2JzZXJ2ZXIgc3Rv
cE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXTsKIH0KLSNlbmRpZgotICAgIAorCiB2b2lkIE1lZGlh
U2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayhNZWRpYVNlc3Npb24m
IHNlc3Npb24pCiB7CiAgICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxCZWdpblBs
YXliYWNrKHNlc3Npb24pOwpAQCAtMjMzLDYgKzIzMSwxNCBAQCBib29sIE1lZGlhU2Vzc2lvbk1h
bmFnZXJpT1M6OnNlc3Npb25DYW5MCiAgICAgcmV0dXJuIHNlc3Npb24uc3RhdGUoKSA9PSBNZWRp
YVNlc3Npb246OlBsYXlpbmcgfHwgIXNlc3Npb24uaXNIaWRkZW4oKSB8fCBzZXNzaW9uLmRpc3Bs
YXlUeXBlKCkgPT0gTWVkaWFTZXNzaW9uOjpPcHRpbWl6ZWQ7CiB9CiAKK3ZvaWQgTWVkaWFTZXNz
aW9uTWFuYWdlcmlPUzo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoKQor
eworICAgIFZlY3RvcjxNZWRpYVNlc3Npb24qPiBzZXNzaW9uTGlzdCA9IHNlc3Npb25zKCk7Cisg
ICAgYm9vbCBoYXZlVGFyZ2V0cyA9IFttX29iamNPYnNlcnZlciBoYXNXaXJlbGVzc1RhcmdldHNB
dmFpbGFibGVdOworICAgIGZvciAoYXV0byogc2Vzc2lvbiA6IHNlc3Npb25MaXN0KQorICAgICAg
ICBzZXNzaW9uLT5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShoYXZlVGFy
Z2V0cyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogQGltcGxlbWVudGF0aW9uIFdl
Yk1lZGlhU2Vzc2lvbkhlbHBlcgpAQCAtNDQ1LDcgKzQ1MSw3IEBAIC0gKHZvaWQpd2lyZWxlc3NS
b3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2UKICAgICAgICAgaWYgKCFfY2FsbGJhY2spCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgX2NhbGxiYWNrLT53aXJlbGVzc1JvdXRlc0F2YWlsYWJs
ZUNoYW5nZWQoKTsKKyAgICAgICAgX2NhbGxiYWNrLT5leHRlcm5hbE91dHB1dERldmljZUF2YWls
YWJsZURpZENoYW5nZSgpOwogICAgIH0pOwogfQogQGVuZApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQVZQbGF5YmFja1RhcmdldC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FWUGxheWJhY2tUYXJnZXQuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FWUGxheWJhY2tUYXJnZXQu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQVZQbGF5YmFja1RhcmdldF9oCisjZGVm
aW5lIEFWUGxheWJhY2tUYXJnZXRfaAorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVCkKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFBMQVRGT1JNKENPQ09B
KQorT0JKQ19DTEFTUyBOU0tleWVkQXJjaGl2ZXI7CitPQkpDX0NMQVNTIE5TS2V5ZWRVbmFyY2hp
dmVyOworT0JKQ19DTEFTUyBBVk91dHB1dERldmljZVBpY2tlckNvbnRleHQ7CisjZW5kaWYKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBVlBsYXliYWNrVGFyZ2V0IHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5BVlBsYXliYWNrVGFyZ2V0KCkgeyB9CisKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBXRUJDT1JFX0VYUE9SVCBBVlBsYXliYWNrVGFyZ2V0KEFWT3V0cHV0RGV2aWNlUGlj
a2VyQ29udGV4dCAqY29udGV4dCA9IG5pbCkgeyBtX2RldmljZVBpY2tlckNvbnRleHQgPSBjb250
ZXh0OyB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuY29kZShOU0tleWVkQXJjaGl2ZXIg
KikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgZGVjb2RlKE5TS2V5ZWRV
bmFyY2hpdmVyICosIEFWUGxheWJhY2tUYXJnZXQmKTsKKworICAgIHZvaWQgc2V0RGV2aWNlUGlj
a2VyQ29udGV4dChBVk91dHB1dERldmljZVBpY2tlckNvbnRleHQgKmNvbnRleHQpIHsgbV9kZXZp
Y2VQaWNrZXJDb250ZXh0ID0gY29udGV4dDsgfQorICAgIEFWT3V0cHV0RGV2aWNlUGlja2VyQ29u
dGV4dCAqZGV2aWNlUGlja2VyQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlUGlja2Vy
Q29udGV4dC5nZXQoKTsgfQorI2VuZGlmCisKK3Byb3RlY3RlZDoKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBSZXRhaW5QdHI8QVZPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0PiBtX2RldmljZVBp
Y2tlckNvbnRleHQ7CisjZW5kaWYKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShXSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQpCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQVZQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FWUGxheWJhY2tUYXJnZXRQaWNrZXJD
bGllbnQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0FWUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBVlBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50
X2gKKyNkZWZpbmUgQVZQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudF9oCisKKyNpZiBFTkFCTEUo
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorCisjaW5jbHVkZSAiQVZQbGF5YmFja1RhcmdldC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFWUGxheWJhY2tUYXJnZXQ7CisKK2Ns
YXNzIEFWUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwg
fkFWUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBk
aWRDaG9vc2VQbGF5YmFja1RhcmdldChBVlBsYXliYWNrVGFyZ2V0JikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShib29sKSBjb25z
dCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNQbGF5YmFja1RhcmdldFJvdXRlTW9u
aXRvcmluZygpIGNvbnN0ID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisKKyNlbmRpZiAvLyBBVlBs
YXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAJKHJldmlzaW9uIDE4MTMyOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODY3LDYgKzg2NywxMSBAQCB2b2lkIE1lZGlhUGxheWVyOjpjdXJyZW50UGxheWJh
Y2tUYXJnZXRJCiB7CiAgICAgbV9jbGllbnQubWVkaWFQbGF5ZXJDdXJyZW50UGxheWJhY2tUYXJn
ZXRJc1dpcmVsZXNzQ2hhbmdlZCh0aGlzKTsKIH0KKwordm9pZCBNZWRpYVBsYXllcjo6c2V0V2ly
ZWxlc3NQbGF5YmFja1RhcmdldChjb25zdCBBVlBsYXliYWNrVGFyZ2V0JiBkZXZpY2UpCit7Cisg
ICAgbV9wcml2YXRlLT5zZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KGRldmljZSk7Cit9CiAjZW5k
aWYKIAogZG91YmxlIE1lZGlhUGxheWVyOjptYXhGYXN0Rm9yd2FyZFJhdGUoKSBjb25zdApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCShy
ZXZpc2lvbiAxODEzMjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQXVkaW9Tb3VyY2VQcm92aWRlcjsKIGNsYXNzIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOworY2xhc3MgQVZQbGF5YmFja1RhcmdldDsKICNpZiBFTkFCTEUoTUVESUFfU09V
UkNFKQogY2xhc3MgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50OwogI2VuZGlmCkBAIC00NzYsNiAr
NDc3LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBjdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVs
ZXNzQ2hhbmdlZCgpOwogICAgIHZvaWQgcGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2Vk
KCk7CisKKyAgICB2b2lkIHNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoY29uc3QgQVZQbGF5YmFj
a1RhcmdldCYpOwogI2VuZGlmCiAKICAgICBkb3VibGUgbWluRmFzdFJldmVyc2VSYXRlKCkgY29u
c3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclBy
aXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllclByaXZhdGUuaAkocmV2aXNpb24gMTgxMzI5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDYgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBVlBsYXliYWNr
VGFyZ2V0OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBQbGF0Zm9ybVRl
eHRUcmFjazsKQEAgLTE2Niw2ICsxNjcsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wg
d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sKSB7
IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KGNvbnN0IEFW
UGxheWJhY2tUYXJnZXQmKSB7IH0KICNlbmRpZgogCiAjaWYgVVNFKE5BVElWRV9GVUxMU0NSRUVO
X1ZJREVPKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0FWUGxheWJhY2tUYXJnZXRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWUGxheWJhY2tUYXJnZXRNYWMubW0JKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vQVZQbGF5YmFja1RhcmdldE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiQVZQbGF5YmFja1RhcmdldC5oIgorCisjaWYgRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKworI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWT3V0cHV0
RGV2aWNlUGlja2VyQ29udGV4dC5oPgorI2ltcG9ydCA8V2ViQ29yZS9BVlBsYXliYWNrVGFyZ2V0
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDxvYmpjL3J1bnRp
bWUuaD4KKwordHlwZWRlZiBBVk91dHB1dERldmljZVBpY2tlckNvbnRleHQgQVZPdXRwdXREZXZp
Y2VQaWNrZXJDb250ZXh0VHlwZTsKKworU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChBVkZv
dW5kYXRpb24pCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVk91dHB1dERldmljZVBp
Y2tlckNvbnRleHQpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIE5TU3RyaW5nICog
Y29uc3QgZGV2aWNlQ29udGV4dEtleSA9IEAiZGV2aWNlQ29udGV4dCI7CisKK3ZvaWQgQVZQbGF5
YmFja1RhcmdldDo6ZW5jb2RlKE5TS2V5ZWRBcmNoaXZlciAqYXJjaGl2ZXIpIGNvbnN0Cit7Cisg
ICAgaWYgKFtnZXRBVk91dHB1dERldmljZVBpY2tlckNvbnRleHRDbGFzcygpIGNvbmZvcm1zVG9Q
cm90b2NvbDpAcHJvdG9jb2woTlNTZWN1cmVDb2RpbmcpXSkKKyAgICAgICAgW2FyY2hpdmVyIGVu
Y29kZU9iamVjdDptX2RldmljZVBpY2tlckNvbnRleHQuZ2V0KCkgZm9yS2V5OmRldmljZUNvbnRl
eHRLZXldOworfQorCitib29sIEFWUGxheWJhY2tUYXJnZXQ6OmRlY29kZShOU0tleWVkVW5hcmNo
aXZlciAqdW5hcmNoaXZlciwgQVZQbGF5YmFja1RhcmdldCYgcGxheWJhY2tUYXJnZXQpCit7Cisg
ICAgaWYgKCFbZ2V0QVZPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0Q2xhc3MoKSBjb25mb3Jtc1Rv
UHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5nKV0pCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIEFWT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dCAqY29udGV4dCA9IG5pbDsKKwor
ICAgIEB0cnkgeworICAgICAgICBjb250ZXh0ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZD
bGFzczpnZXRBVk91dHB1dERldmljZVBpY2tlckNvbnRleHRDbGFzcygpIGZvcktleTpkZXZpY2VD
b250ZXh0S2V5XTsKKyAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgeworICAg
ICAgICBMT0dfRVJST1IoIlRoZSB0YXJnZXQgcGlja2VyIGJlaW5nIGRlY29kZWQgaXMgbm90IGEg
QVZPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0LiIpOworICAgIH0KKworICAgIHBsYXliYWNrVGFy
Z2V0Lm1fZGV2aWNlUGlja2VyQ29udGV4dCA9IGNvbnRleHQ7CisKKyAgICByZXR1cm4gY29udGV4
dDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgJKHJldmlzaW9u
IDE4MTMyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNiArMzQsNyBAQAogT0JKQ19DTEFTUyBBVkFzc2V0SW1hZ2VHZW5lcmF0b3I7CiBP
QkpDX0NMQVNTIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0OwogT0JKQ19DTEFTUyBBVk1l
ZGlhU2VsZWN0aW9uR3JvdXA7CitPQkpDX0NMQVNTIEFWT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4
dDsKIE9CSkNfQ0xBU1MgQVZQbGF5ZXI7CiBPQkpDX0NMQVNTIEFWUGxheWVySXRlbTsKIE9CSkNf
Q0xBU1MgQVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dDsKQEAgLTU5LDEzICs2MCwxNCBAQCB0eXBl
ZGVmIHN0cnVjdCBPcGFxdWVWVFBpeGVsVHJhbnNmZXJTZXNzCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOwotY2xhc3MgSW5iYW5kTWV0YWRh
dGFUZXh0VHJhY2tQcml2YXRlQVZGOwotY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9i
akM7CiBjbGFzcyBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzsKIGNsYXNzIEF1ZGlvVHJhY2tQ
cml2YXRlQVZGT2JqQzsKK2NsYXNzIEFWUGxheWJhY2tUYXJnZXQ7CitjbGFzcyBJbmJhbmRNZXRh
ZGF0YVRleHRUcmFja1ByaXZhdGVBVkY7CitjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
T2JqQzsKIGNsYXNzIE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDOwogY2xhc3MgVmlkZW9UcmFj
a1ByaXZhdGVBVkZPYmpDOworY2xhc3MgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOwogCiBjbGFz
cyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDIDogcHVibGljIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbiB7CiBwdWJsaWM6CkBAIC0yNzQsNiArMjc2LDkgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIFN0cmluZyB3aXJlbGVzc1BsYXliYWNrVGFyZ2V0TmFtZSgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OldpcmVsZXNzUGxheWJhY2tUYXJn
ZXRUeXBlIHdpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCBib29sIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3Qgb3ZlcnJp
ZGU7CisjaWYgIVBMQVRGT1JNKElPUykKKyAgICB2aXJ0dWFsIHZvaWQgc2V0V2lyZWxlc3NQbGF5
YmFja1RhcmdldChjb25zdCBBVlBsYXliYWNrVGFyZ2V0Jikgb3ZlcnJpZGU7CisjZW5kaWYKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCB1cGRhdGVEaXNhYmxlRXh0ZXJuYWxQbGF5YmFjaygpOwogI2VuZGlm
CkBAIC0zNDUsNiArMzUwLDEwIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEluYmFuZE1ldGFkYXRh
VGV4dFRyYWNrUHJpdmF0ZUFWRj4gbV9tZXRhZGF0YVRyYWNrOwogI2VuZGlmCiAKKyNpZiBQTEFU
Rk9STShNQUMpICYmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisgICAgUmV0YWlu
UHRyPEFWT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dD4gbV9vdXRwdXREZXZpY2VQaWNrZXJDb250
ZXh0OworI2VuZGlmCisKICAgICBtdXRhYmxlIFJldGFpblB0cjxOU0FycmF5PiBtX2NhY2hlZFNl
ZWthYmxlUmFuZ2VzOwogICAgIG11dGFibGUgUmV0YWluUHRyPE5TQXJyYXk+IG1fY2FjaGVkTG9h
ZGVkUmFuZ2VzOwogICAgIFJldGFpblB0cjxOU0FycmF5PiBtX2NhY2hlZFRyYWNrczsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkocmV2aXNpb24gMTgxMzI5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2lm
IEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKICNpbXBvcnQgIk1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCIKIAorI2ltcG9ydCAiQVZQbGF5YmFja1RhcmdldC5o
IgogI2ltcG9ydCAiQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oIgogI2ltcG9ydCAiQXVkaW9T
b3VyY2VQcm92aWRlckFWRk9iakMuaCIKICNpbXBvcnQgIkF1ZGlvVHJhY2tQcml2YXRlQVZGT2Jq
Qy5oIgpAQCAtMTM1LDYgKzEzNiwxNCBAQCBAaW50ZXJmYWNlIEFWVVJMQXNzZXQgKFdlYktpdEV4
dGVuc2lvbnMpCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TVVJMICpyZXNvbHZl
ZFVSTDsKIEBlbmQKIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkKK3R5cGVkZWYgQVZPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0IEFWT3V0cHV0
RGV2aWNlUGlja2VyQ29udGV4dFR5cGU7CisKK0BpbnRlcmZhY2UgQVZQbGF5ZXIgKFdlYktpdEV4
dGVuc2lvbnMpCitAcHJvcGVydHkgKG5vbmF0b21pYykgQVZPdXRwdXREZXZpY2VQaWNrZXJDb250
ZXh0ICpvdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0OworQGVuZAorI2VuZGlmCisKIHR5cGVkZWYg
QVZQbGF5ZXIgQVZQbGF5ZXJUeXBlOwogdHlwZWRlZiBBVlBsYXllckl0ZW0gQVZQbGF5ZXJJdGVt
VHlwZTsKIHR5cGVkZWYgQVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dCBBVlBsYXllckl0ZW1MZWdp
YmxlT3V0cHV0VHlwZTsKQEAgLTU0Niw2ICs1NTUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6CiAgICAgICAgIFttX2F2UGxheWVyLmdldCgpIHJlbW92ZU9ic2Vy
dmVyOm1fb2JqY09ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJyYXRlIl07CiAjaWYgRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICAgICAgW21fYXZQbGF5ZXIuZ2V0KCkgcmVt
b3ZlT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAImV4dGVybmFsUGxh
eWJhY2tBY3RpdmUiXTsKKyAgICAgICAgW21fYXZQbGF5ZXIuZ2V0KCkgcmVtb3ZlT2JzZXJ2ZXI6
bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIm91dHB1dERldmljZVBpY2tlckNvbnRl
eHQiXTsKICNlbmRpZgogICAgICAgICBtX2F2UGxheWVyID0gbmlsOwogICAgIH0KQEAgLTkyNyw2
ICs5MzcsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgogICAg
IFttX2F2UGxheWVyLmdldCgpIGFkZE9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgpIGZvcktl
eVBhdGg6QCJyYXRlIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4
dDoodm9pZCAqKU1lZGlhUGxheWVyQVZGb3VuZGF0aW9uT2JzZXJ2YXRpb25Db250ZXh0UGxheWVy
XTsKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIFttX2F2UGxheWVy
LmdldCgpIGFkZE9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJleHRl
cm5hbFBsYXliYWNrQWN0aXZlIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcg
Y29udGV4dDoodm9pZCAqKU1lZGlhUGxheWVyQVZGb3VuZGF0aW9uT2JzZXJ2YXRpb25Db250ZXh0
UGxheWVyXTsKKyAgICBbbV9hdlBsYXllci5nZXQoKSBhZGRPYnNlcnZlcjptX29iamNPYnNlcnZl
ci5nZXQoKSBmb3JLZXlQYXRoOkAib3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dCIgb3B0aW9uczpO
U0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6KHZvaWQgKilNZWRpYVBsYXllckFW
Rm91bmRhdGlvbk9ic2VydmF0aW9uQ29udGV4dFBsYXllcl07CisjZW5kaWYKKworI2lmIEVOQUJM
RShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgdXBkYXRlRGlzYWJsZUV4dGVybmFsUGxh
eWJhY2soKTsKICNlbmRpZgogCkBAIC05MzgsNiArOTUyLDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKICAgICBbbV9hdlBsYXllci5nZXQoKSBzZXRBbGxvd3NF
eHRlcm5hbFBsYXliYWNrOm1fYWxsb3dzV2lyZWxlc3NWaWRlb1BsYXliYWNrXTsKICNlbmRpZgog
CisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykK
KyAgICBpZiAobV9vdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0KQorICAgICAgICBtX2F2UGxheWVy
LmdldCgpLm91dHB1dERldmljZVBpY2tlckNvbnRleHQgPSBtX291dHB1dERldmljZVBpY2tlckNv
bnRleHQuZ2V0KCk7CisjZW5kaWYKKwogICAgIGlmIChwbGF5ZXIoKS0+Y2xpZW50KCkubWVkaWFQ
bGF5ZXJJc1ZpZGVvKCkpCiAgICAgICAgIGNyZWF0ZUFWUGxheWVyTGF5ZXIoKTsKIApAQCAtMTEz
NCw5ICsxMTUzLDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgog
ICAgICAgICBzeW5jVGV4dFRyYWNrQm91bmRzKCk7CiAgICAgICAgIFttX3ZpZGVvRnVsbHNjcmVl
bkxheWVyIGFkZFN1YmxheWVyOm1fdGV4dFRyYWNrUmVwcmVzZW50YXRpb25MYXllci5nZXQoKV07
CiAgICAgfQotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisKICAgICB1cGRh
dGVEaXNhYmxlRXh0ZXJuYWxQbGF5YmFjaygpOwotI2VuZGlmCiB9CiAKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRS
ZWN0IGZyYW1lKQpAQCAtMjY4Nyw3ICsyNzA1LDEwIEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzoKICAgICBpZiAoIW1fYXZQbGF5ZXIpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGJvb2wgd2lyZWxlc3NUYXJnZXQgPSBbbV9hdlBsYXllci5nZXQoKSBpc0V4
dGVybmFsUGxheWJhY2tBY3RpdmVdOworICAgIGJvb2wgd2lyZWxlc3NUYXJnZXQgPSBmYWxzZTsK
KworICAgIHdpcmVsZXNzVGFyZ2V0ID0gbV9hdlBsYXllci5nZXQoKS5leHRlcm5hbFBsYXliYWNr
QWN0aXZlOworCiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6aXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcyglcCkgLSByZXR1cm5pbmcgJXMi
LCB0aGlzLCBib29sU3RyaW5nKHdpcmVsZXNzVGFyZ2V0KSk7CiAgICAgcmV0dXJuIHdpcmVsZXNz
VGFyZ2V0OwogfQpAQCAtMjY5Nyw2ICsyNzE4LDcgQEAgTWVkaWFQbGF5ZXI6OldpcmVsZXNzUGxh
eWJhY2tUYXJnZXRUeXBlIAogICAgIGlmICghbV9hdlBsYXllcikKICAgICAgICAgcmV0dXJuIE1l
ZGlhUGxheWVyOjpUYXJnZXRUeXBlTm9uZTsKIAorI2lmIFBMQVRGT1JNKElPUykKICAgICBzd2l0
Y2ggKHdrRXhlcm5hbERldmljZVR5cGVGb3JQbGF5ZXIobV9hdlBsYXllci5nZXQoKSkpIHsKICAg
ICBjYXNlIHdrRXh0ZXJuYWxQbGF5YmFja1R5cGVOb25lOgogICAgICAgICByZXR1cm4gTWVkaWFQ
bGF5ZXI6OlRhcmdldFR5cGVOb25lOwpAQCAtMjcwOCw2ICsyNzMwLDEwIEBAIE1lZGlhUGxheWVy
OjpXaXJlbGVzc1BsYXliYWNrVGFyZ2V0VHlwZSAKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIHJldHVybiBNZWRpYVBsYXllcjo6VGFyZ2V0VHlwZU5vbmU7CisKKyNlbHNlCisgICAg
cmV0dXJuIE1lZGlhUGxheWVyOjpUYXJnZXRUeXBlQWlyUGxheTsKKyNlbmRpZgogfQogCiBTdHJp
bmcgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6d2lyZWxlc3NQbGF5YmFja1Rh
cmdldE5hbWUoKSBjb25zdApAQCAtMjcyNSw3ICsyNzUxLDcgQEAgYm9vbCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOgogewogICAgIGlmICghbV9hdlBsYXllcikKICAgICAgICAg
cmV0dXJuICFtX2FsbG93c1dpcmVsZXNzVmlkZW9QbGF5YmFjazsKLSAgICAKKwogICAgIG1fYWxs
b3dzV2lyZWxlc3NWaWRlb1BsYXliYWNrID0gW21fYXZQbGF5ZXIuZ2V0KCkgYWxsb3dzRXh0ZXJu
YWxQbGF5YmFja107CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoJXApIC0gcmV0dXJuaW5nICVz
IiwgdGhpcywgYm9vbFN0cmluZyghbV9hbGxvd3NXaXJlbGVzc1ZpZGVvUGxheWJhY2spKTsKIApA
QCAtMjczOCwxNiArMjc2NCwzMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6CiAgICAgbV9hbGxvd3NXaXJlbGVzc1ZpZGVvUGxheWJhY2sgPSAhZGlzYWJsZWQ7CiAg
ICAgaWYgKCFtX2F2UGxheWVyKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBbbV9hdlBs
YXllci5nZXQoKSBzZXRBbGxvd3NFeHRlcm5hbFBsYXliYWNrOiFkaXNhYmxlZF07CiB9CiAKKyNp
ZiAhUExBVEZPUk0oSU9TKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KGNvbnN0IEFWUGxheWJhY2tUYXJnZXQmIHRhcmdl
dCkKK3sKKyAgICBtX291dHB1dERldmljZVBpY2tlckNvbnRleHQgPSB0YXJnZXQuZGV2aWNlUGlj
a2VyQ29udGV4dCgpOworCisgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldCglcCkgLSB0YXJnZXQgPSAlcCIs
IHRoaXMsIG1fb3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dC5nZXQoKSk7CisKKyAgICBpZiAoIW1f
YXZQbGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYXZQbGF5ZXIuZ2V0KCkub3V0cHV0
RGV2aWNlUGlja2VyQ29udGV4dCA9IG1fb3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dC5nZXQoKTsK
K30KKyNlbmRpZgorCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVw
ZGF0ZURpc2FibGVFeHRlcm5hbFBsYXliYWNrKCkKIHsKICAgICBpZiAoIW1fYXZQbGF5ZXIpCiAg
ICAgICAgIHJldHVybjsKIAorI2lmIFBMQVRGT1JNKElPUykKICAgICBbbV9hdlBsYXllciBzZXRV
c2VzRXh0ZXJuYWxQbGF5YmFja1doaWxlRXh0ZXJuYWxTY3JlZW5Jc0FjdGl2ZTptX3ZpZGVvRnVs
bHNjcmVlbkxheWVyICE9IG5pbF07CisjZW5kaWYKIH0KICNlbmRpZgogCkBAIC0zMTY5LDYgKzMy
MTEsOCBAQCAtICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0aCBvCiAjaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICAgICAgZWxzZSBpZiAoW2tleVBhdGgg
aXNFcXVhbFRvU3RyaW5nOkAiZXh0ZXJuYWxQbGF5YmFja0FjdGl2ZSJdKQogICAgICAgICAgICAg
ZnVuY3Rpb24gPSBXVEY6OmJpbmQoJk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0RpZENoYW5nZSwgbV9jYWxsYmFjayk7CisgICAgICAg
IGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAIm91dHB1dERldmljZVBpY2tlckNv
bnRleHQiXSkKKyAgICAgICAgICAgIGZ1bmN0aW9uID0gV1RGOjpiaW5kKCZNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF5YmFja1RhcmdldElzV2lyZWxlc3NEaWRDaGFuZ2Us
IG1fY2FsbGJhY2spOwogI2VuZGlmCiAgICAgfQogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCShyZXZpc2lvbiAxODEzMjkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05Nyw2ICs5Nyw3IEBAIEludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6QmFja3VwKFNldHRpbmcK
ICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgICwgbV90b3VjaEV2ZW50RW11bGF0aW9uRW5h
YmxlZChzZXR0aW5ncy5pc1RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKCkpCiAjZW5kaWYKKyAg
ICAsIG1fbWVkaWFQbGF5YmFja0FsbG93c0FpclBsYXkoc2V0dGluZ3MubWVkaWFQbGF5YmFja0Fs
bG93c0FpclBsYXkoKSkKIHsKIH0KIApAQCAtMjAxLDYgKzIwMiw3IEBAIEludGVybmFsU2V0dGlu
Z3M6OkludGVybmFsU2V0dGluZ3MoUGFnZSoKICAgICAsIG1fcGFnZShwYWdlKQogICAgICwgbV9i
YWNrdXAocGFnZS0+c2V0dGluZ3MoKSkKIHsKKyAgICBwYWdlLT5zZXR0aW5ncygpLnNldE1lZGlh
UGxheWJhY2tBbGxvd3NBaXJQbGF5KGZhbHNlKTsKIH0KIAogdm9pZCBJbnRlcm5hbFNldHRpbmdz
OjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxTZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxTZXR0aW5ncy5oCShyZXZpc2lvbiAxODEzMjkpCisrKyBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtOTUsNiArOTUsNyBA
QCBwdWJsaWM6CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICAgICAgYm9vbCBtX3RvdWNo
RXZlbnRFbXVsYXRpb25FbmFibGVkOwogI2VuZGlmCisgICAgICAgIGJvb2wgbV9tZWRpYVBsYXli
YWNrQWxsb3dzQWlyUGxheTsKICAgICB9OwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW50ZXJu
YWxTZXR0aW5ncz4gY3JlYXRlKFBhZ2UqIHBhZ2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
ODEzNDApCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSw3MiBAQAorMjAxNS0wMy0xMCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxl
LmNvbT4KKworICAgICAgICBbTWFjXSBVcGRhdGUgQWlyUGxheSBoYW5kbGluZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNTQxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMu
bW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8QVZQbGF5YmFja1RhcmdldD46OmVuY29k
ZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8QVZQbGF5YmFja1RhcmdldD46OmRlY29k
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eTo6V2ViQVZQbGF5YmFja1Rhcmdl
dFBpY2tlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tl
clByb3h5Ojp+V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5OjpzaG93UGxheWJhY2tUYXJnZXRQaWNr
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHk6OnN0
YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkFW
UGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eTo6c3RvcE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eTo6
Q2xpZW50Ojp+Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZXZpY2VQaWNrZXJQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1Rh
cmdldHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN0b3BNb25pdG9yaW5nUGxh
eWJhY2tUYXJnZXRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDaG9vc2VQ
bGF5YmFja1RhcmdldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZXh0ZXJuYWxP
dXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xp
ZW50SW1wbDo6Y3JlYXRlUGxheWJhY2tUYXJnZXRQaWNrZXIpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9tYWMvV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjLmg6IEFkZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9tYWMvV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjLm1tOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFj
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJv
eHlNYWM6OldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYzo6fldlYkFWUGxheWJhY2tUYXJn
ZXRQaWNrZXJQcm94eU1hYyk6CisgICAgICAgIChXZWJLaXQ6OldlYkFWUGxheWJhY2tUYXJnZXRQ
aWNrZXJQcm94eU1hYzo6b3V0cHV0ZURldmljZUF2YWlsYWJpbGl0eUNoYW5nZWRUaW1lckZpcmVk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjOjph
dmFpbGFibGVEZXZpY2VzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFj
a1RhcmdldFBpY2tlclByb3h5TWFjOjpkZXZpY2VQaWNrZXIpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6OnNob3dQbGF5YmFja1RhcmdldFBpY2tl
cik6CisgICAgICAgIChXZWJLaXQ6OldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYzo6
Y3VycmVudERldmljZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFWUGxheWJhY2tU
YXJnZXRQaWNrZXJQcm94eU1hYzo6c3RhcnRpbmdNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjOjpzdG9w
TW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cyk6CisgICAgICAgICgtW1dlYkFWT3V0cHV0RGV2aWNl
UGlja2VyTWVudUNvbnRyb2xsZXJIZWxwZXIgaW5pdFdpdGhDYWxsYmFjazpdKToKKyAgICAgICAg
KC1bV2ViQVZPdXRwdXREZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlckhlbHBlciBjbGVhckNhbGxi
YWNrXSk6CisgICAgICAgICgtW1dlYkFWT3V0cHV0RGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXJI
ZWxwZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToK
KyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXI6OldlYkFW
UGxheWJhY2tUYXJnZXRQaWNrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJBVlBsYXliYWNrVGFy
Z2V0UGlja2VyOjpzaG93UGxheWJhY2tEZXZpY2VQaWNrZXIpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyOjpjb25maWd1cmVXaXJlTGVzc1RhcmdldE1vbml0b3Jp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyOjphZGRDbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyOjpyZW1vdmVD
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyOjpkaWRD
aG9vc2VQbGF5YmFja1RhcmdldCk6CisgICAgICAgIChXZWJLaXQ6OldlYkFWUGxheWJhY2tUYXJn
ZXRQaWNrZXI6OnBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpzdGFydGluZ01vbml0b3JpbmdQbGF5YmFj
a1RhcmdldHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnN0b3BNb25pdG9y
aW5nUGxheWJhY2tUYXJnZXRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpwbGF5YmFja1RhcmdldFNlbGVjdGVkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6cGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW46CisKIDIwMTUtMDMtMTAg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtH
VEtdIENvbnRlbnRzIG5vdCBzaG93biB3aGVuIGVudGVyaW5nIEFDIG1vZGUgdW5sZXNzIHRoZSB3
aW5kb3cgaXMgcmVzaXplZApJbmRleDogU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVh
dHVyZURlZmluZXMueGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJldmlzaW9uIDE4MTMyOSkKKysrIFNv
dXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDMsNiArMTAzLDEwIEBAIEVOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRF
X0RJU1BBVENIRVJTX20KIEVOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTX21h
Y29zeF8xMDExMDAgPSBFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUzsKIAog
RU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVFtzZGs9aXBob25lKl0gPSBFTkFCTEVfV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUOworRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVFtz
ZGs9bWFjb3N4Kl0gPSAkKEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XyQo
VEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1IpKQorRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVF9tYWNvc3hfMTA5MCA9IDsKK0VOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRf
bWFjb3N4XzEwMTAwMCA9IDsKK0VOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4
XzEwMTEwMCA9IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiAKIEVOQUJMRV9JT1Nf
R0VTVFVSRV9FVkVOVFNbc2RrPWlwaG9uZSpdID0gJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRT
X2lvc19XSVRIX0lOVEVSTkFMX1NES18kKFVTRV9JTlRFUk5BTF9TREspKTsKIEVOQUJMRV9JT1Nf
R0VTVFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5URVJOQUxfU0RLX1lFUyA9IEVOQUJMRV9JT1NfR0VT
VFVSRV9FVkVOVFM7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oCShyZXZpc2lvbiAxODEzMjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNSw2ICsxMTUsMTIg
QEAgY2xhc3MgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOwogfQogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgQVZQbGF5YmFja1RhcmdldDsKK30KKyNlbmRpZgorCiBuYW1lc3BhY2UgSVBDIHsKIAogdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0+IHsK
QEAgLTQ1NCw2ICs0NjAsMTMgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOgogICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImLCBXZWJDb3JlOjpU
ZXh0SW5kaWNhdG9yRGF0YSYpOwogfTsKIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkFWUGxheWJh
Y2tUYXJnZXQ+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgY29u
c3QgV2ViQ29yZTo6QVZQbGF5YmFja1RhcmdldCYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShB
cmd1bWVudERlY29kZXImLCBXZWJDb3JlOjpBVlBsYXliYWNrVGFyZ2V0Jik7Cit9OworI2VuZGlm
CisKIH0gLy8gbmFtZXNwYWNlIElQQwogCiAjZW5kaWYgLy8gV2ViQ29yZUFyZ3VtZW50Q29kZXJz
X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzTWFjLm1tCShyZXZpc2lvbiAxODEzMjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzgsMTEgKzM4LDE3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Byb3RlY3Rpb25TcGFjZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNl
UmVxdWVzdC5oPgorI2ltcG9ydCA8V2ViQ29yZS9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8b2Jq
Yy9ydW50aW1lLmg+CiAKICNpZiBVU0UoQ0ZORVRXT1JLKQogI2ltcG9ydCA8Q0ZOZXR3b3JrL0NG
VVJMUmVxdWVzdC5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUKQorI2ltcG9ydCA8V2ViQ29yZS9BVlBsYXliYWNrVGFyZ2V0Lmg+CisjZW5kaWYKKwogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtNDMyLDQgKzQzOCwz
MSBAQCBib29sIEFyZ3VtZW50Q29kZXI8Q29udGVudEZpbHRlclVuYmxvY2tICiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQordm9pZCBB
cmd1bWVudENvZGVyPEFWUGxheWJhY2tUYXJnZXQ+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBBVlBsYXliYWNrVGFyZ2V0JiB0YXJnZXQpCit7CisgICAgUmV0YWluUHRy
PE5TTXV0YWJsZURhdGE+IGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5p
dF0pOworICAgIFJldGFpblB0cjxOU0tleWVkQXJjaGl2ZXI+IGFyY2hpdmVyID0gYWRvcHROUyhb
W05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6ZGF0
YS5nZXQoKV0pOworICAgIFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOwor
ICAgIHRhcmdldC5lbmNvZGUoYXJjaGl2ZXIuZ2V0KCkpOworICAgIFthcmNoaXZlciBmaW5pc2hF
bmNvZGluZ107CisgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgcmVpbnRlcnByZXRfY2FzdDxDRkRh
dGFSZWY+KGRhdGEuZ2V0KCkpKTsKK30KKworYm9vbCBBcmd1bWVudENvZGVyPEFWUGxheWJhY2tU
YXJnZXQ+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBBVlBsYXliYWNrVGFyZ2V0
JiB0YXJnZXQpCit7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKKyAgICBpZiAoIUlQ
Qzo6ZGVjb2RlKGRlY29kZXIsIGRhdGEpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBS
ZXRhaW5QdHI8TlNLZXllZFVuYXJjaGl2ZXI+IHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXll
ZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nV2l0aERhdGE6KE5TRGF0YSAqKWRhdGEu
Z2V0KCldKTsKKyAgICBbdW5hcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOwor
ICAgIGlmICghQVZQbGF5YmFja1RhcmdldDo6ZGVjb2RlKHVuYXJjaGl2ZXIuZ2V0KCksIHRhcmdl
dCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBbdW5hcmNoaXZlciBmaW5pc2hE
ZWNvZGluZ107CisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2Ug
SVBDCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHJldmlzaW9uIDE4
MTMyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDYgKzM0LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3JDbGllbnQu
aD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkKKyNpbmNsdWRlICJXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuaCIK
KyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiUGx1Z2luQ29tcGxleFRl
eHRJbnB1dFN0YXRlLmgiCiAKQEAgLTMxMyw2ICszMTcsMTEgQEAgcHVibGljOgogI2lmIFBMQVRG
T1JNKE1BQykKICAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0KGNv
bnN0IEFjdGlvbk1lbnVIaXRUZXN0UmVzdWx0JiwgYm9vbCBmb3JJbW1lZGlhdGVBY3Rpb24sIEFQ
STo6T2JqZWN0KikgPSAwOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQorICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFdl
YkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eT4gY3JlYXRlUGxheWJhY2tUYXJnZXRQaWNrZXIo
V2ViUGFnZVByb3h5KikgPSAwOworI2VuZGlmCisKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkFWUGxheWJhY2tUYXJnZXRQaWNr
ZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkFW
UGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5oIgorCisjaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dl
YkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eTo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclBy
b3h5KENsaWVudCYgY2xpZW50KQorICAgIDogbV9jbGllbnQoJmNsaWVudCkKK3sKK30KKworV2Vi
QVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5Ojp+V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclBy
b3h5KCkKK3sKKyAgICBtX2NsaWVudCA9IDA7Cit9CisKK3ZvaWQgV2ViQVZQbGF5YmFja1Rhcmdl
dFBpY2tlclByb3h5OjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiwgYm9vbCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm47
Cit9CisKK3ZvaWQgV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5OjpzdGFydGluZ01vbml0
b3JpbmdQbGF5YmFja1RhcmdldHMoKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybjsKK30KKwordm9pZCBXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHk6OnN0b3BN
b25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm47Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5LmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQVZQbGF5YmFja1Rhcmdl
dFBpY2tlclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5X2gKKyNkZWZpbmUgV2Vi
QVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5X2gKKworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQVZQbGF5YmFja1Rhcmdl
dDsKK2NsYXNzIEZsb2F0UmVjdDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
YlBhZ2VQcm94eTsKKworY2xhc3MgV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5IHsKK3B1
YmxpYzoKKyAgICBjbGFzcyBDbGllbnQgeworICAgIHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVh
bCB+Q2xpZW50KCkgeyB9CisKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRD
aG9vc2VQbGF5YmFja1RhcmdldChjb25zdCBXZWJDb3JlOjpBVlBsYXliYWNrVGFyZ2V0JikgPSAw
OworICAgICAgICB2aXJ0dWFsIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRD
aGFuZ2UoYm9vbCkgPSAwOworCisgICAgICAgIHZvaWQgaW52YWxpZGF0ZSgpOworICAgIH07CisK
KyAgICB2aXJ0dWFsIH5XZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkoKTsKKworICAgIHZp
cnR1YWwgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiwgYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNr
VGFyZ2V0cygpOworICAgIHZpcnR1YWwgdm9pZCBzdG9wTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0
cygpOworCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgV2ViQVZQbGF5YmFja1RhcmdldFBpY2tl
clByb3h5KENsaWVudCYpOworCisgICAgQ2xpZW50KiBtX2NsaWVudDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkKKworI2VuZGlmIC8vIFdlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eV9oCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMTgxMzI5
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU1OTIsNCArNTU5Miw0NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2hvdWxk
RGlzcGF0Y2hGYWtlCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRT
aG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMoc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VN
b3ZlRXZlbnRzKSwgbV9wYWdlSUQpOwogfQogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykKKworV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclBy
b3h5JiBXZWJQYWdlUHJveHk6OmRldmljZVBpY2tlclByb3h5KCkKK3sKKyAgICBpZiAoIW1fcGxh
eWJhY2tUYXJnZXRQaWNrZXIpCisgICAgICAgIG1fcGxheWJhY2tUYXJnZXRQaWNrZXIgPSBtX3Bh
Z2VDbGllbnQuY3JlYXRlUGxheWJhY2tUYXJnZXRQaWNrZXIodGhpcyk7CisKKyAgICByZXR1cm4g
Km1fcGxheWJhY2tUYXJnZXRQaWNrZXIuZ2V0KCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojpz
aG93UGxheWJhY2tUYXJnZXRQaWNrZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiByZWN0LCBi
b29sIGhhc1ZpZGVvKQoreworICAgIGRldmljZVBpY2tlclByb3h5KCkuc2hvd1BsYXliYWNrVGFy
Z2V0UGlja2VyKG1fcGFnZUNsaWVudC5yb290Vmlld1RvU2NyZWVuKEludFJlY3QocmVjdCkpLCBo
YXNWaWRlbyk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpzdGFydGluZ01vbml0b3JpbmdQbGF5
YmFja1RhcmdldHMoKQoreworICAgIGRldmljZVBpY2tlclByb3h5KCkuc3RhcnRpbmdNb25pdG9y
aW5nUGxheWJhY2tUYXJnZXRzKCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpzdG9wTW9uaXRv
cmluZ1BsYXliYWNrVGFyZ2V0cygpCit7CisgICAgZGV2aWNlUGlja2VyUHJveHkoKS5zdG9wTW9u
aXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hv
b3NlUGxheWJhY2tUYXJnZXQoY29uc3QgV2ViQ29yZTo6QVZQbGF5YmFja1RhcmdldCYgdGFyZ2V0
KQoreworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQodGFyZ2V0
KSwgbV9wYWdlSUQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZXh0ZXJuYWxPdXRwdXREZXZp
Y2VBdmFpbGFibGVEaWRDaGFuZ2UoYm9vbCBhdmFpbGFibGUpCit7CisgICAgaWYgKCFpc1ZhbGlk
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UoYXZhaWxhYmxlKSwgbV9w
YWdlSUQpOworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAxODEzMjkpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTExMSw2ICsxMTEsMTAgQEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyc0d0ay5oIgogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9T
KQorI2luY2x1ZGUgIldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5oIgorI2VuZGlmCisK
IG5hbWVzcGFjZSBBUEkgewogY2xhc3MgQ29udGV4dE1lbnVDbGllbnQ7CiBjbGFzcyBGaW5kQ2xp
ZW50OwpAQCAtMjU4LDYgKzI2Miw5IEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6
Ok9iamVjdEkKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKICAgICAsIHB1YmxpYyBXZWJD
b2xvclBpY2tlcjo6Q2xpZW50CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQorICAgICwgcHVibGljIFdlYkFWUGxheWJhY2tUYXJn
ZXRQaWNrZXJQcm94eTo6Q2xpZW50CisjZW5kaWYKICAgICAsIHB1YmxpYyBXZWJQb3B1cE1lbnVQ
cm94eTo6Q2xpZW50CiAgICAgLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICAsIHB1
YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIgewpAQCAtOTk5LDYgKzEwMDYsMTcgQEAgcHVibGljOgog
ICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBib29sIHNo
b3VsZFNhbXBsZSk7CiAgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGNvbnN0IFN0cmlu
ZyYgdmFsdWUsIGJvb2wgc2hvdWxkU2FtcGxlKTsKIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisgICAgV2ViQVZQbGF5YmFja1RhcmdldFBp
Y2tlclByb3h5JiBkZXZpY2VQaWNrZXJQcm94eSgpOworICAgIHZvaWQgc2hvd1BsYXliYWNrVGFy
Z2V0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGJvb2wgaGFzVmlkZW8pOworICAg
IHZvaWQgc3RhcnRpbmdNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCk7CisgICAgdm9pZCBzdG9w
TW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpOworCisgICAgLy8gV2ViQVZQbGF5YmFja1Rhcmdl
dFBpY2tlclByb3h5OjpDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hvb3NlUGxheWJhY2tU
YXJnZXQoY29uc3QgV2ViQ29yZTo6QVZQbGF5YmFja1RhcmdldCYpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShib29sKSBv
dmVycmlkZTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50
JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ29uZmln
dXJhdGlvbiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CkBAIC0xNjYyLDYgKzE2
ODAsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdmlld1N0YXRlQ2hhbmdlV2FudHNTeW5jaHJv
bm91c1JlcGx5OwogICAgIFZlY3Rvcjx1aW50NjRfdD4gbV9uZXh0Vmlld1N0YXRlQ2hhbmdlQ2Fs
bGJhY2tzOwogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRG
T1JNKElPUykKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclBy
b3h5PiBtX3BsYXliYWNrVGFyZ2V0UGlja2VyOworI2VuZGlmCisKICAgICBib29sIG1faXNQbGF5
aW5nQXVkaW87CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE4MTMyOSkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAg
LTQyMyw0ICs0MjMsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNpZiBQTEFURk9S
TShNQUMpCiAgICAgRGlkUGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0KHN0cnVjdCBXZWJLaXQ6OkFj
dGlvbk1lbnVIaXRUZXN0UmVzdWx0IHJlc3VsdCwgYm9vbCBmb3JJbW1lZGlhdGVBY3Rpb24sIFdl
YktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAjZW5kaWYKKworI2lmIEVOQUJMRShXSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisgICAgU2hvd1BsYXliYWNrVGFyZ2V0
UGlja2VyKFdlYkNvcmU6OkZsb2F0UmVjdCBwaWNrZXJMb2NhdGlvbiwgYm9vbCBoYXNWaWRlbykK
KyAgICBTdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKQorICAgIFN0b3BNb25pdG9y
aW5nUGxheWJhY2tUYXJnZXRzKCkKKyNlbmRpZgogfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaAkocmV2aXNpb24gMTgxMzI5KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDQsNiArMjA0LDEwIEBAIHByaXZhdGU6CiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5B
VElWRVMpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29u
dHJvbGxlcj4gbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI7CiAjZW5kaWYKKworI2lmIEVO
QUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5PiBjcmVhdGVQbGF5YmFja1RhcmdldFBp
Y2tlcihXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJ
bXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGwubW0JKHJldmlzaW9uIDE4MTMyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGwubW0JKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDEwIEBA
CiAjaW1wb3J0IDxBcHBLaXQvTlNUZXh0QWx0ZXJuYXRpdmVzLmg+CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisjaW5jbHVkZSAiV2ViQVZQbGF5YmFja1Rh
cmdldFBpY2tlclByb3h5TWFjLmgiCisjZW5kaWYKKwogQGludGVyZmFjZSBOU0FwcGxpY2F0aW9u
IChXZWJOU0FwcGxpY2F0aW9uRGV0YWlscykKIC0gKE5TQ3Vyc29yICopX2N1cnNvclJlY3RDdXJz
b3I7CiBAZW5kCkBAIC03ODgsNiArNzkyLDEyIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnNob3dQ
bGF0Zm9ybUNvbnRleHQKICAgICBbbWVudSBwb3BVcE1lbnVQb3NpdGlvbmluZ0l0ZW06bmlsIGF0
TG9jYXRpb246bG9jYXRpb24gaW5WaWV3Om1fd2tWaWV3XTsKIH0KIAorI2lmIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpCitzdGQ6OnVuaXF1ZV9wdHI8V2ViQVZQbGF5YmFja1Rhcmdl
dFBpY2tlclByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUGxheWJhY2tUYXJnZXRQaWNrZXIo
V2ViUGFnZVByb3h5KiBwYWdlKQoreworICAgIHJldHVybiBXZWJBVlBsYXliYWNrVGFyZ2V0UGlj
a2VyUHJveHlNYWM6OmNyZWF0ZSgqcGFnZSk7Cit9CisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQVZQbGF5YmFj
a1RhcmdldFBpY2tlclByb3h5TWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQVZQbGF5YmFja1RhcmdldFBp
Y2tlclByb3h5TWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjX2gKKyNkZWZpbmUg
V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjX2gKKworI2lmIEVOQUJMRShXSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisKKyNpbXBvcnQgIldlYkFWUGxh
eWJhY2tUYXJnZXRQaWNrZXJQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBBVlBs
YXliYWNrVGFyZ2V0OworY2xhc3MgRmxvYXRSZWN0OworfQorCitPQkpDX0NMQVNTIEFWT3V0cHV0
RGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXI7CitPQkpDX0NMQVNTIFdlYkFWT3V0cHV0RGV2aWNl
UGlja2VyTWVudUNvbnRyb2xsZXJIZWxwZXI7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMgOiBwdWJsaWMgV2ViQVZQbGF5YmFj
a1RhcmdldFBpY2tlclByb3h5IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJBVlBsYXli
YWNrVGFyZ2V0UGlja2VyUHJveHlNYWMpOworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkFWUGxh
eWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYygpOworCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM+IGNyZWF0ZShXZWJBVlBsYXliYWNr
VGFyZ2V0UGlja2VyUHJveHk6OkNsaWVudCYpOworCisgICAgdmlydHVhbCB2b2lkIHNob3dQbGF5
YmFja1RhcmdldFBpY2tlcihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBib29sKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRpbmdNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN0b3BNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRz
KCkgb3ZlcnJpZGU7CisgICAgCisgICAgdm9pZCBhdmFpbGFibGVEZXZpY2VzRGlkQ2hhbmdlKCk7
CisgICAgdm9pZCBjdXJyZW50RGV2aWNlRGlkQ2hhbmdlKCk7CisKK3ByaXZhdGU6CisgICAgZXhw
bGljaXQgV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjKFdlYkFWUGxheWJhY2tUYXJn
ZXRQaWNrZXJQcm94eTo6Q2xpZW50Jik7CisKKyAgICBBVk91dHB1dERldmljZVBpY2tlck1lbnVD
b250cm9sbGVyICpkZXZpY2VQaWNrZXIoKTsKKyAgICB2b2lkIG91dHB1dGVEZXZpY2VBdmFpbGFi
aWxpdHlDaGFuZ2VkVGltZXJGaXJlZCgpOworCisgICAgUmV0YWluUHRyPEFWT3V0cHV0RGV2aWNl
UGlja2VyTWVudUNvbnRyb2xsZXI+IG1fZGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXI7CisgICAg
UmV0YWluUHRyPFdlYkFWT3V0cHV0RGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXJIZWxwZXI+IG1f
ZGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXJEZWxlZ2F0ZTsKKyAgICBSdW5Mb29wOjpUaW1lcjxX
ZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM+IG1fZGV2aWNlQ2hhbmdlVGltZXI7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQpCisKKyNlbmRpZiAvLyBXZWJDb250ZXh0TWVudVByb3h5TWFjX2gKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQVZQbGF5YmFja1RhcmdldFBpY2tl
clByb3h5TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjLm1tCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOTUgQEAKKy8qIAorICogQ29weXJpZ2h0
IChjKSAyMDEzIFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYy5oIgorCisj
aWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykKKwor
I2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dC5oPgorI2lt
cG9ydCA8QVZLaXQvQVZPdXRwdXREZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlci5oPgorI2ltcG9y
dCA8V2ViQ29yZS9BVlBsYXliYWNrVGFyZ2V0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVj
dC5oPgorI2ltcG9ydCA8V2ViQ29yZS9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8b2JqYy9ydW50
aW1lLmg+CisjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgorCit0eXBlZGVmIEFWT3V0cHV0RGV2
aWNlUGlja2VyQ29udGV4dCBBVk91dHB1dERldmljZVBpY2tlckNvbnRleHRUeXBlOwordHlwZWRl
ZiBBVk91dHB1dERldmljZVBpY2tlck1lbnVDb250cm9sbGVyIEFWT3V0cHV0RGV2aWNlUGlja2Vy
TWVudUNvbnRyb2xsZXJUeXBlOworCitTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKEFWRm91
bmRhdGlvbikKK1NPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoQVZLaXQpCisKK1NPRlRfTElO
S19DTEFTUyhBVkZvdW5kYXRpb24sIEFWT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dCkKK1NPRlRf
TElOS19DTEFTUyhBVktpdCwgQVZPdXRwdXREZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlcikKK1NP
RlRfTElOS19DTEFTUyhBVktpdCwgQVZPdXRwdXREZXZpY2VQaWNrZXJEZWxlZ2F0ZSkKKwordXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKKworQGludGVyZmFjZSBXZWJBVk91dHB1dERldmljZVBpY2tl
ck1lbnVDb250cm9sbGVySGVscGVyIDogTlNPYmplY3QgeworICAgIFdlYkFWUGxheWJhY2tUYXJn
ZXRQaWNrZXJQcm94eU1hYyogbV9jYWxsYmFjazsKK30KKworLSAoaWQpaW5pdFdpdGhDYWxsYmFj
azooV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjKiljYWxsYmFjazsKKy0gKHZvaWQp
Y2xlYXJDYWxsYmFjazsKKy0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG9m
T2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2UgY29udGV4dDoo
dm9pZCAqKWNvbnRleHQ7CitAZW5kCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGQ6OnVuaXF1
ZV9wdHI8V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjPiBXZWJBVlBsYXliYWNrVGFy
Z2V0UGlja2VyUHJveHlNYWM6OmNyZWF0ZShXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHk6
OkNsaWVudCYgY2xpZW50KQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8V2ViQVZQbGF5
YmFja1RhcmdldFBpY2tlclByb3h5TWFjPihuZXcgV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclBy
b3h5TWFjKGNsaWVudCkpOworfQorCitXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6
OldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYyhXZWJBVlBsYXliYWNrVGFyZ2V0UGlj
a2VyUHJveHk6OkNsaWVudCYgY2xpZW50KQorICAgIDogV2ViQVZQbGF5YmFja1RhcmdldFBpY2tl
clByb3h5KGNsaWVudCkKKyAgICAsIG1fZGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXJEZWxlZ2F0
ZShhZG9wdE5TKFtbV2ViQVZPdXRwdXREZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlckhlbHBlciBh
bGxvY10gaW5pdFdpdGhDYWxsYmFjazp0aGlzXSkpCisgICAgLCBtX2RldmljZUNoYW5nZVRpbWVy
KFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1h
Yzo6b3V0cHV0ZURldmljZUF2YWlsYWJpbGl0eUNoYW5nZWRUaW1lckZpcmVkKQoreworfQorCitX
ZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6On5XZWJBVlBsYXliYWNrVGFyZ2V0UGlj
a2VyUHJveHlNYWMoKQoreworICAgIG1fZGV2aWNlQ2hhbmdlVGltZXIuc3RvcCgpOworICAgIFtt
X2RldmljZVBpY2tlck1lbnVDb250cm9sbGVyRGVsZWdhdGUgY2xlYXJDYWxsYmFja107CisKKyAg
ICBpZiAobV9kZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlcikgeworICAgICAgICBbbV9kZXZpY2VQ
aWNrZXJNZW51Q29udHJvbGxlci5nZXQoKSByZW1vdmVPYnNlcnZlcjptX2RldmljZVBpY2tlck1l
bnVDb250cm9sbGVyRGVsZWdhdGUuZ2V0KCkgZm9yS2V5UGF0aDpAImV4dGVybmFsT3V0cHV0RGV2
aWNlQXZhaWxhYmxlIl07CisgICAgICAgIFttX2RldmljZVBpY2tlck1lbnVDb250cm9sbGVyLmdl
dCgpIHJlbW92ZU9ic2VydmVyOm1fZGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXJEZWxlZ2F0ZS5n
ZXQoKSBmb3JLZXlQYXRoOkAiZXh0ZXJuYWxPdXRwdXREZXZpY2VQaWNrZWQiXTsKKyAgICAgICAg
bV9kZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlciA9IG5pbDsKKyAgICB9Cit9CisKK3ZvaWQgV2Vi
QVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjOjpvdXRwdXRlRGV2aWNlQXZhaWxhYmlsaXR5
Q2hhbmdlZFRpbWVyRmlyZWQoKQoreworICAgIGlmICghbV9kZXZpY2VQaWNrZXJNZW51Q29udHJv
bGxlciB8fCAhbV9jbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2xpZW50LT5leHRl
cm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShkZXZpY2VQaWNrZXIoKS5leHRlcm5h
bE91dHB1dERldmljZUF2YWlsYWJsZSk7Cit9CisKK3ZvaWQgV2ViQVZQbGF5YmFja1RhcmdldFBp
Y2tlclByb3h5TWFjOjphdmFpbGFibGVEZXZpY2VzRGlkQ2hhbmdlKCkKK3sKKyAgICBpZiAoIW1f
Y2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RldmljZUNoYW5nZVRpbWVyLnN0b3Ao
KTsKKyAgICBtX2RldmljZUNoYW5nZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKworQVZPdXRw
dXREZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlclR5cGUgKldlYkFWUGxheWJhY2tUYXJnZXRQaWNr
ZXJQcm94eU1hYzo6ZGV2aWNlUGlja2VyKCkKK3sKKyAgICBpZiAoIW1fZGV2aWNlUGlja2VyTWVu
dUNvbnRyb2xsZXIpIHsKKyAgICAgICAgUmV0YWluUHRyPEFWT3V0cHV0RGV2aWNlUGlja2VyQ29u
dGV4dFR5cGU+IGNvbnRleHQgPSBhZG9wdE5TKFtbZ2V0QVZPdXRwdXREZXZpY2VQaWNrZXJDb250
ZXh0Q2xhc3MoKSBhbGxvY10gaW5pdF0pOworICAgICAgICBtX2RldmljZVBpY2tlck1lbnVDb250
cm9sbGVyID0gYWRvcHROUyhbW2dldEFWT3V0cHV0RGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXJD
bGFzcygpIGFsbG9jXSBpbml0V2l0aE91dHB1dERldmljZVBpY2tlckNvbnRleHQ6Y29udGV4dC5n
ZXQoKV0pOworCisgICAgICAgIFttX2RldmljZVBpY2tlck1lbnVDb250cm9sbGVyLmdldCgpIGFk
ZE9ic2VydmVyOm1fZGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXJEZWxlZ2F0ZS5nZXQoKSBmb3JL
ZXlQYXRoOkAiZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUiIG9wdGlvbnM6TlNLZXlWYWx1
ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Om51bGxwdHJdOworICAgICAgICBbbV9kZXZpY2VQ
aWNrZXJNZW51Q29udHJvbGxlci5nZXQoKSBhZGRPYnNlcnZlcjptX2RldmljZVBpY2tlck1lbnVD
b250cm9sbGVyRGVsZWdhdGUuZ2V0KCkgZm9yS2V5UGF0aDpAImV4dGVybmFsT3V0cHV0RGV2aWNl
UGlja2VkIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpudWxs
cHRyXTsKKworICAgICAgICBpZiAoZGV2aWNlUGlja2VyKCkuZXh0ZXJuYWxPdXRwdXREZXZpY2VB
dmFpbGFibGUpCisgICAgICAgICAgICBhdmFpbGFibGVEZXZpY2VzRGlkQ2hhbmdlKCk7CisgICAg
fQorCisgICAgcmV0dXJuIG1fZGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXIuZ2V0KCk7Cit9CisK
K3ZvaWQgV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjOjpzaG93UGxheWJhY2tUYXJn
ZXRQaWNrZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBsb2NhdGlvbiwgYm9vbCkKK3sKKyAg
ICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBbZGV2aWNlUGlja2VyKCkg
c2hvd01lbnVGb3JSZWN0OmxvY2F0aW9uIGFwcGVhcmFuY2VOYW1lOk5TQXBwZWFyYW5jZU5hbWVW
aWJyYW50TGlnaHRdOworfQorCit2b2lkIFdlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1h
Yzo6Y3VycmVudERldmljZURpZENoYW5nZSgpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9jbGllbnQtPmRpZENob29zZVBsYXliYWNrVGFyZ2V0KFdlYkNv
cmU6OkFWUGxheWJhY2tUYXJnZXQoW2RldmljZVBpY2tlcigpIG91dHB1dERldmljZVBpY2tlckNv
bnRleHRdKSk7Cit9CisKK3ZvaWQgV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjOjpz
dGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKQoreworICAgIGRldmljZVBpY2tlcigp
OworfQorCit2b2lkIFdlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYzo6c3RvcE1vbml0
b3JpbmdQbGF5YmFja1RhcmdldHMoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
QGltcGxlbWVudGF0aW9uIFdlYkFWT3V0cHV0RGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXJIZWxw
ZXIKKy0gKGlkKWluaXRXaXRoQ2FsbGJhY2s6KFdlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94
eU1hYyopY2FsbGJhY2sKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKworICAgIG1fY2FsbGJhY2sgPSBjYWxsYmFjazsKKworICAgIHJldHVy
biBzZWxmOworfQorCistICh2b2lkKWNsZWFyQ2FsbGJhY2sKK3sKKyAgICBtX2NhbGxiYWNrID0g
bmlsOworfQorCistICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0aCBvZk9iamVj
dDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQg
Kiljb250ZXh0Cit7CisgICAgVU5VU0VEX1BBUkFNKGNoYW5nZSk7CisgICAgVU5VU0VEX1BBUkFN
KGNvbnRleHQpOworICAgIFVOVVNFRF9QQVJBTShvYmplY3QpOworCisgICAgaWYgKCFtX2NhbGxi
YWNrKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIVtrZXlQYXRoIGlzRXF1YWxUb1N0cmlu
ZzpAImV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlIl0gJiYgIVtrZXlQYXRoIGlzRXF1YWxU
b1N0cmluZzpAImV4dGVybmFsT3V0cHV0RGV2aWNlUGlja2VkIl0pCisgICAgICAgIHJldHVybjsK
KworICAgIFJldGFpblB0cjxXZWJBVk91dHB1dERldmljZVBpY2tlck1lbnVDb250cm9sbGVySGVs
cGVyPiBzdHJvbmdTZWxmID0gc2VsZjsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHN0cm9uZ0tl
eVBhdGggPSBrZXlQYXRoOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYsIHN0cm9u
Z0tleVBhdGhdIHsKKyAgICAgICAgV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjKiBj
YWxsYmFjayA9IHN0cm9uZ1NlbGYtPm1fY2FsbGJhY2s7CisgICAgICAgIGlmICghY2FsbGJhY2sp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKFtzdHJvbmdLZXlQYXRoIGlzRXF1
YWxUb1N0cmluZzpAImV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlIl0pCisgICAgICAgICAg
ICBjYWxsYmFjay0+YXZhaWxhYmxlRGV2aWNlc0RpZENoYW5nZSgpOworICAgICAgICBlbHNlIGlm
IChbc3Ryb25nS2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJleHRlcm5hbE91dHB1dERldmljZVBp
Y2tlZCJdKQorICAgICAgICAgICAgY2FsbGJhY2stPmN1cnJlbnREZXZpY2VEaWRDaGFuZ2UoKTsK
KyAgICB9KTsKK30KK0BlbmQKKworI2VuZGlmIC8vIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAxODEzMjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTc2LDYgKzc2LDEw
IEBACiAJCTAwQjk2NjE5MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50Lm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBCOTY2MTcxOEUyNUFFMTAw
Q0UxRjg4IC8qIEZpbmRDbGllbnQubW0gKi87IH07CiAJCTAwQjk2NjFBMThFMjVBRTEwMENFMUY4
OCAvKiBGaW5kQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwMEI5NjYxODE4RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVudC5oICovOyB9Owog
CQkwNzZFODg0RTFBMTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NkU4ODREMUExM0NB
REYwMDVFOTBGQyAvKiBBUElDb250ZXh0TWVudUNsaWVudC5oICovOyB9OworCQkwNzkyMTY0QzFB
QTU1MDE5MDBBM0MwNDkgLyogV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTIxNjQ4MUFBNTRF
OUQwMEEzQzA0OSAvKiBXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuY3BwICovOyB9Owor
CQkwNzkyMTY0RDFBQTU1MDFGMDBBM0MwNDkgLyogV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclBy
b3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzky
MTY0OTFBQTU0RTlEMDBBM0MwNDkgLyogV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5Lmgg
Ki87IH07CisJCTA3OTIxNjUwMUFBNTUyOEEwMEEzQzA0OSAvKiBXZWJBVlBsYXliYWNrVGFyZ2V0
UGlja2VyUHJveHlNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3OTIxNjRFMUFBNTUyOEEwMEEzQzA0OSAvKiBXZWJBVlBsYXliYWNrVGFyZ2V0UGlj
a2VyUHJveHlNYWMuaCAqLzsgfTsKKwkJMDc5MjE2NTExQUE1NTI4QTAwQTNDMDQ5IC8qIFdlYkFW
UGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTIxNjRGMUFBNTUyOEEwMEEzQzA0OSAvKiBXZWJBVlBs
YXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMubW0gKi87IH07CiAJCTBGMEMzNjU4MThDMDUxQkEw
MEY2MDdENyAvKiBSZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQzM2NTcxOEMwNTFCQTAwRjYwN0Q3IC8qIFJl
bW90ZUxheWVyVHJlZUhvc3RJT1MubW0gKi87IH07CiAJCTBGMEMzNjVBMThDMDU1NTgwMEY2MDdE
NyAvKiBMYXllclJlcHJlc2VudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjBDMzY1OTE4QzA1NTU4MDBGNjA3RDcgLyogTGF5ZXJSZXByZXNl
bnRhdGlvbi5oICovOyB9OwogCQkwRjBDMzY1QzE4QzA1Q0ExMDBGNjA3RDcgLyogUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEMzNjVCMThDMDVDQTEwMEY2MDdENyAvKiBSZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tICovOyB9OwpAQCAtMjE1OCw2ICsyMTYyLDEwIEBA
CiAJCTAwQjk2NjE4MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbmRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDc2RTg4NEQxQTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNvbnRleHRNZW51Q2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUNvbnRleHRNZW51Q2xpZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NkU4ODRGMUExM0NCQzYwMDVFOTBG
QyAvKiBBUElJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBUElJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNs
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzkyMTY0ODFBQTU0RTlEMDBB
M0MwNDkgLyogV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIxNjQ5MUFBNTRFOUQwMEEzQzA0
OSAvKiBXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIxNjRFMUFBNTUyOEEwMEEzQzA0OSAvKiBXZWJBVlBs
YXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTA3OTIxNjRGMUFBNTUyOEEwMEEzQzA0OSAvKiBXZWJBVlBsYXliYWNr
VGFyZ2V0UGlja2VyUHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA4NjdENkE1RkU4NDAzMDdDMDJBQUMwNyAvKiBBcHBLaXQuZnJh
bWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
d3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBBcHBLaXQuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJz
b2x1dGU+IjsgfTsKIAkJMDg5QzE2NjdGRTg0MTE1OEMwMkFBQzA3IC8qIEVuZ2xpc2ggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3M7IG5hbWUgPSBFbmdsaXNoOyBwYXRoID0gRW5nbGlzaC5s
cHJvai9JbmZvUGxpc3Quc3RyaW5nczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYw
QzM2NTcxOEMwNTFCQTAwRjYwN0Q3IC8qIFJlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBSZW1vdGVMYXllclRyZWVIb3N0SU9T
Lm1tOyBwYXRoID0gaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC02MTQ1LDYgKzYxNTMsOCBAQAogCQkJCTUxMkUzNTIwMTMwQjU1MDEw
MEFCRDE5QSAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclByb3h5LmNwcCAqLywKIAkJCQk1
MTJFMzUyMTEzMEI1NTAxMDBBQkQxOUEgLyogV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJQcm94
eS5oICovLAogCQkJCTUxMkUzNUYwMTMwQjYzOEMwMEFCRDE5QSAvKiBXZWJBcHBsaWNhdGlvbkNh
Y2hlTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCTA3OTIxNjQ4MUFBNTRFOUQwMEEz
QzA0OSAvKiBXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuY3BwICovLAorCQkJCTA3OTIx
NjQ5MUFBNTRFOUQwMEEzQzA0OSAvKiBXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuaCAq
LywKIAkJCQlCQzcyQkExQjExRTY0OTA3MDAxRUI0RUEgLyogV2ViQmFja0ZvcndhcmRMaXN0LmNw
cCAqLywKIAkJCQlCQzcyQkExQzExRTY0OTA3MDAxRUI0RUEgLyogV2ViQmFja0ZvcndhcmRMaXN0
LmggKi8sCiAJCQkJRjAzNjk3ODcxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyLmNw
cCAqLywKQEAgLTcwMDMsNiArNzAxMyw4IEBACiAJCQkJMkQxMjVDNUQxODU3RUEwNTAwM0JBM0NC
IC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbSAqLywKIAkJCQkyRDZDRDExNzE4OTA1OEE1
MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUuaCAqLywKIAkJCQkyRDZDRDExODE4OTA1OEE1
MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUubW0gKi8sCisJCQkJMDc5MjE2NEUxQUE1NTI4
QTAwQTNDMDQ5IC8qIFdlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYy5oICovLAorCQkJ
CTA3OTIxNjRGMUFBNTUyOEEwMEEzQzA0OSAvKiBXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJv
eHlNYWMubW0gKi8sCiAJCQkJNzI4RTg2RUYxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlj
a2VyTWFjLmggKi8sCiAJCQkJNzI4RTg2RjAxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlj
a2VyTWFjLm1tICovLAogCQkJCTUxQUNCQjlFMTI3QThGMkMwMEQyMDNCOSAvKiBXZWJDb250ZXh0
TWVudVByb3h5TWFjLmggKi8sCkBAIC04MDk1LDYgKzgxMDcsNyBAQAogCQkJCTdDMzYxRDc5MTky
ODAzQkQwMDM2QTU5RCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzRjg4OUQxNTE4ODc3OEM5MDBGRUFEQUYgLyogV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUNENTVBQTEyOEUy
OTRGMDAxMzNDODUgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTA3OTIxNjREMUFBNTUwMUYwMEEzQzA0OSAvKiBXZWJBVlBsYXliYWNrVGFy
Z2V0UGlja2VyUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5MjMyREY0MThCMjlENjgwMEQw
NTk2RiAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0TWFjLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyRDA3MzBBMzE5RjlDN0RBMDBFOUQ5QzQgLyogV0tBY3Rpb25NZW51Q29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTM0QjcyNDQxOUY1QjlCRTAwQUU5NkQ2IC8qIFdLQWN0aW9u
TWVudUl0ZW1UeXBlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC04Mjg0LDYgKzgyOTcsNyBAQAogCQkJ
CTFBQjhBMUY0MTg0MDBCOEYwMEU5QUU2OSAvKiBXS1BhZ2VGaW5kQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUI4QTFGNjE4NDAwQjlEMDBFOUFFNjkgLyogV0tQYWdlRmluZE1hdGNoZXND
bGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjhBMUYwMTg0MDBCMDAwMEU5QUU2OSAvKiBX
S1BhZ2VGb3JtQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzkyMTY1MDFBQTU1MjhBMDBB
M0MwNDkgLyogV2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzdCNjMzNzEyQTQ1QUJBMDBEMTc0QTQgLyogV0tQYWdlR3JvdXAuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBQjhBMUVDMTg0MDA4MDkwMEU5QUU2OSAvKiBXS1BhZ2VMb2FkZXJDbGll
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMkQwMjE5MTJBQzQyNkMwMEU3MzJBMyAvKiBXS1Bh
Z2VMb2FkVHlwZXMuaCBpbiBIZWFkZXJzICovLApAQCAtOTU0OSw2ICs5NTYzLDcgQEAKIAkJCQkw
RkNCNEU2MzE4QkJFM0Q5MDAwRkNGQzkgLyogUGFnZUNsaWVudEltcGwubW0gaW4gU291cmNlcyAq
LywKIAkJCQkwRkNCNEU0NzE4QkJFMDQ0MDAwRkNGQzkgLyogUGFnZUNsaWVudEltcGxJT1MubW0g
aW4gU291cmNlcyAqLywKIAkJCQkxQUM3NTM3QjE4M0E5RkRCMDA3MkNCMTUgLyogUGFnZUxvYWRT
dGF0ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzkyMTY1MTFBQTU1MjhBMDBBM0MwNDkgLyog
V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QzU3NEE1ODIxMkU2NjY4MTAwMkRGRTk4IC8qIFBhc3RlYm9hcmRUeXBlcy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUUxOTU4MkQ2MTUzQ0MwNTQwMEI2MDg3NSAvKiBQREZLaXRJbXBvcnRzLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMkQ4NzBEMTAxNjIzNEZGRTAwMEEzRjIwIC8qIFBERlBsdWdpbi5t
bSBpbiBTb3VyY2VzICovLApAQCAtOTc0Niw2ICs5NzYxLDcgQEAKIAkJCQlCQzExMUE1RTExMkY0
RkJCMDAzMzdCQUIgLyogV2ViRWRpdG9yQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJE
MjhGM0U2MTg4NUNDQzEwMDRCOUVBRSAvKiBXZWJFZGl0b3JDbGllbnRJT1MubW0gaW4gU291cmNl
cyAqLywKIAkJCQlDNTIzN0Y2MDEyNDQxQ0EzMDA3ODA0NzIgLyogV2ViRWRpdG9yQ2xpZW50TWFj
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMDc5MjE2NEMxQUE1NTAxOTAwQTNDMDQ5IC8qIFdlYkFW
UGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzExMUFF
MDExMkY1QkMyMDAzMzdCQUIgLyogV2ViRXJyb3JzTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QzAzMzdEQUUxMjdBMjRGRTAwOEZGNEY0IC8qIFdlYkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDMDMyREJBMTBGNDM4MEYwMDU4QzE1QSAvKiBXZWJFdmVudENvbnZlcnNpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvbS5hcHBsZS5X
ZWJQcm9jZXNzLnNiLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Y29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4JKHJldmlzaW9uIDE4MTMyOSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTI5NywzICsyOTcsMTggQEAKICAgICAgICAoaG9tZS1zdWJwYXRoICIvTGlicmFyeS9D
b21wb25lbnRzIikKICAgICAgICAoaG9tZS1zdWJwYXRoICIvTGlicmFyeS9LZXlib2FyZCBMYXlv
dXRzIikKICAgICAgICAoaG9tZS1zdWJwYXRoICIvTGlicmFyeS9JbnB1dCBNZXRob2RzIikpCisK
Kzs7IEFpclBsYXkKKzs7IEZJWE1FOiByZW1vdmUgdGhpcyBhcyBkZXNjcmliZWQgaW4gcmRhcjov
LzE5ODY5NDQ4CisoYWxsb3cgbWFjaC1sb29rdXAKKyAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBs
ZS5jb3JlbWVkaWEuZW5kcG9pbnQuYWlycGxheXVpYWdlbnQiKQorICAgIChnbG9iYWwtbmFtZSAi
Y29tLmFwcGxlLmNvcmVtZWRpYS5lbmRwb2ludHN0cmVhbS5haXJwbGF5dWlhZ2VudCIpCisgICAg
KGdsb2JhbC1uYW1lICJjb20uYXBwbGUuY29yZW1lZGlhLmVuZHBvaW50cGxheWJhY2tzZXNzaW9u
LmFpcnBsYXl1aWFnZW50IikKKyAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5jb3JlbWVkaWEu
ZW5kcG9pbnRwaWNrZXIiKSkKKworOzsgQWlyUGxheQorKGFsbG93IG1hY2gtbG9va3VwCisgICAg
KGdsb2JhbC1uYW1lICJjb20uYXBwbGUuY29yZW1lZGlhLmVuZHBvaW50LnhwYyIpCisgICAgKGds
b2JhbC1uYW1lICJjb20uYXBwbGUuY29yZW1lZGlhLmVuZHBvaW50c3RyZWFtLnhwYyIpCisgICAg
KGdsb2JhbC1uYW1lICJjb20uYXBwbGUuY29yZW1lZGlhLmVuZHBvaW50cGxheWJhY2tzZXNzaW9u
LnhwYyIpCisgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuY29yZW1lZGlhLmVuZHBvaW50cGlj
a2VyLnhwYyIpKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24gMTgxMzI5
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAxLDQgKzExMDEsMjYgQEAgYm9vbCBXZWJD
aHJvbWVDbGllbnQ6OnNob3VsZERpc3BhdGNoRmFrZQogICAgIHJldHVybiBtX3BhZ2UtPnNob3Vs
ZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cygpOwogfQogCisjaWYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50
OjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0
aW9uLCBib29sIGlzVmlkZW8pCit7CisgICAgLy8gICAgIEludFBvaW50IHNjcm9sbFBvc2l0aW9u
QXROZXdTY2FsZSA9IG1haW5GcmFtZVZpZXcoKS0+cm9vdFZpZXdUb0NvbnRlbnRzKC1jZW50ZXJJ
blZpZXdDb29yZGluYXRlcyk7CisKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fcGFnZS0+
bWFpbkZyYW1lKCktPnZpZXcoKTsKKyAgICBGbG9hdFJlY3QgcmVjdChmcmFtZVZpZXctPmNvbnRl
bnRzVG9Sb290VmlldyhmcmFtZVZpZXctPndpbmRvd1RvQ29udGVudHMocG9zaXRpb24pKSwgRmxv
YXRTaXplKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93
UGxheWJhY2tUYXJnZXRQaWNrZXIocmVjdCwgaXNWaWRlbykpOworfQorCit2b2lkIFdlYkNocm9t
ZUNsaWVudDo6c3RhcnRpbmdNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkKK3sKKyAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RhcnRpbmdNb25pdG9yaW5nUGxheWJh
Y2tUYXJnZXRzKCkpOworfQorCit2b2lkIFdlYkNocm9tZUNsaWVudDo6c3RvcE1vbml0b3JpbmdQ
bGF5YmFja1RhcmdldHMoKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpTdG9wTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpKTsKK30KKyNlbmRpZgorCisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCShyZXZpc2lvbiAx
ODEzMjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTAsNiArMzEwLDEyIEBAIHByaXZhdGU6
CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAm
JiAhUExBVEZPUk0oSU9TKQorICAgIHZpcnR1YWwgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNr
ZXIoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBib29sKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgc3RhcnRpbmdNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIHN0b3BNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkgb3ZlcnJpZGU7Cisj
ZW5kaWYKKwogICAgIFN0cmluZyBtX2NhY2hlZFRvb2xUaXA7CiAgICAgbXV0YWJsZSBSZWZQdHI8
V2ViRnJhbWU+IG1fY2FjaGVkRnJhbWVTZXRMYXJnZXN0RnJhbWU7CiAgICAgbXV0YWJsZSBib29s
IG1fY2FjaGVkTWFpbkZyYW1lSGFzSG9yaXpvbnRhbFNjcm9sbGJhcjsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMTgxMzI5KQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMTE4LDYgKzExOCw3IEBAIGNsYXNzIENvbm5lY3Rpb247CiB9CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIEFWUGxheWJhY2tUYXJnZXQ7CiBjbGFzcyBEb2N1bWVudExvYWRl
cjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEZyYW1lOwpAQCAtMTQyLDcgKzE0Myw2
IEBAIHN0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQ7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewot
CiBjbGFzcyBEcmF3aW5nQXJlYTsKIGNsYXNzIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0
OwogY2xhc3MgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOwpAQCAtMTA5Myw2
ICsxMDkzLDExIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldFNob3VsZERpc3BhdGNoRmFrZU1v
dXNlTW92ZUV2ZW50cyhib29sIGRpc3BhdGNoKSB7IG1fc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VN
b3ZlRXZlbnRzID0gZGlzcGF0Y2g7IH0KIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpICYmICFQTEFURk9STShJT1MpCisgICAgdm9pZCBwbGF5YmFja1RhcmdldFNlbGVjdGVk
KGNvbnN0IFdlYkNvcmU6OkFWUGxheWJhY2tUYXJnZXQmIG91dHB1dERldmljZSkgY29uc3Q7Cisg
ICAgdm9pZCBwbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eURpZENoYW5nZShib29sKTsKKyNlbmRp
ZgorCiAgICAgdWludDY0X3QgbV9wYWdlSUQ7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6UGFnZT4gbV9wYWdlOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE4MTMyOSkKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MTEsNCArNDExLDEwIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5
UmVjZWl2ZXIgewogI2VuZGlmCiAKICAgICBTZXRTaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVF
dmVudHMoYm9vbCBzaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMpCisKKyNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQorICAgIFBsYXli
YWNrVGFyZ2V0U2VsZWN0ZWQoV2ViQ29yZTo6QVZQbGF5YmFja1RhcmdldCB0YXJnZXQpCisgICAg
UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UoYm9vbCBhdmFpbGFibGUpCisjZW5k
aWYKKwogfQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQ
YWdlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQkocmV2aXNpb24gMTgxMzI5KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04
Nyw2ICs4NywxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9odG1sZWRpdGluZy5oPgogI2ltcG9ydCA8
V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKQorI2luY2x1ZGUgPFdlYkNvcmUvQVZQbGF5YmFja1RhcmdldC5oPgorI2VuZGlmCisK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTExODcs
NiArMTE5MSwyMCBAQCB2b2lkIFdlYlBhZ2U6OnNldEZvbnQoY29uc3QgU3RyaW5nJiBmb250CiAg
ICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlGb250U3R5bGVzKGZvbnRGYW1pbHksIGZvbnRTaXplLCBm
b250VHJhaXRzKTsKIH0KIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYm
ICFQTEFURk9STShJT1MpCit2b2lkIFdlYlBhZ2U6OnBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQoY29u
c3QgV2ViQ29yZTo6QVZQbGF5YmFja1RhcmdldCYgcGxheWJhY2tUYXJnZXQpIGNvbnN0Cit7Cisg
ICAgQVZQbGF5YmFja1RhcmdldCBub25Db25zdFRhcmdldChwbGF5YmFja1RhcmdldC5kZXZpY2VQ
aWNrZXJDb250ZXh0KCkpOworICAgIG1fcGFnZS0+ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQobm9u
Q29uc3RUYXJnZXQpOworfQorCit2b2lkIFdlYlBhZ2U6OnBsYXliYWNrVGFyZ2V0QXZhaWxhYmls
aXR5RGlkQ2hhbmdlKGJvb2wgY2hhbmdlZCkKK3sKKyAgICBtX3BhZ2UtPnBsYXliYWNrVGFyZ2V0
QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKGNoYW5nZWQpOworfQorI2VuZGlmCisKKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxODEzNDApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0wMy0xMCAgRXJpYyBDYXJsc29uICA8
ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBVcGRhdGUgQWlyUGxheSBo
YW5kbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQyNTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKwogMjAxNS0wMy0xMCAg
VGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdGhl
IE1hYyBidWlsZCB3aXRoIGEgbmV3ZXIgY29tcGlsZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShy
ZXZpc2lvbiAxODEzMjkpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtMTAzLDYgKzEwMywxMCBAQCBF
TkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSU19tCiBFTkFCTEVfSU5TUEVDVE9S
X0FMVEVSTkFURV9ESVNQQVRDSEVSU19tYWNvc3hfMTAxMTAwID0gRU5BQkxFX0lOU1BFQ1RPUl9B
TFRFUk5BVEVfRElTUEFUQ0hFUlM7CiAKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRb
c2RrPWlwaG9uZSpdID0gRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsKK0VOQUJMRV9X
SVJFTEVTU19QTEFZQkFDS19UQVJHRVRbc2RrPW1hY29zeCpdID0gJChFTkFCTEVfV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUX21hY29zeF8kKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SKSkK
K0VOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwOTAgPSA7CitFTkFCTEVf
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDEwMDAgPSA7CitFTkFCTEVfV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDExMDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUOwogCiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTW3Nkaz1pcGhvbmUqXSA9ICQo
RU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfJChVU0VfSU5U
RVJOQUxfU0RLKSk7CiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFM
X1NES19ZRVMgPSBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248447</attachid>
            <date>2015-03-11 14:21:29 -0700</date>
            <delta_ts>2015-03-11 14:37:01 -0700</delta_ts>
            <desc>Updated patch.</desc>
            <filename>patch_32.txt</filename>
            <type>text/plain</type>
            <size>112015</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTM5NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBACisyMDE1LTAzLTExICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFVwZGF0ZSBB
aXJQbGF5IGhhbmRsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDI1NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNob3dQbGF5YmFja1Rhcmdl
dFBpY2tlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRkUGxheWJhY2tUYXJnZXRQ
aWNrZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZVBsYXliYWNr
VGFyZ2V0UGlja2VyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpjb25maWd1
cmVQbGF5YmFja1RhcmdldE1vbml0b3JpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OnJlcXVpcmVzUGxheWJhY2tUYXJnZXRSb3V0ZU1vbml0b3JpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkaWRDaG9vc2VQbGF5YmFja1RhcmdldCk6CisgICAgICAg
ICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlZ2lzdGVyV2l0aERvY3VtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVucmVnaXN0ZXJXaXRoRG9j
dW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTE1lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFTZXNzaW9u
OjpIVE1MTWVkaWFTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYVNlc3Npb246
OnJlZ2lzdGVyV2l0aERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYVNlc3Np
b246OnVucmVnaXN0ZXJXaXRoRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
U2Vzc2lvbjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYVNlc3Npb246Omhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYVNlc3Npb246OnNldEhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5
TGlzdGVuZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYVNlc3Npb246OmRpZENob29z
ZVBsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYVNlc3Npb246OmV4
dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYVNlc3Npb246OnJlcXVpcmVzUGxheWJhY2tUYXJnZXRSb3V0ZU1vbml0b3Jpbmcp
OgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhU2Vzc2lvbi5oOgorICAgICAgICAqIHBhZ2UvQ2hy
b21lQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6OmRpZENob29zZVBsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
OnBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6OmNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0TW9uaXRvcmluZyk6CisgICAgICAgICogcGFn
ZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpoYXNXaXJlbGVzc1BsYXliYWNrVGFy
Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnBsYXliYWNrVGFyZ2V0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTZXNzaW9uOjpjbGllbnREYXRhQnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNlc3Npb246OndpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURp
ZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OnJlcXVpcmVzUGxheWJh
Y2tUYXJnZXRSb3V0ZU1vbml0b3JpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9u
Q2xpZW50OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vz
c2lvbk1hbmFnZXI6OndpcmVsZXNzUm91dGVzQXZhaWxhYmxlQ2hhbmdlZCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlV2lyZUxlc3NUYXJnZXRNb25p
dG9yaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdl
cklPUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2Vy
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6ZXh0ZXJu
YWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UpOgorICAgICAgICAoLVtXZWJNZWRpYVNl
c3Npb25IZWxwZXIgd2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2U6XSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQVZQbGF5YmFja1RhcmdldC5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFWUGxheWJhY2tUYXJnZXQ6On5BVlBsYXliYWNrVGFyZ2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFWUGxheWJhY2tUYXJnZXQ6OkFWUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAo
V2ViQ29yZTo6QVZQbGF5YmFja1RhcmdldDo6c2V0RGV2aWNlUGlja2VyQ29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpBVlBsYXliYWNrVGFyZ2V0OjpkZXZpY2VQaWNrZXJDb250ZXh0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9BVlBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50Lmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QVZQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudDo6
fkFWUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpzZXRX
aXJlbGVzc1BsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpzZXRX
aXJlbGVzc1BsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vQVZQbGF5YmFja1RhcmdldE1hYy5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBVlBsYXliYWNrVGFyZ2V0OjplbmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6QVZQbGF5YmFj
a1RhcmdldDo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNhbmNlbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6aXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp3aXJlbGVzc1BsYXliYWNr
VGFyZ2V0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRXaXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZURpc2FibGVF
eHRlcm5hbFBsYXliYWNrKToKKyAgICAgICAgKC1bV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIgb2Jz
ZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKwogMjAxNS0w
My0xMSAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgT3B0aW1pemUg
b2Zmc2V0V2lkdGggYW5kIG9mZnNldEhlaWdodCB0byBhdm9pZCBkb2luZyBsYXlvdXRzLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMTgxMzk2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsNiArMTc1LDcgQEAKIAkJMDc0
RTgyQkIxOEE2OUYwRTAwN0VGNTRDIC8qIFBsYXRmb3JtVGltZVJhbmdlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc0RTgyQjkxOEE2OUYwRTAwN0VG
NTRDIC8qIFBsYXRmb3JtVGltZVJhbmdlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTA3NTM4NjAyMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRU
ZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDc1Mzg2MDAxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5jcHAgKi87IH07
CiAJCTA3NTM4NjAzMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NTM4NjAxMTQ0ODlFOTgw
MEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suaCAqLzsgfTsKKwkJMDc2MEMxN0ExQUE4RkM3RDAw
OUVEN0I4IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0UzREZEMjFBOUU3OEE1MDA3NjRDQTggLyogTWVk
aWFQbGF5YmFja1RhcmdldE1hYy5tbSAqLzsgfTsKIAkJMDc2MzA2RDAxN0UxNDc4RDAwNUE3QzRF
IC8qIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NjMwNkNDMTdFMTQ3OEQwMDVBN0M0RSAvKiBN
ZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDc2MzA2RDIxN0UxNDc4RDAwNUE3QzRFIC8qIE1l
ZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzYzMDZDRTE3RTE0NzhEMDA1QTdDNEUgLyogTWVkaWFT
dHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0LmNwcCAqLzsgfTsKIAkJMDc2MzA2RDMxN0UxNDc4RDAw
NUE3QzRFIC8qIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2MzA2Q0YxN0UxNDc4RDAwNUE3QzRF
IC8qIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNjksNiArMjcwLDcgQEAKIAkJMDc4RTA5
NDcxN0QxNkUxQzAwNDIwQUExIC8qIFJUQ1ZvaWRSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzIyMUJCMDE3Q0YwQUQ0MDA4NDhFNTEgLyog
UlRDVm9pZFJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwNzhFMDk0QjE3RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFTdHJlYW1BdWRpb0Rl
c3RpbmF0aW9uTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwNzhFMDk0ODE3RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFTdHJlYW1BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5jcHAgKi87IH07CiAJCTA3OEUwOTRDMTdEMTcwOTYwMDQyMEFBMSAvKiBNZWRp
YVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzhFMDk0OTE3RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFTdHJl
YW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTA3OTIxNjU1MUFBNTYwQUEwMEEzQzA0OSAvKiBNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzkyMTY1MzFBQTU2MEFBMDBBM0MwNDkgLyogTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTA3OTQxNzkxMTY2RTg1NUYwMDk0MTZDMiAvKiBJbmJhbmRUZXh0VHJhY2su
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5NDE3
OEYxNjZFODU1RjAwOTQxNkMyIC8qIEluYmFuZFRleHRUcmFjay5jcHAgKi87IH07CiAJCTA3OTQx
NzkyMTY2RTg1NUYwMDk0MTZDMiAvKiBJbmJhbmRUZXh0VHJhY2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTQxNzkwMTY2RTg1NUYwMDk0MTZDMiAv
KiBJbmJhbmRUZXh0VHJhY2suaCAqLzsgfTsKIAkJMDc5NDE3OTQxNjZFQTA0RTAwOTQxNkMyIC8q
IEluYmFuZFRleHRUcmFja1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3OTQxNzkzMTY2RUEwNEUwMDk0MTZDMiAvKiBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTMzOCw4ICszNDAsMTAgQEAKIAkJMDdEQzVGRDQxN0QzRUVFOTAwOTlGODkwIC8qIEpT
UlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwN0RDNUZEMzE3RDNFRUU5MDA5OUY4OTAgLyogSlNSVENTdGF0c1Jl
c3BvbnNlQ3VzdG9tLmNwcCAqLzsgfTsKIAkJMDdFMTE2QjExNDg5QzlBMTAwRUM1QUNFIC8qIEpT
VGV4dFRyYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3RTExNkIwMTQ4OUM5QTEwMEVDNUFDRSAvKiBKU1RleHRUcmFja0N1c3RvbS5j
cHAgKi87IH07CiAJCTA3RTExNzA3MTQ4OUVCRUIwMEVDNUFDRSAvKiBKU1RleHRUcmFja0N1ZUN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
N0UxMTcwNjE0ODlFQkVCMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwICovOyB9
OworCQkwN0UzREZEMTFBOUU3ODY1MDA3NjRDQTggLyogTWVkaWFQbGF5YmFja1RhcmdldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFM0RGRDAxQTlF
Nzg2NTAwNzY0Q0E4IC8qIE1lZGlhUGxheWJhY2tUYXJnZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwN0U5RTEyRTE4RjVFMjc2MDAxMUEzQTQg
LyogSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0U5RTEyRDE4RjVFMjc2MDAxMUEzQTQgLyog
SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmggKi87IH07CiAJCTA3RTlFMTMwMThG
NjJCMzcwMDExQTNBNCAvKiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFOUUxMkYxOEY2
MkIzNzAwMTFBM0E0IC8qIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAgKi87
IH07CisJCTA3RURDM0VFMUFBQ0I3NUQwMDk4M0VCNSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyTWFj
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RURD
M0VEMUFBQ0I3NUQwMDk4M0VCNSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcCAqLzsgfTsK
IAkJMDdGOTQ0MTYxODY0RDA0NjAwNUQzMUNCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUU4QzA4MTc0NkI5
NTcwMDUzMkQ3OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdGQkRFMkMxOEZFRDE3ODAwMUE3Q0ZGIC8q
IEpTRGF0YUN1ZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwN0ZCREUyQjE4RkVEMTc4MDAxQTdDRkYgLyogSlNEYXRhQ3VlQ3VzdG9tLmNw
cCAqLzsgfTsKIAkJMDdGRTk5REMxODgwN0E3RDAwMjU2NjQ4IC8qIEhUTUxNZWRpYVNlc3Npb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdGRTk5
REExODgwN0E3RDAwMjU2NjQ4IC8qIEhUTUxNZWRpYVNlc3Npb24uY3BwICovOyB9OwpAQCAtNTY4
Myw3ICs1Njg3LDYgQEAKIAkJQ0Q1MzkzRDQxNzVFMDE4NjAwQzA3MTIzIC8qIEpTTWVtb3J5SW5m
by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1Mzkz
RDIxNzVFMDE4NjAwQzA3MTIzIC8qIEpTTWVtb3J5SW5mby5oICovOyB9OwogCQlDRDU0QTc2MjE4
MEY5RjcwMDBCMDc2QzkgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1NEE3NjAx
ODBGOUY3MDAwQjA3NkM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNw
cCAqLzsgfTsKIAkJQ0Q1NEE3NjMxODBGOUY3MDAwQjA3NkM5IC8qIEF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDU0QTc2MTE4MEY5RjcwMDBCMDc2QzkgLyogQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuaCAqLzsgfTsKLQkJQ0Q1NERFNDcxNzQ2OEI2RjAwNUU1QjM2IC8q
IE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0Q1NERFNDUxNzQ2OEI2RjAwNUU1QjM2IC8qIE1lZGlhU2Vzc2lv
bk1hbmFnZXJNYWMuY3BwICovOyB9OwogCQlDRDU0REU0QjE3NDY5QzZEMDA1RTVCMzYgLyogQXVk
aW9TZXNzaW9uTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENENTRERTQ5MTc0NjlDNkQwMDVFNUIzNiAvKiBBdWRpb1Nlc3Npb25NYWMuY3BwICov
OyB9OwogCQlDRDU1OTY5MTE0NzVCNjc4MDAxRDBCRDAgLyogQXVkaW9GaWxlUmVhZGVySU9TLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENTU5NjhG
MTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFkZXJJT1MuY3BwICovOyB9OwogCQlDRDU1
OTY5MjE0NzVCNjc4MDAxRDBCRDAgLyogQXVkaW9GaWxlUmVhZGVySU9TLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDU1OTY5MDE0NzVCNjc4MDAxRDBC
RDAgLyogQXVkaW9GaWxlUmVhZGVySU9TLmggKi87IH07CkBAIC03MjYzLDYgKzcyNjYsNyBAQAog
CQkwNzhFMDk0ODE3RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVN0cmVh
bUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDc4RTA5NDkxN0QxNzA5NjAwNDIwQUExIC8qIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5v
ZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTdHJlYW1BdWRpb0Rl
c3RpbmF0aW9uTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzhFMDk0QTE3
RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIxNjUzMUFBNTYwQUEwMEEzQzA0OSAv
KiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQuaDsgcGF0aCA9IGdy
YXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDc5NDE3OEYxNjZFODU1RjAwOTQxNkMyIC8qIEluYmFuZFRleHRUcmFj
ay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmJhbmRUZXh0VHJh
Y2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzk0MTc5MDE2NkU4NTVGMDA5
NDE2QzIgLyogSW5iYW5kVGV4dFRyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEluYmFuZFRleHRUcmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzk0
MTc5MzE2NkVBMDRFMDA5NDE2QzIgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MzQxLDggKzczNDUsMTEgQEAKIAkJMDdEQzVGRDMx
N0QzRUVFOTAwOTlGODkwIC8qIEpTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0UxMTZCMDE0ODlDOUExMDBFQzVBQ0Ug
LyogSlNUZXh0VHJhY2tDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNUZXh0VHJhY2tDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwN0UxMTcwNjE0ODlFQkVCMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUZXh0VHJhY2tDdWVDdXN0b20u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0UzREZEMDFBOUU3ODY1MDA3NjRD
QTggLyogTWVkaWFQbGF5YmFja1RhcmdldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNZWRpYVBsYXliYWNrVGFyZ2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTA3RTNERkQyMUE5RTc4QTUwMDc2NENBOCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gTWVkaWFQbGF5YmFja1Rhcmdl
dE1hYy5tbTsgcGF0aCA9IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXli
YWNrVGFyZ2V0TWFjLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTA3RTlFMTJE
MThGNUUyNzYwMDExQTNBNCAvKiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlQVZGLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RTlFMTJGMThGNjJC
MzcwMDExQTNBNCAvKiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlQVZGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdFREMzRUQxQUFD
Qjc1RDAwOTgzRUI1IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RkJERTJCMThGRUQxNzgwMDFBN0NGRiAvKiBKU0Rh
dGFDdWVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNE
YXRhQ3VlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdGRTk5REEx
ODgwN0E3RDAwMjU2NjQ4IC8qIEhUTUxNZWRpYVNlc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTE1lZGlhU2Vzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3RkU5OURCMTg4MDdBN0QwMDI1NjY0OCAvKiBIVE1MTWVkaWFTZXNz
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxNZWRpYVNlc3Npb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMTg2LDcgKzEzMTkzLDYgQEAKIAkJ
Q0Q1MzkzRDIxNzVFMDE4NjAwQzA3MTIzIC8qIEpTTWVtb3J5SW5mby5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU01lbW9yeUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0Q1NEE3NjAxODBGOUY3MDAwQjA3NkM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcDsgcGF0aCA9IG9iamMvQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRDU0QTc2MTE4MEY5RjcwMDBCMDc2QzkgLyogQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDsgcGF0aCA9IG9iamMvQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQ0Q1NERFNDUxNzQ2OEI2RjAwNUU1QjM2IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTZXNzaW9uTWFuYWdl
ck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENTRERTQ5MTc0NjlDNkQw
MDVFNUIzNiAvKiBBdWRpb1Nlc3Npb25NYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQXVkaW9TZXNzaW9uTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0Q1NTk2OEYxNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRlcklPUy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBdWRpb0ZpbGVSZWFkZXJJT1Mu
Y3BwOyBwYXRoID0gaW9zL0F1ZGlvRmlsZVJlYWRlcklPUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNENTU5NjkwMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFkZXJJ
T1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQXVkaW9GaWxlUmVhZGVySU9T
Lmg7IHBhdGggPSBpb3MvQXVkaW9GaWxlUmVhZGVySU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMDU0OSw2ICsyMDU1NSw3IEBACiAJCUIyNzUzNTQ5MEIwNTM4MTQwMDJDRTY0
RiAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CTA3RTNERkQyMUE5RTc4QTUwMDc2NENBOCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLm1tICov
LAogCQkJCUVERTNBNEZGMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oICovLAogCQkJCUIy
NzUzNTRBMEIwNTM4MTQwMDJDRTY0RiAvKiBDb2xvck1hYy5tbSAqLywKIAkJCQkzN0MyMzYwRTEw
OTdFRTc3MDBFRjlGNzIgLyogQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCAqLywKQEAgLTIwNTk5
LDYgKzIwNjA2LDcgQEAKIAkJCQlGQkMyMjBERDEyMzdGQkVCMDBCQ0Y3ODggLyogb3BlbmdsICov
LAogCQkJCTM3MjE0OTMzMThGMEI2RDYwMDE1NkVEQyAvKiBvcGVudHlwZSAqLywKIAkJCQk0OUU5
MTFCMjBFRjg2RDI3MDA5RDBDQUYgLyogdHJhbnNmb3JtcyAqLywKKwkJCQkwN0UzREZEMDFBOUU3
ODY1MDA3NjRDQTggLyogTWVkaWFQbGF5YmFja1RhcmdldC5oICovLAogCQkJCTQ5MDcwN0U0MTIx
OUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5jcHAgKi8sCiAJCQkJNDkwNzA3RTUx
MjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmggKi8sCiAJCQkJQkVGMjlFRTkx
NzE1REQwOTAwQzRCNEM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlLmggKi8sCkBAIC0yMTUxNyw2ICsy
MTUyNSw3IEBACiAJCUJDRjFBNUJBMDk3ODMyMDkwMDYxQTEyMyAvKiBwbGF0Zm9ybSAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMDc5MjE2NTMxQUE1NjBB
QTAwQTNDMDQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQuaCAqLywKIAkJCQk0
OUU5MTJBNDBFRkFDOEU2MDA5RDBDQUYgLyogYW5pbWF0aW9uICovLAogCQkJCUZEMzE2MDQwMTJC
MDI2QTMwMEMxQTM1OSAvKiBhdWRpbyAqLywKIAkJCQkxQUU0MkY2NzBBQTRCOENCMDBDODYxMkQg
LyogY2YgKi8sCkBAIC0yMzQwNyw2ICsyMzQxNiw3IEBACiAJCUZEMzE2MEIwMTJCMDI3MDcwMEMx
QTM1OSAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCTA3RURDM0VEMUFBQ0I3NUQwMDk4M0VCNSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNw
cCAqLywKIAkJCQlGRDMxNjBCNTEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9CdXNNYWMubW0gKi8s
CiAJCQkJRkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuY3Bw
ICovLAogCQkJCUZEMzE2MEI3MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFj
LmggKi8sCkBAIC0yMzQxOCw3ICsyMzQyOCw2IEBACiAJCQkJQ0RDNzM0MTIxOTc3ODk2QzAwNDZC
RkM1IC8qIENBUmluZ0J1ZmZlci5jcHAgKi8sCiAJCQkJQ0RDNzM0MTMxOTc3ODk2QzAwNDZCRkM1
IC8qIENBUmluZ0J1ZmZlci5oICovLAogCQkJCUZEMzE2MEJBMTJCMDI3MkEwMEMxQTM1OSAvKiBG
RlRGcmFtZU1hYy5jcHAgKi8sCi0JCQkJQ0Q1NERFNDUxNzQ2OEI2RjAwNUU1QjM2IC8qIE1lZGlh
U2Vzc2lvbk1hbmFnZXJNYWMuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjM3MjMsNiArMjM3MzIsNyBAQAogCQkJCUJDQjE2QzFD
MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE5
RkJENUYxNUQyRjQ2NDAwOTY0MEE2IC8qIENhY2hlZEltYWdlQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MTAxODQ2OTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMDdFM0RGRDExQTlFNzg2NTAwNzY0Q0E4IC8qIE1lZGlhUGxheWJhY2tUYXJn
ZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUQwRURBNzc1MTQzRTMwM0MwMDI4RTM4MyAvKiBDYWNo
ZWRSYXdSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCNTMzNDkxNzE3REVFMzAwRjIw
NUY5IC8qIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Ix
NkMyMDA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLApA
QCAtMjYxODcsNiArMjYxOTcsNyBAQAogCQkJCTkzOTFBOTkxMTYyNzQ2Q0IwMDI5NzMzMCAvKiBT
Y3JvbGxpbmdDb29yZGluYXRvck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDMzhCRkYxNjQ0
NzNDNzAwMDkxRUIyIC8qIFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkVBM0U3QjE5MUIyRkM1MDAwRjFCNTUgLyogU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9s
bGluZ05vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3OTIxNjU1MUFBNTYwQUEwMEEzQzA0OSAv
KiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5
MzFDQkQwRDE2MUE0NEU5MDBFNEM4NzQgLyogU2Nyb2xsaW5nU3RhdGVOb2RlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkVBM0U4NDE5MUIzMUJGMDAwRjFCNTUgLyogU2Nyb2xsaW5nU3RhdGVPdmVy
Zmxvd1Njcm9sbGluZ05vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMUNCRDBGMTYxQTQ0RTkw
MEU0Qzg3NCAvKiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaCBpbiBIZWFkZXJzICovLApA
QCAtMjczNjAsNiArMjczNzEsNyBAQAogCQkJCUZEMzE1RkY4MTJCMDI2NzYwMEMxQTM1OSAvKiBB
dWRpb0J1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNUZGQjEyQjAyNjc2MDBDMUEz
NTkgLyogQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2
MDdCMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0J1cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkw
N0VEQzNFRTFBQUNCNzVEMDA5ODNFQjUgLyogTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGRDMxNjBCQjEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9CdXNNYWMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjA3RDEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9D
aGFubmVsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDA0MTJCMDI2NzYwMEMxQTM1OSAv
KiBBdWRpb0NvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzk0MCw2ICsyNzk1Miw3IEBA
CiAJCQkJOUJBQjZDNkQxMjU1MDYzMTAwMTYyNkQ0IC8qIEVkaXRpbmdTdHlsZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0QjMwNDNDQzBBRTAzNzNCMDBBODI2NDcgLyogRWRpdG9yLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTkzQTM4QjRCMEQwRTU4MDgwMDY4NzJDMiAvKiBFZGl0b3JDb21tYW5k
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3NjBDMTdBMUFBOEZDN0QwMDlFRDdCOCAvKiBNZWRp
YVBsYXliYWNrVGFyZ2V0TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRkVEMTNEM0EwQ0VBOTM0
NjAwRDg5NDY2IC8qIEVkaXRvcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUVENTAxREM2MEIy
NDlGMjkwMEFFMThEOSAvKiBFZGl0b3JNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEM0QTgw
ODA5RDU2MzI3MDAwM0FDOEQgLyogRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5MTYz
LDcgKzI5MTc2LDYgQEAKIAkJCQkwNzBFMDkxQjE4NzVFRjcxMDAzQTFEM0MgLyogTWVkaWFTZXNz
aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQUU4QzA5MTc0NkI5NTcwMDUzMkQ3OCAvKiBN
ZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3NjM4QTlBMTg4NDQ4
NzIwMEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tIGluIFNvdXJjZXMgKi8sCi0J
CQkJQ0Q1NERFNDcxNzQ2OEI2RjAwNUU1QjM2IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QzQTQ5NUUxN0E5RDAxQjAwMjc0RTQyIC8qIE1lZGlhU291
cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQzhCNUE2MTgwNDc0RjcwMDE2RTY4NSAvKiBN
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q2MUZFNjcx
Nzk0QUFEQjAwNDEwMUVCIC8qIE1lZGlhU291cmNlUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8s
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDE4MTM5NikKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOCw2ICsyMjgs
MTAgQEAKICNpbmNsdWRlIDxyZXBsYXkvSW5wdXRDdXJzb3IuaD4KICNlbmRpZgogCisjaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50
LmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdURjsKIHVzaW5nIG5hbWVzcGFjZSBVbmlj
b2RlOwogCkBAIC02NDUxLDQgKzY0NTUsODIgQEAgdm9pZCBEb2N1bWVudDo6c2V0SW5wdXRDdXJz
b3IoUGFzc1JlZlB0cgogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKQordm9pZCBEb2N1bWVudDo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IEhU
TUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2Uo
KTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIHBhZ2UtPnNob3dQbGF5
YmFja1RhcmdldFBpY2tlcih0aGlzLCB2aWV3KCktPmxhc3RLbm93bk1vdXNlUG9zaXRpb24oKSwg
aXM8SFRNTFZpZGVvRWxlbWVudD4oZWxlbWVudCkpOworfQorCit2b2lkIERvY3VtZW50OjphZGRQ
bGF5YmFja1RhcmdldFBpY2tlckNsaWVudChNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50
JiBjbGllbnQpCit7CisgICAgUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKKyAgICBpZiAoIXBh
Z2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGxheWJhY2tUYXJnZXRDbGllbnRzLmFkZCgm
Y2xpZW50KTsKKworICAgIGNsaWVudC5kaWRDaG9vc2VQbGF5YmFja1RhcmdldChwYWdlLT5wbGF5
YmFja1RhcmdldCgpKTsKKyAgICBjbGllbnQuZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVE
aWRDaGFuZ2UocGFnZS0+aGFzV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpKTsKK30KKwordm9pZCBE
b2N1bWVudDo6cmVtb3ZlUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlckNsaWVudCYgY2xpZW50KQoreworICAgIG1fcGxheWJhY2tUYXJnZXRDbGllbnRz
LnJlbW92ZSgmY2xpZW50KTsKKyAgICBjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0b3Jpbmco
KTsKK30KKwordm9pZCBEb2N1bWVudDo6Y29uZmlndXJlUGxheWJhY2tUYXJnZXRNb25pdG9yaW5n
KCkKK3sKKyAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgcGFnZS0+Y29uZmlndXJlUGxheWJhY2tUYXJnZXRNb25pdG9y
aW5nKCk7Cit9CisKK2Jvb2wgRG9jdW1lbnQ6OnJlcXVpcmVzUGxheWJhY2tUYXJnZXRSb3V0ZU1v
bml0b3JpbmcoKQoreworICAgIGZvciAoYXV0byB0YXJnZXRDbGllbnQgOiBtX3BsYXliYWNrVGFy
Z2V0Q2xpZW50cykgeworICAgICAgICBpZiAodGFyZ2V0Q2xpZW50LT5yZXF1aXJlc1BsYXliYWNr
VGFyZ2V0Um91dGVNb25pdG9yaW5nKCkpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3ZvaWQgRG9jdW1lbnQ6OnBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKGJv
b2wgYXZhaWxhYmxlKQoreworICAgIGlmIChtX3BsYXliYWNrVGFyZ2V0c0F2YWlsYWJsZSA9PSBh
dmFpbGFibGUpCisgICAgICAgIHJldHVybjsKKyAgICBtX3BsYXliYWNrVGFyZ2V0c0F2YWlsYWJs
ZSA9IGF2YWlsYWJsZTsKKworICAgIGZvciAoYXV0byBjbGllbnQgOiBtX3BsYXliYWNrVGFyZ2V0
Q2xpZW50cykKKyAgICAgICAgY2xpZW50LT5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURp
ZENoYW5nZShhdmFpbGFibGUpOworfQorCit2b2lkIERvY3VtZW50OjpkaWRDaG9vc2VQbGF5YmFj
a1RhcmdldChNZWRpYVBsYXliYWNrVGFyZ2V0JiBkZXZpY2UpCit7CisgICAgTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlckNsaWVudCogY2xpZW50VGhhdFJlcXVlc3RlZFBpY2tlciA9IG51bGxwdHI7
CisKKyAgICBmb3IgKGF1dG8gY2xpZW50IDogbV9wbGF5YmFja1RhcmdldENsaWVudHMpIHsKKyAg
ICAgICAgaWYgKGNsaWVudC0+cmVxdWVzdGVkUGxheWJhY2tUYXJnZXRQaWNrZXIoKSkgeworICAg
ICAgICAgICAgY2xpZW50VGhhdFJlcXVlc3RlZFBpY2tlciA9IGNsaWVudDsKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgY2xpZW50LT5kaWRDaG9vc2VQbGF5YmFj
a1RhcmdldChkZXZpY2UpOworICAgIH0KKworICAgIGlmIChjbGllbnRUaGF0UmVxdWVzdGVkUGlj
a2VyKQorICAgICAgICBjbGllbnRUaGF0UmVxdWVzdGVkUGlja2VyLT5kaWRDaG9vc2VQbGF5YmFj
a1RhcmdldChkZXZpY2UpOworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDE4MTM5NikKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNiArMTI0LDggQEAgY2xh
c3MgTGl2ZU5vZGVMaXN0OwogY2xhc3MgSlNOb2RlOwogY2xhc3MgTG9jYWxlOwogY2xhc3MgTWVk
aWFDYW5TdGFydExpc3RlbmVyOworY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsKK2NsYXNzIE1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQ7CiBjbGFzcyBNZWRpYVF1ZXJ5TGlzdDsKIGNs
YXNzIE1lZGlhUXVlcnlNYXRjaGVyOwogY2xhc3MgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0
czsKQEAgLTEyMTgsNiArMTIyMCwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYWdlTXV0ZWRTdGF0
ZURpZENoYW5nZSgpOwogICAgIFdlYWtQdHI8RG9jdW1lbnQ+IGNyZWF0ZVdlYWtQdHIoKSB7IHJl
dHVybiBtX3dlYWtGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKTsgfQogCisjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKKyAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihj
b25zdCBIVE1MTWVkaWFFbGVtZW50Jik7CisgICAgdm9pZCBkaWRDaG9vc2VQbGF5YmFja1Rhcmdl
dChNZWRpYVBsYXliYWNrVGFyZ2V0Jik7CisgICAgdm9pZCBhZGRQbGF5YmFja1RhcmdldFBpY2tl
ckNsaWVudChNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50Jik7CisgICAgdm9pZCByZW1v
dmVQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudChNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xp
ZW50Jik7CisgICAgYm9vbCByZXF1aXJlc1BsYXliYWNrVGFyZ2V0Um91dGVNb25pdG9yaW5nKCk7
CisgICAgdm9pZCBjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0b3JpbmcoKTsKKyAgICB2b2lk
IHBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKGJvb2wpOworI2VuZGlmCisKIHBy
b3RlY3RlZDoKICAgICBlbnVtIENvbnN0cnVjdGlvbkZsYWdzIHsgU3ludGhlc2l6ZWQgPSAxLCBO
b25SZW5kZXJlZFBsYWNlaG9sZGVyID0gMSA8PCAxIH07CiAgICAgRG9jdW1lbnQoRnJhbWUqLCBj
b25zdCBVUkwmLCB1bnNpZ25lZCA9IERlZmF1bHREb2N1bWVudENsYXNzLCB1bnNpZ25lZCBjb25z
dHJ1Y3Rpb25GbGFncyA9IDApOwpAQCAtMTY1NSw2ICsxNjY3LDExIEBAIHByaXZhdGU6CiAKICAg
ICBIYXNoU2V0PEF1ZGlvUHJvZHVjZXIqPiBtX2F1ZGlvUHJvZHVjZXJzOwogICAgIGJvb2wgbV9p
c1BsYXlpbmdBdWRpbzsKKworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisg
ICAgSGFzaFNldDxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50Kj4gbV9w
bGF5YmFja1RhcmdldENsaWVudHM7CisgICAgYm9vbCBtX3BsYXliYWNrVGFyZ2V0c0F2YWlsYWJs
ZSB7IGZhbHNlIH07CisjZW5kaWYKIH07CiAKIGlubGluZSB2b2lkIERvY3VtZW50Ojpub3RpZnlS
ZW1vdmVQZW5kaW5nU2hlZXRJZk5lZWRlZCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MTM5NikKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyNiw2ICs0MjYsOCBA
QCBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCgpCiAKIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6cmVnaXN0ZXJXaXRoRG9jdW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogeworICAg
IG1fbWVkaWFTZXNzaW9uLT5yZWdpc3RlcldpdGhEb2N1bWVudChkb2N1bWVudCk7CisKICAgICBp
ZiAobV9pc1dhaXRpbmdVbnRpbE1lZGlhQ2FuU3RhcnQpCiAgICAgICAgIGRvY3VtZW50LmFkZE1l
ZGlhQ2FuU3RhcnRMaXN0ZW5lcih0aGlzKTsKIApAQCAtNDUxLDYgKzQ1Myw4IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6cmVnaXN0ZXJXaXRoRG9jdW0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp1bnJlZ2lzdGVyV2l0aERvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkKIHsKKyAgICBtX21l
ZGlhU2Vzc2lvbi0+dW5yZWdpc3RlcldpdGhEb2N1bWVudChkb2N1bWVudCk7CisKICAgICBpZiAo
bV9pc1dhaXRpbmdVbnRpbE1lZGlhQ2FuU3RhcnQpCiAgICAgICAgIGRvY3VtZW50LnJlbW92ZU1l
ZGlhQ2FuU3RhcnRMaXN0ZW5lcih0aGlzKTsKIApAQCAtMjQ2OCw2ICsyNDcyLDkgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpyZWZyZXNoQ2FjaGVkVGltZQogCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmludmFsaWRhdGVDYWNoZWRUaW1lKCkgY29uc3QKIHsKKyAgICBpZiAoIW1fcGxheWVyLT5t
YXhpbXVtRHVyYXRpb25Ub0NhY2hlTWVkaWFUaW1lKCkpCisgICAgICAgIHJldHVybjsKKwogI2lm
ICFMT0dfRElTQUJMRUQKICAgICBpZiAobV9jYWNoZWRUaW1lLmlzVmFsaWQoKSkKICAgICAgICAg
TE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6aW52YWxpZGF0ZUNhY2hlZFRpbWUoJXApIiwg
dGhpcyk7CkBAIC00ODUzLDYgKzQ4NjAsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjplbnF1
ZXVlUGxheWJhY2tUYQogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CiAgICAgbV9hc3luY0V2
ZW50UXVldWUuZW5xdWV1ZUV2ZW50KGV2ZW50LnJlbGVhc2UoKSk7CiB9CisKK3ZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChjb25zdCBNZWRpYVBsYXliYWNr
VGFyZ2V0JiBkZXZpY2UpCit7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2V0
V2lyZWxlc3NQbGF5YmFja1RhcmdldCglcCkiLCB0aGlzKTsKKyAgICBpZiAobV9wbGF5ZXIpCisg
ICAgICAgIG1fcGxheWVyLT5zZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KGRldmljZSk7Cit9CiAj
ZW5kaWYKIAogZG91YmxlIEhUTUxNZWRpYUVsZW1lbnQ6Om1pbkZhc3RSZXZlcnNlUmF0ZSgpIGNv
bnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24g
MTgxMzk2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zNTcsNyArMzU3LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29s
IGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworCiAgICAgdmlydHVh
bCB2b2lkIHdpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIHNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoY29uc3QgTWVkaWFQbGF5YmFj
a1RhcmdldCYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICAvLyBFdmVudFRhcmdldCBmdW5jdGlv
bi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmNwcAkocmV2aXNp
b24gMTgxMzk2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsOSBAQAogCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAj
aW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBA
IC03MiwxMCArNzQsMjggQEAgc3RhdGljIGNvbnN0IGNoYXIqIHJlc3RyaWN0aW9uTmFtZShIVE1M
TQogSFRNTE1lZGlhU2Vzc2lvbjo6SFRNTE1lZGlhU2Vzc2lvbihNZWRpYVNlc3Npb25DbGllbnQm
IGNsaWVudCkKICAgICA6IE1lZGlhU2Vzc2lvbihjbGllbnQpCiAgICAgLCBtX3Jlc3RyaWN0aW9u
cyhOb1Jlc3RyaWN0aW9ucykKLSAgICAsIG1faGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlM
aXN0ZW5lcnMoZmFsc2UpCisgICAgLCBtX3RhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRUaW1lcigq
dGhpcywgJkhUTUxNZWRpYVNlc3Npb246OnRhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRUaW1lckZp
cmVkKQogewogfQogCit2b2lkIEhUTUxNZWRpYVNlc3Npb246OnJlZ2lzdGVyV2l0aERvY3VtZW50
KERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUKQorICAgIGRvY3VtZW50LmFkZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KCp0aGlzKTsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50KTsKKyNlbmRpZgorfQorCit2b2lkIEhU
TUxNZWRpYVNlc3Npb246OnVucmVnaXN0ZXJXaXRoRG9jdW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50
KQoreworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisgICAgZG9jdW1lbnQu
cmVtb3ZlUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoKnRoaXMpOworI2Vsc2UKKyAgICBVTlVT
RURfUEFSQU0oZG9jdW1lbnQpOworI2VuZGlmCit9CisKIHZvaWQgSFRNTE1lZGlhU2Vzc2lvbjo6
YWRkQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikK
IHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFTZXNzaW9uOjphZGRCZWhhdmlvclJlc3RyaWN0
aW9uIC0gYWRkaW5nICVzIiwgcmVzdHJpY3Rpb25OYW1lKHJlc3RyaWN0aW9uKSk7CkBAIC0xNzcs
MTkgKzE5NywyMCBAQCB2b2lkIEhUTUxNZWRpYVNlc3Npb246OnNob3dQbGF5YmFja1RhcmdlCiAg
ICAgaWYgKCFzaG93aW5nUGxheWJhY2tUYXJnZXRQaWNrZXJQZXJtaXR0ZWQoZWxlbWVudCkpCiAg
ICAgICAgIHJldHVybjsKIAotI2lmIFBMQVRGT1JNKElPUykKLSAgICBlbGVtZW50LmRvY3VtZW50
KCkuZnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5zaG93UGxheWJhY2tUYXJnZXRQ
aWNrZXIoZWxlbWVudC5oYXNWaWRlbygpKTsKLSNlbmRpZgorICAgIG1faGF2ZVJlcXVlc3RlZFBs
YXliYWNrVGFyZ2V0UGlja2VyID0gdHJ1ZTsKKyAgICBlbGVtZW50LmRvY3VtZW50KCkuc2hvd1Bs
YXliYWNrVGFyZ2V0UGlja2VyKGVsZW1lbnQpOwogfQogCi1ib29sIEhUTUxNZWRpYVNlc3Npb246
Omhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1l
bnQpIGNvbnN0Citib29sIEhUTUxNZWRpYVNlc3Npb246Omhhc1dpcmVsZXNzUGxheWJhY2tUYXJn
ZXRzKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdAogewotICAgIFVOVVNFRF9QQVJBTShl
bGVtZW50KTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgLy8gRklYTUU6IGNvbnNvbGlkYXRlIE1h
YyBhbmQgaU9TIGltcGxlbWVudGF0aW9ucworICAgIG1faGFzUGxheWJhY2tUYXJnZXRzID0gTWVk
aWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmhhc1dpcmVsZXNzVGFyZ2V0c0F2YWls
YWJsZSgpOworI2VuZGlmCiAKLSAgICBib29sIGhhc1RhcmdldHMgPSBNZWRpYVNlc3Npb25NYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCkuaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlKCk7Ci0gICAg
TE9HKE1lZGlhLCAiSFRNTE1lZGlhU2Vzc2lvbjo6aGFzV2lyZWxlc3NQbGF5YmFja1RhcmdldHMg
LSByZXR1cm5pbmcgJXMiLCBoYXNUYXJnZXRzID8gIlRSVUUiIDogIkZBTFNFIik7CisgICAgTE9H
KE1lZGlhLCAiSFRNTE1lZGlhU2Vzc2lvbjo6aGFzV2lyZWxlc3NQbGF5YmFja1RhcmdldHMgLSBy
ZXR1cm5pbmcgJXMiLCBtX2hhc1BsYXliYWNrVGFyZ2V0cyA/ICJUUlVFIiA6ICJGQUxTRSIpOwog
Ci0gICAgcmV0dXJuIGhhc1RhcmdldHM7CisgICAgcmV0dXJuIG1faGFzUGxheWJhY2tUYXJnZXRz
OwogfQogCiBib29sIEhUTUxNZWRpYVNlc3Npb246OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2Fi
bGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CkBAIC0yNDQsNyArMjY1
LDM4IEBAIHZvaWQgSFRNTE1lZGlhU2Vzc2lvbjo6c2V0SGFzUGxheWJhY2tUYXIKICAgICBVTlVT
RURfUEFSQU0oZWxlbWVudCk7CiAKICAgICBtX2hhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5
TGlzdGVuZXJzID0gaGFzTGlzdGVuZXJzOworCisjaWYgUExBVEZPUk0oSU9TKQogICAgIE1lZGlh
U2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5jb25maWd1cmVXaXJlTGVzc1RhcmdldE1v
bml0b3JpbmcoKTsKKyNlbHNlCisgICAgZWxlbWVudC5kb2N1bWVudCgpLmNvbmZpZ3VyZVBsYXli
YWNrVGFyZ2V0TW9uaXRvcmluZygpOworI2VuZGlmCit9CisKK3ZvaWQgSFRNTE1lZGlhU2Vzc2lv
bjo6ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoTWVkaWFQbGF5YmFja1RhcmdldCYgZGV2aWNlKQor
eworICAgIG1faGF2ZVJlcXVlc3RlZFBsYXliYWNrVGFyZ2V0UGlja2VyID0gZmFsc2U7CisgICAg
Y2xpZW50KCkuc2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChkZXZpY2UpOworfQorCit2b2lkIEhU
TUxNZWRpYVNlc3Npb246OnRhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRUaW1lckZpcmVkKCkKK3sK
KyAgICBjbGllbnQoKS53aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZSgpOworfQorCit2
b2lkIEhUTUxNZWRpYVNlc3Npb246OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hh
bmdlKGJvb2wgaGFzVGFyZ2V0cykgY29uc3QKK3sKKyAgICBpZiAobV9oYXNQbGF5YmFja1Rhcmdl
dHMgPT0gaGFzVGFyZ2V0cykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9oYXNQbGF5YmFja1Rh
cmdldHMgPSBoYXNUYXJnZXRzOworICAgIGlmICghbV90YXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2Vk
VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV90YXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkVGlt
ZXIuc3RhcnRPbmVTaG90KDApOworfQorCitib29sIEhUTUxNZWRpYVNlc3Npb246OnJlcXVpcmVz
UGxheWJhY2tUYXJnZXRSb3V0ZU1vbml0b3JpbmcoKSBjb25zdAoreworICAgIHJldHVybiBtX2hh
c1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzOwogfQogI2VuZGlmCiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5oCShyZXZpc2lvbiAxODEzOTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYVNlc3Npb24uaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
MCw5ICszMCwxMSBAQAogCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJNZWRp
YVNlc3Npb24uaCIKKyNpbmNsdWRlICJUaW1lci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIERvY3VtZW50OwogY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKIGNsYXNzIFNvdXJjZUJ1
ZmZlcjsKIApAQCAtNDEsMTQgKzQzLDE3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBIVE1MTWVk
aWFTZXNzaW9uKE1lZGlhU2Vzc2lvbkNsaWVudCYpOwogICAgIHZpcnR1YWwgfkhUTUxNZWRpYVNl
c3Npb24oKSB7IH0KIAorICAgIHZvaWQgcmVnaXN0ZXJXaXRoRG9jdW1lbnQoRG9jdW1lbnQmKTsK
KyAgICB2b2lkIHVucmVnaXN0ZXJXaXRoRG9jdW1lbnQoRG9jdW1lbnQmKTsKKwogICAgIGJvb2wg
cGxheWJhY2tQZXJtaXR0ZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OwogICAgIGJv
b2wgZGF0YUxvYWRpbmdQZXJtaXR0ZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0Owog
ICAgIGJvb2wgZnVsbHNjcmVlblBlcm1pdHRlZChjb25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29u
c3Q7CiAgICAgYm9vbCBwYWdlQWxsb3dzRGF0YUxvYWRpbmcoY29uc3QgSFRNTE1lZGlhRWxlbWVu
dCYpIGNvbnN0OwogICAgIGJvb2wgcGFnZUFsbG93c1BsYXliYWNrQWZ0ZXJSZXN1bWluZyhjb25z
dCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7CisKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUKQogICAgIGJvb2wgc2hvd2luZ1BsYXliYWNrVGFyZ2V0UGlja2VyUGVybWl0dGVk
KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKLQogICAgIGJvb2wgY3VycmVudFBsYXli
YWNrVGFyZ2V0SXNXaXJlbGVzcyhjb25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7CiAgICAg
dm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpOwog
ICAgIGJvb2wgaGFzV2lyZWxlc3NQbGF5YmFja1RhcmdldHMoY29uc3QgSFRNTE1lZGlhRWxlbWVu
dCYpIGNvbnN0OwpAQCAtNTgsNiArNjMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEhhc1Bs
YXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQm
LCBib29sKTsKICNlbmRpZgorCiAgICAgYm9vbCByZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1Bs
YXliYWNrKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGFsbG93c0FsdGVybmF0ZUZ1bGxzY3JlZW4oY29uc3QgSFRNTE1lZGlhRWxlbWVudCYp
IGNvbnN0OwogICAgIE1lZGlhUGxheWVyOjpQcmVsb2FkIGVmZmVjdGl2ZVByZWxvYWRGb3JFbGVt
ZW50KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKQEAgLTg3LDEwICs5MywyNSBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNQbGF5
YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faGFz
UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnM7IH0KKworI2lmIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpCisgICAgdm9pZCB0YXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2Vk
VGltZXJGaXJlZCgpOworCisgICAgLy8gTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudAor
ICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VQbGF5YmFja1RhcmdldChNZWRpYVBsYXliYWNrVGFy
Z2V0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZh
aWxhYmxlRGlkQ2hhbmdlKGJvb2wpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBy
ZXF1aXJlc1BsYXliYWNrVGFyZ2V0Um91dGVNb25pdG9yaW5nKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCBib29sIHJlcXVlc3RlZFBsYXliYWNrVGFyZ2V0UGlja2VyKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9oYXZlUmVxdWVzdGVkUGxheWJhY2tUYXJnZXRQaWNrZXI7IH0KKyNl
bmRpZgogCiAgICAgQmVoYXZpb3JSZXN0cmljdGlvbnMgbV9yZXN0cmljdGlvbnM7Ci0gICAgYm9v
bCBtX2hhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzOworCisjaWYgRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyAgICBtdXRhYmxlIFRpbWVyIG1fdGFyZ2V0QXZh
aWxhYmlsaXR5Q2hhbmdlZFRpbWVyOworICAgIGJvb2wgbV9oYXNQbGF5YmFja1RhcmdldEF2YWls
YWJpbGl0eUxpc3RlbmVycyB7IGZhbHNlIH07CisgICAgbXV0YWJsZSBib29sIG1faGFzUGxheWJh
Y2tUYXJnZXRzIHsgZmFsc2UgfTsKKyAgICBtdXRhYmxlIGJvb2wgbV9oYXZlUmVxdWVzdGVkUGxh
eWJhY2tUYXJnZXRQaWNrZXIgeyBmYWxzZSB9OworI2VuZGlmCiB9OwogCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDE4MTM5NikKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0NSw2ICs0NDUsMTIg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92
ZUV2ZW50cygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAorI2lmIEVOQUJMRShXSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQpCisgICAgdmlydHVhbCB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tl
cihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBz
dGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
c3RvcE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKSB7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB+Q2hyb21lQ2xpZW50KCkgeyB9CiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCShyZXZpc2lvbiAxODEzOTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDQsNiArMTA0LDEyIEBACiAjaW5jbHVkZSA8cmVwbGF5L0lucHV0
Q3Vyc29yLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQp
CisjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tU
YXJnZXQuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50LmgiCisj
ZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgSGFzaFNldDxQYWdlKj4qIGFs
bFBhZ2VzOwpAQCAtMTY5MSw0ICsxNjk3LDY3IEBAIHZvaWQgUGFnZTo6c2V0U2Vzc2lvbklEKFNl
c3Npb25JRCBzZXNzaW8KICAgICAgICAgdmlldy0+cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2Vk
KHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKIH0KIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpCit2b2lkIFBhZ2U6OnNob3dQbGF5YmFja1RhcmdldFBpY2tlcihEb2N1bWVu
dCogZG9jdW1lbnQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2NhdGlvbiwgYm9vbCBpc1Zp
ZGVvKQoreworCisgICAgbV9kb2N1bWVudFJlcXVlc3RpbmdQbGF5YmFja1RhcmdldFBpY2tlciA9
IGRvY3VtZW50OworI2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBGSVhNRTogcmVmYWN0b3IgaU9T
IGltcGxlbWVudGF0aW9uLgorICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CisgICAgY2hyb21l
KCkuY2xpZW50KCkuc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGlzVmlkZW8pOworI2Vsc2UKKyAg
ICBjaHJvbWUoKS5jbGllbnQoKS5zaG93UGxheWJhY2tUYXJnZXRQaWNrZXIobG9jYXRpb24sIGlz
VmlkZW8pOworI2VuZGlmCit9CisKK3ZvaWQgUGFnZTo6ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQo
TWVkaWFQbGF5YmFja1RhcmdldCYgdGFyZ2V0KQoreworICAgIERvY3VtZW50KiBkb2N1bWVudFRo
YXRSZXF1ZXN0ZWRQaWNrZXIgPSBudWxscHRyOworCisgICAgbV9wbGF5YmFja1RhcmdldCA9IHN0
ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5YmFja1RhcmdldD4odGFyZ2V0LmRldmljZVBpY2tlckNv
bnRleHQoKSk7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBm
cmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgICAgIGlmIChmcmFtZS0+ZG9jdW1l
bnQoKSA9PSBtX2RvY3VtZW50UmVxdWVzdGluZ1BsYXliYWNrVGFyZ2V0UGlja2VyKSB7CisgICAg
ICAgICAgICBkb2N1bWVudFRoYXRSZXF1ZXN0ZWRQaWNrZXIgPSBkb2N1bWVudDsKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5kaWRD
aG9vc2VQbGF5YmFja1RhcmdldCh0YXJnZXQpOworICAgIH0KKworICAgIGlmIChkb2N1bWVudFRo
YXRSZXF1ZXN0ZWRQaWNrZXIpCisgICAgICAgIGRvY3VtZW50VGhhdFJlcXVlc3RlZFBpY2tlci0+
ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQodGFyZ2V0KTsKKworICAgIG1fZG9jdW1lbnRSZXF1ZXN0
aW5nUGxheWJhY2tUYXJnZXRQaWNrZXIgPSBudWxscHRyOworfQorCit2b2lkIFBhZ2U6OnBsYXli
YWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKGJvb2wgYXZhaWxhYmxlKQoreworICAgIG1f
aGFzV2lyZWxlc3NQbGF5YmFja1RhcmdldCA9IGF2YWlsYWJsZTsKKyAgICBmb3IgKEZyYW1lKiBm
cmFtZSA9ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJz
ZU5leHQoKSkKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnBsYXliYWNrVGFyZ2V0QXZhaWxh
YmlsaXR5RGlkQ2hhbmdlKGF2YWlsYWJsZSk7Cit9CisKK3ZvaWQgUGFnZTo6Y29uZmlndXJlUGxh
eWJhY2tUYXJnZXRNb25pdG9yaW5nKCkKK3sKKyAgICBib29sIG1vbml0b3JpbmdSZXF1aXJlZCA9
IGZhbHNlOworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJh
bWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGlmIChmcmFtZS0+
ZG9jdW1lbnQoKS0+cmVxdWlyZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZygpKSB7Cisg
ICAgICAgICAgICBtb25pdG9yaW5nUmVxdWlyZWQgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobV9yZXF1aXJlc1BsYXliYWNrVGFyZ2V0TW9u
aXRvcmluZyA9PSBtb25pdG9yaW5nUmVxdWlyZWQpCisgICAgICAgIHJldHVybjsKKyAgICBtX3Jl
cXVpcmVzUGxheWJhY2tUYXJnZXRNb25pdG9yaW5nID0gbW9uaXRvcmluZ1JlcXVpcmVkOworCisK
KyAgICBpZiAobW9uaXRvcmluZ1JlcXVpcmVkKQorICAgICAgICBjaHJvbWUoKS5jbGllbnQoKS5z
dGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKKyAgICBlbHNlCisgICAgICAgIGNo
cm9tZSgpLmNsaWVudCgpLnN0b3BNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCk7Cit9CisjZW5k
aWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlzaW9u
IDE4MTM5NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC03NiwxMSArNzYsMTMgQEAgY2xhc3MgRm9jdXNDb250cm9sbGVyOwogY2xhc3MgRnJhbWU7CiBj
bGFzcyBGcmFtZUxvYWRlckNsaWVudDsKIGNsYXNzIEhpc3RvcnlJdGVtOworY2xhc3MgSFRNTE1l
ZGlhRWxlbWVudDsKIGNsYXNzIFVzZXJJbnB1dEJyaWRnZTsKIGNsYXNzIEluc3BlY3RvckNsaWVu
dDsKIGNsYXNzIEluc3BlY3RvckNvbnRyb2xsZXI7CiBjbGFzcyBNYWluRnJhbWU7CiBjbGFzcyBN
ZWRpYUNhblN0YXJ0TGlzdGVuZXI7CitjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3Mg
UGFnZUNvbmZpZ3VyYXRpb247CiBjbGFzcyBQYWdlQ29uc29sZUNsaWVudDsKIGNsYXNzIFBhZ2VE
ZWJ1Z2dhYmxlOwpAQCAtNDIyLDYgKzQyNCwxNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc011dGVk
KCkgY29uc3QgeyByZXR1cm4gbV9tdXRlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
TXV0ZWQoYm9vbCk7CiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorICAg
IHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKERvY3VtZW50KiwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmLCBib29sKTsKKyAgICBib29sIGhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKSBj
b25zdCB7IHJldHVybiBtX2hhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXQ7IH0KKyAgICBNZWRpYVBs
YXliYWNrVGFyZ2V0JiBwbGF5YmFja1RhcmdldCgpIGNvbnN0IHsgcmV0dXJuICptX3BsYXliYWNr
VGFyZ2V0LmdldCgpOyB9CisgICAgdm9pZCBjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0b3Jp
bmcoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQo
TWVkaWFQbGF5YmFja1RhcmdldCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGxheWJhY2tU
YXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UoYm9vbCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRHcm91cCgpOwogCkBAIC01ODEsNiArNTkzLDEzIEBA
IHByaXZhdGU6CiAKICAgICBTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKKyNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorICAgIERvY3VtZW50KiBtX2RvY3VtZW50UmVxdWVzdGlu
Z1BsYXliYWNrVGFyZ2V0UGlja2VyIHsgbnVsbHB0ciB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxN
ZWRpYVBsYXliYWNrVGFyZ2V0PiBtX3BsYXliYWNrVGFyZ2V0OworICAgIGJvb2wgbV9yZXF1aXJl
c1BsYXliYWNrVGFyZ2V0TW9uaXRvcmluZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc1dpcmVs
ZXNzUGxheWJhY2tUYXJnZXQgeyBmYWxzZSB9OworI2VuZGlmCisKICAgICBib29sIG1faXNDbG9z
aW5nOwogCiAgICAgYm9vbCBtX2lzUGxheWluZ0F1ZGlvOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uY3BwCShyZXZpc2lvbiAxODEzOTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbjo6dmlzaWJpbGl0eUNoYW5n
ZWQoKQogCiB2b2lkIE1lZGlhU2Vzc2lvbjo6Y2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVyRmlyZWQo
KQogewotICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbjo6dmlzaWJpbGl0eUNoYW5nZWQoJXAp
LSB2aXNpYmxlID0gJXMiLCB0aGlzLCBtX2NsaWVudC5lbGVtZW50SXNIaWRkZW4oKSA/ICJmYWxz
ZSIgOiAidHJ1ZSIpOworICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbjo6Y2xpZW50RGF0YUJ1
ZmZlcmluZ1RpbWVyRmlyZWQoJXApLSB2aXNpYmxlID0gJXMiLCB0aGlzLCBtX2NsaWVudC5lbGVt
ZW50SXNIaWRkZW4oKSA/ICJmYWxzZSIgOiAidHJ1ZSIpOwogCiAgICAgdXBkYXRlQ2xpZW50RGF0
YUJ1ZmZlcmluZygpOwogCkBAIC0yMjAsMTEgKzIyMCw2IEBAIE1lZGlhU2Vzc2lvbjo6RGlzcGxh
eVR5cGUgTWVkaWFTZXNzaW9uOjoKICAgICByZXR1cm4gbV9jbGllbnQuZGlzcGxheVR5cGUoKTsK
IH0KIAotdm9pZCBNZWRpYVNlc3Npb246OndpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdl
KCkgY29uc3QKLXsKLSAgICBtX2NsaWVudC53aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5n
ZSgpOwotfQotCiBTdHJpbmcgTWVkaWFTZXNzaW9uQ2xpZW50OjptZWRpYVNlc3Npb25UaXRsZSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIFN0cmluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmgJKHJldmlzaW9uIDE4MTM5NikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMw
LDExICszMCwyMCBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkKKyNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50LmgiCisjZW5kaWYK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xh
c3MgTWVkaWFTZXNzaW9uQ2xpZW50OwogCi1jbGFzcyBNZWRpYVNlc3Npb24geworY2xhc3MgTWVk
aWFTZXNzaW9uCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyAgICA6IHB1
YmxpYyBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50CisjZW5kaWYKK3sKIHB1YmxpYzoK
ICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1lZGlhU2Vzc2lvbj4gY3JlYXRlKE1lZGlhU2Vz
c2lvbkNsaWVudCYpOwogCkBAIC05OSw5ICsxMDgsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5S
ZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCkgY29uc3Q7CiAgICAgdm9pZCBkaWRSZWNlaXZl
UmVtb3RlQ29udHJvbENvbW1hbmQoUmVtb3RlQ29udHJvbENvbW1hbmRUeXBlKTsKIAotICAgIHZp
cnR1YWwgYm9vbCByZXF1aXJlc1BsYXliYWNrVGFyZ2V0Um91dGVNb25pdG9yaW5nKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2b2lkIHdpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hh
bmdlKCkgY29uc3Q7Ci0KICAgICBlbnVtIERpc3BsYXlUeXBlIHsKICAgICAgICAgTm9ybWFsLAog
ICAgICAgICBGdWxsc2NyZWVuLApAQCAtMTExLDYgKzExNywxNCBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGlzSGlkZGVuKCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUKQorICAgIC8vIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoTWVkaWFQbGF5YmFja1RhcmdldCYpIG92ZXJy
aWRlIHsgfQorICAgIHZpcnR1YWwgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURp
ZENoYW5nZShib29sKSBjb25zdCBvdmVycmlkZSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWly
ZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHJlcXVlc3RlZFBsYXliYWNrVGFyZ2V0UGlja2Vy
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6
CiAgICAgTWVkaWFTZXNzaW9uQ2xpZW50JiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVu
dDsgfQogCkBAIC0xNTAsNyArMTY0LDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBv
dmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKCkgY29uc3QgPSAwOwogCisjaWYg
RU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICB2aXJ0dWFsIHZvaWQgd2lyZWxl
c3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2UoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0V2ly
ZWxlc3NQbGF5YmFja1RhcmdldChjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0JikgeyB9CisjZW5k
aWYKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfk1lZGlhU2Vzc2lvbkNsaWVudCgpIHsgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNz
aW9uTWFuYWdlci5jcHAJKHJldmlzaW9uIDE4MTM5NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjg1
LDE0ICsyODUsNiBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uV2lsCiAg
ICAgfQogfQogCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OndpcmVsZXNzUm91dGVzQXZhaWxh
YmxlQ2hhbmdlZCgpCi17Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFuYWdlcjo6d2ly
ZWxlc3NSb3V0ZXNBdmFpbGFibGVDaGFuZ2VkIik7Ci0gICAgVmVjdG9yPE1lZGlhU2Vzc2lvbio+
IHNlc3Npb25zID0gbV9zZXNzaW9uczsKLSAgICBmb3IgKGF1dG8qIHNlc3Npb24gOiBzZXNzaW9u
cykKLSAgICAgICAgc2Vzc2lvbi0+d2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2UoKTsK
LX0KLQogI2lmICFQTEFURk9STShDT0NPQSkKIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBk
YXRlU2Vzc2lvblN0YXRlKCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L01lZGlhU2Vzc2lvbk1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmgJKHJldmlzaW9uIDE4MTM5NikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTU0LDcgKzU0LDYgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoKSBjb25zdDsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyQmFja2dyb3VuZCgpIGNvbnN0OwotICAg
IHZvaWQgd2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVDaGFuZ2VkKCk7CiAKICAgICBlbnVtIFNlc3Np
b25SZXN0cmljdGlvbkZsYWdzIHsKICAgICAgICAgTm9SZXN0cmljdGlvbnMgPSAwLApAQCAtNzks
OSArNzgsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2Vzc2lvbkNhbkxvYWRNZWRp
YShjb25zdCBNZWRpYVNlc3Npb24mKSBjb25zdDsKIAorI2lmIFBMQVRGT1JNKElPUykKICAgICB2
aXJ0dWFsIHZvaWQgY29uZmlndXJlV2lyZUxlc3NUYXJnZXRNb25pdG9yaW5nKCkgeyB9Ci0KLSNp
ZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZpcnR1YWwgYm9vbCBoYXNX
aXJlbGVzc1RhcmdldHNBdmFpbGFibGUoKSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2Vy
SU9TLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01l
ZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaAkocmV2aXNpb24gMTgxMzk2KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC00NSw5ICs0NSwxNCBAQCBjbGFzcyBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TIDogcHVibGlj
IE1lCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFTZXNzaW9uTWFuYWdlcmlPUygpOwogCisg
ICAgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSgpOworICAgIHZp
cnR1YWwgYm9vbCBoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGUoKSBvdmVycmlkZTsKKwogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgTWVkaWFTZXNzaW9uTWFuYWdlcjsKIAorICAgIE1lZGlh
U2Vzc2lvbk1hbmFnZXJpT1MoKTsKKwogICAgIHZpcnR1YWwgdm9pZCBzZXNzaW9uV2lsbEJlZ2lu
UGxheWJhY2soTWVkaWFTZXNzaW9uJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNlc3Np
b25XaWxsRW5kUGxheWJhY2soTWVkaWFTZXNzaW9uJikgb3ZlcnJpZGU7CiAgICAgCkBAIC01NSwx
NCArNjAsMTAgQEAgcHJpdmF0ZToKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRSZXN0cmlj
dGlvbnMoKSBvdmVycmlkZTsKIAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQp
Ci0gICAgdmlydHVhbCBib29sIGhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZSgpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBjb25maWd1cmVXaXJlTGVzc1RhcmdldE1vbml0b3JpbmcoKSBv
dmVycmlkZTsKLSNlbmRpZgogCiAgICAgdmlydHVhbCBib29sIHNlc3Npb25DYW5Mb2FkTWVkaWEo
Y29uc3QgTWVkaWFTZXNzaW9uJikgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICBNZWRpYVNlc3Npb25N
YW5hZ2VyaU9TKCk7CisgICAgCiAgICAgUmV0YWluUHRyPFdlYk1lZGlhU2Vzc2lvbkhlbHBlcj4g
bV9vYmpjT2JzZXJ2ZXI7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQkocmV2aXNp
b24gMTgxMzk2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vz
c2lvbk1hbmFnZXJJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTU5LDcgKzE1OSw2IEBAIHZvaWQgTWVk
aWFTZXNzaW9uTWFuYWdlcmlPUzo6cmVzZXRSZXN0cmkKICAgICBhZGRSZXN0cmljdGlvbihNZWRp
YVNlc3Npb246OlZpZGVvLCBBdXRvUHJlbG9hZGluZ05vdFBlcm1pdHRlZCk7CiB9CiAKLSNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2Vy
aU9TOjpoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGUoKQogewogICAgIHJldHVybiBbbV9vYmpj
T2JzZXJ2ZXIgaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlXTsKQEAgLTE4NCw4ICsxODMsNyBA
QCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmNvbmZpZ3VyZVdpCiAgICAgZWxzZQogICAg
ICAgICBbbV9vYmpjT2JzZXJ2ZXIgc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXTsKIH0KLSNl
bmRpZgotICAgIAorCiB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25XaWxsQmVn
aW5QbGF5YmFjayhNZWRpYVNlc3Npb24mIHNlc3Npb24pCiB7CiAgICAgTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKHNlc3Npb24pOwpAQCAtMjMzLDYgKzIzMSwx
NCBAQCBib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25DYW5MCiAgICAgcmV0dXJu
IHNlc3Npb24uc3RhdGUoKSA9PSBNZWRpYVNlc3Npb246OlBsYXlpbmcgfHwgIXNlc3Npb24uaXNI
aWRkZW4oKSB8fCBzZXNzaW9uLmRpc3BsYXlUeXBlKCkgPT0gTWVkaWFTZXNzaW9uOjpPcHRpbWl6
ZWQ7CiB9CiAKK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6ZXh0ZXJuYWxPdXRwdXREZXZp
Y2VBdmFpbGFibGVEaWRDaGFuZ2UoKQoreworICAgIFZlY3RvcjxNZWRpYVNlc3Npb24qPiBzZXNz
aW9uTGlzdCA9IHNlc3Npb25zKCk7CisgICAgYm9vbCBoYXZlVGFyZ2V0cyA9IFttX29iamNPYnNl
cnZlciBoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGVdOworICAgIGZvciAoYXV0byogc2Vzc2lv
biA6IHNlc3Npb25MaXN0KQorICAgICAgICBzZXNzaW9uLT5leHRlcm5hbE91dHB1dERldmljZUF2
YWlsYWJsZURpZENoYW5nZShoYXZlVGFyZ2V0cyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogQGltcGxlbWVudGF0aW9uIFdlYk1lZGlhU2Vzc2lvbkhlbHBlcgpAQCAtNDQ1LDcgKzQ1
MSw3IEBAIC0gKHZvaWQpd2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2UKICAgICAgICAg
aWYgKCFfY2FsbGJhY2spCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgX2NhbGxiYWNr
LT53aXJlbGVzc1JvdXRlc0F2YWlsYWJsZUNoYW5nZWQoKTsKKyAgICAgICAgX2NhbGxiYWNrLT5l
eHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSgpOwogICAgIH0pOwogfQogQGVu
ZApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1Rh
cmdldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWJhY2tUYXJnZXQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgTWVkaWFQbGF5YmFja1RhcmdldF9oCisjZGVmaW5lIE1lZGlhUGxheWJhY2tUYXJn
ZXRfaAorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKworI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorT0JKQ19DTEFTUyBOU0tl
eWVkQXJjaGl2ZXI7CitPQkpDX0NMQVNTIE5TS2V5ZWRVbmFyY2hpdmVyOworT0JKQ19DTEFTUyBB
Vk91dHB1dERldmljZVBpY2tlckNvbnRleHQ7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5N
ZWRpYVBsYXliYWNrVGFyZ2V0KCkgeyB9CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBXRUJD
T1JFX0VYUE9SVCBNZWRpYVBsYXliYWNrVGFyZ2V0KEFWT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4
dCAqY29udGV4dCA9IG5pbCkgeyBtX2RldmljZVBpY2tlckNvbnRleHQgPSBjb250ZXh0OyB9CisK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuY29kZShOU0tleWVkQXJjaGl2ZXIgKikgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgZGVjb2RlKE5TS2V5ZWRVbmFyY2hpdmVy
ICosIE1lZGlhUGxheWJhY2tUYXJnZXQmKTsKKworICAgIHZvaWQgc2V0RGV2aWNlUGlja2VyQ29u
dGV4dChBVk91dHB1dERldmljZVBpY2tlckNvbnRleHQgKmNvbnRleHQpIHsgbV9kZXZpY2VQaWNr
ZXJDb250ZXh0ID0gY29udGV4dDsgfQorICAgIEFWT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dCAq
ZGV2aWNlUGlja2VyQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlUGlja2VyQ29udGV4
dC5nZXQoKTsgfQorI2VuZGlmCisKK3Byb3RlY3RlZDoKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBSZXRhaW5QdHI8QVZPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0PiBtX2RldmljZVBpY2tlckNv
bnRleHQ7CisjZW5kaWYKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJD
bGllbnQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
Q2xpZW50X2gKKyNkZWZpbmUgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudF9oCisKKyNp
ZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorCisjaW5jbHVkZSAiTWVkaWFQbGF5
YmFja1RhcmdldC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhUGxheWJh
Y2tUYXJnZXQ7CisKK2NsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQgeworcHVi
bGljOgorICAgIHZpcnR1YWwgfk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoKSB7IH0K
KworICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VQbGF5YmFja1RhcmdldChNZWRpYVBsYXliYWNr
VGFyZ2V0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWls
YWJsZURpZENoYW5nZShib29sKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWly
ZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgcmVxdWVzdGVkUGxheWJhY2tUYXJnZXRQaWNrZXIoKSBjb25zdCA9IDA7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUKQorCisjZW5kaWYgLy8gTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudF9o
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwCShyZXZpc2lvbiAxODEzOTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2Nyw2ICs4NjcsMTEgQEAg
dm9pZCBNZWRpYVBsYXllcjo6Y3VycmVudFBsYXliYWNrVGFyZ2V0SQogewogICAgIG1fY2xpZW50
Lm1lZGlhUGxheWVyQ3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQodGhpcyk7
CiB9CisKK3ZvaWQgTWVkaWFQbGF5ZXI6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoY29uc3Qg
TWVkaWFQbGF5YmFja1RhcmdldCYgZGV2aWNlKQoreworICAgIG1fcHJpdmF0ZS0+c2V0V2lyZWxl
c3NQbGF5YmFja1RhcmdldChkZXZpY2UpOworfQogI2VuZGlmCiAKIGRvdWJsZSBNZWRpYVBsYXll
cjo6bWF4RmFzdEZvcndhcmRSYXRlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAkocmV2aXNpb24gMTgxMzk2KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNzEsNiArNzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvU291
cmNlUHJvdmlkZXI7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKK2NsYXNzIE1lZGlh
UGxheWJhY2tUYXJnZXQ7CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIGNsYXNzIE1lZGlhU291
cmNlUHJpdmF0ZUNsaWVudDsKICNlbmRpZgpAQCAtNDc2LDYgKzQ3Nyw4IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgY3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQoKTsKICAgICB2
b2lkIHBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZCgpOworCisgICAgdm9pZCBzZXRX
aXJlbGVzc1BsYXliYWNrVGFyZ2V0KGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXQmKTsKICNlbmRp
ZgogCiAgICAgZG91YmxlIG1pbkZhc3RSZXZlcnNlUmF0ZSgpIGNvbnN0OwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRl
LmgJKHJldmlzaW9uIDE4MTM5NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CitjbGFz
cyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3MgUGxhdGZvcm1UZXh0VHJhY2s7CiAKIGNsYXNz
IE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CkBAIC0xNjYsNiArMTY3LDggQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBib29sIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1Bs
YXliYWNrRGlzYWJsZWQoYm9vbCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0V2lyZWxlc3NQ
bGF5YmFja1RhcmdldChjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0JikgeyB9CiAjZW5kaWYKIAog
I2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0TWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9NZWRpYVBsYXliYWNrVGFyZ2V0TWFjLm1tCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk1l
ZGlhUGxheWJhY2tUYXJnZXQuaCIKKworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJH
RVQpICYmICFQTEFURk9STShJT1MpCisKKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVk91dHB1dERl
dmljZVBpY2tlckNvbnRleHQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1Rhcmdl
dC5oPgorI2ltcG9ydCA8V2ViQ29yZS9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8b2JqYy9ydW50
aW1lLmg+CisKK3R5cGVkZWYgQVZPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0IEFWT3V0cHV0RGV2
aWNlUGlja2VyQ29udGV4dFR5cGU7CisKK1NPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoQVZG
b3VuZGF0aW9uKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZPdXRwdXREZXZpY2VQ
aWNrZXJDb250ZXh0KQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBOU1N0cmluZyAq
IGNvbnN0IGRldmljZUNvbnRleHRLZXkgPSBAImRldmljZUNvbnRleHQiOworCit2b2lkIE1lZGlh
UGxheWJhY2tUYXJnZXQ6OmVuY29kZShOU0tleWVkQXJjaGl2ZXIgKmFyY2hpdmVyKSBjb25zdAor
eworICAgIGlmIChbZ2V0QVZPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0Q2xhc3MoKSBjb25mb3Jt
c1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5nKV0pCisgICAgICAgIFthcmNoaXZl
ciBlbmNvZGVPYmplY3Q6bV9kZXZpY2VQaWNrZXJDb250ZXh0LmdldCgpIGZvcktleTpkZXZpY2VD
b250ZXh0S2V5XTsKK30KKworYm9vbCBNZWRpYVBsYXliYWNrVGFyZ2V0OjpkZWNvZGUoTlNLZXll
ZFVuYXJjaGl2ZXIgKnVuYXJjaGl2ZXIsIE1lZGlhUGxheWJhY2tUYXJnZXQmIHBsYXliYWNrVGFy
Z2V0KQoreworICAgIGlmICghW2dldEFWT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dENsYXNzKCkg
Y29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBBVk91dHB1dERldmljZVBpY2tlckNvbnRleHQgKmNvbnRleHQg
PSBuaWw7CisKKyAgICBAdHJ5IHsKKyAgICAgICAgY29udGV4dCA9IFt1bmFyY2hpdmVyIGRlY29k
ZU9iamVjdE9mQ2xhc3M6Z2V0QVZPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0Q2xhc3MoKSBmb3JL
ZXk6ZGV2aWNlQ29udGV4dEtleV07CisgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRp
b24pIHsKKyAgICAgICAgTE9HX0VSUk9SKCJUaGUgdGFyZ2V0IHBpY2tlciBiZWluZyBkZWNvZGVk
IGlzIG5vdCBhIEFWT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dC4iKTsKKyAgICB9CisKKyAgICBw
bGF5YmFja1RhcmdldC5tX2RldmljZVBpY2tlckNvbnRleHQgPSBjb250ZXh0OworCisgICAgcmV0
dXJuIGNvbnRleHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5oCShyZXZpc2lvbiAxODEzOTYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKIE9CSkNfQ0xB
U1MgQVZBc3NldEltYWdlR2VuZXJhdG9yOwogT0JKQ19DTEFTUyBBVkFzc2V0UmVzb3VyY2VMb2Fk
aW5nUmVxdWVzdDsKIE9CSkNfQ0xBU1MgQVZNZWRpYVNlbGVjdGlvbkdyb3VwOworT0JKQ19DTEFT
UyBBVk91dHB1dERldmljZVBpY2tlckNvbnRleHQ7CiBPQkpDX0NMQVNTIEFWUGxheWVyOwogT0JK
Q19DTEFTUyBBVlBsYXllckl0ZW07CiBPQkpDX0NMQVNTIEFWUGxheWVySXRlbUxlZ2libGVPdXRw
dXQ7CkBAIC01OSwxMyArNjAsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlVlRQaXhlbFRyYW5z
ZmVyU2VzcwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlcjsKLWNsYXNzIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjsKLWNsYXNz
IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDOwogY2xhc3MgQXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakM7CiBjbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM7CitjbGFzcyBJbmJhbmRN
ZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY7CitjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGT2JqQzsKK2NsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQ7CiBjbGFzcyBNZWRpYVNlbGVjdGlv
bkdyb3VwQVZGT2JqQzsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzsKK2NsYXNzIFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlcjsKIAogY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQyA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24gewogcHVi
bGljOgpAQCAtMjc0LDYgKzI3Niw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBTdHJpbmcgd2ly
ZWxlc3NQbGF5YmFja1RhcmdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIE1l
ZGlhUGxheWVyOjpXaXJlbGVzc1BsYXliYWNrVGFyZ2V0VHlwZSB3aXJlbGVzc1BsYXliYWNrVGFy
Z2V0VHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCB3aXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0IG92ZXJyaWRlOworI2lmICFQTEFURk9STShJT1MpCisg
ICAgdmlydHVhbCB2b2lkIHNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoY29uc3QgTWVkaWFQbGF5
YmFja1RhcmdldCYpIG92ZXJyaWRlOworI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHNldFdpcmVs
ZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRl
RGlzYWJsZUV4dGVybmFsUGxheWJhY2soKTsKICNlbmRpZgpAQCAtMzQ1LDYgKzM1MCwxMCBAQCBw
cml2YXRlOgogICAgIFJlZlB0cjxJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY+IG1f
bWV0YWRhdGFUcmFjazsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorICAgIFJldGFpblB0cjxBVk91dHB1dERldmljZVBpY2tl
ckNvbnRleHQ+IG1fb3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dDsKKyNlbmRpZgorCiAgICAgbXV0
YWJsZSBSZXRhaW5QdHI8TlNBcnJheT4gbV9jYWNoZWRTZWVrYWJsZVJhbmdlczsKICAgICBtdXRh
YmxlIFJldGFpblB0cjxOU0FycmF5PiBtX2NhY2hlZExvYWRlZFJhbmdlczsKICAgICBSZXRhaW5Q
dHI8TlNBcnJheT4gbV9jYWNoZWRUcmFja3M7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0J
KHJldmlzaW9uIDE4MTM5NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbXBvcnQgIk91dE9mQmFuZFRleHRUcmFj
a1ByaXZhdGVBVkYuaCIKICNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgorI2lt
cG9ydCAiTWVkaWFQbGF5YmFja1RhcmdldC5oIgogI2ltcG9ydCAiTWVkaWFTZWxlY3Rpb25Hcm91
cEFWRk9iakMuaCIKICNpbXBvcnQgIk1lZGlhVGltZUFWRm91bmRhdGlvbi5oIgogI2ltcG9ydCAi
UGxhdGZvcm1UaW1lUmFuZ2VzLmgiCkBAIC0xMzUsNiArMTM2LDE0IEBAIEBpbnRlcmZhY2UgQVZV
UkxBc3NldCAoV2ViS2l0RXh0ZW5zaW9ucykKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgTlNVUkwgKnJlc29sdmVkVVJMOwogQGVuZAogCisjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQordHlwZWRlZiBBVk91dHB1dERldmljZVBpY2tl
ckNvbnRleHQgQVZPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0VHlwZTsKKworQGludGVyZmFjZSBB
VlBsYXllciAoV2ViS2l0RXh0ZW5zaW9ucykKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBBVk91dHB1
dERldmljZVBpY2tlckNvbnRleHQgKm91dHB1dERldmljZVBpY2tlckNvbnRleHQ7CitAZW5kCisj
ZW5kaWYKKwogdHlwZWRlZiBBVlBsYXllciBBVlBsYXllclR5cGU7CiB0eXBlZGVmIEFWUGxheWVy
SXRlbSBBVlBsYXllckl0ZW1UeXBlOwogdHlwZWRlZiBBVlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0
IEFWUGxheWVySXRlbUxlZ2libGVPdXRwdXRUeXBlOwpAQCAtNTQ2LDYgKzU1NSw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKICAgICAgICAgW21fYXZQbGF5ZXIu
Z2V0KCkgcmVtb3ZlT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAInJh
dGUiXTsKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgICAgICBbbV9h
dlBsYXllci5nZXQoKSByZW1vdmVPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQ
YXRoOkAiZXh0ZXJuYWxQbGF5YmFja0FjdGl2ZSJdOworICAgICAgICBbbV9hdlBsYXllci5nZXQo
KSByZW1vdmVPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAib3V0cHV0
RGV2aWNlUGlja2VyQ29udGV4dCJdOwogI2VuZGlmCiAgICAgICAgIG1fYXZQbGF5ZXIgPSBuaWw7
CiAgICAgfQpAQCAtOTI3LDYgKzkzNywxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6CiAgICAgW21fYXZQbGF5ZXIuZ2V0KCkgYWRkT2JzZXJ2ZXI6bV9vYmpjT2Jz
ZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAInJhdGUiIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2Vydmlu
Z09wdGlvbk5ldyBjb250ZXh0Oih2b2lkICopTWVkaWFQbGF5ZXJBVkZvdW5kYXRpb25PYnNlcnZh
dGlvbkNvbnRleHRQbGF5ZXJdOwogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQp
CiAgICAgW21fYXZQbGF5ZXIuZ2V0KCkgYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkg
Zm9yS2V5UGF0aDpAImV4dGVybmFsUGxheWJhY2tBY3RpdmUiIG9wdGlvbnM6TlNLZXlWYWx1ZU9i
c2VydmluZ09wdGlvbk5ldyBjb250ZXh0Oih2b2lkICopTWVkaWFQbGF5ZXJBVkZvdW5kYXRpb25P
YnNlcnZhdGlvbkNvbnRleHRQbGF5ZXJdOworICAgIFttX2F2UGxheWVyLmdldCgpIGFkZE9ic2Vy
dmVyOm1fb2JqY09ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJvdXRwdXREZXZpY2VQaWNrZXJD
b250ZXh0IiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDoodm9p
ZCAqKU1lZGlhUGxheWVyQVZGb3VuZGF0aW9uT2JzZXJ2YXRpb25Db250ZXh0UGxheWVyXTsKKyNl
bmRpZgorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICB1cGRhdGVE
aXNhYmxlRXh0ZXJuYWxQbGF5YmFjaygpOwogI2VuZGlmCiAKQEAgLTkzOCw2ICs5NTIsMTEgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgogICAgIFttX2F2UGxheWVy
LmdldCgpIHNldEFsbG93c0V4dGVybmFsUGxheWJhY2s6bV9hbGxvd3NXaXJlbGVzc1ZpZGVvUGxh
eWJhY2tdOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAm
JiAhUExBVEZPUk0oSU9TKQorICAgIGlmIChtX291dHB1dERldmljZVBpY2tlckNvbnRleHQpCisg
ICAgICAgIG1fYXZQbGF5ZXIuZ2V0KCkub3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dCA9IG1fb3V0
cHV0RGV2aWNlUGlja2VyQ29udGV4dC5nZXQoKTsKKyNlbmRpZgorCiAgICAgaWYgKHBsYXllcigp
LT5jbGllbnQoKS5tZWRpYVBsYXllcklzVmlkZW8oKSkKICAgICAgICAgY3JlYXRlQVZQbGF5ZXJM
YXllcigpOwogCkBAIC0xMTM0LDkgKzExNTMsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6CiAgICAgICAgIHN5bmNUZXh0VHJhY2tCb3VuZHMoKTsKICAgICAgICAg
W21fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgYWRkU3VibGF5ZXI6bV90ZXh0VHJhY2tSZXByZXNlbnRh
dGlvbkxheWVyLmdldCgpXTsKICAgICB9Ci0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVCkKKwogICAgIHVwZGF0ZURpc2FibGVFeHRlcm5hbFBsYXliYWNrKCk7Ci0jZW5kaWYKIH0K
IAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxz
Y3JlZW5GcmFtZShGbG9hdFJlY3QgZnJhbWUpCkBAIC0yNjg3LDcgKzI3MDUsMTAgQEAgYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgogICAgIGlmICghbV9hdlBsYXllcikK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYm9vbCB3aXJlbGVzc1RhcmdldCA9IFttX2F2
UGxheWVyLmdldCgpIGlzRXh0ZXJuYWxQbGF5YmFja0FjdGl2ZV07CisgICAgYm9vbCB3aXJlbGVz
c1RhcmdldCA9IGZhbHNlOworCisgICAgd2lyZWxlc3NUYXJnZXQgPSBtX2F2UGxheWVyLmdldCgp
LmV4dGVybmFsUGxheWJhY2tBY3RpdmU7CisKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjppc0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNzKCVw
KSAtIHJldHVybmluZyAlcyIsIHRoaXMsIGJvb2xTdHJpbmcod2lyZWxlc3NUYXJnZXQpKTsKICAg
ICByZXR1cm4gd2lyZWxlc3NUYXJnZXQ7CiB9CkBAIC0yNjk3LDYgKzI3MTgsNyBAQCBNZWRpYVBs
YXllcjo6V2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGUgCiAgICAgaWYgKCFtX2F2UGxheWVyKQog
ICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlRhcmdldFR5cGVOb25lOwogCisjaWYgUExBVEZP
Uk0oSU9TKQogICAgIHN3aXRjaCAod2tFeGVybmFsRGV2aWNlVHlwZUZvclBsYXllcihtX2F2UGxh
eWVyLmdldCgpKSkgewogICAgIGNhc2Ugd2tFeHRlcm5hbFBsYXliYWNrVHlwZU5vbmU6CiAgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllcjo6VGFyZ2V0VHlwZU5vbmU7CkBAIC0yNzA4LDYgKzI3MzAs
MTAgQEAgTWVkaWFQbGF5ZXI6OldpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlIAogCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpUYXJnZXRUeXBlTm9u
ZTsKKworI2Vsc2UKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlRhcmdldFR5cGVBaXJQbGF5Owor
I2VuZGlmCiB9CiAKIFN0cmluZyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp3
aXJlbGVzc1BsYXliYWNrVGFyZ2V0TmFtZSgpIGNvbnN0CkBAIC0yNzI1LDcgKzI3NTEsNyBAQCBi
b29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiB7CiAgICAgaWYgKCFtX2F2
UGxheWVyKQogICAgICAgICByZXR1cm4gIW1fYWxsb3dzV2lyZWxlc3NWaWRlb1BsYXliYWNrOwot
ICAgIAorCiAgICAgbV9hbGxvd3NXaXJlbGVzc1ZpZGVvUGxheWJhY2sgPSBbbV9hdlBsYXllci5n
ZXQoKSBhbGxvd3NFeHRlcm5hbFBsYXliYWNrXTsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgl
cCkgLSByZXR1cm5pbmcgJXMiLCB0aGlzLCBib29sU3RyaW5nKCFtX2FsbG93c1dpcmVsZXNzVmlk
ZW9QbGF5YmFjaykpOwogCkBAIC0yNzM4LDE2ICsyNzY0LDMyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKICAgICBtX2FsbG93c1dpcmVsZXNzVmlkZW9QbGF5YmFj
ayA9ICFkaXNhYmxlZDsKICAgICBpZiAoIW1fYXZQbGF5ZXIpCiAgICAgICAgIHJldHVybjsKLSAg
ICAKKwogICAgIFttX2F2UGxheWVyLmdldCgpIHNldEFsbG93c0V4dGVybmFsUGxheWJhY2s6IWRp
c2FibGVkXTsKIH0KIAorI2lmICFQTEFURk9STShJT1MpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoY29uc3QgTWVkaWFQ
bGF5YmFja1RhcmdldCYgdGFyZ2V0KQoreworICAgIG1fb3V0cHV0RGV2aWNlUGlja2VyQ29udGV4
dCA9IHRhcmdldC5kZXZpY2VQaWNrZXJDb250ZXh0KCk7CisKKyAgICBMT0coTWVkaWEsICJNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0
KCVwKSAtIHRhcmdldCA9ICVwIiwgdGhpcywgbV9vdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0Lmdl
dCgpKTsKKworICAgIGlmICghbV9hdlBsYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9h
dlBsYXllci5nZXQoKS5vdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0ID0gbV9vdXRwdXREZXZpY2VQ
aWNrZXJDb250ZXh0LmdldCgpOworfQorI2VuZGlmCisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlRGlzYWJsZUV4dGVybmFsUGxheWJhY2soKQogewogICAg
IGlmICghbV9hdlBsYXllcikKICAgICAgICAgcmV0dXJuOwogCisjaWYgUExBVEZPUk0oSU9TKQog
ICAgIFttX2F2UGxheWVyIHNldFVzZXNFeHRlcm5hbFBsYXliYWNrV2hpbGVFeHRlcm5hbFNjcmVl
bklzQWN0aXZlOm1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgIT0gbmlsXTsKKyNlbmRpZgogfQogI2Vu
ZGlmCiAKQEAgLTMxNjksNiArMzIxMSw4IEBAIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0
aDprZXlQYXRoIG8KICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgICAg
ICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJleHRlcm5hbFBsYXliYWNrQWN0
aXZlIl0pCiAgICAgICAgICAgICBmdW5jdGlvbiA9IFdURjo6YmluZCgmTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzRGlkQ2hhbmdlLCBt
X2NhbGxiYWNrKTsKKyAgICAgICAgZWxzZSBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAi
b3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dCJdKQorICAgICAgICAgICAgZnVuY3Rpb24gPSBXVEY6
OmJpbmQoJk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXliYWNrVGFyZ2V0
SXNXaXJlbGVzc0RpZENoYW5nZSwgbV9jYWxsYmFjayk7CiAjZW5kaWYKICAgICB9CiAgICAgCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAJKHJldmlz
aW9uIDE4MTM5NikKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDYgKzk3LDcgQEAgSW50ZXJuYWxTZXR0aW5nczo6QmFj
a3VwOjpCYWNrdXAoU2V0dGluZwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgLCBtX3Rv
dWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKHNldHRpbmdzLmlzVG91Y2hFdmVudEVtdWxhdGlvbkVu
YWJsZWQoKSkKICNlbmRpZgorICAgICwgbV9tZWRpYVBsYXliYWNrQWxsb3dzQWlyUGxheShzZXR0
aW5ncy5tZWRpYVBsYXliYWNrQWxsb3dzQWlyUGxheSgpKQogewogfQogCkBAIC0yMDEsNiArMjAy
LDcgQEAgSW50ZXJuYWxTZXR0aW5nczo6SW50ZXJuYWxTZXR0aW5ncyhQYWdlKgogICAgICwgbV9w
YWdlKHBhZ2UpCiAgICAgLCBtX2JhY2t1cChwYWdlLT5zZXR0aW5ncygpKQogeworICAgIHBhZ2Ut
PnNldHRpbmdzKCkuc2V0TWVkaWFQbGF5YmFja0FsbG93c0FpclBsYXkoZmFsc2UpOwogfQogCiB2
b2lkIEludGVybmFsU2V0dGluZ3M6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUoKQpJbmRleDogU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgJKHJldmlzaW9uIDE4MTM5NikK
KysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCSh3b3JraW5nIGNv
cHkpCkBAIC05NSw2ICs5NSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQog
ICAgICAgICBib29sIG1fdG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQ7CiAjZW5kaWYKKyAgICAg
ICAgYm9vbCBtX21lZGlhUGxheWJhY2tBbGxvd3NBaXJQbGF5OwogICAgIH07CiAKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbnRlcm5hbFNldHRpbmdzPiBjcmVhdGUoUGFnZSogcGFnZSkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE4MTM5NikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcyIEBACisyMDE1LTAzLTExICBFcmljIENhcmxzb24g
IDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFVwZGF0ZSBBaXJQbGF5
IGhhbmRsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDI1NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAgICAgICAqIFNo
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL1dlYkNv
cmVBcmd1bWVudENvZGVyc01hYy5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxBVlBs
YXliYWNrVGFyZ2V0Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxBVlBs
YXliYWNrVGFyZ2V0Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5
OjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJB
VlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHk6On5XZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHk6OnNo
b3dQbGF5YmFja1RhcmdldFBpY2tlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkFWUGxheWJhY2tU
YXJnZXRQaWNrZXJQcm94eTo6c3RhcnRpbmdNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5OjpzdG9wTW9uaXRv
cmluZ1BsYXliYWNrVGFyZ2V0cyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkFWUGxheWJhY2tU
YXJnZXRQaWNrZXJQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFj
a1RhcmdldFBpY2tlclByb3h5OjpDbGllbnQ6On5DbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRldmlj
ZVBpY2tlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzaG93UGxheWJh
Y2tUYXJnZXRQaWNrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN0YXJ0aW5n
TW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6c3RvcE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmRpZENob29zZVBsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW06CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVQbGF5YmFja1RhcmdldFBpY2tlcik6
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlN
YWMuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJBVlBsYXliYWNrVGFyZ2V0
UGlja2VyUHJveHlNYWMubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBVlBsYXliYWNr
VGFyZ2V0UGlja2VyUHJveHlNYWM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFWUGxh
eWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYzo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5
TWFjKToKKyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFj
Ojp+V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjOjpvdXRwdXRlRGV2aWNlQXZhaWxhYmls
aXR5Q2hhbmdlZFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBVlBsYXliYWNrVGFy
Z2V0UGlja2VyUHJveHlNYWM6OmF2YWlsYWJsZURldmljZXNEaWRDaGFuZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6OmRldmljZVBpY2tlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYzo6c2hv
d1BsYXliYWNrVGFyZ2V0UGlja2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFja1Rh
cmdldFBpY2tlclByb3h5TWFjOjpjdXJyZW50RGV2aWNlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjOjpzdGFydGluZ01vbml0b3Jp
bmdQbGF5YmFja1RhcmdldHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJBVlBsYXliYWNrVGFyZ2V0
UGlja2VyUHJveHlNYWM6OnN0b3BNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKToKKyAgICAgICAg
KC1bV2ViQVZPdXRwdXREZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlckhlbHBlciBpbml0V2l0aENh
bGxiYWNrOl0pOgorICAgICAgICAoLVtXZWJBVk91dHB1dERldmljZVBpY2tlck1lbnVDb250cm9s
bGVySGVscGVyIGNsZWFyQ2FsbGJhY2tdKToKKyAgICAgICAgKC1bV2ViQVZPdXRwdXREZXZpY2VQ
aWNrZXJNZW51Q29udHJvbGxlckhlbHBlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0
OmNoYW5nZTpjb250ZXh0Ol0pOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFWUGxheWJh
Y2tUYXJnZXRQaWNrZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFj
a1RhcmdldFBpY2tlcjo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXI6OnNob3dQbGF5YmFja0RldmljZVBpY2tlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXI6OmNvbmZpZ3VyZVdp
cmVMZXNzVGFyZ2V0TW9uaXRvcmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkFWUGxheWJhY2tU
YXJnZXRQaWNrZXI6OmFkZENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkFWUGxheWJhY2tU
YXJnZXRQaWNrZXI6OnJlbW92ZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkFWUGxheWJh
Y2tUYXJnZXRQaWNrZXI6OmRpZENob29zZVBsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlcjo6cGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlE
aWRDaGFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpzaG93UGxheWJh
Y2tUYXJnZXRQaWNrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnN0YXJ0
aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9t
ZUNsaWVudDo6c3RvcE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXliYWNrVGFyZ2V0U2VsZWN0
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0
eURpZENoYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5z
Yi5pbjoKKwogMjAxNS0wMy0xMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS10gRG8gbm90IGxvb2sgZm9yIGNoaWxkIHByb2Nlc3NlcyBp
biB0aGUgVUkgcHJvY2VzcyBiaW5hcnkgcGF0aApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkocmV2aXNpb24gMTgxMzk2KQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTUsNiArMTE1LDEyIEBAIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKIH0K
ICNlbmRpZgogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQ7Cit9CisjZW5kaWYKKwogbmFt
ZXNwYWNlIElQQyB7CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
QWZmaW5lVHJhbnNmb3JtPiB7CkBAIC00NTQsNiArNDYwLDEzIEBAIHRlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZToKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnRE
ZWNvZGVyJiwgV2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGEmKTsKIH07CiAKKyNpZiBFTkFCTEUo
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQmKTsK
KyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiwgV2ViQ29yZTo6TWVkaWFQ
bGF5YmFja1RhcmdldCYpOworfTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBJUEMKIAogI2Vu
ZGlmIC8vIFdlYkNvcmVBcmd1bWVudENvZGVyc19oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQkocmV2aXNpb24g
MTgxMzk2KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM4LDExICszOCwxNyBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9Qcm90ZWN0aW9uU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5o
PgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
U29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPG9iamMvcnVudGltZS5oPgogCiAjaWYgVVNFKENGTkVU
V09SSykKICNpbXBvcnQgPENGTmV0d29yay9DRlVSTFJlcXVlc3QuaD4KICNlbmRpZgogCisjaWYg
RU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyNpbXBvcnQgPFdlYkNvcmUvTWVkaWFQ
bGF5YmFja1RhcmdldC5oPgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBu
YW1lc3BhY2UgSVBDIHsKQEAgLTQzMiw0ICs0MzgsMzEgQEAgYm9vbCBBcmd1bWVudENvZGVyPENv
bnRlbnRGaWx0ZXJVbmJsb2NrSAogICAgIHJldHVybiB0cnVlOwogfQogCisjaWYgRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKK3ZvaWQgQXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNr
VGFyZ2V0Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgTWVkaWFQbGF5
YmFja1RhcmdldCYgdGFyZ2V0KQoreworICAgIFJldGFpblB0cjxOU011dGFibGVEYXRhPiBkYXRh
ID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKKyAgICBSZXRhaW5QdHI8
TlNLZXllZEFyY2hpdmVyPiBhcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxs
b2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFibGVEYXRhOmRhdGEuZ2V0KCldKTsKKyAgICBbYXJj
aGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsKKyAgICB0YXJnZXQuZW5jb2RlKGFy
Y2hpdmVyLmdldCgpKTsKKyAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOworICAgIElQQzo6
ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihkYXRhLmdldCgpKSk7
Cit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Pjo6ZGVjb2RlKEFy
Z3VtZW50RGVjb2RlciYgZGVjb2RlciwgTWVkaWFQbGF5YmFja1RhcmdldCYgdGFyZ2V0KQorewor
ICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7CisgICAgaWYgKCFJUEM6OmRlY29kZShkZWNv
ZGVyLCBkYXRhKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUmV0YWluUHRyPE5TS2V5
ZWRVbmFyY2hpdmVyPiB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFs
bG9jXSBpbml0Rm9yUmVhZGluZ1dpdGhEYXRhOihOU0RhdGEgKilkYXRhLmdldCgpXSk7CisgICAg
W3VuYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsKKyAgICBpZiAoIU1lZGlh
UGxheWJhY2tUYXJnZXQ6OmRlY29kZSh1bmFyY2hpdmVyLmdldCgpLCB0YXJnZXQpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOwor
ICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIElQQwpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCShyZXZpc2lvbiAxODEzOTYpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw2ICszNCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yQ2xpZW50Lmg+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQp
CisjaW5jbHVkZSAiV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5LmgiCisjZW5kaWYK
KwogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIlBsdWdpbkNvbXBsZXhUZXh0SW5wdXRT
dGF0ZS5oIgogCkBAIC0zMTMsNiArMzE3LDExIEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShNQUMp
CiAgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1BY3Rpb25NZW51SGl0VGVzdChjb25zdCBBY3Rp
b25NZW51SGl0VGVzdFJlc3VsdCYsIGJvb2wgZm9ySW1tZWRpYXRlQWN0aW9uLCBBUEk6Ok9iamVj
dCopID0gMDsKICNlbmRpZgorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkg
JiYgIVBMQVRGT1JNKElPUykKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxXZWJNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyUHJveHk+IGNyZWF0ZVBsYXliYWNrVGFyZ2V0UGlja2VyKFdlYlBh
Z2VQcm94eSopID0gMDsKKyNlbmRpZgorCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuaCIKKwor
I2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHk6OldlYk1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJQcm94eShDbGllbnQmIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KCZjbGllbnQp
Cit7Cit9CisKK1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eTo6fldlYk1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJQcm94eSgpCit7CisgICAgbV9jbGllbnQgPSAwOworfQorCit2b2lk
IFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eTo6c2hvd1BsYXliYWNrVGFyZ2V0UGlj
a2VyKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGJvb2wpCit7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuOworfQorCit2b2lkIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJQcm94eTo6c3RhcnRpbmdNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkKK3sKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm47Cit9CisKK3ZvaWQgV2ViTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlclByb3h5OjpzdG9wTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpCit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQp
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYk1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eV9oCisjZGVmaW5lIFdlYk1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJQcm94eV9oCisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQor
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEZsb2F0UmVjdDsKK2NsYXNzIE1lZGlhUGxheWJh
Y2tUYXJnZXQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7
CisKK2NsYXNzIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eSB7CitwdWJsaWM6Cisg
ICAgY2xhc3MgQ2xpZW50IHsKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgfkNsaWVu
dCgpIHsgfQorCisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hvb3NlUGxh
eWJhY2tUYXJnZXQoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldCYpID0gMDsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdl
KGJvb2wpID0gMDsKKworICAgICAgICB2b2lkIGludmFsaWRhdGUoKTsKKyAgICB9OworCisgICAg
dmlydHVhbCB+V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5KCk7CisKKyAgICB2aXJ0
dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYsIGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1Rh
cmdldHMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMo
KTsKKworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJQcm94eShDbGllbnQmKTsKKworICAgIENsaWVudCogbV9jbGllbnQ7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJH
RVQpCisKKyNlbmRpZiAvLyBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlfaApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDE4
MTM5NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NTkyLDQgKzU1OTIsNDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFNo
b3VsZERpc3BhdGNoRmFrZQogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0U2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKHNob3VsZERpc3BhdGNoRmFrZU1v
dXNlTW92ZUV2ZW50cyksIG1fcGFnZUlEKTsKIH0KIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisKK1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJQcm94eSYgV2ViUGFnZVByb3h5OjpkZXZpY2VQaWNrZXJQcm94eSgpCit7CisgICAgaWYg
KCFtX3BsYXliYWNrVGFyZ2V0UGlja2VyKQorICAgICAgICBtX3BsYXliYWNrVGFyZ2V0UGlja2Vy
ID0gbV9wYWdlQ2xpZW50LmNyZWF0ZVBsYXliYWNrVGFyZ2V0UGlja2VyKHRoaXMpOworCisgICAg
cmV0dXJuICptX3BsYXliYWNrVGFyZ2V0UGlja2VyLmdldCgpOworfQorCit2b2lkIFdlYlBhZ2VQ
cm94eTo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYg
cmVjdCwgYm9vbCBoYXNWaWRlbykKK3sKKyAgICBkZXZpY2VQaWNrZXJQcm94eSgpLnNob3dQbGF5
YmFja1RhcmdldFBpY2tlcihtX3BhZ2VDbGllbnQucm9vdFZpZXdUb1NjcmVlbihJbnRSZWN0KHJl
Y3QpKSwgaGFzVmlkZW8pOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnRpbmdNb25pdG9y
aW5nUGxheWJhY2tUYXJnZXRzKCkKK3sKKyAgICBkZXZpY2VQaWNrZXJQcm94eSgpLnN0YXJ0aW5n
TW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6c3Rv
cE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKQoreworICAgIGRldmljZVBpY2tlclByb3h5KCku
c3RvcE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6
OmRpZENob29zZVBsYXliYWNrVGFyZ2V0KGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJn
ZXQmIHRhcmdldCkKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQbGF5YmFja1RhcmdldFNlbGVj
dGVkKHRhcmdldCksIG1fcGFnZUlEKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmV4dGVybmFs
T3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGJvb2wgYXZhaWxhYmxlKQoreworICAgIGlm
ICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKGF2YWls
YWJsZSksIG1fcGFnZUlEKTsKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMTgx
Mzk2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTEsNiArMTExLDEwIEBACiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNHdGsu
aCIKICNlbmRpZgogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBM
QVRGT1JNKElPUykKKyNpbmNsdWRlICJXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHku
aCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIENvbnRleHRNZW51Q2xpZW50Owog
Y2xhc3MgRmluZENsaWVudDsKQEAgLTI1OCw2ICsyNjIsOSBAQCBjbGFzcyBXZWJQYWdlUHJveHkg
OiBwdWJsaWMgQVBJOjpPYmplY3RJCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAgICAg
LCBwdWJsaWMgV2ViQ29sb3JQaWNrZXI6OkNsaWVudAogI2VuZGlmCisjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykKKyAgICAsIHB1YmxpYyBXZWJN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHk6OkNsaWVudAorI2VuZGlmCiAgICAgLCBwdWJs
aWMgV2ViUG9wdXBNZW51UHJveHk6OkNsaWVudAogICAgICwgcHVibGljIElQQzo6TWVzc2FnZVJl
Y2VpdmVyCiAgICAgLCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyIHsKQEAgLTk5OSw2ICsxMDA2
LDE3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIHVpbnQzMl90
IHJlc3VsdCwgYm9vbCBzaG91bGRTYW1wbGUpOwogICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3Nh
Z2VXaXRoVmFsdWUoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0
aW9uLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIHNob3VsZFNhbXBsZSk7CiAKKyNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQorICAgIFdlYk1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eSYgZGV2aWNlUGlja2VyUHJveHkoKTsKKyAgICB2
b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBi
b29sIGhhc1ZpZGVvKTsKKyAgICB2b2lkIHN0YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0
cygpOworICAgIHZvaWQgc3RvcE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKKworICAgIC8v
IFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eTo6Q2xpZW50CisgICAgdmlydHVhbCB2
b2lkIGRpZENob29zZVBsYXliYWNrVGFyZ2V0KGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXQmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VB
dmFpbGFibGVEaWRDaGFuZ2UoYm9vbCkgb3ZlcnJpZGU7CisjZW5kaWYKKwogcHJpdmF0ZToKICAg
ICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IHBh
Z2VJRCwgY29uc3QgV2ViUGFnZUNvbmZpZ3VyYXRpb24mKTsKICAgICB2b2lkIHBsYXRmb3JtSW5p
dGlhbGl6ZSgpOwpAQCAtMTY2Miw2ICsxNjgwLDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Zp
ZXdTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBseTsKICAgICBWZWN0b3I8dWludDY0X3Q+
IG1fbmV4dFZpZXdTdGF0ZUNoYW5nZUNhbGxiYWNrczsKIAorI2lmIEVOQUJMRShXSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisgICAgc3RkOjp1bmlxdWVfcHRyPFdl
Yk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eT4gbV9wbGF5YmFja1RhcmdldFBpY2tlcjsK
KyNlbmRpZgorCiAgICAgYm9vbCBtX2lzUGxheWluZ0F1ZGlvOwogfTsKIApJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZp
c2lvbiAxODEzOTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC00MjMsNCArNDIzLDEwIEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2VQcm94eSB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIERpZFBlcmZvcm1BY3Rpb25N
ZW51SGl0VGVzdChzdHJ1Y3QgV2ViS2l0OjpBY3Rpb25NZW51SGl0VGVzdFJlc3VsdCByZXN1bHQs
IGJvb2wgZm9ySW1tZWRpYXRlQWN0aW9uLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogI2Vu
ZGlmCisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0o
SU9TKQorICAgIFNob3dQbGF5YmFja1RhcmdldFBpY2tlcihXZWJDb3JlOjpGbG9hdFJlY3QgcGlj
a2VyTG9jYXRpb24sIGJvb2wgaGFzVmlkZW8pCisgICAgU3RhcnRpbmdNb25pdG9yaW5nUGxheWJh
Y2tUYXJnZXRzKCkKKyAgICBTdG9wTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpCisjZW5kaWYK
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBs
LmgJKHJldmlzaW9uIDE4MTM5NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjA0LDYgKzIwNCwxMCBAQCBwcml2YXRl
OgogI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+IG1fYWx0ZXJuYXRpdmVUZXh0VUlD
b250cm9sbGVyOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KQorICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJQcm94eT4gY3JlYXRlUGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViUGFnZVByb3h5Kikgb3ZlcnJp
ZGU7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCShyZXZpc2lvbiAxODEz
OTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCwxMCBAQAogI2ltcG9ydCA8QXBwS2l0L05TVGV4dEFs
dGVybmF0aXZlcy5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUKQorI2luY2x1ZGUgIldlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYy5oIgor
I2VuZGlmCisKIEBpbnRlcmZhY2UgTlNBcHBsaWNhdGlvbiAoV2ViTlNBcHBsaWNhdGlvbkRldGFp
bHMpCiAtIChOU0N1cnNvciAqKV9jdXJzb3JSZWN0Q3Vyc29yOwogQGVuZApAQCAtNzg4LDYgKzc5
MiwxMiBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzaG93UGxhdGZvcm1Db250ZXh0CiAgICAgW21l
bnUgcG9wVXBNZW51UG9zaXRpb25pbmdJdGVtOm5pbCBhdExvY2F0aW9uOmxvY2F0aW9uIGluVmll
dzptX3drVmlld107CiB9CiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQor
c3RkOjp1bmlxdWVfcHRyPFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eT4gUGFnZUNs
aWVudEltcGw6OmNyZWF0ZVBsYXliYWNrVGFyZ2V0UGlja2VyKFdlYlBhZ2VQcm94eSogcGFnZSkK
K3sKKyAgICByZXR1cm4gV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjOjpjcmVh
dGUoKnBhZ2UpOworfQorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQ
cm94eU1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2Vi
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94
eU1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hY19oCisjZGVmaW5lIFdlYk1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hY19oCisKKyNpZiBFTkFCTEUoV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQorCisjaW1wb3J0ICJXZWJNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgTWVk
aWFQbGF5YmFja1RhcmdldDsKK2NsYXNzIEZsb2F0UmVjdDsKK30KKworT0JKQ19DTEFTUyBBVk91
dHB1dERldmljZVBpY2tlck1lbnVDb250cm9sbGVyOworT0JKQ19DTEFTUyBXZWJBVk91dHB1dERl
dmljZVBpY2tlck1lbnVDb250cm9sbGVySGVscGVyOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjIDogcHVibGljIFdlYk1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjKTsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMoKTsKKworICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjPiBj
cmVhdGUoV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5OjpDbGllbnQmKTsKKworICAg
IHZpcnR1YWwgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiwgYm9vbCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0aW5nTW9uaXRv
cmluZ1BsYXliYWNrVGFyZ2V0cygpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzdG9wTW9u
aXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpIG92ZXJyaWRlOworICAgIAorICAgIHZvaWQgYXZhaWxh
YmxlRGV2aWNlc0RpZENoYW5nZSgpOworICAgIHZvaWQgY3VycmVudERldmljZURpZENoYW5nZSgp
OworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQ
cm94eU1hYyhXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHk6OkNsaWVudCYpOworCisg
ICAgQVZPdXRwdXREZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlciAqZGV2aWNlUGlja2VyKCk7Cisg
ICAgdm9pZCBvdXRwdXRlRGV2aWNlQXZhaWxhYmlsaXR5Q2hhbmdlZFRpbWVyRmlyZWQoKTsKKwor
ICAgIFJldGFpblB0cjxBVk91dHB1dERldmljZVBpY2tlck1lbnVDb250cm9sbGVyPiBtX2Rldmlj
ZVBpY2tlck1lbnVDb250cm9sbGVyOworICAgIFJldGFpblB0cjxXZWJBVk91dHB1dERldmljZVBp
Y2tlck1lbnVDb250cm9sbGVySGVscGVyPiBtX2RldmljZVBpY2tlck1lbnVDb250cm9sbGVyRGVs
ZWdhdGU7CisgICAgUnVuTG9vcDo6VGltZXI8V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclBy
b3h5TWFjPiBtX2RldmljZUNoYW5nZVRpbWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorCisjZW5kaWYg
Ly8gV2ViQ29udGV4dE1lbnVQcm94eU1hY19oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJQcm94eU1hYy5tbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMuaCIKKworI2lmIEVO
QUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisKKyNpbXBv
cnQgPEFWRm91bmRhdGlvbi9BVk91dHB1dERldmljZVBpY2tlckNvbnRleHQuaD4KKyNpbXBvcnQg
PEFWS2l0L0FWT3V0cHV0RGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXIuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldC5oPgorI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3Qu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPG9iamMvcnVudGlt
ZS5oPgorI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KKwordHlwZWRlZiBBVk91dHB1dERldmlj
ZVBpY2tlckNvbnRleHQgQVZPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0VHlwZTsKK3R5cGVkZWYg
QVZPdXRwdXREZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlciBBVk91dHB1dERldmljZVBpY2tlck1l
bnVDb250cm9sbGVyVHlwZTsKKworU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChBVkZvdW5k
YXRpb24pCitTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKEFWS2l0KQorCitTT0ZUX0xJTktf
Q0xBU1MoQVZGb3VuZGF0aW9uLCBBVk91dHB1dERldmljZVBpY2tlckNvbnRleHQpCitTT0ZUX0xJ
TktfQ0xBU1MoQVZLaXQsIEFWT3V0cHV0RGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXIpCitTT0ZU
X0xJTktfQ0xBU1MoQVZLaXQsIEFWT3V0cHV0RGV2aWNlUGlja2VyRGVsZWdhdGUpCisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7CisKK0BpbnRlcmZhY2UgV2ViQVZPdXRwdXREZXZpY2VQaWNrZXJN
ZW51Q29udHJvbGxlckhlbHBlciA6IE5TT2JqZWN0IHsKKyAgICBXZWJNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyUHJveHlNYWMqIG1fY2FsbGJhY2s7Cit9CisKKy0gKGlkKWluaXRXaXRoQ2FsbGJh
Y2s6KFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYyopY2FsbGJhY2s7CistICh2
b2lkKWNsZWFyQ2FsbGJhY2s7CistICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0
aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRl
eHQ6KHZvaWQgKiljb250ZXh0OworQGVuZAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RkOjp1
bmlxdWVfcHRyPFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYz4gV2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjOjpjcmVhdGUoV2ViTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlclByb3h5OjpDbGllbnQmIGNsaWVudCkKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVf
cHRyPFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYz4obmV3IFdlYk1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYyhjbGllbnQpKTsKK30KKworV2ViTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlclByb3h5TWFjOjpXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlN
YWMoV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5OjpDbGllbnQmIGNsaWVudCkKKyAg
ICA6IFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eShjbGllbnQpCisgICAgLCBtX2Rl
dmljZVBpY2tlck1lbnVDb250cm9sbGVyRGVsZWdhdGUoYWRvcHROUyhbW1dlYkFWT3V0cHV0RGV2
aWNlUGlja2VyTWVudUNvbnRyb2xsZXJIZWxwZXIgYWxsb2NdIGluaXRXaXRoQ2FsbGJhY2s6dGhp
c10pKQorICAgICwgbV9kZXZpY2VDaGFuZ2VUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZX
ZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6Om91dHB1dGVEZXZpY2VBdmFpbGFi
aWxpdHlDaGFuZ2VkVGltZXJGaXJlZCkKK3sKK30KKworV2ViTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlclByb3h5TWFjOjp+V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjKCkKK3sK
KyAgICBtX2RldmljZUNoYW5nZVRpbWVyLnN0b3AoKTsKKyAgICBbbV9kZXZpY2VQaWNrZXJNZW51
Q29udHJvbGxlckRlbGVnYXRlIGNsZWFyQ2FsbGJhY2tdOworCisgICAgaWYgKG1fZGV2aWNlUGlj
a2VyTWVudUNvbnRyb2xsZXIpIHsKKyAgICAgICAgW21fZGV2aWNlUGlja2VyTWVudUNvbnRyb2xs
ZXIuZ2V0KCkgcmVtb3ZlT2JzZXJ2ZXI6bV9kZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlckRlbGVn
YXRlLmdldCgpIGZvcktleVBhdGg6QCJleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSJdOwor
ICAgICAgICBbbV9kZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlci5nZXQoKSByZW1vdmVPYnNlcnZl
cjptX2RldmljZVBpY2tlck1lbnVDb250cm9sbGVyRGVsZWdhdGUuZ2V0KCkgZm9yS2V5UGF0aDpA
ImV4dGVybmFsT3V0cHV0RGV2aWNlUGlja2VkIl07CisgICAgICAgIG1fZGV2aWNlUGlja2VyTWVu
dUNvbnRyb2xsZXIgPSBuaWw7CisgICAgfQorfQorCit2b2lkIFdlYk1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJQcm94eU1hYzo6b3V0cHV0ZURldmljZUF2YWlsYWJpbGl0eUNoYW5nZWRUaW1lckZp
cmVkKCkKK3sKKyAgICBpZiAoIW1fZGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXIgfHwgIW1fY2xp
ZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC0+ZXh0ZXJuYWxPdXRwdXREZXZp
Y2VBdmFpbGFibGVEaWRDaGFuZ2UoZGV2aWNlUGlja2VyKCkuZXh0ZXJuYWxPdXRwdXREZXZpY2VB
dmFpbGFibGUpOworfQorCit2b2lkIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1h
Yzo6YXZhaWxhYmxlRGV2aWNlc0RpZENoYW5nZSgpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9kZXZpY2VDaGFuZ2VUaW1lci5zdG9wKCk7CisgICAgbV9k
ZXZpY2VDaGFuZ2VUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK0FWT3V0cHV0RGV2aWNlUGlj
a2VyTWVudUNvbnRyb2xsZXJUeXBlICpXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlN
YWM6OmRldmljZVBpY2tlcigpCit7CisgICAgaWYgKCFtX2RldmljZVBpY2tlck1lbnVDb250cm9s
bGVyKSB7CisgICAgICAgIFJldGFpblB0cjxBVk91dHB1dERldmljZVBpY2tlckNvbnRleHRUeXBl
PiBjb250ZXh0ID0gYWRvcHROUyhbW2dldEFWT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dENsYXNz
KCkgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgbV9kZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlciA9
IGFkb3B0TlMoW1tnZXRBVk91dHB1dERldmljZVBpY2tlck1lbnVDb250cm9sbGVyQ2xhc3MoKSBh
bGxvY10gaW5pdFdpdGhPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0OmNvbnRleHQuZ2V0KCldKTsK
KworICAgICAgICBbbV9kZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlci5nZXQoKSBhZGRPYnNlcnZl
cjptX2RldmljZVBpY2tlck1lbnVDb250cm9sbGVyRGVsZWdhdGUuZ2V0KCkgZm9yS2V5UGF0aDpA
ImV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZp
bmdPcHRpb25OZXcgY29udGV4dDpudWxscHRyXTsKKyAgICAgICAgW21fZGV2aWNlUGlja2VyTWVu
dUNvbnRyb2xsZXIuZ2V0KCkgYWRkT2JzZXJ2ZXI6bV9kZXZpY2VQaWNrZXJNZW51Q29udHJvbGxl
ckRlbGVnYXRlLmdldCgpIGZvcktleVBhdGg6QCJleHRlcm5hbE91dHB1dERldmljZVBpY2tlZCIg
b3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6bnVsbHB0cl07CisK
KyAgICAgICAgaWYgKGRldmljZVBpY2tlcigpLmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxl
KQorICAgICAgICAgICAgYXZhaWxhYmxlRGV2aWNlc0RpZENoYW5nZSgpOworICAgIH0KKworICAg
IHJldHVybiBtX2RldmljZVBpY2tlck1lbnVDb250cm9sbGVyLmdldCgpOworfQorCit2b2lkIFdl
Yk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYzo6c2hvd1BsYXliYWNrVGFyZ2V0UGlj
a2VyKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgbG9jYXRpb24sIGJvb2wpCit7CisgICAgaWYg
KCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgW2RldmljZVBpY2tlcigpIHNob3dN
ZW51Rm9yUmVjdDpsb2NhdGlvbiBhcHBlYXJhbmNlTmFtZTpOU0FwcGVhcmFuY2VOYW1lVmlicmFu
dExpZ2h0XTsKK30KKwordm9pZCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6
OmN1cnJlbnREZXZpY2VEaWRDaGFuZ2UoKQoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fY2xpZW50LT5kaWRDaG9vc2VQbGF5YmFja1RhcmdldChXZWJDb3Jl
OjpNZWRpYVBsYXliYWNrVGFyZ2V0KFtkZXZpY2VQaWNrZXIoKSBvdXRwdXREZXZpY2VQaWNrZXJD
b250ZXh0XSkpOworfQorCit2b2lkIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1h
Yzo6c3RhcnRpbmdNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkKK3sKKyAgICBkZXZpY2VQaWNr
ZXIoKTsKK30KKwordm9pZCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6OnN0
b3BNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKK0BpbXBsZW1lbnRhdGlvbiBXZWJBVk91dHB1dERldmljZVBpY2tlck1lbnVDb250cm9s
bGVySGVscGVyCistIChpZClpbml0V2l0aENhbGxiYWNrOihXZWJNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyUHJveHlNYWMqKWNhbGxiYWNrCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBtX2NhbGxiYWNrID0gY2FsbGJhY2s7CisK
KyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZCljbGVhckNhbGxiYWNrCit7CisgICAgbV9j
YWxsYmFjayA9IG5pbDsKK30KKworLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtleVBh
dGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNoYW5nZSBjb250
ZXh0Oih2b2lkICopY29udGV4dAoreworICAgIFVOVVNFRF9QQVJBTShjaGFuZ2UpOworICAgIFVO
VVNFRF9QQVJBTShjb250ZXh0KTsKKyAgICBVTlVTRURfUEFSQU0ob2JqZWN0KTsKKworICAgIGlm
ICghbV9jYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFba2V5UGF0aCBpc0Vx
dWFsVG9TdHJpbmc6QCJleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSJdICYmICFba2V5UGF0
aCBpc0VxdWFsVG9TdHJpbmc6QCJleHRlcm5hbE91dHB1dERldmljZVBpY2tlZCJdKQorICAgICAg
ICByZXR1cm47CisKKyAgICBSZXRhaW5QdHI8V2ViQVZPdXRwdXREZXZpY2VQaWNrZXJNZW51Q29u
dHJvbGxlckhlbHBlcj4gc3Ryb25nU2VsZiA9IHNlbGY7CisgICAgUmV0YWluUHRyPE5TU3RyaW5n
PiBzdHJvbmdLZXlQYXRoID0ga2V5UGF0aDsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdT
ZWxmLCBzdHJvbmdLZXlQYXRoXSB7CisgICAgICAgIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJQcm94eU1hYyogY2FsbGJhY2sgPSBzdHJvbmdTZWxmLT5tX2NhbGxiYWNrOworICAgICAgICBp
ZiAoIWNhbGxiYWNrKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChbc3Ryb25n
S2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSJd
KQorICAgICAgICAgICAgY2FsbGJhY2stPmF2YWlsYWJsZURldmljZXNEaWRDaGFuZ2UoKTsKKyAg
ICAgICAgZWxzZSBpZiAoW3N0cm9uZ0tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAiZXh0ZXJuYWxP
dXRwdXREZXZpY2VQaWNrZWQiXSkKKyAgICAgICAgICAgIGNhbGxiYWNrLT5jdXJyZW50RGV2aWNl
RGlkQ2hhbmdlKCk7CisgICAgfSk7Cit9CitAZW5kCisKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTgxMzk2KQorKysgU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC03Niw2ICs3NiwxMCBAQAogCQkwMEI5NjYxOTE4RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVu
dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwQjk2
NjE3MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50Lm1tICovOyB9OwogCQkwMEI5NjYxQTE4
RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDBCOTY2MTgxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGll
bnQuaCAqLzsgfTsKIAkJMDc2RTg4NEUxQTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNvbnRleHRNZW51
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzZFODg0RDFBMTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCAqLzsgfTsK
KwkJMDc5MjE2NEMxQUE1NTAxOTAwQTNDMDQ5IC8qIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwNzkyMTY0ODFBQTU0RTlEMDBBM0MwNDkgLyogV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
clByb3h5LmNwcCAqLzsgfTsKKwkJMDc5MjE2NEQxQUE1NTAxRjAwQTNDMDQ5IC8qIFdlYk1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDc5MjE2NDkxQUE1NEU5RDAwQTNDMDQ5IC8qIFdlYk1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJQcm94eS5oICovOyB9OworCQkwNzkyMTY1MDFBQTU1MjhBMDBBM0Mw
NDkgLyogV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzkyMTY0RTFBQTU1MjhBMDBBM0Mw
NDkgLyogV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjLmggKi87IH07CisJCTA3
OTIxNjUxMUFBNTUyOEEwMEEzQzA0OSAvKiBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJv
eHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzkyMTY0RjFBQTU1MjhBMDBBM0MwNDkgLyogV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclBy
b3h5TWFjLm1tICovOyB9OwogCQkwRjBDMzY1ODE4QzA1MUJBMDBGNjA3RDcgLyogUmVtb3RlTGF5
ZXJUcmVlSG9zdElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMEMzNjU3MThDMDUxQkEwMEY2MDdENyAvKiBSZW1vdGVMYXllclRyZWVIb3N0SU9T
Lm1tICovOyB9OwogCQkwRjBDMzY1QTE4QzA1NTU4MDBGNjA3RDcgLyogTGF5ZXJSZXByZXNlbnRh
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYw
QzM2NTkxOEMwNTU1ODAwRjYwN0Q3IC8qIExheWVyUmVwcmVzZW50YXRpb24uaCAqLzsgfTsKIAkJ
MEYwQzM2NUMxOEMwNUNBMTAwRjYwN0Q3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJv
eHlJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjBDMzY1QjE4QzA1Q0ExMDBGNjA3RDcgLyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94
eUlPUy5tbSAqLzsgfTsKQEAgLTIxNTgsNiArMjE2MiwxMCBAQAogCQkwMEI5NjYxODE4RTI1QUUx
MDBDRTFGODggLyogRmluZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBGaW5kQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NkU4ODREMUEx
M0NBREYwMDVFOTBGQyAvKiBBUElDb250ZXh0TWVudUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBUElDb250ZXh0TWVudUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzZFODg0RjFBMTNDQkM2MDA1RTkwRkMgLyogQVBJSW5qZWN0ZWRCdW5k
bGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQVBJSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjE2NDgxQUE1NEU5RDAwQTNDMDQ5IC8qIFdlYk1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwNzkyMTY0OTFBQTU0RTlEMDBBM0MwNDkgLyogV2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwNzkyMTY0RTFBQTU1MjhBMDBBM0MwNDkgLyogV2ViTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlclByb3h5TWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwNzkyMTY0RjFBQTU1MjhBMDBBM0MwNDkgLyogV2ViTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlclByb3h5TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwODY3RDZBNUZFODQwMzA3QzAyQUFDMDcgLyogQXBwS2l0
LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQXBwS2l0LmZyYW1ld29yazsgcGF0aCA9IC9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAi
PGFic29sdXRlPiI7IH07CiAJCTA4OUMxNjY3RkU4NDExNThDMDJBQUMwNyAvKiBFbmdsaXNoICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5wbGlzdC5zdHJpbmdzOyBuYW1lID0gRW5nbGlzaDsgcGF0aCA9IEVuZ2xp
c2gubHByb2ovSW5mb1BsaXN0LnN0cmluZ3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGMEMzNjU3MThDMDUxQkEwMEY2MDdENyAvKiBSZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUmVtb3RlTGF5ZXJUcmVlSG9z
dElPUy5tbTsgcGF0aCA9IGlvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNjE0NSw2ICs2MTUzLDggQEAKIAkJCQk1MTJFMzUyMDEzMEI1
NTAxMDBBQkQxOUEgLyogV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJQcm94eS5jcHAgKi8sCiAJ
CQkJNTEyRTM1MjExMzBCNTUwMTAwQUJEMTlBIC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2Vy
UHJveHkuaCAqLywKIAkJCQk1MTJFMzVGMDEzMEI2MzhDMDBBQkQxOUEgLyogV2ViQXBwbGljYXRp
b25DYWNoZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQkwNzkyMTY0ODFBQTU0RTlE
MDBBM0MwNDkgLyogV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5LmNwcCAqLywKKwkJ
CQkwNzkyMTY0OTFBQTU0RTlEMDBBM0MwNDkgLyogV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
clByb3h5LmggKi8sCiAJCQkJQkM3MkJBMUIxMUU2NDkwNzAwMUVCNEVBIC8qIFdlYkJhY2tGb3J3
YXJkTGlzdC5jcHAgKi8sCiAJCQkJQkM3MkJBMUMxMUU2NDkwNzAwMUVCNEVBIC8qIFdlYkJhY2tG
b3J3YXJkTGlzdC5oICovLAogCQkJCUYwMzY5Nzg3MTVGNEJGMDUwMEMzQTgwRSAvKiBXZWJDb2xv
clBpY2tlci5jcHAgKi8sCkBAIC03MDAzLDYgKzcwMTMsOCBAQAogCQkJCTJEMTI1QzVEMTg1N0VB
MDUwMDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0gKi8sCiAJCQkJMkQ2Q0Qx
MTcxODkwNThBNTAwRTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLmggKi8sCiAJCQkJMkQ2Q0Qx
MTgxODkwNThBNTAwRTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLm1tICovLAorCQkJCTA3OTIx
NjRFMUFBNTUyOEEwMEEzQzA0OSAvKiBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlN
YWMuaCAqLywKKwkJCQkwNzkyMTY0RjFBQTU1MjhBMDBBM0MwNDkgLyogV2ViTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlclByb3h5TWFjLm1tICovLAogCQkJCTcyOEU4NkVGMTc5NTE4OEMwMDg3ODc5
RSAvKiBXZWJDb2xvclBpY2tlck1hYy5oICovLAogCQkJCTcyOEU4NkYwMTc5NTE4OEMwMDg3ODc5
RSAvKiBXZWJDb2xvclBpY2tlck1hYy5tbSAqLywKIAkJCQk1MUFDQkI5RTEyN0E4RjJDMDBEMjAz
QjkgLyogV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oICovLApAQCAtODA5NSw2ICs4MTA3LDcgQEAK
IAkJCQk3QzM2MUQ3OTE5MjgwM0JEMDAzNkE1OUQgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJM0Y4ODlEMTUxODg3NzhDOTAwRkVB
REFGIC8qIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMjlDRDU1QUExMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3RCYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzkyMTY0RDFBQTU1MDFGMDBBM0MwNDkgLyog
V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQky
OTIzMkRGNDE4QjI5RDY4MDBEMDU5NkYgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdE1h
Yy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQwNzMwQTMxOUY5QzdEQTAwRTlEOUM0IC8qIFdLQWN0
aW9uTWVudUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNEI3MjQ0MTlGNUI5QkUw
MEFFOTZENiAvKiBXS0FjdGlvbk1lbnVJdGVtVHlwZXMuaCBpbiBIZWFkZXJzICovLApAQCAtODI4
NCw2ICs4Mjk3LDcgQEAKIAkJCQkxQUI4QTFGNDE4NDAwQjhGMDBFOUFFNjkgLyogV0tQYWdlRmlu
ZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCOEExRjYxODQwMEI5RDAwRTlBRTY5IC8q
IFdLUGFnZUZpbmRNYXRjaGVzQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI4QTFGMDE4
NDAwQjAwMDBFOUFFNjkgLyogV0tQYWdlRm9ybUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MDc5MjE2NTAxQUE1NTI4QTAwQTNDMDQ5IC8qIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQ
cm94eU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3QjYzMzcxMkE0NUFCQTAwRDE3NEE0IC8q
IFdLUGFnZUdyb3VwLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI4QTFFQzE4NDAwODA5MDBFOUFF
NjkgLyogV0tQYWdlTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzJEMDIxOTEy
QUM0MjZDMDBFNzMyQTMgLyogV0tQYWdlTG9hZFR5cGVzLmggaW4gSGVhZGVycyAqLywKQEAgLTk1
NDksNiArOTU2Myw3IEBACiAJCQkJMEZDQjRFNjMxOEJCRTNEOTAwMEZDRkM5IC8qIFBhZ2VDbGll
bnRJbXBsLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDQjRFNDcxOEJCRTA0NDAwMEZDRkM5IC8q
IFBhZ2VDbGllbnRJbXBsSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFDNzUzN0IxODNBOUZE
QjAwNzJDQjE1IC8qIFBhZ2VMb2FkU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDc5MjE2
NTExQUE1NTI4QTAwQTNDMDQ5IC8qIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1h
Yy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUM1NzRBNTgyMTJFNjY2ODEwMDJERkU5OCAvKiBQYXN0
ZWJvYXJkVHlwZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQlFMTk1ODJENjE1M0NDMDU0MDBCNjA4
NzUgLyogUERGS2l0SW1wb3J0cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEODcwRDEwMTYyMzRG
RkUwMDBBM0YyMCAvKiBQREZQbHVnaW4ubW0gaW4gU291cmNlcyAqLywKQEAgLTk3NDYsNiArOTc2
MSw3IEBACiAJCQkJQkMxMTFBNUUxMTJGNEZCQjAwMzM3QkFCIC8qIFdlYkVkaXRvckNsaWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDI4RjNFNjE4ODVDQ0MxMDA0QjlFQUUgLyogV2ViRWRp
dG9yQ2xpZW50SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQzUyMzdGNjAxMjQ0MUNBMzAwNzgw
NDcyIC8qIFdlYkVkaXRvckNsaWVudE1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTA3OTIxNjRD
MUFBNTUwMTkwMEEzQzA0OSAvKiBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxMTFBRTAxMTJGNUJDMjAwMzM3QkFCIC8qIFdlYkVycm9y
c01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUMwMzM3REFFMTI3QTI0RkUwMDhGRjRGNCAvKiBX
ZWJFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzAzMkRCQTEwRjQzODBGMDA1OEMxNUEg
LyogV2ViRXZlbnRDb252ZXJzaW9uLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCShy
ZXZpc2lvbiAxODEzOTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvbS5hcHBsZS5X
ZWJQcm9jZXNzLnNiLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yOTcsMyArMjk3LDE4IEBACiAgICAg
ICAgKGhvbWUtc3VicGF0aCAiL0xpYnJhcnkvQ29tcG9uZW50cyIpCiAgICAgICAgKGhvbWUtc3Vi
cGF0aCAiL0xpYnJhcnkvS2V5Ym9hcmQgTGF5b3V0cyIpCiAgICAgICAgKGhvbWUtc3VicGF0aCAi
L0xpYnJhcnkvSW5wdXQgTWV0aG9kcyIpKQorCis7OyBBaXJQbGF5Cis7OyBGSVhNRTogcmVtb3Zl
IHRoaXMgYXMgZGVzY3JpYmVkIGluIHJkYXI6Ly8xOTg2OTQ0OAorKGFsbG93IG1hY2gtbG9va3Vw
CisgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuY29yZW1lZGlhLmVuZHBvaW50LmFpcnBsYXl1
aWFnZW50IikKKyAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5jb3JlbWVkaWEuZW5kcG9pbnRz
dHJlYW0uYWlycGxheXVpYWdlbnQiKQorICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmNvcmVt
ZWRpYS5lbmRwb2ludHBsYXliYWNrc2Vzc2lvbi5haXJwbGF5dWlhZ2VudCIpCisgICAgKGdsb2Jh
bC1uYW1lICJjb20uYXBwbGUuY29yZW1lZGlhLmVuZHBvaW50cGlja2VyIikpCisKKzs7IEFpclBs
YXkKKyhhbGxvdyBtYWNoLWxvb2t1cAorICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmNvcmVt
ZWRpYS5lbmRwb2ludC54cGMiKQorICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmNvcmVtZWRp
YS5lbmRwb2ludHN0cmVhbS54cGMiKQorICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmNvcmVt
ZWRpYS5lbmRwb2ludHBsYXliYWNrc2Vzc2lvbi54cGMiKQorICAgIChnbG9iYWwtbmFtZSAiY29t
LmFwcGxlLmNvcmVtZWRpYS5lbmRwb2ludHBpY2tlci54cGMiKSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAJKHJldmlzaW9uIDE4MTM5NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTEwMSw0ICsxMTAxLDI2IEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpzaG91bGREaXNwYXRjaEZh
a2UKICAgICByZXR1cm4gbV9wYWdlLT5zaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMo
KTsKIH0KIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9S
TShJT1MpCit2b2lkIFdlYkNocm9tZUNsaWVudDo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbiwgYm9vbCBpc1ZpZGVvKQoreworICAgIC8v
ICAgICBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbkF0TmV3U2NhbGUgPSBtYWluRnJhbWVWaWV3KCkt
PnJvb3RWaWV3VG9Db250ZW50cygtY2VudGVySW5WaWV3Q29vcmRpbmF0ZXMpOworCisgICAgRnJh
bWVWaWV3KiBmcmFtZVZpZXcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCk7CisgICAgRmxv
YXRSZWN0IHJlY3QoZnJhbWVWaWV3LT5jb250ZW50c1RvUm9vdFZpZXcoZnJhbWVWaWV3LT53aW5k
b3dUb0NvbnRlbnRzKHBvc2l0aW9uKSksIEZsb2F0U2l6ZSgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKHJlY3QsIGlz
VmlkZW8pKTsKK30KKwordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnN0YXJ0aW5nTW9uaXRvcmluZ1Bs
YXliYWNrVGFyZ2V0cygpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlN0YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpKTsKK30KKwordm9pZCBXZWJD
aHJvbWVDbGllbnQ6OnN0b3BNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkKK3sKKyAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RvcE1vbml0b3JpbmdQbGF5YmFja1Rh
cmdldHMoKSk7Cit9CisjZW5kaWYKKworCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMTgxMzk2KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzEwLDYgKzMxMCwxMiBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIHNob3VsZERp
c3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cygpIGNvbnN0IG92ZXJyaWRlOwogCisjaWYgRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykKKyAgICB2aXJ0dWFs
IHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jiwg
Ym9vbCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0aW5nTW9uaXRvcmluZ1BsYXli
YWNrVGFyZ2V0cygpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzdG9wTW9uaXRvcmluZ1Bs
YXliYWNrVGFyZ2V0cygpIG92ZXJyaWRlOworI2VuZGlmCisKICAgICBTdHJpbmcgbV9jYWNoZWRU
b29sVGlwOwogICAgIG11dGFibGUgUmVmUHRyPFdlYkZyYW1lPiBtX2NhY2hlZEZyYW1lU2V0TGFy
Z2VzdEZyYW1lOwogICAgIG11dGFibGUgYm9vbCBtX2NhY2hlZE1haW5GcmFtZUhhc0hvcml6b250
YWxTY3JvbGxiYXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgJKHJldmlzaW9uIDE4MTM5NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw2ICsxMjYsNyBAQCBjbGFz
cyBIVE1MUGx1Z0luRWxlbWVudDsKIGNsYXNzIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ7CiBjbGFz
cyBJbnRQb2ludDsKIGNsYXNzIEtleWJvYXJkRXZlbnQ7CitjbGFzcyBNZWRpYVBsYXliYWNrVGFy
Z2V0OwogY2xhc3MgUGFnZTsKIGNsYXNzIFByaW50Q29udGV4dDsKIGNsYXNzIFJhbmdlOwpAQCAt
MTQyLDcgKzE0Myw2IEBAIHN0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQ7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewotCiBjbGFzcyBEcmF3aW5nQXJlYTsKIGNsYXNzIEluamVjdGVkQnVuZGxlQmFj
a0ZvcndhcmRMaXN0OwogY2xhc3MgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
OwpAQCAtMTA5Myw2ICsxMDkzLDExIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldFNob3VsZERp
c3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyhib29sIGRpc3BhdGNoKSB7IG1fc2hvdWxkRGlzcGF0
Y2hGYWtlTW91c2VNb3ZlRXZlbnRzID0gZGlzcGF0Y2g7IH0KIAorI2lmIEVOQUJMRShXSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisgICAgdm9pZCBwbGF5YmFja1Rh
cmdldFNlbGVjdGVkKGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQmIG91dHB1dERl
dmljZSkgY29uc3Q7CisgICAgdm9pZCBwbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eURpZENoYW5n
ZShib29sKTsKKyNlbmRpZgorCiAgICAgdWludDY0X3QgbV9wYWdlSUQ7CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6UGFnZT4gbV9wYWdlOwpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9u
IDE4MTM5NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC00MTEsNCArNDExLDEwIEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogI2VuZGlmCiAKICAgICBTZXRTaG91bGREaXNwYXRj
aEZha2VNb3VzZU1vdmVFdmVudHMoYm9vbCBzaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVu
dHMpCisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0o
SU9TKQorICAgIFBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rh
cmdldCB0YXJnZXQpCisgICAgUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UoYm9v
bCBhdmFpbGFibGUpCisjZW5kaWYKKwogfQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkocmV2aXNpb24gMTgxMzk2KQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC04Nyw2ICs4NywxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9odG1sZWRp
dGluZy5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAKKyNpZiBFTkFCTEUo
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFj
a1RhcmdldC5oPgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTExODcsNiArMTE5MSwyMCBAQCB2b2lkIFdlYlBhZ2U6OnNldEZvbnQo
Y29uc3QgU3RyaW5nJiBmb250CiAgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlGb250U3R5bGVzKGZv
bnRGYW1pbHksIGZvbnRTaXplLCBmb250VHJhaXRzKTsKIH0KIAorI2lmIEVOQUJMRShXSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCit2b2lkIFdlYlBhZ2U6OnBsYXli
YWNrVGFyZ2V0U2VsZWN0ZWQoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldCYgcGxh
eWJhY2tUYXJnZXQpIGNvbnN0Cit7CisgICAgTWVkaWFQbGF5YmFja1RhcmdldCBub25Db25zdFRh
cmdldChwbGF5YmFja1RhcmdldC5kZXZpY2VQaWNrZXJDb250ZXh0KCkpOworICAgIG1fcGFnZS0+
ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQobm9uQ29uc3RUYXJnZXQpOworfQorCit2b2lkIFdlYlBh
Z2U6OnBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKGJvb2wgY2hhbmdlZCkKK3sK
KyAgICBtX3BhZ2UtPnBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKGNoYW5nZWQp
OworfQorI2VuZGlmCisKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFU
Rk9STShNQUMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248451</attachid>
            <date>2015-03-11 14:37:01 -0700</date>
            <delta_ts>2015-03-11 14:56:55 -0700</delta_ts>
            <desc>Updated patch.</desc>
            <filename>patch_32.txt</filename>
            <type>text/plain</type>
            <size>113288</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTM5NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBACisyMDE1LTAzLTExICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFVwZGF0ZSBB
aXJQbGF5IGhhbmRsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDI1NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNob3dQbGF5YmFja1Rhcmdl
dFBpY2tlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRkUGxheWJhY2tUYXJnZXRQ
aWNrZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZVBsYXliYWNr
VGFyZ2V0UGlja2VyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpjb25maWd1
cmVQbGF5YmFja1RhcmdldE1vbml0b3JpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OnJlcXVpcmVzUGxheWJhY2tUYXJnZXRSb3V0ZU1vbml0b3JpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkaWRDaG9vc2VQbGF5YmFja1RhcmdldCk6CisgICAgICAg
ICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlZ2lzdGVyV2l0aERvY3VtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVucmVnaXN0ZXJXaXRoRG9j
dW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTE1lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFTZXNzaW9u
OjpIVE1MTWVkaWFTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYVNlc3Npb246
OnJlZ2lzdGVyV2l0aERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYVNlc3Np
b246OnVucmVnaXN0ZXJXaXRoRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
U2Vzc2lvbjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYVNlc3Npb246Omhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYVNlc3Npb246OnNldEhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5
TGlzdGVuZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYVNlc3Npb246OmRpZENob29z
ZVBsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYVNlc3Npb246OmV4
dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYVNlc3Npb246OnJlcXVpcmVzUGxheWJhY2tUYXJnZXRSb3V0ZU1vbml0b3Jpbmcp
OgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhU2Vzc2lvbi5oOgorICAgICAgICAqIHBhZ2UvQ2hy
b21lQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6OmRpZENob29zZVBsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
OnBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6OmNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0TW9uaXRvcmluZyk6CisgICAgICAgICogcGFn
ZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpoYXNXaXJlbGVzc1BsYXliYWNrVGFy
Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnBsYXliYWNrVGFyZ2V0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTZXNzaW9uOjpjbGllbnREYXRhQnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNlc3Npb246OndpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURp
ZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OnJlcXVpcmVzUGxheWJh
Y2tUYXJnZXRSb3V0ZU1vbml0b3JpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9u
Q2xpZW50OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vz
c2lvbk1hbmFnZXI6OndpcmVsZXNzUm91dGVzQXZhaWxhYmxlQ2hhbmdlZCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlV2lyZUxlc3NUYXJnZXRNb25p
dG9yaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdl
cklPUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2Vy
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6ZXh0ZXJu
YWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UpOgorICAgICAgICAoLVtXZWJNZWRpYVNl
c3Npb25IZWxwZXIgd2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2U6XSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQVZQbGF5YmFja1RhcmdldC5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFWUGxheWJhY2tUYXJnZXQ6On5BVlBsYXliYWNrVGFyZ2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFWUGxheWJhY2tUYXJnZXQ6OkFWUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAo
V2ViQ29yZTo6QVZQbGF5YmFja1RhcmdldDo6c2V0RGV2aWNlUGlja2VyQ29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpBVlBsYXliYWNrVGFyZ2V0OjpkZXZpY2VQaWNrZXJDb250ZXh0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9BVlBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50Lmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QVZQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudDo6
fkFWUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpzZXRX
aXJlbGVzc1BsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpzZXRX
aXJlbGVzc1BsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vQVZQbGF5YmFja1RhcmdldE1hYy5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBVlBsYXliYWNrVGFyZ2V0OjplbmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6QVZQbGF5YmFj
a1RhcmdldDo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNhbmNlbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6aXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp3aXJlbGVzc1BsYXliYWNr
VGFyZ2V0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRXaXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZURpc2FibGVF
eHRlcm5hbFBsYXliYWNrKToKKyAgICAgICAgKC1bV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIgb2Jz
ZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKwogMjAxNS0w
My0xMSAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgT3B0aW1pemUg
b2Zmc2V0V2lkdGggYW5kIG9mZnNldEhlaWdodCB0byBhdm9pZCBkb2luZyBsYXlvdXRzLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMTgxMzk2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsNiArMTc1LDcgQEAKIAkJMDc0
RTgyQkIxOEE2OUYwRTAwN0VGNTRDIC8qIFBsYXRmb3JtVGltZVJhbmdlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc0RTgyQjkxOEE2OUYwRTAwN0VG
NTRDIC8qIFBsYXRmb3JtVGltZVJhbmdlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTA3NTM4NjAyMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRU
ZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDc1Mzg2MDAxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5jcHAgKi87IH07
CiAJCTA3NTM4NjAzMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NTM4NjAxMTQ0ODlFOTgw
MEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suaCAqLzsgfTsKKwkJMDc2MEMxN0ExQUE4RkM3RDAw
OUVEN0I4IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0UzREZEMjFBOUU3OEE1MDA3NjRDQTggLyogTWVk
aWFQbGF5YmFja1RhcmdldE1hYy5tbSAqLzsgfTsKIAkJMDc2MzA2RDAxN0UxNDc4RDAwNUE3QzRF
IC8qIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NjMwNkNDMTdFMTQ3OEQwMDVBN0M0RSAvKiBN
ZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDc2MzA2RDIxN0UxNDc4RDAwNUE3QzRFIC8qIE1l
ZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzYzMDZDRTE3RTE0NzhEMDA1QTdDNEUgLyogTWVkaWFT
dHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0LmNwcCAqLzsgfTsKIAkJMDc2MzA2RDMxN0UxNDc4RDAw
NUE3QzRFIC8qIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2MzA2Q0YxN0UxNDc4RDAwNUE3QzRF
IC8qIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNjksNiArMjcwLDcgQEAKIAkJMDc4RTA5
NDcxN0QxNkUxQzAwNDIwQUExIC8qIFJUQ1ZvaWRSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzIyMUJCMDE3Q0YwQUQ0MDA4NDhFNTEgLyog
UlRDVm9pZFJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwNzhFMDk0QjE3RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFTdHJlYW1BdWRpb0Rl
c3RpbmF0aW9uTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwNzhFMDk0ODE3RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFTdHJlYW1BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5jcHAgKi87IH07CiAJCTA3OEUwOTRDMTdEMTcwOTYwMDQyMEFBMSAvKiBNZWRp
YVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzhFMDk0OTE3RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFTdHJl
YW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTA3OTIxNjU1MUFBNTYwQUEwMEEzQzA0OSAvKiBNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzkyMTY1MzFBQTU2MEFBMDBBM0MwNDkgLyogTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTA3OTQxNzkxMTY2RTg1NUYwMDk0MTZDMiAvKiBJbmJhbmRUZXh0VHJhY2su
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5NDE3
OEYxNjZFODU1RjAwOTQxNkMyIC8qIEluYmFuZFRleHRUcmFjay5jcHAgKi87IH07CiAJCTA3OTQx
NzkyMTY2RTg1NUYwMDk0MTZDMiAvKiBJbmJhbmRUZXh0VHJhY2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTQxNzkwMTY2RTg1NUYwMDk0MTZDMiAv
KiBJbmJhbmRUZXh0VHJhY2suaCAqLzsgfTsKIAkJMDc5NDE3OTQxNjZFQTA0RTAwOTQxNkMyIC8q
IEluYmFuZFRleHRUcmFja1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3OTQxNzkzMTY2RUEwNEUwMDk0MTZDMiAvKiBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTMzOCw4ICszNDAsMTAgQEAKIAkJMDdEQzVGRDQxN0QzRUVFOTAwOTlGODkwIC8qIEpT
UlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwN0RDNUZEMzE3RDNFRUU5MDA5OUY4OTAgLyogSlNSVENTdGF0c1Jl
c3BvbnNlQ3VzdG9tLmNwcCAqLzsgfTsKIAkJMDdFMTE2QjExNDg5QzlBMTAwRUM1QUNFIC8qIEpT
VGV4dFRyYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3RTExNkIwMTQ4OUM5QTEwMEVDNUFDRSAvKiBKU1RleHRUcmFja0N1c3RvbS5j
cHAgKi87IH07CiAJCTA3RTExNzA3MTQ4OUVCRUIwMEVDNUFDRSAvKiBKU1RleHRUcmFja0N1ZUN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
N0UxMTcwNjE0ODlFQkVCMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwICovOyB9
OworCQkwN0UzREZEMTFBOUU3ODY1MDA3NjRDQTggLyogTWVkaWFQbGF5YmFja1RhcmdldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFM0RGRDAxQTlF
Nzg2NTAwNzY0Q0E4IC8qIE1lZGlhUGxheWJhY2tUYXJnZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwN0U5RTEyRTE4RjVFMjc2MDAxMUEzQTQg
LyogSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0U5RTEyRDE4RjVFMjc2MDAxMUEzQTQgLyog
SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmggKi87IH07CiAJCTA3RTlFMTMwMThG
NjJCMzcwMDExQTNBNCAvKiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFOUUxMkYxOEY2
MkIzNzAwMTFBM0E0IC8qIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAgKi87
IH07CisJCTA3RURDM0VFMUFBQ0I3NUQwMDk4M0VCNSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyTWFj
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RURD
M0VEMUFBQ0I3NUQwMDk4M0VCNSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcCAqLzsgfTsK
IAkJMDdGOTQ0MTYxODY0RDA0NjAwNUQzMUNCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUU4QzA4MTc0NkI5
NTcwMDUzMkQ3OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdGQkRFMkMxOEZFRDE3ODAwMUE3Q0ZGIC8q
IEpTRGF0YUN1ZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwN0ZCREUyQjE4RkVEMTc4MDAxQTdDRkYgLyogSlNEYXRhQ3VlQ3VzdG9tLmNw
cCAqLzsgfTsKIAkJMDdGRTk5REMxODgwN0E3RDAwMjU2NjQ4IC8qIEhUTUxNZWRpYVNlc3Npb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdGRTk5
REExODgwN0E3RDAwMjU2NjQ4IC8qIEhUTUxNZWRpYVNlc3Npb24uY3BwICovOyB9OwpAQCAtNTY4
Myw3ICs1Njg3LDYgQEAKIAkJQ0Q1MzkzRDQxNzVFMDE4NjAwQzA3MTIzIC8qIEpTTWVtb3J5SW5m
by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1Mzkz
RDIxNzVFMDE4NjAwQzA3MTIzIC8qIEpTTWVtb3J5SW5mby5oICovOyB9OwogCQlDRDU0QTc2MjE4
MEY5RjcwMDBCMDc2QzkgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1NEE3NjAx
ODBGOUY3MDAwQjA3NkM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNw
cCAqLzsgfTsKIAkJQ0Q1NEE3NjMxODBGOUY3MDAwQjA3NkM5IC8qIEF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDU0QTc2MTE4MEY5RjcwMDBCMDc2QzkgLyogQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuaCAqLzsgfTsKLQkJQ0Q1NERFNDcxNzQ2OEI2RjAwNUU1QjM2IC8q
IE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0Q1NERFNDUxNzQ2OEI2RjAwNUU1QjM2IC8qIE1lZGlhU2Vzc2lv
bk1hbmFnZXJNYWMuY3BwICovOyB9OwogCQlDRDU0REU0QjE3NDY5QzZEMDA1RTVCMzYgLyogQXVk
aW9TZXNzaW9uTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENENTRERTQ5MTc0NjlDNkQwMDVFNUIzNiAvKiBBdWRpb1Nlc3Npb25NYWMuY3BwICov
OyB9OwogCQlDRDU1OTY5MTE0NzVCNjc4MDAxRDBCRDAgLyogQXVkaW9GaWxlUmVhZGVySU9TLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENTU5NjhG
MTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFkZXJJT1MuY3BwICovOyB9OwogCQlDRDU1
OTY5MjE0NzVCNjc4MDAxRDBCRDAgLyogQXVkaW9GaWxlUmVhZGVySU9TLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDU1OTY5MDE0NzVCNjc4MDAxRDBC
RDAgLyogQXVkaW9GaWxlUmVhZGVySU9TLmggKi87IH07CkBAIC03MjYzLDYgKzcyNjYsNyBAQAog
CQkwNzhFMDk0ODE3RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVN0cmVh
bUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDc4RTA5NDkxN0QxNzA5NjAwNDIwQUExIC8qIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5v
ZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTdHJlYW1BdWRpb0Rl
c3RpbmF0aW9uTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzhFMDk0QTE3
RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIxNjUzMUFBNTYwQUEwMEEzQzA0OSAv
KiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQuaDsgcGF0aCA9IGdy
YXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDc5NDE3OEYxNjZFODU1RjAwOTQxNkMyIC8qIEluYmFuZFRleHRUcmFj
ay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmJhbmRUZXh0VHJh
Y2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzk0MTc5MDE2NkU4NTVGMDA5
NDE2QzIgLyogSW5iYW5kVGV4dFRyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEluYmFuZFRleHRUcmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzk0
MTc5MzE2NkVBMDRFMDA5NDE2QzIgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MzQxLDggKzczNDUsMTEgQEAKIAkJMDdEQzVGRDMx
N0QzRUVFOTAwOTlGODkwIC8qIEpTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0UxMTZCMDE0ODlDOUExMDBFQzVBQ0Ug
LyogSlNUZXh0VHJhY2tDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNUZXh0VHJhY2tDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwN0UxMTcwNjE0ODlFQkVCMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUZXh0VHJhY2tDdWVDdXN0b20u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0UzREZEMDFBOUU3ODY1MDA3NjRD
QTggLyogTWVkaWFQbGF5YmFja1RhcmdldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNZWRpYVBsYXliYWNrVGFyZ2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTA3RTNERkQyMUE5RTc4QTUwMDc2NENBOCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gTWVkaWFQbGF5YmFja1Rhcmdl
dE1hYy5tbTsgcGF0aCA9IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXli
YWNrVGFyZ2V0TWFjLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTA3RTlFMTJE
MThGNUUyNzYwMDExQTNBNCAvKiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlQVZGLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RTlFMTJGMThGNjJC
MzcwMDExQTNBNCAvKiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlQVZGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdFREMzRUQxQUFD
Qjc1RDAwOTgzRUI1IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RkJERTJCMThGRUQxNzgwMDFBN0NGRiAvKiBKU0Rh
dGFDdWVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNE
YXRhQ3VlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdGRTk5REEx
ODgwN0E3RDAwMjU2NjQ4IC8qIEhUTUxNZWRpYVNlc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTE1lZGlhU2Vzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3RkU5OURCMTg4MDdBN0QwMDI1NjY0OCAvKiBIVE1MTWVkaWFTZXNz
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxNZWRpYVNlc3Npb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMTg2LDcgKzEzMTkzLDYgQEAKIAkJ
Q0Q1MzkzRDIxNzVFMDE4NjAwQzA3MTIzIC8qIEpTTWVtb3J5SW5mby5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU01lbW9yeUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0Q1NEE3NjAxODBGOUY3MDAwQjA3NkM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcDsgcGF0aCA9IG9iamMvQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRDU0QTc2MTE4MEY5RjcwMDBCMDc2QzkgLyogQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDsgcGF0aCA9IG9iamMvQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQ0Q1NERFNDUxNzQ2OEI2RjAwNUU1QjM2IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTZXNzaW9uTWFuYWdl
ck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENTRERTQ5MTc0NjlDNkQw
MDVFNUIzNiAvKiBBdWRpb1Nlc3Npb25NYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQXVkaW9TZXNzaW9uTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0Q1NTk2OEYxNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRlcklPUy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBdWRpb0ZpbGVSZWFkZXJJT1Mu
Y3BwOyBwYXRoID0gaW9zL0F1ZGlvRmlsZVJlYWRlcklPUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNENTU5NjkwMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFkZXJJ
T1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQXVkaW9GaWxlUmVhZGVySU9T
Lmg7IHBhdGggPSBpb3MvQXVkaW9GaWxlUmVhZGVySU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMDU0OSw2ICsyMDU1NSw3IEBACiAJCUIyNzUzNTQ5MEIwNTM4MTQwMDJDRTY0
RiAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CTA3RTNERkQyMUE5RTc4QTUwMDc2NENBOCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLm1tICov
LAogCQkJCUVERTNBNEZGMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oICovLAogCQkJCUIy
NzUzNTRBMEIwNTM4MTQwMDJDRTY0RiAvKiBDb2xvck1hYy5tbSAqLywKIAkJCQkzN0MyMzYwRTEw
OTdFRTc3MDBFRjlGNzIgLyogQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCAqLywKQEAgLTIwNTk5
LDYgKzIwNjA2LDcgQEAKIAkJCQlGQkMyMjBERDEyMzdGQkVCMDBCQ0Y3ODggLyogb3BlbmdsICov
LAogCQkJCTM3MjE0OTMzMThGMEI2RDYwMDE1NkVEQyAvKiBvcGVudHlwZSAqLywKIAkJCQk0OUU5
MTFCMjBFRjg2RDI3MDA5RDBDQUYgLyogdHJhbnNmb3JtcyAqLywKKwkJCQkwN0UzREZEMDFBOUU3
ODY1MDA3NjRDQTggLyogTWVkaWFQbGF5YmFja1RhcmdldC5oICovLAogCQkJCTQ5MDcwN0U0MTIx
OUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5jcHAgKi8sCiAJCQkJNDkwNzA3RTUx
MjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmggKi8sCiAJCQkJQkVGMjlFRTkx
NzE1REQwOTAwQzRCNEM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlLmggKi8sCkBAIC0yMTUxNyw2ICsy
MTUyNSw3IEBACiAJCUJDRjFBNUJBMDk3ODMyMDkwMDYxQTEyMyAvKiBwbGF0Zm9ybSAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMDc5MjE2NTMxQUE1NjBB
QTAwQTNDMDQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQuaCAqLywKIAkJCQk0
OUU5MTJBNDBFRkFDOEU2MDA5RDBDQUYgLyogYW5pbWF0aW9uICovLAogCQkJCUZEMzE2MDQwMTJC
MDI2QTMwMEMxQTM1OSAvKiBhdWRpbyAqLywKIAkJCQkxQUU0MkY2NzBBQTRCOENCMDBDODYxMkQg
LyogY2YgKi8sCkBAIC0yMzQwNyw2ICsyMzQxNiw3IEBACiAJCUZEMzE2MEIwMTJCMDI3MDcwMEMx
QTM1OSAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCTA3RURDM0VEMUFBQ0I3NUQwMDk4M0VCNSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNw
cCAqLywKIAkJCQlGRDMxNjBCNTEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9CdXNNYWMubW0gKi8s
CiAJCQkJRkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuY3Bw
ICovLAogCQkJCUZEMzE2MEI3MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFj
LmggKi8sCkBAIC0yMzQxOCw3ICsyMzQyOCw2IEBACiAJCQkJQ0RDNzM0MTIxOTc3ODk2QzAwNDZC
RkM1IC8qIENBUmluZ0J1ZmZlci5jcHAgKi8sCiAJCQkJQ0RDNzM0MTMxOTc3ODk2QzAwNDZCRkM1
IC8qIENBUmluZ0J1ZmZlci5oICovLAogCQkJCUZEMzE2MEJBMTJCMDI3MkEwMEMxQTM1OSAvKiBG
RlRGcmFtZU1hYy5jcHAgKi8sCi0JCQkJQ0Q1NERFNDUxNzQ2OEI2RjAwNUU1QjM2IC8qIE1lZGlh
U2Vzc2lvbk1hbmFnZXJNYWMuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjM3MjMsNiArMjM3MzIsNyBAQAogCQkJCUJDQjE2QzFD
MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE5
RkJENUYxNUQyRjQ2NDAwOTY0MEE2IC8qIENhY2hlZEltYWdlQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MTAxODQ2OTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMDdFM0RGRDExQTlFNzg2NTAwNzY0Q0E4IC8qIE1lZGlhUGxheWJhY2tUYXJn
ZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUQwRURBNzc1MTQzRTMwM0MwMDI4RTM4MyAvKiBDYWNo
ZWRSYXdSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCNTMzNDkxNzE3REVFMzAwRjIw
NUY5IC8qIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Ix
NkMyMDA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLApA
QCAtMjYxODcsNiArMjYxOTcsNyBAQAogCQkJCTkzOTFBOTkxMTYyNzQ2Q0IwMDI5NzMzMCAvKiBT
Y3JvbGxpbmdDb29yZGluYXRvck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDMzhCRkYxNjQ0
NzNDNzAwMDkxRUIyIC8qIFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkVBM0U3QjE5MUIyRkM1MDAwRjFCNTUgLyogU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9s
bGluZ05vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3OTIxNjU1MUFBNTYwQUEwMEEzQzA0OSAv
KiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5
MzFDQkQwRDE2MUE0NEU5MDBFNEM4NzQgLyogU2Nyb2xsaW5nU3RhdGVOb2RlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkVBM0U4NDE5MUIzMUJGMDAwRjFCNTUgLyogU2Nyb2xsaW5nU3RhdGVPdmVy
Zmxvd1Njcm9sbGluZ05vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMUNCRDBGMTYxQTQ0RTkw
MEU0Qzg3NCAvKiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaCBpbiBIZWFkZXJzICovLApA
QCAtMjczNjAsNiArMjczNzEsNyBAQAogCQkJCUZEMzE1RkY4MTJCMDI2NzYwMEMxQTM1OSAvKiBB
dWRpb0J1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNUZGQjEyQjAyNjc2MDBDMUEz
NTkgLyogQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2
MDdCMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0J1cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkw
N0VEQzNFRTFBQUNCNzVEMDA5ODNFQjUgLyogTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGRDMxNjBCQjEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9CdXNNYWMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjA3RDEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9D
aGFubmVsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDA0MTJCMDI2NzYwMEMxQTM1OSAv
KiBBdWRpb0NvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzk0MCw2ICsyNzk1Miw3IEBA
CiAJCQkJOUJBQjZDNkQxMjU1MDYzMTAwMTYyNkQ0IC8qIEVkaXRpbmdTdHlsZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0QjMwNDNDQzBBRTAzNzNCMDBBODI2NDcgLyogRWRpdG9yLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTkzQTM4QjRCMEQwRTU4MDgwMDY4NzJDMiAvKiBFZGl0b3JDb21tYW5k
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3NjBDMTdBMUFBOEZDN0QwMDlFRDdCOCAvKiBNZWRp
YVBsYXliYWNrVGFyZ2V0TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRkVEMTNEM0EwQ0VBOTM0
NjAwRDg5NDY2IC8qIEVkaXRvcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUVENTAxREM2MEIy
NDlGMjkwMEFFMThEOSAvKiBFZGl0b3JNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEM0QTgw
ODA5RDU2MzI3MDAwM0FDOEQgLyogRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5MTYz
LDcgKzI5MTc2LDYgQEAKIAkJCQkwNzBFMDkxQjE4NzVFRjcxMDAzQTFEM0MgLyogTWVkaWFTZXNz
aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQUU4QzA5MTc0NkI5NTcwMDUzMkQ3OCAvKiBN
ZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3NjM4QTlBMTg4NDQ4
NzIwMEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tIGluIFNvdXJjZXMgKi8sCi0J
CQkJQ0Q1NERFNDcxNzQ2OEI2RjAwNUU1QjM2IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QzQTQ5NUUxN0E5RDAxQjAwMjc0RTQyIC8qIE1lZGlhU291
cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQzhCNUE2MTgwNDc0RjcwMDE2RTY4NSAvKiBN
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q2MUZFNjcx
Nzk0QUFEQjAwNDEwMUVCIC8qIE1lZGlhU291cmNlUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8s
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDE4MTM5NikKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOCw2ICsyMjgs
MTAgQEAKICNpbmNsdWRlIDxyZXBsYXkvSW5wdXRDdXJzb3IuaD4KICNlbmRpZgogCisjaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50
LmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdURjsKIHVzaW5nIG5hbWVzcGFjZSBVbmlj
b2RlOwogCkBAIC02NDUxLDQgKzY0NTUsODIgQEAgdm9pZCBEb2N1bWVudDo6c2V0SW5wdXRDdXJz
b3IoUGFzc1JlZlB0cgogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKQordm9pZCBEb2N1bWVudDo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IEhU
TUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2Uo
KTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIHBhZ2UtPnNob3dQbGF5
YmFja1RhcmdldFBpY2tlcih0aGlzLCB2aWV3KCktPmxhc3RLbm93bk1vdXNlUG9zaXRpb24oKSwg
aXM8SFRNTFZpZGVvRWxlbWVudD4oZWxlbWVudCkpOworfQorCit2b2lkIERvY3VtZW50OjphZGRQ
bGF5YmFja1RhcmdldFBpY2tlckNsaWVudChNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50
JiBjbGllbnQpCit7CisgICAgUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKKyAgICBpZiAoIXBh
Z2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGxheWJhY2tUYXJnZXRDbGllbnRzLmFkZCgm
Y2xpZW50KTsKKworICAgIGNsaWVudC5kaWRDaG9vc2VQbGF5YmFja1RhcmdldChwYWdlLT5wbGF5
YmFja1RhcmdldCgpKTsKKyAgICBjbGllbnQuZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVE
aWRDaGFuZ2UocGFnZS0+aGFzV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpKTsKK30KKwordm9pZCBE
b2N1bWVudDo6cmVtb3ZlUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlckNsaWVudCYgY2xpZW50KQoreworICAgIG1fcGxheWJhY2tUYXJnZXRDbGllbnRz
LnJlbW92ZSgmY2xpZW50KTsKKyAgICBjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0b3Jpbmco
KTsKK30KKwordm9pZCBEb2N1bWVudDo6Y29uZmlndXJlUGxheWJhY2tUYXJnZXRNb25pdG9yaW5n
KCkKK3sKKyAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgcGFnZS0+Y29uZmlndXJlUGxheWJhY2tUYXJnZXRNb25pdG9y
aW5nKCk7Cit9CisKK2Jvb2wgRG9jdW1lbnQ6OnJlcXVpcmVzUGxheWJhY2tUYXJnZXRSb3V0ZU1v
bml0b3JpbmcoKQoreworICAgIGZvciAoYXV0byB0YXJnZXRDbGllbnQgOiBtX3BsYXliYWNrVGFy
Z2V0Q2xpZW50cykgeworICAgICAgICBpZiAodGFyZ2V0Q2xpZW50LT5yZXF1aXJlc1BsYXliYWNr
VGFyZ2V0Um91dGVNb25pdG9yaW5nKCkpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3ZvaWQgRG9jdW1lbnQ6OnBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKGJv
b2wgYXZhaWxhYmxlKQoreworICAgIGlmIChtX3BsYXliYWNrVGFyZ2V0c0F2YWlsYWJsZSA9PSBh
dmFpbGFibGUpCisgICAgICAgIHJldHVybjsKKyAgICBtX3BsYXliYWNrVGFyZ2V0c0F2YWlsYWJs
ZSA9IGF2YWlsYWJsZTsKKworICAgIGZvciAoYXV0byBjbGllbnQgOiBtX3BsYXliYWNrVGFyZ2V0
Q2xpZW50cykKKyAgICAgICAgY2xpZW50LT5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURp
ZENoYW5nZShhdmFpbGFibGUpOworfQorCit2b2lkIERvY3VtZW50OjpkaWRDaG9vc2VQbGF5YmFj
a1RhcmdldChNZWRpYVBsYXliYWNrVGFyZ2V0JiBkZXZpY2UpCit7CisgICAgTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlckNsaWVudCogY2xpZW50VGhhdFJlcXVlc3RlZFBpY2tlciA9IG51bGxwdHI7
CisKKyAgICBmb3IgKGF1dG8gY2xpZW50IDogbV9wbGF5YmFja1RhcmdldENsaWVudHMpIHsKKyAg
ICAgICAgaWYgKGNsaWVudC0+cmVxdWVzdGVkUGxheWJhY2tUYXJnZXRQaWNrZXIoKSkgeworICAg
ICAgICAgICAgY2xpZW50VGhhdFJlcXVlc3RlZFBpY2tlciA9IGNsaWVudDsKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgY2xpZW50LT5kaWRDaG9vc2VQbGF5YmFj
a1RhcmdldChkZXZpY2UpOworICAgIH0KKworICAgIGlmIChjbGllbnRUaGF0UmVxdWVzdGVkUGlj
a2VyKQorICAgICAgICBjbGllbnRUaGF0UmVxdWVzdGVkUGlja2VyLT5kaWRDaG9vc2VQbGF5YmFj
a1RhcmdldChkZXZpY2UpOworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDE4MTM5NikKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNiArMTI0LDggQEAgY2xh
c3MgTGl2ZU5vZGVMaXN0OwogY2xhc3MgSlNOb2RlOwogY2xhc3MgTG9jYWxlOwogY2xhc3MgTWVk
aWFDYW5TdGFydExpc3RlbmVyOworY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsKK2NsYXNzIE1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQ7CiBjbGFzcyBNZWRpYVF1ZXJ5TGlzdDsKIGNs
YXNzIE1lZGlhUXVlcnlNYXRjaGVyOwogY2xhc3MgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0
czsKQEAgLTEyMTgsNiArMTIyMCwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYWdlTXV0ZWRTdGF0
ZURpZENoYW5nZSgpOwogICAgIFdlYWtQdHI8RG9jdW1lbnQ+IGNyZWF0ZVdlYWtQdHIoKSB7IHJl
dHVybiBtX3dlYWtGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKTsgfQogCisjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKKyAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihj
b25zdCBIVE1MTWVkaWFFbGVtZW50Jik7CisgICAgdm9pZCBkaWRDaG9vc2VQbGF5YmFja1Rhcmdl
dChNZWRpYVBsYXliYWNrVGFyZ2V0Jik7CisgICAgdm9pZCBhZGRQbGF5YmFja1RhcmdldFBpY2tl
ckNsaWVudChNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50Jik7CisgICAgdm9pZCByZW1v
dmVQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudChNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xp
ZW50Jik7CisgICAgYm9vbCByZXF1aXJlc1BsYXliYWNrVGFyZ2V0Um91dGVNb25pdG9yaW5nKCk7
CisgICAgdm9pZCBjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0b3JpbmcoKTsKKyAgICB2b2lk
IHBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKGJvb2wpOworI2VuZGlmCisKIHBy
b3RlY3RlZDoKICAgICBlbnVtIENvbnN0cnVjdGlvbkZsYWdzIHsgU3ludGhlc2l6ZWQgPSAxLCBO
b25SZW5kZXJlZFBsYWNlaG9sZGVyID0gMSA8PCAxIH07CiAgICAgRG9jdW1lbnQoRnJhbWUqLCBj
b25zdCBVUkwmLCB1bnNpZ25lZCA9IERlZmF1bHREb2N1bWVudENsYXNzLCB1bnNpZ25lZCBjb25z
dHJ1Y3Rpb25GbGFncyA9IDApOwpAQCAtMTY1NSw2ICsxNjY3LDExIEBAIHByaXZhdGU6CiAKICAg
ICBIYXNoU2V0PEF1ZGlvUHJvZHVjZXIqPiBtX2F1ZGlvUHJvZHVjZXJzOwogICAgIGJvb2wgbV9p
c1BsYXlpbmdBdWRpbzsKKworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisg
ICAgSGFzaFNldDxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50Kj4gbV9w
bGF5YmFja1RhcmdldENsaWVudHM7CisgICAgYm9vbCBtX3BsYXliYWNrVGFyZ2V0c0F2YWlsYWJs
ZSB7IGZhbHNlIH07CisjZW5kaWYKIH07CiAKIGlubGluZSB2b2lkIERvY3VtZW50Ojpub3RpZnlS
ZW1vdmVQZW5kaW5nU2hlZXRJZk5lZWRlZCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MTM5NikKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyNiw2ICs0MjYsOCBA
QCBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCgpCiAKIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6cmVnaXN0ZXJXaXRoRG9jdW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogeworICAg
IG1fbWVkaWFTZXNzaW9uLT5yZWdpc3RlcldpdGhEb2N1bWVudChkb2N1bWVudCk7CisKICAgICBp
ZiAobV9pc1dhaXRpbmdVbnRpbE1lZGlhQ2FuU3RhcnQpCiAgICAgICAgIGRvY3VtZW50LmFkZE1l
ZGlhQ2FuU3RhcnRMaXN0ZW5lcih0aGlzKTsKIApAQCAtNDUxLDYgKzQ1Myw4IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6cmVnaXN0ZXJXaXRoRG9jdW0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp1bnJlZ2lzdGVyV2l0aERvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkKIHsKKyAgICBtX21l
ZGlhU2Vzc2lvbi0+dW5yZWdpc3RlcldpdGhEb2N1bWVudChkb2N1bWVudCk7CisKICAgICBpZiAo
bV9pc1dhaXRpbmdVbnRpbE1lZGlhQ2FuU3RhcnQpCiAgICAgICAgIGRvY3VtZW50LnJlbW92ZU1l
ZGlhQ2FuU3RhcnRMaXN0ZW5lcih0aGlzKTsKIApAQCAtMjQ2OCw2ICsyNDcyLDkgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpyZWZyZXNoQ2FjaGVkVGltZQogCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmludmFsaWRhdGVDYWNoZWRUaW1lKCkgY29uc3QKIHsKKyAgICBpZiAoIW1fcGxheWVyLT5t
YXhpbXVtRHVyYXRpb25Ub0NhY2hlTWVkaWFUaW1lKCkpCisgICAgICAgIHJldHVybjsKKwogI2lm
ICFMT0dfRElTQUJMRUQKICAgICBpZiAobV9jYWNoZWRUaW1lLmlzVmFsaWQoKSkKICAgICAgICAg
TE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6aW52YWxpZGF0ZUNhY2hlZFRpbWUoJXApIiwg
dGhpcyk7CkBAIC00ODUzLDYgKzQ4NjAsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjplbnF1
ZXVlUGxheWJhY2tUYQogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CiAgICAgbV9hc3luY0V2
ZW50UXVldWUuZW5xdWV1ZUV2ZW50KGV2ZW50LnJlbGVhc2UoKSk7CiB9CisKK3ZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChjb25zdCBNZWRpYVBsYXliYWNr
VGFyZ2V0JiBkZXZpY2UpCit7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2V0
V2lyZWxlc3NQbGF5YmFja1RhcmdldCglcCkiLCB0aGlzKTsKKyAgICBpZiAobV9wbGF5ZXIpCisg
ICAgICAgIG1fcGxheWVyLT5zZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KGRldmljZSk7Cit9CiAj
ZW5kaWYKIAogZG91YmxlIEhUTUxNZWRpYUVsZW1lbnQ6Om1pbkZhc3RSZXZlcnNlUmF0ZSgpIGNv
bnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24g
MTgxMzk2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zNTcsNyArMzU3LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29s
IGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworCiAgICAgdmlydHVh
bCB2b2lkIHdpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIHNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoY29uc3QgTWVkaWFQbGF5YmFj
a1RhcmdldCYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICAvLyBFdmVudFRhcmdldCBmdW5jdGlv
bi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmNwcAkocmV2aXNp
b24gMTgxMzk2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsOSBAQAogCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAj
aW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBA
IC03Miw4ICs3NCwyOCBAQCBzdGF0aWMgY29uc3QgY2hhciogcmVzdHJpY3Rpb25OYW1lKEhUTUxN
CiBIVE1MTWVkaWFTZXNzaW9uOjpIVE1MTWVkaWFTZXNzaW9uKE1lZGlhU2Vzc2lvbkNsaWVudCYg
Y2xpZW50KQogICAgIDogTWVkaWFTZXNzaW9uKGNsaWVudCkKICAgICAsIG1fcmVzdHJpY3Rpb25z
KE5vUmVzdHJpY3Rpb25zKQotICAgICwgbV9oYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxp
c3RlbmVycyhmYWxzZSkKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorICAg
ICwgbV90YXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkVGltZXIoKnRoaXMsICZIVE1MTWVkaWFTZXNz
aW9uOjp0YXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkVGltZXJGaXJlZCkKKyNlbmRpZgoreworfQor
Cit2b2lkIEhUTUxNZWRpYVNlc3Npb246OnJlZ2lzdGVyV2l0aERvY3VtZW50KERvY3VtZW50JiBk
b2N1bWVudCkKIHsKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorICAgIGRv
Y3VtZW50LmFkZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KCp0aGlzKTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKGRvY3VtZW50KTsKKyNlbmRpZgorfQorCit2b2lkIEhUTUxNZWRpYVNlc3Np
b246OnVucmVnaXN0ZXJXaXRoRG9jdW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQoreworI2lmIEVO
QUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisgICAgZG9jdW1lbnQucmVtb3ZlUGxheWJh
Y2tUYXJnZXRQaWNrZXJDbGllbnQoKnRoaXMpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZG9j
dW1lbnQpOworI2VuZGlmCiB9CiAKIHZvaWQgSFRNTE1lZGlhU2Vzc2lvbjo6YWRkQmVoYXZpb3JS
ZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikKQEAgLTE3NywxOSAr
MTk5LDIwIEBAIHZvaWQgSFRNTE1lZGlhU2Vzc2lvbjo6c2hvd1BsYXliYWNrVGFyZ2UKICAgICBp
ZiAoIXNob3dpbmdQbGF5YmFja1RhcmdldFBpY2tlclBlcm1pdHRlZChlbGVtZW50KSkKICAgICAg
ICAgcmV0dXJuOwogCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIGVsZW1lbnQuZG9jdW1lbnQoKS5m
cmFtZSgpLT5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLnNob3dQbGF5YmFja1RhcmdldFBpY2tl
cihlbGVtZW50Lmhhc1ZpZGVvKCkpOwotI2VuZGlmCisgICAgbV9oYXZlUmVxdWVzdGVkUGxheWJh
Y2tUYXJnZXRQaWNrZXIgPSB0cnVlOworICAgIGVsZW1lbnQuZG9jdW1lbnQoKS5zaG93UGxheWJh
Y2tUYXJnZXRQaWNrZXIoZWxlbWVudCk7CiB9CiAKLWJvb2wgSFRNTE1lZGlhU2Vzc2lvbjo6aGFz
V2lyZWxlc3NQbGF5YmFja1RhcmdldHMoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkg
Y29uc3QKK2Jvb2wgSFRNTE1lZGlhU2Vzc2lvbjo6aGFzV2lyZWxlc3NQbGF5YmFja1RhcmdldHMo
Y29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0CiB7Ci0gICAgVU5VU0VEX1BBUkFNKGVsZW1l
bnQpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBGSVhNRTogY29uc29saWRhdGUgTWFjIGFu
ZCBpT1MgaW1wbGVtZW50YXRpb25zCisgICAgbV9oYXNQbGF5YmFja1RhcmdldHMgPSBNZWRpYVNl
c3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxl
KCk7CisjZW5kaWYKIAotICAgIGJvb2wgaGFzVGFyZ2V0cyA9IE1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNoYXJlZE1hbmFnZXIoKS5oYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGUoKTsKLSAgICBMT0co
TWVkaWEsICJIVE1MTWVkaWFTZXNzaW9uOjpoYXNXaXJlbGVzc1BsYXliYWNrVGFyZ2V0cyAtIHJl
dHVybmluZyAlcyIsIGhhc1RhcmdldHMgPyAiVFJVRSIgOiAiRkFMU0UiKTsKKyAgICBMT0coTWVk
aWEsICJIVE1MTWVkaWFTZXNzaW9uOjpoYXNXaXJlbGVzc1BsYXliYWNrVGFyZ2V0cyAtIHJldHVy
bmluZyAlcyIsIG1faGFzUGxheWJhY2tUYXJnZXRzID8gIlRSVUUiIDogIkZBTFNFIik7CiAKLSAg
ICByZXR1cm4gaGFzVGFyZ2V0czsKKyAgICByZXR1cm4gbV9oYXNQbGF5YmFja1RhcmdldHM7CiB9
CiAKIGJvb2wgSFRNTE1lZGlhU2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQo
Y29uc3QgSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkgY29uc3QKQEAgLTI0NCw3ICsyNjcsMzgg
QEAgdm9pZCBIVE1MTWVkaWFTZXNzaW9uOjpzZXRIYXNQbGF5YmFja1RhcgogICAgIFVOVVNFRF9Q
QVJBTShlbGVtZW50KTsKIAogICAgIG1faGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0
ZW5lcnMgPSBoYXNMaXN0ZW5lcnM7CisKKyNpZiBQTEFURk9STShJT1MpCiAgICAgTWVkaWFTZXNz
aW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmNvbmZpZ3VyZVdpcmVMZXNzVGFyZ2V0TW9uaXRv
cmluZygpOworI2Vsc2UKKyAgICBlbGVtZW50LmRvY3VtZW50KCkuY29uZmlndXJlUGxheWJhY2tU
YXJnZXRNb25pdG9yaW5nKCk7CisjZW5kaWYKK30KKwordm9pZCBIVE1MTWVkaWFTZXNzaW9uOjpk
aWRDaG9vc2VQbGF5YmFja1RhcmdldChNZWRpYVBsYXliYWNrVGFyZ2V0JiBkZXZpY2UpCit7Cisg
ICAgbV9oYXZlUmVxdWVzdGVkUGxheWJhY2tUYXJnZXRQaWNrZXIgPSBmYWxzZTsKKyAgICBjbGll
bnQoKS5zZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KGRldmljZSk7Cit9CisKK3ZvaWQgSFRNTE1l
ZGlhU2Vzc2lvbjo6dGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZFRpbWVyRmlyZWQoKQoreworICAg
IGNsaWVudCgpLndpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlKCk7Cit9CisKK3ZvaWQg
SFRNTE1lZGlhU2Vzc2lvbjo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2Uo
Ym9vbCBoYXNUYXJnZXRzKSBjb25zdAoreworICAgIGlmIChtX2hhc1BsYXliYWNrVGFyZ2V0cyA9
PSBoYXNUYXJnZXRzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2hhc1BsYXliYWNrVGFyZ2V0
cyA9IGhhc1RhcmdldHM7CisgICAgaWYgKCFtX3RhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRUaW1l
ci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3RhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRUaW1lci5z
dGFydE9uZVNob3QoMCk7Cit9CisKK2Jvb2wgSFRNTE1lZGlhU2Vzc2lvbjo6cmVxdWlyZXNQbGF5
YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faGFzUGxh
eWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnM7CiB9CiAjZW5kaWYKIApJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmgJKHJldmlzaW9uIDE4MTM5NikKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDkg
KzMwLDExIEBACiAKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgogI2luY2x1ZGUgIk1lZGlhU2Vz
c2lvbi5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgRG9jdW1lbnQ7CiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogY2xhc3MgU291cmNlQnVmZmVy
OwogCkBAIC00MSwxNCArNDMsMTcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IEhUTUxNZWRpYVNl
c3Npb24oTWVkaWFTZXNzaW9uQ2xpZW50Jik7CiAgICAgdmlydHVhbCB+SFRNTE1lZGlhU2Vzc2lv
bigpIHsgfQogCisgICAgdm9pZCByZWdpc3RlcldpdGhEb2N1bWVudChEb2N1bWVudCYpOworICAg
IHZvaWQgdW5yZWdpc3RlcldpdGhEb2N1bWVudChEb2N1bWVudCYpOworCiAgICAgYm9vbCBwbGF5
YmFja1Blcm1pdHRlZChjb25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7CiAgICAgYm9vbCBk
YXRhTG9hZGluZ1Blcm1pdHRlZChjb25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7CiAgICAg
Ym9vbCBmdWxsc2NyZWVuUGVybWl0dGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsK
ICAgICBib29sIHBhZ2VBbGxvd3NEYXRhTG9hZGluZyhjb25zdCBIVE1MTWVkaWFFbGVtZW50Jikg
Y29uc3Q7CiAgICAgYm9vbCBwYWdlQWxsb3dzUGxheWJhY2tBZnRlclJlc3VtaW5nKGNvbnN0IEhU
TUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKKwogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpCiAgICAgYm9vbCBzaG93aW5nUGxheWJhY2tUYXJnZXRQaWNrZXJQZXJtaXR0ZWQoY29u
c3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OwotCiAgICAgYm9vbCBjdXJyZW50UGxheWJhY2tU
YXJnZXRJc1dpcmVsZXNzKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKICAgICB2b2lk
IHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihjb25zdCBIVE1MTWVkaWFFbGVtZW50Jik7CiAgICAg
Ym9vbCBoYXNXaXJlbGVzc1BsYXliYWNrVGFyZ2V0cyhjb25zdCBIVE1MTWVkaWFFbGVtZW50Jikg
Y29uc3Q7CkBAIC01OCw2ICs2Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SGFzUGxheWJh
Y2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYsIGJv
b2wpOwogI2VuZGlmCisKICAgICBib29sIHJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVvUGxheWJh
Y2soY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgYWxsb3dzQWx0ZXJuYXRlRnVsbHNjcmVlbihjb25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29u
c3Q7CiAgICAgTWVkaWFQbGF5ZXI6OlByZWxvYWQgZWZmZWN0aXZlUHJlbG9hZEZvckVsZW1lbnQo
Y29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OwpAQCAtODcsMTAgKzkzLDI1IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc1BsYXliYWNr
VGFyZ2V0Um91dGVNb25pdG9yaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9oYXNQbGF5
YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVyczsgfQorCisjaWYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkKKyAgICB2b2lkIHRhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRUaW1l
ckZpcmVkKCk7CisKKyAgICAvLyBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50CisgICAg
dmlydHVhbCB2b2lkIGRpZENob29zZVBsYXliYWNrVGFyZ2V0KE1lZGlhUGxheWJhY2tUYXJnZXQm
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGVEaWRDaGFuZ2UoYm9vbCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIHJlcXVp
cmVzUGxheWJhY2tUYXJnZXRSb3V0ZU1vbml0b3JpbmcoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIGJvb2wgcmVxdWVzdGVkUGxheWJhY2tUYXJnZXRQaWNrZXIoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2hhdmVSZXF1ZXN0ZWRQbGF5YmFja1RhcmdldFBpY2tlcjsgfQorI2VuZGlm
CiAKICAgICBCZWhhdmlvclJlc3RyaWN0aW9ucyBtX3Jlc3RyaWN0aW9uczsKLSAgICBib29sIG1f
aGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnM7CisKKyNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorICAgIG11dGFibGUgVGltZXIgbV90YXJnZXRBdmFpbGFi
aWxpdHlDaGFuZ2VkVGltZXI7CisgICAgYm9vbCBtX2hhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmls
aXR5TGlzdGVuZXJzIHsgZmFsc2UgfTsKKyAgICBtdXRhYmxlIGJvb2wgbV9oYXNQbGF5YmFja1Rh
cmdldHMgeyBmYWxzZSB9OworICAgIG11dGFibGUgYm9vbCBtX2hhdmVSZXF1ZXN0ZWRQbGF5YmFj
a1RhcmdldFBpY2tlciB7IGZhbHNlIH07CisjZW5kaWYKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMTgxMzk2KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQ1LDYgKzQ0NSwxMiBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZl
bnRzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgYm9vbCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0
aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzdG9w
TW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpIHsgfQorI2VuZGlmCisKIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIH5DaHJvbWVDbGllbnQoKSB7IH0KIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJ
KHJldmlzaW9uIDE4MTM5NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwNCw2ICsxMDQsMTIgQEAKICNpbmNsdWRlIDxyZXBsYXkvSW5wdXRDdXJz
b3IuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyNp
bmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5YmFja1Rhcmdl
dC5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQuaCIKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBIYXNoU2V0PFBhZ2UqPiogYWxsUGFn
ZXM7CkBAIC0xNjkxLDQgKzE2OTcsNjcgQEAgdm9pZCBQYWdlOjpzZXRTZXNzaW9uSUQoU2Vzc2lv
bklEIHNlc3NpbwogICAgICAgICB2aWV3LT5wcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoc2Vz
c2lvbklELmlzRXBoZW1lcmFsKCkpOwogfQogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkKK3ZvaWQgUGFnZTo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKERvY3VtZW50KiBk
b2N1bWVudCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGxvY2F0aW9uLCBib29sIGlzVmlkZW8p
Cit7CisKKyAgICBtX2RvY3VtZW50UmVxdWVzdGluZ1BsYXliYWNrVGFyZ2V0UGlja2VyID0gZG9j
dW1lbnQ7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIC8vIEZJWE1FOiByZWZhY3RvciBpT1MgaW1w
bGVtZW50YXRpb24uCisgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKKyAgICBjaHJvbWUoKS5j
bGllbnQoKS5zaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoaXNWaWRlbyk7CisjZWxzZQorICAgIGNo
cm9tZSgpLmNsaWVudCgpLnNob3dQbGF5YmFja1RhcmdldFBpY2tlcihsb2NhdGlvbiwgaXNWaWRl
byk7CisjZW5kaWYKK30KKwordm9pZCBQYWdlOjpkaWRDaG9vc2VQbGF5YmFja1RhcmdldChNZWRp
YVBsYXliYWNrVGFyZ2V0JiB0YXJnZXQpCit7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50VGhhdFJl
cXVlc3RlZFBpY2tlciA9IG51bGxwdHI7CisKKyAgICBtX3BsYXliYWNrVGFyZ2V0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxNZWRpYVBsYXliYWNrVGFyZ2V0Pih0YXJnZXQuZGV2aWNlUGlja2VyQ29udGV4
dCgpKTsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1l
ID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgp
ID09IG1fZG9jdW1lbnRSZXF1ZXN0aW5nUGxheWJhY2tUYXJnZXRQaWNrZXIpIHsKKyAgICAgICAg
ICAgIGRvY3VtZW50VGhhdFJlcXVlc3RlZFBpY2tlciA9IGRvY3VtZW50OworICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPmRpZENob29z
ZVBsYXliYWNrVGFyZ2V0KHRhcmdldCk7CisgICAgfQorCisgICAgaWYgKGRvY3VtZW50VGhhdFJl
cXVlc3RlZFBpY2tlcikKKyAgICAgICAgZG9jdW1lbnRUaGF0UmVxdWVzdGVkUGlja2VyLT5kaWRD
aG9vc2VQbGF5YmFja1RhcmdldCh0YXJnZXQpOworCisgICAgbV9kb2N1bWVudFJlcXVlc3RpbmdQ
bGF5YmFja1RhcmdldFBpY2tlciA9IG51bGxwdHI7Cit9CisKK3ZvaWQgUGFnZTo6cGxheWJhY2tU
YXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UoYm9vbCBhdmFpbGFibGUpCit7CisgICAgbV9oYXNX
aXJlbGVzc1BsYXliYWNrVGFyZ2V0ID0gYXZhaWxhYmxlOworICAgIGZvciAoRnJhbWUqIGZyYW1l
ID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4
dCgpKQorICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+cGxheWJhY2tUYXJnZXRBdmFpbGFiaWxp
dHlEaWRDaGFuZ2UoYXZhaWxhYmxlKTsKK30KKwordm9pZCBQYWdlOjpjb25maWd1cmVQbGF5YmFj
a1RhcmdldE1vbml0b3JpbmcoKQoreworICAgIGJvb2wgbW9uaXRvcmluZ1JlcXVpcmVkID0gZmFs
c2U7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9
IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgaWYgKGZyYW1lLT5kb2N1
bWVudCgpLT5yZXF1aXJlc1BsYXliYWNrVGFyZ2V0Um91dGVNb25pdG9yaW5nKCkpIHsKKyAgICAg
ICAgICAgIG1vbml0b3JpbmdSZXF1aXJlZCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGlmIChtX3JlcXVpcmVzUGxheWJhY2tUYXJnZXRNb25pdG9y
aW5nID09IG1vbml0b3JpbmdSZXF1aXJlZCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fcmVxdWly
ZXNQbGF5YmFja1RhcmdldE1vbml0b3JpbmcgPSBtb25pdG9yaW5nUmVxdWlyZWQ7CisKKworICAg
IGlmIChtb25pdG9yaW5nUmVxdWlyZWQpCisgICAgICAgIGNocm9tZSgpLmNsaWVudCgpLnN0YXJ0
aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpOworICAgIGVsc2UKKyAgICAgICAgY2hyb21l
KCkuY2xpZW50KCkuc3RvcE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKK30KKyNlbmRpZgor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gMTgx
Mzk2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2
LDExICs3NiwxMyBAQCBjbGFzcyBGb2N1c0NvbnRyb2xsZXI7CiBjbGFzcyBGcmFtZTsKIGNsYXNz
IEZyYW1lTG9hZGVyQ2xpZW50OwogY2xhc3MgSGlzdG9yeUl0ZW07CitjbGFzcyBIVE1MTWVkaWFF
bGVtZW50OwogY2xhc3MgVXNlcklucHV0QnJpZGdlOwogY2xhc3MgSW5zcGVjdG9yQ2xpZW50Owog
Y2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKIGNsYXNzIE1haW5GcmFtZTsKIGNsYXNzIE1lZGlh
Q2FuU3RhcnRMaXN0ZW5lcjsKK2NsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQ7CiBjbGFzcyBQYWdl
Q29uZmlndXJhdGlvbjsKIGNsYXNzIFBhZ2VDb25zb2xlQ2xpZW50OwogY2xhc3MgUGFnZURlYnVn
Z2FibGU7CkBAIC00MjIsNiArNDI0LDE2IEBAIHB1YmxpYzoKICAgICBib29sIGlzTXV0ZWQoKSBj
b25zdCB7IHJldHVybiBtX211dGVkOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNdXRl
ZChib29sKTsKIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisgICAgdm9p
ZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoRG9jdW1lbnQqLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYsIGJvb2wpOworICAgIGJvb2wgaGFzV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0
IHsgcmV0dXJuIG1faGFzV2lyZWxlc3NQbGF5YmFja1RhcmdldDsgfQorICAgIE1lZGlhUGxheWJh
Y2tUYXJnZXQmIHBsYXliYWNrVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gKm1fcGxheWJhY2tUYXJn
ZXQuZ2V0KCk7IH0KKyAgICB2b2lkIGNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0TW9uaXRvcmluZygp
OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRDaG9vc2VQbGF5YmFja1RhcmdldChNZWRp
YVBsYXliYWNrVGFyZ2V0Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF5YmFja1Rhcmdl
dEF2YWlsYWJpbGl0eURpZENoYW5nZShib29sKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgaW5pdEdyb3VwKCk7CiAKQEAgLTU4MSw2ICs1OTMsMTMgQEAgcHJp
dmF0ZToKIAogICAgIFNlc3Npb25JRCBtX3Nlc3Npb25JRDsKIAorI2lmIEVOQUJMRShXSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQpCisgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnRSZXF1ZXN0aW5nUGxh
eWJhY2tUYXJnZXRQaWNrZXIgeyBudWxscHRyIH07CisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlh
UGxheWJhY2tUYXJnZXQ+IG1fcGxheWJhY2tUYXJnZXQ7CisgICAgYm9vbCBtX3JlcXVpcmVzUGxh
eWJhY2tUYXJnZXRNb25pdG9yaW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzV2lyZWxlc3NQ
bGF5YmFja1RhcmdldCB7IGZhbHNlIH07CisjZW5kaWYKKwogICAgIGJvb2wgbV9pc0Nsb3Npbmc7
CiAKICAgICBib29sIG1faXNQbGF5aW5nQXVkaW87CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDE4MTM5NikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uOjp2aXNpYmlsaXR5Q2hhbmdlZCgp
CiAKIHZvaWQgTWVkaWFTZXNzaW9uOjpjbGllbnREYXRhQnVmZmVyaW5nVGltZXJGaXJlZCgpCiB7
Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uOjp2aXNpYmlsaXR5Q2hhbmdlZCglcCktIHZp
c2libGUgPSAlcyIsIHRoaXMsIG1fY2xpZW50LmVsZW1lbnRJc0hpZGRlbigpID8gImZhbHNlIiA6
ICJ0cnVlIik7CisgICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uOjpjbGllbnREYXRhQnVmZmVy
aW5nVGltZXJGaXJlZCglcCktIHZpc2libGUgPSAlcyIsIHRoaXMsIG1fY2xpZW50LmVsZW1lbnRJ
c0hpZGRlbigpID8gImZhbHNlIiA6ICJ0cnVlIik7CiAKICAgICB1cGRhdGVDbGllbnREYXRhQnVm
ZmVyaW5nKCk7CiAKQEAgLTIyMCwxMSArMjIwLDYgQEAgTWVkaWFTZXNzaW9uOjpEaXNwbGF5VHlw
ZSBNZWRpYVNlc3Npb246OgogICAgIHJldHVybiBtX2NsaWVudC5kaXNwbGF5VHlwZSgpOwogfQog
Ci12b2lkIE1lZGlhU2Vzc2lvbjo6d2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2UoKSBj
b25zdAotewotICAgIG1fY2xpZW50LndpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlKCk7
Ci19Ci0KIFN0cmluZyBNZWRpYVNlc3Npb25DbGllbnQ6Om1lZGlhU2Vzc2lvblRpdGxlKCkgY29u
c3QKIHsKICAgICByZXR1cm4gU3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9NZWRpYVNlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uaAkocmV2aXNpb24gMTgxMzk2KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsMTEg
KzMwLDIwIEBACiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQor
I2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQuaCIKKyNlbmRpZgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQ7CiBjbGFzcyBN
ZWRpYVNlc3Npb25DbGllbnQ7CiAKLWNsYXNzIE1lZGlhU2Vzc2lvbiB7CitjbGFzcyBNZWRpYVNl
c3Npb24KKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorICAgIDogcHVibGlj
IE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQKKyNlbmRpZgorewogcHVibGljOgogICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFTZXNzaW9uPiBjcmVhdGUoTWVkaWFTZXNzaW9u
Q2xpZW50Jik7CiAKQEAgLTk5LDkgKzEwOCw2IEBAIHB1YmxpYzoKICAgICBib29sIGNhblJlY2Vp
dmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZW1v
dGVDb250cm9sQ29tbWFuZChSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpOwogCi0gICAgdmlydHVh
bCBib29sIHJlcXVpcmVzUGxheWJhY2tUYXJnZXRSb3V0ZU1vbml0b3JpbmcoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZvaWQgd2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2Uo
KSBjb25zdDsKLQogICAgIGVudW0gRGlzcGxheVR5cGUgewogICAgICAgICBOb3JtYWwsCiAgICAg
ICAgIEZ1bGxzY3JlZW4sCkBAIC0xMTEsNiArMTE3LDE0IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
aXNIaWRkZW4oKSBjb25zdDsKIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQp
CisgICAgLy8gTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudAorICAgIHZpcnR1YWwgdm9p
ZCBkaWRDaG9vc2VQbGF5YmFja1RhcmdldChNZWRpYVBsYXliYWNrVGFyZ2V0Jikgb3ZlcnJpZGUg
eyB9CisgICAgdmlydHVhbCB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hh
bmdlKGJvb2wpIGNvbnN0IG92ZXJyaWRlIHsgfQorICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc1Bs
YXliYWNrVGFyZ2V0Um91dGVNb25pdG9yaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWVzdGVkUGxheWJhY2tUYXJnZXRQaWNrZXIoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisKIHByb3RlY3RlZDoKICAg
ICBNZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9
CiAKQEAgLTE1MCw3ICsxNjQsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIG92ZXJy
aWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oKSBjb25zdCA9IDA7CiAKKyNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZpcnR1YWwgdm9pZCB3aXJlbGVzc1Jv
dXRlc0F2YWlsYWJsZURpZENoYW5nZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRXaXJlbGVz
c1BsYXliYWNrVGFyZ2V0KGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXQmKSB7IH0KKyNlbmRpZgog
CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+TWVkaWFTZXNzaW9uQ2xpZW50KCkgeyB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25N
YW5hZ2VyLmNwcAkocmV2aXNpb24gMTgxMzk2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yODUsMTQg
KzI4NSw2IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6YXBwbGljYXRpb25XaWwKICAgICB9
CiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6d2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVD
aGFuZ2VkKCkKLXsKLSAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjp3aXJlbGVz
c1JvdXRlc0F2YWlsYWJsZUNoYW5nZWQiKTsKLSAgICBWZWN0b3I8TWVkaWFTZXNzaW9uKj4gc2Vz
c2lvbnMgPSBtX3Nlc3Npb25zOwotICAgIGZvciAoYXV0byogc2Vzc2lvbiA6IHNlc3Npb25zKQot
ICAgICAgICBzZXNzaW9uLT53aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZSgpOwotfQot
CiAjaWYgIVBMQVRGT1JNKENPQ09BKQogdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRhdGVT
ZXNzaW9uU3RhdGUoKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVk
aWFTZXNzaW9uTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuaAkocmV2aXNpb24gMTgxMzk2KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNTQsNyArNTQsNiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYXBwbGljYXRpb25XaWxsRW50ZXJCYWNrZ3JvdW5kKCkgY29uc3Q7Ci0gICAgdm9p
ZCB3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZUNoYW5nZWQoKTsKIAogICAgIGVudW0gU2Vzc2lvblJl
c3RyaWN0aW9uRmxhZ3MgewogICAgICAgICBOb1Jlc3RyaWN0aW9ucyA9IDAsCkBAIC03OSw5ICs3
OCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9uQ2FuTG9hZE1lZGlhKGNv
bnN0IE1lZGlhU2Vzc2lvbiYpIGNvbnN0OwogCisjaWYgUExBVEZPUk0oSU9TKQogICAgIHZpcnR1
YWwgdm9pZCBjb25maWd1cmVXaXJlTGVzc1RhcmdldE1vbml0b3JpbmcoKSB7IH0KLQotI2lmIEVO
QUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgdmlydHVhbCBib29sIGhhc1dpcmVs
ZXNzVGFyZ2V0c0F2YWlsYWJsZSgpIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1Mu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFT
ZXNzaW9uTWFuYWdlcklPUy5oCShyZXZpc2lvbiAxODEzOTYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTQ1LDkgKzQ1LDE0IEBAIGNsYXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MgOiBwdWJsaWMgTWUK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NZWRpYVNlc3Npb25NYW5hZ2VyaU9TKCk7CiAKKyAgICB2
b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKCk7CisgICAgdmlydHVh
bCBib29sIGhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZSgpIG92ZXJyaWRlOworCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBNZWRpYVNlc3Npb25NYW5hZ2VyOwogCisgICAgTWVkaWFTZXNz
aW9uTWFuYWdlcmlPUygpOworCiAgICAgdmlydHVhbCB2b2lkIHNlc3Npb25XaWxsQmVnaW5QbGF5
YmFjayhNZWRpYVNlc3Npb24mKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2Vzc2lvbldp
bGxFbmRQbGF5YmFjayhNZWRpYVNlc3Npb24mKSBvdmVycmlkZTsKICAgICAKQEAgLTU1LDE0ICs2
MCwxMCBAQCBwcml2YXRlOgogICAgIAogICAgIHZpcnR1YWwgdm9pZCByZXNldFJlc3RyaWN0aW9u
cygpIG92ZXJyaWRlOwogCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLSAg
ICB2aXJ0dWFsIGJvb2wgaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlKCkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGNvbmZpZ3VyZVdpcmVMZXNzVGFyZ2V0TW9uaXRvcmluZygpIG92ZXJy
aWRlOwotI2VuZGlmCiAKICAgICB2aXJ0dWFsIGJvb2wgc2Vzc2lvbkNhbkxvYWRNZWRpYShjb25z
dCBNZWRpYVNlc3Npb24mKSBjb25zdCBvdmVycmlkZTsKLQotICAgIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJpT1MoKTsKKyAgICAKICAgICBSZXRhaW5QdHI8V2ViTWVkaWFTZXNzaW9uSGVscGVyPiBtX29i
amNPYnNlcnZlcjsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lv
cy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tCShyZXZpc2lvbiAx
ODEzOTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9u
TWFuYWdlcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTksNyArMTU5LDYgQEAgdm9pZCBNZWRpYVNl
c3Npb25NYW5hZ2VyaU9TOjpyZXNldFJlc3RyaQogICAgIGFkZFJlc3RyaWN0aW9uKE1lZGlhU2Vz
c2lvbjo6VmlkZW8sIEF1dG9QcmVsb2FkaW5nTm90UGVybWl0dGVkKTsKIH0KIAotI2lmIEVOQUJM
RShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiBib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6
Omhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZSgpCiB7CiAgICAgcmV0dXJuIFttX29iamNPYnNl
cnZlciBoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGVdOwpAQCAtMTg0LDggKzE4Myw3IEBAIHZv
aWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6Y29uZmlndXJlV2kKICAgICBlbHNlCiAgICAgICAg
IFttX29iamNPYnNlcnZlciBzdG9wTW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNdOwogfQotI2VuZGlm
Ci0gICAgCisKIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6c2Vzc2lvbldpbGxCZWdpblBs
YXliYWNrKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKIHsKICAgICBNZWRpYVNlc3Npb25NYW5hZ2Vy
OjpzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soc2Vzc2lvbik7CkBAIC0yMzMsNiArMjMxLDE0IEBA
IGJvb2wgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6c2Vzc2lvbkNhbkwKICAgICByZXR1cm4gc2Vz
c2lvbi5zdGF0ZSgpID09IE1lZGlhU2Vzc2lvbjo6UGxheWluZyB8fCAhc2Vzc2lvbi5pc0hpZGRl
bigpIHx8IHNlc3Npb24uZGlzcGxheVR5cGUoKSA9PSBNZWRpYVNlc3Npb246Ok9wdGltaXplZDsK
IH0KIAordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpleHRlcm5hbE91dHB1dERldmljZUF2
YWlsYWJsZURpZENoYW5nZSgpCit7CisgICAgVmVjdG9yPE1lZGlhU2Vzc2lvbio+IHNlc3Npb25M
aXN0ID0gc2Vzc2lvbnMoKTsKKyAgICBib29sIGhhdmVUYXJnZXRzID0gW21fb2JqY09ic2VydmVy
IGhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZV07CisgICAgZm9yIChhdXRvKiBzZXNzaW9uIDog
c2Vzc2lvbkxpc3QpCisgICAgICAgIHNlc3Npb24tPmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxh
YmxlRGlkQ2hhbmdlKGhhdmVUYXJnZXRzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiBAaW1wbGVtZW50YXRpb24gV2ViTWVkaWFTZXNzaW9uSGVscGVyCkBAIC00NDUsNyArNDUxLDcg
QEAgLSAodm9pZCl3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZQogICAgICAgICBpZiAo
IV9jYWxsYmFjaykKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBfY2FsbGJhY2stPndp
cmVsZXNzUm91dGVzQXZhaWxhYmxlQ2hhbmdlZCgpOworICAgICAgICBfY2FsbGJhY2stPmV4dGVy
bmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKCk7CiAgICAgfSk7CiB9CiBAZW5kCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5YmFja1RhcmdldC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBNZWRpYVBsYXliYWNrVGFyZ2V0X2gKKyNkZWZpbmUgTWVkaWFQbGF5YmFja1RhcmdldF9o
CisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorCisjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgorCisjaWYgUExBVEZPUk0oQ09DT0EpCitPQkpDX0NMQVNTIE5TS2V5ZWRB
cmNoaXZlcjsKK09CSkNfQ0xBU1MgTlNLZXllZFVuYXJjaGl2ZXI7CitPQkpDX0NMQVNTIEFWT3V0
cHV0RGV2aWNlUGlja2VyQ29udGV4dDsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQgeworcHVibGljOgorICAgIHZpcnR1YWwgfk1lZGlh
UGxheWJhY2tUYXJnZXQoKSB7IH0KKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFdFQkNPUkVf
RVhQT1JUIE1lZGlhUGxheWJhY2tUYXJnZXQoQVZPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0ICpj
b250ZXh0ID0gbmlsKSB7IG1fZGV2aWNlUGlja2VyQ29udGV4dCA9IGNvbnRleHQ7IH0KKworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5jb2RlKE5TS2V5ZWRBcmNoaXZlciAqKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBkZWNvZGUoTlNLZXllZFVuYXJjaGl2ZXIgKiwg
TWVkaWFQbGF5YmFja1RhcmdldCYpOworCisgICAgdm9pZCBzZXREZXZpY2VQaWNrZXJDb250ZXh0
KEFWT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dCAqY29udGV4dCkgeyBtX2RldmljZVBpY2tlckNv
bnRleHQgPSBjb250ZXh0OyB9CisgICAgQVZPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0ICpkZXZp
Y2VQaWNrZXJDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VQaWNrZXJDb250ZXh0Lmdl
dCgpOyB9CisjZW5kaWYKKworcHJvdGVjdGVkOgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJl
dGFpblB0cjxBVk91dHB1dERldmljZVBpY2tlckNvbnRleHQ+IG1fZGV2aWNlUGlja2VyQ29udGV4
dDsKKyNlbmRpZgorfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVu
dC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGll
bnRfaAorI2RlZmluZSBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50X2gKKworI2lmIEVO
QUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisKKyNpbmNsdWRlICJNZWRpYVBsYXliYWNr
VGFyZ2V0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFQbGF5YmFja1Rh
cmdldDsKKworY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB+TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCgpIHsgfQorCisg
ICAgdmlydHVhbCB2b2lkIGRpZENob29zZVBsYXliYWNrVGFyZ2V0KE1lZGlhUGxheWJhY2tUYXJn
ZXQmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxl
RGlkQ2hhbmdlKGJvb2wpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc1Bs
YXliYWNrVGFyZ2V0Um91dGVNb25pdG9yaW5nKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9v
bCByZXF1ZXN0ZWRQbGF5YmFja1RhcmdldFBpY2tlcigpIGNvbnN0ID0gMDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpCisKKyNlbmRpZiAvLyBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50X2gKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAJKHJldmlzaW9uIDE4MTM5NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODY3LDYgKzg2NywxMSBAQCB2b2lk
IE1lZGlhUGxheWVyOjpjdXJyZW50UGxheWJhY2tUYXJnZXRJCiB7CiAgICAgbV9jbGllbnQubWVk
aWFQbGF5ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZCh0aGlzKTsKIH0K
Kwordm9pZCBNZWRpYVBsYXllcjo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChjb25zdCBNZWRp
YVBsYXliYWNrVGFyZ2V0JiBkZXZpY2UpCit7CisgICAgbV9wcml2YXRlLT5zZXRXaXJlbGVzc1Bs
YXliYWNrVGFyZ2V0KGRldmljZSk7Cit9CiAjZW5kaWYKIAogZG91YmxlIE1lZGlhUGxheWVyOjpt
YXhGYXN0Rm9yd2FyZFJhdGUoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCShyZXZpc2lvbiAxODEzOTYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCSh3b3JraW5nIGNvcHkpCkBA
IC03MSw2ICs3MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9Tb3VyY2VQ
cm92aWRlcjsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOworY2xhc3MgTWVkaWFQbGF5
YmFja1RhcmdldDsKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogY2xhc3MgTWVkaWFTb3VyY2VQ
cml2YXRlQ2xpZW50OwogI2VuZGlmCkBAIC00NzYsNiArNDc3LDggQEAgcHVibGljOgogCiAgICAg
dm9pZCBjdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZCgpOwogICAgIHZvaWQg
cGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkKCk7CisKKyAgICB2b2lkIHNldFdpcmVs
ZXNzUGxheWJhY2tUYXJnZXQoY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldCYpOwogI2VuZGlmCiAK
ICAgICBkb3VibGUgbWluRmFzdFJldmVyc2VSYXRlKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAko
cmV2aXNpb24gMTgxMzk2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXJQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKK2NsYXNzIE1l
ZGlhUGxheWJhY2tUYXJnZXQ7CiBjbGFzcyBQbGF0Zm9ybVRleHRUcmFjazsKIAogY2xhc3MgTWVk
aWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsKQEAgLTE2Niw2ICsxNjcsOCBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIGJvb2wgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJh
Y2tEaXNhYmxlZChib29sKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRXaXJlbGVzc1BsYXli
YWNrVGFyZ2V0KGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXQmKSB7IH0KICNlbmRpZgogCiAjaWYg
VVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRNYWMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhUGxheWJhY2tUYXJnZXRNYWMubW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldE1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTWVkaWFQ
bGF5YmFja1RhcmdldC5oIgorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkg
JiYgIVBMQVRGT1JNKElPUykKKworI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWT3V0cHV0RGV2aWNl
UGlja2VyQ29udGV4dC5oPgorI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Lmg+
CisjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDxvYmpjL3J1bnRpbWUu
aD4KKwordHlwZWRlZiBBVk91dHB1dERldmljZVBpY2tlckNvbnRleHQgQVZPdXRwdXREZXZpY2VQ
aWNrZXJDb250ZXh0VHlwZTsKKworU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChBVkZvdW5k
YXRpb24pCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVk91dHB1dERldmljZVBpY2tl
ckNvbnRleHQpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIE5TU3RyaW5nICogY29u
c3QgZGV2aWNlQ29udGV4dEtleSA9IEAiZGV2aWNlQ29udGV4dCI7CisKK3ZvaWQgTWVkaWFQbGF5
YmFja1RhcmdldDo6ZW5jb2RlKE5TS2V5ZWRBcmNoaXZlciAqYXJjaGl2ZXIpIGNvbnN0Cit7Cisg
ICAgaWYgKFtnZXRBVk91dHB1dERldmljZVBpY2tlckNvbnRleHRDbGFzcygpIGNvbmZvcm1zVG9Q
cm90b2NvbDpAcHJvdG9jb2woTlNTZWN1cmVDb2RpbmcpXSkKKyAgICAgICAgW2FyY2hpdmVyIGVu
Y29kZU9iamVjdDptX2RldmljZVBpY2tlckNvbnRleHQuZ2V0KCkgZm9yS2V5OmRldmljZUNvbnRl
eHRLZXldOworfQorCitib29sIE1lZGlhUGxheWJhY2tUYXJnZXQ6OmRlY29kZShOU0tleWVkVW5h
cmNoaXZlciAqdW5hcmNoaXZlciwgTWVkaWFQbGF5YmFja1RhcmdldCYgcGxheWJhY2tUYXJnZXQp
Cit7CisgICAgaWYgKCFbZ2V0QVZPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0Q2xhc3MoKSBjb25m
b3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5nKV0pCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIEFWT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dCAqY29udGV4dCA9IG5p
bDsKKworICAgIEB0cnkgeworICAgICAgICBjb250ZXh0ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2Jq
ZWN0T2ZDbGFzczpnZXRBVk91dHB1dERldmljZVBpY2tlckNvbnRleHRDbGFzcygpIGZvcktleTpk
ZXZpY2VDb250ZXh0S2V5XTsKKyAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikg
eworICAgICAgICBMT0dfRVJST1IoIlRoZSB0YXJnZXQgcGlja2VyIGJlaW5nIGRlY29kZWQgaXMg
bm90IGEgQVZPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0LiIpOworICAgIH0KKworICAgIHBsYXli
YWNrVGFyZ2V0Lm1fZGV2aWNlUGlja2VyQ29udGV4dCA9IGNvbnRleHQ7CisKKyAgICByZXR1cm4g
Y29udGV4dDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLmgJKHJldmlzaW9uIDE4MTM5NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogT0JKQ19DTEFTUyBB
VkFzc2V0SW1hZ2VHZW5lcmF0b3I7CiBPQkpDX0NMQVNTIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdS
ZXF1ZXN0OwogT0JKQ19DTEFTUyBBVk1lZGlhU2VsZWN0aW9uR3JvdXA7CitPQkpDX0NMQVNTIEFW
T3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dDsKIE9CSkNfQ0xBU1MgQVZQbGF5ZXI7CiBPQkpDX0NM
QVNTIEFWUGxheWVySXRlbTsKIE9CSkNfQ0xBU1MgQVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dDsK
QEAgLTU5LDEzICs2MCwxNCBAQCB0eXBlZGVmIHN0cnVjdCBPcGFxdWVWVFBpeGVsVHJhbnNmZXJT
ZXNzCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyOwotY2xhc3MgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOwotY2xhc3MgSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakM7CiBjbGFzcyBBdWRpb1NvdXJjZVByb3ZpZGVyQVZG
T2JqQzsKIGNsYXNzIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzsKK2NsYXNzIEluYmFuZE1ldGFk
YXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjsKK2NsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZP
YmpDOworY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsKIGNsYXNzIE1lZGlhU2VsZWN0aW9uR3Jv
dXBBVkZPYmpDOwogY2xhc3MgVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOworY2xhc3MgV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyOwogCiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbiB7CiBwdWJsaWM6
CkBAIC0yNzQsNiArMjc2LDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0cmluZyB3aXJlbGVz
c1BsYXliYWNrVGFyZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgTWVkaWFQ
bGF5ZXI6OldpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlIHdpcmVsZXNzUGxheWJhY2tUYXJnZXRU
eXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHdpcmVsZXNzVmlkZW9QbGF5
YmFja0Rpc2FibGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisjaWYgIVBMQVRGT1JNKElPUykKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChjb25zdCBNZWRpYVBsYXliYWNr
VGFyZ2V0Jikgb3ZlcnJpZGU7CisjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgc2V0V2lyZWxlc3NW
aWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVEaXNh
YmxlRXh0ZXJuYWxQbGF5YmFjaygpOwogI2VuZGlmCkBAIC0zNDUsNiArMzUwLDEwIEBAIHByaXZh
dGU6CiAgICAgUmVmUHRyPEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRj4gbV9tZXRh
ZGF0YVRyYWNrOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQpCisgICAgUmV0YWluUHRyPEFWT3V0cHV0RGV2aWNlUGlja2VyQ29u
dGV4dD4gbV9vdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0OworI2VuZGlmCisKICAgICBtdXRhYmxl
IFJldGFpblB0cjxOU0FycmF5PiBtX2NhY2hlZFNlZWthYmxlUmFuZ2VzOwogICAgIG11dGFibGUg
UmV0YWluUHRyPE5TQXJyYXk+IG1fY2FjaGVkTG9hZGVkUmFuZ2VzOwogICAgIFJldGFpblB0cjxO
U0FycmF5PiBtX2NhY2hlZFRyYWNrczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkocmV2
aXNpb24gMTgxMzk2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogI2ltcG9ydCAiT3V0T2ZCYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRi5oIgogI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0
ICJNZWRpYVBsYXliYWNrVGFyZ2V0LmgiCiAjaW1wb3J0ICJNZWRpYVNlbGVjdGlvbkdyb3VwQVZG
T2JqQy5oIgogI2ltcG9ydCAiTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmgiCiAjaW1wb3J0ICJQbGF0
Zm9ybVRpbWVSYW5nZXMuaCIKQEAgLTEzNSw2ICsxMzYsMTQgQEAgQGludGVyZmFjZSBBVlVSTEFz
c2V0IChXZWJLaXRFeHRlbnNpb25zKQogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBO
U1VSTCAqcmVzb2x2ZWRVUkw7CiBAZW5kCiAKKyNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShX
SVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCit0eXBlZGVmIEFWT3V0cHV0RGV2aWNlUGlja2VyQ29u
dGV4dCBBVk91dHB1dERldmljZVBpY2tlckNvbnRleHRUeXBlOworCitAaW50ZXJmYWNlIEFWUGxh
eWVyIChXZWJLaXRFeHRlbnNpb25zKQorQHByb3BlcnR5IChub25hdG9taWMpIEFWT3V0cHV0RGV2
aWNlUGlja2VyQ29udGV4dCAqb3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dDsKK0BlbmQKKyNlbmRp
ZgorCiB0eXBlZGVmIEFWUGxheWVyIEFWUGxheWVyVHlwZTsKIHR5cGVkZWYgQVZQbGF5ZXJJdGVt
IEFWUGxheWVySXRlbVR5cGU7CiB0eXBlZGVmIEFWUGxheWVySXRlbUxlZ2libGVPdXRwdXQgQVZQ
bGF5ZXJJdGVtTGVnaWJsZU91dHB1dFR5cGU7CkBAIC01NDYsNiArNTU1LDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgogICAgICAgICBbbV9hdlBsYXllci5nZXQo
KSByZW1vdmVPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAicmF0ZSJd
OwogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgICAgIFttX2F2UGxh
eWVyLmdldCgpIHJlbW92ZU9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgpIGZvcktleVBhdGg6
QCJleHRlcm5hbFBsYXliYWNrQWN0aXZlIl07CisgICAgICAgIFttX2F2UGxheWVyLmdldCgpIHJl
bW92ZU9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJvdXRwdXREZXZp
Y2VQaWNrZXJDb250ZXh0Il07CiAjZW5kaWYKICAgICAgICAgbV9hdlBsYXllciA9IG5pbDsKICAg
ICB9CkBAIC05MjcsNiArOTM3LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzoKICAgICBbbV9hdlBsYXllci5nZXQoKSBhZGRPYnNlcnZlcjptX29iamNPYnNlcnZl
ci5nZXQoKSBmb3JLZXlQYXRoOkAicmF0ZSIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0
aW9uTmV3IGNvbnRleHQ6KHZvaWQgKilNZWRpYVBsYXllckFWRm91bmRhdGlvbk9ic2VydmF0aW9u
Q29udGV4dFBsYXllcl07CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAg
ICBbbV9hdlBsYXllci5nZXQoKSBhZGRPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JL
ZXlQYXRoOkAiZXh0ZXJuYWxQbGF5YmFja0FjdGl2ZSIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2
aW5nT3B0aW9uTmV3IGNvbnRleHQ6KHZvaWQgKilNZWRpYVBsYXllckFWRm91bmRhdGlvbk9ic2Vy
dmF0aW9uQ29udGV4dFBsYXllcl07CisgICAgW21fYXZQbGF5ZXIuZ2V0KCkgYWRkT2JzZXJ2ZXI6
bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIm91dHB1dERldmljZVBpY2tlckNvbnRl
eHQiIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Oih2b2lkICop
TWVkaWFQbGF5ZXJBVkZvdW5kYXRpb25PYnNlcnZhdGlvbkNvbnRleHRQbGF5ZXJdOworI2VuZGlm
CisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHVwZGF0ZURpc2Fi
bGVFeHRlcm5hbFBsYXliYWNrKCk7CiAjZW5kaWYKIApAQCAtOTM4LDYgKzk1MiwxMSBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAgICAgW21fYXZQbGF5ZXIuZ2V0
KCkgc2V0QWxsb3dzRXh0ZXJuYWxQbGF5YmFjazptX2FsbG93c1dpcmVsZXNzVmlkZW9QbGF5YmFj
a107CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQ
TEFURk9STShJT1MpCisgICAgaWYgKG1fb3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dCkKKyAgICAg
ICAgbV9hdlBsYXllci5nZXQoKS5vdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0ID0gbV9vdXRwdXRE
ZXZpY2VQaWNrZXJDb250ZXh0LmdldCgpOworI2VuZGlmCisKICAgICBpZiAocGxheWVyKCktPmNs
aWVudCgpLm1lZGlhUGxheWVySXNWaWRlbygpKQogICAgICAgICBjcmVhdGVBVlBsYXllckxheWVy
KCk7CiAKQEAgLTExMzQsOSArMTE1Myw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzoKICAgICAgICAgc3luY1RleHRUcmFja0JvdW5kcygpOwogICAgICAgICBbbV92
aWRlb0Z1bGxzY3JlZW5MYXllciBhZGRTdWJsYXllcjptX3RleHRUcmFja1JlcHJlc2VudGF0aW9u
TGF5ZXIuZ2V0KCldOwogICAgIH0KLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KQorCiAgICAgdXBkYXRlRGlzYWJsZUV4dGVybmFsUGxheWJhY2soKTsKLSNlbmRpZgogfQogCiB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVl
bkZyYW1lKEZsb2F0UmVjdCBmcmFtZSkKQEAgLTI2ODcsNyArMjcwNSwxMCBAQCBib29sIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAgICAgaWYgKCFtX2F2UGxheWVyKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBib29sIHdpcmVsZXNzVGFyZ2V0ID0gW21fYXZQbGF5
ZXIuZ2V0KCkgaXNFeHRlcm5hbFBsYXliYWNrQWN0aXZlXTsKKyAgICBib29sIHdpcmVsZXNzVGFy
Z2V0ID0gZmFsc2U7CisKKyAgICB3aXJlbGVzc1RhcmdldCA9IG1fYXZQbGF5ZXIuZ2V0KCkuZXh0
ZXJuYWxQbGF5YmFja0FjdGl2ZTsKKwogICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmlzQ3VycmVudFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MoJXApIC0g
cmV0dXJuaW5nICVzIiwgdGhpcywgYm9vbFN0cmluZyh3aXJlbGVzc1RhcmdldCkpOwogICAgIHJl
dHVybiB3aXJlbGVzc1RhcmdldDsKIH0KQEAgLTI2OTcsNiArMjcxOCw3IEBAIE1lZGlhUGxheWVy
OjpXaXJlbGVzc1BsYXliYWNrVGFyZ2V0VHlwZSAKICAgICBpZiAoIW1fYXZQbGF5ZXIpCiAgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllcjo6VGFyZ2V0VHlwZU5vbmU7CiAKKyNpZiBQTEFURk9STShJ
T1MpCiAgICAgc3dpdGNoICh3a0V4ZXJuYWxEZXZpY2VUeXBlRm9yUGxheWVyKG1fYXZQbGF5ZXIu
Z2V0KCkpKSB7CiAgICAgY2FzZSB3a0V4dGVybmFsUGxheWJhY2tUeXBlTm9uZToKICAgICAgICAg
cmV0dXJuIE1lZGlhUGxheWVyOjpUYXJnZXRUeXBlTm9uZTsKQEAgLTI3MDgsNiArMjczMCwxMCBA
QCBNZWRpYVBsYXllcjo6V2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGUgCiAKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlRhcmdldFR5cGVOb25lOwor
CisjZWxzZQorICAgIHJldHVybiBNZWRpYVBsYXllcjo6VGFyZ2V0VHlwZUFpclBsYXk7CisjZW5k
aWYKIH0KIAogU3RyaW5nIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndpcmVs
ZXNzUGxheWJhY2tUYXJnZXROYW1lKCkgY29uc3QKQEAgLTI3MjUsNyArMjc1MSw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKIHsKICAgICBpZiAoIW1fYXZQbGF5
ZXIpCiAgICAgICAgIHJldHVybiAhbV9hbGxvd3NXaXJlbGVzc1ZpZGVvUGxheWJhY2s7Ci0gICAg
CisKICAgICBtX2FsbG93c1dpcmVsZXNzVmlkZW9QbGF5YmFjayA9IFttX2F2UGxheWVyLmdldCgp
IGFsbG93c0V4dGVybmFsUGxheWJhY2tdOwogICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCVwKSAt
IHJldHVybmluZyAlcyIsIHRoaXMsIGJvb2xTdHJpbmcoIW1fYWxsb3dzV2lyZWxlc3NWaWRlb1Bs
YXliYWNrKSk7CiAKQEAgLTI3MzgsMTYgKzI3NjQsMzIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOgogICAgIG1fYWxsb3dzV2lyZWxlc3NWaWRlb1BsYXliYWNrID0g
IWRpc2FibGVkOwogICAgIGlmICghbV9hdlBsYXllcikKICAgICAgICAgcmV0dXJuOwotICAgIAor
CiAgICAgW21fYXZQbGF5ZXIuZ2V0KCkgc2V0QWxsb3dzRXh0ZXJuYWxQbGF5YmFjazohZGlzYWJs
ZWRdOwogfQogCisjaWYgIVBMQVRGT1JNKElPUykKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChjb25zdCBNZWRpYVBsYXli
YWNrVGFyZ2V0JiB0YXJnZXQpCit7CisgICAgbV9vdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0ID0g
dGFyZ2V0LmRldmljZVBpY2tlckNvbnRleHQoKTsKKworICAgIExPRyhNZWRpYSwgIk1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoJXAp
IC0gdGFyZ2V0ID0gJXAiLCB0aGlzLCBtX291dHB1dERldmljZVBpY2tlckNvbnRleHQuZ2V0KCkp
OworCisgICAgaWYgKCFtX2F2UGxheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2F2UGxh
eWVyLmdldCgpLm91dHB1dERldmljZVBpY2tlckNvbnRleHQgPSBtX291dHB1dERldmljZVBpY2tl
ckNvbnRleHQuZ2V0KCk7Cit9CisjZW5kaWYKKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjp1cGRhdGVEaXNhYmxlRXh0ZXJuYWxQbGF5YmFjaygpCiB7CiAgICAgaWYg
KCFtX2F2UGxheWVyKQogICAgICAgICByZXR1cm47CiAKKyNpZiBQTEFURk9STShJT1MpCiAgICAg
W21fYXZQbGF5ZXIgc2V0VXNlc0V4dGVybmFsUGxheWJhY2tXaGlsZUV4dGVybmFsU2NyZWVuSXNB
Y3RpdmU6bV92aWRlb0Z1bGxzY3JlZW5MYXllciAhPSBuaWxdOworI2VuZGlmCiB9CiAjZW5kaWYK
IApAQCAtMzE2OSw2ICszMjExLDggQEAgLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtl
eVBhdGggbwogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgICAgIGVs
c2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImV4dGVybmFsUGxheWJhY2tBY3RpdmUi
XSkKICAgICAgICAgICAgIGZ1bmN0aW9uID0gV1RGOjpiaW5kKCZNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpwbGF5YmFja1RhcmdldElzV2lyZWxlc3NEaWRDaGFuZ2UsIG1fY2Fs
bGJhY2spOworICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJvdXRw
dXREZXZpY2VQaWNrZXJDb250ZXh0Il0pCisgICAgICAgICAgICBmdW5jdGlvbiA9IFdURjo6Ymlu
ZCgmTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxheWJhY2tUYXJnZXRJc1dp
cmVsZXNzRGlkQ2hhbmdlLCBtX2NhbGxiYWNrKTsKICNlbmRpZgogICAgIH0KICAgICAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAkocmV2aXNpb24g
MTgxMzk2KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTcsNiArOTcsNyBAQCBJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6
OkJhY2t1cChTZXR0aW5nCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICAsIG1fdG91Y2hF
dmVudEVtdWxhdGlvbkVuYWJsZWQoc2V0dGluZ3MuaXNUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxl
ZCgpKQogI2VuZGlmCisgICAgLCBtX21lZGlhUGxheWJhY2tBbGxvd3NBaXJQbGF5KHNldHRpbmdz
Lm1lZGlhUGxheWJhY2tBbGxvd3NBaXJQbGF5KCkpCiB7CiB9CiAKQEAgLTIwMSw2ICsyMDIsNyBA
QCBJbnRlcm5hbFNldHRpbmdzOjpJbnRlcm5hbFNldHRpbmdzKFBhZ2UqCiAgICAgLCBtX3BhZ2Uo
cGFnZSkKICAgICAsIG1fYmFja3VwKHBhZ2UtPnNldHRpbmdzKCkpCiB7CisgICAgcGFnZS0+c2V0
dGluZ3MoKS5zZXRNZWRpYVBsYXliYWNrQWxsb3dzQWlyUGxheShmYWxzZSk7CiB9CiAKIHZvaWQg
SW50ZXJuYWxTZXR0aW5nczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaAkocmV2aXNpb24gMTgxMzk2KQorKysg
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTk1LDYgKzk1LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAg
ICAgIGJvb2wgbV90b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZDsKICNlbmRpZgorICAgICAgICBi
b29sIG1fbWVkaWFQbGF5YmFja0FsbG93c0FpclBsYXk7CiAgICAgfTsKIAogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEludGVybmFsU2V0dGluZ3M+IGNyZWF0ZShQYWdlKiBwYWdlKQpJbmRleDogU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTgxMzk2KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNzIgQEAKKzIwMTUtMDMtMTEgIEVyaWMgQ2FybHNvbiAgPGVy
aWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01hY10gVXBkYXRlIEFpclBsYXkgaGFu
ZGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
MjU0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisgICAgICAgICogU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9tYWMvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzTWFjLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPEFWUGxheWJh
Y2tUYXJnZXQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPEFWUGxheWJh
Y2tUYXJnZXQ+OjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHk6Oldl
YkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFWUGxh
eWJhY2tUYXJnZXRQaWNrZXJQcm94eTo6fldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eTo6c2hvd1Bs
YXliYWNrVGFyZ2V0UGlja2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFja1Rhcmdl
dFBpY2tlclByb3h5OjpzdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHk6OnN0b3BNb25pdG9yaW5n
UGxheWJhY2tUYXJnZXRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQVZQbGF5YmFja1Rhcmdl
dFBpY2tlclByb3h5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBVlBsYXliYWNrVGFy
Z2V0UGlja2VyUHJveHk6OkNsaWVudDo6fkNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGV2aWNlUGlj
a2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNob3dQbGF5YmFja1Rh
cmdldFBpY2tlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3RhcnRpbmdNb25p
dG9yaW5nUGxheWJhY2tUYXJnZXRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpz
dG9wTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBs
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZVBsYXliYWNrVGFyZ2V0UGlja2VyKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYy5o
OiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkFWUGxheWJhY2tUYXJnZXRQaWNr
ZXJQcm94eU1hYy5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkFWUGxheWJhY2tUYXJn
ZXRQaWNrZXJQcm94eU1hYzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFj
a1RhcmdldFBpY2tlclByb3h5TWFjOjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6On5X
ZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMpOgorICAgICAgICAoV2ViS2l0OjpXZWJB
VlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6Om91dHB1dGVEZXZpY2VBdmFpbGFiaWxpdHlD
aGFuZ2VkVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkFWUGxheWJhY2tUYXJnZXRQ
aWNrZXJQcm94eU1hYzo6YXZhaWxhYmxlRGV2aWNlc0RpZENoYW5nZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYzo6ZGV2aWNlUGlja2VyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjOjpzaG93UGxh
eWJhY2tUYXJnZXRQaWNrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJBVlBsYXliYWNrVGFyZ2V0
UGlja2VyUHJveHlNYWM6OmN1cnJlbnREZXZpY2VEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6OnN0YXJ0aW5nTW9uaXRvcmluZ1Bs
YXliYWNrVGFyZ2V0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkFWUGxheWJhY2tUYXJnZXRQaWNr
ZXJQcm94eU1hYzo6c3RvcE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMpOgorICAgICAgICAoLVtX
ZWJBVk91dHB1dERldmljZVBpY2tlck1lbnVDb250cm9sbGVySGVscGVyIGluaXRXaXRoQ2FsbGJh
Y2s6XSk6CisgICAgICAgICgtW1dlYkFWT3V0cHV0RGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXJI
ZWxwZXIgY2xlYXJDYWxsYmFja10pOgorICAgICAgICAoLVtXZWJBVk91dHB1dERldmljZVBpY2tl
ck1lbnVDb250cm9sbGVySGVscGVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hh
bmdlOmNvbnRleHQ6XSk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQVZQbGF5YmFja1Rh
cmdldFBpY2tlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBVlBsYXliYWNrVGFy
Z2V0UGlja2VyOjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlcjo6c2hvd1BsYXliYWNrRGV2aWNlUGlja2VyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlcjo6Y29uZmlndXJlV2lyZUxl
c3NUYXJnZXRNb25pdG9yaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFja1Rhcmdl
dFBpY2tlcjo6YWRkQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFja1Rhcmdl
dFBpY2tlcjo6cmVtb3ZlQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFja1Rh
cmdldFBpY2tlcjo6ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyOjpwbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eURpZENo
YW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnNob3dQbGF5YmFja1Rh
cmdldFBpY2tlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6c3RhcnRpbmdN
b25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xp
ZW50OjpzdG9wTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxheWJhY2tUYXJnZXRTZWxlY3RlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlk
Q2hhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmlu
OgorCiAyMDE1LTAzLTExICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1RLXSBEbyBub3QgbG9vayBmb3IgY2hpbGQgcHJvY2Vzc2VzIGluIHRo
ZSBVSSBwcm9jZXNzIGJpbmFyeSBwYXRoCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCShyZXZpc2lvbiAxODEzOTYpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEx
NSw2ICsxMTUsMTIgQEAgY2xhc3MgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOwogfQogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorbmFtZXNwYWNlIFdl
YkNvcmUgeworY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsKK30KKyNlbmRpZgorCiBuYW1lc3Bh
Y2UgSVBDIHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpBZmZp
bmVUcmFuc2Zvcm0+IHsKQEAgLTQ1NCw2ICs0NjAsMTMgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOgogICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29k
ZXImLCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YSYpOwogfTsKIAorI2lmIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQ+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJn
dW1lbnRFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldCYpOworICAg
IHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImLCBXZWJDb3JlOjpNZWRpYVBsYXli
YWNrVGFyZ2V0Jik7Cit9OworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIElQQwogCiAjZW5kaWYg
Ly8gV2ViQ29yZUFyZ3VtZW50Q29kZXJzX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9E
b3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCShyZXZpc2lvbiAxODE0MDApCisr
KyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtNjIsNyArNjIsMTAgQEAgdm9pZCBEb3dubG9hZDo6c3RhcnQoKQogICAg
IEFTU0VSVCghbV9kZWxlZ2F0ZSk7CiAKICAgICBtX2RlbGVnYXRlID0gYWRvcHROUyhbW1dLRG93
bmxvYWRBc0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aERvd25sb2FkOnRoaXNdKTsKKyNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAi
LVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKICAgICBtX25zVVJMRG93bmxvYWQgPSBhZG9wdE5T
KFtbTlNVUkxEb3dubG9hZCBhbGxvY10gaW5pdFdpdGhSZXF1ZXN0Om1fcmVxdWVzdC5uc1VSTFJl
cXVlc3QoVXBkYXRlSFRUUEJvZHkpIGRlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0KCldKTsKKyNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKIAogICAgIC8vIEZJWE1FOiBBbGxvdyB0aGlzIHRvIGJl
IGNoYW5nZWQgYnkgdGhlIGNsaWVudC4KICAgICBbbV9uc1VSTERvd25sb2FkIHNldERlbGV0ZXNG
aWxlVXBvbkZhaWx1cmU6Tk9dOwpAQCAtOTYsNyArOTksMTAgQEAgdm9pZCBEb3dubG9hZDo6cmVz
dW1lKGNvbnN0IElQQzo6RGF0YVJlZgogICAgIG1fZGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tEb3du
bG9hZEFzRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRG93bmxvYWQ6dGhpc10pOwogCiAgICAgYXV0
byBuc0RhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOnJlc3VtZURh
dGEuZGF0YSgpIGxlbmd0aDpyZXN1bWVEYXRhLnNpemUoKV0pOworI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0
ZWQtZGVjbGFyYXRpb25zIgogICAgIG1fbnNVUkxEb3dubG9hZCA9IGFkb3B0TlMoW1tOU1VSTERv
d25sb2FkIGFsbG9jXSBpbml0V2l0aFJlc3VtZURhdGE6bnNEYXRhLmdldCgpIGRlbGVnYXRlOm1f
ZGVsZWdhdGUuZ2V0KCkgcGF0aDpwYXRoXSk7CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9w
IAogCiAgICAgbV9yZXF1ZXN0ID0gW21fbnNVUkxEb3dubG9hZCByZXF1ZXN0XTsKIApJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNNYWMubW0JKHJldmlzaW9uIDE4MTM5NikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMSArMzgs
MTcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUHJvdGVjdGlvblNwYWNlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+
CisjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDxvYmpjL3J1bnRpbWUu
aD4KIAogI2lmIFVTRShDRk5FVFdPUkspCiAjaW1wb3J0IDxDRk5ldHdvcmsvQ0ZVUkxSZXF1ZXN0
Lmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisjaW1w
b3J0IDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXQuaD4KKyNlbmRpZgorCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIElQQyB7CkBAIC00MzIsNCArNDM4LDMxIEBAIGJv
b2wgQXJndW1lbnRDb2RlcjxDb250ZW50RmlsdGVyVW5ibG9ja0gKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCit2b2lkIEFyZ3VtZW50
Q29kZXI8TWVkaWFQbGF5YmFja1RhcmdldD46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXQmIHRhcmdldCkKK3sKKyAgICBSZXRhaW5QdHI8
TlNNdXRhYmxlRGF0YT4gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0
XSk7CisgICAgUmV0YWluUHRyPE5TS2V5ZWRBcmNoaXZlcj4gYXJjaGl2ZXIgPSBhZG9wdE5TKFtb
TlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yV3JpdGluZ1dpdGhNdXRhYmxlRGF0YTpkYXRh
LmdldCgpXSk7CisgICAgW2FyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107Cisg
ICAgdGFyZ2V0LmVuY29kZShhcmNoaXZlci5nZXQoKSk7CisgICAgW2FyY2hpdmVyIGZpbmlzaEVu
Y29kaW5nXTsKKyAgICBJUEM6OmVuY29kZShlbmNvZGVyLCByZWludGVycHJldF9jYXN0PENGRGF0
YVJlZj4oZGF0YS5nZXQoKSkpOworfQorCitib29sIEFyZ3VtZW50Q29kZXI8TWVkaWFQbGF5YmFj
a1RhcmdldD46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIE1lZGlhUGxheWJhY2tU
YXJnZXQmIHRhcmdldCkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOworICAgIGlm
ICghSVBDOjpkZWNvZGUoZGVjb2RlciwgZGF0YSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIFJldGFpblB0cjxOU0tleWVkVW5hcmNoaXZlcj4gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tO
U0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdXaXRoRGF0YTooTlNEYXRhICop
ZGF0YS5nZXQoKV0pOworICAgIFt1bmFyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllF
U107CisgICAgaWYgKCFNZWRpYVBsYXliYWNrVGFyZ2V0OjpkZWNvZGUodW5hcmNoaXZlci5nZXQo
KSwgdGFyZ2V0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIFt1bmFyY2hpdmVy
IGZpbmlzaERlY29kaW5nXTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorCiB9IC8vIG5h
bWVzcGFjZSBJUEMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAkocmV2
aXNpb24gMTgxMzk2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRv
ckNsaWVudC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKKyNpZiBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKQorI2luY2x1ZGUgIldlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJQcm94eS5oIgorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJQbHVn
aW5Db21wbGV4VGV4dElucHV0U3RhdGUuaCIKIApAQCAtMzEzLDYgKzMxNywxMSBAQCBwdWJsaWM6
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3JtQWN0aW9uTWVu
dUhpdFRlc3QoY29uc3QgQWN0aW9uTWVudUhpdFRlc3RSZXN1bHQmLCBib29sIGZvckltbWVkaWF0
ZUFjdGlvbiwgQVBJOjpPYmplY3QqKSA9IDA7CiAjZW5kaWYKKworI2lmIEVOQUJMRShXSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisgICAgdmlydHVhbCBzdGQ6OnVu
aXF1ZV9wdHI8V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5PiBjcmVhdGVQbGF5YmFj
a1RhcmdldFBpY2tlcihXZWJQYWdlUHJveHkqKSA9IDA7CisjZW5kaWYKKwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5LmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlclByb3h5LmgiCisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5
OjpXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkoQ2xpZW50JiBjbGllbnQpCisgICAg
OiBtX2NsaWVudCgmY2xpZW50KQoreworfQorCitXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
UHJveHk6On5XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkoKQoreworICAgIG1fY2xp
ZW50ID0gMDsKK30KKwordm9pZCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHk6OnNo
b3dQbGF5YmFja1RhcmdldFBpY2tlcihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBib29sKQor
eworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybjsKK30KKwordm9pZCBXZWJN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHk6OnN0YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNr
VGFyZ2V0cygpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuOworfQor
Cit2b2lkIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eTo6c3RvcE1vbml0b3JpbmdQ
bGF5YmFja1RhcmdldHMoKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
bjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlfaAorI2RlZmluZSBX
ZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlfaAorCisjaWYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBGbG9hdFJlY3Q7
CitjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
UHJveHkgeworcHVibGljOgorICAgIGNsYXNzIENsaWVudCB7CisgICAgcHJvdGVjdGVkOgorICAg
ICAgICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0KKworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVh
bCB2b2lkIGRpZENob29zZVBsYXliYWNrVGFyZ2V0KGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJh
Y2tUYXJnZXQmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBleHRlcm5hbE91dHB1dERldmlj
ZUF2YWlsYWJsZURpZENoYW5nZShib29sKSA9IDA7CisKKyAgICAgICAgdm9pZCBpbnZhbGlkYXRl
KCk7CisgICAgfTsKKworICAgIHZpcnR1YWwgfldlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQ
cm94eSgpOworCisgICAgdmlydHVhbCB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRpbmdN
b25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCk7CisgICAgdmlydHVhbCB2b2lkIHN0b3BNb25pdG9y
aW5nUGxheWJhY2tUYXJnZXRzKCk7CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBXZWJNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkoQ2xpZW50Jik7CisKKyAgICBDbGllbnQqIG1fY2xp
ZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorCisjZW5kaWYgLy8gV2ViTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlclByb3h5X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCShyZXZpc2lvbiAxODEzOTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTU5Miw0ICs1NTkyLDQ3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRTaG91bGREaXNwYXRjaEZha2UKICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldFNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyhz
aG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMpLCBtX3BhZ2VJRCk7CiB9CiAKKyNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQorCitXZWJN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkmIFdlYlBhZ2VQcm94eTo6ZGV2aWNlUGlja2Vy
UHJveHkoKQoreworICAgIGlmICghbV9wbGF5YmFja1RhcmdldFBpY2tlcikKKyAgICAgICAgbV9w
bGF5YmFja1RhcmdldFBpY2tlciA9IG1fcGFnZUNsaWVudC5jcmVhdGVQbGF5YmFja1RhcmdldFBp
Y2tlcih0aGlzKTsKKworICAgIHJldHVybiAqbV9wbGF5YmFja1RhcmdldFBpY2tlci5nZXQoKTsK
K30KKwordm9pZCBXZWJQYWdlUHJveHk6OnNob3dQbGF5YmFja1RhcmdldFBpY2tlcihjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmIHJlY3QsIGJvb2wgaGFzVmlkZW8pCit7CisgICAgZGV2aWNlUGlj
a2VyUHJveHkoKS5zaG93UGxheWJhY2tUYXJnZXRQaWNrZXIobV9wYWdlQ2xpZW50LnJvb3RWaWV3
VG9TY3JlZW4oSW50UmVjdChyZWN0KSksIGhhc1ZpZGVvKTsKK30KKwordm9pZCBXZWJQYWdlUHJv
eHk6OnN0YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpCit7CisgICAgZGV2aWNlUGlj
a2VyUHJveHkoKS5zdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKK30KKwordm9p
ZCBXZWJQYWdlUHJveHk6OnN0b3BNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkKK3sKKyAgICBk
ZXZpY2VQaWNrZXJQcm94eSgpLnN0b3BNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCk7Cit9CisK
K3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VQbGF5YmFja1RhcmdldChjb25zdCBXZWJDb3Jl
OjpNZWRpYVBsYXliYWNrVGFyZ2V0JiB0YXJnZXQpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
UGxheWJhY2tUYXJnZXRTZWxlY3RlZCh0YXJnZXQpLCBtX3BhZ2VJRCk7Cit9CisKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShib29sIGF2
YWlsYWJsZSkKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQbGF5YmFja1RhcmdldEF2YWlsYWJp
bGl0eURpZENoYW5nZShhdmFpbGFibGUpLCBtX3BhZ2VJRCk7Cit9CisKKyNlbmRpZgorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgJKHJldmlzaW9uIDE4MTM5NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSwxMCBAQAogI2luY2x1ZGUg
IkFyZ3VtZW50Q29kZXJzR3RrLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisjaW5jbHVkZSAiV2ViTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlclByb3h5LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBD
b250ZXh0TWVudUNsaWVudDsKIGNsYXNzIEZpbmRDbGllbnQ7CkBAIC0yNTgsNiArMjYyLDkgQEAg
Y2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SQogI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQogICAgICwgcHVibGljIFdlYkNvbG9yUGlja2VyOjpDbGllbnQKICNlbmRp
ZgorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1Mp
CisgICAgLCBwdWJsaWMgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5OjpDbGllbnQK
KyNlbmRpZgogICAgICwgcHVibGljIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQKICAgICAsIHB1
YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgICwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRl
ciB7CkBAIC05OTksNiArMTAwNiwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2dEaWFnbm9zdGlj
TWVzc2FnZVdpdGhSZXN1bHQoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRl
c2NyaXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIGJvb2wgc2hvdWxkU2FtcGxlKTsKICAgICB2b2lk
IGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29u
c3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBzaG91bGRT
YW1wbGUpOwogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRG
T1JNKElPUykKKyAgICBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkmIGRldmljZVBp
Y2tlclByb3h5KCk7CisgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiwgYm9vbCBoYXNWaWRlbyk7CisgICAgdm9pZCBzdGFydGluZ01vbml0
b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKKyAgICB2b2lkIHN0b3BNb25pdG9yaW5nUGxheWJhY2tU
YXJnZXRzKCk7CisKKyAgICAvLyBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHk6OkNs
aWVudAorICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VQbGF5YmFja1RhcmdldChjb25zdCBXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGV4
dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGJvb2wpIG92ZXJyaWRlOworI2Vu
ZGlmCisKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNz
UHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDb25maWd1cmF0aW9uJik7CiAg
ICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKQEAgLTE2NjIsNiArMTY4MCwxMCBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV92aWV3U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHk7CiAg
ICAgVmVjdG9yPHVpbnQ2NF90PiBtX25leHRWaWV3U3RhdGVDaGFuZ2VDYWxsYmFja3M7CiAKKyNp
ZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQorICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHk+IG1fcGxh
eWJhY2tUYXJnZXRQaWNrZXI7CisjZW5kaWYKKwogICAgIGJvb2wgbV9pc1BsYXlpbmdBdWRpbzsK
IH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTgxMzk2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNDIzLDQgKzQy
MywxMCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICBEaWRQZXJmb3JtQWN0aW9uTWVudUhpdFRlc3Qoc3RydWN0IFdlYktpdDo6QWN0aW9uTWVudUhp
dFRlc3RSZXN1bHQgcmVzdWx0LCBib29sIGZvckltbWVkaWF0ZUFjdGlvbiwgV2ViS2l0OjpVc2Vy
RGF0YSB1c2VyRGF0YSkKICNlbmRpZgorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVCkgJiYgIVBMQVRGT1JNKElPUykKKyAgICBTaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoV2Vi
Q29yZTo6RmxvYXRSZWN0IHBpY2tlckxvY2F0aW9uLCBib29sIGhhc1ZpZGVvKQorICAgIFN0YXJ0
aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpCisgICAgU3RvcE1vbml0b3JpbmdQbGF5YmFj
a1RhcmdldHMoKQorI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbC5oCShyZXZpc2lvbiAxODEzOTYpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNCw2
ICsyMDQsMTAgQEAgcHJpdmF0ZToKICNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPiBt
X2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjsKICNlbmRpZgorCisjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxXZWJNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHk+IGNyZWF0ZVBsYXliYWNrVGFyZ2V0UGlja2VyKFdl
YlBhZ2VQcm94eSopIG92ZXJyaWRlOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bC5tbQkocmV2aXNpb24gMTgxMzk2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbC5tbQkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsMTAgQEAKICNpbXBv
cnQgPEFwcEtpdC9OU1RleHRBbHRlcm5hdGl2ZXMuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyNpbmNsdWRlICJXZWJNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyUHJveHlNYWMuaCIKKyNlbmRpZgorCiBAaW50ZXJmYWNlIE5TQXBwbGljYXRpb24gKFdl
Yk5TQXBwbGljYXRpb25EZXRhaWxzKQogLSAoTlNDdXJzb3IgKilfY3Vyc29yUmVjdEN1cnNvcjsK
IEBlbmQKQEAgLTc4OCw2ICs3OTIsMTIgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2hvd1BsYXRm
b3JtQ29udGV4dAogICAgIFttZW51IHBvcFVwTWVudVBvc2l0aW9uaW5nSXRlbTpuaWwgYXRMb2Nh
dGlvbjpsb2NhdGlvbiBpblZpZXc6bV93a1ZpZXddOwogfQogCisjaWYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkKK3N0ZDo6dW5pcXVlX3B0cjxXZWJNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVQbGF5YmFja1RhcmdldFBpY2tlcihX
ZWJQYWdlUHJveHkqIHBhZ2UpCit7CisgICAgcmV0dXJuIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJQcm94eU1hYzo6Y3JlYXRlKCpwYWdlKTsKK30KKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYy5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyUHJveHlNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlN
YWNfaAorI2RlZmluZSBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWNfaAorCisj
aWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykKKwor
I2ltcG9ydCAiV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5LmgiCisjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQ7CitjbGFzcyBGbG9hdFJlY3Q7Cit9
CisKK09CSkNfQ0xBU1MgQVZPdXRwdXREZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlcjsKK09CSkNf
Q0xBU1MgV2ViQVZPdXRwdXREZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlckhlbHBlcjsKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94
eU1hYyA6IHB1YmxpYyBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkgeworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYyk7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5
TWFjKCk7CisKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYk1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJQcm94eU1hYz4gY3JlYXRlKFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94
eTo6Q2xpZW50Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2Vy
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGJvb2wpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBzdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgc3RvcE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKSBvdmVycmlkZTsKKyAg
ICAKKyAgICB2b2lkIGF2YWlsYWJsZURldmljZXNEaWRDaGFuZ2UoKTsKKyAgICB2b2lkIGN1cnJl
bnREZXZpY2VEaWRDaGFuZ2UoKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBXZWJNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMoV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclBy
b3h5OjpDbGllbnQmKTsKKworICAgIEFWT3V0cHV0RGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXIg
KmRldmljZVBpY2tlcigpOworICAgIHZvaWQgb3V0cHV0ZURldmljZUF2YWlsYWJpbGl0eUNoYW5n
ZWRUaW1lckZpcmVkKCk7CisKKyAgICBSZXRhaW5QdHI8QVZPdXRwdXREZXZpY2VQaWNrZXJNZW51
Q29udHJvbGxlcj4gbV9kZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlcjsKKyAgICBSZXRhaW5QdHI8
V2ViQVZPdXRwdXREZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlckhlbHBlcj4gbV9kZXZpY2VQaWNr
ZXJNZW51Q29udHJvbGxlckRlbGVnYXRlOworICAgIFJ1bkxvb3A6OlRpbWVyPFdlYk1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYz4gbV9kZXZpY2VDaGFuZ2VUaW1lcjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkKKworI2VuZGlmIC8vIFdlYkNvbnRleHRNZW51UHJveHlNYWNfaApJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJv
eHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMubW0JKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94
eU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclBy
b3h5TWFjLmgiCisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExB
VEZPUk0oSU9TKQorCisjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZPdXRwdXREZXZpY2VQaWNrZXJD
b250ZXh0Lmg+CisjaW1wb3J0IDxBVktpdC9BVk91dHB1dERldmljZVBpY2tlck1lbnVDb250cm9s
bGVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgorI2ltcG9ydCA8V2ViQ29yZS9N
ZWRpYVBsYXliYWNrVGFyZ2V0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+Cisj
aW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CisKK3R5
cGVkZWYgQVZPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0IEFWT3V0cHV0RGV2aWNlUGlja2VyQ29u
dGV4dFR5cGU7Cit0eXBlZGVmIEFWT3V0cHV0RGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXIgQVZP
dXRwdXREZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlclR5cGU7CisKK1NPRlRfTElOS19GUkFNRVdP
UktfT1BUSU9OQUwoQVZGb3VuZGF0aW9uKQorU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChB
VktpdCkKKworU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZPdXRwdXREZXZpY2VQaWNr
ZXJDb250ZXh0KQorU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVk91dHB1dERldmljZVBpY2tlck1l
bnVDb250cm9sbGVyKQorU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVk91dHB1dERldmljZVBpY2tl
ckRlbGVnYXRlKQorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitAaW50ZXJmYWNlIFdlYkFW
T3V0cHV0RGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXJIZWxwZXIgOiBOU09iamVjdCB7CisgICAg
V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjKiBtX2NhbGxiYWNrOworfQorCist
IChpZClpbml0V2l0aENhbGxiYWNrOihXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlN
YWMqKWNhbGxiYWNrOworLSAodm9pZCljbGVhckNhbGxiYWNrOworLSAodm9pZClvYnNlcnZlVmFs
dWVGb3JLZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlv
bmFyeSAqKWNoYW5nZSBjb250ZXh0Oih2b2lkICopY29udGV4dDsKK0BlbmQKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3N0ZDo6dW5pcXVlX3B0cjxXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
UHJveHlNYWM+IFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYzo6Y3JlYXRlKFdl
Yk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eTo6Q2xpZW50JiBjbGllbnQpCit7CisgICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlN
YWM+KG5ldyBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMoY2xpZW50KSk7Cit9
CisKK1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYzo6V2ViTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlclByb3h5TWFjKFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eTo6
Q2xpZW50JiBjbGllbnQpCisgICAgOiBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHko
Y2xpZW50KQorICAgICwgbV9kZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlckRlbGVnYXRlKGFkb3B0
TlMoW1tXZWJBVk91dHB1dERldmljZVBpY2tlck1lbnVDb250cm9sbGVySGVscGVyIGFsbG9jXSBp
bml0V2l0aENhbGxiYWNrOnRoaXNdKSkKKyAgICAsIG1fZGV2aWNlQ2hhbmdlVGltZXIoUnVuTG9v
cDo6bWFpbigpLCB0aGlzLCAmV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjOjpv
dXRwdXRlRGV2aWNlQXZhaWxhYmlsaXR5Q2hhbmdlZFRpbWVyRmlyZWQpCit7Cit9CisKK1dlYk1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYzo6fldlYk1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJQcm94eU1hYygpCit7CisgICAgbV9kZXZpY2VDaGFuZ2VUaW1lci5zdG9wKCk7CisgICAg
W21fZGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXJEZWxlZ2F0ZSBjbGVhckNhbGxiYWNrXTsKKwor
ICAgIGlmIChtX2RldmljZVBpY2tlck1lbnVDb250cm9sbGVyKSB7CisgICAgICAgIFttX2Rldmlj
ZVBpY2tlck1lbnVDb250cm9sbGVyLmdldCgpIHJlbW92ZU9ic2VydmVyOm1fZGV2aWNlUGlja2Vy
TWVudUNvbnRyb2xsZXJEZWxlZ2F0ZS5nZXQoKSBmb3JLZXlQYXRoOkAiZXh0ZXJuYWxPdXRwdXRE
ZXZpY2VBdmFpbGFibGUiXTsKKyAgICAgICAgW21fZGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXIu
Z2V0KCkgcmVtb3ZlT2JzZXJ2ZXI6bV9kZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlckRlbGVnYXRl
LmdldCgpIGZvcktleVBhdGg6QCJleHRlcm5hbE91dHB1dERldmljZVBpY2tlZCJdOworICAgICAg
ICBtX2RldmljZVBpY2tlck1lbnVDb250cm9sbGVyID0gbmlsOworICAgIH0KK30KKwordm9pZCBX
ZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6Om91dHB1dGVEZXZpY2VBdmFpbGFi
aWxpdHlDaGFuZ2VkVGltZXJGaXJlZCgpCit7CisgICAgaWYgKCFtX2RldmljZVBpY2tlck1lbnVD
b250cm9sbGVyIHx8ICFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQt
PmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGRldmljZVBpY2tlcigpLmV4
dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKTsKK30KKwordm9pZCBXZWJNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyUHJveHlNYWM6OmF2YWlsYWJsZURldmljZXNEaWRDaGFuZ2UoKQoreworICAg
IGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZGV2aWNlQ2hhbmdlVGlt
ZXIuc3RvcCgpOworICAgIG1fZGV2aWNlQ2hhbmdlVGltZXIuc3RhcnRPbmVTaG90KDApOworfQor
CitBVk91dHB1dERldmljZVBpY2tlck1lbnVDb250cm9sbGVyVHlwZSAqV2ViTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlclByb3h5TWFjOjpkZXZpY2VQaWNrZXIoKQoreworICAgIGlmICghbV9kZXZp
Y2VQaWNrZXJNZW51Q29udHJvbGxlcikgeworICAgICAgICBSZXRhaW5QdHI8QVZPdXRwdXREZXZp
Y2VQaWNrZXJDb250ZXh0VHlwZT4gY29udGV4dCA9IGFkb3B0TlMoW1tnZXRBVk91dHB1dERldmlj
ZVBpY2tlckNvbnRleHRDbGFzcygpIGFsbG9jXSBpbml0XSk7CisgICAgICAgIG1fZGV2aWNlUGlj
a2VyTWVudUNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbZ2V0QVZPdXRwdXREZXZpY2VQaWNrZXJNZW51
Q29udHJvbGxlckNsYXNzKCkgYWxsb2NdIGluaXRXaXRoT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4
dDpjb250ZXh0LmdldCgpXSk7CisKKyAgICAgICAgW21fZGV2aWNlUGlja2VyTWVudUNvbnRyb2xs
ZXIuZ2V0KCkgYWRkT2JzZXJ2ZXI6bV9kZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlckRlbGVnYXRl
LmdldCgpIGZvcktleVBhdGg6QCJleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSIgb3B0aW9u
czpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6bnVsbHB0cl07CisgICAgICAg
IFttX2RldmljZVBpY2tlck1lbnVDb250cm9sbGVyLmdldCgpIGFkZE9ic2VydmVyOm1fZGV2aWNl
UGlja2VyTWVudUNvbnRyb2xsZXJEZWxlZ2F0ZS5nZXQoKSBmb3JLZXlQYXRoOkAiZXh0ZXJuYWxP
dXRwdXREZXZpY2VQaWNrZWQiIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBj
b250ZXh0Om51bGxwdHJdOworCisgICAgICAgIGlmIChkZXZpY2VQaWNrZXIoKS5leHRlcm5hbE91
dHB1dERldmljZUF2YWlsYWJsZSkKKyAgICAgICAgICAgIGF2YWlsYWJsZURldmljZXNEaWRDaGFu
Z2UoKTsKKyAgICB9CisKKyAgICByZXR1cm4gbV9kZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlci5n
ZXQoKTsKK30KKwordm9pZCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6OnNo
b3dQbGF5YmFja1RhcmdldFBpY2tlcihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGxvY2F0aW9u
LCBib29sKQoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIFtk
ZXZpY2VQaWNrZXIoKSBzaG93TWVudUZvclJlY3Q6bG9jYXRpb24gYXBwZWFyYW5jZU5hbWU6TlNB
cHBlYXJhbmNlTmFtZVZpYnJhbnRMaWdodF07Cit9CisKK3ZvaWQgV2ViTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlclByb3h5TWFjOjpjdXJyZW50RGV2aWNlRGlkQ2hhbmdlKCkKK3sKKyAgICBpZiAo
IW1fY2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC0+ZGlkQ2hvb3NlUGxh
eWJhY2tUYXJnZXQoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldChbZGV2aWNlUGlja2VyKCkg
b3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dF0pKTsKK30KKwordm9pZCBXZWJNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyUHJveHlNYWM6OnN0YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygp
Cit7CisgICAgZGV2aWNlUGlja2VyKCk7Cit9CisKK3ZvaWQgV2ViTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlclByb3h5TWFjOjpzdG9wTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpCit7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCitAaW1wbGVtZW50YXRpb24gV2ViQVZPdXRwdXREZXZp
Y2VQaWNrZXJNZW51Q29udHJvbGxlckhlbHBlcgorLSAoaWQpaW5pdFdpdGhDYWxsYmFjazooV2Vi
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjKiljYWxsYmFjaworeworICAgIGlmICgh
KHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgbV9jYWxs
YmFjayA9IGNhbGxiYWNrOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpY2xlYXJD
YWxsYmFjaworeworICAgIG1fY2FsbGJhY2sgPSBuaWw7Cit9CisKKy0gKHZvaWQpb2JzZXJ2ZVZh
bHVlRm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rp
b25hcnkgKiljaGFuZ2UgY29udGV4dDoodm9pZCAqKWNvbnRleHQKK3sKKyAgICBVTlVTRURfUEFS
QU0oY2hhbmdlKTsKKyAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CisgICAgVU5VU0VEX1BBUkFN
KG9iamVjdCk7CisKKyAgICBpZiAoIW1fY2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAg
IGlmICghW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAiZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFp
bGFibGUiXSAmJiAhW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAiZXh0ZXJuYWxPdXRwdXREZXZp
Y2VQaWNrZWQiXSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmV0YWluUHRyPFdlYkFWT3V0cHV0
RGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXJIZWxwZXI+IHN0cm9uZ1NlbGYgPSBzZWxmOworICAg
IFJldGFpblB0cjxOU1N0cmluZz4gc3Ryb25nS2V5UGF0aCA9IGtleVBhdGg7CisgICAgY2FsbE9u
TWFpblRocmVhZChbc3Ryb25nU2VsZiwgc3Ryb25nS2V5UGF0aF0geworICAgICAgICBXZWJNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMqIGNhbGxiYWNrID0gc3Ryb25nU2VsZi0+bV9j
YWxsYmFjazsKKyAgICAgICAgaWYgKCFjYWxsYmFjaykKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBpZiAoW3N0cm9uZ0tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAiZXh0ZXJuYWxPdXRw
dXREZXZpY2VBdmFpbGFibGUiXSkKKyAgICAgICAgICAgIGNhbGxiYWNrLT5hdmFpbGFibGVEZXZp
Y2VzRGlkQ2hhbmdlKCk7CisgICAgICAgIGVsc2UgaWYgKFtzdHJvbmdLZXlQYXRoIGlzRXF1YWxU
b1N0cmluZzpAImV4dGVybmFsT3V0cHV0RGV2aWNlUGlja2VkIl0pCisgICAgICAgICAgICBjYWxs
YmFjay0+Y3VycmVudERldmljZURpZENoYW5nZSgpOworICAgIH0pOworfQorQGVuZAorCisjZW5k
aWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4
MTM5NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsMTAgQEAKIAkJMDBCOTY2MTkxOEUyNUFFMTAw
Q0UxRjg4IC8qIEZpbmRDbGllbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwMEI5NjYxNzE4RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVudC5tbSAq
LzsgfTsKIAkJMDBCOTY2MUExOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwQjk2NjE4MThFMjVBRTEw
MENFMUY4OCAvKiBGaW5kQ2xpZW50LmggKi87IH07CiAJCTA3NkU4ODRFMUExM0NBREYwMDVFOTBG
QyAvKiBBUElDb250ZXh0TWVudUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDc2RTg4NEQxQTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNvbnRleHRN
ZW51Q2xpZW50LmggKi87IH07CisJCTA3OTIxNjRDMUFBNTUwMTkwMEEzQzA0OSAvKiBXZWJNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5MjE2NDgxQUE1NEU5RDAwQTNDMDQ5IC8qIFdlYk1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5jcHAgKi87IH07CisJCTA3OTIxNjREMUFBNTUwMUYw
MEEzQzA0OSAvKiBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTIxNjQ5MUFBNTRFOUQwMEEz
QzA0OSAvKiBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuaCAqLzsgfTsKKwkJMDc5
MjE2NTAxQUE1NTI4QTAwQTNDMDQ5IC8qIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94
eU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5
MjE2NEUxQUE1NTI4QTAwQTNDMDQ5IC8qIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94
eU1hYy5oICovOyB9OworCQkwNzkyMTY1MTFBQTU1MjhBMDBBM0MwNDkgLyogV2ViTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlclByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDc5MjE2NEYxQUE1NTI4QTAwQTNDMDQ5IC8qIFdlYk1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYy5tbSAqLzsgfTsKIAkJMEYwQzM2NTgxOEMwNTFCQTAw
RjYwN0Q3IC8qIFJlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBDMzY1NzE4QzA1MUJBMDBGNjA3RDcgLyogUmVt
b3RlTGF5ZXJUcmVlSG9zdElPUy5tbSAqLzsgfTsKIAkJMEYwQzM2NUExOEMwNTU1ODAwRjYwN0Q3
IC8qIExheWVyUmVwcmVzZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMEMzNjU5MThDMDU1NTgwMEY2MDdENyAvKiBMYXllclJlcHJlc2Vu
dGF0aW9uLmggKi87IH07CiAJCTBGMEMzNjVDMThDMDVDQTEwMEY2MDdENyAvKiBSZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYwQzM2NUIxOEMwNUNBMTAwRjYwN0Q3IC8qIFJlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0gKi87IH07CkBAIC0yMTU4LDYgKzIxNjIsMTAgQEAK
IAkJMDBCOTY2MTgxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRmluZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwNzZFODg0RDFBMTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJQ29udGV4dE1lbnVDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RTg4NEYxQTEzQ0JDNjAwNUU5MEZD
IC8qIEFQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xp
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIxNjQ4MUFBNTRFOUQwMEEz
QzA0OSAvKiBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclBy
b3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjE2NDkxQUE1NEU5RDAw
QTNDMDQ5IC8qIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjE2NEUxQUE1NTI4QTAwQTNDMDQ5
IC8qIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjE2NEYxQUE1NTI4QTAwQTNDMDQ5
IC8qIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQ
cm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg2N0Q2QTVGRTg0MDMw
N0MwMkFBQzA3IC8qIEFwcEtpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IEFwcEtpdC5m
cmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3
b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQkwODlDMTY2N0ZFODQxMTU4QzAy
QUFDMDcgLyogRW5nbGlzaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3Quc3RyaW5nczsgbmFtZSA9IEVu
Z2xpc2g7IHBhdGggPSBFbmdsaXNoLmxwcm9qL0luZm9QbGlzdC5zdHJpbmdzOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjBDMzY1NzE4QzA1MUJBMDBGNjA3RDcgLyogUmVtb3RlTGF5
ZXJUcmVlSG9zdElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IFJlbW90ZUxheWVyVHJlZUhvc3RJT1MubW07IHBhdGggPSBpb3MvUmVtb3RlTGF5ZXJUcmVlSG9z
dElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYxNDUsNiArNjE1Myw4IEBA
CiAJCQkJNTEyRTM1MjAxMzBCNTUwMTAwQUJEMTlBIC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyUHJveHkuY3BwICovLAogCQkJCTUxMkUzNTIxMTMwQjU1MDEwMEFCRDE5QSAvKiBXZWJBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlclByb3h5LmggKi8sCiAJCQkJNTEyRTM1RjAxMzBCNjM4QzAwQUJE
MTlBIC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCisJ
CQkJMDc5MjE2NDgxQUE1NEU5RDAwQTNDMDQ5IC8qIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJQcm94eS5jcHAgKi8sCisJCQkJMDc5MjE2NDkxQUE1NEU5RDAwQTNDMDQ5IC8qIFdlYk1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5oICovLAogCQkJCUJDNzJCQTFCMTFFNjQ5MDcwMDFF
QjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3QuY3BwICovLAogCQkJCUJDNzJCQTFDMTFFNjQ5MDcw
MDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3QuaCAqLywKIAkJCQlGMDM2OTc4NzE1RjRCRjA1
MDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXIuY3BwICovLApAQCAtNzAwMyw2ICs3MDEzLDggQEAK
IAkJCQkyRDEyNUM1RDE4NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVDb250cm9sbGVyTWFj
Lm1tICovLAogCQkJCTJENkNEMTE3MTg5MDU4QTUwMEU1QTRBMCAvKiBWaWV3U25hcHNob3RTdG9y
ZS5oICovLAogCQkJCTJENkNEMTE4MTg5MDU4QTUwMEU1QTRBMCAvKiBWaWV3U25hcHNob3RTdG9y
ZS5tbSAqLywKKwkJCQkwNzkyMTY0RTFBQTU1MjhBMDBBM0MwNDkgLyogV2ViTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlclByb3h5TWFjLmggKi8sCisJCQkJMDc5MjE2NEYxQUE1NTI4QTAwQTNDMDQ5
IC8qIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYy5tbSAqLywKIAkJCQk3MjhF
ODZFRjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMuaCAqLywKIAkJCQk3MjhF
ODZGMDE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMubW0gKi8sCiAJCQkJNTFB
Q0JCOUUxMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMuaCAqLywKQEAg
LTgwOTUsNiArODEwNyw3IEBACiAJCQkJN0MzNjFENzkxOTI4MDNCRDAwMzZBNTlEIC8qIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTNG
ODg5RDE1MTg4Nzc4QzkwMEZFQURBRiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHku
aCBpbiBIZWFkZXJzICovLAogCQkJCTI5Q0Q1NUFBMTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vz
c2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDc5MjE2NEQx
QUE1NTAxRjAwQTNDMDQ5IC8qIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMjkyMzJERjQxOEIyOUQ2ODAwRDA1OTZGIC8qIFdLQWNjZXNzaWJp
bGl0eVdlYlBhZ2VPYmplY3RNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEMDczMEEzMTlGOUM3
REEwMEU5RDlDNCAvKiBXS0FjdGlvbk1lbnVDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5MzRCNzI0NDE5RjVCOUJFMDBBRTk2RDYgLyogV0tBY3Rpb25NZW51SXRlbVR5cGVzLmggaW4g
SGVhZGVycyAqLywKQEAgLTgyODQsNiArODI5Nyw3IEBACiAJCQkJMUFCOEExRjQxODQwMEI4RjAw
RTlBRTY5IC8qIFdLUGFnZUZpbmRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjhBMUY2
MTg0MDBCOUQwMEU5QUU2OSAvKiBXS1BhZ2VGaW5kTWF0Y2hlc0NsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFCOEExRjAxODQwMEIwMDAwRTlBRTY5IC8qIFdLUGFnZUZvcm1DbGllbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCTA3OTIxNjUwMUFBNTUyOEEwMEEzQzA0OSAvKiBXZWJNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDN0I2MzM3
MTJBNDVBQkEwMEQxNzRBNCAvKiBXS1BhZ2VHcm91cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFC
OEExRUMxODQwMDgwOTAwRTlBRTY5IC8qIFdLUGFnZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMyRDAyMTkxMkFDNDI2QzAwRTczMkEzIC8qIFdLUGFnZUxvYWRUeXBlcy5oIGlu
IEhlYWRlcnMgKi8sCkBAIC05NTQ5LDYgKzk1NjMsNyBAQAogCQkJCTBGQ0I0RTYzMThCQkUzRDkw
MDBGQ0ZDOSAvKiBQYWdlQ2xpZW50SW1wbC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0I0RTQ3
MThCQkUwNDQwMDBGQ0ZDOSAvKiBQYWdlQ2xpZW50SW1wbElPUy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTFBQzc1MzdCMTgzQTlGREIwMDcyQ0IxNSAvKiBQYWdlTG9hZFN0YXRlLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTA3OTIxNjUxMUFBNTUyOEEwMEEzQzA0OSAvKiBXZWJNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyUHJveHlNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDNTc0QTU4MjEyRTY2
NjgxMDAyREZFOTggLyogUGFzdGVib2FyZFR5cGVzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE5
NTgyRDYxNTNDQzA1NDAwQjYwODc1IC8qIFBERktpdEltcG9ydHMubW0gaW4gU291cmNlcyAqLywK
IAkJCQkyRDg3MEQxMDE2MjM0RkZFMDAwQTNGMjAgLyogUERGUGx1Z2luLm1tIGluIFNvdXJjZXMg
Ki8sCkBAIC05NzQ2LDYgKzk3NjEsNyBAQAogCQkJCUJDMTExQTVFMTEyRjRGQkIwMDMzN0JBQiAv
KiBXZWJFZGl0b3JDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQyOEYzRTYxODg1Q0ND
MTAwNEI5RUFFIC8qIFdlYkVkaXRvckNsaWVudElPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUM1
MjM3RjYwMTI0NDFDQTMwMDc4MDQ3MiAvKiBXZWJFZGl0b3JDbGllbnRNYWMubW0gaW4gU291cmNl
cyAqLywKKwkJCQkwNzkyMTY0QzFBQTU1MDE5MDBBM0MwNDkgLyogV2ViTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlclByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMTExQUUwMTEyRjVCQzIw
MDMzN0JBQiAvKiBXZWJFcnJvcnNNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMDMzN0RBRTEy
N0EyNEZFMDA4RkY0RjQgLyogV2ViRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwMzJE
QkExMEY0MzgwRjAwNThDMTVBIC8qIFdlYkV2ZW50Q29udmVyc2lvbi5jcHAgaW4gU291cmNlcyAq
LywKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Mu
c2IuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb20uYXBwbGUu
V2ViUHJvY2Vzcy5zYi5pbgkocmV2aXNpb24gMTgxMzk2KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgkod29ya2luZyBjb3B5KQpAQCAtMjk3
LDMgKzI5NywxOCBAQAogICAgICAgIChob21lLXN1YnBhdGggIi9MaWJyYXJ5L0NvbXBvbmVudHMi
KQogICAgICAgIChob21lLXN1YnBhdGggIi9MaWJyYXJ5L0tleWJvYXJkIExheW91dHMiKQogICAg
ICAgIChob21lLXN1YnBhdGggIi9MaWJyYXJ5L0lucHV0IE1ldGhvZHMiKSkKKworOzsgQWlyUGxh
eQorOzsgRklYTUU6IHJlbW92ZSB0aGlzIGFzIGRlc2NyaWJlZCBpbiByZGFyOi8vMTk4Njk0NDgK
KyhhbGxvdyBtYWNoLWxvb2t1cAorICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmNvcmVtZWRp
YS5lbmRwb2ludC5haXJwbGF5dWlhZ2VudCIpCisgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUu
Y29yZW1lZGlhLmVuZHBvaW50c3RyZWFtLmFpcnBsYXl1aWFnZW50IikKKyAgICAoZ2xvYmFsLW5h
bWUgImNvbS5hcHBsZS5jb3JlbWVkaWEuZW5kcG9pbnRwbGF5YmFja3Nlc3Npb24uYWlycGxheXVp
YWdlbnQiKQorICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmNvcmVtZWRpYS5lbmRwb2ludHBp
Y2tlciIpKQorCis7OyBBaXJQbGF5CisoYWxsb3cgbWFjaC1sb29rdXAKKyAgICAoZ2xvYmFsLW5h
bWUgImNvbS5hcHBsZS5jb3JlbWVkaWEuZW5kcG9pbnQueHBjIikKKyAgICAoZ2xvYmFsLW5hbWUg
ImNvbS5hcHBsZS5jb3JlbWVkaWEuZW5kcG9pbnRzdHJlYW0ueHBjIikKKyAgICAoZ2xvYmFsLW5h
bWUgImNvbS5hcHBsZS5jb3JlbWVkaWEuZW5kcG9pbnRwbGF5YmFja3Nlc3Npb24ueHBjIikKKyAg
ICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5jb3JlbWVkaWEuZW5kcG9pbnRwaWNrZXIueHBjIikp
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiAxODEzOTYpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExMDEsNCArMTEwMSwyNiBAQCBib29sIFdlYkNocm9tZUNsaWVu
dDo6c2hvdWxkRGlzcGF0Y2hGYWtlCiAgICAgcmV0dXJuIG1fcGFnZS0+c2hvdWxkRGlzcGF0Y2hG
YWtlTW91c2VNb3ZlRXZlbnRzKCk7CiB9CiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNob3dQbGF5
YmFja1RhcmdldFBpY2tlcihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGJvb2wg
aXNWaWRlbykKK3sKKyAgICAvLyAgICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb25BdE5ld1NjYWxl
ID0gbWFpbkZyYW1lVmlldygpLT5yb290Vmlld1RvQ29udGVudHMoLWNlbnRlckluVmlld0Nvb3Jk
aW5hdGVzKTsKKworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9wYWdlLT5tYWluRnJhbWUo
KS0+dmlldygpOworICAgIEZsb2F0UmVjdCByZWN0KGZyYW1lVmlldy0+Y29udGVudHNUb1Jvb3RW
aWV3KGZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyhwb3NpdGlvbikpLCBGbG9hdFNpemUoKSk7
CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dQbGF5YmFja1Rh
cmdldFBpY2tlcihyZWN0LCBpc1ZpZGVvKSk7Cit9CisKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpz
dGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKQoreworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMo
KSk7Cit9CisKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzdG9wTW9uaXRvcmluZ1BsYXliYWNrVGFy
Z2V0cygpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0b3BN
b25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkpOworfQorI2VuZGlmCisKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDE4MTM5NikKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxMCw2ICszMTAsMTIgQEAgcHJpdmF0ZToKIAogICAgIHZp
cnR1YWwgYm9vbCBzaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMoKSBjb25zdCBvdmVy
cmlkZTsKIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9S
TShJT1MpCisgICAgdmlydHVhbCB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzdGFy
dGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgc3RvcE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKSBvdmVycmlkZTsKKyNlbmRpZgorCiAg
ICAgU3RyaW5nIG1fY2FjaGVkVG9vbFRpcDsKICAgICBtdXRhYmxlIFJlZlB0cjxXZWJGcmFtZT4g
bV9jYWNoZWRGcmFtZVNldExhcmdlc3RGcmFtZTsKICAgICBtdXRhYmxlIGJvb2wgbV9jYWNoZWRN
YWluRnJhbWVIYXNIb3Jpem9udGFsU2Nyb2xsYmFyOwpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAxODEzOTYpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjYsNiArMTI2LDcgQEAgY2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7CiBjbGFzcyBIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50OwogY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBLZXlib2FyZEV2ZW50OworY2xh
c3MgTWVkaWFQbGF5YmFja1RhcmdldDsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBQcmludENvbnRleHQ7
CiBjbGFzcyBSYW5nZTsKQEAgLTE0Miw3ICsxNDMsNiBAQCBzdHJ1Y3QgVGV4dENoZWNraW5nUmVz
dWx0OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLQogY2xhc3MgRHJhd2luZ0FyZWE7CiBjbGFz
cyBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdDsKIGNsYXNzIE5vdGlmaWNhdGlvblBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcjsKQEAgLTEwOTMsNiArMTA5MywxMSBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBzZXRTaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMoYm9vbCBkaXNwYXRj
aCkgeyBtX3Nob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyA9IGRpc3BhdGNoOyB9CiAK
KyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQor
ICAgIHZvaWQgcGxheWJhY2tUYXJnZXRTZWxlY3RlZChjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXli
YWNrVGFyZ2V0JiBvdXRwdXREZXZpY2UpIGNvbnN0OworICAgIHZvaWQgcGxheWJhY2tUYXJnZXRB
dmFpbGFiaWxpdHlEaWRDaGFuZ2UoYm9vbCk7CisjZW5kaWYKKwogICAgIHVpbnQ2NF90IG1fcGFn
ZUlEOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlBhZ2U+IG1fcGFnZTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCShyZXZpc2lvbiAxODEzOTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNDExLDQgKzQx
MSwxMCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgogCiAg
ICAgU2V0U2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKGJvb2wgc2hvdWxkRGlzcGF0
Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKQorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVCkgJiYgIVBMQVRGT1JNKElPUykKKyAgICBQbGF5YmFja1RhcmdldFNlbGVjdGVkKFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQgdGFyZ2V0KQorICAgIFBsYXliYWNrVGFyZ2V0QXZhaWxh
YmlsaXR5RGlkQ2hhbmdlKGJvb2wgYXZhaWxhYmxlKQorI2VuZGlmCisKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0J
KHJldmlzaW9uIDE4MTM5NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtODcsNiArODcsMTAgQEAKICNpbXBv
cnQgPFdlYkNvcmUvaHRtbGVkaXRpbmcuaD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFj
ZS5oPgogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyNpbmNsdWRlIDxX
ZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXQuaD4KKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMTg3LDYgKzExOTEsMjAgQEAgdm9p
ZCBXZWJQYWdlOjpzZXRGb250KGNvbnN0IFN0cmluZyYgZm9udAogICAgIGZyYW1lLmVkaXRvcigp
LmFwcGx5Rm9udFN0eWxlcyhmb250RmFtaWx5LCBmb250U2l6ZSwgZm9udFRyYWl0cyk7CiB9CiAK
KyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQor
dm9pZCBXZWJQYWdlOjpwbGF5YmFja1RhcmdldFNlbGVjdGVkKGNvbnN0IFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXQmIHBsYXliYWNrVGFyZ2V0KSBjb25zdAoreworICAgIE1lZGlhUGxheWJh
Y2tUYXJnZXQgbm9uQ29uc3RUYXJnZXQocGxheWJhY2tUYXJnZXQuZGV2aWNlUGlja2VyQ29udGV4
dCgpKTsKKyAgICBtX3BhZ2UtPmRpZENob29zZVBsYXliYWNrVGFyZ2V0KG5vbkNvbnN0VGFyZ2V0
KTsKK30KKwordm9pZCBXZWJQYWdlOjpwbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eURpZENoYW5n
ZShib29sIGNoYW5nZWQpCit7CisgICAgbV9wYWdlLT5wbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0
eURpZENoYW5nZShjaGFuZ2VkKTsKK30KKyNlbmRpZgorCisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQo=
</data>
<flag name="review"
          id="273339"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248454</attachid>
            <date>2015-03-11 14:56:55 -0700</date>
            <delta_ts>2015-03-11 18:28:37 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>patch_33.txt</filename>
            <type>text/plain</type>
            <size>113147</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTM5NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg4IEBACisyMDE1LTAzLTExICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFVwZGF0ZSBB
aXJQbGF5IGhhbmRsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDI1NDEKKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2hvd1BsYXliYWNrVGFy
Z2V0UGlja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphZGRQbGF5YmFja1Rhcmdl
dFBpY2tlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVtb3ZlUGxheWJh
Y2tUYXJnZXRQaWNrZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNvbmZp
Z3VyZVBsYXliYWNrVGFyZ2V0TW9uaXRvcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6cmVxdWlyZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZyk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6cGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRpZENob29zZVBsYXliYWNrVGFyZ2V0KToKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVnaXN0ZXJXaXRoRG9jdW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dW5yZWdpc3RlcldpdGhE
b2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYVNlc3Np
b246OkhUTUxNZWRpYVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhU2Vzc2lv
bjo6cmVnaXN0ZXJXaXRoRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhU2Vz
c2lvbjo6dW5yZWdpc3RlcldpdGhEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFTZXNzaW9uOjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhU2Vzc2lvbjo6aGFzV2lyZWxlc3NQbGF5YmFja1RhcmdldHMpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhU2Vzc2lvbjo6c2V0SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxp
dHlMaXN0ZW5lcnMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhU2Vzc2lvbjo6ZGlkQ2hv
b3NlUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhU2Vzc2lvbjo6
ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhU2Vzc2lvbjo6cmVxdWlyZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmlu
Zyk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmg6CisgICAgICAgICogcGFnZS9D
aHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6cGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6Y29uZmlndXJlUGxheWJhY2tUYXJnZXRNb25pdG9yaW5nKToKKyAgICAgICAgKiBw
YWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Omhhc1dpcmVsZXNzUGxheWJhY2tU
YXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cGxheWJhY2tUYXJnZXQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVNlc3Npb246OmNsaWVudERhdGFCdWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU2Vzc2lvbjo6d2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2UpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpkaWRDaG9vc2VQbGF5YmFja1RhcmdldCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxl
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6cmVxdWlyZXNQbGF5
YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Np
b25DbGllbnQ6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uTWFuYWdlcjo6d2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVDaGFuZ2VkKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmg6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVXaXJlTGVzc1RhcmdldE1v
bml0b3JpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5h
Z2VySU9TLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFn
ZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpleHRl
cm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSk6CisgICAgICAgICgtW1dlYk1lZGlh
U2Vzc2lvbkhlbHBlciB3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZTpdKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9BVlBsYXliYWNrVGFyZ2V0Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QVZQbGF5YmFja1RhcmdldDo6fkFWUGxheWJhY2tUYXJnZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6QVZQbGF5YmFja1RhcmdldDo6QVZQbGF5YmFja1RhcmdldCk6CisgICAgICAg
IChXZWJDb3JlOjpBVlBsYXliYWNrVGFyZ2V0OjpzZXREZXZpY2VQaWNrZXJDb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFWUGxheWJhY2tUYXJnZXQ6OmRldmljZVBpY2tlckNvbnRleHQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0FWUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBVlBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50
Ojp+QVZQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNl
dFdpcmVsZXNzUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2
YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OnNl
dFdpcmVsZXNzUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9BVlBsYXliYWNrVGFyZ2V0TWFjLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkFWUGxheWJhY2tUYXJnZXQ6OmVuY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpBVlBsYXli
YWNrVGFyZ2V0OjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6Y2FuY2VsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVlBsYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjppc0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndpcmVsZXNzUGxheWJh
Y2tUYXJnZXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFdpcmVsZXNzVmlk
ZW9QbGF5YmFja0Rpc2FibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlRGlzYWJs
ZUV4dGVybmFsUGxheWJhY2spOgorICAgICAgICAoLVtXZWJDb3JlQVZGTW92aWVPYnNlcnZlciBv
YnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOgorCiAyMDE1
LTAzLTExICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBPcHRpbWl6
ZSBvZmZzZXRXaWR0aCBhbmQgb2Zmc2V0SGVpZ2h0IHRvIGF2b2lkIGRvaW5nIGxheW91dHMuCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAxODEzOTYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE3NSw2ICsxNzUsNyBAQAogCQkw
NzRFODJCQjE4QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzRFODJCOTE4QTY5RjBFMDA3
RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDc1Mzg2MDIxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hl
ZFRleHRUcmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwNzUzODYwMDE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmNwcCAqLzsg
fTsKIAkJMDc1Mzg2MDMxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc1Mzg2MDExNDQ4OUU5
ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5oICovOyB9OworCQkwNzYwQzE3QTFBQThGQzdE
MDA5RUQ3QjggLyogTWVkaWFQbGF5YmFja1RhcmdldE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RTNERkQyMUE5RTc4QTUwMDc2NENBOCAvKiBN
ZWRpYVBsYXliYWNrVGFyZ2V0TWFjLm1tICovOyB9OwogCQkwNzYzMDZEMDE3RTE0NzhEMDA1QTdD
NEUgLyogTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2MzA2Q0MxN0UxNDc4RDAwNUE3QzRFIC8q
IE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzYzMDZEMjE3RTE0NzhEMDA1QTdDNEUgLyog
TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NjMwNkNFMTdFMTQ3OEQwMDVBN0M0RSAvKiBNZWRp
YVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3QuY3BwICovOyB9OwogCQkwNzYzMDZEMzE3RTE0NzhE
MDA1QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzYzMDZDRjE3RTE0NzhEMDA1QTdD
NEUgLyogTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI2OSw2ICsyNzAsNyBAQAogCQkwNzhF
MDk0NzE3RDE2RTFDMDA0MjBBQTEgLyogUlRDVm9pZFJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MjIxQkIwMTdDRjBBRDQwMDg0OEU1MSAv
KiBSVENWb2lkUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTA3OEUwOTRCMTdEMTcwOTYwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbUF1ZGlv
RGVzdGluYXRpb25Ob2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3OEUwOTQ4MTdEMTcwOTYwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbUF1ZGlvRGVz
dGluYXRpb25Ob2RlLmNwcCAqLzsgfTsKIAkJMDc4RTA5NEMxN0QxNzA5NjAwNDIwQUExIC8qIE1l
ZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OEUwOTQ5MTdEMTcwOTYwMDQyMEFBMSAvKiBNZWRpYVN0
cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDc5MjE2NTUxQUE1NjBBQTAwQTNDMDQ5IC8qIE1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3OTIxNjUzMUFBNTYwQUEwMEEzQzA0OSAvKiBNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMDc5NDE3OTExNjZFODU1RjAwOTQxNkMyIC8qIEluYmFuZFRleHRUcmFj
ay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzk0
MTc4RjE2NkU4NTVGMDA5NDE2QzIgLyogSW5iYW5kVGV4dFRyYWNrLmNwcCAqLzsgfTsKIAkJMDc5
NDE3OTIxNjZFODU1RjAwOTQxNkMyIC8qIEluYmFuZFRleHRUcmFjay5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5NDE3OTAxNjZFODU1RjAwOTQxNkMy
IC8qIEluYmFuZFRleHRUcmFjay5oICovOyB9OwogCQkwNzk0MTc5NDE2NkVBMDRFMDA5NDE2QzIg
LyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDc5NDE3OTMxNjZFQTA0RTAwOTQxNkMyIC8qIEluYmFuZFRleHRU
cmFja1ByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMzM4LDggKzM0MCwxMCBAQAogCQkwN0RDNUZENDE3RDNFRUU5MDA5OUY4OTAgLyog
SlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3REM1RkQzMTdEM0VFRTkwMDk5Rjg5MCAvKiBKU1JUQ1N0YXRz
UmVzcG9uc2VDdXN0b20uY3BwICovOyB9OwogCQkwN0UxMTZCMTE0ODlDOUExMDBFQzVBQ0UgLyog
SlNUZXh0VHJhY2tDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDdFMTE2QjAxNDg5QzlBMTAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VzdG9t
LmNwcCAqLzsgfTsKIAkJMDdFMTE3MDcxNDg5RUJFQjAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3Vl
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3RTExNzA2MTQ4OUVCRUIwMEVDNUFDRSAvKiBKU1RleHRUcmFja0N1ZUN1c3RvbS5jcHAgKi87
IH07CisJCTA3RTNERkQxMUE5RTc4NjUwMDc2NENBOCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0UzREZEMDFB
OUU3ODY1MDA3NjRDQTggLyogTWVkaWFQbGF5YmFja1RhcmdldC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3RTlFMTJFMThGNUUyNzYwMDExQTNB
NCAvKiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RTlFMTJEMThGNUUyNzYwMDExQTNBNCAv
KiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaCAqLzsgfTsKIAkJMDdFOUUxMzAx
OEY2MkIzNzAwMTFBM0E0IC8qIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0U5RTEyRjE4
RjYyQjM3MDAxMUEzQTQgLyogSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcCAq
LzsgfTsKKwkJMDdFREMzRUUxQUFDQjc1RDAwOTgzRUI1IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJN
YWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdF
REMzRUQxQUFDQjc1RDAwOTgzRUI1IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwICovOyB9
OwogCQkwN0Y5NDQxNjE4NjREMDQ2MDA1RDMxQ0IgLyogTWVkaWFTZXNzaW9uTWFuYWdlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBRThDMDgxNzQ2
Qjk1NzAwNTMyRDc4IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwN0ZCREUyQzE4RkVEMTc4MDAxQTdDRkYg
LyogSlNEYXRhQ3VlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3RkJERTJCMThGRUQxNzgwMDFBN0NGRiAvKiBKU0RhdGFDdWVDdXN0b20u
Y3BwICovOyB9OwogCQkwN0ZFOTlEQzE4ODA3QTdEMDAyNTY2NDggLyogSFRNTE1lZGlhU2Vzc2lv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0ZF
OTlEQTE4ODA3QTdEMDAyNTY2NDggLyogSFRNTE1lZGlhU2Vzc2lvbi5jcHAgKi87IH07CkBAIC01
NjgzLDcgKzU2ODcsNiBAQAogCQlDRDUzOTNENDE3NUUwMTg2MDBDMDcxMjMgLyogSlNNZW1vcnlJ
bmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDUz
OTNEMjE3NUUwMTg2MDBDMDcxMjMgLyogSlNNZW1vcnlJbmZvLmggKi87IH07CiAJCUNENTRBNzYy
MTgwRjlGNzAwMEIwNzZDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDU0QTc2
MDE4MEY5RjcwMDBCMDc2QzkgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
Y3BwICovOyB9OwogCQlDRDU0QTc2MzE4MEY5RjcwMDBCMDc2QzkgLyogQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENENTRBNzYxMTgwRjlGNzAwMEIwNzZDOSAvKiBBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5oICovOyB9OwotCQlDRDU0REU0NzE3NDY4QjZGMDA1RTVCMzYg
LyogTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRDU0REU0NTE3NDY4QjZGMDA1RTVCMzYgLyogTWVkaWFTZXNz
aW9uTWFuYWdlck1hYy5jcHAgKi87IH07CiAJCUNENTRERTRCMTc0NjlDNkQwMDVFNUIzNiAvKiBB
dWRpb1Nlc3Npb25NYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0Q1NERFNDkxNzQ2OUM2RDAwNUU1QjM2IC8qIEF1ZGlvU2Vzc2lvbk1hYy5jcHAg
Ki87IH07CiAJCUNENTU5NjkxMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFkZXJJT1Mu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1NTk2
OEYxNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRlcklPUy5jcHAgKi87IH07CiAJCUNE
NTU5NjkyMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFkZXJJT1MuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENTU5NjkwMTQ3NUI2NzgwMDFE
MEJEMCAvKiBBdWRpb0ZpbGVSZWFkZXJJT1MuaCAqLzsgfTsKQEAgLTcyNjMsNiArNzI2Niw3IEBA
CiAJCTA3OEUwOTQ4MTdEMTcwOTYwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRp
b25Ob2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU3Ry
ZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwNzhFMDk0OTE3RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVN0cmVhbUF1ZGlv
RGVzdGluYXRpb25Ob2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3OEUwOTRB
MTdEMTcwOTYwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjE2NTMxQUE1NjBBQTAwQTNDMDQ5
IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudC5oOyBwYXRoID0g
Z3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwNzk0MTc4RjE2NkU4NTVGMDA5NDE2QzIgLyogSW5iYW5kVGV4dFRy
YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluYmFuZFRleHRU
cmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3OTQxNzkwMTY2RTg1NUYw
MDk0MTZDMiAvKiBJbmJhbmRUZXh0VHJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5iYW5kVGV4dFRyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3
OTQxNzkzMTY2RUEwNEUwMDk0MTZDMiAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluYmFuZFRleHRUcmFja1ByaXZhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTczNDEsOCArNzM0NSwxMSBAQAogCQkwN0RDNUZE
MzE3RDNFRUU5MDA5OUY4OTAgLyogSlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RTExNkIwMTQ4OUM5QTEwMEVDNUFD
RSAvKiBKU1RleHRUcmFja0N1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1RleHRUcmFja0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3RTExNzA2MTQ4OUVCRUIwMEVDNUFDRSAvKiBKU1RleHRUcmFja0N1ZUN1c3RvbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RleHRUcmFja0N1ZUN1c3Rv
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3RTNERkQwMUE5RTc4NjUwMDc2
NENBOCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMDdFM0RGRDIxQTlFNzhBNTAwNzY0Q0E4IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBNZWRpYVBsYXliYWNrVGFy
Z2V0TWFjLm1tOyBwYXRoID0gcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxh
eWJhY2tUYXJnZXRNYWMubW07IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJMDdFOUUx
MkQxOEY1RTI3NjAwMTFBM0E0IC8qIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmJhbmRNZXRhZGF0YVRleHRUcmFj
a1ByaXZhdGVBVkYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdFOUUxMkYxOEY2
MkIzNzAwMTFBM0E0IC8qIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmJhbmRNZXRhZGF0YVRleHRUcmFj
a1ByaXZhdGVBVkYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0VEQzNFRDFB
QUNCNzVEMDA5ODNFQjUgLyogTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdGQkRFMkIxOEZFRDE3ODAwMUE3Q0ZGIC8qIEpT
RGF0YUN1ZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0RhdGFDdWVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0ZFOTlE
QTE4ODA3QTdEMDAyNTY2NDggLyogSFRNTE1lZGlhU2Vzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MTWVkaWFTZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDdGRTk5REIxODgwN0E3RDAwMjU2NjQ4IC8qIEhUTUxNZWRpYVNl
c3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTE1lZGlhU2Vzc2lv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMxODYsNyArMTMxOTMsNiBAQAog
CQlDRDUzOTNEMjE3NUUwMTg2MDBDMDcxMjMgLyogSlNNZW1vcnlJbmZvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVtb3J5SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRDU0QTc2MDE4MEY5RjcwMDBCMDc2QzkgLyogQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwOyBwYXRoID0gb2JqYy9B
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNENTRBNzYxMTgwRjlGNzAwMEIwNzZDOSAvKiBBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOyBwYXRoID0gb2JqYy9BdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlDRDU0REU0NTE3NDY4QjZGMDA1RTVCMzYgLyogTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVNlc3Npb25NYW5h
Z2VyTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q1NERFNDkxNzQ2OUM2
RDAwNUU1QjM2IC8qIEF1ZGlvU2Vzc2lvbk1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBBdWRpb1Nlc3Npb25NYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDRDU1OTY4RjE0NzVCNjc4MDAxRDBCRDAgLyogQXVkaW9GaWxlUmVhZGVySU9TLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEF1ZGlvRmlsZVJlYWRlcklP
Uy5jcHA7IHBhdGggPSBpb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0Q1NTk2OTAxNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRl
cklPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBdWRpb0ZpbGVSZWFkZXJJ
T1MuaDsgcGF0aCA9IGlvcy9BdWRpb0ZpbGVSZWFkZXJJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIwNTQ5LDYgKzIwNTU1LDcgQEAKIAkJQjI3NTM1NDkwQjA1MzgxNDAwMkNF
NjRGIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJMDdFM0RGRDIxQTlFNzhBNTAwNzY0Q0E4IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMubW0g
Ki8sCiAJCQkJRURFM0E0RkYwQzdBNDMwNjAwOTU2QTM3IC8qIENvbG9yTWFjLmggKi8sCiAJCQkJ
QjI3NTM1NEEwQjA1MzgxNDAwMkNFNjRGIC8qIENvbG9yTWFjLm1tICovLAogCQkJCTM3QzIzNjBF
MTA5N0VFNzcwMEVGOUY3MiAvKiBDb21wbGV4VGV4dENvbnRyb2xsZXIuY3BwICovLApAQCAtMjA1
OTksNiArMjA2MDYsNyBAQAogCQkJCUZCQzIyMEREMTIzN0ZCRUIwMEJDRjc4OCAvKiBvcGVuZ2wg
Ki8sCiAJCQkJMzcyMTQ5MzMxOEYwQjZENjAwMTU2RURDIC8qIG9wZW50eXBlICovLAogCQkJCTQ5
RTkxMUIyMEVGODZEMjcwMDlEMENBRiAvKiB0cmFuc2Zvcm1zICovLAorCQkJCTA3RTNERkQwMUE5
RTc4NjUwMDc2NENBOCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0LmggKi8sCiAJCQkJNDkwNzA3RTQx
MjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmNwcCAqLywKIAkJCQk0OTA3MDdF
NTEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuaCAqLywKIAkJCQlCRUYyOUVF
OTE3MTVERDA5MDBDNEI0QzkgLyogQXVkaW9UcmFja1ByaXZhdGUuaCAqLywKQEAgLTIxNTE3LDYg
KzIxNTI1LDcgQEAKIAkJQkNGMUE1QkEwOTc4MzIwOTAwNjFBMTIzIC8qIHBsYXRmb3JtICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwNzkyMTY1MzFBQTU2
MEFBMDBBM0MwNDkgLyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudC5oICovLAogCQkJ
CTQ5RTkxMkE0MEVGQUM4RTYwMDlEMENBRiAvKiBhbmltYXRpb24gKi8sCiAJCQkJRkQzMTYwNDAx
MkIwMjZBMzAwQzFBMzU5IC8qIGF1ZGlvICovLAogCQkJCTFBRTQyRjY3MEFBNEI4Q0IwMEM4NjEy
RCAvKiBjZiAqLywKQEAgLTIzNDA3LDYgKzIzNDE2LDcgQEAKIAkJRkQzMTYwQjAxMkIwMjcwNzAw
QzFBMzU5IC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJMDdFREMzRUQxQUFDQjc1RDAwOTgzRUI1IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMu
Y3BwICovLAogCQkJCUZEMzE2MEI1MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0J1c01hYy5tbSAq
LywKIAkJCQlGRDMxNjBCNjEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1hYy5j
cHAgKi8sCiAJCQkJRkQzMTYwQjcxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25N
YWMuaCAqLywKQEAgLTIzNDE4LDcgKzIzNDI4LDYgQEAKIAkJCQlDREM3MzQxMjE5Nzc4OTZDMDA0
NkJGQzUgLyogQ0FSaW5nQnVmZmVyLmNwcCAqLywKIAkJCQlDREM3MzQxMzE5Nzc4OTZDMDA0NkJG
QzUgLyogQ0FSaW5nQnVmZmVyLmggKi8sCiAJCQkJRkQzMTYwQkExMkIwMjcyQTAwQzFBMzU5IC8q
IEZGVEZyYW1lTWFjLmNwcCAqLywKLQkJCQlDRDU0REU0NTE3NDY4QjZGMDA1RTVCMzYgLyogTWVk
aWFTZXNzaW9uTWFuYWdlck1hYy5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yMzcyMyw2ICsyMzczMiw3IEBACiAJCQkJQkNCMTZD
MUMwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZEltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkz
MTlGQkQ1RjE1RDJGNDY0MDA5NjQwQTYgLyogQ2FjaGVkSW1hZ2VDbGllbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxMDE4NDY5MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwN0UzREZEMTFBOUU3ODY1MDA3NjRDQTggLyogTWVkaWFQbGF5YmFja1Rh
cmdldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDBFREE3NzUxNDNFMzAzQzAwMjhFMzgzIC8qIENh
Y2hlZFJhd1Jlc291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUI1MzM0OTE3MTdERUUzMDBG
MjA1RjkgLyogQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
QjE2QzIwMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yNjE4Nyw2ICsyNjE5Nyw3IEBACiAJCQkJOTM5MUE5OTExNjI3NDZDQjAwMjk3MzMwIC8q
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0MzOEJGRjE2
NDQ3M0M3MDAwOTFFQjIgLyogU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRUEzRTdCMTkxQjJGQzUwMDBGMUI1NSAvKiBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Ny
b2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDc5MjE2NTUxQUE1NjBBQTAwQTNDMDQ5
IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkzMUNCRDBEMTYxQTQ0RTkwMEU0Qzg3NCAvKiBTY3JvbGxpbmdTdGF0ZU5vZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRUEzRTg0MTkxQjMxQkYwMDBGMUI1NSAvKiBTY3JvbGxpbmdTdGF0ZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMxQ0JEMEYxNjFBNDRF
OTAwRTRDODc0IC8qIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yNzM2MCw2ICsyNzM3MSw3IEBACiAJCQkJRkQzMTVGRjgxMkIwMjY3NjAwQzFBMzU5IC8q
IEF1ZGlvQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE1RkZCMTJCMDI2NzYwMEMx
QTM1OSAvKiBBdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQz
MTYwN0IxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvQnVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTA3RURDM0VFMUFBQ0I3NUQwMDk4M0VCNSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUZEMzE2MEJCMTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0J1c01h
Yy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDdEMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRp
b0NoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwMDQxMkIwMjY3NjAwQzFBMzU5
IC8qIEF1ZGlvQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3OTQwLDYgKzI3OTUyLDcg
QEAKIAkJCQk5QkFCNkM2RDEyNTUwNjMxMDAxNjI2RDQgLyogRWRpdGluZ1N0eWxlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTRCMzA0M0NDMEFFMDM3M0IwMEE4MjY0NyAvKiBFZGl0b3IuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTNBMzhCNEIwRDBFNTgwODAwNjg3MkMyIC8qIEVkaXRvckNvbW1h
bmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDc2MEMxN0ExQUE4RkM3RDAwOUVEN0I4IC8qIE1l
ZGlhUGxheWJhY2tUYXJnZXRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlGRUQxM0QzQTBDRUE5
MzQ2MDBEODk0NjYgLyogRWRpdG9ySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRUQ1MDFEQzYw
QjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4QzRB
ODA4MDlENTYzMjcwMDAzQUM4RCAvKiBFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjkx
NjMsNyArMjkxNzYsNiBAQAogCQkJCTA3MEUwOTFCMTg3NUVGNzEwMDNBMUQzQyAvKiBNZWRpYVNl
c3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBRThDMDkxNzQ2Qjk1NzAwNTMyRDc4IC8q
IE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc2MzhBOUExODg0
NDg3MjAwRTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gaW4gU291cmNlcyAqLywK
LQkJCQlDRDU0REU0NzE3NDY4QjZGMDA1RTVCMzYgLyogTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDNBNDk1RTE3QTlEMDFCMDAyNzRFNDIgLyogTWVkaWFT
b3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RDOEI1QTYxODA0NzRGNzAwMTZFNjg1IC8q
IE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDYxRkU2
NzE3OTRBQURCMDA0MTAxRUIgLyogTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAq
LywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMTgxMzk2KQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI4LDYgKzIy
OCwxMCBAQAogI2luY2x1ZGUgPHJlcGxheS9JbnB1dEN1cnNvci5oPgogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1l
bnQuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgV1RGOwogdXNpbmcgbmFtZXNwYWNlIFVu
aWNvZGU7CiAKQEAgLTY0NTEsNCArNjQ1NSw4MiBAQCB2b2lkIERvY3VtZW50OjpzZXRJbnB1dEN1
cnNvcihQYXNzUmVmUHRyCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpCit2b2lkIERvY3VtZW50OjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoY29uc3Qg
SFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFn
ZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFnZS0+c2hvd1Bs
YXliYWNrVGFyZ2V0UGlja2VyKHRoaXMsIHZpZXcoKS0+bGFzdEtub3duTW91c2VQb3NpdGlvbigp
LCBpczxIVE1MVmlkZW9FbGVtZW50PihlbGVtZW50KSk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OmFk
ZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGll
bnQmIGNsaWVudCkKK3sKKyAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOworICAgIGlmICgh
cGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wbGF5YmFja1RhcmdldENsaWVudHMuYWRk
KCZjbGllbnQpOworCisgICAgY2xpZW50LmRpZENob29zZVBsYXliYWNrVGFyZ2V0KHBhZ2UtPnBs
YXliYWNrVGFyZ2V0KCkpOworICAgIGNsaWVudC5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJs
ZURpZENoYW5nZShwYWdlLT5oYXNXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkpOworfQorCit2b2lk
IERvY3VtZW50OjpyZW1vdmVQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudChNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyQ2xpZW50JiBjbGllbnQpCit7CisgICAgbV9wbGF5YmFja1RhcmdldENsaWVu
dHMucmVtb3ZlKCZjbGllbnQpOworICAgIGNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0TW9uaXRvcmlu
ZygpOworfQorCit2b2lkIERvY3VtZW50Ojpjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0b3Jp
bmcoKQoreworICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQor
ICAgICAgICByZXR1cm47CisKKyAgICBwYWdlLT5jb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0
b3JpbmcoKTsKK30KKworYm9vbCBEb2N1bWVudDo6cmVxdWlyZXNQbGF5YmFja1RhcmdldFJvdXRl
TW9uaXRvcmluZygpCit7CisgICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX3BsYXliYWNrVGFyZ2V0
Q2xpZW50cykgeworICAgICAgICBpZiAoY2xpZW50LT5yZXF1aXJlc1BsYXliYWNrVGFyZ2V0Um91
dGVNb25pdG9yaW5nKCkpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQg
RG9jdW1lbnQ6OnBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKGJvb2wgYXZhaWxh
YmxlKQoreworICAgIGlmIChtX3BsYXliYWNrVGFyZ2V0c0F2YWlsYWJsZSA9PSBhdmFpbGFibGUp
CisgICAgICAgIHJldHVybjsKKyAgICBtX3BsYXliYWNrVGFyZ2V0c0F2YWlsYWJsZSA9IGF2YWls
YWJsZTsKKworICAgIGZvciAoYXV0byogY2xpZW50IDogbV9wbGF5YmFja1RhcmdldENsaWVudHMp
CisgICAgICAgIGNsaWVudC0+ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2Uo
YXZhaWxhYmxlKTsKK30KKwordm9pZCBEb2N1bWVudDo6ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQo
TWVkaWFQbGF5YmFja1RhcmdldCYgZGV2aWNlKQoreworICAgIE1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJDbGllbnQqIGNsaWVudFRoYXRSZXF1ZXN0ZWRQaWNrZXIgPSBudWxscHRyOworCisgICAg
Zm9yIChhdXRvKiBjbGllbnQgOiBtX3BsYXliYWNrVGFyZ2V0Q2xpZW50cykgeworICAgICAgICBp
ZiAoY2xpZW50LT5yZXF1ZXN0ZWRQbGF5YmFja1RhcmdldFBpY2tlcigpKSB7CisgICAgICAgICAg
ICBjbGllbnRUaGF0UmVxdWVzdGVkUGlja2VyID0gY2xpZW50OworICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIH0KKworICAgICAgICBjbGllbnQtPmRpZENob29zZVBsYXliYWNrVGFyZ2V0
KGRldmljZSk7CisgICAgfQorCisgICAgaWYgKGNsaWVudFRoYXRSZXF1ZXN0ZWRQaWNrZXIpCisg
ICAgICAgIGNsaWVudFRoYXRSZXF1ZXN0ZWRQaWNrZXItPmRpZENob29zZVBsYXliYWNrVGFyZ2V0
KGRldmljZSk7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gMTgxMzk2KQorKysgU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw2ICsxMjQsOCBAQCBjbGFzcyBMaXZl
Tm9kZUxpc3Q7CiBjbGFzcyBKU05vZGU7CiBjbGFzcyBMb2NhbGU7CiBjbGFzcyBNZWRpYUNhblN0
YXJ0TGlzdGVuZXI7CitjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OworY2xhc3MgTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlckNsaWVudDsKIGNsYXNzIE1lZGlhUXVlcnlMaXN0OwogY2xhc3MgTWVk
aWFRdWVyeU1hdGNoZXI7CiBjbGFzcyBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzOwpAQCAt
MTIxOCw2ICsxMjIwLDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhZ2VNdXRlZFN0YXRlRGlkQ2hh
bmdlKCk7CiAgICAgV2Vha1B0cjxEb2N1bWVudD4gY3JlYXRlV2Vha1B0cigpIHsgcmV0dXJuIG1f
d2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigpOyB9CiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQorICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IEhU
TUxNZWRpYUVsZW1lbnQmKTsKKyAgICB2b2lkIGRpZENob29zZVBsYXliYWNrVGFyZ2V0KE1lZGlh
UGxheWJhY2tUYXJnZXQmKTsKKyAgICB2b2lkIGFkZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50
KE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQmKTsKKyAgICB2b2lkIHJlbW92ZVBsYXli
YWNrVGFyZ2V0UGlja2VyQ2xpZW50KE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQmKTsK
KyAgICBib29sIHJlcXVpcmVzUGxheWJhY2tUYXJnZXRSb3V0ZU1vbml0b3JpbmcoKTsKKyAgICB2
b2lkIGNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0TW9uaXRvcmluZygpOworICAgIHZvaWQgcGxheWJh
Y2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UoYm9vbCk7CisjZW5kaWYKKwogcHJvdGVjdGVk
OgogICAgIGVudW0gQ29uc3RydWN0aW9uRmxhZ3MgeyBTeW50aGVzaXplZCA9IDEsIE5vblJlbmRl
cmVkUGxhY2Vob2xkZXIgPSAxIDw8IDEgfTsKICAgICBEb2N1bWVudChGcmFtZSosIGNvbnN0IFVS
TCYsIHVuc2lnbmVkID0gRGVmYXVsdERvY3VtZW50Q2xhc3MsIHVuc2lnbmVkIGNvbnN0cnVjdGlv
bkZsYWdzID0gMCk7CkBAIC0xNjU1LDYgKzE2NjcsMTEgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hT
ZXQ8QXVkaW9Qcm9kdWNlcio+IG1fYXVkaW9Qcm9kdWNlcnM7CiAgICAgYm9vbCBtX2lzUGxheWlu
Z0F1ZGlvOworCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyAgICBIYXNo
U2V0PFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQqPiBtX3BsYXliYWNr
VGFyZ2V0Q2xpZW50czsKKyAgICBib29sIG1fcGxheWJhY2tUYXJnZXRzQXZhaWxhYmxlIHsgZmFs
c2UgfTsKKyNlbmRpZgogfTsKIAogaW5saW5lIHZvaWQgRG9jdW1lbnQ6Om5vdGlmeVJlbW92ZVBl
bmRpbmdTaGVldElmTmVlZGVkKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAkocmV2aXNpb24gMTgxMzk2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI2LDYgKzQyNiw4IEBAIEhUTUxN
ZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpyZWdpc3RlcldpdGhEb2N1bWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiB7CisgICAgbV9tZWRp
YVNlc3Npb24tPnJlZ2lzdGVyV2l0aERvY3VtZW50KGRvY3VtZW50KTsKKwogICAgIGlmIChtX2lz
V2FpdGluZ1VudGlsTWVkaWFDYW5TdGFydCkKICAgICAgICAgZG9jdW1lbnQuYWRkTWVkaWFDYW5T
dGFydExpc3RlbmVyKHRoaXMpOwogCkBAIC00NTEsNiArNDUzLDggQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpyZWdpc3RlcldpdGhEb2N1bQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVucmVn
aXN0ZXJXaXRoRG9jdW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogeworICAgIG1fbWVkaWFTZXNz
aW9uLT51bnJlZ2lzdGVyV2l0aERvY3VtZW50KGRvY3VtZW50KTsKKwogICAgIGlmIChtX2lzV2Fp
dGluZ1VudGlsTWVkaWFDYW5TdGFydCkKICAgICAgICAgZG9jdW1lbnQucmVtb3ZlTWVkaWFDYW5T
dGFydExpc3RlbmVyKHRoaXMpOwogCkBAIC0yNDY4LDYgKzI0NzIsOSBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnJlZnJlc2hDYWNoZWRUaW1lCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6aW52
YWxpZGF0ZUNhY2hlZFRpbWUoKSBjb25zdAogeworICAgIGlmICghbV9wbGF5ZXItPm1heGltdW1E
dXJhdGlvblRvQ2FjaGVNZWRpYVRpbWUoKSkKKyAgICAgICAgcmV0dXJuOworCiAjaWYgIUxPR19E
SVNBQkxFRAogICAgIGlmIChtX2NhY2hlZFRpbWUuaXNWYWxpZCgpKQogICAgICAgICBMT0coTWVk
aWEsICJIVE1MTWVkaWFFbGVtZW50OjppbnZhbGlkYXRlQ2FjaGVkVGltZSglcCkiLCB0aGlzKTsK
QEAgLTQ4NTMsNiArNDg2MCwxMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmVucXVldWVQbGF5
YmFja1RhCiAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKICAgICBtX2FzeW5jRXZlbnRRdWV1
ZS5lbnF1ZXVlRXZlbnQoZXZlbnQucmVsZWFzZSgpKTsKIH0KKwordm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXQm
IGRldmljZSkKK3sKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZXRXaXJlbGVz
c1BsYXliYWNrVGFyZ2V0KCVwKSIsIHRoaXMpOworICAgIGlmIChtX3BsYXllcikKKyAgICAgICAg
bV9wbGF5ZXItPnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoZGV2aWNlKTsKK30KICNlbmRpZgog
CiBkb3VibGUgSFRNTE1lZGlhRWxlbWVudDo6bWluRmFzdFJldmVyc2VSYXRlKCkgY29uc3QKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCShyZXZpc2lvbiAxODEzOTYp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTM1Nyw3ICszNTcsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgYWRkRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVu
dExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wg
cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRM
aXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CisKICAgICB2aXJ0dWFsIHZvaWQg
d2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2UoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0
Jikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIC8vIEV2ZW50VGFyZ2V0IGZ1bmN0aW9uLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYVNlc3Npb24uY3BwCShyZXZpc2lvbiAxODEz
OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYVNlc3Npb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw3ICszMSw5IEBACiAKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRl
ICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTcyLDgg
Kzc0LDI4IEBAIHN0YXRpYyBjb25zdCBjaGFyKiByZXN0cmljdGlvbk5hbWUoSFRNTE0KIEhUTUxN
ZWRpYVNlc3Npb246OkhUTUxNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uQ2xpZW50JiBjbGllbnQp
CiAgICAgOiBNZWRpYVNlc3Npb24oY2xpZW50KQogICAgICwgbV9yZXN0cmljdGlvbnMoTm9SZXN0
cmljdGlvbnMpCi0gICAgLCBtX2hhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJz
KGZhbHNlKQorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisgICAgLCBtX3Rh
cmdldEF2YWlsYWJpbGl0eUNoYW5nZWRUaW1lcigqdGhpcywgJkhUTUxNZWRpYVNlc3Npb246OnRh
cmdldEF2YWlsYWJpbGl0eUNoYW5nZWRUaW1lckZpcmVkKQorI2VuZGlmCit7Cit9CisKK3ZvaWQg
SFRNTE1lZGlhU2Vzc2lvbjo6cmVnaXN0ZXJXaXRoRG9jdW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50
KQogeworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisgICAgZG9jdW1lbnQu
YWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoKnRoaXMpOworI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0oZG9jdW1lbnQpOworI2VuZGlmCit9CisKK3ZvaWQgSFRNTE1lZGlhU2Vzc2lvbjo6dW5y
ZWdpc3RlcldpdGhEb2N1bWVudChEb2N1bWVudCYgZG9jdW1lbnQpCit7CisjaWYgRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyAgICBkb2N1bWVudC5yZW1vdmVQbGF5YmFja1Rhcmdl
dFBpY2tlckNsaWVudCgqdGhpcyk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShkb2N1bWVudCk7
CisjZW5kaWYKIH0KIAogdm9pZCBIVE1MTWVkaWFTZXNzaW9uOjphZGRCZWhhdmlvclJlc3RyaWN0
aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKQpAQCAtMTc3LDE5ICsxOTksMjAg
QEAgdm9pZCBIVE1MTWVkaWFTZXNzaW9uOjpzaG93UGxheWJhY2tUYXJnZQogICAgIGlmICghc2hv
d2luZ1BsYXliYWNrVGFyZ2V0UGlja2VyUGVybWl0dGVkKGVsZW1lbnQpKQogICAgICAgICByZXR1
cm47CiAKLSNpZiBQTEFURk9STShJT1MpCi0gICAgZWxlbWVudC5kb2N1bWVudCgpLmZyYW1lKCkt
PnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGVsZW1l
bnQuaGFzVmlkZW8oKSk7Ci0jZW5kaWYKKyAgICBtX2hhdmVSZXF1ZXN0ZWRQbGF5YmFja1Rhcmdl
dFBpY2tlciA9IHRydWU7CisgICAgZWxlbWVudC5kb2N1bWVudCgpLnNob3dQbGF5YmFja1Rhcmdl
dFBpY2tlcihlbGVtZW50KTsKIH0KIAotYm9vbCBIVE1MTWVkaWFTZXNzaW9uOjpoYXNXaXJlbGVz
c1BsYXliYWNrVGFyZ2V0cyhjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KSBjb25zdAor
Ym9vbCBIVE1MTWVkaWFTZXNzaW9uOjpoYXNXaXJlbGVzc1BsYXliYWNrVGFyZ2V0cyhjb25zdCBI
VE1MTWVkaWFFbGVtZW50JikgY29uc3QKIHsKLSAgICBVTlVTRURfUEFSQU0oZWxlbWVudCk7Cisj
aWYgUExBVEZPUk0oSU9TKQorICAgIC8vIEZJWE1FOiBjb25zb2xpZGF0ZSBNYWMgYW5kIGlPUyBp
bXBsZW1lbnRhdGlvbnMKKyAgICBtX2hhc1BsYXliYWNrVGFyZ2V0cyA9IE1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5oYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGUoKTsKKyNl
bmRpZgogCi0gICAgYm9vbCBoYXNUYXJnZXRzID0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVk
TWFuYWdlcigpLmhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZSgpOwotICAgIExPRyhNZWRpYSwg
IkhUTUxNZWRpYVNlc3Npb246Omhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzIC0gcmV0dXJuaW5n
ICVzIiwgaGFzVGFyZ2V0cyA/ICJUUlVFIiA6ICJGQUxTRSIpOworICAgIExPRyhNZWRpYSwgIkhU
TUxNZWRpYVNlc3Npb246Omhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzIC0gcmV0dXJuaW5nICVz
IiwgbV9oYXNQbGF5YmFja1RhcmdldHMgPyAiVFJVRSIgOiAiRkFMU0UiKTsKIAotICAgIHJldHVy
biBoYXNUYXJnZXRzOworICAgIHJldHVybiBtX2hhc1BsYXliYWNrVGFyZ2V0czsKIH0KIAogYm9v
bCBIVE1MTWVkaWFTZXNzaW9uOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChjb25zdCBI
VE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KSBjb25zdApAQCAtMjQ0LDcgKzI2NywzOCBAQCB2b2lk
IEhUTUxNZWRpYVNlc3Npb246OnNldEhhc1BsYXliYWNrVGFyCiAgICAgVU5VU0VEX1BBUkFNKGVs
ZW1lbnQpOwogCiAgICAgbV9oYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyA9
IGhhc0xpc3RlbmVyczsKKworI2lmIFBMQVRGT1JNKElPUykKICAgICBNZWRpYVNlc3Npb25NYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCkuY29uZmlndXJlV2lyZUxlc3NUYXJnZXRNb25pdG9yaW5nKCk7
CisjZWxzZQorICAgIGVsZW1lbnQuZG9jdW1lbnQoKS5jb25maWd1cmVQbGF5YmFja1RhcmdldE1v
bml0b3JpbmcoKTsKKyNlbmRpZgorfQorCit2b2lkIEhUTUxNZWRpYVNlc3Npb246OmRpZENob29z
ZVBsYXliYWNrVGFyZ2V0KE1lZGlhUGxheWJhY2tUYXJnZXQmIGRldmljZSkKK3sKKyAgICBtX2hh
dmVSZXF1ZXN0ZWRQbGF5YmFja1RhcmdldFBpY2tlciA9IGZhbHNlOworICAgIGNsaWVudCgpLnNl
dFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoZGV2aWNlKTsKK30KKwordm9pZCBIVE1MTWVkaWFTZXNz
aW9uOjp0YXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkVGltZXJGaXJlZCgpCit7CisgICAgY2xpZW50
KCkud2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2UoKTsKK30KKwordm9pZCBIVE1MTWVk
aWFTZXNzaW9uOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShib29sIGhh
c1RhcmdldHMpIGNvbnN0Cit7CisgICAgaWYgKG1faGFzUGxheWJhY2tUYXJnZXRzID09IGhhc1Rh
cmdldHMpCisgICAgICAgIHJldHVybjsKKworICAgIG1faGFzUGxheWJhY2tUYXJnZXRzID0gaGFz
VGFyZ2V0czsKKyAgICBpZiAoIW1fdGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZFRpbWVyLmlzQWN0
aXZlKCkpCisgICAgICAgIG1fdGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZFRpbWVyLnN0YXJ0T25l
U2hvdCgwKTsKK30KKworYm9vbCBIVE1MTWVkaWFTZXNzaW9uOjpyZXF1aXJlc1BsYXliYWNrVGFy
Z2V0Um91dGVNb25pdG9yaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9oYXNQbGF5YmFja1Rh
cmdldEF2YWlsYWJpbGl0eUxpc3RlbmVyczsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYVNlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYVNlc3Npb24uaAkocmV2aXNpb24gMTgxMzk2KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsOSArMzAsMTEg
QEAKIAogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uLmgi
CisjaW5jbHVkZSAiVGltZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEb2N1
bWVudDsKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBTb3VyY2VCdWZmZXI7CiAKQEAg
LTQxLDE0ICs0MywxNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgSFRNTE1lZGlhU2Vzc2lvbihN
ZWRpYVNlc3Npb25DbGllbnQmKTsKICAgICB2aXJ0dWFsIH5IVE1MTWVkaWFTZXNzaW9uKCkgeyB9
CiAKKyAgICB2b2lkIHJlZ2lzdGVyV2l0aERvY3VtZW50KERvY3VtZW50Jik7CisgICAgdm9pZCB1
bnJlZ2lzdGVyV2l0aERvY3VtZW50KERvY3VtZW50Jik7CisKICAgICBib29sIHBsYXliYWNrUGVy
bWl0dGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKICAgICBib29sIGRhdGFMb2Fk
aW5nUGVybWl0dGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKICAgICBib29sIGZ1
bGxzY3JlZW5QZXJtaXR0ZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OwogICAgIGJv
b2wgcGFnZUFsbG93c0RhdGFMb2FkaW5nKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsK
ICAgICBib29sIHBhZ2VBbGxvd3NQbGF5YmFja0FmdGVyUmVzdW1pbmcoY29uc3QgSFRNTE1lZGlh
RWxlbWVudCYpIGNvbnN0OworCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkK
ICAgICBib29sIHNob3dpbmdQbGF5YmFja1RhcmdldFBpY2tlclBlcm1pdHRlZChjb25zdCBIVE1M
TWVkaWFFbGVtZW50JikgY29uc3Q7Ci0KICAgICBib29sIGN1cnJlbnRQbGF5YmFja1RhcmdldElz
V2lyZWxlc3MoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OwogICAgIHZvaWQgc2hvd1Bs
YXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKTsKICAgICBib29sIGhh
c1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsK
QEAgLTU4LDYgKzYzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRIYXNQbGF5YmFja1Rhcmdl
dEF2YWlsYWJpbGl0eUxpc3RlbmVycyhjb25zdCBIVE1MTWVkaWFFbGVtZW50JiwgYm9vbCk7CiAj
ZW5kaWYKKwogICAgIGJvb2wgcmVxdWlyZXNGdWxsc2NyZWVuRm9yVmlkZW9QbGF5YmFjayhjb25z
dCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBhbGxv
d3NBbHRlcm5hdGVGdWxsc2NyZWVuKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKICAg
ICBNZWRpYVBsYXllcjo6UHJlbG9hZCBlZmZlY3RpdmVQcmVsb2FkRm9yRWxlbWVudChjb25zdCBI
VE1MTWVkaWFFbGVtZW50JikgY29uc3Q7CkBAIC04NywxMCArOTMsMjUgQEAgcHVibGljOgogI2Vu
ZGlmCiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIHJlcXVpcmVzUGxheWJhY2tUYXJnZXRS
b3V0ZU1vbml0b3JpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2hhc1BsYXliYWNrVGFy
Z2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzOyB9CisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUKQorICAgIHZvaWQgdGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZFRpbWVyRmlyZWQo
KTsKKworICAgIC8vIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoTWVkaWFQbGF5YmFja1RhcmdldCYpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENo
YW5nZShib29sKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNQbGF5
YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZygpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwg
Ym9vbCByZXF1ZXN0ZWRQbGF5YmFja1RhcmdldFBpY2tlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1faGF2ZVJlcXVlc3RlZFBsYXliYWNrVGFyZ2V0UGlja2VyOyB9CisjZW5kaWYKIAogICAg
IEJlaGF2aW9yUmVzdHJpY3Rpb25zIG1fcmVzdHJpY3Rpb25zOwotICAgIGJvb2wgbV9oYXNQbGF5
YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVyczsKKworI2lmIEVOQUJMRShXSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQpCisgICAgbXV0YWJsZSBUaW1lciBtX3RhcmdldEF2YWlsYWJpbGl0eUNo
YW5nZWRUaW1lcjsKKyAgICBib29sIG1faGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0
ZW5lcnMgeyBmYWxzZSB9OworICAgIG11dGFibGUgYm9vbCBtX2hhc1BsYXliYWNrVGFyZ2V0cyB7
IGZhbHNlIH07CisgICAgbXV0YWJsZSBib29sIG1faGF2ZVJlcXVlc3RlZFBsYXliYWNrVGFyZ2V0
UGlja2VyIHsgZmFsc2UgfTsKKyNlbmRpZgogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oCShyZXZpc2lvbiAxODEzOTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NDUsNiArNDQ1LDEyIEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUKQorICAgIHZpcnR1YWwgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmLCBib29sKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRpbmdNb25p
dG9yaW5nUGxheWJhY2tUYXJnZXRzKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHN0b3BNb25pdG9y
aW5nUGxheWJhY2tUYXJnZXRzKCkgeyB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgfkNocm9tZUNsaWVudCgpIHsgfQogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNp
b24gMTgxMzk2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA0LDYgKzEwNCwxMiBAQAogI2luY2x1ZGUgPHJlcGxheS9JbnB1dEN1cnNvci5oPgog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorI2luY2x1ZGUg
IkhUTUxWaWRlb0VsZW1lbnQuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0LmgiCisj
aW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudC5oIgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIEhhc2hTZXQ8UGFnZSo+KiBhbGxQYWdlczsKQEAg
LTE2OTEsNCArMTY5Nyw2NyBAQCB2b2lkIFBhZ2U6OnNldFNlc3Npb25JRChTZXNzaW9uSUQgc2Vz
c2lvCiAgICAgICAgIHZpZXctPnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChzZXNzaW9uSUQu
aXNFcGhlbWVyYWwoKSk7CiB9CiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KQordm9pZCBQYWdlOjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoRG9jdW1lbnQqIGRvY3VtZW50
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbG9jYXRpb24sIGJvb2wgaXNWaWRlbykKK3sKKwor
ICAgIG1fZG9jdW1lbnRSZXF1ZXN0aW5nUGxheWJhY2tUYXJnZXRQaWNrZXIgPSBkb2N1bWVudDsK
KyNpZiBQTEFURk9STShJT1MpCisgICAgLy8gRklYTUU6IHJlZmFjdG9yIGlPUyBpbXBsZW1lbnRh
dGlvbi4KKyAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOworICAgIGNocm9tZSgpLmNsaWVudCgp
LnNob3dQbGF5YmFja1RhcmdldFBpY2tlcihpc1ZpZGVvKTsKKyNlbHNlCisgICAgY2hyb21lKCku
Y2xpZW50KCkuc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGxvY2F0aW9uLCBpc1ZpZGVvKTsKKyNl
bmRpZgorfQorCit2b2lkIFBhZ2U6OmRpZENob29zZVBsYXliYWNrVGFyZ2V0KE1lZGlhUGxheWJh
Y2tUYXJnZXQmIHRhcmdldCkKK3sKKyAgICBEb2N1bWVudCogZG9jdW1lbnRUaGF0UmVxdWVzdGVk
UGlja2VyID0gbnVsbHB0cjsKKworICAgIG1fcGxheWJhY2tUYXJnZXQgPSBzdGQ6Om1ha2VfdW5p
cXVlPE1lZGlhUGxheWJhY2tUYXJnZXQ+KHRhcmdldC5kZXZpY2VQaWNrZXJDb250ZXh0KCkpOwor
ICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFt
ZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IGZyYW1lLT5kb2N1bWVudCgpOworICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkgPT0gbV9k
b2N1bWVudFJlcXVlc3RpbmdQbGF5YmFja1RhcmdldFBpY2tlcikgeworICAgICAgICAgICAgZG9j
dW1lbnRUaGF0UmVxdWVzdGVkUGlja2VyID0gZG9jdW1lbnQ7CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+ZGlkQ2hvb3NlUGxheWJh
Y2tUYXJnZXQodGFyZ2V0KTsKKyAgICB9CisKKyAgICBpZiAoZG9jdW1lbnRUaGF0UmVxdWVzdGVk
UGlja2VyKQorICAgICAgICBkb2N1bWVudFRoYXRSZXF1ZXN0ZWRQaWNrZXItPmRpZENob29zZVBs
YXliYWNrVGFyZ2V0KHRhcmdldCk7CisKKyAgICBtX2RvY3VtZW50UmVxdWVzdGluZ1BsYXliYWNr
VGFyZ2V0UGlja2VyID0gbnVsbHB0cjsKK30KKwordm9pZCBQYWdlOjpwbGF5YmFja1RhcmdldEF2
YWlsYWJpbGl0eURpZENoYW5nZShib29sIGF2YWlsYWJsZSkKK3sKKyAgICBtX2hhc1dpcmVsZXNz
UGxheWJhY2tUYXJnZXQgPSBhdmFpbGFibGU7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbWFp
bkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCisg
ICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5wbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eURpZENo
YW5nZShhdmFpbGFibGUpOworfQorCit2b2lkIFBhZ2U6OmNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0
TW9uaXRvcmluZygpCit7CisgICAgYm9vbCBtb25pdG9yaW5nUmVxdWlyZWQgPSBmYWxzZTsKKyAg
ICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkt
PnJlcXVpcmVzUGxheWJhY2tUYXJnZXRSb3V0ZU1vbml0b3JpbmcoKSkgeworICAgICAgICAgICAg
bW9uaXRvcmluZ1JlcXVpcmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgfQorCisgICAgaWYgKG1fcmVxdWlyZXNQbGF5YmFja1RhcmdldE1vbml0b3JpbmcgPT0g
bW9uaXRvcmluZ1JlcXVpcmVkKQorICAgICAgICByZXR1cm47CisgICAgbV9yZXF1aXJlc1BsYXli
YWNrVGFyZ2V0TW9uaXRvcmluZyA9IG1vbml0b3JpbmdSZXF1aXJlZDsKKworCisgICAgaWYgKG1v
bml0b3JpbmdSZXF1aXJlZCkKKyAgICAgICAgY2hyb21lKCkuY2xpZW50KCkuc3RhcnRpbmdNb25p
dG9yaW5nUGxheWJhY2tUYXJnZXRzKCk7CisgICAgZWxzZQorICAgICAgICBjaHJvbWUoKS5jbGll
bnQoKS5zdG9wTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpOworfQorI2VuZGlmCisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAxODEzOTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsMTEgKzc2
LDEzIEBAIGNsYXNzIEZvY3VzQ29udHJvbGxlcjsKIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVM
b2FkZXJDbGllbnQ7CiBjbGFzcyBIaXN0b3J5SXRlbTsKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7
CiBjbGFzcyBVc2VySW5wdXRCcmlkZ2U7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJ
bnNwZWN0b3JDb250cm9sbGVyOwogY2xhc3MgTWFpbkZyYW1lOwogY2xhc3MgTWVkaWFDYW5TdGFy
dExpc3RlbmVyOworY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsKIGNsYXNzIFBhZ2VDb25maWd1
cmF0aW9uOwogY2xhc3MgUGFnZUNvbnNvbGVDbGllbnQ7CiBjbGFzcyBQYWdlRGVidWdnYWJsZTsK
QEAgLTQyMiw2ICs0MjQsMTYgQEAgcHVibGljOgogICAgIGJvb2wgaXNNdXRlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fbXV0ZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE11dGVkKGJvb2wp
OwogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyAgICB2b2lkIHNob3dQ
bGF5YmFja1RhcmdldFBpY2tlcihEb2N1bWVudCosIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jiwg
Ym9vbCk7CisgICAgYm9vbCBoYXNXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3QgeyByZXR1
cm4gbV9oYXNXaXJlbGVzc1BsYXliYWNrVGFyZ2V0OyB9CisgICAgTWVkaWFQbGF5YmFja1Rhcmdl
dCYgcGxheWJhY2tUYXJnZXQoKSBjb25zdCB7IHJldHVybiAqbV9wbGF5YmFja1RhcmdldC5nZXQo
KTsgfQorICAgIHZvaWQgY29uZmlndXJlUGxheWJhY2tUYXJnZXRNb25pdG9yaW5nKCk7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZENob29zZVBsYXliYWNrVGFyZ2V0KE1lZGlhUGxheWJh
Y2tUYXJnZXQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXliYWNrVGFyZ2V0QXZhaWxh
YmlsaXR5RGlkQ2hhbmdlKGJvb2wpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBpbml0R3JvdXAoKTsKIApAQCAtNTgxLDYgKzU5MywxMyBAQCBwcml2YXRlOgog
CiAgICAgU2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkKKyAgICBEb2N1bWVudCogbV9kb2N1bWVudFJlcXVlc3RpbmdQbGF5YmFja1Rh
cmdldFBpY2tlciB7IG51bGxwdHIgfTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5YmFj
a1RhcmdldD4gbV9wbGF5YmFja1RhcmdldDsKKyAgICBib29sIG1fcmVxdWlyZXNQbGF5YmFja1Rh
cmdldE1vbml0b3JpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNXaXJlbGVzc1BsYXliYWNr
VGFyZ2V0IHsgZmFsc2UgfTsKKyNlbmRpZgorCiAgICAgYm9vbCBtX2lzQ2xvc2luZzsKIAogICAg
IGJvb2wgbV9pc1BsYXlpbmdBdWRpbzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL01lZGlhU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vTWVkaWFTZXNzaW9uLmNwcAkocmV2aXNpb24gMTgxMzk2KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xOTAs
NyArMTkwLDcgQEAgdm9pZCBNZWRpYVNlc3Npb246OnZpc2liaWxpdHlDaGFuZ2VkKCkKIAogdm9p
ZCBNZWRpYVNlc3Npb246OmNsaWVudERhdGFCdWZmZXJpbmdUaW1lckZpcmVkKCkKIHsKLSAgICBM
T0coTWVkaWEsICJNZWRpYVNlc3Npb246OnZpc2liaWxpdHlDaGFuZ2VkKCVwKS0gdmlzaWJsZSA9
ICVzIiwgdGhpcywgbV9jbGllbnQuZWxlbWVudElzSGlkZGVuKCkgPyAiZmFsc2UiIDogInRydWUi
KTsKKyAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb246OmNsaWVudERhdGFCdWZmZXJpbmdUaW1l
ckZpcmVkKCVwKS0gdmlzaWJsZSA9ICVzIiwgdGhpcywgbV9jbGllbnQuZWxlbWVudElzSGlkZGVu
KCkgPyAiZmFsc2UiIDogInRydWUiKTsKIAogICAgIHVwZGF0ZUNsaWVudERhdGFCdWZmZXJpbmco
KTsKIApAQCAtMjIwLDExICsyMjAsNiBAQCBNZWRpYVNlc3Npb246OkRpc3BsYXlUeXBlIE1lZGlh
U2Vzc2lvbjo6CiAgICAgcmV0dXJuIG1fY2xpZW50LmRpc3BsYXlUeXBlKCk7CiB9CiAKLXZvaWQg
TWVkaWFTZXNzaW9uOjp3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZSgpIGNvbnN0Ci17
Ci0gICAgbV9jbGllbnQud2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2UoKTsKLX0KLQog
U3RyaW5nIE1lZGlhU2Vzc2lvbkNsaWVudDo6bWVkaWFTZXNzaW9uVGl0bGUoKSBjb25zdAogewog
ICAgIHJldHVybiBTdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L01lZGlhU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL01lZGlhU2Vzc2lvbi5oCShyZXZpc2lvbiAxODEzOTYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCwxMSArMzAsMjAg
QEAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisjaW5jbHVk
ZSAiTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudC5oIgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsKIGNsYXNzIE1lZGlhU2Vz
c2lvbkNsaWVudDsKIAotY2xhc3MgTWVkaWFTZXNzaW9uIHsKK2NsYXNzIE1lZGlhU2Vzc2lvbgor
I2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisgICAgOiBwdWJsaWMgTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlckNsaWVudAorI2VuZGlmCit7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVNlc3Npb24+IGNyZWF0ZShNZWRpYVNlc3Npb25DbGllbnQm
KTsKIApAQCAtOTksOSArMTA4LDYgQEAgcHVibGljOgogICAgIGJvb2wgY2FuUmVjZWl2ZVJlbW90
ZUNvbnRyb2xDb21tYW5kcygpIGNvbnN0OwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRy
b2xDb21tYW5kKFJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSk7CiAKLSAgICB2aXJ0dWFsIGJvb2wg
cmVxdWlyZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdm9pZCB3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZSgpIGNvbnN0
OwotCiAgICAgZW51bSBEaXNwbGF5VHlwZSB7CiAgICAgICAgIE5vcm1hbCwKICAgICAgICAgRnVs
bHNjcmVlbiwKQEAgLTExMSw2ICsxMTcsMTQgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0hpZGRl
bigpIGNvbnN0OwogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyAgICAv
LyBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIGRpZENo
b29zZVBsYXliYWNrVGFyZ2V0KE1lZGlhUGxheWJhY2tUYXJnZXQmKSBvdmVycmlkZSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoYm9v
bCkgY29uc3Qgb3ZlcnJpZGUgeyB9CisgICAgdmlydHVhbCBib29sIHJlcXVpcmVzUGxheWJhY2tU
YXJnZXRSb3V0ZU1vbml0b3JpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0ZWRQbGF5YmFja1RhcmdldFBpY2tlcigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIE1lZGlh
U2Vzc2lvbkNsaWVudCYgY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KIApAQCAt
MTUwLDcgKzE2NCwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgb3ZlcnJpZGVCYWNr
Z3JvdW5kUGxheWJhY2tSZXN0cmljdGlvbigpIGNvbnN0ID0gMDsKIAorI2lmIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgdmlydHVhbCB2b2lkIHdpcmVsZXNzUm91dGVzQXZh
aWxhYmxlRGlkQ2hhbmdlKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldFdpcmVsZXNzUGxheWJh
Y2tUYXJnZXQoY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldCYpIHsgfQorI2VuZGlmCiAKIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIH5NZWRpYVNlc3Npb25DbGllbnQoKSB7IH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIu
Y3BwCShyZXZpc2lvbiAxODEzOTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9N
ZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4NSwxNCArMjg1LDYg
QEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjphcHBsaWNhdGlvbldpbAogICAgIH0KIH0KIAot
dm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjp3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZUNoYW5nZWQo
KQotewotICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OndpcmVsZXNzUm91dGVz
QXZhaWxhYmxlQ2hhbmdlZCIpOwotICAgIFZlY3RvcjxNZWRpYVNlc3Npb24qPiBzZXNzaW9ucyA9
IG1fc2Vzc2lvbnM7Ci0gICAgZm9yIChhdXRvKiBzZXNzaW9uIDogc2Vzc2lvbnMpCi0gICAgICAg
IHNlc3Npb24tPndpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlKCk7Ci19Ci0KICNpZiAh
UExBVEZPUk0oQ09DT0EpCiB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25T
dGF0ZSgpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Np
b25NYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
TWVkaWFTZXNzaW9uTWFuYWdlci5oCShyZXZpc2lvbiAxODEzOTYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC01NCw3ICs1NCw2IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbGlj
YXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhcHBsaWNhdGlvbldpbGxFbnRlckJhY2tncm91bmQoKSBjb25zdDsKLSAgICB2b2lkIHdpcmVs
ZXNzUm91dGVzQXZhaWxhYmxlQ2hhbmdlZCgpOwogCiAgICAgZW51bSBTZXNzaW9uUmVzdHJpY3Rp
b25GbGFncyB7CiAgICAgICAgIE5vUmVzdHJpY3Rpb25zID0gMCwKQEAgLTc5LDkgKzc4LDggQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHNlc3Npb25DYW5Mb2FkTWVkaWEoY29uc3QgTWVk
aWFTZXNzaW9uJikgY29uc3Q7CiAKKyNpZiBQTEFURk9STShJT1MpCiAgICAgdmlydHVhbCB2b2lk
IGNvbmZpZ3VyZVdpcmVMZXNzVGFyZ2V0TW9uaXRvcmluZygpIHsgfQotCi0jaWYgRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICB2aXJ0dWFsIGJvb2wgaGFzV2lyZWxlc3NUYXJn
ZXRzQXZhaWxhYmxlKCkgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25N
YW5hZ2VySU9TLmgJKHJldmlzaW9uIDE4MTM5NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDUsOSAr
NDUsMTQgQEAgY2xhc3MgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUyA6IHB1YmxpYyBNZQogcHVibGlj
OgogICAgIHZpcnR1YWwgfk1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MoKTsKIAorICAgIHZvaWQgZXh0
ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoKTsKKyAgICB2aXJ0dWFsIGJvb2wg
aGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlKCkgb3ZlcnJpZGU7CisKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXI7CiAKKyAgICBNZWRpYVNlc3Npb25NYW5h
Z2VyaU9TKCk7CisKICAgICB2aXJ0dWFsIHZvaWQgc2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKE1l
ZGlhU2Vzc2lvbiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXNzaW9uV2lsbEVuZFBs
YXliYWNrKE1lZGlhU2Vzc2lvbiYpIG92ZXJyaWRlOwogICAgIApAQCAtNTUsMTQgKzYwLDEwIEBA
IHByaXZhdGU6CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHJlc2V0UmVzdHJpY3Rpb25zKCkgb3Zl
cnJpZGU7CiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotICAgIHZpcnR1
YWwgYm9vbCBoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGUoKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgY29uZmlndXJlV2lyZUxlc3NUYXJnZXRNb25pdG9yaW5nKCkgb3ZlcnJpZGU7Ci0j
ZW5kaWYKIAogICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9uQ2FuTG9hZE1lZGlhKGNvbnN0IE1lZGlh
U2Vzc2lvbiYpIGNvbnN0IG92ZXJyaWRlOwotCi0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUygp
OworICAgIAogICAgIFJldGFpblB0cjxXZWJNZWRpYVNlc3Npb25IZWxwZXI+IG1fb2JqY09ic2Vy
dmVyOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlh
U2Vzc2lvbk1hbmFnZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0JKHJldmlzaW9uIDE4MTM5NikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2Vy
SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1OSw3ICsxNTksNiBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1h
bmFnZXJpT1M6OnJlc2V0UmVzdHJpCiAgICAgYWRkUmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpW
aWRlbywgQXV0b1ByZWxvYWRpbmdOb3RQZXJtaXR0ZWQpOwogfQogCi0jaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKIGJvb2wgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6aGFzV2ly
ZWxlc3NUYXJnZXRzQXZhaWxhYmxlKCkKIHsKICAgICByZXR1cm4gW21fb2JqY09ic2VydmVyIGhh
c1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZV07CkBAIC0xODQsOCArMTgzLDcgQEAgdm9pZCBNZWRp
YVNlc3Npb25NYW5hZ2VyaU9TOjpjb25maWd1cmVXaQogICAgIGVsc2UKICAgICAgICAgW21fb2Jq
Y09ic2VydmVyIHN0b3BNb25pdG9yaW5nQWlyUGxheVJvdXRlc107CiB9Ci0jZW5kaWYKLSAgICAK
Kwogdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2so
TWVkaWFTZXNzaW9uJiBzZXNzaW9uKQogewogICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Np
b25XaWxsQmVnaW5QbGF5YmFjayhzZXNzaW9uKTsKQEAgLTIzMyw2ICsyMzEsMTQgQEAgYm9vbCBN
ZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpzZXNzaW9uQ2FuTAogICAgIHJldHVybiBzZXNzaW9uLnN0
YXRlKCkgPT0gTWVkaWFTZXNzaW9uOjpQbGF5aW5nIHx8ICFzZXNzaW9uLmlzSGlkZGVuKCkgfHwg
c2Vzc2lvbi5kaXNwbGF5VHlwZSgpID09IE1lZGlhU2Vzc2lvbjo6T3B0aW1pemVkOwogfQogCit2
b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxl
RGlkQ2hhbmdlKCkKK3sKKyAgICBWZWN0b3I8TWVkaWFTZXNzaW9uKj4gc2Vzc2lvbkxpc3QgPSBz
ZXNzaW9ucygpOworICAgIGJvb2wgaGF2ZVRhcmdldHMgPSBbbV9vYmpjT2JzZXJ2ZXIgaGFzV2ly
ZWxlc3NUYXJnZXRzQXZhaWxhYmxlXTsKKyAgICBmb3IgKGF1dG8qIHNlc3Npb24gOiBzZXNzaW9u
TGlzdCkKKyAgICAgICAgc2Vzc2lvbi0+ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRD
aGFuZ2UoaGF2ZVRhcmdldHMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIEBpbXBs
ZW1lbnRhdGlvbiBXZWJNZWRpYVNlc3Npb25IZWxwZXIKQEAgLTQ0NSw3ICs0NTEsNyBAQCAtICh2
b2lkKXdpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlCiAgICAgICAgIGlmICghX2NhbGxi
YWNrKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIF9jYWxsYmFjay0+d2lyZWxlc3NS
b3V0ZXNBdmFpbGFibGVDaGFuZ2VkKCk7CisgICAgICAgIF9jYWxsYmFjay0+ZXh0ZXJuYWxPdXRw
dXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoKTsKICAgICB9KTsKIH0KIEBlbmQKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNr
VGFyZ2V0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXliYWNrVGFyZ2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1l
ZGlhUGxheWJhY2tUYXJnZXRfaAorI2RlZmluZSBNZWRpYVBsYXliYWNrVGFyZ2V0X2gKKworI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisKKyNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKK09CSkNfQ0xBU1MgTlNLZXllZEFyY2hpdmVy
OworT0JKQ19DTEFTUyBOU0tleWVkVW5hcmNoaXZlcjsKK09CSkNfQ0xBU1MgQVZPdXRwdXREZXZp
Y2VQaWNrZXJDb250ZXh0OworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
TWVkaWFQbGF5YmFja1RhcmdldCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TWVkaWFQbGF5YmFj
a1RhcmdldCgpIHsgfQorCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgV0VCQ09SRV9FWFBPUlQg
TWVkaWFQbGF5YmFja1RhcmdldChBVk91dHB1dERldmljZVBpY2tlckNvbnRleHQgKmNvbnRleHQg
PSBuaWwpIHsgbV9kZXZpY2VQaWNrZXJDb250ZXh0ID0gY29udGV4dDsgfQorCisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBlbmNvZGUoTlNLZXllZEFyY2hpdmVyICopIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBib29sIGRlY29kZShOU0tleWVkVW5hcmNoaXZlciAqLCBNZWRpYVBs
YXliYWNrVGFyZ2V0Jik7CisKKyAgICB2b2lkIHNldERldmljZVBpY2tlckNvbnRleHQoQVZPdXRw
dXREZXZpY2VQaWNrZXJDb250ZXh0ICpjb250ZXh0KSB7IG1fZGV2aWNlUGlja2VyQ29udGV4dCA9
IGNvbnRleHQ7IH0KKyAgICBBVk91dHB1dERldmljZVBpY2tlckNvbnRleHQgKmRldmljZVBpY2tl
ckNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2RldmljZVBpY2tlckNvbnRleHQuZ2V0KCk7IH0K
KyNlbmRpZgorCitwcm90ZWN0ZWQ6CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRy
PEFWT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dD4gbV9kZXZpY2VQaWNrZXJDb250ZXh0OworI2Vu
ZGlmCit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50LmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudF9oCisj
ZGVmaW5lIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRfaAorCisjaWYgRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKworI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXQu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0Owor
CitjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIH5NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoTWVkaWFQbGF5YmFja1RhcmdldCYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFu
Z2UoYm9vbCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIHJlcXVpcmVzUGxheWJhY2tU
YXJnZXRSb3V0ZU1vbml0b3JpbmcoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHJlcXVl
c3RlZFBsYXliYWNrVGFyZ2V0UGlja2VyKCkgY29uc3QgPSAwOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkK
KworI2VuZGlmIC8vIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRfaApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAkocmV2
aXNpb24gMTgxMzk2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NjcsNiArODY3LDExIEBAIHZvaWQgTWVkaWFQ
bGF5ZXI6OmN1cnJlbnRQbGF5YmFja1RhcmdldEkKIHsKICAgICBtX2NsaWVudC5tZWRpYVBsYXll
ckN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3NDaGFuZ2VkKHRoaXMpOwogfQorCit2b2lk
IE1lZGlhUGxheWVyOjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KGNvbnN0IE1lZGlhUGxheWJh
Y2tUYXJnZXQmIGRldmljZSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldFdpcmVsZXNzUGxheWJhY2tU
YXJnZXQoZGV2aWNlKTsKK30KICNlbmRpZgogCiBkb3VibGUgTWVkaWFQbGF5ZXI6Om1heEZhc3RG
b3J3YXJkUmF0ZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmgJKHJldmlzaW9uIDE4MTM5NikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYg
KzcxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb1NvdXJjZVByb3ZpZGVy
OwogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CitjbGFzcyBNZWRpYVBsYXliYWNrVGFy
Z2V0OwogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiBjbGFzcyBNZWRpYVNvdXJjZVByaXZhdGVD
bGllbnQ7CiAjZW5kaWYKQEAgLTQ3Niw2ICs0NzcsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGN1
cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3NDaGFuZ2VkKCk7CiAgICAgdm9pZCBwbGF5YmFj
a1RhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWQoKTsKKworICAgIHZvaWQgc2V0V2lyZWxlc3NQbGF5
YmFja1RhcmdldChjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Jik7CiAjZW5kaWYKIAogICAgIGRv
dWJsZSBtaW5GYXN0UmV2ZXJzZVJhdGUoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCShyZXZpc2lv
biAxODEzOTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
clByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOworY2xhc3MgTWVkaWFQbGF5
YmFja1RhcmdldDsKIGNsYXNzIFBsYXRmb3JtVGV4dFRyYWNrOwogCiBjbGFzcyBNZWRpYVBsYXll
clByaXZhdGVJbnRlcmZhY2UgewpAQCAtMTY2LDYgKzE2Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgYm9vbCB3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2Fi
bGVkKGJvb2wpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldFdpcmVsZXNzUGxheWJhY2tUYXJn
ZXQoY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldCYpIHsgfQogI2VuZGlmCiAKICNpZiBVU0UoTkFU
SVZFX0ZVTExTQ1JFRU5fVklERU8pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldE1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5
YmFja1RhcmdldE1hYy5tbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0TWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJNZWRpYVBsYXliYWNr
VGFyZ2V0LmgiCisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExB
VEZPUk0oSU9TKQorCisjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZPdXRwdXREZXZpY2VQaWNrZXJD
b250ZXh0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXQuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorCit0
eXBlZGVmIEFWT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dCBBVk91dHB1dERldmljZVBpY2tlckNv
bnRleHRUeXBlOworCitTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKEFWRm91bmRhdGlvbikK
K1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4
dCkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBkZXZp
Y2VDb250ZXh0S2V5ID0gQCJkZXZpY2VDb250ZXh0IjsKKwordm9pZCBNZWRpYVBsYXliYWNrVGFy
Z2V0OjplbmNvZGUoTlNLZXllZEFyY2hpdmVyICphcmNoaXZlcikgY29uc3QKK3sKKyAgICBpZiAo
W2dldEFWT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dENsYXNzKCkgY29uZm9ybXNUb1Byb3RvY29s
OkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKQorICAgICAgICBbYXJjaGl2ZXIgZW5jb2RlT2Jq
ZWN0Om1fZGV2aWNlUGlja2VyQ29udGV4dC5nZXQoKSBmb3JLZXk6ZGV2aWNlQ29udGV4dEtleV07
Cit9CisKK2Jvb2wgTWVkaWFQbGF5YmFja1RhcmdldDo6ZGVjb2RlKE5TS2V5ZWRVbmFyY2hpdmVy
ICp1bmFyY2hpdmVyLCBNZWRpYVBsYXliYWNrVGFyZ2V0JiBwbGF5YmFja1RhcmdldCkKK3sKKyAg
ICBpZiAoIVtnZXRBVk91dHB1dERldmljZVBpY2tlckNvbnRleHRDbGFzcygpIGNvbmZvcm1zVG9Q
cm90b2NvbDpAcHJvdG9jb2woTlNTZWN1cmVDb2RpbmcpXSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgQVZPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0ICpjb250ZXh0ID0gbmlsOworCisg
ICAgQHRyeSB7CisgICAgICAgIGNvbnRleHQgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNs
YXNzOmdldEFWT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dENsYXNzKCkgZm9yS2V5OmRldmljZUNv
bnRleHRLZXldOworICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CisgICAg
ICAgIExPR19FUlJPUigiVGhlIHRhcmdldCBwaWNrZXIgYmVpbmcgZGVjb2RlZCBpcyBub3QgYSBB
Vk91dHB1dERldmljZVBpY2tlckNvbnRleHQuIik7CisgICAgfQorCisgICAgcGxheWJhY2tUYXJn
ZXQubV9kZXZpY2VQaWNrZXJDb250ZXh0ID0gY29udGV4dDsKKworICAgIHJldHVybiBjb250ZXh0
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMuaAkocmV2aXNpb24gMTgxMzk2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiBPQkpDX0NMQVNTIEFWQXNzZXRJ
bWFnZUdlbmVyYXRvcjsKIE9CSkNfQ0xBU1MgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q7
CiBPQkpDX0NMQVNTIEFWTWVkaWFTZWxlY3Rpb25Hcm91cDsKK09CSkNfQ0xBU1MgQVZPdXRwdXRE
ZXZpY2VQaWNrZXJDb250ZXh0OwogT0JKQ19DTEFTUyBBVlBsYXllcjsKIE9CSkNfQ0xBU1MgQVZQ
bGF5ZXJJdGVtOwogT0JKQ19DTEFTUyBBVlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0OwpAQCAtNTks
MTMgKzYwLDE0IEBAIHR5cGVkZWYgc3RydWN0IE9wYXF1ZVZUUGl4ZWxUcmFuc2ZlclNlc3MKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI7Ci1j
bGFzcyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY7Ci1jbGFzcyBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGT2JqQzsKIGNsYXNzIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOwog
Y2xhc3MgQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOworY2xhc3MgSW5iYW5kTWV0YWRhdGFUZXh0
VHJhY2tQcml2YXRlQVZGOworY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakM7Citj
bGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3MgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9i
akM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM7CitjbGFzcyBXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXI7CiAKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMg
OiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uIHsKIHB1YmxpYzoKQEAgLTI3
NCw2ICsyNzYsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgU3RyaW5nIHdpcmVsZXNzUGxheWJh
Y2tUYXJnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6
V2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGUgd2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGUoKSBj
b25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlz
YWJsZWQoKSBjb25zdCBvdmVycmlkZTsKKyNpZiAhUExBVEZPUk0oSU9TKQorICAgIHZpcnR1YWwg
dm9pZCBzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXQm
KSBvdmVycmlkZTsKKyNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxh
eWJhY2tEaXNhYmxlZChib29sKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZURpc2FibGVFeHRl
cm5hbFBsYXliYWNrKCk7CiAjZW5kaWYKQEAgLTM0NSw2ICszNTAsMTAgQEAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGPiBtX21ldGFkYXRhVHJh
Y2s7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkKKyAgICBSZXRhaW5QdHI8QVZPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0PiBt
X291dHB1dERldmljZVBpY2tlckNvbnRleHQ7CisjZW5kaWYKKwogICAgIG11dGFibGUgUmV0YWlu
UHRyPE5TQXJyYXk+IG1fY2FjaGVkU2Vla2FibGVSYW5nZXM7CiAgICAgbXV0YWJsZSBSZXRhaW5Q
dHI8TlNBcnJheT4gbV9jYWNoZWRMb2FkZWRSYW5nZXM7CiAgICAgUmV0YWluUHRyPE5TQXJyYXk+
IG1fY2FjaGVkVHJhY2tzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCShyZXZpc2lvbiAx
ODEzOTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00Niw2ICs0Niw3IEBACiAjaW1wb3J0ICJPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
LmgiCiAjaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIk1lZGlh
UGxheWJhY2tUYXJnZXQuaCIKICNpbXBvcnQgIk1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLmgi
CiAjaW1wb3J0ICJNZWRpYVRpbWVBVkZvdW5kYXRpb24uaCIKICNpbXBvcnQgIlBsYXRmb3JtVGlt
ZVJhbmdlcy5oIgpAQCAtMTM1LDYgKzEzNiwxNCBAQCBAaW50ZXJmYWNlIEFWVVJMQXNzZXQgKFdl
YktpdEV4dGVuc2lvbnMpCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TVVJMICpy
ZXNvbHZlZFVSTDsKIEBlbmQKIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkKK3R5cGVkZWYgQVZPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0IEFW
T3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dFR5cGU7CisKK0BpbnRlcmZhY2UgQVZQbGF5ZXIgKFdl
YktpdEV4dGVuc2lvbnMpCitAcHJvcGVydHkgKG5vbmF0b21pYykgQVZPdXRwdXREZXZpY2VQaWNr
ZXJDb250ZXh0ICpvdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0OworQGVuZAorI2VuZGlmCisKIHR5
cGVkZWYgQVZQbGF5ZXIgQVZQbGF5ZXJUeXBlOwogdHlwZWRlZiBBVlBsYXllckl0ZW0gQVZQbGF5
ZXJJdGVtVHlwZTsKIHR5cGVkZWYgQVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dCBBVlBsYXllckl0
ZW1MZWdpYmxlT3V0cHV0VHlwZTsKQEAgLTU0Niw2ICs1NTUsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAgICAgICAgIFttX2F2UGxheWVyLmdldCgpIHJlbW92
ZU9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJyYXRlIl07CiAjaWYg
RU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICAgICAgW21fYXZQbGF5ZXIuZ2V0
KCkgcmVtb3ZlT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAImV4dGVy
bmFsUGxheWJhY2tBY3RpdmUiXTsKKyAgICAgICAgW21fYXZQbGF5ZXIuZ2V0KCkgcmVtb3ZlT2Jz
ZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIm91dHB1dERldmljZVBpY2tl
ckNvbnRleHQiXTsKICNlbmRpZgogICAgICAgICBtX2F2UGxheWVyID0gbmlsOwogICAgIH0KQEAg
LTkyNyw2ICs5MzcsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OgogICAgIFttX2F2UGxheWVyLmdldCgpIGFkZE9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgp
IGZvcktleVBhdGg6QCJyYXRlIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcg
Y29udGV4dDoodm9pZCAqKU1lZGlhUGxheWVyQVZGb3VuZGF0aW9uT2JzZXJ2YXRpb25Db250ZXh0
UGxheWVyXTsKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIFttX2F2
UGxheWVyLmdldCgpIGFkZE9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgpIGZvcktleVBhdGg6
QCJleHRlcm5hbFBsYXliYWNrQWN0aXZlIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRp
b25OZXcgY29udGV4dDoodm9pZCAqKU1lZGlhUGxheWVyQVZGb3VuZGF0aW9uT2JzZXJ2YXRpb25D
b250ZXh0UGxheWVyXTsKKyAgICBbbV9hdlBsYXllci5nZXQoKSBhZGRPYnNlcnZlcjptX29iamNP
YnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAib3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dCIgb3B0
aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6KHZvaWQgKilNZWRpYVBs
YXllckFWRm91bmRhdGlvbk9ic2VydmF0aW9uQ29udGV4dFBsYXllcl07CisjZW5kaWYKKworI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgdXBkYXRlRGlzYWJsZUV4dGVy
bmFsUGxheWJhY2soKTsKICNlbmRpZgogCkBAIC05MzgsNiArOTUyLDExIEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKICAgICBbbV9hdlBsYXllci5nZXQoKSBzZXRB
bGxvd3NFeHRlcm5hbFBsYXliYWNrOm1fYWxsb3dzV2lyZWxlc3NWaWRlb1BsYXliYWNrXTsKICNl
bmRpZgogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JN
KElPUykKKyAgICBpZiAobV9vdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0KQorICAgICAgICBtX2F2
UGxheWVyLmdldCgpLm91dHB1dERldmljZVBpY2tlckNvbnRleHQgPSBtX291dHB1dERldmljZVBp
Y2tlckNvbnRleHQuZ2V0KCk7CisjZW5kaWYKKwogICAgIGlmIChwbGF5ZXIoKS0+Y2xpZW50KCku
bWVkaWFQbGF5ZXJJc1ZpZGVvKCkpCiAgICAgICAgIGNyZWF0ZUFWUGxheWVyTGF5ZXIoKTsKIApA
QCAtMTEzNCw5ICsxMTUzLDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOgogICAgICAgICBzeW5jVGV4dFRyYWNrQm91bmRzKCk7CiAgICAgICAgIFttX3ZpZGVvRnVs
bHNjcmVlbkxheWVyIGFkZFN1YmxheWVyOm1fdGV4dFRyYWNrUmVwcmVzZW50YXRpb25MYXllci5n
ZXQoKV07CiAgICAgfQotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisKICAg
ICB1cGRhdGVEaXNhYmxlRXh0ZXJuYWxQbGF5YmFjaygpOwotI2VuZGlmCiB9CiAKIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUo
RmxvYXRSZWN0IGZyYW1lKQpAQCAtMjY4Nyw4ICsyNzA1LDkgQEAgYm9vbCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOgogICAgIGlmICghbV9hdlBsYXllcikKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgYm9vbCB3aXJlbGVzc1RhcmdldCA9IFttX2F2UGxheWVyLmdldCgp
IGlzRXh0ZXJuYWxQbGF5YmFja0FjdGl2ZV07CisgICAgYm9vbCB3aXJlbGVzc1RhcmdldCA9IG1f
YXZQbGF5ZXIuZ2V0KCkuZXh0ZXJuYWxQbGF5YmFja0FjdGl2ZTsKICAgICBMT0coTWVkaWEsICJN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjppc0N1cnJlbnRQbGF5YmFja1Rhcmdl
dFdpcmVsZXNzKCVwKSAtIHJldHVybmluZyAlcyIsIHRoaXMsIGJvb2xTdHJpbmcod2lyZWxlc3NU
YXJnZXQpKTsKKwogICAgIHJldHVybiB3aXJlbGVzc1RhcmdldDsKIH0KIApAQCAtMjY5Nyw2ICsy
NzE2LDcgQEAgTWVkaWFQbGF5ZXI6OldpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlIAogICAgIGlm
ICghbV9hdlBsYXllcikKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpUYXJnZXRUeXBlTm9u
ZTsKIAorI2lmIFBMQVRGT1JNKElPUykKICAgICBzd2l0Y2ggKHdrRXhlcm5hbERldmljZVR5cGVG
b3JQbGF5ZXIobV9hdlBsYXllci5nZXQoKSkpIHsKICAgICBjYXNlIHdrRXh0ZXJuYWxQbGF5YmFj
a1R5cGVOb25lOgogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlRhcmdldFR5cGVOb25lOwpA
QCAtMjcwOCw2ICsyNzI4LDEwIEBAIE1lZGlhUGxheWVyOjpXaXJlbGVzc1BsYXliYWNrVGFyZ2V0
VHlwZSAKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBNZWRpYVBsYXll
cjo6VGFyZ2V0VHlwZU5vbmU7CisKKyNlbHNlCisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpUYXJn
ZXRUeXBlQWlyUGxheTsKKyNlbmRpZgogfQogCiBTdHJpbmcgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6d2lyZWxlc3NQbGF5YmFja1RhcmdldE5hbWUoKSBjb25zdApAQCAtMjcy
NSw3ICsyNzQ5LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgog
ewogICAgIGlmICghbV9hdlBsYXllcikKICAgICAgICAgcmV0dXJuICFtX2FsbG93c1dpcmVsZXNz
VmlkZW9QbGF5YmFjazsKLSAgICAKKwogICAgIG1fYWxsb3dzV2lyZWxlc3NWaWRlb1BsYXliYWNr
ID0gW21fYXZQbGF5ZXIuZ2V0KCkgYWxsb3dzRXh0ZXJuYWxQbGF5YmFja107CiAgICAgTE9HKE1l
ZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6d2lyZWxlc3NWaWRlb1Bs
YXliYWNrRGlzYWJsZWQoJXApIC0gcmV0dXJuaW5nICVzIiwgdGhpcywgYm9vbFN0cmluZyghbV9h
bGxvd3NXaXJlbGVzc1ZpZGVvUGxheWJhY2spKTsKIApAQCAtMjczOCwxNiArMjc2MiwzMiBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAgICAgbV9hbGxvd3NXaXJl
bGVzc1ZpZGVvUGxheWJhY2sgPSAhZGlzYWJsZWQ7CiAgICAgaWYgKCFtX2F2UGxheWVyKQogICAg
ICAgICByZXR1cm47Ci0gICAgCisKICAgICBbbV9hdlBsYXllci5nZXQoKSBzZXRBbGxvd3NFeHRl
cm5hbFBsYXliYWNrOiFkaXNhYmxlZF07CiB9CiAKKyNpZiAhUExBVEZPUk0oSU9TKQordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRXaXJlbGVzc1BsYXliYWNrVGFy
Z2V0KGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXQmIHRhcmdldCkKK3sKKyAgICBtX291dHB1dERl
dmljZVBpY2tlckNvbnRleHQgPSB0YXJnZXQuZGV2aWNlUGlja2VyQ29udGV4dCgpOworCisgICAg
TE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0V2lyZWxl
c3NQbGF5YmFja1RhcmdldCglcCkgLSB0YXJnZXQgPSAlcCIsIHRoaXMsIG1fb3V0cHV0RGV2aWNl
UGlja2VyQ29udGV4dC5nZXQoKSk7CisKKyAgICBpZiAoIW1fYXZQbGF5ZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fYXZQbGF5ZXIuZ2V0KCkub3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dCA9
IG1fb3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dC5nZXQoKTsKK30KKyNlbmRpZgorCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZURpc2FibGVFeHRlcm5hbFBs
YXliYWNrKCkKIHsKICAgICBpZiAoIW1fYXZQbGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAorI2lm
IFBMQVRGT1JNKElPUykKICAgICBbbV9hdlBsYXllciBzZXRVc2VzRXh0ZXJuYWxQbGF5YmFja1do
aWxlRXh0ZXJuYWxTY3JlZW5Jc0FjdGl2ZTptX3ZpZGVvRnVsbHNjcmVlbkxheWVyICE9IG5pbF07
CisjZW5kaWYKIH0KICNlbmRpZgogCkBAIC0zMTY5LDYgKzMyMDksOCBAQCAtICh2b2lkKW9ic2Vy
dmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0aCBvCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkKICAgICAgICAgZWxzZSBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAiZXh0
ZXJuYWxQbGF5YmFja0FjdGl2ZSJdKQogICAgICAgICAgICAgZnVuY3Rpb24gPSBXVEY6OmJpbmQo
Jk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXliYWNrVGFyZ2V0SXNXaXJl
bGVzc0RpZENoYW5nZSwgbV9jYWxsYmFjayk7CisgICAgICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlz
RXF1YWxUb1N0cmluZzpAIm91dHB1dERldmljZVBpY2tlckNvbnRleHQiXSkKKyAgICAgICAgICAg
IGZ1bmN0aW9uID0gV1RGOjpiaW5kKCZNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpwbGF5YmFja1RhcmdldElzV2lyZWxlc3NEaWRDaGFuZ2UsIG1fY2FsbGJhY2spOwogI2VuZGlm
CiAgICAgfQogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRp
bmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0
dGluZ3MuY3BwCShyZXZpc2lvbiAxODEzOTYpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFsU2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw2ICs5Nyw3IEBAIEludGVy
bmFsU2V0dGluZ3M6OkJhY2t1cDo6QmFja3VwKFNldHRpbmcKICNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQogICAgICwgbV90b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZChzZXR0aW5ncy5pc1RvdWNo
RXZlbnRFbXVsYXRpb25FbmFibGVkKCkpCiAjZW5kaWYKKyAgICAsIG1fbWVkaWFQbGF5YmFja0Fs
bG93c0FpclBsYXkoc2V0dGluZ3MubWVkaWFQbGF5YmFja0FsbG93c0FpclBsYXkoKSkKIHsKIH0K
IApAQCAtMjAxLDYgKzIwMiw3IEBAIEludGVybmFsU2V0dGluZ3M6OkludGVybmFsU2V0dGluZ3Mo
UGFnZSoKICAgICAsIG1fcGFnZShwYWdlKQogICAgICwgbV9iYWNrdXAocGFnZS0+c2V0dGluZ3Mo
KSkKIHsKKyAgICBwYWdlLT5zZXR0aW5ncygpLnNldE1lZGlhUGxheWJhY2tBbGxvd3NBaXJQbGF5
KGZhbHNlKTsKIH0KIAogdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpyZXNldFRvQ29uc2lzdGVudFN0
YXRlKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCShy
ZXZpc2lvbiAxODEzOTYpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGlu
Z3MuaAkod29ya2luZyBjb3B5KQpAQCAtOTUsNiArOTUsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKICAgICAgICAgYm9vbCBtX3RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVk
OwogI2VuZGlmCisgICAgICAgIGJvb2wgbV9tZWRpYVBsYXliYWNrQWxsb3dzQWlyUGxheTsKICAg
ICB9OwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW50ZXJuYWxTZXR0aW5ncz4gY3JlYXRlKFBh
Z2UqIHBhZ2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODEzOTYpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw3MSBAQAorMjAxNS0wMy0x
MSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFj
XSBVcGRhdGUgQWlyUGxheSBoYW5kbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5p
Zy4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAg
KiBTaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxBVlBsYXliYWNrVGFyZ2V0Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxBVlBsYXliYWNrVGFyZ2V0Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBVlBsYXliYWNrVGFy
Z2V0UGlja2VyUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFj
a1RhcmdldFBpY2tlclByb3h5OjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHk6On5XZWJBVlBsYXli
YWNrVGFyZ2V0UGlja2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJBVlBsYXliYWNrVGFy
Z2V0UGlja2VyUHJveHk6OnNob3dQbGF5YmFja1RhcmdldFBpY2tlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eTo6c3RhcnRpbmdNb25pdG9yaW5nUGxh
eWJhY2tUYXJnZXRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tl
clByb3h5OjpzdG9wTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cyk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5OjpDbGllbnQ6On5DbGllbnQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRldmljZVBpY2tlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnN0YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3RvcE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENob29zZVBsYXliYWNrVGFyZ2V0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJs
ZURpZENoYW5nZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGwubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVQbGF5
YmFja1RhcmdldFBpY2tlcik6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJBVlBsYXliYWNr
VGFyZ2V0UGlja2VyUHJveHlNYWMuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL21hYy9X
ZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMubW06IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYzo6V2ViQVZQbGF5YmFj
a1RhcmdldFBpY2tlclByb3h5TWFjKToKKyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFja1Rh
cmdldFBpY2tlclByb3h5TWFjOjp+V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjOjpvdXRw
dXRlRGV2aWNlQXZhaWxhYmlsaXR5Q2hhbmdlZFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6OmF2YWlsYWJsZURldmljZXNEaWRD
aGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlN
YWM6OmRldmljZVBpY2tlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkFWUGxheWJhY2tUYXJnZXRQ
aWNrZXJQcm94eU1hYzo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjOjpjdXJyZW50RGV2aWNlRGlkQ2hh
bmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFj
OjpzdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6OnN0b3BNb25pdG9yaW5nUGxheWJhY2tU
YXJnZXRzKToKKyAgICAgICAgKC1bV2ViQVZPdXRwdXREZXZpY2VQaWNrZXJNZW51Q29udHJvbGxl
ckhlbHBlciBpbml0V2l0aENhbGxiYWNrOl0pOgorICAgICAgICAoLVtXZWJBVk91dHB1dERldmlj
ZVBpY2tlck1lbnVDb250cm9sbGVySGVscGVyIGNsZWFyQ2FsbGJhY2tdKToKKyAgICAgICAgKC1b
V2ViQVZPdXRwdXREZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlckhlbHBlciBvYnNlcnZlVmFsdWVG
b3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOgorICAgICAgICAqIFdlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlcjo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tl
cik6CisgICAgICAgIChXZWJLaXQ6OldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXI6OnNob3dQbGF5
YmFja0RldmljZVBpY2tlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkFWUGxheWJhY2tUYXJnZXRQ
aWNrZXI6OmNvbmZpZ3VyZVdpcmVMZXNzVGFyZ2V0TW9uaXRvcmluZyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXI6OmFkZENsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXI6OnJlbW92ZUNsaWVudCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXI6OmRpZENob29zZVBsYXliYWNrVGFyZ2V0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlcjo6cGxheWJhY2tU
YXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21l
Q2xpZW50OjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
aHJvbWVDbGllbnQ6OnN0YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cyk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6c3RvcE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBs
YXliYWNrVGFyZ2V0U2VsZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwbGF5YmFj
a1RhcmdldEF2YWlsYWJpbGl0eURpZENoYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb20u
YXBwbGUuV2ViUHJvY2Vzcy5zYi5pbjoKKwogMjAxNS0wMy0xMSAgQ2FybG9zIEdhcmNpYSBDYW1w
b3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gRG8gbm90IGxvb2sgZm9y
IGNoaWxkIHByb2Nlc3NlcyBpbiB0aGUgVUkgcHJvY2VzcyBiaW5hcnkgcGF0aApJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkocmV2aXNpb24g
MTgxMzk2KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNiArMTE1LDEyIEBAIGNsYXNzIENvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlcjsKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQ7
Cit9CisjZW5kaWYKKwogbmFtZXNwYWNlIElQQyB7CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtPiB7CkBAIC00NTQsNiArNDYwLDEzIEBA
IHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZToKICAgICBzdGF0aWMgYm9v
bCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiwgV2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGEmKTsK
IH07CiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQordGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0PiB7CisgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXQmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVy
JiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldCYpOworfTsKKyNlbmRpZgorCiB9IC8vIG5h
bWVzcGFjZSBJUEMKIAogI2VuZGlmIC8vIFdlYkNvcmVBcmd1bWVudENvZGVyc19oCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5t
bQkocmV2aXNpb24gMTgxNDAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9t
YWMvRG93bmxvYWRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDEwIEBAIHZvaWQg
RG93bmxvYWQ6OnN0YXJ0KCkKICAgICBBU1NFUlQoIW1fZGVsZWdhdGUpOwogCiAgICAgbV9kZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tXS0Rvd25sb2FkQXNEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhEb3du
bG9hZDp0aGlzXSk7CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCiAgICAgbV9u
c1VSTERvd25sb2FkID0gYWRvcHROUyhbW05TVVJMRG93bmxvYWQgYWxsb2NdIGluaXRXaXRoUmVx
dWVzdDptX3JlcXVlc3QubnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KSBkZWxlZ2F0ZTptX2Rl
bGVnYXRlLmdldCgpXSk7CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAKICAgICAvLyBG
SVhNRTogQWxsb3cgdGhpcyB0byBiZSBjaGFuZ2VkIGJ5IHRoZSBjbGllbnQuCiAgICAgW21fbnNV
UkxEb3dubG9hZCBzZXREZWxldGVzRmlsZVVwb25GYWlsdXJlOk5PXTsKQEAgLTk2LDcgKzk5LDEw
IEBAIHZvaWQgRG93bmxvYWQ6OnJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWYKICAgICBtX2RlbGVn
YXRlID0gYWRvcHROUyhbW1dLRG93bmxvYWRBc0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aERvd25s
b2FkOnRoaXNdKTsKIAogICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10g
aW5pdFdpdGhCeXRlczpyZXN1bWVEYXRhLmRhdGEoKSBsZW5ndGg6cmVzdW1lRGF0YS5zaXplKCld
KTsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKICAgICBtX25zVVJMRG93bmxv
YWQgPSBhZG9wdE5TKFtbTlNVUkxEb3dubG9hZCBhbGxvY10gaW5pdFdpdGhSZXN1bWVEYXRhOm5z
RGF0YS5nZXQoKSBkZWxlZ2F0ZTptX2RlbGVnYXRlLmdldCgpIHBhdGg6cGF0aF0pOworI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIHBvcCAKIAogICAgIG1fcmVxdWVzdCA9IFttX25zVVJMRG93bmxv
YWQgcmVxdWVzdF07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9t
YWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCShyZXZpc2lvbiAxODEzOTYpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsMTEgKzM4LDE3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Byb3RlY3Rpb25T
cGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1Jlc291cmNlUmVxdWVzdC5oPgorI2ltcG9ydCA8V2ViQ29yZS9Tb2Z0TGlua2luZy5oPgor
I2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAKICNpZiBVU0UoQ0ZORVRXT1JLKQogI2ltcG9ydCA8
Q0ZOZXR3b3JrL0NGVVJMUmVxdWVzdC5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKQorI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Lmg+
CisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBJUEMgewpA
QCAtNDMyLDQgKzQzOCwzMSBAQCBib29sIEFyZ3VtZW50Q29kZXI8Q29udGVudEZpbHRlclVuYmxv
Y2tICiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKQordm9pZCBBcmd1bWVudENvZGVyPE1lZGlhUGxheWJhY2tUYXJnZXQ+OjplbmNvZGUo
QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0JiB0YXJn
ZXQpCit7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZURhdGE+IGRhdGEgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlRGF0YSBhbGxvY10gaW5pdF0pOworICAgIFJldGFpblB0cjxOU0tleWVkQXJjaGl2ZXI+
IGFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRp
bmdXaXRoTXV0YWJsZURhdGE6ZGF0YS5nZXQoKV0pOworICAgIFthcmNoaXZlciBzZXRSZXF1aXJl
c1NlY3VyZUNvZGluZzpZRVNdOworICAgIHRhcmdldC5lbmNvZGUoYXJjaGl2ZXIuZ2V0KCkpOwor
ICAgIFthcmNoaXZlciBmaW5pc2hFbmNvZGluZ107CisgICAgSVBDOjplbmNvZGUoZW5jb2Rlciwg
cmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGRhdGEuZ2V0KCkpKTsKK30KKworYm9vbCBBcmd1
bWVudENvZGVyPE1lZGlhUGxheWJhY2tUYXJnZXQ+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBk
ZWNvZGVyLCBNZWRpYVBsYXliYWNrVGFyZ2V0JiB0YXJnZXQpCit7CisgICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gZGF0YTsKKyAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIsIGRhdGEpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZXRhaW5QdHI8TlNLZXllZFVuYXJjaGl2ZXI+IHVu
YXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFk
aW5nV2l0aERhdGE6KE5TRGF0YSAqKWRhdGEuZ2V0KCldKTsKKyAgICBbdW5hcmNoaXZlciBzZXRS
ZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOworICAgIGlmICghTWVkaWFQbGF5YmFja1RhcmdldDo6
ZGVjb2RlKHVuYXJjaGl2ZXIuZ2V0KCksIHRhcmdldCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAKKyAgICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107CisgICAgcmV0dXJuIHRydWU7
Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSVBDCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QYWdlQ2xpZW50LmgJKHJldmlzaW9uIDE4MTM5NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDEwIEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9FZGl0b3JDbGllbnQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyNpbmNsdWRlICJXZWJN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuaCIKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAjaW5jbHVkZSAiUGx1Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlLmgiCiAKQEAgLTMx
Myw2ICszMTcsMTEgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0KGNvbnN0IEFjdGlvbk1lbnVIaXRUZXN0UmVz
dWx0JiwgYm9vbCBmb3JJbW1lZGlhdGVBY3Rpb24sIEFQSTo6T2JqZWN0KikgPSAwOwogI2VuZGlm
CisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9T
KQorICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJQcm94eT4gY3JlYXRlUGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViUGFnZVByb3h5KikgPSAwOwor
I2VuZGlmCisKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJQcm94eS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5oIgorCisjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYk1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJQcm94eTo6V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5
KENsaWVudCYgY2xpZW50KQorICAgIDogbV9jbGllbnQoJmNsaWVudCkKK3sKK30KKworV2ViTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5Ojp+V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
clByb3h5KCkKK3sKKyAgICBtX2NsaWVudCA9IDA7Cit9CisKK3ZvaWQgV2ViTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlclByb3h5OjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiwgYm9vbCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm47Cit9CisKK3ZvaWQgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5OjpzdGFy
dGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybjsKK30KKwordm9pZCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
UHJveHk6OnN0b3BNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkKK3sKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm47Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlclByb3h5LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlclByb3h5X2gKKyNkZWZpbmUgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5X2gK
KworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisKKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgRmxvYXRSZWN0OworY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsKK30KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgV2ViTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5IHsKK3B1YmxpYzoKKyAgICBjbGFzcyBDbGllbnQg
eworICAgIHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkgeyB9CisKKyAgICBw
dWJsaWM6CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VQbGF5YmFja1RhcmdldChjb25z
dCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0JikgPSAwOworICAgICAgICB2aXJ0dWFsIHZv
aWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoYm9vbCkgPSAwOworCisg
ICAgICAgIHZvaWQgaW52YWxpZGF0ZSgpOworICAgIH07CisKKyAgICB2aXJ0dWFsIH5XZWJNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzaG93UGxh
eWJhY2tUYXJnZXRQaWNrZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgYm9vbCk7CisgICAg
dmlydHVhbCB2b2lkIHN0YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpOworICAgIHZp
cnR1YWwgdm9pZCBzdG9wTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpOworCitwcm90ZWN0ZWQ6
CisgICAgZXhwbGljaXQgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5KENsaWVudCYp
OworCisgICAgQ2xpZW50KiBtX2NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKworI2VuZGlmIC8v
IFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMTgxMzk2KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1
OTIsNCArNTU5Miw0NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2hvdWxkRGlzcGF0Y2hGYWtl
CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTaG91bGREaXNwYXRj
aEZha2VNb3VzZU1vdmVFdmVudHMoc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKSwg
bV9wYWdlSUQpOwogfQogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYg
IVBMQVRGT1JNKElPUykKKworV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5JiBXZWJQ
YWdlUHJveHk6OmRldmljZVBpY2tlclByb3h5KCkKK3sKKyAgICBpZiAoIW1fcGxheWJhY2tUYXJn
ZXRQaWNrZXIpCisgICAgICAgIG1fcGxheWJhY2tUYXJnZXRQaWNrZXIgPSBtX3BhZ2VDbGllbnQu
Y3JlYXRlUGxheWJhY2tUYXJnZXRQaWNrZXIodGhpcyk7CisKKyAgICByZXR1cm4gKm1fcGxheWJh
Y2tUYXJnZXRQaWNrZXIuZ2V0KCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpzaG93UGxheWJh
Y2tUYXJnZXRQaWNrZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiByZWN0LCBib29sIGhhc1Zp
ZGVvKQoreworICAgIGRldmljZVBpY2tlclByb3h5KCkuc2hvd1BsYXliYWNrVGFyZ2V0UGlja2Vy
KG1fcGFnZUNsaWVudC5yb290Vmlld1RvU2NyZWVuKEludFJlY3QocmVjdCkpLCBoYXNWaWRlbyk7
Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpzdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1Rhcmdl
dHMoKQoreworICAgIGRldmljZVBpY2tlclByb3h5KCkuc3RhcnRpbmdNb25pdG9yaW5nUGxheWJh
Y2tUYXJnZXRzKCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpzdG9wTW9uaXRvcmluZ1BsYXli
YWNrVGFyZ2V0cygpCit7CisgICAgZGV2aWNlUGlja2VyUHJveHkoKS5zdG9wTW9uaXRvcmluZ1Bs
YXliYWNrVGFyZ2V0cygpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlUGxheWJh
Y2tUYXJnZXQoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldCYgdGFyZ2V0KQorewor
ICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQodGFyZ2V0KSwgbV9w
YWdlSUQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFp
bGFibGVEaWRDaGFuZ2UoYm9vbCBhdmFpbGFibGUpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UoYXZhaWxhYmxlKSwgbV9wYWdlSUQp
OworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAxODEzOTYpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMSw2
ICsxMTEsMTAgQEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyc0d0ay5oIgogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQorI2lu
Y2x1ZGUgIldlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5oIgorI2VuZGlmCisKIG5h
bWVzcGFjZSBBUEkgewogY2xhc3MgQ29udGV4dE1lbnVDbGllbnQ7CiBjbGFzcyBGaW5kQ2xpZW50
OwpAQCAtMjU4LDYgKzI2Miw5IEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9i
amVjdEkKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKICAgICAsIHB1YmxpYyBXZWJDb2xv
clBpY2tlcjo6Q2xpZW50CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUKSAmJiAhUExBVEZPUk0oSU9TKQorICAgICwgcHVibGljIFdlYk1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJQcm94eTo6Q2xpZW50CisjZW5kaWYKICAgICAsIHB1YmxpYyBXZWJQb3B1cE1lbnVQ
cm94eTo6Q2xpZW50CiAgICAgLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICAsIHB1
YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIgewpAQCAtOTk5LDYgKzEwMDYsMTcgQEAgcHVibGljOgog
ICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBib29sIHNo
b3VsZFNhbXBsZSk7CiAgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGNvbnN0IFN0cmlu
ZyYgdmFsdWUsIGJvb2wgc2hvdWxkU2FtcGxlKTsKIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisgICAgV2ViTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlclByb3h5JiBkZXZpY2VQaWNrZXJQcm94eSgpOworICAgIHZvaWQgc2hvd1BsYXliYWNr
VGFyZ2V0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGJvb2wgaGFzVmlkZW8pOwor
ICAgIHZvaWQgc3RhcnRpbmdNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCk7CisgICAgdm9pZCBz
dG9wTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpOworCisgICAgLy8gV2ViTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlclByb3h5OjpDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hvb3NlUGxh
eWJhY2tUYXJnZXQoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldCYpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5n
ZShib29sKSBvdmVycmlkZTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQ
YWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQ
YWdlQ29uZmlndXJhdGlvbiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CkBAIC0x
NjYyLDYgKzE2ODAsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdmlld1N0YXRlQ2hhbmdlV2Fu
dHNTeW5jaHJvbm91c1JlcGx5OwogICAgIFZlY3Rvcjx1aW50NjRfdD4gbV9uZXh0Vmlld1N0YXRl
Q2hhbmdlQ2FsbGJhY2tzOwogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkg
JiYgIVBMQVRGT1JNKElPUykKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlclByb3h5PiBtX3BsYXliYWNrVGFyZ2V0UGlja2VyOworI2VuZGlmCisKICAgICBi
b29sIG1faXNQbGF5aW5nQXVkaW87CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE4MTM5NikKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTQyMyw0ICs0MjMsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgRGlkUGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0KHN0cnVj
dCBXZWJLaXQ6OkFjdGlvbk1lbnVIaXRUZXN0UmVzdWx0IHJlc3VsdCwgYm9vbCBmb3JJbW1lZGlh
dGVBY3Rpb24sIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAjZW5kaWYKKworI2lmIEVOQUJM
RShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisgICAgU2hvd1Bs
YXliYWNrVGFyZ2V0UGlja2VyKFdlYkNvcmU6OkZsb2F0UmVjdCBwaWNrZXJMb2NhdGlvbiwgYm9v
bCBoYXNWaWRlbykKKyAgICBTdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKQorICAg
IFN0b3BNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkKKyNlbmRpZgogfQpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaAkocmV2aXNpb24gMTgx
Mzk2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDQsNiArMjA0LDEwIEBAIHByaXZhdGU6CiAjaWYgVVNFKERJQ1RB
VElPTl9BTFRFUk5BVElWRVMpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkFsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlcj4gbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI7CiAjZW5k
aWYKKworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisgICAgdmlydHVhbCBz
dGQ6OnVuaXF1ZV9wdHI8V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5PiBjcmVhdGVQ
bGF5YmFja1RhcmdldFBpY2tlcihXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKKyNlbmRpZgogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0JKHJldmlzaW9uIDE4MTM5NikKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0JKHdvcmtpbmcgY29weSkKQEAg
LTcwLDYgKzcwLDEwIEBACiAjaW1wb3J0IDxBcHBLaXQvTlNUZXh0QWx0ZXJuYXRpdmVzLmg+CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisjaW5jbHVkZSAi
V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjLmgiCisjZW5kaWYKKwogQGludGVy
ZmFjZSBOU0FwcGxpY2F0aW9uIChXZWJOU0FwcGxpY2F0aW9uRGV0YWlscykKIC0gKE5TQ3Vyc29y
ICopX2N1cnNvclJlY3RDdXJzb3I7CiBAZW5kCkBAIC03ODgsNiArNzkyLDEyIEBAIHZvaWQgUGFn
ZUNsaWVudEltcGw6OnNob3dQbGF0Zm9ybUNvbnRleHQKICAgICBbbWVudSBwb3BVcE1lbnVQb3Np
dGlvbmluZ0l0ZW06bmlsIGF0TG9jYXRpb246bG9jYXRpb24gaW5WaWV3Om1fd2tWaWV3XTsKIH0K
IAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCitzdGQ6OnVuaXF1ZV9wdHI8
V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRl
UGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViUGFnZVByb3h5KiBwYWdlKQoreworICAgIHJldHVybiBX
ZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6OmNyZWF0ZSgqcGFnZSk7Cit9Cisj
ZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyUHJveHlNYWMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlclByb3h5TWFjX2gKKyNkZWZpbmUgV2ViTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlclByb3h5TWFjX2gKKworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQp
ICYmICFQTEFURk9STShJT1MpCisKKyNpbXBvcnQgIldlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0
OworY2xhc3MgRmxvYXRSZWN0OworfQorCitPQkpDX0NMQVNTIEFWT3V0cHV0RGV2aWNlUGlja2Vy
TWVudUNvbnRyb2xsZXI7CitPQkpDX0NMQVNTIFdlYkFWT3V0cHV0RGV2aWNlUGlja2VyTWVudUNv
bnRyb2xsZXJIZWxwZXI7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMgOiBwdWJsaWMgV2ViTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlclByb3h5IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyUHJveHlNYWMpOworcHVibGljOgorICAgIHZpcnR1YWwgfldlYk1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYygpOworCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM+IGNyZWF0ZShXZWJNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyUHJveHk6OkNsaWVudCYpOworCisgICAgdmlydHVhbCB2b2lkIHNo
b3dQbGF5YmFja1RhcmdldFBpY2tlcihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBib29sKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRpbmdNb25pdG9yaW5nUGxheWJhY2tUYXJn
ZXRzKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN0b3BNb25pdG9yaW5nUGxheWJhY2tU
YXJnZXRzKCkgb3ZlcnJpZGU7CisgICAgCisgICAgdm9pZCBhdmFpbGFibGVEZXZpY2VzRGlkQ2hh
bmdlKCk7CisgICAgdm9pZCBjdXJyZW50RGV2aWNlRGlkQ2hhbmdlKCk7CisKK3ByaXZhdGU6Cisg
ICAgZXhwbGljaXQgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjKFdlYk1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eTo6Q2xpZW50Jik7CisKKyAgICBBVk91dHB1dERldmlj
ZVBpY2tlck1lbnVDb250cm9sbGVyICpkZXZpY2VQaWNrZXIoKTsKKyAgICB2b2lkIG91dHB1dGVE
ZXZpY2VBdmFpbGFiaWxpdHlDaGFuZ2VkVGltZXJGaXJlZCgpOworCisgICAgUmV0YWluUHRyPEFW
T3V0cHV0RGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXI+IG1fZGV2aWNlUGlja2VyTWVudUNvbnRy
b2xsZXI7CisgICAgUmV0YWluUHRyPFdlYkFWT3V0cHV0RGV2aWNlUGlja2VyTWVudUNvbnRyb2xs
ZXJIZWxwZXI+IG1fZGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXJEZWxlZ2F0ZTsKKyAgICBSdW5M
b29wOjpUaW1lcjxXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM+IG1fZGV2aWNl
Q2hhbmdlVGltZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisKKyNlbmRpZiAvLyBXZWJDb250ZXh0TWVu
dVByb3h5TWFjX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjLm1t
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
ODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldlYk1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYy5oIgorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykKKworI2ltcG9ydCA8QVZGb3VuZGF0aW9u
L0FWT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dC5oPgorI2ltcG9ydCA8QVZLaXQvQVZPdXRwdXRE
ZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3Qu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldC5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CisjaW1wb3J0IDx3
dGYvTWFpblRocmVhZC5oPgorCit0eXBlZGVmIEFWT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dCBB
Vk91dHB1dERldmljZVBpY2tlckNvbnRleHRUeXBlOwordHlwZWRlZiBBVk91dHB1dERldmljZVBp
Y2tlck1lbnVDb250cm9sbGVyIEFWT3V0cHV0RGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXJUeXBl
OworCitTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKEFWRm91bmRhdGlvbikKK1NPRlRfTElO
S19GUkFNRVdPUktfT1BUSU9OQUwoQVZLaXQpCisKK1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRp
b24sIEFWT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dCkKK1NPRlRfTElOS19DTEFTUyhBVktpdCwg
QVZPdXRwdXREZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlcikKK1NPRlRfTElOS19DTEFTUyhBVktp
dCwgQVZPdXRwdXREZXZpY2VQaWNrZXJEZWxlZ2F0ZSkKKwordXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKKworQGludGVyZmFjZSBXZWJBVk91dHB1dERldmljZVBpY2tlck1lbnVDb250cm9sbGVySGVs
cGVyIDogTlNPYmplY3QgeworICAgIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1h
YyogbV9jYWxsYmFjazsKK30KKworLSAoaWQpaW5pdFdpdGhDYWxsYmFjazooV2ViTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlclByb3h5TWFjKiljYWxsYmFjazsKKy0gKHZvaWQpY2xlYXJDYWxsYmFj
azsKKy0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooaWQpa2V5UGF0aCBvZk9iamVjdDoo
aWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQgKilj
b250ZXh0OworQGVuZAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RkOjp1bmlxdWVfcHRyPFdl
Yk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYz4gV2ViTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlclByb3h5TWFjOjpjcmVhdGUoV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5
OjpDbGllbnQmIGNsaWVudCkKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFdlYk1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYz4obmV3IFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJQcm94eU1hYyhjbGllbnQpKTsKK30KKworV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
clByb3h5TWFjOjpXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMoV2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclByb3h5OjpDbGllbnQmIGNsaWVudCkKKyAgICA6IFdlYk1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eShjbGllbnQpCisgICAgLCBtX2RldmljZVBpY2tlck1l
bnVDb250cm9sbGVyRGVsZWdhdGUoYWRvcHROUyhbW1dlYkFWT3V0cHV0RGV2aWNlUGlja2VyTWVu
dUNvbnRyb2xsZXJIZWxwZXIgYWxsb2NdIGluaXRXaXRoQ2FsbGJhY2s6dGhpc10pKQorICAgICwg
bV9kZXZpY2VDaGFuZ2VUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6Om91dHB1dGVEZXZpY2VBdmFpbGFiaWxpdHlDaGFuZ2Vk
VGltZXJGaXJlZCkKK3sKK30KKworV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFj
Ojp+V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjKCkKK3sKKyAgICBtX2Rldmlj
ZUNoYW5nZVRpbWVyLnN0b3AoKTsKKyAgICBbbV9kZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlckRl
bGVnYXRlIGNsZWFyQ2FsbGJhY2tdOworCisgICAgaWYgKG1fZGV2aWNlUGlja2VyTWVudUNvbnRy
b2xsZXIpIHsKKyAgICAgICAgW21fZGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXIuZ2V0KCkgcmVt
b3ZlT2JzZXJ2ZXI6bV9kZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlckRlbGVnYXRlLmdldCgpIGZv
cktleVBhdGg6QCJleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSJdOworICAgICAgICBbbV9k
ZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlci5nZXQoKSByZW1vdmVPYnNlcnZlcjptX2RldmljZVBp
Y2tlck1lbnVDb250cm9sbGVyRGVsZWdhdGUuZ2V0KCkgZm9yS2V5UGF0aDpAImV4dGVybmFsT3V0
cHV0RGV2aWNlUGlja2VkIl07CisgICAgICAgIG1fZGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXIg
PSBuaWw7CisgICAgfQorfQorCit2b2lkIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94
eU1hYzo6b3V0cHV0ZURldmljZUF2YWlsYWJpbGl0eUNoYW5nZWRUaW1lckZpcmVkKCkKK3sKKyAg
ICBpZiAoIW1fZGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXIgfHwgIW1fY2xpZW50KQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2NsaWVudC0+ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVE
aWRDaGFuZ2UoZGV2aWNlUGlja2VyKCkuZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUpOwor
fQorCit2b2lkIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYzo6YXZhaWxhYmxl
RGV2aWNlc0RpZENoYW5nZSgpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9kZXZpY2VDaGFuZ2VUaW1lci5zdG9wKCk7CisgICAgbV9kZXZpY2VDaGFuZ2VU
aW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK0FWT3V0cHV0RGV2aWNlUGlja2VyTWVudUNvbnRy
b2xsZXJUeXBlICpXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6OmRldmljZVBp
Y2tlcigpCit7CisgICAgaWYgKCFtX2RldmljZVBpY2tlck1lbnVDb250cm9sbGVyKSB7CisgICAg
ICAgIFJldGFpblB0cjxBVk91dHB1dERldmljZVBpY2tlckNvbnRleHRUeXBlPiBjb250ZXh0ID0g
YWRvcHROUyhbW2dldEFWT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dENsYXNzKCkgYWxsb2NdIGlu
aXRdKTsKKyAgICAgICAgbV9kZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlciA9IGFkb3B0TlMoW1tn
ZXRBVk91dHB1dERldmljZVBpY2tlck1lbnVDb250cm9sbGVyQ2xhc3MoKSBhbGxvY10gaW5pdFdp
dGhPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0OmNvbnRleHQuZ2V0KCldKTsKKworICAgICAgICBb
bV9kZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlci5nZXQoKSBhZGRPYnNlcnZlcjptX2RldmljZVBp
Y2tlck1lbnVDb250cm9sbGVyRGVsZWdhdGUuZ2V0KCkgZm9yS2V5UGF0aDpAImV4dGVybmFsT3V0
cHV0RGV2aWNlQXZhaWxhYmxlIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcg
Y29udGV4dDpudWxscHRyXTsKKyAgICAgICAgW21fZGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXIu
Z2V0KCkgYWRkT2JzZXJ2ZXI6bV9kZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlckRlbGVnYXRlLmdl
dCgpIGZvcktleVBhdGg6QCJleHRlcm5hbE91dHB1dERldmljZVBpY2tlZCIgb3B0aW9uczpOU0tl
eVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6bnVsbHB0cl07CisKKyAgICAgICAgaWYg
KGRldmljZVBpY2tlcigpLmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKQorICAgICAgICAg
ICAgYXZhaWxhYmxlRGV2aWNlc0RpZENoYW5nZSgpOworICAgIH0KKworICAgIHJldHVybiBtX2Rl
dmljZVBpY2tlck1lbnVDb250cm9sbGVyLmdldCgpOworfQorCit2b2lkIFdlYk1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJQcm94eU1hYzo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYgbG9jYXRpb24sIGJvb2wpCit7CisgICAgaWYgKCFtX2NsaWVudCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgW2RldmljZVBpY2tlcigpIHNob3dNZW51Rm9yUmVjdDps
b2NhdGlvbiBhcHBlYXJhbmNlTmFtZTpOU0FwcGVhcmFuY2VOYW1lVmlicmFudExpZ2h0XTsKK30K
Kwordm9pZCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6OmN1cnJlbnREZXZp
Y2VEaWRDaGFuZ2UoKQoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fY2xpZW50LT5kaWRDaG9vc2VQbGF5YmFja1RhcmdldChXZWJDb3JlOjpNZWRpYVBsYXli
YWNrVGFyZ2V0KFtkZXZpY2VQaWNrZXIoKSBvdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0XSkpOwor
fQorCit2b2lkIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYzo6c3RhcnRpbmdN
b25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkKK3sKKyAgICBkZXZpY2VQaWNrZXIoKTsKK30KKwor
dm9pZCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6OnN0b3BNb25pdG9yaW5n
UGxheWJhY2tUYXJnZXRzKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKK0BpbXBs
ZW1lbnRhdGlvbiBXZWJBVk91dHB1dERldmljZVBpY2tlck1lbnVDb250cm9sbGVySGVscGVyCist
IChpZClpbml0V2l0aENhbGxiYWNrOihXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlN
YWMqKWNhbGxiYWNrCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAg
IHJldHVybiBuaWw7CisKKyAgICBtX2NhbGxiYWNrID0gY2FsbGJhY2s7CisKKyAgICByZXR1cm4g
c2VsZjsKK30KKworLSAodm9pZCljbGVhckNhbGxiYWNrCit7CisgICAgbV9jYWxsYmFjayA9IG5p
bDsKK30KKworLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihpZClrZXlQYXRoIG9mT2Jq
ZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2UgY29udGV4dDoodm9p
ZCAqKWNvbnRleHQKK3sKKyAgICBVTlVTRURfUEFSQU0oY2hhbmdlKTsKKyAgICBVTlVTRURfUEFS
QU0oY29udGV4dCk7CisgICAgVU5VU0VEX1BBUkFNKG9iamVjdCk7CisKKyAgICBpZiAoIW1fY2Fs
bGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghW2tleVBhdGggaXNFcXVhbFRvU3Ry
aW5nOkAiZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUiXSAmJiAhW2tleVBhdGggaXNFcXVh
bFRvU3RyaW5nOkAiZXh0ZXJuYWxPdXRwdXREZXZpY2VQaWNrZWQiXSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgUmV0YWluUHRyPFdlYkFWT3V0cHV0RGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXJI
ZWxwZXI+IHN0cm9uZ1NlbGYgPSBzZWxmOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gc3Ryb25n
S2V5UGF0aCA9IGtleVBhdGg7CisgICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiwgc3Ry
b25nS2V5UGF0aF0geworICAgICAgICBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlN
YWMqIGNhbGxiYWNrID0gc3Ryb25nU2VsZi0+bV9jYWxsYmFjazsKKyAgICAgICAgaWYgKCFjYWxs
YmFjaykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoW3N0cm9uZ0tleVBhdGgg
aXNFcXVhbFRvU3RyaW5nOkAiZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUiXSkKKyAgICAg
ICAgICAgIGNhbGxiYWNrLT5hdmFpbGFibGVEZXZpY2VzRGlkQ2hhbmdlKCk7CisgICAgICAgIGVs
c2UgaWYgKFtzdHJvbmdLZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImV4dGVybmFsT3V0cHV0RGV2
aWNlUGlja2VkIl0pCisgICAgICAgICAgICBjYWxsYmFjay0+Y3VycmVudERldmljZURpZENoYW5n
ZSgpOworICAgIH0pOworfQorQGVuZAorCisjZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4MTM5NikKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzYsNiAr
NzYsMTAgQEAKIAkJMDBCOTY2MTkxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMEI5NjYxNzE4RTI1
QUUxMDBDRTFGODggLyogRmluZENsaWVudC5tbSAqLzsgfTsKIAkJMDBCOTY2MUExOEUyNUFFMTAw
Q0UxRjg4IC8qIEZpbmRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDAwQjk2NjE4MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50LmggKi87
IH07CiAJCTA3NkU4ODRFMUExM0NBREYwMDVFOTBGQyAvKiBBUElDb250ZXh0TWVudUNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2RTg4NEQx
QTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNvbnRleHRNZW51Q2xpZW50LmggKi87IH07CisJCTA3OTIx
NjRDMUFBNTUwMTkwMEEzQzA0OSAvKiBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHku
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5MjE2
NDgxQUE1NEU5RDAwQTNDMDQ5IC8qIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5j
cHAgKi87IH07CisJCTA3OTIxNjREMUFBNTUwMUYwMEEzQzA0OSAvKiBXZWJNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3OTIxNjQ5MUFBNTRFOUQwMEEzQzA0OSAvKiBXZWJNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyUHJveHkuaCAqLzsgfTsKKwkJMDc5MjE2NTAxQUE1NTI4QTAwQTNDMDQ5IC8qIFdl
Yk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5MjE2NEUxQUE1NTI4QTAwQTNDMDQ5IC8qIFdl
Yk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYy5oICovOyB9OworCQkwNzkyMTY1MTFB
QTU1MjhBMDBBM0MwNDkgLyogV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5MjE2NEYx
QUE1NTI4QTAwQTNDMDQ5IC8qIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYy5t
bSAqLzsgfTsKIAkJMEYwQzM2NTgxOEMwNTFCQTAwRjYwN0Q3IC8qIFJlbW90ZUxheWVyVHJlZUhv
c3RJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjBDMzY1NzE4QzA1MUJBMDBGNjA3RDcgLyogUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbSAqLzsg
fTsKIAkJMEYwQzM2NUExOEMwNTU1ODAwRjYwN0Q3IC8qIExheWVyUmVwcmVzZW50YXRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEMzNjU5MThD
MDU1NTgwMEY2MDdENyAvKiBMYXllclJlcHJlc2VudGF0aW9uLmggKi87IH07CiAJCTBGMEMzNjVD
MThDMDVDQTEwMEY2MDdENyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQzM2NUIx
OEMwNUNBMTAwRjYwN0Q3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0g
Ki87IH07CkBAIC0yMTU4LDYgKzIxNjIsMTAgQEAKIAkJMDBCOTY2MTgxOEUyNUFFMTAwQ0UxRjg4
IC8qIEZpbmRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmluZENs
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZFODg0RDFBMTNDQURGMDA1
RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQVBJQ29udGV4dE1lbnVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMDc2RTg4NEYxQTEzQ0JDNjAwNUU5MEZDIC8qIEFQSUluamVjdGVkQnVuZGxlUGFnZUNv
bnRleHRNZW51Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUlu
amVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTA3OTIxNjQ4MUFBNTRFOUQwMEEzQzA0OSAvKiBXZWJNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMDc5MjE2NDkxQUE1NEU5RDAwQTNDMDQ5IC8qIFdlYk1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDc5MjE2NEUxQUE1NTI4QTAwQTNDMDQ5IC8qIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJQcm94eU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDc5MjE2NEYxQUE1NTI4QTAwQTNDMDQ5IC8qIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJQcm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDg2N0Q2QTVGRTg0MDMwN0MwMkFBQzA3IC8qIEFwcEtpdC5mcmFtZXdv
cmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFw
cGVyLmZyYW1ld29yazsgbmFtZSA9IEFwcEtpdC5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0
ZT4iOyB9OwogCQkwODlDMTY2N0ZFODQxMTU4QzAyQUFDMDcgLyogRW5nbGlzaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQucGxpc3Quc3RyaW5nczsgbmFtZSA9IEVuZ2xpc2g7IHBhdGggPSBFbmdsaXNoLmxwcm9q
L0luZm9QbGlzdC5zdHJpbmdzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBDMzY1
NzE4QzA1MUJBMDBGNjA3RDcgLyogUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFJlbW90ZUxheWVyVHJlZUhvc3RJT1MubW07
IHBhdGggPSBpb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTYxNDUsNiArNjE1Myw4IEBACiAJCQkJNTEyRTM1MjAxMzBCNTUwMTAwQUJE
MTlBIC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHkuY3BwICovLAogCQkJCTUxMkUz
NTIxMTMwQjU1MDEwMEFCRDE5QSAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclByb3h5Lmgg
Ki8sCiAJCQkJNTEyRTM1RjAxMzBCNjM4QzAwQUJEMTlBIC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJMDc5MjE2NDgxQUE1NEU5RDAwQTNDMDQ5
IC8qIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5jcHAgKi8sCisJCQkJMDc5MjE2
NDkxQUE1NEU5RDAwQTNDMDQ5IC8qIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5o
ICovLAogCQkJCUJDNzJCQTFCMTFFNjQ5MDcwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3Qu
Y3BwICovLAogCQkJCUJDNzJCQTFDMTFFNjQ5MDcwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExp
c3QuaCAqLywKIAkJCQlGMDM2OTc4NzE1RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXIu
Y3BwICovLApAQCAtNzAwMyw2ICs3MDEzLDggQEAKIAkJCQkyRDEyNUM1RDE4NTdFQTA1MDAzQkEz
Q0IgLyogVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tICovLAogCQkJCTJENkNEMTE3MTg5MDU4
QTUwMEU1QTRBMCAvKiBWaWV3U25hcHNob3RTdG9yZS5oICovLAogCQkJCTJENkNEMTE4MTg5MDU4
QTUwMEU1QTRBMCAvKiBWaWV3U25hcHNob3RTdG9yZS5tbSAqLywKKwkJCQkwNzkyMTY0RTFBQTU1
MjhBMDBBM0MwNDkgLyogV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjLmggKi8s
CisJCQkJMDc5MjE2NEYxQUE1NTI4QTAwQTNDMDQ5IC8qIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJQcm94eU1hYy5tbSAqLywKIAkJCQk3MjhFODZFRjE3OTUxODhDMDA4Nzg3OUUgLyogV2Vi
Q29sb3JQaWNrZXJNYWMuaCAqLywKIAkJCQk3MjhFODZGMDE3OTUxODhDMDA4Nzg3OUUgLyogV2Vi
Q29sb3JQaWNrZXJNYWMubW0gKi8sCiAJCQkJNTFBQ0JCOUUxMjdBOEYyQzAwRDIwM0I5IC8qIFdl
YkNvbnRleHRNZW51UHJveHlNYWMuaCAqLywKQEAgLTgwOTUsNiArODEwNyw3IEBACiAJCQkJN0Mz
NjFENzkxOTI4MDNCRDAwMzZBNTlEIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5TWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTNGODg5RDE1MTg4Nzc4QzkwMEZFQURBRiAvKiBX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5Q0Q1
NUFBMTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMDc5MjE2NEQxQUE1NTAxRjAwQTNDMDQ5IC8qIFdlYk1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjkyMzJERjQx
OEIyOUQ2ODAwRDA1OTZGIC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RNYWMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJEMDczMEEzMTlGOUM3REEwMEU5RDlDNCAvKiBXS0FjdGlvbk1lbnVD
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzRCNzI0NDE5RjVCOUJFMDBBRTk2RDYg
LyogV0tBY3Rpb25NZW51SXRlbVR5cGVzLmggaW4gSGVhZGVycyAqLywKQEAgLTgyODQsNiArODI5
Nyw3IEBACiAJCQkJMUFCOEExRjQxODQwMEI4RjAwRTlBRTY5IC8qIFdLUGFnZUZpbmRDbGllbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjhBMUY2MTg0MDBCOUQwMEU5QUU2OSAvKiBXS1BhZ2VG
aW5kTWF0Y2hlc0NsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCOEExRjAxODQwMEIwMDAw
RTlBRTY5IC8qIFdLUGFnZUZvcm1DbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3OTIxNjUw
MUFBNTUyOEEwMEEzQzA0OSAvKiBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDN0I2MzM3MTJBNDVBQkEwMEQxNzRBNCAvKiBXS1BhZ2VH
cm91cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCOEExRUMxODQwMDgwOTAwRTlBRTY5IC8qIFdL
UGFnZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyRDAyMTkxMkFDNDI2QzAw
RTczMkEzIC8qIFdLUGFnZUxvYWRUeXBlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC05NTQ5LDYgKzk1
NjMsNyBAQAogCQkJCTBGQ0I0RTYzMThCQkUzRDkwMDBGQ0ZDOSAvKiBQYWdlQ2xpZW50SW1wbC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0I0RTQ3MThCQkUwNDQwMDBGQ0ZDOSAvKiBQYWdlQ2xp
ZW50SW1wbElPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBQzc1MzdCMTgzQTlGREIwMDcyQ0Ix
NSAvKiBQYWdlTG9hZFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3OTIxNjUxMUFBNTUy
OEEwMEEzQzA0OSAvKiBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQlDNTc0QTU4MjEyRTY2NjgxMDAyREZFOTggLyogUGFzdGVib2FyZFR5
cGVzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE5NTgyRDYxNTNDQzA1NDAwQjYwODc1IC8qIFBE
RktpdEltcG9ydHMubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDg3MEQxMDE2MjM0RkZFMDAwQTNG
MjAgLyogUERGUGx1Z2luLm1tIGluIFNvdXJjZXMgKi8sCkBAIC05NzQ2LDYgKzk3NjEsNyBAQAog
CQkJCUJDMTExQTVFMTEyRjRGQkIwMDMzN0JBQiAvKiBXZWJFZGl0b3JDbGllbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkQyOEYzRTYxODg1Q0NDMTAwNEI5RUFFIC8qIFdlYkVkaXRvckNsaWVu
dElPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUM1MjM3RjYwMTI0NDFDQTMwMDc4MDQ3MiAvKiBX
ZWJFZGl0b3JDbGllbnRNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQkwNzkyMTY0QzFBQTU1MDE5
MDBBM0MwNDkgLyogV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDMTExQUUwMTEyRjVCQzIwMDMzN0JBQiAvKiBXZWJFcnJvcnNNYWMubW0g
aW4gU291cmNlcyAqLywKIAkJCQlDMDMzN0RBRTEyN0EyNEZFMDA4RkY0RjQgLyogV2ViRXZlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwMzJEQkExMEY0MzgwRjAwNThDMTVBIC8qIFdlYkV2
ZW50Q29udmVyc2lvbi5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgkocmV2aXNpb24g
MTgxMzk2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vz
cy5zYi5pbgkod29ya2luZyBjb3B5KQpAQCAtMjk3LDMgKzI5NywxOCBAQAogICAgICAgIChob21l
LXN1YnBhdGggIi9MaWJyYXJ5L0NvbXBvbmVudHMiKQogICAgICAgIChob21lLXN1YnBhdGggIi9M
aWJyYXJ5L0tleWJvYXJkIExheW91dHMiKQogICAgICAgIChob21lLXN1YnBhdGggIi9MaWJyYXJ5
L0lucHV0IE1ldGhvZHMiKSkKKworOzsgQWlyUGxheQorOzsgRklYTUU6IHJlbW92ZSB0aGlzIGFz
IGRlc2NyaWJlZCBpbiByZGFyOi8vMTk4Njk0NDgKKyhhbGxvdyBtYWNoLWxvb2t1cAorICAgIChn
bG9iYWwtbmFtZSAiY29tLmFwcGxlLmNvcmVtZWRpYS5lbmRwb2ludC5haXJwbGF5dWlhZ2VudCIp
CisgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuY29yZW1lZGlhLmVuZHBvaW50c3RyZWFtLmFp
cnBsYXl1aWFnZW50IikKKyAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5jb3JlbWVkaWEuZW5k
cG9pbnRwbGF5YmFja3Nlc3Npb24uYWlycGxheXVpYWdlbnQiKQorICAgIChnbG9iYWwtbmFtZSAi
Y29tLmFwcGxlLmNvcmVtZWRpYS5lbmRwb2ludHBpY2tlciIpKQorCis7OyBBaXJQbGF5CisoYWxs
b3cgbWFjaC1sb29rdXAKKyAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5jb3JlbWVkaWEuZW5k
cG9pbnQueHBjIikKKyAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5jb3JlbWVkaWEuZW5kcG9p
bnRzdHJlYW0ueHBjIikKKyAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5jb3JlbWVkaWEuZW5k
cG9pbnRwbGF5YmFja3Nlc3Npb24ueHBjIikKKyAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5j
b3JlbWVkaWEuZW5kcG9pbnRwaWNrZXIueHBjIikpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwCShyZXZpc2lvbiAxODEzOTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMDEsNCAr
MTEwMSwyNiBAQCBib29sIFdlYkNocm9tZUNsaWVudDo6c2hvdWxkRGlzcGF0Y2hGYWtlCiAgICAg
cmV0dXJuIG1fcGFnZS0+c2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKCk7CiB9CiAK
KyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQor
dm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNob3dQbGF5YmFja1RhcmdldFBpY2tlcihjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGJvb2wgaXNWaWRlbykKK3sKKyAgICAvLyAgICAgSW50
UG9pbnQgc2Nyb2xsUG9zaXRpb25BdE5ld1NjYWxlID0gbWFpbkZyYW1lVmlldygpLT5yb290Vmll
d1RvQ29udGVudHMoLWNlbnRlckluVmlld0Nvb3JkaW5hdGVzKTsKKworICAgIEZyYW1lVmlldyog
ZnJhbWVWaWV3ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpOworICAgIEZsb2F0UmVjdCBy
ZWN0KGZyYW1lVmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KGZyYW1lVmlldy0+d2luZG93VG9Db250
ZW50cyhwb3NpdGlvbikpLCBGbG9hdFNpemUoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlNob3dQbGF5YmFja1RhcmdldFBpY2tlcihyZWN0LCBpc1ZpZGVvKSk7
Cit9CisKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1Rh
cmdldHMoKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdGFy
dGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKSk7Cit9CisKK3ZvaWQgV2ViQ2hyb21lQ2xp
ZW50OjpzdG9wTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpCit7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0b3BNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkp
OworfQorI2VuZGlmCisKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgJKHJldmlzaW9uIDE4MTM5NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxMCw2
ICszMTAsMTIgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGREaXNwYXRjaEZh
a2VNb3VzZU1vdmVFdmVudHMoKSBjb25zdCBvdmVycmlkZTsKIAorI2lmIEVOQUJMRShXSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisgICAgdmlydHVhbCB2b2lkIHNo
b3dQbGF5YmFja1RhcmdldFBpY2tlcihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1Rhcmdl
dHMoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcE1vbml0b3JpbmdQbGF5YmFja1Rh
cmdldHMoKSBvdmVycmlkZTsKKyNlbmRpZgorCiAgICAgU3RyaW5nIG1fY2FjaGVkVG9vbFRpcDsK
ICAgICBtdXRhYmxlIFJlZlB0cjxXZWJGcmFtZT4gbV9jYWNoZWRGcmFtZVNldExhcmdlc3RGcmFt
ZTsKICAgICBtdXRhYmxlIGJvb2wgbV9jYWNoZWRNYWluRnJhbWVIYXNIb3Jpem9udGFsU2Nyb2xs
YmFyOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CShyZXZpc2lvbiAxODEzOTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcgQEAgY2xhc3MgSFRNTFBs
dWdJbkVsZW1lbnQ7CiBjbGFzcyBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OwogY2xhc3MgSW50UG9p
bnQ7CiBjbGFzcyBLZXlib2FyZEV2ZW50OworY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsKIGNs
YXNzIFBhZ2U7CiBjbGFzcyBQcmludENvbnRleHQ7CiBjbGFzcyBSYW5nZTsKQEAgLTE0Miw3ICsx
NDMsNiBAQCBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKLQogY2xhc3MgRHJhd2luZ0FyZWE7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJk
TGlzdDsKIGNsYXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKQEAgLTEw
OTMsNiArMTA5MywxMSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRTaG91bGREaXNwYXRjaEZh
a2VNb3VzZU1vdmVFdmVudHMoYm9vbCBkaXNwYXRjaCkgeyBtX3Nob3VsZERpc3BhdGNoRmFrZU1v
dXNlTW92ZUV2ZW50cyA9IGRpc3BhdGNoOyB9CiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQorICAgIHZvaWQgcGxheWJhY2tUYXJnZXRTZWxl
Y3RlZChjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0JiBvdXRwdXREZXZpY2UpIGNv
bnN0OworICAgIHZvaWQgcGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UoYm9vbCk7
CisjZW5kaWYKKwogICAgIHVpbnQ2NF90IG1fcGFnZUlEOwogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OlBhZ2U+IG1fcGFnZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxODEzOTYp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgkod29ya2luZyBjb3B5KQpAQCAtNDExLDQgKzQxMSwxMCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
IExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgogCiAgICAgU2V0U2hvdWxkRGlzcGF0Y2hGYWtlTW91
c2VNb3ZlRXZlbnRzKGJvb2wgc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKQorCisj
aWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykKKyAg
ICBQbGF5YmFja1RhcmdldFNlbGVjdGVkKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQgdGFy
Z2V0KQorICAgIFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKGJvb2wgYXZhaWxh
YmxlKQorI2VuZGlmCisKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHJldmlzaW9uIDE4MTM5NikKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtODcsNiArODcsMTAgQEAKICNpbXBvcnQgPFdlYkNvcmUvaHRtbGVkaXRpbmcuaD4K
ICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgogCisjaWYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXQu
aD4KKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC0xMTg3LDYgKzExOTEsMjAgQEAgdm9pZCBXZWJQYWdlOjpzZXRGb250KGNvbnN0IFN0
cmluZyYgZm9udAogICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5Rm9udFN0eWxlcyhmb250RmFtaWx5
LCBmb250U2l6ZSwgZm9udFRyYWl0cyk7CiB9CiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQordm9pZCBXZWJQYWdlOjpwbGF5YmFja1Rhcmdl
dFNlbGVjdGVkKGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQmIHBsYXliYWNrVGFy
Z2V0KSBjb25zdAoreworICAgIE1lZGlhUGxheWJhY2tUYXJnZXQgbm9uQ29uc3RUYXJnZXQocGxh
eWJhY2tUYXJnZXQuZGV2aWNlUGlja2VyQ29udGV4dCgpKTsKKyAgICBtX3BhZ2UtPmRpZENob29z
ZVBsYXliYWNrVGFyZ2V0KG5vbkNvbnN0VGFyZ2V0KTsKK30KKwordm9pZCBXZWJQYWdlOjpwbGF5
YmFja1RhcmdldEF2YWlsYWJpbGl0eURpZENoYW5nZShib29sIGNoYW5nZWQpCit7CisgICAgbV9w
YWdlLT5wbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eURpZENoYW5nZShjaGFuZ2VkKTsKK30KKyNl
bmRpZgorCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFD
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248475</attachid>
            <date>2015-03-11 18:28:37 -0700</date>
            <delta_ts>2015-03-11 18:28:37 -0700</delta_ts>
            <desc>Rebased patch for landing</desc>
            <filename>patch_for_landing.txt</filename>
            <type>text/plain</type>
            <size>85738</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTQyMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg4IEBACisyMDE1LTAzLTExICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFVwZGF0ZSBB
aXJQbGF5IGhhbmRsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDI1NDEKKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2hvd1BsYXliYWNrVGFy
Z2V0UGlja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphZGRQbGF5YmFja1Rhcmdl
dFBpY2tlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVtb3ZlUGxheWJh
Y2tUYXJnZXRQaWNrZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNvbmZp
Z3VyZVBsYXliYWNrVGFyZ2V0TW9uaXRvcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6cmVxdWlyZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZyk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6cGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRpZENob29zZVBsYXliYWNrVGFyZ2V0KToKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVnaXN0ZXJXaXRoRG9jdW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dW5yZWdpc3RlcldpdGhE
b2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYVNlc3Np
b246OkhUTUxNZWRpYVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhU2Vzc2lv
bjo6cmVnaXN0ZXJXaXRoRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhU2Vz
c2lvbjo6dW5yZWdpc3RlcldpdGhEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFTZXNzaW9uOjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhU2Vzc2lvbjo6aGFzV2lyZWxlc3NQbGF5YmFja1RhcmdldHMpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhU2Vzc2lvbjo6c2V0SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxp
dHlMaXN0ZW5lcnMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhU2Vzc2lvbjo6ZGlkQ2hv
b3NlUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhU2Vzc2lvbjo6
ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhU2Vzc2lvbjo6cmVxdWlyZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmlu
Zyk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmg6CisgICAgICAgICogcGFnZS9D
aHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6cGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6Y29uZmlndXJlUGxheWJhY2tUYXJnZXRNb25pdG9yaW5nKToKKyAgICAgICAgKiBw
YWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Omhhc1dpcmVsZXNzUGxheWJhY2tU
YXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cGxheWJhY2tUYXJnZXQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVNlc3Npb246OmNsaWVudERhdGFCdWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU2Vzc2lvbjo6d2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2UpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpkaWRDaG9vc2VQbGF5YmFja1RhcmdldCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxl
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6cmVxdWlyZXNQbGF5
YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Np
b25DbGllbnQ6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uTWFuYWdlcjo6d2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVDaGFuZ2VkKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmg6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVXaXJlTGVzc1RhcmdldE1v
bml0b3JpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5h
Z2VySU9TLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFn
ZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpleHRl
cm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSk6CisgICAgICAgICgtW1dlYk1lZGlh
U2Vzc2lvbkhlbHBlciB3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZTpdKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9BVlBsYXliYWNrVGFyZ2V0Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QVZQbGF5YmFja1RhcmdldDo6fkFWUGxheWJhY2tUYXJnZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6QVZQbGF5YmFja1RhcmdldDo6QVZQbGF5YmFja1RhcmdldCk6CisgICAgICAg
IChXZWJDb3JlOjpBVlBsYXliYWNrVGFyZ2V0OjpzZXREZXZpY2VQaWNrZXJDb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFWUGxheWJhY2tUYXJnZXQ6OmRldmljZVBpY2tlckNvbnRleHQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0FWUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBVlBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50
Ojp+QVZQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNl
dFdpcmVsZXNzUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2
YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OnNl
dFdpcmVsZXNzUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9BVlBsYXliYWNrVGFyZ2V0TWFjLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkFWUGxheWJhY2tUYXJnZXQ6OmVuY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpBVlBsYXli
YWNrVGFyZ2V0OjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6Y2FuY2VsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVlBsYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjppc0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndpcmVsZXNzUGxheWJh
Y2tUYXJnZXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFdpcmVsZXNzVmlk
ZW9QbGF5YmFja0Rpc2FibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlRGlzYWJs
ZUV4dGVybmFsUGxheWJhY2spOgorICAgICAgICAoLVtXZWJDb3JlQVZGTW92aWVPYnNlcnZlciBv
YnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOgorCiAyMDE1
LTAzLTExICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAg
IEZpeCB0aGUgYnVpbGQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxODE0MjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE3
NSw2ICsxNzUsNyBAQAogCQkwNzRFODJCQjE4QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1l
UmFuZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzRFODJCOTE4QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDc1Mzg2MDIxNDQ4OUU5
ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzUzODYwMDE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVk
VGV4dFRyYWNrLmNwcCAqLzsgfTsKIAkJMDc1Mzg2MDMxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hl
ZFRleHRUcmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDc1Mzg2MDExNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5oICovOyB9Owor
CQkwNzYwQzE3QTFBQThGQzdEMDA5RUQ3QjggLyogTWVkaWFQbGF5YmFja1RhcmdldE1hYy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RTNERkQyMUE5
RTc4QTUwMDc2NENBOCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLm1tICovOyB9OwogCQkwNzYz
MDZEMDE3RTE0NzhEMDA1QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2MzA2Q0Mx
N0UxNDc4RDAwNUE3QzRFIC8qIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzYzMDZEMjE3
RTE0NzhEMDA1QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NjMwNkNFMTdFMTQ3
OEQwMDVBN0M0RSAvKiBNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3QuY3BwICovOyB9Owog
CQkwNzYzMDZEMzE3RTE0NzhEMDA1QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1
ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzYz
MDZDRjE3RTE0NzhEMDA1QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI2OSw2
ICsyNzAsNyBAQAogCQkwNzhFMDk0NzE3RDE2RTFDMDA0MjBBQTEgLyogUlRDVm9pZFJlcXVlc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MjIxQkIw
MTdDRjBBRDQwMDg0OEU1MSAvKiBSVENWb2lkUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3OEUwOTRCMTdEMTcwOTYwMDQyMEFBMSAv
KiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OEUwOTQ4MTdEMTcwOTYwMDQyMEFBMSAvKiBN
ZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCAqLzsgfTsKIAkJMDc4RTA5NEMxN0Qx
NzA5NjAwNDIwQUExIC8qIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OEUwOTQ5MTdEMTcwOTYw
MDQyMEFBMSAvKiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDc5MjE2NTUxQUE1NjBBQTAw
QTNDMDQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTIxNjUzMUFBNTYwQUEwMEEzQzA0
OSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDc5NDE3OTExNjZFODU1RjAwOTQxNkMy
IC8qIEluYmFuZFRleHRUcmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzk0MTc4RjE2NkU4NTVGMDA5NDE2QzIgLyogSW5iYW5kVGV4dFRyYWNr
LmNwcCAqLzsgfTsKIAkJMDc5NDE3OTIxNjZFODU1RjAwOTQxNkMyIC8qIEluYmFuZFRleHRUcmFj
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5NDE3
OTAxNjZFODU1RjAwOTQxNkMyIC8qIEluYmFuZFRleHRUcmFjay5oICovOyB9OwogCQkwNzk0MTc5
NDE2NkVBMDRFMDA5NDE2QzIgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5NDE3OTMxNjZFQTA0RTAwOTQx
NkMyIC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzM4LDggKzM0MCwxMCBAQAogCQkwN0RDNUZENDE3
RDNFRUU5MDA5OUY4OTAgLyogSlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3REM1RkQzMTdEM0VFRTkwMDk5
Rjg5MCAvKiBKU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwICovOyB9OwogCQkwN0UxMTZCMTE0
ODlDOUExMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFMTE2QjAxNDg5QzlBMTAwRUM1QUNFIC8q
IEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCAqLzsgfTsKIAkJMDdFMTE3MDcxNDg5RUJFQjAwRUM1QUNF
IC8qIEpTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3RTExNzA2MTQ4OUVCRUIwMEVDNUFDRSAvKiBKU1RleHRUcmFj
a0N1ZUN1c3RvbS5jcHAgKi87IH07CisJCTA3RTNERkQxMUE5RTc4NjUwMDc2NENBOCAvKiBNZWRp
YVBsYXliYWNrVGFyZ2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwN0UzREZEMDFBOUU3ODY1MDA3NjRDQTggLyogTWVkaWFQbGF5YmFja1RhcmdldC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3RTlF
MTJFMThGNUUyNzYwMDExQTNBNCAvKiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RTlFMTJE
MThGNUUyNzYwMDExQTNBNCAvKiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaCAq
LzsgfTsKIAkJMDdFOUUxMzAxOEY2MkIzNzAwMTFBM0E0IC8qIEluYmFuZE1ldGFkYXRhVGV4dFRy
YWNrUHJpdmF0ZUFWRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwN0U5RTEyRjE4RjYyQjM3MDAxMUEzQTQgLyogSW5iYW5kTWV0YWRhdGFUZXh0VHJh
Y2tQcml2YXRlQVZGLmNwcCAqLzsgfTsKKwkJMDdFREMzRUUxQUFDQjc1RDAwOTgzRUI1IC8qIE1l
ZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDdFREMzRUQxQUFDQjc1RDAwOTgzRUI1IC8qIE1lZGlhU2Vzc2lvbk1h
bmFnZXJNYWMuY3BwICovOyB9OwogCQkwN0Y5NDQxNjE4NjREMDQ2MDA1RDMxQ0IgLyogTWVkaWFT
ZXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RBRThDMDgxNzQ2Qjk1NzAwNTMyRDc4IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwN0ZCREUy
QzE4RkVEMTc4MDAxQTdDRkYgLyogSlNEYXRhQ3VlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RkJERTJCMThGRUQxNzgwMDFBN0NGRiAv
KiBKU0RhdGFDdWVDdXN0b20uY3BwICovOyB9OwogCQkwN0ZFOTlEQzE4ODA3QTdEMDAyNTY2NDgg
LyogSFRNTE1lZGlhU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwN0ZFOTlEQTE4ODA3QTdEMDAyNTY2NDggLyogSFRNTE1lZGlhU2Vzc2lv
bi5jcHAgKi87IH07CkBAIC01Njg1LDcgKzU2ODksNiBAQAogCQlDRDUzOTNENDE3NUUwMTg2MDBD
MDcxMjMgLyogSlNNZW1vcnlJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDUzOTNEMjE3NUUwMTg2MDBDMDcxMjMgLyogSlNNZW1vcnlJbmZvLmgg
Ki87IH07CiAJCUNENTRBNzYyMTgwRjlGNzAwMEIwNzZDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDU0QTc2MDE4MEY5RjcwMDBCMDc2QzkgLyogQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuY3BwICovOyB9OwogCQlDRDU0QTc2MzE4MEY5RjcwMDBCMDc2Qzkg
LyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENTRBNzYxMTgwRjlGNzAwMEIwNzZDOSAv
KiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oICovOyB9OwotCQlDRDU0REU0
NzE3NDY4QjZGMDA1RTVCMzYgLyogTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDU0REU0NTE3NDY4QjZGMDA1
RTVCMzYgLyogTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAgKi87IH07CiAJCUNENTRERTRCMTc0
NjlDNkQwMDVFNUIzNiAvKiBBdWRpb1Nlc3Npb25NYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1NERFNDkxNzQ2OUM2RDAwNUU1QjM2IC8qIEF1
ZGlvU2Vzc2lvbk1hYy5jcHAgKi87IH07CiAJCUNENTU5NjkxMTQ3NUI2NzgwMDFEMEJEMCAvKiBB
dWRpb0ZpbGVSZWFkZXJJT1MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0Q1NTk2OEYxNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRlcklP
Uy5jcHAgKi87IH07CiAJCUNENTU5NjkyMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFk
ZXJJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
NTU5NjkwMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFkZXJJT1MuaCAqLzsgfTsKQEAg
LTcyNjUsNiArNzI2OCw3IEBACiAJCTA3OEUwOTQ4MTdEMTcwOTYwMDQyMEFBMSAvKiBNZWRpYVN0
cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwNzhFMDk0OTE3RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFTdHJl
YW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA3OEUwOTRBMTdEMTcwOTYwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbUF1ZGlvRGVz
dGluYXRpb25Ob2RlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVN0cmVhbUF1ZGlv
RGVzdGluYXRpb25Ob2RlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjE2
NTMxQUE1NjBBQTAwQTNDMDQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ckNsaWVudC5oOyBwYXRoID0gZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzk0MTc4RjE2NkU4NTVGMDA5NDE2
QzIgLyogSW5iYW5kVGV4dFRyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEluYmFuZFRleHRUcmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA3OTQxNzkwMTY2RTg1NUYwMDk0MTZDMiAvKiBJbmJhbmRUZXh0VHJhY2suaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5iYW5kVGV4dFRyYWNrLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3OTQxNzkzMTY2RUEwNEUwMDk0MTZDMiAvKiBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluYmFuZFRleHRU
cmFja1ByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTczNDMsOCArNzM0
NywxMSBAQAogCQkwN0RDNUZEMzE3RDNFRUU5MDA5OUY4OTAgLyogSlNSVENTdGF0c1Jlc3BvbnNl
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUlRDU3Rh
dHNSZXNwb25zZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RTEx
NkIwMTQ4OUM5QTEwMEVDNUFDRSAvKiBKU1RleHRUcmFja0N1c3RvbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RleHRUcmFja0N1c3RvbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RTExNzA2MTQ4OUVCRUIwMEVDNUFDRSAvKiBKU1RleHRU
cmFja0N1ZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1RleHRUcmFja0N1ZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3
RTNERkQwMUE5RTc4NjUwMDc2NENBOCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdFM0RGRDIxQTlFNzhBNTAwNzY0Q0E4IC8qIE1lZGlhUGxh
eWJhY2tUYXJnZXRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLm1tOyBwYXRoID0gcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRNYWMubW07IHNvdXJjZVRyZWUgPSBTT1VSQ0Vf
Uk9PVDsgfTsKIAkJMDdFOUUxMkQxOEY1RTI3NjAwMTFBM0E0IC8qIEluYmFuZE1ldGFkYXRhVGV4
dFRyYWNrUHJpdmF0ZUFWRi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmJh
bmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMDdFOUUxMkYxOEY2MkIzNzAwMTFBM0E0IC8qIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNr
UHJpdmF0ZUFWRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmJh
bmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwN0VEQzNFRDFBQUNCNzVEMDA5ODNFQjUgLyogTWVkaWFTZXNzaW9uTWFuYWdlck1h
Yy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVNlc3Npb25N
YW5hZ2VyTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdGQkRFMkIxOEZF
RDE3ODAwMUE3Q0ZGIC8qIEpTRGF0YUN1ZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0RhdGFDdWVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwN0ZFOTlEQTE4ODA3QTdEMDAyNTY2NDggLyogSFRNTE1lZGlhU2Vzc2lvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MTWVkaWFTZXNzaW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdGRTk5REIxODgwN0E3RDAwMjU2
NjQ4IC8qIEhUTUxNZWRpYVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSFRNTE1lZGlhU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMx
OTAsNyArMTMxOTcsNiBAQAogCQlDRDUzOTNEMjE3NUUwMTg2MDBDMDcxMjMgLyogSlNNZW1vcnlJ
bmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVtb3J5SW5mby5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDU0QTc2MDE4MEY5RjcwMDBCMDc2QzkgLyog
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
Y3BwOyBwYXRoID0gb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENTRBNzYxMTgwRjlGNzAwMEIwNzZDOSAv
KiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOyBw
YXRoID0gb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlDRDU0REU0NTE3NDY4QjZGMDA1RTVCMzYgLyogTWVkaWFT
ZXNzaW9uTWFuYWdlck1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0Q1NERFNDkxNzQ2OUM2RDAwNUU1QjM2IC8qIEF1ZGlvU2Vzc2lvbk1hYy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb1Nlc3Npb25NYWMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDU1OTY4RjE0NzVCNjc4MDAxRDBCRDAgLyogQXVk
aW9GaWxlUmVhZGVySU9TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IEF1ZGlvRmlsZVJlYWRlcklPUy5jcHA7IHBhdGggPSBpb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q1NTk2OTAxNDc1QjY3ODAwMUQwQkQw
IC8qIEF1ZGlvRmlsZVJlYWRlcklPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBBdWRpb0ZpbGVSZWFkZXJJT1MuaDsgcGF0aCA9IGlvcy9BdWRpb0ZpbGVSZWFkZXJJT1MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNTU1LDYgKzIwNTYxLDcgQEAKIAkJQjI3
NTM1NDkwQjA1MzgxNDAwMkNFNjRGIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCisJCQkJMDdFM0RGRDIxQTlFNzhBNTAwNzY0Q0E4IC8qIE1lZGlhUGxh
eWJhY2tUYXJnZXRNYWMubW0gKi8sCiAJCQkJRURFM0E0RkYwQzdBNDMwNjAwOTU2QTM3IC8qIENv
bG9yTWFjLmggKi8sCiAJCQkJQjI3NTM1NEEwQjA1MzgxNDAwMkNFNjRGIC8qIENvbG9yTWFjLm1t
ICovLAogCQkJCTM3QzIzNjBFMTA5N0VFNzcwMEVGOUY3MiAvKiBDb21wbGV4VGV4dENvbnRyb2xs
ZXIuY3BwICovLApAQCAtMjA2MDUsNiArMjA2MTIsNyBAQAogCQkJCUZCQzIyMEREMTIzN0ZCRUIw
MEJDRjc4OCAvKiBvcGVuZ2wgKi8sCiAJCQkJMzcyMTQ5MzMxOEYwQjZENjAwMTU2RURDIC8qIG9w
ZW50eXBlICovLAogCQkJCTQ5RTkxMUIyMEVGODZEMjcwMDlEMENBRiAvKiB0cmFuc2Zvcm1zICov
LAorCQkJCTA3RTNERkQwMUE5RTc4NjUwMDc2NENBOCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Lmgg
Ki8sCiAJCQkJNDkwNzA3RTQxMjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmNw
cCAqLywKIAkJCQk0OTA3MDdFNTEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2Uu
aCAqLywKIAkJCQlCRUYyOUVFOTE3MTVERDA5MDBDNEI0QzkgLyogQXVkaW9UcmFja1ByaXZhdGUu
aCAqLywKQEAgLTIxNTIzLDYgKzIxNTMxLDcgQEAKIAkJQkNGMUE1QkEwOTc4MzIwOTAwNjFBMTIz
IC8qIHBsYXRmb3JtICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQkwNzkyMTY1MzFBQTU2MEFBMDBBM0MwNDkgLyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ckNsaWVudC5oICovLAogCQkJCTQ5RTkxMkE0MEVGQUM4RTYwMDlEMENBRiAvKiBhbmltYXRpb24g
Ki8sCiAJCQkJRkQzMTYwNDAxMkIwMjZBMzAwQzFBMzU5IC8qIGF1ZGlvICovLAogCQkJCTFBRTQy
RjY3MEFBNEI4Q0IwMEM4NjEyRCAvKiBjZiAqLywKQEAgLTIzNDEzLDYgKzIzNDIyLDcgQEAKIAkJ
RkQzMTYwQjAxMkIwMjcwNzAwQzFBMzU5IC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMDdFREMzRUQxQUFDQjc1RDAwOTgzRUI1IC8qIE1lZGlh
U2Vzc2lvbk1hbmFnZXJNYWMuY3BwICovLAogCQkJCUZEMzE2MEI1MTJCMDI3MkEwMEMxQTM1OSAv
KiBBdWRpb0J1c01hYy5tbSAqLywKIAkJCQlGRDMxNjBCNjEyQjAyNzJBMDBDMUEzNTkgLyogQXVk
aW9EZXN0aW5hdGlvbk1hYy5jcHAgKi8sCiAJCQkJRkQzMTYwQjcxMkIwMjcyQTAwQzFBMzU5IC8q
IEF1ZGlvRGVzdGluYXRpb25NYWMuaCAqLywKQEAgLTIzNDI0LDcgKzIzNDM0LDYgQEAKIAkJCQlD
REM3MzQxMjE5Nzc4OTZDMDA0NkJGQzUgLyogQ0FSaW5nQnVmZmVyLmNwcCAqLywKIAkJCQlDREM3
MzQxMzE5Nzc4OTZDMDA0NkJGQzUgLyogQ0FSaW5nQnVmZmVyLmggKi8sCiAJCQkJRkQzMTYwQkEx
MkIwMjcyQTAwQzFBMzU5IC8qIEZGVEZyYW1lTWFjLmNwcCAqLywKLQkJCQlDRDU0REU0NTE3NDY4
QjZGMDA1RTVCMzYgLyogTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAgKi8sCiAJCQkpOwogCQkJ
cGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yMzcyOSw2ICsyMzcz
OCw3IEBACiAJCQkJQkNCMTZDMUMwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZEltYWdlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkzMTlGQkQ1RjE1RDJGNDY0MDA5NjQwQTYgLyogQ2FjaGVkSW1hZ2VD
bGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDE4NDY5MEIwODYwMkEwMDRBODI1RiAvKiBD
YWNoZWRQYWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwN0UzREZEMTFBOUU3ODY1MDA3NjRDQTgg
LyogTWVkaWFQbGF5YmFja1RhcmdldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDBFREE3NzUxNDNF
MzAzQzAwMjhFMzgzIC8qIENhY2hlZFJhd1Jlc291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
MUI1MzM0OTE3MTdERUUzMDBGMjA1RjkgLyogQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDQjE2QzIwMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRSZXNvdXJj
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjE5Myw2ICsyNjIwMyw3IEBACiAJCQkJOTM5MUE5OTEx
NjI3NDZDQjAwMjk3MzMwIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5M0MzOEJGRjE2NDQ3M0M3MDAwOTFFQjIgLyogU2Nyb2xsaW5nU3RhdGVGaXhlZE5v
ZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEzRTdCMTkxQjJGQzUwMDBGMUI1NSAvKiBTY3Jv
bGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDc5MjE2
NTUxQUE1NjBBQTAwQTNDMDQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzMUNCRDBEMTYxQTQ0RTkwMEU0Qzg3NCAvKiBTY3JvbGxpbmdT
dGF0ZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEzRTg0MTkxQjMxQkYwMDBGMUI1NSAv
KiBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTMxQ0JEMEYxNjFBNDRFOTAwRTRDODc0IC8qIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzM2Nyw2ICsyNzM3OCw3IEBACiAJCQkJRkQzMTVGRjgx
MkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZE
MzE1RkZCMTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkQzMTYwN0IxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvQnVzLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTA3RURDM0VFMUFBQ0I3NUQwMDk4M0VCNSAvKiBNZWRpYVNlc3Np
b25NYW5hZ2VyTWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MEJCMTJCMDI3MkEwMEMx
QTM1OSAvKiBBdWRpb0J1c01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDdEMTJCMDI2
RjcwMEMxQTM1OSAvKiBBdWRpb0NoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYw
MDQxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTI3OTQ4LDYgKzI3OTYwLDcgQEAKIAkJCQk5QkFCNkM2RDEyNTUwNjMxMDAxNjI2RDQgLyogRWRp
dGluZ1N0eWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRCMzA0M0NDMEFFMDM3M0IwMEE4MjY0
NyAvKiBFZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNBMzhCNEIwRDBFNTgwODAwNjg3
MkMyIC8qIEVkaXRvckNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDc2MEMxN0ExQUE4
RkM3RDAwOUVEN0I4IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQlGRUQxM0QzQTBDRUE5MzQ2MDBEODk0NjYgLyogRWRpdG9ySU9TLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRUQ1MDFEQzYwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUE4QzRBODA4MDlENTYzMjcwMDAzQUM4RCAvKiBFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMjkxNzEsNyArMjkxODQsNiBAQAogCQkJCTA3MEUwOTFCMTg3NUVGNzEw
MDNBMUQzQyAvKiBNZWRpYVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBRThDMDkx
NzQ2Qjk1NzAwNTMyRDc4IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMDc2MzhBOUExODg0NDg3MjAwRTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1Mu
bW0gaW4gU291cmNlcyAqLywKLQkJCQlDRDU0REU0NzE3NDY4QjZGMDA1RTVCMzYgLyogTWVkaWFT
ZXNzaW9uTWFuYWdlck1hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDNBNDk1RTE3QTlEMDFC
MDAyNzRFNDIgLyogTWVkaWFTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RDOEI1QTYx
ODA0NzRGNzAwMTZFNjg1IC8qIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNl
cyAqLywKIAkJCQlDRDYxRkU2NzE3OTRBQURCMDA0MTAxRUIgLyogTWVkaWFTb3VyY2VSZWdpc3Ry
eS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNp
b24gMTgxNDIwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjI4LDYgKzIyOCwxMCBAQAogI2luY2x1ZGUgPHJlcGxheS9JbnB1dEN1cnNvci5o
PgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorI2luY2x1
ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgV1RGOwog
dXNpbmcgbmFtZXNwYWNlIFVuaWNvZGU7CiAKQEAgLTY0NTEsNCArNjQ1NSw4MiBAQCB2b2lkIERv
Y3VtZW50OjpzZXRJbnB1dEN1cnNvcihQYXNzUmVmUHRyCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCit2b2lkIERvY3VtZW50OjpzaG93UGxheWJhY2tU
YXJnZXRQaWNrZXIoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICBQYWdl
KiBwYWdlID0gdGhpcy0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgcGFnZS0+c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKHRoaXMsIHZpZXcoKS0+bGFzdEtu
b3duTW91c2VQb3NpdGlvbigpLCBpczxIVE1MVmlkZW9FbGVtZW50PihlbGVtZW50KSk7Cit9CisK
K3ZvaWQgRG9jdW1lbnQ6OmFkZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KE1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJDbGllbnQmIGNsaWVudCkKK3sKKyAgICBQYWdlKiBwYWdlID0gdGhpcy0+
cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wbGF5YmFj
a1RhcmdldENsaWVudHMuYWRkKCZjbGllbnQpOworCisgICAgY2xpZW50LmRpZENob29zZVBsYXli
YWNrVGFyZ2V0KHBhZ2UtPnBsYXliYWNrVGFyZ2V0KCkpOworICAgIGNsaWVudC5leHRlcm5hbE91
dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShwYWdlLT5oYXNXaXJlbGVzc1BsYXliYWNrVGFy
Z2V0KCkpOworfQorCit2b2lkIERvY3VtZW50OjpyZW1vdmVQbGF5YmFja1RhcmdldFBpY2tlckNs
aWVudChNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50JiBjbGllbnQpCit7CisgICAgbV9w
bGF5YmFja1RhcmdldENsaWVudHMucmVtb3ZlKCZjbGllbnQpOworICAgIGNvbmZpZ3VyZVBsYXli
YWNrVGFyZ2V0TW9uaXRvcmluZygpOworfQorCit2b2lkIERvY3VtZW50Ojpjb25maWd1cmVQbGF5
YmFja1RhcmdldE1vbml0b3JpbmcoKQoreworICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7
CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBwYWdlLT5jb25maWd1cmVQ
bGF5YmFja1RhcmdldE1vbml0b3JpbmcoKTsKK30KKworYm9vbCBEb2N1bWVudDo6cmVxdWlyZXNQ
bGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZygpCit7CisgICAgZm9yIChhdXRvKiBjbGllbnQg
OiBtX3BsYXliYWNrVGFyZ2V0Q2xpZW50cykgeworICAgICAgICBpZiAoY2xpZW50LT5yZXF1aXJl
c1BsYXliYWNrVGFyZ2V0Um91dGVNb25pdG9yaW5nKCkpIHsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlk
Q2hhbmdlKGJvb2wgYXZhaWxhYmxlKQoreworICAgIGlmIChtX3BsYXliYWNrVGFyZ2V0c0F2YWls
YWJsZSA9PSBhdmFpbGFibGUpCisgICAgICAgIHJldHVybjsKKyAgICBtX3BsYXliYWNrVGFyZ2V0
c0F2YWlsYWJsZSA9IGF2YWlsYWJsZTsKKworICAgIGZvciAoYXV0byogY2xpZW50IDogbV9wbGF5
YmFja1RhcmdldENsaWVudHMpCisgICAgICAgIGNsaWVudC0+ZXh0ZXJuYWxPdXRwdXREZXZpY2VB
dmFpbGFibGVEaWRDaGFuZ2UoYXZhaWxhYmxlKTsKK30KKwordm9pZCBEb2N1bWVudDo6ZGlkQ2hv
b3NlUGxheWJhY2tUYXJnZXQoTWVkaWFQbGF5YmFja1RhcmdldCYgZGV2aWNlKQoreworICAgIE1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQqIGNsaWVudFRoYXRSZXF1ZXN0ZWRQaWNrZXIg
PSBudWxscHRyOworCisgICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX3BsYXliYWNrVGFyZ2V0Q2xp
ZW50cykgeworICAgICAgICBpZiAoY2xpZW50LT5yZXF1ZXN0ZWRQbGF5YmFja1RhcmdldFBpY2tl
cigpKSB7CisgICAgICAgICAgICBjbGllbnRUaGF0UmVxdWVzdGVkUGlja2VyID0gY2xpZW50Owor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBjbGllbnQtPmRpZENo
b29zZVBsYXliYWNrVGFyZ2V0KGRldmljZSk7CisgICAgfQorCisgICAgaWYgKGNsaWVudFRoYXRS
ZXF1ZXN0ZWRQaWNrZXIpCisgICAgICAgIGNsaWVudFRoYXRSZXF1ZXN0ZWRQaWNrZXItPmRpZENo
b29zZVBsYXliYWNrVGFyZ2V0KGRldmljZSk7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gMTgxNDIwKQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw2ICsx
MjQsOCBAQCBjbGFzcyBMaXZlTm9kZUxpc3Q7CiBjbGFzcyBKU05vZGU7CiBjbGFzcyBMb2NhbGU7
CiBjbGFzcyBNZWRpYUNhblN0YXJ0TGlzdGVuZXI7CitjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0
OworY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudDsKIGNsYXNzIE1lZGlhUXVl
cnlMaXN0OwogY2xhc3MgTWVkaWFRdWVyeU1hdGNoZXI7CiBjbGFzcyBNb3VzZUV2ZW50V2l0aEhp
dFRlc3RSZXN1bHRzOwpAQCAtMTIxOCw2ICsxMjIwLDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIHBh
Z2VNdXRlZFN0YXRlRGlkQ2hhbmdlKCk7CiAgICAgV2Vha1B0cjxEb2N1bWVudD4gY3JlYXRlV2Vh
a1B0cigpIHsgcmV0dXJuIG1fd2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigpOyB9CiAKKyNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorICAgIHZvaWQgc2hvd1BsYXliYWNrVGFy
Z2V0UGlja2VyKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKTsKKyAgICB2b2lkIGRpZENob29zZVBs
YXliYWNrVGFyZ2V0KE1lZGlhUGxheWJhY2tUYXJnZXQmKTsKKyAgICB2b2lkIGFkZFBsYXliYWNr
VGFyZ2V0UGlja2VyQ2xpZW50KE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQmKTsKKyAg
ICB2b2lkIHJlbW92ZVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KE1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJDbGllbnQmKTsKKyAgICBib29sIHJlcXVpcmVzUGxheWJhY2tUYXJnZXRSb3V0ZU1v
bml0b3JpbmcoKTsKKyAgICB2b2lkIGNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0TW9uaXRvcmluZygp
OworICAgIHZvaWQgcGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UoYm9vbCk7Cisj
ZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIGVudW0gQ29uc3RydWN0aW9uRmxhZ3MgeyBTeW50aGVz
aXplZCA9IDEsIE5vblJlbmRlcmVkUGxhY2Vob2xkZXIgPSAxIDw8IDEgfTsKICAgICBEb2N1bWVu
dChGcmFtZSosIGNvbnN0IFVSTCYsIHVuc2lnbmVkID0gRGVmYXVsdERvY3VtZW50Q2xhc3MsIHVu
c2lnbmVkIGNvbnN0cnVjdGlvbkZsYWdzID0gMCk7CkBAIC0xNjU1LDYgKzE2NjcsMTEgQEAgcHJp
dmF0ZToKIAogICAgIEhhc2hTZXQ8QXVkaW9Qcm9kdWNlcio+IG1fYXVkaW9Qcm9kdWNlcnM7CiAg
ICAgYm9vbCBtX2lzUGxheWluZ0F1ZGlvOworCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkKKyAgICBIYXNoU2V0PFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJD
bGllbnQqPiBtX3BsYXliYWNrVGFyZ2V0Q2xpZW50czsKKyAgICBib29sIG1fcGxheWJhY2tUYXJn
ZXRzQXZhaWxhYmxlIHsgZmFsc2UgfTsKKyNlbmRpZgogfTsKIAogaW5saW5lIHZvaWQgRG9jdW1l
bnQ6Om5vdGlmeVJlbW92ZVBlbmRpbmdTaGVldElmTmVlZGVkKCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMTgxNDIwKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI2
LDYgKzQyNiw4IEBAIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkKIAogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpyZWdpc3RlcldpdGhEb2N1bWVudChEb2N1bWVudCYgZG9jdW1l
bnQpCiB7CisgICAgbV9tZWRpYVNlc3Npb24tPnJlZ2lzdGVyV2l0aERvY3VtZW50KGRvY3VtZW50
KTsKKwogICAgIGlmIChtX2lzV2FpdGluZ1VudGlsTWVkaWFDYW5TdGFydCkKICAgICAgICAgZG9j
dW1lbnQuYWRkTWVkaWFDYW5TdGFydExpc3RlbmVyKHRoaXMpOwogCkBAIC00NTEsNiArNDUzLDgg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZWdpc3RlcldpdGhEb2N1bQogCiB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnVucmVnaXN0ZXJXaXRoRG9jdW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQog
eworICAgIG1fbWVkaWFTZXNzaW9uLT51bnJlZ2lzdGVyV2l0aERvY3VtZW50KGRvY3VtZW50KTsK
KwogICAgIGlmIChtX2lzV2FpdGluZ1VudGlsTWVkaWFDYW5TdGFydCkKICAgICAgICAgZG9jdW1l
bnQucmVtb3ZlTWVkaWFDYW5TdGFydExpc3RlbmVyKHRoaXMpOwogCkBAIC0yNDcxLDYgKzI0NzUs
OSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlZnJlc2hDYWNoZWRUaW1lCiAKIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6aW52YWxpZGF0ZUNhY2hlZFRpbWUoKSBjb25zdAogeworICAgIGlmICgh
bV9wbGF5ZXItPm1heGltdW1EdXJhdGlvblRvQ2FjaGVNZWRpYVRpbWUoKSkKKyAgICAgICAgcmV0
dXJuOworCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGlmIChtX2NhY2hlZFRpbWUuaXNWYWxpZCgp
KQogICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjppbnZhbGlkYXRlQ2FjaGVk
VGltZSglcCkiLCB0aGlzKTsKQEAgLTQ4NTYsNiArNDg2MywxMyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OmVucXVldWVQbGF5YmFja1RhCiAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKICAg
ICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoZXZlbnQucmVsZWFzZSgpKTsKIH0KKwor
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KGNvbnN0IE1l
ZGlhUGxheWJhY2tUYXJnZXQmIGRldmljZSkKK3sKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFF
bGVtZW50OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCVwKSIsIHRoaXMpOworICAgIGlmICht
X3BsYXllcikKKyAgICAgICAgbV9wbGF5ZXItPnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoZGV2
aWNlKTsKK30KICNlbmRpZgogCiBkb3VibGUgSFRNTE1lZGlhRWxlbWVudDo6bWluRmFzdFJldmVy
c2VSYXRlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CShyZXZpc2lvbiAxODE0MjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDctMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDctMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1Nyw3ICszNTcsOSBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CisK
ICAgICB2aXJ0dWFsIHZvaWQgd2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2UoKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChjb25zdCBN
ZWRpYVBsYXliYWNrVGFyZ2V0Jikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIC8vIEV2ZW50VGFy
Z2V0IGZ1bmN0aW9uLgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFTZXNzaW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYVNlc3Npb24u
Y3BwCShyZXZpc2lvbiAxODE0MjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYVNl
c3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw5IEBACiAKICNpbmNsdWRlICJD
aHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAi
SFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKQEAgLTcyLDggKzc0LDI4IEBAIHN0YXRpYyBjb25zdCBjaGFyKiByZXN0cmljdGlv
bk5hbWUoSFRNTE0KIEhUTUxNZWRpYVNlc3Npb246OkhUTUxNZWRpYVNlc3Npb24oTWVkaWFTZXNz
aW9uQ2xpZW50JiBjbGllbnQpCiAgICAgOiBNZWRpYVNlc3Npb24oY2xpZW50KQogICAgICwgbV9y
ZXN0cmljdGlvbnMoTm9SZXN0cmljdGlvbnMpCi0gICAgLCBtX2hhc1BsYXliYWNrVGFyZ2V0QXZh
aWxhYmlsaXR5TGlzdGVuZXJzKGZhbHNlKQorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpCisgICAgLCBtX3RhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRUaW1lcigqdGhpcywgJkhU
TUxNZWRpYVNlc3Npb246OnRhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRUaW1lckZpcmVkKQorI2Vu
ZGlmCit7Cit9CisKK3ZvaWQgSFRNTE1lZGlhU2Vzc2lvbjo6cmVnaXN0ZXJXaXRoRG9jdW1lbnQo
RG9jdW1lbnQmIGRvY3VtZW50KQogeworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJH
RVQpCisgICAgZG9jdW1lbnQuYWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoKnRoaXMpOwor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZG9jdW1lbnQpOworI2VuZGlmCit9CisKK3ZvaWQgSFRN
TE1lZGlhU2Vzc2lvbjo6dW5yZWdpc3RlcldpdGhEb2N1bWVudChEb2N1bWVudCYgZG9jdW1lbnQp
Cit7CisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyAgICBkb2N1bWVudC5y
ZW1vdmVQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCgqdGhpcyk7CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShkb2N1bWVudCk7CisjZW5kaWYKIH0KIAogdm9pZCBIVE1MTWVkaWFTZXNzaW9uOjph
ZGRCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKQpA
QCAtMTc3LDE5ICsxOTksMjAgQEAgdm9pZCBIVE1MTWVkaWFTZXNzaW9uOjpzaG93UGxheWJhY2tU
YXJnZQogICAgIGlmICghc2hvd2luZ1BsYXliYWNrVGFyZ2V0UGlja2VyUGVybWl0dGVkKGVsZW1l
bnQpKQogICAgICAgICByZXR1cm47CiAKLSNpZiBQTEFURk9STShJT1MpCi0gICAgZWxlbWVudC5k
b2N1bWVudCgpLmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuc2hvd1BsYXliYWNr
VGFyZ2V0UGlja2VyKGVsZW1lbnQuaGFzVmlkZW8oKSk7Ci0jZW5kaWYKKyAgICBtX2hhdmVSZXF1
ZXN0ZWRQbGF5YmFja1RhcmdldFBpY2tlciA9IHRydWU7CisgICAgZWxlbWVudC5kb2N1bWVudCgp
LnNob3dQbGF5YmFja1RhcmdldFBpY2tlcihlbGVtZW50KTsKIH0KIAotYm9vbCBIVE1MTWVkaWFT
ZXNzaW9uOjpoYXNXaXJlbGVzc1BsYXliYWNrVGFyZ2V0cyhjb25zdCBIVE1MTWVkaWFFbGVtZW50
JiBlbGVtZW50KSBjb25zdAorYm9vbCBIVE1MTWVkaWFTZXNzaW9uOjpoYXNXaXJlbGVzc1BsYXli
YWNrVGFyZ2V0cyhjb25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3QKIHsKLSAgICBVTlVTRURf
UEFSQU0oZWxlbWVudCk7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIC8vIEZJWE1FOiBjb25zb2xp
ZGF0ZSBNYWMgYW5kIGlPUyBpbXBsZW1lbnRhdGlvbnMKKyAgICBtX2hhc1BsYXliYWNrVGFyZ2V0
cyA9IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5oYXNXaXJlbGVzc1Rhcmdl
dHNBdmFpbGFibGUoKTsKKyNlbmRpZgogCi0gICAgYm9vbCBoYXNUYXJnZXRzID0gTWVkaWFTZXNz
aW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZSgp
OwotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYVNlc3Npb246Omhhc1dpcmVsZXNzUGxheWJhY2tU
YXJnZXRzIC0gcmV0dXJuaW5nICVzIiwgaGFzVGFyZ2V0cyA/ICJUUlVFIiA6ICJGQUxTRSIpOwor
ICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYVNlc3Npb246Omhhc1dpcmVsZXNzUGxheWJhY2tUYXJn
ZXRzIC0gcmV0dXJuaW5nICVzIiwgbV9oYXNQbGF5YmFja1RhcmdldHMgPyAiVFJVRSIgOiAiRkFM
U0UiKTsKIAotICAgIHJldHVybiBoYXNUYXJnZXRzOworICAgIHJldHVybiBtX2hhc1BsYXliYWNr
VGFyZ2V0czsKIH0KIAogYm9vbCBIVE1MTWVkaWFTZXNzaW9uOjp3aXJlbGVzc1ZpZGVvUGxheWJh
Y2tEaXNhYmxlZChjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KSBjb25zdApAQCAtMjQ0
LDcgKzI2NywzOCBAQCB2b2lkIEhUTUxNZWRpYVNlc3Npb246OnNldEhhc1BsYXliYWNrVGFyCiAg
ICAgVU5VU0VEX1BBUkFNKGVsZW1lbnQpOwogCiAgICAgbV9oYXNQbGF5YmFja1RhcmdldEF2YWls
YWJpbGl0eUxpc3RlbmVycyA9IGhhc0xpc3RlbmVyczsKKworI2lmIFBMQVRGT1JNKElPUykKICAg
ICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuY29uZmlndXJlV2lyZUxlc3NU
YXJnZXRNb25pdG9yaW5nKCk7CisjZWxzZQorICAgIGVsZW1lbnQuZG9jdW1lbnQoKS5jb25maWd1
cmVQbGF5YmFja1RhcmdldE1vbml0b3JpbmcoKTsKKyNlbmRpZgorfQorCit2b2lkIEhUTUxNZWRp
YVNlc3Npb246OmRpZENob29zZVBsYXliYWNrVGFyZ2V0KE1lZGlhUGxheWJhY2tUYXJnZXQmIGRl
dmljZSkKK3sKKyAgICBtX2hhdmVSZXF1ZXN0ZWRQbGF5YmFja1RhcmdldFBpY2tlciA9IGZhbHNl
OworICAgIGNsaWVudCgpLnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoZGV2aWNlKTsKK30KKwor
dm9pZCBIVE1MTWVkaWFTZXNzaW9uOjp0YXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkVGltZXJGaXJl
ZCgpCit7CisgICAgY2xpZW50KCkud2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2UoKTsK
K30KKwordm9pZCBIVE1MTWVkaWFTZXNzaW9uOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJs
ZURpZENoYW5nZShib29sIGhhc1RhcmdldHMpIGNvbnN0Cit7CisgICAgaWYgKG1faGFzUGxheWJh
Y2tUYXJnZXRzID09IGhhc1RhcmdldHMpCisgICAgICAgIHJldHVybjsKKworICAgIG1faGFzUGxh
eWJhY2tUYXJnZXRzID0gaGFzVGFyZ2V0czsKKyAgICBpZiAoIW1fdGFyZ2V0QXZhaWxhYmlsaXR5
Q2hhbmdlZFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fdGFyZ2V0QXZhaWxhYmlsaXR5Q2hh
bmdlZFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKworYm9vbCBIVE1MTWVkaWFTZXNzaW9uOjpy
ZXF1aXJlc1BsYXliYWNrVGFyZ2V0Um91dGVNb25pdG9yaW5nKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9oYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVyczsKIH0KICNlbmRpZgog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYVNlc3Npb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYVNlc3Npb24uaAkocmV2aXNpb24gMTgx
NDIwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzAsOSArMzAsMTEgQEAKIAogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVk
ZSAiTWVkaWFTZXNzaW9uLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBT
b3VyY2VCdWZmZXI7CiAKQEAgLTQxLDE0ICs0MywxNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQg
SFRNTE1lZGlhU2Vzc2lvbihNZWRpYVNlc3Npb25DbGllbnQmKTsKICAgICB2aXJ0dWFsIH5IVE1M
TWVkaWFTZXNzaW9uKCkgeyB9CiAKKyAgICB2b2lkIHJlZ2lzdGVyV2l0aERvY3VtZW50KERvY3Vt
ZW50Jik7CisgICAgdm9pZCB1bnJlZ2lzdGVyV2l0aERvY3VtZW50KERvY3VtZW50Jik7CisKICAg
ICBib29sIHBsYXliYWNrUGVybWl0dGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsK
ICAgICBib29sIGRhdGFMb2FkaW5nUGVybWl0dGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBj
b25zdDsKICAgICBib29sIGZ1bGxzY3JlZW5QZXJtaXR0ZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVu
dCYpIGNvbnN0OwogICAgIGJvb2wgcGFnZUFsbG93c0RhdGFMb2FkaW5nKGNvbnN0IEhUTUxNZWRp
YUVsZW1lbnQmKSBjb25zdDsKICAgICBib29sIHBhZ2VBbGxvd3NQbGF5YmFja0FmdGVyUmVzdW1p
bmcoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OworCiAjaWYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkKICAgICBib29sIHNob3dpbmdQbGF5YmFja1RhcmdldFBpY2tlclBl
cm1pdHRlZChjb25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7Ci0KICAgICBib29sIGN1cnJl
bnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3MoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0
OwogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IEhUTUxNZWRpYUVsZW1l
bnQmKTsKICAgICBib29sIGhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzKGNvbnN0IEhUTUxNZWRp
YUVsZW1lbnQmKSBjb25zdDsKQEAgLTU4LDYgKzYzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBz
ZXRIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyhjb25zdCBIVE1MTWVkaWFF
bGVtZW50JiwgYm9vbCk7CiAjZW5kaWYKKwogICAgIGJvb2wgcmVxdWlyZXNGdWxsc2NyZWVuRm9y
VmlkZW9QbGF5YmFjayhjb25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7CiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBhbGxvd3NBbHRlcm5hdGVGdWxsc2NyZWVuKGNvbnN0IEhUTUxNZWRpYUVs
ZW1lbnQmKSBjb25zdDsKICAgICBNZWRpYVBsYXllcjo6UHJlbG9hZCBlZmZlY3RpdmVQcmVsb2Fk
Rm9yRWxlbWVudChjb25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7CkBAIC04NywxMCArOTMs
MjUgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIHJlcXVp
cmVzUGxheWJhY2tUYXJnZXRSb3V0ZU1vbml0b3JpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2hhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzOyB9CisKKyNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorICAgIHZvaWQgdGFyZ2V0QXZhaWxhYmlsaXR5
Q2hhbmdlZFRpbWVyRmlyZWQoKTsKKworICAgIC8vIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJD
bGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoTWVkaWFQbGF5
YmFja1RhcmdldCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBleHRlcm5hbE91dHB1dERl
dmljZUF2YWlsYWJsZURpZENoYW5nZShib29sKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IGJvb2wgcmVxdWlyZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZygpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0ZWRQbGF5YmFja1RhcmdldFBpY2tlcigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faGF2ZVJlcXVlc3RlZFBsYXliYWNrVGFyZ2V0UGlja2Vy
OyB9CisjZW5kaWYKIAogICAgIEJlaGF2aW9yUmVzdHJpY3Rpb25zIG1fcmVzdHJpY3Rpb25zOwot
ICAgIGJvb2wgbV9oYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVyczsKKworI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisgICAgbXV0YWJsZSBUaW1lciBtX3Rh
cmdldEF2YWlsYWJpbGl0eUNoYW5nZWRUaW1lcjsKKyAgICBib29sIG1faGFzUGxheWJhY2tUYXJn
ZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMgeyBmYWxzZSB9OworICAgIG11dGFibGUgYm9vbCBtX2hh
c1BsYXliYWNrVGFyZ2V0cyB7IGZhbHNlIH07CisgICAgbXV0YWJsZSBib29sIG1faGF2ZVJlcXVl
c3RlZFBsYXliYWNrVGFyZ2V0UGlja2VyIHsgZmFsc2UgfTsKKyNlbmRpZgogfTsKIAogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiAxODE0MjApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NDcsNiAr
NDQ3LDEyIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBdXRvRmlsbEJ1dHRv
bkNsaWNrKEhUTUxJbnB1dEVsZW1lbnQmKSB7IH0KIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpCisgICAgdmlydHVhbCB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzdGFy
dGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3Rv
cE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKSB7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCB+Q2hyb21lQ2xpZW50KCkgeyB9CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CShyZXZpc2lvbiAxODE0MjApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDQsNiArMTA0LDEyIEBACiAjaW5jbHVkZSA8cmVwbGF5L0lucHV0Q3Vy
c29yLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisj
aW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJn
ZXQuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50LmgiCisjZW5k
aWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgSGFzaFNldDxQYWdlKj4qIGFsbFBh
Z2VzOwpAQCAtMTY5MSw0ICsxNjk3LDY3IEBAIHZvaWQgUGFnZTo6c2V0U2Vzc2lvbklEKFNlc3Np
b25JRCBzZXNzaW8KICAgICAgICAgdmlldy0+cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKHNl
c3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKIH0KIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpCit2b2lkIFBhZ2U6OnNob3dQbGF5YmFja1RhcmdldFBpY2tlcihEb2N1bWVudCog
ZG9jdW1lbnQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2NhdGlvbiwgYm9vbCBpc1ZpZGVv
KQoreworCisgICAgbV9kb2N1bWVudFJlcXVlc3RpbmdQbGF5YmFja1RhcmdldFBpY2tlciA9IGRv
Y3VtZW50OworI2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBGSVhNRTogcmVmYWN0b3IgaU9TIGlt
cGxlbWVudGF0aW9uLgorICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CisgICAgY2hyb21lKCku
Y2xpZW50KCkuc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGlzVmlkZW8pOworI2Vsc2UKKyAgICBj
aHJvbWUoKS5jbGllbnQoKS5zaG93UGxheWJhY2tUYXJnZXRQaWNrZXIobG9jYXRpb24sIGlzVmlk
ZW8pOworI2VuZGlmCit9CisKK3ZvaWQgUGFnZTo6ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoTWVk
aWFQbGF5YmFja1RhcmdldCYgdGFyZ2V0KQoreworICAgIERvY3VtZW50KiBkb2N1bWVudFRoYXRS
ZXF1ZXN0ZWRQaWNrZXIgPSBudWxscHRyOworCisgICAgbV9wbGF5YmFja1RhcmdldCA9IHN0ZDo6
bWFrZV91bmlxdWU8TWVkaWFQbGF5YmFja1RhcmdldD4odGFyZ2V0LmRldmljZVBpY2tlckNvbnRl
eHQoKSk7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFt
ZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQo
KSA9PSBtX2RvY3VtZW50UmVxdWVzdGluZ1BsYXliYWNrVGFyZ2V0UGlja2VyKSB7CisgICAgICAg
ICAgICBkb2N1bWVudFRoYXRSZXF1ZXN0ZWRQaWNrZXIgPSBkb2N1bWVudDsKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5kaWRDaG9v
c2VQbGF5YmFja1RhcmdldCh0YXJnZXQpOworICAgIH0KKworICAgIGlmIChkb2N1bWVudFRoYXRS
ZXF1ZXN0ZWRQaWNrZXIpCisgICAgICAgIGRvY3VtZW50VGhhdFJlcXVlc3RlZFBpY2tlci0+ZGlk
Q2hvb3NlUGxheWJhY2tUYXJnZXQodGFyZ2V0KTsKKworICAgIG1fZG9jdW1lbnRSZXF1ZXN0aW5n
UGxheWJhY2tUYXJnZXRQaWNrZXIgPSBudWxscHRyOworfQorCit2b2lkIFBhZ2U6OnBsYXliYWNr
VGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKGJvb2wgYXZhaWxhYmxlKQoreworICAgIG1faGFz
V2lyZWxlc3NQbGF5YmFja1RhcmdldCA9IGF2YWlsYWJsZTsKKyAgICBmb3IgKEZyYW1lKiBmcmFt
ZSA9ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5l
eHQoKSkKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnBsYXliYWNrVGFyZ2V0QXZhaWxhYmls
aXR5RGlkQ2hhbmdlKGF2YWlsYWJsZSk7Cit9CisKK3ZvaWQgUGFnZTo6Y29uZmlndXJlUGxheWJh
Y2tUYXJnZXRNb25pdG9yaW5nKCkKK3sKKyAgICBib29sIG1vbml0b3JpbmdSZXF1aXJlZCA9IGZh
bHNlOworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGlmIChmcmFtZS0+ZG9j
dW1lbnQoKS0+cmVxdWlyZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZygpKSB7CisgICAg
ICAgICAgICBtb25pdG9yaW5nUmVxdWlyZWQgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobV9yZXF1aXJlc1BsYXliYWNrVGFyZ2V0TW9uaXRv
cmluZyA9PSBtb25pdG9yaW5nUmVxdWlyZWQpCisgICAgICAgIHJldHVybjsKKyAgICBtX3JlcXVp
cmVzUGxheWJhY2tUYXJnZXRNb25pdG9yaW5nID0gbW9uaXRvcmluZ1JlcXVpcmVkOworCisKKyAg
ICBpZiAobW9uaXRvcmluZ1JlcXVpcmVkKQorICAgICAgICBjaHJvbWUoKS5jbGllbnQoKS5zdGFy
dGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKKyAgICBlbHNlCisgICAgICAgIGNocm9t
ZSgpLmNsaWVudCgpLnN0b3BNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCk7Cit9CisjZW5kaWYK
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlzaW9uIDE4
MTQyMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03
NiwxMSArNzYsMTMgQEAgY2xhc3MgRm9jdXNDb250cm9sbGVyOwogY2xhc3MgRnJhbWU7CiBjbGFz
cyBGcmFtZUxvYWRlckNsaWVudDsKIGNsYXNzIEhpc3RvcnlJdGVtOworY2xhc3MgSFRNTE1lZGlh
RWxlbWVudDsKIGNsYXNzIFVzZXJJbnB1dEJyaWRnZTsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsK
IGNsYXNzIEluc3BlY3RvckNvbnRyb2xsZXI7CiBjbGFzcyBNYWluRnJhbWU7CiBjbGFzcyBNZWRp
YUNhblN0YXJ0TGlzdGVuZXI7CitjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3MgUGFn
ZUNvbmZpZ3VyYXRpb247CiBjbGFzcyBQYWdlQ29uc29sZUNsaWVudDsKIGNsYXNzIFBhZ2VEZWJ1
Z2dhYmxlOwpAQCAtNDIyLDYgKzQyNCwxNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc011dGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9tdXRlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TXV0
ZWQoYm9vbCk7CiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorICAgIHZv
aWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKERvY3VtZW50KiwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmLCBib29sKTsKKyAgICBib29sIGhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKSBjb25z
dCB7IHJldHVybiBtX2hhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXQ7IH0KKyAgICBNZWRpYVBsYXli
YWNrVGFyZ2V0JiBwbGF5YmFja1RhcmdldCgpIGNvbnN0IHsgcmV0dXJuICptX3BsYXliYWNrVGFy
Z2V0LmdldCgpOyB9CisgICAgdm9pZCBjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0b3Jpbmco
KTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoTWVk
aWFQbGF5YmFja1RhcmdldCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGxheWJhY2tUYXJn
ZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UoYm9vbCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGluaXRHcm91cCgpOwogCkBAIC01ODEsNiArNTkzLDEzIEBAIHBy
aXZhdGU6CiAKICAgICBTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKKyNpZiBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKQorICAgIERvY3VtZW50KiBtX2RvY3VtZW50UmVxdWVzdGluZ1Bs
YXliYWNrVGFyZ2V0UGlja2VyIHsgbnVsbHB0ciB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRp
YVBsYXliYWNrVGFyZ2V0PiBtX3BsYXliYWNrVGFyZ2V0OworICAgIGJvb2wgbV9yZXF1aXJlc1Bs
YXliYWNrVGFyZ2V0TW9uaXRvcmluZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc1dpcmVsZXNz
UGxheWJhY2tUYXJnZXQgeyBmYWxzZSB9OworI2VuZGlmCisKICAgICBib29sIG1faXNDbG9zaW5n
OwogCiAgICAgYm9vbCBtX2lzUGxheWluZ0F1ZGlvOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uY3BwCShyZXZpc2lvbiAxODE0MjApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbjo6dmlzaWJpbGl0eUNoYW5nZWQo
KQogCiB2b2lkIE1lZGlhU2Vzc2lvbjo6Y2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVyRmlyZWQoKQog
ewotICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbjo6dmlzaWJpbGl0eUNoYW5nZWQoJXApLSB2
aXNpYmxlID0gJXMiLCB0aGlzLCBtX2NsaWVudC5lbGVtZW50SXNIaWRkZW4oKSA/ICJmYWxzZSIg
OiAidHJ1ZSIpOworICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbjo6Y2xpZW50RGF0YUJ1ZmZl
cmluZ1RpbWVyRmlyZWQoJXApLSB2aXNpYmxlID0gJXMiLCB0aGlzLCBtX2NsaWVudC5lbGVtZW50
SXNIaWRkZW4oKSA/ICJmYWxzZSIgOiAidHJ1ZSIpOwogCiAgICAgdXBkYXRlQ2xpZW50RGF0YUJ1
ZmZlcmluZygpOwogCkBAIC0yMjAsMTEgKzIyMCw2IEBAIE1lZGlhU2Vzc2lvbjo6RGlzcGxheVR5
cGUgTWVkaWFTZXNzaW9uOjoKICAgICByZXR1cm4gbV9jbGllbnQuZGlzcGxheVR5cGUoKTsKIH0K
IAotdm9pZCBNZWRpYVNlc3Npb246OndpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlKCkg
Y29uc3QKLXsKLSAgICBtX2NsaWVudC53aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZSgp
OwotfQotCiBTdHJpbmcgTWVkaWFTZXNzaW9uQ2xpZW50OjptZWRpYVNlc3Npb25UaXRsZSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIFN0cmluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vTWVkaWFTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmgJKHJldmlzaW9uIDE4MTQyMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDEx
ICszMCwyMCBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkK
KyNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50LmgiCisjZW5kaWYKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3Mg
TWVkaWFTZXNzaW9uQ2xpZW50OwogCi1jbGFzcyBNZWRpYVNlc3Npb24geworY2xhc3MgTWVkaWFT
ZXNzaW9uCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyAgICA6IHB1Ymxp
YyBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50CisjZW5kaWYKK3sKIHB1YmxpYzoKICAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1lZGlhU2Vzc2lvbj4gY3JlYXRlKE1lZGlhU2Vzc2lv
bkNsaWVudCYpOwogCkBAIC05OSw5ICsxMDgsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5SZWNl
aXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCkgY29uc3Q7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVt
b3RlQ29udHJvbENvbW1hbmQoUmVtb3RlQ29udHJvbENvbW1hbmRUeXBlKTsKIAotICAgIHZpcnR1
YWwgYm9vbCByZXF1aXJlc1BsYXliYWNrVGFyZ2V0Um91dGVNb25pdG9yaW5nKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2b2lkIHdpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdl
KCkgY29uc3Q7Ci0KICAgICBlbnVtIERpc3BsYXlUeXBlIHsKICAgICAgICAgTm9ybWFsLAogICAg
ICAgICBGdWxsc2NyZWVuLApAQCAtMTExLDYgKzExNywxNCBAQCBwdWJsaWM6CiAKICAgICBib29s
IGlzSGlkZGVuKCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KQorICAgIC8vIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoTWVkaWFQbGF5YmFja1RhcmdldCYpIG92ZXJyaWRl
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENo
YW5nZShib29sKSBjb25zdCBvdmVycmlkZSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNQ
bGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIHJlcXVlc3RlZFBsYXliYWNrVGFyZ2V0UGlja2VyKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAg
ICAgTWVkaWFTZXNzaW9uQ2xpZW50JiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsg
fQogCkBAIC0xNTAsNyArMTY0LDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBvdmVy
cmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKCkgY29uc3QgPSAwOwogCisjaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICB2aXJ0dWFsIHZvaWQgd2lyZWxlc3NS
b3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2UoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0V2lyZWxl
c3NQbGF5YmFja1RhcmdldChjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0JikgeyB9CisjZW5kaWYK
IAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfk1lZGlhU2Vzc2lvbkNsaWVudCgpIHsgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9u
TWFuYWdlci5jcHAJKHJldmlzaW9uIDE4MTQyMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjg1LDE0
ICsyODUsNiBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uV2lsCiAgICAg
fQogfQogCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OndpcmVsZXNzUm91dGVzQXZhaWxhYmxl
Q2hhbmdlZCgpCi17Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFuYWdlcjo6d2lyZWxl
c3NSb3V0ZXNBdmFpbGFibGVDaGFuZ2VkIik7Ci0gICAgVmVjdG9yPE1lZGlhU2Vzc2lvbio+IHNl
c3Npb25zID0gbV9zZXNzaW9uczsKLSAgICBmb3IgKGF1dG8qIHNlc3Npb24gOiBzZXNzaW9ucykK
LSAgICAgICAgc2Vzc2lvbi0+d2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2UoKTsKLX0K
LQogI2lmICFQTEFURk9STShDT0NPQSkKIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRl
U2Vzc2lvblN0YXRlKCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01l
ZGlhU2Vzc2lvbk1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmgJKHJldmlzaW9uIDE4MTQyMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTU0LDcgKzU0LDYgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyQmFja2dyb3VuZCgpIGNvbnN0OwotICAgIHZv
aWQgd2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVDaGFuZ2VkKCk7CiAKICAgICBlbnVtIFNlc3Npb25S
ZXN0cmljdGlvbkZsYWdzIHsKICAgICAgICAgTm9SZXN0cmljdGlvbnMgPSAwLApAQCAtNzksOSAr
NzgsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2Vzc2lvbkNhbkxvYWRNZWRpYShj
b25zdCBNZWRpYVNlc3Npb24mKSBjb25zdDsKIAorI2lmIFBMQVRGT1JNKElPUykKICAgICB2aXJ0
dWFsIHZvaWQgY29uZmlndXJlV2lyZUxlc3NUYXJnZXRNb25pdG9yaW5nKCkgeyB9Ci0KLSNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZpcnR1YWwgYm9vbCBoYXNXaXJl
bGVzc1RhcmdldHNBdmFpbGFibGUoKSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9T
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlh
U2Vzc2lvbk1hbmFnZXJJT1MuaAkocmV2aXNpb24gMTgxNDIwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00NSw5ICs0NSwxNCBAQCBjbGFzcyBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TIDogcHVibGljIE1l
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFTZXNzaW9uTWFuYWdlcmlPUygpOwogCisgICAg
dm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSgpOworICAgIHZpcnR1
YWwgYm9vbCBoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGUoKSBvdmVycmlkZTsKKwogcHJpdmF0
ZToKICAgICBmcmllbmQgY2xhc3MgTWVkaWFTZXNzaW9uTWFuYWdlcjsKIAorICAgIE1lZGlhU2Vz
c2lvbk1hbmFnZXJpT1MoKTsKKwogICAgIHZpcnR1YWwgdm9pZCBzZXNzaW9uV2lsbEJlZ2luUGxh
eWJhY2soTWVkaWFTZXNzaW9uJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNlc3Npb25X
aWxsRW5kUGxheWJhY2soTWVkaWFTZXNzaW9uJikgb3ZlcnJpZGU7CiAgICAgCkBAIC01NSwxNCAr
NjAsMTAgQEAgcHJpdmF0ZToKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRSZXN0cmljdGlv
bnMoKSBvdmVycmlkZTsKIAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi0g
ICAgdmlydHVhbCBib29sIGhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZSgpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBjb25maWd1cmVXaXJlTGVzc1RhcmdldE1vbml0b3JpbmcoKSBvdmVy
cmlkZTsKLSNlbmRpZgogCiAgICAgdmlydHVhbCBib29sIHNlc3Npb25DYW5Mb2FkTWVkaWEoY29u
c3QgTWVkaWFTZXNzaW9uJikgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICBNZWRpYVNlc3Npb25NYW5h
Z2VyaU9TKCk7CisgICAgCiAgICAgUmV0YWluUHRyPFdlYk1lZGlhU2Vzc2lvbkhlbHBlcj4gbV9v
YmpjT2JzZXJ2ZXI7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQkocmV2aXNpb24g
MTgxNDIwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lv
bk1hbmFnZXJJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTU5LDcgKzE1OSw2IEBAIHZvaWQgTWVkaWFT
ZXNzaW9uTWFuYWdlcmlPUzo6cmVzZXRSZXN0cmkKICAgICBhZGRSZXN0cmljdGlvbihNZWRpYVNl
c3Npb246OlZpZGVvLCBBdXRvUHJlbG9hZGluZ05vdFBlcm1pdHRlZCk7CiB9CiAKLSNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9T
OjpoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGUoKQogewogICAgIHJldHVybiBbbV9vYmpjT2Jz
ZXJ2ZXIgaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlXTsKQEAgLTE4NCw4ICsxODMsNyBAQCB2
b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmNvbmZpZ3VyZVdpCiAgICAgZWxzZQogICAgICAg
ICBbbV9vYmpjT2JzZXJ2ZXIgc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXTsKIH0KLSNlbmRp
ZgotICAgIAorCiB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25XaWxsQmVnaW5Q
bGF5YmFjayhNZWRpYVNlc3Npb24mIHNlc3Npb24pCiB7CiAgICAgTWVkaWFTZXNzaW9uTWFuYWdl
cjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKHNlc3Npb24pOwpAQCAtMjMzLDYgKzIzMSwxNCBA
QCBib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25DYW5MCiAgICAgcmV0dXJuIHNl
c3Npb24uc3RhdGUoKSA9PSBNZWRpYVNlc3Npb246OlBsYXlpbmcgfHwgIXNlc3Npb24uaXNIaWRk
ZW4oKSB8fCBzZXNzaW9uLmRpc3BsYXlUeXBlKCkgPT0gTWVkaWFTZXNzaW9uOjpPcHRpbWl6ZWQ7
CiB9CiAKK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VB
dmFpbGFibGVEaWRDaGFuZ2UoKQoreworICAgIFZlY3RvcjxNZWRpYVNlc3Npb24qPiBzZXNzaW9u
TGlzdCA9IHNlc3Npb25zKCk7CisgICAgYm9vbCBoYXZlVGFyZ2V0cyA9IFttX29iamNPYnNlcnZl
ciBoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGVdOworICAgIGZvciAoYXV0byogc2Vzc2lvbiA6
IHNlc3Npb25MaXN0KQorICAgICAgICBzZXNzaW9uLT5leHRlcm5hbE91dHB1dERldmljZUF2YWls
YWJsZURpZENoYW5nZShoYXZlVGFyZ2V0cyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogQGltcGxlbWVudGF0aW9uIFdlYk1lZGlhU2Vzc2lvbkhlbHBlcgpAQCAtNDQ1LDcgKzQ1MSw3
IEBAIC0gKHZvaWQpd2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2UKICAgICAgICAgaWYg
KCFfY2FsbGJhY2spCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgX2NhbGxiYWNrLT53
aXJlbGVzc1JvdXRlc0F2YWlsYWJsZUNoYW5nZWQoKTsKKyAgICAgICAgX2NhbGxiYWNrLT5leHRl
cm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSgpOwogICAgIH0pOwogfQogQGVuZApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1Rhcmdl
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWJhY2tUYXJnZXQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgTWVkaWFQbGF5YmFja1RhcmdldF9oCisjZGVmaW5lIE1lZGlhUGxheWJhY2tUYXJnZXRf
aAorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKworI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorT0JKQ19DTEFTUyBOU0tleWVk
QXJjaGl2ZXI7CitPQkpDX0NMQVNTIE5TS2V5ZWRVbmFyY2hpdmVyOworT0JKQ19DTEFTUyBBVk91
dHB1dERldmljZVBpY2tlckNvbnRleHQ7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5NZWRp
YVBsYXliYWNrVGFyZ2V0KCkgeyB9CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBXRUJDT1JF
X0VYUE9SVCBNZWRpYVBsYXliYWNrVGFyZ2V0KEFWT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dCAq
Y29udGV4dCA9IG5pbCkgeyBtX2RldmljZVBpY2tlckNvbnRleHQgPSBjb250ZXh0OyB9CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuY29kZShOU0tleWVkQXJjaGl2ZXIgKikgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgZGVjb2RlKE5TS2V5ZWRVbmFyY2hpdmVyICos
IE1lZGlhUGxheWJhY2tUYXJnZXQmKTsKKworICAgIHZvaWQgc2V0RGV2aWNlUGlja2VyQ29udGV4
dChBVk91dHB1dERldmljZVBpY2tlckNvbnRleHQgKmNvbnRleHQpIHsgbV9kZXZpY2VQaWNrZXJD
b250ZXh0ID0gY29udGV4dDsgfQorICAgIEFWT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dCAqZGV2
aWNlUGlja2VyQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlUGlja2VyQ29udGV4dC5n
ZXQoKTsgfQorI2VuZGlmCisKK3Byb3RlY3RlZDoKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBS
ZXRhaW5QdHI8QVZPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0PiBtX2RldmljZVBpY2tlckNvbnRl
eHQ7CisjZW5kaWYKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGll
bnQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xp
ZW50X2gKKyNkZWZpbmUgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudF9oCisKKyNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorCisjaW5jbHVkZSAiTWVkaWFQbGF5YmFj
a1RhcmdldC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhUGxheWJhY2tU
YXJnZXQ7CisKK2NsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQgeworcHVibGlj
OgorICAgIHZpcnR1YWwgfk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoKSB7IH0KKwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VQbGF5YmFja1RhcmdldChNZWRpYVBsYXliYWNrVGFy
Z2V0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJs
ZURpZENoYW5nZShib29sKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNQ
bGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgcmVxdWVzdGVkUGxheWJhY2tUYXJnZXRQaWNrZXIoKSBjb25zdCA9IDA7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKQorCisjZW5kaWYgLy8gTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudF9oCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwCShyZXZpc2lvbiAxODE0MjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2Nyw2ICs4NjcsMTEgQEAgdm9p
ZCBNZWRpYVBsYXllcjo6Y3VycmVudFBsYXliYWNrVGFyZ2V0SQogewogICAgIG1fY2xpZW50Lm1l
ZGlhUGxheWVyQ3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQodGhpcyk7CiB9
CisKK3ZvaWQgTWVkaWFQbGF5ZXI6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoY29uc3QgTWVk
aWFQbGF5YmFja1RhcmdldCYgZGV2aWNlKQoreworICAgIG1fcHJpdmF0ZS0+c2V0V2lyZWxlc3NQ
bGF5YmFja1RhcmdldChkZXZpY2UpOworfQogI2VuZGlmCiAKIGRvdWJsZSBNZWRpYVBsYXllcjo6
bWF4RmFzdEZvcndhcmRSYXRlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAkocmV2aXNpb24gMTgxNDIwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNzEsNiArNzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvU291cmNl
UHJvdmlkZXI7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKK2NsYXNzIE1lZGlhUGxh
eWJhY2tUYXJnZXQ7CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIGNsYXNzIE1lZGlhU291cmNl
UHJpdmF0ZUNsaWVudDsKICNlbmRpZgpAQCAtNDc2LDYgKzQ3Nyw4IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgY3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQoKTsKICAgICB2b2lk
IHBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZCgpOworCisgICAgdm9pZCBzZXRXaXJl
bGVzc1BsYXliYWNrVGFyZ2V0KGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXQmKTsKICNlbmRpZgog
CiAgICAgZG91YmxlIG1pbkZhc3RSZXZlcnNlUmF0ZSgpIGNvbnN0OwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgJ
KHJldmlzaW9uIDE4MTQyMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CitjbGFzcyBN
ZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3MgUGxhdGZvcm1UZXh0VHJhY2s7CiAKIGNsYXNzIE1l
ZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CkBAIC0xNjYsNiArMTY3LDggQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBib29sIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXli
YWNrRGlzYWJsZWQoYm9vbCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0V2lyZWxlc3NQbGF5
YmFja1RhcmdldChjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0JikgeyB9CiAjZW5kaWYKIAogI2lm
IFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0TWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9N
ZWRpYVBsYXliYWNrVGFyZ2V0TWFjLm1tCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk1lZGlh
UGxheWJhY2tUYXJnZXQuaCIKKworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQp
ICYmICFQTEFURk9STShJT1MpCisKKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVk91dHB1dERldmlj
ZVBpY2tlckNvbnRleHQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldC5o
PgorI2ltcG9ydCA8V2ViQ29yZS9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8b2JqYy9ydW50aW1l
Lmg+CisKK3R5cGVkZWYgQVZPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0IEFWT3V0cHV0RGV2aWNl
UGlja2VyQ29udGV4dFR5cGU7CisKK1NPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoQVZGb3Vu
ZGF0aW9uKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZPdXRwdXREZXZpY2VQaWNr
ZXJDb250ZXh0KQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBOU1N0cmluZyAqIGNv
bnN0IGRldmljZUNvbnRleHRLZXkgPSBAImRldmljZUNvbnRleHQiOworCit2b2lkIE1lZGlhUGxh
eWJhY2tUYXJnZXQ6OmVuY29kZShOU0tleWVkQXJjaGl2ZXIgKmFyY2hpdmVyKSBjb25zdAorewor
ICAgIGlmIChbZ2V0QVZPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0Q2xhc3MoKSBjb25mb3Jtc1Rv
UHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5nKV0pCisgICAgICAgIFthcmNoaXZlciBl
bmNvZGVPYmplY3Q6bV9kZXZpY2VQaWNrZXJDb250ZXh0LmdldCgpIGZvcktleTpkZXZpY2VDb250
ZXh0S2V5XTsKK30KKworYm9vbCBNZWRpYVBsYXliYWNrVGFyZ2V0OjpkZWNvZGUoTlNLZXllZFVu
YXJjaGl2ZXIgKnVuYXJjaGl2ZXIsIE1lZGlhUGxheWJhY2tUYXJnZXQmIHBsYXliYWNrVGFyZ2V0
KQoreworICAgIGlmICghW2dldEFWT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dENsYXNzKCkgY29u
Zm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBBVk91dHB1dERldmljZVBpY2tlckNvbnRleHQgKmNvbnRleHQgPSBu
aWw7CisKKyAgICBAdHJ5IHsKKyAgICAgICAgY29udGV4dCA9IFt1bmFyY2hpdmVyIGRlY29kZU9i
amVjdE9mQ2xhc3M6Z2V0QVZPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0Q2xhc3MoKSBmb3JLZXk6
ZGV2aWNlQ29udGV4dEtleV07CisgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24p
IHsKKyAgICAgICAgTE9HX0VSUk9SKCJUaGUgdGFyZ2V0IHBpY2tlciBiZWluZyBkZWNvZGVkIGlz
IG5vdCBhIEFWT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dC4iKTsKKyAgICB9CisKKyAgICBwbGF5
YmFja1RhcmdldC5tX2RldmljZVBpY2tlckNvbnRleHQgPSBjb250ZXh0OworCisgICAgcmV0dXJu
IGNvbnRleHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5oCShyZXZpc2lvbiAxODE0MjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKIE9CSkNfQ0xBU1Mg
QVZBc3NldEltYWdlR2VuZXJhdG9yOwogT0JKQ19DTEFTUyBBVkFzc2V0UmVzb3VyY2VMb2FkaW5n
UmVxdWVzdDsKIE9CSkNfQ0xBU1MgQVZNZWRpYVNlbGVjdGlvbkdyb3VwOworT0JKQ19DTEFTUyBB
Vk91dHB1dERldmljZVBpY2tlckNvbnRleHQ7CiBPQkpDX0NMQVNTIEFWUGxheWVyOwogT0JKQ19D
TEFTUyBBVlBsYXllckl0ZW07CiBPQkpDX0NMQVNTIEFWUGxheWVySXRlbUxlZ2libGVPdXRwdXQ7
CkBAIC01OSwxMyArNjAsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlVlRQaXhlbFRyYW5zZmVy
U2VzcwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlcjsKLWNsYXNzIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjsKLWNsYXNzIElu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDOwogY2xhc3MgQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakM7CiBjbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM7CitjbGFzcyBJbmJhbmRNZXRh
ZGF0YVRleHRUcmFja1ByaXZhdGVBVkY7CitjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
T2JqQzsKK2NsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQ7CiBjbGFzcyBNZWRpYVNlbGVjdGlvbkdy
b3VwQVZGT2JqQzsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzsKK2NsYXNzIFdlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlcjsKIAogY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQyA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24gewogcHVibGlj
OgpAQCAtMjc0LDYgKzI3Niw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBTdHJpbmcgd2lyZWxl
c3NQbGF5YmFja1RhcmdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIE1lZGlh
UGxheWVyOjpXaXJlbGVzc1BsYXliYWNrVGFyZ2V0VHlwZSB3aXJlbGVzc1BsYXliYWNrVGFyZ2V0
VHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCB3aXJlbGVzc1ZpZGVvUGxh
eWJhY2tEaXNhYmxlZCgpIGNvbnN0IG92ZXJyaWRlOworI2lmICFQTEFURk9STShJT1MpCisgICAg
dmlydHVhbCB2b2lkIHNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoY29uc3QgTWVkaWFQbGF5YmFj
a1RhcmdldCYpIG92ZXJyaWRlOworI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHNldFdpcmVsZXNz
VmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlRGlz
YWJsZUV4dGVybmFsUGxheWJhY2soKTsKICNlbmRpZgpAQCAtMzQ1LDYgKzM1MCwxMCBAQCBwcml2
YXRlOgogICAgIFJlZlB0cjxJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY+IG1fbWV0
YWRhdGFUcmFjazsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKQorICAgIFJldGFpblB0cjxBVk91dHB1dERldmljZVBpY2tlckNv
bnRleHQ+IG1fb3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dDsKKyNlbmRpZgorCiAgICAgbXV0YWJs
ZSBSZXRhaW5QdHI8TlNBcnJheT4gbV9jYWNoZWRTZWVrYWJsZVJhbmdlczsKICAgICBtdXRhYmxl
IFJldGFpblB0cjxOU0FycmF5PiBtX2NhY2hlZExvYWRlZFJhbmdlczsKICAgICBSZXRhaW5QdHI8
TlNBcnJheT4gbV9jYWNoZWRUcmFja3M7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHJl
dmlzaW9uIDE4MTQyMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbXBvcnQgIk91dE9mQmFuZFRleHRUcmFja1By
aXZhdGVBVkYuaCIKICNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9y
dCAiTWVkaWFQbGF5YmFja1RhcmdldC5oIgogI2ltcG9ydCAiTWVkaWFTZWxlY3Rpb25Hcm91cEFW
Rk9iakMuaCIKICNpbXBvcnQgIk1lZGlhVGltZUFWRm91bmRhdGlvbi5oIgogI2ltcG9ydCAiUGxh
dGZvcm1UaW1lUmFuZ2VzLmgiCkBAIC0xMzUsNiArMTM2LDE0IEBAIEBpbnRlcmZhY2UgQVZVUkxB
c3NldCAoV2ViS2l0RXh0ZW5zaW9ucykKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkg
TlNVUkwgKnJlc29sdmVkVVJMOwogQGVuZAogCisjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQordHlwZWRlZiBBVk91dHB1dERldmljZVBpY2tlckNv
bnRleHQgQVZPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0VHlwZTsKKworQGludGVyZmFjZSBBVlBs
YXllciAoV2ViS2l0RXh0ZW5zaW9ucykKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBBVk91dHB1dERl
dmljZVBpY2tlckNvbnRleHQgKm91dHB1dERldmljZVBpY2tlckNvbnRleHQ7CitAZW5kCisjZW5k
aWYKKwogdHlwZWRlZiBBVlBsYXllciBBVlBsYXllclR5cGU7CiB0eXBlZGVmIEFWUGxheWVySXRl
bSBBVlBsYXllckl0ZW1UeXBlOwogdHlwZWRlZiBBVlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0IEFW
UGxheWVySXRlbUxlZ2libGVPdXRwdXRUeXBlOwpAQCAtNTQ2LDYgKzU1NSw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKICAgICAgICAgW21fYXZQbGF5ZXIuZ2V0
KCkgcmVtb3ZlT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAInJhdGUi
XTsKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgICAgICBbbV9hdlBs
YXllci5nZXQoKSByZW1vdmVPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRo
OkAiZXh0ZXJuYWxQbGF5YmFja0FjdGl2ZSJdOworICAgICAgICBbbV9hdlBsYXllci5nZXQoKSBy
ZW1vdmVPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAib3V0cHV0RGV2
aWNlUGlja2VyQ29udGV4dCJdOwogI2VuZGlmCiAgICAgICAgIG1fYXZQbGF5ZXIgPSBuaWw7CiAg
ICAgfQpAQCAtOTI3LDYgKzkzNywxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6CiAgICAgW21fYXZQbGF5ZXIuZ2V0KCkgYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2
ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAInJhdGUiIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09w
dGlvbk5ldyBjb250ZXh0Oih2b2lkICopTWVkaWFQbGF5ZXJBVkZvdW5kYXRpb25PYnNlcnZhdGlv
bkNvbnRleHRQbGF5ZXJdOwogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAg
ICAgW21fYXZQbGF5ZXIuZ2V0KCkgYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9y
S2V5UGF0aDpAImV4dGVybmFsUGxheWJhY2tBY3RpdmUiIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2Vy
dmluZ09wdGlvbk5ldyBjb250ZXh0Oih2b2lkICopTWVkaWFQbGF5ZXJBVkZvdW5kYXRpb25PYnNl
cnZhdGlvbkNvbnRleHRQbGF5ZXJdOworICAgIFttX2F2UGxheWVyLmdldCgpIGFkZE9ic2VydmVy
Om1fb2JqY09ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJvdXRwdXREZXZpY2VQaWNrZXJDb250
ZXh0IiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDoodm9pZCAq
KU1lZGlhUGxheWVyQVZGb3VuZGF0aW9uT2JzZXJ2YXRpb25Db250ZXh0UGxheWVyXTsKKyNlbmRp
ZgorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICB1cGRhdGVEaXNh
YmxlRXh0ZXJuYWxQbGF5YmFjaygpOwogI2VuZGlmCiAKQEAgLTkzOCw2ICs5NTIsMTEgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgogICAgIFttX2F2UGxheWVyLmdl
dCgpIHNldEFsbG93c0V4dGVybmFsUGxheWJhY2s6bV9hbGxvd3NXaXJlbGVzc1ZpZGVvUGxheWJh
Y2tdOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAh
UExBVEZPUk0oSU9TKQorICAgIGlmIChtX291dHB1dERldmljZVBpY2tlckNvbnRleHQpCisgICAg
ICAgIG1fYXZQbGF5ZXIuZ2V0KCkub3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dCA9IG1fb3V0cHV0
RGV2aWNlUGlja2VyQ29udGV4dC5nZXQoKTsKKyNlbmRpZgorCiAgICAgaWYgKHBsYXllcigpLT5j
bGllbnQoKS5tZWRpYVBsYXllcklzVmlkZW8oKSkKICAgICAgICAgY3JlYXRlQVZQbGF5ZXJMYXll
cigpOwogCkBAIC0xMTM0LDkgKzExNTMsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6CiAgICAgICAgIHN5bmNUZXh0VHJhY2tCb3VuZHMoKTsKICAgICAgICAgW21f
dmlkZW9GdWxsc2NyZWVuTGF5ZXIgYWRkU3VibGF5ZXI6bV90ZXh0VHJhY2tSZXByZXNlbnRhdGlv
bkxheWVyLmdldCgpXTsKICAgICB9Ci0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkKKwogICAgIHVwZGF0ZURpc2FibGVFeHRlcm5hbFBsYXliYWNrKCk7Ci0jZW5kaWYKIH0KIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxzY3Jl
ZW5GcmFtZShGbG9hdFJlY3QgZnJhbWUpCkBAIC0yNjg3LDggKzI3MDUsOSBAQCBib29sIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAgICAgaWYgKCFtX2F2UGxheWVyKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBib29sIHdpcmVsZXNzVGFyZ2V0ID0gW21fYXZQbGF5
ZXIuZ2V0KCkgaXNFeHRlcm5hbFBsYXliYWNrQWN0aXZlXTsKKyAgICBib29sIHdpcmVsZXNzVGFy
Z2V0ID0gbV9hdlBsYXllci5nZXQoKS5leHRlcm5hbFBsYXliYWNrQWN0aXZlOwogICAgIExPRyhN
ZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmlzQ3VycmVudFBsYXli
YWNrVGFyZ2V0V2lyZWxlc3MoJXApIC0gcmV0dXJuaW5nICVzIiwgdGhpcywgYm9vbFN0cmluZyh3
aXJlbGVzc1RhcmdldCkpOworCiAgICAgcmV0dXJuIHdpcmVsZXNzVGFyZ2V0OwogfQogCkBAIC0y
Njk3LDYgKzI3MTYsNyBAQCBNZWRpYVBsYXllcjo6V2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGUg
CiAgICAgaWYgKCFtX2F2UGxheWVyKQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlRhcmdl
dFR5cGVOb25lOwogCisjaWYgUExBVEZPUk0oSU9TKQogICAgIHN3aXRjaCAod2tFeGVybmFsRGV2
aWNlVHlwZUZvclBsYXllcihtX2F2UGxheWVyLmdldCgpKSkgewogICAgIGNhc2Ugd2tFeHRlcm5h
bFBsYXliYWNrVHlwZU5vbmU6CiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6VGFyZ2V0VHlw
ZU5vbmU7CkBAIC0yNzA4LDYgKzI3MjgsMTAgQEAgTWVkaWFQbGF5ZXI6OldpcmVsZXNzUGxheWJh
Y2tUYXJnZXRUeXBlIAogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIE1l
ZGlhUGxheWVyOjpUYXJnZXRUeXBlTm9uZTsKKworI2Vsc2UKKyAgICByZXR1cm4gTWVkaWFQbGF5
ZXI6OlRhcmdldFR5cGVBaXJQbGF5OworI2VuZGlmCiB9CiAKIFN0cmluZyBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjp3aXJlbGVzc1BsYXliYWNrVGFyZ2V0TmFtZSgpIGNvbnN0
CkBAIC0yNzI1LDcgKzI3NDksNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6CiB7CiAgICAgaWYgKCFtX2F2UGxheWVyKQogICAgICAgICByZXR1cm4gIW1fYWxsb3dz
V2lyZWxlc3NWaWRlb1BsYXliYWNrOwotICAgIAorCiAgICAgbV9hbGxvd3NXaXJlbGVzc1ZpZGVv
UGxheWJhY2sgPSBbbV9hdlBsYXllci5nZXQoKSBhbGxvd3NFeHRlcm5hbFBsYXliYWNrXTsKICAg
ICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp3aXJlbGVz
c1ZpZGVvUGxheWJhY2tEaXNhYmxlZCglcCkgLSByZXR1cm5pbmcgJXMiLCB0aGlzLCBib29sU3Ry
aW5nKCFtX2FsbG93c1dpcmVsZXNzVmlkZW9QbGF5YmFjaykpOwogCkBAIC0yNzM4LDE2ICsyNzYy
LDMyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKICAgICBtX2Fs
bG93c1dpcmVsZXNzVmlkZW9QbGF5YmFjayA9ICFkaXNhYmxlZDsKICAgICBpZiAoIW1fYXZQbGF5
ZXIpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIFttX2F2UGxheWVyLmdldCgpIHNldEFs
bG93c0V4dGVybmFsUGxheWJhY2s6IWRpc2FibGVkXTsKIH0KIAorI2lmICFQTEFURk9STShJT1Mp
Cit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFdpcmVsZXNzUGxh
eWJhY2tUYXJnZXQoY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldCYgdGFyZ2V0KQoreworICAgIG1f
b3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dCA9IHRhcmdldC5kZXZpY2VQaWNrZXJDb250ZXh0KCk7
CisKKyAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpz
ZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCVwKSAtIHRhcmdldCA9ICVwIiwgdGhpcywgbV9vdXRw
dXREZXZpY2VQaWNrZXJDb250ZXh0LmdldCgpKTsKKworICAgIGlmICghbV9hdlBsYXllcikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9hdlBsYXllci5nZXQoKS5vdXRwdXREZXZpY2VQaWNrZXJD
b250ZXh0ID0gbV9vdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0LmdldCgpOworfQorI2VuZGlmCisK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlRGlzYWJsZUV4
dGVybmFsUGxheWJhY2soKQogewogICAgIGlmICghbV9hdlBsYXllcikKICAgICAgICAgcmV0dXJu
OwogCisjaWYgUExBVEZPUk0oSU9TKQogICAgIFttX2F2UGxheWVyIHNldFVzZXNFeHRlcm5hbFBs
YXliYWNrV2hpbGVFeHRlcm5hbFNjcmVlbklzQWN0aXZlOm1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIg
IT0gbmlsXTsKKyNlbmRpZgogfQogI2VuZGlmCiAKQEAgLTMxNjksNiArMzIwOSw4IEBAIC0gKHZv
aWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG8KICNpZiBFTkFCTEUoV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKQogICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJp
bmc6QCJleHRlcm5hbFBsYXliYWNrQWN0aXZlIl0pCiAgICAgICAgICAgICBmdW5jdGlvbiA9IFdU
Rjo6YmluZCgmTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxheWJhY2tUYXJn
ZXRJc1dpcmVsZXNzRGlkQ2hhbmdlLCBtX2NhbGxiYWNrKTsKKyAgICAgICAgZWxzZSBpZiAoW2tl
eVBhdGggaXNFcXVhbFRvU3RyaW5nOkAib3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dCJdKQorICAg
ICAgICAgICAgZnVuY3Rpb24gPSBXVEY6OmJpbmQoJk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0RpZENoYW5nZSwgbV9jYWxsYmFjayk7
CiAjZW5kaWYKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFsU2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxTZXR0aW5ncy5jcHAJKHJldmlzaW9uIDE4MTQyMCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDYgKzk3LDkg
QEAgSW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpCYWNrdXAoU2V0dGluZwogI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCiAgICAgLCBtX3RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKHNldHRpbmdz
LmlzVG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQoKSkKICNlbmRpZgorI2lmIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpCisgICAgLCBtX21lZGlhUGxheWJhY2tBbGxvd3NBaXJQbGF5
KHNldHRpbmdzLm1lZGlhUGxheWJhY2tBbGxvd3NBaXJQbGF5KCkpCisjZW5kaWYKIHsKIH0KIApA
QCAtMjAxLDYgKzIwNCw5IEBAIEludGVybmFsU2V0dGluZ3M6OkludGVybmFsU2V0dGluZ3MoUGFn
ZSoKICAgICAsIG1fcGFnZShwYWdlKQogICAgICwgbV9iYWNrdXAocGFnZS0+c2V0dGluZ3MoKSkK
IHsKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorICAgIHBhZ2UtPnNldHRp
bmdzKCkuc2V0TWVkaWFQbGF5YmFja0FsbG93c0FpclBsYXkoZmFsc2UpOworI2VuZGlmCiB9CiAK
IHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaAkocmV2aXNpb24gMTgxNDIw
KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTk1LDYgKzk1LDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CiAgICAgICAgIGJvb2wgbV90b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZDsKICNlbmRpZgorI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisgICAgICAgIGJvb2wgbV9tZWRpYVBs
YXliYWNrQWxsb3dzQWlyUGxheTsKKyNlbmRpZgogICAgIH07CiAKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJbnRlcm5hbFNldHRpbmdzPiBjcmVhdGUoUGFnZSogcGFnZSkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDE4MTQyMCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDcxIEBACisyMDE1LTAzLTExICBFcmljIENhcmxzb24gIDxlcmljLmNh
cmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFVwZGF0ZSBBaXJQbGF5IGhhbmRsaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI1NDEK
KworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgICogU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9tYWMvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzTWFjLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPEFWUGxheWJhY2tU
YXJnZXQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPEFWUGxheWJhY2tU
YXJnZXQ+OjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHk6OldlYkFW
UGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFWUGxheWJh
Y2tUYXJnZXRQaWNrZXJQcm94eTo6fldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eTo6c2hvd1BsYXli
YWNrVGFyZ2V0UGlja2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFja1RhcmdldFBp
Y2tlclByb3h5OjpzdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHk6OnN0b3BNb25pdG9yaW5nUGxh
eWJhY2tUYXJnZXRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQVZQbGF5YmFja1RhcmdldFBp
Y2tlclByb3h5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBVlBsYXliYWNrVGFyZ2V0
UGlja2VyUHJveHk6OkNsaWVudDo6fkNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGV2aWNlUGlja2Vy
UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNob3dQbGF5YmFja1Rhcmdl
dFBpY2tlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3RhcnRpbmdNb25pdG9y
aW5nUGxheWJhY2tUYXJnZXRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdG9w
TW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmg6
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAgICAgKFdl
YktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZVBsYXliYWNrVGFyZ2V0UGlja2VyKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvbWFjL1dlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYy5oOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQ
cm94eU1hYy5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkFWUGxheWJhY2tUYXJnZXRQ
aWNrZXJQcm94eU1hYzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFja1Rh
cmdldFBpY2tlclByb3h5TWFjOjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6On5XZWJB
VlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMpOgorICAgICAgICAoV2ViS2l0OjpXZWJBVlBs
YXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6Om91dHB1dGVEZXZpY2VBdmFpbGFiaWxpdHlDaGFu
Z2VkVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkFWUGxheWJhY2tUYXJnZXRQaWNr
ZXJQcm94eU1hYzo6YXZhaWxhYmxlRGV2aWNlc0RpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYzo6ZGV2aWNlUGlja2VyKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjOjpzaG93UGxheWJh
Y2tUYXJnZXRQaWNrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlj
a2VyUHJveHlNYWM6OmN1cnJlbnREZXZpY2VEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6OnN0YXJ0aW5nTW9uaXRvcmluZ1BsYXli
YWNrVGFyZ2V0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkFWUGxheWJhY2tUYXJnZXRQaWNrZXJQ
cm94eU1hYzo6c3RvcE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMpOgorICAgICAgICAoLVtXZWJB
Vk91dHB1dERldmljZVBpY2tlck1lbnVDb250cm9sbGVySGVscGVyIGluaXRXaXRoQ2FsbGJhY2s6
XSk6CisgICAgICAgICgtW1dlYkFWT3V0cHV0RGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXJIZWxw
ZXIgY2xlYXJDYWxsYmFja10pOgorICAgICAgICAoLVtXZWJBVk91dHB1dERldmljZVBpY2tlck1l
bnVDb250cm9sbGVySGVscGVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdl
OmNvbnRleHQ6XSk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQVZQbGF5YmFja1Rhcmdl
dFBpY2tlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBVlBsYXliYWNrVGFyZ2V0
UGlja2VyOjpXZWJBVlBsYXliYWNrVGFyZ2V0UGlja2VyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
QVZQbGF5YmFja1RhcmdldFBpY2tlcjo6c2hvd1BsYXliYWNrRGV2aWNlUGlja2VyKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQVZQbGF5YmFja1RhcmdldFBpY2tlcjo6Y29uZmlndXJlV2lyZUxlc3NU
YXJnZXRNb25pdG9yaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFja1RhcmdldFBp
Y2tlcjo6YWRkQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFja1RhcmdldFBp
Y2tlcjo6cmVtb3ZlQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQVZQbGF5YmFja1Rhcmdl
dFBpY2tlcjo6ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJB
VlBsYXliYWNrVGFyZ2V0UGlja2VyOjpwbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eURpZENoYW5n
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnNob3dQbGF5YmFja1Rhcmdl
dFBpY2tlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6c3RhcnRpbmdNb25p
dG9yaW5nUGxheWJhY2tUYXJnZXRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50
OjpzdG9wTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxheWJhY2tUYXJnZXRTZWxlY3RlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hh
bmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluOgor
CiAyMDE1LTAzLTExICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgRml4IHRoZSBidWlsZApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkocmV2aXNpb24gMTgxNDIwKQorKysgU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUs
NiArMTE1LDEyIEBAIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKIH0KICNlbmRp
ZgogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQ7Cit9CisjZW5kaWYKKwogbmFtZXNwYWNl
IElQQyB7CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6QWZmaW5l
VHJhbnNmb3JtPiB7CkBAIC00NTQsNiArNDYwLDEzIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZToKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVy
JiwgV2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGEmKTsKIH07CiAKKyNpZiBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKQordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3Vt
ZW50RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQmKTsKKyAgICBz
dGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldCYpOworfTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBJUEMKIAogI2VuZGlmIC8v
IFdlYkNvcmVBcmd1bWVudENvZGVyc19oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFj
L1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQkocmV2aXNpb24gMTgxNDIw
KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTM4LDExICszOCwxNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Q
cm90ZWN0aW9uU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU29mdExp
bmtpbmcuaD4KKyNpbXBvcnQgPG9iamMvcnVudGltZS5oPgogCiAjaWYgVVNFKENGTkVUV09SSykK
ICNpbXBvcnQgPENGTmV0d29yay9DRlVSTFJlcXVlc3QuaD4KICNlbmRpZgogCisjaWYgRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyNpbXBvcnQgPFdlYkNvcmUvTWVkaWFQbGF5YmFj
a1RhcmdldC5oPgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3Bh
Y2UgSVBDIHsKQEAgLTQzMiw0ICs0MzgsMzEgQEAgYm9vbCBBcmd1bWVudENvZGVyPENvbnRlbnRG
aWx0ZXJVbmJsb2NrSAogICAgIHJldHVybiB0cnVlOwogfQogCisjaWYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkKK3ZvaWQgQXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0
Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgTWVkaWFQbGF5YmFja1Rh
cmdldCYgdGFyZ2V0KQoreworICAgIFJldGFpblB0cjxOU011dGFibGVEYXRhPiBkYXRhID0gYWRv
cHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKKyAgICBSZXRhaW5QdHI8TlNLZXll
ZEFyY2hpdmVyPiBhcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGlu
aXRGb3JXcml0aW5nV2l0aE11dGFibGVEYXRhOmRhdGEuZ2V0KCldKTsKKyAgICBbYXJjaGl2ZXIg
c2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsKKyAgICB0YXJnZXQuZW5jb2RlKGFyY2hpdmVy
LmdldCgpKTsKKyAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOworICAgIElQQzo6ZW5jb2Rl
KGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihkYXRhLmdldCgpKSk7Cit9CisK
K2Jvb2wgQXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Pjo6ZGVjb2RlKEFyZ3VtZW50
RGVjb2RlciYgZGVjb2RlciwgTWVkaWFQbGF5YmFja1RhcmdldCYgdGFyZ2V0KQoreworICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7CisgICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBk
YXRhKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUmV0YWluUHRyPE5TS2V5ZWRVbmFy
Y2hpdmVyPiB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBp
bml0Rm9yUmVhZGluZ1dpdGhEYXRhOihOU0RhdGEgKilkYXRhLmdldCgpXSk7CisgICAgW3VuYXJj
aGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsKKyAgICBpZiAoIU1lZGlhUGxheWJh
Y2tUYXJnZXQ6OmRlY29kZSh1bmFyY2hpdmVyLmdldCgpLCB0YXJnZXQpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgCisgICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOworICAgIHJl
dHVybiB0cnVlOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIElQQwpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCShyZXZpc2lvbiAxODE0MjApCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICsz
NCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisjaW5j
bHVkZSAiV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5LmgiCisjZW5kaWYKKwogI2lm
IFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIlBsdWdpbkNvbXBsZXhUZXh0SW5wdXRTdGF0ZS5o
IgogCkBAIC0zMTMsNiArMzE3LDExIEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShNQUMpCiAgICAg
dmlydHVhbCB2b2lkIGRpZFBlcmZvcm1BY3Rpb25NZW51SGl0VGVzdChjb25zdCBBY3Rpb25NZW51
SGl0VGVzdFJlc3VsdCYsIGJvb2wgZm9ySW1tZWRpYXRlQWN0aW9uLCBBUEk6Ok9iamVjdCopID0g
MDsKICNlbmRpZgorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBM
QVRGT1JNKElPUykKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxXZWJNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyUHJveHk+IGNyZWF0ZVBsYXliYWNrVGFyZ2V0UGlja2VyKFdlYlBhZ2VQcm94
eSopID0gMDsKKyNlbmRpZgorCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyUHJveHkuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuaCIKKworI2lmIEVO
QUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitX
ZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHk6OldlYk1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJQcm94eShDbGllbnQmIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KCZjbGllbnQpCit7Cit9
CisKK1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eTo6fldlYk1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJQcm94eSgpCit7CisgICAgbV9jbGllbnQgPSAwOworfQorCit2b2lkIFdlYk1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eTo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGJvb2wpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuOworfQorCit2b2lkIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQ
cm94eTo6c3RhcnRpbmdNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkKK3sKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm47Cit9CisKK3ZvaWQgV2ViTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlclByb3h5OjpzdG9wTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpCit7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclBy
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJQcm94eS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYk1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJQcm94eV9oCisjZGVmaW5lIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJQcm94eV9oCisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorCisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK2NsYXNzIEZsb2F0UmVjdDsKK2NsYXNzIE1lZGlhUGxheWJhY2tUYXJn
ZXQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2Ns
YXNzIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eSB7CitwdWJsaWM6CisgICAgY2xh
c3MgQ2xpZW50IHsKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgfkNsaWVudCgpIHsg
fQorCisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hvb3NlUGxheWJhY2tU
YXJnZXQoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldCYpID0gMDsKKyAgICAgICAg
dmlydHVhbCB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGJvb2wp
ID0gMDsKKworICAgICAgICB2b2lkIGludmFsaWRhdGUoKTsKKyAgICB9OworCisgICAgdmlydHVh
bCB+V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5KCk7CisKKyAgICB2aXJ0dWFsIHZv
aWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGJv
b2wpOworICAgIHZpcnR1YWwgdm9pZCBzdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKKwor
cHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94
eShDbGllbnQmKTsKKworICAgIENsaWVudCogbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisK
KyNlbmRpZiAvLyBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlfaApJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDE4MTQyMCkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01NTk3LDQgKzU1OTcsNDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUF1dG9G
aWxsQnV0dG9uQwogICAgIG1fdWlDbGllbnQtPmRpZENsaWNrQXV0b0ZpbGxCdXR0b24oKnRoaXMs
IG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSku
Z2V0KCkpOwogfQogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBM
QVRGT1JNKElPUykKKworV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5JiBXZWJQYWdl
UHJveHk6OmRldmljZVBpY2tlclByb3h5KCkKK3sKKyAgICBpZiAoIW1fcGxheWJhY2tUYXJnZXRQ
aWNrZXIpCisgICAgICAgIG1fcGxheWJhY2tUYXJnZXRQaWNrZXIgPSBtX3BhZ2VDbGllbnQuY3Jl
YXRlUGxheWJhY2tUYXJnZXRQaWNrZXIodGhpcyk7CisKKyAgICByZXR1cm4gKm1fcGxheWJhY2tU
YXJnZXRQaWNrZXIuZ2V0KCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpzaG93UGxheWJhY2tU
YXJnZXRQaWNrZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiByZWN0LCBib29sIGhhc1ZpZGVv
KQoreworICAgIGRldmljZVBpY2tlclByb3h5KCkuc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKG1f
cGFnZUNsaWVudC5yb290Vmlld1RvU2NyZWVuKEludFJlY3QocmVjdCkpLCBoYXNWaWRlbyk7Cit9
CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpzdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMo
KQoreworICAgIGRldmljZVBpY2tlclByb3h5KCkuc3RhcnRpbmdNb25pdG9yaW5nUGxheWJhY2tU
YXJnZXRzKCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpzdG9wTW9uaXRvcmluZ1BsYXliYWNr
VGFyZ2V0cygpCit7CisgICAgZGV2aWNlUGlja2VyUHJveHkoKS5zdG9wTW9uaXRvcmluZ1BsYXli
YWNrVGFyZ2V0cygpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlUGxheWJhY2tU
YXJnZXQoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldCYgdGFyZ2V0KQoreworICAg
IGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQodGFyZ2V0KSwgbV9wYWdl
SUQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGVEaWRDaGFuZ2UoYm9vbCBhdmFpbGFibGUpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGxh
eWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UoYXZhaWxhYmxlKSwgbV9wYWdlSUQpOwor
fQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAxODE0MjApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMSw2ICsx
MTEsMTAgQEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyc0d0ay5oIgogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQorI2luY2x1
ZGUgIldlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5oIgorI2VuZGlmCisKIG5hbWVz
cGFjZSBBUEkgewogY2xhc3MgQ29udGV4dE1lbnVDbGllbnQ7CiBjbGFzcyBGaW5kQ2xpZW50OwpA
QCAtMjU4LDYgKzI2Miw5IEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVj
dEkKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKICAgICAsIHB1YmxpYyBXZWJDb2xvclBp
Y2tlcjo6Q2xpZW50CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KSAmJiAhUExBVEZPUk0oSU9TKQorICAgICwgcHVibGljIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJQcm94eTo6Q2xpZW50CisjZW5kaWYKICAgICAsIHB1YmxpYyBXZWJQb3B1cE1lbnVQcm94
eTo6Q2xpZW50CiAgICAgLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICAsIHB1Ymxp
YyBJUEM6Ok1lc3NhZ2VTZW5kZXIgewpAQCAtOTk5LDYgKzEwMDYsMTcgQEAgcHVibGljOgogICAg
IHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBib29sIHNob3Vs
ZFNhbXBsZSk7CiAgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGNvbnN0IFN0cmluZyYg
dmFsdWUsIGJvb2wgc2hvdWxkU2FtcGxlKTsKIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisgICAgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlclByb3h5JiBkZXZpY2VQaWNrZXJQcm94eSgpOworICAgIHZvaWQgc2hvd1BsYXliYWNrVGFy
Z2V0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGJvb2wgaGFzVmlkZW8pOworICAg
IHZvaWQgc3RhcnRpbmdNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCk7CisgICAgdm9pZCBzdG9w
TW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpOworCisgICAgLy8gV2ViTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlclByb3h5OjpDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hvb3NlUGxheWJh
Y2tUYXJnZXQoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldCYpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShi
b29sKSBvdmVycmlkZTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdl
Q2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdl
Q29uZmlndXJhdGlvbiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CkBAIC0xNjY0
LDYgKzE2ODIsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdmlld1N0YXRlQ2hhbmdlV2FudHNT
eW5jaHJvbm91c1JlcGx5OwogICAgIFZlY3Rvcjx1aW50NjRfdD4gbV9uZXh0Vmlld1N0YXRlQ2hh
bmdlQ2FsbGJhY2tzOwogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYg
IVBMQVRGT1JNKElPUykKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlclByb3h5PiBtX3BsYXliYWNrVGFyZ2V0UGlja2VyOworI2VuZGlmCisKICAgICBib29s
IG1faXNQbGF5aW5nQXVkaW87CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE4MTQyMCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTQyNSw0ICs0MjUsMTEgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNl
bmRpZgogCiAgICAgSGFuZGxlQXV0b0ZpbGxCdXR0b25DbGljayhXZWJLaXQ6OlVzZXJEYXRhIHVz
ZXJEYXRhKTsKKworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFU
Rk9STShJT1MpCisgICAgU2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKFdlYkNvcmU6OkZsb2F0UmVj
dCBwaWNrZXJMb2NhdGlvbiwgYm9vbCBoYXNWaWRlbykKKyAgICBTdGFydGluZ01vbml0b3JpbmdQ
bGF5YmFja1RhcmdldHMoKQorICAgIFN0b3BNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkKKyNl
bmRpZgorCiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>