<?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>95161</bug_id>
          
          <creation_ts>2012-08-27 18:39:09 -0700</creation_ts>
          <short_desc>WebProcess XPC services need have their environment set without disrupting all other XPC services</short_desc>
          <delta_ts>2012-09-21 19:21:59 -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>New Bugs</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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>705973</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-08-27 18:39:09 -0700</bug_when>
    <thetext>Replace one horrible hack to make XPC services work, with a slightly less, slightly more, horrible hack</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705997</commentid>
    <comment_count>1</comment_count>
      <attachid>160883</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-08-27 19:17:50 -0700</bug_when>
    <thetext>Created attachment 160883
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706021</commentid>
    <comment_count>2</comment_count>
      <attachid>160883</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-08-27 20:04:12 -0700</bug_when>
    <thetext>Comment on attachment 160883
Patch

This hack is too horrible for me.  Removing from review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706776</commentid>
    <comment_count>3</comment_count>
      <attachid>160883</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-28 15:09:19 -0700</bug_when>
    <thetext>Comment on attachment 160883
Patch

Attachment 160883 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13661431</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725793</commentid>
    <comment_count>4</comment_count>
      <attachid>165186</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-09-21 13:57:59 -0700</bug_when>
    <thetext>Created attachment 165186
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725798</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-21 14:02:09 -0700</bug_when>
    <thetext>Attachment 165186 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/WebProcess/mac/WebProcessServiceEntryPoints.h:44:  The parameter name &quot;connection&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 13 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>725821</commentid>
    <comment_count>6</comment_count>
      <attachid>165186</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-09-21 14:23:16 -0700</bug_when>
    <thetext>Comment on attachment 165186
Patch

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

&gt; Source/WebKit2/ChangeLog:14
&gt; +        the AppSandbox.

App Sandbox, unless you&apos;re talking about the MacOSX feature.

&gt; Source/WebKit2/UIProcess/Launcher/mac/ProcessLauncherMac.mm:127
&gt; +    xpc_connection_set_event_handler(connection, ^(xpc_object_t event) { });

Please add a comment indicating why the block is empty here.

&gt; Source/WebKit2/WebProcessServiceForWebKitDevelopment/WebProcessServiceForWebKitDevelopmentMain.mm:54
&gt; +                NSLog(@&quot;re-exec&quot;);

:|</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726030</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-09-21 19:21:59 -0700</bug_when>
    <thetext>Committed r129293: &lt;http://trac.webkit.org/changeset/129293&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160883</attachid>
            <date>2012-08-27 19:17:50 -0700</date>
            <delta_ts>2012-09-21 13:57:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95161-20120827191743.patch</filename>
            <type>text/plain</type>
            <size>21385</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNjgzMykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA4LTI3ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVwbGFjZSBvbmUgaG9ycmlibGUgaGFj
ayB0byBtYWtlIFhQQyBzZXJ2aWNlcyB3b3JrLCB3aXRoIGEgc2xpZ2h0bHkgbGVzcywgc2xpZ2h0
bHkgbW9yZSwgaG9ycmlibGUgaGFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTUxNjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgdGhlIGFiaWxpdHkgdG8gc2V0IHVwIHRoZSBlbnZpcm9ubWVudCBm
b3IgYW4gWFBDIHNlcnZpY2UgaW5zdGFuY2UgYnkgcmUtZXhlY2luZworICAgICAgICB0aGUgaW5z
dGFuY2UuIFRoaXMgYWxsb3dzIHVzIHRvIHNldCBEWUxEX0ZSQU1FV09SS19QQVRILCBEWUxEX0lO
U0VSVF9MSUJSQVJJRVMsIHRoZQorICAgICAgICBDUFUgdHlwZSBhbmQgaWYgd2Ugd2FudCBhbiBl
eGVjdXRhYmxlIGhlYXAgKG5lZWQgZm9yIHBsdWctaW5zKS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tOgorICAgICAgICAoV2ViS2l0Ojpj
b25uZWN0VG9YUENTZXJ2aWNlKToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlWFBDU2VydmljZUlu
c3RhbmNlKToKKyAgICAgICAgU3BsaXQgaW50byB0d28gZnVuY3Rpb25zLiBJZiBuZWNlc3Nhcnks
IGNyZWF0ZSBhIHJlLWV4ZWMgY29ubmVjdGlvbiB0byByZWFkeQorICAgICAgICB0aGUgaW5zdGFu
Y2UgaW4gdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb24uCisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NM
YXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgIE1vdmUgZW52aXJvbm1lbnQgdmFyaWFi
bGUgY29uZmlndXJhdGlvbiBiZWZvcmUgc2V0dGluZyB1cCB0aGUgWFBDIHNlcnZpY2Ugc28gaXQg
Y2FuCisgICAgICAgIGJlIHJldXNlZC4KKworICAgICAgICAqIFdlYktpdDJTZXJ2aWNlL01haW5N
YWNTZXJ2aWNlLm1tOgorICAgICAgICAoV2ViS2l0MlNlcnZpY2VFdmVudEhhbmRsZXIpOgorICAg
ICAgICBMaXN0ZW4gZm9yIG5ldyBtZXNzYWdlIChuYW1lZCAicmUtZXhlYyIpIGFuZCBkbyBhcyB0
aGUgbWVzc2FnZSBzYXlzLCByZS1leGVjaW5nIG91cnNlbGYKKyAgICAgICAgKHVzaW5nIHBvc2l4
X3NwYXduIHdpdGggUE9TSVhfU1BBV05fU0VURVhFQykgYW5kIHNldHRpbmcgdXAgdGhlIGNvcnJl
Y3QgZW52aXJvbm1lbnQuCisKKyAgICAgICAgKG1haW4pOgorICAgICAgICBTdG9yZSBvZmYgdGhl
IGZ1bGwgcGF0aCB0byBvdXJzZWx2ZXMgZm9yIHJlLWV4ZWNpbmcuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL21hYy9XZWJQcm9jZXNzTWFpbk1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc01haW5YUEMpOgorICAgICAgICBDb3JyZWN0bHkgcmVtb3ZlIHRoZSBXZWJQcm9jZXNzIHNo
aW0gZnJvbSB0aGUgZW52aXJvbm1lbnQgc28gc3ViIHByb2Nlc3MgZG9uJ3QgZ2V0IGl0CisgICAg
ICAgIGFuZCByZW1vdmUgYSBub3cgaW5jb3JyZWN0IGNvbW1lbnQuCisKIDIwMTItMDgtMjcgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBGb3Jj
ZSBSZXBhaW50IHdvcmsgd2l0aCB0aWxlZCBiYWNraW5nIHN0b3JlCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVu
Y2hlck1hYy5tbQkocmV2aXNpb24gMTI2Njg3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTgw
LDIyICs4MCwxNyBAQCBzdGF0aWMgdm9pZCBzZXRVcFRlcm1pbmF0aW9uTm90aWZpY2F0aW9uCiB0
eXBlZGVmIHZvaWQgKFByb2Nlc3NMYXVuY2hlcjo6KkRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3NG
dW5jdGlvbikoUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllciwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllcik7CiAKICNpZiBIQVZFKFhQQykKLXN0YXRpYyB2b2lkIGxhdW5jaFhQQ1NlcnZp
Y2UoY29uc3QgUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiwgY29uc3QgRW52aXJvbm1l
bnRWYXJpYWJsZXMmLCBQcm9jZXNzTGF1bmNoZXIqIHRoYXQsIERpZEZpbmlzaExhdW5jaGluZ1By
b2Nlc3NGdW5jdGlvbiBkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzRnVuY3Rpb24pCitzdGF0aWMg
dm9pZCBjb25uZWN0VG9YUENTZXJ2aWNlKGNvbnN0IFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0
aW9ucyYgbGF1bmNoT3B0aW9ucywgY29uc3QgRW52aXJvbm1lbnRWYXJpYWJsZXMmIGVudmlyb25t
ZW50VmFyaWFibGVzLCBQcm9jZXNzTGF1bmNoZXIqIHRoYXQsIERpZEZpbmlzaExhdW5jaGluZ1By
b2Nlc3NGdW5jdGlvbiBkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzRnVuY3Rpb24sIE5TVVVJRCAq
aW5zdGFuY1VVSUQpCiB7CiAgICAgLy8gQ3JlYXRlIGEgY29ubmVjdGlvbiB0byB0aGUgV2ViS2l0
MiBYUEMgc2VydmljZS4KICAgICB4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24gPSB4cGNfY29u
bmVjdGlvbl9jcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQyU2VydmljZSIsIDApOwotCi0gICAgdXVp
ZF90IHV1aWQ7Ci0gICAgdXVpZF9nZW5lcmF0ZSh1dWlkKTsKLSAgICB4cGNfY29ubmVjdGlvbl9z
ZXRfaW5zdGFuY2UoY29ubmVjdGlvbiwgdXVpZCk7Ci0KKyAgICAKKyAgICB1dWlkX3QgdXVpZEJ5
dGVzOworICAgIFtpbnN0YW5jVVVJRCBnZXRVVUlEQnl0ZXM6dXVpZEJ5dGVzXTsKKyAgICB4cGNf
Y29ubmVjdGlvbl9zZXRfaW5zdGFuY2UoY29ubmVjdGlvbiwgdXVpZEJ5dGVzKTsKICAgICB4cGNf
Y29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihjb25uZWN0aW9uLCBeKHhwY19vYmplY3RfdCBl
dmVudCkgewotICAgICAgICB4cGNfdHlwZV90IHR5cGUgPSB4cGNfZ2V0X3R5cGUoZXZlbnQpOwot
ICAgICAgICBpZiAodHlwZSA9PSBYUENfVFlQRV9FUlJPUikgewotICAgICAgICAgICAgaWYgKGV2
ZW50ID09IFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVkFMSUQgfHwgZXZlbnQgPT0gWFBDX0VSUk9S
X0NPTk5FQ1RJT05fSU5URVJSVVBURUQpCi0gICAgICAgICAgICAgICAgTlNMb2coQCJXZWJLaXQy
IFdlYiBDb250ZW50IHNlcnZpY2UgZXhpdGVkLiIpOwotICAgICAgICB9CiAgICAgfSk7CisKICAg
ICB4cGNfY29ubmVjdGlvbl9yZXN1bWUoY29ubmVjdGlvbik7CiAKICAgICAvLyBDcmVhdGUgdGhl
IGxpc3RlbmluZyBwb3J0LgpAQCAtMTM3LDYgKzEzMiw3NiBAQCBzdGF0aWMgdm9pZCBsYXVuY2hY
UENTZXJ2aWNlKGNvbnN0IFByb2NlCiAgICAgfSk7CiAgICAgeHBjX3JlbGVhc2UoYm9vdFN0cmFw
TWVzc2FnZSk7CiB9CisKK3N0YXRpYyB2b2lkIGNyZWF0ZVhQQ1NlcnZpY2VJbnN0YW5jZShjb25z
dCBQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMsIGNvbnN0IEVu
dmlyb25tZW50VmFyaWFibGVzJiBlbnZpcm9ubWVudFZhcmlhYmxlcywgUHJvY2Vzc0xhdW5jaGVy
KiB0aGF0LCBEaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzRnVuY3Rpb24gZGlkRmluaXNoTGF1bmNo
aW5nUHJvY2Vzc0Z1bmN0aW9uKQoreworICAgIC8vIEdlbmVyYXRlIHRoZSB1dWlkIGZvciB0aGUg
c2VydmljZSBpbnN0YW5jZSB3ZSBhcmUgYWJvdXQgdG8gY3JlYXRlLgorICAgIE5TVVVJRCAqaW5z
dGFuY2VVVUlEID0gW1tOU1VVSUQgYWxsb2NdIGluaXRdOworCisgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBkZXRlcm1pbmUgY2FzZXMgd2hlcmUgd2UgZG9uJ3QgbmVlZCB0aGUgcmUtZXhlY2VkIGNv
bm5lY3Rpb24sCisgICAgLy8gc3VjaCBhcyB3aGVuIHdlIGFyZW4ndCBzZXR0aW5nIHVwIGEgc2hp
bSBvciBkb24ndCBuZWVkIHRvIHNldCBhIGN1c3RvbSBmcmFtZXdvcmsgcGF0aC4KKyAgICBib29s
IG5lZWRzUmVFeGVjZWRJbnN0YW5jZSA9IHRydWU7CisKKyAgICBpZiAoIW5lZWRzUmVFeGVjZWRJ
bnN0YW5jZSkgeworICAgICAgICAvLyBJZiB3ZSBkb24ndCBuZWVkIGEgcmUtZXhlY2VkIGluc3Rh
bmQsIGp1c3QgZ28gYWhlYWQgYW5kIGNvbm5lY3QgdG8gdGhlIHNlcnZpY2UuCisgICAgICAgIGNv
bm5lY3RUb1hQQ1NlcnZpY2UobGF1bmNoT3B0aW9ucywgZW52aXJvbm1lbnRWYXJpYWJsZXMsIHRo
YXQsIGRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3NGdW5jdGlvbiwgaW5zdGFuY2VVVUlEKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIElmIHdlIG5lZWQgdG8gaGF2ZSBhIHJlLWV4
ZWNlZCBpbnN0YW5jZSwgY3JlYXRlIGEgcmUtZXhlYyBjb25uZWN0aW9uIHRvIGRvIHRoZSB3b3Jr
LgorICAgIHhwY19jb25uZWN0aW9uX3QgcmVFeGVjQ29ubmVjdGlvbiA9IHhwY19jb25uZWN0aW9u
X2NyZWF0ZSgiY29tLmFwcGxlLldlYktpdDJTZXJ2aWNlIiwgMCk7CisKKyAgICB1dWlkX3QgdXVp
ZEJ5dGVzOworICAgIFtpbnN0YW5jZVVVSUQgZ2V0VVVJREJ5dGVzOnV1aWRCeXRlc107CisgICAg
eHBjX2Nvbm5lY3Rpb25fc2V0X2luc3RhbmNlKHJlRXhlY0Nvbm5lY3Rpb24sIHV1aWRCeXRlcyk7
CisKKyAgICAvLyBLZWVwIHRoZSBQcm9jZXNzTGF1bmNoZXIgYWxpdmUgd2hpbGUgd2UgZG8gdGhl
IHJlLWV4ZWNpbmcgKGJhbGFuY2VkIGluIGV2ZW50IGhhbmRsZXIpLgorICAgIHRoYXQtPnJlZigp
OworCisgICAgLy8gV2Ugd2FpdCBmb3IgdGhlIGNvbm5lY3Rpb24gdG8gdGVhciBpdHNlbGYgZG93
biAoaW5kaWNhdGVkIHZpYSBhbiBlcnJvciBldmVudCkKKyAgICAvLyB0byBpbmRpY2F0ZSB0aGF0
IHRoZSBzZXJ2aWNlIGluc3RhbmNlIHJlLWV4ZWNlZCBpdHNlbGYsIGFuZCBpcyBub3cgcmVhZHkg
dG8gYmUKKyAgICAvLyBjb25uZWN0ZWQgdG8uCisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50
X2hhbmRsZXIocmVFeGVjQ29ubmVjdGlvbiwgXih4cGNfb2JqZWN0X3QgZXZlbnQpIHsKKyAgICAg
ICAgQVNTRVJUKHhwY19nZXRfdHlwZShldmVudCkgPT0gWFBDX1RZUEVfRVJST1IpOworCisgICAg
ICAgIGNvbm5lY3RUb1hQQ1NlcnZpY2UobGF1bmNoT3B0aW9ucywgZW52aXJvbm1lbnRWYXJpYWJs
ZXMsIHRoYXQsIGRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3NGdW5jdGlvbiwgaW5zdGFuY2VVVUlE
KTsKKworICAgICAgICAvLyBSZWxlYXNlIHRoZSBjb25uZWN0aW9uLgorICAgICAgICB4cGNfcmVs
ZWFzZShyZUV4ZWNDb25uZWN0aW9uKTsKKworICAgICAgICAvLyBPdGhlciBlbmQgb2YgcmVmIGNh
bGxlZCBiZWZvcmUgd2Ugc2V0dXAgdGhlIGV2ZW50IGhhbmRsZXIuCisgICAgICAgIHRoYXQtPmRl
cmVmKCk7CisgICAgfSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fcmVzdW1lKHJlRXhlY0Nvbm5lY3Rp
b24pOworCisgICAgeHBjX29iamVjdF90IHJlRXhlY01lc3NhZ2UgPSB4cGNfZGljdGlvbmFyeV9j
cmVhdGUoMCwgMCwgMCk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3N0cmluZyhyZUV4ZWNNZXNz
YWdlLCAibWVzc2FnZS1uYW1lIiwgInJlLWV4ZWMiKTsKKworICAgIC8vIDEpIEFyY2hpdGVjdHVy
ZS4KKyAgICBjcHVfdHlwZV90IGFyY2hpdGVjdHVyZSA9IGxhdW5jaE9wdGlvbnMuYXJjaGl0ZWN0
dXJlID09IFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9uczo6TWF0Y2hDdXJyZW50QXJjaGl0
ZWN0dXJlID8gX05TR2V0TWFjaEV4ZWN1dGVIZWFkZXIoKS0+Y3B1dHlwZSA6IGxhdW5jaE9wdGlv
bnMuYXJjaGl0ZWN0dXJlOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF91aW50NjQocmVFeGVjTWVz
c2FnZSwgImFyY2hpdGVjdHVyZSIsICh1aW50NjRfdClhcmNoaXRlY3R1cmUpOworICAgIAorICAg
IC8vIDIpIEVudmlyb25tZW50LgorICAgIHhwY19vYmplY3RfdCBlbnZpcm9ubWVudCA9IHhwY19h
cnJheV9jcmVhdGUoMCwgMCk7CisgICAgY2hhcioqIGVudmlyb25tZW50UG9pbnRlciA9IGVudmly
b25tZW50VmFyaWFibGVzLmVudmlyb25tZW50UG9pbnRlcigpOworICAgIFZlY3RvcjxDU3RyaW5n
PiB0ZW1wczsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgZW52aXJvbm1lbnRQb2ludGVyW2ldOyAr
K2kpIHsKKyAgICAgICAgQ1N0cmluZyB0ZW1wKGVudmlyb25tZW50UG9pbnRlcltpXSwgc3RybGVu
KGVudmlyb25tZW50UG9pbnRlcltpXSkpOworICAgICAgICB0ZW1wcy5hcHBlbmQodGVtcCk7CisK
KyAgICAgICAgeHBjX2FycmF5X3NldF9zdHJpbmcoZW52aXJvbm1lbnQsIFhQQ19BUlJBWV9BUFBF
TkQsIHRlbXAuZGF0YSgpKTsKKyAgICB9CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKHJl
RXhlY01lc3NhZ2UsICJlbnZpcm9ubWVudCIsIGVudmlyb25tZW50KTsKKyAgICB4cGNfcmVsZWFz
ZShlbnZpcm9ubWVudCk7CisKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwNzAKKyAgICAvLyAzKSBFeGVjdXRhYmxlIGhlYXAuCisgICAgeHBjX2RpY3Rpb25hcnlfc2V0
X2Jvb2wocmVFeGVjTWVzc2FnZSwgImV4ZWN1dGFibGUtaGVhcCIsIGxhdW5jaE9wdGlvbnMuZXhl
Y3V0YWJsZUhlYXApOworI2VuZGlmCisKKyAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2Uo
cmVFeGVjQ29ubmVjdGlvbiwgcmVFeGVjTWVzc2FnZSk7CisgICAgeHBjX3JlbGVhc2UocmVFeGVj
TWVzc2FnZSk7Cit9CiAjZW5kaWYKIAogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTA3MApAQCAtMTk0LDkgKzI1OSw0MSBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1
bmNoUHJvY2VzcygpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgogCisgICAgTlNCdW5kbGUgKndl
YktpdDJCdW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6QCJjb20uYXBwbGUu
V2ViS2l0MiJdOworICAgIE5TU3RyaW5nICpmcmFtZXdvcmtzUGF0aCA9IFtbd2ViS2l0MkJ1bmRs
ZSBidW5kbGVQYXRoXSBzdHJpbmdCeURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnRdOworCisjaWYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCisgICAgRHluYW1pY0xpbmtl
ckVudmlyb25tZW50RXh0cmFjdG9yIGVudmlyb25tZW50RXh0cmFjdG9yKFtbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gZXhlY3V0YWJsZVBhdGhdLCBfTlNHZXRNYWNoRXhlY3V0ZUhlYWRlcigpLT5jcHV0
eXBlKTsKKyAgICBlbnZpcm9ubWVudEV4dHJhY3Rvci5nZXRFeHRyYWN0ZWRFbnZpcm9ubWVudFZh
cmlhYmxlcyhlbnZpcm9ubWVudFZhcmlhYmxlcyk7CisjZW5kaWYKKworICAgIC8vIFRvIG1ha2Ug
ZW5naW5lZXJpbmcgYnVpbGRzIHdvcmssIGlmIHRoZSBwYXRoIGlzIG91dHNpZGUgb2YgL1N5c3Rl
bSBzZXQgdXAKKyAgICAvLyBEWUxEX0ZSQU1FV09SS19QQVRIIHRvIHBpY2sgdXAgb3RoZXIgZnJh
bWV3b3JrcywgYnV0IGRvbid0IGRvIGl0IGZvciB0aGUKKyAgICAvLyBwcm9kdWN0aW9uIGNvbmZp
Z3VyYXRpb24gYmVjYXVzZSBpdCBpbnZvbHZlcyBleHRyYSBmaWxlIHN5c3RlbSBhY2Nlc3MuCisg
ICAgaWYgKCFbZnJhbWV3b3Jrc1BhdGggaGFzUHJlZml4OkAiL1N5c3RlbS8iXSkKKyAgICAgICAg
ZW52aXJvbm1lbnRWYXJpYWJsZXMuYXBwZW5kVmFsdWUoIkRZTERfRlJBTUVXT1JLX1BBVEgiLCBb
ZnJhbWV3b3Jrc1BhdGggZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uXSwgJzonKTsKKworICAgIE5T
U3RyaW5nICpwcm9jZXNzUGF0aCA9IFt3ZWJLaXQyQnVuZGxlIHBhdGhGb3JBdXhpbGlhcnlFeGVj
dXRhYmxlOihtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc0xhdW5jaGVyOjpQ
bHVnaW5Qcm9jZXNzID8gQCJQbHVnaW5Qcm9jZXNzLmFwcCIgOiBAIldlYlByb2Nlc3MuYXBwIild
OworICAgIE5TU3RyaW5nICpmcmFtZXdvcmtFeGVjdXRhYmxlUGF0aCA9IFt3ZWJLaXQyQnVuZGxl
IGV4ZWN1dGFibGVQYXRoXTsKKyAgICBOU1N0cmluZyAqcHJvY2Vzc0FwcEV4ZWN1dGFibGVQYXRo
ID0gW1tOU0J1bmRsZSBidW5kbGVXaXRoUGF0aDpwcm9jZXNzUGF0aF0gZXhlY3V0YWJsZVBhdGhd
OworCisgICAgTlNTdHJpbmcgKnByb2Nlc3NTaGltUGF0aE5TU3RyaW5nID0gbmlsOworICAgIGlm
IChtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc0xhdW5jaGVyOjpQbHVnaW5Q
cm9jZXNzKQorICAgICAgICBwcm9jZXNzU2hpbVBhdGhOU1N0cmluZyA9IFtbcHJvY2Vzc0FwcEV4
ZWN1dGFibGVQYXRoIHN0cmluZ0J5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudF0gc3RyaW5nQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiUGx1Z2luUHJvY2Vzc1NoaW0uZHlsaWIiXTsKKyAgICBl
bHNlIGlmIChtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc0xhdW5jaGVyOjpX
ZWJQcm9jZXNzKQorICAgICAgICBwcm9jZXNzU2hpbVBhdGhOU1N0cmluZyA9IFtbcHJvY2Vzc0Fw
cEV4ZWN1dGFibGVQYXRoIHN0cmluZ0J5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudF0gc3RyaW5n
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViUHJvY2Vzc1NoaW0uZHlsaWIiXTsKKworICAg
IC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBzaGltIGxpYnJhcnkgZmlsZSBleGlzdHMgYW5kIGluc2Vy
dCBpdC4KKyAgICBpZiAocHJvY2Vzc1NoaW1QYXRoTlNTdHJpbmcpIHsKKyAgICAgICAgY29uc3Qg
Y2hhciogcHJvY2Vzc1NoaW1QYXRoID0gW3Byb2Nlc3NTaGltUGF0aE5TU3RyaW5nIGZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbl07CisgICAgICAgIHN0cnVjdCBzdGF0IHN0YXRCdWY7CisgICAgICAg
IGlmIChzdGF0KHByb2Nlc3NTaGltUGF0aCwgJnN0YXRCdWYpID09IDAgJiYgKHN0YXRCdWYuc3Rf
bW9kZSAmIFNfSUZNVCkgPT0gU19JRlJFRykKKyAgICAgICAgICAgIGVudmlyb25tZW50VmFyaWFi
bGVzLmFwcGVuZFZhbHVlKCJEWUxEX0lOU0VSVF9MSUJSQVJJRVMiLCBwcm9jZXNzU2hpbVBhdGgs
ICc6Jyk7CisgICAgfQorCiAjaWYgSEFWRShYUEMpCiAgICAgaWYgKG1fbGF1bmNoT3B0aW9ucy51
c2VYUEMpIHsKLSAgICAgICAgbGF1bmNoWFBDU2VydmljZShtX2xhdW5jaE9wdGlvbnMsIGVudmly
b25tZW50VmFyaWFibGVzLCB0aGlzLCAmUHJvY2Vzc0xhdW5jaGVyOjpkaWRGaW5pc2hMYXVuY2hp
bmdQcm9jZXNzKTsKKyAgICAgICAgY3JlYXRlWFBDU2VydmljZUluc3RhbmNlKG1fbGF1bmNoT3B0
aW9ucywgZW52aXJvbm1lbnRWYXJpYWJsZXMsIHRoaXMsICZQcm9jZXNzTGF1bmNoZXI6OmRpZEZp
bmlzaExhdW5jaGluZ1Byb2Nlc3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCkBA
IC0yMDgsMjUgKzMwNSwxMyBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcygp
CiAgICAgICAgIC8vIEluc2VydCBhIHNlbmQgcmlnaHQgc28gd2UgY2FuIHNlbmQgdG8gaXQuCiAg
ICAgICAgIG1hY2hfcG9ydF9pbnNlcnRfcmlnaHQobWFjaF90YXNrX3NlbGYoKSwgbGlzdGVuaW5n
UG9ydCwgbGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOwogCi0gICAgICAg
IE5TQnVuZGxlICp3ZWJLaXQyQnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVy
OkAiY29tLmFwcGxlLldlYktpdDIiXTsKLSAgICAgICAgTlNTdHJpbmcgKmZyYW1ld29ya3NQYXRo
ID0gW1t3ZWJLaXQyQnVuZGxlIGJ1bmRsZVBhdGhdIHN0cmluZ0J5RGVsZXRpbmdMYXN0UGF0aENv
bXBvbmVudF07Ci0gICAgICAgIGNvbnN0IGNoYXIqIGZyYW1ld29ya0V4ZWN1dGFibGVQYXRoID0g
W1t3ZWJLaXQyQnVuZGxlIGV4ZWN1dGFibGVQYXRoXSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25d
OwotCi0gICAgICAgIE5TU3RyaW5nICpwcm9jZXNzUGF0aDsKLSAgICAgICAgaWYgKG1fbGF1bmNo
T3B0aW9ucy5wcm9jZXNzVHlwZSA9PSBQcm9jZXNzTGF1bmNoZXI6OlBsdWdpblByb2Nlc3MpCi0g
ICAgICAgICAgICBwcm9jZXNzUGF0aCA9IFt3ZWJLaXQyQnVuZGxlIHBhdGhGb3JBdXhpbGlhcnlF
eGVjdXRhYmxlOkAiUGx1Z2luUHJvY2Vzcy5hcHAiXTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgcHJvY2Vzc1BhdGggPSBbd2ViS2l0MkJ1bmRsZSBwYXRoRm9yQXV4aWxpYXJ5RXhlY3V0YWJs
ZTpAIldlYlByb2Nlc3MuYXBwIl07Ci0KLSAgICAgICAgTlNTdHJpbmcgKnByb2Nlc3NBcHBFeGVj
dXRhYmxlUGF0aCA9IFtbTlNCdW5kbGUgYnVuZGxlV2l0aFBhdGg6cHJvY2Vzc1BhdGhdIGV4ZWN1
dGFibGVQYXRoXTsKLQogICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmTG9jYWxpemF0
aW9uKEFkb3B0Q0YsIFdLQ29weUNGTG9jYWxpemF0aW9uUHJlZmVycmVkTmFtZShOVUxMKSk7CiAg
ICAgICAgIENTdHJpbmcgbG9jYWxpemF0aW9uID0gU3RyaW5nKGNmTG9jYWxpemF0aW9uLmdldCgp
KS51dGY4KCk7CiAgICAgICAgIAogICAgICAgICAvLyBNYWtlIGEgdW5pcXVlLCBwZXIgcGlkLCBw
ZXIgcHJvY2VzcyBsYXVuY2hlciB3ZWIgcHJvY2VzcyBzZXJ2aWNlIG5hbWUuCiAgICAgICAgIENT
dHJpbmcgc2VydmljZU5hbWUgPSBTdHJpbmc6OmZvcm1hdCgiY29tLmFwcGxlLldlYktpdC5XZWJQ
cm9jZXNzLSVkLSVwIiwgZ2V0cGlkKCksIHRoaXMpLnV0ZjgoKTsKLQotICAgICAgICBjb25zdCBj
aGFyKiBhcmdzW10gPSB7IFtwcm9jZXNzQXBwRXhlY3V0YWJsZVBhdGggZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uXSwgZnJhbWV3b3JrRXhlY3V0YWJsZVBhdGgsICItdHlwZSIsIHByb2Nlc3NUeXBl
QXNTdHJpbmcobV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlKSwgIi1zZXJ2aWNlbmFtZSIsIHNl
cnZpY2VOYW1lLmRhdGEoKSwgIi1sb2NhbGl6YXRpb24iLCBsb2NhbGl6YXRpb24uZGF0YSgpLCAw
IH07CisgICAgICAgIAorICAgICAgICBjb25zdCBjaGFyKiBhcmdzW10gPSB7IFtwcm9jZXNzQXBw
RXhlY3V0YWJsZVBhdGggZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uXSwgW2ZyYW1ld29ya0V4ZWN1
dGFibGVQYXRoIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl0sICItdHlwZSIsIHByb2Nlc3NUeXBl
QXNTdHJpbmcobV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlKSwgIi1zZXJ2aWNlbmFtZSIsIHNl
cnZpY2VOYW1lLmRhdGEoKSwgIi1sb2NhbGl6YXRpb24iLCBsb2NhbGl6YXRpb24uZGF0YSgpLCAw
IH07CiAKICAgICAgICAgLy8gUmVnaXN0ZXIgb3Vyc2VsdmVzLgogICAgICAgICBrZXJuX3JldHVy
bl90IGtyID0gYm9vdHN0cmFwX3JlZ2lzdGVyMihib290c3RyYXBfcG9ydCwgY29uc3RfY2FzdDxj
aGFyKj4oc2VydmljZU5hbWUuZGF0YSgpKSwgbGlzdGVuaW5nUG9ydCwgMCk7CkBAIC0yNjQsMzEg
KzM0OSw2IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKIAogICAgICAg
ICBwb3NpeF9zcGF3bmF0dHJfc2V0ZmxhZ3MoJmF0dHIsIGZsYWdzKTsKIAotI2lmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAotICAgICAgICBEeW5hbWljTGlua2VyRW52
aXJvbm1lbnRFeHRyYWN0b3IgZW52aXJvbm1lbnRFeHRyYWN0b3IoW1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBleGVjdXRhYmxlUGF0aF0sIF9OU0dldE1hY2hFeGVjdXRlSGVhZGVyKCktPmNwdXR5cGUp
OwotICAgICAgICBlbnZpcm9ubWVudEV4dHJhY3Rvci5nZXRFeHRyYWN0ZWRFbnZpcm9ubWVudFZh
cmlhYmxlcyhlbnZpcm9ubWVudFZhcmlhYmxlcyk7Ci0jZW5kaWYKLQotICAgICAgICAvLyBUbyBt
YWtlIGVuZ2luZWVyaW5nIGJ1aWxkcyB3b3JrLCBpZiB0aGUgcGF0aCBpcyBvdXRzaWRlIG9mIC9T
eXN0ZW0gc2V0IHVwCi0gICAgICAgIC8vIERZTERfRlJBTUVXT1JLX1BBVEggdG8gcGljayB1cCBv
dGhlciBmcmFtZXdvcmtzLCBidXQgZG9uJ3QgZG8gaXQgZm9yIHRoZQotICAgICAgICAvLyBwcm9k
dWN0aW9uIGNvbmZpZ3VyYXRpb24gYmVjYXVzZSBpdCBpbnZvbHZlcyBleHRyYSBmaWxlIHN5c3Rl
bSBhY2Nlc3MuCi0gICAgICAgIGlmICghW2ZyYW1ld29ya3NQYXRoIGhhc1ByZWZpeDpAIi9TeXN0
ZW0vIl0pCi0gICAgICAgICAgICBlbnZpcm9ubWVudFZhcmlhYmxlcy5hcHBlbmRWYWx1ZSgiRFlM
RF9GUkFNRVdPUktfUEFUSCIsIFtmcmFtZXdvcmtzUGF0aCBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b25dLCAnOicpOwotCi0gICAgICAgIE5TU3RyaW5nICpwcm9jZXNzU2hpbVBhdGhOU1N0cmluZyA9
IG5pbDsKLSAgICAgICAgaWYgKG1fbGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSA9PSBQcm9jZXNz
TGF1bmNoZXI6OlBsdWdpblByb2Nlc3MpCi0gICAgICAgICAgICBwcm9jZXNzU2hpbVBhdGhOU1N0
cmluZyA9IFtbcHJvY2Vzc0FwcEV4ZWN1dGFibGVQYXRoIHN0cmluZ0J5RGVsZXRpbmdMYXN0UGF0
aENvbXBvbmVudF0gc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiUGx1Z2luUHJvY2Vz
c1NoaW0uZHlsaWIiXTsKLSAgICAgICAgZWxzZSBpZiAobV9sYXVuY2hPcHRpb25zLnByb2Nlc3NU
eXBlID09IFByb2Nlc3NMYXVuY2hlcjo6V2ViUHJvY2VzcykKLSAgICAgICAgICAgIHByb2Nlc3NT
aGltUGF0aE5TU3RyaW5nID0gW1twcm9jZXNzQXBwRXhlY3V0YWJsZVBhdGggc3RyaW5nQnlEZWxl
dGluZ0xhc3RQYXRoQ29tcG9uZW50XSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJX
ZWJQcm9jZXNzU2hpbS5keWxpYiJdOwotCi0gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBz
aGltIGxpYnJhcnkgZmlsZSBleGlzdHMgYW5kIGluc2VydCBpdC4KLSAgICAgICAgaWYgKHByb2Nl
c3NTaGltUGF0aE5TU3RyaW5nKSB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiBwcm9jZXNzU2hp
bVBhdGggPSBbcHJvY2Vzc1NoaW1QYXRoTlNTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
XTsKLSAgICAgICAgICAgIHN0cnVjdCBzdGF0IHN0YXRCdWY7Ci0gICAgICAgICAgICBpZiAoc3Rh
dChwcm9jZXNzU2hpbVBhdGgsICZzdGF0QnVmKSA9PSAwICYmIChzdGF0QnVmLnN0X21vZGUgJiBT
X0lGTVQpID09IFNfSUZSRUcpCi0gICAgICAgICAgICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZXMu
YXBwZW5kVmFsdWUoIkRZTERfSU5TRVJUX0xJQlJBUklFUyIsIHByb2Nlc3NTaGltUGF0aCwgJzon
KTsKLSAgICAgICAgfQotCiAgICAgICAgIHBpZF90IHByb2Nlc3NJZGVudGlmaWVyID0gMDsKICAg
ICAgICAgaW50IHJlc3VsdCA9IHBvc2l4X3NwYXduKCZwcm9jZXNzSWRlbnRpZmllciwgYXJnc1sw
XSwgMCwgJmF0dHIsIGNvbnN0X2Nhc3Q8Y2hhcioqPihhcmdzKSwgZW52aXJvbm1lbnRWYXJpYWJs
ZXMuZW52aXJvbm1lbnRQb2ludGVyKCkpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
U2VydmljZS9NYWluTWFjU2VydmljZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyU2VydmljZS9NYWluTWFjU2VydmljZS5tbQkocmV2aXNpb24gMTI2Njg3KQorKysgU291
cmNlL1dlYktpdDIvV2ViS2l0MlNlcnZpY2UvTWFpbk1hY1NlcnZpY2UubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDEzICsyNywxNyBAQAogCiAjaWYgTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTA3MAogCisjaW5jbHVkZSA8Y3J0X2V4dGVybnMuaD4KICNpbmNsdWRlIDxkbGZjbi5o
PgorI2luY2x1ZGUgPHNwYXduLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRs
aWIuaD4KICNpbmNsdWRlIDx4cGMveHBjLmg+CiAKIGV4dGVybiAiQyIgbWFjaF9wb3J0X3QgeHBj
X2RpY3Rpb25hcnlfY29weV9tYWNoX3NlbmQoeHBjX29iamVjdF90LCBjb25zdCBjaGFyKik7CiAK
K3N0YXRpYyBjb25zdCBjaGFyKiBnX2Z1bGxQYXRoID0gMDsKKwogc3RhdGljIHZvaWQgV2ViS2l0
MlNlcnZpY2VFdmVudEhhbmRsZXIoeHBjX2Nvbm5lY3Rpb25fdCBwZWVyKQogewogICAgIHhwY19j
b25uZWN0aW9uX3NldF90YXJnZXRfcXVldWUocGVlciwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSk7CkBAIC00Nyw2ICs1MSw2OCBAQCBzdGF0aWMgdm9pZCBXZWJLaXQyU2VydmljZUV2ZW50SGFu
ZGxlcih4CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBhc3NlcnQodHlwZSA9PSBYUENf
VFlQRV9ESUNUSU9OQVJZKTsKIAorICAgICAgICAgICAgaWYgKCFzdHJjbXAoeHBjX2RpY3Rpb25h
cnlfZ2V0X3N0cmluZyhldmVudCwgIm1lc3NhZ2UtbmFtZSIpLCAicmUtZXhlYyIpKSB7CisgICAg
ICAgICAgICAgICAgLy8gU2V0dXAgdGhlIHBvc2l4X3NwYXduIGF0dHJpYnV0ZXMuCisgICAgICAg
ICAgICAgICAgcG9zaXhfc3Bhd25hdHRyX3QgYXR0cjsKKyAgICAgICAgICAgICAgICBwb3NpeF9z
cGF3bmF0dHJfaW5pdCgmYXR0cik7CisKKyAgICAgICAgICAgICAgICBzaG9ydCBmbGFncyA9IDA7
CisKKyAgICAgICAgICAgICAgICAvLyBXZSBqdXN0IHdhbnQgdG8gc2V0IHRoZSBwcm9jZXNzIHN0
YXRlLCBub3QgYWN0dWFsbHkgbGF1bmNoIGEgbmV3IHByb2Nlc3MsCisgICAgICAgICAgICAgICAg
Ly8gc28gd2UgYXJlIGdvaW5nIHRvIHVzZSB0aGUgZGFyd2luIGV4dGVuc2lvbiB0byBwb3NpeF9z
cGF3biBQT1NJWF9TUEFXTl9TRVRFWEVDCisgICAgICAgICAgICAgICAgLy8gdG8gYWN0IGxpa2Ug
YSBtb3JlIGZ1bGwgZmVhdHVyZWQgZXhlYy4KKyAgICAgICAgICAgICAgICBmbGFncyB8PSBQT1NJ
WF9TUEFXTl9TRVRFWEVDOworCisgICAgICAgICAgICAgICAgLy8gV2Ugd2FudCBvdXIgcHJvY2Vz
cyB0byByZWNlaXZlIGFsbCBzaWduYWxzLgorICAgICAgICAgICAgICAgIHNpZ3NldF90IHNpZ25h
bE1hc2tTZXQ7CisgICAgICAgICAgICAgICAgc2lnZW1wdHlzZXQoJnNpZ25hbE1hc2tTZXQpOwor
ICAgICAgICAgICAgICAgIHBvc2l4X3NwYXduYXR0cl9zZXRzaWdtYXNrKCZhdHRyLCAmc2lnbmFs
TWFza1NldCk7CisgICAgICAgICAgICAgICAgZmxhZ3MgfD0gUE9TSVhfU1BBV05fU0VUU0lHTUFT
SzsKKworICAgICAgICAgICAgICAgIC8vIFNldCB0aGUgYXJjaGl0ZWN0dXJlLgorICAgICAgICAg
ICAgICAgIGNwdV90eXBlX3QgY3B1VHlwZXNbXSA9IHsgKGNwdV90eXBlX3QpeHBjX2RpY3Rpb25h
cnlfZ2V0X3VpbnQ2NChldmVudCwgImFyY2hpdGVjdHVyZSIpIH07CisgICAgICAgICAgICAgICAg
c2l6ZV90IG91dENvdW50ID0gMDsKKyAgICAgICAgICAgICAgICBwb3NpeF9zcGF3bmF0dHJfc2V0
YmlucHJlZl9ucCgmYXR0ciwgMSwgY3B1VHlwZXMsICZvdXRDb3VudCk7CisKKyNpZiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKKyAgICAgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgaW50IGFsbG93RXhlY3V0YWJsZUhlYXBGbGFnID0gMHgyMDAwOworICAgICAgICAgICAg
ICAgIGlmICh4cGNfZGljdGlvbmFyeV9nZXRfYm9vbChldmVudCwgImV4ZWN1dGFibGUtaGVhcCIp
KQorICAgICAgICAgICAgICAgICAgICBmbGFncyB8PSBhbGxvd0V4ZWN1dGFibGVIZWFwRmxhZzsK
KyNlbmRpZgorCisgICAgICAgICAgICAgICAgcG9zaXhfc3Bhd25hdHRyX3NldGZsYWdzKCZhdHRy
LCBmbGFncyk7CisKKyAgICAgICAgICAgICAgICAvLyBTZXR1cCB0aGUgY29tbWFuZCBsaW5lLgor
ICAgICAgICAgICAgICAgIGNoYXIqKiBhcmd2ID0gKl9OU0dldEFyZ3YoKTsKKyAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBwcm9ncmFtTmFtZSA9IGFyZ3ZbMF07CisgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogYXJnc1tdID0geyBwcm9ncmFtTmFtZSwgMCB9OworCisgICAgICAgICAgICAg
ICAgLy8gU2V0dXAgdGhlIGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgIHhwY19vYmplY3Rf
dCBlbnZpcm9ubWVudEFycmF5ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3ZhbHVlKGV2ZW50LCAiZW52
aXJvbm1lbnQiKTsKKyAgICAgICAgICAgICAgICBzaXplX3QgbnVtYmVyT2ZFbnZpcm9ubWVudFZh
cmlhYmxlcyA9IHhwY19hcnJheV9nZXRfY291bnQoZW52aXJvbm1lbnRBcnJheSk7CisKKyAgICAg
ICAgICAgICAgICBjaGFyKiogZW52aXJvbm1lbnQgPSAoY2hhcioqKW1hbGxvYyhudW1iZXJPZkVu
dmlyb25tZW50VmFyaWFibGVzICogc2l6ZW9mKGNoYXIqKSArIDEpOworICAgICAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZFbnZpcm9ubWVudFZhcmlhYmxlczsgKytp
KSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHN0cmluZyA9ICB4cGNfYXJyYXlf
Z2V0X3N0cmluZyhlbnZpcm9ubWVudEFycmF5LCBpKTsKKyAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IHN0cmluZ0xlbmd0aCA9IHN0cmxlbihzdHJpbmcpOworCisgICAgICAgICAgICAgICAgICAg
IGNoYXIqIGVudmlyb25tZW50VmFyaWFibGUgPSAoY2hhciopbWFsbG9jKHN0cmluZ0xlbmd0aCAr
IDEpOworICAgICAgICAgICAgICAgICAgICBtZW1jcHkoZW52aXJvbm1lbnRWYXJpYWJsZSwgc3Ry
aW5nLCBzdHJpbmdMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudFZhcmlh
YmxlW3N0cmluZ0xlbmd0aF0gPSAnXDAnOworCisgICAgICAgICAgICAgICAgICAgIGVudmlyb25t
ZW50W2ldID0gZW52aXJvbm1lbnRWYXJpYWJsZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgZW52aXJvbm1lbnRbbnVtYmVyT2ZFbnZpcm9ubWVudFZhcmlhYmxlc10gPSAwOwor
CisgICAgICAgICAgICAgICAgcGlkX3QgcHJvY2Vzc0lkZW50aWZpZXIgPSAwOworICAgICAgICAg
ICAgICAgIHBvc2l4X3NwYXduKCZwcm9jZXNzSWRlbnRpZmllciwgZ19mdWxsUGF0aCwgMCwgJmF0
dHIsIGNvbnN0X2Nhc3Q8Y2hhcioqPihhcmdzKSwgZW52aXJvbm1lbnQpOworCisgICAgICAgICAg
ICAgICAgcG9zaXhfc3Bhd25hdHRyX2Rlc3Ryb3koJmF0dHIpOworICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgIE5TTG9nKEAiVW5hYmxlIHRvIHJlLWV4ZWMgZm9yIHBhdGg6ICVzXG4i
LCBnX2Z1bGxQYXRoKTsKKyAgICAgICAgICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CisgICAg
ICAgICAgICB9CisKICAgICAgICAgICAgIGlmICghc3RyY21wKHhwY19kaWN0aW9uYXJ5X2dldF9z
dHJpbmcoZXZlbnQsICJtZXNzYWdlLW5hbWUiKSwgImJvb3RzdHJhcCIpKSB7CiAgICAgICAgICAg
ICAgICAgc3RhdGljIHZvaWQqIGZyYW1ld29ya0xpYnJhcnkgPSBkbG9wZW4oeHBjX2RpY3Rpb25h
cnlfZ2V0X3N0cmluZyhldmVudCwgImZyYW1ld29yay1leGVjdXRhYmxlLXBhdGgiKSwgUlRMRF9O
T1cpOwogICAgICAgICAgICAgICAgIGlmICghZnJhbWV3b3JrTGlicmFyeSkgewpAQCAtNzQsMTUg
KzE0MCwxNyBAQCBzdGF0aWMgdm9pZCBXZWJLaXQyU2VydmljZUV2ZW50SGFuZGxlcih4CiAgICAg
eHBjX2Nvbm5lY3Rpb25fcmVzdW1lKHBlZXIpOwogfQogCi1pbnQgbWFpbihpbnQgYXJnYywgY2hh
cioqIGFyZ3YpCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YsIGNoYXIqKiBlbnZwLCBj
b25zdCBjaGFyKiogYXBwbGUpCiB7CisgICAgZ19mdWxsUGF0aCA9IGFwcGxlWzBdOworCiAgICAg
eHBjX21haW4oV2ViS2l0MlNlcnZpY2VFdmVudEhhbmRsZXIpOwogICAgIHJldHVybiAwOwogfQog
CiAjZWxzZQogCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCitpbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YsIGNoYXIqKiBlbnZwLCBjb25zdCBjaGFyKiogYXBwbGUpCiB7CiAg
ICAgcmV0dXJuIDA7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQ
cm9jZXNzTWFpbk1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L21hYy9XZWJQcm9jZXNzTWFpbk1hYy5tbQkocmV2aXNpb24gMTI2Njg3KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01haW5NYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTg2LDYgKzg2LDEwIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBpbnQgV2ViUHJvY2Vzc01h
aW5YUEMoeHBjX2Nvbm5lY3Rpb25fdCB4cGNDb25uZWN0aW9uLCBtYWNoX3BvcnRfdCBzZXJ2ZXJQ
b3J0KQogeworICAgIC8vIFJlbW92ZSB0aGUgV2ViUHJvY2VzcyBzaGltIGZyb20gdGhlIERZTERf
SU5TRVJUX0xJQlJBUklFUyBlbnZpcm9ubWVudCB2YXJpYWJsZSBzbyBhbnkgcHJvY2Vzc2VzIHNw
YXduZWQgYnkKKyAgICAvLyB0aGUgV2ViUHJvY2VzcyBkb24ndCB0cnkgdG8gaW5zZXJ0IHRoZSBz
aGltIGFuZCBjcmFzaC4KKyAgICBFbnZpcm9ubWVudFV0aWxpdGllczo6c3RyaXBWYWx1ZXNFbmRp
bmdXaXRoU3RyaW5nKCJEWUxEX0lOU0VSVF9MSUJSQVJJRVMiLCAiL1dlYlByb2Nlc3NTaGltLmR5
bGliIik7CisKICAgICBOU0F1dG9yZWxlYXNlUG9vbCAqcG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBv
b2wgYWxsb2NdIGluaXRdOwogCiAgICAgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UoKTsKQEAg
LTk0LDcgKzk4LDYgQEAgaW50IFdlYlByb2Nlc3NNYWluWFBDKHhwY19jb25uZWN0aW9uX3QgeAog
ICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogCiAgICAgLy8gSW5pdGlhbGl6
ZSB0aGUgc2hpbS4KLSAgICAvLyBGSVhNRTogTWFrZSB0aGUgc2hpbSB3b3JrLgogICAgIFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemVTaGltKCk7CiAKICAgICAvLyBDcmVhdGUgdGhlIGNv
bm5lY3Rpb24uCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxMjY4MzMpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wOC0yNyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQu
b3JnPgorCisgICAgICAgIFJlcGxhY2Ugb25lIGhvcnJpYmxlIGhhY2sgdG8gbWFrZSBYUEMgc2Vy
dmljZXMgd29yaywgd2l0aCBhIHNsaWdodGx5IGxlc3MsIHNsaWdodGx5IG1vcmUsIGhvcnJpYmxl
IGhhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1
MTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3Rv
cCBzZXR0aW5nIF9fWFBDXyB2YXJpYW50cyBvZiBEWUxEIGVudmlyb25tZW50IHZhcmlhYmxlcywg
bm93IHRoYXQgd2UgYXJlIHVzaW5nIHJlLWV4ZWNpbmcuCisKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdGRpcnMucG06CisgICAgICAgIChzZXRVcEd1YXJkTWFsbG9jSWZOZWVkZWQpOgorICAgICAg
ICAocnVuTWFjV2ViS2l0QXBwKToKKyAgICAgICAgKGV4ZWNNYWNXZWJLaXRBcHBGb3JEZWJ1Z2dp
bmcpOgorCiAyMDEyLTA4LTI0ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgV2ViR0wgc2hvdWxkIG5vdCBmbGlwIHRleHR1cmVzIG9uIHByZXNlbnRhdGlv
biBpZiBjb250ZW50cyBhcmUgdW5jaGFuZ2VkCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdGRp
cnMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtCShyZXZpc2lv
biAxMjY2ODcpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdGRpcnMucG0JKHdvcmtpbmcgY29weSkK
QEAgLTE0OTMsOSArMTQ5Myw2IEBAIHN1YiBzZXRVcEd1YXJkTWFsbG9jSWZOZWVkZWQKIAogICAg
IGlmICgkc2hvdWxkVXNlR3VhcmRNYWxsb2MpIHsKICAgICAgICAgYXBwZW5kVG9FbnZpcm9ubWVu
dFZhcmlhYmxlTGlzdCgiRFlMRF9JTlNFUlRfTElCUkFSSUVTIiwgIi91c3IvbGliL2xpYmdtYWxs
b2MuZHlsaWIiKTsKLSAgICAgICAgaWYgKHNob3VsZFVzZVhQQ1NlcnZpY2VGb3JXZWJQcm9jZXNz
KCkpIHsKLSAgICAgICAgICAgIGFwcGVuZFRvRW52aXJvbm1lbnRWYXJpYWJsZUxpc3QoIl9fWFBD
X0RZTERfSU5TRVJUX0xJQlJBUklFUyIsICIvdXNyL2xpYi9saWJnbWFsbG9jLmR5bGliIik7Ci0g
ICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTI2MDYsOCArMjYwMyw2IEBAIHN1YiBydW5NYWNXZWJL
aXRBcHAoJDskKQogICAgIHNldFVwR3VhcmRNYWxsb2NJZk5lZWRlZCgpOwogCiAgICAgaWYgKHNo
b3VsZFVzZVhQQ1NlcnZpY2VGb3JXZWJQcm9jZXNzKCkpIHsKLSAgICAgICAgJEVOVntfX1hQQ19E
WUxEX0ZSQU1FV09SS19QQVRIfSA9ICRwcm9kdWN0RGlyOwotICAgICAgICBhcHBlbmRUb0Vudmly
b25tZW50VmFyaWFibGVMaXN0KCJfX1hQQ19EWUxEX0lOU0VSVF9MSUJSQVJJRVMiLCBGaWxlOjpT
cGVjLT5jYXRmaWxlKCRwcm9kdWN0RGlyLCAiV2ViUHJvY2Vzc1NoaW0uZHlsaWIiKSk7CiAgICAg
ICAgICRFTlZ7V0VCS0lUX1VTRV9YUENfU0VSVklDRV9GT1JfV0VCX1BST0NFU1N9ID0gIllFUyI7
CiAgICAgfQogCkBAIC0yNjQ5LDggKzI2NDQsNiBAQCBzdWIgZXhlY01hY1dlYktpdEFwcEZvckRl
YnVnZ2luZygkKQogICAgIG15IEBhcmNoaXRlY3R1cmVGbGFncyA9ICgkYXJjaGl0ZWN0dXJlU3dp
dGNoLCBhcmNoaXRlY3R1cmUoKSk7CiAgICAgaWYgKCFzaG91bGRUYXJnZXRXZWJQcm9jZXNzKCkp
IHsKICAgICAgICAgaWYgKHNob3VsZFVzZVhQQ1NlcnZpY2VGb3JXZWJQcm9jZXNzKCkpIHsKLSAg
ICAgICAgICAgICRFTlZ7X19YUENfRFlMRF9GUkFNRVdPUktfUEFUSH0gPSAkcHJvZHVjdERpcjsK
LSAgICAgICAgICAgIGFwcGVuZFRvRW52aXJvbm1lbnRWYXJpYWJsZUxpc3QoIl9fWFBDX0RZTERf
SU5TRVJUX0xJQlJBUklFUyIsIEZpbGU6OlNwZWMtPmNhdGZpbGUoJHByb2R1Y3REaXIsICJXZWJQ
cm9jZXNzU2hpbS5keWxpYiIpKTsKICAgICAgICAgICAgICRFTlZ7V0VCS0lUX1VTRV9YUENfU0VS
VklDRV9GT1JfV0VCX1BST0NFU1N9ID0gIllFUyI7CiAgICAgICAgIH0KICAgICAgICAgcHJpbnQg
IlN0YXJ0aW5nIEB7W2Jhc2VuYW1lKCRhcHBQYXRoKV19IHVuZGVyICRkZWJ1Z2dlciB3aXRoIERZ
TERfRlJBTUVXT1JLX1BBVEggc2V0IHRvIHBvaW50IHRvIGJ1aWx0IFdlYktpdCBpbiAkcHJvZHVj
dERpci5cbiI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165186</attachid>
            <date>2012-09-21 13:57:59 -0700</date>
            <delta_ts>2012-09-21 14:23:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95161-20120921135735.patch</filename>
            <type>text/plain</type>
            <size>92882</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWFhNzljMDJkOTFiNmZi
