<?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>70890</bug_id>
          
          <creation_ts>2011-10-26 02:18:20 -0700</creation_ts>
          <short_desc>ExceptionCode.cpp shouldn&apos;t need to know about every feature that throws exceptions</short_desc>
          <delta_ts>2011-10-28 11:06:36 -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>
          <dependson>71075</dependson>
    
    <dependson>71081</dependson>
    
    <dependson>71094</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>aroben</cc>
    
    <cc>eric</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>490684</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-26 02:18:20 -0700</bug_when>
    <thetext>ExceptionCode.h shouldn&apos;t need to know about every feature that throws exceptions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490686</commentid>
    <comment_count>1</comment_count>
      <attachid>112472</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-26 02:19:08 -0700</bug_when>
    <thetext>Created attachment 112472
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490687</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-26 02:20:01 -0700</bug_when>
    <thetext>My plan is to add InFilesCompiler.pm in this patch and then refactor the event code generators to use InFilesCompiler.pm in a followup patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491098</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-10-26 12:23:52 -0700</bug_when>
    <thetext>What is the rationale for this change? Without a good reason, this looks like over-engineering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491153</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-26 13:38:11 -0700</bug_when>
    <thetext>&gt; What is the rationale for this change? Without a good reason, this looks like over-engineering.

The goal is to reduce the cost the project pays for implementing new features by reducing the number of #ifdefs features impose on the rest of WebCore.  I&apos;m happy to discuss more on webkit-dev if you&apos;d like, but I&apos;d rather not discuss further on this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491170</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-10-26 14:03:12 -0700</bug_when>
    <thetext>Makes sense to discuss on webkit-dev. Would you be willing to send an e-mail?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491173</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-26 14:06:01 -0700</bug_when>
    <thetext>https://lists.webkit.org/pipermail/webkit-dev/2011-October/018293.html was a thread on this subject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491174</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-10-26 14:10:18 -0700</bug_when>
    <thetext>Unless I missed some of the e-mails, that thread was not discussing anything close to this patch. Of course, that work was undoubtedly an inspiration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491199</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-26 14:49:26 -0700</bug_when>
    <thetext>http://trac.webkit.org/browser/trunk/Source/WebCore/dom/ExceptionCode.cpp#L259 has the same problem as Event.cpp used to have.  Namely, every feature needs to &quot;register&quot; itself with ExceptionCode.cpp if it wants to use exceptions, leading to a nest of ifdefs that grows in complexity as WebCore adds features.

Anyway, if you have feedback on this work, please feel encouraged to reply to the thread on webkit-dev.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491248</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-10-26 16:11:33 -0700</bug_when>
    <thetext>I can see some value in generating parts of ExceptionCode.cpp. Whoever reviews the final patch will need to clearly think about whether it&apos;s an overall improvement or not, not just about technical correctness.

Looking at ExceptionCode.h alone, replacing conditional blocks with conditional lines in ExceptionCodeDescription.in would be useless, of course.

Please re-title the bug accordingly, as it isn&apos;t about the header alone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491366</commentid>
    <comment_count>10</comment_count>
      <attachid>112642</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-26 23:51:10 -0700</bug_when>
    <thetext>Created attachment 112642
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492040</commentid>
    <comment_count>11</comment_count>
      <attachid>112773</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-27 15:48:36 -0700</bug_when>
    <thetext>Created attachment 112773
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492052</commentid>
    <comment_count>12</comment_count>
      <attachid>112773</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-27 16:04:35 -0700</bug_when>
    <thetext>Comment on attachment 112773
Work in progress

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

Another way to break this down smaller, woudl be to not autogen any of this.  Or rathe rjust check in the autogen&apos;d bit.  i.e. do the logic-refactor, before doing the autogen of the logic refactor.  I think that would make this much easier to follow.

&gt; Source/WebCore/bindings/scripts/InFilesCompiler.pm:3
&gt; +#!/usr/bin/perl -w
&gt; +
&gt; +# Copyright (C) 2011 Adam Barth &lt;abarth@webkit.org&gt;

I would do this InFilesCompiler refactor in a first pass-change.

&gt; Source/WebCore/dom/DOMCoreException.cpp:38
&gt; +static const char* const exceptionNames[] = {
&gt; +    &quot;INDEX_SIZE_ERR&quot;,
&gt; +    &quot;DOMSTRING_SIZE_ERR&quot;,
&gt; +    &quot;HIERARCHY_REQUEST_ERR&quot;,
&gt; +    &quot;WRONG_DOCUMENT_ERR&quot;,

I would do this as a table of structs.  which you can easily define this same way.  If you don&apos;t do that, please add a FIXME about doing so.

&gt; Source/WebCore/dom/EventException.h:39
&gt; +    {

It would be better if you ddid the un-indent of these files in a separate change.  git stash your current work. :)

&gt; Source/WebCore/dom/make_exception_code_description.pl:179
&gt; +    print F &quot;ExceptionCodeDescription::ExceptionCodeDescription(ExceptionCode ec)\n&quot;;
&gt; +    print F &quot;{\n&quot;;
&gt; +
&gt; +    for my $exceptionType (sort keys %parsedItems) {
&gt; +        my $conditional = $parsedItems{$exceptionType}{&quot;conditional&quot;};
&gt; +
&gt; +        print F &quot;#if ENABLE($conditional)\n&quot; if $conditional;

When you write your changelog, it woudl be helpful to explain that this code will die, in the next iteration.  I also might suggest adding a FIXME here about that plan.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492060</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-27 16:13:17 -0700</bug_when>
    <thetext>Good idea.  I&apos;ll start a series of bugs blocking this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492299</commentid>
    <comment_count>14</comment_count>
      <attachid>112827</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-28 01:10:22 -0700</bug_when>
    <thetext>Created attachment 112827
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492308</commentid>
    <comment_count>15</comment_count>
      <attachid>112831</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-28 01:32:07 -0700</bug_when>
    <thetext>Created attachment 112831
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492310</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-28 01:33:28 -0700</bug_when>
    <thetext>Attachment 112831 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/WebCore/CMakeLists.tx...&quot; exit_code: 1

Source/WebCore/bindings/js/JSDOMBinding.cpp:217:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 1 in 20 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>492316</commentid>
    <comment_count>17</comment_count>
      <attachid>112831</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-28 01:53:24 -0700</bug_when>
    <thetext>Comment on attachment 112831
Patch

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

OK.  I get the sense you&apos;re setting the stage here.

&gt; Source/WebCore/dom/ExceptionCode.cpp:37
&gt; +    description = ExceptionCodeDescription(ec);

Seems you also want to inline this into ExceptionCode.  I assume there will be some sort of ExceptionCodeFactory?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492317</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-28 01:54:57 -0700</bug_when>
    <thetext>&gt; Seems you also want to inline this into ExceptionCode.  I assume there will be some sort of ExceptionCodeFactory?

Yeah, that function disappears in the next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492324</commentid>
    <comment_count>19</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-28 02:11:56 -0700</bug_when>
    <thetext>Committed r98711: &lt;http://trac.webkit.org/changeset/98711&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492398</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-10-28 05:38:01 -0700</bug_when>
    <thetext>Mac build fix in r98720.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492540</commentid>
    <comment_count>21</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-28 11:06:36 -0700</bug_when>
    <thetext>&gt; Mac build fix in r98720.

Thanks Adam.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112472</attachid>
            <date>2011-10-26 02:19:08 -0700</date>
            <delta_ts>2011-10-26 23:51:05 -0700</delta_ts>
            <desc>Work in progress</desc>
            <filename>bug-70890-20111026021907.patch</filename>
            <type>text/plain</type>
            <size>11691</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4NDU1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMTAtMjYgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBFeGNlcHRpb25Db2RlLmggc2hvdWxk
bid0IG5lZWQgdG8ga25vdyBhYm91dCBldmVyeSBmZWF0dXJlIHRoYXQgdGhyb3dzIGV4Y2VwdGlv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwODkw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0luRmlsZXNDb21w
aWxlci5wbTogQWRkZWQuCisgICAgICAgIChpdGVtSGFuZGxlcik6CisgICAgICAgIChwYXJhbWV0
ZXJIYW5kbGVyKToKKyAgICAgICAgKG5ldyk6CisgICAgICAgIChjb21waWxlKToKKyAgICAgICAg
KGdlbmVyYXRlTGljZW5zZSk6CisgICAgICAgICogZG9tL0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlv
bi5pbjogQWRkZWQuCisgICAgICAgICogZG9tL21ha2VfZXhjZXB0aW9uX2NvZGVfZGVzY3JpcHRp
b24ucGw6IEFkZGVkLgorICAgICAgICAoZGVmYXVsdEl0ZW1GYWN0b3J5KToKKyAgICAgICAgKGdl
bmVyYXRlQ29kZSk6CisgICAgICAgIChnZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChnZW5lcmF0
ZUltcGxlbWVudGF0aW9uKToKKwogMjAxMS0xMC0yNiAgVnNldm9sb2QgVmxhc292ICA8dnNldmlr
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBEZWJ1Z2dlciBmYWlscyB3
aGVuIHRoZXJlIGlzIGFuIGludmFsaWQgd2F0Y2ggZXhwcmVzc2lvbi4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSW5GaWxlc0NvbXBpbGVyLnBtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSW5GaWxlc0NvbXBpbGVyLnBtCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JbkZpbGVzQ29tcGls
ZXIucG0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTI1IEBACisjIS91c3IvYmluL3BlcmwgLXcK
KworIyBDb3B5cmlnaHQgKEMpIDIwMTEgQWRhbSBCYXJ0aCA8YWJhcnRoQHdlYmtpdC5vcmc+Cisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisjIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisjIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyMgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyMKKwordXNlIHN0cmljdDsKKwordXNlIElPOjpG
aWxlOworCitwYWNrYWdlIEluRmlsZXNDb21waWxlcjsKKworbXkgJGRlZmF1bHRJdGVtRmFjdG9y
eTsKKworbXkgJXBhcnNlZEl0ZW1zOworbXkgJXBhcnNlZFBhcmFtZXRlcnM7CisKK3N1YiBpdGVt
SGFuZGxlcigkJCQpCit7CisgICAgbXkgKCRpdGVtTmFtZSwgJHByb3BlcnR5LCAkdmFsdWUpID0g
QF87CisKKyAgICAkcGFyc2VkSXRlbXN7JGl0ZW1OYW1lfSA9IHsgJiRkZWZhdWx0SXRlbUZhY3Rv
cnkoJGl0ZW1OYW1lKSB9IGlmICFkZWZpbmVkKCRwYXJzZWRJdGVtc3skaXRlbU5hbWV9KTsKKwor
ICAgIHJldHVybiB1bmxlc3MgJHByb3BlcnR5OworCisgICAgZGllICJVbmtub3duIHByb3BlcnR5
ICRwcm9wZXJ0eSBmb3IgJGl0ZW1OYW1lXG4iIGlmICFkZWZpbmVkKCRwYXJzZWRJdGVtc3skaXRl
bU5hbWV9eyRwcm9wZXJ0eX0pOworICAgICRwYXJzZWRJdGVtc3skaXRlbU5hbWV9eyRwcm9wZXJ0
eX0gPSAkdmFsdWU7Cit9CisKK3N1YiBwYXJhbWV0ZXJIYW5kbGVyKCQkKQoreworICAgIG15ICgk
cGFyYW1ldGVyLCAkdmFsdWUpID0gQF87CisKKyAgICBkaWUgIlVua25vd24gcGFyYW1ldGVyICRw
YXJhbWV0ZXJcbiIgaWYgIWRlZmluZWQoJHBhcnNlZFBhcmFtZXRlcnN7JHBhcmFtZXRlcn0pOwor
ICAgICRwYXJzZWRQYXJhbWV0ZXJzeyRwYXJhbWV0ZXJ9ID0gJHZhbHVlOworfQorCitzdWIgbmV3
KCkKK3sKKyAgICBteSAkb2JqZWN0ID0gc2hpZnQ7CisgICAgbXkgJHJlZmVyZW5jZSA9IHsgfTsK
KworICAgICVwYXJzZWRQYXJhbWV0ZXJzID0gc2hpZnQ7CisgICAgJGRlZmF1bHRJdGVtRmFjdG9y
eSA9IHNoaWZ0OworCisgICAgJXBhcnNlZEl0ZW1zID0gKCk7CisKKyAgICBibGVzcygkcmVmZXJl
bmNlLCAkb2JqZWN0KTsKKyAgICByZXR1cm4gJHJlZmVyZW5jZTsKK30KKworc3ViIGNvbXBpbGUo
KQoreworICAgIG15ICRvYmplY3QgPSBzaGlmdDsKKworICAgIG15ICRpbnB1dEZpbGUgPSBzaGlm
dDsKKyAgICBteSAkZ2VuZXJhdGVDb2RlID0gc2hpZnQ7CisKKyAgICBteSAkZmlsZSA9IG5ldyBJ
Tzo6RmlsZTsKKyAgICBvcGVuKCRmaWxlLCAkaW5wdXRGaWxlKSBvciBkaWUgIkZhaWxlZCB0byBv
cGVuIGZpbGU6ICRpbnB1dEZpbGUiOworCisgICAgbXkgJEluUGFyc2VyID0gSW5GaWxlc1BhcnNl
ci0+bmV3KCk7CisgICAgJEluUGFyc2VyLT5wYXJzZSgkZmlsZSwgXCZwYXJhbWV0ZXJIYW5kbGVy
LCBcJml0ZW1IYW5kbGVyKTsKKworICAgIGNsb3NlKCRmaWxlKTsKKyAgICBkaWUgIkZhaWxlZCB0
byByZWFkIGZyb20gZmlsZTogJGlucHV0RmlsZSIgaWYgKGtleXMgJXBhcnNlZEl0ZW1zID09IDAp
OworCisgICAgJiRnZW5lcmF0ZUNvZGUoJHBhcnNlZFBhcmFtZXRlcnMsICRwYXJzZWRJdGVtcyk7
Cit9CisKK3N1YiBnZW5lcmF0ZUxpY2Vuc2UoKQoreworICAgIG15ICRvYmplY3QgPSBzaGlmdDsK
KyAgICBteSAkRiA9IHNoaWZ0OworCisgICAgcHJpbnQgRiAiLyoKKyAqIFRISVMgRklMRSBXQVMg
QVVUT01BVElDQUxMWSBHRU5FUkFURUQsIERPIE5PVCBFRElULgorICoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworIjsKK30KKwpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmluCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5p
bgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorbmFtZXNwYWNlPUV4Y2VwdGlvbkNvZGVE
ZXNjcmlwdGlvbgorCitFdmVudEV4Y2VwdGlvbgorRmlsZUV4Y2VwdGlvbiBjb25kaXRpb25hbD1C
TE9CCitJREJEYXRhYmFzZUV4Y2VwdGlvbiBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCitP
cGVyYXRpb25Ob3RBbGxvd2VkRXhjZXB0aW9uCitSYW5nZUV4Y2VwdGlvbgorU1FMRXhjZXB0aW9u
IGNvbmRpdGlvbmFsPVNRTF9EQVRBQkFTRQorU1ZHRXhjZXB0aW9uIGNvbmRpdGlvbmFsPVNWRwor
WE1MSHR0cFJlcXVlc3RFeGNlcHRpb24KK1hQYXRoRXhjZXB0aW9uCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vbWFrZV9leGNlcHRpb25fY29kZV9kZXNjcmlwdGlvbi5wbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9leGNlcHRpb25fY29kZV9kZXNjcmlwdGlvbi5wbAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX2V4Y2VwdGlvbl9jb2RlX2Rl
c2NyaXB0aW9uLnBsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4MCBAQAorIyEvdXNyL2Jpbi9w
ZXJsIC13CisKKyMgQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDA5LCBKdWxpZW4gQ2hh
ZmZyYWl4IDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisjIENvcHlyaWdodCAoQykgMjAwOSBUb3Jj
aCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmls
ZS5jb20vKQorIyBDb3B5cmlnaHQgKEMpIDIwMTEgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4gCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4gCisjIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVy
LCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisjICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisjICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uIAorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorIyBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwordXNlIHN0cmljdDsKKwordXNlIENv
bmZpZzsKK3VzZSBHZXRvcHQ6Okxvbmc7Cit1c2UgSW5GaWxlc0NvbXBpbGVyOworCityZXF1aXJl
IENvbmZpZzsKKworR2V0T3B0aW9ucygKKyAgICAnaW5wdXQ9cycgPT4gXCRpbnB1dEZpbGUsCisg
ICAgJ291dHB1dERpcj1zJyA9PiBcJG91dHB1dERpciwKKyk7CisKK21rcGF0aCgkb3V0cHV0RGly
KTsKKworZGllICJZb3UgbXVzdCBzcGVjaWZ5IC0taW5wdXQgPGZpbGU+IiB1bmxlc3MgbGVuZ3Ro
KCRpbnB1dEZpbGUpOworCitteSAkZGVmYXVsdFBhcmFtZXRlcnMgPSAoCisgICAgJ25hbWVzcGFj
ZScgPT4gMAorKTsKKworbXkgJEluQ29tcGlsZXIgPSBJbkZpbGVzUGFyc2VyLT5uZXcoJGRlZmF1
bHRQYXJhbWV0ZXJzLCBcJmRlZmF1bHRJdGVtRmFjdG9yeSk7CisKKyRJbkNvbXBpbGVyLT5jb21w
aWxlKCRpbnB1dEZpbGUsIFwmZ2VuZXJhdGVDb2RlKTsKKworc3ViIGRlZmF1bHRJdGVtRmFjdG9y
eQoreworICAgIHJldHVybiAoCisgICAgICAgICdjb25kaXRpb25hbCcgPT4gMAorICAgICk7Cit9
CisKK3N1YiBnZW5lcmF0ZUNvZGUoKQoreworICAgIG15ICRwYXJzZWRQYXJhbWV0ZXJzID0gc2hp
ZnQ7CisgICAgbXkgJHBhcnNlZEl0ZW1zID0gc2hpZnQ7CisKKyAgICBnZW5lcmF0ZUhlYWRlcigk
cGFyc2VkUGFyYW1ldGVycywgJHBhcnNlZEl0ZW1zKTsKKyAgICBnZW5lcmF0ZUltcGxlbWVudGF0
aW9uKCRwYXJzZWRQYXJhbWV0ZXJzLCAkcGFyc2VkSXRlbXMpOworfQorCitzdWIgZ2VuZXJhdGVI
ZWFkZXIoKQoreworICAgIG15ICRwYXJzZWRQYXJhbWV0ZXJzID0gc2hpZnQ7CisgICAgbXkgJHBh
cnNlZEl0ZW1zID0gc2hpZnQ7CisKKyAgICBteSAkb3V0cHV0RmlsZSA9ICIkb3V0cHV0RGlyL0V4
Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5oIjsKKworICAgIG9wZW4gRiwgIj4kb3V0cHV0RmlsZSI7
CisKKyAgICAkSW5Db21waWxlci0+Z2VuZXJhdGVMaWNlbnNlKCRGKTsKKworICAgIHByaW50IEYg
PDxFTkQKKyNpZm5kZWYgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uX2gKKyNkZWZpbmUgRXhjZXB0
aW9uQ29kZURlc2NyaXB0aW9uX2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIGlu
dCBFeGNlcHRpb25Db2RlOworCitlbnVtIEV4Y2VwdGlvblR5cGUgeworICAgIERPTUV4Y2VwdGlv
blR5cGUsCitFTkQKKyAgICBmb3IgbXkgJGV4Y2VwdGlvbkNvZGUgKHNvcnQga2V5cyAlcGFyc2Vk
SXRlbXMpIHsKKyAgICAgICAgbXkgJGNvbmRpdGlvbmFsID0gJHBhcnNlZEl0ZW1zeyRleGNlcHRp
b25Db2RlfXsiY29uZGl0aW9uYWwifTsKKworICAgICAgICBwcmludCBGICIjaWYgRU5BQkxFKCRj
b25kaXRpb25hbClcbiIgaWYgJGNvbmRpdGlvbmFsOworICAgICAgICBwcmludCBGICIgICAgJHtl
eGNlcHRpb25Db2RlfVR5cGUsXG4iOworICAgICAgICBwcmludCBGICIjZW5kaWZcbiIgaWYgJGNv
bmRpdGlvbmFsOworICAgIH0KKyAgICBwcmludCBGIDw8RU5ECit9OworCitzdHJ1Y3QgRXhjZXB0
aW9uQ29kZURlc2NyaXB0aW9uIHsKKyAgICBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24oRXhjZXB0
aW9uQ29kZSk7CisKKyAgICAvLyB8dHlwZU5hbWV8IGhhcyBzcGFjZXMgYW5kIGlzIHN1aXRhYmxl
IGZvciB1c2UgaW4gZXhjZXB0aW9uCisgICAgLy8gZGVzY3JpcHRpb24gc3RyaW5nczsgbWF4aW11
bSBsZW5ndGggaXMgMTAgY2hhcmFjdGVycy4KKyAgICBjb25zdCBjaGFyKiB0eXBlTmFtZTsgCisK
KyAgICAvLyB8bmFtZXwgaXMgdGhlIGV4Y2VwdGlvbiBuYW1lLCBhbHNvIGludGVuZGVkIGZvciB1
c2UgaW4gZXhjZXB0aW9uCisgICAgLy8gZGVzY3JpcHRpb24gc3RyaW5nczsgMCBpZiBuYW1lIG5v
dCBrbm93bjsgbWF4aW11bSBsZW5ndGggaXMgMjcKKyAgICAvLyBjaGFyYWN0ZXJzLgorICAgIGNv
bnN0IGNoYXIqIG5hbWU7IAorCisgICAgLy8gfGRlc2NyaXB0aW9ufCBpcyB0aGUgZXhjZXB0aW9u
IGRlc2NyaXB0aW9uLCBpbnRlbmRlZCBmb3IgdXNlIGluCisgICAgLy8gZXhjZXB0aW9uIHN0cmlu
Z3MuIEl0IGlzIGEgbW9yZSByZWFkYWJsZSBleHBsYW5hdGlvbiBvZiBlcnJvci4KKyAgICBjb25z
dCBjaGFyKiBkZXNjcmlwdGlvbjsKKworICAgIC8vIHxjb2RlfCBpcyB0aGUgbnVtZXJpYyB2YWx1
ZSBvZiB0aGUgZXhjZXB0aW9uIHdpdGhpbiBhIHBhcnRpY3VsYXIgdHlwZS4KKyAgICBpbnQgY29k
ZTsgCisKKyAgICBFeGNlcHRpb25UeXBlIHR5cGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb25faAorRU5ECisKKyAgICBj
bG9zZSBGOworfQorCitzdWIgZ2VuZXJhdGVJbXBsZW1lbnRhdGlvbigpCit7CisgICAgbXkgJHBh
cnNlZFBhcmFtZXRlcnMgPSBzaGlmdDsKKyAgICBteSAkcGFyc2VkSXRlbXMgPSBzaGlmdDsKKwor
ICAgIG15ICRvdXRwdXRGaWxlID0gIiRvdXRwdXREaXIvRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9u
LmNwcCI7CisKKyAgICBvcGVuIEYsICI+JG91dHB1dEZpbGUiOworCisgICAgJEluQ29tcGlsZXIt
PmdlbmVyYXRlTGljZW5zZSgkRik7CisKKyAgICBwcmludCBGIDw8RU5ECisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmgiCisKKyNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlLmgiCitFTkQKKyAgICBmb3IgbXkgJGV4Y2VwdGlvbkNvZGUgKHNvcnQg
a2V5cyAlcGFyc2VkSXRlbXMpIHsKKyAgICAgICAgcHJpbnQgRiAiI2luY2x1ZGUgXCIkZXhjZXB0
aW9uQ29kZS5oXCJcbiI7CisgICAgfQorICAgIHByaW50IEYgPDxFTkQKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitFeGNlcHRpb25Db2RlRGVzY3JpcHRpb246OkV4Y2VwdGlvbkNvZGVEZXNjcmlw
dGlvbihFeGNlcHRpb25Db2RlIGNvZGUpCit7CitFTkQKKyAgICBmb3IgbXkgJGV4Y2VwdGlvbkNv
ZGUgKHNvcnQga2V5cyAlcGFyc2VkSXRlbXMpIHsKKyAgICAgICAgbXkgJGNvbmRpdGlvbmFsID0g
JHBhcnNlZEl0ZW1zeyRleGNlcHRpb25Db2RlfXsiY29uZGl0aW9uYWwifTsKKworICAgICAgICBw
cmludCBGICIjaWYgRU5BQkxFKCRjb25kaXRpb25hbClcbiIgaWYgJGNvbmRpdGlvbmFsOworICAg
ICAgICBwcmludCBGICIgICAgaWYgKGluaXRpYWxpemUke2NvbmRpdGlvbmFsfURlc2NyaXB0aW9u
KGNvZGUsIHRoaXMpKVxuIjsKKyAgICAgICAgcHJpbnQgRiAiICAgICAgICByZXR1cm47XG4iOwor
ICAgICAgICBwcmludCBGICIjZW5kaWZcbiIgaWYgJGNvbmRpdGlvbmFsOworICAgIH0KKyAgICBw
cmludCBGIDw8RU5ECisgICAgaW5pdGlhbGl6ZURPTUV4Y2VwdGlvbkRlc2NyaXB0aW9uKGNvZGUs
IHRoaXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCitFTkQKKworICAgIGNsb3NlIEY7
Cit9CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112642</attachid>
            <date>2011-10-26 23:51:10 -0700</date>
            <delta_ts>2011-10-27 15:48:30 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-70890-20111026235109.patch</filename>
            <type>text/plain</type>
            <size>22244</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4NDU1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMTAtMjYgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBFeGNlcHRpb25Db2RlLmggc2hvdWxk
bid0IG5lZWQgdG8ga25vdyBhYm91dCBldmVyeSBmZWF0dXJlIHRoYXQgdGhyb3dzIGV4Y2VwdGlv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwODkw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0luRmlsZXNDb21w
aWxlci5wbTogQWRkZWQuCisgICAgICAgIChpdGVtSGFuZGxlcik6CisgICAgICAgIChwYXJhbWV0
ZXJIYW5kbGVyKToKKyAgICAgICAgKG5ldyk6CisgICAgICAgIChjb21waWxlKToKKyAgICAgICAg
KGdlbmVyYXRlTGljZW5zZSk6CisgICAgICAgICogZG9tL0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlv
bi5pbjogQWRkZWQuCisgICAgICAgICogZG9tL21ha2VfZXhjZXB0aW9uX2NvZGVfZGVzY3JpcHRp
b24ucGw6IEFkZGVkLgorICAgICAgICAoZGVmYXVsdEl0ZW1GYWN0b3J5KToKKyAgICAgICAgKGdl
bmVyYXRlQ29kZSk6CisgICAgICAgIChnZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChnZW5lcmF0
ZUltcGxlbWVudGF0aW9uKToKKwogMjAxMS0xMC0yNiAgVnNldm9sb2QgVmxhc292ICA8dnNldmlr
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBEZWJ1Z2dlciBmYWlscyB3
aGVuIHRoZXJlIGlzIGFuIGludmFsaWQgd2F0Y2ggZXhwcmVzc2lvbi4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gOTg0MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC01ODgsNiArNTg4LDcgQEAgYWxs
IDogXAogICAgIENvbG9yRGF0YS5jcHAgXAogICAgIEV2ZW50RmFjdG9yeS5jcHAgXAogICAgIEV2
ZW50VGFyZ2V0SW50ZXJmYWNlcy5oIFwKKyAgICBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uY3Bw
IFwKICAgICBIVE1MRWxlbWVudEZhY3RvcnkuY3BwIFwKICAgICBIVE1MRW50aXR5VGFibGUuY3Bw
IFwKICAgICBIVE1MTmFtZXMuY3BwIFwKQEAgLTg1Niw2ICs4NTcsOSBAQCBFdmVudEZhY3Rvcnku
Y3BwIEV2ZW50SGVhZGVycy5oIEV2ZW50SW50CiBFdmVudFRhcmdldEhlYWRlcnMuaCBFdmVudFRh
cmdldEludGVyZmFjZXMuaCA6IGRvbS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwgZG9tL0V2ZW50VGFy
Z2V0RmFjdG9yeS5pbgogCXBlcmwgLUkgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzICQ8IC0t
ZXZlbnRzICQoV2ViQ29yZSkvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgogCitFeGNlcHRpb25D
b2RlRGVzY3JpcHRpb24uY3BwIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5oIDogZG9tL21ha2Vf
ZXhjZXB0aW9uX2NvZGVfZGVzY3JpcHRpb24ucGwgZG9tL0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlv
bi5pbgorCXBlcmwgLUkgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzICQ8IC0taW5wdXQgJChX
ZWJDb3JlKS9kb20vRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmluCisKICMgLS0tLS0tLS0KICAK
ICMgTWF0aE1MIHRhZyBhbmQgYXR0cmlidXRlIG5hbWVzLCBhbmQgZWxlbWVudCBmYWN0b3J5Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiA5ODQzOCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzI2OCw2ICszMjY4LDggQEAKIAkJ
OTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3N0UyRTBDMTJGMEZDOUMwMEMxMzM3OSAv
KiBYU1NBdWRpdG9yLmggKi87IH07CiAJCTk3OEFENjc0MTQxMzBBOEQwMEM3Q0FFMyAvKiBIVE1M
U3BhbkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTc4QUQ2NzExNDEzMEE4RDAwQzdDQUUzIC8qIEhUTUxTcGFuRWxlbWVudC5jcHAgKi87
IH07CiAJCTk3OEFENjc1MTQxMzBBOEQwMEM3Q0FFMyAvKiBIVE1MU3BhbkVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OEFENjcyMTQxMzBB
OEQwMEM3Q0FFMyAvKiBIVE1MU3BhbkVsZW1lbnQuaCAqLzsgfTsKKwkJOTc5MjE4RDAxNDU4RjI5
QTAwMUMxMjI4IC8qIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzkyMThDRTE0NThGMjlBMDAxQzEyMjgg
LyogRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmNwcCAqLzsgfTsKKwkJOTc5MjE4RDExNDU4RjI5
QTAwMUMxMjI4IC8qIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc5MjE4Q0YxNDU4RjI5QTAwMUMxMjI4IC8q
IEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5oICovOyB9OwogCQk5NzlGNDNEMzEwNzVFNDRBMDAw
MEY4M0IgLyogTmF2aWdhdGlvblNjaGVkdWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzlGNDNEMTEwNzVFNDRBMDAwMEY4M0IgLyogTmF2aWdh
dGlvblNjaGVkdWxlci5jcHAgKi87IH07CiAJCTk3OUY0M0Q0MTA3NUU0NEEwMDAwRjgzQiAvKiBO
YXZpZ2F0aW9uU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NzlGNDNEMjEwNzVFNDRBMDAwMEY4M0IgLyogTmF2aWdhdGlvblNjaGVkdWxl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3
QUEzQ0E1MTQ1MjM3Q0MwMDNFMURBNiAvKiBFdmVudFRhcmdldEhlYWRlcnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QUEzQ0EzMTQ1MjM3Q0MwMDNF
MURBNiAvKiBFdmVudFRhcmdldEhlYWRlcnMuaCAqLzsgfTsKQEAgLTEwNDAyLDYgKzEwNDA0LDgg
QEAKIAkJOTc4QUQ2NzExNDEzMEE4RDAwQzdDQUUzIC8qIEhUTUxTcGFuRWxlbWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MU3BhbkVsZW1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzhBRDY3MjE0MTMwQThEMDBDN0NBRTMgLyog
SFRNTFNwYW5FbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxT
cGFuRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzhBRDY3MzE0MTMw
QThEMDBDN0NBRTMgLyogSFRNTFNwYW5FbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBIVE1MU3BhbkVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5Nzky
MThDRTE0NThGMjlBMDAxQzEyMjggLyogRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3OTIxOENGMTQ1OEYyOUEwMDFD
MTIyOCAvKiBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk3OUY0M0QxMTA3NUU0NEEwMDAwRjgzQiAvKiBOYXZpZ2F0aW9uU2NoZWR1
bGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hdmlnYXRpb25T
Y2hlZHVsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzlGNDNEMjEwNzVF
NDRBMDAwMEY4M0IgLyogTmF2aWdhdGlvblNjaGVkdWxlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBOYXZpZ2F0aW9uU2NoZWR1bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk3QUEzQ0EzMTQ1MjM3Q0MwMDNFMURBNiAvKiBFdmVudFRhcmdldEhlYWRlcnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRUYXJnZXRIZWFkZXJzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTE1MSw2ICsxNTE1NSw4IEBACiAJCQkJ
OTcwQjcyODkxNDRGRkFDNjAwRjAwQTM3IC8qIEV2ZW50SW50ZXJmYWNlcy5oICovLAogCQkJCTk3
QUEzQ0EzMTQ1MjM3Q0MwMDNFMURBNiAvKiBFdmVudFRhcmdldEhlYWRlcnMuaCAqLywKIAkJCQk5
N0FBM0NBNDE0NTIzN0NDMDAzRTFEQTYgLyogRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmggKi8sCisJ
CQkJOTc5MjE4Q0UxNDU4RjI5QTAwMUMxMjI4IC8qIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5j
cHAgKi8sCisJCQkJOTc5MjE4Q0YxNDU4RjI5QTAwMUMxMjI4IC8qIEV4Y2VwdGlvbkNvZGVEZXNj
cmlwdGlvbi5oICovLAogCQkJCUExN0M4MTIwMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVu
dEZhY3RvcnkuY3BwICovLAogCQkJCUExN0M4MTIxMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxl
bWVudEZhY3RvcnkuaCAqLywKIAkJCQlBOEJDMDQ5MTEyMTRGNjk2MDBCNUYxMjIgLyogSFRNTEVu
dGl0eVRhYmxlLmNwcCAqLywKQEAgLTI0NDkwLDYgKzI0NDk2LDcgQEAKIAkJCQk5NzBCNzI4QTE0
NEZGQUM2MDBGMDBBMzcgLyogRXZlbnRJbnRlcmZhY2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
NzBCNzJBNjE0NTAwOEVCMDBGMDBBMzcgLyogRXZlbnRIZWFkZXJzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5QjNBODg3MjE0NTYzMkY5MDAzQUU4RjUgLyogRE9NRE9NU2V0dGFibGVUb2tlbkxpc3Qu
aCBpbiBIZWFkZXJzICovLAorCQkJCTk3OTIxOEQxMTQ1OEYyOUEwMDFDMTIyOCAvKiBFeGNlcHRp
b25Db2RlRGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjczMjcsNiArMjczMzQsNyBA
QAogCQkJCTk3NjY1MDRGMTQ0RkJGRkUwMEY2QkI1MSAvKiBFdmVudEZhY3RvcnkuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTBFRTBERjUxNDRGODI1NTAwRjgwQjBEIC8qIFdlYkdMRGVidWdSZW5k
ZXJlckluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTBFRTBERjcxNDRGODI1NTAwRjgwQjBE
IC8qIFdlYkdMRGVidWdTaGFkZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk3OTIxOEQwMTQ1
OEYyOUEwMDFDMTIyOCAvKiBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0luRmlsZXNDb21waWxl
ci5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0luRmls
ZXNDb21waWxlci5wbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvSW5GaWxlc0NvbXBpbGVyLnBtCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyNSBAQAor
IyEvdXNyL2Jpbi9wZXJsIC13CisKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFkYW0gQmFydGggPGFi
YXJ0aEB3ZWJraXQub3JnPgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dM
RSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisjIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorIyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorIyBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisjIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisjCisKK3VzZSBz
dHJpY3Q7CisKK3VzZSBJTzo6RmlsZTsKK3VzZSBJbkZpbGVzUGFyc2VyOworCitwYWNrYWdlIElu
RmlsZXNDb21waWxlcjsKKworbXkgJGRlZmF1bHRJdGVtRmFjdG9yeTsKKworbXkgJXBhcnNlZEl0
ZW1zOworbXkgJXBhcnNlZFBhcmFtZXRlcnM7CisKK3N1YiBpdGVtSGFuZGxlcigkJCQpCit7Cisg
ICAgbXkgKCRpdGVtTmFtZSwgJHByb3BlcnR5LCAkdmFsdWUpID0gQF87CisKKyAgICAkcGFyc2Vk
SXRlbXN7JGl0ZW1OYW1lfSA9IHsgJiRkZWZhdWx0SXRlbUZhY3RvcnkoJGl0ZW1OYW1lKSB9IGlm
ICFkZWZpbmVkKCRwYXJzZWRJdGVtc3skaXRlbU5hbWV9KTsKKworICAgIHJldHVybiB1bmxlc3Mg
JHByb3BlcnR5OworCisgICAgZGllICJVbmtub3duIHByb3BlcnR5ICRwcm9wZXJ0eSBmb3IgJGl0
ZW1OYW1lXG4iIGlmICFkZWZpbmVkKCRwYXJzZWRJdGVtc3skaXRlbU5hbWV9eyRwcm9wZXJ0eX0p
OworICAgICRwYXJzZWRJdGVtc3skaXRlbU5hbWV9eyRwcm9wZXJ0eX0gPSAkdmFsdWU7Cit9CisK
K3N1YiBwYXJhbWV0ZXJIYW5kbGVyKCQkKQoreworICAgIG15ICgkcGFyYW1ldGVyLCAkdmFsdWUp
ID0gQF87CisKKyAgICBkaWUgIlVua25vd24gcGFyYW1ldGVyICRwYXJhbWV0ZXJcbiIgaWYgIWRl
ZmluZWQoJHBhcnNlZFBhcmFtZXRlcnN7JHBhcmFtZXRlcn0pOworICAgICRwYXJzZWRQYXJhbWV0
ZXJzeyRwYXJhbWV0ZXJ9ID0gJHZhbHVlOworfQorCitzdWIgbmV3KCkKK3sKKyAgICBteSAkb2Jq
ZWN0ID0gc2hpZnQ7CisgICAgbXkgJHJlZmVyZW5jZSA9IHsgfTsKKworICAgIG15ICRkZWZhdWx0
UGFyYW1ldGVyc1JlZiA9IHNoaWZ0OworICAgICVwYXJzZWRQYXJhbWV0ZXJzID0gJXsgJGRlZmF1
bHRQYXJhbWV0ZXJzUmVmIH07CisgICAgJGRlZmF1bHRJdGVtRmFjdG9yeSA9IHNoaWZ0OworCisg
ICAgJXBhcnNlZEl0ZW1zID0gKCk7CisKKyAgICBibGVzcygkcmVmZXJlbmNlLCAkb2JqZWN0KTsK
KyAgICByZXR1cm4gJHJlZmVyZW5jZTsKK30KKworc3ViIGNvbXBpbGUoKQoreworICAgIG15ICRv
YmplY3QgPSBzaGlmdDsKKworICAgIG15ICRpbnB1dEZpbGUgPSBzaGlmdDsKKyAgICBteSAkZ2Vu
ZXJhdGVDb2RlID0gc2hpZnQ7CisKKyAgICBteSAkZmlsZSA9IG5ldyBJTzo6RmlsZTsKKyAgICBv
cGVuKCRmaWxlLCAkaW5wdXRGaWxlKSBvciBkaWUgIkZhaWxlZCB0byBvcGVuIGZpbGU6ICRpbnB1
dEZpbGUiOworCisgICAgbXkgJEluUGFyc2VyID0gSW5GaWxlc1BhcnNlci0+bmV3KCk7CisgICAg
JEluUGFyc2VyLT5wYXJzZSgkZmlsZSwgXCZwYXJhbWV0ZXJIYW5kbGVyLCBcJml0ZW1IYW5kbGVy
KTsKKworICAgIGNsb3NlKCRmaWxlKTsKKyAgICBkaWUgIkZhaWxlZCB0byByZWFkIGZyb20gZmls
ZTogJGlucHV0RmlsZSIgaWYgKGtleXMgJXBhcnNlZEl0ZW1zID09IDApOworCisgICAgJiRnZW5l
cmF0ZUNvZGUoXCVwYXJzZWRQYXJhbWV0ZXJzLCBcJXBhcnNlZEl0ZW1zKTsKK30KKworc3ViIGxp
Y2Vuc2UoKQoreworICAgIHJldHVybiAiLyoKKyAqIFRISVMgRklMRSBXQVMgQVVUT01BVElDQUxM
WSBHRU5FUkFURUQsIERPIE5PVCBFRElULgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworIjsKK30KKworMTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9FeGNlcHRpb25Db2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL0V4Y2VwdGlvbkNvZGUuaAkocmV2aXNpb24gOTg0MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vRXhjZXB0aW9uQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw4MiArMTksNTMgQEAKICNp
Zm5kZWYgRXhjZXB0aW9uQ29kZV9oCiAjZGVmaW5lIEV4Y2VwdGlvbkNvZGVfaAogCisjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
ICAgIC8vIFRoZSBET00gc3RhbmRhcmRzIHVzZSB1bnNpZ25lZCBzaG9ydCBmb3IgZXhjZXB0aW9u
IGNvZGVzLgotICAgIC8vIEluIG91ciBET00gaW1wbGVtZW50YXRpb24gd2UgdXNlIGludCBpbnN0
ZWFkLCBhbmQgdXNlIGRpZmZlcmVudAotICAgIC8vIG51bWVyaWNhbCByYW5nZXMgZm9yIGRpZmZl
cmVudCB0eXBlcyBvZiBET00gZXhjZXB0aW9uLCBzbyB0aGF0Ci0gICAgLy8gYW4gZXhjZXB0aW9u
IG9mIGFueSB0eXBlIGNhbiBiZSBleHByZXNzZWQgd2l0aCBhIHNpbmdsZSBpbnRlZ2VyLgotICAg
IHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0KLSAgICBlbnVtIHsKLSAgICAgICAgSU5ERVhf
U0laRV9FUlIgPSAxLAotICAgICAgICBET01TVFJJTkdfU0laRV9FUlIgPSAyLAotICAgICAgICBI
SUVSQVJDSFlfUkVRVUVTVF9FUlIgPSAzLAotICAgICAgICBXUk9OR19ET0NVTUVOVF9FUlIgPSA0
LAotICAgICAgICBJTlZBTElEX0NIQVJBQ1RFUl9FUlIgPSA1LAotICAgICAgICBOT19EQVRBX0FM
TE9XRURfRVJSID0gNiwKLSAgICAgICAgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSID0gNywK
LSAgICAgICAgTk9UX0ZPVU5EX0VSUiA9IDgsCi0gICAgICAgIE5PVF9TVVBQT1JURURfRVJSID0g
OSwKLSAgICAgICAgSU5VU0VfQVRUUklCVVRFX0VSUiA9IDEwLAotCi0gICAgICAgIC8vIEludHJv
ZHVjZWQgaW4gRE9NIExldmVsIDI6Ci0gICAgICAgIElOVkFMSURfU1RBVEVfRVJSID0gMTEsCi0g
ICAgICAgIFNZTlRBWF9FUlIgPSAxMiwKLSAgICAgICAgSU5WQUxJRF9NT0RJRklDQVRJT05fRVJS
ID0gMTMsCi0gICAgICAgIE5BTUVTUEFDRV9FUlIgPSAxNCwKLSAgICAgICAgSU5WQUxJRF9BQ0NF
U1NfRVJSID0gMTUsCi0KLSAgICAgICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMzoKLSAg
ICAgICAgVkFMSURBVElPTl9FUlIgPSAxNiwKLSAgICAgICAgVFlQRV9NSVNNQVRDSF9FUlIgPSAx
NywKLQotICAgICAgICAvLyBYTUxIdHRwUmVxdWVzdCBleHRlbnNpb246Ci0gICAgICAgIFNFQ1VS
SVRZX0VSUiA9IDE4LAotCi0gICAgICAgIC8vIE90aGVycyBpbnRyb2R1Y2VkIGluIEhUTUw1Ogot
ICAgICAgICBORVRXT1JLX0VSUiA9IDE5LAotICAgICAgICBBQk9SVF9FUlIgPSAyMCwKLSAgICAg
ICAgVVJMX01JU01BVENIX0VSUiA9IDIxLAotICAgICAgICBRVU9UQV9FWENFRURFRF9FUlIgPSAy
MiwKLSAgICAgICAgVElNRU9VVF9FUlIgPSAyMywKLSAgICAgICAgSU5WQUxJRF9OT0RFX1RZUEVf
RVJSID0gMjQsCi0gICAgICAgIERBVEFfQ0xPTkVfRVJSID0gMjUKLSAgICB9OwotCi0gICAgZW51
bSBFeGNlcHRpb25UeXBlIHsKLSAgICAgICAgRE9NRXhjZXB0aW9uVHlwZSwKLSAgICAgICAgUmFu
Z2VFeGNlcHRpb25UeXBlLAotICAgICAgICBFdmVudEV4Y2VwdGlvblR5cGUsCi0gICAgICAgIFhN
TEh0dHBSZXF1ZXN0RXhjZXB0aW9uVHlwZSwKLSAgICAgICAgWFBhdGhFeGNlcHRpb25UeXBlCi0j
aWYgRU5BQkxFKFNWRykKLSAgICAgICAgLCBTVkdFeGNlcHRpb25UeXBlCi0jZW5kaWYKLSNpZiBF
TkFCTEUoU1FMX0RBVEFCQVNFKQotICAgICAgICAsIFNRTEV4Y2VwdGlvblR5cGUKLSNlbmRpZgot
I2lmIEVOQUJMRShCTE9CKSB8fCBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgICAgICwgRmlsZUV4
Y2VwdGlvblR5cGUKLSNlbmRpZgotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotICAgICAg
ICAsIElEQkRhdGFiYXNlRXhjZXB0aW9uVHlwZQotI2VuZGlmCi0jaWYgRU5BQkxFKEJMT0IpIHx8
IEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICAgICAgLCBPcGVyYXRpb25Ob3RBbGxvd2VkRXhjZXB0
aW9uVHlwZQotI2VuZGlmCi0gICAgfTsKLQotCi0gICAgc3RydWN0IEV4Y2VwdGlvbkNvZGVEZXNj
cmlwdGlvbiB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIHR5cGVOYW1lOyAvLyBoYXMgc3BhY2VzIGFu
ZCBpcyBzdWl0YWJsZSBmb3IgdXNlIGluIGV4Y2VwdGlvbiBkZXNjcmlwdGlvbiBzdHJpbmdzOyBt
YXhpbXVtIGxlbmd0aCBpcyAxMCBjaGFyYWN0ZXJzCi0gICAgICAgIGNvbnN0IGNoYXIqIG5hbWU7
IC8vIGV4Y2VwdGlvbiBuYW1lLCBhbHNvIGludGVuZGVkIGZvciB1c2UgaW4gZXhjZXB0aW9uIGRl
c2NyaXB0aW9uIHN0cmluZ3M7IDAgaWYgbmFtZSBub3Qga25vd247IG1heGltdW0gbGVuZ3RoIGlz
IDI3IGNoYXJhY3RlcnMKLSAgICAgICAgY29uc3QgY2hhciogZGVzY3JpcHRpb247IC8vIGV4Y2Vw
dGlvbiBkZXNjcmlwdGlvbiwgaW50ZW5kZWQgZm9yIHVzZSBpbiBleGNlcHRpb24gc3RyaW5nczsg
bW9yZSByZWFkYWJsZSBleHBsYW5hdGlvbiBvZiBlcnJvcgotICAgICAgICBpbnQgY29kZTsgLy8g
bnVtZXJpYyB2YWx1ZSBvZiB0aGUgZXhjZXB0aW9uIHdpdGhpbiBhIHBhcnRpY3VsYXIgdHlwZQot
ICAgICAgICBFeGNlcHRpb25UeXBlIHR5cGU7Ci0gICAgfTsKLSAgICB2b2lkIGdldEV4Y2VwdGlv
bkNvZGVEZXNjcmlwdGlvbihFeGNlcHRpb25Db2RlLCBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24m
KTsKKy8vIFRoZSBET00gc3RhbmRhcmRzIHVzZSB1bnNpZ25lZCBzaG9ydCBmb3IgZXhjZXB0aW9u
IGNvZGVzLgorLy8gSW4gb3VyIERPTSBpbXBsZW1lbnRhdGlvbiB3ZSB1c2UgaW50IGluc3RlYWQs
IGFuZCB1c2UgZGlmZmVyZW50CisvLyBudW1lcmljYWwgcmFuZ2VzIGZvciBkaWZmZXJlbnQgdHlw
ZXMgb2YgRE9NIGV4Y2VwdGlvbiwgc28gdGhhdAorLy8gYW4gZXhjZXB0aW9uIG9mIGFueSB0eXBl
IGNhbiBiZSBleHByZXNzZWQgd2l0aCBhIHNpbmdsZSBpbnRlZ2VyLgordHlwZWRlZiBpbnQgRXhj
ZXB0aW9uQ29kZTsKKworZW51bSB7CisgICAgSU5ERVhfU0laRV9FUlIgPSAxLAorICAgIERPTVNU
UklOR19TSVpFX0VSUiA9IDIsCisgICAgSElFUkFSQ0hZX1JFUVVFU1RfRVJSID0gMywKKyAgICBX
Uk9OR19ET0NVTUVOVF9FUlIgPSA0LAorICAgIElOVkFMSURfQ0hBUkFDVEVSX0VSUiA9IDUsCisg
ICAgTk9fREFUQV9BTExPV0VEX0VSUiA9IDYsCisgICAgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURf
RVJSID0gNywKKyAgICBOT1RfRk9VTkRfRVJSID0gOCwKKyAgICBOT1RfU1VQUE9SVEVEX0VSUiA9
IDksCisgICAgSU5VU0VfQVRUUklCVVRFX0VSUiA9IDEwLAorCisgICAgLy8gSW50cm9kdWNlZCBp
biBET00gTGV2ZWwgMjoKKyAgICBJTlZBTElEX1NUQVRFX0VSUiA9IDExLAorICAgIFNZTlRBWF9F
UlIgPSAxMiwKKyAgICBJTlZBTElEX01PRElGSUNBVElPTl9FUlIgPSAxMywKKyAgICBOQU1FU1BB
Q0VfRVJSID0gMTQsCisgICAgSU5WQUxJRF9BQ0NFU1NfRVJSID0gMTUsCisKKyAgICAvLyBJbnRy
b2R1Y2VkIGluIERPTSBMZXZlbCAzOgorICAgIFZBTElEQVRJT05fRVJSID0gMTYsCisgICAgVFlQ
RV9NSVNNQVRDSF9FUlIgPSAxNywKKworICAgIC8vIFhNTEh0dHBSZXF1ZXN0IGV4dGVuc2lvbjoK
KyAgICBTRUNVUklUWV9FUlIgPSAxOCwKKworICAgIC8vIE90aGVycyBpbnRyb2R1Y2VkIGluIEhU
TUw1OgorICAgIE5FVFdPUktfRVJSID0gMTksCisgICAgQUJPUlRfRVJSID0gMjAsCisgICAgVVJM
X01JU01BVENIX0VSUiA9IDIxLAorICAgIFFVT1RBX0VYQ0VFREVEX0VSUiA9IDIyLAorICAgIFRJ
TUVPVVRfRVJSID0gMjMsCisgICAgSU5WQUxJRF9OT0RFX1RZUEVfRVJSID0gMjQsCisgICAgREFU
QV9DTE9ORV9FUlIgPSAyNQorfTsKKwordm9pZCBnZXRFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24o
RXhjZXB0aW9uQ29kZSwgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uJik7CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGVEZXNj
cmlwdGlvbi5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29k
ZURlc2NyaXB0aW9uLmluCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V4Y2Vw
dGlvbkNvZGVEZXNjcmlwdGlvbi5pbgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorbmFt
ZXNwYWNlPUV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbgorCitFdmVudEV4Y2VwdGlvbgorRmlsZUV4
Y2VwdGlvbiBjb25kaXRpb25hbD1CTE9CCitJREJEYXRhYmFzZUV4Y2VwdGlvbiBjb25kaXRpb25h
bD1JTkRFWEVEX0RBVEFCQVNFCitPcGVyYXRpb25Ob3RBbGxvd2VkRXhjZXB0aW9uCitSYW5nZUV4
Y2VwdGlvbgorU1FMRXhjZXB0aW9uIGNvbmRpdGlvbmFsPVNRTF9EQVRBQkFTRQorU1ZHRXhjZXB0
aW9uIGNvbmRpdGlvbmFsPVNWRworWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24KK1hQYXRoRXhjZXB0
aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9leGNlcHRpb25fY29kZV9kZXNjcmlw
dGlvbi5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9leGNlcHRpb25f
Y29kZV9kZXNjcmlwdGlvbi5wbAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9t
YWtlX2V4Y2VwdGlvbl9jb2RlX2Rlc2NyaXB0aW9uLnBsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDE4OSBAQAorIyEvdXNyL2Jpbi9wZXJsIC13CisKKyMgQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2
LCAyMDA3LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0
IChDKSAyMDA5LCBKdWxpZW4gQ2hhZmZyYWl4IDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisjIENv
cHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAo
aHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQorIyBDb3B5cmlnaHQgKEMpIDIwMTEgRXJpY3Nz
b24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUs
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIworIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisjIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisjIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisj
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCisjICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorIyBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyMgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
dXNlIHN0cmljdDsKKwordXNlIENvbmZpZzsKK3VzZSBHZXRvcHQ6Okxvbmc7Cit1c2UgRmlsZTo6
UGF0aDsKK3VzZSBGaWxlOjpTcGVjOwordXNlIElPOjpGaWxlOwordXNlIEluRmlsZXNDb21waWxl
cjsKKworcmVxdWlyZSBDb25maWc7CisKK215ICRpbnB1dEZpbGU7CitteSAkb3V0cHV0RGlyID0g
Ii4iOworCitHZXRPcHRpb25zKAorICAgICdpbnB1dD1zJyA9PiBcJGlucHV0RmlsZSwKKyAgICAn
b3V0cHV0RGlyPXMnID0+IFwkb3V0cHV0RGlyLAorKTsKKworbWtwYXRoKCRvdXRwdXREaXIpOwor
CitkaWUgIllvdSBtdXN0IHNwZWNpZnkgLS1pbnB1dCA8ZmlsZT4iIHVubGVzcyBsZW5ndGgoJGlu
cHV0RmlsZSk7CisKK215ICVkZWZhdWx0UGFyYW1ldGVycyA9ICgKKyAgICAnbmFtZXNwYWNlJyA9
PiAwCispOworCitteSAkSW5Db21waWxlciA9IEluRmlsZXNDb21waWxlci0+bmV3KFwlZGVmYXVs
dFBhcmFtZXRlcnMsIFwmZGVmYXVsdEl0ZW1GYWN0b3J5KTsKKworJEluQ29tcGlsZXItPmNvbXBp
bGUoJGlucHV0RmlsZSwgXCZnZW5lcmF0ZUNvZGUpOworCitzdWIgZGVmYXVsdEl0ZW1GYWN0b3J5
Cit7CisgICAgcmV0dXJuICgKKyAgICAgICAgJ2NvbmRpdGlvbmFsJyA9PiAwCisgICAgKTsKK30K
Kworc3ViIGdlbmVyYXRlQ29kZSgpCit7CisgICAgbXkgJHBhcnNlZFBhcmFtZXRlcnMgPSBzaGlm
dDsKKyAgICBteSAkcGFyc2VkSXRlbXMgPSBzaGlmdDsKKworICAgIGdlbmVyYXRlSGVhZGVyKCRw
YXJzZWRQYXJhbWV0ZXJzLCAkcGFyc2VkSXRlbXMpOworICAgIGdlbmVyYXRlSW1wbGVtZW50YXRp
b24oJHBhcnNlZFBhcmFtZXRlcnMsICRwYXJzZWRJdGVtcyk7Cit9CisKK3N1YiBnZW5lcmF0ZUhl
YWRlcigpCit7CisgICAgbXkgJHBhcnNlZFBhcmFtZXRlcnNSZWYgPSBzaGlmdDsKKyAgICBteSAk
cGFyc2VkSXRlbXNSZWYgPSBzaGlmdDsKKworICAgIG15ICRGOworICAgIG15ICVwYXJzZWRJdGVt
cyA9ICV7ICRwYXJzZWRJdGVtc1JlZiB9OworCisgICAgbXkgJG91dHB1dEZpbGUgPSAiJG91dHB1
dERpci9FeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaCI7CisKKyAgICBvcGVuIEYsICI+JG91dHB1
dEZpbGUiOworCisgICAgcHJpbnQgRiAkSW5Db21waWxlci0+bGljZW5zZSgpOworCisgICAgcHJp
bnQgRiAiI2lmbmRlZiBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb25faFxuIjsKKyAgICBwcmludCBG
ICIjZGVmaW5lIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbl9oXG4iOworICAgIHByaW50IEYgIlxu
IjsKKyAgICBwcmludCBGICJuYW1lc3BhY2UgV2ViQ29yZSB7XG4iOworICAgIHByaW50IEYgIlxu
IjsKKyAgICBwcmludCBGICJ0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlO1xuIjsKKyAgICBwcmlu
dCBGICJcbiI7CisgICAgcHJpbnQgRiAiZW51bSBFeGNlcHRpb25UeXBlIHtcbiI7CisgICAgcHJp
bnQgRiAiICAgIERPTUV4Y2VwdGlvblR5cGUsXG4iOworCisgICAgZm9yIG15ICRleGNlcHRpb25D
b2RlIChzb3J0IGtleXMgJXBhcnNlZEl0ZW1zKSB7CisgICAgICAgIG15ICRjb25kaXRpb25hbCA9
ICRwYXJzZWRJdGVtc3skZXhjZXB0aW9uQ29kZX17ImNvbmRpdGlvbmFsIn07CisKKyAgICAgICAg
cHJpbnQgRiAiI2lmIEVOQUJMRSgkY29uZGl0aW9uYWwpXG4iIGlmICRjb25kaXRpb25hbDsKKyAg
ICAgICAgcHJpbnQgRiAiICAgICR7ZXhjZXB0aW9uQ29kZX1UeXBlLFxuIjsKKyAgICAgICAgcHJp
bnQgRiAiI2VuZGlmXG4iIGlmICRjb25kaXRpb25hbDsKKyAgICB9CisKKyAgICBwcmludCBGICJ9
O1xuIjsKKyAgICBwcmludCBGICJcbiI7CisgICAgcHJpbnQgRiAic3RydWN0IEV4Y2VwdGlvbkNv
ZGVEZXNjcmlwdGlvbiB7XG4iOworICAgIHByaW50IEYgIiAgICBFeGNlcHRpb25Db2RlRGVzY3Jp
cHRpb24oKSB7IH1cbiI7CisgICAgcHJpbnQgRiAiICAgIGV4cGxpY2l0IEV4Y2VwdGlvbkNvZGVE
ZXNjcmlwdGlvbihFeGNlcHRpb25Db2RlKTtcbiI7CisgICAgcHJpbnQgRiAiXG4iOworICAgIHBy
aW50IEYgIiAgICAvLyB8dHlwZU5hbWV8IGhhcyBzcGFjZXMgYW5kIGlzIHN1aXRhYmxlIGZvciB1
c2UgaW4gZXhjZXB0aW9uXG4iOworICAgIHByaW50IEYgIiAgICAvLyBkZXNjcmlwdGlvbiBzdHJp
bmdzOyBtYXhpbXVtIGxlbmd0aCBpcyAxMCBjaGFyYWN0ZXJzLlxuIjsKKyAgICBwcmludCBGICIg
ICAgY29uc3QgY2hhciogdHlwZU5hbWU7IFxuIjsKKyAgICBwcmludCBGICJcbiI7CisgICAgcHJp
bnQgRiAiICAgIC8vIHxuYW1lfCBpcyB0aGUgZXhjZXB0aW9uIG5hbWUsIGFsc28gaW50ZW5kZWQg
Zm9yIHVzZSBpbiBleGNlcHRpb25cbiI7CisgICAgcHJpbnQgRiAiICAgIC8vIGRlc2NyaXB0aW9u
IHN0cmluZ3M7IDAgaWYgbmFtZSBub3Qga25vd247IG1heGltdW0gbGVuZ3RoIGlzIDI3XG4iOwor
ICAgIHByaW50IEYgIiAgICAvLyBjaGFyYWN0ZXJzLlxuIjsKKyAgICBwcmludCBGICIgICAgY29u
c3QgY2hhciogbmFtZTsgXG4iOworICAgIHByaW50IEYgIlxuIjsKKyAgICBwcmludCBGICIgICAg
Ly8gfGRlc2NyaXB0aW9ufCBpcyB0aGUgZXhjZXB0aW9uIGRlc2NyaXB0aW9uLCBpbnRlbmRlZCBm
b3IgdXNlIGluXG4iOworICAgIHByaW50IEYgIiAgICAvLyBleGNlcHRpb24gc3RyaW5ncy4gSXQg
aXMgYSBtb3JlIHJlYWRhYmxlIGV4cGxhbmF0aW9uIG9mIGVycm9yLlxuIjsKKyAgICBwcmludCBG
ICIgICAgY29uc3QgY2hhciogZGVzY3JpcHRpb247XG4iOworICAgIHByaW50IEYgIlxuIjsKKyAg
ICBwcmludCBGICIgICAgLy8gfGNvZGV8IGlzIHRoZSBudW1lcmljIHZhbHVlIG9mIHRoZSBleGNl
cHRpb24gd2l0aGluIGEgcGFydGljdWxhciB0eXBlLlxuIjsKKyAgICBwcmludCBGICIgICAgaW50
IGNvZGU7IFxuIjsKKyAgICBwcmludCBGICJcbiI7CisgICAgcHJpbnQgRiAiICAgIEV4Y2VwdGlv
blR5cGUgdHlwZTtcbiI7CisgICAgcHJpbnQgRiAifTtcbiI7CisgICAgcHJpbnQgRiAiXG4iOwor
ICAgIHByaW50IEYgIn0gLy8gbmFtZXNwYWNlIFdlYkNvcmVcbiI7CisgICAgcHJpbnQgRiAiXG4i
OworICAgIHByaW50IEYgIiNlbmRpZiAvLyBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb25faFxuIjsK
KworICAgIGNsb3NlIEY7Cit9CisKK3N1YiBnZW5lcmF0ZUltcGxlbWVudGF0aW9uKCkKK3sKKyAg
ICBteSAkcGFyc2VkUGFyYW1ldGVyc1JlZiA9IHNoaWZ0OworICAgIG15ICRwYXJzZWRJdGVtc1Jl
ZiA9IHNoaWZ0OworCisgICAgbXkgJEY7CisgICAgbXkgJXBhcnNlZEl0ZW1zID0gJXsgJHBhcnNl
ZEl0ZW1zUmVmIH07CisKKyAgICBteSAkb3V0cHV0RmlsZSA9ICIkb3V0cHV0RGlyL0V4Y2VwdGlv
bkNvZGVEZXNjcmlwdGlvbi5jcHAiOworCisgICAgb3BlbiBGLCAiPiRvdXRwdXRGaWxlIjsKKwor
ICAgIHByaW50IEYgJEluQ29tcGlsZXItPmxpY2Vuc2UoKTsKKworICAgIHByaW50IEYgIiNpbmNs
dWRlIFwiY29uZmlnLmhcIlxuIjsKKyAgICBwcmludCBGICIjaW5jbHVkZSBcIkV4Y2VwdGlvbkNv
ZGVEZXNjcmlwdGlvbi5oXCJcbiI7CisgICAgcHJpbnQgRiAiXG4iOworICAgIHByaW50IEYgIiNp
bmNsdWRlIFwiRXhjZXB0aW9uQ29kZS5oXCJcbiI7CisKKyAgICBmb3IgbXkgJGV4Y2VwdGlvbkNv
ZGUgKHNvcnQga2V5cyAlcGFyc2VkSXRlbXMpIHsKKyAgICAgICAgcHJpbnQgRiAiI2luY2x1ZGUg
XCIkZXhjZXB0aW9uQ29kZS5oXCJcbiI7CisgICAgfQorCisgICAgcHJpbnQgRiAiXG4iOworICAg
IHByaW50IEYgIm5hbWVzcGFjZSBXZWJDb3JlIHtcbiI7CisgICAgcHJpbnQgRiAiXG4iOworICAg
IHByaW50IEYgIkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbjo6RXhjZXB0aW9uQ29kZURlc2NyaXB0
aW9uKEV4Y2VwdGlvbkNvZGUgY29kZSlcbiI7CisgICAgcHJpbnQgRiAie1xuIjsKKworICAgIGZv
ciBteSAkZXhjZXB0aW9uQ29kZSAoc29ydCBrZXlzICVwYXJzZWRJdGVtcykgeworICAgICAgICBt
eSAkY29uZGl0aW9uYWwgPSAkcGFyc2VkSXRlbXN7JGV4Y2VwdGlvbkNvZGV9eyJjb25kaXRpb25h
bCJ9OworCisgICAgICAgIHByaW50IEYgIiNpZiBFTkFCTEUoJGNvbmRpdGlvbmFsKVxuIiBpZiAk
Y29uZGl0aW9uYWw7CisgICAgICAgIHByaW50IEYgIiAgICBpZiAoaW5pdGlhbGl6ZSR7ZXhjZXB0
aW9uQ29kZX1EZXNjcmlwdGlvbihjb2RlLCB0aGlzKSlcbiI7CisgICAgICAgIHByaW50IEYgIiAg
ICAgICAgcmV0dXJuO1xuIjsKKyAgICAgICAgcHJpbnQgRiAiI2VuZGlmXG4iIGlmICRjb25kaXRp
b25hbDsKKyAgICB9CisKKyAgICBwcmludCBGICIgICAgaW5pdGlhbGl6ZURPTUV4Y2VwdGlvbkRl
c2NyaXB0aW9uKGNvZGUsIHRoaXMpO1xuIjsKKyAgICBwcmludCBGICJ9XG4iOworICAgIHByaW50
IEYgIlxuIjsKKyAgICBwcmludCBGICJ9IC8vIG5hbWVzcGFjZSBXZWJDb3JlXG4iOworCisgICAg
Y2xvc2UgRjsKK30KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112773</attachid>
            <date>2011-10-27 15:48:36 -0700</date>
            <delta_ts>2011-10-28 01:10:17 -0700</delta_ts>
            <desc>Work in progress</desc>
            <filename>bug-70890-20111027154834.patch</filename>
            <type>text/plain</type>
            <size>96324</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4NjMyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMTAtMjYgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBFeGNlcHRpb25Db2RlLmggc2hvdWxk
bid0IG5lZWQgdG8ga25vdyBhYm91dCBldmVyeSBmZWF0dXJlIHRoYXQgdGhyb3dzIGV4Y2VwdGlv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwODkw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0luRmlsZXNDb21w
aWxlci5wbTogQWRkZWQuCisgICAgICAgIChpdGVtSGFuZGxlcik6CisgICAgICAgIChwYXJhbWV0
ZXJIYW5kbGVyKToKKyAgICAgICAgKG5ldyk6CisgICAgICAgIChjb21waWxlKToKKyAgICAgICAg
KGdlbmVyYXRlTGljZW5zZSk6CisgICAgICAgICogZG9tL0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlv
bi5pbjogQWRkZWQuCisgICAgICAgICogZG9tL21ha2VfZXhjZXB0aW9uX2NvZGVfZGVzY3JpcHRp
b24ucGw6IEFkZGVkLgorICAgICAgICAoZGVmYXVsdEl0ZW1GYWN0b3J5KToKKyAgICAgICAgKGdl
bmVyYXRlQ29kZSk6CisgICAgICAgIChnZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChnZW5lcmF0
ZUltcGxlbWVudGF0aW9uKToKKwogMjAxMS0xMC0yNyAgTmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
IGJ1aWxkIGVycm9ycy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNp
b24gOTg2MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC01ODgsNiArNTg4LDcgQEAgYWxsIDogXAogICAgIENvbG9yRGF0YS5jcHAgXAog
ICAgIEV2ZW50RmFjdG9yeS5jcHAgXAogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlcy5oIFwKKyAg
ICBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uY3BwIFwKICAgICBIVE1MRWxlbWVudEZhY3Rvcnku
Y3BwIFwKICAgICBIVE1MRW50aXR5VGFibGUuY3BwIFwKICAgICBIVE1MTmFtZXMuY3BwIFwKQEAg
LTg1Niw2ICs4NTcsOSBAQCBFdmVudEZhY3RvcnkuY3BwIEV2ZW50SGVhZGVycy5oIEV2ZW50SW50
CiBFdmVudFRhcmdldEhlYWRlcnMuaCBFdmVudFRhcmdldEludGVyZmFjZXMuaCA6IGRvbS9tYWtl
X2V2ZW50X2ZhY3RvcnkucGwgZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgogCXBlcmwgLUkgJChX
ZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzICQ8IC0tZXZlbnRzICQoV2ViQ29yZSkvZG9tL0V2ZW50
VGFyZ2V0RmFjdG9yeS5pbgogCitFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uY3BwIEV4Y2VwdGlv
bkNvZGVEZXNjcmlwdGlvbi5oIDogZG9tL21ha2VfZXhjZXB0aW9uX2NvZGVfZGVzY3JpcHRpb24u
cGwgZG9tL0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5pbgorCXBlcmwgLUkgJChXZWJDb3JlKS9i
aW5kaW5ncy9zY3JpcHRzICQ8IC0taW5wdXQgJChXZWJDb3JlKS9kb20vRXhjZXB0aW9uQ29kZURl
c2NyaXB0aW9uLmluCisKICMgLS0tLS0tLS0KICAKICMgTWF0aE1MIHRhZyBhbmQgYXR0cmlidXRl
IG5hbWVzLCBhbmQgZWxlbWVudCBmYWN0b3J5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA5ODYzMikKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtMzI2OCw2ICszMjY4LDE4IEBACiAJCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAv
KiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NzdFMkUwQzEyRjBGQzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5oICovOyB9OwogCQk5
NzhBRDY3NDE0MTMwQThEMDBDN0NBRTMgLyogSFRNTFNwYW5FbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OEFENjcxMTQxMzBBOEQwMEM3
Q0FFMyAvKiBIVE1MU3BhbkVsZW1lbnQuY3BwICovOyB9OwogCQk5NzhBRDY3NTE0MTMwQThEMDBD
N0NBRTMgLyogSFRNTFNwYW5FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5NzhBRDY3MjE0MTMwQThEMDBDN0NBRTMgLyogSFRNTFNwYW5FbGVt
ZW50LmggKi87IH07CisJCTk3OEQwN0IyMTQ1QTBFQkQwMDk2OTA4RCAvKiBJREJEYXRhYmFzZUV4
Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5NzhEMDdCMTE0NUEwRUJEMDA5NjkwOEQgLyogSURCRGF0YWJhc2VFeGNlcHRpb24uY3BwICov
OyB9OworCQk5NzhEMDdCNDE0NUEwRUNEMDA5NjkwOEQgLyogU1FMRXhjZXB0aW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OEQwN0IzMTQ1QTBF
Q0QwMDk2OTA4RCAvKiBTUUxFeGNlcHRpb24uY3BwICovOyB9OworCQk5NzhEMDdCNjE0NUEwRjAz
MDA5NjkwOEQgLyogRmlsZUV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NzhEMDdCNTE0NUEwRjAzMDA5NjkwOEQgLyogRmlsZUV4Y2Vw
dGlvbi5jcHAgKi87IH07CisJCTk3OEQwN0I4MTQ1QTBGMUIwMDk2OTA4RCAvKiBPcGVyYXRpb25O
b3RBbGxvd2VkRXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk3OEQwN0I3MTQ1QTBGMUIwMDk2OTA4RCAvKiBPcGVyYXRpb25Ob3RBbGxv
d2VkRXhjZXB0aW9uLmNwcCAqLzsgfTsKKwkJOTc4RDA3QkExNDVBMEYzQzAwOTY5MDhEIC8qIFJh
bmdlRXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk3OEQwN0I5MTQ1QTBGM0MwMDk2OTA4RCAvKiBSYW5nZUV4Y2VwdGlvbi5jcHAgKi87
IH07CisJCTk3OEQwN0JDMTQ1QTBGNTYwMDk2OTA4RCAvKiBFdmVudEV4Y2VwdGlvbi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzhEMDdCQjE0NUEw
RjU2MDA5NjkwOEQgLyogRXZlbnRFeGNlcHRpb24uY3BwICovOyB9OworCQk5NzhEMDdCRTE0NUEw
RjZDMDA5NjkwOEQgLyogRE9NQ29yZUV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzhEMDdCRDE0NUEwRjZDMDA5NjkwOEQgLyogRE9N
Q29yZUV4Y2VwdGlvbi5jcHAgKi87IH07CisJCTk3OEQwN0NBMTQ1QTEwMTYwMDk2OTA4RCAvKiBT
VkdFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTc4RDA3QzkxNDVBMTAxNjAwOTY5MDhEIC8qIFNWR0V4Y2VwdGlvbi5jcHAgKi87IH07
CisJCTk3OEQwN0NDMTQ1QTEwMkUwMDk2OTA4RCAvKiBYUGF0aEV4Y2VwdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzhEMDdDQjE0NUExMDJF
MDA5NjkwOEQgLyogWFBhdGhFeGNlcHRpb24uY3BwICovOyB9OworCQk5NzhEMDdDRTE0NUExMDM3
MDA5NjkwOEQgLyogWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc4RDA3Q0QxNDVBMTAzNzAwOTY5MDhEIC8q
IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uLmNwcCAqLzsgfTsKKwkJOTc5MjE4RDAxNDU4RjI5QTAw
MUMxMjI4IC8qIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzkyMThDRTE0NThGMjlBMDAxQzEyMjggLyog
RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmNwcCAqLzsgfTsKKwkJOTc5MjE4RDExNDU4RjI5QTAw
MUMxMjI4IC8qIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc5MjE4Q0YxNDU4RjI5QTAwMUMxMjI4IC8qIEV4
Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5oICovOyB9OwogCQk5NzlGNDNEMzEwNzVFNDRBMDAwMEY4
M0IgLyogTmF2aWdhdGlvblNjaGVkdWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NzlGNDNEMTEwNzVFNDRBMDAwMEY4M0IgLyogTmF2aWdhdGlv
blNjaGVkdWxlci5jcHAgKi87IH07CiAJCTk3OUY0M0Q0MTA3NUU0NEEwMDAwRjgzQiAvKiBOYXZp
Z2F0aW9uU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5NzlGNDNEMjEwNzVFNDRBMDAwMEY4M0IgLyogTmF2aWdhdGlvblNjaGVkdWxlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3QUEz
Q0E1MTQ1MjM3Q0MwMDNFMURBNiAvKiBFdmVudFRhcmdldEhlYWRlcnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QUEzQ0EzMTQ1MjM3Q0MwMDNFMURB
NiAvKiBFdmVudFRhcmdldEhlYWRlcnMuaCAqLzsgfTsKQEAgLTEwNDAzLDYgKzEwNDE1LDE4IEBA
CiAJCTk3OEFENjcxMTQxMzBBOEQwMEM3Q0FFMyAvKiBIVE1MU3BhbkVsZW1lbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTFNwYW5FbGVtZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc4QUQ2NzIxNDEzMEE4RDAwQzdDQUUzIC8qIEhU
TUxTcGFuRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MU3Bh
bkVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc4QUQ2NzMxNDEzMEE4
RDAwQzdDQUUzIC8qIEhUTUxTcGFuRWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
SFRNTFNwYW5FbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTc4RDA3
QjExNDVBMEVCRDAwOTY5MDhEIC8qIElEQkRhdGFiYXNlRXhjZXB0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQkRhdGFiYXNlRXhjZXB0aW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTc4RDA3QjMxNDVBMEVDRDAwOTY5MDhEIC8qIFNR
TEV4Y2VwdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTUUxF
eGNlcHRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NzhEMDdCNTE0NUEw
RjAzMDA5NjkwOEQgLyogRmlsZUV4Y2VwdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBGaWxlRXhjZXB0aW9uLmNwcDsgcGF0aCA9IGZpbGVhcGkvRmlsZUV4Y2Vw
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3OEQwN0I3MTQ1QTBGMUIw
MDk2OTA4RCAvKiBPcGVyYXRpb25Ob3RBbGxvd2VkRXhjZXB0aW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE9wZXJhdGlvbk5vdEFsbG93ZWRFeGNlcHRpb24uY3Bw
OyBwYXRoID0gZmlsZWFwaS9PcGVyYXRpb25Ob3RBbGxvd2VkRXhjZXB0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTc4RDA3QjkxNDVBMEYzQzAwOTY5MDhEIC8qIFJhbmdl
RXhjZXB0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJhbmdl
RXhjZXB0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTc4RDA3QkIxNDVB
MEY1NjAwOTY5MDhEIC8qIEV2ZW50RXhjZXB0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEV2ZW50RXhjZXB0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTc4RDA3QkQxNDVBMEY2QzAwOTY5MDhEIC8qIERPTUNvcmVFeGNlcHRpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NQ29yZUV4Y2VwdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3OEQwN0M5MTQ1QTEwMTYwMDk2OTA4
RCAvKiBTVkdFeGNlcHRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU1ZHRXhjZXB0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTc4RDA3
Q0IxNDVBMTAyRTAwOTY5MDhEIC8qIFhQYXRoRXhjZXB0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhQYXRoRXhjZXB0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTc4RDA3Q0QxNDVBMTAzNzAwOTY5MDhEIC8qIFhNTEh0dHBSZXF1ZXN0
RXhjZXB0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhNTEh0
dHBSZXF1ZXN0RXhjZXB0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTc5
MjE4Q0UxNDU4RjI5QTAwMUMxMjI4IC8qIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGNlcHRpb25Db2RlRGVzY3JpcHRp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NzkyMThDRjE0NThGMjlBMDAx
QzEyMjggLyogRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5NzlGNDNEMTEwNzVFNDRBMDAwMEY4M0IgLyogTmF2aWdhdGlvblNjaGVk
dWxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXZpZ2F0aW9u
U2NoZWR1bGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc5RjQzRDIxMDc1
RTQ0QTAwMDBGODNCIC8qIE5hdmlnYXRpb25TY2hlZHVsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTmF2aWdhdGlvblNjaGVkdWxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5N0FBM0NBMzE0NTIzN0NDMDAzRTFEQTYgLyogRXZlbnRUYXJnZXRIZWFkZXJz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50VGFyZ2V0SGVhZGVycy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQxOTksNiArMTQyMjMsNyBAQAogCQkJ
CUI2MTc2MjUzMTIwMzM3NEYwMEVGOTExNCAvKiBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2Uu
aCAqLywKIAkJCQlDNTg1QTY5RDExRDRGQjNEMDA0QzNFNEIgLyogSURCRGF0YWJhc2VFcnJvci5o
ICovLAogCQkJCUM1ODVBNjlFMTFENEZCM0QwMDRDM0U0QiAvKiBJREJEYXRhYmFzZUVycm9yLmlk
bCAqLywKKwkJCQk5NzhEMDdCMTE0NUEwRUJEMDA5NjkwOEQgLyogSURCRGF0YWJhc2VFeGNlcHRp
b24uY3BwICovLAogCQkJCUM1ODVBNjlGMTFENEZCM0QwMDRDM0U0QiAvKiBJREJEYXRhYmFzZUV4
Y2VwdGlvbi5oICovLAogCQkJCUM1ODVBNkEwMTFENEZCM0QwMDRDM0U0QiAvKiBJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5pZGwgKi8sCiAJCQkJQzU4NUE2QzkxMUQ0RkIzRDAwNEMzRTRCIC8qIElEQkZh
Y3RvcnkuY3BwICovLApAQCAtMTQyNDQsNiArMTQyNjksNyBAQAogCQkJCTI0NUQ4MEEyMTMyODBF
NDAwMDM0OTJBNiAvKiBTUUxDYWxsYmFja1dyYXBwZXIuaCAqLywKIAkJCQk1MUVDOTI1NzBDRTkw
REI0MDBGOTAzMDggLyogU1FMRXJyb3IuaCAqLywKIAkJCQk1MUVDOTI1ODBDRTkwREI0MDBGOTAz
MDggLyogU1FMRXJyb3IuaWRsICovLAorCQkJCTk3OEQwN0IzMTQ1QTBFQ0QwMDk2OTA4RCAvKiBT
UUxFeGNlcHRpb24uY3BwICovLAogCQkJCUI1NkVCQTgzMTFDOUZGODEwMEIwNDQ3NyAvKiBTUUxF
eGNlcHRpb24uaCAqLywKIAkJCQlCNTZFQkE4NDExQzlGRjgxMDBCMDQ0NzcgLyogU1FMRXhjZXB0
aW9uLmlkbCAqLywKIAkJCQk1MTk2MTE2NzBDQUM1NjU3MDAxMEE4MEMgLyogU1FMUmVzdWx0U2V0
LmNwcCAqLywKQEAgLTE1MTUzLDYgKzE1MTc5LDggQEAKIAkJCQk5NzBCNzI4OTE0NEZGQUM2MDBG
MDBBMzcgLyogRXZlbnRJbnRlcmZhY2VzLmggKi8sCiAJCQkJOTdBQTNDQTMxNDUyMzdDQzAwM0Ux
REE2IC8qIEV2ZW50VGFyZ2V0SGVhZGVycy5oICovLAogCQkJCTk3QUEzQ0E0MTQ1MjM3Q0MwMDNF
MURBNiAvKiBFdmVudFRhcmdldEludGVyZmFjZXMuaCAqLywKKwkJCQk5NzkyMThDRTE0NThGMjlB
MDAxQzEyMjggLyogRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmNwcCAqLywKKwkJCQk5NzkyMThD
RjE0NThGMjlBMDAxQzEyMjggLyogRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmggKi8sCiAJCQkJ
QTE3QzgxMjAwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5jcHAgKi8sCiAJ
CQkJQTE3QzgxMjEwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5oICovLAog
CQkJCUE4QkMwNDkxMTIxNEY2OTYwMEI1RjEyMiAvKiBIVE1MRW50aXR5VGFibGUuY3BwICovLApA
QCAtMTczMzUsNiArMTczNjMsNyBAQAogCQkJCTg5M0M0N0ZFMTI0OEJEMzkwMDJCM0Q4NiAvKiBG
aWxlRW50cnlTeW5jLmNwcCAqLywKIAkJCQk4OTNDNDdGRjEyNDhCRDM5MDAyQjNEODYgLyogRmls
ZUVudHJ5U3luYy5oICovLAogCQkJCTk3NkQ2QzY0MTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlRXJy
b3IuaCAqLywKKwkJCQk5NzhEMDdCNTE0NUEwRjAzMDA5NjkwOEQgLyogRmlsZUV4Y2VwdGlvbi5j
cHAgKi8sCiAJCQkJMkVERjM2OUUxMjJDOTRDODAwMkY3RDRFIC8qIEZpbGVFeGNlcHRpb24uaCAq
LywKIAkJCQk5NzZENkM2NjEyMkI4QTNEMDAxRkQxRjcgLyogRmlsZUxpc3QuY3BwICovLAogCQkJ
CTk3NkQ2QzY3MTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlTGlzdC5oICovLApAQCAtMTczNjgsNiAr
MTczOTcsNyBAQAogCQkJCTg5ODc4NTRGMTIyQ0EwNjQwMDNBQUJEQSAvKiBMb2NhbEZpbGVTeXN0
ZW0uaCAqLywKIAkJCQk4OTg3ODU1MDEyMkNBMDY0MDAzQUFCREEgLyogTWV0YWRhdGEuaCAqLywK
IAkJCQk4OTg3ODU1MTEyMkNBMDY0MDAzQUFCREEgLyogTWV0YWRhdGFDYWxsYmFjay5oICovLAor
CQkJCTk3OEQwN0I3MTQ1QTBGMUIwMDk2OTA4RCAvKiBPcGVyYXRpb25Ob3RBbGxvd2VkRXhjZXB0
aW9uLmNwcCAqLywKIAkJCQkyRTI0NDVGNTEzOTU4OTNBMDA0QjZDMTkgLyogT3BlcmF0aW9uTm90
QWxsb3dlZEV4Y2VwdGlvbi5oICovLAogCQkJCTJFMjQ0NUY2MTM5NTg5M0EwMDRCNkMxOSAvKiBP
cGVyYXRpb25Ob3RBbGxvd2VkRXhjZXB0aW9uLmlkbCAqLywKIAkJCQk5NzZENkM3NTEyMkI4QTNE
MDAxRkQxRjcgLyogVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAgKi8sCkBAIC0xODUzMiw2ICsx
ODU2Miw3IEBACiAJCQkJQjIyMjc4MjkwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0VsbGlwc2VFbGVt
ZW50LmNwcCAqLywKIAkJCQlCMjIyNzgyQTBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHRWxsaXBzZUVs
ZW1lbnQuaCAqLywKIAkJCQlCMjIyNzgyQjBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHRWxsaXBzZUVs
ZW1lbnQuaWRsICovLAorCQkJCTk3OEQwN0M5MTQ1QTEwMTYwMDk2OTA4RCAvKiBTVkdFeGNlcHRp
b24uY3BwICovLAogCQkJCUIyMjI3ODJDMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdFeGNlcHRpb24u
aCAqLywKIAkJCQlCMjIyNzgyRDBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHRXhjZXB0aW9uLmlkbCAq
LywKIAkJCQlCMjIyNzgyRTBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZC5jcHAgKi8sCkBAIC0yMDMwMiw2ICsyMDMzMyw3IEBACiAJCQkJQkM3NzJDNDQwQzRF
QjJDNjAwODMyODVGIC8qIFhNTEh0dHBSZXF1ZXN0LmNwcCAqLywKIAkJCQlCQzc3MkM0NTBDNEVC
MkM2MDA4MzI4NUYgLyogWE1MSHR0cFJlcXVlc3QuaCAqLywKIAkJCQlCQzM0OEJBNzBEQjdGMUI4
MDA0QUJBQjkgLyogWE1MSHR0cFJlcXVlc3QuaWRsICovLAorCQkJCTk3OEQwN0NEMTQ1QTEwMzcw
MDk2OTA4RCAvKiBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5jcHAgKi8sCiAJCQkJQkM2MEQ5Qzcw
RDJBMjlFNTAwQjk5MThGIC8qIFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uLmggKi8sCiAJCQkJQkM2
MEQ5QzgwRDJBMjlFNTAwQjk5MThGIC8qIFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uLmlkbCAqLywK
IAkJCQlGOUYwRUQ3NzBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2
ZW50LmggKi8sCkBAIC0yMDMyMSw2ICsyMDM1Myw3IEBACiAJCQkJMUFCN0ZDNDcwQThCOTJFQzAw
RDlEMzdCIC8qIFhQYXRoRXZhbHVhdG9yLmNwcCAqLywKIAkJCQkxQUI3RkM0ODBBOEI5MkVDMDBE
OUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuaCAqLywKIAkJCQkxQUI3RkM0OTBBOEI5MkVDMDBEOUQz
N0IgLyogWFBhdGhFdmFsdWF0b3IuaWRsICovLAorCQkJCTk3OEQwN0NCMTQ1QTEwMkUwMDk2OTA4
RCAvKiBYUGF0aEV4Y2VwdGlvbi5jcHAgKi8sCiAJCQkJQkM2MERBNTkwRDJBMzFGNzAwQjk5MThG
IC8qIFhQYXRoRXhjZXB0aW9uLmggKi8sCiAJCQkJQkM2MERBNUEwRDJBMzFGNzAwQjk5MThGIC8q
IFhQYXRoRXhjZXB0aW9uLmlkbCAqLywKIAkJCQkxQUI3RkM0QTBBOEI5MkVDMDBEOUQzN0IgLyog
WFBhdGhFeHByZXNzaW9uLmNwcCAqLywKQEAgLTIwOTIzLDYgKzIwOTU2LDcgQEAKIAkJCQlBODE4
NUYzMjA5NzY1NzY1MDA1ODI2RDkgLyogRG9jdW1lbnRUeXBlLmNwcCAqLywKIAkJCQlBODE4NUYz
MTA5NzY1NzY1MDA1ODI2RDkgLyogRG9jdW1lbnRUeXBlLmggKi8sCiAJCQkJOTNFRUMxRTgwOUMy
ODc3NzAwQzUxNUQxIC8qIERvY3VtZW50VHlwZS5pZGwgKi8sCisJCQkJOTc4RDA3QkQxNDVBMEY2
QzAwOTY5MDhEIC8qIERPTUNvcmVFeGNlcHRpb24uY3BwICovLAogCQkJCUJDNjBENkU4MEQyOEQ4
MzQwMEI5OTE4RiAvKiBET01Db3JlRXhjZXB0aW9uLmggKi8sCiAJCQkJQkM2MEQ2RUIwRDI4RDk5
OTAwQjk5MThGIC8qIERPTUNvcmVFeGNlcHRpb24uaWRsICovLAogCQkJCUE4MTg1RjM2MDk3NjU3
NjUwMDU4MjZEOSAvKiBET01JbXBsZW1lbnRhdGlvbi5jcHAgKi8sCkBAIC0yMDk2MCw2ICsyMDk5
NCw3IEBACiAJCQkJNEFGMUFEM0QxM0ZEMjNBNDAwQUE5NTkwIC8qIEV2ZW50RGlzcGF0Y2hNZWRp
YXRvci5oICovLAogCQkJCTQxOEEwNkNGMTMzQzA0RDUwMENEMzc5QyAvKiBFdmVudERpc3BhdGNo
ZXIuY3BwICovLAogCQkJCTQxOEEwNkNFMTMzQzA0RDUwMENEMzc5QyAvKiBFdmVudERpc3BhdGNo
ZXIuaCAqLywKKwkJCQk5NzhEMDdCQjE0NUEwRjU2MDA5NjkwOEQgLyogRXZlbnRFeGNlcHRpb24u
Y3BwICovLAogCQkJCUJDNjBEOTA5MEQyQTE3Q0UwMEI5OTE4RiAvKiBFdmVudEV4Y2VwdGlvbi5o
ICovLAogCQkJCUJDNjBEOTBBMEQyQTE3Q0UwMEI5OTE4RiAvKiBFdmVudEV4Y2VwdGlvbi5pZGwg
Ki8sCiAJCQkJOTc2NjUwMTExNDRGQUE0MjAwRjZCQjUxIC8qIEV2ZW50RmFjdG9yeS5oICovLApA
QCAtMjEwNzEsNiArMjExMDYsNyBAQAogCQkJCUY1MjNEMzA0MDJERTQ0NzYwMTg2MzVDQSAvKiBS
YW5nZS5oICovLAogCQkJCTkzNkREMDNBMDlDRUFDMjcwMDU2QUU4QyAvKiBSYW5nZS5pZGwgKi8s
CiAJCQkJOTNEOUQ1M0IwREEyN0UxODAwNzcyMTZDIC8qIFJhbmdlQm91bmRhcnlQb2ludC5oICov
LAorCQkJCTk3OEQwN0I5MTQ1QTBGM0MwMDk2OTA4RCAvKiBSYW5nZUV4Y2VwdGlvbi5jcHAgKi8s
CiAJCQkJRDIzQ0E1NkIwQUIwRUI4RDAwNTEwOEE1IC8qIFJhbmdlRXhjZXB0aW9uLmggKi8sCiAJ
CQkJRDIzQ0E1NDgwQUIwRTk4MzAwNTEwOEE1IC8qIFJhbmdlRXhjZXB0aW9uLmlkbCAqLywKIAkJ
CQlBODREODI3QjExRDMzM0VEMDA5NzI5OTAgLyogUmF3RGF0YURvY3VtZW50UGFyc2VyLmggKi8s
CkBAIC0yNDQ4OCw2ICsyNDUyNCw3IEBACiAJCQkJOTc2NjUwMTMxNDRGQUE0MjAwRjZCQjUxIC8q
IEV2ZW50RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTBFRTBERjYxNDRGODI1NTAwRjgw
QjBEIC8qIFdlYkdMRGVidWdSZW5kZXJlckluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUEwRUUw
REY4MTQ0RjgyNTUwMEY4MEIwRCAvKiBXZWJHTERlYnVnU2hhZGVycy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJOTc5MjE4RDExNDU4RjI5QTAwMUMxMjI4IC8qIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdBQTNDQTUxNDUyMzdDQzAwM0UxREE2IC8qIEV2ZW50
VGFyZ2V0SGVhZGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdBQTNDQTYxNDUyMzdDQzAwM0Ux
REE2IC8qIEV2ZW50VGFyZ2V0SW50ZXJmYWNlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTcwQjcy
OEExNDRGRkFDNjAwRjAwQTM3IC8qIEV2ZW50SW50ZXJmYWNlcy5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNzMzMSw2ICsyNzM2OCwxNyBAQAogCQkJCTk3NjY1MDRGMTQ0RkJGRkUwMEY2QkI1MSAvKiBF
dmVudEZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTBFRTBERjUxNDRGODI1NTAwRjgw
QjBEIC8qIFdlYkdMRGVidWdSZW5kZXJlckluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTBF
RTBERjcxNDRGODI1NTAwRjgwQjBEIC8qIFdlYkdMRGVidWdTaGFkZXJzLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTk3OTIxOEQwMTQ1OEYyOUEwMDFDMTIyOCAvKiBFeGNlcHRpb25Db2RlRGVzY3Jp
cHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTc4RDA3QjIxNDVBMEVCRDAwOTY5MDhEIC8q
IElEQkRhdGFiYXNlRXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk3OEQwN0I0MTQ1
QTBFQ0QwMDk2OTA4RCAvKiBTUUxFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTc4
RDA3QjYxNDVBMEYwMzAwOTY5MDhEIC8qIEZpbGVFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJOTc4RDA3QjgxNDVBMEYxQjAwOTY5MDhEIC8qIE9wZXJhdGlvbk5vdEFsbG93ZWRFeGNl
cHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTc4RDA3QkExNDVBMEYzQzAwOTY5MDhEIC8q
IFJhbmdlRXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk3OEQwN0JDMTQ1QTBGNTYw
MDk2OTA4RCAvKiBFdmVudEV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5NzhEMDdC
RTE0NUEwRjZDMDA5NjkwOEQgLyogRE9NQ29yZUV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk5NzhEMDdDQTE0NUExMDE2MDA5NjkwOEQgLyogU1ZHRXhjZXB0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTk3OEQwN0NDMTQ1QTEwMkUwMDk2OTA4RCAvKiBYUGF0aEV4Y2VwdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk5NzhEMDdDRTE0NUExMDM3MDA5NjkwOEQgLyogWE1MSHR0
cFJlcXVlc3RFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHJldmlzaW9uIDk4NjMyKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQgc2V0RE9NRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
RXgKIAogICAgIEpTVmFsdWUgZXJyb3JPYmplY3Q7CiAgICAgc3dpdGNoIChkZXNjcmlwdGlvbi50
eXBlKSB7Ci0gICAgICAgIGNhc2UgRE9NRXhjZXB0aW9uVHlwZToKKyAgICAgICAgY2FzZSBET01D
b3JlRXhjZXB0aW9uVHlwZToKICAgICAgICAgICAgIGVycm9yT2JqZWN0ID0gdG9KUyhleGVjLCBn
bG9iYWxPYmplY3QsIERPTUNvcmVFeGNlcHRpb246OmNyZWF0ZShkZXNjcmlwdGlvbikpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUmFuZ2VFeGNlcHRpb25UeXBlOgpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JbkZpbGVzQ29tcGlsZXIucG0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JbkZpbGVzQ29tcGlsZXIu
cG0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0luRmls
ZXNDb21waWxlci5wbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjUgQEAKKyMhL3Vzci9iaW4v
cGVybCAtdworCisjIENvcHlyaWdodCAoQykgMjAxMSBBZGFtIEJhcnRoIDxhYmFydGhAd2Via2l0
Lm9yZz4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorIyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyMgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorIyBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorIworCit1c2Ugc3RyaWN0OworCit1
c2UgSU86OkZpbGU7Cit1c2UgSW5GaWxlc1BhcnNlcjsKKworcGFja2FnZSBJbkZpbGVzQ29tcGls
ZXI7CisKK215ICRkZWZhdWx0SXRlbUZhY3Rvcnk7CisKK215ICVwYXJzZWRJdGVtczsKK215ICVw
YXJzZWRQYXJhbWV0ZXJzOworCitzdWIgaXRlbUhhbmRsZXIoJCQkKQoreworICAgIG15ICgkaXRl
bU5hbWUsICRwcm9wZXJ0eSwgJHZhbHVlKSA9IEBfOworCisgICAgJHBhcnNlZEl0ZW1zeyRpdGVt
TmFtZX0gPSB7ICYkZGVmYXVsdEl0ZW1GYWN0b3J5KCRpdGVtTmFtZSkgfSBpZiAhZGVmaW5lZCgk
cGFyc2VkSXRlbXN7JGl0ZW1OYW1lfSk7CisKKyAgICByZXR1cm4gdW5sZXNzICRwcm9wZXJ0eTsK
KworICAgIGRpZSAiVW5rbm93biBwcm9wZXJ0eSAkcHJvcGVydHkgZm9yICRpdGVtTmFtZVxuIiBp
ZiAhZGVmaW5lZCgkcGFyc2VkSXRlbXN7JGl0ZW1OYW1lfXskcHJvcGVydHl9KTsKKyAgICAkcGFy
c2VkSXRlbXN7JGl0ZW1OYW1lfXskcHJvcGVydHl9ID0gJHZhbHVlOworfQorCitzdWIgcGFyYW1l
dGVySGFuZGxlcigkJCkKK3sKKyAgICBteSAoJHBhcmFtZXRlciwgJHZhbHVlKSA9IEBfOworCisg
ICAgZGllICJVbmtub3duIHBhcmFtZXRlciAkcGFyYW1ldGVyXG4iIGlmICFkZWZpbmVkKCRwYXJz
ZWRQYXJhbWV0ZXJzeyRwYXJhbWV0ZXJ9KTsKKyAgICAkcGFyc2VkUGFyYW1ldGVyc3skcGFyYW1l
dGVyfSA9ICR2YWx1ZTsKK30KKworc3ViIG5ldygpCit7CisgICAgbXkgJG9iamVjdCA9IHNoaWZ0
OworICAgIG15ICRyZWZlcmVuY2UgPSB7IH07CisKKyAgICBteSAkZGVmYXVsdFBhcmFtZXRlcnNS
ZWYgPSBzaGlmdDsKKyAgICAlcGFyc2VkUGFyYW1ldGVycyA9ICV7ICRkZWZhdWx0UGFyYW1ldGVy
c1JlZiB9OworICAgICRkZWZhdWx0SXRlbUZhY3RvcnkgPSBzaGlmdDsKKworICAgICVwYXJzZWRJ
dGVtcyA9ICgpOworCisgICAgYmxlc3MoJHJlZmVyZW5jZSwgJG9iamVjdCk7CisgICAgcmV0dXJu
ICRyZWZlcmVuY2U7Cit9CisKK3N1YiBjb21waWxlKCkKK3sKKyAgICBteSAkb2JqZWN0ID0gc2hp
ZnQ7CisKKyAgICBteSAkaW5wdXRGaWxlID0gc2hpZnQ7CisgICAgbXkgJGdlbmVyYXRlQ29kZSA9
IHNoaWZ0OworCisgICAgbXkgJGZpbGUgPSBuZXcgSU86OkZpbGU7CisgICAgb3BlbigkZmlsZSwg
JGlucHV0RmlsZSkgb3IgZGllICJGYWlsZWQgdG8gb3BlbiBmaWxlOiAkaW5wdXRGaWxlIjsKKwor
ICAgIG15ICRJblBhcnNlciA9IEluRmlsZXNQYXJzZXItPm5ldygpOworICAgICRJblBhcnNlci0+
cGFyc2UoJGZpbGUsIFwmcGFyYW1ldGVySGFuZGxlciwgXCZpdGVtSGFuZGxlcik7CisKKyAgICBj
bG9zZSgkZmlsZSk7CisgICAgZGllICJGYWlsZWQgdG8gcmVhZCBmcm9tIGZpbGU6ICRpbnB1dEZp
bGUiIGlmIChrZXlzICVwYXJzZWRJdGVtcyA9PSAwKTsKKworICAgICYkZ2VuZXJhdGVDb2RlKFwl
cGFyc2VkUGFyYW1ldGVycywgXCVwYXJzZWRJdGVtcyk7Cit9CisKK3N1YiBsaWNlbnNlKCkKK3sK
KyAgICByZXR1cm4gIi8qCisgKiBUSElTIEZJTEUgV0FTIEFVVE9NQVRJQ0FMTFkgR0VORVJBVEVE
LCBETyBOT1QgRURJVC4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBHT09HTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyI7Cit9CisKKzE7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOFByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOFByb3h5LmNwcAkocmV2aXNpb24gOTg2MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjU5LDcgKzY1OSw3IEBAIHZv
aWQgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGludCBleGNlcHQKIAogICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBleGNlcHRpb247CiAgICAgc3dpdGNoIChkZXNjcmlwdGlvbi50eXBlKSB7Ci0g
ICAgY2FzZSBET01FeGNlcHRpb25UeXBlOgorICAgIGNhc2UgRE9NQ29yZUV4Y2VwdGlvblR5cGU6
CiAgICAgICAgIGV4Y2VwdGlvbiA9IHRvVjgoRE9NQ29yZUV4Y2VwdGlvbjo6Y3JlYXRlKGRlc2Ny
aXB0aW9uKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmFuZ2VFeGNlcHRpb25UeXBlOgpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RPTUNvcmVFeGNlcHRpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9ET01Db3JlRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9ET01Db3JlRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEdPT0dMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRPTUNv
cmVFeGNlcHRpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgY29uc3QgY2hh
ciogY29uc3QgZXhjZXB0aW9uTmFtZXNbXSA9IHsKKyAgICAiSU5ERVhfU0laRV9FUlIiLAorICAg
ICJET01TVFJJTkdfU0laRV9FUlIiLAorICAgICJISUVSQVJDSFlfUkVRVUVTVF9FUlIiLAorICAg
ICJXUk9OR19ET0NVTUVOVF9FUlIiLAorICAgICJJTlZBTElEX0NIQVJBQ1RFUl9FUlIiLAorICAg
ICJOT19EQVRBX0FMTE9XRURfRVJSIiwKKyAgICAiTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJS
IiwKKyAgICAiTk9UX0ZPVU5EX0VSUiIsCisgICAgIk5PVF9TVVBQT1JURURfRVJSIiwKKyAgICAi
SU5VU0VfQVRUUklCVVRFX0VSUiIsCisgICAgIklOVkFMSURfU1RBVEVfRVJSIiwKKyAgICAiU1lO
VEFYX0VSUiIsCisgICAgIklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUiIsCisgICAgIk5BTUVTUEFD
RV9FUlIiLAorICAgICJJTlZBTElEX0FDQ0VTU19FUlIiLAorICAgICJWQUxJREFUSU9OX0VSUiIs
CisgICAgIlRZUEVfTUlTTUFUQ0hfRVJSIiwKKyAgICAiU0VDVVJJVFlfRVJSIiwKKyAgICAiTkVU
V09SS19FUlIiLAorICAgICJBQk9SVF9FUlIiLAorICAgICJVUkxfTUlTTUFUQ0hfRVJSIiwKKyAg
ICAiUVVPVEFfRVhDRUVERURfRVJSIiwKKyAgICAiVElNRU9VVF9FUlIiLAorICAgICJJTlZBTElE
X05PREVfVFlQRV9FUlIiLAorICAgICJEQVRBX0NMT05FX0VSUiIKK307CisKK3N0YXRpYyBjb25z
dCBjaGFyKiBjb25zdCBleGNlcHRpb25EZXNjcmlwdGlvbnNbXSA9IHsKKyAgICAiSW5kZXggb3Ig
c2l6ZSB3YXMgbmVnYXRpdmUsIG9yIGdyZWF0ZXIgdGhhbiB0aGUgYWxsb3dlZCB2YWx1ZS4iLAor
ICAgICJUaGUgc3BlY2lmaWVkIHJhbmdlIG9mIHRleHQgZGlkIG5vdCBmaXQgaW50byBhIERPTVN0
cmluZy4iLAorICAgICJBIE5vZGUgd2FzIGluc2VydGVkIHNvbWV3aGVyZSBpdCBkb2Vzbid0IGJl
bG9uZy4iLAorICAgICJBIE5vZGUgd2FzIHVzZWQgaW4gYSBkaWZmZXJlbnQgZG9jdW1lbnQgdGhh
biB0aGUgb25lIHRoYXQgY3JlYXRlZCBpdCAodGhhdCBkb2Vzbid0IHN1cHBvcnQgaXQpLiIsCisg
ICAgIkFuIGludmFsaWQgb3IgaWxsZWdhbCBjaGFyYWN0ZXIgd2FzIHNwZWNpZmllZCwgc3VjaCBh
cyBpbiBhbiBYTUwgbmFtZS4iLAorICAgICJEYXRhIHdhcyBzcGVjaWZpZWQgZm9yIGEgTm9kZSB3
aGljaCBkb2VzIG5vdCBzdXBwb3J0IGRhdGEuIiwKKyAgICAiQW4gYXR0ZW1wdCB3YXMgbWFkZSB0
byBtb2RpZnkgYW4gb2JqZWN0IHdoZXJlIG1vZGlmaWNhdGlvbnMgYXJlIG5vdCBhbGxvd2VkLiIs
CisgICAgIkFuIGF0dGVtcHQgd2FzIG1hZGUgdG8gcmVmZXJlbmNlIGEgTm9kZSBpbiBhIGNvbnRl
eHQgd2hlcmUgaXQgZG9lcyBub3QgZXhpc3QuIiwKKyAgICAiVGhlIGltcGxlbWVudGF0aW9uIGRp
ZCBub3Qgc3VwcG9ydCB0aGUgcmVxdWVzdGVkIHR5cGUgb2Ygb2JqZWN0IG9yIG9wZXJhdGlvbi4i
LAorICAgICJBbiBhdHRlbXB0IHdhcyBtYWRlIHRvIGFkZCBhbiBhdHRyaWJ1dGUgdGhhdCBpcyBh
bHJlYWR5IGluIHVzZSBlbHNld2hlcmUuIiwKKyAgICAiQW4gYXR0ZW1wdCB3YXMgbWFkZSB0byB1
c2UgYW4gb2JqZWN0IHRoYXQgaXMgbm90LCBvciBpcyBubyBsb25nZXIsIHVzYWJsZS4iLAorICAg
ICJBbiBpbnZhbGlkIG9yIGlsbGVnYWwgc3RyaW5nIHdhcyBzcGVjaWZpZWQuIiwKKyAgICAiQW4g
YXR0ZW1wdCB3YXMgbWFkZSB0byBtb2RpZnkgdGhlIHR5cGUgb2YgdGhlIHVuZGVybHlpbmcgb2Jq
ZWN0LiIsCisgICAgIkFuIGF0dGVtcHQgd2FzIG1hZGUgdG8gY3JlYXRlIG9yIGNoYW5nZSBhbiBv
YmplY3QgaW4gYSB3YXkgd2hpY2ggaXMgaW5jb3JyZWN0IHdpdGggcmVnYXJkIHRvIG5hbWVzcGFj
ZXMuIiwKKyAgICAiQSBwYXJhbWV0ZXIgb3IgYW4gb3BlcmF0aW9uIHdhcyBub3Qgc3VwcG9ydGVk
IGJ5IHRoZSB1bmRlcmx5aW5nIG9iamVjdC4iLAorICAgICJBIGNhbGwgdG8gYSBtZXRob2Qgc3Vj
aCBhcyBpbnNlcnRCZWZvcmUgb3IgcmVtb3ZlQ2hpbGQgd291bGQgbWFrZSB0aGUgTm9kZSBpbnZh
bGlkIHdpdGggcmVzcGVjdCB0byBcInBhcnRpYWwgdmFsaWRpdHlcIiwgdGhpcyBleGNlcHRpb24g
d291bGQgYmUgcmFpc2VkIGFuZCB0aGUgb3BlcmF0aW9uIHdvdWxkIG5vdCBiZSBkb25lLiIsCisg
ICAgIlRoZSB0eXBlIG9mIGFuIG9iamVjdCB3YXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIGV4cGVj
dGVkIHR5cGUgb2YgdGhlIHBhcmFtZXRlciBhc3NvY2lhdGVkIHRvIHRoZSBvYmplY3QuIiwKKyAg
ICAiQW4gYXR0ZW1wdCB3YXMgbWFkZSB0byBicmVhayB0aHJvdWdoIHRoZSBzZWN1cml0eSBwb2xp
Y3kgb2YgdGhlIHVzZXIgYWdlbnQuIiwKKyAgICAvLyBGSVhNRTogQ291bGRuJ3QgZmluZCBhIGRl
c2NyaXB0aW9uIGluIHRoZSBIVE1ML0RPTSBzcGVjaWZpY2F0aW9ucyBmb3IgTkVUV09SS19FUlIs
IEFCT1JUX0VSUiwgVVJMX01JU01BVENIX0VSUiwgYW5kIFFVT1RBX0VYQ0VFREVEX0VSUgorICAg
ICJBIG5ldHdvcmsgZXJyb3Igb2NjdXJlZC4iLAorICAgICJUaGUgdXNlciBhYm9ydGVkIGEgcmVx
dWVzdC4iLAorICAgICJBIHdvcmtlciBnbG9iYWwgc2NvcGUgcmVwcmVzZW50ZWQgYW4gYWJzb2x1
dGUgVVJMIHRoYXQgaXMgbm90IGVxdWFsIHRvIHRoZSByZXN1bHRpbmcgYWJzb2x1dGUgVVJMLiIs
CisgICAgIkFuIGF0dGVtcHQgd2FzIG1hZGUgdG8gYWRkIHNvbWV0aGluZyB0byBzdG9yYWdlIHRo
YXQgZXhjZWVkZWQgdGhlIHF1b3RhLiIsCisgICAgIkEgdGltZW91dCBvY2N1cnJlZC4iLAorICAg
ICJUaGUgc3VwcGxpZWQgbm9kZSBpcyBpbnZhbGlkIG9yIGhhcyBhbiBpbnZhbGlkIGFuY2VzdG9y
IGZvciB0aGlzIG9wZXJhdGlvbi4iLAorICAgICJBbiBvYmplY3QgY291bGQgbm90IGJlIGNsb25l
ZC4iCit9OworCitDT01QSUxFX0FTU0VSVChXVEZfQVJSQVlfTEVOR1RIKGV4Y2VwdGlvbk5hbWVz
KSA9PSBXVEZfQVJSQVlfTEVOR1RIKGV4Y2VwdGlvbkRlc2NyaXB0aW9ucyksIERPTUNvcmVFeGNl
cHRpb25UYWJsZXNNdXN0TWF0Y2gpOworCitib29sIERPTUNvcmVFeGNlcHRpb246OmluaXRpYWxp
emVEZXNjcmlwdGlvbihFeGNlcHRpb25Db2RlIGVjLCBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24q
IGRlc2NyaXB0aW9uKQoreworICAgIGRlc2NyaXB0aW9uLT50eXBlTmFtZSA9ICJET00iOworICAg
IGRlc2NyaXB0aW9uLT5jb2RlID0gZWM7CisgICAgZGVzY3JpcHRpb24tPnR5cGUgPSBET01Db3Jl
RXhjZXB0aW9uVHlwZTsKKworICAgIHNpemVfdCB0YWJsZVNpemUgPSBXVEZfQVJSQVlfTEVOR1RI
KGV4Y2VwdGlvbk5hbWVzKTsKKyAgICBzaXplX3QgdGFibGVJbmRleCA9IGVjIC0gSU5ERVhfU0la
RV9FUlI7CisKKyAgICBkZXNjcmlwdGlvbi0+bmFtZSA9IHRhYmxlSW5kZXggPCB0YWJsZVNpemUg
PyBleGNlcHRpb25OYW1lc1t0YWJsZUluZGV4XSA6IDA7CisgICAgZGVzY3JpcHRpb24tPmRlc2Ny
aXB0aW9uID0gdGFibGVJbmRleCA8IHRhYmxlU2l6ZSA/IGV4Y2VwdGlvbkRlc2NyaXB0aW9uc1t0
YWJsZUluZGV4XSA6IDA7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RPTUNvcmVFeGNlcHRpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRE9NQ29yZUV4Y2VwdGlvbi5oCShyZXZpc2lv
biA5ODYzMikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9ET01Db3JlRXhjZXB0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDE5ICszMywyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAg
ICBjbGFzcyBET01Db3JlRXhjZXB0aW9uIDogcHVibGljIEV4Y2VwdGlvbkJhc2UgewotICAgIHB1
YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NQ29yZUV4Y2VwdGlvbj4gY3JlYXRl
KGNvbnN0IEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRE9NQ29yZUV4Y2VwdGlvbihkZXNjcmlw
dGlvbikpOwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBET01Db3JlRXhjZXB0
aW9uKGNvbnN0IEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCi0gICAgICAg
ICAgICA6IEV4Y2VwdGlvbkJhc2UoZGVzY3JpcHRpb24pCi0gICAgICAgIHsKLSAgICAgICAgfQot
ICAgIH07CitjbGFzcyBET01Db3JlRXhjZXB0aW9uIDogcHVibGljIEV4Y2VwdGlvbkJhc2Ugewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTUNvcmVFeGNlcHRpb24+IGNyZWF0ZShj
b25zdCBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01Db3JlRXhjZXB0aW9uKGRlc2NyaXB0aW9uKSk7Cisg
ICAgfQorCisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZURlc2NyaXB0aW9uKEV4Y2VwdGlvbkNv
ZGUsIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiopOworCitwcml2YXRlOgorICAgIERPTUNvcmVF
eGNlcHRpb24oY29uc3QgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKKyAg
ICAgICAgOiBFeGNlcHRpb25CYXNlKGRlc2NyaXB0aW9uKQorICAgIHsKKyAgICB9Cit9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudEV4
Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RXhjZXB0
aW9uLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudEV4Y2VwdGlv
bi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGV4Y2VwdGlvbk5hbWVzW10gPSB7CisgICAgIlVOU1BF
Q0lGSUVEX0VWRU5UX1RZUEVfRVJSIiwKKyAgICAiRElTUEFUQ0hfUkVRVUVTVF9FUlIiCit9Owor
CitzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZXhjZXB0aW9uRGVzY3JpcHRpb25zW10gPSB7Cisg
ICAgIlRoZSBFdmVudCdzIHR5cGUgd2FzIG5vdCBzcGVjaWZpZWQgYnkgaW5pdGlhbGl6aW5nIHRo
ZSBldmVudCBiZWZvcmUgdGhlIG1ldGhvZCB3YXMgY2FsbGVkLiIsCisgICAgIlRoZSBFdmVudCBv
YmplY3QgaXMgYWxyZWFkeSBiZWluZyBkaXNwYXRjaGVkLiIKK307CisKK0NPTVBJTEVfQVNTRVJU
KFdURl9BUlJBWV9MRU5HVEgoZXhjZXB0aW9uTmFtZXMpID09IFdURl9BUlJBWV9MRU5HVEgoZXhj
ZXB0aW9uRGVzY3JpcHRpb25zKSwgRXZlbnRFeGNlcHRpb25UYWJsZXNNdXN0TWF0Y2gpOworCiti
b29sIEV2ZW50RXhjZXB0aW9uOjppbml0aWFsaXplRGVzY3JpcHRpb24oRXhjZXB0aW9uQ29kZSBl
YywgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uKiBkZXNjcmlwdGlvbikKK3sKKyAgICBpZiAoZWMg
PCBFdmVudEV4Y2VwdGlvbk9mZnNldCB8fCBlYyA+IEV2ZW50RXhjZXB0aW9uTWF4KQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBkZXNjcmlwdGlvbi0+dHlwZU5hbWUgPSAiRE9NIEV2ZW50
cyI7CisgICAgZGVzY3JpcHRpb24tPmNvZGUgPSBlYyAtIEV2ZW50RXhjZXB0aW9uT2Zmc2V0Owor
ICAgIGRlc2NyaXB0aW9uLT50eXBlID0gRXZlbnRFeGNlcHRpb25UeXBlOworCisgICAgc2l6ZV90
IHRhYmxlU2l6ZSA9IFdURl9BUlJBWV9MRU5HVEgoZXhjZXB0aW9uTmFtZXMpOworICAgIHNpemVf
dCB0YWJsZUluZGV4ID0gZWMgLSBVTlNQRUNJRklFRF9FVkVOVF9UWVBFX0VSUjsKKworICAgIGRl
c2NyaXB0aW9uLT5uYW1lID0gdGFibGVJbmRleCA8IHRhYmxlU2l6ZSA/IGV4Y2VwdGlvbk5hbWVz
W3RhYmxlSW5kZXhdIDogMDsKKyAgICBkZXNjcmlwdGlvbi0+ZGVzY3JpcHRpb24gPSB0YWJsZUlu
ZGV4IDwgdGFibGVTaXplID8gZXhjZXB0aW9uRGVzY3JpcHRpb25zW3RhYmxlSW5kZXhdIDogMDsK
KworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRFeGNlcHRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRFeGNlcHRpb24uaAkocmV2aXNpb24gOTg2MzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRFeGNlcHRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMjggKzMz
LDMwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIEV2ZW50RXhjZXB0aW9u
IDogcHVibGljIEV4Y2VwdGlvbkJhc2UgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8RXZlbnRFeGNlcHRpb24+IGNyZWF0ZShjb25zdCBFeGNlcHRpb25Db2RlRGVzY3Jp
cHRpb24mIGRlc2NyaXB0aW9uKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEV2ZW50RXhjZXB0aW9uKGRlc2NyaXB0aW9uKSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBzdGF0aWMgY29uc3QgaW50IEV2ZW50RXhjZXB0aW9uT2Zmc2V0ID0gMTAwOwotICAgICAgICBz
dGF0aWMgY29uc3QgaW50IEV2ZW50RXhjZXB0aW9uTWF4ID0gMTk5OwotCi0gICAgICAgIGVudW0g
RXZlbnRFeGNlcHRpb25Db2RlIHsKLSAgICAgICAgICAgIFVOU1BFQ0lGSUVEX0VWRU5UX1RZUEVf
RVJSID0gRXZlbnRFeGNlcHRpb25PZmZzZXQsCi0gICAgICAgICAgICBESVNQQVRDSF9SRVFVRVNU
X0VSUgotICAgICAgICB9OwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgRXZlbnRFeGNlcHRpb24o
Y29uc3QgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKLSAgICAgICAgICAg
IDogRXhjZXB0aW9uQmFzZShkZXNjcmlwdGlvbikKLSAgICAgICAgewotICAgICAgICB9CitjbGFz
cyBFdmVudEV4Y2VwdGlvbiA6IHB1YmxpYyBFeGNlcHRpb25CYXNlIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxFdmVudEV4Y2VwdGlvbj4gY3JlYXRlKGNvbnN0IEV4Y2VwdGlvbkNv
ZGVEZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEV2ZW50RXhjZXB0aW9uKGRlc2NyaXB0aW9uKSk7CisgICAgfQorCisgICAgc3RhdGlj
IGNvbnN0IGludCBFdmVudEV4Y2VwdGlvbk9mZnNldCA9IDEwMDsKKyAgICBzdGF0aWMgY29uc3Qg
aW50IEV2ZW50RXhjZXB0aW9uTWF4ID0gMTk5OworCisgICAgZW51bSBFdmVudEV4Y2VwdGlvbkNv
ZGUgeworICAgICAgICBVTlNQRUNJRklFRF9FVkVOVF9UWVBFX0VSUiA9IEV2ZW50RXhjZXB0aW9u
T2Zmc2V0LAorICAgICAgICBESVNQQVRDSF9SRVFVRVNUX0VSUgogICAgIH07CiAKKyAgICBzdGF0
aWMgYm9vbCBpbml0aWFsaXplRGVzY3JpcHRpb24oRXhjZXB0aW9uQ29kZSwgRXhjZXB0aW9uQ29k
ZURlc2NyaXB0aW9uKik7CisKK3ByaXZhdGU6CisgICAgRXZlbnRFeGNlcHRpb24oY29uc3QgRXhj
ZXB0aW9uQ29kZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKKyAgICAgICAgOiBFeGNlcHRpb25C
YXNlKGRlc2NyaXB0aW9uKQorICAgIHsKKyAgICB9Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFdmVudEV4Y2VwdGlvbl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vRXhjZXB0aW9uQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V4
Y2VwdGlvbkJhc2UuY3BwCShyZXZpc2lvbiA5ODYzMikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9F
eGNlcHRpb25CYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQmFzZS5oIgotI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKIAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQmFzZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25CYXNlLmgJKHJldmlzaW9uIDk4NjMyKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMzEgKzI5
LDMyIEBACiAjaWZuZGVmIEV4Y2VwdGlvbkJhc2VfaAogI2RlZmluZSBFeGNlcHRpb25CYXNlX2gK
IAorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5o
IgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
ICAgIHN0cnVjdCBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb247CitzdHJ1Y3QgRXhjZXB0aW9uQ29k
ZURlc2NyaXB0aW9uOwogCi0gICAgY2xhc3MgRXhjZXB0aW9uQmFzZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEV4Y2VwdGlvbkJhc2U+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHVuc2lnbmVkIHNob3J0
IGNvZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGU7IH0KLSAgICAgICAgU3RyaW5nIG5hbWUoKSBj
b25zdCB7IHJldHVybiBtX25hbWU7IH0KLSAgICAgICAgU3RyaW5nIG1lc3NhZ2UoKSBjb25zdCB7
IHJldHVybiBtX21lc3NhZ2U7IH0KLSAgICAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9kZXNjcmlwdGlvbjsgfQotCi0gICAgICAgIFN0cmluZyB0b1N0cmluZygpIGNv
bnN0OwotCi0gICAgcHJvdGVjdGVkOgotICAgICAgICBFeGNlcHRpb25CYXNlKGNvbnN0IEV4Y2Vw
dGlvbkNvZGVEZXNjcmlwdGlvbiYpOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgdW5zaWduZWQg
c2hvcnQgbV9jb2RlOwotICAgICAgICBTdHJpbmcgbV9uYW1lOwotICAgICAgICBTdHJpbmcgbV9t
ZXNzYWdlOwotICAgICAgICBTdHJpbmcgbV9kZXNjcmlwdGlvbjsKLSAgICB9OworY2xhc3MgRXhj
ZXB0aW9uQmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPEV4Y2VwdGlvbkJhc2U+IHsKK3B1YmxpYzoK
KyAgICB1bnNpZ25lZCBzaG9ydCBjb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlOyB9CisgICAg
U3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICBTdHJpbmcgbWVzc2Fn
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZTsgfQorICAgIFN0cmluZyBkZXNjcmlwdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fZGVzY3JpcHRpb247IH0KKworICAgIFN0cmluZyB0b1N0cmluZygp
IGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgRXhjZXB0aW9uQmFzZShjb25zdCBFeGNlcHRpb25D
b2RlRGVzY3JpcHRpb24mKTsKKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBzaG9ydCBtX2NvZGU7
CisgICAgU3RyaW5nIG1fbmFtZTsKKyAgICBTdHJpbmcgbV9tZXNzYWdlOworICAgIFN0cmluZyBt
X2Rlc2NyaXB0aW9uOworfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUuY3BwCShyZXZpc2lvbiA5ODYzMikKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9FeGNlcHRpb25Db2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMzQ0ICsy
NiwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
IAotI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNl
cHRpb24uaCIKLSNpbmNsdWRlICJSYW5nZUV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgIlhNTEh0dHBS
ZXF1ZXN0RXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiWFBhdGhFeGNlcHRpb24uaCIKLQotI2lmIEVO
QUJMRShTVkcpCi0jaW5jbHVkZSAiU1ZHRXhjZXB0aW9uLmgiCi0jZW5kaWYKLQotI2lmIEVOQUJM
RShTUUxfREFUQUJBU0UpCi0jaW5jbHVkZSAiU1FMRXhjZXB0aW9uLmgiCi0jZW5kaWYKLQotI2lm
IEVOQUJMRShCTE9CKSB8fCBFTkFCTEUoRklMRV9TWVNURU0pCi0jaW5jbHVkZSAiRmlsZUV4Y2Vw
dGlvbi5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbk5vdEFsbG93ZWRFeGNlcHRpb24uaCIKLSNlbmRp
ZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBleGNl
cHRpb25OYW1lc1tdID0gewotICAgICJJTkRFWF9TSVpFX0VSUiIsCi0gICAgIkRPTVNUUklOR19T
SVpFX0VSUiIsCi0gICAgIkhJRVJBUkNIWV9SRVFVRVNUX0VSUiIsCi0gICAgIldST05HX0RPQ1VN
RU5UX0VSUiIsCi0gICAgIklOVkFMSURfQ0hBUkFDVEVSX0VSUiIsCi0gICAgIk5PX0RBVEFfQUxM
T1dFRF9FUlIiLAotICAgICJOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIiLAotICAgICJOT1Rf
Rk9VTkRfRVJSIiwKLSAgICAiTk9UX1NVUFBPUlRFRF9FUlIiLAotICAgICJJTlVTRV9BVFRSSUJV
VEVfRVJSIiwKLSAgICAiSU5WQUxJRF9TVEFURV9FUlIiLAotICAgICJTWU5UQVhfRVJSIiwKLSAg
ICAiSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSIiwKLSAgICAiTkFNRVNQQUNFX0VSUiIsCi0gICAg
IklOVkFMSURfQUNDRVNTX0VSUiIsCi0gICAgIlZBTElEQVRJT05fRVJSIiwKLSAgICAiVFlQRV9N
SVNNQVRDSF9FUlIiLAotICAgICJTRUNVUklUWV9FUlIiLAotICAgICJORVRXT1JLX0VSUiIsCi0g
ICAgIkFCT1JUX0VSUiIsCi0gICAgIlVSTF9NSVNNQVRDSF9FUlIiLAotICAgICJRVU9UQV9FWENF
RURFRF9FUlIiLAotICAgICJUSU1FT1VUX0VSUiIsCi0gICAgIklOVkFMSURfTk9ERV9UWVBFX0VS
UiIsCi0gICAgIkRBVEFfQ0xPTkVfRVJSIgotfTsKLQotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0
IGV4Y2VwdGlvbkRlc2NyaXB0aW9uc1tdID0gewotICAgICJJbmRleCBvciBzaXplIHdhcyBuZWdh
dGl2ZSwgb3IgZ3JlYXRlciB0aGFuIHRoZSBhbGxvd2VkIHZhbHVlLiIsCi0gICAgIlRoZSBzcGVj
aWZpZWQgcmFuZ2Ugb2YgdGV4dCBkaWQgbm90IGZpdCBpbnRvIGEgRE9NU3RyaW5nLiIsCi0gICAg
IkEgTm9kZSB3YXMgaW5zZXJ0ZWQgc29tZXdoZXJlIGl0IGRvZXNuJ3QgYmVsb25nLiIsCi0gICAg
IkEgTm9kZSB3YXMgdXNlZCBpbiBhIGRpZmZlcmVudCBkb2N1bWVudCB0aGFuIHRoZSBvbmUgdGhh
dCBjcmVhdGVkIGl0ICh0aGF0IGRvZXNuJ3Qgc3VwcG9ydCBpdCkuIiwKLSAgICAiQW4gaW52YWxp
ZCBvciBpbGxlZ2FsIGNoYXJhY3RlciB3YXMgc3BlY2lmaWVkLCBzdWNoIGFzIGluIGFuIFhNTCBu
YW1lLiIsCi0gICAgIkRhdGEgd2FzIHNwZWNpZmllZCBmb3IgYSBOb2RlIHdoaWNoIGRvZXMgbm90
IHN1cHBvcnQgZGF0YS4iLAotICAgICJBbiBhdHRlbXB0IHdhcyBtYWRlIHRvIG1vZGlmeSBhbiBv
YmplY3Qgd2hlcmUgbW9kaWZpY2F0aW9ucyBhcmUgbm90IGFsbG93ZWQuIiwKLSAgICAiQW4gYXR0
ZW1wdCB3YXMgbWFkZSB0byByZWZlcmVuY2UgYSBOb2RlIGluIGEgY29udGV4dCB3aGVyZSBpdCBk
b2VzIG5vdCBleGlzdC4iLAotICAgICJUaGUgaW1wbGVtZW50YXRpb24gZGlkIG5vdCBzdXBwb3J0
IHRoZSByZXF1ZXN0ZWQgdHlwZSBvZiBvYmplY3Qgb3Igb3BlcmF0aW9uLiIsCi0gICAgIkFuIGF0
dGVtcHQgd2FzIG1hZGUgdG8gYWRkIGFuIGF0dHJpYnV0ZSB0aGF0IGlzIGFscmVhZHkgaW4gdXNl
IGVsc2V3aGVyZS4iLAotICAgICJBbiBhdHRlbXB0IHdhcyBtYWRlIHRvIHVzZSBhbiBvYmplY3Qg
dGhhdCBpcyBub3QsIG9yIGlzIG5vIGxvbmdlciwgdXNhYmxlLiIsCi0gICAgIkFuIGludmFsaWQg
b3IgaWxsZWdhbCBzdHJpbmcgd2FzIHNwZWNpZmllZC4iLAotICAgICJBbiBhdHRlbXB0IHdhcyBt
YWRlIHRvIG1vZGlmeSB0aGUgdHlwZSBvZiB0aGUgdW5kZXJseWluZyBvYmplY3QuIiwKLSAgICAi
QW4gYXR0ZW1wdCB3YXMgbWFkZSB0byBjcmVhdGUgb3IgY2hhbmdlIGFuIG9iamVjdCBpbiBhIHdh
eSB3aGljaCBpcyBpbmNvcnJlY3Qgd2l0aCByZWdhcmQgdG8gbmFtZXNwYWNlcy4iLAotICAgICJB
IHBhcmFtZXRlciBvciBhbiBvcGVyYXRpb24gd2FzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHVuZGVy
bHlpbmcgb2JqZWN0LiIsCi0gICAgIkEgY2FsbCB0byBhIG1ldGhvZCBzdWNoIGFzIGluc2VydEJl
Zm9yZSBvciByZW1vdmVDaGlsZCB3b3VsZCBtYWtlIHRoZSBOb2RlIGludmFsaWQgd2l0aCByZXNw
ZWN0IHRvIFwicGFydGlhbCB2YWxpZGl0eVwiLCB0aGlzIGV4Y2VwdGlvbiB3b3VsZCBiZSByYWlz
ZWQgYW5kIHRoZSBvcGVyYXRpb24gd291bGQgbm90IGJlIGRvbmUuIiwKLSAgICAiVGhlIHR5cGUg
b2YgYW4gb2JqZWN0IHdhcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgZXhwZWN0ZWQgdHlwZSBvZiB0
aGUgcGFyYW1ldGVyIGFzc29jaWF0ZWQgdG8gdGhlIG9iamVjdC4iLAotICAgICJBbiBhdHRlbXB0
IHdhcyBtYWRlIHRvIGJyZWFrIHRocm91Z2ggdGhlIHNlY3VyaXR5IHBvbGljeSBvZiB0aGUgdXNl
ciBhZ2VudC4iLAotICAgIC8vIEZJWE1FOiBDb3VsZG4ndCBmaW5kIGEgZGVzY3JpcHRpb24gaW4g
dGhlIEhUTUwvRE9NIHNwZWNpZmljYXRpb25zIGZvciBORVRXT1JLX0VSUiwgQUJPUlRfRVJSLCBV
UkxfTUlTTUFUQ0hfRVJSLCBhbmQgUVVPVEFfRVhDRUVERURfRVJSCi0gICAgIkEgbmV0d29yayBl
cnJvciBvY2N1cmVkLiIsCi0gICAgIlRoZSB1c2VyIGFib3J0ZWQgYSByZXF1ZXN0LiIsCi0gICAg
IkEgd29ya2VyIGdsb2JhbCBzY29wZSByZXByZXNlbnRlZCBhbiBhYnNvbHV0ZSBVUkwgdGhhdCBp
cyBub3QgZXF1YWwgdG8gdGhlIHJlc3VsdGluZyBhYnNvbHV0ZSBVUkwuIiwKLSAgICAiQW4gYXR0
ZW1wdCB3YXMgbWFkZSB0byBhZGQgc29tZXRoaW5nIHRvIHN0b3JhZ2UgdGhhdCBleGNlZWRlZCB0
aGUgcXVvdGEuIiwKLSAgICAiQSB0aW1lb3V0IG9jY3VycmVkLiIsCi0gICAgIlRoZSBzdXBwbGll
ZCBub2RlIGlzIGludmFsaWQgb3IgaGFzIGFuIGludmFsaWQgYW5jZXN0b3IgZm9yIHRoaXMgb3Bl
cmF0aW9uLiIsCi0gICAgIkFuIG9iamVjdCBjb3VsZCBub3QgYmUgY2xvbmVkLiIKLX07Ci0KLXN0
YXRpYyBjb25zdCBjaGFyKiBjb25zdCByYW5nZUV4Y2VwdGlvbk5hbWVzW10gPSB7Ci0gICAgIkJB
RF9CT1VOREFSWVBPSU5UU19FUlIiLAotICAgICJJTlZBTElEX05PREVfVFlQRV9FUlIiCi19Owot
Ci1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgcmFuZ2VFeGNlcHRpb25EZXNjcmlwdGlvbnNbXSA9
IHsKLSAgICAiVGhlIGJvdW5kYXJ5LXBvaW50cyBvZiBhIFJhbmdlIGRpZCBub3QgbWVldCBzcGVj
aWZpYyByZXF1aXJlbWVudHMuIiwKLSAgICAiVGhlIGNvbnRhaW5lciBvZiBhbiBib3VuZGFyeS1w
b2ludCBvZiBhIFJhbmdlIHdhcyBiZWluZyBzZXQgdG8gZWl0aGVyIGEgbm9kZSBvZiBhbiBpbnZh
bGlkIHR5cGUgb3IgYSBub2RlIHdpdGggYW4gYW5jZXN0b3Igb2YgYW4gaW52YWxpZCB0eXBlLiIK
LX07Ci0KLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBldmVudEV4Y2VwdGlvbk5hbWVzW10gPSB7
Ci0gICAgIlVOU1BFQ0lGSUVEX0VWRU5UX1RZUEVfRVJSIiwKLSAgICAiRElTUEFUQ0hfUkVRVUVT
VF9FUlIiCi19OwotCi1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgZXZlbnRFeGNlcHRpb25EZXNj
cmlwdGlvbnNbXSA9IHsKLSAgICAiVGhlIEV2ZW50J3MgdHlwZSB3YXMgbm90IHNwZWNpZmllZCBi
eSBpbml0aWFsaXppbmcgdGhlIGV2ZW50IGJlZm9yZSB0aGUgbWV0aG9kIHdhcyBjYWxsZWQuIiwK
LSAgICAiVGhlIEV2ZW50IG9iamVjdCBpcyBhbHJlYWR5IGJlaW5nIGRpc3BhdGNoZWQuIgotfTsK
LQotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHhtbEh0dHBSZXF1ZXN0RXhjZXB0aW9uTmFtZXNb
XSA9IHsKLSAgICAiTkVUV09SS19FUlIiLAotICAgICJBQk9SVF9FUlIiCi19OwotCi1zdGF0aWMg
Y29uc3QgY2hhciogY29uc3QgeG1sSHR0cFJlcXVlc3RFeGNlcHRpb25EZXNjcmlwdGlvbnNbXSA9
IHsKLSAgICAiQSBuZXR3b3JrIGVycm9yIG9jY3VyZWQgaW4gc3luY2hyb25vdXMgcmVxdWVzdHMu
IiwKLSAgICAiVGhlIHVzZXIgYWJvcnRlZCBhIHJlcXVlc3QgaW4gc3luY2hyb25vdXMgcmVxdWVz
dHMuIgotfTsKLQotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHhwYXRoRXhjZXB0aW9uTmFtZXNb
XSA9IHsKLSAgICAiSU5WQUxJRF9FWFBSRVNTSU9OX0VSUiIsCi0gICAgIlRZUEVfRVJSIgotfTsK
LQotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHhwYXRoRXhjZXB0aW9uRGVzY3JpcHRpb25zW10g
PSB7Ci0gICAgIlRoZSBleHByZXNzaW9uIGhhZCBhIHN5bnRheCBlcnJvciBvciBvdGhlcndpc2Ug
aXMgbm90IGEgbGVnYWwgZXhwcmVzc2lvbiBhY2NvcmRpbmcgdG8gdGhlIHJ1bGVzIG9mIHRoZSBz
cGVjaWZpYyBYUGF0aEV2YWx1YXRvci4iLAotICAgICJUaGUgZXhwcmVzc2lvbiBjb3VsZCBub3Qg
YmUgY29udmVydGVkIHRvIHJldHVybiB0aGUgc3BlY2lmaWVkIHR5cGUuIgotfTsKLQotI2lmIEVO
QUJMRShTVkcpCi1zdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc3ZnRXhjZXB0aW9uTmFtZXNbXSA9
IHsKLSAgICAiU1ZHX1dST05HX1RZUEVfRVJSIiwKLSAgICAiU1ZHX0lOVkFMSURfVkFMVUVfRVJS
IiwKLSAgICAiU1ZHX01BVFJJWF9OT1RfSU5WRVJUQUJMRSIKLX07Ci0KLXN0YXRpYyBjb25zdCBj
aGFyKiBjb25zdCBzdmdFeGNlcHRpb25EZXNjcmlwdGlvbnNbXSA9IHsKLSAgICAiQW4gb2JqZWN0
IG9mIHRoZSB3cm9uZyB0eXBlIHdhcyBwYXNzZWQgdG8gYW4gb3BlcmF0aW9uLiIsCi0gICAgIkFu
IGludmFsaWQgdmFsdWUgd2FzIHBhc3NlZCB0byBhbiBvcGVyYXRpb24gb3IgYXNzaWduZWQgdG8g
YW4gYXR0cmlidXRlLiIsCi0gICAgIkFuIGF0dGVtcHQgd2FzIG1hZGUgdG8gaW52ZXJ0IGEgbWF0
cml4IHRoYXQgaXMgbm90IGludmVydGlibGUuIgotfTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzcWxFeGNlcHRpb25OYW1lc1td
ID0gewotICAgICJVTktOT1dOX0VSUiIsCi0gICAgIkRBVEFCQVNFX0VSUiIsCi0gICAgIlZFUlNJ
T05fRVJSIiwKLSAgICAiVE9PX0xBUkdFX0VSUiIsCi0gICAgIlFVT1RBX0VSUiIsCi0gICAgIlNZ
TlRBWF9FUlIiLAotICAgICJDT05TVFJBSU5UX0VSUiIsCi0gICAgIlRJTUVPVVRfRVJSIgotfTsK
LQotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNxbEV4Y2VwdGlvbkRlc2NyaXB0aW9uc1tdID0g
ewotICAgICJUaGUgb3BlcmF0aW9uIGZhaWxlZCBmb3IgcmVhc29ucyB1bnJlbGF0ZWQgdG8gdGhl
IGRhdGFiYXNlLiIsCi0gICAgIlRoZSBvcGVyYXRpb24gZmFpbGVkIGZvciBzb21lIHJlYXNvbiBy
ZWxhdGVkIHRvIHRoZSBkYXRhYmFzZS4iLAotICAgICJUaGUgYWN0dWFsIGRhdGFiYXNlIHZlcnNp
b24gZGlkIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgdmVyc2lvbi4iLAotICAgICJEYXRhIHJldHVy
bmVkIGZyb20gdGhlIGRhdGFiYXNlIGlzIHRvbyBsYXJnZS4iLAotICAgICJRdW90YSB3YXMgZXhj
ZWVkZWQuIiwKLSAgICAiSW52YWxpZCBvciB1bmF1dGhvcml6ZWQgc3RhdGVtZW50OyBvciB0aGUg
bnVtYmVyIG9mIGFyZ3VtZW50cyBkaWQgbm90IG1hdGNoIHRoZSBudW1iZXIgb2YgPyBwbGFjZWhv
bGRlcnMuIiwKLSAgICAiQSBjb25zdHJhaW50IHdhcyB2aW9sYXRlZC4iLAotICAgICJBIHRyYW5z
YWN0aW9uIGxvY2sgY291bGQgbm90IGJlIGFjcXVpcmVkIGluIGEgcmVhc29uYWJsZSB0aW1lLiIK
LX07Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShCTE9CKSB8fCBFTkFCTEUoRklMRV9TWVNURU0pCi1z
dGF0aWMgY29uc3QgY2hhciogY29uc3QgZmlsZUV4Y2VwdGlvbk5hbWVzW10gPSB7Ci0gICAgIk5P
VF9GT1VORF9FUlIiLAotICAgICJTRUNVUklUWV9FUlIiLAotICAgICJBQk9SVF9FUlIiLAotICAg
ICJOT1RfUkVBREFCTEVfRVJSIiwKLSAgICAiRU5DT0RJTkdfRVJSIiwKLSAgICAiTk9fTU9ESUZJ
Q0FUSU9OX0FMTE9XRURfRVJSIiwKLSAgICAiSU5WQUxJRF9TVEFURV9FUlIiLAotICAgICJTWU5U
QVhfRVJSIiwKLSAgICAiSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSIiwKLSAgICAiUVVPVEFfRVhD
RUVERURfRVJSIiwKLSAgICAiVFlQRV9NSVNNQVRDSF9FUlIiLAotICAgICJQQVRIX0VYSVNUU19F
UlIiCi19OwotCi1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgZmlsZUV4Y2VwdGlvbkRlc2NyaXB0
aW9uc1tdID0gewotICAgICJBIHJlcXVlc3RlZCBmaWxlIG9yIGRpcmVjdG9yeSBjb3VsZCBub3Qg
YmUgZm91bmQgYXQgdGhlIHRpbWUgYW4gb3BlcmF0aW9uIHdhcyBwcm9jZXNzZWQuIiwKLSAgICAi
SXQgd2FzIGRldGVybWluZWQgdGhhdCBjZXJ0YWluIGZpbGVzIGFyZSB1bnNhZmUgZm9yIGFjY2Vz
cyB3aXRoaW4gYSBXZWIgYXBwbGljYXRpb24sIG9yIHRoYXQgdG9vIG1hbnkgY2FsbHMgYXJlIGJl
aW5nIG1hZGUgb24gZmlsZSByZXNvdXJjZXMuIiwKLSAgICAiQW4gb25nb2luZyBvcGVyYXRpb24g
d2FzIGFib3J0ZWQsIHR5cGljYWxseSB3aXRoIGEgY2FsbCB0byBhYm9ydCgpLiIsCi0gICAgIlRo
ZSByZXF1ZXN0ZWQgZmlsZSBjb3VsZCBub3QgYmUgcmVhZCwgdHlwaWNhbGx5IGR1ZSB0byBwZXJt
aXNzaW9uIHByb2JsZW1zIHRoYXQgaGF2ZSBvY2N1cmVkIGFmdGVyIGEgcmVmZXJlbmNlIHRvIGEg
ZmlsZSB3YXMgYWNxdWlyZWQuIiwKLSAgICAiQSBVUkkgc3VwcGxpZWQgdG8gdGhlIEFQSSB3YXMg
bWFsZm9ybWVkLCBvciB0aGUgcmVzdWx0aW5nIERhdGEgVVJMIGhhcyBleGNlZWRlZCB0aGUgVVJM
IGxlbmd0aCBsaW1pdGF0aW9ucyBmb3IgRGF0YSBVUkxzLiIsCi0gICAgIkFuIGF0dGVtcHQgd2Fz
IG1hZGUgdG8gd3JpdGUgdG8gYSBmaWxlIG9yIGRpcmVjdG9yeSB3aGljaCBjb3VsZCBub3QgYmUg
bW9kaWZpZWQgZHVlIHRvIHRoZSBzdGF0ZSBvZiB0aGUgdW5kZXJseWluZyBmaWxlc3lzdGVtLiIs
Ci0gICAgIkFuIG9wZXJhdGlvbiB0aGF0IGRlcGVuZHMgb24gc3RhdGUgY2FjaGVkIGluIGFuIGlu
dGVyZmFjZSBvYmplY3Qgd2FzIG1hZGUgYnV0IHRoZSBzdGF0ZSBoYWQgY2hhbmdlZCBzaW5jZSBp
dCB3YXMgcmVhZCBmcm9tIGRpc2suIiwKLSAgICAiQW4gaW52YWxpZCBvciB1bnN1cHBvcnRlZCBh
cmd1bWVudCB3YXMgZ2l2ZW4sIGxpa2UgYW4gaW52YWxpZCBsaW5lIGVuZGluZyBzcGVjaWZpZXIu
IiwKLSAgICAiVGhlIG1vZGlmaWNhdGlvbiByZXF1ZXN0IHdhcyBpbGxlZ2FsLiIsCi0gICAgIlRo
ZSBvcGVyYXRpb24gZmFpbGVkIGJlY2F1c2UgaXQgd291bGQgY2F1c2UgdGhlIGFwcGxpY2F0aW9u
IHRvIGV4Y2VlZCBpdHMgc3RvcmFnZSBxdW90YS4iLAotICAgICJUaGUgcGF0aCBzdXBwbGllZCBl
eGlzdHMsIGJ1dCB3YXMgbm90IGFuIGVudHJ5IG9mIHJlcXVlc3RlZCB0eXBlLiIsCi0gICAgIkFu
IGF0dGVtcHQgd2FzIG1hZGUgdG8gY3JlYXRlIGEgZmlsZSBvciBkaXJlY3Rvcnkgd2hlcmUgYW4g
ZWxlbWVudCBhbHJlYWR5IGV4aXN0cy4iCi19OwotCi1zdGF0aWMgY29uc3QgY2hhciogY29uc3Qg
b3BlcmF0aW9uTm90QWxsb3dlZEV4Y2VwdGlvbk5hbWVzW10gPSB7Ci0gICAgIk5PVF9BTExPV0VE
X0VSUiIKLX07Ci0KLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBvcGVyYXRpb25Ob3RBbGxvd2Vk
RXhjZXB0aW9uRGVzY3JpcHRpb25zW10gPSB7Ci0gICAgIkEgcmVhZCBtZXRob2Qgd2FzIGNhbGxl
ZCB3aGlsZSB0aGUgb2JqZWN0IHdhcyBpbiB0aGUgTE9BRElORyBzdGF0ZSBkdWUgdG8gYSBwcmV2
aW91cyByZWFkIGNhbGwuIgotfTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCi1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgaWRiRGF0YWJhc2VFeGNlcHRpb25OYW1lc1td
ID0gewotICAgICJVTktOT1dOX0VSUiIsCi0gICAgIk5PTl9UUkFOU0lFTlRfRVJSIiwKLSAgICAi
Tk9UX0ZPVU5EX0VSUiIsCi0gICAgIkNPTlNUUkFJTlRfRVJSIiwKLSAgICAiREFUQV9FUlIiLAot
ICAgICJOT1RfQUxMT1dFRF9FUlIiLAotICAgICJTRVJJQUxfRVJSIiwKLSAgICAiUkVDT1ZFUkFC
TEVfRVJSIiwKLSAgICAiVFJBTlNJRU5UX0VSUiIsCi0gICAgIlRJTUVPVVRfRVJSIiwKLSAgICAi
REVBRExPQ0tfRVJSIiwKLSAgICAiUkVBRF9PTkxZX0VSUiIsCi0gICAgIkFCT1JUX0VSUiIKLX07
Ci0KLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBpZGJEYXRhYmFzZUV4Y2VwdGlvbkRlc2NyaXB0
aW9uc1tdID0gewotICAgICJBbiB1bmtub3duIGVycm9yIG9jY3VycmVkIHdpdGhpbiBJbmRleGVk
IERhdGFiYXNlLiIsCi0gICAgIk5PTl9UUkFOU0lFTlRfRVJSIiwgLy8gRklYTUU6IFdyaXRlIGEg
YmV0dGVyIG1lc3NhZ2UgaWYgaXQncyBldmVyIHBvc3NpYmxlIHRoaXMgaXMgdGhyb3duLgotICAg
ICJUaGUgbmFtZSBzdXBwbGllZCBkb2VzIG5vdCBtYXRjaCBhbnkgZXhpc3RpbmcgaXRlbS4iLAot
ICAgICJUaGUgcmVxdWVzdCBjYW5ub3QgYmUgY29tcGxldGVkIGR1ZSB0byBhIGZhaWxlZCBjb25z
dHJhaW50LiIsCi0gICAgIlRoZSBkYXRhIHByb3ZpZGVkIGRvZXMgbm90IG1lZXQgdGhlIHJlcXVp
cmVtZW50cyBvZiB0aGUgZnVuY3Rpb24uIiwKLSAgICAiVGhpcyBmdW5jdGlvbiBpcyBub3QgYWxs
b3dlZCB0byBiZSBjYWxsZWQgaW4gc3VjaCBhIGNvbnRleHQuIiwKLSAgICAiVGhlIGRhdGEgc3Vw
cGxpZWQgY2Fubm90IGJlIHNlcmlhbGl6ZWQgYWNjb3JkaW5nIHRvIHRoZSBzdHJ1Y3R1cmVkIGNs
b25pbmcgYWxnb3JpdGhtLiIsCi0gICAgIlJFQ09WRVJBQkxFX0VSUiIsIC8vIEZJWE1FOiBUaGlz
IGlzbid0IGV2ZW4gdXNlZC4KLSAgICAiVFJBTlNJRU5UX0VSUiIsIC8vIEZJWE1FOiBUaGlzIGlz
bid0IGV2ZW4gdXNlZC4KLSAgICAiVElNRU9VVF9FUlIiLCAvLyBUaGlzIGNhbid0IGJlIHRocm93
bi4KLSAgICAiREVBRExPQ0tfRVJSIiwgLy8gVGhpcyBjYW4ndCBiZSB0aHJvd24uCi0gICAgIldy
aXRlIG9wZXJhdGlvbnMgY2Fubm90IGJlIHByZWZvcm1lZCBvbiBhIHJlYWQtb25seSB0cmFuc2Fj
dGlvbi4iLAotICAgICJUaGUgdHJhbnNhY3Rpb24gd2FzIGFib3J0ZWQsIHNvIHRoZSByZXF1ZXN0
IGNhbm5vdCBiZSBmdWxmaWxsZWQuIgotfTsKLSNlbmRpZgotCiB2b2lkIGdldEV4Y2VwdGlvbkNv
ZGVEZXNjcmlwdGlvbihFeGNlcHRpb25Db2RlIGVjLCBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24m
IGRlc2NyaXB0aW9uKQogewogICAgIEFTU0VSVChlYyk7CiAKLSAgICBjb25zdCBjaGFyKiB0eXBl
TmFtZTsKLSAgICBpbnQgY29kZSA9IGVjOwotICAgIGNvbnN0IGNoYXIqIGNvbnN0KiBuYW1lVGFi
bGU7Ci0gICAgY29uc3QgY2hhciogY29uc3QqIGRlc2NyaXB0aW9uVGFibGU7Ci0gICAgaW50IG5h
bWVUYWJsZVNpemU7Ci0gICAgaW50IG5hbWVUYWJsZU9mZnNldDsKLSAgICBFeGNlcHRpb25UeXBl
IHR5cGU7Ci0KLSAgICBpZiAoY29kZSA+PSBSYW5nZUV4Y2VwdGlvbjo6UmFuZ2VFeGNlcHRpb25P
ZmZzZXQgJiYgY29kZSA8PSBSYW5nZUV4Y2VwdGlvbjo6UmFuZ2VFeGNlcHRpb25NYXgpIHsKLSAg
ICAgICAgdHlwZSA9IFJhbmdlRXhjZXB0aW9uVHlwZTsKLSAgICAgICAgdHlwZU5hbWUgPSAiRE9N
IFJhbmdlIjsKLSAgICAgICAgY29kZSAtPSBSYW5nZUV4Y2VwdGlvbjo6UmFuZ2VFeGNlcHRpb25P
ZmZzZXQ7Ci0gICAgICAgIG5hbWVUYWJsZSA9IHJhbmdlRXhjZXB0aW9uTmFtZXM7Ci0gICAgICAg
IGRlc2NyaXB0aW9uVGFibGUgPSByYW5nZUV4Y2VwdGlvbkRlc2NyaXB0aW9uczsKLSAgICAgICAg
bmFtZVRhYmxlU2l6ZSA9IFdURl9BUlJBWV9MRU5HVEgocmFuZ2VFeGNlcHRpb25OYW1lcyk7Ci0g
ICAgICAgIG5hbWVUYWJsZU9mZnNldCA9IFJhbmdlRXhjZXB0aW9uOjpCQURfQk9VTkRBUllQT0lO
VFNfRVJSOwotICAgIH0gZWxzZSBpZiAoY29kZSA+PSBFdmVudEV4Y2VwdGlvbjo6RXZlbnRFeGNl
cHRpb25PZmZzZXQgJiYgY29kZSA8PSBFdmVudEV4Y2VwdGlvbjo6RXZlbnRFeGNlcHRpb25NYXgp
IHsKLSAgICAgICAgdHlwZSA9IEV2ZW50RXhjZXB0aW9uVHlwZTsKLSAgICAgICAgdHlwZU5hbWUg
PSAiRE9NIEV2ZW50cyI7Ci0gICAgICAgIGNvZGUgLT0gRXZlbnRFeGNlcHRpb246OkV2ZW50RXhj
ZXB0aW9uT2Zmc2V0OwotICAgICAgICBuYW1lVGFibGUgPSBldmVudEV4Y2VwdGlvbk5hbWVzOwot
ICAgICAgICBkZXNjcmlwdGlvblRhYmxlID0gZXZlbnRFeGNlcHRpb25EZXNjcmlwdGlvbnM7Ci0g
ICAgICAgIG5hbWVUYWJsZVNpemUgPSBXVEZfQVJSQVlfTEVOR1RIKGV2ZW50RXhjZXB0aW9uTmFt
ZXMpOwotICAgICAgICBuYW1lVGFibGVPZmZzZXQgPSBFdmVudEV4Y2VwdGlvbjo6VU5TUEVDSUZJ
RURfRVZFTlRfVFlQRV9FUlI7Ci0gICAgfSBlbHNlIGlmIChjb2RlID49IFhNTEh0dHBSZXF1ZXN0
RXhjZXB0aW9uOjpYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbk9mZnNldCAmJiBjb2RlIDw9IFhNTEh0
dHBSZXF1ZXN0RXhjZXB0aW9uOjpYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbk1heCkgewotICAgICAg
ICB0eXBlID0gWE1MSHR0cFJlcXVlc3RFeGNlcHRpb25UeXBlOwotICAgICAgICB0eXBlTmFtZSA9
ICJYTUxIdHRwUmVxdWVzdCI7Ci0gICAgICAgIGNvZGUgLT0gWE1MSHR0cFJlcXVlc3RFeGNlcHRp
b246OlhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uT2Zmc2V0OwotICAgICAgICBuYW1lVGFibGUgPSB4
bWxIdHRwUmVxdWVzdEV4Y2VwdGlvbk5hbWVzOwotICAgICAgICBkZXNjcmlwdGlvblRhYmxlID0g
eG1sSHR0cFJlcXVlc3RFeGNlcHRpb25EZXNjcmlwdGlvbnM7Ci0gICAgICAgIG5hbWVUYWJsZVNp
emUgPSBXVEZfQVJSQVlfTEVOR1RIKHhtbEh0dHBSZXF1ZXN0RXhjZXB0aW9uTmFtZXMpOwotICAg
ICAgICAvLyBYTUxIdHRwUmVxdWVzdCBleGNlcHRpb24gY29kZXMgc3RhcnQgd2l0aCAxMDEgYW5k
IHdlIGRvbid0IHdhbnQgMTAwIGVtcHR5IGVsZW1lbnRzIGluIHRoZSBuYW1lIGFycmF5Ci0gICAg
ICAgIG5hbWVUYWJsZU9mZnNldCA9IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uOjpORVRXT1JLX0VS
UjsKLSAgICB9IGVsc2UgaWYgKGNvZGUgPj0gWFBhdGhFeGNlcHRpb246OlhQYXRoRXhjZXB0aW9u
T2Zmc2V0ICYmIGNvZGUgPD0gWFBhdGhFeGNlcHRpb246OlhQYXRoRXhjZXB0aW9uTWF4KSB7Ci0g
ICAgICAgIHR5cGUgPSBYUGF0aEV4Y2VwdGlvblR5cGU7Ci0gICAgICAgIHR5cGVOYW1lID0gIkRP
TSBYUGF0aCI7Ci0gICAgICAgIGNvZGUgLT0gWFBhdGhFeGNlcHRpb246OlhQYXRoRXhjZXB0aW9u
T2Zmc2V0OwotICAgICAgICBuYW1lVGFibGUgPSB4cGF0aEV4Y2VwdGlvbk5hbWVzOwotICAgICAg
ICBkZXNjcmlwdGlvblRhYmxlID0geHBhdGhFeGNlcHRpb25EZXNjcmlwdGlvbnM7Ci0gICAgICAg
IG5hbWVUYWJsZVNpemUgPSBXVEZfQVJSQVlfTEVOR1RIKHhwYXRoRXhjZXB0aW9uTmFtZXMpOwot
ICAgICAgICAvLyBYUGF0aCBleGNlcHRpb24gY29kZXMgc3RhcnQgd2l0aCA1MSBhbmQgd2UgZG9u
J3Qgd2FudCA1MSBlbXB0eSBlbGVtZW50cyBpbiB0aGUgbmFtZSBhcnJheQotICAgICAgICBuYW1l
VGFibGVPZmZzZXQgPSBYUGF0aEV4Y2VwdGlvbjo6SU5WQUxJRF9FWFBSRVNTSU9OX0VSUjsKLSNp
ZiBFTkFCTEUoU1ZHKQotICAgIH0gZWxzZSBpZiAoY29kZSA+PSBTVkdFeGNlcHRpb246OlNWR0V4
Y2VwdGlvbk9mZnNldCAmJiBjb2RlIDw9IFNWR0V4Y2VwdGlvbjo6U1ZHRXhjZXB0aW9uTWF4KSB7
Ci0gICAgICAgIHR5cGUgPSBTVkdFeGNlcHRpb25UeXBlOwotICAgICAgICB0eXBlTmFtZSA9ICJE
T00gU1ZHIjsKLSAgICAgICAgY29kZSAtPSBTVkdFeGNlcHRpb246OlNWR0V4Y2VwdGlvbk9mZnNl
dDsKLSAgICAgICAgbmFtZVRhYmxlID0gc3ZnRXhjZXB0aW9uTmFtZXM7Ci0gICAgICAgIGRlc2Ny
aXB0aW9uVGFibGUgPSBzdmdFeGNlcHRpb25EZXNjcmlwdGlvbnM7Ci0gICAgICAgIG5hbWVUYWJs
ZVNpemUgPSBXVEZfQVJSQVlfTEVOR1RIKHN2Z0V4Y2VwdGlvbk5hbWVzKTsKLSAgICAgICAgbmFt
ZVRhYmxlT2Zmc2V0ID0gU1ZHRXhjZXB0aW9uOjpTVkdfV1JPTkdfVFlQRV9FUlI7Ci0jZW5kaWYK
LSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIH0gZWxzZSBpZiAoY29kZSA+PSBTUUxFeGNl
cHRpb246OlNRTEV4Y2VwdGlvbk9mZnNldCAmJiBjb2RlIDw9IFNRTEV4Y2VwdGlvbjo6U1FMRXhj
ZXB0aW9uTWF4KSB7Ci0gICAgICAgIHR5cGUgPSBTUUxFeGNlcHRpb25UeXBlOwotICAgICAgICB0
eXBlTmFtZSA9ICJET00gU1FMIjsKLSAgICAgICAgY29kZSAtPSBTUUxFeGNlcHRpb246OlNRTEV4
Y2VwdGlvbk9mZnNldDsKLSAgICAgICAgbmFtZVRhYmxlID0gc3FsRXhjZXB0aW9uTmFtZXM7Ci0g
ICAgICAgIGRlc2NyaXB0aW9uVGFibGUgPSBzcWxFeGNlcHRpb25EZXNjcmlwdGlvbnM7Ci0gICAg
ICAgIG5hbWVUYWJsZVNpemUgPSBXVEZfQVJSQVlfTEVOR1RIKHNxbEV4Y2VwdGlvbk5hbWVzKTsK
LSAgICAgICAgbmFtZVRhYmxlT2Zmc2V0ID0gU1FMRXhjZXB0aW9uOjpVTktOT1dOX0VSUjsKLSNl
bmRpZgotI2lmIEVOQUJMRShCTE9CKSB8fCBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgfSBlbHNl
IGlmIChjb2RlID49IEZpbGVFeGNlcHRpb246OkZpbGVFeGNlcHRpb25PZmZzZXQgJiYgY29kZSA8
PSBGaWxlRXhjZXB0aW9uOjpGaWxlRXhjZXB0aW9uTWF4KSB7Ci0gICAgICAgIHR5cGUgPSBGaWxl
RXhjZXB0aW9uVHlwZTsKLSAgICAgICAgdHlwZU5hbWUgPSAiRE9NIEZpbGUiOwotICAgICAgICBj
b2RlIC09IEZpbGVFeGNlcHRpb246OkZpbGVFeGNlcHRpb25PZmZzZXQ7Ci0gICAgICAgIG5hbWVU
YWJsZSA9IGZpbGVFeGNlcHRpb25OYW1lczsKLSAgICAgICAgZGVzY3JpcHRpb25UYWJsZSA9IGZp
bGVFeGNlcHRpb25EZXNjcmlwdGlvbnM7Ci0gICAgICAgIG5hbWVUYWJsZVNpemUgPSBXVEZfQVJS
QVlfTEVOR1RIKGZpbGVFeGNlcHRpb25OYW1lcyk7Ci0gICAgICAgIG5hbWVUYWJsZU9mZnNldCA9
IEZpbGVFeGNlcHRpb246Ok5PVF9GT1VORF9FUlI7Ci0gICAgfSBlbHNlIGlmIChjb2RlID49IE9w
ZXJhdGlvbk5vdEFsbG93ZWRFeGNlcHRpb246Ok9wZXJhdGlvbk5vdEFsbG93ZWRFeGNlcHRpb25P
ZmZzZXQgJiYgY29kZSA8PSBPcGVyYXRpb25Ob3RBbGxvd2VkRXhjZXB0aW9uOjpPcGVyYXRpb25O
b3RBbGxvd2VkRXhjZXB0aW9uTWF4KSB7Ci0gICAgICAgIHR5cGUgPSBPcGVyYXRpb25Ob3RBbGxv
d2VkRXhjZXB0aW9uVHlwZTsKLSAgICAgICAgdHlwZU5hbWUgPSAiRE9NIE9wZXJhdGlvbk5vdEFs
bG93ZWQiOwotICAgICAgICBjb2RlIC09IE9wZXJhdGlvbk5vdEFsbG93ZWRFeGNlcHRpb246Ok9w
ZXJhdGlvbk5vdEFsbG93ZWRFeGNlcHRpb25PZmZzZXQ7Ci0gICAgICAgIG5hbWVUYWJsZSA9IG9w
ZXJhdGlvbk5vdEFsbG93ZWRFeGNlcHRpb25OYW1lczsKLSAgICAgICAgZGVzY3JpcHRpb25UYWJs
ZSA9IG9wZXJhdGlvbk5vdEFsbG93ZWRFeGNlcHRpb25EZXNjcmlwdGlvbnM7Ci0gICAgICAgIG5h
bWVUYWJsZVNpemUgPSBXVEZfQVJSQVlfTEVOR1RIKG9wZXJhdGlvbk5vdEFsbG93ZWRFeGNlcHRp
b25OYW1lcyk7Ci0gICAgICAgIG5hbWVUYWJsZU9mZnNldCA9IE9wZXJhdGlvbk5vdEFsbG93ZWRF
eGNlcHRpb246Ok5PVF9BTExPV0VEX0VSUjsKLSNlbmRpZgotI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQotICAgIH0gZWxzZSBpZiAoY29kZSA+PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURC
RGF0YWJhc2VFeGNlcHRpb25PZmZzZXQgJiYgY29kZSA8PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
SURCRGF0YWJhc2VFeGNlcHRpb25NYXgpIHsKLSAgICAgICAgdHlwZSA9IElEQkRhdGFiYXNlRXhj
ZXB0aW9uVHlwZTsKLSAgICAgICAgdHlwZU5hbWUgPSAiRE9NIElEQkRhdGFiYXNlIjsKLSAgICAg
ICAgY29kZSAtPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCRGF0YWJhc2VFeGNlcHRpb25PZmZz
ZXQ7Ci0gICAgICAgIG5hbWVUYWJsZSA9IGlkYkRhdGFiYXNlRXhjZXB0aW9uTmFtZXM7Ci0gICAg
ICAgIGRlc2NyaXB0aW9uVGFibGUgPSBpZGJEYXRhYmFzZUV4Y2VwdGlvbkRlc2NyaXB0aW9uczsK
LSAgICAgICAgbmFtZVRhYmxlU2l6ZSA9IFdURl9BUlJBWV9MRU5HVEgoaWRiRGF0YWJhc2VFeGNl
cHRpb25OYW1lcyk7Ci0gICAgICAgIG5hbWVUYWJsZU9mZnNldCA9IElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpVTktOT1dOX0VSUjsKLSNlbmRpZgotICAgIH0gZWxzZSB7Ci0gICAgICAgIHR5cGUgPSBE
T01FeGNlcHRpb25UeXBlOwotICAgICAgICB0eXBlTmFtZSA9ICJET00iOwotICAgICAgICBuYW1l
VGFibGUgPSBleGNlcHRpb25OYW1lczsKLSAgICAgICAgZGVzY3JpcHRpb25UYWJsZSA9IGV4Y2Vw
dGlvbkRlc2NyaXB0aW9uczsKLSAgICAgICAgbmFtZVRhYmxlU2l6ZSA9IFdURl9BUlJBWV9MRU5H
VEgoZXhjZXB0aW9uTmFtZXMpOwotICAgICAgICBuYW1lVGFibGVPZmZzZXQgPSBJTkRFWF9TSVpF
X0VSUjsKLSAgICB9Ci0KLSAgICBkZXNjcmlwdGlvbi50eXBlTmFtZSA9IHR5cGVOYW1lOwotICAg
IGRlc2NyaXB0aW9uLm5hbWUgPSAoZWMgPj0gbmFtZVRhYmxlT2Zmc2V0ICYmIGVjIC0gbmFtZVRh
YmxlT2Zmc2V0IDwgbmFtZVRhYmxlU2l6ZSkgPyBuYW1lVGFibGVbZWMgLSBuYW1lVGFibGVPZmZz
ZXRdIDogMDsKLSAgICBkZXNjcmlwdGlvbi5kZXNjcmlwdGlvbiA9IChlYyA+PSBuYW1lVGFibGVP
ZmZzZXQgJiYgZWMgLSBuYW1lVGFibGVPZmZzZXQgPCBuYW1lVGFibGVTaXplKSA/IGRlc2NyaXB0
aW9uVGFibGVbZWMgLSBuYW1lVGFibGVPZmZzZXRdIDogMDsKLSAgICBkZXNjcmlwdGlvbi5jb2Rl
ID0gY29kZTsKLSAgICBkZXNjcmlwdGlvbi50eXBlID0gdHlwZTsKKyAgICBkZXNjcmlwdGlvbiA9
IEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbihlYyk7CiAKICAgICAvLyBBbGwgZXhjZXB0aW9ucyB1
c2VkIGluIHRoZSBET00gY29kZSBzaG91bGQgaGF2ZSBuYW1lcy4KICAgICBBU1NFUlQoZGVzY3Jp
cHRpb24ubmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Db2RlLmgJKHJldmlzaW9u
IDk4NjMyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTksODIgKzE5LDU0IEBACiAjaWZuZGVmIEV4Y2VwdGlvbkNvZGVfaAogI2RlZmlu
ZSBFeGNlcHRpb25Db2RlX2gKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5o
IgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICAvLyBUaGUgRE9NIHN0YW5kYXJkcyB1c2Ug
dW5zaWduZWQgc2hvcnQgZm9yIGV4Y2VwdGlvbiBjb2Rlcy4KLSAgICAvLyBJbiBvdXIgRE9NIGlt
cGxlbWVudGF0aW9uIHdlIHVzZSBpbnQgaW5zdGVhZCwgYW5kIHVzZSBkaWZmZXJlbnQKLSAgICAv
LyBudW1lcmljYWwgcmFuZ2VzIGZvciBkaWZmZXJlbnQgdHlwZXMgb2YgRE9NIGV4Y2VwdGlvbiwg
c28gdGhhdAotICAgIC8vIGFuIGV4Y2VwdGlvbiBvZiBhbnkgdHlwZSBjYW4gYmUgZXhwcmVzc2Vk
IHdpdGggYSBzaW5nbGUgaW50ZWdlci4KLSAgICB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwot
Ci0gICAgZW51bSB7Ci0gICAgICAgIElOREVYX1NJWkVfRVJSID0gMSwKLSAgICAgICAgRE9NU1RS
SU5HX1NJWkVfRVJSID0gMiwKLSAgICAgICAgSElFUkFSQ0hZX1JFUVVFU1RfRVJSID0gMywKLSAg
ICAgICAgV1JPTkdfRE9DVU1FTlRfRVJSID0gNCwKLSAgICAgICAgSU5WQUxJRF9DSEFSQUNURVJf
RVJSID0gNSwKLSAgICAgICAgTk9fREFUQV9BTExPV0VEX0VSUiA9IDYsCi0gICAgICAgIE5PX01P
RElGSUNBVElPTl9BTExPV0VEX0VSUiA9IDcsCi0gICAgICAgIE5PVF9GT1VORF9FUlIgPSA4LAot
ICAgICAgICBOT1RfU1VQUE9SVEVEX0VSUiA9IDksCi0gICAgICAgIElOVVNFX0FUVFJJQlVURV9F
UlIgPSAxMCwKLQotICAgICAgICAvLyBJbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAyOgotICAgICAg
ICBJTlZBTElEX1NUQVRFX0VSUiA9IDExLAotICAgICAgICBTWU5UQVhfRVJSID0gMTIsCi0gICAg
ICAgIElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUiA9IDEzLAotICAgICAgICBOQU1FU1BBQ0VfRVJS
ID0gMTQsCi0gICAgICAgIElOVkFMSURfQUNDRVNTX0VSUiA9IDE1LAotCi0gICAgICAgIC8vIElu
dHJvZHVjZWQgaW4gRE9NIExldmVsIDM6Ci0gICAgICAgIFZBTElEQVRJT05fRVJSID0gMTYsCi0g
ICAgICAgIFRZUEVfTUlTTUFUQ0hfRVJSID0gMTcsCi0KLSAgICAgICAgLy8gWE1MSHR0cFJlcXVl
c3QgZXh0ZW5zaW9uOgotICAgICAgICBTRUNVUklUWV9FUlIgPSAxOCwKLQotICAgICAgICAvLyBP
dGhlcnMgaW50cm9kdWNlZCBpbiBIVE1MNToKLSAgICAgICAgTkVUV09SS19FUlIgPSAxOSwKLSAg
ICAgICAgQUJPUlRfRVJSID0gMjAsCi0gICAgICAgIFVSTF9NSVNNQVRDSF9FUlIgPSAyMSwKLSAg
ICAgICAgUVVPVEFfRVhDRUVERURfRVJSID0gMjIsCi0gICAgICAgIFRJTUVPVVRfRVJSID0gMjMs
Ci0gICAgICAgIElOVkFMSURfTk9ERV9UWVBFX0VSUiA9IDI0LAotICAgICAgICBEQVRBX0NMT05F
X0VSUiA9IDI1Ci0gICAgfTsKLQotICAgIGVudW0gRXhjZXB0aW9uVHlwZSB7Ci0gICAgICAgIERP
TUV4Y2VwdGlvblR5cGUsCi0gICAgICAgIFJhbmdlRXhjZXB0aW9uVHlwZSwKLSAgICAgICAgRXZl
bnRFeGNlcHRpb25UeXBlLAotICAgICAgICBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvblR5cGUsCi0g
ICAgICAgIFhQYXRoRXhjZXB0aW9uVHlwZQotI2lmIEVOQUJMRShTVkcpCi0gICAgICAgICwgU1ZH
RXhjZXB0aW9uVHlwZQotI2VuZGlmCi0jaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICAgICAg
LCBTUUxFeGNlcHRpb25UeXBlCi0jZW5kaWYKLSNpZiBFTkFCTEUoQkxPQikgfHwgRU5BQkxFKEZJ
TEVfU1lTVEVNKQotICAgICAgICAsIEZpbGVFeGNlcHRpb25UeXBlCi0jZW5kaWYKLSNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICAgICAgLCBJREJEYXRhYmFzZUV4Y2VwdGlvblR5cGUK
LSNlbmRpZgotI2lmIEVOQUJMRShCTE9CKSB8fCBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgICAg
ICwgT3BlcmF0aW9uTm90QWxsb3dlZEV4Y2VwdGlvblR5cGUKLSNlbmRpZgotICAgIH07Ci0KLQot
ICAgIHN0cnVjdCBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gewotICAgICAgICBjb25zdCBjaGFy
KiB0eXBlTmFtZTsgLy8gaGFzIHNwYWNlcyBhbmQgaXMgc3VpdGFibGUgZm9yIHVzZSBpbiBleGNl
cHRpb24gZGVzY3JpcHRpb24gc3RyaW5nczsgbWF4aW11bSBsZW5ndGggaXMgMTAgY2hhcmFjdGVy
cwotICAgICAgICBjb25zdCBjaGFyKiBuYW1lOyAvLyBleGNlcHRpb24gbmFtZSwgYWxzbyBpbnRl
bmRlZCBmb3IgdXNlIGluIGV4Y2VwdGlvbiBkZXNjcmlwdGlvbiBzdHJpbmdzOyAwIGlmIG5hbWUg
bm90IGtub3duOyBtYXhpbXVtIGxlbmd0aCBpcyAyNyBjaGFyYWN0ZXJzCi0gICAgICAgIGNvbnN0
IGNoYXIqIGRlc2NyaXB0aW9uOyAvLyBleGNlcHRpb24gZGVzY3JpcHRpb24sIGludGVuZGVkIGZv
ciB1c2UgaW4gZXhjZXB0aW9uIHN0cmluZ3M7IG1vcmUgcmVhZGFibGUgZXhwbGFuYXRpb24gb2Yg
ZXJyb3IKLSAgICAgICAgaW50IGNvZGU7IC8vIG51bWVyaWMgdmFsdWUgb2YgdGhlIGV4Y2VwdGlv
biB3aXRoaW4gYSBwYXJ0aWN1bGFyIHR5cGUKLSAgICAgICAgRXhjZXB0aW9uVHlwZSB0eXBlOwot
ICAgIH07Ci0gICAgdm9pZCBnZXRFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24oRXhjZXB0aW9uQ29k
ZSwgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uJik7CisvLyBUaGUgRE9NIHN0YW5kYXJkcyB1c2Ug
dW5zaWduZWQgc2hvcnQgZm9yIGV4Y2VwdGlvbiBjb2Rlcy4KKy8vIEluIG91ciBET00gaW1wbGVt
ZW50YXRpb24gd2UgdXNlIGludCBpbnN0ZWFkLCBhbmQgdXNlIGRpZmZlcmVudAorLy8gbnVtZXJp
Y2FsIHJhbmdlcyBmb3IgZGlmZmVyZW50IHR5cGVzIG9mIERPTSBleGNlcHRpb24sIHNvIHRoYXQK
Ky8vIGFuIGV4Y2VwdGlvbiBvZiBhbnkgdHlwZSBjYW4gYmUgZXhwcmVzc2VkIHdpdGggYSBzaW5n
bGUgaW50ZWdlci4KK3R5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CisKK2VudW0geworICAgIElO
REVYX1NJWkVfRVJSID0gMSwKKyAgICBET01TVFJJTkdfU0laRV9FUlIgPSAyLAorICAgIEhJRVJB
UkNIWV9SRVFVRVNUX0VSUiA9IDMsCisgICAgV1JPTkdfRE9DVU1FTlRfRVJSID0gNCwKKyAgICBJ
TlZBTElEX0NIQVJBQ1RFUl9FUlIgPSA1LAorICAgIE5PX0RBVEFfQUxMT1dFRF9FUlIgPSA2LAor
ICAgIE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiA9IDcsCisgICAgTk9UX0ZPVU5EX0VSUiA9
IDgsCisgICAgTk9UX1NVUFBPUlRFRF9FUlIgPSA5LAorICAgIElOVVNFX0FUVFJJQlVURV9FUlIg
PSAxMCwKKworICAgIC8vIEludHJvZHVjZWQgaW4gRE9NIExldmVsIDI6CisgICAgSU5WQUxJRF9T
VEFURV9FUlIgPSAxMSwKKyAgICBTWU5UQVhfRVJSID0gMTIsCisgICAgSU5WQUxJRF9NT0RJRklD
QVRJT05fRVJSID0gMTMsCisgICAgTkFNRVNQQUNFX0VSUiA9IDE0LAorICAgIElOVkFMSURfQUND
RVNTX0VSUiA9IDE1LAorCisgICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMzoKKyAgICBW
QUxJREFUSU9OX0VSUiA9IDE2LAorICAgIFRZUEVfTUlTTUFUQ0hfRVJSID0gMTcsCisKKyAgICAv
LyBYTUxIdHRwUmVxdWVzdCBleHRlbnNpb246CisgICAgU0VDVVJJVFlfRVJSID0gMTgsCisKKyAg
ICAvLyBPdGhlcnMgaW50cm9kdWNlZCBpbiBIVE1MNToKKyAgICBORVRXT1JLX0VSUiA9IDE5LAor
ICAgIEFCT1JUX0VSUiA9IDIwLAorICAgIFVSTF9NSVNNQVRDSF9FUlIgPSAyMSwKKyAgICBRVU9U
QV9FWENFRURFRF9FUlIgPSAyMiwKKyAgICBUSU1FT1VUX0VSUiA9IDIzLAorICAgIElOVkFMSURf
Tk9ERV9UWVBFX0VSUiA9IDI0LAorICAgIERBVEFfQ0xPTkVfRVJSID0gMjUKK307CisKKy8vIEZJ
WE1FOiBDYWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGp1c3QgdXNlIHRoZSBFeGNlcHRp
b25Db2RlRGVzY3JpcHRpb24gY29uc3RydWN0b3IgZGlyZWN0bHkuCit2b2lkIGdldEV4Y2VwdGlv
bkNvZGVEZXNjcmlwdGlvbihFeGNlcHRpb25Db2RlLCBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24m
KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9FeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaW4JKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmluCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDEyIEBACituYW1lc3BhY2U9RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uCisKK0RPTUNv
cmVFeGNlcHRpb24KK0V2ZW50RXhjZXB0aW9uCitGaWxlRXhjZXB0aW9uIGNvbmRpdGlvbmFsPUJM
T0IKK0lEQkRhdGFiYXNlRXhjZXB0aW9uIGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKK09w
ZXJhdGlvbk5vdEFsbG93ZWRFeGNlcHRpb24KK1JhbmdlRXhjZXB0aW9uCitTUUxFeGNlcHRpb24g
Y29uZGl0aW9uYWw9U1FMX0RBVEFCQVNFCitTVkdFeGNlcHRpb24gY29uZGl0aW9uYWw9U1ZHCitY
TUxIdHRwUmVxdWVzdEV4Y2VwdGlvbgorWFBhdGhFeGNlcHRpb24KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9SYW5nZUV4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL1JhbmdlRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9SYW5nZUV4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVy
LCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJhbmdlRXhjZXB0aW9uLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGV4Y2VwdGlvbk5hbWVzW10g
PSB7CisgICAgIkJBRF9CT1VOREFSWVBPSU5UU19FUlIiLAorICAgICJJTlZBTElEX05PREVfVFlQ
RV9FUlIiCit9OworCitzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZXhjZXB0aW9uRGVzY3JpcHRp
b25zW10gPSB7CisgICAgIlRoZSBib3VuZGFyeS1wb2ludHMgb2YgYSBSYW5nZSBkaWQgbm90IG1l
ZXQgc3BlY2lmaWMgcmVxdWlyZW1lbnRzLiIsCisgICAgIlRoZSBjb250YWluZXIgb2YgYW4gYm91
bmRhcnktcG9pbnQgb2YgYSBSYW5nZSB3YXMgYmVpbmcgc2V0IHRvIGVpdGhlciBhIG5vZGUgb2Yg
YW4gaW52YWxpZCB0eXBlIG9yIGEgbm9kZSB3aXRoIGFuIGFuY2VzdG9yIG9mIGFuIGludmFsaWQg
dHlwZS4iCit9OworCitDT01QSUxFX0FTU0VSVChXVEZfQVJSQVlfTEVOR1RIKGV4Y2VwdGlvbk5h
bWVzKSA9PSBXVEZfQVJSQVlfTEVOR1RIKGV4Y2VwdGlvbkRlc2NyaXB0aW9ucyksIFJhbmdlRXhj
ZXB0aW9uVGFibGVzTXVzdE1hdGNoKTsKKworYm9vbCBSYW5nZUV4Y2VwdGlvbjo6aW5pdGlhbGl6
ZURlc2NyaXB0aW9uKEV4Y2VwdGlvbkNvZGUgZWMsIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiog
ZGVzY3JpcHRpb24pCit7CisgICAgaWYgKGVjIDwgUmFuZ2VFeGNlcHRpb25PZmZzZXQgfHwgZWMg
PiBSYW5nZUV4Y2VwdGlvbk1heCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZGVzY3Jp
cHRpb24tPnR5cGVOYW1lID0gIkRPTSBSYW5nZSI7CisgICAgZGVzY3JpcHRpb24tPmNvZGUgPSBl
YyAtIFJhbmdlRXhjZXB0aW9uT2Zmc2V0OworICAgIGRlc2NyaXB0aW9uLT50eXBlID0gUmFuZ2VF
eGNlcHRpb25UeXBlOworCisgICAgc2l6ZV90IHRhYmxlU2l6ZSA9IFdURl9BUlJBWV9MRU5HVEgo
ZXhjZXB0aW9uTmFtZXMpOworICAgIHNpemVfdCB0YWJsZUluZGV4ID0gZWMgLSBCQURfQk9VTkRB
UllQT0lOVFNfRVJSOworCisgICAgZGVzY3JpcHRpb24tPm5hbWUgPSB0YWJsZUluZGV4IDwgdGFi
bGVTaXplID8gZXhjZXB0aW9uTmFtZXNbdGFibGVJbmRleF0gOiAwOworICAgIGRlc2NyaXB0aW9u
LT5kZXNjcmlwdGlvbiA9IHRhYmxlSW5kZXggPCB0YWJsZVNpemUgPyBleGNlcHRpb25EZXNjcmlw
dGlvbnNbdGFibGVJbmRleF0gOiAwOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZUV4Y2VwdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZUV4Y2VwdGlvbi5oCShyZXZp
c2lvbiA5ODYzMikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZUV4Y2VwdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSwyOCArMjksMzAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0g
ICAgY2xhc3MgUmFuZ2VFeGNlcHRpb24gOiBwdWJsaWMgRXhjZXB0aW9uQmFzZSB7Ci0gICAgcHVi
bGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSYW5nZUV4Y2VwdGlvbj4gY3JlYXRlKGNv
bnN0IEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmFuZ2VFeGNlcHRpb24oZGVzY3JpcHRpb24p
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQgUmFuZ2VFeGNlcHRpb25P
ZmZzZXQgPSAyMDA7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQgUmFuZ2VFeGNlcHRpb25NYXgg
PSAyOTk7Ci0KLSAgICAgICAgZW51bSBSYW5nZUV4Y2VwdGlvbkNvZGUgewotICAgICAgICAgICAg
QkFEX0JPVU5EQVJZUE9JTlRTX0VSUiA9IFJhbmdlRXhjZXB0aW9uT2Zmc2V0ICsgMSwKLSAgICAg
ICAgICAgIElOVkFMSURfTk9ERV9UWVBFX0VSUgotICAgICAgICB9OwotCi0gICAgcHJpdmF0ZToK
LSAgICAgICAgUmFuZ2VFeGNlcHRpb24oY29uc3QgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uJiBk
ZXNjcmlwdGlvbikKLSAgICAgICAgICAgIDogRXhjZXB0aW9uQmFzZShkZXNjcmlwdGlvbikKLSAg
ICAgICAgewotICAgICAgICB9CitjbGFzcyBSYW5nZUV4Y2VwdGlvbiA6IHB1YmxpYyBFeGNlcHRp
b25CYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSYW5nZUV4Y2VwdGlvbj4g
Y3JlYXRlKGNvbnN0IEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJhbmdlRXhjZXB0aW9uKGRlc2NyaXB0aW9u
KSk7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGludCBSYW5nZUV4Y2VwdGlvbk9mZnNldCA9
IDIwMDsKKyAgICBzdGF0aWMgY29uc3QgaW50IFJhbmdlRXhjZXB0aW9uTWF4ID0gMjk5OworCisg
ICAgZW51bSBSYW5nZUV4Y2VwdGlvbkNvZGUgeworICAgICAgICBCQURfQk9VTkRBUllQT0lOVFNf
RVJSID0gUmFuZ2VFeGNlcHRpb25PZmZzZXQgKyAxLAorICAgICAgICBJTlZBTElEX05PREVfVFlQ
RV9FUlIKICAgICB9OwogCisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZURlc2NyaXB0aW9uKEV4
Y2VwdGlvbkNvZGUsIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiopOworCitwcml2YXRlOgorICAg
IFJhbmdlRXhjZXB0aW9uKGNvbnN0IEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiYgZGVzY3JpcHRp
b24pCisgICAgICAgIDogRXhjZXB0aW9uQmFzZShkZXNjcmlwdGlvbikKKyAgICB7CisgICAgfQor
fTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gUmFuZ2VFeGNlcHRpb25f
aApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL21ha2VfZXhjZXB0aW9uX2NvZGVfZGVzY3JpcHRp
b24ucGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL21ha2VfZXhjZXB0aW9uX2Nv
ZGVfZGVzY3JpcHRpb24ucGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vbWFr
ZV9leGNlcHRpb25fY29kZV9kZXNjcmlwdGlvbi5wbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
OTIgQEAKKyMhL3Vzci9iaW4vcGVybCAtdworCisjIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAo
QykgMjAwOSwgSnVsaWVuIENoYWZmcmFpeCA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorIyBDb3B5
cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0
dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKKyMgQ29weXJpZ2h0IChDKSAyMDExIEVyaWNzc29u
IEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlLCBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorIyAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorIyAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorIyAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAorIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisjIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3Vz
ZSBzdHJpY3Q7CisKK3VzZSBDb25maWc7Cit1c2UgR2V0b3B0OjpMb25nOwordXNlIEZpbGU6OlBh
dGg7Cit1c2UgRmlsZTo6U3BlYzsKK3VzZSBJTzo6RmlsZTsKK3VzZSBJbkZpbGVzQ29tcGlsZXI7
CisKK3JlcXVpcmUgQ29uZmlnOworCitteSAkaW5wdXRGaWxlOworbXkgJG91dHB1dERpciA9ICIu
IjsKKworR2V0T3B0aW9ucygKKyAgICAnaW5wdXQ9cycgPT4gXCRpbnB1dEZpbGUsCisgICAgJ291
dHB1dERpcj1zJyA9PiBcJG91dHB1dERpciwKKyk7CisKK21rcGF0aCgkb3V0cHV0RGlyKTsKKwor
ZGllICJZb3UgbXVzdCBzcGVjaWZ5IC0taW5wdXQgPGZpbGU+IiB1bmxlc3MgbGVuZ3RoKCRpbnB1
dEZpbGUpOworCitteSAlZGVmYXVsdFBhcmFtZXRlcnMgPSAoCisgICAgJ25hbWVzcGFjZScgPT4g
MAorKTsKKworbXkgJEluQ29tcGlsZXIgPSBJbkZpbGVzQ29tcGlsZXItPm5ldyhcJWRlZmF1bHRQ
YXJhbWV0ZXJzLCBcJmRlZmF1bHRJdGVtRmFjdG9yeSk7CisKKyRJbkNvbXBpbGVyLT5jb21waWxl
KCRpbnB1dEZpbGUsIFwmZ2VuZXJhdGVDb2RlKTsKKworc3ViIGRlZmF1bHRJdGVtRmFjdG9yeQor
eworICAgIHJldHVybiAoCisgICAgICAgICdjb25kaXRpb25hbCcgPT4gMAorICAgICk7Cit9CisK
K3N1YiBnZW5lcmF0ZUNvZGUoKQoreworICAgIG15ICRwYXJzZWRQYXJhbWV0ZXJzID0gc2hpZnQ7
CisgICAgbXkgJHBhcnNlZEl0ZW1zID0gc2hpZnQ7CisKKyAgICBnZW5lcmF0ZUhlYWRlcigkcGFy
c2VkUGFyYW1ldGVycywgJHBhcnNlZEl0ZW1zKTsKKyAgICBnZW5lcmF0ZUltcGxlbWVudGF0aW9u
KCRwYXJzZWRQYXJhbWV0ZXJzLCAkcGFyc2VkSXRlbXMpOworfQorCitzdWIgZ2VuZXJhdGVIZWFk
ZXIoKQoreworICAgIG15ICRwYXJzZWRQYXJhbWV0ZXJzUmVmID0gc2hpZnQ7CisgICAgbXkgJHBh
cnNlZEl0ZW1zUmVmID0gc2hpZnQ7CisKKyAgICBteSAkRjsKKyAgICBteSAlcGFyc2VkSXRlbXMg
PSAleyAkcGFyc2VkSXRlbXNSZWYgfTsKKworICAgIG15ICRvdXRwdXRGaWxlID0gIiRvdXRwdXRE
aXIvRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmgiOworCisgICAgb3BlbiBGLCAiPiRvdXRwdXRG
aWxlIjsKKworICAgIHByaW50IEYgJEluQ29tcGlsZXItPmxpY2Vuc2UoKTsKKworICAgIHByaW50
IEYgIiNpZm5kZWYgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uX2hcbiI7CisgICAgcHJpbnQgRiAi
I2RlZmluZSBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb25faFxuIjsKKyAgICBwcmludCBGICJcbiI7
CisgICAgcHJpbnQgRiAibmFtZXNwYWNlIFdlYkNvcmUge1xuIjsKKyAgICBwcmludCBGICJcbiI7
CisgICAgcHJpbnQgRiAidHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTtcbiI7CisgICAgcHJpbnQg
RiAiXG4iOworICAgIHByaW50IEYgImVudW0gRXhjZXB0aW9uVHlwZSB7XG4iOworCisgICAgZm9y
IG15ICRleGNlcHRpb25UeXBlIChzb3J0IGtleXMgJXBhcnNlZEl0ZW1zKSB7CisgICAgICAgIG15
ICRjb25kaXRpb25hbCA9ICRwYXJzZWRJdGVtc3skZXhjZXB0aW9uVHlwZX17ImNvbmRpdGlvbmFs
In07CisKKyAgICAgICAgcHJpbnQgRiAiI2lmIEVOQUJMRSgkY29uZGl0aW9uYWwpXG4iIGlmICRj
b25kaXRpb25hbDsKKyAgICAgICAgcHJpbnQgRiAiICAgICR7ZXhjZXB0aW9uVHlwZX1UeXBlLFxu
IjsKKyAgICAgICAgcHJpbnQgRiAiI2VuZGlmXG4iIGlmICRjb25kaXRpb25hbDsKKyAgICB9CisK
KyAgICBwcmludCBGICJ9O1xuIjsKKyAgICBwcmludCBGICJcbiI7CisgICAgcHJpbnQgRiAic3Ry
dWN0IEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiB7XG4iOworICAgIHByaW50IEYgIiAgICBFeGNl
cHRpb25Db2RlRGVzY3JpcHRpb24oKSB7IH1cbiI7CisgICAgcHJpbnQgRiAiICAgIGV4cGxpY2l0
IEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbihFeGNlcHRpb25Db2RlKTtcbiI7CisgICAgcHJpbnQg
RiAiXG4iOworICAgIHByaW50IEYgIiAgICAvLyB8dHlwZU5hbWV8IGhhcyBzcGFjZXMgYW5kIGlz
IHN1aXRhYmxlIGZvciB1c2UgaW4gZXhjZXB0aW9uXG4iOworICAgIHByaW50IEYgIiAgICAvLyBk
ZXNjcmlwdGlvbiBzdHJpbmdzOyBtYXhpbXVtIGxlbmd0aCBpcyAxMCBjaGFyYWN0ZXJzLlxuIjsK
KyAgICBwcmludCBGICIgICAgY29uc3QgY2hhciogdHlwZU5hbWU7IFxuIjsKKyAgICBwcmludCBG
ICJcbiI7CisgICAgcHJpbnQgRiAiICAgIC8vIHxuYW1lfCBpcyB0aGUgZXhjZXB0aW9uIG5hbWUs
IGFsc28gaW50ZW5kZWQgZm9yIHVzZSBpbiBleGNlcHRpb25cbiI7CisgICAgcHJpbnQgRiAiICAg
IC8vIGRlc2NyaXB0aW9uIHN0cmluZ3M7IDAgaWYgbmFtZSBub3Qga25vd247IG1heGltdW0gbGVu
Z3RoIGlzIDI3XG4iOworICAgIHByaW50IEYgIiAgICAvLyBjaGFyYWN0ZXJzLlxuIjsKKyAgICBw
cmludCBGICIgICAgY29uc3QgY2hhciogbmFtZTsgXG4iOworICAgIHByaW50IEYgIlxuIjsKKyAg
ICBwcmludCBGICIgICAgLy8gfGRlc2NyaXB0aW9ufCBpcyB0aGUgZXhjZXB0aW9uIGRlc2NyaXB0
aW9uLCBpbnRlbmRlZCBmb3IgdXNlIGluXG4iOworICAgIHByaW50IEYgIiAgICAvLyBleGNlcHRp
b24gc3RyaW5ncy4gSXQgaXMgYSBtb3JlIHJlYWRhYmxlIGV4cGxhbmF0aW9uIG9mIGVycm9yLlxu
IjsKKyAgICBwcmludCBGICIgICAgY29uc3QgY2hhciogZGVzY3JpcHRpb247XG4iOworICAgIHBy
aW50IEYgIlxuIjsKKyAgICBwcmludCBGICIgICAgLy8gfGNvZGV8IGlzIHRoZSBudW1lcmljIHZh
bHVlIG9mIHRoZSBleGNlcHRpb24gd2l0aGluIGEgcGFydGljdWxhciB0eXBlLlxuIjsKKyAgICBw
cmludCBGICIgICAgaW50IGNvZGU7IFxuIjsKKyAgICBwcmludCBGICJcbiI7CisgICAgcHJpbnQg
RiAiICAgIEV4Y2VwdGlvblR5cGUgdHlwZTtcbiI7CisgICAgcHJpbnQgRiAifTtcbiI7CisgICAg
cHJpbnQgRiAiXG4iOworICAgIHByaW50IEYgIn0gLy8gbmFtZXNwYWNlIFdlYkNvcmVcbiI7Cisg
ICAgcHJpbnQgRiAiXG4iOworICAgIHByaW50IEYgIiNlbmRpZiAvLyBFeGNlcHRpb25Db2RlRGVz
Y3JpcHRpb25faFxuIjsKKworICAgIGNsb3NlIEY7Cit9CisKK3N1YiBnZW5lcmF0ZUltcGxlbWVu
dGF0aW9uKCkKK3sKKyAgICBteSAkcGFyc2VkUGFyYW1ldGVyc1JlZiA9IHNoaWZ0OworICAgIG15
ICRwYXJzZWRJdGVtc1JlZiA9IHNoaWZ0OworCisgICAgbXkgJEY7CisgICAgbXkgJXBhcnNlZEl0
ZW1zID0gJXsgJHBhcnNlZEl0ZW1zUmVmIH07CisKKyAgICBteSAkb3V0cHV0RmlsZSA9ICIkb3V0
cHV0RGlyL0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5jcHAiOworCisgICAgb3BlbiBGLCAiPiRv
dXRwdXRGaWxlIjsKKworICAgIHByaW50IEYgJEluQ29tcGlsZXItPmxpY2Vuc2UoKTsKKworICAg
IHByaW50IEYgIiNpbmNsdWRlIFwiY29uZmlnLmhcIlxuIjsKKyAgICBwcmludCBGICIjaW5jbHVk
ZSBcIkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5oXCJcbiI7CisgICAgcHJpbnQgRiAiXG4iOwor
ICAgIHByaW50IEYgIiNpbmNsdWRlIFwiRXhjZXB0aW9uQ29kZS5oXCJcbiI7CisKKyAgICBmb3Ig
bXkgJGV4Y2VwdGlvblR5cGUgKHNvcnQga2V5cyAlcGFyc2VkSXRlbXMpIHsKKyAgICAgICAgbXkg
JGNvbmRpdGlvbmFsID0gJHBhcnNlZEl0ZW1zeyRleGNlcHRpb25UeXBlfXsiY29uZGl0aW9uYWwi
fTsKKworICAgICAgICBwcmludCBGICIjaWYgRU5BQkxFKCRjb25kaXRpb25hbClcbiIgaWYgJGNv
bmRpdGlvbmFsOworICAgICAgICBwcmludCBGICIjaW5jbHVkZSBcIiRleGNlcHRpb25UeXBlLmhc
IlxuIjsKKyAgICAgICAgcHJpbnQgRiAiI2VuZGlmXG4iIGlmICRjb25kaXRpb25hbDsKKyAgICB9
CisKKyAgICBwcmludCBGICJcbiI7CisgICAgcHJpbnQgRiAibmFtZXNwYWNlIFdlYkNvcmUge1xu
IjsKKyAgICBwcmludCBGICJcbiI7CisgICAgcHJpbnQgRiAiRXhjZXB0aW9uQ29kZURlc2NyaXB0
aW9uOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24oRXhjZXB0aW9uQ29kZSBlYylcbiI7CisgICAg
cHJpbnQgRiAie1xuIjsKKworICAgIGZvciBteSAkZXhjZXB0aW9uVHlwZSAoc29ydCBrZXlzICVw
YXJzZWRJdGVtcykgeworICAgICAgICBteSAkY29uZGl0aW9uYWwgPSAkcGFyc2VkSXRlbXN7JGV4
Y2VwdGlvblR5cGV9eyJjb25kaXRpb25hbCJ9OworCisgICAgICAgIHByaW50IEYgIiNpZiBFTkFC
TEUoJGNvbmRpdGlvbmFsKVxuIiBpZiAkY29uZGl0aW9uYWw7CisgICAgICAgIHByaW50IEYgIiAg
ICBpZiAoJHtleGNlcHRpb25UeXBlfTo6aW5pdGlhbGl6ZURlc2NyaXB0aW9uKGVjLCB0aGlzKSlc
biI7CisgICAgICAgIHByaW50IEYgIiAgICAgICAgcmV0dXJuO1xuIjsKKyAgICAgICAgcHJpbnQg
RiAiI2VuZGlmXG4iIGlmICRjb25kaXRpb25hbDsKKyAgICB9CisKKyAgICBwcmludCBGICIgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7XG4iOworICAgIHByaW50IEYgIn1cbiI7CisgICAgcHJpbnQg
RiAiXG4iOworICAgIHByaW50IEYgIn0gLy8gbmFtZXNwYWNlIFdlYkNvcmVcbiI7CisKKyAgICBj
bG9zZSBGOworfQorCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVFeGNlcHRpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUV4Y2VwdGlvbi5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVFeGNlcHRpb24u
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikg
bm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIEVOQUJMRShCTE9CKSB8fCBFTkFCTEUoRklMRV9TWVNURU0pCisKKyNpbmNsdWRlICJG
aWxlRXhjZXB0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0IGNo
YXIqIGNvbnN0IGV4Y2VwdGlvbk5hbWVzW10gPSB7CisgICAgIk5PVF9GT1VORF9FUlIiLAorICAg
ICJTRUNVUklUWV9FUlIiLAorICAgICJBQk9SVF9FUlIiLAorICAgICJOT1RfUkVBREFCTEVfRVJS
IiwKKyAgICAiRU5DT0RJTkdfRVJSIiwKKyAgICAiTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJS
IiwKKyAgICAiSU5WQUxJRF9TVEFURV9FUlIiLAorICAgICJTWU5UQVhfRVJSIiwKKyAgICAiSU5W
QUxJRF9NT0RJRklDQVRJT05fRVJSIiwKKyAgICAiUVVPVEFfRVhDRUVERURfRVJSIiwKKyAgICAi
VFlQRV9NSVNNQVRDSF9FUlIiLAorICAgICJQQVRIX0VYSVNUU19FUlIiCit9OworCitzdGF0aWMg
Y29uc3QgY2hhciogY29uc3QgZXhjZXB0aW9uRGVzY3JpcHRpb25zW10gPSB7CisgICAgIkEgcmVx
dWVzdGVkIGZpbGUgb3IgZGlyZWN0b3J5IGNvdWxkIG5vdCBiZSBmb3VuZCBhdCB0aGUgdGltZSBh
biBvcGVyYXRpb24gd2FzIHByb2Nlc3NlZC4iLAorICAgICJJdCB3YXMgZGV0ZXJtaW5lZCB0aGF0
IGNlcnRhaW4gZmlsZXMgYXJlIHVuc2FmZSBmb3IgYWNjZXNzIHdpdGhpbiBhIFdlYiBhcHBsaWNh
dGlvbiwgb3IgdGhhdCB0b28gbWFueSBjYWxscyBhcmUgYmVpbmcgbWFkZSBvbiBmaWxlIHJlc291
cmNlcy4iLAorICAgICJBbiBvbmdvaW5nIG9wZXJhdGlvbiB3YXMgYWJvcnRlZCwgdHlwaWNhbGx5
IHdpdGggYSBjYWxsIHRvIGFib3J0KCkuIiwKKyAgICAiVGhlIHJlcXVlc3RlZCBmaWxlIGNvdWxk
IG5vdCBiZSByZWFkLCB0eXBpY2FsbHkgZHVlIHRvIHBlcm1pc3Npb24gcHJvYmxlbXMgdGhhdCBo
YXZlIG9jY3VyZWQgYWZ0ZXIgYSByZWZlcmVuY2UgdG8gYSBmaWxlIHdhcyBhY3F1aXJlZC4iLAor
ICAgICJBIFVSSSBzdXBwbGllZCB0byB0aGUgQVBJIHdhcyBtYWxmb3JtZWQsIG9yIHRoZSByZXN1
bHRpbmcgRGF0YSBVUkwgaGFzIGV4Y2VlZGVkIHRoZSBVUkwgbGVuZ3RoIGxpbWl0YXRpb25zIGZv
ciBEYXRhIFVSTHMuIiwKKyAgICAiQW4gYXR0ZW1wdCB3YXMgbWFkZSB0byB3cml0ZSB0byBhIGZp
bGUgb3IgZGlyZWN0b3J5IHdoaWNoIGNvdWxkIG5vdCBiZSBtb2RpZmllZCBkdWUgdG8gdGhlIHN0
YXRlIG9mIHRoZSB1bmRlcmx5aW5nIGZpbGVzeXN0ZW0uIiwKKyAgICAiQW4gb3BlcmF0aW9uIHRo
YXQgZGVwZW5kcyBvbiBzdGF0ZSBjYWNoZWQgaW4gYW4gaW50ZXJmYWNlIG9iamVjdCB3YXMgbWFk
ZSBidXQgdGhlIHN0YXRlIGhhZCBjaGFuZ2VkIHNpbmNlIGl0IHdhcyByZWFkIGZyb20gZGlzay4i
LAorICAgICJBbiBpbnZhbGlkIG9yIHVuc3VwcG9ydGVkIGFyZ3VtZW50IHdhcyBnaXZlbiwgbGlr
ZSBhbiBpbnZhbGlkIGxpbmUgZW5kaW5nIHNwZWNpZmllci4iLAorICAgICJUaGUgbW9kaWZpY2F0
aW9uIHJlcXVlc3Qgd2FzIGlsbGVnYWwuIiwKKyAgICAiVGhlIG9wZXJhdGlvbiBmYWlsZWQgYmVj
YXVzZSBpdCB3b3VsZCBjYXVzZSB0aGUgYXBwbGljYXRpb24gdG8gZXhjZWVkIGl0cyBzdG9yYWdl
IHF1b3RhLiIsCisgICAgIlRoZSBwYXRoIHN1cHBsaWVkIGV4aXN0cywgYnV0IHdhcyBub3QgYW4g
ZW50cnkgb2YgcmVxdWVzdGVkIHR5cGUuIiwKKyAgICAiQW4gYXR0ZW1wdCB3YXMgbWFkZSB0byBj
cmVhdGUgYSBmaWxlIG9yIGRpcmVjdG9yeSB3aGVyZSBhbiBlbGVtZW50IGFscmVhZHkgZXhpc3Rz
LiIKK307CisKK0NPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgoZXhjZXB0aW9uTmFtZXMp
ID09IFdURl9BUlJBWV9MRU5HVEgoZXhjZXB0aW9uRGVzY3JpcHRpb25zKSwgRmlsZUV4Y2VwdGlv
blRhYmxlc011c3RNYXRjaCk7CisKK2Jvb2wgRmlsZUV4Y2VwdGlvbjo6aW5pdGlhbGl6ZURlc2Ny
aXB0aW9uKEV4Y2VwdGlvbkNvZGUgZWMsIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiogZGVzY3Jp
cHRpb24pCit7CisgICAgaWYgKGVjIDwgRmlsZUV4Y2VwdGlvbk9mZnNldCB8fCBlYyA+IEZpbGVF
eGNlcHRpb25NYXgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGRlc2NyaXB0aW9uLT50
eXBlTmFtZSA9ICJET00gRmlsZSI7CisgICAgZGVzY3JpcHRpb24tPmNvZGUgPSBlYyAtIEZpbGVF
eGNlcHRpb25PZmZzZXQ7CisgICAgZGVzY3JpcHRpb24tPnR5cGUgPSBGaWxlRXhjZXB0aW9uVHlw
ZTsKKworICAgIHNpemVfdCB0YWJsZVNpemUgPSBXVEZfQVJSQVlfTEVOR1RIKGV4Y2VwdGlvbk5h
bWVzKTsKKyAgICBzaXplX3QgdGFibGVJbmRleCA9IGVjIC0gTk9UX0ZPVU5EX0VSUjsKKworICAg
IGRlc2NyaXB0aW9uLT5uYW1lID0gdGFibGVJbmRleCA8IHRhYmxlU2l6ZSA/IGV4Y2VwdGlvbk5h
bWVzW3RhYmxlSW5kZXhdIDogMDsKKyAgICBkZXNjcmlwdGlvbi0+ZGVzY3JpcHRpb24gPSB0YWJs
ZUluZGV4IDwgdGFibGVTaXplID8gZXhjZXB0aW9uRGVzY3JpcHRpb25zW3RhYmxlSW5kZXhdIDog
MDsKKworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoQkxPQikgfHwgRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlRXhjZXB0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlRXhjZXB0aW9uLmgJKHJldmlzaW9uIDk4NjMyKQorKysgU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlRXhjZXB0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYg
KzY5LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZXJyb3JDb2RlICsgRmlsZUV4Y2VwdGlv
bk9mZnNldDsKICAgICB9CiAKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplRGVzY3JpcHRpb24o
RXhjZXB0aW9uQ29kZSwgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uKik7CisKIHByaXZhdGU6CiAg
ICAgRmlsZUV4Y2VwdGlvbihjb25zdCBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24mIGRlc2NyaXB0
aW9uKQogICAgICAgICA6IEV4Y2VwdGlvbkJhc2UoZGVzY3JpcHRpb24pCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL09wZXJhdGlvbk5vdEFsbG93ZWRFeGNlcHRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvT3BlcmF0aW9uTm90QWxsb3dlZEV4Y2VwdGlv
bi5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL09wZXJhdGlvbk5v
dEFsbG93ZWRFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShCTE9CKSB8fCBFTkFCTEUoRklMRV9TWVNU
RU0pCisKKyNpbmNsdWRlICJPcGVyYXRpb25Ob3RBbGxvd2VkRXhjZXB0aW9uLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGV4Y2VwdGlvbk5hbWVz
W10gPSB7CisgICAgIk5PVF9BTExPV0VEX0VSUiIKK307CisKK3N0YXRpYyBjb25zdCBjaGFyKiBj
b25zdCBleGNlcHRpb25EZXNjcmlwdGlvbnNbXSA9IHsKKyAgICAiQSByZWFkIG1ldGhvZCB3YXMg
Y2FsbGVkIHdoaWxlIHRoZSBvYmplY3Qgd2FzIGluIHRoZSBMT0FESU5HIHN0YXRlIGR1ZSB0byBh
IHByZXZpb3VzIHJlYWQgY2FsbC4iCit9OworCitDT01QSUxFX0FTU0VSVChXVEZfQVJSQVlfTEVO
R1RIKGV4Y2VwdGlvbk5hbWVzKSA9PSBXVEZfQVJSQVlfTEVOR1RIKGV4Y2VwdGlvbkRlc2NyaXB0
aW9ucyksIE9wZXJhdGlvbk5vdEFsbG93ZWRFeGNlcHRpb25UYWJsZXNNdXN0TWF0Y2gpOworCiti
b29sIE9wZXJhdGlvbk5vdEFsbG93ZWRFeGNlcHRpb246OmluaXRpYWxpemVEZXNjcmlwdGlvbihF
eGNlcHRpb25Db2RlIGVjLCBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24qIGRlc2NyaXB0aW9uKQor
eworICAgIGlmIChlYyA8IE9wZXJhdGlvbk5vdEFsbG93ZWRFeGNlcHRpb25PZmZzZXQgfHwgZWMg
PiBPcGVyYXRpb25Ob3RBbGxvd2VkRXhjZXB0aW9uTWF4KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBkZXNjcmlwdGlvbi0+dHlwZU5hbWUgPSAiRE9NIE9wZXJhdGlvbk5vdEFsbG93ZWQi
OworICAgIGRlc2NyaXB0aW9uLT5jb2RlID0gZWMgLSBPcGVyYXRpb25Ob3RBbGxvd2VkRXhjZXB0
aW9uT2Zmc2V0OworICAgIGRlc2NyaXB0aW9uLT50eXBlID0gT3BlcmF0aW9uTm90QWxsb3dlZEV4
Y2VwdGlvblR5cGU7CisKKyAgICBzaXplX3QgdGFibGVTaXplID0gV1RGX0FSUkFZX0xFTkdUSChl
eGNlcHRpb25OYW1lcyk7CisgICAgc2l6ZV90IHRhYmxlSW5kZXggPSBlYyAtIE5PVF9BTExPV0VE
X0VSUjsKKworICAgIGRlc2NyaXB0aW9uLT5uYW1lID0gdGFibGVJbmRleCA8IHRhYmxlU2l6ZSA/
IGV4Y2VwdGlvbk5hbWVzW3RhYmxlSW5kZXhdIDogMDsKKyAgICBkZXNjcmlwdGlvbi0+ZGVzY3Jp
cHRpb24gPSB0YWJsZUluZGV4IDwgdGFibGVTaXplID8gZXhjZXB0aW9uRGVzY3JpcHRpb25zW3Rh
YmxlSW5kZXhdIDogMDsKKworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQkxPQikgfHwgRU5BQkxFKEZJTEVfU1lTVEVNKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9PcGVyYXRpb25Ob3RBbGxvd2VkRXhjZXB0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9PcGVyYXRpb25Ob3RBbGxv
d2VkRXhjZXB0aW9uLmgJKHJldmlzaW9uIDk4NjMyKQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9PcGVyYXRpb25Ob3RBbGxvd2VkRXhjZXB0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYg
KzUxLDggQEAgcHVibGljOgogICAgICAgICBOT1RfQUxMT1dFRF9FUlIgPSBPcGVyYXRpb25Ob3RB
bGxvd2VkRXhjZXB0aW9uT2Zmc2V0ICsgMSwKICAgICB9OwogCisgICAgc3RhdGljIGJvb2wgaW5p
dGlhbGl6ZURlc2NyaXB0aW9uKEV4Y2VwdGlvbkNvZGUsIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlv
biopOworCiBwcml2YXRlOgogICAgIE9wZXJhdGlvbk5vdEFsbG93ZWRFeGNlcHRpb24oY29uc3Qg
RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKICAgICAgICAgOiBFeGNlcHRp
b25CYXNlKGRlc2NyaXB0aW9uKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRh
YmFzZUV4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJEYXRhYmFzZUV4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQkRhdGFiYXNlRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
R09PR0xFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKKworI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGV4Y2VwdGlvbk5hbWVzW10gPSB7Cisg
ICAgIlVOS05PV05fRVJSIiwKKyAgICAiTk9OX1RSQU5TSUVOVF9FUlIiLAorICAgICJOT1RfRk9V
TkRfRVJSIiwKKyAgICAiQ09OU1RSQUlOVF9FUlIiLAorICAgICJEQVRBX0VSUiIsCisgICAgIk5P
VF9BTExPV0VEX0VSUiIsCisgICAgIlNFUklBTF9FUlIiLAorICAgICJSRUNPVkVSQUJMRV9FUlIi
LAorICAgICJUUkFOU0lFTlRfRVJSIiwKKyAgICAiVElNRU9VVF9FUlIiLAorICAgICJERUFETE9D
S19FUlIiLAorICAgICJSRUFEX09OTFlfRVJSIiwKKyAgICAiQUJPUlRfRVJSIgorfTsKKworc3Rh
dGljIGNvbnN0IGNoYXIqIGNvbnN0IGV4Y2VwdGlvbkRlc2NyaXB0aW9uc1tdID0geworICAgICJB
biB1bmtub3duIGVycm9yIG9jY3VycmVkIHdpdGhpbiBJbmRleGVkIERhdGFiYXNlLiIsCisgICAg
Ik5PTl9UUkFOU0lFTlRfRVJSIiwgLy8gRklYTUU6IFdyaXRlIGEgYmV0dGVyIG1lc3NhZ2UgaWYg
aXQncyBldmVyIHBvc3NpYmxlIHRoaXMgaXMgdGhyb3duLgorICAgICJUaGUgbmFtZSBzdXBwbGll
ZCBkb2VzIG5vdCBtYXRjaCBhbnkgZXhpc3RpbmcgaXRlbS4iLAorICAgICJUaGUgcmVxdWVzdCBj
YW5ub3QgYmUgY29tcGxldGVkIGR1ZSB0byBhIGZhaWxlZCBjb25zdHJhaW50LiIsCisgICAgIlRo
ZSBkYXRhIHByb3ZpZGVkIGRvZXMgbm90IG1lZXQgdGhlIHJlcXVpcmVtZW50cyBvZiB0aGUgZnVu
Y3Rpb24uIiwKKyAgICAiVGhpcyBmdW5jdGlvbiBpcyBub3QgYWxsb3dlZCB0byBiZSBjYWxsZWQg
aW4gc3VjaCBhIGNvbnRleHQuIiwKKyAgICAiVGhlIGRhdGEgc3VwcGxpZWQgY2Fubm90IGJlIHNl
cmlhbGl6ZWQgYWNjb3JkaW5nIHRvIHRoZSBzdHJ1Y3R1cmVkIGNsb25pbmcgYWxnb3JpdGhtLiIs
CisgICAgIlJFQ09WRVJBQkxFX0VSUiIsIC8vIEZJWE1FOiBUaGlzIGlzbid0IGV2ZW4gdXNlZC4K
KyAgICAiVFJBTlNJRU5UX0VSUiIsIC8vIEZJWE1FOiBUaGlzIGlzbid0IGV2ZW4gdXNlZC4KKyAg
ICAiVElNRU9VVF9FUlIiLCAvLyBUaGlzIGNhbid0IGJlIHRocm93bi4KKyAgICAiREVBRExPQ0tf
RVJSIiwgLy8gVGhpcyBjYW4ndCBiZSB0aHJvd24uCisgICAgIldyaXRlIG9wZXJhdGlvbnMgY2Fu
bm90IGJlIHByZWZvcm1lZCBvbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbi4iLAorICAgICJUaGUg
dHJhbnNhY3Rpb24gd2FzIGFib3J0ZWQsIHNvIHRoZSByZXF1ZXN0IGNhbm5vdCBiZSBmdWxmaWxs
ZWQuIgorfTsKKworQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChleGNlcHRpb25OYW1l
cykgPT0gV1RGX0FSUkFZX0xFTkdUSChleGNlcHRpb25EZXNjcmlwdGlvbnMpKTsKKworYm9vbCBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6aW5pdGlhbGl6ZURlc2NyaXB0aW9uKEV4Y2VwdGlvbkNvZGUg
ZWMsIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiogZGVzY3JpcHRpb24pCit7CisgICAgaWYgKGVj
IDwgSURCRGF0YWJhc2VFeGNlcHRpb25PZmZzZXQgfHwgZWMgPiBJREJEYXRhYmFzZUV4Y2VwdGlv
bk1heCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZGVzY3JpcHRpb24tPnR5cGVOYW1l
ID0gIkRPTSBJREJEYXRhYmFzZSI7CisgICAgZGVzY3JpcHRpb24tPmNvZGUgPSBlYyAtIElEQkRh
dGFiYXNlRXhjZXB0aW9uT2Zmc2V0OworICAgIGRlc2NyaXB0aW9uLT50eXBlID0gSURCRGF0YWJh
c2VFeGNlcHRpb25UeXBlOworCisgICAgc2l6ZV90IHRhYmxlU2l6ZSA9IFdURl9BUlJBWV9MRU5H
VEgoZXhjZXB0aW9uTmFtZXMpOworICAgIHNpemVfdCB0YWJsZUluZGV4ID0gZWMgLSBVTktOT1dO
X0VSUjsKKworICAgIGRlc2NyaXB0aW9uLT5uYW1lID0gdGFibGVJbmRleCA8IHRhYmxlU2l6ZSA/
IGV4Y2VwdGlvbk5hbWVzW3RhYmxlSW5kZXhdIDogMDsKKyAgICBkZXNjcmlwdGlvbi0+ZGVzY3Jp
cHRpb24gPSB0YWJsZUluZGV4IDwgdGFibGVTaXplID8gZGVzY3JpcHRpb25UYWJsZVt0YWJsZUlu
ZGV4XSA6IDA7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlRXhjZXB0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUV4Y2VwdGlvbi5oCShyZXZpc2lvbiA5ODYzMikK
KysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VFeGNlcHRpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjYsNiArNjYsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBlcnJvckNv
ZGUgKyBJREJEYXRhYmFzZUV4Y2VwdGlvbk9mZnNldDsKICAgICB9CiAKKyAgICBzdGF0aWMgYm9v
bCBpbml0aWFsaXplRGVzY3JpcHRpb24oRXhjZXB0aW9uQ29kZSwgRXhjZXB0aW9uQ29kZURlc2Ny
aXB0aW9uKik7CisKIHByaXZhdGU6CiAgICAgSURCRGF0YWJhc2VFeGNlcHRpb24oY29uc3QgRXhj
ZXB0aW9uQ29kZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKICAgICAgICAgOiBFeGNlcHRpb25C
YXNlKGRlc2NyaXB0aW9uKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TUUxFeGNlcHRp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU1FMRXhjZXB0aW9u
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU1FMRXhjZXB0aW9u
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiU1FMRXhjZXB0aW9uLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGV4Y2Vw
dGlvbk5hbWVzW10gPSB7CisgICAgIlVOS05PV05fRVJSIiwKKyAgICAiREFUQUJBU0VfRVJSIiwK
KyAgICAiVkVSU0lPTl9FUlIiLAorICAgICJUT09fTEFSR0VfRVJSIiwKKyAgICAiUVVPVEFfRVJS
IiwKKyAgICAiU1lOVEFYX0VSUiIsCisgICAgIkNPTlNUUkFJTlRfRVJSIiwKKyAgICAiVElNRU9V
VF9FUlIiCit9OworCitzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZXhjZXB0aW9uRGVzY3JpcHRp
b25zW10gPSB7CisgICAgIlRoZSBvcGVyYXRpb24gZmFpbGVkIGZvciByZWFzb25zIHVucmVsYXRl
ZCB0byB0aGUgZGF0YWJhc2UuIiwKKyAgICAiVGhlIG9wZXJhdGlvbiBmYWlsZWQgZm9yIHNvbWUg
cmVhc29uIHJlbGF0ZWQgdG8gdGhlIGRhdGFiYXNlLiIsCisgICAgIlRoZSBhY3R1YWwgZGF0YWJh
c2UgdmVyc2lvbiBkaWQgbm90IG1hdGNoIHRoZSBleHBlY3RlZCB2ZXJzaW9uLiIsCisgICAgIkRh
dGEgcmV0dXJuZWQgZnJvbSB0aGUgZGF0YWJhc2UgaXMgdG9vIGxhcmdlLiIsCisgICAgIlF1b3Rh
IHdhcyBleGNlZWRlZC4iLAorICAgICJJbnZhbGlkIG9yIHVuYXV0aG9yaXplZCBzdGF0ZW1lbnQ7
IG9yIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIGRpZCBub3QgbWF0Y2ggdGhlIG51bWJlciBvZiA/
IHBsYWNlaG9sZGVycy4iLAorICAgICJBIGNvbnN0cmFpbnQgd2FzIHZpb2xhdGVkLiIsCisgICAg
IkEgdHJhbnNhY3Rpb24gbG9jayBjb3VsZCBub3QgYmUgYWNxdWlyZWQgaW4gYSByZWFzb25hYmxl
IHRpbWUuIgorfTsKKworQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChleGNlcHRpb25O
YW1lcykgPT0gV1RGX0FSUkFZX0xFTkdUSChleGNlcHRpb25EZXNjcmlwdGlvbnMpLCBTUUxFeGNl
cHRpb25UYWJsZXNNdXN0TWF0Y2gpOworCitib29sIFNRTEV4Y2VwdGlvbjo6aW5pdGlhbGl6ZURl
c2NyaXB0aW9uKEV4Y2VwdGlvbkNvZGUgZWMsIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiogZGVz
Y3JpcHRpb24pCit7CisgICAgaWYgKGVjIDwgU1FMRXhjZXB0aW9uT2Zmc2V0IHx8IGVjID4gU1FM
RXhjZXB0aW9uTWF4KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBkZXNjcmlwdGlvbi0+
dHlwZU5hbWUgPSAiRE9NIFNRTCI7CisgICAgZGVzY3JpcHRpb24tPmNvZGUgPSBlYyAtIFNRTEV4
Y2VwdGlvbk9mZnNldDsKKyAgICBkZXNjcmlwdGlvbi0+dHlwZSA9IFNRTEV4Y2VwdGlvblR5cGU7
CisKKyAgICBzaXplX3QgdGFibGVTaXplID0gV1RGX0FSUkFZX0xFTkdUSChleGNlcHRpb25OYW1l
cyk7CisgICAgc2l6ZV90IHRhYmxlSW5kZXggPSBlYyAtIFVOS05PV05fRVJSOworCisgICAgZGVz
Y3JpcHRpb24tPm5hbWUgPSB0YWJsZUluZGV4IDwgdGFibGVTaXplID8gZXhjZXB0aW9uTmFtZXNb
dGFibGVJbmRleF0gOiAwOworICAgIGRlc2NyaXB0aW9uLT5kZXNjcmlwdGlvbiA9IHRhYmxlSW5k
ZXggPCB0YWJsZVNpemUgPyBleGNlcHRpb25EZXNjcmlwdGlvbnNbdGFibGVJbmRleF0gOiAwOwor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShTUUxfREFUQUJBU0UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1NR
TEV4Y2VwdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU1FMRXhj
ZXB0aW9uLmgJKHJldmlzaW9uIDk4NjMyKQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TUUxF
eGNlcHRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgsOCBAQCBwdWJsaWM6CiAgICAg
ICAgIFRJTUVPVVRfRVJSID0gU1FMRXhjZXB0aW9uT2Zmc2V0ICsgNwogICAgIH07CiAKKyAgICBz
dGF0aWMgYm9vbCBpbml0aWFsaXplRGVzY3JpcHRpb24oRXhjZXB0aW9uQ29kZSwgRXhjZXB0aW9u
Q29kZURlc2NyaXB0aW9uKik7CisKIHByaXZhdGU6CiAgICAgU1FMRXhjZXB0aW9uKGNvbnN0IEV4
Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCiAgICAgICAgIDogRXhjZXB0aW9u
QmFzZShkZXNjcmlwdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFeGNlcHRpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFeGNlcHRpb24uY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0V4Y2VwdGlvbi5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKFNWRykKKworI2luY2x1ZGUgIlNWR0V4Y2VwdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBleGNlcHRpb25OYW1lc1tdID0geworICAg
ICJTVkdfV1JPTkdfVFlQRV9FUlIiLAorICAgICJTVkdfSU5WQUxJRF9WQUxVRV9FUlIiLAorICAg
ICJTVkdfTUFUUklYX05PVF9JTlZFUlRBQkxFIgorfTsKKworc3RhdGljIGNvbnN0IGNoYXIqIGNv
bnN0IGV4Y2VwdGlvbkRlc2NyaXB0aW9uc1tdID0geworICAgICJBbiBvYmplY3Qgb2YgdGhlIHdy
b25nIHR5cGUgd2FzIHBhc3NlZCB0byBhbiBvcGVyYXRpb24uIiwKKyAgICAiQW4gaW52YWxpZCB2
YWx1ZSB3YXMgcGFzc2VkIHRvIGFuIG9wZXJhdGlvbiBvciBhc3NpZ25lZCB0byBhbiBhdHRyaWJ1
dGUuIiwKKyAgICAiQW4gYXR0ZW1wdCB3YXMgbWFkZSB0byBpbnZlcnQgYSBtYXRyaXggdGhhdCBp
cyBub3QgaW52ZXJ0aWJsZS4iCit9OworCitDT01QSUxFX0FTU0VSVChXVEZfQVJSQVlfTEVOR1RI
KGV4Y2VwdGlvbk5hbWVzKSA9PSBXVEZfQVJSQVlfTEVOR1RIKGV4Y2VwdGlvbkRlc2NyaXB0aW9u
cyksIFNWR0V4Y2VwdGlvblRhYmxlc011c3RNYXRjaCk7CisKK2Jvb2wgU1ZHRXhjZXB0aW9uOjpp
bml0aWFsaXplRGVzY3JpcHRpb24oRXhjZXB0aW9uQ29kZSBlYywgRXhjZXB0aW9uQ29kZURlc2Ny
aXB0aW9uKiBkZXNjcmlwdGlvbikKK3sKKyAgICBpZiAoZWMgPCBTVkdFeGNlcHRpb25PZmZzZXQg
fHwgZWMgPiBTVkdFeGNlcHRpb25NYXgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGRl
c2NyaXB0aW9uLT50eXBlTmFtZSA9ICJET00gU1ZHIjsKKyAgICBkZXNjcmlwdGlvbi0+Y29kZSA9
IGVjIC0gU1ZHRXhjZXB0aW9uT2Zmc2V0OworICAgIGRlc2NyaXB0aW9uLT50eXBlID0gU1ZHRXhj
ZXB0aW9uVHlwZTsKKworICAgIHNpemVfdCB0YWJsZVNpemUgPSBXVEZfQVJSQVlfTEVOR1RIKGV4
Y2VwdGlvbk5hbWVzKTsKKyAgICBzaXplX3QgdGFibGVJbmRleCA9IGVjIC0gU1ZHX1dST05HX1RZ
UEVfRVJSOworCisgICAgZGVzY3JpcHRpb24tPm5hbWUgPSB0YWJsZUluZGV4IDwgdGFibGVTaXpl
ID8gZXhjZXB0aW9uTmFtZXNbdGFibGVJbmRleF0gOiAwOworICAgIGRlc2NyaXB0aW9uLT5kZXNj
cmlwdGlvbiA9IHRhYmxlSW5kZXggPCB0YWJsZVNpemUgPyBleGNlcHRpb25EZXNjcmlwdGlvbnNb
dGFibGVJbmRleF0gOiAwOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRXhjZXB0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0V4
Y2VwdGlvbi5oCShyZXZpc2lvbiA5ODYzMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFeGNl
cHRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsOCBAQCBwdWJsaWM6CiAgICAgICAg
IFNWR19NQVRSSVhfTk9UX0lOVkVSVEFCTEUgPSBTVkdFeGNlcHRpb25PZmZzZXQgKyAyCiAgICAg
fTsKIAorICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVEZXNjcmlwdGlvbihFeGNlcHRpb25Db2Rl
LCBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24qKTsKKwogcHJpdmF0ZToKICAgICBTVkdFeGNlcHRp
b24oY29uc3QgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKICAgICAgICAg
OiBFeGNlcHRpb25CYXNlKGRlc2NyaXB0aW9uKQpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0RXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgR09PR0xFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiWE1MSHR0cFJlcXVl
c3RFeGNlcHRpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgY29uc3QgY2hh
ciogY29uc3QgZXhjZXB0aW9uTmFtZXNbXSA9IHsKKyAgICAiTkVUV09SS19FUlIiLAorICAgICJB
Qk9SVF9FUlIiCit9OworCitzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZXhjZXB0aW9uRGVzY3Jp
cHRpb25zW10gPSB7CisgICAgIkEgbmV0d29yayBlcnJvciBvY2N1cmVkIGluIHN5bmNocm9ub3Vz
IHJlcXVlc3RzLiIsCisgICAgIlRoZSB1c2VyIGFib3J0ZWQgYSByZXF1ZXN0IGluIHN5bmNocm9u
b3VzIHJlcXVlc3RzLiIKK307CisKK0NPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgoZXhj
ZXB0aW9uTmFtZXMpID09IFdURl9BUlJBWV9MRU5HVEgoZXhjZXB0aW9uRGVzY3JpcHRpb25zKSwg
WE1MSHR0cFJlcXVlc3RFeGNlcHRpb25UYWJsZXNNdXN0TWF0Y2gpOworCitib29sIFhNTEh0dHBS
ZXF1ZXN0RXhjZXB0aW9uOjppbml0aWFsaXplRGVzY3JpcHRpb24oRXhjZXB0aW9uQ29kZSBlYywg
RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uKiBkZXNjcmlwdGlvbikKK3sKKyAgICBpZiAoZWMgPCBY
TUxIdHRwUmVxdWVzdEV4Y2VwdGlvbk9mZnNldCB8fCBlYyA+IFhNTEh0dHBSZXF1ZXN0RXhjZXB0
aW9uTWF4KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBkZXNjcmlwdGlvbi0+dHlwZU5h
bWUgPSAiWE1MSHR0cFJlcXVlc3QiOworICAgIGRlc2NyaXB0aW9uLT5jb2RlID0gZWMgLSBYTUxI
dHRwUmVxdWVzdEV4Y2VwdGlvbk9mZnNldDsKKyAgICBkZXNjcmlwdGlvbi0+dHlwZSA9IFhNTEh0
dHBSZXF1ZXN0RXhjZXB0aW9uVHlwZTsKKworICAgIHNpemVfdCB0YWJsZVNpemUgPSBXVEZfQVJS
QVlfTEVOR1RIKGV4Y2VwdGlvbk5hbWVzKTsKKyAgICBzaXplX3QgdGFibGVJbmRleCA9IGVjIC0g
TkVUV09SS19FUlI7CisKKyAgICBkZXNjcmlwdGlvbi0+bmFtZSA9IHRhYmxlSW5kZXggPCB0YWJs
ZVNpemUgPyBleGNlcHRpb25OYW1lc1t0YWJsZUluZGV4XSA6IDA7CisgICAgZGVzY3JpcHRpb24t
PmRlc2NyaXB0aW9uID0gdGFibGVJbmRleCA8IHRhYmxlU2l6ZSA/IGV4Y2VwdGlvbkRlc2NyaXB0
aW9uc1t0YWJsZUluZGV4XSA6IDA7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0RXhj
ZXB0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
RXhjZXB0aW9uLmgJKHJldmlzaW9uIDk4NjMyKQorKysgU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0RXhjZXB0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDI4ICszMywzMCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlv
biA6IHB1YmxpYyBFeGNlcHRpb25CYXNlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uPiBjcmVhdGUoY29uc3QgRXhjZXB0aW9u
Q29kZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbihkZXNjcmlwdGlvbikpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBYTUxIdHRwUmVxdWVzdEV4Y2Vw
dGlvbk9mZnNldCA9IDUwMDsKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBYTUxIdHRwUmVxdWVz
dEV4Y2VwdGlvbk1heCA9IDY5OTsKLQotICAgICAgICBlbnVtIFhNTEh0dHBSZXF1ZXN0RXhjZXB0
aW9uQ29kZSB7Ci0gICAgICAgICAgICBORVRXT1JLX0VSUiA9IFhNTEh0dHBSZXF1ZXN0RXhjZXB0
aW9uT2Zmc2V0ICsgMTAxLAotICAgICAgICAgICAgQUJPUlRfRVJSCi0gICAgICAgIH07Ci0KLSAg
ICBwcml2YXRlOgotICAgICAgICBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbihjb25zdCBFeGNlcHRp
b25Db2RlRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQotICAgICAgICAgICAgOiBFeGNlcHRpb25C
YXNlKGRlc2NyaXB0aW9uKQotICAgICAgICB7Ci0gICAgICAgIH0KK2NsYXNzIFhNTEh0dHBSZXF1
ZXN0RXhjZXB0aW9uIDogcHVibGljIEV4Y2VwdGlvbkJhc2UgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uPiBjcmVhdGUoY29uc3QgRXhjZXB0
aW9uQ29kZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24oZGVzY3JpcHRpb24pKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgY29uc3QgaW50IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uT2Zmc2V0ID0g
NTAwOworICAgIHN0YXRpYyBjb25zdCBpbnQgWE1MSHR0cFJlcXVlc3RFeGNlcHRpb25NYXggPSA2
OTk7CisKKyAgICBlbnVtIFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uQ29kZSB7CisgICAgICAgIE5F
VFdPUktfRVJSID0gWE1MSHR0cFJlcXVlc3RFeGNlcHRpb25PZmZzZXQgKyAxMDEsCisgICAgICAg
IEFCT1JUX0VSUgogICAgIH07CiAKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplRGVzY3JpcHRp
b24oRXhjZXB0aW9uQ29kZSwgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uKik7CisKK3ByaXZhdGU6
CisgICAgWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24oY29uc3QgRXhjZXB0aW9uQ29kZURlc2NyaXB0
aW9uJiBkZXNjcmlwdGlvbikKKyAgICAgICAgOiBFeGNlcHRpb25CYXNlKGRlc2NyaXB0aW9uKQor
ICAgIHsKKyAgICB9Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBY
TUxIdHRwUmVxdWVzdEV4Y2VwdGlvbl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhF
eGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV4Y2Vw
dGlvbi5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhFeGNlcHRp
b24uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxl
Iikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJYUGF0aEV4Y2VwdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBleGNlcHRpb25OYW1lc1tdID0geworICAgICJJTlZB
TElEX0VYUFJFU1NJT05fRVJSIiwKKyAgICAiVFlQRV9FUlIiCit9OworCitzdGF0aWMgY29uc3Qg
Y2hhciogY29uc3QgZXhjZXB0aW9uRGVzY3JpcHRpb25zW10gPSB7CisgICAgIlRoZSBleHByZXNz
aW9uIGhhZCBhIHN5bnRheCBlcnJvciBvciBvdGhlcndpc2UgaXMgbm90IGEgbGVnYWwgZXhwcmVz
c2lvbiBhY2NvcmRpbmcgdG8gdGhlIHJ1bGVzIG9mIHRoZSBzcGVjaWZpYyBYUGF0aEV2YWx1YXRv
ci4iLAorICAgICJUaGUgZXhwcmVzc2lvbiBjb3VsZCBub3QgYmUgY29udmVydGVkIHRvIHJldHVy
biB0aGUgc3BlY2lmaWVkIHR5cGUuIgorfTsKKworQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xF
TkdUSChleGNlcHRpb25OYW1lcykgPT0gV1RGX0FSUkFZX0xFTkdUSChleGNlcHRpb25EZXNjcmlw
dGlvbnMpLCBYUGF0aEV4Y2VwdGlvblRhYmxlc011c3RNYXRjaCk7CisKK2Jvb2wgWFBhdGhFeGNl
cHRpb246OmluaXRpYWxpemVEZXNjcmlwdGlvbihFeGNlcHRpb25Db2RlIGVjLCBFeGNlcHRpb25D
b2RlRGVzY3JpcHRpb24qIGRlc2NyaXB0aW9uKQoreworICAgIGlmIChlYyA8IFhQYXRoRXhjZXB0
aW9uT2Zmc2V0IHx8IGVjID4gWFBhdGhFeGNlcHRpb25NYXgpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGRlc2NyaXB0aW9uLT50eXBlTmFtZSA9ICJET00gWFBhdGgiOworICAgIGRlc2Ny
aXB0aW9uLT5jb2RlID0gZWMgLSBYUGF0aEV4Y2VwdGlvbk9mZnNldDsKKyAgICBkZXNjcmlwdGlv
bi0+dHlwZSA9IFhQYXRoRXhjZXB0aW9uVHlwZTsKKworICAgIHNpemVfdCB0YWJsZVNpemUgPSBX
VEZfQVJSQVlfTEVOR1RIKGV4Y2VwdGlvbk5hbWVzKTsKKyAgICBzaXplX3QgdGFibGVJbmRleCA9
IGVjIC0gSU5WQUxJRF9FWFBSRVNTSU9OX0VSUjsKKworICAgIGRlc2NyaXB0aW9uLT5uYW1lID0g
dGFibGVJbmRleCA8IHRhYmxlU2l6ZSA/IGV4Y2VwdGlvbk5hbWVzW3RhYmxlSW5kZXhdIDogMDsK
KyAgICBkZXNjcmlwdGlvbi0+ZGVzY3JpcHRpb24gPSB0YWJsZUluZGV4IDwgdGFibGVTaXplID8g
ZXhjZXB0aW9uRGVzY3JpcHRpb25zW3RhYmxlSW5kZXhdIDogMDsKKworICAgIHJldHVybiB0cnVl
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwv
WFBhdGhFeGNlcHRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhF
eGNlcHRpb24uaAkocmV2aXNpb24gOTg2MzIpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhF
eGNlcHRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMjggKzMzLDMwIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIFhQYXRoRXhjZXB0aW9uIDogcHVibGljIEV4Y2VwdGlv
bkJhc2UgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8WFBhdGhFeGNl
cHRpb24+IGNyZWF0ZShjb25zdCBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9u
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFhQYXRoRXhjZXB0
aW9uKGRlc2NyaXB0aW9uKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgY29uc3QgaW50
IFhQYXRoRXhjZXB0aW9uT2Zmc2V0ID0gNDAwOwotICAgICAgICBzdGF0aWMgY29uc3QgaW50IFhQ
YXRoRXhjZXB0aW9uTWF4ID0gNDk5OwotCi0gICAgICAgIGVudW0gWFBhdGhFeGNlcHRpb25Db2Rl
IHsKLSAgICAgICAgICAgIElOVkFMSURfRVhQUkVTU0lPTl9FUlIgPSBYUGF0aEV4Y2VwdGlvbk9m
ZnNldCArIDUxLAotICAgICAgICAgICAgVFlQRV9FUlIKLSAgICAgICAgfTsKLQotICAgIHByaXZh
dGU6Ci0gICAgICAgIFhQYXRoRXhjZXB0aW9uKGNvbnN0IEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlv
biYgZGVzY3JpcHRpb24pCi0gICAgICAgICAgICA6IEV4Y2VwdGlvbkJhc2UoZGVzY3JpcHRpb24p
Ci0gICAgICAgIHsKLSAgICAgICAgfQorY2xhc3MgWFBhdGhFeGNlcHRpb24gOiBwdWJsaWMgRXhj
ZXB0aW9uQmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8WFBhdGhFeGNlcHRp
b24+IGNyZWF0ZShjb25zdCBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBYUGF0aEV4Y2VwdGlvbihkZXNjcmlw
dGlvbikpOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBpbnQgWFBhdGhFeGNlcHRpb25PZmZz
ZXQgPSA0MDA7CisgICAgc3RhdGljIGNvbnN0IGludCBYUGF0aEV4Y2VwdGlvbk1heCA9IDQ5OTsK
KworICAgIGVudW0gWFBhdGhFeGNlcHRpb25Db2RlIHsKKyAgICAgICAgSU5WQUxJRF9FWFBSRVNT
SU9OX0VSUiA9IFhQYXRoRXhjZXB0aW9uT2Zmc2V0ICsgNTEsCisgICAgICAgIFRZUEVfRVJSCiAg
ICAgfTsKIAorICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVEZXNjcmlwdGlvbihFeGNlcHRpb25D
b2RlLCBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24qKTsKKworcHJpdmF0ZToKKyAgICBYUGF0aEV4
Y2VwdGlvbihjb25zdCBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQorICAg
ICAgICA6IEV4Y2VwdGlvbkJhc2UoZGVzY3JpcHRpb24pCisgICAgeworICAgIH0KK307CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFhQYXRoRXhjZXB0aW9uX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112827</attachid>
            <date>2011-10-28 01:10:22 -0700</date>
            <delta_ts>2011-10-28 01:32:03 -0700</delta_ts>
            <desc>Work in progress</desc>
            <filename>bug-70890-20111028011020.patch</filename>
            <type>text/plain</type>
            <size>18559</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gOTg3MDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC01ODgs
NiArNTg4LDcgQEAgYWxsIDogXAogICAgIENvbG9yRGF0YS5jcHAgXAogICAgIEV2ZW50RmFjdG9y
eS5jcHAgXAogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlcy5oIFwKKyAgICBFeGNlcHRpb25Db2Rl
RGVzY3JpcHRpb24uY3BwIFwKICAgICBIVE1MRWxlbWVudEZhY3RvcnkuY3BwIFwKICAgICBIVE1M
RW50aXR5VGFibGUuY3BwIFwKICAgICBIVE1MTmFtZXMuY3BwIFwKQEAgLTg1Niw2ICs4NTcsOSBA
QCBFdmVudEZhY3RvcnkuY3BwIEV2ZW50SGVhZGVycy5oIEV2ZW50SW50CiBFdmVudFRhcmdldEhl
YWRlcnMuaCBFdmVudFRhcmdldEludGVyZmFjZXMuaCA6IGRvbS9tYWtlX2V2ZW50X2ZhY3Rvcnku
cGwgZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgogCXBlcmwgLUkgJChXZWJDb3JlKS9iaW5kaW5n
cy9zY3JpcHRzICQ8IC0taW5wdXQgJChXZWJDb3JlKS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5Lmlu
CiAKK0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5jcHAgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9u
LmggOiBkb20vbWFrZV9leGNlcHRpb25fY29kZV9kZXNjcmlwdGlvbi5wbCBkb20vRXhjZXB0aW9u
Q29kZURlc2NyaXB0aW9uLmluCisJcGVybCAtSSAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMg
JDwgLS1pbnB1dCAkKFdlYkNvcmUpL2RvbS9FeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaW4KKwog
IyAtLS0tLS0tLQogIAogIyBNYXRoTUwgdGFnIGFuZCBhdHRyaWJ1dGUgbmFtZXMsIGFuZCBlbGVt
ZW50IGZhY3RvcnkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDk4NzAxKQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMTk5LDYg
KzMxOTksOCBAQAogCQk5NzI4QzMxNDEyNjhFNDM5MDA0MUU4OUIgLyogTWFya3VwQWNjdW11bGF0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MjhD
MzEyMTI2OEU0MzkwMDQxRTg5QiAvKiBNYXJrdXBBY2N1bXVsYXRvci5oICovOyB9OwogCQk5NzM4
ODlBMDExNkVBOURDMDBBREYzMTMgLyogRG9jdW1lbnRXcml0ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTczODg5OUUxMTZFQTlEQzAwQURGMzEz
IC8qIERvY3VtZW50V3JpdGVyLmNwcCAqLzsgfTsKIAkJOTczODg5QTExMTZFQTlEQzAwQURGMzEz
IC8qIERvY3VtZW50V3JpdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NzM4ODk5RjExNkVBOURDMDBBREYzMTMgLyogRG9jdW1lbnRXcml0ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5NzNEQzYz
RjE0NUE5NDA5MDAyODQyQzIgLyogRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3M0RDNjNEMTQ1QTk0MDkw
MDI4NDJDMiAvKiBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uY3BwICovOyB9OworCQk5NzNEQzY0
MDE0NUE5NDA5MDAyODQyQzIgLyogRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzNEQzYzRTE0NUE5NDA5MDAy
ODQyQzIgLyogRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmggKi87IH07CiAJCTk3M0UzMjU2MTA4
ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJjZUxvYWROb3RpZmllci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzNFMzI1NDEwODgzQjdDMDA1QkM0OTMg
LyogUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwICovOyB9OwogCQk5NzNFMzI1NzEwODgzQjdDMDA1
QkM0OTMgLyogUmVzb3VyY2VMb2FkTm90aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3M0UzMjU1MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJj
ZUxvYWROb3RpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTk3NTJEMzhEMTQxMzEwNEIwMDMzMDVCRCAvKiBKU0hUTUxTcGFuRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzUyRDM4
QjE0MTMxMDRCMDAzMzA1QkQgLyogSlNIVE1MU3BhbkVsZW1lbnQuY3BwICovOyB9OwpAQCAtMTAz
NDEsNiArMTAzNDMsOCBAQAogCQk5NzI4QzMxMjEyNjhFNDM5MDA0MUU4OUIgLyogTWFya3VwQWNj
dW11bGF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFya3VwQWNjdW11
bGF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTczODg5OUUxMTZFQTlEQzAw
QURGMzEzIC8qIERvY3VtZW50V3JpdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IERvY3VtZW50V3JpdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTczODg5OUYxMTZFQTlEQzAwQURGMzEzIC8qIERvY3VtZW50V3JpdGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50V3JpdGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTk3M0RDNjNEMTQ1QTk0MDkwMDI4NDJDMiAvKiBFeGNlcHRpb25Db2Rl
RGVzY3JpcHRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhj
ZXB0aW9uQ29kZURlc2NyaXB0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTczREM2M0UxNDVBOTQwOTAwMjg0MkMyIC8qIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTczRTMyNTQxMDg4M0I3QzAwNUJDNDkz
IC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlc291cmNlTG9hZE5vdGlmaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTczRTMyNTUxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZE5vdGlmaWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3NTJEMzhCMTQxMzEwNEIwMDMzMDVC
RCAvKiBKU0hUTUxTcGFuRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0hUTUxTcGFuRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNTE3OSw2ICsxNTE4Myw4IEBACiAJCQkJOTcwQjcyODkxNDRGRkFDNjAwRjAwQTM3IC8q
IEV2ZW50SW50ZXJmYWNlcy5oICovLAogCQkJCTk3QUEzQ0EzMTQ1MjM3Q0MwMDNFMURBNiAvKiBF
dmVudFRhcmdldEhlYWRlcnMuaCAqLywKIAkJCQk5N0FBM0NBNDE0NTIzN0NDMDAzRTFEQTYgLyog
RXZlbnRUYXJnZXRJbnRlcmZhY2VzLmggKi8sCisJCQkJOTczREM2M0QxNDVBOTQwOTAwMjg0MkMy
IC8qIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5jcHAgKi8sCisJCQkJOTczREM2M0UxNDVBOTQw
OTAwMjg0MkMyIC8qIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5oICovLAogCQkJCUExN0M4MTIw
MEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwICovLAogCQkJCUExN0M4
MTIxMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuaCAqLywKIAkJCQlBOEJD
MDQ5MTEyMTRGNjk2MDBCNUYxMjIgLyogSFRNTEVudGl0eVRhYmxlLmNwcCAqLywKQEAgLTI0NTI5
LDYgKzI0NTM1LDcgQEAKIAkJCQk5NzBCNzJBNjE0NTAwOEVCMDBGMDBBMzcgLyogRXZlbnRIZWFk
ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjNBODg3MjE0NTYzMkY5MDAzQUU4RjUgLyogRE9N
RE9NU2V0dGFibGVUb2tlbkxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENjJGNTJFMTQ1ODk4
RDgwMDk0QjBFRCAvKiBBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
KwkJCQk5NzNEQzY0MDE0NUE5NDA5MDAyODQyQzIgLyogRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI3Mzc1LDYgKzI3MzgyLDcgQEAKIAkJCQlBMEVFMERGNTE0
NEY4MjU1MDBGODBCMEQgLyogV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBMEVFMERGNzE0NEY4MjU1MDBGODBCMEQgLyogV2ViR0xEZWJ1Z1NoYWRlcnMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTNCQjU5RjMxNDU3QTQwRDAwQUM1NkZFIC8qIERvY3VtZW50
RXZlbnRRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5NzNEQzYzRjE0NUE5NDA5MDAyODQy
QzIgLyogRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCShyZXZpc2lvbiA5
ODcwMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIHNldERPTUV4Y2VwdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIEV4CiAKICAgICBKU1ZhbHVlIGVycm9yT2JqZWN0OwogICAgIHN3aXRjaCAo
ZGVzY3JpcHRpb24udHlwZSkgewotICAgICAgICBjYXNlIERPTUV4Y2VwdGlvblR5cGU6CisgICAg
ICAgIGNhc2UgRE9NQ29yZUV4Y2VwdGlvblR5cGU6CiAgICAgICAgICAgICBlcnJvck9iamVjdCA9
IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBET01Db3JlRXhjZXB0aW9uOjpjcmVhdGUoZGVzY3Jp
cHRpb24pKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJhbmdlRXhjZXB0aW9u
VHlwZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCShyZXZpc2lv
biA5ODcwMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NTksNyArNjU5LDcgQEAgdm9pZCBWOFByb3h5OjpzZXRET01FeGNlcHRp
b24oaW50IGV4Y2VwdAogCiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGV4Y2VwdGlvbjsKICAg
ICBzd2l0Y2ggKGRlc2NyaXB0aW9uLnR5cGUpIHsKLSAgICBjYXNlIERPTUV4Y2VwdGlvblR5cGU6
CisgICAgY2FzZSBET01Db3JlRXhjZXB0aW9uVHlwZToKICAgICAgICAgZXhjZXB0aW9uID0gdG9W
OChET01Db3JlRXhjZXB0aW9uOjpjcmVhdGUoZGVzY3JpcHRpb24pKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBSYW5nZUV4Y2VwdGlvblR5cGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
RE9NQ29yZUV4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RP
TUNvcmVFeGNlcHRpb24uY3BwCShyZXZpc2lvbiA5ODcwMSkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9ET01Db3JlRXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCBi
b29sIERPTUNvcmVFeGNlcHRpb246OmluaXRpYWxpemVEZXNjcmlwCiB7CiAgICAgZGVzY3JpcHRp
b24tPnR5cGVOYW1lID0gIkRPTSI7CiAgICAgZGVzY3JpcHRpb24tPmNvZGUgPSBlYzsKLSAgICBk
ZXNjcmlwdGlvbi0+dHlwZSA9IERPTUV4Y2VwdGlvblR5cGU7CisgICAgZGVzY3JpcHRpb24tPnR5
cGUgPSBET01Db3JlRXhjZXB0aW9uVHlwZTsKIAogICAgIHNpemVfdCB0YWJsZVNpemUgPSBXVEZf
QVJSQVlfTEVOR1RIKGNvcmVFeGNlcHRpb25OYW1lcyk7CiAgICAgc2l6ZV90IHRhYmxlSW5kZXgg
PSBlYyAtIElOREVYX1NJWkVfRVJSOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlv
bkNvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Db2Rl
LmNwcAkocmV2aXNpb24gOTg3MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29k
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDY1ICsyNiwxNSBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKIAotI2luY2x1ZGUgIkRPTUNvcmVFeGNl
cHRpb24uaCIKLSNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgotI2lmIEVOQUJMRShCTE9CKQot
I2luY2x1ZGUgIkZpbGVFeGNlcHRpb24uaCIKLSNlbmRpZgotI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQotI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCi0jZW5kaWYKLSNpZiBF
TkFCTEUoQkxPQikKLSNpbmNsdWRlICJPcGVyYXRpb25Ob3RBbGxvd2VkRXhjZXB0aW9uLmgiCi0j
ZW5kaWYKLSNpbmNsdWRlICJSYW5nZUV4Y2VwdGlvbi5oIgotI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpCi0jaW5jbHVkZSAiU1FMRXhjZXB0aW9uLmgiCi0jZW5kaWYKLSNpZiBFTkFCTEUoU1ZHKQot
I2luY2x1ZGUgIlNWR0V4Y2VwdGlvbi5oIgotI2VuZGlmCi0jaW5jbHVkZSAiWE1MSHR0cFJlcXVl
c3RFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJYUGF0aEV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIEZJ
WE1FOiBJbmxpbmUgdGhpcyBmdW5jdGlvbiBpbnRvIGl0cyBjYWxsZXJzLgogdm9pZCBnZXRFeGNl
cHRpb25Db2RlRGVzY3JpcHRpb24oRXhjZXB0aW9uQ29kZSBlYywgRXhjZXB0aW9uQ29kZURlc2Ny
aXB0aW9uJiBkZXNjcmlwdGlvbikKIHsKICAgICBBU1NFUlQoZWMpOwotCi0gICAgaWYgKEV2ZW50
RXhjZXB0aW9uOjppbml0aWFsaXplRGVzY3JpcHRpb24oZWMsICZkZXNjcmlwdGlvbikpCi0gICAg
ICAgIHJldHVybjsKLSNpZiBFTkFCTEUoQkxPQikKLSAgICBpZiAoRmlsZUV4Y2VwdGlvbjo6aW5p
dGlhbGl6ZURlc2NyaXB0aW9uKGVjLCAmZGVzY3JpcHRpb24pKQotICAgICAgICByZXR1cm47Ci0j
ZW5kaWYKLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBpZiAoSURCRGF0YWJhc2VF
eGNlcHRpb246OmluaXRpYWxpemVEZXNjcmlwdGlvbihlYywgJmRlc2NyaXB0aW9uKSkKLSAgICAg
ICAgcmV0dXJuOwotI2VuZGlmCi0jaWYgRU5BQkxFKEJMT0IpCi0gICAgaWYgKE9wZXJhdGlvbk5v
dEFsbG93ZWRFeGNlcHRpb246OmluaXRpYWxpemVEZXNjcmlwdGlvbihlYywgJmRlc2NyaXB0aW9u
KSkKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0gICAgaWYgKFJhbmdlRXhjZXB0aW9uOjppbml0
aWFsaXplRGVzY3JpcHRpb24oZWMsICZkZXNjcmlwdGlvbikpCi0gICAgICAgIHJldHVybjsKLSNp
ZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIGlmIChTUUxFeGNlcHRpb246OmluaXRpYWxpemVE
ZXNjcmlwdGlvbihlYywgJmRlc2NyaXB0aW9uKSkKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0j
aWYgRU5BQkxFKFNWRykKLSAgICBpZiAoU1ZHRXhjZXB0aW9uOjppbml0aWFsaXplRGVzY3JpcHRp
b24oZWMsICZkZXNjcmlwdGlvbikpCi0gICAgICAgIHJldHVybjsKLSNlbmRpZgotICAgIGlmIChY
TUxIdHRwUmVxdWVzdEV4Y2VwdGlvbjo6aW5pdGlhbGl6ZURlc2NyaXB0aW9uKGVjLCAmZGVzY3Jp
cHRpb24pKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKFhQYXRoRXhjZXB0aW9uOjppbml0aWFs
aXplRGVzY3JpcHRpb24oZWMsICZkZXNjcmlwdGlvbikpCi0gICAgICAgIHJldHVybjsKLSAgICBp
ZiAoRE9NQ29yZUV4Y2VwdGlvbjo6aW5pdGlhbGl6ZURlc2NyaXB0aW9uKGVjLCAmZGVzY3JpcHRp
b24pKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBk
ZXNjcmlwdGlvbiA9IEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbihlYyk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Db2RlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUuaAkocmV2aXNp
b24gOTg3MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xOSw2ICsxOSw4IEBACiAjaWZuZGVmIEV4Y2VwdGlvbkNvZGVfaAogI2RlZmlu
ZSBFeGNlcHRpb25Db2RlX2gKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5o
IgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAvLyBUaGUgRE9NIHN0YW5kYXJkcyB1c2Ug
dW5zaWduZWQgc2hvcnQgZm9yIGV4Y2VwdGlvbiBjb2Rlcy4KQEAgLTYzLDM3ICs2NSw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgREFUQV9DTE9ORV9FUlIgPSAyNQogICAgIH07CiAK
LSAgICBlbnVtIEV4Y2VwdGlvblR5cGUgewotICAgICAgICBET01FeGNlcHRpb25UeXBlLAotICAg
ICAgICBSYW5nZUV4Y2VwdGlvblR5cGUsCi0gICAgICAgIEV2ZW50RXhjZXB0aW9uVHlwZSwKLSAg
ICAgICAgWE1MSHR0cFJlcXVlc3RFeGNlcHRpb25UeXBlLAotICAgICAgICBYUGF0aEV4Y2VwdGlv
blR5cGUKLSNpZiBFTkFCTEUoU1ZHKQotICAgICAgICAsIFNWR0V4Y2VwdGlvblR5cGUKLSNlbmRp
ZgotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgICAgICwgU1FMRXhjZXB0aW9uVHlwZQot
I2VuZGlmCi0jaWYgRU5BQkxFKEJMT0IpIHx8IEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICAgICAg
LCBGaWxlRXhjZXB0aW9uVHlwZQotI2VuZGlmCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
Ci0gICAgICAgICwgSURCRGF0YWJhc2VFeGNlcHRpb25UeXBlCi0jZW5kaWYKLSNpZiBFTkFCTEUo
QkxPQikgfHwgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgICAgICAsIE9wZXJhdGlvbk5vdEFsbG93
ZWRFeGNlcHRpb25UeXBlCi0jZW5kaWYKLSAgICB9OwotCi0KLSAgICBzdHJ1Y3QgRXhjZXB0aW9u
Q29kZURlc2NyaXB0aW9uIHsKLSAgICAgICAgY29uc3QgY2hhciogdHlwZU5hbWU7IC8vIGhhcyBz
cGFjZXMgYW5kIGlzIHN1aXRhYmxlIGZvciB1c2UgaW4gZXhjZXB0aW9uIGRlc2NyaXB0aW9uIHN0
cmluZ3M7IG1heGltdW0gbGVuZ3RoIGlzIDEwIGNoYXJhY3RlcnMKLSAgICAgICAgY29uc3QgY2hh
ciogbmFtZTsgLy8gZXhjZXB0aW9uIG5hbWUsIGFsc28gaW50ZW5kZWQgZm9yIHVzZSBpbiBleGNl
cHRpb24gZGVzY3JpcHRpb24gc3RyaW5nczsgMCBpZiBuYW1lIG5vdCBrbm93bjsgbWF4aW11bSBs
ZW5ndGggaXMgMjcgY2hhcmFjdGVycwotICAgICAgICBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbjsg
Ly8gZXhjZXB0aW9uIGRlc2NyaXB0aW9uLCBpbnRlbmRlZCBmb3IgdXNlIGluIGV4Y2VwdGlvbiBz
dHJpbmdzOyBtb3JlIHJlYWRhYmxlIGV4cGxhbmF0aW9uIG9mIGVycm9yCi0gICAgICAgIGludCBj
b2RlOyAvLyBudW1lcmljIHZhbHVlIG9mIHRoZSBleGNlcHRpb24gd2l0aGluIGEgcGFydGljdWxh
ciB0eXBlCi0gICAgICAgIEV4Y2VwdGlvblR5cGUgdHlwZTsKLSAgICB9OwogICAgIHZvaWQgZ2V0
RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uKEV4Y2VwdGlvbkNvZGUsIEV4Y2VwdGlvbkNvZGVEZXNj
cmlwdGlvbiYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9FeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaW4JKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmluCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDEyIEBACituYW1lc3BhY2U9RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uCisK
K0RPTUNvcmVFeGNlcHRpb24KK0V2ZW50RXhjZXB0aW9uCitGaWxlRXhjZXB0aW9uIGNvbmRpdGlv
bmFsPUJMT0IKK0lEQkRhdGFiYXNlRXhjZXB0aW9uIGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJB
U0UKK09wZXJhdGlvbk5vdEFsbG93ZWRFeGNlcHRpb24gY29uZGl0aW9uYWw9QkxPQgorUmFuZ2VF
eGNlcHRpb24KK1NRTEV4Y2VwdGlvbiBjb25kaXRpb25hbD1TUUxfREFUQUJBU0UKK1NWR0V4Y2Vw
dGlvbiBjb25kaXRpb25hbD1TVkcKK1hNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uCitYUGF0aEV4Y2Vw
dGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL21ha2VfZXhjZXB0aW9uX2NvZGVfZGVzY3Jp
cHRpb24ucGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL21ha2VfZXhjZXB0aW9u
X2NvZGVfZGVzY3JpcHRpb24ucGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
bWFrZV9leGNlcHRpb25fY29kZV9kZXNjcmlwdGlvbi5wbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxOTYgQEAKKyMhL3Vzci9iaW4vcGVybCAtdworCisjIENvcHlyaWdodCAoQykgMjAwNSwgMjAw
NiwgMjAwNywgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdo
dCAoQykgMjAwOSwgSnVsaWVuIENoYWZmcmFpeCA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorIyBD
b3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4g
KGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKKyMgQ29weXJpZ2h0IChDKSAyMDExIEVyaWNz
c29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorIyAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorIyAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgor
IyAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAorIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisjIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K3VzZSBzdHJpY3Q7CisKK3VzZSBDb25maWc7Cit1c2UgR2V0b3B0OjpMb25nOwordXNlIEZpbGU6
OlBhdGg7Cit1c2UgRmlsZTo6U3BlYzsKK3VzZSBJTzo6RmlsZTsKK3VzZSBJbkZpbGVzQ29tcGls
ZXI7CisKK3JlcXVpcmUgQ29uZmlnOworCitteSAkaW5wdXRGaWxlOworbXkgJG91dHB1dERpciA9
ICIuIjsKKworR2V0T3B0aW9ucygKKyAgICAnaW5wdXQ9cycgPT4gXCRpbnB1dEZpbGUsCisgICAg
J291dHB1dERpcj1zJyA9PiBcJG91dHB1dERpciwKKyk7CisKK21rcGF0aCgkb3V0cHV0RGlyKTsK
KworZGllICJZb3UgbXVzdCBzcGVjaWZ5IC0taW5wdXQgPGZpbGU+IiB1bmxlc3MgbGVuZ3RoKCRp
bnB1dEZpbGUpOworCitteSAlZGVmYXVsdFBhcmFtZXRlcnMgPSAoCisgICAgJ25hbWVzcGFjZScg
PT4gMAorKTsKKworbXkgJEluQ29tcGlsZXIgPSBJbkZpbGVzQ29tcGlsZXItPm5ldyhcJWRlZmF1
bHRQYXJhbWV0ZXJzLCBcJmRlZmF1bHRJdGVtRmFjdG9yeSk7CisKKyRJbkNvbXBpbGVyLT5jb21w
aWxlKCRpbnB1dEZpbGUsIFwmZ2VuZXJhdGVDb2RlKTsKKworc3ViIGRlZmF1bHRJdGVtRmFjdG9y
eQoreworICAgIHJldHVybiAoCisgICAgICAgICdjb25kaXRpb25hbCcgPT4gMAorICAgICk7Cit9
CisKK3N1YiBnZW5lcmF0ZUNvZGUoKQoreworICAgIG15ICRwYXJzZWRQYXJhbWV0ZXJzID0gc2hp
ZnQ7CisgICAgbXkgJHBhcnNlZEl0ZW1zID0gc2hpZnQ7CisKKyAgICBnZW5lcmF0ZUhlYWRlcigk
cGFyc2VkUGFyYW1ldGVycywgJHBhcnNlZEl0ZW1zKTsKKyAgICBnZW5lcmF0ZUltcGxlbWVudGF0
aW9uKCRwYXJzZWRQYXJhbWV0ZXJzLCAkcGFyc2VkSXRlbXMpOworfQorCitzdWIgZ2VuZXJhdGVI
ZWFkZXIoKQoreworICAgIG15ICRwYXJzZWRQYXJhbWV0ZXJzUmVmID0gc2hpZnQ7CisgICAgbXkg
JHBhcnNlZEl0ZW1zUmVmID0gc2hpZnQ7CisKKyAgICBteSAkRjsKKyAgICBteSAlcGFyc2VkSXRl
bXMgPSAleyAkcGFyc2VkSXRlbXNSZWYgfTsKKworICAgIG15ICRvdXRwdXRGaWxlID0gIiRvdXRw
dXREaXIvRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmgiOworCisgICAgb3BlbiBGLCAiPiRvdXRw
dXRGaWxlIiBvciBkaWUgIkZhaWxlZCB0byBvcGVuIGZpbGU6ICQhIjsKKworICAgIHByaW50IEYg
JEluQ29tcGlsZXItPmxpY2Vuc2UoKTsKKworICAgIHByaW50IEYgIiNpZm5kZWYgRXhjZXB0aW9u
Q29kZURlc2NyaXB0aW9uX2hcbiI7CisgICAgcHJpbnQgRiAiI2RlZmluZSBFeGNlcHRpb25Db2Rl
RGVzY3JpcHRpb25faFxuIjsKKyAgICBwcmludCBGICJcbiI7CisgICAgcHJpbnQgRiAibmFtZXNw
YWNlIFdlYkNvcmUge1xuIjsKKyAgICBwcmludCBGICJcbiI7CisgICAgcHJpbnQgRiAidHlwZWRl
ZiBpbnQgRXhjZXB0aW9uQ29kZTtcbiI7CisgICAgcHJpbnQgRiAiXG4iOworICAgIHByaW50IEYg
ImVudW0gRXhjZXB0aW9uVHlwZSB7XG4iOworCisgICAgZm9yIG15ICRleGNlcHRpb25UeXBlIChz
b3J0IGtleXMgJXBhcnNlZEl0ZW1zKSB7CisgICAgICAgIG15ICRjb25kaXRpb25hbCA9ICRwYXJz
ZWRJdGVtc3skZXhjZXB0aW9uVHlwZX17ImNvbmRpdGlvbmFsIn07CisKKyAgICAgICAgcHJpbnQg
RiAiI2lmIEVOQUJMRSgkY29uZGl0aW9uYWwpXG4iIGlmICRjb25kaXRpb25hbDsKKyAgICAgICAg
cHJpbnQgRiAiICAgICR7ZXhjZXB0aW9uVHlwZX1UeXBlLFxuIjsKKyAgICAgICAgcHJpbnQgRiAi
I2VuZGlmXG4iIGlmICRjb25kaXRpb25hbDsKKyAgICB9CisKKyAgICBwcmludCBGICJ9O1xuIjsK
KyAgICBwcmludCBGICJcbiI7CisgICAgcHJpbnQgRiAic3RydWN0IEV4Y2VwdGlvbkNvZGVEZXNj
cmlwdGlvbiB7XG4iOworICAgIHByaW50IEYgIiAgICBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24o
KSB7IH1cbiI7CisgICAgcHJpbnQgRiAiICAgIGV4cGxpY2l0IEV4Y2VwdGlvbkNvZGVEZXNjcmlw
dGlvbihFeGNlcHRpb25Db2RlKTtcbiI7CisgICAgcHJpbnQgRiAiXG4iOworICAgIHByaW50IEYg
IiAgICAvLyB8dHlwZU5hbWV8IGhhcyBzcGFjZXMgYW5kIGlzIHN1aXRhYmxlIGZvciB1c2UgaW4g
ZXhjZXB0aW9uXG4iOworICAgIHByaW50IEYgIiAgICAvLyBkZXNjcmlwdGlvbiBzdHJpbmdzOyBt
YXhpbXVtIGxlbmd0aCBpcyAxMCBjaGFyYWN0ZXJzLlxuIjsKKyAgICBwcmludCBGICIgICAgY29u
c3QgY2hhciogdHlwZU5hbWU7IFxuIjsKKyAgICBwcmludCBGICJcbiI7CisgICAgcHJpbnQgRiAi
ICAgIC8vIHxuYW1lfCBpcyB0aGUgZXhjZXB0aW9uIG5hbWUsIGFsc28gaW50ZW5kZWQgZm9yIHVz
ZSBpbiBleGNlcHRpb25cbiI7CisgICAgcHJpbnQgRiAiICAgIC8vIGRlc2NyaXB0aW9uIHN0cmlu
Z3M7IDAgaWYgbmFtZSBub3Qga25vd247IG1heGltdW0gbGVuZ3RoIGlzIDI3XG4iOworICAgIHBy
aW50IEYgIiAgICAvLyBjaGFyYWN0ZXJzLlxuIjsKKyAgICBwcmludCBGICIgICAgY29uc3QgY2hh
ciogbmFtZTsgXG4iOworICAgIHByaW50IEYgIlxuIjsKKyAgICBwcmludCBGICIgICAgLy8gfGRl
c2NyaXB0aW9ufCBpcyB0aGUgZXhjZXB0aW9uIGRlc2NyaXB0aW9uLCBpbnRlbmRlZCBmb3IgdXNl
IGluXG4iOworICAgIHByaW50IEYgIiAgICAvLyBleGNlcHRpb24gc3RyaW5ncy4gSXQgaXMgYSBt
b3JlIHJlYWRhYmxlIGV4cGxhbmF0aW9uIG9mIGVycm9yLlxuIjsKKyAgICBwcmludCBGICIgICAg
Y29uc3QgY2hhciogZGVzY3JpcHRpb247XG4iOworICAgIHByaW50IEYgIlxuIjsKKyAgICBwcmlu
dCBGICIgICAgLy8gfGNvZGV8IGlzIHRoZSBudW1lcmljIHZhbHVlIG9mIHRoZSBleGNlcHRpb24g
d2l0aGluIGEgcGFydGljdWxhciB0eXBlLlxuIjsKKyAgICBwcmludCBGICIgICAgaW50IGNvZGU7
IFxuIjsKKyAgICBwcmludCBGICJcbiI7CisgICAgcHJpbnQgRiAiICAgIEV4Y2VwdGlvblR5cGUg
dHlwZTtcbiI7CisgICAgcHJpbnQgRiAifTtcbiI7CisgICAgcHJpbnQgRiAiXG4iOworICAgIHBy
aW50IEYgIn0gLy8gbmFtZXNwYWNlIFdlYkNvcmVcbiI7CisgICAgcHJpbnQgRiAiXG4iOworICAg
IHByaW50IEYgIiNlbmRpZiAvLyBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb25faFxuIjsKKworICAg
IGNsb3NlIEY7Cit9CisKK3N1YiBnZW5lcmF0ZUltcGxlbWVudGF0aW9uKCkKK3sKKyAgICBteSAk
cGFyc2VkUGFyYW1ldGVyc1JlZiA9IHNoaWZ0OworICAgIG15ICRwYXJzZWRJdGVtc1JlZiA9IHNo
aWZ0OworCisgICAgbXkgJEY7CisgICAgbXkgJXBhcnNlZEl0ZW1zID0gJXsgJHBhcnNlZEl0ZW1z
UmVmIH07CisKKyAgICBteSAkb3V0cHV0RmlsZSA9ICIkb3V0cHV0RGlyL0V4Y2VwdGlvbkNvZGVE
ZXNjcmlwdGlvbi5jcHAiOworCisgICAgb3BlbiBGLCAiPiRvdXRwdXRGaWxlIiBvciBkaWUgIkZh
aWxlZCB0byBvcGVuIGZpbGU6ICQhIjsKKworICAgIHByaW50IEYgJEluQ29tcGlsZXItPmxpY2Vu
c2UoKTsKKworICAgIHByaW50IEYgIiNpbmNsdWRlIFwiY29uZmlnLmhcIlxuIjsKKyAgICBwcmlu
dCBGICIjaW5jbHVkZSBcIkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5oXCJcbiI7CisgICAgcHJp
bnQgRiAiXG4iOworICAgIHByaW50IEYgIiNpbmNsdWRlIFwiRXhjZXB0aW9uQ29kZS5oXCJcbiI7
CisKKyAgICBmb3IgbXkgJGV4Y2VwdGlvblR5cGUgKHNvcnQga2V5cyAlcGFyc2VkSXRlbXMpIHsK
KyAgICAgICAgbXkgJGNvbmRpdGlvbmFsID0gJHBhcnNlZEl0ZW1zeyRleGNlcHRpb25UeXBlfXsi
Y29uZGl0aW9uYWwifTsKKworICAgICAgICBwcmludCBGICIjaWYgRU5BQkxFKCRjb25kaXRpb25h
bClcbiIgaWYgJGNvbmRpdGlvbmFsOworICAgICAgICBwcmludCBGICIjaW5jbHVkZSBcIiRleGNl
cHRpb25UeXBlLmhcIlxuIjsKKyAgICAgICAgcHJpbnQgRiAiI2VuZGlmXG4iIGlmICRjb25kaXRp
b25hbDsKKyAgICB9CisKKyAgICBwcmludCBGICJcbiI7CisgICAgcHJpbnQgRiAibmFtZXNwYWNl
IFdlYkNvcmUge1xuIjsKKyAgICBwcmludCBGICJcbiI7CisgICAgcHJpbnQgRiAiRXhjZXB0aW9u
Q29kZURlc2NyaXB0aW9uOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24oRXhjZXB0aW9uQ29kZSBl
YylcbiI7CisgICAgcHJpbnQgRiAie1xuIjsKKworICAgIGZvciBteSAkZXhjZXB0aW9uVHlwZSAo
c29ydCBrZXlzICVwYXJzZWRJdGVtcykgeworICAgICAgICAjIERPTUNvcmVFeGNlcHRpb24gbmVl
ZHMgdG8gYmUgbGFzdCBiZWNhdXNlIGl0J3MgYSBjYXRjaC1hbGwuCisgICAgICAgIG5leHQgaWYg
JGV4Y2VwdGlvblR5cGUgZXEgIkRPTUNvcmVFeGNlcHRpb24iOworCisgICAgICAgIG15ICRjb25k
aXRpb25hbCA9ICRwYXJzZWRJdGVtc3skZXhjZXB0aW9uVHlwZX17ImNvbmRpdGlvbmFsIn07CisK
KyAgICAgICAgcHJpbnQgRiAiI2lmIEVOQUJMRSgkY29uZGl0aW9uYWwpXG4iIGlmICRjb25kaXRp
b25hbDsKKyAgICAgICAgcHJpbnQgRiAiICAgIGlmICgke2V4Y2VwdGlvblR5cGV9Ojppbml0aWFs
aXplRGVzY3JpcHRpb24oZWMsIHRoaXMpKVxuIjsKKyAgICAgICAgcHJpbnQgRiAiICAgICAgICBy
ZXR1cm47XG4iOworICAgICAgICBwcmludCBGICIjZW5kaWZcbiIgaWYgJGNvbmRpdGlvbmFsOwor
ICAgIH0KKworICAgIHByaW50IEYgIiAgICBpZiAoRE9NQ29yZUV4Y2VwdGlvbjo6aW5pdGlhbGl6
ZURlc2NyaXB0aW9uKGVjLCB0aGlzKSlcbiI7CisgICAgcHJpbnQgRiAiICAgICAgICByZXR1cm47
XG4iOworICAgIHByaW50IEYgIiAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTtcbiI7CisgICAgcHJp
bnQgRiAifVxuIjsKKyAgICBwcmludCBGICJcbiI7CisgICAgcHJpbnQgRiAifSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZVxuIjsKKworICAgIGNsb3NlIEY7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112831</attachid>
            <date>2011-10-28 01:32:07 -0700</date>
            <delta_ts>2011-10-28 01:53:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70890-20111028013206.patch</filename>
            <type>text/plain</type>
            <size>31136</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDk4NzA4
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMTAt
MjggIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBFeGNlcHRpb25D
b2RlLmNwcCBzaG91bGRuJ3QgbmVlZCB0byBrbm93IGFib3V0IGV2ZXJ5IGZlYXR1cmUgdGhhdCB0
aHJvd3MgZXhjZXB0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzA4OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgYSBjb2RlIGdlbmVyYXRpb24gc3RlcC4KKworICAgICAgICAqIFNvdXJjZS9j
bWFrZS9XZWJLaXRNYWNyb3MuY21ha2U6CisKIDIwMTEtMTAtMjcgIFByaWl0IExhZXMgIDxwbGFl
c0BwbGFlcy5vcmc+CiAKICAgICAgICAgW0dUS10gQ3JlYXRlIC54eiB0YXJiYWxscyBkdXJpbmcg
ZGlzdGNoZWNrCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA5ODcwOCkKKysrIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDExLTEwLTI4
ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRXhjZXB0aW9uQ29k
ZS5jcHAgc2hvdWxkbid0IG5lZWQgdG8ga25vdyBhYm91dCBldmVyeSBmZWF0dXJlIHRoYXQgdGhy
b3dzIGV4Y2VwdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTcwODkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgR2VuZXJhdGUgdGhlIGZlYXR1cmUtc3BlY2lmaWMgcGFydHMgb2YgRXhjZXB0aW9uQ29k
ZS5jcHAgZnJvbSBhICIuaW4iCisgICAgICAgIGZpbGUuICBUaGlzIGlzIGFuIGluY3JlbWVudGFs
IHN0ZXAgdG93YXJkcyBpbmxpbmluZworICAgICAgICBnZXRFeGNlcHRpb25Db2RlRGVzY3JpcHRp
b24gaW50byBpdHMgY2FsbGVycyBhbmQgcmVwbGFjaW5nIHRoZSBzd2l0Y2gKKyAgICAgICAgc3Rh
dGVtZW50cyBhdCB0aG9zZSBsb2NhdGlvbnMgd2l0aCBhdXRvZ2VuZXJhdGVkIGNvZGUuCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBDb2RlR2VuZXJhdG9ycy5wcmk6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwL1dl
YkNvcmUuZ3lwOgorICAgICAgICAqIFdlYkNvcmUuZ3lwL3NjcmlwdHMvYWN0aW9uX21ha2VuYW1l
cy5weToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRET01FeGNlcHRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKToKKyAgICAg
ICAgKiBkb20vRE9NQ29yZUV4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01Db3Jl
RXhjZXB0aW9uOjppbml0aWFsaXplRGVzY3JpcHRpb24pOgorICAgICAgICAqIGRvbS9FeGNlcHRp
b25Db2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlv
bik6CisgICAgICAgICogZG9tL0V4Y2VwdGlvbkNvZGUuaDoKKyAgICAgICAgKiBkb20vRXhjZXB0
aW9uQ29kZURlc2NyaXB0aW9uLmluOiBBZGRlZC4KKyAgICAgICAgKiBkb20vbWFrZV9leGNlcHRp
b25fY29kZV9kZXNjcmlwdGlvbi5wbDogQWRkZWQuCisgICAgICAgIChkZWZhdWx0SXRlbUZhY3Rv
cnkpOgorICAgICAgICAoZ2VuZXJhdGVDb2RlKToKKyAgICAgICAgKGdlbmVyYXRlSGVhZGVyKToK
KyAgICAgICAgKGdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorCiAyMDExLTEwLTI4ICBKb2NoZW4g
RWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBhbGxvd1Njcmlw
dEZyb21Tb3VyY2UgY2FsbGJhY2sgdG8gRnJhbWVMb2FkZXJDbGllbnQKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiA5ODcwMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMzMyLDYgKzIzMzIsMTAgQEAgR0VORVJBVEVfRVZFTlRf
RkFDVE9SWSgke1dFQkNPUkVfRElSfS9kbwogQUREX1NPVVJDRV9XRUJDT1JFX0RFUklWRURfREVQ
RU5ERU5DSUVTKCR7V0VCQ09SRV9ESVJ9L2RvbS9FdmVudE5hbWVzLmNwcCBFdmVudFRhcmdldElu
dGVyZmFjZXMuaCkKIAogCitHRU5FUkFURV9FWENFUFRJT05fQ09ERV9ERVNDUklQVElPTigke1dF
QkNPUkVfRElSfS9kb20vRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmluIEV4Y2VwdGlvbkNvZGVE
ZXNjcmlwdGlvbi5jcHApCitMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMgJHtERVJJVkVEX1NP
VVJDRVNfV0VCQ09SRV9ESVJ9L0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5jcHApCisKKwogR0VO
RVJBVEVfRk9OVF9OQU1FUygke1dFQkNPUkVfRElSfS9jc3MvV2ViS2l0Rm9udEZhbWlseU5hbWVz
LmluKQogTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNP
UkVfRElSfS9XZWJLaXRGb250RmFtaWx5TmFtZXMuY3BwKQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Db2RlR2VuZXJhdG9ycy5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ29kZUdl
bmVyYXRvcnMucHJpCShyZXZpc2lvbiA5ODcwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NvZGVHZW5l
cmF0b3JzLnByaQkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsOCBAQCBFVkVOVF9GQUNUT1JZ
ID0gJCRQV0QvZG9tL0V2ZW50RmFjdG9yeS5pCiAKIEVWRU5UX1RBUkdFVF9GQUNUT1JZID0gJCRQ
V0QvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgogCitFWENFUFRJT05fQ09ERV9ERVNDUklQVElP
TiA9ICQkUFdEL2RvbS9FeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaW4KKwogQ09MT1JEQVRBX0dQ
RVJGID0gJCRQV0QvcGxhdGZvcm0vQ29sb3JEYXRhLmdwZXJmCiAKIFdBTERPQ1NTUFJPUFMgPSAk
JFBXRC9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgpAQCAtNzcwLDYgKzc3MiwxNCBAQCBldmVudHRh
cmdldGZhY3RvcnkuY29tbWFuZHMgPSBwZXJsIC1JJCRQCiBldmVudHRhcmdldGZhY3RvcnkuZGVw
ZW5kcyA9ICQkUFdEL2RvbS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwgJCRFVkVOVF9UQVJHRVRfRkFD
VE9SWQogYWRkRXh0cmFDb21waWxlcihldmVudHRhcmdldGZhY3RvcnkpCiAKKyMgR0VORVJBVE9S
IDUtRzoKK2V4Y2VwdGlvbmNvZGVkZXNjcmlwdGlvbi5vdXRwdXQgPSAkJHtXQ19HRU5FUkFURURf
U09VUkNFU19ESVJ9L0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5jcHAKK2V4Y2VwdGlvbmNvZGVk
ZXNjcmlwdGlvbi5pbnB1dCA9IEVYQ0VQVElPTl9DT0RFX0RFU0NSSVBUSU9OCitleGNlcHRpb25j
b2RlZGVzY3JpcHRpb24ud2tTY3JpcHQgPSAkJFBXRC9kb20vbWFrZV9leGNlcHRpb25fY29kZV9k
ZXNjcmlwdGlvbi5wbAorZXhjZXB0aW9uY29kZWRlc2NyaXB0aW9uLmNvbW1hbmRzID0gcGVybCAt
SSQkUFdEL2JpbmRpbmdzL3NjcmlwdHMgJCRldmVudGZhY3Rvcnkud2tTY3JpcHQgLS1pbnB1dCAk
JEVYQ0VQVElPTl9DT0RFX0RFU0NSSVBUSU9OIC0tb3V0cHV0RGlyICQkV0NfR0VORVJBVEVEX1NP
VVJDRVNfRElSCitleGNlcHRpb25jb2RlZGVzY3JpcHRpb24uZGVwZW5kcyA9ICQkUFdEL2RvbS9t
YWtlX2V4Y2VwdGlvbl9jb2RlX2Rlc2NyaXB0aW9uLnBsICQkRVhDRVBUSU9OX0NPREVfREVTQ1JJ
UFRJT04KK2FkZEV4dHJhQ29tcGlsZXIoZXhjZXB0aW9uY29kZWRlc2NyaXB0aW9uKQorCiAjIEdF
TkVSQVRPUiA4LUE6CiBlbnRpdGllcy5vdXRwdXQgPSAkJHtXQ19HRU5FUkFURURfU09VUkNFU19E
SVJ9L0hUTUxFbnRpdHlUYWJsZS5jcHAKIGVudGl0aWVzLmlucHV0ID0gSFRNTF9FTlRJVElFUwpJ
bmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiA5ODcwNCkKKysrIFNv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTU4OCw2
ICs1ODgsNyBAQCBhbGwgOiBcCiAgICAgQ29sb3JEYXRhLmNwcCBcCiAgICAgRXZlbnRGYWN0b3J5
LmNwcCBcCiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmggXAorICAgIEV4Y2VwdGlvbkNvZGVE
ZXNjcmlwdGlvbi5jcHAgXAogICAgIEhUTUxFbGVtZW50RmFjdG9yeS5jcHAgXAogICAgIEhUTUxF
bnRpdHlUYWJsZS5jcHAgXAogICAgIEhUTUxOYW1lcy5jcHAgXApAQCAtODU2LDYgKzg1Nyw5IEBA
IEV2ZW50RmFjdG9yeS5jcHAgRXZlbnRIZWFkZXJzLmggRXZlbnRJbnQKIEV2ZW50VGFyZ2V0SGVh
ZGVycy5oIEV2ZW50VGFyZ2V0SW50ZXJmYWNlcy5oIDogZG9tL21ha2VfZXZlbnRfZmFjdG9yeS5w
bCBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCiAJcGVybCAtSSAkKFdlYkNvcmUpL2JpbmRpbmdz
L3NjcmlwdHMgJDwgLS1pbnB1dCAkKFdlYkNvcmUpL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4K
IAorRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmNwcCBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24u
aCA6IGRvbS9tYWtlX2V4Y2VwdGlvbl9jb2RlX2Rlc2NyaXB0aW9uLnBsIGRvbS9FeGNlcHRpb25D
b2RlRGVzY3JpcHRpb24uaW4KKwlwZXJsIC1JICQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cyAk
PCAtLWlucHV0ICQoV2ViQ29yZSkvZG9tL0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5pbgorCiAj
IC0tLS0tLS0tCiAgCiAjIE1hdGhNTCB0YWcgYW5kIGF0dHJpYnV0ZSBuYW1lcywgYW5kIGVsZW1l
bnQgZmFjdG9yeQpJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDk4NzA0KQorKysg
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTY5Niw2ICs2
OTYsOSBAQCBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0V2ZW50RmFjdG9yeS5jcHAgCiBEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0V2ZW50VGFyZ2V0SGVhZGVycy5oIERlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmg6ICQoV2ViQ29yZSkvZG9tL21ha2VfZXZlbnRfZmFj
dG9yeS5wbCAkKFdlYkNvcmUpL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KIAkkKEFNX1ZfR0VO
KSQoUEVSTCkgLUkkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMgJDwgLS1pbnB1dCAkKFdlYkNv
cmUpL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gLS1vdXRwdXREaXIgIiQoR0VOU09VUkNFU19X
RUJDT1JFKSIKIAorRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9FeGNlcHRpb25Db2RlRGVzY3JpcHRp
b24uY3BwIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmg6
ICQoV2ViQ29yZSkvZG9tL21ha2VfZXhjZXB0aW9uX2NvZGVfZGVzY3JpcHRpb24ucGwgJChXZWJD
b3JlKS9kb20vRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmluCisJJChBTV9WX0dFTikkKFBFUkwp
IC1JJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzICQ8IC0taW5wdXQgJChXZWJDb3JlKS9kb20v
RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmluIC0tb3V0cHV0RGlyICIkKEdFTlNPVVJDRVNfV0VC
Q09SRSkiCisKICMgQWxsIFdlYiBJbnNwZWN0b3IgZ2VuZXJhdGVkIGZpbGVzIGFyZSBjcmVhdGVk
IHdpdGggdGhpcyBvbmUgY2FsbCB0byBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5CiBEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0luc3BlY3RvclByb3RvY29sVmVyc2lvbi5oIDogJChXZWJDb3JlKS9p
bnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gJChXZWJDb3JlKS9pbnNwZWN0b3IvZ2VuZXJhdGUtaW5z
cGVjdG9yLXByb3RvY29sLXZlcnNpb24KIAkkKFBZVEhPTikgJChXZWJDb3JlKS9pbnNwZWN0b3Iv
Z2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLXZlcnNpb24gLW8gJChHRU5TT1VSQ0VTX1dFQkNP
UkUpL0luc3BlY3RvclByb3RvY29sVmVyc2lvbi5oICQoV2ViQ29yZSkvaW5zcGVjdG9yL0luc3Bl
Y3Rvci5qc29uCkBAIC04OTIsOCArODk1LDEwIEBAIEVYVFJBX0RJU1QgKz0gXAogCVNvdXJjZS9X
ZWJDb3JlL2Nzcy9XZWJLaXRGb250RmFtaWx5TmFtZXMuaW4gXAogCVNvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudEZhY3RvcnkuaW4gXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rv
cnkuaW4gXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaW4g
XAogCVNvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsIFwKIAlTb3VyY2UvV2ViQ29yZS9k
b20vbWFrZV9ldmVudF9mYWN0b3J5LnBsIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9leGNl
cHRpb25fY29kZV9kZXNjcmlwdGlvbi5wbCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0
cmlidXRlTmFtZXMuaW4gXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhZ05hbWVzLmluIFwK
IAlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9jcmVhdGUtaHRtbC1lbnRpdHktdGFibGUgXApJ
bmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiA5ODcwMSkKKysrIFNv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTE0LDYg
KzE0LDcgQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0V2ZW50SW50ZXJmYWNlcy5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0V2ZW50VGFy
Z2V0SGVhZGVycy5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0V2ZW50VGFyZ2V0SW50ZXJm
YWNlcy5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlv
bi5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCBc
CiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9IVE1MRWxlbWVudEZhY3RvcnkuaCBcCiAJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9IVE1MRW50aXR5VGFibGUuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkJKHJldmlzaW9uIDk4NzAxKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MDc5LDYgKzcwNzksOCBAQAogICAgICAgICAgICAgJzwoUFJPRFVDVF9E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvRXZlbnRJbnRlcmZhY2VzLmgnLAogICAgICAgICAg
ICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvRXZlbnRUYXJnZXRIZWFk
ZXJzLmgnLAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmgnLAorICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmNwcCcsCisg
ICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9FeGNlcHRp
b25Db2RlRGVzY3JpcHRpb24uaCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9IVE1MRWxlbWVudEZhY3RvcnkuY3BwJywKICAgICAgICAgICAgICc8
KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0hUTUxFbGVtZW50RmFjdG9yeS5o
JywKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0hU
TUxFbnRpdHlUYWJsZS5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2Vi
Q29yZS5neXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29y
ZS5neXAJKHJldmlzaW9uIDk4NzAxKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2Vi
Q29yZS5neXAJKHdvcmtpbmcgY29weSkKQEAgLTY5Niw2ICs2OTYsMjQgQEAKICAgICAgICAgICBd
LAogICAgICAgICB9LAogICAgICAgICB7CisgICAgICAgICAgJ2FjdGlvbl9uYW1lJzogJ0V4Y2Vw
dGlvbkNvZGVEZXNjcmlwdGlvbicsCisgICAgICAgICAgJ2lucHV0cyc6IFsKKyAgICAgICAgICAg
ICcuLi9kb20vbWFrZV9leGNlcHRpb25fY29kZV9kZXNjcmlwdGlvbi5wbCcsCisgICAgICAgICAg
ICAnLi4vZG9tL0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5pbicsCisgICAgICAgICAgXSwKKyAg
ICAgICAgICAnb3V0cHV0cyc6IFsKKyAgICAgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVf
RElSKS93ZWJraXQvRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmNwcCcsCisgICAgICAgICAgICAn
PChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0L0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlv
bi5oJywKKyAgICAgICAgICBdLAorICAgICAgICAgICdhY3Rpb24nOiBbCisgICAgICAgICAgICAn
cHl0aG9uJywKKyAgICAgICAgICAgICdzY3JpcHRzL2FjdGlvbl9tYWtlbmFtZXMucHknLAorICAg
ICAgICAgICAgJzxAKF9vdXRwdXRzKScsCisgICAgICAgICAgICAnLS0nLAorICAgICAgICAgICAg
JzxAKF9pbnB1dHMpJywKKyAgICAgICAgICBdLAorICAgICAgICB9LAorICAgICAgICB7CiAgICAg
ICAgICAgJ2FjdGlvbl9uYW1lJzogJ01hdGhNTE5hbWVzJywKICAgICAgICAgICAnaW5wdXRzJzog
WwogICAgICAgICAgICAgJy4uL2RvbS9tYWtlX25hbWVzLnBsJywKQEAgLTEwMTYsNiArMTAzNCw3
IEBACiAgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJraXQvRXZlbnRJbnRl
cmZhY2VzLmgnLAogICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0L0V2
ZW50VGFyZ2V0SGVhZGVycy5oJywKICAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIp
L3dlYmtpdC9FdmVudFRhcmdldEludGVyZmFjZXMuaCcsCisgICAgICAgICc8KFNIQVJFRF9JTlRF
Uk1FRElBVEVfRElSKS93ZWJraXQvRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmNwcCcsCiAgICAg
ICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJraXQvVXNlckFnZW50U3R5bGVTaGVl
dHNEYXRhLmNwcCcsCiAgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJraXQv
VjhIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcCcsCiAgICAgICAgICc8KFNIQVJFRF9JTlRF
Uk1FRElBVEVfRElSKS93ZWJraXQvWExpbmtOYW1lcy5jcHAnLApJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXAvc2NyaXB0cy9hY3Rpb25fbWFrZW5hbWVzLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL3NjcmlwdHMvYWN0aW9uX21ha2VuYW1lcy5weQko
cmV2aXNpb24gOTg3MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9zY3JpcHRzL2Fj
dGlvbl9tYWtlbmFtZXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsOCBAQCBkZWYg
bWFpbihhcmdzKToKICAgICAgICAgaW5wdXRBYnNQb3NpeCA9IGlucHV0QWJzLnJlcGxhY2Uob3Mu
cGF0aC5zZXAsIHBvc2l4cGF0aC5zZXApCiAgICAgICAgIGlucHV0QmFzZW5hbWUgPSBvcy5wYXRo
LmJhc2VuYW1lKGlucHV0KQogICAgICAgICBpZiBpbnB1dEJhc2VuYW1lID09ICdtYWtlX25hbWVz
LnBsJyBcCi0gICAgICAgICAgICBvciBpbnB1dEJhc2VuYW1lID09ICdtYWtlX2V2ZW50X2ZhY3Rv
cnkucGwnOgorICAgICAgICAgICAgb3IgaW5wdXRCYXNlbmFtZSA9PSAnbWFrZV9ldmVudF9mYWN0
b3J5LnBsJyBcCisgICAgICAgICAgICBvciBpbnB1dEJhc2VuYW1lID09ICdtYWtlX2V4Y2VwdGlv
bl9jb2RlX2Rlc2NyaXB0aW9uLnBsJzoKICAgICAgICAgICAgIGFzc2VydCBtYWtlTmFtZXNJbnB1
dCA9PSBOb25lCiAgICAgICAgICAgICBtYWtlTmFtZXNJbnB1dCA9IGlucHV0QWJzCiAgICAgICAg
IGVsaWYgaW5wdXRCYXNlbmFtZS5lbmRzd2l0aCgnVGFnTmFtZXMuaW4nKSBcCkBAIC0xMjksNyAr
MTMwLDkgQEAgZGVmIG1haW4oYXJncyk6CiAgICAgICAgICAgICAgb3IgaW5wdXRCYXNlbmFtZS5l
bmRzd2l0aCgnYXR0cnMuaW4nKToKICAgICAgICAgICAgIGFzc2VydCBhdHRySW5wdXQgPT0gTm9u
ZQogICAgICAgICAgICAgYXR0cklucHV0ID0gaW5wdXRBYnNQb3NpeAotICAgICAgICBlbGlmIGlu
cHV0QmFzZW5hbWUuZW5kc3dpdGgoJ0V2ZW50RmFjdG9yeS5pbicpIG9yIGlucHV0QmFzZW5hbWUu
ZW5kc3dpdGgoJ0V2ZW50VGFyZ2V0RmFjdG9yeS5pbicpOgorICAgICAgICBlbGlmIGlucHV0QmFz
ZW5hbWUuZW5kc3dpdGgoJ0V2ZW50RmFjdG9yeS5pbicpIFwKKyAgICAgICAgICAgIG9yIGlucHV0
QmFzZW5hbWUuZW5kc3dpdGgoJ0V2ZW50VGFyZ2V0RmFjdG9yeS5pbicpIFwKKyAgICAgICAgICAg
IG9yIGlucHV0QmFzZW5hbWUuZW5kc3dpdGgoJ0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5pbicp
OgogICAgICAgICAgICAgZXZlbnRzSW5wdXQgPSBpbnB1dEFic1Bvc2l4CiAgICAgICAgIGVsaWYg
aW5wdXRCYXNlbmFtZS5lbmRzd2l0aCgnTmFtZXMuaW4nKToKICAgICAgICAgICAgIG9wdGlvbnMu
YXBwZW5kKGlucHV0QWJzUG9zaXgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gOTg3MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNTYyLDYgKzU2
MiwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmgiCisJCQkJ
PgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSFRNTEVsZW1lbnRG
YWN0b3J5LmgiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gOTg3MDEpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTMxOTksNiArMzE5OSw4IEBACiAJCTk3MjhDMzE0MTI2OEU0MzkwMDQxRTg5QiAv
KiBNYXJrdXBBY2N1bXVsYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTcyOEMzMTIxMjY4RTQzOTAwNDFFODlCIC8qIE1hcmt1cEFjY3VtdWxhdG9y
LmggKi87IH07CiAJCTk3Mzg4OUEwMTE2RUE5REMwMEFERjMxMyAvKiBEb2N1bWVudFdyaXRlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzM4ODk5
RTExNkVBOURDMDBBREYzMTMgLyogRG9jdW1lbnRXcml0ZXIuY3BwICovOyB9OwogCQk5NzM4ODlB
MTExNkVBOURDMDBBREYzMTMgLyogRG9jdW1lbnRXcml0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3Mzg4OTlGMTE2RUE5REMwMEFERjMxMyAvKiBE
b2N1bWVudFdyaXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTk3M0RDNjNGMTQ1QTk0MDkwMDI4NDJDMiAvKiBFeGNlcHRpb25Db2RlRGVzY3Jp
cHRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTczREM2M0QxNDVBOTQwOTAwMjg0MkMyIC8qIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5jcHAg
Ki87IH07CisJCTk3M0RDNjQwMTQ1QTk0MDkwMDI4NDJDMiAvKiBFeGNlcHRpb25Db2RlRGVzY3Jp
cHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3
M0RDNjNFMTQ1QTk0MDkwMDI4NDJDMiAvKiBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaCAqLzsg
fTsKIAkJOTczRTMyNTYxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3M0UzMjU0
MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJjZUxvYWROb3RpZmllci5jcHAgKi87IH07CiAJCTk3
M0UzMjU3MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJjZUxvYWROb3RpZmllci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTczRTMyNTUxMDg4M0I3QzAw
NUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTc1MkQzOEQxNDEzMTA0QjAwMzMwNUJEIC8qIEpT
SFRNTFNwYW5FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk3NTJEMzhCMTQxMzEwNEIwMDMzMDVCRCAvKiBKU0hUTUxTcGFuRWxlbWVudC5j
cHAgKi87IH07CkBAIC0xMDM0MSw2ICsxMDM0Myw4IEBACiAJCTk3MjhDMzEyMTI2OEU0MzkwMDQx
RTg5QiAvKiBNYXJrdXBBY2N1bXVsYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNYXJrdXBBY2N1bXVsYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
NzM4ODk5RTExNkVBOURDMDBBREYzMTMgLyogRG9jdW1lbnRXcml0ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRXcml0ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5NzM4ODk5RjExNkVBOURDMDBBREYzMTMgLyogRG9jdW1lbnRX
cml0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRXcml0ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTczREM2M0QxNDVBOTQwOTAwMjg0MkMy
IC8qIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5NzNEQzYzRTE0NUE5NDA5MDAyODQyQzIgLyogRXhjZXB0aW9uQ29k
ZURlc2NyaXB0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4Y2VwdGlv
bkNvZGVEZXNjcmlwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzNFMzI1
NDEwODgzQjdDMDA1QkM0OTMgLyogUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzNFMzI1NTEwODgzQjdDMDA1QkM0OTMgLyogUmVz
b3VyY2VMb2FkTm90aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVz
b3VyY2VMb2FkTm90aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc1MkQz
OEIxNDEzMTA0QjAwMzMwNUJEIC8qIEpTSFRNTFNwYW5FbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTFNwYW5FbGVtZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MTc5LDYgKzE1MTgzLDggQEAKIAkJCQk5NzBCNzI4OTE0
NEZGQUM2MDBGMDBBMzcgLyogRXZlbnRJbnRlcmZhY2VzLmggKi8sCiAJCQkJOTdBQTNDQTMxNDUy
MzdDQzAwM0UxREE2IC8qIEV2ZW50VGFyZ2V0SGVhZGVycy5oICovLAogCQkJCTk3QUEzQ0E0MTQ1
MjM3Q0MwMDNFMURBNiAvKiBFdmVudFRhcmdldEludGVyZmFjZXMuaCAqLywKKwkJCQk5NzNEQzYz
RDE0NUE5NDA5MDAyODQyQzIgLyogRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmNwcCAqLywKKwkJ
CQk5NzNEQzYzRTE0NUE5NDA5MDAyODQyQzIgLyogRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmgg
Ki8sCiAJCQkJQTE3QzgxMjAwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5j
cHAgKi8sCiAJCQkJQTE3QzgxMjEwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9y
eS5oICovLAogCQkJCUE4QkMwNDkxMTIxNEY2OTYwMEI1RjEyMiAvKiBIVE1MRW50aXR5VGFibGUu
Y3BwICovLApAQCAtMjQ1MjMsNiArMjQ1MjksNyBAQAogCQkJCTk3NjY1MDEzMTQ0RkFBNDIwMEY2
QkI1MSAvKiBFdmVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUEwRUUwREY2MTQ0Rjgy
NTUwMEY4MEIwRCAvKiBXZWJHTERlYnVnUmVuZGVyZXJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBMEVFMERGODE0NEY4MjU1MDBGODBCMEQgLyogV2ViR0xEZWJ1Z1NoYWRlcnMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTk3M0RDNjQwMTQ1QTk0MDkwMDI4NDJDMiAvKiBFeGNlcHRpb25Db2RlRGVz
Y3JpcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUEzQ0E1MTQ1MjM3Q0MwMDNFMURBNiAv
KiBFdmVudFRhcmdldEhlYWRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUEzQ0E2MTQ1MjM3
Q0MwMDNFMURBNiAvKiBFdmVudFRhcmdldEludGVyZmFjZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk3MEI3MjhBMTQ0RkZBQzYwMEYwMEEzNyAvKiBFdmVudEludGVyZmFjZXMuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjczNjYsNiArMjczNzMsNyBAQAogCQkJCTk3OEQwN0NFMTQ1QTEwMzcwMDk2OTA4
RCAvKiBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjA5
MDg3RjE0NDRGREIyMDAwMjg5MTcgLyogU2Nyb2xsYmFyVGhlbWUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOUIzNzVFREExNDQ3OEEwMTAwRjNDQUU1IC8qIE1pY3JvRGF0YUl0ZW1MaXN0LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTk3M0RDNjNGMTQ1QTk0MDkwMDI4NDJDMiAvKiBFeGNlcHRpb25D
b2RlRGVzY3JpcHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlBRjJENkMxNDQzNUQyMTAw
MTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0OUZDN0E1MDE0NDRBRjVGMDBBNUQ4NjQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTcxQ0NCNDlDMTQ0ODI0QUMwMEM2NzZENiAvKiBJbWFnZUJ5U2l6
ZUNhY2hlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01CaW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuY3BwCShyZXZpc2lvbiA5ODcwMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNCw3ICsy
MTQsNyBAQCB2b2lkIHNldERPTUV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEV4CiAKICAgICBK
U1ZhbHVlIGVycm9yT2JqZWN0OwogICAgIHN3aXRjaCAoZGVzY3JpcHRpb24udHlwZSkgewotICAg
ICAgICBjYXNlIERPTUV4Y2VwdGlvblR5cGU6CisgICAgICAgIGNhc2UgRE9NQ29yZUV4Y2VwdGlv
blR5cGU6CiAgICAgICAgICAgICBlcnJvck9iamVjdCA9IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0
LCBET01Db3JlRXhjZXB0aW9uOjpjcmVhdGUoZGVzY3JpcHRpb24pKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIFJhbmdlRXhjZXB0aW9uVHlwZToKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCShyZXZpc2lvbiA5ODcwMSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NTksNyArNjU5
LDcgQEAgdm9pZCBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oaW50IGV4Y2VwdAogCiAgICAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGV4Y2VwdGlvbjsKICAgICBzd2l0Y2ggKGRlc2NyaXB0aW9uLnR5
cGUpIHsKLSAgICBjYXNlIERPTUV4Y2VwdGlvblR5cGU6CisgICAgY2FzZSBET01Db3JlRXhjZXB0
aW9uVHlwZToKICAgICAgICAgZXhjZXB0aW9uID0gdG9WOChET01Db3JlRXhjZXB0aW9uOjpjcmVh
dGUoZGVzY3JpcHRpb24pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSYW5nZUV4Y2VwdGlv
blR5cGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRE9NQ29yZUV4Y2VwdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTUNvcmVFeGNlcHRpb24uY3BwCShyZXZp
c2lvbiA5ODcwMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9ET01Db3JlRXhjZXB0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCBib29sIERPTUNvcmVFeGNlcHRpb246Omlu
aXRpYWxpemVEZXNjcmlwCiB7CiAgICAgZGVzY3JpcHRpb24tPnR5cGVOYW1lID0gIkRPTSI7CiAg
ICAgZGVzY3JpcHRpb24tPmNvZGUgPSBlYzsKLSAgICBkZXNjcmlwdGlvbi0+dHlwZSA9IERPTUV4
Y2VwdGlvblR5cGU7CisgICAgZGVzY3JpcHRpb24tPnR5cGUgPSBET01Db3JlRXhjZXB0aW9uVHlw
ZTsKIAogICAgIHNpemVfdCB0YWJsZVNpemUgPSBXVEZfQVJSQVlfTEVOR1RIKGNvcmVFeGNlcHRp
b25OYW1lcyk7CiAgICAgc2l6ZV90IHRhYmxlSW5kZXggPSBlYyAtIElOREVYX1NJWkVfRVJSOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Db2RlLmNwcAkocmV2aXNpb24gOTg3MDEpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDY1ICsyNiwxNSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKIAotI2luY2x1ZGUgIkRPTUNvcmVFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJFdmVu
dEV4Y2VwdGlvbi5oIgotI2lmIEVOQUJMRShCTE9CKQotI2luY2x1ZGUgIkZpbGVFeGNlcHRpb24u
aCIKLSNlbmRpZgotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotI2luY2x1ZGUgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLmgiCi0jZW5kaWYKLSNpZiBFTkFCTEUoQkxPQikKLSNpbmNsdWRlICJP
cGVyYXRpb25Ob3RBbGxvd2VkRXhjZXB0aW9uLmgiCi0jZW5kaWYKLSNpbmNsdWRlICJSYW5nZUV4
Y2VwdGlvbi5oIgotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0jaW5jbHVkZSAiU1FMRXhjZXB0
aW9uLmgiCi0jZW5kaWYKLSNpZiBFTkFCTEUoU1ZHKQotI2luY2x1ZGUgIlNWR0V4Y2VwdGlvbi5o
IgotI2VuZGlmCi0jaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uaCIKLSNpbmNsdWRl
ICJYUGF0aEV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIEZJWE1FOiBJbmxpbmUgdGhpcyBmdW5jdGlv
biBpbnRvIGl0cyBjYWxsZXJzLgogdm9pZCBnZXRFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24oRXhj
ZXB0aW9uQ29kZSBlYywgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKIHsK
ICAgICBBU1NFUlQoZWMpOwotCi0gICAgaWYgKEV2ZW50RXhjZXB0aW9uOjppbml0aWFsaXplRGVz
Y3JpcHRpb24oZWMsICZkZXNjcmlwdGlvbikpCi0gICAgICAgIHJldHVybjsKLSNpZiBFTkFCTEUo
QkxPQikKLSAgICBpZiAoRmlsZUV4Y2VwdGlvbjo6aW5pdGlhbGl6ZURlc2NyaXB0aW9uKGVjLCAm
ZGVzY3JpcHRpb24pKQotICAgICAgICByZXR1cm47Ci0jZW5kaWYKLSNpZiBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKLSAgICBpZiAoSURCRGF0YWJhc2VFeGNlcHRpb246OmluaXRpYWxpemVEZXNj
cmlwdGlvbihlYywgJmRlc2NyaXB0aW9uKSkKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0jaWYg
RU5BQkxFKEJMT0IpCi0gICAgaWYgKE9wZXJhdGlvbk5vdEFsbG93ZWRFeGNlcHRpb246OmluaXRp
YWxpemVEZXNjcmlwdGlvbihlYywgJmRlc2NyaXB0aW9uKSkKLSAgICAgICAgcmV0dXJuOwotI2Vu
ZGlmCi0gICAgaWYgKFJhbmdlRXhjZXB0aW9uOjppbml0aWFsaXplRGVzY3JpcHRpb24oZWMsICZk
ZXNjcmlwdGlvbikpCi0gICAgICAgIHJldHVybjsKLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQot
ICAgIGlmIChTUUxFeGNlcHRpb246OmluaXRpYWxpemVEZXNjcmlwdGlvbihlYywgJmRlc2NyaXB0
aW9uKSkKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0jaWYgRU5BQkxFKFNWRykKLSAgICBpZiAo
U1ZHRXhjZXB0aW9uOjppbml0aWFsaXplRGVzY3JpcHRpb24oZWMsICZkZXNjcmlwdGlvbikpCi0g
ICAgICAgIHJldHVybjsKLSNlbmRpZgotICAgIGlmIChYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbjo6
aW5pdGlhbGl6ZURlc2NyaXB0aW9uKGVjLCAmZGVzY3JpcHRpb24pKQotICAgICAgICByZXR1cm47
Ci0gICAgaWYgKFhQYXRoRXhjZXB0aW9uOjppbml0aWFsaXplRGVzY3JpcHRpb24oZWMsICZkZXNj
cmlwdGlvbikpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoRE9NQ29yZUV4Y2VwdGlvbjo6aW5p
dGlhbGl6ZURlc2NyaXB0aW9uKGVjLCAmZGVzY3JpcHRpb24pKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBkZXNjcmlwdGlvbiA9IEV4Y2VwdGlvbkNv
ZGVEZXNjcmlwdGlvbihlYyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Db2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUuaAkocmV2aXNpb24gOTg3MDEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vRXhjZXB0aW9uQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw2ICsxOSw4IEBA
CiAjaWZuZGVmIEV4Y2VwdGlvbkNvZGVfaAogI2RlZmluZSBFeGNlcHRpb25Db2RlX2gKIAorI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICAvLyBUaGUgRE9NIHN0YW5kYXJkcyB1c2UgdW5zaWduZWQgc2hvcnQgZm9yIGV4Y2Vw
dGlvbiBjb2Rlcy4KQEAgLTYzLDM3ICs2NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgREFUQV9DTE9ORV9FUlIgPSAyNQogICAgIH07CiAKLSAgICBlbnVtIEV4Y2VwdGlvblR5cGUg
ewotICAgICAgICBET01FeGNlcHRpb25UeXBlLAotICAgICAgICBSYW5nZUV4Y2VwdGlvblR5cGUs
Ci0gICAgICAgIEV2ZW50RXhjZXB0aW9uVHlwZSwKLSAgICAgICAgWE1MSHR0cFJlcXVlc3RFeGNl
cHRpb25UeXBlLAotICAgICAgICBYUGF0aEV4Y2VwdGlvblR5cGUKLSNpZiBFTkFCTEUoU1ZHKQot
ICAgICAgICAsIFNWR0V4Y2VwdGlvblR5cGUKLSNlbmRpZgotI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpCi0gICAgICAgICwgU1FMRXhjZXB0aW9uVHlwZQotI2VuZGlmCi0jaWYgRU5BQkxFKEJMT0Ip
IHx8IEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICAgICAgLCBGaWxlRXhjZXB0aW9uVHlwZQotI2Vu
ZGlmCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0gICAgICAgICwgSURCRGF0YWJhc2VF
eGNlcHRpb25UeXBlCi0jZW5kaWYKLSNpZiBFTkFCTEUoQkxPQikgfHwgRU5BQkxFKEZJTEVfU1lT
VEVNKQotICAgICAgICAsIE9wZXJhdGlvbk5vdEFsbG93ZWRFeGNlcHRpb25UeXBlCi0jZW5kaWYK
LSAgICB9OwotCi0KLSAgICBzdHJ1Y3QgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIHsKLSAgICAg
ICAgY29uc3QgY2hhciogdHlwZU5hbWU7IC8vIGhhcyBzcGFjZXMgYW5kIGlzIHN1aXRhYmxlIGZv
ciB1c2UgaW4gZXhjZXB0aW9uIGRlc2NyaXB0aW9uIHN0cmluZ3M7IG1heGltdW0gbGVuZ3RoIGlz
IDEwIGNoYXJhY3RlcnMKLSAgICAgICAgY29uc3QgY2hhciogbmFtZTsgLy8gZXhjZXB0aW9uIG5h
bWUsIGFsc28gaW50ZW5kZWQgZm9yIHVzZSBpbiBleGNlcHRpb24gZGVzY3JpcHRpb24gc3RyaW5n
czsgMCBpZiBuYW1lIG5vdCBrbm93bjsgbWF4aW11bSBsZW5ndGggaXMgMjcgY2hhcmFjdGVycwot
ICAgICAgICBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbjsgLy8gZXhjZXB0aW9uIGRlc2NyaXB0aW9u
LCBpbnRlbmRlZCBmb3IgdXNlIGluIGV4Y2VwdGlvbiBzdHJpbmdzOyBtb3JlIHJlYWRhYmxlIGV4
cGxhbmF0aW9uIG9mIGVycm9yCi0gICAgICAgIGludCBjb2RlOyAvLyBudW1lcmljIHZhbHVlIG9m
IHRoZSBleGNlcHRpb24gd2l0aGluIGEgcGFydGljdWxhciB0eXBlCi0gICAgICAgIEV4Y2VwdGlv
blR5cGUgdHlwZTsKLSAgICB9OwogICAgIHZvaWQgZ2V0RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9u
KEV4Y2VwdGlvbkNvZGUsIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiYpOwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZURlc2Ny
aXB0aW9uLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Db2Rl
RGVzY3JpcHRpb24uaW4JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0
aW9uQ29kZURlc2NyaXB0aW9uLmluCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACituYW1l
c3BhY2U9RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uCisKK0RPTUNvcmVFeGNlcHRpb24KK0V2ZW50
RXhjZXB0aW9uCitGaWxlRXhjZXB0aW9uIGNvbmRpdGlvbmFsPUJMT0IKK0lEQkRhdGFiYXNlRXhj
ZXB0aW9uIGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKK09wZXJhdGlvbk5vdEFsbG93ZWRF
eGNlcHRpb24gY29uZGl0aW9uYWw9QkxPQgorUmFuZ2VFeGNlcHRpb24KK1NRTEV4Y2VwdGlvbiBj
b25kaXRpb25hbD1TUUxfREFUQUJBU0UKK1NWR0V4Y2VwdGlvbiBjb25kaXRpb25hbD1TVkcKK1hN
TEh0dHBSZXF1ZXN0RXhjZXB0aW9uCitYUGF0aEV4Y2VwdGlvbgpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL21ha2VfZXhjZXB0aW9uX2NvZGVfZGVzY3JpcHRpb24ucGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL21ha2VfZXhjZXB0aW9uX2NvZGVfZGVzY3JpcHRpb24ucGwJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9leGNlcHRpb25fY29kZV9kZXNj
cmlwdGlvbi5wbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOTYgQEAKKyMhL3Vzci9iaW4vcGVy
bCAtdworCisjIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAwOSwgSnVsaWVuIENoYWZm
cmFpeCA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorIyBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2gg
TW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUu
Y29tLykKKyMgQ29weXJpZ2h0IChDKSAyMDExIEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuIAorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uIAorIyAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorIyAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorIyAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLiAKKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisjIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3VzZSBzdHJpY3Q7CisKK3VzZSBDb25m
aWc7Cit1c2UgR2V0b3B0OjpMb25nOwordXNlIEZpbGU6OlBhdGg7Cit1c2UgRmlsZTo6U3BlYzsK
K3VzZSBJTzo6RmlsZTsKK3VzZSBJbkZpbGVzQ29tcGlsZXI7CisKK3JlcXVpcmUgQ29uZmlnOwor
CitteSAkaW5wdXRGaWxlOworbXkgJG91dHB1dERpciA9ICIuIjsKKworR2V0T3B0aW9ucygKKyAg
ICAnaW5wdXQ9cycgPT4gXCRpbnB1dEZpbGUsCisgICAgJ291dHB1dERpcj1zJyA9PiBcJG91dHB1
dERpciwKKyk7CisKK21rcGF0aCgkb3V0cHV0RGlyKTsKKworZGllICJZb3UgbXVzdCBzcGVjaWZ5
IC0taW5wdXQgPGZpbGU+IiB1bmxlc3MgbGVuZ3RoKCRpbnB1dEZpbGUpOworCitteSAlZGVmYXVs
dFBhcmFtZXRlcnMgPSAoCisgICAgJ25hbWVzcGFjZScgPT4gMAorKTsKKworbXkgJEluQ29tcGls
ZXIgPSBJbkZpbGVzQ29tcGlsZXItPm5ldyhcJWRlZmF1bHRQYXJhbWV0ZXJzLCBcJmRlZmF1bHRJ
dGVtRmFjdG9yeSk7CisKKyRJbkNvbXBpbGVyLT5jb21waWxlKCRpbnB1dEZpbGUsIFwmZ2VuZXJh
dGVDb2RlKTsKKworc3ViIGRlZmF1bHRJdGVtRmFjdG9yeQoreworICAgIHJldHVybiAoCisgICAg
ICAgICdjb25kaXRpb25hbCcgPT4gMAorICAgICk7Cit9CisKK3N1YiBnZW5lcmF0ZUNvZGUoKQor
eworICAgIG15ICRwYXJzZWRQYXJhbWV0ZXJzID0gc2hpZnQ7CisgICAgbXkgJHBhcnNlZEl0ZW1z
ID0gc2hpZnQ7CisKKyAgICBnZW5lcmF0ZUhlYWRlcigkcGFyc2VkUGFyYW1ldGVycywgJHBhcnNl
ZEl0ZW1zKTsKKyAgICBnZW5lcmF0ZUltcGxlbWVudGF0aW9uKCRwYXJzZWRQYXJhbWV0ZXJzLCAk
cGFyc2VkSXRlbXMpOworfQorCitzdWIgZ2VuZXJhdGVIZWFkZXIoKQoreworICAgIG15ICRwYXJz
ZWRQYXJhbWV0ZXJzUmVmID0gc2hpZnQ7CisgICAgbXkgJHBhcnNlZEl0ZW1zUmVmID0gc2hpZnQ7
CisKKyAgICBteSAkRjsKKyAgICBteSAlcGFyc2VkSXRlbXMgPSAleyAkcGFyc2VkSXRlbXNSZWYg
fTsKKworICAgIG15ICRvdXRwdXRGaWxlID0gIiRvdXRwdXREaXIvRXhjZXB0aW9uQ29kZURlc2Ny
aXB0aW9uLmgiOworCisgICAgb3BlbiBGLCAiPiRvdXRwdXRGaWxlIiBvciBkaWUgIkZhaWxlZCB0
byBvcGVuIGZpbGU6ICQhIjsKKworICAgIHByaW50IEYgJEluQ29tcGlsZXItPmxpY2Vuc2UoKTsK
KworICAgIHByaW50IEYgIiNpZm5kZWYgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uX2hcbiI7Cisg
ICAgcHJpbnQgRiAiI2RlZmluZSBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb25faFxuIjsKKyAgICBw
cmludCBGICJcbiI7CisgICAgcHJpbnQgRiAibmFtZXNwYWNlIFdlYkNvcmUge1xuIjsKKyAgICBw
cmludCBGICJcbiI7CisgICAgcHJpbnQgRiAidHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTtcbiI7
CisgICAgcHJpbnQgRiAiXG4iOworICAgIHByaW50IEYgImVudW0gRXhjZXB0aW9uVHlwZSB7XG4i
OworCisgICAgZm9yIG15ICRleGNlcHRpb25UeXBlIChzb3J0IGtleXMgJXBhcnNlZEl0ZW1zKSB7
CisgICAgICAgIG15ICRjb25kaXRpb25hbCA9ICRwYXJzZWRJdGVtc3skZXhjZXB0aW9uVHlwZX17
ImNvbmRpdGlvbmFsIn07CisKKyAgICAgICAgcHJpbnQgRiAiI2lmIEVOQUJMRSgkY29uZGl0aW9u
YWwpXG4iIGlmICRjb25kaXRpb25hbDsKKyAgICAgICAgcHJpbnQgRiAiICAgICR7ZXhjZXB0aW9u
VHlwZX1UeXBlLFxuIjsKKyAgICAgICAgcHJpbnQgRiAiI2VuZGlmXG4iIGlmICRjb25kaXRpb25h
bDsKKyAgICB9CisKKyAgICBwcmludCBGICJ9O1xuIjsKKyAgICBwcmludCBGICJcbiI7CisgICAg
cHJpbnQgRiAic3RydWN0IEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiB7XG4iOworICAgIHByaW50
IEYgIiAgICBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24oKSB7IH1cbiI7CisgICAgcHJpbnQgRiAi
ICAgIGV4cGxpY2l0IEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbihFeGNlcHRpb25Db2RlKTtcbiI7
CisgICAgcHJpbnQgRiAiXG4iOworICAgIHByaW50IEYgIiAgICAvLyB8dHlwZU5hbWV8IGhhcyBz
cGFjZXMgYW5kIGlzIHN1aXRhYmxlIGZvciB1c2UgaW4gZXhjZXB0aW9uXG4iOworICAgIHByaW50
IEYgIiAgICAvLyBkZXNjcmlwdGlvbiBzdHJpbmdzOyBtYXhpbXVtIGxlbmd0aCBpcyAxMCBjaGFy
YWN0ZXJzLlxuIjsKKyAgICBwcmludCBGICIgICAgY29uc3QgY2hhciogdHlwZU5hbWU7IFxuIjsK
KyAgICBwcmludCBGICJcbiI7CisgICAgcHJpbnQgRiAiICAgIC8vIHxuYW1lfCBpcyB0aGUgZXhj
ZXB0aW9uIG5hbWUsIGFsc28gaW50ZW5kZWQgZm9yIHVzZSBpbiBleGNlcHRpb25cbiI7CisgICAg
cHJpbnQgRiAiICAgIC8vIGRlc2NyaXB0aW9uIHN0cmluZ3M7IDAgaWYgbmFtZSBub3Qga25vd247
IG1heGltdW0gbGVuZ3RoIGlzIDI3XG4iOworICAgIHByaW50IEYgIiAgICAvLyBjaGFyYWN0ZXJz
LlxuIjsKKyAgICBwcmludCBGICIgICAgY29uc3QgY2hhciogbmFtZTsgXG4iOworICAgIHByaW50
IEYgIlxuIjsKKyAgICBwcmludCBGICIgICAgLy8gfGRlc2NyaXB0aW9ufCBpcyB0aGUgZXhjZXB0
aW9uIGRlc2NyaXB0aW9uLCBpbnRlbmRlZCBmb3IgdXNlIGluXG4iOworICAgIHByaW50IEYgIiAg
ICAvLyBleGNlcHRpb24gc3RyaW5ncy4gSXQgaXMgYSBtb3JlIHJlYWRhYmxlIGV4cGxhbmF0aW9u
IG9mIGVycm9yLlxuIjsKKyAgICBwcmludCBGICIgICAgY29uc3QgY2hhciogZGVzY3JpcHRpb247
XG4iOworICAgIHByaW50IEYgIlxuIjsKKyAgICBwcmludCBGICIgICAgLy8gfGNvZGV8IGlzIHRo
ZSBudW1lcmljIHZhbHVlIG9mIHRoZSBleGNlcHRpb24gd2l0aGluIGEgcGFydGljdWxhciB0eXBl
LlxuIjsKKyAgICBwcmludCBGICIgICAgaW50IGNvZGU7IFxuIjsKKyAgICBwcmludCBGICJcbiI7
CisgICAgcHJpbnQgRiAiICAgIEV4Y2VwdGlvblR5cGUgdHlwZTtcbiI7CisgICAgcHJpbnQgRiAi
fTtcbiI7CisgICAgcHJpbnQgRiAiXG4iOworICAgIHByaW50IEYgIn0gLy8gbmFtZXNwYWNlIFdl
YkNvcmVcbiI7CisgICAgcHJpbnQgRiAiXG4iOworICAgIHByaW50IEYgIiNlbmRpZiAvLyBFeGNl
cHRpb25Db2RlRGVzY3JpcHRpb25faFxuIjsKKworICAgIGNsb3NlIEY7Cit9CisKK3N1YiBnZW5l
cmF0ZUltcGxlbWVudGF0aW9uKCkKK3sKKyAgICBteSAkcGFyc2VkUGFyYW1ldGVyc1JlZiA9IHNo
aWZ0OworICAgIG15ICRwYXJzZWRJdGVtc1JlZiA9IHNoaWZ0OworCisgICAgbXkgJEY7CisgICAg
bXkgJXBhcnNlZEl0ZW1zID0gJXsgJHBhcnNlZEl0ZW1zUmVmIH07CisKKyAgICBteSAkb3V0cHV0
RmlsZSA9ICIkb3V0cHV0RGlyL0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5jcHAiOworCisgICAg
b3BlbiBGLCAiPiRvdXRwdXRGaWxlIiBvciBkaWUgIkZhaWxlZCB0byBvcGVuIGZpbGU6ICQhIjsK
KworICAgIHByaW50IEYgJEluQ29tcGlsZXItPmxpY2Vuc2UoKTsKKworICAgIHByaW50IEYgIiNp
bmNsdWRlIFwiY29uZmlnLmhcIlxuIjsKKyAgICBwcmludCBGICIjaW5jbHVkZSBcIkV4Y2VwdGlv
bkNvZGVEZXNjcmlwdGlvbi5oXCJcbiI7CisgICAgcHJpbnQgRiAiXG4iOworICAgIHByaW50IEYg
IiNpbmNsdWRlIFwiRXhjZXB0aW9uQ29kZS5oXCJcbiI7CisKKyAgICBmb3IgbXkgJGV4Y2VwdGlv
blR5cGUgKHNvcnQga2V5cyAlcGFyc2VkSXRlbXMpIHsKKyAgICAgICAgbXkgJGNvbmRpdGlvbmFs
ID0gJHBhcnNlZEl0ZW1zeyRleGNlcHRpb25UeXBlfXsiY29uZGl0aW9uYWwifTsKKworICAgICAg
ICBwcmludCBGICIjaWYgRU5BQkxFKCRjb25kaXRpb25hbClcbiIgaWYgJGNvbmRpdGlvbmFsOwor
ICAgICAgICBwcmludCBGICIjaW5jbHVkZSBcIiRleGNlcHRpb25UeXBlLmhcIlxuIjsKKyAgICAg
ICAgcHJpbnQgRiAiI2VuZGlmXG4iIGlmICRjb25kaXRpb25hbDsKKyAgICB9CisKKyAgICBwcmlu
dCBGICJcbiI7CisgICAgcHJpbnQgRiAibmFtZXNwYWNlIFdlYkNvcmUge1xuIjsKKyAgICBwcmlu
dCBGICJcbiI7CisgICAgcHJpbnQgRiAiRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uOjpFeGNlcHRp
b25Db2RlRGVzY3JpcHRpb24oRXhjZXB0aW9uQ29kZSBlYylcbiI7CisgICAgcHJpbnQgRiAie1xu
IjsKKworICAgIGZvciBteSAkZXhjZXB0aW9uVHlwZSAoc29ydCBrZXlzICVwYXJzZWRJdGVtcykg
eworICAgICAgICAjIERPTUNvcmVFeGNlcHRpb24gbmVlZHMgdG8gYmUgbGFzdCBiZWNhdXNlIGl0
J3MgYSBjYXRjaC1hbGwuCisgICAgICAgIG5leHQgaWYgJGV4Y2VwdGlvblR5cGUgZXEgIkRPTUNv
cmVFeGNlcHRpb24iOworCisgICAgICAgIG15ICRjb25kaXRpb25hbCA9ICRwYXJzZWRJdGVtc3sk
ZXhjZXB0aW9uVHlwZX17ImNvbmRpdGlvbmFsIn07CisKKyAgICAgICAgcHJpbnQgRiAiI2lmIEVO
QUJMRSgkY29uZGl0aW9uYWwpXG4iIGlmICRjb25kaXRpb25hbDsKKyAgICAgICAgcHJpbnQgRiAi
ICAgIGlmICgke2V4Y2VwdGlvblR5cGV9Ojppbml0aWFsaXplRGVzY3JpcHRpb24oZWMsIHRoaXMp
KVxuIjsKKyAgICAgICAgcHJpbnQgRiAiICAgICAgICByZXR1cm47XG4iOworICAgICAgICBwcmlu
dCBGICIjZW5kaWZcbiIgaWYgJGNvbmRpdGlvbmFsOworICAgIH0KKworICAgIHByaW50IEYgIiAg
ICBpZiAoRE9NQ29yZUV4Y2VwdGlvbjo6aW5pdGlhbGl6ZURlc2NyaXB0aW9uKGVjLCB0aGlzKSlc
biI7CisgICAgcHJpbnQgRiAiICAgICAgICByZXR1cm47XG4iOworICAgIHByaW50IEYgIiAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTtcbiI7CisgICAgcHJpbnQgRiAifVxuIjsKKyAgICBwcmludCBG
ICJcbiI7CisgICAgcHJpbnQgRiAifSAvLyBuYW1lc3BhY2UgV2ViQ29yZVxuIjsKKworICAgIGNs
b3NlIEY7Cit9CkluZGV4OiBTb3VyY2UvY21ha2UvV2ViS2l0TWFjcm9zLmNtYWtlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9jbWFrZS9XZWJLaXRNYWNyb3MuY21ha2UJKHJldmlzaW9uIDk4NzA0KQor
KysgU291cmNlL2NtYWtlL1dlYktpdE1hY3Jvcy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtNDgs
NiArNDgsMTcgQEAgTUFDUk8gKEdFTkVSQVRFX0VWRU5UX0ZBQ1RPUlkgX2luZmlsZSBfbwogRU5E
TUFDUk8gKCkKIAogCitNQUNSTyAoR0VORVJBVEVfRVhDRVBUSU9OX0NPREVfREVTQ1JJUFRJT04g
X2luZmlsZSBfb3V0ZmlsZSkKKyAgICBTRVQoTkFNRVNfR0VORVJBVE9SICR7V0VCQ09SRV9ESVJ9
L2RvbS9tYWtlX2V4Y2VwdGlvbl9jb2RlX2Rlc2NyaXB0aW9uLnBsKQorCisgICAgQUREX0NVU1RP
TV9DT01NQU5EKAorICAgICAgICBPVVRQVVQgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElS
fS8ke19vdXRmaWxlfQorICAgICAgICBERVBFTkRTICR7TkFNRVNfR0VORVJBVE9SfSAke1NDUklQ
VFNfQklORElOR1N9ICR7X2luZmlsZX0KKyAgICAgICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJM
RX0gLUkke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9zY3JpcHRzICR7TkFNRVNfR0VORVJBVE9SfSAt
LWlucHV0ICR7X2luZmlsZX0gLS1vdXRwdXREaXIgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9E
SVJ9CisgICAgICAgIFZFUkJBVElNKQorRU5ETUFDUk8gKCkKKworCiBNQUNSTyAoR0VORVJBVEVf
RE9NX05BTUVTIF9uYW1lc3BhY2UgX2F0dHJzKQogICAgIFNFVChOQU1FU19HRU5FUkFUT1IgJHtX
RUJDT1JFX0RJUn0vZG9tL21ha2VfbmFtZXMucGwpCiAgICAgU0VUKF9hcmd1bWVudHMgIC0tYXR0
cnMgJHtfYXR0cnN9KQo=
</data>
<flag name="review"
          id="111001"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>