NDY3YWJmZjA1ZGJkNzU0YzFlYTFhMmU5My4uM2E5ZWZkZDRiYmNlM2RkMjMwNDJlYjkzMTc3MDdi
NDU4NmU0OTFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEyLTA5LTIxICBTYW0g
V2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgV2ViUHJvY2VzcyBYUEMgc2Vydmlj
ZXMgbmVlZCBoYXZlIHRoZWlyIGVudmlyb25tZW50IHNldCB3aXRob3V0IGRpc3J1cHRpbmcgYWxs
IG90aGVyIFhQQyBzZXJ2aWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTUxNjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZXBsYWNlIHRoZSBXZWJLaXQyU2VydmljZSB3aXRoIHR3byBuZXcgWFBDIHNl
cnZpY2VzLCB0aGUgV2ViUHJvY2Vzc1NlcnZpY2UsIHdoaWNoIGlzIG9ubHkgdXNlZAorICAgICAg
ICB3aGVuIGluc3RhbGxlZCBvbiB0aGUgc3lzdGVtLCBhbmQgdGhlIFdlYlByb2Nlc3NTZXJ2aWNl
Rm9yV2ViS2l0RGV2ZWxvcG1lbnQgd2hpY2ggaXMgdXNlZCBhdCBhbGwKKyAgICAgICAgb3RoZXIg
dGltZXMuIFdlIG5lZWQgYm90aCBzZXJ2aWNlcyBiZWNhdXNlIFhQQyBjYW4ndCBpbiBnZW5lcmFs
IGJlIGNvbmZpZ3VyZWQgdG8gaGF2ZSBhIGN1c3RvbQorICAgICAgICBlbnZpcm9ubWVudCBhdCBy
dW50aW1lLCBhbmQgdGh1cyBXZWJQcm9jZXNzU2VydmljZUZvcldlYktpdERldmVsb3BtZW50IGhh
cyB0aGUgYWJpbGl0eSB0byByZS1leGVjCisgICAgICAgIGl0c2VsZiBpbnRvIGEgZGVzaXJlZCBz
dGF0ZS4gVGhhdCBjYXBhYmlsaXR5IGlzIHJhdGhlciB1bmRlc2lyYWJsZSBmb3IgaW5zdGFsbGVk
IHVzYWdlLCB3aGVyZSB3ZQorICAgICAgICBkb24ndCB3YW50IHRvIGFsbG93IGFyYml0cmFyeSBj
aGFuZ2VzIHRvIHRoZSBlbnZpcm9ubWVudCBvZiB0aGUgc2VydmljZSwgd2hpY2ggd291bGQgYWxs
b3cgYnJlYWtpbmcKKyAgICAgICAgdGhlIEFwcFNhbmRib3guCisKKyAgICAgICAgKiBDb25maWd1
cmF0aW9ucy9XZWJQcm9jZXNzU2VydmljZS54Y2NvbmZpZzogQ29waWVkIGZyb20gU291cmNlL1dl
YktpdDIvQ29uZmlndXJhdGlvbnMvV2ViS2l0MlNlcnZpY2UueGNjb25maWcuCisgICAgICAgICog
Q29uZmlndXJhdGlvbnMvV2ViUHJvY2Vzc1NlcnZpY2VGb3JXZWJLaXREZXZlbG9wbWVudC54Y2Nv
bmZpZzogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL1dlYktpdDJT
ZXJ2aWNlLnhjY29uZmlnLgorICAgICAgICBBZGQgbmV3IGNvbmZpZ3VyYXRpb24gZmlsZXMuCisK
KyAgICAgICAgKiBQbGF0Zm9ybS9tYWMvV29ya1F1ZXVlTWFjLmNwcDoKKyAgICAgICAgKFdvcmtR
dWV1ZTo6cmVnaXN0ZXJNYWNoUG9ydEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXb3JrUXVldWU6
OnVucmVnaXN0ZXJNYWNoUG9ydEV2ZW50SGFuZGxlcik6CisgICAgICAgIEFkZCBoZWxwZnVsIGFz
c2VydGlvbnMuIFdpdGhvdXQgdGhlbSwgd2UgY29uZnVzaW5nbHkgY3Jhc2ggYSBiaXQgbGF0ZXIg
aW4gSGFzaFRhYmxlIGNvZGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1By
b2Nlc3NMYXVuY2hlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6YWRkRFlMREVudmlyb25tZW50
QWRkaXRpb25zKToKKyAgICAgICAgRmFjdG9yIG91dCBlbnZpcm9ubWVudCBhZGRpdGlvbnMgdG8g
dGhpcyBoZWxwZXIgZnVuY3Rpb24uCisKKyAgICAgICAgKFdlYktpdDo6Y29ubmVjdFRvV2ViUHJv
Y2Vzc1NlcnZpY2VGb3JXZWJLaXREZXZlbG9wbWVudCk6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0
ZVdlYlByb2Nlc3NTZXJ2aWNlRm9yV2ViS2l0RGV2ZWxvcG1lbnQpOgorICAgICAgICBBZGQgZnVu
Y3Rpb25hbGl0eSB0byBzZXR1cCB0aGUgd2Via2l0IGRldmVsb3BtZW50IHNlcnZpY2UgdmlhIHJl
LWV4ZWMuCisKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlV2ViUHJvY2Vzc1NlcnZpY2UpOgorICAg
ICAgICBBZGQgZnVuY3Rpb25hbGl0eSB0byBjb25uZWN0IHRvIHRoZSBpbnN0YWxsZWQgV2ViUHJv
Y2VzcyBzZXJ2aWNlLgorICAgICAgICAKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlUHJvY2Vzcyk6
CisgICAgICAgIEZhY3RvciBvdXQgcG9zaXhfc3Bhd24gYmFzZWQgbGF1bmNoaW5nIGludG8gdGhp
cyBoZWxwZXIgZnVuY3Rpb24uCisKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjps
YXVuY2hQcm9jZXNzKToKKyAgICAgICAgQ2FsbCB0aGUgY29ycmVjdCBwcm9jZXNzIGNyZWF0aW9u
IGZ1bmN0aW9uIGJhc2VkIG9uIGxhdW5jaCBkYXRhIGFuZCBpbnN0YWxsIHN0YXRlLgorCisgICAg
ICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGQgbmV3
IGZpbGVzIHRvIHRoZSBwcm9qZWN0LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMvV2ViUHJv
Y2Vzc1NlcnZpY2VFbnRyeVBvaW50cy5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1hQQ1NlcnZpY2VNYWluLmguCisgICAgICAgICogV2ViUHJv
Y2Vzcy9tYWMvV2ViUHJvY2Vzc1NlcnZpY2VFbnRyeVBvaW50cy5tbTogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NYUENTZXJ2aWNlTWFpbi5tbS4K
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1NlcnZpY2VFdmVudEhhbmRsZXIpOgorICAgICAg
ICAoV2ViUHJvY2Vzc1NlcnZpY2VNYWluKToKKyAgICAgICAgKEluaXRpYWxpemVXZWJQcm9jZXNz
Rm9yV2ViUHJvY2Vzc1NlcnZpY2VGb3JXZWJLaXREZXZlbG9wbWVudCk6CisgICAgICAgIFJlbmFt
ZSB0byBXZWJQcm9jZXNzU2VydmljZUVudHJ5UG9pbnRzIHNpbmNlIHRoaXMgaXMgbm93IHVzZWQg
Zm9yIGJvdGggdGhlIFdlYlByb2Nlc3NTZXJ2aWNlIGFuZCB0aGUgCisgICAgICAgIFdlYlByb2Nl
c3NTZXJ2aWNlRm9yV2ViS2l0RGV2ZWxvcG1lbnQuCisgICAgCisgICAgICAgICogV2ViUHJvY2Vz
c1NlcnZpY2UvSW5mby5wbGlzdDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvV2ViS2l0MlNl
cnZpY2UvSW5mby5wbGlzdC4KKyAgICAgICAgKiBXZWJQcm9jZXNzU2VydmljZS9XZWJQcm9jZXNz
U2VydmljZU1haW4ubW06IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyU2Vydmlj
ZS9NYWluTWFjU2VydmljZS5tbS4KKyAgICAgICAgQWRkIG1haW4gZm9yIHRoZSBXZWJQcm9jZXNz
U2VydmljZSB3aGljaCBqdXN0IGNhbGxzIGludG8gdGhlIFdlYlByb2Nlc3NTZXJ2aWNlRW50cnlQ
b2ludHMgaW4gV2ViS2l0Mi5mcmFtZXdvcmsuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzU2Vydmlj
ZUZvcldlYktpdERldmVsb3BtZW50L0luZm8ucGxpc3Q6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyU2VydmljZS9JbmZvLnBsaXN0LgorICAgICAgICAqIFdlYlByb2Nlc3NTZXJ2
aWNlRm9yV2ViS2l0RGV2ZWxvcG1lbnQvV2ViUHJvY2Vzc1NlcnZpY2VGb3JXZWJLaXREZXZlbG9w
bWVudE1haW4ubW06IEFkZGVkLgorICAgICAgICBBZGQgbWFpbiBmb3IgdGhlIFdlYlByb2Nlc3NT
ZXJ2aWNlRm9yV2ViS2l0RGV2ZWxvcG1lbnQsIHdoaWNoIGNhbid0IGp1c3QgY2FsbCBkaXJlY3Rs
eSBpbnRvIFdlYlByb2Nlc3NTZXJ2aWNlRW50cnlQb2ludHMKKyAgICAgICAgYXMgdGhlIGZyYW1l
d29yayBwYXRoIG1pZ2h0IG5vdCBiZSBzZXQgdXAgY29ycmVjdGx5LiBUaGlzIGlzIGFsc28gd2hl
cmUgd2UgcmUtZXhlYyBvdXJzZWx2ZXMgd2hlbiByZXF1aXJlZC4KKwogMjAxMi0wOS0yMCAgUGF0
cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgU3RyaW5n
OjpudW1iZXJUb1N0cmluZ0ZpeGVkV2lkdGgoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q29uZmlndXJhdGlvbnMvV2ViS2l0MlNlcnZpY2UueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0Mi9D
b25maWd1cmF0aW9ucy9XZWJLaXQyU2VydmljZS54Y2NvbmZpZwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZjc4ODkyOTk2YWE1MWU5NjFiYjYzNzgyZmU2MjgzNDBjMDllYTM3ZC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9Db25maWd1cmF0aW9ucy9XZWJLaXQyU2VydmljZS54Y2NvbmZpZworKysgL2Rldi9udWxsCkBA
IC0xLDQwICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLS8vIGFyZSBtZXQ6
Ci0vLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLS8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0vLyBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotLy8gSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0vLyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotLy8gQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0vLyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0vLyBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLS8vIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLS8vIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLQotI2lu
Y2x1ZGUgIkJhc2VUYXJnZXQueGNjb25maWciCi0KLUdDQ19FTkFCTEVfT0JKQ19HQyA9IE5POwot
UFJPRFVDVF9OQU1FID0gY29tLmFwcGxlLldlYktpdDIuJChUQVJHRVRfTkFNRTpyZmMxMDM0aWRl
bnRpZmllcik7Ci1JTkZPUExJU1RfRklMRSA9IFdlYktpdDJTZXJ2aWNlL0luZm8ucGxpc3Q7Ci1J
TlNUQUxMX1BBVEggPSAkKFdFQktJVDJfRlJBTUVXT1JLU19ESVIpL1dlYktpdDIuZnJhbWV3b3Jr
OwotCi1BUFBfSUNPTiA9ICQoQVBQX0lDT05fJChDT05GSUdVUkFUSU9OKSk7Ci1BUFBfSUNPTl9E
ZWJ1ZyA9IFdlYktpdC5pY25zOwotQVBQX0lDT05fUmVsZWFzZSA9IFdlYktpdC5pY25zOwotQVBQ
X0lDT05fUHJvZHVjdGlvbiA9IDsKLQotRVhDTFVERURfU09VUkNFX0ZJTEVfTkFNRVMgPSAkKEVY
Q0xVREVEX1NPVVJDRV9GSUxFX05BTUVTXyQoQ09ORklHVVJBVElPTikpOwotRVhDTFVERURfU09V
UkNFX0ZJTEVfTkFNRVNfUHJvZHVjdGlvbiA9IFdlYktpdC5pY25zOwotCi1XUkFQUEVSX0VYVEVO
U0lPTiA9IHhwYzsKLU1BQ0hfT19UWVBFID0gbWhfZXhlY3V0ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL1dlYlByb2Nlc3NTZXJ2aWNlLnhjY29uZmlnIGIvU291
cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvV2ViUHJvY2Vzc1NlcnZpY2UueGNjb25maWcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZWE1ZjVhMDBiZjMwYzY4YWE1OTNkMTM0YzQxY2VjOTFmZGZhOWE1MgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL1dlYlByb2Nlc3NTZXJ2
aWNlLnhjY29uZmlnCkBAIC0wLDAgKzEsNDAgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKy8vIGFyZSBtZXQ6CisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
Ky8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisvLyBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisvLyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorLy8gQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisvLyBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisvLyBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKy8vIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKy8vIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKworI2luY2x1ZGUgIkJhc2VUYXJnZXQueGNjb25maWciCisKK0dDQ19FTkFCTEVf
T0JKQ19HQyA9IE5POworUFJPRFVDVF9OQU1FID0gY29tLmFwcGxlLldlYktpdDIuJChUQVJHRVRf
TkFNRTpyZmMxMDM0aWRlbnRpZmllcik7CitJTkZPUExJU1RfRklMRSA9IFdlYlByb2Nlc3NTZXJ2
aWNlL0luZm8ucGxpc3Q7CitJTlNUQUxMX1BBVEggPSAkKFdFQktJVDJfRlJBTUVXT1JLU19ESVIp
L1dlYktpdDIuZnJhbWV3b3JrOworCitBUFBfSUNPTiA9ICQoQVBQX0lDT05fJChDT05GSUdVUkFU
SU9OKSk7CitBUFBfSUNPTl9EZWJ1ZyA9IFdlYktpdC5pY25zOworQVBQX0lDT05fUmVsZWFzZSA9
IFdlYktpdC5pY25zOworQVBQX0lDT05fUHJvZHVjdGlvbiA9IDsKKworRVhDTFVERURfU09VUkNF
X0ZJTEVfTkFNRVMgPSAkKEVYQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVTXyQoQ09ORklHVVJBVElP
TikpOworRVhDTFVERURfU09VUkNFX0ZJTEVfTkFNRVNfUHJvZHVjdGlvbiA9IFdlYktpdC5pY25z
OworCitXUkFQUEVSX0VYVEVOU0lPTiA9IHhwYzsKK01BQ0hfT19UWVBFID0gbWhfZXhlY3V0ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL1dlYlByb2Nlc3NTZXJ2
aWNlRm9yV2ViS2l0RGV2ZWxvcG1lbnQueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1
cmF0aW9ucy9XZWJQcm9jZXNzU2VydmljZUZvcldlYktpdERldmVsb3BtZW50LnhjY29uZmlnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI0ODNlMGY3YjJjYTIwNDJlNTQ3ZGNkZDg0NTNkMDUyMjlkMjczNjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9XZWJQcm9jZXNzU2Vy
dmljZUZvcldlYktpdERldmVsb3BtZW50LnhjY29uZmlnCkBAIC0wLDAgKzEsNDAgQEAKKy8vIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKy8vIGFyZSBtZXQ6CisvLyAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisvLyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisvLyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorLy8gQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisvLyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisvLyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKy8vIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKy8vIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKworI2luY2x1ZGUgIkJhc2VUYXJnZXQueGNj
b25maWciCisKK0dDQ19FTkFCTEVfT0JKQ19HQyA9IE5POworUFJPRFVDVF9OQU1FID0gY29tLmFw
cGxlLldlYktpdDIuJChUQVJHRVRfTkFNRTpyZmMxMDM0aWRlbnRpZmllcik7CitJTkZPUExJU1Rf
RklMRSA9IFdlYlByb2Nlc3NTZXJ2aWNlRm9yV2ViS2l0RGV2ZWxvcG1lbnQvSW5mby5wbGlzdDsK
K0lOU1RBTExfUEFUSCA9ICQoV0VCS0lUMl9GUkFNRVdPUktTX0RJUikvV2ViS2l0Mi5mcmFtZXdv
cms7CisKK0FQUF9JQ09OID0gJChBUFBfSUNPTl8kKENPTkZJR1VSQVRJT04pKTsKK0FQUF9JQ09O
X0RlYnVnID0gV2ViS2l0LmljbnM7CitBUFBfSUNPTl9SZWxlYXNlID0gV2ViS2l0LmljbnM7CitB
UFBfSUNPTl9Qcm9kdWN0aW9uID0gOworCitFWENMVURFRF9TT1VSQ0VfRklMRV9OQU1FUyA9ICQo
RVhDTFVERURfU09VUkNFX0ZJTEVfTkFNRVNfJChDT05GSUdVUkFUSU9OKSk7CitFWENMVURFRF9T
T1VSQ0VfRklMRV9OQU1FU19Qcm9kdWN0aW9uID0gV2ViS2l0LmljbnM7CisKK1dSQVBQRVJfRVhU
RU5TSU9OID0geHBjOworTUFDSF9PX1RZUEUgPSBtaF9leGVjdXRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1dvcmtRdWV1ZU1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9tYWMvV29ya1F1ZXVlTWFjLmNwcAppbmRleCBhZTQ3M2VlNWNjODRlNTg0Mjli
MDQzOWNjZDkyMWFjMmM0OTJmZmFhLi45ZTU3ZTE1MGNkMWNmNmFmMGMzZTg5ZThmMDFmZWNmMjU3
OGMxNzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvV29ya1F1ZXVl
TWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvV29ya1F1ZXVlTWFjLmNw
cApAQCAtMTEwLDYgKzExMCw4IEBAIHByaXZhdGU6CiAKIHZvaWQgV29ya1F1ZXVlOjpyZWdpc3Rl
ck1hY2hQb3J0RXZlbnRIYW5kbGVyKG1hY2hfcG9ydF90IG1hY2hQb3J0LCBNYWNoUG9ydEV2ZW50
VHlwZSBldmVudFR5cGUsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uKQogeworICAg
IEFTU0VSVChtYWNoUG9ydCAhPSBNQUNIX1BPUlRfTlVMTCk7CisKICAgICBkaXNwYXRjaF9zb3Vy
Y2VfdHlwZV90IHNvdXJjZVR5cGUgPSAwOwogICAgIHN3aXRjaCAoZXZlbnRUeXBlKSB7CiAgICAg
Y2FzZSBNYWNoUG9ydERhdGFBdmFpbGFibGU6CkBAIC0xNDQsNyArMTQ2LDcgQEAgdm9pZCBXb3Jr
UXVldWU6OnJlZ2lzdGVyTWFjaFBvcnRFdmVudEhhbmRsZXIobWFjaF9wb3J0X3QgbWFjaFBvcnQs
IE1hY2hQb3J0RXZlbnQKIAogdm9pZCBXb3JrUXVldWU6OnVucmVnaXN0ZXJNYWNoUG9ydEV2ZW50
SGFuZGxlcihtYWNoX3BvcnRfdCBtYWNoUG9ydCkKIHsKLSAgICBBU1NFUlQobWFjaFBvcnQpOwor
ICAgIEFTU0VSVChtYWNoUG9ydCAhPSBNQUNIX1BPUlRfTlVMTCk7CiAgICAgCiAgICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fZXZlbnRTb3VyY2VzTXV0ZXgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1h
Yy5tbQppbmRleCBlYzdkOWUxZDRjNzliYWI4NGJhNzZjNGY5NTE4YThkMjUxNmI4ZmI5Li5iMzFi
MmU4M2JlMjdkY2IxY2I5MDdjOGJmZWUyOTkxZmJhMDc0ZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1h
Yy5tbQpAQCAtNzcsMjUgKzc3LDE3NCBAQCBzdGF0aWMgdm9pZCBzZXRVcFRlcm1pbmF0aW9uTm90
aWZpY2F0aW9uSGFuZGxlcihwaWRfdCBwaWQpCiAjZW5kaWYKIH0KIAorc3RhdGljIHZvaWQgYWRk
RFlMREVudmlyb25tZW50QWRkaXRpb25zKGNvbnN0IFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0
aW9ucyYgbGF1bmNoT3B0aW9ucywgYm9vbCBpc1dlYktpdERldmVsb3BtZW50QnVpbGQsIEVudmly
b25tZW50VmFyaWFibGVzJiBlbnZpcm9ubWVudFZhcmlhYmxlcykKK3sKKyNpZiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKKyAgICBEeW5hbWljTGlua2VyRW52aXJvbm1l
bnRFeHRyYWN0b3IgZW52aXJvbm1lbnRFeHRyYWN0b3IoW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBl
eGVjdXRhYmxlUGF0aF0sIF9OU0dldE1hY2hFeGVjdXRlSGVhZGVyKCktPmNwdXR5cGUpOworICAg
IGVudmlyb25tZW50RXh0cmFjdG9yLmdldEV4dHJhY3RlZEVudmlyb25tZW50VmFyaWFibGVzKGVu
dmlyb25tZW50VmFyaWFibGVzKTsKKyNlbmRpZgorCisgICAgTlNCdW5kbGUgKndlYktpdDJCdW5k
bGUgPSBbTlNCdW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2ViS2l0MiJd
OworICAgIE5TU3RyaW5nICpmcmFtZXdvcmtzUGF0aCA9IFtbd2ViS2l0MkJ1bmRsZSBidW5kbGVQ
YXRoXSBzdHJpbmdCeURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnRdOworCisgICAgLy8gVG8gbWFr
ZSBlbmdpbmVlcmluZyBidWlsZHMgd29yaywgaWYgdGhlIHBhdGggaXMgb3V0c2lkZSBvZiAvU3lz
dGVtIHNldCB1cAorICAgIC8vIERZTERfRlJBTUVXT1JLX1BBVEggdG8gcGljayB1cCBvdGhlciBm
cmFtZXdvcmtzLCBidXQgZG9uJ3QgZG8gaXQgZm9yIHRoZQorICAgIC8vIHByb2R1Y3Rpb24gY29u
ZmlndXJhdGlvbiBiZWNhdXNlIGl0IGludm9sdmVzIGV4dHJhIGZpbGUgc3lzdGVtIGFjY2Vzcy4K
KyAgICBpZiAoaXNXZWJLaXREZXZlbG9wbWVudEJ1aWxkKQorICAgICAgICBlbnZpcm9ubWVudFZh
cmlhYmxlcy5hcHBlbmRWYWx1ZSgiRFlMRF9GUkFNRVdPUktfUEFUSCIsIFtmcmFtZXdvcmtzUGF0
aCBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25dLCAnOicpOworCisgICAgTlNTdHJpbmcgKnByb2Nl
c3NQYXRoID0gW3dlYktpdDJCdW5kbGUgcGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGU6KGxhdW5j
aE9wdGlvbnMucHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc0xhdW5jaGVyOjpQbHVnaW5Qcm9jZXNzID8g
QCJQbHVnaW5Qcm9jZXNzLmFwcCIgOiBAIldlYlByb2Nlc3MuYXBwIildOworICAgIE5TU3RyaW5n
ICpwcm9jZXNzQXBwRXhlY3V0YWJsZVBhdGggPSBbW05TQnVuZGxlIGJ1bmRsZVdpdGhQYXRoOnBy
b2Nlc3NQYXRoXSBleGVjdXRhYmxlUGF0aF07CisKKyAgICBOU1N0cmluZyAqcHJvY2Vzc1NoaW1Q
YXRoTlNTdHJpbmcgPSBuaWw7CisgICAgaWYgKGxhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPT0g
UHJvY2Vzc0xhdW5jaGVyOjpQbHVnaW5Qcm9jZXNzKQorICAgICAgICBwcm9jZXNzU2hpbVBhdGhO
U1N0cmluZyA9IFtbcHJvY2Vzc0FwcEV4ZWN1dGFibGVQYXRoIHN0cmluZ0J5RGVsZXRpbmdMYXN0
UGF0aENvbXBvbmVudF0gc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiUGx1Z2luUHJv
Y2Vzc1NoaW0uZHlsaWIiXTsKKyAgICBlbHNlIGlmIChsYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBl
ID09IFByb2Nlc3NMYXVuY2hlcjo6V2ViUHJvY2VzcykKKyAgICAgICAgcHJvY2Vzc1NoaW1QYXRo
TlNTdHJpbmcgPSBbW3Byb2Nlc3NBcHBFeGVjdXRhYmxlUGF0aCBzdHJpbmdCeURlbGV0aW5nTGFz
dFBhdGhDb21wb25lbnRdIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYlByb2Nl
c3NTaGltLmR5bGliIl07CisKKyAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgc2hpbSBsaWJyYXJ5
IGZpbGUgZXhpc3RzIGFuZCBpbnNlcnQgaXQuCisgICAgaWYgKHByb2Nlc3NTaGltUGF0aE5TU3Ry
aW5nKSB7CisgICAgICAgIGNvbnN0IGNoYXIqIHByb2Nlc3NTaGltUGF0aCA9IFtwcm9jZXNzU2hp
bVBhdGhOU1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25dOworICAgICAgICBzdHJ1Y3Qg
c3RhdCBzdGF0QnVmOworICAgICAgICBpZiAoc3RhdChwcm9jZXNzU2hpbVBhdGgsICZzdGF0QnVm
KSA9PSAwICYmIChzdGF0QnVmLnN0X21vZGUgJiBTX0lGTVQpID09IFNfSUZSRUcpCisgICAgICAg
ICAgICBlbnZpcm9ubWVudFZhcmlhYmxlcy5hcHBlbmRWYWx1ZSgiRFlMRF9JTlNFUlRfTElCUkFS
SUVTIiwgcHJvY2Vzc1NoaW1QYXRoLCAnOicpOworICAgIH0KKworfQorCiB0eXBlZGVmIHZvaWQg
KFByb2Nlc3NMYXVuY2hlcjo6KkRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3NGdW5jdGlvbikoUGxh
dGZvcm1Qcm9jZXNzSWRlbnRpZmllciwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7
CiAKICNpZiBIQVZFKFhQQykKLXN0YXRpYyB2b2lkIGxhdW5jaFhQQ1NlcnZpY2UoY29uc3QgUHJv
Y2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiwgY29uc3QgRW52aXJvbm1lbnRWYXJpYWJsZXMm
LCBQcm9jZXNzTGF1bmNoZXIqIHRoYXQsIERpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3NGdW5jdGlv
biBkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzRnVuY3Rpb24pCitzdGF0aWMgdm9pZCBjb25uZWN0
VG9XZWJQcm9jZXNzU2VydmljZUZvcldlYktpdERldmVsb3BtZW50KGNvbnN0IFByb2Nlc3NMYXVu
Y2hlcjo6TGF1bmNoT3B0aW9ucyYsIFByb2Nlc3NMYXVuY2hlciogdGhhdCwgRGlkRmluaXNoTGF1
bmNoaW5nUHJvY2Vzc0Z1bmN0aW9uIGRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3NGdW5jdGlvbiwg
UmV0YWluUHRyPE5TVVVJRD4gaW5zdGFuY2VVVUlEKQogewogICAgIC8vIENyZWF0ZSBhIGNvbm5l
Y3Rpb24gdG8gdGhlIFdlYktpdDIgWFBDIHNlcnZpY2UuCi0gICAgeHBjX2Nvbm5lY3Rpb25fdCBj
b25uZWN0aW9uID0geHBjX2Nvbm5lY3Rpb25fY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0MlNlcnZp
Y2UiLCAwKTsKKyAgICB4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24gPSB4cGNfY29ubmVjdGlv
bl9jcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQyLldlYlByb2Nlc3NTZXJ2aWNlRm9yV2ViS2l0RGV2
ZWxvcG1lbnQiLCAwKTsKKworICAgIHV1aWRfdCB1dWlkQnl0ZXM7CisgICAgW2luc3RhbmNlVVVJ
RC5nZXQoKSBnZXRVVUlEQnl0ZXM6dXVpZEJ5dGVzXTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZXRf
aW5zdGFuY2UoY29ubmVjdGlvbiwgdXVpZEJ5dGVzKTsKKworICAgIHhwY19jb25uZWN0aW9uX3Nl
dF9ldmVudF9oYW5kbGVyKGNvbm5lY3Rpb24sIF4oeHBjX29iamVjdF90IGV2ZW50KSB7IH0pOwor
ICAgIHhwY19jb25uZWN0aW9uX3Jlc3VtZShjb25uZWN0aW9uKTsKKworICAgIC8vIENyZWF0ZSB0
aGUgbGlzdGVuaW5nIHBvcnQuCisgICAgbWFjaF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsKKyAgICBt
YWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJ
VkUsICZsaXN0ZW5pbmdQb3J0KTsKKyAgICAKKyAgICAvLyBJbnNlcnQgYSBzZW5kIHJpZ2h0IHNv
IHdlIGNhbiBzZW5kIHRvIGl0LgorICAgIG1hY2hfcG9ydF9pbnNlcnRfcmlnaHQobWFjaF90YXNr
X3NlbGYoKSwgbGlzdGVuaW5nUG9ydCwgbGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtF
X1NFTkQpOworCisgICAgTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZpZXIgPSBbW05TQnVuZGxlIG1h
aW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdOworICAgIENTdHJpbmcgY2xpZW50SWRlbnRpZmll
ciA9IGJ1bmRsZUlkZW50aWZpZXIgPyBTdHJpbmcoW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5k
bGVJZGVudGlmaWVyXSkudXRmOCgpIDogKl9OU0dldFByb2duYW1lKCk7CisKKyAgICB4cGNfb2Jq
ZWN0X3QgYm9vdFN0cmFwTWVzc2FnZSA9IHhwY19kaWN0aW9uYXJ5X2NyZWF0ZSgwLCAwLCAwKTsK
KyAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKGJvb3RTdHJhcE1lc3NhZ2UsICJtZXNzYWdl
LW5hbWUiLCAiYm9vdHN0cmFwIik7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3N0cmluZyhib290
U3RyYXBNZXNzYWdlLCAiZnJhbWV3b3JrLWV4ZWN1dGFibGUtcGF0aCIsIFtbW05TQnVuZGxlIGJ1
bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYktpdDIiXSBleGVjdXRhYmxlUGF0aF0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uXSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X21hY2hf
c2VuZChib290U3RyYXBNZXNzYWdlLCAic2VydmVyLXBvcnQiLCBsaXN0ZW5pbmdQb3J0KTsKKyAg
ICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKGJvb3RTdHJhcE1lc3NhZ2UsICJjbGllbnQtaWRl
bnRpZmllciIsIGNsaWVudElkZW50aWZpZXIuZGF0YSgpKTsKIAotICAgIHV1aWRfdCB1dWlkOwot
ICAgIHV1aWRfZ2VuZXJhdGUodXVpZCk7Ci0gICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2luc3RhbmNl
KGNvbm5lY3Rpb24sIHV1aWQpOworICAgIHRoYXQtPnJlZigpOwogCi0gICAgeHBjX2Nvbm5lY3Rp
b25fc2V0X2V2ZW50X2hhbmRsZXIoY29ubmVjdGlvbiwgXih4cGNfb2JqZWN0X3QgZXZlbnQpIHsK
LSAgICAgICAgeHBjX3R5cGVfdCB0eXBlID0geHBjX2dldF90eXBlKGV2ZW50KTsKKyAgICB4cGNf
Y29ubmVjdGlvbl9zZW5kX21lc3NhZ2Vfd2l0aF9yZXBseShjb25uZWN0aW9uLCBib290U3RyYXBN
ZXNzYWdlLCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZ
X0RFRkFVTFQsIDApLCBeKHhwY19vYmplY3RfdCByZXBseSkgeworICAgICAgICB4cGNfdHlwZV90
IHR5cGUgPSB4cGNfZ2V0X3R5cGUocmVwbHkpOwogICAgICAgICBpZiAodHlwZSA9PSBYUENfVFlQ
RV9FUlJPUikgewotICAgICAgICAgICAgaWYgKGV2ZW50ID09IFhQQ19FUlJPUl9DT05ORUNUSU9O
X0lOVkFMSUQgfHwgZXZlbnQgPT0gWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5URVJSVVBURUQpCi0g
ICAgICAgICAgICAgICAgTlNMb2coQCJXZWJLaXQyIFdlYiBDb250ZW50IHNlcnZpY2UgZXhpdGVk
LiIpOworICAgICAgICAgICAgLy8gV2UgZmFpbGVkIHRvIGxhdW5jaC4gUmVsZWFzZSB0aGUgc2Vu
ZCByaWdodC4KKyAgICAgICAgICAgIG1hY2hfcG9ydF9kZWFsbG9jYXRlKG1hY2hfdGFza19zZWxm
KCksIGxpc3RlbmluZ1BvcnQpOworCisgICAgICAgICAgICAvLyBBbmQgdGhlIHJlY2VpdmUgcmln
aHQuCisgICAgICAgICAgICBtYWNoX3BvcnRfbW9kX3JlZnMobWFjaF90YXNrX3NlbGYoKSwgbGlz
dGVuaW5nUG9ydCwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsIC0xKTsKKworICAgICAgICAgICAg
UnVuTG9vcDo6bWFpbigpLT5kaXNwYXRjaChiaW5kKGRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3NG
dW5jdGlvbiwgdGhhdCwgMCwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcigpKSk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBYUENfVFlQRV9ESUNU
SU9OQVJZKTsKKyAgICAgICAgICAgIEFTU0VSVCghc3RyY21wKHhwY19kaWN0aW9uYXJ5X2dldF9z
dHJpbmcocmVwbHksICJtZXNzYWdlLW5hbWUiKSwgInByb2Nlc3MtZmluaXNoZWQtbGF1bmNoaW5n
IikpOworCisgICAgICAgICAgICAvLyBUaGUgcHJvY2VzcyBoYXMgZmluaXNoZWQgbGF1bmNoaW5n
LCBncmFiIHRoZSBwaWQgZnJvbSB0aGUgY29ubmVjdGlvbi4KKyAgICAgICAgICAgIHBpZF90IHBy
b2Nlc3NJZGVudGlmaWVyID0geHBjX2Nvbm5lY3Rpb25fZ2V0X3BpZChjb25uZWN0aW9uKTsKKwor
ICAgICAgICAgICAgLy8gV2UndmUgZmluaXNoZWQgbGF1bmNoaW5nIHRoZSBwcm9jZXNzLCBtZXNz
YWdlIGJhY2sgdG8gdGhlIG1haW4gcnVuIGxvb3AuCisgICAgICAgICAgICBSdW5Mb29wOjptYWlu
KCktPmRpc3BhdGNoKGJpbmQoZGlkRmluaXNoTGF1bmNoaW5nUHJvY2Vzc0Z1bmN0aW9uLCB0aGF0
LCBwcm9jZXNzSWRlbnRpZmllciwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihsaXN0
ZW5pbmdQb3J0LCBjb25uZWN0aW9uKSkpOwogICAgICAgICB9CisKKyAgICAgICAgdGhhdC0+ZGVy
ZWYoKTsKKyAgICB9KTsKKyAgICB4cGNfcmVsZWFzZShib290U3RyYXBNZXNzYWdlKTsKK30KKwor
c3RhdGljIHZvaWQgY3JlYXRlV2ViUHJvY2Vzc1NlcnZpY2VGb3JXZWJLaXREZXZlbG9wbWVudChj
b25zdCBQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMsIFByb2Nl
c3NMYXVuY2hlciogdGhhdCwgRGlkRmluaXNoTGF1bmNoaW5nUHJvY2Vzc0Z1bmN0aW9uIGRpZEZp
bmlzaExhdW5jaGluZ1Byb2Nlc3NGdW5jdGlvbikKK3sKKyAgICBFbnZpcm9ubWVudFZhcmlhYmxl
cyBlbnZpcm9ubWVudFZhcmlhYmxlczsKKyAgICBhZGREWUxERW52aXJvbm1lbnRBZGRpdGlvbnMo
bGF1bmNoT3B0aW9ucywgdHJ1ZSwgZW52aXJvbm1lbnRWYXJpYWJsZXMpOworCisgICAgLy8gR2Vu
ZXJhdGUgdGhlIHV1aWQgZm9yIHRoZSBzZXJ2aWNlIGluc3RhbmNlIHdlIGFyZSBhYm91dCB0byBj
cmVhdGUuCisgICAgLy8gRklYTUU6IFRoaXMgVVVJRCBzaG91bGQgYmUgc3RvcmVkIG9uIHRoZSBX
ZWJQcm9jZXNzUHJveHkuCisgICAgUmV0YWluUHRyPE5TVVVJRD4gaW5zdGFuY2VVVUlEID0gYWRv
cHROUyhbW05TVVVJRCBhbGxvY10gaW5pdF0pOworCisgICAgeHBjX2Nvbm5lY3Rpb25fdCByZUV4
ZWNDb25uZWN0aW9uID0geHBjX2Nvbm5lY3Rpb25fY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0Mi5X
ZWJQcm9jZXNzU2VydmljZUZvcldlYktpdERldmVsb3BtZW50IiwgMCk7CisKKyAgICB1dWlkX3Qg
dXVpZEJ5dGVzOworICAgIFtpbnN0YW5jZVVVSUQuZ2V0KCkgZ2V0VVVJREJ5dGVzOnV1aWRCeXRl
c107CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2luc3RhbmNlKHJlRXhlY0Nvbm5lY3Rpb24sIHV1
aWRCeXRlcyk7CisKKyAgICAvLyBLZWVwIHRoZSBQcm9jZXNzTGF1bmNoZXIgYWxpdmUgd2hpbGUg
d2UgZG8gdGhlIHJlLWV4ZWNpbmcgKGJhbGFuY2VkIGluIGV2ZW50IGhhbmRsZXIpLgorICAgIHRo
YXQtPnJlZigpOworCisgICAgLy8gV2Ugd2FpdCBmb3IgdGhlIGNvbm5lY3Rpb24gdG8gdGVhciBp
dHNlbGYgZG93biAoaW5kaWNhdGVkIHZpYSBhbiBlcnJvciBldmVudCkKKyAgICAvLyB0byBpbmRp
Y2F0ZSB0aGF0IHRoZSBzZXJ2aWNlIGluc3RhbmNlIHJlLWV4ZWNlZCBpdHNlbGYsIGFuZCBpcyBu
b3cgcmVhZHkgdG8gYmUKKyAgICAvLyBjb25uZWN0ZWQgdG8uCisgICAgeHBjX2Nvbm5lY3Rpb25f
c2V0X2V2ZW50X2hhbmRsZXIocmVFeGVjQ29ubmVjdGlvbiwgXih4cGNfb2JqZWN0X3QgZXZlbnQp
IHsKKyAgICAgICAgQVNTRVJUKHhwY19nZXRfdHlwZShldmVudCkgPT0gWFBDX1RZUEVfRVJST1Ip
OworCisgICAgICAgIGNvbm5lY3RUb1dlYlByb2Nlc3NTZXJ2aWNlRm9yV2ViS2l0RGV2ZWxvcG1l
bnQobGF1bmNoT3B0aW9ucywgdGhhdCwgZGlkRmluaXNoTGF1bmNoaW5nUHJvY2Vzc0Z1bmN0aW9u
LCBpbnN0YW5jZVVVSUQpOworCisgICAgICAgIC8vIFJlbGVhc2UgdGhlIGNvbm5lY3Rpb24uCisg
ICAgICAgIHhwY19yZWxlYXNlKHJlRXhlY0Nvbm5lY3Rpb24pOworCisgICAgICAgIC8vIE90aGVy
IGVuZCBvZiByZWYgY2FsbGVkIGJlZm9yZSB3ZSBzZXR1cCB0aGUgZXZlbnQgaGFuZGxlci4KKyAg
ICAgICAgdGhhdC0+ZGVyZWYoKTsKICAgICB9KTsKKyAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUo
cmVFeGVjQ29ubmVjdGlvbik7CisKKyAgICB4cGNfb2JqZWN0X3QgcmVFeGVjTWVzc2FnZSA9IHhw
Y19kaWN0aW9uYXJ5X2NyZWF0ZSgwLCAwLCAwKTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3Ry
aW5nKHJlRXhlY01lc3NhZ2UsICJtZXNzYWdlLW5hbWUiLCAicmUtZXhlYyIpOworCisgICAgY3B1
X3R5cGVfdCBhcmNoaXRlY3R1cmUgPSBsYXVuY2hPcHRpb25zLmFyY2hpdGVjdHVyZSA9PSBQcm9j
ZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnM6Ok1hdGNoQ3VycmVudEFyY2hpdGVjdHVyZSA/IF9O
U0dldE1hY2hFeGVjdXRlSGVhZGVyKCktPmNwdXR5cGUgOiBsYXVuY2hPcHRpb25zLmFyY2hpdGVj
dHVyZTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfdWludDY0KHJlRXhlY01lc3NhZ2UsICJhcmNo
aXRlY3R1cmUiLCAodWludDY0X3QpYXJjaGl0ZWN0dXJlKTsKKyAgICAKKyAgICB4cGNfb2JqZWN0
X3QgZW52aXJvbm1lbnQgPSB4cGNfYXJyYXlfY3JlYXRlKDAsIDApOworICAgIGNoYXIqKiBlbnZp
cm9ubWVudFBvaW50ZXIgPSBlbnZpcm9ubWVudFZhcmlhYmxlcy5lbnZpcm9ubWVudFBvaW50ZXIo
KTsKKyAgICBWZWN0b3I8Q1N0cmluZz4gdGVtcHM7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGVu
dmlyb25tZW50UG9pbnRlcltpXTsgKytpKSB7CisgICAgICAgIENTdHJpbmcgdGVtcChlbnZpcm9u
bWVudFBvaW50ZXJbaV0sIHN0cmxlbihlbnZpcm9ubWVudFBvaW50ZXJbaV0pKTsKKyAgICAgICAg
dGVtcHMuYXBwZW5kKHRlbXApOworCisgICAgICAgIHhwY19hcnJheV9zZXRfc3RyaW5nKGVudmly
b25tZW50LCBYUENfQVJSQVlfQVBQRU5ELCB0ZW1wLmRhdGEoKSk7CisgICAgfQorICAgIHhwY19k
aWN0aW9uYXJ5X3NldF92YWx1ZShyZUV4ZWNNZXNzYWdlLCAiZW52aXJvbm1lbnQiLCBlbnZpcm9u
bWVudCk7CisgICAgeHBjX3JlbGVhc2UoZW52aXJvbm1lbnQpOworCisjaWYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X2Jvb2wo
cmVFeGVjTWVzc2FnZSwgImV4ZWN1dGFibGUtaGVhcCIsIGxhdW5jaE9wdGlvbnMuZXhlY3V0YWJs
ZUhlYXApOworI2VuZGlmCisKKyAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UocmVFeGVj
Q29ubmVjdGlvbiwgcmVFeGVjTWVzc2FnZSk7CisgICAgeHBjX3JlbGVhc2UocmVFeGVjTWVzc2Fn
ZSk7Cit9CisKK3N0YXRpYyB2b2lkIGNyZWF0ZVdlYlByb2Nlc3NTZXJ2aWNlKGNvbnN0IFByb2Nl
c3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0aW9ucywgUHJvY2Vzc0xhdW5jaGVy
KiB0aGF0LCBEaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzRnVuY3Rpb24gZGlkRmluaXNoTGF1bmNo
aW5nUHJvY2Vzc0Z1bmN0aW9uKQoreworICAgIC8vIEdlbmVyYXRlIHRoZSB1dWlkIGZvciB0aGUg
c2VydmljZSBpbnN0YW5jZSB3ZSBhcmUgYWJvdXQgdG8gY3JlYXRlLgorICAgIC8vIEZJWE1FOiBU
aGlzIFVVSUQgc2hvdWxkIGJlIHN0b3JlZCBvbiB0aGUgV2ViUHJvY2Vzc1Byb3h5LgorICAgIFJl
dGFpblB0cjxOU1VVSUQ+IGluc3RhbmNlVVVJRCA9IGFkb3B0TlMoW1tOU1VVSUQgYWxsb2NdIGlu
aXRdKTsKKworICAgIC8vIENyZWF0ZSBhIGNvbm5lY3Rpb24gdG8gdGhlIFdlYktpdDIgWFBDIHNl
cnZpY2UuCisgICAgeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uID0geHBjX2Nvbm5lY3Rpb25f
Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0Mi5XZWJQcm9jZXNzU2VydmljZSIsIDApOworCisgICAg
dXVpZF90IHV1aWRCeXRlczsKKyAgICBbaW5zdGFuY2VVVUlELmdldCgpIGdldFVVSURCeXRlczp1
dWlkQnl0ZXNdOworICAgIHhwY19jb25uZWN0aW9uX3NldF9pbnN0YW5jZShjb25uZWN0aW9uLCB1
dWlkQnl0ZXMpOworCisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIoY29ubmVj
dGlvbiwgXih4cGNfb2JqZWN0X3QgZXZlbnQpIHsgfSk7CiAgICAgeHBjX2Nvbm5lY3Rpb25fcmVz
dW1lKGNvbm5lY3Rpb24pOwogCiAgICAgLy8gQ3JlYXRlIHRoZSBsaXN0ZW5pbmcgcG9ydC4KQEAg
LTE0Myw4ICsyOTIsOSBAQCBzdGF0aWMgdm9pZCBsYXVuY2hYUENTZXJ2aWNlKGNvbnN0IFByb2Nl
c3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYsIGNvbnN0IEVudmlybwogI2VuZGlmCiAKICNpZiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKLXN0YXRpYyBib29sIHRyeVBy
ZWV4aXN0aW5nUHJvY2Vzcyhjb25zdCBQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxh
dW5jaE9wdGlvbnMsIGNvbnN0IEVudmlyb25tZW50VmFyaWFibGVzJiBlbnZpcm9ubWVudFZhcmlh
YmxlcywgUHJvY2Vzc0xhdW5jaGVyKiB0aGF0LCBEaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzRnVu
Y3Rpb24gZGlkRmluaXNoTGF1bmNoaW5nUHJvY2Vzc0Z1bmN0aW9uKQorc3RhdGljIGJvb2wgdHJ5
UHJlZXhpc3RpbmdQcm9jZXNzKGNvbnN0IFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYg
bGF1bmNoT3B0aW9ucywgUHJvY2Vzc0xhdW5jaGVyKiB0aGF0LCBEaWRGaW5pc2hMYXVuY2hpbmdQ
cm9jZXNzRnVuY3Rpb24gZGlkRmluaXNoTGF1bmNoaW5nUHJvY2Vzc0Z1bmN0aW9uKQogeworICAg
IEVudmlyb25tZW50VmFyaWFibGVzIGVudmlyb25tZW50VmFyaWFibGVzOwogICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBwcmVleGlzdGluZ1Byb2Nlc3NTZXJ2aWNlTmFtZSA9IGVudmlyb25tZW50VmFy
aWFibGVzLmdldChFbnZpcm9ubWVudFZhcmlhYmxlczo6cHJlZXhpc3RpbmdQcm9jZXNzU2Vydmlj
ZU5hbWVLZXkoKSk7CiAKICAgICBQcm9jZXNzTGF1bmNoZXI6OlByb2Nlc3NUeXBlIHByZWV4aXN0
aW5nUHJvY2Vzc1R5cGU7CkBAIC0xODksMTM0ICszMzksMTE3IEBAIHN0YXRpYyBib29sIHRyeVBy
ZWV4aXN0aW5nUHJvY2Vzcyhjb25zdCBQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxh
dW5jaE9wCiB9CiAjZW5kaWYKIAotdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3Mo
KQorc3RhdGljIHZvaWQgY3JlYXRlUHJvY2Vzcyhjb25zdCBQcm9jZXNzTGF1bmNoZXI6OkxhdW5j
aE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMsIGJvb2wgaXNXZWJLaXREZXZlbG9wbWVudEJ1aWxkLCBQ
cm9jZXNzTGF1bmNoZXIqIHRoYXQsIERpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3NGdW5jdGlvbiBk
aWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzRnVuY3Rpb24pCiB7CiAgICAgRW52aXJvbm1lbnRWYXJp
YWJsZXMgZW52aXJvbm1lbnRWYXJpYWJsZXM7Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDcwCi0gICAgaWYgKHRyeVByZWV4aXN0aW5nUHJvY2VzcyhtX2xhdW5jaE9w
dGlvbnMsIGVudmlyb25tZW50VmFyaWFibGVzLCB0aGlzLCAmUHJvY2Vzc0xhdW5jaGVyOjpkaWRG
aW5pc2hMYXVuY2hpbmdQcm9jZXNzKSkKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0KLSNpZiBI
QVZFKFhQQykKLSAgICBpZiAobV9sYXVuY2hPcHRpb25zLnVzZVhQQykgewotICAgICAgICBsYXVu
Y2hYUENTZXJ2aWNlKG1fbGF1bmNoT3B0aW9ucywgZW52aXJvbm1lbnRWYXJpYWJsZXMsIHRoaXMs
ICZQcm9jZXNzTGF1bmNoZXI6OmRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3MpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSAgICAgICAgLy8gQ3JlYXRlIHRoZSBsaXN0ZW5pbmcg
cG9ydC4KLSAgICAgICAgbWFjaF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsKLSAgICAgICAgbWFjaF9w
b3J0X2FsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIE1BQ0hfUE9SVF9SSUdIVF9SRUNFSVZFLCAm
bGlzdGVuaW5nUG9ydCk7Ci0gICAgCi0gICAgICAgIC8vIEluc2VydCBhIHNlbmQgcmlnaHQgc28g
d2UgY2FuIHNlbmQgdG8gaXQuCi0gICAgICAgIG1hY2hfcG9ydF9pbnNlcnRfcmlnaHQobWFjaF90
YXNrX3NlbGYoKSwgbGlzdGVuaW5nUG9ydCwgbGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9N
QUtFX1NFTkQpOworICAgIGFkZERZTERFbnZpcm9ubWVudEFkZGl0aW9ucyhsYXVuY2hPcHRpb25z
LCBpc1dlYktpdERldmVsb3BtZW50QnVpbGQsIGVudmlyb25tZW50VmFyaWFibGVzKTsKIAotICAg
ICAgICBOU0J1bmRsZSAqd2ViS2l0MkJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVXaXRoSWRlbnRp
ZmllcjpAImNvbS5hcHBsZS5XZWJLaXQyIl07Ci0gICAgICAgIE5TU3RyaW5nICpmcmFtZXdvcmtz
UGF0aCA9IFtbd2ViS2l0MkJ1bmRsZSBidW5kbGVQYXRoXSBzdHJpbmdCeURlbGV0aW5nTGFzdFBh
dGhDb21wb25lbnRdOwotICAgICAgICBjb25zdCBjaGFyKiBmcmFtZXdvcmtFeGVjdXRhYmxlUGF0
aCA9IFtbd2ViS2l0MkJ1bmRsZSBleGVjdXRhYmxlUGF0aF0gZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uXTsKKyAgICAvLyBDcmVhdGUgdGhlIGxpc3RlbmluZyBwb3J0LgorICAgIG1hY2hfcG9ydF90
IGxpc3RlbmluZ1BvcnQ7CisgICAgbWFjaF9wb3J0X2FsbG9jYXRlKG1hY2hfdGFza19zZWxmKCks
IE1BQ0hfUE9SVF9SSUdIVF9SRUNFSVZFLCAmbGlzdGVuaW5nUG9ydCk7CiAKLSAgICAgICAgTlNT
dHJpbmcgKnByb2Nlc3NQYXRoOwotICAgICAgICBpZiAobV9sYXVuY2hPcHRpb25zLnByb2Nlc3NU
eXBlID09IFByb2Nlc3NMYXVuY2hlcjo6UGx1Z2luUHJvY2VzcykKLSAgICAgICAgICAgIHByb2Nl
c3NQYXRoID0gW3dlYktpdDJCdW5kbGUgcGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGU6QCJQbHVn
aW5Qcm9jZXNzLmFwcCJdOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBwcm9jZXNzUGF0aCA9
IFt3ZWJLaXQyQnVuZGxlIHBhdGhGb3JBdXhpbGlhcnlFeGVjdXRhYmxlOkAiV2ViUHJvY2Vzcy5h
cHAiXTsKKyAgICAvLyBJbnNlcnQgYSBzZW5kIHJpZ2h0IHNvIHdlIGNhbiBzZW5kIHRvIGl0Lgor
ICAgIG1hY2hfcG9ydF9pbnNlcnRfcmlnaHQobWFjaF90YXNrX3NlbGYoKSwgbGlzdGVuaW5nUG9y
dCwgbGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOwogCi0gICAgICAgIE5T
U3RyaW5nICpwcm9jZXNzQXBwRXhlY3V0YWJsZVBhdGggPSBbW05TQnVuZGxlIGJ1bmRsZVdpdGhQ
YXRoOnByb2Nlc3NQYXRoXSBleGVjdXRhYmxlUGF0aF07CisgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBjZkxvY2FsaXphdGlvbihBZG9wdENGLCBXS0NvcHlDRkxvY2FsaXphdGlvblByZWZlcnJl
ZE5hbWUoTlVMTCkpOworICAgIENTdHJpbmcgbG9jYWxpemF0aW9uID0gU3RyaW5nKGNmTG9jYWxp
emF0aW9uLmdldCgpKS51dGY4KCk7CiAKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBj
ZkxvY2FsaXphdGlvbihBZG9wdENGLCBXS0NvcHlDRkxvY2FsaXphdGlvblByZWZlcnJlZE5hbWUo
TlVMTCkpOwotICAgICAgICBDU3RyaW5nIGxvY2FsaXphdGlvbiA9IFN0cmluZyhjZkxvY2FsaXph
dGlvbi5nZXQoKSkudXRmOCgpOworICAgIE5TQnVuZGxlICp3ZWJLaXQyQnVuZGxlID0gW05TQnVu
ZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYktpdDIiXTsKKyAgICBOU1N0
cmluZyAqcHJvY2Vzc1BhdGggPSBbd2ViS2l0MkJ1bmRsZSBwYXRoRm9yQXV4aWxpYXJ5RXhlY3V0
YWJsZToobGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSA9PSBQcm9jZXNzTGF1bmNoZXI6OlBsdWdp
blByb2Nlc3MgPyBAIlBsdWdpblByb2Nlc3MuYXBwIiA6IEAiV2ViUHJvY2Vzcy5hcHAiKV07Cisg
ICAgTlNTdHJpbmcgKmZyYW1ld29ya0V4ZWN1dGFibGVQYXRoID0gW3dlYktpdDJCdW5kbGUgZXhl
Y3V0YWJsZVBhdGhdOworICAgIE5TU3RyaW5nICpwcm9jZXNzQXBwRXhlY3V0YWJsZVBhdGggPSBb
W05TQnVuZGxlIGJ1bmRsZVdpdGhQYXRoOnByb2Nlc3NQYXRoXSBleGVjdXRhYmxlUGF0aF07CiAK
LSAgICAgICAgTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZpZXIgPSBbW05TQnVuZGxlIG1haW5CdW5k
bGVdIGJ1bmRsZUlkZW50aWZpZXJdOwotICAgICAgICBDU3RyaW5nIGNsaWVudElkZW50aWZpZXIg
PSBidW5kbGVJZGVudGlmaWVyID8gU3RyaW5nKFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxl
SWRlbnRpZmllcl0pLnV0ZjgoKSA6ICpfTlNHZXRQcm9nbmFtZSgpOworICAgIE5TU3RyaW5nICpi
dW5kbGVJZGVudGlmaWVyID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVy
XTsKKyAgICBDU3RyaW5nIGNsaWVudElkZW50aWZpZXIgPSBidW5kbGVJZGVudGlmaWVyID8gU3Ry
aW5nKFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0pLnV0ZjgoKSA6ICpf
TlNHZXRQcm9nbmFtZSgpOwogCi0gICAgICAgIC8vIE1ha2UgYSB1bmlxdWUsIHBlciBwaWQsIHBl
ciBwcm9jZXNzIGxhdW5jaGVyIHdlYiBwcm9jZXNzIHNlcnZpY2UgbmFtZS4KLSAgICAgICAgQ1N0
cmluZyBzZXJ2aWNlTmFtZSA9IFN0cmluZzo6Zm9ybWF0KCJjb20uYXBwbGUuV2ViS2l0LldlYlBy
b2Nlc3MtJWQtJXAiLCBnZXRwaWQoKSwgdGhpcykudXRmOCgpOworICAgIC8vIE1ha2UgYSB1bmlx
dWUsIHBlciBwaWQsIHBlciBwcm9jZXNzIGxhdW5jaGVyIHdlYiBwcm9jZXNzIHNlcnZpY2UgbmFt
ZS4KKyAgICBDU3RyaW5nIHNlcnZpY2VOYW1lID0gU3RyaW5nOjpmb3JtYXQoImNvbS5hcHBsZS5X
ZWJLaXQuV2ViUHJvY2Vzcy0lZC0lcCIsIGdldHBpZCgpLCB0aGF0KS51dGY4KCk7CiAKLSAgICAg
ICAgY29uc3QgY2hhciogYXJnc1tdID0geyBbcHJvY2Vzc0FwcEV4ZWN1dGFibGVQYXRoIGZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbl0sIGZyYW1ld29ya0V4ZWN1dGFibGVQYXRoLCAiLXR5cGUiLCBw
cm9jZXNzVHlwZUFzU3RyaW5nKG1fbGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSksICItc2Vydmlj
ZW5hbWUiLCBzZXJ2aWNlTmFtZS5kYXRhKCksICItbG9jYWxpemF0aW9uIiwgbG9jYWxpemF0aW9u
LmRhdGEoKSwgIi1jbGllbnQtaWRlbnRpZmllciIsIGNsaWVudElkZW50aWZpZXIuZGF0YSgpLCAw
IH07CisgICAgY29uc3QgY2hhciogYXJnc1tdID0geyBbcHJvY2Vzc0FwcEV4ZWN1dGFibGVQYXRo
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl0sIFtmcmFtZXdvcmtFeGVjdXRhYmxlUGF0aCBmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb25dLCAiLXR5cGUiLCBQcm9jZXNzTGF1bmNoZXI6OnByb2Nlc3NU
eXBlQXNTdHJpbmcobGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSksICItc2VydmljZW5hbWUiLCBz
ZXJ2aWNlTmFtZS5kYXRhKCksICItbG9jYWxpemF0aW9uIiwgbG9jYWxpemF0aW9uLmRhdGEoKSwg
Ii1jbGllbnQtaWRlbnRpZmllciIsIGNsaWVudElkZW50aWZpZXIuZGF0YSgpLCAwIH07CiAKLSAg
ICAgICAgLy8gUmVnaXN0ZXIgb3Vyc2VsdmVzLgotICAgICAgICBrZXJuX3JldHVybl90IGtyID0g
Ym9vdHN0cmFwX3JlZ2lzdGVyMihib290c3RyYXBfcG9ydCwgY29uc3RfY2FzdDxjaGFyKj4oc2Vy
dmljZU5hbWUuZGF0YSgpKSwgbGlzdGVuaW5nUG9ydCwgMCk7Ci0gICAgICAgIEFTU0VSVF9VTlVT
RUQoa3IsIGtyID09IEtFUk5fU1VDQ0VTUyk7CisgICAgLy8gUmVnaXN0ZXIgb3Vyc2VsdmVzLgor
ICAgIGtlcm5fcmV0dXJuX3Qga3IgPSBib290c3RyYXBfcmVnaXN0ZXIyKGJvb3RzdHJhcF9wb3J0
LCBjb25zdF9jYXN0PGNoYXIqPihzZXJ2aWNlTmFtZS5kYXRhKCkpLCBsaXN0ZW5pbmdQb3J0LCAw
KTsKKyAgICBBU1NFUlRfVU5VU0VEKGtyLCBrciA9PSBLRVJOX1NVQ0NFU1MpOwogCi0gICAgICAg
IHBvc2l4X3NwYXduYXR0cl90IGF0dHI7Ci0gICAgICAgIHBvc2l4X3NwYXduYXR0cl9pbml0KCZh
dHRyKTsKKyAgICBwb3NpeF9zcGF3bmF0dHJfdCBhdHRyOworICAgIHBvc2l4X3NwYXduYXR0cl9p
bml0KCZhdHRyKTsKIAotICAgICAgICBzaG9ydCBmbGFncyA9IDA7CisgICAgc2hvcnQgZmxhZ3Mg
PSAwOwogCi0gICAgICAgIC8vIFdlIHdhbnQgb3VyIHByb2Nlc3MgdG8gcmVjZWl2ZSBhbGwgc2ln
bmFscy4KLSAgICAgICAgc2lnc2V0X3Qgc2lnbmFsTWFza1NldDsKLSAgICAgICAgc2lnZW1wdHlz
ZXQoJnNpZ25hbE1hc2tTZXQpOworICAgIC8vIFdlIHdhbnQgb3VyIHByb2Nlc3MgdG8gcmVjZWl2
ZSBhbGwgc2lnbmFscy4KKyAgICBzaWdzZXRfdCBzaWduYWxNYXNrU2V0OworICAgIHNpZ2VtcHR5
c2V0KCZzaWduYWxNYXNrU2V0KTsKIAotICAgICAgICBwb3NpeF9zcGF3bmF0dHJfc2V0c2lnbWFz
aygmYXR0ciwgJnNpZ25hbE1hc2tTZXQpOwotICAgICAgICBmbGFncyB8PSBQT1NJWF9TUEFXTl9T
RVRTSUdNQVNLOworICAgIHBvc2l4X3NwYXduYXR0cl9zZXRzaWdtYXNrKCZhdHRyLCAmc2lnbmFs
TWFza1NldCk7CisgICAgZmxhZ3MgfD0gUE9TSVhfU1BBV05fU0VUU0lHTUFTSzsKIAotICAgICAg
ICAvLyBEZXRlcm1pbmUgdGhlIGFyY2hpdGVjdHVyZSB0byB1c2UuCi0gICAgICAgIGNwdV90eXBl
X3QgYXJjaGl0ZWN0dXJlID0gbV9sYXVuY2hPcHRpb25zLmFyY2hpdGVjdHVyZTsKLSAgICAgICAg
aWYgKGFyY2hpdGVjdHVyZSA9PSBMYXVuY2hPcHRpb25zOjpNYXRjaEN1cnJlbnRBcmNoaXRlY3R1
cmUpCi0gICAgICAgICAgICBhcmNoaXRlY3R1cmUgPSBfTlNHZXRNYWNoRXhlY3V0ZUhlYWRlcigp
LT5jcHV0eXBlOworICAgIC8vIERldGVybWluZSB0aGUgYXJjaGl0ZWN0dXJlIHRvIHVzZS4KKyAg
ICBjcHVfdHlwZV90IGFyY2hpdGVjdHVyZSA9IGxhdW5jaE9wdGlvbnMuYXJjaGl0ZWN0dXJlOwor
ICAgIGlmIChhcmNoaXRlY3R1cmUgPT0gUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zOjpN
YXRjaEN1cnJlbnRBcmNoaXRlY3R1cmUpCisgICAgICAgIGFyY2hpdGVjdHVyZSA9IF9OU0dldE1h
Y2hFeGVjdXRlSGVhZGVyKCktPmNwdXR5cGU7CiAKLSAgICAgICAgY3B1X3R5cGVfdCBjcHVUeXBl
c1tdID0geyBhcmNoaXRlY3R1cmUgfTsKLSAgICAgICAgc2l6ZV90IG91dENvdW50ID0gMDsKLSAg
ICAgICAgcG9zaXhfc3Bhd25hdHRyX3NldGJpbnByZWZfbnAoJmF0dHIsIDEsIGNwdVR5cGVzLCAm
b3V0Q291bnQpOworICAgIGNwdV90eXBlX3QgY3B1VHlwZXNbXSA9IHsgYXJjaGl0ZWN0dXJlIH07
CisgICAgc2l6ZV90IG91dENvdW50ID0gMDsKKyAgICBwb3NpeF9zcGF3bmF0dHJfc2V0YmlucHJl
Zl9ucCgmYXR0ciwgMSwgY3B1VHlwZXMsICZvdXRDb3VudCk7CiAKLSAgICAgICAgLy8gU3RhcnQg
c3VzcGVuZGVkIHNvIHdlIGNhbiBzZXQgdXAgdGhlIHRlcm1pbmF0aW9uIG5vdGlmaWNhdGlvbiBo
YW5kbGVyLgotICAgICAgICBmbGFncyB8PSBQT1NJWF9TUEFXTl9TVEFSVF9TVVNQRU5ERUQ7Cisg
ICAgLy8gU3RhcnQgc3VzcGVuZGVkIHNvIHdlIGNhbiBzZXQgdXAgdGhlIHRlcm1pbmF0aW9uIG5v
dGlmaWNhdGlvbiBoYW5kbGVyLgorICAgIGZsYWdzIHw9IFBPU0lYX1NQQVdOX1NUQVJUX1NVU1BF
TkRFRDsKIAogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAotICAg
ICAgICBzdGF0aWMgY29uc3QgaW50IGFsbG93RXhlY3V0YWJsZUhlYXBGbGFnID0gMHgyMDAwOwot
ICAgICAgICBpZiAobV9sYXVuY2hPcHRpb25zLmV4ZWN1dGFibGVIZWFwKQotICAgICAgICAgICAg
ZmxhZ3MgfD0gYWxsb3dFeGVjdXRhYmxlSGVhcEZsYWc7CisgICAgc3RhdGljIGNvbnN0IGludCBh
bGxvd0V4ZWN1dGFibGVIZWFwRmxhZyA9IDB4MjAwMDsKKyAgICBpZiAobGF1bmNoT3B0aW9ucy5l
eGVjdXRhYmxlSGVhcCkKKyAgICAgICAgZmxhZ3MgfD0gYWxsb3dFeGVjdXRhYmxlSGVhcEZsYWc7
CiAjZW5kaWYKIAotICAgICAgICBwb3NpeF9zcGF3bmF0dHJfc2V0ZmxhZ3MoJmF0dHIsIGZsYWdz
KTsKKyAgICBwb3NpeF9zcGF3bmF0dHJfc2V0ZmxhZ3MoJmF0dHIsIGZsYWdzKTsKIAotI2lmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAotICAgICAgICBEeW5hbWljTGlu
a2VyRW52aXJvbm1lbnRFeHRyYWN0b3IgZW52aXJvbm1lbnRFeHRyYWN0b3IoW1tOU0J1bmRsZSBt
YWluQnVuZGxlXSBleGVjdXRhYmxlUGF0aF0sIF9OU0dldE1hY2hFeGVjdXRlSGVhZGVyKCktPmNw
dXR5cGUpOwotICAgICAgICBlbnZpcm9ubWVudEV4dHJhY3Rvci5nZXRFeHRyYWN0ZWRFbnZpcm9u
bWVudFZhcmlhYmxlcyhlbnZpcm9ubWVudFZhcmlhYmxlcyk7Ci0jZW5kaWYKKyAgICBwaWRfdCBw
cm9jZXNzSWRlbnRpZmllciA9IDA7CisgICAgaW50IHJlc3VsdCA9IHBvc2l4X3NwYXduKCZwcm9j
ZXNzSWRlbnRpZmllciwgYXJnc1swXSwgMCwgJmF0dHIsIGNvbnN0X2Nhc3Q8Y2hhcioqPihhcmdz
KSwgZW52aXJvbm1lbnRWYXJpYWJsZXMuZW52aXJvbm1lbnRQb2ludGVyKCkpOwogCi0gICAgICAg
IC8vIFRvIG1ha2UgZW5naW5lZXJpbmcgYnVpbGRzIHdvcmssIGlmIHRoZSBwYXRoIGlzIG91dHNp
ZGUgb2YgL1N5c3RlbSBzZXQgdXAKLSAgICAgICAgLy8gRFlMRF9GUkFNRVdPUktfUEFUSCB0byBw
aWNrIHVwIG90aGVyIGZyYW1ld29ya3MsIGJ1dCBkb24ndCBkbyBpdCBmb3IgdGhlCi0gICAgICAg
IC8vIHByb2R1Y3Rpb24gY29uZmlndXJhdGlvbiBiZWNhdXNlIGl0IGludm9sdmVzIGV4dHJhIGZp
bGUgc3lzdGVtIGFjY2Vzcy4KLSAgICAgICAgaWYgKCFbZnJhbWV3b3Jrc1BhdGggaGFzUHJlZml4
OkAiL1N5c3RlbS8iXSkKLSAgICAgICAgICAgIGVudmlyb25tZW50VmFyaWFibGVzLmFwcGVuZFZh
bHVlKCJEWUxEX0ZSQU1FV09SS19QQVRIIiwgW2ZyYW1ld29ya3NQYXRoIGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbl0sICc6Jyk7Ci0KLSAgICAgICAgTlNTdHJpbmcgKnByb2Nlc3NTaGltUGF0aE5T
U3RyaW5nID0gbmlsOwotICAgICAgICBpZiAobV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlID09
IFByb2Nlc3NMYXVuY2hlcjo6UGx1Z2luUHJvY2VzcykKLSAgICAgICAgICAgIHByb2Nlc3NTaGlt
UGF0aE5TU3RyaW5nID0gW1twcm9jZXNzQXBwRXhlY3V0YWJsZVBhdGggc3RyaW5nQnlEZWxldGlu
Z0xhc3RQYXRoQ29tcG9uZW50XSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJQbHVn
aW5Qcm9jZXNzU2hpbS5keWxpYiJdOwotICAgICAgICBlbHNlIGlmIChtX2xhdW5jaE9wdGlvbnMu
cHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc0xhdW5jaGVyOjpXZWJQcm9jZXNzKQotICAgICAgICAgICAg
cHJvY2Vzc1NoaW1QYXRoTlNTdHJpbmcgPSBbW3Byb2Nlc3NBcHBFeGVjdXRhYmxlUGF0aCBzdHJp
bmdCeURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnRdIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDpAIldlYlByb2Nlc3NTaGltLmR5bGliIl07Ci0KLSAgICAgICAgLy8gTWFrZSBzdXJlIHRo
YXQgdGhlIHNoaW0gbGlicmFyeSBmaWxlIGV4aXN0cyBhbmQgaW5zZXJ0IGl0LgotICAgICAgICBp
ZiAocHJvY2Vzc1NoaW1QYXRoTlNTdHJpbmcpIHsKLSAgICAgICAgICAgIGNvbnN0IGNoYXIqIHBy
b2Nlc3NTaGltUGF0aCA9IFtwcm9jZXNzU2hpbVBhdGhOU1N0cmluZyBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb25dOwotICAgICAgICAgICAgc3RydWN0IHN0YXQgc3RhdEJ1ZjsKLSAgICAgICAgICAg
IGlmIChzdGF0KHByb2Nlc3NTaGltUGF0aCwgJnN0YXRCdWYpID09IDAgJiYgKHN0YXRCdWYuc3Rf
bW9kZSAmIFNfSUZNVCkgPT0gU19JRlJFRykKLSAgICAgICAgICAgICAgICBlbnZpcm9ubWVudFZh
cmlhYmxlcy5hcHBlbmRWYWx1ZSgiRFlMRF9JTlNFUlRfTElCUkFSSUVTIiwgcHJvY2Vzc1NoaW1Q
YXRoLCAnOicpOwotICAgICAgICB9CisgICAgcG9zaXhfc3Bhd25hdHRyX2Rlc3Ryb3koJmF0dHIp
OwogCi0gICAgICAgIHBpZF90IHByb2Nlc3NJZGVudGlmaWVyID0gMDsKLSAgICAgICAgaW50IHJl
c3VsdCA9IHBvc2l4X3NwYXduKCZwcm9jZXNzSWRlbnRpZmllciwgYXJnc1swXSwgMCwgJmF0dHIs
IGNvbnN0X2Nhc3Q8Y2hhcioqPihhcmdzKSwgZW52aXJvbm1lbnRWYXJpYWJsZXMuZW52aXJvbm1l
bnRQb2ludGVyKCkpOworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIC8vIFNldCB1cCB0aGUg
dGVybWluYXRpb24gbm90aWZpY2F0aW9uIGhhbmRsZXIgYW5kIHRoZW4gYXNrIHRoZSBjaGlsZCBw
cm9jZXNzIHRvIGNvbnRpbnVlLgorICAgICAgICBzZXRVcFRlcm1pbmF0aW9uTm90aWZpY2F0aW9u
SGFuZGxlcihwcm9jZXNzSWRlbnRpZmllcik7CisgICAgICAgIGtpbGwocHJvY2Vzc0lkZW50aWZp
ZXIsIFNJR0NPTlQpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFdlIGZhaWxlZCB0byBsYXVu
Y2guIFJlbGVhc2UgdGhlIHNlbmQgcmlnaHQuCisgICAgICAgIG1hY2hfcG9ydF9kZWFsbG9jYXRl
KG1hY2hfdGFza19zZWxmKCksIGxpc3RlbmluZ1BvcnQpOwogCi0gICAgICAgIHBvc2l4X3NwYXdu
YXR0cl9kZXN0cm95KCZhdHRyKTsKKyAgICAgICAgLy8gQW5kIHRoZSByZWNlaXZlIHJpZ2h0Lgor
ICAgICAgICBtYWNoX3BvcnRfbW9kX3JlZnMobWFjaF90YXNrX3NlbGYoKSwgbGlzdGVuaW5nUG9y
dCwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsIC0xKTsKKyAgICAKKyAgICAgICAgbGlzdGVuaW5n
UG9ydCA9IE1BQ0hfUE9SVF9OVUxMOworICAgICAgICBwcm9jZXNzSWRlbnRpZmllciA9IDA7Cisg
ICAgfQogCi0gICAgICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICAvLyBTZXQgdXAgdGhl
IHRlcm1pbmF0aW9uIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGFuZCB0aGVuIGFzayB0aGUgY2hpbGQg
cHJvY2VzcyB0byBjb250aW51ZS4KLSAgICAgICAgICAgIHNldFVwVGVybWluYXRpb25Ob3RpZmlj
YXRpb25IYW5kbGVyKHByb2Nlc3NJZGVudGlmaWVyKTsKLSAgICAgICAgICAgIGtpbGwocHJvY2Vz
c0lkZW50aWZpZXIsIFNJR0NPTlQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8g
V2UgZmFpbGVkIHRvIGxhdW5jaC4gUmVsZWFzZSB0aGUgc2VuZCByaWdodC4KLSAgICAgICAgICAg
IG1hY2hfcG9ydF9kZWFsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIGxpc3RlbmluZ1BvcnQpOwor
ICAgIC8vIFdlJ3ZlIGZpbmlzaGVkIGxhdW5jaGluZyB0aGUgcHJvY2VzcywgbWVzc2FnZSBiYWNr
IHRvIHRoZSBtYWluIHJ1biBsb29wLgorICAgIFJ1bkxvb3A6Om1haW4oKS0+ZGlzcGF0Y2goYmlu
ZChkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzRnVuY3Rpb24sIHRoYXQsIHByb2Nlc3NJZGVudGlm
aWVyLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKGxpc3RlbmluZ1BvcnQpKSk7Cit9
CiAKLSAgICAgICAgICAgIC8vIEFuZCB0aGUgcmVjZWl2ZSByaWdodC4KLSAgICAgICAgICAgIG1h
Y2hfcG9ydF9tb2RfcmVmcyhtYWNoX3Rhc2tfc2VsZigpLCBsaXN0ZW5pbmdQb3J0LCBNQUNIX1BP
UlRfUklHSFRfUkVDRUlWRSwgLTEpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBsaXN0ZW5p
bmdQb3J0ID0gTUFDSF9QT1JUX05VTEw7Ci0gICAgICAgICAgICBwcm9jZXNzSWRlbnRpZmllciA9
IDA7Ci0gICAgICAgIH0KK3ZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKK3sK
KyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKKyAgICBpZiAodHJ5
UHJlZXhpc3RpbmdQcm9jZXNzKG1fbGF1bmNoT3B0aW9ucywgdGhpcywgJlByb2Nlc3NMYXVuY2hl
cjo6ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2VzcykpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgog
Ci0gICAgLy8gV2UndmUgZmluaXNoZWQgbGF1bmNoaW5nIHRoZSBwcm9jZXNzLCBtZXNzYWdlIGJh
Y2sgdG8gdGhlIG1haW4gcnVuIGxvb3AuCi0gICAgUnVuTG9vcDo6bWFpbigpLT5kaXNwYXRjaChi
aW5kKCZQcm9jZXNzTGF1bmNoZXI6OmRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3MsIHRoaXMsIHBy
b2Nlc3NJZGVudGlmaWVyLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKGxpc3Rlbmlu
Z1BvcnQpKSk7CisgICAgYm9vbCBpc1dlYktpdERldmVsb3BtZW50QnVpbGQgPSAhW1tbW05TQnVu
ZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYktpdDIiXSBidW5kbGVQYXRo
XSBzdHJpbmdCeURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnRdIGhhc1ByZWZpeDpAIi9TeXN0ZW0v
Il07CisKKyNpZiBIQVZFKFhQQykKKyAgICBpZiAobV9sYXVuY2hPcHRpb25zLnVzZVhQQykgewor
ICAgICAgICBpZiAobV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlID09IFByb2Nlc3NMYXVuY2hl
cjo6V2ViUHJvY2VzcykgeworICAgICAgICAgICAgaWYgKGlzV2ViS2l0RGV2ZWxvcG1lbnRCdWls
ZCkKKyAgICAgICAgICAgICAgICBjcmVhdGVXZWJQcm9jZXNzU2VydmljZUZvcldlYktpdERldmVs
b3BtZW50KG1fbGF1bmNoT3B0aW9ucywgdGhpcywgJlByb2Nlc3NMYXVuY2hlcjo6ZGlkRmluaXNo
TGF1bmNoaW5nUHJvY2Vzcyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY3Jl
YXRlV2ViUHJvY2Vzc1NlcnZpY2UobV9sYXVuY2hPcHRpb25zLCB0aGlzLCAmUHJvY2Vzc0xhdW5j
aGVyOjpkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRp
ZgorCisgICAgY3JlYXRlUHJvY2VzcyhtX2xhdW5jaE9wdGlvbnMsIGlzV2ViS2l0RGV2ZWxvcG1l
bnRCdWlsZCwgdGhpcywgJlByb2Nlc3NMYXVuY2hlcjo6ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2Vz
cyk7CiB9CiAKIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjp0ZXJtaW5hdGVQcm9jZXNzKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBi
MGMwYTRjNzNlMTVmMDU1OGIyZGE2NTJmMmQxNTEwMDdkNWQ4NDQ4Li5iMTcyNzJjYjA3ODJmMzVm
ZWU4MWEyYmZlZTU0ODRiOWZkODAyNzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNyw2ICsxNyw3IEBACiAJCQlkZXBlbmRl
bmNpZXMgPSAoCiAJCQkJMUE1MERCM0MxMTBBM0MxOTAwMEQzRkU1IC8qIFBCWFRhcmdldERlcGVu
ZGVuY3kgKi8sCiAJCQkJQkNERTBBQzExMzI3MjcxMjAwMTI1OUZCIC8qIFBCWFRhcmdldERlcGVu
ZGVuY3kgKi8sCisJCQkJQkNBRTlERkQxNjBDMEFCMDAwQTMzMjE3IC8qIFBCWFRhcmdldERlcGVu
ZGVuY3kgKi8sCiAJCQkJQkNBOEQ0NjgxNUJDRTBENjAwOURDMUYxIC8qIFBCWFRhcmdldERlcGVu
ZGVuY3kgKi8sCiAJCQkpOwogCQkJbmFtZSA9IEFsbDsKQEAgLTU4MSw3ICs1ODIsNiBAQAogCQlC
QzMzREQ2ODEyMzg0NjQ2MDAzNjBGM0YgLyogV2ViTnVtYmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMzREQ2NzEyMzg0NjQ2MDAzNjBGM0YgLyog
V2ViTnVtYmVyLmggKi87IH07CiAJCUJDMzNFMEQxMTI0MDhFODYwMDM2MEYzRiAvKiBJbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzMzRTBDRjEyNDA4RTg2MDAzNjBGM0YgLyogSW5qZWN0ZWRCdW5kbGVSYW5n
ZUhhbmRsZS5oICovOyB9OwogCQlCQzMzRTBEMjEyNDA4RTg2MDAzNjBGM0YgLyogSW5qZWN0ZWRC
dW5kbGVSYW5nZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzMzRTBEMDEyNDA4RTg2MDAzNjBGM0YgLyogSW5qZWN0ZWRCdW5kbGVSYW5n
ZUhhbmRsZS5jcHAgKi87IH07Ci0JCUJDM0RFNDcyMTVBOTE3NjQwMDhEMjZGQyAvKiBNYWluTWFj
U2VydmljZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDM0RFNDcxMTVBOTE3NjQwMDhEMjZGQyAvKiBNYWluTWFjU2VydmljZS5tbSAqLzsgfTsKIAkJ
QkM0MDc1RjMxMjRGRjAyNzAwNjhGMjBBIC8qIFdLQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM0MDc1RDcxMjRGRjAyNzAwNjhGMjBBIC8q
IFdLQXJyYXkuY3BwICovOyB9OwogCQlCQzQwNzVGNDEyNEZGMDI3MDA2OEYyMEEgLyogV0tBcnJh
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM0MDc1
RDgxMjRGRjAyNzAwNjhGMjBBIC8qIFdLQXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzQwNzVGNTEyNEZGMDI3MDA2OEYyMEEgLyogV0tD
ZXJ0aWZpY2F0ZUluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkM0MDc1RDkxMjRGRjAyNzAwNjhGMjBBIC8qIFdLQ2VydGlmaWNhdGVJbmZvLmNw
cCAqLzsgfTsKQEAgLTcyNSw5ICs3MjUsMTUgQEAKIAkJQkNBOEM2QTkxMUUzQkE1RjAwODEyRkI3
IC8qIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBOEM2QTcxMUUzQkE1RjAwODEyRkI3IC8qIElu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oICovOyB9OwogCQlCQ0E4QzZBRjExRTNDMDg3
MDA4MTJGQjcgLyogSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBOEM2QUQxMUUzQzA4NzAwODEyRkI3
IC8qIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcCAqLzsgfTsKIAkJQkNBOEM2QjAxMUUz
QzA4NzAwODEyRkI3IC8qIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0E4QzZBRTExRTNDMDg3MDA4MTJG
QjcgLyogSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaCAqLzsgfTsKLQkJQkNBOEQ0NkMxNUJD
RTM0QjAwOURDMUYxIC8qIGNvbS5hcHBsZS5XZWJLaXQyLldlYktpdDJTZXJ2aWNlLnhwYyBpbiBD
b3B5RmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzREU0NjYxNUE5
MTc2MzAwOEQyNkZDIC8qIGNvbS5hcHBsZS5XZWJLaXQyLldlYktpdDJTZXJ2aWNlLnhwYyAqLzsg
fTsKKwkJQkNBOEQ0NkMxNUJDRTM0QjAwOURDMUYxIC8qIGNvbS5hcHBsZS5XZWJLaXQyLldlYlBy
b2Nlc3NTZXJ2aWNlLnhwYyBpbiBDb3B5RmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMzREU0NjYxNUE5MTc2MzAwOEQyNkZDIC8qIGNvbS5hcHBsZS5XZWJLaXQyLldl
YlByb2Nlc3NTZXJ2aWNlLnhwYyAqLzsgfTsKIAkJQkNBQzExMUYxMkM5MkMxRjAwQjA4RUVFIC8q
IFdlYkRhdGFiYXNlTWFuYWdlclByb3h5Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0FDMTExRDEyQzkyQzFGMDBCMDhFRUUgLyogV2ViRGF0
YWJhc2VNYW5hZ2VyUHJveHlDbGllbnQuaCAqLzsgfTsKIAkJQkNBQzExMjAxMkM5MkMxRjAwQjA4
RUVFIC8qIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUMxMTFFMTJDOTJDMUYwMEIwOEVFRSAv
KiBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eUNsaWVudC5jcHAgKi87IH07CisJCUJDQUU5REZCMTYw
QzBBQTEwMEEzMzIxNyAvKiBjb20uYXBwbGUuV2ViUHJvY2Vzcy5zYiBpbiBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5NjdFMzcxNTBBQjVFMjAwQzczMTY5
IC8qIGNvbS5hcHBsZS5XZWJQcm9jZXNzLnNiICovOyB9OworCQlCQ0FFOURGRTE2MEMwQUM1MDBB
MzMyMTcgLyogY29tLmFwcGxlLldlYktpdDIuV2ViUHJvY2Vzc1NlcnZpY2VGb3JXZWJLaXREZXZl
bG9wbWVudC54cGMgaW4gQ29weUZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDQUU5REU5MTYwQzA5NzQwMEEzMzIxNyAvKiBjb20uYXBwbGUuV2ViS2l0Mi5XZWJQcm9j
ZXNzU2VydmljZUZvcldlYktpdERldmVsb3BtZW50LnhwYyAqLzsgfTsKKwkJQkNBRTlFMDUxNjBD
MTM3ODAwQTMzMjE3IC8qIFdlYlByb2Nlc3NTZXJ2aWNlRm9yV2ViS2l0RGV2ZWxvcG1lbnRNYWlu
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBRTlF
MDQxNjBDMTM3ODAwQTMzMjE3IC8qIFdlYlByb2Nlc3NTZXJ2aWNlRm9yV2ViS2l0RGV2ZWxvcG1l
bnRNYWluLm1tICovOyB9OworCQlCQ0FFOUUwNzE2MEMxMzlBMDBBMzMyMTcgLyogV2ViUHJvY2Vz
c1NlcnZpY2VNYWluLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkNBRTlFMDYxNjBDMTM5QTAwQTMzMjE3IC8qIFdlYlByb2Nlc3NTZXJ2aWNlTWFpbi5t
bSAqLzsgfTsKKwkJQkNBRTlFMDgxNjBDMUMwNzAwQTMzMjE3IC8qIFdlYktpdDIuZnJhbWV3b3Jr
IGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOERDMkVG
NUIwNDg2QTY5NDAwOThCMjE2IC8qIFdlYktpdDIuZnJhbWV3b3JrICovOyB9OworCQlCQ0FFOUUw
OTE2MEMyMzNCMDBBMzMyMTcgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzNERTQ2ODE1QTkxNzYzMDA4RDI2
RkMgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07CiAJCUJDQjBBRDMzMTIyRjI4NTgwMEIx
MzQxRSAvKiBNdXRhYmxlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNDODA0OUQxMjJGMEQ2QjAwMTAzNTI5IC8qIE11dGFibGVBcnJheS5j
cHAgKi87IH07CiAJCUJDQjBBRDM0MTIyRjI4NTgwMEIxMzQxRSAvKiBNdXRhYmxlQXJyYXkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQzgwNDlFMTIy
RjBENkIwMDEwMzUyOSAvKiBNdXRhYmxlQXJyYXkuaCAqLzsgfTsKIAkJQkNCMEFFRTkxMjJGNTNF
MzAwQjEzNDFFIC8qIE11dGFibGVEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IwQUVFNzEyMkY1M0UzMDBCMTM0MUUgLyogTXV0YWJs
ZURpY3Rpb25hcnkuaCAqLzsgfTsKQEAgLTc5Nyw5ICs4MDMsOCBAQAogCQlCQ0RCODZDMTEyMDBG
Qjk3MDA3MjU0QkUgLyogV2ViVVJMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0RCODZDMDEyMDBGQjk3MDA3MjU0QkUgLyogV2ViVVJMLmggKi87IH07
CiAJCUJDREMzMDg3MTVGRDZBOEIwMDZCNjY5NSAvKiBXZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24u
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0RDMzA4
NTE1RkQ2QThCMDA2QjY2OTUgLyogV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLm1tICovOyB9Owog
CQlCQ0RDMzA4ODE1RkQ2QThCMDA2QjY2OTUgLyogV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0RDMzA4NjE1
RkQ2QThCMDA2QjY2OTUgLyogV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLmggKi87IH07Ci0JCUJD
REMzMDhCMTVGRDZDRDEwMDZCNjY5NSAvKiBXZWJQcm9jZXNzWFBDU2VydmljZU1haW4ubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0RDMzA4OTE1RkQ2
Q0QxMDA2QjY2OTUgLyogV2ViUHJvY2Vzc1hQQ1NlcnZpY2VNYWluLm1tICovOyB9OwotCQlCQ0RD
MzA4QzE1RkQ2Q0QxMDA2QjY2OTUgLyogV2ViUHJvY2Vzc1hQQ1NlcnZpY2VNYWluLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0RDMzA4QTE1RkQ2Q0Qx
MDA2QjY2OTUgLyogV2ViUHJvY2Vzc1hQQ1NlcnZpY2VNYWluLmggKi87IH07Ci0JCUJDREMzMDhF
MTVGREI5QTcwMDZCNjY5NSAvKiBXZWJLaXQyLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhEQzJFRjVCMDQ4NkE2OTQwMDk4QjIxNiAv
KiBXZWJLaXQyLmZyYW1ld29yayAqLzsgfTsKKwkJQkNEQzMwOEIxNUZENkNEMTAwNkI2Njk1IC8q
IFdlYlByb2Nlc3NTZXJ2aWNlRW50cnlQb2ludHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0RDMzA4OTE1RkQ2Q0QxMDA2QjY2OTUgLyogV2ViUHJv
Y2Vzc1NlcnZpY2VFbnRyeVBvaW50cy5tbSAqLzsgfTsKKwkJQkNEQzMwOEMxNUZENkNEMTAwNkI2
Njk1IC8qIFdlYlByb2Nlc3NTZXJ2aWNlRW50cnlQb2ludHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDREMzMDhBMTVGRDZDRDEwMDZCNjY5NSAvKiBX
ZWJQcm9jZXNzU2VydmljZUVudHJ5UG9pbnRzLmggKi87IH07CiAJCUJDRERCMzE3MTI0RUJEMTMw
MDQ4RDEzQyAvKiBXS0Jhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDRERCMzE2MTI0RUJEMTMwMDQ4RDEzQyAvKiBXS0Jhc2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCUJDRERCMzJCMTI0RUMyQUIw
MDQ4RDEzQyAvKiBXS1NoYXJlZEFQSUNhc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDRERCMzJBMTI0RUMyQUIwMDQ4RDEzQyAvKiBXS1NoYXJlZEFQ
SUNhc3QuaCAqLzsgfTsKIAkJQkNEREIzMkQxMjRFQzJFMTAwNDhEMTNDIC8qIFdLQVBJQ2FzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEREIzMkMx
MjRFQzJFMTAwNDhEMTNDIC8qIFdLQVBJQ2FzdC5oICovOyB9OwpAQCAtOTc4LDYgKzk4MywxMyBA
QAogCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSBCQzNERTQ2NTE1QTkxNzYzMDA4RDI2RkM7CiAJ
CQlyZW1vdGVJbmZvID0gV2ViS2l0MlNlcnZpY2U7CiAJCX07CisJCUJDQUU5REZDMTYwQzBBQjAw
MEEzMzIxNyAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250
YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAy
QUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3Rl
R2xvYmFsSURTdHJpbmcgPSBCQ0FFOURFODE2MEMwOTc0MDBBMzMyMTc7CisJCQlyZW1vdGVJbmZv
ID0gV2ViUHJvY2Vzc1NlcnZpY2VGb3JXZWJLaXREZXZlbG9wbWVudDsKKwkJfTsKIAkJQkNERTA5
MzUxMzI3MjQ5NjAwMTI1OUZCIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKIAkJCWlz
YSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKIAkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkw
RkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKQEAgLTEwNDEsNyArMTA1Myw4
IEBACiAJCQlkc3RQYXRoID0gV2ViS2l0Mi5mcmFtZXdvcmsvWFBDU2VydmljZXM7CiAJCQlkc3RT
dWJmb2xkZXJTcGVjID0gMTsKIAkJCWZpbGVzID0gKAotCQkJCUJDQThENDZDMTVCQ0UzNEIwMDlE
QzFGMSAvKiBjb20uYXBwbGUuV2ViS2l0Mi5XZWJLaXQyU2VydmljZS54cGMgaW4gQ29weUZpbGVz
ICovLAorCQkJCUJDQThENDZDMTVCQ0UzNEIwMDlEQzFGMSAvKiBjb20uYXBwbGUuV2ViS2l0Mi5X
ZWJQcm9jZXNzU2VydmljZS54cGMgaW4gQ29weUZpbGVzICovLAorCQkJCUJDQUU5REZFMTYwQzBB
QzUwMEEzMzIxNyAvKiBjb20uYXBwbGUuV2ViS2l0Mi5XZWJQcm9jZXNzU2VydmljZUZvcldlYktp
dERldmVsb3BtZW50LnhwYyBpbiBDb3B5RmlsZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xNjYzLDEwICsxNjc2LDggQEAK
IAkJQkMzM0RENjcxMjM4NDY0NjAwMzYwRjNGIC8qIFdlYk51bWJlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOdW1iZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkMzM0UwQ0YxMjQwOEU4NjAwMzYwRjNGIC8qIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5k
bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVSYW5n
ZUhhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzMzRTBEMDEyNDA4RTg2
MDAzNjBGM0YgLyogSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkMzREU0NjYxNUE5MTc2MzAwOEQyNkZDIC8qIGNv
bS5hcHBsZS5XZWJLaXQyLldlYktpdDJTZXJ2aWNlLnhwYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gd3JhcHBlci5jZmJ1bmRsZTsgaW5jbHVkZUluSW5k
ZXggPSAwOyBwYXRoID0gY29tLmFwcGxlLldlYktpdDIuV2ViS2l0MlNlcnZpY2UueHBjOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQlCQzNERTQ2NjE1QTkxNzYzMDA4RDI2
RkMgLyogY29tLmFwcGxlLldlYktpdDIuV2ViUHJvY2Vzc1NlcnZpY2UueHBjICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSB3cmFwcGVyLmNmYnVuZGxlOyBp
bmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBjb20uYXBwbGUuV2ViS2l0Mi5XZWJQcm9jZXNzU2Vy
dmljZS54cGM7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUJDM0RFNDY4
MTVBOTE3NjMwMDhEMjZGQyAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1l
ID0gRm91bmRhdGlvbi5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0ZvdW5kYXRpb24uZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKLQkJQkMzREU0
NkMxNUE5MTc2MzAwOEQyNkZDIC8qIEluZm8ucGxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnhtbDsgbmFtZSA9IEluZm8ucGxp
c3Q7IHBhdGggPSBXZWJLaXQyU2VydmljZS9JbmZvLnBsaXN0OyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlCQzNERTQ3MTE1QTkxNzY0MDA4RDI2RkMgLyogTWFpbk1hY1NlcnZpY2UubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBNYWluTWFjU2VydmljZS5tbTsgcGF0aCA9IFdlYktpdDJT
ZXJ2aWNlL01haW5NYWNTZXJ2aWNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
QzQwNzVENzEyNEZGMDI3MDA2OEYyMEEgLyogV0tBcnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXS0FycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkM0MDc1RDgxMjRGRjAyNzAwNjhGMjBBIC8qIFdLQXJyYXkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQzQwNzVEOTEyNEZGMDI3MDA2OEYyMEEgLyogV0tDZXJ0aWZpY2F0ZUluZm8uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tDZXJ0aWZpY2F0ZUluZm8uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgwOSw5ICsxODIwLDE2IEBACiAJCUJD
QThDNkE3MTFFM0JBNUYwMDgxMkZCNyAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQThDNkFEMTFFM0Mw
ODcwMDgxMkZCNyAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQThDNkFFMTFFM0MwODcwMDgxMkZCNyAv
KiBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlCQ0E4RDQ2QTE1QkNFMTYwMDA5REMxRjEgLyogV2ViS2l0MlNlcnZpY2UueGNj
b25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnhjY29uZmlnOyBwYXRoID0gV2ViS2l0MlNlcnZpY2UueGNjb25maWc7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUJDQThENDZBMTVCQ0UxNjAwMDlEQzFGMSAvKiBXZWJQcm9jZXNz
U2VydmljZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBXZWJQcm9jZXNzU2VydmljZS54Y2NvbmZp
Zzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBQzExMUQxMkM5MkMxRjAwQjA4RUVF
IC8qIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkRhdGFiYXNlTWFuYWdlclByb3h5Q2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDQUMxMTFFMTJDOTJDMUYwMEIwOEVFRSAvKiBXZWJEYXRhYmFz
ZU1hbmFnZXJQcm94eUNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eUNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJDQUU5REU5MTYwQzA5NzQwMEEzMzIxNyAvKiBjb20uYXBwbGUuV2ViS2l0
Mi5XZWJQcm9jZXNzU2VydmljZUZvcldlYktpdERldmVsb3BtZW50LnhwYyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gd3JhcHBlci5jZmJ1bmRsZTsgaW5j
bHVkZUluSW5kZXggPSAwOyBwYXRoID0gY29tLmFwcGxlLldlYktpdDIuV2ViUHJvY2Vzc1NlcnZp
Y2VGb3JXZWJLaXREZXZlbG9wbWVudC54cGM7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CisJCUJDQUU5REVGMTYwQzA5NzUwMEEzMzIxNyAvKiBJbmZvLnBsaXN0ICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC54bWw7
IHBhdGggPSBJbmZvLnBsaXN0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0FFOURG
RjE2MEMwQjQxMDBBMzMyMTcgLyogQ29tcGlsZXJWZXJzaW9uLnhjY29uZmlnICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0
aCA9IENvbXBpbGVyVmVyc2lvbi54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQkNBRTlFMDAxNjBDMEI0MTAwQTMzMjE3IC8qIFdlYlByb2Nlc3NTZXJ2aWNlRm9yV2ViS2l0
RGV2ZWxvcG1lbnQueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gV2ViUHJvY2Vzc1NlcnZpY2VGb3JX
ZWJLaXREZXZlbG9wbWVudC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QkNBRTlFMDExNjBDMTJEQTAwQTMzMjE3IC8qIEluZm8ucGxpc3QgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnhtbDsgbmFtZSA9IElu
Zm8ucGxpc3Q7IHBhdGggPSBXZWJQcm9jZXNzU2VydmljZS9JbmZvLnBsaXN0OyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlCQ0FFOUUwNDE2MEMxMzc4MDBBMzMyMTcgLyogV2ViUHJvY2Vz
c1NlcnZpY2VGb3JXZWJLaXREZXZlbG9wbWVudE1haW4ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQcm9jZXNzU2VydmljZUZvcldlYktpdERldmVsb3BtZW50
TWFpbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNBRTlFMDYxNjBDMTM5QTAw
QTMzMjE3IC8qIFdlYlByb2Nlc3NTZXJ2aWNlTWFpbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IFdlYlByb2Nlc3NTZXJ2aWNlTWFpbi5tbTsgcGF0aCA9IFdlYlBy
b2Nlc3NTZXJ2aWNlL1dlYlByb2Nlc3NTZXJ2aWNlTWFpbi5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkNCMEFFRTcxMjJGNTNFMzAwQjEzNDFFIC8qIE11dGFibGVEaWN0aW9uYXJ5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE11dGFibGVEaWN0aW9uYXJ5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjBBRUU4MTIyRjUzRTMwMEIxMzQxRSAv
KiBNdXRhYmxlRGljdGlvbmFyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNdXRhYmxlRGljdGlvbmFyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDQjBCMERCMTIzMDVBMjUwMEIxMzQxRSAvKiBXZWJDb250ZXh0VXNlck1lc3NhZ2VDb2RlcnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29udGV4dFVzZXJNZXNzYWdl
Q29kZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODgzLDggKzE5MDEsOCBA
QAogCQlCQ0RCODZDMDEyMDBGQjk3MDA3MjU0QkUgLyogV2ViVVJMLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlVSTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQ0RDMzA4NTE1RkQ2QThCMDA2QjY2OTUgLyogV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHJvY2Vzc0luaXRp
YWxpemF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0RDMzA4NjE1RkQ2
QThCMDA2QjY2OTUgLyogV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlByb2Nlc3NJbml0aWFsaXphdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlCQ0RDMzA4OTE1RkQ2Q0QxMDA2QjY2OTUgLyogV2ViUHJvY2Vz
c1hQQ1NlcnZpY2VNYWluLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViUHJvY2Vzc1hQQ1NlcnZpY2VNYWluLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlCQ0RDMzA4QTE1RkQ2Q0QxMDA2QjY2OTUgLyogV2ViUHJvY2Vzc1hQQ1NlcnZpY2VNYWlu
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlByb2Nlc3NYUENTZXJ2aWNl
TWFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0RDMzA4OTE1RkQ2Q0QxMDA2
QjY2OTUgLyogV2ViUHJvY2Vzc1NlcnZpY2VFbnRyeVBvaW50cy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlByb2Nlc3NTZXJ2aWNlRW50cnlQb2ludHMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDREMzMDhBMTVGRDZDRDEwMDZCNjY5NSAv
KiBXZWJQcm9jZXNzU2VydmljZUVudHJ5UG9pbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlByb2Nlc3NTZXJ2aWNlRW50cnlQb2ludHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkNEREIzMTYxMjRFQkQxMzAwNDhEMTNDIC8qIFdLQmFzZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Jhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkNEREIzMkExMjRFQzJBQjAwNDhEMTNDIC8qIFdLU2hhcmVkQVBJQ2FzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1NoYXJlZEFQSUNhc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNEREIzMkMxMjRFQzJFMTAwNDhEMTNDIC8qIFdL
QVBJQ2FzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0FQSUNhc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwODAsMTEgKzIwOTgsMTkgQEAKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKKwkJQkNB
RTlERTYxNjBDMDk3NDAwQTMzMjE3IC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhG
cmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJ
CQlmaWxlcyA9ICgKKwkJCQlCQ0FFOUUwOTE2MEMyMzNCMDBBMzMyMTcgLyogRm91bmRhdGlvbi5m
cmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJQkNEQzMwOEQxNUZEQjk5QTAwNkI2Njk1IC8q
IEZyYW1ld29ya3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQlCQ0RDMzA4
RTE1RkRCOUE3MDA2QjY2OTUgLyogV2ViS2l0Mi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywK
KwkJCQlCQ0FFOUUwODE2MEMxQzA3MDBBMzMyMTcgLyogV2ViS2l0Mi5mcmFtZXdvcmsgaW4gRnJh
bWV3b3JrcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKQEAgLTIwOTksNyArMjEyNSw4IEBACiAJCQkJOERDMkVGNUIwNDg2QTY5NDAw
OThCMjE2IC8qIFdlYktpdDIuZnJhbWV3b3JrICovLAogCQkJCTFBNTBEQjFFMTEwQTNCREMwMDBE
M0ZFNSAvKiBXZWJQcm9jZXNzLmFwcCAqLywKIAkJCQk1MTAwMzFGNjEzNzlDQUNCMDBDOERGRTQg
LyogV2ViUHJvY2Vzc1NoaW0uZHlsaWIgKi8sCi0JCQkJQkMzREU0NjYxNUE5MTc2MzAwOEQyNkZD
IC8qIGNvbS5hcHBsZS5XZWJLaXQyLldlYktpdDJTZXJ2aWNlLnhwYyAqLywKKwkJCQlCQzNERTQ2
NjE1QTkxNzYzMDA4RDI2RkMgLyogY29tLmFwcGxlLldlYktpdDIuV2ViUHJvY2Vzc1NlcnZpY2Uu
eHBjICovLAorCQkJCUJDQUU5REU5MTYwQzA5NzQwMEEzMzIxNyAvKiBjb20uYXBwbGUuV2ViS2l0
Mi5XZWJQcm9jZXNzU2VydmljZUZvcldlYktpdERldmVsb3BtZW50LnhwYyAqLywKIAkJCSk7CiAJ
CQluYW1lID0gUHJvZHVjdHM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjE0NSw3
ICsyMTcyLDggQEAKIAkJCQlCQzEyMkZBNTEzMjcwODVEMDBGN0VBQzEgLyogUGx1Z2luUHJvY2Vz
cyAqLywKIAkJCQlCQzhBNTAwRTExNzY1QUQ0MDA3NTc1NzMgLyogV2ViS2l0MiAqLywKIAkJCQlC
QzhBNTAwRjExNzY1QUUzMDA3NTc1NzMgLyogV2ViUHJvY2VzcyAqLywKLQkJCQlCQzNERTQ3ODE1
QTkxN0M2MDA4RDI2RkMgLyogV2ViS2l0MlNlcnZpY2UgKi8sCisJCQkJQkNBRTlERUQxNjBDMDk3
NDAwQTMzMjE3IC8qIFdlYlByb2Nlc3NTZXJ2aWNlRm9yV2ViS2l0RGV2ZWxvcG1lbnQgKi8sCisJ
CQkJQkMzREU0NzgxNUE5MTdDNjAwOEQyNkZDIC8qIFdlYlByb2Nlc3NTZXJ2aWNlICovLAogCQkJ
CTZEOEE5MUE1MTFGMEVGRDEwMEREMDFGRSAvKiBjb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbiAq
LywKIAkJCQkwODlDMTY2NkZFODQxMTU4QzAyQUFDMDcgLyogSW5mb1BsaXN0LnN0cmluZ3MgKi8s
CiAJCQkpOwpAQCAtMjI0MCw2ICsyMjY4LDcgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTFBNEY5
NzZBMTAwRTdCNjYwMDYzN0ExOCAvKiBCYXNlLnhjY29uZmlnICovLAogCQkJCTVEQUQ3M0YxMTE2
RkY5MEMwMEVFNTM5NiAvKiBCYXNlVGFyZ2V0LnhjY29uZmlnICovLAorCQkJCUJDQUU5REZGMTYw
QzBCNDEwMEEzMzIxNyAvKiBDb21waWxlclZlcnNpb24ueGNjb25maWcgKi8sCiAJCQkJMUE0Rjk3
NkIxMDBFN0I2NjAwNjM3QTE4IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLywKIAkJCQkxQTRG
OTc2QzEwMEU3QjY2MDA2MzdBMTggLyogRmVhdHVyZURlZmluZXMueGNjb25maWcgKi8sCiAJCQkJ
QkMxMjJGQTMxMzI3MDdGMzAwRjdFQUMxIC8qIFBsdWdpblByb2Nlc3MueGNjb25maWcgKi8sCkBA
IC0yMjQ3LDcgKzIyNzYsOCBAQAogCQkJCTFBNEY5NzZFMTAwRTdCNjYwMDYzN0ExOCAvKiBWZXJz
aW9uLnhjY29uZmlnICovLAogCQkJCUJDQjg2RjRCMTE2QUFBQ0QwMENFMjBCNyAvKiBXZWJLaXQy
LnhjY29uZmlnICovLAogCQkJCTVEQUQ3Mjk0MTE2RkY3MEIwMEVFNTM5NiAvKiBXZWJQcm9jZXNz
LnhjY29uZmlnICovLAotCQkJCUJDQThENDZBMTVCQ0UxNjAwMDlEQzFGMSAvKiBXZWJLaXQyU2Vy
dmljZS54Y2NvbmZpZyAqLywKKwkJCQlCQ0E4RDQ2QTE1QkNFMTYwMDA5REMxRjEgLyogV2ViUHJv
Y2Vzc1NlcnZpY2UueGNjb25maWcgKi8sCisJCQkJQkNBRTlFMDAxNjBDMEI0MTAwQTMzMjE3IC8q
IFdlYlByb2Nlc3NTZXJ2aWNlRm9yV2ViS2l0RGV2ZWxvcG1lbnQueGNjb25maWcgKi8sCiAJCQkp
OwogCQkJcGF0aCA9IENvbmZpZ3VyYXRpb25zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTIyODcsOCArMjMxNyw4IEBACiAJCQkJMUE2RkEwMUQxMUUxNTI2MzAwREIxMzcxIC8qIFdl
YlByb2Nlc3NNYWluTWFjLm1tICovLAogCQkJCTUxMUY4QTc3MTM4QjQ2MDkwMEE5NUY0NCAvKiBX
ZWJQcm9jZXNzU2hpbS5oICovLAogCQkJCTUxMUY4QTc4MTM4QjQ2MDkwMEE5NUY0NCAvKiBXZWJQ
cm9jZXNzU2hpbS5tbSAqLywKLQkJCQlCQ0RDMzA4QTE1RkQ2Q0QxMDA2QjY2OTUgLyogV2ViUHJv
Y2Vzc1hQQ1NlcnZpY2VNYWluLmggKi8sCi0JCQkJQkNEQzMwODkxNUZENkNEMTAwNkI2Njk1IC8q
IFdlYlByb2Nlc3NYUENTZXJ2aWNlTWFpbi5tbSAqLywKKwkJCQlCQ0RDMzA4QTE1RkQ2Q0QxMDA2
QjY2OTUgLyogV2ViUHJvY2Vzc1NlcnZpY2VFbnRyeVBvaW50cy5oICovLAorCQkJCUJDREMzMDg5
MTVGRDZDRDEwMDZCNjY5NSAvKiBXZWJQcm9jZXNzU2VydmljZUVudHJ5UG9pbnRzLm1tICovLAog
CQkJKTsKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjY1
NCw3ICsyNjg0LDYgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJ
MUE2RkEzMTAxMUUzOTIxRTAwREIxMzcxIC8qIE1haW5NYWNQcm9jZXNzLmNwcCAqLywKLQkJCQlC
QzNERTQ3MTE1QTkxNzY0MDA4RDI2RkMgLyogTWFpbk1hY1NlcnZpY2UubW0gKi8sCiAJCQkpOwog
CQkJbmFtZSA9ICJPdGhlciBTb3VyY2VzIjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBA
IC0zNDEzLDEyICszNDQyLDEzIEBACiAJCQl0YWJXaWR0aCA9IDg7CiAJCQl1c2VzVGFicyA9IDA7
CiAJCX07Ci0JCUJDM0RFNDc4MTVBOTE3QzYwMDhEMjZGQyAvKiBXZWJLaXQyU2VydmljZSAqLyA9
IHsKKwkJQkMzREU0NzgxNUE5MTdDNjAwOEQyNkZDIC8qIFdlYlByb2Nlc3NTZXJ2aWNlICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlCQzNERTQ2QzE1QTkx
NzYzMDA4RDI2RkMgLyogSW5mby5wbGlzdCAqLywKKwkJCQlCQ0FFOUUwMTE2MEMxMkRBMDBBMzMy
MTcgLyogSW5mby5wbGlzdCAqLywKKwkJCQlCQ0FFOUUwNjE2MEMxMzlBMDBBMzMyMTcgLyogV2Vi
UHJvY2Vzc1NlcnZpY2VNYWluLm1tICovLAogCQkJKTsKLQkJCW5hbWUgPSBXZWJLaXQyU2Vydmlj
ZTsKKwkJCW5hbWUgPSBXZWJQcm9jZXNzU2VydmljZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CiAJCX07CiAJCUJDNDA3NUQ1MTI0RkVGRkEwMDY4RjIwQSAvKiBjZiAqLyA9IHsKQEAgLTM0
OTYsNiArMzUyNiwxNSBAQAogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CiAJCX07CisJCUJDQUU5REVEMTYwQzA5NzQwMEEzMzIxNyAvKiBXZWJQcm9jZXNzU2Vydmlj
ZUZvcldlYktpdERldmVsb3BtZW50ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQlCQ0FFOURFRjE2MEMwOTc1MDBBMzMyMTcgLyogSW5mby5wbGlzdCAqLywK
KwkJCQlCQ0FFOUUwNDE2MEMxMzc4MDBBMzMyMTcgLyogV2ViUHJvY2Vzc1NlcnZpY2VGb3JXZWJL
aXREZXZlbG9wbWVudE1haW4ubW0gKi8sCisJCQkpOworCQkJcGF0aCA9IFdlYlByb2Nlc3NTZXJ2
aWNlRm9yV2ViS2l0RGV2ZWxvcG1lbnQ7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OwogCQlCQ0JBQUM1ODE0NEUzOEI5MDA1M0Y4MkYgLyogV0tWaWV3IERldGFpbHMgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtNDI2Nyw3ICs0MzA2LDcgQEAK
IAkJCQkzRjg3QjlDMDE1ODk0MEQ4MDA5MEZGNjIgLyogV2ViQ29sb3JDaG9vc2VyUHJveHkuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDNTk1NDg5MTVDNzg2ODUwMEZEMUUzRSAvKiBXZWJLaXQyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQ0RDMzA4ODE1RkQ2QThCMDA2QjY2OTUgLyogV2ViUHJvY2Vz
c0luaXRpYWxpemF0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQlCQ0RDMzA4QzE1RkQ2Q0QxMDA2
QjY2OTUgLyogV2ViUHJvY2Vzc1hQQ1NlcnZpY2VNYWluLmggaW4gSGVhZGVycyAqLywKKwkJCQlC
Q0RDMzA4QzE1RkQ2Q0QxMDA2QjY2OTUgLyogV2ViUHJvY2Vzc1NlcnZpY2VFbnRyeVBvaW50cy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkBAIC00MzU1LDkgKzQzOTQsOSBAQAogCQkJcHJvZHVjdFJlZmVyZW5j
ZSA9IDhEQzJFRjVCMDQ4NkE2OTQwMDk4QjIxNiAvKiBXZWJLaXQyLmZyYW1ld29yayAqLzsKIAkJ
CXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUuZnJhbWV3b3JrIjsKIAkJfTsK
LQkJQkMzREU0NjUxNUE5MTc2MzAwOEQyNkZDIC8qIFdlYktpdDJTZXJ2aWNlICovID0geworCQlC
QzNERTQ2NTE1QTkxNzYzMDA4RDI2RkMgLyogV2ViUHJvY2Vzc1NlcnZpY2UgKi8gPSB7CiAJCQlp
c2EgPSBQQlhOYXRpdmVUYXJnZXQ7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gQkMzREU0
NzYxNUE5MTc2NDAwOEQyNkZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0
aXZlVGFyZ2V0ICJXZWJLaXQyU2VydmljZSIgKi87CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0
ID0gQkMzREU0NzYxNUE5MTc2NDAwOEQyNkZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBm
b3IgUEJYTmF0aXZlVGFyZ2V0ICJXZWJQcm9jZXNzU2VydmljZSIgKi87CiAJCQlidWlsZFBoYXNl
cyA9ICgKIAkJCQlCQzNERTQ2MjE1QTkxNzYzMDA4RDI2RkMgLyogU291cmNlcyAqLywKIAkJCQlC
Q0RDMzA4RDE1RkRCOTlBMDA2QjY2OTUgLyogRnJhbWV3b3JrcyAqLywKQEAgLTQzNjcsOSArNDQw
NiwyNiBAQAogCQkJKTsKIAkJCWRlcGVuZGVuY2llcyA9ICgKIAkJCSk7Ci0JCQluYW1lID0gV2Vi
S2l0MlNlcnZpY2U7CisJCQluYW1lID0gV2ViUHJvY2Vzc1NlcnZpY2U7CiAJCQlwcm9kdWN0TmFt
ZSA9IFdlYktpdDJTZXJ2aWNlOwotCQkJcHJvZHVjdFJlZmVyZW5jZSA9IEJDM0RFNDY2MTVBOTE3
NjMwMDhEMjZGQyAvKiBjb20uYXBwbGUuV2ViS2l0Mi5XZWJLaXQyU2VydmljZS54cGMgKi87CisJ
CQlwcm9kdWN0UmVmZXJlbmNlID0gQkMzREU0NjYxNUE5MTc2MzAwOEQyNkZDIC8qIGNvbS5hcHBs
ZS5XZWJLaXQyLldlYlByb2Nlc3NTZXJ2aWNlLnhwYyAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNv
bS5hcHBsZS5wcm9kdWN0LXR5cGUuYnVuZGxlIjsKKwkJfTsKKwkJQkNBRTlERTgxNjBDMDk3NDAw
QTMzMjE3IC8qIFdlYlByb2Nlc3NTZXJ2aWNlRm9yV2ViS2l0RGV2ZWxvcG1lbnQgKi8gPSB7CisJ
CQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gQkNB
RTlERjYxNjBDMDk3NTAwQTMzMjE3IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJY
TmF0aXZlVGFyZ2V0ICJXZWJQcm9jZXNzU2VydmljZUZvcldlYktpdERldmVsb3BtZW50IiAqLzsK
KwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCUJDQUU5REU1MTYwQzA5NzQwMEEzMzIxNyAvKiBTb3Vy
Y2VzICovLAorCQkJCUJDQUU5REU2MTYwQzA5NzQwMEEzMzIxNyAvKiBGcmFtZXdvcmtzICovLAor
CQkJCUJDQUU5REU3MTYwQzA5NzQwMEEzMzIxNyAvKiBSZXNvdXJjZXMgKi8sCisJCQkpOworCQkJ
YnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkpOworCQkJbmFt
ZSA9IFdlYlByb2Nlc3NTZXJ2aWNlRm9yV2ViS2l0RGV2ZWxvcG1lbnQ7CisJCQlwcm9kdWN0TmFt
ZSA9IFdlYlByb2Nlc3NTZXJ2aWNlRm9yV2ViS2l0RGV2ZWxvcG1lbnQ7CisJCQlwcm9kdWN0UmVm
ZXJlbmNlID0gQkNBRTlERTkxNjBDMDk3NDAwQTMzMjE3IC8qIGNvbS5hcHBsZS5XZWJLaXQyLldl
YlByb2Nlc3NTZXJ2aWNlRm9yV2ViS2l0RGV2ZWxvcG1lbnQueHBjICovOwogCQkJcHJvZHVjdFR5
cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS5idW5kbGUiOwogCQl9OwogCQlCQ0RFMDkzMzEz
MjcyNDk2MDAxMjU5RkIgLyogUGx1Z2luUHJvY2VzcyAqLyA9IHsKQEAgLTQ0MjMsNyArNDQ3OSw4
IEBACiAJCQkJQzBDRTcyODUxMjQ3RTY2ODAwQkMwRUM0IC8qIERlcml2ZWQgU291cmNlcyAqLywK
IAkJCQkxQUMyNUZBRjEyQTQ4RUE3MDBCRDI2NzEgLyogUGx1Z2luUHJvY2Vzc1NoaW0gKi8sCiAJ
CQkJNTEwMDMxRUExMzc5Q0FDQjAwQzhERkU0IC8qIFdlYlByb2Nlc3NTaGltICovLAotCQkJCUJD
M0RFNDY1MTVBOTE3NjMwMDhEMjZGQyAvKiBXZWJLaXQyU2VydmljZSAqLywKKwkJCQlCQzNERTQ2
NTE1QTkxNzYzMDA4RDI2RkMgLyogV2ViUHJvY2Vzc1NlcnZpY2UgKi8sCisJCQkJQkNBRTlERTgx
NjBDMDk3NDAwQTMzMjE3IC8qIFdlYlByb2Nlc3NTZXJ2aWNlRm9yV2ViS2l0RGV2ZWxvcG1lbnQg
Ki8sCiAJCQkpOwogCQl9OwogLyogRW5kIFBCWFByb2plY3Qgc2VjdGlvbiAqLwpAQCAtNDQ1NCw2
ICs0NTExLDE0IEBACiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CisJCUJDQUU5REU3MTYwQzA5NzQwMEEzMzIxNyAvKiBSZXNvdXJjZXMgKi8g
PSB7CisJCQlpc2EgPSBQQlhSZXNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCUJDQUU5REZCMTYwQzBBQTEwMEEzMzIx
NyAvKiBjb20uYXBwbGUuV2ViUHJvY2Vzcy5zYiBpbiBSZXNvdXJjZXMgKi8sCisJCQkpOworCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCUJDREUwOTM4
MTMyNzI0OTYwMDEyNTlGQiAvKiBSZXNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhSZXNvdXJj
ZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTUwNjIs
NyArNTEyNyw3IEBACiAJCQkJM0Y4N0I5QkQxNTg5NDAxMjAwOTBGRjYyIC8qIFdlYkNvbG9yQ2hv
b3Nlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDY3RDMwRTE1QzA4RjlBMDA4NDNBREYgLyog
SW5qZWN0ZWRCdW5kbGVQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkNEQzMwODcxNUZENkE4QjAwNkI2Njk1IC8qIFdlYlByb2Nlc3NJbml0aWFsaXph
dGlvbi5tbSBpbiBTb3VyY2VzICovLAotCQkJCUJDREMzMDhCMTVGRDZDRDEwMDZCNjY5NSAvKiBX
ZWJQcm9jZXNzWFBDU2VydmljZU1haW4ubW0gaW4gU291cmNlcyAqLywKKwkJCQlCQ0RDMzA4QjE1
RkQ2Q0QxMDA2QjY2OTUgLyogV2ViUHJvY2Vzc1NlcnZpY2VFbnRyeVBvaW50cy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpAQCAtNTA3MCw3ICs1MTM1LDE1IEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQ
aGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJ
CQlCQzNERTQ3MjE1QTkxNzY0MDA4RDI2RkMgLyogTWFpbk1hY1NlcnZpY2UubW0gaW4gU291cmNl
cyAqLywKKwkJCQlCQ0FFOUUwNzE2MEMxMzlBMDBBMzMyMTcgLyogV2ViUHJvY2Vzc1NlcnZpY2VN
YWluLm1tIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CisJCX07CisJCUJDQUU5REU1MTYwQzA5NzQwMEEzMzIxNyAvKiBTb3Vy
Y2VzICovID0geworCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlv
bk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJQkNBRTlFMDUxNjBDMTM3ODAw
QTMzMjE3IC8qIFdlYlByb2Nlc3NTZXJ2aWNlRm9yV2ViS2l0RGV2ZWxvcG1lbnRNYWluLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkBAIC01MTA3LDkgKzUxODAsMTQgQEAKIAkJfTsKIAkJQkNBOEQ0NjgxNUJD
RTBENjAwOURDMUYxIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CiAJCQlpc2EgPSBQQlhU
YXJnZXREZXBlbmRlbmN5OwotCQkJdGFyZ2V0ID0gQkMzREU0NjUxNUE5MTc2MzAwOEQyNkZDIC8q
IFdlYktpdDJTZXJ2aWNlICovOworCQkJdGFyZ2V0ID0gQkMzREU0NjUxNUE5MTc2MzAwOEQyNkZD
IC8qIFdlYlByb2Nlc3NTZXJ2aWNlICovOwogCQkJdGFyZ2V0UHJveHkgPSBCQ0E4RDQ2NzE1QkNF
MEQ2MDA5REMxRjEgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOwogCQl9OworCQlCQ0FFOURG
RDE2MEMwQUIwMDBBMzMyMTcgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9
IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSBCQ0FFOURFODE2MEMwOTc0MDBBMzMy
MTcgLyogV2ViUHJvY2Vzc1NlcnZpY2VGb3JXZWJLaXREZXZlbG9wbWVudCAqLzsKKwkJCXRhcmdl
dFByb3h5ID0gQkNBRTlERkMxNjBDMEFCMDAwQTMzMjE3IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94
eSAqLzsKKwkJfTsKIAkJQkNERTA5MzQxMzI3MjQ5NjAwMTI1OUZCIC8qIFBCWFRhcmdldERlcGVu
ZGVuY3kgKi8gPSB7CiAJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwogCQkJdGFyZ2V0ID0g
MUFDMjVGQUYxMkE0OEVBNzAwQkQyNjcxIC8qIFBsdWdpblByb2Nlc3NTaGltICovOwpAQCAtNTMw
MSwyMSArNTM3OSw0MiBAQAogCQl9OwogCQlCQzNERTQ3MzE1QTkxNzY0MDA4RDI2RkMgLyogRGVi
dWcgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJhc2VDb25maWd1
cmF0aW9uUmVmZXJlbmNlID0gQkNBOEQ0NkExNUJDRTE2MDAwOURDMUYxIC8qIFdlYktpdDJTZXJ2
aWNlLnhjY29uZmlnICovOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQ0E4RDQ2
QTE1QkNFMTYwMDA5REMxRjEgLyogV2ViUHJvY2Vzc1NlcnZpY2UueGNjb25maWcgKi87CiAJCQli
dWlsZFNldHRpbmdzID0gewogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKIAkJQkMzREU0
NzQxNUE5MTc2NDAwOEQyNkZDIC8qIFJlbGVhc2UgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKLQkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkNBOEQ0NkExNUJD
RTE2MDAwOURDMUYxIC8qIFdlYktpdDJTZXJ2aWNlLnhjY29uZmlnICovOworCQkJYmFzZUNvbmZp
Z3VyYXRpb25SZWZlcmVuY2UgPSBCQ0E4RDQ2QTE1QkNFMTYwMDA5REMxRjEgLyogV2ViUHJvY2Vz
c1NlcnZpY2UueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0gewogCQkJfTsKIAkJCW5h
bWUgPSBSZWxlYXNlOwogCQl9OwogCQlCQzNERTQ3NTE1QTkxNzY0MDA4RDI2RkMgLyogUHJvZHVj
dGlvbiAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYmFzZUNvbmZp
Z3VyYXRpb25SZWZlcmVuY2UgPSBCQ0E4RDQ2QTE1QkNFMTYwMDA5REMxRjEgLyogV2ViS2l0MlNl
cnZpY2UueGNjb25maWcgKi87CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDQThE
NDZBMTVCQ0UxNjAwMDlEQzFGMSAvKiBXZWJQcm9jZXNzU2VydmljZS54Y2NvbmZpZyAqLzsKKwkJ
CWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJ
CUJDQUU5REY3MTYwQzA5NzUwMEEzMzIxNyAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQ0FFOUUw
MDE2MEMwQjQxMDBBMzMyMTcgLyogV2ViUHJvY2Vzc1NlcnZpY2VGb3JXZWJLaXREZXZlbG9wbWVu
dC54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IERl
YnVnOworCQl9OworCQlCQ0FFOURGODE2MEMwOTc1MDBBMzMyMTcgLyogUmVsZWFzZSAqLyA9IHsK
KwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZl
cmVuY2UgPSBCQ0FFOUUwMDE2MEMwQjQxMDBBMzMyMTcgLyogV2ViUHJvY2Vzc1NlcnZpY2VGb3JX
ZWJLaXREZXZlbG9wbWVudC54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9
OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCUJDQUU5REY5MTYwQzA5NzUwMEEzMzIxNyAv
KiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQli
YXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDQUU5RTAwMTYwQzBCNDEwMEEzMzIxNyAvKiBX
ZWJQcm9jZXNzU2VydmljZUZvcldlYktpdERldmVsb3BtZW50LnhjY29uZmlnICovOwogCQkJYnVp
bGRTZXR0aW5ncyA9IHsKIAkJCX07CiAJCQluYW1lID0gUHJvZHVjdGlvbjsKQEAgLTU0MzMsNyAr
NTUzMiw3IEBACiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CiAJCQlkZWZh
dWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OwotCQlCQzNERTQ3NjE1QTkx
NzY0MDA4RDI2RkMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJn
ZXQgIldlYktpdDJTZXJ2aWNlIiAqLyA9IHsKKwkJQkMzREU0NzYxNUE5MTc2NDAwOEQyNkZDIC8q
IEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJXZWJQcm9jZXNz
U2VydmljZSIgKi8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRD
b25maWd1cmF0aW9ucyA9ICgKIAkJCQlCQzNERTQ3MzE1QTkxNzY0MDA4RDI2RkMgLyogRGVidWcg
Ki8sCkBAIC01NDQzLDYgKzU1NDIsMTYgQEAKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNp
YmxlID0gMDsKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CiAJCX07
CisJCUJDQUU5REY2MTYwQzA5NzUwMEEzMzIxNyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3Qg
Zm9yIFBCWE5hdGl2ZVRhcmdldCAiV2ViUHJvY2Vzc1NlcnZpY2VGb3JXZWJLaXREZXZlbG9wbWVu
dCIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1
cmF0aW9ucyA9ICgKKwkJCQlCQ0FFOURGNzE2MEMwOTc1MDBBMzMyMTcgLyogRGVidWcgKi8sCisJ
CQkJQkNBRTlERjgxNjBDMDk3NTAwQTMzMjE3IC8qIFJlbGVhc2UgKi8sCisJCQkJQkNBRTlERjkx
NjBDMDk3NTAwQTMzMjE3IC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZp
Z3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJv
ZHVjdGlvbjsKKwkJfTsKIAkJQkNERTA5M0UxMzI3MjQ5NjAwMTI1OUZCIC8qIEJ1aWxkIGNvbmZp
Z3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJQbHVnaW5Qcm9jZXNzIiAqLyA9IHsK
IAkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0g
KApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0MlNlcnZpY2UvSW5mby5wbGlzdCBi
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDJTZXJ2aWNlL0luZm8ucGxpc3QKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDhhNjgwNTc3ZWMxZjk5YWQwOGZhYTkxYmYwOTAxOTMxZDNlYzhkM2Yu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViS2l0MlNlcnZpY2UvSW5mby5wbGlzdAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICsw
LDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08IURPQ1RZUEUg
cGxpc3QgUFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8vd3d3LmFw
cGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KLTxwbGlzdCB2ZXJzaW9uPSIxLjAi
PgotPGRpY3Q+Ci0JPGtleT5DRkJ1bmRsZURldmVsb3BtZW50UmVnaW9uPC9rZXk+Ci0JPHN0cmlu
Zz5FbmdsaXNoPC9zdHJpbmc+Ci0JPGtleT5DRkJ1bmRsZUV4ZWN1dGFibGU8L2tleT4KLQk8c3Ry
aW5nPiR7RVhFQ1VUQUJMRV9OQU1FfTwvc3RyaW5nPgotCTxrZXk+Q0ZCdW5kbGVJZGVudGlmaWVy
PC9rZXk+Ci0JPHN0cmluZz5jb20uYXBwbGUuV2ViS2l0MlNlcnZpY2U8L3N0cmluZz4KLQk8a2V5
PkNGQnVuZGxlSW5mb0RpY3Rpb25hcnlWZXJzaW9uPC9rZXk+Ci0JPHN0cmluZz42LjA8L3N0cmlu
Zz4KLQk8a2V5PkNGQnVuZGxlTmFtZTwva2V5PgotCTxzdHJpbmc+JHtQUk9EVUNUX05BTUV9PC9z
dHJpbmc+Ci0JPGtleT5DRkJ1bmRsZVBhY2thZ2VUeXBlPC9rZXk+Ci0JPHN0cmluZz5YUEMhPC9z
dHJpbmc+Ci0JPGtleT5DRkJ1bmRsZVNob3J0VmVyc2lvblN0cmluZzwva2V5PgotCTxzdHJpbmc+
MS4wPC9zdHJpbmc+Ci0JPGtleT5DRkJ1bmRsZVNpZ25hdHVyZTwva2V5PgotCTxzdHJpbmc+Pz8/
Pzwvc3RyaW5nPgotCTxrZXk+Q0ZCdW5kbGVWZXJzaW9uPC9rZXk+Ci0JPHN0cmluZz4xPC9zdHJp
bmc+Ci0JPGtleT5MU0ZpbGVRdWFyYW50aW5lRW5hYmxlZDwva2V5PgotCTx0cnVlLz4KLQk8a2V5
Pk5TUHJpbmNpcGFsQ2xhc3M8L2tleT4KLQk8c3RyaW5nPk5TQXBwbGljYXRpb248L3N0cmluZz4K
LQk8a2V5PkxTVUlFbGVtZW50PC9rZXk+Ci0JPHRydWUvPgotCTxrZXk+WFBDU2VydmljZTwva2V5
PgotCTxkaWN0PgotCQk8a2V5PlNlcnZpY2VUeXBlPC9rZXk+Ci0JCTxzdHJpbmc+QXBwbGljYXRp
b248L3N0cmluZz4KLQkJPGtleT5SdW5Mb29wVHlwZTwva2V5PgotCQk8c3RyaW5nPl9OU0FwcGxp
Y2F0aW9uTWFpbjwvc3RyaW5nPgotCQk8a2V5Pl9NdWx0aXBsZUluc3RhbmNlPC9rZXk+Ci0JCTx0
cnVlLz4KLQk8L2RpY3Q+Ci08L2RpY3Q+Ci08L3BsaXN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViS2l0MlNlcnZpY2UvTWFpbk1hY1NlcnZpY2UubW0gYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyU2VydmljZS9NYWluTWFjU2VydmljZS5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMGI0NjQzMmQzMTE1YmEzOWYxMTA4OGIzYTQ0ZjdlOTJlZTIwZWIyOC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyU2VydmljZS9NYWluTWFjU2VydmljZS5tbQorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW1wb3J0IDxBdmFpbGFiaWxpdHlNYWNyb3MuaD4KLQotI2lmIE1B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKLQotI2ltcG9ydCAiV2ViUHJvY2Vz
c1hQQ1NlcnZpY2VNYWluLmgiCi0KLWludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKLXsK
LSAgICByZXR1cm4gV2ViUHJvY2Vzc1hQQ1NlcnZpY2VNYWluKGFyZ2MsIGFyZ3YpOwotfQotCi0j
ZWxzZQotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCi17Ci0gICAgcmV0dXJuIDA7
Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMv
V2ViUHJvY2Vzc1NlcnZpY2VFbnRyeVBvaW50cy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9tYWMvV2ViUHJvY2Vzc1NlcnZpY2VFbnRyeVBvaW50cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0OTE1NGE1
NzI3YzhkZDY1NjhjNTQzMTE2NTVlNGFkY2I2ZDJiNGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzU2VydmljZUVudHJ5UG9pbnRzLmgK
QEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUHJvY2Vzc1NlcnZpY2VF
bnRyeVBvaW50c19oCisjZGVmaW5lIFdlYlByb2Nlc3NTZXJ2aWNlRW50cnlQb2ludHNfaAorCisj
aWYgSEFWRShYUEMpCisKKyNpbmNsdWRlICJXS0Jhc2UuaCIKKworI2lmZGVmIF9fY3BsdXNwbHVz
CitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvLyBUaGlzIGVudHJ5IHBvaW50IGlzIHVzZWQgZm9y
IHRoZSBpbnN0YWxsZWQgV2ViUHJvY2Vzc1NlcnZpY2UsIHdoaWNoIGRvZXMgbm90CisvLyBuZWVk
IHRvIGJlIHJlLWV4ZWNlZCwgb3IgbWVzcyBhcm91bmQgd2l0aCBEWUxELgorV0tfRVhQT1JUIGlu
dCBXZWJQcm9jZXNzU2VydmljZU1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KTsKKworLy8gVGhp
cyBlbnRyeSBwb2ludCBpcyB1c2VkIGZvciB0aGUgV2ViUHJvY2Vzc1NlcnZpY2VGb3JXZWJLaXRE
ZXZlbG9wbWVudAorLy8gd2hpY2ggbmVlZHMgdG8gYmUgcmUtZXhlYywgYW5kIGNhbid0IGxpbmsg
ZGlyZWN0bHkgdG8gV2ViS2l0MiByZXF1aXJpbmcKKy8vIHNvbWUgRFlMRCBmaWRkbGluZy4KK1dL
X0VYUE9SVCB2b2lkIEluaXRpYWxpemVXZWJQcm9jZXNzRm9yV2ViUHJvY2Vzc1NlcnZpY2VGb3JX
ZWJLaXREZXZlbG9wbWVudChjb25zdCBjaGFyKiBjbGllbnRJZGVudGlmZXIsIHhwY19jb25uZWN0
aW9uX3QgY29ubmVjdGlvbiwgbWFjaF9wb3J0X3Qgc2VydmVyUG9ydCk7CisKKyNpZmRlZiBfX2Nw
bHVzcGx1cworfTsgLy8gZXh0ZXJuICJDIgorI2VuZGlmCisKKyNlbmRpZiAvLyBIQVZFKFhQQykK
KworI2VuZGlmIC8vIFdlYlByb2Nlc3NTZXJ2aWNlRW50cnlQb2ludHNfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1NlcnZpY2VFbnRyeVBvaW50
cy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NTZXJ2aWNlRW50
cnlQb2ludHMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjI4MmZiNDYyMDU1MjkxYjJlNTViYjllMGQzMDVhMzVk
ZGFhZmJmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFj
L1dlYlByb2Nlc3NTZXJ2aWNlRW50cnlQb2ludHMubW0KQEAgLTAsMCArMSw5MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViUHJvY2Vzc1NlcnZpY2VFbnRy
eVBvaW50cy5oIgorCisjaWYgSEFWRShYUEMpCisKKyNpbXBvcnQgIkVudmlyb25tZW50VXRpbGl0
aWVzLmgiCisjaW1wb3J0ICJXZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24uaCIKKworI2ltcG9ydCAi
RW52aXJvbm1lbnRVdGlsaXRpZXMuaCIKKyNpbXBvcnQgIldlYlByb2Nlc3NJbml0aWFsaXphdGlv
bi5oIgorI2ltcG9ydCA8c3RkaW8uaD4KKyNpbXBvcnQgPHN0ZGxpYi5oPgorI2ltcG9ydCA8eHBj
L3hwYy5oPgorCitleHRlcm4gIkMiIG1hY2hfcG9ydF90IHhwY19kaWN0aW9uYXJ5X2NvcHlfbWFj
aF9zZW5kKHhwY19vYmplY3RfdCwgY29uc3QgY2hhciopOworCituYW1lc3BhY2UgV2ViS2l0IHsK
Kworc3RhdGljIHZvaWQgV2ViUHJvY2Vzc1NlcnZpY2VFdmVudEhhbmRsZXIoeHBjX2Nvbm5lY3Rp
b25fdCBwZWVyKQoreworICAgIHhwY19jb25uZWN0aW9uX3NldF90YXJnZXRfcXVldWUocGVlciwg
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50
X2hhbmRsZXIocGVlciwgXih4cGNfb2JqZWN0X3QgZXZlbnQpIHsKKyAgICAgICAgeHBjX3R5cGVf
dCB0eXBlID0geHBjX2dldF90eXBlKGV2ZW50KTsKKyAgICAgICAgaWYgKHR5cGUgPT0gWFBDX1RZ
UEVfRVJST1IpIHsKKyAgICAgICAgICAgIGlmIChldmVudCA9PSBYUENfRVJST1JfQ09OTkVDVElP
Tl9JTlZBTElEIHx8IGV2ZW50ID09IFhQQ19FUlJPUl9URVJNSU5BVElPTl9JTU1JTkVOVCkgewor
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgdGhpcyBjYXNlIG1vcmUgZ3JhY2VmdWxs
eS4KKyAgICAgICAgICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBYUENfVFlQRV9ESUNU
SU9OQVJZKTsKKworICAgICAgICAgICAgaWYgKCFzdHJjbXAoeHBjX2RpY3Rpb25hcnlfZ2V0X3N0
cmluZyhldmVudCwgIm1lc3NhZ2UtbmFtZSIpLCAiYm9vdHN0cmFwIikpIHsKKyAgICAgICAgICAg
ICAgICB4cGNfb2JqZWN0X3QgcmVwbHkgPSB4cGNfZGljdGlvbmFyeV9jcmVhdGVfcmVwbHkoZXZl
bnQpOworICAgICAgICAgICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF9zdHJpbmcocmVwbHksICJt
ZXNzYWdlLW5hbWUiLCAicHJvY2Vzcy1maW5pc2hlZC1sYXVuY2hpbmciKTsKKyAgICAgICAgICAg
ICAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoeHBjX2RpY3Rpb25hcnlfZ2V0X3JlbW90
ZV9jb25uZWN0aW9uKGV2ZW50KSwgcmVwbHkpOworICAgICAgICAgICAgICAgIHhwY19yZWxlYXNl
KHJlcGx5KTsKKworICAgICAgICAgICAgICAgIEluaXRpYWxpemVXZWJQcm9jZXNzKFN0cmluZyh4
cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV2ZW50LCAiY2xpZW50LWlkZW50aWZpZXIiKSksIENv
cmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIoeHBjX2RpY3Rpb25hcnlfY29weV9tYWNoX3Nl
bmQoZXZlbnQsICJzZXJ2ZXItcG9ydCIpLCBwZWVyKSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9KTsKKworICAgIHhwY19jb25uZWN0aW9uX3Jlc3VtZShwZWVyKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKK2ludCBXZWJQcm9jZXNzU2VydmljZU1haW4oaW50IGFyZ2Ms
IGNoYXIqKiBhcmd2KQoreworICAgIC8vIFJlbW92ZSB0aGUgV2ViUHJvY2VzcyBzaGltIGZyb20g
dGhlIERZTERfSU5TRVJUX0xJQlJBUklFUyBlbnZpcm9ubWVudCB2YXJpYWJsZSBzbyBhbnkgcHJv
Y2Vzc2VzIHNwYXduZWQgYnkKKyAgICAvLyB0aGUgV2ViUHJvY2VzcyBkb24ndCB0cnkgdG8gaW5z
ZXJ0IHRoZSBzaGltIGFuZCBjcmFzaC4KKyAgICBXZWJLaXQ6OkVudmlyb25tZW50VXRpbGl0aWVz
OjpzdHJpcFZhbHVlc0VuZGluZ1dpdGhTdHJpbmcoIkRZTERfSU5TRVJUX0xJQlJBUklFUyIsICIv
V2ViUHJvY2Vzc1NoaW0uZHlsaWIiKTsKKworICAgIHhwY19tYWluKFdlYktpdDo6V2ViUHJvY2Vz
c1NlcnZpY2VFdmVudEhhbmRsZXIpOworICAgIHJldHVybiAwOworfQorCit2b2lkIEluaXRpYWxp
emVXZWJQcm9jZXNzRm9yV2ViUHJvY2Vzc1NlcnZpY2VGb3JXZWJLaXREZXZlbG9wbWVudChjb25z
dCBjaGFyKiBjbGllbnRJZGVudGlmZXIsIHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiwgbWFj
aF9wb3J0X3Qgc2VydmVyUG9ydCkKK3sKKyAgICAvLyBSZW1vdmUgdGhlIFdlYlByb2Nlc3Mgc2hp
bSBmcm9tIHRoZSBEWUxEX0lOU0VSVF9MSUJSQVJJRVMgZW52aXJvbm1lbnQgdmFyaWFibGUgc28g
YW55IHByb2Nlc3NlcyBzcGF3bmVkIGJ5CisgICAgLy8gdGhlIFdlYlByb2Nlc3MgZG9uJ3QgdHJ5
IHRvIGluc2VydCB0aGUgc2hpbSBhbmQgY3Jhc2guCisgICAgV2ViS2l0OjpFbnZpcm9ubWVudFV0
aWxpdGllczo6c3RyaXBWYWx1ZXNFbmRpbmdXaXRoU3RyaW5nKCJEWUxEX0lOU0VSVF9MSUJSQVJJ
RVMiLCAiL1dlYlByb2Nlc3NTaGltLmR5bGliIik7CisKKyAgICBXZWJLaXQ6OkluaXRpYWxpemVX
ZWJQcm9jZXNzKFN0cmluZyhjbGllbnRJZGVudGlmZXIpLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJ
ZGVudGlmaWVyKHNlcnZlclBvcnQsIGNvbm5lY3Rpb24pKTsKK30KKworI2VuZGlmIC8vIEhBVkUo
WFBDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vz
c1hQQ1NlcnZpY2VNYWluLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9j
ZXNzWFBDU2VydmljZU1haW4uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmYzZmVi
MDI5NjY5M2VjNjc3YmVkNDViMmYyNDY0ZDBkNjY3YzQ3OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9X
ZWJQcm9jZXNzWFBDU2VydmljZU1haW4uaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlByb2Nlc3NYUENTZXJ2aWNlTWFpbl9oCi0jZGVmaW5l
IFdlYlByb2Nlc3NYUENTZXJ2aWNlTWFpbl9oCi0KLSNpZiBIQVZFKFhQQykKLQotI2luY2x1ZGUg
IldLQmFzZS5oIgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0K
LVdLX0VYUE9SVCBpbnQgV2ViUHJvY2Vzc1hQQ1NlcnZpY2VNYWluKGludCBhcmdjLCBjaGFyKiog
YXJndik7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfTsgLy8gZXh0ZXJuICJDIgotI2VuZGlmCi0K
LSNlbmRpZiAvLyBIQVZFKFhQQykKLQotI2VuZGlmIC8vIFdlYlByb2Nlc3NYUENTZXJ2aWNlTWFp
bl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNz
WFBDU2VydmljZU1haW4ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9j
ZXNzWFBDU2VydmljZU1haW4ubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4NzBm
MWQxMmYyYjBmZjU2ZmQ2MzYyOWQ2Mjg0YWZmZTY1NDI1ZTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMv
V2ViUHJvY2Vzc1hQQ1NlcnZpY2VNYWluLm1tCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiV2ViUHJvY2Vzc1hQ
Q1NlcnZpY2VNYWluLmgiCi0KLSNpZiBIQVZFKFhQQykKLQotI2ltcG9ydCAiRW52aXJvbm1lbnRV
dGlsaXRpZXMuaCIKLSNpbXBvcnQgIldlYlByb2Nlc3NJbml0aWFsaXphdGlvbi5oIgotI2ltcG9y
dCA8c3RkaW8uaD4KLSNpbXBvcnQgPHN0ZGxpYi5oPgotI2ltcG9ydCA8eHBjL3hwYy5oPgotCi1l
eHRlcm4gIkMiIG1hY2hfcG9ydF90IHhwY19kaWN0aW9uYXJ5X2NvcHlfbWFjaF9zZW5kKHhwY19v
YmplY3RfdCwgY29uc3QgY2hhciopOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RhdGljIHZv
aWQgV2ViS2l0MlNlcnZpY2VFdmVudEhhbmRsZXIoeHBjX2Nvbm5lY3Rpb25fdCBwZWVyKQotewot
ICAgIHhwY19jb25uZWN0aW9uX3NldF90YXJnZXRfcXVldWUocGVlciwgZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSk7Ci0gICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIocGVlciwg
Xih4cGNfb2JqZWN0X3QgZXZlbnQpIHsKLSAgICAgICAgeHBjX3R5cGVfdCB0eXBlID0geHBjX2dl
dF90eXBlKGV2ZW50KTsKLSAgICAgICAgaWYgKHR5cGUgPT0gWFBDX1RZUEVfRVJST1IpIHsKLSAg
ICAgICAgICAgIGlmIChldmVudCA9PSBYUENfRVJST1JfQ09OTkVDVElPTl9JTlZBTElEIHx8IGV2
ZW50ID09IFhQQ19FUlJPUl9URVJNSU5BVElPTl9JTU1JTkVOVCkgewotICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBIYW5kbGUgdGhpcyBjYXNlIG1vcmUgZ3JhY2VmdWxseS4KLSAgICAgICAgICAg
ICAgICBleGl0KEVYSVRfRkFJTFVSRSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZKTsKLQotICAg
ICAgICAgICAgaWYgKCFzdHJjbXAoeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgIm1l
c3NhZ2UtbmFtZSIpLCAiYm9vdHN0cmFwIikpIHsKLSAgICAgICAgICAgICAgICB4cGNfb2JqZWN0
X3QgcmVwbHkgPSB4cGNfZGljdGlvbmFyeV9jcmVhdGVfcmVwbHkoZXZlbnQpOwotICAgICAgICAg
ICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF9zdHJpbmcocmVwbHksICJtZXNzYWdlLW5hbWUiLCAi
cHJvY2Vzcy1maW5pc2hlZC1sYXVuY2hpbmciKTsKLSAgICAgICAgICAgICAgICB4cGNfY29ubmVj
dGlvbl9zZW5kX21lc3NhZ2UoeHBjX2RpY3Rpb25hcnlfZ2V0X3JlbW90ZV9jb25uZWN0aW9uKGV2
ZW50KSwgcmVwbHkpOwotICAgICAgICAgICAgICAgIHhwY19yZWxlYXNlKHJlcGx5KTsKLQotICAg
ICAgICAgICAgICAgIEluaXRpYWxpemVXZWJQcm9jZXNzKFN0cmluZyh4cGNfZGljdGlvbmFyeV9n
ZXRfc3RyaW5nKGV2ZW50LCAiY2xpZW50LWlkZW50aWZpZXIiKSksIENvcmVJUEM6OkNvbm5lY3Rp
b246OklkZW50aWZpZXIoeHBjX2RpY3Rpb25hcnlfY29weV9tYWNoX3NlbmQoZXZlbnQsICJzZXJ2
ZXItcG9ydCIpLCBwZWVyKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9KTsKLQot
ICAgIHhwY19jb25uZWN0aW9uX3Jlc3VtZShwZWVyKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLWludCBXZWJQcm9jZXNzWFBDU2VydmljZU1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2
KQotewotICAgIC8vIFJlbW92ZSB0aGUgV2ViUHJvY2VzcyBzaGltIGZyb20gdGhlIERZTERfSU5T
RVJUX0xJQlJBUklFUyBlbnZpcm9ubWVudCB2YXJpYWJsZSBzbyBhbnkgcHJvY2Vzc2VzIHNwYXdu
ZWQgYnkKLSAgICAvLyB0aGUgV2ViUHJvY2VzcyBkb24ndCB0cnkgdG8gaW5zZXJ0IHRoZSBzaGlt
IGFuZCBjcmFzaC4KLSAgICBXZWJLaXQ6OkVudmlyb25tZW50VXRpbGl0aWVzOjpzdHJpcFZhbHVl
c0VuZGluZ1dpdGhTdHJpbmcoIkRZTERfSU5TRVJUX0xJQlJBUklFUyIsICIvV2ViUHJvY2Vzc1No
aW0uZHlsaWIiKTsKLQotICAgIHhwY19tYWluKFdlYktpdDo6V2ViS2l0MlNlcnZpY2VFdmVudEhh
bmRsZXIpOwotICAgIHJldHVybiAwOwotfQotCi0jZW5kaWYgLy8gSEFWRShYUEMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzU2VydmljZS9JbmZvLnBsaXN0IGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzc1NlcnZpY2UvSW5mby5wbGlzdApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZWJiNzhl
YWRkOTA5NTYxYWE1MWIxNTU5OTkyNTczNWVhNmRiOWE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzc1NlcnZpY2UvSW5mby5wbGlzdApAQCAtMCwwICsxLDQ0IEBA
Cis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIHBsaXN0
IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5j
b20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0ZCI+Cis8cGxpc3QgdmVyc2lvbj0iMS4wIj4KKzxk
aWN0PgorCTxrZXk+Q0ZCdW5kbGVEZXZlbG9wbWVudFJlZ2lvbjwva2V5PgorCTxzdHJpbmc+RW5n
bGlzaDwvc3RyaW5nPgorCTxrZXk+Q0ZCdW5kbGVFeGVjdXRhYmxlPC9rZXk+CisJPHN0cmluZz4k
e0VYRUNVVEFCTEVfTkFNRX08L3N0cmluZz4KKwk8a2V5PkNGQnVuZGxlSWRlbnRpZmllcjwva2V5
PgorCTxzdHJpbmc+Y29tLmFwcGxlLldlYktpdDIuV2ViUHJvY2Vzc1NlcnZpY2U8L3N0cmluZz4K
Kwk8a2V5PkNGQnVuZGxlSW5mb0RpY3Rpb25hcnlWZXJzaW9uPC9rZXk+CisJPHN0cmluZz42LjA8
L3N0cmluZz4KKwk8a2V5PkNGQnVuZGxlTmFtZTwva2V5PgorCTxzdHJpbmc+JHtQUk9EVUNUX05B
TUV9PC9zdHJpbmc+CisJPGtleT5DRkJ1bmRsZVBhY2thZ2VUeXBlPC9rZXk+CisJPHN0cmluZz5Y
UEMhPC9zdHJpbmc+CisJPGtleT5DRkJ1bmRsZVNob3J0VmVyc2lvblN0cmluZzwva2V5PgorCTxz
dHJpbmc+MS4wPC9zdHJpbmc+CisJPGtleT5DRkJ1bmRsZVNpZ25hdHVyZTwva2V5PgorCTxzdHJp
bmc+Pz8/Pzwvc3RyaW5nPgorCTxrZXk+Q0ZCdW5kbGVWZXJzaW9uPC9rZXk+CisJPHN0cmluZz4x
PC9zdHJpbmc+CisJPGtleT5MU0ZpbGVRdWFyYW50aW5lRW5hYmxlZDwva2V5PgorCTx0cnVlLz4K
Kwk8a2V5Pk5TUHJpbmNpcGFsQ2xhc3M8L2tleT4KKwk8c3RyaW5nPk5TQXBwbGljYXRpb248L3N0
cmluZz4KKwk8a2V5PkxTVUlFbGVtZW50PC9rZXk+CisJPHRydWUvPgorCTxrZXk+WFBDU2Vydmlj
ZTwva2V5PgorCTxkaWN0PgorCQk8a2V5PlNlcnZpY2VUeXBlPC9rZXk+CisJCTxzdHJpbmc+QXBw
bGljYXRpb248L3N0cmluZz4KKwkJPGtleT5SdW5Mb29wVHlwZTwva2V5PgorCQk8c3RyaW5nPl9O
U0FwcGxpY2F0aW9uTWFpbjwvc3RyaW5nPgorCQk8a2V5Pl9NdWx0aXBsZUluc3RhbmNlPC9rZXk+
CisJCTx0cnVlLz4KKwkJPGtleT5FbnZpcm9ubWVudFZhcmlhYmxlczwva2V5PgorCQk8ZGljdD4K
KwkJCTxrZXk+RFlMRF9JTlNFUlRfTElCUkFSSUVTPC9rZXk+CisJCQk8c3RyaW5nPiQoV0VCS0lU
Ml9GUkFNRVdPUktTX0RJUikvV2ViS2l0Mi5mcmFtZXdvcmsvV2ViUHJvY2Vzcy5hcHAvQ29udGVu
dHMvTWFjT1MvV2ViUHJvY2Vzc1NoaW0uZHlsaWI8L3N0cmluZz4KKwkJPC9kaWN0PgorCTwvZGlj
dD4KKzwvZGljdD4KKzwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzU2VydmljZS9XZWJQcm9jZXNzU2VydmljZU1haW4ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzU2VydmljZS9XZWJQcm9jZXNzU2VydmljZU1haW4ubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjNkM2Vj
YWRlMWU4NGJmZTAyNWVhMGQwYzFhYWU3ZDk0MzBjMTUwYgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3NTZXJ2aWNlL1dlYlByb2Nlc3NTZXJ2aWNlTWFpbi5tbQpA
QCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8QXZhaWxhYmlsaXR5TWFjcm9z
Lmg+CisKKyNpZiBNQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCisKKyNpbXBv
cnQgIldlYlByb2Nlc3NTZXJ2aWNlRW50cnlQb2ludHMuaCIKKworaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIqKiBhcmd2KQoreworICAgIHJldHVybiBXZWJQcm9jZXNzU2VydmljZU1haW4oYXJnYywg
YXJndik7Cit9CisKKyNlbHNlCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKK3sK
KyAgICByZXR1cm4gMDsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzU2VydmljZUZvcldlYktpdERldmVsb3BtZW50L0luZm8ucGxpc3QgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzU2VydmljZUZvcldlYktpdERldmVsb3BtZW50L0luZm8ucGxpc3QK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODkwODE5NmI2MzE0MGRmZjZhYjgxMjk1YmRmN2Q2YWMwNDNhMDcwNgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3NTZXJ2aWNlRm9yV2ViS2l0
RGV2ZWxvcG1lbnQvSW5mby5wbGlzdApAQCAtMCwwICsxLDM5IEBACis8P3htbCB2ZXJzaW9uPSIx
LjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUv
L0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxp
c3QtMS4wLmR0ZCI+Cis8cGxpc3QgdmVyc2lvbj0iMS4wIj4KKzxkaWN0PgorCTxrZXk+Q0ZCdW5k
bGVEZXZlbG9wbWVudFJlZ2lvbjwva2V5PgorCTxzdHJpbmc+RW5nbGlzaDwvc3RyaW5nPgorCTxr
ZXk+Q0ZCdW5kbGVFeGVjdXRhYmxlPC9rZXk+CisJPHN0cmluZz4ke0VYRUNVVEFCTEVfTkFNRX08
L3N0cmluZz4KKwk8a2V5PkNGQnVuZGxlSWRlbnRpZmllcjwva2V5PgorCTxzdHJpbmc+Y29tLmFw
cGxlLldlYktpdDIuV2ViUHJvY2Vzc1NlcnZpY2VGb3JXZWJLaXREZXZlbG9wbWVudDwvc3RyaW5n
PgorCTxrZXk+Q0ZCdW5kbGVJbmZvRGljdGlvbmFyeVZlcnNpb248L2tleT4KKwk8c3RyaW5nPjYu
MDwvc3RyaW5nPgorCTxrZXk+Q0ZCdW5kbGVOYW1lPC9rZXk+CisJPHN0cmluZz4ke1BST0RVQ1Rf
TkFNRX08L3N0cmluZz4KKwk8a2V5PkNGQnVuZGxlUGFja2FnZVR5cGU8L2tleT4KKwk8c3RyaW5n
PlhQQyE8L3N0cmluZz4KKwk8a2V5PkNGQnVuZGxlU2hvcnRWZXJzaW9uU3RyaW5nPC9rZXk+CisJ
PHN0cmluZz4xLjA8L3N0cmluZz4KKwk8a2V5PkNGQnVuZGxlU2lnbmF0dXJlPC9rZXk+CisJPHN0
cmluZz4/Pz8/PC9zdHJpbmc+CisJPGtleT5DRkJ1bmRsZVZlcnNpb248L2tleT4KKwk8c3RyaW5n
PjE8L3N0cmluZz4KKwk8a2V5PkxTRmlsZVF1YXJhbnRpbmVFbmFibGVkPC9rZXk+CisJPHRydWUv
PgorCTxrZXk+TlNQcmluY2lwYWxDbGFzczwva2V5PgorCTxzdHJpbmc+TlNBcHBsaWNhdGlvbjwv
c3RyaW5nPgorCTxrZXk+TFNVSUVsZW1lbnQ8L2tleT4KKwk8dHJ1ZS8+CisJPGtleT5YUENTZXJ2
aWNlPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+U2VydmljZVR5cGU8L2tleT4KKwkJPHN0cmluZz5B
cHBsaWNhdGlvbjwvc3RyaW5nPgorCQk8a2V5PlJ1bkxvb3BUeXBlPC9rZXk+CisJCTxzdHJpbmc+
X05TQXBwbGljYXRpb25NYWluPC9zdHJpbmc+CisJCTxrZXk+X011bHRpcGxlSW5zdGFuY2U8L2tl
eT4KKwkJPHRydWUvPgorCTwvZGljdD4KKzwvZGljdD4KKzwvcGxpc3Q+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzU2VydmljZUZvcldlYktpdERldmVsb3BtZW50L1dlYlBy
b2Nlc3NTZXJ2aWNlRm9yV2ViS2l0RGV2ZWxvcG1lbnRNYWluLm1tIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzc1NlcnZpY2VGb3JXZWJLaXREZXZlbG9wbWVudC9XZWJQcm9jZXNzU2VydmljZUZv
cldlYktpdERldmVsb3BtZW50TWFpbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40M2RlZTllYTcyZGQ1OWE2MjBl
ODBjYTc3ODc1OTEzNTcwYWQxOGZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzc1NlcnZpY2VGb3JXZWJLaXREZXZlbG9wbWVudC9XZWJQcm9jZXNzU2VydmljZUZv
cldlYktpdERldmVsb3BtZW50TWFpbi5tbQpAQCAtMCwwICsxLDE2MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgPEF2YWlsYWJpbGl0eU1hY3Jvcy5oPgorCisjaWYgTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA3MAorCisjaW1wb3J0IDxjcnRfZXh0ZXJucy5oPgorI2ltcG9ydCA8
ZGxmY24uaD4KKyNpbXBvcnQgPG1hY2gtby9keWxkLmg+CisjaW1wb3J0IDxzcGF3bi5oPiAKKyNp
bXBvcnQgPHN0ZGlvLmg+CisjaW1wb3J0IDxzdGRsaWIuaD4KKyNpbXBvcnQgPHhwYy94cGMuaD4K
KworZXh0ZXJuICJDIiBtYWNoX3BvcnRfdCB4cGNfZGljdGlvbmFyeV9jb3B5X21hY2hfc2VuZCh4
cGNfb2JqZWN0X3QsIGNvbnN0IGNoYXIqKTsKKworc3RhdGljIHZvaWQgV2ViUHJvY2Vzc1NlcnZp
Y2VGb3JXZWJLaXREZXZlbG9wbWVudEV2ZW50SGFuZGxlcih4cGNfY29ubmVjdGlvbl90IHBlZXIp
Cit7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X3RhcmdldF9xdWV1ZShwZWVyLCBkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpKTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihw
ZWVyLCBeKHhwY19vYmplY3RfdCBldmVudCkgeworICAgICAgICB4cGNfdHlwZV90IHR5cGUgPSB4
cGNfZ2V0X3R5cGUoZXZlbnQpOworICAgICAgICBpZiAodHlwZSA9PSBYUENfVFlQRV9FUlJPUikg
eworICAgICAgICAgICAgaWYgKGV2ZW50ID09IFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVkFMSUQg
fHwgZXZlbnQgPT0gWFBDX0VSUk9SX1RFUk1JTkFUSU9OX0lNTUlORU5UKSB7CisgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IEhhbmRsZSB0aGlzIGNhc2UgbW9yZSBncmFjZWZ1bGx5LgorICAgICAg
ICAgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGFzc2VydCh0eXBlID09IFhQQ19UWVBFX0RJQ1RJT05BUlkpOwor
CisgICAgICAgICAgICBpZiAoIXN0cmNtcCh4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV2ZW50
LCAibWVzc2FnZS1uYW1lIiksICJyZS1leGVjIikpIHsKKyAgICAgICAgICAgICAgICBOU0xvZyhA
InJlLWV4ZWMiKTsKKworICAgICAgICAgICAgICAgIC8vIFNldHVwIHRoZSBwb3NpeF9zcGF3biBh
dHRyaWJ1dGVzLgorICAgICAgICAgICAgICAgIHBvc2l4X3NwYXduYXR0cl90IGF0dHI7CisgICAg
ICAgICAgICAgICAgcG9zaXhfc3Bhd25hdHRyX2luaXQoJmF0dHIpOworCisgICAgICAgICAgICAg
ICAgc2hvcnQgZmxhZ3MgPSAwOworCisgICAgICAgICAgICAgICAgLy8gV2UganVzdCB3YW50IHRv
IHNldCB0aGUgcHJvY2VzcyBzdGF0ZSwgbm90IGFjdHVhbGx5IGxhdW5jaCBhIG5ldyBwcm9jZXNz
LAorICAgICAgICAgICAgICAgIC8vIHNvIHdlIGFyZSBnb2luZyB0byB1c2UgdGhlIGRhcndpbiBl
eHRlbnNpb24gdG8gcG9zaXhfc3Bhd24gUE9TSVhfU1BBV05fU0VURVhFQworICAgICAgICAgICAg
ICAgIC8vIHRvIGFjdCBsaWtlIGEgbW9yZSBmdWxsIGZlYXR1cmVkIGV4ZWMuCisgICAgICAgICAg
ICAgICAgZmxhZ3MgfD0gUE9TSVhfU1BBV05fU0VURVhFQzsKKworICAgICAgICAgICAgICAgIC8v
IFdlIHdhbnQgb3VyIHByb2Nlc3MgdG8gcmVjZWl2ZSBhbGwgc2lnbmFscy4KKyAgICAgICAgICAg
ICAgICBzaWdzZXRfdCBzaWduYWxNYXNrU2V0OworICAgICAgICAgICAgICAgIHNpZ2VtcHR5c2V0
KCZzaWduYWxNYXNrU2V0KTsKKyAgICAgICAgICAgICAgICBwb3NpeF9zcGF3bmF0dHJfc2V0c2ln
bWFzaygmYXR0ciwgJnNpZ25hbE1hc2tTZXQpOworICAgICAgICAgICAgICAgIGZsYWdzIHw9IFBP
U0lYX1NQQVdOX1NFVFNJR01BU0s7CisKKyAgICAgICAgICAgICAgICAvLyBTZXQgdGhlIGFyY2hp
dGVjdHVyZS4KKyAgICAgICAgICAgICAgICBjcHVfdHlwZV90IGNwdVR5cGVzW10gPSB7IChjcHVf
dHlwZV90KXhwY19kaWN0aW9uYXJ5X2dldF91aW50NjQoZXZlbnQsICJhcmNoaXRlY3R1cmUiKSB9
OworICAgICAgICAgICAgICAgIHNpemVfdCBvdXRDb3VudCA9IDA7CisgICAgICAgICAgICAgICAg
cG9zaXhfc3Bhd25hdHRyX3NldGJpbnByZWZfbnAoJmF0dHIsIDEsIGNwdVR5cGVzLCAmb3V0Q291
bnQpOworCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCisgICAg
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IGludCBhbGxvd0V4ZWN1dGFibGVIZWFwRmxhZyA9IDB4
MjAwMDsKKyAgICAgICAgICAgICAgICBpZiAoeHBjX2RpY3Rpb25hcnlfZ2V0X2Jvb2woZXZlbnQs
ICJleGVjdXRhYmxlLWhlYXAiKSkKKyAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gYWxsb3dF
eGVjdXRhYmxlSGVhcEZsYWc7CisjZW5kaWYKKworICAgICAgICAgICAgICAgIHBvc2l4X3NwYXdu
YXR0cl9zZXRmbGFncygmYXR0ciwgZmxhZ3MpOworCisgICAgICAgICAgICAgICAgdWludDMyX3Qg
cGF0aExlbmd0aDsKKyAgICAgICAgICAgICAgICBjaGFyIHBhdGhbNCAqIFBBVEhfTUFYXTsKKyAg
ICAgICAgICAgICAgICBfTlNHZXRFeGVjdXRhYmxlUGF0aChwYXRoLCAmcGF0aExlbmd0aCk7CisK
KyAgICAgICAgICAgICAgICAvLyBTZXR1cCB0aGUgY29tbWFuZCBsaW5lLgorICAgICAgICAgICAg
ICAgIGNoYXIqKiBhcmd2ID0gKl9OU0dldEFyZ3YoKTsKKyAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBwcm9ncmFtTmFtZSA9IGFyZ3ZbMF07CisgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
YXJnc1tdID0geyBwcm9ncmFtTmFtZSwgMCB9OworCisgICAgICAgICAgICAgICAgLy8gU2V0dXAg
dGhlIGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgIHhwY19vYmplY3RfdCBlbnZpcm9ubWVu
dEFycmF5ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3ZhbHVlKGV2ZW50LCAiZW52aXJvbm1lbnQiKTsK
KyAgICAgICAgICAgICAgICBzaXplX3QgbnVtYmVyT2ZFbnZpcm9ubWVudFZhcmlhYmxlcyA9IHhw
Y19hcnJheV9nZXRfY291bnQoZW52aXJvbm1lbnRBcnJheSk7CisKKyAgICAgICAgICAgICAgICBj
aGFyKiogZW52aXJvbm1lbnQgPSAoY2hhcioqKW1hbGxvYyhudW1iZXJPZkVudmlyb25tZW50VmFy
aWFibGVzICogc2l6ZW9mKGNoYXIqKSArIDEpOworICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbnVtYmVyT2ZFbnZpcm9ubWVudFZhcmlhYmxlczsgKytpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHN0cmluZyA9ICB4cGNfYXJyYXlfZ2V0X3N0cmluZyhl
bnZpcm9ubWVudEFycmF5LCBpKTsKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHN0cmluZ0xl
bmd0aCA9IHN0cmxlbihzdHJpbmcpOworCisgICAgICAgICAgICAgICAgICAgIGNoYXIqIGVudmly
b25tZW50VmFyaWFibGUgPSAoY2hhciopbWFsbG9jKHN0cmluZ0xlbmd0aCArIDEpOworICAgICAg
ICAgICAgICAgICAgICBtZW1jcHkoZW52aXJvbm1lbnRWYXJpYWJsZSwgc3RyaW5nLCBzdHJpbmdM
ZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudFZhcmlhYmxlW3N0cmluZ0xl
bmd0aF0gPSAnXDAnOworCisgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50W2ldID0gZW52
aXJvbm1lbnRWYXJpYWJsZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZW52
aXJvbm1lbnRbbnVtYmVyT2ZFbnZpcm9ubWVudFZhcmlhYmxlc10gPSAwOworCisgICAgICAgICAg
ICAgICAgcGlkX3QgcHJvY2Vzc0lkZW50aWZpZXIgPSAwOworICAgICAgICAgICAgICAgIHBvc2l4
X3NwYXduKCZwcm9jZXNzSWRlbnRpZmllciwgcGF0aCwgMCwgJmF0dHIsIGNvbnN0X2Nhc3Q8Y2hh
cioqPihhcmdzKSwgZW52aXJvbm1lbnQpOworCisgICAgICAgICAgICAgICAgcG9zaXhfc3Bhd25h
dHRyX2Rlc3Ryb3koJmF0dHIpOworCisgICAgICAgICAgICAgICAgTlNMb2coQCJVbmFibGUgdG8g
cmUtZXhlYyBmb3IgcGF0aDogJXNcbiIsIHBhdGgpOworICAgICAgICAgICAgICAgIGV4aXQoRVhJ
VF9GQUlMVVJFKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFzdHJjbXAoeHBj
X2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgIm1lc3NhZ2UtbmFtZSIpLCAiYm9vdHN0cmFw
IikpIHsKKyAgICAgICAgICAgICAgICBOU0xvZyhAImJvb3RzdHJhcCIpOworCisgICAgICAgICAg
ICAgICAgc3RhdGljIHZvaWQqIGZyYW1ld29ya0xpYnJhcnkgPSBkbG9wZW4oeHBjX2RpY3Rpb25h
cnlfZ2V0X3N0cmluZyhldmVudCwgImZyYW1ld29yay1leGVjdXRhYmxlLXBhdGgiKSwgUlRMRF9O
T1cpOworICAgICAgICAgICAgICAgIGlmICghZnJhbWV3b3JrTGlicmFyeSkgeworICAgICAgICAg
ICAgICAgICAgICBOU0xvZyhAIlVuYWJsZSB0byBsb2FkIFdlYktpdDIuZnJhbWV3b3JrOiAlc1xu
IiwgZGxlcnJvcigpKTsKKyAgICAgICAgICAgICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHR5cGVkZWYgdm9pZCAoKkluaXRp
YWxpemVXZWJQcm9jZXNzRnVuY3Rpb24pKGNvbnN0IGNoYXIqIGNsaWVudElkZW50aWZlciwgeHBj
X2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uLCBtYWNoX3BvcnRfdCBzZXJ2ZXJQb3J0KTsKKyAgICAg
ICAgICAgICAgICBJbml0aWFsaXplV2ViUHJvY2Vzc0Z1bmN0aW9uIEluaXRpYWxpemVXZWJQcm9j
ZXNzRnVuY3Rpb25QdHIgPSByZWludGVycHJldF9jYXN0PEluaXRpYWxpemVXZWJQcm9jZXNzRnVu
Y3Rpb24+KGRsc3ltKGZyYW1ld29ya0xpYnJhcnksICJJbml0aWFsaXplV2ViUHJvY2Vzc0Zvcldl
YlByb2Nlc3NTZXJ2aWNlRm9yV2ViS2l0RGV2ZWxvcG1lbnQiKSk7CisgICAgICAgICAgICAgICAg
aWYgKCFJbml0aWFsaXplV2ViUHJvY2Vzc0Z1bmN0aW9uUHRyKSB7CisgICAgICAgICAgICAgICAg
ICAgIE5TTG9nKEAiVW5hYmxlIHRvIGZpbmQgZW50cnkgcG9pbnQgaW4gV2ViS2l0Mi5mcmFtZXdv
cms6ICVzXG4iLCBkbGVycm9yKCkpOworICAgICAgICAgICAgICAgICAgICBleGl0KEVYSVRfRkFJ
TFVSRSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgeHBjX29iamVjdF90
IHJlcGx5ID0geHBjX2RpY3Rpb25hcnlfY3JlYXRlX3JlcGx5KGV2ZW50KTsKKyAgICAgICAgICAg
ICAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKHJlcGx5LCAibWVzc2FnZS1uYW1lIiwgInBy
b2Nlc3MtZmluaXNoZWQtbGF1bmNoaW5nIik7CisgICAgICAgICAgICAgICAgeHBjX2Nvbm5lY3Rp
b25fc2VuZF9tZXNzYWdlKHhwY19kaWN0aW9uYXJ5X2dldF9yZW1vdGVfY29ubmVjdGlvbihldmVu
dCksIHJlcGx5KTsKKyAgICAgICAgICAgICAgICB4cGNfcmVsZWFzZShyZXBseSk7CisKKyAgICAg
ICAgICAgICAgICBJbml0aWFsaXplV2ViUHJvY2Vzc0Z1bmN0aW9uUHRyKHhwY19kaWN0aW9uYXJ5
X2dldF9zdHJpbmcoZXZlbnQsICJjbGllbnQtaWRlbnRpZmllciIpLCBwZWVyLCB4cGNfZGljdGlv
bmFyeV9jb3B5X21hY2hfc2VuZChldmVudCwgInNlcnZlci1wb3J0IikpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfSk7CisKKyAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUocGVlcik7
Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKyAgICB4cGNfbWFpbihX
ZWJQcm9jZXNzU2VydmljZUZvcldlYktpdERldmVsb3BtZW50RXZlbnRIYW5kbGVyKTsKKyAgICBy
ZXR1cm4gMDs7Cit9CisKKyNlbHNlCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikK
K3sKKyAgICByZXR1cm4gMDsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYWVjMDM1MGFkODljNzliNjdiMDBiYzQwYjY4ODU4
YjkxNjY0ZTBkMi4uMGQwMTQzYjZjZDE0MmZlMDY0NjdmMTMzMmRlNjA5ODRlNDYwOWRiNiAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE3IEBACisyMDEyLTA5LTIxICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgV2ViUHJvY2VzcyBYUEMgc2VydmljZXMgbmVlZCBoYXZlIHRoZWlyIGVudmlyb25tZW50IHNl
dCB3aXRob3V0IGRpc3J1cHRpbmcgYWxsIG90aGVyIFhQQyBzZXJ2aWNlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUxNjEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgc2V0dGluZyB0aGUgX19Y
UENfKiBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdGRp
cnMucG06CisgICAgICAgIChzZXRVcEd1YXJkTWFsbG9jSWZOZWVkZWQpOgorICAgICAgICAocnVu
TWFjV2ViS2l0QXBwKToKKyAgICAgICAgKGV4ZWNNYWNXZWJLaXRBcHBGb3JEZWJ1Z2dpbmcpOgor
CiAyMDEyLTA5LTE5ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAg
IHJ1bi1wZXJmLXRlc3RzIHNob3VsZCByZWNvcmQgaW5kaXZpZHVhbCB2YWx1ZSBpbnN0ZWFkIG9m
IHN0YXRpc3RpY3MKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbQppbmRleCA2ZjNkODY0ZTk1MzI1OWM0ZmE1ODEyNTM5
ZmEzMjBlNWVjMzRmMWMxLi5hZjRiNjRkYjI4MzQwMzJkODRlZDUxODA5ZTlkNzJiM2MzNjhjYzc5
IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdGRpcnMucG0KKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRkaXJzLnBtCkBAIC0xNDc2LDkgKzE0NzYsNiBAQCBzdWIgc2V0VXBHdWFyZE1h
bGxvY0lmTmVlZGVkCiAKICAgICBpZiAoJHNob3VsZFVzZUd1YXJkTWFsbG9jKSB7CiAgICAgICAg
IGFwcGVuZFRvRW52aXJvbm1lbnRWYXJpYWJsZUxpc3QoIkRZTERfSU5TRVJUX0xJQlJBUklFUyIs
ICIvdXNyL2xpYi9saWJnbWFsbG9jLmR5bGliIik7Ci0gICAgICAgIGlmIChzaG91bGRVc2VYUENT
ZXJ2aWNlRm9yV2ViUHJvY2VzcygpKSB7Ci0gICAgICAgICAgICBhcHBlbmRUb0Vudmlyb25tZW50
VmFyaWFibGVMaXN0KCJfX1hQQ19EWUxEX0lOU0VSVF9MSUJSQVJJRVMiLCAiL3Vzci9saWIvbGli
Z21hbGxvYy5keWxpYiIpOwotICAgICAgICB9CiAgICAgfQogfQogCkBAIC0yNTQ2LDggKzI1NDMs
NiBAQCBzdWIgcnVuTWFjV2ViS2l0QXBwKCQ7JCkKICAgICBzZXRVcEd1YXJkTWFsbG9jSWZOZWVk
ZWQoKTsKIAogICAgIGlmIChzaG91bGRVc2VYUENTZXJ2aWNlRm9yV2ViUHJvY2VzcygpKSB7Ci0g
ICAgICAgICRFTlZ7X19YUENfRFlMRF9GUkFNRVdPUktfUEFUSH0gPSAkcHJvZHVjdERpcjsKLSAg
ICAgICAgYXBwZW5kVG9FbnZpcm9ubWVudFZhcmlhYmxlTGlzdCgiX19YUENfRFlMRF9JTlNFUlRf
TElCUkFSSUVTIiwgRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkcHJvZHVjdERpciwgIldlYlByb2Nlc3NT
aGltLmR5bGliIikpOwogICAgICAgICAkRU5We1dFQktJVF9VU0VfWFBDX1NFUlZJQ0VfRk9SX1dF
Ql9QUk9DRVNTfSA9ICJZRVMiOwogICAgIH0KIApAQCAtMjU4OSw4ICsyNTg0LDYgQEAgc3ViIGV4
ZWNNYWNXZWJLaXRBcHBGb3JEZWJ1Z2dpbmcoJCkKICAgICBteSBAYXJjaGl0ZWN0dXJlRmxhZ3Mg
PSAoJGFyY2hpdGVjdHVyZVN3aXRjaCwgYXJjaGl0ZWN0dXJlKCkpOwogICAgIGlmICghc2hvdWxk
VGFyZ2V0V2ViUHJvY2VzcygpKSB7CiAgICAgICAgIGlmIChzaG91bGRVc2VYUENTZXJ2aWNlRm9y
V2ViUHJvY2VzcygpKSB7Ci0gICAgICAgICAgICAkRU5We19fWFBDX0RZTERfRlJBTUVXT1JLX1BB
VEh9ID0gJHByb2R1Y3REaXI7Ci0gICAgICAgICAgICBhcHBlbmRUb0Vudmlyb25tZW50VmFyaWFi
bGVMaXN0KCJfX1hQQ19EWUxEX0lOU0VSVF9MSUJSQVJJRVMiLCBGaWxlOjpTcGVjLT5jYXRmaWxl
KCRwcm9kdWN0RGlyLCAiV2ViUHJvY2Vzc1NoaW0uZHlsaWIiKSk7CiAgICAgICAgICAgICAkRU5W
e1dFQktJVF9VU0VfWFBDX1NFUlZJQ0VfRk9SX1dFQl9QUk9DRVNTfSA9ICJZRVMiOwogICAgICAg
ICB9CiAgICAgICAgIHByaW50ICJTdGFydGluZyBAe1tiYXNlbmFtZSgkYXBwUGF0aCldfSB1bmRl
ciAkZGVidWdnZXIgd2l0aCBEWUxEX0ZSQU1FV09SS19QQVRIIHNldCB0byBwb2ludCB0byBidWls
dCBXZWJLaXQgaW4gJHByb2R1Y3REaXIuXG4iOwo=
</data>
<flag name="review"
          id="177167"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>